التخطي إلى المحتوى
ماهي-الخوارزميات-800x573 ماهي الخوارزمیات في البرمجة؟

الخوارزمیات (Algorithm) ھي طریقة منطقیة في التفكیر نستخدمھا من أجل الوصول إلى حل وضعیة معینة عبر عدد محدد من الخطوات المنطقیة المترابطة فیما بینھا.

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

وكان الخوارزمي رحمه الله نابغًا في علوم الحساب والفلك والجغرافیا وھو مؤسس علم الجبر ومؤسس الخوارزمیات، وله العدید من الإنجازات العلمیة العظیمة.

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

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

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

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

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

ويمكن تلخیص الفكرة في الشكل التالي:

المراحل-التي-تمر-منها-صناعة-البرامج-300x202 ماهي الخوارزمیات في البرمجة؟

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

  1. مجموعة دقيقة من القواعد والتعليمات يفهمها الجميع.
  2. تطبق على معطيات قابلة للتغيير.
  3. تعطي نتيجة.
  4. مجموعة منتهية من التعليمات.
  5. تعرف مجال متحولات الدخل.
  6. يجب أن تكون فعالة، أي زمن التنفيذ أقل من حد معين.

قواعد كتابة الخوارزميات

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

  • التكرار Looping

عند حل بعض المشاكل لا بد من إعادة نفس تسلسل الخطوات عدد من المرات. مثال لحساب 2 أس 50.

  • التفرع Branching

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

  • الاختيار Selection

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

فائدة هذة الخاصية تظهر خاصة في ترتيب اعداد بطريقة تنازلية او العكس.

  • التتابع Sequence

تتابع الأوامر حيث ينفذها جهاز الحاسوب حسب الترتيب.

بنية كتابة الخوارزميات؟

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

وأولى ھذه المفاھیم أن كل خوارزمیة لھا بدایة ولھا نھایة، وبین ھذین الطرفین نكتب محتوى الخوارزمیة الذي یؤدي إلى الحصول على النتیجة المتوخاة.

لذلك وجب وضع خطوات أیة خوارزمیة بین الأمرین التالیین:

البدایة

//ھنا یكتب محتوى الخوارزمیة

النھایة

BEGIN

//Program Instructions

END

مثال:

نقول لك على سبيل المثال: أكتب برنامج يطبع جملة “Hello World” عندما تقوم بتشغيله. بعدها ستجد النتيجة التي نريد الحصول عليها عند تشغيل البرنامج.

Algorithm: print

BEGIN

print (“Hello World”);

END

تطبيق الخوارزمیة المبنية في الأعلى على لغة الجافا:

package myalgorithm;

public class MyAlgorithm {

public static void main (String[] args) {

System.out.print(“Hello world”);

}}

الإعلان عن المتغيرات في الخوارزمیات

الإعلان عن متغیر یعني حجز مكان في الذاكرة من أجل تخزین قیمة معینة قابلة للتغیر في زمن التنفیذ Runtime (المقصود بزمن التنفیذ الوقت الذي یكون البرنامج في شغالًا)، ویكون بھذا الشكل:

[نوع البيانات] اسم المتغير;
[DATA_TYPE] VariableName ;

في الجزء الخاص بالكلمة [نوع البیانات] نضع نوع القیمة المراد تخزینھا في المتغیر مثلًا: أرقام، حروف، نصوص.

النص ھو مجموعة حروف وأرقام (وقت أو تاریخ أو ھما معًا)، نوع منطقي  وهو الذي یقبل قیمتین متعارضتین وھما: صحیح أو خطأ، وغيرها من أنواع البيانات.

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

 

Int Number1 ; //Declare Integer Variable

String Text1 ; //Declare String Variable

Char Char1 ; //Declare Char Variable

Date Date1 ; //Declare Date Variable

Boolean Bool1 ; //Declare Boolean Variable

في المثال أعلاه قمنا بالإعلان عن عدة متغیرات، لكننا لم نعطھا قیما بدئیة، بمعنى أن أماكنھذه المتغیرات في الذاكرة ما تزال فارغة (null) ویلزمنا إعطاؤھا قیمًا لكي نستخدمھا.

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

المعاملات في الخوارزمیات

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

الروابط الحسابیة أو الریاضیة :

المعاملات دوره
+ الجمع
الطرح
* الجداء
/ القسمة
\ القسمة الصحيحة الطبيعية
% باقي القسمة
^ القوة

الروابط الظاھرة أعلاه ھي رموز نستخدمھا حینما نود القیام بعملیة حسابیة على قیمتین أو أكثر، وھذه أمثلة على استخدام الروابط أعلاه:

BEGIN
Int First_Number, Second_Number ;
First_Number ← 25 ;
Second_Number ← 5 ;
استخدام الروابط لحساب قیم المتغیرین السابقین//
الجمع//
Int Sum ← First_Number + Second_Number ;
الطرح//
Int Substract ← First_Number – Second_Number ;
الضرب//
Int Multiplication ← First_Number * Second_Number ;
القسمة//
Int Division ← First_Number / Second_Number ;
Powerالقوة //
Int Power ← First_Number ^ Second_Number ;
Moduloباقي القسمة //
Int Modulo ← First_Number % Second_Number ;
END

المتغیر الجمع یقوم بجمع قیمتي المتغیرین الرقم_الأول و الرقم_الثاني من خلال استخدام الرابط +، أي أن قیمته ستكون ھي 5 + 25 أي 30.

المتغیر الطرح یقوم بطرح قیمة المتغیر الرقم_الأول من قیمة المتغیر الرقم_الثاني عبر استخدام علامة ناقص – ، أي أن قیمته ستكون ھي 5 – 25 أي 20. وهكذا على باقي العمليات…

 

التعليقات

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *