Google Búsqueda personalizada

Regístrate gratis para participar de los foros, o si ya estás registrado haz login.

Asesoría en Lenguaje C, programa menú

comentario del autor Vie Ago 28, 2009 1:16 pm
   
Buen día a todos! Estoy aprendiendo lenguaje c y quisiera que me ayudaran a pasar un programita de pascal a lenguaje c, es un ejemplo que tomé de Internet de una de tantas páginas de programadores experimentados y que trata de un programa que es un menú con movimiento de cursor. En este pequeño programa se le asigna código ASCII a las variables para mover las teclas de flecha arriba, flecha abajo y la tecla enter(intro) y a través de colores, durante el movimiento, se mueve el cursor para seleccionar una opción y luego se ingresa oprimiendo la tecla enter.

A continuación les dejo el código fuente del programita, para que lo aprovechen además cualquier usuario que vea este foro y que esté aprendiendo lenguaje pascal y por supuesto para que algún programador experto que también vea mi solicitud en este foro me pueda ayudar a resolver mi inquietud.

El código es:

Program Menu_Sistema;

(*********************** DECLARACIONES ***************************)
Uses Crt;
Var
op : char; {Lee una telca del teclado}
opant,opact:Byte; {Para saber que opcion esta activa, y saber
cual dejara de serlo}
{Mover_menu, desactiva la opcion actual "ant" y la pone del color normal
del menu, y activa "act" la nueva opcion resaltando del resto de opciones}

Procedure mover_menu(ant,act:byte);
Begin
TextColor(15); {Cambia al color de opciones desactivadas}
TextBackground(0);
Case ant Of {Busca cual opcion desactivara "ant"}
1:Begin Gotoxy(30,11);Write ('INGRESAR REGISTROS '); End;
2:Begin Gotoxy(30,12);Write ('CONSULTAR REGISTROS'); End;
3:Begin Gotoxy(30,13);Write ('REPORTE REGISTROS'); End;
4:Begin Gotoxy(30,14);Write ('MODIFICAR REGISTROS'); End;
5:Begin Gotoxy(30,15);Write ('BORRAR REGISTROS '); End;
6:Begin Gotoxy(30,16);Write('SALIR DEL SISTEMA '); End;
End;

TextColor(LightGreen); {Cambia al color de opciones activadas}
Textbackground(LightBlue);
Case act Of {Busca que opcion se va a activar "act"}
1:Begin Gotoxy(30,11);Write ('INGRESAR REGISTROS '); End;
2:Begin Gotoxy(30,12);Write ('CONSULTAR REGISTROS'); End;
3:Begin Gotoxy(30,13);Write ('REPORTE REGISTROS'); End;
4:Begin Gotoxy(30,14);Write ('MODIFICAR REGISTROS'); End;
5:Begin Gotoxy(30,15);Write ('BORRAR REGISTROS '); End;
6:Begin Gotoxy(30,16);Write('SALIR DEL SISTEMA '); End;
End;

End;

(********************* INICIO DEL PROGRAMA *********************)
Begin
TextColor(15);
TextBackground(0);

Clrscr;
opant:=0; {Inicializamos el valor de opcion desactivada,
ninguna la primera vez}

opact:=1; {Activamos el valor de opcion activada, la primera opcion
la primera vez}

Repeat

TextBackground(0);
TextColor(White); {Esto se va a repetir cada vez que seleccionemos una
opcion, porque se borra el contenido de la pantalla
y debemos volver a escribir todas las opciones}
Textcolor(15);
TextBackground(0);
Begin

