Променљиве у било ком програмском језику имају кључну улогу. Променљиве су класификоване у Глобалне и Локалне варијабле на основу њиховог опсега. Главна разлика између глобалних и локалних променљивих је у томе што се глобалним променљивим може приступити глобално у целом програму, док се локалним променљивим може приступити само унутар функције или блока у којем су дефинисане. У овој теми ћемо прво разумети шта су променљиве и опсег, заједно са локалним променљивим, глобалним променљивим, а затим и разлике између обе променљиве.
Шта је променљива?
Променљива је име дато меморијској локацији за чување вредности у рачунарском програму. Користи се за чување информација које се могу референцирати и којима се може манипулисати у програму.
стринг у инт јава
Можемо изабрати било које име за променљиву, али оно мора да прати семантику програмирања. Такав какав може бити , а, б, к, и, з, суб, див, тотал, авг, итд .
Рецимо да постоје две вредности, 10 и 20, које желимо да сачувамо и користимо у нашем програму. За ово морамо да користимо променљиву, а ми ћемо урадити следеће кораке:
- Прво ћемо креирати или декларисати променљиву са одговарајућим именом.
- Доделите те вредности променљивим да бисте их сачували.
- Када се ове вредности складиште, можемо користити ове променљиве са њиховим именом у нашем програму.
Као што видимо на горњој слици, постоје два меморијска слота, 001 и 002, и дали смо имена овим локацијама као А и Б. А садржи 10, а Б садржи 20.
Различити програмски језици имају различите начине за декларисање променљиве. На пример, у језику Ц можемо декларисати променљиву на следећи начин:
Синтакса: (синтакса декларације променљиве у језику Ц)
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); }
У горњем примеру, а и б су глобалне променљиве.
низови у Јави
Предности глобалне променљиве
- Глобалним варијаблама могу приступити све функције присутне у програму.
- Потребна је само једна декларација.
- Веома корисно ако све функције приступају истим подацима.
Недостаци глобалне варијабле
- Вредност глобалне променљиве може се случајно променити јер је може користити било која функција у програму.
- Ако користимо велики број глобалних променљивих, онда постоји велика шанса за генерисање грешке у програму.
Шта је локална променљива?
- Овим променљивим се може приступити само унутар функције у којој су декларисане.
- Животни век локалне променљиве је само унутар њене функције, што значи да променљива постоји док се функција не изврши. Када је извршење функције завршено, локалне варијабле се уништавају и више не постоје изван функције.
- Разлог за ограничен обим локалних променљивих је тај што се локалне променљиве чувају у стеку, који је динамичке природе и аутоматски чисти податке ускладиштене у њему.
- Али тако што ћемо променљиву учинити статичном помоћу кључне речи 'статиц', можемо задржати вредност локалне променљиве.
Пример:
#include void main() { int x=50, y=40; printf('x = %d and y=%d',x, y); }
У горњем примеру, декларисали смо к и и две променљиве унутар главне функције. Дакле, ово су локалне варијабле.
Предности локалне променљиве
- Исто име локалне променљиве може се користити у различитим функцијама јер га препознаје само функција у којој је декларисана.
- Локалне променљиве користе меморију само за ограничено време када се функција извршава; након што се та иста меморијска локација може поново користити.
Недостаци локалних варијабли
- Опсег локалне променљиве је ограничен само на њену функцију и не може је користити друге функције.
- Дељење података путем локалне променљиве није дозвољено.
Упоредни графикон између глобалне и локалне променљиве
Глобална променљива | Локална променљива |
---|---|
Глобалне променљиве су декларисане изван свих функционалних блокова. | Локалне променљиве су декларисане унутар функционалног блока. |
Обим остаје током целог програма. | Обим је ограничен и остаје унутар функције само у којој су декларисани. |
Свака промена глобалне променљиве утиче на цео програм, где год да се користи. | Свака промена локалне променљиве не утиче на друге функције програма. |
Глобална променљива постоји у програму све време док се програм извршава. | Локална променљива се креира када се функција изврши, а када се извршавање заврши, променљива се уништава. |
Њему се може приступити кроз програм помоћу свих функција присутних у програму. | Њему се може приступити само наредбама функције у којима је декларисана, а не другим функцијама. |
Ако глобална променљива није иницијализована, подразумевано узима нулу. | Ако локална променљива није иницијализована, подразумевано узима вредност смећа. |
Глобалне варијабле се чувају у сегменту података меморије. | Локалне променљиве се чувају у стеку у меморији. |
Не можемо декларисати много променљивих са истим именом. | Можемо декларисати различите променљиве са истим именом али у другим функцијама. |
Примери за разумевање разлика између локалне и глобалне променљиве
Хајде сада да разумемо примере у различитим програмским језицима да бисмо боље разумели разлику између локалних и глобалних варијабли.
Локално против глобалног у Ц
Пример-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
Као што видимо у горњем програму, узели смо а и б глобалне променљиве којима се приступа у различитим функцијама као што су Адд() и маин(). Док постоје и локалне варијабле као што су ц, д, Анс1 и Анс2, којима приступају само оне функције у којима су декларисане.
Ако покушамо да користимо ц и д променљиве ван функције Мул(), оне ће се користити као нове променљиве. Као што смо показали узимањем ц у маин() функцији, он се третира као нова променљива.
Локални вс. Глобално у Питхон-у
Пример-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.
У горњем програму смо узели једну глобалну променљиву в1 и једну локалну в2. Пошто је в1 глобално, може му се лако приступити у било којој функцији, а в2 је локална; користи се само у оквиру своје декларисане функције. Али ако покушамо да користимо в1 у фунц1, то ће дати грешку. Погледајмо следећи пример:
Пример-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
Ако покушамо да приступимо в1, лако се може приступити у фун1 и фунц2. Али ако покушамо да приступимо в2 ван његове функције, што значи у фунц2, даће грешку током извршавања. Добићемо доњи излаз након извршавања горњег кода:
Грешка у раду:
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.
Локални вс. Глобална променљива у Јави
У Јави не постоји концепт глобалних променљивих; пошто је Јава објектно оријентисани програмски језик, све је део класе. Али ако желимо да променљиву учинимо глобално доступном, можемо је учинити статичном коришћењем а статичне Кључна реч.
јава излазни знакови
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
У горњем програму користили смо једну локалну променљиву или нестатичку и једну статичку променљиву. Локалној променљивој се може приступити коришћењем објекта класе Демо, док се статичкој променљивој може приступити коришћењем имена класе.