لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 05/16/24 في كل الموقع
-
السلام عليكم تظهر معي هذه الرساله بينما اعمل عل تطبيق رياكت Access to fetch at 'http://127.0.0.1:8000/api/user/show' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. كيف اقوم بحلها قمت بتجربة بعض الحلول ولم تجدي2 نقاط
-
لا يختلف اثنان على أهمية تعلم أساسيات البرمجة، فالبرمجة هي مهنة الحاضر والمستقبل، وهي تعتبر أحد المهارات الأساسية في عصرنا الذي بات يعتمد على التقانة في جميع جوانبه، فضلًا عن أن البرمجة قد أصبحت مادة أساسية في المناهج الدراسية في العديد من الدول بدءًا من المراحل الابتدائية. إذا اتخذت قررًا بتعلم أساسيات البرمجة من الصفر للاحتراف فهذا بلا شك قرار صائب، فالبرمجة توفر لك الكثير من فرص العمل، وتوسع مداركك، وتعزز تفكيرك النقدي، كما أنها تكسبك القدرة على حل المشكلات التي تواجهك بكفاءة أكبر، والأمر الجيد أن البرمجة تتميز عن غيرها من المجالات بكونها متاحة للجميع، ويمكنك تعلمها بشكل ذاتي بعيدًا عن أروقة الجامعات الطويلة. نشرح في مقال اليوم أساسيات البرمجة، ونستعرض أهم الأدوات التي تحتاجها كمبرمج، ونبين مفاهيم البرمجة الأساسية التي تشترك فيها معظم لغات البرمجة، وأهم المبادئ التي يمكنك اتباعها لتبرمج كالمحترفين. ما هي البرمجة؟ البرمجة باختصار هي إعطاء التعليمات لجهاز الحاسوب لينفذها باستخدام إحدى لغات البرمجة، ويتلقى الحاسوب هذه التعليمات ويترجمها ويفهمها وينفذها، ويُطلق على تسلسل التعليمات المكتوبة باستخدام لغة برمجة والتي تنجز مهمة محددة اسم برنامج. فنحن البشر نتواصل فيما بيننا بلغاتنا الطبيعية كالعربية أو الإنجليزية، أما الحاسوب فيحتاج لاستخدام لغة برمجة خاصة للتواصل معه، وعالم لغات البرمجة شامل ومنوع فهناك المئات من لغات البرمجة حاليًا، ونشير إلى أن لغة البرمجة هي لغة وسيطة بيننا وبين الحاسوب فحتى الحاسوب لا يفهم لغة البرمجة التي نكتبها بل تُحول كل لغة نكتبها إلى لغة يفهمها الحاسوب عبر أداة تحويل وتدعى اللغة التي يفهمها الحاسوب بلغة الآلة Machine Language التي تتكون من أصفار وواحدات. قبل أن تتعلم أساسيات البرمجة: حدد وجهتك قد تكون حددت لغة البرمجة التي تريد تعلمها وتبحث عن تعلم أساسيات هذه اللغة لذا وصلت إلى هنا، أو لم تحددها بعد، ولكن عمومًا تشترك كل لغات البرمجة بأساسيات واحدة إن تعلمتها سيسهل عليك التعامل مع أي لغة برمجة. قرار تعلم أساسيات البرمجة يشبه قرار الذهاب في إجازة، فأنت لن تذهب في إجازة دون أن تحدد الوجهة التي تريد الذهاب لها، وبناء على وجهتك تحدد مسارك الذي ستسلكه وتجهز مستلزماتك. وبالتالي السؤال الذي يجب أن تطرحه قبل أن تقرر تعلم أي لغة برمجة هو ما هو هدفي النهائي من تعلم البرمجة؟ وبناء على إجابتك تحدد مسار التعلم الصحيح واللغات والأدوات التي عليك تعلمها. ركز في البداية على لغة رئيسية واحدة تتعلم بها أساسيات البرمجة، ثم سيسهل عليك تعلم لغات أخرى حسب الضرورة، حيث الأساسيات والمفاهيم واحدة ولن تختلف من لغة إلى أخرى بل ما يختلف هو طريقة كتابة كل لغة والميزات التي توفرها للمبرمج، وبعبارة أخرى، الخطوة الصعبة هي الخطوة الأولى وهي خطوة تعلم أساسيات البرمجة. وتذكر أن تعلم البرمجة يحتاج لبعض الصبر والجهد، لا سيما عند تعلم إحدى لغات البرمجة لأول مرة كما أشرنا ويحتاج إلى تطبيق أيضًا لأن التعلم النظري شيء والتطبيق شيء آخر ففيه ستواجه الكثير من المشكلات وستتعلم بها حلها وتفاديها تدريجيًا حتى تكون مبرمجًا محترفًا. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن أهمية تعلم أساسيات البرمجة تعلم أساسيات البرمجة للمبتدئين يشبه إلى حد كبير تعلم قيادة السيارة، فعندما تجلس خلف مقود السيارة لأول مرة لن تكون قادرًا على القيادة بسلاسة على الفور، بالطبع! تذكَّر كيف تبدأ آنذاك باستكشاف أجزاء السيارة كالفرامل ودواسة البنزين وناقل الحركة، ثم التعرف على المفاهيم والمصطلحات الأساسية المرتبطة بالقيادة، وتلقي الكثير من التعليمات والملاحظات النظرية حول آلية القيادة أكثر من التركيز على القيادة بحد ذاتها. وبعدها تبدأ عملية التدريب على تنفيذ أوامر بسيطة مثل تشغيل السيارة وتحريكها رويدًا رويدًا في مكان مفتوح إلى أن تزداد التعليمات تعقيدًا وتصبح قادرًا على التحكم بالسيارة وقيادتها في كافة الظروف والطرق. بنفس الطريقة ستتعلم البرمجة، حيث عليك أن تتعلم بداية أساسيات البرمجة النظرية، ثم تكتب برامج باستخدام تعليمات بسيطة، ثم تتعلم كيف تكتب التعليمات بطريقة أكثر احترافية، ومع الممارسة والتطبيق ستتمكن من احتراف البرمجة وتطوير برامج متقدمة. وقد شرح مقال كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة رحلة تعلم البرمجة بالتفصيل وقدم نصائح مهمة وأجاب على أسئلة شائعة حول تعلم البرمجة فارجع إليه للاستزدادة في هذا الموضوع. احصل على موقع إلكتروني مخصص لأعمالك أبهر زوارك بموقع احترافي ومميز بالاستعانة بأفضل خدمات تطوير وتحسين المواقع على خمسات أنشئ موقعك الآن أدوات مهمة لتعلم أساسيات البرمجة بعد أن تحدد اللغة التي ستتعلمها، تحتاج كخطوة أولى إلى إعداد بيئة التطوير لديك حتى تتمكن من كتابة شيفرة برمجية وتنفيذها كي تتواصل مع الحاسوب بتلك اللغة، والأدوات اللازمة لتعلم أساسيات البرمجة في البداية هي أداتين يحتاج إليهما كل مبرمج: محرر الشيفرة البرمجية أداة تحويل الشيفرة وتنفيذها محرر الشيفرة البرمجية تعتمد معظم لغات البرمجة على أوامر نصية، لذا ستحتاج إلى محرر أكواد لكتابتها، ومحرر الكود هو برنامج لتحرير النصوص مصمم خصيصًا لكتابة وتحرير الشيفرة المصدرية للبرامج، وتتميز بعض المحررات بأنها تتضمن ميزات تسهل كتابة الكود كتمييز الكلمات حسب بناء الجملة، ووضع مسافة بادئة لأسطر التعليمات البرمجية بشكل صحيح. ومن الأمثلة على محررات أكواد Notepad++ لنظام تشغيل ويندوز و gedit أو kate لنظام التشغيل لينكس. ملاحظة: بعض لغات البرمجة الموجهة للمبتدئين تعتمد على واجهات رسومية ولا تحتاج لمحررات نصية مثل لغة سكراتش والتي تدعى أحيانًا لغات برمجة رسومية، وللمزيد يمكنك الرجوع إلى مقال البرمجة باستخدام سكراتش. أداة تحويل الشيفرة وتنفيذها نكتب الكود المصدري عادة بلغة برمجة لا يفهمها جهاز الحاسوب مباشرة كما أشرنا، لذا يجب تثبيت برنامجًا يُحوِّل الشيفرة المصدرية للغة البرمجة بأكملها إلى لغة آلة Machine Code يفهمها الحاسوب ثم ينفذها، ويختلف هذا المُحول من لغة برمجة إلى أخرى ويُسمى إما مُصرِّف Compiler أو مُفسِّر Interpreter وبعض اللغات تحتاج إلى تصريف وآخر إلى تفسير وبعضها يحتاج إلى كلا العمليتين لتحويلها إلى لغة الآلة ثم تنفيذها. لتفهم الفرق بين المُصرِّف والمُفسِّر تخيل أن لديك وصفة مكتوبة باللغة التركية وأنت لا تعرف التركية وتريد أن تحضّرها. في هذه الحالة يمكن أن تطلب من أحدهم أن يترجم لك الوصفة بالكامل للغة العربية ويعطيها لك لتعدها متى ما أردت مستعينًا بهذه النسخة المترجمة Compiled، أو يمكنك أن تكلمه في كل مرة تريد فيها أن تحضر هذه الوصفة وتطلب منه أن يقرأها ويفسرها لك خطوة بخطوة Interpreted. بيئة التطوير المتكاملة IDE يمكنك أن تحصل على المحرر وأداة التحويل والتنفيذ على حدة وتثبتهما على جهازك، أو يمكنك بشكل بديل أن تعتمد على بيئة تطوير متكاملة IDE وهي اختصار العبارة Integrated Development Environment تتضمن كافة الأدوات اللازمة للتعامل مع لغة البرمجة. أمثلة على بيئات تطوير متكاملة: Microsoft Visual Studio NetBeans IntelliJ IDEA يمكنك في بيئة التطوير المتكاملة كتابة التعليمات البرمجية وتعديلها وتصحيحها وتحويلها ثم تنفيذها بسرعة وسهولة كل ذلك من مكان واحد، إذ توفر لك كافة الأدوات اللازمة لتكتب وتنفذ برامج بلغة معينة، كما توفر ميزات تساعدك في تطوير البرامج مثل تصحيح الأخطاء البرمجية، والإكمال التلقائي للتعليمات، وللتعرف أكثر على بيئة التطوير المتكاملة، يمكنك الرجوع إلى مقال مدخل إلى بيئة التطوير المتكاملة IDE. ملاحظة: يمكنك الاعتماد على مترجمات أو بيئات عمل برمجية متوفرة على الإنترنت، حيث توفر العديد من المنصات إمكانية كتابة وتنفيذ البرامج على متصفح الويب بدلًا من تثبيت وإعداد البرامج على الحاسوب المحلي. أساسيات البرمجة للمبتدئين تتنوع لغات البرمجة وتعدد استخداماتها إلا أنها تشترك في مجموعة من الأساسيات والمفاهيم، وتعلم هذه المفاهيم يمكّنك من التآلف من أي لغة برمجة، وإنجاز البرامج باستخدامها بمرونة أكبر، وأهم هذه الأساسيات: المتغيرات Variables الثوابت Constants أنواع البيانات Data types الكلمات المفتاحية Keywords التعليقات Comments بنى التحكم Control Structures الدوال Functions هياكل البيانات Data structure التكرار Iteration التعاود Recursion الكائنات Objects والأصناف Classes الوحدات Modules والمكتبات Libraries نشرح في الفقرات التالية كلًا من هذه الأساسيات البرمجية بمزيد من التفصيل، ونرفق بعض الأمثلة التوضيحية بلغات برمجة مختلفة. المتغيرات تستخدم المتغيرات Variables في البرمجة بشكل مشابه لاستخدامها في الرياضيات، فهي تخزن قيم البيانات من نوع محدد، ويمكن للمتغير احتواء قيمة واحدة في المرة الواحدة، فمتى ما وضعت فيه قيمة جديدة فإن القيمة السابقة المخزنة فيه سوف تحذف تلقائيًا. يمكن تشبيه المتغير بصندوق مفتوح في ذاكرة الحاسوب له اسم وعنوان خاص به، حيث يمكن إدخال القيم وإخراجها من هذا الصندوق حسب الطلب. وتسمى عملية وضع قيمة في المتغير بشكل مباشر الإدخال Input أو الإسناد Assignment أو أحيانًا الضبط Set، كما تسمى عملية الحصول على هذه القيمة وعرضها الإخراج Output أو الجلب Get. وتجدر الإشارة لأن بعض أنواع المتغيرات تكون محدودة الوصول، بمعنى أنها لا تسمح لك بالوصول المباشر لها سواء لتخزين البيانات ضمنها أو الحصول على القيم المخزنة فيها إلا عبر وسيط ويُسمى هذا الوسيط باسم ضابط setter وجالب getter على التوالي، والغرض من هذه العملية حماية المتغيرات من تعديلات غير مرغوبة كما سنوضح لاحقًا في فقرة الكائنات والأصناف التي أكثر ما تُستخدم فيها. لتعريف متغير في لغة البرمجة C++ عليك ذكر اسم المتغير ونوع البيانات التي تريد تخزينها في هذا المتغير وإسناد قيمة أولية فيه، على سبيل المثال لتعريف متغير باسم a لتخزين العدد الصحيح 10 بداخله نكتب ما يلي: int a = 10; كما يمكنك تعريف المتغير دون إسناد القيمة له في البداية وإسنادها لاحقًا بالشكل التالي: int a; a = 10; في حين لا تملك لغة بايثون أمرًا محددًا لتعريف المتغيرات، كل ما عليك هو كتابة اسم المتغير واستخدام علامة مساواة متبوعة بقيمة المتغير، وسوف تكتشف اللغة تلقائيًا نوع المتغير وحجم الذاكرة المناسب له كما يلي: a = 10 الثوابت تشير الثوابت Constants إلى قيمة أو كمية ثابتة لا نحتاج لأن نغيرها أو نعدلها أبدًا أثناء تنفيذ البرنامج، مثل سرعة الضوء، وعدد الدقائق في الساعة، والعدد Pi الذي يمثل نسبة محيط الدائرة إلى قطرها، وتسارع الجاذبية الأرضية، ومعدل نجاح الطالب وما إلى ذلك. فالثوابت البرمجية بمثابة صندوق تغلقه بإحكام بعد وضع قيمة فيه ولا يسمح لك بتغييرها في كود البرنامج، فبعد تحديد قيمة الثابت يسمح لك فقط بالوصول إلى قيمته، بخلاف المتغير الذي يمكنك الوصول إلى قيمته وإعادة تعيينها وتعديلها حسب حاجتك. لتعريف الثوابت في لغة C++ نستخدم الكلمة المفتاحية const ثم نكتب نوع البيانات واسم الثابت وقيمته كما يلي: const float PI = 3.14; const float GRAVITY = 9.8; const float SUCC_RATE = 0.5; في حين لا تميز بعض اللغات مثل لغة بايثون بين تعريف الثوابت والمتغيرات، حيث يمكنك تعريف الثوابت والتعامل معها كما تعرّف أي متغير، وتلتزم أنت بعدم تغيير قيمتها في سياق البرنامج، كما يمكنك التصريح الثوابت في ملف مختلف واستيرادها في برنامجك لتمييزها عن المتغيرات. PI = 3.14 GRAVITY = 9.8 ملاحظة: يشيع في أوساط المبرمجين تسمية الثوابت بحروف أجنبية كبيرة لتمييزها عن المتغيرات كما فعلنا في الأمثلة السابقة. أنواع البيانات أنواع البيانات Data types في لغات البرمجة هي عملية تحديد نوع وحجم القيمة التي يمكن أن تخزن في المتغير والتي يترتب عليها تحديد العمليات التي يمكن تطبيقها على هذه المتغير من طرف لغة البرمجة مثلًا السماح بتطبيق عملية الجمع والطرح على نوع الأعداد والسماح بعملية البحث والاستبدال على النصوص وهكذا. توفر لغات البرمجة العديد من أنواع البيانات مثل: الأعداد التي تنقسم إلى أعداد صحيحة integer numbers وأعداد عشرية floating point numbers، والمحارف Characters، والسلاسل النصية Strings، والقيم المنطقية Boolean …إلخ. على سبيل المثال في لغة البرمجة C++"" إذا كنت تحتاج في برنامجك إلى تخزين العمر، ستحتاج لمتغير من نوع بيانات عدد صحيح، ويمكنك تعريف هذا المتغير أو التصريح عنه باستعمال الكلمة المفتاحية int كما يلي: int age; فعندما استخدمنا الكلمة int هنا أخبرنا مترجم اللغة أن هذا المتغير مخصص لتخزين أعداد صحيحة فقط، ليحجز الحجم المناسب له في ذاكرة الحاسوب وينتظر منا إدخال قيم صحيحة فيه فقط، فإذا جربت تخزين نص أو عدد عشري فيه فستحصل على خطأ من أداة التحويل أثناء تحويل البرنامج إلى لغة الآلة وهذا ينطبق على الأمثلة الآتية أيضًا. وإذا احتجت لمتغير مخصص لتخزين قيمة عشرية مثل متوسط درجات الطالب، أو مساحة دائرة استخدم نوع البيانات float لهذا المتغير كما يلي: float avg; ولتعريف متغير مخصص لتخزين محارف مفردة يمكنك أن تستخدم نوع البيانات char كما يلي: char x; x = 'A'; أما لتخزين السلاسل النصية المكونة من عدة محارف فاستخدم نوع البيانات string كما يلي: string str = "This is a C++ string"; ولتخزين القيم المنطقية التي يمكنها أن تحتوي القيمة صواب true أو خطأ false والتي تفيد في اختبار الشروط، استخدم نوع البيانات bool كما يلي: bool con1 = false; bool con1 = true; إن التعامل مع أنواع البيانات أبسط في لغات أخرى مثل لغة بايثون، فأنت لا تحتاج لتحديد نوع بيانات للمتغير قبل استخدامه، لكون اللغة قادرة على استنباط وتعيين نوع بيانات المتغير تلقائيًا بمجرد أن تسند له قيمة ما، فبحسب نوع القيمة التي تسندها تحدد اللغة نوع البيانات المناسب له. إليك بعض الأمثلة على تعريف متغيرات من أنواع بيانات مختلفة في بايثون: v1 = "This is a Python string" #string v2 = 10 #int v3 = 10.33 #float v4 = True #bool لمزيد من المعلومات حول أنواع البيانات في لغات البرمجة، اطلع على مقال دليلك الشامل إلى أنواع البيانات. الكلمات المفتاحية تتضمن أي لغة برمجة مجموعة من الكلمات المفتاحية Keywords أو الكلمات المحجوزة Reserved Words، وهذه الكلمات لها معنى خاص ولا يمكن للمبرمج استخدامها لتعريف المتغيرات مثلًا. ولعلك انتبهت إلى قولنا كلمة مفتاحية على const وعلى int في الأمثلة السابقة في لغة C++ التي كانت كلمات محجوزة مخصصة لتعريف الثوابت البرمجية وأنواع البيانات، كما تعد الكلمتان True و False محجوزتين في بايثون لتمثيل القيمتين المنطقيتين صواب وخطأ على التوالي وقس على ذلك في أي لغة برمجة. وعليك أن تطلع على الكلمات المفتاحية ودلالة كل كلمة وطريقة استخدامها في اللغة التي تريد تعلمها ويكون عادة عددها محدود وبسيطة وقد تتكون من كلمة إنجليزية واضحة أو اختصار لها مثل الاختصار const لكلمة constants ثابت والاختصار init لكلمة integer عدد صحيح ومعرفة مما يتشكل الاختصار يُسهل عليك حفظ الكلمة خصوصًا وبما أن عددها محدود وبسيطة فلا تخف إن كانت لغتك الإنجليزية ضعيفة. التعليقات تعد التعليقات Comments من أساسيات البرمجة، والتعليقات هي عبارة عن نصوص وصفية تضاف للكود البرمجي لتسهيل فهمه وقراءته ويمكن أن تكون بأي لغة مثل اللغة العربية، وهي لا تنفذ في البرنامج حيث أن مترجم اللغة يتجاهلها ويعتبرها فراغات، لكنها مفيدة للمبرمج نفسه ليتذكر ما كتبه عند العودة للبرنامج لاحقًا، كما أنها تساعد أي شخص يقرأ الكود الذي كتبه المبرمج في فهم سير عمل البرنامج والهدف من كتابة تعليمات معينة فيه. تستخدم لغات البرمجة المختلفة أساليب مختلفة لكتابة التعليقات تنحصر عادة بالرموز الثلاثة # أو // أو /* */، على سبيل المثال في لغة C++ يمكنك كتابة التعليقات على سطر واحد بعد الرمز // وكتابة التعليقات متعددة الأسطر بين الرمزين /* */ كما يلي: /* هذا تعليق مكون من عدة أسطر */ //هذا تعليق مكون من سطر واحد أما في لغة بايثون فيمكنك كتابة التعليق أحادي السطر بعد الرمز # وكتابة التعليقات متعددة الأسطر بعد علامتي اقتباس أو ثلاث علامات اقتباس مفردة كما يلي: ''' هذا تعليق مكون من عدة أسطر ''' #هذا تعليق مكون من سطر واحد بنى التحكم تنفذ البرامج عادة بشكل متتابع من بداية الشيفرة إلى نهايتها تعليمة تلو الأخرى، لكن قد تحتاج في بعض الحالات لتغيير مسار التنفيذ وتجاوز بعض التعليمات أو تكرارها، وهنا يأتي دور بنى التحكم Control Structures التي تعتبر من أساسيات البرمجة لكونها تفيد المبرمجين في تحديد الاتجاه أو المسار الذي يجب الانتقال له بناء على عوامل معينة. بالعودة إلى مثال تعلم القيادة الذي ذكرناه بداية، تخيل أنك تسير في طريقك نحو مقر عملك، وصادفت إشارة حمراء أو اعترضتك سيارة إسعاف، ألن تحتاج عندها للتوقف لحين عودة الإشارة إلى اللون الأخضر أو التنحي لجانب الطريق لحين مرور الإسعاف ثم تتابع طريقك المعتاد. بنفس الطريقة تعمل بنى التحكم في الكود البرمجي، فهي تسمح للمبرمج بالتحكم في تدفق تنفيذ البرامج وفق حالات معينة، ومن أهم بنى التحكم البنى الشرطية if statement والبنى التكرارية loop statement. البنى الشرطية أما البنى الشرطية فتمكنك من اختبار شروط محددة قبل تنفيذ الكود البرمجي وتقوم بتنفيذه فقط عند تحقق هذه الشروط، مثلًا إذا كان لديك تعليمات برمجية تتضمن عملية قسمة، يمكنك اشتراط عدم تنفيذ هذه التعليمات عند محاولة القسمة على صفر. على سبيل المثال يقوم البرنامج التالي بلغة C++ بقسمة عددين عشريين ويختبر شرط القسمة على صفر: #include <iostream> using namespace std; int main() { float num1, num2, result; num1=18; num2=0; if (num2 == 0) { cout << "خطأ رياضي أنت تحاول القسمة على صفر"<<endl; } else { result=num1/num2; cout << "The result is "<< result << endl; } return 0; } تختبر التعليمة الشرطية if في الكود أعلاه إن كان المقسوم عليه num2 مساويًا للصفر (الذي يمكن أن يأتي من مواضع مختلفة مثل الطلب من المستخدم تزويدنا بقيمته)، وفي هذه الحالة تعرض العبارة "خطأ رياضي أنت تحاول القسمة على صفر" ولا تنفذ عملية القسمة num1/num2. الكود التالي كود مكافئ للكود السابق لكنه مكتوب بلغة بايثون: num1 = 18 num2 = 3 if num2 == 0: print("خطأ رياضي أنت تحاول القسمة على صفر") else: result = num1/num2 print(result) الأمثلة أعلاه كانت لشروط بسيطة، وستجد في لغات البرمجة أنواعًا عديدة من التعليمات الشرطية مثل if-else التي تمكنك من اختبار الشرط وعكسه، وتعليمة if المتداخلة التي تتضمن شرطًا فرعيًا داخل شرط رئيسي، وتعليمة switch التي تختبر شروط معتمدة على قيمة واحدة. كما ستتمكن من اختبار شروط مركبة من خلال المعاملات المنطقية مثل and و or و not. البنى التكرارية وأما البنى التكرارية أو حلقات التكرار فتمكنك من تكرار تنفيذ تعليمات معينة لعدد محدد أو مشروط من المرات، وتوفر على المبرمجين الكثير من الوقت في كتابة الكود. ستجد في أي لغة برمجة أنواعًا مختلفة من الحلقات مثل حلقات for التي تستخدم عندما تعرف عدد المرات التي تريد فيها تكرار التعليمات قبل التوقف، وحلقات while أو repeat التي تتشابه مع حلقات for لكنها تكرر مجموعة من التعليمات بعدد غير محدد من المرات يعتمد على استيفاء شرط معين. على سبيل المثال، إذا طلب منك أن تكتب برنامج لعرض ناتج ضرب العدد 5 بالأعداد من 1 إلى 10 فلا حاجة لأن تضرب العدد 5 في العدد 1 ثم في العدد 2 وهكذا وصولًا للعدد 10، يمكنك ببساطة كتابة حلقة تكرارية for كما في المثالين التاليين: حلقة for بلغة C++: int num=5; for (int i = 1; i < 11 ;i++) cout << num <<"X" << i << "="<< num*i << "\n"; حلقة for بلغة بايثون: num = 5 for i in range(1, 10): print(num, 'x', i, '=', num*i) الدوال الدوال Functions هي أجزاء مستقلة من الكود البرمجي لها اسم خاص بها وتشبه المصنع في عملها فتأخذ ممن يستخدمها دخلًا (إن وُجد) ثم تجري عمليات معالجة وتعيد إليه الناتج، ويدعى ما يُمرَّر إليها باسم المعاملات Parameters. تُكتب الدالة أو تعرّف مرة واحدة وتصبح بعدها قابلة لإعادة الاستخدام، حيث يمكن للمبرمج استدعاء أو مناداة الدالة في أي موضع في البرنامج مع تمرير قيم بيانات لها أو بدون، على سبيل المثال في حال أردت كتابة كود برمجي يعرض ناتج الضرب لعدد ما في الأعداد من 1 إلى 10 يمكنك تحويل الكود إلى دالة باسم displayMul وسيطها هو العدد المراد ضربه كما يلي: #include <iostream> using namespace std; // تعريف دالة لحساب نانج ضرب أي عدد في الأعداد من واحد لعشرة void displayMul(int num){ for (int i = 1; i < 11 ;i++) cout << num <<"X" << i << "="<< num*i << "\n"; } //استدعاء الدالة في البرنامج الرئيسي int main() { int num1 = 5; displayMul(num1); int num2 = 9; displayMul(num2); return 0; } عرفنا الدالة displayMul في المثال السابق بلغة C++ بكتابة نوع البيانات الذي تعيده الدالة وهو void أي لا شيء لأن الدالة تطبع القيمة ولا تعيد شيئًا، ثم اسمها ثم المعاملات الخاصة بها بين قوسين ()، ثم كتبنا التعليمات التي تقوم بها بين قوسين { }، ولاحظ أن الدالة لا تعيد شيئًا فلا يُشترط أن تأخذ أو تعيد شيئًا بل المهم أن تُنفِّذ عمليةً ما منوطة بها عند استدعائها. إليك أيضًا تعريف الدالة displayMul السابقة نفسها ولكن بلغة بايثون: def displayMul(num): for i in range(1, 10): print(num, 'x', i, '=', num*i) num = 5 displayMul(num) displayMul(9) ملاحظة: لا يمكنك استدعاء أو مناداة دالة في برنامجك إذا لم تقم بتعريفها أولًا، لأنك تحاول استخدام شيء غير موجود، لكن بعض الدوال تكون مضمنة ومعرفة مسبقًا في اللغة Built-in functions، ويمكنك استخدام هذه الدوال فورًا دون الحاجة لتعريفها بنفسك، على سبيل المثال الدالة "getline()"هي دالة جاهزة معرفة في لغة C++ تستخدم لإدخال السلاسل النصية من لوحة المفاتيح، والدالة print() هي دالة جاهزة في لغة بايثون تستخدم لطباعة قيم المتغيرات على الشاشة. هياكل البيانات هياكل البيانات Data Structures هي بنى برمجية مصممة لتضم مجموعة من البيانات أو المتغيرات، وقد تكون هياكل أولية كالأعداد الصحيحة والأعداد العشرية والمحارف كما شرحنا في أنواع البيانات، أو هياكل مركبة يمكن تشبيهها بمجموعة صناديق متلاصقة في ذاكرة الحاسوب باستطاعتها تخزين عناصر أو متغيرات متعددة من نفس نوع البيانات ويمكن لبعض هياكل البيانات أن تتضمن مزيجًا من أنواع بيانات مختلفة. فالمصفوفة Array، والقاموس Dictionary والكائن Object وغيرها أحد أنواع هياكل البيانات الشهيرة، على سبيل المثال يمكنك استخدام المصفوفات عندما تحتاج إلى تخزين مجموعة مكونة من عدة قيم لها نفس النوع في متغير واحد بدلًا من تخزين كل قيمة في متغير منفصل، ويمكنك بعدها تحديد أي عنصر من العناصر الموجودة في المصفوفة والوصول له من خلال موقعه أو فهرسه داخل هذه المصفوفة، وإليك مثال على تعريف مصفوفة لتخزين 5 أعداد صحيحة: في لغة C++: int marks[5] = {50,99,78,66,59}; في لغة بايثون: marks=[50,99,78,66,59] ملاحظة: قد تختلف أسماء هياكل البيانات من لغة برمجة إلى أخرى ففي لغة بايثون لا يُطلق عليها اسم مصفوفة array كما في لغة C++ بل اسم قائمة list حيث تختلف التسميات والمعنى واحد. هنالك العديد من هياكل البيانات التي لا يتسع المقال الحالي لذكرها، لذا ارجع إلى مقال هياكل البيانات لمزيد من التفاصيل. التكرار يعتبر مفهوم التكرار Iteration أحد أهم مفاهيم أساسيات البرمجة، وستحتاج له لاسيما عند التعامل مع هياكل بيانات مركبة في شيفراتك البرمجية مثل المصفوفات، فالتكرار يعني المرور على كل عنصر من عناصر البيانات المركبة على حدة وعلى التوالي لتنفيذ عملية أو مهام محددة عليه، وستجد أن التكرار صفة أيضًا تُسمى iterable تُطلق على أي متغير أو نوع بيانات يمكن المرور عليه وستراها غالبًا في التوثيقات. يمكنك تنفيذ التكرار في لغات البرمجة بطرق مختلفة، لكنه يعتمد بشكل أساسي على استخدام الحلقات التكرارية بأنواعها المختلفة، كما توفر بعض اللغات مكررات Iterators وهي عبارة عن دوال أو عمليات مخصصة تمكنك من المرور على جميع عناصر هياكل البيانات بطريقة منهجية وسهلة. على سبيل المثال للمرور عبر عناصر المصفوفة marks التي عرفناها في الفقرة السابقة وطباعتها في لغة C++ يمكن أن نكتب حلقة for مع استخدام متغير i يمثل تعدادًا نستخدمه كفهرس للوصول إلى كل عنصر من عناصر المصفوفة كما يلي: #include <iostream> using namespace std; int main () { int marks[5] = {50,99,78,66,59}; cout << "The marks are:"; for (int i = 0; i < 5; ++i) { cout << marks[i] << " "; } } أما في لغة بايثون يمكنك المرور عبر عناصر المصفوفة وطباعتها كما يلي: marks=[50,99,78,66,59] for m in marks: print(m) التعاود يعتبر التعاود Recursion أحد المفاهيم البرمجية الأساسية، وهو يعتمد على تقسيم المشكلات البرمجية إلى مشكلات أصغر يمكن حلها بسهولة، ويرتبط هذا المفهوم بالدوال البرمجية، حيث أن الدالة التي تكرر استدعاء نفسها حتى تصل لحالة حدية أو أساسية Base case تجعلها تتوقف عن عملية استدعاء نفسها وتعيد نتيجة معروفة عند هذه القيمة تعرف باسم الدالة التعاودية Recursive Function، وإذا لم تكن هناك حالة حدية تصل لها الدالة فهذا يعني أن الدالة ستكرر استدعاء نفسها إلى مالا نهاية. هذا الأسلوب البرمجي يصلح لحل المسائل التي تملك نمطًا هرميًا والتي يمكن حلها بسهولة عن طريق تحويلها لمسائل فرعية مشابهة أصغر. لكن في حال كان بإمكانك حل مسألة معينة عن طريق الحلقات التكرارية بسهولة فلا توجد ضرورة لاستخدام أسلوب التعاود في هذه الحالة، ولا تقلق إن لم تفهم شيئًا فقد أضفنا مثالًا مع مخطط يوضح لك المفهوم تاليًا. على سبيل المثال مسألة حساب عاملي أو مضروب عدد ما "n!" هي أشهر مسألة تعاودية بطبيعتها، فكما تعرف مضروب العدد 0 هو قيمة معروفة تساوي 1، وبالتالي يمكن اعتبار n=0 هو الحالة الحدية التي يمكن من خلالها حل مسألة المضروب لأي عدد بناء على القاعدة التالية: n! = n * (n - 1) عندما تبلغ قيمة العدد n=0 فسوف يعيد القيمة 1 للدالة وينتهي الاستدعاء المتكرر أو التعاودي لها. إليك مثال على إيجاد مضروب أو عاملي العدد n: بلغة C++: #include <iostream> using namespace std; int factorial(int n) { if (n < 0) { return 0; } else if (n == 0) { return 1; } else { return factorial(n - 1) * n; } } // استدعاء الدالة في البرنامج الرئيسي int main() { cout<< factorial(4); } بلغة بايثون: def factorial(n): if n < 0: return 0 elif n == 1: return 1 else: return n * factorial(n-1) print (factorial(4)) المخطط التالي يوضح طريقة استدعاء الدالة التعاودية وإعادتها للقيمة عند وصولها للحالة الحدية لا تقلق مرة أخرى إن لم تفهمه فهو من المفاهيم المعقدة والمرعبة للمبرمجين المبتدئين، وستفهمه تدريجيًا ولا يمكن أن يتضح بالكامل إلا إن طبقته وحتى رسمته على ورقة أو مخطط كما المخطط السابق. الكائنات والأصناف تعتبر الكائنات Objects والأصناف Classes أحد أساسيات البرمجة كائنية التوجه "OOP" حيث أن الكائنات تعتبر وحدات تتضمن مجموعة من المتغيرات ومجموعة الدوال البرمجية. والصنف Class هو بمثابة نموذج أو مخطط عام لتمثيل الكائنات، يمكن تعريفه واستخدامه لاشتقاق العديد من الأمثلة أو الحالات المختلفة من هذه الكائنات، ولهذا السبب يسمى الكائن نسخة من الصنف "instance". لنأخذ مثالًا من الواقع، يمكنك تعريف صنف يسمى Car لتمثيل السيارة، سيكون لهذه السيارة خصائص مختلفة تميزها كاللون والنوع والطراز وسنة التصنيع والسعر …إلخ. كما سيكون لها أفعال أو سلوكيات تقوم بها كفعل التشغيل وزيادة السرعة وتغيير الاتجاه والتوقف …إلخ. لذا نعرف صنفًا خاصًا يمثل السيارة ونشتق منه نسخ لسيارات مختلفة. برمجيًا يعرف الصنف بداخله متغيرات ودوال، وتحدد المتغيرات الخاصة بالصنف مميزات هذا الصنف بينما تحدد دوال الصنف "class functions" ما الذي يمكن للكائنات القيام به كما يحوي الصنف على دوال خاصة منها دالة تُدعى الدالة البانية "constructor" التي تُستدعى تلقائيًا عند إنشاء واستنساخ كائن من الصنف المُعرَّف ويمكن عبرها تمرير قيم تضبط الكائن الجديد الناتج مثلًا تضبط متغيراته وإليك مثال لتوضيح ذلك. على سبيل المثال، يمكن تعريف صنف يمثل هيكل دائرة، سنعرف لهذا الصنف متغير خاص به أو خاصية تمثل قيمة نصف قطر الدائرة، ودالة بناء تضبط قيمة نصف القطر أثناء إنشاء كل دائرة، ودالة لحساب مساحة الدائرة، ودالة أخرى لحساب محيط الدائرة يمكن استدعاءهما بعد إنشاء كل كائن من الصنف دائرة. المثال التالي يعرف صنف يمثل دائرة بلغة البرمجة C++ ويشتق نسختين أو كائنين مختلفين من هذا الصنف لكل كائن نصف قطر مختلف: #include<iostream> using namespace std; class Circle { const float PI = 3.14; // data members float radius; public: // contractor Circle(float radius) { this->radius = radius; } // member function float Area() { return radius*radius*PI; } float Perimeter() { return 2*radius*PI; } }; int main() { Circle circle1(3); cout << circle1.Area() << endl; cout << circle1.Perimeter() << endl; Circle circle2(4); cout << circle2.Area() << endl; cout << circle2.Perimeter() << endl; return 0; } والمثال المكافئ التالي بلغة بايثون يعرف صنف دائرة ويشتق كائنين منه: #تعريف صنف يمثل دائرة class Circle(): def __init__(self, radius): self.radius = radius def get_area(self): return (self.radius ** 2) * pi def get_perimeter(self): return self.radius * 2 * pi # إنشاء كائنات من الصنف Circle pi = 3.14 circle1 = Circle(3) print(circle1.get_area()) print(circle1.get_perimeter()) circle2 = Circle(4) print(circle2.get_area()) print(circle2.get_perimeter()) لا تقلق إن لم تفهم شيئًا مما سبق فمهوم الأصناف والكائنات مفهوم دسم معقد على المبتدئين، ولكن حاول إعادة قراءة الفقرة وتطبيق الأمثلة أو يمكنك تخطيه ببساطة فالمهم أنك تعرفت على المفهوم، أما إن أردت المزيد من التفاصيل، فارجع إلى مقال البرمجة كائنية التوجه من سلسلة تعلم البرمجة. الوحدات والمكتبات لعلك لاحظت عبارات تبدأ بالكلمة using أو include أو import في الأمثلة البرمجية السابقة وتساءلت عن أهمية وجودها! هذه العبارات ليست سوى أمثلة على استخدام وحدات ومكتبات جاهزة مختلفة في لغات البرمجة. تعتبر الوحدات Modules والمكتبات Libraries أحد مفاهيم أساسيات البرمجة التي من الضروري أن تعيها جيدًا، والهدف الأساسي من وجودها تسهيل كتابة التعليمات البرمجية وتمكين المبرمج من إعادة استخدامها دون الحاجة إلى كتابة التعليمات البرمجية الخاصة بها في الكود من جديد. فالمكتبات والوحدات توفر على المبرمجين إعادة اختراع العجلة وتمكنهم من التركيز على حل المشكلة بسهولة ومرونة أكبر. توفر كل لغة برمجة العديد من المكتبات التي تضم مجموعة من الدوال والأصناف والوحدات التي يمكنك استخدامها مرارًا وتكرارًا في التعليمات البرمجية الخاصة بك لأداء مجموعة من الوظائف المفيدة دون الحاجة لإنشائها من البداية، كما يمكنك تعريف الوحدات الخاصة بك. هناك العديد من الوحدات المضمنة في لغة بايثون مثلًا والتي يمكنك استيرادها بكتابة التعليمة import ولنضرب مثلًا باستيراد الوحدة math للاستفادة من الدوال الرياضية التي توفرها بالشكل التالي: import math print (math.sqrt(25)) print (math.pi) print (math.degrees(2)) print (math.radians(90)) print (math.sin(2)) print (math.cos(0.5)) إلى هنا نكون قد انتهينا من شرح أساسيات البرمجة للمبتدئين والتي تناولنا فيها أهم المفاهيم التي ستتعرف عليها بالتفصيل في أي لغة برمجية تنوي تعلمها قبل أن تتمكن من تطوير برامجك وتطبيقاتك بهذه اللغة. ونختم مقالنا بأهم النصائح والتوصيات التي تساعدك على تعلم هذه الأساسيات. 10 نصائح لتعلم أساسيات البرمجة إليك مجموعة نصائح سريعة تساعدك في رحلة تعلم البرمجة: حدد هدفك من تعلم البرمجة، ثم تعلم ما يلزمك من تقنيات لتحققه. لا تشتت نفسك بكثرة اللغات والتنقل بينها وركز على المفاهيم وطبقها بلغة واحدة بإتقان وتركيز. ضع خطة للتعلم والتزم بها دون تسويف. لا تضيع وقتك في البحث عن أفضل المصادر التعليمية والتنقل بينها بل اختر واحدًا فقط والتزم به للنهاية. طور مهارات البحث الفعال فهذا سيوفر عليك وقتًا كبيرًا ويساعدك في إيجاد حلول لمشاكلك البرمجية. رافق المجدين ومن يشاركونك الهدف والاهتمام نفسه فإن الصاحب ساحب كما يُقال. لا تتوقف عن التعلم وطور نفسك باستمرار. تحلَّ بالصبر والأناة فإن العلم بالتعلّم والحلم بالتحلّم. تقبل الفشل والخطأ فالفشل هو وسيلة للنجاح. طبق ثم طبق ثم طبق ما تتعلمه. الخلاصة تطرقنا في مقال اليوم لشرح أساسيات البرمجة للمبتدئين وتعرفنا على أهم المفاهيم البرمجية التي ستصادفك عند تعلم أي لغة من لغات البرمجة وذكرنا في الختام أهم الأسس والنصائح التي تساعد أي مبرمج لتعلم أساسيات البرمجة من الصفر حتى الاحتراف. قد لا تتمكن من هضم جميع المفاهيم مرة واحدة خصوصًا إن كنت مبتدئًا، لذا ارجع للمقال مرة ومرتين حتى تتأكد من استيعابك لتلك المفاهيم وضعه ضمن قائمتك المفضلة وطبق الأمثلة بلغة البرمجة التي تتعلمها أو تريد تعلمها. وإذا كان لديك أي تساؤلات حول أي شيء مر معك في المقال أو كنت قد بدأت فعلا بتعلم إحدى لغات البرمجة ولديك نصائح مفيدة تود أن توجهها للمبتدئين في تعلم البرمجة، نرحب بأن تشاركنا بها في التعليقات أسفل المقال. اقرأ أيضًا أسهل لغات البرمجة البرمجة كائنية التوجه دليلك الشامل إلى: برمجة التطبيقات فوائد تعلم البرمجة2 نقاط
-
السلام عليكم ده البيانات من موقع Kaggle هو ازي هنا في العمود الsex الهو الجنس نوع البيانات الموجود فيه int السوال هنا ازي نوع البيانات ارقم ولما شوفت الارقام ده عبار عن 1 او 0 مش المفروض male او female فا هل الناس المجمع البيانات ده هما مظبطين البيانات ومحولين كل حاجه الارقم عشان طبعان نماذج الذكاء الاصطناعي مش بتفهم غير ارقم بس برد ده لو صحيح فا رقم 1 ده عبار عن رجل ام انثي اي الموضوع ده heart_disease.csv1 نقطة
-
1 نقطة
-
1 نقطة
-
عندما ارسل فيديو لشخص علي هاتف معين عن طريق Shareit مثلا يضع لوحده تماما خطوط جمب الأسم مثال : محمد علي / محمد_علي كيف احل مشكلة هذه الشرطه التي تضع لوحدها بين الاسم اريدها ان تختفي بدون إعادة تسمية لأني ارسل فيديوهات كثيره ولا اريد ان اعمل لهم جميعاً إعاده تسميه لكي امسح هذه الشرطه سوف تاخذ مجهود ، اريد حل لتختفي وشكرا مقدما1 نقطة
-
يمكنك وضع هذه الأكواد فى ملف php واستدعاءه فى المكان الذى تريد أن تسمح الوصول له من أى خادم آخر . header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST'); header("Access-Control-Allow-Headers: X-Requested-With");1 نقطة
-
انا لدي حساب Google play console وايضا لدي تطبيق مثل pyypl و faytu يعني خاص بالدفع الاكتروني ولكن المشكلة انه الحساب شخصي وليس business يعني لا استطيع نشر التطبيق وايضا لدي حساب business ولكن مشكلة المستندات المطلوبة لاتوجد في بلادي llc وغيره اتمنى شركة او مبرمج تحل لي هذه المشكلة1 نقطة
-
اريد اتعلم لغة البرمجة وانشا موقع الكتروني و انشا تطبيق الكتروني يكون ربط بين الموقع مع تطبيق ايش ادخل من دورة هل؟ 1_ دورة تطوير واجهات المستخدم 2_ دورة تطوير تطبيقات الويب باستخدام لغة PHP1 نقطة
-
the routes i write in web.php are not getting defined, here are my files gram.zip1 نقطة
-
1 نقطة
-
هنالك من يريد عمل موقع لصيدليه واضافة ميزة الدفع الالكتروني وربط ال database في الموقع معه نظام المستخدم في الصيدليه ولدي صلاحية الى api النظام هل يمكنني ربط الموقع علما اني تعلمت php and laravel من خلال الكورس ارجو اعطائي خارطة الطريق1 نقطة
-
العمود الذي يحتوي على القيم 0 و 1 يمكن اعتباره متغيرا ثنائيا (Binary Variable) وهو عادة ما يمثل حالتين مختلفتين أو خيارين. في حالة عمود "fasting blood sugar"، فهو يشير إلى حالة سكر الدم عند الصيام، حيث: 0: يعني أن نسبة السكر في الدم عند الصيام طبيعية. 1: يعني أن النسبة عند الصيام مرتفعة أو غير طبيعية. يمكننا استخدام المتغيرات الثنائية بشكل مباشر في النماذج التحليلية والإحصائية لأنها تحتوي على قيمتين فقط تسهل على النماذج فهمها ومعالجتها وهذه أمثلة على متغيرات ثنائية مشابهة: الجنس (sex): 0 قد يمثل الإناث و1 قد يمثل الذكور. الذبحة الصدرية أثناء التمرين (exercise angina): 0 يعني عدم وجود ذبحة صدرية أثناء التمرين و1 يعني وجودها. رسم القلب عند الراحة (resting ecg): يمكن أن يحتوي على 0 و1 (وفي بعض الأحيان أكثر من ذلك إذا كان هناك أنواع متعددة من رسم القلب عند الراحة).1 نقطة
-
ما هو الفرق بين الخوارزمية و الشيفرة الزائفة والمخطط الانسيابي؟1 نقطة
-
الفرق بينها يكمن في الغرض والاستخدام والطريقة التي يتم بها تمثيل عملية حل مشكلة معينة في البرمجة وهندسة البرمجيات، فالخوارزمية هي خطة لحل مشكلة، أما الشيفرة الزائفة هي وصف شبه برمجي للخوارزمية، والمخطط الانسيابي هو تمثيل بصري لهذه الخطوات. فالخوارزمية هي وصف دقيق لمجموعة من الخطوات التي تنفذ لحل مشكلة معينة أو لتحقيق هدف محدد. أين تعتمد على التسلسل المنطقي وتكون واضحة ومباشرة لتوجيه عملية التنفيذ. في حين أن الشيفرة الزائفة، أو الكود الكاذب، هي تمثيل شبه برمجي للخوارزمية، يكتب بلغة مفهومة للبشر، ويهدف إلى توضيح منطق الخوارزمية دون الالتزام بقواعد لغة برمجة معينة بحيث يستخدم لشرح الأفكار وتسهيل التواصل بين المبرمجين وغير المبرمجين. بينما المخطط الانسيابي هو تمثيل بياني للخوارزمية، يستخدم الأشكال والصناديق لتمثيل الخطوات والإجراءات، والأسهم لتوضيح تدفق العملية. يُسهل فهم تسلسل الخطوات ويوضح العلاقات بينها، ويستخدم في تصميم البرمجيات وتوثيق العمليات. وهذه أمثلة تبين الفروقات: هنا لدينا خوارزمية لحساب مجموع الأعداد من 1 إلى N: ابدأ. ضع المجموع = 0. ضع i = 1. طالما أن i ≤ N، قم بما يلي: أضف i إلى المجموع. زِد i بمقدار 1. اطبع المجموع. انتهى. وهذه هي الشيفرة الزائفة لنفس الخوارزمية: ابدأ المجموع = 0 i = 1 بينما i ≤ N افعل المجموع = المجموع + i i = i + 1 اطبع المجموع انتهى بينما المخطط الانسيابي يمكنك التعرف عليه أكثر من هنا:1 نقطة
-
طيب اي عمود عبار عن 0 او 1 ممكن يكون متحول والا الا مش قاعد ؟ عشان برد في عمود fasting blood sugar برد عبار عن 0 و 1 فا ده برض عبار عن اي ؟1 نقطة
-
صحيح لأنه في بيانات التعلم الآلي، من الشائع تحويل البيانات الفئوية (مثل الجنس) إلى أرقام لأن النماذج لا يمكنها التعامل إلا مع الأرقام، ففي الملف البيانات فيه تتضمن العمود "sex" وهو من نوع البيانات int64 ويحتوي على القيم 0 و 1. هذا يعني أن القيم الفئوية كالجنس قد تم تحويلها إلى أرقام. في هذه الحالة، من الشائع أن يكون: 0 يمثل الإناث (female) 1 يمثل الذكور (male) وهذا التحويل ضروري لأن نماذج التعلم الآلي تتعامل بشكل أفضل مع البيانات الرقمية.1 نقطة
-
1 نقطة
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس وذلك لمساعدتك بشكل أفضل.1 نقطة
-
السلام عليكم انا كانت بنزال بيانات لمرض القلب عشان استخدمها في تحليل البيانات من موقع Kaggle وكده بس كانت عاوز افهم اي معني 408KB هل ده بيانات كبير جدا ومتوسط ؟ وكمان البيانات ده هل بتحدث كل فتر وكمان هل الازم اكون علي اطلاع علي احداث حاجه ؟ واخير هل يفضل ان اكون عندي خبير بسيط في امرض القلب عشان اقدر افهم البيانات ده1 نقطة
-
لا يعني أن 408 كيلوبايت من البيانات غير مفيدة، بل كافية لأغراض معينة، مثل التعلم تحت الإشراف مع مجموعات بيانات صغيرة، أو نقل التعلم (transfer learning) حيث يتم استخدام نموذج مدرب مسبقًا على بيانات كبيرة ويتم تحسينه باستخدام البيانات الصغيرة المتاحة لديك.1 نقطة
-
السلام عليكم اي الفرق بين الداله read_csv او read sql وهكذا يعني الموجود في pandas وبين الداله open الموجود في باثيون1 نقطة
-
الدالة read_csv في pandas هي لقراءة ملف CSV وتحويله مباشرة إلى DataFrame، وهو نوع بيانات غني يُستخدم في التحليل والاستكشاف البياني. بينما open هي دالة عامة في Python لفتح الملفات من أي نوع (نصي، ثنائي، ...)، أي read_csv هي دالة متخصصة في Pandas لقراءة ملفات CSV وتحويلها إلى DataFrame. و open تُرجع كائن ملف file object، بينما read_csv تُرجع DataFrame جاهز للتحليل. وبالنسبة لـ open تحتاج إلى معالجة البيانات يدويًا (مثل تقسيم الأسطر، تحويل النص إلى أرقام، ...) أي تستطيع استخدامها مع أي نوع من الملفات، ولكنها تتطلب المزيد من العمل لمعالجة البيانات. بينما read_csv تعود بـ DataFrame، وهو هيكل بيانات جدولي في Pandas، جاهز للتحليل، وتتعامل مع العديد من التفاصيل تلقائيًا، مثل فصل الأعمدة بناءً على الفاصلة أو محدد آخر، تحويل أنواع البيانات (أرقام، نصوص، تواريخ، ...)، التعامل مع العناوين والتعامل مع القيم المفقودة، بالتالي هي مخصصة لملفات CSV، وتوفر العديد من الخيارات للتحكم في عملية القراءة.1 نقطة
-
408KB يُعتَبر صغيرًا جدًا أي نصف ميجابايت، أي كمية صغيرة من البيانات ويمكن تحميلها ومعالجتها بسرعة كبيرة، حتى باستخدام الحواسيب العادية. للتوضيح 1 ميجابايت MB يساوي 1000 كيلوبايت KB. و 1 جيجابايت GB تساوي 1000 ميجابايت MB. لكن ذلك لا يعني أن 408 كيلوبايت من البيانات غير مفيدة، بل كافية لأغراض معينة، مثل التعلم تحت الإشراف مع مجموعات بيانات صغيرة، أو نقل التعلم (transfer learning) حيث يتم استخدام نموذج مدرب مسبقًا على بيانات كبيرة ويتم تحسينه باستخدام البيانات الصغيرة المتاحة لديك. بالنسبة لتحديثات البيانات، فذلك يعتمد على مصدر البيانات وما إذا كان يتم تحديثها بانتظام، فبعض مجموعات البيانات على Kaggle تُحدث بانتظام، بينما البعض الآخر يكون ثابتًا ولا يتغير، وباستطاعتك التحقق من تاريخ آخر تحديث في صفحة مجموعة البيانات على Kaggle لمعرفة ما إذا كانت هناك تحديثات دورية أم لا. ومن الجيد دائمًا أن تكون على علم بالتحديثات والمستجدات في مجالك، سواء كان ذلك في البيانات التي تستخدمها أو في الأدوات والتقنيات التي تطبقها وذلك يساعدك على ضمان أن تحليلك يعتمد على أحدث وأدق البيانات المتاحة. لكن لا تنجرف وراء ذلك، تلك خطوة متقدمة، ركز حاليًا على تعلم الأساسيات والتطبيق عليها ثم المكتبات وإطارات العمل اللازمة والتطبيق عليها أيضًا، وبعض فترة تستطيع متابعة الجديد. وليس من الضروري أن تكون لديك خبرة طبية متعمقة في أمراض القلب لفهم وتحليل البيانات المتعلقة بها، ولكن وجود خلفية بسيطة مفيد بالطبع، فلو قمت ببحث بسيط وقرأت عنها لتفهم المصطلحات الأساسية والمفاهيم الطبية المتعلقة بأمراض القلب، سيكون من الأسهل عليك تفسير البيانات واستخلاص الاستنتاجات الصحيحة، وتستطيع دائمًا الاستعانة بمصادر طبية لفهم الأمر ما أمكن ذلك.1 نقطة
-
وعليكم السلام، تحديد هل البيانات قليلة أو كثيرة لا يتم عبر قياس حجمها. لأن البيانات القليلة عندما تكون على شكل فيديوهات فسوف يكون حجمها ضخما، بينما البيانات النصية عادة ما يكون حجمها صغيرا حتى بوجود الكثير منها. لذلك، في مجال التعلم الآلي والعميق، لا نقيس البيانات بالمساحة الذي تأخذها من الذاكرة، بل بعدد وحدات البيانات (Data instances). ومع معرفة عدد وحدات البيانات، لا يمكن القول بدقة هل هو عدد قليل أم كثير، إلا إذا قارناها مع مجموعات البيانات المشابهة لها (يعني التي تستخدم في نفس الأمر أو في أمر مشابه)، ويتم كذلك قياس حجم البيانات بكفايتها لتدريب النماذج للقيام بالمهمة المطلوبة. فمثلا، مجموعة البيانات الشهيرة MNIST تحوي 60,000 صورة للأعداد المكتوبة بخط اليد، وهذا الكم كاف لتدريب نموذج تعلم آلة والتحقق من كفائته، لذلك نقول أنها مجموعة بيانات ذات حجم جيد للقيام بهذه المهمة. هذا يعتمد على من يوفر هذه البيانات. بعض المؤسسات تقوم بتحديث بياناتها باستمرار، بينما أغلب البيانات، خاصة التي يرفعها أشخاص عاديون، يتم جمعها مرة واحدة وتبقى نفسها بدون تغيير إلى الأبد. يمكنك أن تجد هذا الأمر مذكورا على الصفحة التي حملت البيانات منها. إذا لم تجد شيئا بخصوص هذا الأمر، فهذا على الأغلب يعني أن هذه البيانات لن يتم تحديثها في المستقبل. لا يمكنك أن تبقى على اطلاع على كل البيانات الموجودة على الساحة وتحديثاتها، فهذا شيء متعب. لكن يمكنك متابعة فقط البيانات التي أنت مهتم بها. عندما تقوم بإنشاء نموذج تعلم آلة\عميق، فقد تحتاج إلى إعادة تدريبه كل فترة إذا كان نوع البيانات الذي تعمل عليه يتغير بتغير الزمن (مثل بيانات أسعار السوق)، لكن إذا كانت البيانات ثابتة نسبيا (مثل صور الأشخاص أو الأشياء) فهذه قد لا تحتاج تحديثا مستمرا ويمكنك أن تبقى بنفس النسخة لمدة طويلة من الزمن. يمكنك أيضا أن تستخدم البيانات الجديدة لاختبار نموذجك وترى إن كان لا يزال بنفس كفائته أم أن البيانات الجديدة صارت صعبة عليه. من غير الممكن أن تكون خبيرا في كل شيء، فمهندس الذكاء الاصطناعي يضطر إلى العمل في عدة مجالات تختلف عما درسه. لذلك، إذا كان هذا المشروع سيكون بالشراكة مع شخص متخصص في المجال، فهنا يمكنك أن تستعين به. وإذا لم يكن متوفرا، فيمكنك أن تتعلم الحد الأدنى الذي يسمح لك باستغلال البيانات بشكل صحيح وفهم المطلوب.1 نقطة
-
لا لن تعمل ال captcha الآن حيث قمنا بإيقافها لنختبر الكود . يمكنك التحقق من إعدادات captcha على جوجل من الممكن أن المشكلة أنك لم تقم بإضافة الموقع الجديد ليعمل على ال captcha1 نقطة
-
قام بالارسال عندما قمت بتغير هذا الجزء الى هذا لكن في هذه الحالة هل ستعمل captcha1 نقطة
-
الفرق بين الدالة `read_csv` في مكتبة `pandas` والدالة `open` في بايثون هو في وظيفتهما وكيفية استخدامهما فالدالة `read_csv` تستخدم لقراءة ملفات CSV وتحويلها مباشرة إلى إطار بيانات في `pandas`، مما يسهل تحليل ومعالجة البيانات بفضل الوظائف المتقدمة التي توفرها المكتبة. من جهة أخرى، الدالة `open` هي دالة مدمجة في بايثون تستخدم لفتح الملفات لأغراض متعددة مثل القراءة والكتابة، وتحتاج إلى مزيد من البرمجة اليدوية عند التعامل مع ملفات CSV فإذا كنت بحاجة لتحليل ومعالجة البيانات بشكل مريح، فإن `read_csv` هي الخيار الأفضل، بينما `open` تكون كافية إذا كان الغرض هو القراءة أو الكتابة المباشرة لمحتويات الملف. يمكنك التوسع أكثر من هنا:1 نقطة
-
أولاً أساسيات البرمجة، مثل الخوارزميات وهياكل البيانات وحل المشاكل، يمكن تعلمها باستخدام أي لغة برمجة. اللغة نفسها ليست بالضرورة الأهم، بل المفاهيم التي تتعلمها من خلالها هي الأهم. وبما أنك مبرمج PHP وتعمل بهذه اللغة منذ فترة وتمتلك خبرة فيها، يمكنك متابعة تعلم هذه المفاهيم باستخدام PHP. ولكن دائماً ما يتردد بأنه يفضل تعلم لغات مثل C++ وJava وC# لأنها تجبرك على التعامل مع مفاهيم منخفضة المستوى مثل إدارة الذاكرة والتعامل مع الموارد، مما يعزز فهمك العميق لكيفية عمل الحاسوب.1 نقطة
-
يمكن أن تكون المشكلة في إعدادات البريد الإلكتروني الخاصة بـ Django على الاستضافة. هناك احتمالان رئيسيان للمشكلة: 1. إعدادات البريد الإلكتروني في Django: - تأكد من تكوين إعدادات البريد الإلكتروني بشكل صحيح في ملف `settings.py` الخاص بمشروع Django الخاص بك. تحتاج إلى تحديد معلومات الاعتماد الصحيحة لخادم البريد الصادر (SMTP) الذي تستخدمه لإرسال البريد الإلكتروني. -تكون من الشكل : EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'your-smtp-host' EMAIL_PORT = 587 EMAIL_HOST_USER = 'your-email@example.com' EMAIL_HOST_PASSWORD = 'your-email-password' EMAIL_USE_TLS = True DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 2. قيود الاستضافة: - بعض خدمات الاستضافة تفرض قيودًا على إرسال البريد الإلكتروني، مثل حجم رسائل البريد أو قيود بروتوكول SMTP. يجب التحقق من قواعد الاستضافة الخاصة بك للتأكد من عدم وجود أي قيود تمنع إرسال رسائل البريد الإلكتروني من الاستضافة. ويكن مراجعة الجواب التالي لاعداد البريد الالكتروني والتاكد من انك قمت بالاعداد الصحيح1 نقطة
-
المشكلة على الأغلب تتعلق بإعدادات البريد الإلكتروني في بيئة الاستضافة، فعند إرسال البريد الإلكتروني في بيئة الإنتاج، قد تكون هناك إعدادات ناقصة أو غير صحيحة في ملف `settings.py` الخاص بمشروع Django. لذا تأكد من إعدادات البريد الإلكتروني في `settings.py` لتكون كالتالي: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = 'your-email@gmail.com' EMAIL_HOST_PASSWORD = 'your-email-password' DEFAULT_FROM_EMAIL = EMAIL_HOST_USER لضمان أنك تستطيع رؤية الأخطاء التي تحدث عند محاولة إرسال البريد الإلكتروني، يمكنك تمكين تسجيل الأخطاء في Django. أضف الكود التالي إلى `settings.py`: import os LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': os.path.join(BASE_DIR, 'debug.log'), }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'DEBUG', 'propagate': True, }, }, } فهو سيسمح بتتبع الأخطاء التي تحدث عند محاولة إرسال البريد الإلكتروني من خلال ملف `debug.log`.1 نقطة
-
هل يمكنك فتح ال console عن طريق الضغط على CTRL + SHIFT + J وإخباري هل يظهر خطأ عند محاولة إرسال ال form واذا كان يظهر خطأ هل يمكنك إرساله , وايضا هل يوجد خطأ فى ال log الخاص بالاستضافه ؟ من الممكن أن يكون الخطأ فى ال captcha لذلك حاول حذف هذين السطرين مؤقتا . وايضا قم بإستبدال هذ السطر بالكود التالي: if True: ومحاولة إرسال ال form مرة أخرى وإخبارى بالنتيجة1 نقطة
-
بطء المواقع تتحكم فيها العديد من العوامل، لذلك يجب أولًا استخدام إحدى أدوات التحليل التي تقوم بتحليل الموقع واستخراج المشاكل التي به. من أهم هذه الأدوات الرسمية والتي تشرف عليها شركة جوجل https://pagespeed.web.dev/ من خلال هذه الصفحة تستطيع إدخال رابط موقعك وتطلب تحليله لكل من الهاتف المحمول Mobile أو اللاب توب Desktop ومن خلال تحليل موقعك عل هذه الأداة يتضح أن الموقع يعمل بشكل مقبول بالنسبة لللاب توب والأجهزة الكبيرة، أما بالنسبة للهاتف المحمول فتوجد عدة ملاحظات يجب معالجتها. بالتأكيد الموضوع يحتاج خبرة وسيحتاج منك بعض البحث عن كل نقطة أو الاستعانة بأحد المبرمجين الخبرة. ولكن أعطيك بعض الإرشادات بخصوص الملاحظات التي ظهرت: من ضمن الملاحظات أن الصور يمكن تحسين حجمها حتى تظهر بشكل أسرع وتوفر على المستخدم الذي يتصفح موقعك عن طريق باقة الإنترنت وليس الواي فاي. أرفقت لك صورة توضح الحجم الحالي والحجم المقترح لتحسين الأداء وبهذا الأسلوب تستطيع المرور على كل نقطة والبحث عن كيفية إصلاحها.1 نقطة
-
مما لاشك فيه أن دراسة البرمجة وتعلمها أمر في غاية الأهمية في عصرنا الحالي فمن خلالها ستتمكن من فهم أجهزة الحاسوب والتقنيات المختلفة والتعامل معها بكفاءة، كما ستضمن الحصول على فرصة عمل جيدة ومربحة. فإذا كنت مهتمًا بالبرمجة وتتساءل كيف أدرس البرمجة وأحترفها خلال فترة وجيزة، وتود التعرف على طرق دراسة البرمجة المختلفة وأبرز مميزات وتحديات كل طريقة من هذه الطرق أنصحك بقراءة هذا المقال للنهاية. أهمية دراسة البرمجة قبل التعرف على طرق البرمجة، دعنا نستعرض أهمية دراسة البرمجة حيث توفر دراسة برمجة الحاسب العديد من المميزات والفوائد ومن بينها: تجعلك دراسة البرمجة شخصًا مثقفًا تقنيًا وقادرًا على التعامل مع الحاسوب والتفاعل معه وإخباره بما يجب عليه فعله لحل العديد من المشكلات التي تواجهك. توفر لك دراسة البرمجة وظائف ذات أجور مرتفعة وتعد تخصصات البرمجة ومجالات عملها المختلفة واحدة من أعلى الوظائف أجرًا وتضمن لك الاستقلالية المالية. تعد البرمجة واحدة من أكثر المهن المطلوبة والواعدة في المستقبل وهي مهارة مطلوبة في مختلف مجالات العمل المختلفة وليس فقط التخصصات التقنية فمعظم الأعمال في الوقت الحالي تعتمد على التقنية واستخدام الحواسيب. إمكانية العمل من أي مكان وبأي وقت في الليل أو النهار، كما يمكنك العمل كموظف بدوام كامل أو كمستقل والتعامل مع عملاء من أي مكان في العالم، كل ما ستحتاجه هو جهاز حاسوب متصل بالإنترنت ولن يكون هناك أي حدود تمنعك من تحقيق أهدافك المهنية. تجعلك دراسة البرمجة شخصًا أكثر ذكاء، وتعزز مهارات التفكير المنطقي لديك، وتكسبك منظورًا جديدًا للتعامل مع أي مشكلات تواجهك في الحياة أو العمل فالبرمجة في النهاية ليست سوى مهارة حل المشكلات ومن منا لا يحتاج لهذه المهارة! يمكنك من خلال دراسة البرمجة تحويل أي فكرة مميزة تخطر ببالك سواء فكرة تطبيق جوال أو فكرة موقع أو لعبة إلكترونية لمنتج فعلي يستفيد منه الآخرون. طرق دراسة البرمجة إذا كنت مهتمًا بالبرمجة وتتساءل عن كيفية دراسة البرمجة بكفاءة ولا تعرف من أين تبدأ نظرًا لوجود العديد من طرق دراسة البرمجة والكثير من لغات البرمجة التي يمكنك البدء بتعلمها فسوف نساعدك من خلال الفقرات التالية في اختيار الطريقة واللغة المناسبة لك. حيث يمكنك اختيار الدراسة الذاتية للبرمجة والاستفادة من الكثير من مصادر التعلم المجانية أو المدفوعة المتوفرة عبر الإنترنت من دروس ومنتديات وكتب شاملة ومقاطع فيديو ودورات تدريبية ومعسكرات برمجية،فهذه هي الطريقة التي تتقدم بها بسرعة لتصبح خبيرًا في البرمجة، والتي تساعدك على دراسة أي لغات من لغات البرمجة أو التقنيات المطلوبة لكتابة أكواد البرمجة بمرونة وفعالية وفي أقصر وقت ممكن. كما يمكنك اختيار الدراسة الجامعية لتعلم البرمجة، وفي هذه الحالة سيكون عليك الانتساب لإحدى الجامعات العامة أو الخاصة التي توفر كلية موجهة لتعليم هندسة البرمجيات أو علوم الحاسوب أو برمجة الحاسوب أو أي تخصص مشابه وتتعلم خلال سنوات الدراسة التي تمتد على عدة سنوات مجموعة متنوعة من لغات البرمجة ومبادئ وهندسة البرمجيات وقواعد البيانات ومعمارية الحاسوب والرياضيات والفيزياء وغيرها من المواد العديدة الأخرى التي قد لا تحتاجها في سوق العمل. سنسلط الضوء في الفقرات التالية مميزات وعوائق كل طريقة من هذه الطرق، ونترك لك موازنة الإيجابيات والسلبيات من كي تتمكن من معرفة طريقة دراسة البرمجة المناسبة لك. الدراسة الذاتية للبرمجة إذا اخترت الدراسة الذاتية في البرمجة فهذا يعني أنك مسؤول عن البحث بنفسك على مصادر التعلم المختلفة التي ستتعلم منها عبر الإنترنت وستجد خلال بحثك الكثير من المصادر بأشكال متنوعة من دروس ومقالات عبر الإنترنت وكتب ومقاطع فيديو ودورات تدريبية ومشاريع جاهزة يمكنك دراستها وفهم البرمجة من خلالها ولك كامل حرية اختيار المصادر التي تناسبك للتعلم منها فلكل منا طريقة يفضلها على غيرها. التحدي الأساسي الذي سيواجهك عندما تقرر الدراسة الذاتية للبرمجة هو أنك تحتاج لامتلاك قدر كبيرة من التنظيم والانضباط الشخصي والتحفيز الذاتي وتحديد هدف التعلم الخاص بك ووضع خطة مناسبة لتحقيق هذا الهدف وتقرر عدد الساعات التي ستقضيها يوميًا في التعلم وهذا وتقرر بنفسك مدى تقدمك وهذا قد لا يكون سهلًا. مميزات دراسة البرمجة بصورة ذاتية توفر دراسة البرمجة بصورة ذاتية العديد من المميزات من أبرزها: المرونة في تحديد أوقات الدراسة ووتيرة التعلم بحسب ظروفك واستيعابك وقدراتك الشخصية. اختيار لغات البرمجة والتقنيات التي تريد تعلمها بحسب ميولك واهتمامك أو حسب متطلبات سوق العمل. حرية في اختيار مصادر وتقنيات التعلم التي تناسبك والتي تشعر بأنها توصل لك المعلومات بطريقة تحبها. الدراسة من مصادر حديثة من فالتقنيات ولغات البرمجة تتطور بوتيرة سريعة ومن الضروري تكون على اطلاع دائم على أحدث المستجدات. إمكانية الدراسة عن بعد والعمل لاحقًا من منزلك أو أي مكان يناسبك ضمن أوقات مرنة تناسب ظروفك. وأخيرًا من أبرز الفوائد التي ستجنيها عند دراسة البرمجة بشكل ذاتي هو التركيز على المعرفة العملية وبناء المشاريع التي تفيدك في سياق تخصصك البرمجي وتجاهل المواد النظرية المملة أو التقنيات التي لا تحتاج لاستخدامها مما يوفر عليك الكثير من الوقت والجهد. تحديات دراسة البرمجة بصورة ذاتية عندما تقرر دراسة البرمجة بصورة ذاتية العديد ستواجه العديد من العقبات وأبرزها: التشتت وعدم القدرة على الدراسة من مصدر أو منهج تعليمي منظم قد تفشل في تحديد المعلومات أو المفاهيم الضرورية وترتيب تعلمها الصحيح. التسويف وعدم القدرة على الالتزام و ضبط دراسة البرمجة بنفسك والحفاظ على وتيرة منتظمة في التعلم. فقدان الشغف والرغبة في مواصلة الدراسة فبدون وجود معلم يوجهك وزملاء يشاركونك التعلم قد لا يشجعك على المتابعة فقدان التوجيه المباشر والإجابة على أسئلتك وتوضيح ما يصعب عليك فهمه وحل المشكلات التي تواجهها قد يجعلك تحبط سريعًا وتتخلى عن دراسة البرمجة. إذا كنت تواجه هذه التحديات بالفعل فمن الأفضل في هذه الحالة أن تتبع دورة منظمة من أجل دراسة برمجة الحاسوب، تساعدك دورات أكاديمية حسوب المنهجية على تنظيم دراستك والالتزام بمنهج منظم ومحتوى تعلمي مرتب ومعد بشكل مدروس يسهل عليك دراسة البرمجة بشكل منهجي من المفاهيم الأساسية إلى المفاهيم الأكثر تعقيدًا وبناء المشاريع البرمجية إلى جانب المتابعة مع مدربين أكفاء ومتعاونين يجيبونك على أي تساؤل أو مشكلة تواجهك والنقاش حول الأمور التي تستصعبها. الدراسة الجامعية لتعلم البرمجة الخيار الثاني لدراسة البرمجة هو الدراسة الأكاديمية في إحدى الجامعات المتخصصة في علوم الحاسوب أو هندسة البرمجيات أو المعلوماتية وفي هذه الحالة ستحتاج للدارسة لفترة طويلة نسبيًا لا تقل عن أربع إلى خمس سنوات لنيل البكالوريوس والحصول على شهادة معتمدة في تخصص البرمجة. ستضطر خلال سنوات الدراسة الطويلة إلى دراسة العديد من المواد النظرية كالرياضيات والإدارة إلى جانب دراسة البرمجة واللغات المختلفة كما أن التعلم سيكون أكاديميًا ونظريًا وغير محدث أكثر من كونه تطبيقيًا ويركز على المشاريع العملية المطلوبة في سوق العمل الأمر الذي يضطرك إلى الاعتماد على نفسك لترميم هذا النقص وتعلم التقنيات التي يحتاجها سوق العمل والتطبيق العملي لتعزيز خبرتك بنفسك فهذا في الواقع ما يبحث عنه أرباب العمل اليوم في سيرتك الذاتية أكثر من الاهتمام بالشهادات التي تحملها. مميزات الدراسة الجامعية لتعلم البرمجة توفر لك الدراسة الجامعية لتعلم البرمجة عدة مميزات من أبرزها ما يلي: الحصول على شهادة جامعية معتمدة تعزز فرصتك في الحصول على عمل. بيئة اجتماعية وتفاعلية تساعدك على دراسة البرمجة مع زملاء لهم نفس الاهتمامات. مناهج دراسية منظمة ومتسلسلة منطقيًا من الأساسيات للأمور المتقدم. الالتزام بجدول زمني صارم لدراسة المواد المطلوبة لا يمكن تخطيه. توفر مكتبات جامعية توفر مصادر وكتب برمجة منهجية وقيّمة تساعدك على الدراسة. تحديات الدراسة الجامعية لتعلم البرمجة من أبرز تحديات وصعوبات الدراسة الجامعية للبرمجة نذكر: الدراسة مكثفة ومليئة بالمواد النظرية المملة والمناهج غير المحدثة التي قد لا تواكب التطور التقني أولًا بأول وستشعر بفجوة بين ما تعلمته في الجامعة وما يتطلبه سوق العمل, مدة دراسة البرمجة طويلة وتستغرق أربع إلى خمس سنوات وقد تمتد لفترة أطول إن لم تتمكن من اجتياز إحدى السنوات. الدراسة الجامعية مكلفة مقارنة بالتعلم الذاتي لاسيما عند الدراسة في جامعة خاصة. إذا اخترت الدراسة الجامعية للبرمجة فسوف تقيم باعتماد أساليب تقليدية قديمة تختبر حفظ المفاهيم النظرية أكثر من تقيم المهارات الإبداعية والتفكير المنطقي الأساسي لدراسة البرمجة. فرص محدودة فقد لا تحظى بالقبول في الجامعة التي تفضلها وتضطر للدراسة في جامعة أخرى بعيدة عن مكان إقامتك أو دراسة مجال آخر. نصائح لتنجح في دراسة برمجة الحاسب حدد هدفك وسبب رغبتك في دراسة البرمجة والتخصص البرمجي الذي تميل له والمشاريع التي تطمح لتطويرها فإذا لم يكن لديك هدف تسعى لتحقيقه فسوف تتشتت وتشعر بالإحباط سريعًا. قبل أن تبدأ في دراسة البرمجة، من الضروري أن تبدأ بتعلم علوم الحاسوب إلى جانب تعلم الخوارزميات فهي خطوة أساسية تسرع دراسة البرمجة وتساعدك على التعامل مع الحاسوب وكتابة برامج حاسوبية لحل المشكلات بكفاءة. حدد لغات البرمجة والتقنيات التي تريد البدء بتعلمها بناء على الهدف الذي حددته في الخطوة الأولى وإذا كنت محتارًا في أي لغة يمكنك البدء بها يمكنك التفكير بلغات توصيفية سهلة مثل HTML و CSS أو البدء بإحدى لغات البرمجة السهلة على المبتدئين مثل لغة بايثون Python أو جافا سكريبت JavaScript أو روبي Ruby. تعلم البرمجة أمر يستغرق وقتًا وجهدًا ويتطلب منك تقبل فكرة التعلم بصورة مستمرة، لذا فمن الضروري أن تتحلى بالصبر وتملك نفسًا طويلًا ولا تهمل دراسة أساسيات البرمجة وتتأكد من فهمها بشكل صحيح قبل أن تنتقل لتعلم أمور متقدمة وتبدأ بتطوير مشاريع برمجية فعلية كي لا تحبط وتفشل في تحقيق هدفك. احرص على الجمع بين التعليم النظري والتطبيق العملي، وتأكد أنك مهما قرأت من دروس وأكواد فلن تحقق النتائج المرجوة من دراسة البرمجة إذا لم تقم بتطوير برامج وتطبيقات حقيقية. اختر مصادر تعلم جيدة وحديثة توصل لك المعلومات بطريقة مفهومة وسلسلة وبالترتيب الصحيح، ستجد في أكاديمية حسوب العديد من مصادر التعلم المفيدة من دروس ومقالات مجانية وكتب شاملة وتوثيقات برمجية تساعدك على دراسة البرمجة عن بعد كما ستجد مجموعة متنوعة من الدورات التدريبية المدفوعة التي تساعدك على تعلم البرمجة بطريقة منهجية وتلقي التوجيه اللازم خلال التعلم. وفي الختام أدعوك لمشاهدة هذا الفيديو المفيد للتعرف على أهم خطوات دراسة البرمجة ولغات البرمجة المتنوعة التي يمكنك تعلمها الخلاصة نرجو أن يكون هذا المقال قد أجابك على سؤال كيف يمكن البدء في تعلم البرمجة وساعدك في تحديد طريقة دراسة البرمجة الأنسب لك، وفي الختام يمكن أن نخلص لأن الدراسة الذاتية للبرمجة هي الخيار الأفضل إذا كنت تحب التعلم بشكل مستقل وتشعر بالرغبة في اكتشاف الأمور بنفسك وتملك التنظيم والانضباط الذاتي، في حين تعد الدراسة الجامعية لتعلم البرمجة غي الخيار الأفضل إذا كنت تفضل التعلم الموجه والمنظم وتحتاج لأن تتعلم في بيئة اجتماعية وتتفاعل مع زملاء آخرين خلال الدراسة. وتذكر أنه مهما كان الطريق الذي اخترته فلن تنجح في دراسة البرمجة إلا تحليت بالصبر والمثابرة، والتزمت بالتطبيق العملي واكتسب مهارة تصحيح الأخطاء البرمجية بنفسك وحرصت على تطوير نفسك بصورة مستمرة لتبقى في الصدارة. حظًا موفقًا! اقرأ أيضًا كل ما تود معرفته حول تعلم البرمجة ما هي فوائد تعلم البرمجة؟ تعرف على تخصص هندسة البرمجيات مدخل إلى تطوير البرمجيات Software Development الدليل الشامل لتعلم البرمجة1 نقطة
-
في مقال اليوم سنوضح لك ما هي أكواد البرمجة، وما أهمية تعلمها في عالم اليوم الذي يزداد فيه تعاملنا مع الآلات والأجهزة الرقمية بشكل كبير، وتزداد معه حاجتنا إلى توجيه هذه الأجهزة وتسخيرها لتلبّي حاجاتنا ومتطلباتنا. فكل جهاز رقمي يخطر في بالك اليوم، سواء أكان حاسوبًا أم تلفازًا حديثًا أم جوالًا أم صاروخًا فضائيًّا، لا يعمل إلا بالكود البرمجي. فما هو الكود البرمجي؟ وكيف يعمل؟ وما طريقة كتابته؟ ما هو الكود البرمجي الكود code كلمةٌ إنكليزية الأصل، تطوّر معناها على مرّ العصور فقد كانت تعني في البداية كتابة القوانين، ثم أصبحت تشير إلى نظام تخاطب سري تحكم استخدامه قوانين خاصة، ثم أخيرًا تطور معناها ليصبح نظامًا أو أسلوبًا للتعبير عن المعلومات والتعليمات في صيغة يمكن للحاسوب فهمها. فالكود البرمجي فهو مجموعة من التعليمات أو نظام من القواعد المكتوبة بلغة برمجية معينة. وتستخدم أكواد البرمجة في تطوير مختلف أنواع التطبيقات، كما تستخدم في بناء أنظمة الذكاء الاصطناعي وتعلم الآلة، وبرمجة الألعاب الإلكترونية وغيرها من مجالات البرمجة المختلفة. كانت كتابة الكود البرمجي في البداية عملية صعبة ومعقدة وتعتمد على لغات برمجة منخفضة المستوى وقريبة من مستوى الجهاز أو الآلة التي يعمل عليها مثل لغة الآلة ولغة التجميع، في حين يكتب الكود البرمجي اليوم بلغات عالية المستوى وقريبة للغات البشرية المحكية مثل لغة بايثون وجافا وجافاسكربت وغيرها. بعدها يمرّ هذا الكود البرمجي بمراحل من التفسير interpretation أو التصريف compilation لينتقل من الأسلوب القريب من الفهم البشري إلى ما هو أقرب إلى العتاد الحاسوبي الذي يتعامل مع مواقع ذاكرة الحاسوب ووحدة المعالجة المركزية مباشرة ويدير العمليات فيها. ويُسمّى كود البرمجة الذي يكتبه المبرمج قبل أن يُترجَم كود المصدر أو الكود المصدري source code، وهو الذي تجري على تعليماته بعد ذلك برامج ترجمة أو تفسير لتنتج كودًا آخر بلغة الآلة يُسمّى الكود الهدف target code أو الكود المترجَم compiled code. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن ما معنى كود برمجي نظيف Clean Code نظافة كود البرمجة هو اصطلاح يضمّ عدة معايير ويتبع مجموعة قواعد اعتمدها مجتمع المبرمجين بوصفها مقياسًا لجودة هذا الكود. وتعلم كتابة الأكواد البرمجية النظيفة مهارة لا بدّ منها لكل مطور أو مبرمج محترف يريد أن يعمل في فريق أو شركة أو يبرمج تطبيقات مختلفة، ومن شروط الكود البرمجي النظيف نذكر: أن تكون أسماء المتحولات والدوال المستخدمة في الكود البرمجي ذات معنى ودلالة. أن تكون لكل مهمة محددة وظيفة أو دالة واحدة تنجزها. أن يحتوي على تعليقات توضح عمل الكود البرمجي وتبيّن مواضع اللبس فيه. أن يكون منظَّمًا في الصيغة والإزاحات. ألا يحتوي على تكرار لنفس الكود عدة مرات. أن يُعالج الأخطاء في حال حدوثها. أن يحتوي على اختبارات تفحص وظائفه. إليك مثالًا عن كود نظيف مكتوب بلغة بايثون لحساب مساحات الأشكال يحقق المعايير المطلوبة: import math def calculate_circle_area(radius): """ تقوم هذه الدالة بحساب مساحة دائرة معطاة نصف قطرها. الدخل: radius (float): نصف قطر الدائرة. الخرج: float: مساحة الدائرة. """ # حساب المساحة باستخدام الصيغة πr^2 area = math.pi * radius * radius return area # مثال على استخدام الدالة radius = 5 area = calculate_circle_area(radius) print("مساحة الدائرة التي نصف قطرها", radius, "=", round(area, 2)) لابد أن سنفهم بسهولة كود البرمجة السابق والهدف منه حتى لو لم تكن على دراية مسبقة بلغة البرمجة التي كتب بها، الآن قارن كود البرمجة السابق بالكود التالي غير النظيف الذي يؤدي الوظيفة نفسها: import math def func1(r): x = math.pi * r * r return x x = func1(5) print("area =", x) أنواع الكود البرمجي كما تختلف أهداف البرمجة ومقاصدها، وكما تختلف أنظمة التشغيل والأجهزة، تختلف أنواع الكود البرمجي من جهتين هما: لغة البرمجة المستخدمة لكتابة كود البرمجة. أسلوب كتابة الكود البرمجي. فلنلق نظرة على كل منهما. لغات كتابة أكواد البرمجة لكل لغة برمجة مجال تتفوق فيه على غيرها، وإن كانت معظم لغات البرمجة عالية المستوى اليوم متعددة الاستخدامات بفضل المكتبات المتعددة التي تتوفر فيها. ومن أشهر لغات البرمجة التي يمكنك كتابة أكواد برمجة باستخدامها نذكر: جافاسكريبت JavaScript: تتفوق هذه اللغة في إضافة الديناميكية إلى صفحات الويب، وإن كانت استخداماتها قد اتسعت لتشمل مجالات كثيرة، من بناء الواجهات الخلفية لتطبيقات الويب إلى بناء تطبيقات الجوال. بايثون Python: تصدّرت هذه اللغة مجال الذكاء الاصطناعي وتعلم الآلة، ولطالما جذبت هذه اللغة المبتدئين لسهولة قراءة وكتابة أكوادها البرمجية. كما تتنوع تطبيقات ومجالات لغة بايثون من بناء الواجهات الخلفية لتطبيقات الويب إلى تطبيقات الذكاء الاصطناعي وتطبيقات استخلاص المعلومات من مواقع الويب وأتمتة المهام المتكررة وغير ذلك. جافا Java: تتميز لغة البرمجة جافا بأدائها العالي ومجتمعها الواسع ودعمها للبرمجة كائنية التوجه oop. وتستخدم لغة جافا في العديد من المجالات من أبرزها بناء التطبيقات الضخمة التي تتعامل مع قواعد البيانات، كما تستخدم في بناء الواجهات الخلفية لمواقع وتطبيقات الويب. روبي Ruby: تتميز لغة روبي على غيرها من لغات البرمجة عالية المستوى بسهولة قراءة وكتابة كود البرمجة المكتوب بها. وتعد هذه اللغة من أسهل لغات البرمجة على المبتدئين وتتعدد استخداماتها من تطوير تطبيقات الويب والجوال إلى برمجة الألعاب وتحليل البيانات وحتى تطبيقات الذكاء الصنعي. جو Go: تتصدر لغة البرمجة Go المشهد في التطبيقات المتوازية التي تعتمد على مبدأ خيوط المعالجة المتوازية وتمكنك من الاستفادة من كامل قوة المعالج. وتناسب التطبيقات التي تهتم بالأداء العالي، مثل التطبيقات الشبكية والسحابية وتطوير الويب وتحليل البيانات والألعاب الإلكترونية. أساليب كتابة أكواد البرمجة تتنوع أساليب تنظيم الكود بين لغات البرمجة وبين المطورين. وقد تدعم لغة البرمجة الواحدة عدة أساليب برمجية، وقد تقتصر على أسلوب واحد. وفيما يلي نذكر أهم أساليب كتابة كود البرمجة: البرمجة كائنية التوجه OOP أو البرمجة بالكائنات هي أسلوب في كتابة أكواد البرمجة يعتمد على مفهوم الكائن object الذي يمكن أن يحتوي على بيانات أو خصائص تصفه properties وعلى توابع برمجية methods تتعامل مع هذه البيانات، وتعد البرمجة كائنية التوجه من أهم وأشهر أساليب كتابة الأكواد والشيفرات البرمجية، وهي مدعومة في عدة لغات برمجة مثل جافا وبايثون (التي تتبع برمجة كائنية التوجه قائمة على مفهوم الصنف class) وفي جافاسكريبت (التي تتبع مفهوم برمجة كائنية التوجه قائمة على مفهوم الخاصية prototype). البرمجة الإجرائية Procedural Programming: هي أسلوب في كتابة الكود البرمجي يعتمد على مفهوم الإجراءات ونعني بها سلسلة من الخطوات لإنجاز مهمة محددة وينفذها الحاسوب لدى استدعاء هذه الإجرائية. تدعم لغات بايثون وسي وجافا سكريبت وغيرها مبدأ البرمجةَ الإجرائية. البرمجة الوظيفية Functional Programming: هي نموذج برمجي يعتمد على تطبيق الدوال أو التوابع وتركيبها، وتشيع في اللغات المستعملة في الصناعة والتعليم، مثل لغة وولفرام Wolfram كما تدعمها لغة بايثون وكوتلن Kotlin وغيرها. البرمجة المنطقية Logic Programming: هي نموذج برمجي يعتمد على المنطق الصُّوَري أو الرسمي formal logic، ويُستخدم لاستنتاج قيم مجهولة بناءً على قواعد ومعارف معلومة، من أهم اللغات التي تعتمد على برمجة المنطق لغة برولوغ Prolog. نفذ مشاريعك البرمجية باللغة التي تحتاجها استعن بأفضل المبرمجين في كتابة وتصحيح الأكواد البرمجية على خمسات اطلب خدمتك الآن برامج كتابة الكود البرمجي يعتمد المطورون على برامج تسهّل وتيسّر كتابة الكود البرمجي، منها بيئات التطوير المتكاملة IDEs ومحررات الأكواد البرمجية إذ يمكن للمبرمج استخدام كل بيئات التطوير المتكاملة والمحررات في كتابة وتحرير الأكواد البرمجية، لكن بيئات التطوير المتكاملة تتميز بدعمها لميزات أكبر مثل توفير أدوات مدمجة لتسهيل كتابة الكود وتصريفه وتشغيله وتصحيح أخطائه. ومن أشهر برامج كتابة أكواد البرمجة نذكر: فيجوال استوديو كود Visual Studio Code: أشهر وأوسع بيئات التطوير المتكاملة، تدعم مختلفة أنظمة التشغيل، ومعظم لغات البرمجة. IntelliJ IDEA: من أشهر بيئات التطوير المستعملة للغة جافا Java، ويمكن استعمالها مع لغات أخرى مثل Javascript وغيرها. PyCharm: بيئة تطوير مبنية خصيصًا لتحرير أكواد بايثون، وتدعم لغات برمجة كثيرة أخرى. NetBeans: من بيئات التطوير الشائعة والمجانية، وتدعم البرمجة بلغات جافا وجافا سكريبت و PHP و C++ وغيرها. خطوات كتابة أكواد البرمجة كيف إذًا تبدأ تعلم كتابة أكواد البرمجة؟ إن تعلم لغات البرمجة وفهم مبادئ الخوارزميات وأصول التفكير المنطقي هي البداية التي يجب على كل مهندس برمجيات الانطلاق منها. إليك هذه الخطوات التي تساعدك على كتابة الأكواد البرمجية: أمعن التفكير في المشكلة المطلوب حلها: لا بد من إمعان النظر في المشكلة قبل البدء بكتابة كود البرمجة، يمكنك استخدام الورقة والقلم لفهم المشكلة جيدًا وإيجاد حل منطقي لها، كما يستعمل مهندسو البرمجيات مخططات ووثائق لتحليل المتطلبات وحالات الاستخدام لتطوير البرامج والتطبيقات. قسّم المشكلة إلى مشكلات أصغر قدر الإمكان: بمعنى آخر اعتمد مبدأ فرّق تسُد، فكلما كانت الوحدات البرمجية في كودك محددة وتركز على مهمة واحدة كان الكود أعلى جودة وأفضل أداءً. حدد المدخلات والمخرجات لكود البرمجة ولكل وحداته الجزئية: تفيد هذه المعلومات في كتابة أكواد البرمجة وتسهيل مهمة صيانتها فيما بعد. حدد لغة البرمجة المناسبة لمشكلتك: هل تحتاج المشكلة إلى ذكاء صنعي وتعلم آلة؟ هل تحتاج إلى موقع ويب؟ هل تحتاج إلى تطبيق جوال أو حاسوب؟ لكل خيار من هذه الخيارات لغة برمجة هي الأمثل في نطاقه. ابدأ التطبيق العملي للحل: انتقل من التحليل والتصميم إلى التطبيق والإنجاز، وتذكّر الالتزام بقواعد كتابة الكود النظيف. اختبر أكواد البرمجة التي تكتبها: بعد كتابة الكود، اختبره بوسائل الاختبار اليدوي والبرمجي. توفّر كل لغات البرمجة أدوات لاختبار الوحدات والأنظمة والتكامل بين وحدات النظام. لا تتوقف عن صيانة وتطوير كود البرمجة: فالكود الناجح هو الكود الذي تستمر صيانته ويستمر تطويره بعد تسليم النسخة الأولى منه. لذا احرص على تطويره وإضافة المزيد من المميزات في أي كود تكتبه، وأصلح أي خلل يظهر بعد تسليمه للحصول على منتج برمجي عالي الجودة والكفاءة. توثيق أكواد البرمجة إن توثيق أكواد البرمجة هو العملية المسؤولة عن شرح كيفية عمل الكود وكيفية استخدامه، وهو أمر لا بد منه في كتابة الأكواد البرمجية حتى لو كان الكود البرمجي مكتوبًا بشكل مفهوم بالنسبة لك ولا يحتاج لشرح، فعملية التوثيق تسهّل صيانة الكود البرمجي وتساعدك أنت شخصيًا على تذكر وظيفته عند العودة له بعد فترة من الزمن، كما يسهّل الكود الموثق جيدًا التعاون بين أعضاء الفريق البرمجي ويرفع مستوى التفاهم فيما بينهم. ومن أهم عناصر توثيق كود البرمجة: كتابة التعليقات ضمن كود البرمجة: حيث تساعد التعليقات داخل الكود على توثيق الكود وزيادة وضوحه وفهم كيفية عمله وكيفية استعماله، وتعد كتابة التعليقات كما شرحنا سابقًا أحد من شروط الكود النظيف. إنشاء مستندات التوثيق: هي مستندات تشرح كيفية عمل الكود البرمجي وكيفية استخدامه والاستفادة منه ومن واجهاته مثل واجهات برمجة التطبيقات APIs، وتشرح القرارات البرمجية التي اتخذها فريق التطوير والدوافع وراءها، ويكمن أن تنشر هذه المستندات على هيئة قاعدة معرفة، أو ضمن مستودع الكود أو في ملفات مستقلة تتضمن مقتطفات من الكود البرمجي مرفقة بشرحه. لا تنسَ أن التوثيق يحتاج إلى الصيانة والمراجعة والتطوير مثل الكود تمامًا، كما يجب أن يكون مستواه مناسبًا للفئة المستهدفة. خاتمة بهذا نكون وصلنا إلى ختام مقالنا الذي وضحنا فيه مفهوم أكواد البرمجة. أرجو أن يكون هذا المقال قد وفّر لك ملعومات وافية حول معنى الكود البرمجي، وساعدك على معرفة أنواع أكواد البرمجة وطرق كتابتها المختلفة. وإذا كان لديك أي سؤال بخصوص ما ورد في المقال، فلا تتردد في كتابته في قسم التعليقات. اقرأ أيضًا تعلم كتابة أكواد بايثون من خلال الأمثلة العملية دليل شامل لتعلم البرمجة أساسيات البرمجة تعرف على أشهر لغات برمجة التطبيقات1 نقطة