Introduzione alla programmazione in C++ Fondamenti di Informatica 1 R. Basili 2 ciclo a.a. 2000-2001 Programmare significa: Determinare la natura del prolema (analisi) Definire una decomposizione in sottoprolemi Determinare le utili strutture dei dati Definire le procedure risolutive (algoritmi) Codificare in un linguaggio di programmazione Lo sviluppo di un programma (in C++) Scrittura, output: testo Compilazione, output: lirerie del programma o errori detti di compilazione Linking (o collegamento) output: programma eseguiile Esecuzione Lo sviluppo di un programma (in C++) La programmazione modulare Divide et impera!! ½πr 2 + ½πr 2 + 4r 2 + ½(+) 4r 2 + ½(+) = ½πr 2 + 4r 2 + ½(+) 1
Tutti i linguaggi di programmazione ad alto livello possiedono costrutti in grado di descrivere la soluzione di sottoprolemi e di garantire la ri-composizione delle soluzioni generali Le procedure (e funzioni) sono le procedure risolutive dei sottoprolemi Ciamare una procedura significa attivarne la esecuzione su un certo dato Es. Area(Blo) = ½ ACercio(1)+ Blo 1 3 2 dove AQuadr(2)+ ATrap(3)= = ½ Acercio(r)+ Aquadr()+ ATrap(,,) Acercio(r)= πr 2 Aquadr(l) = l 2 ATrap(,B,) =((+B)*)/2 in C++ Gli elementi lessicali del linguaggio tokens o parole (stringe di caratteri) spaziature (caratteri, taulazioni) commenti Elementi Lessicali Identificatori Parole ciave (o riservate) Espressioni letterali Operatori Separatori Identificatori Identificano gli oggetti del programma: dati o operazioni _ e una lettera valida i caratteri maiuscoli e minuscoli (ad es. a ed A) sono diversi Es. A, a, cont, max, min, sqrt Parole ciave Sono identificatori speciali ce svolgendo un ruolo specifico per il linguaggio di programmazione non possono essere lieramente usati dal programmatore. Ad es. wile, for, register, protected, pulic vd. elenco a pag. 26 2
Espressioni letterali Sono usate per rappresentare (cioe dare un nome) a valori costanti per il programma a rappresenta il carattere a e lo distingue dall identificatore a; Oss: \n \t rappresentano il carattere di fine riga (non ritorno carrello) e taulazione rispettivamente 234.0e2 e il numero reale 23.400 Hello World! Bye!\n sono stringe Operatori e Separatori Sono caratteri speciali o loro sequenze ce denotano operazioni Operatori: + - * / >>, <<,, && Separatori:, ; : ( ) { } Struttura di un semplice programma in C++ Programma: [locco_dic ] main( [argomenti]) locco_istruzioni locco_istruzioni: { lista_istruzioni } Istruzioni Diciarazioni variaili, costanti, (tipi dato, funzioni, ) Espressioni Istruzioni strutturate (ad es. if-ten-else) main([argomenti]) { } Un esempio: un Cercio Vedi dispensa Programmi in C++ Istruzioni di Input/Output elementari Input: cin >> identificatore inserisce il valore inserito dalla tastiera in identificatore cout << espressione stampa a scermo il valore corrente di espressione 3
Oggetti, variaili e tipi Gli oggetti corrispondono a aree di memoria e contengono valori Il nome consente di riferirsi all oggetto (per recuperare il suo valore/lettura o modificarne il suo contenuto/scrittura) Poice doiamo dedicare aree di memoria agli oggetti doiamo conoscerne le caratteristice => gli oggetti anno un tipo Tipi di dati Un insieme di valori legali per quel tipo (ad es. 13 per un intero) Un insieme di operazioni legali su tali valori (ad esempio la divisione per gli interi) Variaili e costanti anno un loro tipo: le prime vengono sempre diciarate, le seconde ricevono il tipo dalla loro diciarazione/assegnazione o dalla loro espressione letterale (ad es. \n ) Tipi di dato elementari Interi: int, unsigned, long Reali: float, doule caratteri: car enumerati: enum oolean: ool Espressioni Numerice Vd. Sezione 1.2- Dispensa di Operazioni aritmetice e conversioni di tipo l operatore modulo: % Espressioni ooleane Vd. Sezione 1.3 Dispensa di Conversioni di tipo esplicite: il casting il tipo ool e le operazioni relazionali Assegnamento Vd. Sezione 1.4 Dispensa di Espressioni concatenate Espressioni composte A=5; A=A+23; coincide con A+=23; A=A B; coincide con A =B Operatori di incremento e decremento 4
Alcune funzioni di lireria La lireria mat (vedi dispense Programmi C++ - sez 1.6.1) Costanti predefinite e, log2(e), log1o(e), π, funzioni trigonometrice, logaritmice funzioni di arrotondamento: troncamento: ceil(doule) arrotondamento: floor(doule) 5