Como Calcular o Fatorial em PHP Usando Laços (FOR, WHILE e DO WHILE)

O que você vai aprender neste tutorial

  • O que é o Fatorial na matemática e qual a sua lógica.
  • Como criar um algoritmo em PHP para calcular o fatorial de qualquer número.
  • Implementações práticas utilizando os laços WHILE, FOR e o temido DO WHILE.

O que é o Fatorial de um Número?

O fatorial de um número inteiro positivo (representado pelo símbolo !), é o resultado da multiplicação desse número por todos os seus antecessores maiores que zero.

Por exemplo, chamamos fatorial de um número n, representado por n!, o seguinte cálculo matemático:
n! = 1 x 2 x 3 x ... x (n-1) x n

Vamos ver isso na prática, calculando os primeiros fatoriais:

  • 2! = 2 x 1 = 2
  • 3! = 3 x 2 x 1 = 6
  • 4! = 4 x 3 x 2 x 1 = 24
  • 5! = 5 x 4 x 3 x 2 x 1 = 120

A lógica de programação por trás disso é muito simples: se o usuário insere um valor n, basta multiplicarmos 1 por 2, por 3, por 4... até chegar no valor limite n. O fatorial é o produto final de todas essas multiplicações acumuladas.

Script em PHP: Como calcular o Fatorial

Para construir nosso código, precisaremos de algumas variáveis fundamentais. Vamos armazenar em $n o número digitado pelo usuário através do nosso formulário HTML.

O resultado das multiplicações será guardado na variável $fatorial. ⚠️ Atenção: Diferente de somas, onde inicializamos variáveis com 0, na multiplicação precisamos iniciar a variável $fatorial com 1. Se iniciarmos com zero, qualquer multiplicação por zero será zero, e nosso script falharia!

Por fim, usaremos uma variável de controle chamada $count, que começará em 1 e irá até o valor de $n, aumentando de um em um.

1. Cálculo de Fatorial usando o laço WHILE

Nesta abordagem, o laço WHILE (enquanto) verifica a condição antes de executar o bloco. Adicionamos a função intval() para garantir a segurança dos dados recebidos.

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Fatorial com WHILE - PHP Progressivo</title>
</head>
<body>
    <form action="" method="get">
        <label for="number">Fatorial de:</label>
        <input type="number" name="number" id="number" min="0" required />
        <input type="submit" value="Calcular" />
    </form> 

    <?php 
    if (isset($_GET['number'])) {
        $n = intval($_GET['number']);
        $fatorial = 1;
        $count = 1;
        
        while ($count <= $n) {
            $fatorial *= $count; // Equivalente a: $fatorial = $fatorial * $count;
            $count++;
        } 
        
        echo "<h3>O fatorial de $n é: $fatorial</h3>";
    }
    ?>
</body>
</html>

Estude com a Melhor Didática 🚀

Adquira a Apostila PHP Progressivo e tenha o conteúdo do site organizado em PDF. Ideal para quem quer aprender lógica e programação sem distrações.

Baixar Apostila (PDF)

2. Cálculo de Fatorial usando o laço FOR

Muitos programadores preferem usar o laço FOR para este tipo de problema matemático. O motivo? Ele é mais compacto e permite declarar a variável de controle, a condição de parada e o incremento na mesma linha de código.

<?php 
// Assumindo que o formulário HTML já existe acima
if (isset($_GET['number'])) {
    $n = intval($_GET['number']);
    $fatorial = 1;
    
    // O laço FOR agrupa a inicialização, a condição e o incremento
    for ($count = 1; $count <= $n; $count++) {
        $fatorial *= $count;
    }
    
    echo "<h3>O fatorial de $n é: $fatorial</h3>";
}
?>

3. Desafio: Consegue resolver usando DO WHILE?

O laço do while é ligeiramente diferente, pois ele executa o bloco de código pelo menos uma vez antes de verificar a condição. Veja como fica a solução para gerar o nosso fatorial:

<?php 
if (isset($_GET['number'])) {
    $n = intval($_GET['number']);
    $fatorial = 1;
    $count = 1;
    
    // Tratativa especial: se for 0!, o fatorial é 1 e pulamos o laço
    if ($n > 0) {
        do {
            $fatorial *= $count;
            $count++;
        } while ($count <= $n);
    }
    
    echo "<h3>O fatorial de $n (usando Do While) é: $fatorial</h3>";
}
?>

🛠️ Dica de Mestre: Note que, no do while, precisamos fazer uma verificação extra com if ($n > 0). Como o bloco do é executado antes da verificação, se o usuário digitasse 0, o script multiplicaria o fatorial e incrementaria a variável desnecessariamente. Dominar essas pequenas diferenças lógicas é o que separa um iniciante de um programador sênior!

Como Criar a Sequência de Fibonacci em PHP: Passo a Passo com Laços

O que você vai aprender neste tutorial

  • O que é a famosa Sequência de Fibonacci e como ela funciona.
  • Como estruturar a lógica de troca de variáveis (atual, último e penúltimo).
  • Como criar um script PHP moderno usando o laço de repetição for para gerar a série dinamicamente a partir da entrada do usuário.

O que é a Sequência de Fibonacci?

A sequência de Fibonacci é uma sucessão numérica infinita onde os dois primeiros termos são 0 e 1, e cada número subsequente é calculado pela soma dos dois números imediatamente anteriores a ele.

Essa é, sem dúvida, uma das questões de lógica de programação mais cobradas em entrevistas de emprego para desenvolvedores juniores. Entender como construí-la usando laços de repetição (como o laço FOR ou WHILE) é um divisor de águas no seu aprendizado de algoritmos.

Vamos visualizar a formação da série na prática:

  • Termo 1 = 0
  • Termo 2 = 1
  • Termo 3 = 1 + 0 = 1
  • Termo 4 = 1 + 1 = 2
  • Termo 5 = 2 + 1 = 3
  • Termo 6 = 3 + 2 = 5
  • ...e assim por diante.

💡 Curiosidade: A série de Fibonacci não vive apenas nos computadores. Ela possui proporções matemáticas fascinantes que aparecem frequentemente na natureza, desde a disposição das pétalas de uma flor até espirais de galáxias. Vale a leitura na Wikipédia sobre a Sequência de Fibonacci.

Como Fazer a Série de Fibonacci com Laços em PHP

Para transformarmos essa matemática em código PHP, precisamos que o usuário nos diga quantos termos ele quer ver. Inicialmente, sempre exibimos o 0 e o 1. Portanto, o usuário precisa digitar um número maior que 2 para a brincadeira fazer sentido.

A Lógica das Variáveis

Nós vamos utilizar três variáveis fundamentais para fazer o script "lembrar" dos números passados:

  • $atual - Vai armazenar o número atual que está sendo calculado.
  • $ultimo - Armazena o último número gerado pela série.
  • $penultimo - Armazena o número que veio antes do último.

O estado inicial delas, antes do laço começar, será:

$ultimo = 1;
$penultimo = 0;

