PopularRecorrido
Aprende programación en C
Un curso online de C, gratuito e interactivo. Escribes C en cada lección —variables, control de flujo, funciones, punteros, manejo de memoria— con pistas de IA cuando algo te lanza un segfault, y un certificado gratis al terminar.
117,962+ codders inscritos
- Apto para principiantes
Ayuda de codificación con IA
Lecciones interactivas prácticas
Narración de audio en cada lección
Cuestionarios para poner a prueba tu conocimiento
Certificado gratuito de finalización
Programa
Sección 1
Fundamentals
Empezar secciónEmpezarExpandirContraerBuild a strong foundation with essential concepts and basic skillsIntroducción
4 lecciones326- 01Lenguaje CReto
- 02¡Hola Mundo!RetoQuiz
- 03ComentariosQuiz
- 04Estructura básica de un programaRetoQuiz
Variables
11 lecciones1485- 01Tipos de datosRetoQuiz
- 02EnterosRetoQuiz
- 03Float - DoubleRetoMaestríaQuiz
- 04CaracteresRetoQuiz
- 05BooleanosRetoMaestríaQuiz
- 06ConstantesRetoQuiz
- 07Conceptos básicos de printfRetoQuiz
- 08Reglas para nombrar variablesRetoQuiz
- 09Conversión de tipos Parte 1RetoMaestríaQuiz
- 10Conversión de tipos Parte 2RetoQuiz
- 11Desafío de repasoReto
Operadores
9 lecciones1161- 01Operadores aritméticosRetoQuiz
- 02Operador de móduloRetoMaestríaQuiz
- 03Incremento/DecrementoRetoQuiz
- 04Operadores de asignaciónRetoQuiz
- 05Operadores relacionalesRetoQuiz
- 06Operadores lógicos - Parte 1RetoQuiz
- 07Operadores lógicos - Parte 2RetoQuiz
- 08Operadores lógicos - Parte 3RetoMaestríaQuiz
- 09Desafío de repasoReto
Flujo de control
7 lecciones944- 01Sentencia IfRetoQuiz
- 02If - ElseRetoQuiz
- 03Else-IfRetoMaestríaQuiz
- 04Switch CaseRetoMaestríaQuiz
- 05Operador condicional ternarioRetoQuiz
- 06Desafío de repasoReto
- 07If - Else anidadosRetoQuiz
Entrada y salida
5 lecciones626- 01Especificadores de formatoRetoQuiz
- 02Fundamentos de scanfRetoMaestríaQuiz
- 03Desafío de repaso #1Reto
- 04Validación de entradaRetoQuiz
- 05Desafío de repaso #2Reto
Bucles
9 lecciones1053- 01Bucle ForRetoMaestríaQuiz
- 02Bucle WhileRetoQuiz
- 03Bucle Do WhileRetoQuiz
- 04BreakRetoQuiz
- 05ContinueRetoQuiz
- 06Desafío de repaso #1Reto
- 07Bucles anidadosRetoMaestríaQuiz
- 08Bucles infinitosQuiz
- 09Desafío de repaso #2Reto
Funciones
7 lecciones1039- 01Declarar una funciónRetoQuiz
- 02Tipos de retornoRetoMaestríaQuiz
- 03ParámetrosRetoMaestríaQuiz
- 04Desafío de repaso n.º 1Reto
- 05Fundamentos de recursividadRetoMaestríaQuiz
- 06Prototipos de funcionesRetoQuiz
- 07Desafío de repaso n.º 2Reto
Arreglos
8 lecciones1247- 01Declaración de arreglosRetoQuiz
- 02Acceso a elementosRetoQuiz
- 03Modificación de elementosRetoMaestríaQuiz
- 04Arreglos multidimensionalesRetoMaestríaQuiz
- 05Desafío de repaso #1Reto
- 06Arreglos como argumentos de funcionesRetoMaestríaQuiz
- 07Algoritmos de arreglosRetoMaestríaQuiz
- 08Desafío de repaso #2Reto
Desafíos finales
3 lecciones3- 01CalificacionesReto
- 02PicosReto
- 03TVReto
Sección 2
Logic & Flow
Empezar secciónEmpezarExpandirContraerMaster advanced C programming with a focus on data structures and flow control. Learn to work with complex arrays, collections, error handling, and time management.Fundamentos de Punteros
6 lecciones540- 01¿Qué es un puntero?Quiz
- 02Declaración de punterosRetoQuiz
- 03El operador de dirección (&)RetoQuiz
- 04El operador de desreferencia (*)RetoQuiz
- 05Punteros NULLRetoQuiz
- 06Resumen: Conceptos básicos de punterosReto
Punteros y Arrays
5 lecciones531- 01Nombres de Arrays como PunterosRetoQuiz
- 02Elementos de un Array - PunterosRetoQuiz
- 03Aritmética de PunterosRetoQuiz
- 04Comparación de PunterosRetoQuiz
- 05Resumen: Recorrido de Arrays con PunterosReto
Arreglos de caracteres y cadenas
8 lecciones858- 01Cadenas como arreglos de charRetoQuiz
- 02El terminador nuloRetoQuiz
- 03Entrada de cadenas con scanfRetoQuiz
- 04Uso de strlen()RetoQuiz
- 05Uso de strcpy()RetoQuiz
- 06Uso de strcat()RetoQuiz
- 07Uso de strcmp()RetoQuiz
- 08Resumen: Funciones básicas de cadenasReto
Proyecto: Utilidad de texto simple
Proyecto5 lecciones1- 01Descripción general del proyectoReto
- 02Contar caracteresProyecto
- 03Contar vocalesProyecto
- 04Convertir a mayúsculasProyecto
- 05Resultado finalProyecto
Punteros y funciones
6 lecciones641- 01Paso por valorRetoQuiz
- 02Pasar punteros a funcionesRetoQuiz
- 03Modificar variables mediante punterosRetoQuiz
- 04Un ejemplo clásico: Intercambio (Swap)RetoQuiz
- 05Pasar arrays a funcionesRetoQuiz
- 06Resumen: Argumentos de punteros a funcionesReto
Gestión de memoria
7 lecciones652- 01Memoria Stack vs. HeapQuiz
- 02Asignación dinámica - malloc()RetoQuiz
- 03Uso de sizeof() para la asignaciónRetoQuiz
- 04Comprobación de fallos de asignaciónRetoQuiz
- 05Liberación de memoria con free()RetoQuiz
- 06Asignación con calloc()RetoQuiz
- 07Resumen: Arrays dinámicosReto
Estructuras (structs)
6 lecciones540- 01¿Qué es un struct?Quiz
- 02Declaración de un structRetoQuiz
- 03Creación de variables de tipo structRetoQuiz
- 04Acceso a los miembros de un structRetoQuiz
- 05Inicialización de structsRetoQuiz
- 06Resumen: Struct de datos de estudiantesReto
Estructuras y Punteros
6 lecciones643- 01Punteros a estructurasRetoQuiz
- 02El operador flecha (->)RetoQuiz
- 03Pasar estructuras por valorRetoQuiz
- 04Pasar punteros a estructurasRetoQuiz
- 05Asignación dinámica de estructurasRetoQuiz
- 06Resumen: Modificar estructuras - PtrReto
Proyecto: Registro de contacto simple
Proyecto5 lecciones1- 01Proyecto: Definir la estructura ContactReto
- 02Función para crear un contactoProyecto
- 03Función para rellenar un contactoProyecto
- 04Función para mostrar un contactoProyecto
- 05Poniéndolo todo juntoProyecto
Enums y Typedef
6 lecciones640- 01enum para constantes con nombreRetoQuiz
- 02Declaración y uso de enumsRetoQuiz
- 03Enums en sentencias switchRetoQuiz
- 04Uso de typedef para alias de tiposRetoQuiz
- 05typedef con structsRetoQuiz
- 06Repaso: Práctica de typedef y enumsReto
Desafíos de repaso final
3 lecciones3- 01Repaso: Concatenación dinámica de stringsReto
- 02Repaso: Array de structsReto
- 03Repaso: Contador de frecuencia de palabrasReto
Sección 3
Object Oriented Programming
Empezar secciónEmpezarExpandirContraerDiscover how to organize code with classes, objects, and reusable structuresFundamentos de programación modular
5 lecciones433- 01Archivos de cabeceraQuiz
- 02Guardas de inclusiónRetoQuiz
- 03Archivos fuenteRetoQuiz
- 04Funciones estáticasRetoQuiz
- 05Repaso: Calculadora modularReto
Objetos y métodos
6 lecciones642- 01Structs como objetosRetoQuiz
- 02El puntero 'Self'RetoQuiz
- 03Const CorrectnessRetoQuiz
- 04Puntero vs. ValorRetoQuiz
- 05Métodos auxiliaresRetoQuiz
- 06Resumen: Point ManagerReto
Ciclo de vida de los objetos
5 lecciones533- 01Patrón ConstructorRetoQuiz
- 02Patrón DestructorRetoQuiz
- 03Inicialización en StackRetoQuiz
- 04Copia profundaRetoQuiz
- 05Resumen: String WrapperReto
Encapsulamiento
5 lecciones435- 01Concepto de punteros opacosQuiz
- 02Definición de structs opacosRetoQuiz
- 03Getters y SettersRetoQuiz
- 04Validación en settersRetoQuiz
- 05Resumen: Caja secretaReto
Proyecto: Cuenta bancaria simple
Proyecto6 lecciones1- 01Configuración del proyectoReto
- 02Implementación de la cuentaProyecto
- 03Lógica de depósitoProyecto
- 04Lógica de retiroProyecto
- 05Obtener saldoProyecto
- 06Final del proyecto: Bucle principalProyecto
Herencia mediante composición
5 lecciones531- 01Incrustación de StructsRetoQuiz
- 02La regla del primer miembroRetoQuiz
- 03Acceso a miembros padreRetoQuiz
- 04UpcastingRetoQuiz
- 05Resumen: Jerarquía de formasReto
Punteros a funciones
5 lecciones534- 01Declaración de punteros a funcionesRetoQuiz
- 02Llamada a punteros a funcionesRetoQuiz
- 03Typedef para punteros a funcionesRetoQuiz
- 04Pasar funciones como argumentosRetoQuiz
- 05Repaso: Dispatch de calculadoraReto
Polimorfismo
6 lecciones641- 01Punteros a funciones en estructurasRetoQuiz
- 02Simulando métodosRetoQuiz
- 03El concepto de interfazRetoQuiz
- 04Implementando interfacesRetoQuiz
- 05Iteración polimórficaRetoQuiz
- 06Resumen: GreeterReto
Proyecto: Dibujador de figuras
Proyecto5 lecciones1- 01Descripción general del proyectoReto
- 02Implementación del círculoProyecto
- 03Implementación del rectánguloProyecto
- 04Uso polimórficoProyecto
- 05Contenedor de figurasProyecto
Contenedores genéricos
5 lecciones534- 01Repaso de punteros voidRetoQuiz
- 02Wrapper genéricoRetoQuiz
- 03Swap genéricoRetoQuiz
- 04Comparación genéricaRetoQuiz
- 05Repaso: Array genéricoReto
Patrones de diseño en C
4 lecciones425- 01Patrón SingletonRetoQuiz
- 02Patrón FactoryRetoQuiz
- 03Patrón IteratorRetoQuiz
- 04Resumen: Logger FactoryReto
Desafíos finales
4 lecciones48- 01Personaje de RPGReto
- 02Constructor de strings dinámicoReto
- 03Pila genéricaReto
- 04Sistema de eventosRetoQuiz
Por qué aprender programación en C con Coddy
- Escribe y ejecuta código C real en tu navegador. Sin instalar GCC, sin Makefile, sin configurar toolchain. Cada ejercicio compila tu programa en C del lado del servidor y te muestra la salida al instante.
- C tal como se usa en la práctica: punteros y referencias, arrays, strings, structs, memoria dinámica con
mallocyfree, I/O de archivos. Las bases de C que todo programador de sistemas necesita. - Las pistas con IA te ayudan a leer y corregir errores del compilador de C y segfaults, para que el lenguaje se sienta accesible en vez de críptico desde el primer día.
- Certificado gratuito de programación en C al terminar el curso. Una señal creíble para puestos de sistemas, embebidos, OS y motores de juegos, donde se espera fluidez en C.
Preguntas frecuentes sobre aprender programación en C
¿programación en C es fácil de aprender?
C tiene menos características que la mayoría de los lenguajes modernos, pero te obliga a enfrentar punteros y manejo manual de memoria desde temprano, y por eso tiene fama de ser difícil. El curso introduce esas ideas paso a paso, con ejercicios prácticos después de cada concepto, para que las partes complicadas no te caigan todas de golpe.
¿Debería aprender C o C++ primero?
Para sistemas embebidos, trabajo a nivel de OS o programación de bajo nivel, empieza con C: es más pequeño y está más cerca del hardware. Para desarrollo de aplicaciones, motores de videojuegos o sistemas modernos, C++ es la opción más común y te da una rampa más suave a través de las clases antes de tener que manejar la memoria a mano.
¿Cuánto tiempo toma aprender programación en C?
Los fundamentos de C —variables, condicionales, bucles, funciones— toman de dos a cuatro semanas de práctica diaria. Sentirte cómodo con punteros, structs y memoria dinámica suele llevar otros uno a tres meses. El dominio (código a nivel de sistema, trabajo de rendimiento, bases de código grandes en C) es un camino de varios años.
¿Puedo aprender programación en C online y gratis?
Sí. El curso interactivo de C es gratuito: lecciones completas, ejercicios de código, cuestionarios y un certificado al finalizar. El compilador de C corre del lado del servidor, así que no necesitas instalar GCC, Clang ni ningún IDE localmente para empezar a escribir C.
¿Necesito instalar un compilador de C para tomar este curso?
No. Cada ejercicio de C se compila en un entorno aislado y muestra la salida junto a tu código. No hay Makefile, ni IDE, ni toolchain que configurar.
¿Recibo un certificado al terminar el curso de programación en C?
Sí. Al terminar el curso de programación en C recibes un certificado de finalización gratuito que puedes agregar a tu currículum o compartir en LinkedIn — útil junto con cualquier proyecto de programación de sistemas o repositorio de GitHub que hayas construido.