Какой цикл изучают после пока в кумире. Ветвление в языке кумир

Программы 29.03.2024
Программы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Скачать:


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ход урока

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 после выполнения операторов:

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

Рассмотрим задачу:

На вход программе поступает натуральное число, не превосходящее 2 * 10 9 . Определите сумму цифр этого числа.

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

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

Цикл «пока»

Одной из таких конструкций в языке программирования Кумир является цикл пока . Этот цикл, именуемый часто цикл с предусловием , имеет следующий формат записи:

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

Условие, записанное после служебного слова пока , представляет собой логическое выражение.

Выполнение цикла происходит следующим образом:

  1. Вычисляется значение логического выражения.
  2. Если результат вычисления равен нет , то выполнение цикла заканчивается, и Кумир переходит к первой команде после цикла пока . Если результат вычисления да , то выполняется тело цикла, после чего снова происходит вычисление значения выражения с новым значением.

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

Теперь применим цикл пока для решения нашей задачи

  • ввод num
  • нц пока num > 0
  • сумма:= сумма + mod(num, 10 )
  • num:= div(num, 10 )
  • вывод сумма

Итак, в ходе каждого исполнения тела цикла к величине сумма прибавляется последняя цифра числа, затем, число уменьшается в 10 раз. Очевидно, что в конце концов num станет равным 0, после чего выполнение цикла закончится.

Цикл «до тех пор»

В Кумире существует еще один вариант цикла с условием, получивший название цикл до тех пор , который имеет следующий формат:

  • тело_цикла
  • кц при условие

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

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

  1. Выполняется тело цикла
  2. Вычисляется значение логического выражения. Если результат вычисления равен нет , то снова начинает выполняться тело цикла и т. д.. Если результат вычисления да , то цикл заканчивается, и Кумир переходит к выполнению следующей команды после цикла.

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

{Фрагмент кода программы}

  • ввод num
  • если num 0
  • то k:= k + 1
  • кц при num = 0
  • вывод k

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

Рекомендуем почитать

Наверх