وأهم شيء هنا ليس حفظ المخطط، وإنما تعلم كيف تستخرج المدخلات والعمليات والشروط والمخرجات من أي سؤال برمجي.
#خوارزميات_من_الصفر
#خوارزميات_من_الصفر
👍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 واطبعها.
#خوارزميات_من_الصفر
K7H Code
نص السؤال اكتب خوارزمية لبرنامج يقوم بايجاد اكبر(قيمه) عدد من بين ثلاث قيم مدخله.باستخدام المخطط الانسيابي
1. فهم السؤال
لدينا ثلاث قيم يدخلها المستخدم:
A ، B ، C
والمطلوب أن نقارن بينها، وفي النهاية نطبع أكبر قيمة.
مثلاً إذا كانت:
A = 10
B = 25
C = 15
فالنتيجة ستكون:
Max = 25
ــــــــــــــــــــــــــــــــــــــــ
2. كيف حددنا المدخلات؟
نسأل أنفسنا:
ما الأشياء التي يعطيها المستخدم للبرنامج؟
السؤال يقول:
"من بين ثلاث قيم مدخله"
إذن المستخدم سيدخل 3 قيم.
لذلك المدخلات هي:
A ، B ، C
ثم نحتاج متغيرًا إضافيًا اسمه Max حتى نحتفظ بأكبر قيمة نصل إليها أثناء المقارنة.
ــــــــــــــــــــــــــــــــــــــــ
3. نبدأ بـ Max = A
في البداية نقول:
Max = A
أي أننا نفترض مؤقتًا أن A هي الأكبر.
لماذا؟
لأننا نحتاج قيمة نبدأ المقارنة بها.
بعد ذلك نقارن Max مع B و C.
ــــــــــــــــــــــــــــــــــــــــ
4. المقارنة الأولى
في المخطط نجد:
Max == B && Max == C
أي:
هل Max تساوي B و Max تساوي C؟
إذا كانت الإجابة Yes فهذا يعني:
A = B = C
أي أن القيم الثلاث متساوية، ولذلك يذهب المخطط إلى:
All equals
ــــــــــــــــــــــــــــــــــــــــ
5. إذا لم تكن القيم الثلاث متساوية
إذا كانت الإجابة No، ننتقل إلى:
Max > B
أي:
هل Max أكبر من B؟
إذا كانت الإجابة No فهذا يعني أن B أكبر من Max، وبالتالي يجب أن تصبح:
Max = B
ثم نكمل المقارنة مع C.
ــــــــــــــــــــــــــــــــــــــــ
6. مقارنة Max مع C
بعد ذلك نجد:
Max > C
إذا كانت Yes فهذا يعني أن Max أكبر من C، وبالتالي تبقى قيمة Max كما هي.
أما إذا كانت No فهذا يعني أن C أكبر من Max، ولذلك نكتب:
Max = C
ثم في النهاية:
Print Max
أي نطبع أكبر قيمة.
ــــــــــــــــــــــــــــــــــــــــ
مثال سريع
لو أدخلنا:
A = 15
B = 20
C = 12
نبدأ:
Max = A = 15
نقارن مع B:
15 > 20 → No
إذن:
Max = B = 20
ثم نقارن مع C:
20 > 12 → Yes
إذن تبقى:
Max = 20
والنتيجة:
Print Max → 20
ــــــــــــــــــــــــــــــــــــــــ
أسئلة مهمة قد تخطر في بالك
كيف أعرف عدد المدخلات؟
من نص السؤال: قال "ثلاث قيم"، إذن لدينا 3 مدخلات.
ــــــــــــــــــــــــــــــــــــــــ
لماذا لدينا Max؟
لأننا نحتاج متغيرًا يحتفظ بأكبر قيمة وجدناها أثناء المقارنة.
ــــــــــــــــــــــــــــــــــــــــ
هل Max مدخل؟
لا.
A وB وC هي المدخلات، أما Max فهو متغير يتم حسابه داخل الخوارزمية.
ــــــــــــــــــــــــــــــــــــــــ
كيف أعرف ماذا أطبع؟
السؤال يطلب إيجاد أكبر قيمة، لذلك في النهاية نطبع Max.
ــــــــــــــــــــــــــــــــــــــــ
ماذا لو كانت القيم الثلاث متساوية؟
يظهر المسار All equals، لأن A وB وC لها نفس القيمة.
ــــــــــــــــــــــــــــــــــــــــ
الخلاصة
طريقة التفكير في هذا السؤال هي:
أدخل 3 قيم → اجعل Max تساوي A → قارنها مع B → قارنها مع C → احتفظ بالأكبر → اطبع Max.
وهذه الفكرة مهمة جدًا؛ لأنك ستستخدمها لاحقًا في مسائل إيجاد الأكبر أو الأصغر بين عدة أرقام.
#خوارزميات_من_الصفر
لدينا ثلاث قيم يدخلها المستخدم:
A ، B ، C
والمطلوب أن نقارن بينها، وفي النهاية نطبع أكبر قيمة.
مثلاً إذا كانت:
A = 10
B = 25
C = 15
فالنتيجة ستكون:
Max = 25
ــــــــــــــــــــــــــــــــــــــــ
2. كيف حددنا المدخلات؟
نسأل أنفسنا:
ما الأشياء التي يعطيها المستخدم للبرنامج؟
السؤال يقول:
"من بين ثلاث قيم مدخله"
إذن المستخدم سيدخل 3 قيم.
لذلك المدخلات هي:
A ، B ، C
ثم نحتاج متغيرًا إضافيًا اسمه Max حتى نحتفظ بأكبر قيمة نصل إليها أثناء المقارنة.
ــــــــــــــــــــــــــــــــــــــــ
3. نبدأ بـ Max = A
في البداية نقول:
Max = A
أي أننا نفترض مؤقتًا أن A هي الأكبر.
لماذا؟
لأننا نحتاج قيمة نبدأ المقارنة بها.
بعد ذلك نقارن Max مع B و C.
ــــــــــــــــــــــــــــــــــــــــ
4. المقارنة الأولى
في المخطط نجد:
Max == B && Max == C
أي:
هل Max تساوي B و Max تساوي C؟
إذا كانت الإجابة Yes فهذا يعني:
A = B = C
أي أن القيم الثلاث متساوية، ولذلك يذهب المخطط إلى:
All equals
ــــــــــــــــــــــــــــــــــــــــ
5. إذا لم تكن القيم الثلاث متساوية
إذا كانت الإجابة No، ننتقل إلى:
Max > B
أي:
هل Max أكبر من B؟
إذا كانت الإجابة No فهذا يعني أن B أكبر من Max، وبالتالي يجب أن تصبح:
Max = B
ثم نكمل المقارنة مع C.
ــــــــــــــــــــــــــــــــــــــــ
6. مقارنة Max مع C
بعد ذلك نجد:
Max > C
إذا كانت Yes فهذا يعني أن Max أكبر من C، وبالتالي تبقى قيمة Max كما هي.
أما إذا كانت No فهذا يعني أن C أكبر من Max، ولذلك نكتب:
Max = C
ثم في النهاية:
Print Max
أي نطبع أكبر قيمة.
ــــــــــــــــــــــــــــــــــــــــ
مثال سريع
لو أدخلنا:
A = 15
B = 20
C = 12
نبدأ:
Max = A = 15
نقارن مع B:
15 > 20 → No
إذن:
Max = B = 20
ثم نقارن مع C:
20 > 12 → Yes
إذن تبقى:
Max = 20
والنتيجة:
Print Max → 20
ــــــــــــــــــــــــــــــــــــــــ
أسئلة مهمة قد تخطر في بالك
كيف أعرف عدد المدخلات؟
من نص السؤال: قال "ثلاث قيم"، إذن لدينا 3 مدخلات.
ــــــــــــــــــــــــــــــــــــــــ
لماذا لدينا Max؟
لأننا نحتاج متغيرًا يحتفظ بأكبر قيمة وجدناها أثناء المقارنة.
ــــــــــــــــــــــــــــــــــــــــ
هل Max مدخل؟
لا.
A وB وC هي المدخلات، أما Max فهو متغير يتم حسابه داخل الخوارزمية.
ــــــــــــــــــــــــــــــــــــــــ
كيف أعرف ماذا أطبع؟
السؤال يطلب إيجاد أكبر قيمة، لذلك في النهاية نطبع Max.
ــــــــــــــــــــــــــــــــــــــــ
ماذا لو كانت القيم الثلاث متساوية؟
يظهر المسار All equals، لأن A وB وC لها نفس القيمة.
ــــــــــــــــــــــــــــــــــــــــ
الخلاصة
طريقة التفكير في هذا السؤال هي:
أدخل 3 قيم → اجعل Max تساوي A → قارنها مع B → قارنها مع C → احتفظ بالأكبر → اطبع Max.
وهذه الفكرة مهمة جدًا؛ لأنك ستستخدمها لاحقًا في مسائل إيجاد الأكبر أو الأصغر بين عدة أرقام.
#خوارزميات_من_الصفر
❤1
👆👆👆
━━━━━━━━━━━━━━━━━━━
مثال: حساب فاتورة الكهرباء
نص السؤال:
اكتب خوارزمية لبرنامج يقوم بحساب فاتورة الكهرباء حسب القواعد التالية:
أول 50 كيلو الكهرباء بـ 1000 ريال.
ما زاد عن 50 كيلو إلى 100 كيلو سعر الكيلو بـ 800 ريال.
ما زاد عن 100 كيلو سعر الكيلو بـ 750 ريال.
━━━━━━━━━━━━━━━━━━━
1. فهم السؤال
المطلوب من البرنامج هو حساب قيمة فاتورة الكهرباء بناءً على عدد الكيلوات التي تم استهلاكها.
بمعنى أن المستخدم سيعطي البرنامج عدد الكيلوات، والبرنامج يحدد سعر الكيلو المناسب حسب كمية الاستهلاك، ثم يحسب قيمة الفاتورة.
لدينا ثلاث حالات:
إذا كان الاستهلاك 50 كيلو أو أقل → السعر 1000 ريال.
إذا كان الاستهلاك أكبر من 50 وحتى 100 → السعر 800 ريال.
إذا كان الاستهلاك أكبر من 100 → السعر 750 ريال.
━━━━━━━━━━━━━━━━━━━
2. تحديد المدخلات والمخرجات
المدخل Input
نسأل أنفسنا:
ما المعلومة التي يحتاج البرنامج إلى معرفتها حتى يستطيع حساب الفاتورة؟
الإجابة:
عدد الكيلوات المستهلكة.
لذلك لدينا متغير واحد:
Kilos
وهو يمثل عدد الكيلوات.
مثلاً:
Kilos = 40
أي أن المستخدم استهلك 40 كيلو.
━━━━━━━━━━━━━━━━━━━
المخرج Output
ماذا يريد البرنامج في النهاية؟
يريد معرفة قيمة الفاتورة.
لذلك نستخدم المتغير:
Cost
وهو يمثل تكلفة الكهرباء.
إذن:
Input:
Kilos
Output:
Cost
━━━━━━━━━━━━━━━━━━━
3. كيف نعرف الشروط؟
ننظر إلى نص السؤال ونبحث عن الأماكن التي تغير فيها السعر.
السؤال أعطانا ثلاث حالات:
الحالة الأولى:
50 كيلو أو أقل.
إذن:
Kilos <= 50
━━━━━━━━━━━━━━━━━━━
الحالة الثانية:
أكبر من 50 وحتى 100.
إذن:
Kilos > 50 && Kilos <= 100
━━━━━━━━━━━━━━━━━━━
الحالة الثالثة:
أكبر من 100.
إذن:
Kilos > 100
━━━━━━━━━━━━━━━━━━━
إذن نحتاج إلى شرطين داخل المخطط حتى نصل إلى الحالات الثلاث.
الشرط الأول:
Kilos <= 50
إذا كانت الإجابة No، نذهب للشرط الثاني:
Kilos > 50 && Kilos <= 100
وإذا كانت الإجابة No أيضًا، فهذا يعني تلقائيًا أن:
Kilos > 100
━━━━━━━━━━━━━━━━━━━
4. شرح الحالات
الحالة الأولى: 50 كيلو أو أقل
الشرط:
Kilos <= 50
إذا تحقق الشرط، فهذا يعني أن كمية الاستهلاك لا تتجاوز 50 كيلو.
وسعر الكيلو في هذه الحالة:
1000 ريال
لذلك:
Cost = Kilos × 1000
مثال:
إذا كان:
Kilos = 40
نحسب:
Cost = 40 × 1000
إذن:
Cost = 40000 ريال
━━━━━━━━━━━━━━━━━━━
الحالة الثانية: أكثر من 50 وحتى 100
الشرط:
Kilos > 50 && Kilos <= 100
إذا تحقق هذا الشرط، فهذا يعني أن عدد الكيلوات أكبر من 50، ولكنه لا يتجاوز 100.
في هذه الحالة سعر كل كيلو هو:
800 ريال
لذلك:
Cost = Kilos × 800
مثال:
إذا كان:
Kilos = 70
فإن:
Cost = 70 × 800
إذن:
Cost = 56000 ريال
لاحظ هنا أننا لا نحسب أول 50 بسعر 1000 ثم الباقي بسعر 800، لأن هذا السؤال يحدد سعر الكيلو كاملًا حسب الفئة التي وصلت إليها كمية الاستهلاك.
━━━━━━━━━━━━━━━━━━━
الحالة الثالثة: أكثر من 100
إذا لم يتحقق الشرط الثاني، فهذا يعني أن:
Kilos > 100
وفي هذه الحالة يصبح سعر كل كيلو:
750 ريال
لذلك:
Cost = Kilos × 750
مثال:
إذا كان:
Kilos = 120
فإن:
Cost = 120 × 750
إذن:
Cost = 90000 ريال
━━━━━━━━━━━━━━━━━━━
5. قراءة المخطط خطوة بخطوة
الآن نقرأ المخطط الموجود في الصورة من الأعلى إلى الأسفل.
نبدأ:
Start
أي بداية تنفيذ الخوارزمية.
↓
ثم:
Enter Kilos
أي ندخل عدد الكيلوات المستهلكة.
↓
بعد ذلك نصل إلى الشرط:
Kilos <= 50
━━━━━━━━━━━━━━━━━━━
إذا كانت الإجابة Yes
هذا يعني:
Kilos <= 50
إذن نستخدم:
Cost = Kilos × 1000
ثم ننتقل إلى:
Print Cost
أي طباعة قيمة الفاتورة.
↓
ثم:
End
━━━━━━━━━━━━━━━━━━━
إذا كانت الإجابة No
هذا يعني أن:
Kilos > 50
لذلك ننتقل إلى الشرط الثاني:
Kilos > 50 && Kilos <= 100
━━━━━━━━━━━━━━━━━━━
إذا كانت الإجابة Yes
هذا يعني أن الكمية أكبر من 50 ولا تتجاوز 100.
إذن:
Cost = Kilos × 800
ثم:
Print Cost
وبعد ذلك:
End
━━━━━━━━━━━━━━━━━━━
إذا كانت الإجابة No
بما أننا عرفنا مسبقًا أن:
Kilos > 50
والشرط الثاني لم يتحقق، فهذا يعني أن:
Kilos > 100
لذلك:
Cost = Kilos × 750
ثم:
Print Cost
وبعدها:
End
━━━━━━━━━━━━━━━━━━━
6. مقارنة المخطط بالسؤال
المخطط الموجود في الصورة يستخدم:
Kilos <= 50
ثم:
Kilos > 50 && Kilos <= 100
ثم:
Kilos × 750
للكمية التي تتجاوز 100.
وهذا يتوافق مع طريقة الحساب التي فهمناها من المخطط:
50 أو أقل → × 1000
أكثر من 50 وحتى 100 → × 800
أكثر من 100 → × 750
━━━━━━━━━━━━━━━━━━━
7. أسئلة المبتدئ
━━━━━━━━━━━━━━━━━━━
مثال: حساب فاتورة الكهرباء
نص السؤال:
اكتب خوارزمية لبرنامج يقوم بحساب فاتورة الكهرباء حسب القواعد التالية:
أول 50 كيلو الكهرباء بـ 1000 ريال.
ما زاد عن 50 كيلو إلى 100 كيلو سعر الكيلو بـ 800 ريال.
ما زاد عن 100 كيلو سعر الكيلو بـ 750 ريال.
━━━━━━━━━━━━━━━━━━━
1. فهم السؤال
المطلوب من البرنامج هو حساب قيمة فاتورة الكهرباء بناءً على عدد الكيلوات التي تم استهلاكها.
بمعنى أن المستخدم سيعطي البرنامج عدد الكيلوات، والبرنامج يحدد سعر الكيلو المناسب حسب كمية الاستهلاك، ثم يحسب قيمة الفاتورة.
لدينا ثلاث حالات:
إذا كان الاستهلاك 50 كيلو أو أقل → السعر 1000 ريال.
إذا كان الاستهلاك أكبر من 50 وحتى 100 → السعر 800 ريال.
إذا كان الاستهلاك أكبر من 100 → السعر 750 ريال.
━━━━━━━━━━━━━━━━━━━
2. تحديد المدخلات والمخرجات
المدخل Input
نسأل أنفسنا:
ما المعلومة التي يحتاج البرنامج إلى معرفتها حتى يستطيع حساب الفاتورة؟
الإجابة:
عدد الكيلوات المستهلكة.
لذلك لدينا متغير واحد:
Kilos
وهو يمثل عدد الكيلوات.
مثلاً:
Kilos = 40
أي أن المستخدم استهلك 40 كيلو.
━━━━━━━━━━━━━━━━━━━
المخرج Output
ماذا يريد البرنامج في النهاية؟
يريد معرفة قيمة الفاتورة.
لذلك نستخدم المتغير:
Cost
وهو يمثل تكلفة الكهرباء.
إذن:
Input:
Kilos
Output:
Cost
━━━━━━━━━━━━━━━━━━━
3. كيف نعرف الشروط؟
ننظر إلى نص السؤال ونبحث عن الأماكن التي تغير فيها السعر.
السؤال أعطانا ثلاث حالات:
الحالة الأولى:
50 كيلو أو أقل.
إذن:
Kilos <= 50
━━━━━━━━━━━━━━━━━━━
الحالة الثانية:
أكبر من 50 وحتى 100.
إذن:
Kilos > 50 && Kilos <= 100
━━━━━━━━━━━━━━━━━━━
الحالة الثالثة:
أكبر من 100.
إذن:
Kilos > 100
━━━━━━━━━━━━━━━━━━━
إذن نحتاج إلى شرطين داخل المخطط حتى نصل إلى الحالات الثلاث.
الشرط الأول:
Kilos <= 50
إذا كانت الإجابة No، نذهب للشرط الثاني:
Kilos > 50 && Kilos <= 100
وإذا كانت الإجابة No أيضًا، فهذا يعني تلقائيًا أن:
Kilos > 100
━━━━━━━━━━━━━━━━━━━
4. شرح الحالات
الحالة الأولى: 50 كيلو أو أقل
الشرط:
Kilos <= 50
إذا تحقق الشرط، فهذا يعني أن كمية الاستهلاك لا تتجاوز 50 كيلو.
وسعر الكيلو في هذه الحالة:
1000 ريال
لذلك:
Cost = Kilos × 1000
مثال:
إذا كان:
Kilos = 40
نحسب:
Cost = 40 × 1000
إذن:
Cost = 40000 ريال
━━━━━━━━━━━━━━━━━━━
الحالة الثانية: أكثر من 50 وحتى 100
الشرط:
Kilos > 50 && Kilos <= 100
إذا تحقق هذا الشرط، فهذا يعني أن عدد الكيلوات أكبر من 50، ولكنه لا يتجاوز 100.
في هذه الحالة سعر كل كيلو هو:
800 ريال
لذلك:
Cost = Kilos × 800
مثال:
إذا كان:
Kilos = 70
فإن:
Cost = 70 × 800
إذن:
Cost = 56000 ريال
لاحظ هنا أننا لا نحسب أول 50 بسعر 1000 ثم الباقي بسعر 800، لأن هذا السؤال يحدد سعر الكيلو كاملًا حسب الفئة التي وصلت إليها كمية الاستهلاك.
━━━━━━━━━━━━━━━━━━━
الحالة الثالثة: أكثر من 100
إذا لم يتحقق الشرط الثاني، فهذا يعني أن:
Kilos > 100
وفي هذه الحالة يصبح سعر كل كيلو:
750 ريال
لذلك:
Cost = Kilos × 750
مثال:
إذا كان:
Kilos = 120
فإن:
Cost = 120 × 750
إذن:
Cost = 90000 ريال
━━━━━━━━━━━━━━━━━━━
5. قراءة المخطط خطوة بخطوة
الآن نقرأ المخطط الموجود في الصورة من الأعلى إلى الأسفل.
نبدأ:
Start
أي بداية تنفيذ الخوارزمية.
↓
ثم:
Enter Kilos
أي ندخل عدد الكيلوات المستهلكة.
↓
بعد ذلك نصل إلى الشرط:
Kilos <= 50
━━━━━━━━━━━━━━━━━━━
إذا كانت الإجابة Yes
هذا يعني:
Kilos <= 50
إذن نستخدم:
Cost = Kilos × 1000
ثم ننتقل إلى:
Print Cost
أي طباعة قيمة الفاتورة.
↓
ثم:
End
━━━━━━━━━━━━━━━━━━━
إذا كانت الإجابة No
هذا يعني أن:
Kilos > 50
لذلك ننتقل إلى الشرط الثاني:
Kilos > 50 && Kilos <= 100
━━━━━━━━━━━━━━━━━━━
إذا كانت الإجابة Yes
هذا يعني أن الكمية أكبر من 50 ولا تتجاوز 100.
إذن:
Cost = Kilos × 800
ثم:
Print Cost
وبعد ذلك:
End
━━━━━━━━━━━━━━━━━━━
إذا كانت الإجابة No
بما أننا عرفنا مسبقًا أن:
Kilos > 50
والشرط الثاني لم يتحقق، فهذا يعني أن:
Kilos > 100
لذلك:
Cost = Kilos × 750
ثم:
Print Cost
وبعدها:
End
━━━━━━━━━━━━━━━━━━━
6. مقارنة المخطط بالسؤال
المخطط الموجود في الصورة يستخدم:
Kilos <= 50
ثم:
Kilos > 50 && Kilos <= 100
ثم:
Kilos × 750
للكمية التي تتجاوز 100.
وهذا يتوافق مع طريقة الحساب التي فهمناها من المخطط:
50 أو أقل → × 1000
أكثر من 50 وحتى 100 → × 800
أكثر من 100 → × 750
━━━━━━━━━━━━━━━━━━━
7. أسئلة المبتدئ
❤1