fundamentos de programacion - unidad 5 arreglos (vectores)

Post on 13-Apr-2017

165 Views

Category:

Engineering

12 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

FUNDAMENTOS DE PROGRAMACION

Competencia:• Construir programas que utilicen arreglos unidimensionales y

multidimensionales para solucionar problemas.

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:

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.

• 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}};

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.

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 elementosint num = myMatriz[0][0]; //Obtiene el valor de la casillacout << 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).

FUNDAMENTOS DE PROGRAMACIÓN

top related