DRAKON.SU

Текущее время: Пятница, 19 Апрель, 2024 12:47

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 18 Июнь, 2018 08:06 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 401
Пример:
Для достижения результата нужно выполнить несколько проверок.
Причём проверки можно выполнять в любом порядке, но их нужно выполнить все.
Если вытянуть действия проверок в цепочку, то мы как бы задаём обязательность порядка их выполнения.
Каких-то особых условий нет. Просто нужно выполнить несколько действий в любом удобном для исполнителя порядке.
Ещё один простой пример: Сбор чемодана в командировку. Неважно в каком порядке собирать - главное собрать всё.
Как это нарисовать на Драконе?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Июнь, 2018 09:52 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1357
Вложение:
Ответ.png


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 07:37 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 401
Я думал над таким вариантом.
Смущает то, что действия выполняются параллельно, то есть одновременно.
Делать два дела сразу одному исполнителю не получается. Всё равно он делает их по очереди.

Мне нужно показать выполнение действий последовательно, но в любом порядке.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 07:46 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5848
Откуда: Москва
Попробуйте цикл Foreach


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 07:50 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 401
А как это нарисовать?
Для действий.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 08:04 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1357
Шилин Александр писал(а):
Смущает то, что действия выполняются параллельно, то есть одновременно.
Делать два дела сразу одному исполнителю не получается. Всё равно он делает их по очереди.
Не надо смущаться.
Один исполнитель пускай выполняет проверки по одной в любой последовательности.
Нет необходимости в одновременном выполнении и нет необходимости привлекать других исполнителей.
Один исполнитель должен выполнить все проверки.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 09:24 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5848
Откуда: Москва
Шилин Александр писал(а):
Пример:
Для достижения результата нужно выполнить несколько проверок.
Причём проверки можно выполнять в любом порядке, но их нужно выполнить все.
Если вытянуть действия проверок в цепочку, то мы как бы задаём обязательность порядка их выполнения.
Каких-то особых условий нет. Просто нужно выполнить несколько действий в любом удобном для исполнителя порядке.
Ещё один простой пример: Сбор чемодана в командировку. Неважно в каком порядке собирать - главное собрать всё.
Как это нарисовать на Драконе?
Александр Николаевич, спасибо за НОВУЮ постановку задачи.

Можно предложить такое решение.

1. Оформить все проверки как процедуру (икона Вставка).

2. К заголовку процедуры справа прицепить икону Формальные параметры

3. В этой иконе написать:
Цитата:
Проверки выполнять в любом порядке


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 13:07 

Зарегистрирован: Четверг, 30 Январь, 2014 13:38
Сообщения: 423
Выявляется несколько интересных в практическом и теоретическом отношении
проблемных алгоритмических задач и подзадач
(достаточно фундаментального значения - несмотря на простоту 2-х частных примеров):

1
Шилин Александр писал(а):
Пример:
Для достижения результата нужно выполнить несколько проверок.
Причём проверки можно выполнять в любом порядке, но их нужно выполнить все.
Если вытянуть действия проверок в цепочку, то мы как бы задаём обязательность порядка их выполнения.
Каких-то особых условий нет.
Просто нужно выполнить несколько действий в любом удобном для исполнителя порядке.
Имеетеся в виду:
-- в любом удобном порядке в условиях некоторой текущей конкретной ситуации;
-- в разных ситуациях условия могут меняться, и могут быть удобными другие порядки.

2
Шилин Александр писал(а):
Ещё один простой пример:
Сбор чемодана в командировку.
Неважно в каком порядке собирать - главное собрать всё.
Как это нарисовать на Драконе?

3
Это сходные, но, по-видимому, несколько различные задачи.
Вторая задача может быть более общая.
1-я задача четко ориентируется на одного исполнителя
с разными возможными последовательностями действий.
2-я задача может выполняться одним исполнителем
последовательно и с частичным параллелизмом,
а также 2-мя исполнителями (муж и жена собирают один чемодан)
и более того (помогают бабушка, дедушка, внучка, Жучка и т.п.).
Это несколько смешная, но общепонятная бытовая модель.
Возникают следующие вопросы:

3.1
Как корректно задать алгоритмический комплекс действий,
допускающий их выполнение в любом (последовательном и параллельном) порядке?:
не теряя возможности их выполнения в любом порядке.

3.2
Как такую алгоритмическую конфигурацию отобразить на Драконе?

(продолжение следует)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 13:13 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Шилин Александр писал(а):
Ещё один простой пример: Сбор чемодана в командировку. Неважно в каком порядке собирать - главное собрать всё.
Как это нарисовать на Драконе?

Для этой задачи подходит чек-лист.
Чек-лист — это процедура, в которой порядок выполнения шагов не важен.
Для чек-листов можно применять язык ГРАФ.
Вот пример:
https://drakonhub.com/ide/doc/examples/197
Вложение:
chemodan.png
chemodan.png [ 36.58 КБ | Просмотров: 10421 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 13:58 

Зарегистрирован: Четверг, 30 Январь, 2014 13:38
Сообщения: 423
Степан Митькин писал(а):
Шилин Александр писал(а):
Ещё один простой пример: Сбор чемодана в командировку. Неважно в каком порядке собирать - главное собрать всё.
Как это нарисовать на Драконе?

Для этой задачи подходит чек-лист.
Чек-лист — это процедура, в которой порядок выполнения шагов не важен.
Для чек-листов можно применять язык ГРАФ.
Вот пример:
https://drakonhub.com/ide/doc/examples/197

Очень хорошо.
Первый (по счету) иструмент есть - люди уже думают по таким поводам.
В поисковике на ключевое слово "чек-лист" появляется обзорная статья в Википедии:
Контрольный список
[url]https://ru.wikipedia.org/wiki/Контрольный_список[/url]

"Контрольный список (перечень, таблица, карта, чек-лист; англ. checklist) — список факторов, свойств, параметров, аспектов, компонентов, критериев или задач, структурированных особым образом с целью достижения поставленных задач".

Приводятся:
общая характеристика и типы контрольных таблиц, требования к ним, области применения.
В принципе это ассоциируется с задачами разработки АСУ еще 70-х годов:
построение дерева целей и задач.
И в целом это полезная ориентировка в связи с обсуждаемыми примерами (двумя примерами).

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

Кроме того пока остается открытым вопрос автора данной темы:
Как это нарисовать на Драконе?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 17:50 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 401
Степан Митькин писал(а):
Для этой задачи подходит чек-лист.
Чек-лист — это процедура, в которой порядок выполнения шагов не важен.
Для чек-листов можно применять язык ГРАФ.


Именно! В общем-то (если честно) про чек-лист я и спрашиваю.
Пытаюсь его сейчас в Драконе сделать и что-то не получается. Какой-то наглядности не хватает.
Мне бы он нужен именно средствами Дракона.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 17:53 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 401
LKom писал(а):
Шилин Александр писал(а):
Смущает то, что действия выполняются параллельно, то есть одновременно.
Делать два дела сразу одному исполнителю не получается. Всё равно он делает их по очереди.
Не надо смущаться.
Один исполнитель пускай выполняет проверки по одной в любой последовательности.
Нет необходимости в одновременном выполнении и нет необходимости привлекать других исполнителей.
Один исполнитель должен выполнить все проверки.


А как это нарисовать? Всё-таки параллельные - это одновременные.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 17:55 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 401
Владимир Паронджанов писал(а):
3. В этой иконе написать:
Цитата:
Проверки выполнять в любом порядке


Похоже, что это пока единственный способ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июнь, 2018 18:09 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1357
viewtopic.php?p=101841#p101841
Шилин Александр писал(а):
Всё-таки параллельные - это одновременные.

Это ошибочное утверждение.
Параллельные действия: это независимые действия, не связанные с конкретным исполнителем и не связанные временем выполнения.
Параллельные действия порождаются в результате разделения одного (общего) потока управления на несколько - верхняя линия ===.
На нижней линии === параллельные действия объединяются в единый (общий) поток управления, передача управления на единый поток происходит при завершении выполнения всех параллельных действий подключенных к нижней линии ===.

Цитата:
А как это нарисовать?
См. viewtopic.php?p=101818#p101818

П.С. Параллельные действия определены в ГОСТ 19.701-90, в Драконе нотация В.Д. Паронджанова не является адекватной ГОСТу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 20 Июнь, 2018 00:49 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 401
Из ГОСТ 19.701-90:
Вложение:
Параллельные процессы.png
Параллельные процессы.png [ 10.27 КБ | Просмотров: 10390 ]

Примечание. Процессы С, D и Е не могут начаться до тех пор, пока не завершится процесс А; аналогично процесс F должен ожидать завершения процессов B, C и D, однако процесс С может начаться и (или) завершиться прежде, чем соответственно начнется и (или) завершится процесс D.


Если так, то да. Подходит.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 20 Июнь, 2018 07:32 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5848
Откуда: Москва
LKom писал(а):
Параллельные действия определены в ГОСТ 19.701-90, в Драконе нотация В.Д. Паронджанова не является адекватной ГОСТу.
Почему не адекватная?
По-моему, адекватная.
В чем вы видите разницу? Просьба пояснить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 20 Июнь, 2018 08:20 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 401
А то что один Исполнитель выполняет несколько параллельных процессов - это нормально?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 20 Июнь, 2018 09:03 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1357
Шилин Александр писал(а):
параллельных процессов
Уже этот термин (В.Д. Пароджанова) отличается от термина "параллельные действия" по ГОСТу.

Смотрим viewtopic.php?p=101368#p101368 у В.Д. Паронджанова
Изображение
1. термин "параллельная работа" - почему работа
2. "Синхронная" - почему синхронная
3. "Скоординированная" - почему скоординированная
4. "Совместная" - почему совместная
Всех этих требований в ГОСТе нет.
Обязательны ли они - нет не обязательны.
А если все таки нужны - то укажите требования в комментарии.
---
У В.Д. Паронджанова можно найти и другие термины и толкования. Пользователь вводится в заблуждение - " Всё-таки параллельные - это одновременные" (viewtopic.php?p=101841#p101841).

Зачем изменять графику ГОСТа - не нужно, т.к. ГОСТ отображает многолетнюю, международную и обще применяемую практику отображения алгоритмов.
Графика у В.Д. Паронджанов не связана мнемонически с термином "параллельные действия".
Графика у В.Д. Паронджанов не однозначная, т.к. для слияния параллельных действий используется линия горизонтального объединения. В Драконе линия горизонтального объединения не имеет требования завершения действий на всех вертикальных шампурах, текущий маршрут выполнения проходит только по 1-му шампуру.


Последний раз редактировалось LKom Среда, 20 Июнь, 2018 10:31, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 20 Июнь, 2018 10:16 

Зарегистрирован: Четверг, 30 Январь, 2014 13:38
Сообщения: 423
Рассмотрим 1-й пример автора данной темы
Шилин Александр писал(а):
Пример:
Для достижения результата нужно выполнить несколько проверок.
Причём проверки можно выполнять в любом порядке, но их нужно выполнить все.
Если вытянуть действия проверок в цепочку, то мы как бы задаём обязательность порядка их выполнения.
Каких-то особых условий нет.
Просто нужно выполнить несколько действий в любом удобном для исполнителя порядке.
Имеется в виду:
-- в любом удобном порядке в условиях некоторой текущей конкретной ситуации;
-- в разных ситуациях условия могут меняться, и могут быть удобными другие порядки.

1
Первый способ решения задачи:
явно задать алгоритмом (блок-схемой алгоритма)
альтернативный перечень вариантов последовательности действий.

Практически это приемлемо для комплекса n=2 действий.
Возможны m=2 варианта последвательности действий:
действие1 -> действие2,
действие2 -> действие1.
В крайнем случае его можно применить для комплекса n=3 действий:
(предполжительно) будет m=6 вариантов - уже досаточно громоздко.

Но в общем случае такой способ практически неприменим в виду его большой громозкости:
лавинообдразно нарастает число вариантов последовательности действий
(в некоторой комбинаторной зависимости m = f(n)).
Тем не менее:
-- это есть исходная опорная теоретическая и методологическая база решения задачи;
-- его (такой способ) можно практически применять для малых n=2,3 комплексов действий;
-- представляет интерес поиск и анализ образцов и условий его применения.

2
Второй способ уже формируется в данной теме - в постах выше.

Если действия некоторого комплекса действий могут выполняться в любом порядке
(в любой последовательности действий),
то они являются независимыми друг от друга и могут выполняться
не только в любом последовательном, но и в любом параллельном порядке,
включая:
-- полный параллелизм комплекса действий - 1 вариант;
-- частичный параллелизм - много вариантов
(в некоторой комбинаторной зависимости m' = f'(n)).

Существует потенциальный параллелизм выполнения комплекса действий,
который может быть реализован или не реализован.
Параллельное выполнение действий не предполагается по условию задачи.
Однако можно:
1) Отобразить для исполнителя обозримую схему потенциального параллелизма,
как источник вариативности последовательного выполнения действий.
2) Представить в некоторой форме дополниетльное указание типа:
"Выполнять в любой удобной последовательности действий".

