Download Ivestigacion de algoritmos

Document related concepts

Programación funcional wikipedia , lookup

Lisp wikipedia , lookup

J (lenguaje de programación) wikipedia , lookup

Joy (lenguaje de programación) wikipedia , lookup

Haskell wikipedia , lookup

Transcript
Ivestigacion de algoritmos
Alumnos:
Rodrigo Guillermo Martínez García
Andrea Mariel Saldivar Ramirez
Materia:
Informatica
Santiago de Queretaro, Queretaro a 15 de Mayo de 2010
Ivestigacion de algoritmos
1. ¿Que es el algoritmo?
“Visto de la forma computacional”
Un algoritmo es un conjunto de operaciones y procedimientos que
deben seguirse para resolver un problema. La palabra algoritmo se
deriva del nombre latinizado del gran Matemático Árabe Mohamed
Ibn Al Kow Rizmi, el cual escribió sobre los años 800 y 825 su obra
Quitad Al Mugabala, donde se recogía el sistema de numeración
hindú y el concepto del cero. Fue Fibinacci, el que tradujo la obra al
latín y el inicio con la palabra: Algoritmi Dicit.
El lenguaje algorítmico es aquel por medio al cual se realiza un
análisis previo del problema a resolver y encontrar un método que
permita resolverlo. El conjunto de todas las operaciones a realizar y
e orden en que se deben efectuarse, se le denomina algoritmo.
Es un método para resolver un problema mediante una serie de
datos precisos, definidos y finitos.
Un algoritmo es un método para resolver un problema. Aunque la
popularización del término ha llegado con el advenimiento de la era
informática, algoritmo proviene de Mohammed al-Khowarizmi,
matemático persa que vivió durante el siglo IX y alcanzo gran
reputación por el enunciado de las reglas para sumar, restar,
multiplicar y dividir números decimales; La traducción al latín del
apellido de la palabra algorismus derivo posteriormente en
algoritmo. Euclides, el gran matemático griego (del siglo IV antes de
Cristo) que invento un método para encontrar el máximo común
divisor de dos números, se considera con Al-Khowarizmi el otro
gran padre de la algoritmia (ciencia que trata de los algoritmos).
El profesor Niklaus Wirth, inventor de Pascal, Modula-2 y Oberon,
titulo uno de sus más famosos libros, Algoritmos + Estructuras de
Datos = Programas, significándonos que solo se puede llegar a
realizar un buen programa con el diseño de un algoritmo y una
correcta estructura de datos. Esta ecuación será de una de las
hipótesis fundamentales consideradas en esta obra.
La resolución de un problema exige el diseño de un algoritmo que
resuelva el problema propuesto.
Los pasos para la resolución de un problema son:
Santiago de Queretaro, Queretaro a 15 de Mayo de 2010
Ivestigacion de algoritmos
pasos que conducen a la solución de un problema dado. (Análisis
del problema y desarrollo del algoritmo).
programación adecuado. (Fase de codificación.)
Para llegar a la realización de un programa es necesario el diseño
previo de algoritmo, de modo que sin algoritmo no puede existir un
programa.
Los algoritmos son independientes tanto del lenguaje de
programación en que se expresan como de la computadora que lo
ejecuta. En cada problema el algoritmo se puede expresar en un
lenguaje diferente de programación y ejecutarse en una
computadora distinta; sin embargo, el algoritmo será siempre el
mismo. Así, por ejemplo, en una analogía con la vida diaria, una
receta de un plato de cocina se puede expresar en español, ingles o
francés, pero cualquiera que sea el lenguaje, los pasos para la
elaboración del plato se realizaran sin importar el idioma del
cocinero.
En la ciencia de la computación y en la programación, los
algoritmos son más importantes que los lenguajes de programación
o las computadoras. Un lenguaje de programación es tan solo un
medio para expresar un algoritmo y una computadora es solo un
procesador para ejecutarlo. Tanto el lenguaje de programación
como la computadora son los medios para obtener un fin: conseguir
que el algoritmo se ejecute y se efectúe el proceso correspondiente.
Dada la importancia del algoritmo en la ciencia de la computación,
un aspecto muy importante será el diseño de algoritmos. El diseño
de la mayoría de los algoritmos requiere creatividad y
conocimientos profundos de la técnica de la programación. En
esencia, la solución de un problema se puede expresar mediante un
algoritmo.
2. ¿Qué es programacion?
La programación estructurada es una forma de escribir
programas de ordenador (programación de computadora) de
manera clara. Para ello utiliza únicamente tres estructuras:
Santiago de Queretaro, Queretaro a 15 de Mayo de 2010
Ivestigacion de algoritmos
secuencia, selección e iteración; siendo innecesario el uso de la
instrucción o instrucciones de transferencia incondicional (GOTO,
EXIT FUNCTION, EXIT SUB o múltiples RETURN).
Hoy en día las aplicaciones informáticas son mucho más
ambiciosas que las necesidades de programación existentes en los
años 1960, principalmente debido a las aplicaciones gráficas, por lo
que las técnicas de programación estructurada no son suficientes.
Ello ha llevado al desarrollo de nuevas técnicas, tales como la
programación orientada a objetos y el desarrollo de entornos de
programación que facilitan la programación de grandes
aplicaciones.
3. ¿Qué es un lenguaje de programacion?
Un lenguaje de programación es un idioma artificial diseñado para
expresar computaciones que pueden ser llevadas a cabo por
máquinas como las computadoras. Pueden usarse para crear
programas que controlen el comportamiento físico y lógico de una
máquina, para expresar algoritmos con precisión, o como modo de
comunicación humana.1 Está formado de un conjunto de símbolos y
reglas sintácticas y semánticas que definen su estructura y el
significado de sus elementos y expresiones. Al proceso por el cual
se escribe, se prueba, se depura, se compila y se mantiene el
código fuente de un programa informático se le llama programación.
También la palabra programación se define como el proceso de
creación de un programa de computadora, mediante la aplicación
de procedimientos lógicos, a través de los siguientes pasos:





El desarrollo lógico del programa para resolver un problema
en particular.
Escritura de la lógica del programa empleando un lenguaje de
programación específico (codificación del programa)
Ensamblaje o compilación del programa hasta convertirlo en
lenguaje de máquina.
Prueba y depuración del programa.
Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos
'lenguaje de programación' y 'lenguaje informático'. Los lenguajes
informáticos engloban a los lenguajes de programación y a otros
más, como por ejemplo el HTML. (lenguaje para el marcado de
Santiago de Queretaro, Queretaro a 15 de Mayo de 2010
Ivestigacion de algoritmos
páginas web que no es propiamente un lenguaje de programación
sino un conjunto de instrucciones que permiten diseñar el contenido
y el texto de los documentos)
Permite especificar de manera precisa sobre qué datos debe operar
una computadora, cómo deben ser almacenados o transmitidos y
qué acciones debe tomar bajo una variada gama de circunstancias.
Todo esto, a través de un lenguaje que intenta estar relativamente
próximo al lenguaje humano o natural, tal como sucede con el
lenguaje Léxico. Una característica relevante de los lenguajes de
programación es precisamente que más de un programador pueda
usar un conjunto común de instrucciones que sean comprendidas
entre ellos para realizar la construcción del programa de forma
colaborativa.
4. Tipos de lenguaje de programacion:
Existen varios tipos de lenguajes de programacion entre ellos se
encuentran los lenguajes complicados, lenguajes interpretados, de
programacion declarativa e imperativos, lenguajes ensambladores,
compilados en tre ellos podemos introducirnos a algunos como:
Lenguajes
de
bajo
nivel
Son lenguajes totalmente dependientes de la máquina, es decir que
el programa que se realiza con este tipo de lenguajes no se pueden
migrar
o
utilizar
en
otras
maquinas.
Al estar prácticamente diseñados a medida del hardware,
aprovechan al máximo las características del mismo.
Dentro de este grupo se encuentran:

El lenguaje maquina: este lenguaje ordena a la máquina las
operaciones fundamentales para su funcionamiento. Cnsiste
en la combinación de 0's y 1's para formar las ordenes
entendibles
por
el
hardware
de
la
maquina.
Este lenguaje es mucho más rápido que los lenguajes de alto
nivel.
La desventaja es que son bastantes difíciles de manejar y
Santiago de Queretaro, Queretaro a 15 de Mayo de 2010
Ivestigacion de algoritmos

usar, además de tener códigos fuente enormes donde
encontrar un fallo es casi imposible.
El lenguaje ensamblador es un derivado del lenguaje maquina
y esta formado por abreviaturas de letras y números llamadas
mnemotécnicos. Con la aparición de este lenguaje se crearon
los programas traductores para poder pasar los programas
escritos en lenguaje ensamblador a lenguaje máquina. Como
ventaja con respecto al código máquina es que los códigos
fuentes eran más cortos y los programas creados ocupaban
menos memoria. Las desventajas de este lenguaje siguen
siendo prácticamente las mismas que las del lenguaje
ensamblador, ñadiendo la dificultad de tener que aprender un
nuevo lenguaje difícil de probar y mantener.
Lenguajes
de
alto
nivel
Son aquellos que se encuentran más cercanos al lenguaje natural
que
al
lenguaje
máquina.
Están dirigidos a solucionar problemas mediante el uso de EDD's.
Nota: EDD's son las abreviaturas de Estructuras Dinamicas
de Datos, algo muy utilizado en todos los lenguajes de
programación. Son estructuras que pueden cambiar de
tamaño durante la ejecución del programa. Nos permiten
crear estructuras de datos que se adapten a las necesidades
reales de un programa.
Se tratan de lenguajes independientes de la arquitectura del
ordenador. Por lo que, en principio, un programa escrito en un
lenguaje de alto nivel, lo puedes migrar de una máquina a otra sin
ningún
tipo
de
problema.
Estos lenguajes permiten al programador olvidarse por completo del
funcionamiento interno de la maquina/s para la que están diseñando
el programa. Tan solo necesitan un traductor que entiendan el
código fuente como las características de la maquina.
Suelen usar tipos de datos para la programación y hay lenguajes de
Santiago de Queretaro, Queretaro a 15 de Mayo de 2010
Ivestigacion de algoritmos
propósito general (cualquier tipo de aplicación) y de propósito
especifico
(como
FORTRAN
para
trabajos
científicos).
Lenguajes
de
Medio
nivel
Se trata de un termino no aceptado por todos, pero q seguramente
habrás oído. Estos lenguajes se encuentran en un punto medio
entre los dos anteriores. Dentro de estos lenguajes podría situarse
C ya que puede acceder a los registros del sistema, trabajar con
direcciones de memoria, todas ellas características de lenguajes de
bajo nivel y a la vez realizar operaciones de alto nivel.
Generaciones
La evolución de los lenguajes de programación se puede dividir en
5 etapas o generaciones.





Primera generación: lenguaje maquina.
Segunda generación: se crearon los primeros lenguajes
ensambladores.
Tercera generación: se crean los primeros lenguajes de alto
nivel. Ej. C, Pascal, Cobol…
Cuarta generación. Son los lenguajes capaces de generar
código por si solos, son los llamados RAD, con lo cuales se
pueden realizar aplicaciones sin ser un experto en el lenguaje.
Aquí también se encuentran los lenguajes orientados a
objetos, haciendo posible la reutilización d partes del código
para otros programas. Ej. Visual, Natural Adabes…
Quinta generación: aquí se encuentran los lenguajes
orientados a la inteligencia artificial. Estos lenguajes todavía
están poco desarrollados. Ej. LISP
Santiago de Queretaro, Queretaro a 15 de Mayo de 2010