DRAKON.SU

Текущее время: Суббота, 27 Февраль, 2021 03:21

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




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

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Допустим есть задача обработать большое количество разных, но однотипных событий.
Например, нажатия клавиш клавиатуры.

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

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

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

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

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

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

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

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

Итог:

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Множественный Адрес
СообщениеДобавлено: Среда, 14 Октябрь, 2015 13:01 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1154
В плане обсуждения:

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

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Множественный Адрес
СообщениеДобавлено: Среда, 14 Октябрь, 2015 14:01 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 550
Ильченко Эдуард писал(а):
Пока всё нормально. Проблемы начинаются когда нужно разобрать штук 30 клавиш.

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

То же самое на языке 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)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Множественный Адрес
СообщениеДобавлено: Среда, 14 Октябрь, 2015 14:23 

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


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

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
LKom писал(а):
1. Наличие в Силуэте икон Соединитель оказалось, что не всегда позволяет разделить длинную схему на приемлемые куски.

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

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

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

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

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

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

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

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

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

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Множественный Адрес
СообщениеДобавлено: Среда, 14 Октябрь, 2015 14:37 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 550
LKom писал(а):
Обработчики будут запускаться операционной системой без их вызова из программы.

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


Вложения:
Как-отобразить-ветвление.png
Как-отобразить-ветвление.png [ 28.22 КБ | Просмотров: 6775 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Множественный Адрес
СообщениеДобавлено: Среда, 14 Октябрь, 2015 14:39 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Степан Митькин писал(а):
Не следует совать инструмент туда, где он бесполезен.

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

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

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

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

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

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


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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Множественный Адрес
СообщениеДобавлено: Среда, 14 Октябрь, 2015 15:05 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 550
Ильченко Эдуард писал(а):
В языке ДРАКОН отсутствуют таблицы.

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

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

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

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


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5090
Откуда: Москва
Читаю с интересом. Предложений у меня нет.

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

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

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

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


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

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Степан Митькин писал(а):
Но ваши расширения языка ДРАКОН могут превратить его в сложнейшего монстра.

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

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

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

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Множественный Адрес
СообщениеДобавлено: Среда, 14 Октябрь, 2015 17:07 

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

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

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

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

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


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

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Можно сделать ещё проще.
Обойтись без иконы Вариант №2, а всё множество значений вариантов распределить по шапке дракон-схемы.
Например, как для таблицы решений.
Вложение:
tab02.png
tab02.png [ 29.56 КБ | Просмотров: 6750 ]


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

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


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

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


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

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