You are on page 1of 26

Patricia Trejo

Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

Programacion en Pascal

The end

Patricia Trejo
Universidad T
ecnica Federico Santa Mara

Valparaso, Primer Semestre 2006

Outline

Patricia Trejo
Outline
Arreglos

Outline

Captulo 9: Arreglos
Arreglos Bidimensionales
B
usqueda
Ordenamiento

The end

Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Captulo 9: Arreglos

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Arreglos Bidimensionales

Estructura de un Arreglo Bidimensional

Patricia Trejo

Un arreglo bidimensional, se ve como una matriz, es decir,


tiene la siguiente forma:

Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Donde, por ejemplo, un valor de la matriz:


5

Es asignado como:
X[1,4] := 5;

Declaracion y asignacion de un Arreglo


Bidimensional
Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Type
matriz = array[1..N,1..M] of Tipo de dato;
Var
X: matriz;
Begin
X[i,j] := Valor;
End.

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

La forma mas facil de ver un arreglo es a traves de un bucle


FOR.
En arreglos unidimensionales:
for i:= val inicial to val final do
acci
on;
Ejemplo
for i:=1 to 10 do
begin
X[i] := i*i;
writeln(X[i]);
end;

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

En arreglos bidimensionales:
for i:=1 to N do
for j:=1 to M do
acci
on;
Ejemplo
for i:=1 to N do
for j:=1 to M do
readln(X[i,j]);

Ejemplos

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Ejemplo 1: Inicializar una matriz con ceros, y que sea de


dimension 10 x 12.
for i:=1 to 10 do
for j:=1 to 12 do
A[i,j] := 0;
Ejemplo 2: Poner un 1 en todas las que la suma de sus ndices
sea par. Utilice la misma matriz de dimensiones 10 x 12.
for i:=1 to 10 do
for j:=1 to 12 do
if i+j mod 2 = 0 then
A[i,j] := 1;

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Busqueda en Arreglos

Busqueda Unidimensional

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Existen varias tecnicas, algunas son:


B
usqueda Binaria: Requiere que el arreglo este ordenado.
Es smil de cuando buscamos una palabra en un
diccionario.
B
usqueda Secuencial: Se compara cada elemento con el
buscado hasta que se encuentra.

Busqueda Secuencial

Patricia Trejo
Outline

Ejemplo

Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

15

10

12

25

31

17

Se buscara el valor 25, entonces se compara 15, 10, 8, 12 y 25,


se detiene la b
usqueda y se devuelve el ndice el cual indicara la
posicion en la cual se encuentra el valor que estamos buscando.
i := 1;
while i <= largo and A[i] <> elemento do
i := i + 1;

Busqueda Secuencial... Continuacion Ejemplo

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Una forma mas elegante sera:


indice : =0;
i := 1;
while i <= largo and indice = 0 do
begin
if A[i] = elemento then
indice := i;
i := i + 1;
end;

Busqueda Bidimensional

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Se debe recorrer toda la matriz. Nuevamente veremos la


b
usqueda secuencial pero a nivel bidimensional.

Busqueda Bidimensional

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

bool := true; indiceI := 0; indiceJ := 0; i := 1;


while i <= largoI and bool do
begin
j := 1;
while j <= largoJ and bool do
begin
if A[i][j] = elemento then
begin
indiceI := i;
indiceJ := j;
bool := false
end;
j := j + 1
end;
i := i + 1
end;

Busqueda Bidimensional

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Una b
usqueda mas eficiente es obtener toda la informacion de
un cierto elemento. Sea la matriz de la siguiente forma:
Apellido
A ...
B ...
..
.

RUT

Nombre

Perez

11111111-1

Juan

Busqueda Bidimensional

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

La idea es que a traves de alguno de los campos (Apellido,


RUT o Nombre) obtendremos el resto de la informacion.
variable a buscar := Nombre;
for i := 1 to largo do
if A[i][n de columna por buscar] =
variable a buscar then
for j := 1 to largo de filas do
acciones;

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Ordenamiento en Arreglos

Ordenamiento Unidimensional

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Existen diversas formas de ordenar un arreglo. En el curso se


vera uno de los mas simples y populares... Ordenamiento
Burbuja o Bubble Sort.
Ordenamiento Burbuja, su nombre proviene del hecho de que
los elementos mas livianos (chicos), salgan a flote, mientras
que los mas pesados (grandes) se hundan.

Ejemplo

Patricia Trejo

15

50

Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Si el de abajo es mas chico se cambian los valores de posicion y


se contin
ua con el siguiente n
umero. Luego que termina de dar
el primer recorrido al arreglo, comienza de nuevo desde el
principio, pero el elemento mas pesado ya quedo al fondo, por
lo tanto, ahora se comparan solo los primeros N-1 elementos.
15
8
4
50
3

8
15
4
50
3

8
4
15
50
3

8
4
15
50
3

8
4
15
3
50

8
4
15
3
50

4
8
15
3
50

4
8
15
3
50

4
8
3
15
50

4
8
3
15
50

4
8
3
15
50

4
3
8
15
50

3
4
8
15
50

Ordenamiento Burbuja

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

for i := largo downto 2 do


for j := 1 to i-1 do
if A[j] > A[j+1] then
begin
temp := A[j];
A[j] := A[j+1];
A[j+1] := temp;
end;

Ordenamiento Burbuja... Otra Forma

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

for i := 1 to largo do
for j := 1 downto i+1 do
if A[j] < A[j-1] then
begin
temp := A[j];
A[j] := A[j-1];
A[j-1] := temp;
end;

Ordenamiento Bidimensional

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Es muy costoso y poco eficiente ordenar completamente un


arreglo bidimensional, por lo que se ordena en base a una fila o
columna.
Ejemplo
Rol
2600001
2600002
2400099
2500106
2604024

N1
80
81
79
82
80

N2
15
14
13
16
17

N3
40
70
40
10
20

Se puede ordenar por ROL, N1,N2 o N3. Se usa la misma


forma que para el caso unidimensional.

Ordenamiento Bidimensional

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

for i :=
for j
if
ordenar]

n filas downto 2 do
:= 1 to i-1 do
A[j][columna a ordenar] > A[j+1][columna a
then
begin
for i := 1 to n columnas do
begin
temp := A[indice][i];
A[indice][i] := A[indice + 1] [i]
A[indice+1][i] := temp;
end;
end;

Ejercicio en Clases
En grupos de 3 personas resolver el siguiente problema:
Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

El gerente de las salas de cine Cinemax desea conocer algunas


estadsticas respecto de las pelculas mas vistas. Las mismas 15
pelculas son exhibidas en cada una de las 7 salas de cine. Para
cada sala se requiere almacenar el total de personas que han
asistido a ver cada pelcula en el u
ltimo mes. Desarrolle un
programa Pascal que permita realizar las siguientes operaciones:
Ingresar la cantidad de personas que asiste a cada sala a
ver cada pelcula en un mes, en un arreglo de 7 times 15.
Determinar la mejor combinacion sala-pelcula, es decir, en
que sala y a que pelcula asistio la mayor cantidad de
p
ublico.
Determinar cual ha sido la pelcula mas vista durante el
mes y cuantos fueron los espectadores.

Fin

Patricia Trejo
Outline
Arreglos
Arreglos
Bidimensionales
B
usqueda
Ordenamiento

The end

Preguntas?

You might also like