44
Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE Linguagem de Programação III Estruturas de Controle em PHP

Estruturas de Controle em PHP - lederer.com.br · Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE Estruturas de Controle em PHP - Comandos condicionais -

Embed Size (px)

Citation preview

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Linguagem de Programação III

Estruturas de Controle em PHP

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Estruturas de Controle em PHP

- Comandos condicionais- if- switch

- Comandos de repetição- while- do...while- for- foreach

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Estruturas de Controle em PHP

- Controle de fluxo de repetições- break- continue

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando condicional if

<?php

if (expressao1) { bloco1 };

elseif (expressao2) { bloco2 }; else { bloco3 };

?>

Uso do if com { }

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando condicional if<?php

$prova1 = 7; $prova2 = 5;

$nota = ($prova1+$prova2) / 2;

if ($nota<3) $desempenho = "PÉSSIMO"; elseif ($nota<5) $desempenho = "RUIM"; elseif ($nota<7) $desempenho = "MÉDIO"; elseif ($nota<9) $desempenho = "BOM"; else $desempenho = "EXCELENTE";

echo "O seu desempenho foi $desempenho";

?>

Uso do if sem { }

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando condicional if<?php

$prova1 = 7; $prova2 = 5;

$nota = ($prova1+$prova2) / 2;

if ($nota<3) $desempenho = "PÉSSIMO"; elseif ($nota<5) $desempenho = "RUIM"; elseif ($nota<7) $desempenho = "MÉDIO"; elseif ($nota<9) $desempenho = "BOM"; else $desempenho = "EXCELENTE";

echo "O seu desempenho foi $desempenho";

?>

$desempenho= ????

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando condicional if

<?php

if ($nota == 10) { echo "Parabéns! <br>"; echo "Você tirou a nota máxima!"; }

?>

if sem else

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando condicional if

<?php

if (expressao1): bloco1

elseif (expressao2):bloco2

else:bloco3

endif;

?>

Uso do endif

- não é necessário o uso de { }

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando condicional switch

<?phpswitch (operador){

case valor1:<comandos>break;

case valor1:<comandos>break;

?>

- observe o uso do break- sem ele, o PHP continuaria avaliando as demais expressões

- mesmo uso do case- deixa o código mais limpo e organizado

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comparação do if com o switch

<?php

if ($numero == 0) {echo “número vale 0”;

}elseif ($numero == 1) { echo “número vale 1”;}elseif ($numero == 2) { echo “número vale 2”;}

?>

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comparação do if com o switch

<?php

switch ($numero){ case 0: echo "número vale 0"; break; case 1: echo "número vale 1"; break; case 2: echo "número vale 2"; break;}

?>

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Uso do switch com default<?php// $opcao = "s";switch ($opcao){ case 's': echo "Você escolheu a opção SIM"; break; case 'n': echo " Você escolheu a opção NÃO"; break; default: echo " A opção digitada é inválida"; break; }?>

- mesma função do elseif- uso não obrigatório

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição while

<?php

while (expressao) { comandos }

?>

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição while

<?php

while (expressao): comandos

endwhile;?>

- loop infinito – expressões que nunca se tornarão falsas

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição while

<?php

$cont = 1;

while ($cont<100) { echo "O valor atual do contador é $cont <br>"; $cont++; }

?>

O valor atual do contador é 1O valor atual do contador é 2…O valor atual do contador é 99

- loop infinito – $cont!=0

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição do...while

<?php

$numero = 1;

do { echo "O valor atual de número é $numero <br>"; $numero++;

} while ($numero<4);

?>

- while – avalia no início do laço

- do...while – avalia no final do laço – executa o laço pelo menos uma vez

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição do...while

<?php

$numero = 1;

do { echo "O valor atual de número é $numero <br>"; $numero++;

} while ($numero<4);

?>

O valor atual de número é 1O valor atual de número é 2O valor atual de número é 3

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição for<?php

for( inicializacao ; condicao ; operador ){

comandos}

<?php

for( inicializacao ; condicao ; operador ):comandos

endfor;

OU

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição for

<?php

for($cont=0 ; $cont<10 ; $cont++) { echo "A variável \$cont vale $cont"; echo "<br>"; }

?>

Qual o resultado da execução deste programa?

Incremento

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição for

<html><body><?php echo "Estou fazendo uma contagem regressiva: <br>"; for($i=15 ; $i>=0 ; $i--) { echo $i . ", "; } echo "... FIM!";?></body></html>

Estou fazendo uma contagem regressiva:15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, … FIM!

Decremento

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Aninhamento de loops<?php

$vetor[0][0]= "elemento00";$vetor[0][1]= "elemento01";$vetor[1][0]= "elemento10";$vetor[1][1]= "elemento11";

for($i=0 ; $i<2 ; $i++){

for($k=0 ; $k<2 ; $k++){

echo "O elemento da posição $i,$k é ";echo $vetor [$i][$k] . "<br>";

}}

?>

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Inicialização de mais de um parâmetro

<?php

for( $i=0, $k=10 ; $i<10 ; $i++, $k-- ) { echo "\$i vale $i e \$k vale $k";

if ($i==$k) { echo " (os valores são iguais!)"; }

echo "<br>"; }?>

Implementar este programa!

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição foreach

foreach ($nome_array as $elemento){ comandos}

- vai do primeiro ao último índice definido por $nome_array

- a cada iteração o valor do array é atribuído ao valor $elemento

- trabalha-se todos os valores do array somente com $elemento

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição foreach

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

- vai do primeiro ao último índice definido por $nome_array

- a cada iteração o valor do array é atribuído ao valor $elemento

- a cada iteração o valor do índice é atribuído ao valor $chave

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Comando de repetição foreach

<?php

$vetor = array (1, 2, 3, 4); foreach ($vetor as $v){ print "O valor atual do vetor é $v. <br>";}

$a = array ( "um" => 1, "dois" => 2, "tres" => 3 ); foreach($a as $chave => $valor) { print "\$a[$chave] => $valor.<br>"; }

?>

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Controle de fluxo de execução - break

<?php

$k = 1;

while ($k < 20) { if ($vetor[$k] == "sair") { break; }

echo $vetor[$k] . "<br>";

$k++;}

?>

- for, foreach, while, switch

- passa para o primeiro comando após o término da estrutura

Laço será encerrado

- se $k >= 20

- se algum elemento do vetor for “sair"

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Controle de fluxo de execução - break<?php

$i = 0;$k = 0;while ($k < 10){

$i++;$k++;while ($i < 20){

if($i==10) {

echo "Encerrando o primeiro while...<br>";break ;echo " Essa linha não vai ser impressa!!!";

}elseif ($i==15){

echo "Encerrando os dois whiles...";break 2;

}$i++;

}}?>

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Controle de fluxo de execução - continue

<?php

$vetor = array (1, 3, 5, 8, 11, 12, 15, 20);

for($i=0 ; $i<sizeof($vetor) ; $i++){ if ($vetor[$i] % 2 != 0) // é ímpar { continue; }

$num_par = $vetor[$i]; echo "O número $num_par é par. <br>";}

?>

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Funções em PHP<?php

function nome_funcao(arg1, arg2, arg3 …, argn){

comandos[ return <expressao> ]

}

?>

- nome_funcao – identificador- não pode iniciar com número- não usar caracteres ponto, vírgula, espaço, etc- usa-se o _

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Funções em PHP<?php

function nome_funcao(arg1, arg2, arg3 …, argn){

comandos[ return <expressao> ]

}

?>

- arg1, arg2, arg3 – argumentos- valores recebidos no momento da chamada- sua utilização é opcionalfunction nome_funcao( )

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Funções em PHP

- return – opcional

- utilizado para atribuir um valor a uma variável

- utilizado para testar o valor de retorno de uma função

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Funções em PHP

<?php function maiusculo($string) { $string = strtoupper ($string); $string = str_replace ("á", "Á", $string); $string = str_replace ("é", "É", $string); $string = str_replace ("í", "Í", $string); $string = str_replace ("ó", "Ó", $string); $string = str_replace ("ú", "Ú", $string); $string = str_replace ("â", "Â", $string); $string = str_replace ("ê", "Ê", $string); $string = str_replace ("ô", "Ô", $string); $string = str_replace ("Î", "I", $string); $string = str_replace ("Û", "U", $string); $string = str_replace ("ã", "Ã", $string); $string = str_replace ("õ", "Õ", $string); $string = str_replace ("ç", "Ç", $string); $string = str_replace ("à", "A", $string); return $string; } $nome = "José Antônio"; $nome_m = maiusculo ($nome); echo "O nome do rapaz é $nome_m";?>

Utilização do return

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Funções em PHP

<?php

function triplo ($numero) { $x = $numero * 3; return $x; }

$valor = 5; echo "O triplo de $valor é " . triplo($valor);

?>

Utilização do return

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Funções em PHP<?php

function soma_valores ($valor1 , $valor2 , $valor3){

$soma = $valor1 + $valor2 + $valor3;echo "A soma dos valores $valor1, $valor2 e $valor3 ";echo "é $soma";

}$n1 = 10;$n2 = 20;$n3 = 50;soma_valores ($n1, $n2, $n3);

?>

- variáveis passadas não precisar ter o mesmo nome dos argumentos

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Funções em PHP

<?php function clubes ( ) { $clubes [ ] = "Grêmio"; $clubes [ ] = "Palmeiras"; $clubes [ ] = "Flamengo"; $clubes [ ] = "Atlético"; return $clubes; } // início do programa principal $nomes = clubes( );

for ($i=0 ; $i < sizeof($nomes) ; $i++) { echo "\$nomes[$i] vale $nomes[$i] <br>"; }?>

Retorno de array

O retorno seria:$nomes[0] vale Grêmio$nomes[1] vale Palmeiras$nomes[2] vale Flamengo$nomes[3] vale Atlético

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Passagem de parâmetros

<?php function dobro ($valor) { $valor = 2 * $valor; } function duplica (&$valor) { $valor = 2 * $valor; } $valor = 5; dobro ($valor); echo $valor . "<br>"; duplica ($valor); echo $valor;?>

- passagem de parâmetros por valor – variáveis passadas não tem seu valor alterado - passagem de parâmetros por referência – variáveis passadas como argumento são alteradas durante a execução da função (uso do &)

O resultado seria:

510

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Passagem de parâmetros

<?php

function teste ($time , $titulo = "Campeão Paranaense.") { echo "O $time é $titulo <br>"; }

teste ("Flamengo" , "Campeão Carioca."); teste ("Atlético MG" , "Campeão Mineiro."); teste ("Atlético PR");

?>

O Flamengo é Campeão Carioca.O Atlético MG é Campeão Mineiro.O Atlético PR é Campeão Paranaense.

Uso de valores-padrão para parâmetros

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Funções recursivas

<?php

function teste ($valor) { if ($valor!=0) { echo "Foi chamada a função teste passando o valor $valor <br>"; teste ($valor-1); } }

teste (7);

?>

Foi chamada a função teste passando o valor 7Foi chamada a função teste passando o valor 6…Foi chamada a função teste passando o valor 1

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Funções recursivas

<?php

function fatorial ($numero) { if ($numero<0) { return -1; }

if($numero<=1) { return 1; }

return $numero*fatorial($numero-1); }

echo "O fatorial de 3 é " . fatorial(3); echo "<br>O fatorial de 4 é " . fatorial(4); echo "<br>O fatorial de 5 é " . fatorial(5);

?>

Fatorial

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Chamada Retorno

1a 5 * fatorial(4)

2a 4 * fatorial(3)

3a 3 * fatorial(2)

4a 2 * fatorial(1)

5a 1

Funções recursivasFatorial

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Reutilização de funções

Uso do comando

include

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Exercícios

<html><title>Aula de Linguagem de Programação III</title><body>

<?phpcomandos

?></body>

</html>

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

Exercícios1. Efetue um algorítmo PHP que receba os valores 12, 6, 8, 33 e imprima o texto "o valor é maior que 10" caso isso seja verdade, senão imprima "o valor é menor que 10".Exemplo: O valor 12 é maior que 10.

2. Efetue um algoritmo em PHP que receba o valor 21 e imprima os valores de 0 até o valor recebido.Exemplo: 0, 1, 2..., 20.

3. Efetue um algorítmo PHP que receba os valores A, B e imprima-os em ordem crescente em relação aos seus valores. A=5 e B=4Você deve imprimir na tela: "4 5".

4. Efetue um algorítmo PHP que receba quatro notas de um aluno, calcule e imprima a média aritmética das notas e a mensagem de aprovado para média superior ou igual a 7.0 ou a mensagem de reprovado para média inferior a 7.0.As notas são 6.8, 5.9, 8.4 e 7.1Exemplo: A média é 5,6. O aluno está reprovado.

5. Efetue um algorítmo PHP que receba dois valores e imprima todos os valores intermediários a ele:Primeiro Valor = 5Segundo Valor = 15Imprime: 6 7 8 9 10 11 12 13 14

Prof Mauricio Lederer Análise e Desenvolvimento de Sistemas - UNIANDRADE

ExercíciosEfetue um algorítmo PHP que receba os valores A, B, C e D. Efetue a soma entre A e C,a multiplicação entre B e D e verifique se o resultado da soma é maior, menor ou igual ao da multiplicação. Imprima: "A+C é maior que B+D", "A+C é menor que B+D", "A+C é igual a B+D".

<?php$valorA = 5;$valorB = 2;$valorC = 4;$valorD = 9;function somar($a, $c) {

$resultAC = $a + $c;return $resultAC;

} function mult($b, $d) {

$resultBD = $b * $d;return $resultBD;

} echo somar($valorA, $valorC) . "<br>";

echo mult($valorB, $valorD); if(somar($valorA,$valorC) > mult($valorB,$valorD)) //testa se é maior

echo "A+C é maior que B+D";else{ //senãoif(somar($valorA,$valorC) < mult($valorB,$valorD)) //testa se é menor

echo "A+C é menor que B+D";else //senão

echo "A+C é igual que B+D"; //se não for maior e menor, então são iguais. }?>