En este apartado podras encontrar los siguientes temas:
1.-Introduccion
2.-Declarando un arreglo
3.-Paso de arreglos a funciones
INTRODUCCIÓN
Muchos programas requieren utilizar varios datos que tienen características en común, por ejemplo una serie de números enteros.
En situaciones como esta a menudo, resulta conveniente colocar todos los datos dentro de un ARREGLO donde todos los elementos comparten el mismo nombre (por ejemplo X). Los datos individuales pueden ser caracteres, números enteros, números en coma flotante, etc. Pero todos los elementos del arreglo deben ser del mismo tipo.
Cada elemento del arreglo es referenciado mediante la especificación del nombre del arreglo que lo contiene seguido por uno o más índices, con cada índice encerrado entre paréntesis cuadrados.
Cada índice debe ser expresado con un entero mayor o igual a cero. Así en un arreglo de n elementos, los elementos de éste son x [O], x [1], x [2], ... , x [n-l] , Notar que todos los arreglos empiezan con un índice en 0.
El número de índices determinan la dimensión del arreglo. Por ejemplo, x [i] hace referencia a un elemento del arreglo unidimensional x.
Análogamente, Y[ i] [j] referencia a un elemento de un arreglo bidimensional Y. Se pueden formular arreglos de mayor dimensión, añadiendo índices adicionales de la misma manera (por ejemplo, z[i] [j] [kl).
DECLARANDO UN ARREGLO
Los arreglos se definen como cualquier variable, con la diferencia de que cada nombre va seguido de una especificación de tamaño entre paréntesis cuadrados.
En términos generales, un arreglo puede declararse de la siguiente forma:
tipo-de-almacenamiento tipo-dato nombre[tamaño];
donde:
tipo-de-almacenamiento: se refiere al tipo de almacenamiento del arreglo (este valor es opcional).
Tipo-dato:
es el tipo de datos, que contendrá el arreglo
nombre:
el nombre del arreglo
tamaño:
es una expresión entera positiva. que indica el número de elementos del arreglo.
EJEMPLO
A continuación se muestran algunas definiciones típicas de arreglos unidimensionales.
int x[100];
char texto [80];
en la primer definición encontramos un arreglo de 100 enteros
en la segunda se crea espacio para un arreglo de 80 caracteres
EJEMPLO 1
A continuación se presenta un programa que lee un arreglo unidimensional de caracteres, convierte todos sus elementos a mayúsculas y escribe el arreglo modificado.
/* leer una línea de texto en minúsculas y escribirla en mayúsculas */
#include <stdio.h>
#include <ctype.h>
#define TAMANO 80
main ()
{
char letras (TAMANO] ;
int cont;
/* leer la línea */
for (cont = O; cont < TAMANO; ++cont)
letras [cont] = getchar();
/* escribir la línea en mayúsculas */
for (cont = O; cont < TAMANO; ++cont)
putchar(toupper(letras[cont]));
}
EJEMPLO 2
Considerar las dos definiciones siguientes de arreglos de caracteres. Cada una de ellas incluye la asignación inicial de la constante de cadena de caracteres "ROJO". Sin embargo, el primer
arreglo se define como un arreglo cuatro elementos, mientras que no se especifica el tamaño del segundo.
char color[4] = "ROJO";
char color[] .= "ROJO I!;
El resultado de estas asignaciones iniciales no es el mismo debido al carácter nulo, \ O, que se añade automáticamente al final de la segunda cadena. De este modo, los elementos del primer arreglo son
color[O] = 'R'
color[l] = 'o'
color[2] = 'J'
color[3] 'o'
mientras que los elementos del segundo arreglo son
colar[O] = 'R'
color[l] = 'O'
color[2] = ' J'
color[3] = 'O'
color[4] = '\0 I
Por tanto, la primera forma es incorrecta, ya que el carácter nulo \ O no se incluyó en el arreglo.
La definición del arreglo podría haberse escrito como
char color[5] = "ROJO";
Esta definición es correcta, ya que ahora definimos un arreglo de cinco elementos que incluye un elemento para el carácter nulo. Sin embargo, muchos programadores prefieren la primera forma, que omite el especificador de tamaño.
Si el programa requiere una declaración de un arreglo unidimensional (porque el arreglo está definido en cualquier otra parte del programa), la declaración se escribe de la misma manera que la definición del arreglo con las siguientes excepciones:
1. Los corchetes pueden estar vacíos, ya que el tamaño ha sido especificado como parte de
la definición. Las declaraciones de arreglo se escriben habitualmente de esta manera.
2. No se pueden incluir valores iniciales en la declaración.
Estas reglas se aplican tanto a declaraciones de argumentos formales dentro de las funciones como a declaraciones de variables externas.
PASO DE ARREGLOS A FUNCIONES
Un arreglo completo se puede pasar a una función como argumento. Sin embargo, la manera en la que el arreglo se pasa es muy diferente de la de una variable cualquiera. Para pasar un arreglo a una función, el nombre de este debe aparecer solo, sin corchetes ni
Índices, como un argumento real en la llamada a la función. El correspondiente argumento formal se escribe de la misma manera, pero debe ser declarado como un arreglo en la declaración de los argumentos formales. Cuando se declara un arreglo unidimensional como un argumento formal, el arreglo se escribe con un par de corchetes vacíos. El tamaño del arreglo no se especifica en la declaración de argumentos formales.
Se debe tener cuidado al escribir prototipos de funciones que incluyan argumentos de arreglo.
Una pareja vacía de corchetes debe seguir al nombre de cada argumento de arreglo, indicando de este modo que el argumento es un arreglo. Si no se incluyen los nombres de los argumentos en una declaración de función, entonces una pareja vacía de corchetes debe seguir al tipo de datos de argumento del arreglo.
EJEMPLO
El siguiente esquema de programa ilustra el paso de un array desde la parte principal
del programa a una función.
f1oat media(int a, float x[]);
main ()
{
int n;
f10at med;
float lista[100];
med = media (n, lista);
}
float media(int a, f1oat x[])
{
}
Dentro de main vemos una llamada a la función media. Esta llamada a función contiene dos argumentos reales, la variable entera n y el array unidimensional en coma flotante 1ista, Observe que 1ista aparece como una variable ordinaria en la llamada a la función; es decir, no se incluyen los corchetes.
La primera línea de la definición de la función incluye dos argumentos formales, a y x. La declaración de argumentos formales establece que a es una variable entera y x un array unidimensional en coma flotante.
Existe pues una correspondencia entre el argumento real n y el argumento formal a. Análogamente,
existe una correspondencia entre el argumento real 1 i s ta y el argumento formal x. Observe que
el tamaño de x no se especifica dentro de la declaración formal de argumentos.
Observe que el prototipo de función se podria haber escrito sin los nombres de los argumentos, como
float media(int, float[]);
Cualquiera de las dos formas es válida.
No hay comentarios:
Publicar un comentario