Professional Documents
Culture Documents
Conceptos fundamentales
Introduccin:
Los actuales sistemas de informacin estn basados en el uso de computadoras. Estas, son
maquinas digitales (sincrnicas de mltiples propsitos) que ejecutan conjuntos o secuencias
de operaciones matemticas y lgicas, utilizando el sistema binario de numeracin.
Esto significa que para dotar a la maquina la capacidad de resolver mltiples problemas, es
necesario escribir un programa (software) que los solucione de forma especfica. Para ello
existen pasos previos como ser:
Definicin del problema del mundo real;
Diseo de la solucin;
Una vez que se defini el problema hay que analizarlo. Se busca determinar claramente el
contexto (entorno) del problema y describir el estado futuro deseado una vez que se
soluciono el problema.
Se debe determinar qu datos son necesarios para solucionar el problema y que informacin
debe proporcionar la solucin.
d. Solucin informtica.
Debe ser preciso. No debe existir accin alguna que presente ambigedades en cuanto a su
estado previo y su estado posterior.
Debe estar definido. Si todas sus acciones son precisas y se sigue dos veces el mismo
algoritmo con los mismos datos, se debe obtener el mismo resultado cada vez.
b. Diseo de algoritmos.
c. Representacin e algoritmos.
La eleccin depende del uso futuro, del objetivo y la experiencia de quien lo escriba. Entre
las alternativas se pueden encontrar:
Diagrama de flujo;
Diagrama N-S (Nassi-Scheiderman);
Lenguaje natural humano;
Pseudocdigo;
Formulas;
Lenguajes de programacin.
Si bien los diagramas son mas cmodos para los inexpertos, es verdaderamente mas difcil
codificarlo luego a un lenguaje de programacin, ya que los diagramas no tienen en cuenta
las limitaciones de los lenguajes de programacin.
d. Diagrama de flujo.
e. Diagrama Naassi-Scheiderman.
Estos diagramas omiten el uso de flechas de unin y los smbolos se utilizan en forma
continua. Las acciones sucesivas se simbolizan en cajas contiguas.la dificultad en el uso de
estos diagramas est en que ocupan mucho lugar en forma horizontal cuando varias
estructuras se anidan una dentro de otra.
f. Lenguaje natural.
Puede ser muy til para una escritura inicial. Posee muchas limitaciones para la escritura de
algoritmos que luego sern programados, ya que las estructuras de los lenguajes humanos
son muy distintas a las de los lenguajes de programacin.
g. Pseudocdigo.
Es una alternativa intermedia entre los lenguajes naturales y los lenguajes de programacin.
Involucra un conjunto limitado de palabras, las reglas de utilizacin y unas pocas limitaciones
similares a las de los lenguajes de programacin, sin llegar a la escritura de programas. Con
el pseudocdigo, el programador centra su atencin en la lgica y la secuencia de las
acciones sin la preocupacin por las reglas propias de un lenguaje de programacin
particular.
h. Formulas.
Una formula es una combinacin de valores y smbolos, como por ejemplo una ecuacin
aritmtica. Para ciertos tipos de problemas, las formulas suelen ser la alternativa ms valida.
i. Lenguaje de programacin.
3. Lenguajes de programacin.
Lenguaje de maquina.
Al igual que los lenguajes de bajo nivel, dependen de la maquina particular. Esto significa
que, un programa escrito en Assembler solo podr ejecutarse en la maquina para la cual se
escribi el programa. Cada tipo de maquina tiene su propio lenguaje Assembler.
Son los lenguajes que se utilizan en la actualidad. Estan diseados para que sean
interpretados por las personas. En algunos aspectos, se asemejan al habla natural.
a. Programas traductores.
Son programas cuyo objetivo es traducir programas escritos en lenguaje de alto nivel a su
equivalente en lenguaje maquina. Existen dos tipos de traductores: interpretes y
compiladores.
b. Concepto de programa.
c. Tcnica de programacin.
Otra investigacin
Algoritmo
ndice
1 Definicin formal
2 Medios de expresin de un algoritmo
o 2.1 Diagrama de flujo
o 2.2 Pseudocdigo
o 2.3 Sistemas formales
o 2.4 Implementacin
o 2.5 Variables
o 2.6 Estructuras secuenciales
3 Algoritmos como funciones
4 Anlisis de algoritmos
5 Ejemplo de algoritmo
o 5.1 Descripcin de alto nivel
o 5.2 Descripcin formal
o 5.3 Implementacin
6 Vase tambin
o 6.1 Tipos de algoritmos segn su funcin
o 6.2 Tcnicas de diseo de algoritmos
o 6.3 Temas relacionados
o 6.4 Disciplinas relacionadas
7 Referencias
8 Bibliografa
9 Enlaces externos
Definicin formal
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
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
Diagrama de flujo que expresa un algoritmo para calcular la raz cuadrada de un nmero
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
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
Implementacin
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
Ejemplo:
...
i:=1;
read(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...
Estructuras secuenciales
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:
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
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 algoritmos
Artculo principal: Anlisis de algoritmos
Ejemplo de algoritmo
El problema consiste en encontrar el mximo de un conjunto de nmeros. Para un
ejemplo ms complejo vase Algoritmo de Euclides.
Descripcin formal
Sobre la notacin:
Implementacin
En lenguaje C++:
Vase tambin
Tipos de algoritmos segn su funcin
Algoritmo de ordenamiento
Algoritmo de bsqueda
Temas relacionados
Ciencias de la Computacin
Anlisis de algoritmos
Complejidad computacional
Informtica
Inteligencia artificial
Investigacin operativa
Matemticas
Programacin
Referencias
1.
Bibliografa
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