La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione Procedurale

Presentazioni simili


Presentazione sul tema: "Programmazione Procedurale"— Transcript della presentazione:

1 Programmazione Procedurale
09/12/2019 Programmazione Procedurale Elementi di Base Dettagli e Approfondimenti versione 3.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca – Università della Basilicata –

2 Sommario Approfondimenti sui Tipi di Dato Espressioni
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Sommario Sommario Approfondimenti sui Tipi di Dato Altri Tipi di Dato Espressioni G. Mecca - Programmazione Procedurale

3 Approfondimenti sui Tipi di Dato
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Approfondimenti sui Tipi di Dato Finora ci siamo concentrati solo sui tipi di dato fondamentali del C++ Ma esistono altri tipi di dato le regole di compatibilità sono più complesse di quelle che abbiamo descritto G. Mecca - Programmazione Procedurale

4 Altri Tipi di Dato Esistono altri tipi Intero corto: short int
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Altri Tipi di Dato Esistono altri tipi Intero corto: short int esempio: short int raggio; 16 bit di memoria, valori (-32768, ) Intero lungo: long int esempio: long int risultato; tipicamente: bit int ≤ bit long int G. Mecca - Programmazione Procedurale

5 Altri Tipi di Dato Intero con segno/senza segno
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Altri Tipi di Dato Intero con segno/senza segno signed int risultato; signed short int risultato; unsigned int risultato; unsigned long int risultato; Reali lunghi: long double esempio: long double circonferenza; tipicamente: #bit double < #bit long double G. Mecca - Programmazione Procedurale

6 Altri Tipi di Dato Caratteri con segno/senza segno Inoltre
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Altri Tipi di Dato Caratteri con segno/senza segno char car1; (-127,127) unsigned char car2; (0,255) Inoltre esiste un tipo per rappresentare caratteri al di fuori del set di caratteri ASCII standard tipo wchar_t (“wide char type”) normalmente 16 bit per la rappresentazione dipende dal compilatore G. Mecca - Programmazione Procedurale

7 Altri Tipi di Dato Attenzione Esempio
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Altri Tipi di Dato Attenzione a differenza di quanto affermato per semplicità in precedenza, lo spazio assegnato a ciascun tipo di dato non è fisso dipende dal compilatore e dal processore Esempio in alcune macchine int può essere di 32 bit in altre macchine di 16 bit G. Mecca - Programmazione Procedurale

8 Altri Tipi di Dato Operatore sizeof Sintassi
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Altri Tipi di Dato Operatore sizeof operatore fornito dal linguaggio per scoprire la dimensione esatta attribuita dal processore ad una variabile o un tipo di dato Sintassi sizeof(<tipo>) sizeof(<variabile>) G. Mecca - Programmazione Procedurale

9 Altri Tipi di Dato Esempi int i;
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Altri Tipi di Dato Esempi int i; cout << "i : " << sizeof(i); //4 cout << "short int: " << sizeof(short int); //2 cout << "int : " << sizeof(int); //4 cout << "long int: " << sizeof(long int); //4 cout << "char : " << sizeof(char); //1 cout << "float: " << sizeof(float); //4 cout << "double: " << sizeof(double); //8 cout << "long double:“<< sizeof(long double);//10 G. Mecca - Programmazione Procedurale

10 Una Classificazione Complessiva
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Una Classificazione Complessiva Tipi di base del C++ tipi “enumerabili” tipo booleano bool tipi carattere char unsigned char wchar_t tipi interi short int long unsigned short unsigned int unsigned long tipi in virgola mobile float double long double G. Mecca - Programmazione Procedurale

11 Compatibilità tra Tipi
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Compatibilità tra Tipi Le regole complete di compatibilità tra tipi sono più complesse di quanto visto finora tutti i tipi di base sono compatibili tra loro In particolare il tipo char è considerato un tipo numerico (valore di un carattere pari al codice ASCII) il tipo bool è considerato un tipo numerico (valore pari a 0 oppure 1); qualsiasi valore diverso da 0 è considerato true G. Mecca - Programmazione Procedurale

12 Compatibilità tra Tipi
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Compatibilità tra Tipi Esempio: int i; bool b; char c; c = ‘a’; i = c; // assegno un char ad un int b = i; // assegno un int ad un bool cout << c << “ “ << i << “ “ << b; a G. Mecca - Programmazione Procedurale

