Conceptos Básicos de Algoritmos y Diagramas de Flujo

 Conceptos Básicos de Algoritmos 

Concepto de Algoritmo.

Es un conjunto de pasos secuenciales y ordenados que permiten lograr un objetivo. Que sean pasos secuenciales significa que deben ser ejecutados uno después de otro y que sean pasos ordenados quiere decir que deben llevar un orden casi obligatorio (u obligatorio en la mayoría de los casos). Como puede notar el algoritmo permite lograr un objetivo. O sea que la clave para hacer buenos algoritmos y llegar a la solución de un problema es tener claro el objetivo y no perderlo nunca de vista.

Debe ser independiente de la sintaxis de un lenguaje de programación puesto que es la concreción de un plan y un medio para comunicar ideas entre personas. Lo que sí es importante notar, es que de un algoritmo sale el código en un lenguaje de programación. Por cada línea del algoritmo se corresponden una o varias líneas de código en un lenguaje de programación.


CARACTERÍSTICAS QUE DEBEN DE CUMPLIR LOS ALGORITMOS OBLIGATORIAMENTE:

  • Un algoritmo debe resolver el problema para el que fue formulado: Lógicamente no sirve un algoritmo que no resuelve ese problema. En el caso de los programadores, a veces crean algoritmos que resuelven problemas diferentes al planteado. Los algoritmos deben mostrar claramente cuáles son los datos iniciales y cuáles son los resultados.
  • Los algoritmos son independientes del computador. Los algoritmos se escriben para poder ser utilizados en cualquier máquina.
  • Los algoritmos deben de ser precisos. Los resultados de los cálculos deben de ser exactos, de manera rigurosa. No es válido un algoritmo que sólo aproxime la solución. Debe constar de pasos claros, precisos y no ambiguos.
  • Los algoritmos deben de ser finitos. Deben alcanzar la solución correcta en un tiempo finito. No es un algoritmo válido aquel que produce situaciones en las que el algoritmo no termina.
  • Los algoritmos deben de poder repetirse. Deben de permitir su ejecución las veces que sea necesario. No son válidos los que tras ejecutarse una vez, ya no pueden volver a hacerlo por la razón que sea. Debe tener la capacidad de resolver el problema aun cuando cambiemos los datos de entrada.

CARACTERÍSTICAS ACONSEJABLES PARA LOS ALGORITMOS

  • Validez. Un algoritmo es válido si carece de errores. Un algoritmo puede resolver el problema para el que se planteó y sin embargo no ser válido debido a que posee errores.
  • Eficiencia. Un algoritmo es eficiente si obtiene la solución al problema en poco tiempo. No lo es si es lento en obtener el resultado.
  • Óptimo. Un algoritmo es óptimo si es el más eficiente posible y no contiene errores. La búsqueda de este algoritmo es el objetivo prioritario del programador. No siempre podemos garantizar que el algoritmo hallado es el óptimo, a veces sí.

Un algoritmo se define como un método que se realiza paso a paso para solucionar un problema que termina en un número finito de pasos. Las características fundamentales que debe cumplir todo algoritmo son:

  • Debe ser preciso. e indicar el orden de realización de cada paso.
  • Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
  • Debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe tener un número finito de pasos.
  • La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.


TIPOS DE ALGORITMO

Entre los distintos tipos de algoritmos que existen destacan los que se clasifican según su sistema de signos y según su función. Un algoritmo es una serie de pasos que se realizan para resolver un problema, ejecutar una tarea o realizar un cálculo.

Algunos de estos tipos son: algoritmos dinámicos, algoritmos al reverso, algoritmos de fuerza bruta, algoritmos oportunistas, algoritmos de marcaje y algoritmos aleatorios, entre otros.

Los algoritmos tienen distintos usos en muchos campos. Desde el área de computación, pasando por las matemáticas hasta el área de marketing. Existen miles de algoritmos apropiados para resolver problemas en cada área.

 

Tipos de algoritmos según su sistema de signos

Algoritmos cualitativos

Estos algoritmos son aquellos en los que se colocan elementos verbales. Un ejemplo de este tipo de algoritmos son las instrucciones o los “paso a paso” que se dan de forma oral.

Tal es el caso de las recetas de cocina o las instrucciones para hacer un trabajo de bricolaje.



Algoritmos cuantitativos

Son lo contrario de los algoritmos cualitativos, porque se colocan elementos numéricos. Este tipo de algoritmos se utilizan en las matemáticas para realizar cálculos. Por ejemplo, para encontrar una raíz cuadrada o resolver una ecuación.



Algoritmo computacional

Son los algoritmos que se hacen con una computadora; muchos de estos algoritmos son más complejos y por eso necesitan ser realizados a través de una máquina. También pueden ser algoritmos cuantitativos que se optimizan.



Algoritmo no computacional 

Estos algoritmos son aquellos que no pueden realizarse con una computadora; por ejemplo, la programación de un televisor.

 

Tipos de algoritmos según su función

Algoritmo de marcaje

Este algoritmo utiliza la automatización para fijar los precios de forma dinámica, basándose en factores como el comportamiento del cliente.

Es la práctica de fijar automáticamente un precio para los elementos en rebaja, para maximizar la ganancia del vendedor. Ha sido una práctica común en la industria aérea desde principios de la década de 1990.

El algoritmo de marcaje es una práctica común en las industrias altamente competitivas, como la de viajes y el comercio en línea.

Este tipo de algoritmo puede ser extremadamente complejo o relativamente simple. En muchos casos pueden ser autoaprendidos o pueden ser optimalizados continuamente con pruebas.

El algoritmo de marcaje puede ser impopular con los clientes a medida que las personas tienden a valorar la estabilidad y la imparcialidad.



Algoritmos probabilísticos o aleatorios

Es un algoritmo donde el resultado o la manera en que se obtiene el resultado depende de la probabilidad. A veces también son llamados algoritmos aleatorios.

En algunas aplicaciones el uso de este tipo de algoritmos es natural, como por ejemplo cuando se simula el comportamiento de algún sistema existente o planeado a lo largo de un tiempo. En este caso el resultado es fortuito.

En otros casos el problema a ser resuelto es determinista pero puede ser transformado en uno fortuito, y puede resolverse al aplicar un algoritmo de probabilidad.

Lo bueno de este tipo de algoritmos es que su aplicación no requiere de conocimiento sofisticado o matemático. Existen tres tipos principales: numérico, Montecarlo y Las Vegas.

El algoritmo numérico usa la aproximación, en vez de manipulaciones simbólicas, para resolver los problemas de análisis matemáticos. Pueden ser aplicados en todos los campos de la ingeniería y las ciencias físicas.

Por su parte, los algoritmos de Montecarlo producen respuestas basándose en la probabilidad. Como resultado, las soluciones producidas por este algoritmo pueden o no ser correctas, ya que tienen un cierto margen de error.

Es utilizado por los desarrolladores, por los matemáticos y por los científicos. Se contrastan con los algoritmos Las Vegas.

Por último, los algoritmos Las Vegas se caracterizan porque el resultado siempre será correcto, pero el sistema puede utilizar más de los recursos anticipados o más tiempo del estimado.

En otras palabras: estos algoritmos hacen una especie de apuesta con el uso de los recursos, pero siempre producen un resultado preciso.

Programación dinámica

La palabra dinámico se refiere al método en el cual el algoritmo computa el resultado. A veces la solución de un elemento del problema depende de la solución de una serie de problemas más pequeños.

Por lo tanto, para resolver el problema se deben volver a computar los mismos valores una y otra vez para solucionar subproblemas más pequeños. Pero esto crea un desperdicio de ciclos.

Para remediar esto, se puede utilizar la programación dinámica. En este caso básicamente se recuerda el resultado de cada subproblema; cuando se necesite, se utiliza ese valor en vez de computarlo una y otra vez.

Algoritmos heurísticos

Estos algoritmos son aquellos que encuentran soluciones entre todas las posibles, pero no garantizan que la mejor de estas será encontrada. Por ese motivo son considerados como algoritmos aproximados o no precisos.

Usualmente encuentran una solución cercana a la mejor, y además la encuentran rápida y fácilmente. Generalmente este tipo de algoritmos se usa cuando es imposible encontrar una solución por la vía normal.

Algoritmos de vuelta atrás

Son algoritmos que han sido revocados al observar su comportamiento. Típicamente son aproximaciones del algoritmo original que son construidos para propósitos como competición o estudios.

Los algoritmos pueden ser revocados para estudiar su impacto en los mercados, en la economía, en el marcaje de precios, en las operaciones y en la sociedad.

Algoritmo voraz

En muchos de los problemas, realizar decisiones voraces lleva a soluciones óptimas. Este tipo de algoritmos es aplicable a problemas de optimización.

En cada paso de un algoritmo voraz se toma una decisión lógica y óptima, de manera que al final se llegue a la mejor solución global. Pero hay que tener en cuenta que una vez que se toma una decisión no se puede corregir o cambiar en el futuro.

Probar la veracidad de un algoritmo voraz es muy importante, ya que no todos los algoritmos de esta clase llevan a solución global óptima.


Diagrama de Flujo




¿Qué es un diagrama de flujo?

Un diagrama de flujo es un diagrama que describe un proceso, sistema o algoritmo informático. Se usan ampliamente en numerosos campos para documentar, estudiar, planificar, mejorar y comunicar procesos que suelen ser complejos en diagramas claros y fáciles de comprender. Los diagramas de flujo emplean rectángulos, óvalos, diamantes y otras numerosas figuras para definir el tipo de paso, junto con flechas conectoras que establecen el flujo y la secuencia. Pueden variar desde diagramas simples y dibujados a mano hasta diagramas exhaustivos creados por computadora que describen múltiples pasos y rutas. Si tomamos en cuenta todas las diversas figuras de los diagramas de flujo, son uno de los diagramas más comunes del mundo, usados por personas con y sin conocimiento técnico en una variedad de campos. Los diagramas de flujo a veces se denominan con nombres más especializados, como "diagrama de flujo de procesos", "mapa de procesos", "diagrama de flujo funcional", "mapa de procesos de negocios", "notación y modelado de procesos de negocio (BPMN)" o "diagrama de flujo de procesos (PFD)". Están relacionados con otros diagramas populares, como los diagramas de flujo de datos (DFD) y los diagramas de actividad de lenguaje unificado de modelado (UML).


Símbolos de diagramas de flujo

A continuación, te enseñaremos algunos de los símbolos de diagramas de flujo más comunes:



Diagramas de flujo para algoritmos/programación informática

Como una representación visual del flujo de datos, los diagramas de flujo son útiles para escribir un programa o algoritmo y explicárselo a otros o colaborar con otros en el mismo. Puedes usar un diagrama de flujo para explicar detalladamente la lógica detrás de un programa antes de empezar a codificar el proceso automatizado. Puede ayudar a organizar una perspectiva general y ofrecer una guía cuando llega el momento de codificar. Más específicamente, los diagramas de flujo pueden:

  • ·         Demostrar cómo el código está organizado.
  • ·         Visualizar la ejecución de un código dentro de un programa.
  • ·         Mostrar la estructura de un sitio web o aplicación.
  • ·         Comprender cómo los usuarios navegan por un sitio web o programa.

A menudo, los programadores pueden escribir un pseudocódigo, una combinación de lenguaje natural y lenguaje informático que puede ser leído por personas. Esto puede permitir más detalle que el diagrama de flujo y servir como reemplazo del diagrama de flujo o como el próximo paso del código mismo.

  • Los diagramas relacionados que se emplean en el software informático incluyen:
  • Lenguaje unificado de modelado (UML): este es el lenguaje de propósito general usado en la ingeniería de software para el modelado.
  •  Diagramas Nassi-Shneiderman (NSD): usados para la programación informática estructurada. Llevan el nombre de sus creadores: Isaac Nassi y Ben Shneiderman, quienes los desarrollaron en 1972 en la Universidad Estatal de Nueva York en Stony Brook. También se denominan "estructogramas".
  •  Diagramas DRAKON: DRAKON es un lenguaje de programación visual de algoritmos empleado para crear diagramas de flujo.

 


Cómo se usan los diagramas de flujo en muchos otros campos

Más allá de la programación informática, los diagramas de flujo pueden tener muchos usos en diversos campos. 

En cualquier campo pueden:

  • Documentar y analizar un proceso.
  • Estandarizar un proceso para obtener eficiencia y calidad.
  • Comunicar un proceso para capacitar a otros sectores de la organización o lograr el entendimiento de su parte.
  • Identificar cuellos de botellas, redundancias y pasos innecesarios en un proceso y mejorarlo.

Educación:

  • Planificar los requisitos académicos y las tareas del curso.
  • Crear una presentación oral o un plan de clase.
  • Organizar un proyecto grupal o individual.
  • Mostrar un proceso civil o legal, como el registro de votantes.
  • Planificar y estructurar la escritura creativa, como poesía o poesía lírica.
  • Demostrar el desarrollo de un personaje en la literatura y el cine.
  • Representar el flujo de algoritmos o acertijos lógicos.
  • Comprender un proceso científico, como el ciclo de Krebs.
  • Dibujar un proceso anatómico, como la digestión.
  • Trazar síntomas y tratamientos para enfermedades o trastornos.
  • Comunicar hipótesis y teorías, como la pirámide de Maslow o jerarquía de las necesidades humanas.

Ventas y marketing:

  • Trazar el flujo de una encuesta.
  • Dibujar un proceso de ventas.
  • Planificar estrategias de investigación.
  • Mostrar flujos de registro.
  • Difundir políticas de comunicación, como un plan de R.R. P.P. de emergencia.


Tipos de diagramas de flujo

La representación gráfica de estos procesos emplea, en los diagramas de flujo, una serie determinada de figuras geométricas que representan cada paso puntual del proceso que está siendo evaluado. Estas formas definidas de antemano se conectan entre sí a través de flechas y líneas que marcan la dirección del flujo y establecen el recorrido del proceso, como si de un mapa se tratara.

Hay cuatro tipos de diagrama de flujo en base al modo de su representación:

  • HorizontalVa de derecha a izquierda, según el orden de la lectura.

  • Vertical: Va de arriba hacia abajo, como una lista ordenada.

 


  • Panorámico: Permiten ver el proceso entero en una sola hoja, usando el modelo vertical y el horizontal.

  • ArquitectónicoRepresenta un itinerario de trabajo o un área de trabajo.

 


Tipos de componentes de un diagrama de fujo

Un diagrama de flujo de datos es una técnica muy apropiada para reflejar de una forma clara y precisa los procesos que conforman el sistema de información. Permite representar gráficamente los límites del sistema y la lógica de los procesos, estableciendo qué funciones hay que desarrollar. Además, muestra el flujo o movimiento de los datos a través del sistema y sus transformaciones como resultado de la ejecución de los procesos.

Esta técnica consiste en la descomposición sucesiva de los procesos, desde un nivel general, hasta llegar al nivel de detalle necesario para reflejar toda la semántica que debe soportar el sistema en estudio.

