Информатика 7–9 классы

5.3. Алгоритмические конструкции

Раздел 5. Основы алгоритмизации и программирования (5 часов)

📋 Содержание темы:
  1. Ветвление (if-elif-else)
  2. Вложенные ветвления
  3. Цикл for (со счётчиком)
  4. Цикл while (с условием)
  5. Цикл с постусловием (while True + break)
  6. Вложенные циклы
  7. Практические задачи

Ветвление (if-elif-else)

Условный оператор if

if условие:
    группа_операторов_1
else:
    группа_операторов_2

Если условие истинно (True), выполняется блок после if. Иначе — блок после else.

Пример:

x = int(input('Введите число: '))
if x > 0:
    print('Положительное')
elif x < 0:
    print('Отрицательное')
else:
    print('Ноль')

Неполная форма (без else):

if x % 2 == 0:
    print(x, '— чётное число')

Логические операторы в условиях:

ОператорОписаниеПример
andИ (оба условия истинны)x > 0 and x < 100
orИЛИ (хотя бы одно истинно)x == 0 or x == 1
notНЕ (отрицание)not (x > 0)
Важно: В Python отступы (обычно 4 пробела) определяют границы блоков кода. Все команды внутри блока должны иметь одинаковый отступ!

Каскадное ветвление elif:

Когда нужно проверить несколько условий последовательно:

mark = int(input('Оценка: '))
if mark == 5:
    print('Отлично')
elif mark == 4:
    print('Хорошо')
elif mark == 3:
    print('Удовлетворительно')
else:
    print('Неудовлетворительно')

Вложенные ветвления

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

a = float(input('Введите a: '))
b = float(input('Введите b: '))
c = float(input('Введите c: '))
d = b * b - 4 * a * c

if d < 0:
    print('Корней нет')
else:
    if d == 0:
        x = -b / 2 / a
        print('Корень уравнения x =', round(x, 4))
    else:
        x1 = (-b + d**0.5) / 2 / a
        x2 = (-b - d**0.5) / 2 / a
        print('Корни уравнения:')
        print('x1 =', round(x1, 4))
        print('x2 =', round(x2, 4))

Цикл for (со счётчиком)

Используется, когда известно количество повторений.

for i in range(N):
    тело_цикла

Функция range():

ВызовГенерирует числаКоличество
range(5)0, 1, 2, 3, 45 чисел
range(2, 6)2, 3, 4, 54 числа
range(1, 10, 2)1, 3, 5, 7, 95 чисел (с шагом 2)
range(10, 0, -1)10, 9, 8, …, 110 чисел (обратный отсчёт)
range(0)(пусто)0 чисел
Правило range(start, stop, step): Числа идут от start до stop-1 с шагом step. Если step не указан, он равен 1.

Примеры:

# Сумма чисел от 1 до 100
s = 0
for i in range(1, 101):
    s = s + i
print('Сумма:', s)   # 5050

# Вывод чётных чисел от 2 до 20
for i in range(2, 21, 2):
    print(i, end=' ')
# Результат: 2 4 6 8 10 12 14 16 18 20

Цикл while (с предусловием)

Выполняется, пока условие истинно. Проверка условия — перед каждым повторением.

while условие:
    тело_цикла

Пример:

i = 1
while i <= 5:
    print(i)
    i += 1
# Результат: 1 2 3 4 5
Внимание: Убедитесь, что условие цикла когда-нибудь станет ложным! Иначе возникнет бесконечный цикл.

Алгоритм Евклида (НОД):

a = int(input('a = '))
b = int(input('b = '))
while a != b:
    if a > b:
        a = a - b
    else:
        b = b - a
print('НОД =', a)

Цикл повторяется, пока a ≠ b. На каждом шаге большее число уменьшается на меньшее.

Цикл с постусловием (while True + break)

В Python нет отдельного цикла с постусловием (как repeat-until в других языках), но его можно организовать с помощью while True и оператора break:

while True:
    тело_цикла
    if условие_выхода:
        break
Оператор break немедленно прерывает цикл и передаёт управление на строку после тела цикла.

Пример — подсчёт цифр в числе:

n = int(input('Введите число: '))
k = 0
while True:
    n = n // 10
    k += 1
    if n == 0:
        break
print('Количество цифр:', k)

Пример — обработка последовательности:

k = 0
a = int(input('Число (или 0 для окончания): '))
while True:
    if a == 0:
        break
    if a % 10 == 3:
        k += 1
    a = int(input('Число (или 0 для окончания): '))
print('Числа, оканчивающиеся на 3:', k)

Вложенные циклы

Цикл может находиться внутри другого цикла:

# Таблица умножения
for i in range(1, 10):
    for j in range(1, 10):
        print(f'{i*j:4d}', end='')
    print()
Внутренний цикл выполняется полностью для каждого значения внешнего. Если внешний цикл имеет N итераций, а внутренний — M, то тело внутреннего цикла выполнится N × M раз.

Практические задачи

🧪 Задание 1. Выполните алгоритм мысленно

s = 0
for i in range(1, 6):
    s = s + i
print(s)

Чему равно s?

🧪 Задание 2. Определите результат

n = 12345
k = 0
while n > 0:
    n = n // 10
    k += 1
print('k =', k)

🧪 Задание 3. Найдите ошибку

В этом коде бесконечный цикл. Как его исправить?

i = 1
while i <= 5:
    print(i)

🧪 Задание 4. Напишите программу

Напишите программу, которая выводит все числа от 1 до 50, делящиеся на 3, но не делящиеся на 5.