Introdução ao PHP
<p class=\"negrito\">09. Estruturas de Controle</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">As estruturas que veremos a seguir são comuns
para as linguagens de programação imperativas, bastando,
portanto, descrever a sintaxe de cada uma delas, resumindo o funcionamento.</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Blocos</p>
<p align=\"JUSTIFY\">Um bloco consiste de vários comandos agrupados
com o objetivo de relacioná-los com determinado comando ou
função. Em comandos como <font face=\"Courier New\" size=3>if</font>,
<font face=\"Courier New\" size=3>for</font>, <font face=\"Courier New\" size=3>while</font>,
<font face=\"Courier New\" size=3>switch</font> e em declarações
de funções blocos podem ser utilizados para permitir
que um comando faça parte do contexto desejado. Blocos em
PHP são delimitados pelos caracteres "{" e "}".
A utilização dos delimitadores de bloco em uma parte
qualquer do código não relacionada com os comandos
citados ou funções não produzirá efeito
algum, e será tratada normalmente pelo interpretador.</p>
<p align=\"JUSTIFY\">Exemplo:</p>
<p align=\"JUSTIFY\" class=\"mysql\"><?php<br>
if ($x == $y)<br>
comando1;<br>
<br>
comando2;<br>
?> </p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Para que comando2 esteja relacionado ao if é
preciso utilizar um bloco:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if ($x == $y){<br>
comando1;<br>
comando2;<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Comandos de Seleção</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Também chamados de condicionais, os comandos
de seleção permitem executar comandos ou blocos de
comandos com base em testes feitos durante a execução.</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- if</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O mais trivial dos comandos condicionais é
o <span class=\"mysql\">if</span>. Ele testa a condição
e executa o comando indicado se o resultado for <span class=\"mysql\">true</span>
(valor diferente de zero). Ele possui duas sintaxes:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if (expressão)<br>
comando;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">if (expressão):<br>
comando;<br>
. . .<br>
comando;<br>
endif;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Para incluir mais de um comando no <span class=\"mysql\">if</span>
da primeira sintaxe, é preciso utilizar um bloco, demarcado
por chaves. </p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O <span class=\"mysql\">else</span> é um complemento
opcional para o <span class=\"mysql\">if</span>. Se utilizado, o comando
será executado se a expressão retornar o valor <span class=\"mysql\">false</span>
(zero). Suas duas sintaxes são:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if (expressão)<br>
comando;<br>
else<br>
comando;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">if (expressão) :<br>
comando;<br>
. . .<br>
comando;<br>
else :<br>
comando;<br>
. . .<br>
comando;<br>
endif;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">A seguir, temos um exemplo do comando <span class=\"mysql\">if</span>
utilizado com <span class=\"mysql\">else</span>:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if ($a > $b)<br>
$maior = $a;<br>
else<br>
$maior = $b;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O exemplo acima coloca em $maior o maior valor
entre $a e $b</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Em determinadas situações é
necessário fazer mais de um teste, e executar condicionalmente
diversos comandos ou blocos de comandos. Para facilitar o entendimento
de uma estrutura do tipo:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if (expressao1)<br>
comando1;<br>
else<br>
if (expressao2)<br>
comando2;<br>
else<br>
if (expressao3)<br>
comando3;<br>
else<br>
comando4;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">foi criado o comando, também opcional <span class=\"mysql\">elseif</span>.
Ele tem a mesma função de um <span class=\"mysql\">else</span>
e um <span class=\"mysql\">if</span> usados sequencialmente, como
no exemplo acima. Num mesmo <span class=\"mysql\">if</span> podem
ser utilizados diversos <span class=\"mysql\">elseif</span>’s, ficando
essa utilização a critério do programador,
que deve zelar pela legibilidade de seu script.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O comando <span class=\"mysql\">elseif</span> também
pode ser utilizado com dois tipos de sintaxe. Em resumo, a sintaxe
geral do comando <span class=\"mysql\">if</span> fica das seguintes
maneiras:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if (expressao1)<br>
comando;<br>
</span><span class=\"mysql\">[ elseif (expressao2)<br>
</span><span class=\"mysql\">comando; ]<br>
</span><span class=\"mysql\">[ else<br>
</span><span class=\"mysql\">comando; ]</span></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">if (expressao1) :<br>
</span><span class=\"mysql\">comando;<br>
</span><span class=\"mysql\">. . .<br>
</span><span class=\"mysql\">comando;</span><br>
<span class=\"mysql\">[ elseif (expressao2) :<br>
</span><span class=\"mysql\">comando;<br>
</span><span class=\"mysql\">. . .<br>
</span><span class=\"mysql\">comando; ]<br>
</span><span class=\"mysql\">[ else :<br>
</span><span class=\"mysql\">comando;<br>
</span><span class=\"mysql\">. . .<br>
</span><span class=\"mysql\">comando; ]<br>
</span><span class=\"mysql\">endif;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- switch</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O comando <span class=\"mysql\">switch</span> atua
de maneira semelhante a uma série de comandos <span class=\"mysql\">if</span>
na mesma expressão. Frequentemente o programador pode querer
comparar uma variável com diversos valores, e executar um
código diferente a depender de qual valor é igual
ao da variável. Quando isso for necessário, deve-se
usar o comando <span class=\"mysql\">switch</span>. O exemplo seguinte
mostra dois trechos de código que fazem a mesma coisa, sendo
que o primeiro utiliza uma série de <span class=\"mysql\">if</span>’s
e o segundo utiliza <span class=\"mysql\">switch</span>:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if ($i == 0)<br>
print "i é igual a zero";<br>
elseif ($i == 1)<br>
print "i é igual a um";<br>
elseif ($i == 2)<br>
print "i é igual a dois";</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">switch ($i) {<br>
case 0:<br>
print "i é igual a zero";<br>
break;<br>
case 1:<br>
print "i é igual a um";<br>
break;<br>
case 2:<br>
print "i é igual a dois";<br>
break;<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">É importante compreender o funcionamento
do <span class=\"mysql\">switch</span> para não cometer enganos.
O comando <span class=\"mysql\">switch</span> testa linha a linha
os cases encontrados, e a partir do momento que encontra um valor
igual ao da variável testada, passa a executar todos os comandos
seguintes, mesmo os que fazem parte de outro teste, até o
fim do bloco. por isso usa-se o comando <span class=\"mysql\">break</span>,
quebrando o fluxo e fazendo com que o código seja executado
da maneira desejada. Veremos mais sobre o <span class=\"mysql\">break</span>
mais adiante. Veja o exemplo:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
switch ($i) {<br>
case 0:<br>
print "i é igual a zero";<br>
case 1:<br>
print "i é igual a um";<br>
case 2:<br>
print "i é igual a dois";<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">No exemplo acima, se $i for igual a zero, os três
comandos "print" serão executados. Se $i for igual
a 1, os dois últimos "print" serão executados.
O comando só funcionará da maneira desejada se $i
for igual a 2.</p>
<p align=\"JUSTIFY\">Em outras linguagens que implementam o comando
switch, ou similar, os valores a serem testados só podem
ser do tipo inteiro. Em PHP é permitido usar valores do tipo
string como elementos de teste do comando switch. O exemplo abaixo
funciona perfeitamente:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
switch ($s) {<br>
case "casa":<br>
print "A casa é amarela";<br>
case "arvore":<br>
print "a árvore é bonita";<br>
case "lampada":<br>
print "joao apagou a lampada";<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Comandos de Repetição</p>
<p align=\"JUSTIFY\">- while</p>
<p align=\"JUSTIFY\">O <span class=\"mysql\">while</span> é o comando
de repetição (laço) mais simples. Ele testa
uma condição e executa um comando, ou um bloco de
comandos, até que a condição testada seja falsa.
Assim como o <span class=\"mysql\">if</span>, o <span class=\"mysql\">while</span>
também possui duas sintaxes alternativas:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
while (<expressao>)<br>
<comando>;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">while (<expressao>):<br>
<comando>;<br>
. . .<br>
<comando>;<br>
endwhile;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">A expressão só é testada a
cada vez que o bloco de instruções termina, além
do teste inicial. Se o valor da expressão passar a ser <span class=\"mysql\">false</span>
no meio do bloco de instruções, a execução
segue até o final do bloco. Se no teste inicial a condição
for avaliada como <span class=\"mysql\">false</span>, o bloco de comandos
não será executado.</p>
<p align=\"JUSTIFY\">O exemplo a seguir mostra o uso do <span class=\"mysql\">while</span>
para imprimir os números de 1 a 10:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
$i = 1;<br>
while ($i <=10)<br>
print $i++;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- do... while</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O laço <span class=\"mysql\">do..while</span>
funciona de maneira bastante semelhante ao <span class=\"mysql\">while</span>,
com a simples diferença que a expressão é testada
ao final do bloco de comandos. O laço <span class=\"mysql\">do..while</span>
possui apenas uma sintaxe, que é a seguinte:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
do {<br>
<comando><br>
. . .<br>
<comando><br>
} while (<expressao>);<br>
?></span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O exemplo utilizado para ilustrar o uso do <span class=\"mysql\">while</span>
pode ser feito da seguinte maneira utilizando o <span class=\"mysql\">do..
while</span>:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
$i = 0;<br>
do {<br>
print ++$i;<br>
} while ($i < 10);<br>
?></span></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- for</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O tipo de laço mais complexo é o
<span class=\"mysql\">for</span>. Para os que programam em C, C++
ou Java, a assimilação do funcionamento do <span class=\"mysql\">for</span>
é natural. Mas para aqueles que estão acostumados
a linguagens como Pascal, há uma grande mudança para
o uso do <span class=\"mysql\">for</span>. As duas sintaxes permitidas
são:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
for (<inicializacao>;<condicao>;<incremento>)<br>
<comando>;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">for (<inicializacao>;<condicao>;<incremento>)
:<br>
<comando>;<br>
. . .<br>
<comando>;<br>
endfor;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">As três expressões que ficam entre
parênteses têm as seguintes finalidades:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Inicialização: comando ou sequencia
de comandos a serem realizados antes do inicio do laço. Serve
para inicializar variáveis.</p>
<p align=\"JUSTIFY\">Condição: Expressão booleana
que define se os comandos que estão dentro do laço
serão executados ou não. Enquanto a expressão
for verdadeira (valor diferente de zero) os comandos serão
executados.</p>
<p align=\"JUSTIFY\">Incremento: Comando executado ao final de cada
execução do laço.</p>
<p align=\"JUSTIFY\">Um comando <span class=\"mysql\">for</span> funciona
de maneira semelhante a um <span class=\"mysql\">while</span> escrito
da seguinte forma:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
<inicializacao><br>
while (<condicao>) {<br>
comandos<br>
...<br>
<incremento><br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Quebra de fluxo</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- Break</p>
<p align=\"JUSTIFY\">O comando <span class=\"mysql\">break</span> pode
ser utilizado em laços de <span class=\"mysql\">do</span>,
<span class=\"mysql\">for</span> e <span class=\"mysql\">while</span>,
além do uso já visto no comando <span class=\"mysql\">switch</span>.
Ao encontrar um <span class=\"mysql\">break </span>dentro de
um desses laços, o interpretador PHP para imediatamente a
execução do laço, seguindo normalmente o fluxo
do script.</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
while</span><span class=\"mysql\"> ($x > 0) {<br>
...<br>
if ($x == 20) {<br>
echo "erro! x = 20";<br>
break;<br>
...<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">No trecho de código acima, o laço
<span class=\"mysql\">while </span>tem uma condição
para seu término normal ($x <= 0), mas foi utilizado o
break para o caso de um término não previsto no início
do laço. Assim o interpretador seguirá para o comando
seguinte ao laço.</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- Continue</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O comando <span class=\"mysql\">continue </span>também
deve ser utilizado no interior de laços, e funciona de maneira
semelhante ao <span class=\"mysql\">break</span>, com a diferença
que o fluxo ao invés de sair do laço volta para o
início dele. Vejamos o exemplo:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
for ($i = 0; $i < 100; $i++) {<br>
if ($i % 2) continue;<br>
echo " $i ";<br>
}<br>
?></span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O exemplo acima é uma maneira ineficiente
de imprimir os números pares entre 0 e 99. O que o laço
faz é testar se o resto da divisão entre o número
e 2 é 0. Se for diferente de zero (valor lógico <span class=\"mysql\">true</span>)
o interpretador encontrará um <span class=\"mysql\">continue</span>,
que faz com que os comandos seguintes do interior do laço
sejam ignorados, seguindo para a próxima iteração.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">As estruturas que veremos a seguir são comuns
para as linguagens de programação imperativas, bastando,
portanto, descrever a sintaxe de cada uma delas, resumindo o funcionamento.</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Blocos</p>
<p align=\"JUSTIFY\">Um bloco consiste de vários comandos agrupados
com o objetivo de relacioná-los com determinado comando ou
função. Em comandos como <font face=\"Courier New\" size=3>if</font>,
<font face=\"Courier New\" size=3>for</font>, <font face=\"Courier New\" size=3>while</font>,
<font face=\"Courier New\" size=3>switch</font> e em declarações
de funções blocos podem ser utilizados para permitir
que um comando faça parte do contexto desejado. Blocos em
PHP são delimitados pelos caracteres "{" e "}".
A utilização dos delimitadores de bloco em uma parte
qualquer do código não relacionada com os comandos
citados ou funções não produzirá efeito
algum, e será tratada normalmente pelo interpretador.</p>
<p align=\"JUSTIFY\">Exemplo:</p>
<p align=\"JUSTIFY\" class=\"mysql\"><?php<br>
if ($x == $y)<br>
comando1;<br>
<br>
comando2;<br>
?> </p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Para que comando2 esteja relacionado ao if é
preciso utilizar um bloco:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if ($x == $y){<br>
comando1;<br>
comando2;<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Comandos de Seleção</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Também chamados de condicionais, os comandos
de seleção permitem executar comandos ou blocos de
comandos com base em testes feitos durante a execução.</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- if</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O mais trivial dos comandos condicionais é
o <span class=\"mysql\">if</span>. Ele testa a condição
e executa o comando indicado se o resultado for <span class=\"mysql\">true</span>
(valor diferente de zero). Ele possui duas sintaxes:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if (expressão)<br>
comando;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">if (expressão):<br>
comando;<br>
. . .<br>
comando;<br>
endif;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Para incluir mais de um comando no <span class=\"mysql\">if</span>
da primeira sintaxe, é preciso utilizar um bloco, demarcado
por chaves. </p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O <span class=\"mysql\">else</span> é um complemento
opcional para o <span class=\"mysql\">if</span>. Se utilizado, o comando
será executado se a expressão retornar o valor <span class=\"mysql\">false</span>
(zero). Suas duas sintaxes são:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if (expressão)<br>
comando;<br>
else<br>
comando;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">if (expressão) :<br>
comando;<br>
. . .<br>
comando;<br>
else :<br>
comando;<br>
. . .<br>
comando;<br>
endif;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">A seguir, temos um exemplo do comando <span class=\"mysql\">if</span>
utilizado com <span class=\"mysql\">else</span>:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if ($a > $b)<br>
$maior = $a;<br>
else<br>
$maior = $b;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O exemplo acima coloca em $maior o maior valor
entre $a e $b</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Em determinadas situações é
necessário fazer mais de um teste, e executar condicionalmente
diversos comandos ou blocos de comandos. Para facilitar o entendimento
de uma estrutura do tipo:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if (expressao1)<br>
comando1;<br>
else<br>
if (expressao2)<br>
comando2;<br>
else<br>
if (expressao3)<br>
comando3;<br>
else<br>
comando4;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">foi criado o comando, também opcional <span class=\"mysql\">elseif</span>.
Ele tem a mesma função de um <span class=\"mysql\">else</span>
e um <span class=\"mysql\">if</span> usados sequencialmente, como
no exemplo acima. Num mesmo <span class=\"mysql\">if</span> podem
ser utilizados diversos <span class=\"mysql\">elseif</span>’s, ficando
essa utilização a critério do programador,
que deve zelar pela legibilidade de seu script.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O comando <span class=\"mysql\">elseif</span> também
pode ser utilizado com dois tipos de sintaxe. Em resumo, a sintaxe
geral do comando <span class=\"mysql\">if</span> fica das seguintes
maneiras:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if (expressao1)<br>
comando;<br>
</span><span class=\"mysql\">[ elseif (expressao2)<br>
</span><span class=\"mysql\">comando; ]<br>
</span><span class=\"mysql\">[ else<br>
</span><span class=\"mysql\">comando; ]</span></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">if (expressao1) :<br>
</span><span class=\"mysql\">comando;<br>
</span><span class=\"mysql\">. . .<br>
</span><span class=\"mysql\">comando;</span><br>
<span class=\"mysql\">[ elseif (expressao2) :<br>
</span><span class=\"mysql\">comando;<br>
</span><span class=\"mysql\">. . .<br>
</span><span class=\"mysql\">comando; ]<br>
</span><span class=\"mysql\">[ else :<br>
</span><span class=\"mysql\">comando;<br>
</span><span class=\"mysql\">. . .<br>
</span><span class=\"mysql\">comando; ]<br>
</span><span class=\"mysql\">endif;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- switch</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O comando <span class=\"mysql\">switch</span> atua
de maneira semelhante a uma série de comandos <span class=\"mysql\">if</span>
na mesma expressão. Frequentemente o programador pode querer
comparar uma variável com diversos valores, e executar um
código diferente a depender de qual valor é igual
ao da variável. Quando isso for necessário, deve-se
usar o comando <span class=\"mysql\">switch</span>. O exemplo seguinte
mostra dois trechos de código que fazem a mesma coisa, sendo
que o primeiro utiliza uma série de <span class=\"mysql\">if</span>’s
e o segundo utiliza <span class=\"mysql\">switch</span>:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
if ($i == 0)<br>
print "i é igual a zero";<br>
elseif ($i == 1)<br>
print "i é igual a um";<br>
elseif ($i == 2)<br>
print "i é igual a dois";</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">switch ($i) {<br>
case 0:<br>
print "i é igual a zero";<br>
break;<br>
case 1:<br>
print "i é igual a um";<br>
break;<br>
case 2:<br>
print "i é igual a dois";<br>
break;<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">É importante compreender o funcionamento
do <span class=\"mysql\">switch</span> para não cometer enganos.
O comando <span class=\"mysql\">switch</span> testa linha a linha
os cases encontrados, e a partir do momento que encontra um valor
igual ao da variável testada, passa a executar todos os comandos
seguintes, mesmo os que fazem parte de outro teste, até o
fim do bloco. por isso usa-se o comando <span class=\"mysql\">break</span>,
quebrando o fluxo e fazendo com que o código seja executado
da maneira desejada. Veremos mais sobre o <span class=\"mysql\">break</span>
mais adiante. Veja o exemplo:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
switch ($i) {<br>
case 0:<br>
print "i é igual a zero";<br>
case 1:<br>
print "i é igual a um";<br>
case 2:<br>
print "i é igual a dois";<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">No exemplo acima, se $i for igual a zero, os três
comandos "print" serão executados. Se $i for igual
a 1, os dois últimos "print" serão executados.
O comando só funcionará da maneira desejada se $i
for igual a 2.</p>
<p align=\"JUSTIFY\">Em outras linguagens que implementam o comando
switch, ou similar, os valores a serem testados só podem
ser do tipo inteiro. Em PHP é permitido usar valores do tipo
string como elementos de teste do comando switch. O exemplo abaixo
funciona perfeitamente:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
switch ($s) {<br>
case "casa":<br>
print "A casa é amarela";<br>
case "arvore":<br>
print "a árvore é bonita";<br>
case "lampada":<br>
print "joao apagou a lampada";<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Comandos de Repetição</p>
<p align=\"JUSTIFY\">- while</p>
<p align=\"JUSTIFY\">O <span class=\"mysql\">while</span> é o comando
de repetição (laço) mais simples. Ele testa
uma condição e executa um comando, ou um bloco de
comandos, até que a condição testada seja falsa.
Assim como o <span class=\"mysql\">if</span>, o <span class=\"mysql\">while</span>
também possui duas sintaxes alternativas:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
while (<expressao>)<br>
<comando>;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">while (<expressao>):<br>
<comando>;<br>
. . .<br>
<comando>;<br>
endwhile;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">A expressão só é testada a
cada vez que o bloco de instruções termina, além
do teste inicial. Se o valor da expressão passar a ser <span class=\"mysql\">false</span>
no meio do bloco de instruções, a execução
segue até o final do bloco. Se no teste inicial a condição
for avaliada como <span class=\"mysql\">false</span>, o bloco de comandos
não será executado.</p>
<p align=\"JUSTIFY\">O exemplo a seguir mostra o uso do <span class=\"mysql\">while</span>
para imprimir os números de 1 a 10:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
$i = 1;<br>
while ($i <=10)<br>
print $i++;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- do... while</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O laço <span class=\"mysql\">do..while</span>
funciona de maneira bastante semelhante ao <span class=\"mysql\">while</span>,
com a simples diferença que a expressão é testada
ao final do bloco de comandos. O laço <span class=\"mysql\">do..while</span>
possui apenas uma sintaxe, que é a seguinte:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
do {<br>
<comando><br>
. . .<br>
<comando><br>
} while (<expressao>);<br>
?></span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O exemplo utilizado para ilustrar o uso do <span class=\"mysql\">while</span>
pode ser feito da seguinte maneira utilizando o <span class=\"mysql\">do..
while</span>:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
$i = 0;<br>
do {<br>
print ++$i;<br>
} while ($i < 10);<br>
?></span></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- for</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O tipo de laço mais complexo é o
<span class=\"mysql\">for</span>. Para os que programam em C, C++
ou Java, a assimilação do funcionamento do <span class=\"mysql\">for</span>
é natural. Mas para aqueles que estão acostumados
a linguagens como Pascal, há uma grande mudança para
o uso do <span class=\"mysql\">for</span>. As duas sintaxes permitidas
são:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
for (<inicializacao>;<condicao>;<incremento>)<br>
<comando>;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">for (<inicializacao>;<condicao>;<incremento>)
:<br>
<comando>;<br>
. . .<br>
<comando>;<br>
endfor;<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">As três expressões que ficam entre
parênteses têm as seguintes finalidades:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Inicialização: comando ou sequencia
de comandos a serem realizados antes do inicio do laço. Serve
para inicializar variáveis.</p>
<p align=\"JUSTIFY\">Condição: Expressão booleana
que define se os comandos que estão dentro do laço
serão executados ou não. Enquanto a expressão
for verdadeira (valor diferente de zero) os comandos serão
executados.</p>
<p align=\"JUSTIFY\">Incremento: Comando executado ao final de cada
execução do laço.</p>
<p align=\"JUSTIFY\">Um comando <span class=\"mysql\">for</span> funciona
de maneira semelhante a um <span class=\"mysql\">while</span> escrito
da seguinte forma:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
<inicializacao><br>
while (<condicao>) {<br>
comandos<br>
...<br>
<incremento><br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Quebra de fluxo</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- Break</p>
<p align=\"JUSTIFY\">O comando <span class=\"mysql\">break</span> pode
ser utilizado em laços de <span class=\"mysql\">do</span>,
<span class=\"mysql\">for</span> e <span class=\"mysql\">while</span>,
além do uso já visto no comando <span class=\"mysql\">switch</span>.
Ao encontrar um <span class=\"mysql\">break </span>dentro de
um desses laços, o interpretador PHP para imediatamente a
execução do laço, seguindo normalmente o fluxo
do script.</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
while</span><span class=\"mysql\"> ($x > 0) {<br>
...<br>
if ($x == 20) {<br>
echo "erro! x = 20";<br>
break;<br>
...<br>
}<br>
?> </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">No trecho de código acima, o laço
<span class=\"mysql\">while </span>tem uma condição
para seu término normal ($x <= 0), mas foi utilizado o
break para o caso de um término não previsto no início
do laço. Assim o interpretador seguirá para o comando
seguinte ao laço.</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">- Continue</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O comando <span class=\"mysql\">continue </span>também
deve ser utilizado no interior de laços, e funciona de maneira
semelhante ao <span class=\"mysql\">break</span>, com a diferença
que o fluxo ao invés de sair do laço volta para o
início dele. Vejamos o exemplo:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\"><?php<br>
for ($i = 0; $i < 100; $i++) {<br>
if ($i % 2) continue;<br>
echo " $i ";<br>
}<br>
?></span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O exemplo acima é uma maneira ineficiente
de imprimir os números pares entre 0 e 99. O que o laço
faz é testar se o resto da divisão entre o número
e 2 é 0. Se for diferente de zero (valor lógico <span class=\"mysql\">true</span>)
o interpretador encontrará um <span class=\"mysql\">continue</span>,
que faz com que os comandos seguintes do interior do laço
sejam ignorados, seguindo para a próxima iteração.</p>
Alguem descobriu onde baixar esse tutorial???
02/09/2008 8:57am
(~16 anos atrás)
Estou procurando a dias esse arquivos PDF com as imagens, pois não estou encontrando o arquivo completo, quero imprimir isso.
Obriado.
Obriado.
28/06/2007 5:30am
(~17 anos atrás)
Não consigo fazer o download através do link (http://phpbrasil.com/click.php?send=http://www.helo.tato.nom.br/arquivos/apostilaphp_mv.pdf).
01/06/2006 5:22am
(~18 anos atrás)
tentei no passado aprender por apostila,
mais livros ajudar muito ,em especial aquele que envolver o leitor num projeto.
esse tipo de trabalho ou livro são excelente ajuda : mais legal pela iniciativa
25/11/2005 10:32am
(~19 anos atrás)
As imagens não estão aparecendo e tentei acessar o site do autor, mas também não funciona.
Alguém tem disponível para download?
Alguém tem disponível para download?
24/06/2005 7:06pm
(~19 anos atrás)
dizem q a primeira impreção é a q fica,
axei bastante intuitivo.
:)
axei bastante intuitivo.
:)
24/04/2005 11:56pm
(~19 anos atrás)
Galera, quem estiver afim de baixar o tutorial é só acessar o seguinte link
http://www.helo.tato.nom.br/arquivos/apostilaphp_mv.pdf
Té +
http://www.helo.tato.nom.br/arquivos/apostilaphp_mv.pdf
Té +
11/03/2005 7:31pm
(~20 anos atrás)