Теория:
Характеристика задания
1. Тип ответа: запись числового значения.
2. Структура содержания задания: дана программа для исполнителя Редактор.
3. Уровень сложности задания: повышенный.
4. Примерное время выполнения: \(6\) минут.
5. Количество баллов: \(1\).
6. Требуется специальное программное обеспечение: необязательно.
7. Задание проверяет умение исполнить алгоритм для конкретного исполнителя с фиксированным набором команд.
Пример задания
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах \(v\) и \(w\) обозначают цепочки цифр;
А) заменить (\(v\), \(w\)).
Эта команда заменяет в строке первое слева вхождение цепочки \(v\) на цепочку \(w\). Например, выполнение команды
заменить (\(111\), \(27\))
преобразует строку \(05111150\) в строку \(0527150\).
Если в строке нет вхождений цепочки \(v\), то выполнение команды заменить (\(v\), \(w\)) не меняет эту строку;
Б) нашлось (\(v\)).
Эта команда проверяет, встречается ли цепочка \(v\) в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда \(1\)
ИНАЧЕ команда \(2\)
КОНЕЦ ЕСЛИ
выполняется команда \(1\) (если условие истинно) или команда \(2\) (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из \(70\) идущих подряд цифр \(8\)? В ответе запиши полученную строку.
НАЧАЛО
ПОКА нашлось (\(2222\)) ИЛИ нашлось (\(8888\))
ЕСЛИ нашлось (\(2222\))
ТО заменить (\(2222\), \(88\))
ИНАЧЕ заменить (\(8888\), \(22\))
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Как решать задание?
Данное задание можно решать несколькими способами: с помощью логических рассуждений или при помощи языка программирования.
Мы рассмотрим вариант решения с помощью языка программирования Python.
Вспомнить, что такое процедуры и функции, можно тут.
Вспомнить, что такое алгоритмы ветвления, можно тут.
Вспомним алгоритмы ветвления в Python
ЕСЛИ (условие \(1\))
ТО (действие \(1\))
ИНАЧЕ (действие \(2\))
На Python выглядит следующим образом.
if (условие):
(действие \(1\))
else:
(действие \(2\))
Также вспомним метод replace в Python.
Данный метод возвращает копию строки, в которой все вхождения подстроки заменяются другой подстрокой.
Реализуем данный метод в ходе решения задания № \(12\). Проанализируем условие и определимся, какие операторы нам понадобятся.
| В условии нам дана строка из \(70\) восьмёрок. Строковое значение \(8\) заключаем в одинарные кавычки и умножаем на количество повторов | |
| Пока — это цикл while, \('2222'\) нашлось в строке \(s\), ИЛИ заменяем на логическую функцию or, нашлось \('8888'\) в строке \(s\) | |
ЕСЛИ (if) подстрока \('2222'\) встречается в строке \(s\), то (ставим двоеточие) заменяем четыре двойки на две восьмёрки — методом replace следующим образом: \(s = s.replace ('2222', '88', 1)\). Единица указывает на то, что такая замена будет произведена один раз | |
Иначе (else) заменим '\(8888\)' на '\(22\)' также методом replace. \(s=s.replace('8888', '22',1)\) | |
![]() | Нам необходимо узнать, какая строка останется в результате работы данной программы, поэтому в выводе запишем: print(\(s\)). Запустим программу |
Ответ: \(22\).
Источники:
Изображения. © ЯКласс.
