تحديات برمجية (متوسط)

مقدمة

التمارين والتحديات البرمجية تثبت ما تعلمت وتمني مهاراتك البرمجية وقدراتك على حل المشكلات ﻷنها تمنحك الفرصة للتطبيق على ما تعلّمت واستخدامه بشكل واقعي في أمثلة حقيقية؛ لذلك هي من أهم أساليب التعلم... في هذا الدرس ستجد تمارين متعددة على كل ما تعلّمت فإحرص بشدّة على حلّها بأفضل طريقة

يمكنك حلّ التحديات أثناء تصفحك للدرس داخل منصة دليل مبرمج عن طريق الضغط على "ابدأ التحدي" وستتمكن من التحقق من حلّك هل صحيح أم ﻻ

إذا واجهتك مشكلة يمكنك الرجوع لنا في مجموعات التعلم على slack أو مجموعة فيسبوك وسنحرص على مساعدتك وإرشادك.

تحدي مجموع مربع اﻷعداد

تحدي مجموع مربع اﻷعداد

قم بكتابة دالة اسمها sumSquare تأخذ مصفوفة من اﻷعداد كمُدخل، وتقوم بإرجاع ناتج مجموع مربع كل اﻷعداد، أي تقوم بضرب كل عدد في نفسه ثم تقوم بجمع كل النواتج، مثلاً: sumSquare([2, 2, 3]) تقوم بإرجاع 17 ﻷن 2*2 + 2*2 + 3*3 = 17

تحدي العدد اﻷصغر

تحدي العدد اﻷصغر

قم بكتابة دالة اسمها lowestNum تأخذ مصفوفة من اﻷعداد كمُدخل، وتقوم بإرجاع العدد اﻷصغر، مثلاً: lowestNum([5, 2, 3]) تقوم بإرجاع 2.

تحدي تحويل السالب إلى موجب

تحدي تحويل السالب إلى موجب

قم بكتابة دالة اسمها makePositive تأخذ عدد كمُدخل، وإن كان العدد سالب تقوم بإرجاعه موجب، أما إن كان موجب تقوم بإرجاعه كما هو، وإن كان العدد يساوي 0 تقوم بإرجاع 0، مثلاً: makePositive(-2) تقوم بإرجاع 2، أما makePositive(4) تقوم بإرجاع 4 كما هي.

تحدي حساب المدى

تحدي حساب المدى

قم بكتابة دالة range تأخذ مصفوفة من اﻷعداد كمُدخل، وتقوم بإرجاع المدى لهذه اﻷعداد، والمدى هو أكبر قيمة - أصغر قيمة، مثلاً: rangeCases([5, 2, 3, 1]) تقوم بإرجاع 4 ﻷن أكبر قيمة 5 وأصغر قيمة 1 فيكون المدى يساوي 5-1 = 4

تحدي البحث في مصفوفة

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

تحدي البحث في مصفوفة

قم بكتابة دالة searchInArray مهمتها البحث عن عنصر في المصفوفة، تأخذ مُدخلين، اﻷول ما سنبحث عنه element، والثاني مصفوفة dataArray نبحث فيها عن العنصر.. وتقوم بإرجاع مفتاح العنصر (ترتيبه index) إن كان العنصر موجود في المصفوفة، غير ذلك تقوم بإرجاع -1

في البرمجة؛ القيمة -1 في البحث نعتبر أنها تعني "غير موجود"

تحدي مخزون المنتج

قم بمراجعة درس القواميس قبل حل التمرين حتى تتمكن من الحل.

تحدي مخزون المنتج

قم بكتابة دالة isStockAvailable تقوم بالتحقق هل يوجد مخزون كافي من المُنتج لإتمام عملية الشراء أم المخزون لا يكفي، تأخذ مُدخلين اﻷول هو الكمّية المطلوب شراءها، والثاني قاموس يحتوي على بيانات المنتج ومن هذه البيانات هناك عنصر مفتاحه stock فيه عدد المخزون المتوفر من المنتج، وتقوم الدالة بالتحقق هل الكمية المطلوب شراءها أكبر من مخزون المنتج؟ فتقوم بإرجاع false غير ذلك تقوم بإرجاع true أي أن العملية ممكنة.

أمثلة:

isStockAvailable(5, {name: "كتاب برمجة", stock: 4}) تقوم بإرجاع false ﻷن مخزون المنتج 4 والكمية المطلوب شراءها 5

isStockAvailable(2, {name: "كتاب برمجة", stock: 10}) تقوم بإرجاع true ﻷن المخزون المتوفر من المنتج 10 والمطلوب شراؤه 2

تحدي السماح بعرض المنشور

تحدي السماح بعرض المنشور

قم بكتابة دالة canViewPost مهمتها تحديد هل مسموح للمستخدم رؤية المنشور أم ﻻ، ويمكنه رؤيته إذا كان من أصدقاء ناشر المنشور أو إذا كان المنشور عام.

تأخذ مُدخل واحد عبارة عن قاموس يحتوي على بيانات المنشور، ومن هذه البيانات عنصر مفتاحه public قيمته منطقية تكون true لو كان المنشور عام غير ذلك تكون قيمتها false أي أن المنشور خاص ومتاح فقط للأصدقاء، ويحتوي القاموس على عنصر آخر مفتاحه isFriend قيمته منطقية تكون true إذا كان المستخدم من أصدقاء ناشر المنشور، وتكون false إذا لم يكن من أصدقاءه.

وتقوم الدالة بإرجاع true فقط إن كان المنشور عام أو المنشور خاص والمستخدم من أصدقاء الناشر، غير ذلك تقوم بإرجاع false

منصات للتحديات البرمجية

يمكنك حل المزيد من التحديات والتمارين بمستويات مختلفة على منصات عالمية مشهورة:

Codewars HackerRank LeetCode

المساهمين

وجدت خطأ أو تريد المساهمة في محتوى الدرس؟ عدل الصفحة على Github