📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
نوع: محتوى تعليمي
يتبع ذلك التعليمات البرمجية التي تستقبل كلمة المرور التي يقوم المستخدم بإدخالها وتتحقق من صحتها. يتم ذلك بالمقارنة بين الأزرار التي يتم الضغط عليها واحداً تلو الآخر بالتتابع مع رقم كلمة المرور الموجود في نفس الموضع.
نوع: محتوى تعليمي
على سبيل المثال، لنفترض أن كلمة المرور التي ضبطت في البداية هي "5456" ويقوم المستخدم بكتابة كلمة المرور "5453". نظراً لأن كل مفتاح يضغط عليه المستخدم سيقارن بمفتاح كلمة المرور المقابل، فإن ما سيحدث هو:
نوع: محتوى تعليمي
5 مقارنة مع 5 (نفس الشيء، لا توجد مشكلة)
4 مقارنة مع 4 (نفسها، لا توجد مشكلة)
5 مقارنة مع 5 (لا توجد مشكلة)
3 مقارنة مع 6 (ليستا متطابقتين، لذا فإن كلمة المرور التي تم الضغط عليها غير صحيحة).
نوع: محتوى تعليمي
عندما يقارن البرنامج بين مفتاحين مختلفين، يجب تحديث المتغير بالمعلومات التي تفيد بأن كلمة المرور غير صحيحة. ولا يفهم ما إذا كان المفتاح الخطأ أو آخره أو في أي مكان بينهما. فالنتيجة أن كلمة المرور بأكملها خطأ. لذلك، ولتخزين هذه المعلومات، يمكنك استخدام متغير منطقي يتم تهيئته على أنه صائب (true)، وعند الضغط على مفتاح خطأ، تتغير قيمة المتغير إلى خطأ (false). وبعد إجراء المقارنة تكتب كلمة المرور الصحيحة، أما إذا كانت هذه القيمة خطأ فهذا يعني أن المستخدم كتب كلمة مرور خطأ.
تنفيذ الدالة بواسطة الجزء من البرنامج
نوع: محتوى تعليمي
يتم تنفيذ الدالة التي تم وصفها أعلاه بواسطة هذا الجزء من البرنامج:
مثال
نوع: محتوى تعليمي
bool correctPass = true;
char buttonPressed;
// this code checks each button pressed against the corresponding password
// e.g. it will check the 1st button pressed against the first digit of the
// password and so on
for (int i = 0; i < 4; i++) {
buttonPressed = keypad.waitKeyFor();
if(password[i] != buttonPressed){
correctPass = false;
}
lcd.setCursor(i, 1);
lcd.print(buttonPressed);
}
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 3 بطاقة لهذه الصفحة
ما الغرض من استخدام المتغير المنطقي (boolean) `correctPass` في مثال التحقق من كلمة المرور؟
- أ) لتخزين قيمة كل مفتاح يتم الضغط عليه من لوحة المفاتيح.
- ب) لتحديد عدد المحاولات الخاطئة التي قام بها المستخدم قبل إقفال النظام.
- ج) لتخزين حالة صحة كلمة المرور المدخلة، حيث يتم تهيئته على `true` ويتغير إلى `false` إذا تم اكتشاف أي خطأ في أي خانة.
- د) لحساب عدد الخانات الصحيحة في كلمة المرور المدخلة وتحديد موقع الخطأ.
الإجابة الصحيحة: c
الإجابة: لتخزين حالة صحة كلمة المرور المدخلة، حيث يتم تهيئته على `true` ويتغير إلى `false` إذا تم اكتشاف أي خطأ في أي خانة.
الشرح: 1. يتم تهيئة المتغير `correctPass` بالقيمة `true` افتراضياً. 2. عند مقارنة كل خانة من كلمة المرور المدخلة مع الخانة المقابلة في كلمة المرور الأصلية، إذا وجد اختلاف، تتغير قيمة `correctPass` إلى `false`. 3. بعد الانتهاء من مقارنة جميع الخانات، تشير قيمة `correctPass` إلى ما إذا كانت كلمة المرور المدخلة صحيحة كاملة (`true`) أم خاطئة (`false`).
تلميح: فكر في آلية تتبع النتيجة النهائية لعملية المقارنة.
التصنيف: مفهوم جوهري | المستوى: متوسط
في مثال التحقق من كلمة المرور، ماذا يحدث إذا كانت كلمة المرور الأصلية '5456' والمدخلة '5453'؟
- أ) يتم قبول كلمة المرور لأن الخانات الثلاث الأولى صحيحة.
- ب) يتم تغيير قيمة المتغير المنطقي `correctPass` إلى `false` لأن الخانة الرابعة (3 مقابل 6) غير متطابقة.
- ج) يتم إعادة تعيين كلمة المرور الأصلية تلقائياً إلى '5453'.
- د) يتم إيقاف عملية المقارنة فوراً دون فحص الخانة الرابعة.
الإجابة الصحيحة: b
الإجابة: يتم تغيير قيمة المتغير المنطقي `correctPass` إلى `false` لأن الخانة الرابعة (3 مقابل 6) غير متطابقة.
الشرح: 1. تتم مقارنة الخانات بالتتابع: 5=5 (صح)، 4=4 (صح)، 5=5 (صح). 2. عند المقارنة بين الخانة الرابعة: 3 ≠ 6. 3. عند اكتشاف هذا الاختلاف، يتم تنفيذ الأمر `correctPass = false;`. 4. النتيجة النهائية هي أن `correctPass` تصبح `false`، مما يشير إلى أن كلمة المرور بأكملها خاطئة.
تلميح: ركز على نتيجة المقارنة عند أول اختلاف يتم اكتشافه.
التصنيف: مفهوم جوهري | المستوى: سهل
ما المبدأ الأساسي الذي يوضحه الكود البرمجي المقدم للتحقق من كلمة المرور؟
- أ) تشفير كلمة المرور المدخلة ومقارنتها مع نسخة مشفرة من كلمة المرور الأصلية.
- ب) مقارنة كلمة المرور المدخلة كسلسلة نصية كاملة مع كلمة المرور الأصلية مرة واحدة.
- ج) مقارنة كل خانة من كلمة المرور المدخلة مع الخانة المقابلة في كلمة المرور الأصلية بالتتابع، وتحديث حالة النتيجة النهائية عند اكتشاف أي اختلاف.
- د) السماح للمستخدم بعدد محدد من المحاولات الخاطئة قبل إقفال النظام.
الإجابة الصحيحة: c
الإجابة: مقارنة كل خانة من كلمة المرور المدخلة مع الخانة المقابلة في كلمة المرور الأصلية بالتتابع، وتحديث حالة النتيجة النهائية عند اكتشاف أي اختلاف.
الشرح: 1. تستخدم الحلقة `for` للتكرار عبر كل خانة من خانات كلمة المرور (4 خانات). 2. في كل تكرار: أ. يتم قراءة مفتاح مضغوط. ب. تتم مقارنة هذا المفتاح مع الرقم الموجود في الموضع المقابل في مصفوفة كلمة المرور الأصلية (`password[i]`). ج. إذا كانا مختلفين، يتم تعيين `correctPass = false`. 3. المبدأ هو التحقق من التطابق التام بين التسلسلين، حيث يؤدي أي خطأ في أي موضع إلى فشل التحقق بالكامل.
تلميح: انظر إلى حلقة `for` والعملية التي تجري داخل كل تكرار.
التصنيف: صيغة/خطوات | المستوى: متوسط