13 Compatibilità tra Tipi
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Compatibilità tra Tipi Gerarchia di Tipi Numerici tipo booleano: bool (tipo meno generale) tipi carattere: char, unsigned char tipi interi: short int, int, long int (tutti signed e unsigned) tipi reali: float, double, long double (tipi più generali) Nelle espressioni sono compatibili troncamento e ampliamento G. Mecca - Programmazione Procedurale

14 Compatibilità tra Tipi
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Compatibilità tra Tipi Attenzione queste sono da considerarsi idiosincrasie del C/C++ (non presenti in FORTRAN) è opportuno evitare di utilizzare queste funzionalità (i caratteri sono diversi dagli interi) è importante conoscerle perché a volte nascondono errori (es: assegnazioni errate) G. Mecca - Programmazione Procedurale

15 Espressioni Un altro esempio di stranezza del C/C++ In particolare
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Espressioni Espressioni Un altro esempio di stranezza del C/C++ in C++ tutte le istruzioni sono in effetti considerate espressioni ovvero regole per calcolare un valore In particolare le istruzioni di assegnazione sono complessivamente anche espressioni le istruzioni di lettura e stampa sono complessivamente anche espressioni G. Mecca - Programmazione Procedurale

16 Assegnazioni Operatore di assegnazione (=) Esempio
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Espressioni Assegnazioni Operatore di assegnazione (=) ha una duplice funzione assegna il valore a destra alla variabile a sinistra restituisce il valore assegnato Esempio int a; a = 1; // assegna 1 ad a e restituisce 1 E’ possibile includere le assegnazioni in espressioni più complesse G. Mecca - Programmazione Procedurale

17 Assegnazioni Esempio n.1 equivalente a; Esempio n.2 int a, b, c;
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Espressioni Assegnazioni Esempio n.1 int a, b, c; c = (a = 5) + (b = 7); equivalente a; a = 5; b = 7; c = a + b; Esempio n.2 a = (b = (c = 0)); // equivalente a a=b=c=0; c = 0; b = 0; a = 0; G. Mecca - Programmazione Procedurale

18 Istruzioni di Lettura e Stampa
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Espressioni Istruzioni di Lettura e Stampa Operatore di Lettura (>>) ha una duplice funzione acquisisce il valore da assegnare alla var restituisce 1 se la lettura si è svolta correttamente, 0 se c’è stato un errore Anche in questo caso è possibile combinare le istruzioni di lettura e stampa in espressioni più complesse Esempio int a, b, c; cout << (cin >> a); // stampa 0 se c’è errore G. Mecca - Programmazione Procedurale

19 Espressioni Possono essere complesse Esempi
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Espressioni Espressioni Possono essere complesse Il C++ fornisce numerosi altri operatori le regole di precedenza sono intricate Esempi operatori “bit a bit”: &, |, ~ operatori di scorrimento: >>, << operatore condizionale: ? operatore “virgola”: , G. Mecca - Programmazione Procedurale

20 Espressioni Operatori unari con effetti collaterali
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Espressioni Espressioni Operatori unari con effetti collaterali possono essere postfissi o prefissi Operatore postfisso effetto collaterale dopo la valutazione es: a++ (valuta a e poi la incrementa) Operatore prefisso effetto collaterale prima della valutazione es: ++a (incrementa a e poi valuta) G. Mecca - Programmazione Procedurale

21 Espressioni Esempio 1 int i, j, k; i = 10; j = 20;
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Espressioni Espressioni prima viene valutata la sottoespressione a (valore 10) e poi la variabile viene incrementata Esempio 1 int i, j, k; i = 10; j = 20; k = i++ + j; // k vale 30 k = ++i + j; // k vale 31 prima viene incrementata la variabile a (valore 11) e poi viene valutata la sottoespressione G. Mecca - Programmazione Procedurale

22 Una Annotazione Importante
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Espressioni Una Annotazione Importante Attenzione è possibile programmare benissimo anche ignorando le stranezze descritte in questa lezione anzi, per molti versi si programma meglio se queste cose non vengono usate servono a rendere più compatto ma anche più incomprensibile il codice G. Mecca - Programmazione Procedurale

23 Riassumendo Approfondimenti sui Tipi di Dato Espressioni
09/12/2019 Elementi di Base: Dettagli e Approfondimenti >> Sommario Riassumendo Approfondimenti sui Tipi di Dato Altri Tipi di Dato Espressioni G. Mecca - Programmazione Procedurale

24 09/12/2019 Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. G. Mecca - Programmazione Procedurale


Scaricare ppt "Programmazione Procedurale"

Presentazioni simili


Annunci Google