Delay(0);
Textcolor(LightCyan);
TextBackGround(0);
Gotoxy(23,3);Write ('DESARROLADO POR: VICTOR CABRERA');
TextColor(15);
TextBackGround(Blue);
Gotoxy(21,5);Write('ALDEA UNIVERSITARIA HEROES DE CANAIMA 4F');
Gotoxy(24,6);Write('SISTEMA DE CONTROL DE REGISTROS DEL');
Gotoxy(39,7);Write('PNFSI');
TextColor(15);
TextBackground(0);
Gotoxy(30,11);Write ('INGRESAR REGISTROS ');
Gotoxy(30,12);Write ('CONSULTAR REGISTROS ');
Gotoxy(30,13);Write ('REPORTE REGISTROS ');
Gotoxy(30,14);Write ('MODIFICAR REGISTROS ');
Gotoxy(30,15);Write ('BORRAR REGISTROS ');
Gotoxy(30,16);Write ('SALIR DEL SISTEMA ');
Textcolor(LightCyan);Gotoxy(26,1Cool;Write ('ESCOJA UNA DE LAS OPCIONES');

{Actualizamos la vista del menu, la primera vez, se seleccionara la
primera opcion, despues, quedara seleccionada la ultima opcion a la
cual se haya accedido}

mover_menu(opant,opact);


End;

{Leemos una tecla, pero haciendo un ciclo, y salimos de el hasta
que se presione enter o la felca del curso, arriba/abajo}

Repeat
op:=readkey;
Until op in [#13,#27,#72,#80];

{#13=enter, #72=Arriba, #80=abajo}

{Si se presiona tecla arriba}
If op=#72 Then
Begin
opant:=opact; {La opcion activa, pasara a ser desactivada}
If opact=1 Then {Si estoy en la primera opcion}
opact:=6 {Voy a la ultima}
Else
dec(opact); {Si no, decremento, y se activa la opcion que
esta arriba de la actual}
End
Else
If op=#80 Then Begin {Si fue tecla abajo}
opant:=opact; {La opcion activa pasara a ser desactivada}
If opact=6 Then {Si estoy en la ultima}
opact:=1 {Pasa a la primera}
Else
inc(opact); {Si no, incremeneto, y se activa la siguiente
opcion}
End
Else
{Si se presion¢ enter, pero la opcion no fue diferente de salir "5"}
If (op =#13) And (opact<>6) Then Begin
TextColor(15);
TextBackground(0);
Clrscr;
Case opact Of {Busco la opcion que estaba activa "opAct"}
{Aqui generalmente se llama al procedimiento correspondiente
como Ingreso de Registros, Reportes, Consultas de Registros, etc.}
1 : Begin
TextColor(15);TextBackground(0);
Gotoxy(28,1Cool;Write('ESTE ES EL MENU DE INGRESO');
Gotoxy(25,20);Write('PRESIONE UNA TECLA PARA CONTINUAR');
Readkey;
Clrscr;
End;{FIN DEL CASO 1}

2 : Begin
TextColor(15); TextBackground(0);
Gotoxy(28,1Cool;Write('ESTE ES EL MENU DE CONSULTA');
Gotoxy(25,20);Write('PRESIONE UNA TECLA PARA CONTINUAR');
Readkey;
Clrscr;
End;{FIN DEL CASO 2}

3 : Begin
TextColor(15); TextBackground(0);
Gotoxy(28,1Cool;Write('ESTE ES EL MENU DE REPORTES');
Gotoxy(25,20);Write('PRESIONE UNA TECLA PARA CONTINUAR');
Readkey;
Clrscr;
End;{FIN DEL CASO 3}

4 : Begin
TextColor(15); TextBackground(0);
Gotoxy(26,1Cool;Write('ESTE ES EL MENU DE MODIFICACION');
Gotoxy(25,20);Write('PRESIONE UNA TECLA PARA CONTINUAR');
Readkey;
Clrscr;
End;{FIN DEL CASO 4}

5 : Begin
TextColor(15); TextBackground(0);
Gotoxy(26,1Cool;Write('ESTE ES EL MENU DE ELIMINACION');
Gotoxy(25,20);Write('PRESIONE UNA TECLA PARA CONTINUAR');
Readkey;
Clrscr;
End;{FIN DEL CASO 5}

End;{FIN DEL CASE}

End;{FIN DEL IF}

Until (((op=#13) And (opact=6)) or (op=#27)); {Aquí finaliza el Repeat, cuando está en la posicion salir y se
le dá a la tecla enter, o cuando se presiona la tecla Escape(Esc)}
(*************************** FIN DEL REPEAT ***************************)
{Termina el programa cuando se presione
enter pero sobre la opcion salir "5"}

End.{FIN DEL CUERPO DEL PROGRAMA}


PD: Si no es mucha molestia, agradecería que lo hicieran para compilarlo en cualquier compilador de Linux, ya que en algunas librerías de borlan, no están disponibles en dichos compiladores de Linux, y por supuesto si lo pudieran comentar mucho mejor, así sería más provechosa la interpretación, ya que me estoy iniciando en este lenguaje.

GRACIAS DE ANTE MANO!

sintetico

Reputación



Hacer una pregunta

Boletín de Noticias

Reciba noticias de tecnología, tips de reparación y ofertas exclusivas.



Reglamento / P+F

Foros

Miembros / Expertos