В условиях применения Дракона:
1) Отобразить схему потенциального параллелизма комплекса действий можно без проблем.
2) Целесообразно как-то регламентировать
способ (или способы) отображения дополнительного условия.
Возможно, целесообразно предусмотреть
некоторую модификацию условного графического обозначения
(потенциального) параллелизма комплекса действий.

------------------------------------
У автора данного поста возможен такой подход по 2-му способу.

Структурная формула алгоритма - потенциальный пораллелизм
(пример - проверка на 5 условий):

A100 = Ab->(A1 || A2 || A3 || A4 || A5)->Ae,

где
Ab, Ae - начальный (begin) и конечный (end) блок;
|| = #& - составная структурная операция распараллеливания:
в данном случае параллельная конъюнкция потоков;
# - входной узел разделения (дивергенции) потоков;
& - выходной узел соединения (конвергенции) потоков по конъюнкции.

Откуда:
A100 = Ab-(A1 #& A2 #& A3 #& A4 #& A5)-Ae = Ab-#(A1, A2, A3, A4, A5)&-Ae

Указание произвольного порядка выполнения действий A1, .. A5
можно задать подчеркиванием символов структурных операций:

A200 = Ab-(A1 || A2 || A3 || A4 || A5)-Ae =
= Ab-(A1 #& A2 #& A3 #& A4 #& A5)-Ae = Ab-#(A1, A2, A3, A4, A5)&-Ae

-----------------------
Заключение:
1) Специфика 2-го способа:
он ориентирован на "сообразительного" исполнителя,
который может выбрать удобный порядок дейтсвий,
то есть только на человека.
2) Выражение:
(A1, A2, A3, A4, A5) - это есть контрольный список (чек-лист) задачи.
Это есть основа для теоретического обобщения задачи.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 21 Июнь, 2018 16:12 

