Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕтодичка по практическим работам.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
156.28 Кб
Скачать

Контрольные вопросы

  1. Заголовок процедуры.

  1. Формальные и фактические параметры.

  2. Параметры-значения и параметры-переменные.

  3. Вызов процедуры и возврат из процедуры.

  4. Передача фактических параметров по ссылке и по значению.

  5. Правило установления соответствия формальных и фактических параметров, требования к соответствующим формальным и фактическим параметрам.

  6. Глобальные и локальные данные подпрограмм. Области видимости.

  7. Рекурсивный вызов подпрограмм.

Лабораторная работа 7. Использование функций Основные сведения

Описание функции

function имя_функции(параметр1; параметр2;...): тип; тело_функции;

Описание функции располагается непосредственно перед разделом операторов основной программы или вызывающей подпрограммы.

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

Вызов функции

имя_ функции( фактический_параметр1, фактический_параметр2,...)

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

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

  • через возвращаемое функцией значение,

  • через параметры функции,

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

Пример выполнения

По заданным 50-элементным вещественным массивам A, B и C вычислить

здесь запись mini – означает минимум по все элементам массива.

program PRIMER;

const N=50;

type MAS=array[1..N] of real;

var arA, arB, arC, arBC, arBA : MAS;

rT : real;

{***** SUMMATR *****}

procedure SUMMATR( var arREZ:MAS; arM1,arM2:MAS );

{

Действие:

Поэлементное суммирование массивов arREZ=arM1+arM2

Параметры входные:

arM1, arM2 – массивы-слагаемые

Параметры выходные:

arREZ – массив-результат

Замечания: –

}

var I:integer;

begin

for I:=1 to N do

arREZ[I]:=arM1[I]+arM2[I]

end;{ SUMMATR }

{***** VVOD *****}

procedure VVOD(var arM:MAS);

{

Действие:

Ввод массива

Параметры входные: -

Параметры выходные:

arM – массив-результат

Замечания: –

}

var I:integer;

begin

for I:=1 to N do

read(arM[I])

end;{ VVOD }

{***** MIN *****}

function MIN( arM:MAS ): real;

{

Действие:

Нахождение минимального элемента

Параметры входные:

arM – массив

Параметры выходные: -

Возвращает:

значение минимального элемента

Замечания: –

}

var I:integer; R:real;

begin

R:=arM[1];

for I:=2 to N do

if R>arM[I] then R:=arM[I];

MIN:=R

end;{ MIN }

{***** MAX *****}

function MAX(arM:MAS): real;

{

Действие:

Нахождение максимального элемента

Параметры входные:

arM – массив

Параметры выходные: -

Возвращает:

значение максимального элемента

Замечания: –

}

var I:integer; R:real;

begin

R:=arM[1];

for I:=2 to N do

if R<arM[I] then R:=arM[I];

MAX:=R

end;{ MAX }

{***** MAIN *****}

begin

writeln('Введите A');

VVOD(arA);

writeln('Введите B');

VVOD(arB);

writeln('Введите C');

VVOD(arC);

SUMMATR(arBC,arB,arC);

SUMMATR(arBA,arB,arA);

if MIN(arA) < MAX(arB) then

T := MIN(arB)/MAX(arA) + MAX(arC)/MIN(arBC)

else

T := MAX(arBA) + MIN(arC);

writeln('T=',T)

end.