Menu
Coddy logo textTech

Récapitulatif - Minuteur simple

Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 65 sur 68.

challenge icon

Défi

Facile

Créez une application de compte à rebours qui utilise time.NewTicker pour effectuer un compte à rebours depuis une durée spécifiée jusqu’à zéro, en affichant des messages de progression à intervalles réguliers. Ce défi mettra à l’épreuve votre capacité à combiner des tickers, des boucles et des calculs de durée afin de créer une application de chronométrage fonctionnelle.

Vous recevrez deux entrées :

  • Une chaîne contenant la durée du compte à rebours au format "value:unit" (par exemple, "10:Second" ou "3:Minute")
  • Une chaîne contenant l’intervalle de mise à jour au format "value:unit" (par exemple, "1:Second")

Votre tâche consiste à :

  1. Analyser la première entrée en la séparant au niveau des deux-points afin d’extraire la valeur et l’unité de la durée du compte à rebours
  2. Analyser la deuxième entrée en la séparant au niveau des deux-points afin d’extraire la valeur et l’unité de l’intervalle de mise à jour
  3. Convertir les valeurs chaîne en entiers à l’aide du package strconv
  4. Créer des objets time.Duration pour la durée du compte à rebours et l’intervalle de mise à jour en utilisant les constantes appropriées :
    • Pour "Second" : multiplier par time.Second
    • Pour "Minute" : multiplier par time.Minute
    • Pour "Hour" : multiplier par time.Hour
  5. Afficher l’en-tête du minuteur : "=== COUNTDOWN TIMER ==="
  6. Afficher la configuration du minuteur : "Starting countdown from [countdown_duration_object]"
  7. Afficher la fréquence de mise à jour : "Updates every [update_interval_object]"
  8. Créer un ticker à l’aide de time.NewTicker avec la durée de l’intervalle de mise à jour
  9. Initialiser une variable de temps restant avec la durée du compte à rebours
  10. Utiliser une boucle pour effectuer le compte à rebours :
    • Attendre chaque événement du ticker à l’aide de <-ticker.C
    • Soustraire l’intervalle de mise à jour du temps restant
    • Si le temps restant est supérieur à 0, afficher : "Time remaining: [remaining_time_object]"
    • Si le temps restant est inférieur ou égal à 0, afficher : "Time's up!" et quitter la boucle
  11. Arrêter le ticker à l’aide de ticker.Stop()
  12. Afficher les statistiques d’achèvement :
    • "=== TIMER COMPLETE ==="
    • "Original duration: [countdown_duration_object]"
    • "Update interval: [update_interval_object]"
    • "Total updates displayed: [number_of_updates]" (calculer combien de fois le temps restant a été affiché)
  13. Afficher le message d’achèvement : "Countdown timer finished successfully"

Utilisez le package time pour les opérations liées au ticker et aux durées, le package strings pour séparer les chaînes d’entrée, le package strconv pour convertir les chaînes en entiers et le package fmt pour l’affichage. N’oubliez pas que time.NewTicker renvoie un ticker qui envoie des valeurs sur son canal à intervalles réguliers, et que vous devez appeler ticker.Stop() lorsque vous avez terminé afin de libérer les ressources. Ce défi montre comment créer un compte à rebours pratique à l’aide des mécanismes de temporisation de Go.

Essayez vous-même

package main

import (
	"fmt"
	"strconv"
	"strings"
	"time"
)

func main() {
	// Lire l'entrée
	var countdownInput string
	var intervalInput string
	fmt.Scanln(&countdownInput)
	fmt.Scanln(&intervalInput)
	
	// Analyser l'entrée de la durée du compte à rebours
	countdownParts := strings.Split(countdownInput, ":")
	countdownValue, _ := strconv.Atoi(countdownParts[0])
	countdownUnit := countdownParts[1]
	
	// Analyser l'entrée de l'intervalle de mise à jour
	intervalParts := strings.Split(intervalInput, ":")
	intervalValue, _ := strconv.Atoi(intervalParts[0])
	intervalUnit := intervalParts[1]
	
	// TODO: Écrivez votre code ci-dessous
	// Convertir en objets time.Duration en utilisant des instructions switch
	// Créer le minuteur de compte à rebours (simuler sans délais réels pour les tests)
	// Implémenter la boucle du compte à rebours
	// Afficher tous les messages et statistiques requis
	// Remarque : Pour les besoins des tests, simulez le comportement du ticker sans délais de temps réels
	
}

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur Go en ligne