Предпросмотр материала:
3-сабақ. Шартты оператор
Турбо Паскальда тармақталған алгоритмдер шартты операторды жүзеге асыруға мүмкіндік береді. Шартты оператор кейбір шарттарды тексеруге және тексеріс нәтижесіне байланысты белгілі бір әрекет орындауға жағдай туғызады.
Шартты оператор құрылымы келесі түрде болады:
IF шарт THEN 1-оператор ELSE 2-оператор;
Алдымен шарт есептеліп, егер нәтиже – TRUE (ақиқат) болса, онда 1-оператор орындалады, егер нәтиже FALSE (жалған) тең болса, онда керісінше 2-оператор орындалады.
Шартты операторда then кейін және else кейін синтаксис бойынша тек бір оператор ғана тұра алады. ELSE сөзінің алдында нүктелі үтір ешқашан қойылмайды. Егер берілген шартты орындау (немесе орындамау) кезінде бір емес, бірнеше әрекет орындау қажет болса, онда оларды бір құрама операторға, яғни бұл әрекеттер тізбегін begin... end операторлар жақшасына алу керек.
Команда
форматы:
BEGIN оператор; оператор; ... оператор END;
Мысалы:
If a<b then
begin
R:=a;
A:=b
B:=r
End;
Блок-схемада шартты оператор келесі түрде болады:
Мысал 1: Екі
сан енгізу, оларды салыстыру, нәтижені мына түрде шығарыңыз: a<b? a=b,
a>b
Program chisla;
Var a,b:integer;
Begin
Readln(a,b);
If a<b then writeln(a,'<',b)
else if a=b then writeln(a,'=',b) else writeln(a,'>',b);
End.
Шартты оператордың қысқартылған түрі бар:
IF условие THEN оператор1;

Мысал 2: Сан енгізу, егер ол оң болса, оны 2 есе арттыру.
Program chislo2;
Var a:integer;
Begin
Writeln('а санын енгізіңіз');
Readln(a);
If a>0 then a:=a*2;
Writeln(a);
Readln;
End.
Логикалық операциялар және амалдар.
Егер шарт орындалса, сәйкес амал ақиқат деп айтылады, егер орындалмаса – амал жалған. Күрделі шартарды құру үшін Паскальда төрт логикалық операциялар бар:
NOT – терістеу (ЕМЕС),
AND – логикалық көбейту (ЖӘНЕ),
OR – логикалық қосу (НЕМЕСЕ),
XOR – ариметикалық "немесе".
Әр түрлі мәндегі операторлар үшін логикалық операциялар нәтижесі кестеде келтірілген, мұндағы Т- true (ақиқат), F - false (жалған), ал А және В қатынас операциялар нәтижесі.
|
A |
B |
Not A |
A and B |
A or B |
A xor B |
|
T |
T |
F |
T |
T |
F |
|
T |
F |
F |
F |
T |
T |
|
F |
F |
T |
F |
F |
F |
|
F |
T |
T |
F |
T |
T |
Логикалық операциялар приоритеті: 1) not; 2) and; 3) or; 4) xor.
Логикалық амалдар мысалдары:
a) (0<x) AND (x<=1)
b) (a=0) OR (abs(x)<5)
c) NOT (x=y)
Қатынас операциялардың приритеті логикалық операция приоритетінен төмен, сондықтан оларды логикалық операциялармен бірге қолданған кезде жақшаға алған жөн.
Айнымалылар, константалар, салыстырулар, логикалық операциялар мен жақшалардан логикалық амалдар құруға болады.
Келесі есепті қарастырайық:
а және b қабырғалы тікбұрышты саңылау мен х, у, z қабырғалы кірпіш бар. Кірпіш саңылаудан өте ала ма, соны анықтау қажет.
Шешуі.
Кірпіштің әрқайсысын 90 градусқа бұруға болатын 3 қыры бар, яғни әр қыр үшін екі жағдайды тексеру қажет. Барлығы алты. Мынадай шарттар аламыз:
(a>x)and(b>y) or (b>x) and (a>y) or
(a>x) and(z>y) or (z>x) and(a>y) or
(b>x) and(z>y) or (z>x) and(b>y)
Бағдарлама коды:
Program prim_8;
Var a,b,x,y,z:integer;
F:boolean;
Begin
Write('Саңылау өлшемін енгізіңіз ');
Readln(a,b);
Write('Кірпіш өлшемін енгізіңіз ');
Readln(x,y,z);
If (a>x)and(b>y) or (b>x)and(a>y) or (a>x)and(z>y) or
(z>x)and(a>y) or (b>x)and(z>y) or (z>x)and(b>y)
then Writeln ('Кірпіш саңылауға өте алады')
Else Writeln ('Кірпіш саңылауға өте алмайды');
Readln;
End.
Таңдау операторы Case.
Берілген оператор бірнеше (екіден артық) мүмкін болу шешімдері бар жағдайда мүмкін болу нұсқаларының ішінен біреуін таңдауды жүзеге асырады. Айнымалы мәніне байланысты сәйкес константамен белгіленген оператор орындалады. Егер ешбір константа сәйкес келмесе, else кейін жазылған оператор орындалады.
Case операторының форматы мынадай:
Case реттік айнымалы of
1_мән: 1_оператор;
2_мән: 2_оператор;
…
n_мән: n_оператор;
Else оператор;
End;
Else жолы жоқ сase операторының қысқартылған түрін қолдануға болады. Бұл жағдайда басқару, егер ешбір мән реттік айнымалы мәнімен сәйкес келмесе, end кейінгі операторға беріледі.
Егер бірнеше мән үшін бір оператор орындау қажет болса, онда оларды үтір арқылы немесе диапазонын көрсетіп жазуға болады.
Мысал 1
Case i of
1,3,5,7:Writeln('Тақ сандар');
2,4,6,8:Writeln('Жұп сандар');
10..100: Writeln('10-нан 100-ге дейінгі сандар');
End;
Саse операторының блок-схемасы:
Мысал 2: Апта
нөмірін енгізу, нөмірге байланысты «дүйсенбі», «сейсенбі» және т.б. атауларды
шығару, егер нөмір 7-ден көп немесе 1 аз болса, онда «мұндай апта күні жоқ» деп
шығару керек.
Program den;
Var n:integer;
Writeln('Апта нөмірін енгізіңіз');
Readln(n);
Case n of
1: writeln ('дүйсенбі');
2: writeln ('сейсенбі');
3: writeln ('сәрсенбі');
4: writeln ('бейсенбі');
5: writeln ('жұма');
6: writeln ('сенбі');
7: writeln ('жексенбі');
Else writeln ('мұндай апта күні жоқ');
End;
Есептерді шешу:
Шартты оператор қолдануы мысалы ретінде екі санның ең үлкенін табу есебін қарастырайық.
Берілген есептің алгоритмін құрайық:
Берілгені:
a,b – деректер типі (?) – мысалы бүтін сандар
Шешуі:
Егер a>b онда Жауап шығару:’Екі санның үлкені а’
Әйтпесе Жауап шығару:’ Екі санның үлкені b’
1-тапсырма
1. Turbo Pascal бағдарламалау ортасын ашу.
2. Берілген алгоритм бойынша бағдарлама теру.
3. Бағдарламаны компиляциядан өткізу, орындауға жіберу.
4. Барлық жағдайлар үшін бағдарлама жұмысын тексеру.
program Number;
var
a,b:integer;
Begin
Writeln('Екі a және b санын енгізіңіз:');
Readln(a,b);
If a>b
then Writeln(' Екі санның үлкені а=',a)
else Writeln(' Екі санның үлкені b=',b);
end.
Сұрақ: Біздің бағдарлама бізді барлық жағынан қанағаттандыра ма?
Біздің бағдарламаның кішкене кемшілігі бар – мұнда екі мән тең болу жағдайы қарастырылмаған. Бірдей мән енгізген кезде, экранда не шығатынын қарайық. Бірдей мән болу мүмкіндігін ескеріп, бағдарламаға өзгеріс енгізу қажет: әйтпесе
Егер a=b
Онда Жауап шығару «Сан a=b»
program Number;
var
a,b:integer;
Begin
Writeln('a және b бүтін сандарын енгізіңіз:');
Readln(a,b);
If a>b
then Writeln('Екі санның үлкені а=',a)
else
if a=b
then Writeln('Сан a=b=',a)
else Writeln('Екі санның үлкені b=',b);
end.
Есеп 2. Бүтін сан берілген. Егер ол оң болса, онда оған 1 қосу; әйтпесе оны өзгертпеу. Нәтижені шығару.
Program if_1;
Var a:integer;
Begin
Writeln('Сан енгізіңіз');
Readln(a);
If a>0 then a:=a+1;
Writeln('Нәтиже ',a);
Readln;
End.
Есеп 3. Бүтін К саны берілген. К санына сәйкес бағалау жолын шығару ( 1 – «нашар», 2 – «қанағаттанарлықсыз», 3 – «қанағаттанарлық», 4 – «жақсы», 5 – «өте жақсы». Егер К 1-5 диапазонында жатпаса, «қате» шығару.
Program case_1;
Var k:integer;
Begin
Writeln('бағаны енгізіңіз');
Readln(k);
Case k of
1:Writeln(' нашар');
2:Writeln(' қанағаттанарлықсыз');
3:Writeln ('қанағаттанарлық');
4:Writeln('жақсы');
5:Writeln('өте жақсы');
Else Writeln('мұндай баға жоқ');
end;
Readln;
End.
Тапсырмалар
1. Нәтижесі дұрыс есептелген амалдарды белгілеңіз:
a) 60>20 = true
b) not (30> 10) = false
c) (3>2) and (5>6) = true
d) (60>70) or (100<90) = true
e) (60>70) and (100<90) = true.
2. А:=5; B:=10; C:=15 деп алайық. (true, false) амалының нәтижесін есептеңіз:
|
Амал |
Нәтиже |
Амал
|
Нәтиже
|
|
(А=В) or (A<=B) |
|
Not (A>=5) |
|
|
(А=В) and (A<=B) |
|
(С=А+В) or (B>C) |
|
|
not(A=B) and (A<B) |
|
(С<=А-В) or (B<C) |
|
|
(В<=12)ог(С=15) |
|
(С<=А+В) or (B>C) |
|
|
(B<=12)and(C=15) |
|
(С=А+В) and(B<C) |
|
3. Әр сөйлем үшін логикалық амал жазыңыз:
А (18; 80) диапазонында жатады ___________________________________
А [18; 80) диапазонында жатады ___________________________________
А (-10; 18) диапазонында жатады __________________________________
А [-10; 18] диапазонында жатады __________________________________
А -1 кіші немесе 1 артық__________________________________________
А [18; 80) диапазонында жатпайды __________________________________
А 0 артық және 10 тең емес_________________________________________
А 4 және 5 еселі (mod қолданыңыз)_________________________________
4. Алгоритм үзіндісінің сөздік сипаттауын Паскаль тілінде жазыңыз:
1) Егер Х саны 47 тең болса, онда айнымалы Х 15 арттыру, әйтпесе 36 азайту;
2) Егер айнымалы S 21 тең болмаса, онда айнымалы S 6 есе көбейту , әйтпесе 53 кеміту;
3) Егер айнымалы U тақ болса, онда оны 8 арттыру, әйтпесе 53 есе көбейту;
4) Егер Z саны 48 үлкен болса, онда 51 арттыру, әйтпесе 51 кеміту;
5) Егер X 15 кіші болса, онда Y мәніне X/2 меншіктеу, ал Z мәніне 15/ X меншіктеу, әйтпесе Y мәніне X*2 меншіктеу, ал Z мәніне 15- X меншіктеу.
5. ах=b теңдеуінің шешімін табатын бағдарлама шығатындай бағдарлама жолдарын дұрыс ретпен орналастырыңыз:
|
1) writeln(‘шешімі жоқ’) |
|
|
2) a,x,b:real; |
|
|
3) if |
|
|
4) writeln(‘x=’,b/a); |
|
|
5) a<>0 |
|
|
6) begin |
|
|
7) then |
|
|
8) readln(a,b) |
|
|
9) end. |
|
|
10) else |
|
6. Берілген бағдарламаны орындағаннан кейін экранға не шығады:
|
a=8, n=5 |
a=3, n=3 |
|
Program Primer; Var x, y:integer; Begin Read(a,n); if a<=10 then writeln(a*2) else writeln(n*2); End. |
Program Primer; Var x, y:integer; Begin Read(a,n); If a mod 3<>0 then writeln(a+5) else writeln(n+2); End. |
7. Кестені толтырыңыз:
Program Primer;
|
x |
y |
a |
|
19 |
10 |
|
|
6 |
44 |
|
|
100 |
49 |
|
|
55 |
22 |
|
Var a, x, y:integer;
Begin
Read(x,y);
If (x+y>50) or (y>100) Then
A:=x+y
Else
A:=2*x+y;
Write(a);
End.
8. Бағдарлама фрагментін блок-схема түрінде көрстеңіздер:
а)
IF a>b THEN
k:=k+l
ELSE
IF b>c THEN
k:=k+2
ELSE
k:=k+3;
Writeln(k)
9. Берілген CASE операторына эквивалентті IF операторын жазыңыздар:
CASE x OF
2, 5 : writeln ('Тең түсу');
7..11: writeln ('Жеңіс')
ELSE
writeln ('Жеңіліс')
END;
10. Бағдарлама фрагментін орындағаннан кейін экранға не шығатынын анықтаңыз:
|
k:=10; CASE k mod 3 OF 0: writeln('k=4m'); 1: writeln('k=4m+l'); 2: writeln('k=4m+2'); 3: writeln('k=4m+3'); END; |
d:=30; s:=1000; Case d of 1..5: s:=15; 6..10: s:=36; 11..25: s:=30; End; Writeln(s); |
11. Берілген IF операторына эквивалентті CASE операторын жазыңыздар:
……………………….
If (x>=a) and (x<=b) then
writeln ('Жақсы')
else
If (x = d) or (x = f) then
writeln ('Нашар')
else
writeln ('Қате енгізу');
……………………….
12. Келесі есептер үшін бағдарлама құрыңыз:
|
Есептер |
Белгі |
|
1) Функция мәнін есептеу: У=
x-2,1,если
х>
sin x, если 0 |
|
|
2) Мектепте оқитын енгізген жылы бойынша (1-ден 11 дейін сан) «Сәлем, k-сыныптық!» хабарламасын шығару. Мысалы, егер k=1, «Сәлем, бірінші сыныптық!» |
|
Бағдарлама құру:
1. Функция мәнін есептейтін блок-схема және бағдарлама құру.

2. Бүтін сан берілген. Егер ол оң болса, 1 қосу; әйтпесе 2 азайту. Нәтижені шығару.
3. Бүтін сан берілген. Егер ол оң болса, 1 қосу; егер теріс болса, 2 азайту; егер нөлге тең болса, 10 ауыстыру. Нәтижені шығару.
4. Бүтін үш сан берілген. Жиын ішінде оң сандар санын табу.
Тақырыбы: Паскаль тілінде басқару операторлары
Мақсаты: Паскаль тілінде шартты, таңдау операторлардың жасалу жолын көрсете отырып есеп шығаруға дағдыландыру.
Шартты оператор
Турбо Паскальда тармақталған алгоритмдер шартты операторды жүзеге асыруға мүмкіндік береді. Шартты оператор кейбір шарттарды тексеруге және тексеріс нәтижесіне байланысты белгілі бір әрекет орындауға жағдай туғызады.
Таңдау операторы Case.
Берілген оператор бірнеше (екіден артық) мүмкін болу шешімдері бар жағдайда мүмкін болу нұсқаларының ішінен біреуін таңдауды жүзеге асырады.
Тақырыбы: Паскаль тілінде басқару операторлары
Мақсаты: Паскаль тілінде шартты, таңдау операторлардың жасалу жолын көрсете отырып есеп шығаруға дағдыландыру.
Шартты оператор
Турбо Паскальда тармақталған алгоритмдер шартты операторды жүзеге асыруға мүмкіндік береді. Шартты оператор кейбір шарттарды тексеруге және тексеріс нәтижесіне байланысты белгілі бір әрекет орындауға жағдай туғызады.
Таңдау операторы Case.
Берілген оператор бірнеше (екіден артық) мүмкін болу шешімдері бар жағдайда мүмкін болу нұсқаларының ішінен біреуін таңдауды жүзеге асырады.
Профессия: Учитель математики и информатики
Профессия: Учитель информатики
В каталоге 7 237 курсов по разным направлениям
Учебник: «Информатика», Босова Л.Л., Босова А.Ю.
Тема: 1.3.3. Поисковые запросы
Учебник: «Информатика (базовый уровень)», Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.
Учебник: «Информатика (базовый уровень)», Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.
Тема: Глава 3. Информационное моделирование