Menu
CoddyTech

Rekap: Timer Sederhana

Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 65 dari 68.

challenge icon

Tantangan

Mudah

Buat aplikasi timer hitung mundur yang menggunakan time.NewTicker untuk menghitung mundur dari durasi yang ditentukan hingga nol, sambil menampilkan pesan progres secara berkala. Tantangan ini akan menguji kemampuanmu menggabungkan ticker, perulangan, dan perhitungan durasi untuk membuat aplikasi pengatur waktu yang berfungsi.

Kamu akan menerima dua input:

  • String yang berisi durasi hitung mundur dengan format "value:unit" (misalnya, "10:Second" atau "3:Minute")
  • String yang berisi interval pembaruan dengan format "value:unit" (misalnya, "1:Second")

Tugasmu adalah:

  1. Parse input pertama dengan memisahkannya pada tanda titik dua untuk mengambil nilai dan unit durasi hitung mundur
  2. Parse input kedua dengan memisahkannya pada tanda titik dua untuk mengambil nilai dan unit interval pembaruan
  3. Ubah nilai string menjadi bilangan bulat menggunakan package strconv
  4. Buat object time.Duration untuk durasi hitung mundur dan interval pembaruan menggunakan konstanta yang sesuai:
    • Untuk "Second": kalikan dengan time.Second
    • Untuk "Minute": kalikan dengan time.Minute
    • Untuk "Hour": kalikan dengan time.Hour
  5. Tampilkan header timer: "=== COUNTDOWN TIMER ==="
  6. Tampilkan pengaturan timer: "Starting countdown from [countdown_duration_object]"
  7. Tampilkan frekuensi pembaruan: "Updates every [update_interval_object]"
  8. Buat ticker menggunakan time.NewTicker dengan durasi interval pembaruan
  9. Inisialisasi variabel waktu tersisa dengan durasi hitung mundur
  10. Gunakan perulangan untuk menghitung mundur:
    • Tunggu setiap peristiwa ticker menggunakan <-ticker.C
    • Kurangi waktu tersisa dengan interval pembaruan
    • Jika waktu tersisa lebih besar dari 0, tampilkan: "Time remaining: [remaining_time_object]"
    • Jika waktu tersisa 0 atau kurang, tampilkan: "Time's up!" lalu keluar dari perulangan
  11. Hentikan ticker menggunakan ticker.Stop()
  12. Tampilkan statistik penyelesaian:
    • "=== TIMER COMPLETE ==="
    • "Original duration: [countdown_duration_object]"
    • "Update interval: [update_interval_object]"
    • "Total updates displayed: [number_of_updates]" (hitung berapa kali waktu tersisa ditampilkan)
  13. Tampilkan pesan penyelesaian: "Countdown timer finished successfully"

Gunakan package time untuk operasi ticker dan durasi, package strings untuk memisahkan string input, package strconv untuk mengubah string menjadi bilangan bulat, dan package fmt untuk output. Ingat, time.NewTicker mengembalikan ticker yang mengirimkan nilai melalui channel-nya secara berkala, dan kamu harus memanggil ticker.Stop() setelah selesai untuk membebaskan resource. Tantangan ini menunjukkan cara membuat timer hitung mundur yang praktis menggunakan mekanisme pengatur waktu Go.

Coba sendiri

package main

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

func main() {
	// Baca input
	var countdownInput string
	var intervalInput string
	fmt.Scanln(&countdownInput)
	fmt.Scanln(&intervalInput)
	
	// Uraikan input durasi hitung mundur
	countdownParts := strings.Split(countdownInput, ":")
	countdownValue, _ := strconv.Atoi(countdownParts[0])
	countdownUnit := countdownParts[1]
	
	// Uraikan input interval pembaruan
	intervalParts := strings.Split(intervalInput, ":")
	intervalValue, _ := strconv.Atoi(intervalParts[0])
	intervalUnit := intervalParts[1]
	
	// TODO: Tulis kodemu di bawah ini
	// Ubah menjadi object time.Duration menggunakan pernyataan switch
	// Buat pengatur waktu hitung mundur (simulasikan tanpa jeda sungguhan untuk pengujian)
	// Terapkan perulangan hitung mundur
	// Tampilkan semua pesan dan statistik yang diperlukan
	// Note: Untuk pengujian, simulasikan perilaku ticker tanpa jeda waktu sungguhan
	
}

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online