Задачи для начинающих
не кусками километрового кода, а объектами
-----
А как ты предлагаешь это получить из диаграммы?
Составитель диаграммы вообще не имеет представления об классах и методах.
Это было раз. Второе - там не обязательно Шарп-код на выходе - могут быть какие-то блоки команд для оборудования...
когда вообще ни одного коммента от начинающих не было.
-----
А как они могут быть если не только они, но и те кто давно с тобой общаются, узнают об том что является приемлемым решением только тогда, когда ты предъявляешь свое решение?
Может книжку напишешь, по методике форумного обучения
-----
Это к студентам педов.
Но могу сразу сказать, что схема останется той же.
Задача не для начинающих.
Я не ставил задачу :) Если хочешь иметь решение для начинующих, то будь людезен сформулировать задачу соответствующим образом.
Задача для начинающих. В таком случае должны быть использованы только те элементы которые им известны. Классы и интерфейсы к этому не относятся, к сожалению.
Класс - это основополагающая контрукция в C#. Так что это первое, что должны изучить начинающие. А соответственно основные понятия ООП.
Кстати, после тестирования выявлено, что приведенный код абсолютно нерабочий. А после возможного исправления, работает не так, как ожидалось.
Нет ничего удивительного в каких-то мелких багах, особенно если учесть, что код я писал в браузере и даже не компилировал его :) Не понятно также что ты ожидал увидеть, последовательность состояний вроде правильная.
Также очень бы хотелось увидеть реализацию класса TrafficLightButton для консольной проги под виндой, без каких либо извращений.
Реализация класса TrafficLightButton кажется мне тривиальной - геттер IsPressed - запрашиет состояние напрямую у железки, а функция Reset - сбрасывает кнопку в состояние "не нажата". Тут есть зависимость от конкретного железа, так что показать код не могу.
то будь любезен сформулировать задачу соответствующим образом.
Ну тот же светофор, может поначалу без кнопочки. Главное, что бы понятно было как работает для начинающих.
Я вот еще не знаю какие требования к кнопочке. Самое простое, просто уменьшать горение зеленого сигнала машинкам на какое то время?
Не понятно также что ты ожидал увидеть
По крайней мере то, что мы видим на перекрестках: R Y G Y R
Но это не принципиально, можно подкрутить.
геттер IsPressed - запрашиет состояние напрямую у железки
То бишь на обычной винде работать принципиально не будет? Только с какой то железякой?
Запустить код так и не смог
Пока вопросу по тому что вижу:
- Чем отличается кнопка BB от Button?
- Какой смысл в определении нажатия и отжатия кнопки?
Ну и вопрос немного не связанный с примером. Отчего нельзя использовать осмысленные имена, а не B1,B2 и т.п. ?
Запустить код так и не смогэто попробуй
Чем отличается кнопка BB от Button?ВВ это не кнопка, а внутренняя переменная запоминающая нажатие Кнопки. Т.к. реакция на кнопку не всегда мгновенна: может машинам только только зеленый загорелся, поэтому пусть пешеходы ждут, но их нажатие уже запомнилось.
Какой смысл в определении нажатия и отжатия кнопки?на случай если кнопку нажали, но отжимать не хотят. Чтобы не циклилось там.
Отчего нельзя использовать осмысленные имена, а не B1,B2 и т.п. ?да можно конечно. B1 это сокращенно Branch1. Но можно обозвать "ВеткаСветофора", а если хочется поинформативнее то можно добавить имя любимой собаки и погоды на завтра.

У нас вроде эти времена давно прошли смущ Хотя оптимизация часто бывает и нужна. Мы просто с Вами живем в различных мирах и понять друг друга будет действительно сложно.да нет, понять не сложно. Любой, даже супер-пупер компьютер станет дохлым если подходящую задачку подкинуть.
Ну а у контроллеров зачастую процессоры слабенькие, поэтому там сильно не надо заморачиваться чтобы его перегрузить.
Понятно одним Ампелем вряд ли получится, но ежели там сотни подобных программ одновременно выполняются, и каждая каждые 5мс вызывается, то тут надо до мелочей о производительности думать.
......
Помню выпустили новую версию проги (которой контроллеры программируют) ну естественно старым кундам предлагать стали. А они тупо собрали тест и начали гонять фирмварэ библиотеки, и сказали а почему функциональные блоки тут работают от 2х до 5ти раз медленнее, чем в старой системе?!
Дык потому что молодые люди, летающие в облаках КлинКодаДеволопмена
их разработали! Кунды не могут ведь оценить всю красоту их исходников. Вот и пришлось красоту рушить и даже на вызовах функций экономить.
Хотя конечно эти блоки работали достаточно быстро, но раз медленнее старой версии - кунды уже беспокоятся, что у них ВотчДоги гавкать начнут.
второй вариант тоже не работает
Выдает енто и зависает
Auto Green True
Pedestrian Red True
Вот как проверяю
private static void Main(string[] args) { TrafficLight3 trafficLight = new TrafficLight3(); while (true) { trafficLight.RunStep(); } }
ну еще от базового класса наследуюсь и удаляю "светофоры"
второй вариант тоже не работает
все работает. чтото у тебя
Дык потому что молодые люди, летающие в облаках КлинКодаДеволопмена их разработали!
Проблему тут не в ССД. Да и в нашем мире обычно другие проблемы.
Вот буквально живой пример. Если прога, года рождения 2000 на С++. Размером сейчас больше 300 тыс. строк, классы попадаются под 10 тыс. строк с функциями длиной больше 1000 строк.
Как её править знают буквально пара человек, но и те боятся что то трогать, потому что фиг его знает как это аукнется.
Чтобы ее просто откомпилировать правильно понадобилось минимум пара часов, при помощи того кто разбирается. А просто самому нужно было бы пару дней разбираться.
Была бы грамотно написана, не было бы многих проблем.
что то у тебя
Может быть, но я в упор не понимаю, как можно перейти на шаг 2 не нажимая никаких кнопок
switch (B1) { /*машины едут, пешеходы стоят*/ case 1: /*S1*/ { /*пешеход нажал кнопку*/ if (BB) { /*прошло ли достатоно времени для потока машин*/ if (Environment.TickCount - B1_T > 5000) { /*машинам желтый*/ B1 = 2; /*S2*/ } }