Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з...

162
р*ос*д#. Д.М. Шост

Upload: others

Post on 31-Aug-2019

28 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

р*ос*д#.

Д.М. Шост

Page 2: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

j ÿ

Д.М. Шост

ШФОРМАТИКА

TURBO PASCAL

Зошит-конспект 10-11 класи

EXLIBRISA3 АЛОВОЙ

ЭААИНЫТЕРНОПІЛЬ

НАВЧАЛЬНА КНИГА - БОГДАН 2003

Page 3: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

ББК 32.97я2 Ш53

Рецензенти:Василенко Я.П. — ст. викладач кафедри інформатики ТДПУ Кривокульськнй Л.Є. — методист лабораторії природничо-

математичних дисциплін ОІПО

Охороняється законам про авторське право.Жодна частина цього видання не може бути використана чи відтворена

в будь-якому вигляді без дозволу автора чи видавництва.

Ш ост Д.М. Ш 53 Інформатика. Turbo Pascal 10-11 класи. —

Тернопіль: Навчальна книга - Богдан, 2003. — 160 с.

ISBN 966-7224-62-7

Мета даного видання — забезпечити учнів і вчителів цілісним матеріалом з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно до чинної шкільної програми з інформатики.

Статті посібника підібрано таким чином, щоб допомогти учням успішно оволодіти навиками практичного програмування і добитися високих результатів у даній галузі знань.

і Ш Ш А Ш А ?■одтмгШ№ш н,„ГІз ^ д о ф щост д М ̂1997

© Навчальна книга - Богдан, ISBN 966-7224-62-7 макет, художнє оформлення, 2003

Длд учню- W44 -И&і ї ЧіЩі Ш і Ш мт&Лж »

ноосвітніх шкіл та вчителів інформатики.ББК 32.97я2

Page 4: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

л 8,"!. У№|уі*ЙМ|р і б “:п б

ІЇЬКіЛЩОи

ь

і

ПЕРЕДМОВАНа сьогодні р^ітвяй курс “Інформатика“ не забезпечений цілісним сис­

тематизованим навчальним підручником, тому автор поставив собі за мету написати посібник, який би заповнив цю прогалину. Матеріал видання повністю відповідає чинній Програмі для середніх закладів освіти “Основи інформатики і обчислювальної техніки”.

Простота і послідовність викладення тем, використавші значної кількості прикладів, -особливо текстів програм, робить даний посібник дохідливим і доступним. Його можуть з успіхом використати учні шкіл як для самостійного вивчення мсти програмування Паскаль, так і під керівництвом учителя. Вве­дення до посібника розділів 8-11 дає можливість використовувати Його та­кож студентам інститутів, технікумів, училищ, усім, хто має бажання вишити Мову програмування Паскаль.

Матеріал, зібраний і систематизований у даному посібнику, значно полег­шує підготовку учителя: до теми кожного уроку подано теоретичний матеріал, підібрано завдання дам самостійної робот учнів, тести для контролю знань. Це еЖономить час на уроці. Посібник може використовуватись учнями як робочий зошит. Вчителю не потрібно також готувати практичні роботи, оскіль­ки у книзі наведено зразки їх виконання і завдання для учнів у Д варіантах.

Автор

Page 5: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

ОСНОВИ АЛГОРИТМІЗАЦІЇ ТА ПРОГРАМУВАННЯ

% ІНФОРМАЦІЙНА (МАТЕМАТИЧНА) МОДЕЛЬ

1.1 Основні етапи розв’язування прикладної задачі з використанням ЕОМ

Розв'язування задач у будь-якій діяльності — це завжди одержування певних результатів — результатів обчислень, побудови, роботи тощо.

ЕОМ є універсальним пристроєм для розв’язування різноманітних на­вчальних і виробничих задач. їх універсальність полягає у можливості ви­конання практично всіх алгоритмів розв’язування задач у будь-якій предметній діяльності. Необхідним для цього стає опис постановок завдань і методів їх розв’язування мовою математики, а потім вираження їх у формі програм.

Етапи розв'язування задач на ЕОМ:

1. Математична постановка задачі.2. Визначення методів розв’язування.3. Складання сценарію роботи з ЕОМ.4. Конструювання алгоритму.5. Переведення алгоритму у програму.6. Введення і випробування програми.7. Одержання результатів розв’язування.

При постановці задачі необхідно визначити і перелічити всі вихідні дані і дані, які необхідно знайти. Відповісти на запитання: за яких умов можна одержати потрібні результати, а за яких ні? Визначити, які результати будуть вважатися правильними?

На другому етапі необзсідно не тільки вибрати спосіб одержання результатів, а й вибрати оптимальний метод розв'язування задач, який би давав найбільш правильну відповідь. Правильність розв’язування задач на ЕОМ перш за все залежите рід правильності внбрайоро щгесщ розв’язування.

си& щ ж правила введен-цстувачам, реакцію машини

Page 6: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

■Рй®®"““" ' ...............

Інформаційна (математична) модель 5

на вказівки і дані, які вводяться. Сценарії повинні визначати правила роботи користувачів з ЕОМ.

За складеним сценарієм і описом методу складаємо алгоритм розв’язуван­ня задачі.

Програмування (написання програм за наявності алгоритмів) — кодуван­ня алгоритмів вибраною мовою програмування.

Тестування — процес підготовки, виконання програми та аналіз результатів з метою виявлення помилок. Введення і випробування створеної програми здійснюємо за заздалегідь підготовленим планом. Програму виконують на ЕОМ з різними значеннями аргументів, які б забезпечували перевірку всіх можливих умов, при яких може виникнути помилка. Оцінюємо правильність одержаних результатів.

Після закінчення тестування програми виводимо правильні результати на екран монітора або на принтер. На основі отриманих результатів будують таблиці, графіки, аналізують і пояснюють у термінах вихідних даних задачі.

1.2 Поняття інформаційної (математичної) моделі. Побудова моделі

Успішно розв’язувати задачі можна тільки при чіткому і водночас одно­значному визначенні вимог до кінцевих результатів. Розпливчастість і невизначеність формулювань може привести до різного тлумачення умов і, як наслідок — розбіжності в оцінці правильності результатів.

Точні постановки задач — це можливість забезпечити однакове розуміння цих задач різними людьми. Точність визначень і формулювань має бути та­кою, щоб вони'не допускали двозначного тлумачення, а найголовніше, щоб за ними можна було однозначно міркувати, чи є пропоновані розв’язки пра­вильними. Така точність формулювань і тверджень характерна для математи­ки. А оскільки ЕОМ — це математичні пристрої для опрацювання даних, то постановка задач, що розв’язуються обчислювальними машинами, також повинна виражатися у математичній формі.

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

Page 7: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Остей алгоритмЬаці

Математичні постановки задач (формалізація ) — це вимоги, що формуй люються за допомогою математики. Математичні задачі с формалізованим! з самого початку. Для запису їх постановок використовується така форма:

Задача. <Змістовне формулювання>Дано: <Перелік початкових даних>Потрібно: <Перелік потрібного>Зв’язок: <3алежність між потрібним і початковим>При <Умови допустимості початкових даних>

Та чи ійща постановка задачі завжди грунтується на конкретному зміс­товному формулюванні. Із нього пошані бути виділені і перелічені всі вихідні дані і потрібні результати. У математичних постановках задач у розділах *Дано” і “Потрібно” вказують не тільки назви цих величин і об’єктів, а й їхні позначення, що над алі використовуються в описах умов допустимості вихідних даних і в описах зв’язку вихідного з потрібним.

В окремих задачах залежність між потрібним і вихідним, а також умови допустимості можуть виражатися не системами рівнянь, а системами тверд- жень. Строгий запис таких тверджень виконується мовою математичної логіки. Це — перш за все відомості про об’єкти та їхні властивості. Крім цього, твердження можуть вводитися через раніше введені висловлення.

“Зв’язок” — це система рівнянь або тверджень, що зв’язують вихідні і шукані дані. Сюди можуть входити визначення, твердження, формулювання законів тощо. З практичної точки зору “зв’язок” виражає не стільки спосіб розв’язування, скільки спосіб перевірки правильності кінцевих результатів.

Приклад математичної моделіЗадача.Дано:Потрібно:Зв’язок:Метод:

Знайти суму скінченої послідовності заданих чисел, х,, х2, х3, ..., — послідовність чисел, знайти 8 — суму чисел.8 да X, + х2 + X, Х,̂ рекурентне сумування — 8в= 0;

Page 8: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Інформаційна (математична) модель 7

1.3 Запитання, завдання, тести ї' , /Запитання для самоконтролю

1. Перерахуйте основні етапи у складанні програм для розв’язування за­дач на ЕОМ.

2. З чого починається розв’язування задачі?3. Навіщо потрібна постановка задачі?4. Для чого потрібні описи методів розв’язування задач?5. Яку роль відіграють сценарії у процесі розв’язування задач на ЕОМ?6. Які етапи розв’язування задан на ЕОМ виконує людина?7. На якому етапі розв’язування задач використовується ЕОМ?8. Що являє собою математична модель?9. Навіщо потрібна математична постановка задачі?10. Чи завжди виникає необхідність у побудові математичної моделі?11. Що виражає роздої “ Зв’язок “ у математичній постановці прикладної задачі?12. З яких міркувань вибираються обмеження на вихідні дані?

Завдання для самостійного виконання

1. Побудуйте математичну модель для розв’язання задач:

а) визначити час польоту тіла, кинутого вертикально вгору;б) визначити час падіння тіла із заданої висоти;в) визначити період обертання тіла масою ш по колу радіусом Ц.

Page 9: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

8 Основи алгоритмізації

2. АЛГОРИТМИ

2.1 Алгоритми. Властивості алгоритмів. Форми подання алгоритмів. Виконавець алгоритму

АлгоритмиАлгоритм — чітко задана послідовність кроків, які мають бути виконані

для розв’язання завдання.Приклад алгоритму.Задача* Вказати послідовність дій, які необхідно виконати для обчислен­

ня виразу (ах+Ь)х+с при заданих значеннях а, Ь, с, х.Алгоритм можна описати таким чином:1. Помножити а на х2. До отриманого результату додати Ь.3. Отриманий результат помножити на х4. До отриманого результату додати с.

Алгоритм повинен мати такі властивості:1. Масовість* Алгоритм повинен бути застосованим до будь—яких

елементів з множини вихідних даних.2. Визначеність. Операції, які використовуються в алгоритмі, не повинні

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

3. Дискретність. Процес розв’язування алгоритму повинен складатися з окремих завершених операцій, які виконуються послідовно і за скінчений час.

4. Результативність. Виконання послідовності операцій алгоритму по­винно приводити до цілком конкретного результату.

5. Формальність. Будь-який виконавець, здатний сприймати і виконувати вказівки алгоритму (навіть не розуміючи їх змісту), діючи за алгоритмом, може виконати поставлене завдання.Форми подання алгоритмів:

1. словесні;2. словесно-формульні;3. графічні;4. скінчений набір ходів.

Page 10: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Алгоритми 9

При складанні алгоритмів можна поєднувати різні форми подання алгоритмів.Виконавець алгоритму

Виконавцем алгоритму може бути людина, ЕОМ, система людина — ма­шина, верстат — автомат, робот тощо, яких “навчено” виконувати вказівки алгоритму. Якщо виконавцем є деякий автомат, то вираз “виконавця навчено виконувати вказівку” означає, що автомат може виконати задану вказівку автоматично, без зовнішнього втручання.

Сукупність вказівок, які можуть бути виконані виконавцем, називається системою вказівок виконавця.

2.2 Базові структури алгоритмівПри конструюванні алгоритму кожну вказівку можна подати у вигляді

трьох типів простих вказівок, так званих базових алгоритмічних структур: слідування, розгалуження, повторення.

/• Слідування.Вказівка 5 подається у вигляді послідовності двох (або більше) виконуваних

одна за одною простіших вказівок 57, 5 2 , 5л.г ---------------------------------------- -----------------

------І— -51----- -52-------------- -5л — І-------

2. Розгалуження (вибір).Для виконання вказівки 5 треба спочатку визначити, хибне чи істинне

деяке твердження Р. Якщо твердження Р істинне, то виконується вказівка 57 і на цьому вказівка 5 закінчується. Якщо ж твердження Р хибне, то вико­нується вказівка 52 і на цьому виконання вказівки 5 закінчується.

Повне розгалуження.

Page 11: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

10 Основи алгоритмі*

Неповне розгалуження,

3. Повторення. 1Розрізняють два типи циклів — цикл-ПОКИ і цикл-ДО. 1а) У структурі цикл-Поки для виконання вказівки £ спочатку треба ви-І

значити, істинне чи хибне твердження Р. Якщо Р істинне, то виконується] вказівка 51 і знову повертаються до визначення істинності твердження Р. Якщо]

б) У структурі цмкл-ДО спочатку виконується вказівка 5 /, а потім визна­чається істинність твердження Р. Якщо твердження Р хибне, то знову вико­нується вказівка 51 і визначається істинність твердження Р, Якщо ж тверд­ження Р істинне, то виконання вказівки 5 вважається закінченим.

Будь-який алгоритм подається у вигляді лінійної послідовності базових алгоритмічних структур*

Лінійний алгоритм алгоритм, в яшму використовується тільки струк­тура “слідувани*'\

Page 12: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Алгоритми 11

Алгоритм з розгалуженням — алгоритм, а основі якого лежить структу­ра “розгалуження”.

Циклічний алгоритм — алгоритм, в основі якого лежить структура “пов­торення”.

2.3 Метод покрокової деталізації. Конструювання алго­ритмів “зверху донизу"

При використанні методу покрокової деталізації складна задача розбиваєть­ся на ряд білил простих. Для кожної підзадачі складається свій алгоритм. При цьому кожен із додаткових алгоритмів повинен розв’язувати як свою підзадачу, так і стикуватися з іншими додатковими алгоритмами в основному. Ці підза­дачі можуть, у свою чергу, вимагати розбиття на ще більш прості задачі. Про­цес покрокової деталізації закінчується, коли задачі чергового рівня виявля­ються зовсім простими і зрозумілими для кожного виконавця.

Розпишемо виконання методу покрокової деталізації для побудови алго­ритму обчислення площі повної поверхні піраміди, в основі якої лежить квадрат зі стороною а, а бічні ребра мають довжини, А, с, Л, к.

Площа повної поверхні піраміди складається із площі повної бічної по­верхні і площі основи.

Загальний вигляд алгоритму буде таким:ввести значення а9 Ь, с, </, к.

Знайти площу грані (в, Ь, с)Знайти площу грані (а, с, і)Знайти площу грані (в, <#, к)Знайти площу грані (в, к, Ь)Площа піраміди = площа грані (а, Ь, с) + площа грані (в, с, І) + + площа грані (а, і у &) + пловцу грані (в, А, Ь) + а*а.

вивести площу піраміди.У тексті алгоритму чотири рази виконується однакова вказівка обчислення

площі бічної грані піраміди (це трикутник) при різних значеннях сторін. Необхідно чотири рази скористатися формулою Герона для обчислення площі трикутника. Цю частину алгоритму можна оформити у вигляді допоміжного алгоритму. Наш основний алгоритм набере випхяду:

ввести значення а, і , с, й, к. площа (в, Ь9 с, 57) площа (а, с, Л, 52) площа (я, й, к, 55)

Page 13: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

12 Основи алгоритмізаці

площа (а, к, Ь, Б4) площаі =

вивести площа 1Побудуємо допоміжний алгоритм обчислення площі трикутника за фор*]

мулою Герона.р:=(т+п+1)/2;8:=^ц?і(р*(р-т)*(р-п)*(р~1)).

2.4 Навчальна алгоритмічна мова. Правила описання алгоритмів навчальною алгоритмічною мовоюНавчальна алгоритмічна мова.

Спілкування між споживачами інформації здійснюється за допомогою деякої мови.

Мова — це сукупність засобів для фіксації повідомлень і передавання їх від джерела інформації до споживача.

Алгоритмічні мови — мови, призначені для фіксації алгоритмів у вигляді деяких повідомлень і передавання таких повідомлень споживачеві інформації (виконавцеві алгоритму).

Алфавіт алгоритмічної мови — сукупність символів, які дозволяються використовувати при описанні алгоритмів на тій чи Іншій алгоритмічній мові.

Синтаксис алгоритмічної мови — сукупність правил опису алгоритмів на алгоритмічній мові.

Вказівка (команда) — окреме повідомлення про деяку операцію, яку повинна виконати машина.

Алфавіт навчальної алгоритмічної мови включає в себе великі і малі бук­ви українського і латинського алфавітів, цифри десяткової системи числення, спеціальні символи, символи математичних операцій.

Для більш зрозумілого і виразного запису алгоритмів алфавіт алгоритмічної мови доповнено службовими словами.

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

Правила описання алгоритмів навчальною алгоритмічною мовою

Запис алгоритму повинен бути оформленим за такими правилами.У першому рядку записується слово алгоритм або його скорочення до

трьох літер — алг. Далі за цим словом записується назва алгоритму. У дру-

Page 14: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Алгоритми 13

гому рядку записується слово початок або його скорочення — поч. Далі з невеликим відступом у 2—3 проміжки записуються дії, що складають власне алгоритм. Останнім рядком опису алгоритму має бути слово кінець або його скорочення — кін у цій самій позиції, що й слово початок.

Алгоритм, описаний навчальною алгоритмічною мовою, має вигляд: Заголовок алгоритму початок

серія кінець

Заголовок алгоритму — початкова частина запису алгоритму до службо­вого слова початок, яка містить в собі ім’я алгоритму, перелік його аргументів і результатів з зазначенням їх величин.

Серія — послідовність неіменованих вказівок, що виконуються в такому порядку, в якому вони записані.

Заголовок алгоритму має вигляд:

алг ім ’я_алгоритму (список параметрівіз вказанням їх типів)

арг список аргументів рез список результатів

де алг, аргу рез — службові слова.Виділені слова називаються службовими і використовуються при записі

довільного алгоритму.В алгоритмах роботи з величинами після слова початок вказується спи­

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

Тіло алгоритму — частина алгоритму, яка знаходиться між словами по­чаток і кінець.

Структура алгоритму, описана навчальною алгоритмічною мовою, в цілому має вигляд:

алг ім’яалгоритму (список параметрівіз вказанням їх типів)

арг список аргументів рез список результатів

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

серіякінець'

Page 15: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

14 Основи алгоритміЬяг

Основні вказівки НАМБудь-який алгоритм можна описати з використанням вказівок лише трьох'1) вказівок про безумовне виконання деякої операції;2) вказівок про розгалуження;3) вказівок про повторне виконання деякої операції. .

До вказівок першого типу належать вказівки присвоювання ЪАде А — вираз, Y — ім’я результату, := — знак присвоювання, а така

вказівки про виконання алгоритму: ім’й алгоритму (список фактичний параметрів).

Вказівки другого типу записуються у вигляді:

ЯКЩО твердження Р ТО

серія 1 ІНАКШЕ

серія 2ВСЕ

повне розгалуження

ЯКЩО твердження Р ТО

серіяВСЕ

— неповне розгалуження

Узагальненням вказівки розгалуження є вказівка вибір, за допомогою якої описується розгалуження в трьох і більше напрямах:

ВИБІРПРН твердження 1: серія 1 ПРИ твердження 2: серія 2

ПРИ твердження к: серія к ІНАКШЕ серія

ВСЕВказівки третього типу описуються у вигляді:

ПОКИ твердження РПЦ

серіяКЦ

цикл-ПОКИ

Page 16: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

оритми 15

ПОВТОРЮВАТИПЦ

серіяКЦДО твердження Р

цикл-ДО

Використовується також вказівка повторення з параметром

ДЛЯ Ж ВІД А ДО В КРОК Н ПЦ

серіяКЦ

де А, В, Н — вирази, що задають відповідно початкове і кінцеве значення та крок зміни параметра циклу X.

Наприклад.1. Скласти алгоритм пошуку більшого з трьох величин а,Ь,с.

АЛГ більше з трьох АРГ а,Ь,с РЕЗу

ПОЧАТОКЯКЩО а>Ь

ТОу:=а ІНАКШЕ у:=Ь

ВСЕЯКЩО с>у

ТОу:=с ВСЕ

КІНЕЦЬ2, Задано дійсні числа а, Ь (а>1). Обчислити суму членів геометричної

послідовності ар аґ аг ,., із знаменником с (с>1), а(<Ь ,

АЛГ сума_послідовності (ДІЙСН а,Ь,сума)АРГ~і, Ь РЕЗсума

ГІОЧ ДІЙСН с СУМА:=0

Page 17: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

16 Основи алгоритмиа

ПОКИ а<Ь ПЦ

сума:=сума+а а:=с*а

КЦкш

2.5 Величини» Основні характеристики величин Величини

Повідомлення N разом з відповідною йому інформацією 7, яку дістають з правилом — інтерпретацією L (N->1), називають величиною. Інформацію називають значенням величини, а повідомлення N — позначенням величи ни. При цьому говорять, що позначенню N відповідає значення І.

Величина — об’єкт, який має ім’я і значення конкретного типу.Операнд — об’єкт алгоритму, над яким виконується деяка вказівка.

Основні характеристики величинТип величини визначається операціями, які можна над ними виконувати. Значення величини певного типу називають значенням того самого типу.

Для найбільш уживаних типів величин введено позначення типів, які назива­ють ідентифікаторами типів:

ЦІЛ — цілочислові величини;HAT — натуральні числа;РАЦ — раціональні числові величини;ДІЙСН — дійсні числові величини;КОМПЛ — комплексно-числові величини;ЛОГ — логічні величини;ЛІТ — величини, значення яких є слова або тексти;БІТ — величини, значення яких подаються двійковими словами деякої

фіксованої довжини.Для посилання на величину використовуються імена величин. Для позна­

чення імен використовують ідентифікатори.Ідентифікатор — ім’я величини.Постійна величина (стала або константа) — величина, яка в будь-які

моменти часу може набувати тільки одаого й того самого значення.Змінна величина — величина, яка в різні моменти часу може набувати

різних значень з деякої множини допустимих значень.

Page 18: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Алгоритми 17

У кожному алгоритмі, крім самих операцій, які необхідно виконати, слід вказати також об’єкти, над яким виконуватимуться ці операції. Імена цих об’єктів називають параметрами. При описуванні алгоритму використовуються формальні (неконкретні) параметри. Виконуються алгоритми над фактични­ми (конкретними) параметрами.

Аргумент алгоритму — параметр, значення якого слід вказати перед початком виконання алгоритму.

Результат алгоритму — параметр, значення якого дістають в результаті виконання алгоритму.

Окремим випадком алгоритму є вираз.Вираз — це текст (повідомлення), який описує правило (алгоритм) обчис­

лення одного значення деякого типу.

2.6 Вказівка присвоюванняВказівка присвоювання призначена для надання змінній нового значення. Загальний вигляд оператора присвоювання: ім ’я змінної := арифметичний вираз;Знак := читається “присвоїти”.У кінці запису оператора Паскаля ставиться крапка з комою.При виконанні оператора присвоювання обчислюється значення арифме­

тичного виразу, що стоїть у правій частині. Одержаний результат присво­юється змінній, що записана зліва від знака присвоювання.

Приклад вказівки присвоювання: х:=5; (змінній х присвоїти значення 5) а:-Ь+с (змінній а присвоїти суму значень змінних Ь і с).До типів змінної ліворуч і арифметичного виразу праворуч від знака при­

своєння існують обмеження:1. Якщо змінна ліворуч — дійсного типу, то арифметичний вираз можке

бути як цілого, так і дійсного типу.2. Якщо змінна ліворуч — цілого типу, то арифметичний вираз може

бути тільки цілого типу.Це означає, що можна, наприклад, дійсній змінній присвоїти ціле значен-

! ня. У пам’яті комп’ютера воно буде перетворено на дійсний тип.

Page 19: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

18 Основи алгоритмізт

2*7 Запитання, завдання, тести Запитання для самоконтролю:

1. Що таке алгоритм?2. Що таке змінні в алгоритмах?3. Що таке константи в алгоритмах?4. Які основні властивості алгоритмів?5. Які існують основні форми подання алгоритмів?6. Хто може бути виконавцем алгоритму?7. Чим викликано існування багатьох способів опису алгоритмів?8. Назвіть базові структури алгоритмів.9. Як записується і використовується структура “слідування”?10. Як записується і використовується структура “розгалуження”?11. Як записується і використовується структура “повторення” (цикл*

ПОКИ)?12. Як записується і використовується структура “повторення” (цикл-ДО)?13. Для чого необхідна алгоритмічна мова?14. З чого складається алгоритмічна мова?15. З чого складається алфавіт алгоритмічної мови?16. Які правила опису алгоритмів НАМ?17. Яка структура алгоритму, записаного на НАМ?18. Які основні вказівки використовуються в НАМ?19. Як записується і виконується вказівка безумовного виконання?20. Як записується і виконується вказівка розгалуження?21. Як записується і виконується вказівка повторення?22. Що таке величина?23. Які існують типи величин?24. Які існують види величин?25. Що називається аргументом алгоритму?26. Що називається результатом алгоритму?27. Як записується і виконується вказівка присвоювання?

Завдання для самостійного виконання1. Записати в словесній формі алгоритми:а) Знаходження остачі від ділення числа а на число Ь;б) Розклад числа N на прості множники;в) Перевірки ознаки подільності даного числа а на 3;г) Знайти найбільший спільний дільник двох натуральних чисел а і Ь.

Page 20: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Алгоритми 19

2. Перерахувати всі службові слова, які використовуються:а) у вказівці розгалуження

б) у вказівці повторення

3. Що виконає виконавець алгоритму?

АЛГ одягнутися по погоді взимку ПОЧ

ЯКЩО на вулиці температура нижча -10 С ТО надіти шубу ІНАКШЕ надіти куртку

ВСЕКІН

якщо на вулиці:а) -15°С __________ _ _ _ _______ ___________________ .б) +20°С______________ ___________ _____________________ __в) -10°С______________________ ._________ _______Запишіть даний алгоритм, враховуючи, що гірй температурі +10°С куртку

надівати не потрібно.

4. Скласти алгортьі обчислення ¥ за формулою їЦ5ж-2Х#+4).5. Скласти алгоритм обчислення ¥ за формулою

дс+2,якщо;г<=5,100 , якщо д£>5.

6. Скласти алгоритм знаходження найбільшого з трьох величин а,Ь,с.7. Скласти алгоритм пофарбування підлоги, яка зроблена з 30 дошбіс.

Тести1. Вказати, які з наведених нижче властивостей, повинен мати алгоритм:а) масовість; г) циклічність;б) повнота; д) результативність;в) визначеність; е) формальність;г) дискретність; €) розгалуженість.

Відповідь:

[

Page 21: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

20 Основи алгоритмі)

