Кумир условия. Исполнитель Робот. Циклы. Условно исполняемый код

Кумир условия. Исполнитель Робот. Циклы. Условно исполняемый код

23.06.2020
Управление исполнителем Робот в системе КУМИР

Робот существует в определенной обстановке (прямоугольном клетчатом поле). Между некоторыми клетками поля могут быть расположены стены. Некоторые клетки могут быть закрашены (рис. 3.11).

Робот занимает ровно одну клетку поля.

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

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

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

О
шибки: 1 синтаксические; 2. логические

Описания обстановок хранятся в текстовых файлах специального формата (формат.fil).

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

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

Порядок работы:


  1. Задать стартовую обстановку по условию задачи:
Меню Инструменты → Сменить стартовую обстановку Робота (нарисовать обстаковку по условию задачи, дать имя, сохранить в Личной папке)

2. Указать Исполнителя:

Меню Вставка →Использовать Робот

3. Написать алгоритм решения задачи.

4. Выполнить алгоритм (Меню Выполнение →Выполнить непрерывно /F9)

Система команд исполнителя Робот в системе КУМИР


Команда

Действие

вверх

Робот перемещается на 1 клетку вверх

вниз

Робот перемещается на 1 клетку вниз

влево

Робот перемещается на 1 клетку влево

вправо

Робот перемещается на 1 клетку вправо

закрасить

Робот закрашивает клетку, в которой находится

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

Робот проверяет выполнение соответствующего простого условия

слева свободно



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



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



клетка закрашена



клетка чистая



Циклические алгоритмы

Цикл – организация повторения действий, пока верно некоторое условие.

Тело цикла – набор повторяемых действий.

Условие – логическое выражение (простое или сложное (составное))
Типы циклов:

1.Цикл «Повторять n раз» 2. Цикл «Пока»
нц n раз нц пока
. . Тело цикла. . Тело цикла
кц кц

Пример: нц пока справа свободно


Общий вид цикла «Повторять n раз:

ПОВТОРИТЬ n РАЗ

КОНЕЦ
кц

Общий вид цикла «пока»:

ПОКА ДЕЛАТЬ

КОНЕЦ
Составные условия образуются из одного или нескольких простых условий и служебных слов И, ИЛИ, НЕ.


Составное условие А И В (где А, В - простые условия), выполнено, когда выполнено каждое из двух входящих в него простых условий.

Пусть А - сверху свободно, В - справа свободно, тогда составное условие А И В - сверху свободно И справа свободно.


Составное условие А ИЛИ В выполнено, когда выполнено хотя бы одно из двух входящих в него простых условий: сверху свободно ИЛИ справа свободно
Составное условие НЕ А - выполнено, когда не выполнено условие А.

Пример: Пусть А – клетка закрашена (простое условие).

Проверка составного условия НЕ А:

а) А - выполнено, НЕ А (НЕ закрашено) - не выполнено.

б) А - не выполнено, НЕ А (НЕ закрашено) - выполнено.


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

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

Общий вид команды ЕСЛИ:

ЕСЛИ ТО ИНАЧЕ

КОНЕЦ

В языке КУМИР:

Полное ветвление: Неполное ветвление:
если то если то

иначе

все все

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

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

Вопросы и задания

1. Приведите все алгоритмы из трех команд, которые переместят Робота из исходного положения в клетку Б.

Существует ли для этой задачи алгоритм, при выполнении которого Робот делает:

а) два шага; б) четыре шага; в) пять шагов; г) семь шагов?


  1. Петя составил алгоритм, переводящий Робота из клетки А в клетку Б с закрашиванием каких-то клеток. Что должен сделать Коля с этим алгоритмом, чтобы получить алгоритм, переводящий Робота из Б в А и закрашивающий те же клетки?


7. Известны два вспомогательных алгоритма Робота

Нарисуйте, что получится при выполнении Роботом следующих основных алгоритмов:


а)

нц 5 раз


узор_1

вправо; вправо;


б)

нц 7 раз


узор_2

вправо; вправо


в)
вправо; вправо; вправо

вверх; вверх

вправо; вправо; вправо

вниз; вниз


г)
вправо; вправо
вправо; вправо

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



9. Известно, что где-то правее Робота есть стена. Составьте алгоритм, под управлением которого Робот закрасит ряд клеток до стены и вернется в исходное положение.

10. Известно, что где-то правее Робота есть закрашенная клетка.

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

11. Известно, что Робот находится рядом с левым входом в горизонтальный коридор.

12. Известно, что Робот находится где-то в горизонтальном коридоре. Ни одна из клеток коридора не закрашена.

Составьте алгоритм, под управлением которого Робот закрасит все клетки этого коридора и вернется в исходное положение.


13. В ряду из десяти клеток правее Робота некоторые клетки закрашены.

Составьте алгоритм, который закрашивает клетки:

а) ниже каждой закрашенной клетки;

б) выше и ниже каждой закрашенной клетки.


14. Что можно сказать о правильности следующего фрагмента алгоритма?

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

ЕСЛИ справа свободно ТО

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

к
ц

15. Напишите программу, с помощью которой Робот сможет попасть в клетку Б во всех трех лабиринтах.


16. Напишите программу, следуя которой Робот сможет пройти по коридору от левого нижнего угла поля к правому верхнему. Коридор имеет ширину одна клетка и тянется в направлении слева-снизу вправо-вверх. Пример возможного коридора изображен на рисунке.

З

адачи ГИА


  1. Коридор1. Робот находится где-то в вертикальном коридоре. Ни одна из клеток коридора не закрашена. Составить алгоритм, под управлением которого Робот закрасит все клетки этого коридора и вернется в исходное положение.

  1. К
    Надо

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

Возможный вариант начального расположения Робота приведён на рисунке (Робот обозначен буквой «Р»)

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


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


Надо

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

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



  1. На бесконечном поле имеется длинная вертикальная стена. Длина стены неизвестна. Робот находится в одной из клеток, расположенной непосредственно справа от стены. Начальное положение робота также неизвестно. Одно из возможных положений робота приведено на рисунке (робот обозначен буквой «Р»):Напишите для работа алгоритм, закрашивающий все прилегающие к стене клетки: слева, начиная с верхней не закрашенной и через одну; справа, начиная с нижней закрашенной и через одну. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведенного выше рисунка робот должен закрасить следующие клетки (см. рисунок): Конечное расположение робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера стены и любой допустимой начальной позиции робота. При исполнении алгоритма Робот не должен разрушиться.


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


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

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



Р

  1. На бесконечном поле имеется длинная вертикальная стена. Длина стены неизвестна. Робот находится в одной из клеток, расположенной непосредственно слевав от стены. Начальное положение робота также неизвестно. Одно из возможных положений робота приведено на рисунке (робот обозначен буквой «Р»):
Напишите для работа алгоритм, закрашивающий все прилегающие к стене клетки:

  • слева все;

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

B
1102_ГИА2011

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

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


В
1103_ГИА_2011


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

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

