Coding Dojo PHP

Desenvolvimento de Sistemas

Coding Dojo PHP

Praticando lógica de programação em equipe — variáveis, condicionais e laços

Linguagem: PHP Modalidade: Randori Duração: ~2 aulas Nível: Escalonado

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:

OnlineGDB (PHP) Replit 3v4l.org XAMPP (php CLI) — local

Dica: para ler dados do usuário no terminal use readline(). Para imprimir, use echo e PHP_EOL (quebra de linha).

Os Katas

Nível 1 · Aquecimento

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).
Entrada-8
SaídaNegativo
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";
    }
}
Nível 2 · Intermediário

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.
Entrada5
Saída1
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;
}
Nível 3 · Desafio

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.

EntradaEtec2026
SaídaMí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.";
}
Bônus

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

Entrada7
Saída7 é 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:

3,0Participação ativa no rodízio (todos passaram pelo teclado)
3,0Katas 1 e 2 resolvidos e funcionando
2,0Kata 3 resolvido (mesmo que parcialmente)
2,0Colaboração, respeito e raciocínio explicado em voz alta
+1,0Kata Bônus (É Primo?) resolvido

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?

Caderno de TI · Desenvolvimento de Sistemas

Prof. Elton Alex Silva — ETEC Cachoeira Paulista

Comentários

Postagens mais visitadas deste blog

Introdução aos Sistemas de Gerenciamento de Banco de Dados

Introdução ao HTML, CSS e JavaScript - Guia para Iniciantes

Introdução ao Excel