ЮНИТ 18. МАТЕМАТИКА В ЯЗЫКЕ 1С
В одном из первых юнитов мы уже разбирали использование арифметических операций в 1С 8.3. Конечно, это не все математические операции, которые доступны разработчику, и в этом юните мы восполним этот пробел.
Ваша задача воспроизводить все примеры у себя на компьютере в модуле управляемого приложения.
Представим, что у нас есть число с дробной частью:
Цена = 100.45;
И мы хотим округлить его дробную часть до первого знака после запятой:
Округленная Цена = ОкрЩена, 1);
// вернет 100.5
Мы воспользовались командой Окр, которая принимает число и количество знаков дробной части, после которых нужно округлить значение.
В качестве результата округления мы получим 100.5. Но почему не 100.4?
По умолчанию, команда Окр делает округление в большую сторону, поэтому мы получим 100.5. Но если потребуется округление в меньшую сторону, нужно просто передать третьим параметром ноль:
Округленная Цена = Окр(Цена, 1, 0);
// вернет 100.4
А теперь давайте отбросим дробную часть числа, чтобы осталась только целая часть:
ЦелаяЧасть = Цел(Цена);
// вернет 100
Мы воспользовались командой Цел, которая принимает число с дробной частью и возвращает только его целую часть.
Иногда при расчетах требуется возвести число в степень: ДесятьВКубе = Рош(10, 3);
// вернет 1000
Команда Роч> принимает число и степень, в которую его нужно возвести. А порою нам требуется, наоборот, к примеру, извлечь квадратный корень из числа:
КвадратныйКореньИз25 = 5яг1(25);
// вернет 5
Еще задача. Пусть у нас имеется конечный набор чисел и нужно найти максимальное значение:
МаксимальноеЗначениеИзТрехЧисел = Макс(10, 20, 30);
// вернет 30
МаксимальноеЗначениеИзДвухЧисел = Макс(0, -5);
// вернет 0
Количество параметров, которые можно передавать в функцию Макс для поиска максимального элемента неограниченно.
Функция Мин решает обратную задачу: МинимальноеЗначениеИзТрехЧисел = Мин(10, 20, 30);
// вернет 10
МинимальноеЗначениеИзДвухЧисел = Мин(0, -5);
// вернет -5
Еще очень популярной задачей является генерация случайных чисел. В 1С это делается таким образом:
ГСЧ = Новый ГенераторСлучайныхЧисел(); Сообщить(ГСЧ,СлучайноеЧисло(0, 2));
Первой строкой мы создаем объект ГенераторСлучаиныхЧисел и связываем с ним нашу переменную ГСЧ.
Во второй строке мы вызываем команду этого генератора Случай-ное Число, которая в качестве параметров принимает левую и правую границы (включительно) диапазона, в котором требуется генерировать случайные числа.
В приведенном примере вы каждый раз будете запускать программу, и она каждый раз будет вам выдавать новое число от нуля (включительно) до двух (включительно). Это и есть генерация случайных чисел.
С более полным перечнем математических функций в 1С вы можете ознакомиться во втором разделе пособия.
Для отработки и закрепления материала данного юнита рекомендуется выполнить нижеследующее задание.
Напишите программу, которая генерирует три случайных числа в диапазоне от 1 до 1000. Генератор случайных чисел инициализируете числом 2014 (об этом ниже). Затем каждое число возводится в 5 степень. Затем из каждого числа извлекается квадратный корень. Затем каждое число делится на 3. Затем каждое число округляется до второго знака в меньшую сторону. Затем каждое число умножается на 0.25. Затем от каждого числа отбрасывается дробная часть. И, наконец, находится сумма всех получившихся чисел, которая и выводится пользователю. Получившееся значение будет равно 849442.
Подсказка:
Чтобы инициализировать генератор определенным числом (например, 2014) напишем:
ГСЧ = Новый ГенераторСлучайныхЧисел(2014);
Инициализация определенным числом позволит вам получить на своем компьютере ту же самую последовательность случайных чисел, что получил я. Это нужно, чтобы вы в конце выполнения программы получили тот же самый ответ, что и я - 849442.
Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся
ГСЧ = Новый ГенераторСлучайныхЧисел(2014);
// объявили генератор случайных чисел
А= ГСЧ.СлучайноеЧисло(1, 1000);
// сгенерировали первое случайное число от 1 до 1000
Б = ГСЧ.СлучайноеЧисло(1, 1000);
В = ГСЧ.СлучайноеЧисло(1, 1000);
А = Роу(А, 5); // возвели число в 5 степень
Б = Рош(Б, 5);
В = Роу(В, 5);
А = БягЦА); // вычислили квадратный корень из числа
Б = БцгЦБ);
В = БцгЦВ);
А = А/ 3;
// разделили на три
Б= Б/3;
В= В/3;
А = Окр(А, 2, 0); // округлили до второго знака Б = Окр(Б, 2, 0);
В = Окр(В, 2, 0);
А = А* 0.25; //умножили на 0.25
Б = Б * 0.25;
В = В *0.25;
А = Цел (А); // отбросили дробную часть
Б = Цел(Б);
В = Цел(В);
Сообщить(А + Б + В); // сложили все три числа и вывели
// пользователю