DRAKON.SU

Текущее время: Четверг, 02 Май, 2024 02:52

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: Вторник, 13 Март, 2012 15:52 

Зарегистрирован: Среда, 07 Декабрь, 2011 18:31
Сообщения: 11
Добрый день. Пытаюсь разобраться с переключающим циклом.
Взял пример из книги (картинка во вложении) и попытался написать код по картинке.
При построении схемы по полученному коду не получился переключающий цикл.

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

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

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

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

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

КонецЦикла;

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


Вложения:
Картинка процедуры.JPG
Картинка процедуры.JPG [ 51.68 КБ | Просмотров: 4850 ]
Процедура ВыборТранспорта(1).png
Процедура ВыборТранспорта(1).png [ 8.5 КБ | Просмотров: 4850 ]
Исходная заготовка.JPG
Исходная заготовка.JPG [ 28.14 КБ | Просмотров: 4850 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 14 Март, 2012 21:37 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 15 Март, 2012 06:50 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 105
Откуда: Псков
Владислав Жаринов писал(а):
Скорее у Вас цикл Дейкстры... :)

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


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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


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

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


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

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