Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
123321.doc
Скачиваний:
7
Добавлен:
16.09.2019
Размер:
227.33 Кб
Скачать

2. Алгоритм решения задачи – описательная модель программы

В таблице занятий присутствует атрибут корректировка, значения этого атрибута :

0 – занятие может корректироваться

1 – занятие должно быть скорректировано

2 – признак мешающего занятия

3 – занятие не может быть скорректированно

- Описание алгоритма.

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

2. Запоминание программой значений всех атрибутов выбранного занятия.

День недели Признак недели. «Пара». Дисциплина. Вид занятия. Преподаватель. Группа. Подгруппа. Аудитория. Поток.

Присвоение атрибуту корректировка значения 1

3. указание дня, признака недели и № «пары» в которые необходимо провести занятие, запоминание их в День1, Признак1, «Пара1»

4.Проверка занятости Группа в День1, Признак1, «Пара1».

5.Если Группа занята, то программно помечается мешающее занятие и атрибуту корректировка присваивается значение 2.

6.Проверка занятости Преподаватель в День1, Признак1, «Пара1».

7.Если преподаватель занят , то программно помечается мешающее занятие и атрибуту корректировка присваивается значение 2.

8.Проверка занятости Аудитория в День1, Признак1, «Пара1».

9.Если Аудитория занята, то программно помечается мешающее занятие и атрибуту корректировка присваивается значение 2.

10.Для занятия со значением атрибута корректировка=1, заменить значения День, Признак, «Пара» на День1, Признак1, «Пара1».

11.последовательный просмотр строк таблицы, атрибут корректировка которых =2

12. программное запоминание следующих атрибутов выбранного занятия: День недели. Признак недели. «Пара». Дисциплина. Вид занятия. Преподаватель. Группа. Подгруппа. Аудитория. Поток.

Присвоение атрибуту корректировка значения 1

13. указание дня, признака недели и № «пары» в которые необходимо провести занятие, запоминание их в День1, Признак1, «Пара1»

14. Проверка занятости Группа в День1, Признак1, «Пара1». Если Группа занята, то программно помечается мешающее занятие и атрибутам присваивается значение 2.

15.Проверка занятости Преподаватель в День1, Признак1, «Пара1».

16.Если преподаватель занят, то программно помечается мешающее занятие и атрибуту корректировка присваивается значение 2.

17.Проверка занятости Аудитория в День1, Признак1, «Пара1».

18.Если Аудитория занята, то программно помечается мешающее занятие и атрибуту корректировка присваивается значение 2.

19.Для занятия со значением атрибута корректировка=1, заменить значения День, Признак, «Пара» на День1, Признак1, «Пара1».

20. если в таблице есть занятия атрибут корректировка которых = 2, переход к 11.

3.Модель на основе абстракций и спецификаций

Таблица = data type is вызов, переход, атрибут, замена элемента.

Описание

Неизменяемый по количеству и последовательности атрибутов набор строк одинакового размера. Каждая строка содержит одинаковое количество одинаково размещённых данных различного типа.

N - фиксированное количество строк таблицы

M- количество атрибутов в строке таблицы

Операции

вызов = proc(t:таблица) returns (s:строка)

effects - показывает текущую строку таблицы при вызове t

переход = proc(t:таблица)returns (s:строка)

effects – переводит курсор на следующую строку таблицы t

атрибут = proc(t:таблица; i:int)returns (s:строка)

requires – номер желаемого атрибута i меньше или равен M

effects – возвращает значение i-го атрибута в текущей строке таблицы

замена_элемента = proc(t:таблица; i:int; x:data type)

requires – номер желаемого атрибута i меньше или равен M

effects заменяет существующее значение i-го атрибута текущей строки таблицы t на x

end таблица

3.1 Main

а(66;11): таблица

В(10): массив

с(10) : массив

D(3) : массив

g=0 : таблица

z=false : boolean

перестановка_занятий=proc(а;В;с;D;g) returns(a)

если необходимо то

выбор_занятия(а;В;с)

ввод временых параметров день1,признак1,пара1 в D

g=атрибут(в;1)

проверка_занятости_группы(a;g;D;z)

g=атрибут(B;6)

проверка_занятости_преподавателя(a;g;D;z)

g=атрибут(В;7)

проверка_занятости_аудитории(a;g;B;z)

замена_значений(a;B;D;z)

если с(1)<>" "

то

g=атрибут(c;1)

проверка_занятости_группы(a;g;D;z)

g=атрибут(c;6)

проверка_занятости_преподавателя(a;g;D;z)

g=атрибут(c;7)

проверка_занятости_аудитории(a;g;B;z)

замена_значений(a;B;D)

конец если

конец если

метка (1)

очистка_значений(B,c,D,g)

требуют_корректировки(а;В;с)

ввод временых параметров день1,признак1,пара1 в D

g=атрибут(в;1)

проверка_занятости_группы(a;g;D;z)

g=атрибут(B;6)

проверка_занятости_преподавателя(a;g;D;z)

g=атрибут(В;7)

проверка_занятости_аудитории(a;g;B;z)

замена_значений(a;B;D)

если с(1)<>" "

то

g=атрибут(c;1)

проверка_занятости_группы(a;g;D;z)

g=атрибут(c;6)

проверка_занятости_преподавателя(a;g;D;z)

g=атрибут(c;7)

проверка_занятости_аудитории(a;g;B;z)

замена_значений(a;B;D)

конец если

если z=true то go to метка (1)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]