Ветвление в языке кумир. Циклы и условия в языке кумир Цикл с предусловием кумир

26.11.2023

Вложенные циклы и ветвления в системе КУМИР

Одним из фундаментальных понятий в информатике является понятие алгоритма. Происхождение самого термина «алгоритм» связано с математикой. Это слово происходит от Algorithmi – латинского написания имени Мухаммеда аль-Хорезми (787 – 850) выдающегося математика средневекового Востока. В своей книге "Об индийском счете" он сформулировал правила записи натуральных чисел с помощью арабских цифр и правила действий над ними столбиком.

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

Алгоритм может быть предназначен для выполнения его человеком или автоматическим устройством. Создание алгоритма, пусть даже самого простого, - процесс творческий. Он доступен исключительно живым существам, а долгое время считалось, что только человеку. В XII в. был выполнен латинский перевод его математического трактата, из которого европейцы узнали о десятичной позиционной системе счисления и правилах арифметики многозначных чисел. Именно эти правила в то время называли алгоритмами.

Данное выше определение алгоритма нельзя считать строгим – не вполне ясно, что такое «точное предписание» или «последовательность действий, обеспечивающая получение требуемого результата». Поэтому обычно формулируют несколько общих свойств алгоритмов, позволяющих отличать алгоритмы от других инструкций.

Такими свойствами являются:

Дискретность (прерывность, раздельность) – алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов. Каждое действие, предусмотренное алгоритмом, исполняется только после того, как закончилось исполнение предыдущего.

Определенность – каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.

Результативность (конечность) – алгоритм должен приводить к решению задачи за конечное число шагов.

Массовость – алгоритм решения задачи разрабатывается в общем виде, то есть, он должен быть применим для некоторого класса задач, различающихся только исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.

Способы записи алгоритмов

Для записи алгоритмов используют самые разнообразные средства. Выбор средства определяется типом исполняемого алгоритма.

Выделяют следующие основные способы записи алгоритмов:

- вербальный , когда алгоритм описывается на человеческом (естественном) языке. Естественными являются национальные языки (русский, английский, немецкий и т.д.);

- символьный , когда алгоритм описывается с помощью набора символов и является программой (программы пишутся с помощью языков программирования);

- графический , когда алгоритм описывается с помощью набора графических изображений (блок-схема).

Общепринятыми способами записи являются графическая запись с помощью блок-схем и символьная запись с помощью какого-либо алгоритмического языка - программа.

При графическом способе записи составляются блок-схемы, на которых с помощью условных обозначений (геометрических фигур) обозначаются различные части алгоритма. Элементы блок-схем представлены на рисунке.

Система программирования КУМИР

При освоении темы алгоритмы воспользуемся системой программирования КУМИР.

КуМир (Комплект Учебных МИРов) - система программирования, предназначенная для поддержки начальных курсов информатики и программирования в средней и высшей школе.

В системе КуМир используется школьный алгоритмический язык с русской лексикой и встроенными исполнителями Робот и Чертёжник и др.

При вводе программы КуМир осуществляет постоянный полный контроль ее правильности, сообщая на полях программы обо всех обнаруженных ошибках.

При выполнении программы в пошаговом режиме КуМир выводит на поля результаты операций присваивания и значения логических выражений. Это позволяет ускорить процесс освоения азов программирования.

Графический исполнитель Робот

Графический исполнитель Робот позволяет освоить азы программирования и понять работу основных алгоритмических конструкций.

Графический исполнитель - это объект управления. А уп равлять им будем мы с вами.

Исполнитель робот находится в некоторой стартовой обстановке – прямоугольном поле, разбитом на клетки, между которыми могут стоять стены.

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

Р
обот может выполнять команды
: вверх, вниз, вправо, влево, закрасить.

Робот может проверять условия : сверху свободно, снизу свободно, справа свободно, слева свободно, добавление частицы не меняет условие на противоположное. Не сверху свободно, не снизу свободно, не справа свободно, не слева свободно.

Базовые алгоритмические структуры

    Выделяют три базовые алгоритмические структуры (конструкции) -линейная (следование), ветвление и цикл, из которых можно построить любой алгоритм. Каждая алгоритмическая структура имеет одну точку входа и одну точку выхода.

    Будем записывать алгоритмы на и школьном АЯ и в виде блок-схем.

Линейная структура

Линейная структура является самой простой организацией алгоритмов - команды выполняются последовательно одна за другой

Пример:

Циклическая структура (цикл)

    Циклическая структура (цикл) обеспечивает многократное выполнение одних и тех же команд. Существует несколько разновидностей циклических структур.

    Любая циклическая структура состоит из двух частей - заголовка и тела цикла.

    Набор команд, повторяющихся при выполнении цикла, называют телом цикла.

    Заголовок определяет количество повторений тела цикла.

Цикл на число повторений (раз)

нц N раз

<команда>

кц

Пример:

использовать Робот
алг столбик

нач
.
нц 5 раз
. . закрасить
. . вверх
.
кц

кон

Цикл с предусловием (пока)

(запись в алгоритмическом языке)

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

<команда>

кц

Пример:

использовать Робот
алг Линия

нач

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

кон

Цикл с постусловием (при)

(запись в алгоритмическом языке)

нц

<команда>

кц_при <условие>

Пример:

использовать Робот
алг Линия

нач
нц

закрасить; вверх

кц_при слева свободно

кон

Структура «ветвление».

    Структура «ветвление». Решение некоторых задач требует различных действий в зависимости от выполнения некоторых условий. В таких случаях говорят о ветвлении алгоритма.

    Для реализации структуры «ветвление» используются две структурированные команды школьного АЯ - если и выбор, каждая из которых может быть полной и неполной.

    В блок-схемах и школьном АЯ <условие> - это логическое выражение, результатом которого может быть одно из двух возможных значений - истина или ложь. В школьном АЯ эти значения записывают как да и нет. В языках программирования часто используются значения True и False . В компьютере эти значения хранятся как 1 и 0.

Полное ветвление

(запись в алгоритмическом языке)

если <условие>
. .
то <команда1>
. .
иначе <команда2>
все

Пример:

использовать Робот
алг ветвление_полное

нач
.
если сверху свободно
. .
то вверх
. .
иначе вниз
.
все

кон

Неполное ветвление

(запись в алгоритмическом языке)

если <условие>
. .
то <команда1>
все

Пример:

использовать Робот
алг ветвление_неполное

нач
.
если сверху свободно
. .
то вверх
.
все

кон

Вспомогательный алгоритм (процедура)

    Алгоритм по которому решается некоторая подзадача из основной задачи и который, как правило выполняется многократно, называется вспомогательным алгоритмом.

    Вспомогательный алгоритм, записанный на языке программирования, называется подпрограммой или процедурой.

    Вспомогательный алгоритм вызывается из основной программы через имя. Вспомогательный алгоритм записывается после основного алгоритма. У вспомогательного алгоритма обязательно должно быть имя.

использовать Робот
алг
нач
вниз

квадрат
вниз

вниз
кон

алг квадрат
нач

закрасить

вправо

закрасить

вниз

закрасить

влево

закрасить
кон

Вложенные циклы и ветвления

При решении некоторых задач с роботом необходимо использовать вложенные циклы или ветвления.

Цикл называется вложенным, если он размещается внутри другого цикла.

Рассмотрим вложенный цикл на примере цикла пока.

Мы знаем, что цикл состоит из заголовка цикла, который определяет количество повторений тела цикла.

Тело цикла, это та часть цикла, которая повторяется при выполнении цикла.

Телом цикла может быть команда, несколько команд, а также другой цикл или ветвление.

В том случае, когда телом цикла является другой цикл или ветвление, они называются вложенными.

Вложенный цикл

На первом проходе, внешний цикл вызывает внутренний, который исполняется до своего завершения, после чего управление передается в тело внешнего цикла. На втором проходе внешний цикл опять вызывает внутренний. И так до тех пор, пока не завершится внешний цикл.

Вложенное ветвление

Рассмотрим решение задачи с вложенными ветвлениями и циклами:

Задача 1 Робот находится на стене, в которой есть отверстия, двигаясь вдоль стены вправо, робот должен закрашивать все клеточки, где есть отверстия.

использовать Робот алг нач
.
нц пока справа с вободно
нц пока снизу свободно
.закрасить;
вправо
. .
кц
. . вправо
.
кц кон С
оставим алгоритм решения задачи с вне6шим циклом пока и вложенным циклом пока.

Р ешим эту же задачу, используя внешний цикл пока и вложенное ветвление.

Решим эту же задачу с помощью внешнего цикла при и вложенного цикла пока.

Цели : сформировать умение записи, исполнения и отладки алгоритмов с использованием цикла пока ; добиться понимания использования цикла пока ; развивать умение анализировать.

Ученики должны знать : правила записи и исполнения цикла пока ; свойства цикла пока .

Ученики должны уметь : использовать при составлении алгоритмов конструкцию цикла пока и записывать ее на языке Кумир, владеть методами отладки: по шагам, непрерывно.

Метод обучения: объяснительно-иллюстративный и репродуктивный (на этапе объяснения нового материала), репродуктивный с элементами проблемного (этап закрепления материала).

Обеспечение урока:

  • система Кумир;
  • интерактивная доска;
  • мультимедийный проектор;
  • карточки-задания.

Ход урока

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. Закрепление. Вопросы:

Какие команды Компьютер будет давать Роботу при выполнении цикла:

а) нц пока клетка не закрашена

б) нц пока клетка закрашена

В ситуации, когда Робот стоит:

  1. в закрашенной клетке,
  2. в не закрашенной?

Расположение Робота показано на следующих рисунках:

Как будет выполняться цикл?

Домашнее задание. Определите значение переменной S после выполнения операторов:

Литература : А.Г.Кушниренко «Основы информатики и вычислительной техники».

Лекция 4. Арифметические выражения

Арифметические выражения и правила их записи. Алгоритмы с «обратной связью». Команда «пока». Условия в алгоритмическом языке. Команды «если» и «выбор». Команды контроля. «Визуальное» представление команд. Отступление: правила и форма записи арифметических выражений в Фортране XXI века.

№ газеты

Лекция 1. Основные цели курса. Методика построения курса. Проблемный подход. Теория познается через практику. Система “КуМир” - эффективная поддержка традиционных понятий процедурных языков программирования и традиционных методов отладки. Примеры использования “КуМира” в предпрофессиональных курсах.

Лекция 2. Практическое знакомство с системой “КуМир”: исполнитель Робот. Понятие алгоритма. Управление исполнителем Робот с помощью пульта. Линейные алгоритмы. Запись алгоритма. Отступление: Карел-Робот в начальном курсе программирования Стэнфордского университета.

Лекция 3. Методы “визуальной” записи алгоритма. Программное управление Роботом. Цикл “n раз”. Использование вспомогательных алгоритмов. Запись алгоритмов на алгоритмическом языке.

Контрольная работа № 1.

Лекция 4. Арифметические выражения и правила их записи. Алгоритмы с “обратной связью”. Команда “пока”. Условия в алгоритмическом языке. Команды “если” и “выбор”. Команды контроля. “Визуальное” представление команд. Отступление: правила и форма записи арифметических выражений в Фортране XXI века.

Лекция 5. Величины в алгоритмическом языке. Команды ввода/вывода информации. Команда присваивания. Вспомогательные алгоритмы. Алгоритмы с результатами и алгоритмы-функции. Цикл “для”. Табличные величины. Логические, символьные и литерные величины.

Контрольная работа № 2.

Лекция 6. Методы алгоритмизации. Рекуррентные соотношения. Метод итерации. Инвариант цикла. Рекурсия.

Лекция 7. Физические основы современных компьютеров. Микропроцессор - сердце современного компьютера. Как создать компьютер.

Лекция 8. Виртуальные и реальные исполнители в системе “КуМир”. Исполнитель Чертежник. Лего-Робот - программно управляемый исполнитель “КуМира”. Гипертексты в системе “КуМир”. Подготовка заданий для учащихся и их автоматическая проверка.

Итоговая работа.

Пока школьник “собирает” программу в “ПиктоМире”, он практически не должен осваивать какой-то новый, непривычный “мир ЭВМ”. Разумеется, ребенок должен научиться оперировать мышкой для получения от компьютера желаемого результата, но интерфейс в целом опирается на привычные для ребенка понятия и действия, “прозрачен” и не требует от ребенка излишней концентрации внимания на самом процессе взаимодействия с компьютером. В этот момент обучаемый концентрирует практически 100% своих усилий (или лучше сказать “объема внимания”) на алгоритме решения поставленной задачи. Но как только происходит переход от графического программирования к более традиционному текстовому, ученик начинает сталкиваться с “другим миром”, законы которого отличаются от привычных, уже изученных в школе. Речь идет в первую очередь о записи арифметических выражений, на отработку навыков манипулирования которыми на уроках математики в школе ученик потратил десятки часов и достиг определенного автоматизма.

