DRAKON.SU

Текущее время: Четверг, 28 Март, 2024 14:07

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




Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 01 Март, 2010 23:12 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Выделено (по предложению Владимира Паронджанова): viewtopic.php?p=43429#p43429

Дмитрий_ВБ писал(а):
Ответы Андрею (TAU):
2. В подсказке к и.с.Дракон, в разделе "Программирование, синтез ПО",
подраздел "Программирование на языке семейства Оберон имеет особенности"
вполне доступно, как мне кажется, все описано для языков без goto.

Трудность представляет собой случай вложенных ветвей, т.е. когда "if внутри if внутри if".
Как сгенерировать соответствующий программный код без goto?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 02 Март, 2010 19:30 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
TAU писал(а):
Трудность представляет собой случай вложенных ветвей, т.е. когда "if внутри if внутри if".
Как сгенерировать соответствующий программный код без goto?

Вложение:
Новый_1.png

При выполнении в меню "Настройки"/"Программирование. Синтез ПО"/"Язык семейства Оберон. Модель кон. автомата" получим шаблон программного кода процедуры.

Код:
    { 1. И.с. DRAKON. Трансляция маршрутной части. Изменение 02.03.2010 19:00:22}
......
Avt:=22
LOOP
CASE Avt OF
    {}
    {==================== Шампур}
    { 2. Заголовок // ?Заголовок }
| 22:
    { 22. Действие // ?Действие }
......
    { 4. Вопрос // ?Вопрос }
......
IF Usl=0 THEN Avt:=8
ELSE Avt:=11
END;
| 11:
    { 11. Действие // ?Действие }
......
| 3:
    { 3. Конец // Конец }
......
    {}
    {==================== Шампур}
| 8:
    { 8. Вопрос // ?Вопрос }
......
IF Usl=0 THEN Avt:=12
ELSE Avt:=15
END;
| 15:
    { 15. Действие // ?Действие }
......
Avt:=3;
    {}
    {==================== Шампур}
| 12:
    { 12. Вопрос // ?Вопрос }
......
IF Usl=0 THEN Avt:=16
ELSE Avt:=19
END;
| 19:
    { 19. Действие // ?Действие }
......
Avt:=3;
    {}
    {==================== Шампур}
| 16:
    { 16. Вопрос // ?Вопрос }
......
IF Usl=0 THEN Avt:=20
ELSE Avt:=21
END;
| 21:
    { 21. Действие // ?Действие }
......
Avt:=3;
    {}
    {==================== Шампур}
| 20:
    { 20. Действие // ?Действие }
......
Avt:=3;
END {CASE}
END {LOOP}
END ;


В справке писал(а):
Особенности программирования Дракон – схем
На листе все иконы имеют уникальный номер, из которого формируется метка для перехода.

Дракон-схема рассматривается как конечный автомат. Состоянием автомата является шампур схемы, имеющий иконы. Переход в состояние автомата, т.е. на шампур, производится переходом на метку иконы шампура. Выходом из текущего состояния автомата является безусловные переходы от нижнего узла шампура, от икон «Адрес» и переходы по условию.
...
3. Программирование на языке семейства Оберон имеет особенности.

Так как в семействе нет переходов и меток, то реализация выполнена с ипользованием цикла и предопределенной переменной Avt. Здесь состояние автомата разделяется при каждой иконе «Вопрос» и иконе «Выбор».
...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 02 Март, 2010 22:45 

Зарегистрирован: Вторник, 27 Май, 2008 13:24
Сообщения: 155
Цитата:
Так как в семействе нет переходов и меток, то реализация выполнена с ипользованием цикла и предопределенной переменной Avt.
О, ОБЕРОНы таки могут "делать goto", но так что теоретически этого как бы и нет? Чудо непорочного перехода на метку от академиков. Аминь.
По редактору - вот не получается скопировать в гр. буфер такую лестницу вопросов, хотя она начинается и заканчивается на одном шампуре, то есть цельный участок с одним входом и одним выходом. Ругается "В блоке различные шампуры". А он один.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 02 Март, 2010 23:12 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
dvuugl писал(а):
О, ОБЕРОНы таки могут "делать goto",


Очевидно, что где угодно можно делать goto с помощью цикла WHILE label # exit DO CASE label OF | | | END END.

Только используется это исключительно при механической генерации из каких-то высокоуровневых моделей, типа автоматов или декларативных языков.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 03 Март, 2010 03:14 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
dvuugl писал(а):
По редактору - вот не получается скопировать в гр. буфер такую лестницу вопросов, хотя она начинается и заканчивается на одном шампуре, то есть цельный участок с одним входом и одним выходом. Ругается "В блоке различные шампуры". А он один.

"В блоке различные шампуры" - для шампур-блока, один шампур в нем, выделяется мышкой так:
Вложение:
Новый_1.png

В справке написано:
Цитата:
LeftMouse+Движение или RightMouse+Движение: производится выбор шампур-блока. Выбор отображается пунктирной рамкой.

Рекомендуется помещать рамку с левым верхним углом левее верхней точки ввода на шампуре и правым нижним углом правее ниже нижней точки ввода или узла на том же шампуре.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 03 Март, 2010 03:35 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Илья Ермаков писал(а):
Очевидно, что где угодно можно делать goto с помощью цикла WHILE label # exit DO CASE label OF | | | END END.

Только используется это исключительно при механической генерации из каких-то высокоуровневых моделей, типа автоматов или декларативных языков.

В и.с. DRAKON в генерации текста шаблона программного кода схемы используется цикл LOOP. При этом в тексте программного приложения иконы "Конец" необходимо писать для схемы-процедуры оператор RETURN; , для схемы-функции оператор RENURN Значение; .


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 03 Март, 2010 12:10 

Зарегистрирован: Вторник, 27 Май, 2008 13:24
Сообщения: 155
Цитата:
LeftMouse+Движение или RightMouse+Движение
Ага, работает, но RightMouse выдаёт контекстное меню а LeftMouse только выделяет, ввело в заблуждение это "или", а замечание ниже ускользнуло.
По-видимому в справке надо писать не что происходит при той или иной манипуляции мышью/клавиатутой, а по пунктам: "цель такая-то" - "для этого манипуляции такие-то".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 04 Март, 2010 11:52 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Уважаемый Геннадий Николаевич!

Обращаюсь к Вам по поводу рисунка
viewtopic.php?p=43802#p43802

В нижней части этого рисунка используются
пять икон "действие".

Прошу прощения, хочу высказать пожелание
с точки зрения эргономики.

Эти пять икон расположены на разной высоте,
что неоправдано.

ПОЖЕЛАНИЕ

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

Спасибо


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 04 Март, 2010 20:06 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Владимир Паронджанов писал(а):
ПОЖЕЛАНИЕ

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

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

Высота икон различная, зависит от объема текста в иконе и от настроенной ширины иконы. Поэтому привязка икон к какой-либо сетке координат не производится.

Илья Ермаков о дракон-схемах упоминает, как об устремленных графах. Применю этот термин, хотя и не знаю его смысла по И. Ермакову.

При автоматическом выравнивании дракон-схемы: шампуры устремляются влево, горизонтали вверх; иконы "Заголовок" и "Адрес" вниз; "Параметры", "ПравКомментарий", "МнемоБлок", "Период" и "УзелПаралДействие" влево; "СинхПоТаймеру" и "ЛевКомментарий" вправо; остальные иконы вверх. Минимальное расстояния между иконами и линиями при их сближении (в результате устремления) принимается равным высоте иконы с 1-й строкой текста.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 06 Март, 2010 13:37 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Уважаемый Геннадий Николаевич!

На рисунке
viewtopic.php?p=43802#p43802
имеется эргономическая ошибка.

Ниже показано, как ее можно поправить


Вложения:
Комментарий к файлу: Выравнивание икон делает схему регулярной и удобной для чтения
Светофор эргономика.png
Светофор эргономика.png [ 19.59 КБ | Просмотров: 21612 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 06 Март, 2010 15:12 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Владимир Даниелович, спасибо за внимание.

Изображение

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

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

Возможно, кто выскажет свое аргументированное мнение на наличие проблемы и ее алгоритмическое решение.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Март, 2010 19:31 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Геннадий Тышов писал(а):
"Эргономическое требование. Пять икон действие должны быть автоматически выравнены по горизонтали". Как эти требования будут применены к сложным схемам, по каким алгоритмам они будут реализовываться я не знаю. Ведь в реальности шампуры просматриваются не зависимо друг от друга, иконы имеют различные размеры по высоте и ширине.

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

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

2. Вводятся команды пошагового изменения высоты выбранного звена (по аналогии с шириной иконы). При этом, разумеется, вся нижележащая часть данной вертикали сдвигается (а другие взаимосвязанные вертикали в матрёшке/силуэте удлиняются/укорачиваются; пусть за счёт своего последнего звена; если одной из них некуда укорачиваться - начинает удлиняться уже данная вертикаль).

3. Высота иконы (поля) задаётся также в шагах привязки, при этом минимально она определяется подгонкой под текущий текст в текущем его форматировании (принцип этого, впрочем, очевидный, показан на этой странице на рис. Следование в техноязыке – примеры конструкций); подгонка идёт за счёт динамики верхнего/нижнего отступов (также имеют заданные минимальные значения; если в них не укладываемся - прибавляем шаг к расчётной высоте).
Вводятся команды пошагового изменения высоты (конечно, уменьшение сверх высоты текста вместе с минимальными отступами отвергается).

4. Вводятся команды перемещения выбранной иконы по вертикали; исполнение возможно, пока в направлении перемещения высота звена больше 1 шага (создаётся предварительным увеличением этого звена). При этом возможны варианты: 1) противоположное звено соответственно удлиняется, а всё остальное в схеме неизменно; 2) больше никакие размеры не меняются, т.е. перемещаемая икона "тащит" остальную часть вертикали за собой в направлении перемещения (что влияет и на взаимосвязанные вертикали).

Т.о. у нас появляется конструктивная сетка схемы по вертикали. Причём, меняя величину шага, мы управляем физической высотой схемы.
Наверное, можно реализовать и некоторые групповые команды. Насчёт автоматики сложнее - это всё-таки не выключка текста, и обычно сочинитель должен думать, как "подработать" компоновку.

Аналогично можно ввести измерение сетки и по горизонтали; надо только ввести шаг привязки по ширине, в котором будут измеряться как ширина икон и их смещение на вертикали (что уже реализовано), так и промежутки между иконами, и положения вертикалей. Тогда также, меняя горизонтальный шаг, управляем физической шириной (высота тоже "плавает" за счёт перевыключки текста; можно отдельно ввести режим изменения только промежутков).

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

Ещё одно - хотелось бы настройки всех или большинства параметров прямо из приложения (через меню настроек).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Март, 2010 21:10 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Уважаемый Драконограф, спасибо.
То, о чем Вы пишите выше, имеет свою реализацию в и.с. DRAKON и по моему мнению хорошую и достаточную.

Вопрос об утверждении В.Д. Паронджанова
Цитата:
На рисунке
http://forum.oberoncore.ru/viewtopic.php?p=43802#p43802
имеется эргономическая ошибка.
которое для меня не является очевидным, т.к. свое утверждение
Цитата:
Полагаю, что иконы просматриваются вдоль шампура сверху вниз без рассмотрения икон на соседних шампурах. Соответственно иконы уплотнены вверх, как принято для абзацев текста на странице. Такой подход считаю эргономичным.
считаю аргументированным и более правильным.

Вполне возможно, этот вопрос не стоит рассматривать, т.к. каждый может остаться при своем мнении.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Март, 2010 05:49 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Геннадий Тышов писал(а):
Уважаемый Драконограф, спасибо.
То, о чем Вы пишите выше, имеет свою реализацию в и.с. DRAKON и по моему мнению хорошую и достаточную.

Извиняюсь... последний выпуск не юзал ещё... наверное, это там реализовано? Если так, то и желать, наверное, больше особо нечего в этом отношении :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Март, 2010 19:06 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Геннадий Тышов писал(а):
Илья Ермаков о дракон-схемах упоминает, как об устремленных графах. Применю этот термин, хотя и не знаю его смысла по И. Ермакову.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Март, 2010 20:29 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Класс графов называется в теории графов аранжируемыми (в одной аксиоматике), сводимыми (в другой аксиоматике, у новосибирцев - Евстигнеева-Касьянова) и устремлёнными уже назван мной, с третьей стороны (по-третьему были введены; уже потом выяснилась эквивалентность этих классов).

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

Совсем неформально можно сказать, что запрещается вход в середину цикла.

Ну а ДРАКОН добавляет к требованию устремлённости (= аранжируемости, сводимости) требование планарности (укладки графа на плоскости без пересечений).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Март, 2010 11:59 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 234
Откуда: Украина, Киев
Зачем в этой схеме goto???
И без goto всё получается.
Код:
MODULE if_if_if_if;

PROCEDURE ///-0;
BEGIN
  ///-2
  IF ///-3 THEN
    ///-7
  ELSE
    IF ///-8 THEN
      ///-12
    ELSE
      IF ///-13 THEN
        ///-17
      ELSE
        IF ///-18 THEN
          ///-22
        ELSE
          ///-23
        END; (* IF *)
      END; (* IF *)
    END; (* IF *)
  END; (* IF *)
END ///-0;

END if_if_if_if.


Вложения:
if_if_if_if.PNG
if_if_if_if.PNG [ 4.39 КБ | Просмотров: 21429 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Март, 2010 22:58 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Ярослав Романченко писал(а):
Зачем в этой схеме goto???
И без goto всё получается.


В отличии от ДРОНа в и.с. DRAKON реализовывается программная модель конечного автомата.
Подробнее в справке раздел "Программирование. Синтез ПО".

Не создаются семейства новых языков типа Дракон-Си и другие.

В и.с. DRAKON имеется разделение программного кода на выбранном языке на 4 части (у В.Д. Паронджанова на 3 части), используется среда разработки для выбранного языка программирования.

1. Проблемное описание в тексте икон - в программном коде это комментарии проблемы. Эта часть у В.Д. Паронджанова не упоминается.

2. Декларативная часть в программном приложении икон схем вида ГНОМ и программном приложении заголовка схем вида ПРИМИТИВ и СИЛУЭТ. У В.Д. Паронжданова это ФЛОКС, а в языке ДРАКОН отсутствует.

3. Командная часть а программном приложении икон схем вида ПРИМИТИВ и СИЛУЭТ. У В.Д. Паронджанова присутствует в тексте икон, вытесняя проблемное описание, тоже у Я. Романченко в ДРОНе.

4. Маршрутная часть в графике икон и их соединении.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Март, 2010 23:42 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 234
Откуда: Украина, Киев
Геннадий Тышов писал(а):
в и.с. DRAKON реализовывается программная модель конечного автомата

И каким образом это относится к моему вопросу?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 12 Март, 2010 19:07 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Ярослав Романченко писал(а):
И каким образом это относится к моему вопросу?

Ярослав, вы спрашивали, предполагаю меня.
Ярослав Романченко писал(а):
Зачем в этой схеме goto???
И без goto всё получается.

Если, мой ответ не по существу вопроса, прошу его уточнить подробнее.


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

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


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

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


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

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