PHP

Em por

No artigo de hoje daremos continuidade ao artigo “Php para iniciantes parte 2”, na qual abordaremos estrutura de controle aninhada, looping agora com o for, estrutura de decisão utilizando switch case e operador ternário.

php para iniciantes

O loop For, as Estruturas de Controle Aninhadas, o Break e o Continue no PHP

Existe uma possibilidade de facilitar o uso de contadores finitos, sem utilizarmos o uso do while e do do while.

Sabemos que com o while e o do while podemos resolver este problema facilmente, no entanto agora vamos ver uma abordagem diferente com o uso do looping for.

O looping For no PHP

O for é uma estrutura de controle responsável pela realização de loopings no PHP.

O comando for aceita três expressões na sua declaração sendo elas:

  • Expressão que é avaliada apenas uma vez na primeira iteração, volta do looping. Geralmente a utilizamos para iniciar a nossa variável de controle, contador, como por exemplo $i = 1.
  • Expressão que é avaliada no início de cada iteração do looping, e caso retorne falso, o looping for será encerrado. A segunda expressão como você pode ver, pode ser considerada a condicional do nosso looping, assim como tínhamos no while e no do while.
  • Um exemplo seria $i <= 100.
  • Expressão que é avaliada no final de cada iteração do looping, normalmente utilizada para alterar o valor da variável de controle. Como por exemplo, utilizar o operador de incremento $i++.

Agora vejamos como seria a representação em PHP da nossa estrutura de controle for para resolvermos o problema:

 <?php $mensagem = 'Estou aprendendo loopings com Gigasystems’; for( $i = 1; $i <= 100; $i++ ){ echo .$mensagem . '<br />’; } ?>

Como você pode observar diferentemente do while e do-while não necessitamos incrementar o contador dentro do nosso looping pois isto já fica implícito na própria declaração do for.

Obs: E atente-se para o detalhe que o separador de instruções, expressões, no for é o ;(ponto e vírgula).

Em relação à estrutura de controle for:

  • Declara-se 3 expressões no início do for
    • Sendo a 1ª expressão avaliada apenas uma vez. Normalmente utilizada para criação da variável de controle.
    • 2ª expressão é avaliada no início de cada iteração, caso esta expressão retorne falso o looping é encerrado. Podendo ser considerada a condicional do for.
    • 3ª Expressão é avaliada no final de cada iteração, normalmente utilizada para alterar o valor da variável de controle.
  • Separa-se as expressões utilizando o ;(ponto e vírgula).
  • O looping é executado enquanto a condição da 2ª expressão for verdadeira (True)
  • Quando a condição da 2ª expressão for avaliada como falsa (False) o processamento da rotina é desviado para fora do looping
  • O bloco de código referente ao looping deve ser delimitado por chaves {}
  • Endente o código referente ao bloco em 4 espaços por questões de legibilidade, a como configurar o seu editor de texto para transformar Tabs em espaços
  • Utilizamos um contador para o looping não ficar um looping infinito, este declarado na 1ª expressão
  • Não se esqueça de alterar o valor do contador, na 3ª expressão, para não cairmos em um looping infinito.

Estruturas de controle aninhadas

Antes de continuarmos com as estruturas de controle break e continue, devemos saber um conceito importante às estruturas de controle aninhadas.

Também conhecido como desvio condicional encadeado, as estruturas de controle aninhadas são utilizadas em casos em que é necessário estabelecer verificações de condições sucessivas, ou seja, condições dentro de condições. Este tipo de estrutura pode possuir diversos níveis de condições aninhadas.

Veja um exemplo dessa estrutura:

 <?php $premiado = 77; if( $premiado < 100 ){ for( $i = 1; $i <= 100; $i++ ){ if( $i == $premiado ){ echo '<strong>' . $i . ' é o número premiado ' . '</strong><br />' . PHP_EOL; } else { if ( $i % 2 == 0 ){ echo $i . ' é par ' . '<br />' . PHP_EOL; } else { echo $i . ' é impar ' . '<br />' . PHP_EOL; } } } } else { echo 'O número deve ser menor que 100'; } ?>

