ALGORITMOS Y PROGRAMASAlgoritmoSecuencia ordenada de pasos que resuelve un problema concreto.Características      Un algor...
ProgramaImplementación de un algoritmo en un lenguaje de programación Conjuntoordenado de instrucciones que se dan al Comp...
Lenguajes de alto nivel         Permiten que el programador exprese el procesamiento de datos de         forma simbólica, ...
Java© 1995, Sun MicrosystemsSimilar a C++, aunque más sencillo de aprender y usar.C#© 2000, Microsoft CorporationAlternati...
Evolución de los lenguajes de programación:           Lenguajes imperativos
Evolución de los lenguajes de programación:          Lenguajes declarativos
TraductoresLos traductores transforman programas escritos en un lenguaje de altonivel en programas escritos en código máqu...
Tipos de traductoresCompiladoresGeneran un programa ejecutable a partir del código fuente
Análisis Léxico: Esta fase se encarga de verificar si todas las cadenaspertenecen o no al lenguaje. Es decir realiza un an...
Análisis Semántico: Este análisis es más difícil de formalizar, determina el tipode los resultados intermedios, comprobar ...
IntérpretesVan analizando, traduciendo y ejecutando las instrucciones del programa una auna. No se traduce una instrucción...
Eclipse, un IDE para Java (http://www.eclipse.org)
Desarrollo de aplicaciones informáticas:                          Ciclo de vida del softwareEl ciclo de vida de una aplica...
Upcoming SlideShare
Loading in...5
×

Algoritmos, programas, compiladores y lenguajes de programacion

15,334

Published on

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total Views
15,334
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
157
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Algoritmos, programas, compiladores y lenguajes de programacion"

  1. 1. ALGORITMOS Y PROGRAMASAlgoritmoSecuencia ordenada de pasos que resuelve un problema concreto.Características Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Un algoritmo debe ser finito. Si se sigue un algoritmo se debe terminar en algún momento; o sea, debe tener un numero finito de pasos. La definición de un algoritmo debe definir tres partes: Entrada, Proceso y Salida. En el algoritmo de receta de cocina se analiza : Entrada: ingrediente y utensilios empleados. Proceso: elaboración de la receta en la cocina. Salida: terminación del plato (por ejemplo, cordero).Ejemplo de Algoritmo:Un cliente ejecuta un pedido a una fábrica. Esta examina en su banco de datos laficha del cliente; si el cliente es solvente entonces la empresa acepta el pedido; encaso contrario rechazara el pedido
  2. 2. ProgramaImplementación de un algoritmo en un lenguaje de programación Conjuntoordenado de instrucciones que se dan al Computador indicándole las operacioneso tareas que ha de realizar para resolver un problema.Lenguajes de programaciónUna instrucción es un conjunto de símbolos que representa una Orden para elComputador: la ejecución de una operación con datos.Las instrucciones se escriben en un lenguaje de programación:- Se forman con símbolos tomados de un determinado repertorio (componentesléxicos)- Se construyen siguiendo unas reglas precisas (sintaxis) Lenguaje máquina El único que entiende directamente la CPU del Computador o Depende del modelo de Computador o Repertorio de instrucciones reducido (operaciones muy elementales) o Muy difícil programar en él (en binario, con cadenas de ceros y unos) Lenguaje ensamblador Equivalente al lenguaje máquina, cada línea de código se traduce en: o una instrucción para la máquina. o Le asocia mnemónicos a las operaciones que entiende la CPU o Repertorio de instrucciones reducido (operaciones muy elementales) o Programas difíciles de entender
  3. 3. Lenguajes de alto nivel Permiten que el programador exprese el procesamiento de datos de forma simbólica, sin tener en cuenta los detalles específicos de la máquina. Independientes del modelo de Computador Proporcionan un mayor nivel de abstracciónEjemplos de lenguajes de programación de alto nivelFORTRAN (FORmula TRANslation)© 1957, IBM (John Backus)Orientado a la resolución de problemas científicos y técnicosCOBOL (COmmon Business Oriented Language)© 1959, Codasyl (Committee on Data System Languages)Aplicaciones comerciales de gestiónLISP (LISt Processing)© 1959, John McCarthy (MIT)Procesamiento de datos no numéricos (usado en IA)BASIC (Beginner’s All-purpose Symbolic Instruction Code)© 1964, John Kemeny & Thomas Kurtz (Darmouth College)Lenguaje interactivo para principiantesSimula© 1967, Ole-Johan Dahl & Krysten Nygaard (Noruega)Primer lenguaje de programación orientada a objetosPascal© 1971, Niklaus WirthLenguaje estructurado diseñado para aprender a programarC© 1972, Denis Ritchie (Bell Labs)Lenguaje pequeño, flexible y eficienteSmalltalk© 1972, Alan Kay (Xerox PARC)Origen de los interfaces WIMP (Windows, Icons, Mouse & Pull-down menus)PROLOG (PROgramming in Logic)© 1972, Alain Colmerauer (Universidad de Marsella)Basado en Lógica (usado en IA)Ada© 1980, US Department of DefenseBasado en Pascal, muy usado en aplicaciones militaresIntroducción a la Programación - 4 - © Fernando BerzalC++© 1983, Bjarne Stroustroup (AT&T Bell Labs)Extensión de C que permite la programación orientada a objetos
  4. 4. Java© 1995, Sun MicrosystemsSimilar a C++, aunque más sencillo de aprender y usar.C#© 2000, Microsoft CorporationAlternativa de Microsoft a Java, muy similar a éste. Clasificación de los lenguajes de programación de alto nivelLenguajes imperativos:Los programas indican al Computador de forma inequívoca los pasos a seguirpara la resolución de un problema.Programación estructurada:La estructura del texto del programa debe auxiliarnos para entender la función querealiza: estrategia “divide y vencerás” (la resolución de un problema se divide entareas y, éstas, en subtareas).Ejemplos: C, Pascal, Fortran...Programación orientada a objetos:Estilo de programación que basa la estructura de un programa en módulosdeducidos de los tipos de objetos que manipula (en lugar de basarse en las tareasque el sistema debe realizar).Ejemplos: Smalltalk, C++, Java, C#...Lenguajes declarativos (funcionales y lógicos):Los programas se implementan como conjuntos de funciones (o reglas lógicas)cuya evaluación nos dará el resultado deseado.Ejemplos: LISP, PROLOG...
  5. 5. Evolución de los lenguajes de programación: Lenguajes imperativos
  6. 6. Evolución de los lenguajes de programación: Lenguajes declarativos
  7. 7. TraductoresLos traductores transforman programas escritos en un lenguaje de altonivel en programas escritos en código máquina:
  8. 8. Tipos de traductoresCompiladoresGeneran un programa ejecutable a partir del código fuente
  9. 9. Análisis Léxico: Esta fase se encarga de verificar si todas las cadenaspertenecen o no al lenguaje. Es decir realiza un análisis símbolo por símboloindicando el token por cada uno de los elementos reconocidos o el error en casode no reconocer. Este análisis no logra detectar muchos errores por sucaracterística.Ejemplo:total=valor*5Luego del análisis léxico:id = id * numAnálisis Sintáctico: En esta fase se analiza la estructura de las expresiones enbase a gramáticas. Aquí ya se puede determinar si una estructura por ejemplo unaexpresión matemática mal formada. El análisis que se realiza es jerárquico esdecir en base a árboles de derivación que se obtienen de las mismas gramáticas.Ejemplo: position:=initial + rate*60
  10. 10. Análisis Semántico: Este análisis es más difícil de formalizar, determina el tipode los resultados intermedios, comprobar que los argumentos que tienen unoperador pertenecen al conjunto de operadores posible, y si son compatibles entresi.Generación de Código Intermedio: El código intermedio es una representaciónen base a elementos de 3 y 4 direcciones. Lo que nos permite llegar a la fase deoptimización de código.a=b+c1: + b c T12: = a T1Optimización de Código: Consiste en realizar una mejora en el códigointermedio, para reducir el número de líneas y hacer que la ejecución sea másrápidaa=b+c1: + b c aGeneración de Código: Llegamos a la generación de código ensamblador ocódigo máquina del procesador que nos interese por ejemplo:a:=b+cLOAD BADD CSTORE A
  11. 11. IntérpretesVan analizando, traduciendo y ejecutando las instrucciones del programa una auna. No se traduce una instrucción hasta que la ejecución de la anterior hayafinalizado.Herramientas de programaciónEditores, depuradores, profilers...Ä IDEs (entornos integrados de desarrollo)EjemplosMicrosoft Visual Studio .NET, un IDE para la plataforma .NET
  12. 12. Eclipse, un IDE para Java (http://www.eclipse.org)
  13. 13. Desarrollo de aplicaciones informáticas: Ciclo de vida del softwareEl ciclo de vida de una aplicación comprende las siguientes etapas: Planificación: Delimitación del ámbito del proyecto, estudio de viabilidad, análisis de riesgos, estimación de costos, planificación temporal y asignación de recursos. Análisis (¿qué?): requisitos. Descripción clara y completa de qué es lo que se pretende, incluyendo la presentación de los resultados que se desean obtener (formato de las salidas) y la forma en que se va a utilizar la aplicación (interfaz de usuario) Diseño (¿cómo?): Estudio de alternativas Diseño arquitectónico: Organización de los distintos módulos que compondrán la aplicación (diseño arquitectónico). Diseño detallado: Definición de los algoritmos necesarios para implementar la aplicación en lenguaje natural, mediante diagramas de flujo o en pseudocódigo [lenguaje algorítmico]. Implementación: Adquisición de componentes, creación de los módulos de la aplicación en un lenguaje de programación e integración de los recursos necesarios para que el sistema funcione. Depuración y pruebas: Comprobación del funcionamiento de la aplicación Pruebas de unidad y de integración, pruebas alfa, pruebas beta, test de aceptación. Verificación (si se está realizando lo que se pretendía) Validación (si se realiza lo correcto). Explotación: Uso y mantenimiento Mantenimiento correctivo: Corrección de defectos o errores. Mantenimiento adaptativo: Adaptación de la aplicación a nuevas circunstancias e inclusión de nuevas prestaciones.

×