OberonCore https://forum.oberoncore.ru/ |
|
Интересный сайт - обучение школьников С++ и Паскаль https://forum.oberoncore.ru/viewtopic.php?f=88&t=2008 |
Страница 5 из 13 |
Автор: | ilovb [ Понедельник, 02 Декабрь, 2013 08:42 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Какое тут может быть доказательство? Этот цикл не является структурным по определению. |
Автор: | albobin [ Понедельник, 02 Декабрь, 2013 09:12 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
igor писал(а): ilovb писал(а): Никто и не говорил, что это что-то доказывает. Значит вопрос о неструктурности цикла с выходом из середины для меня остаётся открыт (по крайней мере до тех пор, пока я не дойду до того места у Дейкстры, где он это доказывает).Сверните тело цикла в "один" оператор (один вход,один выход), если получится ![]() |
Автор: | igor [ Понедельник, 02 Декабрь, 2013 09:13 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
ilovb писал(а): Какое тут может быть доказательство? Этот цикл не является структурным по определению. Навеяно вот этим: Валерий Лаптев писал(а): igor писал(а): Скажите пожалуйста, чем продиктовано ваше требование, что последовательность действий в цикле должна "целиком выполняться N раз"? Потому как в книге Дисциплина программирования Дейкстра придумал свой цикл для "вывода" "правильных" программ "по построению". |
Автор: | igor [ Понедельник, 02 Декабрь, 2013 09:19 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
albobin писал(а): igor писал(а): Значит вопрос о неструктурности цикла с выходом из середины для меня остаётся открыт (по крайней мере до тех пор, пока я не дойду до того места у Дейкстры, где он это доказывает). Сверните тело цикла в "один" оператор (один вход,один выход), если получится ![]() А зачем? ![]() |
Автор: | albobin [ Понедельник, 02 Декабрь, 2013 09:28 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
igor писал(а): albobin писал(а): igor писал(а): Значит вопрос о неструктурности цикла с выходом из середины для меня остаётся открыт (по крайней мере до тех пор, пока я не дойду до того места у Дейкстры, где он это доказывает). Сверните тело цикла в "один" оператор (один вход,один выход), если получится ![]() А зачем? ![]() IF с ветками сворачивается, а вот сами ветки, естественно, - нет. |
Автор: | igor [ Понедельник, 02 Декабрь, 2013 09:50 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
albobin писал(а): igor писал(а): albobin писал(а): Сверните тело цикла в "один" оператор (один вход,один выход), если получится ![]() А зачем? ![]() IF с ветками сворачивается, а вот сами ветки, естественно, - нет. То же самое можно сказать и про мой цикл (см. картинку): у него один вход и один выход, чего не скажешь про само тело цикла. |
Автор: | Info21 [ Понедельник, 02 Декабрь, 2013 10:05 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
ilovb писал(а): На практике, люди(большинство), которые регулярно пользуются break, никакими такими формализмами не думают. Факт.
Они думают goto'ами(переходами), т.е. просто не видят цикла (хоть и употребляют это слово) |
Автор: | Info21 [ Понедельник, 02 Декабрь, 2013 10:13 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
igor писал(а): Под "правильностью", я так понимаю, подразумевается структурность. Нет, под "правильностью" у Дейкстры подразумевается именно "правильность".
|
Автор: | albobin [ Понедельник, 02 Декабрь, 2013 10:17 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
igor писал(а): про мой цикл (см. картинку): у него один вход и один выход, чего не скажешь про само тело цикла. Раз не скажешь, значит не структурный цикл ![]() PS. Конечно можно придумать какую угодно структуру и всё, что будет соответствовать ей, будет структурным, "как-бы" ![]() Поэтому предыдущее замечание viewtopic.php?f=88&t=2008&start=80#p84126 правильней по сути |
Автор: | igor [ Понедельник, 02 Декабрь, 2013 11:49 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
albobin писал(а): IF с ветками сворачивается, а вот сами ветки, естественно, - нет. albobin писал(а): igor писал(а): про мой цикл (см. картинку): у него один вход и один выход, чего не скажешь про само тело цикла. Раз не скажешь, значит не структурный цикл ![]() Ну тогда, если следовать Вашей логике, получается что многоветочный IF также неструктурный оператор (с чем я, конечно, не могу согласиться). Что касается обсуждаемого цикла, то я сейчас не пытаюсь доказать его структурность, а только говорю, что доказательств его неструктурности пока здесь не прозвучало. |
Автор: | albobin [ Понедельник, 02 Декабрь, 2013 12:03 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
igor писал(а): Ну тогда, если следовать Вашей логике, получается что многоветочный IF также неструктурный оператор (с чем я, конечно, не могу согласиться). Я тоже. ![]() Сорри, но отвечать не могу, цейтнот ![]() |
Автор: | igor [ Понедельник, 02 Декабрь, 2013 12:06 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Info21 писал(а): igor писал(а): Под "правильностью", я так понимаю, подразумевается структурность. Нет, под "правильностью" у Дейкстры подразумевается именно "правильность". |
Автор: | ilovb [ Понедельник, 02 Декабрь, 2013 12:30 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Структурность - это про обуздание сложности. Инварианты, пред/постусловия - это про правильность. Цитата: можно писать правильные программы без оглядки на структурность Можно. Только очень сложно. И не факт, что можно доказать правильность таких программ. Да и метода нет. Цитата: Что касается обсуждаемого цикла, то я сейчас не пытаюсь доказать его структурность, а только говорю, что доказательств его неструктурности пока здесь не прозвучало. Какие вам нужны доказательства? Структурное программирование - это конкретное подмножество всех возможных структур управления. Цикл с выходом из середины в это подмножество не входит. Так решили создатели этого самого структурного программирования. Все. О чем еще можно рассуждать? Хотите формализм где loop + exit корректен? Так никто ведь не препятствует. ![]() Только к структурному программированию это уже не имеет отношения (по определению) ps Можете попробовать изобрести "Структурное программирование 2" с бряком и свистульками. ![]() |
Автор: | igor [ Понедельник, 02 Декабрь, 2013 13:59 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
ilovb писал(а): Структурность - это про обуздание сложности. Так понятнее. Спасибо.Инварианты, пред/постусловия - это про правильность. ilovb писал(а): Хотите формализм где loop + exit корректен? Так никто ведь не препятствует. То есть, это вопрос терминологии. А ведь я в этой теме уже делал оговорку о неисключительности классических требований структурности. Спешу также заверить, что я не считаю классическое структурное программирование неэффективным. Наоборот, эта технология выдержала проверку временем и доказала свою эффективность. (Но это для меня конечно не означает, что развитие должно остановиться.)
![]() Только к структурному программированию это уже не имеет отношения (по определению) |
Автор: | igor [ Понедельник, 02 Декабрь, 2013 15:22 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
ilovb писал(а): ps Можете попробовать изобрести "Структурное программирование 2" ... Вы бы удивились (и ужаснулись ![]() ![]() ![]() |
Автор: | Madzi [ Понедельник, 02 Декабрь, 2013 15:34 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Поясните пожалуйста, что не структурного в цикле с выходом из середины ? такой вариант Код: WHILE i < 10 DO DoSome1(); IF Stat(i) < 5 THEN EXIT END; DoSome2(); INC(i); END; легко превращается в такой Код: IF i < 10 THEN DoSome1(); END; WHILE (i < 10) AND (Stat(i) >= 5) DO IF Stat(i) >= 5 THEN DoSome2(); END; INC(i); DoSome1(); END; Но я бы не сказал, что второй вариант нагляднее |
Автор: | ilovb [ Понедельник, 02 Декабрь, 2013 15:46 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Madzi, читайте ветку. |
Автор: | igor [ Понедельник, 02 Декабрь, 2013 15:50 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Madzi писал(а): Поясните пожалуйста, что не структурного в цикле с выходом из середины ? Обратите, пожалуйста, внимание на неоднозначность толкования слова "структурный" (из-за чего и разгорелся спор в этой ветке):1. Структурный = "отвечающий принципам вполне конкретной теории (структурного программирования), разработанной Дейкстрой, Виртом и другими учёными в 70-х годах прошлого столетия." 2. Структурный = "структурный вообще, в смысле соответствия некоторой абстрактной структуре". В зависимости от того, что Вы имели в виду, ответ на Ваш вопрос будет различный. |
Автор: | igor [ Понедельник, 02 Декабрь, 2013 16:01 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Madzi писал(а): легко превращается в такой Любой код, кишащий операторами goto, brake, exit и continue, можно преобразовать в структурный (теорема Бёма-Якопини).
|
Автор: | igor [ Понедельник, 02 Декабрь, 2013 16:13 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Madzi писал(а): Но я бы не сказал, что второй вариант нагляднее Этот момент тоже уже "обсосали". ![]() |
Страница 5 из 13 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |