Научная статья на тему 'Задачи школьных олимпиад по информатике'

Задачи школьных олимпиад по информатике Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
2173
175
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ШКОЛЬНАЯ ИНФОРМАТИКА / ОЛИМПИАДА ПО ИНФОРМАТИКЕ / ТВОРЧЕСТВО / ТВОРЧЕСКАЯ ЗАДАЧА / ПРОГРАММИРОВАНИЕ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Ванькова Валентина Сергеевна, Мартынюк Юлия Михайловна, Даниленко Софья Валерьевна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Задачи школьных олимпиад по информатике»

Ванькова В.С.1, Мартынюк Ю.М.2, Даниленко С.В.3

Тульский государственный педагогический университет им. Л. Н. Толстого, г. Тула, кандидат физико-математических наук, доцент, vsvankova@ gmail . com

2Тульский государственный педагогический университет им. Л. Н. Толстого, г. Тула, кандидат

педагогических наук, доцент, juliamart@ya.ru

3Тульский государственный педагогический университет им. Л. Н. Толстого, г. Тула, кандидат

педагогических наук, sv-danilenko@rambler.ru

ЗАДАЧИ ШКОЛЬНЫХ ОЛИМПИАД ПО ИНФОРМАТИКЕ

КЛЮЧЕВЫЕ СЛОВА

Школьная информатика, олимпиада по информатике, творчество, творческая задача, программирование.

АННОТАЦИЯ

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

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

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

Что есть творчество? Можно ли ему научить? Как развить творческие способности? Как определить наличие творческих возможностей у человека? Эти вопросы всегда волновали человека, и на них нет однозначного ответа. В философии категория творчества трактуется как некий «процесс человеческой деятельности, создающий качественно новые материальные и духовные ценности; возникшую в труде способность человека из доставляемого действительностью материала созидать новую реальность, удовлетворяющую многообразным общественным потребностям». Главное в этом процессе — созидание новой реальности. Но ведь реальность сама по себе не может возникнуть без участия в этом процессе созидающего субъекта. Кто создает эту новую реальность? Чьи способности, мотивы, знания и умения влияют на такие качества конечного продукта как новизна, оригинальность и уникальность? Психология дает на этот вопрос достаточно ясный и однозначный ответ, трактуя понятие творчества через личностный и процессуальный аспекты. Определяющую роль в творчестве играют «воображение, интуиция, неосознаваемые компоненты умственной активности, а также потребности личности в самоактуализации, в раскрытии и расширении своих созидательных возможностей». Именно с этой точки зрения мы рассматриваем процесс формирования творческих способностей у школьников при изучении информатики вообще и при подготовке к олимпиаде по информатике, в частности.

Специфика информатики как школьного учебного предмета определяется ролью и местом информатики как науки в развитии человеческого общества. Упрощенно определение

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

Любой школьный предмет отличается своим, только ему присущим набором базовых понятий и технологий. В качестве базовых понятий информатики можно выделить понятия информации, модели, алгоритма, программы. К базовым технологиям следует отнести создание алгоритмов, создание информационных моделей, работу с системным и прикладным программным обеспечением. Базисность этих технологий и понятий основывается на существовании общей технологии создания алгоритмов решения задач и единой технологии составления информационных моделей жизненных задач, которые конкретизируются в каждом из школьных предметов. Таким образом, информатика — это школьный учебный предмет, содержание которого составляет изучение перечисленных технологий. Общими целями, стоящими перед школьным курсом информатики, следует считать формирование и развитие научных и технологических знаний и умений, необходимых для понимания информационной точки зрения на мир, для использования информационных технологий в практической деятельности. Этими целями определяется комплекс задач, решаемых школьной информатикой:

1. Формирование представлений об информации; единстве информационных принципов строения и функционирования различных самоуправляемых систем; роли информационных технологий в развитии общества;

2. Развитие теоретического, творческого мышления; формирование операционного мышления, направленного на выбор оптимальных решений;

3. Формирование компьютерной грамотности и информационной культуры.

Из всего многообразия обозначенных задач мы выделяем формирование творческого мышления школьника в процессе решения олимпиадных заданий по информатике. Как правило, каждое такое задание, которое обязательно можно отнести к разряду стандартных классических задач программирования, требует нестандартного, творческого подхода к его решению. Идеи творческого подхода к решению олимпиадных задач находят свое отражение в замысловатых, порою очень запутанных формулировках условия, которые достаточно часто содержат в себе разного рода аллюзии и аналогии, отсылая нас к фольклорному и литературному наследию. Вместе с тем, настоящее творчество начинается не в процессе параметризации таких задач, а именно в процессе их решения, в котором всегда происходит акт творчества, находится новый путь или создается нечто новое. Здесь и требуются особые качества ума, такие, как наблюдательность, умение сопоставлять и анализировать, комбинировать, находить связи и зависимости, закономерности и т.д. — все то, что в совокупности составляет содержание понятия «творческие способности». Человек, обладающий такими качествами, без труда сможет использовать построенную им абстрактную модель, теоретическое построение, некий «сухой» алгоритм в сложившихся жизненных обстоятельствах.

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

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

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

• динамическое программирование;

• перебор с возвратом;

• алгоритмы на графах;

• вычислительная геометрия;

• комбинаторные алгоритмы;

• рекурсивные алгоритмы;

• жадные алгоритмы.

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

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

Рассмотрим некоторые примеры решения олимпиадных задач.

Задача «Абракадабра».

Последовательность из латинских букв строится следующим образом:

• на нулевом шаге она пуста;

• на каждом последующем шаге последовательность удваивается (т.е. приписывается сама к себе) и слева к ней добавляется очередная буква алфавита (а, Ь, с, ...).

Требуется написать программу, которая по заданному числу п определяет символ, который стоит на п-ом месте последовательности, получившейся после 26-го шага.

Решение задачи основано на построении рекурсивной функции, соответствующей условия.

Рассмотрим таблицу (см. Табл.1), в которой опишем последовательность и ее длину на каждом шаге алгоритма:

Таблица 1. Изменение последовательности на каждом шаге алгоритма

шаг последовательность длина

0 0=20-1

1 a 1=2^1

2 baa 3=22-1

3 cbaabaa 7=23-1

4 dcbaabaacbaabaa 15=24-1

Пусть abra(k,n) — n-ая буква в последовательности, полученной на k-ом шаге (k=1, 2, ..., 26). Тогда abra(k,1) — это k-ая буква латинского алфавита (по условию построения последовательности). Этот факт можно взять в качестве базы рекурсии, а функция для определения этой буквы в синтаксисе языка Паскаль будет выглядеть следующим образом: function bukva(kk:integer):char; var alf:string[26];

begin

alf:='abcdefghijklmnopqrstuvwxyz'; bukva:=copy(alf,kk,1);

end;

Тогда функцию abraQ можно записать так:

bukva(k), если n=1 abra(k,n)=abra(k-1,n-1), если n<2k-1

