¿Que es C++?
C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se sumaron a los paradigmas de programación estructurada y programación orientada a objetos. Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.
fuente: https://es.wikipedia.org/wiki/C%2B%2B
Arrays
Los arrays son usados extensamente por los programadores para contener listas de datos en la memoria, por ejemplo, los datos almacenados en un disco suelen leerse y ponerse dentro de un array con el objetivo de facilitar la manipulación de dichos datos, ya que los datos en memoria pueden ser modificados, clasificados, marcados para su eliminacion, etc. para luego ser reescritos al disco. Otro ejemplo podría ser el de un menú de opciones que se desplegarán dentro de una ventana para que el usuario pueda elegir una de éstas, en tales casos y cuando las opciones son numerosas, solamente se ponen unas cuantas de ellas dentro de la ventana pero se le da al usuario la oportunidad de poder subir y bajar a su antojo para ver el resto de opciones que, aunque no se vean en la ventana, forman parte del menú o array de opciones.
- Un array es un conjunto de datos del mismo tipo ordenados de forma líneal uno después de otro. Los componentes de un array se han de referenciar por medio del nombre del array y un índice de desplazamiento para indicar el componente deseado.
- Los índices son números que se utilizan para identificar a cada uno de los componentes de un array.
- De acuerdo a la forma en que se construye o declara un array, éste puede ser clasificado como: unidimensional, bidimensional y multidimensional. Los arrays que se emplean con mucha más frecuencia son los estructurados a manera de vector ( array unidimensional ) y los estructurados a manera de matriz ( array bidimensional ), así, aunque en C++ se pueden crear estructuras multidimensionales, en este capítulo solo trataremos con vectores y matrices.
Los vectores son una
forma de almacenar datos que permiten contener una serie de valores del mismo
tipo, cada uno de los valores contenidos tiene una posición asociada que se
usará para accederlos. Está posición o índice será siempre un número entero
positivo.
En C la cantidad de
elementos que podrá contener un vector es fijo, y en principio se define cuando
se declara el vector. Los vectores se pueden declarar de la siguiente forma:
tipo_elemento
nombre[largo];
Esto declara la
variable nombre como un vector de tipo_elementos que
podrá contener largo cantidad de elementos, y cada uno de
estos elemento podrá contener un valor de tipo tipo_elemento.
Por ejemplo:
double valores[128];
En este ejemplo
declaramos un vector de 128 elementos del tipo double, los índices de los
elementos irían entre 0 (para el primer elemento y 127 para el último).
De la misma forma que
con las otras declaraciones de variables que hemos visto se le puede asignar un
valor iniciar a los elementos.
O también se pueden
declarar:
tipo_elemento
nombre[largo]={valor_0, valor_1, valor_2};
En caso estamos
asignadole valores a los primeros 3 elementos del vector nombre.
Notar que largo debe ser mayor o igual a la cantidad de
valores que le estamos asignando al vector, en el caso de ser la misma cantidad
no aporta información, por lo que el lenguaje nos permite escribir:
tipo_elemento
nombre[]={valor_0, valor_1, valor_2};
Que declarará nombre
como el vector de largo 3.
Para acceder a un
elemento accederemos a través de su posición. Es decir:
tipo_elemento
elemento;
...
elemento
= nombre[2];
Asumiendo que tenemos
el vector anterior definido estaríamos guardando valor_2 en elemento.
CARACTERISTICAS
Almacenar los elementos del array en
posiciones de memoria contínua
1.
Tener un único nombre de variable que
representa a todos los elementos, y éstos a su vez se diferencian por un índice
o subíndice.
2.
Acceso directo o aleatorio a los elementos
individuales del array.
·
todos los arrays son de tamaño
variable, tanto si se especifica como no un tamaño al ser declarados
·
Para ver el contenido de los
arrays según van siendo ejecutadas las líneas de código que los
declaran, utilizaremos la ventana Locales del depurador,
que muestra las variables de ámbito local
al procedimiento que estamos ejecutando actualmente
·
Los arrays se crean con
el operador new seguido del tipo y número de elementos.
·
Se puede acceder al número de
elementos de un arraycon la variable miembro implícita length (por ejemplo,
vect.length).
·
Se accede a los elementos de
un array con los corchetes [] y un índice que varía de 0 a length-1.
·
Se pueden crear arrays de objetos
de cualquier tipo. En principio un array de objetos es un array de referencias
que hay que completar llamando al operador new.
·
Los elementos de
un array se inicializan al valor por defecto del tipo
correspondiente .
·
Como todos los objetos,
los arrays se pasan como argumentos a los métodos por
referencia.
·
Se pueden
crear arrays anónimos
¿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. 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+
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:
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.
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.
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
int
vector2[3];
vector2[3]
= {1,5,10};
Dadas
las características de C++, es fácil pensar que és 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. 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í:
int
vector2[3];
vector2[0]
= 1;
vector2[1]
= 3;
vector2[2]
= 10;
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
float vector3[5] = {10.5};
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.
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.
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. 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:
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 sección no siempre es posible
saber con certeza el tamaño de un vector, es por esto que explico cómo hacerlo.
#include "iostream"
using namespace std;
int main()
{
int
edades[] = {1,2,9,8,16,32,9,50,36,20,1,87};
int limite
= (sizeof(edades)/sizeof(edades[0]));
for (int i
= 0; i < limite; i++)
{
cout<<edades[i]<<endl;
}
}
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.
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.
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
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
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 planteé al inicio de esta sección (el de los
libros).
EJEMPLO
función
simple para sumar 2 vectores a y b y poner el resultado en un tercer vector c:
#include <iostream>
using namespace std;
void sumar(int a[], int b[], int c[],int dim) {
for (int i = 0; i < dim; i++) {
c[i] = a[i] + b[i];
}
}
void imprimir(int v[], int dim)
{
for(int i = 0; i < dim; i++) {
cout << v[i] << endl;
}
cout << endl << endl;
}
int main()
{
int dim;
cout << "Ingresa la dimensión" << endl;
cin >> dim;
int a[dim];
int b[dim];
int c[dim];
for(int i = 0; i < dim; i++) {
a[i] = i * 10;
b[i] = i * 5;
}
cout << "Vector A " << endl;
imprimir(a, dim);
cout << "Vector B " << endl;
imprimir(b, dim);
sumar(a, b, c, dim);
cout << "Vector C " << endl;
imprimir(c, dim);
return 0;
}
UNIVERSIDAD FERMIN TOROFACULTAD DE INGENIERÍAESCUELA DE COMPUTACIÓN100%SAIABACHILLER: ANA DELGADOCI: V-18321777


No hay comentarios:
Publicar un comentario