650 likes | 1.02k Views
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.
E N D
Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++
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 • Nivel de máquina • Primitivos • Proporcionados por el Hw
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
Tipos de datos: Abstractos • Stacks • Colas • Heaps, etc. • Nivel de usuario • Con base en tipos elementales y estructurados • Permiten extender un LP
Evolución de conceptos • ABSTRACCIÓN DE CONTROL • Lógica del código • Sentencias • Unidades de Programas
Sentencias Constructores de código que facilitan la programación estructurada • Asignación • Decisión • Iteración
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
Clasificación Lenguajes Naturales De Programación De Máquina Simbólicos Bajo nivel Alto Nivel • Imperativos • Funcionales • Lógicos • OO
C++ Delphi Pascal C LAN ForTran Mayor grado de abstracción L ENS LM COBOL Niveles de abstracción
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
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
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
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
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).
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
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
Criterios Sintácticos • Legibilidad: COBOL:Write sueldo after advancing 2 lines • Facilidad de escritura: APL: AA*-1 Invierte una matriz • Facilidad de traducción: El compilador debiera generar poco código
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
Elementos Sintácticos • Set de Caracteres • Identificadores • Símbolos para operadores • Palabras claves y reservadas • Comentarios • Abreviaciones • Espacios
Elementos Sintácticos • Delimitadores • Formatos Fijo y Libre • Expresiones • Sentencias • Estructura de Unidades de programa
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
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
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
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
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>
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
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>
BNF Recursiva Sentencia <sentencia> ::= <simple> |<compuesta> <simple> ::= <asignación> |<invocación> |<selección> |<repetición> <compuesta> ::= {<sentencias>} <sentencias> ::= <simple>; |<simple>; <sentencias>
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> ::= *|/
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
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:
<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
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)
Identificador Letra Letra Letra Dígito _ A 0 B 1 z 9 Diagramas Sintácticos Dígito
Número entero Dígito Dígito Dígito Diagramas Sintácticos Número real
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 …
NUMERIC ALPHABETIC <identificador> ISNOT CBL (COBOL – Like) <entero> ::= [ + ] <digito> ... <digito> <letra> - <identificador> ::= <letra> ... <condición>::=
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?
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>
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
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
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
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++