0% encontró este documento útil (0 votos)
10 vistas33 páginas

LP - Módulo 3 -Estructuras de programación.pptx

Estructuras de programación.

Cargado por

Lia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas33 páginas

LP - Módulo 3 -Estructuras de programación.pptx

Estructuras de programación.

Cargado por

Lia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 33

CAMINO AL EXITO

Estructuras de
programación
Objetivos del encuentro

ESTRUCTURAS DE PROGRAMACIÓN
• 1 Estructura de manejo de datos
¿Que vamos a ver hoy?
• Operadores
• Arreglos
• Matrices
• Listas

• 2 Algoritmos de ordenamiento
• Burbuja
• Árbol
• Inserción
• Selección
Estructuras de manejo de datos - Operadores

Los operadores permiten manipular los datos de un programa.


Estructuras de manejo de datos - Operadores
Bases del desarrollo de software

VARIABLES

OPERADORES
Arreglos
Son estructuras de datos con tamaño fijo y que a cada elemento se puede acceder directamente si se
conoce la posición en el arreglo denominado índice.

Índice: Comienzan en el 0 y termina con un valor menos de la cantidad de elementos que puede almacenar.
Arreglos
Ejemplo: creación de un array de 5 elementos en C++

Int arregloDeEnteros[5]; Int Arreglo de tipo entero, sólo se pueden almacenar números.
Tiene 5 posiciones por lo tanto el índice va del 0 al 4.
arregloDeEnteros[0] = 2;
[] Para acceder a un item en particular se necesita su índice que
arregloDeEnteros[1] = 1;
se indica entre corchetes.
arregloDeEnteros[2] = 29;
arregloDeEnteros[3] = -7;
arregloDeEnteros[4] = 4;

Para imprimir un valor del arreglo


Cout << arregloDeEnteros[4] << endl;
Arreglos
Ejemplo: Suma de elementos de un array numérico en C++

Int arregloDeEnteros[5];

arregloDeEnteros[0] = 2;
arregloDeEnteros[1] = 6;
arregloDeEnteros[2] = 1; Definición del array
arregloDeEnteros[3] = -5;
arregloDeEnteros[4] = 22;

Int suma = 0;

For ( int i = 0; i < 5; i++) {


Recorro el array Resultado: muestra en pantalla
suma += arregloDeEnteros[i];
26
}
Cout << suma << endl;
Matrices
Son estructuras de datos en forma de tabla, donde especificamos un índice para fila y otro para
columna. Se necesitan índices para acceder a los datos y tienen tamaño fijo.

Creación de Matriz en C++


Matrices

No se puede cambiar el tamaño de una matriz.


Listas
Es una estructura de datos. Es un conjunto de elementos de un tipo dado que se encuentran ordenados
y pueden variar en número. Permiten el recorrido de todos y cada uno de sus elementos, sin saltear
ninguno y en forma ordenada.
• Se acceden de manera secuencial.
• No tienen tamaño fijo.
• Cada elemento contiene un puntero hacia el siguiente elemento.

Estructura de lista de números (simple enlace)

Estructura de lista de números (doble enlace)


Listas
Ejemplo de lista en C++

Auto: podemos usarlo cuando creamos una variable y no conocemos el tipo de dato del valor.
Arreglos y Listas

Arreglo Lista
Acceso Indexado (dado el índice, accedemos Secuencial (debemos recorrer desde el
directamente al elemento) primer elemento hasta encontrar lo que
buscamos)
Tamaño Fijo Variable
Útil cuando Se conoce la cantidad de elementos. Se desconoce la cantidad de elementos.
Acceso eficiente por índice. Útil cuando la velocidad de acceso al
Ineficiente cuando necesito cambiar elemento no es un factor clave.
la cantidad de elementos. Eficiente cuando cambio el tamaño,
adiciono o elimino un elemento.
¿Consultas?
Algoritmos de ordenamiento
Algoritmos de ordenamiento
Son un tipo especial de algoritmo que sirva para ordenar elementos de un arreglo con un criterio
específico.
Tiene dos elementos:
• Elementos a ordenar (lista, arreglo u otra estructura de datos)
• Criterio de ordenamiento: regla para ordenar: mayor a menor, menor a mayor, alfabéticamente, etc.

