Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 48
- 49
- 50
- 51
- 52
- …
- следующая ›
- последняя »
