Urganch davlat universiteti axborot texnologiyalari kafedrasi



Download 13,56 Mb.
Pdf ko'rish
bet51/99
Sana31.12.2021
Hajmi13,56 Mb.
#262961
1   ...   47   48   49   50   51   52   53   54   ...   99
Bog'liq
akademik litsey kasb hunar kollejlarda informatika fanidan olimpiada masalalarini ishlash boyicha korsatmalar

2.4 listing. Polikomni hisoblash (pratseduraviy variant). 

 

program Polynom_Procedures; 

  

const DIGITS=[

'0'


..

'9'


]; 

  

var tv:text; 

  x,term,sum:

real


  sign:


longint

  ch:



char



procedure ERROR; 

  

begin 

    writeln(

'ERROR!!!'

); 

    readln; 



   

end

  

function power(a:

real

; n:


longint

):

real



    


var res:

real


   


begin 

    if a=



then power:=



else begin 

      res:=exp(n*ln(abs(a))); 

      


if (a<

0



and odd(n) then power:=-res 

      


else power:=+res 

      


end 

     end

    


procedure ReadInt(var fv:text; var n:

longint


); 

    


begin 

      n:=

0



      

while ch in DIGITS do begin 

        n:=n*

10

+ord(ch)-ord(



'0'

); 


        read(fv,ch); 

      


end

     


end

   


procedure ReadTerm(var fv:text; var value:

real


); 

    


var koef,deg:

longint


        do_read_deg:boolen; 

    

begin 

      do_read_deg:=

true


      


if ch in DIGITS then begin 

        ReadInt(fv,koef); 

        


if ch=

'*' 


          

then read(fv,ch) 

         



else do_read_deg:=

false 


        

end 

        else koef:=

1



        

if do_read_deg then begin 

          if ch<>

'x' 


then ERROR; 

          read (fv,ch); 

          

if ch<>

'^' 


then ERROR; 

          read(fv,ch); 

          ReadInt(fv,deg); 

          



end 

          else deg:=

0




          term:=koef*power(x,deg) 

          



end

        


begin 

          assign(fv,

'polynom.dat'

);reset(fv); 

          readln(fv,x); 

          sign:=+

1

;sum:=



0

          



repeat 

            read(fv,ch); 

            ReadTerm(fv,term); 

            sum:=sum+sign*term; 

            



if ch=

'+' 


then sign:=



else  



            if ch=

'-' 


then sign:=-



else  



            if ch=

' ' 


then 

break 

            

else ERROR; 

           



until ch=

' '


           close(fv); 

           assign(fv,

'ploynom.sol'

);rewrite(fv); 

           writeln(fv,sum);close(fv) 

           

end

           

 

  Agar  dasturlash  sistemasi  matnining  navbatdagi  simvolini  uni  fayldan  o‘qimasdan 



qarashga  yoki  faylning  joriy  pazitsiyasini  bitta  simvolga  orqaga  qaytarishga  imkon 

bersa, dasturni oddiyroq va chiroyliroq qilish mumkin. 

  Ifodalsh  simvollarini  saqlash  uchun  biz  bilib  turib  string  tipini  ishlatmadik. 

Birinchidan, bu tipbunga o‘xshash masalalarni yechish uchun kerakmas. Ikkinchidan, 

bunday tipdagi qatorlar uzunligi 255 dan ko‘p emas (Delphining so‘ngi versiyalarida 

bunday cheklov olib tashlangan ). 

  Kiruvchi  ma’lumotlar  tog‘ri,  yoki  matn  qatori  faqat  tog‘ri  yozilgan  ko‘phadga  ega 

deb  tahlil  qilinadi.  Shunung  uchun  ERROR  prosedurasi  va  u  chaqiriladigan  uning 

tarmoqlari  umuman  olganda  kerakmas.  Biroq  bu  tarmoqlar  ifodalarni  tuzish 

qoidalariga bo‘ysunishini tekshirishni yengillashtiradi (osonlashtiradi ). 

 

Ifodalar tahlili bilan bog‘liq bir necha terminlarni aniqlashtiramiz. 



 

Matnning  qandaydir  ma’noga  ega  bo‘lgan  va  bo‘lmaydigan  (so‘z,ism,  konstantalar, 

operatsiyalar,  belgilari,  bo‘luvchilar  va  ular  qavslar)  alohida  qisimllari  deb  aytiladi. 

Matnda legzemalarning ajratib ko‘rstilishi leksik taxlil deyiladi. 

 

Ko‘phadda  leksemalar  –  bular  koefisentlar  va  darajalar  ko‘rsatkichlari  (ular butun  konstantalar 



hisoblanadi),  operatsiyalarning  +,  -,  *,  ^  belgilari  va  x  harfi.  Jumladan,  ReadInt  prosedurasi 

butun konstantalar va ularga mos sonlarning olinishining leksik taxlilini bajaradi.  

Biroq, biz  nafaqat  leksemalarni  ajratamiz  balki  shartda  keltirilgan uning  sturukturasini  xam 

taxlil  qilamiz.  Masalan,  ko‘paytmaning  o‘zi  qo‘shiluvchilarning  summasi  hisoblanadi, 

qo‘shiluvchi esa koefisientning darajasiga ko‘paytmasidir. 

 

Ifodalar strukturasi-sintaksis, strukturaning tahlili esa sintaktik taxlil deyiladi. 



 


Shunday  qilib,  ReadTerm  prosedurasi  sintaktik  tahlilni  bajaradi  va  ko‘phaddagi  aloxida 

qo‘shiluvchining  qiymatini  hisoblaydi.  Ko‘phadning  o‘zining  tahlili  dasturning  asosiy  siklini 

bajarganda ro‘y beradi. 


Download 13,56 Mb.

Do'stlaringiz bilan baham:
1   ...   47   48   49   50   51   52   53   54   ...   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