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

Множественный Адрес
https://forum.drakon.su/viewtopic.php?f=78&t=5518
Страница 1 из 1

Автор:  Ильченко Эдуард [ Среда, 14 Октябрь, 2015 11:54 ]
Заголовок сообщения:  Множественный Адрес

Допустим есть задача обработать большое количество разных, но однотипных событий.
Например, нажатия клавиш клавиатуры.

Клавиш много … ещё и модификаторы.
Вложение:
ev1.png
ev1.png [ 20.89 КБ | Просмотров: 13927 ]

Пока всё нормально. Проблемы начинаются когда нужно разобрать штук 30 клавиш.
Реакцию на каждую клавишу удобно описывать в отдельной ветке,
но сначала нужно Переключателем разобрать маршруты.

Вот как-то так:
Вложение:
ev2.png
ev2.png [ 26.68 КБ | Просмотров: 13927 ]

И в сокращённом виде:
Вложение:
ev3.png
ev3.png [ 53.28 КБ | Просмотров: 13927 ]

Конечно, можно использовать Вставку, обрабатывающую конкретное нажатие клавиши,
прямо на маршруте соответствующего Варианта в Переключателе.
Правда, при большом количестве Вариантов, отсуствует возможность фрагментирования схемы,
в отличии о того, как это можно сделать с Ветками, отделив их друг от друга Соединителями.
Для устранения длинных горизонтальных Переключателей, на мой взгляд, можно воспользоваться следующей конструкцией:
Вложение:
ev4.png
ev4.png [ 43.11 КБ | Просмотров: 13927 ]

Икона Выбор (под №1) — описывает критерий, по которому будет производится отбор маршрутов.

Икона Вариант (№2, в данном случае Множественный вариант) — описывает множество вариантов
и идентификатор множества (самая верхняя строка).

Икона Адрес (№3) — содержит идентификатор множества и может ссылаться на любую ветку,
имя которой содержится в иконе Вариант (№2).
Конкретная ветка определяется во время исполнения действий, описанных в алгоритме.

Итог:

1
Получаем компактную запись выбора из большого количества вариантов.

2
Получаем возможность описания каждого варианта в ветке.

3.
Получаем возможность деления схемы Соединителями.

Автор:  LKom [ Среда, 14 Октябрь, 2015 13:01 ]
Заголовок сообщения:  Re: Множественный Адрес

В плане обсуждения:

1. Наличие в Силуэте икон Соединитель оказалось, что не всегда позволяет разделить длинную схему на приемлемые куски.

2. Наличие в блоке Переключатель не всегда требует для каждого Варианта обработку переносить в отдельную Ветку. Можно обработку выполнить непосредственно в блоке Переключатель.

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

4. В иконе Адрес 3 взамен текста "ИМЕНА КЛАВИШ" лучше указать перечень текстов икон Ветка.

5. Вариации языка Дракон создают в редакторе Фабула для пользователя хаос. Понимание Фабула-схем затруднено. Язык Дракон и ГОСТ являются самодостаточными.

Автор:  Степан Митькин [ Среда, 14 Октябрь, 2015 14:01 ]
Заголовок сообщения:  Re: Множественный Адрес

Ильченко Эдуард писал(а):
Пока всё нормально. Проблемы начинаются когда нужно разобрать штук 30 клавиш.

Не следует совать инструмент туда, где он бесполезен. Икона "Выбор" не предназначена для большого количества вариантов.
Вместо иконы "Выбор" лучше записать все варианты в виде таблицы.
Вложение:
Screen Shot 10-14-15 at 12.57 PM.PNG
Screen Shot 10-14-15 at 12.57 PM.PNG [ 6.49 КБ | Просмотров: 13911 ]

То же самое на языке JavaScript:
Код:
setKeyCallback("q", addSymbol)
setKeyCallback("w", addSymbol)
setKeyCallback("r", addSymbol)
setKeyCallback("t", addSymbol)
setKeyCallback("esc", cancelEdit)
setKeyCallback("enter", saveEdit)
setKeyCallback("u", addSymbol)
setKeyCallback("v", addSymbol)
setKeyCallback("w", addSymbol)

