SlideShare una empresa de Scribd logo
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
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
Indice


 • Vectores y Matrices                                              4




Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina       3
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Más contenido relacionado

PPTX
Sistema de ecuaciones lineales
PDF
Lógica y Cálculo Proposicional
DOCX
Leyes de los exponentes
PPS
Unidad 3 sistemas numeracion
PDF
Estructuras de Datos (Arreglos)
DOCX
Ecuaciones lineales
PPTX
Metodos de ordenamiento
PDF
Sistemas ecuaciones lineales
Sistema de ecuaciones lineales
Lógica y Cálculo Proposicional
Leyes de los exponentes
Unidad 3 sistemas numeracion
Estructuras de Datos (Arreglos)
Ecuaciones lineales
Metodos de ordenamiento
Sistemas ecuaciones lineales

La actualidad más candente (20)

PDF
Monografia ocho reinas
PPTX
Funciones
DOCX
3.1 definicion-y-clasificacion-de-ecuaciones-lineales
PPTX
Programación 3: algoritmo de Prim y de Kruskal
PPTX
Tema Dominio de una Función
PDF
Introducción a la teoría de conjuntos
PPTX
Limites laterales
PDF
17 arreglos bidimensionales java
PPTX
Algoritmo prim
DOCX
Operaciones Básicas con el Sistema Octal
PPTX
Proposiciones lógicas, Tablas de verdad, Proposiciones equivalentes, Leyes ló...
PDF
Tipos de datos abstractos
PPT
Demostraciones Formales
PDF
Problemas resueltos sobre inducción matemática
PDF
Arreglos Bidimensionales - Java - NetBeans
PPT
Log2
PPT
Relacion Simetrica
PDF
Sucesiones y series
DOCX
Tipos de ecuaciones
DOCX
Aritmetica
Monografia ocho reinas
Funciones
3.1 definicion-y-clasificacion-de-ecuaciones-lineales
Programación 3: algoritmo de Prim y de Kruskal
Tema Dominio de una Función
Introducción a la teoría de conjuntos
Limites laterales
17 arreglos bidimensionales java
Algoritmo prim
Operaciones Básicas con el Sistema Octal
Proposiciones lógicas, Tablas de verdad, Proposiciones equivalentes, Leyes ló...
Tipos de datos abstractos
Demostraciones Formales
Problemas resueltos sobre inducción matemática
Arreglos Bidimensionales - Java - NetBeans
Log2
Relacion Simetrica
Sucesiones y series
Tipos de ecuaciones
Aritmetica
Publicidad

Destacado (10)

PPTX
Algoritmo matrices
PPTX
Aplicación de vectores y matrices en c++
DOCX
Ejercicios con matrices
DOCX
Aplicación de matrices a la ingeniería mecánica
PPTX
Vector
PDF
Arreglos en pseudocodigo 01
PDF
Ejercicios de vectores o arrays
PDF
Arreglos vectores pseint
PDF
Ejercicios de arreglo
DOCX
EJEMPLO APLICACIÓN DE MATRICES
Algoritmo matrices
Aplicación de vectores y matrices en c++
Ejercicios con matrices
Aplicación de matrices a la ingeniería mecánica
Vector
Arreglos en pseudocodigo 01
Ejercicios de vectores o arrays
Arreglos vectores pseint
Ejercicios de arreglo
EJEMPLO APLICACIÓN DE MATRICES
Publicidad

Similar a Vectores Matrices I (20)

PPT
Vectores matricesi
PPT
Vectores Matrices I
PPT
Vectores matricesi
PPTX
Vectores y Matrices
PPT
VectoresMatricesI.ppt
PPT
VectoresMatricesI.ppt
PPT
Estructura de Datos: Arreglos
PDF
Areglos y registros
PPTX
Arreglos Unidimensionales - Vectores.pptx
PDF
Documento de apoyo_vectores
DOC
Vectores en programacion
PPTX
Tipo de Arreglos
PDF
Unidad5
PDF
Estructuras_de_datos_(11-12).pdf- power point arrays
PDF
Arreglos
PPT
METODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION I
ODP
Fundamentos de computación(ICM) en octave
PPTX
Introducción y Desarrollo de la Estructura de Datos en Programación: Estudio ...
PPSX
Programacion inf121 i8 ii 2013 ocho arreglos
PDF
Arreglos
Vectores matricesi
Vectores Matrices I
Vectores matricesi
Vectores y Matrices
VectoresMatricesI.ppt
VectoresMatricesI.ppt
Estructura de Datos: Arreglos
Areglos y registros
Arreglos Unidimensionales - Vectores.pptx
Documento de apoyo_vectores
Vectores en programacion
Tipo de Arreglos
Unidad5
Estructuras_de_datos_(11-12).pdf- power point arrays
Arreglos
METODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION I
Fundamentos de computación(ICM) en octave
Introducción y Desarrollo de la Estructura de Datos en Programación: Estudio ...
Programacion inf121 i8 ii 2013 ocho arreglos
Arreglos

Último (20)

PDF
Estrategia de apoyo tecnología grado 9-3
PDF
SAP Transportation Management para LSP, TM140 Col18
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPTX
Presentación de Redes de Datos modelo osi
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
Diapositiva proyecto de vida, materia catedra
PDF
Calidad desde el Docente y la mejora continua .pdf
PDF
Maste clas de estructura metálica y arquitectura
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Estrategia de apoyo tecnología grado 9-3
SAP Transportation Management para LSP, TM140 Col18
Power Point Nicolás Carrasco (disertación Roblox).pptx
REDES INFORMATICAS REDES INFORMATICAS.pptx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Presentación de Redes de Datos modelo osi
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Presentación PASANTIAS AuditorioOO..pptx
Estrategia de apoyo tecnología miguel angel solis
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Diapositiva proyecto de vida, materia catedra
Calidad desde el Docente y la mejora continua .pdf
Maste clas de estructura metálica y arquitectura
Zarate Quispe Alex aldayir aplicaciones de internet .docx

Vectores Matrices I

  • 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. 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. Indice • Vectores y Matrices 4 Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 3
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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