Студопедия


Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

Подпрограммы-функции (FUNCTION)




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

Формат объявления подпрограммы-функции:

FUNCTION <имя_функции> (<список_формальных_параметров>): <тип_возвращаемого_результата>; {раздел описания подпрограммы}

BEGIN{раздел операторов подпрограммы}

END;

Например (см. Задача 1), Function Power (x, y : real) : real;

Вызов подпрограммы-функции:

<имя_функции> (<список_фактических_параметров>) : <тип_возвращаемого_результата>;

Здесь, фактические («настоящие») параметры – параметры вызывающей программы.

Например (см. Задача 1), C:= Power (a, b);

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

Например (см. Задача 1), Power := exp(y*ln(x));

В качестве типа формального параметра может быть любой тип. Функция может использоваться без формальных параметров. Например, c:= Readkey;

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


Задача 8.4. Составить подпрограмму возведения вещественного числа в вещественную степень.

Примечание. Для простоты обращения подпрограмма Power на представленной блок-схеме обозначена сокращённо буквой P.


Блок-схема алгоритма подпрограммы Power


 
 

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

Листинг основной программы

PROGRAM TASK;

USES CRT;

VAR

A, B, C : REAL;

{объявление подпрограммы-функции}

FUNCTION POWER (X, Y:REAL): REAL; {заголовок функции}

BEGIN {начало тела функции}

IF (X>0) AND (Y>0) THEN POWER := EXP(Y*LN(X))

ELES

IF (X>0) AND (Y<0) THEN POWER := 1/EXP(Y*LN(X))

ELSE

IF (X<0) AND (Y>0) THEN POWER := EXP(Y*LN(ABS(X)))

ELSE

IF (X<0) AND (Y<0) THEN POWER := 1/EXP(Y*LN(ABS(X)))

ELSE

IF X=0 THEN POWER := 0

ELSE

IF Y=0 THEN

POWER := 1; {присвоение выход-го результата имени функции}

END; {конец тела функции}

BEGIN {начало тела основной программы}

CLRSCR;

WRITELN (‘Введите два вещественных числа’);

READLN (A,B);

C := POWER(A,B); {вызов подпрограммы-функции}

WRITELN (C);

END. {конец тела подпрограммы}

Здесь,

A, B, C – глобальные переменные,

X, Y – формальные параметры, которые в свою очередь являются входными параметрами-значения.




Примечание.Уравнение с = 6.412.6+12.16-6.8-12.16-6.8; можно реализовать следующим образом: C:= POWER(6.4, 12.6)+POWER(12.16, -6.8)-POWER(12.16, -6.8);

 
 

Задача 8.5. Вычислить площадь треугольника по формуле Герона.

 
 

Блок-схема алгоритма подпрограммы SQUARE

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

Листинг основной программы

PROGRAM TASK;

USES CRT;

VAR

A, B, C, S: REAL;

FUNCTION SQUARE (L1, L2, L3 : REAL): REAL;

VAR P: REAL;

BEGIN

P:= (L1+L2+L3)/2;

SQUARE:= SQRT(P*(P-L1)*(P-L2)*(P-L3));

END;

BEGIN

CLRSCR;

WRITELN (‘Введите стороны’);

READLN (A, B, C);

S:= SQUARE(A, B, C);

WRITELN(S);

READLN; END.

 
 

Задача 8.6. Дан массив целых чисел, размерностью 15 элементов. Вычислить сумму элементов с 1-го по 12 и с 8-го по 15. Найти произведение этих сумм.

Блок-схема алгоритма подпрограммы


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

 
 

Листинг основной программы

PROGRAM TASK;

USES CRT;

CONST N=15;

TYPE VECTOR = ARRAY[1..N] OF INTEGER;

VAR

P, I : INTEGER;

A : VECTOR;

FUNCTION SUMMA (L1, L2 : INTEGER): INTEGER;

VAR

J, S : INTEGER;

BEGIN

S := 0;

FOR J:=L1 TO L2 DO S:= S+A[J];

SUMMA:= S;

END;

BEGIN

CLRSCR;

FOR I:=1 TO N DO READ (A[I]);

P:= SUMMA(1, 12)*SUMMA(8, 15);

WRITELN(P);

READLN;

END.

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

 
 

Задача 8.7. Вычислить сумму чётных элементов трёх одномерных массивов.



Блок-схема алгоритма подпрограммы Summa

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

 
 


Листинг основной программы

PROGRAM TASK;

USES CRT;

CONST N=25;

TYPE

VECTOR=ARRAY[1..N] OF INTEGER;

VAR

A, B, C:VECTOR;

I: INTEGER;

FUNCTION SUMMA(L: INTEGER; D: VECTOR): INTEGER;

VAR

S, J: INTEGER;

BEGIN

S:= 0;

FOR J:=1 TO L DO

IF D[J] MOD 2 = 0 THEN S:= S+D[J];

SUMMA:=S;

END;

BEGIN

CLRSCR;

RANDOMIZE;

FOR I:=1 TO N DO

BEGIN

A[I]:=RANDOM(11);

B[I]:=RANDOM(21);

C[I]:=RANDOM(31);

END;

WRITELN (‘Сформированный массив A’);

FOR I:=1 TO N DO WRITE(A[I]:2, ‘’:3);

WRITELN;

WRITELN (‘A’, SUMMA(N,A));

WRITELN (‘Сформированный массив B’);

FOR I:=1 TO N DO WRITE(B[I]:2, ‘’:3);

WRITELN;

WRITELN (‘B’, SUMMA(N,B));

WRITELN (‘Сформированный массив C’);

FOR I:=1 TO N DO WRITE(C[I]:2, ‘’:3);

WRITELN;

WRITELN (‘C’, SUMMA(N,C));

READLN;

END.

Примечание. Вызов подпрограммы Summa в теле основной программы осуществляется три раза внутри операторов вывода. При этом каждый раз передаются различные фактические параметры: первый параметр – размерность массива, второй параметр – имя массива, элементы которого проверяются на чётность и суммируются.


Вопросы для самопроверки

1. Дайте определение подпрограммы?

2. Какое основное назначение подпрограммы?

3. Каков формат описания функции?

4. Каким образом функция возвращает значения?

5. Где указывается список формальных параметров?

6. Как можно описать входные параметры?

7. В каких случаях используют параметры-значения?

8. Как можно осуществить вызов функции и передачу параметров?

9. Какие три правила необходимо учитывать при передаче параметров?

10. Какие основные отличия процедуры от функции?





Дата добавления: 2015-02-04; просмотров: 665; Опубликованный материал нарушает авторские права? | Защита персональных данных | ЗАКАЗАТЬ РАБОТУ


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Только сон приблежает студента к концу лекции. А чужой храп его отдаляет. 8758 - | 7493 - или читать все...

Читайте также:

 

18.204.227.250 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


Генерация страницы за: 0.008 сек.