Вы находитесь на странице: 1из 22

Algoritmo

Los diagramas de flujo sirven para representar algoritmos de manera grfica.

En matemticas, lgica, ciencias de la computacin y disciplinas relacionadas,


un algoritmo (del griego y latn, dixit algorithmus y ste a su vez del matemtico persa AlJuarismi1 ) es un conjunto prescrito 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 solucin. 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 patrn. Algunos
ejemplos en matemtica son el algoritmo de multiplicacin, para calcular el producto, el
algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de
Euclides para obtener el mximo comn divisor de dos enteros positivos, o el mtodo de
Gauss para resolver un sistema de ecuaciones lineales.
ndice
[ocultar]

1Definicin formal

2Medios de expresin de un algoritmo


o

2.1Diagrama de flujo

2.2Pseudocdigo

2.3Sistemas formales

2.4Implementacin

2.5Variables

2.6Estructuras secuenciales

3Algoritmos como funciones

4Anlisis de algoritmos

5Ejemplo de algoritmo
o

5.1Descripcin de alto nivel

5.2Descripcin formal

5.3Implementacin

6Vase tambin
o

6.1Tipos de algoritmos segn su funcin

6.2Tcnicas de diseo de algoritmos

6.3Temas relacionados

6.4Disciplinas relacionadas

7Referencias

8Bibliografa

9Enlaces externos

