Интерпретация блок-схем

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

\0..33..33333.Е..2......33..33333.Е..31.2............1\1...41.2............1\1...

Матрица синтаксических переходов индексации массивов 2

 

состояниеИдентификаторКонстантаЛюбая конст.[],+-~#*/^ModDiv()NULL01.2.....44.....1\1...1...2\0Е033..33333....2....Е033..33333....31.2............5\1...41.2............5\1...5....Е033..333335\1...

Матрица синтаксических переходов функции strlen

 

состояниеИдентифи-катор[)NULL(Константа0.....2.1.3 \ 0Выход....21.....43..Выход....4..Выход....Матрица синтаксических переходов блока “ВЫВОД”

 

состояниеКонстанта strКонстанта125ClockStrlen,([;ИдентификаторNULL)0125.462\2.2\3..9...1.......0..10....2...3...0..10....3.2..462\2.2\3..9...4........2\3.10....5.2..462\2.2\3..9...6........7......7..............88...3...0..10....9...3...0.2\010....10125.462\2.2\3..9.Е.

Матрица синтаксических переходов блока “Автоматические действия”

 

СостояниеКонстанта strКонстантаИдентифик.([;1235ClockGetchKbhitStrlen)NULL0..1..............1...2\0...3.........2.......3.........3.454\3..6..81310134\2...4.....9.7.........5....4\09.7.........6.454\3.....813.134\2...7.454\3.....813.134\2...8...4\3.............9..1.............Е10...11.............11..............12..12.....9...........13...14.............14..............4..Матрица синтаксических переходов математического выражения

 

состояниеидентификаторКонстанта strКонстанта125ClockStrlen([)NULL01.34.563\23\3....1....2....3\0Е..21.3..563\23\3....3....2.....Е..41.3..563\23\3....5........3\3....6........7....7..........3..

Матрица синтаксических переходов блока “Подпрограмма”

 

СостояниеКонстанта strидентификатор[;,2ProgrammNULL0.1....4..1..2 \ 0..3...2.....3...3......4..465.......5....4....6...7.....7........Выход

Матрица синтаксических переходов блоков “Метка” и “Безусловный переход”

 

СостояниеКонстанта;NULL01...1.2..2...Выход

 

Матрица синтаксических переходов блока “Ветвление по условию”

 

состояниеКонстанта strКонстантаИдентификатор([!4б;NULL0.123 \ 4.4....1......56..2....3 \ 0.56..3......56..4..2.......5.12 1 \ 4.4....6.........Выход

 

Вспомогательная матрица синтаксических переходов блока

“ Ветвление по условию ”

 

состояниеКонстанта strКонстантаидентификатор([!4б)NULL0.123 \ 4.4....1......5Выход..2....3 \ 0.5Выход..3......5Выход..4..2.......5.121 \ 4.4....

 

Матрица синтаксических переходов блока “Стрелка”

 

 

состояниеtruefalse;NULL011..Выход1..2..2....Выход

 

Матрица синтаксических переходов блока “Мультиветвление”

 

СостояниеИдентификатор;NULL01...1.2..2...Выход

Матрица синтаксических переходов блока “Конец”

 

состояниеReturn;(NULL01....1.32 \ 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

#include

#include

#include

 

// описатели типов блоков

 

#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;// указатель на вершину таблицы переменных

struct CONSTANTA* HeapConst;//указатель на таблицу констант

struct Rects RectPl;// параметры планшета схемы

struct CONSTANTA* MultiConst;// свертка блока мультиветвления

bool FlagRun;// признак выполняется программа или нет

 

// вспомогательные функции

 

int Poisk_Function(char *,int ,char* []);//поиск функции//Ok

void DeleteVariable(struct VARIABLE* );//удалить таблицу переменных//Ok

void DeleteSvertka(struct SVERTKA*);//удалить свертку//Ok

void DeleteConst(struct CONSTANTA* );//удалить таблицу констант//Ok

int ClassSimbol(const char&);//класс символа//Ok

int LenTextBlock(char*);//длинна текста блока// Ok

void DeleteScheme(struct BLOCK*); //Удалить схему// Ok

void CopyStrToStr(char *,char *); //Копировать строку в строку//Ok

int AddStringToTextBlock(struct BLOCK *,char *);//Добавить строку к

//тексту блока//Ok

void GetsStringFromFile(FILE *,char *);//Прочитать строку из файла//Ok

 

// конструкторы

 

ClassScheme();

 

// функции для чтения записи схемы

 

unsigned char LoadFromFile(char *);// функция для считывания файла

// с диска //Ok

unsigned char SaveToFile(char *); // функция для записи файла на

// диск // Ok

 

// функции для ин