1. INTRODUCCIÓN
description
Transcript of 1. INTRODUCCIÓN
1
1. INTRODUCCIÓN
2
Evolución de los conceptos
ABSTRACCIÓN DE DATOS
Tipos de datos
• Elementales (HW)
• Estructurados (LP)
• Abstractos (U)
3
Tipos de datos: Elementales
• Nivel: de la máquina
• Primitivos
• Tipo básico
• Proporcionados por el Hw
• Enteros• Reales• Booleanos• Caracteres
4
• Nivel: Del Lenguaje de Programación
• Proporcionado por los LP
• Con base en tipos elementales
• Se utilizan constructores de tipo que al LP
• Arreglos• Registros
Tipos de datos: Estructurados
5
• Nivel: Del usuario
• Definidos por el usuario para enriquecer el LP
• Stacks• Colas, etc
Tipos de datos: Abstractos
6
Evolución de los conceptos
ABSTRACCIÓN DE CONTROL
Lógica del código
• Sentencias
• Unidades de Programas
7
Sentencias
• Asignación
• Decisión
• Iteración
Constructores de código que facilitan la programación estructurada
8
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
9
Clasificación de los Lenguajes De Programación
10
Clasificación de los LP
Lenguajes
Naturales
De Programación De Máquina Simbólicos
Bajo nivel Alto Nivel• Imperativos• Funcionales• Lógicos• OO
11
Categorización de los LP
L ENSLM
LAN ForTran
CO
BO
L
Pascal C
C++ Delphi
Mayor grado de abstracción
12
1.3 Criterios de :Definición y Diseño de LP
13
Lenguajes Naturales
Conjunto de sonidos articulados con que el hombre manifiesta a otros lo que siente o piensa
14
Lenguajes de Programación
Notación sistemática por la cual describimos procesos computacionales
15
Lenguajes de Máquina
Las instrucciones se expresan como strings binarios que la CPU es capaz de entender, por lo tanto:
• Es característico de cada computador y
• Depende de la máquina
16
Lenguajes Simbólicos
Manejan identificadores en vez de strings de bits, para:
• Operaciones
• Valores
• Localidades de almacenamiento
Aparece la necesidad de otro Sw, puesto que NO es posible ejecutar notaciones diferentes del LM
17
Lenguajes Bajo Nivel
Se denominan ensambladores Es necesario el conocimiento de la
arquitectura subyacente. LP simbólico más cercano al LM La relación entre las sentencias del LM y el
leng. ensamblador es 1:1 Los LP ensambladores utilizan símbolos
llamados códigos mnemónicos: Add, Store, etc.
18
Lenguajes Alto Nivel
LP que permite un estilo de escritura fácil de leer y comprender por otros programadores
Permite crear programas portables, sin cambios sustanciales, por los que se dice, que son independientes de la máquina.
19
Lenguajes Imperativos
Los primeros LP fueron creados en los 50's: Fortran, Pascal, C, Ada
Se denominan también, procedurales Los LP que tienen a ForTran y COBOL como raíz, se
denominan imperativos.
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
20
Lenguajes Funcionales
Los primeros aparecieron en los 60's: Lisp, Apl, Forth
Se denominan también aplicativos. Aplican funciones, ya sea,
recursivamente o por composición. Se caracterizan por una programación sin
asignaciones , ie, puramente funcional. Los usuarios de los LP funcionales NO
deben preocuparse de manejar el almacenamiento de datos.
21
Lenguajes Funcionales
Ejemplos:1. x + y => (Plus x y)
2. 2*y => (Times 2 y)
3. x5 => (Exp x 5)
4. 5xyz => (Times 5(Times x (Times y z)))
5. ax2 + bx + c => ax2 + (bx + c) =>
(Plus (Times a (Exp x 2)) (Plus (Times b x) c ))
22
Lenguajes Lógicos Aparecieron en los 70's : PROLOG Son LP diseñados principalmente para
aplicaciones de IA, máquinas de 5° generación.
Los LP lógicos revisan la presencia de una determinada condición, la que, si es verdadera se ejecuta una acción apropiada
Se basa en la noción de definir objetos y relaciones de inferencia en clases de objetos.
23
Lenguajes Lógicos
Ejemplo:
Una forma de programación lógica son las tablas de decisión utilizadas en aplicaciones administrativas.
Acción 1 if (cond1)Acción 2 if (cond2)
:
24
Lenguajes OO Ejemplos de estos lenguajes son:
Smalltalk, Eiffel, C++, Java. Son LP que incorporan nuevas formas de
pensar con respecto a cómo estructurar la información dentro del computador
Se construyen complejos objetos de datos y se diseña un conjunto de funciones para operar con tales datos.
25
1.3 Criterios de :Definición y Diseño de LP
Ortogonalidad Claridad
Sintáctica Orientación Extensión Portabilidad Eficiencia
26
1.4 Sintáxis
27
ORTOGONALIDAD
Dotar al lenguaje de la máxima generalidad posible de modo que NO existan restricciones o casos especiales.
Ejemplos:
Ventajas:
Desventajas:
28
Ejemplo: Pascal
Como ejemplo de FALTA de ortogonalidad en Pascal, el tipo de dato de un parámetro formal NO puede ser anónimo, es decir, no es posible declararlo explícitamente
Procedure A(Var v : Array1..10 of Real);
29
Ejemplo: Pascal
debiéndose declarar
Type Vector = Array1..10 of Real;
Procedure A(var v : Vector);
30
Ventajas de LP Ortogonales
Si un lenguaje es ortogonal, entonces tal LP:
• Es fácil de aprender
• Permite facilidad en la escritura de programas.
Porque NO tiene excepciones ni casos especiales que recordar.
31
Desventajas de LP Ortogonales
Si un lenguaje es ortogonal, entonces:
Un programa generalmentes compilará SIN errores, aún cuando contenga combinaciones que son lógicamente incoherentes o extremadamente ineficientes
32
CLARIDAD SINTÁCTICA
Permitir que las diferencias semánticas se manifiesten en diferencias sintácticas
• COBOL : Es claro
33
CLARIDAD SINTÁCTICA
• APL : No es claro, puesto que está lleno de símbolos. Su sintáxis es encriptada
• Facilita la escritura a programadores experimentados
• Son difíciles de leer al momento de efectuar modificaciones futuras.
v 5 0
34
ORIENTACIÓN
Proveer una sintaxis comprometida con la orientación del lenguaje.
• Es más bien de carácter histórico
• Es un compromiso con las personas
En general, la notación utilizada por un LP debiera ser consistente con las notaciones usadas en ese campo.
35
EXTENSIÓN
Facilitar la implementación de estructuras inexistentes en función de las que éste provee, permitiendo al usuario:
• Definir sus propios EDT
• Codificar sus propios operadores
36
PORTABILIDAD
Proveer una definición del lenguaje independiente de las características de una máquina en particular.Dos impedimentos para la independencia de la máquina son:
• La aritmética de la máquina y
• El tamaño de la word
Incompatible con:
• Realidad
• Objet. Comerciales
37
Ejemplo: Java
Java crea una versión ejecutable portable
El proceso de compilación se detiene antes de generar el código de máquina: Código de Byte El proceso de traducción continúa en cada máquina donde se ejecutará el programa
Código Byte HOT JAVA Cód. Ejecutable
38
EFICIENCIA
En traducción: LP orientados a la educación.
Rápida compilación
En ejecución: LP orientados a rutinas muy utiliza-
das, como la verificación de claves En construcción LP que permiten una rápida y clara
construcción de programas y ayudaen el diagnóstico
39
1.4 Sintáxis
Conjunto de reglas que determinan si las sentencias de un programa están bien formadas o no.
• Manual del usuario: Reglas de cómo escribir.
• Compilador: Mecanismo que determina si el programa está bien escrito
40
1.4 Sintáxis
Objetivo: Proveer una notación que permita la comunicación entre el programador y el compilador (procesador del lenguaje).
Criterios SintácticosElementos Sintácticos
41
Gramática
42
Criterios Sintácticos Legibilidad:
COBOL: Write sueldo after advancing 2 lines
Facilidad de escritura:APL: AA*-1 Invierte una
matriz
43
Criterios Sintácticos Facilidad de traducción:
El compilador debiera generar poco código
Ausencia de ambigüedad:Evitar que una estructura tenga
más de un significado
44
Criterios SintácticosPor ejemplo, en Fortran:
M(i) puede significar un elemento del arreglo M, ó M(i) una llamada a la función M. Con el parámetro i.
Por ejemplo, en PL/1:
A=B=C: Asignación múltiple B=C, A=B Asignación de un valor booleano: A=(B=C)
45
Criterios Sintácticos
Por ejemplo, en Pascal:
If (x=0)then
If (y=0) then
S1else
S2;
Solución en Pascal:
If (x=0)then
Begin If (y=0)
then S1;
Endelse
S2;
46
Elementos Sintácticos Set de Caracteres Identificadores Símbolos para operadores Palabras claves y reservadas Comentarios Abreviaciones Espacios
47
Elementos Sintácticos (Cont.)
Delimitadores Formatos Fijo y Libre Expresiones Sentencias Estructura de Unidades de pr
ograma
48
Gramática
49
Set de Caracteres
Datos estandarizados:
ASCII - EBCDIC
Algol: ASCII Extended
APL
Datos propios:
50
Identificadores
Tienen una cantidad máxima de símbolos definidos por la versión
Generalmente es: Un string con letras y/o dígitos
comenzando con letra La legibilidad aumenta si las
versiones permiten identificadores de varios caracteres.
Escritura básica de los LP.
51
Símbolos para Operadores
APL: Posee caracteres especiales Lisp: Plus, Times Fortan: .EQ., **, .GT. Pascal: div, mod COBOL: Add, Multiply
General: +, -, *, etc
52
Palabras Claves y Reservadas
Una palabra reservada es una palabra clave no declarable como identificador de usuario.
Una palabra clave es un identificador que constituye la parte no cambiante de una instrucción.
53
Ventaja Palabras Reservadas
La mayoría de los LP utilizan palabras reservadas, así:
El análisis sintáctico es más fácil y,
La detección de errores es más eficiente. Ejemplos
:
54
Ejemplo en ForTran
Las sentencias:
Do , If
NO son palabras reservadas,
Son palabras claves, por lo tanto el programador las puede usar como identificadores.
55
Ejemplo en COBOL
•Posee demasiadas palabras reservadas, lo que hace imposible recordarlas todas.
Esto facilita el camino para que el programador elija una de ellas como identificador, ocasionando ERRORES en la compilación.
56
Comentarios
Auto documentación del código fuente.
Comentarios en líneas separadas:
Fortran: en la primera columna: C
57
Comentarios Comentarios delimitados por
marcas especiales sin límite de líneas:
Pascal: (* .. *) , { .. } C: /* .. */
Se indica el comienzo y termina con el fin de línea:
Ada: - C++: // Fortan 90: !
58
Abreviaciones
Relacionado con la legibilidad, por ejemplo:
• a = a+1 a++
• a = a+b a+=b
• a = a % b a%=b
59
Espacios
Su uso varía entre los LP
• ForTran: No son significativos
• SNOBOL 4: Genera confusión.
• Concatenación
• Separador entre elementos de una instrucción
60
Delimitadores
Se utilizan para demarcar una unidad sintáctica como:
Sentencia
Expresión.
Begin End, { }
( )
Ventajas
61
Else colgante:
If (x=0)then
Begin If (y=0)
then S1;
Endelse
S2;
Delimitadores
• Su uso mejora la legibilidad • Simplifica el análisis sintáctico • Permite remover la
ambigüedad, definiendo en forma explícita los límites de una estructura
62
Formatos Fijo y Libre
Es histórico, viene de la época de las tarjetas perforadas.
Formato fijo: Las instrucciones deben aparecer en una determinada parte de la línea.
Ejemplo: ForTran
Reserva las primeras 5 posiciones de cada línea
1° columna: carácter C para comentario
6° columna: Indicador de continuación de línea.
7°- 72° : Instrucciones
63
Formatos Fijo y Libre
Formato Libre: Las instrucciones se pueden escribir sin preocuparse de su posición en la línea o del largo de ella
Ejemplo:
Pascal, C, etc.
64
Expresiones
Funciones que acceden a ODD de un programa y retornan un valor.
Esta estructura sintáctica involucra:
• identificadores
• Operadores y
• Variables
65
Expresiones
En un LP Imperativo:
Las expresiones forman las operaciones básicas que permiten a las instrucciones cambiar el estado de las variables
En LP funcionales:
Las expresiones forman la secuencia básica de control que dirige la ejecución de un programa.
66
Sentencias
Mínima unidad constitutiva de código
Simples
Estructuradas
No permite instrucciones anidadas
Permite instrucciones anidadas
67
Estructuras de Unidades de Programas
Formas que los LP utilizan para describir una organización sintáctica de:
Programa Principal - Subprogramas
en la que hay una desagrupación de código que evolucionó hacia la programación estructurada.
• Definición Separada
• Definición Anidada
• Definición separada de datos
68
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.
69
Metalenguajes
Gramática formal destinada a la descripción de un lenguaje.
Existen tres metalenguajes comúnmente utilizados
• BNF (Backus-Naur-Form)
• Diagramas sintácticos
• CBL (COBOL-Like)
70
1.5 Semántica
71
BNF (Backus - Naur Form)
Notación desarrollada por los especialistas Backus y Naur para definir lenguaje Algol 60
• < >: indica símbolo NO-TERMINAL o meta variable
• ::= : "Se define como"
• |: " o"
• { }n: Repetición. Mínimo n veces.
• identificador: Palabra reservada, constante o carácter TERMINAL.
Metasímbolos:
72
BNF Número real, identificador
<real> ::=
<letra> ::=
<secuencia> ::=
<secuencia>
<identificador> ::=
<letra>
<dígito>
<dígito> ::= 0
. <secuencia>
{<dígito>}0
|1|2|3|...8|9
{<letra> | <dígito>}0|B|C|...Y |Z|Aa|b|c...y|zA
73
BNF Expresión aritmética
<exp>::=<término>::=<factor>::=
Expresión:
x
término
término
término
a*b - c/d a * bfactor
factor
<término>
| <término> +<término>
<factor>
|<factor> * <factor>
|<término> -<término>|<factor> / <factor>
<identificador>
|<constante>
(<exp>)
74
BNF Sentencia For de Pascal
<s- for> ::= For <identificador> := <intervalo> do <sentencia>
<intervalo> ::= < inicial> to <final> | <inicial> downto < final>
<inicial> ::= <exp>
<final> ::= <exp>
75
BNF Recursivas
<entero>::=
.
0|1||..|9
| <dígito> <secuencia>
<dígito>
|
dígito>::=
<secuencia> ::=
<dígito>
<dígito><entero>
<real> ::=
<secuencia>
<secuencia>
76
BNF Recursivas
<identificador> ::=<secuencia> ::= <carácter><carácter> ::=
<letra>
<Mlista> ::=
( )
<lista> ::=
<elemento>
| <elemento> <lista><elemento>::
=<átomo>
| <Mlista>
| <letra> <secuencia>|
<carácter><secuencia>
<letra> | <dígito>
| ( <lista> )
Multilista: (1 2 (3 4 (5)6)7 8)
77
BNF Sentencia Pascal
<sentencia> ::=
<simple>
| <compuesta>
<simple>::=
<s-asig>
|<s-inv>|<s-dec>
|<s-iter><compuesta>::
=Begin
<grupo-sentencia>
End
<grupo-sentencia>::=
<simple>
|<simple>;<grupo-sentencia>
78
BNF Otra vez la expresión aritmética REC
<exp>::=<término>::=<factor>::=
Expresión:
x
término
término
término
a*b - c/d a * bfactor
factor
<término>
| <término> +<exp>
<factor>
|<factor> * <término>
|<término> - <exp>
|<factor> / <término>
<identificador>
|<constante>
(<exp>)
(a+b)*cEjemplo:
79
BNF Expresión Recursiva
a + b*c
Expresión
Término Expresión +
Factor
Identificador
a
*
Identificador
b
Factor
Identificador
c
b*c
Término
Factor Término
80
BNF Expresión RecursivaExpresión
Término Expresión -
Términoa - b - c
Factor
Identificador
a
Factor
-
Identificador
b
Factor
Identificador
c
b - c
Expresión
Término
81
BNF Expresión RecursivaExpresión
Término Expresión +
(a +b) *c
Factor
Identificador
a
*
Factor
Identificador
c
Término
Factor Término
(Expresión)
Término
Factor
Identificador
b
82
BNF Sentencias Pascal
<s-While>::=
While
<exp B>
do <sentencia>
<s-If>::=
|If <exp B> then <sentencia> else <sentencia>
If <exp B> then <sentencia>
83
BNF Sentencias C
<do-while>::=
do <sentencia> while <exp B>
do
{printf("Número ");
scanf("%d",&n);
}while (n<=0);
84
BNF Sentencias C
<switch>::=switch (<exp>) {<secuencia>}
<caso> ::=case<constante>
:<sentencias>;<secuencia> ::=<caso> <secuencia><caso>
switch (x){case 1: cout<<"es UNO";break; case 2: case 3: cout <<"es dos o tres";break; default : cout <<"es distinto de 1,2 ó 3";}
| case <constante><sentencias>; break;:
<caso><defecto>
<defecto> ::=
default :<sentencias>;<constante>::
=enteros | caracteres
85
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:
86
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
87
Diagramas Sintácticos
Una producción de la forma: <S> ::= {<x>}0
corresponde al siguiente diagrama
X
(mientras)
Una producción de la forma:
<S> ::= <x>{<x>}0
corresponde al siguiente diagrama
X
(repetir)
88
Diagramas Sintácticos Pascal
Identificador: Letra:
A
B
z
Dígito: 0
1
9
_
Letra
Dígito
Letra
89
Diagramas Sintácticos Pascal
Número Entero:
Dígito
Número Real:
DígitoDígito
90
Diagramas Sintácticos Pascal
Sentencia: Sentencia Compuesta:
Compuesta
Simple
Sentencia Simple:
Invocación
Asignación
Decisión
Iteración
Simple
;
Begin End
91
Diagramas Sintácticos Pascal
Sentencia Asignación:
Identificador := Exp
Sentencia if: If Exp B then Sentencia
else Sentencia
Sentencia while:
Exp B do SentenciaWhile
92
CBL COBOL - like
Constituye una extensión de la BNF destinada a la descripción sintáctica del lenguaje Cobol.
93
CBL COBOL - like
• Elementos opcionales se denotan entre paréntesis cuadrados x
• Elementos alternativos se listan verticalmente entre paréntesis llave
• La repetición de los elementos se indica mediante tres puntos a continuación de una ocurrencia del elemento x ...
• Elementos alternativos opcionales se listan verticalmente entre paréntesis cuadrados
94
CBL COBOL - like
<identificador> ::= <letra> ...
<digito><letra> -
<condición>::=
<identificador> IS NOTNUMERICALPHABETIC
<entero> ::= [ + ] <digito> ...
95
1.5 Semántica
96
1.5 Semántica
Se define como un conjunto de reglas que describen el comportamiento de ese lenguaje en tiempo de ejecución
La sintáxis se refiere sólo a la forma de un programa. Está fuertemente ligada a la semántica la que da el significado al programa.
¿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?
97
Ejemplo
<fecha> ::= <d><d>/<d><d>/<d><d><d><d>
puede tener dos interpretaciones semánticas; por ejemplo:
Una expresión sintáctica, mediante BNF, como
09/04/2002 se entiende como
• 9 de Abril de 2002 en Chile
• 4 de Septiembre de 2002 en EEUU.
98
Métodos formales
Para especificar la semántica de una sentencia, lo haremos vía definición
Métodos formales de semántica:
Axiomático : Cálculo del predicado (PROLOG)
Denotacional : Teoría de las funciones (Lisp)
Compilador : Máquina teórica
99
1.6 Procesadores
El diseño de compiladores es el corazón de la implementación de un lenguaje.
DEFINICIÓN
Es una máquina capaz de ejecutar acciones expresadas en algún lenguaje concreto, actualmente, sólo lenguaje de máquina.
100
Procesadores En teoría, es posible construir:
Computadores - LISP Computadores - C, etc.
Desventajas: Son máquinas poco flexibles De alto costo.
Se favorece la construcción de máquinas que operen con LP de bajo nivel.
TRADUCTOR
101
Traductores
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
PreprocesadorCompiladorIntérpreteEnsambladorLigadorCargador
102
Capítulo 2
103
Pre-ProcesadorTraductor, cuyo lenguaje fuente es una extensión de un lenguaje de alto nivel.l lenguaje objeto es el estándar del lenguaje de alto nivel.
Ej: C, C++, etc.
Programa en extensión de LAN
Preprocesador Programa en LAN estándar
Pre-procesador Compilador Ensamblador Cargador
C++ CLeng.Ensam.
CódigoReubicable
CódigoEjecutable
104
CompiladorEs un traductor cuyo lenguaje fuente es un lenguaje de alto nivel lenguaje objeto es un lenguaje intermedio orientado a la máquina.
Programa en Lenguaje de Alto
Nivel
Compilador Programa en L orientado a la
Máquina
Análisis lexicográficoAnálisis sintáctico
Generación de código
Optimización
código objeto
105
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)
106
Compilador: Análisis sintáctico
Generación de un árbol de reconocimiento usando una representación interna de la gramática del lenguaje como guía.
Expresión
Término Expresión +
Factor
Identificador
a
*
Identificador
b
Factor
Identificador
c
Término
Factor Término
a + b*c
107
Compilador: Generación de código
Enlace entre la sintáxis y la semántica (o representación máquina) de un lenguaje.
Convierte el árbol de reconocimiento en una lista equivalente de instrucciones en lenguaje de máquina.
108
Compilador: Optimización
Refinar el código generado para mejorar el rendimiento en tiempo de ejecución
Ubicación de
• Construcciones semánticas redundantes
• Uso ineficiente de registros, etc.
109
IntérpreteEs un procesador cuyo lenguaje concreto es un lenguaje de alto nivel.
Ningún computador es capaz de ejecutar un 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
110
Diferencias: Compilador-Intérprete
El compilador : El intérprete :
Sólo traduce Decodifica y ejecuta
Traduce sólo una vez cada sentencia
Puede procesar varias veces algunas e ignorar completamente otras instrucciones
Acepta las instrucciones según su secuencialidad lógica
Acepta las instrucciones según su secuencialidad física
111
EnsambladorTraductor, cuyo Lenguaje fuente es un lenguaje ensamblador
(representación simbólica de un LM)
Lenguaje objeto es el LM del computador
Programa en Leng. Ensam.
Ensamblador Programa en LM
112
Ligador
Traductor cuyo Lenguaje fuente es lenguaje orientado a la máquina
Programa en L orientado a la
máquina
Linker Programa en LM
código reubicable
Lenguaje objeto es el L orientado a la máquina, pero denominado código reubicable
Enlaza de manera conjunta código compilado independientemente en UN solo módulo de carga, libre de referencias de un módulo a otro.
113
Cargador
Traductor cuyo lenguaje fuente es lenguaje orientado a la máquina
reubicable
Programa en código reubicable
Loader Programa en LM
código real
Lenguaje objeto es el LM del computador. Módulo ejecutable
Carga el programa en diversas localidades de memoria, actualizando las tablas de datos en que indican puntos de código reubicable que serán modificados para la ejecución del programa.
Programa Ejecutable