Article image

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

اكتشف مفهوم الخوارزميات وأساليب تعلمها بفعالية وسهولة

Author image

الثلاثاء، أكتوبر 22، 2024

البرمجة

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

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

إليك بعض نقاط المقالة:

  1. ما هي الخوارزميات
  2. أهمية التخطيط بالخوارزميات
  3. تاريخ الخوارزميات
  4. أنواع الخوارزميات
  5. كيف أتعلم الخوارزميات
  6. الخاتمة

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

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

 

 

أهمية التخطيط بالخوارزميات

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

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

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

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

  • توفير الوقت والموارد: الخوارزميات تساعد أيضًا في تحسين جودة الكود البرمجي، حيث يمكن أن يؤدي كود معين نفس الوظيفة بشكل أسرع وأقل استهلاكًا للموارد مقارنة بكود آخر.

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

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

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

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

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

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

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

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

  • الشكل البيضاوي: يمثل نقطة البداية والنهاية للمخطط. عند بداية البرنامج، نكتب "ابدأ" داخل شكل بيضاوي، وعند نهايته، نكتب "انتهى" أيضًا داخل الشكل البيضاوي.

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

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

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

  • الشكل المعين: يدل على الشرطية، حيث يُظهر احتمال وجود قيمتين فقط، وهما "نعم" أو "لا" (True, False). عندما تكون القيمة أقل من 6، يقوم البرنامج بطباعة المتغير i، ثم يزيد قيمته بمقدار 2، ومن ثم يعود إلى الشرط.

 

 

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

الترتيب (Sorting)

الترتيب هو مجموعة من الخوارزميات التي تهدف إلى تنظيم القيم داخل مخزن ما (مثل قائمة أو مصفوفة) من الأرقام. تختلف كل خوارزمية عن غيرها في عدة عوامل، منها:

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

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

ملاحظة: يمكن تقييم كفاءة الخوارزمية باستخدام عامل يُعرف بـ Big O Notation، الذي يُستخدم لمقارنة أداء الخوارزميات المختلفة.

 

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

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

تستخدم الشجرة الثنائية أيضًا كشكل أساسي في خوارزمية مهمة أخرى تُعرف بالتكرار (Recursion).

 

التكرار (Recursion)

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

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

 

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

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

تعتمد هذه الخاصية على نمط برمجة يعرف بـ OOP (البرمجة كائنية التوجه)، وهو نوع متقدم يعتمد بشكل كبير على الأساسيات الثلاثة للبرمجة:

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

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

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

تعلم الخوارزميات وتراكيب البيانات هو أمر حيوي لكل مبرمج، حيث يعتبران أساسيات البرمجة وتطوير البرمجيات. إليك خطوات لتعلم الخوارزميات بشكل فعال:

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

  1. الموارد التعليمية: هناك العديد من المصادر التعليمية التي يمكن أن تساعدك:

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

    FCIH جامعة حلوان: تقدم شرحًا للـ Data Structure.

    عادل نسيم: لديه محتوى مفيد في Data Structure.

    قناة KMR: تقدم شروحات للـ Algorithms.

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

 

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

  2. التطبيق العملي: لا تكتفي بالمشاهدة أو القراءة فقط، بل ابدأ في كتابة الكود وتطبيق الخوارزميات بنفسك. حاول حل مسائل برمجية من مواقع مثل LeetCode أو HackerRank.

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

  4. ممارسة مستمرة: قم بتخصيص وقت يومي أو أسبوعي لممارسة البرمجة وتطبيق الخوارزميات. كلما زادت ممارستك، زادت مهارتك.

  5. المشاركة في المجتمعات: انضم إلى مجتمعات برمجية عبر الإنترنت مثل Stack Overflow أو Reddit حيث يمكنك طرح الأسئلة ومشاركة معرفتك مع الآخرين.

  6. تحليل كفاءة الخوارزميات: تعلم كيف تقيم كفاءة الخوارزميات باستخدام Big O Notation. هذا سيساعدك على اختيار الخوارزمية المناسبة لكل حالة بناءً على الأداء.

 

 

وفي الختام ...

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

عدد المشاهدات : 917

هل أعجبتك المقالة؟ إضغط على زر "نسخ الرابط" لنسخ رابط المقالة.


أو شاركها مع أصدقائك على منصات التواصل الإجتماعي.

Author image
Abdelrahman Saleh Hussainy

الثلاثاء، أكتوبر 22، 2024

Card image cap

إذا كنت تفكر في دراسة الشبكات، فابدأ من هنا لتعلم الأساسيات والتقنيات

إقرأ المقالة
Author image
Abdelrahman Saleh Hussainy

الثلاثاء، أكتوبر 22، 2024

Card image cap

اكتشف أحد أخطر الفيروسات في العالم .. معلومات شاملة حوله في عطاء

إقرأ المقالة
Author image
Abdelrahman Saleh Hussainy

السبت، أكتوبر 19، 2024

Card image cap

ما هو نظام كالي لينكس، وما الذي يجعله كنزًا ومخبأً للمخترقين؟

إقرأ المقالة
Author image
Abdelrahman Saleh Hussainy

الثلاثاء، أكتوبر 22، 2024

Card image cap

هل لديك فكرة عن مفهوم السيرفر وآلية عمله؟

إقرأ المقالة
Author image
Abdelrahman Saleh Hussainy

الثلاثاء، أكتوبر 22، 2024

Card image cap

اكتشف مفهوم الخوارزميات وأساليب تعلمها بفعالية وسهولة

إقرأ المقالة
Author image