You are on page 1of 42

75.

40 Algoritmos y Programacin I

Sntesis Terica
Ctedra: Ing. Domingo T. Mandrafina

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

75.40 Algoritmos y Programacin I

Sntesis Terica
Ctedra: Ing. Domingo T. Mandrafina

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

Indice
Vectores y Matrices

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

Vectores y Matrices
Vectores: Introduccin
Con 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.

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

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 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.
Algoritmos y Programacin I - Ctedra: 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 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.
Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina 6

Vectores y Matrices
Reales Enteros Char Boolean Enumerados String arrays set record file
7

Simples Tipos de Estructuras

Estticas

Complejas
Dinmicas (punteros)
Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

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 caractersticas:
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 Programacin I - Ctedra: Ing. Domingo T. Mandrafina 8

Vectores

Elementos Mi_vector 9 5 6 2 4 8 3

Nombre de la variable

Posicin : 1 Contenido : Mi_vector[1] = 9

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

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 Programacin I - Ctedra: Ing. Domingo T. Mandrafina

10

Vectores
Ejemplo 1 - Diagrama de Jackson
Ejemplo 1

Lectura del arreglo

Suma de los elementos

Muestra resultados

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

11

Vectores - Ejemplo1
Program Ejemplo1; {Version 1} type Declaracin del tipo del arreglo sumandos = array[1..10] of integer; var suma, i : integer; Declaracin de la variable arreglo vec_sumandos : sumandos; begin suma := 0; for i:= 1 to 10 do Lectura de los elementos del arreglo read(vec_sumandos[i] ) for i := 1 to 10 do suma:= suma +vec_sumandos[i]; writeln (La suma de los nmeros es, suma); Suma de los elementos end.
Algoritmos y Programacin I - Ctedra: 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 nmeros es, suma); end.
Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

13

Vectores - Declaracin
Como 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) formato
type nombre_del_tipo = array[tipo_subindice * ] of tipo;
* debe ser de tipo ordinal: boolean, char, enumerado o subrango
Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina 14

Vectores - Declaracin
Luego de la declaracin del tipo, se declara la variable. formato
var
nombre_variable: nombre_del_tipo;

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

15

Vectores - Declaracin
Ejemplos de declaraciones: Ej1:
type
Valores = array[ -10..10 ] of real;

var precios: valores;

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

16

Vectores - Declaracin
Ejemplos de declaraciones: Ej2: const
Max= 500;

type
T_Texto = array[ 1..Max ] of char;

var Texto: T_Texto;

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

17

Vectores - Manejo de ndices


Asignacin de valores
Texto[3] := a; Precios[0] := 23.50; Como ya dijimos, los ndices de un arreglo pueden ser: entero, lgico, caracter, enumerado o subrango.

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

18

Vectores - Manejo de ndices


Ej3:

const
longitud = 40; altura = 30; type horizontal = 1..Longitud; T_Lnea = Array [ horizontal ] of char; var Linea: T_Linea

Algoritmos y Programacin I - Ctedra: 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 Programacin I - Ctedra: Ing. Domingo T. Mandrafina

20

Vectores - Operaciones
Con la siguiente declaracin:
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 Programacin I - Ctedra: Ing. Domingo T. Mandrafina 21

Vectores - Operaciones
Escritura de un vector
for i:= 1 to 30 do writeln(Notas[i] )

Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina

22

Vectores - Operaciones
Con la siguiente declaracin:
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 Programacin I - Ctedra: Ing. Domingo T. Mandrafina 23

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.

Algoritmos y Programacin I - Ctedra: 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 Programacin I - Ctedra: 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 nmero, numeros[i], es mayor al promedio); end.

Algoritmos y Programacin I - Ctedra: 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 nmeros a sumar. (Como mximo, 100 nmeros); readln(n);
Algoritmos y Programacin I - Ctedra: 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 Programacin I - Ctedra: Ing. Domingo T. Mandrafina

28

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
Algoritmos y Programacin I - Ctedra: 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 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.

Algoritmos y Programacin I - Ctedra: 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 Programacin I - Ctedra: Ing. Domingo T. Mandrafina

31

Matrices
Mi_Matriz 9 5 6 2 4 8 3 9 5 6 2 4 8 3 9 5 6 2 4 8 3

Nombre de la variable

Posicin : 3,1 Contenido : Mi_vector[3,1] = 9

Algoritmos y Programacin I - Ctedra: 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 Programacin I - Ctedra: 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 Programacin I - Ctedra: 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 Programacin I - Ctedra: Ing. Domingo T. Mandrafina

35

Matrices - Operaciones
Con la siguiente declaracin:
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 Programacin I - Ctedra: 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 Programacin I - Ctedra: 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 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.

Algoritmos y Programacin I - Ctedra: 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 Programacin I - Ctedra: 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 Programacin I - Ctedra: 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 Programacin I - Ctedra: 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 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 complejo

b) Cantidad promedio de habitantes por piso de cada torre


c) Cantidad promedio de habitantes por torre
Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina 42

You might also like