В первых задачах по управлению Роботом ЭВМ демонстрирует свои возможности как управляющая машина, а не как вычислительная. Но вот появляется цикл N раз, и при решении некоторых задач ученику может понадобиться в качестве N взять число, которое появляется как результат некоторого вычисления, например, число клеток поля размером 9 ? 14. Тут выясняется, что вовсе не обязательно вычислять общее число клеток такого поля самому (в уме, на бумаге или калькуляторе) и “вписывать” результат в программу. Оказывается, ЭВМ сможет сама проделать все нужные вычисления, как только мы сообщим ей (запишем в программе), что именно нужно вычислять. То есть, грубо говоря, для решения задачи на ЭВМ нужно не столько знать, “сколько будет дважды два”, сколько уметь сообщить ЭВМ, что нужно взять именно результат выполнения операции “дважды два” или операции “9 раз по 14”.

Со сложением и вычитанием проблем нет. В записи цикл 3+3 раз для ученика нет ничего нового. Точно в такой же форме на уроках математики учащиеся записывают и, мы надеемся, вычисляют без помощи калькулятора различные суммы и разности. Но вот для более сложных арифметических выражений правила записи в школьной математике и в традиционных алгоритмических языках начинают несколько отличаться.

Дело в том, что при работе на бумаге и классной доске математические формулы - корни, дроби, степени и индексы - мы “рисуем”, и это очень удобно. А в традиционных языках программирования арифметическое выражение нарисовать нельзя, а нужно “кодировать”, нажимая кнопки на клавиатуре компьютера. Из-за этого в программировании сложилась традиция упрощенной, так называемой “линейной” записи формул, к которой ученику начала XXI века приходится привыкать и приспосабливаться. (Наверное, к середине века этого делать уже не придется, см. программу внизу справа.) Итак, при вводе в программу требуемых формул (арифметических выражений) нам придется пользоваться клавиатурой компьютера и определенным образом эти формулы кодировать (шифровать). Как и всякая задача на кодирование или шифрование информации, эта простая техническая задача может оказаться притягательной для некоторых школьников (уставших от управления Роботом). При решении этой задачи выясняется, что на клавиатуре есть символ точки, но нет символа умножения “?”, да и точка тоже отнюдь не служит символом умножения. Выясняется также, что не принято писать арифметические формулы вида 8(2+3) с пропущенным знаком умножения. ЭВМ (точнее, компилятор языка программирования) могла бы разобраться в подобных формулах, но традиционно отказывается это делать и требует вписать в формулу звездочку - знак умножения: 8*(2+3). А вот две подряд идущие звездочки ЭВМ, как правило, воспринимает как знак возведения в степень.

Взятые вместе, все эти мелкие детали и образуют препятствие, которое ученику необходимо преодолеть. Обычно это не вызывает затруднений.

Ошибок дети, как правило, не делают, за исключением одной широко распространенной: дроби вида

и записываются как 3+5/2 и 3*5/2 без скобок, вместо правильной записи (3+5)/2 и (3*5)/2.

Правила записи арифметических выражений в Фортране XXI века

Последние столетия математики отрабатывали язык математических формул, который оказался эффективным средством выражения математических понятий и методов манипуляции с математическими объектами. Когда в середине прошлого века появились компьютеры, первые компьютерные редакторы текстов и первые языки программирования, они оказались неспособными работать с отработанным в математике языком математических формул. С течением времени ситуация с математическими формулами в текстовых документах улучшилась. Математики и программисты придумали и стандартизовали способы ввода математических формул в текстовые документы, однако программисты в своих программах продолжали использовать невыразительную “линейную” форму записи формул в виде цепочки символов, вводимых со стандартной клавиатуры.

В XXI веке положение стало меняться. По заказу военного ведомства США специалисты компании SUN разработали язык Fortress, в который изначально закладывалась возможность использования в текстах программ общепринятых математических обозначений. На настоящий момент в этом направлении сделаны только первые шаги, однако в языке Fortress уже можно использовать: греческие буквы:

верхние/нижние индексы и дроби:

формулы с опущенными знаками умножения:

формулы, в которых аргументы элементарных функций не заключаются в скобки:

знаки операций над множествами

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

Алгоритмы с “обратной связью”. Команда “пока”

До сих пор мы работали с Роботом в стиле Черепашьей графики в ЛОГО, а именно командовали без всякой обратной связи. Поэтому то, что мы делали (с методической точки зрения), с тем же успехом можно было проделать, например, в том же ЛОГО. Вспомогательные алгоритмы (с аргументами или без аргументов) можно изучать как с использованием Робота, так и с использованием Черепашки.

На первых порах при составлении программ для Робота (или для Вертуна) мы, как правило, заранее имели исчерпывающую информацию об обстановке Робота. Но Робот (и Вертун) с методической точки зрения значительно богаче Черепашки, так как у него есть команды обратной связи. И, пользуясь этими командами, Человек может оперативно получить информацию об обстановке вокруг удаленного от него Робота, а ЭВМ может оперативно получать информацию при исполнении программы. Например, выполняя команду “слева свободно”, от кого бы она ни исходила, Робот сообщает порцию информации об обстановке, в которой он в данный момент находится. Другую порцию информации можно получить, спросив Робота, закрашена ли клетка, где он стоит.

При пользовании изображенным выше пультом ответы Робота человек считывает с табло в текстовом виде. Более дешевый пульт мог бы изображать ответ Робота путем зажигания лампочки (светодиода). Когда Роботом управляет ЭВМ, ответ Робота преобразуется в уровни электрических сигналов. Но суть процесса при этом одна и та же: при выполнении команды обратной связи информация не только поступает к Роботу, но и передается в обратном направлении, от Робота к ЭВМ или Человеку. Отсюда и термин обратная связь. Теоретически можно было обойтись только одной командой-вопросом из каждой пары типа: Справа свободно – Справа стена. Однако это усложнило бы запись алгоритма, так как потребовало бы введения отрицания, что на ранней стадии обучения является методически неоправданным, усложняющим правила написания и исполнения программ. Вместо естественной записи “сверху стена” пришлось бы писать что-то типа “сверху не свободно”, что предполагает некую двойственность, а вдруг там есть что-то, кроме стены ?

Что такое обстановка Робота

Обстановка Робота - это прямоугольное поле, окруженное забором и разбитое на клетки, и описывается следующими величинами: 1) размеры поля - количество строк (от 1 до 10) и количество столбцов (от 1 до 16); 2) для каждой клетки: наличие стен вокруг клетки; признак закрашенности; величина радиации (измеряется в условных единицах, может принимать любое вещественное значение от 0 до 100); температура (измеряется в градусах Цельсия, может принимать любое вещественное значение от –273 до +233). Примечание. Нижняя возможная температура - это (приблизительно) абсолютный ноль (0 градусов по шкале Кельвина). Верхняя температура - это температура, при которой горят книги (451 градус по Фаренгейту). Эта температура известна всем читателям знаменитой повести Рея Брэдбери “451 градус по Фаренгейту”.

Система команд Робота позволяет ему определить значения всех этих характеристик клетки. Кроме того, в клетке могут быть пометки, видимые наблюдателю, но недоступные “органам чувств” Робота: символы в левом верхнем и левом нижнем углах клетки, точка в правом нижнем углу клетки. Неотъемлемой частью обстановки является и сам Робот (точнее, его расположение на поле). В системе команд Робота нет команд, позволяющих запросить координаты Робота на поле.

У Робота три группы команд обратной связи. Первая группа позволяет анализировать наличие или отсутствие стен сверху, снизу, справа и слева. Вторая группа состоит из двух диаметрально противоположных команд-вопросов “клетка закрашена?” и “клетка чистая?”, позволяющих узнать, закрашена ли клетка, в которой стоит Робот.

Если команды первых двух групп выдают в качестве ответа “да” или “нет”, то команды последней группы возвращают в качестве ответа вещественное число. С помощью этих команд можно узнать, какова температура и какова радиация в клетке, в которой находится Робот. За счет команд третьей группы мир Робота становится заметно богаче. Благодаря этим командам мы можем ставить и решать более широкий набор задач по управлению Роботом и сбору информации на поле Робота. Более того, задачи о температуре и радиации на поле Робота могут заменить некоторые традиционные задачи по обработке массивов. “Оснащение” Робота “термометром” и “счетчиком Гейгера” - хороший методический подход при изучении задач, обычно формулируемых для массивов. Такие традиционные задачи по обработке массивов, как “минимальный элемент”, “индекс максимального элемента”, “сумма элементов”, “среднее арифметическое” и пр., могут быть переформулированы как задачи по сбору информации на поле Робота и получают при этом очень естественную интерпретацию.

Горизонтальный ряд из пяти клеток с заданной в каждой клетке радиацией (10, 10, 30, 20 и 40) - это точный аналог линейной таблицы вещественных чисел из пяти элементов. И почти каждую задачу по работе с линейной таблицей можно переформулировать как задачу про Робота. В такой формулировке будет более понятно, почему такая задача возникла и зачем ее нужно решать. Представим себе, что на поле Робота справа есть стена, к которой должны будут пройти люди - может быть, спасатели. Сначала необходимо разведать, насколько прохождение по коридору опасно для здоровья, каков уровень радиации. Если люди будут продвигаться с примерно постоянной скоростью, то полученная ими доза радиации окажется пропорциональной сумме уровней радиации во всех клетках прохода до стены. Поэтому анализ степени опасности этого прохода для жизни спасателей можно переформулировать как задачу подсчета суммарной радиации в клетках прохода. Это и есть задача нахождения суммы элементов таблицы, сформулированная в терминах управления Роботом. Подобным же образом можно переформулировать практически любую задачу по обработке таблиц (массивов).

Упражнение . Переформулируйте задачи “Минимальный элемент массива” и “Индекс минимального элемента массива” в терминах управления Роботом.

Итак, посмотрим, какая из нижеприведенных формулировок задачи привлекательнее для школьника: 1) найти индексы минимального элемента прямо­угольной таблицы; 2) в прямоугольнике на поле Робота найти клетку с минимальной радиацией и переместить Робота в эту клетку (для отдыха).

Первая формулировка - чисто математическая. Кому и зачем нужны эти индексы, остается далеко за рамками задачи. Вторая - более понятна и осмысленна. Хотя школьники скорее всего раньше дела с радиацией не имели, им ясно, что высокий уровень радиации - это “плохо”, что требуемая в задаче клетка - самая безопасная, и если уж Роботу нужно найти место для отдыха, то лучше выбрать самую безопасную клетку - клетку с минимальной радиацией.

Как вы заметили, в алгоритме Сумма элементов используется цикл “пока”, нами еще не введенный. Тут мы просто несколько забежали вперед. Цикл “пока” должен вводиться при обсуждении некоторой задачи (проблемный подход), например, такой, как в учебнике :

“Где-то ниже Робота на поле есть стена. Надо переместить Робота вертикально вниз до стены, т.е. установить Робота в клетку непосредственно над стеной на одной вертикали с исходным положением Робота”. Сначала можно попробовать решить эту задачу вручную. Учитель даже может нарисовать поле Робота на листе и, не показывая до поры до времени лист школьникам, выполнять их команды. Вскоре школьники поймут, что надо все время спрашивать “снизу свободно?” (или “снизу стена?”) и командовать “вниз” до тех пор, пока ниже Робота свободно.

Обычно после 10 минут такой игры каждый ученик в классе в деталях представляет себе, как именно надо командовать Роботом, чтобы решить поставленную задачу. Это понимание и есть методическая цель подобной “игры”.

Методический прием такого введения новой конструкции языка программирования Г.В. Лебедев в своих лекциях описывал так:

“Когда ученики в деталях разберутся в том, как решать поставленную выше задачу при управлении Роботом “вручную”, происходит ключевое для нашего методического приема противопоставление этой работы “вручную” и схемы программного управления.

“Замечательно! - говорит учитель. - Все разобрались, как надо управлять Роботом. Но ведь мы занимаемся не ручным управлением Роботом, а информатикой. Поэтому наша задача - написать алгоритм для ЭВМ, при выполнении которого ЭВМ прокомандует Роботом так, чтобы задача была решена. Заметьте, что расстояние от Робота до стены неизвестно, но ЭВМ, выполняя алгоритм (и не зная расстояния), должна сместить Робота к стене. Попробуйте записать такой алгоритм. Вы ведь понимаете, как нужно управлять Роботом, какие команды ЭВМ должна выдать Роботу. Так запишите это в виде алгоритма для ЭВМ”. Я еще раз обращаю ваше внимание на этот проблемный подход. Ведь практически в этом месте мы просим школьников придумать конструкцию цикла “пока”. То есть в отличие от стандартной последовательности (сначала форма записи, потом ее семантика (смысл), потом решение задач) мы сначала ставим задачу, потом разбираем, как ее решать, т.е. разбираемся со смыслом (семантикой) будущей конструкции, а потом просим учеников придумать форму записи ”.

Цикл “пока” содержательно является очень сложной конструкцией. И процесс освоения его лучше сделать наглядным. В учебнике объяснение этого цикла проводится различными способами, в том числе и с использованием блок-схемы. Наглядное объяснение работы цикла “пока” столь же важно, как и режим пошагового выполнения в “КуМире”, так как графические образы и наблюдения в процессе собственной деятельности лучше усваиваются сознанием школьника, нежели речь и математические формулы, исходящие от учителя.

