Aulas de programação em Markdown

Aulas que compilam.

Escreva a aula em Markdown. Cada bloco de código ganha um ▶ que compila com o g++ de verdade e mostra a saída num terminal, ali mesmo, no telão.

$ trunade aula.md

Começar →

aula-02.mdlocalhost:4747

Lendo do teclado

cpp
#include <iostream>
#include <string>

int main() {
    std::string nome;
    std::cout << "Qual o seu nome? ";
    std::cin >> nome;
    std::cout << "Olá, " << nome << "!\n";
}

Aperte ▶ e digite seu nome no terminal.

A aula é um arquivo.

Markdown comum, no seu editor. Salvou, a página atualiza.

aula-02.md
## Lendo do teclado

Use `std::cin` para ler da entrada padrão.

```cpp
#include <iostream>
int main() {
    int a, b;
    std::cin >> a >> b;
    std::cout << a + b << "\n";
}
```

```stdin
2 40
```
Programa completo
Cada bloco tem o seu main() e é compilado do zero, como na prova.
Entrada de verdade
Bloco stdin junto com a aula, saída esperada com veredito de juiz, ou cin interativo no terminal.
Erro é conteúdo
Erro de compilação inteiro, sinais, tempo limite e código de saída.

O que vem pronto.

C++, C e Python
Outras linguagens por configuração, com o compilador e as flags que você quiser.
Molde escondido
Declare #include e using namespace std uma vez; cada bloco mostra só o que importa.
Casos de teste
Pares stdin/expected com ✓ ou ✗ como no juiz: passou no exemplo, falhou no caso extremo.
Fórmulas e diagramas
LaTeX e Mermaid renderizados localmente.
Perguntas e passos
Blocos quiz e exercícios com enunciado, dica e solução que roda.
Feito para o telão
Índice com T, espaço para a próxima seção, Z amplia um bloco, F para tela cheia.
Rodar tudo
R roda todos os blocos com entrada fixa e aponta o que quebrou, antes de entrar na sala.
PDF e HTML
Exporte a aula com as saídas; o HTML abre em qualquer lugar e reproduz cada execução no ▶.
Registro para pesquisa
Um log local e anônimo de execuções, erros, respostas e seções, para estudar a aula.
Edite sem medo
Mude o código durante a aula; o arquivo não muda.
Offline
Um binário local, sem CDN, sem conta, sem nuvem.
Suas fontes
Tema, largura e fontes de título, texto e código, guardados para todas as aulas.

E o Jupyter?

Ótimo quando o estado entre células é o ponto: dados, gráficos, exploração. Uma aula de C++ pede outra coisa.

Trunade!Jupyter
Blocoprograma completo, com main()célula que continua o estado anterior
Compiladoro real, com as suas flagso do kernel (C++ interpretado)
Entradaterminal interativo ou stdin fixolimitada
Saída esperadaveredito por caso, como no juizà mão
ArquivoMarkdown puroJSON com saídas embutidas

Instale e rode.

$ brew install gcc        # g++-16 no macOS
$ ./install.sh
$ trunade aula.md

Guia de instalação →