Skip to Content

C

En esta sección se presentan distintas propiedades del lenguaje C, basado en el paradigma de programación imperativo.

Funciones

Las funciones en C son bloques de código que realizan una tarea específica. Estas pueden recibir argumentos y retornar un valor.

La función principal de un programa en C es main. Esta función es la que se ejecuta al correr el programa.

#include <stdio.h> int main(void) { // Todo el resto del código... return 0; }

El código dentro de las funciones se delimita por llaves {}. En el caso de la función main, el valor de retorno es un entero. En este caso, 0 indica que el programa se ejecutó correctamente.

El tipo de dato que retorna una función se especifica antes de su nombre. Y su valor de retorno se indica con la palabra clave return.

Una función puede recibir argumentos. Estos se especifican entre paréntesis, separados por comas.

#include <stdio.h> int suma(int a, int b) { return a + b; } int main(void) { int resultado = suma(5, 3); printf("El resultado de la suma es %d\n", resultado); return 0; } // El resultado de la suma es 8

Tipos

C es un lenguaje de programación de tipado débil y estático. Esto significa que:
1 ) Toda expresión tiene un tipo definido, sin embargo, el compilador puede realizar conversiones implícitas entre tipos.
2 ) Los tipos son verificados antes de ejecutar (al compilar) el programa.

Algunos tipos básicos son:

  • char (caracter)

  • bool (booleano)

  • int (entero)

  • float (real de precisión simple)

  • double (real de precisión doble, más números decimales)

  • void (vacío, no retorna nada)

La conversión de tipos puede ocurrir, por ejemplo, al sumar un entero con un real. En este caso, el entero se convierte a real y el resultado es un real.

Es importante mencionar que C no tiene un tipo de dato string. En su lugar, se utilizan arreglos de caracteres: char[]

Además, los booleanos no son un tipo de dato primitivo en C. Para simular un booleano, se utiliza un entero, donde 0 es false y cualquier otro valor es true:

#include <stdio.h> int main(void) { int booleano = 1; if (booleano) { printf("Es verdadero\n"); } else { printf("Es falso\n"); } return 0; } // Es verdadero

Entrada y salida (I/O)

Imprimiendo en pantalla

Para imprimir en pantalla un texto o un valor, se utiliza la función printf:

#include <stdio.h> int main() { printf("Este es un mensaje\n"); return 0; }

Podemos imprimir valores de distintos tipos y variables de la siguiente manera:

#include <stdio.h> int main(void) { int a = 5; float b = 3.14; printf("El valor de a es %d y el valor de b es %f\n", a, b); return 0; } // El valor de a es 5 y el valor de b es 3.140000

Tanto %d como %f son especificadores de formato. Estos se utilizan para indicar el tipo de dato que se va a imprimir. En el caso de %d, se espera un entero, mientras que en el caso de %f, se espera un real.
Para hacer un salto de línea se utiliza \n.

Recibir valores de entrada

Para recibir valores de entrada, se utiliza la función scanf. Esta función recibe dos argumentos: el especificador de formato y la dirección de memoria de la variable donde se almacenará el valor.

#include <stdio.h> int main(void) { int x; printf("Ingrese un número entero: "); scanf("%d", &x); printf("El número ingresado es %d\n", x); return 0; } // Ingrese un número entero: 5 // ... // El número ingresado es 5

El caracter & se utiliza para obtener la dirección de memoria de una variable.

Estructuras y sinónimos

Las estructuras en C permiten agrupar distintos tipos de datos en una sola variable.

#include <stdio.h> struct Dupla { int x; int y; } int main(void) { struct Dupla punto; punto.x = 5; punto.y = 3; printf("Las coordenadas son (%d, %d)\n", punto.x, punto.y); return 0; } // Las coordenadas son (5, 3)

Otra forma de definir estructuras es utilizando typedef. Esto permite crear un sinónimo de tipo para una estructura.

#include <stdio.h> typedef struct { int x; int y; } Dupla; int main(void) { Dupla punto; punto.x = 5; punto.y = 3; printf("Las coordenadas son (%d, %d)\n", punto.x, punto.y); return 0; } // Las coordenadas son (5, 3)

En lugar de struct Dupla, ahora se puede utilizar simplemente Dupla.

typedef se aplica a cualquier otro tipo de dato, no solo a estructuras. Por ejemplo, se puede crear un sinónimo para un número entero:

#include <stdio.h> typedef int Entero; int main(void) { Entero a = 5; printf("El valor de a es %d\n", a); return 0; } // El valor de a es 5

Librerías

Algunas librerías utilizadas son:

  • stdio.h (entrada y salida estándar, printf, scanf)

  • stdbool.h (tipos booleanos)

  • assert.h (verificación de condiciones)

  • limits.h (límites de tipos de datos)

En el caso de assert.h se utiliza la función assert para verificar condiciones. Si la condición es falsa, el programa se detiene.

#include <assert.h> int main(void) { int a = 5; assert(a == 4); return 0; } // Assertion failed: (a == 4), function main, file main.c, line 5.

En este caso, el programa se detiene porque la condición a == 4 es falsa.

La librería limits.h contiene los límites de los tipos de datos. Por ejemplo, el límite de un entero se puede obtener con INT_MAX y INT_MIN.

#include <limits.h> int main(void) { printf("El valor máximo de un caracter es %d\n", CHAR_MAX); printf("El valor mínimo de un caracter es %d\n", CHAR_MIN); printf("El valor máximo de un entero es %d\n", INT_MAX); printf("El valor mínimo de un entero es %d\n", INT_MIN); return 0; } // El valor máximo de un caracter es 127 // El valor mínimo de un caracter es -128 // El valor máximo de un entero es 2147483647 // El valor mínimo de un entero es -2147483648
Última vez actualizado el 9 de marzo de 2025