P. 1
Algoritmo

Algoritmo

|Views: 566|Likes:
Publicado porYusmelyn Andrade

More info:

Published by: Yusmelyn Andrade on Jan 30, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

02/22/2013

pdf

text

original

Algoritmo

De Wikipedia, la enciclopedia libre Saltar a navegación, búsqueda

Los diagramas de flujo sirven para representar algoritmos de manera gráfica. En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latin, dixit algorithmus y éste a su vez del matemático persa Al Juarismi1 ) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.2 Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.1 En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones. PROBLEMA -> ALGORITMO -> PROGRAMA El pseudocódigo es una herramienta algorítmica que permite escribir pseudoprogramas (una imitación de un programa real) utilizando un lenguaje de pseudoprogramación que es una imitación de los lenguajes de programación de alto nivel. Así, un pseudocódigo es una combinación de símbolos (+, -, *, /, %, >, >=, <, <=, !=, ==, y, o, no), términos (Leer, Imprimir, Abrir, Cerrar, Hacer...Mientras, Mientras...Hacer, Para...Mientras, etc) y otras características comúnmente utilizadas en uno o más lenguajes de alto nivel. No existen reglas que determinen que es o no es un pseudocódigo, sino que varía de un programador a otro. El objetivo del pseudocódigo es permitir al programador centrarse

en los aspectos lógicos de la solución evitando las reglas de sintáxis de un lenguaje de programación. Posteriormente el pseudocódigo debe ser traducido a programa usando un lenguaje de programación de alto nivel como Java, C++, C, etc. Ejemplo 2.1:- Diseñe un algoritmo para preparar una limonada. INICIO Llenar una jarra con un litro de agua Echar el jugo de tres limones Echar cuatro cucharadas de azúcar Remover el agua hasta disolver completamente el azúcar FIN Ejemplo 2.2 :- Diseñe un algoritmo que permita hallar la suma y el promedio de tres números. INICIO LEER numero1, numero2, numero3 suma = numero1 + numero2 + numero3 promedio = suma / 3 IMPRIMIR suma, promedio FIN Notas:•

El témino LEER significa obtener un dato de algún dispositivo de entrada, como el teclado, y almacenarlo en una variable.

Una variable es una localización en la memoria que tiene un nombre y cuyo contenido puede cambiar a lo largo de la ejecución de un programa. Así numero1, numero2 y numero3 son variables.

El término IMPRIMIR significa mostrar el valor de una variable en algún dispositivo de salida, como la pantalla.

Contenido
[ocultar]
• •

• • •

• •

1 Definición formal 2 Medios de expresión de un algoritmo o 2.1 Diagrama de flujo o 2.2 Pseudocódigo o 2.3 Sistemas formales o 2.4 Implementación o 2.5 Variable o 2.6 Estructuras secuenciales 3 Algoritmos como funciones 4 Análisis de algoritmos 5 Ejemplo de algoritmo o 5.1 Descripción de alto nivel o 5.2 Descripción formal o 5.3 Implementación 6 Referencias 7 Bibliografía

la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:7 Tiempo secuencial. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita. Por ejemplo. es decir.8 9 Sin embargo. una versión modificada de la criba de Eratóstenes que nunca termine de calcular números primos no deja de ser un algoritmo. los algoritmos funcionan sobre una vasta cantidad de estructuras de datos.1 Tipos de algoritmos según su función o 8. Esta amplia definición abarca tanto a algoritmos prácticos como aquellos que solo funcionan en teoría. es decir.7 A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos como máquinas de Turing entre otros. 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.3 Temas relacionados o 8. entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual.4 Disciplinas relacionadas 9 Enlaces externos • Definición formal En general. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto. símbolos o gráficas mientras que. en general. un algoritmo es cualquier cosa que funcione paso a paso.1 2 3 4 5 6 Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular.3 1 En general. que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida).• 8 Véase también o 8. por ejemplo el método de Newton y la .2 Técnicas de diseño de algoritmos o 8. y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. En resumen. Estado abstracto. Exploración acotada. estos modelos están sujetos a un tipo particular de datos como son números. Un algoritmo funciona en tiempo discretizado –paso a paso–. no existe ningún consenso definitivo en cuanto a la definición formal de algoritmo. 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).

