Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvidas sobre: public function, ?float, usar for ou foreach, return

Professor, estou com algumas dúvidas sobre o código abaixo: 1ª - para que serve a função public function? 2ª - Sobre o laço de repetição, poderíamos utilizar o foreach ou invés de for? 3ª - A função return $media, qual sua real funcionalidade no código? 4ª - O que faz o símbolo de interrogação ao lado do float (?float), tem como função permitir que sejam aceitos números do tipo decimal?

Poderia me ajudar? Obrigado!!

class Calculadora {

public function calculaMedia(array $notas): ?float
{

    $quantidadeNotas = sizeof($notas);//sizeof RETORNA O NUMERO DE ELEMENTOS QUE TEM EM UM ARRAY.



    if($quantidadeNotas > 0){
        $soma = 0;
        for($i = 0; $i < $quantidadeNotas; $i++){
            $soma = $soma + $notas[$i];
    }
    $media = $soma / $quantidadeNotas;

    return $media;

    } else{
        return null;
    }




}

}

1 resposta
solução!

Oi Henrique, vou tentar te dar um help.

1 - Você perguntou para que serve a função public function : Acredito que você a sua dúvida seja em referência a palavra chave public, correto? A palavra chave public é um modificador de acesso que permite que a função seja disponível em qualquer parte da aplicação. Ao criar o objeto Calculadora você poderá ter acesso a função calculaMedia graças ao public. Dê uma pesquisada sobre modificadores de acesso em PHP, aqui na Alura tem cursos de orientações a objetos que te dará maiores detalhes.

2 - Sim, poderia ter usado o foreach ao invés do for. Na verdade existe opções até mais elegantes para realizar essa tarefa, mas acredito que o Vinicius fez dessa forma para mostrar "na unha" como se realiza esse cálculo.

foreach($notas as $nota){
        $soma += $nota;  // é o mesmo que $soma = $soma + $nota
}
$media = $soma/$quantidadeDeNotas;
...restante do código

3- Acho que você quer saber o significado da palavra chave return, correto? Quando uma função encontra a palavra chave return ela (a função) retorna o valor que está atrelado a esse retorno. No exemplo temos "return $media", isso quer dizer que a função irá retornar o valor que está armazenado na variável $media e após isso encerrar a sua tarefa.

4 - O simbolo de interrogação antes do float "?float" ao final da assinatura da função é um nullable return type hint. Basicamente isso significa que além da minha função poder retornar um valor do tipo de float ela pode retornar um valor nulo também, resumindo, a minha função pode retornar nada ou pode retornar um float. Observe que dentro do else existe um "return null" ou seja, a minha função pode retornar um null, então eu uso o simbolo de interrogação ? para especificar essa situação. Dê uma pesquisada posteriomente sobre type hint no PHP.

5 - A sua função pode sim receber decimais, ela recebe como parâmetro um array e esse array pode conter qualquer tipo de dados. Infelizmente no PHP não conseguimos dizer qual tipo de dados específico o array pode conter, como em outras linguagens ( não irei entrar nessa seara aqui). O ideal seria você fazer uma verificação para saber se os dados recebidos no array são numéricos.