Pascal: Funciones y Procedimientos con Menú Interactivo – Código Completo Comentado
Programa en Pascal con Menú de Funciones y Procedimientos
A continuación se presenta un programa en Pascal que utiliza funciones y procedimientos para realizar diversas operaciones matemáticas, organizadas mediante un menú interactivo.
Estructura general del programa
El programa se denomina MENU_FUNCIONES_O_PROCEDIMIENTOS y utiliza la unidad crt para el control de la pantalla. Sus variables globales son:
B: opción seleccionada en el menú.X,Y: valores de entrada.R: resultado de las funciones.
Funciones
1. Función SUMATORIA
Calcula la suma de los primeros N números naturales (1 + 2 + … + N).
FUNCTION SUMATORIA(N:INTEGER):INTEGER;
VAR I,S,Y:INTEGER;
BEGIN
S:=0;
Y:=0;
FOR I:=1 TO N DO BEGIN
Y:=Y+1;
S:=S+Y;
END;
SUMATORIA:=S;
END;2. Función FACTORIAL
Calcula el factorial de un número N (N!).
FUNCTION FACTORIAL(N:INTEGER):INTEGER;
VAR I,F,Y:INTEGER;
BEGIN
Y:=0;
F:=1;
FOR I:=1 TO N DO BEGIN
Y:=Y+1;
F:=F*Y;
END;
FACTORIAL:=F;
END;3. Función POTENCIA
Eleva la base X al exponente Y mediante multiplicaciones sucesivas.
FUNCTION POTENCIA(X,Y:INTEGER):INTEGER;
VAR Z,C,P,I,D:integer;
BEGIN
P:=1;
FOR I:=1 TO Y DO BEGIN
P:=P*X;
END;
POTENCIA:=P;
END;Procedimientos
4. Procedimiento INTERCAMBIO
Intercambia los valores de dos variables mediante paso por referencia (VAR).
PROCEDURE INTERCAMBIO(VAR X,Y:INTEGER);
VAR X1: INTEGER;
BEGIN
X1:=X;
X:=Y;
Y:=X1;
END;5. Procedimiento SECUENCIA
Muestra en pantalla una secuencia de números desde X hasta Y.
PROCEDURE SECUENCIA(X,Y:INTEGER);
VAR S:INTEGER;
BEGIN
S:=1;
REPEAT
WRITE(X,' ');
X:=X+S;
UNTIL X=Y+1;
END;6. Procedimiento IMPARES
Muestra los números impares comprendidos entre X e Y.
PROCEDURE IMPARES(X,Y:INTEGER);
BEGIN
REPEAT
IF NOT (X MOD 2=0) THEN
WRITE(X,' ');
X:=X+1;
UNTIL X=Y+1;
END;7. Procedimiento PARES
Muestra los números pares comprendidos entre X e Y.
PROCEDURE PARES(X,Y:INTEGER);
BEGIN
REPEAT
IF (X MOD 2=0) THEN
WRITE(X,' ');
X:=X+1;
UNTIL X=Y+1;
END;8. Procedimiento TABLA
Muestra la tabla de multiplicar del número X del 1 al 10.
PROCEDURE TABLA(X:INTEGER);
VAR S,I:INTEGER;
BEGIN
FOR I:=1 TO 10 DO BEGIN
S:=X*I;
WRITELN(X,' * ',I,' = ',S);
END;
END;9. Procedimientos para cálculo de áreas y perímetros
Cuadrado
PROCEDURE CUADRADO(X:INTEGER);
VAR A,P:INTEGER;
BEGIN
A:=X*X;
P:=4*X;
WRITELN('EL PERIMETRO ES: ',P,' EL AREA ES: ',A);
END;Rectángulo
PROCEDURE RECTANGULO(X,Y:INTEGER);
VAR AR,PR:INTEGER;
BEGIN
AR:=X*Y;
PR:=2*X+2*Y;
WRITELN('EL PERIMETRO ES: ',PR,' EL AREA ES: ',AR);
END;Triángulo
PROCEDURE TRIANGULO(X,Y:INTEGER);
VAR AT:INTEGER;
BEGIN
AT:=X*Y;
AT:=AT DIV 2;
WRITELN('EL AREA DEL TRIANGULO ES: ',AT);
END;Círculo
PROCEDURE CIRCULO(X:INTEGER);
VAR A,P:REAL;
BEGIN
A:=3.1415*X*X;
P:=3.1415*X;
WRITELN('EL PERIMETRO ES: ',P:2:3,' EL AREA ES: ',A:2:3);
END;Programa principal
El bloque principal muestra un menú general con 10 opciones (0 a 9). Según la elección del usuario, se solicitan los datos necesarios y se llama a la función o procedimiento correspondiente. La opción 9 abre un submenú para el cálculo de figuras geométricas.
Menú principal
- Salir
- Sumatoria
- Factorial
- Potencia
- Intercambio
- Secuencia
- Muestra impares
- Muestra pares
- Tabla de multiplicar
- Cálculo de áreas y perímetros
Control de errores
Si el usuario introduce una opción no válida, el programa muestra un mensaje de advertencia y vuelve a solicitar una opción, hasta que se seleccione 0 para finalizar la ejecución.
Conclusiones
Este programa es un buen ejemplo de programación estructurada en Pascal, ya que demuestra cómo dividir un problema en funciones y procedimientos reutilizables, así como el uso de estructuras de control (FOR, REPEAT, CASE) y de un menú interactivo para facilitar la interacción con el usuario.