Зарегистрирован: Четверг, 30 Январь, 2014 13:38
Сообщения: 423
Наборы операторов алгоритмов и команд.
Алгоритмы группового управления.


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

Автор данного поста впервые начал сталкиваться с такими вопросами очень давно,
еще в начале 70-х годов:
в разработках задач в области АСУ, в обследовании и анализе производства и т.п.
Тогда они наводили на размышление, но не удалось их довести до ума - это еще не было актуально.
Тем не менее постепенно со временем кое-что стало проясняться и накапливать.

Неожиданной это начинает работать в поисковых прикидках (на перспективу)
задач группового управления роботами и другими объектами.
Причем - с моделированием программной реализации алгоритмов группового управления
в детской среде программирования Scratch.

-------------------------
Короче говоря:

1
В исходной основе всей параллельной (и последовательной) алгоритмики
лежат синтаксические алгоритмические конструкции
типа наборов операторов алгоритмов и / или отдельных команд.
Например, структурные формулы алгоритмов типа набор операторов:
-- набор операторов каманд:

A = (Z1, Z2, Z3, ..., Zn)

-- набор операторов алгоритмов:

A = (A1, A2, A3, ..., An)

Пример схемы алгоритма A50 = (Z30, Z10, Z15, Z20):
Вложение:
01 A50.PNG
01 A50.PNG [ 46.74 КБ | Просмотров: 10305 ]

2
Основные особенности наборов операторов в общем случае:
1) Они могут выполняться в любом последовательном и параллельном порядке во времени.
2) Они могут неоднократно повторяться.
3) Они:
-- могут быть полность независимыми друг от друга в исполнении;
-- могут взаимодествовать по внутренним факторам, однако:
это никак не отображается в исходном общем представлении набора операторов.
Пример исполнения набора операторов во времени:
Вложение:
02 A50.PNG
02 A50.PNG [ 9.94 КБ | Просмотров: 10305 ]

3
Вложение:
03 Навешивание.PNG
03 Навешивание.PNG [ 44.86 КБ | Просмотров: 10305 ]


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB