- Шульга Е. В.
- Основы алгоритмизации и программирования
- Просмотров: 14299
Робот. Условный оператор "ЕСЛИ"
Рассмотрим новую задачу для Робота. Надо посадить цветы во всех клетках вдоль стены, где нет прохода, а если в этом месте есть проход, войти в него и обработать грядку в самом начале прохода.
Для решения этой задачи нам надо научить Робота выполнять разные действия в зависимости от окружающей обстановки. Это можно изобразить на схеме
Словами это можно сформулировать так: если есть проход (условие выполняется), то выполни одну группу команд, если нет – выполни другие команды. В программе для этой цели используется специальный условный оператор если
Сад1
{
пока ( впереди_свободно )
{
вперед(1);
если ( слева_свободно )
{ /* войти в коридор */
налево;
вперед(1);
посади;
назад(1);
направо;
}
иначе
{ посади; }
}
}
Таким образом, мы определили два варианта действий Робота - первый работает тогда, когда обнаружен проход, а второй – когда справа стена.
Правила использования условного оператора
- Условный оператор состоит из двух частей; первая часть начинается ключевым словом если, после которого в скобках записывается условие.
- Если это условие верно (или истинно), то выполняется группа команд, стоящая ниже в фигурных скобках (блок-если).
- Вторая часть (блок-иначе) начинается со слова иначе и выполняется в том случае, когда условие в скобках ложно.
- Нельзя отделять блок-если и блок-иначе, поскольку они составляют единый оператор.
- Условие ставится только в заголовке блока-если.
- Блок-иначе может отсутствовать, если он не нужен; в этом случае мы говорим, что условный оператор записан в сокращенной форме.
- Чтобы было удобнее разбираться в программе, используют отступы так же, как и в циклах: тело блока-если и блока-иначе сдвигается вправо на 2-3 символа.
Сокращенная форма
Немного изменим задачу – пусть теперь Роботу надо обрабатывать только по 1 клетке в начале каждого прохода. Таким образом, в блоке-иначе не осталось ни одной команды – если прохода нет, ничего делать не надо. Поэтому можно использовать сокращенную форму условного оператора – без второй части:
Сад2
{
пока ( впереди_свободно )
{
вперед(1);
если ( слева_свободно )
{
налево;
вперед(1);
посади;
назад(1);
направо;
}
}
}
Что такое сложные условия?
Рассмотрим еще одну задачу для Робота. Ему требуется обработать только те клетки, которые ограничены стенами с двух сторон и остановиться, когда на пути встретится стенка.
Сначала можно сформулировать алгоритм на русском языке – иди вперед, пока не появится стена впереди. Если в какой-то момент справа от Робота стена И слева стена, надо посадить цветы в грядку.
В этом словесном алгоритмах мы объединяли логические команды Робота с помощью операции И, получив из двух простых условий одно сложное условие. То же самое можно делать и в программе:
Посадка
{
пока ( впереди_свободно )
{
вперед(1);
если ( справа_стена И слева_стена )
посади;
}
}
Сложное условие – это условие, состоящее из двух или более простых условий, объединенных с помощью логических операций:
НЕ отрицание
И логическое умножение
ИЛИ логическое сложение
Правила использования сложных условий
- Простейшими условиями являются логические команду исполнителей (например, слева_стена) и логические отношения между числами. > 5, 2+n < x
- >= больше или равно a >= 2* x+5
- <= меньше или равно c+2*d <= 5*v
- == равно d = = 2+c
- не равно a != b
- В условии “равно” ставится два знака равенства; чтобы не запутаться, надо запомнить, что если переменная изменяется (оператор присваивания), то надо ставить один знак “=“, а если не меняется (логическое отношение), то два.
- Сложные условия составляются из нескольких простых; простые условия объединяются с помощью логических операций.
- Операция "И" требует одновременного выполнения двух условий, например:
сверху_стена И снизу_стена - Операция "ИЛИ" обозначается требует выполнения хотя бы одного из двух условий (или обоих вместе), например:
сверху_стена ИЛИ снизу_стена - Иногда удобно использовать логическую операцию “НЕ”, которая отрицает значение логического выражения, например условия
a = a)
означают одно и то же. - Устанавливается такой приоритет (старшинство) логических отношений и операций:
сначала выполняются операции в скобках, затем ...
операции “НЕ”, затем ...
логические отношения (>, =, <=, ==, !=), затем ...
операции “И” и в последнюю очередь
операции “ИЛИ”.
Для изменения порядка выполнения операций используются скобки.
Использован материал из книги "Алгоритмы и исполнители", автор Поляков К.