وحدة BTEC IT
البرمجة
Programming
تبدأ وحدة البرمجة من سؤال: هل أنت مبرمج أم كاتب كود؟ ثم تنتقل من التفكير في المشكلة (تفكيك، أنماط، تجريد، تمثيل) إلى أدوات التمثيل (مخطط الانسياب والكيانات)، ثم نماذج البرمجة، ولغات البرمجة وأنواعها وكيف نختار بينها، والمتغيرات وأنواع البيانات، وأخيرًا الاختبار.
البرمجة في BTEC IT ليست حفظ أوامر لغة. هي القدرة على فهم مشكلة عميل، وتصميم حل، وكتابة الكود، واختباره وتحسينه. لذلك تبدأ صفحات هذه الوحدة بطريقة التفكير قبل الكود.
الشرح هنا تعليمي عام: مفاهيم وأمثلة قصيرة وجداول مقارنة، دون حلّ لأي مهمة تقييم.
المفاهيم
- المبرمج وكاتب الكود: ما الفرق وما مبادئ البرمجة الجيدة؟Programmer vs Code Writerكاتب الكود يركز على صياغة الأوامر ليعمل البرنامج بأي طريقة، أما المبرمج فمحلل مشكلات يفهم المتطلبات ويفكك المشكلة ويصمم الحل ثم يكتب كودًا واضحًا قابلًا للصيانة ويختبره بخطة.مقارنةاقرأ
- التفكير الحاسوبي: التفكيك والتعرف على الأنماط والتجريد والتمثيلComputational Thinkingالتفكير الحاسوبي أسلوب منظم لحل المشكلات قبل كتابة الكود: تفكيك المشكلة إلى أجزاء، والتعرف على الأنماط المتشابهة، وتجريد التفاصيل غير المهمة، وتمثيل المشكلة بنموذج مكتوب أو مرسوم.مقارنةاقرأ
- مخطط الانسياب (Flowchart): الرموز ومعانيها وكيف ترسم خوارزميةFlowchart Symbolsمخطط الانسياب رسم يمثل خطوات الحل برموز متصلة بأسهم: بيضاوي للبداية والنهاية، ومستطيل للعملية، ومتوازي أضلاع للإدخال والإخراج، ومعين للقرار بمسارين، وأسهم لاتجاه التنفيذ.مقارنةاقرأ
- تمثيل عناصر المشكلة في البرنامج: المتغيرات والثوابت والعمليات والقرارات والمخرجاتRepresenting Problem Elementsبعد فهم المشكلة وتفكيكها نحدد العناصر التي سيستخدمها البرنامج: متغيرات تتغير، وثوابت لا تتغير، وعمليات حسابية ومنطقية، وقرارات تعتمد على شرط، ومخرجات تُعرض للمستخدم.مقارنةاقرأ
- الكيانات والعلاقات (Entities & Relationships): 1:1 وواحد لمتعدد ومتعدد لمتعددEntities and Relationshipsالكيان (Entity) شيء مهم في النظام نحتاج تخزين بيانات عنه، وله خصائص (Attributes)، وترتبط الكيانات بعلاقات (Relationships) من ثلاثة أنواع: واحد لواحد، واحد لمتعدد، ومتعدد لمتعدد. وفهمها يسبق تصميم قاعدة البيانات والكود.مقارنةاقرأ
- حالات الاختبار: الطبيعية والحدودية والخاطئةTypes of Test Casesخطة اختبار جيدة تجرّب ثلاثة أنواع من الحالات: حالات طبيعية متوقعة، وحالات حدودية عند حدود القاعدة، وحالات خاطئة أو غير متوقعة. فاختبار مثال واحد لا يكفي لإثبات أن البرنامج صحيح.مقارنةاقرأ
- نماذج البرمجة: الإجرائية والكائنية والمعتمدة على الأحداثProgramming Paradigmsنموذج البرمجة هو الأسلوب العام لتنظيم أوامر البرنامج وطريقة التفكير في الحل. الإجرائي يمشي خطوة بخطوة، والكائني يجمع البيانات والدوال في كائنات، والمعتمد على الأحداث ينتظر الأحداث وينفذ معالجات.مقارنةاقرأ
- البرمجة الإجرائية (Procedural): المفاهيم والمزايا والعيوبProcedural Programmingفي البرمجة الإجرائية تُنفَّذ الأوامر بترتيب محدد من الدالة الرئيسية، مع متغيرات وشروط وحلقات ودوال تُقسِّم العمل. هي بسيطة وسريعة لمشاريع صغيرة، لكنها تتشعب وتتكرر عند كبر المشروع وتعقّد بياناته.مفهوماقرأ
- البرمجة كائنية التوجه (OOP): الفئة والكائن والتغليف والوراثة وتعدد الأشكالObject-Oriented ProgrammingOOP تبني البرنامج من كائنات تمثل أشياء من الواقع وتجمع بياناتها ودوالّها. مفاهيمها: الفئة والكائن والخصائص والدوال والمُنشئ والتغليف والوراثة وتعدد الأشكال والتركيب. تناسب الأنظمة الكبيرة لكنها تتطلب تصميمًا أكبر.مقارنةاقرأ
- البرمجة المعتمدة على الأحداث (Event-Driven): الحدث والمعالج والواجهات الرسوميةEvent-Driven Programmingفي البرمجة المعتمدة على الأحداث لا يسير البرنامج بتسلسل ثابت، بل ينتظر حدثًا كضغط زر أو كتابة نص ثم ينفذ معالجًا مرتبطًا به. هي أساس الواجهات الرسومية والتطبيقات التفاعلية.مقارنةاقرأ
- النظام الثنائي (Binary): البت والبايت وكيف يخزن الحاسوب كل شيء بـ 0 و1The Binary Systemالحاسوب يعتمد داخليًا على حالتين كهربائيتين تُمثَّلان بـ 0 و1، لذلك يستخدم النظام الثنائي (أساس 2). كل خانة ثنائية تسمى بت، وكل 8 بتات بايت، وبالبايتات تُمثَّل الأعداد والنصوص والصور والأصوات.مفهوماقرأ
- أنواع لغات البرمجة: الآلة والتجميع وعالية المستوى ووصف المحتوى والنصيةTypes of Programming Languagesلغات المستوى المنخفض (الآلة والتجميع) قريبة من المعالج وتعطي تحكمًا دقيقًا لكنها صعبة، ولغات المستوى العالي (C++ وPython وJava) أقرب للبشر وتُترجم بمترجم أو مفسر. وهناك لغات وصف المحتوى (HTML وXML) واللغات النصية (PHP وPython وRuby).مقارنةاقرأ
- تسمية المتغيرات: camelCase وsnake_case وقواعد الأسماء الواضحةVariable Naming Conventionsالمتغير موقع في الذاكرة يخزن قيمة أثناء التنفيذ. الاسم الجيد معبّر عن نوع البيانات ومعناها وخالٍ من المسافات والرموز غير المسموحة، ويُلتزم بأسلوب واحد ثابت: camelCase أو snake_case.مقارنةاقرأ
- أنواع البيانات الأساسية في البرمجة وإعلان المتغيرات والإسناد والإدخال والإخراجBasic Programming Data Typesالأنواع الأساسية: عدد صحيح، وعدد كسري (حقيقي)، وحرف مفرد، وسلسلة نصية، وقيمة منطقية (صح/خطأ). واختيار النوع المناسب يمنع أخطاء كثيرة، وتختلف طريقة إعلان المتغير وأوامر الإسناد والإدخال والإخراج من لغة لأخرى مع بقاء الفكرة واحدة.مقارنةاقرأ
- لماذا توجد لغات برمجة كثيرة؟ وكيف نختار اللغة المناسبة؟Choosing a Programming Languageلا توجد لغة هي الأفضل مطلقًا، بل لغة أنسب لمجال أو جهاز معين. نختار بحسب نوع الجهاز ونظام التشغيل والأدوات المتاحة ونوع التطبيق: مدمج، جوال، ويب، أو سطح مكتب.مقارنةاقرأ
- متطلبات تشغيل البرنامج عند المستخدم ومتطلبات تطويره عند المبرمجRuntime vs Development Requirementsمتطلبات التشغيل هي ما يحتاجه المستخدم ليعمل البرنامج عنده (جهاز ونظام تشغيل ومكتبات)، ومتطلبات التطوير هي أدوات المبرمج لكتابته (حاسوب وبيئة تطوير ومترجم أو مفسر وأدوات تصحيح ومحاكيات).مقارنةاقرأ
- برمجة الأجهزة المادية والمتحكمات الدقيقة: SPI وJTAG وISPProgramming Embedded Devicesلبرمجة المتحكمات الدقيقة يُوصَل الحاسوب بمبرمج خاص ثم بلوحة الجهاز عبر واجهة مثل SPI أو JTAG. وISP (البرمجة داخل النظام) تعني إعادة برمجة المتحكم وهو مثبت في اللوحة، فيمكن تحديث برنامج الجهاز بعد بيعه.مقارنةاقرأ
- بيئات التطوير وصيانة البرامج والتحكم بالإصدارات (Git)IDEs, Software Maintainability and Version Control (Git)كيف تخفف بيئات التطوير المتكاملة (IDE) صعوبة تعديل البرامج الكبيرة، وكيف يتتبع نظام Git التغييرات ويسهّل العمل الجماعي بمفاهيم Repository وCommit وBranch وPull Request.مقارنةاقرأ
- كيف نقارن لغات البرمجة؟ سهولة الكتابة والوضوح والبيانات والنقل والأداء والصيانةCriteria for Comparing Programming Languagesتُقارَن لغات البرمجة بمعايير: سهولة كتابة البرنامج، ووضوح الكود، والتعامل مع البيانات، والتخزين والحفظ، وقابلية النقل بين الأنظمة، والأداء، وسهولة الصيانة. وكل لغة أقوى في معايير وأضعف في غيرها بحسب تصميمها وبيئتها.مقارنةاقرأ
- المترجم والمفسّر (Compiler vs Interpreter): الفرق ودور Bytecode والآلة الافتراضيةCompiler vs Interpreterالمترجم يحوّل البرنامج كاملًا مرة واحدة إلى ملف تنفيذي فيكون التشغيل سريعًا وتظهر الأخطاء غالبًا أثناء البناء، والمفسّر يشغّل الكود خطوة بخطوة أثناء التنفيذ فيناسب التجارب السريعة لكنه أبطأ نسبيًا. وبعض اللغات تستخدم حلًّا وسطًا: Bytecode وآلة افتراضية.مقارنةاقرأ
