Система программирования Турбо Паскаль. Воробьева А.П - 50 стр.

UptoLike

Составители: 

101
Z := (ST(a, 5) + ST(1/a, 5))/(2 ST(a, 7));
writeln(‘Z=’, Z:6:2);
End.
В данной программе обращение к функции осуществляется с
помощью трех операндов, записанных в выражении для вычисле-
ния
Z.
Заметим, что вариант программирования этой задачи с ис-
пользованием функции предпочтительнее, чем с процедурой, так
как программа получается простой и легче читается.
8.4. Параметры-массивы
Если мы хотим передать в подпрограмму отдельный элемент
массива, то в качестве соответствующего ему формального пара-
метра указывается простая переменная того же типа.
Проблемы возникают, когда в подпрограмму необходимо пе-
редать весь массив, так как структурный тип массива нельзя ука-
зывать в списке формальных параметров. В этом случае тип мас-
сива
объявляется заранее с помощью раздела Type. Например,
для вектора
10,1};{ == ixx
i
и матрицы
85
}{
×
=
ij
aA в разделе
Type можно задать такие имена типов:
Type
vect = array[1..10] of real;
matr = array[1..5, 1..8] of real;
В дальнейшем имена типов
vect и matr используются, если
это необходимо, в любом разделе описания переменных (в основ-
ной программе и подпрограмме), например:
Var
X: vect;
A: matr;
Кроме того, объявленные типы могут указываться в списке
формальных параметров, что позволяет в качестве параметров
(как формальных, так и фактических) использовать массивы
(
параметры-массивы), например:
Function F (X: Vect; A: Matr): real;
Если по условию задачи в подпрограмме требуется при раз-
ных обращениях обрабатывать массивы с разными размерами, то
в разделе
Type объявляется тип массива с наибольшим размером.
102
Например, при передаче в подпрограмму массивов
5,1};{ == ixX
i
и 20,1};{ == iyY
i
в разделе Type надо записать:
Type
Vect = array[1..20] of real;
Тогда по описанию:
Var
X, Y: Vect;
в памяти компьютера выделяется максимальная область из 20
ячеек для каждого массива. При обработке массива с меньшим
размером часть выделенной памяти остается неиспользованной. В
обращении к подпрограмме в этом случае
в качестве фактиче-
ского параметра необходимо указать размер массива
.
8.5. Примеры программирования задач
с использованием подпрограмм
При программировании задач возможны несколько вариан-
тов. Так, например, для одной и той же задачи могут быть состав-
лены программы с процедурой и с функцией. Выбор правильного
(более эффективного и надежного) варианта зависит от опыта
программиста. Для начинающих программистов полезно состав-
лять оба варианта: с использованием процедуры и с использова-
нием функции.
Задача 1
Даны два вектора: 8,1};{ == ixx
i
и 10,1};{ == iyy
i
. Вычис-
лить значение:
y
x
D
Δ
Δ
=
, где symyysxmxx =Δ=Δ ;;
mx, myмаксимальные компоненты векторов x и y соответст-
венно;
sx, syсредние значения компонент векторов x и y соот-
ветственно.
                 Z := (ST(a, 5) + ST(1/a, 5))/(2∗ ST(a, 7));         Например,          при    передаче           в    подпрограмму     массивов
                 writeln(‘Z=’, Z:6:2);                                X = {xi }; i = 1, 5 и Y = { y i }; i = 1, 20 в разделе Type надо записать:
                End.                                                      Type
     В данной программе обращение к функции осуществляется с               Vect = array[1..20] of real;
помощью трех операндов, записанных в выражении для вычисле-          Тогда по описанию:
ния Z.                                                                                                Var
     Заметим, что вариант программирования этой задачи с ис-                                            X, Y: Vect;
пользованием функции предпочтительнее, чем с процедурой, так         в памяти компьютера выделяется максимальная область из 20
как программа получается простой и легче читается.                   ячеек для каждого массива. При обработке массива с меньшим
                  8.4. Параметры-массивы                             размером часть выделенной памяти остается неиспользованной. В
                                                                     обращении к подпрограмме в этом случае в качестве фактиче-
    Если мы хотим передать в подпрограмму отдельный элемент          ского параметра необходимо указать размер массива.
массива, то в качестве соответствующего ему формального пара-
метра указывается простая переменная того же типа.                              8.5. Примеры программирования задач
    Проблемы возникают, когда в подпрограмму необходимо пе-                         с использованием подпрограмм
редать весь массив, так как структурный тип массива нельзя ука-           При программировании задач возможны несколько вариан-
зывать в списке формальных параметров. В этом случае тип мас-        тов. Так, например, для одной и той же задачи могут быть состав-
сива объявляется заранее с помощью раздела Type. Например,           лены программы с процедурой и с функцией. Выбор правильного
для вектора x = {xi }; i = 1, 10 и матрицы A = {aij }5×8 в разделе   (более эффективного и надежного) варианта зависит от опыта
Type можно задать такие имена типов:                                 программиста. Для начинающих программистов полезно состав-
                   Type                                              лять оба варианта: с использованием процедуры и с использова-
                    vect = array[1..10] of real;                     нием функции.
                    matr = array[1..5, 1..8] of real;                                            Задача 1
     В дальнейшем имена типов vect и matr используются, если
                                                                         Даны два вектора: x = {xi }; i = 1, 8 и y = { y i }; i = 1, 10 . Вычис-
это необходимо, в любом разделе описания переменных (в основ-
ной программе и подпрограмме), например:                                                Δx
                                                                     лить значение: D =    , где Δx = mx − sx ; Δy = my − sy ;
                            Var                                                         Δy
                              X: vect;                               mx, my – максимальные компоненты векторов x и y соответст-
                              A: matr;
     Кроме того, объявленные типы могут указываться в списке         венно; sx, sy – средние значения компонент векторов x и y соот-
формальных параметров, что позволяет в качестве параметров           ветственно.
(как формальных, так и фактических) использовать массивы
(параметры-массивы), например:
                  Function F (X: Vect; A: Matr): real;
     Если по условию задачи в подпрограмме требуется при раз-
ных обращениях обрабатывать массивы с разными размерами, то
в разделе Type объявляется тип массива с наибольшим размером.
                               101                                                                      102