ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACIÓN

Documentos relacionados
2.2 Nombres, Ligado y Ámbito

Manual de turbo pascal

Tema 6 Organización y gestión de la memoria

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Lenguajes de Programación. Juan Zamora O. Semestre II Nombres, Ambitos y Ligados

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

1. Computadores y programación

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Parte I: Elementos del lenguaje Ada

Tema 6: Generación de código (parte 2)

Estructuras de Control. Secuencia y Selección

Conceptos de Algoritmos, Datos y Programas

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

FUNDAMENTOS DE INFORMÁTICA

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA

Unidad I: Organización del Computador. Ing. Marglorie Colina

ANEXO XVII DE LA RESOLUCION N

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Estructura de Datos y de la Información. Tema 1: Introducción a los tipos abstractos de datos

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs)

de! texto: Francisco Javier Carreras Riudavets Antonio Carlos González Cabrera Zenón Hernández Figueroa Juan Carlos Rodríguez del Pino

PROGRAMACIÓN UNIDADES

Programación MODULAR: Subalgoritmos - funciones y procedimientos

MEMORIA DINÁMICA y PUNTEROS

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Tema 8 Gestión de la memoria en tiempo de ejecución.

P L A N I F I C A C I O N

INDICE Parte I. Conceptos 1. El estudio de los lenguajes de programación 2. Cuestiones de diseño de lenguajes

Elementos Diagramas de Clases Clase:

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Planificaciones Algoritmos y Programación I. Docente responsable: AZCURRA DIEGO ANDRES. 1 de 5

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

PHP: Lenguaje de programación

Principios de Computadoras II

Estructuras de Datos Declaraciones Tipos de Datos

Fundamentos de Programación Visual Basic

Construyendo Programas más Complejos

FUNCIONAMIENTO DEL ORDENADOR

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas

Principios de Computadoras II

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

PLAN DE MATERIAS ACADEMUSOFT 3.2

Arquitectura (Procesador familia 80 x 86 )

Programación Orientada a Objetos

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Definición de Memoria

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

Los Tipos Abstractos de Datos. Estructuras de Datos y Algoritmos 03/04

El nivel ISA (II)! Conjunto de Instrucciones

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5

TIPOS Y ESTRUCTURAS DE DATOS

Algoritmos y Programas

Tema V Generación de Código

Módulo I. Tipos de datos, estructuras de datos y tipos de datos abstractos.

ESCUELA DE INFORMÁTICA

: Algorítmica y Estructura de Datos I

Aprender a desarrollar con JavaScript

Introducción a la programación

Generador de analizadores léxicos FLEX

PROGRAMA de Organización de Computadoras

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Procesadores de lenguaje Tema 6 La tabla de símbolos

Tema 2 Introducción a la Programación en C.

Funciones Tipos de funciones y Recursividad

Unidad II: Análisis semántico

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Procesadores de lenguaje Tema 5 Comprobación de tipos

PASCAL. Repaso de Pascal Introducción a Python. Pascal. Pascal - introducción. Pascal Declaraciones: Variables. Pascal Declaraciones: Tipos 07/04/2015

Algoritmos y programas. Algoritmos y Estructuras de Datos I

INDICE 1. Cómo Comenzar 2. El Entorno de Programación Delphi 3. Diseño de un Formulario; Componentes, Menús y Sucesos

TÉCNICO SUPERIOR UNIVERSITARIO EN MECATRÓNICA ÁREA AUTOMATIZACIÓN EN COMPETENCIAS PROFESIONALES ASIGNATURA DE LENGUAJE DE PROGRAMACIÓN

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Algorítmica y Complejidad. Tema 3 Ordenación.

White paper: Lenguajes de programación

Paso de parámetros y gestión del marco de pila

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

ASIGNATURA: ESTRUCTURA DE DATOS II

Conceptos de Arquitectura de Computadoras Curso 2015

Definición de Tipo de Dato Abstracto (TDA)

Introducción al lenguaje C

Tema 3.- Predicados y sentencias condicionales

INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

Diseño Basado en Componentes. Curso 2008 / 09

Tema 5: La pila, las macros y los procedimientos

Conceptos de Programación Orientada a Objetos

Fundamentos de programación JAVA

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Capítulo 10. Subtipos y Herencia.

Fecha de Introducción. Velocidad de reloj. Anchura del bus. Número de transistores. (microns) Memoria direccionable.

Estructura de Datos: Archivos

Computadora y Sistema Operativo

Curso de Programación 1

DES: Programa(s) Educativo(s): Tipo de materia: Clave de la materia: Semestre: Área en plan de estudios:

Transcripción:

