Arabic flag
Arabic
Select a Language
Arabic flag
Arabic
English flag
English
$
USD
Select a Currency
United States Dollar
$
Egypt Pound
ج.م.
Saudi Arabia Riyal
ر.س.
United Arab Emirates dirham
د.إ.
Oman Rial
.ر.ع
0
دورة Problem Solving – المستوى الثاني (بناء التفكير البرمجي)

دورة Problem Solving – المستوى الثاني (بناء التفكير البرمجي)

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

ماذا ستتعلم؟

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

About This Course

كثير من المتعلّمين يصلون إلى مرحلة يشعرون فيها بأنهم يعرفون أساسيات Problem Solving، لكنهم يتوقفون عند أول مسألة غير مباشرة، أو عند أي فكرة تحتاج إلى تحليل أعمق بدل تنفيذ محفوظ. البحث عن محتوى مناسب لهذه المرحلة يكون مرهقًا، إمّا شروحات سطحية تكرّر الأساسيات، أو أمثلة متقدمة بلا شرح كافٍ لطريقة التفكير التي تقود إلى الحل.

المستوى الثاني عبارة عن دورة تطبيقية مكوّنة من 20 حلقة، تركّز على تطوير طريقة التفكير في حل المسائل البرمجية، من خلال الانتقال من الحلول المباشرة إلى التحليل المنطقي المنهجي قبل كتابة الكود.

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

المحتوى مبني حول مسائل عملية ومتنوعة، تُعرض وتُحل خطوة بخطوة، مع التركيز على لماذا هذا الحل، لا كيف نكتبه فقط.

هذه الدورة غير مناسبة لمن لم يبدأ Problem Solving من الأساس، أو لمن لا يزال يتعلّم أساسيات اللغة البرمجية نفسها، بينما هي مناسبة لمن يمتلك معرفة مبدئية بالبرمجة، لكنه يواجه صعوبة في تحليل المسائل المتوسطة، أو يشعر أنه يعرف الصياغة البرمجية لكنه لا يعرف من أين يبدأ الحل.

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

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

المتطلبات

أن يكون أنهيت دورة أساسيات Problem Solving أو تمتلك معرفة مكافئة لها عمليًا.
فهم أساسيات البرمجة مثل المتغيرات، الشروط، الحلقات التكرارية، والقوائم.
القدرة على قراءة كود بسيط وفهم ما يفعله دون الحاجة لشرح كل سطر.
معرفة مبدئية بكيفية التعامل مع النصوص والمصفوفات.
الاستعداد للتفكير والتحليل، لأن المحتوى لا يعتمد على الحفظ أو الحلول الجاهزة.
المتطلبات

التعليمات

Check the frequently asked questions about this course.

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

المتطلبات الأساسية

We recommend completing the prerequisites for more effective learning.

عبدالرحمن الجيزاوي
عبدالرحمن الجيزاوي
3 الدورات
0 طلاب
عبدالرحمن الجيزاوي
Curriculum Overview

This course includes 4 modules, 20 lessons, and 0 hours of materials.

تطوير التفكير المنطقي في حل المسائل
5 أقسام
1. حل المسألة باستخدام التفكير المنطقي و XOR
مجانًا

في هذه الحلقة أكمّل معك من نفس المسألة التي تناولناها في المستوى الأول، لكن نعيد التعامل معها بطريقة مختلفة تعتمد على الفهم المنطقي لا على التبديل المباشر للقيم. سننظر إلى المسألة من زاوية أخرى، دون تغييرها، لكن بتغيير أسلوب التفكير فيها.



سأقدّم لك فكرة الجمل والروابط المنطقية، ثم ننتقل إلى XOR ولماذا يختلف عن OR، وكيف يمكن تنفيذ نفس الفكرة عمليًا باستخدام AND وOR وNOT فقط، قبل الانتقال لتطبيق هذا الأسلوب على المسألة نفسها.

مقدار -
2. عكس ترتيب الكلمات وعكس حروف كل كلمة

في هذه الحلقة أطرح عليك مسألة جديدة، ونبدأ بسؤال مباشر: ما المقصود بعكس الجملة؟ وهل المطلوب عكس ترتيب الكلمات فقط، أم عكس الحروف داخل كل كلمة أيضًا؟ سأوضّح لك أن المطلوب هنا تنفيذ العمليتين معًا، وليس الاكتفاء بإحداهما.



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

مقدار -
3. جمع عناصر القائمة خطوة بخطوة

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



سأركّز معك على فكرة التعامل مع عناصر القائمة عنصرًا عنصرًا، ولماذا نستخدم دالة reduce تحديدًا لتنفيذ عملية الجمع بشكل متتابع.



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

مقدار -
4. جمع عناصر القائمة عمليًا باستخدام reduce

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



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

مقدار -
5. بناء لعبة تخمين الأرقام

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



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



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

مقدار -
تحليل البيانات والنصوص والمصفوفات
5 أقسام
6. مقارنة كلمتين بناءً على الحروف لا الترتيب

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



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

مقدار -
7. الوسط الحسابي والوسيط وطريقة حساب كلٍ منهما

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



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

مقدار -
8. حساب أكبر قاسم مشترك باستخدام خوارزمية يوكليد

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



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



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

مقدار -
9. إيجاد ثاني أكبر وثاني أصغر عنصر بدون فرز

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



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

مقدار -
10. استخراج أطول كلمة في الجملة اعتمادًا على طولها

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



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

مقدار -
الاستدعاء الذاتي ومعالجة النصوص المتقدمة
6 أقسام
11. التحقق من أعداد أرمسترونج

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



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

مقدار -
12. حساب مضروب العدد باستخدام الاستدعاء الذاتي

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



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



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

مقدار -
13. حل مسألة المضروب باستخدام الـ Recursion

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



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

مقدار -
14. عدّ عناصر محددة داخل النص

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



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



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

مقدار -
15. تنقية النص والاحتفاظ بالحروف والأرقام فقط

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



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

مقدار -
16. عرض الأسماء حسب عدد الأشخاص مثل فيسبوك

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



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

مقدار -
التفكير الهيكلي وتقسيم المشكلات
4 أقسام
17. استخراج العنصر الأكبر حسب ترتيب يحدده المستخدم

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



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



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

مقدار -
18. استخراج المجموعات الجزئية

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



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

مقدار -
19. التحقق من المصفوفة المتماثلة

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



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

مقدار -
20. التفكير المتدرّج وتقسيم المشكلات الكبيرة

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



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

مقدار -
الشهادات
1 أقسام
شهادة الدورة
شهادة الدورة
If you pass all the lessons in this course, you will receive this certificate.
النوع شهادة الدورة
Reply to Comment
Comments Approval

Your comment will be visible after admin approval.

0
0 المراجعات
جودة المحتوى (0)
مهارات المدرب (0)
قيمة الشراء (0)
جودة الدعم (0)
Reply to Review
Submit Reply

Your reply to this review will be visible to all users.

دورة Problem Solving – المستوى الثاني (بناء التفكير البرمجي)
35 $

تشمل هذه الدورة

شهادة رسمية
دعم المدرب
مفضلة
شارك

مواصفات الدورة

Lessons
20
مدة
3:32 ساعات
Access Duration
365 أيام
Updated Date
22/05/2026

إرسال الدورة كهدية

Send as a gift to friends
دورة Problem Solving – المستوى الثاني (بناء التفكير البرمجي)
You are viewing
دورة Problem Solving – المستوى الثاني (بناء التفكير البرمجي)