Curso de C · Módulo 1 de 12

Tu primer programa en C: compilar y ejecutar

Qué aprenderás en este módulo

entender qué es C, escribir tu primer programa y dominar el ciclo *escribir → compilar → ejecutar → corregir*.

Incluye 3 ejercicios con pistas y solución y un quiz de 5 preguntas. Tiempo estimado: 40 minutos.

1. ¿Por qué C?

C (1972) es el lenguaje sobre el que se construyen sistemas operativos, bases de datos, navegadores, videojuegos y microcontroladores. Te da control total sobre la memoria y la máquina, a cambio de que seas tú quien se haga responsable. Aprender C te enseña cómo funciona realmente un ordenador, y eso mejora tu forma de programar en cualquier otro lenguaje.

C es un lenguaje compilado: un programa llamado compilador traduce tu código fuente (.c) a un ejecutable en código máquina.

hola.c  ──(preprocesador)──▶  ──(compilador)──▶  hola.o  ──(enlazador)──▶  hola.exe

2. Anatomía del programa mínimo

#include <stdio.h>          // 1) trae las declaraciones de printf, scanf...

int main(void) {            // 2) el programa empieza aquí
    printf("Hola, mundo!\n");   // 3) una sentencia: termina en ;
    return 0;               // 4) 0 = "todo ha ido bien"
}
  • #include <stdio.h>: instrucción del preprocesador; pega el contenido del header de entrada/salida estándar.
  • int main(void): función de entrada. Devuelve un int al sistema operativo.
  • printf("..."): imprime texto. \n es el salto de línea. Otros escapes: \t tabulador, \\ barra, \" comillas.
  • Cada sentencia acaba en ; y los bloques van entre { }.
  • Comentarios: // una línea y /* varias líneas */.

3. Los errores se leen de arriba abajo

hola.c:5:5: error: expected ';' before 'return'

Formato: fichero:línea:columna: tipo: mensaje.

  • Corrige solo el primer error y recompila: los siguientes suelen ser consecuencia del primero.
  • A veces el error está en la línea anterior a la que se señala (un ; olvidado se detecta en la siguiente).
  • Hay errores (no compila) y avisos o warnings (compila pero sospecha). Trata los warnings como errores.

4. Prueba esto (2 minutos)

  1. Quita el ; tras el printf y compila. Lee el mensaje.
  2. Cambia printf por prinft. ¿Qué dice ahora el compilador?
  3. Escribe printf("a\tb\nc\n"); y adivina la salida antes de ejecutar.

Resumen

Concepto Recuerda
Compilar Traducir .c a ejecutable antes de ejecutar
main Punto de entrada; return 0 = éxito
; Termina cada sentencia
Errores Se leen desde el primero; fichero:línea:col

Siguiente paso: python curso.py empezar 1 y luego python curso.py quiz 1.

Ejercicios prácticos del módulo 1

Programar se aprende programando: intenta cada ejercicio antes de mirar las pistas, y usa la solución solo para comparar. Marca los que resuelvas y tu progreso se guarda en este navegador.

1.1 Hola, mundo
Escribe un programa que muestre exactamente esta linea: Hola, mundo! Recuerda: necesitas #include <stdio.h>, la funcion main y printf con un \n al final.

Entrada de ejemplo

(ninguna)

Salida esperada

Hola, mundo!

Tu punto de partida

#include <stdio.h>

int main(void) {
    // TODO: imprime "Hola, mundo!" y salta de linea

    return 0;
}

Cópialo en tu editor, complétalo, compílalo (gcc -Wall -Wextra programa.c -o programa) y prueba la entrada de ejemplo. Para que se corrija solo con varios casos de prueba, descarga el curso.

Pista 1

La funcion que imprime por pantalla es printf, y vive en <stdio.h>.

Pista 2

printf("texto"); -- el texto va entre comillas dobles y la sentencia acaba en ;

Pista 3

Para el salto de linea, anade \n dentro del texto: "Hola, mundo!\n"

Ver solución (inténtalo antes)
#include <stdio.h>

int main(void) {
    printf("Hola, mundo!\n");
    return 0;
}
1.2 Dibuja con asteriscos
Usando varias llamadas a printf (una por linea), dibuja este arbol: * *** ***** | (Las lineas llevan espacios a la izquierda: 4, 3, 2 y 4 espacios respectivamente. Los espacios finales no importan, pero los iniciales si.)

Entrada de ejemplo

(ninguna)

Salida esperada

    *
   ***
  *****
    |

Tu punto de partida

#include <stdio.h>

int main(void) {
    // TODO: dibuja el arbol con 4 printf

    return 0;
}

Cópialo en tu editor, complétalo, compílalo (gcc -Wall -Wextra programa.c -o programa) y prueba la entrada de ejemplo. Para que se corrija solo con varios casos de prueba, descarga el curso.

Pista 1

Cada linea es un printf distinto terminado en \n.

Pista 2

Cuenta bien los espacios: la primera linea tiene 4 espacios y 1 asterisco.

Ver solución (inténtalo antes)
#include <stdio.h>

int main(void) {
    printf("    *\n");
    printf("   ***\n");
    printf("  *****\n");
    printf("    |\n");
    return 0;
}
1.3 Caza los errores de compilacion
Este programa tiene VARIOS errores que impiden compilarlo. Arreglalos para que imprima: Arreglado! 2 + 3 = 5 Aprende a leer los mensajes del compilador: indican fichero:linea:columna del problema. No cambies lo que imprime, solo corrige el codigo.

Entrada de ejemplo

(ninguna)

Salida esperada

Arreglado!
2 + 3 = 5

Tu punto de partida

#include <stdio.h>

int main(void) {
    int a = 2
    int b = 3;
    printf("Arreglado!\n")
    printf("%d + %d = %d\n", a, b, a + b);
    retrun 0;
}

Cópialo en tu editor, complétalo, compílalo (gcc -Wall -Wextra programa.c -o programa) y prueba la entrada de ejemplo. Para que se corrija solo con varios casos de prueba, descarga el curso.

Pista 1

Hay 3 errores. El compilador te da la linea de cada uno: empieza por el primero.

Pista 2

Dos sentencias no terminan en punto y coma, y hay una palabra reservada mal escrita.

Ver solución (inténtalo antes)
#include <stdio.h>

int main(void) {
    int a = 2;
    int b = 3;
    printf("Arreglado!\n");
    printf("%d + %d = %d\n", a, b, a + b);
    return 0;
}

Quiz del módulo 1

5 preguntas para comprobar que has fijado los conceptos. Las opciones se barajan cada vez.