Alcance Dinámico La Asociación Actual para un Nombre dado es el encontrado recientemente durante la ejecución, y no a sido destruido aun por el retornado.

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

Métodos y parámetros.
Programación de Computadores
ING SEC 3 - UCSC Agosto 2009 Laboratorio Lenguaje de Programación ING – Universidad Católica SSMA Concepción Semestre II Tema:
Tecnologías para desarrollo de aplicaciones web. Un caso de uso
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:23 PRESENTACION: BASE DE DATOS ALUMNAS: Velazquez Corona Elsa Ponciano Antonio.
Subprogramas: Procedimientos
FUNCIONES EN C.
Informática II Prof. Dr. Gustavo Patiño MJ
Programación 1 Introducción
Teoría de lenguajes y compiladores
Unidad 3 Punteros.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C

Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Modificadores.
1 Procedimientos Es un conjunto de sentencias incluidas entre las declaraciones Sub o Function y End Sub/Function VB utiliza varios tipos de procedimientos:
Lic. Rosemary Torrico Bascopé
Abstracción de los datos y Orientación a Objeto Clase 13.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
Semana 5 Subprogramas..
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
M.C. Juan Carlos Olivares Rojas
INGENIERIA EN SISTEMAS COMPUTACIONALES
ESTRUCTURA DE DATOS EN JAVA
Administración de Memoria Memoria Virtual
Computación II Unidad IV Funciones y Módulos. Objetivos: –Comprender como construir programas en forma modular partiendo de pequeñas partes conocidas.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Tipos de Datos (Data Types)
Abstracción de Datos y Orientación a Objetos.. Vista General. Por qué la abstracción de datos y la programación orientada a objetos. Módulos y módulos.
Asignación de Espacio No Contiguo
Fundamentos de Programación
Agenda Clase 16 Motivación e Historia de la Programación Funcional y la Programación Lógica. Concepto y Características de la Programación Funcional. Ventajas.
Material de apoyo Unidad 4 Estructura de datos
1 Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
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.
Manejo de Punteros y objetos en memoria dinámica en C++
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Herencia y tipos ● Cuanta memoria se debe asignar a un objeto cuando se asigna en la pila ● La asignación debe hacerse antes de que se conozca la cantida.
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Curso de C # República Bolivariana de Venezuela Área de Computación
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
Términos algoritmo diseñar algoritmo implementar algoritmo
Metodología de la programación
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
Teoría de lenguajes y compiladores
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
CONCEPTOS.
Introducción a los TADs
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación orientada a objetos Capítulo 9 Algo mas sobre herencias.
FUNDAMENTOS DE PROGRAMACION
Lenguaje estructurado
Análisis y Diseño de Aplicaciones 3º Educación Media Tecnológica
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación en Visual Basic
1 La sobrecarga de funciones y operadores le da al programador la oportunidad de asignar nuevos significados a las funciones y a los operadores.
Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 8 Versión
Transcripción de la presentación:

Alcance Dinámico La Asociación Actual para un Nombre dado es el encontrado recientemente durante la ejecución, y no a sido destruido aun por el retornado en este alcance. Nota: Los identificadores libres del cuerpo de un subprograma se interpreta en el entorno de la llamada al subprograma. En un lenguaje con alcance dinámico, la asociación entre un nombre y un objeto depende del flujo de control en tiempo de ejecución, y en particular en donde la subrutina es llamada.

Ejemplo Dinámico Alcance ¿Que imprime el programa? En Alcance estático 1 sin tener en cuenta el valor leído Sobre Alcance Dinámico 2: si valor leído >0 1: si valor leído <= 0 Alcance dinámico es usualmente una mala idea Como ejemplo de alcance dinámico, considere la figura: Si el alcance estaticos esta en efecto, entonce el programa imprime 1 Si el alcance dinamico esta en efecto, entonce el programa imprime 1 o 2. En el momento de compilación no se puede determinar el binding de la variable. Busca la variable más cercana que la llamo.

Implementación de Alcance Estático: Tabla de Símbolos Tabla de Símbolo como Diccionario: maps names to information the compiler knows about them (nro. alcance, tipo). Alcance Representación entre_alcance y deje_alcance ops Cada Alcance tiene un Nro. Serial Pila de Alcance: Alcance en el ambiente de referencia actual. Numero de Alcance Si el Alcance esta cerrado Para guardar huella de los nombres en alcance estático, un compilador confía en una abstracción de la data llamada tabla de simbolo. Tabla de Simbolo: por cada simbolo se sabe su interpretación. Las tablas estan relacionadas dentro de una pila. Un subprograma se empila encima de su padre.

Hash table Scope stack 2(T) 1(globals) 4(P1) 3(M) 5(P2) find the error in the figure! 1(globals) 4(P1) La pila de alcance representa el ambiente de referencia de la sentencia en el procedimiento P2. 3(M) 5(P2)

Buscando un Nombre Examina la cadena de Hash buscando el nombre. hardcopy Buscando un Nombre Examina la cadena de Hash buscando el nombre. Para cada pareja de entrada , examina abajo la pila del alcance para ver si su alcance es visible Se hacen importaciones y exportaciones visible fuera de su alcance normal creando entradas adicionales para ellos, con punto para las entradas reales,. Busco el Nombre en la tabla de Hash. Por cada nombre se revisa si esta en un alcance visible.

Algoritmo para la búsqueda de operaciones de la tabla de símbolo Recorre la estructura para reconocer el binding activo de ese nombre.

Implementación de alcance dinámico A-list Implementación de alcance dinámico single stack of bindings Implementación usando lista de asociaciones. La dos de las estructuras muestran el ambiente referenciado que puede tener efecto después que el programa main llama a Q y este llama a P. Central reference tbl

POCO PROFUNDA Y PROFUNDAS ASOCIACIONES Cuando el Subprograma esta pasado como parámetro, cuando es el limite del ambiente referenciado? Poco profundo (shallow binding): cuando la rutina es llamada. Profunda (Deep binding): cuando la rutina es primero pasada como parámetro. Importante tanto en alcance dinámico como estático. 2 posibles enlaces: - Poco profundo: Toma el binding cuando la subrutina es llamada. - Profunda: Toma el binding cuando la subrutina es pasada por primera vez como parametro.

Ejemplo Mejor apropiado para: older_than: profunda (to get global threshold) print_person: poco profunda (to get locally set line_length) (Asumiendo un alcance dinámico) threshold: integer

Cierre de Subrutinas En profundas asociaciones, un cierre es un bulto de: Un ambiente referenciado. Referencia para la Subrutina. La asociación profunda es: Una opción en lenguajes de alcance dinámico. Predeterminado en lenguaje de alcance estático.

Primera y Segunda subrutina de la Clase Subrutinas de primera clase Pasadas como parámetro. Retornada de una Subrutina. Asignada dentro de una Variable. Subrutinas de segunda clase Pasada como parámetro solamente. Subrutinas de tercera clase Ninguna de las anteriores

SOBRECARGA Un nombre que puede referirse a más de un objeto en un alcance dado se llama Sobrecarga. Las reglas semánticas por sobrecarga requieren que el contexto específico de cada uso individual del nombre contiene pistas suficientes para deducir su significando.

SOBRECARGA En muchos Lenguajes dos o más funciones pueden compartir el mismo nombre en tanto en cuanto difiera el tipo de sus argumentos o el número de sus argumentos o ambos. Cuando comparten el mismo nombre y realizan operaciones distintas se dice que están sobrecargadas. Para conseguir la Sobrecarga  simplemente hay que declarar y definir todas las versiones requeridas.

SOBRECARGA Sobrecarga operadores aritméticos Si se tiene un objeto que representa numero complejo, para sumar 2 de este tipo es necesario sobrecargar el operador + como cualquier otro tipo de datos básicos. Nota: La sobrecarga es especialmente útil cuando nuestro modelo nos obliga a emplear nombres similares para procedimientos que operan con diferentes tipos de datos.

COERCIÓN La coerción es un proceso en el que el compilador automáticamente convierte un objeto de un tipo dentro de un objeto de otro tipo cuando se usa en un contexto en el que el segundo tipo espera. var x = 2000; // a Number . var y = "Hello"; // A string. x = x + y; // the number is coerced into a string.

Subrutinas de parámetros con polimorfismos Son aquellas funciones que son escritas para soportar cualquier tipo de datos de entradas. En muchas ocasiones son confundidas con subrutinas genéricas, cuando estas ultimas son implementadas con Sobrecarga.

SUBRUTINAS CON PARÁMETROS POLIMORFISMOS Java void Empilar (Object Objeto) { Stack.add(Objecto); } SUBRUTINAS GENÉRICA CON SOBRECARGA Java void Empilar (String Objeto) { Stack.add( (Object) Objecto); // Casting a Object } void Empilar (Integer Objeto) Stack.add((Object) Objecto); // Casting a Object …

Resumen La sobrecarga es útil cuando nuestro modelo nos obliga a emplear nombres similares para procedimientos que operan con diferentes tipos de datos. La Coerción es una ventaja que poseen muchos lenguajes de programación que permiten realizar casting automáticos en tiempo de compilación. La Subrutinas con parámetros polimorficos permite resolver problemas de subrutinas con sobrecargas.