tema 2: resolución de problemas. algoritmos y …janto/ftp/fundinf/trans_t2.pdffundamentos de...
Post on 13-May-2018
224 Views
Preview:
TRANSCRIPT
Fundamentos de Informática ETSI Industrial 1 Universidad de Málaga José Antonio Gómez Ruiz
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.
Tema 2: Resolución de Problemas. Algoritmos y Programas
Estructura y Contenidos
Fundamentos de Informática ETSI Industrial 2 Universidad de Málaga José Antonio Gómez Ruiz
Introducir el concepto de algoritmo, mostrando las propiedades exigibles
Mostrar las fases necesarias para el desarrollo completo de un programa (ciclo de vida del software (lineal, prototipos, incremental, en espiral))
Exponer las herramientas existentes para la representación de algoritmos
Dar una panorámica general de los distintos paradigmas de programación, mostrando sus lenguajes más representativos
Explicar el concepto de traducción de un programa diferenciando los conceptos de compilador e intérprete
Tema 2: Resolución de Problemas. Algoritmos y Programas
OBJETIVOS
Fundamentos de Informática ETSI Industrial 3 Universidad de Málaga José Antonio Gómez Ruiz
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.
Tema 2: Resolución de Problemas. Algoritmos y Programas
Estructura y Contenidos
Fundamentos de Informática ETSI Industrial 4 Universidad de Málaga José Antonio Gómez Ruiz
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
PROBLEMA
PROGRAMA
ALGORITMO
Análisis
Codificación
Pasodirecto
MuhammadAl-Khwârizmi(780-850†)
ALGORITMOS Y PROGRAMASALGORITMOS Y PROGRAMAS
Fundamentos de Informática ETSI Industrial 5 Universidad de Málaga José Antonio Gómez Ruiz
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
ALGORITMOS Y PROGRAMASALGORITMOS Y PROGRAMAS
Fundamentos de Informática ETSI Industrial 6 Universidad de Málaga José Antonio Gómez Ruiz
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
caracteres alfanuméricos, símbolos especiales y palabras en español
determinará la descripción del algoritmo y la forma de las acciones
ALGORITMOS Y PROGRAMASALGORITMOS Y PROGRAMAS
Fundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz
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:INICIO ALGORITMO
Escribir X en la hoja 1Escribir Y en la hoja 2Escribir 0 en la hoja 3REPETIR
Sumar valores de las hojas 1 y 3 Escribir el resultado en la hoja 3Restar 1 al valor de la hoja 2 Escribir el resultado en la hoja 2
HASTA QUE valor hoja 2 sea 0Leer valor escrito en hoja 3
FIN ALGORITMO
hoja 1
2
hoja 2
3
hoja 3
0
ALGORITMOS Y PROGRAMASALGORITMOS Y PROGRAMAS
Fundamentos de Informática ETSI Industrial 8 Universidad de Málaga José Antonio Gómez Ruiz
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:INICIO ALGORITMO
Desplazar todas las bolas a la derechaDesplazar X bolas rojas a la izquierdaDesplazar Y bolas azules a la izquierdaMIENTRAS haya bolas azules a la izquierda
Desplazar X bolas verdes a la izquierdaDesplazar 1 bola azul a la derecha
FINMIENTRASContar bolas verdes a la izquierda
FIN ALGORITMO
X=2, Y=3
ALGORITMOS Y PROGRAMASALGORITMOS Y PROGRAMAS
Fundamentos de Informática ETSI Industrial 9 Universidad de Málaga José Antonio Gómez Ruiz
Un algoritmo describe una transformación de unos datos de entradapara obtener unos datos de salida mediante un procesamiento de la información:
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
Datosde
Entrada
ALGORITMODatos
deSalida
ESTRUCTURA GENERAL DE UN ALGORITMOESTRUCTURA GENERAL DE UN ALGORITMO
Fundamentos de Informática ETSI Industrial 10 Universidad de Málaga José Antonio Gómez Ruiz
Propiedades exigibles a todo algoritmo:
Corrección: debe resolver con exactitud el problema para el que es diseñadoEficiencia: debe obtener soluciones en un tiempo razonable ocupando el menor espacio de memoria posibleSimplicidad: 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 entradasFinitud: 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 mismosresultados (distinto sabor ...)
PROPIEDADES EXIGIBLESPROPIEDADES EXIGIBLES
Fundamentos de Informática ETSI Industrial 11 Universidad de Málaga José Antonio Gómez Ruiz
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.
Tema 2: Resolución de Problemas. Algoritmos y Programas
Estructura y Contenidos
Fundamentos de Informática ETSI Industrial 12 Universidad de Málaga José Antonio Gómez Ruiz
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)
CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE
Fundamentos de Informática ETSI Industrial 13 Universidad de Málaga José Antonio Gómez Ruiz
DESARROLLODiseñoImplementaciónVerificación
MANTENIMIENTO
Modificaciones y adaptaciones
Fallos de definición
Errores
DEFINICIÓNAnálisisEspecificación
de requisitos
Ciclo de vida lineal o en cascada
CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE
Fundamentos de Informática ETSI Industrial 14 Universidad de Málaga José Antonio Gómez Ruiz
Definición: descripción detallada de
Programa que se va a realizar
¿qué problema resuelve? ¿qué funciones o tareas debe realizar?
¿qué datos maneja? ¿qué restricciones existen? ...
Recursos necesarios
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 adaptacionesen la versión original ó incluso descatalogarla (se queda obsoleta)
CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE
Fundamentos de Informática ETSI Industrial 15 Universidad de Málaga José Antonio Gómez Ruiz
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 principioPueden hacerse compromisos de implementación en las primeras versiones del prototipo que al final mermen la calidad del producto
Escucharal clienteEscucharal cliente
Construir/revisar maqueta
Construir/revisar maqueta
El cliente prueba
la maqueta
El cliente prueba
la maqueta
CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE
Fundamentos de Informática ETSI Industrial 16 Universidad de Málaga José Antonio Gómez Ruiz
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
Prototipo tras1er incremento
análisis diseño implementación verificación
Prototipo tras2o incremento
análisis diseño implementación verificación
Prototipo tras3er incremento
análisis diseño implementación verificación
Producto finalanálisis diseño implementación verificación
...
CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE
Fundamentos de Informática ETSI Industrial 17 Universidad de Málaga José Antonio Gómez Ruiz
Modelo en espiral
Comunicacióncon el cliente
Planificación
ConstrucciónEvaluacióndel cliente
Ingeniería
Análisis de Riesgos
CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE
Fundamentos de Informática ETSI Industrial 18 Universidad de Málaga José Antonio Gómez Ruiz
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
...
METODOLOGÍA DE DISEÑOMETODOLOGÍA DE DISEÑO
Fundamentos de Informática ETSI Industrial 19 Universidad de Málaga José Antonio Gómez Ruiz
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
Esta división se repetirá sucesivamente hasta que los subproblemasresultantes se puedan resolver de una forma sencilla
Este método se conoce como diseño descendenteAl 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
DISEÑO DESCENDENTEDISEÑO DESCENDENTE
Fundamentos de Informática ETSI Industrial 20 Universidad de Málaga José Antonio Gómez Ruiz
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
Cada módulo se puede desarrollar de manera independiente (con sus propias fases de definición, desarrollo y mantenimiento)
Nivel 0
Nivel 1
Nivel 2
Nivel 3
DISEÑO DESCENDENTEDISEÑO DESCENDENTE
Fundamentos de Informática ETSI Industrial 21 Universidad de Málaga José Antonio Gómez Ruiz
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 Dividir la suma por el total de calificaciones
Imprimir resultado
Nivel 0
Nivel 1
Nivel 2
DISEÑO DESCENDENTEDISEÑO DESCENDENTE
Fundamentos de Informática ETSI Industrial 22 Universidad de Málaga José Antonio Gómez Ruiz
Ejemplo: cambio de una bombilla con un robot doméstico
Cambiar bombilla
Quitar la bombilla fundida Colocar la nueva bombilla
Situar la escalera debajo de la
bombilla fundida
Nivel 0
Nivel 1
Nivel 2
Subir por la escalera hasta
alcanzar la bombilla
Girar la bombilla en sentido
antihorario hasta soltarla
Elegir una nueva bombilla de la
misma potencia que la fundida
Enroscar la bombilla nueva en
sentido horario hasta que quede
apretada
Bajar de la escalera
Comprobar que la bombilla funciona
DISEÑO DESCENDENTEDISEÑO DESCENDENTE
Fundamentos de Informática ETSI Industrial 23 Universidad de Málaga José Antonio Gómez Ruiz
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.
Tema 2: Resolución de Problemas. Algoritmos y Programas
Estructura y Contenidos
Fundamentos de Informática ETSI Industrial 24 Universidad de Málaga José Antonio Gómez Ruiz
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
REPRESENTACIÓN DE ALGORITMOSREPRESENTACIÓN DE ALGORITMOS
Fundamentos de Informática ETSI Industrial 25 Universidad de Málaga José Antonio Gómez Ruiz
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)
DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO
Fundamentos de Informática ETSI Industrial 26 Universidad de Málaga José Antonio Gómez Ruiz
condición
etq
conector
flujo de control
SI NO
proceso
decisión
documento
entrada manual
Salida pantalla
terminador
entrada / salida
DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO
Fundamentos de Informática ETSI Industrial 27 Universidad de Málaga José Antonio Gómez Ruiz
DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO
Fundamentos de Informática ETSI Industrial 28 Universidad de Málaga José Antonio Gómez Ruiz
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
DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO
Fundamentos de Informática ETSI Industrial 29 Universidad de Málaga José Antonio Gómez Ruiz
Ejemplo: cálculo del valor absoluto de un número leído por teclado
x > 0
Inicio
SI NO
abs ← x
Fin
abs ← - x
Leer x
Escribir abs
DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO
Fundamentos de Informática ETSI Industrial 30 Universidad de Málaga José Antonio Gómez Ruiz
Ejemplo: cálculo de la suma de n números introducidos por teclado
s ← 0
n > 0
Inicio
SI NOn ← n - 1
s ← s + x Fin
Leer n
Leer x
Escribir s
DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO
Fundamentos de Informática ETSI Industrial 31 Universidad de Málaga José Antonio Gómez Ruiz
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.
DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO
Fundamentos de Informática ETSI Industrial 32 Universidad de Málaga José Antonio Gómez Ruiz
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
PSEUDOLENGUAJEPSEUDOLENGUAJE
Fundamentos de Informática ETSI Industrial 33 Universidad de Málaga José Antonio Gómez Ruiz
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
PSEUDOLENGUAJEPSEUDOLENGUAJE
Fundamentos de Informática ETSI Industrial 34 Universidad de Málaga José Antonio Gómez Ruiz
Ejemplo: cálculo del valor absoluto de un número leído por teclado
INICIOLEER xSI x > 0 ENTONCES
abs ← xEN OTRO CASO
abs ← - xFINSIESCRIBIR abs
FIN
PSEUDOLENGUAJEPSEUDOLENGUAJE
Fundamentos de Informática ETSI Industrial 35 Universidad de Málaga José Antonio Gómez Ruiz
Ejemplo: Cálculo de la suma de n números introducidos por teclado
INICIOS ← 0LEER nMIENTRAS n > 0 HACER
n ← n - 1LEER xs ← s + x
FINMIENTRASESCRIBIR s
FIN
PSEUDOLENGUAJEPSEUDOLENGUAJE
Fundamentos de Informática ETSI Industrial 36 Universidad de Málaga José Antonio Gómez Ruiz
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.
PSEUDOLENGUAJEPSEUDOLENGUAJE
Fundamentos de Informática ETSI Industrial 37 Universidad de Málaga José Antonio Gómez Ruiz
Ventajas Inconvenientes
Pseudolenguaje
• Fácil de modificar• La sintaxis no es rígida• Fácil de traducir a
un lenguaje deprogramación
• Imprecisión al usar
Diagramas de Flujo
• No tiene ambigüedad • Complicado de actualizarsi el algoritmo es complejo
el lenguaje naturalImprecisión al usar
• Independiente delidioma
• Fácil de “seguir” el flujodel algoritmo • La traducción a un lenguaje
de programación no esinmediata
PSEUDOLENGUAJE PSEUDOLENGUAJE vsvs DIAGRAMAS FLUJODIAGRAMAS FLUJO
Fundamentos de Informática ETSI Industrial 38 Universidad de Málaga José Antonio Gómez Ruiz
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.
Tema 2: Resolución de Problemas. Algoritmos y Programas
Estructura y Contenidos
Fundamentos de Informática ETSI Industrial 39 Universidad de Málaga José Antonio Gómez Ruiz
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
LENGUAJES DE PROGRAMACIÓNLENGUAJES DE PROGRAMACIÓN
Fundamentos de Informática ETSI Industrial 40 Universidad de Málaga José Antonio Gómez Ruiz
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), ...
LENGUAJES DE PROGRAMACIÓNLENGUAJES DE PROGRAMACIÓN
Fundamentos de Informática ETSI Industrial 41 Universidad de Málaga José Antonio Gómez Ruiz
Historia de los lenguaje de alto nivel:
FORTRANJohn Backus
1954
Ada 951995
C++Bjarne Stroustrup
1983 O
JavaJames Gosling
1995 O
O
FORTRAN 20022002 O
Delphi1995 V
PascalNiklaus Wirth
1970 IAda 83
DoD (EEUU)1983 I
CDennis Ritchie
1971 I
AlgolJohn BackusC.A.R. HoareNiklaus Wirth
1960 I
COBOLGrace Hopper
CODASYL1957 I
I
Haskell1992 F
LispJohn McCarthy
1959 F
PrologColmerauer, Roussel
1972 L
Modula-2Niklaus Wirth
1979 I
Smalltalk
Visual-C++1995 V
Perl, Python, JavaScript
LENGUAJES DE PROGRAMACIÓNLENGUAJES DE PROGRAMACIÓN
Fundamentos de Informática ETSI Industrial 42 Universidad de Málaga José Antonio Gómez Ruiz
El proceso de compilación es el proceso mediante el cual se traduceun 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
EL PROCESO DE COMPILACIÓNEL PROCESO DE COMPILACIÓN
Fundamentos de Informática ETSI Industrial 43 Universidad de Málaga José Antonio Gómez Ruiz
Editor Compilador E/Smatem.
gráfica
Bibliotecas
ejecutableprog.exe
entrada salida
fuente
prog.c
objeto
prog.o
prog.exe
Tiempo de ejecución
Tiempo de compilación
programador
usuario
Enlazador
EL PROCESO DE COMPILACIÓNEL PROCESO DE COMPILACIÓN
Fundamentos de Informática ETSI Industrial 44 Universidad de Málaga José Antonio Gómez Ruiz
biblioteca 3
Intercambiar(int v[], int k){int temporal;temporal = v[k];v[k] = v[k+1];v[k+1] = temporal;
}
fuenteCompilador
000000000010100001000000000010001110100011000001100010100011000011110010101011000011110010101011000001100010000000110011100000
ejecutable
objeto
Enlazador
código intermedio
biblioteca 2biblioteca 1
EL PROCESO DE COMPILACIÓNEL PROCESO DE COMPILACIÓN
Fundamentos de Informática ETSI Industrial 45 Universidad de Málaga José Antonio Gómez Ruiz
Tema 2: Resolución de Problemas. Algoritmos y Programas
FIN DEL TEMA
top related