Introduzione al C. Unità 2 - Variabili. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione al C. Unità 2 - Variabili. D. Bloisi, S. Peluso, A. Pennisi, S. Salza"

Transcript

1 Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 2 - Variabili D. Bloisi, S. Peluso, A. Pennisi, S. Salza

2 Sommario Unità 2 Variabili e identificatori di variabile Inizializzazione di variabili Assegnazione e letture Tipi di dato scalari: interi,reali e caratteri Intervalli e precisione nelle rappresentazioni Conversioni di tipo, implicite ed esplicite Unità 2 - Variabili 2016/2017 Pagina 2

3 Variabili In C una variabile rappresenta una locazione di memoria usata per la memorizzazione di un valore ed è caratterizzata da: NOME Sequenza di caratteri che permette di identificare la variabile Risponde a regole precise TIPO Specifica il tipo di dato che la variabile può immagazzinare Es: intero, reale, carattere,.. INDIRIZZO Locazione di memoria nella quale la variabile è memorizzata La dimensione (uno o più byte) dipende dal tipo VALORE Valore immagazzinato nella variabile ad un certo istante Pagina 3

4 Identificatori di variabili Sequenza di caratteri composta da lettere, cifre e da _ Inizia per lettera o per _ Lunghezza qualsiasi (31 caratteri nello standard ANSI) Lettere maiuscole e minuscole sono considerate caratteri diversi: il C è case sensitive Alcuni identificatori sono riservati perché considerati parole chiave del linguaggio, es.: include, return, main, function ESEMPIO: identificatori validi Pippo, a117, _418, sono_una_variabile ESEMPIO: identificatori non validi 3d7, un cane, return Pagina 4

5 Analogia con le scatole di scarpe Si può comprendere intuitivamente il significato di una variabile attraverso l analogia con una scatola di scarpe etichettata in uno scaffale NOME Etichetta della scatola: la identifica univocamente TIPO Forma e dimensioni della scatola Dipendono dal tipo di scarpe che ci devono stare INDIRIZZO Posizione nello scaffale: dove andarla a cercare VALORE Il paio di scarpe che, ad un certo istante è contenuto nella scatola Pagina 5

6 Rappresentazione grafica di variabili Una variabile è un riferimento ad una locazione di memoria in cui è memorizzato un valore. Per rappresentare le variabili e i loro valori usiamo la seguente notazione grafica tipo indirizzo int var2 487 var2 487 valore nome NOTAZIONE SEMPLIFICATA Pagina 6

7 Dichiarazione di variabili Il C prevede che le variabili, per poter essere usate, siano sempre esplicitamente dichiarate SINTASSI tipo identificatore1,., identificatoren tipo: è il tipo della variabile (predefinito o definito nel programma) identificatorek: i nomi con cui le variabili saranno identificate SEMANTICA La dichiarazione riserva spazio in memoria per la variabile Rende la variabile disponibile nella parte del programma (blocco) dove appare la dichiarazione. N.B. è possibile dichiarare più variabili dello stesso tipo in un unica dichiarazione Pagina 7

8 Esempi di dichiarazione int x; int y; int z; float alfa, beta, gamma; char iniziale, finale; Tutte queste variabili appartengono a tipi predefiniti Fra i più comuni tipi elementari in C int : valori interi float: valori reali in singola precisione double: valori reali in doppia precisione char: carattere Pagina 8

9 Assegnazione L istruzione di assegnazione serve per memorizzare un valore in una variabile SINTASSI nome variabile = espressione nome variabile: è il nome di una variabile espressione: è un espressione che, una volta valutata, deve restituire un valore dello stesso tipo della variabile SEMANTICA Alla variabile viene assegnato il valore dell espressione che si trova a destra del simbolo = Il valore dell espressione deve essere compatibile con il tipo della variabile Dopo l assegnazione il valore rimane immutato fino all assegnazione successiva Pagina 9

10 Esempi di assegnazione x = 5; r = ; m = 7 * 8; x e m sono variabili intere, cioè dichiarate di tipo int r è una variabile reale, cioè dichiarata di tipo float Le prime due espressioni sono costanti dello stesso tipo delle variabili che compaiono a primo membro La terza espressione è un espressione aritmetica a valore intero Dopo l esecuzione dell assegnazione, la variabile m vale 56 Pagina 10

11 Inizializzazione di una variabile Inizializzare una variabile significa specificare un valore che viene assegnato ad essa prima di qualsiasi suo utilizzo Una variabile non inizializzata ha valore indefinito Se il valore di una variabile non inizializzata viene acceduto prima che essa sia oggetto di una assegnazione, ciò può comportare errori nell esecuzione del programma Questo tipo di errore non è segnalato dal compilatore, si tratta di un errore semantico, anche piuttosto subdolo Alla variabile viene assegnata una locazione di memoria, come conseguenza della dichiarazione. La locazione contiene comunque un valore (non prevedibile e non significativo). Questo viene usato in caso di mancata inizializzazione Pagina 11

12 Esempio: mancata inizializzazione #include <stdio.h> int main() { int x, y, x2, y2, z; x2 = x*x; y2 = y*y; z = (x2+y2)*(x2-y2); printf("%d\n", z); return 0; } Le variabili x e y vengono accedute senza essere inizializzate x2, y2 e z sono invece oggetto di assegnazione prima di essere accedute Il programma stampa un valore errato (ed imprevedibile): Pagina 12

13 Inizializzazione: sintassi L inizializzazione può essere fatta contestualmente alla dichiarazione, nella forma: tipo nomevariabile = espressione; Il che è del tutto equivalente a: tipo nomevariabile; nomevariabile = espressione; ESEMPIO int x = 5; è del tutto equivalente a: int x; x = 5 Pagina 13

