Linguaggio C Operatori, Espressioni e Conversioni di tipo

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Linguaggio C Operatori, Espressioni e Conversioni di tipo"

Transcript

1 Linguaggio C Operatori, Espressioni e Conversioni di tipo Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1

2 Expression Statement e operatori: concetti generali Elementi di Informatica e Programmazione Università di Brescia 2

3 NB: verranno riesaminate in forma più sistematica e generale istruzioni già viste, introdotte in modo informale e intuitivo Richiami Blocchi o istruzioni composte Istruzioni semplici (non composte) - dichiarazione (ed eventuale inizializzazione) di variabili - expression statement - Elementi di Informatica e Programmazione Università di Brescia 3

4 Expression statement <espressione>; Un particolare tipo di istruzione semplice (non composta) Richiamo sulla definizione di <espressione>: - una costante - una variabile - un operatore applicato ad espressioni Elementi di Informatica e Programmazione Università di Brescia 4

5 Esempi di expression statement 5; // è corretto e l effetto è nullo! ((a+2)*5)+4; // IDEM a==b; // altro expression statement! Esempi che NON sono expression statement for(i=1; i<=10; i=i+1) printf( * ); {a==b;} // non è <espressione>; // non è <espressione>; // bensì è un blocco! ESECUZIONE DELL EXPRESSION STATEMENT L espressione viene calcolata applicando gli operatori, il risultato finale è scartato Elementi di Informatica e Programmazione Università di Brescia 5

6 DOMANDA LECITA A COSA SERVONO GLI EXPRESSION STATEMENT? - tipicamente negli expression statement il programmatore usa operatori che, oltre a produrre un valore, hanno degli effetti collaterali (p.es. cambiano il valore di una variabile, chiamano una funzione) - per comprendere bene come questo avviene (e per capire gli argomenti più avanzati del C), occorre esaminare precisamente 1) l esecuzione di un expression statement 2) il concetto di operatore Elementi di Informatica e Programmazione Università di Brescia 6

7 ESECUZIONE DI UN EXPRESSION STATEMENT Gli operatori sono applicati ordinatamente uno alla volta Esempio semplice int a=3, b=7, c=10; a + b + c*2 + a*(b-a); Il C applica un operatore alla volta, sostituendolo con il risultato restituito e prosegue Esiste un ordine di applicazione degli operatori, che di fatto corrisponde al modo intuitivo di procedere (parentesi, priorità tra operatori ): more on this later Elementi di Informatica e Programmazione Università di Brescia 7

8 Operatori in C Caratteristiche di uno specifico operatore (parte A) 1) Numero di operandi - operatori unari: un operando - operatori binari: due operandi 2) Tipo degli operandi (operandi tutti dello stesso tipo) 3) Tipo del risultato (può essere diverso da quello degli operandi) 4) Duplice effetto di un operatore: - produce in uscita un risultato - produce (eventualmente) un effetto collaterale Elementi di Informatica e Programmazione Università di Brescia 8

9 Operatori in C (2) Esempi 5+2 // operatore binario + (su int) -(-5) // operatore unario (su int) 5.0f + 2.1f // operatore binario + (su float) Note Ogni tipo ha un insieme di operatori applicabili: - int ha un insieme di operatori applicabili ad operandi int - float ha un insieme di operatori applicabili a operandi float - ecc. ecc. Operatori diversi possono avere lo stesso nome Elementi di Informatica e Programmazione Università di Brescia 9

10 Operatori in C (3) Caratteristiche di uno specifico operatore (parte B) 4) Per ogni operando è stabilito - se è (viene usato come) valore, oppure - se dev essere un contenitore 5) Anche il risultato può essere - un valore (caso più frequente), oppure - un contenitore Elementi di Informatica e Programmazione Università di Brescia 10

11 VALORE VS CONTENITORE VALORE CONTENITORE Valore: indica propriamente un valore non modificabile Esempi: 1, 2, -1, -5.0f Contenitore: indica uno spazio in memoria per immagazzinare un valore Esempi: le variabili! (ma in C ne esistono anche altri ) NB: un contenitore contiene sempre un valore Elementi di Informatica e Programmazione Università di Brescia 11

12 UN ESEMPIO SEMPLICE: OPERATORE ASSEGNAMENTO = (effetto collaterale) Esempio 1 x = 4; Elementi di Informatica e Programmazione Università di Brescia 12

13 CONTENITORE USATO COME OPERANDO VALORE = (effetto collaterale) Esempio 2 x = y; Un contenitore può essere utilizzato anche dove l operatore richiede un valore: viene usata la copia del valore in esso contenuto! Elementi di Informatica e Programmazione Università di Brescia 13

14 MA IL VICEVERSA NON E VERO = (effetto collaterale) Esempio ERRATO 1 = y; Un valore (non modificabile) non può essere utilizzato come contenitore! Elementi di Informatica e Programmazione Università di Brescia 14

15 ESEMPIO PIU COMPLESSO x = x+1; Passo 1 x+1 valore valore x + 1 Passo 2 x = x contenitore valore Elementi di Informatica e Programmazione Università di Brescia 15

16 Operatori in C: quadro riassuntivo (1) Effetto di un operatore: - riceve in ingresso uno o più operandi - produce in uscita un risultato - produce (eventualmente) un effetto collaterale Caratteristiche di uno specifico operatore 1) Numero di operandi (operatori unari, binari, ternari) 2) Tipo degli operandi (operandi tutti dello stesso tipo) 3) Tipo del risultato (anche diverso da quello degli operandi) Elementi di Informatica e Programmazione Università di Brescia 16

