Want to create interactive content? It’s easy in Genially!

Get started free

Arreglos y Cadenas de texto

Juan Ángel Rojas Rodríguez

Created on August 15, 2023

Start designing with a free template

Discover more than 1500 professional designs like these:

Practical Presentation

Smart Presentation

Essential Presentation

Akihabara Presentation

Pastel Color Presentation

Modern Presentation

Relaxing Presentation

Transcript

wow

Arreglos y cadenas de texto

¡Vamos!

Arreglos

Los arreglos son estructuras de datos que nos permiten almacenar otros datos dentro de este tipo de datos. Es decir, es un contenedor que nos permite tener varios datos al mismo tiempo almacenados. Los arreglos también son conocidos por su nombre en inglés como "arrays". Realmente, lo que almacenan son variables con otros datos. Los datos que va a almacenar un arreglo pueden ser de distinto tipo, es decir, pueden almacenar cadenas de texto, números, "booleanos", etc., a excepción en algunos casos, como Swift, que solamente va almacenar un cierto tipo de datos. Una de las grandes ventajas de usar arreglos en un programa es que solamente necesitamos tener una variable declarada para poder guardar los demás datos y no es necesario crear 20, 30 o 100 variables dependiendo de la cantidad de información que vayamos a utilizar. Esto obviamente optimiza nuestro proceso de desarrollo, además de que hace más fácil y más clara la comprensión de nuestro programa.

Los vectores son un tipo de array (arreglos). Son, de hecho, un array de una sola dimensión y forman parte de la amplia variedad de estructuras de datos que nos ofrece C++, siendo además una de las principales y más útiles estructuras que podremos tener como herramienta de programación. Los vectores o arrays o arreglos de una dimensión (como los quieras llamar), son utilizados para almacenar múltiples valores en una única variable. En un aspecto más profundo, este tipo de arrays (vectores), permiten almacenar muchos valores en posiciones de memoria continuas, lo cual permite acceder a un valor u otro de manera rápida y sencilla. Estos valores pueden ser números, letras o cualquier tipo de variable que deseemos incluso tipos de datos complejos. En múltiples ocasiones es necesario almacenar gran cantidad de información en una variable y a menudo sucede que no conocemos con exactitud la cantidad de datos que debemos almacenar, pero sabemos que sí sería más de uno, como por ejemplo almacenar las identificaciones de las personas ingresadas al sistema. Los vectores, arreglos (arrays) de una dimensión (ya sabes cómo es) son una estructura que nos permite solucionar este tipo de problemas. ¿Cómo declarar un Array de una dimensión o Vector en C++? Para declarar un vector en C++, se deben seguir las mismas normas básicas que se siguen para declarar una variable cualquiera, con un pequeño cambio en la sintaxis. Para declarar un vector, arreglo o como lo quieras llamar, necesitaremos saber el tipo de los datos que irán al interior de este, es decir, serán número enteros, o numero decimales o cadenas de texto, etc. necesitamos también, como siempre, un nombre para el vector y un tamaño máximo. La sintaxis para declarar un vector en C++ es la siguiente: tipo_de_dato nombre_del_vector[tamanio]; Tenemos entonces, tal como mencioné antes, que para declarar un vector en C++, debemos definirle un tipo de los datos, sea entero, float, string, etc., debemos darle un nombre y al interior de los corchetes "[]" debemos poner el tamaño máximo que tendrá el vector, es decir la cantidad máxima de datos que podrá contener (recuerda que en C++ esto es necesario hacerlo). Veamos un ejemplo en el cual pondré la declaración de varios vectores de diferentes tipos y tamaños en C++.

Declaración de un Array unidimensional o Vector en C++int my_vector1[10]; float my_vector2[25]; string my_vector3[500]; bool my_vector4[1000]; char my_vector5[2]; Veamos rápidamente que representa cada línea del código anterior. Línea 1 Esta línea contiene la declaración de un vector llamado my_vector1, el cual contendrá un máximo de 10 elementos de tipo entero. Línea 2 Esta línea contiene la declaración de un vector llamado my_vector2, el cual contendrá un máximo de 25 elementos de tipo float. Línea 3 Esta línea contiene la declaración de un vector llamado my_vector3, el cual contendrá un máximo de 500 elementos de tipo string. Línea 4 Esta línea contiene la declaración de un vector llamado my_vector4, el cual contendrá un máximo de 1000 elementos de tipo booleano. Línea 5 Esta línea contiene la declaración de un vector llamado my_vector5, el cual contendrá un máximo de 2 elementos de tipo char. Ya que está claro cómo se declara un vector, vamos a ver cómo inicializarlo, es decir inicializar un vector en C++ o en otras palabras darle valores a un vector.

¿Cómo inicializar un Array o Vector en C++? En cuanto tenemos declarado un vector, es posible asignarle valores, evidentemente estos valores deben coincidir con el tipo de dato que le asignamos a dicho vector, no tendría sentido ingresar como valores de un vector cadenas de caracteres si el tipo de dato de dicho vector es numérico. Voy a mostrar a continuación formas distintas de inicializar un vector, todas son validas, ya es cuestión de nuestras necesidades y conocimientos determinar cuál es útil y en qué momento. Veamos entonces: Forma 1 de declarar un Array o Vector en C++ string vector[5] = {"5", "hola", "2.7", "8,9", "adios"}; Aquí hemos declarado un vector de tipo string tamaño 5 y lo hemos inicializado con diferentes valores, es necesario notar que cada valor va entre comillas dobles "" puesto que son strings. El valor inicial corresponde a la casilla o índice 0 y tiene el valor de "5", el índice 1 el valor es "hola" y el índice 4 el valor es "adiós", es importante notar que el primer índice de n array o vector no es el UNO sino que es el CERO. Forma 2 de declarar un Array o Vector en C++ int vector2[] = {1,2,3,4,10,9,80,70,19}; Aquí hemos declarado un vector de tipo int y no especificamos su tamaño, si el tamaño no se especifica entre los corchetes, el vector tendrá como tamaño el número de elementos incluidos en la llave, para este caso es 9.

Cadena de texto

Cadena de caracteres.Una cadena en C++ es un conjunto de caracteres, o valores de tipo "char", terminados con el carácter nulo. Internamente se almacenan en posiciones consecutivas de memoria en forma de arreglo.

Este tipo de estructuras recibe un tratamiento especial, y es de gran utilidad y de uso continuo. La manera de definir una cadena es la siguiente: char <identificador> [<longitud máxima>]; Cuando se declara una cadena hay que tener en cuenta que tendremos que reservar una posición para almacenar el carácter nulo, de modo que si queremos almacenar la cadena "HOLA", tendremos que declarar la cadena como: char Saludo[5]; Cuatro caracteres para "HOLA" y uno extra para el carácter '\000'. También nos será posible hacer referencia a cada uno de los caracteres individuales que componen la cadena, simplemente indicando la posición. Por ejemplo el tercer carácter de nuestra cadena de ejemplo será la 'L', podemos hacer referencia a él como Saludo[2]. Los índices tomarán valores empezando en el cero, así el primer carácter de nuestra cadena sería Saludo[0], que es la 'H'. Una cadena puede almacenar informaciones como nombres de personas, mensajes de error, números de teléfono, etc. El tratamiento de las cadenas de caracteres resulta muy importante, debido a la gran cantidad de información que ellas almacenan y su valor semántico. Algunas de las operaciones más importantes con cadenas, son: Copia de una cadena Cálculo de la longitud, Comparación, Concatenación, Extracción de subcadenas, Búsqueda de información dentro de las cadenas, Conversiones Que se muestran a continuación, según las contenidas en la biblioteca llamada string (string.h). Copia de cadenas Esta operación brinda la posibilidad de copiar el valor de una cadena para una variable de cadena dada. Con stpcpy(var_cadena, cadena2) se copia el valor de cadena2 para var_cadena. Ejemplo: El siguiente programa muestra la copia de la cadena frase1 a la cadena frase2.

Uso de strcpy #include <iostream.h> #include <string.h> void main() { char frase1[] = "Copiando cadena"; char frase2[80]; strcpy(frase2,frase1); cout << "Cadena # 1: " << frase1 << endl; cout << "Cadena # 2: " << frase2 << endl; } Si la cadena fuente es de longitud mayor que la cadena destino, se cae en el gravísimo error de sobrescribir después del final de la cadena fuente. Una variante de esta función y que ayuda a eliminar el efecto colateral arriba expresado es utilizar la función strncpy, stpncpy(var_cadena, cadena2, cantidad) que posee un tercer parámetro (cantidad) para indicar cuántos caracteres serán transferidos. Una vez transferidos los caracteres, debe escribirse en la cadena destino el carácter null. Uso de strcnpy #include <iostream.h> #include <string.h> void main(void) { char destino[10]; char origen[] = "abcdefghi"; strncpy(destino, origen, 3); destino[3] = '\0'; //Si esto no se hace, la salida es imprevisible cout << destino<< '\n'; } La salida sería: abc Es bueno destacar que si una cadena se define con un constructor corriente de arreglo, como en: char cadena[6]; no resultaría posible hacer: cadena = "casa"; // ERROR pues, como sabemos, no es posible aplicar el operador de asignación para arreglos completos. Entonces usaríamos: strcpy(cadena, "casa"); lo cual es mejor que la solución de copiar de una cadena para otra carácter a carácter: for(i = 0; i < strlen(cadena2); i++) var_cadena[i] = cadena2[i]; var_cadena[i] = '\0'; // carácter nulo de terminación }

FIN