El diagrama de flujo de datos se compone de los siguientes elementos:

  • Entidad externa: Representa un ente ajeno al sistema que proporciona o recibe información del mismo. Puede hacer referencia a departamentos, personas, máquinas, recursos u otros sistemas. El estudio de las relaciones entre entidades externas no forma parte del modelo. Puede aparecer varias veces en un mismo diagrama, así́ como en los distintos niveles del DFD para mejorar la claridad del diagrama.

  • Proceso: Representa una funcionalidad que tiene que llevar a cabo el sistema para transformar o manipular datos. El proceso debe ser capaz de generar los flujos de datos de salida a partir de los de entrada, más una información constante o variable al proceso. El proceso nunca es el origen ni el final de los datos, puede transformar un flujo de datos de entrada en varios de salida y siempre es necesario como intermediario entre una entidad externa y un almacén de datos.

  • Almacén de datos: Representa la información en reposo utilizada por el sistema independientemente del sistema de gestión de datos (por ejemplo un. fichero, base de datos, archivador, etc.). Contiene la información necesaria para la ejecución del proceso. El almacén no puede crear, transformar o destruir datos, no puede estar comunicado con otro almacén o entidad externa y aparecerá́ por primera vez en aquel nivel en que dos o más procesos accedan a él.

  • Flujo de datos: Representa el movimiento de los datos, y establece la comunicación entre los procesos y los almacenes de datos o las entidades externas.  Un flujo de datos entre dos procesos solo es posible cuando la información es síncrona, es decir, el proceso destino comienza cuando el proceso origen finaliza su función.

Los flujos de datos que comunican procesos con almacenes pueden ser de los siguientes tipos:

  • De consulta: representan la utilización de los valores de uno o más campos de un almacén o la comprobación de que los valores de los campos seleccionados cumplen unos criterios determinados.
  • De actualización: representan la alteración de los datos de un almacén como consecuencia de la creación de un nuevo elemento, por eliminación o modificación de otros ya existentes.
  • De diálogo: es un flujo entre un proceso y un almacén que representa una consulta y una actualización.

Reglas para la Elaboración de Diagramas de Flujos

  1. Todo diagrama de flujo debe tener un inicio y un fin.
  2. Las líneas utilizadas para indicar la dirección de flujo del diagrama deben ser rectas: verticales u horizontales.
  3. Todas las líneas usadas para indicar la dirección del flujo del diagrama deben estar conectadas. La conexión puede ser un símbolo que exprese lectura, proceso, decisión, impresión, conexión o fin del programa.
  4. Debe contribuirse de arriba hacia abajo y de izquierda a derecha.
  5. La notación utilizada en el diagrama de flujo debe ser independiente del lenguaje de programación.
  6. Al realizar una tarea compleja, es conveniente poner comentarios que expresen o ayuden a entender lo que hayamos hecho.
  7. Si la construcción de un diagrama de flujo requiere más de una hoja, debemos utilizar los conectores adecuados y enumerar las páginas correspondientes.
  8. Evitar el uso de muchas palabras. 

¡Gracias por su atención, no se olviden de comentar si alguna pregunta!

Bye.


Comentarios

  1. Respuestas
    1. Excelente trabajo compañera, esta bien detallado cada tema.

      Borrar
  2. Muy bien compañera excelente
    blog con toda la información que debemos saber!☺️

    ResponderBorrar
  3. una buena organización del tema, excelente me encanto.

    ResponderBorrar
  4. Esta chévere, el color empleado le da una matiz superficial y de agradabilidad, por supuesto el mío tampoco es la divina pomada jaja. Solo un poquito menos de texto para que sea mas comprensible. Saludos desde Ecuador Lexa :)

    ResponderBorrar
  5. Muy interesante el tema del algoritmo y además creatividad en la forma de expresar lo más importante 🤓✨

    ResponderBorrar
  6. Muy buena información precisa y concisa 😊

    ResponderBorrar
  7. ME GUSTA COMO SE DETALLA CADA COSA Y COMO ESTAN TAN EXPLICATIVAS LAS IMAGENES AQUI SE RESFUERZA ALGUNOS DE LOS TIPOS DE ALGORITMOS YA VISTOS Y ESTA MUY BIEN

    ResponderBorrar
  8. Excelente contenido ya que nos refuerza más de dicho temas ya que están más detalladas.

    ResponderBorrar
  9. Gracias por la información. Precisa y puntual.

    ResponderBorrar
  10. Muy bonito el blog, además con un contenido muy interesante.

    ResponderBorrar

Publicar un comentario