You are on page 1of 2

Работа с локални и глобални променливи

1. Области на действие

Освен име и тип всяка променлива има и област на действие. Областта на действие на всяка
променлива започва от мястото на нейната декларация и завършва с края на функцията, в която е
направена тази декларация. Променливите могат да бъдат използвани само в тяхната област на
действие. Това означава, че името на всяка променлива и нейната стойност са познати и достъпни само
в съответната им област на действие.
Ще илюстрираме това с познатата ни задача:
Задача 1: Да се състави програма COUNTPRIME.CPP , която въвежда от клавиатурата
числа до въвеждане на 0 и отпечатва броя на въведените прости числа.
Решение:
Разгледахме тази задача в предходната тема и можем да напишем направо кода на програмата,
без допълнителни пояснения:

//countprime.cpp
#include <iostream>
#include <cmath>
using namespace std;
int prime(int x)
{
int d, k;
if(x==0||x==1) return 0;
k=sqrt(x);
for(d=2; d<=k; d++)
if(x%d==0)return 0;
return 1;
}
void main()
{
int a,b=0;
do
{
cin>>а;
if(prime(a))b++;
}
while(a);
cout<<b<<endl;
}

Програмата се състои от две функции – prime и главната main. Ще разгледаме променливите,


отнасящи се за тях.
Във функция prime имаме дефинирана целочислени променливи k и d, чиято област на
действие е само в рамките на функцията.
Във функция main имаме дефинирани две целочислени променливи: a (която използваме
като фактически параметър за обръщение към функция prime) и b. Областта на действие и на двете
променливи е само в рамките на функция main.

2. Локални и глобални променливи

а) локални променливи
Променливи, определени само в рамките на конкретната функция.
Това е тяхната област на действие
Забележка1: За да различава компилаторът кога използваме локална променлива и кога
формален параметър, те задължително трябва да имат различни имена.

б) глобални променливи

1
Променливи, дефинирани за всички функции в програмата.Глобалните променливи могат
директно да се използват във всички функции и да бъдат променяни.
Глобалните променливи се описват в началото на програмата преди всички функции
(включително и main). Те се описват и използват така, както и локалните променливи, дефинирани в
тялото на функцията. Единствената разлика между локална и глобална променлива е областта на
дествието им. Глобалната променлива е определена в цялата програма, а локалната – само в тялото на
функцията, в която е дефинирана. Глобалната променлива може да бъде описана и между функциите.
Тогава тя ще еопределена само за тези функции, които са записани след описанието и. Глобалните
променливи могат да се използват от различни функции и по този начин да се предават стойности
между тях.
Задача 2: Променете текста на програмата от Задача1 така, че всички поменливи,
декларирани и използвани във функциите, да се представят като глобални.
Решение:

//countprime.cpp
#include <iostream>
#include <cmath>
using namespace std;
int a,b,k,d;
int prime()
{
if(a==0||a==1) return 0;
k=sqrt(a);
for(d=2; d<=k; d++)
if(a%d==0)return 0;
return 1;
}
void main()
{
do
{
cin>>а;
if(prime())b++;
}
while(a);
cout<<b<<endl;
}

Забележка2: Имената на глобалните променливи трябва да бъдат уникални в програмата. Ако


в дадена функция се среща локална променлива с име, съвпадащо с това на глобалната променлива,
ефектът е, че за тази функция глобалната променлива не е дефинирана. Името на локалната
променлива във функцията, където е определена, има по-висок приоритет от името на глобалната
променлива.

You might also like