Циклы

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

Основы программирования

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

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

Разновидности циклической структуры

Задается количество
повторений
Задается условие
продолжения повторений
Цикл с параметромЦикл с предусловием
блок-схема цикла «для» блок-схема цикла «пока»
Операторы цикла в Python
for переменная in список :
    операторы тела цикла
while условие :
    операторы тела цикла
Примеры

for i in range(1,11) :
    print(i, end=' ')

Результат:

1 2 3 4 5 6 7 8 9 10

for k in range(8,0,-1) :
    print(k*k, end=' ')

Результат:

64 49 36 25 16 9 4 1

n = 1;
while n < 100 :
    print(n, end=' ')
    n = n * 2

Результат:

1 2 4 8 16 32 64

(В примерах ключевые слова операторов цикла выделены полужирным шрифтом)

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

Функция range

В Python в операторе цикла for можно использовать произвольный список значений параметра, но во многих случаях удобно использовать просто последовательность чисел. В этом случае используют функцию range (диапазон). При ее вызове обязательно указывается конечное значение, может быть также указано начальное значение и шаг. Если начальное значение не указано, оно принимается равным нулю. Все параметры могут быть как положительными, так и отрицательными.

Важно: в Python конечное значение не включается в список.

ЗаписьПримерРезультат
range(кон)range(5)[0, 1, 2, 3, 4]
range(нач,кон)range(5,10)[5, 6, 7, 8, 9]
range(нач,кон,шаг)range(0,-5,-1)[0, -1, -2, -3, -4]

При составлении циклического алгоритма, нужно...

  1. Определить, какая последовательность действий должна повторяться.
  2. Выяснить, что будет известно о количестве повторений тела цикла до начала цикла.
    • Если число повторений известно, можно использовать цикл с параметром.
    • Если число повторений неизвестно, нужно использовать цикл с условием.
  3. Определить пределы и шаг изменения параметра (для цикла с параметром) либо условие повторения (для цикла с предусловием).
  4. Определить, значения каких переменных должны быть известны до начала цикла (особое внимание обратить на переменные, входящие в условие оператора цикла с предусловием). Операторы для ввода или вычисления этих переменных должны быть записаны до заголовка цикла.
  5. Записать алгоритм на языке программирования.
  6. Подобрать данные для тестирования программы (предусмотреть несколько наборов данных, в том числе для предельных случаев, например, для случая, когда тело цикла с предусловием не должно выполняться ни разу).

*Операторы break и continue

В языке Python есть два оператора, прерывающих нормальное выполнение цикла:

break — прекращает выполнение цикла, компьютер переходит к следующему за циклом оператору;

continue — прекращает текущую итерацию, компьютер пропускает операторы, оставшиеся в теле цикла, и переходит к следующему повторению.

С помощью оператора break можно, например, записать аналог отсутствующего в Python оператора цикла с постусловием (цикла «до достижения»). Вот, как это может выглядеть:

pas = 'secret'
while True :
    answer = input('Введите код доступа: ')
    if answer == pas : break

При выполнении этого фрагмента программы компьютер будет повторять запрос «Введите код доступа», до тех пор пока пользователь не введет правильное значение — «secret».

исполнение примера кода

Задания

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

for i in range(7) :
    print(i*i)

for k in range(1,4) :
    print(k*k*k)

for n in range(4, 19, 3) :
    print(n)

for m in range(7, 0, -2) :
    print(5*m)

2. Запишите фрагмент программы, выводящий:

  • 12 первых четных чисел
  • значения квадратных корней натуральных чисел, не превосходящие 5
  • сумму квадратов натуральных чисел от 1 до 10

Основы программирования