Презентація. Програмування лінійних програм

Про матеріал

Продовжуємо вивчати поглиблений курс програмування мовою Pascal.

Цей матеріал стане в нагоді на уроках інформатики при поглибленому вивченні мови програмування та при підготовці учнів до олімпіади з інформатики. Пропонуємо поглиблений теоретичний матеріал:

- структура програми

- типи даних та їх сумісність

- оператор присвоювання, процедури введення та виведення.

А також розглядаються задачі та їх розв'язки з поясненнями.

Зміст слайдів
Номер слайду 1

Програмування лінійних алгоритмів

Номер слайду 2

Перша програма. Сумісність типів. Процедура введення. Структура програми. Оператор присвоювання. Поняття оператора. Процедура виведення. Перевір себе!

Номер слайду 3

Структура програми. Програма складається з таких частин: заголовок програми; розділ підключення модулів;розділ описів; розділ операторів.

Номер слайду 4

Структура програми. Заголовок програми. Заголовок програми починається з зарезервованого слова Program, за яким слідує ідентифікатор програми. В Турбо Pascal цей рядок необов'язковий, але правила хорошого тону програмування вимагають завдання імені програми, щоб вже при першому знайомстві можна було б отримати деяку інформацію про її призначення. Ім’я програми не повинно збігатися з іншими ідентифікаторами у програмі. Глобальні директиви компілятора. В цьому розділі компілятору можна дати вказівки та режими роботи при трансляції наступної програми. Оформляються вони як коментарії, які починаються символом $. Оператор USES грає важну роль у підключенні до тексту програми системних модулів з бібліотек. Наприклад, Uses Graph, Crt - підключення модуля графіки і модуля екрана.

Номер слайду 5

Структура програми. Об’ява глобальних констант, типів, змінних. Опис постійних величин. У розділі CONST міститься перелік констант, які використо-вуються у програмі у вигляді ІМ’Я = ЗНАЧЕНИЕ . Опис типів величин. Розділ опису типів TYPE дозволяє програмісту застосовувати новий, власний тип у програмі. У даному розділі можуть використовуватися і раніш визначені константи. Опис змінних величин. У розділі опису глобальних змінних VAR міститься список змінних, які будуть використанні у програмі, і визначається їх тип у вигляді: VAR {зарезервоване слова, яке визначає змінні} ім’я1, ім’я2 : тип1;ім’я3, ім’я4: тип2;

Номер слайду 6

Структура програми. Основний блок програми. Основний блок програми складається з послідовності операторів, причому робота програми починається тільки з першого оператора основного блока. Тіло основного блока програми обмежено операторними скобками BEGIN і END. Зверніть особливу увагу на існування точки після оператора END. КоментаріКоментарі використовуються у будь-якому місці програми для пояснення різних фрагментів. В коментарях указується інформація, яка призвана в майбутньому служити більш глибокому розумінню програми і упорядкуванню програмного тексту. Коментарі заключаються з двох боків фігурними скобками {}. Якщо в коментар включається інший коментар, то використовують подвійні символи (* та *).

Номер слайду 7

Поняття оператора. Для опису дій, які будуть виконуватися при реалізації алгоритму, призначені оператори. Всі оператори поділяють на дві групи: прості та складені. Прості оператори – це оператори, які не містять інших операторів і виконуються безумовно (обов’язково). До них відносяться:пустий оператор (наприклад, крапка з комою без команди, що їй передує);команда присвоєння;виклик процедури (наприклад, так звані команди уведення та виведення read, readln, write, writeln та інші).

Номер слайду 8

Поняття оператора. Складений оператор має послідовність інших операторів, які розміщуються між операторними дужками begin та end, й відокремлюються один від одного крапкою з комою, тобто складений оператор має наступний вигляд:begin <оператор_1>; ... <оператор_n>; end;Оператори всередині складеного оператора виконуються в тому порядку, в якому записані. Системою складений оператор сприймається, як один оператор. Усі оператори в програмі відокремлюються один від одного символом «;» (крапка з комою), причому крапка з комою не є частиною оператора, це роздільник між ними.

Номер слайду 9

