Anda di halaman 1dari 5

Arreglos y cadenas En el siguiente captulo se presentan los arreglos y las cadenas.

Las cadenas se consideran como un arreglo de tipo char. Arreglos unidimensionales y multidimensionales Los arreglos son una coleccin de variables del mismo tipo que se referencian utilizando un nombre comn. Un arreglo consta de posiciones de memoria contigua. La direccin ms baja corresponde al primer elemento y la ms alta al ltimo. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un ndice. El formato para declarar un arreglo unidimensional es: tipo nombre_arr [ tamao ] Por ejemplo, para declarar un arreglo de enteros llamado listanum con diez elementos se hace de la siguiente forma: int listanum[10]; En C, todos los arreglos usan cero como ndice para el primer elemento. Por tanto, el ejemplo anterior declara un arreglo de enteros con diez elementos desde listanum[0] hasta listanum[9]. La forma como pueden ser accesados los elementos de un arreglo, es de la siguiente forma: listanum[2] = 15; /* Asigna 15 al 3er elemento del arreglo listanum*/ num = listanum[2]; /* Asigna el contenido del 3er elemento a la variable num */ El lenguaje C no realiza comprobacin de contornos en los arreglos. En el caso de que sobrepase el final durante una operacin de asignacin, entonces se asignarn valores a otra variable o a un trozo del cdigo, esto es, si se dimensiona un arreglo de tamao N, se puede referenciar el arreglo por encima de N sin provocar ningn mensaje de error en tiempo de compilacin o ejecucin, incluso aunque probablemente se provoque el fallo del programa. Como programador se es responsable de asegurar que todos los arreglos sean lo suficientemente grandes para guardar lo que pondr en ellos el programa. C permite arreglos con ms de una dimensin, el formato general es: tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN]; Por ejemplo un arreglo de enteros bidimensionales se escribir como: int tabladenums[50][50];

Observar que para declarar cada dimensin lleva sus propios parntesis cuadrados. Para acceder los elementos se procede de forma similar al ejemplo del arreglo unidimensional, esto es, tabladenums[2][3] = 15; /* Asigna 15 al elemento de la 3 fila y la 4 columna*/ num = tabladenums[25][16]; A continuacin se muestra un ejemplo que asigna al primer elemento de un arreglo bidimensional cero, al siguiente 1, y as sucesivamente. main() { int t,i,num[3][4]; for(t=0; t<3; ++t) for(i=0; i<4; ++i) num[t][i]=(t*4)+i*1; for(t=0; t<3; ++t) { for(i=0; i<4; ++i) printf("num[%d][%d]=%d ", t,i,num[t][i]); printf("\n"); } } En C se permite la inicializacin de arreglos, debiendo seguir el siguiente formato: tipo nombre_arr[ tam1 ][ tam2 ] ... [ tamN] = {lista-valores}; Por ejemplo: int i[10] = {1,2,3,4,5,6,7,8,9,10}; int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

Funciones
Una funcin es un conjunto de declaraciones, definiciones, expresiones y sentencias que realizan una tarea especfica. El formato general de una funcin en C es especificador_de_tipo nombre_de_funcin (lista_de_parmetros) { variables locales cdigo de la funcin } El especificador_de_tipo indica el tipo del valor que la funcin devolver mediante el uso de return. El valor puede ser de cualquier tipo vlido. Si no se especfica un valor, entonces la computadora asume por defecto que la funcin devolver un resultado entero. No se

tienen siempre que incluir parmetros en una funcin. la lista de parmetros puede estar vaca. Las funciones terminan y regresan automticamente al procedimiento que las llam cuando se encuentra la ltima llave}, o bien, se puede forzar el regreso antes usando la sentencia return. Ademas del uso sealado la funcin return se usa para devolver un valor. Se examina a continuacin un ejemplo que encuentra el promedio de dos enteros: float encontprom(int num1, int num2) { float promedio; promedio = (num1 + num2) / 2.0; return(promedio); } main() { int a=7, b=10; float resultado; resultado = encontprom(a, b); printf("Promedio=%f\n",resultado); }

Funciones void
Las funciones void dan una forma de emular, lo que en otros lenguajes se conocen como procedimientos (por ejemplo, en PASCAL). Se usan cuando no requiere regresar un valor. Se muestra un ejemplo que imprime los cuadrados de ciertos nmeros. void cuadrados() { int contador; for( contador=1; contador<10; contador++) printf("%d\n",contador*contador); } main() { cuadrados(); } En la funcin cuadrados no esta definido ningn parmetro, y por otra parte tampoco se emplea la sentencia return para regresar de la funcin.

Funciones y arreglos
Cuando se usan un arreglo como un argumento a la funcin, se pasa slo la direccin del arreglo y no la copia del arreglo entero. Para fines

prcticos podemos considerar el nombre del arreglo sin ningn ndice como la direccin del arreglo. Considerar el siguiente ejemplo en donde se pasa un arreglo a la funcin imp_rev, observar que no es necesario especificar la dimensin del arreglo cuando es un parmetro de la funcin. void imp_rev(char s[]) { int t; for( t=strlen(s)-1; t>=0; t--) printf("%c",s[t]); } main() { char nombre[]="Facultad"; imp_rev(nombre); } Observar que en la funcin imp_rev se usa la funcin strlen para calcular la longitud de la cadena sin incluir el terminador nulo. Por otra parte, la funcin imp_rev no usa la sentencia return ni para terminar de usar la funcin, ni para regresar algn valor. Se muestra otro ejemplo, float enconprom(int tam, float lista[]) { int i; float suma = 0.0; for ( i=0; i<tam; i++) suma += lista[i]; return(suma/tam); } main() { float numeros[]={2.3, 8.0, 15.0, 20.2, 44.01, -3.0, -2.9}; printf("El promedio de la lista es %f\n", enconprom(7,numeros) ); } Para el caso de que se tenga que pasar un arreglo con ms de una dimensin, no se indica la primera dimensin pero, el resto de las dimensiones deben sealarse. Se muestra a continuacin un ejemplo: void imprtabla(int tamx,int tamy, float tabla[][5]) { int x,y; for ( x=0; x<tamx; x++ ) {

for ( y=0; y<tamy; y++ ) printf("t[%d][%d]=%f",x,y,tabla[x][y]); printf("\n"); } }

Prototipos de funciones
Antes de usar una funcin C debe tener conocimiento acerca del tipo de dato que regresar y el tipo de los parmetros que la funcin espera. El estndar ANSI de C introduj una nueva (mejor) forma de hacer lo anterior respecto a las versiones previas de C. La importancia de usar prototipos de funciones es la siguiente: Se hace el cdigo ms estructurado y por lo tanto, ms fcil de leer. Se permite al compilador de C revisar la sintaxis de las funciones llamadas. Lo anterior es hecho, dependiendo del alcance de la funcin. Bsicamente si una funcin ha sido definida antes de que sea usada (o llamada), entonces se puede usar la funcin sin problemas. Si no es as, entonces la funcin se debe declarar. La declaracin simplemente maneja el tipo de dato que la funcin regresa y el tipo de par^o'ametros usados por la funcin. Es una prctica usual y conveniente escribir el prototipo de todas las funciones al principio del programa, sin embargo esto no es estrictamente necesario. Para declarar un prototipo de una funcin se indicar el tipo de dato que regresar la funcin, el nombre de la funcin y entre parntesis la lista del tipo de los parmetros de acuerdo al orden que aparecen en la definicin de la funcin. Por ejemplo: int longcad(char []); Lo anterior declara una funcin llamada longcad que regresa un valor entero y acepta una cadena como parmetro.

Anda mungkin juga menyukai