Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
de Software
3 4
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
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
" # $ " #
APEX
(Inicio de la Lista)
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
&' ( $ &' (
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
!& &
%!& ' !&
% ()* &
%!& '
19 20
21 22
$
$ ( $ (
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
25 39 25 39 64
0 1 2 3 0 1 2 3 0 1 2 3
0 1 2 3
!" !#$ ' !" !#$
% & !(( () #
27 28
,
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.
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.
D E F G
31
32
- . %
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
" / , 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
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
% , 0
Lista de adyacencia
6
2 3
1 4 5
! "
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
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
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.
49 50
51 52
54
}
Salida
• Impresión Continúa el programa
55 56
'
' 5$% $ 7 )'
5
55
55
5
do
for(x=1; x<=3; x=x+1)
{ 5
55
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.
59 60
61 62
63 64
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
$ 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
) .%
) $ $ +
* " /
$ + / 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?
75 76
" "
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
" ' (
#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
Elemento Pivote
Ejemplo MergeSort
87
88
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]
Mezcla Natural
F: 19 27 2 8 36 5 20 15 6
" - .
- .
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.
95 96
" - .
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
" &
&
#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”;
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
" 40
"
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
) " )
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
111 112
" '(&
& . 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
115