K7H Code
ملاحظه هذا المخطط ينقصه اشياء للوصول للحل الصحيح بنسبه ١٠٠٪ . ولكن في هذه المرحله من التعلم الان وفي بدايتك لتعلم الشروط لا تحتاج الى التعمق بشكل اكثر. سنحل المثال بشكل الصحيح بعد ما نتقدم بالصعوبه
أولًا: ما المطلوب من الخوارزمية؟
قبل أن نرسم أي شيء، نقرأ المسألة ونحدد المطلوب.
المطلوب هنا:
إدخال رقم من المستخدم، ثم تحديد هل الرقم موجب أم سالب.
مثلاً:
إذا أدخل المستخدم:
8
فالبرنامج يقول:
Positive
أما إذا أدخل:
-5
فالبرنامج يقول:
Negative
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: كيف أعرف أن المسألة تحتاج إلى شرط؟
هذه من أهم المهارات التي يجب أن تتعلمها.
اسأل نفسك:
هل يوجد في السؤال اختيار بين أكثر من حالة؟
هنا لدينا حالتان:
الرقم أكبر من صفر.
الرقم ليس أكبر من صفر.
إذن البرنامج يحتاج إلى اتخاذ قرار.
وهنا نستخدم الشرط.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
الخطوة الأولى: إدخال الرقم
المخطط يحتوي على:
Enter Number
أي:
اطلب من المستخدم إدخال رقم.
مثلاً المستخدم يدخل:
10
أو:
-7
أو:
25
وهذا الرقم سنسميه مثلًا:
Number
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال المهم: كيف عرفت أن هناك مدخلًا واحدًا فقط؟
اسأل نفسك:
ما المعلومات التي يحتاجها البرنامج من المستخدم حتى يستطيع حل المسألة؟
نحن نريد معرفة هل رقم معين موجب أم سالب.
إذن نحتاج إلى رقم واحد فقط.
لذلك:
عدد المدخلات = 1
والمدخل هو:
Number
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: هل أستطيع تسمية المتغير Number باسم آخر؟
نعم.
يمكن أن تسميه:
N
أو:
Number
أو:
X
وغيرها.
مثلاً:
N = 10
المهم أن تعرف أن الاسم يمثل القيمة التي أدخلها المستخدم.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
الخطوة الثانية: فحص الرقم
بعد إدخال الرقم، نصل إلى السؤال:
Number > 0
أي:
هل الرقم أكبر من صفر؟
وهنا تبدأ فكرة الشرط.
البرنامج لا يقول مباشرة إن الرقم موجب.
بل يسأل أولًا:
هل Number أكبر من 0؟
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: لماذا نقارن الرقم بالصفر؟
لأن الصفر هو النقطة التي تفصل بين الأرقام الموجبة والسالبة.
مثلاً:
1 , 2 , 3 , 4 , 5
كلها أكبر من صفر، ولذلك هي موجبة.
أما:
-1 , -2 , -3 , -4
فهي أصغر من صفر، ولذلك هي سالبة.
إذن نستطيع استخدام الصفر لمعرفة نوع الرقم.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ماذا يعني الرمز >؟
الرمز:
>
يعني:
أكبر من
لذلك:
Number > 0
تعني:
هل Number أكبر من صفر؟
مثلاً:
5 > 0
صحيحة.
لكن:
-5 > 0
خاطئة.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ماذا يحدث إذا كانت الإجابة نعم؟
إذا كان:
Number > 0
صحيحًا، فهذا يعني أن الرقم أكبر من صفر.
إذن الرقم موجب.
مثلاً:
Number = 7
نختبر:
7 > 0
نعم.
إذن:
Positive
أي:
الرقم موجب.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ماذا يحدث إذا كانت الإجابة لا؟
إذا كانت الإجابة:
No
فهذا يعني أن:
Number > 0
غير صحيحة.
إذا كان الرقم:
-8
فإن:
-8 > 0
خطأ.
إذن نذهب إلى حالة الرقم السالب.
ونطبع:
Negative
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سؤال مهم جدًا: ماذا عن الصفر؟
هنا يجب أن تنتبه.
المخطط الحالي يستخدم الشرط:
Number > 0
إذا أدخلنا:
0
فإن:
0 > 0
خطأ
لذلك سيذهب البرنامج إلى فرع Negative.
وهذا يعني أن المخطط الحالي سيعتبر الصفر سالبًا.
وهذا غير صحيح رياضيًا.
الصفر:
ليس موجبًا وليس سالبًا.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
إذن كيف أصحح الخوارزمية؟
إذا كان المطلوب تحديد الحالات الثلاث:
موجب / سالب / صفر
فنحتاج إلى ثلاث حالات:
إذا:
Number > 0
إذن:
Positive
وإذا:
Number < 0
إذن:
Negative
وإلا:
Zero
وبذلك نتعامل مع جميع الاحتمالات.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: لماذا لم نستخدم ثلاثة شروط من البداية؟
لأننا نختار طريقة الحل حسب المطلوب.
إذا كان السؤال يقول:
حدد هل الرقم موجب أم سالب.
قد نستخدم شرطًا مناسبًا للمسألة.
لكن إذا قال:
حدد هل الرقم موجب أو سالب أو يساوي صفر.
فلا بد أن نفكر في ثلاث حالات.
وهنا يجب أن تتعلم قاعدة مهمة:
عدد الحالات التي يجب أن يتعامل معها البرنامج يحدد طريقة بناء الشروط.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: كيف أعرف عدد الحالات؟
اسأل نفسك:
ما الاحتمالات التي يمكن أن تحدث؟
بالنسبة للرقم:
يمكن أن يكون:
أكبر من صفر → موجب.
قبل أن نرسم أي شيء، نقرأ المسألة ونحدد المطلوب.
المطلوب هنا:
إدخال رقم من المستخدم، ثم تحديد هل الرقم موجب أم سالب.
مثلاً:
إذا أدخل المستخدم:
8
فالبرنامج يقول:
Positive
أما إذا أدخل:
-5
فالبرنامج يقول:
Negative
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: كيف أعرف أن المسألة تحتاج إلى شرط؟
هذه من أهم المهارات التي يجب أن تتعلمها.
اسأل نفسك:
هل يوجد في السؤال اختيار بين أكثر من حالة؟
هنا لدينا حالتان:
الرقم أكبر من صفر.
الرقم ليس أكبر من صفر.
إذن البرنامج يحتاج إلى اتخاذ قرار.
وهنا نستخدم الشرط.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
الخطوة الأولى: إدخال الرقم
المخطط يحتوي على:
Enter Number
أي:
اطلب من المستخدم إدخال رقم.
مثلاً المستخدم يدخل:
10
أو:
-7
أو:
25
وهذا الرقم سنسميه مثلًا:
Number
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال المهم: كيف عرفت أن هناك مدخلًا واحدًا فقط؟
اسأل نفسك:
ما المعلومات التي يحتاجها البرنامج من المستخدم حتى يستطيع حل المسألة؟
نحن نريد معرفة هل رقم معين موجب أم سالب.
إذن نحتاج إلى رقم واحد فقط.
لذلك:
عدد المدخلات = 1
والمدخل هو:
Number
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: هل أستطيع تسمية المتغير Number باسم آخر؟
نعم.
يمكن أن تسميه:
N
أو:
Number
أو:
X
وغيرها.
مثلاً:
N = 10
المهم أن تعرف أن الاسم يمثل القيمة التي أدخلها المستخدم.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
الخطوة الثانية: فحص الرقم
بعد إدخال الرقم، نصل إلى السؤال:
Number > 0
أي:
هل الرقم أكبر من صفر؟
وهنا تبدأ فكرة الشرط.
البرنامج لا يقول مباشرة إن الرقم موجب.
بل يسأل أولًا:
هل Number أكبر من 0؟
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: لماذا نقارن الرقم بالصفر؟
لأن الصفر هو النقطة التي تفصل بين الأرقام الموجبة والسالبة.
مثلاً:
1 , 2 , 3 , 4 , 5
كلها أكبر من صفر، ولذلك هي موجبة.
أما:
-1 , -2 , -3 , -4
فهي أصغر من صفر، ولذلك هي سالبة.
إذن نستطيع استخدام الصفر لمعرفة نوع الرقم.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ماذا يعني الرمز >؟
الرمز:
>
يعني:
أكبر من
لذلك:
Number > 0
تعني:
هل Number أكبر من صفر؟
مثلاً:
5 > 0
صحيحة.
لكن:
-5 > 0
خاطئة.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ماذا يحدث إذا كانت الإجابة نعم؟
إذا كان:
Number > 0
صحيحًا، فهذا يعني أن الرقم أكبر من صفر.
إذن الرقم موجب.
مثلاً:
Number = 7
نختبر:
7 > 0
نعم.
إذن:
Positive
أي:
الرقم موجب.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ماذا يحدث إذا كانت الإجابة لا؟
إذا كانت الإجابة:
No
فهذا يعني أن:
Number > 0
غير صحيحة.
إذا كان الرقم:
-8
فإن:
-8 > 0
خطأ.
إذن نذهب إلى حالة الرقم السالب.
ونطبع:
Negative
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سؤال مهم جدًا: ماذا عن الصفر؟
هنا يجب أن تنتبه.
المخطط الحالي يستخدم الشرط:
Number > 0
إذا أدخلنا:
0
فإن:
0 > 0
خطأ
لذلك سيذهب البرنامج إلى فرع Negative.
وهذا يعني أن المخطط الحالي سيعتبر الصفر سالبًا.
وهذا غير صحيح رياضيًا.
الصفر:
ليس موجبًا وليس سالبًا.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
إذن كيف أصحح الخوارزمية؟
إذا كان المطلوب تحديد الحالات الثلاث:
موجب / سالب / صفر
فنحتاج إلى ثلاث حالات:
إذا:
Number > 0
إذن:
Positive
وإذا:
Number < 0
إذن:
Negative
وإلا:
Zero
وبذلك نتعامل مع جميع الاحتمالات.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: لماذا لم نستخدم ثلاثة شروط من البداية؟
لأننا نختار طريقة الحل حسب المطلوب.
إذا كان السؤال يقول:
حدد هل الرقم موجب أم سالب.
قد نستخدم شرطًا مناسبًا للمسألة.
لكن إذا قال:
حدد هل الرقم موجب أو سالب أو يساوي صفر.
فلا بد أن نفكر في ثلاث حالات.
وهنا يجب أن تتعلم قاعدة مهمة:
عدد الحالات التي يجب أن يتعامل معها البرنامج يحدد طريقة بناء الشروط.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: كيف أعرف عدد الحالات؟
اسأل نفسك:
ما الاحتمالات التي يمكن أن تحدث؟
بالنسبة للرقم:
يمكن أن يكون:
أكبر من صفر → موجب.
K7H Code
ملاحظه هذا المخطط ينقصه اشياء للوصول للحل الصحيح بنسبه ١٠٠٪ . ولكن في هذه المرحله من التعلم الان وفي بدايتك لتعلم الشروط لا تحتاج الى التعمق بشكل اكثر. سنحل المثال بشكل الصحيح بعد ما نتقدم بالصعوبه
أصغر من صفر → سالب.
يساوي صفر → صفر.
إذن لدينا:
3 حالات.
وهذه الطريقة يمكنك استخدامها في مسائل كثيرة جدًا.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: هل يجب أن أحفظ هذه الشروط؟
لا تحفظها كحل لمسألة معينة.
افهم الفكرة.
إذا سألك السؤال:
هل الرقم موجب؟
فكر:
الموجب أكبر من صفر.
إذن:
Number > 0
إذا سألك:
هل الرقم سالب؟
فكر:
السالب أصغر من صفر.
إذن:
Number < 0
إذا سألك:
هل الرقم يساوي صفر؟
فكر:
Number == 0
أنت هنا لا تحفظ الحل، بل تحول معنى السؤال إلى شرط.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: كيف أعرف الشرط الذي أكتبه؟
ابحث عن العلاقة الموجودة في السؤال.
مثلاً:
أكبر من → >
أصغر من → <
يساوي → ==
أكبر من أو يساوي → >=
أصغر من أو يساوي → <=
لا يساوي → !=
وهذه الرموز ستصبح مهمة جدًا عندما تبدأ بكتابة الشروط في لغة البرمجة.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: هل Yes و No تعنيان أن هناك مدخلين؟
لا.
هذه نقطة مهمة جدًا.
لدينا:
مدخل واحد فقط:
Number
لكن لدينا نتيجتان محتملتان للشرط:
Yes
أو:
No
إذن لا تخلط بين:
عدد المدخلات
و
عدد الحالات.
في هذا المثال:
عدد المدخلات = 1
وعدد الفروع في الشرط = 2
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: هل Positive و Negative مدخلات؟
لا.
هذه ليست بيانات يدخلها المستخدم.
هذه نتائج أو رسائل يعرضها البرنامج.
إذن:
Input:
Number
Processing:
فحص:
Number > 0
Output:
Positive أو Negative
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
دعنا نجرب الخوارزمية بأمثلة
المثال الأول
المستخدم يدخل:
15
البرنامج يسأل:
15 > 0 ؟
نعم.
إذن النتيجة:
Positive
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
المثال الثاني
المستخدم يدخل:
-3
البرنامج يسأل:
-3 > 0 ؟
لا.
إذن النتيجة في المخطط:
Negative
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
المثال الثالث
المستخدم يدخل:
0
البرنامج يسأل:
0 > 0 ؟
لا.
وبحسب المخطط الحالي سيطبع:
Negative
وهنا نكتشف أن الخوارزمية تحتاج إلى تعديل إذا أردنا التعامل مع الصفر بشكل صحيح.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
أهم شيء أريدك أن تتعلمه من هذا المثال
لا تنظر إلى المخطط وتقول:
"أحفظ أنني أكتب Number > 0."
بل اسأل نفسك:
ما المدخل؟
رقم واحد.
ما المطلوب؟
معرفة نوع الرقم.
ما الحالات الممكنة؟
موجب، سالب، وربما صفر.
كيف أميز بينها؟
بالمقارنة مع الصفر.
ما الشرط؟
أكبر من، أصغر من، أو يساوي.
ما المخرجات؟
النتيجة المناسبة للحالة.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
قاعدة ذهبية
عندما تأتيك أي مسألة فيها قرار أو اختيار، لا تبدأ بالرسم.
ابدأ بهذه الأسئلة:
1. ما الذي سيدخله المستخدم؟
2. كم عدد المدخلات؟
3. ما الذي أريد معرفته من هذه المدخلات؟
4. ما الحالات أو الاحتمالات الممكنة؟
5. كيف أميز بين كل حالة؟
6. ما الشرط المناسب لكل حالة؟
7. ماذا يجب أن يظهر للمستخدم في النهاية؟
إذا أصبحت تسأل نفسك هذه الأسئلة تلقائيًا، فأنت بدأت تنتقل من مرحلة رسم المخطط إلى مرحلة أهم بكثير:
التفكير بطريقة المبرمج.
#خوارزميات_من_الصفر
يساوي صفر → صفر.
إذن لدينا:
3 حالات.
وهذه الطريقة يمكنك استخدامها في مسائل كثيرة جدًا.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: هل يجب أن أحفظ هذه الشروط؟
لا تحفظها كحل لمسألة معينة.
افهم الفكرة.
إذا سألك السؤال:
هل الرقم موجب؟
فكر:
الموجب أكبر من صفر.
إذن:
Number > 0
إذا سألك:
هل الرقم سالب؟
فكر:
السالب أصغر من صفر.
إذن:
Number < 0
إذا سألك:
هل الرقم يساوي صفر؟
فكر:
Number == 0
أنت هنا لا تحفظ الحل، بل تحول معنى السؤال إلى شرط.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: كيف أعرف الشرط الذي أكتبه؟
ابحث عن العلاقة الموجودة في السؤال.
مثلاً:
أكبر من → >
أصغر من → <
يساوي → ==
أكبر من أو يساوي → >=
أصغر من أو يساوي → <=
لا يساوي → !=
وهذه الرموز ستصبح مهمة جدًا عندما تبدأ بكتابة الشروط في لغة البرمجة.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: هل Yes و No تعنيان أن هناك مدخلين؟
لا.
هذه نقطة مهمة جدًا.
لدينا:
مدخل واحد فقط:
Number
لكن لدينا نتيجتان محتملتان للشرط:
Yes
أو:
No
إذن لا تخلط بين:
عدد المدخلات
و
عدد الحالات.
في هذا المثال:
عدد المدخلات = 1
وعدد الفروع في الشرط = 2
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
السؤال: هل Positive و Negative مدخلات؟
لا.
هذه ليست بيانات يدخلها المستخدم.
هذه نتائج أو رسائل يعرضها البرنامج.
إذن:
Input:
Number
Processing:
فحص:
Number > 0
Output:
Positive أو Negative
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
دعنا نجرب الخوارزمية بأمثلة
المثال الأول
المستخدم يدخل:
15
البرنامج يسأل:
15 > 0 ؟
نعم.
إذن النتيجة:
Positive
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
المثال الثاني
المستخدم يدخل:
-3
البرنامج يسأل:
-3 > 0 ؟
لا.
إذن النتيجة في المخطط:
Negative
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
المثال الثالث
المستخدم يدخل:
0
البرنامج يسأل:
0 > 0 ؟
لا.
وبحسب المخطط الحالي سيطبع:
Negative
وهنا نكتشف أن الخوارزمية تحتاج إلى تعديل إذا أردنا التعامل مع الصفر بشكل صحيح.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
أهم شيء أريدك أن تتعلمه من هذا المثال
لا تنظر إلى المخطط وتقول:
"أحفظ أنني أكتب Number > 0."
بل اسأل نفسك:
ما المدخل؟
رقم واحد.
ما المطلوب؟
معرفة نوع الرقم.
ما الحالات الممكنة؟
موجب، سالب، وربما صفر.
كيف أميز بينها؟
بالمقارنة مع الصفر.
ما الشرط؟
أكبر من، أصغر من، أو يساوي.
ما المخرجات؟
النتيجة المناسبة للحالة.
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
قاعدة ذهبية
عندما تأتيك أي مسألة فيها قرار أو اختيار، لا تبدأ بالرسم.
ابدأ بهذه الأسئلة:
1. ما الذي سيدخله المستخدم؟
2. كم عدد المدخلات؟
3. ما الذي أريد معرفته من هذه المدخلات؟
4. ما الحالات أو الاحتمالات الممكنة؟
5. كيف أميز بين كل حالة؟
6. ما الشرط المناسب لكل حالة؟
7. ماذا يجب أن يظهر للمستخدم في النهاية؟
إذا أصبحت تسأل نفسك هذه الأسئلة تلقائيًا، فأنت بدأت تنتقل من مرحلة رسم المخطط إلى مرحلة أهم بكثير:
التفكير بطريقة المبرمج.
#خوارزميات_من_الصفر
أولًا: ما المطلوب من البرنامج؟
لدينا عدد، مثل:
8
نريد أن يسأل البرنامج:
هل 8 عدد زوجي أم فردي؟
والنتيجة ستكون:
Even → زوجي
أو:
Odd → فردي
ــــــــــــــــــــــــــــــــــــــــــــ
1. كيف أعرف المدخلات؟
السؤال المهم هنا:
ما البيانات التي يحتاجها البرنامج حتى يحل المشكلة؟
نقرأ نص المسألة:
أدخل عددًا، ثم حدد هل هو زوجي أم فردي.
إذن البرنامج يحتاج إلى عدد واحد فقط.
لذلك المدخل هو:
Number
أي:
Number = العدد الذي سيدخله المستخدم
مثال:
Enter Number
ثم المستخدم يدخل:
7
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال: كيف عرفت أن عدد المدخلات واحد؟
لأن المسألة طلبت منا التعامل مع عدد واحد فقط.
لو كانت المسألة تقول:
أدخل عددين A و B واحسب مجموعهما.
فسيكون لدينا مدخلان:
A , B
أما هنا:
أدخل Number
إذن لدينا مدخل واحد:
Number
ــــــــــــــــــــــــــــــــــــــــــــ
2. لماذا استخدمنا شكل الإدخال؟
في المخطط الموجود أمامك:
Enter Number
موجود داخل شكل متوازي الأضلاع.
هذا الشكل يستخدم عادةً في المخططات الانسيابية لتمثيل:
Input / Output
أي:
الإدخال والإخراج
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال: لماذا لا أضع Enter Number داخل المستطيل؟
لأن المستطيل يستخدم عادةً لتمثيل:
Process
أي عملية أو معالجة.
مثل:
Z = A * B
أما:
Enter Number
فهي عملية إدخال، لذلك نستخدم متوازي الأضلاع.
ــــــــــــــــــــــــــــــــــــــــــــ
3. ماذا نفعل بالعدد؟
بعد إدخال العدد، نحتاج إلى معرفة:
هل العدد يقبل القسمة على 2 بدون باقي؟
وهنا نستخدم العملية:
Number % 2
الرمز % يسمى:
Modulo / Modulus
ومعناه:
باقي القسمة.
ــــــــــــــــــــــــــــــــــــــــــــ
4. ما معنى %؟
هذه من أهم النقاط التي يجب أن تفهمها.
إذا كتبنا:
8 % 2
فهذا يعني:
ما باقي قسمة 8 على 2؟
القسمة:
8 ÷ 2 = 4
ولا يوجد باقي.
إذن:
8 % 2 = 0
ــــــــــــــــــــــــــــــــــــــــــــ
مثال آخر:
7 % 2
نقسم:
7 ÷ 2 = 3 والباقي 1
إذن:
7 % 2 = 1
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال: لماذا نستخدم % بدل /؟
لأننا لا نريد معرفة ناتج القسمة.
نحن نريد معرفة:
هل يوجد باقي أم لا؟
إذا كان الباقي:
0
فالعدد زوجي.
إذا كان الباقي:
1
فالعدد فردي.
ــــــــــــــــــــــــــــــــــــــــــــ
5. ما معنى الشرط الموجود في المخطط؟
في المخطط لديك:
Number % 2 == 0
هذا سؤال منطقي.
معناه:
هل باقي قسمة Number على 2 يساوي صفرًا؟
لاحظ وجود:
==
وليس:
=
ــــــــــــــــــــــــــــــــــــــــــــ
ما الفرق بين = و ==؟
=
تعني:
إسناد قيمة إلى متغير.
مثال:
x = 10
أي:
ضع القيمة 10 داخل المتغير x.
ــــــــــــــــــــــــــــــــــــــــــــ
==
تعني:
مقارنة
مثال:
x == 10
أي:
هل قيمة x تساوي 10؟
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال: لماذا نستخدم == في الشرط؟
لأننا لا نريد إعطاء قيمة.
نحن نريد طرح سؤال:
هل باقي القسمة يساوي صفرًا؟
لذلك نستخدم:
==
ــــــــــــــــــــــــــــــــــــــــــــ
6. لماذا الشرط هو Number % 2 == 0؟
لأن تعريف العدد الزوجي هو:
العدد الذي يقبل القسمة على 2 بدون باقي.
مثال:
2
4
6
8
10
كلها أعداد زوجية.
ــــــــــــــــــــــــــــــــــــــــــــ
لنأخذ:
Number = 8
نعوض:
8 % 2 == 0
نحسب:
8 % 2 = 0
إذن:
0 == 0
النتيجة:
True / Yes
إذن العدد زوجي.
ــــــــــــــــــــــــــــــــــــــــــــ
7. ماذا يحدث إذا كانت الإجابة Yes؟
إذا كان:
Number % 2 == 0
صحيحًا، نذهب إلى المسار:
Yes
ثم:
Print Even
أي:
اطبع أن العدد زوجي.
ــــــــــــــــــــــــــــــــــــــــــــ
مثال:
المستخدم أدخل:
12
البرنامج يحسب:
12 % 2 = 0
إذن الشرط صحيح.
النتيجة:
Even
العدد زوجي.
ــــــــــــــــــــــــــــــــــــــــــــ
8. ماذا يحدث إذا كانت الإجابة No؟
إذا كان الشرط:
Number % 2 == 0
غير صحيح، نذهب إلى:
No
وهذا يعني أن باقي القسمة ليس صفرًا.
إذن العدد فردي.
ثم:
Print Odd
أي:
اطبع أن العدد فردي.
ــــــــــــــــــــــــــــــــــــــــــــ
مثال:
المستخدم أدخل:
9
نحسب:
9 % 2 = 1
إذن:
1 == 0
خطأ.
إذن نذهب إلى:
No
ثم:
Print Odd
والنتيجة:
العدد فردي.
ــــــــــــــــــــــــــــــــــــــــــــ
9. كيف أعرف عدد المخرجات؟
السؤال مهم جدًا:
كيف أعرف المخرجات؟
انظر إلى المطلوب من البرنامج.
نحن نريد في النهاية معرفة:
هل العدد زوجي أم فردي؟
إذن لدينا مخرجان محتملان:
Even
أو:
Odd
لكن انتبه:
لا يتم طباعة الاثنين معًا.
لدينا عدد، مثل:
8
نريد أن يسأل البرنامج:
هل 8 عدد زوجي أم فردي؟
والنتيجة ستكون:
Even → زوجي
أو:
Odd → فردي
ــــــــــــــــــــــــــــــــــــــــــــ
1. كيف أعرف المدخلات؟
السؤال المهم هنا:
ما البيانات التي يحتاجها البرنامج حتى يحل المشكلة؟
نقرأ نص المسألة:
أدخل عددًا، ثم حدد هل هو زوجي أم فردي.
إذن البرنامج يحتاج إلى عدد واحد فقط.
لذلك المدخل هو:
Number
أي:
Number = العدد الذي سيدخله المستخدم
مثال:
Enter Number
ثم المستخدم يدخل:
7
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال: كيف عرفت أن عدد المدخلات واحد؟
لأن المسألة طلبت منا التعامل مع عدد واحد فقط.
لو كانت المسألة تقول:
أدخل عددين A و B واحسب مجموعهما.
فسيكون لدينا مدخلان:
A , B
أما هنا:
أدخل Number
إذن لدينا مدخل واحد:
Number
ــــــــــــــــــــــــــــــــــــــــــــ
2. لماذا استخدمنا شكل الإدخال؟
في المخطط الموجود أمامك:
Enter Number
موجود داخل شكل متوازي الأضلاع.
هذا الشكل يستخدم عادةً في المخططات الانسيابية لتمثيل:
Input / Output
أي:
الإدخال والإخراج
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال: لماذا لا أضع Enter Number داخل المستطيل؟
لأن المستطيل يستخدم عادةً لتمثيل:
Process
أي عملية أو معالجة.
مثل:
Z = A * B
أما:
Enter Number
فهي عملية إدخال، لذلك نستخدم متوازي الأضلاع.
ــــــــــــــــــــــــــــــــــــــــــــ
3. ماذا نفعل بالعدد؟
بعد إدخال العدد، نحتاج إلى معرفة:
هل العدد يقبل القسمة على 2 بدون باقي؟
وهنا نستخدم العملية:
Number % 2
الرمز % يسمى:
Modulo / Modulus
ومعناه:
باقي القسمة.
ــــــــــــــــــــــــــــــــــــــــــــ
4. ما معنى %؟
هذه من أهم النقاط التي يجب أن تفهمها.
إذا كتبنا:
8 % 2
فهذا يعني:
ما باقي قسمة 8 على 2؟
القسمة:
8 ÷ 2 = 4
ولا يوجد باقي.
إذن:
8 % 2 = 0
ــــــــــــــــــــــــــــــــــــــــــــ
مثال آخر:
7 % 2
نقسم:
7 ÷ 2 = 3 والباقي 1
إذن:
7 % 2 = 1
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال: لماذا نستخدم % بدل /؟
لأننا لا نريد معرفة ناتج القسمة.
نحن نريد معرفة:
هل يوجد باقي أم لا؟
إذا كان الباقي:
0
فالعدد زوجي.
إذا كان الباقي:
1
فالعدد فردي.
ــــــــــــــــــــــــــــــــــــــــــــ
5. ما معنى الشرط الموجود في المخطط؟
في المخطط لديك:
Number % 2 == 0
هذا سؤال منطقي.
معناه:
هل باقي قسمة Number على 2 يساوي صفرًا؟
لاحظ وجود:
==
وليس:
=
ــــــــــــــــــــــــــــــــــــــــــــ
ما الفرق بين = و ==؟
=
تعني:
إسناد قيمة إلى متغير.
مثال:
x = 10
أي:
ضع القيمة 10 داخل المتغير x.
ــــــــــــــــــــــــــــــــــــــــــــ
==
تعني:
مقارنة
مثال:
x == 10
أي:
هل قيمة x تساوي 10؟
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال: لماذا نستخدم == في الشرط؟
لأننا لا نريد إعطاء قيمة.
نحن نريد طرح سؤال:
هل باقي القسمة يساوي صفرًا؟
لذلك نستخدم:
==
ــــــــــــــــــــــــــــــــــــــــــــ
6. لماذا الشرط هو Number % 2 == 0؟
لأن تعريف العدد الزوجي هو:
العدد الذي يقبل القسمة على 2 بدون باقي.
مثال:
2
4
6
8
10
كلها أعداد زوجية.
ــــــــــــــــــــــــــــــــــــــــــــ
لنأخذ:
Number = 8
نعوض:
8 % 2 == 0
نحسب:
8 % 2 = 0
إذن:
0 == 0
النتيجة:
True / Yes
إذن العدد زوجي.
ــــــــــــــــــــــــــــــــــــــــــــ
7. ماذا يحدث إذا كانت الإجابة Yes؟
إذا كان:
Number % 2 == 0
صحيحًا، نذهب إلى المسار:
Yes
ثم:
Print Even
أي:
اطبع أن العدد زوجي.
ــــــــــــــــــــــــــــــــــــــــــــ
مثال:
المستخدم أدخل:
12
البرنامج يحسب:
12 % 2 = 0
إذن الشرط صحيح.
النتيجة:
Even
العدد زوجي.
ــــــــــــــــــــــــــــــــــــــــــــ
8. ماذا يحدث إذا كانت الإجابة No؟
إذا كان الشرط:
Number % 2 == 0
غير صحيح، نذهب إلى:
No
وهذا يعني أن باقي القسمة ليس صفرًا.
إذن العدد فردي.
ثم:
Print Odd
أي:
اطبع أن العدد فردي.
ــــــــــــــــــــــــــــــــــــــــــــ
مثال:
المستخدم أدخل:
9
نحسب:
9 % 2 = 1
إذن:
1 == 0
خطأ.
إذن نذهب إلى:
No
ثم:
Print Odd
والنتيجة:
العدد فردي.
ــــــــــــــــــــــــــــــــــــــــــــ
9. كيف أعرف عدد المخرجات؟
السؤال مهم جدًا:
كيف أعرف المخرجات؟
انظر إلى المطلوب من البرنامج.
نحن نريد في النهاية معرفة:
هل العدد زوجي أم فردي؟
إذن لدينا مخرجان محتملان:
Even
أو:
Odd
لكن انتبه:
لا يتم طباعة الاثنين معًا.
يتم طباعة واحد فقط حسب نتيجة الشرط.
ــــــــــــــــــــــــــــــــــــــــــــ
10. لماذا يوجد Yes و No؟
لأننا أمام شرط.
أي شرط له نتيجتان أساسيتان:
Yes / True
أو:
No / False
في حالتنا:
Number % 2 == 0
إما أن يكون:
صحيحًا
أو:
خطأ
ــــــــــــــــــــــــــــــــــــــــــــ
يمكن التفكير فيها بهذه الطريقة:
هل العدد يقبل القسمة على 2 بدون باقي؟
↓
نعم؟ ───→ زوجي
لا؟ ───→ فردي
ــــــــــــــــــــــــــــــــــــــــــــ
11. كيف أمشي داخل المخطط؟
لنأخذ العدد:
10
نبدأ:
Start
↓
Enter Number
ندخل:
10
↓
نصل إلى القرار:
Number % 2 == 0
نعوض:
10 % 2 == 0
↓
10 % 2 = 0
إذن الشرط صحيح.
↓
نذهب إلى:
Yes
↓
Print Even
↓
End
ــــــــــــــــــــــــــــــــــــــــــــ
12. ماذا لو أدخلت 11؟
نبدأ:
Start
↓
Enter Number
القيمة:
11
↓
الشرط:
11 % 2 == 0
نحسب:
11 % 2 = 1
إذن:
1 == 0
خطأ.
↓
نذهب إلى:
No
↓
Print Odd
↓
End
إذن:
11 عدد فردي.
ــــــــــــــــــــــــــــــــــــــــــــ
13. هل الصفر زوجي أم فردي؟
نعم، الصفر عدد زوجي.
لأن:
0 % 2 = 0
إذن:
0 % 2 == 0
صحيح.
وبالتالي:
0 → Even
ــــــــــــــــــــــــــــــــــــــــــــ
14. ماذا عن الأعداد السالبة؟
نفس الفكرة تنطبق عليها.
مثل:
-8
باقي قسمته على 2 يساوي صفرًا، لذلك هو:
زوجي.
أما:
-7
فهو:
فردي.
ــــــــــــــــــــــــــــــــــــــــــــ
15. كيف أعرف المتغيرات التي أحتاجها؟
اسأل نفسك:
ما المعلومات التي سأدخلها؟
لدينا:
Number
إذن نحتاج متغيرًا لتخزين العدد.
مثلًا في البرمجة:
Number
ولا نحتاج إلى متغيرات كثيرة.
فليس لدينا مثلًا:
A
وB
وC
لأن المسألة لا تحتاج إليها.
ــــــــــــــــــــــــــــــــــــــــــــ
16. هل أحتاج إلى متغير لتخزين Even أو Odd؟
ليس بالضرورة.
يمكننا مباشرة طباعة النتيجة.
فإذا كان الشرط صحيحًا:
Print Even
وإذا كان خطأ:
Print Odd
ــــــــــــــــــــــــــــــــــــــــــــ
17. كيف أعرف عدد خطوات الحل؟
يمكنك تقسيم أي مسألة إلى:
Input → Process → Decision → Output
في هذه المسألة:
Input
Number
ــــــــــــــــــــــــــــــــــــــــــــ
Process
حساب:
Number % 2
ــــــــــــــــــــــــــــــــــــــــــــ
Decision
هل:
Number % 2 == 0
ــــــــــــــــــــــــــــــــــــــــــــ
Output
إما:
Even
أو:
Odd
ــــــــــــــــــــــــــــــــــــــــــــ
18. ما الفكرة التي يجب أن أتعلمها من هذا المثال؟
لا تحفظ المخطط فقط.
تعلم طريقة التفكير:
أولًا: ما البيانات التي أحتاجها؟
ثانيًا: ماذا سأفعل بهذه البيانات؟
ثالثًا: هل يوجد شرط أو قرار؟
رابعًا: ما نتيجة الشرط؟
خامسًا: ماذا سأطبع؟
ــــــــــــــــــــــــــــــــــــــــــــ
أسئلة مهمة جدًا قد تخطر في بالك
كيف أعرف المدخلات؟
ابحث عن البيانات التي يحتاجها الحل من المستخدم.
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف عدد المدخلات؟
عدّ البيانات المستقلة التي يطلبها السؤال.
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف المخرجات؟
اسأل:
ما الشيء الذي يريد مني السؤال إظهاره للمستخدم؟
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف المتغيرات؟
كل قيمة نحتاج إلى تخزينها أو استخدامها في العمليات يمكن أن تحتاج إلى متغير.
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف أنني أحتاج إلى شرط؟
إذا كان السؤال يحتوي على فكرة مثل:
إذا، هل، في حالة، وإلا، أكبر من، أصغر من، يساوي، زوجي، فردي...
فغالبًا تحتاج إلى قرار.
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف الشرط؟
حوّل المطلوب إلى سؤال يمكن أن تكون إجابته:
نعم أو لا.
في مثالنا:
هل باقي قسمة العدد على 2 يساوي صفرًا؟
إذن:
Number % 2 == 0
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف Yes و No؟
Yes = الشرط صحيح.
No = الشرط خاطئ.
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف أي طريق أختار في المخطط؟
نفّذ الشرط أولًا، ثم انظر إلى النتيجة.
True → Yes
False → No
ــــــــــــــــــــــــــــــــــــــــــــ
هل % تعني النسبة المئوية؟
لا.
في البرمجة % تعني غالبًا:
باقي القسمة Modulo
وليس علامة النسبة المئوية المستخدمة في الرياضيات اليومية.
ــــــــــــــــــــــــــــــــــــــــــــ
هل = و == نفس الشيء؟
لا.
= للإسناد.
== للمقارنة.
وهذا فرق مهم جدًا في البرمجة.
ــــــــــــــــــــــــــــــــــــــــــــ
الخلاصة
هذا المخطط بالكامل يمكن اختصاره في فكرة واحدة:
أدخل عددًا → احسب باقي قسمته على 2 → إذا كان الباقي صفرًا فهو زوجي → وإذا لم يكن صفرًا فهو فردي.
أي:
Start
↓
Enter Number
↓
Number % 2 == 0
↓
Yes → Even
No → Odd
↓
End
ــــــــــــــــــــــــــــــــــــــــــــ
10. لماذا يوجد Yes و No؟
لأننا أمام شرط.
أي شرط له نتيجتان أساسيتان:
Yes / True
أو:
No / False
في حالتنا:
Number % 2 == 0
إما أن يكون:
صحيحًا
أو:
خطأ
ــــــــــــــــــــــــــــــــــــــــــــ
يمكن التفكير فيها بهذه الطريقة:
هل العدد يقبل القسمة على 2 بدون باقي؟
↓
نعم؟ ───→ زوجي
لا؟ ───→ فردي
ــــــــــــــــــــــــــــــــــــــــــــ
11. كيف أمشي داخل المخطط؟
لنأخذ العدد:
10
نبدأ:
Start
↓
Enter Number
ندخل:
10
↓
نصل إلى القرار:
Number % 2 == 0
نعوض:
10 % 2 == 0
↓
10 % 2 = 0
إذن الشرط صحيح.
↓
نذهب إلى:
Yes
↓
Print Even
↓
End
ــــــــــــــــــــــــــــــــــــــــــــ
12. ماذا لو أدخلت 11؟
نبدأ:
Start
↓
Enter Number
القيمة:
11
↓
الشرط:
11 % 2 == 0
نحسب:
11 % 2 = 1
إذن:
1 == 0
خطأ.
↓
نذهب إلى:
No
↓
Print Odd
↓
End
إذن:
11 عدد فردي.
ــــــــــــــــــــــــــــــــــــــــــــ
13. هل الصفر زوجي أم فردي؟
نعم، الصفر عدد زوجي.
لأن:
0 % 2 = 0
إذن:
0 % 2 == 0
صحيح.
وبالتالي:
0 → Even
ــــــــــــــــــــــــــــــــــــــــــــ
14. ماذا عن الأعداد السالبة؟
نفس الفكرة تنطبق عليها.
مثل:
-8
باقي قسمته على 2 يساوي صفرًا، لذلك هو:
زوجي.
أما:
-7
فهو:
فردي.
ــــــــــــــــــــــــــــــــــــــــــــ
15. كيف أعرف المتغيرات التي أحتاجها؟
اسأل نفسك:
ما المعلومات التي سأدخلها؟
لدينا:
Number
إذن نحتاج متغيرًا لتخزين العدد.
مثلًا في البرمجة:
Number
ولا نحتاج إلى متغيرات كثيرة.
فليس لدينا مثلًا:
A
وB
وC
لأن المسألة لا تحتاج إليها.
ــــــــــــــــــــــــــــــــــــــــــــ
16. هل أحتاج إلى متغير لتخزين Even أو Odd؟
ليس بالضرورة.
يمكننا مباشرة طباعة النتيجة.
فإذا كان الشرط صحيحًا:
Print Even
وإذا كان خطأ:
Print Odd
ــــــــــــــــــــــــــــــــــــــــــــ
17. كيف أعرف عدد خطوات الحل؟
يمكنك تقسيم أي مسألة إلى:
Input → Process → Decision → Output
في هذه المسألة:
Input
Number
ــــــــــــــــــــــــــــــــــــــــــــ
Process
حساب:
Number % 2
ــــــــــــــــــــــــــــــــــــــــــــ
Decision
هل:
Number % 2 == 0
ــــــــــــــــــــــــــــــــــــــــــــ
Output
إما:
Even
أو:
Odd
ــــــــــــــــــــــــــــــــــــــــــــ
18. ما الفكرة التي يجب أن أتعلمها من هذا المثال؟
لا تحفظ المخطط فقط.
تعلم طريقة التفكير:
أولًا: ما البيانات التي أحتاجها؟
ثانيًا: ماذا سأفعل بهذه البيانات؟
ثالثًا: هل يوجد شرط أو قرار؟
رابعًا: ما نتيجة الشرط؟
خامسًا: ماذا سأطبع؟
ــــــــــــــــــــــــــــــــــــــــــــ
أسئلة مهمة جدًا قد تخطر في بالك
كيف أعرف المدخلات؟
ابحث عن البيانات التي يحتاجها الحل من المستخدم.
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف عدد المدخلات؟
عدّ البيانات المستقلة التي يطلبها السؤال.
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف المخرجات؟
اسأل:
ما الشيء الذي يريد مني السؤال إظهاره للمستخدم؟
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف المتغيرات؟
كل قيمة نحتاج إلى تخزينها أو استخدامها في العمليات يمكن أن تحتاج إلى متغير.
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف أنني أحتاج إلى شرط؟
إذا كان السؤال يحتوي على فكرة مثل:
إذا، هل، في حالة، وإلا، أكبر من، أصغر من، يساوي، زوجي، فردي...
فغالبًا تحتاج إلى قرار.
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف الشرط؟
حوّل المطلوب إلى سؤال يمكن أن تكون إجابته:
نعم أو لا.
في مثالنا:
هل باقي قسمة العدد على 2 يساوي صفرًا؟
إذن:
Number % 2 == 0
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف Yes و No؟
Yes = الشرط صحيح.
No = الشرط خاطئ.
ــــــــــــــــــــــــــــــــــــــــــــ
كيف أعرف أي طريق أختار في المخطط؟
نفّذ الشرط أولًا، ثم انظر إلى النتيجة.
True → Yes
False → No
ــــــــــــــــــــــــــــــــــــــــــــ
هل % تعني النسبة المئوية؟
لا.
في البرمجة % تعني غالبًا:
باقي القسمة Modulo
وليس علامة النسبة المئوية المستخدمة في الرياضيات اليومية.
ــــــــــــــــــــــــــــــــــــــــــــ
هل = و == نفس الشيء؟
لا.
= للإسناد.
== للمقارنة.
وهذا فرق مهم جدًا في البرمجة.
ــــــــــــــــــــــــــــــــــــــــــــ
الخلاصة
هذا المخطط بالكامل يمكن اختصاره في فكرة واحدة:
أدخل عددًا → احسب باقي قسمته على 2 → إذا كان الباقي صفرًا فهو زوجي → وإذا لم يكن صفرًا فهو فردي.
أي:
Start
↓
Enter Number
↓
Number % 2 == 0
↓
Yes → Even
No → Odd
↓
End
وأهم شيء هنا ليس حفظ المخطط، وإنما تعلم كيف تستخرج المدخلات والعمليات والشروط والمخرجات من أي سؤال برمجي.
#خوارزميات_من_الصفر
#خوارزميات_من_الصفر
👍1
1. ما المطلوب من البرنامج؟
فكرة البرنامج هي:
إدخال 3 أعداد، حساب متوسطها، ثم معرفة هل المتوسط أكبر من أو يساوي 50 أم لا.
إذا كان المتوسط:
>= 50
فالنتيجة:
Successful → ناجح
أما إذا كان المتوسط:
< 50
فالنتيجة:
Residual / Unsuccessful → راسب
ــــــــــــــــــــــــــــــــــــــــــــ
2. كيف أعرف المدخلات؟
هذه من أهم المهارات في حل المسائل.
نسأل أنفسنا:
ما المعلومات التي يحتاجها البرنامج من المستخدم؟
في المخطط لدينا:
Enter num1, num2, num3
إذن المدخلات هي:
num1
num2
num3
أي أن البرنامج يحتاج إلى 3 أعداد.
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال: كيف عرفت أن عدد المدخلات 3؟
لأن لدينا ثلاث قيم مختلفة:
num1
num2
num3
كل واحدة منها تمثل قيمة يدخلها المستخدم.
إذن:
عدد المدخلات = 3
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال مهم: هل num1, num2, num3 تعتبر متغيرات؟
نعم.
كل واحد منها متغير يخزن قيمة:
num1 → العدد الأول
num2 → العدد الثاني
num3 → العدد الثالث
ــــــــــــــــــــــــــــــــــــــــــــ
3. كيف أحدد أسماء المتغيرات؟
يمكنك اختيار أسماء واضحة تدل على محتوى المتغير.
مثلًا:
num1
num2
num3
وهي اختصار لـ:
number 1
number 2
number 3
ويمكن أيضًا أن نسميها:
A
B
C
لكن:
num1, num2, num3
أوضح للمبتدئ ولأي شخص يقرأ البرنامج.
ــــــــــــــــــــــــــــــــــــــــــــ
4. ماذا يحدث بعد إدخال الأعداد؟
بعد أن نحصل على الأعداد الثلاثة، نحتاج إلى حساب المتوسط.
المخطط يستخدم:
Avg = (num1 + num2 + num3) / 3
وهذه تسمى:
عملية معالجة Process
لأن البرنامج يقوم بعملية حسابية على البيانات التي أدخلها المستخدم.
ــــــــــــــــــــــــــــــــــــــــــــ
5. لماذا جمعنا الأعداد؟
لأن قانون المتوسط الحسابي هو:
أي:
نجمع القيم ثم نقسم المجموع على عدد القيم.
لدينا 3 أعداد، لذلك نقسم على:
3
ــــــــــــــــــــــــــــــــــــــــــــ
مثال
لو أدخل المستخدم:
num1 = 60
num2 = 70
num3 = 80
نحسب:
Avg = (60 + 70 + 80) / 3
أولًا:
60 + 70 + 80 = 210
ثم:
210 / 3 = 70
إذن:
Avg = 70
ــــــــــــــــــــــــــــــــــــــــــــ
6. لماذا استخدمنا المتغير Avg؟
لأننا نحتاج إلى الاحتفاظ بنتيجة المتوسط حتى نستخدمها في الشرط.
لذلك لدينا:
Avg
وهو اختصار:
Average
أي:
المتوسط
فلدينا الآن:
المدخلات:
num1
num2
num3
المتغير الناتج:
Avg
ــــــــــــــــــــــــــــــــــــــــــــ
7. لماذا لا نقارن الأعداد الثلاثة مباشرة؟
قد يخطر في بالك سؤال:
لماذا لا نقول إن num1 يجب أن يكون أكبر من 50 وnum2 أكبر من 50 وnum3 أكبر من 50؟
لأن المطلوب في هذا المثال هو متوسط الأعداد الثلاثة.
نحن لا نحكم على كل عدد بشكل منفصل.
بل نحسب:
Avg
ثم نحكم على المتوسط.
ــــــــــــــــــــــــــــــــــــــــــــ
8. ما الشرط الموجود في المخطط؟
بعد حساب المتوسط، نصل إلى شكل القرار:
Avg >= 50
هذا يعني:
هل قيمة المتوسط أكبر من أو تساوي 50؟
وهنا البرنامج يحتاج إلى اتخاذ قرار.
لذلك استخدمنا:
Decision
ويمثله الشكل:
المعين ♦
ــــــــــــــــــــــــــــــــــــــــــــ
9. ماذا يعني >=؟
الرمز:
>=
يتكون من:
> → أكبر من
= → أو يساوي
إذن:
Avg >= 50
تعني:
المتوسط أكبر من أو يساوي 50.
ــــــــــــــــــــــــــــــــــــــــــــ
10. لماذا لم نستخدم > فقط؟
لو كتبنا:
Avg > 50
فهذا يعني:
يجب أن يكون المتوسط أكبر من 50 فقط.
لكن ماذا لو كان المتوسط بالضبط:
50
بحسب هذا الشرط سيكون:
50 > 50
وهذا خطأ.
بينما المطلوب في المخطط هو اعتبار 50 نجاحًا.
لذلك نستخدم:
>=
حتى يشمل:
50
وكل شيء أكبر منه.
ــــــــــــــــــــــــــــــــــــــــــــ
11. ماذا يحدث إذا كانت الإجابة Yes؟
إذا كان:
Avg >= 50
صحيحًا، نذهب إلى:
Yes
ثم:
Print Successful
أي:
اطبع ناجح.
ــــــــــــــــــــــــــــــــــــــــــــ
مثال
لدينا:
60
70
80
المتوسط:
70
نفحص:
70 >= 50
صحيح.
إذن:
Yes → Successful
ــــــــــــــــــــــــــــــــــــــــــــ
12. ماذا يحدث إذا كانت الإجابة No؟
إذا كان:
Avg >= 50
خطأ.
هذا يعني أن:
Avg < 50
وبالتالي نذهب إلى:
No
ثم:
Print Residual
أي حسب المقصود من المخطط:
راسب / غير ناجح.
ــــــــــــــــــــــــــــــــــــــــــــ
مثال
لدينا:
30
40
20
نحسب:
Avg = (30 + 40 + 20) / 3
Avg = 90 / 3
Avg = 30
ثم:
30 >= 50
خطأ.
إذن:
No → Residual
ــــــــــــــــــــــــــــــــــــــــــــ
13. كيف أعرف المخرجات؟
اسأل نفسك:
ماذا يريد السؤال أن يظهر للمستخدم في النهاية؟
فكرة البرنامج هي:
إدخال 3 أعداد، حساب متوسطها، ثم معرفة هل المتوسط أكبر من أو يساوي 50 أم لا.
إذا كان المتوسط:
>= 50
فالنتيجة:
Successful → ناجح
أما إذا كان المتوسط:
< 50
فالنتيجة:
Residual / Unsuccessful → راسب
ــــــــــــــــــــــــــــــــــــــــــــ
2. كيف أعرف المدخلات؟
هذه من أهم المهارات في حل المسائل.
نسأل أنفسنا:
ما المعلومات التي يحتاجها البرنامج من المستخدم؟
في المخطط لدينا:
Enter num1, num2, num3
إذن المدخلات هي:
num1
num2
num3
أي أن البرنامج يحتاج إلى 3 أعداد.
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال: كيف عرفت أن عدد المدخلات 3؟
لأن لدينا ثلاث قيم مختلفة:
num1
num2
num3
كل واحدة منها تمثل قيمة يدخلها المستخدم.
إذن:
عدد المدخلات = 3
ــــــــــــــــــــــــــــــــــــــــــــ
سؤال مهم: هل num1, num2, num3 تعتبر متغيرات؟
نعم.
كل واحد منها متغير يخزن قيمة:
num1 → العدد الأول
num2 → العدد الثاني
num3 → العدد الثالث
ــــــــــــــــــــــــــــــــــــــــــــ
3. كيف أحدد أسماء المتغيرات؟
يمكنك اختيار أسماء واضحة تدل على محتوى المتغير.
مثلًا:
num1
num2
num3
وهي اختصار لـ:
number 1
number 2
number 3
ويمكن أيضًا أن نسميها:
A
B
C
لكن:
num1, num2, num3
أوضح للمبتدئ ولأي شخص يقرأ البرنامج.
ــــــــــــــــــــــــــــــــــــــــــــ
4. ماذا يحدث بعد إدخال الأعداد؟
بعد أن نحصل على الأعداد الثلاثة، نحتاج إلى حساب المتوسط.
المخطط يستخدم:
Avg = (num1 + num2 + num3) / 3
وهذه تسمى:
عملية معالجة Process
لأن البرنامج يقوم بعملية حسابية على البيانات التي أدخلها المستخدم.
ــــــــــــــــــــــــــــــــــــــــــــ
5. لماذا جمعنا الأعداد؟
لأن قانون المتوسط الحسابي هو:
أي:
نجمع القيم ثم نقسم المجموع على عدد القيم.
لدينا 3 أعداد، لذلك نقسم على:
3
ــــــــــــــــــــــــــــــــــــــــــــ
مثال
لو أدخل المستخدم:
num1 = 60
num2 = 70
num3 = 80
نحسب:
Avg = (60 + 70 + 80) / 3
أولًا:
60 + 70 + 80 = 210
ثم:
210 / 3 = 70
إذن:
Avg = 70
ــــــــــــــــــــــــــــــــــــــــــــ
6. لماذا استخدمنا المتغير Avg؟
لأننا نحتاج إلى الاحتفاظ بنتيجة المتوسط حتى نستخدمها في الشرط.
لذلك لدينا:
Avg
وهو اختصار:
Average
أي:
المتوسط
فلدينا الآن:
المدخلات:
num1
num2
num3
المتغير الناتج:
Avg
ــــــــــــــــــــــــــــــــــــــــــــ
7. لماذا لا نقارن الأعداد الثلاثة مباشرة؟
قد يخطر في بالك سؤال:
لماذا لا نقول إن num1 يجب أن يكون أكبر من 50 وnum2 أكبر من 50 وnum3 أكبر من 50؟
لأن المطلوب في هذا المثال هو متوسط الأعداد الثلاثة.
نحن لا نحكم على كل عدد بشكل منفصل.
بل نحسب:
Avg
ثم نحكم على المتوسط.
ــــــــــــــــــــــــــــــــــــــــــــ
8. ما الشرط الموجود في المخطط؟
بعد حساب المتوسط، نصل إلى شكل القرار:
Avg >= 50
هذا يعني:
هل قيمة المتوسط أكبر من أو تساوي 50؟
وهنا البرنامج يحتاج إلى اتخاذ قرار.
لذلك استخدمنا:
Decision
ويمثله الشكل:
المعين ♦
ــــــــــــــــــــــــــــــــــــــــــــ
9. ماذا يعني >=؟
الرمز:
>=
يتكون من:
> → أكبر من
= → أو يساوي
إذن:
Avg >= 50
تعني:
المتوسط أكبر من أو يساوي 50.
ــــــــــــــــــــــــــــــــــــــــــــ
10. لماذا لم نستخدم > فقط؟
لو كتبنا:
Avg > 50
فهذا يعني:
يجب أن يكون المتوسط أكبر من 50 فقط.
لكن ماذا لو كان المتوسط بالضبط:
50
بحسب هذا الشرط سيكون:
50 > 50
وهذا خطأ.
بينما المطلوب في المخطط هو اعتبار 50 نجاحًا.
لذلك نستخدم:
>=
حتى يشمل:
50
وكل شيء أكبر منه.
ــــــــــــــــــــــــــــــــــــــــــــ
11. ماذا يحدث إذا كانت الإجابة Yes؟
إذا كان:
Avg >= 50
صحيحًا، نذهب إلى:
Yes
ثم:
Print Successful
أي:
اطبع ناجح.
ــــــــــــــــــــــــــــــــــــــــــــ
مثال
لدينا:
60
70
80
المتوسط:
70
نفحص:
70 >= 50
صحيح.
إذن:
Yes → Successful
ــــــــــــــــــــــــــــــــــــــــــــ
12. ماذا يحدث إذا كانت الإجابة No؟
إذا كان:
Avg >= 50
خطأ.
هذا يعني أن:
Avg < 50
وبالتالي نذهب إلى:
No
ثم:
Print Residual
أي حسب المقصود من المخطط:
راسب / غير ناجح.
ــــــــــــــــــــــــــــــــــــــــــــ
مثال
لدينا:
30
40
20
نحسب:
Avg = (30 + 40 + 20) / 3
Avg = 90 / 3
Avg = 30
ثم:
30 >= 50
خطأ.
إذن:
No → Residual
ــــــــــــــــــــــــــــــــــــــــــــ
13. كيف أعرف المخرجات؟
اسأل نفسك:
ماذا يريد السؤال أن يظهر للمستخدم في النهاية؟
هنا لدينا نتيجتان محتملتان:
Successful
أو:
Residual
إذن لدينا مخرجان محتملان، لكن البرنامج سيطبع واحدًا فقط.
ــــــــــــــــــــــــــــــــــــــــــــ
14. هل المخرج هو Avg أيضًا؟
يمكن أن يكون كذلك إذا طلب السؤال طباعة المتوسط.
لكن في المخطط الموجود أمامنا، المخرج النهائي هو حالة النجاح أو الرسوب.
أي:
Successful
أو:
Residual
إذا أردنا عرض المتوسط أيضًا، يمكن أن نضيف:
Print Avg
ثم نطبع حالة الطالب.
ــــــــــــــــــــــــــــــــــــــــــــ
15. كيف أعرف متى أستخدم الشرط؟
اسأل نفسك:
هل يوجد أكثر من نتيجة محتملة؟
هنا لدينا:
إذا كان المتوسط >= 50 → ناجح.
وإذا لم يكن كذلك → راسب.
إذن نحتاج إلى Decision.
ــــــــــــــــــــــــــــــــــــــــــــ
16. لماذا يوجد Yes و No؟
لأن الشرط:
Avg >= 50
له نتيجتان:
Yes
يعني:
الشرط صحيح.
No
يعني:
الشرط خطأ.
ــــــــــــــــــــــــــــــــــــــــــــ
17. كيف أعرف أي طريق أختار؟
لا تختار الطريق عشوائيًا.
احسب الشرط.
مثلاً:
Avg = 65
نختبر:
65 >= 50
صحيح.
إذن:
Yes
ــــــــــــــــــــــــــــــــــــــــــــ
أما:
Avg = 40
نختبر:
40 >= 50
خطأ.
إذن:
No
ــــــــــــــــــــــــــــــــــــــــــــ
18. ماذا عن المتوسط = 50 بالضبط؟
هذه حالة مهمة جدًا.
لدينا:
Avg = 50
والشرط:
Avg >= 50
نحسب:
50 >= 50
النتيجة:
True
إذن:
Yes → Successful
وهذا يوضح لنا لماذا استخدمنا >= وليس >.
ــــــــــــــــــــــــــــــــــــــــــــ
19. سؤال مهم جدًا: ماذا لو كان أحد الأعداد سالبًا؟
رياضيًا يمكن أن نحسب المتوسط بشكل طبيعي.
مثلاً:
-10
60
70
المتوسط:
(-10 + 60 + 70) / 3
= 120 / 3
= 40
إذن:
40 >= 50
خطأ.
فالنتيجة:
No → راسب
ــــــــــــــــــــــــــــــــــــــــــــ
20. كيف أحول السؤال إلى خطوات؟
وهذه أهم مهارة أريدك أن تتعلمها.
بدل أن تبدأ مباشرة برسم المخطط، حوّل السؤال إلى خطوات بسيطة:
ــــــــــــــــــــــــــــــــــــــــــــ
الخطوة 1:
حدد المدخلات.
لدينا:
num1, num2, num3
ــــــــــــــــــــــــــــــــــــــــــــ
الخطوة 2:
حدد العملية الحسابية.
لدينا:
Avg = (num1 + num2 + num3) / 3
ــــــــــــــــــــــــــــــــــــــــــــ
الخطوة 3:
حدد السؤال الذي يحتاج إلى قرار.
لدينا:
Avg >= 50
ــــــــــــــــــــــــــــــــــــــــــــ
الخطوة 4:
حدد نتيجة Yes.
Successful
ــــــــــــــــــــــــــــــــــــــــــــ
الخطوة 5:
حدد نتيجة No.
Residual
ــــــــــــــــــــــــــــــــــــــــــــ
21. كيف أعرف أشكال المخطط؟
هنا نبدأ بربط التفكير بالأشكال:
Start / End
→ الشكل البيضاوي.
ــــــــــــــــــــــــــــــــــــــــــــ
Enter
→ متوازي الأضلاع.
ــــــــــــــــــــــــــــــــــــــــــــ
Calculation
مثل:
Avg = ...
→ المستطيل.
ــــــــــــــــــــــــــــــــــــــــــــ
Condition
مثل:
Avg >= 50
→ المعين.
ــــــــــــــــــــــــــــــــــــــــــــ
Print
→ متوازي الأضلاع.
ــــــــــــــــــــــــــــــــــــــــــــ
22. كيف أقرأ المخطط كاملًا؟
اقرأه من الأعلى إلى الأسفل:
Start
↓
أدخل 3 أعداد:
num1, num2, num3
↓
احسب المتوسط:
Avg = (num1 + num2 + num3) / 3
↓
اسأل:
Avg >= 50
↓
إذا Yes
→ Successful
↓
إذا No
→ Residual
↓
يلتقي المساران
↓
End
ــــــــــــــــــــــــــــــــــــــــــــ
23. كيف أعرف أن المخطط صحيح؟
استخدم طريقة اسمها:
Dry Run
أي:
التجربة اليدوية.
اختر أرقامًا بنفسك وتتبع المخطط خطوة بخطوة.
مثلاً:
num1 = 80
num2 = 60
num3 = 70
نحسب:
Avg = (80 + 60 + 70) / 3
Avg = 210 / 3
Avg = 70
ثم:
70 >= 50
صحيح.
إذن:
Successful
إذا وصلت إلى النتيجة الصحيحة، فهذا مؤشر قوي أن منطق الحل يعمل لهذه الحالة.
ــــــــــــــــــــــــــــــــــــــــــــ
24. جرب حالة ثانية
أدخل:
20
30
40
المتوسط:
(20 + 30 + 40) / 3
= 90 / 3
= 30
ثم:
30 >= 50
خطأ.
إذن:
Residual
ــــــــــــــــــــــــــــــــــــــــــــ
25. جرب أهم حالة: 50
أدخل:
50
50
50
المتوسط:
50
الشرط:
50 >= 50
صحيح.
إذن:
Successful
وهذه الحالة مهمة جدًا لأنها تكشف لنا هل استخدمنا:
>=
أم استخدمنا بالخطأ:
>
ــــــــــــــــــــــــــــــــــــــــــــ
الخلاصة التي أريدك أن تتعلمها
عندما يأتيك أي سؤال برمجي، لا تبدأ بالرسم مباشرة.
امشِ بهذه الأسئلة:
ــــــــــــــــــــــــــــــــــــــــــــ
1. ماذا يريد مني السؤال؟
↓
2. ما البيانات التي أحتاجها؟
↓
3. كم عدد المدخلات؟
Successful
أو:
Residual
إذن لدينا مخرجان محتملان، لكن البرنامج سيطبع واحدًا فقط.
ــــــــــــــــــــــــــــــــــــــــــــ
14. هل المخرج هو Avg أيضًا؟
يمكن أن يكون كذلك إذا طلب السؤال طباعة المتوسط.
لكن في المخطط الموجود أمامنا، المخرج النهائي هو حالة النجاح أو الرسوب.
أي:
Successful
أو:
Residual
إذا أردنا عرض المتوسط أيضًا، يمكن أن نضيف:
Print Avg
ثم نطبع حالة الطالب.
ــــــــــــــــــــــــــــــــــــــــــــ
15. كيف أعرف متى أستخدم الشرط؟
اسأل نفسك:
هل يوجد أكثر من نتيجة محتملة؟
هنا لدينا:
إذا كان المتوسط >= 50 → ناجح.
وإذا لم يكن كذلك → راسب.
إذن نحتاج إلى Decision.
ــــــــــــــــــــــــــــــــــــــــــــ
16. لماذا يوجد Yes و No؟
لأن الشرط:
Avg >= 50
له نتيجتان:
Yes
يعني:
الشرط صحيح.
No
يعني:
الشرط خطأ.
ــــــــــــــــــــــــــــــــــــــــــــ
17. كيف أعرف أي طريق أختار؟
لا تختار الطريق عشوائيًا.
احسب الشرط.
مثلاً:
Avg = 65
نختبر:
65 >= 50
صحيح.
إذن:
Yes
ــــــــــــــــــــــــــــــــــــــــــــ
أما:
Avg = 40
نختبر:
40 >= 50
خطأ.
إذن:
No
ــــــــــــــــــــــــــــــــــــــــــــ
18. ماذا عن المتوسط = 50 بالضبط؟
هذه حالة مهمة جدًا.
لدينا:
Avg = 50
والشرط:
Avg >= 50
نحسب:
50 >= 50
النتيجة:
True
إذن:
Yes → Successful
وهذا يوضح لنا لماذا استخدمنا >= وليس >.
ــــــــــــــــــــــــــــــــــــــــــــ
19. سؤال مهم جدًا: ماذا لو كان أحد الأعداد سالبًا؟
رياضيًا يمكن أن نحسب المتوسط بشكل طبيعي.
مثلاً:
-10
60
70
المتوسط:
(-10 + 60 + 70) / 3
= 120 / 3
= 40
إذن:
40 >= 50
خطأ.
فالنتيجة:
No → راسب
ــــــــــــــــــــــــــــــــــــــــــــ
20. كيف أحول السؤال إلى خطوات؟
وهذه أهم مهارة أريدك أن تتعلمها.
بدل أن تبدأ مباشرة برسم المخطط، حوّل السؤال إلى خطوات بسيطة:
ــــــــــــــــــــــــــــــــــــــــــــ
الخطوة 1:
حدد المدخلات.
لدينا:
num1, num2, num3
ــــــــــــــــــــــــــــــــــــــــــــ
الخطوة 2:
حدد العملية الحسابية.
لدينا:
Avg = (num1 + num2 + num3) / 3
ــــــــــــــــــــــــــــــــــــــــــــ
الخطوة 3:
حدد السؤال الذي يحتاج إلى قرار.
لدينا:
Avg >= 50
ــــــــــــــــــــــــــــــــــــــــــــ
الخطوة 4:
حدد نتيجة Yes.
Successful
ــــــــــــــــــــــــــــــــــــــــــــ
الخطوة 5:
حدد نتيجة No.
Residual
ــــــــــــــــــــــــــــــــــــــــــــ
21. كيف أعرف أشكال المخطط؟
هنا نبدأ بربط التفكير بالأشكال:
Start / End
→ الشكل البيضاوي.
ــــــــــــــــــــــــــــــــــــــــــــ
Enter
→ متوازي الأضلاع.
ــــــــــــــــــــــــــــــــــــــــــــ
Calculation
مثل:
Avg = ...
→ المستطيل.
ــــــــــــــــــــــــــــــــــــــــــــ
Condition
مثل:
Avg >= 50
→ المعين.
ــــــــــــــــــــــــــــــــــــــــــــ
→ متوازي الأضلاع.
ــــــــــــــــــــــــــــــــــــــــــــ
22. كيف أقرأ المخطط كاملًا؟
اقرأه من الأعلى إلى الأسفل:
Start
↓
أدخل 3 أعداد:
num1, num2, num3
↓
احسب المتوسط:
Avg = (num1 + num2 + num3) / 3
↓
اسأل:
Avg >= 50
↓
إذا Yes
→ Successful
↓
إذا No
→ Residual
↓
يلتقي المساران
↓
End
ــــــــــــــــــــــــــــــــــــــــــــ
23. كيف أعرف أن المخطط صحيح؟
استخدم طريقة اسمها:
Dry Run
أي:
التجربة اليدوية.
اختر أرقامًا بنفسك وتتبع المخطط خطوة بخطوة.
مثلاً:
num1 = 80
num2 = 60
num3 = 70
نحسب:
Avg = (80 + 60 + 70) / 3
Avg = 210 / 3
Avg = 70
ثم:
70 >= 50
صحيح.
إذن:
Successful
إذا وصلت إلى النتيجة الصحيحة، فهذا مؤشر قوي أن منطق الحل يعمل لهذه الحالة.
ــــــــــــــــــــــــــــــــــــــــــــ
24. جرب حالة ثانية
أدخل:
20
30
40
المتوسط:
(20 + 30 + 40) / 3
= 90 / 3
= 30
ثم:
30 >= 50
خطأ.
إذن:
Residual
ــــــــــــــــــــــــــــــــــــــــــــ
25. جرب أهم حالة: 50
أدخل:
50
50
50
المتوسط:
50
الشرط:
50 >= 50
صحيح.
إذن:
Successful
وهذه الحالة مهمة جدًا لأنها تكشف لنا هل استخدمنا:
>=
أم استخدمنا بالخطأ:
>
ــــــــــــــــــــــــــــــــــــــــــــ
الخلاصة التي أريدك أن تتعلمها
عندما يأتيك أي سؤال برمجي، لا تبدأ بالرسم مباشرة.
امشِ بهذه الأسئلة:
ــــــــــــــــــــــــــــــــــــــــــــ
1. ماذا يريد مني السؤال؟
↓
2. ما البيانات التي أحتاجها؟
↓
3. كم عدد المدخلات؟
↓
4. ما أسماء المدخلات؟
↓
5. ما العمليات التي سأجريها؟
↓
6. ما المتغيرات التي أحتاجها لتخزين النتائج؟
↓
7. هل يوجد قرار أو شرط؟
↓
8. ما السؤال الذي سأضعه داخل القرار؟
↓
9. ماذا يحدث إذا كانت الإجابة Yes؟
↓
10. ماذا يحدث إذا كانت الإجابة No؟
↓
11. ما المخرجات؟
↓
12. هل توجد حالات خاصة يجب اختبارها؟
مثل:
50
0
الأعداد السالبة، والقيم الكبيرة، وغيرها.
ــــــــــــــــــــــــــــــــــــــــــــ
قاعدة مهمة جدًا للمبتدئ:
Input → Process → Decision → Output
وفي هذا المثال:
Input
num1, num2, num3
↓
Process
Avg = (num1 + num2 + num3) / 3
↓
Decision
Avg >= 50
↙ ↘
Yes No
↓ ↓
Successful Residual
إذا فهمت هذه الطريقة، فأنت لا تتعلم حل هذا السؤال فقط؛ بل تبدأ في تعلم الطريقة التي تستخدمها لتحليل أي مسألة برمجية جديدة.
#خوارزميات_من_الصفر
4. ما أسماء المدخلات؟
↓
5. ما العمليات التي سأجريها؟
↓
6. ما المتغيرات التي أحتاجها لتخزين النتائج؟
↓
7. هل يوجد قرار أو شرط؟
↓
8. ما السؤال الذي سأضعه داخل القرار؟
↓
9. ماذا يحدث إذا كانت الإجابة Yes؟
↓
10. ماذا يحدث إذا كانت الإجابة No؟
↓
11. ما المخرجات؟
↓
12. هل توجد حالات خاصة يجب اختبارها؟
مثل:
50
0
الأعداد السالبة، والقيم الكبيرة، وغيرها.
ــــــــــــــــــــــــــــــــــــــــــــ
قاعدة مهمة جدًا للمبتدئ:
Input → Process → Decision → Output
وفي هذا المثال:
Input
num1, num2, num3
↓
Process
Avg = (num1 + num2 + num3) / 3
↓
Decision
Avg >= 50
↙ ↘
Yes No
↓ ↓
Successful Residual
إذا فهمت هذه الطريقة، فأنت لا تتعلم حل هذا السؤال فقط؛ بل تبدأ في تعلم الطريقة التي تستخدمها لتحليل أي مسألة برمجية جديدة.
#خوارزميات_من_الصفر
شرح المخطط الانسيابي: مقارنة عددين A و B
المطلوب من البرنامج هو:
إدخال عددين A و B، ثم معرفة هل هما متساويان، وإذا لم يكونا متساويين نحدد أيهما أكبر.
يعني عندنا ثلاث نتائج محتملة:
الحالة الأولى:
A يساوي B
النتيجة:
Equal
━━━━━━━━━━━━━━━━━━━━
الحالة الثانية:
A أكبر من B
النتيجة:
Print A
━━━━━━━━━━━━━━━━━━━━
الحالة الثالثة:
A أصغر من B
النتيجة:
Print B
━━━━━━━━━━━━━━━━━━━━
أول سؤال: كيف أعرف المطلوب من السؤال؟
هذه من أهم المهارات في البرمجة.
قبل أن ترسم أي مخطط، لا تبدأ مباشرة بالأشكال.
اسأل نفسك:
ما الذي يدخل إلى البرنامج؟
ما الذي يجب أن يفعله البرنامج؟
ما الذي يجب أن يخرجه البرنامج؟
هذه الأسئلة الثلاثة تساعدك على تحويل السؤال من كلام عادي إلى خوارزمية.
━━━━━━━━━━━━━━━━━━━━
1. كيف أعرف المدخلات؟
في الصورة يوجد:
Enter A, B
أي:
أدخل A و B
إذن البرنامج يحتاج إلى قيمتين.
القيمة الأولى:
A
والقيمة الثانية:
B
إذن عدد المدخلات = 2
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: كيف عرفت أن عدد المدخلات اثنان؟
لأن السؤال يحتاج إلى عددين حتى نقارنهما.
مثلاً لو قلت لك:
اكتب برنامجًا يحدد العدد الأكبر بين عددين.
فكر:
هل أستطيع معرفة الأكبر بدون وجود عددين؟
لا.
نحتاج:
العدد الأول → A
العدد الثاني → B
إذن لدينا مدخلان.
━━━━━━━━━━━━━━━━━━━━
2. هل A و B مدخلات أم متغيرات؟
هنا توجد نقطة مهمة جدًا للمبتدئ.
A و B هما متغيران، وهما أيضًا يمثلان المدخلات التي سيدخلها المستخدم.
مثلاً المستخدم يدخل:
A = 10
B = 7
فالبرنامج يخزن:
10 داخل A
و
7 داخل B
ثم يبدأ البرنامج بالمقارنة.
━━━━━━━━━━━━━━━━━━━━
3. لماذا سمينا المتغيرات A و B؟
ليس هناك شرط أن نسميها A و B.
يمكن أن نسميها:
num1
num2
أو:
firstNumber
secondNumber
أو حتى:
X
Y
لكننا اخترنا:
A و B
لأنهما قصيران وسهلان.
إذن أسماء المتغيرات لا تأتي من السماء.
أنت تختارها حسب معنى البيانات التي تخزنها.
━━━━━━━━━━━━━━━━━━━━
4. ماذا يحدث في بداية المخطط؟
أول شكل هو:
Start
وهذا يعني:
بداية تنفيذ الخوارزمية.
كل مخطط انسيابي يحتاج إلى نقطة بداية واضحة.
━━━━━━━━━━━━━━━━━━━━
5. ماذا يأتي بعد Start؟
السهم يتجه إلى:
Enter A,B
وهذا يعني:
اطلب من المستخدم إدخال قيمتين A و B.
مثلاً:
Enter A = 20
Enter B = 15
الآن أصبحت لدينا البيانات التي نحتاجها.
━━━━━━━━━━━━━━━━━━━━
6. لماذا شكل Enter هو متوازي الأضلاع؟
في الـ Flowchart توجد أشكال لها معانٍ محددة.
متوازي الأضلاع يستخدم عادةً مع:
Input / Output
أي:
إدخال / إخراج
لذلك:
Enter A,B
موجود داخل متوازي الأضلاع لأنه يمثل إدخال البيانات.
وكذلك:
Print Equal
يكون متوازي أضلاع لأنه يمثل إخراج النتيجة.
━━━━━━━━━━━━━━━━━━━━
7. بعد إدخال A و B، ماذا نريد أن نعرف؟
الآن لدينا:
A
B
ونريد أن نعرف:
هل A يساوي B؟
لذلك وضعنا أول سؤال داخل شكل القرار:
A == B
━━━━━━━━━━━━━━━━━━━━
8. ما معنى == ؟
هذه من أهم النقاط.
==
تعني:
هل يساوي؟
أي أننا نسأل عن المساواة.
مثلاً:
5 == 5
النتيجة:
Yes
لأن 5 يساوي 5.
لكن:
5 == 3
النتيجة:
No
لأن 5 لا يساوي 3.
━━━━━━━━━━━━━━━━━━━━
9. لماذا لم نستخدم = ؟
لأن:
=
و
==
ليسا نفس الشيء.
في أغلب لغات البرمجة:
A = 10
تعني:
ضع القيمة 10 داخل A.
أما:
A == 10
فتعني:
هل قيمة A تساوي 10؟
إذن:
= → إسناد قيمة
== → مقارنة
━━━━━━━━━━━━━━━━━━━━
10. ماذا يحدث إذا كانت A == B ؟
إذا كان:
A == B
صحيحًا، نذهب في مسار:
Yes
ثم:
Print Equal
أي:
اطبع أن العددين متساويان.
مثال:
A = 10
B = 10
نختبر:
10 == 10
الإجابة:
Yes
إذن:
Print Equal
━━━━━━━━━━━━━━━━━━━━
11. ماذا يحدث إذا كانت A != B ؟
إذا كانت:
A == B
خطأ، نذهب إلى:
No
وهذا يعني:
A و B غير متساويين.
لكن هنا لم نعرف بعد أيهما أكبر.
وهنا تأتي الخطوة التالية.
━━━━━━━━━━━━━━━━━━━━
12. لماذا نحتاج سؤالًا ثانيًا؟
لأن:
A == B
أعطانا معلومة واحدة فقط.
إذا كانت الإجابة:
Yes
انتهى الأمر.
لكن إذا كانت:
No
فهذا يعني فقط:
A لا يساوي B
لكن ما زلنا لا نعرف:
هل:
A > B
أم:
A < B
لذلك نحتاج إلى سؤال آخر.
━━━━━━━━━━━━━━━━━━━━
13. ما السؤال الثاني؟
في الصورة يوجد:
A > B
أي:
هل A أكبر من B؟
وهذا هو القرار الثاني.
━━━━━━━━━━━━━━━━━━━━
14. ماذا يعني > ؟
الرمز:
>
يعني:
أكبر من
مثلاً:
10 > 5
صحيحة.
لأن 10 أكبر من 5.
أما:
5 > 10
فهي خاطئة.
━━━━━━━━━━━━━━━━━━━━
15. ماذا يحدث إذا كانت A > B ؟
إذا كانت الإجابة:
Yes
فهذا يعني:
A أكبر من B.
إذن نذهب إلى:
Print A
أي:
اطبع A.
مثال:
A = 20
المطلوب من البرنامج هو:
إدخال عددين A و B، ثم معرفة هل هما متساويان، وإذا لم يكونا متساويين نحدد أيهما أكبر.
يعني عندنا ثلاث نتائج محتملة:
الحالة الأولى:
A يساوي B
النتيجة:
Equal
━━━━━━━━━━━━━━━━━━━━
الحالة الثانية:
A أكبر من B
النتيجة:
Print A
━━━━━━━━━━━━━━━━━━━━
الحالة الثالثة:
A أصغر من B
النتيجة:
Print B
━━━━━━━━━━━━━━━━━━━━
أول سؤال: كيف أعرف المطلوب من السؤال؟
هذه من أهم المهارات في البرمجة.
قبل أن ترسم أي مخطط، لا تبدأ مباشرة بالأشكال.
اسأل نفسك:
ما الذي يدخل إلى البرنامج؟
ما الذي يجب أن يفعله البرنامج؟
ما الذي يجب أن يخرجه البرنامج؟
هذه الأسئلة الثلاثة تساعدك على تحويل السؤال من كلام عادي إلى خوارزمية.
━━━━━━━━━━━━━━━━━━━━
1. كيف أعرف المدخلات؟
في الصورة يوجد:
Enter A, B
أي:
أدخل A و B
إذن البرنامج يحتاج إلى قيمتين.
القيمة الأولى:
A
والقيمة الثانية:
B
إذن عدد المدخلات = 2
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: كيف عرفت أن عدد المدخلات اثنان؟
لأن السؤال يحتاج إلى عددين حتى نقارنهما.
مثلاً لو قلت لك:
اكتب برنامجًا يحدد العدد الأكبر بين عددين.
فكر:
هل أستطيع معرفة الأكبر بدون وجود عددين؟
لا.
نحتاج:
العدد الأول → A
العدد الثاني → B
إذن لدينا مدخلان.
━━━━━━━━━━━━━━━━━━━━
2. هل A و B مدخلات أم متغيرات؟
هنا توجد نقطة مهمة جدًا للمبتدئ.
A و B هما متغيران، وهما أيضًا يمثلان المدخلات التي سيدخلها المستخدم.
مثلاً المستخدم يدخل:
A = 10
B = 7
فالبرنامج يخزن:
10 داخل A
و
7 داخل B
ثم يبدأ البرنامج بالمقارنة.
━━━━━━━━━━━━━━━━━━━━
3. لماذا سمينا المتغيرات A و B؟
ليس هناك شرط أن نسميها A و B.
يمكن أن نسميها:
num1
num2
أو:
firstNumber
secondNumber
أو حتى:
X
Y
لكننا اخترنا:
A و B
لأنهما قصيران وسهلان.
إذن أسماء المتغيرات لا تأتي من السماء.
أنت تختارها حسب معنى البيانات التي تخزنها.
━━━━━━━━━━━━━━━━━━━━
4. ماذا يحدث في بداية المخطط؟
أول شكل هو:
Start
وهذا يعني:
بداية تنفيذ الخوارزمية.
كل مخطط انسيابي يحتاج إلى نقطة بداية واضحة.
━━━━━━━━━━━━━━━━━━━━
5. ماذا يأتي بعد Start؟
السهم يتجه إلى:
Enter A,B
وهذا يعني:
اطلب من المستخدم إدخال قيمتين A و B.
مثلاً:
Enter A = 20
Enter B = 15
الآن أصبحت لدينا البيانات التي نحتاجها.
━━━━━━━━━━━━━━━━━━━━
6. لماذا شكل Enter هو متوازي الأضلاع؟
في الـ Flowchart توجد أشكال لها معانٍ محددة.
متوازي الأضلاع يستخدم عادةً مع:
Input / Output
أي:
إدخال / إخراج
لذلك:
Enter A,B
موجود داخل متوازي الأضلاع لأنه يمثل إدخال البيانات.
وكذلك:
Print Equal
يكون متوازي أضلاع لأنه يمثل إخراج النتيجة.
━━━━━━━━━━━━━━━━━━━━
7. بعد إدخال A و B، ماذا نريد أن نعرف؟
الآن لدينا:
A
B
ونريد أن نعرف:
هل A يساوي B؟
لذلك وضعنا أول سؤال داخل شكل القرار:
A == B
━━━━━━━━━━━━━━━━━━━━
8. ما معنى == ؟
هذه من أهم النقاط.
==
تعني:
هل يساوي؟
أي أننا نسأل عن المساواة.
مثلاً:
5 == 5
النتيجة:
Yes
لأن 5 يساوي 5.
لكن:
5 == 3
النتيجة:
No
لأن 5 لا يساوي 3.
━━━━━━━━━━━━━━━━━━━━
9. لماذا لم نستخدم = ؟
لأن:
=
و
==
ليسا نفس الشيء.
في أغلب لغات البرمجة:
A = 10
تعني:
ضع القيمة 10 داخل A.
أما:
A == 10
فتعني:
هل قيمة A تساوي 10؟
إذن:
= → إسناد قيمة
== → مقارنة
━━━━━━━━━━━━━━━━━━━━
10. ماذا يحدث إذا كانت A == B ؟
إذا كان:
A == B
صحيحًا، نذهب في مسار:
Yes
ثم:
Print Equal
أي:
اطبع أن العددين متساويان.
مثال:
A = 10
B = 10
نختبر:
10 == 10
الإجابة:
Yes
إذن:
Print Equal
━━━━━━━━━━━━━━━━━━━━
11. ماذا يحدث إذا كانت A != B ؟
إذا كانت:
A == B
خطأ، نذهب إلى:
No
وهذا يعني:
A و B غير متساويين.
لكن هنا لم نعرف بعد أيهما أكبر.
وهنا تأتي الخطوة التالية.
━━━━━━━━━━━━━━━━━━━━
12. لماذا نحتاج سؤالًا ثانيًا؟
لأن:
A == B
أعطانا معلومة واحدة فقط.
إذا كانت الإجابة:
Yes
انتهى الأمر.
لكن إذا كانت:
No
فهذا يعني فقط:
A لا يساوي B
لكن ما زلنا لا نعرف:
هل:
A > B
أم:
A < B
لذلك نحتاج إلى سؤال آخر.
━━━━━━━━━━━━━━━━━━━━
13. ما السؤال الثاني؟
في الصورة يوجد:
A > B
أي:
هل A أكبر من B؟
وهذا هو القرار الثاني.
━━━━━━━━━━━━━━━━━━━━
14. ماذا يعني > ؟
الرمز:
>
يعني:
أكبر من
مثلاً:
10 > 5
صحيحة.
لأن 10 أكبر من 5.
أما:
5 > 10
فهي خاطئة.
━━━━━━━━━━━━━━━━━━━━
15. ماذا يحدث إذا كانت A > B ؟
إذا كانت الإجابة:
Yes
فهذا يعني:
A أكبر من B.
إذن نذهب إلى:
Print A
أي:
اطبع A.
مثال:
A = 20
B = 10
السؤال الأول:
20 == 10
No
نذهب للسؤال الثاني:
20 > 10
Yes
إذن:
Print A
والنتيجة:
20
━━━━━━━━━━━━━━━━━━━━
16. ماذا يحدث إذا كانت A > B = No ؟
إذا كان:
A > B
والإجابة:
No
فهذا يعني أن A ليست أكبر من B.
ونحن نعرف مسبقًا من السؤال الأول أن:
A != B
إذن لا يمكن أن يكونا متساويين.
فما الاحتمال المتبقي؟
أن:
A < B
لذلك نذهب إلى:
Print B
أي:
B هو الأكبر.
━━━━━━━━━━━━━━━━━━━━
مثال كامل
لنفترض أن المستخدم أدخل:
A = 8
B = 15
نبدأ.
━━━━━━━━━━━━━━━━━━━━
Start
↓
Enter A,B
↓
القيم:
A = 8
B = 15
↓
السؤال:
A == B
أي:
8 == 15
النتيجة:
No
↓
ننتقل للسؤال الثاني:
A > B
أي:
8 > 15
النتيجة:
No
↓
إذن B هو الأكبر.
فننفذ:
Print B
والنتيجة:
15
━━━━━━━━━━━━━━━━━━━━
مثال آخر
A = 20
B = 7
السؤال الأول:
20 == 7
No
نذهب للسؤال الثاني:
20 > 7
Yes
إذن:
Print A
النتيجة:
20
━━━━━━━━━━━━━━━━━━━━
مثال ثالث: العددان متساويان
A = 12
B = 12
السؤال:
12 == 12
Yes
إذن:
Print Equal
ولا نحتاج إلى السؤال الثاني.
━━━━━━━━━━━━━━━━━━━━
سؤال مهم جدًا: كيف أعرف عدد القرارات؟
لا توجد قاعدة تقول:
كل برنامج يحتاج قرارين.
بل تنظر إلى الحالات المحتملة.
هنا لدينا ثلاث حالات:
A = B
A > B
A < B
لذلك احتجنا إلى قرارات تكفي لتمييز هذه الحالات.
القرار الأول:
A == B
إذا كان Yes انتهينا.
إذا كان No نحتاج معرفة من الأكبر.
لذلك القرار الثاني:
A > B
وهكذا غطينا الحالات الثلاث.
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: كيف أعرف ما هي العمليات المطلوبة؟
انظر إلى المطلوب.
المطلوب ليس حساب شيء.
المطلوب:
مقارنة عددين.
إذن العملية الأساسية هي المقارنة.
نستخدم:
==
و:
>
ومن خلالهما نستنتج الحالة الثالثة:
A < B
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: هل نحتاج متغيرًا ثالثًا؟
لا.
لماذا؟
لأننا نستطيع حل المشكلة باستخدام:
A
B
فقط.
نحن لا نحتاج إلى تخزين نتيجة إضافية.
يمكننا مباشرةً مقارنة A و B.
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: هل نحتاج متغيرًا اسمه أكبر؟
ليس ضروريًا.
يمكن أن نصمم الحل بدون:
max
لأننا لا نحتاج إلى تخزين الأكبر.
عندما نعرف أن A أكبر:
Print A
وعندما نعرف أن B أكبر:
Print B
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: لماذا لم نكتب A < B في القرار الثاني؟
يمكننا فعل ذلك.
مثلاً بعد:
A == B
إذا كانت No، يمكن أن نسأل:
A > B
وهذا ما في الصورة.
أو يمكن أن نسأل:
A < B
والحل سيظل صحيحًا.
لكن اختيار:
A > B
مريح لأننا إذا كانت الإجابة Yes نطبع A، وإذا كانت No نطبع B.
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: هل يمكن أن تكون A أكبر من B و B أكبر من A في نفس الوقت؟
لا.
مثلاً:
A = 10
B = 5
صحيح:
A > B
لكن:
B > A
خطأ.
وهذا منطق المقارنة بين الأعداد.
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: ماذا لو أدخل المستخدم أعدادًا سالبة؟
المخطط يستطيع التعامل معها.
مثلاً:
A = -5
B = -10
نختبر:
-5 == -10
No
ثم:
-5 > -10
Yes
إذن:
Print A
والنتيجة:
-5
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: ماذا لو أدخل المستخدم صفرًا؟
أيضًا لا توجد مشكلة.
مثلاً:
A = 0
B = 5
نختبر:
0 == 5
No
ثم:
0 > 5
No
إذن:
Print B
━━━━━━━━━━━━━━━━━━━━
الآن نفهم المخطط كاملًا
يمكن قراءته كقصة بسيطة:
Start
ابدأ البرنامج.
↓
Enter A,B
أدخل العددين A و B.
↓
A == B ؟
هل العددان متساويان؟
↓
إذا Yes:
Print Equal
اطبع أن العددين متساويان.
↓
إذا No:
انتقل إلى السؤال الثاني.
↓
A > B ؟
هل A أكبر من B؟
↓
إذا Yes:
Print A
اطبع A.
↓
إذا No:
معنى ذلك أن B أكبر.
↓
Print B
اطبع B.
↓
End
انتهى البرنامج.
━━━━━━━━━━━━━━━━━━━━
كيف أفكر في أي سؤال مشابه؟
احفظ هذه الطريقة، لأنها أهم من حفظ المخطط نفسه.
عندما يأتيك أي سؤال، اسأل نفسك بالترتيب:
السؤال الأول:
ما البيانات التي سيعطيها المستخدم؟
هذه هي:
Input
━━━━━━━━━━━━━━━━━━━━
السؤال الثاني:
كم عدد المدخلات؟
عدّ البيانات المطلوبة.
مثلاً:
أدخل الطول والعرض.
إذن:
2 Inputs
━━━━━━━━━━━━━━━━━━━━
السؤال الثالث:
ما الذي سأفعله بهذه البيانات؟
هل سأجمع؟
أطرح؟
أضرب؟
أقسم؟
أقارن؟
أحسب متوسطًا؟
━━━━━━━━━━━━━━━━━━━━
السؤال الرابع:
هل يوجد شرط أو قرار؟
ابحث عن كلمات مثل:
إذا
في حالة
أكبر من
أصغر من
يساوي
إذا كان العدد موجبًا
إذا نجح الطالب
إذا كان العمر أكبر من 18
هذه غالبًا تعني أنك تحتاج إلى Decision.
━━━━━━━━━━━━━━━━━━━━
السؤال الخامس:
ما النتائج الممكنة؟
اسأل:
ماذا يمكن أن يحدث بعد تنفيذ الشرط؟
في مثالنا:
Equal
A أكبر
B أكبر
لدينا ثلاث نتائج.
━━━━━━━━━━━━━━━━━━━━
السؤال السادس:
ما الذي سأطبعه في النهاية؟
السؤال الأول:
20 == 10
No
نذهب للسؤال الثاني:
20 > 10
Yes
إذن:
Print A
والنتيجة:
20
━━━━━━━━━━━━━━━━━━━━
16. ماذا يحدث إذا كانت A > B = No ؟
إذا كان:
A > B
والإجابة:
No
فهذا يعني أن A ليست أكبر من B.
ونحن نعرف مسبقًا من السؤال الأول أن:
A != B
إذن لا يمكن أن يكونا متساويين.
فما الاحتمال المتبقي؟
أن:
A < B
لذلك نذهب إلى:
Print B
أي:
B هو الأكبر.
━━━━━━━━━━━━━━━━━━━━
مثال كامل
لنفترض أن المستخدم أدخل:
A = 8
B = 15
نبدأ.
━━━━━━━━━━━━━━━━━━━━
Start
↓
Enter A,B
↓
القيم:
A = 8
B = 15
↓
السؤال:
A == B
أي:
8 == 15
النتيجة:
No
↓
ننتقل للسؤال الثاني:
A > B
أي:
8 > 15
النتيجة:
No
↓
إذن B هو الأكبر.
فننفذ:
Print B
والنتيجة:
15
━━━━━━━━━━━━━━━━━━━━
مثال آخر
A = 20
B = 7
السؤال الأول:
20 == 7
No
نذهب للسؤال الثاني:
20 > 7
Yes
إذن:
Print A
النتيجة:
20
━━━━━━━━━━━━━━━━━━━━
مثال ثالث: العددان متساويان
A = 12
B = 12
السؤال:
12 == 12
Yes
إذن:
Print Equal
ولا نحتاج إلى السؤال الثاني.
━━━━━━━━━━━━━━━━━━━━
سؤال مهم جدًا: كيف أعرف عدد القرارات؟
لا توجد قاعدة تقول:
كل برنامج يحتاج قرارين.
بل تنظر إلى الحالات المحتملة.
هنا لدينا ثلاث حالات:
A = B
A > B
A < B
لذلك احتجنا إلى قرارات تكفي لتمييز هذه الحالات.
القرار الأول:
A == B
إذا كان Yes انتهينا.
إذا كان No نحتاج معرفة من الأكبر.
لذلك القرار الثاني:
A > B
وهكذا غطينا الحالات الثلاث.
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: كيف أعرف ما هي العمليات المطلوبة؟
انظر إلى المطلوب.
المطلوب ليس حساب شيء.
المطلوب:
مقارنة عددين.
إذن العملية الأساسية هي المقارنة.
نستخدم:
==
و:
>
ومن خلالهما نستنتج الحالة الثالثة:
A < B
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: هل نحتاج متغيرًا ثالثًا؟
لا.
لماذا؟
لأننا نستطيع حل المشكلة باستخدام:
A
B
فقط.
نحن لا نحتاج إلى تخزين نتيجة إضافية.
يمكننا مباشرةً مقارنة A و B.
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: هل نحتاج متغيرًا اسمه أكبر؟
ليس ضروريًا.
يمكن أن نصمم الحل بدون:
max
لأننا لا نحتاج إلى تخزين الأكبر.
عندما نعرف أن A أكبر:
Print A
وعندما نعرف أن B أكبر:
Print B
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: لماذا لم نكتب A < B في القرار الثاني؟
يمكننا فعل ذلك.
مثلاً بعد:
A == B
إذا كانت No، يمكن أن نسأل:
A > B
وهذا ما في الصورة.
أو يمكن أن نسأل:
A < B
والحل سيظل صحيحًا.
لكن اختيار:
A > B
مريح لأننا إذا كانت الإجابة Yes نطبع A، وإذا كانت No نطبع B.
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: هل يمكن أن تكون A أكبر من B و B أكبر من A في نفس الوقت؟
لا.
مثلاً:
A = 10
B = 5
صحيح:
A > B
لكن:
B > A
خطأ.
وهذا منطق المقارنة بين الأعداد.
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: ماذا لو أدخل المستخدم أعدادًا سالبة؟
المخطط يستطيع التعامل معها.
مثلاً:
A = -5
B = -10
نختبر:
-5 == -10
No
ثم:
-5 > -10
Yes
إذن:
Print A
والنتيجة:
-5
━━━━━━━━━━━━━━━━━━━━
سؤال مهم: ماذا لو أدخل المستخدم صفرًا؟
أيضًا لا توجد مشكلة.
مثلاً:
A = 0
B = 5
نختبر:
0 == 5
No
ثم:
0 > 5
No
إذن:
Print B
━━━━━━━━━━━━━━━━━━━━
الآن نفهم المخطط كاملًا
يمكن قراءته كقصة بسيطة:
Start
ابدأ البرنامج.
↓
Enter A,B
أدخل العددين A و B.
↓
A == B ؟
هل العددان متساويان؟
↓
إذا Yes:
Print Equal
اطبع أن العددين متساويان.
↓
إذا No:
انتقل إلى السؤال الثاني.
↓
A > B ؟
هل A أكبر من B؟
↓
إذا Yes:
Print A
اطبع A.
↓
إذا No:
معنى ذلك أن B أكبر.
↓
Print B
اطبع B.
↓
End
انتهى البرنامج.
━━━━━━━━━━━━━━━━━━━━
كيف أفكر في أي سؤال مشابه؟
احفظ هذه الطريقة، لأنها أهم من حفظ المخطط نفسه.
عندما يأتيك أي سؤال، اسأل نفسك بالترتيب:
السؤال الأول:
ما البيانات التي سيعطيها المستخدم؟
هذه هي:
Input
━━━━━━━━━━━━━━━━━━━━
السؤال الثاني:
كم عدد المدخلات؟
عدّ البيانات المطلوبة.
مثلاً:
أدخل الطول والعرض.
إذن:
2 Inputs
━━━━━━━━━━━━━━━━━━━━
السؤال الثالث:
ما الذي سأفعله بهذه البيانات؟
هل سأجمع؟
أطرح؟
أضرب؟
أقسم؟
أقارن؟
أحسب متوسطًا؟
━━━━━━━━━━━━━━━━━━━━
السؤال الرابع:
هل يوجد شرط أو قرار؟
ابحث عن كلمات مثل:
إذا
في حالة
أكبر من
أصغر من
يساوي
إذا كان العدد موجبًا
إذا نجح الطالب
إذا كان العمر أكبر من 18
هذه غالبًا تعني أنك تحتاج إلى Decision.
━━━━━━━━━━━━━━━━━━━━
السؤال الخامس:
ما النتائج الممكنة؟
اسأل:
ماذا يمكن أن يحدث بعد تنفيذ الشرط؟
في مثالنا:
Equal
A أكبر
B أكبر
لدينا ثلاث نتائج.
━━━━━━━━━━━━━━━━━━━━
السؤال السادس:
ما الذي سأطبعه في النهاية؟
هذا هو:
Output
في مثالنا:
Equal
A
B
━━━━━━━━━━━━━━━━━━━━
أهم شيء يجب أن تتعلمه من هذا المثال
لا تحفظ المخطط هكذا:
Start
↓
Enter A,B
↓
A==B
↓
A>B
بل تعلم طريقة التفكير:
المطلوب → المدخلات → العمليات → الشروط → الحالات → المخرجات
وهذه الطريقة ستساعدك في بناء مخططات انسيابية جديدة بنفسك، حتى لو تغير السؤال بالكامل.
━━━━━━━━━━━━━━━━━━━━
ملخص سريع جدًا
Input:
A , B
عدد المدخلات:
2
القرار الأول:
A == B
إذا Yes:
Print Equal
إذا No:
ننتقل للقرار الثاني.
القرار الثاني:
A > B
إذا Yes:
Print A
إذا No:
Print B
النهاية:
End
━━━━━━━━━━━━━━━━━━━━
قاعدة ذهبية للمبتدئ:
قبل أن ترسم أي Flowchart، لا تسأل نفسك "أي شكل أستخدم؟" أولًا.
اسأل نفسك:
ما المدخلات؟
كم عددها؟
ما المتغيرات التي أحتاجها؟
ما المطلوب حسابه أو فحصه؟
هل يوجد شرط؟
كم حالة يمكن أن تحدث؟
ما المخرجات المطلوبة؟
ثم بعد ذلك حوّل الإجابات إلى أشكال المخطط الانسيابي.
#خوارزميات_من_الصفر
Output
في مثالنا:
Equal
A
B
━━━━━━━━━━━━━━━━━━━━
أهم شيء يجب أن تتعلمه من هذا المثال
لا تحفظ المخطط هكذا:
Start
↓
Enter A,B
↓
A==B
↓
A>B
بل تعلم طريقة التفكير:
المطلوب → المدخلات → العمليات → الشروط → الحالات → المخرجات
وهذه الطريقة ستساعدك في بناء مخططات انسيابية جديدة بنفسك، حتى لو تغير السؤال بالكامل.
━━━━━━━━━━━━━━━━━━━━
ملخص سريع جدًا
Input:
A , B
عدد المدخلات:
2
القرار الأول:
A == B
إذا Yes:
Print Equal
إذا No:
ننتقل للقرار الثاني.
القرار الثاني:
A > B
إذا Yes:
Print A
إذا No:
Print B
النهاية:
End
━━━━━━━━━━━━━━━━━━━━
قاعدة ذهبية للمبتدئ:
قبل أن ترسم أي Flowchart، لا تسأل نفسك "أي شكل أستخدم؟" أولًا.
اسأل نفسك:
ما المدخلات؟
كم عددها؟
ما المتغيرات التي أحتاجها؟
ما المطلوب حسابه أو فحصه؟
هل يوجد شرط؟
كم حالة يمكن أن تحدث؟
ما المخرجات المطلوبة؟
ثم بعد ذلك حوّل الإجابات إلى أشكال المخطط الانسيابي.
#خوارزميات_من_الصفر
هذه الفيديوهات لازم تشاهدوها لانها مهمه مهمه جداً. ارجوا من الجميع مشاهده جميع هذه الفيديوهات كامله . هذه الفيديوهات تعرفك بتخصص هندسه البرمجيات
https://youtube.com/playlist?list=PLePWW30iFqTDqvRJOYEZvaj4NZE5rf65x&si=lza8VnxRHoPLZFE8
..............
https://youtube.com/playlist?list=PLOEkz33t1rDnvnX0x57CjTN0VWWmqq3qu&si=jGwoDATOFP71bjKb
..............
https://youtube.com/playlist?list=PL08ef9eJxtJZvt5BOsT46vN6kWnflVKH4&si=OGiO6mTjcyXDc5Jf
https://youtube.com/playlist?list=PLePWW30iFqTDqvRJOYEZvaj4NZE5rf65x&si=lza8VnxRHoPLZFE8
..............
https://youtube.com/playlist?list=PLOEkz33t1rDnvnX0x57CjTN0VWWmqq3qu&si=jGwoDATOFP71bjKb
..............
https://youtube.com/playlist?list=PL08ef9eJxtJZvt5BOsT46vN6kWnflVKH4&si=OGiO6mTjcyXDc5Jf
كيف هو الشرح ؟
Anonymous Poll
17%
افضل شرح
67%
ممتاز
0%
شرح ممتاز ولكن ممل
0%
جيد . هناك اشياء غير مفهومه
0%
مقبول
17%
سيئ
1. Start
نبدأ تنفيذ الخوارزمية.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2. Read X
ندخل قيمة واحدة من المستخدم وهي:
X
مثال:
X = 5
كيف عرفت أن X هو المدخل؟
لأن المخطط يطلب من المستخدم قراءة وإدخال X، إذن X هو Input.
عدد المدخلات هنا = 1.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3. حساب C
نحسب قيمة C باستخدام:
C = X × (X - 2)
مثلاً إذا:
X = 5
فإن:
C = 5 × (5 - 2)
C = 5 × 3
C = 15
إذن أصبحت لدينا قيمة جديدة وهي C.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4. الشرط C == 0
الآن نسأل:
هل C تساوي 0؟
هنا يوجد احتمالان:
Yes: إذا كانت C = 0.
No: إذا كانت C ≠ 0.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5. إذا كانت الإجابة Yes
إذا كانت:
C = 0
فلا نستطيع حساب:
Y = (X + 3) / C
لأن ذلك يعني القسمة على صفر.
لذلك نذهب مباشرة إلى:
Print No solution
أي نطبع:
No solution
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6. إذا كانت الإجابة No
إذا كانت:
C ≠ 0
فيمكننا حساب Y:
Y = (X + 3) / C
ثم نطبع:
Print Y
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
مثال عملي
إذا أدخلنا:
X = 5
نحسب:
C = 5 × (5 - 2)
C = 15
نسأل:
C == 0 ?
الإجابة:
No
لذلك نحسب:
Y = (5 + 3) / 15
Y = 8 / 15
ثم نطبع قيمة Y.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
مثال آخر
إذا أدخلنا:
X = 2
فإن:
C = 2 × (2 - 2)
C = 0
إذن:
C == 0
الإجابة Yes.
لذلك لا نحسب Y، ونطبع:
No solution
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
أسئلة قد تخطر في بالك
لماذا فحصنا C؟
لأن C هو المقام في:
Y = (X + 3) / C
ولذلك يجب التأكد أولًا من أنه ليس صفرًا.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
هل C مدخل؟
لا.
المدخل هو X، أما C فهي قيمة يتم حسابها داخل الخوارزمية.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
هل Y مدخل؟
لا.
Y هي نتيجة يتم حسابها ثم طباعتها.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
كم عدد المدخلات؟
مدخل واحد فقط:
X
كم عدد القيم التي نحسبها؟
لدينا:
C
Y
لكن Y تُحسب فقط عندما تكون C لا تساوي صفرًا.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
الخلاصة
فكرة المخطط ببساطة:
أدخل X → احسب C → افحص C → إذا كانت صفرًا اطبع No solution، وإذا لم تكن صفرًا احسب Y واطبعها.
#خوارزميات_من_الصفر
نبدأ تنفيذ الخوارزمية.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2. Read X
ندخل قيمة واحدة من المستخدم وهي:
X
مثال:
X = 5
كيف عرفت أن X هو المدخل؟
لأن المخطط يطلب من المستخدم قراءة وإدخال X، إذن X هو Input.
عدد المدخلات هنا = 1.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3. حساب C
نحسب قيمة C باستخدام:
C = X × (X - 2)
مثلاً إذا:
X = 5
فإن:
C = 5 × (5 - 2)
C = 5 × 3
C = 15
إذن أصبحت لدينا قيمة جديدة وهي C.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4. الشرط C == 0
الآن نسأل:
هل C تساوي 0؟
هنا يوجد احتمالان:
Yes: إذا كانت C = 0.
No: إذا كانت C ≠ 0.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5. إذا كانت الإجابة Yes
إذا كانت:
C = 0
فلا نستطيع حساب:
Y = (X + 3) / C
لأن ذلك يعني القسمة على صفر.
لذلك نذهب مباشرة إلى:
Print No solution
أي نطبع:
No solution
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6. إذا كانت الإجابة No
إذا كانت:
C ≠ 0
فيمكننا حساب Y:
Y = (X + 3) / C
ثم نطبع:
Print Y
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
مثال عملي
إذا أدخلنا:
X = 5
نحسب:
C = 5 × (5 - 2)
C = 15
نسأل:
C == 0 ?
الإجابة:
No
لذلك نحسب:
Y = (5 + 3) / 15
Y = 8 / 15
ثم نطبع قيمة Y.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
مثال آخر
إذا أدخلنا:
X = 2
فإن:
C = 2 × (2 - 2)
C = 0
إذن:
C == 0
الإجابة Yes.
لذلك لا نحسب Y، ونطبع:
No solution
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
أسئلة قد تخطر في بالك
لماذا فحصنا C؟
لأن C هو المقام في:
Y = (X + 3) / C
ولذلك يجب التأكد أولًا من أنه ليس صفرًا.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
هل C مدخل؟
لا.
المدخل هو X، أما C فهي قيمة يتم حسابها داخل الخوارزمية.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
هل Y مدخل؟
لا.
Y هي نتيجة يتم حسابها ثم طباعتها.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
كم عدد المدخلات؟
مدخل واحد فقط:
X
كم عدد القيم التي نحسبها؟
لدينا:
C
Y
لكن Y تُحسب فقط عندما تكون C لا تساوي صفرًا.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
الخلاصة
فكرة المخطط ببساطة:
أدخل X → احسب C → افحص C → إذا كانت صفرًا اطبع No solution، وإذا لم تكن صفرًا احسب Y واطبعها.
#خوارزميات_من_الصفر