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.
8.º 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":25,"year_level":8,"title":"JavaScript Logic","slug":"javascript-logic","game_type":"quiz","description":"Prevê resultados de pequenas expressões e condições JavaScript.","icon":"JS","difficulty":"intermedio","xp_reward":180,"sort_order":10,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"questions":[{"q":"Qual é o resultado de 2 + 3 * 4 em JavaScript?","options":["20","14","24","9"],"answer":1,"explanation":"A multiplicação tem prioridade: 3*4=12 e depois 2+12=14."},{"q":"Que valor booleano resulta de 10 > 5 && 2 < 1?","options":["true","false","10","undefined"],"answer":1,"explanation":"A segunda comparação é falsa, por isso true && false resulta em false."},{"q":"Qual estrutura repete código enquanto uma condição for verdadeira?","options":["if","while","const","return"],"answer":1,"explanation":"while executa repetidamente enquanto a condição for true."}]}},{"id":26,"year_level":8,"title":"Rede em Pares","slug":"rede-em-pares","game_type":"match","description":"Relaciona equipamentos e serviços de rede com a respetiva função.","icon":"NET","difficulty":"intermedio","xp_reward":190,"sort_order":20,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"pairs":[["Switch","Liga dispositivos dentro da mesma rede local"],["Router","Encaminha tráfego entre redes"],["DNS","Traduz nomes como andreinfo.pt em endereços IP"],["DHCP","Atribui configurações IP automaticamente"],["Access Point","Fornece acesso Wi‑Fi à rede"]]}},{"id":27,"year_level":8,"title":"SQL: fala com os dados","slug":"sql-dados","game_type":"sequence","description":"Monta mentalmente uma consulta SQL simples pela ordem lógica.","icon":"SQL","difficulty":"intermedio","xp_reward":180,"sort_order":30,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"prompt":"Ordena os elementos para formar a ideia de uma consulta que lista alunos aprovados por nota decrescente.","items":["SELECT nome, nota","FROM alunos","WHERE nota >= 10","ORDER BY nota DESC"]}},{"id":28,"year_level":8,"title":"Array Arena","slug":"array-arena","game_type":"quiz","description":"Treina índices, listas e operações comuns em arrays.","icon":"ARR","difficulty":"intermedio","xp_reward":210,"sort_order":40,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"questions":[{"q":"Num array JavaScript [\"a\",\"b\",\"c\"], qual é o índice de \"a\"?","options":["0","1","2","3"],"answer":0,"explanation":"Em JavaScript, como em muitas linguagens, os índices começam em zero."},{"q":"Que propriedade dá o número de elementos de um array em JavaScript?","options":["size()","length","counted","items"],"answer":1,"explanation":"array.length devolve a quantidade de elementos."},{"q":"Um array é útil quando queremos…","options":["Guardar vários valores relacionados","Substituir o sistema operativo","Criar corrente elétrica","Desligar a rede"],"answer":0,"explanation":"Arrays representam coleções de valores."}]}},{"id":29,"year_level":8,"title":"Pacote na Rede","slug":"pacote-na-rede","game_type":"sequence","description":"Segue uma comunicação web desde o nome do site até à resposta do servidor.","icon":"NET","difficulty":"intermedio","xp_reward":220,"sort_order":50,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"prompt":"Ordena uma versão simplificada do acesso a um site.","items":["Utilizador escreve o endereço","DNS ajuda a obter o endereço IP","Browser estabelece ligação ao servidor","Browser envia pedido HTTP/HTTPS","Servidor devolve a resposta"]}},{"id":30,"year_level":8,"title":"Memória JavaScript","slug":"memoria-javascript","game_type":"memory","description":"Associa sintaxe JavaScript a conceitos de programação.","icon":"JS","difficulty":"intermedio","xp_reward":220,"sort_order":60,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"pairs":[["const","Referência não reatribuída"],["let","Variável reatribuível"],["if","Decisão"],["for","Repetição"],["function","Função"],["array","Coleção ordenada"]]}},{"id":31,"year_level":8,"title":"Debug JavaScript","slug":"debug-javascript","game_type":"debug","description":"Lê código pequeno e encontra bugs de lógica e sintaxe.","icon":"BUG","difficulty":"intermedio","xp_reward":240,"sort_order":70,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"rounds":[{"title":"Comparação impossível","code":"const idade = 15;\\nif (idade > 18 && idade < 10) {\\n console.log(\"OK\");\\n}","question":"Qual é o problema principal?","options":["A condição nunca pode ser verdadeira","Falta HTML","console.log só aceita números","const não existe"],"answer":0,"explanation":"Um número não pode ser simultaneamente maior que 18 e menor que 10."},{"title":"Índice fora da lista","code":"const nomes = [\"Ana\", \"Rui\"];\\nconsole.log(nomes[2]);","question":"Que valor é esperado em JavaScript?","options":["undefined","Ana","Rui","Erro de compilação obrigatório"],"answer":0,"explanation":"Os índices válidos são 0 e 1. nomes[2] não existe."}]}},{"id":32,"year_level":8,"title":"Terminal Dev","slug":"terminal-dev","game_type":"terminal","description":"Treina comandos seguros usados no dia a dia de desenvolvimento.","icon":"CLI","difficulty":"intermedio","xp_reward":250,"sort_order":80,"active":1,"created_at":"2026-08-31 20:47:06","updated_at":"2026-08-31 20:47:06","config":{"missions":[{"prompt":"Mostra a pasta atual em sistemas Unix.","command":"pwd","success":"pwd significa print working directory."},{"prompt":"Lista também ficheiros ocultos em Unix.","command":"ls -la","alt":["ls -al"],"success":"A opção -a inclui ocultos e -l mostra detalhes."},{"prompt":"Cria a pasta src.","command":"mkdir src","success":"Pasta src criada."}]}}]