Как в программе кумир сделать цикл

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

Условно исполняемый код

Некоторые операции могут быть поставлены под условный оператор. Тогда они будут выполнены только в случае истинности этого условия.

Альтернатива

В блок-схеме проверка условия может служить принципом выбора альтернативных операций. То есть, если условие истинно, исполнение пойдет по одной траектории, а если ложно, то по другой. На языке КуМир цикл с предусловием имеет следующий вид:


Условия для робота:

слева стена
справа стена
снизу стена
сверху стена
клетка закрашена

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

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

Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В большинстве процедурных языков программирования реализуется оператором while , отсюда его второе название — while-цикл. На языке КуМир цикл с предусловием имеет следующий вид:

Кумир | Циклы Пока

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

Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. В языке Паскаль этот цикл реализует оператор repeat..until , в Си — do…while .
На языке КуМир цикл с постусловием имеет следующий вид:

Цикл со счётчиком

Цикл со счётчиком — цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. В большинстве процедурных языков программирования реализуется оператором for , в котором указывается счётчик (так называемая «переменная цикла»), требуемое количество проходов (или граничное значение счётчика) и, возможно, шаг, с которым изменяется счётчик. На языке КуМир цикл со счетчиком имеет следующий вид:

цел а
нц для а от 0 до 9
… тело цикла
кц

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

На вход программе поступает натуральное число, не превосходящее 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

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

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

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

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

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

Читайте также:
Mcafee краткое описание программы

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

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

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

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

нц для от до [шаг ]

кц

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Эта статья также доступна на следующих языках: Тайский

Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения.

Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

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

Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо.

Желаю вам удачи и берегите себя в азиатских краях.

Источник: yarjur.ru

Цикл «для» в Кумире

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

Рассмотрим простую задачу: необходимо определить сумму чисел на отрезке от 10 до 20.

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

  1. Введем величину S , в которой будем накапливать сумму заданной последовательности чисел, и присвоим ей начальное значение S := 0
  2. Для контроля числового диапазона введем параметр, начальным значением которого будет значение левого края отрезка (текущее значение), а конечным — правого. Назначим параметру, исходя из условия задачи, шаг изменения равным 1.
  3. Добавим к величине S текущее значение параметра.
  4. Будем возвращаться к пункту 2, увеличивать текущее значение на шаг изменения параметра и выполнять пункт 3 до тех пор, пока не достигнем конечного значения.
Читайте также:
Программа для настройки Скайрим

Для описания подобного рода алгоритмов в Кумире можно использовать цикл «для», запись которого имеет следующий формат:

  • нц для i от i1 до i2
  • тело_цикла
  • кц

Величина i называется параметром цикла. i1 и i2 являются соответственно начальным и конечным значениями параметра. Параметр управляет количеством повторений тела цикла ( i2 – i1 + 1). Параметр цикла должен иметь тип цел .

Важно! Параметр цикла нельзя изменять в теле цикла.

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

Анализ описания формата записи показывает, что цикл «для» может быть использован, если известно количество повторений тела цикла .

Приведем фрагмент кода выше рассмотренного алгоритма на языке Кумир.

  • S := 0
  • нц для i от 10 до 20
  • S := S + i
  • кц

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

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

  • нц для i от i1 до i2 шаг d
  • тело_цикла
  • кц

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

Приведем фрагмент кода, реализующий цикл с параметром для решения поставленной задачи:

Задача: выведите через пробел все четные числа от 100 до 0

  • нц для i от 100 до 0 шаг -2
  • вывод i, » «
  • кц

Вопросы для самопроверки

  1. В каких случаях используется оператор цикла с параметром?
  2. Какую роль играет параметр цикла?
  3. Какой тип данных может принимать параметр цикла?
  4. Что представляет собой тело цикла?
  5. Может ли тело цикла с параметром не выполниться ни разу?
  6. С помощью какой величины можно управлять изменением параметра цикла?
  7. Как должен быть оформлен оператор цикла с параметром, чтобы тело цикла выполнялось при уменьшающихся значениях параметра цикла?

Источник: informatics-lesson.ru

Чертежник рисует узор

КуМир

Инфоучка

Разберём несколько примеров использования циклов при составлении алгоритмов для исполнителя Чертежник.

Цикл с параметром

Задача 1. Составим алгоритм для исполнителя Чертежник, который начертит на рабочем поле следующий рисунок.

узор чертежник

Для начала посмотрим на изображение и проанализируем его. Центральный квадрат раздвигается относительно своего центра и делится на четыре части. Они повторяются с одинаковым шагом удаляясь от центра фигуры.

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

Алгоритм:

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

Задача 2. Составим алгоритм для исполнителя Чертежник, который начертит на рабочем поле следующий рисунок.

чертежник узор кумир

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

Алгоритм:

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

Цикл N раз

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

узор для чертежника

В этой задаче потребуется применить цикл N раз и вспомогательный алгоритм. Вспомогательный алгоритм рисует маленький перечеркнутый квадрат. В основном алгоритме этот квадрат воспроизводится 25 раз (5 строк по 5 квадратов)

Алгоритм:

использовать Чертежник алг узор нач нц 5 раз нц 5 раз узор_1 кц сместиться на вектор (-10,-2) кц кон алг узор_1 нач опустить перо сместиться на вектор (0,2) сместиться на вектор (2,0) сместиться на вектор (0,-2) сместиться на вектор (-2,0) сместиться на вектор (0,2) сместиться на вектор (2,-2) сместиться на вектор (-2,0) сместиться на вектор (2,2) сместиться на вектор (0,-2) поднять перо кон

Задача 3. Составьте алгоритм рисования узора, показанного на рисунке.

рисунок с узором

Алгоритм:

использовать Чертежник алг узор нач нц 4 раз нц 4 раз ромб кц сместиться на вектор (-8,-2) кц кон алг ромб нач опустить перо сместиться на вектор (1,1) сместиться на вектор (1,-1) сместиться на вектор (-1,-1) сместиться на вектор (-1,1) поднять перо сместиться на вектор (2,0) кон

Дополнительное задание 3: Составьте алгоритм, по которому Чертежник нарисует ряд из 5 квадратов. Самый маленький квадрат имеет размеры 1х1. У каждого следующего сторона увеличивается на 1 клетку.

ряд квадратов

Решение:

Дополнительное задание 4: Составьте алгоритм, по которому Чертежник нарисует спираль, которая начинает раскручиваться из начала координат. Витки спирали отстоят на одну клетку друг от друга. Смотрите рисунок.

спираль чертеж

Решение:

Источник: infouch.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru