DIPLOM (663709), страница 9

Файл №663709 DIPLOM (Интерпретация блок-схем) 9 страницаDIPLOM (663709) страница 92016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 9)

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

состояние

Константа str

Константа

идентификатор

(

[

!

)

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

#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

// функции для интерпретации блок-схемы

struct VARIABLE* PoiskVar(char* );//поиск переменной по имени//Ok

struct VARIABLE* CreateVar(char*, char,unsigned int,unsigned int*,int);

//создать переменную с параметрами//Ok

struct CONSTANTA* CreateConst(unsigned char,char*);//создание константы//Ok

unsigned char TextBlockToSvertka(char *, int);//функция для построения

// свертки блока//Ok

int ClassSvertka(struct SVERTKA* ,int [][2],int ,int ,int );// класc свертки//Ok

void UnarOperation(struct SVERTKA*);// определяет унарные

// операции которые обозначены как n-арные(+,-)//Ok

struct SVERTKA* Insetr(struct SVERTKA* ,unsigned char);//вставка

// оператора в начала последовательности и после ';' //Ok

unsigned char Sintacsis(struct SVERTKA*,int [][2],int,int,int,int*,

int*);// проверка синтаксиса свертки//Ok

struct SVERTKA* SintacsisHelp(struct SVERTKA*,int [][2],int,int,int,

int*,int*);// проверка синтаксиса свертки//Ok

struct SVERTKA* Polis(struct SVERTKA*);//построение полиза//Ok

struct SVERTKA* Stek(struct SVERTKA* ,int);//поиск элемента стека если

// его нет то создание его//Ok

struct SVERTKA* Run(unsigned char,int&,struct SVERTKA*,int,

struct SVERTKA*);//

// выполнение конкретной операции

unsigned char Run(struct SVERTKA* );//функция выполнения

//команд полиза//Ok

unsigned char RunBegin(struct SVERTKA*);//выполнение команд блока начало//Ok

unsigned char Translation1(void);//Первый этап трансляции//Ok

unsigned char Translation2(void);//второй этап трансляции//Ok

unsigned char Translation3(void);//Третий этап трансляции

struct BLOCK* BpFunction(struct BLOCK*);//выполнение связки БП//Ok

float Trigonometria(struct SVERTKA*,int&);

// обработчик тригонометрических функций//Ok

struct SVERTKA* NewSvertka(int&,unsigned char,unsigned char);

// построение новой свертки//Ok

// функции поиска блока

struct BLOCK *Poisk(struct BLOCK *);// поиск блока по адресу//Ok

struct BLOCK *Poisk(int,int);// поиск блока по заданным координатам//Ok

struct BLOCK *Poisk(unsigned int);// поиск блока по типу блока//Ok

// функции создания, добавления, вырезания и удаления блока из схемы

void Add(struct BLOCK*);//добавить блок к схеме//Ok

struct BLOCK *Create(unsigned int,int,int,int,int,int,int,char *);

// создать блок по параметрам//Ok

struct BLOCK* Cut(struct BLOCK* );//вырезать блок из схемы//Ok

void DelBlock(struct BLOCK* );//удалить блок из схемы по адресу//Ok

void DelBlock(int ,int );//удалить блок из схемы по координатам//Ok

// функции для работы с буфером обмена блоков схемы

void CopyBuffer(struct BLOCK*);//скопировать блок в буфер обмена

//по адресу//Ok

void CopyBuffer(int x,int y);//скопировать блок в буфер обмена

//по заданным координатам//Ok

Характеристики

Тип файла
Документ
Размер
661 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6548
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее