4 Lokal yo‘naltiruvchi muxitlar Ushbu bo‘limda qism dastur doirasida belgilangan parametrlarga erishish bilan
bog‘liq masalalar muxokama qilinadi. Qism dastur masalasi xam o‘rin olgan.
4.1 Lokal o‘zgaruvchilar Qism dastur o‘zining o‘zgaruvchilarni aniqlay oladi, shuningdek lokal muxit
o‘zgaruvchilarini xam. Qism dasturlar ichida belgilangan o‘zgaruvchilar lokal
o‘zgaruvchilar deyiladi, chunki ular unda belgilangan ya’ni ularning kulami qism
dasturlar organi hisoblanadi. 5 bob terminalogiyada lokal o‘zgaruvchilar statik yoki
dinamik bo‘lishi mumkin.
Lokal o‘zgaruvchilar dinamik bo‘lsa, qism dastur ijrosi boshlanadi va saqlash
qachondan erkin bo‘lsa, ular saklash uchun bog‘langan deb yakun yasaydi. Dinamik
lokal o‘zgaruvchilarni bir necha afzalliklari bor ya’ni asosiysi qism dastur taqdimiga
moslashuvchan bo‘ladi. Qism dasturlar dinamik lokal o‘zgaruvchilarga ega bo‘liщi
muhimdir. Dinamik qism dasturlarni yana bir afzalligi shundaki barcha harakatsiz
lokal o‘zgaruvchilar bilan faol qism dasturlar orasida aloqa o‘rnatishdir. Bu kata
afzalligi emas qachonki kompyuterni qism xotirasi bo‘lganda.
Dinamik lokal o‘zgaruvchilarning asosiy kamchiliklari kuyidagilardan iborat:
birinchi joylashtirish uchun vakt qiymati boshlangich va har bir qism dasturga
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)