17 Operatori in C: quadro riassuntivo (2) 4) Per ogni operando è stabilito - se è (viene usato come) valore, oppure - se dev essere un contenitore NB: tipicamente (ma non sempre!), l operatore produce un effetto collaterale sull (unico) operando contenitore, modificandone il valore contenuto! 5) Anche il risultato può essere - un valore (caso più frequente), oppure - un contenitore Elementi di Informatica e Programmazione Università di Brescia 17

18 Note Ogni tipo ha un insieme di operatori applicabili: - int ha un insieme di operatori applicabili ad operandi int - float ha un insieme di operatori applicabili a operandi float - ecc. ecc. Elementi di Informatica e Programmazione Università di Brescia 18

19 Rassegna operatori Elementi di Informatica e Programmazione Università di Brescia 19

20 Operatore di assegnamento Operatore binario: <o1> = <o2> in cui <o1>: contenitore, <o2>: valore Effetto collaterale: - assegna a <o1> (contenitore) <o2> (valore) Risultato restituito: - valore <o2> assegnato a <o1> Elementi di Informatica e Programmazione Università di Brescia 20

21 ESEMPIO int x = 3; int y; // non è un assegnamento, ma un inizializzazione y = (x+2)*3; // expression statement (effetto: y=15) y=(x=3); y=y+(x=5); // expression statement y=<espressione>; // Effetto: x=3, y=3 // expression statement // Effetto: x=5, y=8 Elementi di Informatica e Programmazione Università di Brescia 21

22 Operatori aritmetici Permettono di effettuare le normali operazioni aritmetiche Corrispondono a funzioni: - ricevono in ingresso uno o più valori (rvalue) dello stesso tipo binari: <o1> <op> <o2> unari: <op> <o1> - restituiscono un valore (rvalue) dello stesso tipo rispetto a operandi Sono leggermente diversi per tipi interi o virgola mobile Elementi di Informatica e Programmazione Università di Brescia 22

23 Operatori aritmetici (A) TIPI INTERI (char, int, short int, long int) Operatori binari: + addizione * moltiplicazione - sottrazione / divisione intera % resto Operatore unario: segno negativo - Elementi di Informatica e Programmazione Università di Brescia 23

24 Esempio tipico di utilizzo dell operatore resto int a; printf( ) printf( la variabile a contiene un numero ); V a%2==0 F if((a%2) ==0) printf( pari\n ); else printf( dispari\n ); printf( E comunque un numero!\n ); printf( pari ) printf ( dispari ) printf( ) Elementi di Informatica e Programmazione Università di Brescia 24

25 Operatori aritmetici (B) TIPI VIRGOLA MOBILE (float, double, long double) Operatori binari: + addizione * moltiplicazione - sottrazione / divisione Operatore unario: segno negativo - NB: L operatore resto non esiste per i tipi in virgola mobile (infatti non ha senso): utilizzarlo dà un errore di compilazione Elementi di Informatica e Programmazione Università di Brescia 25

26 Un esempio: media tra tre numeri interi int a, b, c, media; a=5; b=7; c=11; media=(a+b+c)/3; printf( La media tra %d e %d e %d fa %d\n, a,b,c,media); Quale numero viene stampato? Elementi di Informatica e Programmazione Università di Brescia 26

27 Un esempio: media tra tre numeri interi int a, b, c, media; a=5; b=7; c=11; media=(a+b+c)/3; printf( La media tra %d e %d e %d fa %d\n, a,b,c,media); Quale numero viene stampato? 7 Elementi di Informatica e Programmazione Università di Brescia 27

28 Un esempio: media tra tre numeri interi float a, b, c, media; a=5.0f; // vedremo che si può usare a=5; b=7.0f; // vedremo che si può usare b=7; c=11.0f; // vedremo che si può usare c=11; media=(a+b+c)/3.0f; printf( La media tra %f e %f e %f fa %f\n, a,b,c,media); Quale numero viene stampato? Elementi di Informatica e Programmazione Università di Brescia 28

29 Un esempio: media tra tre numeri interi float a, b, c, media; a=5.0f; b=7.0f; c=11.0f; media=(a+b+c)/3.0f; printf( La media tra %f e %f e %f fa %f\n, a,b,c,media); Quale numero viene stampato? Elementi di Informatica e Programmazione Università di Brescia 29

30 OVERFLOW Tra interi signed: comportamento non definito Tra interi unsigned: risultato modulo 2 n (n: numero di bit usati) Tra valori in virgola mobile: comportamento non definito Esempi (ipotizzando limiti tipici su macchina a 32 bit) // max per unsigned long int: unsigned long int ul1= , ul2=10, ul3; ul3= ul1+ul2; // ul3=4 // max per signed long int: long int l1= , l2=1, l3; l3= l1+l2; // comportam. indefinito (probabilmente ) Elementi di Informatica e Programmazione Università di Brescia 30

31 Operatori di incremento e decremento Operatori unari: operando contenitore, restituiscono un valore Effetto collaterale: incremento/decremento dell operando Esempi esplicativi ++a; //a=a+1 (come tale la valutazione dell espressione ++a è a+1, ovvero prima viene incrementata la variabile a poi viene valutata l espressione) a++; //a=a+1, in cui però la valutazione dell espressione a++ è a (prima si valuta l espressione poi si incrementa a) --a; //a=a-1, in cui la valutazione dell espressione è a-1 a--; //a=a-1, in cui la valutazione dell espressione è a Elementi di Informatica e Programmazione Università di Brescia 31

32 Esempi su forma prefissa e postfissa int x,y; x=5; y=x++; // y=5, x=6 // equivale a y=x; x=x+1 x=5; y=++x; //x=6, y=6 //equivale a x=x+1;y=x x=5; y=(x=x+1); // x=6, y=6 Elementi di Informatica e Programmazione Università di Brescia 32

