C++: Visibilità delle variabili

Jacek Yerka

PREMESSA

L'idea di organizzare i programmi in moduli funzionalmente indipendenti porta con sé la necessità di definire, all'interno della funzione, tutte le variabili necessarie al suo funzionamento: in realtà spesso, in un programma, una funzione può condividere variabili con altre funzioni.

SVILUPPO

In un programma si possono distinguere:

  • variabili globali: vengono definite all'inizio del programma e che possono essere usate dal programma principale e da tutte le funzioni
  • variabili locali: vengono dichiarate all'interno della funzione che le utilizza e che non sono visibili alle altre funzioni

Anche le variabili dichiarate nel main sono di tipo locale ossia visibili dal main stesso.

#include ... prototipi delle funzioni predefinite
tipo nome;

...

variabili globali;
tipo nome funzione(parametri); prototipi delle funzioni del programmatore;
int main()

 

funzione principale
{

tipo nome;

...

return 0;

}

 variabili locali
tipo nomefunzione(parametri)
{tipo nome;

...

return...:

}

variabili locali

CONCLUSIONE

Sulla base del ragionamento fatto in precedenza, appare chiaro che un programma ben strutturato (ossia scritto in modo chiaro, efficace ed efficiente) avrà poche variabili globali e molte variabili  locali, proprio per consentire una facile manutenzione del software nel tempo e maggiori possibilità di riutilizzare moduli software in altri programmi.

Tutto questo è molto importante perché significa che per le variabili locali vengono riservate posizioni nella memoria centrale solo al momento dell'esecuzione della funzione. Lo spazio viene creato all'inizio e rilasciato al termine della funzione, liberando quindi spazio nella memoria utente: una ragione in più per usare molte variabili locali e poche variabili globali.

Tuto ciò rende possibile l'utilizzo dello stesso nome di variabile locale in due funzioni diverse.

 

ESEMPIO1 - nomi diversi nella funzione e nel main

//
// Francesco Bragadin
// visibilità variabili
// nomi diversi della variabile nel main e nella funzione area
//

#include <iostream>
using namespace std;

// definizione della funzione
int area(int a);

int main()
{
int lato;
cout<<"lato: "<<endl;
cin>>lato;
cout<<"Area: "<<area(lato);
return 0;
}

// sviluppo della funzione
int area(int a)
{
return a*a;
}

ESEMPIO 2 - stesso nome della variabile nel main e nella funzione

//
// Francesco Bragadin
// visibilità variabili
// nomi uguali della variabile nel main e nella funzione area
//

#include <iostream>
using namespace std;

// definizione della funzione
int area(int a);

int main()
{
int a;
cout<<"lato: "<<endl;
cin>>a;
cout<<"Area: "<<area(a);
return 0;
}

// sviluppo della funzione
int area(int a)
{
return a*a;
}

ESEMPIO 3- uso della variabile globale

//
// Francesco Bragadin
// visibilità variabili
// nomi uguali della variabile nel main e nella funzione e variabile globale
//

#include <iostream>
using namespace std;

// variabile globale
double pigreco=3.14;

// definizione della funzione
double superficie(int r);
double circonferenza(int r);

int main()
{
int r;
cout<<"raggio: "<<endl;
cin>>r;
cout<<"Superficie: "<<superficie(r)<<endl;
cout<<"Circonferenza: "<<circonferenza(r)<<endl;
return 0;
}

// sviluppo della funzione
double superficie(int r)
{
return r*r*pigreco;
}

double circonferenza(int r)
{
return 2*r*pigreco;
}

Informazioni su Francesco Bragadin

Insegno informatica e telecomunicazioni al liceo scienze applicate ed all'indirizzo informatica e telecomunicazioni. Ho terminato gli studi in ingegneria elettronica e telecomunicazioni lavorando per molti anni come libero professionista nell'ambito della gestione storage e disaster recovery su mainframe.
Questa voce è stata pubblicata in Senza categoria. Contrassegna il permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *