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 писал(а): Значит вопрос о неструктурности цикла с выходом из середины для меня остаётся открыт (по крайней мере до тех пор, пока я не дойду до того места у Дейкстры, где он это доказывает). Сверните тело цикла в "один" оператор (один вход,один выход), если получится А зачем? Это что-то докажет? Двухветочный IF тоже нельзя так свернуть. |
Автор: | albobin [ Понедельник, 02 Декабрь, 2013 09:28 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
igor писал(а): albobin писал(а): igor писал(а): Значит вопрос о неструктурности цикла с выходом из середины для меня остаётся открыт (по крайней мере до тех пор, пока я не дойду до того места у Дейкстры, где он это доказывает). Сверните тело цикла в "один" оператор (один вход,один выход), если получится А зачем? Это что-то докажет? Двухветочный IF тоже нельзя так свернуть. IF с ветками сворачивается, а вот сами ветки, естественно, - нет. |
Автор: | igor [ Понедельник, 02 Декабрь, 2013 09:50 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
albobin писал(а): igor писал(а): albobin писал(а): Сверните тело цикла в "один" оператор (один вход,один выход), если получится А зачем? Это что-то докажет? Двухветочный IF тоже нельзя так свернуть. 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/ |