TEMA 0: Introducción 

0.1 Orígenes del C

        El  lenguaje  C  fue  inventado  por  Dennis Ritchie en 1972
cuando trabajaba, junto  con Ken Thompson, en el  diseño del sistema
operativo UNIX.

        El lenguaje C deriva del lenguaje  B de Thompson, el cual, a
su vez, deriva del lenguaje BCPL desarrollado por Martin Richards.

        Durante  muchos  años  el  estándar  de  C  fue  la  versión
proporcionada con  el sistema operativo UNIX  versión 5. Pero pronto
empezaron  a  surgir  muchas  implementaciones  del  C  a raíz de la
popularidad creciente  de los microordenadores. Por  este motivo, se
hizo necesario definir  un C estándar que está  representado hoy por
el ANSI C.

0.2 Características del lenguaje C

        Algunas características del lenguaje C son las siguientes:

- Es un lenguaje de propósito general. Este lenguaje se ha utilizado
para  el  desarrollo  de  aplicaciones  tan  dispares como: hojas de
cálculos,  gestores  de  bases   de  datos,  compiladores,  sistemas
operativos, ...

- Es un lenguaje  de medio nivel. Este lenguaje  permite programar a
alto nivel (pensando  a nivel lógico y no en  la máquina física) y a
bajo nivel  (con lo que se  puede obtener la máxima  eficiencia y un
control absoluto de cuanto sucede en el interior del ordenador).

- Es  un  lenguaje  portátil.  Los   programas  escritos  en  C  son
fácilmente transportables a otros sistemas.

- Es un lenguaje potente y eficiente. Usando C, un programador puede
casi  alcanzar la  eficiencia del  código ensamblador  junto con  la
estructura del Algol o Pascal.

        Como desventajas habría que reseñar que es más complicado de
aprender que otros lenguajes como Pascal  o Basic y que requiere una
cierta experiencia para poder aprovecharlo a fondo.

0.3 Uso del C

        Los  pasos  a  seguir  desde  el  momento  que se comienza a
escribir el programa C hasta que se ejecuta son los siguientes:

    1.- Escribirlo en un editor.
    2.- Compilarlo en un compilador.
    3.- Enlazarlo en un enlazador.
    4.- Ejecutarlo.

 Paso 1: ESCRIBIRLO

        El programa se puede escribir en cualquier editor que genere
ficheros de texto  estándar, esto es, que los  ficheros generados no
incluyan códigos de control y caracteres no imprimibles.

        Estos  ficheros que  contienen código  C se  llaman ficheros
fuentes.  Los ficheros  fuentes  son  aquellos que  contienen código
fuente, es decir, ficheros con texto que el usuario puede leer y que
son utilizados como entrada al compilador de C.

        Los programas pequeños suelen ocupar un solo fichero fuente;
pero  a  medida  que  el  programa  crece,  se va haciendo necesario
distribuirlo en más ficheos fuentes.

 Paso 2: COMPILARLO

        El  compilador  produce  ficheros  objetos  a  partir de los
ficheros  fuentes.  Los  ficheros   objetos  son  los  ficheros  que
contienen  código  objeto,  es  decir,  ficheros  con código máquina
(número binarios  que tiene significado  para el microprocesador)  y
que son utilizados como entrada al enlazador.

        La extensión  de estos ficheros  es OBJ, aunque  también los
hay con extensión LIB. A estos últimos se les llama también ficheros
de librería  o biblioteca; contienen código  máquina perteneciente a
código compilado suministrado por el compilador.

 Paso 3: ENLAZARLO

        El enlazador  produce un fichero ejecutable  a partir de los
ficheros objetos.

        Los ficheros  ejecutables son aquellos  que contienen código
máquina y se pueden ejecutar directamente por el sistema operativo.

        La extensión estos ficheros es EXE o COM.

        Al proceso de enlazado también se le suele llamar el proceso
de linkado.

 Paso 4: EJECUTARLO

        El  programa  se  puede  ejecutar  simplemente  tecleando su
nombre desde la línea de comandos del sistema operativo.

 ESQUEMA

          Los pasos anteriores se resumen en el siguiente esquema:

            f1.c  ---->  f1.obj  ---------+
                                          |
            f2.c  ---->  f2.obj  ---------|
                                          |
             .             .              |
             .             .              |
             .             .              |
                                          |
            fn.c  ---->  fn.obj  ---------|
                                          |---------------> f.exe
                         f1.lib  ---------|
                                          |
                         f2.lib  ---------+
                                          |
                           .              |
                           .              |
                           .              |
                                          |
                         fm.lib  ---------+

        Hoy  día  los  compiladores  de  C  son  muy  sofisticados e
incluyen entornos integrados desde  los cuales editamos, compilamos,
enlazamos, y podemos realizar una multitud de servicios más.

        En  algunos  de  ellos  se  pueden  realizar  los  pasos  de
compilado, enlazado y ejecutado con la pulsación de una sola tecla.

        En programación, la experiencia es el gran maestro. Por ello
es conveniente empezar a hacer programas en C cuanto antes.