Присвоювання значення змінній. Щоб надати значення змінній існує два методи: уведення з вхідного потоку (ми його розглянемо трохи пізніше) та оператор присвоювання. Оператор присвоювання має такий вигляд.<ім'я змінної>:=<вираз>;Оператор присвоювання позначає такі дії:обчислити значення виразу, записаного праворуч від знака «:=»;записати обчислене значення в змінну, позначену іменем ліворуч, конвертуючи його у відповідний тип. Наприклад, якщо ім’я z оголошено як var z:byte, то оператор присвоювання z:=7*(3+1); позначає обчислення значення 28 і запис його в змінну z. Після виконання присвоювання змінна z має значення 28.

Номер слайду 10

Присвоювання значення змінній. Для перелічуваних типів існує специфічний різновид оператора присвоювання. Він записується як inc(z) або dec(z), де z — ім’я змінної перелічуваного типу. У дійсності ці оператори є викликами вбудованих процедур. Виклик inc(z); тотожний оператору z:=succ(z); або z:=z+1; виклик dec(z); — оператору z:=pred(z); або z:=z-1. Після імені змінної та коми у виклику inc та dec можна записати цілий вираз. Наприклад, виклик inc(z,2) задає збільшення z на дві «одиниці» того типу, до якого належить z. Якщо змінна z типу char має значення 'A', то після виконання inc(z,2) її значенням буде 'C'. Значення виразу у виклику може бути й від’ємним — тоді z зменшиться. Аналогічно, виконання dec(z,2) зменшує значення z у його типі, наприклад, з 3 до 1 або з 'C' до 'A'.

Номер слайду 11

Сумісність типів. Сумісність числових типів у виразах. У всіх типах цілих та дійсних чисел означено одні й ті самі операції: +, -, /, *, порівняння та інші. Проте, наприклад, додавання цілих та дійсних чисел відбувається по-різному, тобто однакові знаки позначають у дійсності різні операції. Наприклад, виразу 1+2 відповідає додавання цілих чисел, а виразу 1.0+2.0 — дійсних. Яку саме операцію слід додати до машинної програми компілятор визначає за знаком операції та типами операндів. Мова Паскаль дозволяє задавати у виразах дійсні та цілі операнди разом, наприклад, 1+2.0. У цьому випадку при обчисленні виразу спочатку цілий операнд перетворюється на дійсний, а потім виконується вказана операція над дійсними значеннями. Так, при обчисленні 1+2.0 спочатку 1 перетворюється на 1.0 і потім додаються 1.0 і 2.0. Результатом, очевидно, буде дійсне значення 3.0.

Номер слайду 12

Сумісність типів. Можливість указання операндів різних типів у виразах називається сумісністю цих типів. Типи цілих і дійсних є сумісними. Цілі типи між собою також сумісні. Проте результат перетворення цілого значення до іншого типу може залежати від того, змінні чи константи записано у виразі, а також від конкретних значень та дії директив компілятора. Очевидно, що в арифметичних виразах символьні та числові типи не є сумісними. Не можна також одночасно у виразах, що передбачають числовий тип результату, використовувати змінні та константи числового та логічного типу або символьного та логічного. Сумісність типів за присвоюванням – це можливість значення одного типу присвоювати змінним іншого типу.

Номер слайду 13

Сумісність типів. Дійсні типи сумісні за присвоюванням із цілими, але не навпаки. Наприклад, якщо діє оголошення a:real; b:longint;, то присвоювання b:=a; є помилковим, але можна написати a:=b. Ціле значення b перед присвоюванням дійсній змінній a перетворюється на дійсне. Зворотні перетворення програміст повинен задавати явно за допомогою функцій trunc або round, наприклад, b:=round(a). Дійсні типи сумісні за присвоюванням між собою. Проте значення більшого типу перетворюється на значення меншого за допомогою округлення. Якщо після округлення значення не представляється в меншому типі, програма аварійно закінчується.

Номер слайду 14

Сумісність типів. Цілі типи також сумісні за присвоюванням, проте з рядом особливостей, які тут не представлено. Зазначимо лише, що значення меншого розміру (у байтах) утворюються за рахунок відкидання старших байтів у значенні, більшому за розміром, тобто можливі помилкові результати або аварійне завершення програми. Наприклад, якщо діє таке оголошення x:byte; y:word, а потім записано наступні команди присвоєння: y:=300; x:=y, у змінну y не може бути записано значення 300 (максимально можливе значення в межах байту 255), а тому запишеться значення 44 (різниця 300-256).

Номер слайду 15

