arreglos bidimensionales

26
Patricia Trejo Outline Arreglos Arreglos Bidimensionales usqueda Ordenamiento The end Programaci´ on en Pascal Patricia Trejo Universidad T´ ecnica Federico Santa Mar´ ıa Valpara´ ıso, Primer Semestre 2006

Upload: katherine-zavala

Post on 24-Jan-2016

36 views

Category:

Documents


0 download

DESCRIPTION

Programacion 1Pascal: Arreglos (Arrays) en dos dimensiones o más

TRANSCRIPT

Page 1: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Programacion en Pascal

Patricia Trejo

Universidad Tecnica Federico Santa Marıa

Valparaıso, Primer Semestre 2006

Page 2: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Outline

1 Outline

2 Capıtulo 9: ArreglosArreglos BidimensionalesBusquedaOrdenamiento

3 The end

Page 3: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Capıtulo 9: Arreglos

Page 4: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Arreglos Bidimensionales

Page 5: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Estructura de un Arreglo Bidimensional

Un arreglo bidimensional, se ve como una matriz, es decir,tiene la siguiente forma:

Donde, por ejemplo, un valor de la matriz:

5

Es asignado como:

X[1,4] := 5;

Page 6: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Declaracion y asignacion de un ArregloBidimensional

Typematriz = array[1..N,1..M] of Tipo de dato;

VarX: matriz;

BeginX[i,j] := Valor;

End.

Page 7: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

La forma mas facil de ver un arreglo es a traves de un bucleFOR.

En arreglos unidimensionales:for i:= val inicial to val final do

accion;Ejemplofor i:=1 to 10 do

beginX[i] := i*i;writeln(X[i]);

end;

Page 8: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

En arreglos bidimensionales:for i:=1 to N do

for j:=1 to M doaccion;

Ejemplofor i:=1 to N do

for j:=1 to M doreadln(X[i,j]);

Page 9: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Ejemplos

Ejemplo 1: Inicializar una matriz con ceros, y que sea dedimension 10 x 12.for i:=1 to 10 do

for j:=1 to 12 doA[i,j] := 0;

Ejemplo 2: Poner un 1 en todas las que la suma de sus ındicessea par. Utilice la misma matriz de dimensiones 10 x 12.for i:=1 to 10 do

for j:=1 to 12 doif i+j mod 2 = 0 then

A[i,j] := 1;

Page 10: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Busqueda en Arreglos

Page 11: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Busqueda Unidimensional

Existen varias tecnicas, algunas son:

Busqueda Binaria: Requiere que el arreglo este ordenado.Es sımil de cuando buscamos una palabra en undiccionario.

Busqueda Secuencial: Se compara cada elemento con elbuscado hasta que se encuentra.

Page 12: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Busqueda Secuencial

Ejemplo

15 10 8 12 25 31 17 9 5 6

Se buscara el valor 25, entonces se compara 15, 10, 8, 12 y 25,se detiene la busqueda y se devuelve el ındice el cual indicara laposicion en la cual se encuentra el valor que estamos buscando.

i := 1;while i <= largo and A[i] <> elemento do

i := i + 1;

Page 13: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Busqueda Secuencial... Continuacion Ejemplo

Una forma mas elegante serıa:

indice : =0;i := 1;while i <= largo and indice = 0 do

beginif A[i] = elemento then

indice := i;i := i + 1;

end;

Page 14: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Busqueda Bidimensional

Se debe recorrer toda la matriz. Nuevamente veremos labusqueda secuencial pero a nivel bidimensional.

Page 15: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Busqueda Bidimensional

bool := true; indiceI := 0; indiceJ := 0; i := 1;while i <= largoI and bool do

beginj := 1;while j <= largoJ and bool do

beginif A[i][j] = elemento then

beginindiceI := i;indiceJ := j;bool := false

end;j := j + 1

end;i := i + 1

end;

Page 16: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Busqueda Bidimensional

Una busqueda mas eficiente es obtener toda la informacion deun cierto elemento. Sea la matriz de la siguiente forma:

Apellido RUT Nombre

A . . .

B . . ....

Perez 11111111-1 Juan

Page 17: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Busqueda Bidimensional

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 doacciones;

Page 18: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Ordenamiento en Arreglos

Page 19: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Ordenamiento Unidimensional

Existen diversas formas de ordenar un arreglo. En el curso severa uno de los mas simples y populares... OrdenamientoBurbuja o Bubble Sort.

Ordenamiento Burbuja, su nombre proviene del hecho de quelos elementos mas “livianos” (chicos), salgan a flote, mientrasque los mas “pesados” (grandes) se hundan.

Page 20: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Ejemplo

15 8 4 50 3

Si el de abajo es mas chico se cambian los valores de posicion yse continua con el siguiente numero. Luego que termina de darel primer recorrido al arreglo, comienza de nuevo desde elprincipio, pero el elemento mas pesado ya quedo al fondo, porlo tanto, ahora se comparan solo los primeros N-1 elementos.

15 8 8 8 8 8 4 4 4 4 4 4 38 15 4 4 4 4 8 8 8 8 8 3 44 4 15 15 15 15 15 15 3 3 3 8 850 50 50 50 3 3 3 3 15 15 15 15 153 3 3 3 50 50 50 50 50 50 50 50 50

Page 21: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Ordenamiento Burbuja

for i := largo downto 2 dofor j := 1 to i-1 do

if A[j] > A[j+1] thenbegin

temp := A[j];A[j] := A[j+1];A[j+1] := temp;

end;

Page 22: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Ordenamiento Burbuja... Otra Forma

for i := 1 to largo dofor j := 1 downto i+1 do

if A[j] < A[j-1] thenbegin

temp := A[j];A[j] := A[j-1];A[j-1] := temp;

end;

Page 23: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Ordenamiento Bidimensional

Es muy costoso y poco eficiente ordenar completamente unarreglo bidimensional, por lo que se ordena en base a una fila ocolumna.Ejemplo

Rol N1 N2 N3

2600001 80 15 40

2600002 81 14 70

2400099 79 13 40

2500106 82 16 10

2604024 80 17 20

Se puede ordenar por ROL, N1,N2 o N3. Se usa la mismaforma que para el caso unidimensional.

Page 24: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Ordenamiento Bidimensional

for i := n◦ filas downto 2 dofor j := 1 to i-1 do

if A[j][columna a ordenar] > A[j+1][columna aordenar] then

beginfor i := 1 to n◦ columnas do

begintemp := A[indice][i];A[indice][i] := A[indice + 1] [i]A[indice+1][i] := temp;

end;end;

Page 25: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Ejercicio en Clases

En grupos de 3 personas resolver el siguiente problema:

El gerente de las salas de cine Cinemax desea conocer algunasestadısticas respecto de las pelıculas mas vistas. Las mismas 15pelıculas son exhibidas en cada una de las 7 salas de cine. Paracada sala se requiere almacenar el total de personas que hanasistido a ver cada pelıcula en el ultimo mes. Desarrolle unprograma Pascal que permita realizar las siguientes operaciones:

Ingresar la cantidad de personas que asiste a cada sala aver cada pelıcula en un mes, en un arreglo de 7 times 15.

Determinar la mejor combinacion sala-pelıcula, es decir, enque sala y a que pelıcula asistio la mayor cantidad depublico.

Determinar cual ha sido la pelıcula mas vista durante elmes y cuantos fueron los espectadores.

Page 26: Arreglos Bidimensionales

Patricia Trejo

Outline

Arreglos

ArreglosBidimensionales

Busqueda

Ordenamiento

The end

Fin

¿Preguntas?