- •Лабораторная работа №1 календарь событий
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №2
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №3
- •Контрольные вопросы
- •Лабораторная работа №4
- •Содержание отчета
- •Содержание отчета
- •Контрольные вопросы
Порядок выполнения работы
Ознакомиться с теоретической частью лабораторной работы.
Проанализировать последовательность выполнения процедур и их алгоритмы.
Набрать программу имитации с данными соответствующего варианта, приведенными в таблице:















Вариант
1 2 3 4 5 6 7 8
9 10 11 12
a1[1] 1 2 3 4 5 6 7 8 9 8 7 6
kevnt1,2,3 2,1,3 3,1,2 1,3,2
2,3,4 3,2,4 4,2,3 2,4,3 3,4,5 4,3,5 5,3,4 3,5,4
dtime
3,2,1 4,3,2
5,4,3 6,5,4 7,6,5 8,7,6 9,8,7 4,2,1 5,3,2 6,4,3
7,5,4 8,6,5

Отладить программу.
Вывести результаты прогона в пошаговом режиме.
Оформить отчет.
Содержание отчета
Краткое описание алгоритма имитации.
Результаты прогона.
Контрольные вопросы
Назначение календаря событий?
Что содержит каждая запись календаря?
Чем характеризуется каждое планируемое событие?
Как реализуется планирование события?
Как осуществляется перегруппировка событий?
Как происходит извлечение события из календаря?
Лабораторная работа №2
ДИСКРЕТНОЕ МОДЕЛИРОВАНИЕ
Цель работы: ознакомление со структурой и функционированием дискретной имитационной модели.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
При дискретном моделировании состояние моделируемого объекта может меняться только в моменты свершения событий (основных или временных). Структура модели может включать следующие составные части.
Главный модуль.Накладывает общие требования к модели и вызываетпроцессор дискретного моделирования.
Процессор дискретного моделирования– управляющий модуль. Синхронизирует работу всех остальных частей модели.
Модуль инициализации. Задает значения параметров моделируемого объекта и планирует первые события.
Подпрограмма обработки события. Реализует событие при его извлечении из календаря.
Модуль поиска подпрограммы обработки события. Находит и вызывает процедуру обработки по коду извлекаемого из календаря события (или сама реализует событие с данным кодом).
Другие модули предназначены для работы с календарем, для сбора статистической информации и т.д.
Ниже приводится учебная дискретная модель, демонстрирующая порядок имитации.
program lab2;
uses crt;
type
ta1=array [1..10] of integer;
var
k,i,nrns,dtime,tnow,kevnt,ttbeg,ttfin,nnrns:integer;
dt,a1:ta1;
procedure grup;
begin
writeln('Перегруппировка событий в календаре');
end;
procedure schdl(kevnt,dtime:integer;a2:ta1);
begin
writeln('Планируется событие с кодом ',kevnt);
writeln('Вызов программы перегуппировки ');
grup;
end;
procedure rmove;
begin
writeln('Извлечение из календаря события');
end;
procedure output;FORWARD;
procedure intlc;
begin
tnow:=ttbeg;
dt[1]:=_;
dt[2]:=_;
dt[3]:=_;
a1[1]:=2;
writeln('Вызов подпрограммы планирования');
kevnt:=1; i:=kevnt;
schdl(1,dt[1],a1);
end;
procedure event(i:integer);
begin
case i of
1:begin
writeln('Произошло событие с кодом ',i,' с временем ',tnow);
writeln('Вызов подпрограммы планирования');
kevnt:=2; i:=kevnt;
schdl(2,dt[2],a1);
end;
2:begin
writeln('Произошло событие с кодом ',i,' с временем ',tnow);
writeln('Вызов подпрограммы планирования');
kevnt:=3; i:=kevnt;
schdl(3,dt[3],a1);
end;
3:writeln('Произошло событие с кодом ',i,' с временем ',tnow);
end;
end;
procedure outputn;
begin
writeln('nrns:= ',nrns); writeln('Прогон завершен');
end;
procedure slam;
label 4;
begin
writeln('Вызов подпрограммы инициализации');
intlc;
4:writeln('Вызов подпрограммы извлечения события из календаря');
rmove;
i:=kevnt; tnow:=tnow+dt[i]; writeln('код события ',i);
writeln('время события ',tnow);
writeln('Вызов подпрограммы обработки события');
event(i);
k:=i+1;
if (tnow<ttfin)and(k<4) then goto 4
else
nrns:=nrns+1;
writeln('Вызов подпрограммы печати результатов прогона');
outputn;
if nrns<nnrns then slam
else
writeln('Вызов подпрограммы печати результатов по всем прогонам');
output;
end;
procedure output;
begin
writeln('Имитация закончена');
end;
begin
clrscr;
nrns:=0;
nnrns:=1;
ttbeg:=0;
ttfin:=40;
writeln('Вызов процессора дискретного моделирования');
slam;
end.
В программе используются следующие величины:
ttbeg – начало моделирования;
ttfin – окончание моделирования;
nrns – номер текущего имитационного прогона;
nnrns – заданное число прогонов;
tnow– текущее имитационное время;
dt – вспомогательный массив интервалов свершения событий.
В основной части программы определяются начальные общесистемные условия, необходимые для моделирования, и происходит вызов процессора. Последний, в свою очередь, обращается к подпрограмме инициализации, которая задает объектные начальные условия имитации и планирует первое событие. После планирования вызывается подпрограмма перегруппировки, которая расставляет события в календаре по времени свершения. Затем процессор начинает имитацию и извлекает первую запись из календаря. При этом определяется системное время и код события. По коду события процедура eventреализует извлеченное событие.
Проверка окончания имитационного прогона производится после реализации любого очередного события. Если в календаре имеются события и время прогона не использовано полностью, система вновь вызывает подпрограмму извлечения события с минимальным временем исполнения.
По окончании прогона печатается отчет и проверяется условие завершения всех прогонов. Если выполнены не все прогоны, управление передается фазе инициализации. В противном случае имитация заканчивается печатью результатов по всем прогонам.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Ознакомиться с теоретической частью лабораторной работы.
Набрать программу с данными соответствующего варианта, выбранными из приведенной таблицы:















Вариант
1 2 3 4 5 6 7 8
9 10 11 12
dt[1]
1 2
3 4 5 6 7 8 9
8 7 6
dt[2]2 3 4 5 6 7 8 9 8 7 6 5

dt[3]
3 4
5 6 7 8 9 8 7
6 5 4
Отладить программу.
Вывести результаты в пошаговом режиме.
Оформить отчет.
