Professional Documents
Culture Documents
INTRODUCCIN
Evolucin de Conceptos
Evolucin de conceptos
ABSTRACCIN DE DATOS
Tipos de datos
Elementales (HW) Estructurados (LP) Abstractos (U)
3
Nivel de lenguaje de programacin (LP) Con base en tipos elementales Se utilizan constructores de tipo que al LP
Evolucin de conceptos
ABSTRACCIN DE CONTROL
Sentencias
Constructores de cdigo programacin estructurada que facilitan la
Unidades de programas
Permiten programacin modular Generalizan la nocin de operador Permiten encapsular parte de un algoritmo Tienen una nica definicin Tienen mltiples activaciones
10
Clasificacin
Lenguajes Naturales De Programacin De Mquina Simblicos Bajo nivel Alto Nivel Imperativos Funcionales Lgicos OO
11
Niveles de abstraccin
C++ Delphi Pascal Mayor grado de abstraccin L ENS LM C
12
Lenguajes Imperativos
Los primeros LP fueron creados en los 50's: Fortran, COBOL, Pascal, C, Ada Se denominan tambin, procedurales Tienen como caracterstica cambiar el estado de las variables por asignacin Estn influenciados por la mquina en la que deben "correr": Mquina de Von Neuman
CPU RAM
13
Lenguajes Funcionales
Aplican funciones, ya sea, recursivamente o por composicin Se caracterizan por una programacin basada en expresiones (sin asignaciones) Los usuarios NO deben preocuparse manejar el almacenamiento de datos de
14
Lenguajes Funcionales
Ejemplo en Scheme: Funcin 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
15
Lenguajes Lgicos
Aparecieron en los 70's : PROLOG Fueron pensados principalmente para aplicaciones de inteligencia artificial (IA) Revisan la presencia de cierta condicin, la cual, si es verdadera se ejecuta una accin Establecen relaciones de inferencia entre clases de objetos
16
Lenguajes Lgicos
Ejemplo en Prolog: El cero es un nmero natural Si X es un nmero natural, entonces s(X) (sucesor de X) tambin es un nmero 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).
17
Lenguajes OO
Algunos de ellos son Smalltalk, Eiffel, C++, Java Representan un modelo de interaccin entre objetos, cada uno de los cuales acta en funcin un estado y un comportamiento Se construyen objetos complejos a partir de objetos simples, bajo el principio de la reutilizacin de cdigo
18
Sintaxis
19
Sintaxis
Conjunto de reglas que determinan si las sentencias de un programa estn bien formadas o no Su objetivo es proveer una notacin que permita la comunicacin entre el programador y el procesador del lenguaje
20
Criterios Sintcticos
Legibilidad:
COBOL: Write sueldo after advancing 2 lines
Facilidad de escritura:
APL: AnA*-1 Invierte una matriz
Facilidad de traduccin:
El compilador debiera generar poco cdigo
21
Criterios Sintcticos
Ausencia de ambigedad:
Evitar que una estructura tenga ms de un significado
22
Elementos Sintcticos
Set de Caracteres Identificadores Smbolos para operadores Palabras claves y reservadas Comentarios Abreviaciones Espacios
23
Elementos Sintcticos
24
Gramticas
25
Gramtica
Representa la definicin 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
26
Metalenguaje
Gramtica formal destinada a la descripcin de un lenguaje
Existen tres metalenguajes de uso comn
BNF (Backus-Naur-Form) Diagramas sintcticos CBL (COBOL-Like)
BNF
Notacin desarrollada por los especialistas Backus y Naur para definir lenguaje Algol 60 Metasmbolos:
< >: indica smbolo NO-TERMINAL o meta variable ::= : "Se define como" |: "o" { }n: Repeticin. Mnimo n veces identificador: Palabra reservada, constante o smbolo TERMINAL
28
BNF
Nmero real <real> ::= <secuencia> . <secuencia> <secuencia> ::= <dgito> {<dgito>}0 <dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Identificador <id> ::= <letra>{<letra> |<dgito>}0 <letra> ::= A | B | C | |Z|a|b|c| |z
29
BNF
Sentencia if <s-if> ::= if ( <expresin booleana> ) <sentencia> | if ( <expresin booleana> ) <sentencia> else <sentencia> Sentencia while <s-while> ::= while ( <expresin booleana> ) <sentencia> Sentencia do-while <s-do-while> ::= do ( <> ) <sentencia>
30
BNF Recursiva
Nmero entero <entero> ::= <dgito> | <dgito> <entero> <dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Nmero real <real> ::= <secuencia> . <secuencia> <secuencia> ::= <dgito> | <dgito> <secuencia> <dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
31
BNF Recursiva
<identificador> ::= <letra> | <letra> <secuencia> <secuencia> ::= <carcter> | <carcter> <secuencia> <carcter> ::= <letra> | <dgito> Multilista: (1 2 (3 4 (5) 6) 7 8) <mlista> ::= () | (<lista>) <lista> ::= <elemento> | <elemento> <lista> <elemento> ::= <tomo> | <mlista>
32
BNF Recursiva
Sentencia <sentencia> ::= <simple> | <compuesta> <simple> ::= <asignacin> | <invocacin> | <seleccin> | <repeticin> <compuesta> ::= {<sentencias>} <sentencias> ::= <simple>; | <simple>; <sentencias>
33
BNF Recursiva
Expresin aritmtica
x
trmino
a*b c/d
trmino trmino
a * b
factor factor
<ea> ::= <trmino> | <st> <trmino> | <ea> <st> <trmino> <trmino> ::= <factor> | <factor> <sf> <trmino> <factor> ::= <id> | <constante> | (<ea>) <st> ::= + | <sf> ::= * | /
34
BNF Recursiva
Expresin Trmino Factor (Expresin) Trmino Factor Identificador a
(a +b) *c
+ Expresin
Trmino Factor Identificador b
35
Diagramas Sintcticos
Constituyen un mtodo de descripcin de lenguajes, equivalente a la BNF, originalmente propuesto por N. Wirth. para definir sintxis de Pascal
36
Diagramas Sintcticos
<S> ::= <v1> | <v2> | <vn> Cada ocurrencia de un smbolo terminal corresponde al diagrama
E V1 V2 y y y Vn
37
Diagramas Sintcticos
Una produccin de la forma: <S> ::= {<x>}0 corresponde al siguiente diagrama Una produccin de la forma: <S> ::= <x>{<x>}0 corresponde al siguiente diagrama
(mientras)
(repetir)
X
38
Diagramas Sintcticos
Identificador Letra
y y
A B
Letra
z Letra Dgito _
Dgito
y y
0 1
39
Diagramas Sintcticos
Nmero entero
Dgito
Nmero real
Dgito y Dgito
40
CBL (COBOL
Like)
Constituye una extensin de la BNF destinada a la descripcin sintctica del lenguaje Cobol.
Elementos opcionales se denotan entre parntesis cuadrados ?xA Elementos alternativos se listan verticalmente entre parntesis llave { x } Elementos alternativos opcionales se listan verticalmente entre parntesis cuadrados ? A La repeticin de los elementos se indica mediante tres puntos a continuacin de una ocurrencia del elemento ? x A
41
CBL (COBOL
Like)
<digito> <letra> -
...
<condicin>::=<identificador> IS NOT
NUMERIC ALPHABETIC
42
Semntica
43
Semntica
Sintaxis
Semntica Qu significa ese concepto! Se define como un conjunto de reglas que describen el comportamiento de un lenguaje en tiempo de ejecucin
Qu ocurre con la ejecucin de un programa ? Qu sentencias se ejecutarn? Qu valores se asignan a determinadas variables? Qu salidas se obtienen?
44
Semntica
Una expresin sintctica, mediante BNF, como
45
Semntica
Mtodos formales de especificacin semntica:
Operacional Axiomtico
La especificacin de la semntica de una sentencia se har mediante la notacin usada por los diccionarios enciclopdicos
46
Procesadores de Lenguajes
47
Procesador
DEFINICIN Un procesador es una mquina capaz de ejecutar acciones expresadas en algn lenguaje concreto Actualmente, el nico lenguaje concreto que existe es el lenguaje de mquina
48
Traductor
Es un decodificador que acepta programas escritos en algn lenguaje fuente y genera programas, funcionalmente equivalentes, en algn lenguaje objeto
Programa en Lenguaje Fuente Traductor Programa en Lenguaje Objeto
Pre-procesador
Es un traductor cuyo lenguaje fuente es una extensin de un lenguaje de alto nivel lenguaje objeto es el estndar del lenguaje de alto nivel
Pre-procesador
Compilador
Ensamblador
Cargador
C++
Leng. Ensam.
Cdigo Reubicable
Cdigo Ejecutable
50
Compilador
Es un traductor cuyo lenguaje fuente es un lenguaje de alto nivel lenguaje objeto es un lenguaje intermedio orientado a la mquina
cdigo objeto
Programa en Lenguaje de Alto Nivel Compilador Programa en L orientado a la Mquina
Compilador
Anlisis lexicogrfico Reconocimiento y clasificacin de tokens bsicos:
Construccin de la tabla de smbolos Lista de todos los smbolos y sus atributos usados en un programa (variables, etiquetas, rutinas, etc)
52
Compilador
Anlisis sintctico Generacin de un rbol de reconocimiento usando una representacin interna de la gramtica del lenguaje Expresin
a + b*c
Trmino + Factor
Expresin Trmino
Identificador Factor a
* Trmino
Identificador c
53
Identificador Factor b
Compilador
Generacin de cdigo Enlace entre la sintaxis y la semntica de un lenguaje
54
Compilador
Optimizacin de cdigo Refinamiento del cdigo generado para mejorar el rendimiento en tiempo de ejecucin Ubicacin de Construcciones semnticas redundantes Uso ineficiente de registros Etc.
55
Ensamblador
Es un traductor cuyo Lenguaje fuente es un lenguaje ensamblador (representacin simblica del lenguaje de mquina) Lenguaje objeto es el lenguaje de mquina del computador
Ensamblador
Programa en LM
56
Ligador
Es un traductor cuyo Lenguaje fuente es el lenguaje de mquina Integra, en un nico mdulo de carga, el cdigo compilado de la aplicacin con el cdigo compilado preexistente correspondiente a las libreras utilizadas
57
Cargador
Es un traductor cuyo Lenguaje fuente es el cdigo reubicable (lenguaje de mquina con direcciones relativas) Carga el programa en la RAM, actualizando las tablas de datos, es decir, transformado direcciones relativa en absolutas
58
Intrprete
Es un procesador cuyo lenguaje concreto es un lenguaje de alto nivel
Se debe simular mediante software la existencia de un computador cuyo lenguaje de mquina es un lenguaje de alto nivel (mquina virtual)
59
Compilador-Intrprete
Diferencias
Compilador
Slo traduce Traduce slo una vez cada sentencia Acepta las instrucciones de acuerdo a su secuencialidad fsica
Intrprete
Decodifica y ejecuta Puede procesar varias veces algunas e ignorar completamente otras instrucciones Acepta las instrucciones segn su secuencialidad lgica
60