Funciones y Procedimientos

  Las funciones y procedimientos se pueden denominar como subprogramas dentro de un programa principal, y éste los puede utilizar en cualquier parte de su código cuantas veces sea necesario. Estos subprogramas son bloques de código que contienen una pequeña tarea del programa principal y es independiente de éste. En base a las características de la tarea a resolver se decide hacer un procedimiento o una función.

 

  El programa que contiene subprogramas ejecuta sus instrucciones y en algún momento hace la llamada al subprograma por su nombre con sus respectivos parámetros y le transfiere el control. Cuando se terminan de ejecutar todas las instrucciones del subprograma regresa el control al punto donde fue llamado el subprograma en el programa principal y continúa normalmente con su ejecución.

 

Procedimientos

Cómo se escribe un procedimiento: (Posible denotación) 

<tipo> <nombre> (<lista_parámetros_formales>) {

<variables>

<acciones>

}  (FINPROCEDIMIENTO)

 

Donde:

  • tipo: siempre es void, los procedimientos no tienen un retorno.
  • nombre: nombre para referirse al procedimiento.Tiene que representar la tarea que realiza.
  • lista_parámetros_formales: identifica nombre y tipo de datos de las variables que usamos para recibir los valores con los que debe trabajar o en los cuales debe devolverse el resultado.
  • variables: declaración de variables locales, es decir sólo tienen validez en el procedimiento.
  • acciones: conjunto de instrucciones que forman el cuerpo del procedimiento.
  • FINPROCEDIMIENTO: momento en que se devuelve el control al programa o subprograma que lo llamó. Esta parte no va en el código, sólo se utilizó para dar referencia al cierre del procedimiento.

 

Para llamarlo desde el programa principal o desde otro subprograma: 

<nombre> (<lista_parámetros_reales>)

Desde una sentencia.

 

Funciones

Cómo se escribe una Función: (Posible denotación) 

<tipo> <nombre> (<lista_parámetros_formales>) {

<variables>

<acciones>

} Retorno <variable>

 

Donde:

  • tipo: Es el tipo de dato que devuelve la función, puede ser un entero, flotante, texto, arreglo, modelo, clase, entre otros. (Integer, Double, String, Array<>…)
  • nombre: nombre para referirse a la función. Tiene que representar la tarea que realiza.
  • lista_parámetros_formales: identifica nombre y tipo de datos de las variables que usamos para recibir los valores con los que debe trabajar o en los cuales debe devolverse el resultado.
  • variables: declaración de variables locales, es decir sólo tienen validez dentro de la función.
  • acciones: conjunto de instrucciones que forman el cuerpo de la función.
  • Retorno <>: Momento en el que se devuelve el control al programa principal y retorna una variable con el dato de tipo. El retorno puede ir después del cierre de llaves, como esta en el ejemplo, o antes del cierre de llaves
    Retorno <variable>
    }
    esto depende del lenguaje y su sintaxis.

 

Para llamarlo desde el programa principal o desde otro subprograma: 

<nombre> (<lista_parámetros_reales>)

Desde:

  • Una expresión
  • La parte derecha de una asignación
  • En una lista de argumentos de llamada

 

Funciones vs Procedimientos

 

Procedimiento Función
Cantidad de Resultados 0…N 1
Lugar donde se devuelve el Resultado Parámetros Retorno al llamar
Forma de Llamada Línea de programa Expresión
Asignación de Lectura y Escritura Si permite No permite
Tipo de Devolución void String, Integer, Double, Array<>, etc…

 

Parámetros

  A través de la lista de parámetros se pasan los valores o las direcciones donde se encuentran los valores, con los que debe trabajar el subprograma. Es importante determinar qué método se utilizará para pasar los parámetros, ya que de esto dependen los resultados de los programas.

  La correspondencia entre los valores de la llamada, y los del subprograma, son uno a uno en la misma posición, del mismo tipo de dato y la misma cantidad; si no se respeta esto no va a funcionar el subprograma.

  A los parámetros que se usan en el programa principal que llama al subprograma se denominan parámetros reales o argumentos de llamada. Los parámetros que se usan en el subprograma se denominan parámetros formales.

 

Clasificación de los parámetros:

 

  • Entrada: Proporcionan los valores desde el programa o subprograma que llama.
  • Salida: Valores resultantes del subprograma. Las funciones no usan estos parámetros ya que el resultado lo devuelven en su retorno (en su llamada).
  • Entrada/Salida: Un mismo parámetro sirve para mandar argumentos a un subprograma y para devolver el resultado.

 

 

Pasaje de Parámetros:

 

  • Por Valor o Protegido: Es la forma más simple. Se comunican los programas enviando una copia de la variable original. El subprograma recibe los valores de los parámetros, como valores iniciales, ejecuta sus acciones, pero no los devuelve con otros valores. Si sufre alguna modificación no afecta la variable original del programa principal. Las funciones utilizan este método.
  • Por Referencia: Se comunican los programas enviando la dirección de las variables originales por los parámetros. El subprograma recibe la dirección de las variables, por lo tanto todo lo que ejecute o modifique sobre el parámetro formal recibido se realiza directamente sobre la variable original, ya que es adonde apunta el parámetro formal.

 

 

¿Por qué usar Funciones o Procedimientos?

 

  Muchas veces tenemos que resolver problemas que para manejarlo mejor lo debemos dividir en subproblemas. Ahí es donde usamos subprogramas que nos permiten organizar los problemas complejos.

  Otra situación es que una secuencia de acciones debe repetirse varias veces, en distintos lugares de un programa. Entonces para no escribir lo mismo una y otra vez podemos agrupar las acciones en bloques denominados subprogramas.

 

Beneficios de usar subprogramas:

  • Menor escritura.
  • Mayor claridad en la lectura.
  • Mayor facilidad para modificar sin alterar el programa principal.
  • Mayor posibilidad de reutilización de código.
  • Mejora la distribución de las tareas entre los programadores.

Esperamos que te haya servido nuestro material. ¡En caso de que haya sido así te invitamos a compartirlo con tus colegas y dejar tus comentarios en redes para que podamos crear más contenido educativo para vos!