Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

LabMM4 (T13 - 12/13) - Funções

493 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

LabMM4 (T13 - 12/13) - Funções

  1. 1. PHP: FunçõesCarlos SantosLabMM 4 - NTC - DeCA - UAAula 13, 09-04-2013
  2. 2. Funções Nome da função parâmetros de entrada valores de saída código da função
  3. 3. Funções: característicasPermitem a modularidade e reutilização do códigoPermitem uma gestão centralizada do códigoSão invocadas/chamadas quando são necessárias • Podem possuir parâmetros de entrada • Podem retornar valores de saídaFunções pré-definidas (built-in) • Mais de 1000 numa instalação standard do PHP • Funções adicionais disponíveis através da instalação de pacotes/ bibliotecasFunções definidas pelo utilizador
  4. 4. Declaração e invocação de uma funçãoDeclarar uma função • function nomefuncao(parâmetros/args) { codigodafuncao } • function escreve_ola() { echo “Olá. Esta é a minha primeira função!"; }Invocar/chamar uma função • escreve_ola();
  5. 5. Passagem de parâmetrosValores passados para dentro da função aquando da sua chamada • <?php function calctaxa($preco, $taxa) { $total = $preco + ($preco * $taxa); echo “custo total: $total" . "<br />"; } $a = 2; $b = 3; calctaxa($a, $b); ?> > “custo total: 8”
  6. 6. Passagem de parâmetros por valorAs alterações efetuadas dentro da função aos valores armazenados nosparâmetros passados por valor são ignoradas fora da função • <?php function calctaxa($preco, $taxa) { $total = $preco + ($preco * $taxa); $preco++; $taxa++; echo $preco . "<br />"; echo $taxa . "<br />"; echo “custo total: $total" . "<br />"; } $preco = 2; $taxa = 2; calctaxa($preco, $taxa); echo $preco . "<br />"; echo $taxa; ?>
  7. 7. Passagem de parâmetros por valorAs alterações efetuadas dentro da função aos valores armazenados nosparâmetros passados por valor são ignoradas fora da função • <?php function calctaxa($preco, $taxa) { $total = $preco + ($preco * $taxa); $preco++; $taxa++; echo $preco . "<br />"; // 3 echo $taxa . "<br />"; // 3 echo “custo total: $total" . "<br />"; // ...6 } $preco = 2; $taxa = 2; calctaxa($preco, $taxa); echo $preco . "<br />"; // 2 echo $taxa; // 2 ?>
  8. 8. Passagem de parâmetros por referênciaAs alterações efetuadas dentro da função aos valores armazenados nosparâmetros passados por valor são visíveis fora da função • <?php function calctaxa($preco, &$t) { $total = $preco + ($preco * $t); $preco++; $t++; echo $preco . "<br />"; echo $t . "<br />"; echo “custo total: $total" . "<br />"; } $preco = 2; $taxa = 2; calctaxa($preco, $taxa); echo $preco . "<br />"; echo $taxa; ?>
  9. 9. Passagem de parâmetros por referênciaAs alterações efetuadas dentro da função aos valores armazenados nosparâmetros passados por valor são visíveis fora da função • <?php function calctaxa($preco, &$t) { $total = $preco + ($preco * $t); $preco++; $t++; echo $preco . "<br />"; // 3 echo $t . "<br />"; // 3 echo “custo total: $total" . "<br />"; // ...6 } $preco = 2; $taxa = 2; calctaxa($preco, $taxa); echo $preco . "<br />"; // 2 echo $taxa; // 3 ?>
  10. 10. Passagem de parâmetros com valores por defeitoValor atribuído por defeito ao parâmetro, caso a invocação da função nãoseja feita com esse parâmetro • <?php function calctaxa($preco, $taxa=3) { $total = $preco + ($preco * $taxa); $preco++; $taxa++; echo $preco . "<br />"; echo $taxa . "<br />"; echo “custo total: $total" . "<br />"; } $pr = 2; $ta = 2; calctaxa($pr); ?>
  11. 11. Passagem de parâmetros com valores por defeitoValor atribuído por defeito ao parâmetro, caso a invocação da função nãoseja feita com esse parâmetro • <?php function calctaxa($preco, $taxa=3) { $total = $preco + ($preco * $taxa); $preco++; $taxa++; echo $preco . "<br />"; // 3 echo $taxa . "<br />"; // 4 echo “custo total: $total" . "<br />"; // ...8 } $pr = 2; $ta = 2; calctaxa($pr); ?>
  12. 12. Passagem de parâmetros com parâmetrosopcionaisCaso um dado parâmetro seja opcional, na invocação da função sem esseparâmetro ser-lhe-á atribuído um valor vazio/nulo • <?php function calctaxa($preco, $taxa=””) { $total = $preco + ($preco * $taxa); $preco++; $taxa++; echo $preco . "<br />"; echo $taxa . "<br />"; echo “custo total: $total" . "<br />"; } $pr = 2; $ta = 2; calctaxa($pr); ?>
  13. 13. Passagem de parâmetros com parâmetrosopcionaisCaso um dado parâmetro seja opcional, na invocação da função sem esseparâmetro ser-lhe-á atribuído um valor vazio/nulo • <?php function calctaxa($preco, $taxa=””) { $total = $preco + ($preco * $taxa); $preco++; $taxa++; echo $preco . "<br />"; // 3 echo $taxa . "<br />"; // 1 echo “custo total: $total" . "<br />"; //... 2 } $pr = 2; $ta = 2; calctaxa($pr); ?>
  14. 14. Passagem de parâmetros com parâmetrosopcionaisCaso um dado parâmetro seja opcional, na invocação da função sem esseparâmetro ser-lhe-á atribuído um valor vazio/nulo • <?php function somanumeros($num1=“”, $num2="", $num3="") { $total = $num1 + $num2 + $num3; echo "soma: $total" . "<br />"; }! somanumeros(1,2,3); somanumeros(1,2); somanumeros(1,"",3); somanumeros(1); somanumeros(); ?>
  15. 15. Passagem de parâmetros com parâmetrosopcionaisCaso um dado parâmetro seja opcional, na invocação da função sem esseparâmetro ser-lhe-á atribuído um valor vazio/nulo • <?php function somanumeros($num1=“”, $num2="", $num3="") { $total = $num1 + $num2 + $num3; echo "soma: $total" . "<br />"; }! somanumeros(1,2,3); // “soma: 6” somanumeros(1,2); // “soma: 3” somanumeros(1,"",3); // “soma: 4” somanumeros(1); // “soma: 1” somanumeros(); // “soma: 0” ?>
  16. 16. Retorno de valores de saídaA função devolve um ou mais valores que poderão ser atribuídos avariáveis aquando da sua invocação/chamada • <?php function somanumeros($num1=“”, $num2="", $num3="") { $total = $num1 + $num2 + $num3; return $total; }! $resultado = somanumeros(1,2,3); echo “<br />” . somanumeros(1,2,3); ?>
  17. 17. Retorno de valores de saídaA função devolve um ou mais valores que poderão ser atribuídos avariáveis aquando da sua invocação/chamada • <?php function somanumeros($num1=“”, $num2="", $num3="") { $total = $num1 + $num2 + $num3; return $total; }! $resultado = somanumeros(1,2,3); echo “<br />” . somanumeros(1,2,3); // 6 ?>É possível retornar múltiplos valores através de arrays, ou seja, o valor deretorno pode ser um array com múltiplos elementos!
  18. 18. RecursividadeFunções recursivas são funções que se invocam a si próprias.Exemplo: Cálculo da soma dos n números naturais, menores ou iguais a n • <?php function soman($n) { if ($n <=0) { // impede recursividade infinita return "cálculo não efetuado"; } elseif ($n==1) { // fim de recursividade return 1; } else { return $n + soman($n-1); } }! ?>
  19. 19. Recursividade • <?php function soman($n) { if ($n <=0) { // impede recursividade infinita return "cálculo não efetuado"; } elseif ($n==1) { // fim de recursividade return 1; } else { return $n + soman($n-1); } }! echo "<br />" . soman(-1); echo "<br />" . soman(0); echo "<br />" . soman(1); echo "<br />" . soman(3); echo "<br />" . soman(4); ?>
  20. 20. Recursividade • <?php function soman($n) { if ($n <=0) { // impede recursividade infinita return "cálculo não efetuado"; } elseif ($n==1) { // fim de recursividade return 1; } else { return $n + soman($n-1); } }! echo "<br />" . soman(-1); // “Cálculo não efetuado” echo "<br />" . soman(0); // “Cálculo não efetuado” echo "<br />" . soman(1); // 1 echo "<br />" . soman(3); // 6 echo "<br />" . soman(4); // 10 ?>
  21. 21. ExemploQual o resultado? • <?php function soma($a, $b) { $a++; $b++; $c = $a + $b; echo "Dentro da função: ". $a . " | ". $b . " | ". $c . "<br />"; return $c; } $a = 2; $b = 3; $c = 0; echo "Antes da função: ". $a . " | ". $b . " | ". $c . "<br />"; $resultado = soma($a, $b); echo "Depois da função: ". $a . " | ". $b . " | ". $c . "<br />"; echo "Resultado: ". $resultado; ?>

×