Download - Ppt algortimos 18_agosto (2)
Desde el punto de vista educativo, la programación de
computadores posibilita no solo activar una amplia
variedad de estilos de aprendizaje (Stager, 2003) sino
desarrollar el pensamiento algorítmico. Adicionalmente compromete a los estudiantes en la consideración de
varios aspectos importantes para la solución de
problemas: decidir sobre la naturaleza del problema,
seleccionar una representación que ayude a resolverlo
y, monitorear sus propios pensamientos(metacognición) y estrategias de solución.
Programación y Computación II
semestre 2014 1
Definición de Algoritmo
Programación y Computación II
semestre 2014 2
En matemáticas, lógica, ciencias de la computación y disciplinas
relacionadas, un algoritmo (del griego y latín, dixit algorithmus y
este a su vez del matemático persa Al-Juarismi1 ) es un conjunto
prescrito de instrucciones o reglas bien definidas, ordenadas y
finitas que permite realizar una actividad mediante pasos sucesivos
que no generen dudas a quien deba realizar dicha actividad.2 Dados
un estado inicial y una entrada, siguiendo los pasos sucesivos se
llega a un estado final y se obtiene una solución
http://es.wikipedia.org/wiki/Algoritmo
Programación y Computación II
semestre 2014 3
Concepto de algoritmo
Un método general de resolución de todos los problemas del mismo tipo.
Es un procedimiento detallado y preciso para resolver un problema en pasos o etapas cada uno de los cuales toma un tiempo finito. A cada una de estos pasos de un algoritmo se llama sentencia o instrucción
Concepto de algoritmo
No todos los métodos de solución de un problema son susceptibles de ser utilizados por un computador. Para que un procedimiento pueda ser implementado por un computador debe cumplir:
El procedimiento debe estar compuesto de acciones bien definidas, esto es, no ambiguas, el significado de cada acción debe ser único, en el contexto que aparece.
El procedimiento debe estar formado por una secuencia finita de operaciones. Además debe quedar perfectamente definido el orden en que se van a realizar las instrucciones
El procedimiento debe finalizar en un tiempo finito
Programación y Computación II
semestre 2014 4
Características de los
algoritmos
Finitos
Legibles
Definidos
Eficientes
Modulares
Programación y Computación II
semestre 2014 5
Ejemplos de algoritmos
http://ejemplosde.info/ejemplos-de-algoritmos/ Ejemplos de algoritmos en una receta de cocina.
Ejemplos de algoritmos de estudio.
Ejemplos de algoritmos de uso de computadora.
http://pseint.sourceforge.net/index.php?page=ejemplos.php Ejemplos de algoritmos en seudocódigo.
Programación y Computación II
semestre 2014 6
Aprendizaje esperado
Analizar diversos algoritmos matemáticos
identificando estructuras condicionales
(comparación) y estructuras repetitivas
(ciclos).
Programación y Computación II
semestre 2014 7
Identificar algoritmos expresados en forma
recursiva e iterativa.
Realizar seguimiento a algoritmos recursivo
e iterativo.
Algoritmos matemáticos
Sucesión de Fibonaccihttp://www.ite.educacion.es/formacion/enred/web_espiral/naturaleza/vegetal/fibonacci/fibonacci.htm
En matemática, la sucesión de Fibonacci es la siguiente sucesión infinita denúmeros naturales:
La sucesión inicia con 0 y 1, y a partir de ahí cada elemento es la suma de los dos anteriores
Programación y Computación II
semestre 2014 8
Definición recursiva
Los números de Fibonacci quedan definidos por la ecuación:
Programación y Computación II
semestre 2014 9
Análisis:
Serie {0,1,1,2,3,5,8,13,21,34,……}
Identificar que acciones realiza el algoritmo:
1. A partir de dos números 0,1
2. El n° siguiente de la serie se obtiene sumando los dos últimos números. ESTA
ACCIÓN SE REPITE HASTA QUE CUMPLA CON UNA CONDICIÓN
Algoritmos matemáticos
Programación y Computación II
semestre 2014 10
Conjetura de ULAM en honor del matemático S.Ulam, el algoritmo es el siguiente:
a) Comience con cualquier entero positivo n
b) Si es par, dividir en 2; si es impar, multiplicar por 3 y sumar 1.
c) Obtenga enteros sucesivamente repitiendo el proceso
d) Al final, obtendrá el número 1, independientemente del entero inicial.
Análisis serie ULAM
Datos de entrada: un valor entero positivo
¿Qué acciones realiza el algoritmo?
COMPARA (ESTRUCTURA CONDICIONAL CON SINO)
¿QUÉ COMPARA? ¿Cuál es la condición?
Si la condición es verdadera que acción realiza
Si la condición es falta que acción realiza.
Repite proceso (ESTRUCTURA DE CICLOS)
¿QUE ACCIONES REPITE? ¿CÚANTAS VECES REPITE EL PROCESO O LAS ACCIONES?
Programación y Computación II
semestre 2014 11
Algoritmo Multiplicación Rusa
Programación y Computación II
semestre 2014 12
Comprueba el
algoritmo,
realizando al
menos tres trios
de números.
Crea una tabla
para ello.
Análisis Multiplicación Rusa
Datos de entrada:
¿Qué acciones realiza el algoritmo?
¿COMPARA ?(ESTRUCTURA CONDICIONAL CON SINO)
¿QUÉ COMPARA? ¿Cuál es la condición?
Si la condición es verdadera que acción realiza
Si la condición es falta que acción realiza.
¿Repite proceso? (ESTRUCTURA DE CICLOS)
¿QUE ACCIONES REPITE? ¿CÚANTAS VECES REPITE EL PROCESO O LAS ACCIONES?
Programación y Computación II
semestre 2014 13
Algoritmo de ordenamiento:
selección
Buscar el mínimo elemento de la lista
Intercambiarlo con el primero
Buscar el mínimo en el resto de la lista
Intercambiarlo con el segundo
Y en general: Buscar el mínimo elemento entre una posición i y el final de la lista
Intercambiar el mínimo con el elemento de la posición i
Programación y Computación II
semestre 2014 14
Datos de entrada: Una lista de n° números
¿Qué acciones realiza el algoritmo?
1. _______________
2. _______________
Análisis Ordenamiento
Selección
Datos de entrada:
¿Qué acciones realiza el algoritmo?
¿COMPARA ?(ESTRUCTURA CONDICIONAL CON SINO)
¿QUÉ COMPARA? ¿Cuál es la condición?
Si la condición es verdadera que acción realiza
Si la condición es falta que acción realiza.
¿Repite proceso? (ESTRUCTURA DE CICLOS)
¿QUE ACCIONES REPITE? ¿CÚANTAS VECES REPITE EL PROCESO O LAS ACCIONES?
Programación y Computación II
semestre 2014 15
Algoritmo Burbuja
TAREA
Programación y Computación II
semestre 2014 16
ALGORITMOS
Programación y Computación II
semestre 2014 17
RECURSIVOS ITERATIVOS
Programación y Computación II
semestre 2014 18
Algoritmos Recursivos
Algo es recursivo si se define en términos de sí mismo (cuando para definirse hace mención a sí mismo). Para que una definición recursiva sea válida, la referencia a sí misma debe ser relativamente más sencilla que el caso considerado.
Factorial de un n° n
F(n)= 1 si n=0n*F(n-1)
ejemplo funcionamiento n=4F(4)=4*F(3)
3*F(2)2*F(1)
1*F(0)* 11*1=1
2*1=2
3*2=6
Programación y Computación II
semestre 2014 19
Ejemplo 1Mcd(20,5)=Mcd(20-5, 5)=mcd(15,5)Mcd(15-5, 5)=mcd(10,5)Mcd(10-5,5)=mcd(5,5)Como 5=5 entonces el mcd es 5
Ejemplo 2mcd(20,11)=Mcd(20-11,11)=mcd(9,11)Mcd(9,11-9)=mcd(9,2)Mcd(9-2,2)=mcd(7,2)Mcd(7-2,2)=mcd(5,2)Mcd(5-2,2)=mcd(3,2)Mcd(3-2,2)=mcd(1,2)Mcd(1,2-1)=mcd(1,1)Como 1=1 entonces el mcd es 1
Para que un módulo recursivo
sea correcto:
Análisis por casos del problema: Existe al menos una condición de terminación en el cual no es necesaria una llamada recursiva. Son los casos triviales
si n=0 o n=1 el factorial es 1
Programación y Computación II
semestre 2014 20
Convergencia de las llamadas recursivas: cada llamada recursiva se realiza con un datos más pequeño,de forma que se llegue a la condición de termino.
Algoritmos Iterativos
Un componente básico de los algoritmos es la iteración. Esta palabra implica repetición, es decir, ejecutar repetidamente algunos pasos elementales de un algoritmo acercándose, paso a paso, a la solución.
Programación y Computación II
semestre 2014 21
Factorial de n ó n!
F(n)=1*2*3*……(n-2)* (n-1)*n
Ó
F(n)=n*(n-1)*(n-2)*(n-3)*……1
MCD Iterativo
Se divide el número mayor entre el menor.
2. Si La división es exacta, el divisor es el m.c.d.
2. La división no es exacta, dividimos el divisor entre el resto obtenido y se continúa hasta cuando la divisón sea exacta.
Programación y Computación II semestre 2014 22
Ejemplo 1
Mcd(20,5)
20 div 5=4. ¿división exacta? Si resto=0 entonces MCD es el divisor 5 y finaliza el programa.
Ejemplo 2
Mcd(20,11) 20 div 11=1 resto 9
11 div 9=1 resto 2
9 div 2=4 resto 1
2 div 1=2 resto 0 Entonces MCD es el divisor último 1
Representación de los
Algoritmos:Gráficos
Entre los distintos tipos de representación se encuentran:
Diagrama de Flujos
Es un lenguaje útil para describir la solución de un problema en forma de representaciones Gráficas.
Utiliza palabras y símbolos geométricos en el lenguaje.
Esta sujeto determinadas reglas
Programación y Computación II
semestre 2014 23
Estructura de un DFD
Programación y Computación II
semestre 2014 24
Programación y Computación II
semestre 2014 25
Programación y Computación II
semestre 2014 26
Software: DFD
http://www.programatium.com/soft
/descargar-
software.php?id=DFD%201.1
Representación de los
Algoritmos en Seudocódigo
Es un lenguaje útil para describir la solución de un problema en forma de algoritmo.
Utiliza palabras y frases en el lenguaje NATURAL.
Esta sujeto a determinadas reglas.
Inicialización de Variables e impresión de datos (entrada y salida de la información).
Instrucciones de proceso (Asignación operaciones, etc.)
Acciones compuestas (Sub. programas) y comentarios
Programación y Computación II
semestre 2014 27
Estructura de un seudo código
Programación y Computación II
semestre 2014 28
algoritmo <nombre_del_algoritmo>
[ constantes
<declaraciones_de_constantes> ]
[ tipos_de_datos
<declaraciones_de_tipos_de_datos> ]
[ variables
<declaraciones_de_variables> ]
inicio
<bloque_de_instrucciones>
fin
Nombre del algoritmo
Declaración tipos
de datos y
estructuras
Cuerpo del algoritmo
Programación y Computación II
semestre 2014 29
http://www.cnc.una.py/sl/
Programación y Computación II
semestre 2014 30
/* Ejemplo de uso de funciones de manejo de colores. */var
k = 0s = ""
inicioimprimir ("Antes de borrar
pantalla")readkey()cls()set_color (7, 1)imprimir ("Hola. Estoy a punto de
cambiar el color de toda la pantalla","\nPulse una tecla")
readkey()cls()
imprimir ("\n\nIngrese un texto:")leer (s)
set_color (15, 2)centrar_pant ("Color cambiado")beep()readkey()
set_curpos (1, 1)desde k=1 hasta 16{ set_curpos (k, k)
set_color (k, 1)imprimir ("Prueba de color
numero ", k, "\n“) }imprimir ("\nPulse una tecla...")readkey()
Finsubrutina centrar_pant (z : cadena)var
mlin, mcol : numericog = strlen (z)
inicioget_scrsize (mlin, mcol)mlin = int (mlin / 2)mcol = mcol / 2mcol = int (mcol - g/2)set_curpos (mlin, mcol)imprimir (z, " (", mlin, ",", mcol,
")")fin
SL/