AzLearn

اختبار الأساسيات

Basics Quiz

اختبار ~18 دقيقة

اختبار الأساسيات — Basics Quiz

هذا اختبار عملي، ليس اختبار حفظ. اقرأ السؤال، عدّل الكود، وشغله. إذا عرفت لماذا تعمل الإجابة، فأنت جاهز للانتقال لهياكل البيانات.

قبل أن تبدأ، تعامل مع كل سؤال كأنه مراجعة لقرار برمجي صغير. السؤال الأول يراجع اختيار النوع والحساب المباشر. السؤال الثاني يراجع الدوال التي ترجع قيمة. السؤال الثالث يراجع العلاقة بين الحلقة والشرط. لا تنتقل للسؤال التالي بمجرد أن يظهر الناتج الصحيح؛ اقرأ الحل واسأل نفسك: هل الاسم واضح؟ هل النوع مناسب؟ هل يوجد سطر زائد لا يخدم النتيجة؟

هذا مثال سريع يذكرك بشكل الحلول التي نريدها: قيم صغيرة، حساب واضح، وطباعة مستقرة.

main.go

في الاختبارات العملية، الاستقرار مهم. إذا كان التحدي يتوقع نصاً محدداً، فالمسافات وعلامات الترقيم جزء من الإجابة. هذا ليس تشدداً بلا معنى؛ البرامج التي تطبع تقارير أو رسائل API تحتاج تنسيقاً ثابتاً حتى يعتمد عليها المستخدم أو الاختبار.

السؤال 1: نوع مناسب وحساب واضح

استخدم الأنواع المناسبة لحساب عدد دقائق العمل في عدة جلسات.

تحدي — Challenge

بعد حل السؤال الأول، لاحظ أن int كاف هنا لأن الدقائق أعداد صحيحة. لا تستخدم float64 لمجرد أن الحساب رياضي؛ اختر النوع بناءً على طبيعة البيانات. لو كانت القيم بالساعات ونصف الساعة فقد تحتاج عدداً عشرياً، أما الدقائق فعدد صحيح طبيعي ومقروء.

السؤال 2: دالة ترجع نصاً

الدوال ليست للحساب فقط. أحياناً تبني جملة مفهومة من بيانات صغيرة.

تحدي — Challenge

في هذا السؤال، لا تطبع داخل الدالة. الدالة welcome مهمتها بناء النص وإرجاعه، وmain يقرر ماذا يفعل به. هذا الفصل البسيط يفتح لك لاحقاً إمكانية اختبار الدالة وحدها، أو استخدامها في HTTP response، أو تسجيلها في log، دون إعادة كتابة المنطق.

السؤال 3: شرط داخل حلقة

اطبع مجموع الأعداد الزوجية فقط من 1 إلى 10.

تحدي — Challenge

عند استخدام % تذكر أن التعبير n%2 == 0 يعني أن باقي قسمة العدد على 2 يساوي صفراً، وهذا تعريف العدد الزوجي. لا تحتاج قائمة منفصلة للأعداد الزوجية ولا شروطاً كثيرة مثل if n == 2 || n == 4. الحلقة موجودة لتجعل التكرار عاماً، والشرط موجود ليحدد ما يدخل في المجموع.

كيف تراجع إجابتك

راجع كل حل من ثلاث زوايا. أولاً: هل ينتج النص المتوقع حرفياً؟ ثانياً: هل استخدمت الأداة المناسبة من الفصل، مثل دالة أو حلقة أو شرط، بدلاً من كتابة الناتج النهائي مباشرة؟ ثالثاً: هل يستطيع قارئ جديد فهم النية من أسماء المتغيرات؟ أسماء مثل total وsum وlevel أفضل من أسماء عشوائية لأنها تصف الدور لا طريقة التنفيذ فقط.

إذا أخطأت، لا تمسح الحل كله. شغّل الكود، اقرأ رسالة الخطأ، ثم عدّل أصغر جزء ممكن. هذه عادة مهمة في Go: المترجم يعطيك إشارات دقيقة، والاختبار المتوقع يخبرك أين اختلف السلوك. الهدف من الاختبار أن تتدرب على دورة صغيرة: اكتب، شغّل، اقرأ، صحح.

مراجعة سريعة

إذا تعثرت في سؤال، ارجع للدرس المرتبط به:

  • المتغيرات والثوابت عندما تحتاج تعريف قيمة.
  • الأنواع عندما تحتاج تحويل int إلى float64 أو العكس.
  • الدوال عندما ترى تكراراً أو نية تحتاج اسماً.
  • التحكم في التدفق عندما يختلف السلوك حسب شرط أو تكرار.

عند إتقان هذه النقاط تصبح الدروس القادمة أسهل، لأن slice وmap وstruct ليست بديلاً عن الأساسيات؛ هي تبني فوقها. ستظل تحتاج متغيرات واضحة، دوال صغيرة، وشروطاً صحيحة في كل فصل لاحق.