Как организовать решение задач по программированию при проведении ЕГЭ по информатике и ИКТ в компьютеризированной форме

А.Г. Кушниренко, Зав. отделом учебной информатики НИИСИ РАН, Доцент механико-математического факультета МГУ Сегодня, в начале 21 века, можно прожить, не зная высшей математики. Но трудно прожить, не умея складывать, вычитать и умножать хотя бы двузначные числа, не зная азов арифметики, не понимая простейших формул, не понимая языка графиков и диаграмм. Точно так же с каждым годом будет все труднее прожить, не умея хотя бы чуть-чуть программировать, не понимая азов программирования. В науке числа и формулы помогают понятнее объяснить физику, биологию, экономику. В промышленности и в быту числа и формулы используются как часть повседневного языка, на котором люди общаются, решая производственные и личные задачи. Точно так же освоение основных понятий программирования помогает члену современного информационного общества как в учебе, в освоении наук, так и в производстве и в быту, где все большую часть времени мы проводим, пользуясь информационными технологиями.

Еще несколько веков назад арифметика считалась (да и была) трудной наукой, необходимой и доступной лишь избранным членам общества. Сегодня же с основами арифметики справляются все младшеклассники. Точно так же и программирование еще 50 лет назад считалось (да и было) таинственным и трудным делом, необходимым и доступным лишь узкому кругу посвященных. А сегодня, в 2010 году, российским образовательным стандартом предусмотрено изучение элементов информатики, включая азы программирования, в начальной школе. Язык, система общепринятых обозначений, нотация алгебры и высшей математики, которой мы сегодня успешно пользуемся в школах, университетах, в научных лабораториях и заводских цехах, были выработаны сравнительно недавно, менее 400 лет назад, в начале промышленной революции и оказались столь успешными, что за это время мало изменились. Менее 50 лет назад, в начале компьютерной революции, произошло столь же успешное изобретение и всемирное внедрение еще одной системы обозначений, алгоритмической нотации, нотации последовательного программирования. Эта нотация расширяет интернациональную систему алгебраических обозначений, описывает общий знаменатель современных последовательных языков программирования и в мире быстро меняющихся информационных технологий вместе с математической нотацией представляет собой островок стабильности, необходимый и науке и промышленности и образованию. Подобно тому, как за последние столетия не устарели алгебраические обозначения и понятия, которые они позволяют удобно выражать, за последние четверть века не устарел набор основных понятий и обозначений, используемых в последовательном программировании. В момент начала информатизации школьного образования в СССР, в 1985 году, выдающийся русский ученый Андрей Ершов предложил конкретную форму алгоритмической нотации, с использованием русской лексики, для системы школьного образования СССР. Эта нотация была достаточна для описания всех известных к тому времени важнейших числовых и текстовых алгоритмов. Это свойство предложенной Ершовым нотации сохранилось и в наши дни. Набор основных понятий и конструкций стандартизованной алгоритмической нотации Ершова невелик, и вместе с примерами умещается на одной странице типы: цел вещ сим лит лог; простые переменные: цел m, n, номер_дома массивы: целтаб число_дней[1:12]; литтаб цифра[0:9]; вещтаб X[1:3, 1:N] оператор присваивания: x:=y+1; номер_дома := 76; цифра[0]:=”ноль” арифметические выражения, использующие операции + - * / и операцию степень: ** частное и остаток от деления целых чисел div(m,n) и mod(m,n), стандартные элементарные функции sqrt, sin, cos, lg, ln, exp, ... логические выражения, использующие операции и, или, не сравнения чисел: xy, x>=y, x=y, x<>y сравнения символов и строк x=y, x<>y логические значения да, нет текстовые выражения, использующие опeрацию конкатенация C:=”пар”+”о”+”воз” и доступ по индексу к элемента строки символов переменной длины: C[1]:='П' циклы пока, N раз, для: ветвление: если x>y то m:=x иначе m:=y все процедуры: алг <имя>(<аргументы и результаты>)нач <тело> кон Фрагменты программ, записанные в алгоритмической нотации: 1. Поиск максимального из трех чисел x,y,z: m:=x | комментарии в конце строки: если y>m то m:=y все | m=max(x,y) если z>m то m:=z все | m=max(x,y,z) 2. Число различных корней уравнения x(x-a)(x-b)=0 n:=1 | n = число разл. корней x=0 если а<>0 то n:=n+1 все | n = число разл. корней x(x-a)=0 если b<>0 и b<>a то n:=n+1 все | n = число разл. корней x(x-a)(x-b)=0 3. Число максимальных среди чисел x,y,z m:=x; n:=1 если y=m то n:=n+1 все если y>m то m:=y; n:=1 все | n= число максимальных среди чисел x,y если z=m то n:=n+1 все если z>m то n:=1 все | n= число максимальных среди чисел x,y,z 4. Замена в строке С пробелов на подчеркивания i:=1 нц пока i<=длин(С) . если C[i]=” ” то C[i]:=”_” все . i:=i+1 кц 5. Сумма элементов массива вещественных чисел алг сумма(арг цел N, арг вещтаб A[1:N], рез вещ S) нач цел i=1 . S:=0 . нц пока инд<=N . . S:=S+A[i] . . i:=... . кц кон Первоначально, Ершов рассматривал эту нотацию как псевдокод, язык, на котором в безмашинном курсе информатики удобно записывать и обсуждать простейшие алгоритмы. На практике оказалось, что возможность автоматического исполнения обсуждаемых алгоритмов на порядок ускоряет развитие алгоритмического мышления и появились программные реализации псевдокода Ершова. Так, сама жизнь превратила предложенный Ершовым псевдокод в ШАЯ (Школьный Алгоритмический Язык). Работать на этом языке можно в среде программирования КуМир, разработанной, как и язык ШАЯ, с одной единственной целью – обеспечить эффективную поддержку базового курса алгоритмизации. В первых учебниках Ершова и в первых школьных курсах информатики доля программирования составляла 60-70% . С течением времени программирование стало вытесняться изучением Информационно-Коммуникационных Технологий и к моменту введения ЕГЭ по информатике доля программирования в учебных программах (и реально проводимых школами курсах) упала до 15-20%. Примерно ту же долю (отношение суммы первичных баллов вопросов по программированию к общей сумме первичных баллов) программирование сохранило и в ЕГЭ 2010 и 2011 гг.. Введение в ЕГЭ вопросов по программированию, более того, вопросов, ответом на которые являются программы, породило ряд технических, социальных и организационных проблем. Программы являются очень сложными объектами, как по форме, так и по содержанию. Формы записи программ, даже из числа используемых в школьной практике, чрезвычайно многообразны. Не используя компьютер, трудно проверить, правильно ли программа записана. Еще труднее понять, как работает программа и дает ли она требуемый в условии задачи результат. Теоретически доказано, что вообще не существует конечного числа правил, руководствуясь которыми можно проверить любую программу. На первых ЕГЭ по информатике и ИКТ все перечисленные проблемы были тем или иным путем, с той или иной степенью успеха решены. Программы разрешалось записывать на любом известном экзаменуемому языке программирования. Задачи, ответом в которых являлась программа, проверялись экспертами, которые подходили к делу «по-человечески»: за ошибки в форме записи программы оценка не обнулялась, а лишь снижалась, неправильная работа программы, если она обнаруживалась экспертами-проверяющими, сверялась со списком типичных возможных ошибок, прилагаемым к условию задачи в целях объективизации процедур проверки. Как ни удивительно, эта система работала. Однако жизнь поставила задачу компьютеризации ЕГЭ по информатике и ИКТ и старые методы обеспечения процедур решения задач ЕГЭ по программирования и проверки этих решений стали неприменимыми. Итак, представьте себе. На экзамене школьник составляет программу на компьютере, на каком-то языке программирования Х. Он не только вводит текст программы, но, как и принято в программистской практике, отлаживает ее: запускает программу на компиляцию, запускает на выполнение, ищет ошибки. Все это требует установки на компьютере экзаменуемого некой сложной прикладной программы – среда программирования на языке Х. Разумеется, должно быть заранее объявлено, что язык программирования Х будет разрешен к использованию во время проведения ЕГЭ по информатике и ИКТ, а значит, среда программирования на языке Х будет гарантировано установлена на каждом компьютере в каждом пункте приема экзамена (ППЭ). Но погодите, на компьютере экзаменуемого в ППЭ, установлена какая-то операционная система: Windows XP, Windows 7, Windows Vista, Alt Linux 4.0, Alt Linux 5.0, и т. п. Среда программирования на языке Х должна уметь работать в каждой из этих операционных систем. Не забудем также, что среда программирования на языке Х должна быть приобретена легально. Более того, возможность тренировки с использованием среды программирования на языке Х должна быть обеспечена на компьютерах всех образовательных учреждений и любых домашних компьютерах, какими бы скромными ни были ресурсы этих компьютеров и сколь бы старыми ни были эти компьютеры и установленные на них операционные системы. Значит, должна быть техническая и юридическая возможность установки среды программирования на любом из перечисленных выше компьютеров. Наконец, школьник будет составлять программу на языке Х на одном компьютере, пользуясь одной версией среды программирования Х, а проверяться эта программа будет на другом компьютере, с другой версией среды программирования, и кто-то должен позаботиться о совместимости, а также оперативно вмешиваться в ситуациях, когда результаты работы программы школьника в этих двух системах совпали. Отсюда вытекает несколько требований к языку Х, допущенному к использованию на компьютеризированном экзамене по информатике и ИКТ: - должна существовать среда программирования на языке Х с не слишком сложным интерфейсом; - реализация этой среды программирования должна быть многоплатформенной (работающей в различных версиях операционных систем типа MS Windows и Linux; - как программный продукт эта среда прoграммирования должна быть свободно распространяемой; - должна существовать организация, способная и желающая осуществлять сопровождение и поддержку среды программирования в течение нескольких лет. Из сказанного следует, что на компьютеризированном ЕГЭ, когда бы он ни был введен, в 2012 году или позже, не будет предоставлена возможность составления программ на любом из 38 языков, использованных школьниками при решении задач по программированию в ЕГЭ 2010 года. Для отработки модели компьютеризированного ЕГЭ по информатике и ИКТ, закончившейся пробным экзаменом 29 ноября 2010 года, удалось найти два языка и две системы программирования, удовлетворяющих перечисленным выше условиям. Это система программирования КуМир на школьном алгоритмическом языке и система программирования Free Pascal на языке программирования Паскаль. Обе системы взялся поддерживать НИИ системных исследований российской академии наук (НИИСИ РАН). Тем самым, удалось опробовать многоязыковую систему проведения ЕГЭ по информатике и ИКТ в компьютеризированной форме. Сочетание двух языков и двух сред программирования, учебной и производственной, представляется удачным стартом. Можно прогнозировать, что как учебные, так и производственные языки программирования найдут свою нишу в системе подготовки к ЕГЭ. Не исключено, что к моменту внедрения компьютеризированной формы экзамена по информатике и ИКТ номенклатура поддерживаемых (разрешенных к использованию) языков и сред программирования будет расширена. Однако уже сейчас можно назвать направления, в которых она расширена не будет. Не будут добавлены языки программирования, для которых имеется только среда программирования, установка которой требует приобретения лицензий. Не будут добавлены языки программирования, для которых имеется свободно распространяемая среда программирования только для ОС типа MS Windows или только для ОС типа Linux. Не будут добавлены языки программирования, для которой имеется свободно рспространяемая многоплатформенная среда программирования, которую не берется поддерживать ни одна авторитетная российская организация, учреждение или компания. Переход к компьютеризированной форме проведения ЕГЭ по информатике и ИКТ, сопутствующее ему увеличение числа задач, ответом к которым является программа, требует повышения наглядности и эффективности среды программирования с целью уменьшить затраты обучаемого на технические проблемы и увеличить долю времени уходящую на преодоление алгоритмических трудностей. В этом направлении в системе КуМир предложен ряд нижеследующих решений, которые могли бы оказаться полезными и в средах программирования на производственных языках. А) Постоянный синтаксический контроль правильности. Во время ввода или исправления программы компилятор КуМира постоянно обрабатывает вносимые человеком изменения и постоянно выдает на полях программы предупреждения о замеченных ошибках или несоответствиях. КуМир отслеживает все синтаксические ошибки, которые в принципе обнаружимы при редактировании: ошибки в записи выражений, попытки изменения значений аргументов процедуры, несоответствие параметров при вызове по числу и типу и т.д. В любой момент редактирования программы готов откомпилированный код, который может быть запущен на выполнение без малейшей задержки. Б) Прозрачный отладчик. При выполнении программы КуМир привязывает к исходному тексту и показывает Человеку все ошибки процесса исполнения: попытки использования переменных с неопределенным значением, выход индекса за границу массива, переполнения и т.д. В пошаговом режиме КуМир показывает на полях результаты присваиваний и проверок условий. Это позволяет новичку составлять и отлаживать простейшие программы, не пользуясь командами ввода-вывода и обходясь без отладчика.

Теги: 
ВложениеРазмер
798.doc152.5 КБ