Суммативное оценивание за раздел (СОР)
Предмет: Информатика
Класс: 10
Тема раздела: Процедуры и функции в Python
Цели обучения:
- 10.5.1.3 — использовать файлы для чтения и записи информации;
- 10.5.1.1 — писать код на языке программирования, используя функции и процедуры;
- 10.5.1.4 — реализовывать алгоритмы сортировки для решения практических задач.
Вариант 1
Инструкции для ученика:
- Время выполнения: 60 минут.
- Пишите аккуратно; в коде соблюдайте отступы (4 пробела или таб по соглашению проекта).
- Все программы должны быть самодостаточными: при необходимости добавляйте блоки if __name__ == "__main__".
Задания
-
Теория (1 балл).
Коротко (1–2 предложения) объясните разницу между функцией и процедурой в Python. Приведите пример декларации функции и примера "процедуры".
-
Функция проверки простого числа (3 балла).
Напишите функцию
is_prime(n), которая принимает целое положительное число n и возвращает True, если n — простое, иначе False. Приведите пример её использования для чисел 29 и 30 (выведите результат на экран). -
Сортировка и файловый ввод/вывод (5 баллов).
В файле
numbers.txtнаходятся целые числа (по одному в строке). Требуется написать модуль с двумя функциями:merge_sort(lst)— функция, реализующая сортировку слиянием (merge sort) для списка чисел и возвращающая новый отсортированный список;sort_file(input_file, output_file)— процедура, которая читает все числа изinput_file, используетmerge_sortдля сортировки по возрастанию и записывает отсортированные числа вoutput_file(по одному числу в строке).
Приведите код обеих функций и кратко опишите (1–2 предложения) временную сложность сортировки слиянием.
-
Практическое применение: среднее по top-K (6 баллов).
Реализуйте функцию
top_k_average(input_file, k, output_file), которая:- читает все числа из
input_file(те же форматы, что и в предыдущем задании); - сортирует числа по убыванию, используя вашу функцию
merge_sort(или, при желании, другую правильно реализованную функцию сортировки, при условии указания, какая именно); - вычисляет среднее арифметическое первых k чисел (если k больше количества элементов, берёт среднее по всем);
- записывает результат в
output_fileв виде одной строки — число с двумя знаками после запятой.
Приведите полный код функции и пример вызова, а также укажите, какие исключения вы обрабатываете (если обрабатываете) и почему.
- читает все числа из
Критерии оценивания для каждого задания
| № | Задание | Макс. балл | Критерии |
|---|---|---|---|
| 1 | Разница функция/процедура | 1 | Корректное определение и оба примера (функция с return, "процедура" — функция, возвращающая None или выполняющая побочный эффект) |
| 2 | is_prime(n) | 3 | Корректная реализация (проверка делителей до sqrt(n), корректные граничные случаи) + пример использования для 29 и 30 |
| 3 | merge_sort + sort_file | 5 | merge_sort — корректная рекурсивная реализация (3 балла), sort_file — корректное чтение/запись файлов и использование merge_sort (2 балла). Учитывать правильный формат записи. |
| 4 | top_k_average | 6 | Корректное чтение, сортировка по убыванию, вычисление среднего top-k и запись с форматированием до двух знаков (4 балла); обработка случая k > n и указание обработанных исключений (2 балла). |