Vectores y matrices

42
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 75.40 Algoritmos y 75.40 Algoritmos y Programación I Programación I Síntesis Teórica Cátedra: Ing. Domingo T. Mandrafina

description

Analisis de vectores y matrices

Transcript of Vectores y matrices

  • 75.40 Algoritmos y Programacin ISntesis Terica

    Ctedra: Ing. Domingo T. Mandrafina

  • 75.40 Algoritmos y Programacin ISntesis Terica

    Ctedra: Ing. Domingo T. Mandrafina

  • IndiceVectores y Matrices 4

  • Vectores y MatricesVectores: IntroduccinCon lo aprendido hasta ahora resolvamos los siguientes problemas:Dados 50 nmeros enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los nmeros ingresados que sean mayores que l.Dados n nmeros, obtener e imprimir la suma de todos ellos. A continuacin mostrar por pantalla todos los sumandos.

  • Vectores y MatricesEs posible resolver estos problemas? Por qu?Una de las principales dificultades que se observan con estos problemas es que para la resolucin de ambos es necesario almacenar la totalidad de los datos a procesar.No sera eficiente crear n cantidad de variables para guardar estos datos.Para realizar programas y/o algoritmos que nos permitan resolver los problemas planteados, usaremos una nueva estructura de datos denominada vectores.

  • Vectores y MatricesUna estructura de datos es un conjunto de datos con un cierto orden. Las estructuras de datos pueden ser dinmicas o estticas.Estticas: aquellas a las que se le asigna una cantidad fija de memoria de acuerdo a lo definidio en la declaracin de la variable.Dinmicas: son aquellas cuyo tamao en memoria aumenta o disminuye en tiempo de ejecucin de acuerdo a las necesidades del programa.

  • Vectores y MatricesTipos de EstructurasEstticasDinmicas (punteros)SimplesRealesEnterosChar BooleanEnumeradosStringarrayssetrecordfileComplejas

  • VectoresQu es un vector? Un vector (o arreglo unidimensional) es una estructura de datos en la cual se almacena un conjunto de datos de un mismo tipo. Es decir que un arreglo es una lista de n elementos que posee las siguientes caractersticas:se identifica por un nico nombre de variablesus elementos se almacenan en posiciones contiguas de memoriase accede a cada uno de sus elementos en forma aleatoria

  • Vectores Mi_vectorNombre de la variableElementosPosicin : 1Contenido : Mi_vector[1] = 9

  • VectoresEjemplos:Ejemplo 1. Resolvamos este primer ejemplo:Cargar 10 elementos en un vector, sumarlos y mostrar el resultado por pantalla.Pasos para resolver este problema:Leer un vector de 10 elementosSumar los elementosMostrar el resultado de la suma por pantalla

  • VectoresEjemplo 1 - Diagrama de Jackson Ejemplo 1Muestra resultadosLectura delarregloSuma de los elementos

  • Vectores - Ejemplo1Program Ejemplo1; {Version 1}typesumandos = array[1..10] of integer;varsuma, i : integer;vec_sumandos : sumandos;beginsuma := 0;for i:= 1 to 10 do read(vec_sumandos[i] )for i := 1 to 10 do suma:= suma +vec_sumandos[i];writeln (La suma de los nmeros es, suma);end.

    Declaracin de la variable arregloDeclaracin del tipo del arregloLectura de los elementos del arregloSuma de los elementos

  • Vectores - Ejemplo1Program Ejemplo1; {Version 2}typesumandos = array[1..10] of integer;varsuma, i : integer;vec_sumandos : sumandos;beginsuma := 0;for i:= 1 to 10 do beginread(vec_sumandos[i] )suma:= suma +vec_sumandos[i];end;writeln (La suma de los nmeros es, suma);end.

  • Vectores - DeclaracinComo ya dijimos anteriormente, los arreglos son estructuras de datos, por lo tanto las mismas deben ser declaradas. Esta operacin se realiza en la secccin Type de un programa en Pascal. (como puede verse en el ejemplo1)formatotypenombre_del_tipo = array[tipo_subindice * ] of tipo;

    * debe ser de tipo ordinal: boolean, char, enumerado o subrango

  • Vectores - DeclaracinLuego de la declaracin del tipo, se declara la variable.formatovarnombre_variable: nombre_del_tipo;

  • Vectores - DeclaracinEjemplos de declaraciones:Ej1:typeValores = array[ -10..10 ] of real; varprecios: valores;

  • Vectores - DeclaracinEjemplos de declaraciones:Ej2:constMax= 500;typeT_Texto = array[ 1..Max ] of char; varTexto: T_Texto;

  • Vectores - Manejo de ndicesAsignacin de valoresTexto[3] := a;Precios[0] := 23.50;

    Como ya dijimos, los ndices de un arreglo pueden ser: entero, lgico, caracter, enumerado o subrango.

  • Vectores - Manejo de ndicesEj3:constlongitud = 40;altura = 30;typehorizontal = 1..Longitud;T_Lnea = Array [ horizontal ] of char; varLinea: T_Linea

  • Vectores - Manejo de ndicesEj4:typeDiasSemana = (Lunes, Martes, Miercoles,Jueves, Viernes, Sabado, Domingo );T_Dias = array [DiasSemana] of integer;varDias: T_Dias;

  • Vectores - OperacionesCon la siguiente declaracin:typeT_Notas = array [1..30] of integer;varNotas: T_Notas;Lectura de un vectorfor i:= 1 to 30 do read(Notas[i] )

  • Vectores - OperacionesEscritura de un vectorfor i:= 1 to 30 do writeln(Notas[i] )

  • Vectores - OperacionesCon la siguiente declaracin:typeT_Notas = array [1..30] of integer;varNotas, Aux_Notas: T_Notas; Copia de vectoresfor i:= 1 to 30 do Aux_Notas[i]:= Notas[i];

    o bien: Aux_Notas:=Notas;

  • Vectores - Ejemplos resueltos Ej2- Dados 50 nmeros enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los nmeros ingresados que sean mayores que el mismo.Ej3 - Dados n nmeros, obtener e imprimir la suma de todos ellos. A continuacin mostrar por pantalla todos los sumandos.

  • Vectores - Ejemplos resueltosProgram Ej2; constmax = 50;typet_numeros = array[1.. max] of integer;varsuma, i : integer;promedio: real;numeros : t_numeros;beginsuma := 0;

  • Vectores - Ejemplos resueltosfor i:= 1 to max do beginread(numeros[i] )suma:= suma +numeros[i];end;Promedio:= suma/max;writeln (El promedio es ,Promedio);for i := 1 to 50 do if numeros[i] > promediothenwriteln (El nmero, numeros[i], es mayor al promedio);end.

  • Vectores - Ejemplos resueltosProgram Ej3; constmax = 100;typet_numeros = array[1.. max] of integer;varsuma, i, n : integer;promedio: real;numeros : t_numeros;beginsuma := 0; write (Ingrese la cantidad de nmeros a sumar. (Como mximo, 100 nmeros);readln(n);

  • Vectores - Ejemplos resueltosfor i:= 1 to n do beginread(numeros[i] )suma:= suma +numeros[i];end;writeln (La suma es ,suma);for i := 1 to n do writeln (El sumando, i, es, numeros[i]);end.

  • Vectores - Vectores Paralelos Dos o ms arreglos que utilizan el mismo subndice para acceder a elementos de distintos arreglos, se denominan arreglos paralelos. Estos arreglos pueden procesarse simultneamente.Ejercicio:Se tienen dos arreglos. El primero contiene nombres de personas y el segundo contiene los sexos de las personas del primer arreglo, codificados como ffemenino y m masculino. Obtener a partir de estos otros dos arreglos, el primero de los cuales debe contener todos los nombres de los varones y el segundo, el nombre de todas las mujeres

  • MatricesResolvamos el siguiente problema:Un instituto desea controlar los resultados de los alumnos en las distintas asignaturas de la facultad de Ingeniera. El programa debe ingresar las calificaciones de los alumnos y visualizar en pantalla la media de notas por alumno y la media de notas por asignatura.Las asignaturas estn codificadas de 1 a 6 y hay 30 alumnos.

  • MatricesEs posible resolver este problema con lo visto hasta ahora? Para realizar el anterior programa , debemos trabajar con una tabla (o matriz o arreglo bidimensional)

  • MatricesMi_MatrizNombre de la variablePosicin : 3,1Contenido : Mi_vector[3,1] = 9

  • Matrices - DeclaracionesEjemplos de declaraciones:Ej1:typeT_matriz = array[ 1..10, 1..10 ] of real; varMatriz: valores;

  • Matrices - DeclaracionesEjemplos de declaraciones:Ej2:typeT_matriz = array[ 1..10 ] of array [ 1..10 ] of real; varMatriz: valores;

  • Matrices - DeclaracionesEjemplos de declaraciones:Ej3:typeT_filas = array[ 1..10 ] of of real; T_Matriz = array[ 1..10 ] of of T_filas;varMatriz: valores;

  • Matrices - OperacionesCon la siguiente declaracin:type T_matriz = array[ 1..10 ] of array [ 1..10 ] of real; varMatriz: valores;Lectura de una matrizfor i:= 1 to 10 do for j:= 1 to 10 do readln(Matriz[i,j] )

  • Matrices - OperacionesEscritura de una matrizfor i:= 1 to 10 do for j:= 1 to 10 do writeln(Matriz[i,j] )

    El recorrido de las matrices puede realizarse tanto por filas como por columnas, de acuerdo al problema a resolver.

  • Matrices - Ejemplos resueltos Ej4. Un instituto desea controlar los resultados de los alumnos en las distintas asignaturas de la facultad de Ingeniera. El programa debe ingresar las calificaciones de los alumnos y visualizar en pantalla la media de notas por alumno y la media de notas por asignatura.Las asignaturas estn codificadas de 1 a 6 y hay 30 alumnos.

  • Matrices - Ejemplos resueltosProgram Ej4; constmax_fila = 6 ;max_col = 30;typet_tabla = array[1.. max_fila,max_col ] of char;vari, j: integer;tabla: t_tabla;suma: integer;prom_al, prom_mat:real;beginfor i:= 1 to max_fila do for j:= 1 to max_fila do writeln(Ingrese la nota para la materia, i, del alumno, j);

  • Matrices - Ejemplos resueltosfor i:= 1 to max_fila do beginsuma:=0; for j:= 1 to max_col do suma:= suma + tabla[i,j];prom_mat [i] : =suma /i;end; for i:= 1 to max_col do beginsuma:=0; for j:= 1 to max_fila do suma:= suma + tabla[i,j];prom_al [i] : =suma /i;end;

  • Matrices - Ejemplos resueltoswriteln (La suma es ,suma);for i := 1 to max_fila do writeln (El promedio de calificaciones para la asignatura, i, es, prom_mat[i]);end.for j := 1 to max_col do writeln (El promedio de calificaciones para el alumno, j, es, prom_al[j]);end.

  • Arreglos multidimesionales As como hemos trabajado con vectores (arreglos unidemsionales) y matrices (arreglos unideimesionales), es posible trabajar con arreglos de ms de dos dimensiones, los que son denominados arreglos multidimensionales.Ejemplos de problemas de aplicacin de arreglos multidimesionales Se desea escribir un programa que permita manejar la informacin de habitantes de un complejo habitacional. El mismo posee 7 torres; a su vez cada torre posee 20 pisos y cada piso 6 departamentos.Se desea saber:a) Cantidad total de habitantes del complejob) Cantidad promedio de habitantes por piso de cada torrec) Cantidad promedio de habitantes por torre