14 Lettura di una variabile Il valore di una variabile può anche essere acquisito o modificato tramite lettura, cioè acquisendone il valore un dispositivo di input (nel nostro caso la tastiera) Tramite l operazione di lettura il valore acquisito sostituisce il valore precedente della variabile, se ne aveva uno La lettura si effettua tramite la funzione scanf scanf è parte della libreria stdio del C La struttura di scanf è del tutto analoga a quella di printf Pagina 14

15 La funzione scanf Legge da input il valore di una sequenza di variabili Fa parte della libreria stdio.h e ha la forma: scanf (stringa di controllo del formato, altri argomenti ) La stringa di controllo del formato descrive il formato dell input Gli altri argomenti specificano le variabili che si intende leggere Restituisce come valore il numero di variabili lette con successo La stringa di controllo del formato è composta da una serie di specifiche di conversione che indicano: Il tipo del dato che si vuole leggere Il formato nel quale andrà letto Il numero di caratteri da leggere Pagina 15

16 Specifiche di conversione Alcune specifiche di conversione di uso frequente sono: %c singolo carattere %d intero in rappresentazione decimale con o senza segno %o intero in rappresentazione ottale %x intero in rappresentazione esadecimale %u intero in rappresentazione decimale senza segno %f reale in singola precisione (virgola fissa o mobile) %lf reale in doppia precisione %s stringa di caratteri %e reali in notazione virgola mobile Pagina 16

17 Esempio scanf #include <stdio.h> main() { int x; printf("inserisci un intero: "); scanf("%d", &x); printf("ho letto %d", x); return 0; } ATTENZIONE Nella scanf le variabili da leggere devono essere indicate non con il nome ma con l indirizzo: &x è l indirizzo di x Pagina 17

18 Esempio scanf (esecuzione) Pagina 18

19 Nome e indirizzo di una variabile Nella scanf le variabili da leggere devono essere indicate non con il nome ma con l indirizzo Per conoscere l indirizzo si usa l operatore di indirizzo &, il quale, applicato ad una variabile, restituisce l indirizzo della locazione in cui è contenuta la variabile Nell esempio precedente &x è l indirizzo di x Se invece di scrivere &x avessi scritto x avrei avuto il seguente effetto: Dato che x è una variabile intera, viene preso il valore di x in quell istante come indirizzo della variabile da leggere Nella fattispecie, non essendo x inizializzata, il risultato oltre che sbagliato è imprevedibile Pagina 19

20 Esecuzione con x invece di &x Pagina 20

21 Errori di input Ho dato da input qualcosa che non è un numerale corretto La funzione non ha effettuato la lettura con successo Modifichiamo il programma per vedere quale valore viene restituito dalla funzione Pagina 21

22 Esempio: stampa del valore di ritorno #include <stdio.h> main() { int x, code; printf("inserisci un intero: "); code = scanf("%d", &x); printf("codice di ritorno della scanf: %d \n", code); printf("ho letto %d", x); return 0; } N.B. Il valore di ritorno di scanf è il numero di variabili lette correttamente. In questo caso, se c è un errore varrà 0 Pagina 22

23 Esempio: esecuzione Pagina 23

24 Esercizio Esercizio 2.1 Si scriva una funzione in linguaggio C che sia in grado di calcolare il quadrato di un intero. Scrivere inoltre una funzione main che legge un intero e ne stampa il quadrato. Pagina 24

25 La funzione square tipo della funzione nome della funzione int square ( int num ) { int prodotto; prodotto = num * num; return prodotto; } parametri (tipo e nome) assegna il valore di ritorno Ha la stessa struttura della funzione main, con la differenza che sono specificati gli argomenti La funzione restituisce il valore che deve calcolare, cioè il quadrato di quello che è stato passato come parametro Pagina 25

26 La funzione square tipo della funzione nome della funzione int square ( int num ) { int prodotto; prodotto = num * num; return prodotto; } parametri assegna il valore di ritorno Ha la stessa struttura della funzione main, con la differenza che sono specificati gli argomenti La funzione restituisce il valore che deve calcolare, cioè il quadrato di quello che è stato passato come parametro Pagina 26

27 Il programma completo #include <stdio.h> Prototipo della funzione square int square(int); Attenzione al & int main() { int x, quadrato; printf("scrivi un numero intero "); scanf ("%d", &x); printf("quadrato di %d = ", x); quadrato = square(x); printf("%d\n", quadrato); return 0; } Definizione della funzione main (programma principale) int square ( int num ) { int prodotto; prodotto = num * num; return prodotto; } Definizione della funzione square Pagina 27

28 Esercizi Esercizio 2.2 Si scriva una funzione in linguaggio C che sia in grado di calcolare il cubo di un intero. Scrivere inoltre una funzione main in grado di utilizzare la funzione realizzata. Esercizio 2.3 Si scriva una funzione in linguaggio C che sia in grado di calcolare il numero dei giorni corrispondenti all età di una persona (espressa in anni) Scrivere una funzione main che chiede l età di una persona e stampa il numero di giorni corrispondente Esercizio 2.4 Si scriva una funzione in linguaggio C che richieda all utente due interi e li stampi in ordine inverso rispetto all inserimento Pagina 28

29 Tipi di dato Per descrivere efficacemente la natura dei dati rappresentabili in un programma e le operazioni per manipolarli si usa il concetto di tipo di dato, caratterizzato da: DOMINIO Insieme dei possibili valori Es: numeri interi, reali, razionali, ecc. OPERAZIONI Funzioni che operano sugli elementi del dominio Es: per gli interi, somma, moltiplicazione, ecc. LETTERALI Valori costanti appartenenti al dominio Es: 457 è un letterale per il dominio degli interi Pagina 29

