Форум программистов, компьютерный форум, киберфорум
GPSS
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
13 / 13 / 2
Регистрация: 31.03.2013
Сообщений: 107
1

Объясните, как в данном примере функционирует работа операторов

24.09.2014, 13:09. Показов 2075. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. У меня такoй вoпрос не могу понять как в данном примере функционирует работа split 2,FN$abc,4, и как происходят прыжки по блокам.
Кликните здесь для просмотра всего текста
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
abc function p4,d3 
1,blocka/2,blockb/3,blockc
initial x$col,3
 
    generate 16,2
    advance 5,2
    test E x$col,3
    savevalue col,0
    split 2,FN$abc,4
 
blocka  seize ms1
    advance 15,2
    release ms1
    savevalue col+,1
    advance 6,4
    transfer ,sborka
 
blockb  seize ms2
    advance 12,5
    release ms2
    savevalue col+,1
    advance 4,3
    transfer ,sborka
    
blockc  seize ms3
    advance 17,2
    release ms3
    savevalue col+,1
    advance 5,3
    transfer ,sborka
 
sborka  assemble 3
    advance 6,3
    terminate
    generate 480
    terminate 1
        start 2

Текст задачи:
Кликните здесь для просмотра всего текста
Мастерская по наладке устройств получает задания каждые a мин. Устройство состоит из трех частей. Бригада ремонтников (3 чел.) после получения устройства в течение (5  2) мин разбирает его на части, и каждый из рабочих занимается своей частью в течение b мин. Затем части отправляются на тестирование, а бригада берется за новое устройство, но только после отправки всех трех частей. Тестирование занимает по c мин. на часть, после чего устройство собирают в течение (6  3) мин и отправляют на склад.
Разработать имитационную программу для анализа процесса работы мастерской в течение дня (две смены). Предложить способы повышения эффективности работы ремонтников.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2014, 13:09
Ответы с готовыми решениями:

Объясните, как в данном примере работает friend
friend bool operator== (const String& firstStr, const String& secondStr); Если писать код без...

Объясните на данном примере как работать с композицией
Не могу понять как работать с композицией. А именно вывод интересует. Что я делаю не так?#include...

Объясните, как в данном примере работают виртуальные функции?
Такое дело надо обьяснить особенность виртуальной функции, типо как будет работать программа без...

Объясните работу с интерфейсами в данном примере
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

5
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
24.09.2014, 17:41 2
Лучший ответ Сообщение было отмечено Dukalys как решение

Решение

Код
Описание Блок SPLIT выполняет функцию копирования входящего в него транзакта, который называется
исходным или порождающим.
Формат SPLIT <A> ,[<B>],[<C>]

В поле А задается число создаваемых копий. Если вычисленное значение аргумента поля А равно
нулю, то блок SPLIT не выполняет никаких операций. После создания копий транзакт пытается
перейти к следующему по номеру блоку. Все копии формируются в момент входа порождающего
транзакта в блок SPLIT.

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

В поле С может быть задан номер параметра, используемого для присвоения копиям последовательных
номеров. Если, например, задан параметр j, то j-му параметру исходного транзакта и n - копиям этого
транзакта будут присвоены значения, как показано ниже. Пусть Х - входное значение параметра j,
тогда значение параметра j первой копии равно Х+1, второй копии - Х+2, третьей копии - Х+3 и т.д.
Помимо значений параметров в каждую копию записывается значение приоритета и отметка времени
исходного транзакта. Копии поочередно поступают в список текущих событий, причем каждая копия
помещается в конец соответствующего приоритетного класса.
Добавлено через 6 минут
split 2,FN$abc,4
Входящая заявка делает две копии. Оригинал идёт ниже по программе, копии идут по пути, который разыгрывается функцией abc - то есть blocka b или с. В четвёртый параметр записывается значение 0 для оригинала 1 для 1ой копии 2 для второй.
И тут интересный момент а что раньше? 1. вычисляется путь, который зависит от параметра 4 (p4 смотреть функцию abc) или же 2. сначала вычисляется p4 а потом вычисляется путь?

Разница огромная в первом случае p4 = 0 и функция будет возвращать всегда самое первое значение, Либо вообще ругаться на отсутсвие значения параметра 4.

Во втором случае функция вернёт нормальную метку blocka blockb или с.

Добавлено через 1 минуту
Судя по результатам моделирования работает вариант 2, очень интересно. Возьму на вооружение.

Код
 LABEL              LOC  BLOCK TYPE     ENTRY COUNT CURRENT COUNT RETRY
                    1    GENERATE            60             0       0
                    2    ADVANCE             60             5       0
                    3    TEST                55             0       0
                    4    SAVEVALUE           55             0       0
                    5    SPLIT               55             0       0
