DRAKON.SU

Текущее время: Вторник, 14 Май, 2024 10:37

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




Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 13 Декабрь, 2010 00:00 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Геннадий Тышов писал(а):
Вводить дополнительные сущности без крайней необходимости не следует.

Драконограф писал(а):
Без вложений других циклов - да. Если в этой же ветке закачивается не один цикл - визуализация несколько усложняется.

Ниже схемы для сравнения:

С одним циклом.
Вложение:
b1.png
b1.png [ 59.19 КБ | Просмотров: 18358 ]

С двумя циклами.
Вложение:
b2.png
b2.png [ 64.83 КБ | Просмотров: 18358 ]

Часть схемы.
В одном случае не понятно, является ли она частью цикла или нет.
В другом всё абсолютно ясно.
Вложение:
b3.png
b3.png [ 52.17 КБ | Просмотров: 18358 ]


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

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Геннадий Тышов писал(а):
Согласно принципа "Автомат Калашникова" координатора Info21 цикл For не должен существовать, его функции полностью обеспечиваются циклом While.

Ведутся какие-то работы по Дракону, которые координирует уважаемый Info21?


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 140
Откуда: Троицк, Москва
Ильченко Эдуард писал(а):
Геннадий Тышов писал(а):
Согласно принципа "Автомат Калашникова" координатора Info21 цикл For не должен существовать, его функции полностью обеспечиваются циклом While.
Ведутся какие-то работы по Дракону, которые координирует уважаемый Info21?
Нет, не ведутся.
И такого принципа у меня нет.

Но цикла for в байтиковских группах сейчас не вводится -- ни у начинающих, ни в "элитной" группе. Может, до конца года у начинающих покажу его. Просто чтобы знали. У "элиты" использование for явно запрещено под угрозой неполучения свидетельства об окончании курса.


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

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 189
Откуда: Россия, Санкт-Петербург
Info21 писал(а):
Геннадий Тышов писал(а):
Согласно принципа "Автомат Калашникова" координатора Info21 цикл For не должен существовать, его функции полностью обеспечиваются циклом While.
И такого принципа у меня нет.
Наверное, это про автоматное программирование.
А вообще, это надо же так переврать было! : )


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

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Александр Ильин

Не понял вас.
И еще, расскажите, где вы нашли цитату Info21 с моими словами?

Посмотрите еще раз здесь.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Декабрь, 2010 08:24 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Владимир Паронджанов писал(а):
Ильченко Эдуард писал(а):
Владимир Паронджанов писал(а):
Правило 6 следует отменить.

Вы вообще отказались от использования цикла FOR, разнося его на разные ветки силуэта, или допускаете использование в каком-то другом варианте?


Считаю нужным использовать цикл FOR. В том числе разнося его на разные ветки силуэта.

Во избежание недоразумений изложу свою позицию подробно.

Красным написано то, что следует удалить.

6. Правило. Если цикл ДЛЯ занимает две или более веток, то цикл ДЛЯ
должен быть обрамлен веточным циклом.

6.1. Икона "Начало цикла ДЛЯ" размещается сразу под иконой
"имя ветки", обозначающей начало веточного цикла.
6.2. Икона "Конец цикла ДЛЯ" размещается перед иконой "адрес"
обозначающей конец веточного цикла.
6.3. В иконе "имя ветки",обозначающей начало веточного цикла, в данном
случае написано ДИАЛОГ.НАЧАЛО,
6.4. В иконе "адрес",обозначающей конец веточного цикла, в данном
случае написано ДИАЛОГ.КОНЕЦ,

7. Пояснение. Цикл ДЛЯ может быть длинным. Он может не поместиться
в одну ветку (и даже в две ветки). В этом случае иконы "Начало цикла
ДЛЯ" и "Конец цикла ДЛЯ" могут оказаться в разных ветках
(см. пункты 6.1 и 6.2).


Красный текст заменяется на следующий:

6. Правило. Цикл ДЛЯ может быть длинным. Он может не поместиться
в одной ветке (и даже в двух ветках). В этом случае иконы "Начало цикла
ДЛЯ" и "Конец цикла ДЛЯ" могут оказаться в разных ветках.

:6.1. Рекомендация. Если цикл ДЛЯ размещается в двух или более ветках,
рекомендуется икону "Начало цикла ДЛЯ" размещать сразу под иконой "имя ветки".
(чтобы ее можно было легко отыскать взглядом).

Ну, так. Это могло бы быть возможным не как рекомендация, а как железное правило - как и помещение виопа "Конец цикла ДЛЯ" только прямо перед адресом ветки. И если ввести в определение техноязыка трактовку таких пар как единого макрооператора. Потому что иначе - повторюсь - это есть передача управления, минуя петлю силуэта. Но. И это само по себе ничего не решает - потому что Адрес ветки один - а изображать нужно ещё и выход из цикла. И имя ветки, на которую выходим, нужно писать в этом Адресе - а имя ветки, на которую идём по итерации, подразумевать и находить ветку по началу цикла ДЛЯ с одноимённой переменной. Не слишком ли сложно?
Далее, Вы изложили решение - но не аргументацию, почему считаете его нужным. Какова цель? Если сохранить совместимость с ГОСТ на блок-схемы - то ведь шампур-метод идёт дальше ГОСТа...
Впрочем, согласен с Info21 об употребимости цикла for... а в этих явлениях вижу только подтверждение его свойств как конструкции независимо от формы записи...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Декабрь, 2010 12:07 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5862
Откуда: Москва
Драконограф пишет:
Цитата:
Потому что иначе - повторюсь - это есть передача управления, минуя петлю силуэта.


Уважаемый Владислав!

Я не понимаю эту фразу. С моей точки зрения, эта фраза содержит ошибку.

Я считаю:

1. Любой выход из иконы адрес передает управление только через петлю силуэта.
Это строгое правило. Исключений нет.

2. В описываемом случае (который является предметом обсуждения) после иконы
"Конец цикла ДЛЯ" (и, возможно, еще нескольких следующих за ней икон) в этой же ветке
появляется икона адрес. Ее выход передает управление через петлю силуэта.

3. Если цикл ДЛЯ занимает две или более ветки, то все относящиеся к нему иконы адрес передают упраление через петлю силуэта.

:!: Вывод. Все без исключения иконы адрес передают упраление через петлю силуэта.
_______________________________________________________________________________

Но Вы утверждаете, что
Цитата:
это есть передача управления, минуя петлю силуэта


У меня просьба. Объясните мне Вашу мысль. Желательно с картинкой.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Декабрь, 2010 20:44 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Владимир Паронджанов писал(а):
Драконограф пишет:
...
Цитата:
это есть передача управления, минуя петлю силуэта

У меня просьба. Объясните мне Вашу мысль. Желательно с картинкой.

Хотя вопрос адресован не мне, но попробую проиллюстрировать своё понимание, которое, как мне кажется, совпадает с точкой зрения уважаемого Драконографа.

Строим схему-примитив, содержащую цикл FOR.
Схема содержит неявный переход управления вверх по главному маршруту, в силу свойств цикла FOR. От иконы ”Конец цикла FOR” к иконе ”Начало цикла FOR” пока сохраняется условие выполнения цикла.
Вложение:
c1.png
c1.png [ 18.61 КБ | Просмотров: 18245 ]

Преобразуем примитив в силуэт.
Схема по прежнему содержит неявный переход, не вызывающий вопросов.
Вложение:
c2.png
c2.png [ 22.19 КБ | Просмотров: 18245 ]

Разнесём цикл FOR на разные ветки. Здесь появляются проблемы. Поскольку правила Дракона запрещают передачу управления с ветки на ветку, кроме как через петлю силуэта, то неявный переход требует формализации своего присутствия. К тому же, если схема сложна и цикл FOR занимает несколько веток, то теряется визуальное восприятие цикла FOR, особенно, если все иконы имеют один цвет. Ещё хуже, если середина цикла занимает отдельный лист.

(В целях усиления восприятия, я предложил использовать новые иконы, условно названные «Адрес в цикле» и «Имя ветки в цикле» (см. сообщения выше)).
Вложение:
c3.png
c3.png [ 28.23 КБ | Просмотров: 18245 ]

Поместим иконы цикла сразу после икон «Имя ветки» и «Адрес».
Все проблемы, описанные выше, остаются.
Вложение:
c4.png
c4.png [ 29.52 КБ | Просмотров: 18245 ]

Теперь сделаем обрамление цикла FOR, веточным циклом.
Количество проблем увеличивается.
Совершенно не ясно, как происходит передача управления.
К тому же, визуально присутствует 2 цикла. Даже если применить правило, что цикл здесь один, всё равно визуально остаётся 2 цикла. Имхо, это противоречие (по правилам должен быть 1 цикл, а наблюдается 2) будет приводить к ошибкам.
Вложение:
c5.png
c5.png [ 62.48 КБ | Просмотров: 18245 ]

Кстати, иконы «Адрес в цикле» и «Имя ветки в цикле», использованные в произвольном веточном цикле, могут служить охраной, в т.ч. визуальной, от передачи управления в цикл из-за его границ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Декабрь, 2010 22:32 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5862
Откуда: Москва
Уважаемый Эдуард Ильченко!

:!: 1. Большое спасибо за пояснения. Ваши рисунки очень хороши.
Не просто хороши. Это БЛЕСТЯЩИЕ иллюстрации.
Вы обладаете большим даром, разжевывать трудные вопросы
с помощью великолепной графики. У Вас несомненный талант к таким вещам.

:!: 2. Вы отчетливо показали, что переход от конца цикла ДЛЯ
к началу цикла ДЛЯ минует петлю силуэта. Признаю,что это именно так.

:!: 3. Дальше я буду выдвигать возражения.

:!: 4. Я рассватриваю только первые 4 рисунка (с1--с4). 5-й рисунок считаю
"незаконным", потому что я уже признал ошибку, исправил ее и переработал текст.
5-й рисунок "незаконный" потому, что Вы воспроизводите ситуацию, которая уже давно
исправлена.

:!: 5. Итак, взглянем на рисунки с1-с4. На мой взгляд, на этих рисунках нет никаких ошибок.
Здесь все правильно. Все работает без ошибок.

:!: 6. Разница в том, что Вас эти рисунки смущают, а меня нет.
Вы нанесли на них великолепный пояснения (продолжение цикла и завершение цикла).
Рисунки действительно отличные.
Но нужны ли они в повседневной практике? Нет, они совершенно не нужны.
Вы привлекли вопрос к мелочам, которые этого не заслуживают.

:!: 7. Цикл ДЛЯ, расположеный в двух и более ветках, работает, как часы.
Конечно, я могу (вслед за Драконографом и Вами) громко сказать, что передача управления от конца к началу цикла минует петлю силуэта.

Ну и что? Зачем об этом говорить? Кому от этого польза? По моему мнению, никому.
Об этом вообще не нужно говорить. Потому что такие разговоры не помогают,
а запутывают дело.


Уважаемый Эдуард Ильченко!

Еще раз благодарю Вас за превосходные рисунки, которые с эстетической точки
зрения выглядят, как настоящие произведения искусства.
___________________________________________________________________________

:!: Послесловие.

Вы пишете:
Цитата:
неявный переход требует формализации своего присутствия.

Не согласен.
Все уже формализовано.
Дополнительная формализация -- это масло масляное.
Такая дополнительная формализация не помогает, а заптывает дело.


Последний раз редактировалось Владимир Паронджанов Вторник, 14 Декабрь, 2010 22:42, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Декабрь, 2010 22:40 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 189
Откуда: Россия, Санкт-Петербург
Владимир Паронджанов писал(а):
:!: 6. Разница в том, что Вас эти рисунки смущают, а меня нет.
Интересно, как будет выглядеть подобная схема с тремя циклами FOR, один из которых будет вложен в другой. Удастся ли легко понять, какой конец FOR относится к какому началу, и какой цикл вложен, а какой выполняется отдельно.

А вообще, возможность запрыгнуть в цикл FOR по метке, минуя икону "начало FOR", представляется мне сомнительной. Или такая возможность отсутствует по правилам языка?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Декабрь, 2010 23:06 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5862
Откуда: Москва
Уважаемый Александр Сергеевич!

Спасибо за вопрос. Вопрос вполне законный. Вы пишете:
Цитата:
...удастся лм легко понять?...


Понять, я думаю удастся. Возможно, это не очень легко. Но и не очень уж трудно.
Вы поставили вопрос, когда нужно искать компромисс.

Между чем и чем?
С одной стороны, математическое требование строгости и однозначности.
С другой стороны, эргономическое требование наглядности и удобства.

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

В иконе Конец цикла ДЛЯ пишем
Конец цикла К

Одинаковая буква К в начале и в конце поможет опознать, что эти две иконы обозначают один и тот же цикл.

В другом цикле ДЛЯ будет другая буква, например М И т.д.

Если нельзя использовать однобуквенный идентификатор, можно перейти к двум или трем буквам. И.т.д.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Декабрь, 2010 23:13 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5862
Откуда: Москва
Уважаемый Алесандр Сергеевич!

Вы пишете:
Цитата:
А вообще, возможность запрыгнуть в цикл FOR по метке, минуя икону "начало FOR", представляется мне сомнительной. Или такая возможность отсутствует по правилам языка?


Ответ такой. Цикл имеет только один вход. Поэтому попасть внутрь цикла минуя икону "начало FOR" невозможно.

Это требование должно быть автоматически реализовано дракон-редактором.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Декабрь, 2010 23:31 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 189
Откуда: Россия, Санкт-Петербург
Владимир Паронджанов писал(а):
Поэтому попасть внутрь цикла минуя икону "начало FOR" невозможно.
Спасибо за ответы. Возражений не имею.


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

Зарегистрирован: Четверг, 21 Январь, 2010 18:06
Сообщения: 63
Откуда: Нижний Новгород
Может быть я отхожу от темы, но в сучае с циклом "ДЛЯ" (FOR), имеющем объемное тело, я, всетаки, пользуюсь макроподстановкой через "ВСТАВКУ". Мне кажется это более наглядно.


