Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
224
chaqiruv uchun joylashtirish. Ikkinchidan murojaat uchun dinamik maxlliy
o‘zgaruvchilar bilvosita bo‘lishi kerak, statik lokal o‘zaruvchilar yesa to‘g‘ridan to‘g‘ri.
Bu indirectness talab qilinadi chunki faqat ishlayotgan paytda (keyingi
mavzuda berilgan) lokal o‘zgaruvchilar aniklashi mumkin.
Nixoyat barcha lokal
o‘zgaruvchilar dinamik bo‘lsa, qism dastur tarixi sezgir bo‘lishi mumkin emas, ya’ni
ular maxlliy o‘zgaruvchilar va chakiruvlar orasidagi ma’lumotlarni saqlab qola
olmaydi. Bu bazan qism dasturlarga yozish imkoniyatiga ega bo‘ladi.
Qism dastur
tarixi uchun quyidagi misolni ko‘ramiz. pseudorandom raqamlari uchun bir vazifani,
hisoblashlardan foydalanib, shunday qism dastur pseudorandom raqamlari. shuning
uchun xar bir statik maxlliy ma’lumotlarni saqlash kerak. Tartib va qism dasturlar
iterator strukturasida ( oldingi mavzudda muxokama kilingan) da foydalaniladi ya’ni
dastularning boshka misollari kiradi.
Statik lokal o‘zgarvchilarni afzalligi dinamik maxalliy o‘zgaruvchilardan ko‘ra
joylashtirish va qaytarishga ko‘prok vakt sarflaydi. Shuningdek to‘g‘ridan to‘g‘ri
murojaat qilish mumkin bo‘lsa, bu yanada samarali bo‘ladi va albatta ular bir qism
dastur tarixi bo‘lish imkonini beradi. Statik lokal o‘zgaruvchilarning yana bir afzalligi
ularning qobilyatini qaytadan qo‘llab quvatlaydi. Shuningdek
ularni saqlash boshka
lokal qism o‘zgaruvchilar bilan birgalikda bo‘lmaydi.
Ko‘pchilik zamonaviy dasturlash tillarida qism dastur lokal o‘zgaruvchilarni
dinamik vazifasini bajarmaydi. S va S++ vazifalari lokal dinamik o‘zgaruvchilar
ayniqsa statik o‘zgaruvchilar deb e’lon qilinadi. Masalan quyidagi S va S++
vazifalarida o‘zgaruvchilar sum statik va count dinamik o‘zgaruvchilardir.
int adder(int list[], int listlen) {
static int sum = 0;
int count;
for (count = 0; count < listlen; count ++)
sum += list [count];
return sum;
C++, Java, and C# fakat dinamik lokal o‘zgaruvchilar. Python da fakat e’lon
qilishlar va ta’rif usullari uchun ishlatiladi. E’lon xar kanday global o‘zgaruvchan
bo‘lishi uchun usul xam belgilangan tartibda o‘zgaruvchan bo‘lishi kerak.
O‘zgaruvchilar usuldan tashqarida belgilanishi mumkin global deb e’lon qilinmasa
ham. Agar global o‘zgaruvchining nomi usulda belgilangan bo‘lsa, lokal va global deb
e’lon qilinmagan deyish mumkin.
Hamma lokal o‘zgaruvchilar phuton da dinamik hisoblanadi. Faqat lua da
o‘zgaruvilar cheklangan deb e’lon qilinadi. Har qanday blok lokal o‘zgaruvchilarni
kuyidagicha e’lon qilishi mumkin:
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
225
Local sum
Barcha e’lon qilinmagan o‘zgaruvchilar lua da globaldir.
Lua DA lokal
o‘zgaruvchilar global o‘zgaruvchilardan ko‘ra tezroq. (2006)