Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Текст программы на языке Паскаль. A: array [1..L, 1..N, 1..M] of integer;

Поиск

Program Pr_46;

Const

N=25; M=40; L=15;

Var

p, X, i, j, K, S: integer;

A: array [1..L, 1..N, 1..M] of integer;

begin

for p:=1 to L do

begin

writeln('Введите оценки по предмету ', p);

for i:=1 to N do

begin

    writeln(' для ученика ', i);

    for j:=1 to M do read(A[p,i,j]);

end;

end;

writeln('Введите номер ученика Х');

readln(X);

S:=0; K:=0;

for p:=1 to L do

   for j:=1 to M do

   if A[p,X,j]>0 then

   begin

       S:= S+ A[p,X,j];

       K:= K+1;

   end;

if K>0 then

writeln('Средняя оценка=', S/K)

else

writeln('Оценок нет');

end.

Текст программы на языке Фортран

Program Pr_46

Implicit none

integer, parameter:: N=25, M=40, L=15

integer p, X, i, j, K, S

integer A(L, N, M)

do p=1,L

print *, 'Введите оценки по предмету ', p

do i=1,N

    print *,' для ученика ', i

       read *, (A(p,i,j), j=1,M)

enddo

enddo

print *, 'Введите номер ученика Х'

read *, X

S=0

 K=0

do p=1,L

   do j=1,M

   if (A(p,X,j)>0) then

       S= S+ A(p,X,j)

       K= K+1

   endif

enddo

enddo

if (K>0) then

print *, 'Средняя оценка=', S/K

else

print *,  'Оценок нет'

endif

end

Программа на языке Python

# В качестве массива используется стандартный тип

# list (список), элементами которого являются

# списки, состоящие из списков

L = 15

N = 25

M = 40

# Ввод трехмерного массива A

A = [] # Создаем пустой список страниц

for p in range(0, L): # p = 0,..., L-1

A.append([])

# Добавляем пустой список строк p-й страницы

print("Введите оценки по предмету {0}".

format(p+1))

for i in range(0, N): # i = 0,... N-1

A[p].append([])

# Добавляем пустой список элементов i-й строки

print(" для ученика {0}".format(i+1))

for j in range(0, M): # j = 0,... M-1

    print("A[{0},{1},{2}]: ".

       format(p+1,i+1,j+1))

    A[p][i].append(int(input()))

print("Введите номер ученика X (от 1 до {0}):".

format(N))

X=int(input()) - 1

# Расчет средней оценки:

S = 0

K = 0

for p in range(0, L): # p = 0,..., L-1 – L раз

for j in range(0, M): # j = 0,... M-1 – M раз

    if A[p][X][j]!= 0:

      S = S + A[p][X][j]

      K = K + 1

if K!= 0:

print("Средняя оценка = {0}".format(S/K))

else:

print("Оценок нет")

Программа в системе Матлаб

L = 15;

N = 25;

M = 40;

for p=1:L

disp(['Введите оценки по предмету ', int2str(p)]);

for i=1:N

disp([' для ученика ', int2str(i)]);

for j=1:M

    A(p,i,j)=input('A=');

end;

end;

end

X=input('Введите номер ученика Х');

S=0; K=0;

for p=1:L

for j=1:M

   if A(p,X,j)>0

   S= S+ A(p,X,j);

   K= K+1;

   end

end

end

if K>0

disp(['Средняя оценка=', num2str(S/K)]);

else

disp('Оценок нет')

end

 

ВсПОМОГАТЕЛЬНЫЕ АЛГОРИТМЫ

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

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

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

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

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

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

Наиболее общими понятиями, соответствующими отношению основной алгоритм – вспомогательный алгоритм, соответственно являются основная (главная) программ а и подпрограмма. Тогда говорят, что обращению в основном алгоритме к вспомогательному алгоритму (точке вызова вспомогательного алгоритма) в основной программе соответствует вызов подпрограммы (обращение к подпрограмме), а определению вспомогательного алгоритма соответствует определение подпрограммы.

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

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

Формальные параметры – это параметры, которые используются при описании вспомогательного алгоритма для указания используемых в алгоритме имен его входных и выходных данных. Ближайшей аналогией будет понятие аргумента при описании какой-либо математической функции. Например, известно, что cos(x) можно вычислить по формуле cos(x)=sin(x +π/2). Тогда x можно считать формальным параметром функции «косинус», а приведенную формулу – алгоритмом вычисления данной функции для любого заданного значения х с использованием стандартной функции «синус».

Фактические параметры – это параметры, указываемые в основном алгоритме как передаваемые вспомогательному алгоритму в конкретной точке вызова. Порядок перечисления аргументов при определении поименованного алгоритма и при обращении к нему совпадает: первое значение при обращении будет соответствовать первому значению при определении алгоритма, второе – второму, и так далее. Очевидно, что при наличии в основном алгоритме более одной точки вызова вспомогательного алгоритма фактические параметры могут как различаться, так и совпадать. Воспользовавшись предыдущим примером с алгоритмом вычисления функции «косинус», запишем обращение к данному алгоритму в обычной для математики форме, используемой для вычисления значения функции – cos(0), cos(π/3), cos(π/2) и cos(π) – тогда числа 0 и π, как и выражения π/3 и π/2, будут фактическими параметрами, значение которых принимает формальный параметр x. Соответственно, для вычисления функции sin фактическим параметром все четыре раза будет значение выражения x +π/2, зависящее от конкретного значения параметра x, полученного при обращении к функции cos в точке вызова.

 

В качестве фактических параметров при передаче входных данных вспомогательному алгоритму могут быть использованы константы, переменные или целые выражения. Если в качестве параметра использовано выражение, то его значение вычисляется, естественно, до передачи в подпрограмму. В составе таких выражений могут встречаться и обращения к подпрограммам, соответствующим понятию функция. Например, при обращении sqr (sin (х/2)) на вход функции sin передается вычисленное значение выражения х/2, а результат вызова функции sin (х/2) передается на вход функции sqr, то есть является её входным фактическим параметром.

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

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

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

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

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



Поделиться:


Последнее изменение этой страницы: 2021-04-12; просмотров: 116; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.156.84 (0.01 с.)