...

Instituto Politécnico Nacional

Escuela Superior de Cómputo

Recurso Didáctico Digital

Unidad 1: Estructura de un sistema operativo
...
1.5.4 Funciones

Al reutilizar código, una solución inmediata sería seleccionar el bloque de código a ejecutar en cuestión para copiarlo y pegarlo en otra sección de código para ser ejecutado, si bien el problema es resuelto, no es considerado como buena práctica, debido a que, si se trata de un código de gran escala, su legibilidad y mantenimiento puede ser obstaculizado.

Una solución versátil es el uso de funciones.

Una función es un bloque de código que puede ser mandado a llamar las veces que se desee, con la diferencia que éste bloque en particular es llamado a través de su nombre y no a través de cada uno de los comandos que llegase a utilizar, dando como resultado mayor legibilidad y semántica.

Las funciones tienen las siguientes características:

  • Se declaran antes de ser utilizadas.
  • Su declaración es con un nombre, no un comando.
  • Al ser declarada, no significa que se esté ejecutando.
  • Para ejecutarse, debe ser mandada a llamar en el bloque de código principal.
  • El nombre de la función funge como descriptor de la misma para mejorar la semántica del código.
  • Pueden retornar un valor.

En la siguientes imágenes se muestra la sintaxis y uso de las funciones en Bash.

#!/bin/bash #Definición de una función de saludo nombreFuncion(){   #argumentos
  #instrucciones }

Ejemplo 1. Sintaxis de funcion en bash

Es importante destacar los siguientes puntos:

  • Las funciones pueden alimentarse de valores externos, los cuales son denominados parámetros o argumentos.

    La línea de argumentos es aquella que se encarga de almacenar los valores pasados a la función en cuestión, para después ser utilizados en la línea de instrucciones.

    Toda función puede alimentarse con varios argumentos.

  • En la línea de instrucciones podemos hacer que la función procese la información tanto de los argumentos como de forma local.

    Podemos o no retornar un valor, dependiendo de la necesidad del script.

#!/bin/bash #Definición de una función de saludo saludar(){   local nombre=$1   echo "¡Hola, $nombre!" } #Llamada a la función saludar "Juan"

Ejemplo 1. Declaración y uso de función sin retorno ni argumentos

#!/bin/bash #Definición de una función que retorna un valor funcion_con_retorno(){   local resultado=$(( $1 + $2 ))   echo $resultado } #Llamada a la función y captura del valor retornado resultado=$(funcion_con_retorno 5 3) #Imprimir el resultado capturado echo "El resultado es: $resultado"

Ejemplo 2. Uso de función con retorno y dos argumentos

Cuando se programa un script, es muy útil mostrar cadenas de salida para que se muestre la información que se desea visualizar. Esto sirve para dar seguimiento a la ejecución del script.

Algunas veces será importante mantener consistencia de información. Mayor parte de ella consiste precisamente en ser una combinación de símbolos y números, por ende, podemos almacenarla en cadenas para su posterior uso.

También podemos almacenar en cadenas los nombres de un comando en particular, los cuales pueden ser utilizados por otro script.

En resumen, las funciones permiten modular código desarrollado para un programa en cualquier lenguaje, esto, con el fin de mejorar su semántica, mantenimiento, legibilidad y reutilización.