Процедуры и функции.

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

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

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

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

Наиболее часто используемые арифметические встроенные функции:

ABS(X) – вычисление абсолютной величины Х;

ARСTAN(X) – вычисление угла, тангенс которого равен Х, значение угла представляется в радианах;

COS(X) – вычисление косинуса Х, параметр задает значение угла в радианах;

SIN(X) - вычисление косинуса Х, параметр задает значение угла в радианах;

EXP(X) – вычисления значения еХ;

INT(X) – вычисление целой части Х;

LN(X) – вычисление натурального логарифма Х;

SQR(X) – возведение значения Х в квадрат;

SQRT(X) – извлечение квадратного корня из Х;

PI – функция возвращает значение числа p;

RANDOM(N) – генерирует значение случайного числа в диапазоне от 0 до N, тип результата целочисленный;

RANDOM – генерирует значение случайного числа в диапазоне от 0 до 0,99, тип результата вещественный.

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

tg(x)=sin(x)/cos(x); ctg(x)=cos(x)/sin(x);

lg(x)»0,43429ln(x); ;

; .

В Паскале нет функции возведения в степень, поэтому для вычисления ZX необходимо записать EXP(X*LN(Z)), причем число Z должно быть больше нуля.

Встроенные процедуры ввода-вывода (WRITE, WRITELN, READ, READLN) были рассмотрены ранее.

Функция, определенная пользователем, состоит из заголовка и тела функции и имеет формат:

FUNCTION имя функции[(формальные параметры)]:тип результата;

Разделы описаний

BEGIN

Раздел операторов

END;

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

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

имя функции [(фактические параметры)];

Процедуры пользователя.Описание такой процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова PROCEDURE, имени процедуры и необязательного заключенного в круглые скобки списка формальных параметров с указанием типа каждого параметра. Имя процедуры – идентификатор, уникальный в пределах программы, тело процедуры – локальный блок по структуре аналогичный программе на Паскале. Формат записи процедуры:

PROCEDURE имя процедуры[(формальные параметры)];

Разделы описаний

BEGIN

Раздел операторов

END;

Для обращения к процедуре используется оператор вызова процедуры:

имя процедуры[(фактические параметры)];

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

Если процедура возвращает в программу какие-либо значения, то соответствующие переменные должны быть описаны в разделе описаний переменных. [10, 11]

Пример 15. Программы нахождения факториала:

а) с использованием функции.

PROGRAM FAKT1;

USES CRT;

VAR N,M,F1,F2: integer;

FUNCTION F(K: integer): integer;

VAR FAKT,I : integer;

BEGIN

FAKT:=1

FOR I:=1 TO K DO FAKT:=FAKT*I;

F:=FAKT;

END;

BEGIN {основная программа}

CLRSCR;

READ (N,M);

F1:=F(N); F2:=F(M); {обращение к функции}

WRITELN(‘ ‘,N:3,’!=’,F1:7);

WRITELN(‘ ‘,N:3,’!=’,F2:7);

END.

б) с использованием рекурсивной функции.

PROGRAM FAKT3;

USES CRT;

VAR N: integer;

FUNTION FACT(I: integer):longint;

BEGIN

IF I=1 THEN FACT:=1

ELSE FACT:=I*FACT(I-1)

END;

BEGIN {основная программа}

CLRSCR;

READ (N);

F1:=FACT(N); {обращение к функции}

WRITELN(‘ ‘,N:3,’!=’,F1:7);

END.

в) с использованием процедуры.

PROGRAM FAKT2;

USES CRT;

VAR N,M: integer;

PROCEDURE F(K: integer);

VAR FAKT,I : integer;

BEGIN

FAKT:=1

FOR I:=1 TO K DO FAKT:=FAKT*I;

WRITELN(‘ ‘,K:3,’!=’,FAKT:7);

END;

BEGIN {основная программа}

CLRSCR;

READ (N,M);

F(N); F(M); {обращение к процедуре}

END.








Дата добавления: 2014-12-20; просмотров: 1201;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.013 сек.