diagramas de flujo y lenguajes de programación entre otros. pseudocódigo. incluyendo al lenguaje natural. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones. La descripción de un algoritmo usualmente se hace en tres niveles: 1. 3. un análisis de complejidad o ambos. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.eliminación de Gauss-Jordan funcionan. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. [editar] Medios de expresión de un algoritmo Los algoritmos pueden ser expresados de muchas maneras. con números de precisión infinita. Implementación. se selecciona un modelo matemático y se explica el algoritmo de manera verbal. y no por ello dejan de ser algoritmos. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Se establece el problema. sin embargo no es posible programar la precisión infinita en una computadora. Descripción formal. se mantienen independientes de un lenguaje de programación específico. Diagrama de flujo . posiblemente con ilustraciones y omitiendo detalles. Dichas expresiones son formas más estructuradas para representar algoritmos. no obstante. Descripción de alto nivel. al menos en principio. en un lenguaje de programación suficientemente general):10 Aritmetizabilidad.10 En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda función calculable se puede programar en una máquina de Turing (o equivalentemente. Solamente operaciones innegablemente calculables están disponibles en el paso inicial. 2. También es posible incluir un teorema que demuestre que el algoritmo es correcto.

aunque no está regido por ningún estándar. que pueden estar basadas en la sintaxis de lenguajes de programación concretos. [editar] Pseudocódigo Artículo principal: Pseudocódigo El pseudocódigo (falso lenguaje. Sin embargo. ciclos y condicionales. y como producto intermedio durante el desarrollo de un algoritmo. Por su facilidad de lectura son usados como introducción a los algoritmos.Diagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número x Artículo principal: Diagrama de flujo Los diagramas de flujo son descripciones gráficas de algoritmos. el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación. como los |diagramas de flujo. el pseudocódigo en general es comprensible sin necesidad de conocer o . aunque presentan una ventaja importante sobre estos. y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas. Programadores diferentes suelen utilizar convenciones distintas. Los diagramas de flujo son usados para representar algoritmos pequeños. Es utilizado para describir algoritmos en libros y publicaciones científicas. ya que abarcan mucho espacio y su construcción es laboriosa. usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO. El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo. y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. descripción de un lenguaje y descripción de procesos a personas ajenas a la computación. como asignaciones.

i:=1. La declaración se realiza comenzando con var. Algunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. los algoritmos pueden ser implementados en otros medios. [editar] Sistemas formales La teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos que formalizan el concepto de algoritmo. La asignación se puede clasificar de la siguiente forma: . readln(n). Los modelos más comunes son la máquina de Turing. Principalmente. Mediante una sentencia de asignación. y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él. en el paso de valores o resultados a una zona de la memoria. Estos modelos son tan precisos como un lenguaje máquina. Dicha zona será reconocida con el nombre de la variable que recibe el valor. [editar] Variable Un elemento que toda pertenece a un dato específico correcto. sin embargo se mantienen independientes de cualquier computadora y de cualquier implementación.utilizar un entorno de programación específico. como una red neuronal. La asignación de esto consiste.. Ejemplo: . while i < n do begin (* cuerpo del bucle *) i := i + 1 end. existen dos maneras de otorgar valores iniciales a variables: 1. el algoritmo de Euclides. un circuito eléctrico o un aparato mecánico y eléctrico. [editar] Implementación Muchos algoritmos son ideados para implementarse en un programa. la criba de Eratóstenes y muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos... Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Sin embargo.. 2. careciendo de expresiones coloquiales o ambigüedad. . El algoritmo de multiplicación tradicional. máquina de registro y funciones μ-recursivas. Mediante uno de los procedimientos de entrada de datos (read o readln). [editar] Estructuras secuenciales La estructura secuencial es aquella en la que una acción sigue a otra en secuencia.

Cuando esto ocurre. Acumulador: Consiste en usarla como un sumador en un proceso (a <= a + b) 4. printf("Diga la base". Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a <= a + 1) 3. Por esta razón se considera que los algoritmos son funciones parciales. h. los datos se pueden representar a su vez como secuencias de bits. En ocasiones los algoritmos son susceptibles de nunca terminar. cuando entran a un bucle infinito. a. Más aún. y en general.. Simples: Consiste en pasar un valor constante a una variable (a <= 15) 2. y podemos decir que la función queda indefinida para ese valor de entrada. a) . No todas las funciones entre secuencias datos son computables. Es decir que todo algoritmo calcula una función donde cada número natural es la codificación de un problema o de una solución. de símbolos cualesquiera. por ejemplo. int b. b). .. entonces los algoritmos son en esencia funciones de los números naturales en los números naturales que sí se pueden calcular. De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a <= c + b*2/4). sin importar la cantidad de memoria que ocupe o el tiempo que se tarde. scanf(%i.. h).1.. es decir. Un algoritmo se puede concebir como una función que transforma los datos de un problema (entrada) en los datos de una solución (salida). no necesariamente definidas en todo su dominio de definición. scanf(%i. Un ejemplo de estructura secuencial. printf("Diga la altura". el algoritmo nunca devuelve ningún valor de salida.1 9 11 Como cada secuencia de bits representa a un número natural (véase Sistema binario). b). El problema de la parada es un ejemplo. como obtener la área de un triángulo: Inicio . Cuando una función puede ser calculada por medios algorítmicos. h) a := (b*h)/2 printf("El área del triángulo es de". Fin [editar] Algoritmos como funciones Artículo principal: Teoría de la computabilidad Esquemática de un algoritmo solucionando un problema de ciclo hamiltoniano. se dice que dicha función es computable.

dado un conjunto se pide encontrar m tal que para todo elemento x que pertenece al conjunto C. comparte las características de las disciplinas matemáticas.[editar] Análisis de algoritmos Artículo principal: Análisis de algoritmos Como medida de la eficiencia de un algoritmo. Si se implementa correctamente. en la mayoría de los casos. mientras que otros consideran procedimientos que podrían ejecutarse eternamente sin pararse. Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal como Lexico. por eso. Sin pérdida de generalidad se puede asumir que dicho conjunto no es vacío y que sus elementos están numerados como . se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. Finalmente. Para un ejemplo más complejo véase Algoritmo de Euclides. En este último caso. un algoritmo que verifica que hay más ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor útil. no en los de la implementación particular. suponiendo el caso en el que existiera algún dispositivo físico que fuera capaz de funcionar eternamente. De esta forma. su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación. Algunos escritores restringen la definición de algoritmo a procedimientos que deben acabar en algún momento. Así. el valor devuelto por el algoritmo será válido. mientras evalúa la siguiente secuencia podrán leerse dos tipos de señales: una señal positiva (en el caso de que el número de ceros sea mayor que el de unos) y una negativa en caso contrario. . la salida de este algoritmo se define como la devolución de valores exclusivamente positivos si hay más ceros que unos en la secuencia y. El análisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolución del gasto de tiempo y memoria en función del tamaño de los valores de entrada. se tiene el problema de encontrar el número más grande. sino que el éxito estaría definido en función de las secuencias de salidas dadas durante un periodo de vida de la ejecución del algoritmo. cuyos códigos pueden estar en el idioma del programador. Es decir. la finalización con éxito del algoritmo no se podría definir como la terminación de éste con una salida satisfactoria. devolverá una mezcla de señales positivas y negativas. [editar] Descripción de alto nivel Dado un conjunto finito C de números. [editar] Ejemplo de algoritmo El problema consiste en encontrar el máximo de un conjunto de números. El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación y. Por ejemplo. en ese sentido. el análisis de los algoritmos se centra en los principios básicos del algoritmo. en cualquier otro caso. hasta que evalúe el siguiente dígito binario.

} [editar] Referencias 1. se recorre el conjunto y se compara cada valor con el valor del máximo número encontrado hasta ese momento. se asume que el primer elemento (c0) es el máximo. Bratley. Paul (1997). [editar] Implementación En lenguaje C++: int max(int c[]. Gilles. Fundamentos de Algoritmia. 2. "devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso. m = c[0]. i < n. i++) if (c[i] > m) m = c[i]. ↑ a b c d e Brassard. Cuando se termina de recorrer la lista. return m. se asigna su valor al máximo. [editar] Descripción formal El algoritmo puede ser escrito de una manera más formal en el siguiente pseudocódigo: Algoritmo Encontrar el máximo de un conjunto función max(C) //C es un conjunto no vacío de números// n ← | C | // | C | es el número de elementos de C// m ← c0 para i ← 1 hasta n hacer si ci > m entonces m ← ci devolver m Sobre la notación: • • "←" representa una asignación: m ← x significa que la variable m toma el valor de x. Madrid: PRENTICE HALL. ↑ a b Real Academia Española. for (i = 1. ISBN 84-89660-00-X. Diccionario de la lengua española "Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. int n){ int i. el máximo de C)." .Para encontrar el elemento máximo. luego. el máximo número que se ha encontrado es el máximo de todo el conjunto. En el caso que un elemento sea mayor que el máximo.

«Introducción a la teoría de números». 6. Savage (1987). Cormen. 11. Stein. Brassard y P. Leiserson. ISBN 089874833X. México: PEARSON EDUCACIÓN. A. Dean] (1995). The Complexity of Computing. ISSN 1529-3785. D. 7. y Stein. Rivest. Matemáticas Discreta y Combinatoria. Leiserson. «Sequential Abstract State Machines capture Sequential Algorithms». Clifford (2009).. ISBN 970-26-0637-3. Bratley. [editar] Bibliografía • • • • • • Fundamentos de Algoritmia. Ronald. C.. McGraw-Hill. Massachusetts: The MIT Press. Krieger Publishing Co. ISSN 10798986. H. 8. ↑ a b Nachum Dershowitz & Yuri Gurevich (2008). R. Course Technology. Michael] (2005). ↑ a b [|Sipser. Prentice Hall. http://research. ↑ Ralph P.microsoft. 10.microsoft. T. A Creative Approach. Algorithms in C (3r ed). Teoría de Autómatas y Lenguajes Formales. Schaum's Outline of Principles of Computer Science. ISBN 0-13-497777-7. 9. 299-350. [editar] Véase también [editar] Tipos de algoritmos según su función • • Algoritmo de ordenamiento Algoritmo de búsqueda [editar] Técnicas de diseño de algoritmos • Algoritmos voraces (greedy): seleccionan los elementos más prometedores del conjunto de candidatos hasta encontrar una solución. ↑ [|Kelley. ISBN 978-0534950972.pdf.pdf. [quien fue también. (también existen versiones en C++ y Java) The Design and Analysis of Computer Algorithms. (ISBN 848966000) The Art of Computer Programming. México: Addison Wesley Longman de México.com/enus/um/people/gurevich/Opera/188.. .3. L. ↑ a b Gurevich. ACM Transactions on Computational Logic 1 (1). E. ISBN 978-0-262-53305-8. Charles. R. Introduction to Algorithms. «Propiedades de los números enteros: Inducción matemática». ISBN 968-444-324-2. Cambridge. «A natural axiomatization of computability and proof of Church's Thesis». 5. Thomas. ↑ Johnsonbaugh. Introduction to algorithms. Yuri (2000). Rivest. el creador del TeX] Introduction to Algorithms (2nd ed). Introduction to the Theory of Computation (2 edición). ↑ a b Cormen. 4. Knuth. G. Richard (2005). Bulletin of Symbolic Logic 14 (3). ↑ Carl Reynolds & Paul Tymann (2008). Mamber. Aho. En la mayoría de los casos la solución no es óptima. Grimaldi (1998). http://research.com/enus/um/people/gurevich/Opera/141. C. 77-111. ISBN 978-0-07-146051-4. U. Matemáticas Discretas. Sedgewick. E. ↑ John E.

• • • • • • • • • Algoritmos paralelos: permiten la división de un problema en subproblemas de forma que se puedan ejecutar de forma simultánea en varios procesadores. Metaheurísticas: encuentran soluciones aproximadas (no óptimas) a problemas basándose en un conocimiento anterior (a veces llamado experiencia) de los mismos. Marzo 2007.php . Blog de Rodolfo Quispe-Otazu [Internet]. logrando así la solución al problema completo. además todas las ramas se ejecutan simultáneamente. Disponible en: http://www. Programación dinámica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial. 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.rodolfoquispe. Algoritmos determinísticos: el comportamiento del algoritmo es lineal: cada paso del algoritmo tiene únicamente un paso sucesor y otro antecesor. Algoritmos no determinísticos: el comportamiento del algoritmo tiene forma de árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores. ¿Que es un Algoritmo?. Algoritmos probabilísticos: algunos de los pasos de este tipo de algoritmos están en función de valores pseudoaleatorios. ¿Que es un Algoritmo? 11Mar07 Como citar este artículo: Rodolfo Quispe-Otazu.org/blog/que-es-unalgoritmo. Divide y vencerás: dividen el problema en subconjuntos disjuntos obteniendo una solución de cada uno de ellos para después unirlas. Vuelta atrás (backtracking): se construye el espacio de soluciones del problema en un árbol que se examina completamente. almacenando las soluciones menos costosas.

todas ellas muy similares: • • • • • • • • • • Conjunto ordenado y finito de pasos que permite hallar la solución de un problema. procedimiento. finito y preciso. [Niklaus Wirth. Un conjunto de símbolos y procedimientos usados en la realización de un cálculo. Knuth. los cuales expresan la lógica de un programa. teniendo en cuenta que debe de ser definido. rutina. sino de elementos naturales del problema mismo. 1968] Descripcion de un esquema de comportamiento expresado mediante un reportorio finito de acciones y de informaciones elementales. Toda receta. Descripción exacta de la secuencia en que se ha de realizar un conjunto de actividades tendientes a resolver un determinado tipo de problema o procedimiento. 1988] Un algoritmo es un conjunto finito de pasos definidos. Este repertorio se denomica lexico [Pierre Scholl. un problema no deberá considerarse inmediatamente en términos de instrucciones de un lenguaje. estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas. 2004] Caracteristicas: Las características fundamentales que debe cumplir todo algoritmo son: . Es un sistema por el cual se llega a una solución. bien comprendidas y realizables a priori. [Donald E. 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. Por tanto. Descripción precisa de una sucesión de instrucciones que permite llevar a cabo un trabajo en un número finito de pasos. método. que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado. proceso. formula que resuelven un determinado problema. Creador del Lenguaje Pascal] Definicion: Algoritmo Podemos encontrar muchas definiciones de algoritmo en los textos de programacion. [Rodolfo Quispe-Otazu. técnica. identificadas. Conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas. Conjunto de sentencias / instrucciones en lenguaje nativo.Nuestra herramienta mental más importante para competir con la complejidad es la abstracción. abstraídos de alguna manera. Una secuencia de pasos que conducen a la realización de una tarea. Las definiciones mas completas o formales: • • • Secuencia finita de instrucciones. Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una acción determinada.

sino el de simplificar las matemáticas a un nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio público. mediante una especificación clara y concisa de cómo calcular sistemáticamente. de ahí que su principal valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento. Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso. Por esta razón. 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. no usando nada más ni nada menos que aquello que se requiera para y en su ejecución. 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. Ser finito: Un número específico y numerable de pasos debe componer al algoritmo. Ya en el siglo XIX.• • • • • Ser definido: Sin ambigüedad. merece que este concepto esté asociado a su nombre. Cabe destacar cómo señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y cómo explicó que. aunque no haya sido él el inventor del primer algoritmo. Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. La idea de resolver un problema o de disponer de un algoritmo es bastante antigua. AlKhawaritzmi o Al-Khowarizmi) que vivió entre los siglos VIII y IX. el cual deberá finalizar al completarlos. Por ello que es considerada por muchos como la primera programadora aunque. tales como Al-Khorezmi. que existía la errada creencia que no había problema que no se pudiera resolver y . cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación. Tener una o más salidas: Debe siempre devolver un resultado. se podrían definir algoritmos que fueran usados en dispositivos mecánicos similares a un ábaco en vez de las manos. nadie completó su máquina. se produjo el primer algoritmo escrito para un computador. desde Charles Babbage. como ocurre con las computadoras. en cuyos escritos se detallaban la máquina analítica en 1842. Al-Khawarizmi. La autora fue Ada Byron. También estudió la manera de reducir el numero de operaciones necesarias que formaban el cálculo. 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. de nada sirve un algoritmo que hace algo y nunca sabemos que fue. Al-Khorezmi fue sin duda el primer pensador algorítmico. Al-Khwarizmi. por lo que el algoritmo nunca se implementó. Sus libros eran de fácil comprensión. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla. tal es así.

