1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA تشان: مبروك على الانتهاء الخاص 3 00:00:11,270 --> 00:00:13,200 أول زوجين من برامج C. 4 00:00:13,200 --> 00:00:16,379 وأنا أعلم أن أول غزوة الخاص في بناء جملة C يمكن ان تكون شاقة. 5 00:00:16,379 --> 00:00:20,060 ولكن أود أن أؤكد لكم، في نهاية بالطبع، عليك أن تكون قادرا على النظر في 6 00:00:20,060 --> 00:00:23,870 أول زوجين من المهام و اكمالها في غضون دقائق. 7 00:00:23,870 --> 00:00:27,830 >> الآن بعد أن كنت الحصول على أكثر دراية مع بناء الجملة، دعونا نصل الى قيصر. 8 00:00:27,830 --> 00:00:31,720 في قيصر، وسيكون المستخدم تقديم مفتاح صحيح كما سطر الأوامر 9 00:00:31,720 --> 00:00:35,300 حجة، ثم أدخل سهل رسالة نصية في موجه. 10 00:00:35,300 --> 00:00:38,050 سيقوم البرنامج ثم شفر يحول الى شفرة النص والطباعة 11 00:00:38,050 --> 00:00:40,020 رسالة المشفر بهم. 12 00:00:40,020 --> 00:00:42,980 >> وتشفر لقيصر هو بسيط جدا. 13 00:00:42,980 --> 00:00:46,455 تحول كل حرف، في حياتهم نص عادي، من خلال المفتاح. 14 00:00:46,455 --> 00:00:49,220 ونتيجة لذلك، كما انها آمنة جدا. 15 00:00:49,220 --> 00:00:53,850 ولكن تنفيذ قيصر سوف أعرض لنا ASCIIMath ومجموعة البيانات 16 00:00:53,850 --> 00:00:54,460 الهياكل. 17 00:00:54,460 --> 00:00:57,510 أننا سنصل إلى أكثر تعقيدا الاصفار في وقت لاحق. 18 00:00:57,510 --> 00:01:01,680 مع مفتاح قيصر 2، الحرف A في وسيمثل نص عادي من قبل 19 00:01:01,680 --> 00:01:07,580 الحرف C في النص المشفر لC وبعد رسالتين A. B سيكون 20 00:01:07,580 --> 00:01:12,450 ممثلة D و C بواسطة E. نحو نهاية الحروف الأبجدية، W هو 21 00:01:12,450 --> 00:01:18,550 ممثلة Y، Z. وX بواسطة Y ولكن لا يملك رسالتين بعد ذلك، حتى 22 00:01:18,550 --> 00:01:21,070 والاصفار يلتف حول الأبجدية. 23 00:01:21,070 --> 00:01:27,190 وهكذا مثلت Y في نص عادي من قبل (أ) في النص المشفر، وZ بواسطة B. ويجوز 24 00:01:27,190 --> 00:01:32,080 مساعدة لعرض قيصر سايفر مثل عجلة الأبجدية المستمر. 25 00:01:32,080 --> 00:01:35,760 >> لشفر نصوصها، المستخدم ستدخل حجتين 26 00:01:35,760 --> 00:01:37,090 في سطر الأوامر - 27 00:01:37,090 --> 00:01:40,010 . / قيصر تليها مفتاح. 28 00:01:40,010 --> 00:01:44,710 كما هو الحال دائما، لا يمكننا أن نثق المستخدم تماما للدخول المدخلات التي تجعل 29 00:01:44,710 --> 00:01:45,800 شعور لبرنامجنا. 30 00:01:45,800 --> 00:01:50,670 لذلك سيكون لدينا للتحقق من صحة الخاصة أمر سطر الإدخال. 31 00:01:50,670 --> 00:01:57,285 >> بدلا من استخدام باطلة الرئيسي كثافة العمليات، ونحن باستخدام الباحث الرئيسي، وكثافة العمليات ARGC، ARGV السلسلة. 32 00:01:57,285 --> 00:02:01,730 يمثل ARGC متغير عدد صحيح عدد الوسيطات التي تم تمريرها إلى 33 00:02:01,730 --> 00:02:02,880 سطر الأوامر. 34 00:02:02,880 --> 00:02:09,070 وARGV هو صفيف، أو التفكير في الأمر على النحو قائمة من الحجج تمريره. 35 00:02:09,070 --> 00:02:12,000 >> وذلك لقيصر، كيف يمكننا التحقق من صحة إدخال المستخدم؟ 36 00:02:12,000 --> 00:02:15,870 كذلك، ينبغي إلا أن يكون دخول اثنين من وسائط سطر الأوامر - 37 00:02:15,870 --> 00:02:18,150 . / قيصر ومفتاح. 38 00:02:18,150 --> 00:02:22,340 حتى إذا ARGC ليس 2، وهذا يعني أن إما أنها نسيت مفتاح وعادل 39 00:02:22,340 --> 00:02:27,230 دخل. / قيصر، أو أنها دخلت مفاتيح متعددة. 40 00:02:27,230 --> 00:02:29,770 >> إذا كان هذا هو الحال، ثم عليك تريد طباعة التعليمات 41 00:02:29,770 --> 00:02:30,910 وإنهاء البرنامج. 42 00:02:30,910 --> 00:02:34,320 وأنها سوف تحتاج إلى المحاولة مرة أخرى من سطر الأوامر. 43 00:02:34,320 --> 00:02:37,430 ولكن حتى لو ARGC هو 2، عليك تحتاج إلى التحقق ما إذا كانت 44 00:02:37,430 --> 00:02:39,100 تعطيك مفتاح صالح. 45 00:02:39,100 --> 00:02:40,730 لقيصر، تحتاج إلى عدد صحيح. 46 00:02:40,730 --> 00:02:43,260 ولكن ARGV هي مجموعة من السلاسل. 47 00:02:43,260 --> 00:02:46,490 كيف يمكنك الوصول إلى هذا المفتاح؟ 48 00:02:46,490 --> 00:02:47,850 >> نظرة سريعة على المصفوفات - 49 00:02:47,850 --> 00:02:51,410 هياكل البيانات التي تحمل متعددة قيم نفس نوع البيانات. 50 00:02:51,410 --> 00:02:55,350 الإدخالات فهرستها من الصفر، وهذا يعني أن العنصر الأول هو مؤشر الصفر 51 00:02:55,350 --> 00:03:00,260 والعنصر الأخير هو في حجم المؤشر ناقص 1، حيث حجم عدد 52 00:03:00,260 --> 00:03:02,850 العناصر في الصفيف. 53 00:03:02,850 --> 00:03:07,380 >> إذا أنا أعلن صندوق بريد صفيف سلسلة جديدة من طول 3، بصريا، و 54 00:03:07,380 --> 00:03:08,570 يبدو مثل هذا. 55 00:03:08,570 --> 00:03:11,520 ثلاث حاويات للسلاسل ، جنبا إلى جنب. 56 00:03:11,520 --> 00:03:15,445 للوصول إلى أي عنصر، وكنت اكتب اسم للصفيف ثم تشير 57 00:03:15,445 --> 00:03:18,080 المؤشر بين قوسين معقوفين. 58 00:03:18,080 --> 00:03:21,610 هنا، أنا تعيين قيمة لكل عنصر، تماما كما كنت ستفعل مع أي 59 00:03:21,610 --> 00:03:24,310 متغير سلسلة أخرى. 60 00:03:24,310 --> 00:03:29,020 >> حتى الوصول إلى وسائط سطر الأوامر لدينا، كل ما علينا القيام به هو الوصول 61 00:03:29,020 --> 00:03:31,690 العنصر حق مجموعة ARGV. 62 00:03:31,690 --> 00:03:37,360 إذا دخل المستخدم. / فريق اطلاقه الصواريخ على المحطة، ARGV 0 سوف 63 00:03:37,360 --> 00:03:38,950 يكون. / اطلاقه. 64 00:03:38,950 --> 00:03:45,010 ARGV سيكون فريق، و ARG2 ستكون الصواريخ. 65 00:03:45,010 --> 00:03:47,670 >> الآن نستطيع الوصول لدينا مفتاح، ما زلنا بحاجة لجعل 66 00:03:47,670 --> 00:03:49,040 متأكد من أنه صحيح. 67 00:03:49,040 --> 00:03:51,060 نحن بحاجة إلى تحويلها إلى عدد صحيح. 68 00:03:51,060 --> 00:03:54,680 ولكننا لا يمكن أن يلقي مثل فعلناه سابقا. 69 00:03:54,680 --> 00:03:58,800 لحسن الحظ، فإن هناك وظيفة لY يعتني هذا بالنسبة لنا وحتى بإرجاع 0 70 00:03:58,800 --> 00:04:02,110 إذا كانت السلسلة لا يمكن تحويلها إلى عدد صحيح. 71 00:04:02,110 --> 00:04:04,450 والامر متروك لكم، على الرغم من أن أقول المستخدم لماذا كنت سوف لا 72 00:04:04,450 --> 00:04:06,220 السماح للبرنامج والمضي قدما. 73 00:04:06,220 --> 00:04:10,710 تخزين نتيجة الألف إلى Y في صحيح، وأنه يوجد لديك المفتاح الخاص بك. 74 00:04:10,710 --> 00:04:12,070 الجزء التالي هو بسيط. 75 00:04:12,070 --> 00:04:15,940 مطالبة المستخدم لنصهم عادي، والتي سوف تكون من نوع بيانات سلسلة. 76 00:04:15,940 --> 00:04:18,339 لحسن الحظ بالنسبة لنا، وإدخالها عن مستخدم سلاسل صالحة. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> الآن أن لدينا كل المدخلات الضرورية من المستخدم، وحان الوقت بالنسبة لنا ل 79 00:04:24,760 --> 00:04:26,520 شفر رسالتهم. 80 00:04:26,520 --> 00:04:29,200 مفهوم قيصر بسيط يكفي لفهم. 81 00:04:29,200 --> 00:04:33,750 ولكن كيف يمكن للجهاز الكمبيوتر الخاص بك تعرف أي الرسائل تأتي بعد واحد آخر؟ 82 00:04:33,750 --> 00:04:36,100 >> هنا حيث يأتي جدول ASCII فيها. 83 00:04:36,100 --> 00:04:39,420 كل حرف له عدد صحيح عدد المرتبطة به. 84 00:04:39,420 --> 00:04:41,380 العاصمة (أ) هو 65. 85 00:04:41,380 --> 00:04:43,310 العاصمة B هو 66. 86 00:04:43,310 --> 00:04:45,260 صغيرة على 97. 87 00:04:45,260 --> 00:04:47,590 صغيرة ب 98. 88 00:04:47,590 --> 00:04:50,770 ولكن الأحرف لا تقتصر إلى أرقام أبجدية فقط. 89 00:04:50,770 --> 00:04:56,020 على سبيل المثال، رمز @ هو ASCII عدد 64. 90 00:04:56,020 --> 00:04:59,690 >> قبل التعامل مع السلسلة بأكملها، دعونا نتظاهر لدينا فقط لتحويل 91 00:04:59,690 --> 00:05:01,220 حرف واحد. 92 00:05:01,220 --> 00:05:04,640 حسنا، نحن نريد فقط أن تحول الفعلية رسائل في نص عادي، وليس 93 00:05:04,640 --> 00:05:06,020 أحرف أو أرقام. 94 00:05:06,020 --> 00:05:09,100 وبالتالي فإن أول شيء سنقوم تريد الاختيار هو ما إذا كان الحرف هو في 95 00:05:09,100 --> 00:05:10,430 الأبجدية. 96 00:05:10,430 --> 00:05:14,460 >> وظيفة isalpha لا يفعل ذلك ل لنا وإرجاع قيمة منطقية - 97 00:05:14,460 --> 00:05:18,570 صحيح إذا كان حرف هو حرف، إذا كاذبة خلاف ذلك. 98 00:05:18,570 --> 00:05:22,270 اثنين من الوظائف المفيدة الأخرى isupper وislower، مع 99 00:05:22,270 --> 00:05:23,860 أسماء لا تحتاج إلى شرح. 100 00:05:23,860 --> 00:05:27,370 أنها العودة الحقيقية إذا كان الحرف نظرا هي كبيرة أو صغيرة، 101 00:05:27,370 --> 00:05:28,740 على التوالي. 102 00:05:28,740 --> 00:05:33,770 لأنها هي القيم المنطقية، وانهم من المفيد استخدام كشروط. 103 00:05:33,770 --> 00:05:38,310 >> إذا isalpha إرجاع true، ستحتاج لتحويل هذا الحرف بواسطة مفتاح. 104 00:05:38,310 --> 00:05:43,750 لذلك دعونا إلى فتح ASCIIMath والقيام ببعض الرياضيات ASCII. 105 00:05:43,750 --> 00:05:48,700 استخدام مشابه جدا للاستخدام لقيصر، ويأخذ في مفتاح في 106 00:05:48,700 --> 00:05:50,870 سطر الأوامر. 107 00:05:50,870 --> 00:05:59,590 >> إذا قمت بتشغيل ASCIIMath 5، يبدو أن أضيف 5 لذلك، إعطائي إلكتروني و، و 108 00:05:59,590 --> 00:06:01,260 عرض قيمة ASCII. 109 00:06:01,260 --> 00:06:04,090 لذلك دعونا نلقي نظرة على البرنامج. 110 00:06:04,090 --> 00:06:11,820 >> كنت قد يتساءل، والحق هنا، لماذا الرسالة هو عدد صحيح، عندما يكون 111 00:06:11,820 --> 00:06:14,330 بوضوح، حسنا، بريد إلكتروني. 112 00:06:14,330 --> 00:06:17,690 اتضح أن الشخصيات و أعداد صحيحة قابلة للتبادل. 113 00:06:17,690 --> 00:06:21,730 عن طريق وضع حرف A في واحد علامات اقتباس، يمكن تخزين عدد صحيح 114 00:06:21,730 --> 00:06:25,390 قيمة ASCII رأس المال A. كن حذرا، وإن كان. 115 00:06:25,390 --> 00:06:27,150 كنت في حاجة إلى ملابس واحدة. 116 00:06:27,150 --> 00:06:31,260 دون علامات اقتباس مفردة، و أن المترجم البحث عن متغير 117 00:06:31,260 --> 00:06:35,510 اسمه A، وليس الحرف. 118 00:06:35,510 --> 00:06:42,140 >> ثم أقوم بإضافة حرف ومفتاح، تخزين خلاصة القول في كثافة المتغيرات نتيجة. 119 00:06:42,140 --> 00:06:47,740 على الرغم من أن النتيجة هي من نوع البيانات صحيح، يستخدم بيان printf بلدي 120 00:06:47,740 --> 00:06:50,370 ٪ ج نائبا للأحرف. 121 00:06:50,370 --> 00:06:54,530 وبالتالي فإن البرنامج يطبع حرف المرتبطة نتيجة عدد صحيح. 122 00:06:54,530 --> 00:07:00,400 وبما أننا طباعة عدد صحيح تشكل كذلك استخدام٪ d، ونحن نرى 123 00:07:00,400 --> 00:07:02,110 عدد كذلك. 124 00:07:02,110 --> 00:07:04,450 حتى الآن يمكنك أن ترى أننا علاج الشخصيات و 125 00:07:04,450 --> 00:07:06,980 الأعداد الصحيحة، والعكس بالعكس. 126 00:07:06,980 --> 00:07:12,205 >> دعونا اختبار ASCIIMath قليلة أكثر من مرة باستخدام 25 كمفتاح. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 نحصل على ض إلكتروني. 129 00:07:17,090 --> 00:07:19,750 الآن ونحن نحاول 26. 130 00:07:19,750 --> 00:07:25,600 نحن نريد الحصول على بريد إلكتروني لذلك، ولكن بدلا من ذلك نحصل على قوس الأيسر. 131 00:07:25,600 --> 00:07:29,490 لذلك من الواضح، فقط بإضافة ومفتاح إلكتروني لا تفعل. 132 00:07:29,490 --> 00:07:32,780 نحن بحاجة لمعرفة صيغة للالتفاف حول الحروف الأبجدية، مثل لدينا 133 00:07:32,780 --> 00:07:34,570 مثلا في بداية فعلت. 134 00:07:34,570 --> 00:07:38,520 >> صيغة لقيصر التحول هو كما يلي. 135 00:07:38,520 --> 00:07:42,750 ج يساوي زائد ع ك نمطية 26. 136 00:07:42,750 --> 00:07:46,040 تذكر أن نمطية هو مفيد العملية التي يعطينا الباقي 137 00:07:46,040 --> 00:07:49,880 تقسيم رقم واحد من قبل الطرف الآخر. 138 00:07:49,880 --> 00:07:54,870 دعونا تطبيق هذه الصيغة على سهل نص الرسالة مع مفتاح 2. 139 00:07:54,870 --> 00:08:01,810 قيمة ASCII من ذ هو 89، والتي يعطينا 91 نمطية 26، 140 00:08:01,810 --> 00:08:03,690 أي ما يعادل 13 - 141 00:08:03,690 --> 00:08:08,740 بالتأكيد ليست قيمة ASCII من ذلك، والذي هو 67. 142 00:08:08,740 --> 00:08:12,810 >> النكتة لي الآن والابتعاد عن قيم ASCII إلى الفهرس الأبجدي 143 00:08:12,810 --> 00:08:18,690 حيث A هو صفر وZ هو 25، وهذا يعني أن Y هو 24. 144 00:08:18,690 --> 00:08:25,830 24 زائد 2، 6 نمطية، يعطينا 26، نمطية 26، 0، والذي هو 145 00:08:25,830 --> 00:08:28,170 الفهرس الأبجدي ل. 146 00:08:28,170 --> 00:08:32,980 لذلك يبدو أن هذه الصيغة تنطبق على الفهرس الأبجدي من الرسالة و 147 00:08:32,980 --> 00:08:34,960 لا قيمة ASCII لها. 148 00:08:34,960 --> 00:08:37,630 >> ولكن عليك أن تبدأ مع القيم ASCII. 149 00:08:37,630 --> 00:08:41,650 وطباعة الحرف المشفر، ستحتاج قيمة ASCII كذلك. 150 00:08:41,650 --> 00:08:46,400 والامر متروك لكم، ثم، لمعرفة كيفية التبديل ذهابا وإيابا. 151 00:08:46,400 --> 00:08:49,850 >> بمجرد معرفة الصيغة الصحيحة لحرف واحد، كل ما عليك القيام به 152 00:08:49,850 --> 00:08:53,520 يتم تطبيق نفس الصيغة على كل حرف في النص العادي - 153 00:08:53,520 --> 00:08:57,720 إلا إذا تلك الرسالة هو الأبجدي، بالطبع. 154 00:08:57,720 --> 00:09:02,360 وتذكر أنك بحاجة إلى المحافظة القضية، العلوي أو السفلي، حيث ان 155 00:09:02,360 --> 00:09:06,890 وisUpper وظائف isLower ذكرت سابقا سيكون في متناول اليدين. 156 00:09:06,890 --> 00:09:08,830 قد يكون لديك اثنين من الصيغ - 157 00:09:08,830 --> 00:09:11,680 واحد للأحرف كبيرة واحد للصغيرة. 158 00:09:11,680 --> 00:09:18,420 حتى isUpper على isLower سوف تساعدك تحديد أي صيغة لتطبيقها. 159 00:09:18,420 --> 00:09:22,460 >> كيف يمكن تطبيق الصيغة الخاصة بك على كل حرف واحد في سلسلة؟ 160 00:09:22,460 --> 00:09:25,910 حسنا، سلسلة هو مجرد مجموعة من الأحرف. 161 00:09:25,910 --> 00:09:31,150 حتى تتمكن من الوصول إلى كل حرف تجمع أكثر من كل حرف في 162 00:09:31,150 --> 00:09:33,450 سلسلة في حلقة for. 163 00:09:33,450 --> 00:09:37,550 أما بالنسبة للشرط الخاص للحلقة، وظيفة strlen، لسلسلة 164 00:09:37,550 --> 00:09:39,280 طول، وسوف يأتي في متناول اليدين. 165 00:09:39,280 --> 00:09:44,020 فإنه يأخذ في سلسلة كمدخل و إرجاع طول هذه السلسلة. 166 00:09:44,020 --> 00:09:49,250 تأكد من تضمين المكتبة الحق استخدام الدالة طول السلسلة. 167 00:09:49,250 --> 00:09:51,790 >> وهناك لديك المشفر الخاص بك. 168 00:09:51,790 --> 00:09:53,260 اسمي هو Zamyla. 169 00:09:53,260 --> 00:09:54,510 و[يتكلم CODE]. 170 00:09:54,510 --> 00:10:02,944