Menu
Coddy logo textTech

Özet - Basit Zamanlayıcı

Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 65 / 68.

challenge icon

Görev

Kolay

Belirtilen bir süreden sıfıra kadar geri saymak ve düzenli aralıklarla ilerleme mesajları görüntülemek için time.NewTicker kullanan bir geri sayım sayacı uygulaması oluşturun. Bu görev, işlevsel bir zamanlama uygulaması oluşturmak için ticker'ları, döngüleri ve süre hesaplamalarını birleştirme becerinizi test edecektir.

İki girdi alacaksınız:

  • "value:unit" biçiminde geri sayım süresini içeren bir dize (ör. "10:Second" veya "3:Minute")
  • "value:unit" biçiminde güncelleme aralığını içeren bir dize (ör. "1:Second")

Göreviniz:

  1. Geri sayım süresi değerini ve birimini çıkarmak için ilk girdiyi iki nokta üst üste karakterine göre bölümlere ayırın
  2. Güncelleme aralığı değerini ve birimini çıkarmak için ikinci girdiyi iki nokta üst üste karakterine göre bölümlere ayırın
  3. Dize değerlerini strconv paketini kullanarak tamsayılara dönüştürün
  4. Uygun sabitleri kullanarak hem geri sayım süresi hem de güncelleme aralığı için time.Duration nesneleri oluşturun:
    • "Second" için: time.Second ile çarpın
    • "Minute" için: time.Minute ile çarpın
    • "Hour" için: time.Hour ile çarpın
  5. Sayaç başlığını görüntüleyin: "=== COUNTDOWN TIMER ==="
  6. Sayaç ayarını görüntüleyin: "Starting countdown from [countdown_duration_object]"
  7. Güncelleme sıklığını görüntüleyin: "Updates every [update_interval_object]"
  8. Güncelleme aralığı süresini kullanarak time.NewTicker ile bir ticker oluşturun
  9. Geriye kalan süre değişkenini geri sayım süresiyle başlatın
  10. Geri sayım yapmak için bir döngü kullanın:
    • <-ticker.C kullanarak her ticker olayını bekleyin
    • Güncelleme aralığını geriye kalan süreden çıkarın
    • Geriye kalan süre 0'dan büyükse şunu görüntüleyin: "Time remaining: [remaining_time_object]"
    • Geriye kalan süre 0 veya daha azsa şunu görüntüleyin: "Time's up!" ve döngüden çıkın
  11. ticker.Stop() kullanarak ticker'ı durdurun
  12. Tamamlanma istatistiklerini görüntüleyin:
    • "=== TIMER COMPLETE ==="
    • "Original duration: [countdown_duration_object]"
    • "Update interval: [update_interval_object]"
    • "Total updates displayed: [number_of_updates]" (geriye kalan sürenin kaç kez görüntülendiğini hesaplayın)
  13. Tamamlanma mesajını görüntüleyin: "Countdown timer finished successfully"

Ticker ve süre işlemleri için time paketini, girdi dizelerini bölmek için strings paketini, dizeleri tamsayılara dönüştürmek için strconv paketini ve çıktı için fmt paketini kullanın. time.NewTicker işlevinin kanalında düzenli aralıklarla değerler gönderen bir ticker döndürdüğünü ve kaynakları serbest bırakmak için işiniz bittiğinde ticker.Stop() çağırmanız gerektiğini unutmayın. Bu görev, Go'nun zamanlama mekanizmalarını kullanarak pratik bir geri sayım sayacının nasıl oluşturulacağını gösterir.

Kendin dene

package main

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

func main() {
	// Girdiyi oku
	var countdownInput string
	var intervalInput string
	fmt.Scanln(&countdownInput)
	fmt.Scanln(&intervalInput)
	
	// Geri sayım süresi girdisini ayrıştır
	countdownParts := strings.Split(countdownInput, ":")
	countdownValue, _ := strconv.Atoi(countdownParts[0])
	countdownUnit := countdownParts[1]
	
	// Güncelleme aralığı girdisini ayrıştır
	intervalParts := strings.Split(intervalInput, ":")
	intervalValue, _ := strconv.Atoi(intervalParts[0])
	intervalUnit := intervalParts[1]
	
	// TODO: Kodunuzu aşağıya yazın
	// Switch ifadelerini kullanarak time.Duration nesnelerine dönüştürün
	// Geri sayım sayacını oluşturun (test için gerçek gecikmeler olmadan simüle edin)
	// Geri sayım döngüsünü uygulayın
	// Gerekli tüm mesajları ve istatistikleri görüntüleyin
	// Not: Test amaçlı olarak, gerçek zaman gecikmeleri olmadan ticker davranışını simüle edin
	
}

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi