DRAKON.SU

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

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 07 Май, 2009 14:03 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 6
Откуда: Украина, Запорожье
Допустимы ли в Драконе такие схемы?


Вложения:
break.png
break.png [ 7.28 КБ | Просмотров: 11582 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Май, 2009 17:52 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Вторая - допустима (много выходов из блока разрешены; возвратную дугу можно замыкать только на вершину, которая является в орграфе доминатором для той, из которой исходит возвратная дуга).
Первая - пока правилами языка не запрещена, но надо бы. ДЛЯ - частный случай, который должно быть предельно "без фантазий".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Май, 2009 19:09 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 73
Откуда: Россия, Санкт-Петербург
Вторая тоже не очень "хорошая". Но надо смотреть правде в глаза.
ДРАКОН - это не блок-схемы для структурного языка. Он гораздо шире, поэтому некоторые правила структурности на него не распространяются. Но он всё равно лучше, чем ничего.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Май, 2009 23:27 
Модератор
Аватара пользователя

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

Далее идут два исхода из цикла - "нашли" - "не нашли".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Май, 2009 00:48 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 6
Откуда: Украина, Запорожье
Madzi писал(а):
ДРАКОН - это не блок-схемы для структурного языка. Он гораздо шире, поэтому некоторые правила структурности на него не распространяются.
А нужна ли эта его "широта"? Насколько оправдано нарушение структурности?
Илья Ермаков писал(а):
Ну, со второй как раз всё в порядке. Так может выглядеть, например, линейный поиск, когда перед проверкой условия надо что-то хитро посчитать.
И так же выглядит цикл с break, против которого было столько разговоров.
Код:
WHILE ... DO
  ...
  IF ... THEN BREAK END;
  ...
END
Вообще интересно, есть ли список правил (ограничений на топологию), которым должны соответствовать Дракон-схемы? Одно уже привёл Илья Ермаков, а ещё?
Илья Ермаков писал(а):
Возвратную дугу можно замыкать только на вершину, которая является в орграфе доминатором для той, из которой исходит возвратная дуга.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Май, 2009 01:05 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 73
Откуда: Россия, Санкт-Петербург
Код:
А нужна ли эта его "широта"? Насколько оправдано нарушение структурности?

ДРАКОН - это не программирование в узком, это программирование в широком.
Т.е. он не только для программистов.

Для чего нужна структурность? Она нужна для облегчения труда программиста.
Без структурности обходятся тысячи, если не сотни тысяч программистов. Большинство из которых и не подозревает, что пиши они несколько в другом стиле, и программы бы меньше глючили, отлаживались быстрее (а скорее работали с первого раза) и т.п.
Т.е. структурность, это своего рода самоограничение ведущее к просветлению (типа дзен-буддизма).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Май, 2009 01:11 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Структурность для одномерного случая и структурность для двумерного должны быть разными.
Для одномерного происходит вытягивание в линейную последовательность вложенных блоков.

На плоскости можно явно выражать разные пути-исходы.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Май, 2009 01:14 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
PGR писал(а):
Вообще интересно, есть ли список правил (ограничений на топологию), которым должны соответствовать Дракон-схемы? Одно уже привёл Илья Ермаков, а ещё?
Илья Ермаков писал(а):
Возвратную дугу можно замыкать только на вершину, которая является в орграфе доминатором для той, из которой исходит возвратная дуга.


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Июль, 2014 17:31 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
При сравнении структурного программирования и Дракона считаю нужным исходить из того, для чего вообще появилось структурное программирование. И лучше всего, как мне кажется, на этот вопрос отвечает следующая фраза:
Цитата:
Основная задача, которую Э.Дейкстра решал, разрабатывая идеи структурного программирования, была задача доказательства правильности программы. Его внимание было сосредоточено на вопросе, "какими должны быть структуры программ, чтобы без чрезмерных усилий мы могли находить доказательство их правильности".

http://it.kgsu.ru/Otladka/otl_0047.html

Язык Дракон позволяет изображать как структурные схемы, так и неструктурные. Основное оправдание неструктурных схем, как я понял, связано с экономией блоков с целью избежать дублирования, которое возможно в структурных схемах
Цитата:
Уместно вспомнить предостережение Г. Майерса: “Правила структурного программирования часто предписывают повторять одинаковые фрагменты программы в разных участках модуля, чтобы избавиться от употребления операторов goto. В этом случае лекарство хуже болезни; дублирование резко увеличивает возможность внесения ошибок при изменении модуля в будущем”.


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Июль, 2014 18:34 

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

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

Не могли бы Вы привести пример доказательства правильности работы программы с использованием ДРАКОНа?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Июль, 2014 21:31 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
Для примера блок-схема вычисления факториала вместе с доказательством корректности из книги "The Craft of Programming" John C. Reynolds. Можно, конечно, перерисовать ее в виде Дракон-схемы, но изменения будут не очень большими.


Вложения:
Комментарий к файлу: Блок-схема вычисления факториала.
faktorial.PNG
faktorial.PNG [ 100.13 КБ | Просмотров: 9752 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июль, 2014 08:08 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Июль, 2014 11:37 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
В принципе для не совсем структурных программ тоже можно привести доказательство корректности. Например, блок-схема из книги "Доказательство правильности программ" Р. Андерсон.


Вложения:
Proof.png
Proof.png [ 97.75 КБ | Просмотров: 9729 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

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


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

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


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

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