33 Assegnamenti composti <o1> <op>= <o2> equivalente a <o1> = <o1> <op> (<o2>) <o1> è contenitore (lvalue), <o2> è valore (rvalue) Disponibile con operatori aritmetici più comuni, p.es. a+=b; a-=b; a*=b; a/=b; // a=a+b // a=a-b // a=a*b // a=a/b a%=b; // a=a%b (solo con interi) Elementi di Informatica e Programmazione Università di Brescia 33

34 Operatori relazionali e logici (tecnicamente) Il C non fornisce i tipi booleani, solo numerici si usano valori interi: - 0 indica falso - ¹ 0 indica vero GLI OPERATORI RELAZIONALI E LOGICI HANNO COME OPERANDI VALORI (rvalue) INTERI E PRODUCONO UN VALORE (rvalue) INTERO Elementi di Informatica e Programmazione Università di Brescia 34

35 Operatori relazionali tecnicamente Confrontano due valori e restituiscono un valore intero: 0 se la condizione non è verificata ( falso ) 1 se la condizione è verificata ( vero ) Operatori disponibili == uguale (da non confondere con =!!!!!!!!!) < minore <= minore o uguale > maggiore >= maggiore o uguale!= non uguale Elementi di Informatica e Programmazione Università di Brescia 35

36 Operatori logici tecnicamente Operatori logici:! NOT (operatore unario) && AND (operatore binario) OR (operatore binario) Ricevono in ingresso dei valori numerici, interpretandoli come: falso se 0 vero se diverso da 0 Restituiscono il corrispondente valore di verità (cfr. Algebra Boole) rappresentato da un numero: 0 per falso, 1 per vero Ad esempio, OR restituisce un valore 1 se almeno uno degli operandi è ¹ 0, restituisce 0 se entrambi gli operandi sono nulli Elementi di Informatica e Programmazione Università di Brescia 36

37 Esempio tecnico int x=5, y, z; y = (x==5); \\ y=1 z = (x=5); \\ z=5 z = (x>5); \\ z=0 x = (x=x); \\ x inalterato x = (x==x); \\ x=1 x = (x!=x); \\ x=0 z = ((x<y) && (y!=1)); \\ z=0 z = (-5 (y!=1)); \\ z=1 z =!5; \\ z=0 Elementi di Informatica e Programmazione Università di Brescia 37

38 IF, IF-ELSE, WHILE, DO-WHILE, FOR: DEFINIZIONI VERE Tecnicamente, le istruzioni if, while, do-while, ecc. valutano un espressione numerica controllando se =0 o ¹ 0 IF if (<espressione>) <istruzione>; ¹ 0 <istruzione> <espressione> 0 Esempio if(5) printf( * ); //eseguito sempre! Elementi di Informatica e Programmazione Università di Brescia 38

39 WHILE while (<espressione>) <istruzione> <espressione> 0 ¹ 0 <istruzione> Esempio while(1) printf( * ); //ciclo infinito! Elementi di Informatica e Programmazione Università di Brescia 39

40 FOR for(<exp1>;<exp2>;<exp3>) <istruz> NB: <exp1>, <exp2>, <exp3> sono semplicemente espressioni che tipicamente corrispondono a un assegnamento, una condizione, un incremento, rispettivamente! <exp1>; <exp2> 0 ¹ 0 <istruz> <exp3>; Elementi di Informatica e Programmazione Università di Brescia 40

41 ESEMPI for(a==b; 5; a++); // sintatticamente corretto // a==b non ha effetto // genera un ciclo infinito! for({a=1}; a<=10; a++) printf( * ); // sintatticamente scorretto! for(for(i=1; i<=5; i++) printf( * ); a<10; a++) //sintatt. scorretto! printf( * ); Elementi di Informatica e Programmazione Università di Brescia 41

42 Operatore virgola Sintassi (NB: operandi e risultato sono valori): <espressione1>, <espressione2> Significato: - prima viene valutata <espressione1> - poi viene valutata <espressione2> - il valore restituito è quello di <espressione2> Uso tipico: più espressioni di inizializzazione in un ciclo for Esempio: calcolare for(somma=0, i=1; i<=10; i=i+1) somma=somma+i; Elementi di Informatica e Programmazione Università di Brescia 42

43 Precedenza e associatività degli operatori Ogni operatore è caratterizzato da: - livello di precedenza: più operatori vengono applicati in ordine di precedenza - associatività (sinistra o destra): più operatori dello stesso livello di precedenza raggruppano gli operandi da sinistra o da destra Le tabelle degli operatori riportano precedenza e associatività: corrispondono quasi sempre al modo usuale o comune di applicare gli operatori Se si programma, nel dubbio usare parentesi! Elementi di Informatica e Programmazione Università di Brescia 43

44 Operatori prefissi Associativita () [] ->. da sinistra a destra unari indirez ! ~ & * sizeof da destra a sinistra () cast da destra a sinistra * / % da sinistra a destra + - da sinistra a destra << >> da sinistra a destra < <= > >= da sinistra a destra ==!= da sinistra a destra & da sinistra a destra ^ da sinistra a destra da sinistra a destra && da sinistra a destra da sinistra a destra?: da destra a sinistra = += -= *= /= %= &= ^= = <<= >>= da destra a sinistra, da sinistra a destra postfissi binari Elementi di Informatica e Programmazione Università di Brescia 44

45 Esempi int x=5, y=6, z=3; x= 6+x*y+z; // x=6+(x*y)+z ovvero 39 y*=x+1; // y=240, diverso da y=y*x+1 y = x; // equivale a y = 1+(++x), ovvero x=40,y=41 x=y=z; // associativo da destra a sinistra: a tutte // viene assegnato il valore 3 if(x>y && x>v && x>z) // equivale a if((x>y) && (x>v) && (x>z)) printf( ); Esempio irreale con un C pazzo in cui = ha priorità su + int x=5, y=10; x= 6+y; // x=6 e restituisce 6, // 6+10 è valore dell espressione non usato! Elementi di Informatica e Programmazione Università di Brescia 45