Como você deve ter imaginado, apenas aninhamos toda a nossa estrutura anterior em uma condicional, ou seja, antes de iniciar o looping para dizer qual o premiado, primeiro verificamos se o $premiado que foi passado é menor que 100, se for, iniciamos o mesmo processo anterior, se não, retornamos uma mensagem dizendo que o número deve ser menor que 100.

Em relação às estruturas de controle aninhadas:

  • Podem ser aninhadas as estruturas de controle como também os laços de repetições, loopings.
  • Não a limite de condições que podemos aninhar.
  • No entanto o bom senso conta, não crie um aninhamento de, por exemplo, 10 níveis, que serão difíceis de entender quando for ver o código novamente.
  • Se as estruturas aninhadas estiverem com uma grande quantidade de níveis, tente rever sua lógica.
  • Indente o código referente ao bloco, em 4 espaços, por questões de legibilidade.
  • Cada estrutura aninhada também deve ser indentada em 4 espaços, onde a sua estrutura pai terminou, veja nos exemplos anteriores.

Break

A instrução break é utilizada para encerrar a execução dos comandos for, foreach. Permitindo que encerremos a instrução a qualquer momento que desejarmos, sendo assim, pode avaliar uma expressão e de acordo com o seu resultado encerrar a instrução.

Veja um exemplo de sua utilização:

 <?php for( $i = 1; $i <= 100; $i++ ){ echo '<br />' . $i . '<br />' . PHP_EOL; echo 'Contando...'; for( $j = $i + 1; $j <= $i + 5; $j++ ){ if( $j != $i + 5 ){ echo $j . ', '; } else { echo $j; } if($j == 7){ break; } } } ?>

Continue

Bastante parecido com o break, à instrução continue permite que a execução do looping seja alterada, no entanto não encerramos o looping, apenas encerramos a iteração, volta do looping, atual e iniciamos a próxima.

Veja um exemplo de sua utilização:

 <?php for( $i = 1; $i <= 100; $i++ ){ echo '<br />' . $i . '<br />' . PHP_EOL; echo 'Contando...'; for( $j = $i + 1; $j <= $i + 5; $j++ ){ if( $j == 7 ){ continue 2; } if( $j != $i + 5 ){ echo $j . ', '; }else{ echo $j; } } } ?>

O Switch e o operador Ternário no PHP

O switch funciona como uma série de if juntos no entanto o switch trabalha basicamente com o operador de igualdade. Então em casos que devemos testar se nossa variável, ou expressão, é igual a uma série de valores, o switch é uma boa saída.

Vamos agora ver um problema para entendermos melhor o switch.

Problema

Em um programa de televisão o expectador deve escolher números de 1 a 5 para um sorteio de prêmios, em que cada número representa um prêmio. Então faremos:

  • Ler a entrada, o número que o expectador escolheu.
  • De acordo com o número que o expectador escolheu retornar um prêmio.
  • Se escolher um número que não seja de 1 a 5 retornar uma mensagem de erro.

Ao utilizarmos o switch informamos a variável ou expressão que será testada em cada uma das cláusulas (case) até que seja encontrada uma cláusula em que seja verdadeira. Quando isto ocorre, às instruções dentro do bloco de código da estrutura case é executado até encontrar a instrução break, falaremos mais sobre break quando chegarmos aos loops no PHP, se nenhuma cláusula for verdadeira a instrução default será executada.

 <?php //Entrada do número do expectador $numero = 3; switch ( $numero ){ case 1: $mensagem = 'uma bicicleta'; break; case 2: $mensagem = '20 mil reais em barras de ouro'; break; case 3: $mensagem = 'uma casa'; break; case 4: $mensagem = 'um conjunto de panelas'; break; case 5: $mensagem = 'um carro zero'; break; default: $mensagem = 'nada, infelizmente'; } //Retornando a mensagem echo "Parabéns o seu prêmio foi: {$mensagem}"; ?>