Автор:  LKom [ Среда, 14 Октябрь, 2015 14:23 ]
Заголовок сообщения:  Re: Множественный Адрес

Степан Митькин писал(а):
Не следует совать инструмент туда, где он бесполезен. Икона "Выбор" не предназначена для большого количества вариантов.Вместо иконы "Выбор" лучше записать все варианты в виде таблицы.
Насколько я понял, Степан предлагает назначить каждой клавише процедуры обработчики событий нажатия клавиш. Обработчики будут запускаться операционной системой без их вызова из программы.

Автор:  Ильченко Эдуард [ Среда, 14 Октябрь, 2015 14:29 ]
Заголовок сообщения:  Re: Множественный Адрес

LKom писал(а):
1. Наличие в Силуэте икон Соединитель оказалось, что не всегда позволяет разделить длинную схему на приемлемые куски.

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

LKom писал(а):
2. Наличие в блоке Переключатель не всегда требует для каждого Варианта обработку переносить в отдельную Ветку.

Согласен, но иногда это может быть удобнее.

LKom писал(а):
Можно обработку выполнить непосредственно в блоке Переключатель.

Да. В своём сообщении я указал на это. Остаётся проблема длинного горизонтального Переключателя.

LKom писал(а):
3. При большом количестве Вариантов, они могут объединяться в родственные функциональные группы. Разбор можно выполнить по группам и каждую группу обрабатывать в соответствующей схеме.

Можно. Но это сильно засоряет схему.

LKom писал(а):
4. В иконе Адрес 3 взамен текста "ИМЕНА КЛАВИШ" лучше указать перечень текстов икон Ветка.

Не лучше. Появляется слишком большая икона Адрес, нарушающая гармонию в дракон-схеме.

LKom писал(а):
5. Вариации языка Дракон создают в редакторе Фабула для пользователя хаос. Понимание Фабула-схем затруднено.

Да-да, а ещё он называл "земляным червяком"!
Аминь : ) (Если Вы не заметили, Фабулу я вообще не упоминал.)

LKom писал(а):
Язык Дракон и ГОСТ являются самодостаточными.

ДРАКОН с ГОСТом имеет мало общего. ГОСТовскими блок-схема практически не пользуются.
Самодостаточный объект не требует использования - потому что он самодостаточный ... ? ... ! ? : )

Автор:  Степан Митькин [ Среда, 14 Октябрь, 2015 14:37 ]
Заголовок сообщения:  Re: Множественный Адрес

LKom писал(а):
Обработчики будут запускаться операционной системой без их вызова из программы.

Я хотел сказать другое.
Когда есть много вариантов, мы их описываем при помощи хэш-таблицы.
Потом во время выполнения мы ищем процедуру в этой хэш-таблице и выполняем её.

Вложения:
Как-отобразить-ветвление.png
Как-отобразить-ветвление.png [ 28.22 КБ | Просмотров: 13907 ]

Автор:  Ильченко Эдуард [ Среда, 14 Октябрь, 2015 14:39 ]
Заголовок сообщения:  Re: Множественный Адрес

Степан Митькин писал(а):
Не следует совать инструмент туда, где он бесполезен.

Вы просто не умеете им пользоваться.
Шучу : )

Степан Митькин писал(а):
Икона "Выбор" не предназначена для большого количества вариантов.

Согласен. Я и не предлагаю её так использовать.
В ней нужно прописывать критерий отбора (тип множества).

Степан Митькин писал(а):
Вместо иконы "Выбор" лучше записать все варианты в виде таблицы.

Не лучше. В языке ДРАКОН отсутствуют таблицы.

К тому же, в случае Множественного адреса (мультиадреса) редактор может подсвечивать возможные переходы.
Мультиадрес, это такое же место принятия решения о выборе маршрута, как и Вопрос и Выбор (в Переключателе).

Автор:  Ильченко Эдуард [ Среда, 14 Октябрь, 2015 14:40 ]
Заголовок сообщения:  Re: Множественный Адрес

