🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 7 بطاقة لهذه الصفحة
ما هي الخطوات الأساسية التي تنفذها دالة caesar_encrypt لتشفير رسالة باستخدام خوارزمية قيصر؟
الإجابة: 1. إنشاء قائمة بالأحرف الأبجدية (صغيرة وكبيرة). 2. إنشاء سلسلة نصية فارغة لتخزين الرسالة المشفرة. 3. التكرار عبر كل حرف في الرسالة الأصلية. 4. التحقق إذا كان الحرف حرفاً صغيراً أو كبيراً. 5. إيجاد مؤشر الحرف في القائمة الأبجدية. 6. حساب المؤشر الجديد بإضافة المفتاح (key) ثم تطبيق عملية modulo 26. 7. إضافة الحرف الجديد المقابل للمؤشر الجديد إلى الرسالة المشفرة. 8. إرجاع الرسالة المشفرة النهائية.
الشرح: تتبع الخوارزمية نهجاً منهجياً: تحدد الأبجدية المرجعية، ثم تعالج كل حرف على حدة عن طريق إزاحته بمقدار ثابت (المفتاح)، مع الحفاظ على الأحرف غير الأبجدية كما هي.
تلميح: ركز على العمليات المنطقية المتسلسلة داخل الحلقة التكرارية (for loop) وكيفية معالجة كل نوع من الأحرف.
التصنيف: صيغة/خطوات | المستوى: متوسط
ما هو الغرض من استخدام العملية (char_index + key) % 26 في خوارزمية تشفير قيصر؟
الإجابة: الغرض هو ضمان أن المؤشر الجديد للحرف المشفر يبقى ضمن نطاق الأبجدية (من 0 إلى 25). عملية الجمع (+ key) تقوم بإزاحة الحرف. عملية modulo (%) تضمن أنه إذا تجاوز المؤشر الناتج نهاية الأبجدية (أي أصبح 26 أو أكثر)، فإنه يلتف ويعود إلى بداية الأبجدية.
الشرح: بدون عملية modulo، إذا حاولنا إزاحة الحرف 'z' بمفتاح 3، فسنحصل على مؤشر خارج النطاق (25+3=28). عملية %26 تحول 28 إلى 2، مما يعيدنا إلى الحرف 'c'، وبذلك نحافظ على العملية ضمن الحلقة الأبجدية.
تلميح: فكر في ما يحدث عندما يكون مجموع (مؤشر الحرف + المفتاح) أكبر من أو يساوي عدد أحرف الأبجدية الإنجليزية.
التصنيف: مفهوم جوهري | المستوى: صعب
كيف تتعامل دالة تشفير قيصر مع الأحرف التي ليست حروفاً أبجدية (مثل المسافات أو علامات الترقيم)؟
الإجابة: تتعامل معها عن طريق إضافتها إلى الرسالة المشفرة كما هي دون أي تغيير. يحدث هذا في الفرع else من الشروط داخل الحلقة التكرارية.
الشرح: هذه ميزة مهمة في الخوارزمية تحافظ على قابلية قراءة تنسيق الرسالة الأساسي، حيث تترك الرموز غير الأبجدية سليمة وتطبق الإزاحة على الأحرف فقط.
تلميح: انظر إلى الجزء من الكود الذي لا يتحقق فيه شرط أن يكون الحرف ضمن الأبجدية الصغيرة أو الكبيرة.
التصنيف: مفهوم جوهري | المستوى: سهل
ما هي الخطوات الأساسية التي تنفذها دالة caesar_encrypt لتشفير رسالة باستخدام خوارزمية قيصر؟
الإجابة: 1. إنشاء قائمة بالأحرف الأبجدية (صغيرة وكبيرة). 2. إنشاء سلسلة نصية فارغة لتخزين الرسالة المشفرة. 3. التكرار عبر كل حرف في الرسالة الأصلية. 4. التحقق مما إذا كان الحرف حرفاً صغيراً أو كبيراً. 5. إيجاد مؤشر الحرف في القائمة الأبجدية. 6. تحريك الحرف إلى اليمين بمقدار المفتاح (key) باستخدام العملية الحسابية (char_index + key) % 26. 7. إضافة الحرف المستبدل إلى الرسالة المشفرة. 8. إرجاع الرسالة المشفرة النهائية.
الشرح: تتبع الخوارزمية نهجاً منهجياً: تحدد المجموعة المرجعية (الأبجدية)، ثم تعالج كل حرف على حدة عن طريق إزاحته بمقدار ثابت، مع الحفاظ على الأحرف غير الأبجدية كما هي.
تلميح: ركز على العمليات المنطقية الرئيسية داخل الحلقة التكرارية (for loop) وكيفية معالجة كل نوع من الأحرف.
التصنيف: صيغة/خطوات | المستوى: متوسط
في خوارزمية تشفير قيصر، ماذا يحدث للحرف إذا لم يكن حرفاً أبجدياً (مثل رقم أو مسافة)؟
الإجابة: يُضاف الحرف إلى الرسالة المشفرة كما هو دون أي تغيير.
الشرح: تهتم خوارزمية قيصر بتشفير الأحرف الأبجدية فقط. أي رمز آخر (أرقام، رموز، مسافات) يبقى في موضعه الأصلي في النص المشفر لضمان قابلية قراءة الرسالة وهيكلتها.
تلميح: انظر إلى الجزء من الكود الذي يعالج الحالات التي لا تنتمي إلى أحد الشرطين الرئيسيين (if و elif).
التصنيف: مفهوم جوهري | المستوى: سهل
ما الغرض من استخدام العملية الحسابية (char_index + key) % 26 في كود تشفير قيصر؟
الإجابة: لضمان أن المؤشر الجديد للحرف (new_char_index) يبقى دائماً ضمن نطاق الأبجدية (من 0 إلى 25)، حتى إذا أدت الإضافة إلى تجاوز نهاية القائمة، حيث يعيدها العملية إلى البداية.
الشرح: معامل الباقي (%) يضمن 'التفاف' المؤشر حول الأبجدية. على سبيل المثال، إذا كان الحرف 'z' (مؤشر 25) والمفتاح 3، فإن (25+3)%26 = 2، والذي سيعود إلى الحرف 'c'.
تلميح: فكر في ما يحدث إذا كان char_index + key يساوي 26 أو أكثر. ماذا يمثل الرقم 26 في هذا السياق؟
التصنيف: مفهوم جوهري | المستوى: صعب
ما الفرق الأساسي في المعالجة بين الأحرف الصغيرة (lowercase) والأحرف الكبيرة (uppercase) في دالة caesar_encrypt؟
الإجابة: يتم معالجة كل نوع باستخدام قائمة أبجدية منفصلة خاصة به (alphabet_lower للأحرف الصغيرة و alphabet_upper للأحرف الكبيرة)، ولكن تطبق عليهما نفس منطق الإزاحة باستخدام المفتاح.
الشرح: هذا الفصل ضروري للحفاظ على حالة الأحرف (case-sensitive) في النص المشفر. الحرف 'A' المشفر يجب أن ينتج حرفاً كبيراً، و 'a' يجب أن ينتج حرفاً صغيراً، حتى لو كان لهما نفس الموضع النسبي في الأبجدية.
تلميح: قارن بين كتتي الكود داخل شرط if char in alphabet_lower وشرط elif char in alphabet_upper.
التصنيف: فرق بين مفهومين | المستوى: متوسط