Fundamentos de la Programación: Compiladores, Intérpretes y Tipos de Datos

Definición de Algoritmo

La siguiente definición: “Prescripción de un conjunto de pasos lógicos para resolver problemas de un mismo tipo” corresponde a:

A

La Lógica Booleana

C

Un algoritmo

B

Un lenguaje de programación

D

Un programa de computadora

Respuesta ( C )

Concepto de Programa Almacenado

Cuando la secuencia de instrucciones que debe ejecutar una computadora se almacena en la memoria principal, se dice que la computadora está programada internamente y esto es lo que define el concepto de:

A

Lenguaje fuente

C

Programa almacenado

B

Lenguaje objeto

D

Instrucciones de programa

Respuesta ( C )

Procesamiento en Lote y Sistemas Integrales

Procesamiento en Lote: Son procesamientos en donde las entradas y salidas son archivos de datos en lotes, cuyos registros son procesados lote por lote por un programa.

Sistemas Integrales: Son aquellos en donde el sistema de cómputo y las computadoras vienen a formar parte integral de un sistema más grande y una falla de la computadora usualmente significa la falla del sistema mayor también.

Definición de Sintaxis

El arreglo de palabras como elementos en una oración para mostrar una relación concreta, descrita por la secuencia de símbolos que permiten construir programas válidos es la definición de:

A

Semántica

C

Sintaxis

B

Un lenguaje de programación

D

Un programa de computadora

Respuesta ( C )

En general, el estilo sintáctico de un lenguaje se establece por la selección de varios elementos básicos de sintaxis. Tres de los siete más prominentes, vistos en clase son:

A

Conjunto de caracteres, símbolos de operación, palabras opcionales

C

Conjunto de caracteres, blancos, significados

B

Llaves y palabras reservadas, diccionario de datos, comentarios

D

Ninguna de las anteriores

Respuesta ( A )

Las funciones exactas del analizador semántico varían substancialmente, dependiendo del lenguaje y de la organización lógica del traductor.

Dos de las funciones más comunes son:

A

Operación con caracteres

Manejo de palabras opcionales

C

Mantenimiento de la tabla de símbolos

Detección de errores

B

Registro de palabras reservadas

Interrupciones de datos

D

Ninguna de las anteriores

Respuesta ( C )

Análisis de Léxico: Es la fase inicial de cualquier traducción que consiste en agrupar la secuencia de caracteres en sus partes elementales: identificadores, delimitadores, símbolos de operación, números, palabras clave, palabras opcionales, blancos, comentarios y todo lo demás. El resultado del mismo son elementos léxicos o “tokens”.

La Optimización: La optimización como una etapa en la traducción de un programa consiste en afinar el resultado del analizador semántico, evaluando la versatilidad o eficiencia producida por este y produciendo en la mayoría de los casos un programa objeto con mejor desempeño.

Unidad Sintáctica: Una secuencia de lexemas forma una unidad sintáctica tal como una expresión, una sentencia, una declaración o una llamada a un subprograma.


El programa que se almacena en la memoria de la computadora para que esta pueda ejecutarlo está escrito en:

A

Un lenguaje fuente

C

Un algoritmo

B

Un lenguaje de programación

D

Un lenguaje de máquina

Respuesta ( D )

Es la parte de un compilador que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Suele ser independiente de la plataforma para el cual se vaya a compilar

A

Front End

C

Programa almacenado

B

Código objeto

D

Back End

Respuesta ( A )

Lenguaje Intérprete: Analiza el programa fuente y lo ejecuta directamente, sin generar ningún código equivalente. Su acción equivale a la de un intérprete humano, que traduce las frases que oye sobre la marcha, sin producir ningún escrito permanente. Un ejemplo de intérpretes son los lenguajes BASIC, LISP y Prolog.

Computadora Central o Mainframe: Computadoras de gran tamaño para atender a una diversidad de usuarios ya sea para realizar procesos en lote o para atender a un cierto número de estaciones de trabajo enlazadas.

Es un problema central en el diseño de todo lenguaje en el que se admite dos o más interpretaciones diferentes en la ejecución de una operación o conjunto de instrucciones:

A

Falta de delimitación

C

Error de semántica

B

Error de sintaxis

D

Ambigüedad

Respuesta ( D )

Las expresiones y declaraciones son identificadas como:

A

Estructuras de programas y subprogramas

C

Símbolos de operación

B

Elementos sintácticos de un lenguaje

D

Instrucciones básicas de un lenguaje

Respuesta ( B )

Análisis Sintáctico: Aquí son identificados los elementos estructurales del programa (sentencias, declaraciones, expresiones, etc.) usando los lexemas producidos por el analizador del léxico.

El enlace y carga: Es la etapa que cuando el programa hace referencia a datos externos u otros subprogramas, enlaza y carga los varios segmentos del código traducido en memoria, usando una tabla adjunta para ligar apropiadamente las direcciones de los datos y subprogramas en el código donde sea necesario.

Símbolos terminales: A los símbolos usados para formar cadenas, derivadas de reglas de gramática de un lenguaje, se les denomina símbolos terminales. Después de que la traducción del programa ha sido optimizada, deberá ser ensamblado en declaraciones e instrucciones que puedan ser leídas en lenguaje de máquina, que será la salida de la traducción.

Esta etapa en la traducción de un programa se le conoce como:

A

Construcción del programa y subprogramas

C

Generación de Código

B

Análisis Semántico

D

Producción de un lenguaje

Respuesta ( C )


Todos los programas especifican un conjunto de operaciones que son aplicadas a ciertos datos en una cierta secuencia. Existen diferencias básicas entre los lenguajes en tres aspectos básicos:

A) Tipo de datos que admiten, tipo de operaciones disponibles y mecanismos para controlar la secuencia de operaciones

B) Tipos de lectura que admiten, tipos de memorias disponibles y mecanismos para controlar la secuencia de las operaciones

C) Tipo de secuencia de datos que admiten, tipo de códigos disponibles y mecanismos para controlar operaciones

D) Tipo de mecanismos para controlar los datos, tipo de operaciones disponibles y la secuencia de los operaciones

Respuesta ( A )

Un objeto de datos es elemental si:

A

es un agregado de otros objetos de datos

C

contiene un valor de datos que siempre es manipulado como una unidad

B

es un arreglo de otros objetos de datos

D

contiene un valor de datos que siempre es manipulado como un objeto

Respuesta ( C )

Tipo de datos: Un tipo de datos es una clase de objeto de datos integrado a un conjunto de operaciones para crearlos y manipularlos.

Representación almacenada: La representación almacenada es usada para representar los objetos de datos de los tipos de datos en la memoria de la computadora durante la ejecución de un programa.

Tipo de datos abstractos: Definimos un Tipo de Datos Abstractos como:

  • Un conjunto de objetos de datos, usando una o más definiciones de tipos
  • Un conjunto de operaciones abstractas sobre esos objetos de datos
  • Encapsulamiento de los conjuntos de manera tal que el usuario del nuevo tipo no pueda manipular los objetos de datos, excepto por el uso de las operaciones definidas.

Un lenguaje de programación provee un soporte para la abstracción, de dos maneras:

A) 1 proporcionado espacio para los objetos 2 facilitando ayudas al programador a diseñar herramientas de proceso

B) 1 proporcionado una computadora virtual 2 facilitando ayudas al programador para construir abstracciones

C) 1 proporcionando un enlace virtual de datos 2 facilitando ayudas al programador a establecer redundancias

D)1 proporcionando una estructura de sosten para abstracciones 2 facilitando al programador a construir enlaces virtuales

Respuesta ( B )

El mayor bloque de almacenamiento en cualquier sistema, debe ser el designado para almacenar:

A

las rutinas de control del administrador de memoria en tiempo de ejecución

C

los segmentos de código que representan los programas compilados de un usuario

B

llaves y palabras reservadas, diccionario de datos, comentarios

D

ninguna de las anteriores

Respuesta ( C )

Ocultamiento de información: El ocultamiento de información es principalmente una cuestión de diseño de programa. Una abstracción es efectivamente encapsulada solo cuando el lenguaje prohíbe el acceso a la información oculta dentro de la abstracción.

