Linguaggio C Gli Operatori Gli Operatori Gli operatori sono simboli (sia singoli caratteri che loro combinazioni) specificano come devono essere manipolati gli operandi dell espressione Operatori aritmetici Operatori ed espressioni di assegnamento Operatori di incremento e decremento Operatori logici e relazionali 1 L Operatore di Assegnamento Il valore a destra dell operatore = è memorizzato (assegnato) nella variabile specificata dall operando di sinistra Uno degli errori più comuni è 1 = i; Sbagliato! anziché i = 1; Corretto! Esempi sull uso dell Operatore di Assegnamento Esempio: int var1 = 3, x1, x; float var3=0.1, var; char var4; int main() { x1 = x = 10; var=1.e1; var4= ; } 3 4
Gli Operatori Aritmetici Unario + più unario meno unario Additivo + somma sottrazione Binario % resto Moltiplicativo * Moltiplicazione / divisione Es. int x=0,y=1,z=; x = y + z; // il valore di x sarà pari a 3! Esempi sull uso degli Operatori Aritmetici scanf( %d, &x); scanf( %d, &y); somma=x+y; printf( %d, somma); EQUIVALE A scanf( %d, &x); scanf( %d, &y); printf( %d, x+y); 5 6 Gli Operatori Aritmetici Conversioni Aritmetiche Quando un espressione contiene più di un operatore conviene utilizzare le parentesi tonde Ad es. x = (y + z) * w; Cosa succede se non utilizziamo le parentesi? Ad es. x = y + z * w; Precedenza degli operatori: precedenza più alta: + (unario) * / % precedenza più bassa: + (binario) Gli operandi devono essere di tipo semplici Anche di tipo diverso l uno dall altro, ma L operatore % prevede operandi interi! Qualora i due operandi sono differenti, l operando di tipo più piccolo è convertito automaticamente nel tipo dell altro operando char < short int < long int < float < double 7 8
Esempi di Conversioni Aritmetiche (Automatiche) char c; short int s; int i; float f; double d; s = s + c; /* c convertito al tipo short */ i = i + s; /* s convertito al tipo int */ f = f + i; /* i convertito al tipo float */ d = d + f; /* f convertito al tipo double*/ Conversioni negli Assegnamenti Il valore dell espressione presente nel lato dell assegnamento è convertito al tipo di variabile presente nel lato sinistro Esempi: short int i; float f; f = i; /* i convertita al tipo float */ i = f; /* f convertita al tipo int */ i= 84.97; /* adesso i vale 84 */ i= 3768; /* adesso i vale 3767 */ 9 10 Cambio di Tipo (Casting) Espressione di cast ha la forma: ( nome-del-tipo ) espressione Forzano le conversione desiderate Esempio; int i; float f = 0.4; i = (int)f; /* adesso i vale 0 */ f = (float)i; /* adesso f vale 0.0 */ Esercizi sull uso degli Operatori Aritmetici e Casting Implementare in C due programmi per la risoluzione dei seguenti esercizi: Es 1: Acquisire da tastiera un numero reale e stampare a video la parte intera e la parte frazionaria del numero. [ Suggerimento: f = i.f i ] Es : Calcolare (memorizzando in apposite variabili) e stampare il quoziente intero, reale e resto della divisione tra interi acquisiti da tastiera 11 1
Espressioni di Assegnamento Composto Espressioni che utilizzano il vecchio valore di una variabile per calcolare quello nuovo Ad es. x = x + Operatori di assegnamento composto: += = *= /= %= Esempi: x += equivale a x = x + x *= y + 1 // NON equivale a x = x * y + 1 x *= y + 1 // equivale a x = x * (y + 1) Gli Operatori di Incremento e Decremento L operatore ++ aggiunge 1 al suo operando L operatore -- toglie 1 al suo operando Possono essere usati in forma Prefissa: ++x incrementa x prima di usarne il valore Postfissa: x++ incrementa x dopo averne usato il valore 13 14 Gli Operatori di Incremento e Decremento In un contesto dove si usa il valore di x, ++x e x++ danno origini a risultati differenti Espressione y=++x; y = ++x; x=x+1; y=x y=x; x=x+1; Equivale a Esempio Se x =5, Si ottiene y=6 e x = 6 Se x=5 Si ottiene y=5 e x=6 Precedenza tra Operatori Precedenza 1 3 4 5 Nome Incremento (suffisso) Decremento (suffisso) Incremento (prefisso) Decremento (prefisso) Più unario Meno unario Moltiplicativi Additivi Assegnamento Simbolo ++ ++ + * / % + = *= /= %= += = 15 16
Funzione Radice Quadrata Funzione Potenza Il nome della funzione è sqrtf La funzione è scritta nella libreria math.h Prototipo: float sqrtf(float x); utilizza un numero reale ritorna un numero reale Esempio di uso: radice=sqrtf(num); (dove sia num che radice sono variabili di tipo float) Il nome della funzione è powf La funzione è scritta nella libreria math.h Prototipo: float powf(float x, float y); utilizza un numero reale ritorna un numero reale Esempio di uso: potenza=powf(num,.0); (dove sia num che potenza sono variabili di tipo float) 17 18 Esercizi Esercizi Es 3: Acquisire un numero intero n da tastiera a due cifre e successivamente stampare il numero n con le cifre invertite. Ad esempio: Digitare un numero intero di cifre: 8 Il numero con le cifre invertite e 8 Suggerimento: n%10 è l ultima cifra di n, mentre n/10 è la prima cifra di n Es 4: Calcolare e stampare a video la media tra 4 numeri interi acquisiti da tastiera Es 5: Calcolare e stampare a video la circonferenza e l area di un cerchio data la lunghezza, acquisita da tastiera, del suo diametro Es 6: Estendere il programma dell esercizio 3 per gestire un numero a 3 cifre Es 7: Acquisire un importo (intero) in euro e poi mostrare come pagare l importo utilizzando il minor numero di biglietti da 0, 10 e 5 e monete da 1. Ad esempio, Inserire un importo (intero) in euro: 71 Biglietti da 0 euro: 3 Biglietti da 10 auro: 1 Biglietti da 5 euro: 0 Monete da 1 euro: 1 19 0
Esercizi Es 8: Calcolare e stampare la varianza tra 4 numeri interi acquisiti da tastiera ( x1 μ) +... + ( xn μ) var( x1.. n) = n Es 9: Calcolare e stampare la lunghezza dell ipotenusa, il perimetro e l area di un triangolo rettangolo data la lunghezza, acquisita da tastiera, dei due cateti Es 10: Acquisire da tastiera un numero intero x e calcolare il 3 5 4 x valore del polinomio 3x + x + x + 7x 6 Per esempio: Inserisci un numero intero x: Il polinomio -3x^5+x^4+^(x^3)-x^+7x-6 per x= e': 196 1