You are on page 1of 29

Ceneval - LI - Programacion e Ing.

de Software

Es una variable que indica la localización (dirección) de


otra variable.

Un puntero puede considerarse como una referencia a


otra variable.

Se pueden crear cuando se necesiten y liberarlas cuando


se desocupen.

Se usan para crear estructuras de datos dinámicas que


se expandan o se contraigan según se agreguen o
eliminen elementos.

Un arreglo es un conjunto finito de


Apuntadores a
otras variables posiciones de memoria consecutivas que
tienen el mismo nombre y el mismo tipo de
dato.
Dos apuntadores pueden Los arreglos de una dimensión
“direccionar” al mismo
elemento (Unidimensionales) se llaman vectores.

Los arreglos de dos dimensiones


Un apuntador puede
ser “NULO” (bidimensionales) se llaman matrices.
(referencia a nada)

3 4

Prof. Ing. Ramón Roque Hernández, M.C. 1


Ceneval - LI - Programacion e Ing. de Software

Arreglos Unidimensionales (Vectores)

1 72 Para recorrer, capturar o procesar secuencialmente todos los


A[1] = 72 elementos de un vector, se puede utilizar un ciclo sencillo:
2 53
A[5]= 46
Inicio
3 43 F
X=1 Fin
4 23 Los elementos de un vector X<=6 V
se referencían por el nombre X++
for(x=1; x<=6; x++)
5 46 del vector seguido de corchetes {
o parentesis dentro de los cuales cout << “Dame el elemento” << x ;
A[x]
6 35 se indica la posición (indice) cin >> A[x];
a la cual hacen referencia. }
Vector “A”

Una matriz tiene Para recorrer, capturar o procesar secuencialmente todos los
Matriz “M” elementos de una matriz, se pueden utilizar dos ciclos anidados,
renglones y columnas.
1 2 3 uno para los renglones y otro para las columnas:
Sus elementos se
referencían por el 1 5 1 9 Inicio
nombre de la matriz
for(x=1; x<=3; x++)
seguido de corchetes o 2 8 6 4 x=1 F
Fin {
x<=3
parentesis indicando for (y=1; y<=3; y++)
renglon y columna en 3 3 7 2 x++ V
{
y=1 F
donde se encuentra y<=3 1 cout << “Dame el elemento”<< x << y;
cin >> m[x][y];
ese elemento. M[2][3] = 4
1 y++ V
}
M[3][2] = 7
m[x][y] }

7 8

Prof. Ing. Ramón Roque Hernández, M.C. 2


Ceneval - LI - Programacion e Ing. de Software

Arreglos Tridimensionales (Cubos)


• Para recorrer, capturar o procesar secuencialmente todos los
Poseen Renglones, elementos de una matriz, se pueden utilizar dos ciclos anidados,
Columnas y uno para los renglones y otro para las columnas:
Profundidad. Inicio
M[1][1][2] M[1][2][2] for(x=1; x<=2; x++)
{
Requieren de 3 x=1 F
Fin for (y=1; y<=2; y++)
subíndices para x<=2 {
localizar sus M[1][1][1] M[1][2][1] x++ V for (z=1; z<=2; z++)
{
elementos. y=1 F
2 cout << “Dame el elemento”<< x << y << z;
y<=2 cin >> m[x][y][z];
2 y++ V }
Pueden usarse 3 M[2][1][1] M[2][2][1] F }
z=1 1
ciclos anidados para z<=2
}
manipularlos. Matriz “M” 1 z++ V

m[x][y]

10
9

!
Una LISTA es una colección de elementos Relaciona los elementos y establece su
llamados “nodos”. El orden entre los nodos se secuencia.
establece por medio de punteros, es decir,
Permite que no sea necesario
direcciones o referencias a otros nodos.
almacenar físicamente a los nodos en
Un NODO consta de dos campos:
espacios contiguos, ya que basta con
• DATO (Elemento en sí) seguir el enlace indicado para formar la
• DIRECCION (Del siguiente elemento) lista completa de manera ordenada.

11 12

Prof. Ing. Ramón Roque Hernández, M.C. 3


Ceneval - LI - Programacion e Ing. de Software

" # $ " #

APEX
(Inicio de la Lista)

Al recorrer la lista se tiene:


Al recorrer la lista de acuerdo a los apuntadores García, Pérez, López, Santos
se obtiene la siguiente secuencia de elementos:
ARBOL, CASA, GATO, ZAPATO

13 14

" #%

En la siguiente lista,

APEX = 4
Cada nodo tiene dos apuntadores:
Determinar el orden de los elementos
Uno para el siguiente nodo y otro para el nodo
%
anterior.
Recorrido:
•Arco ! # De esta manera es posible moverse en
•Bote "
$ cualquier dirección.
•Lodo # !
!"
•Mano
•Niño
•Oso
•Rosa
•Sal
•Taller
•Uva

15 16

Prof. Ing. Ramón Roque Hernández, M.C. 4


Ceneval - LI - Programacion e Ing. de Software

&' ( $ &' (
Estructura en la que los elementos PUSH.- Consiste en introducir un
entran y salen por el mismo extremo elemento a la pila.
utilizando la filosofía LIFO
Last Ultimo en
POP.- Consiste en extraer un elemento
Input Entrar,
de la pila.
First Primero
Output en Salir

17 18

& () " # & () *!


Si la pila está llena, NO puede realizarse la
operación PUSH y se produce un error de
OVERFLOW (Desbordamiento de pila).

Si aún hay espacio en la pila, el apuntador se


incrementa en una posicion y se guarda el
elemento en esa posición.

!& &
%!& ' !&
% ()* &
%!& '

19 20

Prof. Ing. Ramón Roque Hernández, M.C. 5


Ceneval - LI - Programacion e Ing. de Software

&$& " # &$&


Si la pila está vacía, NO puede realizarse la
operación POP y se produce un error de
UNDERFLOW.

Si la pila tiene elementos, se extrae el


elemento en la posición indicada por el
apuntador, y el apuntador se decrementa en
uno.
!& &
%!& !&
% ()* &
%!&

21 22

Considere una pila numerica de 3


posiciones para realizar las siguientes
+ & $ operaciones consecutivas: $ (
3 3 3 3 50
2 '
/ #0
2
'&
/ 0
2 90
'& 2
/# 0
90 Estructura en la que los elementos
1 1 35 1 35 1 35 ingresan por un extremo y salen por otro
Apu=0 Apu=1 Apu=2 Apu=3 con filosofía FIFO.
+ , &
- ,. + , &1 .
First
3 50 3 3 3 3 Input Primero en Entrar,
2
' 2
/ #0
90 2 90 2 2
1
First primero en Salir
1 35 1 35 1 35 1
Apu=3 Apu=2 Apu=1 Apu=0 Apu=0 Output
+1 & + , +1 &
-1 2 3. - ,. 41 2 3.
23 24

Prof. Ing. Ramón Roque Hernández, M.C. 6


Ceneval - LI - Programacion e Ing. de Software

$
$ ( $ (

Para implementar COLAS en memoria


puede utilizarse un vector, y dos
variables llamadas “FRENTE” y “FIN” Añadir un
para indicar la posición de los elementos Elemento
que se encuentran al frente y al fin de la
cola, respectivamente. Extraer un
Elemento

25 26

Considere una COLA numerica para Considere una COLA numerica para
realizar las siguientes operaciones
consecutivas:
+ & $ realizar las siguientes operaciones
consecutivas:
+ & $
2" 2 2" 2 2" 2
2" 2

25 39 64 64

0 1 2 3
0 1 2 3 0 1 2 3 0 1 2 3

!" !#$ !" !#$

2" 2 2" 2 2" 2 2" 2

25 39 25 39 64

0 1 2 3 0 1 2 3 0 1 2 3
0 1 2 3
!" !#$ ' !" !#$
% & !(( () #
27 28

Prof. Ing. Ramón Roque Hernández, M.C. 7


Ceneval - LI - Programacion e Ing. de Software

,
Estructura de datos con una raíz y varios Estructura de datos homogénea con un nodo
“hijos” (o subárboles). raiz y máximo dos nodos hijos: derecho e
izquierdo.

Arboles Binarios Distintos.- Si sus


estructuras son diferentes.

29 30

• Arboles Binarios Similares.- Estructuras idénticas Arboles Binarios Completos.- Todos sus nodos, excepto
con información diferente. los del útimo nivel tienen dos hijos.

• Arboles Binarios Equivalentes.- Son Arboles B C


Binarios Similares con la misma información.

D E F G

31
32

Prof. Ing. Ramón Roque Hernández, M.C. 8


Ceneval - LI - Programacion e Ing. de Software

- . %
Recorrer significa visitar los nodos del árbol en forma
Es un árbol binario que tienen las siguientes sistemática para que todos los nodos sean visitados una sola
características: vez.
Preorden
• Los elementos a la izquierda de un nodo son menores • Visitar la raiz
que él. • Recorrer el subárbol izquierdo
• Los elementos a la derecha de un nodo son mayores • Recorrer el subárbol derecho
que él. InOrden
• Recorrer el Subárbol izquierdo
5 • Visitar la raíz
• Recorrer el subárbol derecho
3 7 PostOrden
• Recorrer el subárbol izquierdo
• Recorrer el subárbol derecho
2 4 6 9 • Visitar la Raíz.

33 34

" % / )
Preorden: Es un Arbol Binario Completo tal que el
5 5, 3, 2, 4, 7, 6, 9 valor de la clave de cada nodo es mayor
InOrden: o igual (o menor o igual) que las claves
3 7 de sus nodos hijos (Si los tiene).
2, 3, 4, 5, 6, 7, 9
PostOrden:
2 4 6 9
Montículo de máximos (MaxHeaps) (>=)
2, 4, 3, 6, 9, 7, 5
Montículo de mínimos (MinHeaps) (<=)

35 36

Prof. Ing. Ramón Roque Hernández, M.C. 9


Ceneval - LI - Programacion e Ing. de Software

" / , 0
Estructura de datos no lineal utilizadas para
10 1 representar relaciones arbitrarias (Arcos) entre
elementos (Nodos).
Ejemplos de grafos: Red de carreteras, red de tráfico
8 9 2 3
aéreo, instalaciones eléctricas, rutas de viaje, etc.

4 5 6 7 4 5 6 7

Grafos dirigidos.- Cada


MAXHEAP MINHEAP Arco tiene su sentido específico.
Grafos No dirigidos.- No importa
el sentido del Arco

37 38

, 0 % , 0
Orden de un grafo.- Número de nodos que posee. Matriz de adyacencia
Camino.- Secuencia de uno o mas arcos que conectan A A B C D E
dos nodos.
C B A 0 0 1 0 0
Longitud de un camino.- Numero de Arcos que forman B 1 0 0 1 1
un camino. D
E
C 0 1 0 0 1
Nodos Adyacentes.- Si hay un arco que los une.
D 0 0 0 0 0
Lazo.- Arco que conecta un nodo consigo mismo. E 0 0 0 1 0

39 40

Prof. Ing. Ramón Roque Hernández, M.C. 10


Ceneval - LI - Programacion e Ing. de Software

% , 0
Lista de adyacencia
6
2 3

1 4 5
! "

Lista Enlazada para los nodos # $ %


a los que ese nodo apunta

41

1
Archivo.- Colección de información en almacenamiento
secundario. Discos Duros
Diskettes
Archivo.- Conjunto de datos estructurados en una
colección de registros que constan de diferentes campos.
Los datos de un archivo están organizados por un
CDs, DVDs
propósito específico. Memory stick & Flash Drives
Registro.- Conjunto de campos. Iomega ZIP 100 Mb
Campo.- Dato elemental con tamaño y tipo de dato bien Jaz Iomega 1GB o mas
definido.

43 44

Prof. Ing. Ramón Roque Hernández, M.C. 11


Ceneval - LI - Programacion e Ing. de Software

2 3 & 4
Pistas y Sectores

45 46

5 "
& 4 6
Tiempo de Acceso.- Modo Texto.- El contenido del archivo es una secuencia
Tiempo que tarda la de caracteres ASCII divididos en líneas, cuyo último
cabeza del disco en carácter es el de nueva línea.
situarse en un lugar
determinado y recuperar
cierta información. Pueden almacenar canciones, fuentes de programas,
(mSegs). archivos simples, etc.

Cilindro.- Es una pila Los archivos en modo texto se caracterizan por ser
tridimensional de pistas planos. Todas las letras tienen el mismo formato y no hay
verticales de los palabras subrayadas, en negrita, o letras de distinto
múltiples platos. tamaño o ancho.

47 48

Prof. Ing. Ramón Roque Hernández, M.C. 12


Ceneval - LI - Programacion e Ing. de Software

5 "

Modo Binario.-Los archivos binarios son diferentes a los Secuencial.- Los registros ocupan posiciones
archivos de texto principalmente porque los datos no estan
organizados en líneas y pueden contener cualquier valor de consecutivas y solo se puede acceder a ellos de uno
ocho bits. en uno a partir del primero.
Un archivo binario es una secuencia de bytes que tienen una
correspondencia uno a uno con un dispositivo externo.

El número de bytes escritos (leídos) será el mismo que los


encontrados en el dispositivo externo.

Ejemplos: fotografías, imágenes, texto con formatos, archivos


ejecutables, etc.

49 50

Acceso Directo.- La información se coloca y se accesa


aleatoriamente mendiante su posición relativa dentro del conjunto
de posiciones posibles.
Se pueden leer y escribir registros en cualquier orden y en Area de índices
cualquier lugar.
El orden físico no corresponde al órden lógico.
Cada registro deben contener una CLAVE que lo identifique de Secuencial indexado.-
manera única. Todos los registros deben ser del mismo tamaño.
Hay una correspondencia entre los posibles valores de la clave y En el área principal están los datos
las direcciones físicas. desordenados.
En el área de índices se tiene cada
clave con la dirección de inicio del
bloque donde se encuentra.
Reduce el tiempo de búsqueda.
Funciona como un “diccionario”

51 52

Prof. Ing. Ramón Roque Hernández, M.C. 13


Ceneval - LI - Programacion e Ing. de Software

Secuencia finita, lógica y ordenada de


&
#
pasos a seguir para la resolución de un
$
problema particular.
'

54

' ( ' '5


Entrada if (Condicion)

• Petición de datos (Captura) { parte verdadera


}
F V
Condición
Proceso (Cálculo) else
• Operaciones y asignaciones { parte falsa …parte falsa… …parte verdadera…

}
Salida
• Impresión Continúa el programa

Si la condición se cumple, se ejecuta la “parte verdadera”.


De lo contrario, se ejecuta la “parte falsa”.
NUNCA se ejecutan las dos partes al mismo tiempo.

55 56

Prof. Ing. Ramón Roque Hernández, M.C. 14


Ceneval - LI - Programacion e Ing. de Software

'
' 5$% $ 7 )'
5
55
55
5

do
for(x=1; x<=3; x=x+1)
{ 5
55
55

{ cuerpo del ciclo 67 2 $


$ :
)" %! &
…acciones
$$!55
5
} 687
+ ; ! & dentro del ciclo… $
$ % " %!
&$$
!
!
< "= . 5
55
5
Acciones fuera del ciclo… 6&
76&
9&
2
-
} while (condicion); ,
1 $
$ :
)"
%$ %!&
$$!555
5
)"
( %! &
$$! …acciones fuera del ciclo…
5
55

El ciclo FOR siempre tiene una variable de control que toma un valor inicial, El ciclo DO WHILE se ejecuta siempre al menos una vez.
Y en cada “vuelta” del ciclo, incrementa su valor según se especifique. Seguirá ejecutándose MIENTRAS la condición sea verdadera.
El ciclo sigue en ejecución MIENTRAS la condición sea verdadera.

57 58

'
7 )'
Consiste en dividir un problema en varias subtareas
while(condicion) 5
55
55
de menor tamaño, haciéndolo mas facil de entender
2
y modificar.
{ …acciones dentro del ciclo… ,
1
%$
$
$
:
)"
%!
&$$
!55
55 MODULO.- Está constituido por varias instrucciones
} $
$
-
% " %!
& con un propósito lógico y agrupadas bajo un
…acciones fuera del ciclo… $$
!55
55 nombre, el cual puede invocarse desde diferentes
partes de un programa.

Un módulo puede ser:


El ciclo WHILE se ejecuta Siempre MIENTRAS la condición sea verdadera. • Una función
Si la condición no es verdadera al entrar por primera vez, el ciclo no se ejecuta. • Una subrutina (procedimiento, o subprograma)

59 60

Prof. Ing. Ramón Roque Hernández, M.C. 15


Ceneval - LI - Programacion e Ing. de Software

61 62

SUBRUTINA (Subprograma o Unidades, bibliotecas, clases, paquetes.-


Procedimiento).- Es un módulo que puede • Generalmente son rutinas precompiladas que pueden
recibir pero NO entregar (regresar) parámetros incluirse en cualquier programa.
al módulo que lo llama. • Se requiere “incluirlas” explícitamente en el programa
para poder usar las rutinas definidas dentro de ellas.
• Promueven la reutilización de código.
FUNCION.- Es un módulo que recibe y/o • Permiten que el programador use ciertas funciones
entrega (regresa) parámetros al módulo sin necesidad de escrbirlas o saber como funcionan
llamador. Las funciones pueden regresar internamente.
datos simples o estructurados.

63 64

Prof. Ing. Ramón Roque Hernández, M.C. 16


Ceneval - LI - Programacion e Ing. de Software

3 4 8 4 & 4
Vinculación estática.- Las funciones y Los valores que un módulo recibe o entrega (regresa)
módulos se incluyen en tiempo de como resultado se llaman parámetros.
compilación.
compilación
Generalmente los parámetros son variables locales
(de cualquier tipo: entero, flotante, char, booleano, etc.)
Vinculación dinámica.- Permite que un que se envían de un módulo a otro para que éste
programa busque el código necesario de una último pueda utilizarlas también, aún sin estar
función en tiempo de ejecución.
ejecución declaradas dentro de él.

65 66

3 8
Variables definidas Accesibles desde…
Las variables en…
globales pueden A A,B,C,D,E,F,G
utilizarse en todos los
B B,C
módulos.
C C
Las variables locales D D,E,F,G
se declaran dentro de
E E,F,G
un módulo particular
y están accesibles F F
solo dentro del G G
cuerpo de ese
módulo. Ambito.- Parte del programa donde
se conoce a la variable.
67 68

Prof. Ing. Ramón Roque Hernández, M.C. 17


Ceneval - LI - Programacion e Ing. de Software

$ 0 #
2 & 4
Algunos lenguajes de programación soportan el uso de Parámetros de Entrada.- Valores que se reciben desde
“modificadores de acceso” que le permiten al el programa llamador.
programador decidir quién accesa las variables.
Parámetros de Salida.- Resultados enviados al
• Public – Accesibles desde cualquier otra aplicación. programa llamador.
• Private – Accesibles unicamente dentro de un Paso de parámetros por Valor.- Los valores originales
ámbito especifico. NO se modifican. Se realiza una copia de su valor y con
• Friend – Accesibles solo para ciertas aplicaciones. ella se trabaja.
• Internal – Accesibles para módulos de la misma
aplicación. Paso de parámetros por Referencia.- Los cambios
realizados SI se reflejan en los valores originales.

69 70

&
% 9
Ocurre cuando un programa (o módulo) se Poseen la solución recursiva y además el
llama a sí mismo. estado básico (Solución no-recursiva)
Generalmente se usa una decisión para
determinar a cual de ambas recurrir y evitar
Cuando se usa recursión, SIEMPRE se debe que el programa se ejecute indefinidamente.
establecer un “Estado Básico”, es decir, un
momento en el cual la solución sea directa y if (condicion)
no recursiva. { …solucion recursiva…
}
else
La solución SIEMPRE debe acercarse al { …solucion no-recursiva…[Estado básico]
“Estado Básico” }
71 72

Prof. Ing. Ramón Roque Hernández, M.C. 18


Ceneval - LI - Programacion e Ing. de Software

) .%
) $ $ +
* " /
$ + / 0
# +
$
)" > 4"$ , -# *1 2
' # #
*

$
)" > ,%"$
73

& 4 0
: $ :
Ordenar significa Reorganizar un conjunto de Estabilidad.- ¿Cómo se comporta con elementos
datos de acuerdo a una secuencia específica. iguales?

Los métodos de ordenamiento pueden ser: Complejidad de Implementación


Internos
• Se llevan a cabo en memoria principal Tiempo de Ejecución (Rendimiento)
• Generalmente se usan arreglos (Vectores) • Número de comparaciones
Externos • Número de intercambios
• Se llevan a cabo en memoria secundaria
• Se usan archivos Requerimientos de memoria

75 76

Prof. Ing. Ramón Roque Hernández, M.C. 19


Ceneval - LI - Programacion e Ing. de Software

" "
O(n2) Complejidad Cuadrática Consiste en comparar elementos adyacentes de dos
• Rendimiento regular a pobre [Generalmente Aceptable] en dos. Si un elemento es mayor que el que está en la
• Mas sencillos de implementar siguiente posición se intercambian hasta que todos se
O(n log n) Complejidad Logarítmica encuentren ordenados.
• Preferibles por su mejor rendimiento Puede ser implementado para:
• Mas complejos de implementar • Llevar los elementos mas pequeños a la parte izquierda
• Llevar los elementos mas grandes a a la parte derecha.
“n” es el número de elementos a ordenar Es el mas ineficiente por hacer muchas comparaciones
y movimientos.
Se usa “C” para el Num. de Comparaciones
Es el mas fácil de implementar
“M” para el Num. de Movimientos o intercambios.

77 78

"
$ ;<=<*<><?! : " '
4 3 5 2 1
Usado por los jugadores de cartas para
3 4 5 2 1 ordenarlas.
3 4 2 5 1
Consiste en insertar un elemento del arreglo
3 4 2 1 5 Fin
Pasada #1 en la parte izquierda del mismo, que se
3 2 4 1 5 encuentra ya ordenada. El proceso se repite
3 2 1 4 5 Fin desde el segundo hasta el n-ésimo elemento.
Pasada #2

2 3 1 4 5
2 1 3 4 5 Fin
Pasada #3

1 2 3 4 5 Fin
Pasada #4
79 80

Prof. Ing. Ramón Roque Hernández, M.C. 20


Ceneval - LI - Programacion e Ing. de Software

" ' (
#1
15 67 08 16 44 27 12 35 Consiste en buscar el menor elemento del
#2
15 67 08 16 44 27 12 35 arreglo y colocarlo en la primera posicion.
#3
08 15 67 16 44 27 12 35 El elemento de Luego se busca el segundo elemento mas
#4
08 15 16 67 44 27 12 35
cada posición pequeño y se coloca en la segunda posición.
se va ordenando
#5
08 15 16 44 67 27 12 35
a la izquierda El proceso continúa hasta que todos los
del arreglo
#6
elementos del arreglo han sido ordenados.
08 15 16 27 44 67 12 35
#7
08 12 15 16 27 44 67 35
#8
08 12 15 16 27 35 44 67

81 82

" ( @ A(
#1 15 67 08 16 44 27 12 35 Es uno de los mas eficientes. Consiste en:
#2 08 67 15 16 44 27 12 35 • Elegir el elemento central (X) del arreglo [Se denomina
Pivote].
#3 08 12 15 16 44 27 67 35 En cada ejecución • Buscar por la izquierda del arreglo un elemento A mayor
#4 se selecciona el que X.
08 12 15 16 44 27 67 35
menor elemento • Buscar por la derecha del arreglo un elemento B menor o
#5 08 12 15 16 44 27 67 35 del resto del vector igual a X.
#6 08 12 15 16 27 44 67 35
y se ordena hacia • Intercambiar A y B.
#7
la izquierda. • Seguir con el proceso hasta que X divida el arreglo en dos
08 12 15 16 27 35 67 44 subarreglos tales que el izquierdo contiene los elementos <=
#8 que X y el derecho todos los elementos > X. Por lo tanto X
08 12 15 16 27 35 44 67 está ordenado.
#9 08 12 15 16 27 35 44 67 • Hacer QuickSort al subarreglo izquierdo y al Derecho.

83 84

Prof. Ing. Ramón Roque Hernández, M.C. 21


Ceneval - LI - Programacion e Ing. de Software

Elemento Pivote