en un tiempo finito y requiriendo una cantidad finita de esfuerzo. y de la Teoría a la Práctica. Algoritmo. Mayo 1995 Eduardo René Rodríguez Ávila. Esto es. B. C. Esto es. Algoritmia. el matemático David Hilbert quiso descubrir un algoritmo para los algoritmos. En un algoritmo siempre debe haber un punto de inicio y un punto de terminación. CARACTERÍSTICAS DE UN ALGORITMO Todo algoritmo debe cumplir las siguientes características: A. se sabe que dentro del universo de problemas. El Correcto y Completo Desarrollo de un Algoritmo. es lo que se ha denominado como la computabilidad de los algoritmos. debe especificar sin ambigüedad el orden en que se deben ejecutar las instrucciones. Wikipedia. Debe estar Definido. debe presentarse como una secuencia ordenada de instrucciones que siempre se ejecutan en un tiempo finito y con una cantidad de esfuerzo también finito. REPRESENTACIÓN DE ALGORITMOS Existen varias maneras de representar algoritmos. la secuencia de ejecución deberá ser la misma proporcionándonos el mismo resultado. una de las más evidentes es el lenguaje natural. estos deben ser únicos y deben ser fácilmente identificables. siempre que sea adecuado se realizarán un número finito de instrucciones. Alonzo Church (calculo lamba). Pseudocódigo . una pequeña parte es computable. Mayo 2004 Wikipedia. Referencias: • • • • Ricardo Baeza Yates. Debe ser Finito. Como alternativa tenemos el Pseudocódigo. Computación: de los Juegos a los Algoritmos. Mayo 2003 Ricardo Baeza Yates. sin embargo el lenguaje natural no siempre es lo suficientemente preciso.en base a ello. Esto es. Hoy en dia gracias a los trabajos de Kurt Gödel. Agosto 2007 ALGORITMO Un algoritmo es un método para resolver un problema. Alan Turing (maquina de turing). Debe ser Preciso. cada vez que se ejecute bajo las mismas condiciones. luego que el objetivo que perseguia David Hilbert no era computable.

