La visión típica de la programación estructurada se refiere al control de ejecución. El control de su ejecución es una de las cuestiones más importantes que debemos tener en cuenta al construir un programa en un lenguaje de alto nivel. La regla general es que las instrucciones se ejecuten sucesivamente una tras otra, pero diversas partes del programa se ejecutan o no dependiendo de que se cumpla alguna condición. Además, hay instrucciones (los bucles) que deben ejecutarse varias veces, ya sea en número fijo o hasta que se cumpla una condición determinada.
Cuando en la actualidad se habla de programación estructurada, nos solemos referir a la división de un programa en partes más manejables (usualmente denominadas segmentos o módulos). Una regla práctica para lograr este propósito es establecer que cada segmento del programa no exceda, en longitud, de una página de codificación, o sea, alrededor de 50 líneas. Así, la visión moderna de un programa estructurado es un compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una página o más de código. Cada segmento tiene solamente una entrada y una salida, asumiendo que no poseen bucles infinitos y no tienen instrucciones que jamas se ejecuten. Encontramos la relación entre ambas visiones en el hecho de que los segmentos se combinan utilizando las tres estructuras básicas de control mencionadas anteriormente y, por tanto, el resultado es también un programa estructurado.
public static Random azar=new Random();
public static long retardo;// = 200,000,000
public static int ren,ren1,ren2, col, col1, col2;
public static int avance1, avance2;
public static string carro1="█©";//223,220 y 223 ▀▄▀, 219 y 184 █©
public static string carro2="▄>";//
public static void Main(string[] args)
{
ren=0; col=0;
Console.SetCursorPosition(ren,col);
Console.WriteLine("Carreras de dos carros Autor:Jorge Mendoza Grupo:2APV");
//mostrar carros
ren=10; col=10;
Console.SetCursorPosition(ren,col);
Console.Write(carro1);
ren=10;col=12;
Console.SetCursorPosition(ren,col);
Console.Write(carro2);
//carretera
ren=5; col=6;
Console.SetCursorPosition(ren,col);Console.Write("==================================================================");
ren=67; col=7;
Console.SetCursorPosition(ren,col);Console.Write("|");
ren=67; col=8;
Console.SetCursorPosition(ren,col);Console.Write("|");
ren=67; col=9;
Console.SetCursorPosition(ren,col);Console.Write("|");
ren=67; col=10;
Console.SetCursorPosition(ren,col);Console.Write("|");
ren=67; col=11;
Console.SetCursorPosition(ren,col);Console.Write("|");
ren=67; col=12;
Console.SetCursorPosition(ren,col);Console.Write("|");
ren=5; col=14;
Console.SetCursorPosition(ren,col);Console.Write("==================================================================");
//carros corriendo
ren1=10;col1=10;ren2=10; col2=12;
for(int s=1; s<20; s++){
//carro1
avance1 = azar.Next(1,6);avance2 = azar.Next(1,6);
int aa1=ren1; int aa2=ren2;
ren1+=avance1; ren2+=avance2;
if(ren1 <80){
Console.SetCursorPosition(ren1,col1);Console.Write(carro1);
Console.SetCursorPosition(aa1,col1);Console.Write(" ");
}
//if(avance1==1) {Console.Write(" ");}//if(avance1==1) {Console.Write(" ");}
if(ren2 <80){
//carro2
Console.SetCursorPosition(ren2,col2);Console.Write(carro2);
Console.SetCursorPosition(aa2,col2);Console.Write(" ");
}
espera();
}
if(ren1 > ren2){
ren=20;col=20;
Console.SetCursorPosition(ren,col);Console.Write("Ganó █©");
}
if(ren2 > ren1){
ren=20;col=20;
Console.SetCursorPosition(ren,col);Console.Write("Ganó ▄>");
}
if(ren1 == ren2){
ren=20;col=20;
Console.SetCursorPosition(ren,col);Console.Write("Empataron");
}
ren=20; col=24;
Console.SetCursorPosition(ren,col);
Console.Write("Presiona cualquier tecla para terminar . . . ");
Console.ReadKey(true);
}
public static void espera(){
for(retardo=0; retardo<100000000; retardo++);
}