Hola Mundo. Lenguaje C
SOLUCIONARIO
Hola Mundo. Lenguaje C
2024-04-19
Por
Occam's Razor

Comenzamos la publicación del Solucionario del Programador para GNU/Linux como no podía ser de otra forma con el lenguaje de Programación C.

#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 include al principio del programa por el prototipo de la función que queremos utilizar, puts en 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 (LF Line Feed) o borrar el caracter anterior (BS Backspace). 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:

  • HT o \t o 0x09. Este código es utilizado para tabular horizontalmente

  • LF o \n o 0x0a. Este código es utilizado para movernos a la siguiente línea

  • CR o \r o 0x0d. Este código es utilizado para movernos al inicio de la línea

Los sistemas Windows/DOS, utilizan la combinación de caracteres \r\n para 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 cc no es otra cosa que el Compilador de C (C compiler en inglés). En la mayoría de los sistemas modernos, cc suele ser un enlace simbólico a gcc que 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,...

SOBRE Occam's Razor
Somos una revista libre que intenta explicar de forma sencilla conceptos tecnológicos y científicos de los que no podemos escapar. Al final, todo es más fácil de lo que parece!

 
Tu publicidad aquí :)