Mencione al menos dos elementos que requieren almacenamiento y descríbalos brevemente:

Segmentos de código para programas compilados: Contienen las instrucciones del programa traducidas a lenguaje máquina.

Programas del sistema en tiempo de ejecución: Bibliotecas y componentes necesarios para la ejecución del programa.

Estructuras de datos y constantes definidas por el usuario: Variables, arrays y constantes utilizadas por el programa.

Puntos de retorno de subprogramas: Direcciones de memoria a las que debe regresar el flujo de ejecución después de una llamada a un subprograma.

Evaluación temporal de expresiones: Resultados intermedios de cálculos.

Las estructuras de control de secuencia pueden ser convenientemente categorizadas en cuatro grupos, mencione al menos dos de ellas:

Expresiones: Combinan operandos y operadores para producir un valor.

Declaraciones: Definen variables, constantes y otros elementos del programa.

Programación declarativa: Describe el resultado deseado sin especificar los pasos exactos para lograrlo.

Subprogramas: Bloques de código reutilizables que realizan una tarea específica.

Árboles Sintácticos: El análisis sintáctico impone una estructura jerárquica a la cadena de componentes léxicos, que se representará por medio de árboles sintácticos.

En 1958, Strong y otros proponían una solución al problema de que un compilador fuera utilizable por varias máquinas objeto. Para ello, se dividía por primera vez el compilador en dos fases, designadas como:

A

Analizador y Sintetizador

C

Front End y Back End

B

Traductor e Integrador

D

ninguna de las anteriores

Respuesta ( C )

Las fases que por lo general manejan una gran proporción de los errores detectables por el compilador son:

A

Analizador de Léxico

C

Optimización de Código

B

Análisis Sintáctico y Semántico

D

Generación de Código

Respuesta ( B )

¿Cual es la diferencia fundamental entre un compilador y un intérprete?

Los compiladores realizan la traducción en tiempo de desarrollo. Es decir, el programa aún no se está ejecutando. El compilador recibe todo el código fuente, lo analiza, lo optimiza y lo traduce a lenguaje máquina dejando un programa completo listo para su ejecución.

Los intérpretes realizan la traducción en tiempo de ejecución. Es decir, a medida que el programa se va ejecutando, el intérprete va traduciendo instrucciones al lenguaje máquina.

Muchas herramientas de software que manipulan programas fuente realizan primero algún tipo de análisis. Algunos ejemplos de tales herramientas son:

  • Editores de estructuras
  • Impresoras estéticas
  • Verificadores estáticos
  • Intérpretes

Indique en qué consisten al menos dos de ellas.

Editores de estructuras: Toman como entrada una secuencia de órdenes para revisar un programa fuente. El editor de estructuras no sólo realiza las funciones de creación y modificación de textos, sino que también analiza el texto del programa dando a la entrada del programa fuente una estructura jerárquica apropiada.

Impresoras estéticas: Una impresora estética analiza un programa y lo imprime de forma que la estructura del programa resulte claramente visible. Por ejemplo, los comentarios pueden aparecer con un tipo de letra especial, y las proposiciones pueden aparecer con una hendidura proporcional a la profundidad de su anidamiento en la organización jerárquica de éstas proposiciones.

Verificadores estáticos: Un verificador estático, lee un programa, lo analiza e intenta descubrir errores potenciales sin ejecutar el programa. La parte del análisis es similar a la que se encuentra en los compiladores de optimación.

Intérpretes: En lugar de producir un programa objeto, resultado de una traducción, un intérprete realiza las operaciones que implica el programa fuente.


Para construir un programa grande se divide en un conjunto de componentes llamados módulos. El diseño de los módulos generalmente contempla dos aspectos:

Una descomposición funcional del programa

Una descomposición de los datos del programa

Es la operación que frecuentemente mayor demanda realiza de asignación de memoria.

La activación de un registro de un subprograma y otros datos sobre la llamada de un subprograma

Administración de memoria estática: La forma más simple de asignación es la asignación estática. Ordinariamente el almacenamiento para los segmentos de código de los programas del usuario y del sistema son asignados estáticamente, como es el caso de los buffers de E/S y varios sistemas de datos misceláneos.

