Циклы с условием в Кумире
Рассмотрим задачу:
На вход программе поступает натуральное число, не превосходящее 2 * 109. Определите сумму цифр этого числа.
На первый взгляд задача весьма проста: необходимо последовательно выделять цифры в числе и добавлять их к сумме. В тоже время, очевидно, что количество цифр в числе может меняться, поэтому конечное значение параметра цикла для оказывается неопределенным и возникают сложности с его применением.
В циклических алгоритмах, в которых количество повторений определенного набора команд нельзя получить до момента его начала, применяются циклы с условием.
Цикл «пока»
Одной из таких конструкций в языке программирования Кумир является цикл пока. Этот цикл, именуемый часто цикл с предусловием, имеет следующий формат записи:
- нц пока условие
- тело_цикла
- кц
Условие, записанное после служебного слова пока, представляет собой логическое выражение.
Выполнение цикла происходит следующим образом:
- Вычисляется значение логического выражения.
- Если результат вычисления равен нет, то выполнение цикла заканчивается, и Кумир переходит к первой команде после цикла пока. Если результат вычисления да, то выполняется тело цикла, после чего снова происходит вычисление значения выражения с новым значением.
Важно! В теле цикла пока должно происходить изменение некоторой величины, связанной с условием, чтобы обеспечить окончание цикла, в противном случае, цикл может оказаться вечным.
Теперь применим цикл пока для решения нашей задачи
- ввод num
- нц пока num > 0
- сумма := сумма + mod(num, 10)
- num := div(num, 10)
- кц
- вывод сумма
Итак, в ходе каждого исполнения тела цикла к величине сумма прибавляется последняя цифра числа, затем, число уменьшается в 10 раз. Очевидно, что в конце концов num станет равным 0, после чего выполнение цикла закончится.
Цикл «до тех пор»
В Кумире существует еще один вариант цикла с условием, получивший название цикл до тех пор, который имеет следующий формат:
- нц
- тело_цикла
- кц при условие
Если в цикле пока проверка условия осуществляется перед телом цикла, то в цикле до тех пор - после. Поэтому этот цикл часто называют цикл с постусловием. Тело такого цикла всегда выполнится хотя бы один раз
Работа цикла до тех пор происходит следующим образом:
- Выполняется тело цикла
- Вычисляется значение логического выражения. Если результат вычисления равен нет, то снова начинает выполняться тело цикла и т. д.. Если результат вычисления да, то цикл заканчивается, и Кумир переходит к выполнению следующей команды после цикла.
Задача. На вход программе поступает последовательность целых чисел, заканчивающихся нулем. Найдите количество отрицательных чисел в последовательности. Гарантируется, что в последовательности есть хотя бы одно число отличное от нуля.
{Фрагмент кода программы}
- нц
- ввод num
- если num < 0
- то k := k + 1
- все
- кц при num = 0
- вывод k