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.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

Belirli bir süreden sıfıra doğru geri sayım yapan ve düzenli aralıklarla ilerleme mesajları görüntüleyen, 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 yeteneğinizi test edecektir.

İki girdi alacaksınız:

  • "value:unit" formatında geri sayım süresini içeren bir dize (örneğin, "10:Second" veya "3:Minute")
  • "value:unit" formatında güncelleme aralığını içeren bir dize (örneğin, "1:Second")

Göreviniz şunları yapmaktır:

  1. Geri sayım süresi değerini ve birimini ayıklamak için ilk girdiyi iki nokta üst üste işaretinden bölerek ayrıştırın
  2. Güncelleme aralığı değerini ve birimini ayıklamak için ikinci girdiyi iki nokta üst üste işaretinden bölerek ayrıştırın
  3. strconv paketini kullanarak dize değerlerini tam sayı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. Zamanlayıcı başlığını görüntüleyin: "=== COUNTDOWN TIMER ==="
  6. Zamanlayıcı kurulumunu 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. Geri sayım süresi ile bir kalan süre değişkeni başlatın
  10. Geri sayım yapmak için bir döngü kullanın:
    • <-ticker.C kullanarak her ticker olayını bekleyin
    • Kalan süreden güncelleme aralığını çıkarın
    • Kalan süre 0'dan büyükse şunu görüntüleyin: "Time remaining: [remaining_time_object]"
    • Kalan süre 0 veya daha azsa, "Time's up!" mesajını görüntüleyin ve döngüden çıkın
  11. ticker.Stop() kullanarak ticker'ı durdurun
  12. Tamamlama istatistiklerini görüntüleyin:
    • "=== TIMER COMPLETE ==="
    • "Original duration: [countdown_duration_object]"
    • "Update interval: [update_interval_object]"
    • "Total updates displayed: [number_of_updates]" (kalan sürenin kaç kez görüntülendiğini hesaplayın)
  13. Tamamlama 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 tam sayılara dönüştürmek için strconv paketini ve çıktı için fmt paketini kullanın. time.NewTicker fonksiyonunun, 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() fonksiyonunu ç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