La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

Presentazioni simili


Presentazione sul tema: "G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione."— Transcript della presentazione:

1 G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione 2.6 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

2 2 G. Mecca - Programmazione Procedurale in Linguaggio C++ Sommario m Ricapitolazione m ANSI C++ Compilatori in Ambiente Linux m Approfondimenti sui Tipi di Dato Altri Tipi di Dato m Operatore di Cast m Espressioni m Differenze con il C Elementi di Base: Dettagli e Approfondimenti >> Sommario

3 3 G. Mecca - Programmazione Procedurale in Linguaggio C++ Ricapitolazione m Elementi di Base nozioni sintattiche di base nozioni sulla dichiarazione dei dati nozioni sulle operazioni di base sui dati di un programma m In sintesi quello che serve per scrivere programmi che si comportano come una calcolatrice Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

4 4 G. Mecca - Programmazione Procedurale in Linguaggio C++ Nozioni Sintattiche di Base m Direttive per librerie di sistema e librerie dellutente #include #include (librerie di sistema) #include equazioniLib.h #include equazioniLib.h (librerie utente) m Commenti // questo è un commento linea singola // questo è un commento /* commento */ multilinea /* commento */ Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

5 5 G. Mecca - Programmazione Procedurale in Linguaggio C++ Nozioni Sintattiche di Base m Identificatori nomi degli oggetti di un programma (variabili, costanti, parametri, moduli) m Regole sintattiche sequenza di lettere/cifre/_ primo carattere: lettera o _ codice ASCII a 7 bit sensibile alle maiuscole escluse le parole chiave riservate (es: main) Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

6 6 G. Mecca - Programmazione Procedurale in Linguaggio C++ Dichiarazione dei Dati m Tipi di dato di base int: 32 bit in complemento a 2, da -2 miliardi a +2 miliardi circa float: 32 bit in v.m., da a circa double: 64 bit in v.m., da a ca. char: 8 bit, codice ASCII a 7 bit bool: 1 bit m Tipo string: classe di oggetti del C++ Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

7 7 G. Mecca - Programmazione Procedurale in Linguaggio C++ Dichiarazione dei Dati m Dichiarazioni di costante simbolica const = ; const float PIGRECO = ; es: const float PIGRECO = ; m Semantica spazio nella memoria del tipo specificato, non modificabile, contenente il valore m Vantaggi poter cambiare il valore intervenendo solo sulla dichiarazione Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

8 8 G. Mecca - Programmazione Procedurale in Linguaggio C++ Dichiarazione dei Dati m Dichiarazioni di variabili ;,,... ; int raggio; es: int raggio; float cerchio, circonf; es: float cerchio, circonf; m Semantica spazio nella memoria del tipo specificato modificabile liberamente nel corso del programma (lettura o assegnazione) Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

9 9 G. Mecca - Programmazione Procedurale in Linguaggio C++ Dichiarazione dei Dati m Attenzione subito dopo la dichiarazione il valore della variabile è casuale (indefinibile) è necessario inizializzare la variabile leggendone il valore da un flusso o con unistruzione di assegnazione m Esempio int raggio; cin >> raggio; int raggio; cin >> raggio; int raggio; raggio = 3; int raggio; raggio = 3; Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

10 10 G. Mecca - Programmazione Procedurale in Linguaggio C++ Dichiarazione dei Dati m In alternativa inizializzazione contestuale alla dichiarazione int raggio = 0; es: int raggio = 0; m Equivalente a due istruzioni int raggio; int raggio; raggio = 0; raggio = 0; Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

11 11 G. Mecca - Programmazione Procedurale in Linguaggio C++ Dichiarazione dei Dati m Attenzione (2) possibili errori di rappresentazione m Varie cause limitatezza dello spazio in memoria (trabocco) natura della rappresentazione in virgola mobile (arrotondamenti) Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

12 12 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzioni di Base sui Dati m Istruzioni di base istruzioni di assegnazione istruzioni di lettura e stampa m Istruzioni di assegnazione servono ad assegnare il risultato di un calcolo ad una variabile m Istruzioni di lettura e stampa servono ad acquisire e stampare i valori delle variabili Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

13 13 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzioni di Assegnazione m Sintassi = ; = ; m Semantica viene calcolato il valore dellespressione se il valore risultante è compatibile con il tipo della variabile, viene assegnato alla variabile (ovvero: il valore viene scritto nello spazio di memoria associato alla variabile) altrimenti si genera un errore Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

14 14 G. Mecca - Programmazione Procedurale in Linguaggio C++ Espressioni m Formule per il calcolo di un valore composte di operandi e operatori m Operandi costanti variabili m Operatori operatori predefiniti funzioni predefinite Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

15 15 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzioni di Lettura e Stampa m Basate sul concetto di flusso canale di comunicazione tra il processore ed un dispositivo di ingresso o di uscita m Standard input flusso standard di ingresso, proveniente dalla tastiera m Standard output flusso standard di uscita, diretto verso lo schermo Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

16 16 G. Mecca - Programmazione Procedurale in Linguaggio C++ Concetto di Flusso Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione Schermo Flusso di uscita File su disco Stampante File su disco Tastiera Processore Esegue le istruzioni del Programma Flusso di uscita Flusso di ingresso Standard Input Standard Output

17 17 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzioni di Stampa m Sintassi cout ; cout... ; espressione: costante, variabile, espr. complessa m Semantica viene calcolato il valore di ciascuna espressione il valore viene inserito nel flusso diretto allo schermo sotto forma di sequenza di caratteri Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

18 18 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzioni di Lettura m Sintassi cin >> ; m Semantica: input formattato appena nel flusso è presente almeno una riga, il processore analizza il flusso nellanalisi del flusso ignora eventuali spazi bianchi iniziali gli spazi bianchi vengono utilizzati anche come separatori tra i valori Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

19 19 G. Mecca - Programmazione Procedurale in Linguaggio C++ Lettura e Stampa da e verso File m ofstream flusso associato ad un file in cui si stampano dati ofstream flussoSuFile (fileDati.txt); es: ofstream flussoSuFile (fileDati.txt); m ifstream flusso associato ad un file da cui si leggono dei dati ifstream flussoDaFile (fileDati.txt); es: ifstream flussoDaFile (fileDati.txt); m Per utilizzarli è necessario specificare #include #include Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

20 20 G. Mecca - Programmazione Procedurale in Linguaggio C++ Domande ed Esercizi di Riepilogo Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

21 21 G. Mecca - Programmazione Procedurale in Linguaggio C++ ANSI C++ m Versione standard del C++ successiva alla prima introduzione m Prevede alcune varianti nella sintassi m Alcuni esempi cambiamenti nelle direttive di inclusione introduzione dei namespace cambiamenti nella struttura del programma principale Elementi di Base: Dettagli e Approfondimenti >> ANSI C++

22 22 G. Mecca - Programmazione Procedurale in Linguaggio C++ Elementi di Base: Dettagli e Approfondimenti >> ANSI C++ // Calcolo della superficie del cerchio #include #include using namespace std; int main() { const float pigreco=3.14; const float pigreco=3.14; int raggio; int raggio; float cerchio, circonf; float cerchio, circonf; cout << Immetti la lungh. del raggio << endl; cout << Immetti la lungh. del raggio << endl; cout << (deve essere un numero intero) << endl; cout << (deve essere un numero intero) << endl; cin >> raggio; cin >> raggio; cerchio = raggio*raggio*pigreco; cerchio = raggio*raggio*pigreco; circonf = 2*pigreco*raggio; circonf = 2*pigreco*raggio; cout << La circonferenza misura: << circonf << endl; cout << La circonferenza misura: << circonf << endl; cout << Il cerchio ha superficie: << cerchio << endl; cout << Il cerchio ha superficie: << cerchio << endl; return 0; return 0;} Un Semplice Programma in ANSI C++

23 23 G. Mecca - Programmazione Procedurale in Linguaggio C++ ANSI C++ m Le modifiche sono orientate prevalentemente alla programmazione a oggetti m Complicano la descrizione del linguaggio es: concetto di namespace m Nel seguito NON faremo riferimento al C++ ANSI Elementi di Base: Dettagli e Approfondimenti >> ANSI C++

24 24 G. Mecca - Programmazione Procedurale in Linguaggio C++ Compilatori in Ambiente Linux m Attenzione alcuni compilatori, però, richiedono necessariamente codice ANSI C++ m Esempio GCC (GNU C Compiler) compilatore storico per Linux – digerisce solo ANSI C++ m Utilizzo compilazione: g++.cpp esecuzione:./a.out Elementi di Base: Dettagli e Approfondimenti >> ANSI C++ >>

25 25 G. Mecca - Programmazione Procedurale in Linguaggio C++ Compilatori in Ambiente Linux m La particolarità di gcc è una collezione di compilatori m Compilatore FORTRAN g77 stesse modalità di funzionamento di gcc m Utilizzo compilazione: g77.for esecuzione:./a.out Elementi di Base: Dettagli e Approfondimenti >> ANSI C++ >>

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

27 27 G. Mecca - Programmazione Procedurale in Linguaggio C++ Altri Tipi di Dato m Esistono altri tipi m Intero corto: short int short int raggio; esempio: short int raggio; 16 bit di memoria, valori (-32768, ) m Intero lungo: long int long int risultato; esempio: long int risultato; tipicamente: bit int bit long int Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

28 28 G. Mecca - Programmazione Procedurale in Linguaggio C++ Altri Tipi di Dato m Intero con segno/senza segno signed int risultato; signed int risultato; signed short int risultato; signed short int risultato; unsigned int risultato; unsigned int risultato; unsigned long int risultato; unsigned long int risultato; m Reali lunghi: long double long double circonferenza; esempio: long double circonferenza; tipicamente: #bit double #bit long double Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

29 29 G. Mecca - Programmazione Procedurale in Linguaggio C++ Altri Tipi di Dato m Caratteri con segno/senza segno char car1; char car1; unsigned char car2; unsigned char car2; m Inoltre esiste un tipo per rappresentare caratteri al di fuori del set di caratteri ASCII standard wchar_t tipo wchar_t (wide char type) normalmente 16 bit per la rappresentazione dipende dal compilatore Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

30 30 G. Mecca - Programmazione Procedurale in Linguaggio C++ Altri Tipi di Dato m 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 m Esempio in alcune macchine int può essere di 32 bit in altre macchine di 16 bit Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

31 31 G. Mecca - Programmazione Procedurale in Linguaggio C++ Altri Tipi di Dato m Operatore sizeof operatore fornito dal linguaggio per scoprire la dimensione esatta attribuita dal processore ad una variabile o un tipo di dato m Sintassi sizeof( ) sizeof( ) Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

32 32 G. Mecca - Programmazione Procedurale in Linguaggio C++ Altri Tipi di Dato m 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 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

33 33 G. Mecca - Programmazione Procedurale in Linguaggio C++ Una Classificazione Complessiva Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi Tipi di base del C++ tipi enumerabili tipo booleanobool tipi caratterechar unsigned char tipi interishort int long unsigned short unsigned int unsigned long tipi in virgola mobile float double long double wchar_t

34 34 G. Mecca - Programmazione Procedurale in Linguaggio C++ Compatibilità tra Tipi m Le regole di compatibilità tra tipi sono più complesse di quanto visto finora tutti i tipi di base sono compatibili tra loro m 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 Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

35 35 G. Mecca - Programmazione Procedurale in Linguaggio C++ Compatibilità tra Tipi m 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; Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi a 97 1

36 36 G. Mecca - Programmazione Procedurale in Linguaggio C++ Compatibilità tra Tipi m 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) m Nelle espressioni sono compatibili troncamento e ampliamento Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

37 37 G. Mecca - Programmazione Procedurale in Linguaggio C++ Compatibilità tra Tipi m 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) Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

38 38 G. Mecca - Programmazione Procedurale in Linguaggio C++ Operatore di Cast m Riassumendo ogni dato trattato dal processore ha un tipo alcuni valori possono essere considerati di tipi diversi m Esempio: il numero 1 valore di tipo bool valore di tipo int valore di tipo float valore di tipo double Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast Importante

39 39 G. Mecca - Programmazione Procedurale in Linguaggio C++ Operatore di Cast m In questi casi il valore può essere soggetto a conversioni di tipo m Conversioni di tipo consistono nella trasformare la rappresentazione in memoria del valore che da quel momento è considerato di tipo diverso rispetto al suo tipo originale Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast

40 40 G. Mecca - Programmazione Procedurale in Linguaggio C++ Operatore di Cast m Normalmente le conversioni di tipo vengono effettuate automaticamente dal processore ma possono essere richieste esplicitamente dal programmatore m Operazioni di Cast operazione attraverso cui il programmatore chiede esplicitamente di trasformare la rappresentazione e il tipo di un valore Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast

41 41 G. Mecca - Programmazione Procedurale in Linguaggio C++ Operatore di Cast m Operatori di Cast loperazione viene realizzata attraverso opportuni operatori unari un operatore per ciascun tipo m Esempio float x; bool b; x = (float) 3; b = (bool) x; es: float x; bool b; x = (float) 3; b = (bool) x; Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast dato di tipo int, valore 3 dato di tipo float, valore 3.0 dato di tipo bool, valore 1

42 42 G. Mecca - Programmazione Procedurale in Linguaggio C++ Operatore di Cast m Sintassi ( ) ( ) m Semantica supponiamo che sia di tipo il processore trasforma la rappresentazione in memoria del nella corrispond. rappresentazione del specificato da quel momento è considerato di tipo Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast

43 43 G. Mecca - Programmazione Procedurale in Linguaggio C++ Operatore di Cast m Utilizzo consentono di controllare le trasformazioni di tipo nelle espressioni m Esempio: Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast float media; int sommaVoti, numEsami; sommaVoti = 64; numEsami = 3; media = (float)sommaVoti/numEsami; cout << media; media = sommaVoti/numEsami; cout << media;

44 44 G. Mecca - Programmazione Procedurale in Linguaggio C++ Operatore di Cast m Attenzione loperatore ha priorità molto alta attenzione allordine di applicazione Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast media = (float)sommaVoti/numEsami; cout << media; media = ((float)sommaVoti)/numEsami; cout << media; media = (float)(sommaVoti/numEsami); cout << media; 21

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

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

47 47 G. Mecca - Programmazione Procedurale in Linguaggio C++ Assegnazioni m Esempio n.1 int a, b, c; a = (a = 5) + (b = 7); equivalente a; a = 5; b = 7; c = a + b; a = 5; b = 7; c = a + b; m Esempio n.2 int a, b, c; a = (b = (c = 0)); // equivalente a a=b=c=0; equivalente a; c = 0; b = 0; a = 0; c = 0; b = 0; a = 0; Elementi di Base: Dettagli e Approfondimenti >> Espressioni

48 48 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzioni di Lettura e Stampa m 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 m Anche in questo caso è possibile combinare le istruzioni di lettura e stampa in espressioni più complesse m Esempio int a, b, c; cout > a); // stampa 0 se cè errore Elementi di Base: Dettagli e Approfondimenti >> Espressioni

49 49 G. Mecca - Programmazione Procedurale in Linguaggio C++ Espressioni m Possono essere complesse Il C++ fornisce numerosi altri operatori le regole di precedenza sono intricate m Esempi operatori bit a bit: &, |, ~ operatori di scorrimento: >>, << operatore condizionale: ? operatore virgola:, Elementi di Base: Dettagli e Approfondimenti >> Espressioni

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

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

52 52 G. Mecca - Programmazione Procedurale in Linguaggio C++ Una Annotazione Importante m 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 Elementi di Base: Dettagli e Approfondimenti >> Espressioni

53 53 G. Mecca - Programmazione Procedurale in Linguaggio C++ Differenze con il C m In generale il C è molto simile al clean C che abbiamo approfondito per alcuni aspetti è più spartano e questo lo rende in molti casi più complesso come linguaggio di programmazione m Nel seguito lelenco delle principali differenze Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

54 54 G. Mecca - Programmazione Procedurale in Linguaggio C++ Differenze con il C m Attenzione imparare a scrivere programmi complessi in C NON è tra gli obiettivi del corso si tratta di un livello secondario le differenze vengono illustrate a scopo di completezza, e per preparare gli studenti che dovessero successivamente programmare in C ad ulteriori approfondimenti Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

55 55 G. Mecca - Programmazione Procedurale in Linguaggio C++ Differenze con il C m Tipo di ritorno del main normalmente int (non void, come ANSI C++) m Libreria di input/output #include #include m Definizione di costanti esiste la parola chiave const, ma ha una semantica leggermente diversa #define PIGRECO 3.14 normalmente si utilizza la direttiva #define es: #define PIGRECO 3.14 Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

56 56 G. Mecca - Programmazione Procedurale in Linguaggio C++ Differenze con il C m Istruzioni di lettura e di stampa sono basate sui flussi standard di ingresso e uscita come in tutti i linguaggi ma ci sono differenze sintattiche m Differenza principale non esistono cout e cin (che sono oggetti) istruzione printf per scrivere dati istruzione scanf per leggere dati Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

57 57 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzione printf m Sintassi printf( ); printf( ); printf(, argomenti); printf(, argomenti); m Stringa formato stringa che descrive la natura degli argomenti successivi m Esempi printf(Immetti il valore \n); printf(Immetti il valore \n); printf(Il cerchio vale: %d, cerchio); printf(Il cerchio vale: %d, cerchio); Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

58 58 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzione printf m Descrittori di formato %d: numero intero %f: numero reale %c: carattere singolo %s: sequenza di caratteri (stringa) m Attenzione in C non esiste il tipo stringa le stringhe si rappresentano come array di caratteri Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

59 59 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzione scanf m Sintassi scanf(, &variabile); scanf(, &variabile); m Stringa formato analoga a quella della printf m Esempi scanf(%d, &raggio); scanf(%d, &raggio); m Nota è indispensabile la & prima della variabile Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C ATTENZIONE: la mancanza della & è una fonte di errore molto frequente

60 60 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzione scanf m Infatti scanf è una procedura il secondo argomento deve essere modificato attraverso il corrispond. param. m Ma in C esistono solo parametri standard per simulare la semantica dei parametri per riferimento si utilizzano i puntatori Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

61 61 G. Mecca - Programmazione Procedurale in Linguaggio C++ Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C // Calcolo della superficie del cerchio #include #include #define PIGRECO 3.14 int main() { // Dichiarazioni // Dichiarazioni int raggio; int raggio; float cerchio, circonf; float cerchio, circonf; // Operazioni // Operazioni printf("Immetti la lungh. del raggio\n"); printf("Immetti la lungh. del raggio\n"); printf("(deve essere un numero intero)\n"); printf("(deve essere un numero intero)\n"); scanf("%d", &raggio); scanf("%d", &raggio); cerchio = raggio * raggio * PIGRECO; cerchio = raggio * raggio * PIGRECO; circonf = 2 * PIGRECO * raggio; circonf = 2 * PIGRECO * raggio; printf("La circonferenza misura: %f \n", circonf); printf("La circonferenza misura: %f \n", circonf); printf("Il cerchio ha superficie: %f \n", cerchio); printf("Il cerchio ha superficie: %f \n", cerchio); return 0; return 0;} Un Semplice Programma in C >>

62 62 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzione scanf m Attenzione la scanf esegue un input formattato esistono ulteriori procedure per effettuare linput non formattato nel caso di stringhe m Le stringhe in C non esiste il tipo string una stringa è un array di caratteri terminato in maniera particolare (con un carattere \0) Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

63 63 G. Mecca - Programmazione Procedurale in Linguaggio C++ Esempio #include #include int main() { char targa[8]; char targa[8]; char modello[20]; char modello[20]; printf("Immetti la targa : "); printf("Immetti la targa : "); scanf("%s", &targa); // input formattato scanf("%s", &targa); // input formattato getchar(); // equivalente della ignore getchar(); // equivalente della ignore printf("Immetti il modello : "); printf("Immetti il modello : "); gets(modello); // input non formattato gets(modello); // input non formattato printf("Dati dell'automobile : \n"); printf("Dati dell'automobile : \n"); printf("Targa : %s\n", targa); printf("Targa : %s\n", targa); printf("Modello : %s\n", modello); printf("Modello : %s\n", modello); return 0; return 0;} Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C NOTA: scanf e gets aggiungono automaticamente il carattere \0 al termine della stringa letta

64 64 G. Mecca - Programmazione Procedurale in Linguaggio C++ Istruzione scanf m Inoltre non è possibile effettuare il confronto tra stringhe utilizzando == è necessario utilizzare la funzione strcmp strcmp(s1, s2) ritorna 0 se le due stringhe sono uguali, altrimenti un valore diverso da 0 fa parte (come tutte le principali funzioni sulle stringhe) della libreria string.h Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

65 65 G. Mecca - Programmazione Procedurale in Linguaggio C++ Esempio #include #include int main() { char targa[8]; char targa[8]; printf("Immetti la targa : "); printf("Immetti la targa : "); scanf("%s", &targa); // input formattato scanf("%s", &targa); // input formattato if (strcmp(targa, "ab762de") == 0) { if (strcmp(targa, "ab762de") == 0) { printf("Auto corretta\n"); printf("Auto corretta\n"); } return 0; return 0;} Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

66 66 G. Mecca - Programmazione Procedurale in Linguaggio C++ Riassumendo m Ricapitolazione m ANSI C++ Compilatori in Ambiente Linux m Approfondimenti sui Tipi di Dato Altri Tipi di Dato m Operatore di Cast m Espressioni m Differenze con il C Elementi di Base: Dettagli e Approfondimenti >> Sommario

67 67 G. Mecca - Programmazione Procedurale in Linguaggio C++ Termini della Licenza m 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. Termini della Licenza m 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 allindirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.


Scaricare ppt "G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione."

Presentazioni simili


Annunci Google