Алгоритм как совокупность базовых структур. Ветвление если. Примеры.
Алгоритм - это последовательность действий, либо приводящая к решению задачи, либо поясняющая, почему это решение получить нельзя. Например, отрицательный результат получается при ошибочном задании входных данных. Алгоритм составляется из отдельных фрагментов, которые могут иметь одну из следующих структур: • блок операторов и конструкций; • ветвление; • цикл. Блок операторов и конструкций (БОК) - это выполнение одного или нескольких простых или сложных действий. БОК может содержать и ветвления и циклы, которые являются примерами сложных действий. Простым действием является, например, выполнение присваивания или вызов процедуры. Конструкции состоят из нескольких операторов и используются для выполнения управляющих действий, например циклов. Так, конструкция Если... КонецЕсли состоит из двух операторов: Если и КонецЕсли. Последний оператор конструкции должен завершаться точкой с запятой. Ветвление - это выбор одного из возможных направлений выполнения алгоритма, осуществляемый в зависимости от значения некоторых условий. Ветвления подразделяются следующие виды: • если - то; • если - то - иначе; • если - то - иначе - если; • выбор по ключу (в 1С это ветвление не используется, вместо него употребляется "Если - то - иначе - если"); • попытка. Цикл - это повторное выполнение некоторого БОК с разными, как правило, значениями входящих в БОК переменных. Однократное выполнение БОК цикла называют итерацией. БОК цикла также называют телом цикла. Различают следующие циклы: • с параметром; • пока; • до. 5.2. Ветвления "если" В ветвлениях "если - то", "если - то - иначе" и "если - то - иначе - если" для записи условий используется логическое выражение (ЛВ), результатом которого может быть истина (И) или ложь (Л). Графически ветвления проиллюстрирует рис. 2.5. Рис. 2.5. Ветвления: а - ветвление "если - то"; б - ветвление "если - то - иначе" Ветвление "если - то" работает так: • вычисляется значение ЛВ; • если оно истинно, то выполняется БОК1; • если оно ложно, то управление передается БОК2. Запись ветвление "если - то" в 1С: если ЛВ тогда БОК // Некоторые операторы конецЕсли;
Ветвление "если - то - иначе" работает так: • вычисляется значение ЛВ; • если оно истинно, то выполняется БОК1 • если оно ложно, то выполняется БОК2; • далее управление передается БОК3. Запись ветвления "если - то - иначе" в 1С: если ЛВ тогда БОК1 // Некоторые операторы иначе БОК2 // Некоторые операторы конецЕсли; Если БОК1 и БОК2 в ветвлении "если - то - иначе" являются выражениями, то для выбора вычисляемого выражения лучше употреблять функцию, вычисляющую выражение по условию.
Алгоритм как совокупность базовых структур. Ветвление «попытка». Примеры. 1 часть смотри предыдущий ворос 5.3. “попытка" Ветвление Попытка служит для обработки исключений и реализуется в 1С виде следующей конструкции: попытка БОК1, исключение БОК2 конецПопытки; где БОК1 - последовательность операторов, в которых может возникнуть исключение; БОК2 - последовательность операторов, обрабатывающих исключение. Исключение - это ошибка, возникающая при исполнении программы, например деление на нуль или выход за границы массива. В первом случае система выдаст сообщение "Деление на 0", во втором - "Значение индексного выражения". Работа программы, если не используется обработка исключений, при возникновении ошибки прекращается. Например. Вычислить сумму элементов вектора. В процедуре при обращении к вектору умышленно введена ошибка - выход за границы вектора. Для ее преодоления применяется конструкция Попытка. процедура Выполнить() // Запускаем процедуру из обработки Проба перем а[5], ин, сум; // Инициализация вектора а а[1] = 0; а[2] = 1.5; а[3] = 2.5; а[4] = -1; а[5] = 7; // Сумма элементов массива а. Ожидаемый результат: сум = 10 сум = 0; // Умышленно для иллюстрации работы конструкции Попытка // задаем верхний параметр цикла большим числа элементов вектора а для ин = 1 по 7 цикл попытка // При выходе за границы вектора сум = сум + а[ин]; // произойдет обработка исключения; исключение // исполнение программы не прекратится Сообщить(ОписаниеОшибки() + ". Вычисления будут продолжены.");
|