Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Процедуры и функции пользователя

.pdf
Скачиваний:
22
Добавлен:
29.05.2015
Размер:
264.92 Кб
Скачать

активизации процедуры. Такие параметры называются параметрамипеременными

Отличительные особенности параметров-переменных:

любое изменение формального параметра влечет за собой изменение соответствующего фактического параметра;

при описании в списке формальных параметров перед ними ставится зарезервированное слово Var;

Приведем пример типичной записи параметров-переменных в описании процедур пользователя:

Procedure Копc (Var A, В, С : Integer; Var D : Real);

Procedure Vonc (Var: Real);

 

В данном случае параметры А, В, С, D

X, У, Z описаны как

параметры-переменные.

 

Пример программы с использованием процедуры пользователя:

Program Example4;

 

 

Var A,В : Integer;

 

Procedure Change (Var X, Y: Integer);

 

Var H : Integer; Begin

 

H:=X;X:=Y; Y=H; End;

 

Begin

 

 

A:=10; B:=-10; Writeln('A =', A:3, 'B=', B:3);

 

Change(A,B);

Writeln('A=', A:3, 'B=', B:3);

 

Change(A,B);

Writeln('A=', A:3, 'B=', B:3);

 

End

В процедуре Change формальные параметры X, Y описаны как параметры-переменные. Результат работы приведенной программы имеет следующий вид:

А= 10 В=-10 A= -10 B= 10

11

А= 10 В=-10

Замечания:

1.Параметры-переменные обычно используются в процедурах пользователя. Использование их в функциях не желательно, так как если функция изменяет значения формальных параметров, это нарушает структурированность программы.

2.Допускается сочетание параметров-переменных и параметровзначений в одной секции формальных параметров, например.

Procedure Mix (А, В, С: Real; VarX, Y, Z: Real);

3.Если формальные параметры имеют структурированный тип, например массив, то этот тип должен быть предварительно описан в разделе описания типов, например.

Type Massiv – Array(1..100] of Real; Procedure Inp(k: Integer; Var H: Massiv);

4.Если результаты выполнения процедуры необходимо возвратить

вточку вызова, они должны быть описаны как параметры-переменные. В противном случае результаты работы процедуры не будут возвращены.

Пример программы с использованием различий между параметрамизначениями и параметрами-переменными:

Program Ехатрle5; Var А, В: Integer;

Procedure Add(X: Integer; Var Y: Integer); Begin X:=X+10; Y:= Y-10; Writeln('X=', X:3, ' Y=', Y:3); End; Begin

A:=0; B:=0; Writeln('A=', A:3, 'B=', B:3);

Add(A,B); Writeln('A =', A:3, ' B=', B:3); End.

В процедуре Add формальный параметр X описан как параметрзначение, поэтому изменение формального параметра X не влечет за собой изменение соответствующего фактического параметра A. Параметр Y описан

12

как параметр-переменная, поэтому изменение формального параметра Y влечет за собой изменение фактического параметра В. Результат работы приведенной программы имеет следующий вид:

А= 0 В= 0 Х=10 Y= -10 А= 0 В=-10

4. Область действия идентификаторов

Программа на языке Паскаль имеет модульную структуру и может состоять из ряда вложенных друг в друга блоков.

Основная программа - это блок, который не входит ни в какой другой. Объекты, описанные в этом блоке, являются глобальными и могут использоваться во всех вложенных блоках.

Вложенные блоки - это процедуры и функции. Описанные в них объекты локальны и недоступны во внешних блоках. Для правильного использования и определения области действия идентификаторов необходимо придерживаться следующих правил:

1.Каждый идентификатор должен быть описан перед тем, как он будет использован.

2.Областью действия идентификатора является блок, в котором он описан.

3.Все идентификаторы в блоке должны быть уникальными, т.е. не должны повторяться.

4.Один и тот же идентификатор может быть по-разному определен в каждом отдельном блоке.

5.Если идентификатор программы пользователя совпадает с именем стандартной процедуры или функции, то последние недоступны в пределах области действия подпрограммы, объявленной пользователем, т.е. стандартная процедура или функция игнорируется, а выполняется процедура или функция пользователя.

13

5. Пример выполнения задания Задача

Даны два произвольных массива F, G размера n, m соответственно. Найти сумму элементов массива F, и сумму элементов массива G. Исходные данные взять самостоятельно.

Программа

Program Example 6;

Type Massiv = Array[1..100] of Real; Var F, G : Massiv; n, m, i: Integer;

SF, SG: Real;

{Процедура ввода произвольного массива Н размера k} Procedure Inp(k : Integer; Var H : Massiv);

Begin

For i:=1 Tо k Do Read(H[i]); Readln; End;

{Процедура вывода произвольного массива Н размера k} Procedure Out(k: Integer; H: Massiv);

Begin

For i:=1 То k Do Write(H[i]:5:1,''); Writeln;

End;

{Функция вычисления суммы элементов массива Н размера k} Function Summa(k: Integer; H : Massiv) : Real;

Var SH : Real; Begin

SH=0;

For i:=1 To k Do SH:=SH+H[i]; Summa:=SH;

End;

{Основная программа} Begin {Ввод массивов F, G}

14

Write ('Введите размер массива F, n='); Readln(n) Write ('Введите размер массива G, т='); Readln(m);

Writeln('Введите значения элементов массива F:'); Inp(n, F); Writein('Введите значения элементов массива G:'); Inp(m, G);

{Вывод массивов F, G} Writelп('Иcxoдный массив F:'); Out(n, F); Wnteln('Исходный массив G:'); Out(n, G);

[Вычисление суммы элементов массивов F, G} SF: Summa(n, F); SG:= Summa(m, G);

{Вывод результатов}

Writeln('Сумма элементов SF=', SF:5:1); Writeln('Cyммa элементов SG=', SG:5:1); End.

Результаты выполнения программы:

Введите размерность массива F, п=5

Введите размерность массива G, т=8 Введите значения массива F;

2.5 2-5.5 3 8

Введите значения массива G: 5.5-3-9.5 8 3 8.5 0.5-1

Исходный массив F: 2.5 2.0-5.5 3.0 8.0

Исходный массив G: 5.5-3.0 -9.5 8.0 3.0 8.5 0.5-10

Сумма элементов SF= 10.0 Сумма элементов SG= 12.0

6. Порядок выполнения лабораторной работы

1.Получить вариант задачи у преподавателя.

2.Выбрать задачу в соответствии с указанным вариантом.

3.Разработать алгоритм решения задачи.

4.Составить программу с использованием следующих процедур и

15

функций:

процедуры ввода произвольного массива;

процедуры вывода произвольного массива;

функции, которая производит обработку произвольного массива согласно условию задачи.

5.При разработке программы следует обеспечить вывод полученных результатов с развернутым пояснительным текстом и предусмотреть, при необходимости, вывод промежуточных результатов.

6.Ввести текст программы и сохранить ее в каталог своей группы в файл с произвольным именем.

7.Выполнить компиляцию программы и запустить ее на выполнение.

8.Выполнить отладку программы.

9.Составить систему тестов для проверки правильности работы программы, учитывая возможные варианты исходных данных, граничные условия и различные вырожденные случаи.

10.Выполнить просчеты по разработанным тестам.

11.Результаты показать преподавателю.

16

7. Варианты заданий Задача №1

Дано три произвольных массива X, Y, Z размера k, n, m соответственно. Найти сумму модулей элементов массива X, сумму модулей элементов массива Y и сумму модулей элементов массива Z. Исходные данные взять самостоятельно.

Задача №2

Дан интервал (c,d) и два произвольных массива X, Z размера k, n соответственно. Найти сумму элементов массива X, не попадающих в интервал (c,d), сумму элементов массива Z, не попадающих в интервал (c,d). Исходные данные взять самостоятельно.

Задача №3

Дано произвольное значение b и два произвольных массива G, V размера n, m соответственно. Найти сумму элементов массива G, меньших заданного b, а. также сумму элементов массива V, меньших заданного b. Исходные данные взять самостоятельно.

Задача №4

Дано два произвольных массива F, G размера k, n соответственно. Найти среднее арифметическое отрицательных элементов массива F и среднее арифметическое отрицательных элементов массива G. Исходные данные взять самостоятельно.

Задача №5

Дан произвольный массив D размера k. Найти сумму элементов массива D, а также суммы квадратов и кубов элементов массива D. Исходные данные взять самостоятельно.

Задача №6

