Urganch davlat universiteti axborot texnologiyalari kafedrasi


 Kompilyatorga direktivalar



Download 13,56 Mb.
Pdf ko'rish
bet29/99
Sana31.12.2021
Hajmi13,56 Mb.
#262961
1   ...   25   26   27   28   29   30   31   32   ...   99
Bog'liq
akademik litsey kasb hunar kollejlarda informatika fanidan olimpiada masalalarini ishlash boyicha korsatmalar

1.3.5 Kompilyatorga direktivalar 

Kompilyatorga  direktivalar  bu  yerda  to‘liq  tushuntirilmaydi  –  buning  uchun  dasturlash 

muhiti tarkibida help ma’lumotnomasi mavjud. Buning maqsadi – ushbu vositani esga solish va 




uning nina uchun zarurligini tushunish.  Misol uchun mass massivi array kabi e’lon qilingan deb 

faraz  qilamiz  [1……N  Max]  of..  Agar  (i>1)  and  (mass  [i-1]=1)  shartni  hisoblashda  i  ning 

qiymati  1  ga  teng  bo‘lsa,  unga  mass[0]  elementining  qiymatini  olishga  urinish  massiv 

chegaralaridan  chiqishga  va  dasturga  avariyani  tugallanishiga  olib  kelishi  mumkin.  Balki  olib 

kelmasligi  ham  mumkin.  Bu  AND  va  OR  operatsiyalarining  hisoblash  rejimiga  hamda 

hisoblashlarga  massiv  indeksining  uning  chegaralaridan  tashqarida  tashqariga  chiqishni 

tekshirilayotganligiga  ham  bog‘liq  bo‘ladi.  (i>1  and  [i-1]=1)  ifodaga  har  ikkala  taqqoslash 

natijalarini topish, keyin esa ular ustida and (to‘liq hisoblash) operatsiyalarini bajarish mumkin. 

Biroq  avvalo  faqat  (i>1)  ni  hisoblash  mumkin  agar  uning  qiymati  false  bo‘lsa  unda  birga  and 

operatsiyasining  natijasi,  ikkinchi  operatsiyaning  qiymati  qanday  bo‘lmasin,  false  bo‘ladi. 

Shuning  uchun  ikkinchi operantni  umuman  hisoblamaslik  mumkin  (qisqa  hisoblash).  Anologik 

ravishda, agar or operatsiyasining birinchi operanti true qiymatiga ega bo‘lsa, uning natijasi true 

bo‘ladi,  aks  holda  ikkinchi  operantni  hisoblash  kerak  bo‘ladi.  Mantiqiy  ifodalarni  hisoblash 

usulini pascal tilining kampilyatoridan oldin tiklash mumkin. Turbo Pascalda Turbo muhitining 

options  (Compiler) Compilate  boolen  evalution  menyusining  muhitida  kresni  qo‘yish  yoki  olib 

tashlash  mumkin.  Agar  bayroqcha  qo‘yilgan  bo‘lsa  kompilyator  generatsiyalangan  dasturlarga 

to‘liq  hisoblash  bajariladi.  Bayroqcha  qo‘yilmagan  bo‘lsa  qisqa  hisoblash  yuz  beradi.  Shunday 

qilib dasturning kompilyatsiyasi natijasi turbo muhit sozlashlariga bog‘liq bo‘ladi, bu esa hamma 

vaqt  ham muqbul emas. Kompilyatsiyaning zarur rejimlarining ko‘rsatmalarini umumiy {$ …} 

ko‘rinishiga ega kampilyatorga direktivalar ko‘rinishida dastur matniga kiritish qulay. “mantiqiy 

qisqa hisoblashlarini o‘tkazish” direktiva {$b} ko‘rinishiga, ”to‘liq hisoblashlar o‘tkazish” – {$B 

+} ko‘rinishga ega bo‘ladi. “massiv indekslarini diapazoni chegaralaridan chiqishini tekshirish” 

direktivasi –{$R - } ko‘rinishida bo‘ladi. Shunday qilib (i>1) and (mas [i-1]=1) shartni hisoblash 

xatolik  bilan  tugallanishiga  olib  keladi,  agar  uning  kolleksiyasida  {$B+}va  {$R+}  direktivilar 

