K7H Code
Photo
شرح المثال
لدينا في هذا المخطط المتغيران:
X
و
Y
الفكرة الأساسية هي أن المستخدم يدخل قيمة في X، ثم يتم استخدام هذه القيمة في عملية حسابية للحصول على Y، وبعد ذلك يتم عرض قيمة Y.
━━━━━━━━━━━━━━━━━━━
أولًا: Read X
في المخطط نجد:
Read X
كلمة Read تعني:
اقرأ / أدخل قيمة.
إذن هذه الخطوة تطلب من المستخدم إدخال قيمة للمتغير:
X
بعد هذه الخطوة أصبح لدينا قيمة مخزنة في X، ويمكن استخدامها في العملية الحسابية التالية.
━━━━━━━━━━━━━━━━━━━
سؤال قد يخطر في بالك:
ماذا يعني X هنا؟
X هو المتغير الذي سنضع فيه القيمة التي يدخلها المستخدم.
يعني أن قيمة X ليست ثابتة في المخطط، بل المستخدم هو الذي يحددها عند الإدخال.
━━━━━━━━━━━━━━━━━━━
ثانيًا: حساب Y
بعد إدخال قيمة X نجد في المخطط:
Y = X × X × X × X × X + 5
هذه هي العملية الحسابية الأساسية في المثال.
لاحظ أن X تكررت خمس مرات في عملية الضرب.
أي أننا نضرب قيمة X في نفسها خمس مرات، ثم نضيف إليها 5.
ويمكن فهمها رياضيًا على أنها:
X⁵ + 5
لكن في المخطط تمت كتابة العملية بشكل واضح باستخدام الضرب المتكرر:
X × X × X × X × X + 5
━━━━━━━━━━━━━━━━━━━
سؤال مهم: لماذا كررنا X خمس مرات؟
لأن العملية الموجودة في المثال تريد ضرب X في نفسها خمس مرات.
لذلك كتبنا:
X × X × X × X × X
وهذا يعادل:
X⁵
ثم نضيف:
+ 5
━━━━━━━━━━━━━━━━━━━
سؤال قد يخطر في بالك:
هل X تتغير أثناء العملية؟
لا.
في هذه العملية نستخدم القيمة التي تم إدخالها في X، ونستخدمها لإجراء الحساب.
أما الناتج فيتم تخزينه في متغير آخر وهو:
Y
━━━━━━━━━━━━━━━━━━━
ثالثًا: Print Y
بعد الانتهاء من حساب قيمة Y نجد:
Print Y
كلمة Print تعني:
اعرض / اطبع.
إذن هنا يتم عرض قيمة Y الناتجة عن العملية الحسابية.
بمعنى أن المستخدم في النهاية يرى نتيجة الحساب الموجودة داخل Y.
━━━━━━━━━━━━━━━━━━━
سؤال مهم: لماذا طبعنا Y وليس X؟
لأن المطلوب في هذا المثال هو عرض نتيجة العملية الحسابية.
القيمة التي أدخلناها كانت في:
X
أما النتيجة التي حسبناها فهي في:
Y
لذلك نعرض:
Y
━━━━━━━━━━━━━━━━━━━
سؤال: هل Y موجودة من البداية؟
في المثال، Y هي المتغير الذي نستخدمه لتخزين نتيجة العملية الحسابية.
أي أن:
X → القيمة التي يدخلها المستخدم.
Y → نتيجة العملية الحسابية.
━━━━━━━━━━━━━━━━━━━
كيف نفهم المثال كاملًا؟
يمكن تلخيص ما يحدث في المثال بهذه الطريقة:
━━━━━━━━━━━━━━━━━━━
Read X
أدخل قيمة في X.
↓
Y = X × X × X × X × X + 5
استخدم قيمة X لحساب Y.
↓
Print Y
اعرض قيمة Y.
━━━━━━━━━━━━━━━━━━━
سؤال مهم: هل أحتاج إلى حفظ هذه المسألة؟
لا تحتاج إلى حفظ المسألة نفسها.
المهم أن تفهم طريقة التفكير الموجودة فيها:
لدينا قيمة تدخل إلى X، ثم نستخدم X في عملية حسابية، ثم نخزن النتيجة في Y، ثم نعرض Y.
إذا فهمت هذا التسلسل، تستطيع فهم مسائل مشابهة بسهولة بدلًا من حفظ كل مسألة.
━━━━━━━━━━━━━━━━━━━
الخلاصة
المثال بالكامل يعتمد على ثلاث أفكار فقط:
━━━━━━━━━━━━━━━━━━━
X
يمثل القيمة التي يتم إدخالها.
━━━━━━━━━━━━━━━━━━━
Y = X × X × X × X × X + 5
تحسب النتيجة باستخدام قيمة X.
━━━━━━━━━━━━━━━━━━━
Print Y
تعرض النتيجة الموجودة في Y.
━━━━━━━━━━━━━━━━━━━
إذن الفكرة الأساسية التي يجب أن يفهمها الطالب هي:
ندخل X → نحسب باستخدام X → نخزن النتيجة في Y → نعرض Y.
#خوارزميات_من_الصفر
لدينا في هذا المخطط المتغيران:
X
و
Y
الفكرة الأساسية هي أن المستخدم يدخل قيمة في X، ثم يتم استخدام هذه القيمة في عملية حسابية للحصول على Y، وبعد ذلك يتم عرض قيمة Y.
━━━━━━━━━━━━━━━━━━━
أولًا: Read X
في المخطط نجد:
Read X
كلمة Read تعني:
اقرأ / أدخل قيمة.
إذن هذه الخطوة تطلب من المستخدم إدخال قيمة للمتغير:
X
بعد هذه الخطوة أصبح لدينا قيمة مخزنة في X، ويمكن استخدامها في العملية الحسابية التالية.
━━━━━━━━━━━━━━━━━━━
سؤال قد يخطر في بالك:
ماذا يعني X هنا؟
X هو المتغير الذي سنضع فيه القيمة التي يدخلها المستخدم.
يعني أن قيمة X ليست ثابتة في المخطط، بل المستخدم هو الذي يحددها عند الإدخال.
━━━━━━━━━━━━━━━━━━━
ثانيًا: حساب Y
بعد إدخال قيمة X نجد في المخطط:
Y = X × X × X × X × X + 5
هذه هي العملية الحسابية الأساسية في المثال.
لاحظ أن X تكررت خمس مرات في عملية الضرب.
أي أننا نضرب قيمة X في نفسها خمس مرات، ثم نضيف إليها 5.
ويمكن فهمها رياضيًا على أنها:
X⁵ + 5
لكن في المخطط تمت كتابة العملية بشكل واضح باستخدام الضرب المتكرر:
X × X × X × X × X + 5
━━━━━━━━━━━━━━━━━━━
سؤال مهم: لماذا كررنا X خمس مرات؟
لأن العملية الموجودة في المثال تريد ضرب X في نفسها خمس مرات.
لذلك كتبنا:
X × X × X × X × X
وهذا يعادل:
X⁵
ثم نضيف:
+ 5
━━━━━━━━━━━━━━━━━━━
سؤال قد يخطر في بالك:
هل X تتغير أثناء العملية؟
لا.
في هذه العملية نستخدم القيمة التي تم إدخالها في X، ونستخدمها لإجراء الحساب.
أما الناتج فيتم تخزينه في متغير آخر وهو:
Y
━━━━━━━━━━━━━━━━━━━
ثالثًا: Print Y
بعد الانتهاء من حساب قيمة Y نجد:
Print Y
كلمة Print تعني:
اعرض / اطبع.
إذن هنا يتم عرض قيمة Y الناتجة عن العملية الحسابية.
بمعنى أن المستخدم في النهاية يرى نتيجة الحساب الموجودة داخل Y.
━━━━━━━━━━━━━━━━━━━
سؤال مهم: لماذا طبعنا Y وليس X؟
لأن المطلوب في هذا المثال هو عرض نتيجة العملية الحسابية.
القيمة التي أدخلناها كانت في:
X
أما النتيجة التي حسبناها فهي في:
Y
لذلك نعرض:
Y
━━━━━━━━━━━━━━━━━━━
سؤال: هل Y موجودة من البداية؟
في المثال، Y هي المتغير الذي نستخدمه لتخزين نتيجة العملية الحسابية.
أي أن:
X → القيمة التي يدخلها المستخدم.
Y → نتيجة العملية الحسابية.
━━━━━━━━━━━━━━━━━━━
كيف نفهم المثال كاملًا؟
يمكن تلخيص ما يحدث في المثال بهذه الطريقة:
━━━━━━━━━━━━━━━━━━━
Read X
أدخل قيمة في X.
↓
Y = X × X × X × X × X + 5
استخدم قيمة X لحساب Y.
↓
Print Y
اعرض قيمة Y.
━━━━━━━━━━━━━━━━━━━
سؤال مهم: هل أحتاج إلى حفظ هذه المسألة؟
لا تحتاج إلى حفظ المسألة نفسها.
المهم أن تفهم طريقة التفكير الموجودة فيها:
لدينا قيمة تدخل إلى X، ثم نستخدم X في عملية حسابية، ثم نخزن النتيجة في Y، ثم نعرض Y.
إذا فهمت هذا التسلسل، تستطيع فهم مسائل مشابهة بسهولة بدلًا من حفظ كل مسألة.
━━━━━━━━━━━━━━━━━━━
الخلاصة
المثال بالكامل يعتمد على ثلاث أفكار فقط:
━━━━━━━━━━━━━━━━━━━
X
يمثل القيمة التي يتم إدخالها.
━━━━━━━━━━━━━━━━━━━
Y = X × X × X × X × X + 5
تحسب النتيجة باستخدام قيمة X.
━━━━━━━━━━━━━━━━━━━
Print Y
تعرض النتيجة الموجودة في Y.
━━━━━━━━━━━━━━━━━━━
إذن الفكرة الأساسية التي يجب أن يفهمها الطالب هي:
ندخل X → نحسب باستخدام X → نخزن النتيجة في Y → نعرض Y.
#خوارزميات_من_الصفر
❤1
K7H Code
Photo
شرح الخوارزمية
لدينا في المخطط:
Read A, B
ثم:
Z = A × B
ثم:
Print Z
أي أن البرنامج سيطلب رقمين من المستخدم، ثم يضربهما في بعض، ثم يعرض الناتج.
أولًا: ماذا يريد البرنامج أن يفعل؟
قبل أن نرسم أي مخطط أو نكتب أي كود، نسأل:
ما المطلوب من البرنامج؟
المطلوب هنا:
إدخال رقمين A و B، ثم حساب حاصل ضربهما وتخزين الناتج في Z، ثم طباعة الناتج.
مثال:
إذا أدخل المستخدم:
A = 5
B = 4
فالبرنامج يحسب:
Z = 5 × 4
والنتيجة:
Z = 20
ثم يعرض:
20
السؤال المهم: كيف أعرف المدخلات؟
هذه من أهم المهارات في حل المسائل.
لا تبدأ مباشرة بكتابة Read.
اسأل نفسك:
ما الأشياء التي سيعطيها المستخدم للبرنامج؟
في هذه المسألة مكتوب:
Read A, B
إذن المستخدم سيعطي البرنامج قيمتين:
A و B
لذلك لدينا مدخلان.
كيف أعرف عدد المدخلات؟
ببساطة اسأل:
كم معلومة يحتاجها البرنامج من المستخدم حتى يستطيع تنفيذ المطلوب؟
هنا نريد ضرب رقم في رقم.
نحتاج رقمًا أولًا ورقمًا ثانيًا.
إذن:
عدد المدخلات = 2
وهما:
A و B
هل أختار A و B بنفسي؟
نعم، أسماء المتغيرات يمكن أن تختارها أنت غالبًا، بشرط أن تكون واضحة ومناسبة.
فبدل:
A , B
يمكن أن نسميهما:
Number1 , Number2
وفي هذه المسألة استخدمنا A و B للاختصار.
المهم أن تعرف:
اسم المتغير لا يحدد وظيفته، بل القيمة التي نضعها فيه وطريقة استخدامه هي التي تحدد وظيفته.
السؤال الأهم: كيف أعرف المخرجات؟
بعد أن نعرف المدخلات، نسأل:
ماذا يريد السؤال أن يعرض في النهاية؟
نحن ضربنا:
A × B
والنتيجة خزناها في:
Z
ثم لدينا:
Print Z
إذن المخرج هو:
Z
أي حاصل ضرب الرقمين.
ماذا يعني Z؟
هذه نقطة مهمة جدًا.
Z هو متغير سنستخدمه لتخزين نتيجة العملية.
لاحظ الفرق:
A → مدخل
B → مدخل
Z → نتيجة
مثلاً إذا:
A = 6
B = 3
فإن:
Z = A × B
أي:
Z = 6 × 3
إذن:
Z = 18
لماذا لم نطبع A × B مباشرة؟
سؤال ممتاز.
يمكن في بعض لغات البرمجة أن نحسب ونطبع النتيجة مباشرة.
لكن هنا نريد أن نتعلم فكرة مهمة:
احسب النتيجة أولًا، خزّنها في متغير، ثم استخدم المتغير.
لذلك:
Z = A × B
ثم:
Print Z
وهذا يجعل الخوارزمية واضحة وسهلة القراءة.
ماذا يحدث خطوة بخطوة؟
تخيل أن الكمبيوتر طالب ينفذ تعليماتك حرفيًا.
أنت تقول له:
أولًا: اقرأ A و B
فيأتي المستخدم مثلًا ويكتب:
A = 7
B = 8
ثم تقول له:
احسب Z
فيقوم بـ:
Z = A × B
أي:
Z = 7 × 8
إذن:
Z = 56
ثم تقول له:
اطبع Z
فيعرض:
56
وبذلك انتهت المهمة.
هل يجب أن أحفظ هذه المسألة؟
لا.
وهذه نقطة مهمة جدًا للمبتدئ.
لا تحفظ:
Z = A * B
على أنها مسألة يجب تذكرها.
الأفضل أن تفهم طريقة التفكير.
إذا جاءك سؤال:
احسب حاصل ضرب رقمين.
ستفكر:
ما المدخلات؟
رقمان.
إذن:
A و B
ما العملية؟
الضرب.
إذن:
A × B
أين أخزن النتيجة؟
في متغير مثل:
Z
ماذا أعرض؟
Z
وانتهت المسألة.
هل يجب أن أحفظ القوانين؟
ليس الهدف أن تحفظ عشرات المسائل.
لكن هناك فرق بين الحفظ وفهم القاعدة.
مثلاً:
مساحة المستطيل:
الطول × العرض
إذا فهمت الفكرة، تستطيع استخدامها في أي مسألة.
وكذلك هنا:
حاصل ضرب رقمين = الرقم الأول × الرقم الثاني.
المهم أن تستطيع قراءة السؤال وتحويله إلى خطوات.
كيف أعرف العملية الحسابية المطلوبة؟
هذه مهارة مهمة جدًا.
ابحث في السؤال عن الكلمة التي تخبرك بالعملية.
مثلاً:
الجمع → +
الطرح → -
الضرب → *
القسمة → /
مثال:
أدخل رقمين واحسب مجموعهما.
إذن:
Z = A + B
مثال:
أدخل رقمين واحسب الفرق بينهما.
إذن:
Z = A - B
مثال:
أدخل رقمين واحسب حاصل ضربهما.
إذن:
Z = A * B
مثال:
أدخل رقمين واحسب ناتج قسمتهما.
إذن:
Z = A / B
سؤال قد يخطر في بالك: لماذا نستخدم * بدل ×؟
في الرياضيات نكتب:
A × B
لكن في معظم لغات البرمجة لا نستخدم علامة × للضرب.
نستخدم:
*
لذلك:
Z = A * B
تعني:
Z يساوي A مضروبة في B.
سؤال: هل A و B أرقام أم متغيرات؟
في هذه الخوارزمية:
A و B متغيران.
المتغير هو مكان في ذاكرة الكمبيوتر نستطيع تخزين قيمة بداخله.
مثلاً:
A يمكن أن تحتوي على:
10
ثم يمكن أن تتغير وتصبح:
25
لذلك نسميها متغيرًا.
سؤال: وهل Z متغير أيضًا؟
نعم.
لدينا ثلاثة متغيرات:
A → يخزن الرقم الأول.
B → يخزن الرقم الثاني.
Z → يخزن نتيجة الضرب.
كيف أعرف عدد المتغيرات؟
لا تحفظ عددًا ثابتًا.
فكر في:
ما البيانات التي أحتاج إلى تخزينها؟
هنا نحتاج:
رقم أول → A
رقم ثاني → B
النتيجة → Z
إذن لدينا 3 متغيرات.
لكن ليس دائمًا يجب أن يكون عدد المتغيرات مساويًا لعدد المدخلات.
قد يكون لديك:
3 مدخلات
ومتغير واحد للنتيجة.
أو 5 مدخلات
ومتغيران للنتائج.
حسب المسألة.
هل كل متغير يعتبر مدخلًا؟
لدينا في المخطط:
Read A, B
ثم:
Z = A × B
ثم:
Print Z
أي أن البرنامج سيطلب رقمين من المستخدم، ثم يضربهما في بعض، ثم يعرض الناتج.
أولًا: ماذا يريد البرنامج أن يفعل؟
قبل أن نرسم أي مخطط أو نكتب أي كود، نسأل:
ما المطلوب من البرنامج؟
المطلوب هنا:
إدخال رقمين A و B، ثم حساب حاصل ضربهما وتخزين الناتج في Z، ثم طباعة الناتج.
مثال:
إذا أدخل المستخدم:
A = 5
B = 4
فالبرنامج يحسب:
Z = 5 × 4
والنتيجة:
Z = 20
ثم يعرض:
20
السؤال المهم: كيف أعرف المدخلات؟
هذه من أهم المهارات في حل المسائل.
لا تبدأ مباشرة بكتابة Read.
اسأل نفسك:
ما الأشياء التي سيعطيها المستخدم للبرنامج؟
في هذه المسألة مكتوب:
Read A, B
إذن المستخدم سيعطي البرنامج قيمتين:
A و B
لذلك لدينا مدخلان.
كيف أعرف عدد المدخلات؟
ببساطة اسأل:
كم معلومة يحتاجها البرنامج من المستخدم حتى يستطيع تنفيذ المطلوب؟
هنا نريد ضرب رقم في رقم.
نحتاج رقمًا أولًا ورقمًا ثانيًا.
إذن:
عدد المدخلات = 2
وهما:
A و B
هل أختار A و B بنفسي؟
نعم، أسماء المتغيرات يمكن أن تختارها أنت غالبًا، بشرط أن تكون واضحة ومناسبة.
فبدل:
A , B
يمكن أن نسميهما:
Number1 , Number2
وفي هذه المسألة استخدمنا A و B للاختصار.
المهم أن تعرف:
اسم المتغير لا يحدد وظيفته، بل القيمة التي نضعها فيه وطريقة استخدامه هي التي تحدد وظيفته.
السؤال الأهم: كيف أعرف المخرجات؟
بعد أن نعرف المدخلات، نسأل:
ماذا يريد السؤال أن يعرض في النهاية؟
نحن ضربنا:
A × B
والنتيجة خزناها في:
Z
ثم لدينا:
Print Z
إذن المخرج هو:
Z
أي حاصل ضرب الرقمين.
ماذا يعني Z؟
هذه نقطة مهمة جدًا.
Z هو متغير سنستخدمه لتخزين نتيجة العملية.
لاحظ الفرق:
A → مدخل
B → مدخل
Z → نتيجة
مثلاً إذا:
A = 6
B = 3
فإن:
Z = A × B
أي:
Z = 6 × 3
إذن:
Z = 18
لماذا لم نطبع A × B مباشرة؟
سؤال ممتاز.
يمكن في بعض لغات البرمجة أن نحسب ونطبع النتيجة مباشرة.
لكن هنا نريد أن نتعلم فكرة مهمة:
احسب النتيجة أولًا، خزّنها في متغير، ثم استخدم المتغير.
لذلك:
Z = A × B
ثم:
Print Z
وهذا يجعل الخوارزمية واضحة وسهلة القراءة.
ماذا يحدث خطوة بخطوة؟
تخيل أن الكمبيوتر طالب ينفذ تعليماتك حرفيًا.
أنت تقول له:
أولًا: اقرأ A و B
فيأتي المستخدم مثلًا ويكتب:
A = 7
B = 8
ثم تقول له:
احسب Z
فيقوم بـ:
Z = A × B
أي:
Z = 7 × 8
إذن:
Z = 56
ثم تقول له:
اطبع Z
فيعرض:
56
وبذلك انتهت المهمة.
هل يجب أن أحفظ هذه المسألة؟
لا.
وهذه نقطة مهمة جدًا للمبتدئ.
لا تحفظ:
Z = A * B
على أنها مسألة يجب تذكرها.
الأفضل أن تفهم طريقة التفكير.
إذا جاءك سؤال:
احسب حاصل ضرب رقمين.
ستفكر:
ما المدخلات؟
رقمان.
إذن:
A و B
ما العملية؟
الضرب.
إذن:
A × B
أين أخزن النتيجة؟
في متغير مثل:
Z
ماذا أعرض؟
Z
وانتهت المسألة.
هل يجب أن أحفظ القوانين؟
ليس الهدف أن تحفظ عشرات المسائل.
لكن هناك فرق بين الحفظ وفهم القاعدة.
مثلاً:
مساحة المستطيل:
الطول × العرض
إذا فهمت الفكرة، تستطيع استخدامها في أي مسألة.
وكذلك هنا:
حاصل ضرب رقمين = الرقم الأول × الرقم الثاني.
المهم أن تستطيع قراءة السؤال وتحويله إلى خطوات.
كيف أعرف العملية الحسابية المطلوبة؟
هذه مهارة مهمة جدًا.
ابحث في السؤال عن الكلمة التي تخبرك بالعملية.
مثلاً:
الجمع → +
الطرح → -
الضرب → *
القسمة → /
مثال:
أدخل رقمين واحسب مجموعهما.
إذن:
Z = A + B
مثال:
أدخل رقمين واحسب الفرق بينهما.
إذن:
Z = A - B
مثال:
أدخل رقمين واحسب حاصل ضربهما.
إذن:
Z = A * B
مثال:
أدخل رقمين واحسب ناتج قسمتهما.
إذن:
Z = A / B
سؤال قد يخطر في بالك: لماذا نستخدم * بدل ×؟
في الرياضيات نكتب:
A × B
لكن في معظم لغات البرمجة لا نستخدم علامة × للضرب.
نستخدم:
*
لذلك:
Z = A * B
تعني:
Z يساوي A مضروبة في B.
سؤال: هل A و B أرقام أم متغيرات؟
في هذه الخوارزمية:
A و B متغيران.
المتغير هو مكان في ذاكرة الكمبيوتر نستطيع تخزين قيمة بداخله.
مثلاً:
A يمكن أن تحتوي على:
10
ثم يمكن أن تتغير وتصبح:
25
لذلك نسميها متغيرًا.
سؤال: وهل Z متغير أيضًا؟
نعم.
لدينا ثلاثة متغيرات:
A → يخزن الرقم الأول.
B → يخزن الرقم الثاني.
Z → يخزن نتيجة الضرب.
كيف أعرف عدد المتغيرات؟
لا تحفظ عددًا ثابتًا.
فكر في:
ما البيانات التي أحتاج إلى تخزينها؟
هنا نحتاج:
رقم أول → A
رقم ثاني → B
النتيجة → Z
إذن لدينا 3 متغيرات.
لكن ليس دائمًا يجب أن يكون عدد المتغيرات مساويًا لعدد المدخلات.
قد يكون لديك:
3 مدخلات
ومتغير واحد للنتيجة.
أو 5 مدخلات
ومتغيران للنتائج.
حسب المسألة.
هل كل متغير يعتبر مدخلًا؟
K7H Code
Photo
لا.
وهذه نقطة مهمة جدًا.
في مثالنا:
A و B → مدخلات.
Z → ليس مدخلًا.
لم يعطِ المستخدم Z.
البرنامج هو الذي حسب Z.
إذن:
المدخلات: A ، B
المعالجة: A × B
المخرج: Z
كيف أحلل أي مسألة مشابهة؟
استخدم هذه الأسئلة الأربعة:
1. ماذا سيعطي المستخدم للبرنامج؟
هذه هي المدخلات.
2. ماذا يريد البرنامج أن يفعل بهذه البيانات؟
هذه هي المعالجة.
3. ماذا يريد البرنامج أن يعرض؟
هذه هي المخرجات.
4. ما المتغيرات التي أحتاجها لتخزين هذه البيانات والنتائج؟
وهذه الطريقة ستساعدك في أغلب المسائل البسيطة.
مثال سريع للتأكد من فهمك
السؤال:
اكتب خوارزمية تقرأ رقمين وتحسب مجموعهما وتطبعه.
نسأل:
ما المدخلات؟
رقمان:
A و B
ما العملية؟
الجمع.
أين نخزن النتيجة؟
Z
إذن:
Z = A + B
ماذا نطبع؟
Z
لاحظ أنني لم أحفظ هذه المسألة.
أنا فقط استخدمت طريقة التفكير.
وهذا هو الشيء الذي أريدك أن تتعلمه في الخوارزميات:
لا تحفظ الحل... تعلّم كيف تصل إلى الحل.
الخلاصة
أي مسألة بسيطة حاول تقسيمها إلى:
مدخلات → معالجة → مخرجات
وفي مثالنا:
A و B → مدخلات
A × B → معالجة
Z → النتيجة
Print Z → عرض النتيجة
إذا أتقنت هذه الطريقة، ستبدأ تدريجيًا في النظر إلى أي سؤال برمجي وتسأل نفسك تلقائيًا:
ماذا يدخل؟
ماذا يحدث للبيانات؟
ماذا يخرج؟
وهنا تبدأ فعلًا في التفكير كمبرمج، وليس مجرد رسم مخططات أو حفظ قوانين.
#خوارزميات_من_الصفر
وهذه نقطة مهمة جدًا.
في مثالنا:
A و B → مدخلات.
Z → ليس مدخلًا.
لم يعطِ المستخدم Z.
البرنامج هو الذي حسب Z.
إذن:
المدخلات: A ، B
المعالجة: A × B
المخرج: Z
كيف أحلل أي مسألة مشابهة؟
استخدم هذه الأسئلة الأربعة:
1. ماذا سيعطي المستخدم للبرنامج؟
هذه هي المدخلات.
2. ماذا يريد البرنامج أن يفعل بهذه البيانات؟
هذه هي المعالجة.
3. ماذا يريد البرنامج أن يعرض؟
هذه هي المخرجات.
4. ما المتغيرات التي أحتاجها لتخزين هذه البيانات والنتائج؟
وهذه الطريقة ستساعدك في أغلب المسائل البسيطة.
مثال سريع للتأكد من فهمك
السؤال:
اكتب خوارزمية تقرأ رقمين وتحسب مجموعهما وتطبعه.
نسأل:
ما المدخلات؟
رقمان:
A و B
ما العملية؟
الجمع.
أين نخزن النتيجة؟
Z
إذن:
Z = A + B
ماذا نطبع؟
Z
لاحظ أنني لم أحفظ هذه المسألة.
أنا فقط استخدمت طريقة التفكير.
وهذا هو الشيء الذي أريدك أن تتعلمه في الخوارزميات:
لا تحفظ الحل... تعلّم كيف تصل إلى الحل.
الخلاصة
أي مسألة بسيطة حاول تقسيمها إلى:
مدخلات → معالجة → مخرجات
وفي مثالنا:
A و B → مدخلات
A × B → معالجة
Z → النتيجة
Print Z → عرض النتيجة
إذا أتقنت هذه الطريقة، ستبدأ تدريجيًا في النظر إلى أي سؤال برمجي وتسأل نفسك تلقائيًا:
ماذا يدخل؟
ماذا يحدث للبيانات؟
ماذا يخرج؟
وهنا تبدأ فعلًا في التفكير كمبرمج، وليس مجرد رسم مخططات أو حفظ قوانين.
#خوارزميات_من_الصفر
💯1
الذي عنده امثله يكتبها و يرسلها. مثل الامثله السابقه نفس الفكر . لانه بندخل بدرس جديد و هو الشروط
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
إذا فهمت هذه الطريقة، فأنت لا تتعلم حل هذا السؤال فقط؛ بل تبدأ في تعلم الطريقة التي تستخدمها لتحليل أي مسألة برمجية جديدة.
#خوارزميات_من_الصفر