>> ZAMYLA تشان: مبروك على الانتهاء الخاص
أول زوجين من برامج C.
وأنا أعلم أن أول غزوة الخاص في بناء جملة C يمكن ان تكون شاقة.
ولكن أود أن أؤكد لكم، في نهاية بالطبع، عليك أن تكون قادرا على النظر في
أول زوجين من المهام و اكمالها في غضون دقائق.
>> الآن بعد أن كنت الحصول على أكثر دراية مع بناء الجملة، دعونا نصل الى قيصر.
في قيصر، وسيكون المستخدم تقديم مفتاح صحيح كما سطر الأوامر
حجة، ثم أدخل سهل رسالة نصية في موجه.
سيقوم البرنامج ثم شفر يحول الى شفرة النص والطباعة
رسالة المشفر بهم.
>> وتشفر لقيصر هو بسيط جدا.
تحول كل حرف، في حياتهم نص عادي، من خلال المفتاح.
ونتيجة لذلك، كما انها آمنة جدا.
ولكن تنفيذ قيصر سوف أعرض لنا ASCIIMath ومجموعة البيانات
الهياكل.
أننا سنصل إلى أكثر تعقيدا الاصفار في وقت لاحق.
مع مفتاح قيصر 2، الحرف A في وسيمثل نص عادي من قبل
الحرف C في النص المشفر لC وبعد رسالتين A. B سيكون
ممثلة D و C بواسطة E. نحو نهاية الحروف الأبجدية، W هو
ممثلة Y، Z. وX بواسطة Y ولكن لا يملك رسالتين بعد ذلك، حتى
والاصفار يلتف حول الأبجدية.
وهكذا مثلت Y في نص عادي من قبل (أ) في النص المشفر، وZ بواسطة B. ويجوز
مساعدة لعرض قيصر سايفر مثل عجلة الأبجدية المستمر.
>> لشفر نصوصها، المستخدم ستدخل حجتين
في سطر الأوامر -
. / قيصر تليها مفتاح.
كما هو الحال دائما، لا يمكننا أن نثق المستخدم تماما للدخول المدخلات التي تجعل
شعور لبرنامجنا.
لذلك سيكون لدينا للتحقق من صحة الخاصة أمر سطر الإدخال.
>> بدلا من استخدام باطلة الرئيسي كثافة العمليات، ونحن باستخدام الباحث الرئيسي، وكثافة العمليات ARGC، ARGV السلسلة.
يمثل ARGC متغير عدد صحيح عدد الوسيطات التي تم تمريرها إلى
سطر الأوامر.
وARGV هو صفيف، أو التفكير في الأمر على النحو قائمة من الحجج تمريره.
>> وذلك لقيصر، كيف يمكننا التحقق من صحة إدخال المستخدم؟
كذلك، ينبغي إلا أن يكون دخول اثنين من وسائط سطر الأوامر -
. / قيصر ومفتاح.
حتى إذا ARGC ليس 2، وهذا يعني أن إما أنها نسيت مفتاح وعادل
دخل. / قيصر، أو أنها دخلت مفاتيح متعددة.
>> إذا كان هذا هو الحال، ثم عليك تريد طباعة التعليمات
وإنهاء البرنامج.
وأنها سوف تحتاج إلى المحاولة مرة أخرى من سطر الأوامر.
ولكن حتى لو ARGC هو 2، عليك تحتاج إلى التحقق ما إذا كانت
تعطيك مفتاح صالح.
لقيصر، تحتاج إلى عدد صحيح.
ولكن ARGV هي مجموعة من السلاسل.
كيف يمكنك الوصول إلى هذا المفتاح؟
>> نظرة سريعة على المصفوفات -
هياكل البيانات التي تحمل متعددة قيم نفس نوع البيانات.
الإدخالات فهرستها من الصفر، وهذا يعني أن العنصر الأول هو مؤشر الصفر
والعنصر الأخير هو في حجم المؤشر ناقص 1، حيث حجم عدد
العناصر في الصفيف.
>> إذا أنا أعلن صندوق بريد صفيف سلسلة جديدة من طول 3، بصريا، و
يبدو مثل هذا.
ثلاث حاويات للسلاسل ، جنبا إلى جنب.
للوصول إلى أي عنصر، وكنت اكتب اسم للصفيف ثم تشير
المؤشر بين قوسين معقوفين.
هنا، أنا تعيين قيمة لكل عنصر، تماما كما كنت ستفعل مع أي
متغير سلسلة أخرى.
>> حتى الوصول إلى وسائط سطر الأوامر لدينا، كل ما علينا القيام به هو الوصول
العنصر حق مجموعة ARGV.
إذا دخل المستخدم. / فريق اطلاقه الصواريخ على المحطة، ARGV 0 سوف
يكون. / اطلاقه.
ARGV سيكون فريق، و ARG2 ستكون الصواريخ.
>> الآن نستطيع الوصول لدينا مفتاح، ما زلنا بحاجة لجعل
متأكد من أنه صحيح.
نحن بحاجة إلى تحويلها إلى عدد صحيح.
ولكننا لا يمكن أن يلقي مثل فعلناه سابقا.
لحسن الحظ، فإن هناك وظيفة لY يعتني هذا بالنسبة لنا وحتى بإرجاع 0
إذا كانت السلسلة لا يمكن تحويلها إلى عدد صحيح.
والامر متروك لكم، على الرغم من أن أقول المستخدم لماذا كنت سوف لا
السماح للبرنامج والمضي قدما.
تخزين نتيجة الألف إلى Y في صحيح، وأنه يوجد لديك المفتاح الخاص بك.
الجزء التالي هو بسيط.
مطالبة المستخدم لنصهم عادي، والتي سوف تكون من نوع بيانات سلسلة.
لحسن الحظ بالنسبة لنا، وإدخالها عن مستخدم سلاسل صالحة.
>> الآن أن لدينا كل المدخلات الضرورية من المستخدم، وحان الوقت بالنسبة لنا ل
شفر رسالتهم.
مفهوم قيصر بسيط يكفي لفهم.
ولكن كيف يمكن للجهاز الكمبيوتر الخاص بك تعرف أي الرسائل تأتي بعد واحد آخر؟
>> هنا حيث يأتي جدول ASCII فيها.
كل حرف له عدد صحيح عدد المرتبطة به.
العاصمة (أ) هو 65.
العاصمة B هو 66.
صغيرة على 97.
صغيرة ب 98.
ولكن الأحرف لا تقتصر إلى أرقام أبجدية فقط.
على سبيل المثال، رمز @ هو ASCII عدد 64.
>> قبل التعامل مع السلسلة بأكملها، دعونا نتظاهر لدينا فقط لتحويل
حرف واحد.
حسنا، نحن نريد فقط أن تحول الفعلية رسائل في نص عادي، وليس
أحرف أو أرقام.
وبالتالي فإن أول شيء سنقوم تريد الاختيار هو ما إذا كان الحرف هو في
الأبجدية.
>> وظيفة isalpha لا يفعل ذلك ل لنا وإرجاع قيمة منطقية -
صحيح إذا كان حرف هو حرف، إذا كاذبة خلاف ذلك.
اثنين من الوظائف المفيدة الأخرى isupper وislower، مع
أسماء لا تحتاج إلى شرح.
أنها العودة الحقيقية إذا كان الحرف نظرا هي كبيرة أو صغيرة،
على التوالي.
لأنها هي القيم المنطقية، وانهم من المفيد استخدام كشروط.
>> إذا isalpha إرجاع true، ستحتاج لتحويل هذا الحرف بواسطة مفتاح.
لذلك دعونا إلى فتح ASCIIMath والقيام ببعض الرياضيات ASCII.
استخدام مشابه جدا للاستخدام لقيصر، ويأخذ في مفتاح في
سطر الأوامر.
>> إذا قمت بتشغيل ASCIIMath 5، يبدو أن أضيف 5 لذلك، إعطائي إلكتروني و، و
عرض قيمة ASCII.
لذلك دعونا نلقي نظرة على البرنامج.
>> كنت قد يتساءل، والحق هنا، لماذا الرسالة هو عدد صحيح، عندما يكون
بوضوح، حسنا، بريد إلكتروني.
اتضح أن الشخصيات و أعداد صحيحة قابلة للتبادل.
عن طريق وضع حرف A في واحد علامات اقتباس، يمكن تخزين عدد صحيح
قيمة ASCII رأس المال A. كن حذرا، وإن كان.
كنت في حاجة إلى ملابس واحدة.
دون علامات اقتباس مفردة، و أن المترجم البحث عن متغير
اسمه A، وليس الحرف.
>> ثم أقوم بإضافة حرف ومفتاح، تخزين خلاصة القول في كثافة المتغيرات نتيجة.
على الرغم من أن النتيجة هي من نوع البيانات صحيح، يستخدم بيان printf بلدي
٪ ج نائبا للأحرف.
وبالتالي فإن البرنامج يطبع حرف المرتبطة نتيجة عدد صحيح.
وبما أننا طباعة عدد صحيح تشكل كذلك استخدام٪ d، ونحن نرى
عدد كذلك.
حتى الآن يمكنك أن ترى أننا علاج الشخصيات و
الأعداد الصحيحة، والعكس بالعكس.
>> دعونا اختبار ASCIIMath قليلة أكثر من مرة باستخدام 25 كمفتاح.
نحصل على ض إلكتروني.
الآن ونحن نحاول 26.
نحن نريد الحصول على بريد إلكتروني لذلك، ولكن بدلا من ذلك نحصل على قوس الأيسر.
لذلك من الواضح، فقط بإضافة ومفتاح إلكتروني لا تفعل.
نحن بحاجة لمعرفة صيغة للالتفاف حول الحروف الأبجدية، مثل لدينا
مثلا في بداية فعلت.
>> صيغة لقيصر التحول هو كما يلي.
ج يساوي زائد ع ك نمطية 26.
تذكر أن نمطية هو مفيد العملية التي يعطينا الباقي
تقسيم رقم واحد من قبل الطرف الآخر.
دعونا تطبيق هذه الصيغة على سهل نص الرسالة مع مفتاح 2.
قيمة ASCII من ذ هو 89، والتي يعطينا 91 نمطية 26،
أي ما يعادل 13 -
بالتأكيد ليست قيمة ASCII من ذلك، والذي هو 67.
>> النكتة لي الآن والابتعاد عن قيم ASCII إلى الفهرس الأبجدي
حيث A هو صفر وZ هو 25، وهذا يعني أن Y هو 24.
24 زائد 2، 6 نمطية، يعطينا 26، نمطية 26، 0، والذي هو
الفهرس الأبجدي ل.
لذلك يبدو أن هذه الصيغة تنطبق على الفهرس الأبجدي من الرسالة و
لا قيمة ASCII لها.
>> ولكن عليك أن تبدأ مع القيم ASCII.
وطباعة الحرف المشفر، ستحتاج قيمة ASCII كذلك.
والامر متروك لكم، ثم، لمعرفة كيفية التبديل ذهابا وإيابا.
>> بمجرد معرفة الصيغة الصحيحة لحرف واحد، كل ما عليك القيام به
يتم تطبيق نفس الصيغة على كل حرف في النص العادي -
إلا إذا تلك الرسالة هو الأبجدي، بالطبع.
وتذكر أنك بحاجة إلى المحافظة القضية، العلوي أو السفلي، حيث ان
وisUpper وظائف isLower ذكرت سابقا سيكون في متناول اليدين.
قد يكون لديك اثنين من الصيغ -
واحد للأحرف كبيرة واحد للصغيرة.
حتى isUpper على isLower سوف تساعدك تحديد أي صيغة لتطبيقها.
>> كيف يمكن تطبيق الصيغة الخاصة بك على كل حرف واحد في سلسلة؟
حسنا، سلسلة هو مجرد مجموعة من الأحرف.
حتى تتمكن من الوصول إلى كل حرف تجمع أكثر من كل حرف في
سلسلة في حلقة for.
أما بالنسبة للشرط الخاص للحلقة، وظيفة strlen، لسلسلة
طول، وسوف يأتي في متناول اليدين.
فإنه يأخذ في سلسلة كمدخل و إرجاع طول هذه السلسلة.
تأكد من تضمين المكتبة الحق استخدام الدالة طول السلسلة.
>> وهناك لديك المشفر الخاص بك.
اسمي هو Zamyla.
و[يتكلم CODE].