Выполняет один ШАГ программы и переходит в режим ПАУЗА. При запуске в состоянии РЕДАКТИРОВАНИЕ и АНАЛИЗ “проскакивает” строки “использовать” и останавливается перед выполнением первой строки вступления основной программы (если оно есть) или перед выполнением строки со словом “алг” основного алгоритма. Выполнение команды вызова алгоритма-процедуры трактует как один ШАГ. Выводит результаты вычислений и проверок условия на поля.

Выполняется аналогично команде “ШАГ”. Отличие состоит в исполнении команды вызова алгоритма-процедуры или вычисления значения алгоритма-функции (если они представлены в рабочем окне). В этих случаях очередным шагом будет выполнение строки-заголовка вспомогательного алгоритма. В дальнейшем команда “шаг” или “ШАГ” приведет к выполнению очередного шага внутри выполняемого вспомогательного алгоритма.

Попробуем выполнить алгоритм “Шагать доупора” . Будем выполнять программу по шагам, нажимая на пиктограмму ШАГ. Нас интересует выполнение цикла “пока”. Сначала проверяется условие “впереди свободно”. Ответ “да”, значит, должно выполниться тело цикла. И Робот смещается на одну клетку вниз. Когда тело цикла закончилось, мы возвращаемся и снова проверяем условие. И так далее, пока на очередном (Упражнение : Каком по счету? ) шаге Робот упрется в стену и проверка условия даст результат “нет”. И тогда мы завершим выполнение цикла и начнем выполнять ­команды, записанные в программе после кц .

Обратите внимание, что результаты проверки условий выводятся на поля, так что после каждой проверки условия школьнику будет сразу ясно, будет ли еще раз выполняться тело цикла, или выполнение цикла будет завершено.

А если обстановка Робота иная и он еще до выполнения цикла уже стоит над стеной? Попробуем выполнить алгоритм при таких начальных условиях. Немного бояз

но, а вдруг Робот сломается? Ничего подобного. Робот не сломался, цикл завершился, так как условие “снизу свободно” при первой же проверке не соблюдается и, значит, тело цикла не выполняется ни разу. Это одна из важных особенностей выполнения цикла “пока”.

Еще одна важная особенность выполнения цикла “пока” - возможность зацикливания - бесконечного выполнения тела цикла. Допустим, мы перепутали и вместо команды “вниз” написали внутри цикла команду “закрасить”. Если ниже Робота свободно, то Робот никуда не будет перемещаться, а будет стоять на месте и до бесконечности закрашивать клетку, в которой стоит. Если запустить такую программу, то о зацикливании можно будет узнать по числу шагов, выполненных программой, которое будет быстро возрастать на наших глазах, в то время как Робот стоит на месте.

Третья, и последняя, особенность цикла “пока” состоит в том, что условие продолжения цикла в процессе выполнения тела цикла не проверяется. Опять слегка изменим алгоритм, добавив в тело цикла еще одну команду “вниз”. Пусть Робот выполняет задачу побыстрее. Как правило, учащиеся не видят ошибочность подобной программы, неверно предполагая, что условие цикла каким-то магическим образом проверяется в каждый момент выполнения тела цикла. Это, естественно, не так. Приведенный пример демонстрирует возникшую ошибку выполнения, несмотря на то что условие цикла имело (в прошедшем времени) значение “да”. Но перед вторым шагом “вниз” условие уже никто не проверял. Из-за этого и возник отказ в программе.

Условия в алгоритмическом языке. Команды “если” и “выбор”

Как правило, после освоения цикла “пока” команды “если” и “выбор” осваиваются без особых затруднений. Как обычно, введение новой команды нужно начинать, отталкиваясь от задачи. Дано: Робот где-то на поле и справа свободно. Надо: переместить Робота вниз, закрасив по пути те клетки поля, у которых справа стена.

Алгоритм получается легкой переделкой решения предыдущей задачи, нужно только добавить команду “если”.

На методический вопрос, почему конструкция “если” появляется в курсе после конструкции “пока”, можно найти ответ в “12 лекциях” Г.В. Лебедева : “Конечно, легко ввести и пояснить команду “если” на каком-нибудь примере типа “осторожного” шага: “если снизу свободно то вниз все”. Беда, на наш взгляд, состоит в том, что если с этого начать (а особенно, если ввести команду “если” до циклов), то у школьников в голове не возникает никакого (пусть не формализованного) внешнего контекста, в рамках которого написание такой команды было бы осмысленным для решения каких-то содержательных задач. После того как разобран хотя бы один пример с циклом и с “если” внутри, такой внешний контекст появляется. Тогда уже можно команду “если” изучать и без циклов - ученики представят себе обстановку, в которой нужда в такой команде возникает. Но когда этот первый пример (с циклом и “если”) разобран, в команде “если” уже нечего изучать. Другие иллюстрационные примеры просто не требуются, - нужно решать задачи. Поэтому мы считаем, что впервые команда “если” должна появиться внутри цикла”. Сложность команды “если” может заключаться только в записи условия. Можно придумать задачу для школьников - записать формально условие “Робот стоит в углу”:

(слева стена и сверху стена)

или (сверху стена и справа стена)

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

или (снизу стена и слева стена)

Команда “выбор”

Команда “выбор” - это первая “не необходимая” команда алгоритмического языка. Невозможно сформулировать задачу, которую без этой команды нельзя решить. Команда “выбор” лишь упрощает запись в ситуации, когда вариантов много. Но и в этой ситуации алгоритм вполне можно записать, ограничившись использованием только команды “если”.

“Визуальное” представление команд

Цикл “пока” можно объяснять не только школьникам, используя “КуМир” с Роботом, но и дошкольникам, используя младшего брата “КуМира” - “ПиктоМир”. Из предыдущей лекции нам знаком Вертун, который может ходить по полю, похожему на поле Робота. Вертун - интересный исполнитель, у него есть команды обратной связи: Вертун может проверить, закрашена ли клетка, на которой он стоит, и есть ли перед ним стена. У Вертуна, как и у Робота, двойной набор команд обратной связи. Но на это в “ПиктоМире” есть веские причины. Если в “КуМире” из команды Робота “справа стена” мы могли получить эквивалент команды “справа свободно” добавлением отрицания “не” внутрь команды, то при визуальном стиле программирования в “ПиктоМире” частички не не существует. А значит, двумя командами обойтись нельзя и нужны все четыре.

Изображенные на рисунке пиктограммы обозначают эти пары команд (слева направо): “клетка закрашена” (серый цвет поля); “впереди стена” (кирпичная стена); “клетка чистая” (зеленый цвет поля); “впереди свободно” (стена разрушена).

