Cenni linguaggio C: Espressioni Espressione: formula (regola di calcolo) che specifica sempre un valore Esempio: espressione algebrica: z=x* y, (x+3)/5 Espressione composta da: Operatori Operandi (costanti, variabili, ) Operatori Algebrici: +, -, *, /, - unario, ++, --, % ( i%j= i modulo j= resto di i diviso j) Operatori Logici: AND (&&), OR ( ), NOT (!), (su variabili booleane - valore vero/falso) x AND y VERO se e solo se x,y VERE x OR y FALSO se e solo se x,y FALSE NOT x VERO se e solo se x FALSA
Espressioni Operatori di confronto: Uguale == : x==y da VERO sse x e y hanno stesso valore Diverso!= : x!=y da VERO sse x e y hanno dalori diversi Minore < Minore o Uguale <= Maggiore > Maggiore o uguale >=
ISTRUZIONI Assegnamento: x=e, Calcola il valore dell espressione E e lo assegna alla variabile x Esempio: x=x+y calcola il valore di x+y e lo assegna ad x se x vale 5 e y vale 3, x=x+y da ad x valore 8 Istruzioni Strutturate: 1) Composizione di Istruzioni: I I I 2 m 1 ; ; ; Esegui I 1, quando e terminata esegui I 2, quando e terminata esegui I m. x=1; y=2; x=x+y; (x vale 3) y=x*y (y vale 6)
2) Istruzioni Condizionali: ISTRUZIONI Strutturate If (C) I else I ; C condizione, I ed I composizioni di istruzioni Es. Poni z=0 se x<=y; poni z=x-y se x>y if (x<=y) z=0 else x=x-y Poni z=0 se x<=y; altrimenti lascia il valore di z inalterato if (x<=y) z=0 If (C) I;
Istruzioni Ripetitive for (x=1, x<=n, x++) I; I e una composizione di istruzioni Poni x=1 esegui I Modifica x (x=2), esegui I Modifica x (x=n), esegui I x y 0 1 1 2 1+2=3 3 1+2+3=6 n 1+2+ +n y=0; for (x=1, x<=n, x++) y=y+x; x=1 x<=n I x++ FALSO, ESCI VERO
while ( C ) I; C e una condizione, I e una composizione di istruzioni x=1; y=0; while (x<=n) {y=y+x; x++} x y 0 1 1 2 1+2=3 3 1+2+3=6 n 1+2+ +n C I Vero Falso, ESCI
Tipi di dati Variabile: e identificata da un nome ha associato un tipo (intero, reale, ) si possono conservare solo oggetti di tale tipo Tipi Base (in C): intero (int), reale (real), carattere (char) Definizioni di variabili int x definisce x come variabile di tipo intero
Definizioni di Variabili ARRAY formato da componenti dello stesso tipo le componenti sono individuate da un indice int A[n] :array di n componenti di tipo intero A[0] A[1] A[2] A[n-1] Si accede ad una componente alla volta specificando l indice int X[5] X[0]=10; X[1]=7; X[2]=4; X[3]=3; X[4]=8; Crea l array di interi X: 10 7 4 3 8
Array Es. conta il numero di componenti dell array A[n] aventi valore w. idea: confronta w con A[0], A[1], finche non hai esaminato tutto l array, incrementa contatore ad ogni confronto positivo int A[n] int c=0; for(i=0,i<n,i++) if (A[i]==w) c++;} Assumiamo n=5 e w=3 A[0]=3 A[1]=2 A[2]=3 A[4]=5 A[n-1]=A[5]=2 c=0 A[0]=w=3, c=1
Array Es. cerca il numero di componenti di un array A[n] avente valore w. idea: confronta w con A[0], A[1], finche non hai esaminato tutto l array, incrementa contatore ad ogni confronto positivo int A[n] int c=0; for(i=0,i<n,i++) if (A[i]==w) c++;} Assumiamo n=5 e w=3 A[0]=3 A[1]=2 A[2]=3 A[4]=5 A[n-1]=A[5]=2 i=1 A[1]!=3 c=1
Array Es. cerca il numero di componenti di un array A[n] avente valore w. idea: confronta w con A[0], A[1], finche non hai esaminato tutto l array, incrementa contatore ad ogni confronto positivo int A[n] int c=0; for(i=0,i<n,i++) if (A[i]==w) c++;} Assumiamo n=5 e w=3 A[0]=3 A[1]=2 A[2]=3 A[3]=5 A[n-1]=A[4]=2 A[0]=w A[1]!=w A[2]=w A[3]!=w i=4=n-1 c=1 c=1 c=2 c=2 A[i]!=w c=2 i++ i++ i++ i++ i++, i=n, esci
STRUCT Permette di unire elementi di tipi differenti. Struct S {T1 M1; T2 M2; Tn Mn} Definisce una struttura con n campi (M1, M2,, Mn) Di tipo T1,T2,,Tn, rispettivamente. Es. Vogliamo descrivere persone usando 3 campi: (NOME, COGNOME, DATA-NASCITA)
STRUCT (struttura) Es. Vogliamo descrivere persone usando 3 campi: (NOME, COGNOME, DATA-NASCITA) Struct data {int giorno; int mese; int anno}
STRUCT (struttura) Es. Vogliamo descrivere persone usando 3 campi: (NOME, COGNOME, DATA-NASCITA) Struct persona {alfa cognome; alfa nome; data data-nascita} Struct data {int giorno; int mese; int anno} Struct persona P P= (Mario, Rossi,(10,3,1990)) alfa[10] indica array di 10 caratteri
STRUCT (struttura) Es. Vogliamo descrivere persone usando 3 campi: (NOME, COGNOME, DATA-NASCITA) 1) alfa[10] indica array di 10 caratteri 3) Struct persona {alfa cognome; alfa nome; data data-nascita} 2) Struct data {int giorno; int mese; int anno} Struct persona P P= (Mario, Rossi,(10,3,1980))
STRUCT La componente i-ma di nome Mi della struttura S, S=(M1,,Mi,,Mn), si indica con S.Mi Es. Struct persona P= (Mario, Rossi,(10,03,1980)) P.nome e l array contenete Mario P.nome[1] e il carattere a P.data-nascita e la struttura di tipo data (10,3,1980) P.data-nascita.mese e l intero 3