lunes, 23 de abril de 2012

ALGORITMO

Algoritmo.- Conjunto de procedimientos mediante los que se consigue un efecto. Suelen expresarse a través de letras, cifras y símbolos, que forman un algoritmo determinado.
Dícese del procedimiento para resolver problemas en términos de las acciones a ejecutar o el orden en que se ejecutarán dichas acciones en un problema dado.
Conjunto de Instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un sistema especifico o clase de problema.
Diagrama de flujo.- (Flowchart) Representación gráfica, mediante la utilización de signos convencionales, del proceso que sigue la información en un programa determinado. Se utilizan habitualmente en la fase de desarrollo de aplicaciones por los programadores.
El diagrama de flujo o Flowchart es una de las técnicas de representación de algoritmos más antigua, y consiste en representar mediante símbolos las operaciones a realizar. Por ejemplo: el inicio y el fin del algoritmo se representan con un símbolo elíptico, las entradas y salidas con un paralelogramo, las decisiones con un rombo, los procesos con un rectángulo, etc.
Un algoritmo está compuesto por tres elementos esenciales: 
Cabecera:
 Donde se da el nombre del algoritmo y se declaran las variables.
Cuerpo: Donde se realizan todas las acciones del programa.
Final: Donde se da finalización, porque debe ser finito.
Características y formas de algoritmos:
Todo algoritmo debe contar forzosamente con tres características básicas:
  • Preciso.- Debe ser concreto, no tener pasos de más y la solución tiene que ser clara y concreta.
  • Congruente.- Al probar varias veces, los resultados deben ser siempre los mimos.
  • Finito.- Al seguir los pasos debe llegar a la solución , es decir, debe tener término.
Los algoritmos pueden ser creados de dos formas:
 
1)     
Seudocódigo.- Es un conjunto pequeño y claro de instrucciones; en secuencia, que permite llevar a cabo una tarea.
 
2)     
Diagrama de flujo.- Es la representación de la secuencia, a través de símbolos, de la tarea que se va a realizar.

Un algoritmo  debe tener 3 partes: entrada, proceso y salida.
Un ejemplo de algoritmo es el que realizamos para cambiar una llanta a un automóvil:
·         - Inicio
·        -Aflojar tornillos de las llantas
·        -Levantar el carro con el gato
·        -Sacar los tornillos de las llantas
·        -Quitar la llanta
·        -Poner los repuestos de la llanta
·        -Poner los tornillos
·        -Bajar el gato
·        -Apretar los tornillos
·        -fin

¿QUE ES UN ALGORITMO?

                                         Como citar este artículo:
Rodolfo Quispe-Otazu. ¿Que es un Algoritmo?. Blog de Rodolfo Quispe-Otazu [Internet]. Marzo 2007. 
¿Que es el Computacion?
Nuestra herramienta mental más importante para competir con la complejidad es la abstracción. Por tanto, un problema no deberá considerarse inmediatamente en términos de instrucciones de un lenguaje, sino de elementos naturales del problema mismo, abstraídos de alguna manera. [Niklaus Wirth, Creador del Lenguaje Pascal]
Definicion: Algoritmo
Podemos encontrar muchas definiciones completas o formales de algoritmo en los textos de algoritmica y programacion, todas ellas muy similares:
  • Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones de un ordenador debe realizar para llevar a cabo un tarea en un tiempo mas finito. [Donald E. Knuth, 1968]
  • Descripcion de un esquema de comportamiento expresado mediante un reportorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y realizables a priori. Este repertorio se denomica lexico [Pierre Scholl, 1988]
  • Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado. [Rodolfo Quispe-Otazu, 2004]
Caracteristicas:
Las características fundamentales que debe cumplir todo algoritmo son:
  • Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación.
  • Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos.
  • Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.
  • Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo.
  • Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución.
