Циклы с условием
Цикл, в котором проверка условия выполняется при входе (перед выполнением очередного шага) называется циклом с предусловием, то есть циклом с предварительной проверкой ус-ловия. Перед тем, как начать выполнение цикла, мы проверя-ем, нужно ли это делать вообще. Это можно сравнить с такой ситуацией: перед тем, как прыгнуть в бассейн, нужно прове-рить, есть ли в нём вода.
Все циклы, записанные в начале параграфа – это циклы с предусловием. У них есть два важных свойства:
цикл не выполнится ни разу, если условие в самом начале ложно;
как только нарушается условие в заголовке цикла, его рабо-та заканчивается.
Рассмотрим ещё одну задачу, которая решается с помощью цикла с условием. Требуется ввести с клавиатуры натуральное число и найти сумму цифр его десятичной записи. Например, если ввели число 123, программа должна вывести сумму 1+2+3 = 6.
Сначала составим алгоритм решения это задачи. Предпо-ложим, что число записано в переменной N. Нам нужно как-то разбить число на отдельные цифры.
Запишите команды, с помощью которых можно:
записать в переменную d последнюю цифру числа, находящегося в переменной N;
отбросить последнюю цифру числа, находящегося в переменной N;
добавить значение переменной d к значению, находя-щемуся в переменной s.
55 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
Вспомним, что остаток от деления числа на 10 равен по-следней цифре его десятичной записи. Запишем эту цифру в переменную digit:
digit = N % 10
Сумму цифр будем хранить в целой переменной summa. В самом
начале, пока ни одну цифру ещё не обработали, значение этой переменной равно нулю:
summa = 0
Для того чтобы добавить к предыдущей сумме новую цифру, нужно заменить значение переменной summa на summa+digit, то есть выполнить присваивание
summa += digit
Для того чтобы затем отсечь последнюю цифру числа N, разде-лим N на 10 (основание системы счисления):
N = N // 10
Эти три операции – выделение последней цифры числа, увеличение суммы и отсечение последней цифры – нужно вы-полнять несколько раз, пока все цифры не будут обработаны (и отсечены!) и в переменной N не останется ноль:
N = int( input("Введите число: ") ) summa = 0
while N != 0:
digit = N % 10 summa += digit N = N // 10
print( "Сумма цифр", summa )
Выполните ручную прокрутку программы при N = 123. Определите итоговое значение переменной summa.
Для введённого числа 123 программа должна выдать ответ 6 (последнее значение переменной sum). Это правильный ответ.
В отличие от предыдущего примера, здесь количество ша-гов цикла заранее неизвестно, оно определяется количеством цифр введённого числа.
56 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
Сколько раз выполнится цикл, если ввести однозначное число? двузначное? K-значное? число 0?
Какова может быть сумма цифр двузначного числа? трёхзначного? K-значного?
Докажем, что эта программа не зациклится, то есть не бу-дет работать бесконечно. Цикл завершается, когда переменная N становится равна нулю, поэтому нужно доказать, что это обя-зательно случится. По условию заданное число – натуральное, на каждом шаге цикла оно делится на 10 (остаток отбрасывает-ся), поэтому значение переменной N каждый раз уменьшается. В результате после очередного уменьшения оно обязательно станет равно нулю.
Достарыңызбен бөлісу: |