Cuando nos adentramos en el lenguaje C, lo primero que debemos entender es que se trata de un lenguaje imperativo y procedimental. Esto significa que C no nos facilita las cosas por sí mismo; somos nosotros quienes debemos indicarle paso a paso qué debe hacer el programa, como si siguiéramos una receta de cocina. No hay magia ni automatismos: cada instrucción debe estar explícitamente escrita para que el ordenador la ejecute.
En C, las instrucciones se dividen en varios tipos fundamentales. Primero, están las asignaciones, que nos permiten guardar valores en memoria temporal para usarlos durante los cálculos o manipulaciones de datos. Luego, tenemos las condicionales, que nos permiten decidir qué instrucciones ejecutar según se cumpla o no una condición determinada. Por ejemplo, en una calculadora, podríamos usar una condicional para evitar dividir por cero. También contamos con los bucles, que repiten un conjunto de instrucciones varias veces hasta que se cumple una condición, muy útiles para sumatorios o iteraciones. Finalmente, están las llamadas a funciones, que son instrucciones que ejecutan otras funciones dentro del programa.
El paradigma procedimental en C implica que todo el código está organizado en funciones o procedimientos, que son bloques de código que realizan tareas específicas. Estas funciones pueden recibir parámetros de entrada y devolver resultados, similar a las funciones matemáticas. Por ejemplo, una función factorial podría recibir un número y devolver su factorial. Es importante destacar que en C no existe código fuera de funciones; todo debe estar dentro de alguna función.
Una función clave en cualquier programa en C es la función main. Esta es la primera función que el sistema operativo ejecuta cuando lanzamos un programa compilado en C. El código dentro de main se ejecuta secuencialmente, y puede incluir llamadas a otras funciones, asignaciones, condicionales y bucles. El valor que devuelve main es utilizado por el sistema operativo para determinar si el programa terminó correctamente o si hubo algún error. Por convención, devolver 0 indica que todo fue bien.
En cuanto a los tipos de datos elementales en C, encontramos cuatro principales. Los números enteros, representados con la palabra clave int, almacenan valores sin decimales, como 10 o 255. Luego están los números decimales o flotantes, con la palabra clave float, que almacenan valores con parte decimal, como 10.34 o 65.21. Es importante recordar que en C el separador decimal es el punto, no la coma. También tenemos los caracteres, representados con char, que almacenan un solo símbolo, como una letra o un signo, y se escriben entre comillas simples. Para agrupar varios caracteres, usamos cadenas de caracteres, que se escriben entre comillas dobles y representan palabras o frases completas. Por último, el tipo void representa la ausencia de valor y se usa en funciones que no devuelven nada, conocidas como procedimientos.
Para comenzar a escribir código en C, debemos definir funciones especificando su tipo de retorno, nombre y parámetros. Por ejemplo, la función main se define como una función que devuelve un entero y no recibe parámetros, así:
int main() {
return 0;
}
Aquí, return 0; indica que la función devuelve el valor 0 al sistema operativo, señalando que el programa terminó sin errores. Aunque este programa no hace nada visible, es un punto de partida.
Para hacer algo más útil, podemos imprimir un mensaje en pantalla usando la función printf, que viene incluida en la biblioteca estándar de C. Una llamada a printf se escribe dentro de main antes del return, así:
#include <stdio.h>
int main() {
printf("hola mundo");
return 0;
}
Es fundamental incluir el archivo de cabecera stdio.h con la directiva #include al inicio del código. Este archivo contiene las definiciones necesarias para que el compilador reconozca la función printf. Sin esta inclusión, el compilador nos mostrará advertencias porque no sabe qué es printf.
Cada instrucción en C debe terminar con un punto y coma para indicar el final de la instrucción. En el ejemplo anterior, tanto la llamada a printf como la instrucción return terminan con punto y coma.
Al compilar y ejecutar este programa, veremos en la consola el mensaje hola mundo. Así, hemos creado un programa básico en C que imprime texto en pantalla y devuelve un valor al sistema operativo para indicar que todo ha ido bien.
En próximos pasos, podemos explorar cómo definir funciones con parámetros, realizar asignaciones de variables y utilizar printf para imprimir diferentes tipos de datos y formatos. Este es el comienzo para entender cómo construir programas más complejos en C, partiendo de estos fundamentos esenciales.