Download Tema 2: Resolución de Problemas. Algoritmos y Programas Tema 2

Document related concepts
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