ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION

Slides:



Advertisements
Presentaciones similares
Clasificación de los compiladores
Advertisements

Estrella 0 - Fundamentos de la Programación
2 Estructuras lineales.. Qué es una estructura? La estructura es una manera de conectar los valores y de manera automática conectarlos de manera que tengan.
CLASE 3 SOFTWARE DEL MICROPROCESADOR
Prototipo de compilador didáctico del lenguaje LC99
Programación I Teoría III
Tipo de Dato Abstracto Tipos de datos:
Tema 1. Introducción a la programación (Lenguaje java).
Funcionamiento, programación
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Teoría de lenguajes y compiladores
Unidad 3 Punteros.
Funciones en lenguaje C

TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
Tema 6: Clases Antonio J. Sierra.
ALGORITMOS Y ESTRUCTURAS DE DATOS
MODOS DE DIRECCIONAMIENTO
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
Práctica 7 AOC. Gestión de la pila Una pila es una estructura de datos caracterizada por que el último dato que se almacena es el primero que se obtiene.
MIPS Intermedio.
Semana 5 Subprogramas..
PRINCIPIOS DE PROGRAMACION ESTRUCTURADA
Cobol C Pascal Fortran 5. UNIDADES DE PROGRAMAS SmallTalk Java C++
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++
Índice. Revisando conceptos acerca de la memoria.
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
Clase 10: Estructuras de datos y arreglos.
Tipos de Datos (Data Types)
Programación en Pascal
LENGUAJES DE PROGRAMACIÓN
1 6. PARAMETRIZACIÓN. 2 Parametrización La parametrización permite realizar una abstracción de la identidad de varios ejemplos de los datos Los valores.
Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.
CLASE 8 Ruben Martinez c Tipo Inferencia Es un mecanismo donde por el tipo las especificaciones se pueda omitir a menudo totalmente, si es.
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Unidad II Introducción a la programación en C++

APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
TEORIA DE LA INFORMACION INGENIERO ANYELO QUINTERO.
Elementos básicos del lenguaje
Introducción a la tecnología Realizado por: Miguel Ángel Arias.

Estructura de los Sistemas Operativos
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Prof. Flor Narciso Departamento de Computación
1 5. UNIDADES DE PROGRAMAS. 2 Uso de mecanismos de control de secuencia de: Invocaciones Retornos Entre: PPSP 1 a) I R SP 1 SP 2 b) I R Unidades subordinadas.
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Teoría de lenguajes y compiladores
Lenguaje programación
Presente un cuestionario con los aspectos mas importantes sobre los
Es un tipo especial de software que nos permite *Crear *Desarrollar *Programar otras aplicaciones. Haciendo uso de sus conocimientos lógicos y lenguajes.
Programación de Computadores
2.2.2 S EGMENTACIÓN Jorge Javier Camacho Cortés. Samuel Gallegos Gómez. Dunia Andrea González Corona.
Aspectos de diseñó de los lenguajes de programación
Análisis y Diseño de Aplicaciones 3º Educación Media Tecnológica
Conceptos y Lenguaje Imperativo
MEMORIA DINÁMICA.
Cobol C Pascal Fortran 2. OBJETOS DE DATOS SmallTalk Java C++
U2 Tipos de datos, referenciación y errores 1. Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución.
MIPS Intermedio.
Algorítmica y Programación
HISTORIA DE LOS LENGUJAES DE PROGRAMACIÓN HARDWARE: Computadoras primivas en programación MÉTODOS: Subprogramas Estructuras de datos Posibilidad.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 4 – Tipos de Datos.
Transcripción de la presentación:

ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA AQUI) FORMAL(A TRAVES DE MECANISMOS RIGUROSOS Y EXACTOS). SEMANTICA OPERACIONAL: Se describe el significado de cada construcción del lenguaje en términos de las operaciones correspondientes en un procesador abstracto.

SIMPLESEM -PUNTERO DE INSTRUCCIONES -MEMORIA(DE DATOS-DE CODIGO) ip Code Memory Code Memory (C) (D) Explicar la semántica de un comando explicando las operaciones correspondiente en SIMPLESEM(LA SEMANTICA O FUNCIONAMIENTO DE SIMPLESEM YA ES CONOCIDA). ip

PROCESAMIENTO DE UN LENGUAJE CONVERSION ENTRE LENGUAJES DE ALTO NIVEL --a--> DE MAQUINA que interpreta que interpreta un programador la computadora ALTERNATIVAS INTERPRETACION: ejecución pasa a paso de cada instrucción de un programa . CICLO: LECTURA-DECODIFICACION-EJECUCION Menor velocidad-Relativo aprovechamiento de memoria(solo se carga una instrucción por vez).

COMPILACION: Conversión completa de un programa antes de su ejecución COMPILACION: Conversión completa de un programa antes de su ejecución. FASES: COMPILACION-ENSAMBLADO LINKEDITADO-CARGADO-EJECUCION Mayor velocidad-Todo el programa debe cargarse en memoria para su ejecución.

LIGADURA (BINDING) Programas  tratan con entidades (funciones,variables,sentencias).  poseen atributos (nombre, tipo, parámetros). BINDING: Proceso de especificación de la naturaleza exacta de cada atributo. Ligadura Proceso asociado *entre una variable y su nombre *Identificación *Entre una variable y su tipo *Determinación *Entre un programa y su espacio *Reserva de espacio de almacenamiento. *Entre un subprograma y sus *Pasaje de parámetros parámetros .

Binding estático Binding Dinámico LENGUAJES DIFERENTES: En número de entidades En número de atributos En momento de realizarlo Binding estático Binding Dinámico BINDING CONGELADO -> CONSTANTE ( Valor de la variable cuando es creada)

VARIABLES Atracción de la noción de celda de memoria de una computadora. Caracterizada por: NOMBRE: usado para identificar y referirse a una variable. AMBITO: es el rango de instrucciones de programa sobre el cual una variable es conocida y manipulada. Fuera de el la variable es INVISIBLE. TIEMPO DE VIDA: es el intervalo de tiempo en el que un espacio de almacenamiento (memoria) es asociado con una variable. Este proceso es llamado ALOCACION.

VALOR: es el contenido del espacio de memoria asignado a al variable. Esta representado en forma codificada (cadena de bits). Esta codificación se interpretara de acuerdo al TIPO de la variable. TIPO: es la especificación de la clase de valores que puede ser asociada con una variable junto con el conjunto que pueden usarse para crear, modificar y acceder tales valores.

TIPOS DEFINIDOS POR EL USUARIO TIPOS ABSTRACTOS DE DATOS TIPOS PREDEFINIDOS BOOLEAN: valores posibles(TRUE, FALSE). Operaciones(AND, OR, NOT). TIPOS DEFINIDOS POR EL USUARIO Type T= array [1..10] of BOOLEAN TIPOS ABSTRACTOS DE DATOS TYPE counters DEFINITION Integer range 0..59 OPERATIONS Up(counters); down(counters); Zero(counters) END counters;

LIGADURA DINAMICA DE TIPOS (APL SNOBOL) A5 (variable simple) A (etiqueta) A1 -2- 51(arreglo unidimensional)

UNIDADES DE PROGRAMAS Descomposición de un programa: 1)Componentes de una Unidad de Programa: -Segmento de código: fijo, se almacena en C[]. -registro de activación: variable, contiene toda la información necesaria para la ejecución de una unidad de programa. Se almacena en D[]. Variables locales y No locales. Información de binding. punto de retorno. 2)Activación de una Unidad de programa: -una única instancia por unidad. -mas de una instancia por unidad(lenguajes recursivos).

ESTRUCTURA DE LOS LP EN TIEMPO DE EJECUCION DIVISION DE LOS LP DE ACUERDO A SUS REQUERIMIENTOS DE MEMORIA a)Estáticos: con requerimientos de memoria predeterminados.(FORTRAN,COBOL). b)Basados en pila: con requerimientos de memoria Predeterminados y con una estrategia de pila.(ALGOL 60). c)Dinámicos: con requerimientos de memoria Impredecibles (LISP,PROLOG,APL, JAVA). d)Híbridos: b)+ c).(PASCAL, C, ADA).

EJEMPLOS DE CADA CLASIFICACION DE LENGUAJES: 1)Estructura del lenguaje FORTRAN (estáticos) . Almacenamiento de un programa FORTRAN en memoria(todos los segmento de código juntos en C[] y todos los registros de activación en D[]). code memory(c) data memory(d) Activation record for global data Activation record for unit 1 Activation record for unit 2 … Activation record for unit n ip Code segment for unit 1 Code segment for unit 2 unit 3 … unit n

COMPILACION -> LENGUAJE MÁQUINA LINKADO -> ASIGNACIÓN DE MEMORIA CARGA -> CARGA DE MEMORIA (EJS. EN SIMPLESEM)

Ejs: Si RA (Registro de activación) de la unidad “i” se asigna a memoria a partir de la posición 830 – La Posición de datos referenciada como [i,10] será direccionada como D[840] El desplazamiento 0 tiene el puntero de retorno Notación d[i,j] = es la posición de j a partir del RA de la unidad i c[i,j] = instrucción en el desplazamiento j del segmento de codigo de la unidad i X = es c[i,j] o d[i,j] para indicar la dirección de x

El traductor o compilador trasladará nombres de variables a un par de c[i,j] o d[i,j] El linkador a direcciones c[m] o d[m]

Constructores descriptos: GOTO-CALL-RETURN (Transferencia de control). Sentencia Ligadura Linkeditado RA GOTO X  ip:=& c[i,j] (1) ip:= j COMMON CALL P  d[P,0]:=ip+2 (2) D[m]:=ip+2 MAIN ip:=&c[P,0] ip:=n X RETURN  ip:=d[P,0] ip:=D[m] i = unidad que está siendo trasladada - x = etiqueta de la instrucción localizada en el desplazamiento j del segmento de código de la unidad i. Almacena el punto de retorno en la posición 0 del registro de activación de la unidad P - b) Reemplazar el contenido del puntero de instrucción &c[P,0], la primera instrucción de la unidad P transfiere el control a P. (luego del link m en la dirección asignada al segmento de código de P. Reemplazar el puntero de instrucción en el contenido d[P,0] retorno de la unidad P Link = m dirección de RA de P

Descripción en términos de funcionamiento de SIMPLESEM D(3)=ip+2 Ip=5 Ip=3 noop halt D(4)=5 D(0)=6 D(5)=D(0)+D(4) Ip=D(3) common I Return Point main main J ip Return Point x K J Data memory x Code memory

D(3)=Ip+2 Ip=5 Ip=3 noop halt D(4)=5 D(0)=6 D(5)=D(0)+D(4) Ip=D(3) common 2 I 5 Return Point main ip J Return Point x K J Data memory Code memory

D(3)=ip+2 Ip=5 Ip=3 Noop Halt D(4)=5 D(0)=6 D(5)=D(0)+D(4) Ip=D(3) common 6 2 5 I 7 Return Point main ip J Return Point x K J Data memory Code memory

PROGRAMA LIGADURA LINKEDITADO INTEGER I,J I <-> d[COMMON,0] I <-> D[0] COMMON I I <-> d[MAIN,1] I <-> D[2] CALL X 10 <-> c[MAIN,3] 10 <-> C[3] GOTO 10 X <-> c[X,0] X <-> D[5]

SOUBROTINE X I<-> d[COMMON,0] I <-> D[0] INTEGER K,J K<-> d[X,1] K <-> D[4] COMMON I J<-> d[X,2] J <-> D[5] K=5 I=6 J=1+K RETURN END

common D(3)=ip+2 Ip=5 Ip=3 Noop halt D(4)=5 D(0)=6 D(5)=D(0)+D(4) Ip=D(3) 5 2 11 2 main ip x Data memory Code memory

2)Estructura del lenguaje ALGOL (Basado en Pila) unit A unit B unit C unit D end D end B end C A unit E unit F E B end F F G C unit G end E end G end A D

Unidades de ejecución  Disjuntas  Anidadas Problemas básicos  Recursividad  Variables dinámicas: type T=array [m,n] of real

VENTAJA BASICA DE UTILIZAR UNA ESTRUCTURA DE PILA: Cada registro de activación que se carga en memoria, y se deja libre ese espacio al finalizar su ejecución!! 1)Agregar en los registros de activación enlaces dinámicos (además del punto de retorno). 2)Agregar dos punteros mas a SIMPLESEM: 2.1)free: siguiente dirección libre de memoria. 2.3)current: apunta al inicio del registro de activación actual.

CALL B  D[free]:= ip+5 D[free+1]:=current current :=free free:= free+S (S tamaño de B) ip:= n RETURN  free:=current current:=D[current+1] ip:=D[free] Ejemplo:sea la siguiente secuencia de llamadas de rutinas FGFGFEA

Genera la siguiente secuencia SIMPLESEM F G F G Current F Free

3)ESTRUCTURA DE LOS LENGUAJES DINAMICOS (APL,SNOBOL,LISP) CONCEPCION: lenguajes con reglas dinámicas  A locación  Ligadura de tipo  Ligadura de ámbito IMPLEMENTACION: Almacenamiento de los registros de activación en una pila y enlace de los mismos a través de ENLACES DINAMICOS

ESTRUCTURA DE UN PROGRAMA APL Main program Subprogram SUB Function subprogram FUN