DRAKON.SU
https://forum.drakon.su/

Как показать выполнение нескольких действий в любом порядке
https://forum.drakon.su/viewtopic.php?f=78&t=6268
Страница 1 из 2

Автор:  Шилин Александр [ Понедельник, 18 Июнь, 2018 08:06 ]
Заголовок сообщения:  Как показать выполнение нескольких действий в любом порядке

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

Автор:  LKom [ Понедельник, 18 Июнь, 2018 09:52 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

Вложение:
Ответ.png

Автор:  Шилин Александр [ Вторник, 19 Июнь, 2018 07:37 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

Я думал над таким вариантом.
Смущает то, что действия выполняются параллельно, то есть одновременно.
Делать два дела сразу одному исполнителю не получается. Всё равно он делает их по очереди.

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

Автор:  Владимир Паронджанов [ Вторник, 19 Июнь, 2018 07:46 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

Попробуйте цикл Foreach

Автор:  Шилин Александр [ Вторник, 19 Июнь, 2018 07:50 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

А как это нарисовать?
Для действий.

Автор:  LKom [ Вторник, 19 Июнь, 2018 08:04 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

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

Автор:  Владимир Паронджанов [ Вторник, 19 Июнь, 2018 09:24 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

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

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

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

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

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

Автор:  andr [ Вторник, 19 Июнь, 2018 13:07 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

Выявляется несколько интересных в практическом и теоретическом отношении
проблемных алгоритмических задач и подзадач
(достаточно фундаментального значения - несмотря на простоту 2-х частных примеров):

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

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

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

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

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

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

Автор:  Степан Митькин [ Вторник, 19 Июнь, 2018 13:13 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

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

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

Автор:  andr [ Вторник, 19 Июнь, 2018 13:58 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

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

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

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

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

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

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

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

Автор:  Шилин Александр [ Вторник, 19 Июнь, 2018 17:50 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

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


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

Автор:  Шилин Александр [ Вторник, 19 Июнь, 2018 17:53 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

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


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

Автор:  Шилин Александр [ Вторник, 19 Июнь, 2018 17:55 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

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


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

Автор:  LKom [ Вторник, 19 Июнь, 2018 18:09 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

viewtopic.php?p=101841#p101841
Шилин Александр писал(а):
Всё-таки параллельные - это одновременные.

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

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

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

Автор:  Шилин Александр [ Среда, 20 Июнь, 2018 00:49 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

Из ГОСТ 19.701-90:
Вложение:
Параллельные процессы.png
Параллельные процессы.png [ 10.27 КБ | Просмотров: 10427 ]

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


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

Автор:  Владимир Паронджанов [ Среда, 20 Июнь, 2018 07:32 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

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

Автор:  Шилин Александр [ Среда, 20 Июнь, 2018 08:20 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

А то что один Исполнитель выполняет несколько параллельных процессов - это нормально?

Автор:  LKom [ Среда, 20 Июнь, 2018 09:03 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

Шилин Александр писал(а):
параллельных процессов
Уже этот термин (В.Д. Пароджанова) отличается от термина "параллельные действия" по ГОСТу.

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

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

Автор:  andr [ Среда, 20 Июнь, 2018 10:16 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

Рассмотрим 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) - это есть контрольный список (чек-лист) задачи.
Это есть основа для теоретического обобщения задачи.

Автор:  andr [ Четверг, 21 Июнь, 2018 16:12 ]
Заголовок сообщения:  Re: Как показать выполнение нескольких действий в любом поря

Наборы операторов алгоритмов и команд.
Алгоритмы группового управления.


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

Автор данного поста впервые начал сталкиваться с такими вопросами очень давно,
еще в начале 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 КБ | Просмотров: 10342 ]

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

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

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/