Олимпиада школьников «Шаг в будущее»
Академические соревнования по информатике и программированию в рамках олимпиады «Шаг в будущее» проводятся на протяжении уже пяти лет.
Уровень Олимпиады — 2.
Изюминка этой олимпиады, выделяющая её среди прочих олимпиад по программированию — оценка способностей участников к написанию работоспособных программ инженерной и практической направленности. Для этого среди задач выделяется блок ситуационных задач повышенной сложности, требующий применения как инженерных навыков и способностей применять методы программирования к решению «физических» задач, так и познаний в отдельных областях, связанных с промышленной разработкой программного обеспечения.
Первый этап (отборочный) проводится в заочной форме на сайте https://olymp.bmstu.ru/ (онлайн).
Время, отведенное на решение заданий, для 8-9 классов участия – 295 минут (4 часа 55 минут), для 10-11 классов участия – 235 минут (3 часа 55 минут).
Расписание проведения академических соревнования отборочного этапа Олимпиады школьников «Шаг в будущее» в 2022 году:
Предмет | 1 Волна | 2 Волна | 3 Волна |
Программирование | 21 — 24 октября 2022 года | 18 — 21 ноября 2022 года | 16 — 19 декабря 2022 года |
Второй этап (заключительный) проводится в МГТУ им. Н. Э. Баумана и на региональных площадках (при наличии).
Расписание проведения заключительного этапа Олимпиады в 2022-2023 году:
Профиль олимпиады | 11 класс | 10 класс и младше |
Программирование | 2 апреля 2023 года 10:00* | 1 апреля 2023 года 10:00* |
* Возможно проведение второй смены. Следите за новостями.
Список площадок в 2022-2023 году для Олимпиады по профилю «программирование»:
Площадка проведения | Адрес |
МГТУ им. Н.Э. Баумана | ГУК — 2-я Бауманская ул., д.5, стр.1, г. Москва УЛК — Рубцовская наб., 2/18, г. Москва |
Мытищинский филиал МГТУ им. Н.Э. Баумана | ул. 1-я Институтская, д. 1, Московская обл., г. Мытищи |
Калужский филиал МГТУ им. Н.Э. Баумана | ул. Баженова, 2, г. Калуга, Калужская обл. |
МАОУ Саха политехнический лицей | ул. Маяковского, 75, г. Якутск, Респ. Саха (Якутия) |
МАОУ «Лицей № 14 имени Заслуженного учителя Российской Федерации А. М. Кузьмина» | ул. Мичуринская, 112В, г.Тамбов, Тамбовская обл. |
МБОУ Гимназия № 44 | ул. Московская, 115, г. Пенза, Пензенская обл. |
Учебный центр ALFAKOM | Minor, C-6, 122B, 4 этаж, г.Ташкент, Узбекистан |
Региональный центр «Академия юных талантов» | ул. Печорская, д. 28, г.Сыктывкар |
ГБОУ Республиканский инженерный лицей — интернат) | ул. Кольцевая, д. 74, г. Уфа, Республика Башкортостан |
ФГБОУ ВО «КГТУ» (Балтийская государственная академия рыбопромыслового флота) | ул. Молодёжная, 6, г. Калининград |
Курчатов Центр | ул. Ворошилова, д. 2, г. Челябинск |
СУНЦ ЮФО | ул. Андрея Сладкова, 178/24, г. Ростов-на-Дону |
МБОУ «Гимназия №47 города Кургана» | ул. Р. Зорге, д. 37, г. Курган |
ГБОУ ЦДО «Малая академия наук» | пр. Генерала Острякова, 163, г. Севастополь |
ОмГТУ | Пр. Мира, д. 11, г. Омск |
Региональный центр выявления, поддержки и развития способностей и талантов у детей и молодёжи | ул. Павла Морозова 92б, г. Хабаровск |
Уральский государственный горный университет | ул. Куйбышева, д.30, г. Екатеринбург |
Продолжительность заключительного этапа — 3 часа 55 минут.
Победителям олимпиады, обучающимся в 10−11 классах при подтверждении результатами не ниже 75 баллов ЕГЭ по информатике, будет предоставлено одно из особых прав: право приема без вступительных испытаний при поступлении на направления подготовки, в перечень вступительных испытаний на которые входит предмет «информатика», или право участия в конкурсе с максимальным результатом в 100 баллов по информатике.
Призерам олимпиады, обучающимся в 10−11 классах при подтверждении результатами не ниже 75 баллов ЕГЭ по информатике, будет предоставлено одно из особых прав: право приема без вступительных испытаний при поступлении на направления подготовки, в перечень вступительных испытаний на которые входит предмет «информатика», кроме 01.03. 02, 09.03.04, 10.05.01 или право участия в конкурсе с максимальным результатом в 100 баллов по информатике.
Демонстрационные варианты и задания олимпиады по программированию
Задания 2021-2022 учебного года с решениями
Отборочный этап: 8 класс, 9 класс, 10 класс, 11 класс
Заключительный этап: 8 класс, 9 класс, 10 класс, 11 класс
Задания 2020-2021 учебного года с решениями
Отборочный этап: 8 класс, 9 класс, 10 класс, 11 класс
Заключительный этап: 8 класс, 9 класс, 10 класс, 11 класс
Архив заданий прошлых лет
Подготовка к олимпиаде с профильным предметом «программирование»
Материалы для подготовки
- Статья 7 интернет-ресурсов и книг для подготовки к олимпиадам по информатике
- AlgoList — ресурс, содержащий хорошую подборку алгоритмов, знание которых может пригодиться на олимпиаде: http://algolist.ru/
- Советы от организаторов московской олимпиады по программированию прошлых лет, которые могут пригодиться и Вам: https://olympiads. ru/zaoch/2006/example.shtml
Задачи по программированию
Решением для каждой задачи должна являться одномодульная программа (в виде одного файла) на одном из допустимых языков программирования.
При проверке решений участников жюри будет использовать следующие компиляторы (интерпретаторы):
- Язык Си — gcc (GNU C) 9.4.0
- Язык Си++ — g++ (GNU C++) 9.4.0
- Язык Паскаль — fpc (Free Pascal) 3.0.4
- Python 3.10.
Ввод/вывод программы должен осуществляться с помощью стандартных потоков ввода и вывода.
Завершаться программа должна с кодом возврата 0.
Все задачи проверяются, исходя из ограничения времени выполнения в 3 секунды и использования оперативной памяти до 512 Мб.
Среды разработки, доступные на площадках проведения:
- Code::blocks,
- lazarus,
- idle,
- pycharm.
Версии на различных площадках могут отличаться.
О системе проверки задач
Использующаяся на сайте olymp. bmstu.ru система проведения олимпиад по программированию активно развивается. На текущий момент она обеспечивает поддержку вышеуказанных компиляторов и следующие возможности:
- при сдаче участником решения задачи производится автоматическая компиляция отправленной программы соответствующим компилятором, в случае ошибки компиляции участник получает соответствующее сообщение с приложением вывода компилятора;
- после завершения олимпиады выполняется автоматическая проверка всех присланных решений по массиву тестов, соответствующих задачам.
Решения принимаются в виде файлов с исходным кодом на разрешённых языках программирования. Допустимые расширения файлов : .c, .cpp, .pas, .py.
Вниманию участников, основным языком программирования которых является PascalABC
Используемый в системе компилятор Free Pascal не обладает совместимостью с возможностями языка PascalABC, подробнее можно прочитать здесь
Решение задач на Pascal
Для языка программирования Pascal и его диалектов существует несколько различных сред разработки со своими особенностями. Необходимо иметь в виду, что системой принимаются только файлы исходного кода с расширением .pas, поэтому если Ваша среда сохраняет файлы с другим расширением — перед отправкой в проверочную систему их необходимо переименовать (или скопировать с расширением .pas).
Решение задач на C/C++
Свободные компиляторы gcc/g++ могут не быть совместимы в полной мере с теми, к которым вы привыкли. Например, не все программы, написанные в Microsoft Visual Studio, пройдут компиляцию. Поэтому пользователям ОС Windows для подготовки к олимпиаде рекомендуем использовать свободную среду разработки Code::Blocks в сочетании с компилятором MinGW, который является близким аналогом gcc.
Решение задач на Python
Проверка решений, написанных на языке Python, осуществляется интерпретатором версии 3.10. Использование модулей (библиотек), требующих отдельной установки (например, numpy), не разрешается, подобные программы проверены не будут.
Решение модуля 2.
3 из курса для начинающих «Поколение Python»Все ответы на этот курс по модулям (кликабельно).
Ответы на задачи из модуля 2.3 «Поколение Python»: курс для начинающих. Нумерация сквозная и идет именно по задачам.
Предыдущий модуль 2.2 «Поколение Python».
Первые три вопроса
1. Что будет выведено на экран в результате выполнения следующего кода?
print('31', '12', '2019', sep='-')
Ответ: 31-12-2019
2. Что будет выведено на экран в результате выполнения следующего кода?
print('Mercury', 'Venus', sep='*', end='!') print('Mars', 'Jupiter', sep='**', end='?')
Решение: Mercury*Venus!Mars**Jupiter?
3. Сколько строк будет распечатано в результате выполнения следующего кода?
print('a', 'b', 'c', sep='*') print('d', 'e', 'f', sep='**', end='') print('g', 'h', 'i', sep='+', end='%') print('j', 'k', 'l', sep='-', end='\n') print('m', 'n', 'o', sep='/', end='!') print('p', 'q', 'r', sep='1', end='%') print('s', 't', 'u', sep='&', end='\n') print('v', 'w', 'x', sep='%') print('y', 'z', sep='/', end='!')
Примечание. Последовательность символов \n
задает перевод строки.
Ответ: 5.
Четвертый номер:I like Python
Напишите программу, которая выводит на экран текст «I***like***Python» (без кавычек).
Примечание. Используйте необязательный параметр
sep
.Sample Input:
Sample Output:
I***like***Python
Решение:
# put your python code here print('I','like','Python', sep='***')
Пятая задача:
Кастомный разделитель
Напишите программу, которая считывает строку-разделитель и три строки, а затем выводит указанные строки через разделитель.
Формат входных данных
На вход программе подаётся строка-разделитель и три строки, каждая на отдельной строке.Формат выходных данных
Программа должна вывести введённые три строки через разделитель.
Код:
# put your python code here a=input() b=input() c=input() d=input() print(b, c, d, sep=a)
Шестая задача:
Приветствие
Напишите программу, которая приветствует пользователя, выводя слово «Привет» (без кавычек), после которого должна стоять запятая и пробел, а затем введенное имя и восклицательный знак.
Формат входных данных
На вход программе подаётся одна строка — имя пользователя.Формат выходных данных
Программа должна вывести текст в соотвествии с условием задачи.Примечание 1. Перед восклицательным знаком не должно быть пробелов.
Примечание 2. Используйте необязательный параметр
end
.
Ответ:
name=input() print('Привет,', name, end='!')
Пять последних вопросов
7. Какие из имён допустимы для названия переменных в Python?
Ответ: teacher teacher2 teacher_2
8. Что покажет приведенный ниже фрагмент кода?
language = 'Python' language = 'Pascal' print(language)
Результат: Pascal
9. Какое значение будет находиться в переменной s1
после выполнения следующего кода?
s1 = 'C++' s2 = 'Python' s3 = 'Java' s3 = s2 s1 = s3
Результат: Python
10. Выберите строки кода, соответствующие стандарту PEP 8.
Примечание. Будьте внимательны с пробелами.
Ответы:
- print(‘Follow PEP8!’)
- print(‘Follow’, ‘PEP8!’)
- print(‘Follow’, ‘PEP8′, sep=’**’)
- name = input()
11. Что будет напечатано в результате выполнения следующей программы?
# print('Java') # print('Ruby') # print('Scala') print('Python', end='+') # print('C++') # print('GO') print('C#', end='=') # print('C') print('awesome') # finish
Правильный текст: Python+C#=awesome
Решение модуля 2.4 «Поколение Python»
Усовершенствованное программирование и решение проблем с помощью PASCAL
- title={Продвинутое программирование и решение проблем на PASCAL},
автор={Г. Майкл Шнайдер и Стивен С. Брюэлл},
год = {1981}
}
- Г. М. Шнайдер, С. К. Брюэлл
- Опубликовано в 1981 г.
- Информатика
Просмотр через Publisher
Анализ ошибок программ на Паскале
- К. Анджанейулу
Информатика
SIGP
- 1994
Проанализированы решения двух задач программирования, написанные участниками, плохо знакомыми с языком программирования Pascal, и описаны типы обнаруженных ошибок.
Таксономия стилей программирования
- P. Oman, C. Cook
Информатика
J. Syst. ПО
- 1991
Таксономия для стиля программирования
- P. Oman, C. Cook
Информатика
CSC ’90
- 1990
Таксономия обеспечивает контекст для понимания и определения конкретных факторов стиля и эмпирических исследований, необходимых для определения влияния факторов стиля и эмпирических исследований на стиль понимание программы и может быть использован для дальнейшего обучения и исследований в области стиля программирования.
Введение в программирование на Фортране
- И. Чиверс, Дж. Слейтхолм
Информатика
Springer London
- 2012
Структурированное программирование в самом узком смысле касается разработки программ с использованием небольшого, но достаточного набора операторов и, в частности, управляющих операторов, но в более широком смысле структурированных программирование включает в себя другие цели, включая простоту, понятность, проверяемость, модифицируемость и поддержку программ.
Оценка основанного на знаниях подхода к пониманию программы
В статье оценивается недавно представленный подход к пониманию программ, основанный на знаниях, который генерирует логические аннотации предикатов первого порядка для циклов, что показывает хорошее удобство использования базы знаний за пределами исходной программы.
Оценка основанного на знаниях подхода к пониманию программы
Основанного на знаниях подхода к пониманию программы, который генерирует логические аннотации предикатов первого порядка для циклов, которые обычно показывают хорошее удобство использования базы знаний за пределами исходной программы.
Влияние методов декомпозиции на понимание программы, основанной на знаниях
В этой статье изучается влияние двух различных методов декомпозиции программы на понимание программы, основанной на знаниях. Первый метод генерирует события, которые инкапсулируют части программы, которые… Fortran с использованием массивов Ragged — нижняя треугольная матрица и тип, производный от Date, в качестве примеров.
Преподавание программирования студентам конверсионного курса
- Дж. Бриггс
Информатика, образование
SGCS
- 1989
студенты на годичный курс конверсии. В нем рассматриваются темы…
Вероятностный анализ деревьев отказов с использованием основной декомпозиции.
- William T. McCullers
Информатика
- 1985
Представлен алгоритм вычисления точной вероятности отказа для бинарных систем, представленных в виде деревьев отказов, который не опирается на наборы разрезов и применяет рекурсивную опорную декомпозицию вместе с вероятностным структурным анализом. редукции и модульность непосредственно к дереву отказов.
Принцип Паскаля — проблемы и решения
Александр Сан Лохат
1. Известно:
Площадь A 1 = 10 см 2
Площадь A 2 = 100 см 2
FIRCH 2 ( 2 2
FIRCH 2 ( 2 2 9014MOL Wanted : Force 1 (F 1 )
Solution :
P = F / A
P = pressure , F = force , А = area
P 1 = F 1 / A 1
P 2 = F 2 / A 2P 1 = P 2
F 1 / A 1 = F 2 / A 2F 1 / 10 cm 2 = 100 N / 100 cm 2
F 1 / 10 = 1 Н
Ж 1 = (10)(1 Н)
F 1 = 10 Ньютон
[irp]
2. Если площадь A 1 = 0,001 м 2 и площадь A 2 F 0 = 0,19 м 2 входная сила 1 = 100 Н, тогда внешняя выходная сила F 2 ?
Известно:
Площадь A 1 = 0,001 M 2
Площадь 2 = 0,1 M 2
7 2 = 0,1 M 2 9
2 = 0,1 M 2 9
2 = 0,1 M 2 7
2 = 0,1 M 2 = 0,1 M 2 .0019
Разыскивается : Внешний выходной сигнал (F 2 )
Решение:
P 1 = P 2 9018 P 1 = P 2 9018. A 2
100 Н / 0,001 М 2 = F 2 / 0,1 M 2
100 N / 0,001 = F 2 / 0,1
4 1001 1001 = F .Ф 2 = (0,1)(100 000 Н)
Ф 2 = 10 000 Н
[irp]
3. Масса автомобиля = 16 000 Н. Чему равна внешняя сила воздействия F…
Известно:
(A B ) = 4000 см 2 = 4000 /10 000 м 2 = 4 /10 м 2 = 0,4 м 2
Область A A ) = 50149
.
Разыскивается: Force F
Решение:
F / A A = W / A B
F / 0,005 M 2 = 16 000 N / 0,4 M 2 199994194 2
F00142 F00142 F00149
40142 F00149 2 = 16 000 N / 0,4 M 2 49 2.F / 0,005 = 40 000 N
F = (40 000 N) (0,005)
F = 200 Newton
4.
Область A составляет 60 см 2 , а область B — 4200 см 2 , 2
, а площадь B — 4200 см 2 , 2 , а область B — 4200 см 2 , 2 , а область B — 4200 см 2 , 2 , а область B — 4200 см 2 , 2 . определить внешнюю входную силу F.Известные:
Площадь A (A A ) = 60 cm 2
Area of B (A B ) = 4200 cm 2
Weight w (w) = 3500 Newton
Wanted : F 1
Solution :
Force of F calculated using the equation of Pascal’s principle :
F 1 / A 1 = F 2 / A 2
F 1 / 60 cm 2 = 3500 Н / 4200 см 2
F 1 /60 = 35 Н / 42
F 1 = (60) (35) / 42
F 1 = 2100 /42
F 1 = 5019
F 1 = 5019
5 5.