PROTSEDURA-FUNKSIYA
Оценка 5

PROTSEDURA-FUNKSIYA

Оценка 5
Семинары
docx
информатика
11 кл +1
29.04.2019
PROTSEDURA-FUNKSIYA
Protsedura qism dasturi qism dasturda bir necha natija hosil qilish kerak bo‘lgan hollarda ishlatiladi va u asosiy dasturda struktura bo‘yicha qism dastur bo‘limida, yani o‘zgaruvchilar va operatorlar bloki bo‘limlari orasida tasvirlanadi. Har bir protsedurani tasvirlash sarlavhadan boshlanadi. Protsedura sarlavhasi va umumiy ko‘rinishi quyidagicha bo‘ladi: PROCEDURE [()] ; end; Bu yerda PROCEDURE – xizmatchi so‘z; - protseduraning nomi; - tiplari ko‘rsatilgan berilganlar va natijalarni ifodalaydigan nomlar tiplari bilan sanab o‘tiladi. Berilganlar quyidagicha yoziladi: ::=:[;:…]; Berilganlarni parametr qiymat deb ham ataladi. Natijalarni ifodalaydigan nomlar quyidagicha yoziladi: ::=:[;:…]; Natijalarni parametr o‘zgaruvchi deb ham ataladi. Soxta parametrlar ro‘yxatida parametr protsedura va parametr funksiyalar ham bo‘lishi mumkin. Protsedura qism dasturiga murojaat Protsedurani bajarish uchun asosiy dasturning kerakli joyidan unga murojaat qilish kerak. Murojaat quyidagicha amalga oshiriladi: [()]; Bunda haqiqiy parametrlar ro‘yxati va protseduradagi soxta parametrlar ro‘yxati orasida to‘liq moslik bo‘lishi shart, yani ular soni bir xil bo‘lishi, kelish tartiblari mos tushishi va tiplari ham mos ravishda bir xil bo‘lishi kerak. Ro‘yxatda parametrlar vergul bilan ajratiladi. Protsedura chaqirilganda soxta parametrlar o‘rniga haqiqiy parametrlar qo‘yiladi. Berilganlar(parametr qiymat) va natijalar(parametr o‘zgaruvchi)ni yuqoridagidek ajratishni quyidagicha tushuntirish mumkin: Berilganlar protsedura ichida foydalanish uchun kerak, yani protsedura asosiy dasturdan chaqirilganda berilganlar(soxta parametrlar) asosiy dasturdan kelayotgan aniq parametrlar bilan almashtiriladi. Ushbu parametrlar protsedura ichida o‘zgarishi ham mumkin, bu o‘zgarish protseduradan chiqishda hisobga olinmaydi. Natijalar(parametr o‘zgaruvchi) ro‘yxatidagi nomlarga esa asosiy dasturdan qiymat uzatilishi bilan bir qatorda protsedurada hosil bo‘lgan natijani asosiy dasturga uzatiladi ham. Masalan, ushbu dasturni karaylik:
9-13.docx
MAVZU: PROTSEDURA. PROTSEDURA­FUNKSIYA. Protsedura qism dasturi qism dasturda bir necha natija hosil qilish kerak bo‘lgan hollarda ishlatiladi va u asosiy dasturda struktura bo‘yicha qism dastur bo‘limida, yani o‘zgaruvchilar va operatorlar bloki bo‘limlari orasida tasvirlanadi. Har bir protsedurani tasvirlash sarlavhadan boshlanadi. Protsedura sarlavhasi va umumiy ko‘rinishi quyidagicha bo‘ladi: PROCEDURE [()]  ; end; Bu yerda PROCEDURE – xizmatchi so‘z;  ­ protseduraning nomi;    ­   tiplari   ko‘rsatilgan   berilganlar   va   natijalarni ifodalaydigan nomlar tiplari bilan sanab o‘tiladi. Berilganlar quyidagicha yoziladi: ::=:[;:…]; Berilganlarni parametr qiymat deb ham ataladi. Natijalarni ifodalaydigan nomlar quyidagicha yoziladi: ::=:[;:…]; Natijalarni parametr o‘zgaruvchi deb ham ataladi. Soxta parametrlar  ro‘yxatida parametr  protsedura va parametr  funksiyalar ham bo‘lishi mumkin. Protsedura qism dasturiga murojaat Protsedurani bajarish uchun asosiy dasturning kerakli joyidan unga murojaat qilish kerak. Murojaat quyidagicha amalga oshiriladi: [()]; Bunda haqiqiy parametrlar ro‘yxati va protseduradagi soxta parametrlar ro‘yxati orasida to‘liq moslik bo‘lishi shart, yani ular soni bir xil bo‘lishi, kelish tartiblari mos   tushishi   va   tiplari   ham   mos   ravishda   bir   xil   bo‘lishi   kerak.   Ro‘yxatda parametrlar   vergul   bilan   ajratiladi.   Protsedura   chaqirilganda   soxta   parametrlar o‘rniga haqiqiy parametrlar qo‘yiladi. Berilganlar(parametr   qiymat)   va   natijalar(parametr   o‘zgaruvchi)ni yuqoridagidek ajratishni quyidagicha tushuntirish mumkin: Berilganlar   protsedura   ichida   foydalanish   uchun   kerak,   yani   protsedura   asosiy dasturdan chaqirilganda berilganlar(soxta parametrlar) asosiy dasturdan kelayotgan aniq   parametrlar   bilan   almashtiriladi.   Ushbu   parametrlar   protsedura   ichida o‘zgarishi ham mumkin, bu o‘zgarish protseduradan chiqishda hisobga olinmaydi. Natijalar(parametr o‘zgaruvchi) ro‘yxatidagi nomlarga esa asosiy dasturdan qiymat uzatilishi bilan bir qatorda   protsedurada hosil bo‘lgan natijani asosiy dasturga uzatiladi ham. Masalan, ushbu dasturni karaylik: Program PR; X:integer; Procedure izm(y:integer); Begin Y:=1 end; Begin X:=0; izm(x); Writeln(x);      end. Ushbu   dasturda   protseduradagi   y:=1   o‘zgarish   asosiy   dasturga   qaytarilmaydi, chunki  soxta o‘zgaruvchi y var so‘zi bilan tavsiflangan emas, shuning uchun  x ning uz qiymati, yani 0 qiymat  bosmaga chiqariladi. Endi dasturni quyidagicha o‘zgartiramiz: Program PR; X:integer; Procedure izm(var y:integer); Begin Y:=1 end; Begin X:=0; izm(x); Writeln(x);      end. O‘zgaruvchi var so‘zi bilan tavsiflanganda va asosiy dasturdan murojaat qilinganda ularning   qiymati   emas,   balki   adreslari   beriladi.   Natijada   soxta   parametrlarning hamma o‘zgarishlari aniq parametrlarga ham tegishli bo‘ladi. Shuning uchun endi ushbu dastur bajarilganda bosmaga x ning 1 ga teng qiymati chiqariladi. Endi mavzu boshida keltirilgan dasturni protseduradan foydalanib tuzaylik: Program line1; Var i:integer; Procedure line(n:integer;c:char); Begin For i:=1 to n do Write(c); writeln; end; Begin Line(50,’*’); Line(40,’­‘); Line(50,’*’); Line(40,’+’); Line(50,’=’);  end. Endi ushbu dasturdagi protsedurada 2 ta parametr qiymat bor, natija esa asosiy   dasturga   qaytarilmaydi,   balki   proseduraning   o‘zida   bosmaga   chiqarish tashkil etilgan. Parametrsiz protseduralar Protseduraning   umumiy   ko‘rinishidan   ko‘rinib   turibdiki,     protsedura parametrsiz ham bo‘lishi mumkin. U holda protsedura sarlavhasida uning faqat nomi bo‘ladi: Procedure ; Bunday   hollarda   protsedura   ichida   ishlatiladigan   malumotlar   oldindan   asosiy dasturda aniqlangan bo‘lishi kerak. Masalan, bizga ikkita uchburchak yuzini uning tomonlari orqali hisoblash kerak bo‘lsin. Dasturni quyidagicha tuzish mumkin: Program s; Var a1,b1,c1,a2,b2,c2,s,a,b,c,p:real; Procedure str; Begin P:=(a+b+c)/2; s:=sqrt(p*(p­a)*(p­b)*(p­c)); write(s);  end; Begin       read(a1,b1,c1);   a:=a1;b:=b1; c:=c1;   str; read(a2,b2,c2); a:=a2;b:=b2; c:=c2;  str; end. Ushbu dasturda p o‘zgaruvchi faqat protsedura ichida kerak bo‘lganligi uchun u shu protsedura uchun lokal hisoblanadi. Uni protsedura ichida elon kilsa ham bular edi. Yuqoridagi dasturni parametrlar ishlatib quyidagicha ham tuzish mumkin: Program s2; Var a1,b1,c1,a2,b2,c2,s1,s2:real; Procedure str1(a,b,c:real; var s:real); Var p:real; Begin P:=(a+b+c)/2; S:=sqrt(p*(p­a)*(p­b)*(p­c)); end; Begin Read(a1,b1,c1);  str1(a1,b1,c1,s1);  writeln(s1); Read(a2,b2,c2); str1(a2,b2,c2,s2); writeln(s2); End. Protseduraga   parametr   sifatida   massivlarni   ham   uzatish   mumkin.   Lekin protsedurada massivni quyidagicha tavsiflash mumkin emas: Procedure umnoj(a:array[1..10,1..10] of real); Bu   shuning   bilan   bog‘liqki,   prosedura   etalonida   parametr   qiymat   va   parametr o‘zgaruvchilar   faqat   tip   identifikatori   bilan   ishlatiladi.   Shuning   uchun   bunday hollarda quyidagicha yul to‘tish mumkin: Const n=10; Type matrix=array[1..n,1..0] of real; Endi protsedura sarlavhasi quyidagicha yozilishi mumkin: Procedure umnoj(a:matrix); Endi   misol   sifatida   massiv   elementlari   ichidan   eng   kattasini   topish   uchun protseduradan foydalanib dastur tuzaylik: Program s3; Const n=20; Type mas=array[1..n] of real; Var max:real; a: mas; j:integer; Procedure max1(b:mas; var m:real); Var i: integer; Begin M:=b[1]; for i:=2 to n do If b[i]>m then m:=b[i];  end; Begin For j:=1 to n do   read(a[j]); Max(a;max);   writeln(‘max=’,max);  end. Ushbu   dasturda   n   soni   protsedura   ichida   ham,   asosiy   dasturda   ham   ishlaydi, shuning   uchun   uni   parametr   sifatida   uzatib   utirish   shart   emas.   Agar   bordiyu protsedura bir necha marta chaqirilib, har birida elementlar soni har xil bo‘lganida parametr sifatida kiritish zarur bo‘lgan bular edi. Protseduradan foydalanganda quyidagi izoxlarni hisobga olgan ma’qul: 1. Agar protsedura soxta parametrlarga ega bo‘lmasa, uning sarlavhasida ham, protsedurani chaqirganda ham qo‘yilmaydi; 2. Agar ketma­ket keluvchi bir necha formal parametrlar bir tipga ega bo‘lsa, shu parametrlarni   vergul   bilan   ajratib   yozilib,   oxirida   bir   marta   tipni   ko‘rsatish mumkin. Xuddi shu jarayon VAR so‘zidan keyin keluvchi parametrlarga ham tegishli; 3. Protseduraning   oxirgi   operatori   bajarilgandan   keyin   boshqarish   protsedura chaqirilgan joyga qaytariladi; 4. Protseduradan chiqqandan keyin protsedura ichida ishlatilgan lokal parametrlar qiymatlari aniqlangan emas. FUNKSIYA QISM DASTURI Funksiya bu shunday qism dasturki, bunda bitta natija chiqadi va u funksiya qism   dasturining   nomida   hosil   bo‘ladi.   Shuning   uchun   funksiya   qism   dasturi protsedura qism dasturining xususiy holi bo‘lib, undan farqi shuki, birinchidan, funksiya qism dasturining natijasi bitta qiymatdan iborat bo‘ladi. Protsedura qism dasturida   esa   natija   bitta   yoki   bir   nechta   bo‘lishi   mumkin.   Funksiya   qism dasturining   natijasi   asosiy   dasturga   funksiyaning   natijasi   sifatida   beriladi. Protsedura   qism   dasturi   natijalari   esa  uning  parametrlari  qiymati  sifatida  hosil bo‘ladi. Funksiya qism dasturini aniqlanishi protsedura qism dasturini aniqlanishiga uxshaydi va u ham sarlavha va blokdan iborat bo‘ladi. Funksiya qism dasturining umumiy ko‘rinishi quyidagicha bo‘ladi: FUNCTION  ():;                           end; Bu   yerda   FUNCTION   –   xizmatchi   so‘z,     ­   funksiya   nomi,    ­ kiritiladigan soxta parametrlar ro‘yxati,  ­ funksiya natijasi tipi. Natija funksiya nomida hosil bo‘ladi. Bundan tashqari, funksiyani parametrsiz ko‘rinishda ham yozish mumkin: FUNCTION  :; Har ikkala holda ham funksiya natijasi funksiya qism dasturi tanasida funksiya nomiga hech bo‘lmaganda bir marta o‘zlashtirilishi shart. 1 – misol. y=xn ifodani hisoblashni funksiya qism dasturi ko‘rinishida ifodalang. Bu yerda n – butun son. Funksiya qism dasturini quyidagicha ifodalash mumkin: Function step(n:integer; x:real): real; Var i: integer; y:real; Begin Y:=1; For i:=1 to n do Y:=y*x; Step:=y; End; Ushbu funksiya qism dasturining nomi step bo‘lib, unda soxta parametrlar ikkita, n va x dir. Funksiya qism dasturi natijasi tipi esa umumiy holda real – haqiqiy deb elon qilingan, chunki x soxta parametri ham haqiqiy deb elon qilingani uchun, uni almashtiradigan haqiqiy parametr ham haqiqiy tipda bo‘ladi. Funksiya qism dasturi uchun lokal hisoblangan u o‘zgaruvchida hosil bo‘lgan natija funksiya qism dasturi nomi step ga o‘zlashtiriladi.  Oxirgi natija albatta funksiya nomiga o‘zlashtirilgan bo‘lishi shart va u funksiya nomida   asosiy   dasturga   qaytariladi.   Lokal   o‘zgaruvchi   shu   funksiya   ichida aniqlangan bo‘ladi va funksiyadan chiqqandan keyin uning qiymati aniqlanmagan bo‘ladi. Funksiya qism dasturiga murojaat ifodani   hisoblash   kerak   bo‘lsin.   Bunda   yuqoridagi   step   qism Funksiya   qism   dasturiga   murojaat   uning   nomi   orqali   amalga   oshiriladi. Funksiyaga murojaat qilinadigan joyda funksiyaning nomi yoziladi va undan keyin qavs ichida haqiqiy parametrlar yoziladi. Agar funksiya qism dasturi parametrsiz ko‘rinishda bo‘lsa, u holda faqat uning nomi yoziladi va qavslar ham quyilmaydi. Funksiya qism dasturidagi soxta parmetrlar qanday tartibda keltirilgan bo‘lsa, shu funksiya qism dasturini chaqiraetganda ham haqiqiy parametrlar shunday ketma­ ketlikda kelishi va   tiplari ham mos tushishi kerak. Agar ikkita va undan ko‘p parametrlar ro‘yxatda bir xil tipda bo‘lsa, ularni bitta tavsifga kiritsa bo‘ladi. 2 – m i s o l . z=(a5+a­5)/am  dasturidan foydalanilsin. Bu yerda a – haqiqiy, m – butun ). Ushbu misolning dasturi quyidagi ko‘rinishda bo‘lishi mumkin: Program step1; Var m:integer; A,r:real; Function step(n:integer; x:real): real; Var i: integer; y:real; Begin Y:=1; For i:=1 to n do Y:=y*x; Step:=y; End; Begin Read(a,m); Z:=step(5,a)+step(5,1/a); If m=0 then r:=1 else if m>0 then r:=step(m,a) else r:=step(­m,1/a); Z:=z/r; Writeln(‘z=’,z); End. Ushbu   dasturda   step(5,a)   murojaat   orqali   a5  qiymat,   step(5,1/a)   orqali   esa   a­5 qiymat hisoblanyapti, so‘ng m ning 0, manfiy yoki musbat bo‘lishiga karab am qiymat hisoblanyapti. Shunda qilib step funksiya qism dasturiga 3 marta murojaat qilinyapti.  Protsedura va funksiya qism dasturlarini uz ichiga olgan asosiy dasturda nom tanlaetganda lokal va global parametrlarning bir xil bo‘lmagani ma’qul. Funksiyani   aniqlaganda   uning   nomiga   natijani   o‘zlashtirish   kerak   deb yuqorida aytib utdik. Bunday manoda funksiya oddiy o‘zgaruvchini eslatadi. Lekin funksiya ifoda ichida qatnashsa, bu funksiyani chaqirish deb tushuniladi. Odatda natija   biror­bir   boshqa   o‘zgaruvchida   hosil   qilinib,   so‘ng   shu   natija   funksiya nomiga o‘zlashtirilgani ma’qul. Masalan, quyida faktorialni hisoblovchi funksiyani keltiraylik: FUNCTION FAK(N:INTEGER):INTEGER; VAR I,K:INTEGER; BEGIN K:=1; FOR I:=2 TO N DO K:=K*I; FAK:=K; END; Bu yerda takrorlash operatori ichida K o‘zgaruvchida faktorial hosil qilinyapti va oxirgi natija funksiya nomiga o‘zlashtirilyapti. MAVZU: FAYLLAR VA ULAR BILAN ISHLASH.  TURLANGAN VA TURLANMAGAN FAYLLAR. MATNLI FAYLLAR. Fayl fundamental   bu   malumotlarning     strukturalaridan   biri. Kompyuterlarning   dastur   bilan   ishlashi,   tashqi   kurilmalar   bilan   aloqasi   fayl strukturasiga asoslangandir. Fayllar quyidagi masalalarni yechishga asoslangandir: 1. Qiymatlarni boshqa dasturlar foydalanishi uchun saqlab quyish; 2. Dasturning kiritish­chiqarish tashqi kurilmalari bilan aloqasini tashkil qilish. Fayl tushunchasining ikki tomoni bor: 1­ chi tomondan fayl – tashqi xotiraning biror axborotni saklovchi nomlangan bir qismidir. Bunday tushunchadagi fayl fizik fayl deb ataladi. 2­ Tomondan   fayl   –   bu   dasturda   ishlatiladigan   malumotlarning   turli strukturalaridan   biridir.   Bunday   tushunchadagi   fayl   mantiqiy   fayl   deb ataladi, yani u bizning tasavvurimiz bilan hosil qilinadi. Fizik fayl strukturasi Fizik   fayl   strukturasi   axborot   tashuvchi   –   kattik   yoki   yumshok   magnit disklaridagi baytlarning oddiy ketma­ketligidan iborat. Mantiqiy fayl strukturasi Mantiqiy fayl strukturasi – bu, faylni dasturda qabul qilish usulidir. Obrazli qilib   aytsak,   u   biz   faylning   fizik   strukturasiga   karashimiz   mumkin   bo‘lgan «shablon»dir.  Ana shunday shablonlarga misol ko‘raylik: Belgi           Belgi … Belgi eof Bu yerda har bir belgi faylning bir yozuvi, eof esa faylning oxirini bildiradi. Yunalish tugmasi  belgisini  marker  deb ataylik, markerni  dastur ko‘rsatmasi bilan   faylning   ixtiyoriy   yozuviga   keltirib   quyish   va   o‘sha   yozuvni   o‘qish mumkin. Bunda har bir o‘qishda faqat bitta belgi uqiladi. Yuqorida fayl yozuvi sifatida belgili tipni oldik, endi fayl yozuvi sifatida yozuv tipini olamiz: T=RECORD FIO:STRING[15]; ADR:STRING[20]; GODR:INTEGER; END; F:FILE OF T; Bu yerda biz T tipidagi fayl hosil kildik, agar T tipidagi yozuvda quyidagicha malumotlar bor desak Aliev Bozorov Akramov Karimov Buxoro,15 P.Neruda,12 Nakshband,45 Galaba,13 1974 1985 1980 1976 Har bir yozuvda 3 ta maydon bor va yozuvlar soni esa turtta. Agar   biz   fayldan   1­chi   yozuvni   o‘qishni   buyursak,   unda   bir   o‘qishda   3   ta o‘zgaruvchida   Aliev,   Buxoro  15,   1974  malumotlari   birdaniga  uqiladi.   Buni qanday amalga oshirishni quyida ko‘ramiz. Agar fayl strukturasini massiv strukturasiga solishtirsak, quyidagi farqlarni ko‘ramiz: 1. Massivda   elementlar   soni   xotirani   taksimlash   vaqtida   o‘rnatiladi   va   u to‘laligicha tezkor xotiraga joylashadi. Massiv elementlari raqamlanishi uni elon   qilishda   ko‘rsatilgan   quyi   va   yukori   chegaralarga   mos   holda o‘rnatiladi. 2. Faylda   esa   elementlar(yozuvlar)   soni   dastur   ishi   jarayonida   o‘zgarishi mumkin va u tashqi axborot tashuvchilarda joylashgan. Fayl elementlarini raqamlash 0 dan boshlanadi va elementlar soni doim noaniq. Biz   yuqoridagi   mavzularda   o‘zgaruvchilarning   turli   toifalari   bilan   ishlab keldik.   Bular   skalyar,   oddiy   va   murakkab   tarkiblashgan   toifalardir.   Bu toifadagi   malumotlar   yordamida   masalalrni   yechishda   boshlang‘ich malumotlar   klaviaturadan   operativ   xotiraga   kiritiladi   va   natija   ekranga chiqariladi. Ulardan boshqa dasturlarda foydalanib bo‘lmaydi, chunki ular tizimdan  chiqilgandan   so‘ng   hech  kaerda   saklanmaydi.   Bu   malumotlarni xotirada   saqlash   uchun   Paskal   tilida   malumotlarning   faylli   toifasi belgilangan.  Fayllarning turlari Faylda   saklanaetgan   malumotlar   turiga   kura   Paskalda   fayllar   quyidagi turlarga bo‘linadi: 1) toifalashmagan; 2) toifalashgan; 3) matnli. Toifalashgan   fayllar   bir   xil   toifali   elementlardan   tashkil   topadi.   Ularni malum kurilmalarda uzatish ham mumkin. Faylning elementlari mashina kodlarida yoziladi va saklanadi. Toifalashmagan fayllarda turli toifadagi malumotlarni saqlash mumkin. Ular ham mashina kodlarida yozilgan bo‘lib baytlar to‘plamini tashkil qiladi. Matnli(tekst) fayllar ASCII kodlardan tashkil topgan va qatorlarga ajratilgan bo‘ladi. Matnli fayllarda nafaqat faylning yakunida fayl oxiri belgisi, balki har qatorning yakunida maxsus qator oxiri belgisi qo‘yiladi. Fayl tipidagi o‘zgaruvchi fayl o‘zgaruvchisi deyiladi, u faylning mantiqiy nomini belgilaydi va u mantiqiy fayl bilan tashqi(fizik) fayl o‘rtasida «vositachi» vazifasini utaydi. Fayl   tipidagi   o‘zgaruvchi   uchun   arifmetik   amallar   aniqlanmagan.   Hatto fayllarni solishtirish va bir faylning qiymatini ikkinchi faylga o‘zlashtirish amallari ham aniqlanmagan. Yuqoridagi   barcha   turdagi   fayllar   ustida,   umuman   olganda   quyidagi amallarni bajarish mumkin va bu amallar uchun quyidagi maxsus protsedura va funksiyalar ishlatiladi: 1. Fayl bilan ishlashdan oldin faylning fizikaviy va mantiqiy nomlarini boglash lozim. Bu quyidagi protsedura yordamida amalga oshiriladi: Assign(,’’); Masalan Assign(F,’d:\TP\myfile.txt’); Ushbu  protsedura yordamida  fayl   uchun yul   ochib dasturdan tashqi  kurilmaga murojaat qilish va axborot almashish mumkin.  2.Faylga malumot yozish uchun faylni ochish: Rewrite(); Bu protsedura bajarilganda xotiraga Assign protsedurasida ko‘rsatilgan nom bilan yangi fayl unga malumot yozish uchun ochiladi va yozuv ko‘rsatkichi fayl boshiga o‘rnatiladi. Bu protsedurani extietkorlik bilan ishlatish kerak, chunki ko‘rsatilgan fayl oldindan xotirada bo‘lsa, undagi malumotlar butunlay uchirib tashlanadi. 3. Faylni undan malumotlarni tezkor xotiraga o‘qish uchun ochish: 4. Reset(); Bu   protsedura   bajarilganda   Assign   protsedurasida   ko‘rsatilgan   fayl   undagi malumotlarni o‘qish uchun ochiladi, yani yozuv ko‘rsatkichi faylning birinchi elementiga keltirib qo‘yiladi. 5. Faylga malumotlarni yozish, kiritish: Write(,); Bu   yerda   kattalik   o‘rnida   o‘zgaruvchi   yoki   ifoda   ishlatilishi   mumkin. Protsedura bajarilganda kattalikning qiymati fayl o‘zgaruvchisi bilan boglangan faylda fayl ko‘rsatkichi o‘rnatilgan joyga yoziladi va fayl ko‘rsatkichi keyingi pozitsiyaga   suriladi.  Ushbu   protsedura   fayl   yozish   uchun   ochilgandagina ishlaydi. 6. Fayldan malumotlarni o‘qish: Read(,); Bu   protsedura   bajarilganda   Reset   bilan   ochilgan   faylda   yozuv   ko‘rsatkichi o‘rnatilgan joydagi elementning qiymati o‘zgaruvchiga o‘zlashtiriladi.  So‘ng yozuv ko‘rsatkichi bitta pozitsiyaga suriladi. 7. Turli   yuqoridagi   maksadlar   uchun   ochilgan   fayllar   ish   oxirida   yopilishi kerak, buning uchun Close(); Protsedurasi ishlatiladi. Bu protsedura bajarilganda axborot uzatishning barcha kanallari yopiladi. 8. Fayl oxirini aniqlash funksiyasi: Eof(); Bu funksiyaning qiymati BOOLEAN tipida bo‘lib, u fayl ko‘rsatkichi faylning oxirida o‘rnatilganda TRUE qiymatga ega bo‘ladi, aks holda uning qiymati FALSE ga teng. Toifalashgan fayllar va ular bilan ishlash Toifalashgan fayllar bir xil tipdagi elementlardan tashkil topadi. Ular dasturda quyidagicha elon qilinadi: FILE OF ; Bu   yerda   elementlar   toifasi   faylning   tashkil   etuvchilari,   yani   fayldagi malumotlarning   toifasi   bo‘lib,   bu   toifa   sifatida   oddiy   va   murakkab toifalarni(fayldan tashqari) ishlatish mumkin. Toifalashgan fayllarni quyidagicha tavsiflash mumkin: TYPE bo‘limida Type f=file of integer; Tal=file of char; Num=file of real; Var p,q: file of f; f1: file of char; Var f2:file of integer; Var bo‘limida Toifalashgan fayllarga misollar ko‘rib o‘tamiz. 1 – misol.  Tashqi faylga ixtiyoriy ketma­ketlikdagi belgilarni yozish va o‘qish. PROGRAM F1; VAR F:FILE OF CHAR; CH:CHAR;    I:INTEGER; BEGIN ASSIGN(F,’MYFILE.TXT’); REWRITE(F); FOR I:=1 TO 10 DO BEGIN READLN(CH);   WRITE(F,CH);   END; CLOSE(F);     RESET(F); WHILE NOT EOF(F) DO BEGIN READ(F,CH); WRITE(CH,’ ‘);    END; CLOSE(F);            END. Ushbu dasturda ekrandan 10 ta belgi o‘qib olinadi fa tashqi faylga yoziladi. So‘ng o‘sha fayl o‘qish uchun ochilib fayl tugagunga kadar qayta­qayta uqiladi va o‘kilgan belgilar bosmaga chiqariladi. TIPLASHMAGAN, MATNLI FAYLLAR BILAN ISHLASH Tiplashmagan fayllarga  aniq  tipdagi fayllar kiradi. Ko‘pchilik hollarda bu fayllar   yozuvlardan   iborat   bo‘lib,   turli   berilganlar   bazasini   tashkil   etishda qo‘llanadi.Bunday fayli o‘zgaruvchilar dasturda quyidagicha e’lon qilinadi:   TYPE     FileRec = RECORD                ...               END;   VAR     F : file of FileRec; Agar   matnli   fayllarda     beilganlar   simvollardan   tashkil   topgan   bo‘lsa, tiplashmagan   fayllar   yozuvlardan       tashkil   topgan   deb   qaraladi.     Bunday berilganlarning   o‘lchov   birligi   sifatida   yozuvning   o‘zi   qabul   qilinadi.     Yozuv uzunligi   SizeOf(FileRec)   bilan   aniqlanadi.   Seek(VAR   F;   NumRec:   LongInt) protsedura   F   joriy   faylning   NumRec   tartibli     o‘zgaruvchisini   o‘rnatadi;     F   ­ tiplashgan va tiplashmagan berilganlarning fayl o‘zgaruvchisi. Tiplshmagan faylni ochishda   joriy pozitsiya   yozuv boshiga o‘rnatiladi va 0 chi tartib nomerga ega bo‘ladi, fizik yozuv mantiqiy yozuv tartib nomeridan bittaga kam bo‘ladi. Misol. Telefonlar xakidagi   ma’lumot misolida tiplashmagan fayllar bilan ishlash.   PROGRAM BookPhone;   TYPE     StFio = string[10];     StPhone = string[10]; RecBook = RECORD { fayl  uchun yozuv }       Fio : StFio;       Phone: StPhone;     END;   VAR     BookFile : file of RecBook; {  RecBook faylli yozuvga o‘zgaruvchilar}     Work : RecBook;        { yozuvlarga o‘tish uchun o‘zgaruvchilar }     Ind : byte;   PROCEDURE OutputRec;          { joriy yozuvni ekranga chiqarish }   BEGIN     Read(BookFile, Work);     With Work do     Writeln('FIO: ',Fio,' telefon: ',Phone);   END; { OutputRec }   PROCEDURE OutputAllRec;   { fayning hamma yozuvlarini ekranga chiqarish }   BEGIN     Seek(BookFile, 0);   { faylni birinchi mantiqiy yozuvni o‘rnatish }        Writeln('*** Telefonlar xakidagi ma’lumotnomani ekranga chiqarish'); WHILE (NOT Eof(BookFile)) DO       OutputRec;   END; { OutputAllRec }   PROCEDURE AddRec;   { klviaturadan sanaydi va faylga yozuvni ko‘shadi }   BEGIN     Writeln('*** Fayl yozuvini chiqarish');     WITH Work DO BEGIN       Write('Familiyasini kiriting: ');       Readln(Fio);                        {  familiyalarni kiriting }       Write('Telefon nomerini kiriting: ');       Readln(Phone);                     { telefon nomerini kiritish }       Write(BookFile,Work);     END; { with }   END; { AddRec }   PROCEDURE UpdateRec(NumRec : LongInt); { tartib nomeri bo‘yicha fayl yozuvini o‘zgartiring }   BEGIN        Seek(BookFile, NumRec);   { tartib nomeri bo‘yicha   fayl pozitsiyasini o‘rnatish }                              Writeln ('­­   yozuvning eski qiymati  ­­');    OutputRec;     { yozuvni chiqarish va fayl pozitsiyasini   keyingi yozuvga o‘tkazish }    Seek(BookFile, NumRec);   { oldingi pozitsiyaga qaytarish    Writeln('­­  yangi qiymat  ­­');    AddRec;                   { yozuvni o‘zgargan qiymatini chiqarish }  END; { UpdateRec }  BEGIN   { BookPhone }       Assign(BookFile,   'PHONE.DAT');   {   PHONE.DAT   nomli   yangi   fayl tashkil qilish}    Rewrite(BookFile);    Write(' PHONE.DAT' yozuvining 5 ta yozuvini tashkil qilish);    FOR Ind := 1 TO 5 DO           { klaviaturadan 5 ta yozuvni tashkil qilish}      AddRec;    Write('Yozuvlarni tashkil qilish tugatildi. ... tugmachasini bosing');    Readln;    OutputAllRec;                  {hamma yozuvlarni ekranga chiqarish }    Write('Faylning 2 ta yozuvini o‘zgarishi. ... tugmachasini bosing ');    Readln;      UpdateRec(1); {1 ­chi tartib raqam   faylning 2 chi mantiqiy yozuviga to‘g‘ri keladi}     Write('Davom ettirish uchun xohlagan klvishani bosing...');     Readln;     OutputAllRec;              { o‘zgargan faylni ekranga chiqarish }     Close(BookFile);               { faylni yopish}   END.  { BookPhone } Matnli fayllar Matnli faylni     0 dan 256 gacha bo‘lgan belgilar qatori ketma ­ketligi deb karash mumkin. Matnli qatorni  yozish uchun Text  standart tipidan foydalaniladi.   VAR     F: text;         { F ­ fayl  o‘zgaruvchisi } Har   bir   qator     oxiri   markeri   bilan   tamomlanadi.   Amaliyotda   bunday markerni     ikkita   belgi   ketma   ­ketligi     tashkil   qiladi:   Satrga   o‘tish   chr(13)   va karretkani qaytarish chr(10).  Ushbu ikkita belgi  matnli fayllar ustidagi  standart harakatlarni    belgilaydi.  SYSTEM     modulidagi    standart   ochiladigan  Input  va Output  fayllari  Text tipli bo‘ladi. Matnli fayllarni kiritish va chiqarish. Matnli   fayllar   uz   spesifikasiga   ega.   Read     o‘qish   va   Write   yozish protseduralarining   maxsus   kengaytmasi     belgili   bo‘lmagan   tiplar   bilan   ishlash imkoniyatini beradi.   Agar Ww ­ word   tipidagi uzgaruvchi bulsa, Read(F, Ww) operatorining chaqirilishi   sonlar   ketma­ketligini   F   faylidan   o‘qib,   Ww   o‘zgaruvchisiga o‘zlashtiradi. Boshqa hollarda dasturda xatolikka olib keladi. Matnli fayllarni ochishni standart usullarda olib borish mumkin:    Fayl o‘zgaruvchisiga mos fayl nomini   quyish   ( Assign   protsedurasi), yangi matn faylini ochish ( Rewrite  protsedurasi);   yoki fayl o‘zgaruvchisiga mos fayl nomini  quyish  ( Assign  protsedurasi ), xotirada bor faylni ochish (protsedura Reset). Matnli   fayllar     o‘zining   spesifikatsiyasiga   karab,   o‘qish   yoki   yozish operatsiyalaridan bittasi bilan ishlash imkoniyatini beradi. Shuning uchun matnli fayllar bilan ishlashda   yana bitta protsedura ,faylni ochish protsedurasi paydo bo‘ladi:   Append(VAR F : text); Bu protsedura faylni ochib, kursorni fayl oxiriga   keltirib kuyadi. Append protsedurasiga qo‘yiladigan talablar ham xuddi Reset va Rewrite  protseduralariga qo‘yilgan talablarga o‘xshash. Matnli   fayllarni   qayta   ishlash   uchun     Read   va   Write   protseduralari qo‘llaniladi.   Readln   protsedurasi     qatorlarni   bo‘luvchi     maxsus   til   vositasi hisoblanadi. Uning vazifasi xuddi Read ning vazifasiga o‘xshash   va   o‘qishni qator   oxirining   markerigacha   olib   boradi   va   boshqa     yangi   qatorga   o‘tishni ta’minlayladi.   Writeln,     protsedurasi   hamma   kattaliklarni   yozishni   ta’minlaydi. Protseduralar yozilishining ko‘rinishi quyidagicha:   Readln(VAR F : text; V1 [,V2,...Vn]);   Writeln(VAR F : text; V1 [,V2,...Vn]); bu yerda V1...Vn turli tipdagi o‘zgaruvchilar. Read va  Readln protseduralari orasidagi   farq  nimada   degan   savolga   quyidagicha   javob   berish   mumkin.  Read protsedurasi    berilganlarni    hammasini  bir  qatorga  olib kirish  imkonini   beradi Readln operatsiyasi esa   albatta   bir qator tugagandan keyin avtomatik ravishda ikkinchi qatorga o‘tishni ta’minlaydi, ya’ni   berilganlarni   turli qatorlardan olib kirish mumkin. Write va Writeln protseduralarida ham xuddi shunday.  Kiritish chiqarish operatsiyalarini bajarayotgan paytda maxsus Eoln, Eof, SeekEoln, SeekEof   funksiyalaridan tashkil topgan til vositasini  qo‘llash mumkin.   Agarda     faylning   joriy   pozitsiyasi   fayl   oxiri   markerida   turgan   bo‘lsa Yeoln(VAR F: text) funksiyasi,     True ning bulev qiymatini qaytaradi.   Qolgan hamma holatlarda funksiyaning qiymati False bo‘ladi. Agarda   kursor   oxirgi komponentadan keyin turgan bo‘lsa,   Eof(VAR F: text) True ning bulev qiymatini qaytaradi, aks holda False bo‘ladi. 1­misol. Diskda fayl yaratish va unga foydalanuvchi tomonidan kiritlgan 5 ta sonni yozish. Var f:text; n,i:integer;  Begin writeln(‘5 ta butun son kiriting’); Writeln(‘Har bir son kiritilgach ENTER tugmasini bosing’); Assign(f,’numbers.txt’); Rewrite(f); For I:=1 to 5 do begin write(‘’); readln(n); writeln(f,n); end; Close(f); 2 ­ Misol. Yuqorida tashkil qilingan matnli fayldagi sonlarni   o‘qish.    VAR     F: text; n,I:integer; Begin Assign(f,’numbers.txt’); Reset(f); For I:=1 to 5 do begin write(‘’); readln(f,n); writeln(n); end;        Close(F);   END.    END. AMALIY MASHG’ULOT 1Kuyidagicha tavsiflash berilgan: Var f:file of integer; x,y:integer; Agar f faylda  3 va 7 sonlari bulsa, kuyidagi operatorlardan sung y uzgaruvchi kanday kiymat olishini aniklang: a) reset(f); read(f,y);       if not eof(f) then read(f,y);       if not eof(f) then read(f,y); b) reset(f); y:=0; while not eof(f) do begin read(f,x); y:=y+x end; c) reset(f); y:=1; repeat read(f,x); y:=y*x until eof(f); 2Kuyidagicha tavsiflash berilgan: Type son=file of real; Son tipida faylda sonlar ketma­ketligi mavjud. Undagi manfiy elementlar sonini aniklovchi dastur tuzing. 3.Kuyidagicha tavsiflash berilgang: Type narx=record sum:0..maxint; tiyin:0..99 end; Narx tipidagi faylda malumotlar berilgan. Undagi eng kichik pul mikdorini anilovchi dastur tuzing. LABARATORIYA ISHLARI 13.1. Kuyidagicha tavsiflash berilgan: Type kator=file of 0..999; Kator tipidagi fayl berilgan. Undagi elementlar usish tartibida joylashganligini tekshiruvchi dastur tuzing. 13.2. Kuyidagicha tavsiflash berilgan: Type tekct=file of char; Tekct tipidagi ikkita t1 va t2 fayllar berilgan. Ulardagi elementlar soni uzaro tengligini aniklovchi dastur tuzing. 13.3. var f:file of integer; i: integer; Ushbu   operatorlar   bajarilgandan   sung   f   fayl   da   xosil   buladigan   malumotni kursating: A) rewrite(f);      If eof(f) then write(f,1) else write(f,2);      If eof(f) then write(f,3) else write(f,4); b) rewrite(f); for i:=3 downto 1 do write(f,sqr(i)); 13.4. type satr=packed array[1..100] of char; tekst=file of char; Shunday   protsedura   tuzingki,   kiritilgan   satrda   uchragan   barcha   sonlli simvollarni tekst fayliga yezsin. type kator=file of 1..maxint; 13.5. Shunday dastur tuzingki, u berilgan n dan oshmagan barcha Fibonachchi sonlarini(1,1,2,3,5…) faylga yezsin. 13.6. Bir berilgan fayldagi malumotlarni boshka bir faylga yezuvchi dastur 13.7. tuzing.   Ikkita   faylda   malumot   bor.   Uchinchi   bir   fayl   ochib,   avval   birinchi fayldagi malumotlarni, sung ikkinchi fayldagi malumotlarni yiging. 13.8. Matn faylida malumotlar berilgan. Faylda nechta satr borligini aniklovchi dastur tuzing.  Fayl satri yezuvdan iborat va unda xodimning ismi va yeshi kabi maydonlar bor. Fayldagi yeshi eng kichik va yeshi eng ulug xodimni aniklovchi dastur tuzing. 13.9. var f:file of integer; x: integer; Yukorida   tavsiflangan   fayl   xotirada   bor   va   unda   fakat   1,   2   sonlari joylashgan. Kuyidagi operatorlar bajarilgandan sung x uzgaruvchi kanday kiymat kabul kiladi? reset(f); read(f,x); if x=1 then write (‘1’) else write(‘2’); 13.10.var t:file of char; c:char; Kuyidagi operatorlar bajarilgandan sung t faylda nima xosil buladi? 13.11.rewrite(t); if eof(t) then c:=’a’ else c:=’b’; write(t,c); 13.12.Ikkita   faylda   sonlar   usish   tartibida   yezilgan.   Ularni   uchinchi   faylga shunday yigingki, u fayldagi elementlar xam usish tartibida joylashsin. 13.13. Shunday funksiya tuzingki, u: A) matnli fayldagi bush satrlar sonini aniklasin. B) matnli fayldagi satrlar ichida eng uzunini aniklasin. 13.18.  Matnli fayldagi malumotlarni bosmaga chikaruvchi dastur tuzing. 13.19. Matnli faylda satrlar suzlardan iborat. Aniklang: a) d xarfidan boshlanadigan suzlar sonini; b) z xarfi bilan tugaydigan suzlar sonini; v) biror xarf bilan boshlanib, shu xarf bilan tugaydigan suzlar sonini; g) Fakat bir xarfdan iborat suzlar sonini. 13.20.   Bir matnli faylda bush satrlar xam bor. Uni ikkinchi bir faylga bush satrlarsiz utkazing. 13.21.   Bir   matnli   fayl   xar   bir   satrida   80tagacha   simvollar   bor.   Shu   fayl yezuvlaridagi   80taga   tulmagan   bush   joylarni   ‘*’   bilan   tuldirib   ikkinchi   bir faylga yezing. 13.22. Satr berilgan. Unda suzlar orasida bush joy bor, satr oxiri «.» bilan tugaydi. Satrdagi xar bir suzni faylning bir satriga yezadigan dastur tuzing. 13.23.   Bir   faylda   sonlar   yezilgan.   Ulardan   musbatlarini   ikkinchi   faylga, manfiylarini esa uchinchi faylga yezuvchi dastur tuzing. Mavzu: Turbo pascal muhitida ishlash. Xotiraning dinamik taqsimoti. Ko’rsatgich turi.          Paskal tili ilmiy texnik, muxandislik masalalarini yechishda keng ko‘lamda foydalanadigan algoritmik tildir. Mazkur algoritmik til Shveysariyalik professor Virt Niklaus tomonidan 1971 yilda yaratilgan. Paskal algoritmik tili   jamlovchi mashinani  yaratgan Fransuz fizigi Blez Paskal xotirasiga quyilgan.      Paskal tilining alfavitiga quyidagilar kiradi: 1. A dan Z gacha bo‘lgan 26 ta lotin  alifbosi harflari.   2. Arab raqamlari: 1,2,3,4,5,6,7,8,9,0.  3. Arifmetik amallar. Paskal tilida quyidagi arifmetik amallar  mavjud:   ko‘paytirish(*),   masalan:   A*V;   bo‘lish(/),   masalan:   A/V;   qo‘shish(+), masalan: A+V; ayirish(­), masalan: A­V; Paskal tilida darajaga ko‘tarish amali ishlatilmaydi.   Shuning   uchun   ham   sonlarni   butun   darajaga   ko‘tarishda   (daraja ko‘rsatkichi katta son bo‘lmasa) ularni   bir   necha   marotaba   ko‘paytirish   yo‘li   bilan   amalga   oshirish   mumkin. Haqiqiy darajaga ko‘tarish(agar asos musbat son bo‘lsa) logarifmlash yo‘li bilan amalga  oshiriladi: nenx ln x   yoki      nx 10  n ln x       4. Munosabat amal belgilari: < (kichik), <=(kichik yoki teng),  >(katta), >= (katta yoki teng), = (teng), < > (teng emas); 5. Maxsus belgilar: . (nuqta) , (vergul) ; (nuqtali vergul) : (ikki  nuqta), oddiy, kvadrat va figurali qavslar: ( ), [ ] , { }  va hokazo.          Nom.  Nom yoki identifekatorlar o‘zgaruvchilarni, o‘zgarmaslarni, turlarni, protseduralarni   va   funksiyalarni   nomlash   uchun   ishlatiladi.   Nom   harf   va raqamlardan iborat bo‘lib, doimo harfdan boshlanishi  kerak. Masalan: X2, AB2, Y2, Z3, ALFA,  BETTA.           Son.  Sonlar butun va haqiqiy bo‘lishi mumkin. Butun sonlar o‘nli raqamlar yordamida ishorali yoki ishorasiz ko‘rinishda yoziladi:      Masalan: 5; ­55; 73; ­ 72867; 5205300.      Haqiqiy sonlar qo‘zg‘almas va qo‘zg‘aluvchan nuqtali ko‘rinishlarda yoziladi:      Masalan: 0.65; ­5E­02; 150.8; 1.7E2; ­86.79.         Satrlar. Paskal tilida satrlar apostrof ichiga olingan belgilar ketma­ketligidan iborat bo‘ladi. Masalan: ‘array’, ‘informatika’, ‘matematika’ kabilar.  O‘zgarmaslar.    Paskal   algoritmik   tilida   o‘zgarmaslar:   butun(integer),   haqiqiy(real), mantiqiy(boolean), belgili(char), tekstli(text) ko‘rinishlarida  bo‘lishi mumkin.       Butun yoki haqiqiy  turdagi o‘zgarmaslar, oldiga + yoki – ishorasi qo‘yilgan raqamlardan hosil bo‘ladi.          Mantiqiy tipdagi o‘zgarmaslar faqatgina 2 ta mantiqiy qiymat true (rost) va false (yolg‘on) kiymatlarni qabul qilishi mumkin.       Belgili tipga mansub bo‘lgan o‘zgarmaslar qo‘shtirnoq belgisi ichiga olingan belgilar ko‘rinishida yoziladi. Masalan: “Kassa”, “Informatika”.          Tekstli konstantalar (qatorlar) belgilar ketma­ketligini   qo‘shtirnoq belgisi ichiga olib yoziladi.  Masalan: “Y=“, “Ildiz=”, “yig‘indi=” va hokazo.      O‘zgaruvchilar. Mazkur algoritmik tilda dasturda qatnashayotgan o‘zgaruvchi miqdorlarni belgilab yozish uchun o‘zgaruvchilardan foydalaniladi. Paskal tilida oddiy va indeksli o‘zgaruvchilardan foydalaniladi. Oddiy o‘zgaruvchilar butun, haqiqiy, mantiqiy va belgili tiplarning biriga tegishli bo‘lishi mumkin.      Masalan: SR, XMAX,  DELTA, IFA, REZ, SUMAR.      Indeksli o‘zgaruvchilar massivlarning elementini  tashkil qiladi. Umumiy ismga ega bo‘lgan o‘zgaruvchilar to‘plamini massivlar deb atash mumkin. Bitta indeks bilan   belgilangan   massivlar   bir   o‘lchovli   massiv   deb,   ikkita   indeks   bilan belgilangan   massivlar   esa   ikki   o‘lchovli   massiv   deb   ataladi.   Massivlarning elementlari kvadrat(o‘rta)[ ] qavsga olinib yoziladi.       Masalan: A[4], A[I] – bir o‘lchovli  massivlar, V[2,5], B(I,J] – ikki o‘lchovli massivlar.          Standart funksiyalar.  Dasturda tez­tez uchrab turadigan funksiyalarning qiymatlarini     hisoblashni     yengillashtirish   maqsadida   standart   funksiyalardan foydalaniladi.   Standart   funksiyalarni   yozishda   dastlab   ularning   nomlari   undan keyin esa kichik qavsga olinib argumentlarini yozish  kerak.  Funksiya nomi Absolyut qiymat Kvadrat ildiz Sinus Kosinus Tangens Eksponenta Natural logarifm Arktangens Kvadratga ko‘tarish X ning butun qismi Yaxlitlash Oldingi qiymat Navbatdagi qiymat Juftlikni tekshirish Matematikada yozilishi x Paskal tilida yozilishi ABS(X) x sinx cosx tqx ex nx arctqx x2 SQRT(X) SIN(X) COS(X) TAN(X) EXP(X) LN(X) ARCTAN(X) SQR(X) TRUNC(X) ROUND(X) PRED(X) SUCC(X) ODD(X)          Qolgan teskari trigonometrik   funksiyalar matematikadagi mavjud quyidagi formulalar orqali arktanges funksiya yordamida ifodalanadi.      arcsin x  arctq x  1 2 x arccos x arcctqx   2   arctq arctqx x  1 2 x       Dastur strukturasi. Paskal algoritmik tilida dastur uning sarlavhasi va blok deb ataluvchi  tanasidan iborat. Dastur sarlavhasi, dasturning har doim birinchi qatoriga yoziladi va Program xizmatchi so‘zi bilan boshlanadi. Program so‘zidan keyin   dastur   nomi   va   oddiy     qavs   ichida   dasturning   ishlashi   uchun   bog‘liq parametrlar   input(kiritish)   va   output(chiqarish)   fayllari     yoziladi.   Masalan: Program summa(input, output);         Dastur sarlavhasi; (nuqta vergul) bilan tugallanadi. Dasturning tanasi ikkita asosiy qismdan iborat: tasvirlash va operatorlar bo‘limi.      Tasvirlash bo‘limi quyidagi qismlardan iborat: a). nishonlar (metkalar)ni  aniqlash; b). konstantalarni aniqlash; v). o‘zgaruvchilarni aniqlash; g). turlarni aniqlash.      Har bir tasvirlash va aniqlash nuqta vergul bilan tugaydi.      Metkalarni aniqlash qismi Label xizmatchi so‘zi bilan boshlanadi va Label dan keyin dasturda ishlatilgan metkalar vergul bilan ajratilgan holda yoziladi. Masalan: Label 5, 65, 100; . Metkalar  sifatida musbat butun (natural) sonlar ishlatiladi. Metka operatordan ikki nuqta   (:)     bilan   ajratiladi.   Agar   dasturda   metka   ishlatilmasa,   u   holda   metkani aniqlash qismi yozilmaydi.           O‘zgarmaslarni aniqlash qismi  Const  xizmatchi so‘zi bilan boshlanadi va bundan keyin dasturda ishlatilayotgan o‘zgarmaslar va ularning sonli   qiymatlari yoziladi.   O‘zgarmaslar   nomi   va   qiymati   =   simvoli   bilan   ajratiladi.   Har   bir o‘zgarmasni aniqlash ; (nuqtali vergul) simvoli bilan tugaydi.      Masalan: Const    A=5,5; B=3,5; P1=3.141593; K=7;   L=13;           O‘zgarmaslarni   tasvirlash   dasturni   tushunishda   va   o‘zgartirish   kiritishda qulaylik tug‘diradi.          O‘zgaruvchilarni tasvirlash bo‘limi  Var  xizmati so‘zi bilan boshlanadi va undan keyin dasturda   qatnashuvchi o‘zgaruvchilar va tiplari yoziladi. Umumiy holda o‘zgaruvchilarni tasvirlash qismi quyidagi ko‘rinishda bo‘ladi: Var  v1, v2, v3,…,vn:T; bu yerda  v1, v2, v3,…,vn  –o‘zgaruvchilar;  T­o‘zgaruvchilar tipi(real, integer, char, boolean). Masalan: Var  a,b,c: real;               p,k: integer; q,s: char; t,r: boolean; AMALIY MASHG’ULOT PASKAL TILIDA TARMOQLANUVChI TARKIBLI       ALGORITMLARGA  DOIR  DASTUR  TUZISh 1­misol. Argument x ning ixtiryoriy qiymatida quyidagi funk­ siyaning qiymatini  hisoblash dasturini tuzing. y         2 xnis  xn  1 2 x ,|5,0 , e  Sim | x  2 , агар x  0   агар x  0 агар х  0 1. Blok–sxemasini  tuzamiz:      2. Paskal tilida  dasturini  tuzamiz: program lab2(input, output); var x, y: real; begin read(x); if x>0 then y:=sin(x)*sin(x)+ln(x*x) else if x>0 then y:=exp(sin(x))+(1/x)*(1/x) else y:=sqrt(abs(x­0.5)); write(‘y=’,y);          end. LABORATORIYa   TOPShIRIQLARI   1–variant y         2 xn e , arctg | x    IShINI     BAJARISh   UChUN   VARIANT x  1 агар x 2 z ,|5,0 z , агар x  1 бу ерда z  . 5 агар x  1 2–variant 3–variant z        x 2  x 2 arc 3 5  5ln3  sin x 2 sin x 2 3 3  2 x xgtc  xgtc | | e x  xnl 5,0 y        4–variant x , , , агар агар агар  0 x  x 0  x 0  ,1 , , агар агар агар  x 0  0 х  0 x x    6,2 n 2 xnis ( xnis ерда бу  5,4  x 2 5,0 x  а 2 , tgc x ,6,0  cba ;5 b агар агар ,) агар  ;6,0  x 5,0  х 5,0  5,0 x  .7 c x 2,0  xnis 3,4   x 17,4 | tgcra    xgtс 16,0  1 х  1 агар , , |5 агар , x агар  x 1  22 xn  ( x 3  2  )2  sin x 6,0 x  5,0 x  xgtc | x , агар x  1 ,|3 , агар агар  х 1  1 x z        y       y          |7,0 , z        | rcan tgx xniscra xgtcra e  , , агар агар агар  0 x  х 0  x 0 z          tgc 5  32 x  x   x e  14,4 ctg  1 x | | x бу ерда 3 x , агар , агар 6,0  x  6,0 x , агар x  6,0   .5 5–variant 6–variant 7–variant 8–variant 9–variant y        y         y        10–variant 11–variant xn  6,2 x 2 a 2cos    , xnis crca osx  | bax | агар агар агар , , x x x    8,0 8,0 8,0 b x бу ерда а  ;5 b  .4 x  7  2 xgtcra e x 5  2  tg | x  |3 x  )1 , (ln5,0  2 5 x агар агар  x 1  1 х агар x  1 , , 3 |    ( |) xnnis x  a xsoc 6,0 8,4 2     2 2 | a e x xn |  ерда .6,5 a x бу ,5 агар агар агар , ,  1 x  х 1  x 1 x  e 5 x 2 3,4 3  ctg  2 5 x  tgxcrax 2 2 , , , агар агар агар x x x 1   1  0 12–variant y        13–variant

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA

PROTSEDURA-FUNKSIYA
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
29.04.2019