ESTRUCTURA DE LOS LENGUAES DE PROGRAMACIÓN DEFINICION DE LOS LENGUAES SINTAIS (BNF + EBNF + DIAGRAMAS DE SINTAIS) + SEMÁNTICA OPERACIONAL (APROIMACIÓN UTULIZADA AQUÍ) FORMAL (A TRAVÉS DE MECANÍSMOS RIGUROSOS Y EACTOS) SEMANTICA OPERACIONAL: Se describe el significado de cada construcción del lenguaje en términos de las operaciones correspondientes en un proceso abstracto SIMPLESEM PUNTERO DE INSTRUCCIONES MEMORIA (DE DATOS DE CÓDIGO) Explicar la semántica de un comando explicando las operaciones correspondientes en SIMPLSEM (La SEMÁNTICAS o FUNCIONAMIENTOS de SIMPLESEM YA ES CONOCIDA) COMPORTAMIENTO DE UN LENGUAE CONVERSIÓN ENTRE LENGUAES DE ALTO NIVEL --a--> DE MAQUINA que interpreta que interpreta un programador la Computadora ALTERNATIVAS code memory (C) data memory (D) INTERPRETACIÓN: Ejecución paso a paso de cada instrucción de un programa CICLO: LECTURA DECODIFICACIÓN EECUCUIÓN 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 FASES : COMPILACIÓN ENSAMBLADOR LINKEADO CARGADO EECUCIÓN

Mayor velocidad Todo el programa debe cargarse en memoria para su ejecución LIGADURA (BINDIG) Programas --> tratan con entidades (funciones, variables, sentencia) --> poseen atributos (nombre, to, parámetro) BINDING: proceso de especificación de la naturaleza exacta de cada atributo Ejemplos: Ligadura entre una variable y su nombre entre una variable y su to Entre un programa y su espacio de almacenamiento Entre un subprograma y sus parámetros Proceso asociado Identificación Determinación de to Reserva de espacio Pasaje de parámetros VARIABLES Abstracción de la noción de celda de memoria de una computadora Caracterizada por: NOMBRE: Usada para identificar y referirse a una variables ÁMBITO: Es el rango de instrucciones de un programa sobre el cual una variable es conocida y manulada Fuera de él 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 la variable Está representado en forma codificada (cadena de bits) Esta codificación se interpretará de acuerdo al to de la variable TIPO: Es la especificación de la clase de valores que puede ser asociada con una variable, junto con el conjunto de operaciones que pueden ser utilizadas para crear, manular y acceder a tales valores TIPOS PREDEFINIDOS BOOLEAN: Valores posibles (TRUE, FALSE) Operaciones (ANDO, OR, NOT) Type T = array[110] of BOOLEAN TYPE counter DEFINITION integer range 059; OPERATIONS up(counter) TIPOS DEFINIDOS POR EL USUARIO TIPOS ABSTRACTO DE DATOS

down(counter) zero(counter) END counter; A <- 5 Variable simple -> A Etiqueta A <- 1 2 51 0 Arreglo unidimensional LIGADURA DINAMICA DE TIPOS (APL, SNOBOL) UNIDADES DE PROGRAMA 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 Más de una instancia por unidad (lenguajes recursivos) ESTRUCTURA DE LOS LP EN TIEMPO DE EECUCION División de los LP de acuerdo a sus requerimientos de memoria Estáticos: Con requerimientos de memoria predefinidos (FORTRAN, COBOL) Basados en pila: Con requerimientos de memoria predeterminados, y con una estrategia de pila (ALGOL 60) Dinámicos: Con requerimientos de memoria impredecibles (LIST, PROLOG, APL) Híbridos: Basado en pila + Dinámico (PASCAL, C, ADA)

Ejemplo de cada clasificación de lenguajes: 1) Estructura de lenguaje FORTRAN (Estático) Almacenamiento de un programa FORTRAN en memoria (todos los segmentos de código juntos en C[] y todos los registros de activación en D[]) code segmento for unit 1 code segmento for unit 2 code segmento for unit 3 : : code segmento for unit n code memory (C) Activation Record for Global Data Activation Record for unit 1 Activation Record for unit 2 : : Activation Record for unit n data memory (D) Constructores descrtos: GOTO CALL RETURN (Transferencia de control) Sentencia Ligadura Linkeado GOTO := & c[i,j] := j CALL P d[p,0] := + 2 := &c[p,0] D[m] := + 2 := n RETURN := d[p,0] := D[m] Descrción en términos de funcionamiento de SIMPLESEM 0 D(3) = + 2 = 5 = 3 noop common I Puntero de retorno Puntero de Retorno K D(4) = 5 D(0) = 6 D(5) = D(0) + D(4) = D(3) código Datos

5 D(3) = + 2 = 5 = 3 noop common 2 I Puntero de retorno Puntero de Retorno K D(4) = 5 D(0) = 6 D(5) = D(0) + D(4) = D(3) código Datos 7 D(3) = + 2 = 5 = 3 noop common 6 2 5 I Puntero de retorno Puntero de Retorno K D(4) = 5 D(0) = 6 D(5) = D(0) + D(4) = D(3) código Datos PROGRAMA LIGADURA LINKEADO INTEGER I, I < - > d[common, 0] I < - > D[0] COMMON I < - > d[main, 1] < - > D[2] CALL 10 < - > c[main, 3] < - > C[3] GOTO 10 < - > c[, 0] < - > C[5] 10 CONTINUE END SUBRUTINE I < - > d[common, 0] I < - > D[0] INTEGER K, K < - > d[, 1] K < - > D[4] K = 5 < - > d[, 2] < - > D[5] I = 6 = I + K RETURN END

2 D(3) = + 2 = 5 = 3 noop common 6 2 5 I Puntero de retorno Puntero de Retorno K D(4) = 5 11 D(0) = 6 D(5) = D(0) + D(4) = D(3) código Datos 2) Estructura del lenguaje ALGOL (Basado en Pila) unit A unit B unit C unit D end D A end B end C B E unit E unit F C F G end F end A end E unit G end G D Unidades de ejecución ---> Disjuntas ---> Anidadas Problemas básicos ---> Recursividad ---> Variables dinámicas Type T = array [m, n] of real

VENTAA BÁSICA DE UTLIZAR UNA ESTRUCTURA DE PILA: Cada registro de activación que se ejecuta se carga en memoria, y se deja libre ese espacio al finalizar su ejecución! 1) Agregar en el registro de activación enlaces dinámicos (además del punto de retorno) 2) Agregar dos punteros mas a SIMPLESEM 21) free: siguiente dirección libre de memoria 22) current: apunta al inicio del registro de activación actual CALL B ---> D[free] := + 5 D[free + 1] := current current := free free := free + S (s es el tamaño del RA) := n RETURN ---> free := current Current := D[current + 1] Ip := D[free] Ejemplo: Sea la siguiente secuencia de llamadas de rutina F ---> G ---> F ---> F ---> E ---> A Generara la siguiente secuencia en SIMPLESEM Dynamic Links A E F G F G F Current Free

3)Estructura de los lenguajes dinámicos (APL, SNOBOL, LISP) CONCEPCIÓN: Lenguajes con reglas dinámicas - Alocación - Ligadura de to - Ligadura de ámbito IMPLEMENTACIÓN: Almacenamiento de los registros de activación en una pila y enlace de los mismos a través de ENLACES DINÁMICOS ESTRUCTURA DE UN PROGRAMA APL Main Prgram Z <-- 0 x <-- 5 Y <-- 7 SUB 2 Z <-- FUN Y Subprogram SUB ṢUB I : Y Y Z <-- FUN Y Function subprogram FUN Ṛ <-- FUN N; Y

IMPLEMENTACION EN SIMPLESEM DEL PROGRAMA EN APL (Falta en el apuntono es mi culpa!!!!, preguntar a los prfesores de la catedra en el peor de los casos) PASAE DE PARÁMETROS PASAE DE ---> VARIABLES ---> SUBPROGRAMAS PASAE DE VARAIBLES COMO PARÁMETROS subprogram S(F1, F2,,FN) Fi = Parámetros formales end S call S(A1, A2,, AN) Ai = Parámetros actuales Ligadura Parámetros formales actuales Alternativas de llamadas 1- Por referencia: La unidád llamante pasa a la invocadora una copia de las direcciones de los parámetros actuales Los parámetros actuales pueden modificase Se comparte un mismo espacio de almacenamiento 2- Por copia: La undad llamante pasa una copia del valor de los parámetros actuales a la unidad invocada No se comparte espacio de almacenamiento 21 Por valor: La copia es utilizada para inciliazar las variables locales de la unidad invocada 22 Por resultado: No se inicilizan las variables locales, pero al finalizar la ejecución, su valor se copia en los parámetros actuales Se modifica el valor de los parámetros actuales 24 Por valor resultado: Combina las dos anteriores 3 Por nombre: Cada ocurrencia de los parámetros formales es remplazada textualmente por los parámtros actuales EEMPLO procedure swap(a, b : integer); var temp : integer; begin temp := a; a := b; b := temp; end swap;

La llamada a swap (i, a[i]) puede producir la secuencia errónea siguiente: temp := i; i := a[i]; a[i] := temp; PASAE DE SUBPROGRAMA COMO PARÁMETROS: Útil cuando se desea transefir un comportamiento específico a una unidad de prográma sin que sea necesario que ésta conozca el código que produce ese comportamiento Ejemplo: Un subprograma que evalúa una función de una variable en un intervalo; el subprograma no necesita conocer el comportamiento de la función, solo necesita utilizar su resultado Programa con procedimiento como parámetro procedure var u, v: integer; procedure a var y : integer; end a; procedure b (procedure x var u,v,y: integer; procedure c