Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
21.05.2015
Размер:
101.38 Кб
Скачать

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- результаты вещественные}