BLOCKA              6    SEIZE               55             0       0
                    7    ADVANCE             55             1       0
                    8    RELEASE             54             0       0
                    9    SAVEVALUE           54             0       0
                   10    ADVANCE             54             0       0
                   11    TRANSFER            54             0       0
BLOCKB             12    SEIZE               55             0       0
                   13    ADVANCE             55             0       0
                   14    RELEASE             55             0       0
                   15    SAVEVALUE           55             0       0
                   16    ADVANCE             55             0       0
                   17    TRANSFER            55             0       0
BLOCKC             18    SEIZE               55             0       0
                   19    ADVANCE             55             1       0
                   20    RELEASE             54             0       0
                   21    SAVEVALUE           54             0       0
                   22    ADVANCE             54             0       0
                   23    TRANSFER            54             0       0
SBORKA             24    ASSEMBLE           163             1       0
                   25    ADVANCE             54             0       0
                   26    TERMINATE           54             0       0
                   27    GENERATE             2             0       0
                   28    TERMINATE            2             0       0
1
13 / 13 / 2
Регистрация: 31.03.2013
Сообщений: 107
24.09.2014, 19:49  [ТС] 3
Скажите, а почему, когда идёт розыгрыш куда пойдут, копии ни разу не идут в block a, ведь он также описан в функции abc. И про 4 параметр - это как бы индекс массива ( если я правильно вас понял), и по этому индексу выбирается параметр функции abc p4?
0
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
24.09.2014, 20:05 4
параметр это никакой не индекс. у каждой заявки в системе есть параметры ( у каждой заявки может храниться своё значение в параметре). 4 - это просто номер этого параметра, можно хоть 1 использовать, хоть имя.

сейчас дополнил модель таблицами и результат следующий, значения P4 принимают значения ТОЛЬКО 1 2 3, я так понимаю =1 оригинал =2 1я копия и =3 вторая копия.

tablica table p4,0,1,5

abc function p4,d3
1,blocka/2,blockb/3,blockc
initial x$col,3

generate 16,2
advance 5,2
test E x$col,3
savevalue col,0
split 2,FN$abc,4

blocka tabulate tablica ; заносим в таблицу значение p4
seize ms1
advance 15,2
release ms1
savevalue col+,1
advance 6,4
transfer ,sborka

blockb tabulate tablica
seize ms2
advance 12,5
release ms2
savevalue col+,1
advance 4,3
transfer ,sborka

blockc tabulate tablica
seize ms3
advance 17,2
release ms3
savevalue col+,1
advance 5,3
transfer ,sborka

sborka assemble 3
advance 6,3
terminate
generate 480
terminate 1
start 2
Объясните, как в данном примере функционирует работа операторов
1
13 / 13 / 2
Регистрация: 31.03.2013
Сообщений: 107
24.09.2014, 22:07  [ТС] 5
Спасибо, понял
У меня теперь вопрос по таблице... у нас в методичке пример таблицы точно с такими же коэф. как и у вас TABLE Р$1,0,5,10 - Но не написано, что значит каждый параметр, но я на просторах интернета нашёл очень крутой справочник по командам с примерами (очень выручает)... Только вот про таблицы понял, что значит 10, а вот с остальными аргументами не понял в чём фишка ( пробовал менять пользы не принесло).
Вот вырезка:
Кликните здесь для просмотра всего текста
TABLE - определение таблицы.
Формат: num TABL[E] A,B,C,D,E
num - номер таблицы; А - аргумент таблицы (-):
IА - промежуточный интервал;
RT - интенсивность прихода;
В - верхняя граница нижнего интервала;
С - ширина интервала;
D - число интервалов;
Е - интервал времени (только для RT-режима).
Может вы как-нибудь проясните картину ?
0
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
25.09.2014, 07:30 6
Лучший ответ Сообщение было отмечено TopolM как решение

Решение

A - значение которое вносится в таблицу, в вашем случае значение 4 го параметра заявки
В - первое значение которое будет в таблице (минимум)
С - элементарный интервал таблицы
D - сколько всего интервалов содержит таблица

Таким образом В-D задают диапазон или ширину таблицы
0
25.09.2014, 07:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2014, 07:30
Помогаю со студенческими работами здесь

Объясните подробно , пожалуйста , каким образом работает цикл for на данном примере
Значение переменной p, которое будет выведено в ячейку F1Book после выполнения фрагмента программы...

Пожалуйста объясните в чем состоит перегрузка операторов данном случае?
// Complex.cpp: главный файл проекта. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cmath&gt;...

Объясните использование "double" в данном примере
#include &lt;stdio.h&gt; #include &lt;math.h&gt; int main(void) { int a,b,c; scanf(&quot;%d %d...

Как мыслить в данном примере?
Скажите глядя на такой пример из Head first - изучаем Java: (если я правильно понимаю он должен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru