K7H Code
تريد تعلم الخوارزميات او الدخول في البرمجة مباشرة
الشرح بيكون على ما يختار المتابعين
معلومة للذين صوتوا " لا اعلم من اين ابدا " البدايه ستكون من تعلم الخوارزميات . هذه هي الاساس
🤝2❤1⚡1
الخوارزميات (Algorithms)
إذا سألت شخصًا: ما أهم شيء يجب أن يتعلمه المبرمج؟ فسيعتقد البعض أن الإجابة هي تعلم لغة برمجة مثل Java أو Python أو C++.
لكن الحقيقة أن لغة البرمجة ليست أهم شيء.
لأن المبرمج الذي يعرف عشر لغات برمجة ولا يعرف كيف يحل المشكلات، سيواجه صعوبة في بناء البرامج.
أما المبرمج الذي يفكر بطريقة صحيحة ويجيد تصميم الخوارزميات، فيمكنه تعلم أي لغة برمجة بسهولة.
ولهذا السبب تعتبر الخوارزميات (Algorithms) من أهم أساسيات البرمجة وعلوم الحاسب.
━━━━━━━━━━━━━━━━━━━
ما هي الخوارزمية؟
الخوارزمية (Algorithm) هي:
مجموعة من الخطوات المرتبة والمنطقية التي يتم تنفيذها بالترتيب لحل مشكلة معينة أو لإنجاز مهمة محددة.
بمعنى أبسط...
الخوارزمية هي خطة عمل أو طريقة منظمة للوصول إلى نتيجة.
أي أنها تحدد ماذا سنفعل أولًا، ثم ثانيًا، ثم ثالثًا، حتى نصل إلى الهدف.
━━━━━━━━━━━━━━━━━━━
لماذا سميت "خوارزمية"؟
كلمة Algorithm جاءت من اسم العالم المسلم محمد بن موسى الخوارزمي، أحد أعظم علماء الرياضيات في التاريخ.
وقد ساهمت أعماله في تطوير طرق الحساب وحل المسائل الرياضية، ثم انتقل اسمه إلى اللغات الأوروبية، وأصبحت كلمة Algorithm تستخدم للدلالة على الخطوات المنظمة لحل المشكلات.
━━━━━━━━━━━━━━━━━━━
هل نستخدم الخوارزميات في حياتنا اليومية؟
نعم، بل إننا نستخدمها باستمرار حتى دون أن نشعر.
أي عمل نقوم به على شكل خطوات مرتبة هو خوارزمية.
مثال:
إعداد كوب من الشاي.
الخطوات:
أحضر كوبًا.
ضع كيس الشاي.
اغلِ الماء.
اسكب الماء في الكوب.
أضف السكر إذا أردت.
حرّك الشاي.
اشربه.
هذه خطوات مرتبة، وإذا نفذتها بالترتيب ستحصل على النتيجة المطلوبة.
هذه خوارزمية.
━━━━━━━━━━━━━━━━━━━
مثال آخر
تخيل أنك تريد الذهاب إلى الجامعة.
ماذا تفعل؟
تستيقظ من النوم.
ترتدي ملابسك.
تتناول الإفطار.
تخرج من المنزل.
تركب وسيلة النقل.
تصل إلى الجامعة.
هذا أيضًا خوارزمية.
━━━━━━━━━━━━━━━━━━━
لماذا نحتاج إلى الخوارزميات في البرمجة؟
الحاسوب لا يستطيع التفكير مثل الإنسان.
إذا قلت له:
"احسب المعدل."
فلن يفهم.
يجب أن تخبره بكل خطوة بالتفصيل.
مثلًا:
اقرأ درجات الطالب.
اجمع الدرجات.
احسب عدد المواد.
اقسم المجموع على عدد المواد.
اعرض المعدل.
هذه هي الخوارزمية.
بعد ذلك فقط يمكن تحويلها إلى كود برمجي.
━━━━━━━━━━━━━━━━━━━
العلاقة بين الخوارزمية والبرمجة
من الأخطاء الشائعة الاعتقاد أن البرمجة تبدأ بكتابة الكود.
لكن في الواقع، البرمجة تبدأ بالتفكير.
الترتيب الصحيح هو:
المشكلة → الخوارزمية → الكود → البرنامج.
أي أن الخوارزمية تأتي قبل كتابة أي سطر برمجي.
━━━━━━━━━━━━━━━━━━━
ما الفرق بين الخوارزمية والكود؟
الخوارزمية هي الفكرة والخطوات.
أما الكود فهو ترجمة هذه الخطوات إلى لغة برمجة.
مثلًا:
الخوارزمية تقول:
اقرأ رقمين.
اجمعهما.
اطبع الناتج.
أما في Java فتكتب هذه الخطوات باستخدام أوامر اللغة.
إذن:
الخوارزمية مستقلة عن أي لغة برمجة.
أما الكود فيختلف من لغة إلى أخرى.
━━━━━━━━━━━━━━━━━━━
لماذا تعتبر الخوارزميات مهمة جدًا؟
للخوارزميات أهمية كبيرة، لأنها:
1- تساعد على حل المشكلات بطريقة منظمة
بدلًا من تجربة حلول عشوائية، يتم تقسيم المشكلة إلى خطوات واضحة ومنطقية.
━━━━━━━━━━━━━━━━━━━
2- تجعل كتابة الكود أسهل
عندما تكون الخوارزمية جاهزة، تصبح كتابة البرنامج مجرد تحويل للخطوات إلى أوامر برمجية.
━━━━━━━━━━━━━━━━━━━
3- تقلل الأخطاء
التفكير في الحل قبل البرمجة يساعد على اكتشاف الأخطاء مبكرًا، قبل كتابة الكود.
━━━━━━━━━━━━━━━━━━━
4- تسهل تعديل البرنامج
إذا تغيرت المتطلبات، يكون تعديل الخوارزمية أسهل من تعديل برنامج كبير مكتوب دون تخطيط.
━━━━━━━━━━━━━━━━━━━
5- يمكن استخدامها مع أي لغة برمجة
الخوارزمية نفسها يمكن تنفيذها بلغة Java أو Python أو C++ أو أي لغة أخرى.
━━━━━━━━━━━━━━━━━━━
خصائص الخوارزمية الجيدة
ليست كل مجموعة خطوات تعتبر خوارزمية جيدة.
الخوارزمية الجيدة يجب أن تمتلك عدة خصائص.
1- الوضوح (Clarity)
يجب أن تكون جميع الخطوات واضحة وغير غامضة.
━━━━━━━━━━━━━━━━━━━
2- الترتيب (Order)
يجب تنفيذ الخطوات بترتيب صحيح.
━━━━━━━━━━━━━━━━━━━
3- النهاية (Finiteness)
يجب أن تنتهي بعد عدد محدود من الخطوات.
إذا استمرت بلا نهاية، فهي ليست خوارزمية صحيحة.
━━━━━━━━━━━━━━━━━━━
4- وجود مدخلات (Input)
قد تستقبل الخوارزمية بيانات مثل الأرقام أو النصوص.
━━━━━━━━━━━━━━━━━━━
5- وجود مخرجات (Output)
يجب أن تنتج نتيجة في النهاية.
━━━━━━━━━━━━━━━━━━━
إذا سألت شخصًا: ما أهم شيء يجب أن يتعلمه المبرمج؟ فسيعتقد البعض أن الإجابة هي تعلم لغة برمجة مثل Java أو Python أو C++.
لكن الحقيقة أن لغة البرمجة ليست أهم شيء.
لأن المبرمج الذي يعرف عشر لغات برمجة ولا يعرف كيف يحل المشكلات، سيواجه صعوبة في بناء البرامج.
أما المبرمج الذي يفكر بطريقة صحيحة ويجيد تصميم الخوارزميات، فيمكنه تعلم أي لغة برمجة بسهولة.
ولهذا السبب تعتبر الخوارزميات (Algorithms) من أهم أساسيات البرمجة وعلوم الحاسب.
━━━━━━━━━━━━━━━━━━━
ما هي الخوارزمية؟
الخوارزمية (Algorithm) هي:
مجموعة من الخطوات المرتبة والمنطقية التي يتم تنفيذها بالترتيب لحل مشكلة معينة أو لإنجاز مهمة محددة.
بمعنى أبسط...
الخوارزمية هي خطة عمل أو طريقة منظمة للوصول إلى نتيجة.
أي أنها تحدد ماذا سنفعل أولًا، ثم ثانيًا، ثم ثالثًا، حتى نصل إلى الهدف.
━━━━━━━━━━━━━━━━━━━
لماذا سميت "خوارزمية"؟
كلمة Algorithm جاءت من اسم العالم المسلم محمد بن موسى الخوارزمي، أحد أعظم علماء الرياضيات في التاريخ.
وقد ساهمت أعماله في تطوير طرق الحساب وحل المسائل الرياضية، ثم انتقل اسمه إلى اللغات الأوروبية، وأصبحت كلمة Algorithm تستخدم للدلالة على الخطوات المنظمة لحل المشكلات.
━━━━━━━━━━━━━━━━━━━
هل نستخدم الخوارزميات في حياتنا اليومية؟
نعم، بل إننا نستخدمها باستمرار حتى دون أن نشعر.
أي عمل نقوم به على شكل خطوات مرتبة هو خوارزمية.
مثال:
إعداد كوب من الشاي.
الخطوات:
أحضر كوبًا.
ضع كيس الشاي.
اغلِ الماء.
اسكب الماء في الكوب.
أضف السكر إذا أردت.
حرّك الشاي.
اشربه.
هذه خطوات مرتبة، وإذا نفذتها بالترتيب ستحصل على النتيجة المطلوبة.
هذه خوارزمية.
━━━━━━━━━━━━━━━━━━━
مثال آخر
تخيل أنك تريد الذهاب إلى الجامعة.
ماذا تفعل؟
تستيقظ من النوم.
ترتدي ملابسك.
تتناول الإفطار.
تخرج من المنزل.
تركب وسيلة النقل.
تصل إلى الجامعة.
هذا أيضًا خوارزمية.
━━━━━━━━━━━━━━━━━━━
لماذا نحتاج إلى الخوارزميات في البرمجة؟
الحاسوب لا يستطيع التفكير مثل الإنسان.
إذا قلت له:
"احسب المعدل."
فلن يفهم.
يجب أن تخبره بكل خطوة بالتفصيل.
مثلًا:
اقرأ درجات الطالب.
اجمع الدرجات.
احسب عدد المواد.
اقسم المجموع على عدد المواد.
اعرض المعدل.
هذه هي الخوارزمية.
بعد ذلك فقط يمكن تحويلها إلى كود برمجي.
━━━━━━━━━━━━━━━━━━━
العلاقة بين الخوارزمية والبرمجة
من الأخطاء الشائعة الاعتقاد أن البرمجة تبدأ بكتابة الكود.
لكن في الواقع، البرمجة تبدأ بالتفكير.
الترتيب الصحيح هو:
المشكلة → الخوارزمية → الكود → البرنامج.
أي أن الخوارزمية تأتي قبل كتابة أي سطر برمجي.
━━━━━━━━━━━━━━━━━━━
ما الفرق بين الخوارزمية والكود؟
الخوارزمية هي الفكرة والخطوات.
أما الكود فهو ترجمة هذه الخطوات إلى لغة برمجة.
مثلًا:
الخوارزمية تقول:
اقرأ رقمين.
اجمعهما.
اطبع الناتج.
أما في Java فتكتب هذه الخطوات باستخدام أوامر اللغة.
إذن:
الخوارزمية مستقلة عن أي لغة برمجة.
أما الكود فيختلف من لغة إلى أخرى.
━━━━━━━━━━━━━━━━━━━
لماذا تعتبر الخوارزميات مهمة جدًا؟
للخوارزميات أهمية كبيرة، لأنها:
1- تساعد على حل المشكلات بطريقة منظمة
بدلًا من تجربة حلول عشوائية، يتم تقسيم المشكلة إلى خطوات واضحة ومنطقية.
━━━━━━━━━━━━━━━━━━━
2- تجعل كتابة الكود أسهل
عندما تكون الخوارزمية جاهزة، تصبح كتابة البرنامج مجرد تحويل للخطوات إلى أوامر برمجية.
━━━━━━━━━━━━━━━━━━━
3- تقلل الأخطاء
التفكير في الحل قبل البرمجة يساعد على اكتشاف الأخطاء مبكرًا، قبل كتابة الكود.
━━━━━━━━━━━━━━━━━━━
4- تسهل تعديل البرنامج
إذا تغيرت المتطلبات، يكون تعديل الخوارزمية أسهل من تعديل برنامج كبير مكتوب دون تخطيط.
━━━━━━━━━━━━━━━━━━━
5- يمكن استخدامها مع أي لغة برمجة
الخوارزمية نفسها يمكن تنفيذها بلغة Java أو Python أو C++ أو أي لغة أخرى.
━━━━━━━━━━━━━━━━━━━
خصائص الخوارزمية الجيدة
ليست كل مجموعة خطوات تعتبر خوارزمية جيدة.
الخوارزمية الجيدة يجب أن تمتلك عدة خصائص.
1- الوضوح (Clarity)
يجب أن تكون جميع الخطوات واضحة وغير غامضة.
━━━━━━━━━━━━━━━━━━━
2- الترتيب (Order)
يجب تنفيذ الخطوات بترتيب صحيح.
━━━━━━━━━━━━━━━━━━━
3- النهاية (Finiteness)
يجب أن تنتهي بعد عدد محدود من الخطوات.
إذا استمرت بلا نهاية، فهي ليست خوارزمية صحيحة.
━━━━━━━━━━━━━━━━━━━
4- وجود مدخلات (Input)
قد تستقبل الخوارزمية بيانات مثل الأرقام أو النصوص.
━━━━━━━━━━━━━━━━━━━
5- وجود مخرجات (Output)
يجب أن تنتج نتيجة في النهاية.
━━━━━━━━━━━━━━━━━━━
❤🔥1❤1💯1
6- الكفاءة (Efficiency)
يجب أن تحقق النتيجة بأقل وقت وأقل استهلاك للموارد كلما أمكن.
━━━━━━━━━━━━━━━━━━━
مكونات أي خوارزمية
غالبًا تتكون الخوارزمية من:
مدخلات (Input).
عمليات معالجة (Processing).
مخرجات (Output).
مثال:
مدخلات: رقمان.
المعالجة: جمع الرقمين.
المخرجات: عرض الناتج.
━━━━━━━━━━━━━━━━━━━
مثال عملي
المطلوب:
إيجاد أكبر رقم بين عددين.
الخوارزمية:
اقرأ الرقم الأول.
اقرأ الرقم الثاني.
إذا كان الرقم الأول أكبر من الثاني، اعرض الرقم الأول.
وإلا اعرض الرقم الثاني.
انتهى.
بعد ذلك يمكن كتابة هذه الخطوات بأي لغة برمجة.
━━━━━━━━━━━━━━━━━━━
أين تستخدم الخوارزميات؟
الخوارزميات موجودة في كل مكان تقريبًا، مثل:
محركات البحث.
تطبيقات الخرائط.
الذكاء الاصطناعي.
الألعاب.
التطبيقات البنكية.
أنظمة المستشفيات.
مواقع التجارة الإلكترونية.
شبكات التواصل الاجتماعي.
أنظمة الملاحة.
برامج الترجمة.
أي برنامج ذكي يعتمد على خوارزميات.
━━━━━━━━━━━━━━━━━━━
ماذا يحدث إذا كانت الخوارزمية سيئة؟
قد يعمل البرنامج، لكنه سيكون:
بطيئًا.
يستهلك ذاكرة كبيرة.
يصعب تعديله.
يحتوي على أخطاء.
لا يتحمل عددًا كبيرًا من المستخدمين.
لذلك فإن جودة البرنامج تبدأ من جودة الخوارزمية.
━━━━━━━━━━━━━━━━━━━
هل يمكن أن توجد أكثر من خوارزمية لحل المشكلة نفسها؟
نعم.
وهذا من أهم المفاهيم في البرمجة.
قد توجد عدة خوارزميات لحل المشكلة نفسها، لكن بعضها يكون أسرع، وبعضها يستهلك ذاكرة أقل، وبعضها أبسط في التنفيذ.
ولهذا يحرص المبرمج على اختيار الخوارزمية الأنسب، وليس أول حل يخطر في ذهنه.
━━━━━━━━━━━━━━━━━━━
مثال واقعي
تخيل أنك تريد الوصول إلى مكان داخل مدينة.
يمكنك اختيار أكثر من طريق.
الطريق الأول قصير لكنه مزدحم.
الطريق الثاني أطول لكنه أسرع.
الطريق الثالث يحتوي على إشارات مرور كثيرة.
جميع الطرق توصلك إلى المكان نفسه، لكن بعضها أفضل من الآخر.
والخوارزميات تعمل بالطريقة نفسها؛ فقد تصل جميعها إلى النتيجة، لكن تختلف في السرعة والكفاءة.
━━━━━━━━━━━━━━━━━━━
أشهر مجالات دراسة الخوارزميات
عند التعمق في علوم الحاسب، ستتعلم خوارزميات متخصصة، مثل:
خوارزميات البحث (Searching Algorithms).
خوارزميات الفرز (Sorting Algorithms).
الخوارزميات التكرارية (Iterative Algorithms).
الخوارزميات العودية (Recursive Algorithms).
خوارزميات الرسوم البيانية (Graph Algorithms).
خوارزميات البرمجة الديناميكية (Dynamic Programming).
الخوارزميات الجشعة (Greedy Algorithms).
خوارزميات التشفير (Cryptographic Algorithms).
وكل نوع منها يُستخدم لحل نوع معين من المشكلات.
━━━━━━━━━━━━━━━━━━━
أهم النقاط التي يجب تذكرها
الخوارزمية هي مجموعة خطوات مرتبة ومنطقية لحل مشكلة.
الخوارزمية تسبق كتابة الكود البرمجي.
يمكن تنفيذ الخوارزمية بأي لغة برمجة.
جودة البرنامج تعتمد بشكل كبير على جودة الخوارزمية.
قد توجد عدة خوارزميات لحل المشكلة نفسها، لكن تختلف في الكفاءة.
تعلم الخوارزميات يعني تعلم طريقة التفكير، وليس حفظ الأكواد.
━━━━━━━━━━━━━━━━━━━
الخلاصة
الخوارزمية (Algorithm) هي الأساس الذي تُبنى عليه جميع البرامج. فهي تمثل طريقة التفكير المنطقية لحل المشكلات، وتحدد الخطوات التي يجب تنفيذها للوصول إلى النتيجة الصحيحة قبل كتابة أي سطر برمجي.
ويمكن تلخيص الدرس بجملة واحدة:
المبرمج المحترف لا يبدأ بكتابة الكود، بل يبدأ بتصميم خوارزمية صحيحة، لأن الكود يمكن تغييره، أما التفكير الصحيح فهو أساس بناء أي برنامج ناجح.
#خوارزميات_من_الصفر
يجب أن تحقق النتيجة بأقل وقت وأقل استهلاك للموارد كلما أمكن.
━━━━━━━━━━━━━━━━━━━
مكونات أي خوارزمية
غالبًا تتكون الخوارزمية من:
مدخلات (Input).
عمليات معالجة (Processing).
مخرجات (Output).
مثال:
مدخلات: رقمان.
المعالجة: جمع الرقمين.
المخرجات: عرض الناتج.
━━━━━━━━━━━━━━━━━━━
مثال عملي
المطلوب:
إيجاد أكبر رقم بين عددين.
الخوارزمية:
اقرأ الرقم الأول.
اقرأ الرقم الثاني.
إذا كان الرقم الأول أكبر من الثاني، اعرض الرقم الأول.
وإلا اعرض الرقم الثاني.
انتهى.
بعد ذلك يمكن كتابة هذه الخطوات بأي لغة برمجة.
━━━━━━━━━━━━━━━━━━━
أين تستخدم الخوارزميات؟
الخوارزميات موجودة في كل مكان تقريبًا، مثل:
محركات البحث.
تطبيقات الخرائط.
الذكاء الاصطناعي.
الألعاب.
التطبيقات البنكية.
أنظمة المستشفيات.
مواقع التجارة الإلكترونية.
شبكات التواصل الاجتماعي.
أنظمة الملاحة.
برامج الترجمة.
أي برنامج ذكي يعتمد على خوارزميات.
━━━━━━━━━━━━━━━━━━━
ماذا يحدث إذا كانت الخوارزمية سيئة؟
قد يعمل البرنامج، لكنه سيكون:
بطيئًا.
يستهلك ذاكرة كبيرة.
يصعب تعديله.
يحتوي على أخطاء.
لا يتحمل عددًا كبيرًا من المستخدمين.
لذلك فإن جودة البرنامج تبدأ من جودة الخوارزمية.
━━━━━━━━━━━━━━━━━━━
هل يمكن أن توجد أكثر من خوارزمية لحل المشكلة نفسها؟
نعم.
وهذا من أهم المفاهيم في البرمجة.
قد توجد عدة خوارزميات لحل المشكلة نفسها، لكن بعضها يكون أسرع، وبعضها يستهلك ذاكرة أقل، وبعضها أبسط في التنفيذ.
ولهذا يحرص المبرمج على اختيار الخوارزمية الأنسب، وليس أول حل يخطر في ذهنه.
━━━━━━━━━━━━━━━━━━━
مثال واقعي
تخيل أنك تريد الوصول إلى مكان داخل مدينة.
يمكنك اختيار أكثر من طريق.
الطريق الأول قصير لكنه مزدحم.
الطريق الثاني أطول لكنه أسرع.
الطريق الثالث يحتوي على إشارات مرور كثيرة.
جميع الطرق توصلك إلى المكان نفسه، لكن بعضها أفضل من الآخر.
والخوارزميات تعمل بالطريقة نفسها؛ فقد تصل جميعها إلى النتيجة، لكن تختلف في السرعة والكفاءة.
━━━━━━━━━━━━━━━━━━━
أشهر مجالات دراسة الخوارزميات
عند التعمق في علوم الحاسب، ستتعلم خوارزميات متخصصة، مثل:
خوارزميات البحث (Searching Algorithms).
خوارزميات الفرز (Sorting Algorithms).
الخوارزميات التكرارية (Iterative Algorithms).
الخوارزميات العودية (Recursive Algorithms).
خوارزميات الرسوم البيانية (Graph Algorithms).
خوارزميات البرمجة الديناميكية (Dynamic Programming).
الخوارزميات الجشعة (Greedy Algorithms).
خوارزميات التشفير (Cryptographic Algorithms).
وكل نوع منها يُستخدم لحل نوع معين من المشكلات.
━━━━━━━━━━━━━━━━━━━
أهم النقاط التي يجب تذكرها
الخوارزمية هي مجموعة خطوات مرتبة ومنطقية لحل مشكلة.
الخوارزمية تسبق كتابة الكود البرمجي.
يمكن تنفيذ الخوارزمية بأي لغة برمجة.
جودة البرنامج تعتمد بشكل كبير على جودة الخوارزمية.
قد توجد عدة خوارزميات لحل المشكلة نفسها، لكن تختلف في الكفاءة.
تعلم الخوارزميات يعني تعلم طريقة التفكير، وليس حفظ الأكواد.
━━━━━━━━━━━━━━━━━━━
الخلاصة
الخوارزمية (Algorithm) هي الأساس الذي تُبنى عليه جميع البرامج. فهي تمثل طريقة التفكير المنطقية لحل المشكلات، وتحدد الخطوات التي يجب تنفيذها للوصول إلى النتيجة الصحيحة قبل كتابة أي سطر برمجي.
ويمكن تلخيص الدرس بجملة واحدة:
المبرمج المحترف لا يبدأ بكتابة الكود، بل يبدأ بتصميم خوارزمية صحيحة، لأن الكود يمكن تغييره، أما التفكير الصحيح فهو أساس بناء أي برنامج ناجح.
#خوارزميات_من_الصفر
❤2❤🔥1💯1
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) بالتفصيل، وسنتعرف على جميع الرموز المستخدمة فيه، ومعنى كل رمز، وكيفية رسم مخطط انسيابي صحيح لأي خوارزمية.
#خوارزميات_من_الصفر