Que Es Un Algoritmo y un Diagrama de Flujo? :Concepto y Ejemplos
Que Es Un Algoritmo y un Diagrama de Flujo? - Concepto y Ejemplos
Podemos definir, algoritmo como una secuencia ordenada de pasos para resolver un determinado problema.
Este concepto se usa mucho en informática, pues siempre debemos "enseñar" al microprocesador como debe ejecutar sus acciones para conseguir, por ejemplo, el cálculo de los materiales de una pared de una viviendas.
Este concepto de "enseñar" se denomina PROGRAMAR y para ello se utilizan distintos lenguajes de programación, como Fortran, Dbase, Visual Basic, C++, etc.
En el paso del problema al programa una PC interviene en primer lugar el analista, que se encarga de definir el algoritmo de resolución, y el programador, que traduce dicho algoritmo al lenguaje adecuado a la aplicación de que se trate.
El ejemplo mas fácil para entender este concepto es cuando debemos realizar una comida y no sabemos como se hace.
En tal situación para salvar este problema recurrimos a un libro de recetas en donde nos indica paso a paso las accines que debemos realizar para llegar a buen puerto.
Como se vé el término algoritmo no está unido, como podría pensarse, a procesos científicos más o menos complejos, sino que en muchas ocasiones utilizamos algoritmos específicos sin saber que lo estamos haciendo.
En el caso del cocinero antes indicado que sigue al pie de la letra una receta destinada a la elaboración de un plato.
Como comprobación, veamos una receta de cocina cualquiera que tendría que seguir un cocinero o cocinera que quisiese elaborar unas albóndigas de queso roquefort.
Pasos de un Algoritmo Simple
Para realizar este plato, habría que seguir los siguientes pasos.
• Primer paso: aplastar y mezclar con un tenedor mantequilla y queso roquefort a partes iguales hasta que los dos elementos se incorporen el uno al otro.
• Segundo paso: dejar reposar la mezcla en un sitio frío, hasta que se endurezca.
• Tercer paso: formar con la pasta endurecida pequeñas bolitas del tamaño de una nuez.
• Cuarto paso: pasar las bolitas construidas por un plato grande lleno de pan rallado.
• Quinto paso: colocar las albóndigas en forma de pirámide en un plato y mantenerlas en el refrigerador hasta el momento de servirlas.
A este lista de pasos, lo podríamos llamar algoritmo culinario, como se puede observar, esta receta de cocina no es más que una forma de algoritmo, ya que cumple todas las características que han de tener éstos: por un lado, se trata de una serie de instrucciones muy concretas que en ningún caso presentan ambigüedad, y por otro, aparecen expresadas de una forma secuencial con un número finito de pasos elementales.
Sigamos ahora con una caso mas técnico, supongamos que queremos resolver mediante un ordenador un problema simple, como, por ejemplo, conocer si el número 7.321 es un número primo (*).
(*): primo significa que solo es divisible por el 1 y por si mismo.
Este problema, tal y como lo hemos planteado, estaría claro para una persona, pero no para un ordenador, ya que, recordemos, no se trata de una máquina «inteligente», es decir, «no sabe qué hay que hacer» para averiguar si un número es primo o no.
La siguiente operación podría ser «decir» al ordenador qué es lo que debe hacer para resolver el problema propuesto.
Es decir, dar a la máquina una orden como la siguiente: «divide el número 7.321 por todos los números enteros menores que 7.321 y averigua si alguna de estas divisiones es exacta».
Evidentemente la orden es ya mucho más clara; sin embargo, tampoco en este caso sería entendida por la máquina, ya que, como vimos, ésta es de tipo secuencial y por tanto necesita recibir órdenes dadas con un ritmo y un orden determinados.
Ejemplo Numérico
Un conjunto de acciones de este tipo debería ser entonces de la siguiente forma:
a) Divide el número 7.321 por 2.
b) Si la división es exacta, para; si no, continúa.
c) Divide el número 7.321 por 3.
d) Si la división es exacta, para; si no, continúa, etc., etc.
Un procedimiento de resolución como el anterior, en el que las diferentes instrucciones están dadas paso a paso, recibe el nombre de algoritmo.
Un algoritmo es entonces algo así como una receta de cocina que está formada por una serie de instrucciones consecutivas que, en caso de seguirse, nos llevan al resultado final deseado.
La elaboración de un algoritmo para la resolución de un problema tan fácil como el propuesto en el ejemplo es una tarea relativamente sencilla; sin embargo, al aumentarla dificultad del problema, la complejidad del algoritmo necesario para su resolución aumenta también de forma espectacular, más cuando lo que sí es claro es que no existe ningún algoritmo que permita obtener algoritmos, y esta dificultad radica básicamente en que, como característica propia de todo algoritmo, éste debe estar formado por un número finito de pasos, cada uno de los cuales debe significar una acción perfectamente definida.
El algoritmo del problema es una de las partes más importantes para la resolución del mismo mediante un ordenador, ya que en él se encuentran las instrucciones que, al expresarse primeramente en lenguaje de programación y más tarde en lenguaje máquina, se transformarán en el programa según el cual el ordenador resolverá el problema propuesto.
Algoritmos para juegos: Uno de los muchos juegos que depende de la habilidad de los jugadores y no de la suerte es el denominado de «las quince cerillas». Para comenzar, coloque quince cerillas sobre una mesa.
El jugador número uno toma de una a tres cerillas; a continuación el jugador número dos toma de una a tres cerillas, que guarda.
Este proceso se sigue repitiendo hasta que no quedan más cerillas, y pierde el jugador que se ve obligado a tomar la última cerilla.
La cuestión es la siguiente: ¿existe alguna estrategia que haga que el jugador que comienza pueda siempre forzar a su contrincante a tomar la última cerilla?.
Un análisis del juego demuestra que el jugador número uno puede obligar al jugador número dos a tomar la última cerilla si realiza las siguientes acciones:
Primer movimiento: el jugador número uno toma dos cerillas.
Movimientos sucesivos: si el jugador número dos toma K cerillas (K<= 3), entonces el jugador número uno toma 4-K cerillas, y así hasta que logre dejar a su oponente la última cerilla. Siguiendo este algoritmo, el éxito es seguro.
------------- 00000 ------------
EJEMPLOS: DIBUJANDO EL ALGORITMO, EL DIAGRAMA DE FLUJO:
Una de las características básicas que ha de cumplir todo algoritmo destinado a la solución de un problema es su falta de ambigüedad: sus acciones elementales deben estar expresadas de una forma tal que no quede en ellas ninguna posibilidad de duda.
Esta premisa hace que los lenguajes naturales -español, inglés, francés, etc- no sean los más apropiados a la hora de expresar un algoritmo, ya que, en general, todos ellos son poco concisos, de tal forma que ciertas expresiones, fuera de un contexto, presentan un alto grado de ambigüedad.
Para evitar en parte este problema, los algoritmos se suelen expresar en un lenguaje gráfico en el cual todo el proceso aparece como un organigrama.
Este método, además de una mayor concisión en la expresión del proceso algorítmico, tiene sobre otros métodos la ventaja de dar una visión global de la estructura básica que posee el algoritmo.
Un organigrama consiste en un gráfico formado por una serie de líneas que conectan entre sí distintas figuras geométricas, cada una de las cuales representa un tipo de instrucción particular.
Así, un óvalo representa tanto el comienzo como el fin del algoritmo, un rectángulo indica la existencia de una instrucción cualquiera, y un rombo representa el símbolo de decisión, esto es, el momento en que dentro del algoritmo se pueden tomar dos o más opciones distintas.
En el interior de estos símbolos se escribe taxativamente el tipo de orden que cada uno de ellos representa, y la línea que los une viene marcada con una flecha que indica la dirección en que se desarrolla el algoritmo.
Diagrama de Flujo
Una de las diferencias esenciales entre este tipo de organigramas, llamados diagramas de flujo, y el lenguaje natural con que se pueden expresar también los algoritmos reside en los puntos de ramificación -toma de decisiones- del algoritmo.
El lenguaje natural es, por su propia naturaleza, secuencial, lo que implica que, en una toma de decisiones, siempre una de ellas antecede a la otra, cosa que no sucede cuanto el algoritmo se representa por medio de un diagrama de flujo en el que del punto de decisión parten simultáneamente las dos o más decisiones posibles.
Es decir: los organigramas permiten una visión bidi-mensional del algoritmo, que no existe en el lenguaje natural.
Si suprimimos las distintas figuras geométricas del diagrama de flujo, este adquiere la apariencia de un árbol o grafo que se denomina esqueleto del algoritmo, el cual indica de una forma aproximada el tipo de algoritmo empleado.
Arriba vemos tres simbolos para dibujar un diagrama de flujo. Combinando esos tres podemos dibujar cualquier razonamiento.
Ejemplo 1: Veamos el ejemplo del número primo:
Diagrama de flujo del algoritmo destinado a determinar si el número 2.731 es un número primo. Este algoritmo, aun estando bien definido, es poco eficiente, pues, por ejemplo, si el número no es divisible por 2, ya no es necesario probar con ningún número par.
Ejemplo 2: Algoritmo para cambiar una rueda de una auto:
El diagrama de flujo muestra un algoritmo destinado a solucionar un problema común: el pinchazo de una rueda del coche.
Como se puede observar, en él se detallan una serie de pasos elementales que se han de realizar en un orden secuencial.
Aunque, por razón de extensión, no están señalados todos los pasos posibles, cada uno de los marcados significa una instrucción en la que no existe ambigüedad.
ALGORITMO DIRECTOS E INTERACTIVOS:
Una por una, las operaciones que es capaz de hacer un ordenador digital son, en general, operaciones simples que cualquier persona medianamente instruida puede realizar también.
Las principales características del ordenador son, sin embargo, como ya vimos su exactitud y rapidez, que le permiten llevar a cabo en tiempos cortísimos un número muy elevado de estas operaciones simples.
Tomemos como ejemplo un cálculo simple de los que típicamente puede realizar con más facilidad un ordenador que cualquier persona: sumar los primeros mil números.
Para resolver un problema de este tipo, el ordenador no actúa como nosotros, es decir, no sitúa un número tras otro y realiza su suma total, sino que primeramente suma dos de ellos, a este resultado suma el tercero, al total el cuarto y así sucesivamente hasta agotar los números propuestos.
El algoritmo que habría que preparar para que la máquina llevase a cabo una operación de este tipo sería:
a) Suma al primer número (a,) el segundo (a2).
b) Al resultado obtenido en a) súmale el tercer número (a3).
c) Al resultado obtenido en b) súmale el cuarto número (a4);
d) continuando esta relación hasta que la máquina realizase las mil sumas.
El diagrama de flujo de este tipo de algoritmo, que recibe el nombre de algoritmo directo, sería:
Como se puede observar, un algoritmo de este tipo, bastante frecuente en los ordenadores, presenta una característica muy especial: la iteración; esto es, la repetición continuada de una misma instrucción.
Esta circunstancia obliga a la máquina a almacenar en su memoria un elevado número de instrucciones -aunque sean del mismo tipo- y de datos, por lo que es interesante en casos como este introducir un concepto de algoritmo que, si en principio puede parecer más complicado, resuelve con facilidad este tipo de problemas: los algoritmos iterativos.
Este tipo de algoritmos, además del punto inicial y final, está formado únicamente por un conjunto de instrucciones elementales, un test que indica cuándo ha acabado el proceso, y una nueva variable, llamada contador, que se va incrementando en cada iteración hasta que alcanza un valor que indica cuándo debe acabar el proceso.
Un algoritmo es directo cuando su desarrollo está constituido por una serie finita do pasos elementales consecutivos, por lo cual el esqueleto del diagrama de flujo correspondiente al mismo consiste únicamente en una línea recta.
En el esquema se muestra el diagrama de flujo correspondiente al algoritmo directo aplicado para lograr la suma de mil números, compuesto por mil órdenes consecutivas.
►Suma de los Primeros 1000 Números
Utilizando este tipo de algoritmo, el problema de la suma de mil números vendría representado por el siguiente diagrama de flujo:
Significa que el proceso comienza con un valor para el contador de k = 2, de tal forma que la primera operación elemental realiza la suma a1 + a2.
Como el valor del contador no es 1.000 como indica el test, el valor de k cambia a k + 1, es decir, 2+1=3. siendo la próxima operación la suma anterior más a3.
Este proceso continúa hasta que k alcanza el valor de 1.000, momento en el cual el algoritmo termina.
Es importante señalar que en informática el signo = no tiene el mismo sentido que en matemáticas (donde, evidentemente, la expresión k = k + 1 es falsa), sino un sentido de «sustituir por».
La utilización de algoritmos iterativos reduce considerablemente la extensión del algoritmo, y por tanto de la programación; baste pensar que, utilizando este tipo de algoritmos, la suma de 10.000 números, por ejemplo, se calcula por medio de un algoritmo similar al anterior, solo que cambiando en el test la cifra de 1.000 por 10.000, mientras que en un algoritmo directo sería necesario escribir 10.000 pasos diferentes.
En contra del uso de algoritmos de este tipo se puede aducir que, para una sola instrucción que la máquina ha de realizar en un algoritmo directo -sumar dos números-, con un algoritmo iterativo ha de hacer cuatro -sumar dos números, sumar un número al contador, realizar una comparación, y una ruptura de la secuencia-, lo que se traduce en un mayor tiempo de cálculo; sin embargo, de forma general, todos los problemas complejos se programan mediante algoritmos iterativos.
Fuente Consultada:
La Revolución Informática - Aula Abierta Salvat - Sebastián Dormido - Mariano Mellado -
Temas Relacionados:
Descargar Curso Practico de Visual Basic 6 Programacion en Visual
Resumen de Instrucciones del Lenguaje SQL
Glosario Diccionario de Informática Computacion e Internet
Conceptos Basicos de Internet:Resumen Para Principiantes
Arquitectura de un Ordenador Resumen de la Etapas
Enlace Externo:• Cómo escribir programas o algoritmos en pseudocódigo