Sie sind auf Seite 1von 33

Metodologa para la Creacin de

Algoritmos

Introduccin a la Informtica
Departamento de Sistemas
Universidad del Cauca
2006

Agenda
Definiciones Importantes
Algoritmo
Programa
Metodologa de Resolucin de Problemas
con Algoritmos
Anlisis
Diseo
Implementacin

Notacin y Representacin de Algoritmos


Diagramas de Flujo
Diseo del Algoritmo en Pseudo-cdigo
Otros tipos de diseo algortmico
2

Algoritmo
Un algoritmo es una lista de actividades que se
preparan para la realizacin de una tarea.
Esta idea no slo 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

Qu es un algoritmo?
Es una secuencia ordenada de pasos, sin ambigedades, que
conducen a la solucin de un problema dado.
Es la definicin de los procesos definidos en el anlisis.
Se representa en un lenguaje natural.
La exactitud es determinante.
Es independiente del lenguaje de programacin.
Solo puede ejecutarse una operacin a la vez.
Algoritmo= Traduccin al latn de la palabra rabe
Alkhowarizmi, nombre de un matemtico y astrnomo rabe.

Caractersticas de un
algoritmo
Debe tener un punto particular de inicio.
Preciso: Indica el orden de realizacin 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 algn momento, debe tener un
nmero finito de pasos.
Eficiente: Debe realizar los pasos con un mnimo de
utilizacin de recursos.
Independiente del lenguaje de Programacin: Su
implementacin debe ser posible en cualquier lenguaje de
programacin

Programa
Cuando un programa contiene precisamente el
conjunto de instrucciones que resuelven un
problema especfico y completan correctamente
una tarea propuesta, decimos que el programa es
una materializacin de un Algoritmo.
Un
algoritmo
es
el
planteamiento
general
de la solucin, mientras
el
programa
es
la
solucin
misma
y
contiene
todos
sus
detalles
en
forma
ejecutable.
6

Elementos de un Programa
La principal razn 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 situacin del ejecutor
No deben imposibilitar continuar la ejecucin
No repeticiones infinitas

Metodologa de Resolucin de
Problemas con Algoritmos
Qu pasara, si el ingeniero civil o
el arquitecto construye una casa o
un edificio sin hacer sus planos,
proyectos o maquetas?

Permitiras a tu abogado que te


defendiera sin conocer las pruebas
y sin un plan para tu defensa?
Permitiras que tu propio cirujano
te interviniera sin hacer los estudios
respectivos para obtener las
evidencias del problema de salud
que te aqueja?

Metodologa de Resolucin de
Problemas con Algoritmos
El desarrollo de una solucin a la medida de un
problema requiere una metodologa que
gradualmente nos lleve a una efectiva solucin
del problema.
Para poder realizar programas, adems de
conocer la metodologa mencionada, tambin
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.

Codificacin del
algoritmo

ANLISIS

Desarrollo de
Algoritmos
Verificacin del
Algoritmo
DISEO

Compilacin y
ejecucin del
programa
Prueba y
Depuracin
Documentacin
Mantenimiento
IMPLEMENTACIN

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


Anlisis
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 (definicin clara y precisa).
- Datos de entrada.
- Datos de salida: informacin 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: Mtodos y frmulas que se necesitan para
procesar los datos.

2. Indagar otros datos, condiciones y restricciones


que afecten la resolucin del problema.

12

Cmo 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


diseo
1. Desarrollo del algoritmo

Partes de un algoritmo
Pasos para el desarrollo de un
algoritmo
Notacin y representacin de
2. Verificacin
algoritmos del algoritmo
Prueba de Escritorio

14

Partes de un algoritmo
Entradas: Informacin 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. Diseo ascendente: (Top-Down Design):
Dividir el problema original en otros ms simples y luego
dividir estos subproblemas en otros ms simples, y as
sucesivamente.
Se hace un esbozo.
2. Refinamiento sucesivo:
Descripcin mas detallada con pasos ms especficos del
problema.
Se hacen varios niveles de refinamiento hasta que la
solucin sea clara, precisa y completa.
3. Representacin del algoritmo en una herramienta
de programacin:
El lenguaje del algoritmo debe ser independiente del
lenguaje de programacin. Herramientas: Diagramas de
16
flujo, Pseudocdigo, Diagrama Nassi-Schneiderman (N-S).

Ejemplo
Qu hacer para ver la pelcula Superman Regresa?

Ir al Cine Comprar una entradaVer la pelculaRegresar a casa

si hay fila entonces


ver cartelera de cine en el peridico
ponerse en ella
si proyectan Superman Regresa
mientras haya personas dela
ir hasta el cine
avanzar en la cola
si no
si hay entradas entonces
buscar otra actividad comprar una entrada
pasar a la sala
localizar la butaca
mientras proyectan la pelcu
ver la pelcula
si no
refunfuar
17

...

Inicio
ver cartelera de cine en el peridico
si proyectan Superman Regresa
ir hasta el cine
si no
buscar otra actividad
fin
Inicio
fin_si
caminar hasta llegar a la pri
si hay fila entonces
repetir
ponerse en ella
comparar nmeros de fila
mientras haya personas delante
si no son iguales
avanzar en la cola
pasar a la siguiente
fin_mientras
hasta que se localice la fila
fin_si
nmero de silla n
si hay entradas entonces mientras
avanzar a la siguiente silla
comprar una entrada
fin_mientras
pasar a la sala
sentarse en la butaca
localizar
butaca
localizar
la la
butaca
Fin
mientras proyectan la pelcula
ver la pelcula
fin_mientras
si no
refunfuar
fin_si
volver a casa
18
Fin

Notacin y Representacin de
Algoritmos

Lenguajes Algortmicos: Serie de smbolos y


reglas que se utilizan para describir de manera
explcita un proceso.
Tipos:
Grficos: Es la representacin grfica de las
operaciones que realiza un algoritmo (Diagrama
de flujo o Diagrama Nassi-Schneiderman (N-S) ).
No Grficos: Representa en forma descriptiva
las operaciones que debe realizar un algoritmo
(pseudocdigo).

19

Diagrama de Flujo
Un Diagrama de Flujo representa
la esquematizacin grfica de un
algoritmo.
Se disea para permitir observar
las estructuras y la forma como
ellas se conectan entre s al
configurar un programa.

Diagrama Nassi-Schneiderman
Tambin conocido como
(N-S)

diagrama de Chapin.
Similar al Diagrama de Flujo, en
el que se omiten los conectores
y las cajas son contiguas.
20

Seudocdigo
Para expresar el contenido
de
un
programa
de
computadora, se requiere
el uso de un lenguaje de
programacin.
Cuando expresamos dicho
contenido
en
nuestra
lengua natural, utilizando
ciertas expresiones simples
que lo abrevian un poco, se
dice que est escrito en
seudocdigo.

Calcular las posibles races


para una ecuacin de
segundo grado: ax2+bx+c=0
+Algoritmo races
|
| 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 races
reales."
| +Finsi
|
+Final

21

Verificacin del Algoritmo


Comprobar que el programa realiza las tareas para
las que ha sido diseado y produce el resultado
correcto y esperado.
Prueba de Escritorio:

Dar diferentes datos de entrada al programa y


seguir la lgica 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 propsito del
cual ha sido creado.
22

Donde se va a hacer?
Culminacin del sistema, aunque en realidad
nunca termina su proceso .
PASOS:

1.
2.
3.
4.
5.

Codificacin
Compilacin y Ejecucin
Prueba y Depuracin
Documentacin
Mantenimiento
23

Codificacin
Es la escritura del algoritmo en un lenguaje de
programacin (Cdigo Fuente).
El cdigo puede ser escrito en cualquier leguaje, ya que
el diseo es independiente de este.