INTERNO
Complejidad “O”
• Algoritmo 1: O (n)
• Algoritmo 2: O (2*n)
• Algoritmo 3: O (N2)

EXTERNO Donde n es el tamaño de la lista.

Ejemplo: big data y fog computing


Burbuja

Es el algoritmo de ordenamiento más simple pero mas ineficiente. Se llama burbuja porque los valores mas bajos se
hunden, mientras que los mas altos suben como burbujas al inicio del arreglo.

El algoritmo compara elementos de a pares y, si el arreglo tiene n cantidad de elementos, el método realiza n-1
iteraciones sobre el arreglo (debido a que compara cada elemento con todos los demás que no han sido procesados).
Como en cada iteración se detecta el elemento mayor, cada iteración sucesiva va a ir teniendo un elemento menos
que comparar.

• Para una lista de n elementos, requiere n-1 pasadas o iteraciones.


• Por cada pasada se comparan elementos adyacentes de la lista y se intercambian sus valores solo cuando el primer
elemento es mayor que el segundo.
Burbuja

N=6
Primera iteración
Comparo el elemento de la posición 1 con la 2, es decir: 6 mayor que 4. como es
verdadero lo cambio de posición.

Comparo el elemento de la posición 2 con la 3, es decir: 6 mayor que 2. como es


verdadero lo cambio de posición.

Comparo el elemento de la posición 3 con la 4, es decir: 6 mayor que 5. como es


verdadero lo cambio de posición.

Comparo el elemento de la posición 4 con la 5, es decir: 6 mayor que 3. como es


verdadero lo cambio de posición.

Comparo el elemento de la posición 5 con la 6, es decir: 6 mayor que 1. como es


verdadero lo cambio de posición.
Burbuja

Segunda iteración
N=6

Comparo el elemento de la posición 1 con la 2, es decir: 4 mayor que 2. como es


verdadero lo cambio de posición.

Comparo el elemento de la posición 2 con la 3, es decir: 4 mayor que 5. como es falso


no lo cambio de posición.

Comparo el elemento de la posición 3 con la 4, es decir: 5 mayor que 3. como es


verdadero lo cambio de posición.

Comparo el elemento de la posición 4 con la 5, es decir: 5 mayor que 1. como es


verdadero lo cambio de posición.

El último ya está ordenado asi que no hago nada.


Burbuja

Tercera iteración
N=6

Comparo el elemento de la posición 1 con la 2, es decir: 2 mayor que 4. como es falso


no lo cambio de posición.

Comparo el elemento de la posición 2 con la 3, es decir: 4 mayor que 3. como es


verdadero lo cambio de posición.

Comparo el elemento de la posición 3 con la 4, es decir: 4 mayor que 1. como es


verdadero lo cambio de posición.

Los últimos dos ya están ordenados asi que no hago nada.


Burbuja

Cuarta iteración
N=6

Comparo el elemento de la posición 1 con la 2, es decir: 2 mayor que 3. como es falso


no lo cambio de posición.

Comparo el elemento de la posición 2 con la 3, es decir: 1 mayor que 1. como es


verdadero lo cambio de posición.

Los últimos 3 ya están ordenados asi que no hago nada.


Burbuja

Quinta iteración
N=6

Comparo el elemento de la posición 1 con la 2, es decir: 2 mayor que 1. como es


verdadero lo cambio de posición.

Los últimos 4 ya están ordenados asi que no hago nada

Procedimiento de la burbuja (a0, a1, …(n-a))


para i <- 1 hasta n-1 hacer
para j <- 0 hasta n-i-1 hacer
En pseudocódigo
si a(j) > a(j+1) entonces
aux <- a (j)
a(j) <- a (j+1)
a (j+1) <- aux
fin si
fin para
fin para
Fin procedimiento.
Arbol

Este algoritmo utiliza una estructura especial llamada árbol binario para poder ordenar los
elementos de una arreglo u otro tipo de estructura.
Se basa en construir el árbol, elemento por elemento, los que se insertan de forma ordenada.
Luego se obtienen los elementos ordenados.
Este algoritmo tiene una complejidad de O (n.logn), el cual es un valor mucho más bajo que O
(n2), en especial cuando son muchos los elementos para ordenar.

El algoritmo recorre cada elemento y los va insertando al árbol ordenado siguiendo las siguientes
reglas:

• Cada nodo hijo posicionado a la izquierda debe ser menor que el nodo padre.
• Cada nodo hijo posicionado a la derecha debe ser mayor o igual que el nodo padre.
Arbol - Ejemplo

• Se empieza a recorrer el arreglo: el primer elemento es el 5, por lo que se 5


agrega en el árbol. Cómo es el primero no tiene padre.
4 7
• Pasa al siguiente elemento: número 4. Es menor que 5 por lo tanto lo pone
como hijo a la izquierda.
2 6 11
• Pasa al siguiente elemento: número 7. Al ser mayor que 5, se coloca a la
derecha.
15
• Pasa al siguiente elemento: número 2. Al ser menor que 4, se coloca a la izquierda.

• Pasa al siguiente elemento: número 11. Al ser mayor que 7, se coloca a la derecha.

• Pasa al siguiente elemento: número 15. Al ser mayor que 11, se coloca como hijo derecho.
• Finalmente el número 6. Al ser mayor que 5, va a su derecha, pero como es menor que 7 va a
su izquierda y como hijo de este ultimo.
Arbol - Ejemplo

4 7

2 6 11

15

• Se recorre el árbol en inorden (que significa ir primero, con los elementos más a la izquierda) y
se arma el arreglo ordenado.
Inserción

El ordenamiento por inserción utiliza el siguiente algoritmo:

1. Tomar el primer elemento y copiarlo a un nuevo arreglo.


2. Tomar el segundo elemento y compararlo con el ya existente. En el caso de que sea menor,
colocarlo a la izquierda. En el caso de que sea mayor colocarlo a la derecha.
3. Tomar el tercer elemento y realizar la misma evaluación: ubicarlo a la derecha de aquellos
elementos que son mayores y a la izquierda de aquellos que son menores.
4. Repetir el paso anterior, hasta que no queden elementos en el arreglo original.
5. El resultado es un nuevo arreglo ordenado.
Inserción - Ejemplo

1. Tomo el primer elemento y lo copio a un nuevo arreglo.

2. Tomo el segundo elemento: 4. Al ser menor que 5 lo ubico a la izquierda.

3. Tomo el tercer elemento: 7. Este número es mayor que 5, entonces lo ubico a su derecha.

4. Tomo el cuarto elemento: 2. Este es el menor número hasta ahora y es menor a 4, entonces lo
coloco a su izquierda.

5. Tomo el quinto elemento: 11, que al ser mayor que 7 se coloca a su derecha.

6. Tomo el quinto elemento: 15, que al ser mayor que 11 se coloca a su derecha.
Inserción - Ejemplo

7. Tomo el último elemento: 6. Es mayor que 5, por lo que va a posicionarse a la


derecha de 5 y a la izquierda de 7.

Este algoritmo es fácil de entender y tiene el orden de complejidad de O (n2) y ese valor es
muy ineficiente.
Selección

Pasos:

1. Buscar el menor valor del arreglo e intercambiarlo por el elemento que se encuentra en la
primera posición.
2. Buscar el segundo valor menor del arreglo e intercambiarlo por el elemento que se encuentra
en la segunda posición.
3. Utilizar el mismo procedimiento para todos los elementos del arreglo.
¿Consultas?

También podría gustarte