Тема 7. Организация подпрограмм.
Описание и использование процедур и функций.

Вариант 1.

ЗАДАНИЕ 1.

Составьте программу, вычисляющую произведение трех матриц размером (n x n):

A = A1 · A2 · A3

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

Ниже приведена примерная структура программы:
(имена типов, переменных, процедур и функций Вы можете изменить по своему усмотрению)

CONST
   n = ... ; { размер матриц }
TYPE

   matrix = array[1..n,1..n] of integer;
VAR
  A, A1, A2, A3 : matrix;


PROCEDURE InputMatrix( var M : matrix );
VAR
   Описание локальных переменных;
BEGIN
   Ввод элементов массива М
END;

PROCEDURE PrintMatrix( M : matrix );
VAR
   Описание локальных переменных;
BEGIN
   Вывод массива М на экран в виде матрицы
END;

PROCEDURE MultiplyMatrices( M1, M2 : matrix; var M3 : matrix );
VAR
   Описание локальных переменных;
BEGIN
   Вычисление произведения матриц ( M3=М1*М2 );
END;

BEGIN
   Вызов процедуры InputMatrix для ввода элементов матриц А1, А2 и А3;
   Вызов процедуры PrintMatrix для вывода на экран матриц A1, A2 и A3;
   Вызов процедуры MultiplyMatrices для вычисления заданного выражения;
   Вызов процедуры PrintMatrix для вывода матрицы А на экран;
END.

Замечания.

1. Обратите внимание, что в разделе описания TYPE объявлен новый тип с именем matrix. В данном случае введение нового типа является необходимым, поскольку в используемых процедурах и функциях в качестве их параметров выступают массивы. Правила языка Паскаль не допускают конструирование типов при описании параметров процедур и функций. Тип должен быть представлен не конструкцией, а идентификатором (именем). Так, например, было бы не верно написать заголовок процедуры InputMatrix следующим образом:

PROCEDURE InputMatrix( var M : array[1..n, 1..n] of integer );

2. При описании процедур InputMatrix и PrintMatrix   используются различные способы передачи параметров. В заголовке процедуры InputMatrix формальный параметр M описан как "параметр-переменная" (перед идентификатором стоит ключевое слово var). В этом случае любые изменения значения переменной М (формального параметра) в теле процедуры приводят к соответствующим изменениям значений переменных А1, А2, А3 и А4, которые выступают в качестве фактических параметров при вызове процедуры InputMatrix:

InputMatrix( A1 ); InputMatrix( A2 ); и т.д.

Целью процедуры PrintMatrix является лишь вывод значений переменных на экран, а не их модификация, поэтому формальный параметр M описан как "параметр-значение"  (перед идентификатором ключевое слово var отсутствует). При этом,  если в теле процедуры значения переменной М будут изменены, то это не приведет к изменению значения фактического параметра.

 

ЗАДАНИЕ 2.

Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от xmin до xmax с шагом dx с точностью e.

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

Вопросы для защиты работ (6-7 темы):

1. Что называется подпрограммой?
2. Каковы основные принципы выделения подпрограмм?
3. Какие виды подпрограмм используются в языке Паскаль?
4. Что называется формальными и фактическими параметрами подпрограммы?
5. Чем отличается вызов функции от вызова процедуры?
6. Что такое локальные и глобальные переменные?
 

 

Назад к списку