
- •Міністерство освіти і науки Україні
- •Закарпатський державний університет
- •Природничо-гуманітарний коледж
- •Методичні вказівки
- •До лабораторних робіт по дисципліні
- •Лабораторна робота № 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 Файли. Управління файлами. Короткі теоретичні відомості.
- •Хід роботи.
- •Контрольні питання.
Хід роботи
Виконати свій варіант завдання 1.
Записати її як файл в бібліотеку.
Відкомпелірувати її і запустити на виконання для кількох значень, щоб перевірити всі описані варіанти значення функції.
Записати відкоректовану програму, вихідні данні та результати роботи.
Контрольні питання.
Визначити операції над даними рядкового типу.
Визначити функції над даними рядкового типу.
Лабораторна робота №5 Процедури та функції. Короткі теоретичні відомості.
1. Опис процедур.
Технологія програмування мовою програмування типу мови Pascal пропонує проектувати програми методом послідовних уточнень.
На кожному етапі - кроку уточнення програміст розбиває задачу на деяке число підзадач, визначаючи тим самим деяку кількість окремих підпрограм. Концепція процедур (підпрограм) дозволяє виділити підзадачу як явну підпрограму.
У мові Паскаль процедури визначаються в розділі процедур і функцій за допомогою описань процедур. Звернення до процедури здійснюється оператором процедури.
Розділ процедур
і функцій
Описання процедури таке ж, як і описання програми, але замість заголовка програми фігурує заголовок процедури. Заголовок має вид:
Заголовок
процедури
Приклади заголовка процедури:
procedure Picture;
procedure Power(X: real; n: Integer; var u, v: Real);
procedure Integral( a, b, epsilon: Real; var S: Real);
2.Формальні параметри. Локальні і глобальні об’єкти.
Як бачимо з прикладів, у розділі формальних параметрів перелічуються імена формальних параметрів, а потім вказується їхній тип. Таким чином, кожне описання формальних параметрів з точки зору синтаксису має такий же вигляд, як і описання змінних у розділі змінних. Перед деякими описаннями ставиться службове слово Var. Такі параметри називаються параметрами-змінними. Якщо перед описанням службове слово Var не стоїть, це - параметри-значення. Різницю між цими типами параметрів описано нижче.
Мітки, імена констант, типів, змінних, процедур і функцій, що описуються в тілі процедури, а також всі імена, що вводяться в розділи формальних параметрів є локальними в описанні процедури, яка називається областю дії для цих об’єктів. За межами цієї області вони не відомі.
Резервування пам’яті під локальні об’єкти здійснюється таким чином, що вона “захоплюється” процедурою при її виклику оператором і звільняється при виході з процедури. Такий механізм розподілу пам’яті називається динамічним. Динамічний розподіл дозволяє економити пам’ять, що адресується.
Об’єкти, що описані в основній програмі, доступні для використовування в цій процедурі. Вони називаються глобальними. Відмітимо, що локальний і глобальний об’єкти цілковито різні, але можуть мати одне й те ж ім’я. Якщо, наприклад, змінна Х описана як в основній програмі, так і в процедурі, то в процедурі вона використовується як локальна. Якщо ж в процедурі змінна Х не описана, то в процедурі вона використовується як глобальна.
3. Оператор процедури. Фактичні параметри.
Оператор процедури має вид:
< ім’я > або < ім’я > (< список фактичних параметрів >)
Синтаксична діаграма оператора процедури:
Оператор
процедури
Приклади операторів процедури:
Picture
Power(( a + b )/2, 3, degree, root )
Integral ( 0, P/2, 1E-6, SUMMA)
Зверніть увагу на відповідність між заголовком процедури і оператором процедури. Між списками формальних і фактичних параметрів встановлена взаємно-однозначна відповідність, що визначена їх місцями в списках. Ця відповідність ілюструється наступним прикладом:
Приклад 1. Розглянемо заголовок процедури і оператор цієї процедури:
Procedure Integral ( a, b, eps: real; var s: real );
Integral ( -Pi/2, Pi/2, 1E-6, summa );
Відповідність:
Формальний параметр Фактичний параметр
Значення а Вираз -Рі/2
Значення b Вираз Рі/2
Значення eps Дане 1Е-6
Змінна s Змінна Summa
Як було вказано вище, параметри бувають 2-х видів: параметри-значення і параметри-змінні. Якщо перед описанням параметрів ніякого службового слова немає, мова йде про параметри-значення. Перед описанням параметрів-змінних ставиться службове слово var. При зверненні до процедури (в процесі виконання оператора процедури) формальним параметрам-значенням присвоюються значення відповідних фактичних параметрів, а замість імен формальних параметрів-змінних підставляються відповідні фактичні параметри - імена змінних, а потім виконується підпрограма, що описана процедурою.
Якщо х1, х2, ..., хn - фактичні параметри-змінні, відповідні формальним параметрам-змінним v1, ... , vn, то x1, x2, ..., xn повинні бути різними. Фактичними параметрами-значеннями можуть бути вирази або дані відповідних типів.
Приклад 2. Програма обчислює координати точки (x0, y0) при послідовних поворотах і паралельних переносах системи координат.
Program Coordinates;
Const Pi = 3.141592;
Var Alfa, Beta : Real;
x0, y0, x1, y1, x2, y2 : Real;
x, y : Real;
Procedure Rotate(x, y, Fi: Real; var u, v: Real );
var cosFi, sinFi : Real; { локальні змінні }
begin
Fi := Fi*Pi/180 ;
cosFi := Cos(Fi); sinFi := Sin(Fi);
{ параметри x, y захищені від глобальних змінних x, y }
u := x * cosFi - y * sinFi ;
v := x * sinFi + y * cosFi
end ;
Procedure Move(x, y, a, b : Real; var u, v: Real);
begin
u := x + a ; v := y + b
end;
begin
Read (x0, y0); Read (Alfa); Rotate(x0, f0, alfa, x, y);
Read (x1, y1); Move(x, y, x1, y1, x, y);
Read (Beta); Rotate(x, y, Beta, x, y);
Read ( x2, y2 ); Move(x, y, x2, y2, x, y);
Writeln (‘================================’);
Writeln (‘абсциса точки : ‘, х);
Writeln (‘ордината точки : ‘, y);
end.
Параметри-значення використовуються для передачі даних в процедуру. Це значить, що для параметра-значення на час виконання процедури резервується пам’ять, розмір якої визначений типом параметра і яка заповнюється при виклику процедури. Таким чином, використання параметрів-значень при передачі даних великого об’єму може привести до неоправданих витрат часу процесора і пам’яті, що адресується.
Нехай, наприклад, змінна A типу Sequence - масив з 1000 дійсних чисел і Procedure MaxMin(X : Sequence; var Max, Min : Real) - пошук максимального і мінімального елементів масиву X. Тоді при зверненні до процедури MaxMin за допомогою оператора MaxMin(A, Sup, Inf) компілятор виділить пам’ять (6 - 10 байт на кожний елемент масиву - всього 6000 - 10000 байт ) і здійснить 1000 циклів пересилання чисел з A в X. Якщо ж параметр X визначити як параметр-змінну: Procedure MaxMin(var X : Sequence; var Max, Min : Real) ні пам’яті, ні пересилань не знадобиться.