46 CORTO-CIRCUITAZIONE DEL CALCOLO DI && e Prima viene calcolato il valore dell operando sinistro Se questo permette di determinare il valore dell espressione, l operando destro non viene considerato Esempio 1 if((i!=0) && (j/i >=10)) printf ( Divisione maggiore o uguale a 10\n ); Esempio 2 if((i==0) (j/i >100)) printf ( Divisione per 0 o maggiore di 100\n ); Elementi di Informatica e Programmazione Università di Brescia 46

47 ERRORI TIPICI Elementi di Informatica e Programmazione Università di Brescia 47

48 ERRORE TIPICO: VERSIONE 1 int n; if(2 <= n <=10) printf( n compreso tra 2 e 10\n ); La condizione è SEMPRE verificata per qualunque n!!! ERRORE TIPICO: VERSIONE 2 int n; if(-5 <= n <-2) printf( n compreso tra -5 e -2 escluso\n ); La condizione non è MAI verificata per qualunque n!!! Elementi di Informatica e Programmazione Università di Brescia 48

49 Confondere = (operatore di assegnamento) con == (operatore di uguaglianza) Esempio 1 if(a=1) printf( a=1\n ); stampa in ogni caso a=1 e assegna alla variabile a il valore 1 Esempio 2 if(a=0) printf( a=0\n ); assegna alla variabile a il valore 0 e non esegue la stampa Elementi di Informatica e Programmazione Università di Brescia 49

50 Esempio 3 while(n=1){ scanf( %d, &n); } In questo caso il ciclo è infinito (la condizione n=1 è sempre vera!) Elementi di Informatica e Programmazione Università di Brescia 50

51 Conversioni di tipo Elementi di Informatica e Programmazione Università di Brescia 51

52 Conversioni implicite ed esplicite Due modalità per convertire un valore di un tipo in un altro tipo - conversioni implicite: operate dal compilatore (principalmente) quando un operatore è applicato ad operandi di tipo diverso: conversione per assicurare che l operatore sia applicato ad operandi dello stesso tipo! - conversioni esplicite: forzate dal programmatore con istruzioni opportune Elementi di Informatica e Programmazione Università di Brescia 52

53 Conversioni implicite (cenni) Esempio 1 float a; int b=5; char c=6; a=b+c; //c convertito a int, (b+c) a float senza perdita precisione Esempio 2 int a; float b=2.5f; double c=3.0; a=b+c; //b convertito a double, (b+c) ad int troncandolo a 5 Elementi di Informatica e Programmazione Università di Brescia 53

54 Operandi di operatori aritmetici o relazionali Tipo più piccolo convertito nel tipo più grande Esempi: char int x viene convertito a int x + y L operatore + su int e restituisce int float double a viene convertito a double a * b L operatore * su double e restituisce double NB: questa è una versione semplificata, le regole del C sono più complesse (cfr. Appendice Tecnico per uno specchietto) Elementi di Informatica e Programmazione Università di Brescia 54

55 Conversioni negli assegnamenti La conversione è verso il tipo della variabile assegnata: - eventuale perdita di precisione - risultato errato (senza senso) se rimpicciolente Esempi: se f è float, i è int, c è char f = i; i = f; // valore di i convertito in un float e assegnato a f // (non c è perdita di precisione o comunque limitata) // es: se i=5, a f viene assegnato 5.0f // valore di f convertito in int // (perdita di precisione se f non è un intero) // es: se f=5.8f, a i viene assegnato 5 c = 20000; // assegnazione rimpicciolente (risultato errato) Elementi di Informatica e Programmazione Università di Brescia 55

56 ESEMPIO BANALE long int i; float f; i=5l; i=5; //nessuna conversione //conversione da int a long int f=5; f=5.0; f=5.0f; //conversione da int a float //conversione da double a float //nessuna conversione /* le assegnazioni (ad i e f) sono di fatto equivalenti */ /* in pratica, negli assegnamenti le costanti possono essere usate normalmente, senza preoccuparsi di caratterizzarne esplicitamente il tipo */ Elementi di Informatica e Programmazione Università di Brescia 56

57 ESEMPIO CON VARIANTI: media tra tre numeri interi Versione 1 int a, b, c; float media; a=5; b=7; c=11; media=(a+b+c)/3; printf( La media tra %d e %d e %d fa %f\n, a,b,c,media); Elementi di Informatica e Programmazione Università di Brescia 57

58 ESEMPIO CON VARIANTI: media tra tre numeri interi Versione 1 int a, b, c; float media; a=5; b=7; c=11; media=(a+b+c)/3; printf( La media tra %d e %d e %d fa %f\n, a,b,c,media); Elementi di Informatica e Programmazione Università di Brescia 58

59 Versione 2 int a, b; float c; float media; a=5; b=7; c=11; media=(a+b+c)/3; printf( La media tra %d e %d e %f fa %f\n, a,b,c,media); Elementi di Informatica e Programmazione Università di Brescia 59

60 Un esempio: media tra tre numeri interi int a, b; float c; float media; a=5; b=7; c=11; media=(a+b+c)/3; //a+b+c: conversione a float e quindi //la divisione è tra float: //valore float assegnato a media! printf( La media tra %d e %d e %f fa %f\n, a,b,c,media); Elementi di Informatica e Programmazione Università di Brescia 60

61 Versione 3 int a, b, c; float media; a=5; b=7; c=11; media=(a+b+c)/3.0; printf( La media tra %d e %d e %d fa %f\n, a,b,c,media); Elementi di Informatica e Programmazione Università di Brescia 61

