
- •Міністерство освіти і науки Україні
- •Закарпатський державний університет
- •Природничо-гуманітарний коледж
- •Методичні вказівки
- •До лабораторних робіт по дисципліні
- •Лабораторна робота № 1. Лінійні програми.
- •Короткі теоретичні відомості.
- •Структура програми.
- •Приклад розділу змінних
- •Тип даних Integer .
- •Тип даних Real.
- •Тип даних Сhar.
- •Тип даних Boolean (логічний).
- •Хід роботи
- •Контрольні питання.
- •Варіанти завдань.
- •Лабораторна робота № 2. Оператори повторення.
- •Короткі теоретичні відомості.
- •1. Оператор циклу з параметром.
- •2. Циклічні програми. Складність циклічної програми.
- •3. Оператори повторення While і Repeat.
- •4. Обмежені типи.
- •5. Мітки. Оператор переходу. Застосування оператора переходу для дострокового виходу з циклу.
- •Хід роботи.
- •Контрольні питання.
- •Лабораторна робота № 3. Масиви. Алгоритми сортування та пошуку.
- •Короткі теоретичні відомості.
- •1. Складні (складені) типи.
- •2. Регулярний тип. Масиви.
- •3. Пошук елемента в масиві.
- •4. Постановка задачі сортування.
- •Хід роботи.
- •Контрольні питання.
- •Лабораторна робота № 4 Рядки та засоби їх обробки. Короткі теоретичні відомості.
- •Хід роботи
- •Контрольні питання.
- •Лабораторна робота №5 Процедури та функції. Короткі теоретичні відомості.
- •1. Опис процедур.
- •2.Формальні параметри. Локальні і глобальні об’єкти.
- •3. Оператор процедури. Фактичні параметри.
- •4. Функції.
- •5. Рекурсивно-визначені процедури і функції.
- •Хід роботи
- •Контрольні питання.
- •Лабораторна робота № 5. Складні типи даних: записи. Короткі теоретичні відомості.
- •1. Записи.
- •2 .Записи з варіантами.
- •3.Оператор приєднання.
- •Хід роботи.
- •Контрольні питання.
- •Лабораторна робота № 6. Множини. Короткі теоретичні відомості.
- •1.Множинний тип.
- •2.Конструктор множини.
- •3. Операції і відношення.
- •4. Застосування множин у програмуванні.
- •Хід роботи.
- •Контрольні питання.
- •Лабораторна робота № 7 Файли. Управління файлами. Короткі теоретичні відомості.
- •Хід роботи.
- •Контрольні питання.
4. Функції.
Поряд із стандартними функціями, в мові можна визначити і інші необхідні програмі функції. Функція - це підпрограма, що визначає одне - єдине скалярне або засилкове значення, що використовується при обчисленні виразу. Описання функції має, по суті, такий самий вид, як і описання процедури. Різниця тільки у заголовку, який має вид:
Function < ім’я > : < тип результату > ;
або Function < ім’я > (<список описань формальних параметрів >): < тип результату >;
Синтаксична діаграма заголовка функції:
Заголовок
функції
Зверніть увагу на описання результату, який визначає тип значення функції.
Таким чином, для функції визначені всі ті поняття, які були сформульовані для процедур.
Ім’я, що задане в заголовку функції, іменує цю функцію. В середині описання функції - в розділі операторів - повинно бути присвоювання, що виконується, в лівій частині якого стоїть ім’я функції, а в правій - вираз що має тип значення функції.
Приклад опису функцій.
Функція IntPow підносить дійсне число x до степеня N. (Y = x N )
Function IntPow(x: Real; N: Integer) : Real;
Var i: Integer;
Begin
IntPow := 1;
For i:=1 to Abs(N) do IntPow := IntPow * x;
If N < 0 then IntPow := 1/IntPow
End;
Кожна процедура або функція може, в свою чергу, містити розділ процедур і функцій, в якому визначені одна або декілька процедур і функцій. В цьому випадку кажуть про вкладення процедур. Кількість рівнів вкладень може бути довільним.
Поняття локальних і глобальних об’єктів поширюються і на вкладені процедури. Наприклад, змінна, описана в процедурі А локальна по відношенню до основної програми і глобальна для процедур В і С, вкладених в А.
В деяких випадках необхідно з процедури здійснити виклик іншої процедури, описаної в тому ж розділі процедур і функцій. Наприклад, процедура С може містити оператор виклику процедури В. В цьому випадку компілятор правильно обробить текст програми, оскільки процедура В описана до процедури С. Якщо ж з процедури В необхідно звернутись до С, для правильної обробки виклику С необхідно використовувати механізм так званого попереднього описання С. Описання, що опереджає процедури (функції) - це її заголовок, услід за яким через “;” стоїть службове слово Forward. У тексті програми описання, що опереджає, повинно передувати процедурі, в якій процедура, що попередньо описана, викликається.
Якщо процедура або функція описані попередньо, описанню її тіла передує скорочений заголовок, що складається тільки з відповідного службового слова і імені - без списку описань параметрів.
5. Рекурсивно-визначені процедури і функції.
Описання процедури А, в розділі операторів якої використовується оператор цієї процедури, називається рекурсивним. Таким чином, рекурсивне описання має вид
Procedure A(u, v : ParType);
...
Begin
...; A(x, y); ...
End;
Аналогічно, описання функції F, в розділі операторів якої використовується виклик функції F, називається рекурсивним. Рекурсивне описання функції має вид
Function F(u, v : ArgType) : FunType;
...
Begin
...; z := g(F(x, y)); ...
End;
Використання рекурсивного описання процедури (функції) приводить до рекурсивного виконання цієї процедури (обчисленню цієї функції). Задачі, що формулюються природнім чином як рекурсивні, часто приводять до рекурсивних розв’язків.
Приклад 3. Факторіал.
Розглянемо рекурсивне визначення функції n!=1*2*...*n (n-факторіал). Нехай F(n) = n! Тоді
1.F(0) = 1
2.F(n) = n*F(n - 1) при n > 0
Засобами мови це визначення можна сформулювати як обчислення:
If n = 0
then F := 1
else F := F(n - 1) * n
Оформивши це обчислення як функцію і змінивши ім’я, отримаємо:
Function Fact(n: Integer): Integer;
Begin
If n = 0
then Fact := 1
else Fact := Fact(n - 1) * n
End;
Обчислення функції Fact можна представити як ланцюжок викликів нових копій цієї функції з передачею нових значень аргументу і повернень значень функції в попередню копію.
Ланцюжок викликів обривається при передачі нуля в нову копію функції. Рух у прямому напрямку (розгортання рекурсії) супроводжується тільки обчисленням умови і викликом. Значення функції обчислюється при згортанні ланцюжка викликів.