Definicin formal[editar]
En general, no existe ningn consenso definitivo en cuanto a la definicin formal de
algoritmo. Muchos autores los sealan como listas de instrucciones para resolver
un clculo o un problema abstracto, es decir, que un nmero finito de pasos convierten los
datos de un problema (entrada) en una solucin (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 versin modificada de la criba de Eratstenes que nunca
termine de calcular nmeros primos no deja de ser un algoritmo. 7
A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos
utilizando modelos matemticos. Esto fue realizado por Alonzo Church en 1936 con el
concepto de "calculabilidad efectiva" basada en su clculo lambda y por Alan
Turing basndose en la mquina de Turing. Los dos enfoques son equivalentes, en el
sentido en que se pueden resolver exactamente los mismos problemas con ambos
enfoques.8 9 Sin embargo, estos modelos estn sujetos a un tipo particular de datos como

son nmeros, smbolos o grficas mientras que, en general, los algoritmos funcionan sobre
una vasta cantidad deestructuras de datos.3 1 En general, la parte comn en todas las
definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no
consideremos algoritmos paralelos:7
Tiempo secuencial. Un algoritmo funciona en tiempo discretizado paso a paso,
definiendo as una secuencia de estados computacionales por cada entrada vlida
(la entrada son los datos que se le suministran al algoritmo antes de comenzar).
Estado abstracto. Cada estado computacional puede ser descrito formalmente
utilizando una estructura de primer orden y cada algoritmo es independiente de su
implementacin (los algoritmos son objetos abstractos) de manera que en un
algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.
Exploracin acotada. La transicin de un estado al siguiente queda
completamente determinada por una descripcin fija y finita; es decir, entre cada
estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y
limitada de trminos del estado actual.
En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde
cada paso se pueda describir sin ambigedad y sin hacer referencia a una
computadora en particular, y adems tiene un lmite fijo en cuanto a la
cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia
definicin abarca tanto a algoritmos prcticos como aquellos que solo
funcionan en teora, por ejemplo el mtodo de Newton y la eliminacin de
Gauss-Jordan funcionan, al menos en principio, con nmeros de precisin
infinita; sin embargo no es posible programar la precisin 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 funcin calculable se puede programar en una
mquina de Turing (o equivalentemente, en un lenguaje de programacin
suficientemente general):10
Aritmetizabilidad. Solamente operaciones innegablemente calculables estn
disponibles en el paso inicial.

Medios de expresin de un algoritmo[editar]


Los algoritmos pueden ser expresados de muchas maneras, incluyendo
al lenguaje natural, pseudocdigo, diagramas de flujo y lenguajes de
programacin entre otros. Las descripciones en lenguaje natural tienden a
ser ambiguas y extensas. El usar pseudocdigo y diagramas de flujo evita
muchas ambigedades del lenguaje natural. Dichas expresiones son
formas ms estructuradas para representar algoritmos; no obstante, se
mantienen independientes de un lenguaje de programacin especfico.
La descripcin de un algoritmo usualmente se hace en tres niveles:
1. Descripcin de alto nivel. Se establece el problema, se
selecciona un modelo matemtico y se explica el algoritmo de
manera verbal, posiblemente con ilustraciones y omitiendo
detalles.
2. Descripcin formal. Se usa pseudocdigo para describir la
secuencia de pasos que encuentran la solucin.
3. Implementacin. Se muestra el algoritmo expresado en un
lenguaje de programacin especfico o algn objeto capaz de
llevar a cabo instrucciones.

Tambin es posible incluir un teorema que demuestre que el algoritmo es


correcto, un anlisis de complejidad o ambos.

Diagrama de flujo[editar]

Diagrama de flujo que expresa un algoritmo para calcular la raz cuadrada de


un nmero
Artculo principal: Diagrama de flujo

Los diagramas de flujo son descripciones grficas de algoritmos; usan


smbolos conectados con flechas para indicar la secuencia de
instrucciones y estn regidos por ISO.
Los diagramas de flujo son usados para representar algoritmos pequeos,
ya que abarcan mucho espacio y su construccin es laboriosa. Por su
facilidad de lectura son usados como introduccin a los algoritmos,
descripcin de un lenguaje y descripcin de procesos a personas ajenas a
la computacin.

Pseudocdigo[editar]
Artculo principal: Pseudocdigo

El pseudocdigo (falso lenguaje, el prefijo pseudo significa falso) es una


descripcin de alto nivel de un algoritmo que emplea una mezcla de
lenguaje natural con algunas convenciones sintcticas propias de
lenguajes de programacin, como asignaciones, ciclos y condicionales,
aunque no est regido por ningn estndar. Es utilizado para describir
algoritmos en libros y publicaciones cientficas, y como producto
intermedio durante el desarrollo de un algoritmo, como los diagramas de
flujo, aunque presentan una ventaja importante sobre estos, y es que los
algoritmos descritos en pseudocdigo requieren menos espacio para
representar instrucciones complejas.
El pseudocdigo 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 implementacin. Programadores
diferentes suelen utilizar convenciones distintas, que pueden estar
basadas en la sintaxis de lenguajes de programacin concretos. Sin
embargo, el pseudocdigo, en general, es comprensible sin necesidad de

conocer o utilizar un entorno de programacin especfico, y es a la vez


suficientemente estructurado para que su implementacin se pueda hacer
directamente a partir de l.
As el pseudocdigo cumple con las funciones antes mencionadas para
representar algo abstracto los protocolos son los lenguajes para la
programacin. Busque fuentes ms precisas para tener mayor
comprensin del tema.

Sistemas formales[editar]
La teora de autmatas y la teora de funciones recursivas proveen
modelos matemticos que formalizan el concepto de algoritmo. Los
modelos ms comunes son la mquina de Turing, mquina de
registro yfunciones -recursivas. Estos modelos son tan precisos como
un lenguaje mquina, careciendo de expresiones coloquiales o
ambigedad, sin embargo se mantienen independientes de cualquier
computadora y de cualquier implementacin.

Implementacin[editar]
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 elctrico o un aparato mecnico y
elctrico. Algunos algoritmos inclusive se disean especialmente para
implementarse usando lpiz y papel. El algoritmo de
multiplicacin tradicional, el algoritmo de Euclides, la criba de
Eratstenes y muchas formas de resolver la raz cuadrada son slo
algunos ejemplos.

Variables[editar]
Son elementos que toman valores especficos de un tipo de datos
concreto. La declaracin de una variable puede realizarse comenzando
con var. Principalmente, existen dos maneras de otorgar valores iniciales
a variables:
1. Mediante una sentencia de asignacin.
2. Mediante un procedimiento de entrada de datos (por ejemplo:
'read').
Ejemplo:
...
i:=1;
read(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...

Estructuras secuenciales[editar]
La estructura secuencial es aquella en la que una accin 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 asignacin 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 asignacin 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 nmero 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 operacin
matemtica que involucre muchas variables (a c + b*1/2).
Un ejemplo de estructura secuencial, como obtener el rea de un
tringulo:
Inicio
...
float b, h, a;
printf("Diga la base");
scanf("%f", &b);
printf("Diga la altura");
scanf("%f", &h);
a = (b*h)/2;
printf("El rea del tringulo es %f", a)
...
Fin

Algoritmos como funciones[editar]


Artculo principal: Teora de la computabilidad

Esquemtica de un algoritmo solucionando un problema de ciclo hamiltoniano.

Un algoritmo se puede concebir como una funcin que transforma los


datos de un problema (entrada) en los datos de una solucin (salida). Ms
an, los datos se pueden representar a su vez como secuencias de bits, y
en general, de smbolos cualesquiera.1 9 11 Como cada secuencia de bits
representa a un nmero natural (vase Sistema binario), entonces los
algoritmos son en esencia funciones de los nmeros naturales en los
nmeros naturales que s se pueden calcular. Es decir que todo algoritmo
calcula una funcin donde cada nmero natural es lacodificacin de un
problema o de una solucin.

En ocasiones los algoritmos son susceptibles de nunca terminar, por


ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre, el
algoritmo nunca devuelve ningn valor de salida, y podemos decir que la
funcin queda indefinida para ese valor de entrada. Por esta razn se
considera que los algoritmos son funciones parciales, es decir, no
necesariamente definidas en todo su dominio de definicin.
Cuando una funcin puede ser calculada por medios algortmicos, sin
importar la cantidad de memoria que ocupe o el tiempo que se tarde, se
dice que dicha funcin es computable. No todas las funciones entre
secuencias datos son computables. El problema de la parada es un
ejemplo.

Anlisis de algoritmos[editar]
Artculo principal: Anlisis de algoritmos

Como medida de la eficiencia de un algoritmo, se suelen estudiar los


recursos (memoria y tiempo) que consume el algoritmo. El anlisis de
algoritmos se ha desarrollado para obtener valores que de alguna forma
indiquen (o especifiquen) la evolucin del gasto de tiempo y memoria en
funcin del tamao de los valores de entrada.
El anlisis y estudio de los algoritmos es una disciplina de las ciencias de
la computacin y, en la mayora de los casos, su estudio es
completamente abstracto sin usar ningn tipo de lenguaje de
programacin ni cualquier otra implementacin; por eso, en ese sentido,
comparte las caractersticas de las disciplinas matemticas. As, el anlisis
de los algoritmos se centra en los principios bsicos del algoritmo, no en
los de la implementacin particular. Una forma de plasmar (o algunas
veces "codificar") un algoritmo es escribirlo en pseudocdigo o utilizar un
lenguaje muy simple tal como Lexico, cuyos cdigos pueden estar en el
idioma del programador.
Algunos escritores restringen la definicin de algoritmo a procedimientos
que deben acabar en algn momento, mientras que otros consideran
procedimientos que podran ejecutarse eternamente sin pararse,
suponiendo el caso en el que existiera algn dispositivo fsico que fuera
capaz de funcionar eternamente. En este ltimo caso, la finalizacin con
xito del algoritmo no se podra definir como la terminacin de este con
una salida satisfactoria, sino que el xito estara definido en funcin de las
secuencias de salidas dadas durante un periodo de vida de la ejecucin
del algoritmo. Por ejemplo, un algoritmo que verifica que hay ms ceros
que unos en una secuencia binaria infinita debe ejecutarse siempre para
que pueda devolver un valor til. Si se implementa correctamente, el valor
devuelto por el algoritmo ser vlido, hasta que evale el siguiente dgito
binario. De esta forma, mientras evala la siguiente secuencia podrn
leerse dos tipos de seales: una seal positiva (en el caso de que el
nmero de ceros sea mayor que el de unos) y una negativa en caso
contrario. Finalmente, la salida de este algoritmo se define como la
devolucin de valores exclusivamente positivos si hay ms ceros que
unos en la secuencia y, en cualquier otro caso, devolver una mezcla de
seales positivas y negativas.

Ejemplo de algoritmo[editar]
El problema consiste en encontrar el mximo de un conjunto de nmeros.
Para un ejemplo ms complejo vase Algoritmo de Euclides.

Descripcin de alto nivel[editar]

Dado un conjunto finito de nmeros, se tiene el problema de encontrar el


nmero ms grande. Sin prdida de generalidad se puede asumir que
dicho conjunto no es vaco y que sus elementos estn numerados como .
Es decir, dado un conjunto se pide encontrar tal que para todo
elemento que pertenece al conjunto .
Para encontrar el elemento mximo, se asume que el primer elemento ()
es el mximo; luego, se recorre el conjunto y se compara cada valor con
el valor del mximo nmero encontrado hasta ese momento. En el caso
que un elemento sea mayor que el mximo, se asigna su valor al mximo.
Cuando se termina de recorrer la lista, el mximo nmero que se ha
encontrado es el mximo de todo el conjunto.

Descripcin formal[editar]
El algoritmo puede ser escrito de una manera ms formal en el
siguiente pseudocdigo:
Algoritmo Encontrar el mximo de un conjunto
funcin max()
// es un conjunto no vaco de nmeros//
// es el nmero de elementos de //

para hasta hacer


si entonces

devolver
Sobre la notacin:

"" representa una asignacin: significa que la variable toma el


valor de ;

"devolver" termina el algoritmo y devuelve el valor a su derecha (en


este caso, el mximo de ).

Implementacin[editar]
En lenguaje C++:
int max(int c[], int n)
{
int i, m = c[0];
for (i = 1; i < n; i++)
if (c[i] > m) m = c[i];
return m;
}

Vase tambin[editar]

Tipos de algoritmos segn su funcin[editar]

Algoritmo de ordenamiento

Algoritmo de bsqueda

Tcnicas de diseo de algoritmos[editar]

Algoritmos voraces (greedy): seleccionan los elementos ms


prometedores del conjunto de candidatos hasta encontrar una
solucin. En la mayora de los casos la solucin no es ptima.

Algoritmos paralelos: permiten la divisin de un problema en


subproblemas de forma que se puedan ejecutar de forma simultnea
en varios procesadores.

Algoritmos probabilsticos: algunos de los pasos de este tipo de


algoritmos estn en funcin de valores pseudoaleatorios.

Algoritmos determinsticos: el comportamiento del algoritmo es lineal:


cada paso del algoritmo tiene nicamente un paso sucesor y otro
antecesor.

Algoritmos no determinsticos: el comportamiento del algoritmo tiene


forma de rbol y a cada paso del algoritmo puede bifurcarse a
cualquier nmero de pasos inmediatamente posteriores, adems
todas las ramas se ejecutan simultneamente.

Divide y vencers: dividen el problema en subconjuntos disjuntos


obteniendo una solucin de cada uno de ellos para despus unirlas,
logrando as la solucin al problema completo.

Metaheursticas: encuentran soluciones aproximadas (no ptimas) a


problemas basndose en un conocimiento anterior (a veces llamado
experiencia) de los mismos.

Programacin dinmica: intenta resolver problemas disminuyendo su


coste computacional aumentando el coste espacial.

Ramificacin y acotacin: se basa en la construccin de las


soluciones al problema mediante un rbol implcito que se recorre de
forma controlada encontrando las mejores soluciones.

Vuelta atrs (backtracking): se construye el espacio de soluciones del


problema en un rbol que se examina completamente, almacenando
las soluciones menos costosas.

Temas relacionados[editar]

Cota inferior asinttica

Cota ajustada asinttica

Complejidad computacional

Diagramas de flujo

Diagrama Nassi-Shneiderman

Mquina de Turing

Disciplinas relacionadas[editar]

Ciencias de la Computacin

Anlisis de algoritmos

Complejidad computacional

Informtica

Inteligencia artificial

Investigacin operativa

Matemticas

Programacin

Referencias[editar]
1.

Saltar a:a b c d e Brassard, Gilles; Bratley, Paul (1997). Fundamentos de


Algoritmia. Madrid: PRENTICE HALL. ISBN 84-89660-00-X.

2.

Saltar a:a b Real Academia Espaola. Diccionario de la lengua


espaola "Conjunto ordenado y finito de operaciones que permite hallar
la solucin de un problema."

3.

Saltar a: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.

Volver arriba Ralph P. Grimaldi (1998). Propiedades de los nmeros


enteros: Induccin matemtica. Matemticas Discreta y Combinatoria.
Mxico: Addison Wesley Longman de Mxico. ISBN 968-444-324-2.

5.

Volver arriba Johnsonbaugh, Richard (2005). Introduccin a la teora


de nmeros. Matemticas Discretas. Mxico: PEARSON
EDUCACIN. ISBN 970-26-0637-3.

6.

Volver arriba Carl Reynolds & Paul Tymann (2008). Schaum's Outline of
Principles of Computer Science. McGraw-Hill. ISBN 978-0-07-146051-4.

7.

Saltar a:a b Gurevich, Yuri (2000). Sequential Abstract State Machines


capture Sequential Algorithms. ACM Transactions on Computational
Logic 1 (1): 77-111. ISSN 1529-3785.

8.

Volver arriba John E. Savage (1987). The Complexity of Computing.


Krieger Publishing Co. ISBN 089874833X.

9.

Saltar a:a b Sipser, Michael (2005). Introduction to the Theory of


Computation (2 edicin). Course Technology. ISBN 978-0534950972.

10. Saltar a:a b Nachum Dershowitz & Yuri Gurevich (2008). A natural
axiomatization of computability and proof of Church's Thesis. Bulletin of
Symbolic Logic 14 (3): 299-350. ISSN 1079-8986.
11. Volver arriba Kelley, Dean (1995). Teora de Autmatas y Lenguajes
Formales. Prentice Hall. ISBN 0-13-497777-7.

Bibliografa[editar]

Aho, A. The Design and Analysis of Computer Algorithms

Cormen, T. H., Leiserson, C. E., Rivest, R. L. y Stein, C. Introduction


to Algorithms (2nd ed.)

Brassard, G. y P. Bratley. Fundamentos de Algoritmia, (ISBN


848966000X)

Knuth, D. E. The Art of Computer Programming, [quien fue tambin, el


creador del TeX]

Mamber, U. Introduction to Algorithms. A Creative Approach

Sedgewick, R. Algorithms in C (3r ed) (tambin existen versiones en


C++ y Java)

Enlaces externos[editar]

Wikilibros alberga un libro o manual sobre Algoritmia.


Wikcionario tiene definiciones y otra informacin sobre algoritmo.

Algoritmos para principiantes

Portal de algoritmia

Tcnicas de Diseo de Algoritmos manual que explica y ejemplifica


los distintos paradigmas de diseo de algoritmos. Rosa Guerequeta y
Antonio Vallecillo (profesores de la Universidad de Mlaga).

Transparencias de la asignatura "Esquemas Algortmicos", Campos, J.

Apuntes y problemas de Algortmica por Domingo Gimnez Cnovas

Curso de Diseo de Algoritmos de Carlos Pes

DEFINICIN DE

ALGORITMO
En el rabe es donde podemos encontrar el origen etimolgico del trmino
algoritmo que ahora vamos a analizar en profundidad. Ms exactamente se
halla en el nombre del matemtico Al-Khwarizmi, que naci en la Edad
Media en una de las zonas de lo que hoy se conoce como Uzbiekistn, en
Asia central.

Algoritmo
En Bagdad fue donde este desarroll gran parte de su carrera y es que
hasta all se traslad para, por orden del califa, crear un centro superior de
investigaciones cientficas que se dio en llamar Casa de la Sabidura.
Diversos tratados de lgebra o astronoma fueron algunos de los trabajos
que realiz dicho sabio que tambin ha dado lugar a la creacin de otra
serie de trminos cientficos tales como lgebra o guarismo.
Tal fue la importancia que tuvo dicho personaje histrico que actualmente
est considerado no slo como el padre del lgebra sino tambin como
quien se encarg de introducir nuestro sistema de numeracin.
Se denomina algoritmo a un grupo finito de operaciones organizadas de
manera lgica y ordenada que permite solucionar un determinado
problema. Se trata de una serie de instrucciones o reglas establecidas que,
por medio de una sucesin de pasos, permiten arribar a un resultado o
solucin.

Segn los expertos en matemtica, los algoritmos permiten trabajar a partir


de un estado bsico o inicial y, tras seguir los pasos propuestos, llegar a una
solucin. Cabe resaltar que, si bien los algoritmos suelen estar asociados al
mbito matemtico (ya que permiten, por citar casos concretos, averiguar el
cociente entre un par de dgitos o determinar cul es el mximo comn
divisor entre dos cifras pertenecientes al grupo de los enteros), aunque no
siempre implican la presencia de nmeros.
Adems de todo lo expuesto, en el mbito matemtico, y cuando estamos
decididos a llevar a cabo la descripcin de uno de esos algoritmos hay que
tener en cuenta que se puede efectuar mediante tres niveles. As, en primer
lugar, nos encontramos con el de alto nivel, lo que es la descripcin formal y
finalmente la tarea de implementacin.

Asimismo tampoco podemos pasar por alto que los algoritmos se pueden
expresar a travs de lenguajes de programacin, pseudocdigo, el lenguaje
natural y tambin a travs de los conocidos como diagramas de flujo.
Un manual de instrucciones para el funcionamiento de un electrodomstico
y una serie de rdenes del jefe a un empleado para desarrollar una cierta
tarea tambin pueden incluir algoritmos.
Esta amplitud de significado permite apreciar que no existe una definicin
formal y nica de algoritmo. El trmino suele ser sealado como el nmero
fijo de pasos necesarios para transformar informacin de entrada (un
problema) en una salida (su solucin). De todas formas, algunos algoritmos
carecen de final o no resuelven un problema en particular.
Existen ciertas propiedades que alcanzan a todos los algoritmos, con
excepcin de los denominados algoritmos paralelos: el tiempo secuencial
(los algoritmos funcionan paso a paso), el estado abstracto (cada algoritmo
es independiente de su implementacin) y la exploracin acotada (la
transicin entre estados queda determinada por una descripcin finita y
fija).
Cabe mencionar por ltimo que los algoritmos son muy importantes en la
informtica ya que permiten representar datos como secuencias de bits. Un
programa es un algoritmo que indica a la computadora qu pasos
especficos debe seguir para desarrollar una tarea.

Lee todo en: Definicin de algoritmo - Qu es, Significado y Concepto


http://definicion.de/algoritmo/#ixzz4CdCyvAQ1

--------------------

1.

Pasos

2.

Tipos

3.

Anlisis del problema

4.

Diseo del algoritmo.

5.

Mandatos e instrucciones

6.

Variables vectores y matrices

7.

El programador disea un programa, para resolver un problema particular.

Disear es un proceso creativo.

El proceso de diseo de un programa consta de los siguientes pasos o etapas:

Pasos:
Pasos
1

Anlisis del problema

Diseo de algoritmo

Codificacin

Compilacin y ejecucin

Verificacin

Depuracin

Documentacin

Concepto
Algoritmo: es un mtodo para resolver un
problema mediante una serie de pasos
definidos, precisos y finitos.

Preciso: implica el orden de realizacin de cada uno


de los pasos
Definido: si se sigue dos veces, se obtiene el mismo
resultado.
Finito: Tiene un numero determinado de pasos,
implica que tiene un fin,

Tipos :
Mtodo
Algortmico

Heurstica:

Ejemplos
Los algoritmos se
pueden

Formulas

expresar por:
Diagramas de flujo
Norte-Sur,Top-Down

Pseudo cdigo

inicio
leer a,b,c
calcular
escribir permetro
fin

Quick Basic es un lenguaje de programacin estructurado y el algoritmo


se representara en seudo cdigo y/o diagrama de flujo.

1. Anlisis del problema:


Requiere la clara definicin del problema donde se indique que va hacer el
programa y cual ve a ser el resultado.
Debe detallarse las especificaciones de entrada y salida,
Los requisitos que definen el anlisis son :
Para ver el grfico seleccione la opcin "Descargar"
La ecuacin de segundo grado se define algebraicamente como :

La solucin general viene dada por la expresin algebraica : (Algoritmo)

Anlisis del problema

Def. del problema

Especif. de entrada

Especif. de salida

Entrada: por teclado

coef

Calculo

Expresin algebraica

team. cuadrtico

term. lineal

term. independiente

Codificacin en QBasic
X1=((-B+SQR(B^2-4*A*C))

X2=((-B-SQR(B^2-4*A*C))

Proceso:

Salida: Visualizacin de :Datos de entrada: A,B,C


Datos procesados: Raices: X1, X2
Variable
A,B,C
X1
X2

2.Diseo del algoritmo.

Anlisis de proceso implica que hace el programa.

Diseo implica como se hace o realiza la tarea (problema) solicitado

En el diseo:

El todo es la sumatoria de las partes.

Divide el todo en varias partes.

En la resolucin de un problema complejo, se divide en varios sub problemas y


seguidamente se vuelven a dividir los sub problemas en otros mas sencillos, hasta que
puedan implementarse en el computador.
Esta caracterstica define lo que se entiende como diseo descendente( Top-Down / NorteSur ) o diseo modular.
El proceso de ruptura del problema en cada etapa se llama refinamiento sucesivo.

Cada problema se resuelve mediante un modulo (subprograma) y tiene un solo


punto de entrada y un solo punto de salida.

Un programa bien diseado consta de un programa principal (modulo de nivel


mas alto) que llama a subprogramas (mdulos de nivel mas bajo), que a su vez pueden
llamar otros sub programas.

Los programas que se estructuran de esta forma, se dicen que tienen diseo modular y el
mtodo de romper el programa en modos pequeos se llamaprogramacin modular.
Los mdulos pueden ser planificados, codificados, compilados y depurados
independientemente pueden ser intercambiados entre si.
Este proceso implica la ejecucin de los siguientes pasos:
1

programar un modulo

comprobar un modulo

depurar el modulo

combinar el modulo con mdulos ante

este proceso convierte el resultado del anlisis del problema en un diseo modular con
refinamientos sucesivos que permiten una traduccin a un lenguaje que se denomina
diseo del algoritmo.
El algoritmo se puede representar por medio de dos formas :
Pseudo cdigo
Diagrama de flujo:
Pseudo cdigo: es el lenguaje de especificacin de algoritmos y tiene una estructura: Las
instrucciones se escriben en ingles o en palabras similares al ingles o espaol que facilitan
la escritura de programacin
Para la resolucin de una ecuacin de segundo grado se escribira
inicio
Introducir coeficientes a, b y c
Imprimir ttulos primera raz, segunda raz, no tiene solucin,
Calcular raz 1 y raz 2
Imprimir raz 1 y raz 2
Fin
Diagramas de flujo (flows charts): Es la representacin grafica del algoritmo; segn la
ANSI consta de una simbologia , que tiene los siguientes significados:
Para ver el grfico seleccione la opcin "Descargar" del men superior
Smbolos del Diagrama de flujo
Codificacin :
Programacin:
Windows/Dos/
Quick Basic = Editor de texto.
Programa: definicin:
conjunto de datos y sentencias:

Un programa tiene la forma


Para ver el grfico seleccione la opcin "Descargar"
En el editor de Quick Basic se escribira codificado el seudo cdigo
que tendra la forma:
REM Programa para calcular las soluciones
REM de una ecuacion de segundo grado
PRINT "Escriba los valores de A, B y C"
C$="Calculos"
INPUT " A,B,C", A, B, C
R = (B ^ 2 - 4 * A * C) ^ .5
LET X1 = (-B + R) / (2 * A)
LET X2 = (-B + R) / (2 * A)
PRINT
PRINT " A="; A, " B="; B, "C="; C
PRINT "X1="; X1, "X2="; X2
PRINT
END
En el Men

En la pantalla veramos:
Mandatos e instrucciones:
Mandato (command): es una orden aislada de efecto inmediato.
Ejemplo:
Mandato
RUN
LIST
SAVE.

Instruccin: es una orden contenida en un programa.


Ejemplo:

PRINT
INPUT

Edicin de un programa: un programa esta formado por lneas secuenciales que se ejecutan
en forma descendente (Up Down)
Para dar por terminada una lnea se pulsa la tecla Enter (Return) en cualquier parte de la
misma. Para cambiar una lnea basta volver a teclearla.

Se puede corregir una lnea (borrar, rescribir ) en pantalla o bien con el mandato
EDIT.

Se pueden incluir varias instrucciones en una misma lnea, separndolos por dos
puntos.

Una lnea de pantalla (cuarenta u ochenta posiciones) es diferente de una lnea de


programa (doscientos cincuenta y seis posiciones).

Modo Directo:
Modo Programa
Run
Ventana activa
Ventana inmediata

CLS

Recomendaciones:

Todo programa debe estar documentado con comentarios; la primera lnea debe
contener el titulo del programa. Los comentarios deben de ir precedidos de la palabra
clave REM o de un apostrofo ( )

Si una lnea ya tiene otras instrucciones, el comentario debe ir al final de la lnea.

Los comentarios solo aparecen en el listado del programa y no aparecen escritos en


la pantalla durante la ejecucin.

Constantes:
QBasic, trabaja con dos tipos de datos:

Datos
numricos:

alfanumricos

Las constantes alfanumricas pueden ser enteras o fraccionarias, se representan en


forma decimal; se puede emitir el cero a la izquierda del punto decimal. Ejemplo

3452

Estos son ejemplos de valores numricos de punto fijo; se puede emplear una notacin de
punto flotante.
Mantisa
1,23456E+15
123456.0000000000
1.234567890789456D10

El numero mximo de cifras significativas con que se trabaja es:

6 para la precisin simple (SNG)


16 para la precisin doble (DLB)

En las constantes de punto fijo hay que aadir el carcter #


Las constantes alfanumricas son hileras de caracteres; se escriben entre comillas,
Ej. "Hola " ; " A47EC

Variables vectores y matrices:

Una variable es una zona de memoria que almacena un dato


R
A

DIA $
Peso
-23.5

lunes
80

Una variable se identifica mediante un nombre. El nombre de una variable


numrica debe empezar por una letra y puede ir sucedido de otras letras y / o otros
dgitos (X, A, B1, peso, T341)

Una variable alfanumrica debe terminar con el carcter $ (x$, a23$, dias$,)

Estn terminantemente prohibidas los nombres de variables que contengan


palabras claves de Basic (PRUN, LIST, NIF$,)

Las variables de precisin doble y enteros se identifican aadiendo el carcter # o el


carcter % , tambin se pueden declarar como

DEFDBL A
7. Documentacin:
Los comentarios que se incluyan deben ser significativos
Documentacin interna:

Va incluida dentro del cdigo del programa fuente, por medio de comentarios que
ayudan a la comprensin del cdigo.

Todas las sentencias comienzan con la sentencia REM o su equivalente el carcter


apostrofe ( ).

El programa en si no los necesita y los ignora. Hace que los programas sean comprensibles.

Documento cedido por:


JORGE LUIS CASTILLO TEJEDA

Вам также может понравиться