Описание работы и синтаксиса скриптов: различия между версиями
Sidminik (обсуждение | вклад) |
Sidminik (обсуждение | вклад) |
||
| (не показано 12 промежуточных версий этого же участника) | |||
| Строка 127: | Строка 127: | ||
===CreateArray=== | ===CreateArray=== | ||
Создаёт пустой массив | Создаёт пустой массив (набор последовательно заданных значений). У массива существуют методы <code>Add</code> и <code>Get</code>. | ||
У массива существуют методы <code>Add</code> и <code>Get</code>. | |||
Код ниже делает следующее: | Код ниже делает следующее: | ||
* | *создаёт пустой массив; | ||
* | *добавляет в массив последовательно значения <code>10</code>, <code>20</code>, <code>30</code>; | ||
* | *получает элемент массива с индексом <code>1</code> при помощи метода <code>Get</code>; | ||
* | *возвращает значение элемента массива. | ||
<div style="background-color: #fff3cd; border-left: 5px solid #ffc107; padding: 15px; margin: 10px 0;"> | |||
! Нумерация элементов массива начинается с индекса 0 | '''Внимание!''' | ||
*Нумерация элементов массива начинается с индекса <code>0</code>. | |||
</div> | |||
<syntaxhighlight> | <syntaxhighlight> | ||
| Строка 155: | Строка 153: | ||
===Sqrt=== | ===Sqrt=== | ||
Принимает один параметр: число | Вычисляет квадратный корень числа. Принимает один параметр: <code>число</code>. | ||
<syntaxhighlight> | <syntaxhighlight> | ||
| Строка 164: | Строка 162: | ||
===Sin=== | ===Sin=== | ||
Принимает один параметр: число (угол в градусах) | |||
Вычисляет синус угла. Принимает один параметр: <code>число (угол в градусах)</code>. | |||
<syntaxhighlight> | <syntaxhighlight> | ||
| Строка 174: | Строка 172: | ||
===Cos=== | ===Cos=== | ||
Принимает один параметр: число (угол в градусах) | |||
Вычисляет косинус угла. Принимает один параметр: <code>число (угол в градусах)</code>. | |||
<syntaxhighlight> | <syntaxhighlight> | ||
| Строка 184: | Строка 182: | ||
===Abs=== | ===Abs=== | ||
Принимает один параметр: число | |||
Вычисляет модуль числа. Принимает один параметр: <code>число</code>. | |||
<syntaxhighlight> | <syntaxhighlight> | ||
| Строка 194: | Строка 192: | ||
===Round=== | ===Round=== | ||
Принимает параметры: число, тип округления, количество знаков после запятой | |||
Округляет число. Принимает параметры: <code>число</code>, <code>тип округления</code>, <code>количество знаков после запятой</code>. | |||
<syntaxhighlight> | <syntaxhighlight> | ||
| Строка 203: | Строка 201: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Второй параметр (тип округления) может принимать 2 значения: | Второй параметр (<code>тип округления</code>) может принимать 2 значения: | ||
*<code>decimal_places</code> - знаки после запятой, | |||
*<code>significant</code> - значащие цифры. | |||
==Синтаксические конструкции используются для разработки алгоритмов математических вычислений с различными условиями== | |||
===Условия и ветвления, оператор <code>if</code>=== | |||
'''Простое условие''' | |||
* | *условие обозначается ключевым словом <code>if</code> (если); | ||
*в круглых скобках записывается выражение, результатом которого должно быть логическое значение; | |||
*в фигурных скобках записывается код, который выполнится, если условие в круглых скобках равно <code>true</code>. | |||
<syntaxhighlight> | |||
a = 10 | a = 10 | ||
b = 5 | b = 5 | ||
| Строка 219: | Строка 224: | ||
// Результат 5 | // Результат 5 | ||
</syntaxhighlight> | |||
'''Ветвления''' | |||
Ветвления | *ветвления условий начинаются после блока <code>if</code> и реализуются с помощью ключевых слов <code>else if</code>, <code>else</code>; | ||
*блок <code>else if</code> задаёт новое условие, если условие предыдущего блока <code>if</code> или <code>else if</code> не выполнилось; | |||
*блок <code>else</code> пишется только в конце последовательности блоков <code>if</code> и <code>else if</code> и выполняется только если ни одно из условий последовательности не выполнилось. | |||
<syntaxhighlight> | |||
a = 10 | a = 10 | ||
b = 50 | b = 50 | ||
| Строка 240: | Строка 246: | ||
// Результат 100 | // Результат 100 | ||
</syntaxhighlight> | |||
Условия могут быть вложенными, например: | Условия могут быть вложенными, например: | ||
<syntaxhighlight> | |||
a = 10 | a = 10 | ||
b = 50 | b = 50 | ||
| Строка 262: | Строка 271: | ||
// Результат 30 | // Результат 30 | ||
</syntaxhighlight> | |||
===Циклы, оператор <code>for</code>=== | |||
*цикл начинается с ключевого слова <code>for</code>; | |||
*<code>итерация</code> - выполнение кода внутри фигурных скобок цикла; | |||
*<code>i = 1</code> - объявление переменной (число) с которого начинается первая итерация цикла; | |||
*<code>i < 10</code> - указывает ограничение количества итераций цикла, то есть цикл будет выполняться, пока переменная <code>i</code> меньше <code>10</code>; | |||
*<code>i = i + 1</code> - означает, что на каждой итерации переменная <code>i</code> будет увеличиваться на <code>1</code>. | |||
<syntaxhighlight> | |||
x = 2 | x = 2 | ||
| Строка 272: | Строка 291: | ||
// Результат 2147483647 | // Результат 2147483647 | ||
</syntaxhighlight> | |||
==Примеры расчетных формул калькулятора== | ==Примеры расчетных формул калькулятора== | ||
1. ГОСТ 21534 (Хлор.соли) Метод А | ===1. ГОСТ 21534 (Хлор.соли) Метод А=== | ||
Пример без цикла: | |||
'''Пример без цикла:''' | |||
<syntaxhighlight> | |||
Vраств = 1000 | Vраств = 1000 | ||
Vр = Vраств | Vр = Vраств | ||
| Строка 316: | Строка 334: | ||
SetResult(Round(X2, 'decimal_places', 2)) // 1111.11 | SetResult(Round(X2, 'decimal_places', 2)) // 1111.11 | ||
Пример с циклом: | </syntaxhighlight> | ||
'''Пример с циклом:''' | |||
<syntaxhighlight> | |||
Vраств = 1000 | Vраств = 1000 | ||
Vр = Vраств | Vр = Vраств | ||
| Строка 356: | Строка 378: | ||
SetResult(Round(X2, 'decimal_places', 2)) // 1111.11 | SetResult(Round(X2, 'decimal_places', 2)) // 1111.11 | ||
2. Биотестирование | </syntaxhighlight> | ||
===2. Биотестирование=== | |||
<syntaxhighlight> | |||
Iср_к = 100 | Iср_к = 100 | ||
Iср_к_Кр = 80 | Iср_к_Кр = 80 | ||
| Строка 429: | Строка 455: | ||
SetResult(СтепеньТоксичности_токс) // II. умеренная степень токсичности | SetResult(СтепеньТоксичности_токс) // II. умеренная степень токсичности | ||
</syntaxhighlight> | |||
Текущая версия от 03:04, 13 мая 2026
Типы данных
Математический язык программирования поддерживает следующие типы данных:
Числовой тип
Целое число, либо число с десятичной частью, записываемой через точку:
X = 10Строковый тип
Записывается либо в одиночных либо в двойных кавычках:
str1 = 'Строковое значение 1'
str2 = 'Строковое значение 2'Логический тип
Может принимать значения true либо false (логические истина или ложь):
booleanVar = trueОператоры
Оператор присваивания =
Присваивает переменной значение
a = 100
b = Sin(Sqrt(10^3))
c = a^bОператоры сравнения
<- меньше,>- больше,<=- меньше или равно,>=- больше или равно,==- равно.
Использование данных операторов подчиняется правилам математики, например:
a = 5 < 10 // true
b = 10 >= 15 // false
c = 10 == 10.1 // falseЛогические операторы
or- или,and- и.
Предназначены для организации логических вычислений, например:
a = 5 < 10 // true
b = 10 >= 15 // false
c = 10 == 10.1 // false
d = a or b and c // trueАрифметические операторы
+-*/%- остаток от деления (на текущий момент не поддерживается).
Переменные формул калькулятора
Переменные предназначены для хранения и вывода результатов промежуточных вычислений.
Переменные могут хранить следующие типы данных: число, строка или массив.
Значение переменных задаются при помощи оператора присваивания =, например:
a = 100
b = Sin(Sqrt(10^3))
c = a^b
SetResult(c)Правила названия переменных
Имя переменной может включать в себя:
- латиницу в любом регистре
- кириллицу в любом регистре
- цифры и нижнее подчёркивание (кроме первого символа)
Обращение к переменной возможно только после её объявления, иначе вычисление останавливается:
SetResult(a)
a = 10
// Ошибка расчёта. Переменная "a" не существует в контекстеВстроенные функции в формулах
Внимание!
- Все функции необходимо вызывать с передачей им параметров в круглых скобках.
- При наличии нескольких параметров, передача их значений в функцию осуществляется в строго заданном порядке.
SetResult
Рассчитывает результат.
Например, объявили переменную X и присвоили ей значение 10.
X = 10
SetResult(X)
// Результат 15CreateArray
Создаёт пустой массив (набор последовательно заданных значений). У массива существуют методы Add и Get.
Код ниже делает следующее:
- создаёт пустой массив;
- добавляет в массив последовательно значения
10,20,30; - получает элемент массива с индексом
1при помощи методаGet; - возвращает значение элемента массива.
Внимание!
- Нумерация элементов массива начинается с индекса
0.
arr = CreateArray()
arr.Add(10)
arr.Add(20)
arr.Add(30)
SetResult(arr.get(1))
// Результат 20Sqrt
Вычисляет квадратный корень числа. Принимает один параметр: число.
SetResult(Sqrt(144))
// Результат 12Sin
Вычисляет синус угла. Принимает один параметр: число (угол в градусах).
SetResult(Sin(90))
// Результат 1Cos
Вычисляет косинус угла. Принимает один параметр: число (угол в градусах).
SetResult(Cos(0))
// Результат 1Abs
Вычисляет модуль числа. Принимает один параметр: число.
SetResult(Abs(-100))
// Результат 100Round
Округляет число. Принимает параметры: число, тип округления, количество знаков после запятой.
SetResult(Round(2.55894, 'decimal_places', 3))
// Результат 2.559Второй параметр (тип округления) может принимать 2 значения:
decimal_places- знаки после запятой,significant- значащие цифры.
Синтаксические конструкции используются для разработки алгоритмов математических вычислений с различными условиями
Условия и ветвления, оператор if
Простое условие
- условие обозначается ключевым словом
if(если); - в круглых скобках записывается выражение, результатом которого должно быть логическое значение;
- в фигурных скобках записывается код, который выполнится, если условие в круглых скобках равно
true.
a = 10
b = 5
if(a > b) {
SetResult(b)
}
// Результат 5Ветвления
- ветвления условий начинаются после блока
ifи реализуются с помощью ключевых словelse if,else; - блок
else ifзадаёт новое условие, если условие предыдущего блокаifилиelse ifне выполнилось; - блок
elseпишется только в конце последовательности блоковifиelse ifи выполняется только если ни одно из условий последовательности не выполнилось.
a = 10
b = 50
c = 30
d = 100
if(a> b) {
SetResult(b)
} else if(a > c) {
SetResult(a)
} else {
SetResult(d)
}
// Результат 100Условия могут быть вложенными, например:
a = 10
b = 50
c = 30
d = 100
if(a > b) {
if(a < c) {
SetResult(a)
} else {
SetResult(b)
}
} else if (a < c) {
if(d > c) {
SetResult(c)
}
} else {
SetResult(d)
}
// Результат 30Циклы, оператор for
- цикл начинается с ключевого слова
for; итерация- выполнение кода внутри фигурных скобок цикла;i = 1- объявление переменной (число) с которого начинается первая итерация цикла;i < 10- указывает ограничение количества итераций цикла, то есть цикл будет выполняться, пока переменнаяiменьше10;i = i + 1- означает, что на каждой итерации переменнаяiбудет увеличиваться на1.
x = 2
for i = 1; i < 10; i = i + 1 {
x = x^i
}
SetResult(x)
// Результат 2147483647Примеры расчетных формул калькулятора
1. ГОСТ 21534 (Хлор.соли) Метод А
Пример без цикла:
Vраств = 1000
Vр = Vраств
V2 = 500
V1_1 = 1000
V1_2 = 700
V1_3 = 850
V1_4 = 550
V1_5 = 650
A = 5
B = 10
C = 15
p = 750
if (V1_1 > 0) {X1_1 = V1_1 - V2} else {X1_1 = 0}
X2_1 = X1_1*100/((B*C)*(p/1000))
if (V1_2 > 0) {X1_2 = V1_2 - V2} else {X1_2 = 0}
X2_2 = X1_2*100/((B*C)*(p/1000))
if (V1_3 > 0) {X1_3 = V1_3 - V2} else {X1_3 = 0}
X2_3 = X1_3*100/((B*C)*(p/1000))
if (V1_4 > 0) {X1_4 = V1_4 - V2} else {X1_4 = 0}
X2_4 = X1_4*100/((B*C)*(p/1000))
if (V1_5 > 0) {X1_5 = V1_5 - V2} else {X1_5 = 0}
X2_5 = X1_5*100/((B*C)*(p/1000))
X2 = (X2_1 + X2_2 + X2_3 + X2_4 + X2_5)
X1 = (X1_1 + X1_2 + X1_3 + X1_4 + X1_5)
SetResult(Round(X2, 'decimal_places', 2)) // 1111.11Пример с циклом:
Vраств = 1000
Vр = Vраств
V2 = 500
V1_1 = 1000
V1_2 = 700
V1_3 = 850
V1_4 = 550
V1_5 = 650
V1Values = CreateArray()
V1Values.Add(V1_1)
V1Values.Add(V1_2)
V1Values.Add(V1_3)
V1Values.Add(V1_4)
V1Values.Add(V1_5)
A = 5
B = 10
C = 15
p = 750
X1 = 0
X2 = 0
for i =0; i < 5; i = i + 1 {
V1_i = V1Values.Get(i)
X1_i = 0
if (V1_i > 0) {
X1_i = V1_i - V2
} else {X1_i = 0}
X2_i = X1_i*100/((B*C)*(p/1000))
X1 = X1 + X1_i
X2 = X2 + X2_i
}
SetResult(Round(X2, 'decimal_places', 2)) // 1111.112. Биотестирование
Iср_к = 100
Iср_к_Кр = 80
I1ср_а_токс = 60
I2ср_а_токс = 35
I3ср_а_токс = 75
T1_токс = Abs(Iср_к - I1ср_а_токс)/Iср_к_Кр
T2_токс = Abs(Iср_к - I2ср_а_токс)/Iср_к_Кр
T3_токс = Abs(Iср_к - I3ср_а_токс)/Iср_к_Кр
Тср_токс=(T1_токс+T2_токс+T3_токс)/3
// Тмах_токс
if (T1_токс>T2_токс and T1_токс>T3_токс) {
Тмах_токс = T1_токс
} else if (T2_токс>T1_токс and T2_токс>T3_токс){
Тмах_токс = T2_токс
} else if (T3_токс>T2_токс and T3_токс>T1_токс) {
Тмах_токс = T3_токс
} else {
Тмах_токс = 0
}
// T_мин_токс
if (T1_токс<T2_токс and T1_токс<T3_токс) {
T_мин_токс = T1_токс
} else if (T2_токс<T1_токс and T2_токс<T3_токс){
Tмин_токс = T2_токс
} else if (T3_токс<T2_токс and T3_токс<T1_токс) {
Тмин_токс = T3_токс
} else {
Tмин_токс = 0
}
SetResult(Тср_токс)
SetResult(Тмах_токс)
SetResult(Тмин_токс)
// Трасч_токс
if (Abs(Тср_токс-Тмах_токс) > Abs(Тср_токс-Тмин_токс) ) {
Трасч_токс = Тмах_токс
} else if (Abs(Тср_токс-Тмах_токс) < Abs(Тср_токс-Тмин_токс)) {
Трасч_токс = Тмин_токс
} else {
Трасч_токс = 0
}
Тр_токс=Abs(Тср_токс-Трасч_токс)
r = Тср_токс * 0.20
if (Тр_токс<=r) {
Приемл_токс = 'приемлемо'
} else { Приемл_токс = 'неприемлемо' }
Тср_кон=Тср_токс
if (Тср_токс > 0 and Тср_токс <= 0.40) {
Ст_токс1_токс = 'I. допустимая степень токсичности'
} else {Ст_токс1_токс = ' '}
if (Тср_токс > 0.40 and Тср_токс <= 0.70) {
Ст_токс2_токс = 'II. умеренная степень токсичности'
} else {Ст_токс2_токс = ' '}
if (Тср_токс > 0.70) {
Ст_токс3_токс = 'III. высокая степень токсичности'
} else {Ст_токс3_токс = ' '}
СтепеньТоксичности_токс = Ст_токс1_токс + Ст_токс2_токс + Ст_токс3_токс
SetResult(СтепеньТоксичности_токс) // II. умеренная степень токсичности