12.185 cursos gratis
8.406.331 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

Aprende a programar

Autor: Maria Elena de Lobos
Curso:
9,45/10 (38 opiniones) |131084 alumnos|Fecha publicación: 08/03/2005
Envía un mensaje al autor

Capítulo 5:

 Algoritmos y diagramas de flujo- Intérpretes y complicadores.

Los compiladores, los intérpretes y los ensambladores se encargan de traducir lo que haya escrito en lenguaje de alto nivel (código fuente) y lo convierten a código objeto (casi ejecutable).

Algoritmos y diagramas de flujo- Intérpretes y complicadores.

Complicador
Es un programa que traduce un programa escrito en un lenguaje de alto nivel, por ejemplo C++, en un programa en lenguaje de máquina que la computadora es capaz de entender y ejecutar directamente. Un compilador es un tipo especial de programa, en cuanto a que sus entradas o datos son algún programa y su salida es otro programa. Para evitar confusiones, solemos llamar programa fuente o código fuente al programa de entrada, y programa objeto o código objeto a la versión traducida que el compilador produce. Código se usa frecuentemente para referirse a un programa o a una parte de él, sobre todo cuando se habla de programas objeto.

Ejemplo:
Pascal
Cobol
Fortran
Ada
Código Fuente
Código Objeto
Código Ensamblador

Modula 2

C , C++
El compilador, informa al usuario de la presencia de errores en el programa fuente, pasándose a crear el programa objeto cuando está libre de errores. El código objeto puede ser ejecutado posteriormente. Una vez traducido un programa, su ejecución es independiente de su compilación. involucra dos pasos en su operación:

   1. Convertir código fuente a objeto
   2. Ejecutar el código objeto
Ventaja:

Al tener el código objeto, el programa se ejecuta más rápido

Fases de compilación

Algoritmos y diagramas de flujo- Intérpretes y complicadores.

Análisis: Dependiente del lenguaje. Independiente de la máquina
Sintaxis: Independiente del lenguaje. Dependiente de la máquina.
Intérprete: Es el que permite que un programa fuente escrito en un lenguaje vaya traduciéndose y ejecutándose directamente sentencia a sentencia por la computadora. Convierte uno por uno los enunciados del código fuente a código objeto antes de ser ejecutados.Convierte y ejecuta el programa en línea al mismo tiempo. Ejemplo: Basic estándar.

Ventaja:
Las ventajas de los intérpretes son:
· Resulta más fácil localizar y corregir errores (depuración de programas)
- son más pedagógicos para aprender a programar.
· El programa es más fácil de desarrollar.
Traducen programas de alto nivel. No se genera en la mayoría de los ficheros.

Programa
Fuente
Código
Intermedio
Programa
Objeto

Para cada una de las líneas se ejecuta el siguiente proceso:
1. Análisis de la instrucción de esa línea
2. Traducción de esa línea (si ya está correcta) a código objeto
3. Ejecución de esa línea

Con el intérprete, cada vez que necesitamos ejecutar el programa tenemos que volver a analizarlo porque no hay código objeto.
Con el compilador, aunque más lenta la traducción, sólo se realiza una vez.

Ejemplo 4
Supongamos que se han almacenado tres valores 5 = 01012, 25 = 110012 y 58 = 1110102 en las posiciones de memoria con direcciones 4,5 y 6.
Queremos multiplicar los dos primeros valores, sumar el tercero y almacenar el resultado en la palabra de memoria 7.

Algoritmos y diagramas de flujo- Intérpretes y complicadores.

Para llevar a cabo este cálculo, se deben ejecutar las siguientes instrucciones:
Recuperar el contenido de la palabra de memoria 4 y cargarlo en el registro acumulador de la unidad aritmético lógica.
Recuperar el contenido de la palabra de memoria 5 y calcular el producto de este valor y el valor situado en el acumulador.
Recuperar el contenido de la palabra de memoria 6 y sumar su valor con el valor situado en el registro acumulador.
Almacenar el contenido del registro acumulador en la palabra de memoria 7. Para almacenar estas instrucciones en la memoria de la computadora, deben estar representadas en forma binaria. Las direcciones de los datos no presentan problemas, puesto que pueden ser convertidos fácilmente a direcciones binarias:

4 = 100
5 = 101
6 = 110
7 = 111

Las operaciones de cargar, multiplicar, sumar, almacenar y otras instrucciones máquina básicas se representan mediante códigos numéricos, llamados códigos de operación, por ejemplo:

LOAD = 16 = 10000
STORE = 17 = 10001
ADD = 35 = 100011
MULTIPLY = 36 = 100100
SUB = 37 = 100101
DIV = 38 = 100110
Usando parte de una palabra para almacenar el código de operación y otra para la dirección del operando, podemos representar nuestra secuencia de instrucciones en lenguaje máquina como sigue:

1. 0001000000000100
2. 0010010000000101
3. 0010001100000110
4. 0001000100000111
Estas pueden ser almacenadas en cuatro palabras consecutivas de memoria. Cuando se ejecuta el programa, la unidad de control recuperará cada una de las instrucciones, la decodificará para determinar la operación y la dirección del operando, recuperará el operando, y entonces ejecutará la operación requerida, usando la unidad aritmético lógica cuando sea necesario. Los programas para las primeras computadoras tuvieron que ser escritos en lenguaje de máquina. Posteriormente fue posible escribirlos en lenguaje ensamblador usando códigos nemotécnicos en lugar de códigos de operación numéricos y nombres de variables en lugar de direcciones numéricas.
Por ejemplo la secuencia de instrucciones anteriores se escribiría así:

1. LOAD A
2. MULT B
3. ADD C
4. STORE X

Luego que se crearon los lenguajes de alto nivel, las instrucciones se escribían en forma más entendible para el programador. El ejemplo anterior podría ser como lo siguiente usando C++:

X = A * B + C

El producto en la programación se representa por asterisco. En cada uno de estos casos (ensamblador y lenguajes de alto nivel), el compilador traduce cada instrucción del programa en una secuencia de cuatro instrucciones máquina y genera un programa objeto.

Ejercicios Propuestos:
Usando mnemónicos de instrucción y códigos de operación, escriba una secuencia de instrucciones en a) Lenguaje ensamblador b) Lenguaje de máquina, equivalente a las instrucciones de C++:

1. X = (A - B) * C
X = (A+B) / (C+D)
X = (A + B) - C

Para las instrucciones máquina, suponga que los valores de A, B, C y D son almacenados en las palabras de memoria 15,16, 17 y 18 respectivamente, y que los valores de X e Y se almacenarán en la palabra de memoria 23 y 24 respectivamente.

Nuestras novedades en tu e-mail

Escribe tu e-mail:

Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Cursos similares a Aprende a programar


  • Vídeo
  • Alumnos
  • Valoración
  • Cursos
1. Cómo programar aplicaciones Cliente/Servidor en Visual Basic
Visual Basic nació como un lenguaje sencillo de programación, ideal para iniciarse... [17/09/04]
14.881  
2. Aprende Photodraw
PhotoDraw es una herramienta gráfica que permite trabajar con gráficos e imágenes... [21/05/02]
27.207  
3. Aprende Word
Este curso está destinado a los principiantes. A todos aquellos que necesitan una... [27/09/05]
5.184  

¿Qué es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail


¿Te interesa? ¡Te enviamos gratis las novedades de Programación!