Информатика
Тема 3: Основы программированияУрок 3: Формальные исполнители: Робот, Чертежник, Редактор
- Видео
- Тренажер
- Теория
Алгоритмы и циклы выполняются по шагам. Прежде чем переходить к сложным алгоритмам, можно потренироваться на программах на русском языке, которые часто встречаются в учебных задачах с исполнителями.
Есть три типа исполнителей: Чертежник, Редактор и Робот. У каждого из них есть своя система команд, и обязательно еще две вещи — проверка условий (если, иначе) и цикл (пока или повтори N раз).
Исполнитель РОБОТ перемещается по прямоугольному лабиринту, начерченному на плоскости, разбитой на клетки.
Система команд исполнителя РОБОТ содержит восемь команд:
- команды-приказы: вверх, вниз, влево, вправо
- команды, проверяющие истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ: сверху свободно, снизу свободно, слева свободно, справа свободно.
Цикл ПОКА <условие> <последовательность команд> КОНЕЦ ПОКА — выполняется, пока условие истинно.В конструкциях ПОКА условие может содержать команды проверки, а также слова И, ИЛИ, НЕ. В задачах Робота нужно посчитать количество клеток, в которых он может успешно выполнить команду.
Система команд исполнителя ЧЕРТЕЖНИК содержит следующие команды:
- опустить перо
- поднять перо
- сместиться в точку (x, y)
- сместиться на вектор (X, Y)
Система команд исполнителя РЕДАКТОР состоит из двух команд (в обеих командах 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.