Задачи для начинающих
Прости конечно, но это самое ужасное режение из всех возможных.прощаю конечно, ведь ты не учавствовал в беседе, поэтому не должен понимать о чем шла речь.
А вот с АлехНек и Мурр у меня была беседа в стиле Гладышева с Иваном Чонкиным, когда он объяснял ему почему у коня пальцев нет.
- Вот ты вчерась насчет лошади спрашивал.
- Насчет какой лошади? - не понял Иван.
- Ну вообще, почему, мол, она человеком не стала.
- А-а, - Иван вспомнил, что в самом деле вчера был какой-то такой разговор.
- Так вот, - с гордостью сообщил Гладышев. - Я понял, почему лошадь не становится человеком. Она не становится человеком, потому что у ней пальцев нет.
- Эка, удивил, - сказал Чонкин. - Это я с малых лет знаю, что у лошади нет пальцев.
- Да я тебе не о том. Я говорю не то, что у ней нет пальцев, а то, что она не становится человеком, потому что у нее нет пальцев.
- А я тебе говорю - это всем известно, что у лошади нет пальцев.
Тут они заспорили, как часто люди спорят между собой, доказывая один одно, а другой другое,...
Предлагаю подойти к решению задачи с другой стороны:хорошее решение, да только не подходящее для стандартных систем программирования контроллеров.
Ибо в этих языках:
- нету Sleep (поэтому надо следовать совету Мурр, и вынести Next из класса)
- нету интерфейсов
- класс имеет только одну функцию у которой есть доступ к входным, выходным и локальным данным класса. В локальных данных могут быть инстанциированны другие классы, единственную функцию которых можно вызвать, предварительно записав необходимое в их входные данные, и считав выходные после вызова их единственной функции.
- альтернатива CASEу только IF-ELSE. Никаких Action<>, которые можно было бы засунуть в таблицу, нету.
- рекурсии невозможны
Состояний у светофора не так много:таблица состояний это конечно хорошо.
Еще лучше таблица переходов (что предлагал Мурр), где для каждого состояния указаны условия переходов в другие состояния.
А еще лучше таблица переходов изображенная в виде графа.
А это ни что иное, как язык SFC из упомянутого стандарта.
Там сразу рисуешь такой граф.
...........
Единственный язык из стандарта, который по структуре подобен СиШарпу, это ST. И если соблюдать ограничения, то написанную программу на СиШарпе можно, слегка подправляя текст, преобразовать в ST и наоборот.