Está en la página 1de 13

Unidad 4

Introducción a la programación
ING. GABRIEL ENRÍQUEZ PEÑA
Contenido

4.1. Características del lenguaje de programación


4.2. Traducción de un programa
4.2.1. Compilación
4.2.2. Enlace
4.2.3. Errores en tiempo de compilación
4.3. Ejecución de un programa
4.4. Errores en tiempo de ejecución
4.1.Características del lenguaje de
programación
C es un lenguaje de alto nivel, que permite programar con instrucciones de lenguaje de propósito
general. También, C se define como un lenguaje de programación estructurado de propósito general;

aunque en su diseño también primó el hecho que fuera especificado como un lenguaje de programación de
Sistemas, lo que proporciona una enorme cantidad de potencia y flexibilidad.

El estándar ANSI C formaliza construcciones no propuestas en la primera versión de C, en especial,


asignación de estructuras y enumeraciones. Entre otras aportaciones, se definió esencialmente, una nueva forma
de declaración de funciones (prototipos). Pero es, esencialmente, la biblioteca estándar de funciones, otra de las
grandes aportaciones.

Hoy, en el siglo XXI, C sigue siendo uno de los lenguajes de programación más utilizados en la industria del
software, así como en institutos tecnológicos, escuelas de ingeniería y universidades. Prácticamente todos los
fabricantes de sistemas operativos, Windows, UNIX, Linux, MacOS, Solaris..., soportan diferentes tipos de
compiladores de lenguaje C y en muchas ocasiones distribuciones gratuitas bajo cualquiera de los sistemas
operativos citados. Todos los compiladores de C++ pueden ejecutar programas escritos en lenguaje C,
preferentemente si cumplen el estándar ANSI C.
4.2. Traducción de un programa

El proceso de traducción de un programa fuente escrito en un lenguaje de alto nivel a un


lenguaje máquina comprensible por la computadora, se realiza mediante programas llamados
“traductores”.

Los traductores de lenguaje son programas que traducen a su vez los programas fuente escritos
en lenguajes de alto nivel a código máquina. Los traductores se dividen en compiladores e
interpretes.
4.2. Traducción de un programa

Intérpretes
Un intérprete es un traductor que toma un programa fuente, lo traduce
y, a continuación, lo ejecuta.

Los programas intérpretes clásicos como BASIC, prácticamente ya no se


utilizan, más que en circunstancias especiales. Sin embargo, está muy
extendida la versión interpretada del lenguaje Smalltalk, un lenguaje
orientado a objetos puro.

El sistema de traducción consiste en: traducir la primera sentencia del


programa a lenguaje máquina, se detiene la traducción, se ejecuta la
sentencia; a continuación, se traduce la siguiente sentencia, se detiene
la traducción, se ejecuta la sentencia y así sucesivamente hasta
terminar el programa.
4.2. Traducción de un programa
Compiladores
Un compilador es un programa que traduce los programas fuente
escritos en lenguaje de alto nivel a lenguaje máquina. La
traducción del programa completo se realiza en una sola
operación denominada
compilación del programa; es decir, se traducen todas las
instrucciones del programa en un solo bloque.

El programa compilado y depurado (eliminados los errores del


código fuente) se denomina programa ejecutable porque ya se
puede ejecutar directamente y cuantas veces se desee; sólo
deberá volver a compilarse de nuevo en el caso de que se
modifique alguna instrucción del programa.

De este modo el programa ejecutable no necesita del compilador


para su ejecución. Los lenguajes compiladores típicos más
utilizados son: C, C++, Java, C#, Pascal, FORTRAN y COBOL.
4.2.1.Compilación
La compilación es el proceso de traducción de programas fuente a programas objeto. El programa objeto
obtenido de la compilación ha sido traducido normalmente a código máquina.

Para conseguir el programa máquina real se debe utilizar un programa llamado montador o enlazador
(linker).

El proceso de montaje conduce a un programa en lenguaje máquina directamente ejecutable


(Figura 1.23).

El proceso de ejecución de un programa escrito en un lenguaje de programación y mediante un


compilador suele tener los siguientes pasos:

1. Escritura del programa fuente con un editor (programa que permite a una computadora actuar de modo
similar a una máquina de escribir electrónica) y guardarlo en un dispositivo de almacenamiento (por
ejemplo, un disco).
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador C.
4. Verificar y corregir errores de compilación (listado de errores).
5. Obtención del programa objeto.
6. El enlazador (linker) obtiene el programa ejecutable.
7. Se ejecuta el programa y, si no existen errores, se tendrá la salida del programa.
4.2.1.Compilación
4.2.2.Enlace
La siguiente etapa de compilación es el enlace con las funciones presentes en las librerías de
funciones. Si nuestro programa utiliza solo funciones ANSI, no suele ser necesario indicarle al
compilador en que librerías están esas funciones. Sin embargo hay excepciones.

