En programación, una subrutina es un bloque de código que realiza una tarea específica dentro de un programa.
En PSeInt las subrutinas pueden ser de dos tipos:
- Funciones: Subrutinas que devuelven un valor.
- Procedimientos: Subrutinas que no devuelven ningún valor.
Ambas ayudan a organizar los programas, a hacerlos más claros y reutilizables.
¿Qué es una Función?
Una función realiza una tarea y retorna un resultado (valor) al lugar desde donde fue llamada.
Sirve cuando necesitas calcular o procesar algo y obtener el resultado.
Sintaxis básica:
Funcion resultado <- NombreFuncion(parametro1, parametro2, ...)
// instrucciones
resultado <- valor_calculado;
FinFuncion
- resultado es la variable de retorno (lo que devuelve la función).
- Puede recibir parámetros de entrada (opcional).
- Siempre debe terminar devolviendo un valor.
Ejemplo de Función:
Crear una función que calcule el doble de un número:
Funcion doble <- CalcularDoble(numero)
Definir doble Como Entero;
doble <- numero * 2;
FinFuncion
Uso en el programa principal:
Proceso Principal
Definir n, resultado Como Entero;
Escribir "Ingrese un número:";
Leer n;
resultado <- CalcularDoble(n);
Escribir "El doble es: ", resultado;
FinProceso
¿Qué es un Procedimiento?
Un procedimiento realiza una tarea, pero no devuelve ningún valor.
Se utiliza cuando solo quieres que algo suceda, como mostrar un mensaje, imprimir un informe, guardar datos, etc.
Sintaxis básica:
SubProceso NombreProcedimiento(parametro1, parametro2, ...)
// instrucciones
FinSubProceso
- En PSeInt puedes usar también Funcion para procedimientos si no necesitas devolver nada.
- Los parámetros son opcionales.
Ejemplo de Procedimiento:
SubProceso MostrarBienvenida()
Escribir "¡Bienvenido al programa!";
FinSubProceso
Uso en el programa principal:
Proceso Principal
MostrarBienvenida();
FinProceso
¿Por qué usar Funciones y Procedimientos?
- Dividen el programa en partes pequeñas y manejables.
- Permiten reutilizar código (no repetir instrucciones).
- Mejoran la claridad y el orden del programa.
- Facilitan la detección de errores y el mantenimiento.
Ámbito de las variables:
- Las variables definidas dentro de una función o procedimiento solo existen en su interior.
- Las variables del programa principal no se pueden usar directamente dentro de una subrutina (y viceversa).
Ejemplo:
- mayor definida dentro de ObtenerMayor no existe en Principal.
- a y b definidos en Principal no existen en ObtenerMayor.
Parámetros: Formales y Reales:
- Parámetros formales: Son los nombres de variables que la subrutina recibe en su definición.
- Parámetros reales: Son los valores o variables reales que se pasan al llamar a la subrutina.
Ejemplo:
Funcion Sumar(x, y) // x e y son parámetros formales
Escribir x + y;
FinFuncion
Sumar(3, 5); // 3 y 5 son parámetros reales
Paso de parámetros: Por Valor y Por Referencia:
Modo | Explicación |
---|---|
Por Valor | Se copia el valor del parámetro real. Cambios dentro de la subrutina no afectan fuera. |
Por Referencia | Se pasa la dirección del dato. Cambios dentro de la subrutina sí afectan fuera. |
Por defecto:
- Los arreglos se pasan por referencia.
- Otras variables se pasan por valor.
Para indicar explícitamente el modo, se usan las palabras Por Valor o Por Referencia.
Ejemplo de paso por valor:
Funcion Incrementar(num)
num <- num + 1;
Escribir "Dentro de la función: ", num;
FinFuncion
Proceso Principal
Definir numero Como Entero;
numero <- 5;
Incrementar(numero);
Escribir "Después de la función: ", numero;
FinProceso
Observa que numero no cambió fuera de la función.
Ejemplo de paso por referencia:
Funcion Incrementar(num Por Referencia)
num <- num + 1;
Escribir "Dentro de la función: ", num;
FinFuncion
Proceso Principal
Definir numero Como Entero;
numero <- 5;
Incrementar(numero);
Escribir "Después de la función: ", numero;
FinProceso
Aquí numero sí cambió porque se pasó por referencia.