Sei sulla pagina 1di 82

Unidad 5.

Arreglos: g
Vectores y Matrices
Prof. Eliana Guzmn U.
S t A 2012 Semestre A-2012
Estructuras de datos Estructuras de datos
Los arreglos son un tipo de estructura de
datos.
Una estructura de datos es una coleccin de
datos que se caracteriza por su organizacin
y las operaciones que se definen en ella. y p q
Las estructuras de datos son muy
importantes en los sistemas de computadora importantes en los sistemas de computadora.
Los tipos de datos ms frecuentes utilizados
en los diferentes lenguajes de programacin en los diferentes lenguajes de programacin
son:
Tipos de datos Tipos de datos
Estructuras de datos Estructuras de datos
Las estructuras de datos estticas son Las estructuras de datos estticas son
aquellas en las que el tamao ocupado en
memoria se define antes de que el q
programa se ejecute y no puede
modificarse durante la ejecucin del
E t t t t programa. Estas estructuras estn
implementadas en casi todos los
lenguajes de programacin: array lenguajes de programacin: array
(vector/matriz), registros, ficheros o
archivos conjuntos (Pascal) archivos, conjuntos (Pascal).
Estructuras de datos Estructuras de datos
Las estructuras de datos dinmicas no tienen
las limitaciones o restricciones en el tamao de
memoria ocupada que son propias de las
estructuras estticas Mediante el uso de un tipo estructuras estticas. Mediante el uso de un tipo
datos especfico denominado puntero, es
posible construir estructuras de datos dinmicas p
que son soportadas por la mayora de los
lenguajes. Las estructuras de datos dinmicas
por excelencia son las listas (enlazadas pilas y por excelencia son las listas (enlazadas, pilas y
colas), rboles (binarios, rbol-b, bsqueda
binaria) y grafos.
Arreglos Arreglos
Un arreglo (matriz o vector) es un conjunto Un arreglo (matriz o vector) es un conjunto
finito y ordenado de elementos
homogneos. La propiedad ordenados g p p
significa que el elemento primero,
segundo, tercero,, n-simo de un
l d id tifi d arreglo puede ser identificado.
Los elementos de un arreglo son
h d i d l i ti d homogneos, es decir, del mismo tipo de
datos (todos, de tipo cadena o enteros, o
reales etc ) reales, etc.).
Arreglos unidimensionales:
vectores
El tipo ms simple de arreglo es el arreglo p p g g
unidimensional o vector. Un vector de una dimensin
denominado NOTAS que consta de n elementos se
puede representar as: puede representar as:
El subndice o ndice de un elemento [1,2,3,,i,,n]
designa la posicin que este ocupa en el vector.
Solo el vector global tiene nombre (NOTAS). Los
elementos del vector se referencian por su subndice o
ndice, es decir, su posicin relativa en el vector. ndice, es decir, su posicin relativa en el vector.
Arreglos unidimensionales:
vectores
Notacin algortmica para declarar vectores:
i tipo
<nombre del tipo array> = array[dimensiones] de <tipo de dato>
var
identificador de la variable de este tipo: <nombre del tipo array> identificador de la variable de este tipo: <nombre del tipo array>
Ejemplos:
tipo tipo tipo tipo
nombres= array [1..10] de carcter nmero=array [1..100] de entero
var var
N,M: nombres NUM: nmero ,
se estn declarando dos vectores se est declarando un vector
N y M de 10 elementos cada uno NUM de 100 elementos de tipo
de tipo carcter. entero.
Arreglos unidimensionales:
O i V Operaciones con Vectores
Las operaciones que se pueden realizar con Las operaciones que se pueden realizar con
vectores durante el proceso de resolucin de un
problema usando la programacin son:
Recorrido (acceso secuencial).
Lectura/escritura.
Asignacin.
Actualizacin (aadir, borrar insertar). ctua ac (a ad , bo a se ta )
Ordenacin.
Bsqueda Bsqueda.
1. Recorrido (acceso secuencial) 1. Recorrido (acceso secuencial)
Se puede acceder a cada elemento de un Se puede acceder a cada elemento de un
vector para introducir datos en l (leer)
bien para visualizar su contenido bien para visualizar su contenido
(escribir).
A la operacin de efectuar una accin A la operacin de efectuar una accin
general sobre todos los elementos de un
vector se le denomina recorrido del vector vector se le denomina recorrido del vector.
1. Recorrido (acceso secuencial) 1. Recorrido (acceso secuencial)
Estas operaciones se realizan utilizando Estas operaciones se realizan utilizando
estructuras repetitivas, cuyas variables de
control (por ejemplo i) se utilizan como control (por ejemplo i) se utilizan como
subndices del vector (por ejemplo S[i]).
El incremento del contador del bucle El incremento del contador del bucle
producir el acceso sucesivo a cada
elemento del vector elemento del vector.
1. Recorrido (acceso secuencial) 1. Recorrido (acceso secuencial)
Normalmente se utiliza la estructura de repeticin Normalmente se utiliza la estructura de repeticin
desde, ya que se conoce de antemano la cantidad
de veces que se desea repetir el bucle:
desde i 1 hasta 20 hacer
escribir(Introduzca el elemento ,i, del vector F: )
leer(F[i]) ee ( [])
fin_desde
1. Recorrido (acceso secuencial) 1. Recorrido (acceso secuencial)
Tambin se pueden utilizar las estructuras de p
repeticin mientras y repetir:
i 1
mientras i <= 20 hacer
escribir(Introduzca el elemento ,i, del
vector F: )
leer(F[i])
i i 1 i i + 1
fin_mientras
1. Recorrido (acceso secuencial) 1. Recorrido (acceso secuencial)
i 1 i 1
repetir
ibi (I t d l l t i d l escribir(Introduzca el elemento ,i, del
vector F: )
leer(F[i])
i i + 1
hasta_que i > 20
2 Lectura/escritura 2. Lectura/escritura
La lectura/escritura de datos en arreglos La lectura/escritura de datos en arreglos
normalmente se realiza con estructuras
repetitivas (usando un recorrido secuencial).
Las instrucciones simples de lectura/escritura se
representarn como:
leer(A[5]) lectura del elemento 5 del vector A
escribir(A[8]) escribir el elemento 8 del vector A
2 Lectura/escritura 2. Lectura/escritura
Generalmente se desea leer o escribir el vector
completo, para lo cual se debe hacer un
recorrido del vector:
desde i1 hasta n hacer
escribir(Introduzca el elemento ,i, del ( , ,
vector F: )
leer(F[i])
fi d d fin_desde
2 Lectura/escritura 2. Lectura/escritura
Para escribir el vector F: Para escribir el vector F:
d d i 1 h t h desde i1 hasta n hacer
escribir(F[i])
fin_desde
2 Lectura/escritura 2. Lectura/escritura
Para facilitar futuras operaciones con el Para facilitar futuras operaciones con el
vector, se recomienda inicializar el vector
antes de operar con l Puede usarse antes de operar con l. Puede usarse
cualquier valor que respete el tipo de dato
del vector: del vector:
desde i 1 hasta n hacer
nombre[i] * nombre[i]
fin_desde
3 Asignacin 3. Asignacin
La asignacin de valores a un elemento del La asignacin de valores a un elemento del
vector se realizar con la instruccin de
asignacin: asignacin:
A[29] 5 asigna el valor 5 al elemento
20 del vector A 20 del vector A
Suma A[1] + A[3]
A[3] A[3] + 10.8
A[1] A[4] + A[5] [ ] [ ] [ ]
3 Asignacin 3. Asignacin
Si se desea asignar valores a todos los Si se desea asignar valores a todos los
elementos de un vector, se debe recurrir a
estructuras repetitivas e incluso selectivas. p
Ejemplo: si se desea dar el mismo valor a
todos los elementos del vector A de tipo p
entero:
desde i 1 hasta 5 hacer
A[i] 8
fin_desde
4 Actualizacin 4. Actualizacin
La operacin de actualizacin de un vector La operacin de actualizacin de un vector
consta a su vez de tres operaciones ms
elementales: elementales:
Aadir elementos.
I t l t Insertar elementos.
Borrar elementos.
4 Actualizacin 4. Actualizacin
Aadir elementos: es la operacin de Aadir elementos: es la operacin de
agregar un nuevo elemento al final del
vector La nica condicin necesaria para vector. La nica condicin necesaria para
esta operacin consistir en la
comprobacin de que existe espacio comprobacin de que existe espacio
suficiente para el nuevo elemento, dicho
de otra manera que el vector no contenga de otra manera, que el vector no contenga
todos los elementos con que fue definido.
4 Actualizacin 4. Actualizacin
Ejemplo: se tiene un vector de edades definido Ejemplo: se tiene un vector de edades definido
para 7 elementos, pero ya tiene almacenado 5
elementos EDADES[1], EDADES[2],
EDADES[3], EDADES[4] y EDADES[5]. Se
podrn aadir dos elementos ms al final del
t i l i d i i vector con una simple operacin de asignacin:
EDADES[6] 23
EDADES[ ] 20 EDADES[7] 20
(Si conoce los espacio del vector que estn libres.)
4 Actualizacin 4. Actualizacin
Si no se sabe si el vector tiene espacios disponibles,
primero debe determinarse esto antes de intentar aadir primero debe determinarse esto antes de intentar aadir
elementos al vector:
desde i 1 hasta n hacer
si (edades[i]=-1) entonces si (edades[i] 1) entonces
escribir(Introduzca una edad:)
leer(edades[i])
si no si_no
cont cont + 1
fin_si
fin desde fin_desde
si (cont=n) entonces
escribir(El vector no tiene espacio para aadir ms elementos)
fin si fin_si
4 Actualizacin 4. Actualizacin
Insertar elementos: consiste en introducir un Insertar elementos: consiste en introducir un
elemento en el interior de un vector ordenado.
En este caso se necesita un desplazamiento
previo hacia abajo para colocar el nuevo
elemento en su posicin relativa.
Ejemplo: se tiene un vector de 8 elementos que
contiene nombres ordenados alfabticamente y
se desea insertar dos nuevos nombres: se desea insertar dos nuevos nombres:
Fernando y Luis.
4 Actualizacin 4. Actualizacin
Como Fernando est entre Carlos y Gerardo se deben desplazar hacia
abajo los elementos 3, 4 y 5 que pasarn a ocupar las posiciones relativas
4, 5 y 6.
P t i t d b li l i i l b L i Posteriormente debe realizarse la misma operacin con el nombre Luis
que ocupar la posicin 6.
El algoritmo que realiza esta operacin para un vector de n
elementos es el siguiente, suponiendo que hay espacio
suficiente en el vector:
algoritmo insertar_elemento
const
escribir(Introduzca el elemento:)
leer(nuevo)
desde i 1 hasta n hacer
n=500
tipo
vector=array [1 .. n] de cadena[50]
var
desde i 1 hasta n hacer
si (NOMBRES[i]<nuevo) entonces
cont cont + 1
fin_si
fin desde
var
NOMBRES: vector
nuevo: cadena[50]
Pos, ocupada, cont: entero
fin_desde
Pos cont + 1
i ocupada
mientras (i >= Pos) hacer
NOMBRES[i+1] NOMBRES[i]
inicio
desde i 1 hasta n hacer
si (NOMBRES[i]<>vacio) entonces
NOMBRES[i+1] NOMBRES[i]
i i - 1
fin_mientras
NOMBRES[Pos] nuevo
ocupada ocupada + 1
fin_si
fin_desde
ocupada ocupada + 1
fin_si
fin
si (ocupada=n) entonces
escribir(No se pueden insertar elementos)
si_no
4 Actualizacin 4. Actualizacin
Borrar elementos: la operacin de borrar el Borrar elementos: la operacin de borrar el
ltimo elemento de un vector no
representa ningn problema representa ningn problema.
El borrado de un elemento del interior del
vector provoca el movimiento hacia arriba vector provoca el movimiento hacia arriba
de los elementos inferiores a l para
reorganizar el vector reorganizar el vector.
4 Actualizacin 4. Actualizacin
Si desea borrar elemento
3 (Gerardo) debe desplazar 3 (Gerardo), debe desplazar
hacia arriba los elementos
de las posiciones 4 (Lorena)
y 5 (Marcos) y 5 (Marcos).
4. Actualizacin
Ejemplo: en el vector del ejemplo anterior NOMBRES,
borrar el elemento que el usuario desee. q
algoritmo borrar_elemento
const
N=500 N=500
tipo
vector = array [1 .. N] de cadena[50]
var
NOMBRES: vector
j,ocupada: entero
nom: cadena[50]
Inicio
escribir(Introduzca el nombre a borrar:) escribir( Introduzca el nombre a borrar: )
leer(nom)
4 Actualizacin 4. Actualizacin
desde i 1 hasta N hacer
si (NOMBRES[i]=nom) entonces
j i
fi i fin_si
fin_desde
desde i j hasta N hacer desde i j hasta N hacer
NOMBRES[i] NOMBRES[i+1]
fin desde _desde
ocupada ocupada -1
fin
5. Mtodos de ordenamiento y
bsqueda en vectores
Ordenacin (clasificacin) Ordenacin (clasificacin)
Es la operacin de organizar un conjunto Es la operacin de organizar un conjunto
de datos en algn orden o secuencia
especfica, tal como creciente o p
decreciente para datos numricos o
alfabticamente para datos de tipo
t d d t carcter o cadena de caracteres.
Operaciones tpicas de ordenacin son:
li t d hi d li t d lista de nmeros, archivos de clientes de
banco, nombres en una agenda telefnica.
Ordenacin (clasificacin) Ordenacin (clasificacin)
En sntesis la ordenacin significa poner En sntesis, la ordenacin significa poner
objetos en orden ascendente o
descendente El propsito final de la descendente. El propsito final de la
clasificacin es facilitar la manipulacin de
datos en un vector datos en un vector.
Ordenacin (clasificacin) Ordenacin (clasificacin)
Los mtodos directos son los que se Los mtodos directos son los que se
realizan en el espacio ocupado por el
arreglo Los que vamos a estudiar son: arreglo. Los que vamos a estudiar son:
Mtodo de intercambio o burbuja.
O d i S l i Ordenacin por Seleccin.
Ordenacin por Insercin.
Mtodo de intercambio o de
b b j burbuja
Se basa en el principio de comparar pares
de elementos adyacentes e
intercambiarlos entre s hasta que estn
todos ordenados.
Mtodo de intercambio o de
b b j burbuja
El elemento cuyo valor es mayor sube posicin a El elemento cuyo valor es mayor sube posicin a
posicin hacia el final de la lista, al igual que las
burbujas de aire en un depsito.
Tras realizar un recorrido completo por todo el
vector, el elemento mencionado habr subido
en la lista y ocupar la ltima posicin.
En el segundo recorrido, el segundo elemento
ll l l i i i llegar a la penltima posicin, y as
sucesivamente.
Mtodo de intercambio o de
b b j burbuja
Los pasos a dar son: p
1. Comparar A[1] y A[2], si estn en orden, se
mantienen como estn, en caso contrario se
i bi i intercambian entre si.
2. A continuacin se comparan los elementos 2 y
3 de nuevo se intercambian si es necesario 3, de nuevo se intercambian si es necesario.
3. El proceso contina hasta que cada elemento
del vector ha sido comparado con sus de ecto a s do co pa ado co sus
elementos adyacentes y se han realizado los
intercambios necesarios.
Mtodo de intercambio o de
b b j burbuja
La accin de intercambiar entre s los La accin de intercambiar entre s los
valores de dos elementos A[i], A[i+1] es
una accin compuesta que contiene las una accin compuesta que contiene las
siguientes acciones, utilizando una
variable auxiliar: variable auxiliar:
A[i] A[i+1]
2
AUX
1 3
Mtodo de intercambio o de
b b j burbuja
En pseudocdigo: En pseudocdigo:
AUX A[i]
A[i] A[i+1] A[i] A[i+1]
A[i+1] AUX
Mtodo de intercambio o de
burbuja burbuja
algoritmo burbuja1
const
algoritmo burbuja2
const
N=200
tipo
array [1..N] de entero: vector
var
vector: X
N=200
tipo
array [1..N] de entero: vector
var
vector: X vector: X
entero: i, j, aux
inicio
desde i 1 hasta N hacer
leer(X[i])
fin desde
vector: X
entero: i, j,aux
inicio
desde i 1 hasta N hacer
leer(X[i])
fin desde fin_desde
desde i 1 hasta N-1 hacer
desde j 1 hasta N-1 hacer
si X[j] >X[j+1] entonces
AUX X[j]
fin_desde
desde i 1 hasta N-1 hacer
desde j 1 hasta N-i hacer
si X[j] >X[j+1] entonces
AUX X[j] [j]
X[j] X[j+1]
X[j+1] AUX
fin_si
fin_desde
fin desde
[j]
X[j] X[j+1]
X[j+1] AUX
fin_si
fin_desde
fin desde fin_desde
desde i 1 hasta N hacer
escribir(X[i])
fin_desde
fin
fin_desde
desde i 1 hasta N hacer
escribir(X[i])
fin_desde
fin
Mtodo de intercambio o de
b b j burbuja
Suponga que se quiere ordenar de forma Suponga que se quiere ordenar de forma
ascendente el vector:
Mtodo de ordenacin por
l i seleccin
Este mtodo se basa en buscar el menor Este mtodo se basa en buscar el menor
elemento del vector y colocarlo en la
primera posicin Luego se busca el primera posicin. Luego se busca el
segundo elemento ms pequeo y se
coloca en la segunda posicin y as coloca en la segunda posicin, y as
sucesivamente.
Mtodo de ordenacin por
l i seleccin
Los pasos sucesivos a dar son: Los pasos sucesivos a dar son:
1. Seleccionar el menor elemento del vector de
n elementos n elementos.
2. Intercambiar dicho elemento con el primero.
3 Repetir estas operaciones con los n-1 3. Repetir estas operaciones con los n-1
elementos restantes, seleccionando el
segundo elemento, continuar con los n-2 g ,
elementos restantes hasta que slo quede
el mayor.
Mtodo de ordenacin por
l i seleccin
Pseudocdigo con estructura desde
i i i inicio
desde i hasta N-1 hacer
AUX X[i]
K i K i
desde j i+1 hasta N hacer
si X[j] < AUX entonces
AUX X[j] AUX X[j]
K j
fin_si
fin_desde _
X[K] X[i]
X[i] AUX
fin_desde
fin
Mtodo de ordenacin por
i i insercin
Este mtodo consiste en insertar un Este mtodo consiste en insertar un
elemento en el vector en una parte ya
ordenada de este vector y comenzar de ordenada de este vector y comenzar de
nuevo con los elementos restantes.
Por ser utilizado cuando uno juega cartas Por ser utilizado cuando uno juega cartas
tambin se conoce con el nombre de
mtodo de la baraja mtodo de la baraja.
Mtodo de ordenacin por
i i insercin
Mtodo de ordenacin por
i i insercin
El mtodo se basa en comparaciones y El mtodo se basa en comparaciones y
desplazamientos sucesivos. El algoritmo
de ordenacin de un vector X de N de ordenacin de un vector X de N
elementos se realiza con un recorrido de
todo el vector y la insercin del elemento todo el vector y la insercin del elemento
correspondiente en el lugar adecuado.
Mtodo de ordenacin por
i i insercin
algoritmo mtodo_insercin
tipo tipo
array [1..N] de entero:
vector
var
vector: X vector: X
entero: i, j
inicio
desde i 2 hasta N hacer
AUX X[i]
K i 1
SW falso
mientras (AUX <X[K] mientras (AUX < X[K]
hacer
X[K+1] X[K]
K K 1
fin mientras fin_mientras
X[K+1] AUX
fin_desde
fin.
Mtodos de Bsqueda Mtodos de Bsqueda
La recuperacin de informacin, como ya se ha p , y
comentado, es una de las aplicaciones ms
importantes de las computadoras.
L b d fi l i d La bsqueda se refiere a la operacin de
encontrar la posicin de un elemento entre un
conjunto de elementos dados: lista tabla o conjunto de elementos dados: lista, tabla o
fichero.
Existen diferentes algoritmos de bsqueda. El
algoritmo elegido depende de la forma en que
se encuentren organizados los datos.
Mtodos de Bsqueda Mtodos de Bsqueda
La operacin de bsqueda de un elemento La operacin de bsqueda de un elemento
N en un conjunto de elementos consiste
en: en:
1. Determinar si N pertenece al conjunto y,
en ese caso indicar su posicin en l en ese caso, indicar su posicin en l.
2. Determinar si N no pertenece al
j t conjunto.
Mtodos de Bsqueda Mtodos de Bsqueda
Los mtodos ms usuales de bsqueda Los mtodos ms usuales de bsqueda
son:
Bsqueda secuencial o lineal Bsqueda secuencial o lineal.
Bsqueda binaria.
Bsqueda por transformacin de claves
(hash).
Bsqueda secuencial o lineal Bsqueda secuencial o lineal
El mtodo ms sencillo de buscar un El mtodo ms sencillo de buscar un
elemento en un vector es explorar
secuencialmente el vector (recorrer el secuencialmente el vector (recorrer el
vector), desde el primer elemento hasta el
ltimo Si se encuentra el elemento ltimo. Si se encuentra el elemento
buscado visualizar un mensaje similar a
Elemento encontrado en la posicin x en Elemento encontrado en la posicin x, en
caso contrario visualizar un mensaje
similar a Elemento no existe en el vector similar a Elemento no existe en el vector .
Bsqueda secuencial o lineal Bsqueda secuencial o lineal
En otras palabras la bsqueda secuencial En otras palabras, la bsqueda secuencial
compara cada elemento del vector con el
valor deseado hasta que se encuentra o valor deseado, hasta que se encuentra o
termina de recorrer el vector completo.
La bsqueda secuencial no requiere La bsqueda secuencial no requiere
ningn registro por parte del vector por
consiguiente no requiere que el vector consiguiente no requiere que el vector
est ordenado.
Bsqueda secuencial o lineal Bsqueda secuencial o lineal
Este mtodo tiene el inconveniente del Este mtodo tiene el inconveniente del
consumo excesivo de tiempo en la
localizacin del elemento buscado localizacin del elemento buscado.
Cuando el elemento buscado no se
encuentra en el vector se verifican o encuentra en el vector, se verifican o
comprueban sus n elementos. Por esto no
es el mtodo ms adecuado para vectores es el mtodo ms adecuado para vectores
con un gran nmero de elementos.
Bsqueda secuencial o lineal q
algoritmo bsqueda_secuencial
const
N=1000
si(cont=N)entonces
tipo
array [1..N] de entero: vector
var
vector: X
escribir(Elelemento,t,nose
encuentraenestevector)
fin_si
fin.
entero: i,t,cont
inicio
desde i 1 hasta N hacer
leer(X[i])
fin.
fin_desde
escribir(Introduzca el elemento a buscar: )
leer(t)
desde i 1 hasta N hacer
si (X[i] = t) entonces
escribir(Elemento encontrado en la posicin ,i)
si_no
cont cont + 1
fin_si
fin_desde
algoritmo bsqueda_secuencial2
const N=1000
tipo
[1 N] d t t array [1..N] de entero: vector
var
vector: X
entero: i,j,t
l i t d lgica: encontrado
inicio
desde i 1 hasta N hacer
leer(X[i])
fi d d fin_desde
escribir(Introduzca el elemento a buscar: )
leer(t)
encontrado falso
d d i 1 h t N h desde i 1 hasta N hacer
si (X[i] = t) entonces
encontrado verdadero
j i
fi i fin_si
fin_desde
si encontrado entonces
escribir(Elemento encontrado en la posicin ,j)
i si_no
escribir(Elemento no encontrado)
fin_si
fin.
Bsqueda binaria Bsqueda binaria
Presupone una ordenacin previa de los Presupone una ordenacin previa de los
elementos del vector.
Este mtodo se basa en la divisin Este mtodo se basa en la divisin
sucesiva del vector en dos partes, y seguir
dividiendo cada mitad hasta encontrar el dividiendo cada mitad hasta encontrar el
elemento buscado.
Bsqueda binaria Bsqueda binaria
Utiliza un mtodo de divide y vencers para Utiliza un mtodo de divide y vencers para
localizar el valor deseado.
Con este mtodo se examina primero el elemento p
central del vector, si este es el elemento
buscado, entonces la bsqueda ha terminado.
En caso contrario se determina si el elemento
buscado est en la primera o segunda mitad de
l li i i i la lista, y a continuacin se repite este proceso,
utilizando el elemento central de esa sublista.
Bsqueda binaria Bsqueda binaria
Es un mtodo eficiente siempre que el Es un mtodo eficiente siempre que el
vector est ordenado.
En la prctica esto suele suceder pero no En la prctica esto suele suceder, pero no
siempre es as. Por esta razn la
bsqueda binaria exige una ordenacin bsqueda binaria exige una ordenacin
previa del vector.
algoritmo bsqueda_binaria
tipo
array [1..500] de entero: vector
var
vector: X
entero: i,j,t
lgica: encontrado
i i i inicio
leer(k)
primero 1
ltimo N
t l t (( i lti )/2) central trunc((primero+ltimo)/2)
mientras (primero <= ltimo) y (X[central] <> K) hacer
si (K < X[central]) entonces
ltimo central - 1
i si_no
primero central + 1
fin_si
central trunc((primero+ltimo)/2)
fi i t fin_mientras
si K = X[central] entonces
escribir(Elemento encontrado en la posicin ,central)
si_no
ibi (El t t d ) escribir(Elemento no encontrado)
fin_si
fin.
Ejemplos de vectores Ejemplos de vectores
1 Escribir un algoritmo que permita calcular 1. Escribir un algoritmo que permita calcular
la desviacin estndar de una lista de N
nmeros El valor de N no puede ser nmeros. El valor de N no puede ser
mayor a 15.
1
) (
1
2

=

=
n
media x
desviacin
n
i
i
1 n
Ejemplos de vectores Ejemplos de vectores
2 Escribir un algoritmo que determine el 2. Escribir un algoritmo que determine el
mayor valor de una lista L de N nmeros
reales reales.
3. Escribir un algoritmo que determine la
suma de los nmeros pares e impares suma de los nmeros pares e impares
de un vector.
Arreglos de varias dimensiones Arreglos de varias dimensiones
Existen grupos de datos que se representan Existen grupos de datos que se representan
mejor en forma de tabla o matriz con dos
o ms subndices Ejemplos tpicos de o ms subndices. Ejemplos tpicos de
tablas o matrices son:
Distancias entre ciudades Distancias entre ciudades
Horarios
Informes de ventas peridicas
Arreglos de varias dimensiones Arreglos de varias dimensiones
Se pueden definir a las tablas o matrices Se pueden definir a las tablas o matrices
como arreglos multidimensionales, cuyos
elementos se pueden referenciar por dos, p p
tres o ms subndices. Los arreglos de
varias dimensiones se dividen en dos
d grandes grupos:
Arreglos bidimensionales: tablas o
t i matrices.
Arreglos multidimensionales.
Arreglos bidimensionales: matrices Arreglos bidimensionales: matrices
Un arreglo bidimensional se puede Un arreglo bidimensional se puede
considerar como un vector de vectores.
Es un conjunto de elementos todos del Es un conjunto de elementos, todos del
mismo tipo, en el cual el orden de los
componentes es significativo y en el que componentes es significativo y en el que
se necesitan especificar dos subndices
para poder identificar cada elemento del para poder identificar cada elemento del
arreglo.
Arreglos bidimensionales: matrices Arreglos bidimensionales: matrices
Matriz A:
30
Fila 1
30 Fila 2
Fila 3
Fila 4
150
Fila 5
C l 1 C l 2 C l 6 Columna 1 Columna 2 Columna 6
Arreglos bidimensionales: matrices Arreglos bidimensionales: matrices
Matriz A:
A[2,5]
30 30
Subndice i
para las filas
150
Subndice j Subndice j
para las columnas
A[5,2]
Arreglos bidimensionales: matrices Arreglos bidimensionales: matrices
Notacin algortmica para declarar matrices:
tipo
<nombre del tipo array> =array [1..M,1..N] de <tipo de dato>
var
identificador de la variable de este tipo: <nombre del tipo array>:
Ej l Ejemplo:
tipo
Notas = array [1..5, 1..6] de enter
var var
A, B: Notas
Arreglos bidimensionales: matrices Arreglos bidimensionales: matrices
Un arreglo bidimensional se dice que tiene
M*N l t d d M l d M*N elementos, donde M es el nmero de
filas y N el nmero de columnas.
Arreglos bidimensionales: matrices Arreglos bidimensionales: matrices
Operaciones con matrices: Operaciones con matrices:
1. Asignacin.
2 L t / it 2. Lectura/escritura.
3. Recorrido secuencial: Por fila
Por columna
Arreglos bidimensionales: matrices Arreglos bidimensionales: matrices
1. Asignacin: consiste en asignar directamente g g
un valor a cualquier elemento de la matriz.
Ejemplo: A[1,1] 3
2 L / i l li 2. Lectura/escritura: normalmente se realiza con
estructuras de repeticin. Pero una instruccin
simple de lectura/escritura podra ser: simple de lectura/escritura podra ser:
leer(A) lectura de la matriz A
escribir(A) escritura de la matriz A esc b ( ) esc tu a de a at
leer(A[2,3]) lectura del elemento en la fila 2
columna 3 de la matriz A.
Arreglos bidimensionales: matrices Arreglos bidimensionales: matrices
Recorrido secuencial: Se puede acceder a los p
elementos de una matriz para introducir datos
(leer) en ella o bien para visualizar su contenido
(escribir) realizar comparaciones o bsquedas (escribir), realizar comparaciones o bsquedas
de elementos.
Esta operacin se realiza usando estructuras de Esta operacin se realiza usando estructuras de
repeticin, cuyas variables de control se utilizan
como subndices de la matriz (por ejemplo i, j).
El incremento del contador del bucle producir
el tratamiento sucesivo de los elementos de la
matriz matriz.
Arreglos bidimensionales: matrices Arreglos bidimensionales: matrices
El recorrido secuencial se puede hacer por filas o El recorrido secuencial se puede hacer por filas o
por columnas.
Recorrido secuencial por filas: p
desde i 1 hasta 3 hacer
desde j 1 hasta 4 hacer
leer(A[i,i])
fin_desde
fin desde fin_desde
Arreglos bidimensionales: matrices Arreglos bidimensionales: matrices
Recorrido secuencial por columnas: Recorrido secuencial por columnas:
desde j 1 hasta 4 hacer
desde i 1 hasta 3 hacer
leer(A[i,i])
fin desde fin_desde
fin_desde
Ejemplo 1: Inicializar la matriz A de 10 filas y
4 l l t t d d k 4 columnas con un valor constante dado k.
algoritmo inicializacin_matriz
const const
M=10
N=4
tipo
array[1 M 1 N] de entero: Matriz array[1..M, 1..N] de entero: Matriz
var
Matriz: A
entero: i, j, k
Inicio Inicio
leer(k)
desde i 1 hasta M hacer
desde j 1 hasta N hacer
A[i i] k A[i,i] k
fin_desde
fin_desde
fin.
Ejemplos de matrices Ejemplos de matrices
Ejemplo 2: Escribir un algoritmo que permita Ejemplo 2: Escribir un algoritmo que permita
sumar el nmero de elementos positivos y
negativos de una matriz T negativos de una matriz T.
Ejemplo 3: Escribir un algoritmo que
obtenga la suma de los elementos de obtenga la suma de los elementos de
cada una de las filas y de cada una de las
columnas de una matriz de Mfilas y N columnas de una matriz de M filas y N
columnas.
Ejemplos de matrices Ejemplos de matrices
Ejemplo 4: Escriba un algoritmo que realice Ejemplo 4: Escriba un algoritmo que realice
la suma de todos los elementos de una
matriz B de M filas y N columnas. y
Ejemplo 5: El jefe de recursos humanos de
una tienda de 8 departamentos, desea p
registrar la asistencia de los trabajadores
cada da de la semana en cada
d t t bt l i i t departamento, para obtener la siguiente
informacin:
Ejemplos de matrices Ejemplos de matrices
a) La cantidad de trabajadores que ) j q
laboraron cada da de la semana.
b) El departamento al que ms asistieron b) El departamento al que ms asistieron
sus trabajadores durante la semana.
c) La cantidad de trabajadores que c) La cantidad de trabajadores que
asistieron el da sbado y el da
domingo domingo.
d) A cul departamento asistieron la menor
tid d d t b j d d t l cantidad de trabajadores durante la
semana.
Arreglos multimensionales Arreglos multimensionales
Un arreglo se puede definir de tres, cuatro y Un arreglo se puede definir de tres, cuatro y
hasta n dimensiones.
Se manejan los mismos conceptos para los Se manejan los mismos conceptos para los
subndices que en los vectores o matrices.
Cada elemento del arreglo se puede Cada elemento del arreglo se puede
identificar usando la cantidad de
subndices necesarios, por ejemplo en un p j p
arreglo de n dimensiones se escribir:
A[I
1
, I
2
, I
3
, , I
n
]
Arreglos multimensionales Arreglos multimensionales
Ejemplo: Un arreglo de tres dimensiones Ejemplo: Un arreglo de tres dimensiones
puede ser uno que contenga los datos
relativos al nmero de estudiantes de una relativos al nmero de estudiantes de una
universidad de acuerdo a los siguientes
criterios: criterios:
ao (primero a quinto)
sexo (femenino/masculino) sexo (femenino/masculino)
facultad (cinco facultades diferentes)
Arreglos multimensionales Arreglos multimensionales
Curso
Facultad
Curso
Sexo

Potrebbero piacerti anche