viernes, 24 de abril de 2015

como se hace el diseño de un algoritmo







Funciones algorítmicas de diseño Una función algorítmica se refiere a la implementación de un algoritmo y normalmente forma parte de un programa grande. También se llama una función algorítmica como procedimiento, rutina, método o subprograma.



Un algoritmo es un procedimiento detallado paso a paso para resolver un problema, pero es independiente de cualquier lenguaje de programación ya que representa el concepto abstracto de la solución. Por lo tanto, después de diseñar un algoritmo y desarrollar su pesudocode, el siguiente paso es implementar en un lenguaje de programación específico. Al diseñar un algoritmo que muchos factores como tiempo, espacio y tamaño esperado de entrada se consideran.






Desarrollo y análisis de algoritmos también implican encontrar peor de los casos, el mejor de los casos y situaciones de promedio, como el rendimiento es muy importante para una aplicación cuya entrada aumenta con el tiempo. Una vez que haya finalizado el algoritmo, se traduce en una función o un procedimiento que es específico de un lenguaje de programación. Teóricamente, independientemente de un lenguaje de programación, un algoritmo debe producir repetidamente misma salida. Pero, esto no sucede en la realidad, ya que cada lenguaje de programación tiene sus propias ventajas y desventajas.



Las características de un lenguaje de programación determinan la eficiencia de un algoritmo debido a problemas como la incapacidad para asignar recursos en tiempo de ejecución o tener fugas de memoria silenciosa puede ralentizar un programa y puede llevar a mal funcionamiento de un algoritmo especialmente cuando aumenta la entrada.

para que se utilizan los pseudocodigos



Generalmente se utiliza pseudocódigo en los libros de texto y publicaciones científicas relacionadas con la informática y la computación numérica, para la descripción de algoritmos, de manera que todos los programadores puedan entenderlo, aunque no todos conozcan el mismo lenguaje de programación. Generalmente, en los libros de texto se adjunta una explicación que acompaña a la introducción y que explica las convenciones particulares en uso. El nivel de detalle del pseudocódigo puede, en algunos casos, acercarse a la de formalizar los idiomas de propósito general.















Un programador que tiene que aplicar un algoritmo específico, sobre todo uno des familiarizado, generalmente comienza con una descripción en pseudocódigo, y luego "traduce" esa descripción en el lenguaje de programación meta y lo modifica para que interactúe correctamente con el resto del programa. Los programadores también pueden iniciar un proyecto describiendo la forma del código en pseudocódigo en el papel antes de escribirlo en su lenguaje de programación, como ocurre en la estructuración de un enfoque de Top-down y Bottom-up arriba hacia abajo.






En la actualidad y por lo general, el pseudocódigo, como su nombre lo indica, no obedece a las reglas de sintaxis de ningún idioma en particular ni es de forma estándar sistemática, a pesar de que cualquier escritor en particular vaya a pedir prestado las estructuras de control general, la sintaxis y el estilo, por ejemplo, de algún lenguaje de programación convencional. Pero en caso de que se quiera ejecutar, se debe llevar a forma tipo, para que no genere mensajes de error. Las fuentes populares incluyen la sintaxis de Pascal, BASIC, CC++, Java, Lisp, y ALGOL. Por lo general, se omiten las declaraciones de variables. A veces, las llamadas a funciones, los bloques de código y el código contenido dentro de un loop se remplazan por una sentencia de una línea en lenguaje natural.






Dependiendo del escritor, el pseudocódigo puede variar mucho en su estilo, yendo desde en un extremo, una imitación casi exacta de un lenguaje de programación real, hasta al acercarse a una descripción en prosa de formato de pseudocódigo en el otro extremo.

que es pseudocodigo



El pseudocódigo de programación es un lenguaje que se usa para aprender en la universidad, es como un lenguaje no tan estructurado como llegaría a ser c o c++ o cualquier lenguaje de programación.


Este pseudocódigo o pseudolenguaje es usado para o hacer un bosquejo de una aplicación de manera rápida, o para aprender programación, se usa mas que todo en clases de lógica y algoritmia.


No es un lenguaje estructurado así que cada quien puede poner las normas de el, por ejemplo una condición o una toma de decisiones en pseudolenguaje seria algo como:


si Numero_visitas >= 50000 entonces

escriba “mi blog tiene buen trafico”

sino entonces

escriba “tengo que mejorar mi blog”

fin si


En el ejemplo anterior vemos que lo que esta en verde serian las instrucciones que podrían variar en los diferentes lenguajes de programación (si = if) (escriba = printf) (sino = else) lo que esta en azul “Numero_visitas” representa una variable, los operadores matemáticos se usan de la misma manera en casi todos los lenguajes, en este caso “>=” significa (Mayor o igual) y lo que esta entre comillas es lo que se debe imprimir en la pantalla de la aplicación.


también se pueden, se deben y además son muy frecuentes los comentarios en la aplicación al final de las instrucciones o de los valores para dejar mas claro lo que hacen o a lo que se refiere en cada una de las lineas del programa. por ejemplo, un comentario se haría de la siguiente manera:




Variables

Variable1 cadena [20] //Esta variable es para el nombre

Variable5 numero [8] /* Este es el valor a pagar */


En el anterior ejemplo, el texto que aparece de color azul es un comentario, se puede hacer de las dos formas usando

videos sobre "pseudocodigo,diagramas de flujo y algoritmos"


que es un algoritmo











que es diagrama de flujo






que es pseudocodigo


para que sirven los diagramas de flujo



Los diagramas de flujo son una manera de representar visualmente el flujo de datos a través de sistemas de tratamiento de información. Los diagramas de flujo describen que operaciones y en que secuencia se requieren para solucionar un problema dado.









Un diagrama de flujo u organigrama es una representación gramática que ilustra la secuencia de las operaciones que se realizarán para conseguir la solución de un problema. Los diagramas de flujo se dibujan generalmente antes de comenzar a programar el código frente a la computadora. Los diagramas de flujo facilitan la comunicación entre los programadores y la gente del negocio. Estos diagramas de flujo desempeñan un papel vital en la programación de un problema y facilitan la comprensión de problemas complicados y sobre todo muy largos. Una vez que se dibuja el diagrama de flujo, llega a ser fácil escribir el programa en cualquier idioma de alto nivel. Vemos a menudo cómo los diagramas de flujo nos dan ventaja al momento de explicar el programa a otros. Por lo tanto, está correcto decir que un diagrama de flujo es una necesidad para la documentación mejor de un programa complejo


.UN DIAGRAMA DE FLUJO SIRVE PARA PODER IDENTIFICAR UN PROCESO A LLEVARSE A CABO, ESTO PUEDE SER PARA PODER SEGUIR PASO A PASO LAS ESPECIFICACIONES DE UN PROCESO, ESTO LO HACEMOS MEDIANTE LA AYUDA DE GRÁFICOS QUE NOS INDICAN QUE TIPO DE TRABAJO DEBEMOS REALIZAR, ESTO PUEDE SER DE TRABAJO, REPOSO, TRANSPORTE, ENTRE OTROS, ES DECIR ESTE DIAGRAMA ES DOMINADO POR SIMBOLISTAS YA ESTABLECIDAS Un diagrama de flujo es una representación esquemática de los distintos pasos de un programa. Constituyen pues, otra forma de representar algoritmos distinta al pseudocódigo, pero que nos sirve de forma complementaria en el proceso de creación de la estructura del programa antes de ponernos delante del ordenador.










El diagrama de flujo goza de ventajas como el ser altamente intuitivo, fácil de leer, claro y preciso. Su interés para nosotros, sin desdeñar su utilidad profesional, radica en su valor didáctico. Lo consideraremos una herramienta muy potente de cara a comenzar a programar ya que su contenido gráfico lo hace menos árido que el pseudocódigo.


Las limitaciones principales de los diagramas de flujo derivan precisamente de su carácter de dibujo. No resultan tan fáciles de crear o de mantener como el texto del pseudocódigo (que podemos trabajar en un procesador de textos cualquiera) y pueden requerir utilizar papeles tipo plano (más grande de lo normal) cuando los programas son de cierta longitud. Gráficamente podemos verlo de la siguiente manera: si tenemos por ejemplo siete páginas de pseudocódigo bastará con numerarlas y ponerlas una detrás de otra.
















En cambio, un diagrama de flujo que ocupe siete páginas podrá adoptar cualquier forma, por ejemplo:












El manejo u ordenación de un diagrama de flujo muy extenso se puede complicar. La solución a este problema la encontraremos, al menos parcialmente, utilizando el método del “Divide y vencerás”. En nuestro caso a través de lo que se denomina “programación modular”, que estudiaremos más adelante. En relación a los diagramas de flujo viene a ser equivalente a la organización de los planos de un proyecto: igual que tenemos planos de cimentación, planta 1, planta 2, secciones, instalaciones, etc. tendremos diagramas de flujo independientes para entrada de datos, proceso de cálculo número 1, proceso de cálculo número 2, salida de datos, etc.

tipos de algoritmos




Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.

Son todos aquellos pasos o instrucciones descritos por medio de palabras que sirven para llegar a la obtención de una respuesta o solución de un problema cualquier

Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.

Son aquellos pasos o instrucciones que involucran cálculos numéricos para llegar a un resultado satisfactorio

Tipos de algoritmos de razonamiento:

Algoritmos Estáticos: son los que funcionan siempre igual, independientemente del tipo de problema tratado.

Algoritmos Adaptativos: algoritmos con cierta capacidad de aprendizaje.

Algoritmos Probabilísticos: son algoritmos que no utilizan valores de verdad booleanos sino continuos. Existen varios tipos de algoritmos probabilísticos dependiendo de su funcionamiento, pudiéndose distinguir:

§ Algoritmos numéricos: que proporcionan una solución aproximada del problema.

§ Algoritmos de Montecarlo: que pueden dar la respuesta correcta o respuesta erróneas (con probabilidad baja).

