PHP e MySQL

 
 
Parte II - Estruturas de controle
Sumário:
  • Introdução
  • Comando condicionais
    • if
    • switch

 

  • Comando de repetição
    • while
    • do...while
    • for
    • foreach
  • Comandos de desvios
 

Introdução

As estruturas de controle determinam o curso de ações de um programa. Serão estudados os comandos condicionais: if e switch e os comandos de repetição: while, do...while, for e foreach. E ainda as instruções: break e continue, usadas no controle do fluxo interno dos comandos condicionais e repetitivos.

 

Comandos condicionais

Um comando condicional desvia o fluxo de execução normal do programa para um comando ou bloco de comandos alternativo de programa. Os comandos condicionais são o if e o switch.

if

O comando if avalia uma expressão e dependendo do resultado é executado uma ação de um conjunto de alternativas específicas.
Sintaxe do comando if:
if (expr1)
{comandos1;}
elseif (expr2)
{comandos2;}
else
{comandos3;}

A sintaxe acima pode ser lida como segue:

Se expressão1 for verdadeira, faça comando1;
Senão, se expressão2 for verdadeira, faça comandos2;
Senão, faça comandos3;

Exemplo:

<?php
$nota1=6;
$nota2=9;
$nota3=7.5;
$media=($nota1+$nota2+$nota3)/3;
If($media>=9)
$conceito="A";
elseif($media>=7.5)
$conceito="B";
elseif($media>=5)
$conceito="C";
else
$conceito="D";
echo "Média: ".$media." - Conceito: ".$conceito;
?>

Resultado: Média: 7.5 - Conceito: B

O comando if pode ser empregado sem o uso do elseif ou else, veja um exemplo:

<?php
$media=10;
if($media==10) {
echo "Média 10. Conceito A.<br>";
echo "Parabéns!";
}
?>

Resultado:
Média 10. Conceito A.
Parabéns!

Note que o bloco de comandos executado aparece entre chaves por conter mais de uma linha de comandos.

 
 

switch

O switch é semelhante ao if, pois também avalia o valor de uma expressão e compara com os valores de cada caso na estrutura. Quando encontrar a equivalência executa o bloco de comandos correspondente.

Sintaxe do comando switch:

switch (n)
{
case valor1:
comando a ser executado se n=valor1;
break;
case valor2:
comando a ser executado se n=valor2;
break;
default:
comando a ser executado se n for
diferente dos valores anteriores;
}
Exemplo:
<?php
$opcao=0;
switch ($opcao)
{
case 1:
echo "Número 1";
break;
case 2:
echo "Número 2";
break;
case 3:
echo "Número 3";
break;
default:
echo "Número diferente dos acima.";
}
?>

Resultado da execução do script acima: Número diferente dos acima.

Quando uma mesma variável é avaliada com valores diferentes torna-se mais interessante utilizar o comando switch em vez do comando if, para que o código fique melhor estruturado, facilitando sua leitura e compreensão.

 
 

Comandos de repetição

São comandos utilizados para executar um conjunto de ações específicas até que certa condição seja satisfeita. Os seguintes comandos de repetição são verificados: while, do...while, for e foreach.
 
 

while

Repete a execução de comandos enquanto uma dada condição for verdadeira.

Sintaxe:
while (expr) {
comandos;
}
Exemplo:
<?php
$i=0;
while ($i < 10) {
echo "Linha de número $i <br> ";
$i++;
}
?>

Após a execução, o programa acima mostra 10 linhas na tela, de númento 0 até número 9:

Linha de número 0
Linha de número 1
. . .
Linha de número 9

 
 

do...while

Executa comandos enquanto uma condição for verdadeira. As instruções do corpo do laço são executadas pelo menos uma vez.

Sintaxe:
do {
comandos;
} while (expr);

Exemplo:
O programa a seguir calcula e mostra o fatorial do número 5:

<?php
$n=5;
$i = $fat = 1;
do {
$fat *= $i++;
} while ($i <= $n);
echo "O fatorial do número $n é $fat.";
?>

Resultado: O fatorial do número 5 é 120.

O uso de chaves após o comando do e antes do while neste caso não é obrigatório, uma vez que o bloco de comandos contém apenas uma instrução.
Observe que a diferença entre while e do...while é que aquele avalia a condição no início e este, no final, o que significa que a repetição do..while executa o corpo do laço pelo menos uma vez e a repetição while pode não executar nenhuma vez, dependendo da condição.

 
 

for

Repete a execução de comandos enquanto uma dada condição for verdadeira. Pontos a considerar no comando for:
  • deve ser determinada uma variável de controle e os valores inicial e final;
  • tipicamente, este comando é usado quando se sabe o número de iterações a serem executadas.
Sintaxe:
for (inicialização; condição; operador) {
comandos;
}

Efetua a somatória dos primeiros 10 números:

<?php
$soma=0;
for ($i=1; $i<=10; $i++)
$soma+=$i;
echo "A soma dos dez primeiros números é $soma.";
?>

Resultado: A soma dos dez primeiros números é 55.

 
 

foreach

O comando foreach permite percorrer os elementos de um array de modo facilitado. As duas sintaxes básicas para o comando são:

foreach ($nome_vetor as $valor) {
comandos;
}

foreach ($nome_vetor as $chave => $valor) {
comandos;
}

A primeira forma percorre o vetor de nome $nome_vetor e em cada iteração o valor do elemento corrente é atribuído à variável $valor. A segunda forma faz a mesma coisa, só que a chave do elemento atual será atribuído à variável $chave em cada loop. Exemplo:

<?php
$vetor = array(1, 2, 3, 4);
foreach ($vetor as $valor) {
echo $valor.", ";
}
echo "<br>";
$vet = array(1=>"A", 2=>"B", 3=>"C", 4=>"D");
foreach ($vet as $chave => $valor) {
echo "Chave: [$chave] valor => $valor".", " ;
}
?>

Resultado:
1, 2, 3, 4,
Chave: [1] valor => A, Chave: [2] valor => B, Chave: [3] valor => C, Chave: [4] valor => D,

 
 

Comandos de desvios

Os comandos break e continue são usados nas estruturas de repetição while, do...while, for e foreach.
O comando break também pode ser usado nas estruturas if e switch, ele interrompe o andamento do laço em qualquer parte, saindo da estrutura e desviando o fluxo de execução para a primeira instrução após a estrutura em que se encontra.
O comando continue abandona a instância atual, saltando para a próxima avaliação da expressão de controle, sem sair do laço.

Um exemplo do uso do comando break: O programa que segue mostra os valores de um vetor e é encerrado pelo comando break ao encontrar um elemento negativo no vetor ou quando a variável $i atingir o valor 10.

<?php
$vetor = array(1, 2, 3, 4, 5, -1, 6, 7, 8, 9);
$i = 1;
While ($i < 10) {
if ($vetor[$i] < 0)
break;
else
echo $vetor[$i]." ";
$i++;
}
?>

Resultado: 2 3 4 5

Para exemplificar o uso do comando continue o programa que segue avalia o resto da divisão por 2 da variável $i. Se resultar em verdadero, o fluxo de execução salta para a próxima iteração, mostrando na tela apenas os valores pares da sequência:

<?php
echo "Números pares da sequência de 1 a 10:<br>";
for ($i=1; $i<=10; $i++) {
if ($i % 2)
continue;
else
echo "$i ";
}
?>

Resultado:
Números pares da sequência de 1 a 10:
2 4 6 8 10