Menu Close

تعرف على ما هي الخوارزميات وكيفية تعلمها

هل تعرف ما هي الخوارزميات..أو هندسة البرامج؟

أحد أفضل مصادر فهم الخوارزميات.. هنا فى كوكب المعرفة

كتب: عبدالرحمن زين

لكي تقوم بكتابة أي كود برمجي لتقوم بتحويله بعد ذلك إلى برنامج يعمل على أي جهاز.. تحتاج إلى تخطيط لوظيفة البرنامج ومن ثم تخطيط وظائف هذا البرنامج.

من أهم الطرق بناء برنامج احترافي سليم وخالي من العيوب والأخطاء.. هو التخطيط السليم للبرنامج قبل البدء في انشائه على برامج كتابة الأكواد.

التخطيط لهذا البرنامج يتم فيما يعرف بالخوارزميات Algorithms.

في هذه المقالة، سوف نتعرف على الخوارزميات عن قرب أكثر ونبين مدى أهميتها لكاتب أي برنامج، كما سنتعرف على مصادر لتعلم هذه الخوارزميات بشكل احترافي من الصفر.

ما هي الخوارزميات
ما هي الخوارزميات

انضم لكوكب المعرفة

بعض النقاط التي سنتحدث عنها:

  1. ما هي الخوارزميات
  2. تاريخ الخوارزميات
  3. أنواع الخوارزميات
  4. مصادر تعلم الخوارزميات

ما هي الخوارزميات

الخوارزميات هي المخطط الذي يسبق كتابة الكود البرمجي الذي منه يتم انشاء البرنامج أو الموقع أو الشبكة.

لكي تقوم ببناء منزل مثلا، تحتاج إلى تخطيط لهذا المنزل.. من ناحية مكانه، طوله، عرضه، ارتفاعه، عدد النوافذ، أماكنها، وغير ذلك.

بدون هذا التخطيط لن يتم بناء هذا المنزل بشكل جيد أبدا، فسوف تظهر به بعض العيوب والأخطاء من ناحية البناء نفسه أو تنسيق المنزل، لذلك كان يجب أولا رسم تخطيطي للمنزل قبل بنائه وبكامل أبعاده.

Businessman drawing flowcharts on chalkboard.

هذا ما يحدث بالضبط لأي كود برمجي، فقبل الشروع في كتابة الأوامر البرمجية لبناء البرنامج أو الموقع.. نحتاج إلى تخطيط مسبق ودقيق لكل ما يجب على هذا البرنامج أدائه، وبذلك نكون قد تجنبنا الكثير من المشاكل منها:

التيه

بعض المبرمجين إذا قام بكتابة الأوامر البرمجية، يجد أنه قد أصابه التيه في منتصف الطريق ولا يعرف ما الذي يجب عليه كتابته أو الفكرة المطلوبه، لذلك يأخذ وقتا أطول بكثير من مبرمج خطط للبرنامج قبل كتابته.

عدم صلاحية التطوير

عند تخطيطك للبرنامج منذ البداية.. تكون قد قسمت كل الوظائف في أجزاء معينة أنت تعرف مكانها ووظيفة كل جزء، فإذا أردت تطوير وظيفة معينة فتستطيع بسهولة وذلك لأنك ستذهب إلى الجزء المطلوب وتقوم بتغيير أوامره.

في حالة ما إن لم تقم بتجهيز نموذج قبل كتابة الأوامر ستلاحظ أنك لا تعرف أين الجزء الذي تريد تطويره لأنه ستدمجه مع غيره وأنت لا تعرف.

الفريق غير مجدي

تخطيط البرنامج قبل كتابته أساسي في عمل أي فريق حتى يستطيع أعضاء الفريق معرفة أدوارهم بسهولة وتكون أدوارا مركبة على بعضها بحيث عند تجميعها نحصل على برنامج جيد.

عدم التخطيط للبرنامج منذ البداية يجعل الفريق لا يعرف ماذا يفعل وكيف يتم دمج الأجزاء مع بعضها في المرحلة الأخيرة، وظهور الكثير من الأخطاء ومن الممكن أن تكون أخطاء لا حل لها فيفشل الفريق في أداء مهمته.

هدر الوقت وموارد الجهاز

الخوارزميات لا تعني فقط تخطيط مسبق للبرنامج.. وإنما أيضا تخطيط لطريقة أداء الوظيفة نفسها داخل البرنامج، فربما كود برمجي يؤدي وظيفة معينة في 10 ثواني وكود برمجي آخر يؤدي نفس الوظيفة ولكن في 3 ثواني.