A continuación de la palabra clave inicio se declaran las variables. Existen muchas variantes de pseudocódigo.). A continuación aparecerá el desarrollo del algoritmo. pero con una precisión mayor. Ejemplo: /* Este es un comentario*/ F. aquí se adoptarán las siguientes normas: A.. La decisión de constantes se identificará con la palabra clave constantes..El pseudocódigo es un forma de representar un algoritmo. Estas palabras clave limitarán un bloque de instrucciones siempre que se requieran. Por ejemplo: Algoritmo EJEMPLO B. Los comentarios aparecerán encerrados entre /*y*/. una línea con la palabra clave algoritmo seguida por el nombre del algoritmo. Por ejemplo: Constante PI 3. Todos los algoritmos comenzarán con una sentencia algoritmo. separada por un espacio se colocará la lista de variables.. Cada lista incluirá solamente variables de mismo tipo. Fin D. Esto es.. al cual nombraremos PRINCIPAL. Z Enteras I. J. Después de la sentencia algoritmo se declararán las constantes que se requieran en el programa. separadas por comas (. mediante sentencias similares al lenguaje natural. K E. En cualquier parte del algoritmo podrán colocarse comentarios para hacer aclaraciones o comentarios relacionados con la instrucción u operación que faciliten la interpretación. En este caso el tipo de variables se indicará al principio de la lista. Y. . Por ejemplo: PRINCIPAL Inicio . Cuando se use letra manuscrita se sugiere subrayar las palabras clave. Las palabras clave se imprimirán en letra negrita. Ejemplo: Flotante X.1416 Constante UNO 1 C. Dicho desarrollo se encontrará entre las palabras clave inicio y fin.

Lo que pretende un algoritmo es sintetizar de alguna forma una tarea. Ejemplo: Calcular las posibles raíces para una ecuación de segundo grado: ax2+bx+c=0 +-Algoritmo raíces | . El lenguajealgorítmico es aquel por medio del cual se realiza un análisisprevio del problema a resolver y encontrar un método que permita resolverlo. En concreto.com/Constructor-Sitios-Web Curso de PHP a distancia Nuevas aperturas en Enero 2011. . Inscríbase ahora! | www. y el orden en el que deben efectuarse. nosotros vamos a estudiar un lenguaje en la fronterade uno de bajo nivel. Es por ello que el 'C' es tan potente y rápido. . .Primera visión del método de resolución. Certifica UTN.Ensamblaje de soluciones finales.com/Cursos_PHP Registre su Dominio Cree su web propio con SiteBuilder Hosting. Asesoría y Más! | www. La palabra "algoritmo" deriva del nombre latinizado del gran matemático árabe Mohamed Ibn Moussa Al Kow Rizmi. . pues las funciones principales representan las funciones más básicas del ordenador. Diferencia entre el lenguajealgorítmico y el informático. 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. Planteamientos de Problemas.Descomposición en módulos. Fue Fibonacci. .com Un algoritmoes el conjunto de operacionesy procedimientosque deben seguirse para resolver un problema. el que tradujo su obra al latín y la inició con las palabras: Algoritmi dicit. donde se recogía el sistema de numeración hindú y el conceptodel cero. Diseño. cálculo o mecanismo antes de ser transcrito al ordenador. 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.Wix.Análisis previo del problema.Algoritmo Enviado por camus_x Anuncios Google: Crear una Página Web Diseña tu Sitio Web en Flash Editor de Web Rápido Fácil y Gratis | www.dominio.Búsqueda de soluciones parciales. el cual escribió sobre entre los años 800 y 825 su obra Quitab Al Jabr Al Mugabala. 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. Los pasos que hay que seguir son los siguientes: . El conjunto de todas las operaciones a realizar.Aprender21.(Programación estructurada).

| Variables reales a.c.c | | +-Si sqr(b)>= 4*a*c entonces | | x=(-b+sqrt(b^2-4*a*c))/2a | +-Sino | | Escribir "No existen raíces reales. Símbolos generales: * Inicio y fin de un programa. la traza del siguiente algoritmo es el valor que van adoptando las variables a medida que se va ejecutando un programa. * Flujo de la ejecución. así como la generación de la traza del algoritmo.b | | Escribir "Indique el primer sumando" | Leer a | Escribir "Indique el segundo sumando" | Leer b | c=a+b | Escribir "El resultado es: ".b. Así.x. Traza de un Algoritmo.c . La traza de un Algoritmo se puede definir como la ejecución manual de forma secuencial de las sentencias que lo componen. Esto nos facilita la visión descriptiva de la ejecución del programa.y | | Escribir "Introduzca los coeficientes de mayor a menor grado. +-Algoritmo Suma | | Variable entera a." | Leer a. * Operaciones de I/O . Se denomina traza de un algoritmo a la ejecución manualde un programa obteniendo para cada paso un resultado. aritméticas y lógico-aritméticas.b." | +-Finsi | +-Final Organigramas. * Decisiones lógicas. Un organigrama o diagramade flujos es una representación semigráfica del algoritmo en cuestión.

pudo ser desglosado como: • ponerse las medias • ponerse el pantalón • ponerse la camisa • ponerse los zapatos . Por ejemplo. 2. tomar el transporte algoritmo que se presente cuando se a clases. vestirse 4.| +-Final +----------------------------+ |TRAZA| +------------+---------------+ | Comentario | Valores | +------------+---------------+ | Leemos a: | a <. tambien el paso 3. Tomemos por ejemplo las actividades que se realizan diariamente cuando vas a clases. Un algoritmo constituye una guia para resolver un problema dado. Una posible secuencia podria ser. ALGORITMO Es un procedimiento esquematico que comprende un conjunto de pasos secuenciales ordenados para realizar una actividad especifica. sin indicar la solucion exacta del mismo.9 | | Escribe c: | c <.5 | | Calcula c: | c <. entre los pasos 3 y 4.a+b <.m. cepillarse los dientes 3.4 | | Leemos b: | b <. levantarse a las 6:00 a. pudo incluirse: “repasar las clases”. desayunar 6. 1. El algoritmo descrito anteriormente se an omitido pasos que pudiesen considerarse importantes.9 | +------------+---------------+ La función principal que posee realizar la traza de un algoritmo es la de comprobar que éste funciona correctamente o para realizar la etapa de depuración en la que se intenta corregir errores. simplificar el algoritmo al máximo e incrementar su eficacia y velocidad. Podemos darnos cuenta que un algoritmo puede ser tan detallado como uno desee. vestirse. acomodar los utiles escolares 5.

¿TIPOS DE ALGORITMOS…? Existen dos tipos y son llamados así por su naturaleza: • Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. para dar solución a un problema específico.De la misma manera. La siguiente documentación pueden servir de apoyo a tutores o profesores. así como una introducción a sus contenidos. Principales conceptos de este manual. los pasos 3 y 4 pudieron haberse intercambiado. una iniciación a la programación ¿QUÉ ES ALGORITMO? La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi. Por Wilder Urbaez Atención: Contenido exclusivo de DesarrolloWeb. es decir. se pueden acomodar primero los utiles escolares y luego vestirse. Existen una serie de documentación adicional para refuerzo conceptual. nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. facilitarle el desarrollo de su capacidad analítica y creadora. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir.com. Contenido Los posteriores artículos mostrarán el desarrollo del tema de algoritmo a manera de curso. Por lo cual. el alumno debe tener buenas bases que le sirvan para poder crear de manera fácil y rápida sus programas. Copyright. para de esta manera mejorar su destreza en la elaboración de algoritmos que sirven como base para la codificación de los diferentes programas que tendrá que desarrollar a lo largo de su carrera. El algoritmo. en su labor cotidiana de enseñanza y al estudiante. . dado parte importante en el proceso del tema en cuestión. No reproducir. El desarrollo de algoritmos es un tema fundamental en el diseño de programas o soluciones.

Tipos de Lenguajes Algorítmicos • Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo).• Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. Lenguajes Algorítmicos Un Lenguaje algorítmico es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso. • No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo). INICIO Edad: Entero ESCRIBA “cual es tu edad?” Lea Edad SI Edad >=18 entonces ESCRIBA “Eres mayor de Edad” FINSI ESCRIBA “fin del algoritmo” FIN ¿Qué es un .

