Использование параметров-массивов в подпрограммах




 

Существенным отличием объявления переменных в списке формальных параметров подпрограммы от объявления их в разделе описания переменных является то, что типом любого параметра в списке формальных параметров может быть только стандартный или ранее объявленный тип. Поэтому нельзя объявлять следующую процедуру:

PROCEDURE S (A: ARRAY [1..10] OF REAL);

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

Если в подпрограмме передается массив, то необходимо первоначально описать его тип:

TYPE AT = ARRAY [1..10] OF REAL;

PROCEDURE S (A: AT);

Рассмотрим пример, который соответствует пункту 4 домашнего задания.

Пример 8. Задать три последовательности случайных чисел , , , где , , . Все числа последовательности кратные 2 умножить на , числа кратные 3 умножить на , числа кратные 5 умножить на .

На экран вывести заданные и преобразованные последовательности , , .

PROGRAM PR8;

TYPE Mas=ARRAY [1..12] OF REAL;

VAR N, M, L: Mas;

i: BYTE;

A, B, C: REAL;

PROCEDURE ZAD (t: BYTE; VAR Mt: Mas);

BEGIN

RANDOMIZE;

FOR i:=1 TO t DO

Mt[i]:=RANDOM (20);

END;

PROCEDURE VIVOD (t: BYTE; Mt: Mas);

BEGIN

FOR i:=1 TO t DO

WRITE (Mt[i]:5:0);

WRITELN;

END;

PROCEDURE PREOB (t, p: BYTE; s: REAL; VAR Mt: Mas);

BEGIN

FOR i:=1 TO t DO

IF TRUNC(Mt[i]) MOD p=0 THEN Mt[i]:=s*Mt[i];

END;

BEGIN

WRITELN ('задать значения A, B, C ');

READ (A, B, C);

ZAD (12, N);

WRITELN ('исходная послед. N ');

VIVOD (12, N);

PREOB (12, 2, A, N);

WRITELN ('преобразованная послед. N ');

VIVOD (12, N);

ZAD (10, M);

WRITELN ('исходная послед. M ');

VIVOD (10, M);

PREOB (10, 3, B, M);

WRITELN ('преобразованная послед. M ');

VIVOD (10, M);

ZAD (8, L);

WRITELN ('исходная послед. L ');

VIVOD (8, L);

PREOB (8, 5, C, L);

WRITELN ('преобразованная послед. L ');

VIVOD (8, L);

END.

В результате выполнения программы на экран будет выведено:

задать значения , , .

2 3 4

исходная послед.

3 12 6 9 4 0 13 17 14 10 7 8

преобразованная послед.

3 24 12 9 8 0 13 17 28 20 7 16

исходная послед.

5 10 9 6 3 11 12 7 15 8

преобразованная послед.

5 10 27 18 9 11 36 7 45 8

исходная послед.

9 11 5 7 2 13 15 18

преобразованная послед.

9 11 20 7 2 13 60 18

Пояснения к программе: В данной программе задается тип Mas, который соответствует массиву 12 чисел типа REAL. Это сделано для того, чтобы использовать этот тип в качестве формальных параметров при описании процедур. Поскольку наибольшее количество элементов в последовательностях , , равно 12, то и тип Mas содержит 12 элементов.

Процедура ZAD используется для получения последовательности случайных чисел, которые заносятся в массив Mt. Используемая стандартная процедура RANDOMIZE инициализирует датчик псевдослучайных чисел, а с помощью стандартной функции RANDOM образуются случайные числа в диапазоне 0-20. Формальными параметрами процедуры ZAD являются: – количество элементов в последовательностях; Mt – имя массива, в который заносятся элементы последовательностей.

Процедура VIVOD осуществляет вывод в строку – элементов массива Mt. Формальные параметры процедуры VIVOD аналогичны формальным параметрам процедуры ZAD.

Процедура PREOB производит преобразование – элементов массива Mt по следующему правилу: те элементы массива Mt, которые кратны значению умножаются на значение . Кратность элементов массива Mt проверяется с помощью операции MOD, которая позволяет получить остаток от целочисленного деления элемента Mt[i] на число . Если этот остаток равен 0, то элемент Mt[i] кратен числу .

В процессе выполнения самой программы сначала задаются значения , , . В результате выполнения процедуры ZAD получаем последовательность случайных чисел , . С помощью процедуры VIVOD эта последовательность выводится на экран. Процедура PREOB осуществляет преобразование последовательности по заданному правилу. Процедура VIVOD выводит уже преобразованную последовательность на экран. Аналогичные действия выполняются для последовательностей и . В результате выполнения программы на экране будут значения , , и шесть последовательностей чисел.

 

СПИСОК ЛИТЕРАТУРЫ

 

1. Фаронов В.В. Программирование на персональных ЭВМ в среде Турбо-Паскаль. – М.: Изд-во МГТУ, 1990. –580 с.

