Este documento presenta la metodología para crear algoritmos. Explica que un algoritmo es una lista de actividades para realizar una tarea y que no solo se aplica a computadoras sino a casi todas las actividades humanas. Luego describe las fases para la resolución de problemas con algoritmos: análisis, diseño e implementación. En el análisis se definen los requisitos, datos de entrada/salida y restricciones. En el diseño se desarrolla el algoritmo y se verifica. Finalmente, en la implementación se codifica, compila, prue
2. Tutor Eliezer Córdova
Algoritmos y
Computación
AvanzadaAlgoritmo
Un algoritmo es una lista de actividades que se preparan
para la realización de una tarea.
Esta idea no sólo está relacionada con las computadoras,
sino que pertenece al campo de casi todas las actividades
humanas.
Ejemplos:
Receta de Cocina
Mapa del Tesoro
Partitura Musical
3. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
¿Qué pasaría, si el ingeniero civil o el
arquitecto construye una casa o un
edificio sin hacer sus planos, proyectos
o maquetas?
¿Permitirías que tu propio cirujano te
interviniera sin hacer los estudios
respectivos para obtener las evidencias
del problema de salud que te aqueja?
Metodología de Resolución de Problemas con
Algoritmos
¿Permitirías a tu abogado que te defendiera
sin conocer las pruebas y sin un plan para tu
defensa?
4. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
El desarrollo de una solución a la medida de un
problema requiere una metodología que
gradualmente nos lleve a una efectiva solución del
problema.
Para poder realizar programas, además de conocer
la metodología mencionada, también se debe de
conocer las funciones que puede realizar el
computador y las formas en que se pueden manejar
los elementos que hay en el mismo.
Metodología de Resolución de Problemas con
Algoritmos
5. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
IMPLEMENTACIÓN
ANÁLISIS
DISEÑO
Desarrollo de
Algoritmos
Verificación del
Algoritmo
Codificación del
algoritmo
Compilación y
ejecución del
programa
Prueba y
Depuración
Documentación
Mantenimiento
Fases
6. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
Que se va a hacer?
Ayuda a comprender la naturaleza del problema
Los problemas deben estar bien definidos
Realizar un examen bien cuidadoso del problema:
“Lo que piden” Vs “Lo que necesitan” Vs “Lo posible”
Mientras no se conozca totalmente el problema y lo
que se desea que realice el computador, no tiene
mucho caso continuar con la siguiente etapa
Análisis
7. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
1. Trabajo de campo
a. Idea General: se hace un estudio superficial del problema
(enunciado del problema).
Pasos para realizar un buen Análisis
8. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
1. Trabajo de campo
b. Se especifican los Requisitos, se hace un estudio profundo
(definición clara y precisa).
- Datos de entrada.
- Datos de salida: información que se desea producir.
- Datos auxiliares: datos que pueden servir para realizar mejor un
proceso, pero que no son de gran importancia para que éste cumpla su
objetivo final.
- Proceso: Métodos y fórmulas que se necesitan para procesar los datos.
Pasos para realizar un buen Análisis
9. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
2. Indagar otros datos, condiciones y restricciones que
afecten la resolución del problema.
Pasos para realizar un buen Análisis
10. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
¿Cómo se va a hacer?
Se determina como el programa va a hacer la tarea
solicitada.
Debe estar bien definido, no se debe permitir dobles
interpretaciones.
Diseño
11. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
1. Desarrollo del algoritmo
• Partes de un algoritmo
• Pasos para el desarrollo de un algoritmo
• Notación y representación de algoritmos
Pasos para realizar un buen diseño
12. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
2. Verificación del algoritmo
• Prueba de Escritorio
Pasos para realizar un buen diseño
13. Tutor Eliezer Córdova
Algoritmos y
Computación
AvanzadaPartes de un algoritmo
Entradas: Información dada al algoritmo
Instrucciones: Operaciones necesarias
para realizar un proceso
Salidas: Respuestas obtenidas al finalizar
el algoritmo
14. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
1. Diseño ascendente: (Top-Down Design):
Dividir el problema original en otros más simples y luego dividir estos
subproblemas en otros más simples, y así sucesivamente.
Se hace un esbozo.
Pasos para el desarrollo de un algoritmo
15. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
2. Refinamiento sucesivo:
Descripción mas detallada con pasos más específicos del problema.
Se hacen varios niveles de refinamiento hasta que la solución sea
clara, precisa y completa.
Pasos para el desarrollo de un algoritmo
16. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
3. Representación del algoritmo en una herramienta de
programación:
El lenguaje del algoritmo debe ser independiente del lenguaje de
programación. Herramientas: Diagramas de flujo, Pseudocódigo,
Diagrama Nassi-Schneiderman (N-S).
Pasos para el desarrollo de un algoritmo
17. Tutor Eliezer Córdova
Algoritmos y
Computación
AvanzadaEjemplo
Qué hacer para ver la película Superman Regresa?
Ir al Cine Comprar una entrada Ver la película Regresar a casa
ver cartelera de cine en el periódico
si proyectan “Superman Regresa”
ir hasta el cine
si no
buscar otra actividad
si hay fila entonces
ponerse en ella
mientras haya personas delante
avanzar en la cola
si hay entradas entonces
comprar una entrada
pasar a la sala
localizar la butaca
mientras proyectan la película
ver la película
si no
refunfuñar
...
18. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
Inicio
ver cartelera de cine en el periódico
si proyectan “Superman Regresa”
ir hasta el cine
si no
buscar otra actividad
fin
fin_si
si hay fila entonces
ponerse en ella
mientras haya personas delante
avanzar en la cola
fin_mientras
fin_si
si hay entradas entonces
comprar una entrada
pasar a la sala
localizar la butaca
mientras proyectan la película
ver la película
fin_mientras
si no
refunfuñar
fin_si
volver a casa
Fin
Inicio
caminar hasta llegar a la prim
repetir
comparar números de fila
si no son iguales
pasar a la siguiente
hasta que se localice la fila c
mientras número de silla no
avanzar a la siguiente silla
fin_mientras
sentarse en la butaca
Fin
localizar la butaca
19. Tutor Eliezer Córdova
Algoritmos y
Computación
AvanzadaNotación y Representación de Algoritmos
Lenguajes Algorítmicos: Serie de símbolos y reglas que
se utilizan para describir de manera explícita un
proceso.
Tipos:
Gráficos: Es la representación gráfica de las
operaciones que realiza un algoritmo (Diagrama de flujo
o Diagrama Nassi-Schneiderman (N-S) ).
No Gráficos: Representa en forma descriptiva las
operaciones que debe realizar un algoritmo
(pseudocódigo).
20. Tutor Eliezer Córdova
Algoritmos y
Computación
AvanzadaDiagrama de Flujo
Un Diagrama de Flujo representa la
esquematización gráfica de un
algoritmo.
Se diseña para permitir observar las
estructuras y la forma como ellas se
conectan entre sí al configurar un
programa.
21. Tutor Eliezer Córdova
Algoritmos y
Computación
AvanzadaDiagrama Nassi-Schneiderman (N-S)
También conocido como diagrama
de Chapin.
Similar al Diagrama de Flujo, en el
que se omiten los conectores y las
cajas son contiguas.
22. Tutor Eliezer Córdova
Algoritmos y
Computación
AvanzadaSeudocódigo
Para expresar el contenido de
un programa de computadora,
se requiere el uso de un
lenguaje de programación.
Cuando expresamos dicho
contenido en nuestra lengua
natural, utilizando ciertas
expresiones simples que lo
abrevian un poco, se dice que
está escrito en seudocódigo.
Calcular las posibles raíces para
una ecuación de segundo grado:
ax2+bx+c=0
+Algoritmo raíces
|
| Variables reales a,b,c,x,y
|
| Escribir "Introduzca los
coeficientes de mayor a menor
grado."
| Leer a,b,c
|
| +Si sqr(b)>= 4*a*c entonces
| | x=(-b+sqrt(b^2-4*a*c))/2a
| +Sino
| | Escribir "No existen raíces
reales."
| +Finsi
|
+Final
23. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
23
Verificación del Algoritmo
Comprobar que el programa realiza las tareas para las
que ha sido diseñado y produce el resultado correcto y
esperado.
Prueba de Escritorio:
Dar diferentes datos de entrada al programa y seguir la
lógica del mismo hasta obtener el resultado exacto al
esperado.
Si es necesario, hacer ajustes y volver a realizar la
prueba hasta que cumpla con el propósito del cual ha sido
creado.
24. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
Donde se va a hacer?
Culminación del sistema, aunque en realidad nunca
termina su proceso .
PASOS:
1. Codificación
2. Compilación y Ejecución
3. Prueba y Depuración
4. Documentación
5. Mantenimiento
Implementación
25. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
Es la escritura del algoritmo en un lenguaje de programación
(Código Fuente).
El código puede ser escrito en cualquier lenguaje, ya que el
diseño es independiente de este.
Codificación
26. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
Traduce el programa fuente a programa en código de
maquina y lo ejecuta, introduciendo el programa en
memoria.
Si se presentan errores de “sintaxis” o de compilación, se
vuelve a editar el programa.
Se corrigen los errores y se compila de nuevo hasta que no
salgan errores.
Compilación y Ejecución
27. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
Este paso se realiza debido a que los errores humanos dentro
de la programación de computadores son muchos y aumentan
considerablemente con la complejidad del problema.
Se refiere a ejecutar el programa con varios datos de entrada;
así se determina si el programa tiene errores “lógicos” y se
corrigen.
Prueba y Depuración
28. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
También se encuentran errores de “ejecución” (errores que el
computador puede entender pero no ejecutar).
Ej: Divisiones por cero.
Para esto se utilizan valores de entrada:
Normales.
Extremos, limites.
Especiales.
Prueba y Depuración
29. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
Son comentarios que facilitan la comprensión del
programa, debido a que a menudo un programa
escrito por una persona, es usado por otra.
Clases de documentación:
INTERNA:
- Se incluyen dentro del programa fuente.
- Son comentarios que ayudan a la comprensión del código y el
entendimiento de los procesos.
Documentación
30. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
Clases de documentación:
EXTERNA:
- Es un archivo donde se
documenta todos los pasos
realizados para el desarrollo del
programa y la solución del
problema.
- Incluye: Análisis, diseño,
manual de usuario (como
funciona el programa), manual
técnico (como se implementó el
programa en el lenguaje de
programación seleccionado),
pruebas, etc.
Documentación
31. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
Se lleva a cabo después de terminado
el programa.
Se utiliza para hacerle soporte al
programa: Cuando es necesario hacer
algún cambio, ajuste o complemento
al sistema para que siga trabajando de
manera correcta.
Para esto la documentación debe ser
correcta, completa y actualizada.
Mantenimiento
32. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
PROBLEMA ALGORITMO PROGRAMA
ANALISIS DISEÑO IMPLEMENTACIÓN
Esquema General de la Resolución de un
Problema
33. Tutor Eliezer Córdova
Algoritmos y
Computación
AvanzadaCÓDIGO: 1 NOMBRE: Huevo frito
ENUNCIADO:
Se desea realizar el análisis para el proceso de cocinar un
huevo frito saludable.
ANALISIS DEL PROBLEMA
DATOS DE ENTRADA: Huevo, cacerola, tapa, Mantequilla, sal,
DATOS DE SALIDA: Huevo frito saludable
DATOS AUXILIARES: Cronometro, estufa
CONDICIONES O
RESTRICCIONES:
- La fritura solo puede máximo 5 minutos, de lo
contrario el huevo se quemara.
- Aplicar una pizca de sal para que no quede
muy salado.
- Utilizar solo una cucharadita de mantequilla
para evitar el colesterol.
PROCESO:
Inicio
1. Prender la estufa //Prenderla en alto
2. Poner a calentar la cacerola
3. Poner la mantequilla
4. Dejar derretir la mantequilla
5. Si la mantequilla no esta derretida, volver al punto 4
6. SI la mantequilla esta derretida, entonces
7. Iniciar el cronometro
8. Quebrar el huevo //Solo un poco
9. Echarlo en la cacerola //Sin revolverlo
10.Poner la tapa
11.Activar el cronometro
12.Si el huevo esta ya frito o han pasado 5 minutos, entonces
13.Esperar y volver al punto 12
14.Si no, entonces:
15.Apagar la estufa
16.Bajar la cacerola //utilizando un trapo para no
quemarse
17.Quitar la tapa
18.Echarle sal
Fin
DISEÑO DEL PROBLEMA
ALGORITMO:
PRUEBA DE ESCRITORIO:
IMPLEMENTACIÓN DEL PROBLEMA
DOCUMENTACIÓN:
CODIGO FUENTE:
34. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
CÓDIGO: 2 NOMBRE: Levantarse de madrugada
ENUNCIADO: Se desea realizar el análisis del proceso de levantarse de la
cama para ir a clase de Informática I.
ANALISIS DEL PROBLEMA
DATOS DE ENTRADA: Estudiante, despertador
DATOS DE SALIDA: Estudiante levantado
DATOS AUXILIARES: Cama, cobijas, pantuflas
CONDICIONES O
RESTRICCIONES:
- Como la clase empieza a las 9:00 am, tiene
que levantarse a las 8:00 am
PROCESO:
Inicio
1. Si el despertador marca las 8:00 am, entonces
2. Soñar durísimo
3. Si la persona esta dormida, entonces //por si no ha llegado
a dormir
4. Abrir los ojos
5. Desperezarse
6. Quitarse las lagañas
7. Apagar el despertador
8. Quitarse la cobija
9. Sentarse al borde de la cama
10.Buscar las pantuflas
11.Ponerse las pantuflas
12.Pararse de la cama
13. Si la persona no esta dormida, entonces //por si no ha
llegado a dormir
14.apagarse el despertador a los 10 minutos
Fin
35. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
CÓDIGO: 3 NOMBRE: Números pares
ENUNCIADO: Realizar la suma de todos los números pares entre 2 y 1000.
El problema consiste en sumar 2 + 4 + 6 + 8 + . . . + 1000
ANALISIS DEL PROBLEMA
DATOS DE ENTRADA: Número mínimo, Número máximo
DATOS DE SALIDA: Suma números pares
DATOS AUXILIARES:
CONDICIONES O
RESTRICCIONES: Solo se suman los números pares
PROCESO:
Inicio
1. Inicializar la suma en 0
2. Empezar a contar desde el Numero mínimo
3. Sumar este valor
4. Incrementar el valor en 2 unidades
5. Si el valor es mayor que el Número máximo, entonces
6. Saltar al paso 10
7. Sino, entonces
8. Sumar este nuevo valor
9. Volver al paso 4
10.Escribir el resultado
Fin
36. Tutor Eliezer Córdova
Algoritmos y
Computación
Avanzada
CÓDIGO: 4 NOMBRE: Número Primo
ENUNCIADO:
Se desea diseñar un algoritmo para saber si un número es
primo o no. Un número es primo si sólo puede dividirse por sí
mismo y por la unidad (es decir, no tiene más divisores que él
mismo y la unidad). Por ejemplo, 9, 8,6,4, 12, 16, 20, etc., no
son primos, ya que son divisibles por números distintos a ellos
mismos y a la unidad. Así, 9 es divisible por 3, 8 lo es por 2,
etc.
ANALISIS DEL PROBLEMA
DATOS DE ENTRADA: Número
DATOS DE SALIDA: Si es primo o no
DATOS AUXILIARES:
CONDICIONES O
RESTRICCIONES:
PROCESO:
El algoritmo de resolución del problema pasa por dividir
sucesivamente el número por 2, 3, 4..., etcétera.
Inicio
1. Obtener el número
2. Poner X igual a 2
3. Dividir el número por X
4. Si el resultado del paso 3 es entero, entonces //el Número
no es primo
5. Escribir que el número no es primo
6. Terminar el programa
7. Si el resultado del paso 3 no es entero, entonces
8. Incrementar en 1 unidad X
9. Si X es igual al Número ingresado, entonces //el Número
es primo
10.Escribir que el número es primo
11.Si no, entonces volver al punto 3
Fin