Percursos
/
PHP
PHP
/
Exercícios
/
A lasanha suculenta do Lucian
A lasanha suculenta do Lucian

A lasanha suculenta do Lucian

Exercício de aprendizagem

Introdução

Noções básicas

Para informações mais detalhadas sobre estes temas, consulta a página do conceito.

Sintaxe geral

A etiqueta de abertura do PHP <?php marca o início do código PHP. Todas as instruções têm de terminar com um ; para separar as instruções.

<?php

$message = "Success!"; // Statement correctly ends with `;`
$message = "I fail." // PHP Parse error: syntax error, [...]

Para facilitar a leitura, todos os exemplos de código omitem a etiqueta de abertura do PHP <?php.

Comentários

Os comentários de uma linha começam com //.

// Single line comment

Valores e variáveis

Com o operador de atribuição =, podes atribuir um valor a uma variável. Os nomes das variáveis têm de começar com o sinal de dólar $ e seguir as convenções de nomenclatura.

$count = 1; // Assign value of 1

// Strings can be created by enclosing the characters
// within single `'` quotes or double `"` quotes.
$message = "Success!";

Funções e métodos

Podes passar valores e variáveis a funções. Os argumentos de uma função tornam-se novas variáveis para guardar os valores que lhes são passados. As funções podem devolver qualquer valor com a palavra-chave return.

function window_height($height)
{
    return $height + 10;
}

window_height(100);
// => 110

As funções dentro de classes e das suas instâncias chamam-se métodos. Para chamar um método, o nome é precedido pela instância e por ->. Os métodos têm acesso à variável especial $this, que se refere à instância atual.

<?php

class Calculator {
    public function sub($x, $y)
    {
        return $this->add($x, -$y); // Calls the method add() of the current instance
    }

    public function add($x, $y)
    {
        return $x + $y;
    }
}

$calculator = new Calculator(); // Creates a new instance of Calculator class
$calculator->sub(3, 1); // Calls the method sub() of the instance stored in $calculator
// => 2

Instruções

Neste exercício vais escrever algum código para te ajudar a cozinhar uma lasanha fantástica a partir do teu livro de receitas preferido.

Tens cinco tarefas, todas relacionadas com o tempo gasto a cozinhar a lasanha.

1. Define o tempo de forno esperado em minutos

Implementa a função expectedCookTime na classe Lasagna, que não recebe argumentos e devolve quantos minutos a lasanha deve estar no forno. Segundo o livro de receitas, o tempo de forno esperado é de 40 minutos:

<?php
$timer = new Lasagna();
$timer->expectedCookTime()
// => 40

2. Calcula o tempo de forno restante em minutos

Implementa a função remainingCookTime na classe Lasagna, que recebe como argumento os minutos que a lasanha já esteve no forno e devolve quantos minutos a lasanha ainda tem de ficar no forno, com base no tempo de forno esperado da tarefa anterior.

<?php
$timer = new Lasagna();
$timer->remainingCookTime(30)
// => 10

3. Calcula o tempo de preparação em minutos

Implementa a função totalPreparationTime na classe Lasagna, que recebe como argumento o número de camadas que adicionaste à lasanha e devolve quantos minutos passaste a preparar a lasanha, partindo do princípio de que cada camada demora 2 minutos a preparar.

<?php
$timer = new Lasagna();
$timer->totalPreparationTime(3)
// => 6

4. Calcula o tempo total de trabalho em minutos

Implementa a função totalElapsedTime na classe Lasagna, que recebe dois argumentos: o primeiro é o número de camadas que adicionaste à lasanha e o segundo é o número de minutos que a lasanha já esteve no forno. A função deve devolver o total de minutos que trabalhaste a cozinhar a lasanha, ou seja, a soma do tempo de preparação, em minutos, com o tempo que a lasanha já passou no forno até ao momento.

<?php
$timer = new Lasagna();
$timer->totalElapsedTime(3, 20)
// => 26

5. Cria uma notificação de que a lasanha está pronta

Implementa a função alarm na classe Lasagna, que não recebe argumentos e devolve uma mensagem a indicar que a lasanha está pronta a comer.

<?php
$timer = new Lasagna();
$timer->alarm()
// => "Ding!"
Editar via GitHub A ligação abre numa nova janela ou separador
PHP Exercism

Estás pronto para começar A lasanha suculenta do Lucian?

Inscreve-te no Exercism para aprenderes e dominares PHP com 11 conceitos122 exercícios, e mentoria humana real, tudo grátis.