هل تعلم الخوارزميات اساسي لتعلم البرمجة ؟

هل تعلم الخوارزميات اساسي لتعلم البرمجة ؟

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

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

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

ما هي البرمجة؟

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

ولكي تمتلك القدرة على التحكم بالحاسوب يجب عليك تعلم إحدى لغات البرمجة. بعد أن تعرفنا على معنى كل من الخوارزمية ولغة البرمجة ...

لماذا يجب تعلم الخوارزميات؟

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

فإذا أخذنا مثال توضيحي عن طريقة عمل الحاسوب:

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

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

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

فهي الأساس الذي يجب أن تبدأ به عند تعلمك البرمجة.

-تتشابه الخوارزميات مع لغات البرمجة بالسطور البرمجية مع التذكير أن الخوارزمية لا يمكن اعتباراها على أنها لغة برمجة, فهي تعطيك المبدأ و تسهل فهم لغة البرمجة.

إذاً وباختصار:

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

كمثال بسيط على الخوارزمية:

اذا اردنا تصميم برنامج يقوم بحساب معدل طالب:

نحن بحاجة الى مجموعة من الخطوات:

1- ادخال علامات الطالب في المواد الدراسية

2- حساب مجموع درجات الطالب في جميع المواد الدراسية

3- إيجاد المعدل أي قسمة المجموع على عدد المواد

الخوارزمية تقوم بتحديد فيما إذا كان الطالب ناجح ام لا

إذا كان المعدل اقل من 50 فالطالب راسب

كان أكبر من 50 فالطالب ناجح

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

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

سنستعرض الآن أشهر الخوارزميات مع أمثلة عن طريقة تطبيق لغة البرمجة على الخوارزمية:

خوارزمية الترتيب Sort Algorithms

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

من أشهر الخوارزميات التي تندرج تحت هذا النوع هي :

Merge Sort

Quick Sort

Heap Sort

Bubble Sort

مثال لخوارزمية الترتيب بالاختيار:

خوارزمية الترتيب بالإختيار بلغة الجافا

Search Algorithms

خوارزمية البحث والتي تقدم طريقة التفكير المنطقي للمساعدة عند البحث عن عنصر معين ضمن مجموعة عناصر

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

وبعدها يتم وضع مؤشر فهرس في وسط المصفوفة, لتبدأ عملية المقارنة بدءاً من منتصف المصفوفة للبحث عن تطابق,

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

حساب أفضل واسوأ حالة لخوارزمية البحث الثنائي

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

الكود التقريبي لخوارزمية البحث الثنائي Binary Search Pseudo Code

خوارزمية البحث الثنائي بلغة الجافا:

Depth/Breadth First Search

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

Hashing

أشهر الخوارزميات المستخدمة في ايجاد عنصر ما عن طريق المفتاح الخاص به Key/Value pair

يعرف أيضا ًباسم القاموس أو Dictionary حيث يقوم بربط كل قيمه يراد حفظها بمفتاح معين

لذلك عند البحث عن قيمه معينه يتوجب عليك استخدام المفتاح

تعتبر هذه الخوارزمية أسرع بكثير من Sort + Search لإيجاد عنصر ما,

من أهم التطبيقات التي يتم استخدامها بها:

ضمن الراوتر لتسجيل العناوين المنطقية .

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

Dynamic Programming

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

حيث نقوم بحل المشاكل الصغيرة أولاً ليسهل علينا حل الكبيرة منها.

مثال :

في حين تمّ سؤالك عن مجموع 1+1+1

ستعدها وتقول 3

ولكن إذا قلنا لك اضف واحد ماذا يكون العدد؟ سكون جوابك مباشرةً 4

بدون العد مره أخرى كيف فعلتها ؟

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

ال Dynamic Programming تقوم بنفس الطريقة لحل المشكلات الكبيرة.

Exponentiation by squaring

إذا اردت حساب 2^15 كل ما ستفعله هو ان تقوم بعمل loop ل 15 مره لإيجاد الحل, لكن هذه الخوارزمية تستخدم لإيجاد الحل لرقم مرفوع لقوى كبيره في وقت صغير جداً.

String Matching and Parsing

واحده من اهم الخوارزميات تستخدم للبحث عن مقطع معين في نص كبير,

فعندما تستخدم Ctrl +F فانك تقوم بالبحث ضمن نص ضخم في الملف باستخدام هذه الخوارزمية

مع الملاحظة أنَّ هذه الخوارزمية تستخدم أيضا خوارزمية ال Hashing لتسريع عمليه البحث .

Primality Testing Algorithms

تستخدم لتحديد إذا ما كان رقم معين أولي ام لا

من اهم تطبيقاتها:

التشفير

تستخدم أيضا في ال Hashing

في النهاية ...

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