Информатика

Тема 3: Основы программирования

Урок 3: Формальные исполнители: Робот, Чертежник, Редактор

  • Видео
  • Тренажер
  • Теория
Заметили ошибку?

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

Есть три типа исполнителей: Чертежник, Редактор и Робот. У каждого из них есть своя система команд, и обязательно еще две вещи — проверка условий (если, иначе) и цикл (пока или повтори N раз). 

Исполнитель РОБОТ перемещается по прямоугольному лабиринту, начерченному на плоскости, разбитой на клетки. 

 

Система команд исполнителя РОБОТ содержит восемь команд:

команды-приказы: вверх, вниз, влево, вправо

- команды, проверяющие истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ: сверху свободно, снизу свободно, слева свободно, справа свободно. 

 

Цикл ПОКА <условие> <последовательность команд> КОНЕЦ ПОКА — выполняется, пока условие истинно.В конструкциях ПОКА условие может содержать команды проверки, а также слова И, ИЛИ, НЕ. В задачах Робота нужно посчитать количество клеток, в которых он может успешно выполнить команду.

Система команд исполнителя ЧЕРТЕЖНИК содержит следующие команды:

  • опустить перо
  • поднять перо
  • сместиться в точку (xy)
  • сместиться на вектор (XY)

Система команд исполнителя РЕДАКТОР состоит из двух команд (в обеих командах v и w обозначают цепочки цифр):

  • заменить (v, w)

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 01115 в строку 0275. Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.

  • нашлось (v)

Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
 

Решим задачу. Исходная строка имеет 167 идущих подряд цифр 8 (888…8). Значит, условие выполнения тела цикла истинно (нашлось (888)).

 

Так как в исходной строке нет подстроки 333, то выполняется ветвь ИНАЧЕ и происходит замена подстроки 888 на 3. Таким образом, после одного шага цикла строка будет иметь следующий вид: 3888…8 (цифр 8 теперь 164). После трех шагов цикла строка примет следующий вид: 333888…8 (цифр 8 теперь 158).На следующем шаге при проверке условия «нашлось (333)» получаем истину, поэтому выполняется ветвь ЕСЛИ и заменяется подстрока 333 на 8 (цифр 8 теперь 159).За 4 шага в строке девять цифр 8 заменяются на одну 8 (т. е. удаляется 8 восьмерок).

 

Выясним, сколько раз в исходной строке встретится по 8 восьмерок и какой будет строка после проведенных преобразований:

167 ÷ 8 = 20 (остаток 7). Значит, строка имеет следующий вид: 8888888. В результате двух последних шагов цикла подстроки 888 заменяются на тройки и окончательно получаем строку 338.