Sei sulla pagina 1di 27

DEFINICION DE ALGORITMO:

define algoritmo como un conjunto ordenado y finito de operaciones que permite hallar la solucin
de un problema. Mtodo y notacin en las distintas frmulas del clculo. El algoritmo constituye un
mtodo para resolver un problema mediante una secuencia de pasos a seguir. Dicha secuencia
puede ser expresada en forma de diagrama de flujo con el fin de seguirlo de una forma ms
sencilla.
De acuerdo con el concepto anterior, el algoritmo podra estar incluido en la definicin de programa
de ordenador de la Ley de Propiedad Intelectual (TRLPI), al referirse a ste como toda secuencia
de instrucciones o indicaciones destinadas a ser utilizadas, directa o indirectamente, en un sistema
informtico para realizar una funcin o una tarea o para obtener un resultado determinado,
cualquiera que fuere su forma de expresin y fijacin.
Sin embargo, ciertas caractersticas de los algoritmos hacen que no puedan ser calificados como
programas de ordenador. (Ver recuadro) La consecuencia de estas caractersticas es la exclusin
del algoritmo del mbito de proteccin del derecho de autor, en la medida en que ste constituye
una idea, un mtodo de clculo o una funcin, afectado por el artculo 96.4 del TRLPI.
Por otro lado, Prembulo de la Directiva 91/250/CEE de 1991 sobre la proteccin jurdica de los
programas de ordenador establece que: "en la medida en que la lgica, los algoritmos y los
lenguajes de programacin abarquen ideas y principios, estos ltimos no estarn protegidos con
arreglo a la presente Directiva."
Adems, en un Memorandum de 1994 de la OMPI (WIPO) Organizacin Mundial de la Propiedad
Intelectual, se manifestaba: "Es perfectamente cierto que el derecho de autor no protege los
algoritmos, sino nicamente las expresiones concretas de los mismos. Precisamente por eso, el
derecho de autor puede ofrecer una proteccin apropiada a los programas de ordenador, sin crear
obstculos infranqueables a la creacin independiente de nuevos programas".
No obstante, existen excepciones a nivel jurisprudencial basadas en la doctrina del "look and feel",
que establecen la existencia de plagio cuando se reproduce la estructura, secuencia y disposicin
de los datos integrados en un programa de ordenador. Estas excepciones podran aplicarse en el
caso de combinaciones de algoritmos o cuando el nivel de complejidad de un algoritmo fuese muy
alto.

Algoritmo
En matemticas, lgica, ciencias de la computacin y disciplinas relacionadas,
un algoritmo (del griego y latn, dixit algorithmus y este a su vez del
matemtico persa Al-Juarismi[1] ) 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 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 lineal de ecuaciones
Definicin formalEn 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 de estructuras 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 algoritmoLos 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
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.

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.

PseudocdigoArtculo 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 pseudodocdigo 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 formalesLa 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 y
funciones -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.

ImplementacinMuchos 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.

VariablesSon 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 secuencialesLa 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*2/4).
Un ejemplo de estructura secuencial, como obtener la 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 funcionesArtculo 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


aun, 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 la codificacin 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 algoritmosArtculo 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 algoritmoEl problema consiste en encontrar el mximo de un


conjunto de nmeros. Para un ejemplo ms complejo vase Algoritmo de
Euclides.

Descripcin de alto nivelDado 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 formalEl 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 ).
ImplementacinEn 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 tambinTipos de algoritmos segn su funcinAlgoritmo de ordenamiento
Algoritmo de bsqueda
Tcnicas de diseo de algoritmosAlgoritmos 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 relacionadosCota superior asinttica
Cota inferior asinttica
Cota ajustada asinttica
Complejidad computacional
Diagramas de flujo
Diagrama Nassi-Shneiderman
Mquina de Turing
Disciplinas relacionadasCiencias de la Computacin
Anlisis de algoritmos
Complejidad computacional
Informtica
Inteligencia artificial
Investigacin operativa