ta’sir ko‘rsatish mumkin. Agar dastur kodi {$R-} tasirida kompilyatsiyalansi, uning bajarilishida 

massivlarning  chegarasidan  chiqish  tekshirilmaydi.  Umuman  tekshirishlar  dastur  bajarilishini 

to‘xtatadi.  Chunki  yakuniy  kompilyatsiyadan  oldin  ularni  odatda  yo‘qotadilar.  Biroq  sozlash 

vaqtida {$R+} ni qo‘shishni qa’tiy tavsiya qilamiz. Agar dastur massiv chegaralaridan tashqariga 

chiqsa unda u noto‘g‘ri bo‘lishi mumkin, sozlash maqsadi esa xatolarni to‘g‘irlash  hisoblanadi. 

Shunday ekan izlashning bundan avtomatlashtirilganiga quvonish kerak. Bundan tashqari massiv 

chegaralaridan tashqariga chiqishda dastur uchun ajratilgan xotira chegarasidan chiqish ehtimoli 

mavjud. Ushbu xatoga “dastur xatoni keltirib chiqaradi va to‘xtatiladi” xabarini berib operatsion 

sistemani  ko‘rsatadi,  bunda  dasturlash  muhiti  bilan  birga  to‘xtatiladi.  Shuning  uchun  “o‘zini 

nazorat  qiluvchi  dasturning”  rangi  check  error  at  line  xabari  xato  o‘rni  ko‘rsatiladi,  u  juda 

axborotlarga  boydir.  To‘liq  dasturga  balki  zarur  bo‘lgan,  biroq  sozlashda  foydali  bo‘lgan 

tekshirishni  belgilovchi  ikki  direktivani  eslatib  o‘tamiz.  {$Q+}  direktivi  –  arifmetik 

to‘ldirishlarni tekshirishni {$Q+} direktiva dasturiy oqim to‘ldirishini belgilaydi. Nihoyat, turbo 

(Borland) Pascal dasturida kampilyatoriga ishlatilgan barcha direktivalarni avtomotik saqlashga 

imkon  beradi  -  yordamida  (  tugmachasini  bosib  ushlab  turib  ikki  marta   

bosish  bilan)  yordamida.  Biroq  ushbu  imkoniyatdan  foydalanishni,  faqatgina  dastur  xuddi 

shunday  versiyadagi  kampiliyator  bilan  hamma  vaqt  transmissiyasi  qilishga  kafillik  bo‘lsagina 

tavsiya  qilamiz.  Agarda  dastur  turli  xil  muhitlarda  (masalan  Turbo  pascal  va  Free  pascal) 

kompiliyatsiyalansa  u  holda  barcha  ishlatiluvchi  kompilyatorlar  uchun  ma’nosi  bir  xilligi 

ma’lum  bo‘lgan  tekshirilgan  direktivalarni  qo‘llash  ancha  yaxshi  samara  bo‘ladi.  Yuqorida 

kompiliyatorga  direktivialar  haqida  aytilganlar  faqat  Turbo  Paskalgagina  to‘g‘ri  keladi.  Agarda 

o‘quvchi  boshqa  dasturlash  sistemalaridan  foydalansa  analogik  savollarga  javoblarni  ushbu 




sistemalar  va  boshqalari  bo‘yicha  so‘rovnomalarni  qo‘llaganlardan  topish  mumkin.  Ba’zan 

bo‘lak  aperatsiyalarni  hisoblash  usullariga  bog‘liq  bo‘lmagan  holda  dasturning  xabarsiz 

boshqarilishini kafillash maqsadida “agar birinchi shart bajarilgan bo‘lsa ikkinchi marta tekshir” 

pirinsipidan aniq  foydalaniladi.  Masalan  If  i>1  then  if  mass[i-1]  =1  then  baxtga  qarshi  bunday 

usul  keltirilgan  oddiy  holda  o‘rinlidir.  Biroq, masalan,  agar  tarmoqlanish  operatori  and shartga 

ega bo‘lgan holda else qismiga ega bo‘lsa yoki shart tarmoqlanishiga emas balki siklga mansub 

bo‘lsa. 


Download 13,56 Mb.

Do'stlaringiz bilan baham:
1   ...   25   26   27   28   29   30   31   32   ...   99




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish