Fondamenti di programmazione in C++ - Algoritmi, strutture dati e oggetti Luis Joyanes Aguilar Copyright © 2008 – The McGraw-Hill Companies srl Codice degli esempi e degli esercizi risolti Capitolo 2 Pag. 55 Esempio Uso della direttiva using e riconoscimento dell’identificatore cout. #include <iostream> using namespace std; int main() { cout << "Ciao mondo C++\n"; return 0; } Se non si utilizza la direttiva using bisognerà far precedere il nome std a parecchi elementi del programma. Esempio Programma senza direttiva using namespace std; #include <iostream> int main() { std::cout << "Ciao mondo, C++\n"; return 0; } Pag. 61 Esercizio risolto Supponiamo di dover far stampare molte volte un nome e un indirizzo da un programma C++. Anziché scrivere tante volte quelle istruzioni di stampa, sarà possibile scriverle una sola volta in un file (ad esempio mioindir.cpp) e poi includere quel file in ogni punto del programma in cui bisogna far stampare quel nome e quell’indirizzo. Per esempio, digitare le seguenti righe e salvarle in un file denominato mioindir.cpp. // file mioindir.cpp cout << "Luis Joyanes Aguilar\n"; cout << "Avda de Andalucia, 48\n"; cout << "Carchelejo, JAEN\n"; cout << "Andalucia, SPAGNA\n"; Il programma seguente #include <iostream> using namespace std; int main() { #include "mioindir.cpp" return 0; Fondamenti di programmazione in C++ - Algoritmi, strutture dati e oggetti Luis Joyanes Aguilar Copyright © 2008 – The McGraw-Hill Companies srl } equivale a #include <iostream> using namespace std; int main() { cout << "Luis Joyanes Aguilar\n"; cout << "Avda de Andalucia, 48\n"; cout << "Carchelejo, JAEN\n"; cout << "Andalucia, SPAGNA\n"; return 0; } Pag. 62 Esercizio risolto #include <iostream> #include <string> using namespace std; int main() { char messaggio[20]; strcpy (messaggio, "ciao mondo\n"); // Le due righe precedenti possono anche // essere sostituite da // char messaggio[20] = "ciao mondo\n"; cout << messaggio; return 0; } Pag. 63 Codice sorgente #include <iostream> //uso di cout, cin #include <cmath> //uso di sqrt(), anche math.h using namespace std; int maint() { double numero, soluzione; cout << "Introduca un numero: "; //chiedere numero cin >> numero; //leggere numero soluzione = sqrt(numero); //ottenere radice quadrata cout << "La radice quadrata è " << soluzione << endl; return 0; } Fondamenti di programmazione in C++ - Algoritmi, strutture dati e oggetti Luis Joyanes Aguilar Copyright © 2008 – The McGraw-Hill Companies srl Pag. 76 Esempi float f; // definizione di f f = 5.65 // assegnamento cout << "f:" << f << endl; // visualizzazione di f:5.65 double h; // definizione di h h = 0.0 // assegnamento cout << "h:" << h << endl; // visualizza h: 0.0 Pagg. 77-78 Esempio bool bisestile; bisestile = true; bool trovato, flag; trovato = true; // trovato prende il valore vero indicatore = false; // indicatore prende il valore falso trovato = indicatore; // trovato prende il valore di // indicatore Esempio #include <iostream> using namespace std; void main() { bool b1; bool b2 = false; bool b3 = true; int i1 = true; int i2 = false; int i3 = b3; int i4 = 10; bool b4 = i4; bool b5 = -i4; // errore, non è possibile assegnare // valori a true e false true = 2; false = -1; cout << "b1:" << b1 << endl; … } Fondamenti di programmazione in C++ - Algoritmi, strutture dati e oggetti Luis Joyanes Aguilar Copyright © 2008 – The McGraw-Hill Companies srl Pag. 85 Esempi long double float float short dNumero; OreAccumulate; OrePerSettimana; VotoMedio; GiornoSettimana; Pagg. 86-87 Esempio // Distanza alla luna in chilometri #include <iostream> using namespace std; void main() { const int Luna = 238857; // distanza in miglia cout << "Distanza alla Luna " << luna; cout << " miglia\n"; int luna_chilo; luna_chilo = luna*1.609; // un miglio = 1.609 chilometri cout << "In chilometri è " << luna_chilo; cout << " km.\n"; } Esempio #include <iostream.h> using namespace std; // Differenti definizioni main() { int x, y1; // definizione delle variabili x e y1 x = 75; y1 = 89; int y2 = 50; // definizione della variabile y2 // inizializzata a 50 cout << x << "," << y1 << "," << y2 << endl; return 0; } Esempi char risposta = 'S'; int contatore = 1; float peso = 156.45; int anno = 1992; char char var2 char char var1 = 'A'; = '\t'; var3 = 'B'; var4 = 'C'; Fondamenti di programmazione in C++ - Algoritmi, strutture dati e oggetti Luis Joyanes Aguilar Copyright © 2008 – The McGraw-Hill Companies srl Pagg. 89 Esempio # include <iostream> Ambito globale int Q; Q, variabile globale void main() { Locale alla main() int A; A, variabile locale A = 124; Q = 1; { Primo sottolivello della main() int B; B, variabile locale B = 124; A = 457; Q = 2; { Sottolivello più interno della main() int C; C, variabile locale C = 124; B = 457; A = 788; Q = 3; } } } Pagg. 89-90 Esempio temperatura = 75.45; conto = conto + 5; spazio = velocita * tempo; int risposta; // risultato di un'operazione risposta = (1+4)*5; Alla variabile a sinistra dell’operatore di assegnamento (l’operatore =) è assegnato il valore dell’espressione a destra; il punto e virgola termina l’istruzione. Esempio #include <iostream> using namespace std; int main() { aux = 4*5; cout << "Due per " << aux << " fa: " << 2*aux << "\n"; cout << "Tre per " << aux << " fa: " << 3*aux << "\n"; return (0); } Fondamenti di programmazione in C++ - Algoritmi, strutture dati e oggetti Luis Joyanes Aguilar Copyright © 2008 – The McGraw-Hill Companies srl Pagg. 91-92 Esempi 1. cout << "Introduca il numero di euro.\n"; << "seguito dal numero dei centesimi.\n"; cin >> euro >> centesimi; 2. La sentenza cin si può anche scrivere così: cin >> euro >> centesimi; pag. 93 Esempio Qual è l’output del seguente programma, se si introducono in input le lettere LJ? main() { char primo, ultimo; cout << "Introduca la sua prima e ultima iniziale:"; cin >> primo >> ultimo; cout << "Ciao," << primo << "." << ultimo << ".!\n"; } Esempio Supponendo che i = 5, j = 12, C = 'A', n = 40.791512 L’istruzione cout << i << j << c << n; visualizza sullo schermo 512A40.791512 Pag. 94 Esempio cout << "Il buono, il"; cout << "brutto"; cout << "e il cattivo"; cout << endl; visualizza l’output Il buono, il brutto e il cattivo – cursore Fondamenti di programmazione in C++ - Algoritmi, strutture dati e oggetti Luis Joyanes Aguilar Copyright © 2008 – The McGraw-Hill Companies srl Pag. 95 Esempio Quando si esegue cout << "Introduca numero di litri d'olio: "; cin >> numLitri; appare sullo schermo Introduca numero di litri d'olio: e quando l’utente introduce il dato in input (per esempio 12.50), esso apparirà nella stessa riga Introduca numero di litri d'olio: 12.50 Pag. 97 Esempio namespace geo { const double PIGRECO = 3.141592; double lungcircon (double raggio) { return 2*PIGRECO*raggio; } } // fine spazio di nome geo Pag. 98 Esempio int test; variabile globale namespace demo { int test; stesso } void main () { ::test = 0; demo::test = 10; // test è una // inizio namespace demo // variabile locale con lo // nome della variabile globale // fine namespace demo // assegna il valore 0 // alla variabile globale // assegna il valore 10 // alla variabile locale } Fondamenti di programmazione in C++ - Algoritmi, strutture dati e oggetti Luis Joyanes Aguilar Copyright © 2008 – The McGraw-Hill Companies srl Pag. 99 Esempio Sottospazi di nomi namespace Continente { namespace StruttureDati { class Lista (); class Pila (); } namespace FunzioniDati { using namespace StrutturaDati; void ordinareLista (Lista l); } } Un’applicazione dello spazio Continente using namspace Continente; void namespace Continente::StruttureDati int main (int argc, char * argv[]) { Lista l; return 0; } Pag. 100 Esempio Nella libreria standard del C++, numerosi header file utilizzano lo spazio di nomi std. // fileA.h namespace alfa { void funzA(); } // fileB.h namespace alfa { void funzB(); } // file Main.cpp #include "fileA.L" #include "fileB.L" using namespace alfa; funzA(); funzB();