
- •21)Рекурсія. Рекурсивні означення та підпрограми.
- •22)Типи файлів і оголошення файлових змінних
- •23)Процедурні типи
- •24)Відкриття та закриття файлів
- •25)Підпрограма-функція. Стандартні процедури та функції.
- •26)Послідовний запис і зчитування компонентів файла.
- •27)Формальні та фактичні параметри. Параметри-значення, параметри-змінні.
- •Прямий доступ до компонентів файла.
- •29)Поняття про процедуру з параметрами та без параметрів. Локальні та глобальні змінні.
- •30)Буферизація даних. Нетипізовані файли.
- •31)Переривання циклу. Створення циклу на основі вказівки безумовного переходу.
- •32)Поняття про запис. Доступ до компонентів та операції над записам.
- •33)Масив записів. Записи з варіантами.
- •34)Цикл з передумовою та післяумовою. Вкладені цикли.
- •35)Множини та множинний тип даних. Оголошення змінних множинного типу. Зображення множин в оперативній пам'яті.
- •36)Оператори циклів. Цикл з лічильником (з параметром).
- •37)Операції над множинами.
- •38)Оперативний блок. Поліваріантний вибір (Вказівка варіанту). Вказівка безумовного переходу.
- •Поняття про рядок. Функції та процедури обробки рядків.
- •40)Вибір з двох альтернатив (Вказівка розгалуження). Вкладеність конструкцій розгалуження. Логічні операції.
- •41) Загальні відомості про сортування. Сортування методом вибору.
- •42)Вказівки присвоєння, введення та виведення. Форматоване виведення. Арифметичні вирази та стандартні функції.
- •43)Загальні відомості про сортування. Сортування методом вставки.
- •44)Константа. Типізована константа. Змінна. Вирази
- •45)Загальні відомості про сортування. Сортування методом обміну.
- •46)Прості типи даних.
- •47)Загальні відомості про сортування. Швидке сортування.
- •48)Структура та розділи програми на мові Паскаль.
- •49)Загальні відомості про сортування. Сортування методом злиття.
- •50)Походження та розвиток мови Паскаль. Алфавіт та словник мови.
- •51)Класифікація мов програмування. Перетворення програм і система програмування. Мови програмування
- •53)Одновимірні масиви: поняття, його властивості, оголошення, ініціалізація, введення та виведення масиву.
- •54) Відкриті масиви
- •55)Побудова математичної моделі. Основні алгоритмічні структури.
- •Основні властивості масивів, притаманні як одновимірним, так і багатовимірним масивам:
- •Базовими операціями є:
- •Ініціалізація масиву:
- •57) Основні операції обробки одновимірних масивів: вставка та видалення елемента масиву, циклічний зсув елементів масиву.
- •58)Поняття алгоритму, властивості, способи опису.
- •59)Багатовимірні масиви: оголошення, доступ до елементів.
- •Оголошення багатовимірних масивів. Доступ до елементів
- •Можна і так:
- •60) Базові операції обробки двовимірних масивів
23)Процедурні типи
. Відмінною особливістю Турбо Паскаля є дозвіл передавати у процедури та функції імена інших підпрограм, оформляючи їх як параметри. І точно так само, як передається значення, може передаватися якась функція його обробки. Особливо важливим це стає при програмній реалізації алгоритмів обчислювальної математики.
Характерно, що синтаксис запису процедурного типу в точності збігається із записом заголовка процедури або функції, тільки опускається ідентифікатор після ключового слова procedure або function. Наведемо деякі приклади описів процедурного типу (Turbo / Borland Pascal не дозволяє описувати функції, які повертають значення процедурного типу. Результат функції повинен бути строкового, речового, цілого, символьного, булевского типу, покажчиком або мати перелічувальний тип, визначений користувачем):
Як видно з наведених прикладів, існує два процедурних типу: тип-процедура і тип-функція. Імена параметрів в описі процедурного типу відіграють суто декоративну роль - на сенс опису вони не впливають. Необхідними є тільки ідентифікатори типів параметрів і результатів (для функцій).
Після оголошення процедурного (або функціонального) типу його можна використовувати в описах параметрів підпрограм. І, звичайно, необхідно написати ті реальні процедури і функції, які будуть передаватися як параметри. Вимога до них одне: вони повинні компілюватися в режимі {$ F +}. Оскільки за замовчуванням прийнято режим {$ F-}, такі процедури обрамляются парою відповідних директив.
Процедурні типи, щоб вони були сумісними з привласнення, повинні мати однакову кількість формальних параметрів, а параметри на відповідних позиціях повинні бути одного типу. Також, повинні збігатися типи повертаються значень у функцій. Крім цього, процедурні змінні за форматом сумісні з змінними типу Pointer і після приведення типів можуть обмінюватися з ними значеннями. Але краще не зловживати операціями обміну значень таких змінних, тим більше з привидами типів. Програми з подібними прийомами дуже важко налагоджувати, вони мають тенденцію "зависати" при найменшій помилку. Однією з причин зависання може стати така дуже поширена помилка, як спроба використовувати змінну-процедуру, що не присвоївши їй відповідного значення. Це нічим не діагностується, і призводить до непередбачуваних наслідків. Наведений вище приклад був побудований для наочності, тому що немає необхідності вводити змінні-процедури там, де замість них можна підставити звичайні дзвінки. Однак, використання процедурних типів не обмежується простими процедурними змінними. Як і будь-який інший тип, процедурні типи можуть брати участь у побудові структурованих типів (наприклад, записи):
Підпрограми, як параметри.Один з ефективних способів створення великих програм, технологія низхідного проектування, полягає в їх конструюванні за принципом «розділяй і пануй»: програма розглядається як набір маленьких фрагментів, кожний з яких виконує певну логічно завершену дію, може бути виконаний декілька разів та є більш керованим, ніж програма в цілому. Такий невеликий фрагмент програмного коду називається підпрограмою. Підпрограма позначається ідентифікатором, тобто має власне унікальне ім'я. Вказування в тексті програми імені підпрограми рівнозначне запису всіх її операторів і називається викликом підпрограми.Отже підпрограма — це іменована частина програми, котра описує деякі обчислення і може бути викликана з будь якого місця програми, де синтаксисом мови це не заборонено. Таким чином, для багаторазового виконання деякого програмного коду достатньо записати його один раз у підпрограмі, і надалі, в разі потреби, вказувати лише її ім'я. Концепція програмування, що ґрунтується на використанні підпрограм як стандартних блоків для створення нових програм, отримала назву повторне використання коду. Мови, в яких реалізовано механізми використання підпрограм, називаються процедурно-орієнтованими. Мова Pascal належить до таких мов.Зазначимо, що конструювання програм з невеликих «будівельних блоків» сприяє їх більшій ясності та гнучкості, що приводить до підвищення їх ефективності, якості та надійності. Одна з найпомітніших переваг такого підходу полягає у простоті механізму внесення змін і виправлень у процедурно-орієнтовані програми. Пояснимо цю тезу на прикладі. Припустимо, що програма створює зображення моделі одягу. Якщо програма не є процедурно-орієнтованою, то кожен ґудзик малюватиметься окремими, «своїми» операторами, і для того щоб змінити форму всіх ґудзиків, доведеться послідовно змінювати спосіб відображення кожного з них. Якщо ж креслення ґудзика записати у вигляді підпрограми, то внесення змін до цієї підпрограми приведе до автоматичної зміни зображення всіх ґудзиків.В мові Pascal існує два різновиди підпрограм: процедури та функції. Функція відрізняється від процедури тим, що повертає деяке значення в точку її виклику. Іншими словами, під час виклику функції її ім'я може інтерпретуватись як ім'я деякої змінної величини. В розділах 4.1.1 та 4.1.2 розглядатимуться способи створення та використання процедур і функцій. Розділ 4.1.3 присвячено стандартним процедурам і функціям, які є частиною системи програмування Pascal. У розділах 4.1.4 - 4.1.6 підпрограми розглядаються в розрізі процесів, що відбуваються в оперативній пам'яті під час їх виконання. Нарешті, в розділі 4.1.7 описано процедурні типи — один із найбільш потужних інструментів процедурно-орієнтованого програмування.