double arrow

Оформление подпрограмм в блок-схемах алгоритмов

2

Блок-схема алгоритма подпрограммы изображается аналогично блок-схемам программ: в ней присутствуют блоки «Начало» и «Конец», между которыми заключена вся исполняемая часть подпрограммы.

Вызов подпрограммы в основной программе изображается на блок-схеме в виде блока «Предопределенный процесс»:

1.3 Пример составления алгоритма и программы на языке Pascal для обработки одномерных массивов с использованием подпрограмм.

Задание: Даны два массива вещественных чисел A(20) и F(30). Найти средние арифметические значения положительных элементов в каждом массиве и вывести на экран отношение этих значений.

Решение.

Для объявления массивов A и F опишем в разделе Type тип массива из 30 вещественных чисел. Для обозначения количества элементов массива A введем переменную Na, количества элементов массива F – переменную Nf, средних арифметических значений положительных элементов массивов – переменные SrA и SrF.

Для каждого массива необходимо повторить одни и те же операции:

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

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

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

Процедуру вывода элементов массива назовем PrintMassiv, и будем в нее передавать те же переменные: массив X и количество элементов в массиве Nx. При этом в списке формальных параметров перед массивом служебное слово var можно не указывать, поскольку значения элементов массива в процедуре не изменяются, а только выводятся на экран.

Функцию поиска среднего значения среди положительных элементов массива назовем MiddlePositive, и будем в нее также передавать массив X и количество элементов в массиве Nx. Поскольку среднее арифметическое является вещественным числом, тип функции должен быть real. Внутри функции будем использовать локальную переменную K для подсчета количества положительных элементов массива, переменную M для расчета суммы всех положительных элементов массива и их среднего значения.

1.3.1 Блок-схема алгоритма решения данной задачи выглядит следующим образом:

Блок схема подпрограммы EnterMassiv

Блок схема подпрограммы PrintMassiv

Блок схема подпрограммы MiddlePositive

Блок-схема основной программы

1.3.2 Текст программы на языке Pascal выглядит следующим образом:

program primer7;

uses crt;

type

mass=array[1..30] of real;

var

A,F:mass;

Na,Nf:byte;

SrA,SrF:real;

procedure EnterMassiv(Nx:byte;var X:mass);

var

i:byte;

begin

for i:=1 to Nx do

X[i]:=100*random-50;

end;

procedure PrintMassiv(Nx:byte;X:mass);

var

i:byte;

begin

for i:=1 to Nx do

begin

write(X[i]:7:2);

if i mod 10 = 0 then writeln;

end;

end;

function MiddlePositive(Nx:byte;X:mass):real;

var

i,K:byte;

M:real;

begin

M:=0;

K:=0;

for i:=1 to Nx do

if X[i]>0

then begin

M:=M+X[i];

K:=K+1;

end;

M:=M/K;

MiddlePositive:=M;

end;

Begin

clrscr;

randomize;

Na:=20;

Nf:=30;

EnterMassiv(Na,A);

writeln('Massiv A:');

PrintMassiv(Na,A);

EnterMassiv(Nf,F);

writeln;

writeln('Massiv F:');

PrintMassiv(Nf,F);

SrA:=MiddlePositive(Na,A);

writeln;

writeln('Srednee znachenie pologitelnix elementov massiva A SrA=',SrA:6:2);

SrF:=MiddlePositive(Nf,F);

writeln('Srednee znachenie pologitelnix elementov massiva F SrF=',SrF:6:2);

writeln('Otnoshenie SrA/SrF = ',SrA/SrF:6:2);

readkey;

end.

1.3.3 Результаты работы программы:

Massiv A:

-23.80 -12.44 34.55 40.12 44.23 -12.64 47.59 -44.87 -33.71 22.57

-2.90 13.48 30.43 -3.48 -10.49 -28.54 13.54 45.97 45.69 -6.19

Massiv F:

16.44 35.73 -32.21 -43.19 23.06 -27.09 4.27 42.06 13.07 -10.75

-44.77 31.96 -17.03 -35.05 -14.75 42.72 -44.94 -7.59 36.02 -44.01

-20.89 3.38 -44.29 34.89 -43.59 7.92 -12.39 35.46 40.88 18.63

Srednee znachenie pologitelnix elementov massiva A SrA= 33.82

Srednee znachenie pologitelnix elementov massiva F SrF= 25.77

Otnoshenie SrA/SrF = 1.31

2

Сейчас читают про: