Файл: Разработка практикумов для работы с исполнителем на уроках информатики в основной школе.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.11.2023
Просмотров: 68
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Для того, чтобы написать цикл со счетчиком для исполнителя необходимо знать его синтаксис. А он такой:
нц <количество повторений> раз
<команда 1>
<команда 2> …
<команда n> кц
Здесь мы должны указать количество повторений (число) и команды, которые будут повторяться.
Команды, которые повторяются в цикле называют телом цикла.
Давайте рассмотрим это на примере.
Закрасим 7 клеток, как на рисунке. Рекомендую почитать про стартовую обстановку Робота и про
его простые команды.
Изначально Робот находился в левой верхней клетке.
Давайте для начала решим задачу линейно. В этом случае мы будет закрашивать текущую клетку и
перемещаться на 1 клетку вправо и программа будет выглядеть так:
использовать Робот алг нач закрасить вправо закрасить вправо закрасить вправо закрасить вправо закрасить вправо закрасить вправо закрасить вправо кон
Как видим, команды закрасить и вправо повторяются 7 раз. Давайте теперь перепишем программу с использованием цикла. Кстати, чтобы вставить цикл в свою программу можно в меню Вставка выбрать пункт нц-раз-кц или нажать одну из комбинаций клавиш Esc, Р (русская буква Р) или Esc, H (латинская буква H). Причем клавиши надо нажимать последовательно — сначала Esc, отпустить ее и только потом Р или H. Так вот, наша программа с циклом будет выглядеть так:
использовать Робот алг нач нц 7 раз закрасить вправо кц кон
Если мы ее запустим, то увидим, что в результате получится тоже самое — 7 закрашенных клеток. Однако программа стала короче и значительно грамотней с алгоритмической точки зрения!
В качестве разминки и закрепления предлагаю самостоятельно написать программу для Робота, которая нарисует квадрат со стороной 7 клеток. Естественно, используя цикл.
Занятие 4
Цикл с условием.
Вернемся к физкультуре и изменим задачу. Ведь кто-то может и не сделать 7 приседаний, а другой способен сделать 27. Можно ли учесть это при создании цикла? Конечно. Только теперь мы будем использовать не счетчик (количество повторений), а условие. К примеру, пока не устал, делай приседания. В этом случае человек будет делать не конкретное число приседаний, а приседать до тех пор, пока не устанет. И наш цикл на абстрактном языке примет такой вид:
пока не устал сделай приседание конец цикла
Слова не устал в нашем случае — это условие. Когда оно истинно, цикл выполняется. Если же оно ложно (устал) тело цикла не будет выполнено. У исполнителя Робот есть несколько условий :
сверху свободно снизу свободно слева свободно справа свободно сверху стена снизу стена слева стена справа стена
Теперь давайте решим следующую задачу для Робота — нарисовать вертикальную линию от левой до правой границы поля использую цикл с условием. Изначально Робот находится в левом верхнем углу.
Давайте сначала сформулируем словесный алгоритм — т. е. опишем словами что нужно делать Роботу. Этот алгоритм будет звучать примерно так:
«Пока справа свободно делай шаг вправо и закрашивай клетку»
В результате Робот пробежит по всем клеткам вправо и будет их закрашивать до тех пор, пока справа не окажется стена.
Исходный код нашей программы для Робота будет примерно такой:
использовать Робот алг нач нц пока справа свободно вправо закрасить кц кон
В результате выполнения этой программы мы увидим вот такую картину:
Как видим, не хватает только закрашенной первой клетки. Для этого перед циклом необходимо
выполнить команду закрасить.
Для закрепления прошу написать программу, которая будет делать рамку вокруг рабочего поля Робота независимо от его размера. Конечно же с использованием циклов с условием. В итоге должно получиться так:
Задание 1
использовать Робот алг в клетку Б дано | Робот в клетке А надо | Робот в клетке Б | |и все отмеченные клетки закрашены нач . закрасить . вправо . закрасить . вниз . закрасить . вниз . закрасить . вправо . закрасить . вправо . закрасить . вверх . закрасить . вверх . закрасить . вправо . закрасить . вправо . закрасить . вниз . закрасить . вправо . закрасить . вниз . закрасить кон алг цел @тестирование нач . в клетку Б . цел роб строка,роб столбец . @@робот(роб строка,роб столбец) . если @@нижняя буква(роб строка,роб столбец)='Б' то . . . знач:=10 . . иначе . . . вывод "Ошибка: робот не пришел в клетку Б!",нс . . . знач:=2 . . . выход . все . цел столбцов, строк . @@размер поля(строк,столбцов) . цел строки,столбцы . нц для строки от 1 до строк . . нц для столбцы от 1 до столбцов . . . если (@@метка(строки,столбцы) и не @@закрашена(строки,столбцы)) . . . . то . . . . . вывод "Ошибка: Отмеченная клетка не закрашенна!" . . . . . знач:=2 . . . . . @поставить оценку(2) . . . . . стоп . . . все . . . если (не @@метка(строки,столбцы) и @@закрашена(строки,столбцы)) . . . . то . . . . . вывод "Ошибка:закрашенна лишняя клетка!" . . . . . знач:=2 . . . . . @поставить оценку(2) . . . . . стоп . . . все . . кц . кц . если знач>8 то . . . вывод "Задание выполнено правильно!",нс . все кон | |
Вид окна с результатом:
Задание 2
использовать Робот
алг в клетку Б
дано | Робот в клетке А
надо | Робот в клетке Б
| |и все отмеченные клетки закрашены
нач
. | Пример решения
. нц 6 раз
. . вправо
. . закрасить
. кц
кон
|#%%
алг цел @тестирование
нач
. в клетку Б
. цел роб строка,роб столбец
. @@робот(роб строка,роб столбец)
. если @@нижняя буква(роб строка,роб столбец)='Б' то
. . . знач:=10
. . иначе
. . . вывод "Ошибка: робот не пришел в клетку Б!",нс
. . . знач:=2
. . . выход
. все
. цел столбцов, строк
. @@размер поля(строк,столбцов)
. цел строки,столбцы
. нц для строки от 1 до строк
. . нц для столбцы от 1 до столбцов
. . . если (@@метка(строки,столбцы) и не @@закрашена(строки,столбцы))
. . . . то
. . . . . вывод "Ошибка: Отмеченная клетка не закрашенна!"
. . . . . знач:=2
. . . . . @поставить оценку(2)
. . . . . стоп
. . . все
. . . если (не @@метка(строки,столбцы) и @@закрашена(строки,столбцы))
. . . . то
. . . . . вывод "Ошибка:закрашенна лишняя клетка!"
. . . . . знач:=2
. . . . . @поставить оценку(2)
. . . . . стоп
. . . все
. . кц
. кц
. если знач>8 то
. . . вывод "Задание выполнено правильно!",нс
. все
кон
Вид окна:
Задание 3
использовать Робот
алг в клетку Б
дано | Робот в клетке А
надо | Робот в клетке Б
| |и все отмеченные клетки закрашены
нач
.
.
кон
|#%%
алг цел @тестирование
нач
. в клетку Б
. цел роб строка,роб столбец
. @@робот(роб строка,роб столбец)
. если @@нижняя буква
(роб строка,роб столбец)='Б' то
. . . знач:=10
. . иначе
. . . вывод "Ошибка: робот не пришел в клетку Б!",нс
. . . знач:=2
. . . выход
. все
. цел столбцов, строк
. @@размер поля(строк,столбцов)
. цел строки,столбцы
. нц для строки от 1 до строк
. . нц для столбцы от 1 до столбцов
. . . если (@@метка(строки,столбцы) и не @@закрашена(строки,столбцы))
. . . . то
. . . . . вывод "Ошибка: Отмеченная клетка не закрашенна!"
. . . . . знач:=2
. . . . . @поставить оценку(2)
. . . . . стоп
. . . все
. . . если (не @@метка(строки,столбцы) и @@закрашена(строки,столбцы))
. . . . то
. . . . . вывод "Ошибка:закрашенна лишняя клетка!"
. . . . . знач:=2
. . . . . @поставить оценку(2)
. . . . . стоп
. . . все
. . кц
. кц
. если знач>8 то
. . . вывод "Задание выполнено правильно!",нс
. все
кон
Вид окна:
Задание 4
использовать Робот
алг в клетку Б
дано | Робот в клетке А
надо | Робот в клетке Б
| |и все отмеченные клетки закрашены
нач
. |Пример решения
. если сверху свободно то
. . . вверх
. . . закрасить
. . . вниз
. все
. если снизу свободно то
. . . вниз
. . . закрасить
. . . вверх
. все
кон
|#%%
алг цел @тестирование
нач
. в клетку Б
. цел роб строка,роб столбец
. @@робот(роб строка,роб столбец)
. если @@нижняя буква(роб строка,роб столбец)='Б' то
. . . знач:=10
. . иначе
. . . вывод "Ошибка: робот не пришел в клетку Б!",нс
. . . знач:=2
. . . выход
. все
. цел столбцов, строк
. @@размер поля(строк,столбцов)
. цел строки,столбцы
.
нц для строки от 1 до строк
. . нц для столбцы от 1 до столбцов
. . . если (@@метка(строки,столбцы) и не @@закрашена(строки,столбцы))
. . . . то
. . . . . вывод "Ошибка: Отмеченная клетка не закрашенна!"
. . . . . знач:=2
. . . . .
. . . все
. . . если (не @@метка(строки,столбцы) и @@закрашена(строки,столбцы))
. . . . то
. . . . . вывод "Ошибка:закрашенна лишняя клетка!"
. . . . . знач:=2
. . . . .
. . . все
. . кц
. кц
. если знач>8 то
. . . вывод "Задание выполнено правильно!",нс
. все
кон
Вид окна:
Задание 5
использовать Робот
алг в клетку Б
дано | Робот в клетке А
надо | Робот в клетке Б
| |и все отмеченные клетки закрашены
нач
.
.
кон
|#%%
алг цел @тестирование
нач
. в клетку Б
. цел роб строка,роб столбец
. @@робот(роб строка,роб столбец)
. если @@нижняя буква(роб строка,роб столбец)='Б' то
. . . знач:=10
. . иначе
. . . вывод "Ошибка: робот не пришел в клетку Б!",нс
. . . знач:=2
. . . выход
. все
. цел столбцов, строк
. @@размер поля(строк,столбцов)
. цел строки,столбцы
. нц для строки от 1 до строк
. . нц для столбцы от 1 до столбцов
. . . если (@@метка(строки,столбцы) и не @@закрашена(строки,столбцы))
. . . . то
. . . . . вывод "Ошибка: Отмеченная клетка не закрашенна!"
. . . . . знач:=2
. . . . . @поставить оценку(2)
. . . . . стоп
. . . все
. . . если (не @@метка(строки,столбцы) и @@закрашена(строки,столбцы))
. . . . то
. . . . . вывод "Ошибка:закрашенна лишняя клетка!"
. . . . . знач:=2
. . . . . @поставить оценку