Historia:
La palabra algoritmo proviene del nombre del matemático llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi (hay muchas variantes para el nombre al usar el alfabeto latin, tales como Al-Khorezmi, Al-Khwarizmi, Al-Khawarizmi, Al-Khawaritzmi o Al-Khowarizmi) que vivió entre los siglos VIII y IX.
Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento, sino el de simplificar las matemáticas a un nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio público. Cabe destacar cómo señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y cómo explicó que, mediante una especificación clara y concisa de cómo calcular sistemáticamente, se podrían definiralgoritmos que fueran usados en dispositivos mecánicos similares a un ábaco en vez de las manos. También estudió la manera de reducir el numero de operaciones necesarias que formaban el cálculo.
Por esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este concepto esté asociado a su nombre. Al-Khorezmi fue sin duda el primer pensador algorítmico.
Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La autora fue Ada Byron, en cuyos escritos se detallaban la máquina analítica en 1842. Por ello que es considerada por muchos como la primera programadora aunque, desde Charles Babbage, nadie completó su máquina, por lo que el algoritmo nunca se implementó.
La idea de resolver un problema o de disponer de un algoritmo es bastante antigua, tal es así, que existía la errada creencia que no había problema que no se pudiera resolver y en base a ello, el matemático David Hilbert quiso descubrir un algoritmo para los algoritmos. Hoy en dia gracias a los trabajos de Kurt Gödel, Alonzo Church (calculo lamba), Alan Turing (maquina de turing), se sabe que dentro del universo de problemas, una pequeña parte es computable, luego que el objetivo que perseguia David Hilbert no era computable, es lo que se ha denominado como la computabilidad de los algoritmos.

viernes, 20 de abril de 2012

DIAGRAMA DE FLUJO


Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.
Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.


miércoles, 18 de abril de 2012

PASOS PARA CREAR UN ALGORITMO


Pasos:
Pasos
Etapa
Descripción
1
Análisis del problema
Conducen al  detallado por  un código escrito en forma de un algoritmo
2
Diseño de algoritmo
3
Codificación
Se implementa el algoritmo en un código escrito en un lenguaje de programación. Refleja las ideas desarrolladas en las etapas de análisis y diseño
4
Compilación y ejecución
Traduce el programa fuente a programa en código de maquina y lo ejecuta.
5
Verificación
Busca errores en las etapas anteriores y los elimina.
6
Depuración
7
Documentación
Son comentarios, etiquetas de texto, que facilitan la comprensión del programa
 Tipos :
Método
Descripción
Ejemplos
Algorítmico
Utiliza un algoritmo y puede  implementado en una 
  • Instrucciones para manejar un 
  • Instrucciones para secar grano a granel
  • Instrucciones para resolver ecuación de segundo grado
Heurística:
Se apoya en el resultado obtenido en un análisis de alternativas de experiencias anteriores similares. De las mismas, a se deducen una serie de reglas empíricas o heurísticas que de ser seguidas, conducen a laselección de la mejor alternativa en todas o la mayoría de las veces.



martes, 17 de abril de 2012

CLASES DE ALGORITMO



  • Algoritmos Cualitativos: 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 cualquiera.
  • Como ejemplo podemos decir que la utilización de un directorio (Búsqueda de un teléfono). Para poder buscar un teléfono en un directorio, se debe conocer el algoritmo que se va a utilizar, es decir la forma en que están codificados los nombres de las personas, para así lograr encontrarlos y localizar el número telefónico correspondiente.
  • Algoritmos Cuantitativos: Son aquellos pasos o instrucciones que involucran cálculos numéricos para llegar a un resultado satisfactorio.
  • Como ejemplo podemos citar los pasos para resolver una ecuación de segundo grado, los pasos lógicos y secuenciales para obtener una nomina.
    Antes de entrar a estudiar lo que es en sí el desarrollo de algoritmos se deben tener claros algunos conceptos, como:
    Variables: Son todos aquellos valores que pueden o no cambiar en el transcurso de un algoritmo. Usualmente son introducidas como datos. Existen variables simples y variables suscritas (arreglos). Todas las variables se componen de dos partes esenciales: Nombre y Valor.
    El nombre es quien identifica la variable en todo el transcurso del algoritmo, y son un conjunto de caracteres, letras y números. Dicho nombre debe ser mnemotécnico, es decir, que con solo leer el nombre de la variable se pueda entender o determinar con facilidad lo que ella significa o contiene. Como ejemplo podemos decir la Variable VrHr significa a simple vista Valor de la Hora; pero si fuese X o HH, estos nombres pueden significar muchas cosas o, a la vez, no significar nada.
    El valor es la cantidad que una variable representa o tiene asociada en un momento determinado. Se debe tener en cuenta que una variable también puede tener asociado un valor lógico como falso o verdadero.
    Constantes: Son todos aquellos valores que no cambian en el transcurso de un algoritmo y son introducidos en el momento de utilizarse.
    En determinados casos se puede presentar que el valor de una variable no cambie en el transcurso de un algoritmo; pero por este hecho no se considera constante, sigue siendo una variable, porque su valor puede cambiar y las constantes no lo pueden hacer.

    ALGORITMOS

    dibujos