| Versión 3.0 |
| 800x600 mínimo |
|
En esta lección: Cadena de caracteres ----- arrays de tipo int ----- arrays y funciones ----- arrays múltiples ----- Otras secciones: Conceptos básicos ----- Programando en C ----- Programando en C++ ----- Programando Windows 9x. ----- Teoría electrónica ----- Circuitos electrónicos ----- Actividades adicionales ----- Hipervínculos ----- Contácteme: Dudas y comentarios ----- |
¿Qué es una cadena de caracteres?En el caso específico de la palabra inglesa "array" concerniente a este curso de C, no haremos la traducción de la misma. En C, nos referimos a un array como un conjunto de datos todos del mismo tipo, siendo la cadena de caracteres un tipo especial de array pues se trata de un conjunto de datos de tipo char que termina con un caracter nulo, a este tipo de cadenas también se les conoce como "cadenas ASCII-Z" y será la que trataremos en primer lugar. Empezamos por definir un array de tipo char y especificamos el tamaño del mismo con un número, llamado subíndice, encerrado entre corchetes. Este número le indica al sistema la cantidad de espacios para caracteres que contendrá la cadena en cuestión. Los elementos de un array se almacenan en forma contigua en la memoria de la computadora y el subíndice del primer elemento siempre es cero. El nombre del array es una constante que representa la dirección del primer elemento del array. Veamos un código de ejemplo:
La variable cadena es por tanto una cadena que puede almacenar hasta seis caracteres, tomando en cuenta que se requiere un espacio para almacenar el caracter nulo al final de la cadena. El símbolo %s mostrado en los enunciados printf( ) le indica al sistema que despliegue una cadena de caracteres empezando con el elemento subíndice cero, que en el código de ejemplo es la letra L, y continuando hasta encontrar el caracter nulo. Observe que en los enunciados printf( ) cuando se indica la variable cadena sin corchetes indica que se despliegue la totalidad de la cadena, en tanto que al indicar la variable cadena con algún valor entre corchetes se refiere a un solo elemento de la cadena, en este caso debemos utilizar en el enunciado printf( ) el símbolo %c que le indica al sistema que despliegue un solo caracter. El símbolo & especifica la dirección en memoria de cadena[3], este símbolo lo estudiaremos mas adelante. Compile y ejecute el código de ejemplo para mayor claridad en lo aquí expuesto. Modifiquemos nuestro código para estudiar algunas funciones nuevas:
Como puede ver, en este programa se han definido cuatro arrays de tipo char de diferente longitud, enseguida nos encontramos con la función strcpy( ) que sirve para copiar la cadena especificada en la segunda entidad dentro del paréntesis de la función en un array de tipo char especificado por la primera entidad dentro del paréntesis de la función strcpy, de esta forma, por ejemplo, la cadena "Pedro Picapiedra" se copia en el array de tipo char llamado cadena1. arrays de tipo intVeamos ahora como trabajar con un array de tipo int en el siguiente programa que calcula la tabla del 5:
Las primeras novedades las encontramos en la línea 5 en donde podemos ver que hemos declarado un array de tipo char llamado titulo el cual no tiene especificado valor alguno dentro de los corchetes, esto se hace así para dejar que el sistema calcule el espacio necesario para la cadena especificada del lado derecho de la sentencia incluyendo el caracter nulo del final de la cadena, además se ha declarado como static para evitar que el sistema asigne a la variable del array titulo como automática y de esta manera se garantiza que la variable contenga la cadena especificada una vez que se ejecute el programa. En la siguiente línea se declara un nuevo array de tipo int, es decir, tenemos aquí diez variables de tipo int llamadas espacios[0], espacios[1], espacios[2], etc. además de una variable convencional de tipo int llamada indice. ![]()
arrays y funcionesEn la lección Funciones mencionamos que había una forma de obtener datos de una función utilizando un array, esto lo podemos ver en el código siguiente en donde se ha definido un array de 15 variables llamado matriz, luego asignamos algunos datos a estas variables y desplegamos en pantalla las primeras cinco. En la línea 17 llamamos a la función denominada una_funcion tomando todo el array como parámetro poniendo el nombre del array en el paréntesis de la función.
![]()
La función una_funcion empieza en la línea 25 y como se puede ver, prefiere llamar internamente a la matriz con el nombre de nombre_interno, es además necesario declarar el array como de tipo int y especificar que se trata de un array incluyendo los corchetes, en este caso dejamos que el sistema determine el tamaño del array al no especificar ningún valor entre los corchetes. Al regresar a la función principal main ( ) podemos comprobar lo que hemos dicho al desplegar los nuevos valores asignados a las variables del array denominado matriz. Otra forma de obtener datos de una función hacia el programa que la llama es utilizando un puntero, tema que estudiaremos en la siguiente lección, ahí veremos que el nombre de un array es en realidad un puntero hacia una lista de valores, pero antes de avanzar a la siguiente lección veamos la manera de trabajar con arrays múltiples. arrays múltiplesYa mencionamos que un array es un conjunto de datos almacenados en variables adyacentes en memoria, todos del mismo tipo. Siguiendo esta definición podemos imaginarnos a un array como un conjunto de cajas apiladas una encima de la otra, de la misma manera podemos juntar dos o más conjuntos de cajas apiladas unas encima de las otras en donde cada conjunto de cajas no es necesariamente del mismo número (tamaño), se puede decir pues, que un array múltiple no es otra cosa que un array de arrays. En el código de ejemplo generamos un array doblemente dimensionado. La variable multiplica es un array de 11 por 11 elementos, o sea un total de 121, el primer elemento es multiplica[0][0], y el último es multiplica[11][11].
![]()
En este ejemplo se generan las diez tablas de multiplicar y se despliegan en pantalla en forma de matriz de 11 elementos para facilitar la comprensión del concepto. Por supuesto, es posible asignar valores a cada elemento del array en forma individual como queda demostrado en el código del ejemplo que he modificado para que Usted lo compile y vea los resultados a manera de ejercicio:
|