SlideShare una empresa de Scribd logo
Arrays, arreglos o vectores en C++. Uso,
declaración y sintaxis de los vectores en
C++
Clase 09
Arrays, arreglos o vectores en C++. Uso,
declaración y sintaxis de los vectores en C++
• Los arrays, arreglos o vectores 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.
Arrays, arreglos o vectores en C++. Uso,
declaración y sintaxis de los vectores en C++
• Los arrays, arreglos o vectores (como los quieras llamar), son
utilizados para almacenar múltiples valores en una única variable.
En un aspecto más profundo, los arrays, 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 propios.
Arrays, arreglos o vectores en C++. Uso,
declaración y sintaxis de los vectores en C++
• 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 arrays,
arreglos o vectores son una estructura que nos permite solucionar este
tipo de problemas. Para explicar mejor de lo que hablo, pongamos un
ejemplo:
Ejemplo de Arrays o Vectores en C++
• Imaginemos que queremos crear un programa con el cual podamos de algún
modo almacenar los títulos y los autores de diferentes libros. El usuario es el
encargado de suministrar la información de cada libro, así entonces, dado que
es el usuario quien lo hace, nosotros no tenemos manera alguna de saber
cuántos libros va querer él ingresar por medio de nuestro programa. El caso
principal es que queremos almacenar en la memoria el titulo y el autor de
TODOS y cada uno de los libros. Entonces ¿cómo crees que podrías hacer esto?
Con lo que sabemos hasta hora, se nos podrían ocurrir un par de cosas. Veamos:
Posible Solución 1: Sin usar vectores
(errónea):
• Podríamos pensar primero, "listo, está bien, es fácil, declaro una
variable llamada titulo y otra autor, ambas de tipo string y se las pido al
usuario", pues bien, esta solución digamos que nos permite almacenar la
información del primer libro que el usuario ingrese, pero en cuanto
desee ingresar otro libro ¿qué vamos a hacer?, si lo hacemos así,
cuando el usuario ingrese la información para un nuevo libro, va a
sobrescribir los valores anteriores y habremos perdido la información del
primero, de manera que esta solución no es válida.
Posible Solución 2: Sin usar vectores o
matrices (errónea):
• Pensando un poco más en esto, se nos ocurre una forma de almacenar la
información de cada libro, podríamos crear un par de variables distintas para
cada libro. Pero de inmediato nos damos cuenta que si por ejemplo al
usuario se le cruzara por la cabeza ingresa información para 10 libros
tendríamos entonces ¡20 variables distintas!, 2 por cada libro, no es mucho,
pero si se le ocurriera ingresar 1000 libros, ¿estarías dispuesto a declarar 2000
variables?. De modo que esta alternativa es incluso peor que la anterior y
seguimos aún sin solucionar nuestro problema.
Posible Solución 3: Usando vectores o
matrices (correcta):
• Pues bien!, tal y como mencioné antes, los arrays o los vectores han venido para
ayudarnos en múltiples circunstancia similares a esta. Dado que un array, arreglo o
vector es capaz de almacenar múltiples valores en una misma variable, tenemos el
elemento perfecto para almacenar la información de todos los libros, podremos crear un
vector de un tamaño cualquiera capaz de contener en sí los nombres de los autores y
otro con los títulos de los libros o alternativamente podríamos crear una matriz de dos
columnas que contenga en la primera columna los autores y en la segunda los títulos;
ambas soluciones son validas y vamos a ver ambas.
Posible Solución 3: Usando vectores o
matrices (correcta):
• Nota: En C++, a diferencia de algunos otros lenguajes de programación,
los vectores y las matrices presentan un "inconveniente" con el tamaño.
Es decir, no es posible crear de una manera sencilla un vector capaz de
almacenar una cantidad de información indefinida, es necesario ingresar
con antelación la cantidad de datos (tamaño) que el vector o la matriz
tendrá. Este problema se puede solucionar, pero es algo que no veremos
en esta sección. Si buscas cómo crear vectores de tamaño dinámico o
matrices de tamaño dinámico, te el uso de Punteros en C++.
Posible Solución 3: Usando vectores o
matrices (correcta):
• Nota: En C++, a diferencia de algunos otros lenguajes de programación,
los vectores y las matrices presentan un "inconveniente" con el tamaño.
Es decir, no es posible crear de una manera sencilla un vector capaz de
almacenar una cantidad de información indefinida, es necesario ingresar
con antelación la cantidad de datos (tamaño) que el vector o la matriz
tendrá. Este problema se puede solucionar, pero es algo que no veremos
en esta sección. Si buscas cómo crear vectores de tamaño dinámico o
matrices de tamaño dinámico, te el uso de Punteros en C++.
Posible Solución 3: Usando vectores o
matrices (correcta):
• Muy bien, ahora que sabemos la gran utilidad de los
arrays, vectores o arreglos para nosotros, aprendamos
más acerca de estos, veamos como declarar un vector,
array o arreglo, como recorrer un vector y algunos
ejemplos de esto.
¿Cómo declarar un Array 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.
¿Cómo declarar un Array o Vector en C++?
• La sintaxis para declarar un vector en C++ es la
siguiente:
¿Cómo declarar un Array o Vector en C++?
• 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 o Vector en C++
Declaración de un Array o Vector en C++
• Veamos rápidamente que representa cada línea del código
anterior.
Declaración de un Array o Vector en C++
• 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.
Declaración de un Array o Vector en C++
• 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.
Declaración de un Array o Vector en C++
• 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++
Forma 1 de declarar un Array o Vector en C++
• 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++
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.
Particularidades de los Arrays, arreglos o
Vectores en C++
• Con C++, existen algunas particularidades, en cuanto a la
declaración de vectores, que me parece importante destacara
para que en momento de quizá caer en ellas comprender como
podrían cambiar las cosas o básicamente en que consiste el error,
veamos:
Particularidad 1 al momento de declarar o
inicializar un Vector o Array en C++
Particularidad 1 al momento de declarar o
inicializar un Vector o Array en C++
• Dadas las características de C++, es fácil pensar que es factible crear o
declarar un vector de un tamaño cualquiera y posteriormente
inicializarlos de forma habitual como se muestra en este código, sin
embargo hacer esto es un error, si declaramos un vector y no lo
inicializamos inmediatamente, no es posible inicializarlo de la forma que
hemos visto, es decir entre llaves cada valor, como en la línea 2 del
código anterior.
Particularidad 1 al momento de declarar o
inicializar un Vector o Array en C++
• La única forma de inicializar el vector, o mejor dicho, darle valores a
cada una de sus casillas, es hacerlo uno por uno, es decir darle un valor
a la casilla cero a la uno y a la 2 (para un vector de tamaño 3). Por
defecto, al declarar un vector sin ser inicializado, cada una de las
casillas de este vector toma como valor el valor por defecto del tipo de
variable, para el caso de los enteros (int) es -858993460. Así entonces
para asignar valores a cada casilla lo hacemos así:
Particularidad 1 al momento de declarar o
inicializar un Vector o Array en C++
Particularidad 1 al momento de declarar o
inicializar un Vector o Array en C++
• Es importante notar en este código, que el número que va entre
corchetes ya no indica tamaño (pues vector2 ya está declarado) sino que
indica el índice o el numero de la casilla con la cual estaremos operando
(recordemos que el primer índice es cero y no uno), en el código
anterior, habíamos declarado un vector de tamaño 3, por lo cual
debíamos asignar valores a los índices 0, 1 y 2.
Particularidad 2 al momento de declarar o
inicializar un Vector o Array en C++
Particularidad 2 al momento de declarar o
inicializar un Vector o Array en C++
• En C++ a la hora de inicializar un array, arreglo o Vector, estamos acostumbrados a
que si inicializamos inmediatamente después de declarar el vector, debemos poner
la misma cantidad de elementos al interior de las llaves de manera que corresponda
con el tamaño del vector, pues bien, estos es lo más recomendable, sin embargo si
ponemos una cantidad de elementos menor a la del tamaño real del vector, estamos
queriendo decir que estos elementos toman los valores puestos entre las llaves y los
demás serian cero, para el caso del código anterior el primer elemento (el del
índice cero) va a tener un valor de 10.5 y los otros 4 elementos van a valer cero.
Particularidad 2 al momento de declarar o
inicializar un Vector o Array en C++
• Ya tenemos claro cómo declarar un array o vector en C++, algunas
características un tanto particulares de estos, sin embargo aun no
sabemos cómo obtener los datos de un array, es decir una vez el
array o vector este lleno con los elementos que queremos, como
podemos obtener esa información y más aun, como obtener un
valor específico dentro del array. Veámoslo:
Obtener el valor de una casilla específica en
un array en C++
• Es muy común el caso en el que tenemos un vector con una enorme
cantidad de elementos, sin embargo de todos estos, solo nos interesa
uno en especial y corremos con la suerte de saber cuál es su índice,
sabiendo el índice de un elemento en un array es bastante sencillo
obtener el valor de este:
•
Obtener el valor de una casilla específica en
un array en C++
•
Obtener el valor de una casilla específica en
un array en C++
• Como podemos ver, para acceder a un valor específico conociendo el índice del
elemento, solo basta con escribir dicho índice entre los corchetes "[ ]", recuerda
que el índice comienza desde cero, así por lo tanto en un vector de 5 elementos
(como el del ejemplo), el último elemento esta en el índice 4 y el primer elemento
del array en el índice 0.
• Ya tenemos entonces una forma de acceder de forma individual a un elemento de
un array o vector, vamos a ver ahora como recuperar todos los elementos de un
vector de forma simple.
Recorrer un Array o Vector en C++
• Para obtener todos los datos que se encuentran al interior de un
vector, es necesario recorrer el array o vector, para recorrerlo, se
usa casi siempre un ciclo for, en algunos casos mas específicos un
ciclo while, pero generalmente el ciclo for es el ideal para esto,
dado que conocemos el tamaño del array.
Recorrer un Array o Vector en C++
• La lógica de este procedimiento es la siguiente, el ciclo for comenzara
desde cero e ira hasta el tamaño del vector, de modo que la variable de
control que generalmente llamamos "i", será la que va a ir variando
entre cero y el tamaño del array, de esta forma al poner la i al interior
de los corchetes, estaremos accediendo al valor de cada casilla del
vector y podremos hacer lo que sea necesario con dicho valor, veamos:
Recorrer un Array o Vector en C++
• Nota: A veces no es posible determinar con facilidad el tamaño exacto de un
vector, pero en C++ existen varias formas de determinar el tamaño de un array
o vector fácilmente, aquí explicare un método. Cabe notar que este tamaño es
el que ira como tope del ciclo for y sería equivalente a que nosotros mismos, en
caso de saber el tamaño del vector, lo pongamos allí, sin embargo como
veremos en otra sesión no siempre es posible saber con certeza el tamaño de un
vector, es por esto que explico cómo hacerlo.
Recorrer un Array o Vector en C++
Recorrer un Array o Vector en C++
Recorrer un Array o Vector en C++
• Vamos a ver de forma resumida en qué consiste y que hace cada una de estas líneas
• Línea 1:
• Tenemos en la primera línea la declaración de un vector que contiene las edades de
12 personas, notemos que entre los corchetes no se puso ningún numero, pues no es
necesario, ya que el vector tendrá el tamaño según la cantidad de elementos que
declaremos entre las llaves, evidentemente si pusiéramos un 12 entre los corchetes,
no habría ningún problema.
Recorrer un Array o Vector en C++
• Vamos a ver de forma resumida en qué consiste y que hace cada una de estas líneas
• Línea 1:
• Tenemos en la primera línea la declaración de un vector que contiene las edades de
12 personas, notemos que entre los corchetes no se puso ningún numero, pues no es
necesario, ya que el vector tendrá el tamaño según la cantidad de elementos que
declaremos entre las llaves, evidentemente si pusiéramos un 12 entre los corchetes,
no habría ningún problema.
Recorrer un Array o Vector en C++
• Línea 2:
• En la segunda línea, tenemos la declaración del límite del ciclo o en otras palabras el tamaño
del array. El tamaño de un array se puede calcular de varias formas, aquí lo obtenemos
calculando el tamaño del array entero, dividido por el tamaño del primer elemento de dicho
array, para mas detalles de esto, verifica la información sobre el operador sizeof.
• Para más información visitar:
• http://www.programacionenc.net/index.php?option=com_content&view=article&id=113:para-
que-sirve-la-funcion-sizeof&catid=31:general&Itemid=41
Recorrer un Array o Vector en C++
• Línea 3 a 6:
• Desde la tercera línea hasta la sexta, tenemos entonces un ciclo for
que comienza en cero y termina en el límite (es importante notar que
la condición usada es estrictamente menor "<" y no menor o igual
"<="), al interior de este ciclo, es donde accedemos a cada uno de los
elementos del vector por medio de la sintaxis explicada
anteriormente.
Recorrer un Array o Vector en C++
• Línea 5:
• La quinta línea es quizá la más vital aunque sin las demás no tendríamos nada.
En esta línea, estamos accediendo a cada uno de los elementos del array de
edades, un elemento por cada vuelta que da el ciclo, accedemos a cada
elemento poniendo entre los corchetes la variable i, que es la que esta
cambiando a medida que el ciclo va girando, así estaremos accediendo a todos
los elementos e imprimiéndolos por pantalla
Recorrer un Array o Vector en C++
• Muy bien, llego el momento de afianzar nuestros conocimientos
viendo un ejemplo. Ahora que tenemos claro como declarar un
vector en C++, como recorrerlo y como acceder a sus datos,
vamos a ver un ejemplo basado en el problema que se planteo
al inicio de esta sesión.
Ejemplo 1 de Arrays o Vectores en C++
• El problema es simple, queremos crear un programa con el cual
podamos guardar los títulos y los autores de diferentes libros sin
perder ninguno de ellos. El usuario es el encargado de suministrar la
información de cada libro. Vamos a suponer que el usuario solo podrá
ingresar un máximo de 5 libros, para así tener un tamaño de vector
fijo. Veamos entonces como se haría esto:
Ejemplo 1 de Arrays o Vectores en C++
Ejemplo 1 de Arrays o Vectores en C++
Ejemplo 1 de Arrays o Vectores en C++
• Hay que considerar que el tipo de dato que estamos usando para
los vectores de títulos y autores es char por lo tanto debes
ingresar un único carácter cuando pruebes el algoritmo, pues de lo
contrario el comportamiento será un poco extraño (aunque tiene
su explicación). A continuación haremos este mismo ejemplo pero
usando cadenas de texto completas (strings) para poder ingresar
sin problemas más de una letra.
Ejemplo 1 mejorado
• Vamos a solucionar el mismo problema, pero esta vez lo haremos
bien. Vamos a utilizar cadenas de texto completas (string) de
modo que al ingresar un titulo o un autor podamos poner textos
completos:
Ejemplo 1 mejorado
Ejemplo 1 mejorado
Ejemplo 1 mejorado
• Muy bien, tal como dije en el ejemplo anterior ahora ya podemos
ingresar más de un carácter para el título y los autores (tal y como debe
ser) y nuestro algoritmo funciona aún mejor. Puedes ver que los únicos
cambios necesarios fueron importar la librería string y poner los tipos de
datos como string en vez de char y eso solucionó por completo nuestro
problema. Ten en cuenta que en versiones antiguas de compiladores usar
la funcion cin para leer strings genera un error así que asegurate de usar
una versión reciente o usa entonces la función getline.
Ejemplo perfeccionado
• En la versión del ejemplo anterior tenemos un problema un poco delicado, y es que
cuando ingresamos el título del libro o el autor de este con espacios, es decir, más
de una palabra (habitualmente es así) el objeto cin interpresta esto como un fin de
línea y no nos solicita el siguiente valor. Para solucionar esto haremos uso de la
funciín getline (la que mencioné hace un momento) que nos permite solucionar este
tipo de problemas. Vamos a solucionar el mismo problema, pero esta vez lo haremos
bien. Vamos a utilizar cadenas de texto completas (string) de modo que al ingresar
un titulo o un autor podamos poner textos completos.
Ejemplo 1 mejorado
Ejemplo 1 mejorado
Ejemplo perfeccionado
• Como puedes apreciar, hemos reemplazado las líneas que usaban
cin para leer los datos por la función getline(...) que recibe como
primer argumento el flujo de entrada de cin y como segundo
argumento la variable en la que queremos poner el valor.

