Menu
CoddyTech

Durasi Waktu

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

Saat bekerja dengan waktu di Go, kamu akan sering perlu merepresentasikan durasi waktu, seperti "5 menit" atau "2 jam". Go menyediakan tipe time.Duration khusus untuk tujuan ini.

time.Duration merepresentasikan rentang waktu antara dua saat. Go menyertakan beberapa konstanta bawaan yang membuat pembuatan durasi menjadi sederhana dan mudah dibaca:

tenMinutes := 10 * time.Minute
twoHours := 2 * time.Hour
thirtySeconds := 30 * time.Second

Konstanta durasi yang paling umum digunakan adalah time.Nanosecond, time.Microsecond, time.Millisecond, time.Second, time.Minute, dan time.Hour. Kamu bisa mengalikan konstanta ini dengan bilangan bulat untuk membuat durasi yang tepat sesuai kebutuhanmu.

Nilai durasi sangat penting untuk aritmetika waktu, operasi penjadwalan, dan mengendalikan pengaturan waktu dalam programmu. Nilai ini bekerja lancar dengan fungsi waktu lainnya dan menyediakan cara yang jelas serta mudah dibaca untuk menyatakan rentang waktu dalam kodemu.

challenge icon

Tantangan

Mudah

Buat timer sesi latihan yang menggunakan time.Duration untuk melacak berbagai interval latihan dan waktu istirahat. Tantangan ini akan menguji kemampuanmu membuat nilai durasi menggunakan konstanta bawaan Go dan melakukan perhitungan dengannya.

Kamu akan menerima dua input:

  • Sebuah string berisi definisi latihan dengan format "exercise1:duration_value:duration_unit,exercise2:duration_value:duration_unit" (misalnya, "Push-ups:30:Second,Plank:2:Minute,Squats:45:Second")
  • Sebuah string berisi informasi waktu istirahat dengan format "rest_duration_value:rest_duration_unit" (misalnya, "15:Second")

Tugasmu adalah:

  1. Parsing input pertama dengan memisahkannya berdasarkan koma untuk mendapatkan setiap entri latihan
  2. Untuk setiap entri latihan, pisahkan berdasarkan titik dua untuk mengambil nama latihan, nilai durasi (sebagai string), dan satuan durasi
  3. Parsing input kedua dengan memisahkannya berdasarkan titik dua untuk mendapatkan nilai dan satuan durasi istirahat
  4. Ubah nilai durasi dari string menjadi integer dan buat object time.Duration 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 aplikasi: "=== WORKOUT SESSION TIMER ==="
  6. Tampilkan penyiapan sesi: "Setting up workout session..."
  7. Untuk setiap latihan, tampilkan: "Exercise: [exercise_name] - Duration: [duration_object]"
  8. Tampilkan waktu istirahat: "Rest period between exercises: [rest_duration_object]"
  9. Hitung dan tampilkan perincian sesi:
    • "=== SESSION BREAKDOWN ==="
    • Untuk setiap latihan: "[exercise_name]: [duration_in_seconds] seconds"
    • "Rest periods: [rest_duration_in_seconds] seconds each"
  10. Hitung total waktu sesi, yaitu jumlah semua durasi latihan ditambah waktu istirahat di antara latihan:
    • "=== TIMING CALCULATIONS ==="
    • "Total exercise time: [total_exercise_duration_object]"
    • "Total rest time: [total_rest_duration_object]" (waktu istirahat di antara latihan, jadi jumlahnya satu kurang dari jumlah latihan)
    • "Complete session duration: [total_session_duration_object]"
  11. Tampilkan statistik sesi:
    • "=== SESSION STATISTICS ==="
    • "Number of exercises: [number_of_exercises]"
    • "Longest exercise: [longest_exercise_name] ([longest_duration_object])"
    • "Shortest exercise: [shortest_exercise_name] ([shortest_duration_object])"
    • "Average exercise duration: [average_duration_in_seconds] seconds"
  12. Tampilkan konversi waktu:
    • "=== TIME CONVERSIONS ==="
    • "Session duration in minutes: [total_minutes]" (konversikan total durasi sesi ke menit)
    • "Session duration in hours: [total_hours]" (konversikan total durasi sesi ke jam, tampilkan sebagai angka desimal)
  13. Tampilkan pesan penyelesaian: "Workout session timer configured successfully"

Gunakan package time untuk mengolah durasi, package strings untuk memisahkan string input, package strconv untuk mengubah angka dalam string menjadi integer, dan package fmt untuk output berformat. Ingat bahwa nilai time.Duration dapat dijumlahkan dan dikonversikan ke satuan lain menggunakan method seperti Seconds(), Minutes(), dan Hours(). Tantangan ini menunjukkan cara membuat dan mengolah nilai durasi untuk aplikasi pencatat waktu.

Coba sendiri

package main

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

func main() {
	// Baca input
	var exerciseInput string
	var restInput string
	fmt.Scanln(&exerciseInput)
	fmt.Scanln(&restInput)
	
	// Uraikan latihan dari input
	exerciseEntries := strings.Split(exerciseInput, ",")
	
	// Uraikan waktu istirahat dari input
	restParts := strings.Split(restInput, ":")
	
	// TODO: Tulis kodemu di bawah ini
	// 1. Uraikan setiap entri latihan untuk mengambil nama, nilai durasi, dan satuan
	// 2. Ubah nilai durasi menjadi bilangan bulat dan buat object time.Duration
	// 3. Uraikan durasi istirahat dan buat object time.Duration
	// 4. Tampilkan informasi dan perhitungan sesi latihan
	// 5. Hitung statistik sesi dan konversi waktu
	
	// Ingat untuk menghasilkan output berisi semua informasi yang diminta dalam tantangan
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online