Compilacin y Ejecucin
Traduce el programa fuente a programa en cdigo de maquina y lo
ejecuta, introduciendo el programa en memoria.
Si se presentan errores de sintaxis o de compilacin, se vuelve a editar
el programa.
Se corrigen los errores y se compila de nuevo hasta que no salgan errores.

24

Prueba y Depuracin
Este paso se realiza debido a que los errores humanos dentro de la programacin 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 lgicos y se corrigen.

Tambin se encuentran errores de ejecucin (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

Documentacin
Son
comentarios
que
facilitan
la
comprensin del programa, debido a que a
menudo un programa escrito por una
persona, es usado por otra.
Clases
de documentacin:
INTERNA:
- Se incluyen dentro del programa fuente.
-Son comentarios que ayudan a la comprensin del cdigo y
el entendimiento de los procesos.
EXTERNA:
-Es un archivo donde se documenta todos los pasos
realizados para el desarrollo del programa y la solucin del
problema.
-Incluye:
Anlisis, diseo, manual de usuario (como
funciona el programa), manual tcnico (como se
implement el programa en el lenguaje de programacin
26
seleccionado), pruebas, etc.

Mantenimiento
Se lleva a cabo despus de terminado el programa.
Se utiliza para hacerle soporte al programa: Cuando es necesario hacer algn
cambio, ajuste o complemento al sistema para que siga trabajando de manera
correcta.
Para esto la documentacin debe ser correcta, completa y actualizada.

27

ANALISIS

PROBLEMA

DISEO

ALGORITMO

IMPLEMENTACIN

PROGRAMA

28

CDIGO:

ENUNCIADO:

NOMBRE: Huevo frito


Se desea realizar el anlisis 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 mximo 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
DISEO DEL PROBLEMA

ALGORITMO:
PRUEBA DE ESCRITORIO:
IMPLEMENTACIN DEL PROBLEMA
DOCUMENTACIN:
CODIGO FUENTE:

29

CDIGO:

ENUNCIADO:

NOMBRE: Levantarse de madrugada


Se desea realizar el anlisis del proceso de levantarse de la
cama para ir a clase de Informtica 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. Soar dursimo
3. Si la persona esta dormida, entonces //por si no ha llegado
a dormir
4. Abrir los ojos
5. Desperezarse
6. Quitarse las lagaas
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

CDIGO:

ENUNCIADO:

NOMBRE: Nmeros pares


Realizar la suma de todos los nmeros 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:

Nmero mnimo, Nmero mximo


Suma nmeros pares
Solo se suman los nmeros pares
Inicio
1. Inicializar la suma en 0
2. Empezar a contar desde el Numero mnimo
3. Sumar este valor
4. Incrementar el valor en 2 unidades
5. Si el valor es mayor que el Nmero mximo, 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

CDIGO:

ENUNCIADO:

NOMBRE: Nmero Primo


Se desea disear un algoritmo para saber si un nmero es
primo o no. Un nmero es primo si slo puede dividirse por s
mismo y por la unidad (es decir, no tiene ms 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 nmeros 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:

Nmero
Si es primo o no

El algoritmo de resolucin del problema pasa por dividir


sucesivamente el nmero por 2, 3, 4..., etctera.
Inicio
1. Obtener el nmero
2. Poner X igual a 2
3. Dividir el nmero por X
4. Si el resultado del paso 3 es entero, entonces //el Nmero
no es primo
5. Escribir que el nmero 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 Nmero ingresado, entonces //el Nmero
es primo
10. Escribir que el nmero es primo
11. Si no, entonces volver al punto 3
Fin

32

Bibliografa
Algoritmo:
http://es.wikipedia.org/wiki/Algoritmo
http://www.monografias.com/trabajos/algoritmo/algoritmo.shtml
Diagrama de Flujo, Seudocdigo
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
Imgenes:
http://www.supermercadosgrande.com/recetas/recetaarrozypollo.jpg
http://www.modenasitiweb.it/casimirri_onofrio/immagini/xarama.gi
f
http://www.vaivenproducciones.com/images/productos/PARTITURA
%20900.jpg

33

Das könnte Ihnen auch gefallen