Тағйирёбанда чист?

Печать

Тағйирёбанда (variable) - ин мисли зарфе барои нигоҳ доштани маълумот аст. Вақте ки маълумот дар тағйирёбанда сабт шудааст (ба таври дигар, вақте ки ба тағйирёбанда қимат бахшида шудааст), ин маълумотро тағйир додан, дар Web-броузер чоп намудан, тавассути почтаи электронӣ ирсол намудан ва ғайра имконпазир аст.

Тағйирёбандаҳо чандир ҳастанд:
- маълумотро дар онҳо ҷойгир кардан мумкин аст;
- маълумотро аз онҳо гирифтан мумкин аст, ки ин ба қимати худи тағйирёбанда таъсир намерасонад;
- маълумоти навро ба онҳо ҷойгир кардан мумкин аст.

Ин амалҳоро чанд маротиба, ки зарур бошад, такрор кардан мумкин аст. Аз номаш маълум аст, ки тағйирёбанда дар барнома чизи доимӣ нест. Масалан, дар забони барномасозии PHP тағйирёбандаҳо фақат вақти амали скрипт вуҷуд доранд ё соҳиби қимат ҳастанд. Ҳамту ки гузариш ба саҳифаи нав ба амал омад, мавҷудияти тағйирёбандаҳои саҳифаи пешина қать мегардад. Ин бағайр аз ҳолате, ки тағйирёбанда ва қимати он махсус ба ин саҳифаи нав равон карда шудаанд.

Тағйирёбандаҳо баробари аввалин забонҳои барномасозӣ пайдо шуданд. Натиҷаи кори ҳар барнома ба иҷрои амалҳо нисбати ягон маълумот оварда мешавад. Ёдрас мекунем, ки хотира (memory) - ин пайдарпаии байтҳо (bytes), ки ҳар якешон аз 0 то 255 қимат мегиранд мебошад. Азбаски байтҳо хело бисёранд, ягона роҳи фарқ кардани онҳо ин ба ҳар яки онҳо бахшидани рақами тартибӣ аст. Ҳамин тавр аст. Ҳар як байти хотираи фаврӣ ба протсессор тавассути рақами тартибиаш дастрас аст. Ин рақами тартибии байт суроғаи ҳамин байт номида мешавад.

Замонҳое, ки барномаҳо дар коди мошинӣ навишта мешуданд, барномасоз бояд дар хотир нигоҳ медошт, ки қимати заруриро ӯ ба кадом мавқеи хотира сабт карда буд. Тасаввур кунед, ки рафти навишти барнома чӣ қадар мураккаб мешуд, агар зарурияти кор бо якчанд қимат пайдо мешуд. Суроғаи байти хотира ададест, ки кам чиз мегӯяд. Ҳаҷми калони хотира ба барномасоз душворӣ ба амал меовард.

Бо якумин забонҳои барномасозӣ имконияти муфиди пайвастани мавқеи муайян дар хотираи фаврӣ бо номи рамзӣ (маҷмӯи рамзҳо) пайдо шуд. Назар ба суроғаҳо номи тағйирёбандаҳо мундариҷаи ячейкаи хотираро метавонанд инъикос кунанд. Лекин ном ягона чизе, ки тағйирёбандаро муайян мекунад, нест. Протсессор бо се намуди маълумот кор карда метавонад: байт, калима ва калимаи дучанда. (?) (Калимаҳои «калима» ва «калимаи дучанда» дар ин ҷо ба мазмуни махсус истифода шудаанд.) Аз ин сабаб муайян намудани тағйирёбанда дар забонҳои савияи поёнӣ ва миёна одатан бо нишон додани намудани тағйирёбанда иҷро карда мешавад. Ин ду хосият (ном ва намуди тағйирёбанда) мавқеи зарурии хотира ва тарзи истифодаи онро муайян мекунанд. Дар аксарияти ҳолатҳо мазҳ намуди тағйирёбанда муайян мекунад, ки ин тағйирёбанда дар хотираи фаврӣ чанд қадар байтро забт мекунад. Масалан, тағйирёбандаи намуди BYTE бо номи А муайян шудааст. Протсессор аз номи тағйирёбанда (А) мавқеи онро дар хотира муайян мекунад ва ҳангоми гирифтани қимати ин тағйирёбанда фармонеро истифода мебарад, ки барои гирифтани байт (на калима ва на калимаи дучанда) истифода мешавад.

