E je r c ic io 1 .1 .1: ¿Cuál es la diferencia entre un compilador y un intérprete? El compilador realiza un proceso de traducción y re porta cualquier error en el programa fuente que detecte durante ese proceso, si el programa destino es un programa ejecutable en el lenguaje máquina entonces se podrá ejecutarlo para procesar las entradas y salidas, los interpretes En vez de producir un programa destino como una traducción, nos da la apariencia de ejecutar directamente las operaciones especificas en el programa origen (fuente) con las entradas proporcionadas por el usuario. E je r c ic io 1 .1 .2: ¿Cuáles son las ventajas de (a) un compilador sobre un intérprete, y (b) las de un intérprete sobre un compilador? un compilador sobre un intérprete, Que los compiladores por lo ge neral son más rápidos que un intérprete al momento de asignar las e ntradas a las salidas y el intérprete sobre un compilador, ofrece mejores diagnósticos de error que un compilador, ya que ejecuta el programa fuente instrucción por instrucción. E je r c ic io 1 .1 .3: ¿Qué ventajas hay para un sistema de procesamiento de lenguajes en el cual el compilador produce lenguaje ensamblador en vez de lenguaje máquina? El compilador produce lenguaje ensamblador ya que es más fácil producir e l lenguaje ensamblador como salida y es más fácil su depuración. E je r c ic io 1 .1 .4: A un compilador que traduce un lenguaje de alto nivel a otro lenguaje de alto nivel se le llama traductor de source -to-source. ¿Qué ventajas hay en cuanto al uso de C como lenguaje destino para un compilador? El lenguaje C es lenguaje de nivel alto e intermedio. Es un compilador hibrido, esto logra un procesamiento más rápido de las entradas a las salidas. E je r c ic io 1 .1 .5: Desc riba algunas de las tareas que necesita r ealizar un ensamblador Para realizar un ensamblador, el programa fuente a atravesar de un preprocesador, del programa fuente modificador a un compilador y luego el programa destino en ensamblador a un ensamblador. 1.3.3 E je rc ic io s p a r a la sec c ió n 1.3 E je r c ic io 1 .3 .1: Indique cuál de los siguientes términos: a) Imperativo
C, C++, Java
b) Orientado a objetos
C + +, Java
c) De cuarta generación d) Declarativo e) Funcional
ML
f)
Perl, Python
Secuencia de comandos
g) Von Neumann h) De tercera generación
Fortran, C Fortran, Cobol, Lisp , C, C++,java
1.6.8 Ejercicios p a r a la sección 1.6 E je r c ic io 1 .6 .1: Para el código en C estructurado por bloques de la figura 1.13(a), indique los valores asignados a w, x, y y z. W=13 x=9 y=13 z=9 E je r c ic io 1 .6 .2: Repita el ejercicio 1.6.1 para el código de la figura 1.13(b). w=9 x=7 y=13 z=7 E je r c ic io 1 .6 .3: Para el código estructurado por bloques de la figura 1.14, suponiendo el alcance estático usual de las declaraciones, dé e l alcance para cada una de las doce declaraciones. DECLARACION
ALCANCE
Int w DECLARACION Int w Int x Int y Int z Int x Int z Int w Int x Int w Int x Int y Int z
ALCANCE B1 - B3 – B4 B1 – B2 - B4 B1 – B5 B1 – B2 – B5 B2 – B3 B2 B4 B4 B4
Ejercicio 1.6.4: ¿Qué imprime el siguiente código en C?
En la función c imprime en pantalla el numero 1