TRABAJO: PROYECTO FINAL MATERIA: SOFTWARE DE SISTEMA INTEGRANTES DEL EQUIPO : VICTOR HUGO CARRILLO GARCIA EZEQUIEL GONZALEZ VELAZQUEZ SERGIO GOMEZ JIMENEZ FRANCO ALEJANDRO MARTINEZ LOPEZ RENE SANTAMARIA MUNGIA CATEDRATICO: LIC. JULIA MARIA MUÑOZ LARA
Mapa Mental Aplicación 1
Aplicación 2
Paso a paso de aplicaciones
Paso a paso de aplicaciones
Graficas de información
Graficas de información
Problemática y Justificación En la escuela Benito Juárez García el profesor Sergio Martínez López tenia la problemática del control de sus alumnos. Es así que decidió adquirir un programa para llevar el registro de sus alumnos, capturando cada nombre e imprimiéndolos en
Programa (Código) Programa fuente
Compilador Analizador lexicografico Analizador sintáctico Analizador semántica Programa objeto
Ligador Cargador Programa ejecutable
Programa (En ejecución)
Cargador Programa ejecutable
PROGRAMA FUENTE Programa escrito en un lenguaje de alto nivel (texto ordinario que contiene las sentencias del programa en un lenguaje de programación). Necesita ser traducido a código máquina para poder ser ejecutado. Por lo general este es un archivo que es creado por el usuario como un texto ASCII con o sin un formato especifico aunque también puede ser el resultado de algún otro proceso Programas que generan programas
PROCESAMIENTO Un preprocesador es la estrategia generalmente adoptada como solución a lenguajes huéspedes, extensiones, lenguajes 4GL, o lenguajes de dominio especifico. El preprocesador es un traductor encargado de transformar dichas instrucciones a instrucciones del lenguaje anfitrión (generalmente un tradicional 3GL) sobre las cuales finalmente trabajar el compilador. Esta etapa es definitivamente opcional.
COMPILADOR Programa encargado de traducir los programas fuentes escritos en un lenguaje de alto nivel a lenguaje máquina y de comprobar que las llamadas a las funciones de librería se realizan correctamente.
ANALIZADOR LEXICOGRAFICO El analizador léxico lee los caracteres del programa fuente, y verifica que correspondan a una secuencia lógica. En esta fase, la cadena de caracteres que conforma al programa fuente es despojada de comentarios, espacios en blanco y otros elementos superfluos. El programa encargado de hacer esto es conocido como un scanner , y de aquí que al proceso se le refiera comúnmente como scanning (exploración). Durante esta fase se identifican los elementos gramaticales usados en la creación del programa. Cada elemento identificado es substituido por un digo numérico conocido como token .
ANALIZADOR SINTÁCTICO Dicho de otra manera, que los tokens pertenezcan a frases gramaticales validas, que el compilador utiliza para sintetizar la salida. La cadena de tokens resultante es alimentada a un programa conocido como parser . El parser es el encargado de verificar que la secuencia y disposición de los tokens corresponda con la sintaxis del lenguaje. Este proceso de verificación sintáctica es conocido como parsing y es completamente guiado por la gramática del
EL ANALIZADOR SEMÁNTICO El analizador semántico verificara en este caso que cada operador tenga los operandos permitidos. En esta etapa se reúne la información sobre los tipos para la fase posterior, en esta etapa se utiliza la estructura jerárquica de la etapa anterior y así poder determinar los operadores, y operandos de expresiones y preposiciones.
GENERACION DE CODIGO INTERMEDIO Una vez que la secuencia de tokens ha sido validada, esta es utilizada para identificar el sentido de la acción a realizar y generar el correspondiente c digo en lenguaje m quina. Algunos compiladores recurren a la creación de código intermedio para posteriormente generar la secuencia de instrucciones maquina necesarias, mientras que algunos otros proceden a la generación directa del código maquina. ésta acción código máquina.
OPTIMIZACION DE CODIGO. Esta es otra etapa opcional. La optimización de c digo es una actividad que raya en un arte dominado solamente por un experimentado programador de ensamblador y conocedor de la arquitectura del computador. Existen algunas técnicas desarrolladas al respecto pero nada supera a la experiencia de un hábil programador. En esta etapa, ya sea posteriormente o trabajando al unísono con el generador de c digo, secuencias de instrucciones y estructuras de datos son examinadas buscando su substitución con secuencias, instrucciones o estructuras m s cortas, r pidas o eficientes.
PROGRAMA OBJ
Programa (o código) objeto: Es el programa fuente traducido (por el compilador) a código máquina. Aún no es directamente ejecutable.
LIGADOR
Linker (montador o enlazador): Es el programa encargado de insertar al programa objeto el código máquina de las funciones de las librerías (archivos de biblioteca) usadas en el programa y realizar el proceso de montaje, que producirá un programa ejecutable .exe. Las librerías son una colección de código (funciones) ya programado y traducido a código máquina, listo para utilizar en un programa y que facilita la labor del programador.
CARGADOR
Un cargador es un programa que realiza la función de carga, pero muchos cargadores también incluyen relocalización y ligado.
PROGRAMA EJECUTABLE Una vez que tenemos el programa en lenguaje máquina, para poderlo ejecutar hay que introducirlo en la memoria. 1. Una utilidad del S.O. llamada cargador colocará el programa, y sus datos de entrada, en memoria principal, preparándolo para su ejecución. 2. El S.O. le pasa el control a la C.P.U. para que comience la ejecución del programa, realizando la Unidad de Control los siguientes pasos (fases): Captación de la instrucción: Lee de la Memoria Principal la instrucción a ejecutar. Ejecución de la instrucción: Interpreta la instrucción leída y envía señales de control a las unidades que deban intervenir en su ejecución. Tras dicha ejecución se establece cuál será la siguiente instrucción a ejecutar.
Compilador
CARGADOR
Grafica de información Los compiladores emiten mensajes de error o de advertencia durante las fases de compilación, de enlace o de ejecución de un programa: • Los errores en tiempo de compilación son los que se producen antes de la ejecución del programa, durante el proceso de compilación del programa. • Los errores en tiempo de ejecución son los que se producen durante la ejecución del programa. Son los más difíciles de encontrar, no son detectados por el compilador, ya que son errores de lógica, no de sintaxis. Aunque al compilar un programa no de errores, el programa puede funcionar incorrectamente y/o a dar errores durante su ejecución. Por ejemplo: • Un programa puede producir resultados erróneos, al
Los errores que se pueden producir en la fase de compilación son: − Errores fatales: Son raros. Indican errores internos del compilador. Cuando ocurren la compilación se detiene inmediatamente. − Errores de sintaxis: Son los errores típicos de sintaxis. No detienen la compilación sino que al finalizar ésta se mostrará la lista con todos los errores encontrados. Algunos errores suelen ser consecuencia de otros cometidos con anterioridad. Con este tipo de errores no se puede obtener un programa objeto y por lo tanto tampoco el ejecutable. − Advertencias o avisos (warnings): Indican que hay líneas de código sospechosas que a pesar de no infringir ninguna regla sintáctica, el compilador las encuentra susceptibles de provocar un error. Cuando se
PROGRAMA 1
OBSERVACIONES
TIEMPO DE COMPILACION
4 segundos
TIEMPO DE EJECUCION
5 segundos en empezar el proceso
ERRORES DE TIEMPO DE EJECUCION No se encontró errores ERRORES DE TIEMPO DE COMPILACION
No se encontró errores
ERRORES LOGICOS
No se encontró errores
ERRORES DE SINTAXIS
No se encontró errores
ERRORES FATALES
No se encontró errores
ADVERTENCIAS O AVISOS
No se encontró errores
PROBLEMÁTICA MAS QUE NADA SERIA ENTENDER EL FUNCIONAMIENTO DE LOS COMPILADORES, ASI COMO EL DE LA IMPORTANCIA QUE TIENEN EN LAS TECNOLOGIAS DE INFORMACION, Y SABER COMO ES QUE HAN IDO EVOLUCIONANDO
JUSTIFICACION
NOSOTROS DECIDIMOS PONER ESTE PROGRAMA DE EXPLICACION YA QUE ES UN PROGRAMA NO MUY COMPLICADO, YA QUE EXISTEN MAS COMPLEJOS, ADEMAS FACILITA EL USO Y LA IMPORTANCIA QUE TIENEN LOS PROGRAMAS CARGADORES Y COMPILADORES
Programa fuente
Compilador Analizador lexicografico Analizador sintáctico Analizador semántica Programa objeto
Ligador Cargador Programa ejecutable
Cargador
COMO ACTUA EL COMPILADOR
EL ANALIZADOR SEMANTICO SE DA CUENTA QUE ESTA USANDO LISTAS ENLAZADAS AL ENCONTRAR UNA CLASE AUTOREFERENCIADA ES ESTE CASO NODE LE AVISA AL ANALIZADOR SINTACTICO DE QUE DEBE DE CONECTAR LOS NODOS POR MEDIO DEL NEXT EN EL CUERPO PRINCIPAL MAIN INICIALIZA CON LA FUNCION TOP QUE ES UNA VARIABLE DE REFERENCIA EL COMPILADOR DIVIDE EL PROGRAMA FUENTE EN ANALISIS Y LA SINTESIS DURANTE EL ANALISIS SE DA CUENTA DE TODAS LAS OPERACIONES QUE NECESITA EFECTUAR EN EL PROGRAMA FUENTE EN ESTE CASO SE DA CUENTA EL ANALIZADOR LEXICOGRAFICO QUE DEBE CREAR UNA ESTRUCTURA JERARQUICA LLAMADA ARBOL LO CREA Y ORDENA AL ANALIZADOR SEMANTICO QUE TODAS LAS INSTRUCCIONES SIGAN UN PROCESO LOGICO ADEMAS DE NO TENER ERRORES DE SINTAXIS
SI ES ASI DETIENE EL PROGRAMA FUENTE Y LE MUESTRA AL PROGRAMADOR SUS ERRORES ASI COMO TAMBIEN LE INDICA EL NUMERO DE RENGLON DONDE ESTAN EL PROGRAMADOR LO MODIFICA Y LO VUELVE A COMPILAR SI YA NO ES EXISTEN ERRORES EL ANALIZADOR SEMANTICO ENVIA UN MENSAJE DE PROCESO COMPLETO ESO INDICA QUE YA PUEDE SER EJECUTADO SI ES ESI EL PROGRAMA FUENTE SE CONVIERTE EN PROGRAMA OBJETO FINALMENTE EL CARGADOR ES EL QUE SE ENCARGA DE LLEVARLO A LA MEMORIA EL PROGRAMA YA ES EJECUTABLE .EXE EL CARGADOR APARTA UN TAMAÑO EN LA MEMORIA DONDE EJECUTARA ESE PROGRAMA.
PROGRAMA 2
OBSERVACIONES
TIEMPO DE COMPILACION
6 segundos: mayor proceso
TIEMPO DE EJECUCION
10 segundos en empezar el proceso mayor ejecuciones tiene el programa ERRORES DE TIEMPO DE EJECUCION No se encontró errores ERRORES DE TIEMPO DE COMPILACION
No se encontró errores
ERRORES LOGICOS
No se encontró errores
ERRORES DE SINTAXIS
No se encontró errores
ERRORES FATALES
No se encontró errores
ADVERTENCIAS O AVISOS
No se encontró errores