Уведення значень у змінніМови програмування, як правило, не мають спеціальних операторів для виведення значень з оперативної пам’яті на зовнішні носії та уведення їх з носіїв до оперативної пам’яті. Ці операції здійснюються за спеціальними підпрограмами (процедурами) уведення-виведення. Уведення даних із зовнішніх носіїв до змінних програми виконується процедурами уведення, або читання. Виклик однієї з них у найпростішому випадку має вигляд readln[(ім’я-змінної)]. Ім’я readln є скороченням англійського read line — прочитати рядок. Квадратні дужки вказують, що аргумент цієї процедури може бути відсутнім. При виконанні виклику readln(ім’я-змінної) комп’ютер зупиняється й чекає, що на клавіатурі буде набрано константу того ж типу, що й тип указаної змінної.

Номер слайду 16

Уведення значень у змінніНабрана константа після натискання на Enter передається процедурі, яка за константою створює значення відповідного типу та присвоює вказаній змінній. Типом змінної може бути лише базовий тип. Якщо натиснути Enter, не набравши нічого, окрім пропусків, то комп’ютер і надалі чекатиме. Перед числовою константою або після неї можна набрати довільне число пропусків – система їх ігнорує. Якщо замість потрібної константи набрати інші символи (наприклад, недопустиму числову константу або замість числової константи символьну), то виконання програми на цьому буде аварійно завершено і на екрані з’явиться повідомлення про те, що вхідні символи були неправильними.

Номер слайду 17

Уведення значень у змінніНехай, наприклад, ім’я z позначає змінну типу longint. Якщо при виконанні readln(z) набрати 1024, то після натискання на Enter значенням z стане 1024. Якщо ж набрати 50.9 або z=1024, програму буде аварійно завершено, оскільки число 50.9 не представляється в типі longint, та ціла константа не може починатися символами «z=». Якщо ж набрати ціле число, яке виходить за межі типу, наприклад, 50000000, результат залежить від встановлених директив компіляції і може бути цілком неочікуваним. Наприклад, якщо ім’я z позначає змінну типу byte, і при виконанні оператора readln(z) на клавіатурі набрати число 256, змінна z одержить значення 0 (нагадуємо, що тип даних byte може зберігати беззнакові цілі числа від 0 до 255, а тому число 256 в межах одного байту буде виглядати, як 0). Якщо ж на клавіатурі набрати число «-1» при тому самому описі, оператор readln(z) надасть змінній z значення 255 (у беззнаковому типі byte відсутні від’ємні значення).

Номер слайду 18

Уведення значень у змінніПідводячи підсумок зауважимо, що при введенні цілих значень, що виходять за межі типу змінної, у яку відбувається запис, результат збереження буде дорівнювати залишку від цілочисельного ділення уведеного числа на кількість значень вказаного типу. У виклику процедури читання можна написати кілька імен змінних, відокремивши їх комами. Поки всі константи не буде набрано, виконання виклику не закінчується. Нехай, наприклад, x:smallint; y:real;. При виконанні оператора readln(x,y); слід набрати цілу константу, додати хоча б один пропуск або натискання на Enter, а потім набрати будь-яку цілу або дійсну константу (між цілою та дробовою частиною набрати десяткову крапку) і натиснути на Enter.

Номер слайду 19

Уведення значень у змінніЗверніть увагу, що вводити з клавіатури можна значення тільки числових або символьних типів. Логічні значення уведеними бути не можуть! Надавати значення змінним логічного типу можна тільки з використанням команди присвоєння. Дуже уважними потрібно бути при уведенні символьних (літерних) значень. Для чисел при уведенні розділювачами традиційно слугують символи пробілів або використання клавіші Enter. Всі інші символи крім цифр, розділової крапки між цілою та дробовою частинами, знаку числа («+» або «−») та латинської букви Е (е) вважаються помилковими. При уведенні літерних значень будь-який символ є дозволеним, а натискання клавіші Enter генерує послідовність аж двох символів!

Номер слайду 20

Уведення значень у змінніЩе цікавішими будуть результати зчитування, якщо символьна змінна не є першим параметром. Наприклад, для оператора readln(a,c,x); при набраних на клавіатурі символах 23 15 54 перше число 23 запишеться у цілочисельну змінну a, а ось символьна змінна отримає значення пробілу, оскільки після зчитування числа курсор зупиняється саме на цьому символі. Якби далі було записане не число, зчитування закінчилось би аварійно. При даній же послідовності у змінну дійсного типу x буде записане число 15, а число 54 виявиться зайвим у вхідному потоці. Висновок, який можна зробити, такий: Змінну символьного типу потрібно уводити або окремим оператором зчитування (це кращий варіант), або першим параметром команди зчитування. Зчитати один символ в середині вхідного потоку неможливо!

