You are on page 1of 20

ALGORITMOS

Expositor : Jorge Medianero A.


Autor: Jos Carlos, Garca La Riva
Vectores y Matrices
Fundamentos I


Estructura de datos:
Arrays
ARREGLOS
Fundamentos I
tipo
Arrays Unidimensionales: Vectores
Arrays Bi-dimensionales: Matrices


Qu es un arreglo ?
Un arreglo es una coleccin de elementos finitos,
homogneos y ordenados que se encuentra
compartiendo una misma zona de memoria en reas
contiguas (consecutivas).
Los arreglos se clasifican en unidimensionales y
multidimensionales (bi-dimensionales,tri-dimensionales, etc.).
Los elementos de un arreglo pueden ser de cualquier tipo
(enteros, reales, caracteres, cadenas, etc.)
Rango: El limite inferior (Lower) de la dimensin del arreglo
se enumeran a partir del ndice CERO (base 0) o UNO
(base 1) y van en aumento de 1 en 1 hasta el limite
superior (Upper).
Para calcular el numero de elementos o rango de un
arreglo se usa la formula: rango = (U L + 1) por dimensin
Para acceder a los elementos de un arreglo se hace uso
del nombre del arreglo seguido del ndice cerrado entre
parntesis rectangulares, este ndice representa la posicin
del elemento en el arreglo.
Arreglo Unidimensional: Vector
Los arrays unidimensionales son aquellos
que estn compuestos por una sola
dimensin (lineal).
A este tipo de arreglo tambin se le
conoce con el nombre de VECTOR.
VECTOR:
1. Sintaxis para definir un array unidimensional.
tipo
array[L..U] de <tipo_dato>: nombre_tipoArray
En donde:
[L..U] Son los limites de la dimensin: Lower .. Upper
<tipo_dato>: Tipo de datos de los elementos del array.
nombre_tipoArray Nombre del nuevo tipo definido.
El numero de elementos de un Array tipo Vector es: (U-L) + 1


2. EJEMPLO: para declarar un array unidimensional.
tipo
array[1..9] de entero: arrDatos //definir vector base uno
var
arrDatos: dato1, dato2 //declaracin de variables tipo arrDato
VECTORES: definicin y declaracin de
variables tipo array unidimensional.
Ejemplo:
tipo
array[0..4] de entero: arrLista
var
arrLista: lista
45 67 -6 0 34
lista
0 1 2 3 4
Acceso a los items:
lista[0] lista[1] lista[2] lista[3] lista[4]
INDICE: Posicin de cada
elemento en el arreglo
ITEM: Valor de cada
elemento del arreglo
RANGO = (4 0) + 1
5 elementos
Lower - limites y elementos del vector - Upper
Ejemplo 1 : Elabore un algoritmo para ingresar y visualizar
los elementos de un arreglo unidimensional de tipo entero.
ALGORITMO Ejemplo1
const MAX = 10
tipo
array [1.. MAX] de entero: arrDatos //base uno
var
arrDatos: datos
entero: i
inicio
desde( i 1 hasta MAX )hacer
leer( datos[ i ] )
fin_desde
desde( i 1 hasta MAX )hacer
escribir( datos[ i ] )
fin_desde
fin
Recorrido (lectura de array):
Ingreso de elementos al arreglo
Recorrido (escritura de array):
visualizado de elementos del array
Ejemplo 2 : Calcular la suma de los elementos contenidos
en un arreglo de tipo entero (base 0).
ALGORITMO Ejemplo2
CONST MAX = 9
tipo
array [0..MAX] de entero: arrValores //base cero
var
arrValores: valor
entero: i, suma, rango
inicio
suma 0
desde( i 0 hasta MAX)hacer
leer( valor[ i ] )
suma suma + valor[ i ]
fin_desde
escribir( suma )
fin
Ejemplo 3 : Calcular el promedio de los elementos contenidos
en un arreglo de tipo entero.
ALGORITMO Ejemplo3
CONST MAX = 10
tipo
array [1..MAX] de entero: arrElementos //base uno
var
arrElementos: elem
entero: i, suma
real: promedio
inicio
suma 0
desde( i 1 hasta MAX )hacer
leer( elem[ i ] )
suma suma+ elem[ i ]
fin_desde
promedio suma / MAX
escribir( promedio)
fin
Ejemplo 4 : Calcular el mayor y menor valor de los
elementos contenidos en un arreglo de tipo entero.
ALGORITMO Ejemplo4
CONST MAX = 10
tipo
array [1..MAX] de entero: arrNumeros
var
arrNumeros: num
entero: i, mayor, menor
inicio
desde( i 1 hasta MAX )hacer
leer( num[ i ] )
fin_desde
mayor num[1] : menor num[max]
desde( i 1 hasta MAX )hacer
si ( num[ i ] > mayor) entonces
mayor num[ i ]
fin_si
si ( num[ i ] < menor ) entonces
menor num[ i ]
fin_si
fin_desde
escribir(MAYOR=, mayor, MENOR=, menor)
fin
Mtodo de Bsqueda Lineal
El mtodo mas sencillo de buscar un
elemento en un vector es explorar
secuencialmente el vector. Es decir
recorrer el vector linealmente desde el
primer elemento hasta el ultimo.
La operacin de bsqueda de un elemento
N en un conjunto de valores o vector
consiste en:
Determinar si N pertenece al conjunto y, en
este caso, indicar su posicin en el.
Determinar si N no pertenece al conjunto.
Ejemplo 5 : Realice el proceso de bsqueda de un valor
entre los elementos contenidos en un arreglo de tipo entero.
ALGORITMO Ejemplo5
CONST MAX = 10
tipo
array [1..MAX] de entero: arrElementos
var
arrElementos: elem
entero: i, dato, posicion
inicio
desde( i 1 hasta MAX )hacer
leer( elem[ i ] )
fin_desde
escribir(Buscar: ) : leer( dato )
posicion -1
desde( i 1 hasta MAX )hacer
si( elem[ i ] = dato )entonces
posicion i : i MAX -1
fin_si
fin_desde
si( posicion <> - 1 )entonces
escribir(DATO ENCONTRADO)
sI_no
escribir(DATO NO ENCONTRADO)
fin_si
fin
Compara el dato buscado con cada
uno de los elementos del arreglo
(Bsqueda Secuencial o Lineal)
Mtodo de Bsqueda Binaria
Se utiliza para buscar un valor entre los
elementos contenidos en un arreglo.
Una de las condiciones para utilizar este
mtodo es que los elementos del arreglo
donde se realizara la bsqueda, deben
estar ordenados en forma ascendente o
descendente.
Utilice este mtodo cuando el nmero de
elementos del arreglo sea grande, de
preferencia mayor a 100.