62 Un esempio: media tra tre numeri interi int a, b, c; float media; a=5; b=7; c=11; media=(a+b+c)/3.0; //conversione di 23 a double //divisione in double //conversione del risultato a float printf( La media tra %d e %d e %d fa %f\n, a,b,c,media); Elementi di Informatica e Programmazione Università di Brescia 62

63 NON CREDERE ALLE SEMPLIFICAZIONI int a=5, b=2; float c=1, risultato; risultato=(a+b)/2+c; printf( Risultato = %f\n, risultato); Elementi di Informatica e Programmazione Università di Brescia 63

64 UN ESEMPIO SEMPLICE? float a; a=0.1; if (a==0.1) printf( Sì, è uguale\n ); else printf( No, non è uguale\n ); PROVARE PER CREDERE Elementi di Informatica e Programmazione Università di Brescia 64

65 UNA SEMPLICE VARIANTE? float a; a=0.1; if (a==0.1f) printf( Sì, è uguale\n ); else printf( No, non è uguale\n ); PROVARE PER CREDERE Elementi di Informatica e Programmazione Università di Brescia 65

66 COSA SUCCEDE NEL PRIMO CASO Premessa: = = *2-4 float : double : float a; a=0.1; // 0.1 double perde precisione e diventa float if (a==0.1) esteso double : Elementi di Informatica e Programmazione Università di Brescia 66

67 MORALE Attenzione ad usare l operatore di confronto == con i tipi non interi (l uguaglianza dovrebbe essere sostituita con l appartenenza ad un intervallo) Elementi di Informatica e Programmazione Università di Brescia 67

68 Conversione esplicite (casting) Sintassi (<tipo>) <espressione> Significato - Operatore unario: da valore a valore - Converte il valore dell espressione in un valore del tipo specificato Esempio float f, fraz; f=3.2; fraz= f (int)f; // fraz=0.2 Elementi di Informatica e Programmazione Università di Brescia 68

69 ESEMPIO: forzare la divisione tra float // MEDIA DI n numeri interi acquisiti dall'utente float media; int n, i, num, somma=0; for(i=1; i<=n; i++){ scanf("%d", &num); somma+=num; } media= (float) somma / n; Elementi di Informatica e Programmazione Università di Brescia 69

70 ESEMPIO: forzare la divisione tra float NB: stesso effetto con media = somma / (float) n; oppure media= (float) somma / (float) n; ma non con media= (float) (somma / n); Elementi di Informatica e Programmazione Università di Brescia 70

71 Commento: perché non usare sempre il tipo più grande? Per risparmiare memoria - es: sistemi embedded Per velocizzare l esecuzione degli operandi - es: calcoli in virgola mobile più lenti dei calcoli tra interi Gli interi non sempre rappresentati precisamente in virgola mobile float f= ; int x= ; printf( Come int = %d, x); // printf( Come float = %f, f); // Elementi di Informatica e Programmazione Università di Brescia 71

72 APPENDICE TECNICO Regole di conversione implicita applicate dal C NB: non fa parte del programma d esame! Elementi di Informatica e Programmazione Università di Brescia 72

73 Normali conversioni aritmetiche CASO A: E presente un operando di tipo in virgola mobile long double double float TIPI INTERI CASO B: Entrambi gli operandi interi PASSO 1: Promozione integrale [signed/unsigned] char [signed/unsigned] short int int unsigned int int se è in grado di includere tutti i valori del tipo di partenza, altrimenti unsigned int Elementi di Informatica e Programmazione Università di Brescia 73

74 PASSO 2: conversione dell eventuale operando con tipo più piccolo unsigned long int long int unsigned int Eccezione: se long int e unsigned int hanno la stessa dimensione, nel caso long int e unsigned int entrambi convertiti a unsigned long int int NOTA: assumendo rappresentazione di interi signed in complemento a 2, la conversione da signed a unsigned viene fatta: - estendendo il segno se il tipo di arrivo è più grande, poi - lasciando i bit così come sono (interpretati come unsigned) I numeri negativi (bit di segno a 1) diventano positivi grandi! Elementi di Informatica e Programmazione Università di Brescia 74

75 ESEMPIO: NON C E OVERFLOW! unsigned short x=200; unsigned short y=100; int tot; tot=x+y; //300 (+ opera su int) ESEMPIO: ATTENZIONE A MESCOLARE SIGNED E UNSIGNED! int x=-20; unsigned int y=10; if(x>y) printf( Assurdo! ); //lo stampa!!! ESEMPIO SIMILE (ma l esito è ben diverso) short int x=-20; unsigned short int y=10; if(x>y) printf( Assurdo! ); //si ipotizza che int includa unsigned short int //non lo stampa Elementi di Informatica e Programmazione Università di Brescia 75

76 ALTRI ESEMPI Elementi di Informatica e Programmazione Università di Brescia 76

77 ESEMPIO di uso CONVERSIONE ESPLICITA: evitare l overflow long int r; int x=100000; int y=100000; r=(long int)x * y; // operatore * eseguito su long int printf( Risultato = %ld, r); // // su macchine a 64 bit consente di ottenere risultato corretto, mentre // senza il casting avrei risultato non esprimibile con int (32 bit) NB: non funziona con f= (long int) (x*y); Elementi di Informatica e Programmazione Università di Brescia 77

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere Tipi elementari, costanti 1 Tipi di dati VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori Tipi Semplici intero reale carattere Strutturati 2 1 Tipo intero Gli interi servono

Dettagli

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro Laboratorio di Programmazione Lezione 1 Cristian Del Fabbro Reperibilità homepage corso: https://users.dimi.uniud.it/~cristian.delfabbro/teaching.php email: cristian.delfabbro@uniud.it telefono: 0432 558676

