El documento describe los pasos para la elaboración y ejecución de un programa: 1) escribir el código fuente, 2) compilar el código para verificar errores, 3) corregir errores de sintaxis, 4) enlazar el programa para generar el ejecutable, 5) ejecutar el programa y usar un depurador para corregir errores de ejecución. También resume las características principales del lenguaje C como su estructura modular basada en funciones y su compilación a código de máquina ejecutable.
Se recomienta leer en particular las secciones siguientes : (1) Lenguaje de máquina ; (2) Lenguaje ensamblador ; (3) Código máquina (o lenguaje de máquina).
3. Como cada lenguaje de programación tiene unas
reglasespeciales (sintaxis) para la construcción de sus
programas,debe existir un compilador específico para cada
lenguaje deprogramación. El compilador antes de generar el
programaobjeto debe analizar el programa fuente
(almacenado en unarchivo de texto) y comprobar que cumple
las reglas desintaxis del lenguaje de programación. Si cumple la
sintaxisgenera el correspondiente programa
objeto, sino, visualizará unmensaje de error y su posible causa
para que procedamos a ladepuración del programa. Depurar
un programa consiste endetectar y corregir los errores que se
producen en él, ya seanen tiempo de compilación o en tiempo
de ejecución. Loserrores en tiempo de compilación son los que
se producenantes de la ejecución del programa, durante el
proceso decompilación del programa. Los errores en tiempo de
ejecuciónson los que se producen durante la ejecución del
programa.Este tipo de errores, son los más difíciles de
encontrar, porqueno son detectados por el compilador, ya que
no son erroresconsecuencia de violar alguna regla sintáctica.
4. Un programa puede interrumpirse bruscamente, por ejemplo sitenemos que
hacer una división y el divisor es cero, etc. Paraayudarnos a encontrar los
errores lógicos y demás erroresproducidos en tiempo de
ejecución, podemos hacer uso de losdepuradores. Un depurador
(debugger), es un programa diseñadoespecíficamente para la
detección, verificación y corrección deerrores, y que por tanto nos ayudará
en las tareas de depuración.Los depuradores nos permiten trazar el
programa (ejecutarlosentencia a sentencia) y visualizar el contenido de las
variables ydirecciones de memoria durante la ejecución del
programa.Además permiten alterar el flujo de ejecución del
mismo, cambiarlos valores de las variables e introducir puntos de parada.
Página 3de 5 Los compiladores emiten mensajes de error o de
advertenciadurante las fases de compilación, de enlace o de ejecución de
unprograma. Los mensajes de error producidos los podemos agruparen tres
bloques: − Errores fatales: Son raros. Algunos indican un errorinterno del
compilador. Cuando ocurren la compilación se detieneinmediatamente. −
Errores de sintaxis: Son los errores típicos desintaxis, errores de línea de
órdenes y errores de acceso a memoriao disco. El compilador terminará la
fase de compilación y sedetendrá. − Advertencias (warnings): No impiden la
compilación.Indican condiciones que son sospechosas, pero son legítimas
comoparte del lenguaje. Así pues los pasos a seguir para la elaboración
yejecución de un programa los podemos resumir de la siguientemanera:
5. Comenzamos escribiendo el código fuente.2 º.
Compilamos el fichero fuente y se comprueban los
mensajesde error.3 º. Volvemos al editor y eliminamos los
errores de sintaxis.4 º. Cuando el compilador tiene éxito, el
linker construirá el archivoejecutable.5 º. Ya podemos
ejecutar el archivo ejecutable que se obtiene allinkar.6 º.
Si encontramos un error, podemos activar el depurador
paratrazar el programa y ejecutar sentencia a
sentencia.7 º. Una vez que hayamos encontrado la causa
del error,volveremos al editor y lo corregimos.8 º. El
proceso de compilar, enlazar y ejecutar el programa
lorepetiremos hasta que no se produzcan errores.9 º. Una
vez tengamos el archivo ejecutable, será el
sistemaoperativo el encargado de colocar el programa
en la memoriacentral y ejecutarlo
6. Compilar el programa Depurarel programa Ejecutar el programaFase
de ejecución de un programaUna vez que tenemos el programa en
lenguaje máquina, para poderloejecutar hay que introducirlo en la
memoria. Para esta tarea existe un programadel sistema operativo
denominado cargador, que introduce el programa enposiciones
consecutivas de memoria a partir de una determinada.Cuando el
programa está cargado se le indica a la computadora que pase
sucontrol a la posición de memoria donde se ha cargado. Esta
operación la hace directamente el sistema
operativo.pasos:Suponiendo que el programa se ha cargado a partir
de una determinadaposición i de memoria.1. Lleva de la Memoria (M)
a la Unidad de Control (UC) la instrucción queestá en la posición i.
Cambiar el valor de i por i+1.2. Interpreta el código de operación de la
instrucción y, según sea éste y lasseñales de estado, envía señales de
control a las unidades y circuitos quedeben intervenir para ejecutar la
instrucción. Vuelve a la fase (1).ejecución de instrucción.En el caso de
que la ejecución de una instrucción implique saltar a otrainstrucción en
la posición m, por ejemplo (alterándose por tanto el
ordensecuencial), la UC hace, en la fase de ejecución de la instrucción
de salto,que cambie i por m, de forma que en la siguiente fase de
captación se ejecútala instrucción que está en m.
7. El lenguaje C es un lenguaje estructurado: permite seccionar y esconder
(mediante subrutinasy variables locales) del resto del programa toda la
información e instrucciones necesarias pararealizar una determinada tarea.
− Soporta construcciones de bucles (while, do-while y for) einstrucciones
condicionales (if, switch) − Permite sangrar las sentencias. − Permite crear
funciones(subrutinas independientes). Las funciones son los bloques en los
que se desarrolla toda laactividad de los programas. Son los que permiten
definir las tareas de un programa y codificarlaspor separado, permitiendo
así que los programas sean modulares. − Permiten crear bloques decódigos.
Un bloque de código es un grupo de sentencias de un programa
conectadas de formalógica que es tratado como una unidad. Se crean
colocando una serie de sentencia entre llaves.♦ El lenguaje C sólo tiene 32
palabras clave, que constituyen las órdenes que conforman ellenguaje C (el
BASIC por ejemplo contiene 159 palabras clave).♦ El lenguaje C es
compilado, no interpretado. Un intérprete lee el código fuente de un
programalínea a línea y traduce las instrucciones específicas contenidas en
esa línea para que elmicroprocesador las pueda interpretar, pero no genera
ningún programa objeto. Un compilador,en cambio lee el programa entero
y lo convierte en código objeto, de manera que genera unprograma en un
código que es directamente ejecutable y entendible por el
microprocesador.