fundamentos de programacion - unidad 5 arreglos (vectores)

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.

Upload: jose-antonio-sandoval-acosta

Post on 13-Apr-2017

164 views

Category:

Engineering


12 download

TRANSCRIPT

Page 1: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

Ingeniería en Sistemas ComputacionalesFundamentos 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.

Page 2: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

FUNDAMENTOS DE PROGRAMACION

Competencia:• Construir programas que utilicen arreglos unidimensionales y

multidimensionales para solucionar problemas.

Page 3: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 4: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 5: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

Representación Gráfica de un

Arreglo

FUNDAMENTOS DE PROGRAMACIÓN

Page 6: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 7: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 8: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 9: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 10: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 11: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 12: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 13: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 14: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 15: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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.

Page 16: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

• 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

Page 17: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 18: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 19: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 20: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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 elementosint num = myMatriz[0][0]; //Obtiene el valor de la casillacout << num << endl; //Despliega el valor obtenido que es 7

FUNDAMENTOS DE PROGRAMACIÓN

Page 21: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 22: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

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

Page 23: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

• 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

Page 24: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

• 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

Page 25: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

• 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

Page 26: Fundamentos de Programacion - Unidad 5 arreglos (vectores)

• 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