#include <stdio.h>
/* Este es un comentario
* que puede extenderse varias lineas
*/
int
main (int argc, char *argv[])
{
puts ("Hola Mundo"); /* Otro comentario*/
puts ("--------------------\n"
"Podemos concatenar varias cadenas\n"
"para definir textos largos\n"
"----------------------------\n");
return 0;
}El lenguaje C es uno de esos lenguajes que necesitan que escribamos
algunas cosas antes de poder empezar a escribir realmente nuestro
programa. Como podemos ver, necesitamos al menos definir la función
main (más sobre esto en un capítulo posterior) que será el
punto de entrada del programa. Por el momento simplemente necesitamos
saber que esa función se declara de la forma que veis en el código más
arriba. También necesitaremos utilizar algunas directivas
#include.
Estos includes o ficheros de cabecera contienen las definiciones de las funciones que utilizamos en nuestros programas y que están implementadas en otros lugares, como por ejemplo en la librería C estándar. Estas definiciones es lo que en el argot C se conocen como prototipos y su principal función es indicar al compilador los tipos de los parámetros y el tipo del valor que retorna una determinada función. Esta información es necesaria para poder compilar el programa generando código correcto y detectando errores durante la compilación
En nuestro pequeño programa, el fichero de cabecera
stdio.h es el que contiene la definición de la función
puts. Esta función nos permite escribir cadenas de
caracteres en pantalla. Si tienes dudas sobre que fichero de cabecera
utilizar, simplemente consulta la página del manual de la función de
turno (man 3 puts en este caso)
SOY NOVATO
En este caso en el que solo utilizamos una función y ningún tipo de datos, podríamos sustituir el
includeal principio del programa por el prototipo de la función que queremos utilizar,putsen este caso. Podéis obtener el prototipo del fichero .h o directamente de la página del manual. El programa quedaría tal que así:/* Este es un comentario * que puede extenderse varias lineas */ int puts (const char*); int main (int argc, char *argv[]) { ...}
La función puts de la librería estándar nos permite
escribir cadenas en la consola como ya hemos visto. Esta función siempre
añade un retorno de carro al final de la cadena que escribe. El retorno
de carro se representa en casi todos los lenguajes con el caracter de
control ASCII \n. En el ejemplo multilinea, podemos ver
como se intercalan caracteres \n en la cadena de caracteres
para poder separar la cadena en distintas líneas.
SABÍAS QUE…
Los caracteres de control del código ASCII (código por debajo de
0x20+0x7f) se introdujeron inicialmente para controlar los primeros terminales. Estos caracteres de control permitían hacer cosas como moverse a la siguiente linea (LFLine Feed) o borrar el caracter anterior (BSBackspace). La mayoría nunca los utilizarás a no ser que programes un emulador de terminal, pero hay al menos tres que utilizarás en más de una ocasión:
HTo\to0x09. Este código es utilizado para tabular horizontalmente
LFo\no0x0a. Este código es utilizado para movernos a la siguiente línea
CRo\ro0x0d. Este código es utilizado para movernos al inicio de la líneaLos sistemas Windows/DOS, utilizan la combinación de caracteres
\r\npara mover el cursor al principio de la siguiente línea, mientras que la mayoría de otros sistemas, solo utilizan el caracter\n. Si estás trabajando en Windows, quizás necesites modificar los programas ligeramente ;).
Como podéis ver, las cadenas de caracteres se representan entre comillas dobles. Hablaremos más sobre el sistema de tipos de C en capítulos posteriores. Una cadena de caracteres constante como la que utilizamos en nuestro programa se conoce como un Literal. Simplemente es una constante que se va a almacenar en una zona especial de la memoria
Los comentarios comienzan con los caracteres /* y se
terminan con */. Todo lo que este entre estos dos
marcadores se considera un comentario y es ignorado por el compilador.
Este tipo de comentario no se puede anidar, así que ten cuidado cuando
comentes grandes bloques de código que pueden contener comentarios.
SABÍAS QUE…
La mayoría de compiladores modernos de C aceptan comentarios C++, esto es, comentarios en una línea en los que solo es necesario indicar el comienzo del comentario con los caracteres
//.Sin embargo, compiladores más antiguos (de esos que se encuentran en antiguas máquinas UNIX que nadie sabe donde están físicamente pero que todo el mundo usa), no se ponen muy contentos cuando ven este símbolo y producen errores de compilación bastante crípticos
Los programas C se suelen almacenar en ficheros con extensión
.c. Los ficheros de cabecera tienen extensión
.h.
Como en otros muchos lenguajes, C marca el final de las instrucciones
con el carácter ;(punto y coma) y permite agrupar
instrucciones con las llaves {}.
Podéis compilar el programa anterior, copiando el texto en un fichero
al que podríais llamar, en un alarde de originalidad,
hola.c y ejecutando, a continuación, el siguiente
comando:
cc -o hola hola.c
Esto genera un fichero llamado hola que podéis ejecutar
directamente.
SABÍAS QUE
El programa
ccno es otra cosa que el Compilador de C (C compiler en inglés). En la mayoría de los sistemas modernos,ccsuele ser un enlace simbólico agccque no es otra cosa que el compilador C de GNU (GNU C Compiler en inglés).
Para programas tan sencillos como estos, podemos utilizar el programa
make para compilar nuestro código. Este programa sabe como
generar muchos tipos de ficheros a partir de sus fuentes, ejecutando el
comando adecuado
$ make hola
cc hola.c -o hola
$
El lenguaje C fue desarrollado por Denis Ritchie en los laboratorios
Bell entre 1972 y 1973, como sucessor del lenguaje B (obviamente). El
lenguaje fue utilizado para desarrollar utilidades UNIX así como el
propio kernel. La versión de C anterior a que los organismos
internacionales de estandarización entraran en juego, se conoce como
K&R. K&R son las iniciales de Brian Kerninghan (que por cierto
es la K del awk) y Denis Ritchie los
cuales publicaron el libro “El lenguaje de programación C” que, durante
muchos años, fue la especificación informal del lenguaje.
Resumen
- Lenguaje compilado
- Extension:
c - Terminador de líneas:
; - Agrupa instrucciones con :
{...} - Comentarios: entre caracteres
/* */ - Delimitador de cadenas:
"cadena¨ - Puedes imprimir textos con
puts(Añade retorno de carro) - No soporta cadenas multilíneas nativamente
- No soporta
HERE-DOCS - Punto de entrada función
main - Requiere definición previa de todos los elementos (ficheros include para declarar funciones)
- Aplicaciones: Sistemas Operativos, Compiladores, Sistemas Embebidos, Sistemas en Tiempo Real,...
■
