Всем привет! В этом году я закончил 11 класс и сдавал первый Компьютерный ЕГЭ. Знаю, что довольно поздно пишу статью об этом, но все равно хотелось бы высказать пару мыслей об экзамене и о своем опыте. Хочу рассказать о самом ЕГЭ по информатике, его изменениях, подготовке и о некоторых мелочах.
Что представляет из себя экзамен по информатике
В основном это задания на системы счисления, кодирование/декодирование, алгоритмы, логика, рекурсивные алгоритмы и базовая математика. 2 часть заключается в умение писать программ (30-40 строк) для сортировки и анализа последовательностей. За такие задачки дают 2 балла за правильное решение, и 1 – за неполное. Например, можно решить задачу неэффективно по времени и получить только 1 балл. Вот некоторые примеры заданий.
24, 27 – новые с этого года.
Сдают ЕГЭ по информатике свыше 80 000 школьников, цифра с каждым годом растет. Средний балл, сдающих ~ 65.
Изменения
В прошлых годах информатику школьники решали и записывали ответы, используя бумажные черновики, ручки и бланк ответов соответственно. Также задания 2 части проверялись людьми, а сами задания писались на бланках ответа ручкой. Летом 2020 года появляется Компьютерный ЕГЭ – меняется сам формат экзамена, пропадает возможность подавать апелляцию, добавляются новые задания и удаляются некоторые старые, ну и конечно же сам экзамен проходит на компьютерах.
Новые задания больше направленны на решение задач с помощью языков программирования и компьютера, к примеру, больше не приходится переводить системы счисления вручную на листочке, можно написать свою программу и пользоваться ею на протяжении всего экзамена. Но также появляется проблема, что можно даже и не знать, к примеру, системы счисления, просто заучить алгоритм перевода и сделать ctrl+v на экзамене, что по моему мнению ставит учеников, которые действительно понимают тему, и тех, кто - нет, в одинаковые условия.
Для проведения экзамена было создано специальное ПО. С инструкциями, удобным интерфейсом и простотой в использовании.
Новый экзамен стало действительно приятно решать, потому что он стал таким, каким его представляют и каким он должен быть, но, к сожалению, есть и достаточно минусов нового формата.
О подготовке
Я жил в небольшом городе (100к населения) и учился соответственно в обычной школе. Сдавало информатику в городе 14 человек и только 1 был из моей школы. Учил нас информатике с 8 по 11 класс учитель ИЗО, поэтому уроков у нас либо не было, либо на них мы рисовали в пеинте или играли в браузерные игрушки. Такая обстановка была, насколько я знаю, в каждой школе, и я не удивлюсь, если так и в почти каждом регионе. Про подготовку в школе можно было забыть, кто-то ходил к местным репетиторам, а некоторые прибегали к услугам онлайн-репетиторов (в том числе и я).
Учил я питон, на экзамене он самый настоящий чит: он многое позволяет, прост в изучении, помогает писать задачки быстро и легко, даже не задумываясь о времени выполнения программы. Почти все онлайн-репетиторы учили своих учеников питону, но у меня в городе репетиторы учили паскалю. Время на подготовку уделял не особо много. Во-первых, летом я увлекался некоторыми курсами по программированию – решать 2 часть получалось уже вначале 11 класса. Во-вторых, информатика была самым последним ЕГЭ по дате сдачи, поэтому время на повторение и заполнение пробелов было достаточно.
Из-за множества нововведений, банк заданий был достаточно пуст: было множество однотипных заданий, которые отличались только входными данными, не было примеров новых заданий, которые попадались бы в прошлые года на экзамене, и в целом контента долгое время было очень мало, что не скажешь, к примеру, о профильной математике, где изменений нет очень долго, есть куча репетиторов, школ и заданий прошлых лет.
Как проходил сам экзамен
Экзамен проходил в два дня – 24 и 25 июня. Я сдавал 24, в другой школе, за ноутбуком (характеристики не помню). Можно было использовать все что на ноутбуке установлено: среды разработки, калькуляторы, paint, текстовые файл и т.п.. Можно было использовать такие ЯП как: C/C++, C#, Java, Pascal, Python, Школьный алгоритмический язык.
В тот день была невыносимая жара, знаю что один мальчик из другой аудитории даже потерял сознание от неё. С обслуживанием машин, ответами на вопросы, женщины преклонного возраста справлялись, на удивление, отлично, также было 2 технических специалиста, которые решали некоторые более серьёзные вопросы с техникой.
Хоть с техникой и был порядок, но я все равно столкнулся с некоторыми проблемами. Во-первых решать КЕГЭ дома и в аудитории – совершенно две разные истории. Сложнее всего было привыкнуть к другому ноутбуку и клавиатуре в особенности, набирать код приходилось, постоянно пялясь в клавиатуру, и значительно медленнее, чем у себя дома. Во-вторых хоть и характеристики машин были приемлемы, у меня в PyCharm’e при запуске неэффективного алгоритма в конце экзамена ноут стал сильно лагать (что дома такого конечно же не происходило, поэтому о таком я даже не думал). В такой ситуации, по правилам, можно либо поменять место (потраченное на это время не восполнят), либо писать экзамен во 2 день. Это уже был конец экзамена, я потратил больше 3 часов, эмоции, которые я пережил, не хотелось ощущать снова, и решил дописать этот ЕГЭ, да и в целом у меня были готовы ответы, только 30 минут на проверку я потерял из-за этого.
Задания экзамена были в основном обычные, но новые задачки во 2 части, которые дают больше всего баллов, удивили многих. То ,что давали на всероссийском пробнике, было значительно легче. Да и хотя бы немного похожих заданий нигде не встречалось. Вот некоторые из тех задачек.
В некоторых моментах я немного схитрил и последнюю задачу решил неэффективным алгоритмом, поэтому потерял на 2 части не много баллов. Самым удивительным был 2 день экзамена: школьникам достались те же задания, что были и в первый день. Как составители могли осознанно принять такое решение, готовясь к проведению экзамена целый год, я не понимаю. На горячей линии ответ рособнадзора был мол, что статистика показывает одинаковый процент решаемости заданий в 1 и 2 день, поэтому все ок, но саму статистику почему-то никто не показывает. Возможно так сделали, чтобы показать, что новый формат себя оправдал и средний балл по России не упал. Также на ноутбуках оставались файлы с кодом прошлых учеников, но тут, видимо, вина организаторов.
Вывод
Хоть экзамен я сдал на 90/100, по итогу Единый Государственный Экзамен оказался далеко не единым и быть первопроходцем оказалось не просто. Формат очень сырой и надеюсь, что его будут дорабатывать. Но на самом деле КЕГЭ по информатике стал интересным экзаменом, который действительно хочется решать. Возможность запрограммировать множество заданий - самая главная фишка. Надеюсь экзамен будут дорабатывать, привлекать больше специалистов как к совершенствованию КЕГЭ, так и к обучению в школах небольших регионов.
Также хотел сказать пару слов тем, кому предстоит сдавать этот экзамен в следующих годах. О своих проблемах с техникой сразу сообщать организаторам. Надеяться при подготовке только на сайт решу егэ не стоит, берите задания отовсюду: кполяков, ютуб, варианты статграда, сборники и т.д., проявляйте инициативу к изучению. Питон – must have. И посоветовал бы увлекаться спортивным программированием, изучать алгоритмы и пробовать себя в олимпиадах (Но тут питон, наверное, уже не прокатит).
На этом все, спасибо всем, кто уделил этой статье внимание. Извиняюсь за возможно большое количество ошибок в моем изложении.
Комментарии (31)
AndyPike
18.08.2021 19:35+1А мне очень понравилось.
Ну, не leetcode, но задачи не тривиальные.
После этой статьи от автора с удивлением узнал, что есть выпускники, которые могут пройти через это быстро и эффективно.
Хочется поддержать следующее поколение. Базовые знания и понятия на уровне, остальное уже на реальной работе подтянут, это не проблема. Главное - мозги, образование, ответственность.
amarao
18.08.2021 21:26Вот моя версия №24. Улучшения и полезная критика приветствуются.
use std::io::prelude::*; fn non_double(data: &String) -> u32{ let mut iter = data.chars().peekable(); let mut max = 0; let mut cur = 0; while let Some(ch) = iter.next(){ cur += 1; if cur > max{ max = cur}; match iter.peek(){ Some(x) if *x == ch => {cur = 0}, _ => {} }; } max } fn main() { let mut f = std::fs::File::open("data.txt").unwrap(); let mut data = String::new(); f.read_to_string(&mut data).unwrap(); println!("Non-double length: {}", non_double(&data)); } #[test] fn test_empty(){ assert_eq!(non_double(&String::new()), 0); } #[test] fn test_one(){ assert_eq!(non_double(&String::from("x")), 1); } #[test] fn test_six(){ assert_eq!(non_double(&String::from("xyzxyz")), 6); } #[test] fn test_duplicate(){ assert_eq!(non_double(&String::from("xxx")), 1); } #[test] fn test_double(){ assert_eq!(non_double(&String::from("xyzzzzy")), 3); }
0xd34df00d
19.08.2021 09:53+3Улучшил.
split :: Eq a => [a] -> [[a]] split [] = [[]] split [x] = [[x]] split (x1 : x2 : xs) | x1 /= x2 = (x1 : next) : rest | otherwise = [x1] : (next : rest) where (next : rest) = split (x2 : xs) maxSeqLen :: Eq a => [a] -> Int maxSeqLen = maximum . map length . split main :: IO () main = readFile "data.txt" >>= print . maxSeqLen
Ваши тесты проходит, но у меня тут поздно, и я мог накосячить.
Можно, конечно, решить и сразу одной функцией:
maxSeqLen :: Eq a => [a] -> Int maxSeqLen [] = 0 maxSeqLen (h : rest) = go 1 1 h rest where go maxAcc curAcc _ [] = max maxAcc curAcc go maxAcc curAcc x (x' : xs) | x /= x' = go maxAcc (curAcc + 1) x' xs | otherwise = go (max maxAcc curAcc) 1 x' xs
но мне больше нравится комбинаторы писать — о них рассуждать проще, в этом вот коде я точно не уверен, слишком много состояния. Хотя оптимизатору с ним существенно проще, да. Эх, писал бы на идрисе — можно было бы доказать их эквивалентность.
event1
19.08.2021 18:35по-питонски
def longest_diff(s) : def matches_to_lengths(iter, slen) : try : oldt = next(iter) except StopIteration : yield slen return yield oldt[0] + 1 for t in iter : yield t[0] - oldt[1] + 1 oldt = t yield slen - oldt[1] return max(matches_to_lengths(((m.start(), m.end()) for m in re.finditer('(.)\\1', s)), len(s))) print(longest_diff(sys.argv[1]))
IceSlam
19.08.2021 00:23Я проходил этот КЕГЭ году в 2012 вроде, когда его тестово запускали, по информатике был он
dzol
19.08.2021 01:05-1Мои поздравления со сдачей. И немного замечаний.
Питон — must have
Нет и еще раз нет. Языки, подобные питону, развращают, давая ложное ощущение простоты. Для обучения только Pascal.посоветовал бы увлекаться спортивным программированием, изучать алгоритмы и пробовать себя в олимпиадах
Смею отметить, что спортивное программирование и олимпиады тренируют лишь навык решения чётко поставленных задача в стрессовых условиях, не более. Хорошо для экзамена, хорошо для собеседования (в те компании, которые требуют решать подобные задачи на собеседовании). Но совершенно бесполезны и, не побоюсь этого слова, вредны в реальной практике. Вредны, потому что учат решать лишь чётко поставленные задачи. А на практике, по моему опыту, таких задач очень мало. Особенно, когда вы перерастете уровень junior'а.
Образно говоря, придет к вам заказчик (необязательно сторонний, это может быть ваш тимлид или менеджер) и скажет: «Хочу то-то. Сделай.». И вы, как инженер, должны не только определить то, как решить эту задачу и как сделать это оптимально, но для начала определить, надо ли её решать вообще — может она уже решена. А может она вообще не стоит. Или вместо неё надо решить совсем другую задачу.
По моему, опять же, опыту не все умеют решать такие нечёткие задачи, да ещё в условиях недостатка информации. Это уже чистой воды творчество. Изобретательство.
Тут можно поспорить, сказав, что надо, дескать, нормально задачи формулировать. Но лично в моей практике последний год задачи такие, что формулируя задачу, ты уже её решаешь. Тогда зачем её делегировать? Проще продолжать самому решать раз уж начал.
А насчет изучения алгоритмов всё верно, надо изучать. Но не учить наизусть, ни в коем случае. Изучать описание, пытаться понять как алгоритм работает и почему он устроен именно так, а не иначе. Пытаться реализовать этот алгоритм, причем лучше на нескольких языках с разными парадигмами. Тупое же заучивание абсолютно ничего не даст.Mike_soft
19.08.2021 07:57+1стрессовые условия — это основное, на что жалуются сдающие ЕГЭ. Поэтому навык, полученый на олимпиадах (не только по программированию) — хорошее подспорье для сдачи экзамена.
Ну и в жизни, увы, порой приходится создавать технический долг, решая задачи в стрессовых условиях потому, что «надо здесь и сейчас».
но вообще, прогресс радует.
Питон — если это не первый язык (и уж тем более не единственный), то почему бы и нет? Лично у меня паскаль был далеко не первым, да и делал я на нем (на дельфях) почти ничего серьезного — но его многословность реально раздражала (может, как раз потому, что были в активе другие языки)
evage Автор
20.08.2021 12:18+1Спасибо за отличный комментарий. Насчёт питона я имел ввиду, что на КЕГЭ с этим языком можно очень быстро решать небольшие задачки. Буквально пара строк и уже можно получить балл за задачу. Поэтому я его выделили в своей статье
Godless
19.08.2021 10:40+1ИМХО, но все же. Я конечно уже суперстар, но в нашей юности был паскаль кругом. И именно для обучения он лучше чем питон. Питон как второй, третий, десятый язык - отлично, ведь он действительно сейчас популярен. Но обучение - строгая типизация, строгие, но не сложные конструкции, отсутствие сложных лексических форм, максимальная концентрация на алгоритмах - вот что нужно для обучения. Пусть вы и забудете про него потом, на дельфях сейчас не так много проектов, но зато с легкостью перейдете как на питон, так и на ассемблер или си.
Gorthauer87
19.08.2021 11:38Но решать на нем олимпиадные задачи реально проще и быстрее. Синтаксического шума минимум, можно полностью на задаче сосредоточиться.
TheGodfather
19.08.2021 12:23С одной стороны да, но с другой, проще ненароком вызвать какой-нибудь
min(numbers_list)
в цикле и проморгать увеличение ассимптотической сложности до квадратичной, что на олимпиаде будет красным флагом. Поэтому простота тут обоюдоострая, да, просто писать, но легко написать что-то неэффективно.alexdesyatnik
19.08.2021 15:12Эм, а каким именно боком это проблема Питона? Думать при использовании библиотечных функций и структур данных нужно на любом языке. В моём опыте это никогда не было проблемой, если студент понимает асимптотическую сложность.
TheGodfather
19.08.2021 19:21Тем, что в других языках найти и заюзать стандартную библиотеку это *сложно*. В плюсах нужны какие-то инклюды и мудреные сигнатуры (напишете, не подглядывая, компаратор для сортировки в плюсах?), в паскале вроде их тупо нет. А в питоне банальные sort/min/max идут из коробки и используются интуитивным образом, поэтому, если зазеваться, то на самом деле можно пропустить эти символы во время анализа сложности.
alexdesyatnik
19.08.2021 20:19Аргументы какие-то из пальца высосанные. Если зазеваться как следует, можно что угодно пропустить. В современном паскале (PascalABC.NET), кстати, стандартная библиотека цельнотянутая из .NET, там есть всё то же, что и в C#. Или он, как и питон, не годится по причине "можно случайно массив отсортировать"?
krylov_sn
19.08.2021 12:20сдавал ЕГЭ по информатике еще в 2009. Было все на бумажке. В итоге не засчитали вообще одну задачу из-за неэффективного алгоритма. Не стал тогда подавать апелляцию - не стал рисковать
Kolobrod72
19.08.2021 18:24Что-то не очень похоже, что автор сдавал КЕГЭ(так он кратко называется) в этом году. Или забыл "нюансы".
Как таковых частей нет. Есть 27 заданий. 1-23 - графы, булева алгебра, таблицы (обычные, не электронные), кодирование, системы счисления, алгоритмы, офисные пакеты (текстовый процессор, эл.таблицы), 24-27 - программирование.
Текст программы никуда не записывается(!) и никто его не проверяет, только результат работы программы. Соответственно эффективно-неэффективно - не важно, лишь бы результат был правильный. За задачи 24-27 дают 2 балла, остальные 1. Список ЯП и сред утверждает регион. В связи с этим самой распространенной проблемой было непонимание отдельных учеников разницы между MS VS Code и MS VS 2019 и соответственно неумение запускать программу в MS VS Code с прикрученным minigw-64 (у меня сдавались только на C++, C# и python)
По зависанию. В "каждой избушке свои погремушки". У нас в СПб прямого запрета на "помощь с зависшей программой" не было, поэтому на пробнике и самом КЕГЭ пару раз приходилось "вышибать" python с "бесконечным циклом".
evage Автор
20.08.2021 13:17Вторая часть в КЕГЭ существует. Сам экзамен состоит из 27 заданий, задания с кратким ответом - 23 (1 часть) и остальные 4 - с развернутым (2 часть). https://inf-ege.sdamgia.ru/manual. Хотя в спецификации экзамена сказано только что экзамен делится на уровни сложности: Б - базовый, П - повышенный, В - высокий, но 24-27 привычнее называть 2 частью, потому что, грубо говоря, так и есть. А текст программы хоть никто и не проверяет, но для проверки заданий из 2 части есть два файла: один небольшого размера, а второй огромного. Неэффективным способом, соответственно, результат для файла Б получить не удастся.
Kolobrod72
20.08.2021 15:12На задания 24-27 ответы такие же, как и на остальные, т.е. либо одно число, либо несколько. И два файла - большой и маленький - только у 27го задания. Не знаю, как картинку вставить, но на тренажере Полякова посмотреть можно, только у него второй файл 60К записей, а на КЕГЭ было 1М.
event1
19.08.2021 18:45+1Надо сказать что прогресс поражает. Я заканчивал школу 20 лет назад и у нас экзамен по информатике вообще не подразумевал программирования.
ivanych
19.08.2021 20:47Для проведения экзамена было создано специальное ПО. С инструкциями, удобным интерфейсом и простотой в использовании.
Что за ПО? Где скачать?
Kolobrod72
19.08.2021 23:10Распространяется через местные РЦОИ(региональный центр обработки информации) и ИМЦ(информационно-методический центр)
ivanych
19.08.2021 23:32Среди кого распространяется? Как причаститься?
alexdesyatnik
20.08.2021 08:27Среди организаторов ЕГЭ распространяется, причаститься никак. В интернете можно найти демо-версии, например: https://kpolyakov.spb.ru/school/ege/kege/start.htm Насколько они приближены к реальной станции записи ответов, мне неизвестно.
Apokalepsis
А мне интересно, запись экрана была? Интернет можно было раздать с телефона?
Вообще формат сдачи интересный, когда я сдавал - очень хотел в своей любимой IDE писать вторую часть.
Harrix
Записи экрана нет. Про интернет. Раздать его не с чего: телефона не должно быть у ученика. Но если как-то организовал, то программа на компьютере распознает подключение по сети и перестанет работать, что не позволит ученику сдавать экзамен дальше.
Elusha
Давным давно, как на ЕГЭ практически нереально пронести телефон ввиду обысков вездесущих проверяющих, камер и, конечно же, металлоискателей
В пунктах проведения должны стоять средства для глушения сотовой связи, поэтому даже если кто-то и пронесёт телефон(см. пункт 1), то ничего от этого не получит, если только не выкачал весь интернет себе до этого на телефон