Los algoritmos son objeto de estudio de la algoritmia. Estas entradas son tomadas de conjuntos específicos de objetos". o el método de Gauss para resolver un Sistema lineal de ecuaciones. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience. no debe confundirse con el concepto de programa. es decir: entrada. puesto que no está exactamente claro qué significa "precisamente definido". obteniendo una solución. estrictamente hablando. 4. y así sucesivamente. "Un algoritmo siempre debe terminar después de un número finito de pasos". Por determinista se entiende que. aunque su descripción pueda ser intuitivamente clara. Mientras el primero es la especificación de un conjunto de pasos (operaciones. .. Características de un Algoritmo Escrito por Administrator El científico de computación Donald Knuth ofreció una lista de cinco propiedades. no puede ejecutarse hasta que se implementa. "Cada paso de un algoritmo debe estar precisamente definido. instrucciones. dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista bien definida. los cuales muestran algoritmos para usar el aparato en cuestión o inclusive en las instrucciones que recibe un trabajador por parte de su patrón. Precisión. "También se espera que un algoritmo sea eficaz. susceptible de ser ejecutado (o compilado o interpretado). ciencias de la computación. También existen ejemplos de índole matemáticos. proceso y salida. Dado un estado inicial y una entrada. ordenada y finita de operaciones que permite hallar la solución a un problema. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas". y disciplinas relacionadas. aunque similar y obviamente relacionado. si se sigue el mismo proceso más de una vez. o dinámicamente mientras el algoritmo corre. debe ser determinista. Su importancia radica en mostrar la manera de llevar a cabo procesos y resolver mecánicamente problemas matemáticos o de otro tipo. ya sea en un lenguaje de programación.Algoritmo? Escrito por Administrator En matemáticas.. En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas. con excepción de los algoritmos probabilistas. los algoritmos reciben una entrada y la transforman en una salida. o en algún otro modelo de computación. para que un algoritmo pueda ser considerado como tal. 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". y su definición queda formalizada por el modelo computacional de la Máquina de Turing. en un aparato mecánico. el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos. 5. las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso". El concepto de algoritmo. PARTES DE UN ALGORITMO Todo algoritmo debe obedecer a la estructura básica de un sistema. un algoritmo (del latín. que son ampliamente aceptadas como requisitos para un algoritmo: 1. tener un número finito de instrucciones y debe acabar. Algunos ejemplos se encuentran en los instructivos (manuales de usuario). Entrada. carece de rigor formal. A partir del carácter finito y de la salida se deduce que ante una misma situación inicial (o valores de entrada) un algoritmo debe proporcionar siempre el mismo resultado (o salida). Knuth admite que. Al igual que las funciones matemáticas. usando papel y lápiz. se llega siempre al mismo resultado. órdenes. Eficacia. Carácter finito. como el algoritmo de la división para calcular el cociente de dos números. a través de pasos sucesivos y bien definidos se llega a un estado final.. 2. o "suficientemente básicas". Salida. comportándose como una caja negra. el segundo es ese conjunto de operaciones especificadas en un determinado lenguaje de programación y para un computador concreto. Un algoritmo.) orientados a la resolución de un problema. Sin embargo. 3. en un circuito eléctrico. "de manera rigurosa y no ambigua".

