Как составить вспомогательный алгоритм в кумире

Алгоритмические конструкции

в Кумир

Алгоритм на языке КуМир записывается так:

алг квадрат

нач

  • опустить перо

  • сместиться на вектор (0,2)

  • сместиться на вектор (2,0)

  • сместиться на вектор (0,-2)

  • сместиться на вектор (-2,0)

  • поднять перо

кон

Без этой конструкции или за пределами ее программа не может выполнить алгоритм.

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

использовать ИМЯ_ИСПОЛНИТЕЛЯ (слово использовать с маленькой буквы, имя исполнителя с заглавной буквы).

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

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

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

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

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

Пример программы со вспомогательным алгоритмом

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

алг забор | Основной алгоритм

нач

звено | Обращение к вспомогательному алгоритму

звено

звено

звено

звено

кон

алг звено |Вспомогательный алгоритм

нач

вперед(50)

вправо(45)

вперед(15)

вправо(90)

вперед(15)

вправо(45)

вперед(50)

вправо(180)

кон

Метод последовательной детализации

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

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

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

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

Описанный метод называется сборочным программированием.

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

Типы алгоритмических структур

Следование — алгоритмическая конструкция, отображающая естественный, последовательный порядок действий. Алгоритмы, в которых используется только структура «следование», называются линейными алгоритмами.

Графическое представление алгоритмической конструкции «следование» приведено на рисунке справа.

Пример программы (линейный алгоритм)

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

алг закрашивание клетки

нач

  • вниз

  • вправо

  • влево

  • вверх

  • закрасить

кон

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

При выполнении команды если КуМир сначала проверяет условие, записанное между если и то. При соблюдении этого условия выполняется события 1, в противном случае — события 2 (если они есть), после чего КуМир переходит к выполнению команд, записанных после слова все. Если условие не соблюдается, а события 2 вместе с иначе отсутствует, то КуМир сразу переходит к выполнению команд, записанных после слова все.

Графическое представление и общий вид алгоритмической конструкции «ветвление» приведено на рисунке справа.

неполная форма ветвление (обход)

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

В зависимости от способа организации повторений различают три типа циклов:

    1. цикл с заданным числом повторений;

    2. цикл с заданным условием продолжения работы;

    3. цикл с заданным условием окончания работы.

Цикл с заданным числом повторений

Цикл со счётчиком (РАЗ) — цикл, в котором указывается количество повторений тела цикла.

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

Цикл с заданным условием продолжения работы

Цикл с предусловием (ПОКА) — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно).

Цикл с заданным условием окончания работы

Цикл с постусловием (ДО) — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз.

Пример программы (следование)

Пример программы (ветвление полное)

Пример программы (ветвление обход)

Пример программы (цикл РАЗ)

Пример программы (цикл ДЛЯ)

Пример программы (цикл ПОКА)

Алгоритм-процедура в Кумире

Вспомогательные алгоритмы в Кумир

Часто для упрощения решения исходной задачи, ее разбивают на подзадачи — более простые, с точки зрения программирования, части. Алгоритмы, в которых решаются подзадачи, в языке Кумир называются вспомогательными (или подчиненными) алгоритмами.

Применение вспомогательных алгоритмов в программировании дает ряд преимуществ:

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

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

Алгоритмы-процедуры

Формат описания алгоритма-процедуры в общем виде можно представить в следующем виде:

  • алг имя алгоритма ()
  • нач
  • кон

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

  • арг – описания параметров-аргументов;
  • рез – описания параметров-результатов;
  • аргрез (или арг рез) – описания параметров, являющихся одновременно и аргументами, и результатами.

Рассмотрим пример вспомогательного алгоритма определения суммы цифр целого двухзначного числа (СЦДЧ):

  • алг СЦДЧ (арг цел num, рез цел S)
  • нач
  • S := div (num, 10) + mod (num, 10)
  • кон

В заголовке алгоритме СЦДЧ описывается два параметра: первый — параметр-аргумент, принимающий число, сумму цифр которого нужно определить, второй — параметр-результат, принимающий искомую сумму.

Команда вызова алгоритма-процедуры

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

  • имя алгоритма ()

Параметры вызова (если они есть) называются формальными параметрами.

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

Так, алгоритм, в котором содержится команда вызова алгоритма СЦДЧ может выглядеть, например, следующим образом:

  • цел num, S
  • ввод num
  • СЦДЧ (num, S)
  • вывод S

Изучаем Алгоритмику  Мой КуМир Исполнитель Робот Вспомогательные алгоритмы Метод  последовательного уточнения Исполнитель Робот  Вспомогательные алгоритмы

Изучаем Алгоритмику Мой КуМир

Исполнитель Робот

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

Метод последовательного уточнения

Исполнитель Робот Вспомогательные алгоритмы

Исполнитель Робот Исполнитель: Робот. Среда исполнителя: Робот работает на клетчатом поле (между клетками могут быть расположены стены) и умещается целиком в одной клетке. Попытка переместить Робота через стену приводит к поломке Робота. Возможное исходное положение Робота на клетчатом поле обозначается ромбиком. Окно Робота открывается с помощью команды меню Окна → Робот. Размеры поля устанавливается в пункте меню Робот → Новая обстановка. Редактировать стартовую обстановку (исходное положение, дополнительные стены и др.) можно командой меню Робот → Редактировать обстановку. Обстановку можно сохранить в файл (Робот → Сохранить обстановку), а затем открыть (Робот → Загрузить обстановку).

Исполнитель Робот

Исполнитель: Робот.

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

Окно Робота открывается с помощью команды меню ОкнаРобот.

Размеры поля устанавливается в пункте меню РоботНовая обстановка.

Редактировать стартовую обстановку (исходное положение, дополнительные стены и др.) можно командой меню Робот → Редактировать обстановку.

Обстановку можно сохранить в файл (Робот → Сохранить обстановку), а затем открыть (Робот → Загрузить обстановку).

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

Исполнитель Робот

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

Команда

Комментарии

вверх

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

вниз

вправо

влево

закрасить

Робот закрашивает текущую клетку

Программа для Робота должна начинаться с команды под­ключения исполнителя:

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

Исполнитель Робот Задание 1. Создайте программу, по которой Робот напишет своё имя. использовать Робот  алг Слово  нач  . нц 4 раз  . . закрасить; вниз  . кц  . вправо  . вверх; вверх  . нц 2 раз  . . вверх; закрасить  . кц  . |. . . . . . . . .  кон

Исполнитель Робот

Задание 1. Создайте программу, по которой Робот напишет своё имя.

использовать Робот алг Слово нач . нц 4 раз . . закрасить; вниз . кц . вправо . вверх; вверх . нц 2 раз . . вверх; закрасить . кц . |. . . . . . . . . кон

Исполнитель Робот Задание 2. Для каждого рисунка запишите программу для Робота.

Исполнитель Робот

Задание 2. Для каждого рисунка запишите программу для Робота.

Вспомогательные алгоритмы Алгоритмический язык КуМир допускает использование вспомогательных алгоритмов ( про­цедур ). Оформляется такой алгоритм как обыч­ный. Вызов вспомогательного алгоритма из ос­новной программы осуществляется по его имени. Процедура — самостоятельная часть програм­мы, имеющая оригинальное имя, по которому её можно вызывать из любой части программы. Основная программа всегда одна, в программе на языке КуМир она располагается выше процедур. Процедуры используют в случаях, когда одни и те же дейст­вия необходимо выполнить несколько раз в разных местах про­граммы, возможно, при различных исходных данных. Также в качестве процедуры целесообразно выделять и однократно вы­полняемые действия, когда они представляют собой логически независимую часть программы, это позволяет сложную задачу разбить на несколько простых.

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

Алгоритмический язык КуМир допускает использование вспомогательных алгоритмов ( про­цедур ). Оформляется такой алгоритм как обыч­ный. Вызов вспомогательного алгоритма из ос­новной программы осуществляется по его имени.

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

Основная программа всегда одна, в программе на языке КуМир она располагается выше процедур.

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

Вспомогательные алгоритмы Любую картинку на поле Робота можно мысленно заключить в прямоугольник. При создании процедуры удобно начинать ри­совать из верхнего левого угла такого прямоугольника и в этой же точке заканчивать. Тогда вы всегда будете знать, где у вас бу­дет находиться Робот после очередного вызова процедуры. Задание 1. Составьте программу Квадрат , по которой Робот закрашивает клетки согласно рисунку и возвращается в исход­ное положение.

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

Любую картинку на поле Робота можно мысленно заключить в прямоугольник. При создании процедуры удобно начинать ри­совать из верхнего левого угла такого прямоугольника и в этой же точке заканчивать. Тогда вы всегда будете знать, где у вас бу­дет находиться Робот после очередного вызова процедуры.

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

Вспомогательные алгоритмы Задание 2. Используя программу Квадрат  как вспомогатель­ный алгоритм, составьте алгоритм Главный , по которому Робот закрасит клетки согласно рисунку. использовать Робот алг Главный | основной алгоритм нач . Квадрат | вызов процедуры . вправо ; вправо | переход на . вниз ; вниз | новое место . Квадрат | вызов процедуры . нц 6 раз | переход на . . вправо | новое место . кц . | Допишите строки кон  алг Квадрат | процедура Квадрат нач . | Допишите строки кон

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

Задание 2. Используя программу Квадрат как вспомогатель­ный алгоритм, составьте алгоритм Главный , по которому Робот закрасит клетки согласно рисунку.

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

алг Главный | основной алгоритм

нач

. Квадрат | вызов процедуры

. вправо ; вправо | переход на

. вниз ; вниз | новое место

. Квадрат | вызов процедуры

. нц 6 раз | переход на

. . вправо | новое место

. кц

. | Допишите строки

кон

алг Квадрат | процедура Квадрат

нач

. | Допишите строки

кон

Вспомогательные алгоритмы Задание 3. Составьте программу Фрагмент , по которой Робот закрашивает один элемент рисунка (выделен пунктирной линией). Используя эту программу в качестве процедуры, составьте алгоритм, по которому Робот на­рисует нужный орнамент.

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

Задание 3. Составьте программу Фрагмент , по которой Робот закрашивает один элемент рисунка (выделен пунктирной линией). Используя эту программу в качестве процедуры, составьте алгоритм, по которому Робот на­рисует нужный орнамент.

Вспомогательные алгоритмы Задание 4.  Используя процедуру Элемент , нарисуйте элементы в четырёх углах поля. Для это­го заполните пропуски в программе Орнамент .  Исходное поло­жение Робота установите самостоятельно. использовать Робот алг Орнамент нач . Элемент . нц . . . раз вправо кц . Элемент . нц . . . раз вниз кц . Элемент . нц . . . раз влево кц . Элемент кон  алг Элемент нач . вправо ; вниз . закрасить . вверх ; вверх . закрасить . вниз ; вправо . закрасить . влево ; влево . закрасить кон

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

Задание 4. Используя процедуру Элемент , нарисуйте элементы в четырёх углах поля. Для это­го заполните пропуски в программе Орнамент .

Исходное поло­жение Робота установите самостоятельно.

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

алг Орнамент

нач

. Элемент

. нц . . . раз вправо кц

. Элемент

. нц . . . раз вниз кц

. Элемент

. нц . . . раз влево кц

. Элемент

кон

алг Элемент

нач

. вправо ; вниз

. закрасить

. вверх ; вверх

. закрасить

. вниз ; вправо

. закрасить

. влево ; влево

. закрасить

кон

Метод последовательного уточнения Задание 1. Составьте программу, по которой Робот напишет число 2020. Для изображения отдельных цифр составьте про­цедуры согласно правилу: Робот начинает движение от верхне­го левого угла прямоугольника, внутрь которого можно вписать цифру, и там же заканчивает свою работу. использовать Робот  алг Главный  нач  . вниз ; вправо  . Два  .  нц 4 раз вправо  .  кц  . Ноль  .  | . . . . . . .  кон алг Два  нач .  | . . . . . . .  кон алг Ноль  нач .  | . . . . . . .  кон

Метод последовательного уточнения

