--- 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.