Más contenido relacionado

PPTX
Arrays, arreglos o vectores en c++
PDF
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
DOCX
Diferenciacion numerica
PDF
Entregable 1 calculo vectorial
PDF
P. estructurada vs. programación orientada a objetos
PPTX
Método de la regla falsa (o metodo de la falsa posición)
PPTX
Diferenciación numérica Metodos Numericos
DOCX
Teorema fundamental del cálculo
Arrays, arreglos o vectores en c++
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
Diferenciacion numerica
Entregable 1 calculo vectorial
P. estructurada vs. programación orientada a objetos
Método de la regla falsa (o metodo de la falsa posición)
Diferenciación numérica Metodos Numericos
Teorema fundamental del cálculo

La actualidad más candente (20)

DOCX
Ejemplo de uno a uno
PPTX
PPTX
Lista, pilas y colas
PPTX
Bases de datos dinamicas y estaticas
PDF
Interpolación método de Lagrange
PDF
Metodo burbuja
PPTX
Pilas, colas, y listas estructura de datos
PDF
Presentacion metodos numerico teoria de errores
PPTX
Unidad 4 calculo integral
PPTX
Teorema fundamental del cálculo
PPTX
Recursividad directa e indirecta
DOCX
Investigacion derivada-de-una-curva-en-forma-parametrica
PDF
Ejercicios (Algoritmo: Pseudocódigo-Diagrama de Flujo)
PPTX
Transformaciones lineales de la reflexión y rotación en forma matricial en 2D
PPTX
Teorema de la serie de fourier
DOCX
Modelado Orientado a Objetos
PDF
Evolución de los sgbd
PPTX
Eladoraciòn de un programa en C++ (Cuadro Mágico)
DOCX
Matrices y conclusiones
PPTX
Tipos de atributos y tipos de relaciones
Ejemplo de uno a uno
Lista, pilas y colas
Bases de datos dinamicas y estaticas
Interpolación método de Lagrange
Metodo burbuja
Pilas, colas, y listas estructura de datos
Presentacion metodos numerico teoria de errores
Unidad 4 calculo integral
Teorema fundamental del cálculo
Recursividad directa e indirecta
Investigacion derivada-de-una-curva-en-forma-parametrica
Ejercicios (Algoritmo: Pseudocódigo-Diagrama de Flujo)
Transformaciones lineales de la reflexión y rotación en forma matricial en 2D
Teorema de la serie de fourier
Modelado Orientado a Objetos
Evolución de los sgbd
Eladoraciòn de un programa en C++ (Cuadro Mágico)
Matrices y conclusiones
Tipos de atributos y tipos de relaciones
Publicidad

