علوم الحاسوب
الخوارزميات والبرمجة والمنطق — الورقة 2
- 1.
اكتب شيفرة وصفية تُدخل درجة اختبار مراراً حتى تكون القيمة بين 0 و100 شاملة، ثم تعرض «صالحة». استخدم حلقة اختبار قبلي أو بعدي.
[4 درجة] · بدون آلة حاسبةنقاط التصحيح
- يُدخل درجة قبل حلقة مناسبة أو داخلها.
- يختبر الحدين الأدنى والأعلى بصورة صحيحة.
- يكرر ما دامت الدرجة خارج 0 إلى 100 بمنطق بولي صحيح.
- يعرض رسالة الصلاحية فقط بعد انتهاء الحلقة.
ملاحظة الفاحص: للقيمة غير الصالحة استخدم score < 0 OR score > 100؛ استخدام AND يجعل الشرط مستحيلاً.
- 2.
يحسب برنامج رسوم التوصيل من وزن الطرد. صمّم أربع حالات اختبار تغطي بيانات عادية وحدّية وغير صالحة ومتطرفة. اذكر الإدخال وغرض كل حالة.
[4 درجة] · بدون آلة حاسبةنقاط التصحيح
- يقدم قيمة عادية معقولة ويحدد غرضها.
- يقدم قيمة حدية دقيقة ذات صلة بفئة رسوم.
- يقدم بيانات غير صالحة مثل وزن سالب أو نوع بيانات خاطئ.
- يقدم قيمة متطرفة لكنها صالحة ويشرح الضغط الذي يختبره.
ملاحظة الفاحص: يستخدم اختبار الحد القيمة الدقيقة؛ والقيمتان قبلها وبعدها مباشرة فحصان إضافيان للحد.
- 3.
اكتب شيفرة وصفية لإيجاد أكبر قيمة في مصفوفة من 10 أعداد صحيحة تُدعى Scores وعرضها.
[4 درجة] · بدون آلة حاسبةنقاط التصحيح
- يصرّح بمتغير لحمل أكبر قيمة، مهيّأ بالعنصر الأول من المصفوفة.
- يستخدم حلقة لتفحّص بقية عناصر المصفوفة.
- يقارن كل عنصر بأكبر قيمة حالية ويحدّثها عند إيجاد قيمة أكبر.
- يعرض أكبر قيمة بعد انتهاء الحلقة.
ملاحظة الفاحص: هيّئ متغير «الأكبر» بالعنصر الأول لا بالصفر — فقد تكون الدرجات سالبة أو قد تحتوي المصفوفة على قيم موجبة صغيرة فقط.
- 4.
تُرتَّب القائمة [5, 2, 8, 1] تصاعدياً باستخدام الترتيب الفقاعي. اذكر القائمة بعد المرور الكامل الأول.
[3 درجة] · بدون آلة حاسبةنقاط التصحيح
- يقارن 5 و2، ويبدلهما لتصبح [2, 5, 8, 1].
- يقارن 5 و8، لا حاجة للتبديل، فتبقى [2, 5, 8, 1].
- يقارن 8 و1، ويبدلهما لإعطاء نتيجة المرور الأول النهائية [2, 5, 1, 8].
ملاحظة الفاحص: يقارن الترتيب الفقاعي كل زوج متجاور بالتتابع أثناء المرور، ويبدّل كلما كانت القيمة اليسرى أكبر من اليمنى.
- 5.
قائمة من 1,000 اسم مرتبة أبجدياً بالفعل. أي خوارزمية بحث تجد اسماً محدداً أسرع عموماً؟ أ البحث الخطي ب البحث الثنائي ج الترتيب الفقاعي د ترتيب الإدراج
[1 درجة] · بدون آلة حاسبةنقاط التصحيح
- يختار ب: يقسّم البحث الثنائي القائمة المرتبة إلى نصفين تكراراً، فيجد العناصر أسرع بكثير من فحص كل عنصر بدوره.
ملاحظة الفاحص: يتطلب البحث الثنائي أن تكون القائمة مرتبة مسبقاً؛ ولا يمكن استخدامه بصورة صحيحة على بيانات غير مرتبة.
- 6.
اكتب شيفرة وصفية باستخدام جمل IF متداخلة تعرض تقديراً لدرجة معطاة Score: 'A' إذا كانت الدرجة 90 فأكثر، و'B' إذا كانت 75 فأكثر لكن أقل من 90، و'C' فيما عدا ذلك.
[3 درجة] · بدون آلة حاسبةنقاط التصحيح
- يختبر الشرط الأعلى أولاً: IF Score >= 90 THEN يعرض 'A'.
- يضمّن ELSE IF (أو ELSE يحتوي IF) يختبر Score >= 75 لعرض 'B'.
- يوفر فرع ELSE نهائياً يعرض 'C' لأي درجة متبقية.
ملاحظة الفاحص: يتجنب اختبار الحدود من الأعلى إلى الأسفل وقوع شرط أدنى مثل Score >= 75 خطأً على درجة 95 قبل الوصول إلى فحص 'A'.
- 7.
اشرح ميزة واحدة لاستخدام دالة (روتين فرعي) بدلاً من تكرار الشيفرة نفسها عدة مرات في البرنامج.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يشرح أن الدالة تبقي المنطق في مكان واحد، فيصبح البرنامج أقصر وأسهل للقراءة.
- يشرح أنه إذا احتاج المنطق إلى تغيير، فيكفي تحديثه مرة واحدة داخل الدالة، مما يقلل الأخطاء وجهد الصيانة.
ملاحظة الفاحص: يجب إيجاد الشيفرة المكررة وتغييرها في كل مكان تظهر فيه؛ بينما تحتاج الدالة إلى تغيير مرة واحدة فقط.
- 8.
يطلب نموذج من المستخدم إدخال عمره كعدد صحيح بين 1 و120. حدّد فحصي تحقق مختلفين يمكن تطبيقهما، واشرح ما يتحقق منه كل منهما.
[4 درجة] · بدون آلة حاسبةنقاط التصحيح
- يحدد فحص نطاق.
- يشرح أن فحص النطاق يتأكد من أن القيمة تقع بين 1 و120 شاملة.
- يحدد فحص نوع.
- يشرح أن فحص النوع يتأكد من أن القيمة المدخلة عدد صحيح، لا نص أو عدد عشري.
ملاحظة الفاحص: يفحص فحص النطاق وفحص النوع خاصيتين مختلفتين للإدخال نفسه، وغالباً ما يُحتاج إليهما معاً.
- 9.
تشغّل حلقة الشيفرة الوصفية 'Count ← Count + 1' ثلاث مرات، بدءاً من Count = 0. أكمل جدول تتبع يوضح قيمة Count بعد كل من التكرارات الثلاثة.
[3 درجة] · بدون آلة حاسبةنقاط التصحيح
- يذكر أن Count = 1 بعد التكرار الأول.
- يذكر أن Count = 2 بعد التكرار الثاني.
- يذكر أن Count = 3 بعد التكرار الثالث.
ملاحظة الفاحص: يتتبع جدول التتبع كيفية تغير قيمة متغير خطوة بخطوة أثناء تنفيذ برنامج أو حلقة.
- 10.
اكتب شيفرة وصفية لحساب متوسط 5 أعداد مخزنة في مصفوفة تُدعى Marks وعرضه.
[4 درجة] · بدون آلة حاسبةنقاط التصحيح
- يصرّح بمتغير مجموع مهيأ بالصفر قبل الحلقة.
- يستخدم حلقة لإضافة كل من عناصر المصفوفة الخمسة إلى المجموع.
- يقسم المجموع النهائي على 5 بعد انتهاء الحلقة لحساب المتوسط.
- يعرض المتوسط المحسوب.
ملاحظة الفاحص: هيّئ دائماً مجموعاً تراكمياً بالصفر قبل أن تبدأ حلقة الإضافة إليه؛ فنسيان ذلك يعطي نتيجة غير صحيحة.
- 11.
اشرح الفرق بين المتغير والثابت في برنامج.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يشرح أن قيمة المتغير يمكن تغييرها أثناء تشغيل البرنامج.
- يشرح أن قيمة الثابت ثابتة وتُحدَّد مرة واحدة، ولا يمكن تغييرها أثناء تشغيل البرنامج.
ملاحظة الفاحص: استخدم ثابتاً لقيمة لا ينبغي أن تتغير أبداً أثناء التنفيذ، مثل عدد أيام الأسبوع، لمنع تغييرها عرضياً.
- 12.
اشرح لماذا تكون المصفوفة ثنائية الأبعاد بنية بيانات مناسبة لتخزين مخطط مقاعد سينما بصفوف وأعمدة من المقاعد.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يشرح أن المصفوفة ثنائية الأبعاد تنظم البيانات باستخدام مؤشرين، يمكن أن يمثلا مباشرة رقم صف ورقم عمود.
- يشرح أن ذلك يسهّل تخزين حالة مقعد عند أي موضع صف وعمود محدد والوصول إليها، بما يطابق التخطيط الحقيقي.
ملاحظة الفاحص: تناسب المصفوفة ثنائية الأبعاد بصورة طبيعية كلما كانت بيانات العالم الحقيقي منظمة بالفعل في شبكة، مثل صفوف وأعمدة من المقاعد.
- 13.
اشرح ما الذي ستعيده دالة طول النص عند تطبيقها على كلمة 'Cambridge'، واذكر سبباً واحداً قد يحتاج برمجي لهذه القيمة.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يذكر أن دالة الطول ستعيد 9، لأن 'Cambridge' تحتوي 9 أحرف.
- يذكر سبباً صحيحاً، مثل التحقق من أن اسم مستخدم أو كلمة مرور يستوفي حداً أدنى أو أقصى للطول.
ملاحظة الفاحص: تُستخدم دوال طول النص عادة في التحقق، للتأكد من أن إدخالاً ليس قصيراً جداً أو طويلاً جداً قبل قبوله.
- 14.
ميّز بين حلقة محكومة بالعدّ وحلقة محكومة بالشرط، مستخدماً مثالاً على متى تكون كل منهما مناسبة.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يشرح أن الحلقة المحكومة بالعدّ (مثل حلقة FOR) تتكرر عدداً ثابتاً ومعروفاً من المرات، مناسبة لمعالجة كل عنصر في مصفوفة ذات حجم معروف.
- يشرح أن الحلقة المحكومة بالشرط (مثل حلقة WHILE) تتكرر حتى يصبح شرط صحيحاً أو خاطئاً، مناسبة عندما يكون عدد التكرارات غير معروف مسبقاً، مثل التكرار حتى إدخال قيمة صالحة.
ملاحظة الفاحص: اختر حلقة محكومة بالعدّ عندما تعرف بالضبط عدد التكرارات المطلوبة مسبقاً؛ واختر حلقة محكومة بالشرط عندما لا تعرف.
- 15.
تُرتَّب القائمة [8, 3, 6, 1] تصاعدياً باستخدام ترتيب الإدراج. اذكر القائمة بعد أن تُدرج الخوارزمية العنصر الثاني (3) بصورة صحيحة في موضعه المرتب بين العنصرين الأولين.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يقارن 3 بـ 8 ويجد أن 3 أصغر.
- يحرك 8 لليمين ويُدرج 3 قبله، فتصبح [3, 8, 6, 1].
ملاحظة الفاحص: يبني ترتيب الإدراج قسماً مرتباً في بداية القائمة عنصراً واحداً في كل مرة، محركاً العناصر الأكبر لليمين لإفساح المجال.
- 16.
اكتب شيفرة وصفية لبحث خطي يبحث عن قيمة Target في مصفوفة تُدعى Items، ويعرض ما إذا كانت القيمة قد وُجدت.
[4 درجة] · بدون آلة حاسبةنقاط التصحيح
- يستخدم حلقة لفحص كل عنصر من المصفوفة بالتتابع، بدءاً من الأول.
- يقارن كل عنصر بقيمة Target.
- يعرض أن القيمة وُجدت إذا حدثت مطابقة أثناء الحلقة.
- يعرض أن القيمة لم توجد إذا انتهت الحلقة دون إيجاد مطابقة.
ملاحظة الفاحص: يفحص البحث الخطي كل عنصر واحداً تلو الآخر حتى تُوجد مطابقة أو تنتهي القائمة — بسيط، لكنه أبطأ من البحث الثنائي في القوائم الكبيرة المرتبة.
- 17.
اشرح ما يمثله رمز القرار (المعيّن الشكل) في مخطط انسيابي.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يشرح أن رمز القرار يمثل نقطة يتحقق فيها البرنامج من شرط، إما صحيح أو خاطئ.
- يشرح أن المخطط الانسيابي يتفرع إلى مسارات مختلفة حسب نتيجة هذا الفحص.
ملاحظة الفاحص: ينبغي تسمية كل مسار يخرج من رمز القرار بوضوح، عادة بـ «نعم»/«لا» أو «صحيح»/«خاطئ».
- 18.
اكتب شيفرة وصفية لعدّ كم قيمة في مصفوفة تُدعى Scores أكبر من 50.
[4 درجة] · بدون آلة حاسبةنقاط التصحيح
- يصرّح بمتغير عدّاد مهيأ بالصفر قبل الحلقة.
- يستخدم حلقة لفحص كل عنصر من المصفوفة بالتتابع.
- يزيد العدّاد بمقدار 1 فقط عندما يكون العنصر أكبر من 50.
- يعرض قيمة العدّاد النهائية بعد انتهاء الحلقة.
ملاحظة الفاحص: تزيد خوارزمية العدّ عدّادها فقط عند تحقق الشرط، بخلاف خوارزمية الجمع التي تضيف القيمة الفعلية في كل مرة.
- 19.
اشرح ميزة واحدة لكتابة إجراء يقبل معاملات، بدلاً من إجراء يعمل دائماً على قيم ثابتة مدمجة.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يشرح أن الإجراء الذي يقبل معاملات يمكن إعادة استخدامه بقيم إدخال مختلفة في كل مرة يُستدعى فيها، بدلاً من العمل دوماً على قيمة ثابتة واحدة.
- يشرح أن ذلك يجعل الشيفرة أكثر مرونة ويتجنب كتابة إجراء شبه مطابق لكل قيمة إدخال مختلفة مطلوبة.
ملاحظة الفاحص: تتيح المعاملات لإجراء واحد التعامل مع حالات مختلفة كثيرة، بدلاً من الحاجة إلى إجراء منفصل ومكرر لكل قيمة محددة.
- 20.
يتطلب نموذج من المستخدم إدخال اسمه. اشرح ما الذي سيفعله فحص الوجود، ولماذا هو مطلوب لهذا الحقل.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يشرح أن فحص الوجود يتأكد من أن المستخدم لم يترك الحقل فارغاً تماماً.
- يشرح أن ذلك مطلوب لأن حقل الاسم بيانات مطلوبة، ولا ينبغي للبرنامج قبول إرسال يفتقدها.
ملاحظة الفاحص: فحص الوجود أبسط أشكال التحقق: يتأكد فقط من إدخال شيء ما، لا من أنه النوع الصحيح من البيانات.
- 21.
يتطلب نظام أن تكون كلمة المرور الجديدة 8 أحرف على الأقل. اشرح ما الذي سيفعله فحص الطول عند إدخال كلمة المرور هذه.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يشرح أن فحص الطول يحسب عدد الأحرف المدخلة.
- يشرح أنه يرفض الإدخال إذا كان هذا العدد أقل من الحد الأدنى (أو أعلى من حد أقصى، إن وُجد) للطول المسموح.
ملاحظة الفاحص: يحسب فحص الطول الأحرف تحديداً؛ ولا يتحقق مما إذا كانت تلك الأحرف من النوع الصحيح.
- 22.
اشرح، ببساطة، ما يعنيه أن تكون دالة تكرارية (recursive)، مستخدماً دالة تحسب المضروب مثالاً.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يشرح أن الدالة التكرارية دالة تستدعي نفسها كجزء من تنفيذها.
- يطبق ذلك على المثال: يمكن لدالة المضروب حساب factorial(n) باستدعاء نفسها لحساب factorial(n-1)، وهكذا، حتى تصل إلى حالة أساس.
ملاحظة الفاحص: تحتاج كل دالة تكرارية إلى حالة أساس — نقطة تتوقف فيها عن استدعاء نفسها — وإلا لتكررت إلى الأبد.
- 23.
اشرح ميزة واحدة لبيئة تطوير متكاملة (IDE) تساعد برمجياً على كتابة شيفرة بأخطاء أقل.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يحدد ميزة صحيحة، مثل تمييز بناء الجملة أو الإكمال التلقائي أو مصحح أخطاء مدمج.
- يشرح كيف تساعد هذه الميزة، مثل تمييز بناء الجملة الذي يسهّل ملاحظة قوس مفقود أو كلمة مفتاحية مكتوبة خطأً.
ملاحظة الفاحص: توجد أدوات بيئة التطوير المتكاملة تحديداً لاكتشاف الأخطاء الشائعة مبكراً، حتى قبل تشغيل البرنامج.
- 24.
اشرح الغرض من استخدام أسماء متغيرات ذات معنى، مثل 'studentAge' بدلاً من 'x'، عند كتابة برنامج.
[2 درجة] · بدون آلة حاسبةنقاط التصحيح
- يشرح أن الاسم ذا المعنى يوضح نوع البيانات التي يخزنها المتغير، دون الحاجة لقراءة الشيفرة المحيطة بعناية.
- يشرح أن ذلك يسهّل على المبرمج الأصلي، أو شخص آخر، قراءة البرنامج وفهمه وصيانته لاحقاً.
ملاحظة الفاحص: لا تكلف الأسماء ذات المعنى الحاسوب الذي يشغّل البرنامج شيئاً، لكنها توفر وقتاً حقيقياً لأي إنسان يقرأ الشيفرة لاحقاً.