K7H Code
https://www.tiktok.com/@khalix.dv?_r=1&_t=ZS-98dTqHrSA0S
قناتي على التيك توك تشرح شرح بسيط عن الخوارزميات والبرمجه بشكل عام
تابعوها
تابعوها
❤1
خطوات حل الخوارزميات (Algorithm Solving Steps)
بعد أن تعرفنا في الدرس السابق على معنى الخوارزمية، وأهميتها، وخصائصها، أصبح السؤال الطبيعي هو:
كيف يمكن بناء خوارزمية صحيحة لحل أي مشكلة؟
هذه هي المهارة الحقيقية التي تميز المبرمج المحترف عن المبرمج المبتدئ.
فالمبرمج المحترف لا يبدأ بكتابة الكود مباشرة، بل يبدأ بتحليل المشكلة، ثم يفكر في الحل، ثم يصمم الخوارزمية، وبعد ذلك فقط يحولها إلى كود برمجي.
ولهذا فإن تعلم خطوات حل الخوارزميات أهم بكثير من حفظ الأكواد.
━━━━━━━━━━━━━━━━━━━
لماذا نتبع خطوات محددة؟
تخيل أن شخصًا طلب منك بناء منزل.
هل ستبدأ بوضع الطوب مباشرة؟
بالتأكيد لا.
ستعرف أولًا:
ما مساحة الأرض؟
كم عدد الغرف؟
كم عدد الطوابق؟
ما الميزانية؟
ثم تبدأ بالرسم والتخطيط.
وبعد ذلك تبدأ عملية البناء.
والخوارزميات تعمل بالطريقة نفسها.
فلا يمكن كتابة الحل قبل أن نفهم المشكلة.
━━━━━━━━━━━━━━━━━━━
خطوات حل أي خوارزمية
تمر عملية حل أي خوارزمية بعدة خطوات مرتبة.
إذا التزمت بهذه الخطوات، ستصبح عملية حل المشكلات أسهل بكثير.
━━━━━━━━━━━━━━━━━━━
الخطوة الأولى: فهم المشكلة (Understand the Problem)
هذه أهم خطوة في حل أي خوارزمية.
إذا لم تفهم المشكلة جيدًا، فمن المستحيل أن تكتب حلًا صحيحًا.
في هذه المرحلة لا تفكر في البرمجة.
ولا تفكر في لغة Java أو Python.
كل ما عليك هو أن تفهم المطلوب.
━━━━━━━━━━━━━━━━━━━
اسأل نفسك
ما المطلوب مني؟
ما النتيجة النهائية التي يجب الوصول إليها؟
هل المطلوب حساب قيمة؟
أم البحث عن شيء؟
أم ترتيب بيانات؟
أم مقارنة بين قيم؟
إذا لم تستطع شرح المشكلة بكلماتك، فهذا يعني أنك لم تفهمها بعد.
━━━━━━━━━━━━━━━━━━━
مثال
المطلوب:
احسب متوسط درجات طالب.
قبل التفكير في الحل اسأل نفسك:
ما هو المتوسط؟
إنه مجموع الدرجات مقسومًا على عددها.
إذن أصبحت المشكلة واضحة.
━━━━━━━━━━━━━━━━━━━
الخطوة الثانية: تحديد المدخلات (Identify the Inputs)
بعد فهم المشكلة، اسأل نفسك:
ما البيانات التي سأحتاج إليها؟
هذه البيانات تسمى المدخلات (Inputs).
━━━━━━━━━━━━━━━━━━━
اسأل نفسك
ماذا سأطلب من المستخدم؟
هل سأقرأ رقمًا؟
هل سأقرأ اسمًا؟
هل سأقرأ مجموعة أرقام؟
هل سأقرأ نصًا؟
━━━━━━━━━━━━━━━━━━━
مثال
إذا أردت حساب مساحة مستطيل.
فالمدخلات هي:
الطول.
العرض.
━━━━━━━━━━━━━━━━━━━
الخطوة الثالثة: تحديد المخرجات (Identify the Outputs)
بعد معرفة المدخلات، اسأل نفسك:
ما الذي يجب أن يظهر في النهاية؟
هذه تسمى المخرجات (Outputs).
━━━━━━━━━━━━━━━━━━━
مثال
في برنامج حساب مساحة المستطيل.
المدخلات:
الطول والعرض.
المخرجات:
مساحة المستطيل.
━━━━━━━━━━━━━━━━━━━
الخطوة الرابعة: التفكير في طريقة الحل (Processing)
هذه هي أهم خطوة في الخوارزمية.
هنا تبدأ بالتفكير.
كيف سأحول المدخلات إلى المخرجات؟
ما العمليات المطلوبة؟
━━━━━━━━━━━━━━━━━━━
اسأل نفسك
هل أحتاج إلى عملية جمع؟
هل أحتاج إلى طرح؟
هل أحتاج إلى ضرب؟
هل أحتاج إلى قسمة؟
هل أحتاج إلى مقارنة؟
هل أحتاج إلى تكرار؟
هل أحتاج إلى ترتيب؟
هل أحتاج إلى البحث عن عنصر؟
━━━━━━━━━━━━━━━━━━━
مثال
لحساب مساحة المستطيل.
المعالجة هي:
المساحة = الطول × العرض.
━━━━━━━━━━━━━━━━━━━
الخطوة الخامسة: تقسيم المشكلة إلى خطوات صغيرة
من أكبر أخطاء المبتدئين أنهم يحاولون حل المشكلة كاملة دفعة واحدة.
الطريقة الصحيحة هي تقسيمها إلى أجزاء صغيرة.
كل خطوة تقوم بمهمة واحدة فقط.
━━━━━━━━━━━━━━━━━━━
مثال
المطلوب:
حساب معدل طالب.
بدلًا من التفكير في الحل مرة واحدة.
قسمه إلى خطوات.
1- اقرأ الدرجات.
2- اجمعها.
3- احسب عدد المواد.
4- اقسم المجموع على العدد.
5- اعرض المعدل.
أصبحت المشكلة أسهل بكثير.
━━━━━━━━━━━━━━━━━━━
الخطوة السادسة: كتابة الخوارزمية
بعد أن أصبحت جميع الخطوات واضحة.
ابدأ بكتابتها بالترتيب.
مثال:
ابدأ.
اقرأ الطول.
اقرأ العرض.
احسب المساحة.
اعرض المساحة.
انتهى.
━━━━━━━━━━━━━━━━━━━
الخطوة السابعة: اختبار الخوارزمية (Dry Run)
هذه خطوة يهملها كثير من المبتدئين.
قبل كتابة الكود، جرّب الخوارزمية بنفسك.
استخدم بيانات حقيقية.
وتأكد من أن جميع الخطوات تعطي النتيجة الصحيحة.
━━━━━━━━━━━━━━━━━━━
مثال
إذا كانت الخوارزمية تحسب مساحة المستطيل.
جرب:
الطول = 5
العرض = 4
هل الناتج 20؟
إذا كانت الإجابة نعم.
فالخوارزمية صحيحة.
━━━━━━━━━━━━━━━━━━━
الخطوة الثامنة: تحويل الخوارزمية إلى كود
بعد التأكد من أن الخوارزمية تعمل.
ابدأ بتحويلها إلى لغة البرمجة التي تريدها.
مثل:
Java
Python
بعد أن تعرفنا في الدرس السابق على معنى الخوارزمية، وأهميتها، وخصائصها، أصبح السؤال الطبيعي هو:
كيف يمكن بناء خوارزمية صحيحة لحل أي مشكلة؟
هذه هي المهارة الحقيقية التي تميز المبرمج المحترف عن المبرمج المبتدئ.
فالمبرمج المحترف لا يبدأ بكتابة الكود مباشرة، بل يبدأ بتحليل المشكلة، ثم يفكر في الحل، ثم يصمم الخوارزمية، وبعد ذلك فقط يحولها إلى كود برمجي.
ولهذا فإن تعلم خطوات حل الخوارزميات أهم بكثير من حفظ الأكواد.
━━━━━━━━━━━━━━━━━━━
لماذا نتبع خطوات محددة؟
تخيل أن شخصًا طلب منك بناء منزل.
هل ستبدأ بوضع الطوب مباشرة؟
بالتأكيد لا.
ستعرف أولًا:
ما مساحة الأرض؟
كم عدد الغرف؟
كم عدد الطوابق؟
ما الميزانية؟
ثم تبدأ بالرسم والتخطيط.
وبعد ذلك تبدأ عملية البناء.
والخوارزميات تعمل بالطريقة نفسها.
فلا يمكن كتابة الحل قبل أن نفهم المشكلة.
━━━━━━━━━━━━━━━━━━━
خطوات حل أي خوارزمية
تمر عملية حل أي خوارزمية بعدة خطوات مرتبة.
إذا التزمت بهذه الخطوات، ستصبح عملية حل المشكلات أسهل بكثير.
━━━━━━━━━━━━━━━━━━━
الخطوة الأولى: فهم المشكلة (Understand the Problem)
هذه أهم خطوة في حل أي خوارزمية.
إذا لم تفهم المشكلة جيدًا، فمن المستحيل أن تكتب حلًا صحيحًا.
في هذه المرحلة لا تفكر في البرمجة.
ولا تفكر في لغة Java أو Python.
كل ما عليك هو أن تفهم المطلوب.
━━━━━━━━━━━━━━━━━━━
اسأل نفسك
ما المطلوب مني؟
ما النتيجة النهائية التي يجب الوصول إليها؟
هل المطلوب حساب قيمة؟
أم البحث عن شيء؟
أم ترتيب بيانات؟
أم مقارنة بين قيم؟
إذا لم تستطع شرح المشكلة بكلماتك، فهذا يعني أنك لم تفهمها بعد.
━━━━━━━━━━━━━━━━━━━
مثال
المطلوب:
احسب متوسط درجات طالب.
قبل التفكير في الحل اسأل نفسك:
ما هو المتوسط؟
إنه مجموع الدرجات مقسومًا على عددها.
إذن أصبحت المشكلة واضحة.
━━━━━━━━━━━━━━━━━━━
الخطوة الثانية: تحديد المدخلات (Identify the Inputs)
بعد فهم المشكلة، اسأل نفسك:
ما البيانات التي سأحتاج إليها؟
هذه البيانات تسمى المدخلات (Inputs).
━━━━━━━━━━━━━━━━━━━
اسأل نفسك
ماذا سأطلب من المستخدم؟
هل سأقرأ رقمًا؟
هل سأقرأ اسمًا؟
هل سأقرأ مجموعة أرقام؟
هل سأقرأ نصًا؟
━━━━━━━━━━━━━━━━━━━
مثال
إذا أردت حساب مساحة مستطيل.
فالمدخلات هي:
الطول.
العرض.
━━━━━━━━━━━━━━━━━━━
الخطوة الثالثة: تحديد المخرجات (Identify the Outputs)
بعد معرفة المدخلات، اسأل نفسك:
ما الذي يجب أن يظهر في النهاية؟
هذه تسمى المخرجات (Outputs).
━━━━━━━━━━━━━━━━━━━
مثال
في برنامج حساب مساحة المستطيل.
المدخلات:
الطول والعرض.
المخرجات:
مساحة المستطيل.
━━━━━━━━━━━━━━━━━━━
الخطوة الرابعة: التفكير في طريقة الحل (Processing)
هذه هي أهم خطوة في الخوارزمية.
هنا تبدأ بالتفكير.
كيف سأحول المدخلات إلى المخرجات؟
ما العمليات المطلوبة؟
━━━━━━━━━━━━━━━━━━━
اسأل نفسك
هل أحتاج إلى عملية جمع؟
هل أحتاج إلى طرح؟
هل أحتاج إلى ضرب؟
هل أحتاج إلى قسمة؟
هل أحتاج إلى مقارنة؟
هل أحتاج إلى تكرار؟
هل أحتاج إلى ترتيب؟
هل أحتاج إلى البحث عن عنصر؟
━━━━━━━━━━━━━━━━━━━
مثال
لحساب مساحة المستطيل.
المعالجة هي:
المساحة = الطول × العرض.
━━━━━━━━━━━━━━━━━━━
الخطوة الخامسة: تقسيم المشكلة إلى خطوات صغيرة
من أكبر أخطاء المبتدئين أنهم يحاولون حل المشكلة كاملة دفعة واحدة.
الطريقة الصحيحة هي تقسيمها إلى أجزاء صغيرة.
كل خطوة تقوم بمهمة واحدة فقط.
━━━━━━━━━━━━━━━━━━━
مثال
المطلوب:
حساب معدل طالب.
بدلًا من التفكير في الحل مرة واحدة.
قسمه إلى خطوات.
1- اقرأ الدرجات.
2- اجمعها.
3- احسب عدد المواد.
4- اقسم المجموع على العدد.
5- اعرض المعدل.
أصبحت المشكلة أسهل بكثير.
━━━━━━━━━━━━━━━━━━━
الخطوة السادسة: كتابة الخوارزمية
بعد أن أصبحت جميع الخطوات واضحة.
ابدأ بكتابتها بالترتيب.
مثال:
ابدأ.
اقرأ الطول.
اقرأ العرض.
احسب المساحة.
اعرض المساحة.
انتهى.
━━━━━━━━━━━━━━━━━━━
الخطوة السابعة: اختبار الخوارزمية (Dry Run)
هذه خطوة يهملها كثير من المبتدئين.
قبل كتابة الكود، جرّب الخوارزمية بنفسك.
استخدم بيانات حقيقية.
وتأكد من أن جميع الخطوات تعطي النتيجة الصحيحة.
━━━━━━━━━━━━━━━━━━━
مثال
إذا كانت الخوارزمية تحسب مساحة المستطيل.
جرب:
الطول = 5
العرض = 4
هل الناتج 20؟
إذا كانت الإجابة نعم.
فالخوارزمية صحيحة.
━━━━━━━━━━━━━━━━━━━
الخطوة الثامنة: تحويل الخوارزمية إلى كود
بعد التأكد من أن الخوارزمية تعمل.
ابدأ بتحويلها إلى لغة البرمجة التي تريدها.
مثل:
Java
Python
💯1
C++
C#
أي لغة.
وهنا يصبح الكود مجرد ترجمة للخطوات التي فكرت فيها مسبقًا.
━━━━━━━━━━━━━━━━━━━
الأسئلة التي يجب أن تضعها في عين الاعتبار عند حل أي خوارزمية
قبل أن تبدأ الحل، اسأل نفسك دائمًا هذه الأسئلة:
1- ما المطلوب مني؟
هل المطلوب حساب؟
أم مقارنة؟
أم بحث؟
أم ترتيب؟
━━━━━━━━━━━━━━━━━━━
2- ما هي المدخلات؟
ما البيانات التي سأحتاج إليها؟
━━━━━━━━━━━━━━━━━━━
3- ما هي المخرجات؟
ما النتيجة التي يجب أن تظهر؟
━━━━━━━━━━━━━━━━━━━
4- ما العمليات المطلوبة؟
هل سأستخدم:
جمع؟
طرح؟
ضرب؟
قسمة؟
مقارنة؟
تكرار؟
━━━━━━━━━━━━━━━━━━━
5- هل يوجد شرط؟
هل سأحتاج إلى:
if
else
switch
━━━━━━━━━━━━━━━━━━━
6- هل سأكرر العملية أكثر من مرة؟
إذا كانت الإجابة نعم.
فقد أحتاج إلى:
for
while
do-while
━━━━━━━━━━━━━━━━━━━
7- هل أحتاج إلى تخزين أكثر من قيمة؟
إذا كانت الإجابة نعم.
فقد أحتاج إلى:
Array
List
أو أي هيكل بيانات مناسب.
━━━━━━━━━━━━━━━━━━━
8- هل جميع الحالات مغطاة؟
اسأل نفسك:
ماذا لو كانت القيمة صفرًا؟
ماذا لو كانت سالبة؟
ماذا لو كانت فارغة؟
ماذا لو كانت كبيرة جدًا؟
لا تختبر الحالة العادية فقط، بل فكر أيضًا في الحالات الخاصة والحدية.
━━━━━━━━━━━━━━━━━━━
9- هل يمكن تبسيط الحل؟
أحيانًا تكتب عشر خطوات، بينما يمكن تنفيذ الفكرة نفسها بخمس خطوات فقط.
ابحث دائمًا عن الحل الأبسط والأوضح.
━━━━━━━━━━━━━━━━━━━
10- هل الخوارزمية ستنتهي؟
إذا استخدمت حلقة تكرار، فتأكد من وجود شرط يجعلها تتوقف.
وإلا ستقع في الحلقة اللانهائية (Infinite Loop).
━━━━━━━━━━━━━━━━━━━
مثال عملي
المشكلة:
إيجاد أكبر رقم بين ثلاثة أرقام.
فكر بالإجابة من خلال الأسئلة السابقة:
ما المطلوب؟
إيجاد أكبر قيمة.
ما المدخلات؟
ثلاثة أرقام.
ما المخرجات؟
أكبر رقم.
هل يوجد شرط؟
نعم.
هل يوجد تكرار؟
لا.
ما طريقة الحل؟
قارن الرقم الأول بالثاني والثالث.
إذا كان أكبر منهما فهو الأكبر.
وإلا قارن الرقم الثاني بالثالث.
ثم اعرض أكبر رقم.
لاحظ أن التفكير في الحل سبق كتابة أي كود.
━━━━━━━━━━━━━━━━━━━
أكثر الأخطاء التي يقع فيها المبتدئون
البدء بكتابة الكود قبل فهم المشكلة.
عدم تحديد المدخلات والمخرجات.
محاولة حل المشكلة دفعة واحدة.
تجاهل الحالات الخاصة والحدية.
عدم تجربة الخوارزمية قبل البرمجة.
التركيز على لغة البرمجة بدلًا من طريقة التفكير.
━━━━━━━━━━━━━━━━━━━
قاعدة ذهبية في حل الخوارزميات
كلما واجهت أي مسألة، لا تسأل نفسك:
"كيف سأكتب الكود؟"
بل اسأل:
"كيف سأحل المشكلة لو لم يكن لدي أي لغة برمجة؟"
إذا استطعت كتابة الحل على ورقة باستخدام خطوات واضحة ومنطقية، فقد أنجزت أصعب جزء من العمل. بعد ذلك، تصبح البرمجة مجرد ترجمة لهذه الخطوات إلى أوامر يفهمها الحاسوب.
━━━━━━━━━━━━━━━━━━━
الخلاصة
حل الخوارزميات لا يبدأ من لوحة المفاتيح، بل يبدأ من طريقة التفكير. وكل خوارزمية ناجحة تمر بمراحل واضحة: فهم المشكلة، وتحديد المدخلات والمخرجات، وتصميم خطوات الحل، واختبارها، ثم تحويلها إلى كود.
ويمكن تلخيص الدرس بجملة واحدة:
إذا تعلمت كيف تفكر، ستستطيع كتابة الخوارزمية، وإذا أتقنت الخوارزمية، ستصبح كتابة الكود أسهل بكثير مهما كانت لغة البرمجة التي تستخدمها.
#خوارزميات_من_الصفر
C#
أي لغة.
وهنا يصبح الكود مجرد ترجمة للخطوات التي فكرت فيها مسبقًا.
━━━━━━━━━━━━━━━━━━━
الأسئلة التي يجب أن تضعها في عين الاعتبار عند حل أي خوارزمية
قبل أن تبدأ الحل، اسأل نفسك دائمًا هذه الأسئلة:
1- ما المطلوب مني؟
هل المطلوب حساب؟
أم مقارنة؟
أم بحث؟
أم ترتيب؟
━━━━━━━━━━━━━━━━━━━
2- ما هي المدخلات؟
ما البيانات التي سأحتاج إليها؟
━━━━━━━━━━━━━━━━━━━
3- ما هي المخرجات؟
ما النتيجة التي يجب أن تظهر؟
━━━━━━━━━━━━━━━━━━━
4- ما العمليات المطلوبة؟
هل سأستخدم:
جمع؟
طرح؟
ضرب؟
قسمة؟
مقارنة؟
تكرار؟
━━━━━━━━━━━━━━━━━━━
5- هل يوجد شرط؟
هل سأحتاج إلى:
if
else
switch
━━━━━━━━━━━━━━━━━━━
6- هل سأكرر العملية أكثر من مرة؟
إذا كانت الإجابة نعم.
فقد أحتاج إلى:
for
while
do-while
━━━━━━━━━━━━━━━━━━━
7- هل أحتاج إلى تخزين أكثر من قيمة؟
إذا كانت الإجابة نعم.
فقد أحتاج إلى:
Array
List
أو أي هيكل بيانات مناسب.
━━━━━━━━━━━━━━━━━━━
8- هل جميع الحالات مغطاة؟
اسأل نفسك:
ماذا لو كانت القيمة صفرًا؟
ماذا لو كانت سالبة؟
ماذا لو كانت فارغة؟
ماذا لو كانت كبيرة جدًا؟
لا تختبر الحالة العادية فقط، بل فكر أيضًا في الحالات الخاصة والحدية.
━━━━━━━━━━━━━━━━━━━
9- هل يمكن تبسيط الحل؟
أحيانًا تكتب عشر خطوات، بينما يمكن تنفيذ الفكرة نفسها بخمس خطوات فقط.
ابحث دائمًا عن الحل الأبسط والأوضح.
━━━━━━━━━━━━━━━━━━━
10- هل الخوارزمية ستنتهي؟
إذا استخدمت حلقة تكرار، فتأكد من وجود شرط يجعلها تتوقف.
وإلا ستقع في الحلقة اللانهائية (Infinite Loop).
━━━━━━━━━━━━━━━━━━━
مثال عملي
المشكلة:
إيجاد أكبر رقم بين ثلاثة أرقام.
فكر بالإجابة من خلال الأسئلة السابقة:
ما المطلوب؟
إيجاد أكبر قيمة.
ما المدخلات؟
ثلاثة أرقام.
ما المخرجات؟
أكبر رقم.
هل يوجد شرط؟
نعم.
هل يوجد تكرار؟
لا.
ما طريقة الحل؟
قارن الرقم الأول بالثاني والثالث.
إذا كان أكبر منهما فهو الأكبر.
وإلا قارن الرقم الثاني بالثالث.
ثم اعرض أكبر رقم.
لاحظ أن التفكير في الحل سبق كتابة أي كود.
━━━━━━━━━━━━━━━━━━━
أكثر الأخطاء التي يقع فيها المبتدئون
البدء بكتابة الكود قبل فهم المشكلة.
عدم تحديد المدخلات والمخرجات.
محاولة حل المشكلة دفعة واحدة.
تجاهل الحالات الخاصة والحدية.
عدم تجربة الخوارزمية قبل البرمجة.
التركيز على لغة البرمجة بدلًا من طريقة التفكير.
━━━━━━━━━━━━━━━━━━━
قاعدة ذهبية في حل الخوارزميات
كلما واجهت أي مسألة، لا تسأل نفسك:
"كيف سأكتب الكود؟"
بل اسأل:
"كيف سأحل المشكلة لو لم يكن لدي أي لغة برمجة؟"
إذا استطعت كتابة الحل على ورقة باستخدام خطوات واضحة ومنطقية، فقد أنجزت أصعب جزء من العمل. بعد ذلك، تصبح البرمجة مجرد ترجمة لهذه الخطوات إلى أوامر يفهمها الحاسوب.
━━━━━━━━━━━━━━━━━━━
الخلاصة
حل الخوارزميات لا يبدأ من لوحة المفاتيح، بل يبدأ من طريقة التفكير. وكل خوارزمية ناجحة تمر بمراحل واضحة: فهم المشكلة، وتحديد المدخلات والمخرجات، وتصميم خطوات الحل، واختبارها، ثم تحويلها إلى كود.
ويمكن تلخيص الدرس بجملة واحدة:
إذا تعلمت كيف تفكر، ستستطيع كتابة الخوارزمية، وإذا أتقنت الخوارزمية، ستصبح كتابة الكود أسهل بكثير مهما كانت لغة البرمجة التي تستخدمها.
#خوارزميات_من_الصفر
⚡1❤1
أنواع الخوارزميات (Types of Algorithms)
في الدرس السابق تعلمنا كيف نحل أي مشكلة باستخدام خطوات مرتبة ومنظمة، بدايةً من فهم المشكلة، ثم تحديد المدخلات والمخرجات، ثم التفكير في الحل، وكتابة الخوارزمية، وأخيرًا تحويلها إلى كود برمجي.
لكن قد يخطر في بالك الآن سؤال مهم:
هل جميع الخوارزميات متشابهة؟
الإجابة هي: لا.
ليست كل المشكلات تُحل بالطريقة نفسها، ولذلك توجد أنواع مختلفة من الخوارزميات، وكل نوع صُمم لحل نوع معين من المشكلات.
━━━━━━━━━━━━━━━━━━━
لماذا توجد أنواع مختلفة من الخوارزميات؟
تخيل أنك تريد السفر.
هل ستستخدم وسيلة النقل نفسها في جميع الحالات؟
إذا كانت المسافة قصيرة، فقد تمشي على قدميك.
إذا كانت داخل المدينة، فقد تستخدم سيارة.
أما إذا كنت ستسافر إلى دولة أخرى، فغالبًا ستستخدم الطائرة.
كل وسيلة مناسبة لموقف معين.
الخوارزميات تعمل بالطريقة نفسها.
لا توجد خوارزمية واحدة تصلح لحل جميع المشكلات، بل نختار النوع المناسب حسب طبيعة المشكلة.
━━━━━━━━━━━━━━━━━━━
هل يجب أن أحفظ جميع أنواع الخوارزميات؟
لا.
في هذه المرحلة لا تهتم بالحفظ.
المهم أن تفهم فكرة كل نوع، ولماذا نستخدمه، ومتى يكون مناسبًا.
مع كثرة التدريب ستصبح هذه الأنواع مألوفة بالنسبة لك.
━━━━━━━━━━━━━━━━━━━
أولًا: خوارزميات البحث (Searching Algorithms)
هذا النوع يستخدم عندما تريد العثور على شيء معين داخل مجموعة من البيانات.
بمعنى آخر، عندما يكون لديك عدد كبير من العناصر وتريد الوصول إلى عنصر محدد.
━━━━━━━━━━━━━━━━━━━
مثال من الحياة
تخيل أن لديك مكتبة تحتوي على ألف كتاب.
وأحد أصدقائك طلب منك كتابًا معينًا.
ماذا ستفعل؟
ستبدأ بالبحث حتى تجد الكتاب المطلوب.
هذا بالضبط ما تقوم به خوارزميات البحث.
━━━━━━━━━━━━━━━━━━━
أين تستخدم؟
تستخدم في:
البحث عن طالب في مدرسة.
البحث عن اسم داخل قائمة.
البحث عن منتج في متجر إلكتروني.
البحث عن رقم هاتف.
البحث عن ملف داخل الحاسوب.
━━━━━━━━━━━━━━━━━━━
قد تسأل:
هل يوجد أكثر من طريقة للبحث؟
نعم.
فهناك طرق بسيطة، وهناك طرق أسرع وأكثر كفاءة، وسوف نتعلمها بالتفصيل لاحقًا مثل البحث الخطي والبحث الثنائي.
━━━━━━━━━━━━━━━━━━━
ثانيًا: خوارزميات الترتيب (Sorting Algorithms)
أحيانًا لا تحتاج إلى البحث مباشرة، بل تحتاج أولًا إلى ترتيب البيانات.
وهنا يأتي دور خوارزميات الترتيب.
━━━━━━━━━━━━━━━━━━━
مثال
لديك مجموعة أرقام:
50
10
80
20
5
إذا أردت ترتيبها من الأصغر إلى الأكبر فستصبح:
5
10
20
50
80
━━━━━━━━━━━━━━━━━━━
أين تستخدم؟
تستخدم في:
ترتيب درجات الطلاب.
ترتيب المنتجات حسب السعر.
ترتيب الموظفين حسب الراتب.
ترتيب الأسماء أبجديًا.
━━━━━━━━━━━━━━━━━━━
قد تسأل:
لماذا نرتب البيانات أصلًا؟
لأن البيانات المرتبة تجعل عمليات البحث والتحليل أسرع وأسهل.
━━━━━━━━━━━━━━━━━━━
ثالثًا: خوارزميات المقارنة (Comparison Algorithms)
وظيفتها مقارنة القيم للوصول إلى نتيجة معينة.
━━━━━━━━━━━━━━━━━━━
مثال
إذا كان لديك ثلاثة أرقام، وتريد معرفة أكبر رقم بينها.
أنت هنا لا تبحث ولا ترتب.
بل تقوم بالمقارنة فقط.
━━━━━━━━━━━━━━━━━━━
تستخدم في
إيجاد أكبر قيمة.
إيجاد أصغر قيمة.
مقارنة الدرجات.
مقارنة الأسعار.
مقارنة التواريخ.
━━━━━━━━━━━━━━━━━━━
رابعًا: خوارزميات العد (Counting Algorithms)
بعض المشكلات لا تحتاج إلى بحث أو ترتيب.
بل تحتاج فقط إلى العد.
━━━━━━━━━━━━━━━━━━━
مثال
احسب:
عدد الطلاب.
عدد الكلمات داخل نص.
عدد الأرقام الزوجية.
عدد الحروف.
كل هذه تعتمد على العد.
━━━━━━━━━━━━━━━━━━━
خامسًا: خوارزميات العمليات الحسابية (Arithmetic Algorithms)
هذا النوع يعتمد على إجراء العمليات الرياضية.
━━━━━━━━━━━━━━━━━━━
أمثلة
حساب المتوسط.
حساب المساحة.
حساب المحيط.
حساب الراتب.
حساب النسبة المئوية.
حساب العمر.
━━━━━━━━━━━━━━━━━━━
قد تسأل:
أليست هذه مجرد عمليات رياضية؟
نعم، لكنها عندما تُرتب في خطوات واضحة لحل مشكلة، فإنها تصبح خوارزمية.
━━━━━━━━━━━━━━━━━━━
سادسًا: خوارزميات اتخاذ القرار (Decision Algorithms)
في بعض المشكلات يجب على البرنامج اتخاذ قرار.
مثل:
إذا تحقق شرط معين، نفذ شيئًا.
وإذا لم يتحقق، نفذ شيئًا آخر.
━━━━━━━━━━━━━━━━━━━
مثال
إذا كانت درجة الطالب أكبر من أو تساوي 50
إذن الطالب ناجح.
وإلا
فالطالب راسب.
━━━━━━━━━━━━━━━━━━━
هذا النوع يعتمد على التفكير المنطقي واتخاذ القرار بناءً على شروط محددة.
━━━━━━━━━━━━━━━━━━━
سابعًا: خوارزميات التكرار (Iteration Algorithms)
بعض العمليات يجب تنفيذها أكثر من مرة.
في الدرس السابق تعلمنا كيف نحل أي مشكلة باستخدام خطوات مرتبة ومنظمة، بدايةً من فهم المشكلة، ثم تحديد المدخلات والمخرجات، ثم التفكير في الحل، وكتابة الخوارزمية، وأخيرًا تحويلها إلى كود برمجي.
لكن قد يخطر في بالك الآن سؤال مهم:
هل جميع الخوارزميات متشابهة؟
الإجابة هي: لا.
ليست كل المشكلات تُحل بالطريقة نفسها، ولذلك توجد أنواع مختلفة من الخوارزميات، وكل نوع صُمم لحل نوع معين من المشكلات.
━━━━━━━━━━━━━━━━━━━
لماذا توجد أنواع مختلفة من الخوارزميات؟
تخيل أنك تريد السفر.
هل ستستخدم وسيلة النقل نفسها في جميع الحالات؟
إذا كانت المسافة قصيرة، فقد تمشي على قدميك.
إذا كانت داخل المدينة، فقد تستخدم سيارة.
أما إذا كنت ستسافر إلى دولة أخرى، فغالبًا ستستخدم الطائرة.
كل وسيلة مناسبة لموقف معين.
الخوارزميات تعمل بالطريقة نفسها.
لا توجد خوارزمية واحدة تصلح لحل جميع المشكلات، بل نختار النوع المناسب حسب طبيعة المشكلة.
━━━━━━━━━━━━━━━━━━━
هل يجب أن أحفظ جميع أنواع الخوارزميات؟
لا.
في هذه المرحلة لا تهتم بالحفظ.
المهم أن تفهم فكرة كل نوع، ولماذا نستخدمه، ومتى يكون مناسبًا.
مع كثرة التدريب ستصبح هذه الأنواع مألوفة بالنسبة لك.
━━━━━━━━━━━━━━━━━━━
أولًا: خوارزميات البحث (Searching Algorithms)
هذا النوع يستخدم عندما تريد العثور على شيء معين داخل مجموعة من البيانات.
بمعنى آخر، عندما يكون لديك عدد كبير من العناصر وتريد الوصول إلى عنصر محدد.
━━━━━━━━━━━━━━━━━━━
مثال من الحياة
تخيل أن لديك مكتبة تحتوي على ألف كتاب.
وأحد أصدقائك طلب منك كتابًا معينًا.
ماذا ستفعل؟
ستبدأ بالبحث حتى تجد الكتاب المطلوب.
هذا بالضبط ما تقوم به خوارزميات البحث.
━━━━━━━━━━━━━━━━━━━
أين تستخدم؟
تستخدم في:
البحث عن طالب في مدرسة.
البحث عن اسم داخل قائمة.
البحث عن منتج في متجر إلكتروني.
البحث عن رقم هاتف.
البحث عن ملف داخل الحاسوب.
━━━━━━━━━━━━━━━━━━━
قد تسأل:
هل يوجد أكثر من طريقة للبحث؟
نعم.
فهناك طرق بسيطة، وهناك طرق أسرع وأكثر كفاءة، وسوف نتعلمها بالتفصيل لاحقًا مثل البحث الخطي والبحث الثنائي.
━━━━━━━━━━━━━━━━━━━
ثانيًا: خوارزميات الترتيب (Sorting Algorithms)
أحيانًا لا تحتاج إلى البحث مباشرة، بل تحتاج أولًا إلى ترتيب البيانات.
وهنا يأتي دور خوارزميات الترتيب.
━━━━━━━━━━━━━━━━━━━
مثال
لديك مجموعة أرقام:
50
10
80
20
5
إذا أردت ترتيبها من الأصغر إلى الأكبر فستصبح:
5
10
20
50
80
━━━━━━━━━━━━━━━━━━━
أين تستخدم؟
تستخدم في:
ترتيب درجات الطلاب.
ترتيب المنتجات حسب السعر.
ترتيب الموظفين حسب الراتب.
ترتيب الأسماء أبجديًا.
━━━━━━━━━━━━━━━━━━━
قد تسأل:
لماذا نرتب البيانات أصلًا؟
لأن البيانات المرتبة تجعل عمليات البحث والتحليل أسرع وأسهل.
━━━━━━━━━━━━━━━━━━━
ثالثًا: خوارزميات المقارنة (Comparison Algorithms)
وظيفتها مقارنة القيم للوصول إلى نتيجة معينة.
━━━━━━━━━━━━━━━━━━━
مثال
إذا كان لديك ثلاثة أرقام، وتريد معرفة أكبر رقم بينها.
أنت هنا لا تبحث ولا ترتب.
بل تقوم بالمقارنة فقط.
━━━━━━━━━━━━━━━━━━━
تستخدم في
إيجاد أكبر قيمة.
إيجاد أصغر قيمة.
مقارنة الدرجات.
مقارنة الأسعار.
مقارنة التواريخ.
━━━━━━━━━━━━━━━━━━━
رابعًا: خوارزميات العد (Counting Algorithms)
بعض المشكلات لا تحتاج إلى بحث أو ترتيب.
بل تحتاج فقط إلى العد.
━━━━━━━━━━━━━━━━━━━
مثال
احسب:
عدد الطلاب.
عدد الكلمات داخل نص.
عدد الأرقام الزوجية.
عدد الحروف.
كل هذه تعتمد على العد.
━━━━━━━━━━━━━━━━━━━
خامسًا: خوارزميات العمليات الحسابية (Arithmetic Algorithms)
هذا النوع يعتمد على إجراء العمليات الرياضية.
━━━━━━━━━━━━━━━━━━━
أمثلة
حساب المتوسط.
حساب المساحة.
حساب المحيط.
حساب الراتب.
حساب النسبة المئوية.
حساب العمر.
━━━━━━━━━━━━━━━━━━━
قد تسأل:
أليست هذه مجرد عمليات رياضية؟
نعم، لكنها عندما تُرتب في خطوات واضحة لحل مشكلة، فإنها تصبح خوارزمية.
━━━━━━━━━━━━━━━━━━━
سادسًا: خوارزميات اتخاذ القرار (Decision Algorithms)
في بعض المشكلات يجب على البرنامج اتخاذ قرار.
مثل:
إذا تحقق شرط معين، نفذ شيئًا.
وإذا لم يتحقق، نفذ شيئًا آخر.
━━━━━━━━━━━━━━━━━━━
مثال
إذا كانت درجة الطالب أكبر من أو تساوي 50
إذن الطالب ناجح.
وإلا
فالطالب راسب.
━━━━━━━━━━━━━━━━━━━
هذا النوع يعتمد على التفكير المنطقي واتخاذ القرار بناءً على شروط محددة.
━━━━━━━━━━━━━━━━━━━
سابعًا: خوارزميات التكرار (Iteration Algorithms)
بعض العمليات يجب تنفيذها أكثر من مرة.
❤1👍1
بدلًا من كتابة الخطوة نفسها عشر مرات، نستخدم التكرار.
━━━━━━━━━━━━━━━━━━━
مثال
طباعة الأرقام من 1 إلى 100.
لن تكتب 100 أمر طباعة.
بل تستخدم التكرار لتنفيذ العملية تلقائيًا.
━━━━━━━━━━━━━━━━━━━
أين تستخدم؟
طباعة الأرقام.
حساب المجموع.
المرور على عناصر المصفوفات.
قراءة بيانات عدد كبير من المستخدمين.
━━━━━━━━━━━━━━━━━━━
ثامنًا: خوارزميات المعالجة (Processing Algorithms)
وظيفتها استقبال البيانات ثم معالجتها وإنتاج نتائج جديدة.
━━━━━━━━━━━━━━━━━━━
مثال
في نظام الرواتب:
قراءة عدد ساعات العمل.
قراءة أجر الساعة.
حساب الراتب.
عرض النتيجة.
كل هذه الخطوات تمثل عملية معالجة للبيانات.
━━━━━━━━━━━━━━━━━━━
هل يمكن أن تحتوي الخوارزمية على أكثر من نوع؟
نعم، وهذا يحدث كثيرًا.
في الواقع، معظم البرامج الحقيقية تجمع بين عدة أنواع من الخوارزميات.
━━━━━━━━━━━━━━━━━━━
مثال
لنفترض أنك تريد إنشاء نظام لإدارة الطلاب.
قد يقوم البرنامج بما يلي:
يبحث عن طالب.
يرتب درجات الطلاب.
يحسب المعدلات.
يقارن الدرجات.
يحدد الناجح والراسب.
يعد عدد الطلاب.
هنا استخدمنا أكثر من نوع من الخوارزميات داخل برنامج واحد.
━━━━━━━━━━━━━━━━━━━
أكثر سؤال يسأله المبتدئون
هل يجب أن أعرف أسماء جميع الخوارزميات الآن؟
لا.
في البداية ركز على فهم الفكرة فقط.
ومع تقدمك في البرمجة ستتعلم خوارزميات أكثر تعقيدًا مثل:
البحث الخطي (Linear Search).
البحث الثنائي (Binary Search).
الترتيب بالفقاعات (Bubble Sort).
الترتيب بالإدراج (Insertion Sort).
الترتيب السريع (Quick Sort).
وسوف ندرس كل واحدة منها بالتفصيل عندما يصبح لديك الأساس المناسب.
━━━━━━━━━━━━━━━━━━━
الخلاصة
ليست كل المشكلات البرمجية متشابهة، لذلك توجد أنواع مختلفة من الخوارزميات، وكل نوع مناسب لنوع معين من المشكلات.
ومن أشهر الأنواع التي يجب أن يعرفها كل مبتدئ:
خوارزميات البحث.
خوارزميات الترتيب.
خوارزميات المقارنة.
خوارزميات العد.
خوارزميات العمليات الحسابية.
خوارزميات اتخاذ القرار.
خوارزميات التكرار.
خوارزميات المعالجة.
وفي الدروس القادمة سنبدأ بدراسة هذه الأنواع بالتفصيل، وسنتعلم كيف تعمل كل خوارزمية، وما مميزاتها، ومتى نستخدمها، وكيف نحولها إلى مخططات انسيابية ثم إلى برامج حقيقية.
#بخوارزميات_من_الصفر
━━━━━━━━━━━━━━━━━━━
مثال
طباعة الأرقام من 1 إلى 100.
لن تكتب 100 أمر طباعة.
بل تستخدم التكرار لتنفيذ العملية تلقائيًا.
━━━━━━━━━━━━━━━━━━━
أين تستخدم؟
طباعة الأرقام.
حساب المجموع.
المرور على عناصر المصفوفات.
قراءة بيانات عدد كبير من المستخدمين.
━━━━━━━━━━━━━━━━━━━
ثامنًا: خوارزميات المعالجة (Processing Algorithms)
وظيفتها استقبال البيانات ثم معالجتها وإنتاج نتائج جديدة.
━━━━━━━━━━━━━━━━━━━
مثال
في نظام الرواتب:
قراءة عدد ساعات العمل.
قراءة أجر الساعة.
حساب الراتب.
عرض النتيجة.
كل هذه الخطوات تمثل عملية معالجة للبيانات.
━━━━━━━━━━━━━━━━━━━
هل يمكن أن تحتوي الخوارزمية على أكثر من نوع؟
نعم، وهذا يحدث كثيرًا.
في الواقع، معظم البرامج الحقيقية تجمع بين عدة أنواع من الخوارزميات.
━━━━━━━━━━━━━━━━━━━
مثال
لنفترض أنك تريد إنشاء نظام لإدارة الطلاب.
قد يقوم البرنامج بما يلي:
يبحث عن طالب.
يرتب درجات الطلاب.
يحسب المعدلات.
يقارن الدرجات.
يحدد الناجح والراسب.
يعد عدد الطلاب.
هنا استخدمنا أكثر من نوع من الخوارزميات داخل برنامج واحد.
━━━━━━━━━━━━━━━━━━━
أكثر سؤال يسأله المبتدئون
هل يجب أن أعرف أسماء جميع الخوارزميات الآن؟
لا.
في البداية ركز على فهم الفكرة فقط.
ومع تقدمك في البرمجة ستتعلم خوارزميات أكثر تعقيدًا مثل:
البحث الخطي (Linear Search).
البحث الثنائي (Binary Search).
الترتيب بالفقاعات (Bubble Sort).
الترتيب بالإدراج (Insertion Sort).
الترتيب السريع (Quick Sort).
وسوف ندرس كل واحدة منها بالتفصيل عندما يصبح لديك الأساس المناسب.
━━━━━━━━━━━━━━━━━━━
الخلاصة
ليست كل المشكلات البرمجية متشابهة، لذلك توجد أنواع مختلفة من الخوارزميات، وكل نوع مناسب لنوع معين من المشكلات.
ومن أشهر الأنواع التي يجب أن يعرفها كل مبتدئ:
خوارزميات البحث.
خوارزميات الترتيب.
خوارزميات المقارنة.
خوارزميات العد.
خوارزميات العمليات الحسابية.
خوارزميات اتخاذ القرار.
خوارزميات التكرار.
خوارزميات المعالجة.
وفي الدروس القادمة سنبدأ بدراسة هذه الأنواع بالتفصيل، وسنتعلم كيف تعمل كل خوارزمية، وما مميزاتها، ومتى نستخدمها، وكيف نحولها إلى مخططات انسيابية ثم إلى برامج حقيقية.
#بخوارزميات_من_الصفر
❤1👍1
طرق تمثيل الخوارزميات (Algorithm Representation Methods)
في الدرس السابق تعلمنا أن الخوارزميات ليست نوعًا واحدًا، بل توجد أنواع مختلفة، ويستخدم كل نوع لحل مشكلة معينة.
لكن قد يخطر في بالك الآن سؤال مهم:
إذا انتهيت من التفكير في الخوارزمية، فكيف أكتبها؟ وهل توجد طريقة واحدة فقط لتمثيلها؟
الإجابة هي: لا.
فالخوارزمية يمكن تمثيلها بأكثر من طريقة، وكل طريقة لها استخداماتها ومميزاتها.
قبل أن نحول الخوارزمية إلى كود برمجي، نحتاج إلى تمثيلها بشكل واضح حتى يتمكن أي شخص من فهمها بسهولة، سواء كان مبرمجًا أو طالبًا أو حتى شخصًا لا يعرف البرمجة.
━━━━━━━━━━━━━━━━━━━
ما المقصود بتمثيل الخوارزمية؟
تمثيل الخوارزمية يعني:
كتابة خطوات الحل أو عرضها بطريقة منظمة وواضحة حتى يفهم الجميع كيف سيتم حل المشكلة.
أي أننا لا نغير فكرة الخوارزمية، وإنما نغير فقط طريقة عرضها.
━━━━━━━━━━━━━━━━━━━
لماذا نحتاج إلى تمثيل الخوارزمية؟
قد يقول أحدهم:
إذا كنت أعرف خطوات الحل، فلماذا لا أبدأ بكتابة الكود مباشرة؟
هذا سؤال منطقي.
الإجابة هي أن الكود موجه للحاسوب، أما تمثيل الخوارزمية فهو موجه للإنسان.
فعندما تكتب الخوارزمية أولًا، يصبح من السهل:
مراجعة الحل.
اكتشاف الأخطاء.
تعديل الخطوات.
شرح الفكرة للآخرين.
تحويلها لاحقًا إلى أي لغة برمجة.
ولهذا السبب، في الشركات الكبيرة لا يبدأ الفريق بكتابة الكود مباشرة، بل يناقش طريقة الحل أولًا، ثم يمثلها بطريقة واضحة.
━━━━━━━━━━━━━━━━━━━
ما هي أشهر طرق تمثيل الخوارزميات؟
هناك ثلاث طرق رئيسية يستخدمها معظم المبرمجين والطلاب.
1- الوصف باللغة الطبيعية (Natural Language).
2- شبه الكود (Pseudo Code).
3- مخطط الانسياب (Flowchart).
وهذه هي الطرق التي ستتعلمها في بداية دراسة الخوارزميات.
━━━━━━━━━━━━━━━━━━━
أولًا: التمثيل باللغة الطبيعية (Natural Language)
وهي أبسط طريقة لكتابة الخوارزمية.
في هذه الطريقة نكتب خطوات الحل باستخدام لغة يفهمها الإنسان، مثل اللغة العربية أو الإنجليزية.
━━━━━━━━━━━━━━━━━━━
مثال
المطلوب: حساب مساحة مستطيل.
يمكن كتابة الخوارزمية هكذا:
ابدأ.
أدخل الطول.
أدخل العرض.
احسب المساحة بضرب الطول في العرض.
اعرض المساحة.
انتهى.
━━━━━━━━━━━━━━━━━━━
مميزات هذه الطريقة
سهلة جدًا للمبتدئين.
لا تحتاج إلى معرفة لغة برمجة.
مناسبة لشرح الأفكار.
━━━━━━━━━━━━━━━━━━━
عيوبها
قد تختلف طريقة الكتابة من شخص إلى آخر، وقد تكون بعض الخطوات غير دقيقة أو تحتمل أكثر من تفسير.
━━━━━━━━━━━━━━━━━━━
ثانيًا: شبه الكود (Pseudo Code)
بعد أن يتعلم الطالب أساسيات الخوارزميات، ينتقل إلى طريقة أكثر تنظيمًا تسمى شبه الكود.
━━━━━━━━━━━━━━━━━━━
ما هو شبه الكود؟
شبه الكود هو طريقة لكتابة الخوارزمية باستخدام كلمات تشبه لغات البرمجة، ولكنها ليست لغة برمجة حقيقية.
أي أنك تكتب خطوات الحل بأسلوب قريب من البرمجة، دون الالتزام بقواعد لغة معينة.
━━━━━━━━━━━━━━━━━━━
مثال
المطلوب: حساب مساحة مستطيل.
شبه الكود:
START
READ Length
READ Width
Area = Length × Width
PRINT Area
END
━━━━━━━━━━━━━━━━━━━
قد تسأل:
هل يمكن تشغيل شبه الكود على الحاسوب؟
الإجابة: لا.
لأنه ليس لغة برمجة، وإنما وسيلة لتنظيم التفكير وكتابة الخوارزمية بشكل واضح.
━━━━━━━━━━━━━━━━━━━
مميزات شبه الكود
منظم وواضح.
قريب من لغات البرمجة.
يسهل تحويله إلى كود لاحقًا.
مناسب للمشاريع الكبيرة.
━━━━━━━━━━━━━━━━━━━
ثالثًا: مخطط الانسياب (Flowchart)
وهذه من أشهر الطرق المستخدمة في دراسة الخوارزميات.
━━━━━━━━━━━━━━━━━━━
ما هو مخطط الانسياب؟
مخطط الانسياب هو رسم بياني يستخدم أشكالًا هندسية وأسهمًا لتمثيل خطوات الخوارزمية.
أي أننا بدلًا من كتابة الخطوات بالكلمات فقط، نحولها إلى رسم يوضح تسلسل تنفيذها.
━━━━━━━━━━━━━━━━━━━
لماذا نستخدم مخطط الانسياب؟
لأنه يجعل فهم الخوارزمية أسهل، خاصة إذا كانت تحتوي على شروط أو تكرار.
فبدلًا من قراءة عشرات الأسطر، يمكنك فهم الفكرة من خلال النظر إلى الرسم.
━━━━━━━━━━━━━━━━━━━
مم يتكون مخطط الانسياب؟
يتكون من أشكال هندسية، ولكل شكل معنى محدد.
من أشهرها:
الشكل البيضاوي: بداية أو نهاية الخوارزمية.
متوازي الأضلاع: إدخال البيانات أو إخراج النتائج.
المستطيل: تنفيذ عملية أو معالجة.
المعين: اتخاذ قرار أو اختبار شرط.
الأسهم: توضح اتجاه سير التنفيذ.
وسندرس كل رمز بالتفصيل في الدرس القادم.
━━━━━━━━━━━━━━━━━━━
قد تسأل:
أي طريقة أفضل؟
لا توجد طريقة أفضل في جميع الحالات.
يعتمد الاختيار على الهدف.
في الدرس السابق تعلمنا أن الخوارزميات ليست نوعًا واحدًا، بل توجد أنواع مختلفة، ويستخدم كل نوع لحل مشكلة معينة.
لكن قد يخطر في بالك الآن سؤال مهم:
إذا انتهيت من التفكير في الخوارزمية، فكيف أكتبها؟ وهل توجد طريقة واحدة فقط لتمثيلها؟
الإجابة هي: لا.
فالخوارزمية يمكن تمثيلها بأكثر من طريقة، وكل طريقة لها استخداماتها ومميزاتها.
قبل أن نحول الخوارزمية إلى كود برمجي، نحتاج إلى تمثيلها بشكل واضح حتى يتمكن أي شخص من فهمها بسهولة، سواء كان مبرمجًا أو طالبًا أو حتى شخصًا لا يعرف البرمجة.
━━━━━━━━━━━━━━━━━━━
ما المقصود بتمثيل الخوارزمية؟
تمثيل الخوارزمية يعني:
كتابة خطوات الحل أو عرضها بطريقة منظمة وواضحة حتى يفهم الجميع كيف سيتم حل المشكلة.
أي أننا لا نغير فكرة الخوارزمية، وإنما نغير فقط طريقة عرضها.
━━━━━━━━━━━━━━━━━━━
لماذا نحتاج إلى تمثيل الخوارزمية؟
قد يقول أحدهم:
إذا كنت أعرف خطوات الحل، فلماذا لا أبدأ بكتابة الكود مباشرة؟
هذا سؤال منطقي.
الإجابة هي أن الكود موجه للحاسوب، أما تمثيل الخوارزمية فهو موجه للإنسان.
فعندما تكتب الخوارزمية أولًا، يصبح من السهل:
مراجعة الحل.
اكتشاف الأخطاء.
تعديل الخطوات.
شرح الفكرة للآخرين.
تحويلها لاحقًا إلى أي لغة برمجة.
ولهذا السبب، في الشركات الكبيرة لا يبدأ الفريق بكتابة الكود مباشرة، بل يناقش طريقة الحل أولًا، ثم يمثلها بطريقة واضحة.
━━━━━━━━━━━━━━━━━━━
ما هي أشهر طرق تمثيل الخوارزميات؟
هناك ثلاث طرق رئيسية يستخدمها معظم المبرمجين والطلاب.
1- الوصف باللغة الطبيعية (Natural Language).
2- شبه الكود (Pseudo Code).
3- مخطط الانسياب (Flowchart).
وهذه هي الطرق التي ستتعلمها في بداية دراسة الخوارزميات.
━━━━━━━━━━━━━━━━━━━
أولًا: التمثيل باللغة الطبيعية (Natural Language)
وهي أبسط طريقة لكتابة الخوارزمية.
في هذه الطريقة نكتب خطوات الحل باستخدام لغة يفهمها الإنسان، مثل اللغة العربية أو الإنجليزية.
━━━━━━━━━━━━━━━━━━━
مثال
المطلوب: حساب مساحة مستطيل.
يمكن كتابة الخوارزمية هكذا:
ابدأ.
أدخل الطول.
أدخل العرض.
احسب المساحة بضرب الطول في العرض.
اعرض المساحة.
انتهى.
━━━━━━━━━━━━━━━━━━━
مميزات هذه الطريقة
سهلة جدًا للمبتدئين.
لا تحتاج إلى معرفة لغة برمجة.
مناسبة لشرح الأفكار.
━━━━━━━━━━━━━━━━━━━
عيوبها
قد تختلف طريقة الكتابة من شخص إلى آخر، وقد تكون بعض الخطوات غير دقيقة أو تحتمل أكثر من تفسير.
━━━━━━━━━━━━━━━━━━━
ثانيًا: شبه الكود (Pseudo Code)
بعد أن يتعلم الطالب أساسيات الخوارزميات، ينتقل إلى طريقة أكثر تنظيمًا تسمى شبه الكود.
━━━━━━━━━━━━━━━━━━━
ما هو شبه الكود؟
شبه الكود هو طريقة لكتابة الخوارزمية باستخدام كلمات تشبه لغات البرمجة، ولكنها ليست لغة برمجة حقيقية.
أي أنك تكتب خطوات الحل بأسلوب قريب من البرمجة، دون الالتزام بقواعد لغة معينة.
━━━━━━━━━━━━━━━━━━━
مثال
المطلوب: حساب مساحة مستطيل.
شبه الكود:
START
READ Length
READ Width
Area = Length × Width
PRINT Area
END
━━━━━━━━━━━━━━━━━━━
قد تسأل:
هل يمكن تشغيل شبه الكود على الحاسوب؟
الإجابة: لا.
لأنه ليس لغة برمجة، وإنما وسيلة لتنظيم التفكير وكتابة الخوارزمية بشكل واضح.
━━━━━━━━━━━━━━━━━━━
مميزات شبه الكود
منظم وواضح.
قريب من لغات البرمجة.
يسهل تحويله إلى كود لاحقًا.
مناسب للمشاريع الكبيرة.
━━━━━━━━━━━━━━━━━━━
ثالثًا: مخطط الانسياب (Flowchart)
وهذه من أشهر الطرق المستخدمة في دراسة الخوارزميات.
━━━━━━━━━━━━━━━━━━━
ما هو مخطط الانسياب؟
مخطط الانسياب هو رسم بياني يستخدم أشكالًا هندسية وأسهمًا لتمثيل خطوات الخوارزمية.
أي أننا بدلًا من كتابة الخطوات بالكلمات فقط، نحولها إلى رسم يوضح تسلسل تنفيذها.
━━━━━━━━━━━━━━━━━━━
لماذا نستخدم مخطط الانسياب؟
لأنه يجعل فهم الخوارزمية أسهل، خاصة إذا كانت تحتوي على شروط أو تكرار.
فبدلًا من قراءة عشرات الأسطر، يمكنك فهم الفكرة من خلال النظر إلى الرسم.
━━━━━━━━━━━━━━━━━━━
مم يتكون مخطط الانسياب؟
يتكون من أشكال هندسية، ولكل شكل معنى محدد.
من أشهرها:
الشكل البيضاوي: بداية أو نهاية الخوارزمية.
متوازي الأضلاع: إدخال البيانات أو إخراج النتائج.
المستطيل: تنفيذ عملية أو معالجة.
المعين: اتخاذ قرار أو اختبار شرط.
الأسهم: توضح اتجاه سير التنفيذ.
وسندرس كل رمز بالتفصيل في الدرس القادم.
━━━━━━━━━━━━━━━━━━━
قد تسأل:
أي طريقة أفضل؟
لا توجد طريقة أفضل في جميع الحالات.
يعتمد الاختيار على الهدف.
إذا كنت تريد شرح الفكرة بسرعة، فاستخدم اللغة الطبيعية.
إذا كنت تريد كتابة خطوات منظمة وقريبة من البرمجة، فاستخدم شبه الكود.
إذا كنت تريد توضيح سير الخوارزمية بشكل بصري، فاستخدم مخطط الانسياب.
━━━━━━━━━━━━━━━━━━━
هل تستخدم الشركات جميع هذه الطرق؟
نعم، لكن ليس دائمًا.
في المشاريع الصغيرة قد يكتفي الفريق بكتابة شبه الكود أو مناقشة الفكرة مباشرة.
أما في المشاريع الكبيرة، فقد تُستخدم المخططات ووثائق التصميم لتوضيح طريقة عمل النظام قبل بدء البرمجة.
━━━━━━━━━━━━━━━━━━━
مثال يوضح الفرق بين طرق التمثيل
لنفترض أن المطلوب هو حساب مساحة مستطيل.
اللغة الطبيعية:
ابدأ.
أدخل الطول.
أدخل العرض.
احسب المساحة.
اعرض المساحة.
انتهى.
━━━━━━━━━━━━━━━━━━━
شبه الكود:
START
READ Length
READ Width
Area = Length × Width
PRINT Area
END
━━━━━━━━━━━━━━━━━━━
مخطط الانسياب:
يبدأ بشكل البداية، ثم إدخال الطول والعرض، ثم تنفيذ عملية حساب المساحة، ثم عرض النتيجة، وأخيرًا النهاية.
━━━━━━━━━━━━━━━━━━━
أكثر الأخطاء التي يقع فيها المبتدئون
الاعتقاد أن شبه الكود لغة برمجة.
الخلط بين الخوارزمية ومخطط الانسياب.
رسم مخطط انسيابي قبل فهم خطوات الحل.
كتابة خطوات غير مرتبة أو غير واضحة.
البدء بالكود مباشرة دون تمثيل الخوارزمية.
━━━━━━━━━━━━━━━━━━━
الخلاصة
بعد تصميم الخوارزمية، نحتاج إلى تمثيلها بطريقة واضحة حتى يسهل فهمها ومراجعتها وتحويلها إلى كود.
وأشهر طرق تمثيل الخوارزميات هي:
اللغة الطبيعية (Natural Language): كتابة الخطوات بلغة مفهومة مثل العربية أو الإنجليزية.
شبه الكود (Pseudo Code): كتابة الخطوات بأسلوب يشبه لغات البرمجة دون التقيد بقواعد لغة معينة.
مخطط الانسياب (Flowchart): تمثيل الخوارزمية باستخدام أشكال هندسية وأسهم توضح تسلسل التنفيذ.
وفي الدرس القادم سنبدأ بدراسة مخطط الانسياب (Flowchart) بالتفصيل، وسنتعرف على جميع الرموز المستخدمة فيه، ومعنى كل رمز، وكيفية رسم مخطط انسيابي صحيح لأي خوارزمية.
#خوارزميات_من_الصفر
إذا كنت تريد كتابة خطوات منظمة وقريبة من البرمجة، فاستخدم شبه الكود.
إذا كنت تريد توضيح سير الخوارزمية بشكل بصري، فاستخدم مخطط الانسياب.
━━━━━━━━━━━━━━━━━━━
هل تستخدم الشركات جميع هذه الطرق؟
نعم، لكن ليس دائمًا.
في المشاريع الصغيرة قد يكتفي الفريق بكتابة شبه الكود أو مناقشة الفكرة مباشرة.
أما في المشاريع الكبيرة، فقد تُستخدم المخططات ووثائق التصميم لتوضيح طريقة عمل النظام قبل بدء البرمجة.
━━━━━━━━━━━━━━━━━━━
مثال يوضح الفرق بين طرق التمثيل
لنفترض أن المطلوب هو حساب مساحة مستطيل.
اللغة الطبيعية:
ابدأ.
أدخل الطول.
أدخل العرض.
احسب المساحة.
اعرض المساحة.
انتهى.
━━━━━━━━━━━━━━━━━━━
شبه الكود:
START
READ Length
READ Width
Area = Length × Width
PRINT Area
END
━━━━━━━━━━━━━━━━━━━
مخطط الانسياب:
يبدأ بشكل البداية، ثم إدخال الطول والعرض، ثم تنفيذ عملية حساب المساحة، ثم عرض النتيجة، وأخيرًا النهاية.
━━━━━━━━━━━━━━━━━━━
أكثر الأخطاء التي يقع فيها المبتدئون
الاعتقاد أن شبه الكود لغة برمجة.
الخلط بين الخوارزمية ومخطط الانسياب.
رسم مخطط انسيابي قبل فهم خطوات الحل.
كتابة خطوات غير مرتبة أو غير واضحة.
البدء بالكود مباشرة دون تمثيل الخوارزمية.
━━━━━━━━━━━━━━━━━━━
الخلاصة
بعد تصميم الخوارزمية، نحتاج إلى تمثيلها بطريقة واضحة حتى يسهل فهمها ومراجعتها وتحويلها إلى كود.
وأشهر طرق تمثيل الخوارزميات هي:
اللغة الطبيعية (Natural Language): كتابة الخطوات بلغة مفهومة مثل العربية أو الإنجليزية.
شبه الكود (Pseudo Code): كتابة الخطوات بأسلوب يشبه لغات البرمجة دون التقيد بقواعد لغة معينة.
مخطط الانسياب (Flowchart): تمثيل الخوارزمية باستخدام أشكال هندسية وأسهم توضح تسلسل التنفيذ.
وفي الدرس القادم سنبدأ بدراسة مخطط الانسياب (Flowchart) بالتفصيل، وسنتعرف على جميع الرموز المستخدمة فيه، ومعنى كل رمز، وكيفية رسم مخطط انسيابي صحيح لأي خوارزمية.
#خوارزميات_من_الصفر
أشكال المخطط الانسيابي (Flowchart Symbols)
في الدرس السابق تعرفنا على طرق تمثيل الخوارزميات، وتعلمنا أن هناك ثلاث طرق رئيسية:
1- الكلام المبعثر أو اللغة الطبيعية (Natural Language).
2- الشفرة الوهمية أو الشفرة الزائفة (Pseudo Code).
3- المخطط الانسيابي (Flowchart).
واليوم سنركز على الطريقة الثالثة، وهي:
المخطط الانسيابي (Flowchart).
━━━━━━━━━━━━━━━━━━━
ما هو المخطط الانسيابي؟
المخطط الانسيابي هو طريقة رسومية لتمثيل الخوارزمية.
بدلًا من كتابة خطوات الخوارزمية فقط، نستخدم مجموعة من الأشكال والرموز، وكل شكل له معنى ووظيفة محددة.
ثم نستخدم الأسهم لربط هذه الأشكال مع بعضها، حتى نوضح كيف تنتقل الخوارزمية من خطوة إلى أخرى.
━━━━━━━━━━━━━━━━━━━
لماذا لكل شكل معنى مختلف؟
قد تسأل:
لماذا لا نستخدم شكلًا واحدًا لجميع الخطوات؟
لأن كل خطوة في الخوارزمية لها وظيفة مختلفة.
فمثلًا:
هناك خطوة تعني "ابدأ".
وهناك خطوة تعني "أدخل بيانات".
وهناك خطوة تعني "نفذ عملية".
وهناك خطوة تعني "اتخذ قرارًا".
وهناك خطوة تعني "اعرض النتيجة".
لذلك تم الاتفاق على رموز وأشكال قياسية تساعد أي شخص على فهم المخطط بسهولة.
━━━━━━━━━━━━━━━━━━━
أهم أشكال المخطط الانسيابي
هناك مجموعة من الرموز الأساسية التي يجب على المبتدئ معرفتها، وأهمها:
1- رمز البداية والنهاية (Terminator).
2- رمز الإدخال والإخراج (Input/Output).
3- رمز العملية أو المعالجة (Process).
4- رمز القرار (Decision).
5- رمز الأسهم أو خط التدفق (Flow Line).
6- رمز الموصل (Connector).
7- رمز العملية المعرفة مسبقًا (Predefined Process).
وسنشرح كل واحد بالتفصيل.
━━━━━━━━━━━━━━━━━━━
1- رمز البداية والنهاية (Terminator)
هذا الرمز يستخدم للدلالة على:
بداية الخوارزمية أو نهايتها.
أي أنه يخبرنا:
من أين تبدأ الخوارزمية؟
وأين تنتهي؟
━━━━━━━━━━━━━━━━━━━
متى نستخدمه؟
نستخدمه في بداية المخطط لكتابة:
"Start"
أو:
"ابدأ"
وفي نهاية المخطط نستخدمه لكتابة:
"End"
أو:
"انتهى"
━━━━━━━━━━━━━━━━━━━
مثال
إذا كانت لدينا خوارزمية لحساب مساحة مستطيل، فإنها تبدأ بـ:
ابدأ
ثم تنفذ باقي الخطوات.
وفي النهاية:
انتهى.
━━━━━━━━━━━━━━━━━━━
سؤال مهم
هل يمكن أن يكون للمخطط أكثر من بداية؟
في المخططات البسيطة، الأفضل أن تكون هناك بداية واضحة واحدة ونهاية واضحة واحدة، حتى يكون مسار الخوارزمية سهل الفهم.
━━━━━━━━━━━━━━━━━━━
2- رمز الإدخال والإخراج (Input / Output)
هذا الرمز يستخدم عندما نريد:
إدخال البيانات إلى البرنامج أو إخراج النتائج منه.
أي أنه يستخدم في حالتين:
Input
إدخال البيانات.
Output
إخراج البيانات.
━━━━━━━━━━━━━━━━━━━
أولًا: الإدخال (Input)
الإدخال يعني أن البرنامج يحصل على بيانات.
مثال:
أدخل العمر.
أدخل الرقم الأول.
أدخل الرقم الثاني.
أدخل اسم الطالب.
━━━━━━━━━━━━━━━━━━━
ثانيًا: الإخراج (Output)
الإخراج يعني أن البرنامج يعرض نتيجة للمستخدم.
مثال:
اعرض المجموع.
اعرض المعدل.
اعرض اسم الطالب.
اعرض رسالة "نجاح".
━━━━━━━━━━━━━━━━━━━
سؤال مهم
ما الفرق بين الإدخال والإخراج؟
الإدخال:
البيانات تدخل إلى البرنامج.
الإخراج:
النتيجة تخرج من البرنامج إلى المستخدم.
━━━━━━━━━━━━━━━━━━━
3- رمز العملية أو المعالجة (Process)
هذا الرمز يستخدم لتنفيذ عملية أو تعليمة داخل الخوارزمية.
بمعنى آخر:
عندما نريد أن يقوم البرنامج بشيء معين على البيانات، نستخدم رمز العملية.
━━━━━━━━━━━━━━━━━━━
أمثلة على العمليات
حساب:
المساحة = الطول × العرض
أو:
المجموع = الرقم الأول + الرقم الثاني
أو:
العمر = السنة الحالية - سنة الميلاد
كل هذه عمليات معالجة.
━━━━━━━━━━━━━━━━━━━
سؤال مهم
هل العملية تعني العمليات الحسابية فقط؟
لا.
العملية يمكن أن تكون:
- عملية حسابية.
- تخزين قيمة.
- تعديل قيمة.
- تنفيذ تعليمة.
- معالجة بيانات.
━━━━━━━━━━━━━━━━━━━
4- رمز القرار (Decision)
هذا من أهم الرموز في المخطط الانسيابي.
يستخدم عندما نحتاج إلى:
اتخاذ قرار بناءً على شرط.
أي أن الخوارزمية تسأل سؤالًا، ثم تحدد ماذا تفعل بناءً على الإجابة.
━━━━━━━━━━━━━━━━━━━
مثال
إذا كانت درجة الطالب أكبر من أو تساوي 50:
الطالب ناجح.
وإذا كانت أقل من 50:
الطالب راسب.
هنا لدينا قرار.
━━━━━━━━━━━━━━━━━━━
كيف يعمل القرار؟
عادةً يكون للقرار أكثر من مسار.
مثل:
نعم ← نفذ خطوة معينة.
لا ← نفذ خطوة أخرى.
━━━━━━━━━━━━━━━━━━━
مثال آخر
هل العمر أكبر من أو يساوي 18؟
إذا كانت الإجابة نعم:
يسمح له بالدخول.
إذا كانت الإجابة لا:
لا يسمح له بالدخول.
━━━━━━━━━━━━━━━━━━━
سؤال مهم
لماذا نحتاج إلى رمز القرار؟
لأن بعض الخوارزميات لا تسير في اتجاه واحد.
في الدرس السابق تعرفنا على طرق تمثيل الخوارزميات، وتعلمنا أن هناك ثلاث طرق رئيسية:
1- الكلام المبعثر أو اللغة الطبيعية (Natural Language).
2- الشفرة الوهمية أو الشفرة الزائفة (Pseudo Code).
3- المخطط الانسيابي (Flowchart).
واليوم سنركز على الطريقة الثالثة، وهي:
المخطط الانسيابي (Flowchart).
━━━━━━━━━━━━━━━━━━━
ما هو المخطط الانسيابي؟
المخطط الانسيابي هو طريقة رسومية لتمثيل الخوارزمية.
بدلًا من كتابة خطوات الخوارزمية فقط، نستخدم مجموعة من الأشكال والرموز، وكل شكل له معنى ووظيفة محددة.
ثم نستخدم الأسهم لربط هذه الأشكال مع بعضها، حتى نوضح كيف تنتقل الخوارزمية من خطوة إلى أخرى.
━━━━━━━━━━━━━━━━━━━
لماذا لكل شكل معنى مختلف؟
قد تسأل:
لماذا لا نستخدم شكلًا واحدًا لجميع الخطوات؟
لأن كل خطوة في الخوارزمية لها وظيفة مختلفة.
فمثلًا:
هناك خطوة تعني "ابدأ".
وهناك خطوة تعني "أدخل بيانات".
وهناك خطوة تعني "نفذ عملية".
وهناك خطوة تعني "اتخذ قرارًا".
وهناك خطوة تعني "اعرض النتيجة".
لذلك تم الاتفاق على رموز وأشكال قياسية تساعد أي شخص على فهم المخطط بسهولة.
━━━━━━━━━━━━━━━━━━━
أهم أشكال المخطط الانسيابي
هناك مجموعة من الرموز الأساسية التي يجب على المبتدئ معرفتها، وأهمها:
1- رمز البداية والنهاية (Terminator).
2- رمز الإدخال والإخراج (Input/Output).
3- رمز العملية أو المعالجة (Process).
4- رمز القرار (Decision).
5- رمز الأسهم أو خط التدفق (Flow Line).
6- رمز الموصل (Connector).
7- رمز العملية المعرفة مسبقًا (Predefined Process).
وسنشرح كل واحد بالتفصيل.
━━━━━━━━━━━━━━━━━━━
1- رمز البداية والنهاية (Terminator)
هذا الرمز يستخدم للدلالة على:
بداية الخوارزمية أو نهايتها.
أي أنه يخبرنا:
من أين تبدأ الخوارزمية؟
وأين تنتهي؟
━━━━━━━━━━━━━━━━━━━
متى نستخدمه؟
نستخدمه في بداية المخطط لكتابة:
"Start"
أو:
"ابدأ"
وفي نهاية المخطط نستخدمه لكتابة:
"End"
أو:
"انتهى"
━━━━━━━━━━━━━━━━━━━
مثال
إذا كانت لدينا خوارزمية لحساب مساحة مستطيل، فإنها تبدأ بـ:
ابدأ
ثم تنفذ باقي الخطوات.
وفي النهاية:
انتهى.
━━━━━━━━━━━━━━━━━━━
سؤال مهم
هل يمكن أن يكون للمخطط أكثر من بداية؟
في المخططات البسيطة، الأفضل أن تكون هناك بداية واضحة واحدة ونهاية واضحة واحدة، حتى يكون مسار الخوارزمية سهل الفهم.
━━━━━━━━━━━━━━━━━━━
2- رمز الإدخال والإخراج (Input / Output)
هذا الرمز يستخدم عندما نريد:
إدخال البيانات إلى البرنامج أو إخراج النتائج منه.
أي أنه يستخدم في حالتين:
Input
إدخال البيانات.
Output
إخراج البيانات.
━━━━━━━━━━━━━━━━━━━
أولًا: الإدخال (Input)
الإدخال يعني أن البرنامج يحصل على بيانات.
مثال:
أدخل العمر.
أدخل الرقم الأول.
أدخل الرقم الثاني.
أدخل اسم الطالب.
━━━━━━━━━━━━━━━━━━━
ثانيًا: الإخراج (Output)
الإخراج يعني أن البرنامج يعرض نتيجة للمستخدم.
مثال:
اعرض المجموع.
اعرض المعدل.
اعرض اسم الطالب.
اعرض رسالة "نجاح".
━━━━━━━━━━━━━━━━━━━
سؤال مهم
ما الفرق بين الإدخال والإخراج؟
الإدخال:
البيانات تدخل إلى البرنامج.
الإخراج:
النتيجة تخرج من البرنامج إلى المستخدم.
━━━━━━━━━━━━━━━━━━━
3- رمز العملية أو المعالجة (Process)
هذا الرمز يستخدم لتنفيذ عملية أو تعليمة داخل الخوارزمية.
بمعنى آخر:
عندما نريد أن يقوم البرنامج بشيء معين على البيانات، نستخدم رمز العملية.
━━━━━━━━━━━━━━━━━━━
أمثلة على العمليات
حساب:
المساحة = الطول × العرض
أو:
المجموع = الرقم الأول + الرقم الثاني
أو:
العمر = السنة الحالية - سنة الميلاد
كل هذه عمليات معالجة.
━━━━━━━━━━━━━━━━━━━
سؤال مهم
هل العملية تعني العمليات الحسابية فقط؟
لا.
العملية يمكن أن تكون:
- عملية حسابية.
- تخزين قيمة.
- تعديل قيمة.
- تنفيذ تعليمة.
- معالجة بيانات.
━━━━━━━━━━━━━━━━━━━
4- رمز القرار (Decision)
هذا من أهم الرموز في المخطط الانسيابي.
يستخدم عندما نحتاج إلى:
اتخاذ قرار بناءً على شرط.
أي أن الخوارزمية تسأل سؤالًا، ثم تحدد ماذا تفعل بناءً على الإجابة.
━━━━━━━━━━━━━━━━━━━
مثال
إذا كانت درجة الطالب أكبر من أو تساوي 50:
الطالب ناجح.
وإذا كانت أقل من 50:
الطالب راسب.
هنا لدينا قرار.
━━━━━━━━━━━━━━━━━━━
كيف يعمل القرار؟
عادةً يكون للقرار أكثر من مسار.
مثل:
نعم ← نفذ خطوة معينة.
لا ← نفذ خطوة أخرى.
━━━━━━━━━━━━━━━━━━━
مثال آخر
هل العمر أكبر من أو يساوي 18؟
إذا كانت الإجابة نعم:
يسمح له بالدخول.
إذا كانت الإجابة لا:
لا يسمح له بالدخول.
━━━━━━━━━━━━━━━━━━━
سؤال مهم
لماذا نحتاج إلى رمز القرار؟
لأن بعض الخوارزميات لا تسير في اتجاه واحد.
❤1
أحيانًا يجب أن تتغير الخطوات حسب البيانات التي يدخلها المستخدم.
وهنا يأتي دور القرار.
━━━━━━━━━━━━━━━━━━━
5- رمز الأسهم أو خط التدفق (Flow Line)
الأسهم مهمة جدًا في المخطط الانسيابي.
وظيفتها توضيح:
اتجاه سير الخوارزمية.
أي أنها تخبرنا:
ما الخطوة التي سيتم تنفيذها بعد ذلك؟
━━━━━━━━━━━━━━━━━━━
مثال
ابدأ
ثم
أدخل الرقم
ثم
احسب النتيجة
ثم
اعرض النتيجة
ثم
انتهى
الأسهم هي التي توضح هذا التسلسل.
━━━━━━━━━━━━━━━━━━━
سؤال مهم
هل يمكن فهم المخطط بدون الأسهم؟
في معظم الحالات سيكون من الصعب معرفة ترتيب تنفيذ الخطوات، خصوصًا عندما يحتوي المخطط على شروط وتكرار.
لذلك يجب أن تكون الأسهم واضحة ومتصلة بالرموز بشكل صحيح.
━━━━━━━━━━━━━━━━━━━
6- رمز الموصل (Connector)
أحيانًا يكون المخطط الانسيابي كبيرًا، وقد نحتاج إلى نقل مسار الخوارزمية من مكان إلى آخر دون رسم خطوط طويلة أو متشابكة.
هنا نستخدم:
Connector
أي الموصل.
━━━━━━━━━━━━━━━━━━━
ما فائدته؟
يساعد على ربط أجزاء المخطط ببعضها عندما يكون من الصعب توصيلها بخط مباشر.
يمكن استخدامه مثلًا عندما يكون هناك جزء من المخطط في مكان بعيد عن الجزء الآخر.
━━━━━━━━━━━━━━━━━━━
سؤال مهم
لماذا لا نستخدم الأسهم الطويلة دائمًا؟
لأن كثرة الخطوط الطويلة والمتقاطعة تجعل المخطط صعب القراءة.
الموصل يساعد على جعل المخطط أكثر تنظيمًا.
━━━━━━━━━━━━━━━━━━━
7- رمز العملية المعرفة مسبقًا (Predefined Process)
هذا الرمز يستخدم عندما تكون لدينا عملية أو مجموعة خطوات تم تعريفها مسبقًا ونريد استخدامها داخل الخوارزمية.
يمكن اعتباره إشارة إلى:
تنفيذ مجموعة من التعليمات الموجودة مسبقًا.
━━━━━━━━━━━━━━━━━━━
مثال بسيط
لنفترض أن لدينا خوارزمية كبيرة، وبداخلها مجموعة خطوات لحساب الراتب.
بدلًا من كتابة جميع خطوات حساب الراتب في كل مرة، يمكن تمثيلها كعملية معرفة مسبقًا باسم:
حساب الراتب
وعند الوصول إليها، نعرف أن هناك مجموعة خطوات سيتم تنفيذها.
━━━━━━━━━━━━━━━━━━━
هل يجب أن أحفظ جميع الرموز؟
لا.
في بداية تعلم الخوارزميات ركز على الرموز الأساسية، وهي:
البداية والنهاية.
الإدخال والإخراج.
العملية.
القرار.
الأسهم.
هذه الرموز ستستخدمها باستمرار.
أما الرموز الأخرى فستتعلمها تدريجيًا عندما تبدأ في التعامل مع مخططات أكثر تعقيدًا.
━━━━━━━━━━━━━━━━━━━
مثال ذهني بسيط
تخيل أننا نريد بناء خوارزمية لحساب مجموع رقمين.
نحتاج إلى:
البداية.
ثم إدخال الرقم الأول.
ثم إدخال الرقم الثاني.
ثم جمع الرقمين.
ثم عرض النتيجة.
ثم النهاية.
لاحظ أن كل خطوة لها نوع مختلف:
البداية والنهاية ← رمز البداية والنهاية.
إدخال الأرقام ← رمز الإدخال.
عملية الجمع ← رمز العملية.
عرض النتيجة ← رمز الإخراج.
الانتقال بين الخطوات ← الأسهم.
━━━━━━━━━━━━━━━━━━━
كيف أعرف أي رمز أستخدم؟
عندما تريد رسم مخطط انسيابي، اسأل نفسك:
هل بدأت أو انتهيت؟
استخدم رمز البداية والنهاية.
━━━━━━━━━━━━━━━━━━━
هل أدخل بيانات أو أعرض نتيجة؟
استخدم رمز الإدخال والإخراج.
━━━━━━━━━━━━━━━━━━━
هل أنفذ عملية أو أعالج بيانات؟
استخدم رمز العملية.
━━━━━━━━━━━━━━━━━━━
هل أحتاج إلى اتخاذ قرار؟
استخدم رمز القرار.
━━━━━━━━━━━━━━━━━━━
هل أريد توضيح اتجاه الانتقال؟
استخدم الأسهم.
━━━━━━━━━━━━━━━━━━━
هل أحتاج إلى ربط أجزاء بعيدة من المخطط؟
يمكن استخدام الموصل.
━━━━━━━━━━━━━━━━━━━
خطأ شائع جدًا عند المبتدئين
من أكثر الأخطاء التي يقع فيها الطالب أن يحفظ أسماء الأشكال دون أن يفهم وظيفتها.
لا تحفظ الشكل فقط.
اسأل نفسك دائمًا:
ماذا يعني هذا الرمز؟
ثم:
متى أستخدمه؟
ثم:
ما نوع الخطوة التي أضعها بداخله؟
إذا فهمت هذه الأسئلة، فلن تحتاج إلى حفظ الرموز بطريقة صعبة.
━━━━━━━━━━━━━━━━━━━
سؤال مهم: هل المخطط الانسيابي هو الخوارزمية نفسها؟
لا.
الخوارزمية هي:
خطوات الحل المنطقية للمشكلة.
أما المخطط الانسيابي فهو:
طريقة رسومية لتمثيل هذه الخطوات.
بمعنى أن الخوارزمية هي الفكرة والحل، والمخطط الانسيابي هو إحدى الطرق التي نعرض بها هذا الحل.
━━━━━━━━━━━━━━━━━━━
سؤال آخر: هل أحتاج إلى رسم مخطط لكل برنامج؟
ليس بالضرورة.
في البرامج الصغيرة قد يكون من السهل فهم الحل مباشرة.
لكن المخططات الانسيابية تكون مفيدة جدًا عند التعلم، وعند شرح الخوارزميات، وعند التعامل مع الأنظمة أو المشكلات التي تحتوي على خطوات وشروط وتكرار كثيرة.
━━━━━━━━━━━━━━━━━━━
الخلاصة
المخطط الانسيابي يعتمد على مجموعة من الرموز، وكل رمز له وظيفة محددة.
أهم الرموز التي يجب أن تعرفها:
1- Terminator: يستخدم للبداية والنهاية.
2- Input / Output: يستخدم لإدخال البيانات وإخراج النتائج.
3- Process: يستخدم لتنفيذ العمليات ومعالجة البيانات.
وهنا يأتي دور القرار.
━━━━━━━━━━━━━━━━━━━
5- رمز الأسهم أو خط التدفق (Flow Line)
الأسهم مهمة جدًا في المخطط الانسيابي.
وظيفتها توضيح:
اتجاه سير الخوارزمية.
أي أنها تخبرنا:
ما الخطوة التي سيتم تنفيذها بعد ذلك؟
━━━━━━━━━━━━━━━━━━━
مثال
ابدأ
ثم
أدخل الرقم
ثم
احسب النتيجة
ثم
اعرض النتيجة
ثم
انتهى
الأسهم هي التي توضح هذا التسلسل.
━━━━━━━━━━━━━━━━━━━
سؤال مهم
هل يمكن فهم المخطط بدون الأسهم؟
في معظم الحالات سيكون من الصعب معرفة ترتيب تنفيذ الخطوات، خصوصًا عندما يحتوي المخطط على شروط وتكرار.
لذلك يجب أن تكون الأسهم واضحة ومتصلة بالرموز بشكل صحيح.
━━━━━━━━━━━━━━━━━━━
6- رمز الموصل (Connector)
أحيانًا يكون المخطط الانسيابي كبيرًا، وقد نحتاج إلى نقل مسار الخوارزمية من مكان إلى آخر دون رسم خطوط طويلة أو متشابكة.
هنا نستخدم:
Connector
أي الموصل.
━━━━━━━━━━━━━━━━━━━
ما فائدته؟
يساعد على ربط أجزاء المخطط ببعضها عندما يكون من الصعب توصيلها بخط مباشر.
يمكن استخدامه مثلًا عندما يكون هناك جزء من المخطط في مكان بعيد عن الجزء الآخر.
━━━━━━━━━━━━━━━━━━━
سؤال مهم
لماذا لا نستخدم الأسهم الطويلة دائمًا؟
لأن كثرة الخطوط الطويلة والمتقاطعة تجعل المخطط صعب القراءة.
الموصل يساعد على جعل المخطط أكثر تنظيمًا.
━━━━━━━━━━━━━━━━━━━
7- رمز العملية المعرفة مسبقًا (Predefined Process)
هذا الرمز يستخدم عندما تكون لدينا عملية أو مجموعة خطوات تم تعريفها مسبقًا ونريد استخدامها داخل الخوارزمية.
يمكن اعتباره إشارة إلى:
تنفيذ مجموعة من التعليمات الموجودة مسبقًا.
━━━━━━━━━━━━━━━━━━━
مثال بسيط
لنفترض أن لدينا خوارزمية كبيرة، وبداخلها مجموعة خطوات لحساب الراتب.
بدلًا من كتابة جميع خطوات حساب الراتب في كل مرة، يمكن تمثيلها كعملية معرفة مسبقًا باسم:
حساب الراتب
وعند الوصول إليها، نعرف أن هناك مجموعة خطوات سيتم تنفيذها.
━━━━━━━━━━━━━━━━━━━
هل يجب أن أحفظ جميع الرموز؟
لا.
في بداية تعلم الخوارزميات ركز على الرموز الأساسية، وهي:
البداية والنهاية.
الإدخال والإخراج.
العملية.
القرار.
الأسهم.
هذه الرموز ستستخدمها باستمرار.
أما الرموز الأخرى فستتعلمها تدريجيًا عندما تبدأ في التعامل مع مخططات أكثر تعقيدًا.
━━━━━━━━━━━━━━━━━━━
مثال ذهني بسيط
تخيل أننا نريد بناء خوارزمية لحساب مجموع رقمين.
نحتاج إلى:
البداية.
ثم إدخال الرقم الأول.
ثم إدخال الرقم الثاني.
ثم جمع الرقمين.
ثم عرض النتيجة.
ثم النهاية.
لاحظ أن كل خطوة لها نوع مختلف:
البداية والنهاية ← رمز البداية والنهاية.
إدخال الأرقام ← رمز الإدخال.
عملية الجمع ← رمز العملية.
عرض النتيجة ← رمز الإخراج.
الانتقال بين الخطوات ← الأسهم.
━━━━━━━━━━━━━━━━━━━
كيف أعرف أي رمز أستخدم؟
عندما تريد رسم مخطط انسيابي، اسأل نفسك:
هل بدأت أو انتهيت؟
استخدم رمز البداية والنهاية.
━━━━━━━━━━━━━━━━━━━
هل أدخل بيانات أو أعرض نتيجة؟
استخدم رمز الإدخال والإخراج.
━━━━━━━━━━━━━━━━━━━
هل أنفذ عملية أو أعالج بيانات؟
استخدم رمز العملية.
━━━━━━━━━━━━━━━━━━━
هل أحتاج إلى اتخاذ قرار؟
استخدم رمز القرار.
━━━━━━━━━━━━━━━━━━━
هل أريد توضيح اتجاه الانتقال؟
استخدم الأسهم.
━━━━━━━━━━━━━━━━━━━
هل أحتاج إلى ربط أجزاء بعيدة من المخطط؟
يمكن استخدام الموصل.
━━━━━━━━━━━━━━━━━━━
خطأ شائع جدًا عند المبتدئين
من أكثر الأخطاء التي يقع فيها الطالب أن يحفظ أسماء الأشكال دون أن يفهم وظيفتها.
لا تحفظ الشكل فقط.
اسأل نفسك دائمًا:
ماذا يعني هذا الرمز؟
ثم:
متى أستخدمه؟
ثم:
ما نوع الخطوة التي أضعها بداخله؟
إذا فهمت هذه الأسئلة، فلن تحتاج إلى حفظ الرموز بطريقة صعبة.
━━━━━━━━━━━━━━━━━━━
سؤال مهم: هل المخطط الانسيابي هو الخوارزمية نفسها؟
لا.
الخوارزمية هي:
خطوات الحل المنطقية للمشكلة.
أما المخطط الانسيابي فهو:
طريقة رسومية لتمثيل هذه الخطوات.
بمعنى أن الخوارزمية هي الفكرة والحل، والمخطط الانسيابي هو إحدى الطرق التي نعرض بها هذا الحل.
━━━━━━━━━━━━━━━━━━━
سؤال آخر: هل أحتاج إلى رسم مخطط لكل برنامج؟
ليس بالضرورة.
في البرامج الصغيرة قد يكون من السهل فهم الحل مباشرة.
لكن المخططات الانسيابية تكون مفيدة جدًا عند التعلم، وعند شرح الخوارزميات، وعند التعامل مع الأنظمة أو المشكلات التي تحتوي على خطوات وشروط وتكرار كثيرة.
━━━━━━━━━━━━━━━━━━━
الخلاصة
المخطط الانسيابي يعتمد على مجموعة من الرموز، وكل رمز له وظيفة محددة.
أهم الرموز التي يجب أن تعرفها:
1- Terminator: يستخدم للبداية والنهاية.
2- Input / Output: يستخدم لإدخال البيانات وإخراج النتائج.
3- Process: يستخدم لتنفيذ العمليات ومعالجة البيانات.
4- Decision: يستخدم لاتخاذ القرارات وفحص الشروط.
5- Flow Line: يستخدم لتحديد اتجاه سير الخوارزمية.
6- Connector: يستخدم لربط أجزاء المخطط ببعضها.
7- Predefined Process: يستخدم لتمثيل عملية أو مجموعة خطوات معرفة مسبقًا.
والأهم من حفظ أسماء الرموز هو أن تفهم وظيفة كل رمز ومتى تستخدمه.
5- Flow Line: يستخدم لتحديد اتجاه سير الخوارزمية.
6- Connector: يستخدم لربط أجزاء المخطط ببعضها.
7- Predefined Process: يستخدم لتمثيل عملية أو مجموعة خطوات معرفة مسبقًا.
والأهم من حفظ أسماء الرموز هو أن تفهم وظيفة كل رمز ومتى تستخدمه.