2. Чи можна використовувати в описі алгоритмів твердження? “Порівняти два числа а і V9Відповідь^так, ні):___________ .___________________________ ___3. Чи може автоматичний пристрій бути виконавцем алгоритму? Відповідь(тш, ні):_____________________________ __________ __

4. Чи правильне твердження: “При виконанні лінійного алгоритму спочі ку виконується вказівка 52, а потім 57”?

Відповідь(так, ні):_____ _____________________________________

5* Чи правильне твердження: “При виконанні вказівки розгалуження має значення чи твердження Р є істинним чи хибним”?

Відповідь(так, ні):___________________________ ______________

б. Запишіть порядок виконання вказівки розгалуження:а) Виконати вказівку 51;б) Виконати вказівку 52;в) Визначити, істинне чи хибне твердження Р ?г) Закінчити виконувати вказівку 5 при умові, що:

1) твердження Р істинне;2) твердження Р хибне.

Відповідь

“При виконанні вказівки повторення, цикл-ПОКИ, спочатку виконується вказівка 5 /, а потім перевіряється на істинність чи хибність твердження

Відповідь(так, ні):______________________ ;__________ 4__________І

8. Чи правильне твердження: “При виконанні вказівки повторення, цикл-] ДО, спочатку перевіряється на істинність чи хибність твердження Р, а потімі виконується вказівка 5 /” ? ]

Відповідь^так, ні):______________________ в______________ _________ |

9- Запишіть порядок виконання вказівки повторення, цикл-ПОКШ і допишіть пропущене слово — істинне чи хибне.

а) Виконати вказівку 57, якщо твердження Р ___________ Аб) Визначити, хибне чи істинне твердження Р;в) Повернутись до визначення істинності твердження Р;

і ) ________________________________

2) __________________7. Чи правильне твердження:

Page 22: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

оритми 21

г) Закінчити виконання вказівки повторення, якщо твердження Р хибне.

Відповідь:__________________________ «____________________ __

10. Запишіть порядок виконання вказівки повторення, цикл-ДО і допишіть опущене слово — істинне чи хибнеа) Виконати твердження 5 /;б) Визначити, істинне чи хибне твердження Р;в) Повернутись до виконання вказівки $1,

якщо твердження Рг) Закінчити виконання вказівки 5,

якщо твердження Р

Відповідь:

12. З наведених значень виберіть допустимі значення для величин:

11. Вкажіть тип величини, якщо її значення дорівнює:а) 2 5 _____________ _б)5,5 в)_‘так’ _________________

2) дійсного типу'3) літерного типу

1) цілого типуа) 2б) 4.5в) -6г) ‘два’Д ) 15,8 е) ‘24’

13. Визначіть тип даних для величин:а) маса людини_____ ____________б) кількість учнів у * Є£ів) назва книги___ __

Page 23: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

МОВА ПРОГРАМУВАННЯ ПАСКАЛЬ

3. ПРОГРАМА. МОВА ПРОГРАМУВАННЯ

3.1 Поняття програми. Мова програмування. Переклад програм з однієї мови на іншу. Поняття про транслятори, систему програмування

Мова програмування Паскаль є однією з найбільш поширених мов про грамування. Вона була створена в 1971 році швейцарським професороцН. Віртом, як засіб для навчання програмування. Завдяки принципам струк­турного програмування і покрокової деталізації, програми мовою Паскаль більш зрозумілі, ніж програми, записані на інших мовах.

Мова Паскаль є структурованою мовою програмування, оскільки викори­стовує тільки 4 основні структури:

1. Вказівки безумовного виконання.2. Вказівки розгалуження.3. Вказівки повторення.4. Виділення допоміжних програм.Головною відмінністю мови Паскаль від мов програмування Бейсік, Фор­

тран та інших неструкіурних мов програмування є деяке обмеження на ви­користання вказівок переходу. Мова програмування Сі є також струюурною мовою програмування.

Весь матеріал з мови Turbo Pascal викладений стосовно версії Turbo Pascal 7.0 фірми Borland International. В новій версії Turbo Pascal 7.0 є деякі допов­нення до попередніх версій, що практично зрівняло її можливості з мовою програмування Сі.

Програма — впорядкована послідовність дій для ЕОМ, виконання якої реалізує алгоритм розв’язку будь-якої задачі.

Транслятор — програма, яка перекладає програму з однієї мови програму­вання на іншу (здебільшого на мову машинних команд).

Інтерпретатор — програма, яка аналізує і відразу виконує тексти інших програм.

Транслятор (компілятор), на відміну від інтерпретатора, не виконує про­граму, а тільки перекладає її з однієї мови на іншу.

Page 24: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

/

програма. Мова програмування ‘ 23

Система програмування — частина базового програмного забезпечен­ая, яка підтримує процес програмування на ЕОМ.

Система програмування містить в своєму складі: редактор для складання програм і введення їх в ЕОМ; інтерпретатор для безпосереднього виконання програм на вхідній мові програмування системи програмування; транслятор ; 'або компілятор для перекладу програм з вхідної мови програмування на і машинну мову та інші програми.

Система програмування Turbo Pascal об’єднує в собі текстовий редактор, компілятор, компоновник, відлагоджувач та систему підказки.

Система програмування Turbo Pascal має в своєму складі багато файлів. Головні з них: І

1) Turbo.exe — підтримує роботу в турбосередовищі; І2) Turbo.tpl — вміщує бібліотеку підпрограм; 13) Turbo.hlp — забезпечує виведення на екран підказки по окремих режи- |

мах роботи, конструкціях програму тошо. .....т ____________________ ]Дані файли поміщені в каталог ТР70, який буде використовуватись в по­

дальшій роботі.

3.2 Поняття про середовище програмування Itorbo PascalЗапуск програм на виконання

Щоб ввійти в середовище Turbo Pascal, потрібно:1. Ввійти в каталог системи програмування. (Наприклад: ТР70);2. Виконати командний файл turbo.exe.На екрані з’явиться головне меню системи.У верхньому рядку подані всі команди головного меню, а в нижньому —

рядок статусу, в якому перелічені імена функціональних клавіш, призначених для виконання деяких операцій в конкретній ситуації.

Щоб перейти в головне меню, потрібно натиснути клавішу F10. Щоб вийти з головного меню і повернутись в редактор тексту — натиснути клавішу Esc.

Виконати команду означає: з допомогою клавіш управління курсором ви­ставити курсор на потрібну команду і натиснути клавішу Enter. (Виконати команду можна ще іншими способами: з допомогою маніпулятора “миша” або натисканням комбінацій клавіш Alt + та буква, яка виділена в назві ко­манди).

Кожна команда головного меню має один або декілька (вкладених одне в одне) підменю.

Page 25: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

24 Мова програмування Паск

Типовий порядок створення нового файла:— Ввійти в головне меню.— Виконати команду File.— Вибрати і виконати команду New. На екрані з’явиться порожнє вікно р дактора з умовною назвою Noname.pas.— Рядок зг рядком набирати текст програми. В кінці кожного рядка нати кують KJiSuikny Enter.— Виконати програму. Натиснути комбінацію клавіш CTRL+F9. Можи використати ще 2-ий спосіб. Ввійти в головне меню і виконати команду Run— Виправити при необхідності помилки.— Після виправлення помилок знову виконати програму.— Переглянути отримані результати, натиснувши комбінацію клавіш ALT + F5.— Записати текст програми в файл на диск. Ввійти в головне меню. Вико­нати команду File. Виконати команду Save. Ввести ім’я файлу (наприклад CLAgS) і натиснути Enter. Програма буде записана на диску в файлі — Class.pas Щоб пришвидшити процес запису програми в файл на диск можна натиснути клавішу F2 і ввести ім’я файла. Натиснути Enter.

Порядок редагування існуючого раз-файла:— Ввійти в головне меню.

Вибрати і виконати команду File.— Вибрати і виконати команду Open. Можна ще натиснути клавішу F3.— Натиснути клавішу ТАВ, вибрати з таблиці ім’я потрібного файла і натис­нути Enter. Можна ще в рядку Name набрати ім’я необхідного файла і натис­нути Enter.— Внести необхідні доповнення до програми, виконати її і виправити помилки.— Записати програму в файл на диск, використавши команду Save. Якщо необхідно записати програму в файл на диск під новим іменем, то замість команди Save потрібно вибрати команду Save as.

Створення виконуваного exe-файла.— Ввійти в головне меню, вибрати і виконати команду Compile.— Вибрати і виконати команду Destination-Memory, яка після натискання на клавішу Enter зміниться на Destination-Disk.— Натиснути комбінацію клавіш ALT + F9.

Page 26: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Програма. Мова програмування 25

Текстовий редактор версії Turbo Pascal 7.0 дозволяє обробляти файли довжиною до 1Мб.

Редактор дозволяє виконувати різні операції з декількома файлами. Кожен з них розміщується у своєму вікні редактора. В верхній частині вікна запи­сано ім’я файла, справа від нього — номер вікна. При завантаженні в редак­тор ( при відкритті ) наступного файла він потрапляє у нове вікно. Щоб перейти з вікна у вікно, необхідно натиснути комбінацію клавіш — Alt+N, де N — номер вікна. Можна ще для цього натиснути клавішу F6.

Щоб вийти з середовища Turbo Pascal, необхідно натиснути комбінацію клавіш ALT+X.

3.3 Практична робота №1ТЕМА: Робота в середовищі програмування. Запуск програм на виконання. МЕТА: Ознайомитись з середовищем програмування Паскаль. Навчитись

зчитувати, редагувати, записувати та виконувати програми.

ЗАВДАННЯ ДЛЯ ПРАКТИЧНОЇ РОБОТИ:1. Вивчити теоретичний матеріал.2. Ввійти в середовище програмування.3. Познайомитись з середовищем програмування.4. Познайомитись з редактором тексту програмного середовища.5. Зчитати з диска програму, яка записана в файлі class.pas.6. Виконати дану програму.7. Переглянути отримані результати.8. Записати дану програму в файл на диск під іншим іменем.9. Створити виконуваний exe-файл.10. Вийти з середовища програмування.11. Виконати в системі DOS записаний exe-файл.12. Оформити звіт з практичної роботи.У звіті з практичної роботи описати призначення і порядок виконання всіх вказівок, які використовувалися в роботі.

3.4 Запитання, завдання, тести Запитання для самоконтролю1. Для чого призначена мова програмування Паскаль?2. Що таке транслятор?3. Що таке інтерпретатор?

Page 27: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

26 Мова програмування Ласкал

4. З чого складається система програмування?5. Як ввійти в середовище програмування Turbo Pascal?6. Як ввійти і вийти з головного меню середовища програмування Паскаль7. Що означає термін “виконати команду”? |8. Який порядок створення програми і запису її в файл?9. Як відредагувати програму, яка записана в файл на диск?10. Як вийти з середовища програмування? І

Завдання для самостійного виконання1) Ввійти в середовище програмування Turbo Pascal.2) В текстовому редакторі середовища програмування Turbo Pascal ввести програму PROBA. 1

Program PROBA; 1ConstA=5;

М § jvarS:integer; j

begin IS:=A+B;writeln(‘S==’,S);

end;3) Виконати дану програму.4) Переглянути результати виконання даної програми.5) Записати програму в файл на диск під іменем Fproba.6) Вийти з середовища програмування Turbo Pascal.7) Переконатись у наявності на диску файла Fproba.pas.

Тести1. Вибрати правильну відповідь.

З допомогою команди SAVE можна_____________ _______________а) Прочитати програму з файла на диску.б) Записати програму в файл на диск.в) Відредагувати проіраму.г) Відкрити вікно для створення нового файла.

2* Встановити відповідність між назвами команд меню системи програму­вання Pascal та результатами їх дії.

ї) Open — Л----------- а) Записати програму в файл на диск2) Save - . . б) Виконати програму

Page 28: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Програма. Мова програмування 27

3) Save as в) Записати програму в файл на диск

4) Runпід новим іменем

г) Відкрити вікно для створеннянового файла

3. Вказати порядок зчитування і редагування програми з файла на диску.а) Внести необхідні доповнення до програми, виконати її і виправити

помилки.б) Записати програму в файл на диск, використавши команду SAVE.в) Вибрати і активізувати команду FILE.г) Вибрати і активізувати команду OPEN.ґ) Ввійти в головне меню.д) Натиснути клавішу ТАВ, вибрати з таблиці ім’я потрібного файлу і

натиснути ENTER.Відповідь___________ £______________________

4. Вибрати правильну відповідь.1) Щоб виконати програму, потрібно натиснути комбінацію клавіш__2) Щоб переглянути результати виконання програми, потрібно натиснути

комбінацію клавіш________ __________________________________3) Щоб вийти з середовища програмування Turbo Pascal, потрібно натис­

нути комбінацію клавіш_________________________________________

3.5 Алфавіт мови програмування. Величини та їх опис мовою програмування. Змінні та константиАлфавіт

Алфавіт мови програмування Turbo Pascal включає в себе:1. 26 великих і малих букв латинського алфавіту, знак підкреслення.2. Десяткові цифри 0, 1, 93. Спеціальні символи:

+ — плюс @ — комерційне а-----мінус * — крапка* — зірочка , — кома/ — дробова риска : — двокрапка=— дорівнює ; — крапка з комою

а) Alt+Xб) Ctrl+F9

в) АЙ+FSг) Alt+F9

Page 29: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

28 Мова програмування Паска

> — більше< — менше [] — квадратні дужкиО — круглі дужки {} — фігурні дужки

4 — апостроф# — номер$ — знак грошової одиниці Л — тильда— проміжок (не має позначення)

Проміжок — незаповнена позиція в тексті. Можна сказати, що це невидні мий, але такий, що сприймається ЕОМ символ, який займає в тексті о; позицію. Позначається він для сприймання його користувачем так -

4. Комбінації спеціальних символів утворюють складені символи.:=— присвоєння (..) — альтернатива { }< > — не дорівнює <= — менше або рівне.. — діапазон значень >= — більше або рівне(..) — альтернатива [ ]

5. Службові (Зарезервовані) словаabsolute end inline procedureand external interface programarray file interrupt recordbegin for label repeat .case forward mod setconst function nil shldiv goto not shrdo if of stringdownto implementation 0 thenelse in packed toobject virtual type unituntil uses var whilewith xor constructor destructor

Службові слова мають раз і назавжди визначену форму запису і змісті

Константи і змінніКонстантами називають величини, значений яких встановлені в описовій

частині програми і в процесі виконання програми не змінюються.Для визначення констант служить службове слово CONST.Формат: Const <ідентифікатор> = <значення константи>;

Page 30: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Програма. Мова програмування 29

Н іЩРШЕЛад,.CONST

Мах= 1000;М Ь А

Зарезервовані константи:

Ідентифікатор Тип Значення ОписTRUE boolean true “Істина”FALSE boolean False “Хибно”MAXINT integer 32767 Макс. ціле

Константам в програмі не можна присвоювати нові значення після того, як вони були описані. ЕОМ сама визначає тип констант по їх значенню.

Змінними називають величини, значення яких змінюється в процесі вико­нання програми.

Для опису змінних використовується службове слово VAR.Формат:

VAR<список ідентифікаторів>: <тип>;

Наприклад.VAR

Suml, Sum2:REAL;Змінна повинна бути описана в програмі тільки один раз і належати тільки

до одного типу.

3.6 Запитання, завдання, тести Запитання для самоконтролю:1. Які величини називаються константами?2. Як описуються в програмі константи? ;3. Які величини називаються змінними?4. Як описуються в програмі змінні величини?

Завдання для самостійного виконання

1* Опишіть у вигляді константи:а) число учнів у вашому класі;б) число уроків у вівторок.

Page 31: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

зо Мова програмування Пас

2. Опишіть змінні а) хі, х2 — корені квадратного рівняння;б) N. О — кількість учнів у класі і оцінки, які вони сьогодні отримали,

1, Які з перерахованих нижче груп знаків використовуються в алфавіті моя програмування: . 1 |

а) римські цифри; іб) латинські великі букви;в) українські букви; ' Іг) арабські цифри; ґ) російські букви;д) малі латинські букви;е) проміжок;є) знак підкресленняВикористовуються_____________________________________ _______Не використовуються__________________________________________

2. Вкажіть, які приклади опису змінних записані правильно, а які ні І чому'

3.7 Ідентифікатори величин. Типи величин

ІдентифікаториДля позначення констант, змінних, типів, процедур, функцій, файлів

і програм використовують імена (ідентифікатори).

Правила запису ідентифікаторів:1. Ідентифікатори починаються тільки з букви або знаку підкреслення

(виняток складають мітки, які можуть починатися з букви і цифри).2. Ідентифікатор може складатися з букв, цифр і знаку підкреслення.

б)

Тести

а) Уаг А,В,СД):геаі;б) Уаг А,В,С;Б:геа1;

в) Уаг Х,У,2:шіе£ег;г) Уаг Х,У,А,В:геа1;

Х Л ^ й ^ е г ;Правильні:

С,Х,0:ітедег; Неправильні: ___

Page 32: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Програма. Мова програмування 31

3. Між двома ідентифікаторами повинен бути хоча б один проміжок.4. Максимальна довжина ідентифікатора 127 символів, але ЕОМ розрізняє

тільки перші 63 символи.5. Ідентифікатор не повинен співпадати за написанням ні з одним зі служ­

бових слів.6. Великі і малі букви в ідентифікаторах не розрізняються.

Означення типу данихТип — це множина значень однакової природи разом із набором опе­

рацій, які над ними виконуються.Кожна змінна повинна бути описана (один і тільки один раз) на початку

програми після слова VAR. При цьому вказується тип змінної. Програміст сам вибирає потрібний йому тип залежно від можливих значень змінної (з урахуванням діапазону даних та розміру пам’яті, яка виділяється трансля­тором під окрему змінну).

Скалярні /прості/ типи даних Цілі або цілочисельні типи

Тип Діапазон

byte Q .. 255shortint -128 .. 127integer -32768 .. 32767word ■ 0 .... 65535 ( О М | i f a ;&ЫЛч ylongint -2,147,483,648 .. 2147483647

WJOt

Наприклад.VAR

xl,x2:integer; yl :word;

Необхідно відзначити, що, при виході значень даних цілого типу за вка­заний діапазон, помилки виконання програми не виникає, але результат при цьому буде неправильним.

Наприклад, при виконанні додавання чисел 32767+1 отримаємо результат -32768.

Page 33: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

32 Мова програмування Паска

Дійсні типи і

Тип Діапазон 1

real 2.9*10E-39 .. 1.7*10E38 1singl 1.5*10E-45 .. 3.4*10E38 1double 5.0*10E-324 1.7*10E308 1extended 1.9*10E-4951 .. 1.U10E4932 1comp -2E+63+1 ..'2E+63-1 1longint /r-2147483648..2147483647 |Наприклад.

VarSUMMA: teal;BETA: double;

Літерний (символьний) тип

Тип•

Діапазон і

char кодова таблиця ПЕОМ |

Цщткдад*Var

LETrchar;

Булевий (логічний) тип

Тип Діапазон

boolean True, False

Наприклад.Var

БД: boolean;

Прості нестандартні типи даних (Типи користувача)Перелічувальний тип

Перелічувальний тип задається безпосереднім перелічуванням імен всіх] значень, які можуть приймати змінні даного типу. Окремі значення запису-] ються через кому, а весь список береться в круглі дужки.

Формат:Туре

<ім’я типу>=<значення1, значення2,значення^;

Page 34: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

програма. Мова програмування 33

Var<ідентифікатор,..>:<ім’я типу>;

Наприклад.Туре

SEASON = (Winter, Spring, Summer, Autumn);Var

PORAJROKY: SEASON;

Означення типу і опис змінних можгіа замінити тільки одним описом змінних. Наведений вище приклад опису змінних можна записати так:

Var:PORAJROKY: (Winter, Spring, Summer, Autumn);

Імена всередині круглих дужок є константами даного перелічувального типу і відповідають всім вимогам для звичайних констант.

Вирази і константи допустимого типу використовуються у вказівках роз­галуження, вибору та повторення.

Операції відношення і логічні операції допустимі для значень перелічування одного і того ж типу. Впорядкування здійснюється за номером елемента в описі типу.

Нумерація значень елементів перелічувального типу розпочинається з 0.Для роботи з даними перелічувального типу можна застосовувати

стандартні функції: Pred, Succ, Ord. (Див. п.4.3 літерний тип).

Обмежені (інтервальні) типиІнтервальні типи дозволяють задавати дві константи, які визначають границі

діапазону значень для даної змінної.Обидві константи повинні належати одному з стандартних типів (крім

типу Real). Значення першої константи повинно бути обов’язково менше за значення наступної.

Формат:Туре

сім’я тшіу>=<константа1. .константа2>;Var

<ідентифікагор,,..>:<ім’я типу>;

Page 35: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

34 Мова програмування Пас.

Нярйв ш д.Туре

CLASS=l..ll;Var

MCLASS,STCLASS: CLASS;Можна визначити інтервальний тип і більш універсальним способом,

давши границі діапазону не значеннями констант, а їх іменами. Наприклад.

ConstМ№Ф=1;МАХ=11;

ТуреCLASS=MIN..MAX;

VarMCLASS.STCLASS: CLASS;

Структуровані (складеш) типи даних.Рядковий тип

Рядок — це послідовність символів кодової таблиці ЕОМ.Для опису даного рядкового типу використовується ідентифікатор Str

після якого в квадратних дужках записується значення максимально долу мої довжини рядка даного типу. Якщо це значення не вказується, то довжи рядка автоматично дорівнює 255 байт.

Наприклад.Var

ST2,ST3:string[20];

Інші типи даних -В мові Паскаль використовуються ще й інші струкіуровані типи дай;

масиви, множини, записи, файли, процедурні типи, об’єкти. Всі вони п бують окремого детального вивчення.

3.8. Запитання, завдання, тестиЗапитання для самоконтролю:

1. Які основні групи символів складають алфавіт мови Паскаль?2. Які правила запису ідентифікаторів?3. Які скалярні типи даних використовуються в Паскалі?4. Як описуються дані цілого типу?5. Як описуються даві дійсного типу?

Page 36: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

J

Ірограма. Мова програмування та аш

6. Як описуються дані літерного типу?7. Як описуються дані булевого типу?8. Які існують прості нестандартні типи даних?9. Як описується перелічувальний тип?10. Як описується інтервальний тип?11. Як описуються дані рядкового типу?

І Завдання для самостійного виконанняІ. Складіть усі можливі ідентифікатори з симовлів X, V, 2.

2. Вкажіть тип записаних слів (я -— ідентифікатори, б — службові слова, в -»- набір символів).

а) CosX ________б) M od________ _______ _в) Pensil_______Г) А*В ______ __________ґ) АВД) Apple

е) Cos(x)____є) 10ÖG _____ж) Паскаль.. .....з) Pascal_____ іa) Turbo Pascal і) A1ÖÖ______

3. Для слів з лівого стовпчика виберіть правильну назву І правого стовйчика:1) Abs(x) ■_______ _ _ а) ідентифікатор;2) Absx____ - _... п,.,.. б) службові слова;3) lGrivnij__ '■ _____ _ в) набір символів.4) Когопа— -------- і— — — -5) P*R .. .....6) ІВ М _ _______ - -

4. Вкажіть тин констант і змінних:а) 1996 ................ . . .......... .. ’ г)Ш Ш ... ,Ц Я ________ 1 Г) ‘МОУВ’ - ....... ... ... .в) True і .., ■ ■ _д) False___„— _____ _____________ _)

5. Опишпі змінні:а) K,LC,D — я* величини Цілого тМпу;б) ВС,А — дійсної« типу;в) Z,Y — літерного тйпу;г) V,P — булевого типуа) ___ !-------- і------------ ®) ------------- *--- -б) — - Ш —----- ,----------------- — —~

Page 37: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

36 Мова програмування Пасщ

Тести1. Які ідентифікатори, складені із символів А, В, С, є правильними, а неправильними і чому?

а) аЬ5 г) а5Ьб) 5аЬ ґ) Ь5ав) Ьа5 д) 5Ьа

Правильні:__________________ Неправильні:_______________

2. Які з наведених нижче ідентифікаторів є правильними, а які неправильк ми і чому?

а) Alfa д) Arctan(x)б) Ручка е) 9*Св) Windows с) 9Сг) Table ж) С9 ґ) Red pensil з) Class

Правильні:__________________ Неправильні:____________; ____3. З наведених нижче значень виберіть допустимі значення для величин

1) Цілого типу______________ 4) Булевого типу_______.____2) Дійсного типу . 5) Рядкового типу ______3) Літерного типу_____ ■

а) -8.5; б) 10; в) Тгие; г) 5.4; г) чотири; д) R; е) -4

4. Визначіть тип змінних для величина) Ціна книжки__________________________________ -б) Кількість учнів у класіг) Ім’я учня___________

5. Для величини оцінка виберіть допустимі значення

а) 2 в) чотириб) 4.5 г) 4

3.9 Вказівки введення й виведення. Вказівка присвоюванняВказівка присвоювання

Вказівка присвоювання має вигляд сім’я змінної>:=свираз>

Page 38: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

програма. Мова програмування 37

A?43+QALFA.*=6*I>,ZI—12;

Змінна і вираз повинні бути одного типу. Виняток становить випадок ійсної змінної, коли вираз може бути і цілого типу.

Наприклад,Var

A:real;B,C:integer;

begin

A?=ö+Q

end.Виконується вказівка присвоювання таким чином: спочатку обчислюється

значення виразу в правій частині вказівки присвоювання і це значення при­своюється змінній, яка записана в лівій частині даної вказівки.

Вказівка введення даних

Загальний вигляд вказівок введення даних з клавіатури:

Read(cnncoK);Readln(cimcoK);

Наприклад.Read(X,Y,Z);Readln(X,Y,Z);

В списку перелічуються через кому імена змінних, значення яких вво­диться з клавіатури.

Після, введення значення однієї змінної натискується клавіша Enter. Потім вводиться значення другої змінної і знову натискується клавіша Enter. І так повторюється виконання дій до тих пір, поки не буде введено значення всіх змінних.

Можна ще записати всі значення змінних в одному рядку, відділивши їх одне від одного проміжками (але не комами) і потім натиснути клавішу Enter.

Між вказівками Read і Readln є деяка різниця.

Page 39: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

38 Мова програмування ПатіФ м т т т * т т т . т * м т т т п я т ф т * т т я т * т ш т т ш » . ш » т т я літи ■ т т х т д и т т я т і

іПісля виконання вказівки Read курсор залишиться в цьому ж рядку. Під

виконання вказівки Readln буде зроблено перехід у наступний рядок. \■ іВказівка виведення даних І

щВиведення даних виконується вказівками Write і Writela. іЗагальний вигляд цих вказівок: 1

■ІWrite(cnHCOK); 1Writeln(cnHcoK); 1

Нщшшд,Write(X,Y,Z);Writeln(X);Writeln(Y);Writeln(Z);

Y сциску перелічуються через кому імена змінних, вирази тіа текстов константи. Якщо у списку є вираз, то він попередньо обчислюється, а вжк потім результат виводиться на екран.

Наприклад,write(X,X+Y,Z);

Між вказівками Write і Writeln є деяка різниця. її можна продемонструва ти прикладами.

При виконанні вказівки Write значення змінних X,Y,Z будуть виводитися в одному рядку почергово, так як вони записані. 1

При виконанні вказівки Writeln значення кожної змінної X,Y,Z будуть: виводитися в окремих рядках. Тобто, після виведення значення змінно! Xj буде зроблено перехід у наступний рядок і т. п. * і

23 12 8 {Виведення даних з допомогою вказівки Write}23 ~12 {Виведення даних з допомогою вказівки Writeln}8 JДля зручності виведення даних користуються своєрідними підказками

користувача (текстовими константами). і

Writefo(‘X=’)X);

Page 40: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

рограма. Мова програмування 39

Writeln(‘Y=\Y);Writeln(‘;&=’,Z);

На екран буде виведено результат:ХЗ Y=42 Ш

Як бачимо з прикладу, текстові константи (‘X - , ‘Y=’, ‘Z=’) або підказки корисіу- вача повинні з двох боків братися в лапки і відділятися від змінної комою.

Для зручності введення даних користуються поєднанням вказівок Read і Write.

Наприклад.

Write(‘BBefliTb значення X: ‘);Readln(X);WriteOBeefliTb значення Y: *J|Readln(Y);Write(‘Bвeдiть значення Z: *);Readln(Z);

Загальний вигляд послідовного виконання даних вказівок:Введіть значення X: 23 Введіть значення Y: 12 Введіть значення Z: 8

Друкування результатів за допомогою принтера в цілому співпадає з ви­веденням даних на екран, тільки у вказівках Write або Writeln треба писати ім’я файла1 Lst і в розділі Uses записати ім’я модуля2 Printer.

Наприклад.Uses Crt, Printer;

begin

ч в д д о к з д

end.‘Файл — це впорядкований набір однотипних записів, які зберігаються на

носіях інформації під одним іменем.2Модуль — Див. п. SJ

Page 41: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

40 Мова програмування І

Існує ще один спосіб керуванням виведення інформації. Можна вказш ширину поля для кожного елемента виведення, форму запису числових з Я чень. Здійснюється це з допомогою двох цілочисельних величин, які запив ються у вказівці Write після відповідного елементу виведення і відділяютш від нього і між собою двокрапкою — . щ

Наприклад. 1

Write(Xl :3:2,Х2:4:1) 1Перша величина вказує мінімальну ширину поля, яка відводиться д і

даного елемента виведення (для XI — відводиться 3 позиції, для Х2 4 4 позиції). Якщо елементу виведення необхідно меншу кількість позицій, ц перші незайняті позиції заповнюються проміжками. Якщо елемент виведем ня не поміщається у відведене для нього поле, то для нього буде добавлені стільки позицій, скільки необхідно. Перед дійсними числами записується щсй найменше один проміжок. Друга величина, яка записується після ширині поля, використовується для запису дійсних чисел (real) і вказує кількісті десяткових знаків, які будуть записуватися після десяткової крапки (XI н записується з точністю 2 цифр після коми, Х2 — 1 цифри). При цьому числ<| виводиться у формі з фіксованою крапкою. Якщо ж точність не вказана, ті число виводиться у формі з плаваючою крапкою (Див. п. 4.3 Дійсний тип),

Наприклад.

Y2:=56.3458;Writeln(‘Yl=\Yl:2:l);Writeln(JY2=,,Y2:3:2);

end.Буде надруковано такий результат:

Yl=€7.0Y2=5635

Складена вказівкаСкладена вказівка — це послідовність довільних вказівок програми,

відокремлених одна від одної крапкою з комою, взятих в дужки — службові (зарезервовані) слова begin ... end.

Var Yl,Y2:real; begin

Yb=57;

Page 42: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Програма. Мова програмування 41

Формат;begin

<вказівка1>;<вказівка2>;

<вказівкаИ>end;

Після службового слова end ставиться крапка з комою. У деяких випад­ках, коли складена вказівка використовується у вказівках розгалуження, крап­ка з комою може і не записуватися.

Нащшишд*begin

Аз=$

S:=A+B;writeln(‘S=\S)

end;Не існує ніяких обмежень на характер вказівок, які входять у складену

вказівку. Серед них можуть бути і інші складені вказівки.

Наприклад.

begin<вказівка1>;<вказівка2>;begin

<вказівкаЗ>;<вказівка4>;

end;<вказівка5>

end;

Складена вказівка сприймається як одне ціле і може записуватися у довільному місці програми, де синтаксис мови дозволяє наявність вказівки.

Page 43: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

42 Мова програмування Пасм

3.10 Запитання, завдання, тести Запитання для самоконтролю:

1. Як записується і виконується вказівка введення даних мовою Пасі2. Яка різниця між вказівками Read і Readln?3. Як записується і виконується вказівка виведення даних мовою Пасі4. Яка різниця між вказівками Write і Writeln?5.Як записується і виконується вказівка присвоювання мовою Паскалі

Завдання для самостійного виконання1. Яке значення буде мати змінна X, після почергового виконання вказівоіі Х.-10; Х-Х+3;Х=,_2. Запишіть вказівки введення даних дня змінних:а) А___________б) Міп^___________________________________________ .в) В І____________________________________ ____________г) а, Ь, с, d_____________ j___________________ __________ _3. Запишіть вказівки виведення даних для змінних:а) Ш __________ ■ ___________________________ _____б) а, Ь, с, dв) х+у, z __

Тести

1. Вкажіть, які із записаних вказівок введення даних є правильними, а які і чому?

а) read(X+l,Y);б) read(X);в) read(X),(Y);г) read(X,Y);Правильні:

Г) read[X,YJ;д) read X;е) read(X,X*Y); є) read(-X,Y);Неправильні: _

2. Вкажіть, які із записаних вказівок виведення даних є правильними, а ні і чому?

а) write(X;Y);б) write(A В);в) write AJB;

Г) write[A,B];д) write5;е) write(A,B*C);

Page 44: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

іліішШ&ь> і

Програма. Мова програмування 43

г) write(A,B); Правильні: _

є) write(-A,B); Неправильні: __

. Вкажіть, які із записаних вказівок присвоювання є правильними, а які ні чому?

а)А*=С; г)-В=А-С;б) А:В+С; ґ)2*(>А+3*Вв)С:=С+2;Правильні:________________ Неправильні: _______ ___

4. Початкові значення змінних: Х=2, У=~1. Вкажіть, які пари значень X і У з правого стовпчика відповідають значенням для виразів X і У з лівого.

а)х~1;у=ф1)Х:=Х+2*У;У:=У-У; -2)_У:=-У; Х:=Х+У; У^У+Х; ___________ в)*=0,у^

г)*=3;у=1;і)*=3;5»4;

3) Х:=Х+У; У=Х+У;

ЗЛІ Стандартні типи змінних. Опис типів змінних

Цілі або цілочисеяьні типи

Цілі числа складаються з декількох цифр і, можливо, знаку Якщо знак не вказаний і число не дорівнює нулю, то воно додатне.

Дійсні типиДійсні числа — це десяткові дроби і, в окремому випадку, цілі числа,

записані у вигляді десяткового дробу.Наприклад.

Числа 5; 0 — цілі числа, 5.0 ; 0.0— дійсні числа Дійсні числа можуть бути записані двома способами:— з фіксованою крапкою ( 5.45; 9.23 );— з плаваючою крапкою ( ЗЕ+5; -8.1Е-4);Запис числа з фіксованою крапкою.

Ціла і дробова частини дійсного числа розділяються десятковоюкрайкою, а не комою!

Page 45: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

44

Наприклад, 10,39; -37.4 і

Число не може починатися з крапки і не може нею закінчуватися. Запн 0. і .89 недопустимі. 1

Запис числа з плаваючою крапкою 1

У тому випадку, коли необхідно записати дійсне число зі степенем 1 (наприклад 2.315*10“3), використовується буква Е, справа від якої знаходив ся показник степеня (2.315Е-03). Букву Е, яка входить в склад числа, потрібн читати, як “помножити на 10 в степені...” І

Наприклад. 11-ий рядок — звичайна математична форма запису числа 12-ий рядок — запис числа мовою програмування Паскаль 1

І; -5; 0,25; 1,7*10^; +49,22; -гДШ’ЧО5 І1; -5; 0.25; 1.7Е-04; +49.22; -2.035Е+05 1

Булевий тип Іг\т\т\/у\ TRUE, якщо X — непарне число і

L FALSE, якщо X — парне число ІРезультат даної функції належить до булевого типу. 1Результат виконання операцій порівнянну (=, <, >, >=, <=, <>) над даним!

одного типу належить до булевого типу

ЗЛ2 Опис програм за правилами мови програмуванняПрограма реалізує алгоритм розв’язання задачі. Вона об’єднує послі1

довність виконання конкретних вказівок над конкретними даними дл4 реалізації конкретно поставленої мети.

Програма складається із заголовка і блоку.Заголовок програми складається з службового слова Program та імені

програми, після якого ставиться —

Program SUMMA; ІІм’я проірами може бути довільним (але бажано щоб співпадало зі змістом

програми) і записується згідно з правилами запису ідентифікаторів.

Page 46: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Блок програми може містити до 7 розділів, які записуються в такому порядку:

Uses CRT; {Розділ підключення модулів з системної бібліотеки}Label...; {Розділ опису міток}Const...; {Розділ опису констант}Туре ...; {Розділ опису типів даних}Var ...; {Розділ опису змінних}Procedure ІМ’Я ПРОЦЕДУРИ; {Розділ опису процедур і функцій}

Encf11 * * {Р°зділ вказівок — тіло програми}В розділі Uses записується список стандартних бібліотечних модулів

|і модулів користувача.

Модуль — це бібліотека констант, типів даних, змінних, підпрограм (про­цедур і функцій), ... .

В Турбо-Паскалі можна використовувати 8 наперед визначених модулів: CRT, DOS, GRAPH, OVERLAY, PRINTER, SYSTEM, TURB03, GRAPH3.

Окремі розділи програми, крім розділу вказівок, можуть бути відсутніми. Розділи опису (крім розділу Uses, який завжди записується після заголовка програми) можуть зустрічатися в програмі декілька разів і в довільному порядку. Головне, щоб всі описи об’єктів програми були зроблені до того, як вони будуть використовуватися.

Між будь-якими двома вказівками ставиться крапка з комою, яка відокремлює їх одну від одної. Якщо в одному рядку записувати одну вказівку, то практично кожен рядок програми повинен закінчуватися — ;. В програмі можна використовувати коментарі, які з двох боків необхідно брати у фігурні дужки. Коментарі допомагають краще розуміти програму і ніякого впливу на її виконанння не мають. Програма закінчується словом End, після якого ста­виться крапка.

Наприклад.Program SUMMA;Var

A,B,C,S:integer;begin

Write(‘A=<);Readin(A);

програма. Мова програмування 45

Список модулів наведено лише для Turbo Pascal 6.0.

Page 47: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

46 Мова програмування Песі

Wnte(‘B=‘);Readln(B);Write(‘0 ‘);Readln(C);S?=A+B+C; writeln(‘S=\S)

end.

3.13 Практична робота №2ТЕМА: Створення і реалізація програм на введення і виведення даних. МЕТА: Навчитись і оволодіти практичними навичками складання, введен

редагування найпростіших програм на введення і виведення даЗАВДАННЯ ПРАКТИЧНОЇ РОБОТИ:1. Вивчити теоретичний матеріал з теми:

— запис констант, змінних; '* ■— правила запису алгебраїчних виразів;— використання вказівки присвоювання;~ організація введення та виведення даних.

2. Скласти програму обчислення значення заданої функції.3. Виконати дану програму і обчисляти значення функції при заданих да4. Оформити звіт з практичної роботи.

Зразок виконання практичної роботи

ПРАКТИЧНА РОБОТА №2ТЕМА: Створення та реалізація програм на введення і виведення даних.« МЕТА: Скласти програму обчислення значення функції

Y*(atb-cy(a-b) при з=6, Ь=І4, с=4

Програма розв’язку даної задачі мовою програмування Паскаль. Program Probota2;Var

Y:real;a,b,c:integer;

begin\мгіІе(‘Введіть значення a: ‘); readln(a);\угйе(‘Введіть значення b: *); readln(b);

Page 48: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

трпграма- Мова програмування 47

write(‘BeeAiTb значення с: 4); readln(c);Y:Ka+b-c)/(a-b);writeln( ‘Значення функції Y=’,Y);

end.

3.14 Запитання, завдання, тести Запитання для самоконтролю:

1. Які службові слова використовуються для запису лінійних алгоритмів?2. Що являє собою програма розв’язку задачі мовою програмування Пас­

каль?3. Як записується заголовок проірами?4. Які блоки використовуються в програмі?З. Яка структура програми мовою Паскаль?6. Як відділяється запис однієї вказівки від іншої ?7. Яким симовлом закінчується запис кінця програми?

Завдання для самостійного виконання

1. Скласти програму знаходження довжини: а) кола; б) квадрата.

2. Скласти програму знаходження площі: а) круга; б) трапеції.

3. Скласти програму знаходження об’єму: а) призми; б) піраміди; в) кулі;г) конуса; ґ) циліндра.

4. Скласти діалогову програму на тему:а) діалог між покупцем і продавцем;б) діалог між бібліотекарем і абонентом.

Тести

1. Які з даних програм записані правильно, а які ні?

a) Program lW rOGRAM; ConstA=9;

в) Program LINPROGRAM; Const A=5;Var C:integer;C:integer;

Brreal; B:real;beginbegin

write(‘C=’); write(‘C=’);

Page 49: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

48 Мовапрограмування Паск

readln(C);B:=Sgrt(A)+-C;Ш еІп(‘В=’,В);

ЄП(1.

б) Program LINPROGRAM; Const A=5;Var B,C:integer;

B:real;begin

writeCO*);readln(C);B.-=Sgr(A)+C;WritelnCB=’3);

end.

Правильно_____________

B.*=SgrtA)+C;WritelnOB=’3);

епй.

г) Program LINPROGRAM; Const a=5;Var B,C:integer;

Brreal;begin

write^O’);readln(C);B.*=Sgr(A)+C;

end.

Неправильно_______ ______

2* Знайти помилки в кожній з наступних програм, якщо вони є, і ви вити їх. Які з програм записані правильно, а які ні?

a) Program А;Const А=5;

beginШ Щwrite!n(‘A=,A);

end.

в) Program С;Var A,B,C:reaI;

beginreadln(A,B);OA/B;writeln(‘C=,,C);

end.

6) Program B;Var A,B,C:integer;

begin read!n(A,B); C^AB;writeln(‘0 \C );

end.

r) Program D;Var A,B,C:real;

beginreadln(A,C);0=A/&;writeln(‘C=\C);

end.

Правильно Неправильно

Page 50: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

врргррил Мова програмування 49

І Чи можна змінним А і В в програмі DOBUTQK присвоювати значення?

Program DOBUTOK; VarA:integer;

B:real;begin

readln(A);readLn(B);writeln(‘A*B=’,A*B);

end.

А Ва) 4 5б) 4 2.5яр 2.5 4г) 5 4Д) 2.5 2.5

Можна He можна

13.15 Набір функцій та операцій, що визначені для кожного із стандартних типів. Арифметичні вирази. Пріоритет операцій

І Цілі або ціяочисельні типиНа множині цілих чисел визначені такі операції:+ — додавання;— — віднімання;* __ множення;/ ■— ділення;Div — ділення націло;Mod — остача від ділення націлоМатематичні функції:ABS(*J — м ARCTAN(x) —COS(jc) — cos(jc) SIN(jc) —EXP(jc) — Є* LN(jc) —

SQR(x) — Xі SQRT(*> —

arctg(x)sin(.x)ШГ х

Результат виконання операцій Div; Mod; Abs(x); Sqr(x) надцілими числами є ціпим числом.

Результат виконання операції /, а також всіх інших математичних функцій на множині цілих чисел, є дійсним числом.

Page 51: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

50 Мова програмування Паа

Приклад.При діленні -25/5 отримуємо не ціле, а дробове число -5.0Щоб знайти значення частки в цілих числах, потрібно викориспж

спеціальну операцію — DIV — цілочисельне ділення.Приклад.

-25DIV5.Отримаємо результат •— 5.

Між знашм DIV і числами, які беруть участь у діленні, повинно бути х б по одному проміжку.

Операція обчислення остачі від цілочисельного ділення позначається з ком MOD.

Наприклад.35 MOD 6; -1 MOD 2.

Значення записаних виразів відповідно дорівнюють: 5; - і .Примітка. Операції DIV і MOD можна застосовувати тільки до ц'

чисел.RANDOM(x) — випадкове число від 0 .. X.Наприклад,

forl.-l to4dowrite(RANDOM(10):2);

Результат: 7 3 8 1

Дійсні типиНа множині дійсних чисел визначені такі операції:+ — додавання;

— віднімання;* — множення;/ — ділення;

Математичні функції:ABS(jc) — Щ. COS(jc) — cos(x)

ARCTAN(x) SIN(jc) LN(x) , SQRT(jc)

arctgft)

EXP(x) e* SQR(x) — x3

sin(x)а д

Page 52: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Ірограма. Мова програмування 51

Результатом виконанні даних операцій і функцій на множині дійсних чиселдійсне число.

функція ГЫТ(х) — задає цілу частину числа х.Наприклад,

INT(0.99)=0.0;

І Необхідно мати на увазі, що “ціла частина числа” (INT) — це “найближче менше ціле число”. Функція “INT” перетворює число не в число цілого типу, [а в дійсне число з цілочисельним значенням.

Крім даних функцій на множині дійсних чисел визначені ще функції: TRUNC(x) — відкидання дробової частини числа X;FRAC(x) — задає дробову частину числа X.ROUND(x) — заокруглення числа X.Результатом виконання функцій TRUNC(x) і ROUND(x) на множині дійсних

чисел є ціле число.Наприклад.

Літерний типФункції для роботи з літерним типом:

<ЖО(8) — визначає порядковий номер (код) символу в із заданої кодовоїтаблиці.

Результат даної функції належить до цілого типу.СЖ (І) — знаходить символ, порядковий номер (код) якого дорівнює І. Результат даної функції належить до літерного типу.Наприклад.

ОИБСА’Н З ; СЖ(65)=‘А’;8иСС(8) — визначає символ, який знаходитеся після символу 8 в кодовій

таблиці.риргук) — визначає символ, який знаходиться перед символом 8 в кодовій

таблиці.Результат даних функцій належить до літерного типу.

INT(3.6)=3.0;INT(-3.6)=-3.0;

JNT(5.1)=5.0; INT(—5.1)=—5.0

TRUNC(7.8)=7;TRUNC(-7.8)=-7;ROUND(7.8)=8;

FRAC(7.8>=0.8FRAC(-7.8)=-0.8ROUND(-7.8)=-8;

Page 53: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

52 Мова програмування Пасі

Наприклад.PREDOB’KA’; SUCC(‘B > ‘C

UPCASE(s) — перетворює малі букви англійського алфавіту (і тіліанглійського) у великі. і

Результат даної функції належить до літерного типу. jНаприклад.UPCASE0n>‘N’; UPCASEfc’K C ’ \

Вирази. Пріоритет операційЗмінні і константи всіх типів широко використовуються у виразах. В

задає порядок виконання дій над елементами даних і складається з опера (констант, змінних, звернення до функцій), круглих дужок і знаків опері

Виконання кожної операції здійснюється в порядку врахувані пріоритету:

NQJ — пріоритет першого порядку *, /, DIV, MOD, AND, SHL, SHR — пріоритет другого порядку +, —, OR, XOR — пріоритет третього порядку =, <>, <, >, <“ , >=, in — пріоритет четвертого порядку

Наприклад.5+2.7; 3-4.5; 2*24; 1/5; -25/5їх значення відповідно дорівнюють 7.7; -1.5; 48; 0.2; -5.0

Для визначення старшинства виконання операцій використовують прав

1. Операнд, який знаходиться між двома операціями з різн пріоритетами, поєднується з операцією, яка має більш високий пріориї

2. Операція, яка знаходиться між двома операціями з одинакс пріоритетом, поєднується з тією операцією, яка знаходиться зліва.

3. Вираз, взятий в дужки, перед виконанням обчислюється як окре операнд.

4. Операції з рівним пріоритетом виконуються зліва направо з м о ж л ї регулюванням порядку їх виконання за допомогою дужок.

Наприклад. т5+2*10=25; 10/2*5-7+8.6/2=22.3; (5+105) DIV 7=15.

Page 54: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

ірпррама- Мово програмування 53

Примітка. Круглі дужки призначені для зміни звичайного порядку вико- ання операцій. Операції спочатку виконуються в круглих дужках.

огічні виразиПриклади виразів:

МАТЕМАТИКА TURBO PASCALах2 + Ь A*Sqr(X)+B

а + Ь\c-d\ (A + B)/Abs(C-D)

y ls + l Sqrt(Sqr(X)+l)

elnCc + 2) Ехр(Х)*ЇЛр+2)

ab Exp(B*ln(A))

Останній приклад потребує деяких пояснень. В мові Pascal відсутня©аерація піднесення до степеня, тому ЇЇ замінюють поєднанням функцій ЕХР та LN (треба спочатку прологарифмувати вираз а). *

3.16 Запитання, завдання, тести Запитання для самоконтролю:

І* Які форми записів чисел використовуються в мові Паскаль?2. Як визначається порядок дій в арифметичних виразах, записаних мо­

вою Паскаль?3. Які знаки арифметичних операцій використовуються щт запису виразів

мовою Паскаль?4. Чи можна виконувати операцію ділення над даними цілого типу?5. Якого типу буде результат ділення 14 на 4 ?

Завдання для самШпШного виконання1. Запишіть числа мовою Паскаль:

-200 —і 2,15*10“ —35,19 — 6,67*10-» —-47,14 —

Page 55: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

54 Мма програмувап

2. Запишіть мовою Паскалі, вирази:а) 0,6 в степені (6)___________б) 7.3 ш степені (-5)

3. Запишіть значення виразів:а) 7 ОІУ 3 =б) -12 ОІУ 4 Яв) 1 БІУ 2 *

4. Знайдіть значення функцій:а) 000(18) агб) 0013(24) *

5. Знайдіть значення функцій:а)ТКШС(8.72)=б) ЯОІЖО( 9.8) »в)КОШО(-9.8) =

6. Запишіть значення функцій:а)О М )(СЩ 50»=б)сн іг(оіш (,+,))=

7. Запишіть мовою Паскаль вирази:

а)

а)

б)

б)

X+Ху-*ХХШМ

г) 10 м о о з * ґ) -7 МОО 2 *д) 2 МОО 5 =

в) 8иСС(120)»г) РїШЩ 17) *

г)таШ С(-5.7)=г)ЇЮШО(-5.2) =д) КОиКО( 5.2) *

в)РШ Х ‘С’) =г)8 и С а‘С’) =

агс%(а-£) + 5а П Г ~ а*+ 6

8. Запишіть в загальноприйнятій математичній формі вирази:а) (С+Сов(В+А)У(8чг(2*В+3)) + Ьп(С)

б) (Х^-2*8чг{(8<^(Х>-4*Х*У))/{Х+¥>+2*Х

Page 56: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Програма. Мова програмувати 55ятт

. Обчисліть значення виразу:а) (5+7*2)#7 Ш в) 3-8+21 Div 3 *б) (5+8)/10+4 V . г) (2+ 3) Mod 7-2 N

0. Визначіть тип результату арифметичних виразів, якщо А, В, С, X, Y писані таким чином:

VarX,C,B:integer;Y:real;

а) Л*В-2*С/5 = в) Cos(Y)+5*X = " ,б) X < Y = r)A+Sqr(B) =

11, Вкажіть тип результату (integer, real, boolean) для арифметичних виразів, якщо А,В,С описані таким чином:

Var A:real;B,C:integer;

а) Arctan(A)+2*B — в) еА+В*С —б) 5*B+C+Sqr(B) — г)С<А+С — r) 2*Sqr(C)+5*C/B — е) А+В-С —д) Sqrt(C)-Sra(A) —* є) Abs(B}-B*C —

12. Встановіть тип результату для виразу з лівого стовпчика, вибравши пра­вильну відповідь з правого.

Змінні X, Y, Z описані таким чином:Var

X:integer;Y,Z:real;

1) 5*Abs(X)+X — ________ '________________2) Sqr(X)+Y — ______________________ ‘m________3) Sin(X)/Cos(Y)-Ln(Z) — . a) integer4) Sqr(X)+5*X — ______________;______________ 6) real5) Ln(Y)+X*Z+5 — _______________________ _

Page 57: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

56 Мова програмування Паск

Тести1. Які з наведених нижче записів чисел є правильними, а які неправильні чому?

а) 8 Д) 0.0б) -71 е) .8в) 0.2Е-9 є) -5.4г) 0.44 ж) 6,7ґ) 6.7+8 з) 8.3Е5Правильні: Неправильні:

2. Для виразів з лівого стовпчика виберіть правильну відповідь з прав стовпчика:

1) 8 div З2) -13 div 23) 2 div 5 —4) 13 mod 5 -5) т-11 mod З6) 5 mod б —

3. Чи мають зміст вирззи? (Так, Ні)3.5 Div 7 —

а) 0б ) -2в) 5г) 2тД) -б е) З є) -4

8 Mod 2.0

4. Які із наведених нижче записів функцій е правильними, а які неправильі чому?

а) Odd(8,6) г) Succ(6.4)б) Sin(5) r) Cos0.5в) Sin(4,8) д) Pred(8)Правильні:_____________ Неправильні: ____________ _

5. Які із наведених нижче записів є правильними, а які неправильними і чому?а) ‘С’ < ‘D’ г) ‘5’ > ‘9’б) False < True r) ‘С’ < ‘D’ and 3 < 5в) True > False д) (‘DV’H’) and (6<9)Правильні:_____________ Неправильні:___________ _

6. Які із записаних нижче вказівок присвоювання є правильними, а які непра вальними, якщо X, Y, С, В описані таким чином?

Page 58: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

рограма. Мова програмування 57

VarX,C,B:mteger;Y:real; м

а) Y:=A+C/2; b)Y:C-B+6;б)Х:=В*С-5; г) X?=Sin(C)+5;Правильні:____________ Неправильні:_______________

7, Які із записаних виразів мовою Паскаль є правильними, а які неправиль­ними і ч ому?

а) SinX+A*B+C г) 5+ |-Х| + Z*Xб) Cos(X)+5*C+Ln(C) д) А*-В+4*А*Св) 3A+Arctan(Y)-BC е) 8Div4+5*A r) А/-В +Sqr(C)Правильні: _____________ Неправильні: _______________

8. Виберіть правильну відповідь для запису виразу мовою Паскаль:

, cos(a+ с)-еаш— . .■ ------ -------------■______________________ _vlnac+5 + 2a ““ ' ‘ ™ ....... ..

а) А*В — (Cos(A+C)-Exp(A))/Sqrt(Ln(X))+2Aб) А*В — (Cos(A+C)-ExpA)/(Sqrt(Ln(X)+5)+2*A)в) А*В — (Cos(A+C)-Exp(A))/(Sqrt(Ln(X)+5)+2*A)г) А*В — (Cos(A+C)-ExpA)/(Sqrt(LnX+5)+2*A)

3.17 Переклад лінійних алгоритмів з навчальної алгорит­мічної мови на мову програмування

Задача.Обчислити площу трикутника за формулою Герона. Довжини сторін три­

кутника а, Ь, с.Розв’язок задачі на НАМ.АЛГ формула Герона

АРГ а, Ь, с РЕЗ S

ПОЧ ДІЙСН рр:=(а+Ь+с)/2

Page 59: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

58 Мова програмування Пасі

S:==sqrt(p*(p~a)*(p~b)̂ (ibc))КІНЕЦЬПереклад даного алгоритму на мову програмування Паскаль program LINALGORITM;Var

a,b,c:integer;p,S:reaI;

beginwrite(‘a=’);readln(a);writeCbs’);readln(b);write(‘c=’);readln(c);

р:=(а+Ы^У2;S:^rt(p*(p^)*(p^)*(p-c));

writeb^4S=’̂ S)end.

ЗЛ8 Практична робота №3ТЕМА: Створення та реалізація найпростіших лінійних програм.МЕТА: Навчитись і оволодіти практичними навичками складання* введен

редагування і виконання найпростіших лінійних програм.ЗАВДАННЯ ПРАКТИЧНОЇ РОБОТИ:1. Вивчити теоретичний матеріал з даної теми:

— запис констант, змінних, стандартних функцій;— правила запису алгебраїчних виразів;— використання вказівки присвоювання;— організація введення та виведення даних;

2. Скласти програму обчислення значення заданої функції.3. Виконати дану програму і обчислити значення функції при заданих дан:4. Оформити звіт з практичної роботи.

Page 60: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

\ Програма. Mom програмування 59

\ З р а зо к виконання практичної роботи ПРАКТИЧНА РОБОТА №3ТЕМА: Створення та реалізація найпростіших лінійних програм.МЕТА: Скласти програму обчислення значення функції

F = A*Ln(A+B)+CosB/C при А=ОД В=-2.3, С=4Л

Програма розв’язку даної задачі мовою програмування Паскаль.Progran PROBÖTA2;Var

F,A,B,C:real;begin

отйе(*Введіть значення А: 4); readln(A);отЬе( Введпь значення В: *); readln(B);write(T3Be#Tb значення С: *); readtn(C);F^=A*Ln(A+S(p<B))+Sqr(Cos(B/C));\*тйе1п(63вачення функції F=’,F);

end.

Результати виконання програми:Введіть значення А: 0.6 Введіть значення В: -2.3 Введіть значення С: 4.1 Значення функції F=I.7809162608E+00Примітка. Програмісту самому необхідно потурбуватись про те, щоб

функції Sqrt, Ln виконувались тільки над додатними числами. В разі необхідності, в залежності від значення даних, потрібно використати функцію Abs.

Page 61: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

5 0 Мова програмування Паскі

Завдання для практичної роботи №З

№ з /п Р о з р а х у н к о в а ф о р м у л а З н а ч е н н я з м ін н и х 1

ь

• ( ь \З е т а + -

/ = -------- -------- Ц + Ь сЩ ( с - Ь ) + а

а = 3 ; Ь - 4 .6 ; с = 7 1

2 .л І Ь с + а 2 + 5

/ = ------ — ------ + в т ( а )1п (Ь )

а = 7 .4 ; 6 = - 6 ; с = 0 . Ї

3 ., - Ь + У І Ь 2 + 4 а с , і

Г - и * М а = 6 ; і = 8 ; с = 3 .5 1

4 .м О Д Р ?

а = 0 . 1 ; Ь = 5 .3 ; с = 7 1

5 . / = ^ ( с ) - ^ + а а = 5 ; 6 = 2 .4 ; с = 0 .2

6 .^ + 4 с і 8 ( а ) + 6 с

1п (6 )а = 5 ; 6 = - 3 ; с = 4 .5 |

7 .* Ь + с о в (с ) ,

] = ----------- р = г - О С1 3 6 + 4 у л + с

а = 4 ; і = - 5 .2 ; с = 1.1

8 ./ = е “ + 21п ( М с ) + а й

м с ц # )а » - 6 ; і = 6 .4 ; с = 8 .8 ?

9 .о :

а = - 2 ; 6 = - 5 .2 ; с = 6

1 0 .о - 3 !8 ( 6 ) + і і .

1п ( 5с ) + 6а = 1.5 ; 6 = 8 ; с = 0 .5

Page 62: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

4. ВКАЗІВКИ ПОВТОРЕННЯ ТА РОЗГАЛУЖЕННЯ

4Л Вказівки повторення і розгалуження 4ЛЛ Вказівка повторення

Вказівка повторення з передумовою (Цикл — while )

Вказівка повторення з передумовою — while призначена дпя організації багатократного виконання групи вказівок (тіло циклу) до тих пір, поки зали­шається істинною умова виконання циклу.

Значення службового слова while — поки

Вказівка повторення з передумовою записується у вигляді: while <умова> do

begin<вказівка1>;<вказівка2>;

<вказівка№>end;

Наприклад. while І<4 do

begins*=s+tМ И

end;Виконується ця вказівка таким чином. Обчислюється значення виразу-

умови. Якщо умова істинна (приймає значення TRUE), то виконується група вказівок (тіло циклу). Виконання програми знову повертається до перевірки Умови циклу. Якщо умова хибна (приймає значення FALSE), то виконується вказівка, яка знаходиться після вказівки повторення з передумовою.

ЦрШбЩШь1. Якщо умова у вказівці повторення хибна при першій же перевірці, то ■.

тіло циклу не виконується жодного разу. Умова вказівки є умовою входженняв цикл.

2. Умову вказівки повторення з передумовою необхідно підбирати таким чином, щоб в деякий момент вона змінила своє значення з TRUE на FALSE, інакше виникне ситуація “зациклювання” програми.

указівки повторення і розгалуження gj

Page 63: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

62 Мова програмування Паскщ

3. Програмісту необхідно самому потурбуватись про необхідній збільшення (зменшення) лічильника циклу на 1. Це можна зробити такі чином Ь-І+1.

4. Входження в тіло вказівки повторення можливе тільки через заішоа| цієї вказівки.

Приклад використання вказівки повторення з передумовоюЗадача. Знайти суму всіх натуральних чисел від 1 до N.

Program SUMA1;varI,N,S:mteger;begin

writeln(‘BBefliTb кількість натуральних чисел:’);write^N^*);readln(N);Ы ;&=<* \ whileI<=Ndo

begin і

&=S+i; !fc=*+-l

end; іvmtetaCS^S)

end.

Вказівка повторення з післяумовою (Цикл-repeat-until)

Вказівка повторення з післяумовою призначена для організації багатокі ратного виконання групи вказівок (тіло циклу) до тих пір, поки умова видо нання циклу не стане істинною. 1

repeat і<вказівка1>: 1<вказівка2>;

<вказівкаК> until <умова>;

repeatS?=Stf;Ы Н

шШ1>=4;

Page 64: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження 63

Службові слова вказівки означають:repeat — повторювати, until — поки.

Вказівка повторення з післяумовою виконується таким чинам. Спо­чатку виконуються вказівки, які входять в тіло циклу. Потім обчислюється значення умови-виразу. Якщо умова хибна (тобто має значення FALSE), то знову виконуються вказівки тіла циклу. Якщо умова стає істинною (TRUE), то виконання циклу припиняється і виконується наступна вказівка програми.

Примітка.L Тіло циклу, яке складається з групи вказівок, не потрібно брати в дужки,

(begin — end), оскільки службові слова repeat — until відіграють роль ду­жок.

2. Тіло циклу у вказівці повторення з післяумовою виконується щонаймен­ше один раз.

3. Умова вказівки є умовою виходу з циклу.4. Входження в тіло вказівки повторенням можливе тільки через заголо­

вок цієї вказівки.

Приклад використання вказівки повторення з післяумовоюЗадача. Знайти суму всіх натуральних чисел від 1 до N.

Program SUMA2;vari,N,S:integer,begin

\\ті!е1п(‘Введіть кількість натуральних чисел:’);write(‘N=’);readln(N);

мSM*repeat

S?=S+i;м щ

until i>N; writelnfS^^S); end.

В мові програмування Turbo Pascal логічна функція KeyPressed контро­лює натискання клавіш. Якщо жодна з клавіш не натиснута, ця функція прий­має значення False, інакше —True.

Конструкція Repeat Until KeyPressed використовується для організації паузи в процесі виконання програми (до натискання будь-якої клавіші).

Page 65: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

64 Мова програмування Паст

Вказівка повторення з параметрам (FOR — ТО — DO).Вказівка повторення з параметром призначена для організації багато^

ратного виконання тіла циклу для значень параметра циклу з деякої впор* кованої дискретної множини.

Вказівку повторення з параметром використовують у тих випадках, кох наперед можна визначити кількість повторень виконання вказівок циклу.

Вказівка повторення з параметром записується у вигляді:1. for <параметр:=вираз 1 > to <вираз2> do

begin<вказівка1>;<вказівка2>;

<вказівка№>;end;

2. for <параметр :=вираз 1 > downto <вираз2> do begin

<вказівка1>;<вказівка2>;

<вказівкаИ>;end;

Параметр вказівки (лічильник, індекс) — це змінна скалярного (цілої символьного, логічного або перелічувального) типу, крім дійсного.

Виразі (початковий параметр вказівки) — це деяка константа такого ж а мого типу, що й параметр вказівки.

Виразі (кінцевий параметр вказівки) — це деяка константа такого ж caj мого типу, що й параметр вказівки.

Якщо в тілі вказівки повторення з параметром необхідно виконати тільї одну вказівку, то складеної вказівки begin... end використовувати не потрібно]

for <параметр:=вираз 1 > to <вираз2> do<вказівка1>;

Вказівка повторення з параметром виконується таким чином:1. Вказівка For — to — do.Наприклад.

fori:=KtoMdo

Page 66: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

рказівкіл повторення і розгалуження 65

begin<вказівка1>;<вказівка2>;

<вказівка№>;end;

Параметру циклу І присвоюється початкове значення К. Він порівнюється з кінцевим значенням М. Якщо К<=М, то виконується тіло вказівки повторен­ня. Значення К автоматично збільшується на 1 (тобто стає наступним елемен­том) і знову порівнюється зі значенням М. Якщо під час перевірки отримає­мо, що К>М, то виконання вказівки повторення припиняється і виконується наступна після неї вказівка програми. Якщо під час першого порівняння К і М виявиться що К>М, то тіло вказівки не виконується жодного разу.

2. Вказівка For — downto — do.Наприклад,

for і:=К downto М do begin

<вказівка1>;<вказівка2>;

<вказівкаИ>;end;

Параметру циклу і присвоюється початкове значення К. Він порівнюється з кінцевим значенням М. Якщо К>=М, то виконується тіло вказівки повторен­ня. Значення К автоматично зменшується на 1 (тобто стає попереднім еле­ментом) і знову порівнюється зі значенням М. Якщо під час перевірки отри­маємо, що К<М, то виконання вказівки повторення припиняється і вико­нується наступна після неї вказівка програми. Якщо під час першого порівнення К і М виявиться, що К<М, то тіло вказівки не виконується жод­ного разу.

Примітка.1. Вказівку повторення з параметром зручно використовувати в тих ви­

падках, коли попередньо можна визначити кількість повторень.2. Параметр циклу не повинен змінювати свого значення всередині тіла

вказівки повторення, хоча його можна використовувати у будь-яких виразах вказівок тіла циклу.

Page 67: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

66 Мова програмування Пас

3. Параметр циклу повинен бути описаним у розділі змінних.4. Значення параметра циклу після закінчення виконання вказівки пов

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

Приклад використання вказівки повторення з параметром

Задача. Знайти суму всіх натуральних чисел від і до N.

Program SUMA3; var i,N,S:integer;

іетйе1п(‘Введіть кількість натуральних чисел:’);w rite^O ;readln(n);SpQfbri:=l toNdo

Srfrti; writeln(‘S=’JS);

4.1.2 Переклад циклічних алгоритмів із навчальної алго­ритмічної мови на мову програмування1. Скласти програму для знаходження значення £=1,2,3,..., при яшму функція стане меншою за а.

Program PFUNC; varK:integer;

У,ХД:геаІ;begin

begin

aid.

М Ьррд.readln(A);write(‘x=’);readln(X);KH;

Page 68: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження бЇЇ

while Y/K>= Ado begin

Y:=Y*X/K;fc=*L+l;

end;writeln(‘IIpH k*\K/ V<4̂ );

end.

2. Обчислити значення сумиS=*a + a2 + äi + t.< + anпри фіксованих значеннях п і л.

Дану сумуможеШ записати у вигляді: S « а (1.+ a + а (1 + а (1 + а)))).Якщо до початку циїслу змінній S надати значений 0, то, повторивши п раз

обчислення за вказівкою S:= (S+l)*a, дістанемо шукану суму.Program SUMMA; var A,i,N,S:ifitegef; begin

writers*’);readln(A);write(W);readln(N);Sfe=Qfori:=l toNdöSKS+l^A;writeln(‘S=,jS);

end.

4.1.3 Практична робота №4

ТЕМА: Опис і реалізацій найпростіших циклічних програм.МЕТА: Навчитись складати та реалізовувати циклічні програми.

ЗАВДАННЯ ДЛЯ ПРАКТИЧНОЇ РОБОТИ.1. Вивчити можливості мови програмування Паскаль з реалізації вказівки повторення:

а) з передумовою;б) з післяумовою;в) з параметром.

2. Відповісти на контрольні питання.3. Скласти програму розв'язування задачі згідно із завданням.

Page 69: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

68 Мова програмування Паска

4. Виконати дану програму.5. Підготувати і використати тести для перевірки правильності функціонуваї програми.6. Оформити звіт з практичної роботи.

Зразок виконання практичної роботи

ПРАКТИЧНА РОБОТА №4

ТЕМА: Опис і реалізація найпростіших циклічних програм.МЕТА: Скласти програму циклічного обчислювального процесу.

Завдання. Скласти програму знаходження факторіала числа п. п!=1*2*3*...*п

Програма розв'язування даної задачі мовою програмування Паскаль.Program PROBOTA5; varN,i:integer;FACTORIAL: longint; begin

\¥гіїе1п(4Введіть значення натурального числа п’);write(‘tt=’);readln(N);FACTORIALS; fori:=l toNdoFACTORIAL.*=FACTORIAL*i; writelnfN/ !=’, factorial)

end.

Результати виконання програми:Введіть значення натурального числа п. п=Ю101=3628800

Тестування програми1)п=2 2!=22)п=3 3!=63) п=4 41=24

Завдання для практичної роботи1. Знайти суму цілих додатних чисел, кратних 4 і менших 50.2. Знайти суму цілих додатних парних чисел менших 50.

Page 70: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження 69

3. Знайти суму цілих додатних непарних чисел менших 50.4. Знайти суму цілих додатних чисел, більших 20, менших 100 і кратних 3.5. Знайти суму членів ряду

5 = —+ якщол=10,д=3а а а а

6. Знайти значення функції

V = Біпі + 8іп2 + віпЗ + ... БіпіУ, якщо N=15

7. Знайти середнє арифметичне число всіх цілих додатних чисел менших 20.8. Знайти середнє геометричне число всіх цілих додатних чисел менших 10.9. Дано натуральне число ІУ, дійсне х. Знайти значення функції

У = Біпх + вийс + віл3* + ... ВіїЛг.

10. Вивести на екран Дисплея всі малі букви латинського алфавіту і їх коди.

4.1*4 Запитання, завдання, тести

Запитання для самоконтролю:1. Як записується і виконується вказівка повторення з передумовою?2. Як записується і виконується вказівка повторення з післяумовою?3. Яка різниця між вказівками повторення з передумовою і післяумовою?4. Як записується і виконується вказівка повторення з параметром?5. Як організовується вихід з вказівок повторення?6. Чи можна всередині тіла вказівки повторення з параметром змінювати

параметр циклу?

Завдання для самостійного виконання1. Вказати значення змінної 8 після виконання вказівки повторення:

1)s:=3;i:=l; while і<6 do i:=d+l;s:=s+i; s=2) s:=l; i:=0; while i<4 do begin i:=i+l; s:=s*i end; s=3) s:=2; i:=l; repeat s:=s+i; i:=i+l until (i>3); s=4) s:=5; i:=5; repeat s:=s+l/i; i:=i-l until (i<=3); s=5) s:=0; for i:=5 to 7 do s:=s+l; s=6) s:=l; for i:=10 downto 2 do s:=s+l; s=

2, Знайти суму цілих додатних чисел кратних 7 і менших 100.

Page 71: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

70 Мова програмування Паст

3. Скласти програму знаходження значення функції;

У = 1+'-т+'-!г + тт + —+1

якщо п т 10.IV4 +3 12 3J 4 п'4. Скласти програму знаходження суми чисел:

S = Iе + 22 + V + ... и2, якщо и и 10.

5. Скласти програму знаходження значення функції:

Yщ Cos(l)Cos(2)Cos(3)...Cos(w), якщо п т 10.

6. Знайти остачу від ділення натурального числа в на натуральне число шляхом послідовного віднімання віл числа а числа Ь.7. Обчислити значення многочлена и-го степеня виду:

Г == а,** + ej***1 + ... + atx + аяН.

8. Скласти програму обчислення суми членів ряду:X2 У? х в

2 = 1+дг+— —2! Зї я!

Тести

1. Якщо умова у вказівці повторення while приймає значення False, то тіло] циклу:,_____

а) виконується 1 раз;б) не виконується жодного разу;в) наступає “зациклення”.

2. Якщо умова у вказівці повторення repeat-until приймає значення True, то тіло циклу:_____

а) виконується 1 раз;б) не виконується жодного разу;в) наступає “зациклення”.

3. В яких вказівках повторення збільшення (зменшення) лічильника циклу на 1 передбачено:

1) автоматично " a) while...do2) програмістом &- £ б) for...to...do

в) repeat...until

Page 72: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження 71

4. В якому випадку, при к=3, тіло циклу буде виконувались:1) скінчене число р аз_____ *2) жодного разу ______3) наступить “зациклення” _____

a) while k<=5 do 6) while k>=5 do b) while fc>=3 dobegin begin p begin

S:*S+k; S*=S+k; S:=S+k;k=ktf te=kH fcsfcrt

end; end; end;

5. В якому випадку, при к=3, тіло циклу буде виконуватись:1) скінчене число р аз______2) жодного разу_____3) наступить “зациклення” 'а) {от і:=к іо 10 (Зо 8:=8+к;б) й>г і:=к to 2 Ло в^Б+к;в) {ох і:=к downto 10 do 8:=8+к;г) й>г і:=к downto 2 <&о в^в+к;

6. В якому випадку, при к=3, тіло циклу буде виконуватись:1) скінчене число р аз____ _2) жодного разу______3) наступить “зациклення” ____a) repeat б) repeat в) repeat

&=S+k; S?=S+k;kHtf-1 ЫкЯ ЫсН

until k<=5; until k>=5; until k>=3;

7. Вказати значення змінної s, яке відповідає результату виконання вказівки повторення:

1) s:=2; і:==0; while і<5 do і:=і+1; s:=s+l/i;_______________2) s:=5; і:~1; while і>1 do begin s:=s+l/i; i:=i—1 end ;________________3) s:=l; i:=l; while i<4 do begin i:=i+l; s:=s*i end;_____ _________4) s:=l; i;=6; while i>=3 do begin s:=s+i; i:=i-l end;_______ .______a) 18 6) 2.2 в) 0 r) 5 r) 10 д) 48

Page 73: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

72 Мова програмування Паск

8* Вказати значення змінної s, яке відповідає результату виконання вказівкі повторення:

1) s:=4; і:=1; repeat s:=s+l/i; і:=і-1 until і<=1; __________________2) s:=2; і й ; repeat s:=s+l/(i+l); і:=і+3 until і>=5; _______________3) s:=l; і:=1; repeat і:=і+1; s:=s+i until i>3; _________________4) s:=2; i:=5; repeat i:= i-l; s:=s+l/i until i<=4; _________________

9. Вказати значення змінної s, яке відповідає результату виконання вказівкі

1) s:=0; for і:=10 downto 6 do s:=s+l; і2) s:=0; for i:=8 to 8 do s:=s+l;3) s:=l; for i:=2 downto 2 do s:=s+l; " і4) s:=l; for i:=5 to 9 do s:=s+l;

a) 6 6) 10 в) 5 4 r) 2 r) 40 \

4.2 Вказівка розгалуженняу

4.2.1 Опис вказівки розгалуження мовою програмування

Опис та використання вказівки розгалуження

Вказівка розгалуження в мові програмування Паскаль може записуватися в повній або в скороченій формах.

1, Доцю Форма;if <умова>

then

else<вказівка2>;

2. Скорочена форма: if <умова>

then<вказівка1>;

а) 2.25 б) 2.7 в) 7 г) 10 г) 5

повторення:

<вказівка1> \

Page 74: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження 73

Службові слова, які використовуються в умовній вказівці, мають зміст if — якщо, then — то, else — інакше.

Умова — це вираз булевого типу. Умова може бути простою або складе­ною.

Наприклад.1. Проста умова: а<5, с>=а, х=0, а<Ь2. Складена умова (а>5) and (а<10 ),

(а=2)ог(Ь=3)Складена умова записується з допомогою логічних операцій and — і, or —

чи, not — не. При записі умови можна використовувати всі можливі операції відношення. Результатом виразу умови завжди буде величина булевого типу.

Логічні виразиРезультатом виконання логічного виразу є логічне значення True або False.

Операндами є дані тільки булевого типу.Логічні вирази утворюються з допомогою логічних операцій і круглих

дужок.Список логічних операцій наведено в таблиці.

Логічні операції над даними типу BOOLEANОперанді Операнд2 not and or xor

false — true — — ----

true — false — — ----

false false — false false falsefalse true — r false true truetrue false — false true truetrue true — true true false

Повна форма вказівки розгалуження виконується таким чином:— якщо умова істинна, то виконується вказівка!, а потім вказівка, яка

знаходиться в програмі після всієї вказівки розгалуження;— якщо умова хибна, то виконується вказівка2, а потім вказівка, яка зна­

ходиться після вказівки розгалуження.Скорочена форма вказівки розгалуження виконується таким чином:— якщо умова істинна, то виконується вказівка 1, а потім вказівка, яка

знаходиться в програмі після всієї вказівки розгалуження;— якщо умова хибна, то виконується вказівка, яка знаходиться після

вказівки розгалуження.

Page 75: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

74 Мова програмування Пас

Наприклад.

Program UMOVA;Var А,В: integer; begin _

write(‘A=;’); readln(A);write(‘B=’);readln(B);if A>B then writeln(‘А більше В’)

else writeln(‘B більше A’);end.

В даному випадку, якщо присвоїти А=2, В=5, то значення виразу умови* хибне, отже, на еіфані з’явиться повідомлення — В більше А.

Примітка,У вказівці розгалуження ставиться тільки після вказівки 2.

Вказівка розгалуження може записуватися з використанням складен вказівки таким чином.

if <умова> then

begin<вказівка1>;<вказівка2>;

endelse

begin<вказівкаЗ>;<вказівка4>;

end;Наприклад.

Program SUMMA;Var A,B,R,S:integer; begin

write(‘a=’);readln(A);write(‘b=’);readln(B);

Page 76: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження 75

teQтif А>В then begin

Rf=AtB;writeln(‘R = ^)

end else begin

SsA-Ш;writeln(‘S=\S)

end;end.

В даному випадку, якщо присвоїти а=5, Ь=2, то на екрані з'явиться повідом­лення— R=3,

Тіртітт,Якщо після службового слова then використовується складена вказівка,

то в ній після кожної вказівки ставиться а після службового слова endне ставиться.

Мітки 11Програма — це послідовність вказівок, які виконуються одна за одною. В

багатьох випадках виникає потреба в зміні такого порядку, що стає можли­вим завдяки вказівкам управління.

Перщу вказівку управління — вказівку розгалуження, ми вже розглянули.Інший спосіб зміни порядку виконання вказівок здійснюється з допомо-

I гою міток і вказівки Goto.Довільна вказівка у програмі може бути позначена міткою. Мітка вказівки

записується перед нею і відділяється від неї двокрапкою.Мітка — це довільне ціле число в інтервалі від 0 до 9999 або довільний

ідентифікатор (тобто ім’я мітки записується згідно з правилами запису ідентифікаторів).

Всі мітки, які використовуються в програмі, повинні бути описані в розділі опису міток. Цей розділ відкривається службовим словом Label і записується у вигляді:

Label мітка!,мітка2.... міткаИ;Наприклад.

Label М1 ,ZVUK,6,A2;Однією міткою може бути помічена тільки одна вказівка.

Page 77: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

76 Мова програмування Паск

Ідентифікатор мітки не повинен співпадати з ідентифікатором змінної а константи.

Вказівка безумовного переходу G otoВказівка бузумовного переходу Goto записується у вигляді:Goto мітка;Наприклад.Goto M l; Goto МІТКА1;Вказівка безумовного переходу може бути записана у довільному міс^

програми.Наприклад.

Program SUMMA2;Label М І; varA,B,V:real; begin

write(‘A=’); readln(A); write(‘B=’); readln(B); if A>B then

beginVS=A-B;Goto M l;

end;V^A+B;

Ml:writeln(‘BianoBW>: ‘,V); end.

Вказівка безумовного переходу порушує принцип структурованого підхо до написання програм мовою Паскаль, тому використовувати їх необхідн у випадку крайньої необхідності.

Вказівка варіанта tfhJM UM bop $ш Ї0]оа^У випадку, коли необхідно використовувати декілька вказівок розгалужен

ня, вкладених одна в одну, то краще замінити їх вказівкою варіанта.Вказівка варіанта записується у вигляді:

Case <селектор> of мітка 1 :<вказівка1 >;

Page 78: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження 77

мітка2:<вказівка2>;

мітка№<вказівка№>end;

Вираз, який записується між службовим словом case і of, називається селектором. Селектор повинен належати до одного з цілого, булевого, сим­вольного типів або типу користувача. Дійсні і рядкові типи в селекторах використовувати не можна.

Мітки варіантів — константи, типи яких повинні співпадати з типом се­лектора. Всі мітки варіантів повинні бути різними.

