Readln(X,Y); Writeln( Power(X,Y )) End.

ПАРАМЕТРЫ СТРУКТУРИРОВАННЫХ ТИПОВ

Чтобы передать в подпрограмму массив (строку, запись,...), нужно сначала описать его тип. Следствие – возможные затраты памяти.

Type vector = array [1..100] of Real;

Procedure Sum (A : vector; Var B : vector); begin...end;

Открытые массивы:

Procedure Sum (A : array of Real; Var B : array of Real); Var i : Word;

begin for i := 0 to High(A) do B[i] := A[i]+B[i]

end;

Var A1,A2 : array [1..100] of Real;

Begin

{инициализация массивов A1 и A2}

Sum(A1,A2) ;

{вывод A2} End.

РЕКУРСИЯ

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

Var {вычисление n!}

N : Word;

Function Fact (m : Word) : Int64; begin if m = 0 then

Fact := 1 else

Fact := m*Fact(m-1) end;

Begin

Readln( N);

Writeln( 'n! = ',Fact(N )) End.

РЕКУРСИЯ

Реализация рекурсивных алгоритмов при большом числе итераций ограничена доступным объемом памяти; каждый отложенный вызов процедуры или функции – это свой набор значений всех локальных переменных этой подпрограммы (фрейм активации), размещенных в стеке.

{вычисление n! итерационным методом}

Function Fact (m : Word) : Int64;

Var

I : Word; P : Int64; begin P := 1; if m = 0 then

Fact := 1 else begin for I := 1 to m do P:=P*I;

Fact := P end

end;

ПРОЦЕДУРНЫЙ ТИП

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

процедура
или
функция
.
Type
идентификатор
типа
=
;
procedure
список
параметров
function
список
параметров
тип
результата
:

Билет 34. Процедурные типы. Параметры-функции и параметры-процедуры.

ПАРАМЕТРЫ-ФУНКЦИИ И ПАРАМЕТРЫ-ПРОЦЕДУРЫ

{вычисление интеграла функции}

Type

FuncType = Function ( X : Real) : Real;

Procedure Integral (LowerLimit, UpperLimit : Real;

Var Result : Real;

Funct : FuncType) ;

begin ... end;

Function SinExp (Arg : Real) : Real; begin

SinExp := Sin(Arg) + Exp(Arg) end;

Var

Res : Real;

...

Begin ...

Integral (0, 1, Res, SinExp) ;

...

End.

ПРОЦЕДУРА – ПОЛЕ ЗАПИСИ

Type

ProcType = Procedure;

RecType = record

X,Y : Integer; P : ProcType; end;

Var

Rec1,Rec2 : RecType;

Procedure P1; begin

...

end;

Begin ...

with Rec1 do P := P1; ... End.

Процедурные переменные совместимы с переменными типа Pointer (их значения – адреса). Процедуры и функции – это адреса.

СТАНДАРТНЫЕ МАТЕМАТИЧЕСКИЕ ФУНКЦИИ И ПРОЦЕДУРЫ

ABS(X)– возвращает абсолютное значение аргумента Х (Х – целое/вещественное, результат – как у аргумента);

SQR(X)– возвращает квадрат Х (Х – целое/вещественное, результат – как у аргумента);

SIN(X), COS(X), ArcTan(X)– возвращают значения синуса, косинуса и арктангенса

(Х – целое/вещественное, результат – Extended);

SQRТ(X)– возвращает квадратный корень из Х (Х > 0 – целое/вещественное, результат – Extended) ;

EXP(X), LN(X)– возвращает экспоненту или натуральный логарифм Х (Х – целое/вещественное, результат – Extended) ;

FRAC(X)– дробная часть числа Х (Х – целое/вещественное, результат – Extended) ;

INT(X)– целая часть числа Х (Х – целое/вещественное, результат – Extended) ;

TRUNC(X)– целая часть числа Х (Х – целое/вещественное, результат – Int64) ; ROUND(X)– округление Х до ближайшего целого (Х – целое/вещественное, результат – Int64) ;

СТАНДАРТНЫЕ МАТЕМАТИЧЕСКИЕ ФУНКЦИИ И ПРОЦЕДУРЫ

RANDOM(X)– возвращает случайное целое число из диапазона от 0 до Х (X и результат – Integer) ;

RANDOM– возвращает случайное число от 0 до 1 (результат – Extended) ; RANDOMIZE– процедура гарантирует несовпадение последовательностей случайных чисел, выдаваемых функцией Random;

ODD(X)– возвращает True, если Х – нечетное число, и False, если Х – четное (Х – целое, результат – Boolean);

INC(Var X : <целое>), DEC(Var X : <целое>)– увеличивает или уменьшает значение Х на 1 (процедуры);

INC(Var X : <целое>; N : <целое>), DEC(Var X : <целое>; N : <целое>)– увеличивает или уменьшает значение Х на N (процедуры) ;

Var

X : Integer;

Begin

X := 2;

INC(X,4) {X  6}

End.

Билет 35. Модули. Структуры модуля.

МОДУЛИ

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

Unit <имя модуля> ;

Interface

<секция интерфейса> Implementation

<секция реализации>

Initialization

<секция инициализации>

Finalization

<секция завершения> End.

Имя модуля (например, Unit_1) должно совпадать с именем дискового физического файла, в который помещается исходный текст модуля (unit_1.pas). Для подключения ресурсов модуля к другим программным единицам

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

МОДУЛИ

Unit Unit_1;

Interface

Type

Complex = record Re, Im : Real end;

Var

Zmain : Complex;

Procedure P_1 (X,Y : Complex; Var Z : Complex) ;

Implementation

Procedure P_1; begin

Z.Re := X.Re + Y.Re;

Z.Im := X.Im + Y.Im end;

Initialization

Zmain.Re := 1; Zmain.Im := -1 End.

СЕКЦИИ МОДУЛЯ

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

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

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

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

СТАНДАРТНЫЕ МОДУЛИ DELPHI PASCAL

• Системные модули:

- SYSTEM– включает все стандартные математические процедуры и функции, обеспечивает работу с файлами, с динамической памятью, с другими модулями и т.д.; подключается автоматически к каждой программе.

- SYSUTILS– содержит дополнительные процедуры и функции для работы с файлами, дисками, строками, по обработке исключительных ситуаций и др.

- MATH– содержит множество дополнительных математических функций и процедур.

• Модули визуальных компонентов(VCL – Visual Component Library) используются для визуальной разработки полнофункциональных GUIприложений - приложений с графическим пользовательским интерфейсом (Graphical User Interface).


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