[ Foro de Pascal ]
Saludos.
Mi pequeño programa permite convertir kilómetros a metros, deseo crear un programa que permita seleccionar opciones, es decir:
opción 1: Para transformar de kilómetros a metros.
opción 2: Para transforma de metros a kilómetros.
(El procedure menu no lo entiendo, por el momento)
¿Qué modificación le harías a mi programa? si es posible explicar.
program Longitud;
uses Crt;
var
M,KM:real;
begin
(*Presentacion del programa*)
TextColor(LightGreen);
writeln('Convertidor de Longitud');
writeln('Programa creado por Benjamin C.');
(*Captura de datos*)
TextColor(White);
write('Ingrese longitud en kilometros:');
readln(KM);
(*Centro de operaciones*)
M:=Km*1000;
writeln('Metros:',M:2:2);
readln;
end.
Me interesara ver la respuesta. El tema de crear menús aún no lo domino. Y mas, en esos programas que tienen varios de ellos. Es decir, que vas navegando por menús. Ya que como todo programa tiene un principio y un fin, no se como volver hacía atrás en el programa. Supongo que sera con funciones y procedimientos.
Saludos!
Efectivamente, cuando utilizas un menú, cada una de las opciones debe ir acompañada de un procedimiento o función, a excepción de la opción de salida. Por "volver a atrás" no te preocupes, porque una vez que se ejecuta la función o el procedimiento o algún menú inserto en uno de esos procedimientos, el programa automáticamente vuelve a atrás al punto en el que fue invocado. A continuación te dejo un esqueleto del código que pudiera tener tu programa, solo que deberás escribir los códigos correspondientes a los procedimientos, en cada uno de ellos necesitas pedir los datos para kilómetro o metro, según sea el caso:
program ConvertirUnidadesDeLongitud;
uses Crt;
var
Salida: boolean;
Opc: integer;
procedure ConvertirDeKilometrosAMetros;
Begin
ClrScr;
writeln('Aqui deberia ir el codigo para convertir de Kilometros a Metros.');
readln;
End;
procedure ConvertirDeMetrosAKilometros;
Begin
ClrScr;
writeln('Aqui deberia ir el codigo para convertir de Metros a Kilometros.');
readln;
End;
procedure MostrarMenuPrincipal;
Begin
gotoxy(33,2); writeln('MENU PRINCIPAL');
gotoxy(21,5); writeln('1.- Convertir de Kilometros a Metros.');
gotoxy(21,7); writeln('2.- Convertir de Metros a Kilometros.');
gotoxy(21,9); writeln('3.- Salir.');
End;
BEGIN
Salida:= false;
Repeat
ClrScr;
MostrarMenuPrincipal;
gotoxy(40,11); write('Opcion: ');
readln(Opc);
case Opc of
1: ConvertirDeKilometrosAMetros;
2: ConvertirDeMetrosAKilometros;
3: Salida:= true;
end;
Until (Salida=true);
END.
Efectivamente, la respuesta de Luis es muy buena (como siempre).
Un menú es poco más que mostrar un texto (varios WriteLn), pedir una respuesta (un ReadLn) y analizar dicha respuesta (con "if" o "case").
Si luego lo quieres modularizar, puedes crear un "procedure" que agrupe todos los WriteLn y analizar los datos desde el cuerpo del programa, o puedes optar por crear una "function" que también incluya el "ReadLn" y devuelva el valor que ha introducido el usuario.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)