1 / 60

1. INTRODUCCIÓN

Cobol. C. Pascal. Fortran. 1. INTRODUCCIÓN. SmallTalk. Java. C++. Evolución de Conceptos. Evolución de conceptos. ABSTRACCIÓN DE DATOS Tipos de datos. Elementales (HW) Estructurados (LP) Abstractos (U). Tipos de datos: Elementales. Enteros Reales Booleanos Caracteres.

tivona
Download Presentation

1. INTRODUCCIÓN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. C++ Delphi Pascal C LAN ForTran Mayor grado de abstracción L ENS LM COBOL Niveles de abstracción

  13. CPU RAM 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 elestado de las variables por asignación • Están influenciados por la máquina en la que deben "correr": Máquina de Von Neuman

  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*-1 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. 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 Algol60 • 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> <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

  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. a*b  c/d x a * b término término término factor factor BNF Recursiva Expresión aritmética <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 Expresión Término Término Factor * (a +b) *c (Expresión) Factor Identificador Término + Expresión c Término Factor Factor Identificador 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. <S> ::= <v1> | <v2> ··· | <vn> Cada ocurrencia de un símbolo terminal corresponde al diagrama V1 V2    Vn  X Diagramas Sintácticos Cada ocurrencia de un símbolo no terminal corresponde al diagrama

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

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

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

  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. NUMERIC ALPHABETIC <identificador> ISNOT CBL (COBOL – Like) <entero> ::= [ + ] <digito> ... <digito> <letra> - <identificador> ::= <letra> ... <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. Programa en Lenguaje Fuente Programa en Lenguaje Objeto Traductor Traductor Es un decodificador que acepta programas escritos en algún lenguaje fuente y genera programas, funcionalmente equivalentes, en algún lenguaje objeto Preprocesador Compilador Ensamblador Ligador Cargador

  50. Programa en extensión de LAN Programa en LAN estándar Preprocesador Pre-procesador Compilador Ensamblador Cargador Leng. Ensam. Código Reubicable Código Ejecutable C++ C 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++

More Related