Parcours
/
Go
Go
/
Exercices
/
Les lasagnes magnifiques de Gopher
Les lasagnes magnifiques de Gopher

Les lasagnes magnifiques de Gopher

Exercice d'apprentissage

Introduction

Go est un langage de programmation compilé et à typage statique. Cet exercice présente trois grandes notions du langage : les paquets, les fonctions et les variables.

Paquets

Les applications Go sont organisées en paquets. Un paquet est un ensemble de fichiers sources situés dans le même répertoire. Tous les fichiers sources d'un répertoire doivent partager le même nom de paquet. Quand un paquet est importé, seules les entités (fonctions, types, variables, constantes) dont le nom commence par une lettre majuscule peuvent être utilisées ou accessibles. Le style de nommage recommandé en Go consiste à nommer les identifiants en camelCase, sauf ceux destinés à être accessibles depuis d'autres paquets, qui doivent être en PascalCase.

package lasagna

Variables

Go est à typage statique, ce qui signifie que toutes les variables doivent avoir un type défini à la compilation.

On peut définir une variable en spécifiant explicitement un type :

var explicit int // Explicitly typed

On peut aussi utiliser un initialiseur, et le compilateur attribuera à la variable le type correspondant à celui de l'initialiseur.

implicit := 10   // Implicitly typed as an int

Une fois déclarée, une variable peut recevoir des valeurs à l'aide de l'opérateur =. Une fois déclarée, le type d'une variable ne peut plus jamais changer.

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

Constantes

Une constante contient une donnée, exactement comme une variable, mais sa valeur ne peut pas changer pendant l'exécution du programme.

Les constantes se définissent avec le mot-clé const et peuvent être des nombres, des caractères, des strings ou des booléens :

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

Fonctions

Les fonctions Go acceptent zéro ou plusieurs paramètres. Le type des paramètres doit être indiqué explicitement, il n'y a pas d'inférence de type.

Les valeurs sont renvoyées par une fonction à l'aide du mot-clé return.

Pour appeler une fonction, on indique son nom et on passe un argument pour chacun de ses paramètres.

À noter que Go prend en charge deux types de commentaires. Les commentaires sur une seule ligne sont précédés de // et les commentaires multilignes sont insérés entre /* et */.

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
}

Instructions

Dans cet exercice, tu vas écrire du code pour t'aider à cuisiner une excellente lasagne tirée de ton livre de cuisine préféré.

Quatre tâches t'attendent, toutes liées au temps passé à cuisiner la lasagne.

1. Définis le temps de cuisson au four attendu en minutes

Définis la constante OvenTime avec le nombre de minutes pendant lesquelles la lasagne doit rester au four. D'après le livre de cuisine, le temps de cuisson au four attendu est de 40 minutes :

OvenTime
// => 40

2. Calcule le temps de cuisson restant en minutes

Définis la fonction RemainingOvenTime() qui prend en paramètre le nombre réel de minutes pendant lesquelles la lasagne a déjà été au four et renvoie combien de minutes la lasagne doit encore rester au four, d'après le temps de cuisson au four attendu de la tâche précédente.

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

RemainingOvenTime(30)
// => 10

3. Calcule le temps de préparation en minutes

Définis la fonction PreparationTime qui prend en paramètre le nombre de couches que tu as ajoutées à la lasagne et renvoie combien de minutes tu as passées à préparer la lasagne, en supposant que chaque couche te prend 2 minutes à préparer.

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

PreparationTime(2)
// => 4

4. Calcule le temps de travail écoulé en minutes

Définis la fonction ElapsedTime qui prend deux paramètres : le premier paramètre est le nombre de couches que tu as ajoutées à la lasagne, et le second paramètre est le nombre de minutes pendant lesquelles la lasagne a été au four. La fonction doit renvoyer le nombre total de minutes que tu as passées à cuisiner la lasagne, c'est-à-dire la somme du temps de préparation en minutes et du temps en minutes que la lasagne a passé au four à cet instant.

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

ElapsedTime(3, 20)
// => 26
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Go Exercism

Prêt à commencer Les lasagnes magnifiques de Gopher ?

Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts166 exercices, et un vrai mentorat humain, le tout gratuitement.