Конспект урока информатики "Решение задания №17 ЕГЭ по информатике: обработка целочисленных последовательностей и файлов"; 11 класс


Конспект урока по информатике для 11 класса

Тема: «Решение задания №17 ЕГЭ по информатике: обработка целочисленных последовательностей и файлов»


Цели урока

- Повторить структуру и особенности задания №17 ЕГЭ.

- Разобрать ключевые алгоритмы поиска экстремумов (максимумов и минимумов) в последовательностях.

- Отработать навыки работы с файлами и потоками данных.

- Сформировать умение формализовать условие задачи и реализовывать решение на языке программирования (Python).


Оборудование и материалы

- Компьютер с установленной средой программирования (Python).

- Проектор для демонстрации кода.

- Раздаточные материалы с формулировками задач и шаблонами кода.




Ход урока


1. Организационный момент (2 минуты)

Приветствие, проверка готовности. Объявление темы. Акцент на том, что задача №17 — это классическая задача на обработку данных, где требуется не просто найти ответ, а найти его при определённых условиях


2. Актуализация знаний (5 минут)

Фронтальный опрос:

- В чём главная сложность задачи №17 по сравнению с задачами на простой поиск максимума?

- Какие структуры данных чаще всего используются для решения? (Обычно достаточно двух-трёх переменных).

- Что такое «потоковая обработка» данных? (Обработка данных по мере чтения, без сохранения всего массива в памяти).


3. Теоретическая часть (10 минут)

Структура задания №17:

Задача обычно содержит два условия:

  1. Условие на пару/тройку элементов:

Например, сумма делится на 10, разность положительна, произведение больше 100.

  1. Условие на экстремум:

Найти среди всех пар, удовлетворяющих первому условию, ту, у которой сумма/максимум/минимум элементов максимальна/минимальна.


Алгоритм решения:

1. Инициализация: Завести переменные для хранения текущего лучшего результата (например, max_sum = -1 или best_pair = None). Важно инициализировать переменную так, чтобы любое допустимое значение её заменило.

2. Перебор: Организовать вложенные циклы для перебора всех возможных пар (или троек) элементов последовательности.

3. Проверка условия: Внутри цикла проверить, удовлетворяет ли текущая пара первому условию задачи.

4. Обновление экстремума: Если условие выполнено, проверить, является ли эта пара «лучшей» по второму критерию. Если да — обновить переменную max_sum или best_pair.

5. Вывод ответа: После перебора всех вариантов вывести сохранённый результат.


4. Разбор типового примера №1: Поиск пары с условием на сумму (15 минут)

Задача:

Дана последовательность целых чисел. Необходимо найти количество пар элементов, для которых сумма чисел кратна 5 и положительна. В ответе запишите количество таких пар.


Алгоритм решения:

1. Считывание данных: Считать все числа в список arr.

2. Инициализация счётчика: count = 0.

3. Вложенные циклы: Внешний цикл i от 0 до n-1, внутренний цикл j от i+1 до n-1. Это гарантирует, что каждая пара (i, j) рассматривается ровно один раз и порядок важен (i < j).

4. Проверка условия: Для каждой пары вычислить s = arr[i] + arr[j]. Если (s > 0) and (s % 5 == 0), увеличить счётчик.

5. Вывод: Напечатать count.


Пример кода на Python:


Считываем данные из файла или вводим вручную для теста

with open('17.txt') as f:

arr = list(map(int, f.readlines()))


# Для демонстрации используем готовый список

arr = [12, -3, 7, -2, 8, -5]


count = 0

n = len(arr)


# Перебираем все пары (i, j), где i < j

for i in range(n):

for j in range(i + 1, n):

pair_sum = arr[i] + arr[j]

# Проверяем оба условия задачи

if pair_sum > 0 and pair_sum % 5 == 0:

count += 1


print("Ответ:", count)


Комментарий учителя: Обратите внимание на вложенные циклы. Использование `range(i+1, n)` во втором цикле — это стандартный приём, чтобы не считать пары `(j, i)` и не сравнивать элемент с самим собой. Это экономит время вычислений вдвое.


5. Разбор типового примера №2: Поиск максимума среди пар с условием (15 минут)


Задача:

Дана последовательность натуральных чисел (не более 1000 элементов), все числа не превышают 10000. Необходимо найти максимальную сумму двух различных элементов последовательности, которая кратна 6.


Алгоритм решения:

Логика похожа, но вместо счётчика мы ищем максимум.

1. Инициализация: Так как все числа натуральные, сумма не может быть отрицательной или нулевой. Инициализируем переменную best_sum = -1. Если после выполнения программы она останется равной -1, значит подходящих пар не было.

2. Вложенные циклы:** Аналогично предыдущему примеру.

3. Проверка условия и обновление максимума:

Если пара удовлетворяет условию (pair_sum % 6 == 0), мы сравниваем её сумму с текущим лучшим результатом:

if pair_sum > best_sum: best_sum = pair_sum

4. Вывод: Напечатать best_sum.


Пример кода на Python:

arr = list(map(int, open('17.txt').readlines()))

arr = [3, 6, 9, 2, 4]


best_sum = -1 # Инициализация значением, которое точно будет меньше любой возможной суммы


n = len(arr)

for i in range(n):

for j in range(i + 1, n):

pair_sum = arr[i] + arr[j]

if pair_sum % 6 == 0:

if pair_sum > best_sum:

best_sum = pair_sum


print("Максимальная сумма:", best_sum)


Комментарий учителя: Здесь критически важна инициализация переменной best_sum. Если бы мы инициализировали её нулём (best_sum = 0), а в последовательности все числа были бы отрицательными (или если бы по условию суммы могли быть нулевыми), программа могла бы выдать неверный ответ. Инициализация -1 — это «защитный» приём.


6. Практическая работа / Самостоятельная работа (8 минут)

Ученикам выдается карточка с задачей:

«Дан набор чисел. Найти минимальное произведение двух различных элементов этого набора, которое является квадратом натурального числа».

Задание: Составить алгоритм и написать код.

Подсказка: Для поиска минимума переменная инициализируется очень большим числом, например float(inf).


7. Обсуждение решений и типичных ошибок (5 минут)

Коллективное обсуждение:

Ошибка в индексах Использование одного и того же элемента дважды (i и j могут стать равными). Решение — второй цикл от i+1.

Неверная инициализация: Как в примере выше. Для минимума нужно брать «очень большое» число, для максимума — «очень маленькое».

Пропуск условия: Забыть проверить одно из условий задачи (например, кратность) или перепутать логику (and / or).

Типы данных: При работе с произведениями больших чисел может возникнуть переполнение типа int, но в Python с этим проблем нет.


8. Рефлексия и домашнее задание (3 минуты)

Вопросы для рефлексии:

Какую главную идею вы сегодня усвоили для решения задач на поиск пар с условиями?

(Ответ: Идея двухэтапной фильтрации — сначала отбираем пары по логическому условию, а затем среди них ищем экстремум).*


Домашнее задание:

Решить задачу №17 из открытого банка заданий ФИПИ. Особое внимание уделить корректной инициализации переменных для поиска максимума/минимума.


Полный текст материала Конспект урока информатики "Решение задания №17 ЕГЭ по информатике: обработка целочисленных последовательностей и файлов"; 11 класс смотрите в скачиваемом файле.
На странице приведен фрагмент.
Автор: Фахретдинова Любовь Александровна  Публикатор
14.05.2026 0 8 1

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