Модульное программирование: реализация функций, локальные и глобальные переменные, виды параметров подпрограмм

Функция-это поименованный составной оператор, возвращающий единственное значение, имя которой задается служебным словомFunction.

Функция, в отличии от процедуры, возвращает в вызывающую программу значение, т.е. результат ее работы. Это значение можно:

· присвоить переменной

· использовать в выражении

· передать в качестве параметра в процедуру или функцию.

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

Структура функции имеет следующий вид:

Function <имя функции>{(формальные параметры : их тип)}: <тип функции>;
{Var
(локальные переменные)}
begin
. . .

<имя функции>: =<выражение>
end;

Где:

Тип функции – простой порядковый тип, исключение - тип string. Если тип не стандартный, то его надо предварительно описать в разделе Type программы.

<имя функции>: =<выражение> - оператор, который осуществляет механизм возврата значения.

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

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

Рассмотрим отличие в использовании процедур и функций на примере нахождения НОД для трех чисел.

var x, y, z, nod:integer;

procedure pnod(m,n:integer; var nod:integer);

begin while m<>n do

if m>n then m:=m-n else n:=n-m;

nod:=m;

end;

function fnod(m,n:integer):integer;

begin while m<>n do

if m>n then m:=m-n else n:=n-m;

fnod:=m;

end;

begin writeln('input x,y,z');

readln(x,y,z);

{работа с процедурой}

pnod(x,y,nod);

pnod(nod,z,nod);

writeln(‘pnod=’,nod);

{работа с функцией}

Writeln (‘fnod=’, fnod(fnod(x,y),z));

End.

Модульное программирование: описание и использование модулей, стандартные модули в ЯП Паскаль.

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

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

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

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

Описание модулей

Исходный текст каждого модуля хранится в отдельном файле с расширением .pas. Общая структура модуля:

unit имя; { заголовок модуля }

interface { интерфейсная секция модуля }

{ описание глобальных элементов модуля (видимых извне) }

implementation { секция реализации модуля }

{ описание локальных (внутренних) элементов модуля }

begin { секция инициализации }

{ может отсутствовать }

end.

В Турбо Паскале имеется восемь стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций. Этими модулями являются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBOS и GRAPH3. Модули GRAPH, TURBOS и GRAPHS выделены в отдельные TPU-файлы, а остальные входят в состав библиотечного файла TURBO.TPL. Лишь один модуль SYSTEM подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за словом USES.

Понятие и виды рекурсии. Примеры рекурсивных алгоритмов.

Рекурсия — это такая организация выполнения работы функции, при которой данная функция вызывает сама себя.

Виды:

Прямая рекурсия - вызов функцией самой себя делается непосредственно в этой же функции

Косвенная рекурсия - создаётся за счёт вызова данной функции из какой-либо другой функции, которая сама вызывалась из данной функции

Пример рекурсивного алгоритма:

Числа Фибоначчи

Function F(n:byte):longint;
begin
if n <= 1
then F:=1
else F:= F(n-1)+F(n-2)

Наши рекомендации