recent
أخبار ساخنة

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

تعلم الخوارزميات - Algorithms في البرمجة، من خلال شرح لـ ما هي الخوارزميات؟وماهي أنواعها؟ وما هو الهدف من تعلم الخوارزميات؟ وما هي طرق / خطوات كتابة الخوارزمية أو ما يعرف بـ (خطوات حل المشكلة - Problem Solving)
تعريف الخوارزميات في البرمجة..؟

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

- الخوارزميات : تعرف بالإنجليزية Algorithms، وتعرف أيضا بـ حل المشكلات - Problem Solving، ومن خلال هذا المسمى يمكنك تعريف الخوارزمية بأنها مجموعة من الخطوات التي يتم تطبيقها على مجموعة من البيانات المتاحة والتي تعرف بـ المدخلات - Inputs، لتحصل منها على نتيجة (حل المشكلة) وهو ما يعرف بـ المخرجات - Output، وهذه الخطوات ببساطة هي الخوارزمية، والشكل التالي يوضح الفكرة أكثر.


ما هو الهدف من تعلم الخوارزميات..؟


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


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

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

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

أمثلة على الخوارزميات في الحاسوب ...

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

ما هي طرق / خطوات كتابة الخوارزمية..؟


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

1. تعريف المشكلة - Problem Definition :

يعتبر تعريف أو تحديد المشكلة هو أولى خطوات الحل للمشكلة، حيث يتم تحديد المدخلات والمخرجات بكل دقة ووضوح على شكل متغيرات - Variables، فيتوجب عليك كمبرمج أن تقوم بتحديد المفاهيم الخاصة بالمشكلة على هيئة متغيرات ذات إسم محدد ونوع بيانات محدد، حيث يتم الإشارة إلى هذه البيانات في الخوارزمية من خلال الإسم، ونوع البيانات يحدد العمليات التي يمكن إجراؤها على البيانات، يوجد العديد من أنواع البيانات ولكن يمكنك أن تصنف البيانات في نوعين رئيسيين وهم البيانات الرقمية والبيانات النصية.
في هذه الخطوة عادة ما يتم إنشاء جدول بالبيانات - Data Table، بحيث يحتوي هذا الجدول على تصنيفين رئيسيين وهم متغيرات المدخلات - Input Variables، متغيرات النتيجة - Output Variables.
وبتطبيق هذه الخطوة على المثال، نحصل على جدول البيانات التالي
المدخلات
X الرقم الأول
Y الرقم الثاني
المخرجات
average المتوسط الحسابي للرقمين

2. تصميم / كتابة الخوارزمية - Writing an Algorithm :

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

الطريقة الكتابية - شبيهة الكود - Pseudo Code :

وفي هذه الطريقة يقوم المبرمج بكتابة خطوات حل المشكلة (الخوارزمية) في تسلسل مرقم أو غير مرقم، وتكتب كل خطوة في سطر مستقل، ويستخدم المبرمج اللغة التي يتحدث بها سواء كانت العربية أو الإنجليزية لكتابة تسلسل الخطوات، ومن أهم مميزات هذه الطريقة هي المرونة، حيث يمكن للمبرمج كتابة أفكارة على شكل خطوات باللغة الأساسية التي يستخدمها في حياته اليومية، وعادة الخوارزميات المكتوبة جيدآ بهذه الطريقة يسهل تحويلها إلى أكواد أو أوامر للكمبيوتر، والعيب الرئيسي في هذه الطريقة أنه مع كبر حجم الخوارزمية يصبح من الصعب تتبع خطواتها ومراجعتها، وأيضا من عيوب هذه الطريقة أنها لا تمكن المبرمجين الذين يتحدثون بلغة مختلفة عن التي كتبت بها الخوارزمية من فهمها. وبتطبيق هذه الطريقة على المثال نحصل على الخوارزمية التالية
Start
Read: X, Y
sum = X + Y
average = sum / 2
Write: average
End
إبدأ
إقرأ المدخلات: X, Y
sum = X + Y
average = sum / 2
إطبع المتغير: average
النهاية

المخطط الإنسيابي - خريطة التدفق - Program Flowchart :

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

المخطط الإنسيابي - خريطة التدفق - flowchart - لـ خوارزمية المتوسط الحسابي لرقمين

3. تتبع / مراجعة الخوارزمية - Tracing the Algorithm :

في هذه الخطوة نقوم بإختبار الخوارزمية التي قمنا بكتابتها، وذلك من خلال إدخال بيانات معروفة النتيجة مسبقا، خطوة بخطوة لقياس مدى صحة وكفاءة الخوارزمية، وبتطبيق ذلك على المثال سوف نستخدم الرقمين 7 و 3 حيث معروف أن المتوسط الحسابي الخاص بهم هو الرقم 5، ويتم ذلك على خطوات منفصلة كالتالي :
  1. إدخال البيانات بحيث يصبح المتغير X يساوي الرقم 7، والمتغير Y يساوي الرقم 3
  2. حساب حاصل جمع الرقمين X و Y وتخزين نتيجة الجمع في المتغير sum، لتصبح قيمته تساوي الرقم 10
  3. حساب قيمة المتوسط الحسابي وذلك بقسمة قيمة المتغير sum على العدد 2 وهو مجموع البيانات التي تم إدخالها، ثم تخزين النتيجة في المتغير average، والتي سوف تصبح 5 وهو حاصل قسمة الرقم 10 على الرقم 2
  4. طباعة قيمة المتغير average
  5. إنهاء البرنامج
عند قراءة الخطوات السابقة قد تشعر ببعض الملل وذلك لأنك كإنسان بمجرد أن يطلب منك حساب المتوسط الحسابي للرقمين 7 و 3 قد تجيب مباشرة بأن النتيجة هي 5، ولكن كما أخبرتك عن القاعدة الأساسية لتعلم الخوارزميات، فكر مثل الكمبيوتر، الكمبيوتر يجب إعطاؤه التعليمات واحدة تلو الأخرى بالترتيب وبالتفصيل حتى يتمكن من حساب أو حل أو تطبيق أي خوارزمية، وذلك هو الهدف الأساسي من تعلم الخوارزميات للبرمجة.

4. تحويل الخوارزمية إلى برنامج للحاسوب - Writing Code :

وهنا يجب عليك أن تتعلم أولا أي لغة برمجية لكي تتمكن من تحويل الخوارزمية التي قمت بتصميمها إلى برنامج، وفي هذه الخطوة سوف نستخدم لغة البرمجة السي بلس بلس ++C لكي نتمكن من تطبيق المثال :
++C
#include<iostream>
using namespace std;
main()
{
int x,y,sum,average;
cout<<"Enter x";
cin>>x;
cout<<"Enter y";
cin>>x;
sum=x+y;
average=sum/2;
cout<<"average= "<<average;
}

من أنا

Haitham AL- Namer
اسمي هيثم النمر - عمري 21 سنة - مطور برامج Desktop ومواقع Wep - خبير في برمجة الجوالات والكمبيوترات
عرض الملف الشخصي الكامل الخاص بي
google-playkhamsatmostaqltradent