Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы1.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
476.99 Кб
Скачать

48. Ветвления "если"

В ветвлениях "если - то", "если - то - иначе" и "если - то - иначе - если" для записи условий используется логическое выражение (ЛВ), результатом которого может быть истина (И) или ложь (Л). Графически ветвления проиллюстрирует рис. 2.5.

Рис. 2.5. Ветвления: а - ветвление "если - то";

б - ветвление "если - то - иначе"

Ветвление "если - то" работает так:

  • вычисляется значение ЛВ;

  • если оно истинно, то выполняется БОК1;

  • если оно ложно, то управление передается БОК2.

Запись ветвление "если - то" в 1С:

если ЛВ тогда

БОК // Некоторые операторы

конецЕсли;

Например:

Если (РабочаяДата() > '01.01.95') и (Сег = "Понедельник") Тогда

Сообщить("Сегодня" + " " + Сег + " " + РабочаяДата());

КонецЕсли;

Ветвление "если - то - иначе" работает так:

  • вычисляется значение ЛВ;

  • если оно истинно, то выполняется БОК1

  • если оно ложно, то выполняется БОК2;

  • далее управление передается БОК3.

Запись ветвления "если - то - иначе" в 1С:

если ЛВ тогда

БОК1 // Некоторые операторы

иначе

БОК2 // Некоторые операторы

конецЕсли;

Если БОК1 и БОК2 в ветвлении "если - то - иначе" являются выраже­ниями, то для выбора вычисляемого выражения лучше употреблять функцию, вычисляющую выражение по условию. Ее синтаксис:

результат = ?(ЛВ, выражение1 , выражение2 );

Пример:

у = ?(х > 0, Лог(х), х); // Вернет Лог(х), если х >0, или х - в противном случае

Приведенный оператор заменяет следующее ветвление:

если х > 0 тогда

у = Лог(х);

иначе

у = х;

конецЕсли;

Запись ветвление "если - то - иначе - если" в 1 С:

если ЛВ1 тогда

БОК1 // Некоторые операторы

иначеЕсли ЛВ2 тогда

БОК2 // Некоторые операторы

………….

иначеЕсли ЛВк тогда

БОКк // Некоторые операторы

[иначе // Последние два элемента конструкции

БОКк+1] // являются необязательными

конецЕсли;

49. “Попытка"

Ветвление Попытка служит для обработки исключений и реализуется в 1С виде следующей конструкции:

попытка

БОК1,

исключение

БОК2

конецПопытки;

где

БОК1 - последовательность операторов, в которых может возникнуть исключение;

БОК2 - последовательность операторов, обрабатывающих исключение.

Исключение - это ошибка, возникающая при исполнении программы, например деление на нуль или выход за границы массива. В первом случае система выдаст сообщение "Деление на 0", во втором - "Значение индексного выражения". Работа программы, если не используется обработка исключений, при возникновении ошибки прекращается.

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

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

Например. Вычислить сумму элементов вектора. В процедуре при обращении к вектору умышленно введена ошибка - выход за границы вектора. Для ее преодоления применяется конструкция Попытка.

процедура Выполнить() // Запускаем процедуру из обработки Проба

перем а[5], ин, сум;

// Инициализация вектора а

а[1] = 0; а[2] = 1.5; а[3] = 2.5; а[4] = -1; а[5] = 7;

// Сумма элементов массива а. Ожидаемый результат: сум = 10 сум = 0;

// Умышленно для иллюстрации работы конструкции Попытка

// задаем верхний параметр цикла большим числа элементов вектора а

для ин = 1 по 7 цикл

попытка // При выходе за границы вектора

сум = сум + а[ин]; // произойдет обработка исключения;

исключение // исполнение программы не прекратится

Сообщить(ОписаниеОшибки() + ". Вычисления будут продолжены.");

конецПопытки;

конецЦикла; // для

Сообщить("сум = " + сум); // Напечатает 10

конецПроцедуры // Выполнить

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