Променливите във всеки език за програмиране имат решаваща роля. Променливите се класифицират на глобални променливи и локални променливи въз основа на техния обхват. Основната разлика между глобалните и локалните променливи е, че глобалните променливи могат да бъдат достъпни глобално в цялата програма, докато локалните променливи могат да бъдат достъпни само в рамките на функцията или блока, в който са дефинирани. В тази тема първо ще разберем какви са променливите и обхвата, заедно с локалните променливи, глобалните променливи и след това разликите между двете променливи.
Какво е променлива?
Променливата е име, дадено на място в паметта за съхраняване на стойности в компютърна програма. Използва се за съхраняване на информация, която може да бъде препращана и манипулирана в програма.
гигабайт срещу мегабайт
Можем да изберем произволно име за променливата, но то трябва да следва семантиката на програмирането. Такава, каквато може да бъде , a, b, x, y, z, sub, div, total, avg и др .
Да кажем, че има две стойности, 10 и 20, които искаме да съхраним и използваме в нашата програма. За целта трябва да използваме променлива и ще направим следните стъпки:
- Първо ще създадем или декларираме променлива с подходящо име.
- Присвоете тези стойности на променливите, за да ги съхраните.
- След като тези стойности са съхранени, можем да използваме тези променливи с техните имена в нашата програма.
Както можем да видим на изображението по-горе, има два слота за памет, 001 и 002, и сме дали имена на тези местоположения като A и B. A съдържа 10, а B съдържа 20.
Различните езици за програмиране имат различни начини за деклариране на променливата. Например на езика C можем да декларираме променливата по следния начин:
Синтаксис: (Синтаксис за деклариране на променливи на език C)
datatype v1, v2, v3,....;
Пример:
#include void main(){ int a; int b; int sum; }
Обхват на променливата
Всяка променлива е дефинирана и може да се използва в своя обхват и определя дали в програмата тази променлива е достъпна за използване. Обхватът означава продължителността на живота на тази променлива. Това означава, че променливата може да бъде достъпна или видима само в своя обхват.
Обхватът на променливите може да бъде дефиниран с тяхната декларация, а променливите се декларират основно по два начина:
Какво е глобална променлива?
- Глобалните променливи са тези променливи, които са декларирани извън всички функции или блокове и могат да бъдат достъпни глобално в програма.
- Той може да бъде достъпен от всяка функция, присъстваща в програмата.
- След като декларираме глобална променлива, нейната стойност може да се променя, както се използва с различни функции.
- Животът на глобалната променлива съществува, докато програмата се изпълни. Тези променливи се съхраняват във фиксирани места в паметта, дадени от компилатора и не се почистват автоматично.
- Глобалните променливи се използват най-вече в програмирането и са полезни в случаите, когато всички функции трябва да имат достъп до едни и същи данни.
Пример:
#include int a=50, b=40; void main() { printf('a = %d and b=%d',a,b); }
В горния пример a и b са глобалните променливи.
Предимства на глобалната променлива
- Глобалните променливи могат да бъдат достъпни от всички функции, налични в програмата.
- Изисква се само една декларация.
- Много полезно, ако всички функции имат достъп до едни и същи данни.
Недостатъци на глобалната променлива
- Стойността на глобалната променлива може да бъде променена случайно, тъй като може да се използва от всяка функция в програмата.
- Ако използваме голям брой глобални променливи, тогава има голям шанс за генериране на грешка в програмата.
Какво е локална променлива?
- Тези променливи могат да бъдат достъпни само във функцията, в която са декларирани.
- Животът на локалната променлива е само в рамките на нейната функция, което означава, че променливата съществува, докато функцията се изпълни. След като изпълнението на функцията приключи, локалните променливи се унищожават и вече не съществуват извън функцията.
- Причината за ограничения обхват на локалните променливи е, че локалните променливи се съхраняват в стека, който е динамичен по природа и автоматично изчиства данните, съхранявани в него.
- Но като направим променливата статична с ключова дума 'static', можем да запазим стойността на локалната променлива.
Пример:
#include void main() { int x=50, y=40; printf('x = %d and y=%d',x, y); }
В горния пример сме декларирали x и y две променливи в основната функция. Следователно това са локални променливи.
Предимства на локалната променлива
- Едно и също име на локална променлива може да се използва в различни функции, тъй като се разпознава само от функцията, в която е декларирана.
- Локалните променливи използват памет само за ограниченото време, когато функцията се изпълнява; след това същото място в паметта може да се използва повторно.
Недостатъци на локалните променливи
- Обхватът на локалната променлива е ограничен само до нейната функция и не може да се използва от други функции.
- Споделянето на данни от локалната променлива не е разрешено.
Сравнителна диаграма между глобална променлива и локална променлива
Глобална променлива | Локална променлива |
---|---|
Глобалните променливи се декларират извън всички функционални блокове. | Локалните променливи се декларират във функционален блок. |
Обхватът остава в цялата програма. | Обхватът е ограничен и остава само в рамките на функцията, в която са декларирани. |
Всяка промяна в глобалната променлива засяга цялата програма, където и да се използва. | Всяка промяна в локалната променлива не засяга други функции на програмата. |
Глобална променлива съществува в програмата през цялото време, докато програмата се изпълнява. | Локална променлива се създава, когато функцията се изпълнява, и след като изпълнението приключи, променливата се унищожава. |
Той може да бъде достъпен в цялата програма от всички налични функции в програмата. | Той може да бъде достъпен само от операторите на функцията, в които е деклариран, а не от другите функции. |
Ако глобалната променлива не е инициализирана, тя приема нула по подразбиране. | Ако локалната променлива не е инициализирана, тя приема стойността на боклука по подразбиране. |
Глобалните променливи се съхраняват в сегмента с данни на паметта. | Локалните променливи се съхраняват в стек в паметта. |
Не можем да декларираме много променливи с едно и също име. | Можем да декларираме различни променливи със същото име, но в други функции. |
Примери за разбиране на разликите между локална и глобална променлива
Сега нека разберем примери в различни езици за програмиране, за да разберем по-добре разликата между локални и глобални променливи.
Местно срещу глобално в C
Пример-1:
#include // Global variables int a; int b; int Add() { return a + b; } int Mul() { int c=10; //Local Variable int d=20; ////Local Variable return c*d; } void main() { int Ans1, Ans2, c=30;// Local variable a = 50; b = 70; Ans1 = Add(); Ans2= Mul(); printf('The addition result is: %d ',Ans1); printf('The Multiplication result is: %d ',Ans2); printf('%d ', c); }
Изход:
The addition result is: 120 The Multiplication result is: 200 30
Както виждаме в горната програма, взехме а и b глобални променливи, до които се осъществява достъп в различни функции като Add() и main(). Като има предвид, че има и локални променливи като c, d, Ans1 и Ans2, които са достъпни само от онези функции, в които са декларирани.
Ако се опитаме да използваме променливи c и d извън функцията Mul(), те ще бъдат използвани като нови променливи. Както показахме, като взехме c и във функцията main(), тя се третира като нова променлива.
Местни срещу Глобален в Python
Пример-1:
v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) func1() #calling func1 def func2(): print(v1) func2() #callin func2
Изход:
Hey, I am a Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program.
В горната програма сме взели една глобална променлива v1 и една локална променлива v2. Тъй като v1 е глобален, той може лесно да бъде достъпен във всяка функция, а v2 е локален; използва се само в рамките на декларираната му функция. Но ако се опитаме да използваме v1 във func1, това ще даде грешка. Нека видим примера по-долу:
Пример-2
v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) print(v1) func1() #calling func1 def func2(): print(v1) print(v2) func2() #callin func2
Ако се опитаме да получим достъп до v1, той може лесно да бъде достъпен във fun1 и func2. Но ако се опитаме да осъществим достъп до v2 извън неговата функция, което означава във func2, това ще даде грешка по време на изпълнение. Ще получим изхода по-долу, след като изпълним горния код:
Грешка по време на изпълнение:
NameError: global name 'v2' is not defined
Изход:
Hey, I am Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program. Hey, I am Global Variable!, I can be used everywhere in the program.
Местни срещу Глобална променлива в Java
В Java няма концепция за глобални променливи; тъй като Java е обектно-ориентиран език за програмиране, всичко е част от класа. Но ако искаме да направим променлива глобално достъпна, можем да я направим статична, като използваме a статичен Ключова дума.
class Demo { // static variable static int a = 10; // non-static or local variable int b = 20; } public class Main { public static void main(String[] args) { Demo obj = new Demo(); // accessing the non-static variable System.out.println('Value of non-static variable is: ' + (obj.b)); // accessing the static variable System.out.println('Value of static variable is:' + (Demo.a)); } }
Изход:
Value of non-static variable is: 20 Value of static variable is:10
В горната програма сме използвали една локална променлива или нестатична променлива и една статична променлива. Локалната променлива може да бъде достъпна чрез използване на обекта на класа Demo, докато статичната променлива може да бъде достъпна чрез името на класа.