30 Tipi scalari e aggregati I domini dei tipi scalari sono insiemi ordinati I tipi aggregati sono costruiti a partire dagli scalari Pagina 30

31 Tipi aritmetici Pagina 31

32 Domini dei tipi scalari numerici N.B. Gli intervalli dipendono dal sistema (piattaforma hw/sw) Pagina 32

33 Tipo intero Il dominio dipende dal sottotipo e dal sistema hw/sw Gli operatori sono: + somma - sottrazione * prodotto / divisione % divisione modulo (resto della divisione intera) Valgono le consuete precedenze tra operatori dell aritmetica Letterali: sequenze di cifre che denotano costanti intere Valori limite definiti dalle costanti INT_MIN e INT_MAX Pagina 33

34 Tipi short e long Oltre al tipo int il C prevede anche due tipi short int e long int, spesso abbreviati come short e long In genere vengono memorizzati rispettivamente con 2 Byte e 4 Byte (ma è meglio controllare) Tuttavia ciò può variare da implementazione a implementazione Su piattaforme a 64 bit è possibile che alle variabili long vengano assegnati 8 Byte È possibile scegliere tra questi due tipi in base al range che si prevede per le variabili intere Occorre però prestare la massima attenzione, perché il pericolo di overflow è sempre in agguato Pagina 34

35 Valori massimi e minimi Sono costanti la cui definizione è contenuta in limits.h Il file si trova nella directory MinGw\include Verificare i valori con il seguente programma: #include <stdio.h> #include <limits.h> int main() { printf("shrt_min=%d\n", SHRT_MIN); printf("shrt_max=%d\n", SHRT_MAX); printf("int_min=%d\n", INT_MIN); printf("int_max=%d\n", INT_MAX); printf("long_min=%d\n", LONG_MIN); printf("long_max=%d\n", LONG_MAX); printf("ushrt_max=%u\n", USHRT_MAX); printf("uint_max=%u\n", UINT_MAX); printf("ulong_max=%u\n", ULONG_MAX); return 0; } Pagina 35

36 Overflow Il problema nasce dalla rappresentazione interna dei numeri, con numero limitato di cifre Si verifica quando il risultato di un calcolo non è rappresentabile nel dominio del tipo dato Tipicamente non è segnalato come errore e produce effetti imprevedibili Il valore massimo per uno short int (rappresentato con 16 bit) è 32767= Il valore massimo per uno long int (rappresentato con 32 bit) è 2,147,483,647= Un semplice programma mostra gli effetti dell overflow Pagina 36

37 Esempio: overflow #include <stdio.h> main() { short int si = ; long int li = ; printf("valore di si prima dell'incremento: %d \n", si); printf("valore di li prima dell'incremento: %d \n", li); si = si+1; li = li+1; printf("valore di si dopo l'incremento: %d \n", si); printf("valore di li dopo l'incremento: %d \n", li); return 0; } Pagina 37

38 Esempio: overflow (esecuzione) N.B. Rappresentazione in complemento a 2 di si nel caso short int : ( ) CA2 (+32767) 10 sommando 1 ( ) CA2 ( ) 10 Pagina 38

39 Tipo float Corrisponde al dominio dei numeri reali in semplice precisione, tipicamente a 32 bit (Notazione IEEE 754) Gli operatori sono: + somma - sottrazione * prodotto / divisione Valgono le consuete precedenze tra operatori dell aritmetica Letterali: sequenze di cifre contenenti il punto decimale e che terminano con una f. Es: f Anche letterali in notazione esponenziale. Es: 314E-2f Pagina 39

40 Tipo double Corrisponde al dominio dei numeri reali in doppia precisione, tipicamente a 64 bit (Notazione IEEE 754) Gli operatori sono: + somma - sottrazione * prodotto / divisione Valgono le consuete precedenze tra operatori dell aritmetica Letterali: sequenze di cifre contenenti il punto decimale e che opzionalmente terminano con una d. Es: ,3.1415d Anche letterali in notazione esponenziale. Es: 314E-2 Pagina 40

41 Valori massimi e minimi (reali) Sono costanti la cui definizione è contenuta in float.h Il file si trova nella directory MinGw\include Verificare i valori con il seguente programma: #include <stdio.h> #include <float.h> int main() { printf("flt_min =%E\n", FLT_MIN ); printf("flt_max =%E\n", FLT_MAX ); printf("dbl_min =%E\n", DBL_MIN ); printf("dbl_max =%E\n", DBL_MAX ); return 0; } Pagina 41

42 Operatori assegnazione composta In C è possibile usare delle notazioni composte in quelle assegnazioni in cui la variabile a primo membro compare anche a secondo somma = somma + addendo; salario = salario * aumento; si può abbreviare in: somma += addendo; salario *= aumento; Per ogni operatore esiste il corrispondente: + - * / % += -= *= /= %= Pagina 42

43 Operatori di incremento e decremento Accade molto spesso di dover incrementare o decrementare una variabile di una unità Oltre agli operatori di assegnazione composta, il C prevede un ulteriore notazione semplificata Forme equivalenti: x = x + 1; x += 1; x++; x = x - 1; x -= 1; x--; Pagina 43

44 Operatori di pre-post incremento Esistono due forme di incremento: Pre-incremento: l operatore è prefisso alla variabile ++x; Post-incremento: l operatore è postfisso alla variabile x++; Entrambe le forme hanno l effetto di incrementare la variabile di 1 (proprio come x = x + 1 e x += 1) La differenza sta nell'ordine cui avvengono le due azioni di incremento e di calcolo dell'espressione Lo stesso discorso vale per il decremento: --x; x--; pre-decremento post-decremento Pagina 44