Aplicando Bsqueda Binaria
-6 -5 0 4 12 15 24 36 47 58 69 77 81 90 92
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primero ultimo
Dato = 69
Primero = 0
Ultimo = 14
Mitad = (Primero+Ultimo)/2
Aplicando Bsqueda Binaria
-6 -5 0 4 12 15 24 36 47 58 69 77 81 90 92
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primero ultimo
Dato = 69
Primero = 0
Ultimo = 14
Mitad = (0 + 14)/2 = 7
Se compara el dato buscado con el
elemento de la posicin mitad, si es igual
el proceso de bsqueda termino, sino es
igual se compara los valores del dato
buscado con el elemento de la posicin
mitad y se desplaza la posicin de la
variable primero o ultimo.
primero
Mitad + 1
Aplicando Bsqueda Binaria
-6 -5 0 4 12 15 24 36 47 58 69 77 81 90 92
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
ultimo
Dato = 69
Primero = 8
Ultimo = 14
Mitad = (8 + 14)/2 = 11
primero ultimo
Mitad - 1
Aplicando Bsqueda Binaria
-6 -5 0 4 12 15 24 36 47 58 69 77 81 90 92
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Dato = 69
Primero = 8
Ultimo = 10
Mitad = (8 + 10)/2 = 9
primero ultimo
primero
Mitad+1
Aplicando Bsqueda Binaria
-6 -5 0 4 12 15 24 36 47 58 69 77 81 90 92
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Dato = 69
Primero = 10
Ultimo = 10
Mitad = (10 + 10)/2 = 10
ultimo
primero
ALGORITMO Bsqueda_Binaria
CONST MAX = 10
tipo
array [1..MAX] de entero: arrElementos
VAR
arrElementos: arrE
entero: i, n

INICIO
desde( i 1 hasta MAX )hacer
leer( arrE( i ) )
fin_desde
leer( n )
si( busquedaBinaria( arrE, n ) = verdad )entonces
escribir(SE ENCONTRO EL DATO BUSCADO)
si_no
escribir(NO EXISTE DATO BUSCADO)
fin_si
FIN
logico funcionbusquedaBinaria( E/S arrElementos: vElem, entero: MAX, dato)
var
entero: primero, ultimo, mitad
logico: ok
inicio
ok falso
primero 0 : ultimo MAX -1
mientras( primero <= ultimo ) Y ( ok = falso) hacer
mitad (primero + ultimo) DIV 2
si( dato = vElem[ mitad ] )entonces
ok verdad
si_no
si( dato > vElem[ mitad ])entonces
primero mitad + 1
si_no
ultimo mitad - 1
fin_si
fin_si
fin_mientras
retornar ok
fin_funcion


Continuacin (definir prototipo de funcin busquedaBinaria)

You might also like