Sei sulla pagina 1di 5

Elementi principali di un programma C++

17 marzo 2006

Marco Altese

Come abbiamo detto, il C++ un linguaggio derivato dal C, che conserva con questo una completa compatibilit. Per muovere i primi passi con C++, utile conoscere alcuni concetti base della programmazione in C++.

Le cinque componenti fondamentali di un programma C/C++


1. Input il programma prende alcune informazioni da una sorgente di input; 2. Elaborazione il programma deve prevedere il modo in cui questo input deve essere manipolato e memorizzato; 3. Sintassi il programma utilizza una serie di istruzioni di manipolazione dellinput. Queste istruzioni possono essere suddivise in quattro categorie principali: singole istruzioni, istruzioni condizionali, cicli e funzioni; 4. Output i programmi deve produrre un qualche tipo di rapporto sulla manipolazione dei dati; 5. Manutenibilit unapplicazione ben realizzata incorpora tutti gli elementi fondamentali appena elencati con un progetto modulare, con codice autodocumentante (ad esempio nomi di variabili di senso compiuto e commenti) e un rigoroso schema di indentazione. In questo modo sar pi semplice modificare il codice quando opportuno. Con questi presupposti e con quello che vedremo in questa lezione, saremo in grado di scrivere un programma, breve ma funzionante.

Creare e compilare un progetto in C++


Il processo di creazione e compilazione di un progetto in C++ dipende strettamente dal tipo di computer e di sistema operativo che si utilizza. Abbiamo a disposizione numerosi strumenti di sviluppo:

Code::Blocks
Code::Blocks un ambiente di sviluppo completo, che permette di utilizzare moltissimi compilatori, dal celeberrimo gcc a Visual C++ di Microsoft. Consente luso di plugin per integrare numerose funzionalit aggiuntive ed disponibile per le piattaforme Windows, Linux e Mac.

wxDev-C++
Dev-C++ di Bloodshed, un IDE leggero, sufficiente per seguire questa guida e piuttosto aderente agli standard, fornisce un frontend per gcc, il compilatore open source per eccellenza.z Se si cerca un prodotto pi completo e maturo meglio scaricare la sua evoluzione: wxDev-C++. Se si desidera utilizzare gcc con editor e console si pu scaricare la sua versione per Windows: DJGPP

Visual C++
Visual C++ Express di Microsoft, uno strumento professionale e gratuito, ricco di caratteristiche potenti, soprattutto per la creazione di interfacce utente, in ambiente Windows.

Compilare un progetto con DevC++


Una volta scaricato e installato il software, apriamo DevC++ e creiamo il nostro primo progetto (F i l e>N u o v o> P r o g e t t o):
Figura 1. Creare un nuovo progetto con DevC++

Selezioniamo C o n s o l eA p p l i c a t i o n , diamo un nome al progetto e clicchiamo Ok. Quello che appare un semplice file m a i n . c p p, il sorgente di una applicazione vuota in cui scrivere il nostro codice. Per lanciare la compilazione ed eseguire il programma possiamo agire da menu: E s e g u i>C o m p i l a&E s e g u io semplicemente digitiamo F 9

Compilare un progetto con Visual C++


Una volta installato V i s u a lC + +lanciamo il programma e, dal menu F i l eselezioniamo N u o v o>P r o g e t t o
Figura 1. Creare un nuovo progetto da menu

Appare la finestra N u o v oP r o g e t t oin cui possiamo selezionare il tipo di progetto da creare, scegliamo Progetto console Win32.
Figura 2. Finestra di creazione del progetto (clic per ingrandire)

In basso scriviamo il nome del progetto (ad esempio scriviamo p r o g r a m m a ) e il percorso (la directory del disco) in cui salvare il progetto stesso. Quindi premiamo O K , il progetto stato creato. Vediamo che Visual Studio crea per noi una serie di file di esempio. Il progetto infatti pu consistere di uno o pi files, che conterranno codice C++, uno dei quali (e soltanto uno) deve contenere la funzione main, questo file il punto di accesso al programma, quindi il file principale. Nel nostro esempio il file principale quello che ha lo stesso nome del progetto (nel nostro caso p r o g r a m m a . c p p ), possiamo quindi ingnorare tutti gli altri e concentrarci su questo file.

Per le prossime lezioni sar comunque utile sapere che possibile aggiungere nuovi file al progetto, cliccando con il tasto destro sul nome del progetto, poi su A g g i u n g i>N u o v oE l e m e n t o . . . .
Figura 3. Aggiungere file al progetto (clic per ingrandire)

Una volta aperta la finestra possiamo scegliere se aggiungere un file di intestazione (. h ) o un file di programma (. c p p ), ci sono anche alre opzioni che per possiamo ignorare.
Figura 4. Scegliere il tipo di file (clic per ingrandire)

In basso scriviamo il nome del nuovo file, per similitudine con quanto fatto per DevC++, chiamiamo il file m a i n . c p p . anche possibile importare file gi esistenti (. c p po . h ) cliccando col destro sul nome del progetto e selzionando A g g i u n g i>E l e m e n t oe s i s t e n t e . . . . In questo caso lanciamo la compilazione e lesecuzione del programma (in modalit debug) digitando F 5o da menu (D e b u g>A v v i ad e b u g ).

Compilare un programma C++ con gcc


Vediamo il procedimento di compilazione a riga di comando da utilizzare con gcc (Gnu Compiler Collection) anche in ambiente Linux. Supponiamo di aver gi creato, con un comune editor di testo come notepad o gedit, un file main.cpp che contiene il nostro programma. Per compilarlo sar sufficiente digitare nella console a riga di comando:
g + +m a i n . c p pom a i n

ed ottenere automaticamente il programma eseguibile. Per eseguirlo baster lanciare il comando m a i n . Naturalmente, nel caso di programmi pi complessi sar necessaria una maggiore conoscenza delle opzioni di compilazione.

Compilare un programma C++ con Code::Blocks


Code::Blocks offre moltissime opzioni di configurazione per la compilazione e linterfaccia utente, ma possiamo utilizzare semplicemente le impostazioni di default e procedere a creare il nostro primo progetto (F i l e>N e w> P r o j e c t ) scegliendo il template C o n s o l eA p p l i c a t i o n .
Figura 5. Code::Blocks

Troviamo gi pronto il nostro file m a i n . c p p . Per compilare e mandare in esecuzione il programma possiamo scegliere da menu B u i l d>R u no digitare F 1 0

Il primo programma
Scriviamo il nostro semplice programma nel file principale (m a i n . c p p ):

/ /m a i n . c p p / /I lp r i m oe s e m p i oi nC + + # i n c l u d e< i o s t r e a m > i n tm a i n ( i n ta r g c ,c h a r* a r g v [ ] ) { s t d : : c o u t< <" C i a oM o n d o " ; r e t u r n0 ; }

Proviamo a compilare ed eseguire il programmino. Se non ci sono stati errori, apparir una piccola console con la scritta:
C i a oM o n d o

In caso contrario, il compilatore indicher le righe di codice in cui sono stati riscontrati dei problemi e quindi avviser il programmatore che non stato possibile creare leseguibile.

I commenti
Gi questa piccola porzione di codice contiene numerose operazioni. Innanzitutto i commenti:

/ /m a i n . c p p / /I lp r i m oe s e m p i oi nC + +

Ogni programma ben realizzato dovrebbe includere dei commenti, per garantire una manutenzione agevole del codice: spesso capita di dover modificare codice altrui, oppure di dover riprendere in mano del vecchio codice e ricordarne il funzionamento. Per questo scrivendo un commento utile non dare tutto troppo per scontato. In C++ una linea di codice commentata preceduta dalla doppia barra / / . Esiste, anche un secondo tipo di commento: il commento a blocchi, ereditato dal C. In questo caso, un commento inizia con i simboli / *e termina con i simboli * / . La differenza sostanziale che il commento a blocchi permette di commentare pi linee di codice senza dover ripetere ad ogni linea i simboli del commento stesso. Per fare un esempio, le linee commentate del programma precedente, diverrebbero con luso del commento a blocchi:

/ *m a i n . c p p *I lp r i m oe s e m p i oi nC + + * /

I due tipi di commenti sono assolutamente intercambiabili. Se c necessit di commentare parecchie linee di codice consecutive conveniente ricorrere al commento a blocchi.

#include

Listruzione:

# i n c l u d e< i o s t r e a m >

rappresenta una delle funzionalit tipiche del C++, nota come istruzione per il preprocessore. Una istruzione per il preprocessore , fondamentalmente, una istruzione di precompilazione. #include in C contiene un richiamo ai file di intestazione (header con estensione . h ) delle librerie che utilizziamo. Nello standard C++ si omette lestensione, per questo troviamo, tra parentesi angolari, i o s t r e a m e non i o s t r e a m . h

main
Dopo listruzione #include si trova la dichiarazione della funzione main():

m a i n ( ) { / /. . .c o d i c e r e t u r n0 ; }

Ogni programma C++ ha al suo interno una sequenza di operazioni e di funzioni. Tutti i programmi C++ devono contenere una funzione chiamata m a i n ( ) . Tale funzione rappresenta il punto di inizio dellesecuzione del programma che termina con listruzione r e t u r n0 . Possiamo prevedere che il nostro programma prenda in ingresso degli argomenti (eg. dalla riga di comando). Possiamo utilizzare questi argomenti esterni grazie alle variabili:
i n ta r g c ARGuments Counter un valore intero che indica il numero di argomenti presenti c h a r* a r g v [ ] ARGuments Vector un array di stringhe che contiene i valori degli argomenti

Le parentesi graffe {e }contengono blocchi di istruzioni. I blocchi di istruzioni possono consistere nella definizione del corpo di una funzione (come accade nel nostro caso per la funzione m a i n ( )) oppure nel riunire pi linee di codice che dipendono dalla stessa istruzione di controllo, come nel caso in cui diverse istruzioni vengono eseguite a seconda dela validit o meno del test di unistruzione.

using e namespace
Le classi delle librerie sono definite anche nel namespace std che viene aggiunto come prefisso alloperatore c o u tnel nostro caso:

s t d : : c o u t< <" C i a oM o n d o " ;

Possiamo richiamare le stesse classi e operatori utilizzando la direttiva using e il namespace s t d :

/ /m a i n . c p p / /I lp r i m oe s e m p i oi nC + + # i n c l u d e< i o s t r e a m > u s i n gn a m e s p a c es t d ; i n tm a i n ( i n ta r g c ,c h a r* a r g v [ ] ) { c o u t< <" C i a oM o n d o " ; r e t u r n0 ; }

Lezione:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52