Вложения:
Цикл Для.png
Цикл Для.png [ 9.17 КБ | Просмотров: 18187 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Декабрь, 2010 12:16 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Петр Приклонский писал(а):
...пользуюсь макроподстановкой через "ВСТАВКУ".

А как Вы изображаете подпрограммы?


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

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Владимир Паронджанов писал(а):
5-й рисунок считаю "незаконным"...

Владимир Паронджанов писал(а):
6. Правило. Цикл ДЛЯ может быть длинным. Он может не поместиться
в одной ветке (и даже в двух ветках). В этом случае иконы "Начало цикла
ДЛЯ" и "Конец цикла ДЛЯ" могут оказаться в разных ветках.

:6.1. Рекомендация. Если цикл ДЛЯ размещается в двух или более ветках,
рекомендуется икону "Начало цикла ДЛЯ" размещать сразу под иконой "имя ветки".
(чтобы ее можно было легко отыскать взглядом).
Да, действительно, здесь Вы не упоминаете веточный цикл.
Приношу свои извинения.
Увлёкся : )

Владимир Паронджанов писал(а):
:!: 5. Итак, взглянем на рисунки с1-с4. На мой взгляд, на этих рисунках нет никаких ошибок.
Здесь все правильно. Все работает без ошибок.
Согласен.

Владимир Паронджанов писал(а):
Вы привлекли вопрос к мелочам, которые этого не заслуживают.
Эти мелочи помогли обнаружить ошибку.

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

Конечно, Вы вправе поступать как считаете нужным.

Владимир Паронджанов писал(а):
Рисунки действительно отличные.
Но нужны ли они в повседневной практике? Нет, они совершенно не нужны.
: )
Не могли бы Вы пояснить, что именно мешает использовать такие рисунки в повседневной практике?
Какие рисунки нужно использовать?


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

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 234
Откуда: Украина, Киев
Петр Приклонский писал(а):
Может быть я отхожу от темы, но в сучае с циклом "ДЛЯ" (FOR), имеющем объемное тело, я, всетаки, пользуюсь макроподстановкой через "ВСТАВКУ"
И мне это видится логичным.
По-хорошему надо вообще запретить такой разорванный цикл ДЛЯ в силуэтах.


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

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Ярослав Романченко писал(а):
По-хорошему надо вообще запретить такой разорванный цикл ДЛЯ в силуэтах.

Владимир Паронджанов писал(а):
Привожу пример реальной дракон-схемы.
...
http://store.oberoncore.ru/lib/image/drakon/list4.png
http://store.oberoncore.ru/lib/image/drakon/list5.png

Посмотрите на схему на list4 и list5.

На ней присутствует цикл FOR, разнесённый на несколько веток.
Теперь заменим его на ВСТАВКУ.
Содержимое ВСТАВКИ нарисуем отдельным силуэтом.
Видим, что цикл FOR по-прежнему расположен на разных ветках, но появилась проблема с обеспечением досрочного выхода из цикла.
Так что ВСТАВКА не всегда помогает.


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

Зарегистрирован: Четверг, 21 Январь, 2010 18:06
Сообщения: 63
Откуда: Нижний Новгород
Ильченко Эдуард писал(а):
Петр Приклонский писал(а):
...пользуюсь макроподстановкой через "ВСТАВКУ".

А как Вы изображаете подпрограммы?

Я работаю с и.с.DRAKON Г.Н. Тышова. Здесь введена диференциация процедура/функция. Я, (конечно слишком вольно с моей стороны), трактую это как макрос/функция.
Обращение к функции (с параметрами или без них) будет иметь вид:


Вложения:
Цикл Для_1.png
Цикл Для_1.png [ 4.49 КБ | Просмотров: 18163 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Декабрь, 2010 15:06 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 234
Откуда: Украина, Киев
Ильченко Эдуард писал(а):
Так что ВСТАВКА не всегда помогает.
А зачем там нужен цикл FOR? Напрашивается реализовать цикл с помощью веточного цикла.
В ветку "ПВ.БЦВК" в конец шампура вставляем икону "действие" (ПД5МД.S1 := 1) для инициализации ПД5МД.S1, икону начала цикла FOR (ПД5МД.S1 ОТ 1 ДО 100) просто убираем, вместо иконы конца цикла FOR (КОНЕЦ ЦИКЛА S1) ставим икону проверки условия (ПД5МД.S1 < 100) и по выходу "Да" действие (ПД5МД.S1 := ПД5МД.S1 + 1), а по выходу "Нет" действие (ПД5МД.S1 := 1).


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

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


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

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


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

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