1. 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
2. Definición de Algoritmo
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 2
3. Concepto de algoritmo
Un método general de resolución de todos los problemas
Programación y Computación II
semestre 2014 3
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
4. 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
5. Características de los
algoritmos
Finitos
Legibles
Definidos
Eficientes
Modulares
Programación y Computación II
semestre 2014 5
6. 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
7. Aprendizaje esperado
Analizar diversos algoritmos matemáticos
identificando estructuras condicionales
(comparación) y estructuras repetitivas
(ciclos).
Identificar algoritmos expresados en forma
recursiva e iterativa.
Realizar seguimiento a algoritmos recursivo
Programación y Computación II
semestre 2014 7
e iterativo.
8. Algoritmos matemáticos
Sucesión de Fibonacci
http://www.ite.educacion.es/formacion/enred/web_espiral/naturaleza/vegetal/fibona
cci/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
Definición recursiva
Los números de Fibonacci quedan definidos por la ecuación:
Programación y Computación II
semestre 2014 8
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
Programación y Computación II
semestre 2014 9
10. Algoritmos matemáticos
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
Programación y Computación II
semestre 2014 10
sumar 1.
c) Obtenga enteros sucesivamente repitiendo el
proceso
d) Al final, obtendrá el número 1, independientemente
del entero inicial.
11. 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
12. Algoritmo Multiplicación Rusa
Programación y Computación II
Comprueba el
algoritmo,
realizando al
menos tres trios
de números.
Crea una tabla
para ello.
semestre 2014 12
13. 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
14. 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
Datos de entrada: Una lista de n° números
¿Qué acciones realiza el algoritmo?
1. _______________
2. _______________
Programación y Computación II
semestre 2014 14
15. 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
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
2*1=2
Programación y Computación II
semestre 2014 18
F(n)= 1 si n=0
n*F(n-1)
ejemplo funcionamiento n=4
F(4)=4*F(3)
3*F(2)
2*F(1)
1*F(0)
1*1=1 * 1
3*2=6
19. Ejemplo 1
Mcd(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 2
mcd(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
Programación y Computación II
semestre 2014 19
20. 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
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.
Programación y Computación II
semestre 2014 20
21. 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.
Factorial de n ó n!
F(n)=1*2*3*……(n-2)* (n-1)*n
Ó
F(n)=n*(n-1)*(n-2)*(n-3)*……1
Programación y Computación II
semestre 2014 21
22. 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.
Ejemplo 1
Mcd(20,5)
20 div 5=4. ¿división exacta? Si resto=0 entonces MCD es el divisor 5 y finaliza
Programación y Computación II semestre 2014 22
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
23. 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
24. Estructura de un DFD
Programación y Computación II
semestre 2014 24
26. Programación y Computación II
semestre 2014 26
Software: DFD
http://www.programatium.com/soft
/descargar-software.
php?id=DFD%201.1
27. 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
28. Estructura de un seudo código
algoritmo <nombre_del_algoritmo>
Programación y Computación II
semestre 2014 28
[ 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
30. /* Ejemplo de uso de funciones de
manejo de colores. */
var
k = 0
s = ""
inicio
imprimir ("Antes de borrar
pantalla")
readkey()
cls()
set_color (7, 1)
imprimir ("Hola. Estoy a punto de
cambiar el color de toda la pantalla",
Programación y Computación II
semestre 2014 30
"nPulse una tecla")
readkey()
cls()
imprimir ("nnIngrese 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()
Fin
subrutina centrar_pant (z : cadena)
var
mlin, mcol : numerico
g = strlen (z)
inicio
get_scrsize (mlin, mcol)
mlin = int (mlin / 2)
mcol = mcol / 2
mcol = int (mcol - g/2)
set_curpos (mlin, mcol)
imprimir (z, " (", mlin, ",", mcol,
")")
fin
SL/