DRAKON.SU
https://forum.drakon.su/

Пытаюсь разобраться с переключающим циклом.
https://forum.drakon.su/viewtopic.php?f=78&t=3890
Страница 1 из 1

Автор:  Steelvan [ Вторник, 13 Март, 2012 15:52 ]
Заголовок сообщения:  Пытаюсь разобраться с переключающим циклом.

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

Вопрос: Как должен выглядеть код для переключающего цикла ?

Или я слишком буквально пытаюсь приблизить код и схему и нужно еще больше абстрагироваться ?

Код:
Процедура ВыборТранспорта()

булТранспортЕщеХодит = Истина;
булМыЖдемТранспорт = Истина;
чНомерТранспорта = 0;
стрДальнейшийПуть = "";

Пока булТранспортЕщеХодит И булМыЖдемТранспорт Цикл
Если чНомерТранспорта = 1 тогда
стрДальнейшийПуть = "Прямо до места";
булМыЖдемТранспорт = Ложь;
ИначеЕсли чНомерТранспорта = 2 тогда
стрДальнейшийПуть = "Потом на метро";
булМыЖдемТранспорт = Ложь;
ИначеЕсли чНомерТранспорта = 3 тогда
стрДальнейшийПуть = "Потом на метро и автобусе";
булМыЖдемТранспорт = Ложь;
ИначеЕсли Формат(ТекущаяДата(), "ДФ = ЧЧ:мм") = "23:00" тогда
булТранспортЕщеХодит = Ложь;
КонецЕсли;

КонецЦикла;

КонецПроцедуры

Вложения:
Картинка процедуры.JPG
Картинка процедуры.JPG [ 51.68 КБ | Просмотров: 5643 ]
Процедура ВыборТранспорта(1).png
Процедура ВыборТранспорта(1).png [ 8.5 КБ | Просмотров: 5643 ]
Исходная заготовка.JPG
Исходная заготовка.JPG [ 28.14 КБ | Просмотров: 5643 ]

Автор:  Владислав Жаринов [ Среда, 14 Март, 2012 21:37 ]
Заголовок сообщения:  Re: Пытаюсь разобраться с переключающим циклом.

Скорее у Вас цикл Дейкстры... :) И код, собственно говоря, похож на Обероновский... Кстати, на днях обнаружил, что Евгений Эдуардович когда-то уже предлагал его вариант визуализации (где-то то же, что у меня для случая с частичным наложением петель - т.е. когда не требуется ЖДАТЬ в ветвях)... и пример (где форма с вариантами тоже предвосхищена)...

Автор:  albobin [ Четверг, 15 Март, 2012 06:50 ]
Заголовок сообщения:  Re: Пытаюсь разобраться с переключающим циклом.

Владислав Жаринов писал(а):
Скорее у Вас цикл Дейкстры... :)

Зачем всуе упоминать ЦД ? Коряво здесь "прилаживать" ЦД. Здесь как бы инверсно ЦД.
Конкретные варианты выхода из цикла, а не действий в цикле.
Здесь что-то вроде оптимизации, ведь можно было бы так, последовательно:
1.цикл ожидания подходящего транспорта
2.переключатель дальнейших действий

Автор:  Владислав Жаринов [ Суббота, 17 Март, 2012 18:13 ]
Заголовок сообщения:  Re: Пытаюсь разобраться с переключающим циклом.

Я лишь о том, на что похож результат. :)
Кстати, можно и без разных выходов из цикла (а тут он, кажется, и так один). В ЦД включаем отдельно ветвь ожидания (и проверки, что транспорт ещё ходит). Пока ждём - пароль подходит только к её охране (есть, скажем, флаг обнаружения транспорта, проверяемый по всей ЦД-шапке, но устанавливаемый только в этой ветке - или охранная переменная Вид/МаршрутТранспорта имеет значение, трактуемое как "не обнаружен <на текущем проходе ветви>"). И исполнитель каждый раз выполняет проверку/обнаружение. Ну а когда обнаружен - охрана нужной ветки из числа остальных впускает по соответствующему значению (подмножеству значений). И делаем, что нужно дальше по смыслу, вытекающему из этого значения (подмножества). А уж если не ходит/не ждём (тут надо тайм-аут прописать, кстати) - выходим из конструкции, как у автора и сделано. Так примерно...
Это тоже в порядке оптимизации того естественного представления, которое Вы предложили.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/