Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - مؤقت بسيط

جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 65 من 68.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

challenge icon

التحدي

سهل

قم بإنشاء تطبيق مؤقت عد تنازلي يستخدم time.NewTicker للعد التنازلي من مدة محددة إلى الصفر، مع عرض رسائل التقدم على فترات منتظمة. سيختبر هذا التحدي قدرتك على الجمع بين الـ tickers، والحلقات التكرارية (loops)، وحسابات المدة (duration calculations) لإنشاء تطبيق توقيت وظيفي.

ستتلقى مدخلين:

  • سلسلة نصية تحتوي على مدة العد التنازلي بتنسيق "value:unit" (على سبيل المثال، "10:Second" أو "3:Minute")
  • سلسلة نصية تحتوي على فاصل التحديث الزمني بتنسيق "value:unit" (على سبيل المثال، "1:Second")

مهمتك هي:

  1. تحليل المدخل الأول عن طريق التقسيم عند النقطتين الرأسيتين لاستخراج قيمة مدة العد التنازلي ووحدتها
  2. تحليل المدخل الثاني عن طريق التقسيم عند النقطتين الرأسيتين لاستخراج قيمة فاصل التحديث ووحدتها
  3. تحويل القيم النصية إلى أعداد صحيحة باستخدام حزمة strconv
  4. إنشاء كائنات time.Duration لكل من مدة العد التنازلي وفاصل التحديث باستخدام الثوابت المناسبة:
    • بالنسبة لـ "Second": اضرب في time.Second
    • بالنسبة لـ "Minute": اضرب في time.Minute
    • بالنسبة لـ "Hour": اضرب في time.Hour
  5. عرض رأس المؤقت: "=== COUNTDOWN TIMER ==="
  6. عرض إعداد المؤقت: "Starting countdown from [countdown_duration_object]"
  7. عرض تكرار التحديث: "Updates every [update_interval_object]"
  8. إنشاء ticker باستخدام time.NewTicker مع مدة فاصل التحديث
  9. تهيئة متغير للوقت المتبقي بمدة العد التنازلي
  10. استخدام حلقة تكرارية للعد التنازلي:
    • انتظار كل حدث ticker باستخدام <-ticker.C
    • طرح فاصل التحديث من الوقت المتبقي
    • إذا كان الوقت المتبقي أكبر من 0، اعرض: "Time remaining: [remaining_time_object]"
    • إذا كان الوقت المتبقي 0 أو أقل، اعرض: "Time's up!" واخرج من الحلقة
  11. إيقاف الـ ticker باستخدام ticker.Stop()
  12. عرض إحصائيات الإكمال:
    • "=== TIMER COMPLETE ==="
    • "Original duration: [countdown_duration_object]"
    • "Update interval: [update_interval_object]"
    • "Total updates displayed: [number_of_updates]" (احسب عدد المرات التي تم فيها عرض الوقت المتبقي)
  13. عرض رسالة الإكمال: "Countdown timer finished successfully"

استخدم حزمة time لعمليات الـ ticker والمدة، وحزمة strings لتقسيم السلاسل النصية المدخلة، وحزمة strconv لتحويل السلاسل النصية إلى أعداد صحيحة، وحزمة fmt للإخراج. تذكر أن time.NewTicker يعيد ticker يرسل قيمًا عبر قناته (channel) على فترات منتظمة، ويجب عليك استدعاء ticker.Stop() عند الانتهاء لتحرير الموارد. يوضح هذا التحدي كيفية إنشاء مؤقت عد تنازلي عملي باستخدام آليات التوقيت في Go.

جرّب بنفسك

package main

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

func main() {
	// قراءة المدخلات
	var countdownInput string
	var intervalInput string
	fmt.Scanln(&countdownInput)
	fmt.Scanln(&intervalInput)
	
	// تحليل مدخلات مدة العد التنازلي
	countdownParts := strings.Split(countdownInput, ":")
	countdownValue, _ := strconv.Atoi(countdownParts[0])
	countdownUnit := countdownParts[1]
	
	// تحليل مدخلات فاصل التحديث الزمني
	intervalParts := strings.Split(intervalInput, ":")
	intervalValue, _ := strconv.Atoi(intervalParts[0])
	intervalUnit := intervalParts[1]
	
	// TODO: اكتب الكود الخاص بك أدناه
	// التحويل إلى كائنات time.Duration باستخدام جمل switch
	// إنشاء مؤقت العد التنازلي (محاكاة بدون تأخير فعلي لأغراض الاختبار)
	// تنفيذ حلقة العد التنازلي
	// عرض جميع الرسائل والإحصائيات المطلوبة
	// ملاحظة: لأغراض الاختبار، قم بمحاكاة سلوك المؤقت بدون تأخير زمني حقيقي
	
}

جميع دروس Logic & Flow