![](/user_photo/2706_HbeT2.jpg)
- •Лабораторна робота 13. Робота з множинними типами даних . . . 76 Лабораторна робота 14. Створення й обробка файлів . . . . . . . . . . 79
- •Порядок виконання лабораторних робіт
- •Типи даних
- •Оператор привласнювання
- •Оператори уводу-виводу
- •Завдання до лабораторної роботи
- •Умовний оператор
- •Завдання до лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 4 нестандартні й обмежені типи даних. Оператор варіанта
- •Нестандартні типи даних
- •Обмежені типи даних
- •Оператор вибору варіанта
- •Оператор циклу for
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 5 регулярні типи даних. Селективна обробка масивів
- •Регулярні типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 7 вкладені цикли. Обробка двовимірних масивів
- •Загальні вказівки
- •Завдання до лабораторної роботи
- •Лабораторна робота 8 процедури і функції
- •Процедури
- •Функції
- •Завдання до лабораторної роботи
- •Лабораторна робота 9 обробка символьних даних
- •Символьний тип даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 10 обробка строкових даних
- •Строковий тип даних
- •Процедури
- •Функції
- •Завдання до лабораторної роботи
- •Лабораторна робота 11 комбіновані типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 12 файли і файлові типи даних
- •Файловий тип даних
- •Процедури обробки файлів
- •Завдання до лабораторної роботи
- •Лабораторна робота 13 робота з множинними типами даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 14 створення й оброблення файлів
- •Файли з типом
- •Процедури для роботи з файлами з типом
- •Функції для обробки файлів з типом
- •Завдання до лабораторної роботи
- •Лабораторна робота 15 коректування файлів
- •Завдання до лабораторної роботи
- •Процедури роботи з екраном
- •Процедури установлення текстових режимів I управління кольором
- •Процедури управління курсором
- •Процедура установлення текстових вікон
- •Завдання до лабораторної роботи
- •Лабораторна робота 17 перевірка достовірності даних
- •Вибір критеріїв достовірності
- •Типові алгоритми уводу I перевірки достовірності даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 18 графічні засоби мови паскаль
- •Графічні процедури мови Паскаль
- •Завдання до лабораторної роботи
- •Порядок виконання лабораторної роботи
- •Розрахунок масштабу I зрушення графіка
- •Процедура для креслення графіка
- •Завдання до лабораторної роботи
- •Порядок виконання роботи
- •Список рекомендованої літератури
- •Додаток а
Лабораторна робота 8 процедури і функції
Мета роботи: виробити практичні навички в написанні та налагодженні програм з використанням процедур і функцій.
Процедури
У мові Паскаль передбачена можливість об'єднання будь-якої послідовності операторів у самостійну програму, яка називається процедурою.
У найпростішому випадку процедура може бути лише пойменованою групою операторів, наприклад:
procedure aa;
begin
d:=x; x:=y; y:=d
end;
У такій процедурі без параметрів і без оголошення перемінних всі імена передбачаються відомими програмі, оголошеними раніше. Ці змінні називаються глобальними. Змінна може бути локалізована, тобто оголошена в процедурі.
Процедура з параметрами перелічує змінні - параметри, що будуть використовуватися при виконанні процедури. Такі параметри вказуються в круглих дужках після імені процедури, наприклад:
procedure tr(a,b,c:real; var y:real);
Зазначені в дужках параметри називаються формальними. Якщо перед ім'ям формального параметра стоїть слово var, то такий параметр є параметром-перемінною, у противному випадку - значенням.
Для звертання до процедури досить указати її ім'я і список фактичних параметрів у круглих дужках, наприклад:
tr(p1, p2, p3, rez);
При звертанні потрібно, щоб, по-перше, кількість фактичних та формальних параметрів збігалося; по-друге, фактичні параметри p1,p2, p3,rez мали той же тип, що і формальні параметри a,b,c,y. У нашому випадку тип real. Фактичний параметр, що відповідає параметру-змінній, може бути тільки змінною. Фактичний параметр, що відповідає параметру-значенню може бути будь-яким вираженням відповідного типу, зокрема константою. Наприклад, звернутися до tr можна так:
tr (2.5,sqr(x)+4,a+b*x,r);
Результатом виконання процедури може бути значення, поміщене у змінну деякого типу. Якщо така змінна введена в список формальних параметрів, то вона має бути обов'язково параметром-змінною.
Процедура має ту ж структуру, що і головна програма, тобто складається із заголовка і блоку. Блок містить розділи label, const, type, var і виконувану частину (від begin до end;).
Процедура міститься в головній програмі після розділу var і перед begin програми. У будь-якій процедурі може міститися звертання до раніше описаної процедури.
Функції
Функції відрізняються від процедур тим, що в них результат обчислень привласнюється безпосередньо імені функції.
Опис функції повинен починатися зі службового слова function і закінчуватися вказівкою типу функції:
function f(x:matr; var y:real):real;
Серед операторів функції обов'язково має бути присвоювання імені функції деякого значення: f:=<значення>;
Формальні параметри функцій вводяться за тими ж правилами, що й формальні параметри процедур.
Приклад виконання завдання лабораторної роботи
Приклад 29. Обчислити значення виразу
.
Елементи масивів a(10) і b(5) визначаються за формулами:
ai=3,1i2+4,9і-5, bi=10ln(i+5)+cos2(i).
Обчислення добутку модулів елементів оформимо у виді процедури, а обчислення суми квадратів елементів - у виді функції. Програма має вид:
program pr29;
uses crt;
const m=10; n=5;
type raz=1..m; mac=array[raz] of real;
var a,b:mac; pa,pb,sa,sb,z:real;i:integer; w:char;
procedure pro(x:mac;k:integer; var p:real);
var i:integer;
begin p:=1;
for i:=1 to k do p:=p*abs(x[i])
end;
function sum(x:mac;k:integer):real;
var i:integer; s:real;
begin s:=0;
for i:=1 to k do s:=s+sqr(x[i]); sum:=s
end;
begin clrscr;
WRITELN(' ':10,'МАСИВ А ');
for i:=1 to m do begin
a[i]:=3.1*sqr(i)+4.9*i-5;
Write(a[i]:8:2,' ':4);
IF I MOD 5 = 0 THEN WRITELN; END;
WRITELN; WRITELN(' ':10,'МАСИВ B ');
for i:=1 to n do begin
b[i]:=10*ln(i+5)*sqr(cos(pi*i));
write(b[i]:8:2,' ':4); end; writeln;
pro(a,m,pa); pro(b,n,pb);
sa:=sum(a,n); sb:=sum(b,n);
z:=(pa+pb)/(sa+sb); writeln;
WRITELN(' PA = ',PA:8:2,' PB = ',PB:8:2);
WRITELN(' SA = ',SA:8:2,' SB = ',SB:8:2);
WRITELN(' Z = ',Z:8:2);
w:=readkey
end.