انتقل إلى المحتوى
Topos Uranos

ملخص

يفتتح هذا الدرس الوحدة الثانية من الدورة، المخصّصة للبيانات وأنواعها. ويشرح الغاية من الوحدة: أن تعلّم أن كل معطى في البرنامج يقيم في الذاكرة بنوع يحدّد القيم التي يمكن أن يأخذها، والحيّز الذي يشغله، والعمليات التي يقبلها، وأن لهذه الحدود عواقب يمكن ملاحظتها؛ ويعرض دروسها الأربعة والخيط الذي يجمعها، من المتغير بوصفه خانة لها اسم وقيمة إلى التحويلات بين الأنواع والثوابت؛ ويذكّر بما تفترض الوحدة أنه معلوم من الأولى، وهو كتابة برنامج يقرأ ويكتب وترجمته وتنفيذه؛ ويصوغ المسألة التي تحلّها الوحدة، وهي مسألة برنامج يبدو صحيحًا ولا تتطابق حساباته مع حسابات الرياضيات، بدءًا بالمجموع 0.1+0.20.1 + 0.2، الذي لا يساوي في الحاسوب 0.30.3 تمامًا؛ ويبيّن إلى أين تقود، في الوحدات اللاحقة وفي دورة البرمجة بلغة C++ II.

أهداف التعلم

  1. وصف تسلسل محتويات الوحدة، وشرح ما يقدّمه كل درس للدرس الذي يليه.
  2. تذكّر ما يلزم من الوحدة 1 (دورة الترجمة والتنفيذ، والإخراج المنسَّق، والقراءة بـ std::cin، وقراءة رسائل المترجم)، ومراجعته عند الحاجة.
  3. الشرح، بمثال، لماذا لا يكون عدد في البرنامج عددًا من أعداد الرياضيات، واستباق سبب كون 0.1+0.20.1 + 0.2 لا يساوي 0.30.3 تمامًا في الحاسوب.
  4. التعرّف على ما يُنتظر إتقانه في نهاية الوحدة، وتمييزه ممّا سيُتعلَّم في الوحدات اللاحقة.

تقييم الدخول

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

تقييم الدخول

قبل أن تبدأ الوحدة، قِس نقطة انطلاقك. إنه تقييم ذاتي قصير: لا يُمنح عليه درجة، وتُحفظ نتيجته في متصفحك فقط.

  1. السؤال 1من وحدات سابقةيقول إجراء: «1. يأخذ rr القيمة 17. 2. يأخذ rr القيمة r−5r - 5. 3. يأخذ rr القيمة r−5r - 5». كم تساوي قيمة rr في النهاية؟

  2. السؤال 2من وحدات سابقةماذا تكتب التعليمة std::println("{:.2f}", 2.0 / 3);؟

  3. السؤال 3من وحدات سابقةيُراد كتابة 12.34612.346 بمنزلتين عشريتين مع التقريب. ما الذي نحصل عليه؟

  4. السؤال 4من وحدات سابقةفي السطر 5 من برنامج const int pages{12}، وفي السطر 6 std::println("{}", pages);. ويكتب المترجم 6:5: error: expected ',' or ';' before 'std'. أين العيب؟

  5. السؤال 5يصرّح برنامج بـ int a{2}; وint b{7};، ثم ينفّذ a = b; وb = 10;. كم تساوي a في النهاية؟

  6. السؤال 6كيف يُكتب العدد 13 في الأساس 2؟

  7. السؤال 7متغير int من 4 بايت يخزّن 2 147 483 6472\,147\,483\,647، قيمته العظمى، ويضيف إليه البرنامج 1. ما الذي يمكن تأكيده؟

  8. السؤال 8هل لـ 1/31/3 تمثيل عشري منتهٍ؟

  9. السؤال 9ماذا تكتب std::println("{}", 0.1 + 0.2);؟

  10. السؤال 10يصرّح برنامج بـ const double ratio{7 / 2}; ويكتب ratio. ماذا يظهر؟