Fala escoteiro. Mamão com açúcar até agora, não é mesmo? No post anterior aprendemos como trabalhar com Arrays e vimos vários exemplos de código. Agora vamos para as temidas Estruturas de Repetição.
Importante: Muita gente tem dificuldade em entender essas estruturas então se você não entender logo de cara, não se assuste, pare, descanse, vá jogar um videogame, e tente novamente mais tarde (quem sabe até no outro dia, com a mente mais fresca). O importante é não desistir.
O que é uma estrutura de repetição?
É uma estrutura que permite que você execute um mesmo trecho de código várias vezes. Um exemplo seria a impressão de uma lista. Não faz sentido a gente manualmente dar echo 100X para imprimir uma lista com 100 itens, seria muito trabalhosos e passível de erro.
Existem diversas estruturas de repetição no PHP, vamos conhece-las.
WHILE
While significa "enquanto", e isso meio que sugere o que ele faz. O while executa um determinado trecho de código enquanto uma condição for verdadeira, quando ela passar a não ser mais verdadeira a estrutura while desvia o fluxo do código.
Veja a imagem abaixo
Essa imagem representa bem o funcionamento básico da estrutura while.
- Iniciamos o programa e definimos uma variável chamada $contador que recebe como valor o número 1;
- Analisamos a seguinte condição: "O valor contido na variável $contador é menor ou igual a 10?" Sim é, porque o valor lá contido é 1, então ele entra no bloco do while;
- Dentro do bloco do while nós temos 2 comandos apenas (poderiam ter mais), são eles: imprima o valor contido na variável $contador e depois atribua um novo valor para essa variável. Esse novo valor é o valor antigo + 1, ou seja, o valor contido em $contador agora é 2 e não mais 1;
- O while vê que não tem mais nada para fazer e reavalia: "O valor contido na variável $contador é menor ou igual a 10?" Sim é, porque o valor lá contido agora é 2, então ele entra no bloco do while novamente e tudo vai se repetindo;
- Perceba que quando o valor de $contador for maior que 10 a condição do bloco while não mais será satisfeita, logo, o programa não mais entrará neste bloco do while;
Vamos ver como esse exemplo ficaria em formato de código PHP:
<?php
$contador = 1;
while ($contador <= 10) {
echo $contador;
$contador = $contador + 1;
}
Perceba que estruturalmente o WHILE é muito parecido com o IF.
- Temos a palavra reservada while;
- Temos em seguida a abertura e fechamento de parênteses (onde serão inseridas as condições booleanas);
- E por fim temos logo depois a abertura e fechamento de chaves (que delimitam o bloco do while, ou seja, onde os comandos que serão repetidos vão ser inseridos).
Sim, mas será que o while só serve para isso? Faz sentido ter todo esse trabalho só para imprimir números na tela? Com certeza não.
Veja esse outro exemplo
<?php
$frutas = ["Manga", "Coco", "Uva", "Caju", "Cajá"];
$contador = 0;
$totalDeFrutas = count($frutas);
while ($contador < $totalDeFrutas) {
echo $frutas[$contador];
echo "\n";
$contador = $contador + 1;
}
Esse código é bem mais complicado do que os outros que vimos até agora, mas vamos analisar linha a linha com calma.
- A primeira coisa que fizemos foi declarar uma variável $frutas e atribuir a ela um Array com 5 frutas (strings). Até aqui nada demais, não é?
- Em seguida declaramos uma outra variável $contador e atribuímos a ela o valor 0;
- Na sequência encontramos algo novo para nós, a função count(). A função count() recebe como parâmetro um array e devolve o tamanho dele ou seja, a quantidade de itens nele inclusos, e nesse caso estamos devolvendo esse valor para a variável $totalDeFrutas;
- Feito isso criamos uma estrutura while e passamos para ela a seguinte condição: Enquanto o valor contido na variável $contador for menor que o valor contido na variável $totalDeFrutas, repita o bloco abaixo.
- Daí, enquanto essa condição estiver sendo satisfeita, o bloco do while será executado e nele temos:
- Imprima o valor contido no índice do array $frutas referente ao valor atual da variável $contador, ou seja, na primeira volta do while o valor será 0, então ele obterá desse array e primeira posição, na segunda volta o valor será atualizado para 1, então ele obterá desse array a segundo posição e assim sucessivamente até não ter mais elementos no array.
- Depois ele imprime uma quebra de linha "\n";
- E por fim ele aumenta em 1 o valor atual da variável $contador.
Como eu sei que é um pouco complicado, vamos para mais um exemplo:
<?php
$frutas = ["Manga", "Coco", "Uva", "Caju", "Cajá"];
$contador = 1;
$totalDeFrutas = 4;
while ($contador < $totalDeFrutas) {
echo $frutas[$contador];
echo "\n";
$contador = $contador + 1;
}
Esse exemplo é praticamente idêntico ao anterior, mas mudamos algumas coisas
- O contador agora não mais inicia em 0, ele está iniciando em 1;
- O total de frutas não mais pega o tamanho do Array, mas sim um valor fixo informado por mim, que é 4;
Com isso, execute e veja o que vai acontecer. Ele vai pegar apenas as frutas Coco, Uva e Caju. Consegue explicar o porquê?
Ufa! Bastante coisa para aprender não é mesmo? Vamos descansar um pouco?
No próximo post falaremos sobre mais algumas estruturas de repetição, enquanto isso pratique bastante o while 👨🎓.
Desafio
Crie um programa que solicite do usuário o total de frutas que ele quer cadastrar. Na sequência use o while para solicitar o nome de cada fruta. Cada fruta informada deve ser cadastrada em uma posição do Array.
Por fim, imprima na tela o nome de todas as frutas cadastradas, cada uma em uma linha
Bons estudos escoteiros!!!