Кроме команды "выполнить" возможны следующие команды:
· Пошаговая отладка;
· Следующий шаг;
· Прервать интерпретацию;
· Установить точку входа в программу;
· Экспорт на язык программирования Си.
Последние две команды можно выполнять только в режиме пошаговой трансляции.
Во время работы транслятора выдается следующее окно,
и при обнаружении ошибки выдается окно сообщений, в котором описана возможная ошибка. Например,
А в общем виде это будет выглядеть следующим образом:
Если вы захотите изменить параметры планшета, то Вам нужно вызвать “свойства ” системы. Для этого Вам нужно один раз нажать правую кнопку мыши. После этого перед Вами появится контекстное меню со следующими пунктами:
· Удалить блок;
· Копировать блок;
· Вставить блок;
· Вырезать;
· Свойства.
Нажав на пункт свойства, перед Вами появится следующее диалоговое окно:
Закладка “Планшет” отвечает за свойства планшета. Закладка “Редактор” отвечает за свойства текстового и графического редакторов. Закладка “Интерпретатор” отвечает за параметры интерпретатора.
Для того, чтобы посмотреть значения переменных, надо в меню “Окно” выбрать пункт “ таблица переменных ”. Выглядеть на мониторе компьютера это будет так:
Здесь отображаются переменные и их значения. Кроме того, существует возможность редактирования списка переменных.
Чтобы закончить работу с системой нужно выбрать команду “выход” в меню “файл” или нажать клавиши: <Alt><X>.
Перечислим основные структуры данных, используемые в системе “Блок схема”.
Блок-схема алгоритма представляется как список структур следующего вида:
struct BLOCK
{
unsigned int type; // тип блока
int x; // координата блока по оси x
int y; // координата блока по оси y
char *text; // текст блока
int true_x; // переход по ИСТИНЕ по оси x на планшете
int true_y; // переход по ИСТИНЕ по оси y на планшете
int false_x; // переход по ЛЖИ по оси x на планшете
int false_y; // переход по ЛЖИ по оси y на планшете
struct BLOCK *next; // указатель на следующий элемент схемы
bool StopRun; // признак точки входа в программу
bool ErrorFlag; // признак наличия ошибок в данном блоке
bool RunBlock; // признак выполнения блока в текущий момент
struct SVERTKA* Poliz; // полиз текста блока
};
Файл схемы представляет собой последовательность следующих записей:
struct BLOCK
{
unsigned int type; // тип блока
int x; // координата блока по оси x
int y; // координата блока по оси y
char *text; // текст блока
int true_x; // переход по ИСТИНЕ по оси x на планшете
int true_y; // переход по ИСТИНЕ по оси y на планшете
int false_x; // переход по ЛЖИ по оси x на планшете
int false_y; // переход по ЛЖИ по оси y на планшете
};
Таблица переменных образованна следующим образом: она состоит из списка структур следующего вида:
struct VARIABLE
{
AnsiString Hint; // подсказка при индексации
char* name; // имя переменной
char type; // тип переменной
unsigned int Size; // размерность массива, если Size == 0,
// то это переменная
unsigned int* SizeN;// массив значений размерностей,
// если это переменная то SizeN == NULL
char* ready; // признак готовности к работе переменной
int* __int; // значение переменной типа int
long int* __long_int;// значение переменной типа long int
char* __char; // значение переменной типа char
float* __float; // значение переменной типа float
double* __double; // значение переменной типа double
struct VARIABLE* next;// указатель на следующий элемент таблицы
// переменной
};
Таблица констант также представлена списком структур следующего вида:
struct CONSTANTA
{
unsigned char type; // тип константы
int __long_int; // константа типа long int
int __int; // константа типа int
char __char; // константа типа char
float __float; // константа типа float
double __double; // константа типа double
char* __string; // константа типа string
struct CONSTANTA* next;// указатель на следующий элемент таблицы
};
Последовательность текста блока, как уже говорилось ранее, при трансляции переводится на внутренний язык транслятора. В данной системе это список сверток, которые имеют следующую структуру:
struct SVERTKA
{
unsigned char type; // тип свертки
unsigned char intype; // подтип свертки (номер операции, функции,
// процедуры в списке функций)
struct VARIABLE* variable;// если это не переменная то variable==NULL
// если переменной не существует в таблице
// переменных то variable == NULL
struct CONSTANTA* constanta;//указатель на таблицу констант
// если это не константа то constanta==NULL
// если такой константы не существует в таблице
// констант то constanta == NULL
struct SVERTKA* next; // указатель на следующий элемент свертки
int result; // счетчик числа операндов операций или функции
};
Данная работа представляет собой транслятор с языка блок схем.
Система состоит из оболочки, графического редактора блок-схем, встроенного текстового редактора, интерпретатора, пошагового отладчика и конвертора на язык Си.
Система отлажена и протестирована на серии примеров. Система реализована в двух вариантах:
· Под операционную систему MS-Dos,
· Под операционные системы Windows NT, Windows 95, Windows 98.
Размер исполняемого файла в среде MS-Dos 300 Кбайт, в среде Windows 900 Кбайт.
Результаты данной работы были представлены на 6ой международной научно-практической конференции “Новые информационные технологии в университетском образовании”, которая проходила в городе Новосибирске с 17 по 19 марта 1999 года. На конференции был сделан доклад (тезисы опубликованы).
Система создавалась с целью обучения студентов первого курса ФПМиК основам программирования. Предполагается её активное использование.
1. Лебедев В.Н. Введение в системы программирования. - М: Статистика, 1975.-315с.
2. Грис Д. Конструирование компиляторов для цифровых вычислительных машин, - М: Мир, 1975.-544с.
3. Касьянов В.Н. , Поттосин И.В. Методы построения трансляторов.- Новосибирск: Наука, 1986. -343с.
4. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции в 2-х томах. - М: Мир, 1978.
5. Соловьёв А.С. Интерпретатор языка блок-схем. // Материалы научно-практической конференции “Новые информационные технологии в университетском образовании”. - Новосибирск: Издательство ИДМИ, 1999.-227с.
6. Демин А.Ю., Гусев А.В. Визуальное программирование программ на основе блок-схем. // Материалы научно-практической конференции “Новые информационные технологии в университетском образовании” Новосибирск: Издательство ИДМИ, 1999.-227с.
7. Паронджанов В.Д. Язык программирования “ДРАКОН” // Программирование. – 1995. - №3.
8. Паронджанов В.Д. Учись рисовать ясные блок-схемы. - М: “Радио и связь”, 1995.
9. Рейсдорф Кент, Хендерсон Кен Освой самостоятельно Borland C++Builder. - Москва: ЗАО “Издательство БИНОМ”, 1998.-704с.
10. Lee C.Y. An algorithm for path connetion and its applications. // “IRE Trans.”, V.EC-10 - № 3.
MS-Dos версия:
Windows версия:
Пример 1. Нахождение максимума из двух чисел.
Пример 2. Сортировка методом пузырька (Windows версия).
Пример3. Вычислительная программа (MS-Dos версия)
Матрица лексического анализатора (сканера)
Матрица синтаксических переходов блока “НАЧАЛО”