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

Slides:



Advertisements
Presentaciones similares
Clasificación de los compiladores
Advertisements

¿Qué es Sofware? Son el conjunto de instrucciones que dirigen las actividades del Hardware Consiste en programas, módulos de soporte y archivos de datos,
Estrella 0 - Fundamentos de la Programación
Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION
TEMA 3 Parte A Lenguajes de programación. Criterios de clasificación según su nivel de abstracción según la forma de ejecución según el paradigma de programación.
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
DESARROLLO DE PROGRAMAS
UNIDAD II: ALGORITMOS Y LENGUAJES
Lenguajes de programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Lenguajes de programación
Unidad 1. Introducción al proceso de compilación.
Teoría de lenguajes y compiladores
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
UNIVERSIDAD LATINA (UNILA) INTRODUCCION A LA PROGRAMACIÓN
Programación 1 Introducción
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Traducción dirigida por la Sintaxis
Teoría de lenguajes y compiladores
Lenguajes de programación
METODOLOGIA DE LA PROGRAMACION
Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Tema 6. Conceptos básicos de programación
Conceptos Fundamentales
ALGORITMOS Y ESTRUCTURAS DE DATOS
Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.
PROGRAMACIÓN LÓGICA.
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
TRADUCTOR DE UN PROGRAMA
M.C. Meliza Contreras González
Problemas, algoritmos y programas: Modelar: Simular o programar su solución en un computador. Algoritmos: Es un conjunto finito, y no ambiguo de etapas.
INTRODUCCIÓN A LA COMPUTACIÓN
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
Tema 1 Entorno de la programación. Conceptos elementales Algoritmo  Secuencia ordenada de pasos exentos de ambigüedad que conduce a la resolución de.
 Fue en el año 1945 cuando el matemático Jhon Von Neumann, fascinado por las posibilidades del ENIAC, demostró que una computadora podía tener una estructura.
Procesadores de Lenguajes
LENGUAJES DE PROGRAMACIÓN
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
PROGRAMACIÓNPROGRAMACIÓN FCC-BUAP. 1. INTRODUCCIÓN A LA PROGRAMACIÓN.
Programación de Sistemas
Tema 1. Introducción y Conceptos Básicos
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
INFORMATICA VII (Programación e implementación de sistemas)
Tema 6. Introducción a la programación
¿Qué son Los Lenguajes de Programación?
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
Facultad de Ingeniería
Lenguajes de Programación
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Teoría de lenguajes y compiladores
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
ESCUELA NORMAL “PROF. DARÍO RODRÍGUEZ CRUZ” Licenciatura en educación preescolar Alumnas: *Mayra * Monserrat * Idalia *Cinthia Curso: las TIC en la educación.
Prof. Flor Narciso Departamento de Computación
PRINCIPIOS DE PROGRAMACIÓN
INTRODUCCIÓN LI & MSC OSCAR RAMÍREZ CORTÉS U NIVERSIDAD DE LA H UASTECA V ERACRUZANA L ENGUAJES DE P ROGRAMACIÓN.
Lenguaje programación
Es un tipo especial de software que nos permite *Crear *Desarrollar *Programar otras aplicaciones. Haciendo uso de sus conocimientos lógicos y lenguajes.
Lic. Carla Aguirre Montalvo
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Aspectos de diseñó de los lenguajes de programación
Programación de Sistemas
TEMA 4: MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
 Panorama General Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
PARADIGMA Es un marco de referencia que impone reglas sobre cómo se deben hacer las cosas. CONCEPTO DE PARADIGMA DE PROGRAMACION colección de modelos conceptuales.
Fundamentos de Programación Unidad I Conceptos Básicos.
Transcripción de la presentació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 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 de los Lenguajes

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

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

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

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

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: AA*-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áticas

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

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

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

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>

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>

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> ::= * | /

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

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:

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

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

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

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

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 …

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

Semántica

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

Procesadores de Lenguajes

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

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

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

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

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)

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

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

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.

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

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

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

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)

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