La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.

Presentaciones similares


Presentación del tema: "LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS."— Transcripción de la presentación:

1 LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.

2 Gestión de tipos de código Un compilador debe comprobar si el programa fuente sigue tanto las convenciones sintácticas como las semánticas del lenguaje fuente. Esta comprobación garantiza la detección y comunicación de algunas clases de errores de programación por ejemplo del manejo de diferentes tipos de datos. Es el proceso de administración de tipos de código del compilador donde éste se asegura que el tipo de una construcción coincida con el previsto en su contexto. Por ejemplo, el operador aritmético predefinido mod en MODULA exige operandos de tipo entero, de modo que mediante la gestión de tipos debemos asegurar que dichos operandos sean de tipo entero. De igual manera, la gestión de tipo debe asegurarse de que la desreferenciación se aplique sólo a un apuntador, de que la indización se haga sólo sobre una matriz, de que una función definida por el usuario se aplique la cantidad y tipo correctos de argumentos, etc.

3 Practica : Gestión de tipos de código Hacer un programa en Java considerando el proceso siguiente:

4 Practica : Gestión de tipos de código Utilizando los siguientes tipos: private int precio; // Las instrucciones y declaraciones finalizan con ; private int importe_acumulado; private String profesor; private String aula; private int capacidad; private boolean funciona; private boolean esVisible; private float diametro; private float peso; private short edad; private long masa; private char letra1;

5 Practica : Gestión de tipos de código Utilizando los siguientes tipos: Precio = 42; // Entero tipo int. Un número sin punto decimal se interpreta normalmente como int. importe_acumulado = 210; // Entero tipo int profesor = “Ernesto Juárez Pérez”; // Tipo String aula = “A-44”; // Tipo String capacidad = 1500; // Entero tipo int funciona = true; // Tipo boolean esVisible = false; // Tipo boolean diametro = 34.25f; // Tipo float. Una f o F final indica que es float. peso = 88.77; // Tipo double. Un número con punto decimal se interpreta normalmente como double. edad = 19; // Entero tipo short masa = 178823411L; // Entero tipo long. Una l o L final indica que es long. letra1 = ‘h’; // Tipo char (carácter). Se escribe entre comillas simples.

6 Practica: Gestión de tipos de codigo. Hacer un programa en java que actualice los diferentes tipos de código que se muestran en la diapositiva anterior

7 Generación de códigos. Es el proceso de recibir como entrada una representación intermedia del programa fuente y la asigna al lenguaje destino. PF -> LD Si el lenguaje destino es código máquina, se seleccionan registros o ubicaciones (localidades) de memoria para cada una de las variables que utiliza el programa. LD -> M Después, las instrucciones intermedias se traducen en secuencias de instrucciones de máquina que realizan la misma tarea. II -> IM Un aspecto crucial de la generación de código es la asignación juiciosa de los registros para guardar las variables. A := B

8 Generación de códigos.

9 Generación y Optimización. Generación de código – Se realiza mientras se analiza el programa – “Libre del contexto” Optimización – Se realiza después de la generación de código de todo el programa o de un elemento ejecutable del programa (función, procedimiento, etc). – “Dependiente del contexto”

10 Optimización Es el proceso de eliminación de instrucciones innecesarias en el código objeto, o la sustitución de una secuencia de instrucciones por una secuencia más rápida de instrucciones que haga lo mismo, a este proceso se le conoce como mejora de código u optimización de código.

11

12 Practica: De optimización de código. U na empresa del área de recursos humanos requiere ordenar tres números en orden ascendente. hacer el programa en java que pida los tres números y muestre dicho ordenamiento. Implementar el algoritmo de la burbuja con un código optimizado

13 Practica: De optimización de código. El algoritmo de la burbuja es uno de los métodos de ordenación más conocidos y uno de los primeros que aprenden los programadores. Consiste en comparar pares de elementos adyacentes en un array y si están desordenanos intercambiarlos hasta que estén todos ordenados. Si A es el array a ordenar, se realizan A.length-1 pasadas. Si la variable i es la que cuenta el número de pasadas, en cada pasada i se comprueban los elementos adyacentes desde el primero hasta A.length-i-1 ya que el resto hasta el final del array están ya ordenados. Si los elementos adyacentes están desordenados se intercambian.

14 Practica: De optimización de código. El método de ordenación de la burbuja en java para ordenar un array A es el siguiente: public static void burbuja(int [] A){ int i, j, aux; for(i=0;i<A.length-1;i++) for(j=0;j<A.length-i-1;j++) if(A[j+1]<A[j]){ aux=A[j+1]; A[j+1]=A[j]; A[j]=aux; }

15 Practica: De optimización de código.

16 Ya están ordenados, pero los dos bucles for seguirán ejecutándose hasta el final. El tiempo de ejecución del algoritmo de la burbuja es del orden O(n2) Es uno de los peores algoritmos de ordenación en cuanto a tiempo de ejecución, solamente es recomendable su uso para ordenar listas con un número pequeño de elementos.

17 Ensamblamiento (Folding). Es el proceso del compilador que consiste en remplazar las expresiones por su resultado cuando se pueden evaluar en tiempo de compilación (resultado constante). – Ejemplo: Expresión A=2+3+A+C Remplazo -> A=5+A+C Estas optimizaciones permiten que el programador utilice cálculos entre constantes representados explícitamente sin introducir ineficiencias.

18 Practica :Ensamblamiento (Folding). Hacer un programa en Java que remplace las siguientes expresiones: Usar variables y que sea para cualquier expresión. Expresión A=2+3+A+C Remplazo -> A=5+A+C Expresión B=55 * 2+A+B+C Remplazo -> B=110+A+B+C Expresión D=(5+8+4)/2+A+B Remplazo -> D=8.5+A+B Expresión A=(5*25) / (4 + 3) * 4 Remplazo -> A=125 / 6 * 4

19 Grafos de flujo Es el proceso del compilador que se realiza cuando un programa de código intermedio se particiona en bloques básicos relacionados entre si, representando el flujo de control entre ellos mediante un grafo de flujo. Los nodos del grafo de flujo son los nodos básicos.

20 Ejemplo: Grafos de flujo

21 Hacer un programa en Java con métodos o clases B1, B2, B3, B4, B5 y B6 que simule el grafo de flujo de la figura anterior (8.9) public class B3 { // Método B1 static void metodoB1(){ int i = 1; System.out.println("i = 1 es " + i); } // Método B2 static void metodoB2(){ int j = 5; System.out.println("j = 5 es " + j); } public static void main(String[] args) { System.out.print(" Metodo B1 "); metodoB1(); System.out.print(" Metodo B2 "); metodoB2(); } Metodo B1 i = 1 es 1 Metodo B2 j = 5 es 5


Descargar ppt "LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS."

Presentaciones similares


Anuncios Google