Le variabili locali e globali in C++

Approfondiamo in questo breve articolo le variabili locali e globali in C++.

In molti linguaggi di programmazione (in alcuni linguaggi non si dichiarano le variabili) è possibile dichiarare le variabili locali o globali, cioè è possibile stabilire il periodo di vita di una variabile.

Le variabili locali in C++

Le variabili locali, sono quelle variabili che sono dichiarate all’interno dei singoli sottoprogrammi, quindi sono valide (visibili) solo all’interno di questi e pertanto non possono essere utilizzate in altri sottoprogrammi.

Hanno dunque una durata, nascono con la funzione (o sottoprogramma) e muoiono quando termina la funzione stessa.

Facciamo dunque un esempio indicativo, producendo di proposito un errore:

#include <iostream>
using namespace std;

int somma(){
	int x=5; //variabile locale
	int y=6; //variabile locale
	return x+y;
}

int differenza() {
	return x-y; //non vede le variabili x e y
}

int main () {
	somma();
	cout<<somma();
	differenza();
	cout<<differenza();
}

Mi restituisce come errore che le variabili x e y non sono state dichiarate per questo scope ovvero per questo ambito di visibilità.


Le variabili globali in C++

Le variabili globali sono quelle che hanno validità non solo nel programma principale ma anche nei sottoprogrammi dove non sono state dichiarate.

Anche se potrebbe sembrare più semplice utilizzarle non bisogna farne abuso.

Esempio 1

Vediamo quindi un esempio di uso di variabili locali e globali puramente indicativo:

#include <iostream>
using namespace std;

int y; // variabile globale 

int main()
{
     int x; // variabile locale al main

     cout<<"Inserisci un numero: ";
     cin>>x;
     cout<<x;
     cout<<"Inserisci un numero: ";
     cin>>y;
     cout<<y;
}

In questo esempio utilizziamo una variabile globale y dichiarata prima del main e una variabile locale x dichiarata all’interno del main.

Esempio 2

Dati in input il numero degli allievi e delle allieve di un Istituto, calcolare la percentuale dei maschi e delle femmine di tutta la scuola.

Ecco dunque un esempio d’uso di variabili globali e parametri formali, guardate i commenti, inseriti nel codice, per capire quali variabili sono utilizzate.

#include <iostream>
using namespace std;

int iscritti; //variabile globale
int allievi; //variabile globale
int allieve; //variabile globale


float percentualeM(int iscritti, int allievi){
	return 100*allievi/iscritti; //uso i parametri formali
}

float percentualeF(int iscritti, int allievi){
	return 100*allieve/iscritti; //uso i parametri formali
}


int main() {
	cout<<"Inserisci il numero degli iscritti"<<endl;
	cin>>iscritti; //uso la variabile globale
	cout<<"Inserisci il numero degli allievi"<<endl;
	cin>>allievi; //uso la variabile globale
	cout<<"Inserisci il numero delle allieve"<<endl;
	cin>>allieve; //uso la variabile globale
	cout<<"La percentuale di maschi e': "<<percentualeM(iscritti, allievi)<<endl;
	cout<<"La percentuale delle femmine e': "<<percentualeF(iscritti, allievi)<<endl;
	
}

Esempio 3

In questo esempio definiremo la variabile locale x all’interno del main e all’interno di una funzione e useremo anche una variabile globale x.

#include <iostream>
using namespace std;

int x=100;  //variabile globale

void funzione() {
	int x=20;  //variabile locale riferita a funzione
	cout<<x<<endl;  //stamperà 20 
}

void funzione2() {
	cout<<x;  //stamperà 100 utilizzerà la variabile globale
}

int main () {
	int x=5; //utilizzerà la variabile locale interna la main
	cout<<x<<endl;
	funzione();
	funzione2();
}

Il programma stamperà così 5, 20, 100.

Chiaramente questi sono solo alcuni esempi di possibile uso delle variabili locali e globali in C++, presto farò altri esempi.

Alcuni link utili

Passaggio di parametri per valore o per riferimento

Come usare il for in C++

Ciclo while in C++

Ciclo do while

Iterazioni con il ciclo for in C++

Operatori logici in C++

Esercizi con switch case in C++

Come utilizzare lo switch case in C++

If else in C++

Casting in C++

Variabili in C++

Tutorial C++

Successione di Fibonacci in C++


Leave a Reply