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.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

challenge icon

Défi

Facile

Créez une application de compte à rebours qui utilise time.NewTicker pour décompter d'une durée spécifiée jusqu'à zéro, en affichant des messages de progression à intervalles réguliers. Ce défi testera votre capacité à combiner les tickers, les boucles et les calculs de durée pour 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 découpant sur les deux-points pour extraire la valeur et l'unité de la durée du compte à rebours
  2. Analyser la deuxième entrée en la découpant sur les deux-points pour extraire la valeur et l'unité de l'intervalle de mise à jour
  3. Convertir les valeurs de 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 décompter :
    • Attendre chaque événement du ticker en utilisant <-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 de 0 ou moins, afficher : "Time's up!" et quitter la boucle
  11. Arrêter le ticker en utilisant ticker.Stop()
  12. Afficher les statistiques de fin :
    • "=== TIMER COMPLETE ==="
    • "Original duration: [countdown_duration_object]"
    • "Update interval: [update_interval_object]"
    • "Total updates displayed: [number_of_updates]" (calculez combien de fois le temps restant a été affiché)
  13. Afficher le message de fin : "Countdown timer finished successfully"

Utilisez le package time pour les opérations de ticker et de durée, le package strings pour découper les chaînes d'entrée, le package strconv pour convertir les chaînes en entiers, et le package fmt pour la sortie. N'oubliez pas que time.NewTicker renvoie un ticker qui envoie des valeurs sur son canal à intervalles réguliers, et vous devez appeler ticker.Stop() lorsque vous avez terminé pour libérer les ressources. Ce défi démontre comment créer un compte à rebours pratique en utilisant les mécanismes de chronométrage 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