فالخوارزميات تساعدنا في تطوير جودة الكود البرمجي لتوفير الوقت والجهد والموارد.

لذلك، وجب علينا التخطيط أولا باستخدام الخوارزميات سواء داخل الأوامر البرمجية أو قبل الشروع فيها.

تاريخ الخوارزميات

مصطلح الخوارزميات مشتق من اسم العالم المسلم “محمد بن موسى الخوارزمي” المولود في مدينة خوارزم بإيران، عالم رياضيات من القرن التاسع. والاسم اللاتيني هو Algoritmi ويعني “نظام الأرقام العشري” وقد استخدم في هذا المعنى لقرون.

ظهرت الفكرة الحديثة للخوارزميات في اللغة الانجليزية في القرن التاسع عشر ، وأصبحت أكثر شيوعًا منذ 1950، بسبب ظهور أول أجهزة كمبيوتر متوفرة في الأسواق.

ويعتبر هذا العالم هو أول من عرف الصفر، ووضع الأرقام العربية الأصلية وليست الهندية المستعملة حاليا، وبدون علمه لما تم اختراع الحواسيب ولما استطعنا استنتاج علوم التفكير المنطقي والتخطيط الصحيح.

أنواع الخوارزميات

هناك الكثير من الخوارزميات المستعملة في البرمجه ولكن لنظهر الأول مكونات المخطط المسبق وبعدها نعطي أمثلة على الخوارزميات:

كما ترى معي عزيزي القارئ.. لدينا صورة توضح تخطيط مسبق لبرنامج معين هدفه هو التأكد من قيمة متغير يدعى i هل هو أكبر من رقم 6 أم لا.

هناك بعض الأشكال في الصورة لابد من فهم وظيفتها أولا

الشكل البيضاوي

وهو شكل يوضح فقط نقطة البداية والنهاية للمخطط، بمعنى أنه عند بداية البرنامج نقول “إبدا” داخل شكل بيضاوي وعند نهاية البرنامج نقول “انتهى” أيضا داخل الشكل البيضاوي.

الأسهم

وتدل الأسهم على اتجاه العملية، فدائما تبدأ من البداية وتذهب في طريقها للنهاية فتمر ببعض الرموز الأخرى لاكتمال أداء البرنامج.

أحيانا يحتاج السهم للعودة إلى نقطة ما في البداية بما يعرف بالتكرار أو Loops وهي أحد ركائز البرمجة الثلاثة.

الشكل المستطيل

وهذا الشكل يوضح ظهور عملية حسابية داخله، على سبيل المثال في الصورة.. كل مرة يضيف قيمة 1 على المتغير i فهي عملية رياضية.

الشكل متوازي الأضلاع

يوضح هذا الشكل عملية اظهار نتائج معينة أو تعريف متغيرات جديدة، على سبيل المثال في الصورة يعطي للبرنامج أمل بطباعة “ظهور نتائج أو قيم” المتغير i في كل مرة يتم تنفيذ شرط ما.

الشكل المعين

وهذا يدل على الشرطية، بحيث أنه يحتمل قيمتين فقط وهي نعم أم لا أو True, False وذلك عندما تكون القيمة أقل من 6 يقوم بطباقة المتغير i ومن ثم زيادة قيمة 2 على المتغير ومن ثم العودة مرة أخرى إلى الشرط.

فأي برنامج مهما كان حجمة، لابد بأن يمر بهذه الخطوات جميعا حتى يتم تخطيطه بشكل احترافي ومتقن.

والآن هي بنا نتعرف على بعض الخوارزميات المهمة في عالم البرمجة:

الترتيب Sorting

وهو ببساطة مجموعة من الخوارزميات تهدف إلى ترتيب القيم داخل مخزن ما من الأرقام، وكل خوارزمية تختلف عن نظيرتها في عوامل عديدة منها:

  • السهولة
  • استهلاك الوقت
  • استهلاك موارد الجهاز

فكلما كانت الخوارزمية سهلة، كلما كان دليلا على استهلاكها موارد أكثر ووقت أكبر، ولكن ليس شرط في استهلاك خوارزمية معينة للوقت أكثر على أنها سيئة.. إذا لتخلى عنها المبرمجين، ولكن هناك خوارزميات تستهلك وقتا كبيرا ولا تستهلك موارد كثيرة للجهاز، وهناك من يستهلك موارد كبيرة للجهاز ولكن يختصر الوقت بشدة، لذلك يختلف استخدام الخوارزمية على حسب قدرات وامكانيات وسياسات صاحب البرنامج “لا مشكلة عنده في الوقت أم الوقت مهم، لا مشكلة في استهلاك الموارد أم الموارد محدودة” وهكذا.

ملاحظة صغيرة: يتم التعرف على تميز الخوارزمية عن غيرها بعامل يسمى BigO Notation وهو عامل يهدف إلى التعرف على كفائة الخوارزمية مقارنة بباقي الخوارزميات.

الشجرة الثنائية Binary Tree

هو نوع من الخوارزميات يهدف إلى ترتيب الأرقام بطريقة ثنائية، وذلك لتسهيل عملية أكبر وهي عملية البحث.

البحث أو Searching هي عملية لها الكثير من الخوارزميات ومن أهمها خوارزمية Binary Tree، مع بعض القيود البسيطة في هذه الخوارزمية وهو لابد من أن الأرقام مرتبة في مخازنها لكي تتم عملية البحث بدقة أكبر.

تستخدم الشجرة الثنائية Binary Tree كشكل الشجرة في خوارزمية مهمة جدا أخرى تدعى التكرار Recursion.

التكرار Recursion

هو عملية تكرار جزء كامل من الكود البرمجي بحيث في كل مرة يعود بنتائج مختلفة عن المرة التي قبلها.

تستخدم هذه الخوارزمية طريقى الشجرة الثنائية Binary Tree بحيث أنها تختصر في الوقت كثيرا وأنها في اتجاه واحد “كما قلنا في الشجرة الثنائية إما يسار وإما يمين” ولكن مشكلتها الكبرى هو استهلاكها لموارد الجهاز بشكل كبير جدا وذلك على حسب حجم جزئية الكود البرمجي الذي يتكرر.

تعتبر هذه الخوارزمية صعبة نوعا ما في بداية تعلمها، لذلك في تعلمها ننصحك بالتريث والهدوء ولا تحاول التطور فيها بسرعة.. فقط خذ وقتك في تعلمها.

القوائم المتصلة Linked Lists

هو نوع من الخوارزميات يهدف إلى اتصال المتغيرات ببعضها بترتيب ثابت.. حيث أن المتغيرات في الأصل تسبح في الذاكرة العشوائية للكمبيوتر RAM بدون ترتيب، فتمكننا هذه الخوارزمية من ترتيب متغيرات معينة مع بعضها البعض لكي نستفيد من القيم التي تحتويها.

تعتمد هذه الخاصية على برمجة معينة تدعى OOP أو البرمجة كائنية التوجه وهو نوع متقدم نسبيا حيث أنه يعتمد اعتمادا كبيرا على أساسيات البرمجة الثلاثة وهى:

  1. الجمل الخبرية : x = x + 1
  2. التكرار : for i in range(10)
  3. الشرط : if x == y

كل هذه مجرد أمثلة فقط لأساسيات البرمجة الثلاثة وتختلف طريقة التعامل معها وكتابتها من لغة برمجة إلى أخرى، ولكي تبدأ في مجال البرمجة بشكل هام لابد وأن تقرأ مقالة ما هى أهم لغات البرمجة ستفيدك كثيرا.

كيف أتعلم الخوارزميات

يعتبر كورس الخوارزميات Algorithms أو تراكيب البيانات Data Structure هما وجهان لعلمة واحدة، فكلاهما نفس المحتوى ويكملان بعضهما البعض ولكن مع اختلاف في نوع الخوارزميات المشروحه في كل كورس.

هناك العديد من المصادر التي أرشحها لك وهن:

محمد الدسوقي: شرح Data Structure

FCIH جامعة حلوان: شرح Data Structure

عادل نسيم: شرح Data Structure

قناة KMR:شرح Algorithms

فيديو شرح كامل : Algorithms

التخطيط للشيئ قبل انشائه يوفر عليك عناء ووقت كبير في المستقبل.. نصيحة خذها من شاب لديه في البرمجه ما يزيد على 7 سنوات من الخبرة.

كنت أقوم ببناء الموقع من الصفر بدون تخطيط وعندما أريد تطوير شيئا ولو يسيرا لا أستطيع فعل شيء لأني أصبت بحالة من التيه ولا اعرف من يؤدي إلى أين.

عندما دخلت سوق العمل وجدت الشركات تخطط في البداية قبل كتابة الكود البرمجي، ومن هنا عندما أريد تطوير شيء في البرنامج أعرف أين هو وأصل إليه مباشرة وبالتالي تطور مهاراتي بشكل سريع جدا.

التنظيم ثم التنظيم ثم التنظيم، لا أحد يستطيع التطور والتقدم بدون التنظيم.. التنظيم يساعدك في تخطي بعض الناس هم أعلى منك خبرة ولكن أقل منك تنظيما لذلك، لا تستهن بالتخطيط والتنظيم.

فيما سبق قدمنا كل ما هو متعلق بالخوارزميات من حيث ذكر مفهومها، وأنواعها، وكيفية التعامل معها.



دليلك لتتعلم لغة جافا من الصفر للإحتراف والربح منهادليلك لتتعلم لغة جافا من الصفر للإحتراف والربح منها

إلا أنها ظلت منتشرة حتى الآن انتشاراً  واسعاً ولكن أغلب البشر لا يعرفون عنها شيئ،  ويمكن استخدامها الآن باعتبارها منصة في حد ذاتها، بالإضافة أن لها عدة استخدامات من ضمنهم: تطوير تطبيقات أجهزة الحاسوب والأجهزة المحمولة ومعالجة البيانات الضخمة وصناعة الألعاب وإنشاء الموقع الالكترونية وغيرها من الاستخدامات التكنولوجية.

إقرأ الموضوع كاملا
دليل المبتدئين في تعليم لغة بايثون مع الكورسات والماتريالدليل المبتدئين في تعليم لغة بايثون مع الكورسات والماتريال

تشتهر لغة بايثون بعلم البيانات وكذلك تعلم الذكاء الاصطناعي وهي ايضا اللغة الأكثر استخداما لتطوير الويب وكذلك لتحليل بيانات في بايثون وتعد بايثون مثالية للعرض المرئي للبيانات كونها توفر العديد من الوظائف والوحدات النمطية. صديقي .. يمكنك الآن أن تبدأ أول خطوات تعليم لغة بايثون بمشاهدة الكورسات ثم تحميل لغة بايثون من هنا

إقرأ الموضوع كاملا
الخبراء يحذرون من مخاطر الذكاء الإصطناعي : وهذا ما قالوه بوضوحالخبراء يحذرون من مخاطر الذكاء الإصطناعي : وهذا ما قالوه بوضوح

مخاطر الذكاء الاصطناعي أصبحت حديث الساعة .. فكلنا يعلم أن الذكاء الإصطناعي أصبح من أهم المجالات العلمية التي تهدف إلى تطوير البرامج والآلات لكي تقوم بمهام تتطلب قدرات وذكاء يماثل الذكاء البشري، مثل الإبداع والتعلم والتواصل. إنه يفيد البشرية في العديد من المجالات مثل الصحة والتعليم والترفيه والصناعة، ولكنه يحمل أيضا العديد من المخاطر التي قد تهدد القيم والعدالة الإنسانية وأمن وبقاء البشرية.

إقرأ الموضوع كاملا
المستقبل المشرق للخدمات المالية: نظرة على توقعات التكنولوجيا الماليةالمستقبل المشرق للخدمات المالية: نظرة على توقعات التكنولوجيا المالية

التكنولوجيا المالية أصبحت حلا فعالا للتحديات التقليدية، كما أنها تفتح أبوابا جديدة أمام الفرص الاقتصادية، وذلك من خلال الاعتماد على التقنيات الحديثة مثل تحليل البيانات الضخمة والذكاء الاصطناعي وسلسلة الكتل. حيث يوفر هذا النموذج مرونة أكبر، بالإضافة إلى توفير التكلفة، حيث يمكن للشركات المالية استخدام موارد السحابة في تشغيل التطبيقات وتخزين البيانات وتقديم الخدمات.

إقرأ الموضوع كاملا
استخدام التكنولوجيا للتعلم: أساليب ذكية لتعلم أسرع وأسهلاستخدام التكنولوجيا للتعلم: أساليب ذكية لتعلم أسرع وأسهل

يعد استخدام التكنولوجيا في التعلم أمر هام في عصرنا هذا ولكن بما يتناسب مع الطلاب والمعلمين وكذلك البيئة التعليمية والمجتمع وذلك من أجل المنتج الذي نحصل عليه في النهاية وهو تخريج أشخاص قادرون على مواجهة تحديات العصر وقادرون على حل كل المشكلات التي تواجههم في المستقبل.

إقرأ الموضوع كاملا

مقترح لك ...