Циклы с условием в Кумире

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

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

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

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

Цикл «пока»

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

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

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

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

  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