Download - 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
Patricia Trejo
Outline
Arreglos
ArreglosBidimensionales
Busqueda
Ordenamiento
The end
Outline
1 Outline
2 Capıtulo 9: ArreglosArreglos BidimensionalesBusquedaOrdenamiento
3 The end
Patricia Trejo
Outline
Arreglos
ArreglosBidimensionales
Busqueda
Ordenamiento
The end
Capıtulo 9: Arreglos
Patricia Trejo
Outline
Arreglos
ArreglosBidimensionales
Busqueda
Ordenamiento
The end
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;
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.
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;
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]);
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;
Patricia Trejo
Outline
Arreglos
ArreglosBidimensionales
Busqueda
Ordenamiento
The end
Busqueda en Arreglos
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.
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;
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;
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.
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;
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
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;
Patricia Trejo
Outline
Arreglos
ArreglosBidimensionales
Busqueda
Ordenamiento
The end
Ordenamiento en Arreglos
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.
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
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;
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;
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.
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;
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.
Patricia Trejo
Outline
Arreglos
ArreglosBidimensionales
Busqueda
Ordenamiento
The end
Fin
¿Preguntas?