---
title: Programação
slug: /recursos/atividades/programacao
---

# Atividades de Programação

As Atividades de Programação do Decoda organizam a aprendizagem em desafios curtos, progressivos e visualmente concretos. Em vez de começar por sintaxe textual, o estudante manipula blocos, observa efeitos imediatos na tela e passa a relacionar comando, regra e resultado. Isso reduz a barreira inicial de entrada e permite concentrar a atenção no raciocínio computacional.

Pedagogicamente, esse conjunto de atividades cobre um percurso bastante amplo: modelagem por propriedades, sequência de comandos, repetição, condicionais, eventos, coordenadas, variáveis, memória de estado, funções e noções iniciais de criptografia. Cada atividade enfatiza um recorte do pensamento computacional e pode ser usada tanto em trilhas sequenciais quanto em intervenções pontuais, de acordo com o objetivo da aula.

## Objetivo pedagógico

O principal objetivo desta trilha é desenvolver pensamento computacional com progressão didática: partir de desafios concretos e visuais, avançar para estruturas de controle e, gradualmente, chegar a problemas que exigem mais abstração, planejamento e revisão de estratégia.

Além de aprender blocos ou comandos isolados, espera-se que o estudante compreenda como construir soluções passo a passo, comparar alternativas, identificar padrões e justificar decisões. Com mediação adequada, as atividades também fortalecem autonomia, linguagem para explicar raciocínio e confiança para lidar com erro como parte do processo de aprendizagem.

## Como conduzir em sala

Uma forma simples e eficaz de condução é trabalhar em ciclos curtos de exploração, execução e reflexão:

```mermaid
flowchart TD
	A[Selecionar atividade e objetivo da aula] --> B[Explorar o desafio e prever estratégia]
	B --> C[Montar solução em blocos]
	C --> D[Executar e observar resultado]
	D --> E[Discutir o que funcionou e o que precisa ajuste]
	E --> F[Refinar a solução]
	F --> C
```

Esse formato ajuda a manter o foco pedagógico em raciocínio e tomada de decisão, e não apenas em chegar rapidamente ao fim da fase.

## Boas práticas de mediação

- Comece pelo conceito-alvo da aula e escolha a atividade em função desse foco.
- Incentive o estudante a explicar a estratégia antes e depois de executar.
- Evite entregar a resposta pronta; prefira perguntas que levem à revisão do raciocínio.
- Valorize soluções diferentes quando forem corretas e discuta critérios de clareza e eficiência.
- Use o erro como evidência de aprendizagem em progresso, destacando o que já foi compreendido.

## Como navegar nesta seção

Nesta subpasta, cada atividade possui uma página própria. Em cada uma delas você encontra:

- o foco pedagógico da atividade;
- os conceitos de programação mais evidentes;
- sugestões de mediação em sala;
- uma tabela com a progressão das fases;
- referências externas para aprofundamento.

## Mapa das atividades

| Atividade | Foco principal | Conceitos mais evidentes |
| --- | --- | --- |
| [Quebra-cabeças](./programacao/quebra-cabecas) | Modelagem de informações e atributos | propriedades, classificação, atribuição de valores |
| [Aspirador](./programacao/aspirador) | Navegação reativa e estratégia | sequência, repetição, condicionais, sensores, variáveis |
| [Autômato](./programacao/automato) | Construção de algoritmos de percurso | sequência, loops, condicionais, controle de fluxo |
| [Semáforo](./programacao/semaforo) | Programação orientada a eventos e segurança lógica | sequência temporal, eventos, sincronização, condicionais |
| [Tartaruga](./programacao/tartaruga) | Programação como construção visual | movimento, repetição, funções, decomposição |
| [Toupeira](./programacao/toupeira) | Coordenadas, memória e aleatoriedade | matrizes, loops aninhados, variáveis, estado |
| [Cripto](./programacao/cripto) | Representação simbólica e transformação de dados | laços, variáveis, condicionais, funções hash, cifra |
| [Ordenação](./programacao/ordenacao) | Algoritmos de ordenação e análise de eficiência | listas, loops aninhados, variáveis, comparação, algoritmos clássicos |

## Como escolher uma atividade

Se a turma ainda está começando, vale priorizar atividades em que a relação entre comando e efeito seja imediatamente visível, como [Quebra-cabeças](./programacao/quebra-cabecas), [Semáforo](./programacao/semaforo), [Autômato](./programacao/automato) e [Aspirador](./programacao/aspirador). Elas ajudam a consolidar a ideia de que programar é construir instruções precisas para resolver um problema.

Se o objetivo é avançar para estruturas mais complexas, [Toupeira](./programacao/toupeira) e [Cripto](./programacao/cripto) abrem espaço para discutir estados, regras condicionais, memória, representação de dados e transformação algorítmica de informação. Já [Ordenação](./programacao/ordenacao) aprofunda essa progressão com algoritmos clássicos e noções de eficiência comparada, sendo a mais indicada quando o objetivo inclui discutir custo computacional e múltiplas estratégias para o mesmo problema. Já [Tartaruga](./programacao/tartaruga) é especialmente útil quando se deseja trabalhar criatividade, abstração e decomposição ao mesmo tempo.

## Sugestão de progressão

Uma progressão possível é:

1. começar com modelagem e comando simples em [Quebra-cabeças](./programacao/quebra-cabecas);
2. avançar para navegação com [Autômato](./programacao/automato) e [Aspirador](./programacao/aspirador);
3. introduzir coordenação de regras e eventos em [Semáforo](./programacao/semaforo);
4. explorar criação visual e funções em [Tartaruga](./programacao/tartaruga);
5. trabalhar memória, coordenadas e aleatoriedade em [Toupeira](./programacao/toupeira);
6. fechar com transformação simbólica e segurança em [Cripto](./programacao/cripto);
7. avançar para algoritmos de ordenação e análise de eficiência em [Ordenação](./programacao/ordenacao).

Essa ordem não é obrigatória. Em muitos contextos, faz mais sentido escolher a atividade pelo conceito que se deseja observar ou reforçar na aula.