Задание №15. Создавать и выполнять программы для заданного исполнителя (вариант задания 15.1) или на универсальном языке программирования (вариант задания 15.2).
Уровень сложности: высокий; макс. балл за задание: 2; примерное время выполнения: 45 минут.
Знать: алгоритм, свойства алгоритмов, способы записи алгоритмов. Алгоритмические конструкции. Логические значения, операции, выражения. Разбиение задачи на подзадачи, вспомогательный алгоритм.
Уметь: создавать простейшие модели объектов и процессов в виде изображений и чертежей, динамических (электронных) таблиц, программ (в том числе в форме блок-схем).

Пример задания 15.1.

Я не стану описывать все возможности исполнителя Робот, все его "умения" изложены в каждом задании и на их повторение уйдёт куча времени. просто опишу само задание.

На бесконечном поле есть горизонтальная и вертикальная стены. Правый конец горизонтальной стены соединён с верхним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной непосредственно под горизонтальной стеной у её левого конца.
На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно ниже горизонтальной стены и левее вертикальной стены, кроме клетки, в которой находится Робот перед выполнением программы. Проходы должны остаться незакрашенными. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).

При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным.
Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера проходов внутри стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.
Сохраните алгоритм в файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Разбор задания.

Я уже несколько лет являюсь экспертом по проверке работ ОГЭ по информатике и сразу объясню как надо решать данную задачу и как не надо! Следует запомнить самое главное, что Робот должен выполнять алгоритм и не разрушаться для любой длины стен, это оговорено в условии, следовательно, для написания программы можно и нужно использовать только один вид циклического алгоритма - цикл ПОКА. Это обязательное требование! А использование всех других способов приведёт вас к ошибке в программе. Эксперт проверяет запись самого алгоритма на алгоритмическом (или очень похожем на него) языке, а не работу программы в среде программирования КуМир.

Разберём первый "кусочек" задачи:

Клетка, в которой стоит Робот не должна быть закрашена, следовательно первым делом шагнём вправо, только потом используем цикл пока и проверку условия стены над Роботом. Алгоритм пишем на понятном русском языке:

алг

нач

   вправо

   нц пока сверху стена
            закрасить
            вправо
   кц

...

кон

После выполнения этого "кусочка" программы Робот будет вот тут:

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

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

алг

нач

   вправо

   нц пока сверху стена
            закрасить
            вправо
   кц

   нц пока сверху свободно
           вправо

   кц

...

кон

Снова используем цикл пока и проверку условий (на данном этапе проверяем наличие стены сверху и отсутствие её справа от Робота) и дополняем нашу программу следующим кодом:

алг

нач

   вправо

   нц пока сверху стена
            закрасить
            вправо
   кц

   нц пока сверху свободно
           вправо

   кц

   нц пока сверху стена и справа свободно
            закрасить
            вправо
   кц

...

кон

После выполнения этого отрезка программы Робот окажется в незакрашенной клетке перед вертикальной стеной.

Переходим к следующему шагу. Нам теперь необходимо закрасить все клетки справа от вертикальной стены. Дописываем следующий код:

алг

нач

   вправо

   нц пока сверху стена
            закрасить
            вправо
   кц

   нц пока сверху свободно
            вправо
   кц

   нц пока сверху стена и справа свободно
            закрасить
            вправо
   кц

   нц пока справа стена
            закрасить
            вниз
   кц

...

кон

Теперь наш Робот остановился в проходе, длина которого нам неизвестна, следовательно, чтобы его пройти нам снова нужен цикл пока. Добавляем код в нашу программу:

алг

нач

   вправо

   нц пока сверху стена
            закрасить
            вправо
   кц

   нц пока сверху свободно
            вправо
   кц

   нц пока сверху стена и справа свободно
            закрасить
            вправо
   кц

   нц пока справа стена
            закрасить
            вниз
   кц

   нц пока справа свободно
            вниз

   кц

...

кон

Ну, и последний штрих в нашей программе. Осталось закрасить все клетки , которые находятся слева от стены. Для этого добавим следующий код:

алг

нач

   вправо

   нц пока сверху стена
            закрасить
            вправо
   кц

   нц пока сверху свободно
            вправо
   кц

   нц пока сверху стена и справа свободно
            закрасить
            вправо
   кц

   нц пока справа стена
            закрасить
            вниз
   кц

   нц пока справа свободно
            вниз

   кц

   нц пока справа стена
            закрасить
            вниз

   кц

кон

Результат работы программы:

Самой распространённой ошибкой при решении данных заданий является то, что учащиеся пишут программу под конкретную обстановку и получают за своё решение ноль баллов. Внимательно читайте условие заданий! Используйте только цикл пока!

Удачи Вам!

Добавить комментарий


Защитный код
Обновить

© 2019 Информатика и ИКТ. Все права защищены

^ Наверх