Главная страница «Первого сентября»Главная страница журнала «Информатика»Содержание №4/2008


Мнения

Какой должна быть школьная информатика?

Нужна ли информатика в школе?

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

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

Вопрос о том, стоит ли преподавать в школе информатику как науку, сродни вопросу о целесообразности преподавания в школе математики, физики, химии и других наук. Каждая из наук, вводя свою систему понятий, создает предпосылки для овладения своим, отличным от других наук, уровнем мышления. Информатика — это строгая дедуктивная дисциплина, ее можно считать дочерью математики. Но если математика строит математические модели объектов реального мира, выводит для них количественные соотношения и вырабатывает у учащихся математическое мышление, то информатика строит информационные модели на основе математических, реализует их в виде алгоритмов и вырабатывает у учащихся алгоритмическое мышление, как дальнейшее развитие математического. Всем известно классическое изречение, что “в каждой науке столько науки, сколько в ней математики”, поэтому никто не спорит, что математику в школе должны изучать не только будущие математики и физики, но и будущие историки и филологи. Но только с появлением информатики стало возможным оживлять математические модели, получать от них полезные для практики результаты. Из этого следует, что в современном информационном обществе ни одна из наук не может полноценно развиваться без использования методов информатики. Ясно также, что выпускник школы, стремящийся получить высшее образование по какой бы то ни было специальности, должен хотя бы на самом начальном уровне познакомиться с информатикой как с наукой, а не как с набором пользовательских навыков для работы с компьютером.

Что нужно изучать в школьной дисциплине информатике?

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

1) элементарную арифметику и алгебру;

2) представление, т.е. кодирование, информации;

3) элементарную математическую логику;

4) общее понятие алгоритма и его свойств;

5) общее понятие об устройстве компьютера, функционирования в нем операционной системы и программного обеспечения;

6) язык программирования и его реализацию, т.е. программную среду для разработки и трансляции программ на этом языке.

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

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

Рассматривая содержание дисциплины информатики, нельзя обойти вопрос о соотношении между профильным и непрофильным обучением. На наш взгляд, даже при непрофильном обучении информатике в ее содержание должны входить все перечисленные разделы хотя бы в минимальном объеме, достаточном для формирования у учащихся элементарного алгоритмического мышления. Что особенно важно, следует так распределить учебное время, чтобы на собственно алгоритмизацию приходилось более половины, а лучше, если не менее чем 3/4 всего времени.

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

О выборе языка программирования и его реализации в виде программной среды

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

Требованию универсальности удовлетворяют многие современные языки программирования. Что касается простоты и понятности, то большинство языков профессионального программирования, такие, как C, C++, C#, Java и многие другие, излишне сложны для начального обучения. Требованиям простоты и понятности удовлетворяет школьный алгоритмический язык, а также язык Паскаль и его варианты. Язык Бейсик прост, но настолько портит стиль программирования, что тому, кто начал программировать на этом языке, трудно впоследствии стать хорошим программистом. Что касается школьного алгоритмического языка, то для наиболее распространенных современных операционных систем (Windows, Linux) нет его доступной реализации.

Таким образом, выбор не очень большой и сводится к выбору варианта языка Паскаль и его реализации. Надо отметить, среди тех школ России, где преподают информатику, чаще всего используют именно Паскаль, причем в большинстве случаев разработки фирмы Borland: Turbo Pascal или Delphi. Однако это покупные системы, поэтому сейчас все чаще используют свободно распространяемые продукты, в частности, транслятор Free Pascal и систему Lazarus. К сожалению, эти продукты реализованы с худшим качеством, чем системы фирмы Borland: они более громоздки, иногда в них встречаются ошибки.

В этой связи стоит обратить внимание на свободно распространяемую систему BlackBox (Блэкбокс) фирмы Oberon microsystems, Inc., в которой при участии самого Н.Вирта реализован язык Component Pascal (Компонентный Паскаль), один из последних языков семейства Pascal. Этот язык несколько отличается от традиционного языка Паскаль, однако эти отличия, если не писать сложные программы с использованием методов объектно-ориентированного программирования, не слишком существенны и в основном направлены на улучшения стиля программирования. Что еще важно, среда Блэкбокс полностью русифицирована, к тому же она настраивается так, чтобы в ней не было ничего лишнего и непонятного для начинающего программиста. Кроме того, она компактна, не требует больших ресурсов от компьютера и может работать в различных версиях операционной системы Windows или Linux.

Кроме выбора языка программирования и его реализации, необходимо также определить тот набор элементов языка, который достаточен для освоения алгоритмизации в необходимом объеме. Еще в 1960-е годы было доказано, что если универсальный язык программирования наряду с присваиванием и набором базовых операций для переменных и констант содержит всего лишь три вида структурных конструкций (последовательность действий, условный выбор, цикл с условием), то всего этого достаточно для записи любых алгоритмов. Для того чтобы алгоритмы записывались в более простом и компактном виде, надо также уточнить набор базовых типов и структур данных, а также добавить операторы ввода и вывода данных. В целом для Паскаля или Компонентного Паскаля будет достаточен следующий набор элементов языка:

1) базовые элементарные типы данных: целые, вещественные, символьные и логические; константы и переменные, их описание;

2) структуры данных: одно- и двумерные массивы; в том числе строки символов, как особые массивы; описание массивов статическое;

3) присваивания и выражения с использованием операций над базовыми элементарными типами данных;

4) применение в выражениях вызовов стандартных функций для базовых типов данных;

5) вызовы наиболее простых стандартных процедур ввода и вывода базовых типов данных;

6) условный оператор в полной и сокращенной форме;

7) цикл с параметром (FOR);

8) цикл с условием (WHILE).

Кроме того, требуется изучить общие принципы написания программ:

1) структуру программы, последовательность описаний, операторов;

2) принцип вложенности конструкций языка.

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

О преподавании алгоритмизации в рамках дисциплины информатики

Чтобы научиться разрабатывать программы, полезно предварительно изучить сам процесс разработки. Для не очень сложных программ этот процесс может состоять из следующих этапов:

1) анализ входных и выходных данных, их типов, запись операторов ввода и операторов вывода данных;

2) составление совокупности тестов для проверки работоспособности программы (тест — это набор конкретных значений входных данных и соответствующий им набор значений выходных данных);

3) разработка алгоритма в целом, без конкретизации отдельных мелких действий;

4) написание программы путем детализации всех действий (методом пошаговой разработки программы);

5) анализ трудоемкости алгоритма (программы) в зависимости от размерности входных данных;

6) трансляция программы, получение из исходного текста исполняемого модуля программы;

7) тестирование и отладка программы с использованием заготовленных тестов.

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

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

1) вычисления по формулам для целых и вещественных данных;

2) рекуррентные последовательности и алгоритмы, включая вычисление сумм, минимального и максимального элементов в массиве, вычисления по схеме Горнера, приближенные итеративные вычисления;

3) обнаружение подпоследовательностей в массиве;

4) задачи с упорядоченными массивами — поиск, слияние, простая сортировка;

5) задачи с матрицами, просмотр двумерного массива по строкам, столбцам, диагоналям;

6) задачи обработки текста (символьных строк и массивов), поиск по образцу, выделение слов из текста, формирование словаря (массива строк) и его сортировка;

7) задачи с информационными таблицами — поиск, слияние, косвенная сортировка по столбцам;

8) простейшие логические игры с противником.

Последовательность изучения задач и алгоритмов должна подчиняться принципу “от простого — к сложному”. Целесообразно также начинать с тех задач и алгоритмов, которые требуют самых понятных для учащихся типов данных — целых и вещественных. Затем можно начать использование логических операций. Знакомство с символьными данными и строками можно отложить до момента изучения задач обработки текста и задач с информационными таблицами.

О Едином Государственном экзамене по информатике

По дисциплине “Информатика и ИКТ” для средней школы Министерством образования утверждены три стандарта: Стандарт основного общего образования, Стандарт среднего (полного) общего образования (базовый уровень), Стандарт среднего (полного) общего образования (профильный уровень). Если в точности следовать этим стандартам, то о реальном (а не на бумаге для отчета) формировании алгоритмического мышления у учащихся лучше не вспоминать. К слову сказать, ни один из последних рекомендованных Министерством школьных учебников не соответствует ни одному из стандартов. Но и алгоритмическое мышление с их помощью сформировать тоже вряд ли возможно. Но, как всегда, “строгость российских законов компенсируется их необязательностью”, поэтому учителям приходится как-то выкручиваться.

С появлением Единого государственного экзамена (ЕГЭ) по информатике у учителей появился хоть какой-то ориентир, чему все же следует учить школьников. К счастью, в ЕГЭ основной упор сделан на формирование алгоритмического мышления у учащихся. Содержание заданий в ЕГЭ определяется двумя утвержденными Федеральной службой по надзору в сфере образования и науки документами: 1) кодификатором элементов содержания по информатике, 2) спецификацией экзаменационной работы по информатике. Из них следует, что наибольший вклад в общую оценку (77,5% первичного балла) дают задания, относящиеся к следующим четырем разделам: “Информация и ее кодирование” (17,5%), “Основы логики” (12,5%), “Алгоритмизация и программирование” (32,5%), “Технология программирования” (15%), причем именно последние два раздела непосредственно отвечают за формирование алгоритмического мышления. Следует также учесть, что окончательная оценка формируется путем умножения полученных первичных баллов на весовые коэффициенты, которые, в свою очередь, вычисляются централизованно, после обработки всех по России выполненных работ. При этом весовой коэффициент для некоторого задания будет тем выше, чем меньший процент учащихся его выполнил правильно. Так как именно среди перечисленных четырех разделов больше всего заданий повышенного и высокого уровня сложности, то в реальности задания этих четырех разделов могут дать более 90% вклада в общую оценку за весь экзамен.

Чтобы полнее представить тематику заданий, особенно тех, в которых требуется составление алгоритмов и программ, следует изучить также демонстрационный вариант ЕГЭ по информатике. Заметим, что предложенный нами (в предыдущем разделе статьи) набор задач и алгоритмов по охвату тематики полностью покрывает ЕГЭ. В настоящее время при участии автора статьи готовится к изданию учебное пособие, в котором реализована изложенная здесь концепция обучения информатике.

Автор надеется, что затронутые им проблемы найдут отклик у читателей и приведут к конструктивной дискуссии.

Ю.. Л.. Костюк,
проф., завкаф. ф-та информатики ТГУ, член научно-методического совета по информатике при ФИПИ Минобрнауки РФ

TopList