martes, 2 de marzo de 2010

ALGORITMO

Algoritmo
Ø Conjunto de instrucciones que permite la resolución de un problema paso a paso; Método de notación en las distintas formas del cálculo

Ø es el conjunto de instrucciones que configuran el procedimiento paso a paso para resolver un determinado problema en una cantidad finita de tiempo

Ø Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una acción determinada. ...

Ø Método gradual para la solución de problemas que garantiza una solución correcta.
Los diagramas de flujo sirven para representar algoritmos de manera gráfica.

Programa

Ø Conjunto de instrucciones que indican a la computadora lo que debe hacer. Un programa se escribe en un lenguaje de programación y se convierte al lenguaje de máquina de la computadora por medio de otros programas denominados ensambladores y compiladores. Los programas se componen de instrucciones, buffers y constantes. Las primeras son las directivas que la computadora debe seguir (la parte lógica del programa) Los buffers (memorias intermedias) son espacios reservados en el programa, que aceptarán y almacenarán los datos mientras son procesados. Las constantes son valores fijos dentro del programa, que se usan para las comparaciones.

Ø Conjunto de instrucciones estructuradas y ordenadas las cuales un ordenador puede interpretar y ejecutar.

Ø Es un conjunto de instrucciones dirigidas a la computadora para que esta lleve a cabo una secuencia de acciones con el objetivo de realizar una o más operaciones que permitan solucionar un problema

El lenguaje algorítmico y el informático.
El lenguaje algorítmico es aquel por medio del cual se realiza un análisis previo del problema a resolver y encontrar un método que permita resolverlo. El conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse, se le denomina algoritmo.
El lenguaje informático es aquel por medio del cual dicho algoritmo se codifica a un sistema comprensible por el ordenador o computadora. Este tipo de lenguaje es más cercano a la máquina que al ser humano y podemos distinguir distintos tipos dependiendo de la proximidad a la maquina. Se denomina lenguaje de alto nivel aquel que es más cercano a la comprensión humana y lenguaje de bajo nivel a aquellos que son más comprensibles por la máquina. En concreto, nosotros vamos a estudiar un lenguaje en la frontera de uno de bajo nivel. Es por ello que el 'C' es tan potente y rápido, pues las funciones principales representan las funciones más básicas del ordenador.
Lenguaje de programación:
Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana. Está formado de un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones.
Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo el HTML. (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación sino un conjunto de instrucciones que permiten diseñar el contenido y el texto de los documentos)
Historia:
La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denominó "instrucciones", y a este conjunto de instrucciones se le llamó lenguaje ensamblador. Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura sintáctica similar a los lenguajes escritos por los humanos

Características de un Algoritmo:
Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos".
Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".
Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos específicos de objetos".
Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas".
Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel".
Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso–, definiendo así una secuencia de estados "computacionales" por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar).
Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.
Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual.
PARTES DE UN ALGORITMO
Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir: entrada, proceso y salida.
Donde:
ENTRADA: Corresponde al insumo, a los datos necesarios que requiere el proceso para ofrecer los resultados esperados.

PROCESO: Pasos necesarios para obtener la solución del problema o la situación planteada.

SALIDA: Resultados arrojados por el proceso como solución.

Diagrama de flujo:
Diagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número x
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.
Pseudocódigo
Pseudocódigo es la descripción de un algoritmo que asemeja a un lenguaje de programación pero con algunas convenciones del lenguaje natural (de ahí que tenga el prefijo pseudo, que significa falso). Tiene varias ventajas con respecto a los diagramas de flujo, entre las que se destaca el poco espacio que se requiere para representar instrucciones complejas. El pseudocódigo no está regido por ningún estándar.
Lenguaje natural
En la filosofía del lenguaje, el lenguaje natural es el lenguaje hablado o escrito por humanos para propósitos generales de comunicación, para distinguirlo de otros como puedan ser una lengua construida, los lenguajes de programación o los lenguajes usados en el estudio de la lógica formal, especialmente la lógica matemática.
El término lenguaje natural se refiere al estudio de las propiedades computacionales y de otro tipo implicadas en la comprensión, producción y uso de las lenguas naturales.