miércoles, 20 de febrero de 2013

COMPILADORES Y JAVA SECCION II
 
 
 MAPA MENTAL


 
 
TALLERES
 
 
 
Taller No. 1
 
Respuestas
 
1)      que una realiza frase a frase y la otra texto completo
2)      Que uno los agrupa para formar frases gramaticales y el otro revisa el análisis sintáctico.
3)       Área=base*altura/2
         
 
Taller No. 2
 
1)
  • Análisis Léxico: Es una cadena de suseción de caracteres que construye un programa fuente
  • Análisis Sintáctico: son lo que se agrupan y forman frases gramaticales
  • Análisis semántico: Es el que revisa el resultado y compila el análisis sintáctico.
 
2)      ¿La detección de errores se considera una fase de compilador?  R: Si es una fase cuando encontramos un error trata de poder continuar a la compilación permitiendo identificar más errores en el programa fuente.
3)      ¿Qué función tiene la tabla de símbolos en un compilador?  R: es el que detecta nuevos identificadores mediante constante ID como dígitos o letras y empiezan a mostrar en la tabla de símbolos.
4)      Fase de análisis semántico correctamente y que verifica el que revisa el programa fuente
5)      Las reglas de estructura se denomina sintaxis del lenguaje.
6)      ¿Qué significa código intermedio? R: Es un algoritmo que genera el código intermedio para las construcciones típicas del lenguaje de programación.
7)      ¿Cuáles son las propiedades de una representación intermedia?
·        Hay tres direcciones, tiene un operador además de la asignación cuando se genera el compilador dirige el orden de las operaciones.
·        Tiene un nombre temporal que guarda los valores acumulados por las instrucciones.
Las tres direcciones tienen menos de tres operandos, calcula la expresión, maneja las construcciones de flujo, control y procedimiento
 
 
 
TALLER 3
 
1.Cual es el objetivo de un compilador
Rta. El objetivo es traducir un programa
2.  que se entiende por interpretación
Rta: que es aquel que traduce frase a frase
3. que es la compilación
Rta: la compilación es cuando la traducción se hace con el texto completo
 
4. la tarea que analiza el programa fuente para dividirlo en componentes y extraer de algún modo el significado creando una representación intermedia del programa fuente que es la síntesis se llama:   análisis semántico

5. en un árbol  sintáctico el nodo es  una operación  y los hijos  son argumentos de dicha operación

 
 6. que es un componente léxico o lexema
Rta: son palabras o “ tokens”
7. que es el código intermedio
Rta: es un programa para una maquina abstracta. Esta representación intermedia debe tener dos propiedades importantes; debe ser fácil de producir y fácil de traducir al programa objeto.
8. defina los siguientes términos
a. preprocesador : los preprocesadores producen la entrada para un compilador y pueden hacer diferentes funciones
- procesamiento de macros
- inclusión de archivos
- procesadores racionales 
- extensiones a lenguajes
B. compilador: Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.
c. ensamblador: un ensamblador es una versión mnemotécnica del código de maquina donde se unan nombres en cambio de códigos binarios para expresiones y también se usan nombre para las direcciones de memoria.
d. editor de carga : consiste en tomar el código maquina relocalizable  modificar las direcciones relocalizables y ubicar las instrucciones y los datos modificados  en las posiciones de la memoria
e. linker (enlace) : permite formar un solo programa a partir de varios archivos de código maquina relocalizable. Estos archivos pueden ser el resultado de varias compilaciones incluso algunos pueden ser bibliotecas de rutinas proporcionadas por el sistema y disponibles para cualquier programa que las requiera.
9.investigar la teoría de los autómatas y los lenguajes formales
Rta: La teoría de autómatas es una rama de las ciencias de la computación que estudia las máquinas abstractas y los problemas que éstas son capaces de resolver. La teoría de autómatas está estrechamente relacionada con la teoría del lenguaje formal ya que los autómatas son clasificados a menudo por la clase de lenguajes formales que son capaces de reconocer.
Un autómata es un modelo matemático para una máquina de estado finita (FSM sus siglas en inglés). Una FSM es una máquina que, dada una entrada de símbolos, "salta" a través de una serie de estados de acuerdo a una función de transición (que puede ser expresada como una tabla). En la variedad común "Mealy" de FSMs, esta función de transición dice al autómata a qué estado cambiar dados unos determinados estado y símbolo.
La entrada es leída símbolo por símbolo, hasta que es "consumida" completamente (piense en ésta como una cinta con una palabra escrita en ella, que es leída por una cabeza lectora del autómata; la cabeza se mueve a lo largo de la cinta, leyendo un símbolo a la vez) una vez la entrada se ha agotado, el autómata se detiene.
Dependiendo del estado en el que el autómata finaliza se dice que este ha aceptado o rechazado la entrada. Si éste termina en el estado "acepta", el autómata acepta la palabra. Si lo hace en el estado "rechaza", el autómata rechazó la palabra, el conjunto de todas las palabras aceptadas por el autómata constituyen el lenguaje aceptado por el mismo.
 EJERCICIO JAVA
 
PANTALLASOS
 





 
 
 OPERACIONES MATEMATICAS
                                                                                                 
 
 
 
 
package Operacionesmatematicas;

import java.util.Scanner;

import javax.swing.*;

public class Operacionesmatematicas {

    public static void main (String [] args)


    {

        int clave = 0;

        int suma, resta, multiplicacion, divicion,opcion;

        String sopcion;

                do

                {

                    sopcion = JOptionPane.showInputDialog("Elija una opcion: suma(1)//resta(2)//multiplicacion(3)//divicion(4)//salir()");

                    opcion = Integer.parseInt (sopcion);

                    //Scanner sc = new Scaner (System.in);

                    //System.out.println ("Ingrese la opcion:");

                    //int operacion = sc.nextInt();

                                                Scanner SC=new Scanner (System.in);

                            System.out.println("Ingrese un numero ");

                            int n = SC.nextInt();

                            System.out.println("Ingrese segundo numero");

                            int m = SC.nextInt();

                    switch (opcion) {

                        case 1:

                            suma=n+m;

                            System.out.printf("El resultado de suma es:"+suma);

                            System.out.printf("\n");break;

                        case 2:

                            resta=n-m;

                            System.out.printf("El resultado de suma es:"+resta);

                            System.out.printf("\n");break;

                        case 3:

                            multiplicacion=n*m;

                            System.out.printf("El resultado de suma es:"+multiplicacion);

                            System.out.printf("\n");break;

                        case 4:

                            divicion=n/m;

                            System.out.printf("El resultado de suma es:"+divicion);

                            System.out.printf("\n");break;

                        default: JOptionPane.showMessageDialog (null, "el numero no pertenece al rango chao, pues:");

                            clave = 10; break; }
             

                }while (clave == 0);

                           

                    }

 
 


No hay comentarios:

Publicar un comentario