Ejemplo QuickSort Elementos a Intercambiar


Elemento ya ordenado

Buscar elemento > Pivote Buscar elemento <= Pivote (


#1 80 36 98 62 26 78 22 27 2 45 Divide el arreglo original en dos arreglos separados.
#2 2 36 98 62 26 78 22 27 80 45
#3 2 22 98 62 26 78 36 27 80 45 Divide esos arreglos separados en mas arreglos
#4 2 22 26 62 98 78 36 27 80 45 El 26 ya está separados.
ordenado
#5 2 22 26 62 98 78 36 27 80 45 A la izq solo
hay nums <26
#6 27 98 78 36 62 80 45 A la der solo Cada arreglo es recursivamente ordenado.
#7 27 36 78 98 62 80 45 hay nums > 26
Se crean Finalmente se unen los elementos en un solo vector.
#8 45 98 62 80 78 dos SubVectores
(Derecho
#9 45 62 98 80 78 e Izquierdo)
A cada uno
Complejidad: O (n log n)
#10 78 80 98 se le aplica
el mismo
#11 2 22 26 27 36 45 62 78 80 98 procedimiento
85
QuickSort. 86

Ejemplo MergeSort

Método Ventajas Desventajas


Burbuja Fácil Mas ineficiente
Muchas comparaciones
Selección Fácil Lento
Pocos intercambios Muchas comparaciones

Inserción Fácil implementar Lento


Requiere poca memoria Muchas comparaciones
QuickSort Muy Rapido en arreglos Lento en arreglos ordenados
desordenados Implementación compleja
O(n log n) Recursivo
MergeSort Rápido en grandes cantidades de Complejo
datos Recursivo y complejo
Usa mucha memoria adicional

87
88

Prof. Ing. Ramón Roque Hernández, M.C. 22


Ceneval - LI - Programacion e Ing. de Software

B- 8
: $ 6
Se realiza en archivos generalmente con
Ordenado Desordenado Orden Inverso

Burbuja Comp.
(n2-n) /2 (n2-n) /2 (n2-n) /2 muchos registros.
Mov.
0 0.75 * (n2-n) 1.5 * (n2-n) Algunos métodos conocidos son:
Inserción Comp.
(n-1) (n2+n-2) / 4 (n2-n) / 2 • Fusión, mezcla o intercalación
Directa
Mov.
• Mezcla directa
0 (n2-n) / 4 (n2-n) / 2
• Mezcla natural
Comp.
Selección (n2-n) / 2 (n2-n) / 2 (n2-n) / 2
Directa
Mov.
n-1 n-1 n-1

89 90

Mezcla Directa
F: 19 27 2 8 36 5 20 15 6
Se particiona en secuencias de 1
F1: 19 2 36 20 6
5 1 F2: 27 8 5 15
Se fusiona cada par de manera ordenada
Consiste en reunir en un archivo los registros de 2 o F: 19 27 2 8 5 36 15 20 6
mas archivos ordenados por un campo clave. Se particiona en secuencias de 2
F1: 19 27 5 36 6
El archivo resultante será un archivo ordenado por el F2: 2 8 15 20
campo clave. Se fusiona cada par de manera ordenada:
F: 2 8 19 27 5 15 20 36 6
F1 12 24 36 37 40 52 * Se particiona en secuencias de 4
F1: 2 8 19 27 6
F2: 5 15 20 36
F2 3 8 9 20 * Se fusiona cada par de manera ordenada:
F: 2 5 8 15 19 20 27 36 6
Se particiona en secuencias de 8:
F3 3 8 9 12 20 24 36 37 40 52 * F1: 2 5 8 15 19 20 27 36
F2: 6
Se fusiona cada par de manera ordenada:
F: 2 5 6 8 15 19 20 27 36
92
91 [FIN DEL PROCESO]

Prof. Ing. Ramón Roque Hernández, M.C. 23


Ceneval - LI - Programacion e Ing. de Software

Mezcla Natural
F: 19 27 2 8 36 5 20 15 6

Se particiona aprovechando el orden ascendente natural que puede existir: - . (


[Se deja de incluir elementos en la particion cuando el “orden” se rompe]
F1: 19 27\ 5 20\ 6
F2: 2 8 36\ 15 Consiste en recorrer el vector elemento por elemento y
Se fusionan las particiones de manera ordenada: comparar cada uno con el elemento que se busca.
F3: 2 8 19 27 36\ 5 15 20\ 6
Ineficiente para vectores grandes
Se particiona:
F1: 2 8 19 27 36\ 6
F2: 5 15 20 Hay dos posibles resultados:
Se fusiona:
F3: 2 5 8 15 19 20 27 36/ 6 EXITO.- Se encuentra el elemento, se muestra la
posición y termina la búsqueda.
Se particiona:
F1: 2 5 8 15 19 20 27 36
F2: 6 FRACASO.- Se terminó de recorrer todo el vector y el
Se Fusiona: elemento no se encuentra.
F3: 2 5 6 8 15 19 20 27 36
[FIN DEL PROCESO] 93
94

" - .
- .
Requiere un vector de elementos ordenados para
realizar la búsqueda.
Elemento
Se examina primero el elemento central del vector. a
Buscar
Si éste es el elemento buscado, la búsqueda termina.

Si no, se determina si el elemento buscado está en la


primera o segunda mitad de la lista.
Recordar que el vector
Se repite el proceso utilizando el elemento central de Debe estar ordenado
esa sublista.

95 96

Prof. Ing. Ramón Roque Hernández, M.C. 24


Ceneval - LI - Programacion e Ing. de Software

" - .

Elemento
a
Buscar ' + 3

.
) ) " 44
!
Recordar que el vector +' '
Debe estar ordenado

97

& &
Inició en la década de los 60s TEOREMA DE LA ESTRUCTURA.-
El código se escribe de manera tal que se • Un programa propio puede ser escrito usando
solamente estructuras de secuencia, selección e
pueda leer de principio a fin de manera iteración.
contínua. • Un programa es propio si:
Se basa en el uso de 3 estructuras lógicas de • Tiene exactamente una entrada y una salida para
control del programa.
control: • Existen caminos seguibles desde la entrada hasta la
• Secuencia salida que conducen por cada parte del programa.
• Selección Condicional
• No tiene lazos infinitos.
• No tiene instrucciones que nunca se ejecutan.
• Iteración (Ciclo)

99 100

Prof. Ing. Ramón Roque Hernández, M.C. 25


Ceneval - LI - Programacion e Ing. de Software

" &
&
#include <iostream.h>
A pesar de que se pueden utilizar, las void main (void)
instrucciones GOTO se evitan siempre. {
int NE;
float salario;
cout << “Introduce el Numero de Empleado:”;
Se prefiere usar módulos bien diseñados. cin >> NE;
cout << “Introduce el Salario: “;
cin >> salario;
If (salario < 1000)
La identación se usa en bloques de código {
}
cout <<“ El empleado recibe un bono de 200 pesos”;

para dar mas legibilidad al programa. else


{ cout << “El empleado NO recibe BONO”;
}
}

101 102

& $
$ " &$$ $ "
Unidad que combina datos y funciones.
“Es un método de implementación en el que • Datos = Propiedades = Atributos = Características
los programas se organizan como • Funciones = Métodos = Procedimientos =Acciones
colecciones cooperativas de objetos, cada Los datos y funciones están Encapsulados.
uno de los cuales representan una instancia Posee un nombre único (identificador).
de alguna clase y cuyas clases son todas
Un objeto es miembro de una clase
miembros de una jerarquía de clases unidas
mediante relaciones de herencia” “Un objeto es la instancia de una clase”
Grady Booch
Ejemplo de Objeto: Cliente, Factura, Persona, etc.

103 104

Prof. Ing. Ramón Roque Hernández, M.C. 26


Ceneval - LI - Programacion e Ing. de Software

" 40
"

Permite incluir en una sola entidad


información y operaciones que operan
sobre esa información.
Permite:
• Componentes públicos [Accesibles al
usuario].
• Componentes privados [No accesibles].
• Restricción de accesos indebidos.

105 106

"
Una clase es la descripción de un conjunto de
objetos. Contiene todas las características comunes
de ese conjunto.
Una clase es la declaración de un tipo objeto.
Clase = Modelo = Plantilla = Esquema = Descripción
de la anatomía de los objetos.
A partir de una clase se pueden definir [crear] muchos
objetos independientes con las mismas
características.

107 108

Prof. Ing. Ramón Roque Hernández, M.C. 27


Ceneval - LI - Programacion e Ing. de Software

) " )
Clase Base = Super clase = Clase madre = Clase padre

Característica A Característica B
Clases derivadas
= Clases hijas
= Subclases
Característica A
Característica A Característica A Ejemplo 1 Figura
Característica B
Característica B Característica B
Característica Y Círculo Rectángulo Triángulo
Característica X Característica W
Característica Z Rectángulo
Ejemplo 2 redondeado

109 110

" &$$ C & 5 '(&


using System;
class Programa Utilizado en la construcción de sistemas expertos.
{
public static void Main()
{ LISP = List Processing (Procesamiento de listas)
Persona Persona1 = new Persona();
Persona1.Nombre = "Ramon";
Console.WriteLine("La Persona1 se llama: " + Persona1.Nombre); LISP ofrece facilidades para procesamiento simbólico.
}
}
LISP es un lenguaje de programación funcional en el que se
class Persona definen funciones sencillas que forman funciones mas
{ private string nombreLocal;
complejas.
public string Nombre
{ get { return(nombreLocal); }
set { nombreLocal = value; }
Funciones en LISP.- Definen procedimientos que describen
} la acción que se va a tomar cuando se ejecute.
}

111 112

Prof. Ing. Ramón Roque Hernández, M.C. 28


Ceneval - LI - Programacion e Ing. de Software

" '(&
& . B & &%$ $,
(load common)
(load irratnal) Permite representar reglas lógicas
(clear-screen)
(print “Este programa pide n numeros para promediarse y da el Prolog Evalúa esas reglas lógicas y
resultado”) proporciona un resultado.
(princ “Cuantos nums desea promediar? “)
(setq a (read) ) Usado en la realización de “programas
(setq resultado 0)
( dotimes (n a)
inteligentes”
(princ “Introduzca un numero para promediar: “) Ejemplo:
(setq numero (read) )
(setq resultado ( + numero resultado ) ) ) Comida (manzana)
(setq resultado ( / resultado a) ) Comida (pollo)
(princ “El promedio es: “ ) Come (Juan, X) :- Comida (X)
(princ resultado)

113 114

& 3
Inició en 1991 con la aparición del Visual Basic TM

El modelo de programación visual incluye:


• Entorno de desarrollo visual, editor de código.
• Controles de alto nivel.
• Acceso directo a las distintas partes del código
• Creación de formularios y controles.
• Personalización de Propiedades
• Poderosas funciones (Acceso a datos, etc.)

115

Prof. Ing. Ramón Roque Hernández, M.C. 29

You might also like