русский
Germany.ruForen → Архив Досок→ Programmierung

Задачи для начинающих

14.02.21 17:10
Re: Задачи для начинающих
 
anly патриот
anly
in Antwort AlexNek 14.02.21 16:57, Zuletzt geändert 14.02.21 17:32 (anly)

вот к примеру в приаттаченом файле во что генерируется упраление светофором если генерировать в СиШарп

----

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

.......

// input

public bool Button; // кнопка пешехода

// output

public bool R, Y, G; //светофор для машин

public bool R2, G2; // светофор для пешеходов

//local

public bool BB;

public int Branch1 = 1;

public int Branch1_Prev;

public int Branch1_T;

public bool Branch1_Pulse = true;

public int Branch2 = 1;

............................

if (Branch1_Pulse)

{

_ _ Branch1_Prev = Branch1;

_ _ Branch1_T = Environment.TickCount;

}

switch (Branch1)

{

_ _ case 1: /*S1*/

_ _ {

_ _ _ _ /*машины едут, пешеходы стоят*/

_ _ _ _ R = Y =_ G2 = false;

_ _ _ _ G = R2 = true;

_ _ _ _ /*пешеход нажал кнопку*/

_ _ _ _ if (BB)

_ _ _ _ {

_ _ _ _ _ _ /*прошло ли достатоно времени для потока машин*/

_ _ _ _ _ _ if ((Environment.TickCount - Branch1_T) > 5000)

_ _ _ _ _ _ {

_ _ _ _ _ _ _ _ Branch1 = 2;

_ _ _ _ _ _ }

_ _ _ _ }

_ _ }

_ _ break;

_ _ case 2:

_ _ {

_ _ _ _ /*машинам желтый*/

_ _ _ _ Y = true; G = false;

_ _ _ _ /*выдержать желтый*/

_ _ _ _ if ((Environment.TickCount - Branch1_T) > 2000)

_ _ _ _ {

_ _ _ _ _ _ Branch1 = 3;

_ _ _ _ }

_ _ }

_ _ break;

_ _ case 3:

_ _ {

_ _ _ _ /*машины стоят*/

_ _ _ _ Y = false; R = true;

_ _ _ _ /*люди идут*/

_ _ _ _ R2 = false; G2 = true;

_ _ _ _ /*пусть люди походят*/

_ _ _ _ if ((Environment.TickCount - Branch1_T) > 5000)

_ _ _ _ {

_ _ _ _ _ _ Branch1 = 4;

_ _ _ _ }

_ _ }

_ _ break;

_ _ case 4:

_ _ {

_ _ _ _ /*люди стоят*/

_ _ _ _ R2 = true; G2 = false;

_ _ _ _ /*игнорировать нажатия кнопки пока люди ходили*/

_ _ _ _ BB = false;

_ _ _ _ /*машинам желтый*/

_ _ _ _ Y = true; R = false;

_ _ _ _ /*коротенькая пауза*/

_ _ _ _ if ((Environment.TickCount - Branch1_T) > 1000)

_ _ _ _ {

_ _ _ _ _ _ Branch1 = 1; /*S1*/

_ _ _ _ }

_ _ }

_ _ break;

}

Branch1_Pulse = Branch1 != Branch1_Prev;

switch (Branch2)

{

_ _ case 1: /*S1*/

_ _ {

_ _ _ _ /*пешеход нажал кнопку*/

_ _ _ _ if (Button )

_ _ _ _ {

_ _ _ _ _ _ Branch2 = 2;

_ _ _ _ }

_ _ }

_ _ break;

_ _ case 2:

_ _ {

_ _ _ _ /*пешеход отжал кнопку*/

_ _ _ _ if (!(Button ))

_ _ _ _ {

_ _ _ _ _ _ /*запомнить это нажатие*/

_ _ _ _ _ _ BB = true;

_ _ _ _ _ _ Branch2 = 1; /*S1*/

_ _ _ _ }

_ _ }

_ _ break;

}

Проклят нарушающий межи ближнего своего (Втор.27:17)
 

Sprung zu