45 Pre-incremento in espressioni Nel caso di pre-incremento, l'ordine delle operazioni è: 1. Viene incrementata la variabile che compare nell'espressione 2. Viene calcolata l'espressione ESEMPIO x = 5; int y = 3 * ++x; equivale a x = 5; x = x + 1; int y = 3 * x; In entrambi i casi alla fine x vale 6 e y vale 18 Pagina 45

46 Post-incremento in espressioni Nel caso di pre-incremento, l'ordine delle operazioni è: 1. Viene calcolata l'espressione 2. Viene incrementata la variabile che compare nell'espressione ESEMPIO x = 5; int y = 3 * x++; equivale a x = 5; int y = 3 * x; x = x + 1; In entrambi i casi alla fine x vale 6 e y vale 15 Pagina 46

47 Side-effect Il C estende il significato del termine espressione: A. Espressioni che hanno come effetto solamente il calcolo di un valore, che si possono comporre secondo le regole delle espressioni matematiche. B. Espressioni che, oltre a calcolare un valore, modificano lo stato della memoria, come ad esempio un'assegnazione (semplice o composta) oppure un post-incremento. Per il secondo tipo di espressioni si usa il termine di espressioni-con-side-effect Il termine side-effect indica che il calcolo dell espressione ha degli effetti collaterali, che sono appunto le variazioni indotte nello stato della memoria, le quali permangono anche dopo che il calcolo dell espressione si è concluso Pagina 47

48 Side-effect: esempi 23*x+5 è una espressione senza side-effect x = 7 è una espressione con side-effect: la sua valutazione provoca il cambiamento del valore di x Essendo un espressione valida x = 7 può comparire a secondo membro di una assegnazione: y = x = 7; Come risultato dell assegnazione, ad y viene assegnato il valore dell espressione x = 7 (cioè 7), il side-effect è costituito dal fatto che da quel momento x vale 7 Tutta questa ricchezza espressiva deve essere usata con molta cautela, evitando acrobazie e virtuosismi: l obiettivo primario è garantire la leggibilità del programma Pagina 48

49 Stile sobrio con le espressioni Sebbene il linguaggio C consenta un uso indifferenziato dei due tipi di espressioni, è preferibile usare le espressioni semplici con side-effect per formare delle istruzioni, evitando sempre l uso di espressioni con side-effect all interno di espressioni matematiche più complesse. Ad esempio x = 7 è una espressione con side-effect, e la uso per formare l istruzione di assegnazione x = 7; Ma l istruzione: x = 5 * (y = 7); è meglio riscriverla come: (y = 7); x = 5 * y ; per meglio evidenziare l effetto sul valore di y. Pagina 49

50 Costanti La maniera più semplice di utilizzare un valore costante in un programma è di usare un letterale, per un numero un numerale Es: int compenso = * orelavoro; Questo pone due problemi: A. A chi legge il programma non è immediatamente chiaro cosa rappresenti il numero B. Se questo numero compare in molte parti del programma e dovesse cambiare, dovrei modificarlo dappertutto Il C consente di associare a quel numero un nome, e poi utilizzare questo nome invece del letterale: const int COMPENSO_ORARIO = 20000;... int compenso = COMPENSO_ORARIO * orelavoro; Pagina 50

51 Definizione di costanti tramite #define In realtà const è un modificatore di una definizione di variabile con inizializzazione Il suo effetto è che il valore della variabile, non può più essere modificato dopo l inizializzazione: resta quindi costante Oltre alla definizione di costanti tramite il modificatore const, è possibile definire costanti tramite la direttiva #define ESEMPIO #define COMPENSO_ORARIO Si tratta di una direttiva che deve essere messa nella intestazione del programma La direttiva è recepita dal compilatore che da allora in poi rimpiazza la stringa COMPENSO_ORARIO con Pagina 51

52 Esercizio: teorema di Pitagora Esercizio 2.5 Scrivere un programma che riceva in input da tastiera il valore di due cateti di un triangolo rettangolo e restituisca il valore dell ipotenusa. Esempio d uso Inserisci il primo cateto: 3 Inserisci il secondo cateto: 4 Valore ipotenusa: 5 Pagina 52

53 Soluzione: teorema di Pitagora #include <stdio.h> #include <math.h> int main () { double a, b, c; printf( Inserisci il primo cateto:\n"); scanf("%lf", &a); printf( Inserisci il secondo cateto:\n"); scanf("%lf", &b); c = sqrt(a*a + b*b); printf("valore ipotenusa: %f\n", c); return 0; } Pagina 53

54 Conversione di tipi Le conversioni di tipo si rendono necessarie in vari casi: Assegnazioni tra due variabili di tipo diverso (ma compatibile ). Es: x = y;, con x di tipo float e y di tipo int Operazioni tra variabili di tipo diverso nella stessa espressione. Es: x = y * z; (x e y tipo float e z tipo long) Il C prevede due tipi di conversione A. IMPLICITA (PROMOZIONE) Il compilatore ne rileva la necessità e provvede d ufficio a promuovere la variabile al tipo superiore Nel primo esempio y è promossa da int a float B. ESPLICITA Viene effettuata direttamente dal programmatore Pagina 54

55 Gerarchia di promozione TIPO SUPERIORE PROMOZIONE TIPO INFERIORE long double double float unsigned long long unsigned int int short char TIPO SUPERIORE PERDITA DI PRECISIONE TIPO INFERIORE Pagina 55

56 Conversione implicita - operatori binari Nel caso di operatori binari con operandi di tipo diverso: il tipo inferiore viene promosso al superiore ed il risultato è del tipo superiore Nel caso di assegnazione è il tipo della variabile assegnata che comanda: l espressione viene convertita a tale tipo ESEMPIO a = c + b; ( c di tipo float e b di tipo double) c è promosso a double e l espressione è di tipo double Ma se a è float allora il valore dell espressione verrà poi riconvertito a float (con perdita di informazione) Pagina 56

57 Conversione implicita funzioni Gli argomenti passati ad una funzione vengono convertiti secondo quanto specificato nel prototipo con potenziale perdita di informazione All atto del return, il valore dell espressione assegnata a return viene convertito a quello della funzione (potenziale perdita di informazione) ESEMPIO int f(float,int); Chiamata f(a,b) con a di tipo int e b di tipo float a è convertito a float e b a int Nella funzione, l esecuzione di return a * b converte il risultato float di a * b in int Pagina 57

58 Conversione esplicita (cast) Per convertire esplicitamente dati da un tipo ad un altro si deve effettuare un operazione di cast SINTASSI (tipo) espressione tipo: è un nome di tipo espressione: è l espressione della quale si desidera convertire il tipo SEMANTICA Converte il tipo di una espressione ad un altro tipo Ciò rende possibili operazioni che coinvolgono tipi altrimenti incompatibili Valutare sempre con cura l effetto delle conversioni di tipo. Il compilatore non segnala, eventuali situazioni rischiose Pagina 58

59 Esempio: cast #include <stdio.h> int main () { long b = 90000L; short a = (short) 3.75; // cast a short // dell espressione 3.75 // (di tipo double) printf("%d\n", a); a = b; //assegno long a short printf("%d\n", a); printf("%d\n", b); return 0; } Pagina 59

60 Esempio: cast (esecuzione) Il valore 3.75 è troncato all intero e viene stampato 3 (casting esplicito) Il valore eccede l intervallo dello short int e quindi il casting implicito produce un effetto devastante Pagina 60

61 Tipo char In C i caratteri fanno parte del tipo intero Sono memorizzati con il valore corrispondente al loro codice: ASCII (American Standard Code for Information Interchange) EBCDIC (usato in casa IBM) Letterali di tipo char sono caratteri tra apici ESEMPI char c; c = 'A'; c vale 65 in entrambi i casi c = 65; (il codice ASCII di A è 65) char a, b; a = 5; a vale 5 a = '5'; a vale 53, il codice ASCII di 5 Pagina 61

62 Codice ASCII È un codice a 8 bit, del quale però il codice base copre solo le prime 128 combinazioni (ASCII standard) 33 di questi 128 caratteri sono non stampabili È tuttora il codice più diffuso È stato pensato per la lingua inglese Non copre caratteri accentati, segni dicroici, ecc. Le estensioni a 256 bit non sono univoche Essendo un codice ad 8 bit a ciascun carattere è associato un numerale esadecimale di due cifre, che rappresentano gli 8 bit ESEMPIO Il codice HEX per il carattere G è 47 Il codice binario per G è Il codice decimale per G è 71 Pagina 62

63 Codice ASCII (Hex 0-1F) Pagina 63

64 Codice ASCII (Hex 20-7F) Pagina 64

65 Conversioni intero - carattere La conversione da char a int corrisponde a calcolare il codice ASCII del carattere La conversione da int a char produce il carattere il cui codice ASCII corrisponde al valore della variabile intera ESEMPI char c; int i; c = 'A'; c contiene il carattere A i = (int)c; i vale 65, il codice ASCII di A c = '5'; c contiene il carattere 5 i = (int)c i vale 53, il codice ASCII di 5 i = (int)c-(int)'0'; i vale 5=53-48 (codice di 0) c = (char)i; c = (codice ASCII = 5) Pagina 65

66 Domande Vero/Falso 1 char c = 48; 2 int i = 2; 3 printf("%c\n", c); 4 printf("%d\n", i); 5 printf("%d\n", c); 6 printf("%c %d\n", c, c + '2'); 7 printf("%d\n", '2' + c); Sapendo che il codice ASCII di 0 è 48 e che il codice ASCII di 2 è 50, rispondere con vero o falso alle seguenti affermazioni 1. La riga 3 stampa 0 2. La riga 4 stampa La riga 5 stampa La riga 6 stampa La riga 7 stampa 2 Pagina 66

67 Esercizio Esercizio 2.6 Si scriva un programma C in grado di visualizzare tutte le codifiche ASCII corrispondenti alle lettere del proprio nome. Pagina 67

68 Soluzione: Erika #include <stdio.h> int { } main() char c = 'E'; printf("%c corrisponde a %d\n", c, c); c = 'r'; printf("%c corrisponde a %d\n", c, c); c = 'i'; printf("%c corrisponde a %d\n", c, c); c = 'k'; printf("%c corrisponde a %d\n", c, c); c = 'a'; printf("%c corrisponde a %d\n", c, c); return 0; Pagina 68

69 Interi senza segno Per tutti i tipi interi, int, short e long è possibile aggiungere la clausola unsigned per indicare che si vogliono rappresentare interi senza segno In questo caso gli interi vengono rappresentati come binari naturali, invece che in complemento a 2 o in eccesso I corrispondenti intervalli di rappresentazione raddoppiano ESEMPI unsigned int i; unsigned short int k; signed long m; La clausola signed e prevista ma non usata essendo il default Pagina 69

70 Esempio: signed/unsigned #include <stdio.h> int main() { int x; unsigned int u; x = ; u = x; printf("%d %u\n", x, u); x = ; u = x; printf("%d %u\n", x, u); return 0; } Valori stampati Pagina 70