Задание 1. Составьте программу, по которой Робот напишет число 2020. Для изображения отдельных цифр составьте про­цедуры согласно правилу: Робот начинает движение от верхне­го левого угла прямоугольника, внутрь которого можно вписать цифру, и там же заканчивает свою работу.

использовать Робот алг Главный нач . вниз ; вправо . Два . нц 4 раз вправо . кц . Ноль . | . . . . . . . кон

алг Два нач

. | . . . . . . . кон

алг Ноль нач

. | . . . . . . . кон

Метод последовательного уточнения Задание 2. Составьте отдельные процедуры для букв «С», «О», «Р», «Т» по правилу: Робот начинает движение от верхне­го левого угла прямоугольника, внутрь которого можно вписать букву, и там же заканчивает свою работу. Используя процедуры, последовательно получите слова: СОРТ, РОСТ, ТОРТ, РОТ.

Метод последовательного уточнения

Задание 2. Составьте отдельные процедуры для букв «С», «О», «Р», «Т» по правилу: Робот начинает движение от верхне­го левого угла прямоугольника, внутрь которого можно вписать букву, и там же заканчивает свою работу.

Используя процедуры, последовательно получите слова:

СОРТ, РОСТ, ТОРТ, РОТ.

Метод последовательного уточнения Задание 3. Создайте две процедуры для рисования отдель­ных элементов орнамента (на рисунке они выделены пунктир­ной линией). Используя процедуры, создайте орнамент.

Метод последовательного уточнения

Задание 3. Создайте две процедуры для рисования отдель­ных элементов орнамента (на рисунке они выделены пунктир­ной линией).

Используя процедуры, создайте орнамент.

В презентации использованы материалы учебного пособия Информатика. Изучаем алгоритмику. Мой КуМир. 5-6 классы /  Е. А. Мирончик, И. Д. Куклина, Л. Л. Босова. — М.: БИНОМ. Лаборатория знаний, 2018.

В презентации использованы материалы учебного пособия

Информатика. Изучаем алгоритмику. Мой КуМир. 5-6 классы / Е. А. Мирончик, И. Д. Куклина, Л. Л. Босова. — М.: БИНОМ. Лаборатория знаний, 2018.

Исполнитель Чертежник. Использование вспомогательных алгоритмов

В этом уроке мы познакомимся с исполнителем чертежник в алгоритмической среде КУМИР, а так же научимся пользоваться вспомогательными алгоритмами.

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

Основные понятия: исполнитель, формальный исполнитель, абсолютное смещение, относительное смещение, вспомогательный алгоритм, процедура.

Смотрите и задавайте свои вопросы или пишите дополнения в комментариях к уроку.

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

Цикл N раз (другое название — цикл со счетчиком)
применяется когда заранее известно сколько повторений необходимо сделать.
Общий вид:
нц <количество повторений> раз
    <команда 1>
    <команда 2>
     …
    <команда n>
кц

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

Повторение происходит ПОКА условие выполнено. Условие ПРЕДШЕСТВУЕТ телу цикла.

Общий вид:

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

кц

Условие может быть простым или сложным. Сложное  условие – условие с логическими операциями (НЕ, И, ИЛИ, …) 

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

– 8 команд вида [слева/справа/снизу/сверху] [стена/свободно]

– 2 команды вида клетка [закрашена/чистая]

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

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

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

имя вспомогательного алг

кон {заканчивается текст основной программы и начинается задание вспомогательного алгоритма}
алг <имя вспомогательного алг>
нач

кон

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

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

Условный оператор (команда ЕСЛИ) — команда, позволяющая реализовать ветвление (выполнение алгоритма в зависимости от проверки некоторого условия по одному или другому «маршруту»).

Оператор Если может быть реализован в полной или неполной (краткой) форме.

Общий вид полной формы:

если <условие>

то <действия 1>

иначе <действия 2>

все

Общий вид краткой формы:

если <условие>

то <действия 1>

все

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

Понравилась статья? Поделить с друзьями:
  • Как найти подписки в мастерской стим
  • Как составить договор купли продажи по генеральная доверенность на автомобиль
  • Как найти проекцию скорости движения по графику
  • Как найти площадь поверхности по клеточкам
  • Как составить алгоритм в бухгалтерии