Тема: Структурасы тармактануучу болгон алгоритмдерди программалоо. Goto инструкциясы. If инструкциясы жана анын түрлөрү. Case инструкциясы. Тандоону уюштуруу.
Доцент: Аркабаев Н.К.
Goto инструкциясы.
Тармактануучу алгоритмдерди уюштурууда программанын бир тармагынан экинчи бир тармагына өтүү үчүн Goto шартсыз өтүү инструкциясы колдонулат. goto кызматчы сөзүнөн кийин эн-белги (метка) көрсөтүлүшү талап кылынат.
Бул оператор көрсөтүлгөн эн-белги (метка) менен белгиленген операторго башкарууну берүүнү уюштурат.
Бул операторду колдонуу үчүн көрсөтүлүүчү эн-белгилерди (меткаларды) программанын Label бөлүгүндө жарыялоо талап кылынат.
b? max:= a; max:= b; чыгаруу max аягы " width="640"
Структурасы тармактануучу болгон алгоритмдер.
Мисал: Клавиатурадан кийрилген эки бүтүн сандын чоңун таап берүүчү программа түз.
«Текшерүү"
Тармактануунун толук формасы
башы
- программанын бөркү
- a жана b ны кийир
- a менен b ны салыштыр, эгерде a, b дан чоң болсо, анда a чоң болот, антпесе b чоң болот
- чоң санды экранга чыгар
- аягы
кийирүү a,b
ооба
жок
a b?
max:= a;
max:= b;
чыгаруу max
аягы
b then begin end else begin end ; writeln (‘Эки сандын чоңу: ', max); end. шарттуу оператордун толук формасы max := a ; max := b ; " width="640"
1-вариант
program qq1;
var a, b, max: integer;
begin
writeln(‘Эки бутун санды кийир:');
readln(a,b);
if a b then begin
end
else begin
end ;
writeln (‘Эки сандын чоңу: ', max);
end.
шарттуу оператордун толук формасы
max := a ;
max := b ;
b then max := a else max := b ; writeln (‘Эки сандын чоңу: ', max); end. Демек структурасы тармактануучу болгон алгоритмдерди уюштуруу үчүн Паскалда шарттуу оператор колдонулат. " width="640"
2-вариант
program qq2;
var a, b, max: integer;
begin
writeln(‘Эки бутун санды кийир:');
readln(a,b);
if a b then max := a
else max := b ;
writeln (‘Эки сандын чоңу: ', max);
end.
Демек структурасы тармактануучу болгон алгоритмдерди уюштуруу үчүн Паскалда шарттуу оператор колдонулат.
Шарттуу оператордун жалпы форматы:
if then begin
{шарт аткарылган учурдагы аракет}
end
else begin
{шарт аткарылбаган учурдагы аракет}
end;
Эскертүү:
- else кызматчы сөзүнөн мурда (;) үтүрлүү чекит символу коюлбайт шарттуу оператордун экинчи бөлүгү ( else …) жок болушу да мүмкүн (толук эмес формасы) эгерде блокто бир эле оператор кармалса, анда begin жана end кызматчы сөздөрүн алып салууга болот.
- else кызматчы сөзүнөн мурда (;) үтүрлүү чекит символу коюлбайт
- шарттуу оператордун экинчи бөлүгү ( else …) жок болушу да мүмкүн (толук эмес формасы)
- эгерде блокто бир эле оператор кармалса, анда begin жана end кызматчы сөздөрүн алып салууга болот.
b then begin a := b end else b := a end ; if a b then begin a := b else begin b := a end ; end begin if a b then begin if a b then begin a := b a := b end end; else b a begin else begin b := a b := a end ; end ; end begin " width="640"
Катаны тапкыла!
if a b then begin
a := b
end
else
b := a
end ;
if a b then begin
a := b
else begin
b := a
end ;
end
begin
if a b then begin
if a b then begin
a := b
a := b
end
end;
else b a begin
else begin
b := a
b := a
end ;
end ;
end
begin
a then writeln (' Эки сандын чону: ', max); end. шарттуу оператордун толук эмес формасы max := b ; " width="640"
3-вариант
program qq3;
var a, b, max: integer;
begin
writeln(' Эки бутун санды кийир ');
read ( a, b );
max := a;
if b a then
writeln (' Эки сандын чону: ', max);
end.
шарттуу оператордун толук эмес формасы
max := b ;
b then begin a := b; end; else b := a; if a b then begin a := b; else b := a; a := b end if a b then a := b; else b := a; end; if a b then else begin if b = a then b := a; b := a; end ; a := b " width="640"
Катаны тапкыла!
if a b then begin
a := b;
end;
else b := a;
if a b then begin
a := b;
else b := a;
a := b
end
if a b then
a := b;
else b := a; end;
if a b then
else begin
if b = a then
b := a;
b := a;
end ;
a := b
Тандоо оператору.
Case тандоо оператору if шарттуу операторунун жалпыланышы болуп ал кайра туташтыргычтын (переключатель) маанисинен көз каранды түрдө бир нече аракеттердин ичинен бирөөсүн аткарууга мүмкүнчүлүк берет.
Кайра туташтыргыч катары case жана of сөздөрүнүн ортосуна жайгашуучу туюнтма пайдапанылат. Бул туюнтманын жыйынтыгы элементтеринин жалпы саны 65535 тен ашпаган иреттик типтеги гана маани болушу мүмкүн.
Тандоо операторунун жалпы структурасы төмөнкүдөй формада болот:
Case of
константалар1: Оператор1;
константалар2: Оператор2;
. . .
константаларN: ОператорN;
else ОператорE
end;
Мында – туюнтма же иреттик типтеги өзгөрүлмө.
Оператор төмөнкүдөй иштейт: алгач эсептелет, андан кийин анын мааниси тизмесинен изделет жана табылган мааниге тиешелеш келген оператор аткарылат. Эгерде бир да маани табылбаса, анда else кызматчы сөзүнөн кийинки оператор аткарылат.
Мисал.
Клавиатурадан кийрилген айдын номерине жараша андагы күндөрдүн санын чыгаруучу программа түзгүлө.
Чыгаруу: Ай боюнча күндөрдүн саны төмөнкүдөй:
28 күн – 2 (февраль)
30 күн – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь)
31 күн – 1 (январь), 3 (март), 5 (май), 7 (июль), 8 (август), 10 (октябрь), 12 (декабрь)
?
Буга чейин биз билген операторлордун жардамында чечүүгө болобу?
Алгоритми
башы
кийир M
оба
M = 1?
тандоо оператору
D := 31;
жок
оба
M = 2?
D := 28;
жок
оба
M = 12?
D := 31;
жок
чыгуу D
ката
бир дагы дал келүүчүлүк табылбаса
аягы
0 then writeln(‘Бул айда ', D, ' күн бар.') else writeln(‘Айдын туура эмес номери'); end. ни один вариант не подошел " width="640"
Программасы
program qq;
var M, D: integer;
begin
writeln(‘Айдын номерин кийир:');
read ( M );
case M of
2: D:=28;
4,6,9,11: D:=30;
1,3,5,7,8,10,12: D:=31;
else D:=-1;
end;
if D 0 then
writeln(‘Бул айда ', D, ' күн бар.')
else
writeln(‘Айдын туура эмес номери');
end.
ни один вариант не подошел