26 de agosto de 2016

Arreglos y funciones.

   Los datos almacenados en los arreglos no siempre provienen de inicializaciones, ya que es muy usual por ejemplo, el procesar un conjunto de datos de la entrada estándar y almacenarlos en un arreglo, y dado que es una tarea muy común, convendría tener una forma de encapsular dicha labor y solicitarla en donde se necesite. El mecanismo de abstracción proporcionado por las funciones cumplen con dicho cometido.

   Con base en lo descrito con anterioridad, lo que se necesita entonces es saber cómo enviarle un arreglo a una función y cómo decirle a la función que lo que va a recibir como parámetro es un arreglo. El Ejemplo 6.3 muestra cómo hacer esto para un arreglo de enteros.

   Observe primero las líneas 9 y 10, y note que cada una de las funciones tienen en su lista de parámetros int [ ] y int. Estas declaraciones le indican al compilador que las funciones recibirán un arreglo de enteros como primer argumento, y un número entero como segundo argumento. Lo mismo sucede en las líneas 29 y 38 respectivamente.

   Continuando con los prototipos (líneas 9 y 10) y los encabezados de las definiciones de función (líneas 29 y 38), note que en ambos casos los corchetes están vacíos, esto es así debido a que no se está declarando un arreglo ni designado un tamaño, sino que se está indicando que la función recibirá un arreglo que ha sido declarado y dimensionado en alguna otra parte (comúnmente en main).

   Observe también que el nombre (identificador) del arreglo dentro de la función leeArregloInt es a, el cual coincide con el nombre del arreglo declarado en la función main en la línea 13, mientras que para la función imprimeArregloInt el nombre del arreglo es b; esto se ha hecho con la intención de mostrar que el nombre del (los) arreglo(s) dentro de las funciones puede(n) coincidir o no con el nombre del (los) arreglo(s) declarado(s) en main sin que exista algún tipo de conflicto.

   Tanto la función leeArregloInt como imprimeArregloInt pueden ser integradas dentro de una biblioteca personalizada de funciones tal y como se describió en la entrada correspondiente, con la finalidad de poder reutilizarlas cuando se necesite leer de la entrada estándar un arreglo de números enteros, o imprimir un arreglo de enteros. Una posible salida del Ejemplo 6.3 se muestra en la siguiente figura:

Una posible salida del Ejemplo 6.3.

No hay comentarios.: