
S1,S2:real; korvvid:Boolean;
Begin repeat
Writeln (‘Перший трикутник:’); Input(x11,y11,x12,y12,x13,y13,a1,b1,c1,korvvid); until korvvid;
S1:=Square(a1,b1,c1); repeat
Writeln (‘Другий трикутник:’); Input(x21,y21,x22,y22,x23,y23,a2,b2,c2,korvvid); until korvvid;
S2:=Square(a2, b2, c2); Output(S1,S2);
End.
Таким чином, основна програма займає лише 11 рядків, тоді як у під — програмах по декілька разів виконуються дії, що повторюються: введення координат вершин трикутників (двічі), обчислення довжин сторін трикут — ників (шість разів), обчислення півпериметра та площі (двічі).
Перевіряємо себе
Чим відрізняються процедури від функцій?
Які змінні називають локальними, а які глобальними?
Яка відмінність між стандартними і нестандартними функціями?
Чому кількість формальних і фактичних параметрів під час використання функції має бути однаковою?
Запропонуйте спосіб перевірки коректності передавання значень фор — мальних і фактичних параметрів.
Виконуємо
Дано фрагмент програми: var
X, y : integer; m, rez : real;
Procedure pr1(a, b : integer; var d : real);
Var
C : integer;
…
Які змінні є глобальними? Звідки це бачимо?
Які змінні є локальними? Звідки бачимо?
Напишіть функцію Srect для обчислення площі прямокутника з фор — мальними величинами х, у (х, у – розміри сторін прямокутника).
Напишіть функцію Strap для обчислення площі трапеції з формаль — ними величинами х, у, h (х, у – розміри основ трапеції, h – висота).
Функції Srect і Strap уведіть у головну програму й перевірте пра — вильність її роботи.
10.2. Використання масивів як формальних параметрів
Аргументами (параметрами) функцій можуть бути не тільки окремі змінні, але й масиви. У цьому випадку можна використовувати як масиви фіксованого розміру, так і невизначеного (масиви змінної довжини).
Якщо посилання на фактичний параметр-змінну пов’язане з індек — суванням масиву або перебуванням об’єкта за його покажчиком, то ці дії виконуються до активізації процедури або функції.
Якщо формальний параметр – нетипізований параметр-змінна, відпо — відний фактичний параметр може бути довільним посиланням на змінну незалежно від її типу.
Усередині процедури або функції нетипізований параметр-змінна не має типу, тобто він несумісний зі змінними всіх інших типів, якщо йому не присвоєно визначений тип за допомогою приведення типу змінної.
Приклад 10.2.1. Використання нетипізованих параметрів-змінних: const n=10;
Type massiv=array[1..n] of integer; var x:massiv;
Y, i:integer;
Procedure sum(a:massiv;var s:integer); //Параметр а оголошений як нетипізований масив
Var i:integer; begin
S:=0;
For i:=1 to n do s:=s+a[i]; end;
Begin
For i:=1 to n do
Begin x[i]:=random(100);
Write (x[i]:5); end;
- 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
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78