viernes, 23 de enero de 2015

Algoritmos Computacionales

Algoritmos. Conceptos basicos

Algoritmo: es una serie de pasos ordenados para realizar una tarea o actividad.
En informática utilizamos los algoritmos para ayudar a nuestros estudiantes a desarrollar la lógica en Programación, ya que para crear un programa debemos realizar un algoritmo de instrucciones para que el computador nos entienda y pueda resolver el problema que le estamos planteando.
Aquí te presentamos algunos conceptos básicos de los algoritmos que te ayudaran a relacionarte con este termino y las herramientas usadas para su creación, espero que te guste:
Algoritmo: Es un conjunto finito de pasos que sirven para ejecutar una tarea o resolver un problema. Es una secuencia finita de operaciones realizables, cuya ejecución da una solución de un problema en un tiempo finito. Es la especificación rigurosa de la secuencia de pasos a realizar para alcanzar un resultado deseado en un tiempo finito. Es una serie de operaciones a realizar en un orden o una fórmula para la resolución de problemas. Es un sistema por el cual se llega a una solución, teniendo en cuenta que debe de ser preciso finito y definido, Por preciso entendemos que cada paso a seguir tiene un orden; finito implica que tiene un determinado número de pasos, o que tiene un fin; y definido, que si se sigue el mismo proceso más de un vez llegaremos al mismo resultado.
Programa: es un conjunto de instrucciones, ejecutables sobre una computadora, escritos en un lenguaje de programación que permite cumplir una función específica.
Dato: es una representación de un objeto, un hecho, concepto o entidad del mundo real mediante la cual se pueden modelizar aspectos de un problema que se desea resolver con un programa sobre una computadora.
Información: son datos procesados y organizados de manera significativa y útil.
El seudocódigo es una herramienta utilizada para el diseño de programas que permite expresar los pensamientos de una forma clara, utilizando su lenguaje natural y mostrando el orden de ejecución de las sentencias del programa.
Un diagrama de flujo o flujograma es una representación grafica que ilustra la secuencia de las operaciones o el flujo de datos que se realizarán para conseguir la solución de un problema.

Historia

La palabra algoritmo proviene del nombre del matemático llamado Abu Abdullah Mohammed Bin Musa Al-Khwarizmi que vivió entre los siglos VIII y IX d.C. Señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y explicó que, mediante una especificación clara y concisa de cómo calcular sistemáticamente, se podrían definir algoritmos que fueran usados en dispositivos mecánicos en vez de las manos (por ejemplo, ábacos). También estudió la manera de reducir las operaciones que formaban el cálculo. Aunque no fue el creador del primer algoritmo, el concepto lleva su pseudónimo, ya que formuló el enunciado de las reglas paso a paso para la suma, resta, multiplicación y división de números decimales. Así, de la palabra algorismo, que originalmente hacía referencia a las reglas de uso de la aritmética utilizando dígitos árabes, se evolucionó a la palabra latina, derivación de al-Khwarizmi, algobarismus, que más tarde mutaría a algoritmo en el siglo XVIII. La palabra ha cambiado, de forma que en su definición se incluye a todos los procedimientos finitos para resolver problemas.
Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La autora fue Ada Augusta Byron duquesa de Lovelace, considerada como la primera programadora.
Uno de los algoritmos más antiguos conocidos es el algoritmo de Euclides donde se describe la realización de operaciones elementales en el sistema de numeración decimal. También el algoritmo de la división para calcular el cociente de dos números, calcular el máximo común divisor de dos enteros positivos, o incluso el método de Gauss para resolver Sistema lineal de ecuaciones.  En la actualidad, el término algoritmo se aplica a muchos de los métodos de resolver problemas que emplean una secuencia mecánica de pasos

- Clasificación de algoritmos

