1.3 - Escribir un texto en C
Vamos con un primer ejemplo de programa en C, posiblemente el más
sencillo de los que "hacen algo útil". Será un programa que escribe
"Hola" en la pantalla:
/* Ejemplo en C: mostrar un texto en pantalla - ej010301.c */
#include
int main()
{
printf("Hola");
return 0;
}
Antes de ver cómo probar este programa, hay mucho que comentar sobre el programa en sí:
- La primera línea es un comentario. Es algo que no
formará parte del programa ejecutable, y que se incluye únicamente
como aclaración para el programador. Es habitual que un programa
comience con un comentario que recuerde su misión, el nombre del
autor y la fecha de creación. También es frecuente incluir
comentarios adicionales que expliquen ligeramente la lógica del
programa, como veremos más adelante. Un comentario comenzará con /*
(barra asterisco), terminará con */ (asterisco barra) y puede
abarcar ocupas líneas. Como veremos dentro de poco, las versiones
más modernas de C permiten otra forma alternativa de crear
comentarios.
- La siguiente línea es un “include”. Esa orden nos permite
incluir ciertas características para ampliar el lenguaje base. En
este caso, el motivo es que en el lenguaje C básico no hay
predefinida ninguna orden para escribir en pantalla (*), sino que
este tipo de órdenes son una extensión, que se define en un fichero
llamado "stdio.h" (standard input/output). Esto no es un problema,
vamos a encontrar ese "stdio.h" en cualquier compilador que usemos.
¿Y por qué se pone entre < y >? ¿Y por qué el símbolo # al principio?
Esos detalles los iremos viendo un poco más adelante.
- El bloque "main" indica el punto en el que realmente
comenzará a funcionar el programa. Es algo que debe existir
siempre. ¿Y por qué tiene la palabra "int" delante? ¿Y por qué
tiene un paréntesis vacío a continuación? Eso también lo veremos
más adelante...
- Las llaves { y } encierran todo el contenido de un
"bloque" (en este caso, del cuerpo del programa, main). Por
convenio, y para facilitar la legibilidad, el contenido de cada
bloque se escribe un poco más a la derecha (típicamente 4
espacios).
- "printf" es la orden que se encarga de mostrar un
texto en pantalla. El texto a escribir se indica entre
comillas. Esta orden es la responsable de que hayamos necesitado
escribir ese "include" al principio del programa.
- El "return 0" será la forma de decir "todo ha terminado
sin problemas". En algunas versiones del lenguaje C se podrá omitir
esa línea. Normalmente, cuanto más antigua sea la versión, más
tolerante será y nos permitirá eliminar algunos formalismos; las
versiones más recientes serán más estrictas y nos obligarán a
incluir estos formalismos, o al menos nos avisarán si no están
presentes.
(*) Hay que recordar que un ordenador no es sólo lo que
acostumbramos a tener sobre nuestra mesa, con pantalla y teclado.
Existen otros muchos tipos de ordenadores que realizan tareas complejas
y no necesitan una pantalla durante su funcionamiento normal, como el
ordenador que controla el ABS de un coche.
A medida que vayamos avanzando, concretaremos más alguno de los
detalles que aquí todavía han quedado "en el aire".
Ejercicio propuesto 1.3.1: Aunque todavía no sepas cómo probarlo, crea un programa en C que te salude por tu nombre (por ejemplo: "Hola, Nacho").
Vamos a puntualizar algún detalle más, antes de seguir adelante y de
ver como se puede probar este programa:
- Cada orden de C debe terminar con un punto y coma (;) La
línea de "include" y de la de "int main()" no se consideran órdenes
(ya veremos qué son) y no deben llevar punto y coma.
- La gran mayoría de las órdenes que encontraremos en el lenguaje
C son palabras en inglés o abreviaturas de éstas. Pero hay que
tener en cuenta que C distingue entre mayúsculas y minúsculas, por
lo que "printf" es una palabra reconocida, pero "Printf", "PRINTF"
o "PrintF" no lo son.
- C es un lenguaje de formato libre, de modo que puede
haber varias órdenes en una misma línea, u órdenes separadas por
varias líneas o espacios entre medias. Lo que realmente indica
dónde termina una orden y donde empieza la siguiente son los puntos
y coma. Por ese motivo, el programa anterior se podría haber
escrito también así (aunque no es aconsejable, porque puede
resultar menos legible):
/* Ejemplo en C "descolocado" - ej010301b.c */
#include
int main(){printf("Hola");return
0;}
De hecho, hay dos formas especialmente frecuentes de
colocar la llave de comienzo. Una es como hemos hecho en el primer
ejemplo: situar la llave de apertura en una línea, sola, y justo
encima de la llave de cierre correspondiente. La segunda forma
habitual es situándola a continuación del nombre del bloque que
comienza (en nuestro caso, a continuación de la palabra "main"),
así:
/* Ejemplo en C con sangrado "al estilo Java" - ej010301c.c */
#include
int main() {
printf("Hola");
return 0;
}
(esta forma se conoce como "estilo Java", y yo no la emplearé en
este texto, salvo quizá en algún fuente de gran tamaño, para que ese
fuente concreto ocupe un poco menos de espacio).