Vectores Matrices I

46,358 views
45,894 views

Published on

Pagina descargada de: http://materias.fi.uba.ar/7540/mandrafina/_private/

Published in: Technology, Travel, Business
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
46,358
On SlideShare
0
From Embeds
0
Number of Embeds
82
Actions
Shares
0
Downloads
599
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Vectores Matrices I

  1. 1. 75.40 Algoritmos y Programación I Síntesis Teórica Cátedra: Ing. Domingo T. Mandrafina Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
  2. 2. 75.40 Algoritmos y Programación I Síntesis Teórica Cátedra: Ing. Domingo T. Mandrafina Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
  3. 3. Indice • Vectores y Matrices 4 Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 3
  4. 4. Vectores y Matrices • Vectores: Introducción – Con lo aprendido hasta ahora resolvamos los siguientes problemas: • Dados 50 números enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los números ingresados que sean mayores que él. • Dados n números, obtener e imprimir la suma de todos ellos. A continuación mostrar por pantalla todos los sumandos. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 4
  5. 5. Vectores y Matrices • Es posible resolver estos problemas? Por qué? • Una de las principales dificultades que se observan con estos problemas es que para la resolución de ambos es necesario almacenar la totalidad de los datos a procesar. • No sería 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. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 5
  6. 6. Vectores y Matrices • Una estructura de datos es un conjunto de datos con un cierto orden. • Las estructuras de datos pueden ser dinámicas o estáticas. – Estáticas: aquellas a las que se le asigna una cantidad fija de memoria de acuerdo a lo definidio en la declaración de la variable. – Dinámicas: son aquellas cuyo tamaño en memoria aumenta o disminuye en tiempo de ejecución de acuerdo a las necesidades del programa. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 6
  7. 7. Vectores y Matrices Reales Simples Enteros Char Tipos de Boolean Estructuras Enumerados Estáticas String arrays Complejas set record Dinámicas (punteros) file Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 7
  8. 8. Vectores • Qué 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 características: – se identifica por un único nombre de variable – sus elementos se almacenan en posiciones contiguas de memoria – se accede a cada uno de sus elementos en forma aleatoria Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 8
  9. 9. Vectores Elementos Mi_vector 9 5 6 2 4 8 3 Nombre de la variable Posición : 1 Contenido : Mi_vector[1] = 9 Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 9
  10. 10. Vectores • Ejemplos: – 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 elementos • Sumar los elementos • Mostrar el resultado de la suma por pantalla Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 10
  11. 11. Vectores • Ejemplo 1 - Diagrama de Jackson Ejemplo 1 Lectura del Suma de Muestra arreglo los elementos resultados Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 11
  12. 12. Vectores - Ejemplo1 Program Ejemplo1; {Version 1} type Declaración del tipo del arreglo sumandos = array[1..10] of integer; var suma, i : integer; Declaración de la variable arreglo vec_sumandos : sumandos; begin suma := 0; for i:= 1 to 10 do read(vec_sumandos[i] ) Lectura de los elementos del arreglo for i := 1 to 10 do suma:= suma +vec_sumandos[i]; writeln (´La suma de los números es´, suma); Suma de los elementos end. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 12
  13. 13. Vectores - Ejemplo1 Program Ejemplo1; {Version 2} type sumandos = array[1..10] of integer; var suma, i : integer; vec_sumandos : sumandos; begin suma := 0; for i:= 1 to 10 do begin read(vec_sumandos[i] ) suma:= suma +vec_sumandos[i]; end; writeln (´La suma de los números es´, suma); end. y Programación I - Cátedra: Ing. Domingo T. Mandrafina Algoritmos 13
  14. 14. Vectores - Declaración • Como ya dijimos anteriormente, los arreglos son estructuras de datos, por lo tanto las mismas deben ser declaradas. Esta operación se realiza en la seccción “Type” de un programa en Pascal. (como puede verse en el ejemplo1) • formato type nombre_del_tipo = array[tipo_subindice * ] of tipo; * debe ser de tipo ordinal: boolean, char, enumerado o subrango Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 14
  15. 15. Vectores - Declaración • Luego de la declaración del tipo, se declara la variable. • formato var nombre_variable: nombre_del_tipo; Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 15
  16. 16. Vectores - Declaración • Ejemplos de declaraciones: • Ej1: type Valores = array[ -10..10 ] of real; var precios: valores; Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 16
  17. 17. Vectores - Declaración • Ejemplos de declaraciones: • Ej2: const Max= 500; type T_Texto = array[ 1..Max ] of char; var Texto: T_Texto; Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 17
  18. 18. Vectores - Manejo de índices • Asignación de valores Texto[3] := ´a´; Precios[0] := 23.50; Como ya dijimos, los índices de un arreglo pueden ser: entero, lógico, caracter, enumerado o subrango. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 18
  19. 19. Vectores - Manejo de índices Ej3: const longitud = 40; altura = 30; type horizontal = 1..Longitud; T_Línea = Array [ horizontal ] of char; var Linea: T_Linea Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 19
  20. 20. Vectores - Manejo de índices Ej4: type DiasSemana = (Lunes, Martes, Miercoles,Jueves, Viernes, Sabado, Domingo ); T_Dias = array [DiasSemana] of integer; var Dias: T_Dias; Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 20
  21. 21. Vectores - Operaciones • Con la siguiente declaración: type T_Notas = array [1..30] of integer; var Notas: T_Notas; • Lectura de un vector for i:= 1 to 30 do read(Notas[i] ) Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 21
  22. 22. Vectores - Operaciones • Escritura de un vector for i:= 1 to 30 do writeln(Notas[i] ) Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 22
  23. 23. Vectores - Operaciones • Con la siguiente declaración: type T_Notas = array [1..30] of integer; var Notas, Aux_Notas: T_Notas; Copia de vectores for i:= 1 to 30 do Aux_Notas[i]:= Notas[i]; o bien: Aux_Notas:=Notas; Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 23
  24. 24. Vectores - Ejemplos resueltos Ej2- Dados 50 números enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los números ingresados que sean mayores que el mismo. Ej3 - Dados n números, obtener e imprimir la suma de todos ellos. A continuación mostrar por pantalla todos los sumandos. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 24
  25. 25. Vectores - Ejemplos resueltos Program Ej2; const max = 50; type t_numeros = array[1.. max] of integer; var suma, i : integer; promedio: real; numeros : t_numeros; begin suma := 0; Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 25
  26. 26. Vectores - Ejemplos resueltos for i:= 1 to max do begin read(numeros[i] ) suma:= suma +numeros[i]; end; Promedio:= suma/max; writeln (´El promedio es ´,Promedio´); for i := 1 to 50 do if numeros[i] > promedio then writeln (´El número´, numeros[i], ´es mayor al promedio´); end. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 26
  27. 27. Vectores - Ejemplos resueltos Program Ej3; const max = 100; type t_numeros = array[1.. max] of integer; var suma, i, n : integer; promedio: real; numeros : t_numeros; begin suma := 0; write (´Ingrese la cantidad de números a sumar. (Como máximo, 100 números´); readln(n); Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 27
  28. 28. Vectores - Ejemplos resueltos for i:= 1 to n do begin read(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. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 28
  29. 29. Vectores - Vectores Paralelos • Dos o más arreglos que utilizan el mismo subíndice para acceder a elementos de distintos arreglos, se denominan arreglos paralelos. Estos arreglos pueden procesarse simultáneamente. • 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 ´f ´femenino 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 Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 29
  30. 30. Matrices • Resolvamos el siguiente problema: – Un instituto desea controlar los resultados de los alumnos en las distintas asignaturas de la facultad de Ingeniería. 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 están codificadas de 1 a 6 y hay 30 alumnos. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 30
  31. 31. Matrices • Es posible resolver este problema con lo visto hasta ahora? • Para realizar el anterior programa , debemos trabajar con una tabla (o matriz o arreglo bidimensional) Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 31
  32. 32. Matrices Mi_Matriz 9 5 6 2 4 8 3 9 5 6 2 4 8 3 Nombre de 9 5 6 2 4 8 3 la variable Posición : 3,1 Contenido : Mi_vector[3,1] = 9 Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 32
  33. 33. Matrices - Declaraciones • Ejemplos de declaraciones: • Ej1: type T_matriz = array[ 1..10, 1..10 ] of real; var Matriz: valores; Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 33
  34. 34. Matrices - Declaraciones • Ejemplos de declaraciones: • Ej2: type T_matriz = array[ 1..10 ] of array [ 1..10 ] of real; var Matriz: valores; Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 34
  35. 35. Matrices - Declaraciones • Ejemplos de declaraciones: • Ej3: type T_filas = array[ 1..10 ] of of real; T_Matriz = array[ 1..10 ] of of T_filas; var Matriz: valores; Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 35
  36. 36. Matrices - Operaciones • Con la siguiente declaración: type T_matriz = array[ 1..10 ] of array [ 1..10 ] of real; var Matriz: valores; • Lectura de una matriz for i:= 1 to 10 do for j:= 1 to 10 do readln(Matriz[i,j] ) Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 36
  37. 37. Matrices - Operaciones • Escritura de una matriz for 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. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 37
  38. 38. Matrices - Ejemplos resueltos Ej4. Un instituto desea controlar los resultados de los alumnos en las distintas asignaturas de la facultad de Ingeniería. 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 están codificadas de 1 a 6 y hay 30 alumnos. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 38
  39. 39. Matrices - Ejemplos resueltos Program Ej4; const max_fila = 6 ; max_col = 30; type t_tabla = array[1.. max_fila,max_col ] of char; var i, j: integer; tabla: t_tabla; suma: integer; prom_al, prom_mat:real; begin for i:= 1 to max_fila do for j:= 1 to max_fila do writeln(´Ingrese la nota para la materia´, i, ´del alumno´, j); Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 39
  40. 40. Matrices - Ejemplos resueltos for i:= 1 to max_fila do begin suma:=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 begin suma:=0; for j:= 1 to max_fila do suma:= suma + tabla[i,j]; prom_al [i] : =suma /i; end; Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 40
  41. 41. Matrices - Ejemplos resueltos writeln (´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. Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 41
  42. 42. Arreglos multidimesionales Así como hemos trabajado con vectores (arreglos unidemsionales) y matrices (arreglos unideimesionales), es posible trabajar con arreglos de más de dos dimensiones, los que son denominados arreglos multidimensionales. Ejemplos de problemas de aplicación de arreglos multidimesionales Se desea escribir un programa que permita manejar la información 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 complejo b) Cantidad promedio de habitantes por piso de cada torre c) Cantidad promedio de habitantes por torre Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 42

×