Funciones y Procedimientos

Funciones y Procedimientos


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
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
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.