Anteprima
Vedrai una selezione di 5 pagine su 19
Appunti di Informatica B Pag. 1 Appunti di Informatica B Pag. 2
Anteprima di 5 pagg. su 19.
Scarica il documento per vederlo tutto.
Appunti di Informatica B Pag. 6
Anteprima di 5 pagg. su 19.
Scarica il documento per vederlo tutto.
Appunti di Informatica B Pag. 11
Anteprima di 5 pagg. su 19.
Scarica il documento per vederlo tutto.
Appunti di Informatica B Pag. 16
1 su 19
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

INFORMATICA B

POLITECNICO DI MILANO - FACOLTA’ DI INGEGNERIA INDUSTRIALE

Criteri di valutazione di un algoritmo

Correttezza = capacità di pervenire alla soluzione in tutti i casi significativi possibili

Efficienza = proprietà strettamente legata al tempo di esecuzione e alla memoria impiegata

Linguaggi per esprimere gli algoritmi

Linguaggi semi-formali

Specifiche iniziali, ancora intelligibili solo all’essere umano.

 Pseudo codice (“se A>0 allora B=B+A altrimenti B=B-A”)

 Diagrammi di flusso

Linguaggi formali

Programmi da eseguire, intelligibili anche alla macchina. Consentono di scrivere

programmi eseguibili dal calcolatore.

 Alto livello (vicini al linguaggio naturale). Es.C (if (A>0) B=B+A; else B=B-A)

 Assembler (più vicini al codice macchina)

Componenti di un linguaggio

Vocabolario = parole chiave che costituiscono un linguaggio

Sintassi = regole per comporre i simboli del vocabolario

Semantica = significato delle espressioni

Compilatori e interpreti

Compilatore = programma che traduce un programma scritto in codice di alto livello (es. C) in linguaggio

macchina; genera un eseguibile (.exe) a partire da un file sorgente scritto in linguaggio di alto livello.

Interprete = programma che interpreta direttamente le operazioni, eseguendole di volta in volta che le

incontra; perciò non genera alcun eseguibile.

La catena di programmazione

1. Videoscrittura = scrittura del file sorgente del programma contenente testo in linguaggio di

programmazione, da parte del programmatore. (genera .asm, .c, .cpp)

2. Precompilazione = parte svolta dal preprocessore

3. Traduzione (compilazione) = un programma compilatore si fa carico del tradurre il codice in

linguaggio di programmazione in linguaggio macchina (binario). Si riconoscono costrutti, simboli e

parole del linguaggio. Genera un file programma oggetto (.obj)

4. Collegamento = un programma “collegatore” si occupa di collegare gli oggetti scritti nel programma

sorgente ai sottoprogrammi nelle librerie (istruzioni semplici come “printf” o “scanf” sono

sottoprogrammi costituita da più istruzioni precreate e incluse nelle librerie). Genera un programma

eseguibile (.exe)

5. Caricamento = un programma carica il programma .exe appena creato nella memoria di lavoro (RAM)

6. Esecuzione = l’operatore fornisce alla macchina i dati di input, poi elaborati, e la macchina restituisce

i dati di output.

GABRIELE MAZZOLARI A.A. 2017/2018 Pagina | 3

INFORMATICA B

POLITECNICO DI MILANO - FACOLTA’ DI INGEGNERIA INDUSTRIALE

Il linguaggio C

I programmi in C sono costituiti da funzioni (i mattoncini del programma). Esse possono essere create dal

programmatore o utilizzate quelle preesistenti, esse sono contenute nelle librerie.

Parti di programma

Commenti

/*… commento …*/ oppure //commento sono commenti. Queste parti di testo servono a rendere il codice

più facilmente capibile dal programmatore in un secondo momento. Parte ignorata dal compilatore.

Inclusioni

#include è un comando al preprocessore (preceduto da #) che dice di includere nel programma una libreria