Destacado (20)

PPT
Arreglos en C
PPTX
Arreglos c++
PPTX
Presentación plataforma virtual
DOCX
Arreglos C++
PPTX
Condicional if en c++
PPTX
Tipos de datos ok
PPTX
Solución examen 1 con ollydbg
PPTX
Elementos basicos c++
PPTX
Ollydbg introducción
PPTX
Ejercicio 2 con ollydbg
PPTX
Trabajando pescando y revirtiendo seriales con ollydbg
PPTX
Introducción
PDF
Arreglos en c ++
PPTX
Clase 14 ondas reflejadas
PPTX
Clase 7 ondas electromagneticas
PPTX
Pse int
PPTX
Sentencia, secuencia y bloque
PPTX
Clase 0 presentación
PPTX
Elementos basicos c++
PPTX
Simulación en promodel clase 04
Arreglos en C
Arreglos c++
Presentación plataforma virtual
Arreglos C++
Condicional if en c++
Tipos de datos ok
Solución examen 1 con ollydbg
Elementos basicos c++
Ollydbg introducción
Ejercicio 2 con ollydbg
Trabajando pescando y revirtiendo seriales con ollydbg
Introducción
Arreglos en c ++
Clase 14 ondas reflejadas
Clase 7 ondas electromagneticas
Pse int
Sentencia, secuencia y bloque
Clase 0 presentación
Elementos basicos c++
Simulación en promodel clase 04
Publicidad

Similar a Arrays, arreglos o vectores en c++ (20)

PPTX
Sesion 10 Arreglos Vectores y matrices.pptx
PPTX
PPTX
PPTX
Lenguaje de Programacion - Java
DOC
Vectores y matrices
PPTX
Punteros y elementos dinámicos en c++
PPTX
Arreglos y matrices c++
PPTX
Matrices
PPTX
Matrices
PPT
Presentación de c #
PPTX
Vectores, array y sus métodos
PPTX
Mod2ud1 2
DOCX
Matrices en c
PDF
cap10.pdf
PPTX
PDF
13 arreglos -tema13
PPTX
Tipos de datos primitivos en c++
DOC
1 herramientas desarrollo de software
PPTX
Programacion
PPTX
Programacion
Sesion 10 Arreglos Vectores y matrices.pptx
Lenguaje de Programacion - Java
Vectores y matrices
Punteros y elementos dinámicos en c++
Arreglos y matrices c++
Matrices
Matrices
Presentación de c #
Vectores, array y sus métodos
Mod2ud1 2
Matrices en c
cap10.pdf
13 arreglos -tema13
Tipos de datos primitivos en c++
1 herramientas desarrollo de software
Programacion
Programacion

Más de Tensor (20)

PDF
Libertad
PPTX
Método de la regla falsa (o metodo de la falsa posición)
PPTX
Metodo de la bisección
PPTX
Transito vehicular
PPTX
Teoria de colas
PDF
Practica 7 2016
PDF
Practica 6 2016
PPTX
Game maker
PDF
Practica 5 2016
PPTX
Procesamiento de archivos
PPTX
Cadenas y funciones de cadena
PDF
Reduccion de orden
PDF
Variación+de+parametros
PDF
Coeficientes indeterminados enfoque de superposición
PDF
Bernoulli y ricatti
PDF
Practica no. 3 tiempo de servicio
PDF
Ondas em
PDF
Practicas 8 2016
PPTX
Sentencia, secuencia y bloque
PDF
Practica 4 2016
Libertad
Método de la regla falsa (o metodo de la falsa posición)
Metodo de la bisección
Transito vehicular
Teoria de colas
Practica 7 2016
Practica 6 2016
Game maker
Practica 5 2016
Procesamiento de archivos
Cadenas y funciones de cadena
Reduccion de orden
Variación+de+parametros
Coeficientes indeterminados enfoque de superposición
Bernoulli y ricatti
Practica no. 3 tiempo de servicio
Ondas em
Practicas 8 2016
Sentencia, secuencia y bloque
Practica 4 2016

Último (20)

PDF
Unidad de Aprendizaje 5 de Matematica 2do Secundaria Ccesa007.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
Ernst Cassirer - Antropologia Filosofica.pdf
PDF
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
PDF
informe tipos de Informatica perfiles profesionales _pdf
PDF
Atencion prenatal. Ginecologia y obsetricia
PDF
Introducción a la historia de la filosofía
PDF
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
DOCX
PLANES DE área ciencias naturales y aplicadas
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
DOCX
Programa_Sintetico_Fase_4.docx 3° Y 4°..
PDF
Introduccion a la Investigacion Cualitativa FLICK Ccesa007.pdf
PDF
EL aprendizaje adaptativo bajo STEM+H.pdf
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
PDF
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
Unidad de Aprendizaje 5 de Matematica 2do Secundaria Ccesa007.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
Ernst Cassirer - Antropologia Filosofica.pdf
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
informe tipos de Informatica perfiles profesionales _pdf
Atencion prenatal. Ginecologia y obsetricia
Introducción a la historia de la filosofía
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PLANES DE área ciencias naturales y aplicadas
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
Programa_Sintetico_Fase_4.docx 3° Y 4°..
Introduccion a la Investigacion Cualitativa FLICK Ccesa007.pdf
EL aprendizaje adaptativo bajo STEM+H.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf

Arrays, arreglos o vectores en c++

  • 1. Arrays, arreglos o vectores en C++. Uso, declaración y sintaxis de los vectores en C++ Clase 09
  • 2. Arrays, arreglos o vectores en C++. Uso, declaración y sintaxis de los vectores en C++ • Los arrays, arreglos o vectores 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.
  • 3. Arrays, arreglos o vectores en C++. Uso, declaración y sintaxis de los vectores en C++ • Los arrays, arreglos o vectores (como los quieras llamar), son utilizados para almacenar múltiples valores en una única variable. En un aspecto más profundo, los arrays, 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 propios.
  • 4. Arrays, arreglos o vectores en C++. Uso, declaración y sintaxis de los vectores en C++ • 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 arrays, arreglos o vectores son una estructura que nos permite solucionar este tipo de problemas. Para explicar mejor de lo que hablo, pongamos un ejemplo:
  • 5. Ejemplo de Arrays o Vectores en C++ • Imaginemos que queremos crear un programa con el cual podamos de algún modo almacenar los títulos y los autores de diferentes libros. El usuario es el encargado de suministrar la información de cada libro, así entonces, dado que es el usuario quien lo hace, nosotros no tenemos manera alguna de saber cuántos libros va querer él ingresar por medio de nuestro programa. El caso principal es que queremos almacenar en la memoria el titulo y el autor de TODOS y cada uno de los libros. Entonces ¿cómo crees que podrías hacer esto? Con lo que sabemos hasta hora, se nos podrían ocurrir un par de cosas. Veamos:
  • 6. Posible Solución 1: Sin usar vectores (errónea): • Podríamos pensar primero, "listo, está bien, es fácil, declaro una variable llamada titulo y otra autor, ambas de tipo string y se las pido al usuario", pues bien, esta solución digamos que nos permite almacenar la información del primer libro que el usuario ingrese, pero en cuanto desee ingresar otro libro ¿qué vamos a hacer?, si lo hacemos así, cuando el usuario ingrese la información para un nuevo libro, va a sobrescribir los valores anteriores y habremos perdido la información del primero, de manera que esta solución no es válida.
  • 7. Posible Solución 2: Sin usar vectores o matrices (errónea): • Pensando un poco más en esto, se nos ocurre una forma de almacenar la información de cada libro, podríamos crear un par de variables distintas para cada libro. Pero de inmediato nos damos cuenta que si por ejemplo al usuario se le cruzara por la cabeza ingresa información para 10 libros tendríamos entonces ¡20 variables distintas!, 2 por cada libro, no es mucho, pero si se le ocurriera ingresar 1000 libros, ¿estarías dispuesto a declarar 2000 variables?. De modo que esta alternativa es incluso peor que la anterior y seguimos aún sin solucionar nuestro problema.
  • 8. Posible Solución 3: Usando vectores o matrices (correcta): • Pues bien!, tal y como mencioné antes, los arrays o los vectores han venido para ayudarnos en múltiples circunstancia similares a esta. Dado que un array, arreglo o vector es capaz de almacenar múltiples valores en una misma variable, tenemos el elemento perfecto para almacenar la información de todos los libros, podremos crear un vector de un tamaño cualquiera capaz de contener en sí los nombres de los autores y otro con los títulos de los libros o alternativamente podríamos crear una matriz de dos columnas que contenga en la primera columna los autores y en la segunda los títulos; ambas soluciones son validas y vamos a ver ambas.
  • 9. Posible Solución 3: Usando vectores o matrices (correcta): • Nota: En C++, a diferencia de algunos otros lenguajes de programación, los vectores y las matrices presentan un "inconveniente" con el tamaño. Es decir, no es posible crear de una manera sencilla un vector capaz de almacenar una cantidad de información indefinida, es necesario ingresar con antelación la cantidad de datos (tamaño) que el vector o la matriz tendrá. Este problema se puede solucionar, pero es algo que no veremos en esta sección. Si buscas cómo crear vectores de tamaño dinámico o matrices de tamaño dinámico, te el uso de Punteros en C++.
  • 10. Posible Solución 3: Usando vectores o matrices (correcta): • Nota: En C++, a diferencia de algunos otros lenguajes de programación, los vectores y las matrices presentan un "inconveniente" con el tamaño. Es decir, no es posible crear de una manera sencilla un vector capaz de almacenar una cantidad de información indefinida, es necesario ingresar con antelación la cantidad de datos (tamaño) que el vector o la matriz tendrá. Este problema se puede solucionar, pero es algo que no veremos en esta sección. Si buscas cómo crear vectores de tamaño dinámico o matrices de tamaño dinámico, te el uso de Punteros en C++.
  • 11. Posible Solución 3: Usando vectores o matrices (correcta): • Muy bien, ahora que sabemos la gran utilidad de los arrays, vectores o arreglos para nosotros, aprendamos más acerca de estos, veamos como declarar un vector, array o arreglo, como recorrer un vector y algunos ejemplos de esto.
  • 12. ¿Cómo declarar un Array 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.
  • 13. ¿Cómo declarar un Array o Vector en C++? • La sintaxis para declarar un vector en C++ es la siguiente:
  • 14. ¿Cómo declarar un Array o Vector en C++? • 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++.
  • 15. Declaración de un Array o Vector en C++
  • 16. Declaración de un Array o Vector en C++ • Veamos rápidamente que representa cada línea del código anterior.
  • 17. Declaración de un Array o Vector en C++ • 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.
  • 18. Declaración de un Array o Vector en C++ • 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.
  • 19. Declaración de un Array o Vector en C++ • 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.
  • 20. ¿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:
  • 21. Forma 1 de declarar un Array o Vector en C++
  • 22. Forma 1 de declarar un Array o Vector en C++ • 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.
  • 23. Forma 2 de declarar un Array o Vector en C++ 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.
  • 24. Particularidades de los Arrays, arreglos o Vectores en C++ • Con C++, existen algunas particularidades, en cuanto a la declaración de vectores, que me parece importante destacara para que en momento de quizá caer en ellas comprender como podrían cambiar las cosas o básicamente en que consiste el error, veamos:
  • 25. Particularidad 1 al momento de declarar o inicializar un Vector o Array en C++
  • 26. Particularidad 1 al momento de declarar o inicializar un Vector o Array en C++ • Dadas las características de C++, es fácil pensar que es factible crear o declarar un vector de un tamaño cualquiera y posteriormente inicializarlos de forma habitual como se muestra en este código, sin embargo hacer esto es un error, si declaramos un vector y no lo inicializamos inmediatamente, no es posible inicializarlo de la forma que hemos visto, es decir entre llaves cada valor, como en la línea 2 del código anterior.
  • 27. Particularidad 1 al momento de declarar o inicializar un Vector o Array en C++ • La única forma de inicializar el vector, o mejor dicho, darle valores a cada una de sus casillas, es hacerlo uno por uno, es decir darle un valor a la casilla cero a la uno y a la 2 (para un vector de tamaño 3). Por defecto, al declarar un vector sin ser inicializado, cada una de las casillas de este vector toma como valor el valor por defecto del tipo de variable, para el caso de los enteros (int) es -858993460. Así entonces para asignar valores a cada casilla lo hacemos así:
  • 28. Particularidad 1 al momento de declarar o inicializar un Vector o Array en C++
  • 29. Particularidad 1 al momento de declarar o inicializar un Vector o Array en C++ • Es importante notar en este código, que el número que va entre corchetes ya no indica tamaño (pues vector2 ya está declarado) sino que indica el índice o el numero de la casilla con la cual estaremos operando (recordemos que el primer índice es cero y no uno), en el código anterior, habíamos declarado un vector de tamaño 3, por lo cual debíamos asignar valores a los índices 0, 1 y 2.
  • 30. Particularidad 2 al momento de declarar o inicializar un Vector o Array en C++
  • 31. Particularidad 2 al momento de declarar o inicializar un Vector o Array en C++ • En C++ a la hora de inicializar un array, arreglo o Vector, estamos acostumbrados a que si inicializamos inmediatamente después de declarar el vector, debemos poner la misma cantidad de elementos al interior de las llaves de manera que corresponda con el tamaño del vector, pues bien, estos es lo más recomendable, sin embargo si ponemos una cantidad de elementos menor a la del tamaño real del vector, estamos queriendo decir que estos elementos toman los valores puestos entre las llaves y los demás serian cero, para el caso del código anterior el primer elemento (el del índice cero) va a tener un valor de 10.5 y los otros 4 elementos van a valer cero.
  • 32. Particularidad 2 al momento de declarar o inicializar un Vector o Array en C++ • Ya tenemos claro cómo declarar un array o vector en C++, algunas características un tanto particulares de estos, sin embargo aun no sabemos cómo obtener los datos de un array, es decir una vez el array o vector este lleno con los elementos que queremos, como podemos obtener esa información y más aun, como obtener un valor específico dentro del array. Veámoslo:
  • 33. Obtener el valor de una casilla específica en un array en C++ • Es muy común el caso en el que tenemos un vector con una enorme cantidad de elementos, sin embargo de todos estos, solo nos interesa uno en especial y corremos con la suerte de saber cuál es su índice, sabiendo el índice de un elemento en un array es bastante sencillo obtener el valor de este: •
  • 34. Obtener el valor de una casilla específica en un array en C++ •
  • 35. Obtener el valor de una casilla específica en un array en C++ • Como podemos ver, para acceder a un valor específico conociendo el índice del elemento, solo basta con escribir dicho índice entre los corchetes "[ ]", recuerda que el índice comienza desde cero, así por lo tanto en un vector de 5 elementos (como el del ejemplo), el último elemento esta en el índice 4 y el primer elemento del array en el índice 0. • Ya tenemos entonces una forma de acceder de forma individual a un elemento de un array o vector, vamos a ver ahora como recuperar todos los elementos de un vector de forma simple.
  • 36. Recorrer un Array o Vector en C++ • Para obtener todos los datos que se encuentran al interior de un vector, es necesario recorrer el array o vector, para recorrerlo, se usa casi siempre un ciclo for, en algunos casos mas específicos un ciclo while, pero generalmente el ciclo for es el ideal para esto, dado que conocemos el tamaño del array.
  • 37. Recorrer un Array o Vector en C++ • La lógica de este procedimiento es la siguiente, el ciclo for comenzara desde cero e ira hasta el tamaño del vector, de modo que la variable de control que generalmente llamamos "i", será la que va a ir variando entre cero y el tamaño del array, de esta forma al poner la i al interior de los corchetes, estaremos accediendo al valor de cada casilla del vector y podremos hacer lo que sea necesario con dicho valor, veamos:
  • 38. Recorrer un Array o Vector en C++ • Nota: A veces no es posible determinar con facilidad el tamaño exacto de un vector, pero en C++ existen varias formas de determinar el tamaño de un array o vector fácilmente, aquí explicare un método. Cabe notar que este tamaño es el que ira como tope del ciclo for y sería equivalente a que nosotros mismos, en caso de saber el tamaño del vector, lo pongamos allí, sin embargo como veremos en otra sesión no siempre es posible saber con certeza el tamaño de un vector, es por esto que explico cómo hacerlo.
  • 39. Recorrer un Array o Vector en C++
  • 40. Recorrer un Array o Vector en C++
  • 41. Recorrer un Array o Vector en C++ • Vamos a ver de forma resumida en qué consiste y que hace cada una de estas líneas • Línea 1: • Tenemos en la primera línea la declaración de un vector que contiene las edades de 12 personas, notemos que entre los corchetes no se puso ningún numero, pues no es necesario, ya que el vector tendrá el tamaño según la cantidad de elementos que declaremos entre las llaves, evidentemente si pusiéramos un 12 entre los corchetes, no habría ningún problema.
  • 42. Recorrer un Array o Vector en C++ • Vamos a ver de forma resumida en qué consiste y que hace cada una de estas líneas • Línea 1: • Tenemos en la primera línea la declaración de un vector que contiene las edades de 12 personas, notemos que entre los corchetes no se puso ningún numero, pues no es necesario, ya que el vector tendrá el tamaño según la cantidad de elementos que declaremos entre las llaves, evidentemente si pusiéramos un 12 entre los corchetes, no habría ningún problema.
  • 43. Recorrer un Array o Vector en C++ • Línea 2: • En la segunda línea, tenemos la declaración del límite del ciclo o en otras palabras el tamaño del array. El tamaño de un array se puede calcular de varias formas, aquí lo obtenemos calculando el tamaño del array entero, dividido por el tamaño del primer elemento de dicho array, para mas detalles de esto, verifica la información sobre el operador sizeof. • Para más información visitar: • http://www.programacionenc.net/index.php?option=com_content&view=article&id=113:para- que-sirve-la-funcion-sizeof&catid=31:general&Itemid=41
  • 44. Recorrer un Array o Vector en C++ • Línea 3 a 6: • Desde la tercera línea hasta la sexta, tenemos entonces un ciclo for que comienza en cero y termina en el límite (es importante notar que la condición usada es estrictamente menor "<" y no menor o igual "<="), al interior de este ciclo, es donde accedemos a cada uno de los elementos del vector por medio de la sintaxis explicada anteriormente.
  • 45. Recorrer un Array o Vector en C++ • Línea 5: • La quinta línea es quizá la más vital aunque sin las demás no tendríamos nada. En esta línea, estamos accediendo a cada uno de los elementos del array de edades, un elemento por cada vuelta que da el ciclo, accedemos a cada elemento poniendo entre los corchetes la variable i, que es la que esta cambiando a medida que el ciclo va girando, así estaremos accediendo a todos los elementos e imprimiéndolos por pantalla
  • 46. Recorrer un Array o Vector en C++ • Muy bien, llego el momento de afianzar nuestros conocimientos viendo un ejemplo. Ahora que tenemos claro como declarar un vector en C++, como recorrerlo y como acceder a sus datos, vamos a ver un ejemplo basado en el problema que se planteo al inicio de esta sesión.
  • 47. Ejemplo 1 de Arrays o Vectores en C++ • El problema es simple, queremos crear un programa con el cual podamos guardar los títulos y los autores de diferentes libros sin perder ninguno de ellos. El usuario es el encargado de suministrar la información de cada libro. Vamos a suponer que el usuario solo podrá ingresar un máximo de 5 libros, para así tener un tamaño de vector fijo. Veamos entonces como se haría esto:
  • 48. Ejemplo 1 de Arrays o Vectores en C++
  • 49. Ejemplo 1 de Arrays o Vectores en C++
  • 50. Ejemplo 1 de Arrays o Vectores en C++ • Hay que considerar que el tipo de dato que estamos usando para los vectores de títulos y autores es char por lo tanto debes ingresar un único carácter cuando pruebes el algoritmo, pues de lo contrario el comportamiento será un poco extraño (aunque tiene su explicación). A continuación haremos este mismo ejemplo pero usando cadenas de texto completas (strings) para poder ingresar sin problemas más de una letra.
  • 51. Ejemplo 1 mejorado • Vamos a solucionar el mismo problema, pero esta vez lo haremos bien. Vamos a utilizar cadenas de texto completas (string) de modo que al ingresar un titulo o un autor podamos poner textos completos:
  • 54. Ejemplo 1 mejorado • Muy bien, tal como dije en el ejemplo anterior ahora ya podemos ingresar más de un carácter para el título y los autores (tal y como debe ser) y nuestro algoritmo funciona aún mejor. Puedes ver que los únicos cambios necesarios fueron importar la librería string y poner los tipos de datos como string en vez de char y eso solucionó por completo nuestro problema. Ten en cuenta que en versiones antiguas de compiladores usar la funcion cin para leer strings genera un error así que asegurate de usar una versión reciente o usa entonces la función getline.
  • 55. Ejemplo perfeccionado • En la versión del ejemplo anterior tenemos un problema un poco delicado, y es que cuando ingresamos el título del libro o el autor de este con espacios, es decir, más de una palabra (habitualmente es así) el objeto cin interpresta esto como un fin de línea y no nos solicita el siguiente valor. Para solucionar esto haremos uso de la funciín getline (la que mencioné hace un momento) que nos permite solucionar este tipo de problemas. Vamos a solucionar el mismo problema, pero esta vez lo haremos bien. Vamos a utilizar cadenas de texto completas (string) de modo que al ingresar un titulo o un autor podamos poner textos completos.
  • 58. Ejemplo perfeccionado • Como puedes apreciar, hemos reemplazado las líneas que usaban cin para leer los datos por la función getline(...) que recibe como primer argumento el flujo de entrada de cin y como segundo argumento la variable en la que queremos poner el valor.