Якщо одній вказівці у вказівці варіанта відповідає декілька міток, то вони перераховуються через кому.

Виконується вказівка варіанта так.Спочатку обчислюється значення виразу селектора, а тоді виконується та

вказівка варіанта, перед якою стоїть мітка, значення якої співпадає зі значен­ням селектора. Якщо ні одна з міток не співпадає зі значенням селектора, то виконується вказівка, яка знаходиться, після вказівки варіанта, тобто після службового слова end.

Примітка.Мітки варіанта не потрібно описувати в розділі міток Label і їх не можна

використовувати у вказівці безумовного переходу Goto.Наприклад.Скласти програму, яка визначає пору року за порядковим номером місяця.

Program PORA;Var MONTHiinteger; begin

>Угіїе(‘Введіть порядковий номер місяця: ‘);readln(MONTH);if (M0NTH<1) or (month>12)

then writeln(‘TaKoro місяця немає’) else

case MONTH of3,4,5 :writeln(‘BecHa*);6,7,8: writeln(‘Літо ’);9,10,11 :writeta(‘OciHb');12,1,2: writeln(‘3HMa’)

end;end.

Page 79: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

78 Мова програмування Пасі

4.2.2 Опис алгоритмів із розгалуженням мовою програмування

1. Скласти програму обчислення значення функції:1г, якщо х<0;

У* 5, якщо (К=лс<5;5х,якщолс>=5.

Уош ілш ,Program PFUNCTION;VarX,Y:reaI;begin

write(‘X**);readln(X);ifX<OthenY:=X

else if ((X=X) and (X<5) thenY:=5 ebeY?=5*X;

writeln^X-’jX,’ Y=**,Y);end.

2 /Скласти програму розв’язування квадратного рівняння. ах2 + Ьх + с = 0.

Program KVADRAT;Var A,B,C,D,Xl,X2:real; begin

шгйе1п(‘Введіть коефіцієнти a, b, сwriteCia%readln(A);writeCb**);readln(B);writeC^’);readln(C);D:=sqr(B)-4*A*C;if D<0 then хугкеІп^Рівняння має комплексні корені’)

else begin

XI :=K-B-sqrt(D))/(2*A);

Page 80: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження 79

X2:==(-B+sqrt(D))/(2*A); writeln(‘KopeHi рівняння: ’); writeIn(‘Xl=’,Xl); writeln(‘X2=’,X2);

end;end.

3. Скласти програму розв’язування системи двох лінійних рівнянь, що має єдиний розв'язок.

Розв’язок лінійної системи рівнянь виду

. , ,яюцоД = а1Ь ,-а-Ь 1 а2х+Ь2у - с 2’^ ^ 12 ^ 1можна знайти за формулами

У - С\Ь2 ~СФ\ у=£і£іііЗ Е ї Д г ’ А

Program SISTEMA;Var А13 1 >С 1 *A2,B2,C2,D,XtY :real; begin

шгіїеІп(‘Введіть коефіцієнти системи write(‘al=’); readln(Al); write^bl^); read!n(Bl); write(‘c l= ^ readhi(Cl); wrile(‘a2=’); readln(A2);wrileCIßs’Xreadln(B2);write(‘c2=’Xreadln(C2);D:=A1*B2-A2*B1; if EK>0 then

beginX:=(C1 *B2-C2*B1)/D;Y:=(A 1 *C2~A2*C 1)/D; writeln(‘P03BfH30K системи

Page 81: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

80 Мова програмування Паскал

writeln(V>x:5:2/ у=\у:5:2); end і

else writeln(‘Система не має розв’язку’);end.

4, Скласти програму знаходження розв’язку лінійного рівняння іах + Ь « 0.

Розв’язаний,Program LINRTVN;Var AJ3,X:real; begin

отке1п(‘Введіть коефіцієнти а, b :’); wcite(‘ar=*);readln(A); іwrite(4b=’);readln(B);if A oO tbenX:=-B/A

else if B=0 thenwriteln(‘x може бути довільним числом’) I

else writeln(‘PiBffiiffiM не має розв’язків’); writeln(‘x=’,X);

end.

5. Скласти програму знаходження найбільшого спільного дільника (НСД) двоз натуральних чисел М і N. |

Розвгязання.Program PNSD;VarM,N,X,Y,NSD:integer;begin

таІе1п(‘Введіть дійсні числа: ’); \writeCm=’); \readln(M);write(‘n=’); іreadln(N);XHVt

while X o Y doifX>Y thenX:=X-Y >

dseY^Y-X; \

Page 82: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження 81

NSD:=X;

end.

4.23 Практична робота №5

ТЕМА: Створення та реалізація програм із розгалуженням.МЕТА: Навчитись складати та реалізовувати програми з використанням вказівок розгалуження.ЗАВДАННЯ ДЛЯ ПРАКТИЧНОЇ РОБОТИ.

1. Вивчити можливості мови програмування Паскаль з реалізації обчис­лювального процесу із розгалуженням.

2. Відповісти на контрольні питання.3. Скласти програму розв’язання задачі згідно із завданням.4. Виконати складену програму.5. Підготувати і використати тести (кількість тестів дорівнює кількості

віток розгалуження) для перевірки правильності функціонування програми.6. Оформити звіт з практичної роботи.

Зразок виконання практичної роботи ПРАКТИЧНА РОБОТА №5ТЕМА: Створення та реалізація програм із розгалуженням.МЕТА: Скласти програму обчислювального процесу із розгалуженням.ЗАВДАННЯ. Обчислити податок із заробітної плати в залежності від її вели­

чини за формулою:

Р =/7 = 0, якщо z<=17;р - 0.1*z, якщо 17<z<85;р = 0.15*(z-85) + 6.80, якщо z>=85

Програма розв’язування даної задачі мовою програмування Паскаль.Program PROBOTA5;Var P,Z:real; begin

writeln(‘Введіть значення величини заробітної плати:’);write(‘2̂ );readln(Z);ifZ<=17thenP:=0

Page 83: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

82 Мова програмування Паская

else if(Z>17) and (Z<85) thenP:=0.1*Z else P:=0.15*(Z-85)+6.80;

writeln(‘Прибутковий податок дорівнює М Н Д О Д О Ц ? P=’,P:5:2);

aid.Результати виконання програми:Введіть значення величини заробітної плати : z=®Прибутковий податок дорівнює :2=50.00 Р=5.00Тестування програми Z=10 Р=0.00 Z=40 Р=4.00 Z=100 Р=9.05

Завдання для практичної роботи

№ з/п Функція Умова Значення змінних '

L Y =at21п(/)1еа cos(bt )

1 5 /5 2t < l

t> 2

a = -0.5й = 2 1 / = 1

І

2.

U - 1х2ox+7>/jc

ln(x+9 yfx)

x< \3x-1.3x>l.3

a = 1.5 jt = l

3.

f

ax2 +&r + c x<l.2*=*1.2x>1.2

a m 2.8 ! 6 = -0.3

c = 4 ! x = l J

u + yl(x2+l) X(ax+b)Vx+1

Page 84: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження 83

4. Ї Ч

' » б X f і(х + ї)

Ьх1 ~&Jx lg(x+2b)

je <1.438 * 1 4x>1.4

ь - гX-1

l.Scos2 х+5а лг<2 a = 2.3, 5, L8ax + tga j r - i - Jfc* I

(х -2 )г +6 x> 2

№ з/п Функція Умова Значения змінних

x-J(x-a) x > a ' 0 *• 2.5 .

1* # ц . шЛЛшАе'" cos(ax)

X**#.$Ж#І

at s? 6.5 *

fct + Ig(èx) àx<l Д іЕ І7. î !

bx - lg(fet)foc* І bx » î

доУк

8. Г «,

(5хг +1) л/jT +-Г

>/х+/+ 1X

cos(x)+ йсг

X«0.5 x«0.5

,x > 0.5

/«2-,2 ж = 1.2

Page 85: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

84 Мова програмування Паст

9. ї -М2 + Ь віп(/) М+Ьаі1 -Ьсов(0 ++

*»*.

V II

Л

ОО

О а ж 2.5 6 = 0.4 / = 0.1 |

р

1в ( х ) + 2 х 2 X < 1 а = 0.9 410. У = 2а со8(*)+За Х = 1 Ь = 5

(ах+Ь) Х > 1 х = 2(х2-1) і

■ ■ 3

4.2.4 Запитання, завдання, тести

Запитання для самоконтролю:1. Як записується і виконується вказівка розгалуження в повній формії2. Як записується і виконується вказівка розгалуження в скороченій фор*3. Чи можна у вказівці розгалуження використовувати складені вказіві4. Які особливості використання символу у вказівці розгалуження?5. Як описуються і для чого призначені мітки?6. Як записується і для чого використовується вказівка безумовного перс

ходу Ооіо?7. Як записується і виконується вказівка варіанта?8. Що таке селектор і які вимоги до його використання?

Завдання для самостійного виконання1. Скласти програму для обчислення значення функції:

вілх, якщо х < а;Г = Соях, якщо а<х<Ь;

Т{рс, якщо х>Ь.

2. Дослідити, чи можна побудувати трикутник, сторони якого дорівнюють а, Ь, с\ 3« Скласти програму визначення дня тижня за його порядковим номером.

Page 86: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Вказівки повторення і розгалуження 85

4. Скласти програму визначення кварталу року за порядковим номером місяця.5. Скласти програму виконання арифметичної операції +, % / над числами а і Ь залежно від натиснутої клавіші.6. Скласти програму знаходження модуля дійсного числа.

7. Скласти програму розв’язання лінійної нерівності ах + Ь > 0

Тести1. Які з наведених нижче вказівок розгалуження є:

1) правильними____________2) неправильними_____ ________а) if a<b then а:=а+1 else b:=b-l;б) if (х<5) and (у>3) then s:=s+l; else s:=s-l;в) if a o b then b:=a;*;if9thenk:=k+l.

2. Які значення будуть мати змінні А і В в результаті виконання вказівки розгалуження:

if А<В then А:=В else В.-А, якщо перед її виконанням А=0.5, В=-1.7

Відповідь А=_______________ В=__________________

3. Яка задача розв’язується в результаті виконання вказівки: if х<у then max:=y else max:=x?Відповідь -______________________________________________

4. При яких значеннях а і Ь, умова а>Ь буде:1) істинна _______________ 2) хибна _________________а) з=2> Ь=5; ф з=5,Ь=2; ^з=2,Ь=2

5. Знайдіть значення величини С після виконання вказівки розгалуження: ifb>=6 then с:=5 else с:=12, якщо1) Ь=2, с=__________________________2)Ь=16, с=_________ ;_____ _________3)_Ь=6, с=_____ ____________________

Page 87: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

86 Мова програмування Пі

6. Яке значення величини D, якщо після виконання вказівкиif d<=4 then с:=5 else с:=10;1) с=5; d = ________________ 2) с=10; d=a) d=4; б) d=10; в) d=2;

7* При якому значенні К, після виконання вказівки варіанту case К. of: *.

k 1 :writeln(‘Відмінно’); k2:writeln(^o6pe’); k3 :отке1п(‘Посередньо*); к4:отке1п(‘ЗадовІльно’)

end;К=________________ a)kl=5К=_________________ 6)k2=4К=___________ ___ в)к3=3К= ___________ г)к4=2

1) Добре2) Посередньо3) Задовільно4) Відмінно

8. Яке значення буде мати змінна S після виконання вказівки розі Label Ш begin

SE=t rre=3;

1: if k>=m then goto 2; s=eHn; k=fcal; goto 1;

2:end.якщоl)k=2 S5®2)k=3 s=3)k»l s=4)k=5 s=5)k=0 s=

Page 88: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Табличні величини. Масиви 87

5. ТАБЛИЧНІ ВЕЛИЧИНИ. МАСИВИ

5Л Табличні величини та їх опис мовою програмування

Одновимірні масивиМасив — це структурний тип даних, який складається з фіксованого чис­

ла елементів одного і того ж типу.Одновимірний масив — це лінійно впорядкована сукупність елементів

одного і того ж типу.Характерні властивості масиву;1. Тип елементів масиву повинен бути конкретно описаний. До кожного

елемента масиву існує прямий доступ.2. Число елементів масиву визначається під час його опису і надалі не

змінюється.* Описати масив можна таким чином:

1-Щ СШІбгtype ім’я типу=аггау[тип індексу] of тип компонент масиву; var ідентифікатор масиву:ім’я типу;Наприклад.type MAS=array[ 1 ..5] of integer; var A:MAS;2-ий спосіб.var ідентифікатор масиву:array[m..n] of тип елементів масиву; де m, n — константи цілого типу.Наприклад.A:array[1..5] of integer;B:array[5..10] of real; ^Один і той самий масив А в наведених вище прикладах описаний двома

Різними способами.При зверненні до масиву потрібно вказати ідентифікатор змінної-масиву, а та­

кож ще й індекс, який вказує на місцезнаходження необхідного значення в масиві. |Ндекс записується біля ідентифікатора змінної-масиву в квадратних дужках. Тип 1аДексу повинен належати до будь-якого скалярного типу, крім дійсного.

Наприклад. а[1], а[5], Ь[2]

Page 89: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

88 Мова програмування Паск

Паскаль не має засобів одночасного введення-виведення всіх елементі масиву, тому введення і виведення значень здійснюється поелементно.

Під час роботи з масивами програма записується для роботи лише з одніє- величиною-елементом масиву, а потім охоплюється циклом, який почерго перебирає всі елементи масиву.

Двовимірні масивиДвовимірні масиви можна розглядати як таблицю, яка складаютьс

з ш-рядків і п-стовпчиків.В загальному вишяді двовимірний масив описується таким чином:1—ий спосіб.typeім’я тилу=аггау[тип індексу] o f array [тип індексу] o f тип компонент;var ідентифікатор масиву:ім9я типу;Наприклад.

type MAS=array[l ..5] of array [1 ..4] of integer; varMATR:MAS;

2-ий спосіб. var

ім’я масиву:аггау[т. .n,k..h] o f тип елементів масиву;Наприклад:

varMATR:array[1..10,l..4] o f integer;

Один і той самий двовимірний масив MATR описаний вище двома сшН собами. І

Звернення до елементів масиву, описаного таким чином, здійснюється так:;іMATR[ij] — це елемент масиву MATR, який знаходиться на перетині?

і-рядка і j-стовпчика.Наприклад:MATR[5,3] — елемент, який знаходиться на перетині 5-го рядка і 3-roj

стовпчика. ІОпрацювання елементів двовимірного масиву здійснюється таким самим

чином, як і з одновимірним. Єдина відмінність — це те, що необхідно вико ристовувати вкладені цикли.

В даному прикладі введення елементів масиву здійснюється з допомогою І поєднання вказівок write і readln. Масив буде записаний не у вигляді двови- | мірної таблиці, а таблиця витягнеться у стовпець.

Page 90: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Табличні величини. Масиви 89

Write(‘BBefliTb a[\i,V jV ] = ‘) — в даному рядку записується підказка для програміста у вигляді — а[1,2]=, тобто інформація про те, який елемент масиву вводимо. Readln (М[і j]) — зчитує елемент масиву.

Щоб можна було вводити таблицю в “природньому” вигляді — рядок за рядком, необхідно використати іншу форму введення елементів двовимірного масиву:

for і:=1 to 3 dobegin j

forj:=l to4read(M[ij]); readln;

end;Виведення елементів двовимірного масиву необхідно також здійснювати

у циклі:fori:=l to 3 do

forj:=l to4dowriteln(‘a[‘4J,]=’,a[ij]);

В даному випадку всі елементи таблиці будуть записані у вигляді одного стовпчика.

Щоб виведення таблиці здійснювалося в “природньому” вигляді, тобто рядок за рядком, необхідно використати таку форму виведення двовимірногомасиву:

for і:=1 to 3 do begin

-- for j:= l to 4 do write(a[i j]:6); writeln;

end;В даному випадку таблиця буде виведена так, як вона описана var

а:аггау[1..3,1..4] of integer; (3 рядки по 4 числа в кожному).

5.2 Алгоритм знаходження суми й добутку елементів таблиць1. Знайти суму елементів одновимірного масиву.

Program SmnmaLinMassiv;Var A:array[1..5] of integer;

i:integer;S:integer,

beginfori:=l to 5 do

Page 91: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

90 Мова програмування Паск

beginwriteCA[\i/K);readln(A[i]);

end;

for i:=l to 5 do S:=S+A[i]; writeln(‘ Масив A: ’); writeln;for i:=l to 5 do write(A[i]:5);writeln;writeln(‘S=’,S);

end.2. Скласти програму знаходження суми всіх елементів двовимірного масиву

program SummaMatrMassiv; var

М:аггау[1 „3,1 ..4] of integer;S,ij:integer;

beginfori:=lto3do

forj:=lto4dobegin

ш ке(‘Введіть MГ А У ІЛ = ‘); readln (M[ijj);

end;SpQfori:=l to 3 do

forj:=lto4do S:=S+M[ij];

writeln(*S=,,S); end.

3. Скласти програму знаходження добутку всіх елементів одновимірн масиву.

Program DobutokLinMas;Const N=10;VarM:array[l..N] of integer;

i,D:integer;begin

Page 92: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Табличні величини. Масиви 91

for і:=1 to N do begin

writeCmlU’K );readln(M[i]);

end;0=1;for i:=l to N do D:=D*M[i]; writeln(‘MacHB m:’); for i:=l toN do write(M[i]:5); writeln; writeln(‘I>=,J))

end.

5.3 Складання алгоритмів та програм на опрацювання табличних величин1. Скласти програму знаходження суми двох одновимірних масивів.

Program SummaLinMasl;ConstN=10;Var A:array[l ..N] of integer;

B:array[l ..N] of integer;C:array[l..N] of integer; i:integer;

beginfori:s=l toNdo

beginwriteO\[‘̂ K ) ;readln(A[i]);

end; fori:=l toNdo

beginwrite(eB [‘4 /Ю ; readln(B[i]);

end;fori:=l to N do C[i]:=A[i]+B[i]; writeln;writeln(4MacHB a: ’); writeln;for i:=l toN do write(A[i]:5);

Page 93: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

92 Мова програмування Паск.

writeln;writeln(‘Масив b:’); writeln;for i:=l to N do write(B[i]:5); writeln;writeln(‘MacHB c:’); writeln;for i:=l to N do write(C[i]:5); writeln;

end.2. Скласти програму знаходження суми двох двовимірних масивів.

Program SummaMatrMassiv;Var А:аггау[1..3,1..4] o f integer;

B:array[1..3,1..4] o f integer;C:array[1..3,l-*4] of integer; ijiinteger;

beginfori:=l to3do

forj:=l to 4 do begin

write(‘BBe;pTb A [\i,y j,*] * 4); readln (A[i j]);

■S. Лfori:=l to3do forj:= lto4do

beginмтіІе(‘Введіть B f M V = ‘); readln (B[i j]);

end; for i:=l to3do

forj:= lto4do begin

C[ij]:=A[ij]+B[ij];end;

writeln;writeln(‘MacHB a:’);writeln;fori:=lto3do

Page 94: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Табличні величини. Масиви 93

beginfor j:= l to 4 do write(A[ij]:5); writeln;

end; writeln;writeln(‘MacHB b:’); writeln; fori:= lto3do

beginfor j:= l to 4 do write(B[ij]:5); writeln;

end; writeln;writeln(‘MacHB c:’); writeln; fori:=*l to3do begin

for j:= l to 4 do write(c[i j]:5); writeln;

end; end

3. Скласти програму знаходження добутку двох двовимірних масивів.Program DobutokMatrMassiv;Var A:array[l ..3,1 ..4] of integer;

B:array[1..4,1..3] o f integer;С:агтау[1..3,1..3] o f integer; ij,k,S:integer,

beginfori:=lto3do

. forj:=l to 4 do begin

writet^Be^Tb A[‘,i/,’j , ’] = 4);readln (A[i j]);

end; for i:=l to 4 do

forj:=l to3do begin

write(‘BBe®Tb B[e,i,YjV] = ‘);

Page 95: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

94 Moca npoepaMyeaHHM Hock

readln (B[ij]>;end;

fori:=lto3do forj:=l to3do

begin &=flSfork:=l to4do

begins:=s4a[ijc]*b[kj];

end;C[ij]rf;

end;writeln;writeln(‘MacHB a:*); writeln; fori:=l to3do

beginfor j:=l to 4 do write(A[ij]:5); writeln;

end; writeln;writeln(‘MacHB b: ’); writeln; fori:=l to 4 do

beginfor j:=l to 3 do write(B[i j]:5); writeln;

end; writeln;writeln(‘MacHB e:’); writeln; fori:=l to3do

beginfor j:=l to 3 do write(C[i j]:5); writeln;

end; end

Page 96: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Табличні величини. Масиви 95

5.4 Алгоритми пошуку в таблицях елементів із деякою властивістю

1. Знайти мінімальний елемент в одновимірному масиві.Program MinimumLinMas;Const N=10,Var M:array{l ..N] of integer;

i,MIN:integer;begin

fori:=l toNdo begin

w riteO nm ^);readln(M[i]);

end;Nfl№=M[l];forb=ltoNdo

if M[i]<MIN then MN:=M[i]; writeln(‘MacHB m: ’); writeln;for i:=l to N do write(M[i]:5);writeln;writeln;writeln(<min=’,MIN)end.

2. Знайти максимальний елемент у двовимірному масиві.Program MaximumMatrMassiv;Var M:array[l »3,1 ..4] o f integer;

ij,max: integer; beginfori:=l to3do

forj:-l to4do begin

write(‘BBefliTb M [\i,7 j,*] = ‘); readln (M[i j]); 1

end;MAX:=M[1,1];fori:=lto3do

forj:=lto4do

Page 97: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

96 Мова програмування Пасі

if М[і j]>MAX then MAX:=M[ij]; writeln;writeln(‘MacHB m: ’); writeln; fori:=lto3do

beginfor j:=l to 4 do write(M[i j]:5); writeln;

end; writeln;writeln(‘max=’,MAX); end.

5.5 Алгоритми впорядкування табличних величин*Метод бульбашки99

“Метод бульбашки” основується на перестановці сусідніх чисел. Для впс рядкування елементів масиву здійснюємо повторні проходи по масиву, коа ного разу переміщаючи найменший елемент частини масиву, що залишивс* на початок.

Переміщення елементів масиву здійснюється таким чином: переглядає» масив справа наліво, порівнюючи пари сусідніх чисел; якщо числа в naj розміщені в порядку зростання, то залишаємо їх без зміни, а якщо ні — міняємо їх місцями.

В результаті першого проходу найменше число буде поставлене на поча| ток масиву. У другому проході такі операції виконуюються над елементамі з останнього до другого, у третьому — з останнього до третього і т.д. Впс рядкування масиву буде закінчено, якщо при проході масиву не виконувати-; меться жодної перестановки елементів масиву. Факт перестановки фіксується з допомогою допоміжної змінної ргар, яка на початку має значення 0 і набу­ває значення 1 тоді, коли виконуватиметься перестановка в якій-небудь парі.| Прапорець PRAP використовується з метою економії часу в тому випадку*! коли частина елементів масиву наперед впорядкована.

Program BUBBLESORT;* Uses CRT;

Const N=10; {кількість елементів масиву}Var A:array[ 1 ..N] of integer; {опис масиву}

ij: integer; {допоміжні змінні}ADOP:integer; {допоміжна змінна}

Page 98: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Табличні величини. Масиви 97

PRAP:integer;begin

clrscr;writeln(‘BBeAiTb елемента масиву’); fori:=ltoNdo

beginwrite(sA[‘,і,’]=’); readln(A[i]);

end;writeln(4MacHB до сортування: ’); writeln;

Чот i:«l toN dowrite(A[i]:5); writeln;

repeatWpHfc.forj:=N downtoi do

beginif A[)]<A[j-l] then

beginADOP:=A[j-l];A[j-l]:=A{j];Aß]:=ADOP;PRAP?=1;

end;end;

fcüij until PRAP=0; writeln;writeln(‘MacHB після сортування:’); writeln;for i:=l to N do write(A[i]:5); writeln;

end.

Впорядкування елементів масиву методом вибору мінімального елемента

Даний метод основується на тому, що масив переглядається перший раз. Знаходиться мінімальний елемент цього масиву, який міняється місцями з пер-

Page 99: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

98 Мова програмування Пас

шим елементом масиву. Другий раз масив переглядається, починаючи з того елементу. Знову знаходиться мінімальний елемент, який міняється місіз другим елементом масиву. Даний процес виконується до тих пір, поки ! буде поставлено на місце N-1-ий елемент. §

Program MINSORT;Uses CRT;Const № 10; {кількість елементів масиву}Var А:агтау[1..п] of integer, {опис масиву}

ij:mteg<^; {допоміжні змінні}Amin:integer; {допоміжна змінна для}

{мінімального елементу масиву} l:integer; {порядковий номер}

{мінімального елементу масиву}begin

ClrScr,writeln(4 Введіть елементи масиву*); fori:=l toNdo begin

w i te ( m V ) ;readln(A[i]);

end;writeIn(4MacHB до сортування:’); writeln;for i:=l toN do write(A[i]:5); writeln; for i:=l toNdo begin

Anm*=A[i];HP&kwhile j<i*N do

beginif Amin>A[j] then

beginAnm*=A[j];H

end;

end;

Page 100: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Табличні величини. Масиви 99

А[1]:=А[0 ;А[і]:=Ашіп;

end;writeln;* іwriteIn(‘MacHB після сортування: ’);writeln;fori:s=l to N do write(A[i}:5); writeln;

end.

5.6 Складання алгоритмів та програм на опрацювання табличних величинІ. Скласти програму знаходження суми елементів кожного рядка таблиці Ж та занести її до масиву С.

Program SummaMatrMassiv;VarM:array[1..3,l"4] of integer;

C:array[1..3] of integer; ij,S:mteger;

beginfor i:-l to3do

forj;*l to 4 do begin

«тіІе(‘Введіть МГ,і, 7 j , ’] m ‘); readln (M[i j]};

end; fori:=l to3do

begin

forj:=l to 4 do S?=S+M[y];

Cffl?=S;end;

writeln;writeln(‘MacHB M:’); writeln; fori:^l to 3 do

beginforj:=l to 4 do write(M[y]:5);

Page 101: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

100 Мова програмування Паск

writeln;end;

writeln;writeln(‘MacHB C:*); fori:=l to3do

write(c[i]:5); writeln;

end.

2. Переставити елементи масиву з 10 цілих чисел у зворотньому порядку

Var X:array[l ..N] of integer;ij,m,a:integer;

beginwriteln(‘BBeAiTb початкові дані’); fori:=l toNdo

beginwriteex[‘A’K );readln(X[i]);end;

writeln;writeln(‘MacHB до перестановки: ’); writeln;for i:=l to N do write(x[i]:5); writeln;m:=N div 2; {число перестановок}

end;writeln;writeln(‘BHram масиву після перестановки:’); writeln;

Program PERESTANOVKA; ConstN=10;

fori:=l tomdo

for i:=l toNdo

Page 102: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Табличні величини. Масиви 101

write(X[i]:5);writeln;

end.Примітка.При визначенні числа перестановок, якщо кількість чисел у масиві буде

непарною, то середнє число залишиться на місці. Також складається вражен­ня, що вказівка j:=N в даному прикладі зайва і можна замість j писати N. Але це невірно, тому що не можна змінювати іменовану константу N.

3. У квадратній таблиці з правого боку від побічної діагоналі, включаючи її, знайти найменший елемент і відповідний номер рядка.

Program PobichnaDiagonal;ConstM=5;

тVar A:array[l..N,l ..М] o f integer;

і j,MIN,NOMER:integer; begin

отгке1п(‘Введіть початкові дані:*); fori:=ltoN do

beginfor j:= l to M do read (A[i j]); readln;

end;NOMER:=l;MIN:=A[1,5];

fori:=l toNdoforj:=M-i+l to M do

if A[i j]<MIN then begin

MI№=A[ij];NOMER.*=i;

end;writeln;writeln(‘MacHB a:’); writeln;for i:=l to M do

beginfor j:= l to N do write(A[ij]:5);

Page 103: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

102 Мова програмування Паш

\vriteln; епсі;

\угііє1п(‘ А мінімальне =\МВД);\*тіїе1п(‘Номер рядка = ‘»ИОМЕК); епсі.

Примітка.В даній програмі важливе місце займає спосіб організації внутрішньо

циклу. При і-1 індексі приймає з н а ч е н н я п р и і=2 індексі буде змінював від 4 до 5> і т.п. При і=5 індекс} буде змінюватись від 1 до 5. Такий сп< визначення індексів дає можливість переглянути всі елементи, які знаход ся на побічній діагоналі та з правого боку від неї.

Варіанти внутрішніх циклів для аналізу інших частин таблиці мають ві лад:

к>і<іо...— для елементів, розміщених зліва від головної діагош2. Іог уМ іо т до ... — для елементів, розміщених справа від голови'

діагоналі. |3, {от і;=1 їо т+ 1 -і сіо ... — для елементів, розміщених зліва від побічн

діагоналі.

5Л Практична робота №&„

ТЕМА Створення та реалізація програм опрацювання табличних величин. -МЕТА Навчитись складати та реалізовувати програми опрацювання табли

них величин.ЗАВДАННЯ ДЛЯ ПРАКТИЧНОЇ РОБОТИ.

1. Вивчити можливості мови програмування Паскаль по реалізації вказів^ опрацювання табличних величин:

а) лінійних масивів;б) двовимірних масивів;

2. Відповісти на контрольні питання. {3. Скласти програму розв’язання задачі згідно із завданням.4. Виконати дану програму.5. Підготувати і використати тести для перевірки правильності функцІ;

онування програми.6. Оформити звіт з практичної роботи.

Page 104: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Табличні величини. Масиви 103

Зразок виконання практичної роботи ПРАКТИЧНА РОБОТА №6

ТЕМА: Створення та реалізація програм опрацювання табличних величин. МЕТА: Навчитись складати та реалізовувати програми опрацювання таблич­

них величин.ЗАДАНА. Скласти програму для розшукування додатних елементів матриці

А[1..3, 1..4). В кожному рядку друкувати елементи, які належать до даного рядка таблиці. Якщо в рядку немає додатних елементів, то він повинен бути порожнім.

Програма розв’язування даної задачі мовою програмування Паскаль. Program PROBOTA6;Const N=3;

. NHVar A:array[ 1 .:N, 1. .M] of integer;

ij:integer,begin

WritelnCBB^nTb значення елементів таблиці: *)ї writeln; fori:*l toNdo

beginforj:»l toM do read(A[i j]); readln;

end; writeln;writeln(‘Загальний вигляд таблиці до перетворення:’); writeln; ' for fc=l to 3 do

beginfor j:=l to 4 do write(A[ij]:5); writeln;

end;writeln(‘3anuibHHM вигляд таблиці після перетворення:*); forb=lto3do

beginforj:=l to 4 do if A(i j]>0 then write(A[ij]:5)

else write(‘ ‘); writeln;

end; end.

Page 105: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

104 Мова програмування Пасі

Результати виконання програми:Загальний вигляд таблиці до перетворення:

1 2 - 3 42 - 2 - 6 7

- 1 - 1 3 4Загальний вигляд таблиці після перетворення:

І2І 2 4

7З 4

Завдання для практичної роботи1. Знайти мінімальний і максимальний елементи масиву А[1..10]іпомі:

їх місцями.2. Знайти середнє геометричне значення елементів масиву В[1..9].3. Знайти суму елементів масиву С[1.Л0] кратних 3.4. Знайти середнє арифметичне значення елементів масиву Х[1..8].5. Записати на місці від’ємних елементів таблиці А[1..4,1..5] нулі і ц;

кувати її.6. Знайти суму і кількість додатних елементів таблиці В[1..5,1..5], які з

ходяться над головною діагоналлю.7. Знайти найбільший і найменший елементи таблиці А[1..3,1..5] і пом

їх місцями. Надрукувати отриману таблицю.8. Знайти в кожному рядку таблиці В[1..4,1..4] найбільший елем

і поміняти його місцями з елементами головної діагоналі. Надрукувати ману таблицю.

9. Знайти суму і кількість від’ємних елементів таблиці С[1..5,1..5], ^ знаходяться під головною діагоналлю.

10. Переписати підряд в масив У[1.Л0] додатні і в масив Х[1..Ю] від’е елементи масиву 2[1..10]. ;3

5.8 Запитання, завдання, тести

Запитання для самоконтролю:1. Як описуються одновимірні масиви? |2. Як відбувається звернення до рдновимірних масивів?3. Як здійснюється введення і виведення одновимірних масивів?

Page 106: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Табличні величини. Масиви 105

4. Як описуються двовимірні масиви?5. Як здійснюється введення елементів двовимірного масиву?6. Як здійснюється виведення елементів двовимірного масиву?7. Який принцип використовується під час знаходження мінімального

елемента масиву?8. Який принцип використовується під час сортування елементів масиву

“бульбашковим” методом?9. Який принцип використовується під час сортування елементів масиву

методом знаходження мінімального елемента?

Завдання для самостійного виконання1. В одновимірному масиві А[1.Л0] обчислити добуток від’ємних елементів

масиву, які мають непарні індекси.2. У двовимірному масиві В[1..10,1..4] знайти найбільший елемент і його

номер.3. В одновимірному масиві знайти найменший елемент і поміняти його

місцями з першим елементом масиву.4. В одновимірному масиві довільних чисел А[1.Л0] знайти найбільший

елемент з від’ємних.5. В одновимірному масиві С[1..20] знайти суму і кількість елементів, які

менші 5 і індекс яких кратний 4.6. У двовимірному масиві D[1..5,1..5] знайти найменший елемент побічної

діагоналі.7. У двовимірному масиві К[1..4,1..5] знайти номер стовпчиків, в яких

середнє арифметичне його елементів менше, ніж середнє арифметичне елементів всього масиву.

8. В двовимірному масиві Н[1..5,1..6] всі від’ємні елементи замінити на їх модулі і вивести новий масив на екран дисплея.

9. Знайти добуток двох масивів а:[1..10] і Ь[1..Ю] і результат записати в масив с[1..10].

Тести1« Які з одновимірних масивів описані правильно, а які ні?

а) var A:array[1..5] of real;б) type MAS=ARRAY[‘A \.’D’];

var B:mas;в) var C: [integer] of char;r) var D:array[true..false] o f char;Правильно:____________ Неправильно: ______________

Page 107: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

106 Мова програмування П аст і

2. Які з двовимірних масивів описані правильно, а які ні?а) уаг А:аітау[1,.3,1~5] $ геаі;б) іуре МА8=аггау[‘А \/В \1 Д ] о{ іпХе$ег; уаг Вішав;в) іуре МА81=аітау[1..10] ої сЬаг; уаг С:аггау[1..3] ої МАБ1;г) уаг В:аггау[3,4] о ї integer;ґ) уаг Е:аггау[1..3],[1..5] ої* геаі;Правильно: _____________ Неправильно: ___

3. Чи буде правильно записана вказівка А[і]:=В, якщо змінні А, В описаі таким чином:

Іуре МА8=аітау[1 ..3,1 ..5} ої геаі;МА81=аггау[1 ..3] оГ геаі; уаг А :пш ;

В:пдо1;Відповідь: (так,ні)

4. Які з наведених нижче вказівок присвоювання є правильними, якщо зміні і константи в програмі описані таким чином:

СапйА^’СГиГ;

Туре МА8=аггау(1 ..4] ої сЬщ Уаг 8:сЬаг;

К:та$; і :п ^ е г ;

а)8.*=а; г)к[6]=Ь;б) к?=а; г)1с=Ь;в)к=Ь; д) і:=опЗ(к[і]);Правильно: _______________ Неправильно: ______ __

5. Скільки елементів містить кожен з масивів?а) уаг А:аггау[‘А \.’С,],2..5] ої геаі; _______________б) уаг В:аггау ̂ аке ..Шіе] ої1 Ьооіеап; ______________в) Іуре С=(ш1,ш2,шЗ,ш4); ____________уагХ:аггау[С];

Page 108: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

ГІГМИІіГГіГ^-......... . - - .

Табличні величини. Масиви 107

6. Використовуючи опис масивів із завданая 5, визначити, які з наведених нижче звернень до елементів масивів е правильними, а які ні?

а) а[‘В \3]; г) b[0,false];б) а[‘В’,б]; r) х[т2];в) b[true]; д) xftrue];Правильно: ______________ Неправильно: _______________

7. Вкажіть, які з наведених нижче масивів описані правильно, а які ні?а) var a:array[l,.20] o f real;б) type Mas:array[1..20] of real;

var A:Mas;в) type Mas=array[l :20] of real

var A:M as; r) type Mas=array[! ..20] o f real;

varA:Mas; . r) type Mas=array[l,20] o f real;

varA:Mas;д) var A:array[1..20] fo real;Правильно: _______________ Неправильно:

8. Задано опис масиву:type MASSlV=artay[1..20] of real; var A:massiv;

* i:integer;Вкажіть, які з наведених нижче вказівок записані правильно, а які ні?

а)і.-10; г) і.—10;a[fl?=7.5; а(Тгапс(і/2)]:=7.5;

Ц М Ц г)Ь=10;а[3*і]?=7.5; а£і/2]?*73;

в) і:=10; д)і?=10;а[і div 2 ]:=7.5; a[Int(i/2)]:=7.5

Правильно: - ________ Неправильно: _______________

Page 109: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

108 Мова програмування Пасі

6. ЗВЕРНЕННЯ ДО АЛГОРИТМІВ І ФУНКЩЙ

6.1 Підпрограми. Типи підпрограм. Опис підпрограм мовою програмування. Звернення до підпрограм

Підпрограмою — називається найменована логічно закінчена гр вказівок, яку можна викликати для виконання довільну кількість раз з різ місць програми.

Процедура — це незалежна найменована частина програми, признач для виконання конкретних дій.

Процедура складається із заголовка і тіла• Це — нібито прогр в мініатюрі. Коли процедура виконає своє завдання, програма продовж виконуватися з вказівки, яка слідує безпосередньо за вказівкою виклику п цедури. Використання імені процедури в програмі називається вказівк, процедури або викликом процедури.

Формат запису процедури:procedure <ім’я процедури>;

<тіло процедури>;

Процедури без параметрівВикористання процедур дає можливість підвищити продуктивність пр

зробити програму більш наочною, спростити розробку великих програм тоТак, наприклад, програму знаходження об’єму конуса можна розбити

декілька процедур:1) procedure InputDate;2) procedure Vkazivka;3) procedure OutputDate.Procedure InputDate виконує введення даних в програму.Procedure Vkazivka виконує вказівки для знаходження об’єму конуса.Procedure OutputDate виконує виведення даних на дисплей.

Всі змінні, які використовуються в процедурах без параметрів, опис ся в основній програмі.

Задача. Скласти програму знаходження об’єму конуса.Program Vkonus;ConstP=3.14;VarR,H,V:real;procedure InputDate; begin write(‘i^’);

Page 110: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Звернення до процедур і функцій 109

readln(R);write0b=’);readln(H);

end;procedure Vkazivka; begin

V:=P*Sqi(R)*H/3;end;procedure OutputDate; begin

writeln(‘V=’,V);end;begin {Основна програма}

InputDate;Vkazivka;OutputDate;

end.

Процедури з параметрамиУ процедурі можна оголошувати константи, змінні, інші процедури

і функції. Розділ опису в процедурах має таку саму структуру, як і в основній програмі.

Оголошені всередині процедури змінні називаються локальними по відношенню до даної процедури. Локальні змінні не доступні поза межами даної процедури. Зміни, які відбуваються з локальними змінними всередині процедури, не впливають на значення змінних з такими самими іменами, які описані поза даною процедурою.

Змінні, які використовуються в процедурі, але описані поза нею, назива­ються глобальними по відношенню до даної процедури; Будь-які зміни зна­чень глобальних змінних всередині процедури змінюють значення цих змінних поза процедурою.

Приклад програми, в якій використовується принцип локалізації.Program LOKALIZACIA;Var А,В* integer;procedure LOKAL;varA,X:char;begin

Page 111: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

110 Мова програмування Пасі

A.-Y;Х=Т;ВЯЗ+1;

end;begin

А?ф В?=100,LOKAL;writelnfWA’ b=’JB);

end.Змінна X — локальна для процедури LOKAL, тому головна програма-

може змінити її значення або звернутись до неї.Змінна В — глобальна для процедури LOKAL, вона відома і в прогряц

і в процедурі. Поскільки в процедурі немає іншого оголошення для змінної^ то всі зміни, які відбуваються зі значенням В в процедурі, зберігаються і пі виходу з неї.

Змінна А в основній програмі належить до цілого типу, але в процед LOKAL є своя власна змінна А, яка належить до типу char. Змінна А з голо ної програми недоступна в процедурі LOKAL. Всі зміни, які відбуваються значенням А в процедурі, втрачають свій зміст при виході з неї. і

Отже, в результаті виконання програми LOKAL на екран будуть вивед два числа: а=0 і Ь^ЮІ.

В Турбо-Паскалі введено розширення мови, завдяки чому в процед можуть бути доступними як локальні відносно неї змінні, так і змінні з та ми ж іменами, які описані в основній програмі. Для того, щоб реалізув таку можливість, звернення до змінних в процедурі виконується таким ном. До локальних змінних звернення реалізується просто по їх імені (тої як в стандартній мові), Для звернення до змінних, які однойменні з лока ними, але введені в основній програмі, використовується така форма: І

ім’я програмиЛм’я змінноїім’я програми — ім’я програми, яке вказано в заголовку програми “program З ім’я змінно! — ідентифікатор змінної, вказаний в розділі опису змінних

•Var...”З врахуванням цього програму LOKALIZAC1A можна перетворити та

щоб в процедурі LOKAL були доступні однойменні змінні, описані як в сам2 процедурі, так і в основній програмі.

Page 112: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Звернення до процедур і функцій 111

Program LOKALIZAC1A1;Var A,B:integer;procedure LOKAL; var A,X:char; begin

A?=*!*;Х^Г;IKMHnlLOKALIZACLAl ,A:=LOKALIZACIA 1. A+12;

end;begin

LOKAL;writeh '̂a .̂A,’ b=’3X

end.В результаті виконання програми Lokalizacial на екрані появляться такі

значення змінних: а—12 і Ь=101.

Параметри-значення і параметри-змінні у процедурах1. Параметри-значення

Наведений вище формат опису процедури можна доповнити таким чином. Після заголовка процедури в круглих дужках можуть вказуватись змінні (з до­помогою яких в процедуру передаються дані) і їх типи, які називаються параметрами-зниченнями. Перед ними відсутнє службове слово VAR.

Формат запису процедури:ім’я процедури (ім’я змінноктип змінної);

тіло процедури;Змінні, які описані в заголовку процедури, називаються формальними

параметрами. Змінні або константи, які описані у вказівці процедури при її виклику, називаються фактичними параметрами.

При зверненні до процедури з параметрами всі формальні параметри замінюються фактичними в порядку їх перелічення.

Program PARAMETR;Var C,D:integer(procedure PARAM(AJB:integer);var S:integer,begin

Page 113: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

112 Мова програмування Паск

S:=0;S:=A+B;writeln(‘s=\S)

end;

beginc m а м ж тBHOdtparam(C,D); { 1-ий спосіб }param(100,100) {2-ий спосіб }

end.Змінні А і В — це формальні параметри. Змінні С і D — фактичні naj

метри. Значення фактичних параметрів 0=10 і D=100 передаються формальні параметрам А і В.

Зверніть увагу на те, як двома способами можна викликати процедз і передати значення змінним.

Такий спосіб передачі параметрів процедурі називається передачею значенням. При цьому значення фактичного параметра робиться доступна для процедури. Його можна використовувати в роботі, змінювати довільн: чином. Але пі зміни проявляються тільки в межах процедури, тобто є лока ними. Вони не впливають на фактичні параметри поза процедурою.2. Параметри-змінні

Для того, щоб процедура змогла змінювати значення фактичних параметр ̂потрібно змінити спосіб передачі параметрів в процедуру. Новий спосіб зивається передачею по імені

При використанні цього способу заголовок процедури змінюється та* чином: перед ідентифікатором формального параметра в заголовку проце ри вказується службове слово Var.

Змінні, перед якими записане службове слово Var, називаються парам#, рами-змінними.

При виконанні процедури формальні Параметри-змінні замінюються ф: тичними параметрами. Будь-які зміни значення формального параметру-змін: приводять ло зміни значення фактичного параметру-змінної. За допомого" параметрів-змінних в основну програму передаються результати до вказів

^ай^аш ш и^^Задача. Дано дві трійки чисел: А1, В1, СІ і А2, В2, С2.Знайти значення сум:51 = шіп(А1, ВІ, Cl) + min(A2, В2, С2),52 т max(Al, В1, СІ) + тах(А2, В2, С2).

Page 114: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

т

Звернення до процедур і функцій І ІЗ

Для знаходження min і max з трьох чисел використаємо процедуру МіпМах.Program PRJKLAD;Var

А1 ,В 1 ,С 1 vA2,B2,C2,MIN1,MIN2,MAX 1 ,MAX2,S 1 ,S2:real;

procedure MinMax(A,B,C:real; var MIN,MAX:real); begin

MAJfoA;if MAX<B thenMAX:=B; if MAX<C then MAX:=C;M NsA;if MIN>B then min:=B; 'if MIN>C then MIN :=C;

end;

beginwrite(‘Al=1;readln(Al);write(‘Bl=’);readln(Bl);write(‘C l-);readln(Ci);write(‘A2=’);readln(A2);writeCB2=’);readln(B2);write(‘C2=’);readln(C2);MinMax(Al,Bl,Cl,MINl,MAXl);MinMax(A2,B2,C2,MIN2,MAX2);S1:=MIN1+MIN2;S2:=MAX1+MAX2;Writeln(‘Sl=’,Sl);Writeln(‘S2=,,S2);

end.

ФункціїЯкщо результатом виконання деякої процедури є одне скалярне значення,

то цю процедуру бажано оформити як функцію.Формат опису функції:function сім’я функціі>(список формальних параметрів):<тип результату>;

Т*---,___

t*«E дімлпО тАоаяорли

Page 115: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

114 Мова програмування Пасі

Звернення до функції (обов’язково повинно бути включене у вираз| операнд) має такий вигляд :

сім’я функції> (список фактичних параметрів).Задача. Знайти значення числа комбінацій п!

я!С" --------— і" т\(п~т)\

Знаходження значення факторіалу числа оформимо у вигляді функції, програма розв'язання даної Задачі матиме вигляд:

Program KOMBINACIJ; var N,M,C:mteger,

function FACT(K:integer):integer; vari,F:integer;begin I

Fj=l;fori:=l toKdoF:=F*i;FACE=Fi

end;begin

write(‘n=’); readln(N); write(‘m=’); readln(M);C:=FACT(N)Div(FACT(M)*FACT(N-M)); writeln(‘KLnbicicTb комбінацій з ‘,n,’ по ‘,m,’ = \C );

end.

Ш ш т т .Зверніть увагу на те, що в самому тілі функції FACT необхідно зміни

ім’я якої співпадає з ім’ям самої функції, присвоїти значеная результа виконання функції: FACT^F. І

6.2 Створення програм із використанням підпрограм

4, Знайти довжину сторін трикутника ABC, якщо відомі координати йо вершин г,), В(х2, у2> г2), С(х}, уу с,). Необхідно скористатись форЦлою:

d(AB)т^(xt - x 2) 1+(y,~y2)2+ (z ,-z2f .

Page 116: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Звернення до процедур і функцій 115

2. У масиві а,, а2, а3, ..., а„ в додатні і від’ємні числа. Знайти окремо сумудодатних і від’ємних чисел.

3. Скласти програму знаходження більшого з трьох чисел.4. Скласти програму знаходження площі чотирикутника АВСО, якщо відомо

довжини сторін АО, АВ, АС, ВС, С£>. При розв’язуванні задачі використати формулу Герона.

£+ !+ £; 5 ї*уІР(Р-а)(Р-Ь)(Р-с).

6.3 Практична робота №7

ТЕМА: Складання та реалізація програм, що містять звернену до підпрограм. МЕТА): Навчитись складати та реалізовувати програми з використанням про*

І цедур та функцій.ЗАВДАННЯ ДЛЯ ПРАКТИЧНОЇ РОБОТИ

1. Вивчити можливості мови програмування Паскаль по використанню процедур та функцій:

а) процедури без параметрів;б) локальні та глобальні змінні в процедурах;в) фактичні та формальні параметри;г) цередача результатів з процедури в основну програму; ґ) використання функцій в програмах.

2. Відповісти на контрольні питання.3. Скласти програму розв’язання задачі згідно із завданням.4. Виконати дану програму.5. Підготувати і використати тести для перевірки правильності

функціонування) програми.6. Оформити звіт з практичної роботи.

Зразок виконання практичної роботи ПРАКТИЧНА РОБОТА №7ТЕМА: Складання та реалізація програм, що містять звернення до підпрог­

рам.МЕТА: Скласти програму з використанням процедур.ЗАВДАННЯ. Скласти програму знаходження НСК (найменшого спільного

кратного) трьох натуральних чисел а, Ь, с.

Page 117: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

116 Мова програмування Паю

Програма розв’язування даної задачі мовою програмування Паскаль.Program PROBOTA7;Var A,B,C,Y,NSK:integer;procedure NSKl(M,N:integer; var pNSK:integer);begin

pNSffc=M*N; while M oN do

if M>N then M:=M-N elseN^N-M;

pNSK:=pNSK div M; . end;begin

writeln(‘BBeflhb значення трьох чисел a, b, c:’);write(‘a=’);readln(A);write(‘b=’);readk(B);write(‘o=’);read!n(C);NSK1(A,B,Y);NSK1 (C,Y,NSK); writeln(‘HCK=’,NSK);

Завдання для практичної роботи1. Підрахувати середнє арифметичне додатних елементів для масив

end.Результати виконання програми: Введіть значення трьох чисел а, Ь, с:т ь=юсбНСК=120Тестування програмиа£ЬЗе§

з4Ь6в?

з2Ь6сйЮ

нос=зо НСК=140 нск=зо

Page 118: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Звернення до процедур і функцій 117

2. Підрахувати суми додатних елементів кожного рядка для матриць А[ІЛ 1-5], В[ 1,4, 1.3]*

3. Підрахувати шЗ і Ї З і ,2

де і хт2 — найменші елементи масивів ЛГ^І.З], Л!̂ [1-.8]4. Підрахувати кількість нульових елементів для таблиць ̂ [1..4,1..6], В[\ ..4,1..8].5. Знайти суми елементів головних діагоналей таблиць ̂ [1.3,1.3], В[ 1.3,1.3].6. Знайти найбільший спільний дільник трьох натуральних чисел а> Ь, с.7. Знайти середнє значення двох масивів В[ 1.3] і порівняти їх між

собою. Надрукувати більше з них.8. Знайти в масивах X і У найбільші елементи і їх порядкові номери Л[1.*6],

У[1..8].

9. Знайти г = У™-~-Уаія ,

де хт — максимальний елемент масиву А[1.3];^шт — мінімальний елемент масиву У[1.3].

10. Підрахувати кількість від’ємних елементів кожного стовпчика таблиць А[І.А, 1.3]* Щ ІЛ 1.3].

6.4 Запитання, завдання, тестиЗапитання для самоконтролю:

1. Для чого призначені процедури?2. Як описується заголовок процедури?3. Чим відрізняються формальні і фактичні параметри?4. Чим відрізняються локальні і глобальні змінні?5. Для чого призначені функції?6. Як описується заголовок функції?7. Яка різниця між процедурою і функцією?8. Як викликаються процедури і функції?

Завдання для самостійного виконання1. Знайти найбільше число з трьох натуральних чисел.2. Дано координати вершин двох трикутників. Визначити, який з них має

більшу площу.

Page 119: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

118 Мова програмування Лає:

3. Знайти найменше число з трьох натуральних чисел,4. Знайти найменше спільне кратне двох натуральних чисел m і л з ві

ристанням підпрограми знаходження найбільшого спільного дільника натуральних чисел.

т*пНСК(т,л)НСД(т,и) ■

5. Знайти значення функції F =(m + л)!

Тести1. Вкажіть, які з процедур описані правильно, а які ні?

1) procedure energia; 4) procedure;

Щ■4

if%

var e:real; e=ro*g*h;

2) procedure energia; e:=m*g*h;

3) procedure energia; begin

er=m*g*hend;

Правильно:_______

beginif x<y then min:=x else min:=y

end;5) procedure Minimum;

beginif x<y then min:=x else min:=y

end;6) procedure Minimum;

if x<y then begin

min?=xelsemia^yend;

Неправильно: ___________• W2. Визначити» що буде виведено на екран дисплея після виконання програші

ViklikProcedure йProgram ViklikProcedure; >Var А,В-integer; |procedure PRl(X:integer,var Y :integer); begin

Y:=X+5 .1end;procedure PR2(X, Y :integer );

beginY:=X+5

end;

Page 120: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Звернення до процедур і функцій 119

beginA?=Sjт

PR2(A,B); Writeln(‘ b=’,b);

PR1(A,B);Write(‘b=’3);

а)b=l;b=lб)b=l;b=<5,в)Ь=6;Ы=1 r)b=6;b=6 i)b=5;b=lд)Ь=1;Ь=5е)b=5;b=6 e)b=l;b=l.

L i e . f - l Відповідь: v ‘ w ) G

3. Вкажіть, який з фрагметів записаний правильно:а) function SUM(N:integer): integer;

var s:integer;begin

fbrN:=l toN do S:=S+N; end;

б) function SUM(N:integer):integer; varS:integer;begin

forN:=l toN do S:=S+N;SUNtS

end;в) function SUM(N:integer);

var S:integer;begin

Sr§forN:=l toNdoS:=S SIM=S

end;r) integer function Sum(n:integer);

var s:integer; begin

SMSforN:=l toN do S:=S+N;SLM=S

end;Відповідь:_________________

Page 121: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

120 Мова програмування Пасі

7. РЯДКОВІ ВЕЛИЧИНИ

7.1 Вказівки і функції опрацювання рядкових величинРядок — це послідовність символів кодової таблиці ЕОМ. П

використанні у виразах рядок охоплюється з двох сторін апострофа: Кількість символів в рядку (максимальна довжина рядка) може змінюваті від 0 до 255.

Для опису рядкових величин використовують ідентифікатор string, пії якого в квадратних дужках записується максимальне значення довжини рг для даної величини.

Формат, var

<щентифікатор>:8Ігі^[максимальна довжина рядка]; |Приклад.

varRl:string[10];R2:string[4];

Максимальна довжина рядка для змінної г 1=10, для г2=4.Якщо довжина рядка не вказана, то вона автоматично приймає значе

ня — 255 байт.Рядкові величини можна використовувати в програмі і у вигляді конст Наприклад.

constЫАМЕ=’шформагака’;

Для роботи з рядковими величинами існує ряд процедур і функцій.Функція Concat

ФорматConcat(Rl,R2,R3);

Функція Concat здійснює склеювання рядків RI, R2, R3 в один рядо в такому порядку, в якому вони записані.

Наприклад.Program Fconcat;Const RI=’Мова‘;

R2=’ програмування R3=Turbo Pascal*;

Page 122: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Рядкові величини 121

Var R:string[35]; begin

R:=concat(Rl ,R2,R3); writeln(R);

end.На екрані дисплея буде надруковано:Мова програмування Turbo Pascal.

Даний результат можна отримати ще з допомогою операції склеювання—

Функція LengthФормат:

Length(R);Функція Length видає фактичну довжину рядка, який міститься в даній

змінній. При підрахуванні довжини рядка враховуються всі символи, в рм у числі і проміжки.

Функція CopyФормат

Copy(R,Poz,N);

Функція Copy копіює фрагмент довжиною N рядка R, починаючи з позиції Poz.

Функція PosФормат.

Pos(WORD^;Функція Pos знаходить номер позиції Р, з якої починається перше вход­

ження слова WORD в рядку R. Якщо слово WORD в рядку R не знайдено, то буде надруковано число 0.

Процедура InsertФормат

Insert(W ORD,R,Poz);Процедура Insert вставляє слово WORD в рядок R, починаючи з позиції Poz.

Процедура DeleteФормат

Delete(R,Poz,N);Процедура Delete знищує слово, яке починається з вказаної позиції Poz

і має задану довжину N в рядку R.

Page 123: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

122 Мова програмування Паскі

7.2 Складання та реалізація програм опрацювання рядковії величин

Program Fconcat; varR:string[35]; begin

R:=’Mosa ̂ ’програмування Ч ’ТшЬо Pascal’; writeln(R);

end.На екрані дисплея буде надруковано:Мова програмування Turbo Pascal.

Program Flength;Const R=’Turbo Pascal’;VarN:integer; begin

№=lenglh(R); writdn(*f)=*’JN);

end.На екрані дисплея буде надруковано: n=12. Program Fcopy;

const R=’Turbo Pascal’; var WORD:string[6];

Poz,N: integer;begin

Foe=7;NWjWORD:=Copy(RJ>ozJ4); writeln(WORD);

end.На екрані дисплея буде надруковано слово: Pascal.

Program Fpos;Const R=’CeBacTononb’;WORD=’cio’;Var P:integer; begin

P^Pos(WORItft);

Page 124: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Рядкові величини 123

writeln(4P=\P);end.

На екрані дисплея буде надруковано: Р=5

Program Finsert;VarPoz:integer;

R,WORD:string[35];begin

F oe=20;R:=’MoBa програмування Pascal*; word:=’Turbo ‘; insert(W ORD,R,Poz); writeln(R);

end.На екрані дисплея буде надруковано:Мова програмування Turbo Pascal

Program Fdelete;VarR:string[35];

N,Poz:integer;, begin

R:=’Moea програмування Turbo Pascal’;Boz?=l;

delete(R,Poz,N); •writeln(R);

end.На екрані дисплея буде надруковано:Turbo Pascal

7.3 Практична робота №8ТЕМА: Складання та реалізація програм опрацювання рядкових величин. МЕТА: Навчитись складати та реалізовувати програми з використанням про­

цедур та функцій опрацювання рядкових величин.ЗАВДАННЯ ДЛЯ ПРАКТИЧНОЇ РОБОТИ.

1. Вивчити можливості мови програмування Паскаль для використання процедур та функцій опрацювання рядкових величин:

Page 125: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

124 Мова програмування Паск

а) склеювання рядків;б) визначення довжини рядка;в) вставлення знищення слів;г) визначення позиції слова.

2. Відповісти на контрольні питання.3. Скласти програму розв’язання задачі відповідно до завдання.4. Виконати дану програму.5. Підготувати і використати тести для перевірки правильно

функціонування програми.6. Оформити звіт з практичної роботи.

Зразок виконання практичної роботи ПРАКТИЧНА РОБОТА № 8ТЕМА: Складання та реалізація програм опрацювання рядкових величин. МЕТА: Навчитися, складати та реалізовувати програми з використанням

процедур та функцій опрацювання рядкових величин. ЗАВДАННЯ. Скласти програму, яка замінює в реченні “Мова програму­

вання Turbo Pascal” словосполучення “Мова програмував; ня” на словосполучення “Програмування мовою”.

Програма розв’язування даної задачі на мові програмування Паскаль. Program Probota8;Var ЯД1 ,R2,R3 :string[255];

N:integer;begin

отіїе1п(‘Введіть початковий текст рядка:’); readln(R);writeln(‘Замінити слово:’); readln(Rl); writeln(‘Ha слово: ’); readln(R2); while pos(Rl,R)>0 do

beginN:=pos(Rl£); de!ete(R,N,length(Rl)); insert(R2,R,N);

end;writeln(‘Новий текст: ’); writeln(R);

end.

Page 126: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Рядкові величини 125

Результати виконання програми:Введіть початковий текст рядка:Мова програмування Turbo Pascal Замінити слово:Мова програмування На слово:Програмування мовою Новий текст:

4 Програмування мовою Turbo Pascal

Завдання для практичної роботи1. Ввести довільний текст. Відредагувати даний текст, замінивши всі симво­ли на і підрахувати кількість виконаних замін.2. Ввести довільний текст. У даному тексті знищити всі символи і під­рахувати довжину утвореного тексту.3. Ввести довільний текст. Перевірити, чи в заданому тексті кількість відкритих дужок дорівнює кількості закритих дужок.

^ Ввести довільний текст. У даному тексті замінити всі слова children на pupil.5. Ввести довільний текст. У даному тексті є символи Надрукувати ту частину тексту, яка знаходиться до першого символу6. Ввести довільний текст. У даному тексті визначити, скільки разів зустрічається буквосполучення то.7. Ввести довільний текст. У даному тексті підрахувати кількість букв а і б. Якщо букв а більше, ніж букв б, то в тексті знищити всі букви б, інакше — а.8. Ввести довільний текст. Поміняти місцями перший і останній символи тексту. &9. Ввести довільний текст. У даному тексті всі буквосполучення Sin замінити на Cos.10. Ввести довільний текст. У даному тексті знайти і надрукувати всі симво­ли, які записані після першого символу

Page 127: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

126 Мова програмування Паск

7.4 Запитання, завдання, тести

Запитання для самоконтролю:1. Як описуються рядкові величини?2. Як описується функція зчеплення?3. Яка функція визначає довжину рядка?4. Яка функція здійснює копіювання фрагментів рядка?5. Яка функція визначає місцезнаходження фрагмента в рядку?6. Яка процедура здійснює вставлення фрагмента в рядок?7. Яка процедура здійснює знищення фрагмента рядка?

Завдання для самостійного виконання

1. Відрахувати текст, знищуючи в ньому липгаі проміжки, залишаючи тіл* по Одному проміжку між словами.

2. В заданому тішгІ знайти найшротше і найдовше слова.3. В заданому тексті знищити всі букви к і визначити довжину тексту.4. В заданому тексті знайти і надрукувати вді слова, які починаються з восполучення “«е”.5. В заданому тексті замінити всі букви а на о.6. В заданому тексті після всіх букв в вставити букву а.7. В даному тексті підрахувати кількість слів. Слова в тексті відокремл

8. Ввести текст довільної довжини і надрукувати його у зворотньому пар

Тести

varL'integer;Вкажіть, яким вказівкам присвоювання з лівого стовпчика відповідаю

проміжками.

1) Дано:

значення L з правого.

1) 1 р Length (‘Pascal’);2) 1 Length (‘Фірма-IBM’);3) 1 у Length Г ) ; '4) 1 ж Length (‘Turbo’);

а) 4б) 11в) 0г) 8 ґ)6

ЯМ*

Page 128: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Рядкові величини 127

5) І := Length ('Програма*);6) 1 := Length (‘Microsoft’); _

____________ Д) 5___________ е) 9

є) З

2) Дано:CcнlStWORD=’фopмa’;Уаг К*'Щ :8Ігіод[20];

Вкажіть, яке значення прийме змінна Я з правого стовпчика після вико­найся вказівок з лівого.

І ) Rt=’«iHKa’;R1 :=Insert(WORD,R,3);

2) R - ’перетування’;R1 ?=Insert(WORD Д,4);

а) ‘інтиформака’;б) ‘інформатика’;в) ‘інтформаика’;г) 'переформатування*; ґ) ‘перформаетування’;д) ‘перетуформавання’.

3) Дано:Const R-’KoHetfWraiiMionb’;VarRl:strmg[15];

Вкажіть, які значення прийме змінна R1 з правого стовпчика після вико­нання вказівки з лівого:

Q U2)R1:=3)R1:=4)R1:=5) Rl:=

£ '4 )R b щ # Я Ь ^ 6 )R b

=Delete(R,l,5); _ =Delete(R,5,8); _ =Delete(R,8,3); _ =Delete(R,6,6); _ =Delete(R,6,10); =Delete(R,l,ll); =Delete(R,3,l); _ =Delete(R^2,9); _

A

а ) ‘Ko h c t’

б) ‘поль’в) ‘Костантинополь’г) ‘Кополь’ґ) ‘Констполь’д) ‘Константан’е) ‘Конполь’ є) ‘Консоль’ж) ‘Констанополь’з ) ‘Континополь’

4) Дано:Соші Я= ’ Константинополь ’;Уаг 8:8Ітщ[20];

Вкажіть, яким вказівкам присвоювання з лівого стовпчика відповідають значення 8 з правого стовпчика?

Page 129: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

128 Мова програмування Пасі

1) S:=Copy(R, 4, 4 );2) S:=Copy(R, 8, 3 );3) S:=Copy(R, 6, 4 );4) S:=Copy(R,12, 3 );5) S:=Copy(R,12, 4 );6) S:=Copy(R, 1, 5 );7) S:=Copy(R, 1,10 );

а) ‘тин*б) ‘поль’в) ‘пол’г) ‘Конст’ ґ) ‘анти*д) ‘стан*е) ‘ник’є) ‘Константан’ж) ‘Кон’

5) Дано:— /З • ^Const R:=* Без верби і калини кема України.’;VarWORD:string[5(>];

Poz:integer;Виконується вказівка присвоювання Poz:=Pos(WORD,R). Встановіть відповідність між стовпчиками.Значення WORD: Значення Poz:

J

1) W2) ‘верби’3) ‘і*4) ‘калини’5) ‘нема’6) ‘України’7)8) "

та) 5б) 13в) 20

г) 3 2 і) 11 А) 25 е) 1 с) 4

Page 130: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Графічний режим роботи ЕОМ 129

8. ГРАФІЧНИЙ РЕЖИМ РОБОТИ ЕОМ

8.1 Вказівки для роботи у графічному режимі. Створення графічних примітивівІніціалізація графічного режиму

Для підтримки програм, які використовують графічний режим роботи дисплея, в мові Turbo Pascal є модуль Graph.

Даний модуль необхідно описати в розділі підключення модулів таким чином:

Uses Graph;Далі в основній програмі в першу чергу треба ініціалізувати такий режим

за допомогою процедури (підпрограми) InitGraph. Загальний вигляд даної процедури такий:

InitGraph(iM9я драйвера, режим, шлях до драйвера);Для першого параметра — ім’я драйвера, в модулі Graph, можна вибрати

таку константу:Dcfcct-0;GGAfI;BGA=3;ШМ851Ф=6;VGA=$Так, наприклад, для дисплея VGA треба записати ім’я VGA або число 9.Параметрові — режим можна присвоїти значення, наприклад, або ім’я

VGAHI, або число 2. (Можна використовувати ще значення :VGALO або 0, VGAMED або 1. Ці значення необхідно вибирати, виходячи з технічних ха­рактеристик адаптера вашого дисплея).

На місці третього параметра — шлях до драйвера треба вказати шлях до каталога, де зберігається відповідний драйвер підтримки вибраного режиму.

Пршшад-InitGraph(VGA,2, ‘D:\TP70\BGI ’);InitGraph(VGA,2,6 A:\TP70’);

Якщо ініціалізація пройшла успішно, то можна планувати зображення на екрані з розрахунку 640x480 пікселів.

Зображення на екрані формується з окремих точок (їх називають пікселями), які об’єднуються в рядки. Кількість пікселів в одному радку та кількість рядків на екрані залежить від типу адаптера дисплея, який знахо­диться на окремій платі в системному блоці ЕОМ.

Page 131: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

130 Мова програмування Пасі

В нашому випадку екранна система координат дисплея має вигляд:

В тому випадку, коли тип адаптера невідомий або програма буде вико, ватися на комп’ютерах різного типу, треба забезпечити автоматичне тес вання адаптера. Для цього треба на місці першого параметра вказати іщ Detect (абоЧ)), а в цілому виклик процедури матиме вигляд: ^

InitGraph(Z>e/ecf, GraphMode, "); .ЦВ даному випадку на місці третього параметра вказано порожній ряд

Це значить, що відповідний драйвер повинен розміщуватися в каталозі з пілятором Turbo Pascal, інакше виникне помилка. Драйвери зберігаються у лах з розширенням .bgi (cga.bgi, egavga.bgi та інші).

Рекомендується завжди перевіряти результат роботи процедури InitGr для чого використовують функцію GraphResult. Якщо вона приймає значеі0, значить ініціалізація пройшла успішно, інакше — виявлено помилку.

Інша функція GraphErrorMsg видає код помилки. Повний перелік всіх помилок наведено в документації за Turbo Pascal.

Рекомендується використовувати приклад типової ініціалізації:Var GRAPHDRIVER, GRAPHMODE, ERRORCODE:integer; begin

GRAPHDRTVER:=Detect;InitGraph(GRAPHDRIVER,GRAPHMODE,”);ERRORCODE:=GraphResult;if ERRORCODEoO then

beginwriteln(‘ Помилка графіки: ’); writeIn(GraphErrorMsg(ERRORCODE)); writeln(‘npoipaMy закінчено’);Halt(l);

end;

Page 132: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Графічний режим роботи ЕОМ 131

.Після завершення роботи в графічному режимі його закривають процеду­рою СІовеОгарЬ для переходу в текстовий режим.ТиМеі групи процедур та графіки функцій

рипові процедури та функції для побудови графічних примітивів: РіііР1хе1(Х,У,колір) — виводить в задану позицію точку вказаного кольору. |Жіе(Х1,У1,Х2,У2) — проводить лінію між вказаними координатами по*

точним стилем та кольором.:|*ЬіеТ(>(Х,У) — проводить лінію від поточної точки до координат (Х,У). 1іпеКе1(Е)хД)у) — проводить лінію від поточної точки з приростом Ох та Оу. |їес*аі^Іе(Х1,У1,Х2,У2) — виводить прямокутник з координатами лівого

верх&ього та правого нижнього кутів.|&нг(ХІ,У1 Д2»У2) — виводить прямокутник, зафарбований поточним

стилем.ЄІгс^ХуУ^радіус) — зображає коло з центром в (Х>У), радіус треба зада-

ти в пікселях.Агс(Х,У,початковий кут,кінцевий кут,радіус) — виводить дугу між вказа­

ними кутами з центром в (Х,У). Кути задавати в градусах, порядок відрахування кутів співпадає з тим, який прийнято в тригонометрії.

Не#ІЛсе(Х,У,початковий кут,кінцевий кут,радіус) — зображує сектор, за­фарбований поточним стилем.

ЕШр*е(Х,У,початковий кут,кінцевий кут*горизонтальнйй радіус, вертикаль* ний радіус) — виводить еліпсну дугу.

ЙИРо1уО№,координати) — виводить замкнутий багатокутник і штрихує Його поточним видом штрихування. у

ВптРо1у(>{,координати) — зображає ламану лінію. N — кількість точок злому (з крайніми точками)» координати — масив координат точок злому (XI, У1, Х2, ..., Хп, Уп>

Для встановлення кольорів та штрихування використовують процедури:веіСоІог(колір) — встановлює колір для виведення символів та ліній. 8еіВКСо1ог(колір) — встановлює колір фону.Можна використовувати такі кольори:ВІаскМ) — чорний В1ие=1 — синій Отееп=2 — зелений вуап-З -— блакитний ЯесМ — червоний

Page 133: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

132 Мова програмування Пасі

Magenta=5 — фіолетовий Brown=̂ 6 — коричневий LightGray=7 — світло-сірий DarkGray=8 — темно-сірий LightBlue=9— яскраво-синій LightGreen=10 — яскраво-зелений LightGyan=ll — яскраво-блакитний LightRed=12 — рожевий LightMagenta= 13 — малиновий Yellow=14 — жовтий White=15— білий

SetFillStyle(KDA,колір) — встановлює вид штрихування відповідно з дом, який може приймати декілька значень, наприклад: Щ

SolidFill=l — суцільне штрихування LineFill=2 — штрихування лініями

HatcheFill=7 — штрихування символом

CloseDotFffl=l 1 — густе штрихування крапками FloodFill(X,Y,колір межі) — штрихує будь-яку замкнену область, X,Y

координати точки всередині області.Процедура ClearDevice очищає весь екран.

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

program PEJZAG; uses CRT, GRAPH;Const COORD:array[1..8] of integer=(475,200,585,275*365,

275,475,200);Var GRAPHDRIVER,GRAPHMODE,ERRORCODE:integer; begin

GRAPHDRIVER:=Detect;InitGraph(GRAPHDRIVER,GRAPHMODE, ’A:\tp60'); ERRORCODE:=GraphResult; if ERRORCODEoO then

begin

Page 134: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Графічний режим роботи ЕОМ 133

отіїе1п(‘Помилка графіки:’); writeln(GraphErrorMsg(ERRORCODE)); writeln(‘IIporpaMy закінчено’);Halt(l);

end;ClearDevice; {Очищення екрану дисплея}SetBKColor(9); {Встановлення кольору фону—

? голубого}? SetFillStyle(l,10); {Встановлення кольору

замальовування — зеленого}Ваг(0,350,640,480); {Малювання зеленої трави}SetColor(i4); {Встановлення кольору малювання ліній— жовтого} SetFillStyle(l, 14); {Встановлення кольору

замальовування — жовтого} PieSlice(0s0,270,360,80); {малювання сектора сонця}Line(0,0,10,150); {малювання променів сонця}Line(0,0,50,165);

Line(0,0,100,250);Line(0,0,120,190);Line(0,0,180,150);Line(0A25Q,75);Line(0,0,210,115);

Line(0,0,165,175);Line(0,0,230,40); - Line(0,Q,250,8);SetColor(9); {Встановлення кольору ліній— синього}SetFillStyle( 1,9); {Встановлення кольору замальовування-—синього} Ellipse(100,400,0,360,80,40); {Малювання озера}FloodF ill(100,400,9);SetFillStyIe(l,7);Ваг(375Д75,575,400);SetFillStyle(l,4);FfflPoIy(4,Coord);SetFillStyle(l,6);Bar(500,335,550,400);SfltFiUStyle(l,0);Bar(365,400,585,425);

Page 135: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

134 Мова програмування Паст

SetFUlStyle( 1,15);Ваг(400,300,465,350);SetColor(6);Rectangle(400,300,465,350); line(400,315,465,315); line(432,315,432,350); repeat {Затримка зображення} ш ііі keypressed; {на екрані}CloseGraph; {Закриття графічногб режиму}

end. і

Вказівку repeat until keypressed бажано використовувати в кожній програ для затримки виведення результатів і зображення на екрані дисплея. jj продовження роботи програми натисніть довільну клавішу. Вказівка місти) ся в стандартному модулі Crt. -

*«8.2 Практична робота №9ТЕМА: Створення графічних примітивів. ІМЕТА: Навчитись переходити в графічний режим роботи

і створювати найпростіші графічні примітиви, |

ЗАВДАННЯ ДЛЯ ПРАКТИЧНОЇ РОБОТИ.

1* Вивчити теоретичний матеріал з даної теми: І— перехід до графічного режиму роботи дисплея; л— вигляд “координатної сітки” екрану дисплея;— запис процедур та функцій зображення ліній та фігур; і— запис процедур та функцій встановлення кольорів фону та штриху вії

ня фігур.2* Скласти програму створення графічних примітивів.3. Виконати дану програму і вивести зображення малювання на екран дисгаи)4. Оформити звіт з практичної роботи. і

Зразок виконання практичної роботиПРАКТИЧНА РОБОТА № 9ТЕМА: Створення графічних примітивів.МЕТА: Скласти програму створення зображення малюнка.

Page 136: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Графічний режим роботы ЕОМ 135

Програма розв’язку даної задачі мовою програмування Паскалі» має вигляд:

Program PRQBQTA9;Jjpises CRT,GRAPH,DOS;:Const C60RDINATI:array[l»,24| of integer* p 0 0 t 150, 530, 210, 520, 210, 570, 280, j|5 0 t 280, 600, 345,, 400, 345, 460, 280,.440, 280* 480, 210, 470, 210, 500, 150);{Coordinati — координати вершин ялинки}VarGRAPHDRIVER,GRAPHMODE,ERRORCODE:integer; begin

GRAPHDRIVER:=Detect; л InitGraph(GRAPHDRIVER,GRAPHMODE,’A:\tp60');

ERRORCODE:=GraphResult;T , if ERRORCODEoO then

beginv \гаІе1п(‘Помилка графіки:’);

writeln(GraphErrorMsg(ERRORCODE));* writeln(‘nporpaMy закінчено’);

Hah(l); , end;

ClearDevice; {Очищення екрану дисплея}SetBKColor( 11); {Встановлення кольору фону —*голубою} SetFillStyle(l,15); {Встановлення кольору замальовування

— білого}Ваг(0,400,640,480); {Малювання снігу}SetColor(7);Ellipse(l 50,400,0,360,100,75);EHipse(l 50,275,0,360,74,50);Ellipse( 150,175,0,360,50,50);FloodFilI(l 50,400,7);FloodFill(150,275,7);FloodFill(l 50,175,7);SetColor(8);Line(140,60,160,60);Line(140,60,130,120);Une(160,60,170,120);SetColor(4);Line(225,200,225,350); ,

Page 137: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

136- Мова програмування Пасі

SetColor(4);Line(225,200,210,160);Line(225,200,240,160);Line(225Д00Д25,160);SetColor(9);SetFillStyIe(l,9);Circle(135,160,5);Circle(165,160,5);FloodFill(135,160,9);FloodFill(165,160,9);SetColor(4);Line(140,200,160,200);SetOolor(12);Line(150,170,150,190);SetColor(5);SetFillStyle(l,6);Circle(l50,255,8);Circle(150,285,8);Circle(150,365,8);Circle(l 50,400,8);Circle(150,435,8);FloodFill(150,255,5);FloodFill(l 50,285,5);FloodFill(150,365,5);FloodFill(150,400,5);

• FloodFill(l 50,435,5);SetFillStyle( 1,2); {Встановлення кольору замальовування —

зеленого}FillPoly(12,Coordinati); {малювання багатокутника— ялинки}Ьаг(475,345,525,450);repeat {Затримка зображення}until keypressed; {на екрані}CloseGraph; {Закриття графічного режиму}

end.

т

Page 138: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Графічний режим роботи ЕОМ 137

Завдання для практичної роботи №9

3 #з/Ін Вид фігури Колір

фонуКолірліній

Колірштриховки

щГг

# •

Г" '

...уу/УТ1!/...... фіолетовий чорний 1. жовтий2. синій

_ (■

2,блакитний червоний 1. світло-

сірий2. білий

3. зелений синій 1. червоний2. жовтий

І і іЩ - .

4. яскраво-блакитний

синій 1. червоний 12. жовтий

уЙііиІІШД г

Page 139: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

138 Мова програмування Пасі

№з/п Вид фігури Колір

фонуКолірліній

Колірштриховкщ

5. білий чорний 1. червоний2. коричневі

світло-сірий

темно- 1. жовтий сірий 2. коричневий .

ЖІНІжовтии чорнии 1. білий

2. синій

8. білий чорнии 1. коричневий2. сірий

Page 140: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Графічний режим роботи ЕОМ 139

8*3 Запитання, завдання, тести Запитаная для самоконтролю:1. Як в програмі необхідно описати підключення модуля для встановлення графічного режиму? 12. Як здійснюється ініціалізація графічного режиму?3. Який вигляд має екранна система координат дисплея в графічному режимі?4. Як зобразити на екрані точку, відрізок прямої, прямокутник, коло, еліпс, ламану лінію?5. З допомогою якої вказівки можна визначити колір точок та ліній?6. З допомогою якої вказівки можна змінювати колір фону?7. З допомогою якої вказівки можна встановити вид штрихування?8. Як здійснюється очищення екрану?9. З допомогою якої вказівки здійснюється закриття графічного режиму?

Page 141: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

140 Мова програмування Паскаль

Завдання для самостійного виконання1. Побудувати трикутник з вершинами в точках

(100,100), (150,100), (80,70).

колір ліній — червоний2. Побудувати прямокутник з вершинами

(80,80), (170,80), (170,150), (80,150). Замалювати його жовтим кольором. Колір фону — синій.

3. Побудувати і замалювати зеленим кольором круг радіусом 100, центр якої співпадає з центром екрану дисплея.

Колір фону — малиновий.4. Скласти програму послідовної побудови фігур, кожна з яких, почині з другої, вписана в попередню: прямокутник, ромб, елідс, коло.

Тести

1. Вкажіть яка, з перерахованих нижче графічних процедур, малює на екр<

2. Для роботи у графічному режимі необхідно підключити модуль:

a) DOS б) CRT в) GRAPH

