Menu
Coddy logo textTech

Zaman Süresi

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

Go'da zamanla çalışırken, genellikle "5 dakika" veya "2 saat" gibi zaman aralıklarını temsil etmeniz gerekecektir. Go, özellikle bu amaç için time.Duration türünü sağlar.

Bir time.Duration, iki an arasındaki bir zaman aralığını temsil eder. Go, süre oluşturmayı basit ve okunabilir kılan birkaç önceden tanımlanmış sabit içerir:

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

En yaygın kullanılan süre sabitleri şunlardır: time.Nanosecond, time.Microsecond, time.Millisecond, time.Second, time.Minute ve time.Hour. İhtiyacınız olan tam süreyi oluşturmak için bu sabitleri tam sayılarla çarpabilirsiniz.

Süre değerleri; zaman aritmetiği, zamanlama işlemleri ve programlarınızdaki zamanlamayı kontrol etmek için temeldir. Diğer zaman fonksiyonlarıyla sorunsuz bir şekilde çalışırlar ve kodunuzdaki zaman aralıklarını ifade etmek için net ve okunabilir bir yol sunarlar.

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

Farklı egzersiz aralıklarını ve dinlenme sürelerini takip etmek için time.Duration kullanan bir antrenman seansı zamanlayıcısı oluşturun. Bu zorluk, Go'nun önceden tanımlanmış sabitlerini kullanarak süre değerleri oluşturma ve bunlarla hesaplamalar yapma yeteneğinizi test edecektir.

İki girdi alacaksınız:

  • "egzersiz1:süre_değeri:süre_birimi,egzersiz2:süre_değeri:süre_birimi" formatında egzersiz tanımlarını içeren bir dize (örneğin, "Push-ups:30:Second,Plank:2:Minute,Squats:45:Second")
  • "dinlenme_süresi_değeri:dinlenme_süresi_birimi" formatında dinlenme süresi bilgilerini içeren bir dize (örneğin, "15:Second")

Göreviniz şunları yapmaktır:

  1. Bireysel egzersiz girişlerini elde etmek için ilk girdiyi virgüllere göre ayırarak ayrıştırın
  2. Her egzersiz girişi için, egzersiz adını, süre değerini (dize olarak) ve süre birimini çıkarmak için iki nokta üst üste işaretine göre ayırın
  3. Dinlenme süresi değerini ve birimini elde etmek için ikinci girdiyi iki nokta üst üste işaretine göre ayırarak ayrıştırın
  4. Süre değerlerini dizelerden tam sayılara dönüştürün ve uygun sabitleri kullanarak 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. Uygulama başlığını görüntüleyin: "=== WORKOUT SESSION TIMER ==="
  6. Oturum kurulumunu görüntüleyin: "Setting up workout session..."
  7. Her egzersiz için şunu görüntüleyin: "Exercise: [exercise_name] - Duration: [duration_object]"
  8. Dinlenme süresini görüntüleyin: "Rest period between exercises: [rest_duration_object]"
  9. Oturum dökümünü hesaplayın ve görüntüleyin:
    • "=== SESSION BREAKDOWN ==="
    • Her egzersiz için: "[exercise_name]: [duration_in_seconds] seconds"
    • "Rest periods: [rest_duration_in_seconds] seconds each"
  10. Toplam oturum süresini hesaplayın (tüm egzersiz sürelerinin toplamı artı egzersizler arasındaki dinlenme süreleri):
    • "=== TIMING CALCULATIONS ==="
    • "Total exercise time: [total_exercise_duration_object]"
    • "Total rest time: [total_rest_duration_object]" (egzersizler arasındaki dinlenme süreleri, yani egzersiz sayısından bir eksik)
    • "Complete session duration: [total_session_duration_object]"
  11. Oturum istatistiklerini görüntüleyin:
    • "=== 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. Zaman dönüşümlerini görüntüleyin:
    • "=== TIME CONVERSIONS ==="
    • "Session duration in minutes: [total_minutes]" (toplam oturum süresini dakikaya dönüştürün)
    • "Session duration in hours: [total_hours]" (toplam oturum süresini saate dönüştürün, ondalık olarak gösterin)
  13. Tamamlanma mesajını görüntüleyin: "Workout session timer configured successfully"

Sürelerle çalışmak için time paketini, giriş dizelerini bölmek için strings paketini, dize sayılarını tam sayılara dönüştürmek için strconv paketini ve formatlı çıktı için fmt paketini kullanın. time.Duration değerlerinin birbirine eklenebileceğini ve Seconds(), Minutes() ve Hours() gibi yöntemler kullanılarak farklı birimlere dönüştürülebileceğini unutmayın. Bu zorluk, zamanlama uygulamaları için süre değerlerinin nasıl oluşturulacağını ve manipüle edileceğini gösterir.

Kopya kağıdı

Go, iki an arasındaki zaman dilimlerini temsil etmek için time.Duration türünü sağlar.

Tam sayılarla çarpılan önceden tanımlanmış sabitleri kullanarak süreler oluşturun:

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

Yaygın süre sabitleri şunları içerir:

  • time.Nanosecond
  • time.Microsecond
  • time.Millisecond
  • time.Second
  • time.Minute
  • time.Hour

Süre değerleri birbirine eklenebilir ve Seconds(), Minutes() ve Hours() gibi yöntemler kullanılarak farklı birimlere dönüştürülebilir.

Kendin dene

package main

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

func main() {
	// Girdiyi oku
	var exerciseInput string
	var restInput string
	fmt.Scanln(&exerciseInput)
	fmt.Scanln(&restInput)
	
	// Girdiden egzersizleri ayrıştır
	exerciseEntries := strings.Split(exerciseInput, ",")
	
	// Girdiden dinlenme süresini ayrıştır
	restParts := strings.Split(restInput, ":")
	
	// TODO: Kodunuzu aşağıya yazın
	// 1. İsim, süre değeri ve birimi çıkarmak için her bir egzersiz girişini ayrıştırın
	// 2. Süre değerlerini tam sayılara dönüştürün ve time.Duration nesneleri oluşturun
	// 3. Dinlenme süresini ayrıştırın ve time.Duration nesnesi oluşturun
	// 4. Antrenman seansı bilgilerini ve hesaplamaları görüntüleyin
	// 5. Seans istatistiklerini ve zaman dönüşümlerini hesaplayın
	
	// Yarışmada belirtilen tüm gerekli bilgileri çıktı olarak vermeyi unutmayın
}
quiz iconKendini test et

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

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