Download Tema 2: Resolución de Problemas. Algoritmos y Programas Tema 2
Transcript
Tema 2: Resolución de Problemas. Algoritmos y Programas Estructura y Contenidos 2.1. INTRODUCCIÓN A LA RESOLUCIÓN DE PROBLEMAS. 2.1.1. Concepto de algoritmo. 2.1.2. Estructura general de un algoritmo. 2.1.3. Propiedades exigibles a un algoritmo. 2.2. FASES DE LA CREACIÓN DE UN PROGRAMA. 2.2.1. Ingeniería del Software. Ciclo de vida del software. 2.2.2. Metodología de diseño: el diseño descendente. 2.3. REPRESENTACIÓN DE ALGORITMOS: Diagramas de flujo y Pseudolenguaje. 2.4. LENGUAJES DE PROGRAMACIÓN. 2.4.1. Conceptos básicos. 2.4.2 . Clasificación de los lenguajes de programación. 2.4.3. El proceso de compilación: traductores de lenguajes. Fundamentos de Informática ETSI Industrial 1 Universidad de Málaga José Antonio Gómez Ruiz Tema 2: Resolución de Problemas. Algoritmos y Programas OBJETIVOS 9 Introducir el concepto de algoritmo, mostrando las propiedades exigibles 9 Mostrar las fases necesarias para el desarrollo completo de un programa (ciclo de vida del software (lineal, prototipos, incremental, en espiral)) 9 Exponer las herramientas existentes para la representación de algoritmos 9 Dar una panorámica general de los distintos paradigmas de programación, mostrando sus lenguajes más representativos 9 Explicar el concepto de traducción de un programa diferenciando los conceptos de compilador e intérprete Fundamentos de Informática ETSI Industrial 2 Universidad de Málaga José Antonio Gómez Ruiz Tema 2: Resolución de Problemas. Algoritmos y Programas Estructura y Contenidos 2.1. INTRODUCCIÓN A LA RESOLUCIÓN DE PROBLEMAS. 2.1.1. Algoritmos y programas. 2.1.2. Estructura general de un algoritmo. 2.1.3. Propiedades exigibles a un algoritmo. 2.2. Fases de la creación de un programa. 2.2.1. Ingeniería del Software. Ciclo de vida del software. 2.2.2. Metodología de diseño: el diseño descendente. 2.3. Representación de algoritmos: Diagramas de flujo y Pseudolenguaje. 2.4. Lenguajes de programación. 2.4.1. Conceptos básicos. 2.4.2 . Clasificación de los lenguajes de programación. 2.4.3. El proceso de compilación: traductores de lenguajes. Fundamentos de Informática ETSI Industrial 3 Universidad de Málaga José Antonio Gómez Ruiz ALGORITMOS Y PROGRAMAS La principal razón por la que se aprende a programar es para utilizar el ordenador como herramienta para la resolución de problemas Un algoritmo es una secuencia ordenada de acciones que conducen a la resolución de un problema concreto, sin ambigüedad, en un tiempo finito Un programa es resolución de un problema (algoritmo) en términos que pueda “entender” el ordenador Análisis PROBLEMA Paso directo ALGORITMO PROGRAMA Fundamentos de Informática Codificación ETSI Industrial 4 Universidad de Málaga Muhammad Al-Khwârizmi (780-850†) José Antonio Gómez Ruiz ALGORITMOS Y PROGRAMAS Definiciones: ¾ Procesador: entidad capaz de “entender” un enunciado y ejecutar el trabajo descrito ¾ Entorno: conjunto de condiciones necesarias para la ejecución del trabajo ¾ Acción o primitiva: cada etapa del enunciado ¾ Secuencialidad: cada primitiva se ejecuta cuando la anterior ha terminado completamente ¾ Paralelismo: existen algoritmos en los cuales algunas primitivas se pueden ejecutar a la vez Fundamentos de Informática ETSI Industrial 5 Universidad de Málaga José Antonio Gómez Ruiz ALGORITMOS Y PROGRAMAS Dado un procesador bien definido y un trabajo a ejecutar por este procesador, un algoritmo es el enunciado de una secuencia no ambigua de acciones primitivas que realizan ese trabajo Para diseñar un algoritmo hay que considerar tres aspectos: ¾ Primitivas de las que partimos ¾ Lenguaje simbólico a utilizar ¾ Representación de los datos Fundamentos de Informática caracteres alfanuméricos, símbolos especiales y palabras en español determinará la descripción del algoritmo y la forma de las acciones ETSI Industrial 6 Universidad de Málaga José Antonio Gómez Ruiz ALGORITMOS Y PROGRAMAS Ejemplo: producto de dos número naturales ¾ Procesador: ser humano ¾ Primitivas: saber leer, escribir, sumar y restar ¾ Representación de los datos: cifras escritas en papel ¾ Algoritmo: hoja 1 2 hoja 2 INICIO ALGORITMO Escribir X en la hoja 1 Escribir Y en la hoja 2 Escribir 0 en la hoja 3 REPETIR Sumar valores de las hojas 1 y 3 Escribir el resultado en la hoja 3 Restar 1 al valor de la hoja 2 Escribir el resultado en la hoja 2 HASTA QUE valor hoja 2 sea 0 Leer valor escrito en hoja 3 FIN ALGORITMO Fundamentos de Informática ETSI Industrial 7 Universidad de Málaga 3 hoja 3 0 José Antonio Gómez Ruiz ALGORITMOS Y PROGRAMAS Ejemplo: producto de dos número naturales ¾ Procesador: ser humano ¾ Primitivas: saber desplazar bolas y contar ¾ Representación de los datos: bolas en un ábaco ¾ Algoritmo: X=2, Y=3 INICIO ALGORITMO Desplazar todas las bolas a la derecha Desplazar X bolas rojas a la izquierda Desplazar Y bolas azules a la izquierda MIENTRAS haya bolas azules a la izquierda Desplazar X bolas verdes a la izquierda Desplazar 1 bola azul a la derecha FINMIENTRAS Contar bolas verdes a la izquierda FIN ALGORITMO Fundamentos de Informática ETSI Industrial 8 Universidad de Málaga José Antonio Gómez Ruiz ESTRUCTURA GENERAL DE UN ALGORITMO Un algoritmo describe una transformación de unos datos de entrada para obtener unos datos de salida mediante un procesamiento de la información: Datos de Entrada ALGORITMO Son necesarias unas ¾ Acciones de entrada: recogen los datos para el proceso ¾ Acciones de proceso: ejecutan los cálculos ¾ Acciones de salida: ofrecen los resultados Interfaz: acciones de entrada + datos de entrada + acciones de salida + datos de salida Fundamentos de Informática ETSI Industrial 9 Universidad de Málaga Datos de Salida José Antonio Gómez Ruiz PROPIEDADES EXIGIBLES Propiedades exigibles a todo algoritmo: ¾ ¾ ¾ ¾ ¾ Corrección: debe resolver con exactitud el problema para el que es diseñado Eficiencia: debe obtener soluciones en un tiempo razonable ocupando el menor espacio de memoria posible Simplicidad: cuanto más sencillo de expresar, mejor (simplicidad y eficiencia no siempre van unidas) Repetitividad: puede resolver un problema genérico concretándose con distintas entradas, obteniendo iguales resultados a iguales entradas Finitud: debe siempre terminar Por ejemplo, una receta de cocina no sería un algoritmo puesto que, aun siendo una secuencia finita y ordenada de pasos, ante las mismas entradas (ingredientes) no necesariamente se obtienen los mismos resultados (distinto sabor ...) Fundamentos de Informática ETSI Industrial 10 Universidad de Málaga José Antonio Gómez Ruiz Tema 2: Resolución de Problemas. Algoritmos y Programas Estructura y Contenidos 2.1. Introducción a la resolución de problemas. 2.1.1. Algoritmos y programas. 2.1.2. Estructura general de un algoritmo. 2.1.3. Propiedades exigibles a un algoritmo. 2.2. FASES DE LA CREACIÓN DE PROGRAMA. 2.2.1. Ingeniería del Software. Ciclo de vida del software. 2.2.2. Metodología de diseño: el diseño descendente. 2.3. Representación de algoritmos: Diagramas de flujo y Pseudolenguaje. 2.4. Lenguajes de programación. 2.4.1. Conceptos básicos. 2.4.2 . Clasificación de los lenguajes de programación. 2.4.3. El proceso de compilación: traductores de lenguajes. Fundamentos de Informática ETSI Industrial 11 Universidad de Málaga José Antonio Gómez Ruiz CICLO DE VIDA DEL SOFTWARE El desarrollo de programas de calidad requiere de una metodología, herramientas y procedimientos englobados en una disciplina que se conoce como ingeniería del software La resolución de un problema mediante un ordenador tiene un conjunto genérico de fases conocido como ciclo de vida del software, que engloba desde la concepción inicial del problema hasta la puesta en funcionamiento del programa en un ordenador El ciclo de vida del software (lineal o en cascada) tiene tres fases: ¾ Definición (análisis, especificación de requisitos) ¾ Desarrollo (diseño, implementación, verificación) ¾ Mantenimiento (mejoras y correcciones) (ver gráfico siguiente transparencia) Fundamentos de Informática ETSI Industrial 12 Universidad de Málaga José Antonio Gómez Ruiz CICLO DE VIDA DEL SOFTWARE Ciclo de vida lineal o en cascada DEFINICIÓN Análisis Especificación de requisitos DESARROLLO Diseño Implementación Verificación MANTENIMIENTO Fallos de definición Errores Modificaciones y adaptaciones Fundamentos de Informática ETSI Industrial 13 Universidad de Málaga José Antonio Gómez Ruiz CICLO DE VIDA DEL SOFTWARE Definición: descripción detallada de ¾ Programa que se va a realizar ¾ ¿qué problema resuelve? ¿qué datos maneja? Recursos necesarios ¿qué funciones o tareas debe realizar? ¿qué restricciones existen? ... Costes ¾ Plan de trabajo Desarrollo: Creación de programas y documentación asociada ¾ Diseño: cómo se solución el problema (algoritmo) ¾ Implementación del algoritmo en un lenguaje de programación ¾ Verificación: comprobar que el programa se corresponde con los requisitos y verificar que funciona correctamente en todos los casos Mantenimiento: realización de correcciones, mejoras y adaptaciones en la versión original ó incluso descatalogarla (se queda obsoleta) ¾ Fundamentos de Informática ETSI Industrial 14 Universidad de Málaga José Antonio Gómez Ruiz CICLO DE VIDA DEL SOFTWARE El inconveniente principal del ciclo lineal o en cascada es que el cliente final no ve una versión del programa hasta practicamente el final de las etapas, pudiendo retrocederse varias fases Modelo basado en prototipos: el cliente interactúa desde el principio ¾ Pueden hacerse compromisos de implementación en las primeras versiones del prototipo que al final mermen la calidad del producto Escuchar Escuchar al al cliente cliente Construir/ Construir/ revisar revisar maqueta maqueta El El cliente cliente prueba prueba la maqueta la maqueta Fundamentos de Informática ETSI Industrial 15 Universidad de Málaga José Antonio Gómez Ruiz CICLO DE VIDA DEL SOFTWARE Modelo incremental ¾ Combina elementos del modelo lineal con el de creación de prototipos ¾ El primer incremento a menudo es un producto esencial que el cliente utiliza o evalúa ¾ A partir de la evaluación se planea el siguiente incremento y así sucesivamente análisis diseño análisis implementación diseño análisis implementación diseño Prototipo tras 1er incremento verificación verificación implementación Prototipo tras 2o incremento verificación Prototipo tras 3er incremento ... análisis Fundamentos de Informática diseño implementación verificación ETSI Industrial 16 Universidad de Málaga Producto final José Antonio Gómez Ruiz CICLO DE VIDA DEL SOFTWARE Modelo en espiral Planificación Análisis de Riesgos Comunicación con el cliente Ingeniería Evaluación del cliente Fundamentos de Informática Construcción ETSI Industrial 17 Universidad de Málaga José Antonio Gómez Ruiz METODOLOGÍA DE DISEÑO Como se ha mostrado, la fase de diseño es la fase de resolución del problema, donde se diseña un algoritmo Se necesita emplear alguna metodología Prescindir de ella pueden acarrear inconvenientes como: ¾ Rigidez e inflexibilidad en los programas ¾ Pérdida excesiva de tiempo en la corrección de errores ¾ Imposibilidad de reutilización de código ¾ Documentación deficiente ... ¾ Fundamentos de Informática ETSI Industrial 18 Universidad de Málaga José Antonio Gómez Ruiz DISEÑO DESCENDENTE Las metodologías más eficaces para el proceso de diseño se basan en el conocida técnica del divide y vencerás La resolución de un problema complejo se realiza dividiendo el problema inicial en subproblemas más simples ¾ Este método se conoce como diseño descendente ¾ Esta división se repetirá sucesivamente hasta que los subproblemas resultantes se puedan resolver de una forma sencilla Al proceso de dividir cada subproblema en subproblema más simples se denomina refinamiento sucesivo Cada subproblema tendrá asociado un módulo (subprograma) que lo resuelva → programación modular Fundamentos de Informática ETSI Industrial 19 Universidad de Málaga José Antonio Gómez Ruiz DISEÑO DESCENDENTE Tendremos un programa principal, que será el módulo de mayor jerarquía, que puede llamar a otros subprogramas, que serán módulos de menor jerarquía Nivel 0 Nivel 1 Nivel 2 Nivel 3 Cada módulo se puede desarrollar de manera independiente (con sus propias fases de definición, desarrollo y mantenimiento) Fundamentos de Informática ETSI Industrial 20 Universidad de Málaga José Antonio Gómez Ruiz DISEÑO DESCENDENTE Ejemplo: ¾ cálculo de la nota media de la clase Cálculo de media de la clase Obtener notas de la clase Cálculo de la media Suma de todas las notas Fundamentos de Informática Nivel 0 Nivel 1 Imprimir resultado Dividir la suma por el total de calificaciones Nivel 2 ETSI Industrial 21 Universidad de Málaga José Antonio Gómez Ruiz DISEÑO DESCENDENTE Ejemplo: ¾ cambio de una bombilla con un robot doméstico Cambiar bombilla Quitar la bombilla fundida Situar la escalera debajo de la bombilla fundida Girar la bombilla en sentido antihorario hasta soltarla Subir por la escalera hasta alcanzar la bombilla Fundamentos de Informática Nivel 0 Colocar la nueva bombilla Elegir una nueva bombilla de la misma potencia que la fundida Bajar de la escalera Enroscar la bombilla nueva en sentido horario hasta que quede apretada ETSI Industrial 22 Universidad de Málaga Nivel 1 Nivel 2 Comprobar que la bombilla funciona José Antonio Gómez Ruiz Tema 2: Resolución de Problemas. Algoritmos y Programas Estructura y Contenidos 2.1. Introducción a la resolución de problemas. 2.1.1. Algoritmos y programas. 2.1.2. Estructura general de un algoritmo. 2.1.3. Propiedades exigibles a un algoritmo. 2.2. Fases de la creación de programa. 2.2.1. Ingeniería del Software. Ciclo de vida del software. 2.2.2. Metodología de diseño: el diseño descendente. 2.3. REPRESENTACIÓN DE ALGORITMOS: Diagramas flujo y Pseudolenguaje. 2.4. Lenguajes de programación. 2.4.1. Conceptos básicos. 2.4.2 . Clasificación de los lenguajes de programación. 2.4.3. El proceso de compilación: traductores de lenguajes. Fundamentos de Informática ETSI Industrial 23 Universidad de Málaga José Antonio Gómez Ruiz REPRESENTACIÓN DE ALGORITMOS Durante la fase de diseño, es preciso disponer de alguna notación algorítmica que permita expresar de forma no ambigua la resolución del problema Las notaciones algorítmicas deben ser independientes del lenguaje de programación a utilizar en la fase de implementación, aunque debe permitir una traducción clara al programa La decisión final sobre el lenguaje de programación a utilizar depende de otras consideraciones y cualquier algoritmo debe poder implementarse en cualquier lenguaje de programación Tipos de notaciones algorítmicas: ¾ Textual: pseudolenguaje ¾ Gráfica: diagramas de flujo, notación UML ¾ Ejecutable: lenguajes de programación Fundamentos de Informática ETSI Industrial 24 Universidad de Málaga José Antonio Gómez Ruiz DIAGRAMAS DE FLUJO Un diagrama de flujo es un herramienta gráfica para la representación de algoritmos Consta de una serie de símbolos, conectados mediante líneas, que indican el orden en el que se realizan las acciones Debe reflejar la lógica del algoritmo, indicando los pasos individuales y sus interconexiones. Mostrará por tanto: ¾ el comienzo del programa ¾ las operaciones que deben realizarse ¾ el orden en que se realizan ¾ el final del programa Los símbolos utilizados están normalizados por las organizaciones ANSI e ISO (en la siguiente transparencia) Fundamentos de Informática ETSI Industrial 25 Universidad de Málaga José Antonio Gómez Ruiz DIAGRAMAS DE FLUJO flujo de control SI documento Salida pantalla entrada manual terminador NO condición decisión etq proceso Fundamentos de Informática entrada / salida ETSI Industrial 26 Universidad de Málaga conector José Antonio Gómez Ruiz DIAGRAMAS DE FLUJO Fundamentos de Informática ETSI Industrial 27 Universidad de Málaga José Antonio Gómez Ruiz DIAGRAMAS DE FLUJO En la representación con diagramas de flujo es conveniente seguir las siguientes reglas: ¾ El comienzo del programa figurará en la parte superior del diagrama ¾ Los símbolos de comienzo y fin deberán aparecer una única vez ¾ El flujo de las operaciones será de arriba a abajo y de izquierda a derecha ¾ Se debe guardar cierta simetría en la representación de bifurcaciones y bucles ¾ Se evitarán los cruces de líneas de flujo, utilizando conectores Fundamentos de Informática ETSI Industrial 28 Universidad de Málaga José Antonio Gómez Ruiz DIAGRAMAS DE FLUJO Ejemplo: cálculo del valor absoluto de un número leído por teclado Inicio Leer x SI x>0 NO abs ← - x abs ← x Escribir abs Fin Fundamentos de Informática ETSI Industrial 29 Universidad de Málaga José Antonio Gómez Ruiz DIAGRAMAS DE FLUJO Ejemplo: cálculo de la suma de n números introducidos por teclado Inicio s←0 Leer n n←n-1 s←s+x Fundamentos de Informática SI n>0 NO Leer x ETSI Industrial 30 Universidad de Málaga Escribir s Fin José Antonio Gómez Ruiz DIAGRAMAS DE FLUJO Diseña un algoritmo, mediante diagramas de flujo, que lea los coeficientes de una ecuación de segundo grado y calcule e imprima sus soluciones. Deben contemplarse todos los posibles casos que se puedan dar. Diseña un algoritmo que, dado un número natural leído por teclado, indique si es o no número primo. Diseña un algoritmo que, dada una secuencia de ceros y unos terminada en un punto, muestre por pantalla el tamaño de todas las subcadenas de unos e indique cual es la mayor. Fundamentos de Informática ETSI Industrial 31 Universidad de Málaga José Antonio Gómez Ruiz PSEUDOLENGUAJE Los programas deben ser escritos en un lenguaje de programación que pueda interpretar el ordenador, pero no olvidemos que nuestra forma habitual de expresar un concepto es en lenguaje natural De la aproximación entre ambos surge el pseudolenguaje que es una herramienta textual para la representación de algoritmos El pseudolenguaje permitirá, por tanto, representar las construcciones básicas de los lenguajes de programación, pero a la vez se mantendrá próximo al lenguaje natural No obstante, a pesar de la flexibilidad, el pseudolenguaje debe atenerse a una serie de normas para que los algoritmos diseñados resulten legibles, claros y fácilmente codificables Fundamentos de Informática ETSI Industrial 32 Universidad de Málaga José Antonio Gómez Ruiz PSEUDOLENGUAJE El conjunto de sentencias debe ser completo. Deben permitir especificar cualquier tarea a realizar con suficiente detalle: ¾ INICIO: indica el comienzo del algoritmo ¾ FIN: indica la terminación del algoritmo ¾ LEER: se usa para leer un dato del teclado ¾ ESCRIBIR: se usa para escribir un dato por pantalla ¾ SI <c> ENTONCES <aSí> EN OTRO CASO <aNo> FINSI: si se cumple la condición <c> se realiza la acción <aSí>, en caso contrario se realiza la acción <aNo> ¾ MIENTRAS <c> HACER <a> FINMIENTRAS: se repite la acción <a> mientras se cumpla la condición <c>. Antes de repetir la acción <a> se comprueba primero que se cumpla la condición <c>, incluso la primera vez ¾ REPETIR <a> HASTA QUE <c>: se repite la acción <a> hasta que se cumple la condición <c>. Primero se ejecuta la acción <a> y luego se verifica la condición <c> antes de volver a repetir el proceso Fundamentos de Informática ETSI Industrial 33 Universidad de Málaga José Antonio Gómez Ruiz PSEUDOLENGUAJE Ejemplo: cálculo del valor absoluto de un número leído por teclado INICIO LEER x SI x > 0 ENTONCES abs ← x EN OTRO CASO abs ← - x FINSI ESCRIBIR abs FIN Fundamentos de Informática ETSI Industrial 34 Universidad de Málaga José Antonio Gómez Ruiz PSEUDOLENGUAJE Ejemplo: Cálculo de la suma de n números introducidos por teclado INICIO S ← 0 LEER n MIENTRAS n > 0 HACER n ← n - 1 LEER x s ← s + x FINMIENTRAS ESCRIBIR s FIN Fundamentos de Informática ETSI Industrial 35 Universidad de Málaga José Antonio Gómez Ruiz PSEUDOLENGUAJE Diseña un algoritmo, mediante pseudolenguaje, que lea los coeficientes de una ecuación de segundo grado y calcule e imprima sus soluciones. Deben contemplarse todos los posibles casos que se puedan dar. Diseña un algoritmo que, dado un número natural leído por teclado, indique si es o no número primo. El algoritmo preguntará si se desea repetir de nuevo el proceso. Diseña un algoritmo que, dada una secuencia de ceros y unos terminada en un punto, muestre por pantalla el tamaño de todas las subcadenas de unos e indique cual es la mayor. Fundamentos de Informática ETSI Industrial 36 Universidad de Málaga José Antonio Gómez Ruiz PSEUDOLENGUAJE vs DIAGRAMAS FLUJO Ventajas Pseudolenguaje • Fácil de modificar • La sintaxis no es rígida • Fácil de traducir a Inconvenientes • Imprecisión al usar el lenguaje natural un lenguaje de programación Diagramas de Flujo • No tiene ambigüedad • Fácil de “seguir” el flujo del algoritmo • Independiente del idioma Fundamentos de Informática • Complicado de actualizar si el algoritmo es complejo • La traducción a un lenguaje de programación no es inmediata ETSI Industrial 37 Universidad de Málaga José Antonio Gómez Ruiz Tema 2: Resolución de Problemas. Algoritmos y Programas Estructura y Contenidos 2.1. Introducción a la resolución de problemas. 2.1.1. Algoritmos y programas. 2.1.2. Estructura general de un algoritmo. 2.1.3. Propiedades exigibles a un algoritmo. 2.2. Fases de la creación de programa. 2.2.1. Ingeniería del Software. Ciclo de vida del software. 2.2.2. Metodología de diseño: el diseño descendente. 2.3. Representación de algoritmos: Diagramas de flujo y Pseudolenguaje. 2.4. LENGUAJES DE PROGRAMACIÓN. 2.4.1. Conceptos básicos. 2.4.2 . Clasificación de los lenguajes de programación. 2.4.3. El proceso de compilación: traductores de lenguajes. Fundamentos de Informática ETSI Industrial 38 Universidad de Málaga José Antonio Gómez Ruiz LENGUAJES DE PROGRAMACIÓN Conceptos básicos: ¾ Lenguaje de programación: conjunto de símbolos y reglas de combinación para construir programas Se clasifican en: − Lenguajes de alto nivel: próximos al lenguaje natural, muy productivos, poco eficientes e independientes del ordenador − Lenguajes de bajo nivel: próximos a la máquina, muy eficientes, poco productivos y dependientes de la máquina ¾ Código fuente: programa escrito en algún lenguaje (generalmente de alto nivel), no ejecutable directamente en ordenador ¾ Código máquina: instrucciones (en bits) ejecutables directamente en un ordenador Fundamentos de Informática ETSI Industrial 39 Universidad de Málaga José Antonio Gómez Ruiz LENGUAJES DE PROGRAMACIÓN Clasificación de los lenguajes de programación: ¾ Lenguaje de propósito general: − Imperativos o procedurales: se basan en la asignación. Se especifica la secuencia de instrucciones. Fotran, Pascal, C,... • de guiones (scripts): más simples. Tcl, Perl, sh, Python... − Orientados a Objetos: se basan en la asignación y son más próximos al mundo real (objetos). Smalltalk, Java, C++,... • Visuales: general código automáticamente. Visual C, Delphi − Declarativos: Se especifica el resultado requerido • Lógicos: basados en reglas de deducción. Prolog • Funcionales: basados en funciones. Lisp, Haskell ¾ Lenguajes de propósito específico: internet (html, xml, php, asp), robótica (val II), bases de datos (sql), hardware (step-5), ... Fundamentos de Informática ETSI Industrial 40 Universidad de Málaga José Antonio Gómez Ruiz LENGUAJES DE PROGRAMACIÓN Historia de los lenguaje de alto nivel: FORTRAN John Backus I 1954 COBOL Grace Hopper CODASYL 1957 I Algol John Backus C.A.R. Hoare Niklaus Wirth 1960 I Lisp John McCarthy 1959 F Fundamentos de Informática Pascal Niklaus Wirth 1970 I Modula-2 Niklaus Wirth 1979 I Ada 83 DoD (EEUU) 1983 I FORTRAN 2002 2002 O Delphi 1995 V Ada 95 1995 O Smalltalk C Dennis Ritchie 1971 I Prolog Colmerauer, Roussel 1972 L C++ Bjarne Stroustrup 1983 O Perl, Python, JavaScript ETSI Industrial 41 Universidad de Málaga Java James Gosling 1995 O Visual-C++ 1995 V Haskell 1992 F José Antonio Gómez Ruiz EL PROCESO DE COMPILACIÓN El proceso de compilación es el proceso mediante el cual se traduce un programa escrito en un lenguaje de alto nivel a lenguaje máquina directamente ejecutable por el ordenador El traductor es el software (programa de ordenador) que realiza justamente ese proceso. Se clasifican en: ¾ Compiladores: traducen el programa completo a lenguaje máquina, obteniendo un programa ejecutable, pero no lo ejecutan. Cuando se desee ejecutar el programa ya no es necesaria la compilación ¾ Intérpretes: traducen el programa instrucción a instrucción. La ejecución del programa se realiza a la vez que la traducción: se lee una instrucción, se traduce y se ejecuta. Cada vez que se desea ejecutar el programa hay que traducirlo Biblioteca: conjunto de programas ya traducidos a lenguaje máquina y escritos para ser reutilizados Fundamentos de Informática ETSI Industrial 42 Universidad de Málaga José Antonio Gómez Ruiz EL PROCESO DE COMPILACIÓN Bibliotecas Editor Compilador fuente objeto prog.c prog.o E/S matem. gráfica programador Tiempo de compilación Enlazador Tiempo de ejecución entrada salida prog.exe ejecutable prog.exe usuario Fundamentos de Informática ETSI Industrial 43 Universidad de Málaga José Antonio Gómez Ruiz EL PROCESO DE COMPILACIÓN código intermedio Compilador Intercambiar(int v[], int k) { int temporal; fuente temporal = v[k]; v[k] = v[k+1]; v[k+1] = temporal; } objeto biblioteca 3 biblioteca 2 biblioteca 1 Fundamentos de Informática Enlazador 000000000010100001 000000000010001110 100011000001100010 100011000011110010 101011000011110010 101011000001100010 ejecutable 000000110011100000 ETSI Industrial 44 Universidad de Málaga José Antonio Gómez Ruiz Tema 2: Resolución de Problemas. Algoritmos y Programas FIN DEL TEMA Fundamentos de Informática ETSI Industrial 45 Universidad de Málaga José Antonio Gómez Ruiz