Как создать программу для вычисления

Сэкономьте время пользователей — дайте посетителям сайта калькулятор, и пусть посчитают сами!

МОЖНО СДЕЛАТЬ
ИСПОЛЬЗУЕТСЯ В:

Ucalc.pro — простой сервис, в котором вы сможете создать интерактивный калькулятор для сайта, даже если не умеете программировать. Достаточно вспомнить школьный курс арифметики, добавить немного логики и представить, чего хочет пользователь — калькулятор готов!

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

Сервис работает по платной подписке, но у него есть бесплатный тестовый период — в течение двух недель вы можете создать три проекта.

Что будем считать?

Заходим на главную страницу Ucalc.pro. В правом верхнем углу находятся кнопки регистрации и выбора языка. Можно создать аккаунт с нуля или войти через соцсети.

Уроки C# / Как сделать первое Windows приложение

После того, как вы вошли в аккаунт, попадаете на страницу «Мои проекты». Там отображаются ранее созданные вами калькуляторы, если вы уже пользовались сервисом. Нажимаем круглую кнопку зеленого цвета со знаком «+». Система предложит собрать проект с нуля, либо использовать уже готовый шаблон.

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

Как создать программу для вычисления

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

Функция Pascal Математическая функция
sqr(x) Квадрат числа х
sqrt(x) Квадратный корень из числа х
abs(x) Модуль числа х
trunc(x) Целая часть числа х
frac(x) Дробная часть числа х
x div y Целочисленное деление x на y. Дробная часть числа отбрасывается. Например: 25 div 10 = 2
x mod y Получение дробной части при делении х на y. Например: 25 mod 10 = 5
exp(x) Число е (2,718282) в степени х
ln(x) Логарифм натуральный числа х
round(x) Округление числа х до ближайшего целого
inc(x,y) Инкремент — увеличение х на величину у. Если у не указано, то х увеличивается на 1
dec(x,y) Декремент — уменьшение х на величину у. Если у не указано, то х уменьшается на 1
randomize Включение генератора случайных чисел
random(a) Получение случайного числа в диапазоне от 0 до а (а — целое число)
sin(x) Синус аргумента х (аргумент в радианах)
cos(x) Косинус аргумента х (аргумент в радианах)
arcTan(X) Арктангенс аргумента х (аргумент в радианах)

Функции модуля 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 (жирный).
Заголовкам объектов следует присвоить надписи, как показано на рисунке:

Рассмотрим функциональное назначение элементов интерфейса:
Label1 (?) — будет отображать знак операции или название функции;
Label2 (z) — будет отображать результат вычислений;
Edit1, Edit2 — предназначены для ввода аргументов вычислений;
Button1 (=) — вычисление;
Button2 (+) — ввод знака сложения;
Button3 (-) — ввод знака вычитания;
Button4 (/) — ввод знака деления;
Button5 (*) — ввод знака умножения;
Button6 (Sin) — ввод функции Sin;
Button7 (Cos) — ввод функции Cos;
Button8 (Power) — ввод функции возведения числа x в степень n;
Button7 (Sq) — ввод функции извлечения корня n из числа x;

В объектном паскале аргумент тригонометрических функций принято задавать в радианах. Для переключения между градусами и радианами поставим на форме группирующую панель (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;

В этой процедуре мы написали Edit2.Enabled:= false; — заблокировали редактор Edit2. Это нужно для того, чтобы пользователь не мог ввести туда данные, если вычисляет функции с одним аргументом. При арифметических вычислениях и функциях с двумя аргументами мы будем разблокировать этот редактор.
Запустим программу на исполнение (F9), нажмём кнопку «Сброс» и убедимся, что все поля очищаются.

Закроем программу и сделаем ещё дополнительные настройки для кнопок. Для этого выделим, например кнопку «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) и двойным щелчком создадим событие:

Читайте также:
Как работать в программе adobe photoshop cs5

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

Аналогичным способом создадим события для кнопок — / * присваивая переменной Ind соответствующие значения — 2, 3, 4.

//Кнопка —
procedure TForm1.Button3Click(Sender: TObject);
begin
Label1.Caption:= ‘-‘;
Ind:= 2; //Индекс этой кнопки равен 2
Edit2.Enabled:= true;
end;
//Кнопка /
procedure TForm1.Button4Click(Sender: TObject);
begin
Label1.Caption:= ‘/’;
Ind:= 3; //Индекс этой кнопки равен 3
Edit2.Enabled:= true;
end;
//Кнопка *
procedure TForm1.Button5Click(Sender: TObject);
begin
Label1.Caption:= ‘*’;
Ind:= 4; //Индекс этой кнопки равен 4
Edit2.Enabled:= true;
end;

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

procedure TForm1.Button1Click(Sender: TObject);
//Объявляем локальные переменные
var
x,y,z: real;
begin
//Проверяем ввод первого аргумента и преобразуем текст в число
if Edit1.Text <> » then x:= StrToFloat(Edit1.Text) else exit;
// Проверяем ввод второго аргумента и преобразуем текст в число
if Edit2.enabled = true then
begin
if Edit2.Text <> » then y:= StrToFloat(Edit2.Text) else exit;
end;
//Выбираем по индексу знак операции и производим вычисления
case Ind of
1: z:= x + y;
2: z:= x — y;
3: z:= x / y;
4: z:= x * y;
end;
//Выводим результат на Label2
Label2.Caption:= FloatToStr(z);
end;

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

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

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

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

procedure TForm1.Button1Click(Sender: TObject);
var
x,y,z: real;
begin
if Edit1.Text <> » then x:= StrToFloat(Edit1.Text) else exit;
if Edit2.enabled = true then
begin
if Edit2.Text <> » then y:= StrToFloat(Edit2.Text) else exit;
end;
z:= 0;
case Ind of
1: z:= x + y;
2: z:= x — y;
3: z:= x / y;
4: z:= x * y;
5: begin
//Проверяем вводимый аргумент градусы или радианы
if RadioButton1.checked = true then x:= DegToRad(x);
z:= sin(x);
end;
end;
Label2.Caption:= FloatToStr(z);
end;
Запустим программу и убедимся, что синус вычисляется корректно:

Такую же процедуру создадим для кнопки косинус (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);
Запускаем калькулятор, и убеждаемся, что извлечение корня работает исправно:

Источник: hi-intel.ru

Как создать программу для вычисления

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Полный синтаксис (нажмите, чтобы раскрыть)

Число

Описание:

Числовым типом может быть представлено любое десятичное число. Над данными числового типа определены основные арифметические операции: сложение, вычитание, умножение и деление. Максимально допустимая разрядность числа 38 знаков.

Литералы:

Набор цифр, написанных непосредственно в тексте модуля вида: [+|-]<0|1|2|3|4|5|6|7|8|9>[.<0|1|2|3|4|5|6|7|8|9>] В качестве разделителя целой и дробной части используется «.» (точка).

Оглавление (нажмите, чтобы раскрыть)

  • Как округлить число
  • Как получить целую часть числа
  • Как возвести число в степень
  • Как вычислить остаток от деления
  • Как извлечь квадратный корень из числа
  • Как вычислить максимальное из нескольких значений
  • Как вычислить минимальное из нескольких значений
  • Как вычислить выражение из строки
  • Тригонометрия
  • Как вывести число без пробелов
  • Скачать и выполнить эти примеры на компьютере

5Сообщить(Окр(321.123, 1)); // 321.1 // до первого знака после запятой // случай когда (N + 1) знак >= 5 Сообщить(Окр(321.163, 1)); // 321.2 // особый случай: // если при округлении до N-го знака // (N + 1)-й знак равен 5, а все последующие // знаки равны нулю, то результат округления // будет зависеть от третьего параметра функции Окр Сообщить(Окр(100.350, 1, РежимОкругления.Окр15как10)); // вернёт 100.3 Сообщить(Окр(100.350, 1, РежимОкругления.Окр15как20)); // вернёт 100.4 // по умолчанию значение третьего параметра // равно РежимОкругления.Окр15как20 (округление в большую сторону) /// Как получить целую часть числа в 1с 8.3, 8.2 Сообщить(Цел(12.654)); // 12 /// Как возвести число в степень в 1с 8.3, 8.2 Сообщить(Pow(10, 3)); // 10^3 = 1000 /// Как вычислить остаток от деления в 1с 8.3, 8.2 Сообщить(5 % 3); // 2 /// Как извлечь квадратный корень из числа в 1с 8.3, 8.2 Сообщить(Sqrt(25)); // 5 /// Как вычислить максимальное из нескольких значений в 1с 8.3, 8.2 Сообщить(Макс(1, 2, 3)); // 3 Сообщить(Макс(«aaa», «bbb», «ccc»)); // ccc Сообщить(Макс(ТекущаяДата(), ДобавитьМесяц(ТекущаяДата(), 1))); Сообщить(Макс(Истина, Ложь)); // Истина /// Как вычислить минимальное из нескольких значений в 1с 8.3, 8.2 Сообщить(Мин(1, 2, 3)); // 1 Сообщить(Мин(«aaa», «bbb», «ccc»)); // aaa Сообщить(Мин(ТекущаяДата(), ДобавитьМесяц(ТекущаяДата(), 1))); Сообщить(Мин(Истина, Ложь)); // Ложь /// Как вычислить выражение из строки в 1с 8.3, 8.2 Сообщить(Вычислить(«1+2»)); // 3 Сообщить(Вычислить(«ИСТИНА И ЛОЖЬ»)); // Нет Сообщить(Вычислить(«Sin(3.14)»)); // ~0 Сообщить(Вычислить(«Pow(Sin(3.14), 2) + Pow(Cos(3.14), 2)»)); // ~1 /// Тригонометрия в 1с 8.3, 8.2 // углы выражаются в радианах Пи = 3.14; E = 2.718; // Число Эйлера http://ru.wikipedia.org/wiki/E_(число) Сообщить(Cos(Пи / 2)); // ~0 Сообщить(ACos(0)); // ~1,57 Сообщить(Sin(Пи / 2)); // ~1 Сообщить(ASin(1)); // ~1,57 Сообщить(Sin(Пи / 2) * Sin(Пи / 2) + Cos(Пи / 2) * Cos(Пи / 2)); // ~1 Сообщить(Sin(Пи / 3) / Cos(Пи / 3)); // 1.73 Сообщить(Tan(Пи / 3)); // 1.73 Сообщить(Tan(ATan(1.73))); // 1.73 // экспонента — возведение числа эйлера в степень X // http://ru.wikipedia.org/wiki/Экспонента Сообщить(Pow(E, 2)); // 7,389 Сообщить(Exp(2)); // 7,389 // натуральный логарифм — степень в которую надо // возвести число эйлера e, чтобы получить X // http://ru.wikipedia.org/wiki/Натуральный_логарифм Сообщить(Log(9)); // 2,197 Сообщить(Pow(E, 2.197)); // ~9 // десятичный логарифм — степень в которую надо // возвести число 10, чтобы получить X // http://ru.wikipedia.org/wiki/Десятичный_логарифм Сообщить(Log10(1000)); // 3 Сообщить(Pow(10, 3)); // 1000 /// Как вывести число без пробелов в 1с 8.3, 8.2 Сообщить(Формат(1000000, «ЧГ=0»)); // 1000000 КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере

Математика в языке 1С 8.3, 8.2 (в примерах)

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

Источник: helpme1s.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru