Итоговый проект и ЕГЭ-алгоритмика

Финал курса. Сегодня мы соединим всё изученное в одну программу — простую симуляцию управления: читаем показания датчика, по условию принимаем решение, считаем сводку. А ещё отдельно разберём типовую задачу в формате ЕГЭ — обработку последовательности чисел, на которой строится половина экзамена и вузовской алгоритмики.

Конвейер управления: датчик подаёт данные, логика решает, привод реагирует, сводка по серии

После урока сможешь: Соединяем всё изученное в симуляцию управления (датчик → логика → привод → сводка) и разбираем типовые задачи ЕГЭ на обработку последовательности чисел. Итоговый проект — пульт мониторинга привода.

Конвейер управления: датчик → логика → привод

Любая система управления — это конвейер: датчик даёт данные, программа по правилам принимает решение, привод исполняет. У тебя уже есть все детали: список (серия измерений), цикл (перебор тактов), условие (правило реакции), функции (расчёты). Соберём их вместе.

  Конвейер управления (то, что мы собираем):

   [ДАТЧИК]      [ЛОГИКА]            [ПРИВОД]
   измерения  -> if порог превышен -> действие
      |             |                   |
   список x     условие в цикле      сообщение/счёт

   + СВОДКА по серии: среднее, максимум, число аварий
izmereniya = [20, 35, 90, 41, 95]
porog = 80
avariy = 0
for x in izmereniya:
    if x > porog:
        print(f"Такт {x}: АВАРИЯ — стоп")
        avariy = avariy + 1
    else:
        print(f"Такт {x}: норма")
print("Всего аварий:", avariy)
Такт 20: норма
Такт 35: норма
Такт 90: АВАРИЯ — стоп
Такт 41: норма
Такт 95: АВАРИЯ — стоп
Всего аварий: 2

Это и есть «программное обеспечение управляющего модуля» в самом простом виде: данные → правило → реакция → отчёт. Дальше в вузе добавятся реальные датчики и приводы, но логика останется той же.

Типовая задача ЕГЭ: обработка последовательности

Половина задач ЕГЭ по информатике — это «дана последовательность чисел, найди …»: сумму, количество подходящих, максимум среди чётных и т.п. Приём один: завести накопитель ДО цикла, перебрать числа, в условии обновлять накопитель. Разберём «сколько чисел кратно 3».

chisla = [12, 7, 9, 20, 33, 8]
kratnyh = 0
for x in chisla:
    if x % 3 == 0:
        kratnyh = kratnyh + 1
print(kratnyh)
3
  Шаблон задачи на последовательность:

   1. накопитель = 0        (или [] / -1 для максимума)
   2. for x in данные:
   3.     if <условие про x>:
   4.         обновить накопитель
   5. print(накопитель)

   Меняется только условие и способ обновления — каркас один.

Признак кратности — через остаток: x % 3 == 0 значит «делится на 3 без остатка». Чётное — x % 2 == 0. Этот приём (остаток в условии) закрывает огромный класс задач ЕГЭ.

Итоговый проект: пульт мониторинга привода

Собери свою программу-пульт, которая соединяет всё изученное. Это твой итоговый проект — покажи его преподавателю на разборе. Ниже — заготовка и требования.

  1. Заведи список измерений датчика (минимум 6 чисел) и порог.
  2. Напиши функцию srednee(spisok), которая возвращает среднее, округлённое до 2 знаков.
  3. Перебери измерения циклом: для каждого выведи «норма» или «АВАРИЯ» по сравнению с порогом и посчитай число аварий.
  4. В конце выведи сводку: количество измерений, среднее, максимум, число аварий.
  5. Дополнительно (по желанию): спроси порог у пользователя через input.
# Пульт мониторинга привода — заготовка, дополни своим
def srednee(spisok):
    return round(sum(spisok) / len(spisok), 2)

izmereniya = [20, 35, 90, 41, 95, 12]
porog = 80

avariy = 0
for x in izmereniya:
    if x > porog:
        print(f"Такт {x}: АВАРИЯ")
        avariy = avariy + 1
    else:
        print(f"Такт {x}: норма")

print("---- СВОДКА ----")
print("Измерений:", len(izmereniya))
print("Среднее:", srednee(izmereniya))
print("Максимум:", max(izmereniya))
print("Аварий:", avariy)
Такт 20: норма
Такт 35: норма
Такт 90: АВАРИЯ
Такт 41: норма
Такт 95: АВАРИЯ
Такт 12: норма
---- СВОДКА ----
Измерений: 6
Среднее: 48.83
Максимум: 95
Аварий: 2

Критерии готовности проекта: (1) есть своя функция с return; (2) серия обрабатывается циклом; (3) реакция выбирается условием; (4) в конце выводится сводка из нескольких показателей. Если все четыре пункта работают — проект зачтён.

Контрольный вопрос. Что выведет программа из этого задания? Впиши число (сколько измерений превысили порог).

Исходный код для этого задания:

izmereniya = [20, 35, 90, 41, 95]
porog = 80
avariy = 0
for x in izmereniya:
    if x > porog:
        avariy = avariy + 1
print(avariy)

Подсказка: Считаем элементы строго больше 80. Пройди по списку: какие подходят?

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число.

Исходный код для этого задания:

chisla = [12, 7, 9, 20, 33, 8]
print(max(chisla))

Подсказка: max возвращает самый большой элемент списка.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число (среднее).

Исходный код для этого задания:

izmereniya = [10, 20, 30, 40]
print(round(sum(izmereniya) / len(izmereniya), 2))

Подсказка: Среднее = сумма / количество. Сумма 100, элементов 4.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число (сколько чётных).

Исходный код для этого задания:

chisla = [12, 7, 9, 20, 33, 8]
chetnyh = 0
for x in chisla:
    if x % 2 == 0:
        chetnyh = chetnyh + 1
print(chetnyh)

Подсказка: Чётное — это x % 2 == 0 (делится на 2 без остатка). Найди такие числа в списке.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. Внутри цикла нужно проверить, что число x чётное (делится на 2 без остатка). Напиши строку с условием if (с двоеточием).

Исходный код для этого задания:

chisla = [12, 7, 20, 8]
chetnyh = 0
for x in chisla:
    # напиши ниже строку: если x чётное (x % 2 == 0), с двоеточием
        chetnyh = chetnyh + 1
print(chetnyh)

Подсказка: Чётность через остаток: x % 2 == 0. Шаблон: if x % 2 == 0:. Не забудь двоеточие.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. В списке izmereniya лежат измерения. Напиши команду print, которая выведет среднее, округлённое до 2 знаков.

Исходный код для этого задания:

izmereniya = [20, 35, 28, 41]
# напиши ниже команду print со средним (сумма делить на количество), округлённым до 2 знаков

Подсказка: Среднее = sum(список) / len(список). Оберни в round(…, 2). Шаблон: print(round(sum(izmereniya) / len(izmereniya), 2)).

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Программа должна посчитать число аварий за всю серию, но всегда печатает 0 или 1. В чём ошибка?

Исходный код для этого задания:

izmereniya = [90, 35, 95]
porog = 80
for x in izmereniya:
    avariy = 0
    if x > porog:
        avariy = avariy + 1
print(avariy)
АСчётчик avariy обнуляется ВНУТРИ цикла — на каждом такте сбрасывается; его надо завести ДО цикла
БПорог слишком большой
Вprint должен быть внутри цикла

Подсказка: Где стоит avariy = 0? Если это внутри цикла, что происходит со счётчиком на каждом круге?

Онлайн-проверка ответа появится позже

Контрольный вопрос. Из-за чего цикл while становится бесконечным?

АВнутри тела ничего не приближает условие к ложному (например, не меняется переменная условия)
БЕсли в нём есть команда print
ВЕсли список слишком короткий

Подсказка: while крутится, пока условие верно. Что должно происходить в теле, чтобы оно однажды стало ложным?

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число (максимум среди чисел, кратных 3).

Исходный код для этого задания:

chisla = [12, 7, 9, 20, 33, 8]
maks = 0
for x in chisla:
    if x % 3 == 0 and x > maks:
        maks = x
print(maks)

Подсказка: Берём только кратные 3 (12, 9, 33) и среди них ищем самое большое.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. Нужно посчитать, сколько чисел кратно 3 (делится на 3 без остатка). Напиши строку с условием if (с двоеточием).

Исходный код для этого задания:

chisla = [12, 7, 9, 20, 33, 8]
kratnyh = 0
for x in chisla:
    # напиши ниже строку: если x кратно 3 (x % 3 == 0), с двоеточием
        kratnyh = kratnyh + 1
print(kratnyh)

Подсказка: Кратность 3 через остаток: x % 3 == 0. Шаблон: if x % 3 == 0:. Не забудь двоеточие.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Задание. Итоговый проект (auto). Напиши программу целиком (около 12-14 строк) — пульт мониторинга привода. Опиши функцию srednee(spisok), возвращающую среднее, округлённое до 2 знаков. Заведи список izmereniya = [20, 35, 90, 41, 95] и порог porog = 80, счётчик avariy = 0. Перебери список: если значение строго больше порога — выведи строку с этим значением и словом АВАРИЯ и увеличь avariy, иначе выведи значение и слово норма. После цикла выведи среднее (через функцию), максимум и число аварий.

Исходный код для этого задания:

# def srednee(spisok): return round(sum(spisok)/len(spisok), 2)
# izmereniya = [20, 35, 90, 41, 95]; porog = 80; avariy = 0
# for x in izmereniya:
#   if x > porog: print(f"{x}: АВАРИЯ"); avariy += 1
#   else: print(f"{x}: норма")
# print среднего через srednee(izmereniya), print max, print avariy

Подсказка: Сначала функция srednee с return. Потом список, порог, avariy=0. В цикле for x in izmereniya ветка if x > porog (печать АВАРИЯ + avariy = avariy + 1) и else (печать норма). После цикла три print: srednee(izmereniya), max(izmereniya), avariy.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Поздравляю — фундамент собран

Ты прошёл путь от первой команды print до симуляции управления и алгоритмов обработки последовательностей. Это тот самый фундамент, на котором в вузе будут стоять предметы про управляющие модули, обработку данных и моделирование. Дальше — практика: чем больше пишешь руками, тем увереннее код.

Итог: Ты прошёл путь от первой команды print до симуляции управления и алгоритмов обработки последовательностей. Это тот самый фундамент, на котором в вузе будут стоять предметы про управляющие модули, обработку данных и моделирование. Дальше — практика: чем больше пишешь руками, тем увереннее код.

Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса

Школа Виктора Комлева