Programa+basado+en+un+menu

=__**Programa basado en un menú**__=

Escribir un programa que lea dos números y, en función de la opción elegida por el usuario, realice una suma o una resta.

**Programa que sólo realiza una operación seleccionada por el usuario** code format="pascal" PROGRAM Menu_1 ; VAR rNum_1, rNum_2 : Real ; iOpcion       : Integer ; BEGIN

WriteLn ; WriteLn ('-- Menú de opciones --') ; WriteLn (' 1  Sumar') ; WriteLn (' 2  Restar') ;

Write  ('     Elige la opción: ') ; ReadLn (iOpcion) ;

CASE iOpcion OF     1 : BEGIN Write  ('Escribe un  sumando: ') ; ReadLn (rNum_1) ; Write  ('           otro sumando: ') ; ReadLn (rNum_2) ;

WriteLn ('Suma = ', rNum_1 + rNum_2 :0:2) ; END ; 2 : BEGIN Write  ('Escribe el minuendo: ') ; ReadLn (rNum_1) ; Write  ('           el sustraendo: ') ; ReadLn (rNum_2) ; WriteLn ('Resta = ', rNum_1 - rNum_2 :0:2) ; END ; ELSE WriteLn ('ERROR: Debe ser un Nº entre 1 y 2') ; END ;

ReadLn ; END. code

**Programa que realiza múltiples operaciones seleccionadas por el usuario (hasta que el usuario selecciona "Terminar")** code format="pascal" PROGRAM Menu_2 ; VAR rNum_1, rNum_2 : Real ; iOpcion       : Integer ; BEGIN REPEAT WriteLn ; WriteLn ('-- Menú de opciones --') ; WriteLn (' 1  Sumar') ; WriteLn (' 2  Restar') ; WriteLn (' 0  Terminar') ;

Write  ('     Elige la opción: ') ; ReadLn (iOpcion) ;

CASE iOpcion OF          1 : BEGIN Write  ('Escribe un  sumando: ') ; ReadLn (rNum_1) ; Write  ('           otro sumando: ') ; ReadLn (rNum_2) ;

WriteLn ('Suma = ', rNum_1 + rNum_2 :0:2) ; END ; 2 : BEGIN Write  ('Escribe el minuendo: ') ; ReadLn (rNum_1) ; Write  ('           el sustraendo: ') ; ReadLn (rNum_2) ; WriteLn ('Resta = ', rNum_1 - rNum_2 :0:2) ; END ; ELSE WriteLn ('ERROR: Debe ser un Nº entre 1 y 2') ; END ; UNTIL iOpcion = 0 ;

Writeln ('Adiós') ;

ReadLn ; END. code **Programa que realiza múltiples operaciones seleccionadas por el usuario (hasta que el usuario selecciona** **"Terminar")**

**La variable se selección de la Opción es de tipo Integer **

**Se lee la opción mediante el** ** PROCEDIMIENTO ReadLn ** **- Si el usuario pulsa** ** Opción ** **no válida muestra un mensaje de error y se vuelven a pedir dos números y se vuelve a mostrar el menú,...**

code format="pascal" PROGRAM Menu_3 ; VAR rNum_1, rNum_2 : Real ; iOpcion       : Integer ; BEGIN

REPEAT WriteLn ; WriteLn ('-- Menú de opciones --') ; WriteLn (' 1  Sumar') ; WriteLn (' 2  Restar') ; WriteLn (' 0  Terminar') ;

REPEAT Write  ('     Elige la opción: ') ; ReadLn (iOpcion) ; UNTIL (0 <= iOpcion) AND (iOpcion <= 2) ;

CASE iOpcion OF          1 : BEGIN Write  ('Escribe un  sumando: ') ; ReadLn (rNum_1) ; Write  ('           otro sumando: ') ; ReadLn (rNum_2) ;

WriteLn ('Suma = ', rNum_1 + rNum_2 :0:2) ; END ; 2 : BEGIN Write  ('Escribe el minuendo: ') ; ReadLn (rNum_1) ; Write  ('           el sustraendo: ') ; ReadLn (rNum_2) ; WriteLn ('Resta = ', rNum_1 - rNum_2 :0:2) ; END ; END ;

UNTIL iOpcion = 0 ;

Writeln ('Adiós') ;

ReadLn ; { se debe pulsar ENTER para finalizar la ejecución del programa } END. code **Programa que realiza múltiples operaciones seleccionadas por el usuario (hasta que el usuario selecciona** **"Terminar")** **La variable se selección de la Opción es de tipo Char **

**Se lee la opción mediante el** ** PROCEDIMIENTO ReadLn ** **- Si el usuario pulsa** ** Opción ** **no válida se vuelva a pedir que escriba de nuevo la** ** Opción **

code format="pascal" PROGRAM Menu_4 ; VAR rNum_1, rNum_2 : Real ; cOpcion       : Char ; BEGIN

REPEAT WriteLn ; WriteLn ('-- Menú de opciones --') ; WriteLn (' 1  Sumar') ; WriteLn (' 2  Restar') ; WriteLn (' 0  Terminar') ;

REPEAT Write  ('     Elige la opción: ') ; ReadLn (cOpcion) ; UNTIL ('0' <= cOpcion) AND (cOpcion <= '2') ;

CASE cOpcion OF        '1' :  BEGIN Write  ('Escribe un  sumando: ') ; ReadLn (rNum_1) ; Write  ('           otro sumando: ') ; ReadLn (rNum_2) ;

WriteLn ('Suma = ', rNum_1 + rNum_2 :0:2) ; END ; '2' : BEGIN Write  ('Escribe el minuendo: ') ; ReadLn (rNum_1) ; Write  ('           el sustraendo: ') ; ReadLn (rNum_2) ; WriteLn ('Resta = ', rNum_1 - rNum_2 :0:2) ; END ; END ; UNTIL cOpcion = '0' ;