Номер слайду 21

Виведення значень виразів на екран. Виведення (або запис) значення виразу на екран задається у вигляді виклику процедури writeln[(<вираз>)]. Квадратні дужки у форматі запису будь-якого оператора означають, що те, що в них укладено, може бути відсутнім. Тобто, процедура writeln може викликатися і таким чином:writeln;При виконанні підпрограми writeln обчислюється значення виразу, і за ним створюється відповідна константа, тобто послідовність символів. Константа передається пристрою, що зветься консоллю, частиною якого є екран, і виводиться на нього. Типом виразу може бути лише базовий тип.

Номер слайду 22

Виведення значень виразів на екран. Виведення (або запис) значення виразу на екран задається у вигляді виклику процедури writeln[(<вираз>)]. Квадратні дужки у форматі запису будь-якого оператора означають, що те, що в них укладено, може бути відсутнім. Тобто, процедура writeln може викликатися і таким чином: writeln;При виконанні підпрограми writeln обчислюється значення виразу, і за ним створюється відповідна константа, тобто послідовність символів. Константа передається пристрою, що зветься консоллю, частиною якого є екран, і виводиться на нього. Типом виразу може бути лише базовий тип. Наприклад, при виконанні операторів програми з цілою змінною zz:=1; writeln(1+z); writeln(z<=1); на екрані з’являться такі символи.2 TRUE

Номер слайду 23

Виведення значень виразів на екран. Змінні, що складають список вихідних даних, можуть бути типами цілих чисел, дійсних, символьним чи булівського типу. Як елементи списку вихідних даних, крім імен змінних, можуть використовуватися вирази і рядки. Виведення кожного значення в рядок екрану відбувається відповідно до ширини поля виведення. Форма представлення значень у полі виведення відповідає типу змінних і виразів: величини цілого типу виводяться як цілі десяткові числа, дійсного типу - як дійсні десяткові числа з десятковим порядком, символьного типу і рядка - у виді символів, логічного типу - у виді логічних констант TRUE і FALSE.

Номер слайду 24

Виведення значень виразів на екран. Оператор виведення дозволяє задати ширину поля виводу для кожного елемента списку виведення. WRITE(ім’я1[дія]:кількість позицій для числа: кількість після коми);Для цілих чисел та тексту можна застосувати такий запис: WRITE(ім’я1[дія]:к-сть позицій для числа або тексту)Якщо виведене значення займає в полі менш позицій, чим задано, то перед цим значенням розташовуються пропуски. Якщо текстове значення не поміщається в ширину цього поля, то для нього буде відведена необхідна кількість позицій. Для величин дійсного типу елемент списку висновку може мати вид А: К: М, загальний вигляд: WRITE(А: К: М);

Номер слайду 25

Виведення значень виразів на екран. Застосування процедур WRITE и WRITELN .

Номер слайду 26

Виведення значень виразів на екран. Застосування процедур WRITE и WRITELN .

Номер слайду 27

Виведення значень виразів на екран. Застосування процедур WRITE и WRITELN .

Номер слайду 28

Перша програма. Приклад 1. Умова задачі: Для двох дійсних чисел визначити їх суму. Розв’язок задачі. Проаналізуємо умову цієї задачі. Очевидно, що вона передбачає, що програма повинна рахувати суму двох чисел, значення яких уводяться з клавіатури. Для збереження уведених чисел нам знадобиться дві змінних дійсного типу. Крім того, потрібна ще одна змінна для збереження результату обчислень (поганим тоном програмування є псування вхідних даних без потреби, адже в більш складних задачах вони можуть знадобитися для подальших обчислень). Уведення вхідних даних у змінні будемо робити оператором уведення з вхідного потоку readln, а виведення результату на екран – оператором writeln.

Номер слайду 29

Перша програма. Отже повна програма мовою Паскаль буде мати наступний вигляд:program First_program;{$APPTYPE CONSOLE}uses Sys. Utils;var a,b : extended; {Змінні для збереження вхідних даних} Res : extended; {Змінна для збереження результату}begin writeln('Enter 2 number -> '); readln(a,b); Res:=a+b; writeln('Res=', Res:0:2); readln;end.

Номер слайду 30

