6. Paskalda chiziqli va tarmoqlanuvchi algoritm asosida dastur tuzish Ma’lumotlarni satrlar bo‘yicha joylashtirish uchun writeln(yangi satrga o‘tish) yoki writeln(x1, x2,...,xn) (chiqarish va yangi satrga o‘tish) protseduralardan foydalanamiz.
3-misol.
var A, B: real;
I, N: integer;
C: char;
...
I: =0; N: =I+1;
A: =0.25; B: =Sqrt(A); C: =’#’;
Writeln(I,’ ‘,N); { 0 1}
Writeln(A,B); { 2.5000000000E-01 5.0000000000E-01}
Writeln(A,Sqrt(A)); { 2.5000000000E-01 5.0000000000E-01}
Writeln(N+5,C); { 6#}
Write(MaxInt);{32767- integer turidagi maksimal butun son }
4-misol.
var A,B: real;
I,N: integer;
C: char;
I: =0; N: =I+1;
A: =0.25; B: =Sqrt(A); C: =’#’;
Writeln(A:5:2,B:6:2); { 0.25 0.50}
Writeln(‘I=’,I:4); {I= 0}
Writeln(C:4); { #}
Writeln(‘B=’,Sqrt(A):6:2); {B= 0.50}
Writeln(‘***************’); {***************}
Writeln(‘*A=’,A:4:2,’*B=’,B:4:2,’*’);{*A=0.25*B=0.50*}
Writeln(‘***************’); {***************}
Amaliy masalalarga e’tiborni qarataylik
1-masala. Tomonlari a va b bo`lgan to`g`ri to`rtburchak berilgan, uning yuzasi S
va perimetri P hisoblansin.
Program B_3;
Var a,b,s,p:real;
begin
read(a,b);
S:=a*b;
P:=2*a+2*b;
writeln(' s=',s:3:3, ' p=',p:3:3);
end.
Shartli operator va uning turlari Tarmoqlanuvchi hisoblash jarayonlarida ayrim bosqichlari (operatorlari) har doim bir xil tartibida bajarilmaydi, ular qandaydir tekshirilayotgan shartlarga bog‘liq bo‘ladi. Bunday jarayonlarni tanlash operatorlari yordamida yozish mumkin. Tanlash operatorlar hosilaviy operatorlar sinfiga kiradi va shartli va variant operatorlaridan iborat.
Paskal tilida shartli operatorning ikki turi mavjud: to‘liq shartli operator va qisqartirilgan shartli operator:
:: = if then else ; Bunda if, then, else - xizmatchi so‘zlar.
Shunday qilib, to‘liq shartli operator tuzilishi quyidagicha - if B then S1 else S2;, bu yerda B - mantiqiy ifoda, S1 va S2 - operatorlar. Bunday shartli operator quyidagicha bajariladi: agar B mantiqiy ifoda true qiymat qabul qilsa, u holda S1 operator bajariladi, aks holda S2 operator bajariladi. Shartli operatorga misol:
if x<0 then i: =i+1 else k: =k+1;
Algoritmlar yozilishida ba‘zida shunday hollar uchrab turadiki, qandaydir operatorlarni faqat mantiqiy shart rost bo‘lganda bajarish kerak, aks holda bu operatorlarni bajarish kerak emas. Shunday hollarda qisqartirilgan shartli operator ishlatiladi: ::= if then .
SHunday qilib, qisqartirilgan shartli operator - if B then S; ko‘rinishida bo‘lib quyidagicha ishlaydi: agar B mantiiqiy ifoda rost qiymat qabul qilsa, u holda S operator bajariladi, aks holda keyingi operatorga o‘tiladi. Shartli operatorda then va else so‘zlaridan keyin faqat bitta operator turishi kerak, agar algoritmda shu joylarda bir nechta operatorlar yozilishi kerak bo‘lsa, u holda ulardan tarkibli operator yaratiladi. Qisqartirilgan shartli operator ishlatilishida ehtiyot bo‘lish kerak. Masalan, quyidagi operatorni
if B1 then if B2 then S1 else S2
ikki xil ma‘noda tushunish mumkin:
if B1 then begin if B2 then S1 end else S2
yoki
if B1 then begin if B2 then S1 else S2 end
Paskal tilining qoidasi bo‘yicha ikkinchi operatorni ma‘nosi to‘g‘ri, ya‘ni har qaysi xizmatchi so‘z else so‘ziga eng yaqin bo‘lgan xizmatchi so‘z true mos keladi.
1-misol:
if х <0 then y:х1 else y:2х
yoki
if х<0 then y:х1
if х>0 then y:22
2-misol
if (х<2) and (х>1)then y:х4 else y:х-1
3-misol
F{-4 agar х<0
Х +3х4 agar 0<х<1
(х 3х4) agar х>1
if х<0 then y: =-4 else if х <1 then y:= sqr(х)3*х+4 else
y:sqr (sqr(х)3*х4)
4-misol S1 2 3 ...n2 2 label 1;
var i,s:integer;
begin read (n);
s:0; i:0;
1: i: =i+1;
s:s sqr (i);
if i< n then gоtо1;
4-misolda shartli operatorning qisqa formasidan foydalanilgan.
Endi e’tiborni dasturlar tuzishga qarataylik.
1-misol. Biror son berilgan. Agar u musbat bo‘lsa unga 1 qo‘shilsin, aks holda o‘zgarishsiz qoldirilsin.
Program If1;Var A:Integer;Begin WriteLn('Sonni kiriting: '); ReadLn(A); If A > 0 Then WriteLn(A + 1) Else WriteLn(A);End.
2-misol. Ikkita a va b sonlari berilgan. Ulardan kattasini bosmaga chiqarish dasturi tuzilsin.
Program If6;Var A,B:Integer;Begin WriteLn('Введите числa A и B: '); ReadLn(A,B); If A > B Then WriteLn(A) Else WriteLn(B);End.