Паскаль тілінде программалау


Паскаль тілінде программалау



бет2/3
Дата06.01.2022
өлшемі2,29 Mb.
#15445
түріПрограмма
1   2   3

Паскаль тілінде программалау

  • Тақырып 3. Күрделі шарттар
  • Күрделі шарттар
  • Есеп. Фирма 25 пен 40 жас арасындағы қызметкерлерді жұмысқа алуда. Адамның жасын енгізіп, оны фирмаға алуға болатындығы немесе болмайтындығы туралы мәлімет шығару («болады» немесе «болмайды» деген жауап шығару).
  • Ерекшелігі: екі шарттың бір мезгілде орындалатынын немесе орындалмайтынын тексеру.
  • Белгілі әдістермен шешуге бола ма?
  • ?
  • Нұсқа 1. Алгоритм
  • басы
  • енгізу x
  • ‘болады'
  • жоқ
  • иә
  • жоқ
  • x >= 25?
  • иә
  • жоқ
  • x <= 40?
  • 'болмайды'
  • болмайды'
  • Нұсқа 1. Программа
  • program qq;
  • var x: integer;
  • begin
  • writeln(‘Жасты енгіз');
  • read ( x );
  • if x >= 25 then
  • if x <= 40 then
  • writeln (‘Болады')
  • else writeln (‘Болмайды')
  • else
  • writeln (‘Болмайды');
  • end.
  • Нұсқа 2. Алгоритм
  • басы
  • енгізу x
  • ‘болады'
  • иә
  • жоқ
  • x >= 25 және
  • x <= 40?
  • 'болмайды'
  • соңы
  • Вариант 2. Программа
  • күрделі шарт
  • 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
    • <, <=, >, >=, =, <>
  • Ерекшелігі – қарапайым шарттардың әрқайсысын жақшамен жабу.
  • Мысал:
  • 4 1 6 2 5 3
    • 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)
  • Күрделі шарттар
  • True
  • True
  • FALSE
  • (-, 6)
  • (6, 10)
  • (10, )
  • (-, 10)
  • (-, 6)  (10,)
  • (-, )
  • (6, )
  • x < 6
  • x > 10
  • x < 10
  • x > 6
  • True
  • True
  • Тапсырмалар
  • "4": Айдың нөмірін енгізу арқылы, жыл мезгілінің атауын шығару.
  • Мысал:
  • Ай нөмірін енгіз:
  • 4
  • көктем

Паскаль тілінде программалау

  • Тақырып 4. Циклдер
  • Циклдер
  • Цикл – белгілі бір әрекеттер тізбегінің бірнеше рет қайталанып орындалуы.
    • қадамдар саны белгілі цикл
    • қадамдар саны белгісіз цикл (шартты цикл)
  • Есеп. 1-ден 8-ге дейінгі бүтін сандардың квадраттары мен кубтарын есептеп шығару (a-дан b-ға дейін).
  • Ерекшелігі: бірдей амалдар 8 рет орындалады.
  • Белгілі әдістермен шешуге бола ма?
  • ?
  • Алгоритм
  • басы
  • i, i2, i3
  • соңы
  • жоқ
  • иә
  • i <= 8?
  • i := 1;
  • i := i + 1;
  • i2 := i * i;
  • i3 := i2 * i;
  • цикл айнымалысының бастапқы мәнін көрсету
  • барлығы да атқарылды ма? соны тексеру
  • квадрат пен куб-ты есептейміз
  • нәтижесін шығару
  • келесі i-ге өту
  • Алгоритм ("цикл" блогімен)
  • басы
  • i, i2, i3
  • соңы
  • i2 := i * i;
  • i3 := i2 * i;
  • i := 1,8
  • «цикл»блогі
  • цикл денесі
  • Программа
  • 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;
  • downto
  • Айнымалысы бар цикл
  • for <айнымалы> := <алғашқы мән> to
  • <ең соңғы мән> do begin
  • {цикл денесі}
  • end;
  • Айнымалының 1-ге артуы:
  • for <айнымалы> := <алғашқы мән> downto
  • <ең соңғы мән> do begin
  • {цикл денесі}
  • end;
  • Айнымалының 1-ге кемуі:
  • Айнымалысы бар цикл
  • Ерекшеліктері:
    • цикл айнымалысының мәні бүтін болуы керек (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 = 4
  • a := 1;
  • for i:=3 to 1 do a := a+1;
  • a = 1
  • a := 1;
  • for i:=1 downto 3 do a := a+1;
  • a = 1
  • a := 1;
  • for i:=3 downto 1 do a := a+1;
  • a = 4
  • 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 болуы мүмкін.
  • Шығарылуы:
  • i mod 2 = 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;
  • i := i + 2;
  • i := 1;
  • Қадамдарды қалай өзгертуге болады? – III
  • Идея: Тек 5 санды ғана шығару керек, k айнымылысы 1-ден 5-ке дейін өзгереді. k-ны біле отырып, i-ді есептеу қажет.
  • Шығарылуы:
  • k
  • 1
  • 2
  • 3
  • 4
  • 5
  • i
  • 1
  • 3
  • 5
  • 7
  • 9
  • i = 2k-1
  • for k:=1 to 5 do begin
  • ???
  • i2 := i*i;
  • i3 := i2*i;
  • writeln(i:4, i2:4, i3:4);
  • end;
  • i := 2*k – 1;
  • Тапсырмалар
  • "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

Паскаль тілінде программалау

  • Қадамдар саны белгісіз цикл
  • Мысал: Бөренеден ағаштың бұтағын кесіп алу керек. Қолараны әрі-бері неше рет қозғалтуымыз керек,. ?
  • Есеп: (<2000000) бүтін сан енгізіп, ондағы цифрлардың санын анықтау.
  • Шығару амалы: Ең соңғы орналасқан цифрларды кезекпен алып тастай отырып, санаушыны арттырамыз.
  • Мәселе: неше қадам жасау керектігі белгісіз.
  • Шығарылуы: n = 0 болғанда тоқтау керек, яғни "n <> 0" болғанша орындай беру керек.
  • n
  • count
  • 123
  • 0
  • 12
  • 1
  • 1
  • 2
  • 0
  • 3
  • Алгоритм
  • басы
  • count
  • соңы
  • жоқ
  • иә
  • n <> 0?
  • count := 0;
  • count := count + 1;
  • n := n div 10;
  • цифрлардың санаушысын нөлге теңестіру
  • енгізу n
  • 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;
  • , n1: integer;
  • n1 := n;
  • n1,
  • "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;
  • 2 рет
  • a = 6
  • a := 4; b := 6;
  • while a < b do a := a + b;
  • 1 рет
  • a = 10
  • a := 4; b := 6;
  • while a > b do a := a + 1;
  • 0 рет
  • a = 4
  • a := 4; b := 6;
  • while a < b do b := a - b;
  • 1 рет b = -2
  • 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, …
  • an = n
  • a1 = 1, an+1 = an+1
  • a1 = 1, an+1 = an + n
  • an = 2n-1
  • a1 = 1, an+1 = 2an
  • b1 = 1, bn+1 = bn+1
  • c1 = 2, cn+1 = 2cn
  • Тізбектер
  • Есеп: модулі бойынша 0,001-ден асып түсетін
  • тізбектегі барлық элементтердің қосындысын табу:
  • Тізбек элементтері (№2-ден бастап ):
  • n
  • 1
  • 2
  • 3
  • 4
  • 5
  • ...
  • b
  • 1
  • 2
  • 3
  • 4
  • 5
  • ...
  • c
  • 2
  • 4
  • 8
  • 16
  • 32
  • ...
  • z
  • -1
  • 1
  • -1
  • 1
  • -1
  • ...
  • b := b+1;
  • c := 2*c;
  • z := -z;
  • Алгоритм
  • басы
  • S
  • соңы
  • жоқ
  • иә
  • |a| > 0.001?
  • S := S + a;
  • S := 0; b := 1; c := 2; z := -1; a := 1;
  • бастапқы мәндер
  • a := z*b/c;
  • b := b + 1; c := 2*c; z := -z;
  • бірінші элемент
  • a := 1;
  • S := 0;
  • жаңа элемент
  • өзгеріс
  • Қайта қою керек пе?
  • ?
  • Программа
  • 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), ондағы цифрлардың санын анықтау.
  • Мәселе: Теріс санның немесе нөлдің енгізілмеуін қалай қадағалауға болады?
  • Шығарылуы: Егер бұрыс сан енгізілсе,берілгендерді енгізу үшін кері оралу (цикл!).
  • Ерекшелігі: Цикл денесі кемінде бір рет орындалады. => шартын тексеруді циклдың соңында орындау керек. (соңғышартты цикл).
  • Соңғышартты цикл – шарттың тексерілуі циклдың соңында орындалатын цикл түрін айтады.
  • Соңғышартты цикл: алгоритм
  • басы
  • соңы
  • иә
  • жоқ
  • n > 0?
  • цикл денесі
  • ШЫҒУДЫҢ шарты
  • «типтік процесс» блогі
  • енгізу n
  • негізгі алгоритм
  • Программа
  • program qq;
  • var n: integer;
  • begin
  • repeat
  • writeln('Введите положительное число');
  • read(n);
  • until n > 0;
  • ... { негізгі алгоритм }
  • end.
  • repeat
  • writeln(‘Оң сан енгіз');
  • read(n);
  • until n > 0;
  • until n > 0;
  • ШЫҒУДЫҢ шарты
  • Цикл неше рет орындалған?
  • a := 4; b := 6;
  • repeat a := a + 1; until a > b;
  • 3 рет
  • a = 7
  • a := 4; b := 6;
  • repeat a := a + b; until a > b;
  • 1 рет
  • a = 10
  • a := 4; b := 6;
  • repeat a := a + b; until a < b;
  • Мүдіріп қалу
  • a := 4; b := 6;
  • repeat b := a - b; until a < b;
  • 2 рет
  • b = 6
  • 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 қайталанады Қайталану жоқ.


Достарыңызбен бөлісу:
1   2   3




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет