Вы находитесь на странице: 1из 8

Anlisis del problema

Cuando un usuario plantea a un programador un problema que resolver


mediante su ordenador, por lo general ese usuario tendr conocimientos
ms o menos amplios sobre el dominio del problema, pero no es habitual
que tenga conocimientos de informtica. Por ejemplo, un contable que
necesita un programa para llevar la contabilidad de una empresa ser un
experto en contabilidad (dominio del problema), pero no tiene por qu
ser experto en programacin.
Del mismo modo, el informtico que va a resolver un determinado
problema puede ser un experto programador, pero en principio no tiene
por qu conocer el dominio del problema; siguiendo el ejemplo anterior,
el informtico que hace un programa no tiene por qu ser un experto en
contabilidad.
Por ello, al abordar un problema que se quiere resolver mediante un
ordenador, el programador necesita de la experiencia del experto del
dominio para entender el problema. Al final, si se quiere llegar a una
solucin satisfactoria es necesario que:
El problema est bien definido con el mximo detalle
Las especificaciones de las entradas y salidas del problema, deben
ser descritas tambin en detalle:
o Qu datos son necesarios para resolver el problema?
o Qu informacin debe proporcionar la resolucin del
problema


Representacin de algoritmos: grfica y
pseudocdigo.

1 Descripcin Narrada Este algoritmo es caracterizado porque sigue un
proceso de ejecucin comn y lgico, describiendo textualmente paso a
paso cada una de las actividades a realizar dentro de una actividad
determinada. Ejemplo 1 Algoritmo para asistir a clases: 1. Levantarse 2.
Baarse 3. Vestirse 4. Desayunar 5. Cepillarse los dientes 6. Salir de casa
7. Tomar el autobs 8. Llegar al ITCA 9. Buscar el aula 10. Ubicarse en un
asiento 2.Descripcin en Pseudocdigo Pseudo = falso. El pseudo cdigo
no es realmente un cdigo sino una imitacin y una versin abreviada de
instrucciones reales para las computadoras. Es una tcnica para diseo de
programas que permite definir las estructuras de datos, las operaciones
que se aplicarn a los datos y la lgica que tendr el programa de
computadora para solucionar un determinado problema. Utiliza un
pseudolenguaje muy parecido a nuestro idioma, pero que respeta las
directrices y los elementos de los lenguajes de programacin. Se concibi
para superar las dos principales desventajas de los flujogramas: lento de
crear y difcil de modificar sin un nuevo redibujo.

2.2 Representacin de algoritmos: grfica y pseudocdigo.
Las herramientas de programacin utilizadas como lenguajes
algortmicos son:
Pseudocdigo: es un lenguaje algortmico, muy parecido al espaol
pero ms conciso que permite la redaccin rpida del algoritmo.
Diagramas de flujo: ha sido la herramienta de programacin por
excelencia, y an hoy sigue siendo muy utilizada. Es fcil de disear pues
el flujo lgico del algoritmo se muestra en un diagrama en lugar de
palabras.

Pseudocdigo

Es un lenguaje de pseudoprogramacin, muy parecido a un lenguaje de
programacin. El pseudocdigo es muy fcil de utilizar, ya que es muy
similar al espaol. Algunas palabras utilizadas en el pseudocdigo:
Inicio
Fin
Leer
Escribir
Asignar (x y+z)
Ejemplo Programa Calculo rea Rectngulo
1. Inicio
2. Leer; base, altura

3. rea base x altura
4. Escribir; base, altura, rea
5. Fin
Para desarrolar un pseudocodigo se necesita saber los tipos de datos que
se deben tener :
entero: Subconjunto finito de los nmeros enteros, cuyo rango depender
del lenguaje en el que posteriormente codifiquemos el algoritmo y del
ordenador.
El rango depende de cuantos bits utilice para codificar el numero,
normalmente 2 byes.Para numeros positivos, con 16 se pueden almacenar
216
real: Subconjunto de los nmeros reales limitado no slo en cuanto al
tamao, sino tambin en cuanto a la precisin
Lgico: Conjunto formado por los valores Cierto y Falso. 1 y 0.
Carcter: Conjunto finito y ordenado de los caracteres que el Ordenador
Diagramas

Un diagrama de flujo utiliza smbolos estndar en el que cada paso del
algoritmo se visualiza dentro del smbolo y en el orden en que estos
pasos se ejecutan, se indica conectndolos con flechas llamadas lneas de
flujo, ya que indican el flujo lgico del algoritmo.
El diagrama de flujo es la representacin grfica del algoritmo o proceso.
Se utiliza en disciplinas como la programacin, la economa, los procesos
industriales y la psicologa cognitiva. Estos diagramas utilizan smbolos
con significados bien definidos que representan los pasos del algoritmo, y
representan el flujo de ejecucin mediante flechas que conectan los
puntos de inicio y de fin de proceso.






DISEO DE ALGORITMOS APLICADOS A PROBLEMAS.

Para llegar a la realizacin de un programa es necesario el diseo previo
de algoritmo, de modo que sin algoritmo no puede existir un programa.
Los algoritmos son independientes tanto del lenguaje de programacin en
que se expresan como de la computadora que lo ejecuta. En cada
problema el algoritmo se puede expresar en un lenguaje diferente de
programacin y ejecutarse en una computadora distinta; sin embargo, el
algoritmo ser siempre el mismo.

Dada la importancia del algoritmo en la ciencia de la computacin, un
aspecto muy importante ser el diseo de algoritmos. El diseo de la
mayora de los algoritmos requiere creatividad conocimientos profundos
de la tcnica de la programacin.
Tcnicas de diseo de algoritmos
Algoritmos voraces (greedy): seleccionan los elementos ms
prometedores del conjunto de candidatos hasta encontrar una
solucin. En la mayora de los casos la solucin no es ptima.
Algoritmos paralelos: permiten la divisin de un problema en
subproblemas de forma que se puedan ejecutar de forma
simultnea en varios procesadores.
Algoritmos probabilsticos: algunos de los pasos de este tipo de
algoritmos estn en funcin de valores pseudoaleatorios.
Algoritmos determinsticos: el comportamiento del algoritmo es
lineal: cada paso del algoritmo tiene nicamente un paso sucesor y
otro antecesor.
Algoritmos no determinsticos: el comportamiento del algoritmo
tiene forma de rbol y a cada paso del algoritmo puede bifurcarse a
cualquier nmero de pasos inmediatamente posteriores, adems
todas las ramas se ejecutan simultneamente.
Divide y vencers: dividen el problema en subconjuntos disjuntos
obteniendo una solucin de cada uno de ellos para despus unirlas,
logrando as la solucin al problema completo.
Metaheursticas: encuentran soluciones aproximadas (no ptimas)
a problemas basndose en un conocimiento anterior (a veces
llamado experiencia) de los mismos.
Programacin dinmica: intenta resolver problemas disminuyendo
su coste computacional aumentando el coste espacial.
Ramificacin y acotacin: se basa en la construccin de las
soluciones al problema mediante un rbol implcito que se recorre
de forma controlada encontrando las mejores soluciones.
Vuelta atrs (backtracking): se construye el espacio de soluciones
del problema en un rbol que se examina completamente,
almacenando las soluciones menos costosas.

2.3 Diseo de algoritmos aplicados a problemas
Los algoritmos son independientes tanto del lenguaje de programacin en
que se expresan como de la computadora que lo ejecuta. En cada
problema el algoritmo se puede expresar en un lenguaje diferente de
programacin y ejecutarse en unacomputadora distinta; sin embargo, el
algoritmo ser siempre el mismo.

Dada la importancia del algoritmo en la ciencia de la computacin, un
aspecto muy importante ser el diseo de algoritmos. El diseo de la
mayora de los algoritmos requiere creatividad y conocimientos
profundos de la tcnica de la programacin.
Tcnicas de diseo de algoritmos

Algoritmos voraces (greedy): seleccionan los elementos ms
prometedores del conjunto de candidatos hasta encontrar una
solucin. En la mayora de los casos la solucin no es ptima.
Algoritmos paralelos: permiten la divisin de un problema en sub
problemas de forma que se puedan ejecutar de forma simultnea en
varios procesadores.
Algoritmos probabilsticos: algunos de los pasos de este tipo de
algoritmos estn en funcin de valores pseudoaleatorios.
Algoritmos no determinanticos: el comportamiento del algoritmo
tiene forma de rbol y a cada paso del algoritmo puede bifurcarse a
cualquier nmero de pasos inmediatamente posteriores, adems
todas las ramas se ejecutan simultneamente.
Divide y vencers: dividen el problema en subconjuntos disjuntos
obteniendo una solucin de cada uno de ellos para despus unirlas,
logrando as la solucin al problema completo.
Programacin dinmica: intenta resolver problemas disminuyendo
su coste computacional aumentando el coste espacial.
Ramificacin y acotacin: se basa en la construccin de las
soluciones al problema mediante un rbol implcito que se recorre
de forma controlada encontrando las mejores soluciones.
Vuelta atrs (backtracking): se construye el espacio de soluciones
del problema en un rbol que se examina completamente,
almacenando las soluciones menos costosas.


Caractersticas de algoritmo
La resolucin de un problema exige el diseo de un algoritmo que
resuelva el problema, como lo muestra la siguiente figura:


Pasos para la resolucin de un problema
1.- Diseo del algoritmo que describe la secuencia ordenada de pasos
sin ambigedades- que conducen a la solucin de un problema
dado.(Anlisis del problema y desarrollo del algoritmo).
2.- Expresar el algoritmo como un programa en un lenguaje adecuado.
(Fase de codificacin).
3.- Ejecucin y validacin del programa por la computadora.

Caractersticas de los algoritmos
Un algoritmo debe:
ser preciso e indicar el orden de realizacin de cada paso.
estar definido. Si se sigue un algoritmo dos veces, se debe obtener el
mismo resultado cada vez.
ser finito. Si se sigue un algoritmo, se debe terminar en algn
momento; o sea, debe tener un nmero finito de pasos.
Existen dos herramientas utilizadas conceptualmente para disear
algoritmos: los diagramas de flujo y el pseudocdigo.




Diseo algortmico de las funciones

En este se explica detalladamente lo que realiza el algoritmo para resolver
el problema planteado. en un diseo de algoritmo que sea complejo puede
subdividirse en subprogramas para el estudio o la revisin de los pasos
que lleven a la solucin y sea menos el ndice de errores que tenga al
momento de la prueba, y a este diseo se le conoce como diseo modular
pues es sencillo revisar cada proceso ya antes dividido para su rpida
especificacin y prueba.
un algoritmo cuenta con un inicio y sus subprogramas llamado tambin
diseo modular.

Вам также может понравиться