Меню

Как подключить математический модуль в делфи

Обучающий курс. 12. Функции и процедуры в Delphi. Математические вычисления. Случайные числа

Общие сведения о подпрограммах


Вызов подпрограмм

Вызываются подпрограммы по имени. Если подпрограмме требуется передать какие-либо параметры, то они указываются в скобках после имени подпрограммы через запятую. Если входные параметры отсутствуют, достаточно просто написать имя подпрограммы, либо оставить скобки пустыми. В случае, если работа происходит с функцией, результат можно «сохранить» в какой-то переменной, просто «присвоив» этой переменной функцию.

Обратите внимание: работа с функциями происходит как с обычными переменными, просто их значения вычисляются «на лету».

Функции математических вычислений

Это лишь часть всех доступных функций. На самом деле их гораздо больше. Но помимо функций есть ещё процедуры.

Процедуры работы с числами

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

Не хватает стандартных математических функций?

Всё, теперь в Вашем распоряжении большое количество математических функций.

Пример комбинирования функций

Раз уж речь пошла о математических функциях, пусть пример будет на них и основан. Допустим, у нас есть такая сравнительно сложная функция:

Как возвести число в степень?

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

Случайные числа

Зачем нужны случайные числа? Как правило, чтобы проверить результаты какого-то эксперимента при различных условиях. На основе случайных чисел можно вычислять различные вероятности. Во всех языках программирования есть возможность использовать случайные числа.

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Button1.Left := Random(ClientWidth-Button1.Width);
Button1.Top := Random(ClientHeight-Button1.Height)
end ;

Запускаем программу и наблюдаем. Кнопка действительно прыгает с места на место. Но есть один крайне неприятный момент: запустите программу несколько раз и понаблюдайте за точками, в которые попадает кнопка. Вы сразу заметите, что каждый раз кнопка перемещается по одним и тем же точкам.

procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize
end ;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Button1.Left := Random(ClientWidth-Button1.Width);
Button1.Top := Random(ClientHeight-Button1.Height)
end ;

Теперь кнопка будет прыгать совершенно по разным точкам при каждом запуске программы.

Дополнительные возможности редактора кода

Как и было отмечено выше, второй параметр является необязательным и он заключен в квадратные скобки.

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

Если функции или процедуре входные параметры не нужны, подсказка всё равно появится и сообщит об этом:

Если после набора имени и скобки подсказка не появилась, то и при компиляции программы скорее всего возникнет ошибка. Причиной, по которой компилятор не смог найти указанную функцию или процедуру, может быть ошибка при наборе имени, либо модуль, в котором описана подпрограмма, не подключен.
Ошибки при компиляции появляются внизу окна редактора кода с указанием номера строки, где обнаружена ошибка и описанием самой ошибки.
Попробуем запросить процедуру Randomiz (например, мы случайно недописали букву » e » на конце):

Читайте также:  Как подключить несколько видеокарт через м2

Заключение

Источник

Как подключить математический модуль в делфи

В стандартной поставке Delphi и Lazarus есть встроенные математические функции унаследованные из языка Паскаль:

Функции модуля Math

В списке встроенных функций явно не хватает таких функций как: возведение числа в произвольную степень; извлечение произвольного корня из числа; обратные тригонометрические функции и так далее.
Для расширения математических возможностей программ есть подключаемый модуль Math. Перед началом работы следует подключить этот модуль в разделе Uses.
Модуль Math содержит следующие математические функции:

Функция Описание
ArcSin(X) арксинус аргумента X (-1 : 1) (Возвращает значение в радианах)
ArcCos(X) арккосинус аргумента X (-1 : 1) (Возвращает значение в радианах)
Tan(X) тангенс аргумента (угол X в радианах)
Cotan(X) котангенс угла (угол X в радианах)
Log10(X) вычисление десятичного логарифма
Log2(X) вычисление двоичного логарифма числа X
LogN(y,x) вычисление логарифма числа x по основанию y
Max(a,b) возвращает максимальное число из двух чисел
Min(a,b) возвращает минимальное число из двух чисел
Power (X, N) возведение числа X в произвольную степень N
Hypot(X,Y) вычисление гипотенузы по длине катетов
RadToDeg(X) Преобразование радиан в градусы
DegToRad(X) Преобразование градусов в радианы
Floor Округление в меньшую сторону
Ceil Округление в большую сторону