Команда “выбор”

· при условие 1: серия 1

· при условие 2: серия 2

· при условие n: серия n

· иначе серия n + 1

Ключевое слово иначе вместе с соответствующей серией команд может отсутствовать:

· при условие 1: серия 1

· при условие 2: серия 2

· при условие n: серия n

“КуМир” сначала проверяет условие 1. Если оно соблюдается, то “КуМир” выполняет команды из серии 1, после чего переходит к выполнению команд, записанных после слова все. В противном случае “КуМир” делает то же самое с условием 2 и командами из серии 2 и т.д.

Команды, записанные после слова “иначе”, выполняются в том случае, когда не соблюдено ни одно из условий.

В команде выбор всегда выполняется не более одной серии команд, даже если несколько условий окажутся истинными. Выполнение коман­ды выбор заканчивается после того, как найдено первое (по порядку следования) условие со значением да (и выполнена соответствующая серия команд).

В языке “КуМир” существует три команды контроля выполнения:

утв, дано, надо.

Формат вызова:

утв <ЛОГ ВЫРАЖЕНИЕ>

дано <ЛОГ ВЫРАЖЕНИЕ>

надо <ЛОГ ВЫРАЖЕНИЕ>

Все три команды выполняются так. Проверяется условие. Если условие не соблюдается, то “КуМир” прекращает выполнение алгоритма и сообщает, что возник отказ. Если же условие соблюдается, то выполнение алгоритма нормально продолжается так, как если бы ­команды контроля не было вовсе. Команда дано проверяет условие в начале выполнения алгоритма, команда надо - в конце выполнения алгоритма, а командой утв можно проверить условие в процессе выполнения алгоритма.

Как же можно в “ПиктоМире” использовать эти условия? Условия можно располагать в начале вспомогательных алгоритмов в специальных клетках. В синих располагается повторитель (для организации цикла N раз), а в розовых - условие выполнения алгоритма f1–f5. Как уже говорилось в лекции 3, цикл N раз помогает учащемуся экономить клетки при составлении алгоритма.

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

Действительно, если “подглядеть” обстановку Вертуна, то можно легко подсчитать, что до стены 4 шага. Другое дело, если обстановка нам не видна и мы можем узнать о ней только по обратной связи от Вертуна. Аналогично ситуации с Роботом школьнику придется спрашивать Вертуна перед шагом вперед, нет ли перед ним стены. В школьном алгоритмическом языке, когда ученики вынуждены сами придумывать конструкцию цикла “пока”, у детей все еще остается большой простор для фантазии, так как границы алгоритмического языка не видны. В “ПиктоМире” у ребенка есть только то, что он видит на экране. И условия можно разместить только в одном месте. Ему остается только это и попробовать.

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

Поясним, как работает вспомогательный алгоритм f1. Перед началом алгоритма (который содержится в 12 исполняемых клетках) выполняется команда Вертуна, находящаяся в розовом поле. Если ответ “да”, то алгоритм выполняется столько раз, сколько указано в синем поле. При этом пустые клетки пропускаются, а команда из розового поля вызывается каждый раз перед очередным циклом выполнения алгоритма f1.

Если розовое поле пусто, то ответ “да”. Если синее поле пусто, то цикл выполняется 1 раз. Фактически такой вспомогательный алгоритм был бы аналогичен следующей записи на алгоритмическом языке:

нц <синее поле> раз пока <розовое поле>

<команды в клетках алгоритма>

Но такой конструкции в алгоритмическом языке нет. При этом f1 превращается в аналог конструкции “если”, в случае пустого повторителя (пустое синее поле) или единичного повторителя, и алгоритм f1 превращается в цикл “пока”, если условие присутствует (розовое поле), а повторитель равен бесконечности.

Упражнение . Вспомните, как построить из f1 цикл N раз.

Что же побудит ребенка использовать цикл “пока” (использовать розовое поле)? Дело в том, что в “ПиктоМире” всего 7 повторителей: 1 раз, 2 раза, 3 раза, 4 раза, 5 раз, 6 раз и “до бесконечности”. С таким набором можно дойти до стены, когда до нее 1, 2, 3, 4, 5 или 6 шагов. Но что делать, когда до стены 7 шагов или так много шагов, что ребенку просто не под силу подсчитать их количество? Есть повторитель “бесконечность”, и даже если ребенок еще не освоился с этим понятием, то, перебрав немногочисленные варианты создания программ в “ПиктоМире”, он обязательно попробует и вариант с повторителем “бесконечность” в синей клетке и нужным условием в розовой клетке. Это и будет созданный ребенком (осознанно) цикл “пока”.

Графический язык “ПиктоМира” сильнее побуждает ребенка к изобретению цикла “пока”, чем алгоритмический язык “КуМира”. Дело в том, что при “возне” с “ПиктоМиром” ребенок сильно ограничен в выборе средств. “ПиктоМир” весь на ладони, а алгоритмический язык можно изучать долго. В “ПиктоМире” можно быстро перебрать все варианты программирования, а поскольку среди них есть и цикл “пока”, то удастся открыть и его. Отличие “КуМира” от “ПиктоМира” подобно отличию шахмат от шашек. Про последние известный американский писатель Эдгар Аллан По в детективном рассказе “Убийство на улице Морг” написал так:

“Между тем здесь (в шахматах. - Прим. ред.) решает внимание. Стоит ему ослабеть, и вы совершаете оплошность, которая приводит к просчету или поражению. А поскольку шахматные ходы не только многообразны, но и многозначны, то шансы на оплошность соответственно растут, и в девяти случаях из десяти выигрывает не более способный, а более сосредоточенный игрок. Другое дело шашки, где допускается один только ход с незначительными вариантами; здесь шансов на недосмотр куда меньше, внимание не играет особой роли и успех зависит главным образом от сметливости. ...Очевидно, здесь (при равных силах) победа зависит от удачного хода, от неожиданного и остроумного решения 6 ”.

Существовала и более глубокая причина, по которой мы наделили Робота диаметрально противоположными парами команд-вопросов. Когда-то в алгоритмическом языке нельзя было размещать частицу не внутри имени команды. В те времена из-за этого пришлось бы использовать полностью нечитаемые с точки зрения русского языка выражения типа “не клетка закрашена” или “не сверху свободно”. В современной версии языка подобные выражения записываются существенно более нормально: “клетка не закрашена”, “сверху не свободно”.

Кушниренко А.Г., Лебедев Г.В., Сворень Р.А. Основы информатики и вычислительной техники. М.: Просвещение, 1990, 1991, 1993, 1996.

