Воскресенье, 22.09.2019, 07:29
Блог учителя информатики и математики
О блогеМой профильРегистрацияВыходВход
Вы вошли как Гость · Группа "Гости" Приветствую Вас, Гость · RSS
Меню блога
Погода в нашем районе.

НАГРАДА

Как Вы считаете, должны ли дети ходить в школу в школьной форме?
Всего ответов: 2747
 
 20.1

   Задание 20.1 проверяет умение записать формальный алгоритм с использованием инструкций ветвления и цикла. Алгоритм может быть выполнен в среде формального исполнителя «Робот» или же записан в текстовом редакторе. Формулировке задания предшествует описание команд исполнителя записи алгоритмических конструкций ветвления и цикла, поэтому задание может быть выполнено даже теми школьниками, которые не знакомы с синтаксисом языка, но владеют алгоритмическим языком.

Пример задачи.

Исполнитель Робот умеет пе­ре­ме­щать­ся по лабиринту, на­чер­чен­но­му на плоскости, раз­би­той на клетки. Между со­сед­ни­ми (по сторонам) клет­ка­ми может сто­ять стена, через ко­то­рую Робот прой­ти не может. У Ро­бо­та есть де­вять команд. Че­ты­ре команды — это команды-приказы:

 

вверх вниз влево вправо

 

При вы­пол­не­нии любой из этих ко­манд Робот пе­ре­ме­ща­ет­ся на одну клет­ку соответственно: вверх ↑ вниз ↓, влево ← , впра­во →. Если Робот по­лу­чит ко­ман­ду пе­ре­дви­же­ния сквозь стену, то он разрушится. Также у Ро­бо­та есть ко­ман­да закрасить, при ко­то­рой за­кра­ши­ва­ет­ся клетка, в ко­то­рой Робот на­хо­дит­ся в на­сто­я­щий момент.

Ещё че­ты­ре команды — это ко­ман­ды про­вер­ки условий. Эти ко­ман­ды проверяют, сво­бо­ден ли путь для Ро­бо­та в каж­дом из четырёх воз­мож­ных направлений:

 

сверху свободно  снизу свободно  слева свободно  спра­ва свободно

 

Эти ко­ман­ды можно ис­поль­зо­вать вме­сте с усло­ви­ем «если», име­ю­щим сле­ду­ю­щий вид:

если условие то

последовательность команд

все

 

Здесь условие — одна из ко­манд про­вер­ки условия. Последовательность команд — это одна или не­сколь­ко любых команд-приказов. Например, для пе­ре­дви­же­ния на одну клет­ку вправо, если спра­ва нет стенки, и за­кра­ши­ва­ния клет­ки можно ис­поль­зо­вать такой алгоритм:

если спра­ва сво­бод­но то

вправо

закрасить

все

 

В одном усло­вии можно ис­поль­зо­вать не­сколь­ко ко­манд про­вер­ки условий, при­ме­няя ло­ги­че­ские связ­ки и, или, не,например:

если (справа свободно) и (не снизу свободно) то

вправо

все

 

Для по­вто­ре­ния по­сле­до­ва­тель­но­сти ко­манд можно ис­поль­зо­вать цикл «пока», име­ю­щий сле­ду­ю­щий вид:

нц пока условие

последовательность команд

кц

 

Например, для дви­же­ния вправо, пока это возможно, можно ис­поль­зо­вать сле­ду­ю­щий алгоритм:

нц пока спра­ва сво­бод­но

вправо

кц

 

 

Выполните задание.

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

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

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

 

Пример работы программы:
Пример 1.

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

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

кон
 

 

Двигаемся влево, пока не дойдём до прохода в горизонтальной стене

Двигаемся вврх, пока не дойдём до прохода
|Закрашиваем пройденные клетки

Двигаемся вврх, пока не дойдём до стены

Двигаемся вврх, пока стена
|Закрашиваем пройденные клетки

Переходим на другую сторону стены

Двигаемся вниз, пока не дойдём до прохода
|Закрашиваем пройденные клетки

Двигаемся вниз, пока не дойдём до стены

Двигаемся вниз, пока стена
|Закрашиваем пройденные клетки

 

Оценка 2

 

Пример 2.

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

 

Задание решено только для частного случая, изображенного на рисунке.

Оценка 0

Пример 3.

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

нц пока слева стена
закрасить
вверх
кц
(влево) и(вниз)
нц пока справа стена
закрасить
вниз
кц
нц пока не справа стена
вниз
кц
нц пока справа стена
закрасить
вниз
кц

кон

Алгоритм изложен верно, имеется синтаксическая ошибка — логическая операция «И» применяется не к логическим выражениям, но это не влияет на смысл алгоритма.

Оценка 2

Пример 4.

алг
нач
нц пока не слева свободно
нц пока слева свободно
влево
кц
нц пока слева стена
красить
вверх
кц
нц пока не слева стена
вверх
кц

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

кон

Алгоритм верно решает задачу. Неправильный синтаксис записи команд и даже различия в написании команд («красить» и «закрасить») не влияют на оценку.

Оценка 2

Пример 5.

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

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

кон

Робот не закрашивает угловую клетку. Оценка 1.
Пример 6.

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

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

кон

Робот  закрашивает лишнюю клетку. Оценка 1.
 

 

 

Copyright MyCorp © 2019
Блог учителя Учительский портал