Está en la página 1de 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

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

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

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

Vectores y Matrices

Simples
Tipos de
Estructuras

Estticas

Complejas
Dinmicas (punteros)

Algoritmos y

Reales
Enteros
Char
Boolean
Enumerados
String
arrays
set
record
file

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

Vectores
Elementos
Mi_vector 9 5 6 2 4 8 3
Nombre de
la variable

Posicin : 1
Contenido : Mi_vector[1] = 9

Algoritmos y

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

10

Vectores
Ejemplo 1 - Diagrama de Jackson
Ejemplo 1

Lectura del
arreglo

Algoritmos y

Suma de
los elementos

Muestra
resultados

11

Vectores - Ejemplo1
Program Ejemplo1; {Version 1}
type
sumandos = array[1..10] of integer;
var
suma, i : integer;
vec_sumandos : sumandos;
begin
suma := 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 del tipo del arreglo

Declaracin de la variable arreglo

Lectura de los elementos del arreglo

Suma de los elementos

Algoritmos y

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

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

14

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

Algoritmos y

15

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

var
precios: valores;

Algoritmos y

16

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

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

var
Texto: T_Texto;

Algoritmos y

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

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

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

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

21

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

Algoritmos y

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

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

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

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

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

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

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

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

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

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

32

Matrices - Declaraciones
Ejemplos de declaraciones:
Ej1:
type
T_matriz = array[ 1..10, 1..10 ] of real;

var
Matriz: valores;

Algoritmos y

33

Matrices - Declaraciones
Ejemplos de declaraciones:
Ej2:
type
T_matriz = array[ 1..10 ] of array [ 1..10 ] of real;

var
Matriz: valores;

Algoritmos y

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

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

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

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

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

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

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

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

42

También podría gustarte