OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 05:15

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




Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 13  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 08:42 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Какое тут может быть доказательство?
Этот цикл не является структурным по определению.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 09:12 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 710
Откуда: Псков
igor писал(а):
ilovb писал(а):
Никто и не говорил, что это что-то доказывает.
Значит вопрос о неструктурности цикла с выходом из середины для меня остаётся открыт (по крайней мере до тех пор, пока я не дойду до того места у Дейкстры, где он это доказывает).

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 09:13 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
ilovb писал(а):
Какое тут может быть доказательство?
Этот цикл не является структурным по определению.

Навеяно вот этим:
Валерий Лаптев писал(а):
igor писал(а):
Скажите пожалуйста, чем продиктовано ваше требование, что последовательность действий в цикле должна "целиком выполняться N раз"?

Потому как в книге Дисциплина программирования Дейкстра придумал свой цикл для "вывода" "правильных" программ "по построению".
Под "правильностью", я так понимаю, подразумевается структурность.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 09:19 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
albobin писал(а):
igor писал(а):
Значит вопрос о неструктурности цикла с выходом из середины для меня остаётся открыт (по крайней мере до тех пор, пока я не дойду до того места у Дейкстры, где он это доказывает).

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 09:28 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 710
Откуда: Псков
igor писал(а):
albobin писал(а):
igor писал(а):
Значит вопрос о неструктурности цикла с выходом из середины для меня остаётся открыт (по крайней мере до тех пор, пока я не дойду до того места у Дейкстры, где он это доказывает).

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 09:50 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
albobin писал(а):
igor писал(а):
albobin писал(а):
Сверните тело цикла в "один" оператор (один вход,один выход), если получится :)

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

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

То же самое можно сказать и про мой цикл (см. картинку): у него один вход и один выход, чего не скажешь про само тело цикла.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 10:05 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
ilovb писал(а):
На практике, люди(большинство), которые регулярно пользуются break, никакими такими формализмами не думают.
Они думают goto'ами(переходами),
т.е. просто не видят цикла (хоть и употребляют это слово)
Факт.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 10:13 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
igor писал(а):
Под "правильностью", я так понимаю, подразумевается структурность.
Нет, под "правильностью" у Дейкстры подразумевается именно "правильность".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 10:17 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 710
Откуда: Псков
igor писал(а):
про мой цикл (см. картинку): у него один вход и один выход, чего не скажешь про само тело цикла.

Раз не скажешь, значит не структурный цикл :)
PS.
Конечно можно придумать какую угодно структуру и всё, что будет соответствовать ей, будет структурным, "как-бы" :)
Поэтому предыдущее замечание viewtopic.php?f=88&t=2008&start=80#p84126 правильней по сути


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 11:49 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
albobin писал(а):
IF с ветками сворачивается, а вот сами ветки, естественно, - нет.

albobin писал(а):
igor писал(а):
про мой цикл (см. картинку): у него один вход и один выход, чего не скажешь про само тело цикла.

Раз не скажешь, значит не структурный цикл :)

Ну тогда, если следовать Вашей логике, получается что многоветочный IF также неструктурный оператор (с чем я, конечно, не могу согласиться).

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 12:03 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 710
Откуда: Псков
igor писал(а):
Ну тогда, если следовать Вашей логике, получается что многоветочный IF также неструктурный оператор (с чем я, конечно, не могу согласиться).

Я тоже. :)
Сорри, но отвечать не могу, цейтнот :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 12:06 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Info21 писал(а):
igor писал(а):
Под "правильностью", я так понимаю, подразумевается структурность.
Нет, под "правильностью" у Дейкстры подразумевается именно "правильность".
Вот те раз. А теория струкурного программирования тогда тут при чём, если можно писать правильные программы без оглядки на структурность?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 12:30 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Структурность - это про обуздание сложности.
Инварианты, пред/постусловия - это про правильность.

Цитата:
можно писать правильные программы без оглядки на структурность

Можно. Только очень сложно. И не факт, что можно доказать правильность таких программ. Да и метода нет.

Цитата:
Что касается обсуждаемого цикла, то я сейчас не пытаюсь доказать его структурность, а только говорю, что доказательств его неструктурности пока здесь не прозвучало.

Какие вам нужны доказательства?
Структурное программирование - это конкретное подмножество всех возможных структур управления. Цикл с выходом из середины в это подмножество не входит. Так решили создатели этого самого структурного программирования.
Все. О чем еще можно рассуждать?

Хотите формализм где loop + exit корректен? Так никто ведь не препятствует. :)
Только к структурному программированию это уже не имеет отношения (по определению)

ps Можете попробовать изобрести "Структурное программирование 2" с бряком и свистульками. :wink:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 13:59 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
ilovb писал(а):
Структурность - это про обуздание сложности.
Инварианты, пред/постусловия - это про правильность.
Так понятнее. Спасибо.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 15:22 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 15:34 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
Поясните пожалуйста, что не структурного в цикле с выходом из середины ?

такой вариант
Код:
    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;


Но я бы не сказал, что второй вариант нагляднее


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 15:46 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Madzi, читайте ветку.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 15:50 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Madzi писал(а):
Поясните пожалуйста, что не структурного в цикле с выходом из середины ?
Обратите, пожалуйста, внимание на неоднозначность толкования слова "структурный" (из-за чего и разгорелся спор в этой ветке):
1. Структурный = "отвечающий принципам вполне конкретной теории (структурного программирования), разработанной Дейкстрой, Виртом и другими учёными в 70-х годах прошлого столетия."
2. Структурный = "структурный вообще, в смысле соответствия некоторой абстрактной структуре".

В зависимости от того, что Вы имели в виду, ответ на Ваш вопрос будет различный.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 16:01 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Madzi писал(а):
легко превращается в такой
Любой код, кишащий операторами goto, brake, exit и continue, можно преобразовать в структурный (теорема Бёма-Якопини).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Декабрь, 2013 16:13 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Madzi писал(а):
Но я бы не сказал, что второй вариант нагляднее
Этот момент тоже уже "обсосали". :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 13  След.

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


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

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


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

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