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