Текст программы.
PROGRAM Primer_3;
CONST n = 10; m=7; c=-1.5; d=4.8;
Type Vect= ARRAY [1 .. n] OF Real;
VAR z : real;
Function F1(i:integer; ni,ki:real):real;
BEGIN
F1:=(cos(i)+sin(2.4*i))*(ki/ni)/(0.25*i);
End;
Function F2(j:integer; ni,ki:real):real;
BEGIN
F2:=ln(j)/ln(10)+j*j+ni/ki;
End;
Function Mass_kol(m,nf:integer; ni,ki:real):integer;
VAR i, R: INTEGER;
ab : vect;
BEGIN
Writeln('Расчет и вывод элементов',nf:3,' МАССИВА ');
FOR i := 1 TO m DO
BEGIN
If nf=1 Then ab[i]:=F1(i,ni,ki) Else ab[i]:=F2(i,ni,ki);
Write(ab[i]:7:2,' ');
End;
Writeln;
R:=0;
FOR i := 1 TO m DO
If (ni<=ab[i]) and (ab[i]<=ki) Then R:=R+1;
Writeln('Контрольный вывод количества элементов в',nf:3,
' массиве =',R:3 );
Mass_kol:=R;
Writeln;
End;
BEGIN
Z:=Mass_kol(n,1, c,d)+ Mass_kol(m,2, c,d);
Writeln( 'Значение z= ',z:3);
End.
Расчет и вывод элементов 1 МАССИВА
-15.56 9.04 0.84 2.65 0.65 -4.11 0.24 -0.32 0.75 2.23
Контрольный вывод количества элементов в 1 массиве = 7
Расчет и вывод элементов 2 МАССИВА
0.69 3.99 9.16 16.29 25.39 36.47 49.53
Контрольный вывод количества элементов в 2 массиве = 2
Значение z= 9
Подпрограмма - процедура
В отличие от подпрограммы – функции подпрограмма – процедура в качестве результата может возвращать несколько значений. Структура процедуры имеет вид:
Procedure <имя> (а1;...;аn);
Раздел описания
локальных меток, констант, переменных
B
Группа операторов
- тело процедуры
End;
где a1;…;an – список формальных параметров с указанием типа. Причем при указании типа параметра обязательно выделяют параметры, которые в ходе выполнения программы не меняют своего значения (замена формальных фактическими параметрами по значению) и которые могут его изменить (замена формальных фактическими параметрами по наименованию). В описании последних перед ним ставится служебное слово Var.
Пример 5.
Рассчитать элементы квадратной матрицы A={a[i,j]}, i,j=1,2,…n по заданной формуле:
; .
Расчет элементов матрицы оформить подпрограммой. Так как результаты работы подпрограммы много значений, следовательно, необходимо использовать подпрограмму-процедуру.
Структурная схема имеет вид:
Program prim5_1;
Const n=7;
Type vect=array[1..n] of real;
matr=array[1..n,1..n] of real;
Var a:matr;
i,j:integer;
{Описание поцедуры вычисления элементов матрицы А}
Procedure Matrica(n:integer; var A:matr);
var i,j:integer;
Begin
for i:=1 to n do
for j:=1 to n do
a[i,j]:=(2*j*i+4*i)/j;
End;
{Основная программа}
Begin
Matrica(n,a);
Writeln(' ':20,'MATPICA A');
for i:=1 to n do
Begin
for j:=1 to n do Write(a[i,j]:8:3);
writeln;
End;
End.
Результаты работы программы.
Ввод значений элементов массива осуществляется с использованием операторов цикла, например:
Writeln(‘ Введите элементы матрицы А‘);
for i:=1 to n do
for j:=1 to m do
read (a[i, j]);.
При большой размерности массива ввод данных с клавиатуры становится трудоемкой операцией. В этом случае значения элементов массива удобнее задавать в разделе описания констант.
Пример 6: ввести значения элементов вектора Х и матрицы А, которые соответственно равны:
4, 5, 10, 8, 0
7, 9, 25, 0, 1
Х = (5, 1.2, 0.1, 7, 8.6) А = 3, 0, 6, 14, 5
0, 0, 0, 99, 12
Значения элементов могут быть определены путем их инициализации:
Const X: array [1..5] of real = (5.0, 1.2, 0.1, 7.0, 8.6);
A: array [1..4, 1..5] of integer = ((4, 5, 10, 8, 0),
(7, 9, 25, 0, 1),
(3, 0, 6, 14, 5),
(0, 0, 0, 99, 12));.