Anda di halaman 1dari 26

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.
FUNDAMENTOS DE PROGRAMACION

Competencia:
• Construir programas que utilicen arreglos unidimensionales y
multidimensionales para solucionar problemas.
FUNDAMENTOS DE PROGRAMACIÓN

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
Sintaxis:

tipo nombre_variable[longitud];

Ejemplo:
int matricula[20];

• Con esto diremos que nombre_variable es un arreglo de longitud


elementos del tipo necesitado. Cabe destacar que longitud debe ser
cualquier expresión entera constante mayor que cero.
FUNDAMENTOS DE PROGRAMACIÓN

Representación
Gráfica de un
Arreglo
FUNDAMENTOS DE PROGRAMACIÓN
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
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
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

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
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
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

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
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
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

Además, es usual dibujarla


como lo ilustra la figura
siguiente:

• 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.
FUNDAMENTOS DE PROGRAMACIÓN
• 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
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
¿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}};

 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.
FUNDAMENTOS DE PROGRAMACIÓN
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
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
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
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
• 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
• 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
• 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
• 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).

Anda mungkin juga menyukai