1. Ingeniería en Sistemas Computacionales
Fundamentos de Programación
Unidad V: Arreglos (Vectores)
Este material de clase fue desarrollado para la asignatura Fundamentos de Programación clave SCD-1008, de la carrera de
Ing. En Sistemas Computacionales, plan 2010.
3. Arreglos
• En clase ya conocimos algunos tipos básicos como por ejemplo los tipos
char, int y float. El lenguaje C++ permite, además, construir estructuras
más complejas a partir de estos tipos básicos. Una de las construcciones
que podemos definir son los arreglos.
• Arreglo: Colección ordenada de elementos de un mismo tipo. Ordenada
significa que cada elemento tiene una ubicación determinada dentro del
arreglo y debemos conocerla para poder accederlo.
FUNDAMENTOS DE PROGRAMACIÓN
6. Asignación de un arreglo:
nombre_variable[índice] = valor o expresión del tipo requerido;
Ejemplos:
calificaciones[9]=(cal1+cal2+cal3)/3;
calificaciones[7]=95;
• El índice debe ser una expresión del tipo entero en el rango [0, longitud-1].
• Cabe destacar que C++ no revisa que el valor de la expresión sea menor a
longitud, simplemente asigna el valor a esa posición de memoria como si
formara parte del arreglo.
FUNDAMENTOS DE PROGRAMACIÓN
7. Acceso al contenido de un arreglo:
• nombre_variable[índice]; es valor del tipo requerido que puede ser
asignado a una variable, o pasado como parámetro, imprimirlo, etc.
• Aquí también vale la aclaración de que el índice debe estar dentro del
rango de definición del arreglo, C++ no revisará que esto sea cierto y
devolverá lo contenido en la posición de memoria correspondiente a un
arreglo de mayor longitud, el dato obtenido de esta manera es basura.
FUNDAMENTOS DE PROGRAMACIÓN
8. Ejercicio: Hacer un programa que capture un arreglo de 10
posiciones, una vez lleno pedir por teclado un número y
buscar si se encuentra dentro del arreglo indicando la
posición del mismo.
FUNDAMENTOS DE PROGRAMACIÓN
9. Ejercicio: Hacer un programa que capture la 10 números en
un arreglo de igual tamaño y determine la suma total de los
mismos y el promedio.
FUNDAMENTOS DE PROGRAMACIÓN
10. Ejercicio: Capturar 3 arreglos de 5 posiciones. Después multiplicar el primero
por el segundo y al resultado sumarle el tercero, guardar el resultado final en un
cuarto arreglo, el cual debe ser desplegado en pantalla.
FUNDAMENTOS DE PROGRAMACIÓN
11. Ejercicio: Hacer un programa que con arreglos
de 10 posiciones capture lo siguiente:
• Matricula de estudiante.
• Calificación en una materia con 3 parciales.
• Desplegar en pantalla el promedio por
alumno
• Desplegar en pantalla el promedio del
grupo.
FUNDAMENTOS DE PROGRAMACIÓN
12. Ejercicio:
• Hacer un programa que capture un arreglo de 10
posiciones, y a la vez llene un segundo arreglo con
el valor en la posición contraria, es decir, lo
capturado en la posición 0 se pasa a la posición 9
del segundo arreglo, etc.
FUNDAMENTOS DE PROGRAMACIÓN
13. Ejercicio:
• Hacer un programa que capture las infracciones de velocidad en la estación
de policía.
• Capturar en vectores de 10 posiciones los sig. Datos: Número de licencia,
velocidad registrada (k/h), velocidad limite (k/h), multa.
• Además indicar la suma total de las multas.
FUNDAMENTOS DE PROGRAMACIÓN
14. Matrices
• Una matriz es una estructura de datos, o más técnicamente, un espacio de
memoria que permite almacenar una colección de elementos, todos del
mismo tipo.
• La diferencia con los arreglos está en que, en las matrices, los elementos
no están organizados linealmente sino que su organización es
bidimensional, es decir, en filas y columnas.
• Conviene imaginar una matriz como una organización de celdas de
memoria, o casillas, en cada una de las cuales se puede guardar un
elemento de la colección.
FUNDAMENTOS DE PROGRAMACIÓN
15. Además, es usual dibujarla
como lo ilustra la figura
siguiente:
FUNDAMENTOS DE PROGRAMACIÓN
• Esta figura representa un matriz de cuatro filas (numeradas verticalmente
de 0 a 3) y seis columnas (numeradas horizontalmente de 0 a 5).
• En cada una de las 24 celdas o casillas se puede guardar un dato.
• La dimensión o tamaño de una matriz es el número filas por el número de
columnas.
• Debe ser claro entonces que la figura anterior es la gráfica de una matriz de
dimensión 4x6.
16. • La numeración de las filas y las columnas determina que cada una de las
casillas de una matriz tiene asociados dos números índice que la
identifican de manera única.
• A estos números se les llama índice de fila e índice de columna,
respectivamente.
• En el seudocódigo, y también en C y C++, las filas y las columnas se
numeran desde 0 y finalizan en n-1.
FUNDAMENTOS DE PROGRAMACIÓN
17. Declaración de una matriz en C++:
• La sintaxis es casi la misma excepto que hemos añadido un par de
corchetes "[ ]" más esta vez y al interior de éstos debemos poner el
número de filas y columnas máximas de la matriz, respectivamente.
Ejemplo:
int myMatriz1[10][5];
float myMatriz2[5][10];
string myMatriz3[15][15];
FUNDAMENTOS DE PROGRAMACIÓN
18. ¿Cómo inicializar una matriz en C++?
• En cuanto tenemos declarado una matriz, es posible asignarle valores a
cada una de sus casillas, sus valores deben coincidir con el tipo de dato que
le asignamos a dicha matriz.
Ejemplo:
int myMatriz[2][2] = {{1,2}, {3,4}};
FUNDAMENTOS DE PROGRAMACIÓN
El valor inicial corresponde a la fila cero, columna cero [0][0]
y tiene el valor de 1;
En la fila cero, columna uno [0][1] tenemos el valor de 2;
En la fila uno, columna cero [1][0] el valor de 3;
Finalmente, en la fila uno, columna uno [1][1] el valor de 4.
19. Otra forma de hacerlo es con ciclos, dentro de los cuales se asigna un valor
inicial a cada casilla de la matriz, puede ser un cero en el caso de las matrices
numéricas o una cadena vacía para las tipo cadena.
Ejemplo:
int edades[3][2];
for (int i = 0; i < 3; i++) { // ciclo para filas
for (int j = 0; j < 2; j++) { // ciclo para columnas
edades[ i ][ j ]=0;
} // cierra ciclo de columnas
} // cierra ciclo de filas
FUNDAMENTOS DE PROGRAMACIÓN
20. Obtener el valor de una casilla específica
• Para acceder al valor de una casilla nuevamente haremos uso de los
corchetes, pero esta vez no para declarar tamaños (porque eso ya lo
hicimos) sino para indicar posiciones (fila y columna).
Ejemplo:
int myMatriz[2][2] = {{7,2},{1,4}}; //Matriz con 4 elementos
int num = myMatriz[0][0]; //Obtiene el valor de la casilla
cout << num << endl; //Despliega el valor obtenido que es 7
FUNDAMENTOS DE PROGRAMACIÓN
21. Recorrer una matriz en C++
• Para obtener todos los datos que se encuentran al interior de una matriz,
debemos acceder a cada posición, esto se hace fácilmente con dos ciclos
for (anidados).
• La lógica de este procedimiento es la siguiente:
El primer ciclo for comenzará desde cero e irá hasta el número de filas-
1, la variable de control que generalmente llamamos “i”;
El segundo ciclo for irá de cero al número de columnas-1 y
normalmente se usa la variable llamada “j”;
FUNDAMENTOS DE PROGRAMACIÓN
22. Ejemplo:
int main() {
int edades[3][2] = {{1,2},{9,8},{14,21}};
for (int i = 0; i < 3; i++) { // ciclo para filas
for (int j = 0; j < 2; j++) { // ciclo para columnas
cout << edades[ i ][ j ] << endl;
} // cierra ciclo de columnas
} // cierra ciclo de filas
} // cierra main
FUNDAMENTOS DE PROGRAMACIÓN
23. • Ejercicio: Escribir un programa que lea una matriz de 3 filas y 3 columnas
de valores enteros. A continuación, el programa debe pedir el número de
una fila. El programa deberá devolver el valor máximo de esa fila.
FUNDAMENTOS DE PROGRAMACIÓN
24. • Ejercicio: Escribir un programa que lea una matriz de números enteros y
que devuelva la suma de los elementos positivos de la matriz y la suma de
los elementos negativos.
FUNDAMENTOS DE PROGRAMACIÓN
25. • Ejercicio: Escribir un programa que lea un matriz de enteros de 2 filas y 4
columnas y muestre por pantalla la traspuesta a dicha matriz. Ejemplo:
FUNDAMENTOS DE PROGRAMACIÓN
26. • Ejercicio: Se dice que una matriz tiene un punto de silla si alguna posición
de la matriz es el menor valor de su fila y a la vez el mayor de su columna.
Escribir un programa que tenga como entrada una matriz de números
enteros y calcule la posición de un punto de silla (si es que existe).
FUNDAMENTOS DE PROGRAMACIÓN