§ Algoritmos de Las Vegas: que nunca dan una respuesta incorrecta: o bien dan la respuesta correcta o informan del fallo.

Algoritmo Cotidiano: es la serie de pasos que realizamos en nuestra vida diaria para realizar las diferentes tareas y actividades comunes, desde los pasos al levantarnos, así como ir de compras, etc.

Algoritmo Voraz: un algoritmo voraz es aquel que, para resolver un determinado problema, sigue una heurística consistente en elegir la opción óptima en cada paso local con la esperanza de llegar a una solución general óptima.

Algoritmo Determinista: es un algoritmo que, en términos informales, es completamente predictivo si se conocen sus entradas.

Algoritmo Heurístico: es un algoritmo que abandona uno o ambos objetivos; por ejemplo, normalmente encuentran buenas soluciones, aunque no hay pruebas de que la solución no pueda ser arbitrariamente errónea en algunos casos; o se ejecuta razonablemente rápido, aunque no existe tampoco prueba de que siempre será así.

Las heurísticas generalmente son usadas cuando no existe una solución óptima bajo las restricciones dadas (tiempo, espacio, etc.), o cuando no existe del todo.

Algoritmo de escalada: la idea básica consiste en comenzar con una mala solución a un determinado problema y, repetidamente, aplicar optimizaciones a la misma hasta que esta sea óptima o satisfaga algún otro requisito



1-Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Lo ejecutan las personas
Ejemplo:Se dispone de un grifo de agua – jabón – papel y corriente de aire caliente.


2-Desarrolle un algoritmo que describa la manera en que su papá se levanta todas las mañanas para ir al trabajo en auto privado.


 

INICIO

Levantarse de la cama.

Quitarse el pijama.

Ducharse.

Vestirse.

Desayunar.

Arrancar el auto para ir al trabajo.

FIN

tipos de diagramas de flujo


diagrama de flujo numero mayor

Formato vertical: En él el flujo o la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.
Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.
Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.
Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujo gramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos Los diagramas de flujo son múltiples y diversos y pueden abordar muchos temas distintos de formas también muy diferentes. En cualquier caso, el aspecto en común entre ellos es la presencia de un vínculo entre los conceptos enunciados y una interrelación entre las ideas. Comúnmente, se utiliza este tipo de diagramas para detallar el proceso de un algoritmo y, así, se vale de distintos símbolos para representar la trayectoria de operaciones precisas a través de flechas. Siempre que existe un diagrama de flujo existe un proceso o sistema que pretende ser graficado a través de símbolos visuales que, en vez de términos verbales, simplifican el funcionamiento de dicho proceso y lo hacen más claro y evidente al lector.


Para que el diagrama de flujo tenga sentido como tal, debe existir un camino hacia una solución que parte de un único inicio y arriba a un único punto final. Con el propósito de desarrollar un diagrama de estas características, se recomienda definir el propósito y destinatario del gráfico, identificar las ideas principales, determinar los límites y alcance del proceso a detallar, establecer el nivel de detalle requerido, identificar acciones, procesos y subprocesos, construir el diagrama y finalmente titularlo con exactitud. Conviene revisar el diagrama para comprobar que cumple su objetivo con claridad y precisión.


Los símbolos más utilizados en los diagramas de flujo son la flecha (que indica sentido y trayectoria), el rectángulo (representa un evento o proceso), el rombo (una condición), el círculo (un punto de conexión) y otros.




Además, existen diversos tipos de diagramas. El vertical, en el que la secuencia o flujo es de arriba hacia abajo; el horizontal, de izquierda a derecha; el panorámico, puede apreciarse de una vez y de forma tanto vertical como horizontal; el arquitectónico, describe una ruta sobre un plano arquitectónico de trabajo.


como continuación de la entrega anterior, se muestran algunos ejemplos de símbolos válidos y no válidos en diagramas de flujo. La forma de organizar el diagrama de flujo es a criterio del creador, siempre buscando claridad, identificación de pasos relevantes, etc.Otra cuestión a tener en cuenta es que muchas veces se trabaja con modelos esquematizados, sobre todo si los programas son largos. Esto supone dejar de lado todo lo prescindible para centrarse en el “núcleo duro” del programa. El trabajo con modelo esquematizado abarca la fase de creación del programa, de modo que resulta más fácil y rápido crear versiones y hacer correcciones que si se estuviera trabajando con mayor nivel de detalle. Una vez se llega a un modelo definitivo, se pasa a desarrollar el diagrama “in extenso” y adecuadamente documentado. El modelo esquematizado para el diagrama correspondiente a crear el diagrama de flujo que proporcione el volumen de un cilindro dados su altura y diámetro Aquí os dejamos una serie de ejercicios resueltos (14 en total) y con su explicación a modo de ejemplos de construcción de diagramas de flujo de procesos. Si no tienes claro la teoría te recomendamos primero que veas este enlace: Diagramas de Flujo.

1. Hacer el diagrama de flujo para sumar dos números leídos por teclado y escribir el resultado.