Степан Митькин писал(а):
Когда есть много вариантов, мы их описываем при помощи хэш-таблицы.
Потом во время выполнения мы ищем процедуру в этой хэш-таблице и выполняем её.

В Вашей схеме пропало одно из достоинств ДРАКОНа: наглядность.

Автор:  Степан Митькин [ Среда, 14 Октябрь, 2015 15:05 ]
Заголовок сообщения:  Re: Множественный Адрес

Ильченко Эдуард писал(а):
В языке ДРАКОН отсутствуют таблицы.

Да это так. Поэтому таблицу можно хранить отдельно от ДРАКОН-схем.
Или же её можно запихнуть в икону "Действие". (Я обычно так делаю.)

Почему я так прицепился к предлагаемому расширению языка ДРАКОН?
Потому, что это усложнение. А язык должен быть простым.
Тупым, как бревно.

Ильченко Эдуард писал(а):
В Вашей схеме пропало одно из достоинств ДРАКОНа: наглядность.

Может быть. Но ваши расширения языка ДРАКОН могут превратить его в сложнейшего монстра.
Будет этакий графический С++. (да простят меня...)

Автор:  Владимир Паронджанов [ Среда, 14 Октябрь, 2015 15:11 ]
Заголовок сообщения:  Re: Множественный Адрес

Читаю с интересом. Предложений у меня нет.

1. Эдуард указал на слабое место и попытался его решить.

2. Степан предложил таблицу.

3. Эдуард возразил Степану, что в ДРАКОНе нет таблиц.

4. Степан, попробуйте добавить в ДРАКОН таблицу.
Интересно, как Вы представляете такое добавление.

Автор:  Ильченко Эдуард [ Среда, 14 Октябрь, 2015 16:14 ]
Заголовок сообщения:  Re: Множественный Адрес

Степан Митькин писал(а):
Но ваши расширения языка ДРАКОН могут превратить его в сложнейшего монстра.

Могут.
Но могут и в добрейшее существо : )

Монстра в клетку, добряку - конфетку : )

"Практика - критерий истинности." (с) ?

Степан Митькин писал(а):
Будет этакий графический С++. (да простят меня...)

К С++ у меня сложные чувства. Я его не люблю : ( Но именно на нём написана Фабула.
Потому что в Qt есть всё, что нужно для разработки.

Перед этим пробовал (для ДРАКОНа) макросы ООо, Python, BlackBox, FreePascal. И всё какое-то не доделанное ... не в смысле языка, а в смысле готовой инфраструктуры.

В общем удобства победили нелюбовь.

Автор:  andr [ Среда, 14 Октябрь, 2015 17:07 ]
Заголовок сообщения:  Re: Множественный Адрес

Ильченко Эдуард писал(а):
LKom писал(а):
3. При большом количестве Вариантов, они могут объединяться в родственные функциональные группы. Разбор можно выполнить по группам и каждую группу обрабатывать в соответствующей схеме.

Можно. Но это сильно засоряет схему.
А я бы предложил еще подумать на эту тему.

1
Размер имеет значение?:
нижний и верхний регистр клавиатуры.
Если имеет, то тогда вообще выбор нужного символа сплошняком из длинного списка - это подходящее занятие для тупого автомата.
Желательна какая-то удобная рабочая классификация.

2
В ВТ всегда было деление символов на следующие классы, по крайней мере:
-- буквы (алфавита естественного языка);
-- цифры;
-- спец.знаки.
Еще нужно добавиться спец.клавиши клавиатуры.

3
Такая простая классификация элементарно реализуется в Драконе обычными средствами.
А там в каждую обычную линию выбора можно по минимуму добавлять блоки множественного адреса.

Автор:  Ильченко Эдуард [ Среда, 14 Октябрь, 2015 17:51 ]
Заголовок сообщения:  Re: Множественный Адрес

Можно сделать ещё проще.
Обойтись без иконы Вариант №2, а всё множество значений вариантов распределить по шапке дракон-схемы.
Например, как для таблицы решений.
Вложение:
tab02.png
tab02.png [ 29.56 КБ | Просмотров: 13882 ]

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