Интерпретация блок-схем
6
.
.
.
.
.
.
.
.
.
Выход
Вспомогательная матрица синтаксических переходов блока
“ Ветвление по условию ”
состояние
Константа str
Константа
идентификатор
(
[
!
4б
)
(
NULL
0
.
1
2
3 \ 4
.
4
.
.
.
.
1
.
.
.
.
.
.
5
Выход
.
.
2
.
.
.
.
3 \ 0
.
5
Выход
.
.
3
.
.
.
.
.
.
5
Выход
.
.
4
.
.
2
.
.
.
.
.
.
.
5
.
1
2
1 \ 4
.
4
.
.
.
.
Матрица синтаксических переходов блока “Стрелка”
состояние
true
false
;
(
NULL
0
1
1
.
.
Выход
1
.
.
2
.
.
2
.
.
.
.
Выход
Матрица синтаксических переходов блока “Мультиветвление”
Состояние
Идентификатор
;
(
NULL
0
1
.
.
.
1
.
2
.
.
2
.
.
.
Выход
Матрица синтаксических переходов блока “Конец”
состояние
Return
;
(
(
NULL
0
1
.
.
.
.
1
.
3
2 \ 3
.
.
2
.
3
.
.
.
3
.
.
.
.
Выход
Приложение 3: Текст основных классов программы
Описание класса блок-схемы алгоритма:
файл описание класса ClassScheme (класс схемы)
разработан для языка блок схем, который используется
в интерпретаторе Basic Block for Windows 95 ver. 2.0.
Copyright(c) by Соловьев А.С., 1998 г., ТГУ, ФПМК,
кафедра программирования
#ifndef __CLASS_SCHEME
#define __CLASS_SCHEME
#ifndef __STRUCT_FILE
#include "struct.h"
#endif
// подключаемые библиотеки
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// описатели типов блоков
#define BEGIN_BLOCK 0// блок типа начало
#define END_BLOCK 1// блок типа конец
#define IF_BLOCK 2// блок типа если
#define INPUT_BLOCK 3// блок типа ввод
#define OUTPUT_BLOCK 4// блок типа вывод
#define PP_BLOCK 5// блок типа подпрограмма
#define AD_BLOCK 6// блок типа автоматические действия
#define LABEL_BLOCK 7// блок типа метка
#define BP_BLOCK 8// блок типа безусловный переход на метку
#define MULTI_BLOCK 9// блок типа мультиветвление
#define VETV_BLOCK 10// блок типа ветвь
#define UP_BLOCK 11// блок стрелка вверх
#define DOWN_BLOCK 12// блок стрелка вниз
#define UP_RIGHT_BLOCK 13// блок стрелка вверх и направо
#define UP_LEFT_BLOCK 14// блок стрелка вверх и налево
#define DOWN_LEFT_BLOCK 15// блок стрелка вниз и налево
#define DOWN_RIGHT_BLOCK 16// блок стрелка вниз и направо
#define LEFT_BLOCK 17// блок стрелка налево
#define RIGHT_BLOCK 18// блок стрелка направо
#define RIGHT_UP_BLOCK 19// блок стрелка направо и вверх
#define LEFT_UP_BLOCK 20// блок стрелка налево и вверх
#define LEFT_DOWN_BLOCK 21// блок стрелка налево и вниз
#define RIGHT_DOWN_BLOCK 22// блок стрелка направо и вниз
// описатели типов стрелок
class ClassScheme
{
public:
bool TypeOfProgramm;// тип программы (подпрограмма==true)
char *FileNameScheme;// имя файла с которым мы работаем
struct BLOCK* HeapBlock;// указатель на вершину списка блоков схемы
struct SVERTKA* SvertkaBlock;// указатель на свертку блока
struct BLOCK* Buffer;// указатель на блок сидящий в буффере
struct VARIABLE* HeapVariable;// указатель на вершину таблицы переменных