LabMM4 (T13 - 12/13) - Funções
-
Upload
carlos-santos -
Category
Education
-
view
326 -
download
0
description
Transcript of LabMM4 (T13 - 12/13) - Funções
PHP: Funções
Carlos SantosLabMM 4 - NTC - DeCA - UAAula 13, 09-04-2013
Funções
Nome da funçãocódigo da função
parâmetros de entrada valores de saída
Funções: características
Permitem a modularidade e reutilização do código
Permitem uma gestão centralizada do código
São invocadas/chamadas quando são necessárias
• Podem possuir parâmetros de entrada• Podem retornar valores de saída
Funçõ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/
bibliotecas
Funções definidas pelo utilizador
Declaração e invocação de uma função
Declarar 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();
Passagem de parâmetros
Valores 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”
Passagem de parâmetros por valor
As alterações efetuadas dentro da função aos valores armazenados nos parâ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;?>
Passagem de parâmetros por valor
As alterações efetuadas dentro da função aos valores armazenados nos parâ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?>
Passagem de parâmetros por referência
As alterações efetuadas dentro da função aos valores armazenados nos parâ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;?>
Passagem de parâmetros por referência
As alterações efetuadas dentro da função aos valores armazenados nos parâ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?>
Passagem de parâmetros com valores por defeito
Valor atribuído por defeito ao parâmetro, caso a invocação da função não seja 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);?>
Passagem de parâmetros com valores por defeito
Valor atribuído por defeito ao parâmetro, caso a invocação da função não seja 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);?>
Passagem de parâmetros com parâmetros opcionais
Caso um dado parâmetro seja opcional, na invocação da função sem esse parâ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);?>
Passagem de parâmetros com parâmetros opcionais
Caso um dado parâmetro seja opcional, na invocação da função sem esse parâ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);?>
Passagem de parâmetros com parâmetros opcionais
Caso um dado parâmetro seja opcional, na invocação da função sem esse parâmetro ser-lhe-á atribuído um valor vazio/nulo
• <?phpfunction 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();?>
Passagem de parâmetros com parâmetros opcionais
Caso um dado parâmetro seja opcional, na invocação da função sem esse parâmetro ser-lhe-á atribuído um valor vazio/nulo
• <?phpfunction 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”?>
Retorno de valores de saída
A função devolve um ou mais valores que poderão ser atribuídos a variáveis aquando da sua invocação/chamada
• <?phpfunction somanumeros($num1=“”, $num2="", $num3="") { $total = $num1 + $num2 + $num3; return $total;}!
$resultado = somanumeros(1,2,3);echo “<br />” . somanumeros(1,2,3);?>
Retorno de valores de saída
A função devolve um ou mais valores que poderão ser atribuídos a variáveis aquando da sua invocação/chamada
• <?phpfunction 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 de retorno pode ser um array com múltiplos elementos!
Recursividade
Funçõ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); } }!?>
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);?>
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?>
Exemplo
Qual o resultado?
• <?phpfunction 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;?>