LABORATÓRIO DE INFORMÁTICAAprender informática
Aprender informática
a jogar.
Desafios curtos, progressivos e alinhados com a idade: hardware, internet, programação, redes, bases de dados, segurança, Git, APIs e arquitetura.
10.º ANO
Missões disponíveis
O progresso é guardado localmente no browser. Não é preciso criar conta para jogar.
GAMIFICAÇÃO
Conquista o laboratório.
Cada missão dá XP. Ao completar jogos desbloqueias medalhas locais sem recolha de dados pessoais.
[{"id":41,"year_level":10,"title":"Tipos & Variáveis Pro","slug":"tipos-variaveis-pro","game_type":"match","description":"Relaciona tipos de dados com valores e utilizações típicas.","icon":"TYPE","difficulty":"intermedio","xp_reward":220,"sort_order":10,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"pairs":[["integer","Número inteiro, como 42"],["float/double","Número com parte decimal"],["boolean","Verdadeiro ou falso"],["string","Texto"],["array/list","Coleção ordenada de valores"]]}},{"id":42,"year_level":10,"title":"Git Command Quest","slug":"git-command-quest","game_type":"quiz","description":"Escolhe o comando Git certo para cada etapa de trabalho.","icon":"GIT","difficulty":"intermedio","xp_reward":240,"sort_order":20,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"questions":[{"q":"Que comando cria normalmente um repositório Git local?","options":["git init","git push","git merge","git log --delete"],"answer":0,"explanation":"git init inicializa o repositório na pasta atual."},{"q":"Que comando prepara alterações para o próximo commit?","options":["git add","git clone --erase","git reset --internet","git serve"],"answer":0,"explanation":"git add coloca alterações no staging area."},{"q":"Um commit deve, idealmente…","options":["Misturar dezenas de alterações sem relação","Representar uma alteração coerente e ter mensagem clara","Ter sempre ficheiros binários","Apagar o histórico anterior"],"answer":1,"explanation":"Commits pequenos e coerentes são mais fáceis de rever, testar e reverter."}]}},{"id":43,"year_level":10,"title":"Pseudocódigo Challenge","slug":"pseudocodigo-challenge","game_type":"sequence","description":"Organiza um algoritmo antes de o implementar numa linguagem.","icon":"PSE","difficulty":"intermedio","xp_reward":230,"sort_order":30,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"prompt":"Ordena um algoritmo que calcula a média de três notas e indica aprovação.","items":["Ler três notas","Calcular (n1+n2+n3)/3","Comparar média com 10","Mostrar média e “Aprovado” ou “Não aprovado”"]}},{"id":44,"year_level":10,"title":"Funções em Par","slug":"funcoes-em-par","game_type":"match","description":"Associa conceitos de funções a exemplos de código e comportamento.","icon":"FUNC","difficulty":"intermedio","xp_reward":250,"sort_order":40,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"pairs":[["Parâmetro","Valor recebido pela função"],["return","Devolve um resultado ao chamador"],["Escopo local","Variável disponível apenas no contexto da função"],["Chamada","Executa/invoca a função"],["Função pura","Mesmo input produz o mesmo output sem efeitos externos"]]}},{"id":45,"year_level":10,"title":"Complexidade Intuitiva","slug":"complexidade-intuitiva","game_type":"quiz","description":"Compara algoritmos e começa a pensar em eficiência.","icon":"O(N)","difficulty":"intermedio","xp_reward":260,"sort_order":50,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"questions":[{"q":"Percorrer uma lista uma vez cresce, em geral, de forma…","options":["Linear O(n)","Constante O(1) sempre","Quadrática O(n²) sempre","Impossível medir"],"answer":0,"explanation":"Um percurso simples tende a crescer proporcionalmente ao número de elementos."},{"q":"Dois ciclos aninhados sobre a mesma lista sugerem frequentemente…","options":["O(n²)","O(1)","O(log n) garantido","O(0)"],"answer":0,"explanation":"Cada elemento pode ser comparado com cada elemento, criando crescimento quadrático."},{"q":"O objetivo de analisar complexidade é…","options":["Perceber como custo cresce com o input","Escolher nomes de variáveis","Mudar a cor do IDE","Eliminar todos os comentários"],"answer":0,"explanation":"Complexidade ajuda a antecipar escalabilidade e trade-offs."}]}},{"id":46,"year_level":10,"title":"Memória Python","slug":"memoria-python","game_type":"memory","description":"Associa construções Python ao seu papel no programa.","icon":"PY","difficulty":"intermedio","xp_reward":280,"sort_order":60,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"pairs":[["def","Define função"],["return","Devolve valor"],["list","Coleção mutável"],["dict","Chave → valor"],["for","Iteração"],["try","Tratamento de exceções"]]}},{"id":47,"year_level":10,"title":"Debug Python","slug":"debug-python","game_type":"debug","description":"Encontra bugs frequentes em pequenos programas Python.","icon":"BUG","difficulty":"intermedio","xp_reward":300,"sort_order":70,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"rounds":[{"title":"Indentação","code":"if idade >= 18:\\nprint(\"Maior\")","question":"Qual é o problema?","options":["print deve estar indentado","if não existe em Python","Falta ponto e vírgula","idade só pode ser string"],"answer":0,"explanation":"Os blocos Python são definidos pela indentação."},{"title":"Off-by-one","code":"for i in range(5):\\n print(i)","question":"Que valores são impressos?","options":["0,1,2,3,4","1,2,3,4,5","0 a 5 inclusive","Apenas 5"],"answer":0,"explanation":"range(5) produz 0 até 4."}]}},{"id":48,"year_level":10,"title":"Terminal Git Inicial","slug":"terminal-git-inicial","game_type":"terminal","description":"Percorre o fluxo básico de um repositório Git num ambiente simulado.","icon":"GIT","difficulty":"intermedio","xp_reward":310,"sort_order":80,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"missions":[{"prompt":"Inicializa um repositório Git.","command":"git init","success":"Repositório Git inicializado no simulador."},{"prompt":"Consulta o estado dos ficheiros.","command":"git status","success":"git status mostra alterações preparadas e não preparadas."},{"prompt":"Adiciona todos os ficheiros à staging area.","command":"git add .","success":"Os ficheiros ficam preparados para o próximo commit."}]}}]