Algoritmo
Algoritmo
Algoritmo
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.
Notas:-
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.
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 Véase también
o 8.1 Tipos de algoritmos según su función
o 8.2 Técnicas de diseño de algoritmos
o 8.3 Temas relacionados
o 8.4 Disciplinas relacionadas
• 9 Enlaces externos
Definición formal
En general, no existe ningún consenso definitivo en cuanto a la definición formal de
algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un
problema abstracto, es decir, que un número finito de pasos convierten los datos de un
problema (entrada) en una solución (salida).1 2 3 4 5 6 Sin embargo cabe notar que
algunos algoritmos no necesariamente tienen que terminar o resolver un problema en
particular. Por ejemplo, una versión modificada de la criba de Eratóstenes que nunca
termine de calcular números primos no deja de ser un algoritmo.7
En resumen, un
algoritmo es cualquier cosa que funcione
paso a paso, donde cada paso se pueda describir sin
ambigüedad y sin hacer referencia a una computadora
en particular, y además tiene un límite fijo en cuanto a
la cantidad de datos que se pueden leer/escribir en un
solo paso. Esta amplia definición abarca tanto a algoritmos prácticos como
aquellos que solo funcionan en teoría, por ejemplo el método de Newton y la
eliminación de Gauss-Jordan funcionan, al menos en principio, con números de
precisión infinita; sin embargo no es posible programar la precisión infinita en una
computadora, y no por ello dejan de ser algoritmos.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, en un lenguaje de programación suficientemente general):10
Diagrama de flujo
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 usados para representar algoritmos pequeños, ya que
abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son
usados como introducción a los algoritmos, descripción de un lenguaje y descripción de
procesos a personas ajenas a la computación.
[editar] Pseudocódigo
[editar] Implementación
Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los
algoritmos pueden ser implementados en otros medios, como una red neuronal, un
circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se
diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de
multiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchas
formas de resolver la raíz cuadrada son sólo algunos ejemplos.
[editar] Variable
Ejemplo:
...
i:=1;
readln(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...
La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. 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. La asignación de esto consiste, en el paso de
valores o resultados a una zona de la memoria. Dicha zona será reconocida con el
nombre de la variable que recibe el valor. La asignación se puede clasificar de la
siguiente forma:
1. Simples: Consiste en pasar un valor constante a una variable (a <= 15)
2. Contador: Consiste en usarla como un verificador del numero de veces que se
realiza un proceso (a <= a + 1)
3. Acumulador: Consiste en usarla como un sumador en un proceso (a <= a + b)
4. De trabajo: Donde puede recibir el resultado de una operación matemática que
involucre muchas variables (a <= c + b*2/4).
Inicio
...
int b, h, a;
printf("Diga la base", b);
scanf(%i, b);
printf("Diga la altura", h);
scanf(%i, h)
a := (b*h)/2
printf("El área del triángulo es de", a)
...
Fin
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). Más aún, los datos se pueden
representar a su vez como secuencias de bits, y en general, de símbolos cualesquiera.1 9
11
Como cada secuencia de bits representa a un número natural (véase Sistema binario),
entonces los algoritmos son en esencia funciones de los números naturales en los
números naturales que sí se pueden calcular. 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.
En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando
entran a un bucle infinito. Cuando esto ocurre, el algoritmo nunca devuelve ningún
valor de salida, y podemos decir que la función queda indefinida para ese valor de
entrada. Por esta razón se considera que los algoritmos son funciones parciales, es decir,
no necesariamente definidas en todo su dominio de definición.
Cuando una función puede ser calculada por medios algorítmicos, sin importar la
cantidad de memoria que ocupe o el tiempo que se tarde, se dice que dicha función es
computable. No todas las funciones entre secuencias datos son computables. El
problema de la parada es un ejemplo.
[editar] Análisis de algoritmos
Artículo principal: Análisis de algoritmos
El algoritmo puede ser escrito de una manera más formal en el siguiente pseudocódigo:
función max(C)
Sobre la notación:
[editar] Implementación
En lenguaje C++:
[editar] Referencias
1. ↑ a b c d e Brassard, Gilles; Bratley, Paul (1997). Fundamentos de Algoritmia.
Madrid: PRENTICE HALL. ISBN 84-89660-00-X.
2. ↑ a b Real Academia Española. Diccionario de la lengua española "Conjunto
ordenado y finito de operaciones que permite hallar la solución de un
problema."
3. ↑ a b Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford
(2009). Introduction to algorithms. Cambridge, Massachusetts: The MIT Press.
ISBN 978-0-262-53305-8.
4. ↑ Ralph P. Grimaldi (1998). «Propiedades de los números enteros: Inducción
matemática». Matemáticas Discreta y Combinatoria. México: Addison Wesley
Longman de México. ISBN 968-444-324-2.
5. ↑ Johnsonbaugh, Richard (2005). «Introducción a la teoría de números».
Matemáticas Discretas. México: PEARSON EDUCACIÓN. ISBN 970-26-0637-3.
6. ↑ Carl Reynolds & Paul Tymann (2008). Schaum's Outline of Principles of
Computer Science. McGraw-Hill. ISBN 978-0-07-146051-4.
7. ↑ a b Gurevich, Yuri (2000). «Sequential Abstract State Machines capture
Sequential Algorithms». ACM Transactions on Computational Logic 1 (1). ISSN
1529-3785, 77-111. http://research.microsoft.com/en-
us/um/people/gurevich/Opera/141.pdf.
8. ↑ John E. Savage (1987). The Complexity of Computing. Krieger Publishing Co..
ISBN 089874833X.
9. ↑ a b [|Sipser, Michael] (2005). Introduction to the Theory of Computation (2
edición). Course Technology. ISBN 978-0534950972.
10. ↑ a b Nachum Dershowitz & Yuri Gurevich (2008). «A natural axiomatization of
computability and proof of Church's Thesis». Bulletin of Symbolic Logic 14 (3).
ISSN 10798986, 299-350. http://research.microsoft.com/en-
us/um/people/gurevich/Opera/188.pdf.
11. ↑ [|Kelley, Dean] (1995). Teoría de Autómatas y Lenguajes Formales. Prentice
Hall. ISBN 0-13-497777-7.
[editar] Bibliografía
• Fundamentos de Algoritmia, G. Brassard y P. Bratley. (ISBN 848966000)
• The Art of Computer Programming, Knuth, D. E. [quien fue también, el creador
del TeX]
• Introduction to Algorithms (2nd ed), Cormen, T. H., Leiserson, C. E., Rivest, R.
L. y Stein, C.
• Introduction to Algorithms. A Creative Approach, Mamber, U.
• Algorithms in C (3r ed), Sedgewick, R. (también existen versiones en C++ y
Java)
• The Design and Analysis of Computer Algorithms, Aho, A.
• Algoritmo de ordenamiento
• Algoritmo de búsqueda
¿Que es un Algoritmo?
11Mar07
Definicion: Algoritmo
Caracteristicas:
Historia:
La palabra algoritmo proviene del nombre del matemático llamado Abu Abdullah
Muhammad bin Musa al-Khwarizmi (hay muchas variantes para el nombre al usar el
alfabeto latin, tales como Al-Khorezmi, Al-Khwarizmi, Al-Khawarizmi, Al-
Khawaritzmi o Al-Khowarizmi) que vivió entre los siglos VIII y IX.
Por esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este
concepto esté asociado a su nombre. Al-Khorezmi fue sin duda el primer pensador
algorítmico.
Referencias:
ALGORITMO
CARACTERÍSTICAS DE UN ALGORITMO
A. Debe ser Preciso; Esto es, debe especificar sin ambigüedad el orden en
que se deben ejecutar las instrucciones.
B. Debe estar Definido; Esto es, cada vez que se ejecute bajo las mismas
condiciones, la secuencia de ejecución deberá ser la misma
proporcionándonos el mismo resultado.
C. Debe ser Finito; Esto es, siempre que sea adecuado se realizarán un
número finito de instrucciones, en un tiempo finito y requiriendo una
cantidad finita de esfuerzo.
REPRESENTACIÓN DE ALGORITMOS
Pseudocódigo
El pseudocódigo es un forma de representar un algoritmo, mediante sentencias similares
al lenguaje natural, pero con una precisión mayor.
A. Todos los algoritmos comenzarán con una sentencia algoritmo, Esto es,
una línea con la palabra clave algoritmo seguida por el nombre del
algoritmo. Por ejemplo:
Algoritmo EJEMPLO
Constante PI 3.1416
Constante UNO 1
PRINCIPAL
Inicio
.....
Fin
Flotante X, Y, Z
Enteras I, J, K
/* Este es un comentario*/
Anuncios Google:
Registre su Dominio
Cree su web propio con SiteBuilder Hosting, Diseño, Asesoría y Más! | www.dominio.com
ALGORITMO
Un algoritmo constituye una guia para resolver un problema dado, sin indicar la
solucion exacta del mismo.
Tomemos por ejemplo las actividades que se realizan diariamente cuando vas a clases.
Una posible secuencia podria ser;
1. levantarse a las 6:00 a.m.
2. cepillarse los dientes
3. vestirse
4. acomodar los utiles escolares
5. desayunar
6. tomar el transporte
Por lo cual, el alumno debe tener buenas bases que le sirvan para poder crear de manera
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.
Existen una serie de documentación adicional para refuerzo conceptual, dado parte
¿QUÉ ES ALGORITMO?
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir,
¿TIPOS DE ALGORITMOS…?
• Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
• Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los
Lenguajes Algorítmicos
Un Lenguaje algorítmico es una serie de símbolos y reglas que se utilizan para describir de
(diagrama de flujo).
algoritmo (pseudocodigo).
INICIO
Edad: Entero
Lea Edad
FINSI
FIN
¿Qué es un
Algoritmo?
Escrito por Administrator
En matemáticas, ciencias de la computación, y disciplinas relacionadas, 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. Dado un estado inicial y una entrada, a través de
pasos sucesivos y bien definidos se llega a un estado final, obteniendo una solución. Los algoritmos son objeto
de estudio de la algoritmia, y su definición queda formalizada por el modelo computacional de la Máquina de
Turing.
Su importancia radica en mostrar la manera de llevar a cabo procesos y resolver mecánicamente problemas
matemáticos o de otro tipo. Al igual que las funciones matemáticas, los algoritmos reciben una entrada y la
transforman en una salida, comportándose como una caja negra. Sin embargo, para que un algoritmo pueda ser
considerado como tal, debe ser determinista, tener un número finito de instrucciones y debe acabar. Por
determinista se entiende que, si se sigue el mismo proceso más de una vez, se llega siempre al mismo resultado.
El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de
programa. Mientras el primero es la especificación de un conjunto de pasos (operaciones, instrucciones,
órdenes,...) orientados a la resolución de un problema, el segundo es ese conjunto de operaciones especificadas
en un determinado lenguaje de programación y para un computador concreto, susceptible de ser ejecutado (o
compilado o interpretado). Un algoritmo, estrictamente hablando, no puede ejecutarse hasta que se implementa,
ya sea en un lenguaje de programación, en un circuito eléctrico, en un aparato mecánico, usando papel y
lápiz, o en algún otro modelo de computación.
En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas. Algunos
ejemplos se encuentran en los instructivos (manuales de usuario), 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. También
existen ejemplos de índole matemáticos, como el algoritmo de la división para calcular el cociente de dos
números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o el
método de Gauss para resolver un Sistema lineal de ecuaciones.
Características de un
Algoritmo
Escrito por Administrator
El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son ampliamente
aceptadas como requisitos para un algoritmo:
1. Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos".
2. Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a
cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".
3. Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el
algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de
conjuntos específicos de objetos".
4. Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las
entradas".
5. Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones
a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser
hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel".
Knuth admite que, aunque su descripción pueda ser intuitivamente clara, carece de rigor formal, puesto que no
está exactamente claro qué significa "precisamente definido", "de manera rigurosa y no ambigua", o
"suficientemente básicas", y así sucesivamente.
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), con excepción de los algoritmos
probabilistas.
PARTES DE UN ALGORITMO
Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir: entrada, proceso y salida.
Donde:
ENTRADA: Corresponde al insumo, a los datos necesarios que requiere el proceso para ofrecer los resultados
esperados.
PROCESO: Pasos necesarios para obtener la solución del problema o la situación planteada.
Medios de
Expresión
Escrito por Administrator
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al
lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de
programación entre otros. Las descripciones en lenguaje natural tienden a ser
ambiguas y extensas.
Diagrama
de Flujo
Escrito por Administrator
Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con
flechas para indicar la secuencia de instrucciones y están regidos por ISO. Los diagramas de
flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su
construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los
algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la
computación.
<!--[if !vml]--><!--[endif]-->
Pseudocódigo
Escrito por Administrator
Un pseudocódigo (falso lenguaje), es una serie de normas léxicas y gramaticales parecidas a la mayoría de
los lenguajes de programación, pero sin llegar a la rigidez de sintaxis de estos ni a la fluidez del lenguaje
coloquial. Esto permite codificar un programa con mayor agilidad que en cualquier lenguaje de programación,
con la misma validez semántica, normalmente se utiliza en las fases de análisis o diseño de software, o en el
estudio de un algoritmo. Forma parte de las distintas herramientas de la Ingeniería de Software.
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 ej. Una idea de un jefe de programación a su personal), y por
tanto no puede ser ejecutado en un ordenador, pero las similitudes con la mayoría de los lenguajes informáticos
lo hacen fácilmente convertible.
El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje común, instrucciones de
programación y palabras clave que definen las estructuras básicas. Su objetivo es permitir que el programador se
centre en los aspectos lógicos de la solución a un problema.
No siendo el pseudocódigo un lenguaje formal, varían de un programador a otro, es decir, no hay una estructura
semántica ni arquitectura estándar. Es una herramienta ágil para el estudio y diseño de aplicaciones, veamos un
ejemplo, que podríamos definir como: lenguaje imperativo, de tercera generación, según el método de
programación estructurada.
Declaración de variables
Si Edad >= 18
De lo contrario
Fin si
IMPRIMIR RESULTADOS
Fin