Chiziqli dasturlar tuzilish jihatidan aniq ketma-ketlikdagi amallardan iborat. Bu amallarning bajarilishi dasturda keltirilish tartibi bilan bog‘liq, ya’ni yozilgan ketma-ketlikda bajariladi. Har bir masalani yechishdan oldin algoritimi tuzib olinadi. Algoritim tuzishda quyidagi geometrik figuralardan foydalaniladi.
Hech qanday shart tekshirilmaydigan va tartib bilan faqat ketma – ket bajariladigan algoritmlar
ch i z i q l i a l g o r i t m l a r deb yuritiladi .
Chiziqli algoritmlar va dasturlar odatda juda sodda masalalarni yechiщda qo‘llaniladi. Bu masalalar yechimi biror shartga yoki siklik amallar bajarilishiga bog‘liq emas.
Masalan, to‘g‘ri to‘rtburchakning tomonlariga ko‘ra uning perimetri, diagonali va yuzasini hisoblashni (a, b – tomonlar qiymatiga ko‘ra) quyidagicha tashkillashtirish mumkin.
Yechish:
Program to‘rtburchak yuzi;
Var a, b: Integer; P, d, s: real; Begin Write (‘a,b tomonlarni qiymatlari kiritilsin’); ReadLn(a,b); P:=2*a+2*b; D:=sqrt(sqr(a)+sqr(b)); S:=a*b; WriteLn(‘to‘rtburchak perimetri=’,p); WriteLn(‘to‘rtburchak dioganperli=’,d); WriteLn(‘to‘rtburchak yuzasi=’,S); End.
Tarmoqlanish va o‘tish operatorlari. Turli masalalarni yechganda ko‘rsatmalarni bajarish tartibi biror bir shartning bajarilishiga bog‘liq holda bajariladi. Ya’ni algoritm tarmoqlanadi. Tarmoqlanish «echim» bloki orqali ifodalanadi.
Ma’lum bir shartni bajarilishi yoki bajarilmasligiga qarab, tarmoqlanuvchi jarayon holatlari aniqlanadi. Tarmoqlanuvchi jarayonlarni hisoblash uchun shartli operatordan foydalaniladi. Shartli operator ikki xil ko‘rinishda bo‘ladi:
to‘liq shartli operator;
chala shartli operator.
To‘la shartli operatorning algoritmik sxemasini quyidagi ko‘rinishga ega:
To‘liq shartli operator quyidagi formada yoziladi:
if then else bu yerda if (agar), then (u holda), else (aks holda) xizmatchi so‘zlar.
Shunday qilib, to‘liq shartli operatorni quyidagicha yozish mumkin:
if S then S1 else S2;
bu yerda S - mantiqiy ifoda;
S1 – S mantiqiy ifoda rost qiymat qabul qilganda bajariluvchi operator;
S2 -S mantiqiy ifoda yolg‘on qiymat qabul qilganda bajariluvchi operator.
Shartli operatorning bajarilishi unda yozilgan S1 yoki S2 operatorlaridan birini bajarilishiga olib keladi, ya’ni agar S mantiqiy ifoda bajarilishidan so‘ng true (rost) qiymati hosil bo‘lsa S1 operatori, aks holda esa S2 operatori bajariladi.
To‘liq shartli operatorga doir misollar:
if a=2 then d: = x+2 else d: = x-2;
if (x5) then begin y: = x * sin(x);
t: =x * cos(x) end else begin y: = 0; t: =1 end;
if x<0 or x =3 then y: = x*x+1 else if x<2
then y: = sqr(abs(x-1)) else y: = x*x;
Qisqa (to‘liqmas) shartli operatorning algoritmik sxemasini quyidagi ko‘rinishga ega:
Chala (to‘liqmas) shartli operatorning yozilishini quyidagicha ifodalanadi:
if S then S1;
bu yerda S - mantiqiy ifoda, S1 - operator.
Agar S ifoda qiymati true (rost) bo‘lsa S1 operatori bajariladi, aks holda esa boshqarish shartli operatordan keyin yozilgan operatorga uzatiladi.
Shartli operatordan foydalanishga misollar keltiramiz.
1-misol. Kiritilgan ixtiyoriy butun sonni juft yoki toqligini aniqlovchi dastur yarating.
program r1;
var x:integer; javob:string;
begin
readln(x);
if x mod 2 =0 then javob:='juft' else javob:='to''q' ;
writeln('kiritilgan son ',javob);
readln;
end.
2-misol. Kiritiladigan ixtiyoriy a,b,c sonlar uchun a+b>c, a+c>b, b+c>a tengsizliklarning barchasi bajarilganda «shartlar qanoatlantirilgan» deb javob beruvchi dastur yarating.
program r2;
uses crt;
var a,b,c,d:integer;
javob:string;
begin clrscr;
readln(a,b,c);
if (a+b>c) and (a+c>b) and (b+c>a) then
writeln('shartlar qanoatlantirilgan');
readln;
end.
Yuqorida keltirilgan ikki misoda masala shartiga ko‘ra shartli operatorning to‘liq va to‘liq bo‘lmagan holatlaridan foydalanildi.
Tarmoqlanish operatoridan foydalanishda quyidagi qoidalarga amal qilish shart:
IF operatoridan foydalanganda ELSE dan oldin «;» (nuqta-vergul) qo‘yilmaydi.
Shartli operator Then va ELSE xizmatchi so‘zlaridan keyin bir necha operator (amal yoki buyruq) ishlatilishi zarurati bo‘lsa, u holda bu buyruqlar begin va end qavslari ichiga joylashtirishi shart.
(Shartsiz o‘tish operatorini o‘rganishda ax2+bx+c=0 tenglamaning yechimlarini aniqlovchi dastur keltirilgan, shu holatga e’tibor bering).
O‘tish operatori (Shartsiz o‘tish operatori). Shartsiz o‘tish operatori goto quyidagicha yoziladi:
goto belgi;
Bu yerda goto xizmatchi so‘z bo‘lib, belgi operator boshqarishni uzatishi zarur bo‘lgan (belilangan) «manzili» hisoblanadi. Belgi sifatida Turbo Paskal dasturlash tilida 0 dan 9999 gacha bo‘lgan butun sonlardan va simvollar birikmasidan(xizmatchi so‘zlardan tashqari) foydalanish mumkin. Belgilar dasturning tavsiflash qismining Label (nishonlar ro‘yxati) bo‘limida beriladi, masalan: Label 12, bel, r1;
Yuqoridagi operatorlardan foydalanib, ax2+bx+c=0 tenglamaning yechimlarini aniqlovchi dastur yaratamiz:
uses crt;
label 12,13,aa,2;
var a,b,c:integer; x, d:real;
begin
clrscr;
readln(a,b,c);
d:=sqr(b)-4*a*c;
if d=0 then goto aa else goto 12;
aa:x:=-b/(2*a);
writeln('x=',x:2:0); goto 13;
12: if d>0 then
begin
writeln('x1=',(-b+sqrt(d))/2*a:2:0);
writeln('x2=',(-b-sqrt(d))/2*a:2:0);
end
else
writeln('tenglama haqiqiy echimlarga ega emas');
13:end.
Keltirilgan dasturni turli holatlarda tenglamning ildizlarini aniqlashini ko‘rib chiqamiz.
Tenglamaning ko’rinishi
Dastur natijasi
x2-8x+16=0(A=1,b=-8,c=16)
qiymatning readln(a,b,c) buyrug’i orqali kiritilishiga e’tibor qarating.
x2+5x-6=0(A=1,b=5,c=-6)
qiymatning readln(a,b,c) buyrug’i orqali kiritilishiga e’tibor qarating.
5x2+x+6=0(A=5,b=1,c=6)
Goto operatoridan foydalanishda quyidagi qoidalarga amal qilish shart: Goto operatori boshqarishni uzatuvchi belgi nomi albatta tavsiflash bo‘limida ko‘rsatilishi va u dasturning kerakli joyida «:» bilan ajratilgan holda aniqlanishi shart. (ko‘rsatilgan misoldagi 12: if d>0 then… kabi)
Goto operatori boshqarishni uzatuvchi belgi nomi tavsiflash bo‘limida ko‘rsatilishi va u dasturning asoiy qismida foydalanmaslik mumkin. (ko‘rsatilgan misolda, label 12,13,aa,2; da aniqlangan «2» belgisidan dasturda foydalanilmagan)
2>0>