writeln (a:5,b:5,c:5); readln;
end.
Есептi шешудiң блок-схемасы төмендегiдей болады.
Тапсырма: Жоғарыдағы мысалдағы шарттық операторды былай өзгертсек:
if (a<=b) and (b<=c) then
begin
a:=sqr(a); b:=sqr(b); c:=sqr(c);
if (a>b) and (b>c) then
begin a:=c; b:=c; end;
else begin a:=-a; b:=-b; c:=-c; end ;
end.
бағдарламаның орындалуы қалай өзгередi? Есептiң берiлгенi қалай болады. Блок-
схемасын сыз.
басы
a,b,c
аb және
bc
a:=a
2
;
b:=b
2
;
c:=c
2
;
a>b және
b>c
a:=-a;
b:=-b;
c:=-c;
b:=а; с:=а;
a,b,c
соңы
иә
жоқ
иә
жоқ
№5 зертханалық жұмыс. Программаларды жобалау әдістері,декомпозиция.
Таңдау командасы
Мақсаты: Таңдау операторының жазылуы мен пайдаланылуын меңгеру.
Теориялық бөлім
Егер алгоритмде бiрнеше жағдайдың бiреуiн пайдалану қажет болса, онда
таңдау операторы қолданылады. Таңдау case операторымен программаланады. If
операторы екi жағдайдың бiреуiн орындайды, ал case операторы бiрнеше
жағдайдың бiреуiн таңдайды. Жағдайлар таңдау айнымалысының мәнiне
байланысты таңдалады.
Жазылу форматы:
case <таңдау айнымалысы>
of
<1-тiзiм (мән)>:<оператор 1;>
<2-тiзiм (мән)>:<оператор 2;>
:<оператор n;>
[else <оператор>]
end;
Case операторының орындалу тәртiбi:
Алдымен <таңдау айнымалысының> мәнi анықталады. Анықталған мән қай тiзiмге
жатса, сол тiзiмге сәйкес келетiн оператор орындалады да, басқа операторлар
орындалмай, case операторы жұмысын аяқтайды.
Егер <таңдау айнымалысының> мәнi тiзiмнiң ешбiреуiне жатпаса, онда else-де
көрсетiлген <оператор> орындалады. Еlse болмаса, case операторы жұмысын
аяқтайды.
Case операторын пайдалану ережелерi:
1. Таңдау айнымалысы мен тiзiмдегi мәндер бiр типтi болу керек.
2. Еlse тармағының болуы мiндеттi емес, кей жағдайда жазбауға да болады, егер
else тармағы жазылса, алдыңғы оператордан соң (;) қойылады.
3. Мәндер тiзiмiнде үтiрмен ажыратылған жеке мәндердi немесе бастапқы және
соңғы мәндерi “..” ажыратылған диапазонды көрсетуге болады.
4. <Операторда> “;”-мен ажыратылған бiрнеше операторды жазуға болады.
5. Таңдау айнымалысы литерлiк, бульдiк және пайдаланушының типтерiнде
болады.
Ескерту: String, real типтегi айнымалылар таңдау айнымалысы бола алмайды!
Мысал: Арифметикалық төрт амалды (+,-,*, / ) орындайтын калькуляторды
бейнелейтiн бағдарлама.
program calk;
var
x, y, r: real; amal, a : char;
begin
repeat
write (‘x = ‘ ) ; readln (x) ;
write (‘y = ‘ ) ; readln (y) ;
writeln (‘операция +,–,*,/’ ) ;
readln (amal ) ;
case amal of
‘+’ : rezult : = x + y ;
‘– ‘ : rezult : = x-y ;
‘*’ : rezult : = x*y ;
‘ / ‘: rezult : = x/y ;
else writeln (‘қате белгi’) ;
end;
writeln (x, amal,y,’=’, r );
write (‘жалғастырасың ба Y/N ‘ ) ;
readln (a ) ;
until (a =’ N’) or (a =’n’) ;
end.
Пайдаланылатын айнымалылар:
х , y - берiлген сандар;
r - нәтиже;
amal айнымалысы 1 символдық типтi, бұл айнымалыда арифметикалық
операцияның белгiсi сақталады. a айнымалысында бағдарламаның аяқталу белгiсi
сақталады, типi-символдық; N немесе n клавишасы басылғанда бағдарлама
жұмысын аяқтайды.
Бағдарламаның орындалу барысында х,у мәндерi клавиатурадан енгiзiледi. Одан соң
мына жолдармен
writeln (‘операция +,–,*,/’ ) ;
readln (amal ) ;
операцияның белгiсi amal айнымалысына енгiзiледi. Case операторы amal
айнымалысының мәнi бойынша, арифметикалық операцияны орындайды. Мысалы,
егер amal айнымалының мәнi “ * “ болса, онда r :=x*y операторы орындалады.
Егер amal мәнi ешбiр белгi болмаса, else-ден кейiнгi жол орындалады да, экранға
“қате белгi” деген хабарлама шығады. (Repeat, until операторлары туралы алдағы
тақырыптарда түсiнiк берiледi).
Пайдаланушының типтерi. Айнымалының қабылдайтын мәндерi алдын ала
белгiлi жағдайда, пайдаланушы стандарттық емес өз типтерiн жасауына болады.
Паскаль тiлiнде пайдаланушы жасаған типтi сипаттау үшiн type резервтелген
сөзi қолданылады.
Жазылу форматы:
type
<типтiң аты> = <тип мәнi>;
Пайдаланушы жасайтын типтер екi түрлi болады. Олар: санақтық
(перечисляемый) және аралықтық (интервальный) типтер.
Бұл типтегi берiлгендер жадының бiр байтын алады, сондықтан
пайдаланушының типтерi 256-дан көп элементтен тұра алмайды. Бұл типтердi
қолдану енгiзiлетiн мәндердi бақылайды, бағдарламаның көрнекiлiгiн жақсартады,