Имея такой богатый набор функций можно создать серьёзный инженерный калькулятор.

Интерфейс инженерного калькулятора

Разработаем калькулятор в среде разработки Lazarus (В среде Delphi интерфейс и коды программы будут аналогичными).
Сначала расставим элементы интерфейса, так как показано на рисунке:

В заголовке окна (Caption) следует написать «Инженерный калькулятор» и для окна настроить шрифт (Font), так что бы он хорошо отображался и на дочерних объектах. Например: Arial, 12 pt, Bold (жирный).
Заголовкам объектов следует присвоить надписи, как показано на рисунке:

В объектном паскале аргумент тригонометрических функций принято задавать в радианах. Для переключения между градусами и радианами поставим на форме группирующую панель (GroupBox1) и переключатели (RadioButton1, RadioButton2):

Для RadioButton1 в свойстве Checked следует установить значение True. Затем, у GroupBox1 удалить заголовок Caption, а у объектов RadioButton1и RadioButton2 сделать заголовки как показано на рисунке:

Для работы с калькулятором потребуется ещё одна кнопка «Сброс» (Button10), которая будет очищать поля ввода. Поставим её в любом удобном месте, например как показано на рисунке:

Реализация калькулятора

Сначала следует подключить в разделе uses модуль Math:

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Math;
Для идентификации нажатых кнопок арифметических знаков и функций нужна будет индексная переменная, назовём её, например Ind и поместим в разделе глобальных переменных:

Читайте также:  Как подключить безлимитный интернет билайн на смартфоне

var
Form1: TForm1;
Ind: Integer;

Начнём программирование с создания события (двойным щелчком) для кнопки «Сброс»:

//Кнопка сброс
procedure TForm1.Button10Click(Sender: TObject);
begin
Ind:= 0;
Label1.caption:= »;
Label2.caption:= »;
Edit1.Clear;
Edit1.SetFocus;
Edit2.Clear;
Edit2.Enabled:= false;
end;

Закроем программу и сделаем ещё дополнительные настройки для кнопок. Для этого выделим, например кнопку «Sq(xn)» и в свойствах в поле ShowHint поставим значение True. Затем, в поле Hint (подсказка) напишем: Корень n из числа x.
Запустим программу и убедимся что на этой кнопке появляется подсказка при наведении курсора мыши.

Аналогичным образом следует сделать подсказки на остальные кнопки. Мы видим, что подсказка появляется и буквально через секунду исчезает. Для удобного пользования подсказками увеличим выдержку подсказки, например до 5 секунд. Для этого, выделим окно форму и двойным щелчком создадим событие FormCreate:

//Создание формы
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.HintHidePause := 5000;
end;

В строке Application.HintHidePause := 5000 мы задаём время выдержки до закрытия подсказки 5 секунд (аргумент 5000 в миллисекундах).
Произведя все предварительные настройки, будем создавать код калькулятора. Выделим кнопку «+» (Button2) и двойным щелчком создадим событие:

// Кнопка +
rocedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:= ‘+’;
Ind:= 1; //Индекс этой кнопки равен 1
Edit2.Enabled:= true; //Разблокируем редактор для ввода 2-го аргумента
end;

Далее, создадим событие на вычисление результата математических операций. Сначала напишем код для вычисления арифметических операций, проверим работоспособность программы, а затем, допишем строки для вычисления различных функций. Двойным щелчком на Button1 создадим событие и впишем строки:

Проверим, как работает программа, пока только арифметических вычислений:

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

// Sin
procedure TForm1.Button6Click(Sender: TObject);
begin
Label1.Caption:= ‘Sin’;
Ind:= 5; //Индекс этой кнопки равен 5
Edit2.Enabled:= false; //Делаем недоступным ввод второго аргумента
end;

И допишем в процедуре вычисления, в разделе case (выделено жирным) строки вычисления синуса:

Такую же процедуру создадим для кнопки косинус (Cos, Button7):

//Cos
procedure TForm1.Button7Click(Sender: TObject);
begin
Label1.Caption:= ‘Cos’;
Ind:= 6; //Индекс этой кнопки равен 6
Edit2.Enabled:= false;
end;

В процедуру вычисления (=), в разделе case добавим строки:

6: begin
if RadioButton1.checked = true then x:= DegToRad(x);
z:= cos(x);
end;

И так, мы сделали вычисление функций с одним аргументом. Далее, разработаем алгоритм вычисления для функций с двумя аргументами. Выделим кнопку возведения в степень (Power, Button8) и двойным щелчком создадим событие:

// Power
procedure TForm1.Button8Click(Sender: TObject);
begin
Label1.Caption:= ‘Power’;
Ind:= 7; //Индекс этой кнопки равен 7
Edit2.Enabled:= true; //Включаем второй редактор
end;

Дописываем в процедуре (=) в разделе Case следующую строку:

Читайте также:  Как подключить планшет самсунг к вай фай роутеру

Запускаем калькулятор, и убеждаемся, что возведение в степень работает исправно:

Аналогичным образом напишем процедуру для кнопки извлечения корня (Sq, Button9):

// Sq(x,n)
procedure TForm1.Button9Click(Sender: TObject);
begin
Label1.Caption:= ‘Sq’;
Ind:= 8; //Индекс этой кнопки равен 8
Edit2.Enabled:= true; //Включаем второй редактор
end;

И дописываем в раздел Case процедуры (=) следующую строку:

8: z:= power(x,1/y);
Запускаем калькулятор, и убеждаемся, что извлечение корня работает исправно:

Источник

Описание функций модуля Math

Тригонометрические функции и процедуры

Арифметические функции и процедуры

Финансовые функции и процедуры

Функция вычисляет амортизационные отчисления на определенном этапе. В качестве параметров используются: начальная стоимость Cost, срок службы Life, конечная стоимость Salvage и амортизационный период Period. Вычисления производятся по следующим формулам:

При достижении конечной стоимости, амортизация перестает начисляться, и для последующих периодов функция будет возвращать значение, указанное в параметре Salvage.

Функция вычисляет значение вклада по прошествии определенного периода времени.

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

Функция вычисляет процентную ставку кредита на определенном этапе в денежном исчислении.

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

Функция вычисляет процентную ставку инвестиций, необходимую для возврата суммы инвестиций PresentValue с дивидендами.

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

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

Функция определяет количество этапов, необходимых для погашения кредита до значения определенного в параметре FutureValue.

Первоначальная сумма кредита составляет 364руб. Процентная ставка 20%. Регулярные ежемесячные выплаты по 100руб производятся в конце месяца. Рассчитаем сколько месяцев необходимо для полной выплаты кредита.

Функция вычисляет общую сумму погашения кредита, выплачиваемую на каждом этапе (состоит из текущих выплат и процентов).

Функция вычисляет сумму выплат основной части кредита (без учета процентов) на определенном этапе.

Сумму выплачиваемых процентов кредита можно вычислить с помощью функции InterestPayment.

Функция определяет значение вклада в указанный период времени.

Функция вычисляет сумму амортизационных отчислений за единицу периода времени по методу линейной (равномерной) амортизации.

Для вычисления амортизации по ускоренному методу используйте функцию SYDDepreciation.

Функция вычисляет сумму амортизационных отчислений на заданном этапе по методу ускоренной амортизации.

Для вычислений по методу равномерной амортизации используйте функцию SLNDepreciation.

Источник