К сожалению, назвать алгоритм “Шагать до упора” в “КуМире” нельзя, так как “до” является ключевым словом языка.

12 лекций о том, для чего нужен школьный курс информатики и как его преподавать: А.Г. Кушниренко, Г.В. Лебедев. // Методическое пособие. М.: Лаборатория базовых знаний, 2000.

Знакомство с программой Кумир осваение азов программирования.

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

При изучении одного из наиболее трудных разделов информатики «алгоритмизация и программирование».

Цель разработки :

Скачать:


Предварительный просмотр:

Методическая разработка по информатике.

Тема: «Исполнитель Робот в программе КуМир на уроках информатики »

учитель технологии «Информатика и ИКТ»

Пояснительная записка

Цель разработки : изучить возможности программирования на примере конкретного исполнителя Робот с использованием среды КУМИР; дать практические навыки работы с исполнителем.

Методическая разработка составлена для проведения уроков информатики Практика на компьютере : работа с учебным исполнителем алгоритмов; составление линейных, ветвящихся и циклических алгоритмов управления исполнителем; составление алгоритмов со сложной структурой; использование вспомогательных алгоритмов (процедур, подпрограмм).

Учащиеся должны знать:

  • что такое исполнитель; СКИ Робота, среду исполнителя Робот;
  • что такое алгоритм; в чем состоят основные свойства алгоритма;
  • способы записи алгоритмов: блок-схемы, учебный алгоритмический язык; основные алгоритмические конструкции: следование, ветвление, цикл; структуры
  • алгоритмов; ⇒ назначение вспомогательных алгоритмов; технологии построения сложных алгоритмов:

Учащиеся должны уметь:

  • понимать описания алгоритмов на учебном алгоритмическом языке;
  • выполнить трассировку алгоритма для известного исполнителя;
  • составлять линейные, ветвящиеся и циклические алгоритмы управления исполнителя Робот; выделять подзадачи; определять и использовать вспомогательные алгоритмы.

Занятие 1 (2 часа) Урок 1.

Исполнитель Робот. Система команд исполнителя.

План урока.

  1. Описание СКИ исполнителя, среды исполнителя.

2.Разбор типичных алгоритмов Робота.

Ход урока.

Рассмотрим описание исполнителя.

Среда исполнителя : Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки.

СКИ Робота : простые команды: вверх, вниз, влево, вправо, закрасить.

Команды логические: (проверки условия)

сверху свободно снизу свободно

слева свободно справа свободно.

Логические связки: И,НЕ, ИЛИ:

Пример:(Не слева свободно) или (не справа свободно)

Команда ветвления : команда цикла:

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

Серия команд серия команд

всё кц

(В КИМах 2009 года команды Робота отличались от привычных детям, что приводило к путанице :)

Команда ветвления : команда цикла:

Если условие то нц пока условие делать

Серия команд серия команд

конец конец

Общий вид окна программы Кумир. Графическая среда Робота:

В КИМах демонстрационного варианта 2010 года формат команд изменен на привычный

Порядок создания алгоритма:

1.Командами Инструменты -Редактировать стартовую обстановку нарисовать на поле Робота стены и установить Робота в начальное положение.

2.Командами Робот- Сменить стартовую обстановку сохранить новую обстановку.

3.Командами Вставка- Использовать Робот указать исполнителя.

4.В окне документа записать алгоритм, используя меню Вставка.

5.Командами Выполнение –выполнить непрерывно (или по шагам) запустить алгоритм.

6.Рассмотреть результат выполнения алгоритма и при необходимости произвести его отладку.

Занятие 1 (2 часа) Урок 2.

Практическая работа « Составление линейных алгоритмов».

Задания: 1.Робот в произвольной точке поля. Закрасить клетку сверху, снизу и справа от исходного положения.

  1. Робот в произвольной точке поля. Передвинуть Робот на 4 клетки вправо, закрасив их.
  2. Создайте новую стартовую обстановку, нарисовав на поле квадрат со стороной 4 клетки. Сохраните обстановку как стартовую.
  3. Создайте новую стартовую обстановку, нарисовав на поле коридор с проходами в стенах. Сохраните обстановку как obst2.fil. Смените стартовую обстановку на вновь созданную.

Занятие 2 (2 часа) Урок 1.

Тема : Ветвление и последовательная детализация алгоритма.

Разбор задач КИМов с использованием исполнителя Робот.

использовать Робот

алг ким 2009

нач

если не снизу свободно

то вправо

все

если не снизу свободно

то вправо

все

если не снизу свободно

то вправо

все

кон

использовать Робот

алг ким 2010

нач

если не снизу свободно

то вправо

все

если не снизу свободно

то вправо

все

если не снизу свободно

то вправо

все

кон

Пр. раб. №14. Составление и отладка алгоритмов ветвления

Задания. См. Приложение.

Занятие 3. Циклические алгоритмы. Урок 1-2

Цель: раскрыть сущность понятия цикла в алгоритмах, показать формы записи циклов алгоритмах, дать навыки создания и записи циклических алгоритмов.

Пр. раб. №15. Составление и отладка циклических алгоритмов

1.Составьте алгоритм, закрашивающий все внутренние клетки, прилегающие к стене.

использовать Робот

алг

нач

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

закрасить; вправо

кц

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

закрасить; вниз

кц

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

закрасить; влево

кц

кон

2.Составить алгоритм, закрашивающий все клетки между Роботом и стеной. Расстояние до стены неизвестно.

использовать Робот

алг

нач

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

вправо; закрасить

кц

кон

3.Составить алгоритм, закрашивающий все клетки, находящиеся между двумя стенами.

использовать Робот

алг уч3

нач

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

вправо

если (не сверху свободно) и (не снизу свободно)

то

закрасить

все

кц

кон

4.Составить алгоритм, закрашивающий все клетки вокруг прямоугольной стены.

алг уч4

нач

закрасить;вверх

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

закрасить;вверх;

кц

закрасить;вправо

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

закрасить;вправо;

кц

закрасить;вниз

нц пока не слева свободно

закрасить;вниз;

кц

закрасить;влево

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

закрасить; влево;

кц

кон

использовать Робот

алг уч5

нач

вправо

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

закрасить; вправо

кц

закрасить; вниз

нц пока слева свободно

закрасить; влево

кц

нц пока не слева свободно

закрасить; вниз

кц

закрасить;влево;закрасить; вверх;

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

закрасить; вверх

кц

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

закрасить; влево

кц

кон

Занятие 4 Урок 1

Вспомогательные алгоритмы .

Цель: ввести понятие основного и вспомогательного алгоритма; объяснить правила использования вспомогательного алгоритма; разобрать примеры алгоритмов с использованием вспомогательного.

План урока

