كيف أفهم البرمجة؟

AHMED ASHOUR
0

سوف اعيد صياغة سؤالك لكيف امتلك الفكر البرمجي ؟

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

الفكر الخوارزمي هو المطلوب اي إتقان انشاء خوارزمية لحل مشكلة معينة.

عندما بدأت بتعلم البرمجة بدأت بمتابعة كورس java ع اليوتيوب كنت حينها افهم ما يتم شرحه وكنت افهم ال concepts التي كان يتم شرحها بدون مشاكل.

شاهدت الكورس تقريبا قبل بدأ دراستي في مجال علوم الكمبيوتر.

ولكن انصدمت واصابني اليأس عندما تلقيت اول وظيفة برمجية في الجامعة وكان المفروض ان احل الوظيفة بلغة جافا، لأنني لم أستطع أن اربط ما تعلمته في كورس لغة java مع ما يجب ان احله.

امتلاكك الفكر البرمجي يساعدك من ربط ال dots مع بعضها البعض وال dots يمكن اعتبارها المفاهيم البرمجية للغة برمجية معينة.

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



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

الإجابة هي تعلم الخوارزميات.

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

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

مثال:

الطباخ يقوم باستخدام مقادير معينة لإنشاء طعام لذيذ.

في هذه الحالة يمكن اعتبار المقادير هي ال concepts اللي نتعلمها في لغة البرمجة….معرفة مذاق كل مقدار من المقادير لا يعني اننا نجيد دمج هذه المقادير لإنشاء وجبة غذائية لذيذة.

كذلك معرفة ال concepts للغة برمجية معينة لا يعني اننا تسطيع معرفة متى نستخدم هذه ال concepts او كيف نستخدمهم او حتى كيف نربطهم مع بعض لحل وظيفة برمجية معينة.

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

مثال 

لنقل لدينا array ولنطلق عليها اسم nums ونريد أن نعرف ما هو اكبر رقم في هذه المصفوفة. [8,4,2,6,6,5,12,2,1]

كيف نبدأ:

١. نقوم بكتابة pseudocode
Pseudocod
دعنا نفهم ماذا حصل…

اولا:

اول شئ يجب ان فكر به ماذا الغرض من الكود ..الكود يرجع قيمة الرقم الأكبر في المصفوفة ….ولكن كيف نعرف القيمة الاكبر وكيف نقوم بتخزينها؟

سؤال منطقي…سوف نقوم بتخزينها في متغير نطلق عليه max

و max هو متغير يخزن القيمة الكبرى في المصفوفة

بما اننا بعد لا نعرف القيمة الكبرى سوف اقوم بإسناد القيمة الأولى في المصفوفة للمتغير max
ثانيا:

يجب ان ازور كل القيم الموجودة لمعرفة القيمة الكبرى لذلك سوف اقوم باستخدام for loop
ثالثا:

ماذا سوف نفعل بعدها ؟

طبعا نريد أن نقارن القيم انا امتلك القيمة الأولى التي أقارن معها وهي max ولكن كيف احصل ع القيمة الأخرى؟

هي ببساطة العنصر الثاني في المصفوفة لان العنصر الاول قمت بإسناده المتغير max

جيد جدا …الان لدي قيمتين استطيع ان اقارن بينهما.

يجب ان نقوم بالتأكد اذا كانت القيمة التي يحتويها المتغير max والتي هي 8 هي أكبر من القيمة الموجودة في العنصر الثاني في المصفوفة والتي هي 4

سوف ابدا الان بالمقارنة بين القيمة التي يحتويها المتغير max مع القيم الاخرى في المصفوفة.

4,2,6,6,6 هذه القيم جميعها أصغر من 8 لذلك قيمة ال max لن تتغير وسوف تبقى كما هي.

ولكن عندما أقارن 8 مع القيمة 12 قيمة ال max يجب ان تتغير لان الأن هنالك شئ تغير وهو اننا وجدنا قيمة اكبر من 8 وهي القيمة 12 لذلك يجب ان اعرف كيف يجب أن اغير ال max عندما اقارنه مع 12 اي عندما اقارنه مع قيمة اكبر منه.

لذلك يجب ان اضع شرط لاقوم بتغير قيمة المتغير max عندما يكون هنالك قيمة اكبر منه مثل حالة القيمة 12
بعدها سوف أقارن قيمة max والتي هي 12 مع 2 و 1 وفي كلتا الحالتين قيمة max هي أكبر من 2 و 1 وفي كلتا الحالتين الشرط لن يتحقق.

في النهاية نجد ان القيمة الكبرى هي 12

خلاصة:

في النهاية يمكن القول ان معرفتي ل if و for لن تساعدني في حل المشكلة اذا لم أكن اعرف بالأساس كيفية الحل لإيجاد القيمة الكبرى.

الجوهر هو مقارنة القيم ومعرفة كيفية المقارنة ومعرفة متى يجب ان اغير قيمة max ولماذا يجب ان اغير قيمة max عند تحقيق شرط معين.

اما استخدام for و if يأتي بعد إدراك طريق الحل لاستخدامهم كادوات مساعدة.

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

لاحظ انا لم اهتم باي لغة لانه لا يهم ما يهم فقط هو كيفية ايجادي للحل.

ما يجب علي فعله بعد ذلك هو فقط معرفة ال syntax للغة البرمجة التي اود كتابة الخوارزمية بها وببحث صغير ع Google يمكن أن اجد ال syntax الصحيح.

انا اعرف ان هذا مثال بسيط جدا جدا جدا ولكن اردت ان اوضح عملية التفكير البرمجي.

نصيحة بسيطة:

برأيي افضل خطوة للمبتدئين هي متابعة كورس خوارزميات بالإضافة لتطبيق هذه الخوارزميات في لغة برمجية معينة


البرمجه منطق واوامر تنفذ هذا المنطق

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

مثلا لديك مصفوفه فيها الارقام

[1, 2 ,3, 4,5, 6, 7 ,10, 101, 1000, 555, 8 ,0]

لو اخبرتك اعطني اكبر رقم في المصفوفه

الذي تقوم به كإنسان منطقي هو البدء من احد الطرفين ولنفرض انك بدأت من اليمين تخذ الرقم 1 وتحفظه في ذاكرتك ثم تأخذ الرقم الثاني وهو 2 وتجده اكبر من الرقم السابقه فتلغي حفظ 1 وتحفظ 2 وتستمر على هذه الطريقه وبعد المرور على جميع العناصر تجد ان أكبر رقم هو 1000

في البرمجه تطبق نفس العمليه المنطقيه

تبني تكرار بعدد العناصر وتحتفظ بأول رقم وتمر خلال كل عنصر المصفوفه وتقارنه واذا كان اكبر تضعه مكان القديم

ولو اخذنا هذا الكود البرمجي بلغة بايثون فإنه يقدم تفصيل هذه العمليه
فتحتاح الى معرفة طريقه عمل مصفوفه والمرور على عناصرها وعمل التكرار والمقارنه

المسأله بسيطه اذا فكرت بها من منطلق منطقي

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

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

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

ليست هناك تعليقات:

إرسال تعليق

Ad Space
Ad Space