Linguaggio C Operatori, Espressioni e Conversioni di tipo
|
|
- Adriano Di Martino
- 5 anni fa
- Visualizzazioni
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.
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?
DettagliTipi 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
DettagliEsercizi 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
DettagliAppunti 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)
DettagliAppunti 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)
DettagliVariabili 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
DettagliInformatica 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,
DettagliLaboratorio 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
DettagliEsercitazioni 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
DettagliLINGUAGGI 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
DettagliEsercitazione 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
DettagliDall 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
DettagliAlcune 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
DettagliTipi 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
DettagliAlgebra 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
DettagliFondamenti 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
DettagliEsempi 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
DettagliNascita 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
DettagliParte 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
DettagliEsercitazioni 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
Dettagli4 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
DettagliInformatica. 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
DettagliEsercitazione 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.
Dettagli3. 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
DettagliIntroduzione 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
DettagliInformatica 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
DettagliGli 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
DettagliSommario. 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
DettagliPROGRAMMA 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
DettagliIl 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
DettagliINFORMATICA - 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
DettagliEsercitazioni 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
DettagliParte 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
DettagliEsempio. 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
DettagliESAME 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
DettagliUniversità 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)
DettagliArduino: 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
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
DettagliCodifica 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
DettagliAlgebra 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
DettagliLinguaggi. 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
DettagliLezione 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,
DettagliSOLUZIONE 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
DettagliIL 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:
DettagliLa 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
DettagliRichiesta 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
DettagliTipo 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
DettagliLe 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.
DettagliLinguaggio 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
DettagliAlgebra 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
Dettagli2.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
DettagliRAPPRESENTAZIONE 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:
DettagliMateriale 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
DettagliMatlab: 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
DettagliProgrammazione 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)
DettagliSistemi 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
DettagliCodifica 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
DettagliCorso 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)
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
DettagliEsame 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ì
Dettaglipuntatori 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
DettagliLinguaggio 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
DettagliSistemi 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
DettagliLinguaggio 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
DettagliPARTE 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
DettagliCaratteri 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.
Dettagli2. 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
DettagliElementi 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
DettagliI 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
DettagliAlfabeto 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
DettagliFondamenti 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
DettagliConcetti 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
DettagliCodifica 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
DettagliLinguaggio 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
DettagliFondamenti 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
DettagliProgetto 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
DettagliRappresentazione 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
DettagliPROGETTAZIONE 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
DettagliPROVA 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
Dettagli1 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
DettagliCreare 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
DettagliProgrammazione 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
DettagliUnità 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
DettagliFondamenti 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
DettagliFiles 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)
DettagliIntroduzione. 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
DettagliFondamenti 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
DettagliArchitettura 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
DettagliUniversità 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
DettagliLibreria 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:
DettagliEsercizi 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
DettagliRappresentazione 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 è
DettagliCos è 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
DettagliIl 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
DettagliAritmetica 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
DettagliCAPITOLO 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
DettagliCorso 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
DettagliPIANO 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
DettagliIl 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
DettagliAppunti 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