1.Ввод новых терминов (основного и вспомогательного алгоритма, вызова) и объяснение новых понятий.

2.Разбор примеров решения задач с применением вспомогательного алгоритма.

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

В процессе решения задачи каждый вспомогательный алгоритм может при необходимости быть разбит на более мелкие вспомогательные алгоритмы.

Команда выполнения вспомогательного алгоритма называется вызовом и записывается в теле основного алгоритма.

Один и тот же алгоритм может рассматриваться как основной и вспомогательный по отношению к другим алгоритмам. В алгоритмическом языке сначала записывается основной алгоритм, ниже подряд записываются вспомогательные.

Задача1:

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

Решение

Разбор на доске:

Задача2. Робот находится в верхнем левом углу поля. Стен и закрашенных клеток нет. Составьте алгоритм, который закрашивает в шахматном порядке квадрат 8 х 8. Конечное положение Робота может быть произвольным.

Занятие 4 Урок 2

Практическая работа на ПК «Решение задачи с использованием вспомогательных алгоритмов» .

Цель : привить практические навыки построения алгоритмов методом последовательного уточнения.

План урока

1.Задание полностью проходит за ПК. Учащиеся получают задания и выполняют их в программной среде Кумир. Результаты Работы сохраняются в виде файлов для последующей проверки.

Задача1 . Робот находится в нижнем левом углу поля. Стен и закрашенных клеток нет. Составьте алгоритм, который закрашивает 6 вертикальных полос одинаковой длины в 6 клеток. Конечное положение Робота может быть произвольным.

Задача2 .Используя вспомогательные, составьте алгоритм для закрашивания клеток, образующих число 1212.

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

Занятие 5 Урок 1-2

Контрольная работа

«Составление алгоритма в среде исполнителя Робот».

Цель: проверить полученные знания по созданию и умению анализировать алгоритмы в программной среде Кумир.

Задания для контрольной работы делятся по уровням сложности и включает в себя 3 задачи с исполнителем Робот (1 и 2 задача –на ветвление и циклы, 3 задача с- на использование вспомогательного алгоритма.) Тексты заданий приводятся в приложении.

Исходные и конечные обстановки и созданные алгоритмы записываются в виде файла.

Оценка выставляется соответственно уровню сложности задания. Ученик вправе сам выбрать тип задания.

Алгоритм рисование спирали:

использовать Чертежник
алг
нач
. сместиться в точку (3,3)
. опустить перо
. виток(1); виток(3); виток(5); виток(7); виток (9)
. поднять перо
кон
алг виток(арг вещ а)
нач
. сместиться на вектор (а, 0)
. сместиться на вектор (0, -а)
. сместиться на вектор (-а-1,0)
. сместиться на вектор (0, а+1)
кон

Обратите внимание на блок команд:

Виток(1); виток(3); виток(5); виток(7); виток (9)

Вспомогательный алгоритм «виток(арг вещ а) » вызывается 5 раз, но вызывать его в цикле «N раз» нельзя, т. к. каждый раз он вызывается с разными значениями аргумента.

Но можно заметить, что значения аргумента изменяются от 1 до 9, каждый раз увеличиваясь на 2. Значит, нам может помочь цикл со счётчиком . Так же такой цикл называется цикл «для» .

Цикл со счётчиком - цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз.

Обычно этот цикл применяется в том случае, если нужно перебрать какие-то значения и для каждого из них выполнить какие-то действия.

Общий вид цикла со счётчиком:

нц для <счетчик> от <нач. знач.> до <кон. знач.> [шаг <знач.>]
<тело цикла (последовательность команд)>
кц

Указывать шаг необязательно, если он не указан, то считается равным единице.

Теперь алгоритм «спираль» можем переписать таким образом:

использовать Чертежник
алг
нач
. сместиться в точку (3,3)
. опустить перо
. цел размер
. нц для размер от 1 до 9 шаг 2
. . виток(размер)
. кц
. поднять перо
кон
алг виток(арг вещ а)
нач
. сместиться на вектор (а, 0)
. сместиться на вектор (0, -а)
. сместиться на вектор (-а-1,0)
. сместиться на вектор (0, а+1)
кон

В этом примере переменная-счетчик «размер» будет получать значения: 1, 3, 5, 7, 9. Т.е. цикл выполниться 5 раз. Для каждого значения переменой «размер» будет один раз выполнено тело цикла, в нашем примере это вызов вспомогательного алгоритма «виток(арг вещ а) ».

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

Блок-схема такого алгоритма выглядит так:

Рассмотрим еще один пример:

Давайте для начала вспомним и напишем вспомогательный алгоритм, который будет рисовать квадрат в точке (x, y). Для разнообразия для рисования будем использовать команду сместиться на вектор (в предыдущих примерах смещались в точку).

Алгоритм может быть таким:

алг квадрат(арг вещ x, y, сторона)
нач
. сместиться в точку (x, y)
. сместиться на вектор (-сторона/2, сторона/2)
. опустить перо
. сместиться на вектор (сторона, 0)
. сместиться на вектор (0, -сторона)
. сместиться на вектор (-сторона, 0)
. сместиться на вектор (0, сторона)
. поднять перо
кон

Используя такой вспомогательный алгоритм, нарисуем такой рисунок:

Для этого воспользуемся циклом «для». Изучите пример программы:

использовать Чертежник
алг рисунок1
нач
. цел z
. нц для z от 2 до 10 шаг 2
. . квадрат(0, 0, z)
. кц
кон
алг квадрат(арг вещ x, y, сторона)
нач
. сместиться в точку (x, y)
. сместиться на вектор (-сторона/2, сторона/2)
. опустить перо
. сместиться на вектор (сторона, 0)
. сместиться на вектор (0, -сторона)
. сместиться на вектор (-сторона, 0)
. сместиться на вектор (0, сторона)
. поднять перо
кон

В этом примере переменная «z» будет получать значения: 2, 4, 6, 8, 10. Т.е. цикл выполниться 5 раз. Для каждого значения «z» будет один раз выполнено тело цикла, в нашем примере это вызов вспомогательного алгоритма квадрат.

До первого использования переменной ее нужно описать, т. е. указать какого она типа. Это делается в нашей программе в строчке «цел z», т. е. мы указываем что будем использовать переменную «z» для хранения целых чисел, и следовательно для нее нужно выделить память. Подробнее о переменных мы будет говорить немного позднее.

Как вы обратили внимание в алгоритме использовались не только числа, но и алгебраические выражения , формулы, например «-сторона/2». В информатике эти выражения называются арифметическими . Правила языка позволяют при записи алгоритмов всюду, где можно написать число, написать и произвольное арифметическое выражение.