PROGRAMMIAMO
C++ - Dev-C++: Analisi del programma
Analisi di un programma

Studiamo adesso un po' più nel dettaglio il programma per la verifica dei numeri primi scritto nella lezione precedente:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
    {

    int divisore, numero, resto;

    cout<<"Fornisci un numero: ";
    cin>> numero;

    divisore=2;

    while (divisore<numero)
        {
        resto = numero%divisore;

        if (resto==0)
            {
            cout<<"Il numero "<<numero<<" non e' primo\n";
            break;
            }

        divisore = divisore+1;
        }

    if (divisore == numero)
        cout<<"Il numero "<<numero<<" e' primo\n";

    system("PAUSE");
    return EXIT_SUCCESS;
    }

Osserviamo anzitutto che alcune parti del programma sono generate automaticamente dal Dev-C++. Quando creiamo un nuovo progetto in Dev-C++, questo produce automaticamente uno "scheletro" di programma vuoto come questo:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
    {
    system("PAUSE");
    return EXIT_SUCCESS;
    }

Confrontando il programma vuoto generato automaticamente con quello per i numeri primi, osserviamo che le istruzioni del programma devono essere scritte dopo le parentesi graffe aperte, come indicato nella figura seguente:

Dove bisogna scrivere il programma

 

Spazi vuote, andate a capo e indentazioni

Una cosa importante da sapere è che il C++ non dà nessuna importanza a spazi vuoti, andate a capo o a tabulazioni. Detto in altre parole, sarebbe anche possibile scrivere l'intero programma precedente su un'unica riga (tranne i due #include all'inizio) ed esso funzionerebbe comunque. Provare per credere!

E' evidente però che, sebbene la divisione in righe sia del tutto irrilevante per il computer, per noi esseri umani è molto importante in quanto ci consente di leggere un programma e di comprenderne il contenuto.

A questo proposito i programmatori usano alcune semplici regole di scrittura che migliorano la leggibilità dei programmi, rendendo più semplice modificarli e correggere gli errori. La prima regola è quella di usare l'andata a capo per separare graficamente fra loro le diverse parti di un programma. Le linee vuote non occupano più spazio (sono appena un carattere in più) e non rallentano l'esecuzione di un programma, ma ne migliorano grandemente la leggibilità. A titolo di semplice esempio si consideri come sono state usate le linee vuote per suddividere le istruzioni iniziali del nostro programma:

    int divisore, numero, resto;

    cout<<"Fornisci un numero: ";
    cin>> numero;

    divisore=2;

Un'altra tecnica per migliorare la leggibilità di un programma è nota come indentazione. In sostanza consiste nell'uso del tasto TAB per spostare verso destra alcune parti del programma che dipendono da altre. La tecnica dell'indentazione sarà ulteriormente approfondita trattando di selezioni e di cicli, ma può già essere osservata nelle seguente righe di codice:

    while (divisore<numero)
        {
        resto = numero%divisore;

        if (resto==0)
            {
            cout<<"Il numero "<<numero<<" non e' primo\n";
            break;
            }

        divisore = divisore+1;
        }

 

Commenti

Un'altra tecnica per rendere più comprensibile un programma agli esseri umani, consiste nell'aggiungere commenti. Un commento è costituito da una o più linee che contengono una breve descrizione a parole e che vengono totalmente ignorate dal compilatore. In sostanza i commenti non sono letti dal computer e non producono codice eseguibile.

In C e in C++ i commenti possono essere inseriti in due modi diversi. Se il commento occupa una singola riga, esso può essere preceduto da un doppio slash //, in questo modo:

// Questo è un commento su una singola riga

I commenti vengono visualizzati in colore azzurro in Dev-C++ (anche se i colori possono essere modificati agendo sulle impostazioni). Se invece si vuole scrivere un commento che occupa più righe, si usano i caratteri /* per iniziare il commento e */ per terminarlo, nel seguente modo:

/* Questo è un esempio di
    commento che occupa
    più righe */

Chiaramente gli esempi precedenti sono completamente inutili! Ecco invece un esempio di commenti al nostro programma che spiegano nei dettagli il funzionamento delle diverse parti:

/*
Programma per controllare se un dato numero intero è primo oppure no
Autore: Giancarlo Perlo
Descrizione: Il programma acquisisce un numero intero e quindi prova a dividere
il numero dato per tutti i divisori compresi fra 2 e il numero stesso.
Se viene trovato un divisore il numero non è primo, altrimenti è primo.
*/


#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
    {

    // Dichiarazione delle variabili del programma
    int divisore, numero, resto;

    // Acquisizione del numero intero
    cout<<"Fornisci un numero: "; // Visualizzazione della scritta
    cin>> numero; // Acquisizione del valore

    divisore=2; // Inizializzazione della variabile divisore

    // Ciclo
    while (divisore<numero) // il ciclo prosegue finché divisore non raggiunge numero
    {
    resto = numero%divisore; // calcola il resto della divisione intera fra numero e divisore

    if (resto==0) // se il resto è nullo, il numero non è primo (ha almeno un divisore)   
        {
        cout<<"Il numero "<<numero<<" non e' primo\n";
        break; //interrompe il ciclo
        }

    divisore = divisore+1; //incrementa la variabile divisore
    }

    //Se non sono stati trovati divisori e il ciclo è terminato, vuol dire che il numero è primo
    if (divisore == numero)
        cout<<"Il numero "<<numero<<" e' primo\n";

    system("PAUSE");
    return EXIT_SUCCESS;
    }

 

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it