Podcast: Reproducir en una nueva ventana | Descargar
Tras la entrevista con Fran Sevillano en el episodio anterior, esta semana volvemos a hablar del lenguaje de programación C y de los tipos de datos que podemos usar con el. Es el turno de los arrays (también conocidos como vectores) y de las cadenas de caracteres. Aunque estos tipos de datos los veremos con más detalle en otros episodios, en este os hago una presentación con algunos ejemplos prácticos.
A partir de los tipos de datos básicos que hemos hablado en los episodios anteriores a este, en el lenguaje de programación C podemos definir tipos de datos avanzados que van a estar compuestos por colecciones o agrupaciones de elementos de dichos tipos básicos. Tenemos los siguientes:
- Arrays (o vectores) *
- Cadenas de caracteres *
- Estructuras
- Punteros
* En este episodio comentaremos los dos primeros y como siempre, tendréis un par de ejercicios propuestos al final para que practiquéis en casa.
Los Arrays
Un array es un conjunto de datos del mismo tipo al que vamos a dar un nombre (identificador). En lugar de declarar variables individuales, como numero0 , número1, … , y numero9, declararemos una variable array llamada numeros y accederemos a cada valor mediante un índice como veremos más adelante.
Definición de un array
En el lenguaje C podemos definir un array usando la siguiente sintaxis:
/* En el episodio os indico que significa cada elemento */
tipo_de_dato nombre_array[dimension];
Por ejemplo, si queremos definir un array al que denominaremos numeros que esté formado por 10 números de tipo entero corto int, lo haríamos de la siguiente manera:
int numeros[10];
Inicializando un array
A la vez que hemos declarado un array, nosotros también podríamos inicializar el array anterior de la siguiente manera (muy importante que os fijéis en la sintaxis de las llaves):
int numeros[10] = {30,441,22,13,34,54,68,71,558,909};
Hemos de tener en cuenta que el número de valores entre las llaves no puede ser mayor que la dimensión del array, en nuestro caso 10. Si omitimos la dimensión del array, esta será igual al numero total de elementos que incluyamos entre las llaves. Por ejemplo:
int numerosSinDimensionInicial[] = {40,31,42,33,42};
En esta ocasión, de forma implícita, hemos indicado que la dimensión del array numerosSinDimensionInicial será de 5 elementos.
Acceder a los elementos de un array
A cada uno de lo elementos que forman el array se accede mediante el nombre del array y un índice entero (encerrado entre corchetes) correspondiente a la posición a la que queremos acceder. Hay que tener presente el límite inferior y superior del array para evitar errores muy comunes y poco deseados.
- El límite inferior de cualquier array es 0
- El límite superior viene dado por la dimensión del array menos uno.
En el ejemplo del array numeros, el índice superior es el 9 ya que de la posición 0 a la 9 tenemos los 10 elementos correspondientes a su dimensión.
El siguiente ejemplo muestra la forma de acceder al 4º elemento del array numeros para asignar su valor a una variable de tipo entero. Una vez que se ha ejecutado, ¿qué valor tiene la variable nEntero? ¡¡Correcto!! Tiene el valor 13, que es el número entero que ocupa la posición 4 (indice 3).
int nEntero = numeros[3];
Como podéis ver, para acceder al 4º elemento del array usamos el indice 3 ya al comenzar por el. Acostumbrarse a esto cuesta un poco, sobre todo para los que son nuevos en esto de la programación. Para los más veteranos es algo más fácil puesto que en la mayoría de los lenguajes de programación, la filosofía es la misma.
Las Cadenas de caracteres (strings)
Un tipo de dato muy habitual en cualquier lenguaje de programación es el string o también llamado cadena de caracteres. En el lenguaje de programación C una cadena de caracteres es un caso particular de array formado por una secuencia de caracteres. La forma de definirlo es la siguiente:
char nombre_cadena[longitud];
Una cadena está formada por una secuencia de caracteres encerrados entre comillas dobles. Para que un array de caracteres sea considerado como string es necesario que finalice con el carácter nulo en C (‘\0’).
«hola» «como estáis» «b»
Fijemonos que «b» es distinto de ‘b’. La primera es una cadena mientras que la segunda es un carácter individual. Para imprimir una cadena de caracteres se puede utilizar la función printf y el especificador de con versión %s.
Para ver la longitud de una cadena se puede usar la función strlen. Las funciones de biblioteca que manipulan cadenas de caracteres se encuentran declaradas en el archivo de cabecera string.h.
Si no lo habéis echo ya, os recomiendo que escuchéis los siguientes episodios que os pueden ayudar a entender mejor ciertos conceptos que hemos visto:
- #014 – Jugando con los números enteros
- #013 – Identificadores, variables y constantes
- #011 – Mi primer programa en C
Ejercicios propuestos
Lo prometido es deuda y por ello os dejo dos ejercicios propuestos para que practiquéis todo lo que hemos comentado en el programa y si os parece me lo enviéis para que pueda echar un vistazo a vuestra solución y por supuesto resolveos todas las dudas que se os planteen.
1. Crear un programa que defina la palabra «cadena» de tres maneras distintas, la imprima por pantalla y para terminar la copie de un string a otro usando la función que hemos visto durante el episodio de hoy.
https://gist.github.com/jmramirezpro/86b9ed9054665820c318
2. Define una cadena de tamaño 10 y copia sobre ella una de tamaño 17. En este caso ¿Qué es lo que ocurre?
https://gist.github.com/jmramirezpro/b356e3fc54cd034d8a10
La semana que viene, os pondré la solución a ambos ejercicios para que podáis contrastarlos con vuestras soluciones.
Hasta aquí este nuevo programa del podcast Código Fuente donde nuevamente hemos hablado de los tipos de datos en C en este caso más avanzados, como son los arrays y las cadenas de caracteres.
Como siempre, muchas gracias por el tiempo que habéis dedicado a escucharlo y deciros que estaría encantado de recibir vuestras valoraciones de 5 estrellas en iTunes para que el podcast llegue a más gente como vosotros.
Ya sabéis, si tenéis dudas o queréis mas información sobre lo hablado, podéis comentármelo en los comentarios de esta entrada, en el formulario de la web masqueteclas.com/contactar o en la cuenta de Twitter del podcast @CodigoFnte.
Quedamos de nuevo en Código Fuente donde aprender informática nunca a estado tan cerca de vosotros. Hasta entonces… Adiós!
—
Si te gusta este podcast y quieres ayudarme a mantenerlo, puedes contribuir haciendo tus compras a través de este enlace de afiliados de Amazon.es o mediante una donación en mi cuenta Paypal.Me. Muchas gracias!!