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