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

21
PHP: Funções Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 13, 09-04-2013

description

 

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

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

PHP: Funções

Carlos SantosLabMM 4 - NTC - DeCA - UAAula 13, 09-04-2013

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

Funções

Nome da funçãocódigo da função

parâmetros de entrada valores de saída

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

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

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

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();

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

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”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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!

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

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); } }!?>

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

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

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

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

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

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