Дан произвольный массив R размера n. Найти сумму элементов массива R, а также сумму квадратных корней элементов массива R. Исходные данные взять самостоятельно.

Указание:

17

Учесть, что возможны отрицательные элементы в массиве R.

Задача №7

Дан интервал (а,b) и два произвольных массива V, W размера k, n соответственно. Найти количество положительных элементов массива V, попадающих в интервал (а,b) и количество положительных элементов массива W, попадающих в интервал (а,b). Исходные данные взять самостоятельно.

Задача №8

Дано два произвольных массива A, В размера n. Создать новый массив С следующим образом:

Ci = Ai*Bi, i= l,2,3,...n.

Найти сумму элементов массива А, сумму элементов массива В, и сумму элементов массива С. Исходные данные взять самостоятельно.

Задача №9

Дано три произвольных массива X, Y, Z размера k, n, m соответственно. Найти минимальный элемент массива X, минимальный элемент массива Y и минимальный элемент массива Z. Исходные данные взять самостоятельно.

Задача №10

Дано два произвольных массива R, L размера k, n соответственно. Найти среднее арифметическое положительных элементов массива R и среднее арифметическое положительных элементов массива L. Исходные данные взять самостоятельно.

Задача №11

Дано два произвольных массива S, W размера n, m соответственно. Найти количество отрицательных элементов массива S и количество отрицательных элементов массива W. Исходные данные взять самостоятельно

Задача №12

Дано два произвольных массива Р, G размера n, m соответственно.

18

Найти сумму квадратов элементов массива Р и сумму квадратов элементов массива G. Исходные данные взять самостоятельно.

Задача №13

Дано два произвольных массива F, G размера n, m соответственно. Найти количество ненулевых элементов массива Р и количество ненулевых элементов массива G. Исходные данные взять самостоятельно.

Задача №14

Дано два произвольных массива X, Y размера m. Создать новый массив Z следующим образом:

Zi=Xi*Yi, i=1,2,3,…n.

Найти сумму положительных элементов массива X, сумму положительных элементов массива Y, и сумму положительных элементов массива Z. Исходные данные взять самостоятельно.

Задача №15

Даны три произвольных массива А, В, С размера n, m, k соответственно. Найти максимальный элемент массива А, максимальный элемент массива В и максимальный элемент массива С. Исходные данные взять самостоятельно.

Задача №16

Дано три произвольных массива X, Y, Z размера k, n, m соответственно. Найти среднее арифметическое элементов массива X, среднее арифметическое элементов массива Y и среднее арифметическое элементов массива Z. Исходные данные взять самостоятельно.

Задача №17

Дано произвольное значение d и два произвольных массива Т, Y размера n, k соответственно. Найти количество элементов массива Т, больших заданного d, а также количество элементов массива Y, больших заданного d. Исходные данные взять самостоятельно.

Задача №18

Дан интервал (c,d) и два произвольных массива R, Т размера n, k

19

соответственно. Найти сумму отрицательных элементов массива R, попадающих в интервал (c,d) и сумму отрицательных элементов массива Т, попадающих в интервал (c,d). Исходные данные взять самостоятельно.

Задача №19

Дан произвольный массив Т размера п. Найти сумму элементов массива Т, имеющих четные порядковые номера, а также сумму элементов массива Т, имеющих нечетные порядковые номера. Исходные данные взять самостоятельно.

Задача №20

Дано два произвольных массива F, G размера n, m соответственно. Найти количество положительных элементов массива F и количество положительных элементов массива G. Исходные данные взять самостоятельно.

Задача №21

Дано три произвольных массива Е, S, С размера n, m, k соответственно. Найти среднее геометрическое положительных элементов массива Е, среднее геометрическое положительных элементов массива S и среднее геометрическое положительных элементов массива С. Исходные данные взять самостоятельно.

Задача №22

Дано два произвольных массива F, R размера т. Создать новый массив Z следующим образом:

Zi = Fi – Ri, I = l,2,3,...m.

Найти сумму огрицательных элементов массива F, сумму отрицательных элементов массива R и сумму отрицательных элементов массива Z. Исходные данные взять самостоятельно.

Задача №23

Дан интервал (а,b) и три произвольных массива F, L, Т размера n, m, k соответственно. Найти сумму и количество элементов массива F, попадающих в интервал (a,b), сумму и количество элементов массива L,

20