📝 ملخص الصفحة
📚 المصفوفات (Array Index)
المفاهيم الأساسية
المصفوفة (Array): متغير يحتفظ بقيم متعددة من نفس النوع. لا يمكن تغيير نوع أو حجم المصفوفة بعد الإعلان عنها.
فهرس المصفوفة (Array Index): يستخدم للوصول إلى عناصر المصفوفة (تبدأ الفهرسة من 0).
خريطة المفاهيم
```markmap
إنترنت الأشياء: التطبيقات والهيكليات والأمن
ما تم تعلمه
تطبيقات إنترنت الأشياء
#### الرعاية الصحية الذكية
- استخدام شبكات مستشعرات الجسم
#### الزراعة الذكية
- تحديد مستشعرات الطائرات دون طيار (UAV)
#### الحماية الذكية
- التعامل مع عمليات المراقبة الداخلية والخارجية
- استخدام الأقفال الذكية للتحكم في الوصول
- استخدام أجراس الباب الذكية للتعرف على الزائرين
- دمج كاميرات عالية الدقة تنشط بالحركة
- توفير تحذيرات من التحركات غير الاعتيادية
- إمكانية تنشيط إنذار أو الاتصال بالشرطة
##### الميزات
- المراقبة والإدارة عن بعد عبر تطبيقات الهاتف
- استخدام الذكاء الاصطناعي للكشف المبكر عن الأخطار
- جعل المساكن أكثر أمانًا
- إمكانية الدخول دون مفتاح
- توفير تحديثات فورية عن الأمور غير الاعتيادية
##### المخاطر
- انعدام أو ضعف التشريعات الخاصة بأجهزة إنترنت الأشياء
- أخطار الخصوصية وأمن البيانات
- عدم وجود معايير أمان عالمية
- جمع البيانات الشخصية والحاجة لحمايتها
##### الأجهزة الشائعة
- الأقفال الذكية
- الكاميرات الذكية
- أجهزة كشف الحرائق والدخان
- أجهزة كشف الحركة
الهيكليات والمعايير
#### هيكلية oneM2M
#### الهيكلية العالمية (IoT World Forum)
تقنيات الاتصال
#### RFID مقابل NFC
#### بروتوكولات WPANs
- تحديد البروتوكولات المستخدمة (مثل: بلوتوث، زيجبي)
الأمان والخصوصية
#### أسس الأمان في إنترنت الأشياء
#### تقنيات خصوصية إنترنت الأشياء
- التعرف على التقنيات المستخدمة
برمجة إنترنت الأشياء باستخدام C++
أهداف الوحدة
#### فهم أنظمة الحماية الذكية
- تحديد ميزات ومخاطر نظام الأمان في إنترنت الأشياء
- التعرف على أجهزة إنترنت الأشياء الشائعة في الحماية الذكية
#### تعلم أساسيات لغة C++
- التعرف على أنواع البيانات الشائعة
- استخدام المعاملات (Operators)
- استخدام الجمل الشرطية
- استخدام التكرارات (Loops)
- إنشاء الدوال (Functions)
#### التطبيق العملي
- تحويل اللبنات البرمجية في تينكركاد إلى أوامر C++
- برمجة نظام للحماية الذكية باستخدام لوحة الأردوينو
أساسيات لغة C++
#### أهمية C++
- لغة قوية لأمن المعلومات
- لغة تجميعية عالية المستوى
- تطوير للغة C
- كفاءة وسرعة أداء عالية
#### أنواع البيانات الأساسية
##### القاعدة
- يجب تعريف نوع المتغير قبل استخدامه
##### الأنواع الشائعة
- الأعداد الصحيحة (int): -4, 5
- الأعداد العشرية (float/double): -7.5, 3.14
- النص (char): 'c'
- البيانات المنطقية (bool): true/false
##### مغيرات الأنواع
- يمكن تغيير النوع باستخدام مغيرات مثل (long int)
- المجموعات الممكنة موضحة في جدول
- يمكن للمبرمج تعريف أنواع خاصة
#### قواعد تسمية المتغيرات
- يمكن أن يحتوي على: حروف (A-Z, a-z)، أرقام (0-9)، شرطة سفلية (_)
- لا يمكن أن يبدأ برقم
- لا يمكن أن يكون كلمة أساسية في اللغة (مثل int)
- يمكن تعريفه مع قيمة أو بدونها
#### المصفوفات (Arrays)
##### التعريف
- هيكل بيانات شائع
- متغير يحتفظ بقيم متعددة من نفس النوع
##### صيغة الإعلان
datatype\ arrayName[arraySize];
##### أنواع المصفوفات
###### أحادية البعد
- مثال: `int values[10];`
- تعبئة القيم: `values[10] = {0,1,2,3,4,5,6,7,8,9};`
- الوصول للعنصر: `int a = values[3];` (العنصر الرابع)
###### ثنائية الأبعاد
- مثال: `char keys[4][2];`
- تعبئة القيم: `keys[4][2] = { {1,2}, {3,4}, {5,6}, {7,8} };`
المصطلحات الرئيسة
تقنيات وبروتوكولات
- البلوتوث (Bluetooth)
- زيجبي (Zigbee)
- التشعب (Thread)
- LoRaWAN
- IPv6
المفاهيم الأساسية
- إنترنت أشياء الرعاية الصحية (IoHT)
- النظام الإلكتروني الملموس (CPS)
- آلة إلى آلة (M2M)
- الحوسبة الطرفية (Edge Computing)
المكونات والأجهزة
- مركبة جوية دون طيار (UAV)
- مخطط كهربية القلب (ECG)
- مخطط كهربية الدماغ (EEG)
- لوحة الأردوينو (Arduino)
الشبكات
- شبكة المنطقة الشخصية (PAN)
- شبكة المنطقة الشخصية اللاسلكية (WPAN)
الأدوات
- بيئة محاكاة دوائر أوتوديسك تينكركاد (Autodesk Tinkercad Circuits)
```
نقاط مهمة
- بعد الإعلان عن المصفوفة، لا يمكن تغيير نوعها أو حجمها.
- للوصول إلى عنصر في المصفوفة، يجب استخدام الفهرس (Array Index) الخاص به.
- فهرسة المصفوفات تبدأ من الصفر (0).
- أكثر أنواع المصفوفات شيوعًا هي أحادية البعد وثنائية البعد.
- عند تعبئة مصفوفة ثنائية الأبعاد، تحتاج إلى زوج من القيم لكل صف.
📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
نوع: محتوى تعليمي
لا يمكنك تغيير نوع أو حجم المصفوفة بعد الإعلان عنها، ويمكنك الوصول إلى عناصرها باستخدام الدليل أو ما يسمى بفهرس المصفوفة (Array Index).
نوع: محتوى تعليمي
على سبيل المثال، إذا كنت تريد تخزين 10 قيم صحيحة، يمكنك إنشاء مصفوفة تخزن فيها هذه القيم. عليك أولاً الإعلان عن نوع وحجم المصفوفة:
نوع: محتوى تعليمي
int values[10];
نوع: محتوى تعليمي
تمثل "int" نوع العناصر المخزنة في المصفوفة، و"values" هو اسم المصفوفة وحجمها هو 10، ولتعبئتها بالقيم يستخدم الأمر الآتي:
نوع: محتوى تعليمي
values [10] = {0,1,2,3,4,5,6,7,8,9};
نوع: محتوى تعليمي
للوصول إلى أي من عناصر المصفوفة، تحتاج إلى فهرس العنصر، فيكون الأمر:
نوع: محتوى تعليمي
int a = values[3];
نوع: محتوى تعليمي
يعلن عن متغير باسم a، وهو عدد صحيح، قيمته تساوي العنصر الرابع من المصفوفة "values" (تبدأ الفهرسة من 0). وعلى الرغم من إمكانية استخدام استخدام مصفوفات بأكثر من بعد واحد، إلا أن أكثر أنواع المصفوفات شيوعًا هي المصفوفات أحادية وثنائية الأبعاد. لإنشاء مصفوفة ثنائية الأبعاد، تحتاج إلى حجم المصفوفة بأبعادها. على سبيل المثال:
نوع: محتوى تعليمي
char keys[4][2];
نوع: محتوى تعليمي
يعلن عن مصفوفة تتكون من أربعة صفوف وأعمدة، يمكنها تخزين قيم من نوع "char". لتعبئة ذلك كما في المصفوفة أحادية الأبعاد:
نوع: محتوى تعليمي
keys[4][2] =
{
{1,2},
{3,4},
{5,6},
{7,8}
};
نوع: محتوى تعليمي
ستحتاج هنا إلى زوج من القيم لكل صف من المصفوفة.
📄 النص الكامل للصفحة
لا يمكنك تغيير نوع أو حجم المصفوفة بعد الإعلان عنها، ويمكنك الوصول إلى عناصرها باستخدام الدليل أو ما يسمى بفهرس المصفوفة (Array Index).
على سبيل المثال، إذا كنت تريد تخزين 10 قيم صحيحة، يمكنك إنشاء مصفوفة تخزن فيها هذه القيم. عليك أولاً الإعلان عن نوع وحجم المصفوفة:
int values[10];
تمثل "int" نوع العناصر المخزنة في المصفوفة، و"values" هو اسم المصفوفة وحجمها هو 10، ولتعبئتها بالقيم يستخدم الأمر الآتي:
values [10] = {0,1,2,3,4,5,6,7,8,9};
للوصول إلى أي من عناصر المصفوفة، تحتاج إلى فهرس العنصر، فيكون الأمر:
int a = values[3];
يعلن عن متغير باسم a، وهو عدد صحيح، قيمته تساوي العنصر الرابع من المصفوفة "values" (تبدأ الفهرسة من 0). وعلى الرغم من إمكانية استخدام استخدام مصفوفات بأكثر من بعد واحد، إلا أن أكثر أنواع المصفوفات شيوعًا هي المصفوفات أحادية وثنائية الأبعاد. لإنشاء مصفوفة ثنائية الأبعاد، تحتاج إلى حجم المصفوفة بأبعادها. على سبيل المثال:
char keys[4][2];
يعلن عن مصفوفة تتكون من أربعة صفوف وأعمدة، يمكنها تخزين قيم من نوع "char". لتعبئة ذلك كما في المصفوفة أحادية الأبعاد:
keys[4][2] =
{
{1,2},
{3,4},
{5,6},
{7,8}
};
ستحتاج هنا إلى زوج من القيم لكل صف من المصفوفة.
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 3 بطاقة لهذه الصفحة
ما هو تعريف فهرس المصفوفة (Array Index)؟
- أ) هو اسم المصفوفة المستخدم للإعلان عنها في الكود.
- ب) هو الرقم الذي يستخدم للوصول إلى عنصر محدد داخل المصفوفة، حيث تبدأ الفهرسة عادةً من الصفر.
- ج) هو نوع البيانات التي يمكن أن تخزنها المصفوفة، مثل int أو char.
- د) هو حجم المصفوفة الذي يحدد عدد الأبعاد التي تمتلكها.
الإجابة الصحيحة: b
الإجابة: هو الرقم الذي يستخدم للوصول إلى عنصر محدد داخل المصفوفة، حيث تبدأ الفهرسة عادةً من الصفر.
الشرح: فهرس المصفوفة هو وسيلة للعنونة داخل المصفوفة. عند الإعلان عن مصفوفة مثل `int values[10];`، فإن العناصر تُخزن في مواقع متتالية. للوصول إلى العنصر الأول، نستخدم `values[0]`، وللعنصر الرابع نستخدم `values[3]`. هذا لأن العد يبدأ من الصفر.
تلميح: فكر في كيفية تحديد موقع عنصر معين داخل قائمة مرتبة.
التصنيف: تعريف | المستوى: سهل
ما الفرق الأساسي بين الإعلان عن مصفوفة أحادية البعد وثنائية البعد في لغة البرمجة C؟
- أ) المصفوفة أحادية البعد تخزن أحرفاً فقط، بينما ثنائية البعد تخزن أرقاماً فقط.
- ب) المصفوفة أحادية البعد حجمها ثابت لا يمكن تغييره، بينما حجم ثنائية البعد متغير.
- ج) المصفوفة أحادية البعد تُعلن ببُعد واحد (مثل `int arr[10]`)، بينما المصفوفة ثنائية البعد تُعلن ببُعدين (مثل `char keys[4][2]`) لتمثيل الصفوف والأعمدة.
- د) المصفوفة أحادية البعد تبدأ فهرستها من 1، بينما ثنائية البعد تبدأ فهرستها من 0.
الإجابة الصحيحة: c
الإجابة: المصفوفة أحادية البعد تُعلن ببُعد واحد (مثل `int arr[10]`)، بينما المصفوفة ثنائية البعد تُعلن ببُعدين (مثل `char keys[4][2]`) لتمثيل الصفوف والأعمدة.
الشرح: 1. المصفوفة أحادية البعد: تمثل قائمة خطية من العناصر. مثال: `int values[10];` تخزن 10 عناصر في بُعد واحد.
2. المصفوفة ثنائية البعد: تمثل جدولاً من العناصر (صفوف وأعمدة). مثال: `char keys[4][2];` تخزن 4 صفوف وكل صف به عمودين.
الفرق الأساسي هو في عدد الأبعاد المعلنة، مما يؤثر على بنية تخزين البيانات.
تلميح: ركز على عدد القيم بين الأقواس المربعة `[]` عند تعريف المصفوفة.
التصنيف: فرق بين مفهومين | المستوى: متوسط
ما الخطوة الأولى لاستخدام مصفوفة في البرنامج؟
- أ) تحديد فهرس العنصر الأول.
- ب) تعبئة جميع عناصر المصفوفة بقيم.
- ج) الإعلان عن نوع وحجم المصفوفة.
- د) طباعة محتويات المصفوفة.
الإجابة الصحيحة: c
الإجابة: الإعلان عن نوع وحجم المصفوفة.
الشرح: قبل تعبئة المصفوفة أو الوصول إلى عناصرها، يجب على المبرمج تعريفها للغة البرمجة. تتضمن هذه الخطوة تحديد:
1. نوع البيانات التي ستخزنها (مثل int، char).
2. حجم المصفوفة (عدد العناصر).
مثال: `int values[10];` تُعلن عن مصفوفة من الأعداد الصحيحة تتسع لعشرة عناصر.
تلميح: قبل تخزين أي بيانات، يجب تحضير الحاوية التي ستستقبلها.
التصنيف: صيغة/خطوات | المستوى: سهل