🔰اللجنة العلمية CS مستوى اول 🔰 – Telegram
🔰اللجنة العلمية CS مستوى اول 🔰
718 subscribers
458 photos
16 videos
426 files
97 links
💻 من الصفر إلى البطل في عالم البرمجة🔥
هنا نصنع معاً أبطال الكود والخوارزميات كل المحاضرات والمواد الدراسية بين أيديكم لتبدأوا رحلتكم البرمجية بثقة
مستقبلكم يبدأ اليوم لنبنيه معاً
Download Telegram
🔴مهم
هناك فخ برمجي شائع في الأسئلة، يتعلق بكتابة التعليمة:

i = i++;

يعتقد كثير من الطلاب أن هذه التعليمة ستزيد قيمة المتغير i، فلو كانت قيمة i تساوي 5 قبل التنفيذ، سيتوقع البعض أن تصبح 6 بعد التنفيذ.

لكن الحقيقة أن i ستظل 5!

والسبب في ذلك يعود إلى طبيعة الزيادة بعدية التنفيذ (post-increment)، حيث أن i++ تقوم بالخطوات التالية:

1. تحفظ القيمة القديمة للمتغير في مؤقت: temp = 5.


2. تزيد قيمة المتغير داخليًا: i = 6.


3. تُرجع القيمة القديمة (5) كنتيجة للتعبير.



وبما أن التعليمة كاملة هي i = i++;، فإنه يتم تخزين القيمة القديمة مرة أخرى في i، فتظل القيمة النهائية: i = 5.

يمكن تشبيه الأمر كالتالي: "كأنك أودعت دينارًا في حسابك، ثم ألقيت بطاقة الحساب في سلة المهملات قبل أن تُسجَّل العملية." 😂
الزيادة تمت بالفعل، لكنها لم تُسجَّل لأن نتيجة التعبير أعادت القيمة القديمة للمتغير.
هذا المثال يُصنَّف تحت ما يُعرف بـ السلوك غير المحدد (Undefined Behavior) في لغة C++، أي أن اللغة نفسها لا تضمن النتيجة النهائية، وقد تختلف النتيجة من كومبايلر إلى آخر، أو حسب إعدادات التحسين (Optimization).

السبب في حدوث ذلك هو أنك تقوم بتعديل المتغير واستخدامه في نفس الجملة أكثر من مرة، دون وجود نقطة تسلسل (Sequence Point) واضحة تحدد ترتيب التنفيذ.

بعبارة أخرى، التعليمة مثل:

x = x++ + x++;

تحتوي على تعديل المتغير x واستخدامه أكثر من مرة في نفس التعبير، والكومبايلر ليس ملزمًا بأن يحدد أي عملية ++x تنفذ أولًا، أو متى يتم حساب قيمة x في كل خطوة.

لذلك، عند تنفيذ الكود، قد ترى نتائج مختلفة مثل:

10
11
12

وكلها صحيحة من وجهة نظر الكومبايلر، لأن السلوك غير معرّف أصلاً.


---

كيف تجعل السلوك محددًا وواضحًا؟
افصل عمليات الزيادة في جمل مستقلة، بحيث يكون كل تعديل واضحًا:

int x = 4;
++x;
++x;
cout << x + x;

أو:

int x = 4;
int a = ++x;
int b = ++x;
cout << a + b;

بهذه الطريقة، يكون السلوك محددًا، ولا يحدث أي لخبطة أو نتائج غير متوقعة.
1
🔴 هام جدًا
تم التنسيق مع الدكتور عبدالله الوصابي والدكتور صهيب البريهي، وتم تحديد الأسبوع الثامن لاختبار مادة التكامل.
وكما هو موضّح في الجدول، سيكون الاختبار في أسبوع واحد لأن المادة مشتركة، وتكون المذاكرة مرة واحدة للمادتين لأنهما نفس المنهج.

#اختبار_نصفي
#الدكتور_عبدالله_الوصابي
#الدكتور_صهيب_البريهي
#تكامل
2
🔴 هااام جدا
اختبار اللغة الانجليزية الاسبوع القادم ان شاء الله
#اختبار_نصفي
#الدكتور_احمد_الاصبحي
#لغة_انجليزية_102
🤷‍♂2👍1🤣1
🔴 هااام غدا بإذن الله سيتم ارسال درجات الاحصاء في مجموعات الوتس
عن طريق المناديب

للاختبار النصفي الدكتور علي اليساني
🔥21👍1