ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 28.06.2020
Просмотров: 1676
Скачиваний: 3
СОДЕРЖАНИЕ
Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
Тема 16: Динамічна пам'ять. Адреси і покажчики
Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
Тема 18: Процедури та функції для роботи з динамічною пам’яттю
Тема 19: Символьний тип даних. Упаковані масиви
Тема 20: Процедури та функції для обробки рядків
Тема 21: Структурований тип даних - безліч
Тема 22: Структурований тип даних – записи
Тема 23: Опис файлових змінних. Обробка типізованих файлів
Тема 24: Послідовний та прямий доступ до файлів
Тема 25: Обробка не типізованих файлів
Тема 26: Робота з текстовими файлами
Тема 28: Поняття та робота з процедурами та функціями
Тема 29: Використання модуля CRT. Програмування клавіатури
Тема 30: Використання модуля CRT. Текстове виведення на екран. Програмування звукового генератора
Тема 31: Графічні можливості TP 7.0. Використання бібліотеки Graph
Тема 32: Бібліотечні модулі користувача
Тема 33: Основні принципи ООП. Створення об’єктів. Використання об’єктів
Основні алгоритми обробки масивів
Міністерство освіти і науки, молоді та спорту України
Запорізький електротехнічний коледж
Запорізького національного технічного університету
ЗАТВЕРДЖЕНО
Протокол засідання ПЦК “Розробка
програмного забезпечення”
від _______________2011 № _____
Голова ПЦК _________ Н.В. Бабенко
ОСНОВИ ПРОГРАМУВАННЯ ТА АЛГОРИТМІЧНІ МОВИ
Конспект лекцій для спеціальності
«Розробка програмного забезпечення»
Викладач І.В. Саєнко
2011
Конспект лекцій з предмета «Основи програмування та алгоритмічні мови» для студентів денного відділення спеціальності «Розробка програмного забезпечення» розглянуто на засіданні методичної ради коледжу та рекомендовано для використання у навчальному процесі.
Секретар методичної ради В.В Кузьменкова
Конспект лекцій з предмета «Основи програмування та алгоритмічні мови» для студентів денного відділення спеціальності «Розробка програмного забезпечення» оформлено згідно з вимогами стандартів коледжу.
Фахівець зі стандартизації В.О. Білий
Передмова
Конспект лекцій з предмета “Основи програмування та алгоритмічні мови” для студентів денного відділення спеціальності “Розробка програмного забезпечення”. Вищеназваний предмет відноситься до предметів професійно-практичної підготовки навчального плану спеціальності, створеного на основі галузевого стандарту вищої освіти з підготовки молодших спеціалістів за спеціальністю 5.05010301 “Розробка програмного забезпечення”, затвердженого в 2009 р.
Для успішного оволодіння знанням з предмету “Основи програмування та алгоритмічні мови” необхідно мати знання з предметів “Інформатика”, “Математика”.
Знання, які одержать студенти після вивчення предмета, можуть застосовуватися при вивчення предметів “Технологія алгоритмів і структури даних”,“Об’єктно-орієнтоване програмування” а також в курсовому та дипломному проектуванні.
Компетенції, якими повинен оволодіти студент:
-
здатність розробляти алгоритми та структури даних для програмних продуктів;
-
володіння основами конструювання програмного забезпечення;
-
здатність моделювати різні аспекти системи, для якої створюється програмне забеспечення.
Зміст
Вступ 7
Тема 1: Правила техніки безпеки при роботі з комп’ютером 8
Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази 11
Тема 3: Загальна структура і розділи Pascal-програми 14
Тема 4: Введення і виведення у Pascal-і. Форматоване виведення 19
Тема 5: Прості (скалярні) типи данних 23
Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші 30
Тема 7: Меню опції 32
Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури 38
Тема 9: Умовний оператор. Вкладений умовний оператор 45
Тема 10: Оператор вибору 52
Тема 11: Оператори циклу. Оператор циклу з параметром 54
Тема 12: Оператор циклу з перед- і з постумовою 57
Тема 13: Складні типи. Масиви 61
Тема 14: Багатомірні масиви 68
Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування 71
Тема 16: Динамічна пам'ять. Адреси і покажчики 75
Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті 77
Тема 18: Процедури та функції для роботи з динамічною пам’яттю 83
Тема 19: Символьний тип даних. Упаковані масиви 86
Тема 20: Процедури та функції для обробки рядків 92
Тема 21: Структурований тип даних - безліч 96
Тема 22: Структурований тип даних – записи 100
Тема 23: Опис файлових змінних. Обробка типізованих файлів 104
Тема 24: Послідовний та прямий доступ до файлів 109
Тема 25: Обробка не типізованих файлів 112
Тема 26: Робота з текстовими файлами 114
Тема 27: Типізовані константи 118
Тема 28: Поняття та робота з процедурами та функціями 121
Тема 29: Використання модуля CRT. Програмування клавіатури 126
Тема 30: Використання модуля CRT. Текстове виведення на екран. Програмування звукового генератора 128
Тема 31: Графічні можливості TP 7.0. Використання бібліотеки Graph 133
Тема 32: Бібліотечні модулі користувача 146
Тема 33: Основні принципи ООП. Створення об’єктів. Використання об’єктів 150
Список літератури 152
Додаток А 153
Основні алгоритми обробки масивів 153
Додаток Б 170
Питання перевірки знань з теорії 170
Додаток Д 177
Коди сканування клавіатури 177
Вступ
Серед безлічі мов програмування виділяються десятки мов, що знайшли широке вживання і поширення в ті або інші відрізки комп'ютерної історії. До цієї групи широко поширених мов входить мова програмування Pascal.
Прийнято вважати, що вона хороша для вчення програмуванню. І дійсно, мова Паскаль була створена в кінці 60-х років Ніклаусом Віртом як спеціальна мова для вчення студентів. Проте незабаром із-за реалізації в ній прогресивних ідей того часу набула поширення серед програмістів. Був час, коли Паскаль широко використовувався для написання прикладних програм і навіть як мова системного програмування. Програмне забезпечення багатьох міні- і мікрокомп'ютерів було написано на Pascal.
Після 70-го року мова Pascal розвивалася і удосконалювалася, включала нові можливості. Вироблялися нові транслятори і середовища розробки для Pascal.
Транслятори з цієї мови були на найбільш поширених типах ЕОМ у всьому світі. Наявність спеціальних методик створення трансляторів з Паскаля спростила їх розробку і сприяла широкому поширенню мови. Транслятори могли оптимізувати код, і це дозволяло створювати ефективні програми. Це якраз і послужило однією з причин використання Паскаля як мови системного програмування.
У 80-х роках комп'ютерна наука почала входити в маси, з'явився предмет «Інформатика». Оскільки в цей час Pascal був особливо модним і зарекомендував себе як учбова мова, то він знайшов широке поширення в школах і вузах. У результаті було написано величезну кількість навчальних посібників по цій мові.
Серед інших достоїнств мови програмування Pascal можна відзначити наступне: простота мови дозволяє швидко її освоїти і створювати алгоритмічно складні програми. Розвинені засоби представлення структур даних забезпечують зручність роботи як з числовою, так з символьною і бітовою інформацією. У мові Паскаль реалізовані ідеї структурного програмування, що робить програму наочною і дає хороші можливості для розробки і відладки.
Щоб бути простішим, Pascal має деякі обмеження. Так, Паскаль добре «вчить» розуміти, як зберігаються дані в пам'яті комп'ютера, але має ряд обмежень при роботі з ними (чого позбавлені більшість «справжніх» мов). Оскільки свого часу Паскаль досить активно використовувався для вирішення практичних завдань, на його основі сформувалася мова Object Pascal (яка зараз використовується в Delphi).
Тема 1: Правила техніки безпеки при роботі з комп’ютером
Людина, яка експлуатує засоби обчислювальної техніки і периферійне устаткування може піддаватися небезпечним і шкідливим факторам, які за природою дії підрозділяються на наступні групи:
-
поразка електричним струмом;
-
механічні пошкодження;
-
електромагнітне випромінювання;
-
інфрачервоне випромінювання;
-
небезпека пожежі.
Для зниження або запобігання впливу небезпечних і шкідливих чинників необхідно дотримувати санітарні правила і норми.
Вимоги електробезпеки.
При користуванні засобами обчислювальної техніки і периферійним устаткуванням необхідно уважно і обережно поводитися з електропроводкою, приладами і апаратами і завжди пам'ятати, що зневага правилами безпеки загрожує і здоров'ю, і життю людини.
Щоб уникнути поразки електричним струмом необхідно твердо знати і виконувати наступні правила безпечного користування електроенергією:
1. Необхідно постійно стежити на своєму робочому місці за справним станом електропроводки, вимикачів, штепсельних розеток, за допомогою яких устаткування включається в мережу, і заземлення. При виявленні несправності негайно знеструмити електроустаткування, оповістити вчителя. Продовження роботи можливе лише після усунення несправності.
2. Щоб уникнути пошкодження ізоляції дротів і виникнення коротких замикань не дозволяється:
а) вішати що-небудь на дроти;
б) смикати за дроти;
в) висмикувати штепсельну вилку з розетки за шнур, зусилля має бути докладене до корпусу вилки.
3. Для виключення поразки електричним струмом забороняється:
а) часто включати і вимикати комп'ютер без необхідності;
б) торкатися до екрану і до тильної сторони блоків комп'ютера;
в) працювати на засобах обчислювальної техніки і периферійному устаткуванні мокрими руками;
г) працювати на засобах обчислювальної техніки і периферійному устаткуванні, що мають порушення цілісності корпусу, порушення ізоляції дротів, несправну індикацію включення живлення, з ознаками електричної напруги на корпусі;
д) класти на засоби обчислювальної техніки і периферійному устаткуванні сторонні предмети.
є) Забороняється під напругою очищати від пилу і забруднення електроооборудовання.
4. Ремонт електроапаратури проводиться лише фахівцями з дотриманням необхідних технічних вимог.
5. При виявленні дроту, що обірвався, необхідно негайно повідомити про це вчителеві, прийняти заходи по виключенню контакту з ним людей. Дотик до дроту небезпечно для життя.
6. Порятунок пострадавшего при поразці електричним струмом головним чином залежить від прудкості звільнення його від дії струмом.
У всіх випадках поразки людини електричним струмом негайно викликають лікаря. До прибуття лікаря потрібно, не втрачаючи часу, приступити до надання першої допомоги пострадавшему. Необхідно негайно почати робити штучне дихання, найбільш ефективним є метод «рот в рот» або «рот в ніс», а також зовнішній масаж серця. Штучне дихання ураженому електричним струмом робиться аж до прибуття лікаря.
Вимоги по забезпеченню пожежної безпеки
На робочому місці забороняється мати вогненебезпечні речовини. В приміщеннях забороняється:
а) запалювати вогонь;
б) закривати вентиляційні отвори в електроапаратурі
Приміщення з електроустаткуванням мають бути оснащені вогнегасниками типа ОУ-2 або ОУБ-3.
Для студентів оптимальний час роботи з комп'ютером складає на першому курсі одну годину в день, на старших -дві і три години відповідно, за умови, що робота з відеотерміналом займає не більше 50% всього часу роботи з комп'ютером. Особливо хотілося б підкреслити негативний вплив на здоров'я комп'ютерних ігор з нав'язаним ритмом (тобто ритмом, який гравці не можуть встановити по своєму бажанню). Їх тривалість не повинна перевищувати 10 хвилин для дітей 7-10 років і 15 хвилин для більш старших.
Гігієністи настійно рекомендують для запобігання стомленню і профілактиці розвитку патологічних відхилень в перервах між заняттями з монітором і після їх закінчення проводити спеціальну зарядку. Існує декілька комплексів вправ для такої зарядки: для очей, для поліпшення мозкового кровообігу, для зняття стомлення з м'язів плечового поясу, рук, тулуба і ніг. Оскільки всі вправи направлені на підвищення насиченості киснем крові і тканин, слід проводити гімнастику в провітреному приміщенні або при відкритих кватирках. Обов'язково робити вправи для очей через кожних 25 хвилин занять, влаштовувати 15-хвилинні перерви з фізкультурними вправами через кожних 45 хвилин роботи.
Комплекс вправ для очей
Під час роботи з відеомонітором велика частина навантаження доводиться на м'язи, що керують рухом очного яблука і зміною форми кришталика. На зняття статичної напруги з цих м'язів, поліпшення кровообігу в них і направлені пропоновані вправи. Їх необхідно проводити відвернувшись від екрану (краще всього при цьому дивитися у вікно), тримаючи голову прямо. Слід максимально напружувати всі м'язи, дихання має бути ритмічним. Кожну вправу необхідно повторювати чотири-п'ять разів.
1. На рахунок 1-4 зажмурити очі, сильно напружуючи очні м'язи, потім розкрити їх і, розслабивши м'язи, поглянути удалину на рахунок 1-6.
2. На рахунок 1-4 поглянути на перенісся і затримати погляд. Потім перевести погляд удалину на рахунок 1-6.
3. На рахунок 1-4, не повертаючи голови, поглянути направо, потім перевести погляд прямо удалину на рахунок 1-6. Те ж саме повторити з фіксацією погляду вгору, вліво і вниз.
4. Перевести погляд швидко по діагоналі направо вгору - наліво вниз, потім поглянути удалину на рахунок 1-6, потім повторити те ж саме в напрямі наліво вгору - направо вниз.
Комплекс вправ для поліпшення мозкового кровообігу
Тривала сидяча робота з фіксованим (особливо з нахилом в один бік) положенням голови приводить до погіршення мозкового кровообігу.
Вправи з нахилами і поворотами голови підвищують еластичність кровоносних судин, що живлять мозок, викликають їх розширення. Все це разом з ритмічним диханням через ніс збільшує приплив кисню до клітин мозку, покращує розумову працездатність. Виконувати такі вправи краще стоячи, повторюючи кожну чотири-п'ять разів.
1. Вихідне положення - руки уздовж тулуба. На рахунок 1- руки до плечей, стиснути кисті в кулаці, голову нахилити назад; 2 - лікті вгору, голову нахилити вперед; 3 - вихідне положення. Темп середній.
2. Вихідне положення - руки в сторони. На рахунок 1-3 ривки зігнутими в ліктях руками, правою попереду, лівою за спиною; 4 - повернутися у вихідне положення; 5 - 8 - те ж в інший бік. Темп швидкий.
3. Вихідне положення - руки уздовж тулуба, голова прямо. На рахунок 1 - голову нахилити управо; 2 - вихідне положення; 3 - голову нахилити вліво; 4 - вихідне положення; 5 - голову обернути управо; 6 - вихідне положення; 7 - голову обернути вліво; 8 - вихідне положення. Темп повільний.
Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
Мова програмування Pascal розроблена у 1968-71 р. Ніклаусом Виртом у Цюрихском Інституті інформатики (Швейцарія) і названа на честь французького винахідника першої рахункової машини Блеза Паскаля. Призначена для рішення найрізноманітніших задач: обчислювальних, економічних, інформаційних і т.д.
Завдяки своїй простоті, логічності й ефективності, Pascal одержав широке поширення у світі.
Елементами мови є символи, слова й оператори. З послідовності символів утворюються слова, а з комбінації слів – оператори.
Мова має обмежений набір символів і складається з:
-
латиниці: від Aa до Zz і пробілу (у коментарях і символьних константах допускаються букви кирилиці);
-
арабських цифр: від 0 до 9;
-
шістнадцятирічних цифр (арабські цифри від 0 до 9 і латинські букви від Aa до Ff);
-
спеціальних символів:
+ - * / = < > . , ' [ ] ( ) { } # $ ; : ^ @
-
спарених символів, отриманих комбінаціями спеціальних:
<> <= >= := .. (* *) (. .)
Спарені символи розривати пробілом не можна.
Слова мають визначений сенс і в тексті програми розділяються пробілами чи іншими спеціальними символами.
Приклад слів у програмі:
Program, Input, Output, Var, Begin, Integer, WriteLn, End.
Якщо між словами знаходиться один з наступних роздільників: “+”, “-”, “/”, “*”, “=”, “:”, “;”, “(”, “)”, то пробіл можна ставити до і після роздільника, але можна його і не ставити. Де допускається один пробіл, можна ставити будь-яку кількість пробілів (зайві пробіли ігноруються компілятором). Наприклад, рядок
var a, b, c : integer ;
можна записати так:
var a,b,c:integer;
У Pascal-і маються слова, зміст яких строго фіксований. Називаються вони службовими чи зарезервованими.
Наприклад, Program, Const, Do, Begin, End, Var і інші. Службові слова є складовою частиною мови і їх неможна використовувати для інших цілей, наприклад, в якості імен змінних, констант і т.д.
Крім службових слів у Pascal використовуються два види ідентифікаторів (імен): стандартні і ти, що задає користувач.
Стандартні ідентифікатори закладені в мові для позначення вбудованих об'єктів. Наприклад, Read, Write, Abs, Char, Boolean і т.д.
Ідентифікатори користувача визначаються користувачем і повинні відрізняться від стандартних. Правила їхнього написання наступні:
-
ідентифікатор повинний починатися з букви чи знака подчерку і може містити букви, цифри і знак подчерку;
-
довжина ідентифікатора до 63 символів;
-
ідентифікатор можна писати як рядковими, так і прописними буквами, чи використовувати ті й інші одночасно;
-
пробіл в ідентифікаторі неприпустимий.
Приклади написання ідентифікаторів.
Вірно: Невірно:
My_Program My Program -пробіл;
Name_2 2_Name -починається з цифри;
Primer5 End -службове слово;
Dlina (Dlina) -круглі дужки;
Kmh Km/h -похила риса;
Uslovie4 Uslovie-4 -тире.
Для пояснень у програмі пишуть коментарі, що робить її більш зрозумілою.
Коментар – це послідовність будь-яких символів, що маються на клавіатурі, укладена у фігурні дужки “{” і “}” чи в роздільники “(*” і ”*)”, що є його ознакою.
Коментар ігнорується компілятором і тому його можна вставляти в будь-яке місце програми, де використовується пробіл. Наприклад, даний запис
var a, {перший елемент добутку} b, {другий елемент добутку}
res : {результат} integer;
рівнозначна запису
var
a, {перший елемент добутку}
b, {другий елемент добутку}
res : integer; {результат}
Довгий коментар пишуть у кілька рядків. При цьому ознаку коментарю дають або в кожному рядку, або вказують його перед першою і наприкінці останнього рядка. Наприклад:
{Короткий коментар пишуть в одному рядку}
{Довгий коментар потрібно
писати в кілька рядків}
Слова в Pascal-програмі утворять рядок, довжина якого не повинна перевищувати 126 символів. Приклад рядків програми:
var
name : string;
begin
write(‘Як вас звуть?’);
readln(name);
writeln(‘Здрастуйте, шановний ’,name,’ !’);
end.
Рядок, що не вміщується на екрані, краще перенести, наприклад:
wrineln(‘Здрастуйте, шановний ‘,
name,’ !’);
При переносі потрібно стежити, щоб знаки не повторювалися.
У Pascal-програмі використовують десяткові і цілі шістнадцятирічні числа. Десяткові числа можуть бути представлені з фіксованою і десятковою плаваючою крапкою. Технічне позначення Е потрібно читати як “десять у ступені”. Наприклад:
7Е-2 “7 помножене на 10 у ступені -2”
тобто 7Е-2=7*10-2;
12.25Е6 “12.25 помножене на 10 у ступені +6”
тобто 12.25Е6=12.25*106
Запис шістнадцятирічного числа повинна починатся зі знаку долара ($). Наприклад: $7А.
Питання для контролю:
-
Хто створив мову Pascal?
-
Які елементи мови Pascal ви знаєте?
-
Назвіть роздільники слів. Як у словах використовується пробіл?
-
Чи можна ставити пробіл між спареними символами?
-
Що таке службові слова?
-
Які ідентифікатори бувають у Pascal-і? Назвіть правила написання ідентифікаторів.
-
Що таке коментар і для чого він потрібний?
-
Де в програмі можна писати коментар?
-
Яка довжина рядка в Pascal-програмі?
-
Чи можна переносити рядок у Pascal-програмі? Якщо так, то як це робиться?
-
Які числа використовують у Pascal-программе?
-
Як зображуються числа з десятковою крапкою і числа шістнадцятирічні?
Тема 3: Загальна структура і розділи Pascal-програми
Синтаксично програма представляється з необов'язкового заголовка і глобального блоку, що складається з двох частин: описової і виконавчої. Глобальний блок може містити локальні блоки – це процедури і функції. Об'єкти програми (типи, змінні, константи і т.д.) відповідно називаються глобальними і локальними. Область дії об'єктів – блок, де вони описані, і усі вкладені в нього блоки.
Загальний вид структури Pascal-програми:
рrogram ім'я програми (input, output);
Розділ описів:
{&…}; {директиви компілятора}
uses…; {підключення бібліотечних модулів}
label…; {розділ оголошення міток}
const…; {розділ опису констант}
type…; {розділ опису типів}
var…; {розділ опису змінних}
Розділ процедур і функцій:
procedure (function) {Ім'я процедури чи функції}
label…; {розділ оголошення міток}
const…; {розділ опису констант}
type…; {розділ опису типів}
var…; {розділ опису змінних}
begin
Оператори тіла процедури чи функції;
end;
Розділ операторів:
begin
Оператори програми;
еnd.
Заголовок містить службове слово Program, ім'я програми й у круглих дужках параметри Input і Output для зв'язку ПК зі стандартними зовнішніми пристроями. Пристроєм введення – Input – є клавіатура, а пристроєм виведення – Output – монітор. Наприкінці заголовка ставиться “;”. Перед заголовком можна писати коментар. Приклад заголовка:
{Знаходження суми перших n-членів рядка}
program My_progrSum (input, output);
Ім'я програми задає користувач. У Turbo Pascal-і заголовок можна опускати.
Після заголовкі слідує розділ описів, призначений для оголошення всіх існуючих в програмі даних і їхніх характеристик. Він може включати оголошення директив компілятора, розділи оголошень міток, описів констант, типів і змінних. Кожен опис закінчується “;”.
Усі дані, використовувані в розділі операторів, повинні попередньо бути описані (оголошені), інакше, при трансляції, у місці неописаного об'єкта буде вироблена помилка й обробка програми припиниться.
Будь-який з зазначених розділів, крім операторів основної програми, може бути відсутній (у простій програмі розділ описів взагалі може бути відсутній).
Послідовність розділів Label, Const, Type і Var може бути довільною.
Директиви компілятора – це інструкції, що задають той чи інший режим компіляції програми з метою одержання найбільш ефективного коду. Ознакою директиви є символ $, записаний без пробілу після першої фігурної дужки, за яким йде буква, що визначає режим компіляції. Знак “+” за буквою задає даний режим, а “-” – його скасовує. Наприклад: {$R-}. Якщо задають кілька директив, їх розділяють комами. Наприклад:
{$N+,K-,R+}
Розділ Uses підключає до тексту програми стандартні і користувальницькі бібліотечні модулі. Для підключення потрібно після Uses перелічити через кому імена модулів. Наприкінці списку ставиться “;”.
Наприклад:
uses Crt, Graph, My_Lib;
Розділ оголошення міток починається зі службового слова Label (мітка), за яким через кому слідують імена міток. Наприкінці ставиться “;”.Наприклад:
label {ключове слово}
ім'я_мітки_1, ім'я_мітки_2,…;
Мітку можна поставити перед будь-яким оператором, що дозволяє виконати перехід на цей оператор за допомогою оператора Goto з будь-якого місця програмного блоку. У розділі операторів ознакою мітки для компілятора є наявність після її імені двокрапки.
Якщо оголошена мітка не використовується, помилки не буде.
Розділ опису констант починається зі службового слова Const (Constant – постійна величина), за яким слідує ім'я константи, якії за допомогою символу “=” привласнюється постійне числове чи строкове значення:
const {ключове слово}
ім'я_константи = числове вираження;
В одному розділі можна описувати кілька констант. Кожен опис закінчується “;”, а слово Const для наочності програми варто виділяти в окремий рядок, наприклад:
const
a = 50; n1 = 0;
Якщо константа задана явно, тобто своїм значенням, то її описувати не потрібно. Наприклад:
ord(‘Z’) – ord(‘A’) + 1 {тут 1 – константа задана явно}
У ТР можна використовувати константні вираження, тобто вираження, що можуть бути обчислені компілятором фактично без виконання програми. Наприклад:
256 - 1;
(2,5+1)/(2,5-1);
‘Turbo’ + ‘’+’ Pascal’
chr(32)
Розділ опису типів починається зі службового слова Type, за яким слідують одне чи кілька визначень типів, розділених ";".Опис типів має загальний вид:
type
ім'я типу 1, ім'я типу 2,... = стандартне чи раніше описане ім'я типу;
. . .
Наприклад:
type
massiv = array[1...20] of integer;
name= string[10];
Розділ опису змінних починається зі службового слова Var (Variables - змінна), за яким слідує ім'я змінної і через двокрапку вказується тип. Наприкінці типу ставиться ";".
var
ім'я змінної : тип змінної;
В одному розділі можна описувати декілька змінних. Якщо ряд змінних мають один тип, їх можна об'єднати в список. У списку змінні розділять комами. Слово Var варто виділяти в окремий рядок, наприклад:
var
a,b,c : integer;
result: real;
Це робить текст програми більш зрозумілим.
Розділ процедур і функцій. У Paskal процедури і функції виконують роль підпрограм і мають ту ж структуру, що і програма, але замість ключового слова program повинне бути слово procedure чи function. Процедури і функції поділяються на стандартні та ті, що визначаються користувачем.
Стандартні процедури і функції заздалегідь створені, є частиною мови і можуть викликатися без попереднього опису. Зберігаються вони в бібліотеках Pascal.
Користувач може створювати свої додаткові процедури і функції, що обов'язково описуються в розділі процедур і функцій.
Розділ операторів. Опис операторів уявляє собою складений оператор begin (початок) ...end.(кінець), що закінчується крапкою та у якому розташована вся послідовність операторів програми, розділених ";":
begin
Оператор 1;
Оператор 2;
. . .
end.
Оператори програми також можуть бути включені в операторні дужки begin ... end для внесення ясності, де потрібно ставити ";", розглянемо список елементів, записаних натуральною мовою:
A, B, C, D.
Запис не зміниться, якщо елементи списку об'єднати в групу, уклавши її в круглі дужки:
(A, B, C, D).
Тепер представимо кілька подібних груп:
(A, B, C, D).
Е.
(ДО, L, M).
Об'єднаємо їх в одну загальну групу, дотримуючи правил натуральної мови:
((A, B, C, D), Е, (K, L, M)).
Аналогічні правила й у мові Pascal, тільки роль круглих дужок виконують операторні дужки begin і end, замість коми ставиться ";", а замість елементів - оператори.
Замінивши в приведеному записі круглі дужки відповідно на begin і end, коми на “;”, елементи на оператори, ми її представимо записаною мовою Pascal (для кращої наочності тексту програми кожен елемент запишемо в окремому рядку):
begin
begin
оператор А;
оператор ;
оператор ;
оператор ;
end;
Е;
begin
оператор ;
оператор ;
оператор ;
end
end.
Крапка наприкінці програми обов'язкова - вона є для компілятора ознакою кінця програми.
Як у природній мові після і перед круглими дужками кома не ставиться, так і в мові Pascal після Begin і перед End ";" не ставиться.
Питання для контролю.
-
З яких розділів складається Pascal -програма? Які розділи можуть бути відсутніми у програмі?
-
Яке призначення розділу описів?
-
Що містить заголовок Pascal-програми?
-
Що таке директиви компілятора? Ознака директиви.
-
Яке призначення розділу Uses?
-
Що таке мітка і як вона з'являється?
-
Як описується константа? В якому випадку константу не описують?
-
Що таке константне вираження?
-
Чи можна в одному розділі описувати кілька констант? Оголошувати кілька міток?
-
Яка послідовність розділів Label, Const, Type і Var?
-
Яке призначення в заголовку параметрів Input і Output?
-
Як оголошується змінна?
-
Опишіть структуру розділу опису типів.
-
Чи можна в одному розділі оголосити декілька змінних?
-
Опишіть структуру розділу процедур і функцій.
-
Опишіть структуру розділу операторів.
-
Де потрібно ставити ";" а де ні?
-
Яке призначення крапки наприкінці програми?
Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
Операції введення в Pascal-і виконують дві процедури: Read і ReadLn, що забезпечують введення з клавіатури даних.
Імена змінних, що вводяться у списку розділяються комами, а сам список заключають в круглі дужки. Наприклад,
read (x1,x2,...xn);
де Х1,Х2,...Хn - змінні, які послідовно приймають ті значення, що вводяться з клавіатури. Дані для змінних вводяться після запуску програми на виконання. При цьому, на екрані з'явиться курсор і процедура Read буде чекати введення значень. Значення, що вводяться, відображаються на екрані монітора.
Якщо мається кілька значень, то їх вводять по одному, натискаючи після кожного введеного значення Enter, або розділяючи кожне значення пробілом (але не комою!), а потім натискають Enter.
Розглянемо приклад введення трьох числових значень для змінних А=3, У=-5, З=7.
Процедура введення буде наступною:
read (a,b,c);
Усі три числові значення набираємо на клавіатурі, розділяючи їх пробілами:
3 -5 7 і натискаємо Enter,
чи
3 і натиснути Enter
-5 і натиснути Enter
7 і натиснути Enter
Процедура ReadLn відрізняється від процедури Read тим, що при зчитуванні значень усіх змінних однієі процедури ReadLn значення для наступної процедури ReadLn будуть зчитуватися з початку нового рядка.
Приклад введення числових даних:
Процедура: Дії, що виконуються:
ReadLn (a,b); 3 -5 Enter;
ReadLn (c); 7 Enter;
ReadLn (d); 8.34 Enter;
Read (e, f); -4.76 Enter;
Read (g); 3.35 Enter;
Read (h); -0.56 Enter;
У цьому прикладі значення можна вводити і по одному, кожне з нового рядка.
Операції виведення виконують так само дві процедури: Write і WriteLn. Вони здійснюють виведення числових даних, символів, рядків і булевих значень.
Процедура WriteLn аналогічна процедурі Write, але після її виконання курсор переміщаєтьсянав початок нового рядка. Формат запису:
write( x1, x2, ...xn,‘фіксований текст‘);
Тут - Х1,Х2 і т.д., результати виконання вираження і змінних; фіксований текст - це текст пояснень, що друкується точно таким, як він введений. Фіксований текст повинен заключатися в апострофи:
writeln (‘Сума чисел ‘, х1, х2 ‘та’ , х3, ‘дорівнює:’, Sum );
writeln ('Кінотеатр "Космос" ');
Для друку самого апострофа його потрібно повторити два рази:
writeln (‘Об’’єм призми = ,’ Vpris);
Процедура WriteLn без параметрів друкує порожній рядок. Наприклад:
writeln (‘Значення А=’, А); writeln;
writeln (‘Значення В=’, B);
У процедурі Write можна виконувати форматоване виведення даних. Для цього, у списку після імені змінної чи вираження через двокрапку вказують ширину поля виведення. Наприклад:
write (y1 : 5, sum : 8);
Тут для виведення результату буде відведене поле в 5 місць, а для результату Sum - 8 знакомісць. Якщо результат - речовинне число, то ширину поля задають для цілої і дробової частини числа:
write (res : 6 : 3);
У цьому випадку виведене на екран число буде займати шість позицій, у тому числі з трьома значеннями після десяткової крапки. З огляду на те, що одну позицію займає десяткова крапка, для виведення цілої частини числа залишається 6-3-1=2 позиції.
Якщо кількість позицій для виведення числа буде виділено менше, ніж дійсно потрібно для цього числа, то ціла частина все одно буде виведена. Наприклад:
writeln (a : 4 :2);
де для виведення цілої частини числа залишається 4-2-1=1 позиція, а число насправді має тризначну цілу частину, наприклад, 327,43. У цьому випадку помилки не буде - ціла частина числа, усупереч зазначеному формату, буде виведена на екран цілком.
Розглянемо приклади завдання форматів.
Якщо не зазначений формат виведеного числа, воно буде виводитися в експонентній формі.
write (655.456)= 6.5545600000E+2
Тут 6,5545600000- мантиса числа з плаваючою крапкою, яка завжди складається з цілої частини, крапки і 10 знаків після неї, що визначає точність числа (точність залежить від типу ЕОМ), за якими йде технічне Е и порядок. Ціла частина мантиси - завжди зображується однією цифрою.
Якщо у форматі не зазначена кількість позицій для дробової частини, вона буде виводитися в експонентній формі з достатнім для точного зображення числом позицій:
write(655.456 : 1) = 6.6E+02
write(655.456 : 5) = 6.6E+02
Якщо у виведеного числа дробова частина не укладається в кількість відведених для неї позицій , то число округляється (саме ж значення змінної в пам'яті залишається без змін):
write(655.456 : 3 : 1) = 655.5
Якщо для цілої частини відведений нуль позицій, чи недостатня кількість, то ціла частина все рівно буде виведена цілком:
write(655.456 : 0 : 3) = 655.456
write(655.456 : 2 : 3) = 655.456
Для виведення цілої частини числа без її дробової частини і без експоненти, потрібно у форматі відвести для дробової частини нуль позицій:
write(655.456 : 3 : 0) = 655
Ціла частина виведеного числа в цьому випадку округляється, наприклад:
write(655.556 : 3 : 0) = 656
Форматоване виведення обов'язково потрібно застосовувати при виведенні в одному рядку двох і більш результатів:
writeln(x1 : 4, x2 : 4, sum : 6);
При виведенні на екран цілих чисел, наприклад:
writeln(17,22,341) = 1722341 , тобто результати злилися .
Щоб подібне не трапилось, потрібно виведення 2-го і 3-го числа задати у форматі, де вказати кількість позицій більше, ніж кількість цифр у цих числах. Наприклад:
writeln(17,22:3,341:4) = 17 22 341
Можна вивести ці числа в кожному рядку окремо:
writeln(17);
writeln(22);
writeln(341);
але при цьому, тричі приходиться використовувати процедуру WriteLn.
Замість використання формату для поділу результатів можна застосовувати і пробіли:
writeln(res1,’ ‘,res2);
Питання для контролю:
-
Яким чином виконуються операції введення даних у Pascal?
-
Як виконуються операції виведення даних у Pascal?
-
Як записуються імена вводимих змінних?
-
Чим відрізняються процедури ReadLn від Read; WriteLn від Write?
-
Коли вводяться дані в програму?
-
Як варто вводити значення декількох даних?
-
Чи можна в процедурі Read використовувати фіксований текст?
-
Що, де і як вказується в процедурі Write для організації форматованого виведення?
-
Якщо для цілої частини числа відведений нуль позицій, то ...?
-
Якщо для дробової частини числа відведений нуль позицій, то ...?
-
Крім форматованого виведення як можна розділити дані?
-
Що потрібно зробити для виведення результатів на принтер?
-
Що виводить процедура WriteLn без параметрів?
Тема 5: Прості (скалярні) типи данних
Типи даних у мові Pascal. Запущена в роботу програма обробляє деякі дані. Це можуть бути цілі числа, дробу, символи, рядки, масиви, безлічі і т.д. Усі вони відрізняються друг від друга своїм типом.
Тип даних визначає можливі значення констант, змінних, функцій, виражень, а так само операції, що можуть виконаються над ними.
У Pascal усі типи даних поділяються на прості (скалярні) і складні (структуровані) (див. рис. 5.1).
Рисунок
5.1. Типи даних мови Турбо Паскаль
У Pascal-І кожен тип описується своїм стандартним ідентифікатором, наприклад, для цілих чисел - Integer, для дробових - Real і т.д. Але користувач може створювати свій, нестандартний тип даних і давати йому довільне ім'я. Нестандартний тип даних обов'язково описується розділі Турe.
Усі дані в програмі інтерпретуються як константи чи як змінні.
Константа не змінює свого значення в процесі виконання програми. Змінна змінює своє значення в ході виконання програми.
Прості(скалярні) типи даних є основою, на якій будуються всі інші структури даних. Скалярні типи поділяються на стандартні, до яких відносяться дані цілочисленого, речовинного, символьного і булевого типу, і нестандартні, до яких відносяться дані интервального типу і типу, що перелічується.
Дані цілочисленого типу. До них відносяться константи і змінні. Константа цілочисленого типу – це десяткове число, записане без крапки. Якщо константа негативна, то перед нею повинний стояти знак «-», якщо позитивна – те знак «+», який можна не вказувати. Константа, позначена ім'ям, обов'язково повинна бути описана в розділі Const, наприклад:
const
a=27;
radius=127;
Змінна цілочисленого типу приймає значення цілого десяткового числа. Змінна обов'язково повинна бути описана в розділі Var, наприклад:
var
b: integer;
У Pascal-і використовується 5 цілочислених типів, що відрізняються одне від одного діапазоном прийнятих значень і розміром займаної пам'яті (таблиця 5.1).
Таблиця 5.1. Цілочисельні типи мови Турбо Паскаль
Тип |
Діапазон |
Розмір пам'яті (байт) |
Пояснення |
Byte Word Integer Shortint Longint |
0..255 0..65535 -32768..32768 -128..128 -2147483648..2147483647 |
1 2 2 1 4 |
Довжиною в байт Довжиною в слово Ціле Коротке ціле Довге ціле |
Наприклад:
var
x:integer;
y:byte;
sum, x, y:logint;
Над цілочисленими даними припустимі наступні арифметичні операції:
+ Додавання (результат – ціле число);
- Вирахування (результат – ціле число);
* Множення (результат – ціле число);
Div Одержання цілого частки при діленні цілих чисел (дробова частина при розподілі відкидається);
Mod Одержання цілого залишку при діленні цілих чисел.
Застосовуючи операцію mod можна:
-
визначити, чи є дане число парним, тобто чи поділяється воно на 2 без залишку;
-
обчислити залишок при розподілі двох цілих чисел;
-
визначити, чи кратне дане число трьом, чотирьом і т.д.
-
визначити, чи є дане число простим.
Наприклад, дані А=-8, У=16, З=5, тоді:
Дії Результат Дії Результат
А-32 -40 b mod a 0
A+B 8 a mod c -3
A*c -40 a div c -1
A div 5 -1 16 div –3 -5
A mod 5 -3 16 mod –3 1
Дані речовинного типу.
До даних речовинного типу відносяться константи і змінні.
Константа речовинного типу може бути представлена в двох видах: числом з фіксованою і з плавоючою крапкою.
Число з фіксованою крапкою – це десяткове число з дробовою частиною, що відділена від цілої частини крапкою. Дробова частина може дорівнювати нулю. Наприклад:
21,342; 65,0; -87,767; 2,00; 0,0453;
Речовинне число не може починатися з крапки і не може нею закінчуватися. Наприклад, запису 5, і ,5 неприпустимі. Число 0 – ціле, а число 0,0 – речовинне.
У математиці для зображення дуже великих і дуже маленьких чисел використовується запис числа з десятковим порядком. Наприклад, числа 1200000000 і 0,00000012 можна записати відповідно у виді 12*108 і 12*10-8.
У Paskal-і подібні числа зображуються в експонентній формі і мають вид mEp, де m називається мантисою, а p – порядком числа. Символ Е є ознакою запису числа в десятковому порядку.
Мантиса може бути представлена цілим чи речовинним числом з фіксованою крапкою. Порядок тільки ціле число. Мантиса і порядок можуть містити знаки “+” чи “-”.
Числа, представлені з порядком, називаються числами з плаваючою крапкою. Наприклад:
Математичний запис Запис на Paskal-і
2*106 2Е+6 чи 2Е6
-2,7*103 -2,7Е3;
0,76*10-3 076Е-3;
-13*10-7 -13Е-7
У будь-якіму приведеному числі можна переміщати десяткову крапку в мантисі й одночасно змінювати порядок (крапка “пливе”), від цього саме число не зміниться. Наприклад:
-2,7Е3 -27Е2 -270Е1 -2700Е0 -27000Е-1.
Змінна речовинного типу приймає значення числа з фіксованою чи плаваючою крапкою.
У Paskal-і використовується 5 речовинних типів, що відрізняються одне від одного діапазоном прийнятих значень і розміром пам'яті (таблиця 5.2).
Таблиця 5.2. Речовинні типи мови Турбо Паскаль
Тип |
Діапазон |
Мантиса |
Розмір (байт) |
Пояснення |
Real Single double extended comp |
2,9Е-39..1,7Е38 1,5Е-45..3,4Е38 5,0Е-324..1,7Е308 3,4Е-4932..1,1Е4932 -9,2Е18..9,2Е18 |
11 – 12 7 – 8 15 – 16 19 – 20 19 - 20 |
6 4 8 10 8 |
Речовинний Одинар.точн. Двоичн.точн. Повыш.точн. складний |
Ми в обчисленнях будемо використовувати тип Real. Використання інших типів вимагає наявності в ПК математичного співпроцесора. Якщо він є, то необхідно в програмі установити директиву компілятора {$N+}, якщо його немає – директиву програмної эмуляции співпроцесора {$E+}.
Над даними речовинного типу припустимі наступні арифметичні операції:
+ додавання, - вирахування, * множення, / ділення.
Якщо обидва операнда речовинного типу, чи один з них цілого типу, результат операції завжди буде речовинного типу.
До даних речовинного типу можна застосовувати убудовані функції. Приклад використання змінних А, В, С речовинного типу:
a+b*c; a/b+c+56; sin(a+b+c);
a*b*c; sqr(a+b/c); sgrt(a*b+c+0.54).
У Pascal немає операції зведення в ступінь, крім зведення в квадрат. При зведенні в ступінь використовують стандартні функції. Наприклад, Ax заміняють вираженням
Exp(x*ln(a)),
де Exp – експонента і ln – натуральний логарифм – убудовані функції. Значення А повинне бути>0.
Дані логічного типу
Дані логічного типу використовуються при порівнянні величин. Наприклад:
x2 < 0; вираження завжди неправдиве;
a < b; вираження правдиве при а=5 і b=3;
неправдиве при a=3 і b=5.
Результат порівняння може бути або правдивим, або неправдивим.
Значення логічного типу в Pascal-і позначаються убудованими ідентифікаторами констант True (істина) і False (неправда). Їх можна використовувати в явному виді чи позначати ім'ям у розділі Const, наприклад:
const
t = true;
f = false;
Логічна змінна може приймати значення True чи False. Описується логічна змінна в розділі Var ключовим словом Boolean (логічний), наприклад:
var
a : boolean;
b1 : boolean;
У розділі операторів такій змінній можна привласнити значення логічної константи, наприклад:
а := true; b1 := false;
У Pascal-і для порівняння даних передбачені операції відношення(таблиця 5.3).
Таблиця 5.3. Операції відношення
Операції |
Дія |
Вираження |
Результат |
= <> > < >= <= in |
Дорівнює Не дорівнює Більше Менше більше чи дорівнює менше чи дорівнює Приналежність |
A = B A<>B A > B A < B A >= B A <= B A in B |
True, A=B True, A<>B True, A>B True, A<B True, A>=B True, A<=B True, якщо А знаходиться в списку В |
Порівнюються будь-які типи даних. Результат завжди булевого типу. Наприклад:
4 > 6 дає результат False;
A <> B дає результат True при А=5 і В=7;
A = 2*B+5 дає результат False при А=10 і В=2.
Відношення можна використовувати в правій частині оператора присвоювання, наприклад:
var
log1,log2: boolean;
…
log1:=a<>b;
log2:=a=2*b+5;
Змінна log1 одержить значення True, а змінна log2 – значення False.
У Pascal-і, як і в математичній логіці, маються спеціальні логічні операції. Результатом виконання логічних операцій є логічне значення True чи False. Операндами служать дані типу boolean. Операції наведено в таблиці 5.4.
Таблиця 5.4. Логічні операції мови Турбо Паскаль
Опера-ції |
Дія |
Вираження |
А В |
Резуль-тат |
Not |
Унарна операція інверсії всіх битів цілого числа |
not A |
T F |
F T |
And |
Логічне заперечення. Побітова логічна операція “І” двох цілих чисел |
A and B |
T T T F F T F F |
T F F |
Or |
Побітова логічна операція “ЧИ” двох цілих чисел |
A or B |
T T T F F T F F |
T T T F |
Xor |
Побітова логічна операція “виключення чи” двох цілих чисел |
A xor B |
T T T F F T F F |
F T T F |
Приведемо приклади.
Результат операції логічного додавання
(a > 5) or (c = 3)
-
неправдивий при А=2, З=1;
-
правдивий при А=6, З=3; А=2, З=3; А=7, З=4.
Результат операції логічного множення
(a>5) and (c=3)
-
неправдивий при А=2, З=1; А=2, З=3; А=7, З=4;
-
правдивий при А=6, З=3.
Результат операції логічного заперечення
not (c=3)
-
неправдивий при З=3;
-
правдивий при З=4.
Якщо True відповідає 1, а False відповідає 0, то True > False.
Розглянемо приклади виконання логічних операцій з операндами типу Word. Наприклад, дано А та В – типу Word:
A = $5555 = 01010101010101012
B = $00EF = 00000000011111112
то, у логічних операціях виконується побітове порівняння операндів, починаючи з молодшого розряду.
а and b = 00000000010101012
Побітове порівняння виконується в такий спосіб.
Записуємо в стовпчик біти значень А та В:
А = 01010101010101012
У = 00000000011111112
Починаючи зправа, по одному виписуємо біти з цих значень і виконуємо 0 and 1 = 0
Порівнюючи в такий спосіб усі біти двох значень А та В, одержимо результат 00000000010101012
Аналогічно вирішуємо наступні приклади:
a оr b = 010101010111111
a xor b = 01010101001010102
Оператор Not реверсує значення кожного біта свого операнда:
not b = 11111111100000002
Питання для контролю.
-
Що визначає тип даних у Paskal-і?
-
На які типи поділяються дані?
-
Перелічите прості типи даних.
-
Перелічите складні типи даних.
-
Назвіть стандартні і нестандартні типи даних.
-
Як описуються типи даних у Paskal-і?
-
Як інтерпретуються дані в програмі?
-
Назвіть дані цілочисленого типу.
-
Які арифметичні операції виконуються над даними цілочисельного типу?
-
Як може бути представлена константа речовинного типу?
-
Чи може речовинне число починатися з крапки чи закінчуватися нею?
-
Розповісти про експонентну форму представлення речовинного числа.
-
Перелічите речовинні типи даних, застосовувані в Pascal.
-
У якому випадку і які директиви компілятору необхідно установити в програмі при обробці даних речовинного типу?
-
Перелічите арифметичні операції над даними речовинного типу.
-
Як виконуються в Pascal операції зведення в ступінь?
-
Як використовуються дані логічного типу?
-
Як позначаються значення логічного типу?
-
Логічна константа і її використання в програмі.
-
Логічна змінна і її використання в програмі.
-
Назвіть операції відношення.
-
Як відношення використовуються в операторі присвоювання?
-
Перелічте логічні операції.
-
Що більше: True чи False?
Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
Середовище програмування - це пакет програм, призначений для створення вихідних текстів програм і перетворення їх у машинні коди для даного комп'ютера.
Таким середовищем у нас є інтегроване середовище розроблювача – IDE (Integrated Development Environment, файл tpx.exe), Turbo Pascal-ю версії 7.0 фірми Borland International (США).
Складається воно з убудованого компілятора, отладчика і текстового редактора (файл turbo.exe), зовнішніх бібліотек (файл tur-bo.tpl,graph.tpu) і файлу допомоги (turbo.hlp).
IDE має довідкову систему (кл.F1), що видає контекстно-залежну довідку , тобто, можна одержати інформацію про об'єкт, на який вказує курсор чи вибрати курсором в тексті довідки відмічений підсвічуванням елемент для одержання більш докладної інформації.
Виклик IDE виконується запуском файлу turbo.exe, що знаходиться в директорії, набравши в командному рядку DOS:
tp\bin\turbo
Головне меню має наступні секції:
-File. Завантаження існуючих і створення нових файлів, тимчасовий вихід у DOS, збереження файлів на диску і вихід із ТР
-Edit. Редагування вихідних текстів програм, використовуючи блокові команди і послуги вікна Clipboard;
-Search. Команди пошуку і заміни фрагментів тексту, пошуку процедур і місця розташування помилок у програмі;
-Run. Запуск програми на виконання чи покрокове її налагодження;
-Compile. Компіляція поточної програми;
-Debug. Команди отладчика, що дозволяють виконувати налагодження програми (пошук помилок і т.д.) ;
-Tools. Команди повідомлень при налагодженні і список програм, які можна виконати не виходячи з ТР;
-Options. Установка параметрів роботи інтегрованого середовища і компілятора;
-Window. Команди керування вікнами;
-Help. Одержання підказки системи.
Меню цих секцій називаються підлеглими, тому що вони містять свої меню, у які ввійти можна двома способами:
-
натиснути F10, рамку вибору навести на потрібне ім'я секції і натиснути Enter.
-
більш швидкий спосіб. Натиснути Alt і ,не відпускаючи її, клацнути по клавіші, на якій зображена перша буква імені секції(використання так званих “гарячих” клавіш – Hot Keys).
Вихід з головного чи меню чи меню секції – Esc.
Крім цього є локальне меню, що містить найбільш часто використовувані команди. Його виклик – Alt+F10 чи натискання правої кнопки миші.
Унизу вікна розташований рядок стану, де зазначені команди і комбінації клавіш, виклик яких виконується не входячи в головне меню.
Закінчення роботи і вихід з IDE – Alt+X.
При роботі в IDE використовуються наступні основні команди:
-F1 – виклик контекстно-залежної підказки;
-F2 – запис вихідної програми з поточним ім'ям;
-F3 – читання файлу з зовнішнього носія ;
-F4 – виконати програму до рядка, де знаходиться курсор;
-F5 – змінити розміри активного вікна;
-F6 – переключити активне вікно;
-F7 – трасування програми;
-F8 – покрокове виконання програми;
-F9 – скомпілювати програму;
-F10 – вхід у головне меню;
-Alt+Цифра – перехід до вікна з зазначеним номером;
-Alt+F3 – закрити поточне (активне) вікно;
-Ctrl+F9 – компіляція і запуск поточної програми на виконання під керуванням IDE;
-Alt+F9 – компіляція програми з активного вікна без її виконання (створення EXE-файлу);
-Alt+F5 – забрати вікно IDE, щоб побачити результати виконання програми. При повторенні цієї команди вікно відновлюється (відновити можна натисканням будь-якої кл.).
Питання для контролю.
1. Що таке середовище програмування і її назва в ТР 7.0?
2. З чого складається IDE, виклик IDE і вихід з нього?
3. Де розташоване головне меню? Назвіть його секції.
4. Як ввійти в меню секцій?
5.Що містить локальне меню і як його відкрити?
6. Де розташовано і що містить рядок стану?
7. Що таке контекстно-залежна підказка і як її викликати?
8. Як записати текст вихідної програми?
9. Як виконати програму під керування IDE?
10.Як побачити результати виконання програми?
Тема 7: Меню опції
Секція File.
Секція File має наступні команди (табл. 7.1).
Таблиця 7.1. Команди секції File
Команда |
Функціональна клавіша |
Дія |
New |
|
Відкриває нове вікно |
Open |
F3 |
Відкриває старий файл |
Save |
F2 |
Зберегти файл |
Save as |
|
Зберегти з ім'ям |
Save all |
|
Зберегти усі файли |
Change dir |
|
Змінити поточний каталог |
|
|
Друк |
Printter setup |
|
Установка друку |
Dos shell |
|
Тимчасовий вихід у DOS |
Exit |
Alt+X |
Вихід із середовища |
Розглянемо основні команди.
Команда New відкриває нове редакційне вікно з ім'ям за замовчуванням NONAMExx.PAS, де хх – числа від 00 до 99, і робить його активним. Призначення вікна – створення вихідного тексту нового файлу. При записі ТР запросить ім'я файлу.
Розглянемо структуру вікна (рис. 7.1).
Номер
вікна
Рисунок 7.1. Структура вікна середовища програмування ТР
Вікна можна відкривати і закривати, змінювати їхні розміри і переміщувати.
Команда Open відкриває діалогове вікно Open a File:
Якщо в поле введення ввести *.PAS, то в полі File з'явиться список імен усіх файлів з розширенням .PAS.
І
мена
файлів, що останніми викликалися,
додаються в список передісторії, куди
можна ввійти двома способами: або
клацнути по клавіші
або скористатися
мишею.
Передісторія використовується для повторного входження в тексти, у яких уже працювали.
Обране ім'я файлу в списку файлів попадає в поле введення. Введення закінчується натисканням Enter. Для скасування команди - Esc.
В інформаційній панелі відображається шлях обраного файлу, його розмір, дата і час створення.
Функції кнопок:
Open відкриває нове вікно редагування і поміщає в нього текст обраного файлу.
Replace заміняє файл в активному вікні редагування обраним файлом, не відкриваючи нового вікна.
Cancel скасовує всі дії і виводить з діалогового вікна.
Help виводить вікно підказки.
Усередині вікна переключення виконуються кл. Tab.
Команда Save записує файл з активного вікна на диск, якщо файл не мав імені, то відкриється вікно Save File As для перейменування файлу.
Кнопкою Ok підтверджують обрану дію. Функції інших кнопок такі ж, як і кнопок у вікні Open a file.
Команда Save as ... відкриває вікно в якому можна зберегти файл під іншим ім'ям, в іншому каталозі чи диску. Усі вікна з цим файлом обновлять ім'я.
Команда Change Dir…відкриває вікно Change Directory, у якому задається необхідний поточний каталог. Поточним каталогом є той, котрий використовується ТР для запам'ятовування файлів і їхнього пошуку.
Команда Print друкує текст програми з активного вікна редагування. Для цього потрібно натиснути Ctrl+K+P.
Команда DOS Shell застосовується для тимчасового виходу з ТР у середовище DOS. Для повернення в ТР потрібно набрати Exit і натиснути Enter.
Команда Exit завершує роботу в ТР.
Активним є вікно, у якому знаходиться курсор. Активне вікно має смуги скролінга, кнопку закриття і подвійну рамку. Активне вікно завжди розташовується на передньому плані, пасивне - на задньому.
Щоб пасивне вікно стало активним, потрібно навести на нього курсор мишки і клацнути по лівій кнопці.
Якщо мишки немає, зміна і переміщення вікна виконується в такий спосіб: зробити вікно неактивним (Ctrl+F5), потім стрільцями керування курсором змінюємо положення вікна, а командою Shift + стрілка курсору змінюємо його розмір. Активність вікна відновлюємо кл. Еsс.
Секція Edit. Редагування тексту. Блокові команди. Секції Run і Compile
Секція Edit. Убудований редактор, що має наступні команди (табл. 7.2).
Таблиця 7.2. Команди секції Edit
Команда |
Функціональна клавіша |
Дія |
Undo |
Alt+BkSp |
Скасувати останню команду |
Redo |
|
Скасувати команду Undo |
Cut |
Shift+Del |
Вирізати фрагмент |
Copy |
Ctrl+Ins |
Копіювати фрагмент |
Paste |
Shift+Ins |
Вставити фрагмент |
Clear |
Ctrl+Del |
Очистити вікно |
Show clipboapd |
|
Перехід до буфера обміну |
Команда Undo скасовує останню команду в рядку. Так, якщо видалити рядок командою Ctrl+Y, то Undo відновить її. Команда працює в останньому вилученому чи зміненому рядку.
Команда Cut вирізає виділений текст і поміщає його на зберігання в Clipboard.
Команда Сору поміщає виділений текст у Clipboard не вирізаючи його на відміну від команди Cut.
Команда Paste вставляє виділений текст із Clipboard у поточне вікно з позиції курсору.
Команда Clear видаляє виділений текст, не поміщаючи його в Clipboard.
Команда Show clipboard відкриває вікно з занесеними в нього на збереження текстами. Тексти у вікні можна редагувати. Виділений командою Shift+ текст, можна скільки завгодно раз витягати з цього вікна і вставляти в новий текст командою Paste.
Редагування тексту. Блокові команди. При створенні тексту і його редагуванні необхідно користатися послугами блокових команд –– це заощаджує час.
Виділення блоку чи слова Sift+
Копіювання блоку Ctrl+K+C
Переміщення блоку Ctrl+K+V
Видалення блоку Ctrl+K+Y
Відновлення вилученого блоку Alt+BkSp
Запис блоку на диск Ctrl+K+W
Читання блоку з диска Ctrl+K+R
Включити/виключити підсвічування блоку Ctrl+K+H
Роздрукувати блок на принтері Ctrl+K+P
Зрушити блок вправо Ctrl+K+I
Зрушити блок уліво Ctrl+K+U
Команди на клавішах виконуються так: Ctrl+K+C - натиснути Ctrl і, не відпускаючи її, клацнути по клавіші ДО, потім по С.
Команда зрушення блоку виконує його зрушення на одну позицію. Для зрушення блоку на кілька позицій необхідно повторити команду кілька разів.
Вилучений блок (слово) можна відновити, якщо після видалення не виконуються інші команди.
Виділення слова виконується з позиції курсору до кінця слова. Виділене слово - це мінімальний блок і до нього застосовні всі блокові команди.
Виділений блок переміщається чи копіюється в інше місце, починаючи з позиції курсору.
Зайвий символ у тексті усувають кл. Delete, якщо курсор під символом, чи кл. Backspace, якщо курсор праворуч від символу.
Кл. Ins вибирають режим вставки /заміщення символу. У режимі за-міщення курсор має форму миготливого прямокутника.
Праворуч і знизу вікна розташовані смуги скролінга, що дозволяють прокручивать текст у вікні за допомогою мишки. Текст можна переміщати нагору/униз, використовуючи PgUp/PgDn .
Введення кожного нового рядка закінчується натисканням Enter.
Секція містить наступні команди (табл. 7.3).
Таблиця 7.3. Команди секції Run
Команда |
Функціональна клавіша |
Дія |
Run |
Ctrl+F9 |
Виконати |
Step over |
F8 |
Пошагово трасувати без заходу в процедури |
Trace into |
F7 |
Пошагово трасувати з заходом у процедури |
Go to cursor |
F4 |
Виконати до рядка з курсором |
Programm reset |
Ctrl+F2 |
Скинути програму |
Parametres |
|
Установити параметри |
Команда Run запускає програму на виконання в середовищі IDE.
Команда Step over пооператорно виконує поточну процедуру не трасуючи процедури нижчого рівня.
Команда Trace into виконує програму построчно. Процедура при цьому виконується пооператорно, а не в цілому. Команда дає можливість простежити порядкове виконання програми. Для цього потрібно по черзі натискати F7 - для запуску і Alt+F5 - для видалення вікна, щоб бачити результат виконання.
Команда Go to cursor запускає програму на виконання від місця останова до рядка, на якій установлений курсор. Якщо цей рядок не містить виконуваний оператор, то буде видане про це повідомлення.
Команда Program reset зупиняє виконання налагодження, звільняє пам'ять і закриває усі файли, використовувані програмою.
Команда Parameters відкриває діалогове вікно для введення параметрів поточної програми.
Секція Compile містить наступні команди (табл. 7.4).
Таблиця 7.4. Команди секції Compile.
Команда |
Функціональна клавіша |
Дія |
Compile |
Alt+F9 |
Компіляція |
Make |
F9 |
Зборка |
Bund |
|
Повна зборка |
Destination (memory, disc) |
|
У яку пам'ять компілювати |
Primary file |
|
Основний файл |
Команда Compile компілює файл в активному вікні і виводить вікно стану з результатами, що відаляються після натискання будь-якої клавіші. При виникненні помилки у вікні виводиться повідомлення.
Команда Make включає убудований Project Manager для створення файлу .ехе.
Команда Destination Memory визначає місце запам'ятовування виконуваного коду - файлу типу .ехе - у пам'яті (Memory), чи на диску (Disk). Вибір установки Memory /Disk виконується кл. Enter.
Команда Primary file використовується при роботі з програмою, що має кілька модулів з розширеннням .tpu чи Include файлів.
Питання для контролю.
1. Як створити новий вихідний текст файлу?
2. Як відкрити вихідний текст існуючого файлу? Призначення передісторії.
Як зберегти вихідний текст файлу?
4. Які функції кнопок Replace, Cancel і Help?
5. Як зберегти вихідний текст файлу під іншим ім'ям?
6. Який каталог називається поточним і як його змінити?
7. Як роздрукувати вихідний текст програми на принтері?
8.
Як виконати тимчасовий вихід у DOS і
повернутися в ТР?
9.
Яка команда записує усі файли у відкритих
вікнах?
10. Як виконати переключення усередині вікна?
11. Яка інформація відображається в інформаційній панелі?
12. Яке вікно є активним? Ознаки активного вікна.
13. Ознаки пасивного вікна і як його зробити активним?
14. Як змінити розміри вікна і його положення на екрані?
15. Як закрити вікно і що відбудеться, якщо в ньому був змінений файл?
16. Як перемістити і змінити розміри вікна без допомоги мишки?
-
Команди Undo, Cut, Copy, Paste.
-
Призначення вікна Clipboard. Як переглянути уміст вікна?
-
Чи можна редагувати тексти у вікні Clipboard? Як витягти текст
із вікна Clipboard? -
Назвіть команди:
-
виділення блоку чи слова;
-
копіювання і переміщення блоку;
-
видалення і відновлення вилученого блоку;
-
запису блоку на диск і читання блоку з диска;
-
включення/вимикання підсвічування блоку;
-
роздруківки блоку на принтері;
-
зрушення блоку вправо і вліво.
-
Розповісти як виконується редагування (виправлення допущених
помилок)? -
Розповісти про команди Run, Step over, Trace into і Compile.
-
Розповісти про команду Destination Mеmory.
Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
В математиці вираженням є формула, що відбиває математичні відносини. У мовах програмування замість “формула” говорять “вираження”. У порівнянні з математичними поняттям вираження має свої особливості: воно складається з констант, змінних, функцій і операцій над ними.
Вираження визначають порядок виконання операцій. Операції визначають дії, які треба виконати над операндами.
Часто вираженням є константа, перемінна чи функція.
При складанні виражень необхідно дотримуватись наступних правил.
Вираження записуються в один рядок. Верхні і нижні індекси не допускаються. Наприклад, формула:
повинна бути записана у виді вираження:
У вираженні неможна застосовувати квадратні і фігурні дужки, тому що вони мають інше призначення. Використовуються тільки круглі дужки. Наприклад, математичне вираження:
в арто записати у вигляді
Якщо вираження записане правильно, то кількість дужок, що відкриваються, дорівнює числу закриваючих дужок. Зайві правильно поставлені дужки не впливають на результат.
Неможна записувати підряд два знаки операцій. Наприклад, вираження:
a+b/-c записано невірно; його варто записати у видгляі
a+b/(-c).
Складні вираження потрібно розбивати на декілька простих, а повторювані дії обчислювати окремо. Наприклад, вираження:
(a+bx)-2(a+bx)+c(a+bx) варто записати в такий спосіб
x:=a+b*x
z:=y-2*y+c*y
Вираження може бути арифметичним і логічним. При виконанні операції у вираженнях слід дотримуватися пріоритету операцій (табл. 8.1).
Таблиця 8.1. Пріоритет операцій.
Пріоритет |
Тип дій |
Операції або елементи |
1 2 3 4 5 6 |
Обчислення в круглих дужках Обчислення значень функції Унарні операції Мультимедійні операції Аддитивні операції Операції відношень |
( ) Функції @, not, унарні + та - *, /,div, mod, and, shl, shr + , -, or, xor =, <>, <, >, <=, >=, in |
Пріоритет операторів визначаються за наступними правилами:
Операнд, що знаходиться між двома операндами з різними пріоритетами, зв'язується з оператором, що має більш високий пріоритет.
Операнд, що знаходиться між двома операторами з рівними пріоритетами, зв'язується з оператором, що знаходиться ліворуч його.
При наявності дужок спочатку виконується дії в них, при цьому, виконання варто починати з дій у самих внутрішніх дужках.
Операції, зазначені в одному рядку, мають однаковий пріоритет.
Розглянемо приклад. Дано логічне вираження:
(a > 3) and (b = a + 6) or not (c = 4)
Визначити його результат при А = 2, В=8, С=5.
Порядок виконання операцій наступний:
Виконується операція порівняння А>С у перших дужках, її результат False, тому що 2<3;
Виконується дія в других дужках з дотриманням пріоритету – спочатку обчислюється значення А+6, а потім значення В порівнюється зі значенням А+6. Результат – True тому що 8=8;
Виконується операція порівняння С = 4 у третіх дужках, її результат False, тому що 5 не дорівнює 4;
Виконується операція Not (С = 4), її результат True, тому що Not False є True;
Виконується операція And над першими і другими дужками - False And True, результат її True;
Виконується операція Or над вираженням ліворуч і праворуч від неї - False Or True, результат її True;
Отже, остаточний результат логічного вираження – True.
Приклад. Визначення значень логічних змінних У1, У2, У3.
const
t = true; {логічна константа}
var
b1, b2, b3 : boolean; {логічні змінні}
begin
b1 := false;
b2:=t and b1;
b1 := (not b2) or (not b1);
b3 := b1 and b2 and t;
writeln (‘b1=’,b1,’ ’,’b2=’,b2,’ ‘,’b3=’,b3)
end.
Приклад. Визначити значення логічного вираження
(a>b) and (b=a+2) or not (c<>b)
при наступних даних: А=7, У=9, З=5.
var
l : boolean; {логічна змінна}
a, b, c : integer;
begin
writeln (‘Введіть цілі значення a, b, c :’);
read(a, b, c);
l:=(a>b) and (b=a+2) or not (c<>);
writeln (‘Значення логічного вираження = ‘, l)
end.
Стандартні математичні функції і процедури
Розглянемо основні математичні функції і процедури стандартної бібліотеки System Turbo Pascal.
Функції:
Abs(x) – повертає абсолютне значення х.
Наприклад, abs(-2.4)=2.4;
Cos(x) – повертає косинус числа х (х у радіанах )
Наприклад:
var
x : real;
begin
x := -46.78;
writeln(cos(x));
end.
Sin(x)-повертає синус числа х(х у радіанах).
Arctan(x)-повертає арктангенс числа х.
Exp (х)-повертає число рівне E в ступені х.
Наприклад:
var
x : real;
begin
x:=5.36;
writeln(exp(x));
end.
Ln(x) –повертає число рівне натуральному логарифму від числа х.
Наприклад:
var
x : real;
begin
x := 146.78;
writeln(ln(x));
end.
Pi –число Пі.
Наприклад:
var
r : real;
begin
r := 0.873;{радіус кола}
writeln('площа кола=',2*pi*r*r);
end.
Sqr(x) - зводить число х у квадрат.
Sqrt(x) - витягає корінь квадратний з числа х.
Наприклад:
var
x : real;
begin
x := 7.78;
writeln('x у квадраті =',sqr(x));
writeln('квадратний корінь з х=',sqrt(x));
end.
Trunc(x) - повертає число, рівне цілій частинй числа х, відкидаючи його дробову частину.
Наприклад:
var
x : real;
begin
x := -7.98;
writeln(trunc(x));
end.
Frac(x) – повертає число, рівне дробової частини числа х, відкидаючи його цілу частину
Наприклад:
var
x : real;
begin
x:=-7.98;
writeln(frac(x));
end.
Int(x) – повертає ціле число, рівне округленій частині числа х, при цьому округлення виконується убік найближчого меншого цілого числа.
Наприклад:
var
a, b, c, d : real;
begin
a := -0.97; b := -2.8; c := 0.97; d := 2.8;
writeln(‘a=’,int(a):3:1,’; b=’,int(b):3:1,’; c=’,int(c):3:1,’; d=’,int(d):3:1);
end.
Результати: a = 0.0; b = -2.0; c = 0.0; d = 2.0
Round(x) - повертає ціле число, рівне округленій частині числа х, при цьому округлення виконується за правилами математики.
Наприклад:
var a, b, c, d : real;
begin
a :=-2.3; b :=-2.5; c :=2.4; d:=2.5;
writeln(‘a=’,round(a),’b=’,round(b),’c=’,round(c),’d=’,round(d))
end.
Результати: a=-2 b=-3 c=2 d=3
Random(x) – генерує випадкові числа від 0 до х. Якщо аргумент х не заданий, то числа генеруються від 0 до 1.
Наприклад:
var x: integer;
begin
for x:=1 to 10 do
write(random(x):2,’;’);
end.
Результати:0; 0; 2; 0; 1; 4; 2; 1; 3; 4;
Odd(x)-повертає True, якщо число х непарне і Flalse - якщо парне.
Наприклад:
var x:integer;
begin
for x:=1 to 5 do
write(Odd(x),’;’);
end.
Результати: True; False; True; False; True;
Процедури:
Inc(x,y) - збільшує значення числа х на величину y. Якщо y не зазначений, х буде збільшуватися на 1.
Dec(x,y) - зменшує значення числа х на величину y. Якщо y не зазначений, х буде зменшуватися на 1.
Наприклад:
var n: integer;
begin
n := 5; writeln(‘для n=’,n);
inc(n); writeln(‘inc(n)=’,n);
n:=5;
inc(n,2);writeln(‘inc(n,2)=’,n);
n:=5;
dec(n);writeln(‘dec(n)=’,n);
n:=5;
dec(n,4);writen(‘dec(n,4)=’,n)
end.
Результати: для n=5
inc(n)=6
inc(n,2)=7
dec(n)=4
dec(n,4)=1
Randomize- забезпечує розбіжність послідовностей псевдовипадкових чисел, генеруємих функцією Random.
Наприклад:
var x:integer;
begin
randomize;
for x:=1 to 10 do
write(random((x)+1):2,’;’)
end.
Питання для контролю.
-
В чому полягає різниця між формулою в математиці і вираженням у Pascal-і?
-
Що визначають вираження, а що операції?
-
Яких правил потрібно дотримуватися при складанні виражень?
-
Яким маже бути вираження? Перелічте пріоритет операцій при виконанні дій у вираженнях.
-
Назвіть правила визначення пріорітету операторів у вираженні.
-
Назвіть функції що повертають
-
абсолютне значення заданого числа і косинус заданого числа;
-
синус і арктангенс заданого числа;
-
експоненту;
-
число, рівне натуральному логарифму від заданого числа;
-
число Пі.
-
Як звести число Х в квадрат?
-
Як витягти квадратний корінь з числа Х?
-
Як повернути число, рівне цілій частині заданого числа?
-
Як повернути число, рівне дробовій частині заданого числа?
-
Як повернути ціле число, рівне округленій цілій частини заданого числа?
-
Назвіть функцію, що генерує псевдовипадкові числа.
-
Як забезпечити розбіжність генеруємих псевдовипадкових чисел?
-
Дано число Х. Що повертає функція Odd(X)?
-
Назвіть процедури що збільшують і зменшують задане число Х на величину У.
Тема 9: Умовний оператор. Вкладений умовний оператор
Оператори Pascal. Поняття оператора Pascal.
Розглянемо
приклад з математики:
Дану задачу можна записати так:
-
якщо х<0, то обчислити 2х+1;
-
якщо х>=0, то обчислити 2х-1;
чи ще коротше:
Якщо х<0, то обчислити 2х+1, інакше обчислити 2х-1.
Для програмування таких задач у Pascal-і передбачений умовний оператор, що виконує ту чи іншу дію в залежності від виконання деякої умови. Дамо визначення оператора: це речення мови, що виконує перетворення даних і задає порядок виконання інших операторів.
У Pascal-і 12 операторів. Три оператори називаються простими, оскільки не містять інших операторів, інші – структурними, тому що в їхній склад входять інші оператори; структурні оператори задають правила виконання вхідних у їхній склад операторів.
Оператори, що включаються в структурні, також можуть бути структурними і глибина такої вкладеності не обмежена.
У залежності від способу передачі керування оператори поділяються на лінійні і нелінійні.
Лінійні оператори виконуються в порядку їхнього розташування в програмі.
Таких операторів 5: порожній, складений, присвоєння, процедури/функції, приєднання.
Нелінійні оператори змінюють порядок виконання інших операторів у залежності від деякої умови. Таких операторів 6: переходу, умовний, варіанта, циклу з предумовою, циклу з постумовою, циклу з параметром.
Загальна структура оператора Pascal має вигляд:
[ім'я мітки:][оператор];
Дужки [] означають необов'язкову опцію (частину) оператора. Кожному оператору може передувати мітка, відділена від нього ”:”, і яка служить для позначення місця передачі керування оператором goto. Запис кожного оператора повинен закінчуватися ”;”.
Порожній оператор не містить операційної частини, не виконує дій і позначає просто ”;”.
Застосовується він у випадку, якщо в деякому місці програми повинний стояти оператор, на який треба послатися, але не виконати ніяких дій.
Наприклад, перехід у кінець складеного оператора:
begin
…
goto label_1;
…
label_1: ;
end;
Однак, невірне застосування порожнього оператора може вплинути на результати виконання програми.
Складений оператор являє собою пару ключових слів Begin-End, що містять довільну кількість інших операторів і служить для їхнього об'єднання в один оператор, якщо це потрібно за синтаксом Pascal-я.
Загальна схема складеного оператора:
begin
оператор_1;
оператор_2;
…
end;
Приклад:
…
begin {обмін значеннями х та у }
z := x;
x := y;
y := x { ; після останнього оператора можна не ставити}
end;
Оператор присвоювання має загальний вид:
ліва частина := права частина;
Ліва частина - змінна чи ідентифікатор функції, права частина -вираження. Символ оператора := повинний писатися разом, без пробілу.
Правила виконання оператора:
1. Обчислюється вираження правої частини
2. Отриманий результат привласнюється лівій частині.
Тип вираження повинний співпадати з типом лівої частини. Оператор присвоювання допустим для всіх типів, крім файлових.
Приклад для різних типів лівої частини:
x:=(x+y)/(2+z*10)-0.5;
result:=(1>100) or (a[i]=0);
color:=red;
my_set:=[1,7..10,100];
Оператор процедури/функції викликає процедуру чи функцію за їх іменем і передає їм фактичні параметри. Оператор процедури/функції має структуру:
ім'я процедури/функції(список фактичних параметрів);
Виклик функції відрізняється від виклику процедури тим, що значення, що повертається функцією, повинне бути привласнено якій-небудь змінній чи брати участь у логічних відносинах.
Імена фактичних параметрів можуть не збігатися з оголошеними при описі процедури чи функції; важливі їхній порядок і збіг типу. Якщо деякі чи всі позиції формальних операторів не заповнені, то помилка не виробляється, але туди надходять випадкові значення з відповідними, як правило помилковими, наслідками.
Після завершення процедури керування передається наступному за викликом оператору. Наприклад:
my_procedure(a,b,c,result);
multyply_matrixes(a.b,c);
z:=func_12(x,y);
exit_program;
Безумовний оператор Goto застосовується для зміни порядку виконання операторів програми шляхом передачі керування оператору з зазначеною міткою. Загальна схема оператора:
goto мітка:
Міткою може бути ідентифікатор чи ціле безнаковое число в діапазоні від 0 до 9999.Мітка повинна бути описана в розділі Label.
Приклад.
label
metka 1, 17;
…
goto metka 1;
…
metka1:
a :=b; goto 17;
…
17:
b:=c;
Правила використання оператора переходу:
1.Перехід на мітку можливий кілька разів.
2.Мітка, зазначена в операторі переходу, повинна позначати оператор, що знаходиться в тім же блоці, що і сам оператор. Не допускаються переходи з процедур і функцій за їхні межі чи усередину них.
3.Перехід усередину структурного оператора може викликати непередбачені результати, хоча компілятор не дає повідомлення про помилку.
Використання goto вважається поганим стилем програмування, оскільки породжує заплутану логіку. Краще уникати його застосування.
У ТР мається чотири безумовних функції: Break, Continue, Exit та Halt.
Призначення їх наступне:
Break - дозволяє достроково закінчити цикл.
Continue - дозволяє почати нову ітерацію циклу, навіть якщо попередня ітерація не була довершена.
Exit - дозволяє завершити роботу програми.
Halt(n)-дозволяє завершити роботу програми з кодом завершення n, де n-ціле число.
Умовний оператор. Вкладений умовний оператор.
Умовний оператор застосовується для вибору до виконання одного з двох можливих операторів в залежності від деякої умови, при цьому один з операторів може бути відсутнім. Умова - це логічне вираження булевського типу. Загальна схема умовного оператора:
If умова then оператор_1 [else оператор_2 ];
Якщо умова=True, то виконується оператор_1, якщо False - виконується оператор_2 наступний за “else”(інакше).
Приклад 1.
if x<y then max :=y {; ставити не можна}
else max:=x;
Приклад 2.
if color = red then
begin
…
end else
begin
…
end;
Вкладений умовний оператор.Можливе використання вкладених один до одного умовних операторів:
If умова then if умова then оператор
еlsе оператор
else оператор
де “else” відноситься до того “if”, що йому передує, тому, для зручності сприйняття програми “еlsе” слід писати під тим “if”, до якого воно відноситься.
Приклад. Написати умовний оператор, що визначає, чи попадає X у діапазон чисел від 5 до 10?
if x>5 then if x<10 then writelen(‘попадає’)
еlsе writelen(‘x>10’)
еlsе writelen(‘x<5’);
Приклад. Написати умовний оператор обчислення X:
1, при a=b, c<d if a=b then
X = 2, при a=b, c>=d if c<d then x := 1
3, при a<>b. else x := 2
else x := 3;
Варто уникати рівня вкладеності “if” більше 2-х через ускладнення логіки програми.
В умовному операторі можна використовувати складені оператори чи оператори переходу.
if умова then
begin
оператор_1;
оператор_2;
…
оператор_n
end else
begin
оператор_1;
оператор_2;
…
оператор_n
end;
перед словом else “;” не ставлять, тому що else не самостійний оператор, а є складовою частиною оператора if.
Усередині складених операторів можуть бути також умовні оператори. Наприклад:
Обчислити у1=7, y2=A, y3=A+B, якщо A>B; t1=A*B, t2=A-B, якщо A=<B. Фрагмент програми має вид:
…
if a>b then
begin
y1:=7; y2 :=a; y3 :=a+b
end else
begin
t1:=a*b; t2 :=a-b;
end;
…
Приклад. З 3-х введених цілих чисел знайти найбільше.
var
a,b,c: integer; {цілі числа}
begin
writeln(‘Введіть три цілих числа’);
read(a,b,c);
if (a>b) and (a>c) then
writeln (‘число’, a, ‘найбільше’)
else
if (b>c) then
writeln (‘число’, b, ‘найбільше’)
else
writeln (‘число’, c, ‘найбільше’)
end.
Приклад. При заданому значенні X обчислити Y=1/X.
При складанні програми, варто передбачити перевірку щоб значення X не виявилося рівним 0, тому що на 0 ділити неможна.
var
x,y : real; {речовинні числа}
begin
writeln(‘Введіть значення x: ’);
read(x);
if x=0 then write(‘На нуль поділяти не можна’)
else
begin
y:=1/x;
writeln (‘y=’, y:1:3);
end;
end.
Приклад. Дан прямокутник і точка з координатами x, y. Визначити, належить вона прямокутнику чи ні? Якщо належить, то повідомити True, якщо ні – False.
var
x1, x2, y1, y2: real;
x,y : real;
a: boolean;
begin
writeln(‘ x1,y1,x2,y2’);
readln(x1,y1,x2,y2);
writeln(' ');
readln(x,y);
if (x>=x1) and (x<=x2) and (y>=y1) and (y<=y2) then
a:=true;
else
a:=false;
writeln(' a=',a)
end.
Питання для контролю.
-
Що таке оператор?
-
Які оператори називаються простими?
-
Які оператори називаються структурними?
-
В залежності від чого і на які групи поділяються оператори?
-
Які оператори називаються лінійними? Перелічте їх.
-
Які оператори називаються нелінійними? Перелічте їх.
-
Загальна структура Pascal-оператора.
-
Порожній оператор. Позначення і застосування.
-
Складений оператор. Загальна схема.
-
Оператор присвоювання. Загальна форма і правила виконання.
-
Для якого типу даних не допустим оператор присвоювання?
-
Оператор процедури/функції. Структура. Чим відрізняється виклик функції від виклику процедури?
-
Безумовний оператор і правила його застосування.
-
Перелічите безумовні функції.
-
Умовний оператор і його застосування.
-
Який тип умови в умовному операторі?
-
Робота умовного оператора.
-
4.Вкладений умовний оператор і його робота (до якого “if” відноситься “else”?).
-
Використання складених операторів в умовному операторі.
-
Чому перед “else” не ставиться “;”?
-
Чому не бажаний рівень вкладеності “if” більш 2?
Тема 10: Оператор вибору
Оператор вибору є узагальненням умовного оператора і застосовується у випадках, коли в заданому списку варіантів рішень потрібно вибрати варіант у відповідності зі значенням деякого вираження чи змінної.
Загальний вид оператора:
case вираження чи ім'я перемінної of
константа_1, константа_2, … :оператор_1;
константа_3, константа_4, … :оператор_2;
[else оператор_3;
оператор_4;
… ]
end;
де Case (у випадку), Of (з), Else (інакше) і End - службові слова. В якості оператора може бути і складений оператор.
Кожна гілка, розділена “:”, називається альтернативою. У лівій частині альтернативи стоїть одна чи кілька констант, розділених “,” чи діапазони значень, у правій частині – відповідний їм оператор.
Робота оператора вибору. Спочатку обчислюється значення вираження чи змінної і, у випадку, якщо воно дорівнює одній з констант чи попадає в заданий діапазон значень, то виконується відповідний їй оператор. Потім керування передається за межі оператора вибору. Якщо значення вираження чи змінної не збігається з жодною константою чи не попадає в заданий діапазон значень, то виконується оператор (оператори) після “else” (якщо він є) і керування передається за межі оператора вибору. Якщо “else” немає, то керування передається на оператор End.
Приклад.
case x+1 of
2..10: y :=sqrt(x);
3,11,y :=a+b*x;
else writeln('значення не збіглися');
end;
Приклад використання списку констант.
case s of
‘+’, ‘-’, ‘*’, ‘\’, ‘=’ : y :=a+b;
‘a’, ‘b’, ‘c’, : y :=a-b;
'у' : y :=0;
end;
Приклад. Ввести номер дня тижня й одержати відповідний йому день українською мовою.
var n : integer {номер дня тижня}
begin
writeln('Введіть номер дня тижня:');
read(n);
case n of
1: writeln('Понеділок');
2: writeln('Вівторок');
3: writeln('Середа');
4: writeln('Четвер');
5: writeln('П'ятниця');
6: writeln('Субота');
7: writeln('Неділя');
else writeln('Немає такого номеру дня')
end;
end.
Питання для контролю.
1.Загальний вид оператора вибору і його застосування.
2.Гілка-альтернатива в операторі вибору і її склад.
3.Робота оператора вибору.
Тема 11: Оператори циклу. Оператор циклу з параметром
У Pascal-і мається три види операторів циклу: While – оператор циклу з попередньою умовою, Repeat – оператор циклу з наступною умовою і For – оператор циклу з параметром.
Оператори тіла циклу записуються один раз. Вхід у цикл можливий тільки через його початок. Вихід з циклу повинний виконуватися по його закінченню чи зо оператором переходу. Якщо цього не передбачено, то циклічні дії будуть продовжуватися нескінченно й у цьому випадку говорять, що “програма зациклилася”.
Оператор циклу з параметром застосовується, коли відоме число повторень циклу. Загальний вид оператора:
for i:=n1 to n2 do
begin
оператори тіла циклу
end;
де For, To, Do – службові слова; і – змінна циклу, n1,n2 – початкове і кінцеве значення перемінної.
Робота оператора. Змінній циклу привласнюється початкове значення змінної і для цього значення виконуються оператори тіла циклу. Потім, значення змінної циклу збільшується на +1, і якщо воно не перевищує заданого кінцевого значення, повторно виконуються оператори циклу. Якщо значення змінної перевищує задане кінцеве значення, то відбувається вихід з циклу і керування передається наступному оператору за End.
Змінна циклу і повинна бути простого дискретного типу(найчастіше цілого типу). Крок її зміни дорівнює +1 чи –1. Якщо значення змінної збільшується від n1 до n2, то крок її зміни дорівнює +1, а якщо зменшується – то її крок зміни дорівнює –1 і тоді в операторі циклу For замість слова To записують слово Downto.
Початкове і кінцеве значення повинні бути сумісні за типом зі змінною циклу. Тип Real не допустим. Неможна змінювати змінну циклу в тілі циклу – це приведе до перекручування результату.
Приклад. Крок зміни змінної i +1
var
i,a,s:integer;
begin
for i:=1 to 4 do
begin
a:=a+i;
s:=2*a;
writeln(a:3,s:3);
end;
end.
Приклад 2. Крок зміни змінної i -1
var
i,a,s:integer;
begin
for i:=4 downto 1 do
begin
a:=a+i;
s:=2*a;
writeln(a:3,s:3);
end;
end.
Приклад. Обчислити y=x2 при x=2,4,6,8,10.
var x,k,y: integer;
begin
x:=2;
for k:=5 downto 1 do
begin
y:=x*x;
writeln(x:3,y:5);
x:=x+2;
end;
end.
Тут змінна k – лічильник кількості виконуваних обчислень.
Якщо тіло циклу складається з одного оператора, то операторні дужки Begin...End можна не вказувати. У цьому випадку оператор циклу з параметром буде мати вид:
for i:=n1 to n2 do оператор;
Приклад1. Приклад2.
var
i,a,s:integer:
begin
for i:=1 to 4 do
begin
a:=a+i;
s:=2*a;
writeln(a:3,s:3);
end;
end.
var
i,a,s:integer:
begin
for i:=4 downto 1 do
a:=a+i;
s:=2*a;
writeln(a:3,s:3);
end.
У першому прикладі оператори тіла циклу взяті в операторні дужки Begin…End в результаті чого цикл For буде виконаний для всіх операторів циклу. Цикл виконується 4 рази і для кожного виконання будуть виведені значення a,s.
У другому прикладі оператори тіла циклу не взяті в операторні дужки в результаті чого цикл For виконується тільки для оператора a:=a+і, а потім виконується оператор s:=2*a. Будуть виведені останні значення a,s.
Приклад. Вивести на екран латинський алфавіт. Оскільки символи латинського алфавіту упорядковані, програма буде наступною:
var simbol:char;
begin
writeln(‘Латинський алфавіт:’);
for simbol:=’A’ to ‘Z’ do
write(simbol);
end.
Приклад. Обчислити y=2x+t при x=1.5;2;2.5;3 і t=1;2;3.
Для рішення організуємо два цикли: для змінної х зовнішній цикл While, (значення змінної змінюється на 0,5 і цикл For застосувати неможна), для перемінної t внутрішній цикл For, тому що значення перемінної міняється на 1.
var t: integer;
x,y: real;
begin
x:=1.5;
while x=3 do begin
for t:=1 to 3 do begin
y:=2*x+t;
writeln(‘y=’,:1:1,’при x=’,x:3:1,’і t=’,t);
end;
x:=x+0.5;
end;
end.
Питання для контролю.
1. Оператор циклу з параметром і його застосування.
2. Робота оператора циклу з параметром.
3. Змінна циклу, її тип і крок зміни.
4. Який тип неприпустимий для змінної циклу?
5. Застосування в циклі з параметром слів To і Downto.
6. Чи можна змінювати змінну циклу в тілі циклу оператора For?
7. В якому випадку в операторі For можна не ставити операторні дужки?
Тема 12: Оператор циклу з перед- і з постумовою
Оператор циклу з передумовою має загальний вид:
while логічне вираження do
begin
оператори тіла циклу
end;
де While (доки) і Do (виконувати) службові слова.
Робота оператора. Спочатку обчислюється логічне вираження і, якщо воно приймає значення True, то виконуються оператори тіла циклу, а якщо False , то керування передається на оператор після End.
Значення логічного вираження перевіряється перед кожним виконанням операторів тіла циклу.
Оператори тіла циклу, укладені в операторные дужки, являють собою складений оператор.
При використанні в циклічній частині оператора переходу Goto, що передає керування за межі циклу, можна перервати виконання циклу до його природного завершення.
Якщо в циклічній частині знаходиться лише один оператор, то операторні дужки Begin ... End можна опускати. Оператор циклу прийме вигляд:
while логічне вираження do оператор;
Іноді виникає ситуація, коли логічне вираження правдиве чи неправдиве при будь-яких вхідних у нього параметрах. Таке явище називається тавтологією. При тавтології True оператор зациклиться, при тавтології False – ніколи не виконається. Щоб таке не трапилося, параметри логічного вираження повинні змінюватися в тілі циклу.
Приклад, у якому логічне вираження завжди щире, тобто маємо тавтологію True, при якій оператор зациклиться:
var x: real;
begin
x :=0;
while x<>2 do
begin
writeln (x:6:2);
x:=x+0.3
end
end.
Тавтологія тут виникла через помилку в логічному вираженні: замість x<>2 потрібно було написати x<=2.
Приклад. Обчислити y=x2 при x=2, 4, 6, 8, 10.
var x,y: integer;
begin
x:=2;
while x<=10 do
begin
y:=x*x;
writeln(x:3,y:5);
x:=x+2;
end;
end.
При введенні даних в операторі циклу можна використовувати стандартну функцію EoLn. Вона має значення False поки не натиснута кл.Enter.
Наприклад:
var a,n:integer;
begin
n:=0;
writeln(‘кл.Enter не натиснута і знач. Функції EoLn=’,eoln);
while not eoln do {поки немає кінця рядка, виконувати цикл)
begin
read(a);
n:=n+a;
end;
writeln(‘n=’,n);
writeln(‘кл.Enter натиснута і значення функції EoLn=’,eoln);
end.
У цьому прикладі тіло циклу буде виконуватися доти, поки не буде натиснута кл. Enter, тобто поки при читанні даних не зустрінеться символ кінця рядка. При цьому функція EoLn прийме значення True і цикл припиниться.
Приклад. Підрахувати у введеному рядку кількість символів. Ознакою кінця рядка вважати натискання кл.Enter.
var
simbol: char;{символ введеного рядка}
n: integer;
begin
writeln(‘Введіть довільний рядок:’);
while not eoln do {поки немає кінця рядка, виконувати цикл}
begin
read(simbol);
n:=n+1;
end;
writeln;
writeln(‘У введеному рядку усього’,n’,символів’);
end.
Оператор циклу з постумовою має вид:
repeat
оператори тіла циклу
until логічне вираження;
де Repeat(повторити) і Until(доти) службові слова.
Робота оператора. Спочатку виконуються оператори циклічної частини, а потім перевіряється умова виходу з циклу. Якщо значення логічного вираження False, то виконання циклу повториться. Вихід з циклу здійснюється при правдивому значенні логічного вираження. У зв'язку з тим, що умова перевіряється після виконання циклічної частини, оператори циклу з постумовою завжди виконуються хоча б один раз. Цим оператор циклу з постумовою відрізняється від оператора циклу з передумовою.
Нижня границя операторів тіла циклу чітко позначена словом Until, тому циклічну частину не укладають в операторні дужки Begin...End, але якщо їх і поставити – помилки не буде.
При використанні в циклічній частині оператора переходу Goto, що передає керування за межі циклу, можна перервати виконання циклу до його природного завершення.