Цели: сформировать умение записи, исполнения и отладки алгоритмов с использованием цикла пока; добиться понимания использования цикла пока; развивать умение анализировать.
Ученики должны знать: правила записи и исполнения цикла пока; свойства цикла пока.
Ученики должны уметь: использовать при составлении алгоритмов конструкцию цикла пока и записывать ее на языке Кумир, владеть методами отладки: по шагам, непрерывно.
Метод обучения: объяснительно-иллюстративный и репродуктивный (на этапе объяснения нового материала), репродуктивный с элементами проблемного (этап закрепления материала).
Обеспечение урока:
- система Кумир;
- интерактивная доска;
- мультимедийный проектор;
- карточки-задания.
Ход урока
1. Объяснение нового материала.
В общем случае алгоритм должен быть универсальным, т.е., он не должен зависеть от расстояния между Роботом и стеной. Для этого в алгоритмическом языке есть специальная команда – цикл пока.
Общий вид цикла пока
В общем виде цикл пока записывается так:
При выполнении цикла компьютер повторяет следующие действия:
а) проверяет записанное после служебного слова пока условие;
б) если условие не соблюдается, то выполнение цикла завершается, и компьютер начинает выполнять команды, записанные после кц. Если же условие соблюдается, то компьютер выполняет тело цикла, снова проверяет условие и т.д.
Пример.
Метод отладки: по шагам.
Диалог Компьютера и Робота
Компьютер: снизу свободно?
Робот: да.
Компьютер: вниз.
Робот: смещается вниз в клетку Б.
Компьютер: снизу свободно?
Робот: да.
Компьютер: вниз.
Робот: смещается вниз в клетку В.
Компьютер: снизу свободно?
Робот: нет.
Так как Робот ответил нет, т.о. записанное после пока условие не соблюдается и выполнение цикла заканчивается.
Продемонстрировать в системе Кумир методы отладки: по шагам и непрерывно.
Тело цикла может не выполниться ни разу, если условие в цикле пока не соблюдается с самого начала. Например, если в алгоритме «вниз до стены» Робот на первый же вопрос «снизу свободно » ответит нет, то компьютер не вызовет команду «вниз» ни разу.
Зацикливание. Выполнение цикла пока может и не завершиться, если условие все время будет соблюдаться. Например, если ниже Робота никаких стен нет, то при выполнении предыдущего алгоритма, компьютер «зациклится», т.е. будет бесконечно спрашивать у Робота «снизу свободно», получать в ответ да и командовать «вниз».
Выполнение упражнений.
2. Эксперименты с программой на примере исполнителя Робот.
Необходимо, в системе Кумир, предварительно сделать заготовки расположения Робота (файлы 1.fil-6.fil).
Упражнения.
Эксперименты с программой.
Задание 1. (Загрузить файл 1.fil)
Требуется перевести Робота из клетки А в клетку Б. Использовать цикл пока:
использовать Робот
Задание 2. (Загрузить файл 2.fil)
Дано, что Робот находится у левой стены внутри прямоугольника, огороженного со всех сторон стенами. Внутри прямоугольника стен нет, размеры прямоугольника неизвестны. Требуется закрасить горизонтальный ряд клеток от исходного положения Робота до правой стены и вернуть Робота в исходное положение.
Задание 3. (Загрузить файл 3.fil)
Робот находится в горизонтальном коридоре. Закрасить все клетки коридора:
Задание 4. (Загрузить файл 4.fil)
1. Переделайте алгоритм «закрасить ряд вправо и вернуться» используя в нем цикл:
2. Используя вспомогательный алгоритм, составьте алгоритм, при выполнении которого Робот закрашивает прямоугольник.
Задание 5. (Загрузить файл 5.fil)
Составьте алгоритм для закраски всех клеток вокруг прямоугольной стены:
Задание 6. ( Загрузить файл 6.fil) (Из материалов экзамена 2009г.)
Робот находится в левом верхнем углу огороженного пространства, имеющего форму прямоугольника. Размеры прямоугольника неизвестны. Написать для Робота алгоритм, закрашивающий четыре угловые клетки прямоугольника.
Задание 7. (Загрузить файл 6.fil) (Из материалов экзамена 2009 г.)
Робот находится в левом верхнем углу огороженного пространства, имеющего форму прямоугольника. Размеры прямоугольника неизвестны. Написать для Робота алгоритм, закрашивающий все клетки, расположенные внутри прямоугольника и прилегающие к нижней стороне прямоугольника.
3. Закрепление. Вопросы:
Какие команды Компьютер будет давать Роботу при выполнении цикла:
а) нц пока клетка не закрашена
закрасить
кц
б) нц пока клетка закрашена
закрасить
кц
В ситуации, когда Робот стоит:
- в закрашенной клетке,
- в не закрашенной?
Расположение Робота показано на следующих рисунках:
Как будет выполняться цикл?
Домашнее задание. Определите значение переменной S после выполнения операторов:
Литература: А.Г.Кушниренко «Основы информатики и вычислительной техники».
Давайте разберемся, что же такое цикл и как научить выполнять циклические алгоритмы нашего Робота.
Итак, что такое цикл? Представьте, что мы находимся на уроке физической культуры и перед нами стоит задача сделать 7 приседаний. Это задание можно оформить в виде линейного алгоритма и тогда оно будет выглядеть примерно так:
сделай приседание
сделай приседание
сделай приседание
сделай приседание
сделай приседание
сделай приседание
сделай приседание
Т. е мы повторили команду сделай приседание 7 раз. А есть ли смысл писать 7 одинаковых команд? Может проще дать команду сделай 7 приседаний? Конечно проще и правильнее. Это и есть цикл. Вы можете сами вспомнить примеры циклов из жизни — их довольно много.
Таким образом линейный алгоритм, где повторяются одни и те же команды мы можем оформить в виде циклического алгоритма — примерно так:
повторяй 7 раз
сделай приседание
конец цикла
Вот так, на придуманном нами языке мы оформили цикл. У исполнителя Робот тоже есть возможность записывать циклы. Причем, циклы бывают разные. Тот вариант, который мы только что рассмотрели называется цикл со счетчиком или цикл с параметром.
Цикл — это многократное исполнение последовательности команд
Цикл — это многократное исполнение последовательности команд
Цикл со счетчиком применяется когда заранее известно сколько повторений необходимо сделать. В примере выше с приседаниями именно такой случай.
Для того, чтобы написать цикл со счетчиком для исполнителя необходимо знать его синтаксис. А он такой:
нц <количество повторений> раз
<команда 1>
<команда 2>
…
<команда n>
кц
Здесь мы должны указать количество повторений (число) и команды, которые будут повторяться. Команды, которые повторяются в цикле называют телом цикла.
В системе КуМир цикл “n раз” записывается при помощи следующей конструкции:
нц n раз
набор команд
кц
n – число повторений цикла.
Пример алгоритма для исполнителя Робот в системе КуМир:
Пример алгоритма для исполнителя Робот в системе КуМир:
использовать Робот
алг задание
нач
нц 5 раз
вправо
закрасить
кц
кон
В результате работы программы исполнитель Робот пройдёт вправо на 1 клетку и закрасит её. Затем повторит те же действия ещё 4 раза. Таким образом, Робот переместится вправо на 5 клеток и закрасит их.
Вернемся к физкультуре и изменим задачу. Ведь кто-то может и не сделать 7 приседаний, а другой способен сделать 27. Можно ли учесть это при создании цикла? Конечно. Только теперь мы будем использовать не счетчик (количество повторений), а условие. К примеру, пока не устал, делай приседания. В этом случае человек будет делать не конкретное число приседаний, а приседать до тех пор, пока не устанет. И наш цикл на абстрактном языке примет такой вид:
пока не устал
сделай приседание
конец цикла
Слова не устал в нашем случае — это условие. Когда оно истинно, цикл выполняется. Если же оно ложно (устал) тело цикла не будет выполнено. У исполнителя Робот есть несколько условий
-
сверху не стена или сверху свободно
-
снизу не стена или снизу свободно
-
слева не стена или слева свободно
-
справа не стена или справа свободно
-
сверху стена или сверху не свободно
-
снизу стена или снизу не свободно
-
слева стена или слева не свободно
-
справа стена или справа не свободно
Теперь давайте решим следующую задачу для Робота — нарисовать вертикальную линию от левой до правой границы поля использую цикл с условием. Изначально Робот находится в левом верхнем углу.
Давайте сначала сформулируем словесный алгоритм — т. е. опишем словами что нужно делать Роботу. Этот алгоритм будет звучать примерно так:
«Пока справа свободно делай шаг вправо и закрашивай клетку»
В результате Робот пробежит по всем клеткам вправо и будет их закрашивать до тех пор, пока справа не окажется стена.
Исходный код нашей программы для Робота будет примерно такой:
использовать Робот
алг
нач
нц пока справа свободно
вправо
закрасить
кц
кон
Описание презентации по отдельным слайдам:
-
1 слайд
Циклический алгоритм в системе кумир
-
2 слайд
повторение
Циклический алгоритм (цикл) – это алгоритм, в котором осуществляются повторяющиеся действия -
3 слайд
Цикл с предусловием
Пример:
Программа будет выполняться, пока не достигнет поставленного условияПока a>b
Выполняй
c: a-b= 479-89 – новое c:=338
a: c- новое a:= 338
Проверяй a>b = 338 > b ? – да, повторяй
…
71>89 ? – нет, стоп
Вывод c
конец -
4 слайд
Напишите программу определения суммы чисел, получающихся при выполнении цикла до заданного условия.
Условие: a – ввод с клавиатуры, b – ввод с клавиатуры, c:= 0
пока a>b выполнять c:= c+a+b , a:= a-b
Сохраните программу
с именем Фамилия_4.1 -
5 слайд
Логика программы
Пусть a=6 b=2 c:=0
Повторяй Пока a>bВычисляй c: 0+6+2 – новое значение c:=8
a: 6-2 – новое значение a:=4
Проверяй 4>2? – да, повторяйВычисляй c: 8+4+2 – новое значение c:=14
a: 4-2 – новое значение a:=2
Проверяй 2>2? – нет, стоп
Вывод c:=14 -
6 слайд
Самостоятельная работа
Напишите с помощью цикла с предусловием программу, выводящую степени 2, начиная с заданной, в порядке убывания.Сохраните файл с именем Фамилия_4.2
Подсказка: операция целочисленного деления в КуМир записывается как:
div (x, b)
где x – числитель, b – знаменатель -
Хирьянов Тимофей Федорович
Основные алгоритмические конструкции,
кроме элементарных операций, изображаемых одним элементом схемы – это
альтернативное исполнение и циклы. Существует два варианта
программирования альтернативного исполнения и существует три основных
вида цикла.
Условно исполняемый код
Некоторые операции могут быть поставлены под условный оператор. Тогда
они будут выполнены только в случае истинности этого условия.
если <условие>
то
<действия>
все
Альтернатива
В блок-схеме проверка условия может служить принципом выбора
альтернативных операций. То есть, если условие истинно, исполнение
пойдет по одной траектории, а если ложно, то по другой. На языке КуМир
цикл с предусловием имеет следующий вид:
если <условие>
то
<действия>
иначе
<альтернативные действия>
все
Условия для робота:
слева стена
справа стена
снизу стена
сверху стена
клетка закрашена
слева свободно
справа свободно
снизу свободно
сверху свободно
клетка чистая
Цикл с предусловием
Цикл с предусловием — цикл, который выполняется пока истинно
некоторое условие, указанное перед его началом. Это условие проверяется
до выполнения тела цикла, поэтому тело может быть не выполнено ни разу
(если условие с самого начала ложно). В большинстве процедурных языков
программирования реализуется оператором while, отсюда его второе название — while-цикл. На языке КуМир цикл с предусловием имеет следующий вид:
нц пока <условие>
<тело цикла>
кц
Цикл с постусловием
Цикл с постусловием — цикл, в котором условие проверяется после
выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя
бы один раз. В языке Паскаль этот цикл реализует оператор repeat..until, в Си — do…while.
На языке КуМир цикл с постусловием имеет следующий вид:
нц
<тело цикла>
кц_при <условие>
Цикл со счётчиком
Цикл со счётчиком — цикл, в котором некоторая переменная изменяет
своё значение от заданного начального значения до конечного значения с
некоторым шагом, и для каждого значения этой переменной тело цикла
выполняется один раз. В большинстве процедурных языков программирования
реализуется оператором for, в котором указывается
счётчик (так называемая «переменная цикла»), требуемое количество
проходов (или граничное значение счётчика) и, возможно, шаг, с которым
изменяется счётчик. На языке КуМир цикл со счетчиком имеет следующий
вид:
цел а
нц для а от 0 до 9
… тело цикла
кц
В различных языках программирования по-разному решается вопрос о
значении переменной по завершении цикла, в котором эта переменная
использовалась как счётчик.
Изучаем Алгоритмику Мой КуМир
Цикл с предусловием
Робот играет и работает
Определяем границы
Исполнитель Робот Циклические алгоритмы
Цикл с предусловием
Пример. Робот находится в одной из клеток поля неопределённого размера. Дополнительных стен на поле нет. Составьте программу, по которой Робот закрасит клетки по периметру вдоль стен.
Для выполнения этого задания необходимо сначала перевести Робота в одну из угловых клеток, например в верхнюю левую клетку. Если бы мы знали точное расположение Робота, то могли бы перевести его в нужную клетку с помощью цикла нц-раз-кц . Но так как местоположение Робота неизвестно и возможен вариант, что Робот изначально стоит в угловой клетке, надо найти другое решение.
Чтобы Робот оказался в верхнем левом углу, надо двигаться сначала в одном направлении (например, вверх), пока не дойдём до стены, а затем в другом (влево), пока не дойдём до стены.
В школьном алгоритмическом языке существует специальная конструкция, которая позволяет организовать такие действия — это цикл с предусловием.
Цикл с предусловием
Общий вид цикла с предусловием:
нц пока услолвие . |тело цикла (последовательность команд) кц
Такой цикл предполагает выполнение следующих действий:
- Робот проверяет условие, записанное после служебного слова пока .
- Если условие истинно (Робот ответил «да»), то выполняется тело цикла, и Робот опять возвращается к проверке условия. Если условие ложно (Робот ответил «нет»), то цикл завершается, и выполняются команды, записанные после цикла.
В нашем случае, чтобы переместить Робота вверх до стены, а затем передвинуть Робота до стены влево, надо записать:
нц пока сверху свободно . вверх кц нц пока слева свободно . влево кц
Задание 1. Допишите программу из примера самостоятельно.
Цикл с предусловием
Задание 2. Внесите изменения в обстановку Робота так, чтобы он при выполнении данной программы прошёл путь, отмеченный пунктирной линией.
использовать Робот алг Путь нач . нц пока сверху свободно . . вправо . кц . нц пока клетка чистая . . вниз . кц . нц пока клетка закрашена . . влево . кц . нц пока слева стена . . вверх . кц кон
Цикл с предусловием
Задание 3. Внесите изменения в обстановку Робота так, чтобы он при выполнении данной программы прошёл путь, отмеченный пунктирной линией.
использовать Робот алг Путь нач . нц пока снизу стена . . вправо ; вниз . кц . нц пока клетка закрашена . . вправо . кц . нц пока слева свободно . . вниз . кц кон
Цикл с предусловием
Задание 4. Робот находится в одной из клеток квадратного поля неопределённого размера без дополнительных стен. Составьте программу, по которой Робот закрасит клетки по диагоналям.
Робот играет и работает
Задание 1. Представьте себе, что Робот стал играть в прятки. В одной из средних клеток нижней стены имеется укрытие. Робот находится в одной из клеток вне укрытия.
Составьте программу, по которой Робот спрячется в укрытие.
Протестируйте программу, устанавливая начальное положение Робота в отмеченные клетки.
Робот играет и работает
Задание 2. Роботу поручено покрасить забор. На рисунке закрашенная клетка означает, что забор с соответствующей стороны покрашен. Составьте программу для покраски забора Роботом и протестируйте её, устанавливая начальное положение Робота в отмеченные клетки.
Учтите в программе то, что краски выделено ровно столько, сколько требуется для покраски забора, значит, никакая клетка не должна краситься дважды.
Рекомендация. Перед закрашиванием клеток переведите Робота в особую клетку, с которой следует начинать закрашивание.
Робот играет и работает
Задание 3. Робот находится на бесконечном поле без стен и без закрашенных клеток . Установите соответствие между программами и описаниями действий Робота.
использовать Робот алг Загадка_1 нач . нц пока клетка чистая . . закрасить ; вправо . кц кон
использовать Робот алг Загадка_2 нач . нц пока клетка закрашена . . закрасить ; вправо . кц кон
использовать Робот алг Загадка_3 нач . нц пока клетка чистая . . вправо ; закрасить . кц кон
Описание программы
Робот не двинется с места и не покрасит ни одной клетки
Имя программ
Робот бесконечно двигается вправо и красит клетки на своём пути
Загадка_2
Загадка_1
Робот перейдёт вправо на одну клетку, покрасит её и остановится
Загадка_3
Определяем границы
Пример. Робот находится на поле без дополнительных стен и без закрашенных клеток. Высота поля 3 клетки, а ширина — не менее 5 клеток. Составьте программу, по которой Робот закрасит все клетки, расположенные в среднем ряду, отступив от боковых стен на 2 клетки.
На поле нет стен и нет признака, по которому можно было бы остановить процесс закрашивания. Но у нас есть возможность найти клетку, с которой надо начинать процесс закрашивания. Для этого надо сначала перевести Робота в угловую клетку, а затем — в первую закрашиваемую клетку.
Аналогично можно перевести Робота в клетку, в которой надо закончить процесс закрашивания: сделать это можно, также начиная от стены.
Если закрасить эти две клетки, то можно переформулировать поставленную задачу: закрасьте все клетки, находящиеся между двумя закрашенными.
Таким образом, мы разбили одну сложную задачу на несколько простых.
Определяем границы
Алгоритм решения задачи будет следующим:
- Перевести Робота в верхнюю левую клетку.
- Переместить Робота в клетку, с которой начинается закрашивание, и закрасить её.
- Перевести Робота до правой стены.
- Перевести Робота в крайнюю правую клетку, которую надо закрасить.
- Закрасить все клетки от той клетки, в которой Робот находится, до клетки, закрашенной при выполнении пункта 2.
Определяем границы
Задание. Робот находится на квадратном поле без дополнительных стен и без закрашенных клеток. Размер поля неизвестен. Составьте программу, по которой Робот закрасит клетки по образцу.
Указание. Сначала закрасьте границы области, затем — внутренние клетки области.
В презентации использованы материалы учебного пособия
Информатика. Изучаем алгоритмику. Мой КуМир. 5-6 классы / Е. А. Мирончик, И. Д. Куклина, Л. Л. Босова. — М.: БИНОМ. Лаборатория знаний, 2018.