Dettagli

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it Esercitazioni di Reti Logiche Lezione 1 Rappresentazione dell'informazione Zeynep KIZILTAN zkiziltan@deis.unibo.it Introduzione Zeynep KIZILTAN Si pronuncia Z come la S di Rose altrimenti, si legge come

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

Esercitazione 3. Corso di Fondamenti di Informatica

Esercitazione 3. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 3 Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Alcune regole di base per scrivere un programma in linguaggio C

Alcune regole di base per scrivere un programma in linguaggio C Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza

Dettagli

Tipi di dato-prima parte

Tipi di dato-prima parte Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) Tipi di dato-prima parte Ing. Agnese Pinto 1 di 15 Tipi di dato Sommario Tipi di dato Classificazione dei tipi di dato Tipi

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione Fondamenti di Informatica Michele Ceccarelli Università del Sannio ceccarelli@unisannio.it Angelo Ciaramella DMI-Università degli

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Parte 1. Vettori di bit - AA. 2012/13 1.1

Parte 1. Vettori di bit - AA. 2012/13 1.1 1.1 Parte 1 Vettori di bit 1.2 Notazione posizionale Ogni cifra assume un significato diverso a seconda della posizione in cui si trova Rappresentazione di un numero su n cifre in base b: Posizioni a n

Dettagli

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori"

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori" slide a cura di Salvatore Orlando & Marta Simeoni " Architettura degli Elaboratori 1 Interi unsigned in base 2" Si utilizza un

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Informatica Teorica. Macchine a registri

Informatica Teorica. Macchine a registri Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Sommario. Addizione naturale

Sommario. Addizione naturale Sommario Introduzione Rappresentazione dei numeri interi positivi Rappresentazione dei numeri interi Operazioni aritmetiche Modulo e segno Addizione e sottrazione urale Addizione e sottrazione in complemento

Dettagli

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico ISTITUTO TECNICO STATALE MARCHI FORTI Viale Guglielmo Marconi n 16-51017 PESCIA (PT) - ITALIA PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico Docente PARROTTA GIOVANNI

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il calcolatore. Architettura di un calcolatore (Hardware) Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti

Dettagli

INFORMATICA - I puntatori Roberta Gerboni

INFORMATICA - I puntatori Roberta Gerboni 1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un

Dettagli

Esercitazioni di Reti Logiche. Lezione 2 Algebra Booleana e Porte Logiche. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Esercitazioni di Reti Logiche. Lezione 2 Algebra Booleana e Porte Logiche. Zeynep KIZILTAN zkiziltan@deis.unibo.it Esercitazioni di Reti Logiche Lezione 2 Algebra Booleana e Porte Logiche Zeynep KIZILTAN zkiziltan@deis.unibo.it Argomenti Algebra booleana Funzioni booleane e loro semplificazioni Forme canoniche Porte

Dettagli

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno Parte II Indice Operazioni aritmetiche tra valori rappresentati in binario puro somma sottrazione Rappresentazione di numeri con segno modulo e segno complemento a 2 esercizi Operazioni aritmetiche tra

Dettagli

Esempio. Esempio. Linguaggio di Programmazione. Linguaggi di programmazione. Linguaggio di computazione. Linguaggi di programmazione

Esempio. Esempio. Linguaggio di Programmazione. Linguaggi di programmazione. Linguaggio di computazione. Linguaggi di programmazione Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Problema e metodologie di progetto Linguaggio C: Introduzione Monica Mordonini Problema e Algoritmo

Dettagli

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 10 Settembre 2013

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 10 Settembre 2013 COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Non si possono consultare manuali, appunti e calcolatrici. Esercizio 1: Rappresentare i numeri 37 e 90 (in base 10) in notazione binaria in complemento

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Codifica binaria e algebra di Boole

Codifica binaria e algebra di Boole Codifica binaria e algebra di Boole Corso di Programmazione A.A. 2008/09 G. Cibinetto Contenuti della lezione Codifica binaria dell informazione Numeri naturali, interi, frazionari, in virgola mobile Base

Dettagli

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Andrea Bobbio Anno Accademico 2000-2001 Algebra Booleana 2 Calcolatore come rete logica Il calcolatore può essere visto come una rete logica

Dettagli

Linguaggi. Rosario Culmone, Luca Tesei. 20/10/2009 UNICAM - p. 1/32

Linguaggi. Rosario Culmone, Luca Tesei. 20/10/2009 UNICAM - p. 1/32 Linguaggi Rosario Culmone, Luca Tesei 20/10/2009 UNICAM - p. 1/32 Alfabeto Un alfabeto è un insieme finito di simboli. Useremo Σ per denotare un alfabeto. Esempi di alfabeto sono: l alfabeto latino adottato

Dettagli

Lezione 3. Sommario. Le operazioni aritmetiche binarie. L aritmetica binaria. La somma La sottrazione La moltiplicazione

Lezione 3. Sommario. Le operazioni aritmetiche binarie. L aritmetica binaria. La somma La sottrazione La moltiplicazione Lezione 3 Le operazioni aritmetiche binarie Sommario L aritmetica binaria La somma La sottrazione La moltiplicazione 1 Definizione Si indica con il termine bit più significativo il bit più a sinistra,

Dettagli

SOLUZIONE ESERCIZIO 1

SOLUZIONE ESERCIZIO 1 SOLUZIONE ESERCIZIO 1 Progettare un algoritmo che dati tre numeri (voti) a, b, c che possono assumere i valori interi da 18 a 30, calcoli la loro media. #include void main() { int a, b, c; float

Dettagli

IL LINGUAGGIO C++ Configurazione di Dev-C++

IL LINGUAGGIO C++ Configurazione di Dev-C++ IL LINGUAGGIO C++ Note sull'uso di DevC++ Requisiti di sistema per Dev-C++ - Sistema operativo Microsoft Windows 95, 98, Millenium Edition, NT 4, 2000 o XP - RAM: 8 Mb (consigliati almeno 32 Mb) - CPU:

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

Tipo intero. Esempio. Tipo intero: operatori. Programma PortaMonete.java. Tipi base o primitivi

Tipo intero. Esempio. Tipo intero: operatori. Programma PortaMonete.java. Tipi base o primitivi Tipo intero Tipi base o primitivi Tipi interi: int, byte, short, long Tipi float: float, double Caratteri: char Tipo booleano: boolean Operatori numerici e logici La parola chiave int definisce una variabile

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense Linguaggio del calcolatore Circuiti e reti combinatorie ppendice + dispense Solo assenza o presenza di tensione: o Tante componenti interconnesse che si basano su e nche per esprimere concetti complessi

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

2.12 Esercizi risolti

2.12 Esercizi risolti Codifica dell'informazione 55 Lo standard IEEE prevede cinque cause di eccezione aritmetica: underflow, overflow, divisione per zero, eccezione per inesattezza, e eccezione di invalidità. Le eccezioni

Dettagli

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Dettagli

Materiale di approfondimento: numeri interi relativi in complemento a uno

Materiale di approfondimento: numeri interi relativi in complemento a uno Materiale di approfondimento: numeri interi relativi in complemento a uno Federico Cerutti AA. 2011/2012 Modulo di Elementi di Informatica e Programmazione http://apollo.ing.unibs.it/fip/ 2011 Federico

Dettagli

Matlab: Strutture di Controllo. Informatica B

Matlab: Strutture di Controllo. Informatica B Matlab: Strutture di Controllo Informatica B Tipo di dato logico È un tipo di dato che può avere solo due valori true (vero) 1 false (falso) 0 I valori di questo tipo possono essere generati direttamente

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Sistemi di Numerazione Binaria NB.1

Sistemi di Numerazione Binaria NB.1 Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

Dettagli

Codifica dei numeri negativi

Codifica dei numeri negativi E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione

Dettagli

Corso di Visione Artificiale. Matlab per Visione. Samuel Rota Bulò

Corso di Visione Artificiale. Matlab per Visione. Samuel Rota Bulò Corso di Visione Artificiale Matlab per Visione Samuel Rota Bulò Cos'è Matlab? MATLAB MATLAB - - MATrix MATrix LABoratory LABoratory Ambiente Ambiente di di sviluppo sviluppo ed ed esecuzione esecuzione

Dettagli

(anno accademico 2008-09)

(anno accademico 2008-09) Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato

Dettagli

Esame di Informatica Generale 9 CFU 21 Giugno 2011 Professori: Carulli, Fiorino, Mazzei

Esame di Informatica Generale 9 CFU 21 Giugno 2011 Professori: Carulli, Fiorino, Mazzei 04-21-giugno-2011-DomandeConSoluzione.doc 1/12 22/06/2011 15:07:59 Esame di Informatica Generale 9 CFU 21 Giugno 2011 Professori: Carulli, Fiorino, Mazzei Docente Risultati Scritto Orali Carulli Venerdì

Dettagli

puntatori Lab. Calc. AA 2007/08 1

puntatori Lab. Calc. AA 2007/08 1 puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene

Dettagli

Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. Fondamenti. Struttura di un programma. Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione

Dettagli

Sistemi di Numerazione

Sistemi di Numerazione Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

PARTE III MACCHINE A REGISTRI

PARTE III MACCHINE A REGISTRI PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson

Dettagli

Caratteri e stringhe Esercizi risolti

Caratteri e stringhe Esercizi risolti Esercizi risolti 1 Esercizio: Conta vocali e consonanti Scrivere un programma in linguaggio C che legga una frase introdotta da tastiera. La frase è terminata dall introduzione del carattere di invio.

Dettagli

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore. 1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Alfabeto ed elementi lessicali del linguaggio C

Alfabeto ed elementi lessicali del linguaggio C Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2015-2016 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - pietro.dilena@unibo.it s t a t i c s h o r t l e g s ; i n

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Università degli Studi di Messina Facolta di Ingegneria - 98100 Messina Tel. (090) 393229 - Fax (090) 393502 Fondamenti di Informatica Ing. delle Tecnologie Industriali Docente: Ing. Mirko Guarnera 1 Sistemi

Dettagli

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture Concetti chiave Struct Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture Struct Per aggregare elementi di tipo diverso si utilizza una struttura. struct

Dettagli

Codifica binaria dei numeri

Codifica binaria dei numeri Codifica binaria dei numeri Caso più semplice: in modo posizionale (spesso detto codifica binaria tout court) Esempio con numero naturale: con 8 bit 39 = Codifica in virgola fissa dei numeri float: si

Dettagli

Linguaggio C - Funzioni

Linguaggio C - Funzioni Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche

Dettagli

Fondamenti di Informatica T. Linguaggio C: i puntatori

