desenvolvimento pre-lancamento
Commit inicial - add do repo privado para o repo NT style: changes header's logo and colors style: changes home page first session layout feat: creates about us home page section chore: creates home page section for whom chore: creates student materails home page section chore: creates teachers materials home page section chore: creates teacher materials home page section style: changes primary color style: changes color at activities page style: changes about page color style: changes name to Decoda fix: changes route to about page at footer fix: changes background color style: changes game page header colors style: changes footer colors chore: adds home page sections title style: changes main font family to Lato style: adds title font fix: changes sizes to be more responsive for mobile ajuste no build vercel atualiza regras envio homol Adiciona instrucoes de uso add JupyterLite fix solucao turtle Add Mole Mash e Modal de Falhas Add Progress Bar na pagina de Atividades fix game name chore: atualiza lockfile removendo vercel analytics inclusão de efeito ao mudar de fase add mecanismo de solução de fases em debug vite config test add BaseGame e refator do MoleMash refatoração turtle refatoração automato refatoração automato add tag bug 1 e 2 automato mostrar apenas games em homologação na pagina de atividades aumentar timeout das fases finais do Turtle fix bug scroll add video refactor semaforo arrumar ordem das cores add build docs update vercel update vercel update vercel update vercel update vercel add vercel jupyter add vercel jupyter fix deploy Vercel fix deploy Vercel fix deploy Vercel add cripto add cripto refatoração fix tour Mole Mash . remover arquivos de controle chore: adds development tag for activity card remover arquivos de status indevidamente versionados atualizar cores nas atividades add Quebra Cabeças add Quebra Cabeças add iniciativas add Iniciativas alteração de fotos pesadas fix menu mobile fix menu mobile fix menu mobile add Aspirador update icons update identidade visual documentação update jupyter add kernel python local add kernel python local add kernel python local feat: add health check feat: add primeiros passos add letramento mover letramento de lugar update path games update path games fix: ajuste clique rapido no botão executar remover dead code fix: refactor: extract shared utilities for storage, phase unlock and mobile detection stabilize context references and fix stale closure extrair GameProgressContext do GameStateContext (SRP) refactor(game): extrair usePhaser e useGameModals de GameBase + corrigir bugs descobertos refactor(game): remove todos os aliases PT/EN duplicados Remover aliases PT/EN da camada de modais refactor + tests security: add CodeSanitizer and integrate into GameInterpreter - CodeSanitizer.js: 4 built-in rules (max_length, infinite_while, infinite_for, excessive_nesting) with pluggable extra rules - GameInterpreter.executeCode: calls sanitizeCode() before js-interpreter, differentiates CodeSanitizationError (warn) from other errors (error) - 21 unit tests for CodeSanitizer (100% coverage) - 4 integration tests in GameInterpreter for sanitization paths add CodeSanitizer fix: fase 10 aspirador fix: bug semaforo teste feat: add version Ajusta a landing page para ficar mais próxima ao protótipo ajusta raio da borda do botão de Acesse nosso Laboratório pequenos ajustes de layout na página de iniciativas atualiza tabela de jogos educativos com os jogos disponíveis atualmente ajustados pequenos detalhes e informações do jogos na seção de guias pedagógicos troca nome playground para laboratório e adiciona imagens do lab adiciona documentação de conceitos básicos de programação ajustado pequenos erros de digitação adiciona tooltip com conceitos escondidos em hover na tag +N de conceitos update docs dev desativar tour setup matriz MoleMash setup matriz MoleMash fix: link update version update docs update docs mudou o layout de quem somos mudei as imgs dos icons e baixei o botao centraliza titulo com imagem e ajusta sessão com gradiente vermelho-rosa adiciona responsividade para a pagina quem somos ajusta botão de conheça nossa história ajustes ajustes na home + add. teclado update version security security feat: add tapume para telas pequenas v1.1.0 feat: decoda offline feat: doc offline offline fix: ajustes para release fix: navbar; config ordenação; versão fix: rotas docs e jupyter para pwa delete private files Co-authored-by: Indra Araujo <indra.araujo.santos@gmail.com> Co-authored-by: solange dos santos <sollangelive71@gmail.com>
This commit is contained in:
345
docs/edu/fundamentos-programacao/conceitos-basicos/algoritmos.md
Normal file
345
docs/edu/fundamentos-programacao/conceitos-basicos/algoritmos.md
Normal file
@@ -0,0 +1,345 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: "Algoritmos"
|
||||
---
|
||||
|
||||
# Algoritmos - O Passo a Passo de uma Solução
|
||||
|
||||
**Algoritmos** são como **receitas detalhadas** que ensinam como resolver um problema passo a passo. É a arte de quebrar um problema grande em pequenos passos organizados!
|
||||
|
||||
## **O que são Algoritmos?**
|
||||
|
||||
Um algoritmo é uma **sequência finita de instruções** bem definidas que, quando seguidas, resolvem um problema ou executam uma tarefa específica.
|
||||
|
||||
### **Analogia: Receita de Bolo**
|
||||
|
||||
```
|
||||
ALGORITMO: Fazer Bolo de Chocolate
|
||||
|
||||
1. Preaqueça o forno a 180°C
|
||||
2. Em uma tigela, misture farinha, açúcar e cacau
|
||||
3. Em outra tigela, bata ovos com leite
|
||||
4. Combine as duas misturas
|
||||
5. Despeje na forma untada
|
||||
6. Asse por 30 minutos
|
||||
7. Deixe esfriar antes de desenformar
|
||||
```
|
||||
|
||||
Cada passo é **claro**, **específico** e deve ser seguido **na ordem certa**!
|
||||
|
||||
## **Características de um Bom Algoritmo**
|
||||
|
||||
### **1. Clareza**
|
||||
|
||||
- Cada instrução deve ser **compreensível**
|
||||
- Sem ambiguidade: "vire à direita" em vez de "vire"
|
||||
|
||||
### **2. Sequência Lógica**
|
||||
|
||||
- Passos na **ordem correta**
|
||||
- Um passo depende do anterior
|
||||
|
||||
### **3. Finitude**
|
||||
|
||||
- Deve **terminar** em algum momento
|
||||
- Não pode ser infinito
|
||||
|
||||
### **4. Eficácia**
|
||||
|
||||
- Deve **resolver o problema** proposto
|
||||
- Resultado esperado sempre que executado
|
||||
|
||||
### **5. Eficiência**
|
||||
|
||||
- Usar o **menor número de passos** possível
|
||||
- Otimizar tempo e recursos
|
||||
|
||||
## **Atividades Desplugadas**
|
||||
|
||||
### **1. Encontrar o Tesouro**
|
||||
|
||||
**Material**: Mapa da sala, tesouro escondido
|
||||
|
||||
**Como fazer**:
|
||||
|
||||
1. Estudante cria algoritmo: "5 passos para frente, vire à direita, 3 passos..."
|
||||
2. Outro estudante segue **exatamente** as instruções
|
||||
3. Se não encontrar o tesouro, o algoritmo precisa ser melhorado!
|
||||
|
||||
### **2. Sanduíche Robótico**
|
||||
|
||||
**Material**: Ingredientes para sanduíche
|
||||
|
||||
**Como fazer**:
|
||||
|
||||
1. Estudante escreve algoritmo para fazer sanduíche
|
||||
2. Educador segue **literalmente** cada instrução
|
||||
3. "Pegue o pão" → pega pão inteiro (não fatia!)
|
||||
4. Algoritmo deve ser cada vez mais específico
|
||||
|
||||
### **3. Organizar a Turma**
|
||||
|
||||
**Material**: Estudantes da sala
|
||||
|
||||
**Como fazer**:
|
||||
|
||||
1. **Problema**: Organizar turma por altura
|
||||
2. Cada equipe cria um algoritmo diferente
|
||||
3. Testam qual é mais rápido e eficiente
|
||||
4. Descobrem diferentes "algoritmos de ordenação"
|
||||
|
||||
## **Tipos Comuns de Algoritmos**
|
||||
|
||||
### **1. Busca**
|
||||
|
||||
Encontrar algo específico numa lista
|
||||
|
||||
**<i class="fas fa-home"></i> Exemplo**: Procurar contato no celular
|
||||
|
||||
1. Abra lista de contatos
|
||||
2. SE a pessoa começar com A-M, vá para primeira metade
|
||||
3. SENÃO, vá para segunda metade
|
||||
4. REPITA até encontrar
|
||||
|
||||
### **2. Ordenação**
|
||||
|
||||
Colocar itens em ordem
|
||||
|
||||
**<i class="fas fa-books"></i> Exemplo**: Organizar livros por altura
|
||||
|
||||
1. Compare primeiro livro com segundo
|
||||
2. SE primeiro for maior, troque posições
|
||||
3. Passe para próximo par
|
||||
4. REPITA até todos estarem ordenados
|
||||
|
||||
### **3. Matemáticos**
|
||||
|
||||
Realizar cálculos complexos
|
||||
|
||||
**<i class="fas fa-percentage"></i> Exemplo**: Calcular média da turma
|
||||
|
||||
1. Some todas as notas
|
||||
2. Conte quantos estudantes há
|
||||
3. Divida soma pelo número de estudantes
|
||||
4. O resultado é a média
|
||||
|
||||
### **4. Navegação**
|
||||
|
||||
Encontrar caminhos
|
||||
|
||||
**<i class="fas fa-map-marked-alt"></i> Exemplo**: Ir de casa à escola
|
||||
|
||||
1. Saia de casa e vire à direita
|
||||
2. Ande até o semáforo
|
||||
3. SE semáforo verde, atravesse
|
||||
4. Continue até encontrar a escola
|
||||
|
||||
## **Algoritmos no Cotidiano**
|
||||
|
||||
### **Manhã**
|
||||
|
||||
- **<i class="fas fa-alarm-clock"></i> Acordar**: Desligar alarme → levantar → ir ao banheiro
|
||||
- **<i class="fas fa-coffee"></i> Café**: Ferver água → adicionar pó → mexer → servir
|
||||
- **<i class="fas fa-car"></i> Ir ao trabalho**: Sair de casa → pegar transporte → chegar ao destino
|
||||
|
||||
### **Tecnologia**
|
||||
|
||||
- **<i class="fas fa-wifi"></i> Conectar WiFi**: Procurar redes → selecionar → inserir senha → conectar
|
||||
- **<i class="fas fa-shopping-cart"></i> Comprar online**: Escolher produto → adicionar carrinho → pagar → aguardar entrega
|
||||
- **<i class="fas fa-map"></i> GPS**: Calcular rota → considerar trânsito → dar instruções → recalcular se necessário
|
||||
|
||||
### **Jogos**
|
||||
|
||||
- **<i class="fas fa-chess"></i> Xadrez**: Avaliar posições → considerar movimentos → escolher melhor jogada
|
||||
- **<i class="fas fa-dice"></i> Jogo da velha**: Verificar possibilidade de vitória → bloquear oponente → fazer jogada estratégica
|
||||
|
||||
## **Na Programação Visual**
|
||||
|
||||
### **Construindo Algoritmos com Blocos**
|
||||
|
||||
No Decoda, algoritmos são construídos conectando blocos em sequência:
|
||||
|
||||
```
|
||||
ALGORITMO: Desenhar Quadrado
|
||||
1. [INÍCIO]
|
||||
2. [REPETIR 4 vezes]
|
||||
- [Andar 100 passos]
|
||||
- [Virar 90 graus direita]
|
||||
3. [FIM]
|
||||
```
|
||||
|
||||
### **Exemplo: Algoritmo do Semáforo**
|
||||
|
||||
```
|
||||
ALGORITMO: Controlar Semáforo
|
||||
1. [INÍCIO]
|
||||
2. [Acender luz verde]
|
||||
3. [ESPERAR 30 segundos]
|
||||
4. [Acender luz amarela]
|
||||
5. [ESPERAR 5 segundos]
|
||||
6. [Acender luz vermelha]
|
||||
7. [ESPERAR 25 segundos]
|
||||
8. [VOLTAR ao passo 2]
|
||||
```
|
||||
|
||||
## **Ferramentas para Criar Algoritmos**
|
||||
|
||||
### **1. Fluxograma**
|
||||
|
||||
Diagrama visual com símbolos:
|
||||
|
||||
- **<i class="fas fa-circle"></i> Círculo**: Início/Fim
|
||||
- **<i class="fas fa-square"></i> Retângulo**: Ação
|
||||
- **<i class="fas fa-diamond"></i> Losango**: Decisão
|
||||
- **<i class="fas fa-arrow-right"></i> Setas**: Fluxo
|
||||
|
||||
### **2. Pseudocódigo**
|
||||
|
||||
Linguagem simples que mistura português com lógica:
|
||||
|
||||
```
|
||||
INÍCIO
|
||||
ESCREVA "Qual seu nome?"
|
||||
LEIA nome
|
||||
ESCREVA "Olá, " + nome
|
||||
FIM
|
||||
```
|
||||
|
||||
### **3. Programação Visual**
|
||||
|
||||
Blocos que representam algoritmos graficamente (como no Decoda)
|
||||
|
||||
## **Erros Comuns em Algoritmos**
|
||||
|
||||
### **1. Passos Fora de Ordem**
|
||||
|
||||
- **Problema**: "Bata os ovos" antes de "quebre os ovos"
|
||||
- **Solução**: Revisar sequência lógica
|
||||
|
||||
### **2. Instruções Ambíguas**
|
||||
|
||||
- **Problema**: "Adicione um pouco de sal"
|
||||
- **Solução**: Ser específico: "Adicione 1 colher de chá de sal"
|
||||
|
||||
### **3. Loop Infinito**
|
||||
|
||||
- **Problema**: Condição que nunca muda
|
||||
- **Solução**: Garantir que a condição pode se tornar falsa
|
||||
|
||||
### **4. Passo Faltando**
|
||||
|
||||
- **Problema**: Esquecer um passo importante
|
||||
- **Solução**: Testar o algoritmo passo a passo
|
||||
|
||||
## **Dicas para Educadores**
|
||||
|
||||
### **Como Ensinar**
|
||||
|
||||
1. **<i class="fas fa-home"></i> Comece com exemplos familiares**: Receitas, rotinas diárias
|
||||
2. **<i class="fas fa-hands"></i> Use atividades físicas**: Deixe estudantes "serem" o computador
|
||||
3. **<i class="fas fa-bug"></i> Celebre os erros**: Cada erro é uma oportunidade de aprendizado
|
||||
4. **<i class="fas fa-users"></i> Trabalhe em grupos**: Diferentes perspectivas melhoram algoritmos
|
||||
|
||||
### **Observar nos Estudantes**
|
||||
|
||||
- **<i class="fas fa-check"></i>** Conseguem quebrar problema em passos pequenos
|
||||
- **<i class="fas fa-check"></i>** Instruções são claras e específicas
|
||||
- **<i class="fas fa-check"></i>** Testam e melhoram seus algoritmos
|
||||
- **<i class="fas fa-check"></i>** Identificam algoritmos em situações cotidianas
|
||||
|
||||
### **Sinais de Sucesso**
|
||||
|
||||
- Estudantes explicam algoritmos com próprias palavras
|
||||
- Criam algoritmos originais para problemas novos
|
||||
- Identificam e corrigem erros em algoritmos
|
||||
- Otimizam algoritmos para serem mais eficientes
|
||||
|
||||
## **Pensamento Computacional**
|
||||
|
||||
### **Decomposição**
|
||||
|
||||
- Quebrar problemas grandes em partes menores
|
||||
- Cada parte vira um passo do algoritmo
|
||||
|
||||
### **Reconhecimento de Padrões**
|
||||
|
||||
- Identificar passos que se repetem
|
||||
- Usar loops para otimizar
|
||||
|
||||
### **Abstração**
|
||||
|
||||
- Focar no essencial, ignorar detalhes irrelevantes
|
||||
- Criar algoritmos genéricos que funcionam em várias situações
|
||||
|
||||
### **Algoritmos**
|
||||
|
||||
- Criar sequências lógicas eficientes
|
||||
- Otimizar soluções
|
||||
|
||||
## **Objetivos de Aprendizagem**
|
||||
|
||||
Ao final desta seção, estudantes devem conseguir:
|
||||
|
||||
- **<i class="fas fa-check"></i>** Identificar algoritmos em atividades cotidianas
|
||||
- **<i class="fas fa-check"></i>** Criar algoritmos claros e sequenciais
|
||||
- **<i class="fas fa-check"></i>** Testar e melhorar algoritmos através de tentativa e erro
|
||||
- **<i class="fas fa-check"></i>** Aplicar diferentes tipos de algoritmos para diferentes problemas
|
||||
- **<i class="fas fa-check"></i>** Traduzir algoritmos para blocos visuais
|
||||
|
||||
## **Atividades de Fixação**
|
||||
|
||||
### **1. Algoritmo Pessoal**
|
||||
|
||||
Escreva algoritmo para:
|
||||
|
||||
- Escovar os dentes
|
||||
- Fazer seu lanche favorito
|
||||
- Chegar da escola em casa
|
||||
|
||||
### **2. Encontre o Erro**
|
||||
|
||||
Encontre problemas nestes algoritmos:
|
||||
|
||||
- "Faça café: ferva água, adicione açúcar, adicione café"
|
||||
- "Atravesse rua: olhe para direita, atravesse, olhe para esquerda"
|
||||
|
||||
### **3. Desafio de Otimização**
|
||||
|
||||
- Crie algoritmo para encontrar maior número numa lista
|
||||
- Depois tente melhorar para ser mais rápido
|
||||
|
||||
## **Referências e Recursos**
|
||||
|
||||
### **Sites Educativos**
|
||||
|
||||
- [Khan Academy - Algorithms](https://www.khanacademy.org/computing/computer-science/algorithms) - Algoritmos explicados
|
||||
- [CS Unplugged - Algorithms](https://csunplugged.org/en/topics/algorithms/) - Atividades desplugadas
|
||||
- [Algorithm Visualizer](https://algorithm-visualizer.org/) - Visualização de algoritmos
|
||||
|
||||
### **Vídeos Explicativos**
|
||||
|
||||
- [What's an Algorithm?](https://www.youtube.com/watch?v=6hfOvs8pY1k) - Explicação básica
|
||||
- [Sorting Algorithms Visualized](https://www.youtube.com/watch?v=kPRA0W1kECg) - Ordenação visual
|
||||
- [How Search Works](https://www.youtube.com/watch?v=TwMmfi3tkp0) - Algoritmos de busca
|
||||
|
||||
### **Jogos e Simuladores**
|
||||
|
||||
- [Lightbot](http://lightbot.com/) - Programa robô com algoritmos
|
||||
- [CodeCombat](https://codecombat.com/) - RPG que ensina algoritmos
|
||||
- [Sorting Algorithm Animations](https://www.sorting-algorithms.com/) - Visualização interativa
|
||||
|
||||
### **Literatura**
|
||||
|
||||
- Cormen, T. (2009). _Introduction to Algorithms_. MIT Press
|
||||
- Sedgewick, R. (2011). _Algorithms_. Addison-Wesley
|
||||
- Knuth, D. (1997). _The Art of Computer Programming_. Addison-Wesley
|
||||
|
||||
### **Ferramentas de Diagramação**
|
||||
|
||||
- [Draw.io](https://app.diagrams.net/) - Criar fluxogramas online
|
||||
- [Lucidchart](https://www.lucidchart.com/) - Diagramas colaborativos
|
||||
- [Creately](https://creately.com/) - Fluxogramas educacionais
|
||||
|
||||
---
|
||||
|
||||
**<i class="fas fa-arrow-right"></i> Próximo**: Explore [**Variáveis**](./variaveis) para aprender como armazenar e manipular informações nos algoritmos!
|
||||
Reference in New Issue
Block a user