Цикли у свою чергу можуть бути вкладеними в розгалуження. Команду циклу може містити команда як повного, так і неповного розгалуження.
Цикл, вкладений у неповне розгалуження
Цикл може входити в неповне розгалуження так, щоб він виконувався, якщо результат перевірки умови розгалуження Так. Фрагмент блок-схеми цієї конструкції наведено на рис. 1.
Рис.1
Приклад:
Якщо в тренерки день народження, тричі привітати її.
vidp = input('Сьогодні ваш день народження? (Так/Ні)')
if vidp == 'Так':
for i in range(3):
print('Вітаємо!')
vidp = input('Сьогодні ваш день народження? (Так/Ні)')
if vidp == 'Так':
for i in range(3):
print('Вітаємо!')
Приклад:
Якщо значення змінної а належить до рядкового типу (), вивести всі літери рядка.
if str(type(a)) == "<class 'str'>":
for i in a:
print(i)
Результат наведено на рис.2.
if str(type(a)) == "<class 'str'>":
for i in a:
print(i)
Результат наведено на рис.2.
Рис.2
Цикл із передумовою, вкладений у повне розгалуження
В алгоритмі, фрагмент блок-схеми якого подано на рис. 3, команда циклу виконується, якщо результат перевірки умови розгалуження Так.Рис.3
Приклад:
Якщо число а є трицифровим, знайти суму цифр числа а. Умова повного розгалуження перевіряє, чи відповідає уведене число умові задачі. Якщо Так, у циклі обчислюється сума цифр числа (рис.4), інакше виводиться повідомлення «Число має бути трицифровим».
Рис.4
a = int(input('a =?'))
if a >= 100 and a<1000:
s = 0
for i in range(3):
s = s+a%10
a = a//10
else: print ('Число має бути трицифровим')
Рис.5
Зверни увагу!
Такий прийом часто використовується для перевірки коректності введених даних.
Приклад:
Програма запитує: Малювати кола чи квадрат? і чекає на відповідь. Якщо відповідь 1 (обрали кола), то Черепашка малює квітку з п’яти кіл (рис.6), інакше — малює квадрат.
from turtle import*
k = input('Малювати кола чи квадрат (1/2)?')
if k = '1':
for i in range(5):
circle(50)
left(72)
else:
for i in range(4):
forward(100)
left(90)
from turtle import*
k = input('Малювати кола чи квадрат (1/2)?')
if k = '1':
for i in range(5):
circle(50)
left(72)
else:
for i in range(4):
forward(100)
left(90)
Рис. 6
Джерела:
Інформатика : підруч. для 6 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2023.