Writeln ('Adiós') ;

ReadLn ; { se debe pulsar ENTER para finalizar la ejecución del programa } END. code **Programa que realiza múltiples operaciones seleccionadas por el usuario (hasta que el usuario selecciona** **"Terminar")** **La variable se selección de la Opción es de tipo Char **

**Se lee la opción mediante la** ** FUNCTION ReadKey ** **- El usuario no puede pulsar una** ** Opción ** **no válida**

code format="pascal" PROGRAM Menu_5 ; USES Crt ; VAR rNum_1, rNum_2 : Real ; cOpcion       : Char ; BEGIN

REPEAT WriteLn ; WriteLn ('-- Menú de opciones --') ; WriteLn (' 1  Sumar') ; WriteLn (' 2  Restar') ; WriteLn (' 0  Terminar') ;

Write  ('     Elige la opción: ') ; REPEAT cOpcion := ReadKey ; UNTIL ('0' <= cOpcion) AND (cOpcion <= '2') ; Writeln (cOpcion) ;

CASE cOpcion OF        '1' :  BEGIN Write  ('Escribe un  sumando: ') ; ReadLn (rNum_1) ; Write  ('           otro sumando: ') ; ReadLn (rNum_2) ;

WriteLn ('Suma = ', rNum_1 + rNum_2 :0:2) ; END ; '2' : BEGIN Write  ('Escribe el minuendo: ') ; ReadLn (rNum_1) ; Write  ('           el sustraendo: ') ; ReadLn (rNum_2) ; WriteLn ('Resta = ', rNum_1 - rNum_2 :0:2) ; END ; END ; UNTIL cOpcion = '0' ;

Writeln ('Adiós') ;

ReadLn ; { se debe pulsar ENTER para finalizar la ejecución del programa } END. code

**Programa que realiza múltiples operaciones seleccionadas por el usuario (hasta que el usuario selecciona** **"Terminar")** **La variable se selección de la Opción es de tipo Char ****(los valor válidos son 0, + y - )**

**Se lee la opción mediante la** ** FUNCTION ReadKey ** **- El usuario no puede pulsar una** ** Opción ** **no válida**

code format="pascal" PROGRAM Menu_6 ; USES Crt ; VAR rNum_1, rNum_2 : Real ; cOpcion       : Char ; BEGIN

REPEAT WriteLn ; WriteLn ('-- Menú de opciones --') ; WriteLn (' +  Sumar') ; WriteLn (' -  Restar') ; WriteLn (' 0  Terminar') ;

Write  ('     Elige la opción: ') ; REPEAT cOpcion := ReadKey ; UNTIL ('0' = cOpcion) OR (cOpcion = '+') OR (cOpcion = '-'); Writeln (cOpcion) ;

CASE cOpcion OF        '+' :  BEGIN Write  ('Escribe un  sumando: ') ; ReadLn (rNum_1) ; Write  ('           otro sumando: ') ; ReadLn (rNum_2) ;

WriteLn ('Suma = ', rNum_1 + rNum_2 :0:2) ; END ; '-' : BEGIN Write  ('Escribe el minuendo: ') ; ReadLn (rNum_1) ; Write  ('           el sustraendo: ') ; ReadLn (rNum_2) ; WriteLn ('Resta = ', rNum_1 - rNum_2 :0:2) ; END ; END ; UNTIL cOpcion = '0' ;

Writeln ('Adiós') ;

ReadLn ; { se debe pulsar ENTER para finalizar la ejecución del programa } END. code

**Programa que realiza múltiples operaciones seleccionadas por el usuario (hasta que el usuario selecciona** **"Terminar")** **La variable se selección de la Opción es de tipo Char **

**Se lee la opción mediante la** ** FUNCTION ReadKey ** **- El usuario no puede pulsar una** ** Opción ** **no válida**

**Tras leer una opción y realizar las operaciones correspondientes se borra la pantalla antes de volver a mostrar el menú**

code format="pascal" PROGRAM Menu_7 ; USES Crt ; VAR rNum_1, rNum_2 : Real ; cOpcion, cEspera : Char ; BEGIN

REPEAT ClrScr ; {Borra la pantalla y deja el cursor en la esquina superior izquierda} WriteLn ; WriteLn ('-- Menú de opciones --') ; WriteLn (' +  Sumar') ; WriteLn (' -  Restar') ; WriteLn (' 0  Terminar') ;

Write  ('     Elige la opción: ') ; REPEAT cOpcion := ReadKey ; UNTIL ('0' = cOpcion) OR (cOpcion = '+') OR (cOpcion = '-'); Writeln (cOpcion) ;

CASE cOpcion OF        '+' :  BEGIN Write  ('Escribe un  sumando: ') ; ReadLn (rNum_1) ; Write  ('           otro sumando: ') ; ReadLn (rNum_2) ;

WriteLn ('Suma = ', rNum_1 + rNum_2 :0:2) ; END ; '-' : BEGIN Write  ('Escribe el minuendo: ') ; ReadLn (rNum_1) ; Write  ('           el sustraendo: ') ; ReadLn (rNum_2) ; WriteLn ('Resta = ', rNum_1 - rNum_2 :0:2) ; END ; END ; IF cOpcion <> '0' THEN     { si no se pulsado '0' se espera a que se pulse una tecla} cEspera := ReadKey ;   { antes de volver al inicio del bucle y borrar la pantalla }

UNTIL cOpcion = '0' ;

Writeln ('Adiós') ;

cEspera := ReadKey ;   { se debe pulsar cualquiere tecla  para finalizar la ejecución del programa } END. code