El usar pseudocódigo y diagramas de flujo evita muchas ambiguedades del lenguaje natural. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas.Dichas expresiones son formas más estructuradas para representar algoritmos. diagramas de flujo y lenguajes de programación entre otros. PROCESO: Pasos necesarios para obtener la solución del problema o la situación planteada. incluyendo al lenguaje natural. Medios de Expresión Escrito por Administrator Los algoritmos pueden ser expresados de muchas maneras. no obstante. a los datos necesarios que requiere el proceso para ofrecer los resultados esperados. se matienen independientes de un lenguaje de programación. pseudocódigo. SALIDA: Resultados arrojados por el proceso como solución. Diagrama de Flujo Escrito por Administrator .Donde: ENTRADA: Corresponde al insumo.

normalmente se utiliza en las fases de análisis o diseño de software. es decir. usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.Los diagramas de flujo son descripciones gráficas de algoritmos. Forma parte de las distintas herramientas de la Ingeniería de Software. pero sin llegar a la rigidez de sintaxis de estos ni a la fluidez del lenguaje coloquial. Una idea de un jefe de programación a su personal). descripción de un lenguaje y descripción de procesos a personas ajenas a la computación. con la misma validez semántica. No hay ningún compilador o interprete de pseudocódigo informático (en el caso de que lo hubiera serían los lectores de dicho pseudocódigo informático. Por su facilidad de lectura son usados como introducción a los algoritmos. Ejemplo. Su objetivo es permitir que el programador se centre en los aspectos lógicos de la solución a un problema. instrucciones de programación y palabras clave que definen las estructuras básicas. Ejemplo de Diagrama de Flujo: <!--[if !vml]--><!--[endif]--> Pseudocódigo Escrito por Administrator Un pseudocódigo (falso lenguaje). El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje común. No siendo el pseudocódigo un lenguaje formal. Los diagramas de flujo son usados para representar algoritmos pequeños. es una serie de normas léxicas y gramaticales parecidas a la mayoría de los lenguajes de programación. Cálculo de bonificación. Es una herramienta ágil para el estudio y diseño de aplicaciones. ya que abarcan mucho espacio y su construcción es laboriosa. de tercera generación. o en el estudio de un algoritmo. por ej. pero las similitudes con la mayoría de los lenguajes informáticos lo hacen fácilmente convertible. Esto permite codificar un programa con mayor agilidad que en cualquier lenguaje de programación. veamos un ejemplo. que podríamos definir como: lenguaje imperativo. Pseudocódigo = Pseudo (Supuesto) + Código (Instrucción). según el método de programación estructurada. y por tanto no puede ser ejecutado en un ordenador. varían de un programador a otro. no hay una estructura semántica ni arquitectura estándar. .

Edad Si Edad >= 18 INCENTIVO = SUELDO * 0. Mejora la claridad de la solución de un problema. En los procesos de aprendizaje de los alumnos de programación. 3. Nombre.40 Fin si MONTOTOTAL = SUELDO + INCENTIVO IMPRIMIR RESULTADOS Fin Ventajas de utilizar un Pseudocódigo a un diagrama de flujo 1.Inicio Declaración de variables Leer Datos hasta fin_ archivo Cédula.50 De lo contrario INCENTIVO = SUELDO * 0. Si se siguen las reglas de identación se puede observar claramente los niveles en la estructura del programa. que los que se inician en esto con la modalidad Diagramas de Flujo). . Es más sencilla la tarea de pasar de pseudocódigo a un lenguaje de programación formal. Permite representar de forma fácil operaciones repetitivas complejas. 4. 2. estos están más cerca del paso siguiente (codificación en un lenguaje determinado. 5.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->