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

تحية طيبة للجميع،

نود إبلاغكم بأنه سيتم خلال الأيام القادمة التنسيق مع دكاترة المواد بخصوص مواعيد الاختبارات النصفية، والعمل على إعداد جدول اختبارات موحّد يراعي ظروف الجميع، بحيث لا يتكرر أكثر من اختبار في نفس الأسبوع، وذلك تسهيلًا لمسار العملية التعليمية وضمانًا لأفضل أداء لكم.

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

وسيتم كذلك نشر جميع التكاليف العملية والنظرية الخاصة بكل مادة، مع توضيح كيفية تنفيذها ومتطلباتها، عبر القناة الرسمية للدفعة.

نأمل من الجميع متابعة القناة أولًا بأول، وسيتم الإعلان عن الجدول والتكاليف خلال الأيام القادم بإذن الله.

مع تمنياتنا لكم بالتوفيق والنجاح الدائم.
2👍2
📌 تكليف مادة الرياضيات المتقطعة – د. اختيار نعمان

على طلاب وطالبات علوم الحاسوب – الدفعة 26 إنجاز التكاليف التالية، موزّعة على شكل مجموعات، وذلك حسب توجيهات الدكتورة اختيار نعمان:

🔹 المجموعات المطلوبة والتكاليف:

1️⃣ مجموعة: دائرة الذاكرة (Cache Memory Circuit)
• تنفيذ وتصميم دائرة الذاكرة في الكاش.
• توضيح مكوناتها وآلية عملها.

2️⃣ مجموعة: الجامع (Adder)
• تنفيذ الجامع النصفي (Half Adder).
• تنفيذ الجامع الكلي (Full Adder).
• شرح عمل كل دائرة والفرق بينهما.

3️⃣ مجموعة: الطارح (Subtractor)
• تنفيذ الطارح النصفي (Half Subtractor).
• تنفيذ الطارح الكلي (Full Subtractor).
• إرفاق مخططات Truth Table.

4️⃣ مجموعة: الدوائر التعاقبية (Sequential Circuits)
• تصميم دائرة تعاقبية باستخدام Flip-Flops.
• شرح مبدأ عملها وربطها بالمخطط.

5️⃣ مجموعة: الدوائر التوافقية (Combinational Circuits)
• تصميم دائرة توافقية.
• توضيح علاقتها بالمدخلات والمخرجات.


---

🔸 ملاحظة مهمة:

سيتم خلال الأيام القادمة تجميع الطلاب وتقسيمهم إلى مجموعات لكل تكليف، إضافةً إلى تحديد موعد التسليم وإعلان كافة التفاصيل بإذن الله.

#تكليف
#رياضيات_متقطعه_نظري
#الدكتورة_اختيار_نعمان
📌 تعميم
علوم الحاسوب – الدفعة 26

نود إبلاغكم بأنه سيتم – بمشيئة الله نشر مجموعة من الأسئلة في مادة البرمجة في تمام الساعة التاسعة مساءً عبر القناة الرسمية للدفعة.

ندعو الجميع إلى التفاعل وحل الأسئلة للاستفادة، كونها تأتي ضمن إطار الإعداد الجيد وفهم أساسيات المادة قبل الاختبارات القادمة.

مع تمنياتنا لكم بالتوفيق والنجاح.
1👍1
🔴مهم
هناك فخ برمجي شائع في الأسئلة، يتعلق بكتابة التعليمة:

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