Dentro do nosso laço, a mágica acontece nesta ordem exata:

  1. Calculamos o próximo número: $atual = $ultimo + $penultimo;
  2. Imprimimos o valor de $atual.
  3. O pulo do gato: Atualizamos as variáveis para a próxima rodada do laço. O antigo $ultimo passa a ser o $penultimo, e o $atual recém-calculado vira o novo $ultimo.

A Lógica está travando sua evolução? 🧠

Se você teve que ler a explicação das variáveis duas vezes, não se preocupe, é normal! A melhor forma de fixar algoritmos como o de Fibonacci é treinando offline, sem distrações. Baixe o Mega Pack Projeto Progressivo e tenha acesso vitalício a centenas de exercícios resolvidos passo a passo em PHP, JS, Python e mais.

Ver o Conteúdo do Mega Pack Completo

Código Completo: Gerador de Fibonacci em PHP

Abaixo, temos o código HTML para o formulário e o script PHP atualizado. Utilizamos a função intval() e o operador ?? para garantir que o código seja seguro e não gere erros no seu servidor moderno.

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Gerador de Fibonacci - PHP Progressivo</title>
</head>
<body>
    <h2>Calculadora da Sequência de Fibonacci</h2>
    <form action="" method="get">
        <label for="number">Exibir até qual termo (maior que 2):</label><br>
        <input type="number" name="number" id="number" min="3" required />
        <input type="submit" value="Calcular" />
    </form> 
    <hr>

    <?php 
    // Verifica se o usuário enviou o número pelo formulário
    if (isset($_GET['number'])) {
        // Captura o valor, garantindo que seja um número inteiro seguro
        $n = intval($_GET['number']);
        
        // Verifica se o número atende ao requisito mínimo
        if ($n > 2) {
            $ultimo = 1;
            $penultimo = 0;
            
            echo "<h3>Os primeiros $n termos são:</h3>";
            // Exibe os dois primeiros termos fixos
            echo "0 <br> 1 <br>";
            
            // O laço começa em 1 e vai até $n - 2 (pois já exibimos 2 termos)
            for ($count = 1; $count <= $n - 2; $count++) {
                
                // Regra de negócio do Fibonacci
                $atual = $ultimo + $penultimo;
                echo $atual . "<br>";
                
                // Atualização de variáveis para a próxima iteração
                $penultimo = $ultimo;
                $ultimo = $atual;
            }
        } else {
            echo "<p style='color:red;'>Por favor, insira um número maior que 2.</p>";
        }
    }
    ?>
</body>
</html>

⚠️ Atenção ao detalhe técnico: Nossa variável de controle do for vai de 1 até $n - 2. Subtraímos dois do total justamente porque já imprimimos o 0 e o 1 manualmente fora do laço. Se não fizéssemos isso, a sequência teria dois números a mais do que o usuário pediu!

Potenciação em PHP: Como calcular potência com Laços e a função pow()

💡 O que você vai aprender:

Como calcular a potência de um número no PHP? Neste tutorial, você verá três formas: a lógica manual com laços de repetição (essencial para treinar o raciocínio), o uso da função nativa pow() e o operador de exponenciação moderno **.

A potenciação é uma operação matemática básica onde multiplicamos uma base por ela mesma tantas vezes quanto indicar o expoente. No PHP, existem diversas formas de realizar esse cálculo, desde o controle total via loops até funções de alto nível.

Como funciona a Potenciação?

Para calcular a potência de um número no PHP de forma direta, usamos a função pow($base, $expoente) ou o operador ** (ex: $base ** $expoente). Mas antes de usar os atalhos, entender a lógica por trás é o que diferencia um digitador de código de um programador real.

Potenciação em PHP: Base e Expoente

Exemplo: 5⁴ significa 5 multiplicado por ele mesmo 4 vezes (5x5x5x5 = 625).

Cálculo de Potência usando Laços (While, Do While e For)

Se você estiver em uma entrevista técnica e pedirem para calcular a potência sem usar funções prontas, você usará os loops. A ideia é começar com um resultado igual a 1 e multiplicá-lo pela base repetidamente.


<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Potenciação Manual no PHP</title>
</head>
<body>
    <form action="" method="get">
        Base: <input type="number" name="base" required /><br><br>
        Expoente: <input type="number" name="expoente" required /><br><br>
        <input type="submit" value="Calcular" />
    </form>

<?php
$base = $_GET['base'] ?? null;
$exp = $_GET['expoente'] ?? null;

if ($base !== null && $exp !== null) {
    // 1. Usando WHILE
    $resultadoWhile = 1;
    $count = 1;
    while($count <= $exp) {
        $resultadoWhile *= $base;
        $count++;
    }
    echo "Resultado com WHILE: $resultadoWhile <br>";

    // 2. Usando FOR (Mais limpo)
    $resultadoFor = 1;
    for($i = 1; $i <= $exp; $i++) {
        $resultadoFor *= $base;
    }
    echo "Resultado com FOR: $resultadoFor <br>";
}
?>
</body>
</html>

Domine a Programação em 2026 🚀

Aprenda PHP, JS, Python, Java, C, C++ e HTML com o material didático mais completo da internet. Do zero ao Full-Stack.

Quero meu Mega Pack!

Métodos Nativos do PHP: pow() e Exponenciação (**)

Embora aprender com laços seja importante para a faculdade ou lógica básica, no dia a dia usamos as ferramentas da linguagem. Se você precisar trabalhar com números decimais (ex: 1.5 elevado a 2.3), os laços manuais ficam muito complexos. É aí que entram as funções nativas:

A função pow()

Antigamente, era a forma padrão. Ela aceita dois parâmetros e retorna o resultado, lidando bem com números do tipo float.


$resultado = pow(5, 2); // Retorna 25

O Operador de Exponenciação (Moderno)

Introduzido no PHP 5.6 e padrão absoluto hoje em dia, o operador ** é muito mais intuitivo e rápido.


$resultado = 5 ** 2; // Retorna 25
$cubo = 2 ** 3;    // Retorna 8

🛠️ Curiosidade: O operador ** tem precedência sobre outros operadores matemáticos, o que significa que ele é calculado antes de somas ou subtrações na maioria dos casos!

⚠️ Atenção: Se você estiver estudando para certificações ou concursos, pratique a lógica com laços. Para projetos reais e freelances, use sempre o operador ** pelo desempenho e clareza.


Como Achar o Maior Número, Soma e Média em PHP (Exercícios Resolvidos)

🚀 O que você vai aprender hoje:

Como encontrar o maior número, a soma e a média em PHP? A lógica consiste em assumir que o primeiro número é o "maior" e compará-lo um a um com os demais. Para a soma, acumulamos os valores e, para a média, dividimos o total pela quantidade de itens.

  • Algoritmo clássico de comparação (If/Else).
  • Cálculo de Média Aritmética no Back-end.
  • Bônus Sênior: Como resolver o mesmo problema em 1 linha usando Arrays e funções modernas.

Fala, dev! Chegou a hora de afiar a lógica de programação. Vamos resolver juntos as questões 07 e 08 da nossa famosa lista de exercícios de laços em PHP.

Desafio 07: Faça um programa que leia 5 números e informe o maior número.

Desafio 08: Faça um programa que leia 5 números e informe a soma e a média dos números.

A Lógica Clássica (Passo a Passo para Iniciantes)

Para descobrirmos qual é o maior número de uma lista sem usar funções prontas, nós usamos uma técnica de "Rei da Colina". Funciona assim:

  1. Nós pegamos o primeiro número e dizemos: "Você é o maior número (o Rei) provisoriamente" ($maior = $n1;).
  2. Depois, olhamos para o segundo número. Ele é maior que o nosso "Rei"? Se for, ele toma a coroa ($maior = $n2;).
  3. Repetimos isso até o quinto número. Quem sobrar na variável $maior no final, é o vencedor absoluto.

Para a Soma e a Média, a matemática é simples e direta: somamos todos e dividimos por 5.

O Código: Resolvendo na Força Bruta

Abaixo está o script completo. Note que adicionamos o operador ?? (Coalescência Nula) para evitar erros caso o usuário acesse a página sem enviar o formulário.


<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Maior, Soma e Média em PHP</title>
</head>
<body>

<h3>Analisador de Números</h3>
<form action="" method="get">
    Número 1: <input type="number" step="any" name="n1" required><br><br>
    Número 2: <input type="number" step="any" name="n2" required><br><br>
    Número 3: <input type="number" step="any" name="n3" required><br><br>
    Número 4: <input type="number" step="any" name="n4" required><br><br>
    Número 5: <input type="number" step="any" name="n5" required><br><br>
    <input type="submit" value="Analisar Dados">
</form>
<hr>

<?php
// Só processa se o formulário for enviado
if (isset($_GET['n1'])) {
    
    // Captura os dados com segurança
    $n1 = (float) $_GET['n1'];
    $n2 = (float) $_GET['n2'];
    $n3 = (float) $_GET['n3'];
    $n4 = (float) $_GET['n4'];
    $n5 = (float) $_GET['n5'];

    // 1. Encontrando o Maior
    $maior = $n1;
    if($n2 > $maior) $maior = $n2;
    if($n3 > $maior) $maior = $n3;
    if($n4 > $maior) $maior = $n4;
    if($n5 > $maior) $maior = $n5;
    
    echo "<strong>O maior número é:</strong> {$maior} <br>";

    // 2. Calculando a Soma
    $soma = $n1 + $n2 + $n3 + $n4 + $n5;
    echo "<strong>A soma total é:</strong> {$soma} <br>";

    // 3. Calculando a Média
    $media = $soma / 5;
    echo "<strong>A média aritmética é:</strong> {$media} <br>";
}
?>

</body>
</html>

Chega de escrever código repetitivo! ⚡

A lógica bruta ensina, mas o mercado exige produtividade. Se você quer dominar as melhores práticas, atalhos profissionais e se tornar um Desenvolvedor Full-Stack respeitado, conheça o nosso Mega Pack com 7 Apostilas.

Inclui: PHP, JavaScript, Python, Java, C, C++ e HTML/CSS.

Quero Dominar Todas as Linguagens 🚀

O Padrão 2026: Resolvendo com Arrays e Funções Nativas

O código acima funciona perfeitamente e é excelente para você treinar a sua lógica manual. Mas, no mundo real corporativo, se um programador Sênior ver você declarando 5 variáveis e fazendo 4 ifs seguidos, ele vai mandar você refatorar.

O PHP possui funções nativas poderosas. Veja como resolveríamos o mesmo problema agrupando os números em um ARRAYS EM PHP:


<?php
// Cria um Array (Lista) com os números recebidos
$numeros = [$n1, $n2, $n3, $n4, $n5];

// max() encontra o maior valor do Array automaticamente
$maior = max($numeros); 

// array_sum() soma todos os itens da lista
$soma = array_sum($numeros); 

// count() conta quantos itens existem, garantindo a média correta
$media = $soma / count($numeros); 

echo "Maior: {$maior} | Soma: {$soma} | Média: {$media}";
?>

Percebeu a diferença? O código ficou muito menor, mais limpo e infinitamente mais fácil de manter. Se amanhã o cliente pedir para analisar 100 números em vez de 5, o segundo código continua exatamente o mesmo, enquanto no primeiro você teria que digitar 99 ifs!


🎓 Valide sua Lógica de Programação!

Mostre para as empresas que você domina a estruturação de algoritmos e o ecossistema PHP. Ao finalizar seus estudos, garanta a sua certificação oficial.

Curso de PHP com certificado online Obter meu certificado!

Laços de Repetição em PHP: Resolvendo o Exercício de Crescimento Populacional

🎯 O que você vai aprender neste exercício:

  • Como usar formulários HTML para enviar dados dinâmicos via GET.
  • A aplicação prática de um Laço de Repetição (While) em cálculos matemáticos contínuos.
  • Prevenção de Bugs: Como validar dados para impedir que seu servidor trave com um Loop Infinito.

Fala, dev! Se você está estudando programação, com certeza já esbarrou em algum desafio de matemática aplicada. Hoje, vamos resolver o famoso Exercício 05 da nossa lista de Laços de Repetição.

A premissa é simples: temos duas cidades (A e B). A cidade A tem uma população menor, mas cresce mais rápido que a cidade B. O usuário vai informar a população e a taxa de crescimento de ambas. Nosso script em PHP precisa calcular em quantos anos a cidade A vai ultrapassar ou igualar a cidade B.

O que são Laços de Repetição no PHP?

Laços de repetição (como while, do...while e for) são estruturas no PHP que permitem executar um bloco de código repetidas vezes enquanto uma condição específica for verdadeira. Neste exercício, o código continuará calculando a nova população ano a ano "enquanto" (while) a população de A for menor que a de B.

Para entender profundamente a teoria antes da prática, recomendo revisar nossa aula sobre LAÇO WHILE E DO-WHILE.

A Lógica do Algoritmo (Evitando desastres)

Antes de sair digitando código, vamos pensar como um Desenvolvedor Sênior. O cálculo base para o fim do primeiro ano é:

  • $A = $A * (1 + $taxa_A_decimal);
  • $B = $B * (1 + $taxa_B_decimal);

Lembrando que o usuário digita a taxa em porcentagem (ex: 3%), então precisamos dividir esse valor por 100 para obter o decimal (0.03) antes de somar.

⚠️ Atenção ao Loop Infinito: Se o usuário disser que a Cidade A cresce a 1% e a Cidade B cresce a 5%, a cidade A nunca vai alcançar a B. Se não validarmos isso, o PHP vai rodar o laço para sempre até derrubar o seu servidor. Nós adicionamos uma trava de segurança no código moderno abaixo para evitar isso!

Apostila Completa PHP Progressivo

Chega de travar na hora de criar a lógica! 🧠

O segredo dos grandes programadores não é decorar comandos, é resolver problemas. Nossa Apostila PHP Progressivo contém dezenas de listas de exercícios resolvidos e explicados passo a passo, exatamente como este. Estude offline, no seu tempo, e construa uma base sólida de lógica.

Baixar a Apostila em PDF agora 📥

O Código Completo (Padrão PHP 8.x)

Abaixo temos a solução atualizada. Diferente de tutoriais antigos, aqui usamos o operador de coalescência nula (??) para capturar os dados do formulário com segurança, sem gerar avisos (warnings) na tela.


<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Cálculo Populacional - Programação Progressiva</title>
</head>
<body>

<h3>Calculadora de Crescimento Populacional</h3>
<form action="" method="get" style="margin-bottom: 20px;">
    <label>População da cidade A:</label><br>
    <input type="number" name="A" required /><br><br>
    
    <label>População da cidade B:</label><br>
    <input type="number" name="B" required /><br><br>
    
    <label>Taxa de crescimento da cidade A (em %):</label><br>
    <input type="number" step="0.01" name="tA" required /><br><br>
    
    <label>Taxa de crescimento da cidade B (em %):</label><br>
    <input type="number" step="0.01" name="tB" required /><br><br>
    
    <input type="submit" value="Calcular" style="padding: 8px 15px; cursor: pointer;" />
</form>

<?php
// Captura os dados com segurança (PHP 7+)
$A = $_GET['A'] ?? null;
$B = $_GET['B'] ?? null;
$tA = $_GET['tA'] ?? null;
$tB = $_GET['tB'] ?? null;

// Só executa se o formulário foi enviado
if ($A !== null && $B !== null && $tA !== null && $tB !== null) {
    
    // VALIDAÇÃO: Evitando o loop infinito e inconsistências
    if ($A >= $B) {
        echo "<p style='color: red;'>A população de A já é maior ou igual a B!</p>";
    } elseif ($tA <= $tB) {
        echo "<p style='color: red;'>Erro Lógico: A taxa de crescimento de A deve ser maior que a de B, senão nunca a alcançará!</p>";
    } elseif ($A < 0 || $B < 0) {
        echo "<p style='color: red;'>Não existem populações negativas!</p>";
    } else {
        $count = 0;
        
        // Converte a porcentagem para decimal
        $tA /= 100;
        $tB /= 100;
        
        echo "<div style='max-height: 200px; overflow-y: auto; background: #eee; padding: 10px; border: 1px solid #ccc;'>";
        
        // O Laço: Enquanto A for menor que B
        while ($A < $B) {
            $A += ($A * $tA);
            $B += ($B * $tB);
            $count++;
            
            // Usamos round() para exibir números inteiros de habitantes
            echo "Ano {$count} - Pop. A: " . round($A) . " | Pop. B: " . round($B) . "<br>";
        }
        
        echo "</div>";
        echo "<h3 style='color: green;'>✔️ Em {$count} anos a população de A ultrapassa/iguala a de B!</h3>";
    }
}
?>

</body>
</html>

Melhorias implementadas nesta versão:

  • Trocamos o do...while antigo por um while clássico, que é mais legível para este tipo de cálculo.
  • Adicionamos uma <div> com barra de rolagem (scroll) para exibir a evolução ano a ano sem quebrar o layout do seu site, caso a conta demore 150 anos.
  • A validação agora barra valores negativos e lógicas que travam o processador.

🔥 Quer mergulhar de cabeça em TODAS as linguagens?
Se você quer aprender não apenas PHP, mas dominar o front-end e back-end por completo, conheça o nosso Mega Pack com 7 Apostilas de Programação (HTML, JS, PHP, C, Java, Python). É o arsenal definitivo do desenvolvedor Full-Stack.

Como Validar Dados em PHP: Guia Prático com Exercícios Resolvidos

🚀 O que você vai aprender hoje:

  • Conceito Real: Por que validar dados é a diferença entre um dev amador e um profissional.
  • Validação Numérica: Como garantir que o usuário insira notas apenas entre 0 e 10.
  • Segurança de Strings: Criando regras para senhas e logins mais seguros.
  • Exercício Prático: Resolução passo a passo de problemas comuns de lógica.

O que é validação de dados em PHP?

A validação de dados em PHP é o processo de verificar se as informações enviadas por um usuário (via formulários ou APIs) atendem aos critérios técnicos e de negócio antes de serem processadas ou salvas. Ela serve para impedir erros de sistema, garantir a integridade do banco de dados e evitar ataques de segurança como XSS e SQL Injection.

Como desenvolvedor, você precisa adotar um mantra: "Nunca confie na entrada do usuário". Se você pede uma nota, alguém vai tentar digitar "onze" ou "-5". Se pede uma data, alguém vai escrever um texto. Validar é colocar "seguranças" na porta da sua aplicação.

Validando Entrada Numérica em PHP: O Desafio da Nota

Muitas pessoas pesquisam no Google: "Como validar se um número está entre 0 e 10 no PHP?". Esse é um exercício clássico de lógica de programação que utiliza OPERADORES LÓGICOS.

O objetivo é simples: o sistema deve pedir a nota e só aceitar se ela for válida. Veja a implementação moderna e limpa:


<?php
// Verificamos se o formulário foi enviado via GET
$nota = $_GET['number'] ?? null;

if ($nota !== null) {
    // A mágica acontece aqui: verificamos o intervalo
    if ($nota < 0 || $nota > 10) {
        echo "<div style='color: red;'>⚠️ Erro: Insira uma nota de 0 até 10!</div>";
    } else {
        echo "<div style='color: green;'>✅ Sucesso: Nota {$nota} inserida no sistema.</div>";
    }
}
?>

<form action="" method="get">
    <label>Insira uma nota (0 a 10):</label><br>
    <input type="number" name="number" required>
    <input type="submit" value="Enviar Nota">
</form>
Apostila PHP Progressivo

Cansado de depender de tutoriais picados? 📚

Validar dados é apenas a ponta do iceberg. Se você quer dominar a lógica do PHP e criar sistemas profissionais, nossa Apostila PHP Progressivo é o seu mapa do tesouro. Estude offline, resolva exercícios exclusivos e acelere sua entrada no mercado de trabalho.

Quero a Apostila Completa em PDF →

Validando Strings: Segurança em Login e Senha

Um erro comum em segurança é permitir que a senha seja igual ao nome de usuário. Hackers usam scripts de "Brute Force" que testam justamente essas combinações óbvias. No PHP, comparamos strings para evitar isso.

🛠️ Curiosidade: No mundo real, além dessa validação, você usaria funções como `password_hash()` para nunca salvar a senha limpa no banco.


<?php
$nome = $_GET['name'] ?? '';
$senha = $_GET['password'] ?? '';

if (!empty($nome) && !empty($senha)) {
    // Verificação de igualdade (Case Sensitive)
    if ($nome === $senha) {
        echo "<b style='color: red;'>❌ Erro: Por segurança, sua senha não pode ser igual ao login!</b>";
    } else {
        echo "<b style='color: green;'>✔️ Cadastro aprovado! Dados validados.</b>";
    }
}
?>

<form action="" method="get">
    Usuário: <input type="text" name="name" required><br>
    Senha: <input type="password" name="password" required><br>
    <input type="submit" value="Criar Conta">
</form>

💡 Dica de Sênior: Validação no Front-end vs Back-end

Muitos iniciantes perguntam: "Se eu já uso o atributo 'required' ou JavaScript para validar, preciso de PHP?". A resposta é SIM! O JavaScript pode ser desativado ou burlado facilmente. A validação em PHP é a sua última e mais importante linha de defesa.

