Скачать программу

SPS - Small Pascal System (version 3.0)

Система для обучения программированию
------------------------------------------------
Замечание для тех, кто первый раз узнал про SPS (на примере всегда проще понять замысел автора):
- Запустите программу 'SPS list'
- Нажмите F3 (загрузка примера)
- Выберите файл CREATE.SPS (внимание - мышь не поддерживается) и нажмите ENTER
- Нажмите F9 (запустите пример на исполнение)
Примечание: F1 - справка, F10 - меню
------------------------------------------------

Целью данной работы является создание системы, предназначенной для обучения студентов младших семестров по курсам \"Программирование\" и \"Структуры данных\" на кафедре \"Кибернетика\" в Московском инженерно-физическом институте (государственном университете).

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

Эксплуатация SPS, реализующего подмножество Pascal'я, показала, что синтаксически- ориентированный редактор, контролирующий написание текста программы с точки зрения структурного подхода и синтаксической правильности, позволяет пропускать большее количество программ. По мнению пользователей, в 2-3 раза, что несомненно важно для процесса обучения, т.к. количество машинного времени, приходящееся на студента (ученика) всегда оставляет желать лучшего.

Small Pascal System был разработан для курса \"Динамические структуры данных\", читаемого на кафедре 22 в МИФИ и посвященного линейным спискам и деревьям. Основная идея SPS - визуализировать, показать некоторые наиболее сложные в обучении конструкции: указатель, динамически распределяемая память. SPS позволяет уяснить семантику и физический смысл, стоящий за этими понятиями программирования, и получить навыки работы с ними. Многолетний опыт использования SPS в обучении показал эффективность и целесообразность такого подхода.

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

Итак, делается попытка связать текст программы и описанные в ней объекты с некоторыми графическими образами. В SPS такого рода объектами являются списки и деревья.

Система SPS включает следующие составные части, интегрированные в общую среду:

- Компилятор.
- Интерпретатор.
- Исполнительная система.
- Визуализатор.

Назначение Визуализатора как части SPS - сделать ход выполнения программы наглядным. Предлагается осуществить эту задачу через показ изменения состояния используемой Pascal-программой памяти. Собственно, программа, в её понимании на начальном этапе обучения, - это инструкция, описывающая действия над входными данными, целью которой является получение определенных выходных результатов. Тогда программа - последовательность действий над памятью. И для того, чтобы продемонстрировать как работает программа, надо показывать как она на каждом своем шаге воздействует на состояние (значения) описанных в ней объектов памяти (переменных). Сделать это можно поставив в соответствие каждой описанной в программе переменной некий образ, который реагирует на все действия программы над этой переменной: инициализацию, присвоение нового значения, создание/уничтожение (для динамической структуры), изменение видимости (локальность переменной). Следует этому подходу, мы видим в каждый момент выполнения программы то, как вырабатывается результат - выходные данные.

Реализация описанного подхода визуализации на практике включает 2 этапа:

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

Что касается подбора образов для визуализации, то здесь возможны самые разнообразные решения в зависимости от поставленных методических задач обучения:

- отображение значения в численном или символьном виде;
- всплывающие/исчезающие окна для динамически распределяемой памяти;
- 'семафоры' для типа boolean;
- пустые или заполненные 'ящики' - ячейки для отображения инициализации переменных.

Очевидно, что возможности в сфере подбора образов практически неограничены.

Во втором аспекте реализации - сопряжении программных средств визуализации с транслятором Pascal-программы интересны следующие моменты.

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

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

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

Таким образом, принимаемое решение зависит от целей, которые призвана осуществить разрабатываемая система.

Исполнительная система SPS реализуется как пошаговый интерпретатор. Текст программы, взятый из Редактора, транслируется во внутреннее представление - программу на промежуточном языке (P-коде). Собственно работа интерпретатора заключается в исполнении переданного кода. Данная организация Исполнительной системы позволяет установить строгий контроль над синтаксической правильностью транслируемого текста, благодаря наличию внутреннего языка. Внутренняя форма дает также большие преимущества по времени при неоднократном выполнении некоторых участков программы (циклы, процедуры), т.к. исходный текст уже оттранслирован в исполняемый код, тогда как интерпретатор без внутреннего кода транслировал бы эти участки исходного текста заново.

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

В результате данной работы была получена обучающая система SPS (Small Pascal System). Эта программа может быть использована для обучения студентов младших семестров по курсам \"Программирование\" и \"Структуры данных\" читаемых на 22 кафедре в МИФИ.

Разработанная Исполнительная система поддерживает подмножество Pascal'я, включающее типы данных integer, char, boolean, синтаксические конструкции блока begin-end, условного оператора if-then-else, операторы цикла while, repeat.

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

Разработан интерфейс системы SPS - это удобная многооконная среда со встроенным текстовым редактором с подсветкой синтаксиса.

Дополнительная информация о программе

г============== Функциональные и рабочие клавиши ==============
¦
¦ F1 - Контекстная помощь
¦ Shift-F1 - Предыдущий экран помощи
¦ Ctrl-F1 - Информация по синтаксису языка.
¦ Alt-F1 - Информация по клавиатурным макросам
¦ F2 - Сохранить текст в файле
¦ F3 - Загрузить текст из файла
¦ Ctrl-F3 - Новый файл
¦ F4 - Печать текста
¦ Alt-F4 - Выход из программы
¦ F5 - Показать заголовок программы
¦ TAB - Переключение окон (Редактор-Ввод/Вывод)
¦ Esc - Сброс компилятора в начальное положение
¦ или остановка программы (при заикливании) ¦ Ctrl-F2 - Сброс компилятора
¦ Enter - Интерпретация
¦ F7 - Перейти на текущую строку без интерпретации
¦ F8 - Интерпретация до текущей строки
¦ F9 - Интерпретация от текущей строки до конца текста
¦ Ctrl F9 - Интерпретация всего текста
¦ F10 - Меню
L==============================================================

