Экзамены

Программа в ОГЭ по информатике: последнее задание

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

Здесь разобрано, из чего складывается такая программа, как читать условие и что делать, когда она не работает. Задание стоит в практической части последним, а как точно оно называется и сколько баллов в нём, смотрите в демоверсии и спецификации; чисел и номеров в статье нет. Всё про электронные таблицы, которые идут перед ним, — в статье об электронных таблицах в ОГЭ, а общее устройство практической части — в материале о практической части.

Из каких приёмов складывается программа

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

Приёмы, которые встречаются чаще всего, записываются одной строкой. Ниже запись в стиле Python, в других языках она выглядит иначе, а смысл не меняется.

  • накопление суммы: s = s + x
  • счётчик подходящих чисел: k = k + 1, но только внутри условия
  • поиск наибольшего: сравнение каждого числа с текущим наибольшим и замена, когда нашлось большее
  • проверка делимости: остаток от деления на нужное число равен нулю
  • целая часть от деления против деления с дробью: разные операции, и перепутать их легко

Названия переменных стоит выбирать так, чтобы программа читалась как текст: счётчик называется счётчиком, наибольшее называется наибольшим. Однобуквенные имена экономят секунды при наборе и теряют минуты при отладке, особенно когда в программе их больше трёх. Какие именно приёмы потребуются в вашем году, определяет кодификатор. Список выше типичный, а не полный, и ориентироваться стоит на демоверсию.

Как читать условие

Чтение условия я предлагаю делать письменно, на черновике, и не пропускать. Сначала выписать, что программа получает на входе: одно число, много чисел, строку, набор строк. Потом, что она должна вывести: одно число, слово, список. Дальше ограничения: какие значения возможны, может ли набор данных быть пустым, могут ли числа повторяться или быть отрицательными. Последнее важнее, чем кажется: программа, которая отлично работает на примере из условия и ломается на нуле или на отрицательном значении, лишается балла на самом простом месте.

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

Отдельного внимания требует способ, которым данные попадают в программу. В одной формулировке первым числом сообщается, сколько чисел последует дальше, в другой набор заканчивается особым значением, в третьей данные лежат в файле. Программа обязана читать именно так, как сказано, и ученик, который перенёс привычную схему чтения из прошлой задачи, получает верный подсчёт на неверных данных. Как организован ввод в вашем году, видно по демоверсии, и этот способ стоит довести до автоматизма раньше, чем вычислительную часть.

Затем стоит решить пример из условия вручную и убедиться, что вы поняли задачу так же, как авторы. Многие этот шаг пропускают, потому что пример «понятен». На практике ошибка в понимании условия, например перепутанные «больше» и «не меньше», обнаруживается, когда код уже написан и работает, но даёт не тот ответ.

Порядок написания и разбор одной задачи

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

Отладка начинается с простейших тестов, ответ на которые вы знаете без компьютера. Если набор данных состоит из одного числа, ответ очевиден; если все числа одинаковы, он тоже очевиден. Затем граничные случаи, потом набор, на котором ответ неочевиден, и его проверяют вручную. Одно изменение за один запуск: исправили две вещи сразу, и следующий запуск уже не говорит, какая из них помогла.

Как это выглядит на учебной задаче. Условие: на вход подаётся набор натуральных чисел, нужно вывести, сколько среди них чисел, которые делятся на три и оканчиваются на пять. Читаем: вход — набор, выход — одно число, подсчёт идёт сразу по двум условиям. Скелет получается таким: прочитать набор, завести счётчик с нулевым значением, пройти по числам, вывести счётчик. Затем в цикле появляется проверка: остаток от деления на три равен нулю, и остаток от деления на десять равен пяти. Тесты, ответы на которые видны без компьютера: число пятнадцать даёт единицу, число пять даёт нуль, потому что на три не делится, число тридцать тоже нуль, потому что оканчивается нулём. Последний тест полезен особенно: он отлавливает ученика, который проверял делимость на пять вместо последней цифры. Условие «или» вместо «и» даёт другой ответ на тех же числах, и разница видна сразу.

Когда программа упорно не идёт, оставьте её и вернитесь после других заданий: стратегия вполне нормальная, ведь на свежую голову ошибка находится быстрее. Для черновика может понадобиться бумага, и есть ли она на экзамене, определяет перечень разрешённых материалов вашего года.

Какой язык выбрать

Если выбор языка вообще есть, я бы брал самый простой из перечня. Экзамену нужна рабочая программа за ограниченное время, красота кода в оценку не входит. Простой язык означает меньше служебных слов, меньше мест для опечатки, меньше времени на описание данных и вывод. Те, кто привык к более сложному языку и пишет на нём уверенно, разумеется, останутся на нём; этот совет для тех, кто ещё выбирает.

У разных языков разные привычные ошибки. Там, где структуру задают отступы, теряют на сдвиге строки, и программа молча делает не то; там, где блоки обозначены скобками или служебными словами, теряют на пропущенной скобке или точке с запятой, и программа не запускается вовсе. Знать собственное слабое место полезнее, чем знать десяток чужих. Менять язык за полгода до экзамена не стоит. Пока ученик перестраивается, он теряет и новое, и старое. Если же выбор сделан с самого начала, тренировка идёт на одном языке и остаётся только довести её до автоматизма. Какие языки допущены в вашем году и выбирает ли участник сам, написано в порядке проведения, и этот вопрос лучше выяснить до того, как начнёшь учить синтаксис.

Где теряют баллы

Типичные потери в такой задаче практически не связаны с мастерством. Вот четыре, которые встречаются чаще других:

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

Как проверяют программу, написано в критериях вашего года: по результату на нескольких наборах данных или иначе. От этого зависит, достаточно ли запускать её один раз на примере. Пока критерии не прочитаны, надёжнее исходить из худшего: что примеров проверяющему нужно много, и каждый из них разный.

Занятия с репетитором, если экрана не видно

Особенность онлайн-занятий в том, что в видеокомнате нет демонстрации экрана и общей доски, занятия не записываются, и репетитор не видит, как ученик пишет и запускает код. Программа в этом смысле удобна: короткий текст можно прислать прямо в чат сообщением (до 4000 знаков), а длинный файл приложить (до пяти файлов, каждый до 20 МБ). Чат открывается после того, как репетитор получил ваш контакт. Репетитор читает код, отвечает, где ошибка, и объясняет голосом. Удобно прикладывать к программе несколько тестовых наборов и ответы, которых вы от неё ждёте: репетитор запустит код у себя и сразу увидит, на каком наборе расходится ожидание с результатом, без долгих расспросов.

От ученика на таких занятиях требуется привычка проговаривать вслух, что делает каждая строка и почему выбрана именно такая проверка. Кто умеет объяснить свой код, тот отлаживает его быстрее. Похожая привычка нужна в устной части экзамена по иностранному языку, где ответ тоже создаётся прямо на месте; она разобрана в статье об устной части ОГЭ по английскому. Общая карта экзамена по всем предметам собрана в обзоре «ОГЭ: как устроены варианты по всем предметам».

Если ученик собирается сдавать информатику и в одиннадцатом классе, умение писать программы ему пригодится и там. Сравнить подходы можно по статьям о структуре ЕГЭ по информатике и о структуре ОГЭ по информатике.

Начать поиск:

Вопросы и ответы

Нужна ли олимпиадная подготовка? Нет. Для экзаменационных программ она не требуется: хватает базовых приёмов и привычки доводить их до рабочего результата.

Сколько нужно писать в неделю? Часто и понемногу. Лучше несколько коротких программ по одной за заход, чем одна большая в выходные: привычка складывается повторением, а не объёмом. Каждую программу стоит запускать на нескольких наборах данных и держать в папке, чтобы через месяц вернуться и проверить, помнится ли решение.

Что делать, если на экзамене программа не работает? Вернуться к скелету: убедиться, что данные читаются и печатаются как нужно, и добавлять вычисления по одному.

Нужно ли заучивать готовые программы? Нет. Заученная программа ломается на первом же изменении условия. Полезнее знать приёмы и собирать из них решение.

Как понять, что программа готова к сдаче? Когда она даёт верный ответ на примере из условия, на одном заведомо простом наборе, на пограничном случае (пустом или состоящем из одного числа, если условие это допускает) и на наборе, который вы проверили вручную. Тогда остаётся перечитать условие ещё раз и сравнить формат вывода с требованием.

Оставить заявку

Ещё в рубрике «Экзамены»