🚀 Desafio Extra: Confirmação de Senha

Agora que você aprendeu o básico, que tal subir de nível? Um dos fluxos mais comuns em sites é pedir o login, a senha e a confirmação da senha.

Exercício: Altere o código acima para incluir um terceiro campo chamado `confirma_senha`. O sistema só deve dar "Sucesso" se:

  1. O login for diferente da senha.
  2. A senha for exatamente igual à confirmação.

Tente resolver sozinho! Se travar, a lógica completa e as variações deste código estão detalhadas na nossa apostila completa.


🎓 Quer validar seus conhecimentos profissionalmente?

Certificado PHP Progressivo

Ao concluir o nosso curso online, você pode solicitar o seu Certificado de Programador PHP. Ideal para turbinar seu LinkedIn e provar para as empresas que você domina a linguagem.

Clique aqui para obter seu Certificado

PHP vale a pena em 2026? Análise realista do mercado

PHP em 2026: A análise real que todo desenvolvedor deveria ler

Você abre o LinkedIn e a "trend" do momento é Node.js, Go ou Rust. No YouTube, sempre tem alguém decretando o fim do PHP. Aí bate aquela dúvida cruel: será que estou investindo tempo em uma tecnologia que está morrendo?

A realidade é bem diferente do hype das redes sociais. Enquanto alguns discutem qual é a linguagem mais "cool", sistemas de faturamento que processam milhões de reais por hora continuam rodando em PHP. Não é questão de paixão, é questão de mercado real e estabilidade.

O que mudou no PHP moderno?

Muita gente critica o PHP baseando-se em versões de 15 anos atrás. O PHP 8.x atual é uma linguagem robusta, com tipagem forte e performance que não deixa a desejar para seus concorrentes no back-end. Criticar o PHP hoje por causa do passado é como dizer que a internet não presta porque a conexão discada caía quando o telefone tocava.

O mercado de 2026 não busca mais aquele "faz-tudo" que mistura HTML com SQL no mesmo arquivo. As empresas buscam desenvolvedores que dominam a engenharia por trás da linguagem.

Código na prática: O padrão de 2026

Veja como estruturamos uma classe moderna. Observe o uso de Strict Types e Constructor Promotion, recursos que trazem segurança e agilidade para o projeto:


<?php
// Garante que os tipos de dados sejam respeitados rigorosamente
declare(strict_types=1);

class GerenciadorDeUsuario {
    // Definição moderna de atributos diretamente no construtor
    public function __construct(
        private string $nome,
        private string $email,
        private bool $isAtivo = true
    ) {}

    public function validarAcesso(): string {
        if (!$this->isAtivo) {
            throw new Exception("Acesso negado: conta inativa.");
        }
        return "Acesso autorizado para: {$this->nome}";
    }
}

// Instanciando com segurança
try {
    $dev = new GerenciadorDeUsuario("Marcos", "contato@dev.com");
    echo $dev->validarAcesso();
} catch (Exception $e) {
    echo $e->getMessage();
}
?>

Este código é o que separa os amadores dos profissionais. É limpo, testável e escalável. Se você aprender a programar seguindo esses padrões, o mercado deixará de ser um desafio e passará a ser uma oportunidade.

Onde o PHP realmente brilha hoje

Se você quer focar sua carreira para ter o melhor retorno, olhe para estes três pilares:

  • Ecosystem Laravel/Symfony: Onde as startups e grandes empresas criam APIs e sistemas SaaS complexos.
  • Sustentação de Sistemas Críticos: O "legado" que ninguém te conta é que esses sistemas pagam os maiores salários porque exigem maturidade técnica.
  • E-commerce de Alta Performance: A base da web comercial ainda depende massivamente de PHP customizado.

Dica de Ouro: Não tente aprender tudo de uma vez. Foque em entender como o PHP gerencia memória, como funciona o Composer e como proteger suas rotas. Isso te coloca no topo da pirâmide salarial.


Material de Estudo Recomendado

Para quem deseja sair do básico e seguir um cronograma didático, o Curso de PHP Progressivo oferece uma trilha completa e gratuita que você pode acessar pelo nosso Sumário Geral.

Além do conteúdo online, muitos alunos preferem ter o material organizado para consulta rápida e estudo sem distrações. Para esses casos, disponibilizamos a Apostila PHP Progressivo em PDF. Você pode conferir os detalhes e como baixar o material completo neste link oficial.


Erros que você deve evitar

Para o Google e para os recrutadores, a qualidade do que você entrega é o que conta. Evite:

  1. Usar extensões de banco de dados obsoletas (sempre use PDO).
  2. Ignorar o tratamento de erros (sempre use Try/Catch).
  3. Escrever código sem comentários lógicos.

Conclusão: Vale a pena?

Sim, o PHP vale a pena em 2026 para quem decide ser um especialista. A linguagem parou de ser "fácil" para se tornar "poderosa". Se você busca uma carreira estável e cheia de desafios reais, o elefante azul ainda é uma das melhores escolhas que você pode fazer.

O próximo passo lógico para evoluir seu aprendizado é entender como integrar esse código com um banco de dados de forma segura. Continue acompanhando nossos posts para dominar o SQL moderno aplicado ao PHP.

Como Resolver o Erro "Headers Already Sent" no PHP (Solução Definitiva)

Como Resolver o Erro "Headers Already Sent" no PHP (Solução Definitiva)

Você escreve o script de login perfeito. Testa a conexão com o banco, valida a senha e, na hora de redirecionar o usuário para o painel com a função header(), a tela cospe o temido aviso: Warning: Cannot modify header information.

É o clássico batismo de fogo de quem trabalha com PHP. Aquele cliente que estava esperando o sistema rodar liso depara com uma tela cheia de caminhos de arquivos. A boa notícia é que a solução é mais simples do que parece, exigindo apenas que você entenda como o servidor empacota as informações.

O que causa esse bloqueio?

O protocolo HTTP funciona como uma encomenda enviada pelos Correios. Os headers (cabeçalhos HTTP) são a etiqueta colada do lado de fora da caixa, contendo as instruções de entrega e redirecionamento. O conteúdo (seu HTML, um echo, ou até um espaço em branco invisível) é o produto que vai lá dentro.

O PHP precisa enviar a etiqueta (headers) antes de enviar o conteúdo. Se você der um echo, ou deixar uma linha em branco fora da tag <?php, o PHP entende que a caixa já pode ser despachada. Tentar usar header("Location: ...") depois disso é tentar alterar o endereço de uma caixa que já está no caminhão de entrega. O servidor barra na hora.

Como resolver no código: O certo e o errado

O erro acontece quase sempre porque algum texto vazou para a tela antes do comando de redirecionamento. Veja o cenário clássico de erro:


<!-- ERRO COMUM: Um espaço em branco ou HTML antes da tag do PHP -->
 
<?php
$usuario = "admin";
if ($usuario == "admin") {
    // Isso vai falhar porque aquela linha vazia lá em cima já enviou o corpo da página!
    header("Location: painel.php");
    exit;
}
?>

Para corrigir, garanta que absolutamente nada seja impresso antes da função header(). A tag <?php deve ser a primeira coisa no topo do seu arquivo, na linha 1, coluna 1.

