Ruby Chap : *,/,+,-  O‘ng : **  S –ga asoslangan tillar




Download 6,33 Mb.
Pdf ko'rish
bet34/194
Sana20.02.2024
Hajmi6,33 Mb.
#159185
1   ...   30   31   32   33   34   35   36   37   ...   194
Ruby
Chap : *,/,+,- 
O‘ng : ** 
S –ga asoslangan tillar Chap: *,/,%binary +,binary – 
O‘ng: ++,--,unar -,unar + 
Ada 
Chap: barchasi ,** dan tashqari 
Associativ emas :**
APLda , barcha operatorlar bir xil darajada ustunlikka ega. Shunday qilib, 
APLifodalarda operatorlari baholash tartibi barcha operatorlari uchun o‘ngdan 
chapga bo‘lgan associativy qoidasi bilan aniqlanadi. Misol uchun, ifoda 
A × B + C 
Qo‘shish operatori birinchi baholanadi, keyin Ko‘paytirish amali(* APLda 
ko‘paytirish operatori hisoblanadi). A 3 bo‘lsa edi, B 4 edi, va S 5 edi , keyin bu APL 
ifoda qiymati 27 bo‘ladi. 


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
55 
Umumiy tillar uchun ko‘p kompilyatorlar Aslida foydalanish, ba’zi arifmetik 
operatorlar matematik Assotsiativ ligi faktidan,qaysiki associative qoidalari faqat 
o‘z ichiga olgan ifoda qiymati hech qanday ta’sir ko‘rsatmaydi, foydalanadi. Misol 
uchun, qo‘shish matematik assotsiativ bo‘ladi, shuning uchun, matematikada ifoda 
A + B + S 
operator baholash tartibi bog‘liq emas. Floating-point amallarida bo‘lsa 
matematik Birlashtiruvchi operatsiyalar ham associativ edi, kompilyator ba’zi oddiy 
cheklovlarni bajarish uchun bu faktlardan foydalanishi mumkin. Xususan, agar 
kompilyatorga operatorlari qayta baho tartiblashtirish uchun ruxsat etilsa, u ifodani
baholash uchun bir oz tezroq kodni ishlab chiqarishi mumkin. Kompilyatorlar tez-tez 
bu turdagi optimallashtirishni amalga oshiradi.
Afsuski, kompyuterda, har ikkila haqiqiy son (1.356885985864448) 
ko‘rinishlari 
va 
arifmetik 
operatsiyalari, 
ularning 
matematikadagi 
shu 
tushunchalarning faqat taxminaniy yaxlitlanganligidir (chunki hajmi cheklashlar). 
matematik 
operator 
associative 
ekanliginifloating 
point 
operationlari 
assotsiativligini anglatmaydi. Aslida, faqat agar hamma operandlar va oraliq 
natijalari aniq floating-point da namoyish qilinsa jarayon aniqroq (associativ) 
biriktirilishi mumkin. Misol uchun, kompyuterda integer kiritilgan assotsiativ 
bolmaydigan patologik holatlar bor. Masalan, faraz qiling dastur ifodani baholash 
kerak, 
A + B + S + D 
va A va S juda katta musbat raqamlar, va B va D manfiy raqamlar juda katta 
absolut qimatdagi. Bu vaziyatda, A B qo‘shish oshib ketish xatosini chiqarmaydi, 
lekin A S qo‘shishda boladi xato . Xuddi shu tarzda, S B qo‘shish toshib ketish 
xatosini chiqarmaydi, lekin B D qo‘shishda boladi. Kompyuter arifmetik cheklanishi 
sabab, qo‘shish bu holatda esa fojiali nonassociative hisoblanadi. Shuning uchun 
agar Kompilyator bu qo‘shish operatsiyalarni qaytadan joylashtirsa ,bu ifoda 
qiymatiga ta’sir qiladi. Bu muammo, albatta, dasturchi tomonidan oldini olinishi 
mumkin ,o‘zgaruvchilar taxminiy qiymatlarini ma’lum holda. Dasturchi, (ikki belgilash 
jadvaldagi ham) ifodani ikki qismdan ko‘rsatish mumkin, toshib ketishni oldini 
olishni ta’minlab. Ammo, bu holat ancha nozik yo‘llar bilan yuzaga chiqishi mumkin, 
unda dasturchi tartibini farq qilish uchun kamroq imkoniyat bo‘ladi. 

Download 6,33 Mb.
1   ...   30   31   32   33   34   35   36   37   ...   194




Download 6,33 Mb.
Pdf ko'rish

Bosh sahifa
Aloqalar

    Bosh sahifa



Ruby Chap : *,/,+,-  O‘ng : **  S –ga asoslangan tillar

Download 6,33 Mb.
Pdf ko'rish