Coding Dojo PHP
Coding Dojo PHP
Praticando lógica de programação em equipe — variáveis, condicionais e laços
O que é um Coding Dojo?
Um Coding Dojo é um encontro de prática de programação onde o grupo resolve um desafio (chamado de kata) colaborativamente, em voz alta, em pequenos passos. O objetivo não é competir nem terminar primeiro: é aprender juntos, errar sem medo e discutir o raciocínio por trás de cada linha de código.
Nesta atividade usaremos o formato Randori, em que todos passam pelo teclado por rodízio. Ninguém programa sozinho — e ninguém fica de fora.
Como funciona o Randori
Piloto
Quem está no teclado. Só digita o que o grupo combinou — não decide sozinho.
Co-piloto
Senta ao lado do piloto, conduz o raciocínio e traduz as ideias do grupo.
Plateia
Observa, anota dúvidas e sugere ideias — sempre de forma respeitosa.
Rodízio
A cada 5–7 min: o piloto sai, o co-piloto vira piloto e alguém da plateia entra.
Regras de ouro
- Baby steps: avance em pequenos passos, testando a cada mudança.
- Código sempre funcionando antes de trocar de piloto.
- Pense em voz alta: explique o que está fazendo enquanto digita.
- Respeito sempre: nada de "isso está errado", e sim "que tal tentarmos assim?".
- Plateia em silêncio enquanto o desafio não roda — depois, todos discutem.
Onde executar o código
Não precisa instalar nada. Escolham um ambiente online e programem direto no navegador:
Dica: para ler dados do usuário no terminal use readline(). Para imprimir, use echo e PHP_EOL (quebra de linha).
Os Katas
Kata 1 — Classificador de Números
Conceitos: variáveis, leitura de dados e estrutura se / senão.
Leia um número inteiro digitado pelo usuário e informe:
- se ele é positivo, negativo ou zero;
- se ele é par ou ímpar (quando for diferente de zero).
-8Negativo
Par- Use
(int) readline("...")para ler o número como inteiro. - Para par/ímpar, lembre do operador módulo
%(resto da divisão). - Um número é par quando
$n % 2 == 0.
<?php $numero = (int) readline("Digite um número inteiro: "); if ($numero > 0) { echo "Positivo"; } elseif ($numero < 0) { echo "Negativo"; } else { echo "Zero"; } echo PHP_EOL; if ($numero != 0) { if ($numero % 2 == 0) { echo "Par"; } else { echo "Ímpar"; } }
Kata 2 — FizzBuzz
Conceitos: laço para (for), condicionais encadeadas e operador módulo.
Leia um número N e imprima todos os valores de 1 até N, um por linha, seguindo as regras:
- múltiplo de 3 → escreva
Fizz; - múltiplo de 5 → escreva
Buzz; - múltiplo de 3 e 5 → escreva
FizzBuzz; - caso contrário → escreva o próprio número.
51
2
Fizz
4
Buzz- Cuidado com a ordem dos testes: verifique
FizzBuzz(múltiplo de 15) antes dos outros. - Múltiplo de 3 e de 5 é o mesmo que múltiplo de 15.
- Use
echo PHP_EOL;para pular de linha a cada repetição.
<?php $n = (int) readline("Até qual número? "); for ($i = 1; $i <= $n; $i++) { if ($i % 15 == 0) { echo "FizzBuzz"; } elseif ($i % 3 == 0) { echo "Fizz"; } elseif ($i % 5 == 0) { echo "Buzz"; } else { echo $i; } echo PHP_EOL; }
Kata 3 — Validador de Senha
Conceitos: variáveis de controle (flags), laço percorrendo uma string e várias condições combinadas.
Leia uma senha digitada pelo usuário e verifique cada critério, mostrando OK ou FALHOU:
- ter no mínimo 8 caracteres;
- conter ao menos uma letra maiúscula;
- conter ao menos um número.
Ao final, informe se a senha é FORTE (todos os critérios atendidos) ou fraca.
Etec2026Mínimo 8 caracteres: OK
Letra maiúscula: OK
Número: OK
Senha FORTE!- Crie variáveis booleanas iniciando em
false(ex.:$temMaiuscula). - Use
strlen($senha)para o tamanho e percorra caractere a caractere com um laço. - Acesse uma letra pela posição:
$senha[$i]. Compare faixas:$c >= 'A' && $c <= 'Z'. - O operador
&&(E) verifica se todas as condições são verdadeiras.
<?php $senha = readline("Digite uma senha: "); $tamanhoOk = strlen($senha) >= 8; $temMaiuscula = false; $temNumero = false; for ($i = 0; $i < strlen($senha); $i++) { $c = $senha[$i]; if ($c >= 'A' && $c <= 'Z') { $temMaiuscula = true; } if ($c >= '0' && $c <= '9') { $temNumero = true; } } echo "Mínimo 8 caracteres: " . ($tamanhoOk ? "OK" : "FALHOU") . PHP_EOL; echo "Letra maiúscula: " . ($temMaiuscula ? "OK" : "FALHOU") . PHP_EOL; echo "Número: " . ($temNumero ? "OK" : "FALHOU") . PHP_EOL; if ($tamanhoOk && $temMaiuscula && $temNumero) { echo "Senha FORTE!"; } else { echo "Senha fraca. Tente novamente."; }
Kata Extra — É Primo?
Conceitos: laço, contador e raciocínio lógico. Para quem terminar antes!
Leia um número e descubra se ele é primo (divisível apenas por 1 e por ele mesmo).
77 é primo- Conte quantos divisores o número tem de 1 até ele mesmo. Se tiver exatamente 2, é primo.
- Atenção aos casos especiais: 0 e 1 não são primos.
Como será avaliado
A avaliação valoriza o processo tanto quanto o resultado:
Retrospectiva do Dojo
Ao final, reservem 5 minutos para conversar em grupo:
- O que aprendemos hoje que não sabíamos antes?
- Qual foi a parte mais difícil — e como a resolvemos juntos?
- O que faríamos diferente no próximo dojo?
Comentários
Postar um comentário
Ficou com alguma dúvida? Quer compartilhar sua experiência? Tem uma sugestão de
melhoria? Seu comentário é muito importante!