di funzioni (es. stdio.h, stdlib.h,…) che saranno poi inserite nel programma tramite le shortcut (es. printf è in

realtà una shortcut per un sottoprogramma di più istruzioni).

#define

#define è un comando al preprocessore (fuori dalla main), che permette di definire delle macro, ovvero delle

variabili costanti/funzioni che verranno poi richiamate nella main. Esse vengono scritte a lettere maiuscole.

#define PIGRECO 3.14 //crei una costante che utilizzerai nella main richiamata con PIGRECO (es.

10*PIGRECO=31.4)

#define AREACERCHIO(x) (PIGRECO*(x)*(x)) //definisco una funzione di nome AREACERCHIO che calcola il

risultato fornendole in input il raggio

area = AREACERCHIO (4); //diventa (3.14*(4)*(4))

La main

int main () { … corpo della main …} è la funzione principale del programma, dentro alla quale staranno tutte

le istruzioni del programma, e i rimandi ad eventuali funzioni esterne ad essa (void) interpellabili al bisogno.

Dichiarazione di variabile

int a,b,c vuol dire dichiarare tre variabili di tipo int (numeri interi) di nome a,b,c a cui sarà assegnata una cella

di memoria. Al momento dell’assegnamento la cella di memoria corrispondente contiene un valore casuale

(0/1) dovuta ad un precedente assegnamento.

Prinf

printf(“Il risultato della funzione è:%d\n”, &a) è la funzione che permette di mandare in output valori. In

questo caso la funzione stamperà il testo tra virgolette “”.

I segnaposto (%...) sono caratteri speciali che indicano alla funzione printf di mandare in output la variabile

specificata in seguito al posto del segnaposto:

 %d sta a significare che quel posto verrà occupato da una variabile di tipo int

 %f sta a significare che quel posto verrà occupato da una variabile di tipo float

 %c sta a significare che quel posto verrà occupato da una variabile di tipo char

 %s sta a significare che quel posto verrà occupato da una variabile di tipo string (serie di caratteri)

GABRIELE MAZZOLARI A.A. 2017/2018 Pagina | 4

INFORMATICA B

POLITECNICO DI MILANO - FACOLTA’ DI INGEGNERIA INDUSTRIALE

La variabile a, scritta dopo la parte tra virgolette e preceduta dal carattere & che serve ad indicare l’indirizzo

di memoria da cui attingere la variabile da stampare (o il posto in cui immagazzinare un valore in caso sia in

una scanf). \n è un carattere di escape che dice al computer di andare a capo dopo aver stampato a.

Scanf

scanf (“%d”, &a)è la funzione che ha il compito di leggere il valore inserito dall’utente e di immagazzinarlo

nella variabile a (vedi printf per dettagli).

Assegnamento

a=a+b è un’operazione di assegnamento. Essa si indica con il segno di uguale e significa che sostituisce il

contenuto della cella identificata con la variabile a sinistra dell’espressione (a) con la parte a destra della

stessa (b+1, contenuto della cella b con l’aggiunta di 1).

Tipi di variabili

int è un tipo di variabile per numeri interi (senza parte decimale). Operazioni di divisione tra int troncano la

parte decimale.

float è un tipo di variabile per numeri decimali. Operazioni di divisione tra float danno in output un numero

decimale.

char è un tipo di variabile per caratteri singoli (a=’x’; vuol dire alla variabile a assegno la lettera x). Il carattere

da assegnare va racchiuso tra apici singoli. Sono rappresentati da numeri interi secondo la tabella ASCII,

perciò sono confrontabili e ordinabili secondo le regole relazionali (>,<,=).

array è un gruppo di celle di memoria consecutive (una “riga di tabella”), con stesso nome e tipo. Devono

essere specificati nome e tipo di variabile. Per riferirsi ad un elemento devono essere specificati nome

dell’array e posizione dell’elemento. Si scrivono come nomearray[posizione]. Si dichiarano come

nomearray[dimensione].

Es. char parola[12] //array di caratteri con 12 posizioni di memoria (da 0 a 11 (n-1))