71 Esercizi Esercizio 2.7 Scrivere un programma che legga un importo in Euro x e restituisca il corrispondente importo in Dollari. Esercizio 2.8 Scrivere un programma che legga da tastiera due numeri interi e stampi su schermo: la loro media aritmetica (la loro somma divisa per 2) la loro media geometrica (la radice quadrata del loro prodotto) Pagina 71

72 Domande Vero/Falso (soluzione) 1 char c = 48; 2 int i = 2; 3 printf("%c\n", c); 4 printf("%d\n", i); 5 printf("%d\n", c); 6 printf("%c %d\n", c, c + '2'); 7 printf("%d\n", '2' + c); Sapendo che il codice ASCII di 0 è 48 e che il codice ASCII di 2 è 50, rispondere con vero o falso alle seguenti affermazioni 1. La riga 3 stampa 0 VERO 2. La riga 4 stampa 50 FALSO stampa 2 3. La riga 5 stampa 48 VERO 4. La riga 6 stampa FALSO stampa 0 98 (48+50) 5. La riga 7 stampa 2 FALSO stampa 98 (50+48) Pagina 72

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti di

Dettagli

Tipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Tipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Tipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Tipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C - sezione dichiarativa: costanti e variabili Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente

Dettagli

Codifica dei Tipi di Dati in Linguaggio C

Codifica dei Tipi di Dati in Linguaggio C Codifica dei Tipi di Dati in Linguaggio C In questa dispensa verrà illustrato come vengono codificati i tipi semplici del linguaggio C. In particolare considereremo i seguenti tipi di dato: il tipo intero

Dettagli

Laboratorio di informatica Ingegneria meccanica

Laboratorio di informatica Ingegneria meccanica Interi in complemento a 2 () Laboratorio di informatica Ingegneria meccanica Lezione 5 29 ottobre 2007 Con N bit sono rappresentabili tutti gli interi nell'intervallo [-2^(N-), 2^(N-)-] Esempio: 6 bit,

Dettagli

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi MASTER Information Technology Excellence Road (I.T.E.R.) Programmare in C Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di Dati Valori Un insieme

Dettagli

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola. Tipi di dato Le variabili in C KP Cap.3 pp.95-129 Cap.5 pp.190-193 DD Cap. 9 pp.352-355 Abbiamo già parlato delle variabili, ed abbiamo fin ora usato il tipo int, ma abbiamo molte altre possibiltà I tipi

Dettagli

Variabili. Tipi di dati di base. Variabili. Variabili

Variabili. Tipi di dati di base. Variabili. Variabili Variabili 2 Tipi di dati di base Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Porzioni di memoria RAM usate per mantenere dati variabili nel tempo La definizione di una variabile riserva

Dettagli

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011 Tipi di dato, memoria e conversioni Alessandra Giordani agiordani@disi.unitn.it Lunedì 7 maggio 2011 http://disi.unitn.it/~agiordani/ Il linguaggio C è esplicitamente tipato: occorre esplicitamente associare

Dettagli

Struttura dei programmi C

Struttura dei programmi C Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte

Dettagli

Conversioni fra Tipi di Dati. Luca Abeni

Conversioni fra Tipi di Dati. Luca Abeni Conversioni fra Tipi di Dati Luca Abeni Tipi di Dato e Conversioni In C, ogni variabile è caratterizzata da un tipo I valori che la variabile può assumere dipendono dal tipo È possibile mescolare variabili

Dettagli

Corso di Fondamenti di Programmazione canale E-O. Tipi di dato. Un esempio

Corso di Fondamenti di Programmazione canale E-O. Tipi di dato. Un esempio Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Le variabili in C KP Cap. 3, pp. 95-129 Cap. 5, pp. 190-193 DD Cap. 9, pp.352-355 Tipi di dato Abbiamo già parlato delle variabili, ed

Dettagli

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010 Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi

Dettagli

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli

Costanti e Variabili

Costanti e Variabili Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin Linguaggio C Tipi predefiniti Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Il concetto di tipo (reprise) Nome che indica

Dettagli

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi

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

Tipi di dato semplici

Tipi di dato semplici Tipi di dato semplici Perché dichiarare una variabile? 2 Una variabile rappresenta uno spazio di memoria centrale Prima dell esecuzione del programma deve essere chiaro quanto spazio serve al programma

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento Linguaggio C Gli Operatori Gli Operatori Gli operatori sono simboli (sia singoli caratteri che loro combinazioni) specificano come devono essere manipolati gli operandi dell espressione Operatori aritmetici

Dettagli

Corso sul linguaggio C Modulo Tipi di dato

Corso sul linguaggio C Modulo Tipi di dato Corso sul linguaggio C Modulo 1 1.3 - Tipi di dato 1 Prerequisiti Concetto di espressione Cenni sulla struttura del calcolatore 2 1 Introduzione In questa lezione si esaminano i tipi di dato. I tipi di

Dettagli

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 LA CODIFICA DELL INFORMAZIONE Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 Codifica dati e istruzioni Per scrivere un programma è necessario rappresentare istruzioni

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Tipo carattere. Campo di variabilità. Intervallo finito. Tipo. Dimensione (byte) char

Tipo carattere. Campo di variabilità. Intervallo finito. Tipo. Dimensione (byte) char Tipo carattere Finora abbiamo lavorato con valori numerici. I numeri costituiscono molta parte del lavoro dei computer, ma non tutta. I computer sono macchine per il trattamento dell informazione e l informazione

Dettagli

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio

Dettagli

Variabili, tipi, espressioni in C. Emilio Di Giacomo

