
- •Модули. Структура модуля. Стандартные модулиDelphi. Структура модуля.
- •Interface
- •Пример модуля для вычисления расстояний между точками на плоскости и площади треугольника, заданного тремя точками.
- •Interface
- •Implementation
- •Пример модуля, реализующего стек с целыми числами.
- •Interface
- •Implementation
- •Var m:array of integer;
- •Initialization
- •Модули Delphi МодульMath
- •МодульSysUtils
- •Модуль Console
- •Задания.
Interface
ProcedurePush(x:integer); //Поместить число х в стек.
FunctionPop:integer; //Извлечь число из стека.
ProcedureInitSteck; //Очистить стек.
FunctionIsEmpty:Boolean;// Результат True – если стек пустой.
Implementation
Var m:array of integer;
Top: integer;
Procedure Push(x:integer); //Поместить число х в стек.
begin
if top=High(M) then SetLength(M, Length(M)+20);
{ Если стек заполнен, то увеличиваем число его элементов на 20, High(M) - номер последнего элемента, Length(M) – количество элементов в динамическом массиве, SetLength – задание числа элементов в массиве.}
M[top]:=x;
Inc(top);
end;
FunctionPop:integer; //Извлечь число из стека.
begin
top:=top-1; // Dec(top)
Result:=M[top];
end;
Procedure InitSteck; // Очистить стек.
begin
top:=0;
end;
Function IsEmpty:Boolean; // Результат True – если стек пустой.
begin
Result:=top=0;
end;
Initialization
InitSteck; //Проводим инициализацию стека
SetLength(M,20); //Задаем размер стека в 20 элементов
end.
В модульSteckможно добавить и другие функции, например печати элементов без их извлечения, определения числа элементов в стеке и т.д. Приведем пример программы, использующей стек. В программе последовательно вводятся и помещаются в стек целые числа до первого отрицательного значения. При извлечении их из стека будем выводить их на экран. В результате получим обратную последовательность чисел.
Листинг программы TestSteck.
ProgramTestSteck;
UsesSteck;
Var n:integer;
begin
repeat
Write(‘Введите число‘);
Readln(n);
Push(n);
until n<0;
While notIsEmptydo//Пока стек не пустой, извлекаем элемент и печатаем.
begin
n:=Pop;
Write(n,’ ‘);
end;
Readln;
end.
Модули Delphi МодульMath
В модуле MathDelphiнаходиться много полезных математических функций, отсутствующих в стандартной реализации языка Паскаль.
Тригонометрические функции– все угловые параметры и результаты измеряются в радианах:
Function ArcCos(x : Extended): Extended; {параметр |x|<=1, результат [0..Pi] радиан}
Function ArcSin(x : Extended): Extended; {параметр |x|<=1, результат [0..Pi] радиан}
FunctionArctan2(y,x:Extended):Extended; {вычисляет арктангенсy/xи возвращает угол [-Pi..Pi] в правильный квадрант}
ProcedureSinCos((constTheta:Extended;varSin,Cos:Extended); {ПроцедураSinCosработает в 2 раза быстрее, чем вызов функцийSin(),Cos() по отдельности. По углуThetaвычисляет и передает через параметры-переменные значения функцийSin,Cos}
FunctionTan(const X: Extended): Extended;
FunctionCotan(const X: Extended): Extended; {1/tg(x)}
Функции преобразования углов:
Function DegToGrad(const Degrees: Extended): Extended; {преобразует градусы в радианы radians = degrees*(pi/180).}
Function RadToDeg(const Radians: Extended): Extended; {преобразует радианы в градусы degrees = radians*(180/pi).}
Гиперболические функции:
FunctionCosh(const X: Extended): Extended;
FunctionSinh(const X: Extended): Extended;
FunctionTanh(const X: Extended): Extended;
FunctionArcCosh(const X: Extended): Extended;
FunctionArcSinh(const X: Extended): Extended;
FunctionArcTanh(const X: Extended): Extended;
Логарифмические функции:
Function Log10(const X: Extended): Extended; {логарифм по основанию 10 от Х}
Function Log2(const X: Extended): Extended; {логарифм по основанию 2 от Х}
Function LogN(const Base, X: Extended): Extended; {логарифм по основанию Baseот Х}
Суммы величин:
functionSum(constData:arrayofDouble):Extended; {сумма элементов вещественного массиваData– результат вещественный}
functionSumInt(constData:arrayofInteger):Integer; {сумма элементов целочисленного массиваData– результат целый}
functionSumOfSquares(constData:arrayofDouble):Extended; {сумма квадратов элементов вещественного массиваData– результат вещественный}
procedureSumsAndSquares(constData:arrayofDouble;varSum,SumOfSquares:Extended) {вычисление суммы элементовSumи суммы квадратов элементовSumOfSquaresвещественного массиваData– результатsвещественные}
Минимальная величина массива данных:
function MinValue(const Data: array of Double): Double; {нахождение минимального значения среди элементов вещественного массива Data - результат вещественный}
function MinIntValue(const Data: array of Integer): Integer; {нахождение минимального значения среди элементов целочисленного массива Data - результат целый}
Вычисление минимального значения среди А и В, тип результата определяется типом аргументов:
functionMin(A,B: Integer): Integer; overload;
functionMin(A,B: Int64): Int64; overload;
functionMin(A,B: Single): Single; overload;
functionMin(A,B: Double): Double; overload;
functionMin(A,B: Extended): Extended; overload;
Максимальная величина массива данных:
function MaxValue(const Data: array of Double): Double; {нахождение максимального значения среди элементов вещественного массива Data - результат вещественный}
function MaxIntValue(const Data: array of Integer): Integer; {нахождение максимального значения среди элементов целочисленного массива Data - результат целый}
Вычисление максимального значения среди А и В, тип результата определяется типом аргументов:
functionMax (A,B: Integer): Integer; overload;
functionMax (A,B: Int64): Int64; overload;
functionMax (A,B: Single): Single; overload;
functionMax (A,B: Double): Double; overload;
functionMax (A,B: Extended): Extended; overload;
Среднее значение массива данных:
functionMean(constData:arrayofDouble):Extended; {нахождение среднего значения элементов вещественного массиваData- результат вещественный}
procedureMeanAndStdDev(constData:arrayofDouble;varMean,StdDev:Extended); {нахождение среднего значенияMeanи среднеквадратичного отклоненияStdDevэлементов вещественного массиваData- результаты вещественные}