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

462 views
403 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
462
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
66
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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; ?>

×