Дар ҳолати умумӣ, тағйирёбанда – ин соҳаи номгузошташудаи хотира аст. Вобаста ба забон, эълони тағйирёбанда метавонад бо нишон додани намуди он ҳамроҳ бошад. Одатан дар забонҳои савияи баланд нишон додани намуд истифода намешавад. Фарқияти синтаксисӣ байни забонҳо маҳз дар тарзи эълони тағйирёбандаҳо аён мегардад. Дар С ва С++ аниқ кардани намуд, дар PHP муайянкунандаи сохтор $.

Дар олами муосири барномасозӣ барномасоз натанҳо ном ва намуди тағйирёбандаро донистанаш зарур аст. Инчунин мафҳумҳои фазои номҳо ва соҳаи амал мавҷуданд. Тасаввур кунед, ки барномаеро тартиб дода истодаед, ки дар он якчанд тағйирёбанда истифода мешаванд. Номҳои ҳамаи ин тағйирёбандаҳо рӯйхатеро ташкил медиҳанд, ки фазои номҳоро муайян мекунад. Тасаввур мекунем, ки дар рафти сохтани барнома хато карда, ду тағйирёбандаро бо номи якхела эълон кардем. Вақти кӯшиши ба кор андохтани барнома компилятори он оиди ин хатогӣ маълумот медиҳад. Ин имконнопазир мебуд, агар номи ҳамаи тағйирёбандаҳо зери назорати компилятор намебуданд. Яъне комил будани фазои номҳо аз барномасоз ба компилятор вогузошта мешавад, ки ин раванди бунёд ва ислоҳи барномаро сабук менамояд. Дар амал мисоли овардашуда на дар ҳамаи забонҳои барномасозӣ ба хатогӣ меорад. Ҳар як компилятор (ва ё интерпретатор) нисбати фазои номҳо талаботҳои худро дорад. Он чизе, ки дар як забон (дар ин ҳолат С ва С++) хато аст, дар забонҳои дигар метавонад хато набошад.

Агар пештар барномаҳо хурд буданду матни ибтидоишон дар як файл ҷойгир мешуданд, ҳозир матни ибтидоии онҳо метавонад аз якчанд файл иборат бошад. Ва дар ёд доштани номи уникалии ҳамаи тағйирёбандаҳои дар барнома истифодашаванда амалан қариби имконнопазир аст. Аз ин сабаб (ва на танҳо он) мафҳуми соҳаи амали (ё ки соҳаи мавҷудияти) тағйирёбанда ворид карда шуд. Соҳаи амал мафҳуми абстрактӣ аст. Ин мафҳум фақат дар забонҳои савияи миёна ва баланд татбиқ мешавад. Мақсади он тақсим намудани фазои номҳо ба якчанд қисмҳои новобаста аст. Ҳамин тавр, дар як барнома якчанд тағйирёбандаҳои ному намудашон якхела ба ҳамдигар халал нарасонида вуҷуд дошта метавонанд. Барномасозони кордон соҳаи амали тағйирёбандаҳоро бо блоки барнома алоқаманд мекунанд. Барои навкор ғояи ҷудо намудани соҳаи амал дар ҳудуди файлҳои алоҳидаи матни ибтидоии барнома фаҳмотар аст. Масалан, ин услуб дар PHP истифода мешавад. Ин чунин маъно дорад, ки тағйирёбандаи дар як файл эълоншуда дар файлҳои дигар тамоман ноаён аст. Ҳамин тавр, масалан, мо метавонем тағйирёбандаи номаш MyVar-ро дар якчанд файлҳои лоиҳа эълон намоем ва ин хатогӣ намешавад.

Пурратар оиди соҳаи амали тағйирёбандаҳо боз дар рафти таҳлили қисмҳои барнома гап мезанем.

Инак, тағйирёбанда дар барномасозӣ чунин хосиятҳоро дорост:
- ном;
- суроға;
- намуд;
- андоза, ки одатан бо намуд муайян мешавад;
- тааллуқият ба ягон фазои номҳо;
- соҳаи амал.

Добавить комментарий


Защитный код
Обновить

Произведение «OFTOB.COM» публикуется на условиях лицензии Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Непортированная.