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 писал(а):
Значит вопрос о неструктурности цикла с выходом из середины для меня остаётся открыт (по крайней мере до тех пор, пока я не дойду до того места у Дейкстры, где он это доказывает).

Сверните тело цикла в "один" оператор (один вход,один выход), если получится :)

А зачем? :wink: Это что-то докажет? Двухветочный IF тоже нельзя так свернуть.

Автор:  albobin [ Понедельник, 02 Декабрь, 2013 09:28 ]
Заголовок сообщения:  Re: Интересный сайт - обучение школьников С++ и Паскаль

igor писал(а):
albobin писал(а):
igor писал(а):
Значит вопрос о неструктурности цикла с выходом из середины для меня остаётся открыт (по крайней мере до тех пор, пока я не дойду до того места у Дейкстры, где он это доказывает).

Сверните тело цикла в "один" оператор (один вход,один выход), если получится :)

А зачем? :wink: Это что-то докажет? Двухветочный IF тоже нельзя так свернуть.

IF с ветками сворачивается, а вот сами ветки, естественно, - нет.

Автор:  igor [ Понедельник, 02 Декабрь, 2013 09:50 ]
Заголовок сообщения:  Re: Интересный сайт - обучение школьников С++ и Паскаль

albobin писал(а):
igor писал(а):
albobin писал(а):
Сверните тело цикла в "один" оператор (один вход,один выход), если получится :)

А зачем? :wink: Это что-то докажет? Двухветочный 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" с бряком и свистульками. :wink:

Автор:  igor [ Понедельник, 02 Декабрь, 2013 13:59 ]
Заголовок сообщения:  Re: Интересный сайт - обучение школьников С++ и Паскаль

ilovb писал(а):
Структурность - это про обуздание сложности.
Инварианты, пред/постусловия - это про правильность.
Так понятнее. Спасибо.

ilovb писал(а):
Хотите формализм где loop + exit корректен? Так никто ведь не препятствует. :)
Только к структурному программированию это уже не имеет отношения (по определению)
То есть, это вопрос терминологии. А ведь я в этой теме уже делал оговорку о неисключительности классических требований структурности. Спешу также заверить, что я не считаю классическое структурное программирование неэффективным. Наоборот, эта технология выдержала проверку временем и доказала свою эффективность. (Но это для меня конечно не означает, что развитие должно остановиться.)

Автор:  igor [ Понедельник, 02 Декабрь, 2013 15:22 ]
Заголовок сообщения:  Re: Интересный сайт - обучение школьников С++ и Паскаль

ilovb писал(а):
ps Можете попробовать изобрести "Структурное программирование 2" ... :wink:
Вы бы удивились (и ужаснулись :) ), узнав как далеко я в этом зашёл. Просто я не обсуждаю на форумах то, что делаю. :wink:

Автор:  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/