Transcription of Programmare con C++ - Hoepli
1 Cesare RotaProgrammare con C++EDITORE ULRICO Hoepli 23-01-2009 12:33 Pagina 1 Copyright Ulrico Hoepli Editore 2009via Hoepli 5, 20121 Milano (Italy)tel. +39 02 864871 fax +39 02 8052886e-mail i diritti sono riservati a norma di legge e a norma delle convenzioni internazionaliISBN 978-88-203-4248-7 Ristampa:4 3 2 1 02009 2010 2011 2012 2013 Realizzazione editorialeART Servizi Editoriali - editoriale: Monica MonariRedazione:Barbara MegaliProgetto grafico:Marina BaldisserriImpaginazione:Sonia BertusiCopertina: MN&CG , MilanoStampa: Art Grafiche Franco Battaia - Zibido San Giacomo (MI)Printed in 15-01-2009 12:19 Pagina 23 Presentazione5 Sezione 1 - Premesse 1 - Sistemi di di numerazione di numerazione da base 2 a base e sottrazione nel di numerazione esadecimale da binario a esadecimale e viceversa16 Esercizi 2 - Codifica delle dei interna dei numeri dei numeri reali28 Esercizi 31 Sezione 2 - Primi elementidi 3 - Introduzione a C++ del e di di dato in virgola Costanti49 Esercizi 4 - Visualizzazione e delle informazioni.
2 Il metodo di di \\ e del carattere @ 63 Esercizi 5 - aritmetici logici80 Esercizi 86 Sezione 3 - Organizzazione degli 6 - Algoritmi e del e di di ingresso e di uscitadei di Jacopini-B di di Considerazioni sulla pseudocodifica 107 Esercizi 7 - Istruzioni di selezione switch (selezione multipla) dei case122 Esercizi 8 - Istruzioni di for134 Esercizi 15-01-2009 12:19 Pagina 9 - Le funzione pi delle delle locali e di dei parametri per dei parametri per Funzioni matematiche163 Esercizi 165 Sezione 4 - Strutture dei 10 - Enumerazioni e Tipi enumerativi (enumerazioni)
3 Tipo Vettori in C++ Caricamento di un vettore in Array di dimensione Passaggio di un vettore come parametro a una funzione187 Esercizi 11 - stringhe e Definizione di Lunghezza di una Concatenazione ed Confronti tra Caratteri e stringhe Dichiarazione di una Metodi costruttori204 Esercizi 207 Sezione 5 - Classi e oggetti 12 - Concetti Introduzione alla Ereditariet Introduzione alle Terminologia e rappresentazione Dichiarazione degli oggetti218 Esercizi 13 - Polimorfismo ed ereditariet Costruttori Membri static di una Ereditariet 240 Esercizi 249 Sezione 6 - Operare con gli 14 - Definizione di Definizione di Operazioni fondamentali sugli I/O standard e su memoria di Tipi di Tipi di accesso260 Esercizi 15 - File di Creazione di un file di Lettura di un file di Accodamento268 Esercizi 271 Sezione 7 - Le 16 - Gestione delle Concetto di Eccezioni277 Esercizi 283 Appendice A - Riepilogo degli operatori285 Appendice B - Sequenze di caratteri escape286 Indice 15-01-2009 12:19 Pagina 45Il presente volume espone, in modo chiaro ed efficace, le caratteristiche del linguaggio C++e ha il duplice scopo di descriverne la sintassi e di evidenziarne le potenzialit.
4 In particolare il libro: :si rivolge allo studente come un manuale di facile consultazione per la programma-zione; :presenta le basi teoriche per lo sviluppo delle applicazioni primo obiettivo si realizza tramite numerosi esempi presenti nel testo, che fornisconochiare indicazioni sulle caratteristiche sintattiche del linguaggio. Per quanto riguarda lebasi teoriche sono stati messi in rilievo i fondamenti dei cinque argomenti di base per laprogrammazione: la rappresentazione dei dati, le strutture di controllo utilizzabili nellacostruzione di un algoritmo, le strutture dei dati, la programmazione orientata agli og-getti e la gestione dei libro suddiviso in sette La sezione Premessesviluppa gli argomenti della codifica binaria delle In Primi elementi di programmazionevengono descritti i concetti di variabile,costante e tipi di dato, le operazioni di input/output da console e gli operatori arit-metici. 3 Nella sezione Organizzazione degli algoritmiviene introdotta la nozione di algorit-mo e sono descritte le principali strutture di controllo sia in pseudocodifica sia in C++.
5 4 Nella sezione Strutture dei dativengono definite le principali strutture statiche deidati. 5 L intera sezione Classi e oggetti dedicata alle nozioni fondamentali della OOP evengono presentati i concetti principali della programmazione orientata agli ogget-ti quali l incapsulamento, il polimorfismo e l ereditariet . 6 La sezione Operare con gli archivispiega le nozioni di base per la definizione de-gli archivi di La sezione Le eccezionidescrive gli accorgimenti essenziali per la realizzazione diapplicazioni robuste .Ogni sezione suddivisa in Unit didattiche le quali contengono un numero limitato diparagrafi, la cui trattazione , di norma, contenuta in circa due pagine. Ne risulta un 23-01-2009 12:34 Pagina 5 Presentazione6di facile lettura, che aiuta lo studente a concentrarsi, di volta in volta, su un singolo ele-mento del discorso. Tutti i concetti presentati sono accompagnati da un esempio, chemette in pratica quanto esposto. Ogni esempio contiene un listato di codice, una figurache illustra una prova di esecuzione del codice proposto e l analisi dettagliata del codicestesso; quest ultima parte dell esempio presenta una descrizione dettagliata degli aspettipi significativi del linguaggio C++ presenti nell ogni sezione sono indicati gli obiettivi generali che si vogliono raggiungere, mentrenella prima pagina di ogni Unit didattica specificato per lo studente Che cosa impare-rai a fare e Che cosa dovrai studiare.
6 In concreto, gli obiettivi generali presentati all i-nizio di ogni modulo descrivono le capacit che lo studente deve acquisire. Le voci Checosa imparerai a fare e Che cosa dovrai studiare indicano rispettivamente le compe-tenze e le conoscenze che devono essere apprese dall l ampiezza della trattazione, il libro include tutti i contenuti dei program-mi didattici tradizionalmente affrontati nelle classi terze degli istituti particolare pu essere adottato nella classe terza degli Istituti Tecnici Industriali con in-dirizzo ABACUS o informatica industriale, in quella degli Istituti Tecnici Commercialicon indirizzo MERCURIO o programmatori, nonch in quella dei Licei scientifici 15-01-2009 12:19 Pagina 6 Obiettivigenerali Definire insiemi di dati numerabili Saper utilizzare schemi logici per organizzare insiemicomplessi di dati Costruire tabelle di dati omogenei Manipolare stringhe di caratteri Raggruppare dati di tipo e e struttureQuesta sezione contiene &Strutture datiSezione 4 Strutture 15-01-2009 9.
7 21 Pagina 167 Unit didattica10 Enumerazioni e arrayCHE COSA IMPARERAI A FARE$Definire dati di tipo enumerativo$Definire un array a una dimensione in C++$Caricare un vettore in memoria$Definire un vettore a dimensione variabile$Definire una matrice$Popolare una matrice$Visualizzare gli elementi di una matriceCHE COSA DOVRAI STUDIARE$Definizione di tipo enumerativo$Concetto di vettore$Definizione di vettore$Sintassi per la gestione di un vettore$Sintassi per la gestione delle 15-01-2009 9:21 Pagina IntroduzioneFinora abbiamo visto i tipi di dato pi comuni e i pi facili da utilizzare in C++, cio i tipi predefini-ti: int, double, C++, per , si possono anche utilizzare tipi definiti dal programmatore. Tali nuovi tipi, per poteressere utilizzati, vanno inseriti nella dichiarazione delle variabili secondo la sintassi consueta:tipo variabile;Tutti i dati che compaiono in un programma possiedono uno e un solo tipo, e possono essere di ti-po semplice oppure aggregati in modo tipi di dato semplici sono classificati secondo lo schema gerarchico riportato di tipi semplici possono essere floato double, oppure di tipo ordinale; i tipi ordinali possono es-sere definiti dal programmatore attraverso i tipi enumerativi, oppure possono appartenere ai tipi or-dinali predefiniti int, bool, tipi ordinali predefiniti e i tipi floate doublesono gi stati presentati e utilizzati in Tipi enumerativi (enumerazioni)A volte una variabile pu assumere solo una serie di valori definiti all interno di un insieme discretodi possibilit.
8 Le enumerazioni sono molto comuni nella vita di tutti i giorni: per esempio, pu esse-re un enumerazione la lista dei controlli da eseguire sull auto prima di affrontare un viaggio: freni,fari, gomme, olio, tergicristalli, tipo ordinalesi chiama cos perch descrive un insieme finito e ordinato di valori,che possono essere associati a numeri interi didatticaEnumerazioni e 15-01-2009 9:21 Pagina 169 Per definire in C++ un enumerazione si usa la seguente sintassi:enumnome_enumerazione{elenco_en umerazioni};dove enum la parola chiave che introduce l la lista di esempio proposta in precedenza, si pu scrivere:enum controlli {freni, fari, gomme, olio, tergicristalli, carburante};Il nome dell enumerazione pu essere utilizzato per dichiarare variabili di tale tipo, in maniera ana-loga alle dichiarazioni di tipo viste in precedenza. Per esempio, potremo scrivere:controlli check;La variabile checkpu assumere uno qualsiasi dei valori della lista dei controlli definita in prece-denza.
9 Per esempio, si pu scrivere:check = gomme;oppureif (check == fari) cout << controlla fari ;Si deve ricordare che a ognuno dei valori di una variabile enumerativa corrisponde il numero d ordi-ne che esso occupa all interno della definizione dell un programma che utilizza una variabile di tipo #include <iostream>2 using namespace std;3 4 //INIZIO5 int main () 6 {7 //definisci l'enumerazione8 enum controlli {freni, fari, gomme, olio, tergicristalli, carburante};9 10 //definisci la variabile di tipo enumerativo11 controlli check;12 13 //assegna un valore alla variabile14 check = gomme;15 16 //esegui un confronto17 if (check == gomme) cout << "controlla fari";18 19 //scrivi il numero d'ordine del valore della variabile enumerativa20 cout << "\nNumero d'ordine di gomme = " << check;21 Sezione 4- Strutture dei 15-01-2009 9:21 Pagina 170 Unit didattica 10- Enumerazioni e array17122 //fine programma23 cout << "\n\nFine "; 24 system ("pause");25 return 0;26 }Prova di esecuzioneAnalisi del codiceAlla riga 8viene definito il tipo enumerativo riga 11viene introdotta la variabile checkdi tipo controllie alla riga 14le viene assegnatoun valore (scelto tra quelli definiti nell enumerazione controlli).
10 Alla riga 17viene eseguito un confronto. Anche se la variabile checkcontiene gomme , l istruzio-ne alla riga 20non fa comparire in output la parola gomme , ma il suo numero di posizione (par-tendo da zero) all interno della definizione dell a questo momento abbiamo visto come sia possibile definire e utilizzare in C++ tipi di dati cheabbiamo definito semplici . Se ci soffermiamo, per , a considerare qualche esempio un po pi complesso di quelli presentati fi-no a ora ci rendiamo rapidamente conto che non affatto raro incontrare la necessit di gestire elen-chi di per esempio a un elenco di invitati a una festa, alla lista degli studenti di una classe o agliiscritti a una gara. In questi tre esempi siamo di fronte a un dato (cognome e nome) sempre dello stes-so tipo che si ripete pi prossimi paragrafi presenteremo le strutture messe a disposizione da C++ per gestire non pi da-ti singoli, bens strutture di dati che raggruppano in un unica variabile dati Tipo vettoreCominciamo a esaminare le strutture che contengono dati tutti dello stesso tipo: in generale, talistrutture prendono il nome di arraye si distinguono in vettoricome array a una dimensione e ma-tricicome array a due prima struttura che esaminiamo la struttura di vettore che permette di raggruppare diversi datidello stesso tipo e di associare un indice a ogni vettore un insieme ordinato di oggetti omogenei, ovvero appartenenti a ununico tipo.