int n[5] = {1,2,3,4,5}; // si può inizializzare anche così

array a più dimensioni A[20][20] //array bidimensionale (matrice) con 400 variabili distinte

Per inizializzare/scorrere una matrice si utilizzano due cicli for: uno per le righe e uno per le colonne.

stringhe sono array di caratteri da leggersi in fila.

Elementi della stringa = numero lettere della parola + 1 (carattere terminatore ‘\0’)

‘x’ vuol dire carattere x

“x” vuol dire stringa x composta da due caratteri (‘x’ e ‘\0’)

char stringa[] = “word” //crea una stringa di 5 elementi (4 della parola più \0 che è il carattere terminatore

di stringhe.

GABRIELE MAZZOLARI A.A. 2017/2018 Pagina | 5

INFORMATICA B

POLITECNICO DI MILANO - FACOLTA’ DI INGEGNERIA INDUSTRIALE

char stringa[] = {‘w’, ’o’, ’r’, ’d’, ’\0’}

Aritmetica

Istruzione condizionale (if-then-else)

if (x>5) { printf(“x è maggiore di 5: %d\n”, &x);

}

else printf(“x è minore di 5:%d\n”, &x);

Il ramo if esegue la sua istruzione/blocco di istruzioni se la condizione è verificata. In caso contrario vengono

eseguite le istruzioni del ramo else (se presenti).

Ciclo while

while (x>0) {…} è una funzione che serve ad iterare una istruzione fintantoché è verificata una condizione

(x>0).

Ciclo for

for (i=0; i<5; i++) è un ciclo che si utilizza quando si sa già il numero di iterazioni che il ciclo deve fare (in

questo caso 5).

Variabili enumerative

enum {qui, quo, qua} papero

GABRIELE MAZZOLARI A.A. 2017/2018 Pagina | 6

INFORMATICA B

POLITECNICO DI MILANO - FACOLTA’ DI INGEGNERIA INDUSTRIALE

E’ una variabile di tipo enumerativo, ovvero i nomi dichiarati tra parentesi graffe sono “etichette” per i

corrispondenti valori (da 0 a n-1 per n “etichette”).

printf( “%d”, &quo); //stampa 1

scanf(%d, &papero); //se inseriamo 2, papero assume automaticamente il valore qua

Per “sfalsare” l’inizio delle etichette basta assegnare un valore alla prima:

enum {sufficiente=6, buono, distinto, ottimo, eccellente} voto;

L’incremento

i++ e ++i sono entrambe funzioni che servono ad incrementare i di 1. i++ però prima fornisce il valore di i e

poi la incrementa. ++i invece prima la incrementa e poi ne fornisce il valore.

int c = 5;

printf( “%d” , ++c); //stampa 6

printf( “%d” , c++); //stampa 5

getch()

getch() è la funzione che blocca la schermata alla fine del programma in attesa di un comando dell’utente,

che altrimenti si chiuderebbe subito dopo aver completato il ciclo della main.

Return 0

return 0 alla fine della main serve a terminare la funzione. Il valore 0 significa che il programma è terminato

senza anomalie.

Struct

struct Luca {

char nome[] = “Luca”;

char cognome[] = “Rossi”;

int eta=10;

}

printf(“%s”, &luca.nome); //stampa il nome “Luca”

printf(“%d”, &luca.eta); //stampa il numero 10

Typedef

Il comando typedef (va fuori dalla main!!!) va a definire un nuovo nome per tipi di dati (che può essere float,

int, char, …).

1. In questo modo si definisce un nuovo nome per tipi di dato già esistenti (es. int dalla typedef in poi

si chiamerà Altezza).

2. Permette di definire e di assegnare un nome ad una struttura o ad una enumerazione.

a. Es.

typedef struct {

char nome[];

char cognome[];

Dettagli
Publisher
A.A. 2017-2018
19 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher gabrielem99 di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Masseroli Marco.