abra(k-1,n-2k"1), если n>2k-1 Представленную математическую модель можно реализовать при помощи любого языка программирования высокого уровня. Однако, нужно отметить, что требованием всех олимпиад, начиная от зональных и выше, является написание программ на языке С. Задача «Яблоко от яблони».

У Пети в саду растет яблоня. Воодушевленный историей об Исааке Ньютоне, который, как известно, открыл закон всемирного тяготения после того, как ему на голову упало яблоко, Петя с целью повысить свою успеваемость по физике часто сидит под яблоней.

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

Таким образом, в любой момент каждое яблоко либо висит на ветке, либо падает строго вниз, причем все яблоки, кроме первого, чтобы начать падать, должны сначала соприкоснуться с каким-либо другим падающим яблоком.

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

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

Один из самых распространенных способов представления графа — это представление в виде матрицы смежности, в которой в элементе с индексами (i, j) записывается информация о дугах, ведущих из вершины с номером i в вершину с номером j. В важном частном случае простого графа, т.е. графа, в котором каждая упорядоченная пара вершин соединена не более чем одной дугой, и отсутствуют дуги вида (u, u), элементы матрицы могут принимать значения 0 или 1 в зависимости от того, существует ли соответствующая дуга. Для нашей задачи вполне приемлемо такое представление графа.

Для решения задачи можно применить процедуру поиска в ширину и в глубину. Отметим, что реализация поиска в глубину в программе обычно проще, поскольку в качестве стека можно использовать рекурсивный стек языка программирования.

Пусть матрица смежности будет представлена двумерным массивом m, элементы m[i,j] которого принимают значение «истина», если существует дуга (i, j) и «ложь», если такой дуги не существует. Тогда описать поиск в глубину для вершины с номером k, которая находится на вершине стека, можно с помощью следующей процедуры: void find(int m, int k, int a[n][n]) { int i; p[k]=i;

for (i=0; i<m; i++) if ((a[k][i]==1)&& (p[i]!=1))

find(m,i,a); }

Здесь параметр a — матрица смежности, p — массив отметок, k — номер вершины, находящейся в обработке (на вершине стека), m — количество вершин стека.

Рассмотрим теперь граф, вершинами в котором будут яблоки. Если i-ое яблоко задевает j-ое, то существует ребро из i-ой вершины в j-ую, т.е соответствующий элемент матрицы смежности имеет значение «истина». Тогда множество вершин, достижимых из первой вершины, и будет множеством упавших яблок.

Для выяснения того, задевает ли i-ое яблоко при падении j-ое, надо сначала сделать так, чтобы координаты x, y, z соответствовали не верхней точке, а центру яблока. Для этого необходимо отнять r от z у всех яблок. Теперь полагая, что Zi и Zj — координаты центров соответствующих яблок, для того чтобы проверить, что i-ое яблоко задевает j-ое, достаточно проверить следующие условия:

1) Zi >Zj;

2) проекции яблок, представляющие собой круги, на плоскость, параллельную (OXY), пересекаются. Чтобы проверить, пересекаются ли два круга, достаточно проверить, что

В основном блоке программы следует предусмотреть считывание данных из входного файла и формирование матрицы смежности. Затем необходимо осуществить поиск в глубину для первого яблока при помощи функции find. Сформированный массив отметок будет определяющим для вывода результата.

Рассмотренные примеры наглядно демонстрируют использование классических алгоритмов в новых нестандартных условиях, соответствующих традициям и духу «олимпиадного творчества». «Продраться» сквозь многоликость формулировки, вычленить главное, построить математическую модель и алгоритм решения — это трудно, но потрясающе увлекательно! Большие трудности могут дать и большие радости, радости высшего, человеческого порядка — радость преодоления, радость открытия, радость творчества. Наша действительность требует от человека не шаблонных, привычных действий, освященных многовековыми традициями, а подвижности мышления, быстрой ориентировки, творческого подхода к решению больших и малых задач. Человеку с творческим складом ума легче найти «изюминку» в любом деле, увлечься любой работой и достичь высокой степени профессионализма.

Литература

1. Осмаловская, С.В. Роль творческих заданий в подготовке будущих учителей информатики./ Вестник ТГПУ им. Л. Н. Толстого. Научный журнал № 4. Естественные и физико-математические науки./ С.В.Осмаловская, Ю.М.Мартынюк. — Тула: Изд-во ТГПУ 2007.

2. Мартынюк, Ю.М. Обучение школьников программированию через систему творческих задач/ Ю.М.Мартынюк, В.С.Ванькова, С.В.Даниленко/ Современные научные исследования и инновации. 2015. № 7-4(51). — С.76-80. URL: http://web.snauka.ru/issues/2015/07/545.

3. Долинский, М.С. Решение сложных и олимпиадных задач по программированию: Учебное пособие. — Спб.: Питер, 2006.

i Надоели баннеры? Вы всегда можете отключить рекламу.