Описание работы и синтаксиса скриптов: различия между версиями
Sidminik (обсуждение | вклад) Новая страница: «==Типы данных== Математический язык программирования поддерживает следующие типы данных: *числовой тип Целое число, либо число с десятичной частью, записываемой через точку *строковый тип Записывается либо в одиночных либо в двойных кавычках *логиче...» |
Sidminik (обсуждение | вклад) Нет описания правки |
||
| Строка 3: | Строка 3: | ||
Математический язык программирования поддерживает следующие типы данных: | Математический язык программирования поддерживает следующие типы данных: | ||
Числовой тип | |||
Целое число, либо число с десятичной частью, записываемой через точку | Целое число, либо число с десятичной частью, записываемой через точку: | ||
X = 10 | |||
Строковый тип | |||
Записывается либо в одиночных либо в двойных кавычках | Записывается либо в одиночных либо в двойных кавычках: | ||
str1 = 'Строковое значение 1' | |||
str2 = 'Строковое значение 2' | |||
Логический тип | |||
Может принимать значения true либо false (логические истина или ложь) | Может принимать значения 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) | |||
// Результат 15 | |||
CreateArray | |||
Создаёт пустой массив. | |||
Массив - набор последовательно заданных значений | |||
У массива существуют методы Add и Get | |||
Код ниже делает следующее: | |||
Создаёт пустой массив | |||
Добавляет в массив последовательно значения 10, 20, 30 | |||
Получает элемент массива с индексом 1 при помощи метода Get | |||
Возвращает значение элемента массива | |||
! Нумерация элементов массива начинается с индекса 0 | |||
arr = CreateArray() | |||
arr.Add(10) | |||
arr.Add(20) | |||
arr.Add(30) | |||
SetResult(arr.get(1)) | |||
// Результат 20 | |||
Sqrt | |||
Принимает один параметр: число Вычисляет квадратный корень числа | |||
SetResult(Sqrt(144)) | |||
// Результат 12 | |||
Sin | |||
Принимает один параметр: число (угол в градусах) | |||
Вычисляет синус угла | |||
SetResult(Sin(90)) | |||
// Результат 1 | |||
Cos | |||
Принимает один параметр: число (угол в градусах) | |||
Вычисляет косинус угла | |||
SetResult(Cos(0)) | |||
// Результат 1 | |||
Abs | |||
Принимает один параметр: число | |||
Вычисляет модуль числа | |||
SetResult(Abs(-100)) | |||
// Результат 100 | |||
Round | |||
Принимает параметры: число, тип округления, количество знаков после запятой | |||
Округляет число | |||
SetResult(Round(2.55894, 'decimal_places', 3)) | |||
// Результат 2.559 | |||
Второй параметр (тип округления) может принимать 2 значения: | |||
'decimal_places' (знаки после запятой) | |||
'significant' (значащие цифры) | |||
==Синтаксические конструкции используются для разработки алгоритмов математических вычислений с различными условиями.== | |||
- Условия и ветвления, оператор if | |||
Простое условие | |||
a = 10 | |||
b = 5 | |||
if(a > b) { | |||
SetResult(b) | |||
} | |||
// Результат 5 | |||
Условие обозначается ключевым словом if (если) | |||
В круглых скобках записывается выражение, результатом которого должно быть логическое значение | |||
в фигурных скобках записывается код, который выполнится, если условие в круглых скобках равно true | |||
Ветвления | |||
Ветвления условий начинаются после блока 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 | |||
x = 2 | |||
for i = 1; i < 10; i = i + 1 { | |||
x = x^i | |||
} | |||
SetResult(x) | |||
// Результат 2147483647 | |||
Цикл всегда начинается с ключевого слова for | |||
i = 1 - объявление переменной (число) с которого начинается первая итерация цикла | |||
i < 10 - указвает ограничнеие количества итераций цикла, т.е. цикл будет выполняться, пока переменная 'i' меньше 10 | |||
i = i + 1 - означает, что на каждой итерации переменная i будет увеличиваться на 1 | |||
итерация - это выполнение кода внутри фигурных скобок цикла | |||
==Примеры расчетных формул калькулятора== | |||
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.11 | |||
2. Биотестирование | |||
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. умеренная степень токсичности | |||
Версия от 02:28, 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)
// Результат 15 CreateArray Создаёт пустой массив. Массив - набор последовательно заданных значений У массива существуют методы Add и Get
Код ниже делает следующее:
Создаёт пустой массив Добавляет в массив последовательно значения 10, 20, 30 Получает элемент массива с индексом 1 при помощи метода Get Возвращает значение элемента массива ! Нумерация элементов массива начинается с индекса 0 arr = CreateArray()
arr.Add(10) arr.Add(20) arr.Add(30)
SetResult(arr.get(1))
// Результат 20 Sqrt Принимает один параметр: число Вычисляет квадратный корень числа
SetResult(Sqrt(144))
// Результат 12 Sin Принимает один параметр: число (угол в градусах) Вычисляет синус угла
SetResult(Sin(90))
// Результат 1 Cos Принимает один параметр: число (угол в градусах) Вычисляет косинус угла
SetResult(Cos(0))
// Результат 1 Abs Принимает один параметр: число Вычисляет модуль числа
SetResult(Abs(-100))
// Результат 100 Round Принимает параметры: число, тип округления, количество знаков после запятой Округляет число
SetResult(Round(2.55894, 'decimal_places', 3))
// Результат 2.559 Второй параметр (тип округления) может принимать 2 значения:
'decimal_places' (знаки после запятой) 'significant' (значащие цифры)
Синтаксические конструкции используются для разработки алгоритмов математических вычислений с различными условиями.
- Условия и ветвления, оператор if Простое условие a = 10 b = 5
if(a > b) {
SetResult(b)
}
// Результат 5 Условие обозначается ключевым словом if (если) В круглых скобках записывается выражение, результатом которого должно быть логическое значение в фигурных скобках записывается код, который выполнится, если условие в круглых скобках равно true Ветвления Ветвления условий начинаются после блока 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 x = 2
for i = 1; i < 10; i = i + 1 {
x = x^i
}
SetResult(x)
// Результат 2147483647 Цикл всегда начинается с ключевого слова for i = 1 - объявление переменной (число) с которого начинается первая итерация цикла i < 10 - указвает ограничнеие количества итераций цикла, т.е. цикл будет выполняться, пока переменная 'i' меньше 10 i = i + 1 - означает, что на каждой итерации переменная i будет увеличиваться на 1 итерация - это выполнение кода внутри фигурных скобок цикла
Примеры расчетных формул калькулятора
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.11 2. Биотестирование 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. умеренная степень токсичности