1.6k likes | 1.87k Views
Програмування на мові Паскаль. Тема 1. Вступ. Алгоритм. Алгоритм – це чітко визначений план дій для виконавця. Властивості алгоритму дискретність : складається з окремих кроків (команд) зрозумілість : повинен включати тільки команди відомі для виконавця (які містяться в СКВ)
E N D
Програмування на мові Паскаль Тема 1. Вступ
Алгоритм Алгоритм – це чітко визначений план дій для виконавця. • Властивості алгоритму • дискретність: складається з окремих кроків (команд) • зрозумілість: повинен включати тільки команди відомі для виконавця (які містяться в СКВ) • визначеність: при однакових вхідних даних завжди видає один і той самий результат • скінченність: закінчується за скінчену кількість кроків • масовість: може застосовуватися багатократно при різних вихідних даних • коректність: видає правильне рішення при будь-яких допустимих вихідних даних
Програма • Програма – це • алгоритм, записаний на будь-якій мові програмування • набір команд для комп’ютера • Команда – це опис дій, які повинен виконати комп’ютер. • звідки отримати вихідні дані? • що потрібно з ними зробити?
Мови програмування • Машинно-орієнтовані (низького рівня) – кожна команда відповідає одній команді процесора (асемблер) • Мови високого рівня– наближені до реальної (англійської) мови, легше сприймаються людиною, не залежать від відповідного комп’ютера • для навчання: Бейсик, ЛОГО, Паскаль • професійні: Сі, Фортран, Паскаль • для задач штучного інтелекту: Пролог, ЛИСП • для Інтернету: JavaScript, Java, Perl, PHP, ASP
Задача Підзадача1 Підзадача2 Підзадача3 1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 3.3 Мова Паскаль • 1970 – Ніклаус Вірт (Швейцарія) • мова для навчання студентів • розробка програм “зверху-вниз” • різноманітні структури даних (масиви, структури, множини)
З чого складається програма? program <ім’я програми>; const …;{константи} var …; {змінні} begin … {основна програма} end. { процедури і функції } коментарі у фігурних дужках не опрацьовуються
З чого складається програма? Константа – постійна величина, яка має ім’я. Змінна – змінна величина, яка має ім’я (комірка пам’яті). Процедура – додатковий алгоритм, який описує деякі дії (малювання кола). Функція – додатковий алгоритм, для виконання обчислень (обчислення квадратного кореня, sin).
Імена програм, констант, змінних • Імена можуть містити • латинські букви (A-Z) • цифри • знак підкреслення _ великі і маленькі букви не розрізняються ім’я не може починатися з цифри • Імена НЕ можуть містити • українські букви • пропуски • дужки, знаки +, =, !, ? та ін. Які імена правильні? AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B
Константи const i2 = 45; { ціле число } pi = 3.14; { дійсне число } qq = 'Вася'; { рядок символів } L = True;{ логічна величина } ціла і дробова частина відділяються крапкою можна використовувати українські букви! • Може приймати два значення: • True (істина, “так") • False (хибність, "ні")
Змінні Змінна – це величина, яка має ім’я, тип і значення. Значення змінної величини під час виконання програми може змінюватися. • Типи змінних: • integer { цілі } • real { дійсні } • char { один символ } • string { рядок } • boolean { логічні } • Оголошення змінних (виділення пам’яті): • var a, b: integer; • Q: real; • s1, s2: string;
Як змінюється значення змінної? Оператор – це команда мови програмування високого рівня. Оператор присвоєння служить для зміни значення змінної. Приклад: program qq; var a, b: integer; begin a := 5; b := a + 2; a := (a + 2)*(b – 3); end. a 5 ? 5 b ? 7 5+2 a 5 28 7*4
Оператор присвоєння Загальна структура: <ім’я змінної> := <вираз>; • Арифметичні вирази можуть містити • константи • імена змінних • знаки арифметичних дій: • + - * / div mod • виклики функцій • круглі дужки ( ) множення ділення націло ділення остача від ділення
Які оператори неправильні? program qq; var a, b: integer; x, y: real; begin a := 5; 10 := x; y := 7,8; b := 2.5; x := 2*(a + y); a := b + x; end. ім’я змінної повинно знаходитися зліва від знака := ціла і дробова частина відділяються крапкою неможливо записати дійсне значення в цілу змінну
Ручна прокрутка програми program qq; var a, b: integer; begin a := 5; b := a + 2; a := (a + 2)*(b – 3); b := a div 5; a := a mod b; a := a + 1; b := (a + 14) mod 7; end.
Порядок виконання операцій • обчислення виразів у дужках • множення, ділення, div, mod зліва направо • додаванні і віднімання зліва направо • 2 3 5 4 1 7 8 6 9 • z := (5*a*c+3*(c-d))/a*(b-c)/ b; • 2 6 3 4 7 5 1 12 8 11 10 9 • x:=(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a));
Додавання двох чисел Задача. Ввести два цілих числа і вивести на екран їх суму. Найпростіше розв’язання: program qq; var a, b, c: integer; begin read ( a, b ); c := a + b; writeln ( c ); end.
a 25 b 30 a 25 b 30 Оператор введення read ( a );{ ввести значення змінноїa} read ( a, b );{ ввести значення зміннихa і b} Як вводяться два числа? через пропуск: 25 30 через Enter: 25 30
Оператор виведення write ( a );{ вивести значення змінноїa} writeln ( a );{ вивести значення змінної a і перейти на новий рядок} writeln ( ‘Привіт!' );{ виведення тексту} writeln ( ‘Відповідь: ', c );{виведення тексту і значення змінної c} writeln ( a, '+', b, '=', c );
Формати виведення program qq; var i: integer; x: real; begin i := 15; writeln ( '>', i, '<' ); writeln ( '>', i:5, '<' ); x := 12.345678; writeln ( '>', x, '<' ); writeln ( '>', x:10, '<' ); writeln ( '>', x:7:2, '<' ); end. всього символів >15< > 15< >1.234568E+001< > 1.23E+001< > 12.35< всього символів в дробовій частині
Повний розв’язок program qq; var a, b, c: integer; begin writeln(‘Ввести два цілих числа'); read ( a, b ); c := a + b; writeln ( a, '+', b, '=', c ); end. це виводить комп'ютер Протокол: Ввести два цілих числа 25 30 25+30=55 це вводить користувач
Блок-схема лінійного алгоритму блок «початок» початок ввести a, b блок «ввести» c := a + b; блок «процес» вивести c блок «вивести» кінець блок «кінець»
Завдання "4": Ввести три числа, знайти їх суму і добуток. Приклад: Ввести три числа: 4 5 7 4+5+7=16 4*5*7=140 "5": Ввести три числа, знайти їх суму, добуток і середнє арифметичне. Приклад: Ввести три числа: 4 5 7 4+5+7=16 4*5*7=140 (4+5+7)/3=5.33
Програмування на мові Паскаль Тема 2. Розгалуження
Алгоритми розгалуження Задача. Ввести два цілих числа і вивести на екран більше з них. Ідея розв’язання: потрібно вивести на екран перше число, якщо воно більше другого, або друге, якщо воно більше першого. Особливості: дії виконавця залежать від деяких умов (якщо … інакше …). Алгоритми, в яких послідовність кроків залежить від виконання деяких умов, називаються розгалуженими.
початок ввести a,b так ні a > b? max:=a; max:=b; вивести max кінець ? Якщо a = b? Варіант 1. Блок-схема блок «логічний вираз» повна форма розгалуження
Варіант 1. Програма program qq; var a, b, max: integer; begin writeln(‘Ввести два цілих числа'); read ( a, b ); if a > b then begin end else begin end; writeln (‘Більше число', max); end. повна форма умовного оператора max:=a; max:=b;
Умовний оператор if<умова>thenbegin {що робити, якщо умова правильна} end else begin {що робити, якщо умова неправильна} end; • Особливості: • перед elseНЕ ставиться крапка з комою • друга частина (else …) може бути відсутня (неповна форма) • якщо в блоці один оператор, можна забрати слова begin і end
Що неправильно? 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 a := b; end else b > abegin b := a; end; if a > b then begin a := b; end; else begin b := a; end; end begin
початок ввести a,b max:=a; так ні b > a? max:=b; вивестиmax кінець Варіант 2. Блок-схема неповна форма розгалуження
Варіант 2. Програма program qq; var a, b, max: integer; begin writeln(‘Ввести два цілих числа'); read ( a, b ); max := a; if b > a then writeln (‘Більше число', max); end. неповна форма умовного оператора max:=b;
Варіант 2Б. Програма program qq; var a, b, max: integer; begin writeln(‘Ввести два цілих числа'); read ( a, b ); max := b; if ??? then ??? writeln (‘Більше число', max); end. a > b max := a;
Що неправильно? 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 b >= a then b := a; if a > b then else begin b := a; end; a := b
Завдання "4": Ввести три числа і знайти найбільше з них. Приклад: Ввести три числа: 4 15 9 Найбільше число 15 "5": Ввести п’ять чисел і знайти найбільше з них. Приклад: Ввести п’ять чисел: 4 15 9 56 4 Найбільше число 56
Програмування на мові Паскаль Тема 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 True True FALSE (-,6) x<6 (6,10) x>10 (10,) (-,10) x<10 (-,6)(10,) (-,) x>6 (6,)
Завдання "4": Ввести номер місяця і вивести назву пори року. Приклад: Ввести номер місяця: 4 весна "5": Ввести вік людини (від 1 до 150 років) и вивести його разом з наступним слово “рік”, “роки" або “років". Приклад: Ввести вік: Ввести вік: 24 57 Вам 24 роки Вам 57 років
Програмування на мові Паскаль Тема 4. Цикли
? Чи можна розв’язати відомими методами? Цикли • Цикл – це багатократне виконання однакової послідовності дій. • цикл з відомою кількістю кроків • цикл з невідомою кількістю кроків (цикл з умовою) • Задача. Вивести на екран квадрати і куби цілих чисел від 1 до 8 (від a до b). • Особливості: однакові дії виконуються 8 раз.
Алгоритм початок задати початкове значення змінної циклу i:=1; перевірити, чи все виконали ні i<=8? кінець обчислити квадрат і куб так i2:=i*i; i3:=i2*i; вивести результат i,i2,i3 перейти до наступногоi i:=i+1;
Алгоритм (з блоком "цикл") блок "цикл" початок i := 1,8 кінець i2:=i*i; i3:=i2*i; тіло циклу i,i2,i3
Програма 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
Цикл з змінною Збільшення змінної на 1: for<змінна>:=<початкове значення>to <кінцеве значення> dobegin {тіло циклу} end; Зменшення змінної на 1: for<змінна>:=<початкове значення>downto <кінцеве значення> dobegin {тіло циклу} end;