PROGRAMMAZIONE E PROGETTAZIONE

 

 

Realizziamo e compiliamo il primo programma C++ con DevC++

di Vincenzo Selvaggio

Il C++ è stato sviluppato da Bjarne Stroustrup negli anni '80 (Bell Laboratories) ed è senza dubbio il linguaggio di programmazione ad alto livello più utilizzato e potente. In quest'articolo cominciamo a vedere come è strutturato un semplice programma C++ e a realizzare una prima applicazione perfettamente funzionante: un convertitore lira-euro. 

L'ambiente DevC++ e la struttura di un programma C++

Per creare un programma abbiamo bisogno di varie componenti: un ambiente di sviluppo (il compilatore), un linguaggio di programmazione (nel nostro caso il C++) e le sue librerie, cioè un insieme di funzioni che il linguaggio stesso ci mette a disposizione. L’ambiente di sviluppo che useremo è il DevC++ della BloodShed perché è gratuito e scaricabile da www.bloodshed.net. Una volta installato, facciamolo partire e nel menu file selezioniamo new->project e poi ancora empty project dandogli un nome, ad esempio cplusplus. A questo punto aggiungiamo un foglio bianco al nostro progetto facendo di nuovo file e new->source file. Rinominiamo il source file con FirstProg e passiamo subito a scrivere il nostro codice:

#include <iostream.h>

#include <stdlib.h>

 

 

int main(){

  

  

   return 0;

 

}

 

 

Il risultato di questi primi passi è mostrato in Figura 1.

 

Figura 1: Il progetto.

Questa è la struttura di ogni programma C++. Le righe uno e due, gli include, servono ad importare le librerie nel nostro programma, in particolar modo iostream.h include le funzioni riguardanti l’input e l’output grazie alle quali possiamo leggere da tastiera e stampare a video mentre stdlib.h sta per standard library e include alcune funzioni standard, come vedremo in seguito. Il programma comincia con la riga int main() e tutto quello che viene dopo, tra le parentesi graffe aperte e chiuse, è il nostro punto di ingresso. La scritta int main() vuole dire che main è una funzione che restituisce come valore un int, cioè un numero intero; infatti nel corpo del main troviamo return 0 che vuol dire che restituiamo il valore intero 0. Lo zero in C++ vuol dire che tutto è andato bene e che quindi il programma che in ultima analisi è il corpo della funzione main è terminato con successo. Questo programma funziona ma non fa nulla. Aggiungiamoci un'ulteriore riga:

#include <iostream.h>

#include <stdlib.h>

 

 

int main(){

  

   cout << "Sono un programmatore Cplusplus \n        CIAO MONDO \n";

  

   return 0;

 

}

 

 

Il comando cout<< serve a mandare la stringa che viene dopo nel flusso di output (il nostro monitor). Una stringa si definisce tra i doppi apici “ “; praticamente tra i doppi apici possiamo scrivere tutto quello che vogliamo e questo verrà stampato a video grazie al comando cout <<. Lo \n serve ad andare daccapo. Da notare che ogni riga di codice deve terminare con il punto e virgola. Infine aggiungiamo una funzione di servizio delle stdlib.h che serve a bloccare il programma fin quando non si preme un tasto, questo per riuscire a vedere quello che abbiamo realizzato. Ecco il codice finale:

#include <iostream.h>

#include <stdlib.h>

 

 

int main(){

  

   cout << "Sono un programmatore Cplusplus \n        CIAO MONDO \n";

  

   system(“PAUSE”);

   return 0;

 

}

 

 

La compilazione

Ora passiamo alla  compilazione del nostro primo programma, cioè la traduzione in linguaggio macchina del codice scritto in un linguaggio di programmazione. Andiamo nel menu execute e premiamo su Compile&Run: dovrebbe così avviarsi il nostro primo programma in C++. In ogni parte del codice le linee che iniziano con i caratteri // rappresentano dei commenti che ci aiutano a ricordare cosa abbiamo fatto.

#include <iostream.h> //libreria input/output

#include <stdlib.h>      // libreria standard

 

 

int main(){   //punto di ingresso

  

   //STAMPA A VIDEO

   cout << "Sono un programmatore Cplusplus \n        CIAO MONDO \n";

  

   system(“PAUSE”);

   return 0;

 

}  //punto di uscita

 

Se andiamo nella cartella del nostro progetto troviamo i seguenti file:

 

            - cplusplus.dev               è il file del progetto

            - firstprog.cpp                è il listato del codice

            - firstprog.o                    è il file oggetto

            - firstprog.exe                 è il file eseguibile

 

Il risultato del nostro esempio in Figura 2.

 

Figura 2: Il codice compilato in esecuzione.

Scarica il progetto firstprog.

Una reale applicazione

