Константалар, ўзгарувчилар ва функцияларга мурожаатлар
дастурнинг бажарилувчи қисмининг асосий элементлари бўлиб
топилади. Бу элементларнинг хар бирининг ўз қийматлари мавжуд
бўлиб, улар бирор бир маълумот типига тегишли бўлади. Амаллар
белгилари ва қавслар ёрдамида янги қийматлар ҳосил қилишнинг
қоидаларини белгиловчи ифодаларни тузиш мумкин. Хусусий ҳолда
ифодалар битта элементдан, яъни битта константа, ўзгарувчи ёки
функцияга мурожаатдан иборат бўлиши мумкин. Бундай ифода
қийматининг типи, мос равишда ундаги элемент типи билан бир ҳил
бўлади. Умумий ҳолда ифода бирнечта элементлардан ва амаллар
белгиларидан таркиб топади, қийматининг типии эса операндлар
типлари ва уларга қўлланилувчи амалларга боғлиқ аниқланади.
Ифодага мисоллар:
У
21
(a+b)*c
sin(t)
a>2
not Flag and (a=b)
NIL
[1, 3, .7] * set1
Амаллар (операциялар)
Delphi да қуйидаги амаллар аниқланган:
Унар амаллар (not, @);
Мультипликатив амаллар (*, /, div, mod, and, shl, shr);
Аддитив амаллар (+, -, or, xor);
Муносабат белгилари (=, <>, <, >, <=, >=, in).
Бу амалларнинг бажарилиш тартиби юқорида ёзилган тартибга
мос келади, яъни аввал унар амаллар ва энг охирида муносабат
амаллари бажарилади. Бир хил тартибдаги амаллар албатта «чапдан
ўнгга» бажарилиши шарт эмас, бажарилиш тартиби дастур кодини
оптималлаш шартларига кўра компилятор томонидан
белгиланади.Мантиқий ифодаларни ҳисоблашда бирхил тартибдаги
амаллар албатта чапдан ўнгга қараб бажарилади, хамда Option
мулоқата ойнасининг Compiler саҳифасидаги Complete Boolean eval
бандидаги байроқчанинг мавжудлигига кўра бу амалларнинг
хаммаси бажариши ёки етарли қисми гина бажариши мумкин. Бу
байроқча мавжуд ҳолида барча амаллар бажарилади, мавжуд бўлмаса
бирҳил натижа берувчи зарурлари гина бажарилади.
Турли типдаги операндалар устида амалларни қуллаш
қоидалари қуйидаги жадвалда кўрсатилган:
Опер
ациял
ар
Амаллар
Операнда типии
Натижа типии
not
Инкор этиш
Мантиқий
Мантиқий
not
Инкор этиш
Мантиқий
Операнда типи
@
Манзил (Адрес)
Ихтиёрий
Кўрсатгич
*
Кўпайтма
Ихтиёрий бутун
Энг кичик
бутун
*
Кўпайтма
Ихтиёрий ҳақиқий
Extended
*
Тўпламлар
кесишмаси
Тўплам
Тўплам
/
Бўлиш
Ихтиёрий ҳақиқий
Extended
div
Бутунга бўлиш
Ихтиёрий бутун
Энг кичик
бутун
mod
Бўлинма қолдиғи
Ихтиёрий бутун
Энг кичик
бутун
and
Мантиқий ВА
Мантиқий
Мантиқий
and
Мантиқий ВА
Ихтиёрий бутун
Энг кичик
бутун
shl
Чапга суриш
Ихтиёрий бутун
Энг кичик
бутун
shr
Ўнгга суриш
Ихтиёрий бутун
Энг кичик
бутун
+
Қўшиш
Ихтиёрий бутун
Энг кичик
бутун
+
Қўшиш
Ихтиёрий ҳақиқий
Extended
+
Тўламлар
бирикмаси
Тўплам
Тўплам
+
Сатрларни
бирлаштириш
Сатрий
Сатрий
-
Айирма
Ихтиёрий бутун
Энг кичик
бутун
-
Айирма
Ихтиёрий ҳақиқий
Extended
or
Мантиқий ЁКИ
Мантиқий
Мантиқий
or
Мантиқий ЁКИ
Ихтиёрий бутун
Энг кичик
бутун
=
Тенг
Ийтиёрий оддий ёки
Мантиқий
сатрий
<>
Тенг эмас
Ийтиёрий оддий ёки
сатрий
Мантиқий
<
Кичик
Мантиқий
Мантиқий
<=
Кичик ёки тенг
Мантиқий
Мантиқий
>
Катта
Мантиқий
Мантиқий
>=
Катта ёки тенг
Мантиқий
Мантиқий
@ унар операция ихтиёрий типдаги операндага қўлланилиши
мумкин ва таркибида манзили (адреси) мавжуд бўлган Pointer типни
ҳосил қилади. Агар @ операндаси процедура, функция ёки объект
услубига қўлланилса, натижаси Ушбу процедурага (функцияга ёки
услубга) кириш нуқтаси манзили (адреси) бўлади. Бу адресни
ассемблерда тузилган қисм дастурларда ёки inline хизматчи сўзи
билан берилувчи дастур фрагментларида ишлатилиши мумкин.
Delphi да қуйидаги мантиқий амаллар аниқланган:
not → мантиқий ЭМАС;
and→ маетиқий ВА;
or → мантиқий ЁКИ;
xor → истисноли ЁКИ.
Мантиқий амаллар бутун ва мантиқий типдаги операндаларга
қўлланилади. Агар операндалар бутун сонлар бўлса, у ҳолда натижа
хам бутун бўлади, уларнинг иккилик разрядлари қуйидаги жадвалда
кўрсатиган қоидага асосан шаклланади:
1-операнд 2-операнд
not
and
or
xor
1
Нет
0
Нет
Нет
Нет
0
Нет
1
Нет
Нет
Нет
0
0
Нет
0
0
0
0
1
Нет
0
1
1
1
0
Нет
0
1
1
1
1
Нет
1
1
0
Delphi да мантиқийларга бутун сонлар учун одатда яна иккита
сижитувчи операторлар кўлланилади:
i shl j → i таркибидагиларни j разрядга чапга силжитиш; бўш
қолган кичик разрядлар ноллар билан тўлдирилади;
i shr j→i таркибидагиларни j разрядга унгга силжитиш; бўш
қолган катта разрядлар ноллар билан тўлдирилади.
Бу амаллардаги i ва j бутун типдаги ихтиёрий ифода.
Мантиқий ифодалар устидаги мантиқий амаллар натижалари
қуйидаги жадвалдаги қоидага биноан аниқланади:
1-операнд 2-операнд
not
and
or
xor
True
Нет
False
Нет
Нет
Нет
False
Нет
True
Нет
Нет
Нет
False
False
Нет
False
False
False
False
True
Нет
False
True
True
True
False
Нет
False
True
True
True
True
Нет
True
True
False
in муносабат амали икки операндаларга қўлланилади. Биринчи
операнда ихтиёрий тартиб типидаги ифода бўлиши, иккинчи
операнда эса ўша типдаги элементлардан ёки идентификатордан
таркиб топган тўплам бўлиши лозим. Агар чап операнд тўпламга
тегишли бўлса, натижа True бўлади.
Do'stlaringiz bilan baham: