DRAKON.SU
https://forum.drakon.su/

Дракон и структурное программирование
https://forum.drakon.su/viewtopic.php?f=147&t=1568
Страница 1 из 1

Автор:  PGR [ Четверг, 07 Май, 2009 14:03 ]
Заголовок сообщения:  Дракон и структурное программирование

Допустимы ли в Драконе такие схемы?

Вложения:
break.png
break.png [ 7.28 КБ | Просмотров: 16984 ]

Автор:  Илья Ермаков [ Четверг, 07 Май, 2009 17:52 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

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

Автор:  Madzi [ Четверг, 07 Май, 2009 19:09 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

Вторая тоже не очень "хорошая". Но надо смотреть правде в глаза.
ДРАКОН - это не блок-схемы для структурного языка. Он гораздо шире, поэтому некоторые правила структурности на него не распространяются. Но он всё равно лучше, чем ничего.

Автор:  Илья Ермаков [ Четверг, 07 Май, 2009 23:27 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

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

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

Автор:  PGR [ Пятница, 08 Май, 2009 00:48 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

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

Автор:  Madzi [ Пятница, 08 Май, 2009 01:05 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

Код:
А нужна ли эта его "широта"? Насколько оправдано нарушение структурности?

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

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

Автор:  Илья Ермаков [ Пятница, 08 Май, 2009 01:11 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

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

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

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

Автор:  Илья Ермаков [ Пятница, 08 Май, 2009 01:14 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

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


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

Автор:  Rifat [ Четверг, 03 Июль, 2014 17:31 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

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

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

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


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

Автор:  Ильченко Эдуард [ Четверг, 03 Июль, 2014 18:34 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

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

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

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

Автор:  Rifat [ Четверг, 03 Июль, 2014 21:31 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

Для примера блок-схема вычисления факториала вместе с доказательством корректности из книги "The Craft of Programming" John C. Reynolds. Можно, конечно, перерисовать ее в виде Дракон-схемы, но изменения будут не очень большими.

Вложения:
Комментарий к файлу: Блок-схема вычисления факториала.
faktorial.PNG
faktorial.PNG [ 100.13 КБ | Просмотров: 15154 ]

Автор:  Ильченко Эдуард [ Пятница, 04 Июль, 2014 08:08 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

Спасибо!

Автор:  Rifat [ Пятница, 04 Июль, 2014 11:37 ]
Заголовок сообщения:  Re: Дракон и структурное программирование

В принципе для не совсем структурных программ тоже можно привести доказательство корректности. Например, блок-схема из книги "Доказательство правильности программ" Р. Андерсон.

Вложения:
Proof.png
Proof.png [ 97.75 КБ | Просмотров: 15131 ]

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/