PSV100 писал(а):
В смысле, всего только одна дуга, или должны быть только прямые дуги?
Одна, направление дуги должно совпадать с направлением движения по схеме на данном участке.
PSV100 писал(а):
Оставим сейчас непонятность вокруг FOR
Непонятки образовались потому что первоначально я проверял работу цикла FOR на новом компиляторе, в котором поведение цикла отличается от эталонного РТК.
PSV100 писал(а):
Как я понимаю, если здесь появится обратная дуга без предиката (как в прошлой попытке), то цикл должен быть приведён к некой библиотечной "<CYCLE>", т.е. нужно убрать остальные обратные дуги (м.б. даже написать сверху спецдуги явно <CYCLE> ?), ну и семантика цикла изменится.
Если появится обртаная дуга без предиката, т.е. безусловная дуга, то она будет всегда проходима, а учитывая, что обратные дуги это условия выхода, то в таком случае мы вылетам из цикла. <CYCLE> над спецдугой несколько меняет семантику. Я так понимаю в угловых скобках указываются те самые "синтермы" - библиотечные элементы.
PSV100 писал(а):
Откровенно говоря, сейчас как-то мало кайфа от таких "пауков" и подобных "<CYCLE>"-ов. Здесь, конечно, необходимо на своей шкуре оценить практику применения таких техник, заочно судить проблематично.
У нас паук использовался для управления двигателем, манипуляторами, оборудованием, когда программа передается радиосигналами или пакетными командными файлами. А <CYCLE>, на самом деле, очень удобен, но да, нужно привыкнуть.
PSV100 писал(а):
Если скобки пусты -- переход на имен. вершину текущей структуры.
Здесь я не понял о чем речь. Для спецструктуры же остается в силе логика переходов в "начальную" и "конечную" вершины структуры (*, #) - я об этом писал.
PSV100 писал(а):
- "----->[]" - "redo" - переход на именную вершину цикла пусть означает операцию "redo"
Здесь я явно туплю, что за именная вершина, зачем она, где должна находится. По-моему все это можно обычными средствами реализовать.
Ну и еще напомню, что ни луа ни питона в РТК небыло ))) там больше от модулы было, поэтому семантика более-менее ей и соответствует, иногда с явными ограничениями. Под другой язык и другие элементы нужно реализовывать.
PSV100 писал(а):
Здесь есть проблема в том, что обратная дуга в цикле непонятна для неподготовленного человека.
Это да, на соседнем форуме это уже обсуждалось - яприводил конструкция WHIE из языка Сириус, который мы используем. В нём семантика WHILE как раз соответствует библиотечному циклу, но не все сразу поняли как он работает.
PSV100 писал(а):
т.е. запуск обратной дуги анализируется всегда, даже когда нет проходов по прямым дугам, и если была хоть одна итерация, то структура будет проходимой, даже если не срабатывали прямые дуги -- можно взять на вооружение.
а как мы попадем в конечную вершину, если проходимых прямых дуг нет?
Чем дальше в лес ... непонятки только увеличиваются.
Базовая структура в РТК имеет следующую обобщенную форму
Код:
$---------->$
! !
... ...
! !
!---------->!
! !
!<----------!
! !
... ...
! !
!<----------!
Из документации РТК-Микро:
Базовая структура выполняется следующим образом. Последовательно, сверху вниз проверяются условия, записанные на прямых дугах структуры. Для первой встретившейся дуги, имеющей истинное условие, выполняются действия, записанные под дугой, и осуществляется выход на конец структуры. Если не выполняется ни одно из условий, выдается сообщение НЕВЫПОЛНИМАЯ СТРУКТУРА и выполнение программы заканчивается аварийно.
Дуга с пустым условием является всегда выполнимой и поэтому ставится последней среди прямых дуг структуры.
При выходе на конец базовой структуры, аналогично прямым дугам, проверяются обратные. Если обратных дуг нет или ни одна из них не выполнима, выполнение базовой структуры завершается.
Как видим это очень похоже на итерацию цикла-паука, если мы обернем это в специальную структуру, то его и получим. Правда семантика обратных дуг в пауке меняется.
PSV100 писал(а):
Кстати, нескромный вопрос: Р-технологию как-то до сих пор используют, причём, исходя из того, что под Win, даже не в рамках микроконтроллеров или какой-нибудь встройки? (если, конечно, это не приватная информация)
Не знаю, но думаю, что используется на Украине в КБшках.
Мне предоставили для тестирования и принятия решения о приобретении полной версии, но... редактор там примитивный, мышекликальный, а мне нужно кнопконажиматьельный, ну и компиляторов под нужные мне МП нема, а исходники они не предоставляют.
Если мы и буду использовать Р-технологию, то или сами будем писать компиляторы или проспонсируем разработку.