МОДЕЛИРОВАНИЕ ВВОДА ДАННЫХ В УЧЕБНО-МЕТОДИЧЕСКОМ ПРАКТИКУМЕ MYPASCAL
М.Ю. Сидляр
Тамбовский государственный университет имени Г.Р. Державина, г. Тамбов, Россия
Учебно-методический практикум
MyPascaL [2] разработан кафедрой информатики и информационных
технологий. В нем реализован наглядный просмотр всех типов данных (переменных массивов, файлов, множеств, записей) в режиме трассировки, разобраны решения стандартных задач по Pascal и Logo (455 шаблонов) по 44 темам,
а также имеется задачник, в который входят задания для решений на программирование (более 750 задач в более чем 150 файлах) и блок автопроверки решения.
Для реализации всех этих возможностей (запуска программы) и грамотного просмотра сложных типов данных в режиме трассировки был разработан технический язык «QwaziPascal», Программа, записанная в языке QwaziPascal, состоит из двух частей: Видимой части (TPascal) и Выполняемой части (QPascal). Команды выполняемой части QPascal запускались средой выполнения последовательно. Команды выполняемой части QPascal для грамотной трассировки имеют неявную ссылку на номер строки «Видимой части».
Среди команд языка QPascal были ввод переменных, вывод на экран, оператор присвоения, работа с файлами, работа с графикой. Многие возможности языка программирования TurboPascal были реализованы в языке QPascal. Объектами работы операторов являются экран, окно ввода данных, переменные, таблицы массивов, история переменных, окно файлов и др. Например, при выполнении команды из списка TPascal readln(a); со связанной с ней командой QPascal {readln}a. В текущей строке объекта «экрана» с текущего места появляется объект «окно ввода данных». Определяется тип переменной «а». При вводе данных идет проверка на соответствие ввода. В том случае, если переменная «а» имеет тип integer, число 2.345 не введется только из-за того, что точка не сможет ввестись с клавиатуры. После ввода числа 46 в объекте «окно ввода» это число появляется в текущем месте «экран». Одновременно с
этим просчитывается максимальная длина экрана (если она превышается, то необходимый кусочек введенного значения переменной переносится на новую строку). После этого объект «экран» получает сведение о том, что следующая строка становится текущей. Объект «переменная» записывает новое значение 46 переменной «а» в память и в собственную структуру. А объект «история переменных» записывает в очередную свою строку readln(a); и новое значение переменной «а» 46, значения всех остальных описанных переменных сохраняются. Фактически выполнялась только команда «{readln}a» языка QPascal, а связь
с TPascal пригодилось только для «истории переменных». Связь эта нужна еще и для грамотной трассировки. Для реализации просмотра шаблонов в режиме трассировки и просмотра всех типов данных, просмотра блок-схем языка QwaziPascal (TPascaL+ QPascaL) было достаточно. Однако для создания более функциональной программы необходим был редактор, чтобы в приведенном шаблоне можно было строки вводить (блокировать, менять строки местами). Для этого был реализован конструктор в виде «Последовательного шаблонного ввода». Сначала
осуществляется выбор команды при помощи выбора команды по имени и комментарию из списка. Далее происходит выбор данных или переменных. Внутрь вставляемой команды мы сможем записать ровно столько параметров, сколько необходимо: не больше и не меньше. После ввода каждого параметра на экран выводится информационная характеристика следующего параметра, ввод которого ожидается. Такая реализация вставки команды обеспечивает не только безошибочный ввод конструкции. При последовательном вводе параметров заполняется текст строки, предназначенной для ввода. Например, для ввода оператора FOR к=1 ^ 4 do нужно выбрать конструкцию: «^г .. ^ ..», затем ввести имя-параметр. Далее вводим начальное значение
переменной и конечное значение переменной. Вводим последовательно значения: I; 1; 4. Подробно процесс работы с конструктором в виде «Последовательного шаблонного ввода» описан
в наших работах [3].
При вставке оператора в код TPascal вставлялась «видимая часть конструкции», а в код программы QPascal вставлялся шаблон команды. Переменные, вводимые последовательно, этот шаблон грамотно заполняли. Конструктор позволяет менять строки местами, блокировать текущую строку.
Инструмент «Конструктор» изменил всю концепцию программы MyPascaL. Теперь задачи из задачника выполняются в среде MyPascaL, не выходя в естественный язык TurboPascal. Задачи и их решения стало необходимо сохранять, и такая возможность появилась.
Однако последовательный шаблонный ввод оказался не совсем стандартным. Он оказался безошибочным, но недостаточно удобным. Например, для замены одного числа в команде «Line(120,234,345,90);» нужно было заменить эту строку строкой, в которой из длинного списка сначала выбиралось
слово Line потом вводились параметры 120 234 345 и только потом 95 (которое заменяло бывшее значение 90). Такая избыточная информация при замене была неоправдана. Кроме этого, список, состоящий из всех 400 операторов, было тяжело перематывать. Поиск по контексту решал эту проблему лишь отчасти. Грамотно сделанный запрос сужал область поиска. Но выбирать команду из неизвестных всегда сложно, и окончательный выбор оставался за учителем. Проблема большого списка операторов решалась добавлением к конструктору блока «ввод присвоения», что уменьшило количество команд до 240. Но использовать попеременно «выпадающий список» для выбора команд и блок «присвоение» для всего остального оказалось неудобно. Еще неудобнее это оказалось объяснять ученикам.
Связка QwaziPascal (TPascal+ QPascal) была оправдана для того, чтобы для разных видимых операторов выполнялись одни и те же конструкции. Например, это позволяло в идеале реализовать языки Basic, C, Fortran,
Logo, Pascal, консольный Delphi на одной платформе. Однако сложности у учеников с использованием инструмента
«Последовательный шаблонный ввод» отодвинули реализацию этого вопроса. За основу был взят язык программирования TurboPascal.
На базе его алфавита, синтаксиса, орфографии был создан в комплект к уже существующему «шаблонному вводу» (с поиском и помощью) ввод текста программы, как
в обычном текстовом редакторе. Такой ввод данных является стандартным и не вызывает затруднений у обучающихся. В обычное текстовое окно ученик вносит команды языка Pascal (чтобы отличать от настоящего TurboPascal, назовем этот язык StandardPascal). StandardPascal имеет незначительные отличия и ограничения от языка TurboPascal.
Текст, записанный в окне рукописного ввода на языке StandardPascal, проходит сначала этап лингвистического анализа, на котором выявляются все блоки комментариев, выделяются команды, происходит проверка синтаксиса, орфографии, устраняются ошибки. Затем идет процесс «компиляции» - перевода в выполняемый язык QwaziPascaL. На этапе компиляции определяются описанные переменные, их типы, начало программы, блоки начала-завершения процедур и функций, определяются границы
алгоритмических структур: условий, циклов. После этого, все команды, написанные в языке StandardPascal, будут преобразованы в QPascaL
(а текст станет автоматически фрагментом кода для TPascaL). Большую нагрузку при компиляции берет на себя оператор присваивания, так как все сложные процедурные конструкции выражаются через этот оператор.
Все конструкции TurboPascal отражены в языке StandardPascal. В языке StandardPascal реализованы следующие типы: все простые (числовые, символьный логический), строковый тип, массивы (одномерный и двухмерный), файлы (типизированные от простых типов и текстовые). Оператор присвоения может работать с переменными (числового, символьного, строкового, логического типа), математическими и
логическими операциями, массивами, стандартными функциями и функциями, заданными пользователями.
Самый оригинальный инструмент по вводу и редактированию информации -«Инспектор клавиш». Клавиши в нем сгруппированы в блоки по темам в 20 штук каждая (что позволяет учить команды группами, как при изучении иностранного языка).
Система команд «Инспектор клавиш» фиксирована, мы не можем «допридумывать» команды подобно тому, как робот А.Г. Кушниренко умеет выполнять всего 17 команд. Здесь не случайно точно названо общее число команд робота. Опыт показывает, что это улучшает понимание правил игры [1].
Потянув клавишу из «Инспектора клавиш» на «Окно документа», мы увидим, что клавиша разворачивается в
синтаксическую оболочку, в которой представлена пиктограмма (для каждой команды был нарисован свой оригинальный рисунок) и пустые поля ввода (над каждым полем ввода своя всплывающая подсказка). На рисунке 1 представлен фрагмент «Инспектора клавиш», на рисунке 2 показан фрагмент синтаксической оболочки команды
Записанные с помощью «Инспектора кнопок» команды, хранимые в синтаксических оболочках. VisioPascal - язык, при котором программа пишется с помощью кнопок. Для запуска из среды «Инспектора кнопок» все данные, внесенные в синтаксические оболочки языка VisioPascal, проверяются на соответствие типам и преобразуются в язык StandardPascal. После чего идет упрощенный лингвистический анализ и «компиляция».
Рис. 1. Фрагмент «Инспектора клавиш»
Рис. 2. Фрагмент синтаксической оболочки команды SQR
Все переходы между Исполняемым языком QwaziPascal, стандартным языком рукописного ввода StandardPascal и графическим языком синтаксических конструкций
VisioPascal представлены на рисунке 3.
По схеме видно, что, набрав программу с помощью «Инспектора кнопок» в VisioPascal, можно продолжать ее исправлять в StandardPascal посредством «Рукописного ввода», после чего вернуться в VisioPascal (в «Инспекторе клавиш» уже произойдут изменения) и внести окончательную правку. После чего можно запустить программу. Выполнение программы из главного окна осуществляется с помощью нажатия на
клавиши [Запуск] (или комбинацией клавиш [СТКЪ]+^9]). При этом сразу выполняются на выполнение строки программы языка QPascaL (линия «С»). Выполнение программы из «Инспектора кнопок» осуществляется нажатием на клавишу [Запуск] с той же
пиктограммой, что и в главном окне, или используя комбинацию клавиш [СTRL]+[F9]. В этом случае процесс идет по линиям «А»=>«В»=>«С». Сначала содержимое кнопок преобразуется в текст, далее лингвистический анализ и «компиляция», после чего идет запуск программы на выполнение.
Рис. 3. Модель ввода данных учебно-методического практикума MyPascal2
Как показали эксперименты, такая гибкая система ввода информации - не только
с обычным вводом, но и с разноуровневой помощью, поиском, группами клавиш, визуальными клавишами с пиктограммами и всплывающими подсказками - позволяет адаптироваться учащимся к
формализованным конструкциям языка программирования. Учебно-методический практикум с использованием трех моделей ввода данных помогает учителю и ученикам добиваться знаний и решать поставленные задачи.
Литература
1. Кушниренко А.Г., Лебедев Г.В. 12 лекций о том, для чего нужен школьный курс информатики и как его преподавать: метод. пособие. М., 2000.
2. Лыскова В.Ю., Сидляр М.Ю. MyPascal: учеб.-метод. практикум по программированию [электронный ресурс]. Тамбов, 2009. НТЦ «Информрегистр, № гос. регистрации 0320900624.
3. Сидляр М.Ю. Применение технологии вставки-замены операторов при обучении программированию на языке программирования TurboPascal // Актуальные проблемы информатики и информационных технологий: мат-лы XI междунар. науч.-практ. конф.-выставки. Тамбов, 2007.