Ma'ruza № 5 Paskal programmasining strukturasi. Paskal tilida protsedura.
Ma’lumotlarning chegaralangan va qayd qilingan toifasi.
Reja:
Qism dastur haqida tushuncha.
Funktsiya qism dasturi
Protsedura qism dasturi
Amalda shunday masalalar uchraydiki, ularni yechish jarayonida birgina funktsiyani hisoblash emas, balki bir necha amallar ketma-ketligi o’zgaruvchi kattalikning turli qiymatlarida bir necha marotoba takrorlashga to’gri keladi.
Bunday masalalarni EHMda yechish dasturini ixchamlashtirish maqsadida takrorlanayetgan buyruqlarni dasturda bir marotoba yozib kerak bo’lganda unga istalgancha murojaat qilish mumkin.
Dasturning turli joyidan murojaat qilinishi natijasida ko’p marotoba bajarilishi mumkin bo’lgan operatorlarning tuplami protsedura (qism dastur), protsedura joylashgan dastur asosiy dastur deyiladi.
Paskal dasturlash tilida qism dasturlar ikki ko’rinishda bo’ladi:
funktsiya va protsedura.
Qism dasturlarni tasvirlash qism dastur sarlavhasi va tasvirlash bo’limi va protsedura tanasini uz ichiga oladi. Qism dasturi sarlavhasi FUNCTION yoki PROCEDURE protsedura kalitli so’zi bilan boshlanib, qavs ichida formal parametrlar ro’xati beriladi. Protsedura qism dasturidan funktsiya qism dasturi farq qilib sarlavhada funktsiyani tipi ko’rsatilishi shart. Funktsiya bitta qiymatni hisoblash uchun ishlatiladi.
Umumiy ko’rinishi:
FUNCTION F(q1:T; q2:T;.....):Ti;
(parametrlarni tasvirlash va aniqlash bo’limi)
BEGIN P1;
P2;
END;
Bu yerda F- funktsiya nomi; q1,q2,..- formal parametrlar; T- funktsiyaning nomi; Ti- parametrlarni tipi; P1,P2,...- funktsiya tanasini operatorlari.
Misol: n!,m!,(n-m)!ni hisoblash dasturi tuzilsin.
Buni uchun faktorialni hisoblashda funktsiya qism dasturidan foydalanamiz.
Dastur PROGRAM FACTL(INPUT,OUTPUT);
VAR NF,MF, NMF: INTEGER;
FUNCTION FACT(K:INTEGER):INTEGER;
VAR PF,I: INTEGER;
BEGIN
IF K<0 THEN FACT =0 ELSE
IF K=0 THEN FACT =1 ELSE
BEGIN PF:=1;
FOR I:=2 TO K DO PF:=PF*I;
FACT:=PF;
END;
END.
BEGIN
READ (N,M);
NF:=FACT(N);
MF:=FACT(N);
NMF:=FACT(N-M);
WRITE(‘NF=’;NF,’MF=’;MF,’NMF=’;NMF);
END.
(Topshiriq: Ushbu misolni amaliyotda komp'yuterga kiritib tekshirib ko’ring)
Misol: y=ax2+bx+d;
ni 100 20
a=ti; b= ti d= qi
i=1 i=ni+1 i=1
j
SUM= masi
i=k funktsiyadan foydalanamiz.
Dastur:
PROGRAM FUNY (INPUT,OUTPUT);
CONST N=100;
TYPE INDEX =1,...,N;
VECT= ARRAY [INDEX] OF REAL;
VAR I,NR,NT,NG: INTEGER;
T,Q: VECT;
Y:REAL;
FUNCTION SUM(MAS:VECT;K:INTEGER;MM:INDEX):REAL;
VAR J:INTEGER;
BEGIN
S:=O;
FOR J:=1 TO MM DO S:=S+MAS(J);
SUM:=S;
END;
BEGIN
READ(NR,NT,NQ);
FOR I:=1 TO NT DO READ(T(I));
FOR J:=1 TO NQ DO READ(Q(I));
Y:=SUM(T,1,NR)*X*X*SUM(T,NR,+1,NT)*X
+SUM(Q,1,NQ);
WRITE(‘Y=’;Y);
END.
Protsedura bir necha natijalarni olish uchun ishlatiladi. Protseduraning umumiy ko’rinishi:
PROCEDURE F(q1:T1, q2:T2,....,var q3:T3);
(podprogramma va parametrlarni tasvirlash);
BEGIN
P1;
P2;
....
END;
bu yerda F-protsedura nomi; qi-formal parametrlar nomi; Ti- parametrlar tipi; Pi- qism dastur tanasini operatorlari.
Protseduraga murojaat qilish F(b1,b2,.......); ko’rinishda bo’ladi. F- podprogramma nomi, b1,b2,....- faktik parametrlar nomi.
Misol: Quyidagi funktsiyani hisoblashda protsedura qism dasturidan foydalanib dastur tuzing.
Z=(Sh2a+Sh(a-b))/(Sha+ Sh(a2-b2) ; Shx=(ex-e-x)/2.
Dastur: PROGRAM FSN(INPUT,OUTPUT);
VAR A,B,Z,T1,T2,T3: REAL;
PROCEDURE SH(X:REAL; VAR R: REAL);
BEGIN
R:=(EXP(X)-EXP(-X))/2;
END;
BEGIN
READ(A,B); SH (A,T1);
SH (A-B,T2); SH (A*A-B*B,T3);
Z:=(T1*T1*+T2)/(T1+SQR(T3));
WRITE(‘Z=’;Z);
END.
Protsedurani ishlatishda qayd qilingan cheklanishlarni yukotish va uniumumiylashtirish maqsadida parametrli protseduralarni, ya'ni protsedurada soxta parametrlarni ishlatish maqsadga muvofiq.
Haqiqiy parametrlar (kattaliklar) o’z qiymatini soxta parametrlarga uzata oladigan va soxta qiymatini o’zlashtira oladigan parametrlardir. Haqiqiy parametrlar sifatida o’zgarmaslar, o’zgaruvchilar va ifodalarini ishlatish mumkin.
Asosiy dasturda protsedura operatori bajarilganda protseduraning nomi orqali protseduraga murojaat qilinadi, so’ngra protsedura sarlavhaqida ko’rsatilgan soxta parametrlar haqiqiy parametrlar qiymatlarini o’zlashtirib protsedura tanasi bajariladi. Shuning uchun soxta va haqiqiy parametrlar soni, kelish tartibi va toifasi o ‘zaro mos kelishi kerak .
Protsedura tanasi bajarilgandan so’ng boshqaruv asosiy dasturning protsedura operatoridan keyingi operatoriga uzatiladi.
Soxta parametrlar uz navbatida qiymat va o’zgaruvchi parametrlarga bo’linadi. Qiymat parametrlar haqiqiy parametr qiymatini o’zlashtirishi mumkin, lekin uz qiymatini asosiy dasturga uzata olmaydigan parametrlardir. Ularning qiymati faqat protsedurada ishlatiladi. O’zgaruvchi parametrlar haqiqiy parametrlar qiymatini o’zlashtirishi va o’z qiymatini haqiqiy parametrga uzatishi mumkin. Sarlavhada o’zgaruvchi parametrlar VAR xizmatchi so’zidan keyin yoziladi.
Qismni quyidagi testni yechish orqali xulosalaymiz:
Paskal tilida funktsiya va protsedurani tasvirlash kalit so’zlarini ko’rsating.
A) INTEGER, REAL
B) PACKED, ARRAY
V) BOOLEAN, CHAR
G)FUNCTION, ROCEDURE
Tayanch iboralar:
Jarayon, qism dastur, asosiy dastur, funtsiya dastur, soxta parametr, faktik parametr, dastur, protsedura, qayd qilingan cheklanish, parametrli protsedura, haqiqiy parametr, kattalik, qiymat, soxta parametr, o’zgarmaslar, o’zgaruvchilar, ifoda, operator, protseduraning nomi, haqiqiy parametrlar soni, toifa, sarlavha.
Nazorat savollari:
Qism dastur deb nimaga aytiladi? Asosiy dasturga ta'rif bering.
Qism dastur va funtsiya dasturining farqi.
Soxta parametr deganda nimani tushunasiz? Faktik parametrlar qayerda ishlatiladi?
Ma’ruza .№ 6 Paskal tilining operatorlari . Turbo-Paskalda sodda programmalar tuzish. Operatorlar.
Reja:
Umumiy ma’lumotlar
K iritish-chiqarish protseduralari
Chiqarish formatlari
Eng sodda operatorlar
Strukturali operatorlar
Umumiy ma’lumotlar
Berilganlarni kiritish-chiqarish, Input va Output oldindan aniklangan fayllari.
EXMda eng sodda masalani yechishda xam kiritish-chiqarish amalidan foydalaniladi. Berilganlarni kiritish - tashki tashuvchidan operativ xotiraga kayta ishlash uchun olib utish, chiqarish-teskari jarayen, bunda berilganlar kayta ishlash. Keyin operativ xotiradan tashki tashuvchiga olib utiladi. Tashki tashuvchi sifatida, kiritish-chiqarish yumshok (disk) yeki kattik (vinchester) magnit disk va boshqa kurilmalar, xizmat kilishi mumkin. Paskal tilida standart odam va EXM urtasidagi mulokat vositasi bu oldindan aniklangan va fayllari xizmat qiladi. Ular e’lon kilinmaganda dastur parametrlari bulib xizmat qiladi. Dastur kiritiladigan ma’lumot faylidan oladi va ishlov berilgan natijani faylga yezadi. Fayliga standart klaviatura belgilangan, faylga esa - terminal ekrani kiritish chiqarish protsedurasi.
Ukish protsedurasi, yezish protsedurasi. Kiritish-chiqarish amalini bajarishda 4 ta protsedura ishlatiladi:
Berilgan mavzuda ularni ishlash jarayeni kuriladi . Klaviaturadan berilganlarni kiritish va ekranga chiqarish , chop etish kurilmalari simvollarni , katorlarni va ukish protsedurasida sonli berilganlarni kiritish va navbatdagi dastur bilan ishlov berishni ta’minlaydi.
Yozilishi:
Read (X1, X2,...,Xn); yeki
Read (FV, X1, X2,...,Xn);
bu yerda etilgan berilgan tiplari uzgaruvchilar fayl bilan boglangan uzgaruvchi Berilgan mavzuda farmatning 1 chi varianti kiritiladi. Ularning belgisi minimum 1 probel oraligi bilan klaviatura kiritish va ekranda Ko’rinadi 1 Read protsedurasining berilganlari kiritilgandan keyin Enter bosiladi Uzgaruvchilarni belgilari Paskal tilining sintaksisi kat’iy munosabatda kiritish. Agar munosabat buzilsa, ( masalan, x1 integer tipda, kiritganda esa char tipi kiritilgan) kiritish-chiqarish xatolari paydo buladi. Xatoni e’lon kilish kuyidagi Ko’rinishda buladi. Xato kodi, bu yerda tushuntirish matni dasturni tuxtashi sababini aniklaydi.
Misol.
VAR
I : real;
J : integer;
K : char;
BEGIN
Read (I, J, K);
. . .
Javobning 1 chi varianti.
Birinchi variant berilganlarni tugri kiritishni ta’lim, kiritilayetgan berilganlari uzgartirish tipidagi tugri keladi. Protsedurasidagi 2 chi variant 10 uli xatoni chiqaradi, uzgarish uchun Read tipni urniga char tipi kiritilganligi uchun. Agarda dasturda bir nechta Read protsedurasi bulsa, berilganlar kiritilgandan keyingi Read protsedurasining berilganlari kiritiladi kator tugagandan sung keyingi katorga utiladi.
Misol .
VAR
A, B, Sum1 : integer;
C, D, Sum2 : real;
...
BEGIN
Read (A, B);
Sum1 := A + B;
Read (C, D);
Sum2 := C + D;
...
END.
Klaviaturadan kuyidagilar kiritiladi: 18758 34 2.62E-02 1.54E+01.
Xar bir berilganlar juftligi kiritilgandan sung Enter tugmachasi bosiladi, ya’ni.
18758 34 Enter 2.62E-02 1.54E+01 Enter.
Ukish protsedurasi Readln xuddi Read protsedurasiga uxshaydi, bitta farkli tomoni shuki, Readln protsedurasida berilganlarning 1- katori tugagandan sung keyingi kator berilganlari uqiladi. Agar yukoridagi misolda Read protsedurasini Readln protsedurasiga almashtirsak :
. . .
Readln (A, B);
Sum1 := A + B;
Readln (C, D);
Sum2 := C + D;
. . .
klaviaturada A va V larning kiymatlari kiritilgandan sung kursor avtomatik ravishda keyingi katorga utadi, bunda C va D larning kiymatlari kiritiladi:
18758 34 Enter
2.62E-02 1.54E+01 Enter
Yezish protsedurasi Write sonli berilganlarni , simvollarni, katorlarni va bulev kiymatlarini chiqarishni ta’minlaydi.
Formati:
Write (Y1, Y2,...,Yn); yeki
Write (FV, Y1, Y2,...,Yn);
Bu yerda Y1, Y2,...,Yn - integer, byte, real, char, boolean
va xakozo tipdagi ifodalar . FV - fayl nomi, bu yerga chiqarilgan natijalar yeziladi. Printerga chiqarish uchun FV kiymati Lstga tenglashtirniladi. Lst kurilmasi ishga tushishi uchun albatta USES suzi yerdamida Printer moduli ulanishi shart .
Misol.
USES Printer;
VAR
...
BEGIN Write(234); {ifoda kiymatlarda takdim kilingan}
Write(A+B-2); {ifodaning natijasi chiqariladi}
Write(Lst, 'xisoblash natijalari = ', Result1);
END.
Formatning birinchi variantida Y1, Y2,...,Yn larning kiymatlari ekranga chiqariladi, ikkinchi variantda esa chop etish kurilmasiga.
Yezish operatori Writeln xuddi Write protsedurasiga uxshaydi,lekin ruyxat oxiridagi joriy protseduraning kiymati chiqarilgandan keyin kursor keyingi katorning boshiga utadi. Parametrlarsiz yezilgan Writeln protsedurasi katorning utishiga olib keladi.Writeln protsedurasini ishlash jarayenini ko’rsatish uchun programmaning kismini kuramiz:
A := 4;
B := 6;
C := 55;
Write(A:3); Write(B:3); Write(C:3);
Sum:= A + B + C;
Writeln('A=', A);
Writeln('B=', B);
Writeln('C=', C);
Writeln(' A+B+C yigindisi teng ', Sum);
Natija:
4 6 55
A=4
B=6
C=55
A+V+S yigindisi 65 ga teng.
0>
Do'stlaringiz bilan baham: |