Caso o seu sistema tenha uma arquitetura complexa e você realmente precise processar conteúdo antes de redirecionar, a salvação é o controle de buffer de saída com ob_start():


<?php
// Inicia o buffer. Tudo o que for impresso fica retido na memória do servidor.
ob_start(); 

echo "Bem-vindo ao sistema. Carregando...";

// Processamento do banco de dados aqui...

if ($login_correto) {
    // Agora o header funciona, pois o "echo" acima ainda não foi despachado para o navegador!
    header("Location: dashboard.php");
    exit;
}

// Libera o conteúdo da memória para a tela se não houver redirecionamento
ob_end_flush(); 
?>

Aviso: Sempre coloque um exit; ou die(); imediatamente após um header("Location: ..."). Isso impede que o resto da página continue sendo processado ocultamente, economizando recursos e evitando falhas de segurança.

Apostila PHP Progressivo

Domine o PHP Offline e Sem Propagandas 🚀

Se você quer dominar a manipulação de sessões, redirecionamentos, arquitetura de código e ter todo o material à mão sem depender da internet, o conteúdo completo está na nossa Apostila PHP Progressivo em PDF. O atalho para não travar mais nesses conceitos fundamentais.

Baixar a Apostila Completa 📥

Lendo o Log: Onde exatamente está o erro?

O PHP te dá a resposta exata de onde você errou, basta ler a mensagem do terminal (ou da tela) com atenção. O erro sempre tem duas partes fundamentais:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/config.php:5) in /var/www/login.php on line 12

  • output started at config.php:5 - Este é o CULPADO. Vá no arquivo config.php, exatamente na linha 5. É lá que existe um espaço, um echo ou um HTML perdido.
  • in login.php on line 12 - Esta é a VÍTIMA. É onde está a sua função header() que falhou porque o arquivo config.php estragou tudo antes.

Onde isso quebra na vida real?

Você vai esbarrar nisso constantemente ao criar Sistemas de Login (onde você checa as credenciais e redireciona para a área restrita), ao forçar Downloads de Arquivos (onde você altera o Content-Type via header), e ao manipular Cookies ou Sessões (session_start() também modifica cabeçalhos e obedece às mesmas regras).

Dica de Ouro do Sênior: O vilão invisível "UTF-8 BOM"

Você olhou o arquivo inteiro. Não tem espaço, não tem enter, não tem echo, e o erro continua. O que está acontecendo?

O seu editor de código (como o Bloco de Notas do Windows ou configurações erradas no VSCode) pode estar salvando o arquivo com a codificação UTF-8 com BOM (Byte Order Mark). O BOM insere 3 bytes invisíveis no mesmíssimo início do arquivo. O PHP lê esses bytes, acha que é conteúdo, e despacha os cabeçalhos. Mude a codificação do seu editor para UTF-8 Sem BOM (ou UTF-8 genérico) e salve novamente. O erro sumirá.

Como evitar dor de cabeça

  • Remova qualquer quebra de linha antes de <?php.
  • Se um arquivo PHP contém apenas código (sem HTML), nunca feche a tag ?> no final. Deixar aberto impede que espaços acidentais no fim do arquivo causem o erro ao ser incluído via require.
  • Use ob_start() no topo do seu projeto (como no `index.php` principal) se a sua arquitetura misturar muita visualização com lógica de controlador.
  • Sempre verifique a codificação UTF-8 sem BOM.

Corrigir bugs rapidamente é o que separa o amador do profissional. Agora que você dominou a lógica do protocolo HTTP e do PHP, avance em seus estudos acessando o Sumário Completo do Curso PHP Progressivo e estude todos os módulos, do básico ao avançado com MySQL.

38 Exercícios de Laços e Loops em PHP (Pratique FOR, WHILE e DO WHILE)

Hora de treinar, pessoal! 🏋️‍♂️

O que vai definir, no fim das contas, se você é um bom desenvolvedor web ou não, é a quantidade de exercícios que você resolve (ou pelo menos tenta resolver).

Revise a teoria antes de começar:

⚠️ Regra de Ouro: Tente muito, tente bastante mesmo. Quebre a cabeça e só depois veja a solução!

Lista de Questões: Laços e Loopings em PHP

  1. Faça um programa que peça uma nota, entre zero e dez. Mostre uma mensagem caso o valor seja inválido e continue pedindo até que o usuário informe um valor válido.
  2. Faça um programa que leia um nome de usuário e a sua senha e não aceite a senha igual ao nome do usuário, mostrando uma mensagem de erro e voltando a pedir as informações.
    🔗 Ver Solução: 01 e 02 - Validando dados em PHP
  3. Faça um programa que leia e valide as seguintes informações:
    1. Nome: maior que 3 caracteres;
    2. Idade: entre 0 e 150;
    3. Salário: maior que zero;
    4. Sexo: 'f' ou 'm';
    5. Estado Civil: 's', 'c', 'v', 'd';
    Dica: Use a função strlen(string) para saber o tamanho de um texto.
  4. Supondo que a população de um país A seja da ordem de 80.000 habitantes com uma taxa anual de crescimento de 3% e que a população de B seja 200.000 habitantes com uma taxa de crescimento de 1.5%. Faça um programa que calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento.
  5. Altere o programa anterior permitindo ao usuário informar as populações e as taxas de crescimento iniciais. Valide a entrada e permita repetir a operação.
    🔗 Ver Solução: 04 e 05 - População de duas cidades
  6. Faça um programa que imprima na tela os números de 1 a 20, um abaixo do outro. Depois modifique o programa para que ele mostre os números um ao lado do outro.
  7. Faça um programa que leia 5 números e informe o maior número.
  8. Faça um programa que leia 5 números e informe a soma e a média dos números.
    🔗 Ver Solução: 07 e 08 - Maior, soma e média
  9. Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50.
  10. Faça um programa que receba dois números inteiros e gere os números inteiros que estão no intervalo compreendido por eles.
  11. Altere o programa anterior para mostrar no final a soma dos números.
  12. Desenvolva um gerador de tabuada, capaz de gerar a tabuada de qualquer número inteiro entre 1 a 10. O usuário deve informar de qual numero ele deseja ver a tabuada. A saída deve ser conforme o exemplo abaixo:
    Tabuada de 5:
    5 X 1 = 5
    5 X 2 = 10
    ...
    5 X 10 = 50
    
    🔗 Ver Solução: Tabuada em PHP
  13. Faça um programa que peça dois números, base e expoente, calcule e mostre o primeiro número elevado ao segundo número. Não utilize a função de potência da linguagem.
    🔗 Ver Solução: Potenciação em PHP
  14. Faça um programa que peça 10 números inteiros, calcule e mostre a quantidade de números pares e a quantidade de números ímpares.
  15. A série de Fibonacci é formada pela sequência 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55... Faça um programa capaz de gerar a série até o n-ésimo termo.
    🔗 Ver Solução: Fibonacci com laços
  16. A série de Fibonacci é formada pela sequência 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55... Faça um programa que gere a série até que o valor seja maior que 500.
  17. Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. Ex.: $5! = 5 \cdot 4 \cdot 3 \cdot 2 \cdot 1 = 120$
    🔗 Ver Solução: Fatorial com laços
  18. Faça um programa que, dado um conjunto de N números, determine o menor valor, o maior valor e a soma dos valores.
  19. Altere o programa anterior para que ele aceite apenas números entre 0 e 1000.
  20. Altere o programa de cálculo do fatorial, permitindo ao usuário calcular o fatorial várias vezes e limitando o fatorial a números inteiros positivos e menores que 16.
  21. Faça um programa que peça um número inteiro e determine se ele é ou não um número primo. Um número primo é aquele que é divisível somente por ele mesmo e por 1.
  22. Altere o programa de cálculo dos números primos, informando, caso o número não seja primo, por quais números ele é divisível.
    🔗 Ver Solução 21 e 22: Números primos em PHP
  23. Faça um programa que mostre todos os primos entre 1 e N sendo N um número inteiro fornecido pelo usuário. O programa deverá mostrar também o número de divisões que ele executou para encontrar os números primos. Serão avaliados o funcionamento, o estilo e o número de testes (divisões) executados.
  24. Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. A saída deve ser conforme o exemplo abaixo:
    Fatorial de: 5
    5! = 5 . 4 . 3 . 2 . 1 = 120
    
  25. O Departamento Estadual de Meteorologia lhe contratou para desenvolver um programa que leia um conjunto indeterminado de temperaturas, e informe ao final a menor e a maior temperaturas informadas, bem como a média das temperaturas.
  26. Os números primos possuem várias aplicações dentro da Computação, por exemplo na Criptografia. Um número primo é aquele que é divisível apenas por um e por ele mesmo. Faça um programa que peça um número inteiro e determine se ele é ou não um número primo.
  27. Encontrar números primos é uma tarefa difícil. Faça um programa que gera uma lista dos números primos existentes entre 1 e um número inteiro informado pelo usuário.
  28. Desenvolva um programa que faça a tabuada de um número qualquer inteiro que será digitado pelo usuário, mas a tabuada não deve necessariamente iniciar em 1 e terminar em 10. O valor inicial e final devem ser informados também pelo usuário, conforme exemplo abaixo:
    Montar a tabuada de: 5
    Começar por: 4
    Terminar em: 7
    
    Vou montar a tabuada de 5 começando em 4 e terminando em 7:
    5 X 4 = 20
    5 X 5 = 25
    5 X 6 = 30
    5 X 7 = 35
    
    Obs: Você deve verificar se o usuário não digitou o final menor que o inicial.
  29. Uma academia deseja fazer um censo entre seus clientes para descobrir o mais alto, o mais baixo, a mais gordo e o mais magro. Faça um programa que pergunte a cada um dos clientes da academia seu código, sua altura e seu peso. O final da digitação de dados deve ser dada quando o usuário digitar 0 (zero) no campo código. Ao encerrar o programa, devem ser informados os códigos e valores do cliente mais alto, do mais baixo, do mais gordo e do mais magro, além da média das alturas e dos pesos.
  30. Um funcionário de uma empresa recebe aumento salarial anualmente. Sabe-se que:
    1. Esse funcionário foi contratado em 1995, com salário inicial de R$ 1.000,00;
    2. Em 1996 recebeu aumento de 1,5% sobre seu salário inicial;
    3. A partir de 1997 (inclusive), os aumentos salariais sempre correspondem ao dobro do percentual do ano anterior.
    Faça um programa que determine o salário atual desse funcionário. Após concluir isto, altere o programa permitindo que o usuário digite o salário inicial.
  31. Faça um programa que leia dez conjuntos de dois valores, o primeiro representando o número do aluno e o segundo representando a sua altura em centímetros. Encontre o aluno mais alto e o mais baixo. Mostre o número do aluno mais alto e o número do aluno mais baixo, junto com suas alturas.
  32. Foi feita uma estatística em cinco cidades brasileiras para coletar dados sobre acidentes de trânsito. Foram obtidos os seguintes dados:
    1. Código da cidade;
    2. Número de veículos de passeio (em 1999);
    3. Número de acidentes de trânsito com vítimas (em 1999).
    Deseja-se saber:
    1. Qual o maior e menor índice de acidentes de trânsito e a que cidade pertence;
    2. Qual a média de veículos nas cinco cidades juntas;
    3. Qual a média de acidentes de trânsito nas cidades com menos de 2.000 veículos de passeio.
  33. Faça um programa que receba o valor de uma dívida e mostre uma tabela com os seguintes dados: valor da dívida, valor dos juros, quantidade de parcelas e valor da parcela.
    Qtd de Parcelas  |  % de Juros sobre o valor inicial
    1                |  0
    3                |  10
    6                |  15
    9                |  20
    12               |  25
    
    Exemplo de saída:
    Valor da Dívida | Valor dos Juros | Qtd de Parcelas | Valor da Parcela
    R$ 1.000,00     | 0               | 1               | R$ 1.000,00
    R$ 1.100,00     | 100             | 3               | R$ 366,00
    R$ 1.150,00     | 150             | 6               | R$ 191,67
    
  34. Faça um programa que leia uma quantidade indeterminada de números positivos e conte quantos deles estão nos seguintes intervalos: [0-25], [26-50], [51-75] e [76-100]. A entrada de dados deverá terminar quando for lido um número negativo.
  35. O cardápio de uma lanchonete é o seguinte:
    Especificação   | Código | Preço
    Cachorro Quente | 100    | R$ 1,20
    Bauru Simples   | 101    | R$ 1,30
    Bauru com ovo   | 102    | R$ 1,50
    Hambúrguer      | 103    | R$ 1,20
    Cheeseburguer   | 104    | R$ 1,30
    Refrigerante    | 105    | R$ 1,00
    
    Faça um programa que leia o código dos itens pedidos e as quantidades desejadas. Calcule e mostre o valor a ser pago por item (preço * quantidade) e o total geral do pedido. Considere que o cliente deve informar quando o pedido deve ser encerrado.
  36. Em uma eleição presidencial existem quatro candidatos. Os votos são informados por meio de código:
    1, 2, 3, 4 - Votos para os respectivos candidatos (monte a tabela, ex: 1-José)
    5 - Voto Nulo
    6 - Voto em Branco
    
    Faça um programa que calcule e mostre: total de votos para cada candidato, total de nulos, total de brancos, e a percentagem de votos nulos e brancos sobre o total. Para finalizar a contagem, digite zero.
  37. Desenvolver um programa para verificar a nota do aluno em uma prova com 10 questões. O programa deve perguntar ao aluno a resposta de cada questão e ao final comparar com o gabarito, calculando o total de acertos e a nota. Após cada aluno, perguntar se outro aluno vai utilizar o sistema. No final, informar: Maior e Menor Acerto, Total de Alunos, Média da Turma.
    Gabarito da Prova:
    01 - A | 02 - B | 03 - C | 04 - D | 05 - E
    06 - E | 07 - D | 08 - C | 09 - B | 10 - A
    
  38. Em uma competição de salto em distância cada atleta tem direito a cinco saltos. O melhor e o pior resultados são eliminados. O resultado fica sendo a média dos três valores restantes. Faça um programa que receba o nome e as cinco distâncias. O programa deve ser encerrado quando não for informado o nome do atleta.
    Atleta: Rodrigo Curvêllo
    Primeiro Salto: 6.5 m
    Segundo Salto: 6.1 m
    ...
    Melhor salto: 6.5 m
    Pior salto: 5.3 m
    Média dos demais saltos: 5.9 m
    
    Resultado final:
    Rodrigo Curvêllo: 5.9 m
    
  39. Em uma competição de ginástica, cada atleta recebe votos de sete jurados. A melhor e a pior nota são eliminadas. Faça um programa que receba o nome do ginasta e as notas, calcule a média e exiba um relatório similar ao do exercício anterior.
  40. Faça um programa que peça um número inteiro positivo e em seguida mostre este número invertido.
    Exemplo:
    12376489 => 98467321
    
  41. Faça um programa que mostre os n termos da Série a seguir e imprima no final a soma da série:

    $S = \frac{1}{1} + \frac{2}{3} + \frac{3}{5} + \frac{4}{7} + \frac{5}{9} + \dots + \frac{n}{m}$
  42. Sendo $H = 1 + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \dots + \frac{1}{N}$, Faça um programa que calcule o valor de H com N termos.
    🔗 Código disponível na Apostila PHP Progressivo
  43. Faça um programa que mostre os n termos da Série a seguir e imprima no final a soma da série:

    $S = \frac{1}{1} + \frac{2}{3} + \frac{3}{5} + \frac{4}{7} + \frac{5}{9} + \dots + \frac{n}{m}$

    🔗 Código disponível na Apostila PHP Progressivo