Variabili, tipi, espressioni in C. Emilio Di Giacomo Variabili, tipi, espressioni in C Emilio Di Giacomo Richiami generali tipo di dato: specifico dominio di valori variabile: "contenitore" che può memorizzare valori di uno specifico tipo di dato, detto

Dettagli

Somma di numeri binari

Somma di numeri binari Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di

Dettagli

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Sistema C e organizzazione del codice Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Un programma C è costituito da un insieme

Dettagli

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII. Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned

Dettagli

Sintassi: Per la dichiarazione di variabili dei tipi fondamentali:

Sintassi: Per la dichiarazione di variabili dei tipi fondamentali: Sintassi: Per la dichiarazione di variabili dei tipi fondamentali: declaration ::= type declarator list ; declarator list ::= declarator {, declarator} opt declarator ::= identif ier identif ier = initializer

Dettagli

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Tipi e Valori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - Tipi e Valori 2 Ringraziamenti prof. Mirko Viroli,

Dettagli

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere

Dettagli

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO 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

Introduzione al linguaggio C

Introduzione al linguaggio C Introduzione al linguaggio C Abbiamo già visto come un programma non sia altro che un algoritmo codificato in un linguaggio di programmazione. Problema: quale linguaggio scegliere per la codifica di un

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione G. Mecca M. Samela Università della Basilicata Elementi di Base >> Sommario Sommario Introduzione Istruzioni

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche di un linguaggio ad alto livello Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono

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

Dettagli

Tipi di dato in C. Ogni variabile in C ha associato un tipo, questo permette di:

Tipi di dato in C. Ogni variabile in C ha associato un tipo, questo permette di: Tipi di dato Tipi di dato in C Ogni variabile in C ha associato un tipo, questo permette di: Riservare memoria per la codifica dei valori che può assumere Rilevare errori legati all uso di operatori non

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=

Dettagli

Tipi di dato primitivi

