Паскаль тілінің басқару: шартты және шартсыз көшу, таңдау операторлары

214

Паскаль тілінің басқару: шартты және шартсыз көшу, таңдау операторлары

Негізгі ұғым: Шарт дегеніміз жауабы «иә» немесе «жоқ» болатын ұйғарым (сұрақ). Шартты бар операторларды құрама немесе күрделі дейді.

Тармақтаушы оператор – шарттың сақталуына/сақталмауына байланысты екі түрлі жағдайдың бірін таңдауға мүмкіндік береді.

Паскалдағы жазылу түрі:

Толық тармақтау БС
if <шарт> then  1-оператор else 2-оператор;

шарт сақталса жауабы «иә» болып 1-оператор атқарылады және керісінше.

мыс:

gas:=15;

if  jas<8 then write(‘сен менен ’,8-jas,’ кішісің’)

else write(‘сен менен ’,jas-8,’ үлкенсің’);

Жоғарыдағы сұраққа назар салыңдар.

1-operator
1-operator
шарт

 

Қысқаша тармақтау БС
if <шарт> then  оператор;

шарт сақталса жауабы «иә» болып оператор атқарылады, сақталмаса («жоқ») компьютер келесі операторды орындауға өтеді..

мыс:

gas:=15;

if jas<8 then write(‘сен менен ’,8-jas,’ кішісің’);

 

оператор
шартm

 

 

Көшу немесе шартсыз көшу операторы операторлардың рет – ретімен орналасуын бұзып, келесі атқарылуды, яғни белгісі бар операторға көшуді орындайды.Бұл оператор GOTO (көшу) түйінді сөзінен басталады да, одан кейін Label бөлімінде сипатталған  белгі атауы жазылады.

 

Есте сақта:  Пішімі: Goto <белгі>;

 

 

 

 

 

 

 

 

 

 

 

 

Мысал:

 

Квадрат теңдеуді шешу алгоритмі.

ах2 + вх + с = 0

1.  Не белгілі?

а, в, с – нақты сандар

2. Не істеу керек?

Кв.теңдеудің х1, х2 түбірлерін табу керек, түбірі болмаса «түбірі жоқ» деген хабар шығару керек.

3. Қалай жасау керек?

Дискриминант   d=b2-4аc

D<0 түбірі жоқ

D=0 бір түбірі бар   x1=-b/2a

d>0 екі түбірі бар    х1=?, х2=?

,

program kvtendeu;

var a,b,c:integer;

x1,x2,d:real;

label 10;

begin

write(‘Кв.тенд.коэф. енгіз a,b,c ‘);

read(a,b,c);

d:=sqr(b)-(4*a*c);

if d<0 then begin writeln(‘түбірі жок ‘);goto 10;end;

if d=0 then begin writeln(‘Бір түбірі бар: ‘,-b/(2*a));goto 10;end

else writeln(‘Екі түбірі бар: ‘,-b+sqr(d)/(2*a),’ ‘,-b-sqr(d)/(2*a));

10: end.

 

 

Осындай мақсаттарды шешу үшін Паскальда таңдау операторы қолданылады. Жазылу түрі мынандай:

case шарт of

1-шарт: 1-серия;

2-шарт: 2-серия;

n-шарт: n-серия;

else n+1 -серия;

end;

 

ЕСЕП: Клавиатурадан енгізілген бүтін сан бойынша апта күндерін анықайтын программа жазыңыз.

program apta;

var kun:integer;

begin

write(‘kyn retin engiz ‘);

read(kun);

 case kun of

1:writeln(‘duisembi ‘);

2:writeln(‘seisembi ‘);

3:writeln(‘sarsembi ‘);

4:writeln(‘beisembi ‘);

5:writeln(‘juma ‘);

6:writeln(‘sembi ‘);

1:writeln(‘jeksembi ‘);

else writeln(‘byndai kyn jok ‘);

end;

end.

 

 

 

 

Тапсырма№1: Екі санның  үлкенін табатын программа құрылған. Шартты дұрыс қойыңыз.

Program max;

Var a, b, max: integer;

Begin

Readln (a,b);

……………………………………….

Writeln (‘ max= ’ , max);

End.

 

 

Тапсырма№2: Үш кесіндінің   ұзындықтары берілген. Егер бұл үш кесіндіден үшбұрыш құру мүмкін болса, онда оның периметрін және ауданын табыңдар.

Тапсырма№3: Қай операторлар дұрыс жазылмаған?

program qq;

var a, b: integer;   x, y: real;

begin

a := 5;

10 := x;

y := 7,8;

b := 2.5;

x := 2*(a + b +y);

writeln (x);

end.

Үйге тапсырма:

Тапсырма№1: Үзіндідегі бағдарлама жолдары есеп шешіміне сәйкес келуі үшін қандай ретпен

орналасуы керек?

Есеп:Егер үшбұрыш қабырғалары А, В, С берілген болса, онда үшбұрышқа сырттай сызылған шеңбердің  радиусын  формуласымен есептеңдер.

{1}begin

{2}readln (a,b,c);

{3}s:=sqrt(p*(p-a)*(p-b)*(p-c));

{4}p:=(a+b+c)/2;

{5}writeln(‘r=’,r);

{6}end.

{7}r:=(a*b*c)/(4*s);