2. Белецкий Я. Турбо Паскаль с графикой для персональных компьютеров / Пер. с польск. Д.И. Юренкова. – М.: Машиностроение, 1991. –320 с.


ЗАДАНИЕ

 

1. Описать функцию для определения (вид функции для каждого варианта задания приведен в столбце 2 таблицы).

2. Задать конкретные значения , и вычислить и (формулы для определения и приведены в столбце 2 таблицы).

3. Описать рекурсивные функции для определения , . Задать значение и вычислить (формулы для определения рекурсивных функций и для определения с приведены в столбце 3 таблицы).

4. Задать три последовательности случайных чисел , , и произвести действия над каждым элементом этих последовательностей, используя процедуру (количество элементов последовательностей , , и соответствующие действия для каждого варианта задания приведены в столбце 4 таблицы).

На экран вывести: значения переменных , , , заданные и преобразованные последовательности , , (каждую последовательность чисел вывести в одну строку).

Вид функции . Задать , . Вычислить , . Вид функций , . Задать . Вычислить . Значения , , . Произвести действия над элементами последовательностей.
       
  ; ; ; ; ; ; ; ; все числа умножить на ; все числа умножить на ; все числа умножить на
  ; ; ; ; ; ; ; ; все четные умножить на ; все четные умножить на ; все четные умножить на
  ; ; ; ; ; ; ; ; ; ; числа кратные 3 умножить на ; числа кратные 5 умножить на ; числа кратные 2 умножить на
  ; ; ; ; ; ; ; ; все нечетные умножить на ; все нечетные умножить на ; все нечетные умножить на
  ; ; ; ; ; ; ; ; числа кратные 3 умножить на ; числа кратные 3 умножить на ; числа кратные 3 умножить на
  ; ; ; ; ; ; ; ; положительные: умножить на ; умножить на ; умножить на
  ; ; ; ; ; ; ; ; числа больше 10: умножить на ; умножить на ; умножить на
  ; ; ; ; ; ; ; ; ; числа меньше 12: умножить на ; умножить на ; умножить на
  ; ; ; ; ; ; ; ; положительные числа: разделить на ; разделить на ; разделить на
  ; ; ; ; ; ; ; ; четные числа , , заменить нулем
  ; ; ; ; ; ; ; ; отрицательные числа: умножить на ; умножить на ; заменить нулем
  ; ; ; ; ; ; ; ; числа кратные 2 разделить на ; числа кратные 5 разделить на ; числа кратные 3 разделить на  
  ; ; ; ; ; ; ; все нечетные разделить на ; все нечетные разделить на ; все нечетные разделить на
  ; ; ; ; ; ; ; ; числа больше 15: умножить на ; разделить на 10; умножить на
  ; ; ; ; ; ; ; ; ; числа кратные 5 разделить на ; числа кратные 5 разделить на ; числа кратные 5 разделить на
  ; ; ; ; ; ; ; ; все четные умножить на ; все четные умножить на ; все четные умножить на
  ; ; ; ; ; ; ; ; кратные 3 умножить на ; кратные 5 умножить на ; кратные 2 умножить на
  ; ; ; ; ; ; ; ; числа кратные 5 разделить на ; числа кратные 5 разделить на ; числа кратные 5 разделить на
  ; ; ; ; ; ; ; числа больше 10: умножить на ; умножить на 10; умножить на
  ; ; ; ; ; ; ; ; все числа умножить на ; все числа умножить на ; все числа умножить на
  ; ; ; ; ; ; ; ; все нечетные умножить на ; все нечетные умножить на ; все нечетные умножить на
  ; ; ; ; ; ; ; ; ; числа кратные 3 умножить на ; числа кратные 3 умножить на ; числа кратные 3 умножить на
  ; ; ; ; ; ; ; ; четные числа , , заменить нулем
  ; ; ; ; ; ; ; ; числа меньше 12: умножить на ; умножить на ; умножить на
  ; ; ; ; ; ; ; ; все нечетные разделить на ; все нечетные разделить на ; все нечетные разделить на
  ; ; ; ; ; ; ; ; ; числа больше 15: умножить на ; разделить на 10; умножить на
  ; ; ; ; ; ; ; ; числа кратные 2 разделить на ; числа кратные 5 разделить на ; числа кратные 3 разделить на
  ; ; ; ; ; ; ; ; положительные числа: умножить на ; умножить на ; умножить на

СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ. 3

1. ПРОЦЕДУРЫИ ФУНКЦИИ.. 3

2. ОПИСАНИЕ ФУНКЦИИ ЗАДАННОГО ВИДА.. 8

3. РЕКУРСИЯ.. 9

4. ИСПОЛЬЗОВАНИЕ ПАРАМЕТРОВ-МАССИВОВ В ПОДПРОГРАММАХ 10

СПИСОК ЛИТЕРАТУРЫ.. 14

ЗАДАНИЕ. 15

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-07-02 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: