Доброго времени суток каждому жителю Хабрвилля! Давненько я не писал статей! Пора это исправить!
В сегодняшней статье поговорим о насущной для многих выпускников школ теме — ЕГЭ. Да-да-да! Я знаю, что Хабр — это сообщество разработчиков, а не начинающих айтишников, но сейчас ребятам как никогда нужна поддержка именно сообщества. Ребят опять посадили на дистант. Пока не ясно на какой период, но уже сейчас можно сказать, что ЕГЭ по информатике будет на компьютерах и его можно зарешать при помощи языка Python.
Вот я и подумал, чтобы не получилось как в песне, стоит этим заняться. Я расскажу про все задачи первой части и их решения на примере демо варианта ЕГЭ за октябрь.
Всех желающих — приглашаю ниже!
Быстрый перевод из системы в систему
В Python есть интересные функции bin()
, oct()
и hex()
. Работают данные функции очень просто:
bin(156) #Выводит '0b10011100'
oct(156) #Выводит '0o234'
hex(156) #Выводит '0x9c'
Как вы видите, выводится строка, где 0b — означает, что число далее в двоичной системе счисления, 0o — в восьмеричной, а 0x — в шестнадцатеричной. Но это стандартные системы, а есть и необычные…
Давайте посмотрим и на них:
n = int(input()) #Вводим целое число
b = '' #Формируем пустую строку
while n > 0: #Пока число не ноль
b = str(n % 2) + b #Остатот от деления нужной системы (в нашем сл записываем слева
n = n // 2 #Целочисленное деление
print(b) #Вывод
Данная программа будет работать при переводе из десятичной системы счисления в любую до 9, так как у нас нет букв. Давайте добавим буквы:
n = int(input()) #Вводим целое число
b = '' #Формируем пустую строку
while n > 0: #Пока число не ноль
if (n % 21) > 9: #Если остаток от деления больше 9...
if n % 21 == 10: #... и равен 10...
b = 'A' + b #... запишем слева A
elif n % 21 == 11:#... и равен 11...
b = 'B' + b#... запишем слева B
'''
И так далее, пока не дойдём до системы счисления -1 (я переводил в 21-ную систему и шёл до 20)
'''
elif n % 21 == 11:
b = 'B' + b
elif n % 21 == 12:
b = 'C' + b
elif n % 21 == 13:
b = 'D' + b
elif n % 21 == 14:
b = 'E' + b
elif n % 21 == 15:
b = 'F' + b
elif n % 21 == 16:
b = 'G' + b
elif n % 21 == 17:
b = 'H' + b
elif n % 21 == 18:
b = 'I' + b
elif n % 21 == 19:
b = 'J' + b
elif n % 21 == 20:
b = 'K' + b
else: #Иначе (остаток меньше 10)
b = str(n % 21) + b #Остатот от деления записываем слева
n = n // 21 #Целочисленное деление
print(b) #Вывод
Способ объёмен, но понятен. Теперь давайте используем тот же функцию перевода из любой системы счисления в любую:
def convert_base(num, to_base=10, from_base=10):
# Перевод в десятичную систему
if isinstance(num, str): # Если число - строка, то ...
n = int(num, from_base) # ... переводим его в нужную систему счисления
else: # Если же ввели число, то ...
n = int(num) # ... просто воспринять его как число
# Перевод десятичной в 'to_base' систему
alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" # Берём алфавит
if n < to_base: # Если число меньше системы счисления в которую переводить...
return alphabet[n] # ... вернуть значения номера в алфавите (остаток от деления)
else: # Иначе...
return convert_base(n // to_base, to_base) + alphabet[n % to_base] # ... рекурсивно обратиться к функии нахождения остатка
Вызвав функцию вывода print(convert_base(156, 16, 10))
мы переведём 156 из 10 в 16 систему счисления, а введя print(convert_base('23', 21, 4))
переведёт 23 из 4-ичной в 21-ичную систему (ответ: B).
Задача 2
Все задания беру из первого октябрьского варианта (он же вариант № 9325894) с сайта Решу.ЕГЭ.
Решение данной задачи совсем простое: банальный перебор.
print('y', 'x', 'z', 'F') #Напечатаем заголовки таблицы
for y in range(2): #Берём все переменные и меняем их в циклах '0' и '1'
for x in range(2):
for z in range(2):
for w in range(2):
F = ((not x or y) == (not z or w)) or (x and w) #Записываем функцию
print(x, y, z, F) #Выводим результат
Результат:
Нам вывелась вся таблица истинности (1 = True, 0 = False). Но это не очень удобно. Обратите внимание, что в задании, функция равно 0, так и давайте подправим код:
print('y', 'x', 'z', 'F') #Напечатаем заголовки таблицы
for y in range(2): #Берём все переменные и меняем их в циклах '0' и '1'
for x in range(2):
for z in range(2):
for w in range(2):
F = ((not x or y) == (not z or w)) or (x and w) #Записываем функцию
if not F:
print(x, y, z, F) #Выводим результат
Результат:
Далее — простой анализ.
Задача 5
Данная задача легко решается простой последовательностью действий в интерпретационном режиме:
Задача 6
Перепечатали и получили ответ:
s = 0
k = 1
while s < 66:
k += 3
s += k
print(k)
Задача 12
В очередной раз, просто заменим слова на код:
a = '9' * 1000
while '999' in a or '888' in a:
if '888' in a:
a = a.replace('888', '9', 1)
else:
a = a.replace('999', '8', 1)
print(a)
Задача 14
Компьютер железный, он всё посчитает:
a = 4 ** 2020 + 2 ** 2017 - 15
k = 0
while a > 0:
if a % 2 == 1:
k += 1
a = a // 2
print(k)
Задача 16
Опять же, просто дублируем программу в python:
def F(n):
if n > 0:
F(n // 4)
print(n)
F (n - 1)
print(F(5))
Результат:
Задача 17
Задача с файлом. Самое сложное — достать данные из файла. Но где наша не пропадала?!
with open("17.txt", "r") as f: #Открыли файл 17.txt для чтения
text = f.read() #В переменную text запихнули строку целиком
a = text.split("n") #Разбили строку энтерами (n - знак перехода на новую строку)
k = 0 #Стандартно обнуляем количество
m = -20001 #Так как у нас сумма 2-ух чисел и минимальное равно -10000, то минимум по условию равен -20000, поэтому...
for i in range(len(a)): #Обходим все элементы массива
if (int(a[i - 1]) % 3 == 0) or (int(a[i]) % 3 == 0): #Условное условие
k += 1 #Счётчик
if int(a[i - 1]) + int(a[i]) > m: #Нахождение минимума
m = int(a[i - 1]) + int(a[i])
print(k, m) #Вывод
Немного пояснений. Функция with() открывает файл считывает данные при помощи функции read() и закрывает файл. В остальном — задача стандартна.
Задача 19, 20 и 21
Все три задачи — задачи на рекурсию. Задачи идентичны, а вопросы разные. Итак, первая задача:
Пишем рекурсивную функцию и цикл перебора S:
def f(x, y, p): #Рекурсивная функция
if x + y >= 69 or p > 3: #Условия завершения игры
return p == 3
return f(x + 1, y, p + 1) or f(x, y + 1, p + 1) or
f(x * 2, y, p + 1) or f(x, y * 3, p + 1) #Варианты действий
for s in range (1, 58 + 1): #Перебор S
if f(10, s, 1): #Начали с 10 камней
print(s)
break
Немного пояснений. В рекурсивной функции существует 3 переменные x
— число камней в первой куче, y
— число камней во второй куче, p
— позиция. Позиция рассчитывается по таблице:
Игра |
Петя |
Ваня |
Петя |
Ваня |
Петя |
|
p |
1 |
2 |
3 |
4 |
5 |
6 |
Далее — всё по условию задачи.
Вторая задача на теорию игр:
Все отличия в рамке. Ну и код, соответственно, не сильно отличается:
def f(x, y, p): #Рекурсивная функция
if x + y >= 69 or p > 4: #Условия завершения игры
return p == 4
if p % 2 != 0:
return f(x + 1, y, p + 1) or f(x, y + 1, p + 1) or
f(x * 2, y, p + 1) or f(x, y * 3, p + 1) #Варианты действий
else:
return f(x + 1, y, p + 1) and f(x, y + 1, p + 1) and
f(x * 2, y, p + 1) and f(x, y * 3, p + 1) #Варианты действий
for s in range (1, 58 + 1): #Перебор S
if f(10, s, 1): #Начали с 10 камней
print(s)
Отличия:
-
Выиграл Петя, соответственно, позиция 4
-
Так как Петя не может выиграть за один ход — он выигрывает за 2 хода (and, а не or на нечётных позициях (играх Пети))
-
Убрали break, так как нам нужны все S, а не единственный
Последняя вариация задачи:
Сразу код:
def f(x, y, p): #Рекурсивная функция
if x + y >= 69 or p > 5: #Условия завершения игры
return p == 3 or p == 5
if p % 2 == 0:
return f(x + 1, y, p + 1) or f(x, y + 1, p + 1) or
f(x * 2, y, p + 1) or f(x, y * 3, p + 1) #Варианты действий
else:
return f(x + 1, y, p + 1) and f(x, y + 1, p + 1) and
f(x * 2, y, p + 1) and f(x, y * 3, p + 1) #Варианты действий
for s in range (1, 58 + 1): #Перебор S
if f(10, s, 1): #Начали с 10 камней
print(s)
Ну и всего лишь 2 отличия:
-
Позиции 3 или 5, а не 4, так как выиграл Ваня
-
На второй ход выигрывает Ваня и нам нужно or и and поменять. Я заменил только кратность 2.
Задача 22
Ctrl+C, Ctrl+V — наше всё!
for i in range(1, 100000):
x = i
L = 0
M = 0
while x > 0 :
L = L+1
if (x % 2) != 0:
M = M + x % 8
x = x // 8
if L == 3 and M == 6:
print(i)
Задача 23
Итак, код:
def f(x, y):
if x > y: #Перегнали цель
return 0
if x == y: #Догнали цель
return 1
if x < y: #Догоняем цель тремя методами
return f(x + 1, y) + f(x + 2, y) + f(x * 2, y)
print(f(3, 10) * f(10, 12)) #Прошло через 10, значит догнали 10 и от де догоняем 12
Так как в условии задачи мы увеличиваем число, но будем числа «догонять». Три метода описаны, ну а пройти через 10 — значит дойти до него и идти от него.
Собственно, это и есть вся первая часть ЕГЭ по информатике решённая на Python.
Ссылка на репозиторий со всеми программами:
Надеюсь, что смог помочь в своей статье выпускникам и готовящимся
Остался один вопрос — нужен ли разбор второй части ЕГЭ по информатике на Python? Оставлю этот вопрос на ваше голосование.
Всем удачи!
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Делаю разбор второй части?
Проголосовали 105 пользователей.
Воздержались 15 пользователей.
ЕГЭ по информатике или страдания длиною в года
Время на прочтение
5 мин
Количество просмотров 66K
Почему я решил написать на эту тему
Изначально эту статью я не планировал писать, т.к. думал что вряд ли подобная информация может быть кому-нибудь интересна. И как же я удивился, когда узнал, что многим любопытно вникнуть в эту сферу. Например, как сейчас проходит обучение программированию. Или может ли преподаватель помочь ученику выучить другой язык, помимо стандартного для школьной программы Pascal ABC, при условии, что это не специализированный лицей, где ЯП обучают с начальной школы (а ведь такие учебные заведения присутствуют практически в каждом городе, но не у каждого учащегося существует возможность туда попасть).
Итог начала
Я вижу эту статью примерным отражением уроков информатики в обычной общеобразовательной школе, и того, с чем сталкивается обычный школьник, если он сдаёт единый гос.экзамен по этому предмету. И недавно появилась ещё одна причина. Все мои экзамены перенесли на месяц, так что нарастающие напряжение я предпочёл снять при помощи … аммм творчества, наверное, если можно так назвать эту мазню из букв, что я сейчас вижу. И заранее прошу прощения за косноязычие и прочую хрень, которая может затруднить чтение (уверен, найдутся пунктуационные, орфографические или фактические ошибки) и очень надеюсь, что вам понравится.
Введение
Наверное, стоит начать с того, кем я являюсь, чтобы писать что-то на эту тему. Я учащийся средней образовательной школы 11-го класса, в которой работают два учителя информатики, как ожидаемо, с абсолютно разным подходом. Так вот, именно из-за таких двух разных методов, которые я испытал на себе за всё время обучения, у меня и сложилось определённое мнение, которым хочется поделиться.
Моё мнение об уроках информатики в МБОУ СОШ
Прежде всего: большинство учителей заинтересованы в преподавании строго в рамках школьной программы. Оно и понятно, им за это платят. Так что если у ученика возникает желание узнать что-то новое, то ему всегда стоит сказать об этом. Но не факт, что преподаватель поддержит подобного рода стремления, или даже даст совет. Но иногда бывает и такое, что педагог сам изъявляет желание научить учеников чему-то выходящему за рамки учебного процесса, но, к сожалению, такое происходит нечасто. Такая практика не проводится и в моей школе.
Что представляет собой ЕГЭ по информатике
Сейчас этот экзамен представляет собой смесь из математики, алгебры, логики и программирования. Разумеется, в школе дают базу для сдачи этого экзамена. Но только первой части, которая составляет 72 балла, что катастрофически мало, и не хватает для поступления в хороший вуз, особенно если ты не набираешь желанные 100 баллов по другим предметам (и это если в вузе нет определённой планки по количеству баллов по каждому предмету, что зачастую присутствует). И то, для получения этих же 72-х баллов необходимо обладать пониманием рекурсивных алгоритмов, одномерных массивов и ещё других умных вещей, которые могут быть пройдены вскользь на уроке, или не пройдены вовсе. Конечно это не все 72 балла, но как минимум половину из них именно так сдающие и получают.
Вторая же часть составляет собой 3 задания по программированию и одно по теории чисел. И в итоге получается, что для решения больше половины заданий просто необходимо знать программирование. Но и знания по остальным темам тоже необходимы.
Образец заданий
Ну и вот примеры номеров, которые аналогичны с теми, что включены в варианты:
№ 1)
№ 2)
№ 3)
№ 4)
В конце статьи будут ответы, можете проверить себя и написать сколько и какие из номеров вы решили правильно
Программирование на уроках, или история о том, как вместо информатиков гуманитарии Пентагон взламывали
9й класс или день сурка
Для начала, надо описать уроки до 9-го класса, а только затем написать про основное действо. Я не помню, чтобы нам в подробностях рассказывали что такое массивы, как с ними работать, или как программа в принципе выполняет итерации. Вместо этого мы решали много примеров по переводу чисел из одной системы счисления в другую или задач по передаче информации по каналу связи разными методами. В общем, иногда было интересно, иногда это были очередные уроки информатики, которые мы высиживали. Безусловно, любой урок полезен, но явно не несколько лет подряд переливание воды «ни о чем».
Но в итоге наступает 9й класс, и согласно программе обучения нас стали «натаскивать» на решение тестов. Это значит, что на обычных уроках, которые проходили раз в неделю, изменился формат занятия только для сдающих. Теперь это было однообразное прорешивание тех же номеров, с которых мы начинали ещё пару лет назад, без возможности хоть как-то вырваться из этой круговой поруки, в то время как остальные ученики учились работать с компьютерами, так как только с 9го класса их нам доверили.
Но учебный год всё шёл и шёл, а мы, сдающие, решали всё те же задания из первой части, даже не притрагиваясь ко второй, где таились столь желанные номера с программированием или командами для робота. В итоге, за неделю до экзамена я самостоятельно узнал, как решать один номер из второй части. И это было не программирование, хотя каждый из выпускников читал как минимум на одном ЯП. Но должен сказать, что кто-то всё-таки знакомился со столь недоступной дисциплиной. Это были ученики, которые даже близко не думали об информатике, как и об экзамене. В то время как сдающие усердно высчитывали, сколько мегабайт в секунду в канале связи, и за сколько времени передастся файл с таким-то весом, наши одноклассники писали простенькие программки с формулами, или же переписывали в компиляторы «трояны» из Интернета. Но всё же это было программирование, хоть и не ахти какое. То есть можно сказать, что Pascal нами, как классом, был изучен. Но каждый сдающий ОГЭ в 9 классе не мог и строчки написать без ошибки, над чем многие шутили.
Время шло, и экзамены были сданы. Кто-то поступил в другие учебные заведения, но часть всё же осталось и дальше грызть школьный гранит науки. И вот тут стоит указать, что в некоторых школах моего города, после 9-го класса, нет даже такого предмета как информатика. Таким образом, чтобы что-то узнать о простом строение программы, или о том, как лучше объявлять переменные, или о том, где и какие условные операторы могут пригодиться, необходимо было выцеплять учителей из школьной рутины (или попросту бегать за ними с вопросами) и практически допрашивать, но есть большая вероятность, что сам учитель может ничего не знать на тему вопросов, что ему были заданы.
Ну здравствуй, старшая школа
Так или иначе, для меня наступил десятый класс, в течение которого нами были изучены задачи о звуке, картинке и тексте. Можно сказать, что на плюс-минус достойном уровне программирование каждый из сдающих ЕГЭ изучил только в 11-м. И то, с репетиторами или самостоятельно. Но даже обладая элементарными знаниями, мы не приступали ко второй части. В последний раз, когда я был на уроке (это было как раз за день до объявления карантина) мы решали простые задачки на логику и разбирали не столь простые рекурсивные алгоритмы. Но всё же, эти номера находятся в первой части, в то время как во второй я иногда разбирался и с 2х мерными массивами (например, во второй части 2 номера отведены на решение задач при помощи кода, один номер с ошибками в коде, где их и надо исправить).
Итого
Наверное, если бы не случилось пандемии так «вовремя», наш педагог однажды бы сказал: «Хэй, ребят, а может сегодня разберём задание №24. Не знаете, что это? Это тот самый номер с ошибками, о котором вы так много слышали». Но, имеем что имеем, тут уж ничего не поделаешь. Удалёнка также никак не способствовала продвижению в изучении материала, скорее наоборот. Теперь вместо еженедельных занятий у нас только обещания, что скоро начнём заниматься. Как-то так всё и обстоит сейчас с обучением программированию в обычной школе. Если ты не проявляешь инициативы, постоянно не спрашиваешь тебе непонятные вещи, и не изучаешь мануалы сам или с репетитором (или любым человеком, который хочет и может тебе помочь), то скорее всего писать программы ты начнёшь в универе. Если, конечно, туда попадешь!
Благодарности
Большое спасибо за ознакомление с данной статьёй и за терпение к моему стилю изложения. Надеюсь, я немного удовлетворил ваш интерес по отношению к этой теме. Если нет, то можете написать мне в комментариях любые вопросы, буду рад ответить. А также можете поделиться своим опытом изучения основ программирования или советами для начинающих. Ещё я хочу поблагодарить за помощь и поддержку: Таифа Алимова, Анну Кангур, Эльзу Степаненко, Татьяну Никифорову, Эллину Кастуеву, Александру Мызину и Юлию Хольнову.
Ну и наконец ответы:
№ 1) 2288; № 2) 44; № 3) 4; № 4) 17;
Время на прочтение
5 мин
Количество просмотров 18K
Всем привет! В этом году я закончил 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. И посоветовал бы увлекаться спортивным программированием, изучать алгоритмы и пробовать себя в олимпиадах (Но тут питон, наверное, уже не прокатит).
На этом все, спасибо всем, кто уделил этой статье внимание. Извиняюсь за возможно большое количество ошибок в моем изложении.
Задания ЕГЭ по информатике
Время на прочтение
5 мин
Количество просмотров 31K
В России все больше внедряется практика оценивания выпускников школ методом сдачи единого государственного экзамена (ЕГЭ).
Уже несколько лет в экспериментах по всей стране сдавали ЕГЭ по самым разным предметам. В этом году впервые массово будет сдаваться ЕГЭ по информатике.
Что же внутри?
ЕГЭ сдается 4 часа, содержит довольно много вопросов (в данной версии 32) и требует приличного уровня знаний для сдачи его на высокую оценку.
Перед рассказом собственно о заданиях хочу поделиться двумя соображениями.
1. У ЕГЭ есть недостатки, однако главный положительный момент в том, что вводится почти объективная оценка реальных знаний ученика. Раньше в пределах школы учитель/директор имел возможность нарисовать любые оценки почти без ответственности за реальный уровень знаний. Случаи непоступления в ВУЗы были редки (ну в крайнем случае – другой ВУЗ/факультет) и мало кого волновали. Теперь же для учителя страшно поставить 5 и столкнуться с ЕГЭ, сданным на 3. Это резко изменило саму атмосферу подготовки.
Впрочем, есть и недостатки. Пример: по утверждениям многих экспертов, в школах почти перестали преподавать геометрию, т.к. в ЕГЭ она представлена только тремя заданиями.
2. Основная цель ЕГЭ – проранжировать учеников по уровню знаний. Дополнительная – поставить оценку по школьной 4-хбалльной системе.
Для ранжирования большого числа учеников НЕ ВАЖНО, какого уровня в среднем будет экзамен. Надо лишь, чтобы самые слабые решили хоть что-то, а самые сильные решили почти все. Допустим, экзамен слишком сложен, и подавляющее большинство решат лишь половину заданий. Что ж, лучшие 20% из них смогут попасть в ВУЗ на соответствующий факультет.
ЕГЭ не столько оценивает (абсолютная оценка), сколько ранжирует (относительная оценка).
Задания
Далее приведены с моими комментариями некоторые примерные задания, предлагаемые Федеральным институтом педагогических измерений (ФИПИ).
Ссылка на полный вариант заданий 2009 года: fipi.ru/binaries/731/infZIP%20-%20WinRAR.zip и 2008 года: fipi.ru/binaries/518/inform.rar (там mime-type неправильно указан, сохраните как rar и откройте).
На мой взгляд, задания сложные (напомню, в среднем выделяется по 7,5 минут на задание). Предлагаю оценить и вам.
I. В велокроссе участвуют 119 спортсменов. Специальное устройство регистрирует прохождение каждым из участников промежуточного финиша, записывая его номер с использованием минимально возможного количества бит, одинакового для каждого спортсмена. Каков информационный объем сообщения, записанного устройством, после того как промежуточный финиш прошли 70 велосипедистов?
1) 70 бит 2) 70 байт 3) 490 бит 4) 119 байт
Требует понимания информационной емкости последовательности нескольких бит, умения оперировать степенями двойки, просто понимания сути термина «информация» и принципов его измерения.
Средний школьник, как мне кажется, его решит, только если занимался информатикой сверх школьного минимума.
II. Световое табло состоит из лампочек. Каждая лампочка может находиться в одном из трех состояний («включено», «выключено» или «мигает». Какое наименьшее количество лампочек должно находиться на табло, чтобы с его помощью можно было передать 18 различных сигналов?
Требует понимания существования систем счисления с любыми основаниями и принципов кодирования такими сигналами. В данном случае — троичной системы.
Средний школьник, как мне кажется, его не решит. Можно решать и перебором все вариантов и их подсчетом, но это долго и велик риск ошибиться.
III. Каково наибольшее целое число X, при котором истинно высказывание
(50<X•X) → (50>(X+1) •(X+1))?
Требует знания логических операций (функции алгебры логики) и неплохих аналитических способностей (проверьте, сколько времени вы будете его решать сами и дайте любому школьнику или студенту младших курсов).
IV. Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись числа 23 оканчивается на 2.
Задание на первый взгляд не особо сложное, но решать его приходится или перебором (то есть сделать множество переводов в системы счисления типа семеричной или одиннадцатеричной, что крайне утомительно), или выработать систему и понять, что
23 mod X = 2, где mod – остаток от деления, а Х – ответ.
Догадались из моих знакомых ИТ-шников далеко не все.
V. Классный руководитель пожаловался директору, что у него в классе появилась компания из 3-х учеников, один из которых всегда говорит правду, другой всегда лжет, а третий говорит через раз то ложь, то правду. Директор знает, что их зовут Коля, Саша и Миша, но не знает, кто из них правдив, а кто – нет. Однажды все трое прогуляли урок астрономии. Директор знает, что никогда раньше никто из них не прогуливал астрономию. Он вызвал всех троих в кабинет и поговорил с мальчиками. Коля сказал: «Я всегда прогуливаю астрономию. Не верьте тому, что скажет Саша». Саша сказал: «Это был мой первый прогул этого предмета». Миша сказал: «Все, что говорит Коля, – правда». Директор понял, кто из них кто. Расположите первые буквы имен мальчиков в порядке: «говорит всегда правду», «всегда лжет», «говорит правду через раз». (Пример: если бы имена мальчиков были Рома, Толя и Вася, ответ мог бы быть: РТВ)
Напоминает задачи на смекалку, не правда ли?
Можно решать с помощью логического аппарата, который школьникам заведомо неизвестен (например, исчисления высказываний/предикатов) или логикой.
Мне, честно говоря, непонятно, какое отношение это задание имеет к информатике.
VI. Два игрока играют в следующую игру. На координатной плоскости стоит фишка. Игроки ходят по очереди. В начале игры фишка находится в точке с координатами (5,2). Ход состоит в том, что игрок перемещает фишку из точки с координатами (x,y) в одну из трех точек: или в точку с координатами (x+3,y), или в точку с координатами (x,y+3), или в точку с координатами (x,y+4). Выигрывает игрок, после хода которого расстояние по прямой от фишки до точки с координатами (0,0) не меньше 13 единиц. Кто выигрывает при безошибочной игре обоих игроков – игрок, делающий первый ход, или игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока? Ответ обоснуйте.
Задание интересное. Предлагаю вам его решить. В решениях авторов его предлагается решать перебором всех возможных ходов каждого игрока.
Опять же вопрос, какое отношение это непростое задание имеет к информатике? Проверяем логическое мышление?
VII.
Парадокс, но многие не понимают, что именно делает программа и считают все квадраты 2х2, не содержащие линий.
VIII.
Задание требует внимательности и опыта. Например, далеко не все видят, что тут 2 ошибки, обе из которых надо исправить.
Эти примерные задания обнародованы и активно изучаются всеми, кому предстоит сдавать ЕГЭ.
Многие учителя информатики в шоке от заданий. Напомню, что сейчас во многих школах изучают Word, Paint, набирают тексты или слушают рассказы про машину Чарльза Беббиджа и первую программистку-дочь Байрона. Все это хорошо и полезно, но никак не поможет сдаче этого экзамена.
Многие школьники, кому сдавать этот ЕГЭ, бросились искать репетитора.
Но на мой взгляд, средней сообразительности школьнику, учившему информатику просто как школьный предмет (я так учил географию, что даже примерно не представлял себе карту Европы к 11 классу – так учили), практически нереально подготовиться за жаркие 3 месяца к сдаче этого экзамена на приличную оценку.
Ваше мнение, ИТ-шники? Сколько заданий вы бы решили из расчета 7,5 минут в среднем на каждое?
Об изменениях в ЕГЭ по информатике в 2022 году
ЕГЭ по информатике состоит из следующих тем: «Системы счисления», «Базы данных», «Поиск информации в текстовых документах», «Электронные таблицы», «Алгебра логики», «Графы», «Комбинаторика», «Алгоритмизация и программирование», «Теория игр», «Кодирование и декодирование».
По сравнению с прошлым годом контрольные измерительные материалы изменились. Например, задание №3 теперь нужно выполнять на компьютере, так как оно предполагает работу с файлами импровизированной базы данных. В задании №9 учащимся придется вспомнить логические функции при работе с формулами в электронных таблицах, а задание №17 потребует от выпускников выполнить анализ числовой информации из файла.
Напомним, что на протяжении всего экзамена у участников все так же будет доступ к компьютеру с установленным прикладным программным обеспечением и средами программирования.
Основное отличие нынешнего ЕГЭ по информатике от экзаменов прошлых лет состоит в том, что практически все задания в нем можно выполнить на компьютере.
И это, к сожалению, иногда может сбивать выпускников с правильного пути.
Приведем примеры ошибок, которые допускали участники экзамена в прошлом году, для того чтобы помочь избежать их нынешним старшеклассникам.
Ошибка № 1. Попытка выполнить все задания с использованием компьютера
Хотя большинство задач в ЕГЭ по информатике построено таким образом, что их можно решить как в черновике, так и при помощи офисных приложений или сред программирования, нужно понимать, что решение с использованием компьютера не всегда приводит к быстрому результату.
Учительница перед началом сдачи ЕГЭ по информатике в средней общеобразовательной школе №13 Владивостока, 3 июля 2020 года
Виталий Аньков/РИА «Новости»
Например, выпускник может потратить значительное количество времени на написание программного кода для решения задачи, которая аналитическим методом при помощи ручки и листа бумаги решилась бы намного быстрее, и возможно, проще.
В качестве примера приведем задание №8.
Все 5-буквенные слова, составленные из 4 букв ВЕРТ, записаны в алфавитном порядке.
Вот начало списка:
1. ВВВВВ
2. ВВВВЕ
3. ВВВВР
4. ВВВВТ
5. ВВВЕВ
…
На каком месте от начала списка стоит слово «ВЕТЕР»?
Решение
Представим все буквы как цифры системы счисления с основанием 4. Тогда В – 0, Е – 1, Р – 2, Т – 3.
Слово «ВЕТЕР» будет выглядеть как число 01312. Переведем его в десятичную систему счисления — это число 118 (это можно сделать, например, функцией print(int(‘01312’,4)) всего в одну строку на языке Python. Таким образом, слово «ВЕТЕР» должно находиться на 118 месте. Однако мы видим, что слово ВВВВВ — это 00000 (ноль) в четверичной системе счисления и оно находится на месте 1. Значит, есть сдвиг на одну позицию. Таким образом, слово «ВЕТЕР» находится не на 118, а на 119 месте.
Теперь решим это задание вторым способом — напишем программу на языке Python.
Личный архив Николая Никулина
Оба представленных способа решения данной задачи приведут к верному результату, но первый займет у подготовленного ученика меньше времени.
И таких заданий на экзамене достаточно. А ведь на ЕГЭ каждая минута времени может принести дополнительный балл.
Ошибка № 2. Неверная последовательность выполнения заданий
Эта ошибка характерна не только для ЕГЭ по информатике, но и для других предметов. Прежде всего необходимо выполнять те задачи, которые хорошо знакомы и не требуют значительных временных затрат. Часто участники выполняют задания подряд и, увидев новое для себя задание, пытаются его решить, тратя большую часть времени и усилий. На все остальные задачи у них остается уже меньше ресурсов.
Поэтому, если задание показалось сложным, следует его пропустить и постараться выполнить более простые.
Таким образом можно набрать основное количество баллов и оставить большую часть времени для спокойного размышления над сложными заданиями.
Ошибка № 3. Ложная надежда на компьютерные технологии
Некоторые выпускники думают, что наличие компьютера на экзамене со всевозможными офисными программами и средами программирования сразу избавит их практически от всех проблем, связанных с решением задач. Но всеми этими технологиями еще нужно научиться грамотно пользоваться. При этом необходимо знать теорию по конкретным темам курса информатики.
Например, одна из задач, которая, на наш взгляд, стала решаться гораздо быстрее с использованием компьютера — это задание 14. Приведем пример и решение с использованием алгоритма, записанного на языке программирования Python.
Личный архив Николая Никулина
Для написания подобного программного кода необходимо помнить стандартный алгоритм перевода числа в систему счисления с произвольным основанием. Также нужно знать такие темы из курса информатики, как циклы, работа со строками, операции деления. Еще можно запомнить некоторые стандартные функции языков программирования (например, count для языка Python).
Рекомендации по подготовке к экзамену
Очень важно научиться правильно выбирать методику решения каждого конкретного задания. Некоторые задачи проще и быстрее выполнять без использования компьютерных программ, прибегая к аналитическому подходу.
С другой стороны, на экзамене есть и такие задания, которые невозможно решить вручную за отведенное время, и без написания программного кода или использования прикладного программного обеспечения уже не обойтись. Поэтому попробуйте проверить свои знания, провести самодиагностику. Для этого можно выполнить демонстрационный вариант с последующей проверкой ответов, отметить задания и темы, которые вызывают затруднения. Например, воспользоваться виртуальной лабораторией по информатике в Библиотеке МЭШ, открытыми вариантами контрольных измерительных материалов ЕГЭ на сайте ФИПИ или пройти диагностику в формате ЕГЭ. Проверить свои знания и потренироваться в заполнении экзаменационных бланков вы можете в Центре независимой диагностики Московского центра качества образования. Запись открыта в разделе Центра на сайте МЦКО.
Большое значение имеет повторение тем, относящихся к практическому программированию. Знание одного или нескольких языков программирования на базовом или углубленном уровнях поможет решить не только задачи, относящиеся непосредственно к теме «Алгоритмизация и программирование», но и многие другие задания быстро и оптимально. Изучить необходимые языки программирования помогут в школе на уроках информатики. Также можно воспользоваться учебными материалами в Библиотеке «Московской электронной школы».
Каждую неделю, в разные дни, уделяйте внимание изучению новых материалов и повторению того, что вы уже знаете. Старайтесь еженедельно решать разные варианты из ЕГЭ.