Agora que sabemos o porquê do break, podemos o aproveitar de uma maneira, por exemplo, se em nosso problema caso a pessoa escolhesse 2 ou 3 o prêmio seria o mesmo. Poderíamos apenas mudar o valor da variável mensagem para eles ficarem iguais, no entanto estaríamos nos repetindo, o que não é legal, pois sempre que tivéssemos que alterar em um, teríamos que se lembrar de alterar no outro por isso, o melhor mesmo é fazer da seguinte forma:

 <?php /** * Entrada do número do expectador */ $numero = 2; switch ( $numero ){ case 1: $mensagem = 'uma bicicleta'; break; case 2: case 3: $mensagem = 'uma casa'; break; case 4: $mensagem = 'um conjunto de panelas'; break; case 5: $mensagem = 'um carro zero'; break; default: $mensagem = 'nada, infelizmente'; } /** * Retornando a mensagem */ echo "Parabéns o seu prêmio foi: {$mensagem}" ; ?>

Como o valor que seria mantido era o da cláusula 3, apenas retiramos as instruções da 2 e não colocamos break na cláusula 2, sendo assim ela seria a mesma que a 3, esta sim tendo a instrução break como as demais.

Em relação a estrutura de controle switch:

  • A variável ou expressão a ser avaliada é declarada no início do switch.
  • Expressões são realizadas por operadores lógicos e operadores de comparação.
  • O bloco de código referente a estrutura de controle deve ser delimitado por chaves {}.
  • Endente o código referente ao bloco em 4 espaços por questões de legibilidade, a como configurar o seu editor de texto para transformar Tabs em espaços.
  • Cada cláusula (case) possui um valor a ser comparado e logo após o valor são adicionados 2 pontos (:) dando início a clausula.
  • Após os 2 pontos o bloco de código que deverá ser executado para aquela cláusula.
  • Finalizamos a cláusula com o break.
  • Caso tenhamos 2 ou mais valores que executarão o mesmo bloco de código não definimos o break apenas no ultimo em que for inserido o bloco de código, ver o exemplo anterior.
  • Após todas as cláusulas podemos adicionar uma cláusula default que será executada caso todas as outras não tenham sido verdadeiras.
  • A cláusula default não necessita de break, afinal ela é inserida após todas as outras.

Operador Ternário

O operador ternário basicamente é uma forma de escrever uma instrução if e else em uma única linha. Para utilizamos o operador ternário utilizamos o símbolo ? (interrogação) e o : (dois pontos) e finalizando com ; (ponto e vírgula).

Um exemplo bem simples apenas para ilustrar, afinal if e else já aprendemos. Agora o mesmo código poderia ser transcrito com o operador ternário:

 <?php $resultado = 7.5; echo $resultado > 7 ? 'Aprovado' : 'Reprovado'; ?>

Resolvemos o mesmo problema em apenas uma linha. O que vem seguido do ? representa o if enquanto o : representa o else.

Não utilize o operador ternário para substituir sempre as estruturas if e else. O operador ternário deve ser utilizado quando o retorno e a lógica implementada for algo pequeno. Por isso cabe ao desenvolvedor analisar se vale a pena substituir uma instrução if e else por um operador ternário ou vice e versa. Pense na legibilidade, pois seu código pode ser lido futuramente por outra pessoa na situação o que seria mais fácil de ler?

Em relação ao operador ternário:

  • Equivale a um if e else. No entanto seu uso deve ser ponderado como pode ser lido anteriormente.
  • A expressão a ser avaliada é declarada no início do operador.
  • O ? inicia o bloco que pode ser lido como o if.
  • O : inicia o bloco que pode ser lido como else.
  • O valor retornado pode ser atribuído a uma variável.

Hoje aprendemos mais algumas noções básicas sobre a programação PHP, laços, estuturas de decisão, fiquem ligados nos próximos artigos, e dúvidas, críticas ou sugestões comentem abaixo. laugh

Veja Também:

Artigos Relacionados a categoria: PHP

Olá, deixe seu comentário para PHP para iniciantes (parte 3)

Enviando Comentário Fechar :/

...AINDA NÃO VIU NOSSO PORTFÓLIO?

Se ainda não viu nosso Portfólio e quer conhecer um pouco mais... aproveite e veja agora mesmo e tenha um site de qualidade para o seu negócio!

[contato]
Ver o Portfólio Agora