Модульное программирование: реализация функций, локальные и глобальные переменные, виды параметров подпрограмм
Функция-это поименованный составной оператор, возвращающий единственное значение, имя которой задается служебным словом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)