Задание № 12 (ДЕМО ФИПИ КЕГЭ 2021)
Выполнение алгоритмов для исполнителя
Разбор заданий № 12 КЕГЭ 2021
Исполнители Редактор, Чертежник, Робот
Проверяемые элементы содержания: Умение исполнить алгоритм для конкретного исполнителя с фиксированным набором команд.
(повышенный уровень, время – 6 мин)
Немного теории:
Алгоритм— конечная последовательность шагов в решении задачи, приводящая от исходных данных к требуемому результату.
Алгоритм может представлять собой некоторую последовательность вычислений, а может — последовательность действий нематематического характера. Перед его составлением должны быть чётко определены начальные условия и то, что предстоит получить.
Разрабатывать алгоритмы может только человек.
Исполняют алгоритмы люди и всевозможные устройства — компьютеры, роботы, станки, спутники, сложная бытовая техника и т.д. Одним словом, Исполнители.
Исполнитель – устройство, способное выполнять определённый набор команд.
Команды, которые может выполнить конкретный исполнитель, образуют систему команд исполнителя (СКИ).
Система команд исполнителя — совокупность команд, которые он способен выполнять.
Среди автоматических устройств наиболее совершенными исполнителями являются роботы. Во многих случаях и сам человек является исполнителем алгоритмов.
Исполнитель “РЕДАКТОР”
Исполнитель Редактор — обрабатывает текстовые строки. Он получает на вход некоторую текстовую строку и преобразует её по заданным правилам.
|
|
Исполнитель Редактор может выполнять две команды (в них обозначения v и w обозначают некоторые последовательности — цепочки символов);
• заменить (v, w) — заменяет в строке первое встреченное при просмотре слева направо вхождение цепочки символов v на цепочку w; если же цепочка символов v в строке не найдена, выполнение данной команды не меняет строку;
• нашлось (v) — проверяет, встречается ли цепочка символов v в обрабатываемой текстовой строке, и возвращает логическое значение “истина” или “ложь”; сама текстовая строка при этом не изменяется.
Алгоритм обработки текстовой строки реализуется при помощи конструкций цикла ПОКА и ветвления (ЕСЛИ ... ТО ... ИНАЧЕ).
· команда ветвления:
выполняется команда1 (если условие истинно) или команда2 (если условие ложно), где условие — это команда проверки наличия препятствия;
· команда цикла:
выполняется, пока условие истинно (условие — это команда проверки наличия препятствия).
Если в цикле ПОКА размещено несколько операторов ЕСЛИ, то:
• проверяется условие выполнения цикла; если оно ложно, то цикл не выполняется вообще;
|
|
• выполняется первый оператор ЕСЛИ (согласно заданному в нём условию);
• выполняется второй оператор ЕСЛИ (согласно заданному в нём условию);
• выполняется последний оператор ЕСЛИ (согласно заданному в нём условию);
• только после завершения выполнения всех операторов ЕСЛИ, записанных в теле цикла, выполняется новая проверка условия в цикле ПОКА для выяснения, должен ли цикл быть повторен.
РЕКОМЕНДАЦИИ для решения задач исполнителя РЕДАКТОР:
Задачи данного типа можно решать следующими способами: | |||||
| 1. аналитически (без применения информационных технологий); | ||||
2. в ручном режиме в текстовом редакторе, например, Блокнот, TextEdit и др.: | |||||
| a. создать строку символов; | ||||
b. имитируя действия исполнителя, применить к строке заданную программу. | |||||
3. перевести программу на язык программирования. | |||||
на языке исполнителя РЕДАКТОР | на языка программирования Python | ||||
ПОКА условие последовательность команд КОНЕЦ ПОКА | while <условие> : последовательность команд | ||||
ЕСЛИ условие ТО команда1 ИНАЧЕ команда2 КОНЕЦ ЕСЛИ | if <условие>: команда1 else: команда2 | ||||
заменить (v, w) | S.replace( v, w, 1 ) | ||||
Метод replace [1]
Метод replace заменяет все вхождения одной строки на другую. |
Формат: S.replace(old, new) — заменить в строке S все вхождения подстроки old на |
подстроку new . |
S.replace(old, new, count) – заменены будут не все вхождения, а только не больше, |
чем первые count из них. |
Задание № 12 (ДЕМО ФИПИ КЕГЭ 2021)
|
|
(соответствует заданию № 14 ДЕМО ЕГЭ-2020 ФИПИ)
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 70 идущих подряд цифр 8? В ответе запишите полученную строку. |
решение на Python:
НАЧАЛО
ПОКА нашлось (2222) ИЛИ нашлось (8888)
ЕСЛИ нашлось (2222)
ТО заменить (2222, 88)
ИНАЧЕ заменить (8888, 22)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА КОНЕЦ
|
Действие | Результат | |
1. | нашлось (8888): заменить (8888, 22), заменить (8888, 22) | 22228...888 (70 - 8 = 62 цифр 8) |
2. | нашлось (2222): заменить (2222, 88) | 888...888 (62 + 2 = 64 цифр 8) |
В результате выполнения блока команд (за один период) строка, состоящая из идущих подряд цифр 8, сокращается на (70 - 64) 6 символов. | ||
... | Выполним целочисленное деление 70 на 6: Целая часть – [70 / 6] = 11, остаток – {70 / 6} = 4. За 11 периодов строка сократится до 4 символов: 8888 | |
n | нашлось (8888): заменить (8888, 22) | 22 |
Задание 12 № 36025 (ЕГЭ−2021. Досрочная волна)
Дана программа для Редактора:
|
|
НАЧАЛО решение на Python:
ПОКА нашлось (1111) ИЛИ нашлось (88888)
ЕСЛИ нашлось (1111)
ТО заменить (1111, 888)
ИНАЧЕ заменить (88888, 888)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 81 идущей подряд цифры 1? В ответе запишите полученную строку. |
Решение:
Действие | Результат | |
1. | нашлось (1111): заменить (1111, 888), заменить (1111, 888), ... | 8888...881 60 |
[81/4] = 20 раз “1111” заменяются “888” ⇒ 60 цифр “8”; {81/4} = 1 – в конце остается “1” | ||
2. | нашлось (88888): заменить (88888, 888), … | 88888888...88881 36 |
[60/5] = 12 раз “88888” заменяются на “888” и {60/5} = 0 – ⇒ 36 цифр “8” | ||
3. | нашлось (88888): заменить (88888, 888), … | 88888...881 22 |
[36/5] = 7 раз “88888” заменяются на “888”, {36/5} = 1 – ⇒ 22 цифры “8” | ||
4. | нашлось (88888): заменить (88888, 888), … | 888888888888881 14 |
[22/5] = 4 раза “88888” заменяются на “888”, {22/5} = 2 – ⇒ 14 цифр “8” | ||
5. | нашлось (88888): заменить (88888, 888), … | 88888888881 10 |
[14/5] = 2 раза “88888” заменяются на “888”, {14/5} = 4 – ⇒ 10 цифр “8” | ||
6. | нашлось (88888): заменить (88888, 888), … | 8888881 6 |
[10/5] = 2 раза “88888” заменяются на “888”, {10/5} = 0 – ⇒ 6 цифр “8” | ||
7. | нашлось (88888): заменить (88888, 888), … | 88881 4 |
[6/5] = 1 раз “88888” заменяются на “888”, {6/5} = 1 – ⇒ 4 цифры “8” |
Ответ: 88881
Дата добавления: 2022-07-02; просмотров: 32; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!