introduccion al mundo de los algoritmos

27
ALGORITMOS

Upload: jimmy-dulfan-hernandez

Post on 05-Sep-2015

233 views

Category:

Documents


2 download

DESCRIPTION

todo lo necesario para iniciarse en el mundo de la programacion

TRANSCRIPT

  • ALGORITMOS

  • ALGORITMOS

    Es un conjunto finito de instrucciones que especifican una secuencia de operaciones a realizar en orden para resolver un problema especfico. En otras palabras, un algoritmo es un mtodo para la solucin de problemas.

  • PROPIEDADES DE UN ALGORITMO

    Secuencialidad

    Ausencia de Ambigedades

    Generalidad

    Limitaciones

  • SECUENCIALIDAD

    Se debe especificar sin lugar a dudas la secuencia a utilizar.

    Un algoritmo debe tener una instruccin inicial nica y un sucesor nico en cada secuencia.

    Las instrucciones son llevadas a cabo de arriba hacia abajo a menos que las mismas especifiquen lo contrario.

    Las entradas son las partidas de datos presentadas al algoritmo.

    Las salidas son partidas de datos procesados que son el resultado de la ejecucin un programa basado en el algoritmo.

  • AUSENCIA DE AMBIGEDAD

    En algoritmo debe ser defino, claro, preciso y no ambiguo. La representacin de cada paso de un algoritmo debe dar lugar a una sola interpretacin posible.

    Esta condicin significa que cada vez que se presente para su ejecucin u algoritmo con los mismos datos de entrada, se obtendrn los mismos resultados.

    Las instrucciones de un algoritmo debe ordenar a la computadora que solo lleve a cabo tareas que sea capaz de hacer. Una computadora no puede efectuar una instruccin si tiene informacin insuficiente o si el comando no est definido.

  • GENERALIDAD

    Un algoritmo se puede realizar para varios problemas que se relacionan entre s.

    Un algoritmo se aplica a un problema o clase de problemas especficos; el rango de las entradas o dominios se tiene que definir previamente, ya que est determinado el alcance o la generalidad del algoritmo.

  • LIMITACIN

    Un algoritmo es finito en tamao y tiempo.

    La ejecucin de un algoritmo programado debe finalizar despus de que se haya llevado a cabo una cantidad finita de operaciones.

  • DOMINIO DE UN ALGORITMO

    La clase o el conjunto de datos y condiciones para las cuales un algoritmo trabaja concretamente se llama dominio.

    Cuando se trata de resolver cualquier problema es necesario definir el dominio del algoritmo y despus verificar que trabaja para todos los casos que se encuentran dentro del dominio.

    Es necesario incluir en el dominio todas las situaciones similares, pero los casos remotos o poco probables se permiten omitir.

  • ERRORES EN LA CONTRUCCIN DEL DOMINIO.

    Errores del dominio:

    se presentan cuando se no han especificado todas las situaciones que se pueden presentar en la prctica o se han descuidado la apreciacin de su importancia.

    A medida que se presenta el problema, se tiene que clasificar y hay tres opciones:

    1. Ignorarlo porque es improbable y quizs nunca ocurra.

    2. Restringir el dominio del algoritmo para excluirlo.

    3. Corregir el algoritmo.

  • ERRORES DE LGICA:

    Son aquellos errores que se detectan, despus que se ha definido en forma adecuada el dominio de un algoritmo, en la etapa de prueba o verificacin.

    se deben principalmente a las siguientes causas:

    1. Etapas incorrectas.

    2. Secuencia incorrecta de etapas

    3. El criterio de eleccin de un algoritmo debe hacerse en base a criterios tales como:

    a) Que el algoritmo sea simple, es decir, fcil de entender y de escribir.

    b) Que el algoritmo sea eficiente.

  • MTODO HEURSTICO

    La heurstica proporciona un esquema o plan para abordar los problemas poco conocidos, mejora la capacidad de crear soluciones y asegura que el mtodo que se va a usar sea eficiente.

    En la etapa de planificacin es donde se tiene la oportunidad de comparar mtodos y seleccionar el ms adecuado.

  • Surge la pregunta:

    Cmo se pueden resolver los problemas para los que no hay un mtodo establecido o para los cuales conocemos un algoritmo?.

  • DISEO DE UN ALGORITMO

    Un mtodo heurstica para disear algoritmo es el denominado DIVIDE AND CONQUER, el cual es una tcnica TOP-DOWN.

    Este mtodo permite implementar la segmentacin, descomposicin de un problema largo y complejo en problemas independientes ms pequeos y fciles de resolver que el problema de partida.

    La tcnica consiste en varias etapas.

  • DESCOMPOSICIN DEL PROBLEMA DE PARTIDA EN SUBPROBLEMAS INDEPENDIENTES Y DETERMINACIN DE LAS

    RELACIONES ENTRE ELLOS.

    P

    P1 P2 P3

  • RESOLUCIN DE CADA SUBPROBLEMA

    Si un sub-problema es grande, por descomposicin y continuando hasta que resulten de la descomposicin sub -problemas fcilmente resolubles.

    P1

    P1.1 P1.2 P1.3

  • Composicin de las soluciones de los sub- problemas para lograr la solucin final

    El diseo del algoritmo que resuelve un problema, realizado con esta tcnica recibe el nombre de DISEO DESCENDENTE y resulta en algoritmo muy legibles, claros, fciles de entender, seguir y corregir.

    El diseo de un algoritmo no se hace de una sola vez, sino que se va resolviendo en una secuencia de pasos ( llamados PASOS DE REFINAMIENTO).

    En cada paso el problema es refinado agregando detalles significativos, por lo que el mtodo se conoce como:

    MTODO DE LOS REFINAMIENTOS SUCESIVOS.

  • UN INGENIERO ES CONVOCADO PARA CONSTRUIR UN EDIFICIO

    CONSTRUCCIN

    DEL

    EDIFICIO

    CONFECCICN

    DE LOS

    PLANOS

    CONTRATACIN

    DEL

    PERSONAL

    COMPRA DE

    MATERIALES

    DIRECCIN

    DE LA

    OBRA

  • UN SUB- PROBLEMA

    CONFECCIN

    DE LOS

    PLANOS

    DISEO DEL

    ANTEPROYECTO

    APROBACIN

    DEL

    ANTEPROYECTO

    ELABORACIN

    DE LOS

    PLANOS

    APROBACIN

    DE LOS

    PLANOS

  • OTRO SUB- PROBLEMA

    CONTRATACIN

    DEL

    PERSONAL

    PEDIDO DE

    CURRICULUM

    VITAE

    ANLISIS

    DE LOS

    CURRCULUM

    VITAE

    ENTREVISTAS

    PERSONALES

    REDACCIN

    DE LOS

    CONTRATOS

  • OTRO SUB- PROBLEMA

    COMPRA

    DE

    MATERIALES

    CLCULO

    DE

    MATERIALES

    PEDIDO

    DE

    PRECIOS

    SELECCIN

    DE

    PROVEEDORES

  • Al utilizar el refinamiento por pasos el diseador de un algoritmo debe saber donde detenerse, es decir, debe saber cuando un paso especfico del algoritmo es lo suficientemente claro para no necesitar ms refinamiento.

    Se necesita CONOCER LAS CAPACIDADES DE UN PROCESADOR no slo para terminar los refinamientos, sino para dirigir la forma en que el refinamiento avanza.

  • Una computadora puede interpretar cualquier cosa expresadas de manera adecuada en un lenguaje de programacin. As el diseador de un algoritmo de computadora puede orientar los pasos y la terminacin del refinamiento hacia el tipo de lenguaje que se trate.

  • Programacin estructurada

    Los principios metodolgicos bsicos de la programacin estructurada son los de subdividir el problema inicial o de partida en partes manejables para su anlisis y hacer de esta manera que se agilice el proceso de entender el problema y la solucin.

  • Bsicamente, estas subdivisiones deseadas( llamadas mdulos) deben satisfacer los siguientes requisitos:

    1. Los mdulos deben estas jerarquizados. 2. Deben ser pequeos y sencillos. 3. Se debern utilizar tantos mdulos de menor jerarqua

    como sea necesario para cumplir con la restriccin de ser pequeos y sencillos.

    4. Se debern usar las estructuras de control y datos adecuadas para cumplir con el requisito de pequeos y sencillos.

    5. Los mdulos deben ser legibles para cualquier persona aunque tenga solamente conocimientos elementales de progrmacin.

  • LENGUAJE DE DISEO DE PROGRAMAS

    Como la meta es escribir algoritmos que sean procesados en una computadora, se va a producir un lenguaje de diseo adecuado.

    Se llamar LENGUAJE DE DESCRIPCIN DE PROGRAMAS a la herramienta que permitir disear programas de codificacin.

  • Este pseudo- lenguaje tiene las siguientes caractersticas: 1. Permite expresar de manera informal las estructuras de 2. Permite expresar las ideas en frases del lenguaje propio o natural. 3. Es similar al lenguaje de programacin pero no est ligado a

    ninguna regla formal de sintaxis como aquellos. 4. No es un lenguaje compilable 5. Por convencin se hace un sangrado en el texto que ayuda a la

    percepcin visual de la lgica del diseo. 6. Permite expresar diseos de fcil comprensin que podr

    convertirse sin dificultad a cdigo en el lenguaje de implementacin. 7. El pseudo- cdigo generado es ms fcil de cambiar y corregir que el

    cdigo del programa.

  • DIAGRAMA DE FLUJO

    Un diagrama de flujo es otra tcnica de diseo de algoritmos. Consiste en una serie de smbolos que denotan acciones, decisiones o procedimientos que se unen mediante flechas y conectores.

    Esta representacin nos ayudar a conocer la informacin que tenemos, donde la tenemos, que debemos hacer con ella y como presentarla.

    Debe tener las cualidades de sencillez, claridad y normalizacin en su diseo.