Top.Mail.Ru

Робот. Условный оператор "ЕСЛИ"

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

alt

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

alt

Словами это можно сформулировать так: если есть проход (условие выполняется), то выполни одну группу команд, если нет – выполни другие команды. В программе для этой цели используется специальный условный оператор если

Сад1

{

пока ( впереди_свободно )

{

  вперед(1);

  если ( слева_свободно )

     { /* войти в коридор */

      налево;
      вперед(1);
      посади;
      назад(1);
      направо;

     }

  иначе

    { посади; }

  }

}

Таким образом, мы определили два варианта действий Робота - первый работает тогда, когда обнаружен проход, а второй – когда справа стена.

Правила использования условного оператора

  1. Условный оператор состоит из двух частей; первая часть начинается ключевым словом если, после которого в скобках записывается условие.
  2. Если это условие верно (или истинно), то выполняется группа команд, стоящая ниже в фигурных скобках (блок-если).
  3. Вторая часть (блок-иначе) начинается со слова иначе и выполняется в том случае, когда условие в скобках ложно.
  4. Нельзя отделять блок-если  и блок-иначе, поскольку они составляют единый оператор.
  5. Условие ставится только в заголовке блока-если.
  6. Блок-иначе может отсутствовать, если он не нужен; в этом случае мы говорим, что условный оператор записан в сокращенной форме.
  7. Чтобы было удобнее разбираться в программе, используют отступы так же, как и в циклах: тело блока-если  и  блока-иначе сдвигается вправо на 2-3 символа.

Сокращенная форма

Немного изменим задачу – пусть теперь Роботу надо обрабатывать только по 1 клетке в начале каждого прохода. Таким образом, в блоке-иначе не осталось ни одной команды – если прохода нет, ничего делать не надо. Поэтому можно использовать сокращенную форму условного оператора – без второй части:

Сад2

{

пока ( впереди_свободно )

{

  вперед(1);

  если ( слева_свободно )

    {

      налево;
      вперед(1);
      посади;
      назад(1);
      направо;

    }

  }

}

Что такое сложные условия?

Рассмотрим еще одну задачу для Робота. Ему требуется обработать только те клетки, которые ограничены стенами с двух сторон и остановиться, когда на пути встретится стенка.

alt

Сначала можно сформулировать алгоритм на русском языке – иди вперед, пока не появится стена впереди. Если в какой-то момент справа от Робота стена И слева стена, надо посадить цветы в грядку.

В этом словесном алгоритмах мы объединяли логические команды Робота с помощью операции И, получив из двух простых условий одно сложное условие. То же самое можно делать и в программе:

Посадка

{

пока ( впереди_свободно ) 

  {

  вперед(1);

  если ( справа_стена И слева_стена )

    посади;

  }

}

Сложное условие – это условие, состоящее из двух или более простых условий, объединенных с помощью логических операций:

НЕ      отрицание

И         логическое умножение

ИЛИ   логическое сложение

Правила использования сложных условий

    1. Простейшими условиями являются логические команду исполнителей (например, слева_стена) и логические отношения между числами.
    2. >  5,    2+n < x

 

      >=       больше или равно    a >= 2* x+5

 

      <=       меньше или равно    c+2*d <= 5*v

 

      ==       равно  d = = 2+c

 

           не равно         a != b
  1. В условии “равно” ставится два знака равенства; чтобы не запутаться, надо запомнить, что если переменная изменяется (оператор присваивания), то надо ставить один знак “=“, а если не меняется (логическое отношение), то два.
  2. Сложные условия составляются из нескольких простых; простые условия объединяются с помощью логических операций.
  3. Операция "И" требует одновременного  выполнения двух условий, например:
    сверху_стена  И  снизу_стена
  4. Операция "ИЛИ" обозначается требует выполнения хотя бы одного из двух условий (или обоих вместе), например:
    сверху_стена  ИЛИ  снизу_стена
  5. Иногда удобно использовать логическую операцию “НЕ”, которая отрицает значение логического выражения, например условия
    a = a)
    означают одно и то же.
  6. Устанавливается такой приоритет (старшинство) логических отношений и операций:
    сначала выполняются операции в скобках, затем ...
    операции “НЕ”, затем ...
    логические отношения (>, =, <=, ==, !=), затем ...
    операции “И” и в последнюю очередь
    операции “ИЛИ”.

Для изменения порядка выполнения операций используются скобки.

Использован материал из книги "Алгоритмы и исполнители", автор Поляков К.