Matemticas
Programacin
Referencias1. Jump up to: a b c d e Brassard, Gilles; Bratley, Paul (1997).
Fundamentos de Algoritmia. Madrid: PRENTICE HALL. ISBN 84-89660-00-X.
2. Jump up to: 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. Jump up to: 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.Jump up 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.Jump up Johnsonbaugh, Richard (2005). Introduccin a la teora de
nmeros. Matemticas Discretas. Mxico: PEARSON EDUCACIN. ISBN 970-260637-3.
6.Jump up Carl Reynolds & Paul Tymann (2008). Schaum's Outline of
Principles of Computer Science. McGraw-Hill. ISBN 978-0-07-146051-4.
7. Jump up to: 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/enus/um/people/gurevich/Opera/141.pdf.
8.Jump up John E. Savage (1987). The Complexity of Computing. Krieger
Publishing Co.. ISBN 089874833X.
9. Jump up to: a b [|Sipser, Michael] (2005). Introduction to the Theory of
Computation (2 edicin). Course Technology. ISBN 978-0534950972.
10. Jump up to: 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.Jump up [|Kelley, Dean] (1995). Teora de Autmatas y Lenguajes
Formales. Prentice Hall. ISBN 0-13-497777-7.
BibliografaFundamentos de Algoritmia, G. Brassard y P. Bratley. (ISBN
848966000X)
The Art of Computer Programming, Knuth, D. E. [quien fue tambin, 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. (tambin existen versiones en C++ y
Java)
The Design and Analysis of Computer Algorithms, Aho, A.
Enlaces externosWikilibros

Wikilibros alberga un libro o manual sobre Algoritmia.


Wikcionario tiene definiciones para algoritmo.Wikcionario
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
Algoritmos y Diagramas de Flujo
martes, 24 de marzo de 2009Algoritmo
ALGORITMOS

DEFINICIN: Un Algoritmo, se puede definir como una secuencia de


instrucciones que representan un modelo de solucin para determinado tipo de
problemas. O bien como un conjunto de instrucciones que realizadas en orden
conducen a obtener la solucin de un problema. Por lo tanto podemos decir
que es un conjunto ordenado y finito de pasos que nos permite solucionar un
problema.

Los algoritmos son independientes de los lenguajes de programacin. En cada


problema el algoritmo puede escribirse y luego ejecutarse en un lenguaje de
diferente programacin. El algoritmo es la infraestructura de cualquier
solucin, escrita luego en cualquier lenguaje de programacin.

Programa: Un programa es una serie de instrucciones ordenadas, codificadas


en lenguaje de programacin que expresa un algoritmo y que puede ser
ejecutado en un computador.

CLASIFICACIN DE ALGORITMOS: Los algoritmos se pueden clasificar en cuatro


tipos:

Algoritmo computacional: Es un algoritmo que puede ser ejecutado en una


computadora. Ejemplo: Frmula aplicada para un clculo de la raz cuadrada de
un valor x.
Algoritmo no computacional: Es un algoritmo que no requiere de una
computadora para ser ejecutado. Ejemplo: Instalacin de un equipo de sonido.
Algoritmo cualitativo: Un algoritmo es cualitativo cuando en sus pasos o
instrucciones no estn involucrados clculos numricos. Ejemplos: Las
instrucciones para desarrollar una actividad fsica, encontrar un tesoro.
Algoritmo cuantitativo: Una algoritmo es cuantitativo cuando en sus pasos o
instrucciones involucran clculos numricos. Ejemplo: Solucin de una
ecuacin de segundo grado.

CARACTERSTICAS DE UN ALGORITMO: Todo algoritmo debe tener las siguientes


caractersticas:

1. Debe ser Preciso, porque cada uno de sus pasos debe indicar de manera
precisa e inequvoca que se debe hacer.
2. Debe ser Finito, porque un algoritmo debe tener un nmero limitado de
pasos.
3. Debe ser Definido, porque debe producir los mismos resultados para las
mismas condiciones de entrada.
4. Puede tener cero o ms elementos de entrada.
5. Debe producir un resultado. Los datos de salida sern los resultados de
efectuar las instrucciones.

PARTES DE UN ALGORITMO: Todo Algoritmo debe tener las siguientes partes:

Entrada de datos, son los datos necesarios que el algoritmo necesita para ser
ejecutado.
Proceso, es la secuencia de pasos para ejecutar el algoritmo.
Salida de resultados, son los datos obtenidos despus de la ejecucin del
algoritmo.

TCNICAS DE REPRESENTACIN: Para la representacin de un algoritmo, antes


de ser convertido a lenguaje de programacin, se utilizan algunos mtodos de
representacin escrita, grfica o matemtica. Los mtodos ms conocidos son:

Diagramacin libre (Diagramas de flujo).


Diagramas Nassi-Shneiderman.
Pseudocdigo.
Lenguaje natural (espaol, ingls, etc.).
Frmulas matemticas.
Pseudocdigo

En ciencias de la computacin, y anlisis numrico el pseudocdigo (o falso


lenguaje) es una descripcin informal[1] de alto nivel de un algoritmo
informtico de programacin, compacto e informal, que utiliza las
convenciones estructurales de un lenguaje de programacin verdadero[2] ,
pero que est diseado para la lectura humana en lugar de la lectura mediante
mquina, y con independencia de cualquier otro lenguaje de programacin.
Normalmente, el pseudocdigo omite detalles que no son esenciales para la
comprensin humana del algoritmo, tales como declaraciones de variables,
cdigo especfico del sistema y algunas subrutinas. El lenguaje de
programacin se complementa, donde sea conveniente, con descripciones
detalladas en lenguaje natural, o con notacin matemtica compacta. Se utiliza
pseudocdigo pues este es ms fcil de entender para las personas que el
cdigo de lenguaje de programacin convencional, ya que es una descripcin
eficiente y con un entorno independiente de los principios fundamentales de un
algoritmo. Se utiliza comnmente en los libros de texto y publicaciones
cientficas que se documentan varios algoritmos, y tambin en la planificacin
del desarrollo de programas informticos, para esbozar la estructura del
programa antes de realizar la efectiva codificacin. No existe una sintaxis
estndar para el pseudocdigo, aunque los ocho IDE's que manejan
pseudocdigo tengan su sintaxis propia. Aunque sea parecido, el pseudocdigo
no debe confundirse con los programas esqueleto que incluyen cdigo ficticio,
que pueden ser compilados sin errores. Los diagramas de flujo y UML pueden
ser considerados como una alternativa grfica al pseudocdigo, aunque sean
ms amplios en papel.

Aplicacin[editar editar cdigo]Muchas veces, en los libros de texto y


publicaciones cientficas relacionadas con la informtica y la computacin
numrica, se utilizan pseudocdigo en la descripcin de algoritmos, de manera
que todos los programadores puedan entenderlo, aunque no todos conozcan el
mismo lenguaje de programacin. Geneneralmente, en los libros de texto, hay
una explicacin que acompaa la introduccin que explica las convenciones
particulares en uso. El nivel de detalle del pseudocdigo puede, en algunos
casos, acercarse a la de formalizar los idiomas de propsito general.

Un programador que tiene que aplicar un algoritmo especfico, sobre todo uno
desfamiliarizado, generalmente comienza con una descripcin en
pseudocdigo, y luego "traduce" esa descripcin en el lenguaje de
programacin meta y lo modifica para que interacte correctamente con el
resto del programa. Los programadores tambin pueden iniciar un proyecto
describiendo la forma del cdigo en pseudocdigo en el papel antes de
escribirlo en su lenguaje de programacin, como ocurre en la estructuracin de
un enfoque de Top-down y Bottom-up arriba hacia abajo.

Sintaxis[editar editar cdigo]En la actualidad y por lo general, el


pseudocdigo, como su nombre lo indica, no obedece a las reglas de sintaxis
de ningn idioma en particular ni es de forma estndar sistemtica, a pesar de
que cualquier escritor en particular vaya a pedir prestado las estructuras de
control general, la sintaxis y el estilo, por ejemplo, de algn lenguaje de
programacin convencional. Pero en caso de que se quiera ejecutar, se debe
llevar a forma tipo, para que no genere mensajes de error. Las fuentes
populares incluyen la sintaxis de Pascal, BASIC, C, C++, Java, Lisp, y ALGOL.
Por lo general, se omiten las declaraciones de variables. A veces, las llamadas
a funciones, los bloques de cdigo y el cdigo contenido dentro de un loop se
remplazan por una sentencia de una lnea en lenguaje natural.

Dependiendo del escritor, el pseudocdigo puede variar mucho en su estilo,


yendo desde en un extremo, una imitacin casi exacta de un lenguaje de
programacin real, hasta al acercarse a una descripcin en prosa de formato
de pseudocdigo en el otro extremo.

Este es un ejemplo de pseudocdigo (para el juego matemtico bizz buzz):

Pseudocdigo estilo Fortran:

programa bizzbuzz

hacer i = 1 hasta 100


establecer print_number a verdadero
si i es divisible por 3
escribir "Bizz"
establecer print_number a falso
si i es divisible por 5
escribir "Buzz"
establecer print_number a falso
si print_number, escribir i
escribir una nueva lnea
fin del hacer
Pseudocdigo estilo Pascal:

procedimiento bizzbuzz
para i := 1 hasta 100 hacer
establecer print_number a verdadero;
Si i es divisible por 3 entonces
escribir "Bizz";
establecer print_number a falso;
Si i es divisible por 5 entonces
escribir "Buzz";
establecer print_number a falso;
Si print_number, escribir i;
escribir una nueva lna;
fin
Pseudocdigo estilo C:

subproceso funcion bizzbuzz


para (i <- 1; i<=100; i++) {
establecer print_number a verdadero;

Si i es divisible por 3
escribir "Bizz";
establecer print_number a falso;
Si i es divisible por 5
escribir "Buzz";
establecer print_number a falso;
Si print_number, escribir i;
escribir una nueva lnea;
}

Caractersticas y partes[editar editar cdigo]Las principales caractersticas de


este lenguaje son:

1.Se puede ejecutar en un ordenador (con un IDE como por ejemplo SLE, LPP,
PilatoX, Maruga Script, Seudocdigo o PSeInt. Otros Ides de consideracin son
Inter-P y Algor)
2.Es una forma de representacin sencilla de utilizar y de manipular.
3.Facilita el paso del programa al lenguaje de programacin.
4.Es independiente del lenguaje de programacin que se vaya a utilizar.
5.Es un mtodo que facilita la programacin y solucin al algoritmo del
programa.
Todo documento en pseudocdigo debe permitir la descripcin de:

1.Instrucciones primitivas.
2.Instrucciones de proceso....
3.Instrucciones de control.
4.Instrucciones compuestas.
5.Instrucciones de descripcin.
Estructura a seguir en su realizacin:

1.Cabecera.
1.Programa.
2.Mdulo.
3.Tipos de datos.
4.Constantes.
5.Variables.
2.Cuerpo.
1.Inicio.
2.Instrucciones.
3.Fin.
Definicin de datos del pseudocdigo[editar editar cdigo]La definicin de
datos se da por supuesta, sobre todo en las variables sencillas, si se emplea
formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera
del algoritmo, y naturalmente cuando empleemos el pseudocdigo para definir
estructuras de datos, esta parte la desarrollaremos adecuadamente.

Funciones y operaciones[editar editar cdigo]Cada autor usa su propio


pseudocdigo con sus respectivas convenciones. Por ejemplo, la instruccin
"reemplace el valor de la variable por el valor de la variable " puede ser
representado como:

asigne a el valor de

Las operaciones aritmticas se representan de la forma usual en matemticas.

Estructuras de control[editar editar cdigo]En la redaccin del pseudocdigo


se utiliza tres tipos de estructuras de control: las secuenciales, las selectivas y
las iterativas.

Estructuras secuenciales[editar editar cdigo]Las instrucciones se siguen en


una secuencia fija que normalmente viene dada por el nmero de rengln. Es
decir que las instrucciones se ejecutan de arriba hacia abajo. Las instrucciones
se ejecutan dependiendo de la condicin dada dentro del algoritmo.

Estructuras selectivas[editar editar cdigo]Las instrucciones selectivas


representan instrucciones que pueden o no ejecutarse, segn el cumplimiento
de una condicin.

Diagrama de flujo que muestra el funcionamiento de la instruccin condicional.

La condicin es una expresin booleana. Instrucciones es ejecutada slo si la


condicin es verdadera.

Selectiva doble (alternativa)[editar editar cdigo]La instruccin alternativa


realiza una instruccin de dos posibles, segn el cumplimiento de una
condicin.

Diagrama de flujo que muestra el funcionamiento de la instruccin condicional.

La condicin es una variable booleana o una funcin reducible a booleana


(lgica, Verdadero/Falso). Si esta condicin es cierta se ejecuta Instrucciones1,
si no es as, entonces se ejecuta Instrucciones2.

Selectiva mltiple[editar editar cdigo]Tambin es comn el uso de una


seleccin mltiple que equivaldra a anidar varias funciones de seleccin.

En este caso hay una serie de condiciones que tienen que ser mutuamente
excluyentes, si una de ellas se cumple las dems tienen que ser falsas
necesariamente, hay un caso si no que ser cierto cuando las dems
condiciones sean falsas.

En esta estructura si Condicin1 es cierta, entonces se ejecuta slo


Instrucciones1. En general, si Condicini es verdadera, entonces slo se
ejecuta Instruccionesi

Selectiva mltiple-Casos[editar editar cdigo]Una construccin similar a la


anterior (equivalente en algunos casos) es la que se muestra a continuacin.

En este caso hay un Indicador es una variable o una funcin cuyo valor es
comparado en cada caso con los valores "Valori", si en algn caso coinciden
ambos valores, entonces se ejecutarn las Instruccionesi correspondientes. La
seccin en otro caso es anloga a la seccin si no del ejemplo anterior.

Estructuras iterativas[editar editar cdigo]Las instrucciones iterativas


representan la ejecucin de instrucciones en ms de una vez.

Bucle mientras[editar editar cdigo]Artculo principal: Bucle while.

El bucle se repite mientras la condicin sea cierta, si al llegar por primera vez
al bucle mientras la condicin es falsa, el cuerpo del bucle no se ejecuta
ninguna vez.

Diagrama de flujo que muestra el funcionamiento de la instruccin mientras

Bucle repetir[editar editar cdigo]Existen otras variantes que se derivan a


partir de la anterior. La estructura de control repetir se utiliza cuando es
necesario que el cuerpo del bucle se ejecuten al menos una vez y hasta que se
cumpla la condicin:

La estructura anterior equivaldra a escribir:

Bucle hacer[editar editar cdigo]El Bucle hacer se utiliza para repetir un


bloque de cdigo mientras se cumpla cierta condicin.

Bucle para[editar editar cdigo]Artculo principal: Bucle for.


Una estructura de control muy comn es el ciclo para, la cual se usa cuando se
desea iterar un nmero conocido de veces, empleando como ndice una
variable que se incrementa (o decrementa): Plantilla:Definiciones

la cual se define como:

Bucle para cada[editar editar cdigo]Por ltimo, tambin es comn usar la


estructura de control para cada. Esta sentencia se usa cuando se tiene una
lista o un conjunto y se quiere iterar por cada uno de sus elementos:

Si asumimos que los elementos de son , entonces esta sentencia equivaldra a:

Que es lo mismo que:

Sin embargo, en la prctica existen mejores formas de implementar esta


instruccin dependiendo del problema.

Es importante recalcar que el pseudocdigo no es un lenguaje estandarizado.


Eso significa que diferentes autores podran dar otras estructuras de control o
bien usar estas mismas estructuras, pero con una notacin diferente. Sin
embargo, las funciones matemticas y lgicas toman el significado usual que
tienen en matemtica y lgica, con las mismas expresiones.

El anidamiento[editar editar cdigo]Cualquier instruccin puede ser sustituida


por una estructura de control. El siguiente ejemplo muestra el pseudocdigo
del ordenamiento de burbuja, que tiene varias estructuras anidadas. Este
algoritmo ordena de menor a mayor los elementos de una lista .

En general, las estructuras anidadas se muestran indentadas, para hacer ms


sencilla su identificacin a simple vista. En el ejemplo, adems de la
indentacin, se ha conectado con flechas los pares de delimitadores de cada
nivel de anidamiento.

Desarrollo de algoritmos[editar editar cdigo]Con este pseudocdigo se puede


desarrollar cualquier algoritmo que:

Tenga un nico punto de inicio.


Tenga un nmero finito de posibles puntos de trmino.
Haya un nmero finito de caminos, entre el punto de inicio y los posibles
puntos de trmino.
Funciones y procedimientos[editar editar cdigo]Muchas personas prefieren
distinguir entre funciones y procedimientos. Una funcin, al igual que una
funcin matemtica, recibe uno o varios valores de entrada y regresa una
salida mientras que un procedimiento recibe una entrada y no genera ninguna
salida aunque en algn caso podra devolver resultados a travs de sus
parmetros de entrada si estos se han declarado por referencia (ver formas de
pasar argumentos a una funcin o procedimiento).

En ambos casos es necesario dejar en claro cules son las entradas para el
algoritmo, esto se hace comnmente colocando estos valores entre parntesis
al principio o bien declarndolo explcitamente con un enunciado. En el caso de
las funciones, es necesario colocar una palabra como regresar o devolver para
indicar cul es la salida generada por el algoritmo. Por ejemplo, el
pseudocdigo de una funcin que permite calcular (un nmero elevado a
potencia ).

Un ejemplo de procedimiento seria el algoritmo de Ordenamiento de burbuja,


por el que partiendo de una lista de valores estos se ordenan, ntese que en un
procedimiento, no se calcula el valor de una funcin, sino que se realiza una
accin, en este caso ordenar la lista.

Ventajas del pseudocdigo sobre los diagramas de flujo[editar editar


cdigo]Los pseudocdigos presentan los siguientes beneficios:

1.Ocupan mucho menos espacio en el desarrollo del problema.


2.Permite representar de forma fcil operaciones repetitivas complejas.
3.Es ms sencilla la tarea de pasar de pseudocdigo a un lenguaje de
programacin formal.

4.Si se siguen las reglas de identacin se puede observar claramente los


niveles en la estructura del programa.
5.En los procesos de aprendizaje de los alumnos de programacin, stos estn
ms cerca del paso siguiente (codificacin en un lenguaje determinado, que los
que se inician en esto con la modalidad Diagramas de Flujo).
6.Mejora la claridad de la solucin de un problema.
Enlaces externos[editar editar cdigo]Pseudocdigo - Diagramas de flujo,
programacin bsica
Sintaxis del pseudocdigo CEE (C en espaol)
Foro Programacin, tutoriales y ejemplos
PSEINT - PIPEH pseudointrprete
Ejercicios de programacin en peseudocdigo
Intrprete de algoritmos en espaol
Tutorial de Pseudocdigo en Espaol
Referencias[editar editar cdigo]1.Jump up Pseudocdigo - Estructuras
condicionales. Consultado el 7 de diciembre de 2012.
2.Jump up Instroduccin al PseudoCdigo. Consultado el 7 de diciembre de
2012.
Bibliografa[editar editar cdigo]1.Pea Mar, Ricardo (2005) (en espaol).
Diseo de programas: formalismo y abstraccin (3 edicin). Pearson Alhambra.
pp. 488. ISBN 978-84-205-4191-4.
2.(en espaol) Pseudocdigos y programacin estructurada (1 edicin). Centro
Tcnico Europeo de Enseanzas Profesionales. 2 de 1997. ISBN 978-84-8199065-2.
3.Brassard, Gilles; Bratley, Paul (1996) (en espaol). Algortmica: concepcin y
anlisis. Pea Mari, Ricardo Tr. (1 edicin). Masson, S.A.. pp. 384. ISBN 978-84458-0535-0.
4.Rodeira, ed (6 de 1994) (en Gallego). Pseudocdigos e programacin
estructurada (1 edicin). ISBN 978-84-8116-287-5.
5.Edeb, ed (8 de 1993) (en espaol). Pseudocdigos y programacin
estructurada (1 edicin). ISBN 978-84-236-3126-1.
Vase tambin[editar editar cdigo]

Potrebbero piacerti anche