Metodología para la elaboración de algoritmos File

Download Report

Transcript Metodología para la elaboración de algoritmos File

Metodología para la Creación de
Algoritmos
Introducción a la Informática
Departamento de Sistemas
Universidad del Cauca
2006
1
Agenda
Definiciones Importantes
Algoritmo
Programa
Metodología de Resolución de Problemas con Algoritmos
Análisis
Diseño
Implementación
 Notación y Representación de Algoritmos
 Diagramas de Flujo
 Diseño del Algoritmo en Pseudo-código
 Otros tipos de diseño algorítmico
2
Algoritmo
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
Qué es un algoritmo?
Es una secuencia ordenada de pasos, sin ambigüedades, que
conducen a la solución de un problema dado.
Es la definición de los procesos definidos en el análisis.
Se representa en un lenguaje natural.
La exactitud es determinante.
Es independiente del lenguaje de programación.
Solo puede ejecutarse una operación a la vez.
Algoritmo= Traducción al latín de la palabra árabe
Alkhowarizmi, nombre de un matemático y astrónomo árabe.
4
Características de un algoritmo
Debe tener un punto particular de inicio.
Preciso: Indica el orden de realización de cada paso.
Definido: Si se sigue varias veces los mismos pasos con los
mismos datos, se debe obtener siempre los mismos
resultados. No debe permitir dobles interpretaciones.
Finito: Debe terminar en algún momento, debe tener un
número finito de pasos.
Eficiente: Debe realizar los pasos con un mínimo de
utilización de recursos.
Independiente del lenguaje de Programación: Su
implementación debe ser posible en cualquier lenguaje de
programación
5
Programa
Cuando un programa contiene precisamente el conjunto
de instrucciones que resuelven un problema específico y
completan correctamente una tarea propuesta, decimos
que el programa es una materialización de un Algoritmo.
Un
algoritmo
es
el
planteamiento general de la
solución,
mientras
el
programa es la solución
misma y contiene todos sus
detalles en forma ejecutable.
6
Elementos de un Programa
La principal razón para que las personas empiecen a
programar, es porque se utiliza el computador como una
herramienta para solucionar problemas.
Elementos:
El Objetivo
El Programador
Las Instrucciones
El Ejecutor
Restricciones:
Instrucciones comprensibles para el ejecutor
Realizable desde la situación del ejecutor
No deben imposibilitar continuar la ejecución
No repeticiones infinitas
7
Metodología de Resolución de
Problemas con Algoritmos
¿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 a tu abogado que te
defendiera sin conocer las pruebas y sin
un plan para tu defensa?
¿Permitirías que tu propio cirujano te
interviniera sin hacer los estudios
respectivos para obtener las evidencias
del problema de salud que te aqueja?
8
Metodología de Resolución de
Problemas con Algoritmos
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.
9
Codificación del
algoritmo
ANÁLISIS
Desarrollo de
Algoritmos
Verificación del
Algoritmo
DISEÑO
Compilación y
ejecución del
programa
Prueba y
Depuración
Documentación
Mantenimiento
IMPLEMENTACIÓN
10
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.
11
Pasos para realizar un buen Análisis
1. Trabajo de campo
a. Idea General: se hace un estudio superficial del problema
(enunciado del problema).
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.
2. Indagar otros datos, condiciones y restricciones que
afecten la resolución del problema.
12
¿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.
13
Pasos para realizar un buen diseño
1. Desarrollo del algoritmo
• Partes de un algoritmo
• Pasos para el desarrollo de un algoritmo
• Notación y representación de algoritmos
2. Verificación del algoritmo
• Prueba de Escritorio
14
Partes de un algoritmo
Entradas: Información dada al algoritmo
Instrucciones: Operaciones necesarias para realizar
un proceso
Salidas: Respuestas obtenidas al finalizar el algoritmo
15
Pasos para el desarrollo de un algoritmo
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.
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.
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).
16
Ejemplo
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
...
17
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
localizarlalabutaca
butaca
localizar
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 primera fila
repetir
comparar números de fila
si no son iguales
pasar a la siguiente fila
hasta que se localice la fila correcta
mientras número de silla no coincida
avanzar a la siguiente silla
fin_mientras
sentarse en la butaca
Fin
18
Notació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).
19
Diagrama 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.
Diagrama 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.
20
Seudocó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
21
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.
22
Donde se va a hacer?
Culminación del sistema, aunque en realidad nunca
termina su proceso .
PASOS:
1.
2.
3.
4.
5.
Codificación
Compilación y Ejecución
Prueba y Depuración
Documentación
Mantenimiento
23
Codificación
Es la escritura del algoritmo en un lenguaje de programación
(Código Fuente).
El código puede ser escrito en cualquier leguaje, ya que el
diseño es independiente de este.
Compilación y Ejecución
Traduce el programa fuente a programa en código
maquina y lo ejecuta, introduciendo el programa
memoria.
Si se presentan errores de “sintaxis” o de compilación,
vuelve a editar el programa.
Se corrigen los errores y se compila de nuevo hasta que
salgan errores.
24
de
en
se
no
Prueba y Depuración
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.
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.
25
Documentación
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.
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.
26
Mantenimiento
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.
27
ANALISIS
PROBLEMA
DISEÑO
ALGORITMO
IMPLEMENTACIÓN
PROGRAMA
28
CÓDIGO:
1
ENUNCIADO:
NOMBRE: Huevo frito
Se desea realizar el análisis para el proceso de cocinar un
huevo frito saludable.
ANALISIS DEL PROBLEMA
DATOS DE ENTRADA:
DATOS DE SALIDA:
DATOS AUXILIARES:
CONDICIONES O
RESTRICCIONES:
PROCESO:
Huevo, cacerola, tapa, Mantequilla, sal,
Huevo frito saludable
Cronometro, estufa
- 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.
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:
29
CÓDIGO:
2
ENUNCIADO:
NOMBRE: Levantarse de madrugada
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:
DATOS DE SALIDA:
DATOS AUXILIARES:
CONDICIONES O
RESTRICCIONES:
PROCESO:
Estudiante, despertador
Estudiante levantado
Cama, cobijas, pantuflas
- Como la clase empieza a las 9:00 am, tiene
que levantarse a las 8:00 am
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
30
CÓDIGO:
3
ENUNCIADO:
NOMBRE: Números pares
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:
DATOS DE SALIDA:
DATOS AUXILIARES:
CONDICIONES O
RESTRICCIONES:
PROCESO:
Número mínimo, Número máximo
Suma números pares
Solo se suman los números pares
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
31
CÓDIGO:
4
ENUNCIADO:
NOMBRE: Número Primo
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:
DATOS DE SALIDA:
DATOS AUXILIARES:
CONDICIONES O
RESTRICCIONES:
PROCESO:
Número
Si es primo o no
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
32
Bibliografía
Algoritmo:
http://es.wikipedia.org/wiki/Algoritmo
http://www.monografias.com/trabajos/algoritmo/algoritmo.shtml
Diagrama de Flujo, Seudocódigo
http://www.mis-algoritmos.com/2006/08/08/aprenda-a-creardiagramas-de-flujo/
http://es.wikipedia.org/wiki/Pseudoc%C3%B3digo
http://www.mis-algoritmos.com/diagramas-flujo.html
Imágenes:
http://www.supermercadosgrande.com/recetas/recetaarrozypollo.jpg
http://www.modenasitiweb.it/casimirri_onofrio/immagini/xarama.gif
http://www.vaivenproducciones.com/images/productos/PARTITURA
%20900.jpg
33