Il programma firstprog ci ha permesso di capire qual è la struttura di un programma C++, ora pronti per fare qualcosa di concreto: un convertitore in euro. Prendiamo il codice di firstprog è apportiamo le seguenti modifiche:

#include <iostream.h>

#include <stdlib.h>

 

 

int main(){

  

   

            cout << "----------------------EuroConvertitore-----------------------\n";
                        cout << " Immetti il valore in lire da convertire: ";

                        //DICHIARAZIONI DELLE VARIABILI
                        float cambio=1936.27;
                        float valoredaconvertire;
                        float valoreconvertito;

 

   system(“PAUSE”);

   return 0;

 

}

 

Il cout già lo abbiamo visto e serve a mandare le scritte a video; la novità sono le dichiarazioni delle variabili che sono delle locazioni statiche di memoria in cui un valore viene memorizzato. Le variabili che abbiamo utilizzato sono di tipo reale (float), mentre in generale per dichiarare una variabile occorre mettere prima il tipo e poi il nome che noi gli vogliamo dare. Ad esempio se ci serve un intero scriveremo int mionumerointero, se ci serve un carattere scriveremo invece char miocarattere. E' una buona abitudine di programmazione dare un nome alle variabili che ci ricordino il suo significato nel corso del programma.  Se scrivessimo   

                                              float a=1936.27;
                                              float b;
                                              float c;

il programma funzionerebbe lo stesso ma sarebbe difficile da gestire e ricordare. Tornado al codice notiamo che la variabile cambio è stata inizializzata perché sarà una costante nel nostro programma e non verrà modificata. Sarebbe un buon uso anche inizializzare le altre variabili al valore zero per non avere effetti indesiderati:

#include <iostream.h>

#include <stdlib.h>

 

 

int main(){

  

   

            cout << "----------------------EuroConvertitore-----------------------\n";
                        cout << " Immetti il valore in lire da convertire: ";

                        //DICHIARAZIONI DELLE VARIABILI
                        float cambio=1936.27;
                        float valoredaconvertire=0;
                        float valoreconvertito=0;

 

   system(“PAUSE”);

   return 0;

 

}

 

 

 Ora dobbiamo chiedere all'utente della nostra applicazione di immettere un valore per la variabile valoredaconvertire e questo è possibile con il comando cin duale di cout. Ecco il codice:

 

#include <iostream.h>

#include <stdlib.h>

 

 

int main(){

  

   

            cout << "----------------------EuroConvertitore-----------------------\n";
                        cout << " Immetti il valore in lire da convertire: ";

                        //DICHIARAZIONI DELLE VARIABILI
                        float cambio=1936.27;
                        float valoredaconvertire=0;
                        float valoreconvertito=0;

 

 

            cin >> valoredaconvertire;

 

   system(“PAUSE”);

   return 0;

 

}

 

 

Il programma verrà eseguito fino al cin (si legge ci-in) dopo di che si interrompe e attende che venga immesso un valore dal dispositivo di input che per default è la tastiera. Questo valore viene poi immesso nella variabile di tipo reale valoredaconvertire. Ora aggiungiamo il codice che ci permette la conversione e la visualizzazione del risultato col solito cout

#include <iostream.h>

#include <stdlib.h>

 

 

int main(){

  

   

            cout << "----------------------EuroConvertitore-----------------------\n";
                        cout << " Immetti il valore in lire da convertire: ";

                        //DICHIARAZIONI DELLE VARIABILI
                        float cambio=1936.27;
                        float valoredaconvertire=0;
                        float valoreconvertito=0;

 

 

            cin >> valoredaconvertire;

 

 

 

            //CODICE DELL'OPERAZIONE DI CONVERSIONE

                        valoreconvertito = valoredaconvertire/cambio;

                        //STAMPA DEL RISULTATO
                        cout << "\nIl valore convertito e' " << valoreconvertito << " euro.\n";

 

   system(“PAUSE”);

   return 0;

 

}

 

Il codice dell'operazione di conversione è una semplice espressione matematica, cioè dividiamo la variabile valoredaconvertire (il cui valore è quello immesso dall'utente) per il cambio. L'uguale è l'operatore di assegnazione a sinistra, non possiamo scrivere l'inverso! Per quanto riguarda cout c'è una novità: inviamo al dispositivo di output oltre a delle stringe anche una variabile, il tutto separato dai doppi simboli <<. Il risultato del nostro convertitore in Figura 3.

 

Figura 3: Il convertitore in esecuzione.

Scarica il progetto Convertitore.

Conclusioni

In quest'articolo abbiamo imparato a dichiarare una variabile, a interagire con l'utente dell'applicazione e in generale a capire la struttura di un qualsiasi programma C++. Il passo successivo sarà quello di risolvere problemi con l'utilizzo della programmazione strutturata.

Vincenzo Selvaggio

<selvin@cplusplus.it>