Practical C Programming, 3rd Edition by Steve Oualline

How C Works

C está diseñado como un puente entre el programador y el ordenador en bruto. La idea es permitir que el programador organice un programa de forma que pueda entenderlo fácilmente. El compilador entonces traduce el lenguaje en algo que la máquina pueda utilizar.

Los programas de ordenador constan de dos partes principales: datos e instrucciones. El ordenador impone poca o ninguna organización a estas dos partes. Al fin y al cabo, los ordenadores están diseñados para ser lo más generales posible. El programador debe imponer su organización al ordenador, no al revés.

Los datos en un ordenador se almacenan como una serie de bytes. C organiza esos bytes en datos útiles. Las declaraciones de datos son utilizadas por el programador para describir la información con la que está trabajando. Por ejemplo:

int total; /* Total number accounts */

indica a C que queremos utilizar una sección de la memoria del ordenador para almacenar un entero llamado total. Dejamos que el compilador decida qué bytes de memoria utilizar; esa decisión es un detalle menor de contabilidad del que no queremos preocuparnos.

Nuestra variable total es una variable simple. Puede contener sólo un entero y describir sólo un total. Una serie de enteros puede organizarse en un array de la siguiente manera:

int balance; /* Balance (in cents) for all 100 accounts */

De nuevo, C se encargará de los detalles de imponer esa organización en la memoria del ordenador. Por último, hay tipos de datos más complejos. Por ejemplo, un rectángulo puede tener una anchura, una altura, un color y un patrón de relleno. C nos permite organizar estos cuatro elementos en un grupo llamado estructura.

struct rectangle { int width; /* Width of rectangle in pixels */ int height; /* Height of rectangle in pixels */ color_type color; /* Color of the rectangle */ fill_type fill; /* Fill pattern */};

La cuestión es que las estructuras permiten al programador organizar los datos para que se adapten a sus necesidades sin importar lo simples o complejos que sean esos datos. La traducción de esta descripción de datos en algo que el ordenador pueda utilizar es tarea del compilador, no del programador.

Pero los datos son sólo una parte de un programa. También necesitamos instrucciones. En lo que respecta al ordenador, no sabe nada sobre la disposición de las instrucciones. Sabe lo que está haciendo para la instrucción actual y dónde conseguir la siguiente, pero nada más.

C es un lenguaje de alto nivel. Nos permite escribir una declaración de alto nivel como:

area = (base * height) / 2.0; /* Compute area of triangle */

El compilador traducirá esta declaración en una serie de crípticas instrucciones de máquina de bajo nivel. Este tipo de sentencia se llama sentencia de asignación. Se utiliza para calcular y almacenar el valor de una expresión aritmética.

También podemos utilizar sentencias de control para controlar el orden de procesamiento. Las sentencias como el if y el switch permiten al ordenador tomar decisiones sencillas. Las sentencias pueden repetirse una y otra vez utilizando sentencias de bucle como while y for.

Los grupos de sentencias pueden envolverse para formar funciones. Así, sólo tenemos que escribir una función de propósito general para dibujar un rectángulo una vez, y luego podemos reutilizarla siempre que queramos dibujar un nuevo rectángulo.

C proporciona al programa un rico conjunto de funciones estándar que realizan funciones comunes como la búsqueda, la ordenación, la entrada y la salida.

Un conjunto de funciones relacionadas puede agruparse en un único fichero fuente. Muchos archivos fuente pueden ser compilados y enlazados juntos para formar un programa.

Uno de los principales objetivos del lenguaje C es organizar las instrucciones en componentes reutilizables. Después de todo, se pueden escribir programas mucho más rápidos si se puede «tomar prestado» la mayor parte del código de algún otro lugar. Los grupos de funciones reutilizables pueden combinarse en una biblioteca. De esta manera, cuando necesite, por ejemplo, una rutina de ordenación, puede coger la función estándar qsort de la biblioteca y enlazarla en su programa.

Las declaraciones de datos, estructuras y sentencias de control, y otros elementos del lenguaje C, no son para beneficio del ordenador. El ordenador no puede distinguir entre un millón de bytes aleatorios y un programa real. Todos los elementos del lenguaje C están diseñados para permitir que el programador exprese y organice sus ideas de forma clara y adaptada a él, no al ordenador.

La organización es la clave para escribir buenos programas. Por ejemplo, en este libro sabes que el índice está en la parte delantera y el índice está en la parte trasera. Usamos esta estructura porque los libros están organizados de esa manera. La organización hace que este libro sea más fácil de usar.

El lenguaje C le permite organizar sus programas utilizando una sintaxis simple pero poderosa. Este libro va más allá de la sintaxis de C y le enseña reglas de estilo que le permiten hacer programas altamente legibles y fiables. Combinando una potente sintaxis con un buen estilo de programación, podrá crear programas potentes que realicen operaciones complejas y maravillosas, y que a la vez estén organizados de forma que le resulten fáciles de entender cuando llegue el momento del cambio.

Leave a Reply