Miércoles 6 de Noviembre de 2024, 02:42
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
Realizar un Menu
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Realizar un Menu (Leído 2919 veces)
Sh!ky Drákula
Nuevo Miembro
Mensajes: 1
Realizar un Menu
«
en:
Miércoles 17 de Marzo de 2004, 03:03 »
0
Esta es la estructura que tengo en un programa básico, pero mi problema radica en que no puedo hacer que regrese al inicio después de haber visitado cualquier apartado de mi menú...transcribo la idea:
program examen;
uses crt;
var
pac:char;
po,I:integer;
BEGIN
CLRSCR; (*INICIA MARCO*)
I:=0;
while I<78 do
begin
I:=I+1;
gotoxy(I,1);writeln(chr(1));
gotoxy(I,20);writeln(chr(1));
end;
I:=0;
while I<20 do
begin
I:=I+1;
gotoxy(1,I);writeln(chr(1));
gotoxy(78,I);writeln(chr(1));
end; (*FIN DE MARCO*)
gotoxy(25,2);writeln(' B I E N V E N I D O ¯');
gotoxy(5,4);writeln('¿Qué‚ paquete desea ver?');
gotoxy(5,6);writeln('PAQUETE 1');
gotoxy(5,8);writeln('PAQUETE 2');
gotoxy(5,10);writeln('PAQUETE 3');
gotoxy(5,12);writeln('PAQUETE 4');
gotoxy(5,17);writeln('INTRODUZCA EL PAQUETE...');
gotoxy(5,18);readln(pac);
delay(1000);
clrscr;
CLRSCR; (*INICIA MARCO2*)
I:=0;
while I<78 do
begin
I:=I+1;
gotoxy(I,1);writeln(chr(1));
gotoxy(I,20);writeln(chr(1));
end;
I:=0;
while I<20 do
begin
I:=I+1;
gotoxy(1,I);writeln(chr(1));
gotoxy(78,I);writeln(chr(1));
end; (*FIN DE MARCO2*)
case (pac) of
'1':
begin
gotoxy(15,4);writeln('PAQUETE 1');
gotoxy(15,6);writeln('Hamburguesa Chica con queso');
gotoxy(15,8);writeln('Refresco Chico');
gotoxy(15,10);writeln('Papas chicas c/s queso');
gotoxy(25,13);writeln('COSTO TOTAL $35');
gotoxy(5,15);writeln('1. Ver otro paquete');
gotoxy(5,16);writeln('2. Ordenar ahora');
gotoxy(5,17);readln(po);
Aquí es el problema, pues como estoy trabajando de esta manera, no tengo idea de cómo hacerle para que en dado caso la respuesta del incisio 1, si es positiva, me mande de nuevo al inicio...y ahora, respecto a la opción 2, me limpie la pantalla y hayan campos de texto en los cuales podamos avanzar y/o retroceder para insertar o eliminar datos...
por ejemplo...en ordenar ahora, (opción 2), en dado caso de que se pidan 2 paquetes del número 4, y 5 del número 1, ¿cómo hacerle para que me haga las respectivas operaciones si son datos diferentes?
end;
-----PROGRAM TRUNQUED-----
Adjunto otra versión del mismo programa, pero con el mismo problema
Tweet
DriverOp
Miembro MUY activo
Mensajes: 201
Re: Realizar un Menu
«
Respuesta #1 en:
Miércoles 17 de Marzo de 2004, 19:43 »
0
No se si te comprendí bién cuál es tu problema así que te diré lo que interpreté que quieres hacer.
Quieres que si estas dentro de una de las opciones del menú principal, al salir de esta te regrese de nuevo al principal. Pero debo decirte que para hacer eso es mejor comenzar a usar procedimientos porque Pascal no tiene GOTO (salto incondicional), la idea sería:
procedure MenuPrincipal;
begin
...
end;
procedure Menu1;
begin
...
end;
procedure Menu2;
begin
...
end;
procedure Menu3;
begin
...
end;
begin
repeat
MenuPrincipal;
case Opcion of
1:Menu1;
2:Menu2;
3:Menu3;
end;
until salir=true;
end.
BlackTigerX
Miembro activo
Mensajes: 92
Re: Realizar un Menu
«
Respuesta #2 en:
Jueves 18 de Marzo de 2004, 15:57 »
0
asi es... bien estructurado y "educado"
lo unico que me inquieto fue eso de que "Pascal no tiene GOTO (salto incondicional)"... no se que version usas, pero Pascal siempre ha tenido GOTO... claro que
no se recomienda su uso
(excepto en casos muy especiales)
BlackTigerX
DriverOp
Miembro MUY activo
Mensajes: 201
Re: Realizar un Menu
«
Respuesta #3 en:
Domingo 21 de Marzo de 2004, 17:20 »
0
BlackTigerX:
Pascal no tiene GOTO en el sentido tradicional, la sentencia Goto de Pascal está condicionada a su vez para salto dentro de un mismo bloque begin... end, además depende de la clausula Label que sirve solo para declarar las etiquetas de salto incondicional. En definitiva, en Pascal no puedes saltar "a donde se te de la gana" para decirlo sin vueltas.
bet@
Miembro activo
Mensajes: 27
Re: Realizar un Menu
«
Respuesta #4 en:
Miércoles 31 de Marzo de 2004, 20:37 »
0
yo te aconsejo ke uses una programacion mas estructurada y no utilices el goto, porke eso te acabara liando y no es nada claro.
bye
Todo sobre el emule (preguntas, descargas, ...)
Tb informacion de peliculas ke se estrenan, juegos y enlaces.
Informate en:
Emulea_Foro
y
Emulea_Web
Attakinsky
Nuevo Miembro
Mensajes: 8
Re: Realizar un Menu
«
Respuesta #5 en:
Lunes 3 de Mayo de 2004, 17:20 »
0
Alli te va un ejemplo de menús que regresan a otros menús. El nomgre de usuario es administrador y a contrraseña es 123
Si el fdelay del uses te da problema quitáselo. Aquí en internet aparecen unos signos raros pero en modo DOS deben aparecer los ASCII adecuados para marcos.
Tambien va como archivo adjunto.
program ProyectoFinal;
uses dos,fdelay,crt;
var
menup:char;
exit:boolean;
{----------------------------------------------------------------------------}
{ dibuja el marco del men£ de opciones del programa }
procedure MenuOpciones;
var x,y:byte;
opcion:char;
begin
clrscr;
{ bordes horizontales y verticales }
textcolor(13);
for y:= 11 to 17 do
begin
gotoxy(24,y); write('º');
end;
for y:= 11 to 17 do
begin
gotoxy(55,y); write('º');
end;
for x:= 25 to 55 do
begin
gotoxy(x,10); write('Í');
end;
for x:= 25 to 55 do
begin
gotoxy(x,18); write('Í');
end;
for x:= 25 to 55 do
begin
gotoxy(x,12); write('Í');
end;
for x:= 25 to 55 do
begin
gotoxy(x,16); write('Í');
end;
{ conectores de esquina e intersecci¢n }
gotoxy(24,12); write('Ì'); gotoxy(55,12); write('¹');
gotoxy(55,10); write('»'); gotoxy(24,18); write('È');
gotoxy(24,10); write('É'); gotoxy(55,18); write('¼');
gotoxy(24,16); write('Ì'); gotoxy(55,16); write('¹');
{ textos de t¡tulo y opci¢n m£ltiple }
textcolor(03); GOTOXY(26,9);
write('PROGRAMA ®CONTROL DE BODEGA¯');
textcolor(08);
gotoxy(26,11); write('M E N U D E O P C I O N E S');
gotoxy(26,13); write('1 - Ingresar al programa');
gotoxy(26,15); write('2 - salir');
gotoxy(26,17); write('Seleccione una opci¢n: '); opcion:=readkey;
case opcion of
'1': write('dlgIngresa');
'2': exit:=true;
end;
end;
{----------------------------------------------------------------------------}
{ dibuja el cuadro de contrase¤a }
procedure dlgIngresar;
var
x,y,i:integer;
clave,usuario,letra:string;
tecla:string[1];
listo:boolean;
begin
clrscr;
{ bordes horizontales y verticales }
textcolor(07);
for y:= 11 to 15 do
begin
gotoxy(20,y); write('º');
end;
for y:= 11 to 15 do
begin
gotoxy(58,y); write('º');
end;
for x:= 21 to 58 do
begin
gotoxy(x,10); write('Í');
end;
for x:= 21 to 58 do
begin
gotoxy(x,12); write('Í');
end;
for x:= 21 to 58 do
begin
gotoxy(x,16); write('Í');
end;
{ conectores de esquina e intersecci¢n }
gotoxy(20,12); write('Ì'); gotoxy(58,12); write('¹');
gotoxy(58,10); write('»'); gotoxy(20,16); write('È');
gotoxy(20,10); write('É'); gotoxy(58,16); write('¼');
{ textos de t¡tulo e INGRESOS }
textcolor(12);
gotoxy(22,11); write('I N G R E S O D E U S U A R I O');
gotoxy(22,13); write('Usuario:');
gotoxy(22,15); write(' Clave:');
textcolor(15);
gotoxy(31,13); read(usuario);
gotoxy(31,15);
{ En la l¡nea anterior deb¡a leerse la contrase¤a, pero
debido a un error (inexplicable) de Pascal, fue necesario
colocar la petici¢n dentro de un ciclo y letra por letra.
Error que fue aprovechado para darle algunos retoques
al procedimiento:
1. Aparecen asteriscos por cada tecla pulsada
2. Se valida la contrase¤a al pulsar <ENTER> o bien,
3. Al haber pulsado 15 teclas
El nombre de usuario y la contrase¤a est n predefinidos,
pero podr¡an leerse de un archivo de texto cifrado (mediante
el cl sico proceso de multiplicar por una matriz num‚rica),
pero eso no es parte del proyecto: "ley del m¡nimo esfuerzo" }
clave:=''; tecla:='';
i:=0;
listo:=false;
repeat
begin
tecla:=readkey;
letra:=tecla;
if letra<>chr(13) then
begin
write('*');
clave:=clave+tecla;
end
else
listo:=true;
i:=i+1;
if i=15 then listo:=true;
end;
until listo=true;
readln;
if usuario = 'administrador' then
begin
gotoxy(31,17); write('Usuario correcto');
delay(2000);
end
else
begin
textcolor(20);
gotoxy(31,17); write('Usuario incorrecto');
delay(2000);
exit:=false;
end;
if clave = '123' then
MenuOpciones
else
begin
textcolor(20);
gotoxy(31,18); writeln('Clave incorrecta');
delay(5000);
exit:=false;
end;
end;
{----------------------------------------------------------------------------}
{ dibuja el marco del men£ principal }
procedure dlgMainmenu;
var x,y:integer;
begin
{ bordes horizontales y verticales }
textcolor(14);
for y:= 11 to 17 do
begin
gotoxy(24,y); write('º');
end;
for y:= 11 to 17 do
begin
gotoxy(55,y); write('º');
end;
for x:= 25 to 54 do
begin
gotoxy(x,10); write('Í');
end;
for x:= 25 to 54 do
begin
gotoxy(x,18); write('Í');
end;
for x:= 25 to 54 do
begin
gotoxy(x,12); write('Í');
end;
for x:= 25 to 54 do
begin
gotoxy(x,16); write('Í');
end;
{ conectores de esquina e intersecci¢n }
gotoxy(24,12); write('Ì'); gotoxy(55,12); write('¹');
gotoxy(55,10); write('»'); gotoxy(24,18); write('È');
gotoxy(24,10); write('É'); gotoxy(55,18); write('¼');
gotoxy(24,16); write('Ì'); gotoxy(55,16); write('¹');
{ textos de t¡tulo y opci¢n m£ltiple }
textcolor(04); GOTOXY(26,9);
write('PROGRAMA ®CONTROL DE BODEGA¯');
textcolor(09);
gotoxy(26,11); write('M E N U P R I N C I P A L');
gotoxy(26,13); write('1 - Ingresar al programa');
gotoxy(26,15); write('2 - salir');
gotoxy(26,17); write('Seleccione una opci¢n: '); menup:=readkey;
case menup of
'1': dlgIngresar;
'2': exit:=true;
end;
end;
{----------------------------------------------------------------------------}
{ SplashScreen con ProgressBar... viva Visual Basic 6.0 ! }
procedure SplashScreen;
var x,y:byte;
percent:real;
begin
textcolor(10);
for y:= 08 to 18 do
begin
for x:=11 to 70 do
begin
gotoxy(x,y);
write('±');
end;
end;
for x:= 21 to 60 do
begin
gotoxy(x,16); write(' ');
end;
textcolor(14);
gotoxy(16,09); write(' UNIVERSIDAD MARIANO GALVEZ ');
gotoxy(16,10); write('Facultad de Ingenier¡a en Sistemas de Informaci¢n ');
gotoxy(16,11); write(' Algoritmos I --- Ing. David Gonz lez ');
gotoxy(16,13); write(' PROYECTO FINAL 2004 --- CONTROL DE BODEGA ');
gotoxy(16,14); write('Augusto Jos‚ Blanco G lvez 0900-04-317 Secci¢n C');
for x:= 21 to 60 do
begin
gotoxy(x,16); write('²'); delay(900);
percent:=(x-20)*100/40; gotoxy(33,17); write('Loading... ',percent:0:0,' %');
end;
end;
{----------------------------------------------------------------------------}
{ cuerpo del programa }
begin
{ llama al SplashScreen}
clrscr;
SplashScreen;
{ llama al men£ principal }
clrscr;
repeat
clrscr;
dlgMainmenu;
until exit=true;
clrscr;
end.
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
Realizar un Menu