DRAKON.SU

Текущее время: Воскресенье, 26 Июнь, 2022 20:47

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: Суббота, 21 Сентябрь, 2019 10:16 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5434
Откуда: Москва
Язык ДРАКОН. Цикл со стрелкой. Обсуждение

viewtopic.php?p=99396#p99396
LKom писал(а):
Здесь имеем проблему блока ОбычногоЦикла. Блок ОбычныйЦикл не имеет аналога в языках программирования, образован использованием оператора Goto. В блоке ОбычныйЦикл сложно выйти из тела цикла, т.к. тело цикла справа окружено петлей цикла.

В ИС Дракон рекомендуется заменять блок ОбычныйЦикл блоком ЦиклДЛЯ, при этом используется из ГОСТ 19.701.90 определение икон как ГраницыЦикла. Блок ЦиклДЛЯ используется для представления циклов вида For, Loop, While и Repeat. Проблема снимается, т.к. нет окружающей петли. Изображение циклов более функционально и максимально приближено к определениям в языках программирования.

Я называю этот цикл
Цитата:
Цикл со стрелкой, или цикл Стрелка


Я не понял это место:
LKom писал(а):
Блок ОбычныйЦикл не имеет аналога в языках программирования, образован использованием оператора Goto

У меня вопрос:
Почему не имеет аналога в языках программирования?
Аналогами являются:
1. do while
2. while
3. гибридный цикл (loop with test in the middle)

Вложение:
Рис. 43-45  Три цикла До Пока Гибрид .png
Рис. 43-45 Три цикла До Пока Гибрид .png [ 47.84 КБ | Просмотров: 3364 ]


LKom писал(а):
образован использованием оператора Goto
Оператор goto не нужен.

https://en.wikipedia.org/wiki/Control_flow


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 21 Сентябрь, 2019 11:24 

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Неоднократно использовал цикл со стрелкой для перебора массивов, нет не каких проблем. Отличие от цикла с границами только, что счетчик приходится организовывать самому. Кроме этого не следует забывать, что сам принцип Дракона отличается от всех известных языков-Дракон это ПОТОК УПРАВЛЕНИЯ, и ГОСТ относить сюда я думаю не стоит. Необходимо формировать новый стандарт.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 26 Сентябрь, 2019 13:51 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1258
Нет такой конструкции "Цикл со стрелкой".
Есть зацикленный участок схемы. Часто без четких границ входа и выхода из зацикленного участка.

Программисты знают, что использование Goto не создает конструкцию Цикл. Языки программирования предлагают различные конструкции Циклов с определенными функциональными свойствами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 26 Сентябрь, 2019 15:55 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5434
Откуда: Москва
LKom писал(а):
Блок ОбычныйЦикл не имеет аналога в языках программирования, образован использованием оператора Goto

Это не так. Смотрите —
Слева цикл do while (цикл со стрелкой ДО)
Справа цикл while (цикл со стрелкой ПОКА)

Вложение:
Рис. 43, 44 циклы До и Пока .png
Рис. 43, 44 циклы До и Пока .png [ 52.7 КБ | Просмотров: 3336 ]
Цикл со стрелкой — общее название для циклов do while и while

LKom писал(а):
образован использованием оператора Goto
Оператор goto здесь ни при чем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 26 Сентябрь, 2019 17:51 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 437
Откуда: Астрахань-Сочи
LKom писал(а):
Программисты знают, что использование Goto не создает конструкцию Цикл. Языки программирования предлагают различные конструкции Циклов с определенными функциональными свойствами.

А это уже от автора генератора для Дракона зависит, как он организует цикл в целевом ЯП. С помощью GOTO, или без него.

А вот интересно, как в ДРАКОНе отобразить множественные случаи прерывания цикла (гибридный цикл, по сути)? Будем изображать гирлянду вопросов?
Вложение:
20190926175027.png
20190926175027.png [ 46.92 КБ | Просмотров: 3332 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 26 Сентябрь, 2019 21:23 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5434
Откуда: Москва
Макроикона "Цикл со стрелкой"

Вложение:
я рис. 21 Макроикона Цикл со стрелкой.png
я рис. 21 Макроикона Цикл со стрелкой.png [ 11.49 КБ | Просмотров: 3325 ]


Макроикона "Цикл со стрелкой" порождает:
1. Цикл do while (если вставить икону Действие в верхнюю валентную точку)
2. Цикл while (если вставить икону Действие в правую валентную точку)
3. Цикл с условием в середине (если вставить икону Действие в обе валентные точки)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 27 Сентябрь, 2019 19:33 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 437
Откуда: Астрахань-Сочи
если рассматривать Си-подобные языки, то WHILE тут применим. А если это ассемблер? Тогда без JMP/JZ/JNZ не обойтись. Да и масса других языков реализуют циклы порою самым экзотическим способом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 27 Сентябрь, 2019 21:03 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5434
Откуда: Москва
Дмитрий Бардынин писал(а):
если рассматривать Си-подобные языки, то WHILE тут применим. А если это ассемблер? Тогда без JMP/JZ/JNZ не обойтись. Да и масса других языков реализуют циклы порою самым экзотическим способом.

Вы правы.
Но. Язык ДРАКОН претендует на то, что его графика позволяет выразить все экзотические циклы (и не только циклы, но и любые приемы потока управления).

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

Для языков высокого уровня эта макроикона позволяет выразить любой цикл с условием БЕЗ ИСПОЛЬЗОВАНИЯ ОПЕРАТОРА GOTO


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 27 Сентябрь, 2019 21:05 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5434
Откуда: Москва
LKom писал(а):
Здесь имеем проблему блока ОбычногоЦикла. Блок ОбычныйЦикл не имеет аналога в языках программирования, образован использованием оператора Goto.
Это неверно.

LKom писал(а):
В блоке ОбычныйЦикл сложно выйти из тела цикла, т.к. тело цикла справа окружено петлей цикла.
Это неверно.

LKom писал(а):
В ИС Дракон рекомендуется заменять блок ОбычныйЦикл блоком ЦиклДЛЯ
Зачем? Это неверная рекомендация


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 29 Сентябрь, 2019 22:05 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Владимир Паронджанов писал(а):
его графика позволяет выразить все экзотические циклы (и не только циклы, но и любые приемы потока управления).
Верно.
Но если есть несколько равноценных способов организации цикла, это означает лишь то, что эти способы есть мелкие технические особенности реализации.
А с точки зрения прикладной задачи (то, для чего и разрабатывается алгоритм!) детали реализации совершенно не интересны!
И даже зачастую вредны - поскольку попытки протащить низкий уровень наверх закономерно оборачиваются привязкой к исполнителю и снижением переносимости.


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

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


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

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


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

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