• Documentación

Introducción a C

C es un lenguaje de programación desarrollado en el año 1972 por Dennis Ritchie. El lenguaje C es un lenguaje estructurado el cual a pesar de ser un lenguaje de “alto nivel”, da acceso a hacer uso de la memoria, registros, etc.

Compilación

C es un lenguaje compilado; se compila una vez para cada arquitectura y se genera un binario que se puede ejecutar directamente. Para poder compilar y ejecutar un archivo llamado hello.c, se realiza de la siguiente manera:

#include <stdio.h>

int main() {
  printf("Hello World!\n");
  return 0;
}
gcc hello.c
./a.out
Hello World!

Notese que el compilador que estamos utilizando se llama gcc. gcc se encuentra por defecto en la mayoria de sistemas operativos con kernel linux. Cuando nosotros no especificamos un nombre para el archivo de salida, gcc lo nombra, por defecto, a.out.

Si queremos especificar un nombre para el archivo de salida entonces podemos utilizar la bandera -o:

gcc -o hello hello.c
./hello
Hello World!

Comentarios en C

Los comentarios en C se pueden hacer de dos maneras:

// Este es un comentario de una sola línea

/*
  Este es un comentario de múltiples líneas
*/

Tipos de datos

En C, las variables deben ser declaradas antes de ser utilizadas, y su tipo no puede cambiar una vez asignado. Además, el tamaño de las variables depende de la arquitectura del sistema en el que se esté trabajando (por ejemplo, x86, x86_64, ARM, RISC-V, etc).

A diferencia de lenguajes como Java, en C las variables no se inicializan automáticamente. Esto significa que, al declararse, una variable contendrá lo que se conoce como “valor basura”, es decir, los datos que estaban previamente en la dirección de memoria donde se ha almacenado la variable.

int i; // Variable entera no inicializada
int j = 10; // Variable entera inicializada

Constantes

En C, una constante es un valor fijo que no puede ser modificado durante la ejecución del programa. A diferencia de las variables, cuyo valor puede cambiar, una constante mantiene su valor constante a lo largo del programa.

Constantes literales

Son los valores que se escriben directamente en el código, como números enteros (10), números de punto flotante (3.14), caracteres ('A') o cadenas de texto ("Hola"). Estos valores son constantes por naturaleza.

Constantes #define

Se utilizan para definir valores constantes que se pueden usar en varias partes del código. El preprocesador reemplaza cada instancia del nombre de la constante con su valor definido. Su sintaxis es la siguiente:

#define NOMBRE_CONSTANTE valor

Ejemplo:

#define PI 3.14159

Constantes const

En lugar de usar #define, también se pueden declarar constantes dentro del código utilizando la palabra clave const. La diferencia principal con #define es que las constantes definidas con const tienen un tipo de dato asociado, lo que permite aprovechar las comprobaciones de tipo en tiempo de compilación. Su sintaxis es la siguiente:

const tipo nombre = valor;

Ejemplo:

const double PI = 3.14159;

En este caso, PI es una constante de tipo double cuyo valor no podrá ser modificado.

Booleans

Es un importante mencionar que en C, las variables tipo booleanas no existen. En vez de eso, todo valor diferente de 0 se considera verdadero, es decir si se desea representar el valor falso se debe utilizar un 0.

#include <stdio.h>

#define SHOW 1

int main() {
  // Si SHOW es verdadero, entonces se imprime "Hello World!"
  if (SHOW) {
    printf("Hello World!\n");
  }

  return 0;
}

Funciones

En C, una función es un bloque de código diseñado para realizar una tarea específica. Las funciones permiten dividir el código en partes más pequeñas, lo que facilita su reutilización, mantenimiento y organización.

Estructura de una función

Una función en C tiene, generalmente, tres partes principales:

  1. Tipo de retorno: Especifica el tipo de dato que la función devolverá como resultado. Si la función no devuelve ningún valor, se utiliza la palabra clave void.
  2. Nombre de la función: Es el identificador que se utilizará para llamar a la función desde otras partes del código.
  3. Parámetros: Son los valores que la función recibe como entrada. Pueden ser de cualquier tipo de dato y se utilizan para que la función pueda realizar su tarea.
  4. Cuerpo de la función: Es el bloque de código que contiene las instrucciones que la función ejecutará cuando sea llamada.
tipo_de_retorno nombre_funcion(tipo_parametro1, tipo_parametro2, ...) {
  // Código que realiza la tarea
  return valor;  // si tiene valor de retorno
}

Ejemplo

#include <stdio.h>

// Declaración de la función
int sum(int a, int b);

int main() {
  int result = sum(5, 3);  // Llamada a la función
  printf("El resultado de la suma es: %d\n", result);
  return 0;
}

// Definición de la función
int sum(int a, int b) {
  return a + b;  // Devuelve la suma de a y b
}