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

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. que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida). Un algoritmo funciona en tiempo discretizado –paso a paso–. entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual. en general. por ejemplo el método de Newton y la .3 1 En general. es decir. 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. Por ejemplo. símbolos o gráficas mientras que. donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular. un algoritmo es cualquier cosa que funcione paso a paso. no existe ningún consenso definitivo en cuanto a la definición formal de algoritmo.• 8 Véase también o 8. Exploración acotada. 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. 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).4 Disciplinas relacionadas 9 Enlaces externos • Definición formal En general.2 Técnicas de diseño de algoritmos o 8.1 2 3 4 5 6 Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. es decir. 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. Esta amplia definición abarca tanto a algoritmos prácticos como aquellos que solo funcionan en teoría. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto. Estado abstracto.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.1 Tipos de algoritmos según su función o 8. los algoritmos funcionan sobre una vasta cantidad de estructuras de datos. estos modelos están sujetos a un tipo particular de datos como son números.3 Temas relacionados o 8. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita.

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

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

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

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

Por ejemplo. el análisis de los algoritmos se centra en los principios básicos del algoritmo. El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación y. Es decir. 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. mientras que otros consideran procedimientos que podrían ejecutarse eternamente sin pararse. De esta forma. Así. [editar] Ejemplo de algoritmo El problema consiste en encontrar el máximo de un conjunto de números. comparte las características de las disciplinas matemáticas. suponiendo el caso en el que existiera algún dispositivo físico que fuera capaz de funcionar eternamente. hasta que evalúe el siguiente dígito binario. 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. . En este último caso. en la mayoría de los casos. en ese sentido. Para un ejemplo más complejo véase Algoritmo de Euclides. por eso. 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. dado un conjunto se pide encontrar m tal que para todo elemento x que pertenece al conjunto C. Sin pérdida de generalidad se puede asumir que dicho conjunto no es vacío y que sus elementos están numerados como . Si se implementa correctamente. Finalmente. su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación. se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. se tiene el problema de encontrar el número más grande. Algunos escritores restringen la definición de algoritmo a procedimientos que deben acabar en algún momento. 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. [editar] Descripción de alto nivel Dado un conjunto finito C de números. Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal como Lexico. en cualquier otro caso. 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. 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.[editar] Análisis de algoritmos Artículo principal: Análisis de algoritmos Como medida de la eficiencia de un algoritmo. no en los de la implementación particular. cuyos códigos pueden estar en el idioma del programador.

luego. el máximo de C). ↑ a b c d e Brassard. Madrid: PRENTICE HALL. se asigna su valor al máximo. se asume que el primer elemento (c0) es el máximo. ↑ a b Real Academia Española. En el caso que un elemento sea mayor que el máximo. se recorre el conjunto y se compara cada valor con el valor del máximo número encontrado hasta ese momento. i++) if (c[i] > m) m = c[i]. for (i = 1.Para encontrar el elemento máximo. Diccionario de la lengua española "Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. "devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso. 2. ISBN 84-89660-00-X. Cuando se termina de recorrer la lista. [editar] Implementación En lenguaje C++: int max(int c[]. Fundamentos de Algoritmia. i < n. return m. int n){ int i. [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. Bratley. } [editar] Referencias 1. Paul (1997). m = c[0]. Gilles. el máximo número que se ha encontrado es el máximo de todo el conjunto." .

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

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

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

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

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

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

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

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

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

No reproducir. para dar solución a un problema específico. se pueden acomodar primero los utiles escolares y luego vestirse. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir. Por lo cual. 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. Por Wilder Urbaez Atención: Contenido exclusivo de DesarrolloWeb. Principales conceptos de este manual. . los pasos 3 y 4 pudieron haberse intercambiado. el alumno debe tener buenas bases que le sirvan para poder crear de manera fácil y rápida sus programas. así como una introducción a sus contenidos. 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. Contenido Los posteriores artículos mostrarán el desarrollo del tema de algoritmo a manera de curso.De la misma manera. facilitarle el desarrollo de su capacidad analítica y creadora. dado parte importante en el proceso del tema en cuestión. Copyright. El desarrollo de algoritmos es un tema fundamental en el diseño de programas o soluciones. 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. El algoritmo. es decir. La siguiente documentación pueden servir de apoyo a tutores o profesores. en su labor cotidiana de enseñanza y al estudiante. ¿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.com.

• 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). Tipos de Lenguajes Algorítmicos • Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo). 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 .

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

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

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

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

Sign up to vote on this title
UsefulNot useful