Tipi di dato primitivi Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1 Valori logici (il caso

Dettagli

La programmazione nel linguaggio C

La programmazione nel linguaggio C 3 La programmazione nel linguaggio C 3.0 La programmazione nel linguaggio C c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 3.0 0 Introduzione ai programmi

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Ingegneria Meccanica Lezione 3, 8 ottobre 2007 versione 9 ottobre 2007 Renato Menicocci Interi in complemento a 2 (I) Con N bit

Dettagli

I CARATTERI E LE STRINGHE

I CARATTERI E LE STRINGHE I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard

Dettagli

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a Puntatori in C Puntatori Variabili tradizionali indirizzo int a = 5; A00E... Proprietà della variabile a: nome: a A010 A012 5 tipo: int A014 valore: 5 indirizzo: A010 Finora abbiamo usato solo le prime

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Tipi interi lo standard (1)

Tipi interi lo standard (1) Tipi interi lo standard (1) Lo standard C lascia al compilatore la decisione di quanti bit assegnare a ogni tipo (char, short int, int, long int). Quello che è sempre garantito è: (signed) char può esprimere

Dettagli

Input/Output di numeri

Input/Output di numeri Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include

Dettagli

Variabili e Istruzioni

Variabili e Istruzioni Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome

Dettagli

Il linguaggio C. Caratteristiche generali

Il linguaggio C. Caratteristiche generali Il linguaggio C Caratteristiche generali Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari Input/Output Lettura e scrittura Caratteri e Stringhe: Terminale e file Input/output console file caratteri stringhe formattato ascii binari Linguaggio ANSI C Input/Output - 1 La libreria standard del

Dettagli

Gli Operatori. Università degli Studi di Brescia

Gli Operatori. Università degli Studi di Brescia Linguaggio C Gli Operatori 1 Gli operatori! Costruiscono le espressioni del C! Specificano come devono essere manipolati gli operandi dell espressione! Il C definisce una moltitudine di operatori, quali

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

La codifica binaria. Informatica B. Daniele Loiacono

La codifica binaria. Informatica B. Daniele Loiacono La codifica binaria Informatica B Introduzione Il calcolatore usa internamente una codifica binaria ( e ) per rappresentare: i dati da elaborare le istruzioni dei programmi eseguibili Fondamenti di codifica

Dettagli

<programma> ::= {<unità-di-traduzione>} <main> {<unità-di-traduzione>}

<programma> ::= {<unità-di-traduzione>} <main> {<unità-di-traduzione>} STRUTTURA DI UN PROGRAMMA C In prima battuta, la struttura di un programma C è definita nel modo seguente: ::= {} {} Intuitivamente un programma

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

Rappresentazione dell Informazione

Rappresentazione dell Informazione Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo

Dettagli

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base Cambiamenti di base Tecniche Informatiche di Base TIB 1 Il sistema posizionale decimale L idea del sistema posizionale: ogni cifra ha un peso Esempio: 132 = 100 + 30 + 2 = 1 10 2 + 3 10 1 + 2 10 0 Un numero

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

IL LINGUAGGIO C TIPI DI DATO

IL LINGUAGGIO C TIPI DI DATO IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati, detti tipi primitivi dominio dei

Dettagli

Output formattato Le quattro operazioni Tipi, costanti, variabili Over & Under Libreria Prog. Programmazione 1. Lezione 2

Output formattato Le quattro operazioni Tipi, costanti, variabili Over & Under Libreria Prog. Programmazione 1. Lezione 2 Programmazione 1 Lezione 2 Vincenzo Marra vincenzo.marra@unimi.it Dipartimento di Matematica Federigo Enriques Università degli Studi di Milano 8 marzo 2017 La funzione printf della libreria standard La

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Verso i puntatori: Cosa è una variabile?

Verso i puntatori: Cosa è una variabile? Verso i puntatori: Cosa è una variabile? Quando si dichiara una variabile, ad es. int a; si rende noto il nome e il tipo della variabile. Il compilatore alloca l opportuno numero di byte di memoria per

Dettagli

Espressioni ed operatori in C

Espressioni ed operatori in C Espressioni ed operatori in C Espressioni Il C è un linguaggio basato su espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione Una espressione può essere

Dettagli

Linguaggio C: Espressioni

Linguaggio C: Espressioni Linguaggio C: Espressioni Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Ringraziamenti prof. Mirko Viroli, Università

Dettagli

Tipi di dato. Funzioni. Il sistema dei tipi C. Tipi di dato. Quanti bit? I tipi interi in C

Tipi di dato. Funzioni. Il sistema dei tipi C. Tipi di dato. Quanti bit? I tipi interi in C I tipi scalari in C Input/output dei tipi scalari Conversioni di tipo Funzioni 5 Il sistema dei tipi C di dato Tipi Scalari Tipi Strutturati void Tipi eri Tipi reali Enumerazioni Vettori Strutture Union

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I puntatori Variabili e parametri Parametri formali

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Dipartimento di Informatica Università di Pisa Corso Informatica I - 2012/2013 Outline Introduzione alla compilazione C 1 Introduzione alla compilazione C 2 Ricapitolando...

Dettagli

Dichiarazione di variabili e tipi di dati

Dichiarazione di variabili e tipi di dati Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Dichiarazione di variabili e tipi di dati Pietro Di Lena - pietro.dilena@unibo.it l o n g time, ago ; / i n a g a l a x y f

Dettagli

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle

Dettagli

Le parole chiave char, int, float, double, ed enum descrivono i. che modificano i tipi base

Le parole chiave char, int, float, double, ed enum descrivono i. che modificano i tipi base Il linguaggio C I tipi di dati scalari Il casting Le dichiarazioni di tipo I puntatori I tipi di dati scalari 1 2 I tipi di dati scalari 1 Una delle caratteristiche più importanti dei linguaggi di alto

Dettagli

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura tt fisica i di ogni elaboratore è intrinsecamente capace di trattare vari domini i di dati, detti tipi i primitivi iti

Dettagli

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono La codifica binaria Fondamenti di Informatica Introduzione q Il calcolatore usa internamente una codifica binaria (0 e 1) per rappresentare: i dati da elaborare (numeri, testi, immagini, suoni, ) le istruzioni

Dettagli

La codifica binaria. Informatica B. Daniele Loiacono

La codifica binaria. Informatica B. Daniele Loiacono La codifica binaria Informatica B Introduzione Il calcolatore usa internamente una codifica binaria (0 e 1) per rappresentare: i dati da elaborare (numeri, testi, immagini, suoni, ) le istruzioni dei programmi

Dettagli

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi Basi della programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C INFORMATICA 1 Lezione 3 (Introduzione al Linguaggio C, Introduzione ai Tipi di dato, Cenni alla codifica binaria) Introduzione al Linguaggio C 1 Passi fondamentali del C Definito nel 1972 (AT&T Bell Labs)

Dettagli

N= a i b i. Numeri e numerali. Sistemi di Numerazione Binaria. Sistemi posizionali. Numeri a precisione finita

N= a i b i. Numeri e numerali. Sistemi di Numerazione Binaria. Sistemi posizionali. Numeri a precisione finita Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Sistemi di Numerazione Binaria Lo stesso numero è rappresentato da

Dettagli

Introduzione al linguaggio C

Introduzione al linguaggio C Introduzione al linguaggio C Abbiamo già visto come un programma non sia altro che un algoritmo codificato in un linguaggio di programmazione. Problema: quale linguaggio scegliere per la codifica di un

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

Codifica di informazioni numeriche

Codifica di informazioni numeriche Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Codifica di informazioni numeriche Fondamenti di Informatica - Ingegneria Elettronica Leonardo Querzoni querzoni@dis.uniroma1.it

Dettagli

Riprendiamo l esercizio calcolatrice

Riprendiamo l esercizio calcolatrice Riprendiamo l esercizio calcolatrice Scrivere un programma calcolatrice che legga da tastiera due variabili intere a e b, poi Stampi un menu con un valore numerico associato a quattro operazioni possibili:

Dettagli

Lab 02 Tipi semplici in C

Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2009/2010 Lab 02 Tipi semplici in C Lab02 1 Obiettivo dell esercitazione Acquistare

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina)

Dettagli

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti Funzioni di I/O per numeri 2 Input e output di valori numerici Ver. 2.4.2 2012 - Claudio Fornaro - Corso di programmazione in C Per utilizzare le funzioni di Input/Output bisogna includere il file di intestazione

Dettagli

1 PANORAMICA SUL LINGUAGGIO C

1 PANORAMICA SUL LINGUAGGIO C 1 PANORAMICA SUL LINGUAGGIO C 1.1 Le origini del linguaggio C Il C fu inventato e implementato da Dennis Ritchie negli anni 70 su una macchina che impiegava il sistema operativo Unix. Il C è il risultato

Dettagli

Rappresentazione binaria delle variabili (int e char)

Rappresentazione binaria delle variabili (int e char) Rappresentazione binaria delle variabili (int e char) int e char son i due tipi utilizzati dal linguaggio C per la rappresentazione di valori interi; ai valori delle variabili del primo tipo sono assegnati

Dettagli

La "macchina" da calcolo

La macchina da calcolo La "macchina" da calcolo Abbiamo detto che gli algoritmi devono essere scritti in un linguaggio "comprensibile all'esecutore" Se il nostro esecutore è il "calcolatore", questo che linguaggio capisce? che

Dettagli