الخوارزميات والبرمجة
قد يخيف مصطلح “الخوارزميات Algorithms” لبعض الاشخاص والمتحيرين هل ابدء بالخوارزميات ثم البرمجة او البرمجة ثم الخوارزميات وهنا سنضع مختصر بسيط للخوارزميات في نقاط :
- تعريف الخوارزميات بالشكل العام : هي مجموعة من الخطوات الرياضية والمنطقية والمتسلسلة اللازمة لحل مشكلة ما, وسميت الخوارزمية بهذا الاسم نسبة إلى العالم أبو جعفر محمد بن موسى الخوارزمي الذي ابتكرها في القرن التاسع الميلادي .
- الخوارزميات في البرمجة : هي طرق التحليل و التفكير التي عليك اتباعها حتى تتمكن من كتابة الكود بشكل صحيح .
- الخوارزميات ليست بلغة برمجة .
- الهدف الرئيسي من الخوارزميات في البرمجة هو التفكير بكتابة كود الصحيح قبل البدء بكتابته بأي لغة برمجة للوصول الى كود نظيف خالي من المشاكل .
الخوارزميات و المخطط الانسيابي
قد يلجأ البعض قبل كتابة الخوارزمية الى تمثيها على شكل مخطط انسيابي لتبسيط مرحلة كتابة الخوارزمية وهنا مثال بسيط (عبارة عن ادخال ثلاث ارقام وطباعة المعدل) يوضح الفرق بين الطريقتين :
الشكل التخطيطي او المخطط الانسيابي flowchart : وهو نوع من الرسم البياني لتمثيل تسلسل الخطوات او الأفعال او سلسلة من الاحداث باستخدام رموز مختلفة ترتبط كل من هذه الرموز بالاسهم لتوضيح اتجاه التدفق للعملية. اي ان في هذا التمثيل يمكن التفكير بالكود على شكل مخطط انسيابي , وهنا شرح على اشكال المخططات المستخدمة في هذا التمثيل :-
وهنا مثال لتحويل المخطط الى خورازمية والمثال عبارة عن :
- ادخال 4 قيم
- جمع القيم الاربعة وتقسيمها على 4 ووضعها في متغير الدرجة Grade
- اذا كانت Grade الدرجة اقل من 50 فاطبع رسالة ” فاشل”
- غير ذلك ( وتعني اذا كانت الدرجة لسيت اقل من 50 ) فاطبع رسالة ” ناجح “
هل الخوارزميات مهمة لتعلم البرمجة ؟
نعم قد تكون مهمة للمبتدئين قبل البدء بتعلم البرمجة , فتعلم الخوارزمية وطريقة تمثيلها وتجربة اكثر من مثال يسهل لك البداية في تعلم البرمجة عن طريق فهم الكود بصورة صحيحة , ولكن هذا لا يعني انها مهمة لدرجة انك لا تستطيع تعلم البرمجة من دونها .
هل يمكنني الاستغناء عن الخورازميات والبدء مباشرة بتعلم البرمجة ؟
نعم , ولكن حاول البدء بلغة برمجة واضحة ومبسطة كلغة بايثون ومعرفة اساسيات البرمجة ( مثل الشروط والدوال والتكرار والمتغيرات ) ومن ثم قارن اساسيات البرمجة في python مع باقي اساسيات لغات البرمجة مثل java , c++ ,javascript , kotlin ومعرفة اختلاف الكود في الاساسيات البرمجية بين الغات قبل التعمق مباشرا بلغة واحدة