Разработка и экспериментальное исследование редактора схем программ

Дипломная работа - Компьютеры, программирование

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



? верхнюю вершину элемента. Каждый выход обозначается линией, выходящей из боковых вершин. Имеет два входа и Продолжение таблицы 4.1

НаименованиеОбозначениеФункцияодин выход.Граница циклаСимвол состоит из двух частей ? соответственно, начало и конец цикла ? операции, выполняемые внутри цикла, размещаются между ними. Условия цикла и приращения записываются внутри символа начала или конца цикла ? в зависимости от типа организации цикла. Каждый такое блок имеет один вход и один выход.Данные (ввод-вывод)Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод). Данный символ не определяет носителя данных (для указания типа носителя данных используются специфические символы).

4.2 Математическое описание используемых моделей данных

Списки используются для представления кортежей.

Кортеж - это конечная последовательность, возможно с повторениями, элементов некоторого множества E. Элементами кортежа могут быть числа, символы некоторого алфавита, точки плоскости и т.д. В более сложных случаях элементами кортежа, в свою очередь, могут быть также кортежи. Элементы, не являющиеся кортежами, называются атомами. Количество элементов в кортеже называется его длиной. Удобно рассматривать кортежи, не содержащие ни одного элемента. Такие кортежи называются пустыми. Длина пустого кортежа считается равной 0.

Элемент кортежа характеризуется своим номером в последовательности (кортежным номером) и содержанием, то есть элементом множества E. Если длина кортежа равна n, n>0, то кортеж S удобно рассматривать как отображение s множества N = {1 ,2, тАж n} в множество E. Таким образом, s(i) - это i-й элемент кортежа S.

Термин "список" используется как обобщающее название различных структур данных, используемых для представления кортежей в памяти компьютера. При представлении кортежа в памяти появляется еще одна характеристика элемента кортежа - его позиция в памяти. В некоторых случаях номер элемента в кортеже и его позиция в памяти связаны друг с другом арифметическими соотношениями таким образом, что по номеру легко вычисляется позиция и, наоборот, по позиции вычисляется номер. В других случаях связь между номерами и позициями задается "таблично" или осуществляется с помощью алгоритмических процедур. Множество позиций обозначим через P. Иногда удобно считать, что в множестве P имеется специальный элемент nil, указывающий на несуществующую область памяти. Таким образом, при рассмотрении того или иного списка мы имеем дело с тремя множествами E, N, P и с отображениями на этих множествах.

Типичными при работе со списками являются следующие операции:

) нахождение позиции элемента в памяти по его номеру в кортеже;

) нахождение позиции элемента, следующего в кортеже за элементом из заданной позиции;

) нахождение позиции элемента, предшествующего в кортеже элементу из заданной позиции;

) удаление элемента, находящегося в заданной позиции;

) вставка в кортеж нового элемента перед элементом, расположенным в заданной позиции;

) определение длины кортежа.

4.3 Описание структур данных

Для более глубокого понимания задачи следует описать используемые структуры данных математически.

Пусть - текущий блок, где q - булева переменная, характеризующая тип блока: q= 0- блок является обычным блоком, q=1 -блок является блоком-веткой.

,

где - список блоков, принадлежащей данной ветке;

N-количество блоков, принадлежащей данной ветке;

Pointer(K)- указатель на ветку K , внутри которой находится блок.

Вся схема представляется набором веток. Главный блок хранит внутри себя одну главную ветку. Блок-условие в списке вложенных блоков хранит две ветки, они обозначают левый и правый выходы из блока-условия. Внутри блока-цикла хранится одна ветка, которая, хранит все блоки, которые находятся внутри цикла.

Точки вставки не хранятся вместе с блоками, они представляются отдельными объектами.

Пусть Т - точка вставки, где L - это блок, после которого располагается точка;

Pointer(K)-Указатель на ветвь, внутри которой находится блок соответствующий точке вставки.

4.4 Алгоритм программы

Изначально схема состоит из двух блоков - начала и конца. При нажатии кнопки определенного блока, программа переключается в режим вставки. В режиме вставки все доступные точки вставки Т подсвечиваются красным цветом, а точки вставки, которая находится непосредственно под курсором синим (см. пункт 4.6). При клике по точке вставки на месте этой точки появляется блок.

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

При удалении блока определяется ветка, которой принадлежит этот блок, и из списка элементов этой ветки удаляется соответствующий блок . Координаты блоков схемы рассчитываются заново.

5. Описание структуры системы

5.1 Описание структуры системы с помощью диаграммы классов

На диаграмме классов представлено подробное описание классов использующихся в программе.

Сначала рассмотрим классы блоков. На рисунке 5.1 приведена диаграмма к