You are on page 1of 60

1.

INTRODUCCIN

Evolucin de Conceptos

Evolucin de conceptos


ABSTRACCIN DE DATOS


Tipos de datos
Elementales (HW) Estructurados (LP) Abstractos (U)
3

Tipos de datos: Elementales


Enteros Reales Booleanos Caracteres

Nivel de mquina Primitivos Proporcionados por el Hw

Tipos de datos: Estructurados


Arreglos Estructuras (registros)

Nivel de lenguaje de programacin (LP) Con base en tipos elementales Se utilizan constructores de tipo que al LP

Tipos de datos: Abstractos


Stacks Colas Heaps, etc.

Nivel de usuario Con base en tipos elementales y estructurados Permiten extender un LP

Evolucin de conceptos


ABSTRACCIN DE CONTROL


Lgica del cdigo


Sentencias Unidades de Programas

Sentencias
Constructores de cdigo programacin estructurada que facilitan la

Asignacin Decisin Iteracin

Unidades de programas

Permiten programacin modular Generalizan la nocin de operador Permiten encapsular parte de un algoritmo Tienen una nica definicin Tienen mltiples activaciones

Clasificacin de los Lenguajes

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


Los primeros aparecieron en Apl, Forth

los 60's: Lisp,

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

Por ejemplo, en Fortran M(i) puede significar:


 

un elemento del arreglo M, una llamada a la funcin M con parmetro i

22

Elementos Sintcticos
      

Set de Caracteres Identificadores Smbolos para operadores Palabras claves y reservadas Comentarios Abreviaciones Espacios

23

Elementos Sintcticos
    

Delimitadores Formatos Fijo y Libre Expresiones Sentencias Estructura de Unidades de programa

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)

donde BNF es el referente base


27

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

Trmino Factor Identificador 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

Equivalencias entre BNF y Diagramas sintcticos:

36

Diagramas Sintcticos
<S> ::= <v1> | <v2> | <vn> Cada ocurrencia de un smbolo terminal corresponde al diagrama
E V1 V2 y y y Vn

Cada ocurrencia de un smbolo no terminal corresponde al diagrama


X

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)

<entero> ::= [ + ] <digito> ...

<identificador> ::= <letra>

<digito> <letra> -

...

<condicin>::=<identificador> IS NOT

NUMERIC ALPHABETIC

42

Semntica

43

Semntica
 Sintaxis

Cmo se expresa un concepto!

 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

<fecha> ::= <d><d>/<d><d>/<d><d><d><d>


puede tener dos interpretaciones semnticas Por ejemplo, 09/04/2002 se entiende como 9 de Abril de 2002 en Chile 4 de Septiembre de 2002 en EEUU

45

Semntica
Mtodos formales de especificacin semntica:
 Operacional  Axiomtico

: Mquina terica : Clculo del predicados (PROLOG)

 Denotacional : Teora de las funciones (Lisp)

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

Preprocesador Compilador Ensamblador Ligador Cargador


49

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


Por ejemplo, C y C++


Programa en extensin de LAN Preprocesador Programa en LAN estndar

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

Anlisis lexicogrfico Anlisis sintctico Generacin de cdigo Optimizacin de cdigo


51

Compilador
Anlisis lexicogrfico Reconocimiento y clasificacin de tokens bsicos:
  

Constantes Identificadores Palabras reservadas, etc

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

Convierte el rbol de reconocimiento en una lista equivalente de instrucciones en lenguaje de mquina

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

Programa en Leng. Ensam.

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


Lenguaje objeto es el lenguaje mquina, pero en la versin denominada cdigo reubicable


Programa en lenguaje de mquina Linker Programa en leng. de mquina cdigo reubicable

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


Lenguaje objeto es el cdigo real (lenguaje de mquina con direcciones absolutas)


Programa Ejecutable
Programa como cdigo reubicable Loader Programa como cdigo real

58

Intrprete
Es un procesador cuyo lenguaje concreto es un lenguaje de alto nivel

Hoy, ningn computador es capaz de ejecutar cdigo distinto al de mquina

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

You might also like