Notación Infija: Esta notación es más adecuada para operaciones binarias, el símbolo de operación es escrito entre los dos operandos, basándose en la notación comúnmente usada para operaciones de aritmética básica, relacional y lógicas.

Información escondida u oculta: El ocultamiento de información es principalmente una cuestión de diseño de programa. Una abstracción es efectivamente encapsulada solo cuando el lenguaje prohíbe el acceso a la información oculta dentro de la abstracción.

Un lenguaje de programación provee un soporte para la abstracción, de dos maneras:

  1. Proporcionado una computadora virtual
  2. Facilitando ayudas al programador para construir abstracciones

El mayor bloque de almacenamiento en cualquier sistema, debe ser el designado para almacenar:

A

las rutinas de control del administrador de memoria en tiempo de ejecución

C

los segmentos de código que representan los programas compilados de un usuario

B

llaves y palabras reservadas, diccionario de datos, comentarios

D

ninguna de las anteriores

Respuesta ( C )

Áreas temporales de almacenamiento: Ordinariamente las operaciones de entrada y salida trabajan a través de buffers, los cuales sirven como áreas temporales de almacenamiento donde los datos son colocados entre el tiempo de una transferencia y el que requiere la ejecución del programa para demandar nuevamente la colocación de otro registro de datos.

Mencione al menos dos elementos que requieren almacenamiento y descríbalos brevemente:

Segmentos de código para programas compilados:

Programas del sistema en tiempo de ejecución:

Estructuras de datos y constantes definidas por el usuario:

Puntos de retorno de subprogramas:

Evaluación temporal de expresiones:

Las estructuras de control de secuencia pueden ser convenientemente categorizadas en cuatro grupos, mencione al menos dos de ellas:

 Expresiones

Declaraciones

Programación declarativa

Subprogramas

Explique qué entiende por “Árboles Sintácticos

El análisis sintáctico impone una estructura jerárquica a la cadena de componentes léxicos, que se representará por medio de árboles sintácticos

 Al final de los años 50 se van poniendo las bases para la división de tareas en un compilador. Así, en 1959 Rabin y Scott proponen el empleo de autómatas deterministas y no deterministas para él:

A

Análisis Semántico

C

Análisis Sintáctico

B

Reconocimiento lexicográfico

D

ninguna de las anteriores

Respuesta (  B  )

Las fases que por lo general manejan una gran proporción de los errores detectables por el compilador son:

A

Analizador de Léxico

C

Optimización de Código

B

Análisis Sintáctico y Semántico

D

Generación de Código

 Respuesta (  B  )

 ¿Cuál es la diferencia fundamental entre un compilador  y  un ensamblador?

Los compiladores realizan la traducción en tiempo de desarrollo. Es decir, el programa aún no se está ejecutando. El compilador recibe todo el código fuente, lo analiza, lo optimiza y lo traduce a lenguaje máquina dejando un programa completo listo para su ejecución.

 Muchas herramientas de software que manipulan programas fuente realizan primero algún tipo de análisis. Algunos ejemplos de tales herramientas son:

  • Editores de estructuras
  • Impresoras estéticas
  • Verificadores estáticos
  • Intérpretes

Indique en qué consisten al menos dos de ellas.

Editores de estructuras: toman como entrada una secuencia de órdenes para revisar un programa fuente. El editor de estructuras no sólo realiza las funciones de creación y modificación de textos, sino que también analiza el texto del programa dando a la entrada del programa fuente una estructura jerárquica apropiada. Impresoras estéticas: Una impresora estética analiza un programa y lo imprime de forma que la estructura del programa resulte claramente visible. Por ejemplo, los comentarios pueden aparecer con un tipo de letra especial, y las proposiciones pueden aparecer con una hendidura proporcional a la profundidad de su anidamiento en la organización jerárquica de éstas proposiciones.

Verificadores estáticos: Un verificador estático, lee un programa, lo analiza e intenta descubrir errores potenciales sin ejecutar el programa. La parte del análisis es similar a la que se encuentra en los compiladores de optimación.

Intérpretes: En lugar de producir un programa objeto, resultado de una traducción, un intérprete realiza las operaciones que

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.