г==================== Клавиши редактора =======================
¦
¦ ->,<- - Перемещение курсора вдоль текущей строки
¦ ^,V - Перемещение красного маркера вверх и вниз
¦ Ins - Переключение режимов вставка/замена
¦ Del - Удаление символа над курсором
¦ <-- - Удаление символа справа от курсора
¦ Home - Перемещение курсора в начало текущей строки
¦ End - Перемещение курсора в конец текущей строки
¦ Ctrl <-, Ctrl -> - На слово влево/вправо
¦ Ctrl-T - Удаление слова
¦ Ctrl-Y - Удаление строки
¦ Ctrl-N - Вставка строки
¦ Ctrl-Home - Перемещение курсора в начало окна редактора
¦ Ctrl-End - Перемещение курсора в конец окна редактора
¦ Ctrl-PgUp - Перемещение курсора в начало текста
¦ Ctrl-PgDn - Перемещение курсора в конец текста
¦ PgUp - Перемещение курсора на страницу вверх
¦ PgDn - Перемещение курсора на страницу вниз
¦ Ctrl-Enter - Разбить строку на две
¦ Ctrl-BackSpace - Соединить две строки в одну (в 1 позиции)
¦ Alt-A .. Alt-Z - Клавиатурные макросы
¦
L==============================================================


г==============================================
¦
¦ Синтаксис операторов языка Small-Pascal
¦

¦ Дорогой друг, эта информация подскажет
¦ Вам как пользоваться данным языком,который
¦ специально разработан для работы со спис-
¦ ками. Мы не приводим здесь запутанных син-
¦ таксических диаграмм, из-за их сложности и
¦ и непонятности, а разбираем лишь примеры
¦ некоторых конструкций.
¦
L==============================================
г= Операторы языка ==
¦ присваивание
¦ BEGIN -- END
¦ IF -- THEN -- ELSE
¦ WHILE -- DO
¦ REPEAT -- UNTIL
¦ USES VARS
¦ VAR имя, ... : тип
L====================

г==Типы данных==
¦ - INTEGER
¦ - CHAR
¦ - BOOLEAN
¦ - PTR
L===============

============ Процедуры ====================
¦
¦ 1. INC( I ) - увеличение I на единицу,
¦ DEC( I ) - уменьшение I на единицу,
¦
¦ где I - переменная типа INTEGER.
¦
¦ 2. NEW( P ) - распределение памяти,
¦ DISPOSE( P ) - освобождение памяти,
¦ где P - переменная типа УКАЗАТЕЛЬ.
¦
¦ 3. PUSH(Var) - Втолкнуть в стек
¦ POP(Var) - Вытолкнуть из стека
¦ EMPTY - Ф-ция: TRUE, если стек пуст
¦
¦ где Var - переменная любого типа
¦
L==========================================

г= Ввод / вывод =============================================
¦
¦ 1. READ(Xo {,Xi} ) - ввод переменных,
¦
¦ где Xi - переменная типа INTEGER, CHAR или BOOLEAN
¦
¦ 2. READLN - то же, но с переходом на следующую строку.
¦
¦ 3. WRITE(Xo {,Xi} ) - вывод переменных, символьных строк
¦ или результатов полученных после
¦ вычисления выражений
¦
¦ где X - переменная типа INTEGER, CHAR или BOOLEAN,
¦ или символьная строка, заключенная в
¦ апострофы, или выражение
¦
¦ 4. WRITELN - то же, но с переходом на следующую строку.
¦
L============================================================

г====================== Выражения =================
¦
¦ 1. Выражения могут включать в себя логические
¦ операции и операции сравнения.
¦
¦ Логические операции : Операции сравнения :
¦
¦ AND - логическое И, < меньше,
¦ OR - логическое ИЛИ, > больше,
¦ NOT - отрицание. <= меньше или равно,
¦ >= больше или равно,
¦ TRUE, FALSE = равно,
¦ DIV, MOD, + - * <> не равно.
¦
¦ 2. В выражениях можно использовать функции:
¦
¦ ABS, SQR, SUCC, PRED, ODD, UPCASE, DNCASE,
¦ CHR, ORD, RANDOM
¦
¦ 3. Для указания порядка выполнения операций
¦ пользуйтесь круглыми скобками.
¦
¦ 4. Пример :
¦ ( I < 5 ) OR ( NOT ( P = NIL ) )
¦
L==================================================

Состав дистрибутива:
- Обучающая программа 'SPS list'. Динамические структуры, линейные списки
- Обучающая программа 'SPS tree'. Динамические структуры, деревья
- Install/Uninstall
- Размер архива с дистрибутивом менее 500 Кб


Системные требования: Windows 9x..XP

Anri (Moscow, Russia, 2002)
http://tnt2ultra.narod.ru
mailto:tnt2ultra@narod.ru

Return to http://tnt2ultra.narod.ru/


Хостинг от uCoz