Fondamenti di Informatica T. Linguaggio C: i puntatori Linguaggio C: i puntatori Il puntatore E` un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore

Dettagli

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Concetti importanti da (ri)vedere Programmazione imperativa Strutture di

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

PROGETTAZIONE DISCIPLINARE MATEMATICA classe 2^

PROGETTAZIONE DISCIPLINARE MATEMATICA classe 2^ PROGETTAZIONE DISCIPLINARE MATEMATICA classe 2^ PER RICONOSCERE, RAPPRESENTARE E RISOLVERE PROBLEMI I. Q. II. Q. CONTENUTI / ATTIVITA 1 bim. 2 bim. 3 bim. 4 bim. 1a) Individuazione di situazioni problematiche

Dettagli

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

PROVA INTRACORSO TRACCIA A Pagina 1 di 6 PROVA INTRACORSO DI ELEMENTI DI INFORMATICA MATRICOLA COGNOME E NOME TRACCIA A DOMANDA 1 Calcolare il risultato delle seguenti operazioni binarie tra numeri interi con segno rappresentati in complemento

Dettagli

1 Automi Cellulari (Rev. 2.0.3)

1 Automi Cellulari (Rev. 2.0.3) 1 Automi Cellulari (Rev. 2.0.3) Gli automi cellulari sono una classe di modelli introdotti originariamente da von Neumann e Ulam nel 1948 come una semplice idealizzazione dell evoluzione delle cellule

Dettagli

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x. Funzioni Esercizio 1 Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x. Creare un altra funzione, di nome float cube(float x), che restituisce invece il

Dettagli

Programmazione Dichiarativa. Programmazione Logica. SICStus PROLOG PROLOG. http://www.sics.se/sicstus/ Bob Kowalski: "Algoritmo = Logica + Controllo"

Programmazione Dichiarativa. Programmazione Logica. SICStus PROLOG PROLOG. http://www.sics.se/sicstus/ Bob Kowalski: Algoritmo = Logica + Controllo Programmazione Logica Bob Kowalski: "Algoritmo = Logica + Controllo" nella programmazione tradizionale: il programmatore deve occuparsi di entrambi gli aspetti nella programmazione dichiarativa: il programmatore

Dettagli

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

Dettagli

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

Dettagli

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007 Files in C++ Fondamenti di Informatica R. Basili a.a. 2006-2007 Sintesi Motivazioni Definizione di file in C++ Un esempio Uso dei file Esempi Esercizi Motivazioni il programma in esecuzione legge (sequenzialmente)

Dettagli

Introduzione. Università degli studi di Cassino. Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.: +39 081 7723364

Introduzione. Università degli studi di Cassino. Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.: +39 081 7723364 Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Introduzione Ing Saverio De e-mail: saveriodevito@porticieneait Tel: +39 8 7723364

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione Capitolo 2 Variabili, Espressioni e Comandi Prof. Mauro Gaspari: gaspari@cs.unibo.it Valori e Tipi Un valore (= value) è una delle entità fondamentali che i programmi sono

Dettagli

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri 1 Da base 2 a base 10 I seguenti esercizi richiedono di convertire in base 10 la medesima stringa binaria codificata rispettivamente

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione basata sul campo d utilizzo. I principali package sono:

Dettagli

Esercizi sulla conversione tra unità di misura

Esercizi sulla conversione tra unità di misura Esercizi sulla conversione tra unità di misura Autore: Enrico Campanelli Prima stesura: Settembre 2013 Ultima revisione: Settembre 2013 Per segnalare errori o per osservazioni e suggerimenti di qualsiasi

Dettagli

Rappresentazione dell informazione Codifica Binaria

Rappresentazione dell informazione Codifica Binaria Fondamenti di Informatica Rappresentazione dell informazione Codifica Binaria Fondamenti di Informatica - D. Talia - UNICAL 1 Rappresentazione dell informazione Tutta l'informazione in un calcolatore è

Dettagli

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Cos è una stringa (1) Stringhe DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Una stringa è una serie di caratteri trattati come una singola unità. Essa potrà includere lettere, cifre, simboli e caratteri

Dettagli

Il linguaggio C. I principali tipi di dati che sono disponibili come predefiniti secondo lo standard ANSI del C sono 5:

Il linguaggio C. I principali tipi di dati che sono disponibili come predefiniti secondo lo standard ANSI del C sono 5: Fondamenti di Informatica CdL Ingegneria Meccanica A.A. 2013/14 Docente: Ing. Ivan Bruno Il linguaggio C 1. Variabili 2. Costanti 3. Operazioni e espressioni 4. Puntatori e algebra 5. Array semplici e

Dettagli

Aritmetica dei Calcolatori 2

Aritmetica dei Calcolatori 2 Laboratorio di Architettura 13 aprile 2012 1 Operazioni bit a bit 2 Rappresentazione binaria con segno 3 Esercitazione Operazioni logiche bit a bit AND OR XOR NOT IN OUT A B A AND B 0 0 0 0 1 0 1 0 0 1

Dettagli

CAPITOLO V. DATABASE: Il modello relazionale

CAPITOLO V. DATABASE: Il modello relazionale CAPITOLO V DATABASE: Il modello relazionale Il modello relazionale offre una rappresentazione matematica dei dati basata sul concetto di relazione normalizzata. I principi del modello relazionale furono

Dettagli

Corso Programmazione 1 Capitolo 01: Concetti Elementari

Corso Programmazione 1 Capitolo 01: Concetti Elementari Corso Programmazione 1 Capitolo 01: Concetti Elementari Docente: Roberto Sebastiani - roberto.sebastiani@unitn.it Esercitatori: Mario Passamani - mario.passamani@unitn.it Alessandro Tomasi - alessandro.tomasi@unitn.it

Dettagli

PIANO DI LAVORO. a.s. 2015 / 2016

PIANO DI LAVORO. a.s. 2015 / 2016 PIANO DI LAVORO a.s. 2015 / 2016 Materia: INFORMATICA Classe: terza informatica- sez. A Data di presentazione: 15/10/2015 DOCENTI FIRMA Cerri Marta Bergamasco Alessandra Posta elettronica: itisleon@tin.it

Dettagli

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1 Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria R. Vitolo Dipartimento di Matematica Università di Lecce SaLUG! - Salento Linux User Group Il programma OCTAVE per l

Dettagli

Appunti di Informatica 1. Gianluca Rossi

Appunti di Informatica 1. Gianluca Rossi Appunti di Informatica 1 Gianluca Rossi Versione maggio 2011 Indice 1 Algoritmi, macchine e linguaggi di programmazione 3 1.1 La macchina di Von Neumann........................ 5 1.2 Dal linguaggio macchina

Dettagli