|
Mundarija kirish I bob. Interfaol metodlar tavsifi
|
bet | 9/14 | Sana | 23.11.2023 | Hajmi | 47,18 Kb. | | #104059 |
Bog'liq 20 Paskal tilida dasturlash asoslari mavzusini o\'qitishda in Dasturlash tili tarixi Paskal — Paskal dasturlash tilining rivojlangan davomchisi boʻlmish Turbo Paskal tilining rivojlanishi natijasi hisoblanadi. Paskal tilida butunlay Proceduralar yordamida dasturlar tuzilgan. Turbo Paskal 5.5-sonidan boshlab obyektga moʻljallangan xususiyatlarni qoʻshdi, paskal — obyektga moʻljallangan dasturlash tili esa Introspekiyani, yaʼni metodli klasslari xususiyatlari hamda ulardan tashkil topuvchilarining kompilyatsiya kodi tarkibiga qoʻshdi. Protsedura - qism dasturi. Protsedura 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*(pa)*(pb)*(pc)); 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*(pa)*(pb)*(pc)); 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:
|
| |