احتاج مساعده بسيطة

السلام عليكم ورحمه الله وبركاته

انا متخصصه كمبيوتر ساينس في السنة الثالثة, واواجه مشكلة في كتابه الأكواد البرمجية..

حتى الأن تعلمت ثلاثة لغات بايثون جافا وسي بلاس بلاس

لكن مشكلتي ليست باللغة بل بطريقة بناء أو كتابة أساس الكود نفسه, كيف يمكنني تطوير هذه المهارة؟

وشكرا لكم !


أي لغة برمجية أنشئت فهي أنشئت لبناء طريق حلّ للمشاكل. أي أنّ مرحلة الكتابة البرمجية (استخدام لغة البرمجة) يجب أن تسبقها مرحلة مهمّة جدّاً وهي معرفة المشكلة التي تواجهينها وطريقة حلّها. فلا أحد يستطيع كتابة كود لحلّ مشكلة لا يعرفها أو يجهل بعض معطياتها ونتائجها.

مثلاً: تخيّلي تريدين جمع أرقام من مصفوفة بحيث يتم جمع الأرقام الموجبة فقط. كيف نستطيع القيام بذلك؟

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

ثانياً نحن لن نجمع أي رقم دون التحقق من أنه موجب، فداخل حلقة الfor نشترط للجمع أن يكون العدد موجباً.

بعد هذا التفكير البسيط يمكنك كتابة الكود بسهولة جدّاً، ربّما هذا المثال يمكن كتابته دون تخطيط مسبق لطريقة الحل لبساطته، لكن ماذا لو كان معنا تمرين كالآتي:

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

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

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

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