Track
/
Go
Go
/
Esercizi
/
La splendida lasagna del Gopher
La splendida lasagna del Gopher

La splendida lasagna del Gopher

Esercizio di apprendimento

Introduzione

Go è un linguaggio di programmazione compilato e a tipizzazione statica. In questo esercizio introdurremo tre caratteristiche principali del linguaggio: i package, le funzioni e le variabili.

I package

Le applicazioni Go sono organizzate in package. Un package è un insieme di file sorgente che si trovano nella stessa directory. Tutti i file sorgente in una directory devono condividere lo stesso nome di package. Quando si importa un package, è possibile usare o accedere solo alle entità (funzioni, tipi, variabili, costanti) il cui nome inizia con una lettera maiuscola. Lo stile di denominazione consigliato in Go prevede che gli identificatori siano scritti in camelCase, tranne quelli che devono essere accessibili da altri package, che dovrebbero usare PascalCase.

package lasagna

Le variabili

Go è a tipizzazione statica, il che significa che tutte le variabili devono avere un tipo definito in fase di compilazione.

Le variabili si possono definire specificando esplicitamente un tipo:

var explicit int // Explicitly typed

Puoi anche usare un valore di inizializzazione: il compilatore assegnerà alla variabile un tipo corrispondente a quello del valore.

implicit := 10   // Implicitly typed as an int

Una volta dichiarata, a una variabile si possono assegnare dei valori usando l'operatore =. Una volta dichiarata, il tipo di una variabile non può mai cambiare.

count := 1 // Assign initial value
count = 2  // Update to new value

count = false // This throws a compiler error due to assigning a non `int` type

Le costanti

Le costanti contengono un dato proprio come le variabili, ma il loro valore non può cambiare durante l'esecuzione del programma.

Le costanti si definiscono con la parola chiave const e possono essere numeri, caratteri, stringhe o valori booleani:

const Age = 21 // Defines a numeric constant 'Age' with the value of 21

Le funzioni

Le funzioni Go accettano zero o più parametri. I parametri devono avere un tipo esplicito: non c'è inferenza di tipo.

I valori vengono restituiti dalle funzioni usando la parola chiave return.

Una funzione si chiama specificando il suo nome e passando un argomento per ciascuno dei suoi parametri.

Nota che Go supporta due tipi di commenti. I commenti su una sola riga sono preceduti da //, mentre i commenti su più righe si inseriscono tra /* e */.

package greeting

// Hello is a public function.
func Hello (name string) string {
    return hi(name)
}

// hi is a private function.
func hi (name string) string {
    return "hi " + name
}

Istruzioni

In questo esercizio scriverai del codice che ti aiuterà a cucinare una lasagna perfetta dal tuo libro di ricette preferito.

Ci sono quattro attività, tutte legate al tempo necessario per cucinare la lasagna.

1. Definisci il tempo previsto in forno in minuti

Definisci la costante OvenTime con quanti minuti la lasagna deve stare in forno. Secondo il libro di ricette, il tempo previsto in forno in minuti è 40:

OvenTime
// => 40

2. Calcola il tempo rimanente in forno in minuti

Definisci la funzione RemainingOvenTime() che prende come parametro i minuti effettivi che la lasagna è stata in forno e restituisce quanti minuti la lasagna deve ancora restare in forno, in base al tempo previsto in forno in minuti dell'attività precedente.

func RemainingOvenTime(actual int) int {
    // TODO
}

RemainingOvenTime(30)
// => 10

3. Calcola il tempo di preparazione in minuti

Definisci la funzione PreparationTime che prende come parametro il numero di strati che hai aggiunto alla lasagna e restituisce quanti minuti hai impiegato a prepararla, supponendo che ogni strato richieda 2 minuti di preparazione.

func PreparationTime(numberOfLayers int) int {
    // TODO
}

PreparationTime(2)
// => 4

4. Calcola il tempo di lavoro trascorso in minuti

Definisci la funzione ElapsedTime che prende due parametri: il primo parametro è il numero di strati che hai aggiunto alla lasagna, e il secondo parametro è il numero di minuti che la lasagna è stata in forno. La funzione dovrebbe restituire quanti minuti in totale hai lavorato a cucinare la lasagna, cioè la somma del tempo di preparazione in minuti e del tempo in minuti che la lasagna ha passato in forno fino a quel momento.

func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
    // TODO
}

ElapsedTime(3, 20)
// => 26
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Go Exercism

Vuoi iniziare La splendida lasagna del Gopher?

Iscriviti a Exercism per imparare e padroneggiare Go con 35 concetti167 esercizi e il mentoring di persone reali, tutto gratis.