нуто перш категорії параметрів не вичерпують всіх питань передачі інформації в Pascal-e. Використання в якості параметрів складних типів даних має свої особливості. p> Розглянемо масиви і рядка відкритого типу. Відкритий масив (рядок) - масив (рядок) без вказівки типу індексу (розміру масиву (рядки)).
Приклад:
Procedure getfive (var massiv: array of real);
У даному випадку замість формального параметра може використовуватися будь-який масив з елементами типу real. Індексація елементів відкритого масиву завжди починається з нуля. Такі масиви введені для того, щоб підпрограма могла обробляти масиви будь-якого розміру.
Програма обчислення x = (m! + n!)/(m + n)!, де m, n цілі (невід'ємні)
program factorial_ (input, output); {Назва програми}
label 0; {описуємо мітку}
var
rez: real;
m, n: longint; {описали глобальні змінні, використовувані в програмі}
function fact (z: longint): real; {заголовок функції з формальним параметром-значенням, типом}
var
y: real; {описали локальну змінну}
begin
y: = 1; {для отримання результату необхідно присвоїти у значення 1. також за допомогою цього реалізується обчислення 0! і 1!}
while z> 1 do {запускаємо цикл у зворотний бік, для спрощення опустимо множник 1}
begin
y: = y * z;
z: = z-1
end;
fact: = y {обчислюємо факторіал, присвоюємо його значення функції}
end; {Кінець функції}
begin {початок тіла програми}
writeln ('введіть невід'ємні числа '); {для зручності користувача просимо ввести числа}
0: readln (m, n); {в пам'ять вводяться числа}
if m or n <0 then begin
writeln ('ви помилилися, вводите невід'ємні числа ');
goto 0 {при помилку користувача запобігаємо видачу невірного результату}
end;
rez: = (fact (m) + fact (n))/fact (m + n); {обчислюється значення даного виразу}
writeln ('результат:', rez) {виводимо на екран результати рахунки}
end.
Вихідні дані і результати рахунку:
m = 0, n = 0, x = 2.0000000000E +00 (2)
m = 3, n = 5, x = 3.1250000000E-03 (0,003125)
m = 7, n = -3, ви помилилися, вводите невід'ємні числа
Пояснювальна записка
В
Тепер пояснимо нашу програму. program factorial_ (input, output) - З цим труднощів не виникає, factorial - ім'я програми, input-файл, звідки відбувається зчитування даних, output-файл, куди відбувається виведення даних. У нашому випадку (input, output) показує, що програма вимагає введення даних і виробляє їх висновок.
Label 0; описуємо позначку, яка нам стати в наг...