Репетитор по информатике для 10–11 класса: что подтянуть
Задача: в файле десять тысяч чисел, найти, сколько пар даёт сумму, кратную трём. Одиннадцатиклассник пишет два вложенных цикла, проверяет на примере из условия, получает верный ответ и запускает на настоящем файле. Программа думает. Он ждёт пять минут, потом десять и в итоге закрывает окно. Решение верно, и оно же бесполезно: перебор всех пар в файле из десяти тысяч чисел — это сто миллионов проверок, и в Python это ожидание, которое трудно не заметить. А ведь у числа при делении на три остатков всего три, и задачу можно решить, ни разу не перебирая пары.
Вот в таких задачах и проседает информатика в десятом и одиннадцатом классах. Пробелов в синтаксисе у сильного ученика уже нет, зато есть привычка писать первое пришедшее на ум решение и не оценивать, сколько оно работает. Дальше разобрано, что репетитор здесь подтягивает в первую очередь, как это отличается между десятым и одиннадцатым классами и как заниматься, если преподаватель не видит вашего экрана.
Решение, которое верно и не успевает
В этой задаче ответ выглядит так. Посчитать, сколько среди чисел файла даёт остаток ноль при делении на три, сколько остаток один и сколько остаток два. Сумма двух чисел кратна трём в двух случаях: оба остатка нулевые или остатки равны единице и двойке. Пар из нулевых считают по формуле «сколько способов выбрать два из имеющихся», пар из единиц и двоек — перемножением двух счётчиков. Весь файл проходится один раз.
Ученик, который этого не знает, не глуп. Он просто ни разу не задавал себе вопрос, сколько шагов делает программа, когда данных станет в тысячу раз больше. Репетитор здесь работает как учитель оценки: заставляет перед запуском сказать, что произойдёт при росте файла. Один цикл по десяти тысячам — десять тысяч шагов, цикл в цикле — сто миллионов. Сто миллионов шагов в Python — заметное ожидание, а в задаче, где файл на порядок больше, такая программа вряд ли завершится за время экзамена.
Ещё одна ловушка в той же задаче скрыта в слове «пара». Пара из первого и пятого числа и пара из пятого и первого — одна пара или две? Считается ли число в паре с самим собой? Условие обычно отвечает на оба вопроса, но ученик, торопясь, на них не отвечает, и решение выглядит верным, а ответ расходится на единицу или в два раза. Репетитор, который каждый раз требует сначала проговорить, что именно считается, экономит больше времени, чем тот, кто разбирает ошибку после.
Отдельно стоит сказать про язык. Если ученик пишет на Python и регулярно упирается во время, разумно подумать о C++ для тяжёлых задач; но чаще виновато само решение, а смена языка этот недостаток только маскирует. Мне кажется, что решение «перейти на C++» принимают слишком рано: обычно причина в том, что хорошее решение не придумано, и интерпретатор тут ни при чём.
Задачи, которые сначала рисуют
Несколько тем экзамена не решаются, пока не нарисован лист. Игры с выигрышной стратегией и анализ рекурсивных функций относятся именно сюда.
Игра, например, такая: куча камней, за ход можно взять один или два, проигрывает тот, кто не может сделать ход. Ученик, который кидается сразу считать, путается. Ученик, которого научили расписывать позиции подряд, видит всё без усилий: куча в ноль камней — проигрыш для того, кому ходить; один камень и два камня — выигрыш, потому что можно сразу оставить соперника с нулём; три камня — проигрыш, из трёх можно выйти только в позицию с одним или двумя камнями, обе выигрышные для соперника. Дальше всё повторяется с шагом в три, и закономерность видна прямо на листе.
Похожий приём работает в задачах на число способов. Фигурка ходит по клетчатому полю только вправо и вниз, и надо узнать, сколькими путями она доходит до угла. В первой строке и в первом столбце путь один. В любую другую клетку фигурка может прийти слева или сверху, значит, число путей в ней равно сумме чисел слева и сверху. Ученик расписывает поле клетку за клеткой, и динамическое программирование, которым его пугали, оказывается тем же столбиком значений, только двумерным. Дальше остаётся перенести такую запись в программу, и это уже не сложно.
Тот же приём — выписывать значения подряд, на листе, до тех пор, пока не появится закономерность, — работает и для рекурсии. Функция, которая вызывает саму себя, пугает, пока её не раскрывают на пять шагов вниз.
Граничные случаи, которые съедают баллы
Отдельная группа потерь не требует никаких идей: ученик знает решение и ошибается в одной цифре. Строгое неравенство вместо нестрогого, нумерация элементов, которая начинается с нулевого вместо первого, пустой последний элемент при чтении файла, деление, которое в одном случае даёт целое, а в другом дробное. Каждая такая ошибка по отдельности смешна, и вместе они отнимают заметную часть результата.
С файлами отдельная история: считанная строка часто заканчивается невидимым символом переноса, а в конце файла бывает пустая строка, из-за которой программа падает на последней итерации или считает лишний нуль. Ученик, который не видел этого раньше, ищет ошибку в алгоритме, хотя алгоритм верен. Один раз разобранная ситуация экономит ему потом много часов.
Лечится это одним навыком: перед отправкой ответа прогнать решение на трёх маленьких примерах, один из которых специально сделан неудобным, например с одним элементом или с числом, лежащим ровно на границе. Репетитор может требовать этого на каждом занятии, и через месяц ученик начинает делать так сам.
Десятый и одиннадцатый классы
В десятом классе подтягивают язык и первые алгоритмы: чтение данных из файла, работа со списками и строками, сортировка, поиск. Системы счисления и логику вспоминают из девятого. Здесь важно не торопиться с вариантами: без них учиться полезнее. Рабочий ритм для десятого класса — несколько небольших программ в неделю, каждая своя, и на занятии разбирается одна из них: выбирается та, где ученик не уверен, почему программа работает, а самая сложная ничем не лучше. Занятие, где ученик показывает всё верное, почти ничего не даёт. Если же в течение месяца он ни разу не принёс программу, в которой сомневается, это повод поговорить: либо он выбирает слишком лёгкие задачи, либо не хочет показывать трудности.
В одиннадцатом добавляются полные варианты и вопрос выбора заданий. Свою позицию скажу прямо, и она спорная: полные варианты по информатике лучше начинать позже, чем принято при подготовке по другим предметам. Пока ученик не умеет решать хотя бы одно задание на программу уверенно, четыре часа за компьютером лишь убеждают его, что информатика не получается. Сначала темы по отдельности, потом варианты.
Бывает и так, что ученик к одиннадцатому классу уверенно решает всё, кроме последней задачи, а на неё остаётся два месяца. В этом случае разумно спросить репетитора прямо, стоит ли её брать вообще: ответ зависит от того, сколько баллов вы теряете в середине работы, и честный преподаватель посоветует закрыть сначала то, что дешевле.
Основной период экзамена, как всегда, приходится на конец мая или начало июня, точные даты до приказа предварительные. О том, как устроен сам экзамен и в чём он отличается от других, написано в статье про структуру ЕГЭ по информатике, и повторять её здесь незачем.
Занятие, когда преподаватель не видит экрана
Показать экран в видеокомнате нельзя, общей доски тоже нет, и для информатики это ощутимо: преподаватель не видит редактор и не может поправить строку на глазах. Поэтому код приходит заранее, текстом или файлом, через чат (он открывается после того, как репетитор получил ваш контакт), а на занятии ученик читает его вслух, объясняя каждую строку. Преподаватель задаёт вопросы и возвращает исправленный файл. К коду стоит приложить два тестовых примера и то, что программа на них выдала: по расхождению с ожидаемым ответом сразу видно, где искать ошибку.
Разбор идёт примерно так. Ученик читает: «здесь я прохожу по списку и каждое число делю на три с остатком». Преподаватель спрашивает: «А если число отрицательное?» Ученик замолкает, потому что про отрицательные числа он не думал, а в файле они будут. Через минуту выясняется, что в одном языке остаток от деления отрицательного числа даёт один результат, в другом иной, и перед отправкой решения полезно проверить это на двух числах. Без экрана такой разговор идёт даже живее: ученик вынужден проговаривать, а не показывать пальцем на строку.
Это даже хорошо для обучения: рассказать код вслух сложнее, чем написать, и именно при рассказе вылезают места, где ученик сам не понимает, что написал. Но есть цена: пока ученик не научился присылать работу заранее, десять минут из часа тратятся на пересылку. Разбор ошибок стоит вести в своей тетради: что написал, чем ответ отличался от верного, как исправили.
Как выбирать преподавателя
Признак для проверки всего один, и о нём сказано в статье о структуре экзамена: попросите решить задачу с файлом при вас. Для десятого–одиннадцатого классов добавлю второй. Дайте ему чужое решение с ошибкой, и пусть найдёт её, не запуская. Преподаватель, который умеет читать чужой код, умеет и учить; тот, кто умеет только писать свой, объясняет хуже. Остальные признаки — в статье про выбор репетитора для подготовки к ЕГЭ.
Ученик, закончивший школу, обычно идёт дальше в вуз, и тема там становится совсем другой: вузовский курс отличается от школьного настолько, что подтягивают в нём другое. Об этом сказано в статье про занятия для студентов, а о том, откуда ученик приходит в десятый класс, в статье про девятый класс.
Начать поиск:
- репетиторы по информатике для подготовки к ЕГЭ
- репетиторы для 10–11 класса
- проверить свой код на пробном занятии
- репетиторы по информатике с опытом от семи лет
Вопросы и ответы
Когда начинать, если сейчас десятый класс? Сейчас. Язык и работа с файлами осваиваются быстрее, чем кажется, но не за месяц.
Нужно ли учить сразу несколько языков? Нет. Достаточно одного, выбранного заранее. Python удобнее для большинства задач, C++ нужен там, где время решает всё, и браться за него стоит после того, как Python начал упираться в ограничения по времени: до этого второй язык отнимает часы у первого.
Может ли репетитор пройти со мной всю программу вузовской информатики потом? Если он преподаёт и студентам, да. Спросите об этом на пробном занятии.
Как понять, чем вызвана медленная работа: решением или языком? Подсчитайте шаги. Если цикл в цикле при большом файле, виновато решение. Если решение одним проходом, а программа всё равно медленная, смотрите на ввод-вывод и на лишние операции со строками внутри цикла: в Python они часто стоят дороже, чем кажется.
Оставить заявку
- Татьяна Попова — Информатика и олимпиадное программирование · от 3 000 ₽
- Артём Игоревич Соловьёв — Информатика и математика: ОГЭ и ЕГЭ от практикующего разработчика · от 2 100 ₽
- Илья Германович Воронцов — Информатика: ЕГЭ, олимпиады и алгоритмы для студентов · от 1 700 ₽