Карточки-задания

    Найдите среди n -целых чисел вводимых с клавиатуры количество отрицательных

    Дано два произвольных числа. Пока их произведение меньше 100, увеличивать каждое число на 2 и вывести конечные числа на монитор

    Последовательно вводятся n -целых чисел. Найти количество пятерок в последовательности

    Последовательно вводятся n -целых чисел. Найти разницу между максимальным и минимальным значениями данных чисел

    Найдите среди n -целых чисел вводимых с клавиатуры количество отрицательных

    Дано два произвольных числа. Пока их произведение меньше 100, увеличивать каждое число на 2 и вывести конечные числа на монитор

    Последовательно вводятся n -целых чисел. Найти количество пятерок в последовательности

    Последовательно вводятся n -целых чисел. Найти разницу между максимальным и минимальным значениями данных чисел

    Найдите среди n -целых чисел вводимых с клавиатуры количество отрицательных

    Дано два произвольных числа. Пока их произведение меньше 100, увеличивать каждое число на 2 и вывести конечные числа на монитор

    Последовательно вводятся n -целых чисел. Найти количество пятерок в последовательности

    Последовательно вводятся n -целых чисел. Найти разницу между максимальным и минимальным значениями данных чисел

    Найдите среди n -целых чисел вводимых с клавиатуры количество отрицательных

    Дано два произвольных числа. Пока их произведение меньше 100, увеличивать каждое число на 2 и вывести конечные числа на монитор

    Последовательно вводятся n -целых чисел. Найти количество пятерок в последовательности

    Последовательно вводятся n -целых чисел. Найти разницу между максимальным и минимальным значениями данных чисел

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

Если вам больше нравится информация в формате видеоуроков, то на сайте есть видеоурок

У любого исполнителя должна быть система команд (СКИ система команд исполнителя ). Система команд исполнителя — совокупность всех команд, которые может выполнить исполнитель. В качестве примера рассмотрим дрессированную собаку. Она умеет выполнять некоторые команды — «Сидеть», «Лежать», «Рядом» и т. п. Это и есть ее система команд.

Простые команды Робота

У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота . Всего их 5:

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

Результат выполнения этих команд понятен из их названия:

  1. вверх — переместить Робота на одну клетку вверх
  2. вниз — переместить Робота на одну клетку вниз
  3. влево — переместить Робота на одну клетку влево
  4. вправо — переместить Робота на одну клетку вправо
  5. закрасить — закрасить текущую клетку (клетку в которой находится Робот).

Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):

  • вверх — Escape, Up (стрелка вверх)
  • вниз — Escape, Down (стрелка вниз)
  • влево — Escape, Left (стрелка влево)
  • вправо — Escape, Right (стрелка вправо)
  • закрасить — Escape, Space (пробел)

Обратите внимание, что набирать нужную комбинацию горячих клавиш нужно не привычным нам способом! Мы привыкли нажимать клавиши одновременно, а здесь их нужно нажимать последовательно . К примеру, чтобы ввести команду вверх, нужно нажать Escape, отпустить ее и после этого нажать стрелку вверх. Это нужно помнить.

Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!

Запускаем Кумир, его. Можно начинать писать программу? Конечно нет! Мы же не ! Делаем это. Предлагаю использовать вот такую:

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

Удаляем символ «|» и называем наш алгоритм «Квадрат»

Предлагаю рисовать квадрат, двигаясь по часовой стрелке. Для начала закрасим текущую клетку, дав команду закрасить . Потом делаем шаг вправо и опять закрашиваем клетку. И еще раз шаг вправо и закрасить.

Попробуем запустить программу и посмотреть что же получилось. Для запуска нажимаем F9 или же кнопку на панели инструментов

В результате мы должны увидеть вот такую картину

Если такое окно Робота у вас не появилось, то на панели инструментов щелкните «Показать окно Робота » или в меню Робот выберите пункт «Показать окно Робота «. Продолжаем дальше.

Теперь мы будем двигаться вниз и закрашивать правую сторону квадрата:

вниз

закрасить

вниз

закрасить

Потом пойдем влево, закрашивая нижнюю границу квадрата

влево

закрасить

влево

закрасить

У нас осталась одна незакрашенная клетка. Закрасим ее

вверх

закрасить

Все готово! В итоге наша программа выглядит так:

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

алг Квадрат

нач

закрасить

вправо

закрасить

вправо

закрасить

вниз

закрасить

вниз

закрасить

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

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

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

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

Скачать:


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

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

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

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

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

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

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

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

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

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

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

Занятие 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 задача с- на использование вспомогательного алгоритма.) Тексты заданий приводятся в приложении.

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

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

Лекция 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.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows