PopularJornada
Aprenda programação em C
Um curso online de C grátis e interativo. Você escreve C em cada lição — variáveis, controle de fluxo, funções, ponteiros, gerenciamento de memória — com dicas de IA quando algo dá segfault e um certificado grátis ao concluir.
117,962+ codders inscritos
- Ideal para iniciantes
Ajuda de codificação com IA
Lições interativas e práticas
Narração em áudio em todas as lições
Questionários para testar seu conhecimento
Certificado grátis de conclusão
Programa
Seção 1
Fundamentals
Começar seçãoIniciarExpandirRecolherBuild a strong foundation with essential concepts and basic skillsIntrodução
4 lições326- 01Linguagem CDesafio
- 02Olá Mundo!DesafioQuiz
- 03ComentáriosQuiz
- 04Estrutura Básica de um ProgramaDesafioQuiz
Variáveis
11 lições1485- 01Tipos de DadosDesafioQuiz
- 02InteiroDesafioQuiz
- 03Float - DoubleDesafioMaestriaQuiz
- 04CaracteresDesafioQuiz
- 05BooleanosDesafioMaestriaQuiz
- 06ConstantesDesafioQuiz
- 07Fundamentos do printfDesafioQuiz
- 08Regras de Nomenclatura de VariáveisDesafioQuiz
- 09Conversão de Tipos Parte 1DesafioMaestriaQuiz
- 10Conversão de Tipos Parte 2DesafioQuiz
- 11Desafio de RecapitulaçãoDesafio
Operadores
9 lições1161- 01Operadores AritméticosDesafioQuiz
- 02Operador de MóduloDesafioMaestriaQuiz
- 03Incremento/DecrementoDesafioQuiz
- 04Operadores de AtribuiçãoDesafioQuiz
- 05Operadores RelacionaisDesafioQuiz
- 06Operadores Lógicos Parte 1DesafioQuiz
- 07Operadores Lógicos Parte 2DesafioQuiz
- 08Operadores Lógicos Parte 3DesafioMaestriaQuiz
- 09Desafio de RecapitulaçãoDesafio
Fluxo de Controle
7 lições944- 01Instrução IfDesafioQuiz
- 02If - ElseDesafioQuiz
- 03Else-IfDesafioMaestriaQuiz
- 04Switch CaseDesafioMaestriaQuiz
- 05Operador Condicional TernárioDesafioQuiz
- 06Desafio de RevisãoDesafio
- 07If - Else AninhadoDesafioQuiz
Entrada e Saída
5 lições626- 01Especificadores de FormatoDesafioQuiz
- 02Fundamentos do scanfDesafioMaestriaQuiz
- 03Desafio de Revisão nº 1Desafio
- 04Validação de EntradaDesafioQuiz
- 05Desafio de Revisão nº 2Desafio
Loops
9 lições1053- 01Loop ForDesafioMaestriaQuiz
- 02Loop WhileDesafioQuiz
- 03Loop Do WhileDesafioQuiz
- 04BreakDesafioQuiz
- 05ContinueDesafioQuiz
- 06Desafio de Revisão #1Desafio
- 07Loops AninhadosDesafioMaestriaQuiz
- 08Loops InfinitosQuiz
- 09Desafio de Revisão #2Desafio
Funções
7 lições1039- 01Declarar uma FunçãoDesafioQuiz
- 02Tipos de RetornoDesafioMaestriaQuiz
- 03ParâmetrosDesafioMaestriaQuiz
- 04Desafio de Recapitulação nº 1Desafio
- 05Fundamentos da RecursãoDesafioMaestriaQuiz
- 06Protótipos de FunçãoDesafioQuiz
- 07Desafio de Recapitulação nº 2Desafio
Arrays
8 lições1247- 01Declarando ArraysDesafioQuiz
- 02Acessando ElementosDesafioQuiz
- 03Modificando ElementosDesafioMaestriaQuiz
- 04Arrays MultidimensionaisDesafioMaestriaQuiz
- 05Desafio de Revisão nº 1Desafio
- 06Arrays como Argumentos de FunçãoDesafioMaestriaQuiz
- 07Algoritmos de ArrayDesafioMaestriaQuiz
- 08Desafio de Revisão nº 2Desafio
Desafios Finais
3 lições3- 01NotasDesafio
- 02PicosDesafio
- 03TVDesafio
Seção 2
Logic & Flow
Começar seçãoIniciarExpandirRecolherMaster 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 Ponteiros
6 lições540- 01O que é um Ponteiro?Quiz
- 02Declarando PonteirosDesafioQuiz
- 03O Operador de Endereço (&)DesafioQuiz
- 04O Operador de Desreferência (*)DesafioQuiz
- 05Ponteiros NULLDesafioQuiz
- 06Recapitulação: Fundamentos de PonteirosDesafio
Ponteiros e Arrays
5 lições531- 01Nomes de Arrays como PonteirosDesafioQuiz
- 02Elementos de Array - PonteirosDesafioQuiz
- 03Aritmética de PonteirosDesafioQuiz
- 04Comparando PonteirosDesafioQuiz
- 05Recapitulação: Percorrendo Arrays com PonteirosDesafio
Arrays de Caracteres e Strings
8 lições858- 01Strings como Arrays de charDesafioQuiz
- 02O Terminador NuloDesafioQuiz
- 03Entrada de Strings com scanfDesafioQuiz
- 04Usando strlen()DesafioQuiz
- 05Usando strcpy()DesafioQuiz
- 06Usando strcat()DesafioQuiz
- 07Usando strcmp()DesafioQuiz
- 08Recapitulação: Funções Básicas de StringsDesafio
Projeto: Utilitário de Texto Simples
Projeto5 lições1- 01Visão Geral do ProjetoDesafio
- 02Contando CaracteresProjeto
- 03Contando VogaisProjeto
- 04Converter para MaiúsculasProjeto
- 05Saída FinalProjeto
Ponteiros e Funções
6 lições641- 01Passagem por ValorDesafioQuiz
- 02Passando Ponteiros para FunçõesDesafioQuiz
- 03Modificando Variáveis via PonteirosDesafioQuiz
- 04Um Exemplo Clássico: SwapDesafioQuiz
- 05Passando Arrays para FunçõesDesafioQuiz
- 06Recapitulação: Ponteiros como ArgumentosDesafio
Gerenciamento de Memória
7 lições652- 01Memória Stack vs. HeapQuiz
- 02Alocação Dinâmica - malloc()DesafioQuiz
- 03Usando sizeof() para AlocaçãoDesafioQuiz
- 04Verificando Falhas de AlocaçãoDesafioQuiz
- 05Liberando Memória com free()DesafioQuiz
- 06Alocando com calloc()DesafioQuiz
- 07Recapitulação: Array DinâmicoDesafio
Estruturas (structs)
6 lições540- 01O que é uma Struct?Quiz
- 02Declarando uma StructDesafioQuiz
- 03Criando Variáveis de StructDesafioQuiz
- 04Acessando Membros de uma StructDesafioQuiz
- 05Inicializando StructsDesafioQuiz
- 06Recapitulação: Struct de Dados de AlunoDesafio
Structs e Ponteiros
6 lições643- 01Ponteiros para StructsDesafioQuiz
- 02O Operador Seta (->)DesafioQuiz
- 03Passagem de Structs por ValorDesafioQuiz
- 04Passagem de Ponteiros para StructsDesafioQuiz
- 05Alocação Dinâmica de StructsDesafioQuiz
- 06Recapitulação: Modificando Struct - PtrDesafio
Projeto: Cadastro Simples de Contatos
Projeto5 lições1- 01Projeto: Definir a Struct de ContatoDesafio
- 02Função para Criar um ContatoProjeto
- 03Função para Preencher um ContatoProjeto
- 04Função para Exibir um ContatoProjeto
- 05Juntando TudoProjeto
Enums e Typedef
6 lições640- 01enum para Constantes NomeadasDesafioQuiz
- 02Declarando e Usando EnumsDesafioQuiz
- 03Enums em Instruções SwitchDesafioQuiz
- 04Usando typedef para Aliases de TipoDesafioQuiz
- 05typedef com StructsDesafioQuiz
- 06Recapitulação: Prática de Typedef e EnumDesafio
Desafios de Revisão Final
3 lições3- 01Revisão: Concatenação Dinâmica de StringsDesafio
- 02Revisão: Array de StructsDesafio
- 03Revisão: Contador de Frequência de PalavrasDesafio
Seção 3
Object Oriented Programming
Começar seçãoIniciarExpandirRecolherDiscover how to organize code with classes, objects, and reusable structuresFundamentos da Programação Modular
5 lições433- 01Arquivos de CabeçalhoQuiz
- 02Include GuardsDesafioQuiz
- 03Arquivos-FonteDesafioQuiz
- 04Funções EstáticasDesafioQuiz
- 05Recapitulação: Calculadora ModularDesafio
Objetos e Métodos
6 lições642- 01Structs como ObjetosDesafioQuiz
- 02O Ponteiro 'Self'DesafioQuiz
- 03Const CorrectnessDesafioQuiz
- 04Ponteiro vs ValorDesafioQuiz
- 05Métodos AuxiliaresDesafioQuiz
- 06Recapitulação: Point ManagerDesafio
Ciclo de Vida de Objetos
5 lições533- 01Padrão de ConstrutorDesafioQuiz
- 02Padrão de DestrutorDesafioQuiz
- 03Inicialização na StackDesafioQuiz
- 04Cópia ProfundaDesafioQuiz
- 05Recapitulação: String WrapperDesafio
Encapsulamento
5 lições435- 01Conceito de Ponteiros OpacosQuiz
- 02Definindo Structs OpacasDesafioQuiz
- 03Getters e SettersDesafioQuiz
- 04Validação em SettersDesafioQuiz
- 05Recapitulação: Caixa SecretaDesafio
Projeto: Conta Bancária Simples
Projeto6 lições1- 01Configuração do ProjetoDesafio
- 02Implementação da ContaProjeto
- 03Lógica de DepósitoProjeto
- 04Lógica de SaqueProjeto
- 05Consultar SaldoProjeto
- 06Finalização do Projeto: Loop PrincipalProjeto
Herança via Composição
5 lições531- 01Incorporação de StructsDesafioQuiz
- 02A Regra do Primeiro MembroDesafioQuiz
- 03Acessando Membros PaiDesafioQuiz
- 04UpcastingDesafioQuiz
- 05Recapitulação: Hierarquia de FormasDesafio
Ponteiros para Funções
5 lições534- 01Declarando Ponteiros para FunçõesDesafioQuiz
- 02Chamando Ponteiros para FunçõesDesafioQuiz
- 03Typedef para Ponteiros para FunçõesDesafioQuiz
- 04Passando Funções como ArgumentosDesafioQuiz
- 05Recapitulação: Dispatch de CalculadoraDesafio
Polimorfismo
6 lições641- 01Ponteiros de Função em StructsDesafioQuiz
- 02Simulando MétodosDesafioQuiz
- 03O Conceito de InterfaceDesafioQuiz
- 04Implementando InterfacesDesafioQuiz
- 05Iteração PolimórficaDesafioQuiz
- 06Recapitulação: GreeterDesafio
Projeto: Desenhador de Formas
Projeto5 lições1- 01Visão Geral do ProjetoDesafio
- 02Implementação do CírculoProjeto
- 03Implementação do RetânguloProjeto
- 04Uso PolimórficoProjeto
- 05Container de FormasProjeto
Contêineres Genéricos
5 lições534- 01Revisão de Ponteiros VoidDesafioQuiz
- 02Wrapper GenéricoDesafioQuiz
- 03Troca GenéricaDesafioQuiz
- 04Comparação GenéricaDesafioQuiz
- 05Revisão: Array GenéricoDesafio
Padrões de Projeto em C
4 lições425- 01Padrão SingletonDesafioQuiz
- 02Padrão FactoryDesafioQuiz
- 03Padrão IteratorDesafioQuiz
- 04Recapitulação: Logger FactoryDesafio
Desafios Finais
4 lições48- 01Personagem de RPGDesafio
- 02Construtor de Strings DinâmicoDesafio
- 03Pilha GenéricaDesafio
- 04Sistema de EventosDesafioQuiz
Por que aprender programação em C com a Coddy
- Escreva e execute código C de verdade no navegador. Sem instalar GCC, sem Makefile, sem configurar toolchain. Cada exercício compila seu programa em C no servidor e mostra a saída na hora.
- C como ele é usado de verdade: ponteiros e referências, arrays, strings, structs, memória dinâmica com
mallocefree, file I/O. Os fundamentos de C que todo programador de sistemas precisa. - Dicas de IA ajudam você a ler e corrigir erros do compilador C e segfaults, para que a linguagem pareça acessível em vez de enigmática desde o primeiro dia.
- Certificado gratuito de C ao concluir o curso. Um sinal confiável para vagas em sistemas, embarcados, sistemas operacionais e game engines, onde se espera fluência em C.
Perguntas frequentes sobre aprender programação em C
programação em C é fácil de aprender?
C tem menos recursos que a maioria das linguagens modernas, mas obriga você a lidar com ponteiros e gerenciamento manual de memória logo no começo — por isso tem fama de ser difícil. O curso apresenta essas ideias passo a passo, com exercícios práticos depois de cada conceito, para as partes difíceis não virem todas de uma vez.
Devo aprender C ou C++ primeiro?
Para sistemas embarcados, nível de sistema operacional ou programação de baixo nível, comece com C — é menor e mais próximo do hardware. Para desenvolvimento de aplicações, game engines ou sistemas modernos, C++ é a escolha mais comum e oferece uma transição mais suave por meio de classes antes de você ter que gerenciar memória na mão.
Quanto tempo leva para aprender programação em C?
Os fundamentos de C — variáveis, condicionais, loops, funções — levam de duas a quatro semanas de prática diária. Ficar à vontade com pointers, structs e memória dinâmica costuma levar mais um a três meses. A maestria (código a nível de sistema, trabalho de performance, grandes codebases em C) é uma jornada de vários anos.
Dá para aprender C online de graça?
Sim. O curso interativo de C é gratuito — aulas completas, exercícios de programação, quizzes e um certificado de conclusão. O compilador de C roda no servidor, então você não precisa instalar GCC, Clang ou qualquer IDE localmente para começar a escrever C.
Preciso instalar um compilador de C para fazer este curso?
Não. Cada exercício de C compila em um ambiente isolado e mostra a saída ao lado do seu código. Sem Makefile, sem IDE, sem toolchain para configurar.
Recebo um certificado ao terminar o curso de C?
Sim. Ao concluir o curso de programação em C você ganha um certificado de conclusão gratuito para adicionar ao currículo ou compartilhar no LinkedIn — útil ao lado de qualquer projeto de systems programming ou repositório no GitHub que você tenha feito.