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


При самостоятельном желании понять тему " Подпрограммы-функции (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. Какие основные отличия процедуры от функции?


Хм, так же просматривали

Заказ

ФОРМА ЗАКАЗА

Бесплатная консультация

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

Этапность

СОПРОВОЖДЕНИЕ КЛИЕНТА

Получить работу можно всего за 4 шага

01
Оставляете запрос

Оформляете заказ работы, заполняя форму на сайте.

02
Узнаете стоимость

Менеджер оценивает сложность. Узнаете точную цену.

03
Работа пишется

Оплачиваете и автор приступает к выполнению задания.

04
Забираете заказ

Получаете работу в электронном виде на вашу почту.

Услуги

НАШ СЕРВИС

Что мы еще делаем?

icon
Дипломные работы

от 9800 рублей

ПОДРОБНЕЕ
icon
Лабораторные работы

от 630 рублей

ПОДРОБНЕЕ
icon
Домашние работы

от 180 рублей

ПОДРОБНЕЕ
icon
НИР (научно-исследовательские работы)

от 3300 рублей

ПОДРОБНЕЕ
icon
Дневник по практике

от 580 рублей

ПОДРОБНЕЕ
icon
Работы для духовной семинарии

от 980 рублей

ПОДРОБНЕЕ