Por ejemplo si utilizamos funciones matemáticas debemos integrar la librería #include <math.h>.

Es decir, la etapa de enlazado integra el código de bajo nivel generado de todos los ficheros y sub
programas que se han mandado compilar y se añade el código de las funciones que hay en las
bibliotecas del compilador para que el ejecutable pueda comunicarse directamente con el
sistema operativo, traduciendo así finalmente el código objeto a código maquina, y generando un
módulo ejecutable.
4.2.3.Errores en tiempo de
compilación
El compilador es capaz de detectar algunos errores que pueden cometerse en el desarrollo de un programa escrito en C.
Evidentemente, no puede detectar todos ya que un programa puede funcionar perfectamente pero no hacer lo que se espera
de él. Los errores detectados por el compilador son de dos clases: errores propiamente dichos (errors), y advertencias (warnings)

Los errores se deben a cuestiones sintácticas relacionadas con el lenguaje. El compilador enumera los errores que se
encontraron, y luego detiene la compilación. El mensaje de error que aparece siempre indica al menos tres cosas:

• El nombre del fichero en donde se ha encontrado el error.


• La línea del fichero en donde se ha detectado el error.
• Un mensaje describiendo brevemente el error.

Las advertencias no indican errores, sino que llaman la atención al programador sobre los posibles usos incorrectos del lenguaje.
Las advertencias, a diferencia de los errores no detienen el proceso de compilación, pero casi siempre señalan un error oculto.
En general, si aparece un warning hay que intentar eliminarlo.

Si el compilador encuentra el error , intentara seguir compilando el programa para encontrar todos los errores posibles,
deteniéndose cuando le resulte imposible seguir.
4.3. Ejecución de un programa
A un programa en ejecución se le suele llamar también proceso.

El proceso de ejecución de un programa escrito en un lenguaje de programación y mediante un compilador tiene los siguientes
pasos:

1. Escritura del programa fuente con un editor (programa que permite a una computadora actuar de modo similar a una
máquina de escribir electrónica) y guardarlo en un dispositivo de almacenamiento.
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador.
4. Verificar y corregir errores de compilación.
5. Obtención del programa objeto
6. El enlazador (linker) obtiene el programa ejecutable.
7. Se ejecuta el programa y, si no existen errores, se tendrá la salida del programa.

Se denomina tiempo de ejecución (runtime en inglés) al intervalo de tiempo en el que un programa de computadora se ejecuta
en un sistema operativo.

Este tiempo se inicia con la puesta en memoria principal del programa, por lo que el sistema operativo comienza a ejecutar sus
instrucciones. El intervalo finaliza en el momento en que éste envía al sistema operativo la señal de terminación, sea ésta una
terminación normal, en que el programa tuvo la posibilidad de concluir sus instrucciones satisfactoriamente, o una terminación
anormal, en el que el programa produjo algún error y el sistema debió forzar su finalización.

Este término suele emplearse, en oposición a tiempo de compilación, para indicar si una acción o hecho sucede en uno u otro
tiempo.
4.4.Errores en tiempo de ejecución
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 equivocarnos (errores lógicos) al programar el algoritmo
(sumar en vez de restar, etc.).
• Un programa puede interrumpirse bruscamente, por ejemplo si tenemos que hacer una división y el divisor es
cero,etc.

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 detecta un
warning la compilación no se detiene. Si en un programa fuente sólo se detectan warnings sí que se podrá
obtener un programa objeto, que tras el linkeado dará lugar a un programa ejecutable.
4.4.Errores en tiempo de ejecución
Encontrar la causa que los provoca es una labor en ocasiones complicada, razón por la cual los EID
(Entornos Integrados de Desarrollo,) nos proporcionan una herramienta llamada Depurador que nos ayuda a
encontrar los errores lógicos y demás errores producidos en tiempo de ejecución.

Un depurador (debugger), es un programa diseñado específicamente para la detección, verificación y


corrección de errores.

Los depuradores nos permiten trazar el programa (ejecutarlo sentencia a sentencia) y visualizar el contenido de
las variables y direcciones de memoria durante la ejecución del programa.

Además permiten alterar el flujo de ejecución del mismo, cambiar los valores de las variables e introducir puntos
de parada.

También podría gustarte