З. Яка з вказівок ініціалізації графічного режиму записана правильно:а) InitGraph(VGA,2,’D:\TP70’)б) InitGraph(2,VGA,’D:\TP70')в) InitGraph(4D:\TP70,,VGA,2)

фону на екрані_6. еліпс_________7. встановлює колір

1. точку_______2. відрізок прямої3. дугу________4. прямокутник5. встановлює колір

а) PutPixelб) SetBKColorв) Arcг) Circleґ) Rectangleд) SetColorе) Line є) Ellipse

малювання ліній

Page 142: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Графічний режим роботи ЕОМ 141

4. Колір зображення точок та ліній можна встановити за допомогою процедури:-V . ____________________________________________ ______________________________________

..I a) SetBkColor в) SetFUlStyleі б) SetColor г) CloseGraph

5£Колір фону можна встановити за допомогою процедури:М ‘в) 'SetBkColor в) SetFillStyle^б ) SetColor г) CloseGraph

С Вид штрихування можна встановити за допомогою процедури:•V _■■й — ' ' f ' a ) SetBkColor в) SetFillStyleІ б) SetColor г) CloseGraphШ '^Встановити відповідність між процедурами та результатами їх дії:_____

1. ClearDevice а) Закриття графічного режиму2. CloseGraph б) Затримка зображення

: 3. Repeat Until KeyPressed в) Очищення екрана

Page 143: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

142 Мова програмування Пасі

9. ЗАПИСИ

Запис — це струкгурований тип даних, який складається з фіксован числа компонентів одного або декількох типів.

Визначення типу запис починається ідентифікатором REC0 і закінчується словом END. Між ними записується список компонент, які зиваються полями, із значенням ідентифікатора поля і типу кожного по

Формат.Туре

<ім’я типу>щrecordідентифікатор поля>: <тип компоненту

ідентифікатор поля>: <тип компоненту end;

varідентифікатор,...> 1 сім’я типу>;

Наприклад.Туре

CHILDREN=recordSurname :string[15]; {Прізвище учня }Name :string[100]; { Ім’я учня}B ir th y e a r :integer; {Рік народження}Street :string[20]; {Адреса учня}Phone :string[8]; {Телефон учня}

end;var

uchen: CHILDREN;Для звернення до полів запису треба вказати ім’я змінної запису, по

вити крапку, а після неї — ім’я поля.Наприклад.

uchen.Sumame, uchen.Name, uchen. Street., Складені імена можна використовувати (наприклад) у вказівках введен:

виведення.Наприклад.

read(uchen.Phone); write(uchen. Birthyear);

Page 144: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Зщиси 143

В деяких випадках, зручно використовувати масиви із записів. їх можна оШгсати таким чином:І Турей CHILDREN=recordр Surname :string[15]; {Прізвище учня}Jj Name :string[100]; {Ім’яучня}Щ Birthyear ‘integer; {Рік народження}Ж Street :string[20]; {Адреса учня}

Phone :string[8]; {Телефон учня}end;

■■ t- ' varuchen: array[L.10] of CHILDREN;

$ Звертатись до елементів масиву можна таким чином:t readln(uchen[i].Name);

readln(uchen[i].Phone);; writeln(uchen[i].Name);

writeln(uchen[i].Phone);

Використання вказівки WITH у записахДля скорочення записів складених імен використовується вказівка WITH

(з, разом з), яка має вигляд:WITH <змінна типу запис> do <вказівка>;

Якщо після слова do треба записати декілька вказівок, то їх треба об’єдна­ти в одну складену вказівку з допомогою слів begin і end,

with CHILDREN do begin

readln(Sumame);read!n(Name);readln(Birthyear);readln(Street);readln(Phone);

end;

program Dzapis;“їУре

CHILDREN == recordSurname :string[15]; {Прізвище учня}Name :string[100]; {Ім’яучня}

Page 145: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

144 Мова програмування Пас

Birthyear :integer; { Рік народження } Street :string[20]; { Адреса учня }Phone :string[8]; { Телефон учня }

end;var

uchen :array[1..3] of CHILDREN;i,k:integer;

beginfori:=lto3do

with uchenfi] do begin

write(‘BBe^Tb прізвище учня: ‘); readln(Surname); write(‘BBe,oiTb ім”я учня:4); readln(name);write((BBeAiTb рік народження:‘); readln(Birthyear); write(‘BBe1zaTb адресу учня: *); readln(Street);write(‘BBefliTb телефон учня: ‘); readln(Phone);

end;writeln(‘BBe^Tb порядковий номер учня, про якого4);write(‘xo4eTe отримати інформацію: ‘);readln(k);іИк;with uchenfi] do

beginwriteln(Sumame);writeln(Name);writeln(Birthyear);writeln(Street);writeln(Phone);

end;end.

Page 146: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Файли-« Й ш . 145

Щ ФАЙЛИ

' ■̂ В тих випадках, коли даних багато або їх треба довго зберігати, застосо­вують файли.

||Е>айл — це сукупність даних однакового типу Таке визначення збігається з ^значенням масиву, але, на відміну від останнього, файл зберігають на дфку» кількість даних у файлі при його описуванні не вказується, елементи ф§Йла не мають індексів, що утруднює роботу з ними./ Опис файлового типу має вигляд:fillY ТУре<ім’я типу>= File of <тип компонент>;

Наприклад.

І тУРеCLASS= file of integer,Var uchen: CLASS;

lichen — це змінна файлового типу.

Описати файл можна ще таким чином:var <ім’я файлової змінної>:й1е of <тип файлових компонент>;

Наприклад.

CHILDREN=recordSurname :string[15]; {Прізвище учня }Name :string[100]; {Ім’я учня }Birthyear : integer; {Рік народження}Street :string[20]; {Адреса учня}Phone :string[8];. {Телефон учня}

end;var

uchen: file of children;

Процедури і функції для роботи з файлами

Процедура AssignПроцедура Assign зв’язує деякий зовнішній файл на диску з файловою

змінною.

Page 147: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

146 Мова програмування Пі

Наприклад,Assign(class, ’school.dat’);

Файлова змінна class зв’язана з конкретним файлом на диску school Примітка. іВикористовувати процедуру Assign з уже попередньо відкритими ф

ми не можна.

Процедура ResetПроцедура Reset відкриває уже раніше існуючий файл даних на даґ

ім’я якого було перед цим пов’язане процедурою Assign з деякою файл;, змінною, для його зчитування або запису в нього даних.

Наприклад:Reset(class);

Відкриває уже існуючий файл school.dat.

Процедура RewriteПроцедура Rewrite створює новий файл і відкриває його. Якщо файл З

ким іменем уже існує, то його вмістиме знищується, а сам файл відкрш знову.

Наприклад;Rewrite(class);

Створюється і відкривається файл на диску school.dat, який пов* з файловою змінною class.

Процедура CloseПроцедура Close закриває файл school.dat, який зв’язаний з файло

змінною class.Наприклад,

Close(class);Файл schooLdat на диску закривається.

Функція EofФункція Eof набуває значення true, якщо досягнуто кінець файла, ін

набуває значення false.Ншдашшди

Eof(class);

Page 148: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Файли ш

Функція IORe&ultФункція IOResult використовується для пошуку HOMktidk, Які виникають

прй роботі з файлами. При безпомилковому виконанні останньої операції вв$дення-виведення — функція IOResult набуває значення 0, інакше — зна­чення L При цьому автоматичний контроль операцій в&едеййя-вйбеДення пйВйнен бути перед цим відключений з дойомогою директиви {$!-}. Після вф&ристання функції lOResult — автоматичний контролі» повинен бути SH0* ву включений директивою {$1+}.

.«■ Наприклад.

{ 1 4Reset(class);IF IOResult о 0 then

write(‘Помилка прй відкритті файла’);{11+}

Зіпut і зчитування даних з ф айліЗапне даних у файл вйкьнуєїься з допомогою процедури Write;Формат.

Write( <Ім,яі файла> > <ім*я змінної>);

Write(class,NAME);У файл на диску school.dat, який пов’язаний з файловою змінної glass*

буде записано значення змінної NAME.Зчитування даних з файла на диску виконується з допомогою процедури

Read.Формат,

Read( <ім*я файла>, <ім’я з м ін н і);Наприклад,

Read(class,NAME);З файла на диску sehooldat буде зчніане значення змінної NAME.Наведемо приклад програми FileWrite, яка s файл на ди§ку school.dat, ідо

пов’язаний з файловою змінною class буде запйсуваґй ім’я учйЯ; program FileWrite; type СШШЇШ№= sttteg[lS]j var class: file of CHILDREN;

SiifHametCHlLDREN;

Page 149: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

148 Мова програмування Паї

beginAssign(class,’school.dat’); rewrite(class);write(‘BBewTb прізвище учня: ‘);readln(Surname); |write(class,Surname); close(class);

end.

Наведемо приклад програми FileRead, яка з файла на диску school.dat, пов’язаний з файловою змінною class, буде зчитувати ім’я учня,

program FileRead; type CHILDREN=strmg[15]; var class:file of CHILDREN;

Sumame:CHILDREN; begin

Assign(class,’school.dat’); reset(class); read(class,Sumame);\*тке(‘Прізвшце учня:e); writeln(Sumame); close(class);

end.Наведемо приклад програми FileWriteRead, яка буде на диску створю]

файл даних school.dat на всіх учнів класу, що пов’язаний з файловою зміні class, і в даний файл спочатку буде записувати дані на всіх учнів класу, а п< буде зчитувати ці дані з файла на диску і виводити їх на екран дисплея.

Дана програма складається з декількох процедур і функцій.Процедура Create_filejschool спочатку зв’язує файлову змінну class з ф;

лом на диску school.dat. Потім вона відкриває цей файл, або якщо такої файла на диску немає, то створює його.

Процедура Input data school в свою чергу складається з декількох проз ДУР-

Процедура Input_data призначена для введення даних на учнів клі з клавіатури.

Процедура Zapusjiata записує ці дані в файл на диск. Використання стані дартної процедури Seek дає можливість перевести вказівник файла на кінеї файла.

і

Page 150: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Файли 149

Функція Povtor дає можливість вводити дані на потрібне нам число учнів класу.

■ Процедура Readdata зчитує дані з файла на диску і виводить їх на екран дисплея. Стандартна процедура Seek переводить вказівник файла на початок ф|йла.

Program FileWriteRead;Uses Crt;туре

CHILDREN=recordSurname :string[ 15]; {Прізвище учня }Name :string[100]; { Ім’я учня}Birtbyear :integer; {Рік народження }Street :string[20]; {Адреса учня}Phone :string[8]; {Телефон учня }

end;var

CLASS:file of children;UCHEN:Children;LITERAxhar;irinteger;

procedure create_file_school; begin

{SHAssign(CLASS, ’school.dflt’); reset(CLASS); if IoresultoO then

beginrewrite(class); if IoResultoO then

write(4Помилка при відкритті файла9)end;

{$1+}end;

procedure Input_data_school; procedure Inputdata;

Page 151: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Мова програмування

beginwith UCHEN do

begin .twriteCBeefliTb прізвище учня: *); readln(Sumame); write(‘Введіть Ши* учня: r*J| readln(name);write(‘BBefliTb рік народження: ‘); readln(Birthyear); write(‘BBefliTb адресу учня: ‘); readîn ( S tre е t) ;writeÇВведіть »«ф он учня: ‘); readln(Phone);

end;end;

procedure $spm_à»ta; begin

assign(CLASS,’school.dat’); reset(CLASS); seek(CLASS,i)i with uchen do

ifLength(Sumame)>0then write (CLASS,UCHEN);

ЫН-1;end; begin

fiUchai(CLASS,SizeOf(CLASS),’ ‘); writeln;with LFCHEN do Input_data; zapusjjata;

end; ,

Function Povtor:boolean;

Page 152: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Файли 151

beginwriteln;шйе(4Будете ще вводити даніСУЖ)?’); writeln;LITERA.-ReadKey;If (UTERA=’N’) Qr(Uten*=’n’)

thenPovton=true elsePovton=false;

end;

procedure Readjiata; begin

seek(CLASS,0); while(not Eof^CLASS)) do begin

read(CLASS,UCHEN); write(UCHEN.Sumame); write(* \UCHEN.Name); writeO \UCHEN.Birthyear); write(‘ *,UCHEN.Street); writeln(‘ \UCHEN.Phone);

end; end;begin

create_ffie_school;t arepeat

Input_data_school;Until Povtor; writeln; read_data; close (CLASS);

Page 153: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

152 Мова програмування Пі

11. ПРОЦЕДУРИ КЕРУВАННЯ ЗВУКОВИМИ 1 СИГНАЛАМИ

Для відтворення звуку в Турбо Паскалі використовуються проце модуля Crt в такій послідовності.

SoundSound(I) — процедура активізує звукові засоби ЕОМ. Цілочисельне

чення І вказує частоту звучання звуку в герцах. Звук вказаної частоти звучати до тих пір, доки не буде відмінений процедурою NoSound.

і і § I) 'XDelay J is& to L lb t-W l

С 'Delay(MS) — виконує затримку виконання програми на вказане мілісекунд. MS — число мілісекунд, протягом якого буде звучати звуко сигнал.

NoSoundNoSound — відміна звуку. Відміняється звуковий режим, заданий про

дурою Sound.Наприклад.

Program Dzvuk; %Uses Crt; begin

Sound(500);Delay(2000);NoSound;

end.В даному випадку звуковий сигнал частотою 500 Гц буде звучати

том 2 секунд (2 000 мілісекунд).Програма DemoBird демонструє можливості використання звукових

цедур.

Program DemoBird;Uses Crt; var

I:integer;

Page 154: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Процедури керування звуковими сигналами 153

procedure Bird; begin

I:=2000;While I <3000 do

beginSound(I+l);M m

end;NoSound;

end;

beginrepeatforl:==lto20do

beginSound(Random(100) + Random(500) + 3100); Delay(8);NoSound;Delay(30);

end;Bird;Randomize;Deiay(Random(600)) until KeyPressed;NoSound;

Page 155: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

словникАлгоритм — чітко задана послідовність кроків, які мають бути вико

для розв’язання завдання. г |Лінійний алгоритм — алгоритм, в якому використовується тільки ст^

тура “слідування”. ІАлгоритм з розгалуженням — алгоритм, в основі якого лежить стру;

ра “розгалуження”.Циклічний алгоритм — алгоритм, в основі якого лежить структура

вторення”.Мова — це сукупність засобів для фіксації повідомлень і передавані

від джерела інформації до споживача.Алгоритмічні мови — мови, призначені для фіксації алгоритмів у ві

деяких повідомлень і передавання таких повідомлень споживачеві інфо] (виконавцеві алгоритму).

Алфавіт алгоритмічної мови — сукупність символів, які дозвол використовувати при описанні алгоритмів на тій чи іншій алгоритмічній і

Синтаксис алгоритмічної мови — сукупність правил опису алгори на алгоритмічній мові.

Вказівка (команда) — окреме повідомлення про деяку операцію, повинна виконати машина.

Заголовок алгоритму — початкова частина запису алгоритму до сл; вого слова початок, яка містить в собі ім’я алгоритму, перелік його аргум* і результатів із зазначенням їх величин.

Тіло алгоритму — частина алгоритму, яка знаходиться між слої початок і кінець.

Величина — об’єкт, який має ім’я і значення конкретного типу.Операнд — об’єкт алгоритму, над яким виконується деяка вказівка.Ідентифікатор — ім’я величини.Постійна величина (стала або константа) — величина, яка в б

моменти часу може набувати тільки одне й те саме значення.Змінна величина —■ величина, яка в різні моменти часу може набу

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

початком виконання алгоритму.Результат алгоритму — параметр, значення якого дістають в результ

виконання алгоритму.Вираз — це текст (повідомлення), який описує правило (алгоритм) о

левня одного значення деякого типу.

Page 156: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Словник 155

Програма — впорядкована послідовність дій для ЕОМ, виконання якої реалізує алгоритм розв’язку будь-якої задачі.

Транслятор програма, яка перекладає програму з однієї мови програ­мування на іншу (здебільшого на мову машинних команд).

Інтерпретатор — програма, яка аналізує і відразу виконує тексти інших програм.

Система програмування — частина базового програмного забезпечен­ня, яка підтримує процес програмування на ЕОМ.

Page 157: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

156 Список літерам]

СПИСОК ЛІТЕРАТУРИ

1. Алексеев В.Е. и др. Вычислительная техника и проіраммирование. lïl тикум по программированию: Практлюсобие. — М.: Высш.шк., 1991. — 4С

2. Бородич Ю.С., Вальвачев А.Н., Кузьмич А.И. Паскаль для персон; ных компьютеров. — Мн.:Высш.шк., 1991. — 365 с.

3. Васюкова Н.Д., Тюляева В.В. Практикум по основам программиро ния. Язык ПАСКАЛЬ: Учеб. пособие для учащихся сред. спец. заведений.М.: Высш.шк., 1991. — 160 с.

4. Вычислительная техника и программирование:Учеб. для техн. ву A.B. Петров, В.Е. Алексеев, А.С.Ваулин и др.; Под ред. А.В.Петрова. — Высш.шк., 1990. — 479 с. |

5. Довгаль С.И., Литвинов Б.Ю., Сбитнев А.И. Прикладное программ! рование в системе Турбо Паскаль 7.0. — К.: МП “Довгаль” 1996. — 256 f

6. Жалдак M.I., Рамський Ю.С. Інформатика: Навч. посібник /За рг* M.I. Шкіля. — K.: Вища шк., 1991. — 319 с. Ä

7. Зуев Е.А. Язык программирования Turbo Pascal 6.0, 7.0. — М.:Вес. Радио и связь, 1993. — 384 с. щ

8. Касаткин В.Н., Верлань А.Ф. Основы информатики та вычислительна техники: Проб. учеб. пособие для 10-11 кл. сред. шк. — К: Радлпс, 1989. — 223" ,

9. Коханівський О.П. Від алгоритму до ЕОМ: Для ст. шк. віку. — К.:Р* шк., 1990. — 172 с. Щ

10. Рюттен Т., Франкен Г. Турбо Паскаль 6.0. — К.:Торгово-издательс бюро BHV, 1992. — 240 с.

11. Лященко Н.Я., Следзинский И.Ф. Программирование на ЭКВМ: По< бие для факультатив, занятий в 9 кл. — Киев: Рад. шк., 1987. — 128 с.

12. Основи інформатики та обчислювальної техніки: Проб. навч. пос. j\ 10-11 кл. серед. шкУВ.А.Каймін, О.Г. Щеголев, О. А. Єрохіна, Д.П. Федюшкін.K.: Освіта, 1992. — 288 с.

13. Сердюченко В.Я. Розробка алгоритмів та програмування на мові Тиі Pascal: Навчальний посібник для техн.вузів /Укр. мовою. — Х.:ВКП “Пара тет” ЛТД, 1995. — 352 с.

14.Фаронов В.В. Турбо Паскаль (в 3-х книгах). Книга 1. Основы ТурбЙ Паскаля. — М.:Учебно-инженерный центр “МВТУ-ФЕСТО ДИДАКТИК” 1992.— 304 с.

15. Чернов Б.И. Программирование на алгоритмических языках Бейсик Фортран, Паскаль: Кн. для внеклас. чтения учащихся 9-11 кл. сред. шк. — М.: Просвещение, 1991. — 192 с.

Page 158: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Зміст 157

ЗМ ІС Т

в с т у п ........ ........ ....... ................ ........ ........ .... ............... ... .........................з

ОСНОВИ АЛГОРИТМІЗАЦІЇ ТА ПРОГРАМУВАННЯ

L ШФОРМАЦІЙНА (МАТЕМАТИЧНА) МОДЕЛЬ1.1 Основні етапи розв’язування прикладної задачі

з використанням ЕОМ.................................................... *..............41.2 Поняття інформаційної (математичної) моделі.

Побудова моделі............................................................. ................51.3 Запитання, завдання, тести.......................................................... . 7

2. АЛГОРИТМИ2.1 .Алгоритми. Властивості алгоритмів.

Форми подання алгоритмів. Виконавець алгоритму ..................... 82.2 Базові структури алгоритмів................................................... ....... 92.3 Метод покрокової деталізації. Конструювання алгоритмів «зверху донизу»................................................................. .......... ...... . 112.4 Навчальна алгоритмічна мова. Правила описання алгоритмів навчальною алгоритмічною мовою............. .....................*.... .............122.5 Величини. Основні характеристики величин................................ 162.6 Вказівка присвоювання..................................... ..................... .......172.7 Запитання, завдання, тести..............................................................18

МОВА ПРОГРАМУВАННЯ ПАСКАЛЬ

3. МОВА ПРОГРАМУВАННЯ ПАСКАЛЬ. СИСТЕМА ПРОГРАМУВАННЯ3.1 Поняття програми. Мова програмування. Переклад програм

з однієї мови на іншу. Поняття про транслятори,СИСТему Програмування..........шштшт.................. .............§............22

3.2 Поняття про середовище програмування Turbo Pascal.... .......... . 233.3 Практична робота №1.................... ........ ........... ........... ..................253.4 Запитання, завдання, тести.................................................. ...........253.5 Алфавіт мови програмування. Величини та їх опис мовою програмування. Змінні та константи.................................................... 273.6 Запитання, завдання, тести.................................................. - .........293.7 Ідентифікатори величин. Типи величин......................................... ЗО3.6 Запитання, завдання, тести........... .................................... .............34

Page 159: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

3.9 Вказівки введення й виведення. Вказівка присвоювання............ ЗЗЛО Запитання, завдання, тести..................... ................... ................ * 4ЙІ3.11 Стандартні типи змінних. Опис типів змінних....................Щ3.12 Опис програм за правилами мови програмування.....................443.13 Практична робота №2...................................................................4$3.14 Запитання, завдання, тести ............................... ................*..........АІ3.15 Набір функцій та операцій, що визначені для кожного із стан­дартних типів. Арифметичні вирази. Пріоритет операцій ............ 493.16 Запитання, завдання, тести .............................щ.................... . 533.17 Переклад лінійних алгоритмів з навчальної алгоритмічної мови на мову програмування..................... .................................... ....... ......* 573.18 Практична робота №3...«............................................ *..........«......58

4. ВКАЗІВКИ ПОВТОРЕННЯ ТА РОЗГАЛУЖЕННЯ4.1 Вказівки повторення І розгалуження.......ттШШттт........І...........,.»61

4.1.1 Вказівка повторення.............. .................... ..... ..................... 614.1.2 Переклад циклічних алгоритмів із навчальної алгоритмічної мови на мову програмування............. ......... ........... ..................... * 664.1.3 Практична робота №4................... .................. ..................... 674.1.4 Запитання, завдання, тести................... ..................... ,*..... . 69

4.2 Вказівка розгалуження........................................... ......... ........... 724.2.1 Опис вказівки розгалуження мовою програмування.... . 724.2.2 Опис алгоритмів із розгалуженням мовою програмування. 784.2.3 Практична робота №5............. ...................... «**....*...... ........ 81

4.2.4 Запитання, завдання, тести....«..*.«............... .................. 84

5. ТАБЛИЧНІ ВЕЛИЧИНИ. МАСИВИ5.1 Табличні величини та їх опис мовою програмування .................. 875.2 Алгоритм знаходження суми й добутку елементів таблиць....... . 895.3 Складання алгоритмів та програм на опрацювання табличних величин .................... .......................... ...................................... ..... - .....915.4 Алгоритми пошуку в таблицях елементів із деякою властивістю 955.5 Алгоритми впорядкування табличних величин....«............. ...........965.6 Складання алгоритмів та програм на опрацювання табличних величин......«.......... .................................... ....................... ........... . 995.7 Практична робота №6.«..................... .......... ........................... . 1025.8 Запитання, завдання, тести....*.......................................... *..........104

Page 160: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

Зміст 159

6. ЗВЕРНЕННЯ ДО АЛГОРИТМІВ І ФУНКЦІЙ6.1 Підпрограми. Типи підпрограм. Опис підпрограм мовою програму­вання. Звернення до підпрограм....................... ..................................1086.2 Створення програм із використанням підпрограм..........—..........ШШ Практична робота .1ЕР6.4 Запитання, завдання, тести .....»»»>>.... .............................................117

7. РЯДКОВІ ВЕЛИЧИНИ7.1 Вказівки і фуншії опрацювання рядкових величин...................1207.2 Складання та реалізація програм опрацювання рядкових величин...........'-тгиггттмгогг-щ-іПііг-------- .......... ........................................ . 1227.3 Практична робота №8.......... .... ..... ............ ............ ....... ...... ..... . 1237.4 Запитання, завдання, тести...................... ............ ......................... 126

8. ГРАФІЧНИЙ РЕЖИМ РОБОТИ ЕОМ8.1 Вказівки для роботи у графічному режимі. Створення графіч­них примітивів................. .................. ............ .................м и............. 129

8.2 Практична робота №9...................... .............................................1348.3 Запитання, завдання, тести...____139

Л ІШ М И —_____ ____142

10. і ___ __ _______ 14511. ПРОЦЕДУРИ КЕРУВАННЯ ЗВУКОВИМИ СИГНАЛАМИ 152

12. СЛОВНИК______.—ж— __- » — ■ Ш13. СПИСОК ЛІТЕРАТУРИ ..................................................................... 156

Page 161: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно

46008, м. Тернопіль А/С 534

"Книга поштою" ® (0352)430046

Навчальне видання

ШОСТ Дмитро Михайлович

ІНФОРМАТИКА

TURBO PASCAL

Зошит-конспекг 10-11 класи

Головний редактор Будний Б. Є.Редактор Мазур 0.0.

Технічний редактор Козуб І.О. Комп’ютерна верстка Раківський В.І.

Художник БасалигаВ А.

Підписано до друку 05.06.2003. Формат 60x84/16. Папір друкарський. Гарнітура Тайме. Умови, друк. арк. 9,3. Умови, фарбо-відб. 9,3. [Н-70]

Видавництво «Навчальна книга — Богдан»Свідоцтво про внесення до Державного реєстру видавців

ДК №370 від 21.03.2001 р.46008, м.Тернопіль, вул. Танцорова, 14. А/с 529.

тел./факс (0352) 43-00-46; 25-18-09; 25-37-53 E-mail: [email protected]

www.bohdan-books.com Віддруковано з готових діапозитивів у ВВП «Місіонер». 80300, Львівська обл., м. Жовква, вул. Василіянська, 8.

Зам. 340

Page 162: Д.М. Шост - college.tim.uacollege.tim.ua/upload/userfiles/1/turbo-pascal.pdf · з вивчення мови програмування Turbo Pascal 6.0 і 7.0 відповідно