Етапи розробки проекту; кодування; налагодження; тестування.
Навчальна. ознайомити учнів з етапами розробки проекту, кодуванням, налагодженням тестування, основними помилками компіляції; набуття навичок запускати програму на виконання, одержувати й аналізувати результати.
Розвиваюча. Розвивати логічне мислення, операторську культуру.
Виховна. Виховувати інтерес до предмета, розкриваючи необхідність знання мови в подальшому житті.
План
Хід уроку
1. Актуалізація опорних знань.
2. Вивчення нового матеріалу.
Етапи розв'язування задач на комп'ютері
Розв'язування прикладної задачі на комп'ютері з використанням програмування включає такі етапи:
І етап. Постановка задачі.
Розв'язування практичної задачі починається з опису вихідних даних і цілей задачі.
Постановка задачі вимагає уважного аналізу її формулювання з метою чіткого виділення вихідних даних і необхідних результатів. При цьому встановлюються обмеження на припустимі значення величин, які застосовані у задачі. Математична постановка задачі - це точне формулювання умов і цілей розв'язування.
На цьому етапі потрібно чітко визначити умови задачі:
ІІ етап. Побудова математичної моделі.
На цьому етапі потрібно розгорнутий змістовний опис задачі замінити її математичною моделлю за допомогою математичних залежностей. Для побудови математичної моделі потрібно:
ІІІ етап. Складання алгоритму.
На даному етапі потрібно обґрунтовано вибрати метод розв'язування задачі. Метод - це конкретний спосіб розв'язування задачі в рамках побудованої моделі, наприклад, широко застосовані методи наближених обчислень функцій, коренів рівнянь тощо.
Алгоритм - це організована послідовність вказівок виконання дій, спрямована на розв'язування задачі.
Алгоритм розв'язування задачі складається у відповідності до обраного методу. При складанні алгоритму необхідно враховувати всі його властивості. Розробка і складання алгоритму - найважливіший етап розв'язування задачі. Від якості алгоритму залежать правильність результатів, ефективність використання часу та оперативної пам'яті комп'ютера.
IV етап. Складання програми за розробленим алгоритмом.
Програмування - запис складеного алгоритму однією з мов програмування.
V етап. Тестування і налагодження програми.
На даному етапі проводиться перевірка правильності роботи програми за допомогою тестів і виправлення виявлених помилок. Тест - це набір спеціально підібраних вхідних даних і очікуваних результатів. Тестування полягає в порівнянні результатів тестового прикладу з результатами, які отримані після виконання програми.
VI етап. Аналіз результатів.
На завершальному етапі програма виконується з даними, що становлять основну задачу. Після остаточного виконання програми робиться аналіз результатів. У випадку невірогідності результатів можлива зміна самого методу до розв'язування задачі і повернення до етапу побудови математичної моделі для її коригування та уточнення.
Етапи роботи користувача.
1. Спочатку активізують головне меню (для цього натискають на F10) і пункт File. Отримують додаткове спадне меню. У ньому вибирають команду New. Середовище переходить у режим створення нового файлу з назвою NONAME00.PAS. Набирають текст деякої програми.
2. Для виправлення очевидних помилок уведення користуються традиційними прийомами редагування тексту, зокрема, такими клавішами чи їхніми комбінаціями для роботи з блоками тексту:
Enter — перейти на новий рядок, вставити порожній
рядок чи розбити рядок на два рядки;
Delete — вилучити символ над курсором;
Insert — перемкнути режими вставки чи заміни;
Shift+стрілки— виокремити чи зняти виокремлення тексту;
Ctrl+Insert — копіювати блок у буфер;
Shift+Del — перемістити блок з тексту в буфер;
Shift-flnsert — вставити текст з буфера у позначене курсором місце основного тексту;
Ctrl+Del — вилучити виокремлений блок з тексту;
Ctrl+Y — вилучити вибраний рядок з тексту.
3. Якщо очевидних помилок немає, програму можна виконати за допомогою пункту головного меню Run або комбінації клавіш Ctrl+F9. Відбудеться компіляція і виконання програми. Щоб виконати компіляцію програми без її виконання, натискають на ALT+F9.
4. Якщо система виявить синтаксичні помилки, то про це буде негайно повідомлено. Курсор буде в рядку, де допущено помилку, або безпосередньо показуватиме на позицію з помилкою. У верхньому рядку екрана буде повідомлення червоного кольору про зміст помилки, що суттєво полегшує її виправлення. Середовище перебуватиме в режимі редагування, і помилку легко можна виправити. Програма найчастіше фіксує такі помилки початківців (у дужках наведено текст повідомлення):
а) пропущено крапку з комою (Error 85: ";" expected);
б) немає дужок (Error 89: ")" expected або Error 5: Syntax);
в) не описана змінна (Error 3: Unknown identifier);
г) повторне використання імен (Error 4: Dublicate identifier);
д) неузгодження типів (Error 26: Type mismatch);
е) потрібна кома (Error 87: expected) тощо.
Помилку виправляють. Удруге виконують програму (натисканням на Ctrl+F9). Виправляють наступну помилку та ін.
5. Якщо синтаксичних помилок немає, програма буде виконана. Результати (якщо ви про них подбали) можна побачити у вікні результатів, для чого натискають на Alt+F5 або використовують команди меню Debug, Screen Server. Натиснувши після перегляду результатів на будь-яку клавішу, переходять у режим редагування програми.
6. Щоб для заданого pas-файлу створити exe-файл, активізують пункт Compile. Вибирають Destination. Натисканням на клавішу вводу вибирають режим Disk. Натискають на Alt+F9, і в поточний каталог на диску буде записано exe-файл, який можна виконувати поза середовищем.
7. Щоб зберегти текст програми у файлі з розширенням .pas, знову активізують пункт File і підпункт Save As..., якщо файлу дають нове ім'я, або підпункт Save — для зберігання файлу зі старим іменем. Щоб цю операцію виконати швидко, достатньо натиснути на клавішу F2.
8. Для закінчення сеансу роботи і виходу із середовища потрібно ввійти в головне меню (F10), у підпункт File (Alt+F) і вибрати команду Exit (натискають на літеру х). Швидкий вихід забезпечує комбінація клавіш Alt+x.
9. Для відкривання файлу з текстом програми, що є на диску, входять у головне меню (F10), вибирають пункт File і команду Open. Щоб цю дію зробити швидко, достатньо натиснути на клавішу F3. У вікні, що з'явиться на екрані, набирають назву файлу і натискають на клавішу вводу. Однак ліпше зробити так: за допомогою клавіші Tab перейти в нижнє вікно, вибрати з меню імен файлів потрібний файл і натиснути на клавішу вводу. Текст програми буде занесено у вікно редагування.
10. Вікон з програмами може бути декілька. Переходити від одної програми до іншої можна за допомогою клавіші F6 або Alt+О (нуль). Щоб розкрити на весь екран чи згорнути вікно, користуються клавішею F5. Зручно розташувати вікна на екрані можна засобами пункту Window. Щоб закрити вікно, натискають на Alt+F3 або клацають мишею на значку прямокутника у верхньому лівому куті рамки вікна.
11. Якщо унаслідок неправильних дій користувача вікно стало неактивним (зникла подвійна рамка навколо вікна), то натисніть на клавішу Esc. Якщо це не допоможе, повідомте вчителя.
12. Якщо потрібна додаткова інформація, натискають на клавішу F1 і читають довідку про середовище і синтаксичні конструкції мови.
Основні помилки компіляції середовища Turbo Pascal 7.0
Середовище Турбо Паскаль подає вичерпну інформацію про характер і місце виявленої компілятором помилки. При виявленні помилки середовище автоматично завантажує у вікно редактора вихідний файл і поміщає курсор біля того місця, де у вихідному тексті виявлена помилка. При цьому у ввнизу вікна редактора з'являється діагностичне повідомлення. Після натискання на будь-яку клавішу (крім F1) верхній рядок відновлює свій первісний вигляд, і середовище переходить до режиму редагування. Якщо після появи повідомлення про помилку натиснути F1, на екрані з'явиться вікно довідкової служби з детальною інформацією про помилку і рекомендаціями з її усунення. Деякі помилки у вихідному тексті виявляються не відразу, а в ході контекстного розбору. Наприклад, невідповідність типів в операторі присвоювання не може бути виявлена доти, поки не буде повністю обчислений вираз в правій частині цього оператора. У таких випадках шукайте помилку ліворуч від курсору або в попередньому рядку тексту.
Нижче наведено повідомлення про деякі помилки, з якими найчастіше зустрічається програміст-початківець, а також можливі пояснення причин, що призвели до виникнення помилкової ситуації.
1 Out of memory (Вихід за границі пам'яті).
Компілятору не вистачає пам'яті. Якщо Ви використовуєте інтегроване середовище TURBO.EXE, те спробуйте застосувати компілятор ТРС.ЕХЕ - він займає менше пам'яті.
2 Identifier expected (Очікується ідентифікатор).
У цьому місці повинний знаходитися ідентифікатор.
3 Unknown identifier (Невідомий ідентифікатор).
Цей ідентифікатор не був описаний.
4 Duplicate identifier (Подвійний ідентифікатор).
Спроба двічі описати той самий ідентифікатор.
5 Syntax error (Синтаксична помилка).
У вихідному тексті знайдений неприпустимий символ.
6 Error in real constant (Помилка в дійсній константі).
7 Error in integer constant (Помилка в цілій константі).
8 String constant exceeds line (Рядкова константа не помістилась в рядку).
Ймовірно, Ви забули поставити апостроф наприкінці рядкової константи.
10 Unexpected End of file (Несподіваний кінець файлу).
Ймовірно, у програмі пропущене одне з службових слів End.
11 Line too long (Занадто довгий рядок).
Максимальна довжина рядка, оброблюваної компілятором, дорівнює 127 символів.
12 Type identifier expected (Тут потрібний ідентифікатор типу).
Не зазначений ідентифікатор типу.
13 Too many open files (Забагато відкритих файлів).
Поява цієї помилки означає, що конфігураційний файл CONFIG.SYS операційної системи не включає параметр FILES-xx чи цей параметр указує занадто мало файлів.
14 Invalid file name (Неправильне ім'я файлу).
Ім'я файлу невірно або зазначений неіснуючий шлях.
15 File not found (Файл не знайдений).
20 Variable identifier expected (Відсутній ідентифікатор змінної).
21 Error in type (Помилка в оголошенні типу).
Оголошення типу не може починатися з цього символу.
23 Set base type out of range (Базовий тип множини порушує границі).
24 File components may not be files (Компонентами файлу не можуть бути файли).
25 Invalid string length (Невірна довжина рядка).
Довжина рядка повинна знаходитися в діапазоні під 1 до 255.
26 Type mismatch (Невідповідність типів).
Це повідомлення може бути викликане такими причинами:
- несумісні типи змінної та виразу в операторі присвоювання;
- несумісні типи фактичного і формального параметрів у звертанні до підпрограми;
- тип виразу не сполучимий з типом індексу прп індексуванні масиву;
- несумісні типи операндів у ви рач і.
27 Invalid subrange basetype (Неправильний базовий тип для типу-діапазону).
Припустимими базовими типами є всі порядкові типи.
28 Lower bound greater than upper bound {Нижня границя більша від верхньої).
29 Ordinal type expected (Потрібний порядковий тип).
30 Integer constant expected (Потрібна ціла константа).
31 Constant expected (Потрібна константа).
32 Integer or real constant expected (Потрібна ціла чи дійсна константа).
33 Type identifier expected (Потрібний ідентифікатор типу).
34 Invalid function result type (Неправильний тип результату функції).
Правильними типами результату функції є прості і рядкові типи.
35 Label identifier expected (Потрібний ідентифікатор мітки).
Мітка не позначена за допомогою ідентифікатора, описаного в програмі.
36 BEGIN expected (Потрібний Begin).
37 END expected (Потрібний End).
38 Integer exression expected (Потрібний вираз типу Integer).
39 Ordinal exression expected (Потрібний вираз порядкового типу).
40 Boolean exression expected (Потрібний вираз типу Boolean).
41 Operand types Do not match operator (Типи операндів не відповідають операціям).
Дана операція не може бути застосована до зазначених операндів, наприклад, 'А1 diV 1В1.
42 Error in exression (Помилка у виразі).
Можливо, ви забули вказати операцію між двома операндами.
43 Illegal assigment (Невірне присвоювання).
Файлам і нетипізованим константам не можна присвоювати значення. Ідентифікатору функції можна присвоїти значення тільки усередині розділу операторів даної функції.
44 Field identifier expected (Потрібний ідентифікатор поля).
Спроба використати запис цілком у тому місці, де потрібно посилання на поле запису.
50 DO expected (Потрібний оператор Do).
54 OF expected (Потрібно Of).
61 Invalid type cast (Невірне перетворення типу).
Можливі причини повідомлення:
- спроба розмістити в пам'яті, зайнятій деякою змінною, значення виразу іншого типу у випадку, коли розмір розташовуваного значення не дорівнює розміру змінної;
- спроба здійснити перетворення типу виразу, коли дозволяється тільки посилання на змінну, процедуру чи функцію.
62 Division by zero (Ділення на нуль).
Попередня операція намагається виконати ділення на нуль.
63 Invalid file type (Неправильний файловий тип).
Даний файловий тип не обслуговується процедурою обробки файлів. Наприклад, процедура Readl П використовується для типізованого файлу або процедура Seek - для текстового файлу.
64 Cannot Read or Write variables of this type (Немає можливості читати чи виводити змінні даного типу).
Процедури Read (Readlп) і Write (Write!п) працюють тільки з даними простих типів.
66 String variables expected (Потрібна рядкова змінна).
67 String expression expected (Потрібний вираз рядкового типу).
Попередній вираз повинний мати рядковий тип.
74 Constant and case types Do not match (Типи констант і тип виразу оператора Case не відповідають один одному).
75 Record variable expected (Потрібна змінна типу запис).
76 Constant out of range (Константа порушує границі).
Можливі причини повідомлення:
- індекс масиву виходить за його границі;
-змінній присвоюється значення, що виходить за границі, припустимі для типу цієї змінної.
79 Integer or real expression expected (Потрібний вираз цілого чи дійсного типу).
Попередній вираз повинний мати тип Real чи Integer.
85 “;” expected (Потрібно вказати ";")
86 ":" expected (Потрібно вказати ":").
87 “,” expected (Потрібно вказати ",").
88 "(" expected (Потрібно вказати "(").
89 ")" expected (Потрібно вказані ")").
90 "=" expected (Потрібновказати “=”).
91 “:=” expected (Потрібно вказати ":=").
92 "{" or "(." expected (Потрібно вказати “[" чи "(").
93 "]” or ".)" expected (Потрібно вказати "]” чи ".)")..
94 “.” expected (Потрібно вказати ".").
95 “..” expected (Потрібно вказати "..")
97 Invalid FOR control variable (Неправильний параметр циклу оператора For).
Параметр циклу оператора For повинний бути змінною порядкового типу.
98 Integer variable expected (Потрібна змінна цілого типу).
Попередня змінна повинна мати цілий тип.
100 String length mismatch (Невідповідність довжини рядка).
Довжина рядкової константи не відповідає кількості елементів символьного масиву.
101 Invalid ordering of fields (Невірний порядок полів).
Поля в константі типу запис повинні записуватися в порядку їхнього опису.
102 String constant expected (Потрібна константа рядкового типу).
103 Integer or real variable expected (Потрібна змінна типу Integer чи Real).
104 Ordinal variable expected (Потрібна змінна порядкового типу). 106 Character expression expected (Попередній вираз повинний мати символьний тип).
108 Overflow in arihmetic operator (Переповнення при виконанні арифметичного оператора).
Результат попередньої арифметичної операції не лежить у діапазоні -2146483648..+2147483647. Використовуйте дійсні типи замість цілочисельних.
109 No enclosing FOR, WHILE or REPEAT statement (Немає операторів, що закінчують оператори For, Whi 1 е чи Repeat).
112 CASE constant out of range (Константа Case порушує припустимі границі).
Цілочисельні константи оператора Case повинні знаходитися в діапазоні від -32768 до 32767.
113 Error in statement (Помилка в операторі).
Даний символ не може бути першим символом в операторі. 121 Invalid qualifiler (Невірний квалификатор). Можливі причини повідомлення:
- спроба індексувати змінну, котра не є масивом;
- спроба вказати поле в змінній, котра не є записом.
124 Statement part too large (Занадто великий розділ операторів).
Турбо Паскаль обмежує розмір розділу операторів до величини приблизно 24 Кбайта. Помістіть частину операторів в одну чи кілька процедур.
133 Cannot evaluate this expression (He можна обчислити даний вираз).
У виразі використовуються засоби, що не підтримуються.
134 Expression incorrectly terminated (Некоректне завершення виразу).
Контекстуально в даному місці програми повинний бути кінець виразу або оператора.
137 Structure variable are not allowed here (Тут неможна використовувати змінну структурованого типу).
Робиться спроба виконати над змінною структурованого типу недопустиму операцію (наприклад, перемножити два записи). 140 Invalid floating-point operation (Неприпустима операція з з плаваючою комою).
При виконанні операції з плаваючою комою відбулося переповнення або ділення нй нуль.
Структура Паскаль-програми
Мову програмування можна собі уявити як деякий засіб спілкування з комп'ютером. Тому, як і у будь-якій іншій мові спілкування, тут є певні домовленості у поданні своїх висловів: своя абетка та синтаксичні правила.
Синтаксично Паскаль-програма складається з окремих «речень». Такими «реченнями» можуть бути деякі описи для самої програми або команди, з яких складається даний алгоритм.
Кожне «речення» Паскаль-програми повинно закінчуватися символом «;».
Послідовність представлення алгоритму у вигляді Паскаль-програми має певну закономірність.
Визначимо її так:
program <ім'я програми>;
uses <розділ опису бібліотек (модулів), що підключаються>;
label <розділ опису міток>;
const <розділ опису констант>;
type <розділ опису типів>;
var <розділ опису змінних>;
procedure або function <розділ опису процедур і функцій>; <розділ операторів>
Службові слова Паскаль-програми (в даному випадку) виділені жирним шрифтом. Надалі службовими словами вважатимемо ключові слова, з яких складаються оператори Паскаля, і назви його стандартних процедур та функцій. Окрім того, вся програма розбивається на певні розділи. Бажано зберігати таку послідовність використання розділів, хоча, набуваючи досвіду, ви побачите, що деякі з них можна міняти місцями.
Однак треба враховувати, що розділ опису модулів повинен обов'язково іти першим, а розділом операторів завершується кожна програма.
Розділ типів обов'язково повинен передувати розділу змінних, а розділ міток та розділ констант бажано розміщувати перед розділом типів.
Першим рядком програми зі службовим словом program можна знехтувати.
Умовно цю структуру можна поділити на дві частини - описову частину та виконувану.
Описова частина (program, uses, label, const, type, var) містить інформацію про можливості, які можна використовувати у програмі, які будуть константи, мітки, якими змінними користуватися.
Саме за змістом цієї описової частини всім вказаним змінним відводиться місце у пам'яті комп'ютера залежно від їх типів і
послідовності, в якій вони зазначені в програмі.
Виконувана частина містить опис процедур, функцій та основний блок програми, який ще називається тілом програми і розташований між службовими словами begin та end.
Завершується Паскаль-програма завжди символом « . «.
Приклад Програму, за допомогою якої можна обчислити площу круга, вказавши будь-який радіус.
program circle;
var r, s : real;
begin
write ('Задайте радіус круга: ');
readln (r);
s:=pi*r*r ;
writeln ('Площа круга з радіусом ‘,r,' дорівнює ‘,s)
end.
Зверніть увагу на принцип вкладеності, за допомогою якого досягається максимальна «читабельність» вашої програми.
Вміст розділу операторів зміщений трохи вправо відносно службових слів begin та end.. Аналогічно записана і описова частина Паскаль-програми. Кожне «речення» програми записується з нового рядка. Оператори, які є вмістом інших, зміщуються відносно них так само вправо. Це дозволяє краще розібратися у складних програмах, знайти в них помилки не тільки самому автору, але й сторонньому користувачу.
3. Практичне завдання.
За наведеним сценарієм виконайте завдання по створенню та налагодженню програми в середовищі Free Pascal.
4. Питання до уроку.
5. Домашнє завдання.
Вивчити теоретичний матеріал