·   Algoritmo determinista: en cada paso del algoritmo se determina de forma única el siguiente paso. Sus pasos están perfectamente definidos y aportan una solución exacta.
·   Algoritmos no determinísticos deben decidir en cada paso de la ejecución entre varias alternativas y agotarlas todas antes de encontrar la solución.
·   Algoritmos paralelos: permiten la división de un problema en subproblemas de forma que se puedan ejecutar de forma simultánea en varios procesadores.
·   Divide y vencerás: dividen el problema en subconjuntos disjuntos obteniendo una solución de cada uno de ellos para después unirlas, logrando así la solución al problema completo. Técnicamente a esta técnica se le denomina diseño Top-Down o Descendente. El proceso de romper el problema en cada etapa y expresar cada paso en forma más detallada se denomina refinamiento sucesivo.
·   Ramificación y acotación: se basa en la construcción de las soluciones al problema mediante un árbol implícito que se recorre de forma controlada encontrando las mejores soluciones.
·   Vuelta Atrás: se construye el espacio de soluciones del problema en un árbol que se examina completamente, almacenando las soluciones menos costosas.
·  Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
·   Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.

Además debe cumplir estas condiciones:

  · Finitud: el algoritmo debe acabar tras un número finito de pasos. Es más, es casi fundamental que sea en un número razonable de pasos.

  · Definibilidad: el algoritmo debe definirse de forma precisa para cada paso. Puesto que el lenguaje humano es impreciso, los algoritmos se expresan mediante un lenguaje formal, ya sea matemático o de programación para un computador.

  · Entrada: el algoritmo tendrá cero o más entradas, es decir, cantidades dadas antes de empezar el algoritmo. Estas cantidades pertenecen además a conjuntos especificados de objetos. Por ejemplo, pueden ser cadenas de caracteres, enteros, naturales, fraccionarios, etc. Se trata siempre de cantidades representativas del mundo real expresadas de tal forma que sean aptas para su interpretación por el computador.
 · Salida: el algoritmo tiene una o más salidas, en relación con las entradas.
 · Efectividad: una persona sea capaz de realizar el algoritmo de modo exacto y sin ayuda de una máquina en un lapso de tiempo finito.

Estructura Básica de los algoritmos:

1.    Inicio (Denota el punto de inicio del algoritmo.)
2.    Datos de entrada (operaciones básicas) Leer: Denota la acción de introducir datos a variables desde un dispositivo estándar de entrada.
3.    Procesamiento de los datos Calcular: Denota la realización de cualquier operación aritmética que genere valores para ser almacenados en una variable.
4.    Datos de salida (Imprimir: Denota la acción de enviar datos desde variables a un dispositivo estándar de salida.)
5.    Fin (Denota el punto de finalización del algoritmo.)

Técnicas para la creación de algoritmos

Una recomendación muy práctica es el que nos pongamos en el lugar del computador, y analizar qué es necesario que me ordenen y en que secuencia, para poder producir los resultados esperados.
Analizado el problema, posiblemente tengamos varias formas de resolverlo; lo importante es determinar cuál es la mejor alternativa, con resultados en el menor tiempo y al menor costo. Una vez que sabemos cómo resolver el problema, pasamos a dibujar gráficamente la lógica de la alternativa seleccionada. Eso es precisamente un Diagrama de Flujo
Luego trasladar esos pasos lógicos planteados en el diagrama a frases que indiquen lo mismo; es decir, una codificación del programa pero utilizando instrucciones en Español. Esto es lo que denominaremos seudocódigo. Cuando logremos habilidad para desarrollar programas, es posible que no elaboremos el diagrama de flujo; en su lugar podremos hacer directamente el pseudocódigo del programa.

Prueba del algoritmo (Corrida). 

Una vez que se ha desarrollado el algoritmo, debemos asegurarnos de que funciona. Una manera de efectuar esta comprobación es ejecutar el algoritmo mentalmente, utilizando datos representativos y anotando con lápiz y papel los valores que van tomando las variables en cada paso  para garantizar que el programa funcione correctamente. Esta prueba consiste en que damos diferentes datos de entrada al programa y seguimos la secuencia indicada en el diagrama, hasta obtener los resultados. Se recomienda dar diferentes datos de entrada y considerar todos los posibles casos, aun los de excepción o no esperados, para asegurarnos de que el programa no producirá errores en ejecución cuando se presenten estos casos.

No hay comentarios.:

Publicar un comentario