Como Usar BREAK e CONTINUE no PHP (Pare ou Pule Loops como um Sênior)

🚀 O que você vai aprender nesta aula:

  • O que é o comando BREAK e como usá-lo para evitar processamento inútil.
  • Como o CONTINUE ajuda a pular iterações e limpar seu código de IFs gigantes.
  • A diferença prática (e visual) entre interromper e pular rodadas de um loop.
  • Dica Sênior: Como parar laços aninhados (um dentro do outro) de uma vez só.

Fala, dev! Agora que você já sabe criar laços de repetição (como FOR e WHILE), você ganhou o poder de automatizar tarefas. Mas, como diz o ditado: com grandes poderes, vêm grandes responsabilidades.

E se você precisar parar um laço pela metade porque já encontrou o que procurava? Ou se quiser ignorar um item específico da lista e pular direto para o próximo? É aí que entram os super-heróis do controle de fluxo: break e continue.

Comando break e continue em PHP

O que é o comando BREAK em PHP?

O comando break no PHP serve para encerrar imediatamente a execução de um laço de repetição (WHILE, FOR, FOREACH ou DO WHILE) ou estrutura condicional (SWITCH). Assim que o PHP lê a palavra "break", ele abandona o loop atual na mesma hora e continua executando o resto do programa.

Você já cruzou com ele na aula de SWITCH, mas nos loops ele ganha uma nova dimensão: a de otimização de performance.

Exemplo 1: Otimizando um laço FOR

Imagine que você tem uma lista de 1.000.000 de números e quer encontrar o primeiro número que seja múltiplo de 11 e de 13 ao mesmo tempo. Veja como o break salva o servidor de um colapso:

<?php
for ($count = 1; $count <= 1000000; $count++) {
    // Se for múltiplo de 11 e 13...
    if ($count % 11 == 0 && $count % 13 == 0) {
        echo "Achei! O número é o $count";
        break; // O loop PARA AQUI. Os outros números não serão testados!
    }
}
?>

⚠️ Pense bem: Sem o break, o PHP acharia a resposta no número 143, mas continuaria processando os outros 999.857 números à toa. Isso é o que chamamos de código ineficiente.

Exemplo 2: O Loop Infinito Controlado (WHILE true)

Muitas vezes, não sabemos quantas vezes o loop vai rodar até a condição ser atingida. Nesses casos, criamos um loop que "roda para sempre", mas o encerramos por dentro usando o break.

<?php
$count = 1;

while (true) { // Vai rodar para sempre?
    if ($count % 12 == 0 && $count % 21 == 0) {
        echo "O MMC entre 12 e 21 é: $count";
        break; // ...Não! O break garante a saída.
    }
    $count++;
}
?>
Apostila PHP Progressivo

Tempo é dinheiro. Aprenda do jeito certo. ⏳

Ficar caçando erros de loops infinitos ou tentar juntar pedaços de tutoriais desatualizados atrasa sua carreira. Se você quer economizar meses de estudo, precisa de um método sequencial e lógico.

A Apostila PHP Progressivo entrega exercícios resolvidos que moldam seu raciocínio lógico direto ao ponto.

Acelerar Meu Aprendizado →

O que é o comando CONTINUE em PHP?

O comando continue serve para interromper apenas a iteração (rodada) atual do loop, ignorando todo o código que está abaixo dele e pulando diretamente para a próxima avaliação do laço de repetição. O loop, no entanto, continua vivo.

Sabe aquele momento que você quer filtrar algo indesejado e apenas "passar reto"? É pra isso que ele serve.

Exemplo Prático: O Jogo do PIM

No clássico jogo do PIM, contamos os números, mas quando encontramos um múltiplo de 4, falamos "PIM" no lugar do número.

<?php
for ($count = 1; $count <= 20; $count++) {

    if ($count % 4 == 0) {
        echo "PIM <br>";
        continue; // Ignora o 'echo' lá embaixo e pula pro próximo número
    }

    echo "$count <br>";
}
?>

🛠️ Por que isso é profissional? O continue evita que você crie estruturas de if/else gigantes. Ele atua como uma cláusula de guarda: "Se for múltiplo de 4, imprima PIM, pule a rodada e nem olhe para o resto do código".

🔥 Dica Avançada (Conteúdo Sênior)

Em projetos reais, é comum termos loops dentro de loops (laços aninhados). O que acontece se você der um break; no loop de dentro? Ele só para o de dentro.

Mas o PHP permite que você diga quantos níveis quer quebrar ou pular usando break N; ou continue N;.

<?php
for ($i = 0; $i < 5; $i++) {
    for ($j = 0; $j < 5; $j++) {
        if ($i == 2 && $j == 2) {
            break 2; // Quebra os DOIS loops de uma vez!
        }
    }
}
?>

Isso é programação em alto nível!

Resumo: Qual usar e quando?

  • 🛑 Use BREAK quando: Você encontrou o dado que estava procurando (num banco de dados, num array) ou um erro crítico aconteceu e não faz sentido continuar verificando o resto.
  • ⏭️ Use CONTINUE quando: Você quer descartar itens inválidos ou aplicar regras específicas, mas precisa que o loop continue rodando até o final da fila.

Cuidado com os Erros de Principiante!

  • ⚠️ WHILE sem incremento + CONTINUE: Se você usar um continue dentro de um WHILE antes de incrementar o contador, o contador nunca vai subir e você criará um loop infinito travando a página.
  • ⚠️ Usar Break no lugar errado: Lembrar que ele aborta a missão. Não o use se a intenção for apenas pular um valor.