1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [تجول - مجموعة مشكلة 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla تشان - جامعة هارفارد] 3 00:00:05,170 --> 00:00:07,490 [هذا CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 حسنا. مرحبا، الجميع، ومرحبا بكم في الإرشادات التفصيلية 2. 5 00:00:10,750 --> 00:00:14,330 أولا، أريد أن أهنئكم على الانتهاء pset 1. 6 00:00:14,330 --> 00:00:18,140 وأنا أعلم أنه كان يمكن أن يكون قليلا صعبة بالنسبة لبعض منكم، 7 00:00:18,140 --> 00:00:20,460 كان يمكن أن يكون جهاز الكمبيوتر الخاص بك برنامج الأول الذي كتبته، 8 00:00:20,460 --> 00:00:24,500 ولكن تذكر فقط أنه في نهاية هذا، عندما تنظر إلى الوراء في نهاية الفصل الدراسي، 9 00:00:24,500 --> 00:00:29,820 سوف ننظر في pset 1 و سوف يقول، "مهلا، أنا قد فعلت ذلك في 5 دقائق". 10 00:00:29,820 --> 00:00:35,700 أعرف ذلك وعلى ثقة من أن في نهاية هذا ستجد بالتأكيد pset 1 بسيط جدا. 11 00:00:35,700 --> 00:00:40,640 لكن في الوقت الراهن انها انجاز ضخم، ومبروك للالحصول على القيام به. 12 00:00:40,640 --> 00:00:44,010 الآن، أيضا ملاحظة سريعة قبل أن نصل إلى لحوم الإرشادات التفصيلية. 13 00:00:44,010 --> 00:00:48,340 أريد فقط أن تجعل ملاحظة سريعة أنني في بعض الأحيان لن يكون لها ما يكفي من الوقت 14 00:00:48,340 --> 00:00:52,500 خلال كثروو للذهاب من خلال كل طريقة واحدة للقيام مجموعة مشكلة 15 00:00:52,500 --> 00:00:56,140 وبدلا من مجرد التركيز ربما على 1 أو 2 نوع من تطبيقات، 16 00:00:56,140 --> 00:00:57,750 الطرق التي يمكن أن تفعل هذا. 17 00:00:57,750 --> 00:01:01,970 ولكن هذا لا يعني أن يحظر لك من فعل ذلك بطريقة أخرى. 18 00:01:01,970 --> 00:01:05,980 هناك كثير من الأحيان، كما هو الحال مع علوم الحاسب الآلي، العديد من الطرق للقيام بهذه الأمور، 19 00:01:05,980 --> 00:01:12,190 وهكذا يشعر بالتأكيد حر في استخدام نوع مختلف من الحل مما كنت قد قدمت. 20 00:01:12,190 --> 00:01:14,520 [pset 2: تشفير - Zamyla تشان - zamyla@cs50.net] 21 00:01:14,520 --> 00:01:17,160 [pset2 - 0. مقطع من أسئلة - 1. قيصر - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 حسنا. حتى تعيين المشكلة 2: تشفير هو متعة واحدة. 23 00:01:20,650 --> 00:01:24,500 مرة أخرى، مع كل pset عليك أن تبدأ مع قسم من الأسئلة 24 00:01:24,500 --> 00:01:29,600 وهذا سوف تجرى في أقسام الخاص بك مع زميله التدريس المحال. 25 00:01:29,600 --> 00:01:31,670 نحن لن تمر هذه على معاينة، 26 00:01:31,670 --> 00:01:35,100 لكنها لن تساعد بالتأكيد إكمال pset. 27 00:01:35,100 --> 00:01:38,100 وبالتالي فإن الجزء الأول من مجموعة قيصر المشكلة. 28 00:01:38,100 --> 00:01:43,470 وذلك في شخص قيصر سوف تمر بك مفتاح مع عدد صحيح، 29 00:01:43,470 --> 00:01:48,420 وسوف تشفير سلسلة من النص أنها توفر لك 30 00:01:48,420 --> 00:01:50,670 وتعيد لهم شيئا مشفرة. 31 00:01:50,670 --> 00:01:56,050 إذا كان أي شخص يشاهد قصة عيد الميلاد، وهناك مثال على ذلك هناك. 32 00:01:56,050 --> 00:01:59,090 ثم الجزء الثاني من المشكلة هي مجموعة Vigenere، 33 00:01:59,090 --> 00:02:01,790 الذي هو تقنية تشفير أكثر تقدما. 34 00:02:01,790 --> 00:02:05,640 وهكذا نحن في طريقنا للشفر يحول الى شفرة جزء من النص، 35 00:02:05,640 --> 00:02:09,600 بدلا من ذلك مع عدد صحيح باستثناء واحدة فقط، ونحن في طريقنا إلى صياغته في الواقع 36 00:02:09,600 --> 00:02:13,340 مع الكلمة أن المستخدم سوف توفر لنا. 37 00:02:16,270 --> 00:02:22,090 حسنا، لذلك الأداة الأولى في اليوم الأدوات هي في طريقها فعلا إلى تحديث الأجهزة. 38 00:02:22,090 --> 00:02:26,430 على لوحة المناقشة لرأينا أشياء مثل، "لماذا لا هذا العمل؟" 39 00:02:26,430 --> 00:02:28,110 "لماذا لم يقدم 50 العمل؟" 40 00:02:28,110 --> 00:02:31,830 وغالبا ما يكون الحل هو في الواقع مجرد لتحديث الأجهزة الخاصة بك. 41 00:02:31,830 --> 00:02:36,730 وهكذا إذا قمت بتشغيل فقط في إطار المحطة الطرفية في سودو الأجهزة الخاصة بك يم ص - 42 00:02:36,730 --> 00:02:40,040 هذا هو العلم قال نعم، تحديث كل شيء - التحديث، 43 00:02:40,040 --> 00:02:42,280 ثم الأجهزة الخاصة بك إذا لزم الأمر تحديث. 44 00:02:42,280 --> 00:02:46,960 وأنها لا تضر إذا كنت بالفعل في أحدث إصدار من الجهاز. 45 00:02:46,960 --> 00:02:51,280 بعد ذلك سوف أقول أية تحديثات جديدة متوفرة ويمكنك متابعة العمل على طول. 46 00:02:51,280 --> 00:02:55,800 ولكن هذا أمر جيد لتنفيذ حتى كل مرة تقوم فيها بفتح الجهاز 47 00:02:55,800 --> 00:02:57,140 لأننا ما زلنا إلى حد كبير - 48 00:02:57,140 --> 00:03:00,320 في بعض الأحيان إذا نأتي إلى خلل - تحديد ذلك في الجهاز. 49 00:03:00,320 --> 00:03:03,180 وذلك للتأكد من أن لديك أحدث إصدار من الجهاز 50 00:03:03,180 --> 00:03:07,710 وتشغيل هذا التحديث هناك. 51 00:03:07,710 --> 00:03:14,360 حسنا. منذ ذلك نحن نتعامل مع الحروف والمتغيرة، تشفر الأمور، 52 00:03:14,360 --> 00:03:20,410 نحن ذاهبون الى تريد حقا أن تصبح أفضل الأصدقاء مع مخططنا ASCII. 53 00:03:20,410 --> 00:03:24,350 هناك العديد من هي تلك على الإنترنت، إذا وجدت. ربما حتى على مسؤوليتك الخاصة. 54 00:03:24,350 --> 00:03:29,950 في الأساس، مع كل حرف ورقم كل حرف وكل 55 00:03:29,950 --> 00:03:32,210 هناك عدد المرتبطة بها، 56 00:03:32,210 --> 00:03:38,670 ولذا فمن الجيد أن نرى قيمها ASCII إلى جانب الرسالة الفعلية. 57 00:03:38,670 --> 00:03:42,310 وسوف تساعد بالتأكيد كنت في المجموعة المشكلة. 58 00:03:42,310 --> 00:03:45,750 وكان الشيء الوحيد الذي ساعدني في هذه المجموعة المشكلة لطباعة الواقع بها، 59 00:03:45,750 --> 00:03:48,380 وكما قلت كان يمر بها، وأود أن ألفت فعلا على ذلك، 60 00:03:48,380 --> 00:03:51,150 الكتابة، "إذا كانت هذه أن يذهب إلى هناك، ثم ..." 61 00:03:51,150 --> 00:03:55,270 نوع من الاعتماد على ذلك وبمناسبة عنه، أصبحت أفضل الأصدقاء مع الجدول الخاص بك ASCII. 62 00:03:57,240 --> 00:04:00,750 ثم لدينا عدد قليل من الأدوات الأخرى المتوفرة لدينا. 63 00:04:00,750 --> 00:04:03,750 هذه المرة بدلا من دفع فعلا للمستخدم لجميع مدخلاتها 64 00:04:03,750 --> 00:04:05,230 ونحن في طريقنا للقيام الجمع. 65 00:04:05,230 --> 00:04:06,880 ونحن في طريقنا إلى تدفعهم لبعض المدخلات، 66 00:04:06,880 --> 00:04:11,350 ولكن ونحن في طريقنا أيضا لمجرد استخدام وسيطات سطر الأوامر. 67 00:04:11,350 --> 00:04:15,600 لذلك عند تشغيلها برنامجهم، وعادة ما تقوله. / مرحبا، على سبيل المثال، 68 00:04:15,600 --> 00:04:17,310 إذا كان لديك برنامج hello.c. 69 00:04:17,310 --> 00:04:22,500 ولكن هذه المرة بدلا من أن تقول ذلك تماما، فإنها يمكن أن تضع الكلمات، والحجج بعد ذلك. 70 00:04:22,500 --> 00:04:27,210 وهكذا ونحن في طريقنا إلى استخدام كل ما في تمرير لنا ومدخلاتها أيضا، 71 00:04:27,210 --> 00:04:31,720 الانتقال إلى ما بعد ذلك فقط لدفع عدد صحيح ولكن أيضا باستخدام وسائط سطر الأوامر. 72 00:04:31,720 --> 00:04:36,590 وبعد ذلك سوف نذهب الى المصفوفات والسلاسل، ونحن سوف تستخدم الكثير أيضا. 73 00:04:41,460 --> 00:04:44,810 هنا مجرد مثال من الرسم البياني 1 ASCII البسيطة. 74 00:04:44,810 --> 00:04:48,460 كما قلت، كل حرف يقابل عددا، 75 00:04:48,460 --> 00:04:52,510 وحتى تعرف نفسك مع ذلك. سوف تأتي في متناول اليدين. 76 00:04:52,510 --> 00:04:55,610 وعندما نبدأ في وقت لاحق القيام ببعض ASCIIMath التعامل مع الأرقام - 77 00:04:55,610 --> 00:05:00,110 عمليات الجمع والطرح منها - ثم بالتأكيد جيدة للإشارة إلى هذا المخطط. 78 00:05:02,860 --> 00:05:06,920 حتى هنا مثال على الشفرات قيصر - وهو ما كنت قد لعبت مع. 79 00:05:06,920 --> 00:05:11,190 انها مجرد عجلات. أساسا، هناك أبجدية الخارجي ثم هناك أبجدية الداخلية. 80 00:05:11,190 --> 00:05:15,290 حتى الحق هنا هو مثال على الشفرات قيصر ولكن مع مفتاح 0. 81 00:05:15,290 --> 00:05:21,540 أساسا، والانحياز مع A، B يتواءم مع B، كل وسيلة تصل إلى Z. 82 00:05:21,540 --> 00:05:26,590 ولكن بعد ذلك يقولون اننا نريد مفتاح من 3، على سبيل المثال. 83 00:05:26,590 --> 00:05:33,280 ثم فإننا تدوير عجلة الداخلية بحيث A تؤيد الآن مع D، الخ. 84 00:05:33,280 --> 00:05:35,250 وهكذا هذا هو أساسا ما نحن بصدد القيام به. 85 00:05:35,250 --> 00:05:38,340 ليس لدينا عجلة، ولكن ما نحن بصدد القيام به هو جعل برنامجنا 86 00:05:38,340 --> 00:05:44,490 نوع من التحول على طول الأبجدية لدينا كمية معينة من الأرقام. 87 00:05:44,490 --> 00:05:48,650 وذلك قلت من قبل، ونحن في طريقنا إلى أن التعامل مع وسائط سطر الأوامر 88 00:05:48,650 --> 00:05:50,390 وكذلك الحصول على عدد صحيح. 89 00:05:50,390 --> 00:05:55,050 وبالتالي فإن الطريقة التي يمكن للمستخدم الخاص بك سيتم تشغيل البرنامج قيصر قائلا / قيصر 90 00:05:55,050 --> 00:05:58,090 ثم إدخال رقم بعد ذلك. 91 00:05:58,090 --> 00:06:01,130 وهذا العدد يمثل المفتاح، والتحول، 92 00:06:01,130 --> 00:06:06,740 كم مرة كنت على وشك أن الدورية عجلة الداخلية للقيصر الشفرات الخاصة بك. 93 00:06:06,740 --> 00:06:08,390 وهكذا ترى هنا على سبيل المثال. 94 00:06:08,390 --> 00:06:14,550 إذا دخلنا رسائل من A L لقيصر لدينا في الشفرات، 95 00:06:14,550 --> 00:06:19,520 عندئذ أنه من خلال إدخال D O لأن هذا هو كل حرف تحول أكثر من 3 مرات، 96 00:06:19,520 --> 00:06:22,080 تماما مثل مثال على عجلة التي عرضتها عليكم. 97 00:06:22,080 --> 00:06:25,300 ثم حتى إذا كنت دخلت، على سبيل المثال، وهذا هو CS50! 98 00:06:25,300 --> 00:06:27,960 ثم فإنه أيضا نقل كافة الرسائل. 99 00:06:27,960 --> 00:06:31,040 وهذا هو الشيء المهم في كل قيصر وVigenere 100 00:06:31,040 --> 00:06:34,890 هو أننا في طريقنا لتخطي أي رسائل غير. 101 00:06:34,890 --> 00:06:39,160 لذلك أي مسافات، الحروف، الخ، والأرقام، ونحن في طريقنا للحفاظ على نفسها. 102 00:06:39,160 --> 00:06:42,920 ونحن في طريقنا الوحيد لتحويل الرسائل في هذه الحالة. 103 00:06:42,920 --> 00:06:45,870 وذلك تراها في عجلة القيادة، ونحن لا نملك إلا الحروف المتاحة لنا، 104 00:06:45,870 --> 00:06:50,150 لذلك نحن نريد فقط لتحويل الحروف وتشفير الرسائل. 105 00:06:51,370 --> 00:06:56,720 لذا فإن أول شيء يجب القيام به، رأيت أن استخدام لقيصر في مشكلة مجموعة 2 106 00:06:56,720 --> 00:07:05,280 لتشغيل قيصر ثم إدخال الرقم عند تشغيله في الجهاز. 107 00:07:05,280 --> 00:07:10,940 وذلك ما يتعين علينا القيام به هو الحصول على نحو ما هذا المفتاح والوصول إليه. 108 00:07:10,940 --> 00:07:14,730 ولذا نريد أن نرى بطريقة ما انها ستكون السطر الأمر الثاني الحجة. 109 00:07:14,730 --> 00:07:20,950 أول واحد سيكون / قيصر، والمرحلة التالية ستكون عدد الرئيسية. 110 00:07:22,190 --> 00:07:29,200 قبل ذلك كان لدينا الباحث الرئيسي (الفراغ) لبدء تشغيل البرامج C لدينا. 111 00:07:29,200 --> 00:07:31,790 ونحن في طريقنا إلى طبقة قشر العودة قليلا 112 00:07:31,790 --> 00:07:34,720 ونرى في الواقع أنه بدلا من تمرير في الفراغ لدينا وظيفة الرئيسي 113 00:07:34,720 --> 00:07:37,920 نتعامل في الواقع مع معلمات 2. 114 00:07:37,920 --> 00:07:44,070 لدينا كثافة العمليات argc اسمه ثم صفيف سلاسل دعا argv. 115 00:07:44,070 --> 00:07:46,030 حتى argc هو عدد صحيح، 116 00:07:46,030 --> 00:07:49,640 ويمثل عدد من الحجج تمريره في البرنامج. 117 00:07:49,640 --> 00:07:53,590 ثم argv هو في الواقع قائمة الحجج التي تم تمريرها. 118 00:07:53,590 --> 00:08:00,820 كل الحجج هي سلاسل، وهكذا argv يمثل مجموعة، قائمة، من السلاسل. 119 00:08:01,830 --> 00:08:03,990 دعونا نتحدث عن صفائف قليلا. 120 00:08:03,990 --> 00:08:05,940 صفائف هي أساسا بنية بيانات جديدة. 121 00:08:05,940 --> 00:08:09,660 لدينا رجات، لدينا الزوجي، لدينا خيوط، والآن لدينا صفائف. 122 00:08:09,660 --> 00:08:13,820 صفائف هي هياكل البيانات التي يمكن أن تعقد قيم متعددة من نفس النوع، 123 00:08:13,820 --> 00:08:18,320 أساسا كان الأمر كذلك، قائمة من أي نوع تريده. 124 00:08:18,320 --> 00:08:24,400 أساسا، إذا أردت قائمة من الأعداد الصحيحة فقط في 1 متغير، 125 00:08:24,400 --> 00:08:29,090 ثم سوف تقوم بإنشاء متغير جديد من مجموعة التي كانت نوع int. 126 00:08:29,090 --> 00:08:34,450 حتى صفائف صفر المفهرسة، وهذا يعني أن العنصر الأول من الصفيف هو مؤشر على 0. 127 00:08:34,450 --> 00:08:41,799 إذا كان الصفيف من طول 4، كما في هذا المثال، ثم العنصر الأخير تكون على مؤشر 3، 128 00:08:41,799 --> 00:08:44,810 الذي هو 4 - 1. 129 00:08:45,940 --> 00:08:48,420 ذلك لخلق مجموعة، وكنت تفعل شيئا مثل هذا. 130 00:08:48,420 --> 00:08:51,440 يقول كنت تريد مجموعة مزدوجة. 131 00:08:51,440 --> 00:08:56,520 هذا ينطبق على أي نوع من نوع البيانات، وإن كان. 132 00:08:56,520 --> 00:09:00,210 لذلك نقول لكم تريد مجموعة مزدوجة. نقول لكم نريد أن نسميها علبة البريد. 133 00:09:00,210 --> 00:09:04,760 مثلما كنت تهيئة أي ضعف أخرى، 134 00:09:04,760 --> 00:09:09,760 هل تقول مزدوجة ثم الاسم، ولكن هذه المرة وضعنا بين قوسين معقوفين، 135 00:09:09,760 --> 00:09:13,570 وبعد ذلك سيكون هناك عدد من طول الصفيف. 136 00:09:13,570 --> 00:09:16,840 لاحظ أنه في صفائف أننا لا نستطيع تغيير من أي وقت مضى طول، 137 00:09:16,840 --> 00:09:21,230 بحيث يكون لديك دائما لتحديد واختيار عدد صناديق، 138 00:09:21,230 --> 00:09:25,440 عدد القيم الصفيف الخاص بك هو الذهاب الى عقد. 139 00:09:25,440 --> 00:09:31,820 ذلك لتعيين قيم مختلفة في الصفيف الخاص بك، وأنت تسير لاستخدام هذه الجملة التالي، 140 00:09:31,820 --> 00:09:33,200 كما ترون على الشريحة. 141 00:09:33,200 --> 00:09:37,620 سيتم تعيين 0 هل لديك علبة بريد مؤشر إلى 1.2، 142 00:09:37,620 --> 00:09:42,180 علبة مؤشر مجموعة 1 الى 2.4، الخ. 143 00:09:42,180 --> 00:09:47,910 حتى الآن بعد أن ننتهي من مراجعة المصفوفات قليلا، دعونا نعود إلى argc argv و. 144 00:09:47,910 --> 00:09:52,220 ونحن نعلم أن argv الآن مجموعة من السلاسل. 145 00:09:52,220 --> 00:09:55,080 حتى عندما يقوم المستخدم بتمرير في - يقولون انهم تقوم بتشغيل البرنامج - 146 00:09:55,080 --> 00:09:58,740 يقولون. / مرحبا ديفيد مالان، 147 00:09:58,740 --> 00:10:05,160 ما سيقوم البرنامج نفعل لك بالفعل قد جاء فعلا مع ما argc argv هي و. 148 00:10:05,160 --> 00:10:07,620 حتى لا داعي للقلق بشأن ذلك. 149 00:10:07,620 --> 00:10:14,370 وArgc في هذه الحالة تكون 3 لأنه يرى 3 كلمات مميزة مفصولة بمسافات. 150 00:10:14,370 --> 00:10:18,850 وحتى ذلك الحين الصفيف في هذه الحالة، سوف يكون أول مؤشر / مرحبا، 151 00:10:18,850 --> 00:10:21,770 1 ديفيد التالي، التالي 1 مالان. 152 00:10:21,770 --> 00:10:25,640 لا أحد يرى على الفور ما العلاقة بين argv، 153 00:10:25,640 --> 00:10:28,990  الصفيف، وargc هو؟ 154 00:10:32,820 --> 00:10:38,090 نعم. سوف نصل إلى أنه في المثال في args.c. 155 00:10:38,090 --> 00:10:42,880 دعونا نرى ما اذا كنا نستطيع الاستفادة من العلاقة بين 2. 156 00:10:42,880 --> 00:10:46,550 هنا قد تجد أن في الأجهزة الافتراضية التطبيق 157 00:10:46,550 --> 00:10:49,450 لفتح ملفات في بعض الأحيان ج ايماكس. 158 00:10:49,450 --> 00:10:54,660 لكننا نريد للتعامل مع gedit، وذلك ما يمكنك القيام به هو يمكنك النقر بزر الماوس الأيمن على الملف C الخاص بك، 159 00:10:54,660 --> 00:11:04,580 انتقل إلى خصائص، فتح باستخدام، ثم اختر gedit، على النحو الافتراضية، 160 00:11:04,580 --> 00:11:13,020 والآن يجب فتح البرنامج في gedit بدلا من ايماكس. 161 00:11:14,710 --> 00:11:16,290 الكمال. 162 00:11:17,120 --> 00:11:25,520 حتى هنا لدي برنامج أريد لطباعة كل وسيطة سطر الأوامر. 163 00:11:25,520 --> 00:11:32,050 وبغض النظر عن مدخلات المستخدم، أريد أن أعود مرة أخرى إلى الأساس لهم في سطر جديد. 164 00:11:32,050 --> 00:11:36,710 حتى ما هو الهيكل الذي يمكننا استخدامها لتكرار عبر شيء - 165 00:11:36,710 --> 00:11:40,380 ما كنت تستخدم على الارجح في 1 pset الخاص؟ 166 00:11:40,380 --> 00:11:45,840 إذا كنت تريد أن تذهب من خلال عدد محدد من الأشياء؟ >> [طالب] للحلقة. 167 00:11:45,840 --> 00:11:48,910 لحلقة. بالضبط. لذلك دعونا نبدأ مع لحلقة. 168 00:11:48,910 --> 00:11:56,900 لدينا كثافة العمليات ط = 0. دعونا نبدأ مع متغير التهيئة القياسية. 169 00:11:56,900 --> 00:12:02,370 انا ذاهب الى ترك شرطا لمجموعة ثم يقول أنا + +، سوف تفعل أشياء هناك. 170 00:12:02,370 --> 00:12:04,090 حسنا. 171 00:12:04,090 --> 00:12:11,590 لذا فإن العودة إلى التفكير argv، إذا argv لائحة من الحجج تمريره في البرنامج 172 00:12:11,590 --> 00:12:15,380 وargc هو عدد من الحجج في البرنامج، 173 00:12:15,380 --> 00:12:21,280 ثم هذا يعني أن argc هو أساسا طول argv، الحق، 174 00:12:21,280 --> 00:12:28,970 لأن هناك ستكون كوسائط يصل إلى قيمة argc. 175 00:12:28,970 --> 00:12:35,910 إذا كان الأمر كذلك نريد أن تكرار عبر كل عنصر في argv، 176 00:12:35,910 --> 00:12:43,290 ونحن في طريقنا إلى الرغبة في كل مرة وصول إلى المتغير في argv في مؤشر معين. 177 00:12:43,290 --> 00:12:49,060 يمكن أن تكون ممثلة مع أن هذا، أليس كذلك؟ 178 00:12:49,060 --> 00:12:53,430 هذا المتغير هنا يمثل سلسلة خاصة في هذا المثال 179 00:12:53,430 --> 00:12:57,030 لأنه صفيف سلسلة - سلسلة خاصة في ذلك مؤشر معين. 180 00:12:57,030 --> 00:13:00,690 ما نريد أن نفعله في هذه الحالة نريد أن طباعته، لذلك دعونا نقول printf. 181 00:13:00,690 --> 00:13:04,680 والآن هو سلسلة argv، لذلك نحن نريد أن نضع التي نائبا هناك. 182 00:13:04,680 --> 00:13:08,430 نريد سطر جديد فقط لجعلها تبدو جيدة. 183 00:13:08,430 --> 00:13:12,530 حتى هنا لدينا حلقة لل. ليس لدينا حالة حتى الان. 184 00:13:12,530 --> 00:13:20,020 لذلك أنا يبدأ في 0، ومن ثم في كل مرة انه سيكون لطباعة سلسلة معينة 185 00:13:20,020 --> 00:13:22,980 في ذلك مؤشر خاص في الصفيف. 186 00:13:22,980 --> 00:13:28,410 لذلك عندما نريد لوقف طبع العناصر في الصفيف؟ 187 00:13:28,410 --> 00:13:35,720 عندما كنا الانتهاء، أليس كذلك؟ عندما وصلنا نحن في نهاية الصفيف. 188 00:13:35,720 --> 00:13:38,870 لذلك نحن لا نريد أن يتجاوز الماضي طول الصفيف، 189 00:13:38,870 --> 00:13:43,700 ونحن نعرف بالفعل نحن لسنا بحاجة إلى الواقع تجد بنشاط ما هو طول argv 190 00:13:43,700 --> 00:13:47,520 لأنه يعطى لنا، وما هذا؟ Argc. بالضبط. 191 00:13:47,520 --> 00:13:56,640 لذلك نحن نريد أن نفعل هذا العدد argc عملية من المرات. 192 00:13:56,640 --> 00:13:59,550 أنا لست في الدليل الصحيح. 193 00:14:02,100 --> 00:14:03,490 حسنا. 194 00:14:03,490 --> 00:14:08,990 الآن دعونا جعل وسائط. عدم وجود أخطاء، وهو أمر عظيم. 195 00:14:08,990 --> 00:14:11,430 لذلك دعونا فقط تشغيل وسائط. 196 00:14:11,430 --> 00:14:15,130 ما هو هذا سيعودون إلينا؟ انها مجرد الذهاب الى طباعته مرة أخرى. 197 00:14:15,130 --> 00:14:18,320 "أنت سائط إدخالها في البرنامج، وأنا ذاهب ليعيدها لك." 198 00:14:18,320 --> 00:14:23,170 لذلك دعونا نقول ما نريد قوله سائط ثم فو بار. 199 00:14:23,170 --> 00:14:26,570 حتى ذلك الحين فإنه يطبع بها back to نا. كل الحق؟ 200 00:14:26,570 --> 00:14:30,790 حتى لا يكون هناك مثال على كيفية استخدام argc argv و 201 00:14:30,790 --> 00:14:33,460 مع العلم أن يمثل argc argv طول. 202 00:14:33,460 --> 00:14:42,750 تأكد من أن كنت لا من أي وقت مضى مع وصول صفائف احدة لما وراء طول الصفيف 203 00:14:42,750 --> 00:14:45,140 لأن الصراخ C بالتأكيد عليك. 204 00:14:45,140 --> 00:14:47,560 ستحصل على ما يسمى خطأ تجزئة، 205 00:14:47,560 --> 00:14:52,470 وهو متعة أبدا، قائلا أساسا كنت تحاول الوصول إلى شيء 206 00:14:52,470 --> 00:14:55,000 غير موجود، لا ينتمي لك. 207 00:14:55,000 --> 00:14:59,430 وذلك للتأكد، وخاصة مع الفهرسة من الصفر، ونحن لا نريد أن - 208 00:14:59,430 --> 00:15:02,390 مثل على سبيل المثال، إذا كان لدينا مجموعة من طول 4، 209 00:15:02,390 --> 00:15:07,240 أن مؤشر مجموعة 4 لا وجود لها لأن نبدأ في 0، في مؤشر الصفر. 210 00:15:07,240 --> 00:15:11,730 سوف يصبح طبيعة ثانية فقط لمثل الحلقات عندما نبدأ في 0. 211 00:15:11,730 --> 00:15:13,610 حتى نستمر ذلك في الاعتبار. 212 00:15:13,610 --> 00:15:22,590 كنت لا تريد من أي وقت مضى للوصول إلى الرقم القياسي لمجموعة هذا خارج متناول يديك. 213 00:15:26,710 --> 00:15:32,560 حتى يمكننا أن نرى الآن كيف يمكننا الوصول نوع من 214 00:15:32,560 --> 00:15:35,930 وسيطات سطر الأوامر التي تم تمريرها في. 215 00:15:35,930 --> 00:15:41,330 ولكن كما رأيتم السلسلة، argv هو في الواقع مجموعة السلسلة. 216 00:15:41,330 --> 00:15:45,740 حتى انها في الواقع ليس صحيحا حتى الآن، ولكن في قيصر نريد للتعامل مع الأعداد الصحيحة. 217 00:15:45,740 --> 00:15:54,430 لحسن الحظ، هناك وظيفة خلقت لنا أن الواقع يمكن تحويل سلسلة إلى عدد صحيح. 218 00:15:54,430 --> 00:15:58,710 أيضا هنا نحن لا نتعامل مع إدخال المستخدم حيث اننا مما حدا بهم 219 00:15:58,710 --> 00:16:03,740 لإدخال المفتاح هنا ل، لذلك لا يمكننا في الواقع reprompt ويقول: 220 00:16:03,740 --> 00:16:07,840 "أوه، أعطني آخر صحيحا، ويقول، لو كان غير صالح." 221 00:16:07,840 --> 00:16:10,540 ولكننا ما زلنا بحاجة للتأكد من الاستخدام الصحيح. 222 00:16:10,540 --> 00:16:13,520 في قيصر ويسمح فقط لأنها لتمرير في 1 العدد، 223 00:16:13,520 --> 00:16:18,030 وذلك لديهم لتشغيل / قيصر ثم عليهم أن أعطيك رقما. 224 00:16:18,030 --> 00:16:23,660 لذلك يجب أن يكون argc عدد معين. 225 00:16:23,660 --> 00:16:29,060 ماذا يكون الرقم الذي إذا كان لديهم لتمرير لك / قيصر ثم مفتاح؟ 226 00:16:29,060 --> 00:16:32,920 ما هو argc؟ >> [طالب] (2). >> الثانية. بالضبط. 227 00:16:32,920 --> 00:16:35,490 لذلك كنت ترغب في التأكد من أن argc هو 2. 228 00:16:35,490 --> 00:16:39,620 وإلا فإنك ترفض أساسا لتشغيل البرنامج. 229 00:16:39,620 --> 00:16:43,040 في الرئيسية انها وظيفة الباحث الرئيسي أن يقول، 230 00:16:43,040 --> 00:16:47,360 حتى ذلك الحين ونحن دائما في الممارسة الجيدة 0 عودة في نهاية برنامج ناجح. 231 00:16:47,360 --> 00:16:50,840 حتى إذا، ويقول، أنها تعطي لك 3 سائط سطر الأوامر بدلا من 2 232 00:16:50,840 --> 00:16:54,350 أو أعطيك 1، على سبيل المثال، ثم ما عليك القيام به هو فأنت تريد أن تحقق لهذا 233 00:16:54,350 --> 00:16:59,900 والعودة ثم 1 قائلا: لا، لا أستطيع المضي قدما في هذا البرنامج. 234 00:16:59,900 --> 00:17:03,190 [طالب] يمكن لا يكون هناك مساحة في النص. عفوا >>؟ 235 00:17:03,190 --> 00:17:06,780 [طالب] يمكن لا يكون هناك مساحة في النص الذي تحاول تشفير. 236 00:17:06,780 --> 00:17:08,480 آه! 237 00:17:08,480 --> 00:17:11,280 من حيث النص الذي نحاول تشفير، التي تأتي في الواقع في وقت لاحق 238 00:17:11,280 --> 00:17:13,970 عندما نعطي ذلك النص. 239 00:17:13,970 --> 00:17:18,260 حتى الآن نحن مجرد قبول كوسائط الأمر أن العدد الفعلي، 240 00:17:18,260 --> 00:17:21,579 التحول الفعلي لتشفير قيصر. 241 00:17:21,579 --> 00:17:27,569 [طالب] لماذا تحتاج 2 بدلا من argc فقط 1؟ هناك بالتأكيد 1 عدد. 242 00:17:27,569 --> 00:17:32,200 الحق. السبب في أننا بحاجة 2 للargc بدلا من 1 243 00:17:32,200 --> 00:17:36,260 لأن عند تشغيل برنامج ويقول / أو قيصر. / مرحبا، 244 00:17:36,260 --> 00:17:38,280 كما أن تعول فعلا وسيطة سطر الأوامر. 245 00:17:38,280 --> 00:17:43,020 ثم يأخذ ذلك بالفعل (1) وحتى ذلك الحين نحن إدخال 1 إضافية. 246 00:17:45,030 --> 00:17:49,440 لذلك كنت في الواقع إدخال سلسلة في وسيطة سطر الأوامر. 247 00:17:49,440 --> 00:17:52,730 ما تريد القيام به، لأننا نريد قيصر للتعامل مع عدد صحيح، 248 00:17:52,730 --> 00:17:57,180 لذلك يمكنك استخدام هذه الوظيفة atoi. 249 00:17:57,180 --> 00:18:02,850 وأساسا، يمكنك تمرير في سلسلة وبعد ذلك سيعود بك عدد صحيح 250 00:18:02,850 --> 00:18:06,070 اذا كان من الممكن لجعل هذه السلسلة إلى عدد صحيح. 251 00:18:06,070 --> 00:18:10,960 تذكر الآن عندما نتعامل مع الأشياء printf أو GetString، من هذا القبيل، 252 00:18:10,960 --> 00:18:13,390 ندرج المكتبات التي تعتبر خاصة بالنسبة لنا. 253 00:18:13,390 --> 00:18:19,450 حتى في بداية نبدأ مع شيء علامة التجزئة I / O، ح، ومعيار من هذا القبيل. 254 00:18:19,450 --> 00:18:22,430 حسنا، ليست ضمن atoi واحدة من تلك المكتبات، 255 00:18:22,430 --> 00:18:26,600 وذلك ما يتعين علينا القيام به هو أننا يجب أن تتضمن مكتبة المناسب لذلك. 256 00:18:26,600 --> 00:18:32,720 أذكر ذلك مرة أخرى إلى 1 حيث تجول ناقشت وظيفة اليدوي. 257 00:18:32,720 --> 00:18:37,110 اكتب لك رجل في محطة الخاص بك، ثم يليه اسم وظيفة. 258 00:18:37,110 --> 00:18:39,720 وهكذا فإن ذلك إظهار قائمة كاملة من استخدامه، 259 00:18:39,720 --> 00:18:42,890 ولكن كذلك سوف إحضار الذي ينتمي إلى مكتبة. 260 00:18:42,890 --> 00:18:47,000 لذلك سأترك لكم أن لاستخدام وظيفة atoi مع دليل 261 00:18:47,000 --> 00:18:53,360 ومعرفة أي مكتبة تحتاج إلى تضمين لتكون قادرة على استخدام وظيفة atoi. 262 00:18:54,450 --> 00:18:57,670 لذلك نحن قد حصلت على مفتاح والآن يتعلق الأمر الحصول على نص عادي، 263 00:18:57,670 --> 00:19:01,820 والواقع أن ذلك سيكون إدخال المستخدم حيث يمكنك الأوامر. 264 00:19:01,820 --> 00:19:05,540 تعاملنا مع GetInt وGetFloat، وهكذا وعلى نفس المنوال 265 00:19:05,540 --> 00:19:07,670 ونحن في طريقنا إلى أن التعامل مع GetString. 266 00:19:07,670 --> 00:19:12,440 لكن في هذه الحالة نحن لسنا بحاجة للقيام بأي تفعل حين أو أثناء حلقات للتحقق. 267 00:19:12,440 --> 00:19:14,480 سوف تعطي بالتأكيد GetString لنا سلسلة، 268 00:19:14,480 --> 00:19:17,630 ونحن في طريقنا لتشفير كل ما يعطينا المستخدم. 269 00:19:17,630 --> 00:19:23,770 لذلك يمكنك أن نفترض أن كل هذه السلاسل المستخدم إدخالها صحيحة. 270 00:19:23,770 --> 00:19:24,670 كبيرة. 271 00:19:24,670 --> 00:19:27,270 حتى مرة واحدة ثم كنت قد حصلت على مفتاح مرة واحدة وكنت قد حصلت على النص، 272 00:19:27,270 --> 00:19:31,660 الآن ما تبقى هو لديك لشفر يحول الى شفرة والغير مشفرة. 273 00:19:31,660 --> 00:19:36,530 فقط لتغطية أكثر من لغة بسرعة، وعادي هو ما يمنحك المستخدم، 274 00:19:36,530 --> 00:19:41,030 والنص المشفر هو ما يعود لهم. 275 00:19:42,450 --> 00:19:45,850 حتى السلاسل، لتكون قادرا على الذهاب من خلال الرسالة فعلا الرسالة 276 00:19:45,850 --> 00:19:48,550 لأن لدينا لتحويل كل حرف، 277 00:19:48,550 --> 00:19:51,390 ونحن نفهم أن سلاسل، إذا كنا نوع من قشر طبقة الظهر، 278 00:19:51,390 --> 00:19:54,130 نرى انهم حقا مجرد قائمة من الأحرف. 279 00:19:54,130 --> 00:19:55,930 أحد يأتي بعد الآخر. 280 00:19:55,930 --> 00:20:01,690 وحتى نتمكن من علاج سلاسل كصفائف لأنها صفائف من الأحرف. 281 00:20:01,690 --> 00:20:05,640 لذلك نقول لديك سلسلة اسمه النص، 282 00:20:05,640 --> 00:20:09,400 وضمن هذا النص متغير يتم تخزين هذه هي CS50. 283 00:20:09,400 --> 00:20:15,680 ثم النص في الفهرس 0 T سيكون رأس المال، ويكون الفهرس 1 ساعة، الخ. 284 00:20:17,530 --> 00:20:23,970 ثم مع المصفوفات، في المثال argc في args.c، 285 00:20:23,970 --> 00:20:27,090 رأينا أن علينا أن تكرار عبر مجموعة 286 00:20:27,090 --> 00:20:32,440 وذلك كان علينا أن تكرار من ط = 0 حتى أنا أقل من الطول. 287 00:20:32,440 --> 00:20:35,560 لذلك نحن بحاجة إلى طريقة لمعرفة ما طول سلسلة لدينا 288 00:20:35,560 --> 00:20:37,090 إذا نحن في طريقنا للتكرار أكثر من ذلك. 289 00:20:37,090 --> 00:20:42,300 مرة أخرى لحسن الحظ، هناك وظيفة هناك بالنسبة لنا، على الرغم من CS50 في وقت لاحق يوم 290 00:20:42,300 --> 00:20:45,860 عليك أن تكون بالتأكيد قادرة على تنفيذ وظيفة جعل الخاصة بك 291 00:20:45,860 --> 00:20:48,260 يمكن أن حساب طول سلسلة. 292 00:20:48,260 --> 00:20:52,120 لكن في الوقت الراهن نحن في طريقنا للاستخدام طول السلسلة، لذلك التوابع strlen. 293 00:20:52,120 --> 00:21:00,440 يمكنك تمرير في سلسلة، وبعد ذلك سيعود لك الباحث الذي يمثل طول السلسلة الخاص بك. 294 00:21:00,440 --> 00:21:05,840 دعونا ننظر إلى مثال لكيفية قد تكون قادرة على تكرار عبر كل حرف في سلسلة 295 00:21:05,840 --> 00:21:08,470 وتفعل شيئا مع ذلك. 296 00:21:08,470 --> 00:21:13,250 ما نريد القيام به هو تكرار عبر كل حرف من السلسلة، 297 00:21:13,250 --> 00:21:19,150 وما نريد أن نفعله هو أننا طباعة عودة كل شخصية 1 في موعد أقصاه 1 298 00:21:19,150 --> 00:21:22,060 إلا أن نضيف شيئا لأنها المقبل. 299 00:21:22,060 --> 00:21:27,020 لذلك دعونا نبدأ مع لحلقة. كثافة العمليات ط = 0. 300 00:21:27,020 --> 00:21:30,070 ونحن في طريقنا لترك مساحة للشرط. 301 00:21:32,700 --> 00:21:36,840 نريد تكرار حتى نصل إلى نهاية السلسلة، أليس كذلك؟ 302 00:21:36,840 --> 00:21:41,340 ثم ماذا في ذلك وظيفة يعطينا طول السلسلة؟ 303 00:21:41,340 --> 00:21:43,160 [رد الطالب غير مسموع] 304 00:21:43,160 --> 00:21:46,420 هذا هو طول وسيطات سطر الأوامر. 305 00:21:46,420 --> 00:21:50,650 ولكن لسلسلة نريد استخدام دالة التي يعطينا طول السلسلة. 306 00:21:50,650 --> 00:21:53,090 ذلك أن طول السلسلة. 307 00:21:53,090 --> 00:21:57,130 وهكذا ثم لديك لتمرير في سلسلة إليها. 308 00:21:57,130 --> 00:21:59,760 فإنه يحتاج إلى معرفة ما يحتاج إلى سلسلة حساب طول. 309 00:21:59,760 --> 00:22:03,160 حتى ذلك الحين في هذه الحالة نتعامل مع سلسلة ق. 310 00:22:04,790 --> 00:22:05,860 كبيرة. 311 00:22:05,860 --> 00:22:10,770 حتى ذلك الحين ما نريد القيام به، دعونا printf. 312 00:22:10,770 --> 00:22:14,850 الآن، ونحن نريد للتعامل مع الأحرف. نحن نريد لطباعة كل حرف على حدة. 313 00:22:14,850 --> 00:22:22,150 عندما تريد ذلك لطباعة عدد عشري، يمكنك استخدام العنصر النائب مثل F٪. 314 00:22:22,150 --> 00:22:24,580 مع الباحث يمكنك استخدام د٪. 315 00:22:24,580 --> 00:22:30,890 وعلى نحو مماثل لذلك، مع استخدام حرف C٪ ليقول انا ذاهب الى أن طباعة حرف 316 00:22:30,890 --> 00:22:34,570 يتم تخزينها داخل هذا متغير. 317 00:22:34,570 --> 00:22:40,840 لذلك لدينا هذا، ودعونا نضيف فترة ومسافة إليها. 318 00:22:40,840 --> 00:22:45,430 أي حرف هل نستخدم؟ 319 00:22:45,430 --> 00:22:49,780 ونحن في طريقنا إلى استخدام كل ما نحن في حرف من السلسلة. 320 00:22:49,780 --> 00:22:52,890 حتى ذلك الحين ونحن في طريقنا إلى استخدام شيء مع السلسلة، 321 00:22:52,890 --> 00:22:56,420 ولكننا نريد أن يتم الوصول إلى حرف معين هناك. 322 00:22:56,420 --> 00:23:02,740 حتى إذا هو مجرد سلسلة صفيف، ثم كيف يمكننا الوصول إلى عناصر المصفوفات؟ 323 00:23:02,740 --> 00:23:06,480 لدينا هذه الأقواس المربعة، ثم نضع المؤشر في هناك. 324 00:23:06,480 --> 00:23:11,820 لذلك لدينا بين قوسين معقوفين. فهرسنا في هذه الحالة يمكننا فقط استخدام ط. بالضبط. 325 00:23:15,290 --> 00:23:22,370 حتى هنا نقوله نحن في طريقنا إلى أن الطباعة حرف تليها نقطة ومسافة، 326 00:23:22,370 --> 00:23:30,870 وهذا الطابع سيكون الرسالة في ليالي إيث سلسلة لدينا. 327 00:23:32,920 --> 00:23:39,330 انا فقط لحفظ ذلك. حسنا. 328 00:23:42,510 --> 00:23:46,840 الآن انا ذاهب لتشغيل طول السلسلة. 329 00:23:46,840 --> 00:23:53,440 لذلك كان علينا سلسلة دعا OMG، والآن لمزيد من التأكيد على ذلك. 330 00:23:53,440 --> 00:23:57,870 وبالمثل، دعنا نقول أننا نريد فعلا للحصول على سلسلة من المستخدم. 331 00:23:57,870 --> 00:23:59,580 كيف يمكن لنا أن نفعل ذلك؟ 332 00:23:59,580 --> 00:24:01,610 من قبل، كيف نحصل على كثافة العمليات؟ 333 00:24:01,610 --> 00:24:08,040 قلنا GetInt، أليس كذلك؟ ولكن هذا ليس الباحث، لذلك دعونا GetString. 334 00:24:11,780 --> 00:24:17,770 دعونا جعل طول السلسلة. هنا لم نكن إدخال الأوامر محددة. 335 00:24:17,770 --> 00:24:19,940 لذلك أنا لا أعرف. 336 00:24:19,940 --> 00:24:23,820 انا ذاهب الى وضع اسمي في ذلك وهنا يمكنني القيام به ثم واحدة من تلك الأشياء 337 00:24:23,820 --> 00:24:29,600 حيث كنت تعيين كلمة كل حرف أو شيء من هذا القبيل. بارد. 338 00:24:29,600 --> 00:24:31,900 ذلك أن طول السلسلة. 339 00:24:33,000 --> 00:24:34,640 لذلك نعود لقيصر. 340 00:24:34,640 --> 00:24:38,620 لدينا عدد قليل من الأدوات على كيفية تكرار عبر سلسلة، 341 00:24:38,620 --> 00:24:41,250 كيف يمكننا الوصول إلى كل عنصر على حدة. 342 00:24:41,250 --> 00:24:44,720 حتى الآن يمكن أن نعود إلى البرنامج. 343 00:24:44,720 --> 00:24:48,650 كما ذكرت من قبل، في الجدول ASCII، أفضل صديق، 344 00:24:48,650 --> 00:24:52,300 وأنت تسير لمعرفة الأرقام التي ترتبط مع كل حرف. 345 00:24:52,300 --> 00:24:55,900 لذلك أقول هنا نص عادي لدينا هو أنا بالدوار! 346 00:24:55,900 --> 00:25:01,090 ثم كل واحد من هذه الشخصيات ستكون لدينا عدد وقيمة ASCII المرتبطة به، 347 00:25:01,090 --> 00:25:04,710 حتى الفاصلة العليا، وحتى الفضاء، حتى علامة التعجب، 348 00:25:04,710 --> 00:25:06,600 لذلك عليك أن ترغب في الاحتفاظ في الاعتبار. 349 00:25:06,600 --> 00:25:12,360 أقول ذلك لدينا مفتاح أن المستخدم المدرجة في بهم سيطة سطر الأوامر هو 6. 350 00:25:12,360 --> 00:25:17,770 وهذا يعني الحرف الأول ل، وهو الأول الذي يمثله 73، 351 00:25:17,770 --> 00:25:25,610 تريد العودة إليها مهما كانت الرسالة يمثله قيمة ASCII من 73 + 6. 352 00:25:25,610 --> 00:25:29,020 في هذه الحالة من شأنه أن يكون 79. 353 00:25:30,840 --> 00:25:35,040 الآن نريد أن نذهب إلى الحرف التالي. 354 00:25:35,040 --> 00:25:40,960 لذلك فإن القادم في مؤشر 1 من عادي تكون الفاصلة العليا. 355 00:25:40,960 --> 00:25:46,780 ولكن تذكر أننا نريد فقط لشفر يحول الى شفرة الحروف. 356 00:25:46,780 --> 00:25:50,040 لذلك نحن نريد أن نتأكد من أن يبقى الفاصلة العليا في الواقع نفسه، 357 00:25:50,040 --> 00:25:54,310 أننا لا تتغير مهما من 39 إلى 45 هو. 358 00:25:54,310 --> 00:25:57,150 ونحن نريد أن نحافظ عليها والفاصلة العليا. 359 00:25:57,150 --> 00:26:00,780 لذلك نحن نريد أن نتذكر أن شفر يحول الى شفرة فقط رسائل 360 00:26:00,780 --> 00:26:04,560 لأننا جميعا نريد من الرموز الأخرى أن تبقى بدون تغيير في برنامجنا. 361 00:26:04,560 --> 00:26:07,130 وشيء آخر أن ما نريده هو الحفاظ على رأس المال. 362 00:26:07,130 --> 00:26:10,250 لذلك عندما يكون لديك حرف كبير، ينبغي أن تبقى بمثابة كبيرة. 363 00:26:10,250 --> 00:26:12,830 يجب أن تبقى كما Lowercases صغيرة. 364 00:26:13,620 --> 00:26:19,480 وحتى بعض الوظائف المفيدة لتكون قادرة على التعامل مع الرسائل تشفر فقط 365 00:26:19,480 --> 00:26:22,380 والحفاظ على الحفاظ على رأس المال من الأشياء 366 00:26:22,380 --> 00:26:25,130 هو وظائف islower isalpha، isupper. 367 00:26:25,130 --> 00:26:29,270 وبالتالي فإن هذه هي وظائف التي ترجع لك قيمة منطقية. 368 00:26:29,270 --> 00:26:34,180 في الأساس، صحيحة أو خاطئة. هل هذا كبيرة؟ هذا هو أبجدية رقمية؟ 369 00:26:34,180 --> 00:26:37,180 هذا هو رسالة، أساسا. 370 00:26:37,180 --> 00:26:41,070 حتى هنا هي 3 أمثلة عن كيف سيكون استخدام تلك الوظيفة. 371 00:26:41,070 --> 00:26:47,060 في الأساس، هل يمكن اختبار ما إذا كانت القيمة عاد اليكم من أن الوظيفة هي صحيحة أو خاطئة 372 00:26:47,060 --> 00:26:49,400 على أساس أن المدخلات. 373 00:26:49,400 --> 00:26:54,880 إما لا تفعل شيئا والشفرات شفر يحول الى شفرة او تأكد من أنها كبيرة، الخ. 374 00:26:54,880 --> 00:27:01,080 [طالب] هل يمكن ان توضح فقط تلك أكثر من ذلك بقليل، وكيف تستخدمها؟ نعم >>، لعلى يقين. 375 00:27:01,080 --> 00:27:08,470 إذا كان الأمر كذلك فإننا ننظر إلى الوراء، وهنا لدينا رأس المال الأول، أليس كذلك؟ 376 00:27:08,470 --> 00:27:14,550 لذلك نحن نعلم أن يذهب إلى I يا لأنني + 6 هو O. 377 00:27:14,550 --> 00:27:18,740 ولكننا نريد أن نتأكد من أن هذا هو O ستكون عاصمة O. 378 00:27:18,740 --> 00:27:22,940 ذلك أساسا، وهذا هو النوع من الذهاب الى تغيير مساهمتنا. 379 00:27:22,940 --> 00:27:26,870 لذلك فمن سواء الكبيرة أم لا سوف نوع من تغيير الطريقة التي نتعامل معها. 380 00:27:26,870 --> 00:27:32,360 ثم حتى إذا نستخدم الدالة على ذلك isupper مؤشر خاص، 381 00:27:32,360 --> 00:27:36,480 isupper ذلك ("I")، وترجع لنا صحيحا، حتى نعرف أنه من العلوي. 382 00:27:36,480 --> 00:27:40,360 حتى ذلك الحين بناء على ذلك، في وقت لاحق سوف نذهب إلى صيغة 383 00:27:40,360 --> 00:27:42,750 التي سوف تكون تستخدم لنقل الأشياء في قيصر، 384 00:27:42,750 --> 00:27:46,560 حتى ذلك الحين أساسا، وهناك ستكون صيغة مختلفة قليلا اذا كان الكبيرة 385 00:27:46,560 --> 00:27:50,670 بدلا من أحرف صغيرة. معنى؟ 386 00:27:51,020 --> 00:27:52,760 نعم. لا تقلق. 387 00:27:54,900 --> 00:27:58,990 تحدثت قليلا حول إضافة 6 إلى بريد إلكتروني، والتي لا تجعل تماما معنى 388 00:27:58,990 --> 00:28:05,500 إلا أننا عندما نفهم أن نوع من هذه الأحرف 389 00:28:05,500 --> 00:28:08,920 هي نوع من تبادل مع أعداد صحيحة. 390 00:28:08,920 --> 00:28:11,250 ما نقوم به هو أننا نوع من الصب استخدام الضمني. 391 00:28:11,250 --> 00:28:18,100 سوف نذهب إلى صب قليلا في وقت لاحق حيث كنت تأخذ قيمة وأنت تحويلها إلى نوع مختلف 392 00:28:18,100 --> 00:28:20,440 مما كان عليه في الأصل. 393 00:28:20,440 --> 00:28:25,910 ولكن مع هذا pset سوف نكون قادرين على استخدام نوع من الشخصيات بالتبادل 394 00:28:25,910 --> 00:28:30,880 وقيمها صحيحا المقابلة. 395 00:28:30,880 --> 00:28:35,140 حتى إذا كنت ببساطة يغلف شخصية مع اقتباسات من واحدة فقط، 396 00:28:35,140 --> 00:28:40,390 ثم عليك أن تكون قادرا على العمل مع مع الأعداد الصحيحة، والتعامل معها كعدد. 397 00:28:40,390 --> 00:28:48,040 وبالتالي فإن رأس المال C يتصل إلى 67. و صغيرة تتعلق إلى 102. 398 00:28:48,040 --> 00:28:51,480 مرة أخرى، إذا كنت تريد أن تعرف هذه القيم، والنظر في الجدول الخاص بك ASCII. 399 00:28:51,480 --> 00:28:56,160 لذلك دعونا الخوض في بعض الأمثلة على كيف يمكن أن تكون قادرة على طرح وإضافة، 400 00:28:56,160 --> 00:29:03,130 كيف يمكنك فعلا العمل حقا مع هذه الشخصيات، واستخدامها بالتبادل. 401 00:29:03,870 --> 00:29:11,350 أقول إن ASCIIMath هو الذهاب الى حساب إضافة حرف إلى عدد صحيح 402 00:29:11,350 --> 00:29:17,590 ومن ثم يعرض الحرف الناتجة فضلا عن القيمة الناتجة ASCII. 403 00:29:17,590 --> 00:29:22,290 وحتى هنا أنا أقول - we'll صفقة مع هذا الجزء في وقت لاحق - 404 00:29:22,290 --> 00:29:29,100 ولكن في الأساس، أنا أقول أن المستخدم يجب أن أقول ASCIIMath تشغيل جنبا إلى جنب مع مفتاح، 405 00:29:29,100 --> 00:29:30,880 وأنا أقول أن هذا المفتاح سيكون عدد 406 00:29:30,880 --> 00:29:34,600 التي نحن في طريقنا لإضافة هذه الشخصية. 407 00:29:34,600 --> 00:29:38,560 لذلك تلاحظ هنا أنه منذ اطالبهم مفتاح، 408 00:29:38,560 --> 00:29:40,590 منذ اطالبهم انهم إعطائي 1 شيء، 409 00:29:40,590 --> 00:29:45,600 أريد فقط لقبول / asciimath ومفتاح. 410 00:29:45,600 --> 00:29:49,330 لذلك أنا ذاهب لمطالبة argc يساوي 2. 411 00:29:49,330 --> 00:29:54,360 إذا لم تكن كذلك، ثم انا ذاهب الى العودة (1) والخروج من البرنامج سوف. 412 00:29:55,070 --> 00:29:58,540 لذلك أنا أقول المفتاح لن يكون سطر الأوامر الأولى حجة، 413 00:29:58,540 --> 00:30:05,080 انها سوف تكون ثانية واحدة، وكما ترون هنا، 414 00:30:05,080 --> 00:30:11,790 انا ذاهب الى تحويل ذلك إلى عدد صحيح. 415 00:30:15,740 --> 00:30:19,230 ثم أنا ذاهب لتعيين حرف R لتكون. 416 00:30:19,230 --> 00:30:23,970 تلاحظ أن هذا النوع من لجنة حقوق الإنسان هو في الواقع المتغير عدد صحيح. 417 00:30:23,970 --> 00:30:30,480 الطريقة التي أنا قادرة على استخدام R كعدد هي التغليف مع هذه الاقتباسات واحد. 418 00:30:33,850 --> 00:30:40,560 ذلك لدعم بياننا printf حيث لدينا عنصر نائب عن حرف 419 00:30:40,560 --> 00:30:43,590 وبعد ذلك نائبا لعدد صحيح، 420 00:30:43,590 --> 00:30:49,450 ويمثل الطابع من قبل مركز حقوق الإنسان، وعدد صحيح هو المفتاح. 421 00:30:49,450 --> 00:30:54,320 وحتى ذلك الحين ونحن في طريقنا إلى نتيجة في إضافة 2 معا. 422 00:30:54,320 --> 00:30:58,420 لذلك نحن في طريقنا لإضافة + R مهما كانت المفتاح هو، 423 00:30:58,420 --> 00:31:03,520 ثم ونحن في طريقنا لطباعة نتيجة لذلك. 424 00:31:06,210 --> 00:31:14,220 لذلك دعونا تجعل asciimath. انها حتى الآن، لذلك دعونا فقط تشغيل asciimath. 425 00:31:14,220 --> 00:31:18,290 أوه، ولكن انظر، لا تفعل أي شيء لأننا لم تعط في الواقع مفتاح. 426 00:31:18,290 --> 00:31:23,850 لذلك عندما عاد لتوه 1، وظيفتنا الرئيسية، عاد لتوه لنا. 427 00:31:23,850 --> 00:31:29,250 ثم دعونا حتى تمر في مفتاح. للشخص أن تعطيني رقم. >> [طالب] (4). 428 00:31:29,250 --> 00:31:30,920 4. حسنا. 429 00:31:30,920 --> 00:31:39,280 زيادة بنسبة 4 ص حتى يتم الانتقال إلى تعطينا الخامس، والتي تتطابق مع قيمة ASCII من 118. 430 00:31:39,280 --> 00:31:43,880 ثم لذلك النوع من المنطقي أن - 431 00:31:43,880 --> 00:31:51,250 في الواقع، يمكن أن أطلب منكم، ماذا كنت تعتقد أن قيمة ASCII من البحث هو إذا ص + 4 هو 118؟ 432 00:31:53,070 --> 00:31:55,470 ثم نعم، هو ص 114. 433 00:31:55,470 --> 00:32:03,010 إذا كان الأمر كذلك كنت تبحث على الطاولة ثم ASCII، والمؤكد، سترى أن يتم تمثيل بنسبة 114 ص. 434 00:32:03,010 --> 00:32:08,610 حتى الآن أن نعرف أننا يمكن أن تضيف إلى أحرف صحيحة، وهذا يبدو بسيطا جدا. 435 00:32:08,610 --> 00:32:12,740 ونحن في طريقنا لمجرد تكرار عبر سلسلة كما رأينا في مثال من قبل. 436 00:32:12,740 --> 00:32:17,170 سوف نتحقق ما اذا كان بريد إلكتروني. 437 00:32:17,170 --> 00:32:20,420 إذا كان، ثم تحول ذلك سنقوم بأي والمفتاح هو. 438 00:32:20,420 --> 00:32:23,650 بسيطة جدا، إلا عندما تحصل على مثل هذا، 439 00:32:23,650 --> 00:32:32,140 ترى أن Z، ممثلة 122، ثم سوف تعطيك أحرف مختلفة. 440 00:32:32,140 --> 00:32:37,770 نريد فعلا للبقاء ضمن الأبجدية لدينا، أليس كذلك؟ 441 00:32:37,770 --> 00:32:43,180 لذلك نحن بحاجة لمعرفة طريقة ما لنوع من الالتفاف حولها. 442 00:32:43,180 --> 00:32:47,190 عندما تصل إلى زيد، وترغب في زيادة عدد معينة، 443 00:32:47,190 --> 00:32:51,230 كنت لا تريد أن تذهب إلى ما وراء الباب الأبجدية ASCII؛ 444 00:32:51,230 --> 00:32:54,140 تريد العودة التفاف على طول الطريق إلى A. 445 00:32:54,140 --> 00:32:58,550 ولكن نأخذ في الاعتبار الحفاظ كنت لا تزال القضية. 446 00:32:58,550 --> 00:33:00,980 لذلك يمكن معرفة أن الرسائل لم تصبح الرموز 447 00:33:00,980 --> 00:33:05,290 تماما مثل رموز لن يتم تغيير أيضا. 448 00:33:05,290 --> 00:33:08,170 في الماضي كنت pset بالتأكيد لم تكن في حاجة إلى، 449 00:33:08,170 --> 00:33:14,310 ولكن كان خيار لتنفيذ pset الخاص الجشع باستخدام الدالة معامل. 450 00:33:14,310 --> 00:33:17,230 ولكن الآن ونحن في طريقنا إلى الواقع تحتاج إلى استخدام معامل، 451 00:33:17,230 --> 00:33:19,900 لذلك دعونا نذهب قليلا فقط أكثر من هذا قليلا. 452 00:33:19,900 --> 00:33:26,920 أساسا، عندما يكون لديك X Y مودولو، والتي تمنحك ما تبقى من X Y مقسوما. 453 00:33:26,920 --> 00:33:30,930 وهنا بعض الأمثلة هنا. لدينا 27٪ 15. 454 00:33:30,930 --> 00:33:36,200 في الأساس، وعندما تقوم بطرح 15 من 27 مرات عدد ممكن من دون الحصول على السلبية 455 00:33:36,200 --> 00:33:39,060 ثم تحصل على 12 خلفها. 456 00:33:39,060 --> 00:33:44,650 ولهذا النوع من مثل الرياضيات في سياق، ولكن كيف يمكننا فعلا استخدام هذا؟ 457 00:33:44,650 --> 00:33:47,100 انها سوف تكون مفيدة لwrapover لدينا. 458 00:33:47,100 --> 00:33:55,420 لهذا، دعنا نقول فقط طلبت منكم جميعا أن تقسيمها إلى 3 مجموعات. 459 00:33:55,420 --> 00:33:58,010 في بعض الأحيان القيام بذلك في مجموعات وشيء من هذا القبيل. 460 00:33:58,010 --> 00:34:01,320 يقول فقلت له: "حسنا، أريد منكم جميعا أن يمكن تقسيمها إلى 3." 461 00:34:01,320 --> 00:34:04,240 كيف يمكنك أن تفعل ذلك؟ 462 00:34:04,240 --> 00:34:06,810 [رد الطالب غير مسموع] نعم، بالضبط. عد من. حسنا. 463 00:34:06,810 --> 00:34:10,260 دعونا نفعل ذلك فعلا. هل تريد أن تبدأ؟ 464 00:34:10,260 --> 00:34:13,810 [عد من الطلاب] 1، 2، 3، 4. 465 00:34:13,810 --> 00:34:16,620 ولكن تذكر ... >> [طالب] أوه، آسف. 466 00:34:16,620 --> 00:34:18,730 وهذا نقطة جيدة حقا. 467 00:34:18,730 --> 00:34:24,130 قلت 4، لكننا نريد أن نقول في الواقع كنت 1 لأننا نريد فقط 3 مجموعات. 468 00:34:24,130 --> 00:34:30,159 حتى ذلك الحين، كيف - لا، هذا مثال جيد حقا لثم كيف يمكن القول 1؟ 469 00:34:30,159 --> 00:34:33,370 ما هي العلاقة بين 4 و 1؟ 470 00:34:33,370 --> 00:34:36,760 كذلك، 4 وزارة الدفاع 3 هو 1. 471 00:34:36,760 --> 00:34:41,460 لذلك إذا كنت لا تزال، هل هو 2. 472 00:34:41,460 --> 00:34:44,540 لذلك لدينا 1، 2، 3، 1، 2. 473 00:34:44,540 --> 00:34:49,420 مرة أخرى، وكنت في الواقع الشخص 5. كيف يمكنك أن تعرف أن أقول 2 بدلا من 5؟ 474 00:34:49,420 --> 00:34:53,760 كنت اقول 5 MOD 3 هو 2. 475 00:34:53,760 --> 00:34:59,100 أريد أن أرى كم عدد مجموعات من 3 وخلفها، ثم أمر الذي صباحا I. 476 00:34:59,100 --> 00:35:02,860 وحتى ذلك الحين إذا واصلنا على طول غرفة كاملة، 477 00:35:02,860 --> 00:35:07,760 ثم سوف نرى أننا دائما تطبيق في الواقع وظيفة وزارة الدفاع لأنفسنا 478 00:35:07,760 --> 00:35:09,990 لنوع من الاعتماد قبالة. 479 00:35:09,990 --> 00:35:14,490 وهذا هو أكثر نوع من مثال ملموس عن كيفية قد تستخدم مودولو 480 00:35:14,490 --> 00:35:17,960 لأنني متأكد قد ذهب معظمنا ربما من خلال هذه العملية 481 00:35:17,960 --> 00:35:19,630 حيث كان لدينا لحساب من. 482 00:35:19,630 --> 00:35:21,840 أي أسئلة حول مودولو؟ 483 00:35:21,840 --> 00:35:25,360 سيكون من المهم جدا لفهم المفاهيم من هذا، 484 00:35:25,360 --> 00:35:28,640 لذلك أريد أن تأكد يا رفاق فهم. 485 00:35:28,640 --> 00:35:34,660 [طالب] إذا لم يكن هناك ما تبقى، وأنها لا تعطيك العدد الفعلي؟ 486 00:35:34,660 --> 00:35:40,430 إذا كان أحد أول 3 منهم فعلت، لكان قد منحها لهم ما كانوا في الواقع، 487 00:35:40,430 --> 00:35:43,310 أم أنه قد أعطاهم [غير مسموع] >> هذا سؤال جيد. 488 00:35:43,310 --> 00:35:48,750 عندما لا يكون هناك ما تبقى لمودولو - حتى يقول لديك 6 وزارة الدفاع 3 - 489 00:35:48,750 --> 00:35:52,340 الذي يعطي في الواقع كنت مرة أخرى 0. 490 00:35:53,670 --> 00:35:57,290 سوف نتحدث عن ذلك قليلا في وقت لاحق. 491 00:35:58,810 --> 00:36:07,720 أوه نعم، على سبيل المثال، 3rd شخص - 3 وزارة الدفاع 3 هو في الواقع 0 ولكن قالت 3. 492 00:36:07,720 --> 00:36:14,900 ولهذا النوع من الصيد مثل الداخلية، على سبيل المثال، 493 00:36:14,900 --> 00:36:17,620 مثل حسنا، إذا هو 0 وزارة الدفاع ثم أنا ذاهب ليكون 3rd شخص. 494 00:36:17,620 --> 00:36:22,740 ولكن سوف نصل إلى نوع من الطريقة التي قد ترغب في التعامل مع ما 0 هو في وقت لاحق. 495 00:36:22,740 --> 00:36:32,750 حتى الآن لدينا نحو ما وسيلة لرسم خرائط زيد على الرسالة الحق. 496 00:36:32,750 --> 00:36:34,920 حتى الآن لقد مررنا هذه الأمثلة، 497 00:36:34,920 --> 00:36:37,880 ونحن نرى كيف النوع من العمل قد قيصر. 498 00:36:37,880 --> 00:36:42,640 ترى الحروف الهجائية 2 ثم تراهم التحول. 499 00:36:42,640 --> 00:36:44,430 لذلك دعونا نحاول والتعبير عن ذلك من حيث الصيغة. 500 00:36:44,430 --> 00:36:46,940 وتعطى هذه الصيغة في الواقع لك في المواصفات، 501 00:36:46,940 --> 00:36:52,070 ولكن دعونا نوع من نظرة من خلال ما يعني كل متغير. 502 00:36:52,070 --> 00:36:55,000 نتيجة لدينا نهاية ستكون في النص المشفر. 503 00:36:55,000 --> 00:36:58,300 لذلك هذا يقول أن الحرف من النص المشفر إيث 504 00:36:58,300 --> 00:37:02,500 سوف تتوافق مع الطابع إيث من عادي. 505 00:37:02,500 --> 00:37:08,130 من المنطقي أن لأننا نريد أن يكون دائما بطانة هذه الامور. 506 00:37:08,130 --> 00:37:13,480 لذلك سيكون من الطابع إيث من ك بالإضافة إلى النص المشفر، وهو أمر أساسي لدينا - 507 00:37:13,480 --> 00:37:17,230 من المنطقي أن - ومن ثم لدينا هذا وزارة الدفاع 26. 508 00:37:17,230 --> 00:37:19,860 أذكر مرة عندما كان لدينا زيد 509 00:37:19,860 --> 00:37:24,190 لم نكن نريد ان نصل الى الحرف، لذلك أردنا أن وزارة الدفاع أنه 510 00:37:24,190 --> 00:37:26,540 ويلتف حول نوع من الأبجدية. 511 00:37:26,540 --> 00:37:33,430 بعد زيد كنت ستذهب الى أ، ب، ج، د، حتى حصلت لك العدد الصحيح. 512 00:37:33,430 --> 00:37:44,690 لذلك نعرف ان زيد، إذا + 6، من شأنه أن يعطي لنا و لأنه بعد زيد يأتي أ، ب، ج، د، ه، و. 513 00:37:44,690 --> 00:37:52,530 لذلك دعونا نتذكر اننا نعرف على وجه اليقين أن زيد + 6 سوف تعطينا F. 514 00:37:52,530 --> 00:38:03,530 في القيم ASCII، Z هو 122 و F هو 102. 515 00:38:03,530 --> 00:38:10,570 لذلك علينا أن نجد طريقة ما لجعل لدينا قيصر الصيغة تعطينا 102 516 00:38:10,570 --> 00:38:13,590 بعد أخذ في 122. 517 00:38:13,590 --> 00:38:19,550 إذا كان الأمر كذلك نطبق هذه الصيغة فقط، و٪ ('Z' + 6) 26، الذي يعطي فعلا لك 24 518 00:38:19,550 --> 00:38:25,980 لأن 122 + 6 هو 128؛ 128 26٪ يعطي لك 24 المتبقية. 519 00:38:25,980 --> 00:38:29,140 ولكن هذا لا يعني حقا و. وهذا بالتأكيد ليس 102. 520 00:38:29,140 --> 00:38:33,590 وهذا أيضا لا حرف في الأبجدية 6. 521 00:38:33,590 --> 00:38:41,550 من الواضح جدا، ونحن بحاجة إلى طريقة ما لهذا التغيير والتبديل قليلا قليلا. 522 00:38:42,970 --> 00:38:51,340 من حيث الأبجدية العادية، ونحن نعلم أن Z هو حرف F 26 وهي 6. 523 00:38:51,340 --> 00:38:55,460 ولكننا في علوم الكمبيوتر، لذلك نحن ذاهبون الى مؤشر في 0. 524 00:38:55,460 --> 00:39:00,690 حتى ذلك الحين بدلا من كونها Z رقم 26، ونحن في طريقنا لذلك يقول عدد ال 25 525 00:39:00,690 --> 00:39:02,630 لأن هو 0. 526 00:39:02,630 --> 00:39:04,770 حتى الآن دعونا تطبيق هذه الصيغة. 527 00:39:04,770 --> 00:39:11,710 لدينا Z ممثلة بنسبة 6 + 25، والتي تعطيك 31. 528 00:39:11,710 --> 00:39:15,790 وزارة الدفاع 26 و 31 يعطيك 5 كما على الباقي. 529 00:39:15,790 --> 00:39:20,500 هذا الكمال لأننا نعلم أن F هو حرف في الأبجدية 5. 530 00:39:20,500 --> 00:39:26,400 ولكن لا يزال من غير واو، أليس كذلك؟ لا يزال من غير 102. 531 00:39:26,400 --> 00:39:32,730 حتى ذلك الحين لهذا pset، سوف يكون تحديا في محاولة لمعرفة العلاقة 532 00:39:32,730 --> 00:39:36,910 بين تحويل بين هذه القيم ASCII والفهرس الأبجدي. 533 00:39:36,910 --> 00:39:40,280 أساسا، ما سوف تريد أن تفعل، وتريد أن تبدأ مع القيم ASCII، 534 00:39:40,280 --> 00:39:45,390 ولكن بعد ذلك كنت ترغب في ترجمة بطريقة ما إلى الفهرس الأبجدي 535 00:39:45,390 --> 00:39:52,610 ثم حساب ما ينبغي أن يكون خطاب - في الأساس، ما هو مؤشر على الأبجدي 536 00:39:52,610 --> 00:39:57,660 من الطابع الشفرات - ترجمة بعد ذلك أن العودة إلى القيم ASCII. 537 00:39:57,660 --> 00:40:04,870 حتى إذا كنت جلد خارج الجدول الخاص بك ASCII، ثم حاول إيجاد والعلاقات بين، ويقول، 102 و 5 538 00:40:04,870 --> 00:40:10,440 أو 122 و 25. 539 00:40:12,140 --> 00:40:15,690 حصلنا من لدينا مفتاح وسيطات سطر الأوامر، لقد حصلنا على نص عادي، 540 00:40:15,690 --> 00:40:17,520 لقد مشفر نحن عليه. 541 00:40:17,520 --> 00:40:19,820 الآن كل ما لم يقم القيام به هو طباعته. 542 00:40:19,820 --> 00:40:22,040 يمكننا القيام بذلك عدة طرق مختلفة. 543 00:40:22,040 --> 00:40:24,570 ما يمكن القيام به هو طباعة الواقع ونحن نمضي على طول. 544 00:40:24,570 --> 00:40:28,250 ونحن iterate عبر الشخصيات في السلسلة، 545 00:40:28,250 --> 00:40:31,660 يمكننا ببساطة طباعة فقط الحق في ذلك الحين عندما نحسب ذلك. 546 00:40:31,660 --> 00:40:36,030 بدلا من ذلك، يمكنك تخزين أيضا في مجموعة ولها مجموعة من الشخصيات 547 00:40:36,030 --> 00:40:39,280 وفي نهاية ذلك تكرار عبر مجموعة كاملة وطباعته. 548 00:40:39,280 --> 00:40:40,980 بحيث يكون لديك اثنين من الخيارات المتاحة لذلك. 549 00:40:40,980 --> 00:40:47,280 وتذكر أن ج٪ ستكون العنصر النائب لطباعة حرف. 550 00:40:47,280 --> 00:40:50,420 هناك لذلك لدينا قيصر، والآن ننتقل إلى Vigenere، 551 00:40:50,420 --> 00:40:57,580 التي هي مشابهة جدا لقيصر ولكن فقط قليلا أكثر تعقيدا. 552 00:40:57,580 --> 00:41:03,310 أساسا حتى مع Vigenere وكنت على وشك أن يمر في كلمة رئيسية. 553 00:41:03,310 --> 00:41:06,510 وذلك بدلا من عدد، وأنت تسير أن يكون سلسلة، 554 00:41:06,510 --> 00:41:09,200 وحتى يحدث ليكون بمثابة الكلمة الرئيسية. 555 00:41:09,200 --> 00:41:14,440 ثم، كالعادة، وأنت تسير في الحصول على موجه عن سلسلة من المستخدم 556 00:41:14,440 --> 00:41:19,050 وشفر يحول الى شفرة ثم ثم منحهم عودة النص المشفر. 557 00:41:19,050 --> 00:41:24,650 وذلك قلت، انها تشبه الى حد بعيد قيصر، باستثناء بدلا من تحويل عدد معين من قبل، 558 00:41:24,650 --> 00:41:30,620 العدد سيرتفع لتغيير الواقع في كل مرة من حرف إلى حرف. 559 00:41:30,620 --> 00:41:34,890 لتمثيل هذا العدد الفعلي للتحول، انه يمثلها الحروف لوحة المفاتيح. 560 00:41:34,890 --> 00:41:43,150 إذا كان الأمر كذلك تدخلها في التحول من، على سبيل المثال، ثم التي تتوافق مع التحول من 0. 561 00:41:43,150 --> 00:41:45,900 لذلك فمن العودة مرة أخرى إلى الفهرس الأبجدي. 562 00:41:45,900 --> 00:41:49,100 ما قد يكون مفيدا إذا كنت ترى أن نتعامل مع الواقع قيم ASCII 563 00:41:49,100 --> 00:41:51,790 وكذلك الرسائل، وكذلك الفهرس الأبجدي، 564 00:41:51,790 --> 00:41:58,020 ربما تجد أو جعل الجدول الخاص بك ASCII الخاصة التي تظهر الفهرس الأبجدي من 0 إلى 25، 565 00:41:58,020 --> 00:42:03,750 A إلى Z، وقيم ASCII بحيث يمكنك رؤية نوع من العلاقة 566 00:42:03,750 --> 00:42:07,020 ويرسم ومحاولة العثور على بعض النقوش. 567 00:42:07,020 --> 00:42:11,010 وبالمثل، إذا كنت قد تحولت على سبيل المثال بعض من و - 568 00:42:11,010 --> 00:42:21,110 وهذا هو إما صغيرة أو كبيرة و - ثم التي من شأنها أن تتوافق مع 5. 569 00:42:21,110 --> 00:42:24,180 نحن جيدة حتى الآن؟ 570 00:42:25,770 --> 00:42:30,050 صيغة Vigenere يختلف قليلا. 571 00:42:30,050 --> 00:42:32,960 في الأساس، وترى أنه من مثل قيصر، 572 00:42:32,960 --> 00:42:37,390 إلا ك بدلا من مجرد لدينا ك ي مؤشر. 573 00:42:37,390 --> 00:42:44,810 لاحظ أننا لم تكن تستخدم أساسا لأنني، وطول الكلمة 574 00:42:44,810 --> 00:42:49,850 ليس بالضرورة طول النص المشفر لدينا. 575 00:42:49,850 --> 00:42:56,130 وسوف يكون هذا أكثر وضوحا قليلا عندما نرى مثال لدي قليلا في وقت لاحق. 576 00:42:56,130 --> 00:43:03,160 أساسا، إذا قمت بتشغيل البرنامج مع كلمة رئيسية من ohai، 577 00:43:03,160 --> 00:43:08,560 ثم وهذا يعني أن في كل مرة، ohai سيكون التحول الخاص بك. 578 00:43:08,560 --> 00:43:11,060 ذلك اعتمادا على ما كنت في موقف كلماتك الرئيسية، 579 00:43:11,060 --> 00:43:15,800 وأنت تسير لتحويل النص المشفر الطابع الخاص بك عن طريق بعض هذا المبلغ. 580 00:43:15,800 --> 00:43:19,630 مرة أخرى، تماما مثل قيصر، ونحن نريد أن نتأكد من أننا الحفاظ على رأس المال من الأشياء 581 00:43:19,630 --> 00:43:22,900 ونحن الرسائل شفر يحول الى شفرة فقط، وليس حرفا أو مسافات. 582 00:43:22,900 --> 00:43:26,330 حتى ننظر إلى قيصر على الوظائف التي قد تكون استخدمت، 583 00:43:26,330 --> 00:43:32,570 الطريقة التي قررت كيفية تحويل الأشياء، وتطبيق ذلك على البرنامج الخاص بك هنا. 584 00:43:32,570 --> 00:43:35,260 لذلك دعونا تعيين ذلك. 585 00:43:35,260 --> 00:43:39,680 لدينا نص عادي بعد أن حصلنا على من المستخدم من GetString 586 00:43:39,680 --> 00:43:44,090 أقول هذا ... هو CS50! 587 00:43:44,090 --> 00:43:47,090 ثم لدينا كلمة رئيسية من ohai. 588 00:43:47,090 --> 00:43:50,930 أول 4 أحرف بسيطة جدا. 589 00:43:50,930 --> 00:43:55,580 ونحن نعلم أن T سوف يتم نقل بواسطة س، 590 00:43:55,580 --> 00:44:01,990 ثم ح سوف يتم نقل بواسطة ح، ط سوف يتم نقل من قبل. 591 00:44:01,990 --> 00:44:04,610 هنا ترى أن يمثل 0، 592 00:44:04,610 --> 00:44:11,940 حتى ذلك الحين قيمة النهائية هي في الواقع مجرد الرسالة نفسها كما كانت من قبل. 593 00:44:11,940 --> 00:44:15,250 ثم يتم إزاحة S من أنا. 594 00:44:15,250 --> 00:44:19,370 ولكن بعد ذلك لديك هذه الفترات هنا. 595 00:44:19,370 --> 00:44:25,960 نحن لا نريد لشفر يحول الى شفرة أنه حتى ذلك الحين لم نغير أي شيء من قبل 596 00:44:25,960 --> 00:44:31,280 وطباعة للتو فترة دون تغيير. 597 00:44:31,280 --> 00:44:38,020 [طالب] أنا لا أفهم كيف تعرف أن تحول ذلك - أين أنت - >> أوه، آسف. 598 00:44:38,020 --> 00:44:41,620 في الجزء العلوي هنا ترى أن سطر الأوامر ohai الحجة هنا، 599 00:44:41,620 --> 00:44:43,740 أن سيكون الكلمة. 600 00:44:43,740 --> 00:44:49,550 وذلك أساسا، كنت ركوب الدراجات على الأحرف في الكلمة. 601 00:44:49,550 --> 00:44:52,020 [طالب] لذلك يا هو على وشك أن يتحول هو نفسه - 602 00:44:52,020 --> 00:44:56,260 ذلك س يقابل عدد معين في الأبجدية. 603 00:44:56,260 --> 00:44:58,400 [طالب] الحق. ولكن اين لك الجزء CS50 من؟ 604 00:44:58,400 --> 00:45:02,540 اه. هذا في GetString حيث كنت مثل، "أعطني سلسلة لترميز". 605 00:45:02,540 --> 00:45:07,510 [طالب] انهم ذاهبون لتعطيك هذه الحجة إلى التحول من 606 00:45:07,510 --> 00:45:09,380 وبعد ذلك سوف تسأل عن سلسلة الخاص بك أولا. >> نعم. 607 00:45:09,380 --> 00:45:12,440 حتى عندما تشغيل البرنامج، انهم ذاهبون الى تضمين الكلمة 608 00:45:12,440 --> 00:45:14,740 في حججهم سطر الأوامر عند تشغيلها عليه. 609 00:45:14,740 --> 00:45:19,740 ثم مرة واحدة كنت قد تحققت أن ما منحه في الواقع كنت 1 و لا أكثر، وليس أقل، 610 00:45:19,740 --> 00:45:23,750 ثم كنت تريد الذهاب لتدفعهم للسلسلة، يقول: "أعطني السلسلة." 611 00:45:23,750 --> 00:45:27,630 حتى ذلك حيث في هذه الحالة انهم أعطاك هذا ... هو CS50! 612 00:45:27,630 --> 00:45:32,090 حتى ذلك الحين كنت تريد الذهاب لاستخدام هذا ohai واستخدام وتكرار عبر. 613 00:45:32,090 --> 00:45:38,200 تلاحظ أن أكثر من هنا نحن تخطي تشفير فترات، 614 00:45:38,200 --> 00:45:51,660 ولكن من حيث موقفنا لohai، المرحلة التالية استخدمنا س. 615 00:45:51,660 --> 00:45:54,990 في هذه الحالة انها قليلا من الصعب أن نرى لأن هذا هو 4، 616 00:45:54,990 --> 00:45:57,710 لذلك دعونا مواصلة قليلا. مجرد عصا معي هنا. 617 00:45:57,710 --> 00:46:02,960 ثم لدينا ط وق، التي تترجم بعد ذلك يا وح التوالي. 618 00:46:02,960 --> 00:46:09,370 ثم لدينا الفضاء، وحتى ذلك الحين ونحن نعلم أننا لن شفر يحول الى شفرة المسافات. 619 00:46:09,370 --> 00:46:18,930 ولكن لاحظ أن بدلا من الذهاب إلى هنا في هذا المكان الصحيح، 620 00:46:18,930 --> 00:46:28,330 نحن تشفير من قبل - وأنا لا أعرف ما إذا كان يمكنك أن ترى أن - هنا. 621 00:46:28,330 --> 00:46:33,710 حتى انها ليست مثلك محددة سلفا في الواقع، ويقول، يا غني هنا، ح يذهب هنا، 622 00:46:33,710 --> 00:46:39,200 ويذهب هنا، وأنا هنا يذهب، س، ح، أ، ط، س، ح، أ، ط أنت لا تفعل ذلك. 623 00:46:39,200 --> 00:46:43,760 كنت فقط تحول وضعك في الكلمة 624 00:46:43,760 --> 00:46:51,020 عندما تعلم ان كنت في طريقها فعلا لتكون تشفير رسالة الفعلية. 625 00:46:51,020 --> 00:46:53,920 هل هذا النوع من معنى؟ 626 00:46:53,920 --> 00:46:55,800 حسنا. 627 00:46:56,490 --> 00:46:58,500 فقط حتى بعض التذكير. 628 00:46:58,500 --> 00:47:03,760 تريد التأكد من أنك تقدم فقط إلى الحرف التالي في الكلمة الرئيسية 629 00:47:03,760 --> 00:47:06,390 إذا كان الحرف في نص عادي الخاص بك هو رسالة. 630 00:47:06,390 --> 00:47:09,120 لذلك نقول نحن في س. 631 00:47:09,120 --> 00:47:19,310 نلاحظ أن الحرف التالي، ومؤشر الأول من نص عادي، هو رقم، على سبيل المثال. 632 00:47:19,310 --> 00:47:31,630 ثم نحن لا تقدم ي، ومؤشر لالكلمات الرئيسية، حتى نصل إلى رسالة أخرى. 633 00:47:31,630 --> 00:47:36,230 مرة أخرى، وتريد أيضا للتأكد من أن كنت ملفوف إلى بداية الكلمة 634 00:47:36,230 --> 00:47:37,770 عندما كنت في نهاية ذلك. 635 00:47:37,770 --> 00:47:42,030 إذا كنت ترى هنا نحن في الأول، واحدة المقبل يجب أن يكون س. 636 00:47:42,030 --> 00:47:47,690 لذلك أنت تريد أن تجد طريقة ما لتكون قادرة على الالتفاف إلى بداية الكلمة الرئيسية 637 00:47:47,690 --> 00:47:49,470 في كل مرة أن تصل إلى نهاية. 638 00:47:49,470 --> 00:47:55,040 ومرة أخرى كان الأمر كذلك، ما هو نوع من المشغل مفيد في هذه الحالة لالتفاف حولها؟ 639 00:47:56,630 --> 00:47:59,840 كما هو الحال في عد قبالة سبيل المثال. 640 00:47:59,840 --> 00:48:03,710 [طالب] وعلامة في المئة. نعم >>، علامة النسبة المئوية، التي هي مودولو. 641 00:48:03,710 --> 00:48:11,250 لذلك سوف تكون في متناول اليدين مودولو هنا عندما تريد التفاف على المؤشر في ohai الخاص بك. 642 00:48:11,250 --> 00:48:17,700 ومجرد تلميح سريع: حاول أن تفكر في التفاف على الكلمة قليلا قبالة مثل العد، 643 00:48:17,700 --> 00:48:23,590 حيث إذا كان هناك 3 مجموعات، والشخص 4، 644 00:48:23,590 --> 00:48:30,610 وكان عددهم 4 قال انهم وزارة الدفاع 3، التي كانت 1. 645 00:48:30,610 --> 00:48:32,880 وذلك في محاولة والتفكير في الأمر على هذا النحو. 646 00:48:34,770 --> 00:48:42,740 كما رأيتم في الصيغة، حيثما كان لديك CI ثم بي ولكن بعد ذلك كج، 647 00:48:42,740 --> 00:48:44,700 تريد التأكد من أنك تتبع تلك. 648 00:48:44,700 --> 00:48:47,580 لا تحتاج أن نسميها أنا، أنت لست بحاجة إلى أن نسميها ي، 649 00:48:47,580 --> 00:48:53,270 ولكنك ترغب في التأكد من أنك تتبع الموقف الذي كنت في نص عادي في الخاص 650 00:48:53,270 --> 00:48:55,790 فضلا عن الموقف الذي كنت في الكلمة الرئيسية في 651 00:48:55,790 --> 00:48:59,840 لأن هؤلاء لن بالضرورة أن تكون هي نفسها. 652 00:48:59,840 --> 00:49:06,400 لا يقتصر الأمر على الكلمة - أنها يمكن أن تكون مختلفة تماما عن طول عادي بك. 653 00:49:06,400 --> 00:49:09,140 أيضا، نص عادي الخاص بك، هناك الأرقام والحروف، 654 00:49:09,140 --> 00:49:14,450 حتى انها ليست الذهاب الى المباراة تماما معا. نعم. 655 00:49:14,450 --> 00:49:19,280 [طالب] هل هناك وظيفة لتغيير الحالة؟ 656 00:49:19,280 --> 00:49:24,530 يمكنك تغيير على رأس المال A؟ نعم >>، هناك بالتأكيد. 657 00:49:24,530 --> 00:49:27,890 يمكنك الاختيار من - أعتقد انها toupper، كل كلمة 1. 658 00:49:30,650 --> 00:49:36,310 ولكن عندما كنت في محاولة لأشياء الشفرات والحفاظ على النص، 659 00:49:36,310 --> 00:49:39,350 فمن الأفضل أن يكون أساسا قضايا منفصلة. 660 00:49:39,350 --> 00:49:42,040 اذا كان لالكبيرة، ثم تريد أن تحول هذا 661 00:49:42,040 --> 00:49:46,460 لأنه في الصيغة الخاصة بك، عندما ننظر إلى الوراء كيف علينا أن نوع من الذهاب 662 00:49:46,460 --> 00:49:50,900 بالتبادل بين الطريقة ASCII لتمثيل الأرقام 663 00:49:50,900 --> 00:49:55,020 والفهرس الأبجدي الفعلي، ونحن نريد أن نتأكد من 664 00:49:55,020 --> 00:50:01,850 هناك سيكون نوعا من النمط الذي كنت تريد الذهاب لاستخدامه. 665 00:50:01,850 --> 00:50:04,580 ملاحظة أخرى على نمط، في الواقع. 666 00:50:04,580 --> 00:50:07,250 وأنت تسير لبالتأكيد يكون التعامل مع الأرقام. 667 00:50:07,250 --> 00:50:11,280 ليس محاولة لاستخدام الأرقام السحرية، التي هي مثال للأسلوب. 668 00:50:11,280 --> 00:50:18,470 لذلك نقول لكم تريد في كل مرة شيئا من التحول مثل - 669 00:50:18,470 --> 00:50:22,400 حسنا، لذلك التلميح، جناح آخر هو عندما كنت على وشك أن يتحول شيئا 670 00:50:22,400 --> 00:50:26,310 بمقدار معين، وليس محاولة لتمثيل ذلك من قبل العدد الفعلي 671 00:50:26,310 --> 00:50:32,810 ولكن في محاولة معرفة ما إذا كان نوعا ما، ويمكنك استخدام قيمة ASCII، والتي سوف النوع من أكثر منطقية. 672 00:50:32,810 --> 00:50:35,470 ملاحظة أخرى: لأننا نتعامل مع الصيغ، 673 00:50:35,470 --> 00:50:41,200 على الرغم من أن لديك نوع من TF نعرف ما نمط كنت قد تستخدم، 674 00:50:41,200 --> 00:50:44,430 أفضل لالعينية تعليقاتك لشرح منطق، مثل، 675 00:50:44,430 --> 00:50:51,880 "أنا باستخدام هذا النمط لأن ..." وشرح نوع من نمط بإيجاز في تعليقاتكم. 676 00:50:54,090 --> 00:50:58,990 [كان هذه الإرشادات التفصيلية 2] إذا لم تكن هناك أي أسئلة أخرى، ثم سوف مجرد البقاء هنا لمدة قليلا. 677 00:50:58,990 --> 00:51:04,370 حظا سعيدا مع pset الخاص 2: تشفير وأشكركم على الحضور. 678 00:51:06,070 --> 00:51:08,620 [طالب] شكرا لك. شكرا لك >>. 679 00:51:09,220 --> 00:51:10,800 [وسائل الإعلام مقدمة غير متصل]