Калашникова Е.В.,
МБОУ «Чернянская средняя общеобразовательная школа №1 с УИОП»
Дорогу осилит идущий
Основные направления при подготовке учащихся к олимпиаде по информатике. Решение олимпиадных задач
Для эффективной подготовки школьников к олимпиадам по программированию необходимы четыре условия:
-
достаточный уровень логического мышления;
-
трудолюбие и целеустремленность школьника;
-
достаточное время для подготовки к олимпиаде;
-
квалифицированное руководство подготовкой.
Выделяют три уровня подготовленности учащихся к участию в олимпиаде.
Первый уровень подготовки(муниципальный)
-
хорошее знание инструмента – языка программирования;
-
умение применять технологию проектирования программ;
-
владение технологией отладки программ;
-
знание простейших алгоритмов:
-
поиск элемента в массиве;
-
сортировка массива;
-
вычисление площади многоугольника;
-
определение положения точки относительно прямой;
-
генерация перестановок.
Второй и третий - соответствуют региональному и всероссийскому этапам.
Методика обучения
1. Изучение операторов языка программирования
2. Решение задач
Подбор задач должен быть таким, чтобы для их решения требовалось применение различных стандартных приемов или алгоритмов
-
моделирование задачи, ее формализация и подбор контрольного примера;
-
разработка алгоритма решения задачи;
-
рекомендуемой формой записи алгоритмов являются блок-схемы. В блок-схемах сочетаются наглядность и краткость записи. Технология разработки алгоритмов достаточно хорошо изучена и изложена в литературе. Основными принципами, которые следует соблюдать при разработке алгоритма, являются: проектирование "сверху-вниз" (поэтапная детализация); последовательность построения алгоритма "от главного к второстепенному"; применение типовых алгоритмических структур.
-
На начальных этапах обучения программированию разработка блок-схем должна быть обязательным шагом проектирования программы. Рисование блок-схем приучает школьников мыслить типовыми алгоритмическими структурами.
-
кодирование алгоритма средствами языка программирования.
Разные задачи можно решать с использованием разных языков программирования и систем программирования. Список допустимых языков и систем программирования устанавливается предметно-методической комиссией по информатике соответствующего этапа до начала проведения олимпиады с учетом рекомендаций центральной предметно-методической комиссией по информатике.
Основная группа гарантирует возможность полного решения олимпиадных задач муниципального этапа. Дополнительная группа языков и сред программирования формируется региональной предметно-методической комиссии самостоятельно.
Таблица 1
Язык
|
Транслятор
|
Среда программирования
|
Операционная система
|
C/C++
|
GNU C/C++ 4.2
|
CodeBlocks 10.05, Eclipse CDT
|
Любая
|
C/C++
|
Microsoft Visual C++ 2005
|
Встроенная
|
MS Windows
|
Object Pascal
|
Free Pascal 2.4.0
|
Lazarus 0.9.30
|
Любая
|
Object Pascal
|
Borland/Embarcadero Delphi 7.0
|
Встроенная
|
MS Windows
|
Состав дополнительной группы может формироваться путем выбора языков и сред программирования, представленных в таблице 2, а также дополняться с учетом потребностей муниципального этапа олимпиады.
Таблица 2
Язык
|
Транслятор
|
Среда программирования
|
Операционная система
|
Borland C/C++
|
Borland C++ 3.1
|
Встроенная
|
MS Windows
|
C#
|
Microsoft Visual C# 2005
|
Встроенная
|
MS Windows
|
C#
|
Mono 2.0
|
MonoDevelop
|
Любая
|
Borland Pascal
|
Borland Pascal 7.0
|
Встроенная
|
MS Windows
|
Visual Basic
|
Microsoft Visual Basic 2005
|
Встроенная
|
MS Windows
|
Python 3
|
Python3.1
|
IDLE или Wing IDE
|
Любая
|
Java
|
Oracle JDK 1.6
|
Eclipse JDT
|
Любая
|
Примечание: Допускается использование более поздних версий ПО по сравнению с указанными в таблице.
Решение задач
Задания для муниципального этапа Всероссийской олимпиады школьников
по информатике в 2010-2011 учебном году
7-8 класс
Задача 1. Золотой песок
Входной файл – gold.in
Выходной файл – gold.out
|
Время тестирования – 1 секунда.
Максимальная оценка – 100 баллов.
|
Имеется три вида золотого песка различной стоимости. Один килограмм песка первого вида стоит А1 рублей, второго вида - А2 рублей, а третьего - A3 рублей. Требуется заполнить этими видами песка три емкости, вмещающими B1, B2 и B3 килограммов золотого песка так, чтобы выполнялись условия:
-
в одной емкости может содержаться только один вид золотого песка;
-
емкости заполняются полностью;
-
суммарная стоимость золотого песка в емкостях максимальна.
Разработать программу, вычисляющую максимальную стоимость золотого песка в емкостях.
Входной файл
Входной файл содержит 6 натуральных чисел А1, А2, А3, B1, B2, B3, записанных в одной строке через пробел. Все числа не превосходят 200.
Выходной файл
Выходной файл должен содержать единственное целое число – стоимость золотого песка в трех емкостях в рублях.
Пример:
-
gold.in
|
gold.out
|
1 2 3 3 2 1
|
14
|
var A1,A2,A3,B1,B2,B3:longint;
S:longint; F1,F2:text;
Procedure Obmen(var a,b: longint);
var r:longint;
begin
if b>a then begin
r:=a; a:=b; b:=r;
end;
end;
begin
Assign(F1,'Gold.in');
reset(F1);
readln(F1,A1,A2,A3,B1,B2,B3);
Close(F1);
Obmen(A1,A2); Obmen(A2,A3); Obmen(A1,A2);
Obmen(B1,B2); Obmen(B2,B3); Obmen(B1,B2);
S:=A1*B1+A2*B2+A3*B3;
Assign(F2,'Gold.out');
rewrite(F2);
writeln(F2,S);
Close(F2);
end.
9-11 класс
Задача 1. Сортировка букв
Входной файл – sort.in
Выходной файл – sort.out
|
Время тестирования – 2 секунды
Максимальная оценка – 100 баллов
|
Дан текст, состоящий из N случайных строчных букв латинского алфавита, имеющих значение от буквы a до z. Необходимо упорядочить эти буквы по алфавиту (должно быть выполнено условие abcd…z).
Входной файл
В первой строке файла содержится число N (1 N 500000).
Во второй строке N случайных строчных букв латинского алфавита, имеющих значение от буквы a до z без разделителей.
Выходной файл
В первой строке файла содержится число N (1 N 500000).
Во второй строке N этих букв, упорядоченных по алфавиту без разделителей.
Пример
-
Sort.in
|
Sort.out
|
13
azbzcdddcdbzd
|
13
abbccdddddzzz
|
program z_1;
var f1,f2:text;
c,i:char;
cn: array['a'..'z'] of longint;
j,N:longint;
begin
Assign(f1,'sort.in'); {Связываем переменную f1с файлом}
reset(f1); {Открываем файл для чтения}
readln(f1,N); {Считываем значение N}
for i:='a' to 'z' do
cn[i]:=0;
for j:=1 to N do
begin
read(f1,c); {Считываем символ}
Inc(cn[c]); {Увеличиваем на 1 количество этих элементов}
end;
close(f1); {Закрываем файл f1}
Assign(f2,'sort.out'); {Связываем переменную f2 с файлом}
rewrite(f2); {Открываем файл для записи}
writeln(f2,N);
for i:='a' to 'z' do
for j:=1 to cn[i] do write(f2,i); {Вывод в лексикографическом порядке}
close(f2); {Закрываем файл f2}
End.
|