La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++

Presentaciones similares


Presentación del tema: "Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++"— Transcripción de la presentación:

1 Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++

2 Evolución de Conceptos

3 Evolución de conceptos
ABSTRACCIÓN DE DATOS Tipos de datos Elementales (HW) Estructurados (LP) Abstractos (U)

4 Tipos de datos: Elementales
Enteros Reales Booleanos Caracteres Nivel de máquina Primitivos Proporcionados por el Hw

5 Tipos de datos: Estructurados
Arreglos Estructuras (registros) Nivel de lenguaje de programación (LP) Con base en tipos elementales Se utilizan constructores de tipo que  al LP

6 Tipos de datos: Abstractos
Stacks Colas Heaps, etc. Nivel de usuario Con base en tipos elementales y estructurados Permiten extender un LP

7 Evolución de conceptos
ABSTRACCIÓN DE CONTROL Lógica del código Sentencias Unidades de Programas

8 Sentencias Constructores de código que facilitan la programación estructurada Asignación Decisión Iteración

9 Unidades de programas Permiten programación modular
Generalizan la noción de operador Permiten encapsular parte de un algoritmo Tienen una única definición Tienen múltiples activaciones

10 Clasificación de los Lenguajes

11 Clasificación Lenguajes Naturales De Programación De Máquina
Simbólicos Bajo nivel Alto Nivel Imperativos Funcionales Lógicos OO

12 Niveles de abstracción
L ENS LM LAN ForTran COBOL Pascal C C++ Delphi Mayor grado de abstracción

13 Lenguajes Imperativos
Los primeros LP fueron creados en los 50's: Fortran, COBOL, Pascal, C, Ada Se denominan también, procedurales Tienen como característica cambiar el estado de las variables por asignación Están influenciados por la máquina en la que deben "correr": Máquina de Von Neuman CPU RAM

14 Lenguajes Funcionales
Los primeros aparecieron en los 60's: Lisp, Apl, Forth Aplican funciones, ya sea, recursivamente o por composición Se caracterizan por una programación basada en expresiones (sin asignaciones) Los usuarios NO deben preocuparse de manejar el almacenamiento de datos

15 Lenguajes Funcionales
Ejemplo en Scheme: Función f(x) = (x + 1)2 + (2x)2 (define cuad x) (* x x)) (define (sum x) (+ x x)) (define (mult x y) (* x y)) (define (f x) (sum (cuad (sum (x 1)) (cuad (mult (2 x)))) (f 2) 25

16 Lenguajes Lógicos Aparecieron en los 70's : PROLOG
Fueron pensados principalmente para aplicaciones de inteligencia artificial (IA) Revisan la presencia de cierta condición, la cual, si es verdadera se ejecuta una acción Establecen relaciones de inferencia entre clases de objetos

17 Lenguajes Lógicos Ejemplo en Prolog: El cero es un número natural
Si X es un número natural, entonces s(X) (sucesor de X) también es un número natural natural(0). natural(s(X)) :- natural(X). 0 + X = X Si X + Y = Z entonces s(X) + Y = s(Z) suma(0, X, X). suma(s(X), Y, s(Z)) :- suma(X, Y, Z).

18 Lenguajes OO Algunos de ellos son Smalltalk, Eiffel, C++, Java
Representan un modelo de interacción entre objetos, cada uno de los cuales actúa en función un estado y un comportamiento Se construyen objetos complejos a partir de objetos simples, bajo el principio de la reutilización de código

19 Sintaxis

20 Sintaxis Conjunto de reglas que determinan si las sentencias de un programa están bien formadas o no Su objetivo es proveer una notación que permita la comunicación entre el programador y el procesador del lenguaje

21 Criterios Sintácticos
Legibilidad: COBOL: Write sueldo after advancing 2 lines Facilidad de escritura: APL: AA* Invierte una matriz Facilidad de traducción: El compilador debiera generar poco código

22 Criterios Sintácticos
Ausencia de ambigüedad: Evitar que una estructura tenga más de un significado Por ejemplo, en Fortran M(i) puede significar: un elemento del arreglo M, ó una llamada a la función M con parámetro i

23 Elementos Sintácticos
Set de Caracteres Identificadores Símbolos para operadores Palabras claves y reservadas Comentarios Abreviaciones Espacios

24 Elementos Sintácticos
Delimitadores Formatos Fijo y Libre Expresiones Sentencias Estructura de Unidades de programa

25 Gramáticas

26 Gramática Representa la definición formal de la sintaxis de un lenguaje Consta de un conjunto de reglas que especifican las NORMAS de escritura para formar estructuras en un lenguaje

27 Gramática formal destinada a la descripción de un lenguaje
Metalenguaje Gramática formal destinada a la descripción de un lenguaje Existen tres metalenguajes de uso común BNF (Backus-Naur-Form) Diagramas sintácticos CBL (COBOL-Like) donde BNF es el referente base

28 BNF Notación desarrollada por los especialistas Backus y Naur para definir lenguaje Algol 60 Metasímbolos: < >: indica símbolo NO-TERMINAL o meta variable ::= : "Se define como" |: "o" { }n: Repetición. Mínimo n veces identificador: Palabra reservada, constante o símbolo TERMINAL

29 BNF Número real <real> ::= <secuencia> . <secuencia>
<secuencia> ::= <dígito> {<dígito>}0 <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Identificador <id> ::= <letra>{<letra> |<dígito>}0 <letra> ::= A | B | C | … | Z | a | b | c | … | z

30 BNF Sentencia if <s-if> ::= if ( <expresión booleana> ) <sentencia> | if ( <expresión booleana> ) <sentencia> else <sentencia> Sentencia while <s-while> ::= while ( <expresión booleana> ) <sentencia> Sentencia do-while <s-do-while> ::= do ( <> ) <sentencia>

31 BNF Recursiva Número entero
<entero> ::= <dígito> | <dígito> <entero> <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Número real <real> ::= <secuencia> . <secuencia> <secuencia> ::= <dígito> | <dígito> <secuencia>

32 BNF Recursiva <identificador> ::= <letra> | <letra> <secuencia> <secuencia> ::= <carácter> | <carácter> <secuencia> <carácter> ::= <letra> | <dígito> Multilista: (1 2 (3 4 (5) 6) 7 8) <mlista> ::= () | (<lista>) <lista> ::= <elemento> | <elemento> <lista> <elemento> ::= <átomo> | <mlista>

33 BNF Recursiva Sentencia
<sentencia> ::= <simple> | <compuesta> <simple> ::= <asignación> | <invocación> | <selección> | <repetición> <compuesta> ::= {<sentencias>} <sentencias> ::= <simple>; | <simple>; <sentencias>

34 BNF Recursiva x a*b  c/d a * b Expresión aritmética
término término a*b  c/d a * b factor <ea> ::= <término> | <st> <término> | <ea> <st> <término> <término> ::= <factor> | <factor> <sf> <término> <factor> ::= <id> | <constante> | (<ea>) <st> ::= + |  <sf> ::= * | /

35 BNF Recursiva (a +b) *c * + Expresión Término Factor Término
Identificador Término + Expresión Factor Término c Identificador Factor a Identificador b

36 Diagramas Sintácticos
Constituyen un método de descripción de lenguajes, equivalente a la BNF, originalmente propuesto por N. Wirth. para definir sintáxis de Pascal Equivalencias entre BNF y Diagramas sintácticos:

37 Diagramas Sintácticos
<S> ::= <v1> | <v2> ··· | <vn> Cada ocurrencia de un símbolo terminal corresponde al diagrama Vn V1 V2 Cada ocurrencia de un símbolo no terminal corresponde al diagrama X

38 Diagramas Sintácticos
Una producción de la forma: <S> ::= {<x>}0 corresponde al siguiente diagrama Una producción de la forma: <S> ::= <x>{<x>}0 corresponde al siguiente diagrama (mientras) (repetir) X X

39 Diagramas Sintácticos
Identificador Letra A B z _ Letra Dígito Dígito 1 9

40 Diagramas Sintácticos
Número entero Dígito Número real Dígito

41 CBL (COBOL – Like) Constituye una extensión de la BNF destinada a la descripción sintáctica del lenguaje Cobol. Elementos opcionales se denotan entre paréntesis cuadrados  x  Elementos alternativos se listan verticalmente entre paréntesis llave { x } Elementos alternativos opcionales se listan verticalmente entre paréntesis cuadrados   La repetición de los elementos se indica mediante tres puntos a continuación de una ocurrencia del elemento  x …

42 CBL (COBOL – Like) <entero> ::= [ + ] <digito> ...
<letra> - <identificador> ::= <letra> <identificador> IS NOT NUMERIC ALPHABETIC <condición>::=

43 Semántica

44 Semántica Sintaxis  ¡Cómo se expresa un concepto!
Semántica  ¡Qué significa ese concepto! Se define como un conjunto de reglas que describen el comportamiento de un lenguaje en tiempo de ejecución ¿Qué ocurre con la ejecución de un programa ? ¿Qué sentencias se ejecutarán? ¿Qué valores se asignan a determinadas variables? ¿Qué salidas se obtienen?

45 Semántica Una expresión sintáctica, mediante BNF, como puede tener dos interpretaciones semánticas Por ejemplo, 09/04/2002 se entiende como 9 de Abril de 2002 en Chile 4 de Septiembre de 2002 en EEUU <fecha> ::= <d><d>/<d><d>/<d><d><d><d>

46 Semántica Métodos formales de especificación semántica:
Operacional : Máquina teórica Axiomático : Cálculo del predicados (PROLOG) Denotacional : Teoría de las funciones (Lisp) La especificación de la semántica de una sentencia se hará mediante la notación usada por los diccionarios enciclopédicos

47 Procesadores de Lenguajes

48 Procesador DEFINICIÓN
Un procesador es una máquina capaz de ejecutar acciones expresadas en algún lenguaje concreto Actualmente, el único lenguaje concreto que existe es el lenguaje de máquina

49 Traductor Preprocesador Compilador Ensamblador Ligador Cargador
Es un decodificador que acepta programas escritos en algún lenguaje fuente y genera programas, funcionalmente equivalentes, en algún lenguaje objeto Programa en Lenguaje Fuente Traductor Programa en Lenguaje Objeto Preprocesador Compilador Ensamblador Ligador Cargador

50 Programa en extensión de LAN
Pre-procesador Es un traductor cuyo lenguaje fuente es una extensión de un lenguaje de alto nivel lenguaje objeto es el estándar del lenguaje de alto nivel Por ejemplo, C y C++ Programa en extensión de LAN Preprocesador Programa en LAN estándar Pre-procesador Compilador Ensamblador Cargador C++ C Leng. Ensam. Código Reubicable Ejecutable

51 Compilador Es un traductor cuyo
lenguaje fuente es un lenguaje de alto nivel lenguaje objeto es un lenguaje intermedio orientado a la máquina código objeto Programa en Lenguaje de Alto Nivel Compilador Programa en L orientado a la Máquina Análisis lexicográfico Análisis sintáctico Generación de código Optimización de código

52 Compilador Análisis lexicográfico
Reconocimiento y clasificación de tokens básicos: Constantes Identificadores Palabras reservadas, etc Construcción de la tabla de símbolos Lista de todos los símbolos y sus atributos usados en un programa (variables, etiquetas, rutinas, etc)

53 Compilador Análisis sintáctico + a + b*c *
Generación de un árbol de reconocimiento usando una representación interna de la gramática del lenguaje Expresión Término + Factor Identificador a * b c a + b*c

54 Enlace entre la sintaxis y la semántica de un lenguaje
Compilador Generación de código Enlace entre la sintaxis y la semántica de un lenguaje Convierte el árbol de reconocimiento en una lista equivalente de instrucciones en lenguaje de máquina

55 Compilador Optimización de código
Refinamiento del código generado para mejorar el rendimiento en tiempo de ejecución Ubicación de Construcciones semánticas redundantes Uso ineficiente de registros Etc.

56 Ensamblador Es un traductor cuyo
Lenguaje fuente es un lenguaje ensamblador (representación simbólica del lenguaje de máquina) Lenguaje objeto es el lenguaje de máquina del computador Programa en Leng. Ensam. Ensamblador Programa en LM

57 Programa en lenguaje de máquina
Ligador Es un traductor cuyo Lenguaje fuente es el lenguaje de máquina Integra, en un único módulo de carga, el código compilado de la aplicación con el código compilado preexistente correspondiente a las librerías utilizadas Lenguaje objeto es el lenguaje máquina, pero en la versión denominada código reubicable Programa en lenguaje de máquina Linker Programa en leng. de máquina código reubicable

58 Programa como código reubicable
Cargador Es un traductor cuyo Lenguaje fuente es el código reubicable (lenguaje de máquina con direcciones relativas) Carga el programa en la RAM, actualizando las tablas de datos, es decir, transformado direcciones relativa en absolutas Lenguaje objeto es el código real (lenguaje de máquina con direcciones absolutas) Programa Ejecutable Programa como código reubicable Loader Programa como código real

59 Intérprete Es un procesador cuyo lenguaje concreto es un lenguaje de alto nivel Hoy, ningún computador es capaz de ejecutar código distinto al de máquina Se debe simular mediante software la existencia de un computador cuyo lenguaje de máquina es un lenguaje de alto nivel (máquina virtual)

60 Compilador-Intérprete
Diferencias Compilador Sólo traduce Traduce sólo una vez cada sentencia Acepta las instrucciones de acuerdo a su secuencialidad física Intérprete Decodifica y ejecuta Puede procesar varias veces algunas e ignorar completamente otras instrucciones Acepta las instrucciones según su secuencialidad lógica


Descargar ppt "Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++"

Presentaciones similares


Anuncios Google