Разработка программной модели на языке GPSS World



Программная модель на языке GPSS World представлена ниже.

*===================================================================================
* GPSS World - Examen10.gps
*-----------------------------------------------------------------------------------
* Устный экзамен
*-----------------------------------------------------------------------------------
* Условия.
* Имеется список группы, стопка билетов. В каждом билете 2 вопроса. Все вопросы
* различной сложности (сложность рапределяется случайным образом по билетам, под
* сложностью понимается среднее время подготовки вопроса). Количество билетов
* может быть меньше количества студентов.
* Описание процесса.
* Входит студент (имя - случайным образом). Если есть очередь за билетами, то ждёт.
* Когда подходит очередь брать билет, студент его берёт (случайный номер).
* Если все билеты уже были разобраны, то студент получает тот билет, который
* был сдан только что ответившим студентом.
* Студент идёт готовиться. Время подготовки зависит от сложности билета.
* Подготовленный студент ждёт очереди к преподавателю для ответа.
* Когда очередь к преподавателю подходит, студент идёт отвечать.
* По результатам ответа студент получает оценку (от 2 до 5) случайным образом.
* Результаты заносятся в ведомость: номер студента, фамилия студента, номер билета,
* оценка
*===================================================================================
KolBil EQU 15; Количество билетов
KolSt EQU 20; Количество студентов
BiletPak STORAGE 15; Стопка билетов для выбора
Bilet MATRIX,15,3; Список билетов(по два вопроса)
Grup MATRIX,20,2; Список группы
Vedom MATRIX,20,4; Ведомость
INCLUDE "Gruppa.txt"; Список группы исходный
INITIAL X$SvobBilet,0; Номер освободившегося билета
INITIAL X$FixKolBil,0; Количество выданных билетов
*-----------------------------------------------------------------------------------
* Генерирование сложности вопросов в билетах
*-----------------------------------------------------------------------------------
GENERATE,,,1; Транзакты для билетов
ASSIGN Ind,0; Обнуление счётчика цикла
Met30 ASSIGN Ind+,1; Счётчик цикла билетов
TEST LE P$Ind,KolBil,Met20; Сравнение с максимумом цикла
MSAVEVALUE Bilet,P$Ind,1,(DUniform(1,5,15)); Сложность вопроса 1
MSAVEVALUE Bilet,P$Ind,2,(DUniform(2,5,15)); Сложность вопроса 2
TRANSFER,Met30; Назад в цикл задания сложности
Met20 TERMINATE 0; Выход из цикла сложности
*-----------------------------------------------------------------------------------
* Появление студента и его идентификация по списку группы
*-----------------------------------------------------------------------------------
GENERATE 2,1,,KolSt; Студент вошёл
SAVEVALUE Stud+,1; Номер студента по порядку входа
; Цикл случайной проверки, был ли уже студент с такой фамилией
Met10 ASSIGN Num,(DUniform(3,1,KolSt)); Случайное число для студента
TEST E MX$Grup(P$Num,2),0,Met10; Пришёл ли уже такой студент?
; Окончание цикла проверки и определения фамилии студента
ASSIGN Name,MX$Grup(P$Num,1); Новый студент: имя из списка
MSAVEVALUE Grup,P$Num,2,X$Stud; Вписать в матрицу, что пришёл
MSAVEVALUE Vedom,P$Num,1,P$Num; В ведомость номер студента
MSAVEVALUE Vedom,P$Num,2,P$Name; В ведомость имя студента
; Окончание выявления фвмилии студента
SAVEVALUE FixName,P$Name; Имя студента для визуализации
SAVEVALUE FixNum,P$Num; Номер студента для визуализации
*-----------------------------------------------------------------------------------
* Получение билета и подготовка ответа
*-----------------------------------------------------------------------------------
QUEUE BiletQ; Занимает очередь за билетом
ENTER BiletPak; Пошёл за билетом
DEPART BiletQ; Покинул очередь за билетом
; Получение билета, освободившегося после очередного сдавшего экзамен студента
TEST NE X$SvobBilet,0,Met40
ASSIGN Bil,X$SvobBilet; Свободный билет
TRANSFER,Met60
; Получение билета (определение номера билета случайным образом) в цикле
Met40 ASSIGN Bil,(DUniform(4,1,KolBil)); Случайное число для билета
TEST E MX$Bilet(P$Bil,3),0,Met40; Взят ли уже такой билет?
; Окончание цикла определения номера выданного билета
Met60 SAVEVALUE FixKolBil+,1; Количество выданных билетов
MSAVEVALUE Bilet,P$Bil,3,P$Num; Вписать студента с этим билетом
MSAVEVALUE Vedom,P$Num,3,P$Bil; В ведомость записан № билета
SAVEVALUE FixBil,P$Bil; Номер билета для визуализации
; Подготовка вопросов
SAVEVALUE Resp1,MX$Bilet(P$Bil,1)
ADVANCE Resp1,(0.1#Resp1); Готовит вопрос 1
SAVEVALUE Resp2,MX$Bilet(P$Bil,2)
ADVANCE Resp2,(0.1#Resp2); Готовит вопрос 2
LEAVE BiletPak; Студент готов
QUEUE Otvet; Студент ждёт очереди отвечать
*-----------------------------------------------------------------------------------
* Изложение ответа преподавателю
*-----------------------------------------------------------------------------------
SEIZE Prepod; Студент пошёл отвечать
DEPART Otvet; Студент покинул очередь отвечать
SAVEVALUE SvobBilet,P$Bil; Номер освободившегося билета
MSAVEVALUE Bilet,P$Bil,3,0; Студент сдал билет
ADVANCE 5,2; Отвечает на вопрос 1 билета
ADVANCE 5,2; Отвечает на вопрос 2 билета
ASSIGN Ocenka,(DUniform(5,2,5)); Оценка студенту в зачётку
MSAVEVALUE Vedom,P$Num,4,P$Ocenka; Оценка студенту в ведомость
ADVANCE 1; Время простановки оценок
RELEASE Prepod; Студент закончил ответ
TERMINATE 1; Студент ушёл
*-----------------------------------------------------------------------------------

Здесь реализованы некоторые операции, которые в реальном объекте (на экзамене) вынесены за пределы его функционирования.

Программа разделена на следующие фрагменты.

Первый фрагмент является описание ряда переменных и констант.

Второй фрагмент "Генерирование сложности вопросов в билетах" выполняет функцию задания сложности билетов случайным образом. В реальности для каждой учебной дисциплины билеты разрабатываются заранее и можно определить тем или иным способом сложность каждого из вопросов билета (например, с помощью тестирования на студентах или по результатам предыдущих экзаменов).

Третий фрагмент "Появление студента и его идентификация по списку группы" отражает процесс прихода студентов на экзамен случайным образом. Имеется список группы и каждый пришедший студент отмечается в нём с получением фамилии и других данных.

Четвёртый фрагмент "Получение билета и подготовка ответа" характеризует случайный характер получения билета и различия в требуемом времени подготовки. Здесь отражается также факт меньшего количества билетов, чем студентов, что может создавать очередь за билетами. В этом случае каждый ожидающий билета студент получит тот билет, который отдаст студент, ответивший на него преподавателю. Этот процесс отражён в модели.

Пятый фрагмент "Изложение ответа преподавателю" имитирует занятие преподавателя и получении оценки. В данном случае оценка генерируется случайным образом, но в будущем можно будет увязывать её с оценками по другим учебным дисциплинам.


Дата добавления: 2015-12-17; просмотров: 22; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!