Перша програма. Отже повна програма мовою Паскаль(в середовищі Delphi) буде мати наступний вигляд:program First_program;{$APPTYPE CONSOLE}uses Sys. Utils;var a,b : extended; {Змінні для збереження вхідних даних} Res : extended; {Змінна для збереження результату}begin writeln('Enter 2 number -> '); readln(a,b); Res:=a+b; writeln('Res=', Res:0:2); readln;end.

Номер слайду 31

Перша програма. Пример 2 Умова: Обчислити площу даного трикутника по формулі Герона. (вважаємо, що трикутник існує) Ідея розв’язування. Ввести значення трьох сторін трикутника;Обчислити полупериметр трикутника;Обчислити площу трикутника. Алгоритм розв’язування:вводимо три числа, відповідні сторонам трикутника ;обчислюємо полупериметр по формулі р=(a+b+c)/2;обчислюємо площу трикутника по формулі Герона S = виводимо результат на екран.

Номер слайду 32

Перша програма. Програма розв’язування :var a, b, c, p, s : real;begin write(‘ Введіть першу сторону трикутника а=’); readln(a); write(‘Введіть другу сторону трикутника b=’); readln(b); write(‘Введіть третю сторону трикутника c=’); readln(c); p:= (a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); writeln(‘площа трикутника дорівнює ’,s,’ кв.од.’);end.

Номер слайду 33

Перша програма. Пример 3 Умова: Визначити, чи є дане чотиризначне число паліндромом (симетричним). Алгоритм розв’язування:вводимо чотиризначне число ;виділимо останню цифру, як залишок від ділення на 10;відкидаємо останню цифру за допомогою цілочисельного ділення на 10. Маємо тризначне число, яке складається з першої, другої і третьої цифри даного числа;виділимо з цього числа останню цифру як залишок від ділення на 10;відкидаємо останню цифру за допомогою цілочисельного ділення на 10. Вже маємо двозначне число, яке складається з першої та другої цифри даного числа;виділимо з нього останню цифру як залишок від ділення на 10;відкидаємо останню цифру, залишається тільки перша цифра;ми маємо чотири цифри, складемо логічний вираз перевірки на існування однакових цифр;виводимо значення логічної змінної.

Номер слайду 34

Перша програма. Програма розв’язуванняvar n,m : longint; {дане число і його копія} a,b,c,у : 0..9; {змінні для зберігання цифр} z : boolean; {логічна змінна}begin write(‘Введить чотиризначне число’); readln(n); m:=n;{копіюємо дане число} a:=n mod 10; {остання цифра-четверта}n:=n div 10; {відкидаємо четверту, залишаються перша, друга і третя}b:= n mod 10; { третя цифра}n:=n div 10; { відкидаємо знову останню (третю)}c:= n mod 10; {маємо другу цифру} у:= n div 10; {а ось і перша!} z:= (a=у) and (b=c) ; {чи симетрично число? } writeln( ‘Чи є число ‘, m, ‘симетричним?-‘, z); {відповідь - true або false } end.

Номер слайду 35

Перша програма. Пример 4. Умова: Поміняти місцями значення змінних Х і У, не використовуючи допоміжної змінної. Ідея розв’язування: Якщо присвоїти одній із змінних їх суму, тоді почергове віднімання допоможе нам обійтися без допоміжної змінної. Програма розв’язування:var x,y : real;begin write(‘Введіть два числа’); readln(x,y); x:= x+y; y:=x-y; x:=x-y; writeln(‘x=’,x,’ y=’,y); end. Проведіть експеримент :чи при усіх значеннях х і у буде працювати ця програма?

Середня оцінка розробки
Структурованість
4.7
Оригінальність викладу
4.7
Відповідність темі
5.0
Загальна:
4.8
Всього відгуків: 3
Оцінки та відгуки
  1. Гладкий Віталій Юрійович
    Загальна:
    5.0
    Структурованість
    5.0
    Оригінальність викладу
    5.0
    Відповідність темі
    5.0
  2. Скляренко Людмила Дмитрівна
    Загальна:
    4.3
    Структурованість
    4.0
    Оригінальність викладу
    4.0
    Відповідність темі
    5.0
  3. Шпітко Вікторія Володимирівна
    Загальна:
    5.0
    Структурованість
    5.0
    Оригінальність викладу
    5.0
    Відповідність темі
    5.0
pptx
Додано
7 лютого 2018
Переглядів
3735
Оцінка розробки
4.8 (3 відгука)
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку