- Тақырып 3. Күрделі шарттар
- Есеп. Фирма 25 пен 40 жас арасындағы қызметкерлерді жұмысқа алуда. Адамның жасын енгізіп, оны фирмаға алуға болатындығы немесе болмайтындығы туралы мәлімет шығару («болады» немесе «болмайды» деген жауап шығару).
- Ерекшелігі: екі шарттың бір мезгілде орындалатынын немесе орындалмайтынын тексеру.
- Белгілі әдістермен шешуге бола ма?
- program qq;
- var x: integer;
- begin
- writeln(‘Жасты енгіз');
- read ( x );
- if x >= 25 then
- if x <= 40 then
- writeln (‘Болады')
- else writeln (‘Болмайды')
- else
- writeln (‘Болмайды');
- end.
- program qq;
- var x: integer;
- begin
- writeln(‘Жасты енгіз');
- read ( x );
- if (x >= 25) and (x <= 40) then
- writeln ('Болады')
- else writeln ('Болмайды')
- end.
- Күрделі шарт – бір-бірімен логикалық операциялардың көмегімен байланысатын бірнеше қарапайым шарттардан (қатынастардан) тұрады:
- not – ЕМЕС (терістеу, инверсия)
- and – ЖӘНЕ (логикалық көбейту, конъюнкция, шарттардың бір мезгілде орындалуы)
- or – НЕМЕСЕ (логикалық қосу, дизъюнкция, ең болмағанда бір шарттың орындалуы)
- xor – арифметикалық НЕМЕСЕ (екі шарттың екеуін емес, біреуін ғана орындау)
- Қарапайым шарттар (қатынастар)
- < <= > >= = <>
- Орындау тәртібі
- жақша ішіндегі өрнектер
- not
- and
- or, xor
- <, <=, >, >=, =, <>
- Ерекшелігі – қарапайым шарттардың әрқайсысын жақшамен жабу.
- Мысал:
- if not (a > b) or (c <> d) and (b <> a)
- then begin
- ...
- end
- a := 2; b := 3; c := 4; болған жағдайда ақиқат немесе жалған:
- not (a > b)
- (a < b) and (b < c)
- not (a >= b) or (c = d)
- (a < c) or (b < c) and (b < a)
- (a < b) xor not (b > c)
- x-тің қандай мәндерінде шарт ақиқат болады:
- (x < 6) and (x < 10)
- (x < 6) and (x > 10)
- (x > 6) and (x < 10)
- (x > 6) and (x > 10)
- (x < 6) or (x < 10)
- (x < 6) or (x > 10)
- (x > 6) or (x < 10)
- (x > 6) or (x > 10)
- "4": Айдың нөмірін енгізу арқылы, жыл мезгілінің атауын шығару.
- Мысал:
- Ай нөмірін енгіз:
- 4
- көктем
Паскаль тілінде программалау - Цикл – белгілі бір әрекеттер тізбегінің бірнеше рет қайталанып орындалуы.
- қадамдар саны белгілі цикл
- қадамдар саны белгісіз цикл (шартты цикл)
- Есеп. 1-ден 8-ге дейінгі бүтін сандардың квадраттары мен кубтарын есептеп шығару (a-дан b-ға дейін).
- Ерекшелігі: бірдей амалдар 8 рет орындалады.
- Белгілі әдістермен шешуге бола ма?
- i2 := i * i;
- i3 := i2 * i;
- цикл айнымалысының бастапқы мәнін көрсету
- барлығы да атқарылды ма? соны тексеру
- квадрат пен куб-ты есептейміз
- Алгоритм ("цикл" блогімен)
- i2 := i * i;
- i3 := i2 * i;
- program qq;
- var i, i2, i3: integer;
- begin
-
- for i:=1 to 8 do begin
- i2 := i*i;
- i3 := i2*i;
- writeln(i:4, i2:4, i3:4);
- end;
- end.
- Айнымалысы кеміп отыратын цикл
- Есеп. 8-ден 1-ге дейінгі бүтін сандардың квадраттары мен кубтарын есептеп шығару (кері қарай есептеу).
- Ерекшелігі: цикл айнымалысы кеміп отыруы керек.
- Шығарылуы:
- for i:=8 1 do begin
- i2 := i*i;
- i3 := i2*i;
- writeln(i:4, i2:4, i3:4);
- end;
- for <айнымалы> := <алғашқы мән> to
- <ең соңғы мән> do begin
- {цикл денесі}
- end;
- for <айнымалы> := <алғашқы мән> downto
- <ең соңғы мән> do begin
- {цикл денесі}
- end;
- Ерекшеліктері:
- цикл айнымалысының мәні бүтін болуы керек (integer)
- цикл айнымалысының өзгеру қадамы қашанда 1-ге (to) немесе -1-ге (downto) тең
- егер цикл денесінде бір ғана оператор болса, begin мен end сөздерін жазбай кетуге болады:
- егер соңғы мән алғашқы мәннен кіші болса, (to) циклы бірде бір рет орындалмайды (шартты циклдың басында тексеру, шартты алдын ала тексеретін цикл)
- for i:=1 to 8 do
- writeln('Привет');
- Ерекшеліктері:
- Цикл денесінде цикл айнымалысын өзгертуге рұқсат етілмейді (неліктен?)
- Алғашқы және соңғы мәндер өзгертілгенімен цикл ішіндегі қадамдар саны өзгермейді:
- n := 8;
- for i:=1 to n do begin
- writeln('Салем');
- n := n + 1;
- end;
- Цикл неше рет орындалған?
- a := 1;
- for i:=1 to 3 do a := a+1;
- a := 1;
- for i:=3 to 1 do a := a+1;
- a := 1;
- for i:=1 downto 3 do a := a+1;
- a := 1;
- for i:=3 downto 1 do a := a+1;
- for i:=1 to 9 do begin
- if ??? then begin
- i2 := i*i;
- i3 := i2*i;
- writeln(i:4, i2:4, i3:4);
- end;
- end;
- Қадамдарды қалай өзгертуге болады?
- Есеп. Экранға 1-ден 9-ға дейінгі тақ сандардың квадраттары мен кубтарын есептеп шығару.
- Ерекшелігі: цикл айнымалысы 2-ге артып отыру керек.
- Мәселе: Паскальде қадамдар саны 1 немесе -1 болуы мүмкін.
- Шығарылуы:
- i2 := i*i;
- i3 := i2*i;
- writeln(i:4, i2:4, i3:4);
- Тек қана тақ i-лермен орындалады
- Қадамдарды қалай өзгертуге болады? – II
- Идея: Тек 5 санды ғана шығару керек, k айнымалысы 1-ден 5-ке дейін өзгереді. i-дің бастапқы мәні 1-ге тең, циклдың әр қадамы сайын i 2-ге артып отырады.
- Шығарылуы:
- ???
- for k:=1 to 5 do begin
- i2 := i*i;
- i3 := i2*i;
- writeln(i:4, i2:4, i3:4);
- ???
- end;
- Қадамдарды қалай өзгертуге болады? – III
- Идея: Тек 5 санды ғана шығару керек, k айнымылысы 1-ден 5-ке дейін өзгереді. k-ны біле отырып, i-ді есептеу қажет.
- Шығарылуы:
- for k:=1 to 5 do begin
- ???
- i2 := i*i;
- i3 := i2*i;
- writeln(i:4, i2:4, i3:4);
- end;
- "4": a мен b-ны енгізіп, осы екеуінің арасындағы сандардың квадраттары мен кубтарын есептеп шығару.
- Мысал:
- Интервал шекараларын енгіз:
- 4 6
- 4 16 64
- 5 25 125
- 6 36 216
- "5": 1, 2, 4, 7, 11, 16, … тәртібімен орналасқан 10 санның квадраттары мен кубтарын есептеп шығару
- Мысал:
- 1 1 1
- 2 4 8
- 4 16 64
- ...
- 46 2116 97336
Паскаль тілінде программалау - Тақырып 5. Шартты циклдер
- Мысал: Бөренеден ағаштың бұтағын кесіп алу керек. Қолараны әрі-бері неше рет қозғалтуымыз керек,. ?
- Есеп: (<2000000) бүтін сан енгізіп, ондағы цифрлардың санын анықтау.
- Шығару амалы: Ең соңғы орналасқан цифрларды кезекпен алып тастай отырып, санаушыны арттырамыз.
- Мәселе: неше қадам жасау керектігі белгісіз.
- Шығарылуы: n = 0 болғанда тоқтау керек, яғни "n <> 0" болғанша орындай беру керек.
- count := count + 1;
- n := n div 10;
- цифрлардың санаушысын нөлге теңестіру
- “n <> 0“ болғанша орындай беру
- program qq;
- var n, count: integer;
- begin
- writeln(’Бүтін сан енгіз’);
- read(n);
- count := 0;
- while n <> 0 do begin
- count := count + 1;
- n := n div 10;
- end;
- writeln( ’cанында’,count, ’цифр табылды’);
- end.
- while n <> 0 do begin
- count := count + 1;
- n := n div 10;
- end;
- "n <> 0“ болғанша орындай беру
- while <шарт> do begin
- {цикл денесі}
- end;
- Ерекшеліктері:
- күрделі шарттарды қолдануға болады:
- егер цикл денесінде бір ғана оператор болса, begin мен end сөздерін жазбай кетуге болады:
- while (a
- {цикл денесі}
- end;
- while a < b do
- a := a + 1;
- Ерекшеліктері:
- циклге кірген сайын шарт есептеліп отырады
- егер шарт циклге кіруде жалған болса, цикл бірде-бір рет орындалмайды
- егер шарт түбінде жалған болмайтын болса, программаның жұмысы дағдарысқа ұшырайды (тоқтаусыз орындала береді)
- a := 4; b := 6;
- while a > b do
- a := a – b;
- a := 4; b := 6;
- while a < b do
- d := a + b;
- Цикл неше рет орындалған?
- a := 4; b := 6;
- while a < b do a := a + 1;
- a := 4; b := 6;
- while a < b do a := a + b;
- a := 4; b := 6;
- while a > b do a := a + 1;
- a := 4; b := 6;
- while a < b do b := a - b;
- a := 4; b := 6;
- while a < b do a := a - 1;
- For-ны while-ға ауыстыру және керісінше
- for i:=1 to 10 do begin
- {цикл денесі}
- end;
- i := 1;
- while i <= 10 do begin
- {цикл денесі}
- i := i + 1;
- end;
- for i:=a downto b do
- begin
- {цикл денесі}
- end;
- i := a;
- while i >= b do begin
- {цикл денесі}
- i := i - 1;
- end;
- while-ды for-ға , циклдегі қадамдар саны алдын ала белгілі болған жағдайда ғана ауыстыруға болады.
- for-ны while –ауыстыруға қашанда болады.
- "4": Бүтін сан енгізіп, ондағы цифрлардың қосындысын табу.
- Мысал:
- Бүтін сан енгіз:
- 1234
- 1234 санындағы цифрлардың қосындысы 10-ға тең.
- "5": Бүтін сан енгізіп, оның жазылуында бірдей цифрларлардың бар-жоғын анықтау.
- Мысал:
- Бүтін сан енгіз: Бүтін сан енгіз:
- 1234 1224
- Жоқ. Бар.
- Мысалдар:
- 1, 2, 3, 4, 5, …
- 1, 2, 4, 7, 11, 16, …
- 1, 2, 4, 8, 16, 32, …
-
- Есеп: модулі бойынша 0,001-ден асып түсетін
- тізбектегі барлық элементтердің қосындысын табу:
- Тізбек элементтері (№2-ден бастап ):
- S := 0; b := 1; c := 2; z := -1; a := 1;
- a := z*b/c;
- b := b + 1; c := 2*c; z := -z;
- program qq;
- var b, c, z: integer;
- S, a: real;
- begin
- S := 0; z := -1;
- b := 1; c := 2; a := 1;
- while abs(a) > 0.001 do begin
- S := S + a;
- a := z * b / c;
- z := - z;
- b := b + 1;
- c := c * 2;
- end;
- writeln('S =', S:10:3);
- end.
- z := - z;
- b := b + 1;
- c := c * 2;
- S := 0; z := -1;
- b := 1; c := 2; a := 1;
- тізбек элементін есепке алу
- "4": Тізбектегі элементтердің қосындысын 0,001 дәлдікпен табу :
- Жауап:
- S = 1.157
- "5": Тізбектегі элементтердің қосындысын 0,001 дәлдікпен табу :
- Жауап:
- S = 1.220
- Есеп: Бүтін оң сан енгізіп(<2000000), ондағы цифрлардың санын анықтау.
- Мәселе: Теріс санның немесе нөлдің енгізілмеуін қалай қадағалауға болады?
- Шығарылуы: Егер бұрыс сан енгізілсе,берілгендерді енгізу үшін кері оралу (цикл!).
- Ерекшелігі: Цикл денесі кемінде бір рет орындалады. => шартын тексеруді циклдың соңында орындау керек. (соңғышартты цикл).
- Соңғышартты цикл – шарттың тексерілуі циклдың соңында орындалатын цикл түрін айтады.
- Соңғышартты цикл: алгоритм
- program qq;
- var n: integer;
- begin
- repeat
- writeln('Введите положительное число');
- read(n);
- until n > 0;
- ... { негізгі алгоритм }
- end.
- repeat
- writeln(‘Оң сан енгіз');
- read(n);
- until n > 0;
- Цикл неше рет орындалған?
- a := 4; b := 6;
- repeat a := a + 1; until a > b;
- a := 4; b := 6;
- repeat a := a + b; until a > b;
- a := 4; b := 6;
- repeat a := a + b; until a < b;
- a := 4; b := 6;
- repeat b := a - b; until a < b;
- a := 4; b := 6;
- repeat a := a + 2; until a < b;
- Тапсырмалар (бұрыс енгізуден қорғау)
- "4": Натурал сан енгізіп, сол сандағы цифрлардың қосындысы 10-ға тең екендігінің дұрыстығын анықтау.
- Мысал:
- >= 0 сан енгіз: >= 0 сан енгіз:
- -234 1233
- Оң сан енгізу керек. Жоқ
- >= 0 сан енгіз:
- 1234
- Иә
- "5": Натурал сан енгізіп,қандай цифрлардың бірнеше рет кездесетіндігін анықтау.
- Мысал:
- >= 0 сан енгіз: >= 0 сан енгіз:
- 2323 1234
- 2, 3 қайталанады Қайталану жоқ.
Достарыңызбен бөлісу: |