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).