1 00:00:00,000 --> 00:00:00,980 2 00:00:00,980 --> 00:00:04,410 >> [عزف الموسيقى] 3 00:00:04,410 --> 00:00:11,147 4 00:00:11,147 --> 00:00:12,230 J. DAVID مالان: حسنا. 5 00:00:12,230 --> 00:00:16,440 هذا هو CS50، وهذا هي نهاية أسبوع 2. 6 00:00:16,440 --> 00:00:18,480 حتى اليوم، نحن ذاهبون مواصلة نظرتنا 7 00:00:18,480 --> 00:00:21,150 كيف نمثلها الأشياء تحت hood-- الابتعاد 8 00:00:21,150 --> 00:00:23,520 من أرقام مثل الأعداد الصحيحة والقيم النقطة العائمة 9 00:00:23,520 --> 00:00:26,810 والتركيز على الاوتار و برامج في نهاية المطاف أكثر إثارة للاهتمام. 10 00:00:26,810 --> 00:00:30,140 ولكن سنقوم أيضا أن تأخذ نظرة على زوجين من problems-- نطاق محدد 11 00:00:30,140 --> 00:00:33,620 أولها سوف أن تنطوي على التشفير، 12 00:00:33,620 --> 00:00:36,570 فن الهرولة المعلومات، الذي كنت انظر أعلاه هنا 13 00:00:36,570 --> 00:00:41,480 هي صورة لراديو اليتيم آني حلقة فك سرية من الأمس. 14 00:00:41,480 --> 00:00:46,490 >> هذا هو في الواقع شكل بدائي جدا وشكل الصديقة للطفل من cryptopgraphy 15 00:00:46,490 --> 00:00:50,590 حيث هذا الخاتم اثنين من disks-- داخل واحد واحد خارج. 16 00:00:50,590 --> 00:00:54,740 وعن طريق تناوب احدة من تلك، يمكنك خط الأساس يصل خطابات مثل 17 00:00:54,740 --> 00:00:59,520 من خلال Z مع رسائل أخرى مثل B من خلال A. وبعبارة أخرى، 18 00:00:59,520 --> 00:01:03,730 يمكنك تدوير حرفيا الأبجدية، وبالتالي الخروج مع تعيين من 19 00:01:03,730 --> 00:01:07,820 رسائل إلى خطابات بحيث، إذا كنت أراد أن يرسل رسالة سرية 20 00:01:07,820 --> 00:01:11,820 لشخص مثل آني، يمكن أن تكتب أسفل الرسالة ثم تناوب 21 00:01:11,820 --> 00:01:15,370 الحروف، حيث، إذا كنت تعني يقول "A،" كنت بدلا من ذلك قل "B" 22 00:01:15,370 --> 00:01:17,280 كنت أقصد أن أقول "B" يمكنك بدلا من ذلك قل "C" - 23 00:01:17,280 --> 00:01:20,240 أو شيء أكثر قليلا ذكي من that-- ثم، في نهاية المطاف، 24 00:01:20,240 --> 00:01:24,630 طالما آني لديه هذا فك حلقة، وقالت انها يمكن فك شفرة الرسالة. 25 00:01:24,630 --> 00:01:28,540 الآن، تذكرون، في الواقع، أن هذا واستخدمت في الفيلم الشهير جدا أن 26 00:01:28,540 --> 00:01:31,140 يلعب nauseum الإعلانية خلال موسم عيد الميلاد. 27 00:01:31,140 --> 00:01:32,650 دعونا نلقي نظرة هنا. 28 00:01:32,650 --> 00:01:35,294 29 00:01:35,294 --> 00:01:37,210 الخاص Ralphie باركر: "سواء كان ذلك معروفة للجميع في ملخص 30 00:01:37,210 --> 00:01:41,000 أن رالف باركر يعين بموجبه عضوا في ليتل اليتيم آني السرية 31 00:01:41,000 --> 00:01:44,860 يحق دائرة ولجميع الأوسمة والمزايا التي تحدث بها ". 32 00:01:44,860 --> 00:01:47,410 >> PARKER الخاص Ralphie (رواية): وقع ليتل اليتيم آني. 33 00:01:47,410 --> 00:01:50,070 بالعطف وبيار اندريه! 34 00:01:50,070 --> 00:01:51,490 في الحبر. 35 00:01:51,490 --> 00:01:55,494 الأوسمة والفوائد، بالفعل في سن التاسعة. 36 00:01:55,494 --> 00:01:57,402 >> [عزف الموسيقى] 37 00:01:57,402 --> 00:02:00,470 >> [RADIO الثرثرة] 38 00:02:00,470 --> 00:02:01,470 PARKER الخاص Ralphie: هيا. 39 00:02:01,470 --> 00:02:02,344 دعونا الحصول على معها. 40 00:02:02,344 --> 00:02:06,029 أنا لا تحتاج الى كل ذلك الجاز حول المهربين والقراصنة. 41 00:02:06,029 --> 00:02:08,820 RADIO المذيع: الاستماع غدا ليلة مغامرة الختامية 42 00:02:08,820 --> 00:02:11,060 من سفينة القراصنة الأسود. 43 00:02:11,060 --> 00:02:14,740 الآن، حان الوقت للآني رسالة سرية بالنسبة لك أعضاء 44 00:02:14,740 --> 00:02:17,110 من الدائرة السرية. 45 00:02:17,110 --> 00:02:20,700 تذكر أطفال، فقط أعضاء من الدائرة السرية آني 46 00:02:20,700 --> 00:02:23,270 يمكن فك شفرة رسالة سرية آني. 47 00:02:23,270 --> 00:02:27,270 >> تذكر، آني وهذا يتوقف على لك. 48 00:02:27,270 --> 00:02:30,060 وضع العلامات الخاصة بك لB-2. 49 00:02:30,060 --> 00:02:34,004 هنا هو message-- 12، 11، 2-- 50 00:02:34,004 --> 00:02:36,503 PARKER الخاص Ralphie (رواية): I أنا في أول لقائي السري. 51 00:02:36,503 --> 00:02:40,041 RADIO المذيع: --25، 14، 11، 18، 16-- 52 00:02:40,041 --> 00:02:42,790 PARKER الخاص Ralphie (رواية): أوه، كان بيير كبيرة في هذه الليلة صوت. 53 00:02:42,790 --> 00:02:46,110 ويمكنني أن أقول أن الليلة وكانت رسالة مهمة حقا. 54 00:02:46,110 --> 00:02:47,930 >> RADIO المذيع: --3، 25. 55 00:02:47,930 --> 00:02:49,940 هذا هو رسالة من آني نفسها. 56 00:02:49,940 --> 00:02:52,182 تذكر، لا تخبر أحدا. 57 00:02:52,182 --> 00:02:55,077 >> [يلهث] 58 00:02:55,077 --> 00:02:57,285 PARKER الخاص Ralphie (رواية): تسعين ثانية في وقت لاحق، وأنا 59 00:02:57,285 --> 00:03:00,090 في الغرفة الوحيدة في المنزل الذي ولد من تسعة 60 00:03:00,090 --> 00:03:04,380 يمكن الجلوس في الخصوصية وفك. 61 00:03:04,380 --> 00:03:04,990 آه. 62 00:03:04,990 --> 00:03:05,680 "ب" 63 00:03:05,680 --> 00:03:06,524 >> [ضحك خافت] 64 00:03:06,524 --> 00:03:08,684 >> PARKER الخاص Ralphie (رواية): ذهبت إلى أخرى. 65 00:03:08,684 --> 00:03:09,610 "هاء" 66 00:03:09,610 --> 00:03:11,641 الكلمة الأولى هي "يكون". 67 00:03:11,641 --> 00:03:12,140 نعم! 68 00:03:12,140 --> 00:03:14,293 كانت قادمة من الأسهل الآن. 69 00:03:14,293 --> 00:03:15,259 "U." 70 00:03:15,259 --> 00:03:16,225 >> [ضحك خافت] 71 00:03:16,225 --> 00:03:18,157 >> RANDY PARKER: فصيل عبد الواحد، هيا، الخاص Ralphie. 72 00:03:18,157 --> 00:03:19,606 أنا فلدي تذهب! 73 00:03:19,606 --> 00:03:21,538 >> PARKER الخاص Ralphie: سأكون صولا، ما. 74 00:03:21,538 --> 00:03:22,504 جي الازيز. 75 00:03:22,504 --> 00:03:25,402 76 00:03:25,402 --> 00:03:31,220 "T." "O." "مما لا شك فيه ل"." احرص على "ماذا؟ 77 00:03:31,220 --> 00:03:33,981 ما كان ليتل اليتيم آني أحاول أن أقول؟ "مما لا شك فيه أن" ما؟ 78 00:03:33,981 --> 00:03:35,522 الأم: الخاص Ralphie، وقد حصلت راندي للذهاب. 79 00:03:35,522 --> 00:03:36,735 هل يرجى يخرج؟ 80 00:03:36,735 --> 00:03:38,190 >> PARKER الخاص Ralphie: حسنا يا أمي! 81 00:03:38,190 --> 00:03:39,787 سأكون من الصحيح! 82 00:03:39,787 --> 00:03:41,995 PARKER الخاص Ralphie (رواية): كنت تقترب الآن. 83 00:03:41,995 --> 00:03:43,370 كان التوتر الفظيع. 84 00:03:43,370 --> 00:03:44,794 ما كان عليه؟ 85 00:03:44,794 --> 00:03:47,656 مصير كوكب الأرض قد يتعطل في الميزان. 86 00:03:47,656 --> 00:03:50,518 >> الأم: الخاص Ralphie، وراندي حصلت على الذهاب! 87 00:03:50,518 --> 00:03:53,635 >> PARKER الخاص Ralphie: سوف يكون على حق خارج، ليبكي بصوت عال! 88 00:03:53,635 --> 00:03:55,343 PARKER الخاص Ralphie (رواية): تقريبا هناك! 89 00:03:55,343 --> 00:03:56,520 حلقت أصابعي! 90 00:03:56,520 --> 00:03:58,500 كان ذهني فخ الصلب. 91 00:03:58,500 --> 00:03:59,850 صدي كل مسام. 92 00:03:59,850 --> 00:04:01,806 وكان واضحا تقريبا! 93 00:04:01,806 --> 00:04:02,773 نعم! 94 00:04:02,773 --> 00:04:03,273 نعم! 95 00:04:03,273 --> 00:04:03,773 نعم! 96 00:04:03,773 --> 00:04:04,740 نعم! 97 00:04:04,740 --> 00:04:10,250 >> الخاص Ralphie باركر: "مما لا شك فيه شرب فالتين الخاص ". 98 00:04:10,250 --> 00:04:10,750 فالتين؟ 99 00:04:10,750 --> 00:04:14,864 100 00:04:14,864 --> 00:04:17,539 تجاري تافه؟ 101 00:04:17,539 --> 00:04:19,439 >> [عزف الموسيقى] 102 00:04:19,439 --> 00:04:21,724 >> PARKER الخاص Ralphie: ابن العاهرة. 103 00:04:21,724 --> 00:04:23,460 >> [يضحك] 104 00:04:23,460 --> 00:04:27,070 >> J. DAVID مالان: حتى أن يتم بعد ذلك لمحة على ما التشفير 105 00:04:27,070 --> 00:04:29,880 يمكن أن يكون لthis-- ل شرب من الأمس. 106 00:04:29,880 --> 00:04:30,900 ولذلك فإن إعلان سريع. 107 00:04:30,900 --> 00:04:33,410 إذا أنت حر هذا الجمعة عند 13:15 وسوف 108 00:04:33,410 --> 00:04:36,610 ترغب في الانضمام إلينا CS50 الغداء، التوجه إلى هذا الرابط هنا. 109 00:04:36,610 --> 00:04:38,080 يأتي أولا، يخدم أولا كالمعتاد. 110 00:04:38,080 --> 00:04:41,840 ولكن مع مرور الوقت، ونحن سوف نتأكد من أن معظم أي شخص ترغب في المشاركة 111 00:04:41,840 --> 00:04:43,640 قد جدولة الحكيم. 112 00:04:43,640 --> 00:04:45,170 >> حتى السلاسل. 113 00:04:45,170 --> 00:04:47,940 لدينا Zamyla-- منهم كنت قد اجتمعت الآن على الأرجح 114 00:04:47,940 --> 00:04:50,750 في مشكلة تعيين 1-- التي هو مكتوبة اسم الآن. 115 00:04:50,750 --> 00:04:53,570 وافترض أنك كتبته اسمها في برنامج الكمبيوتر هذا 116 00:04:53,570 --> 00:04:55,710 استخدام شيء من هذا القبيل getString. 117 00:04:55,710 --> 00:04:57,890 من أجل استرداد تلك المفاتيح، كيف 118 00:04:57,890 --> 00:05:01,620 نذهب نحو يمثل سلسلة، كلمة، فقرة، 119 00:05:01,620 --> 00:05:03,960 أو رسائل متعددة مثل هذه هنا؟ 120 00:05:03,960 --> 00:05:06,790 >> تحدثنا في المرة السابقة عن الأعداد الصحيحة والمشاكل 121 00:05:06,790 --> 00:05:09,960 التي تنشأ مع تجاوز عدد صحيح والقيم النقطة العائمة 122 00:05:09,960 --> 00:05:12,190 والمشاكل التي تنشأ ضمن الدقة. 123 00:05:12,190 --> 00:05:16,080 مع سلاسل، فإننا على الأقل لدينا أكثر قليلا من المرونة 124 00:05:16,080 --> 00:05:17,970 لأن strings-- فقط في world-- حقيقية 125 00:05:17,970 --> 00:05:19,790 يمكن أن يكون طول التعسفي جدا. 126 00:05:19,790 --> 00:05:21,055 باختصار جدا، طويلة جدا. 127 00:05:21,055 --> 00:05:23,680 ولكن حتى ذلك الحين، ونحن في طريقنا إلى يمكن أن تجد أجهزة الكمبيوتر أحيانا 128 00:05:23,680 --> 00:05:27,200 نفاد الذاكرة وحتى لا تخزين سلسلة كبيرة بما يكفي. 129 00:05:27,200 --> 00:05:30,840 >> لكنه الآن، دعونا نبدأ لتصور سلسلة ك شيء في هذه المربعات 130 00:05:30,840 --> 00:05:31,340 هنا. 131 00:05:31,340 --> 00:05:36,410 حتى هذه ستة صناديق كل منها يمثل حرف أو "شار". 132 00:05:36,410 --> 00:05:40,646 لذلك أذكر أن "شار" - ج-H-A-r-- هو أحد أنواع البيانات المضمنة في C. 133 00:05:40,646 --> 00:05:43,520 وما هو لطيف هو أنه يمكنك استخدام هذا النوع من بوصفها لبنة، 134 00:05:43,520 --> 00:05:47,880 قطعة اللغز، اذا صح التعبير، لتشكيل نوع أكبر من البيانات التي سنواصل 135 00:05:47,880 --> 00:05:49,410 الدعوة إلى "سلسلة". 136 00:05:49,410 --> 00:05:53,650 >> الآن، ما هو مفيد حول التفكير حول أشياء مثل سلاسل بهذه الطريقة؟ 137 00:05:53,650 --> 00:05:57,720 حسنا، اتضح ما في وسعنا الاستفادة فعلا هذا الهيكل 138 00:05:57,720 --> 00:06:01,420 في الواقع للوصول إلى الأحرف الفردية بطريقة واضحة جدا. 139 00:06:01,420 --> 00:06:04,099 انا ذاهب الى المضي قدما وخلق ملف يسمى "stringzero.c" 140 00:06:04,099 --> 00:06:05,765 ولكن يمكنك أن نسميها ما تريد. 141 00:06:05,765 --> 00:06:08,500 وعلى موقع بالطبع هو بالفعل هذا المثال مقدما، 142 00:06:08,500 --> 00:06:10,430 لذلك أنت لا تحتاج إلى اكتب كل شيء. 143 00:06:10,430 --> 00:06:13,820 >> وانا ذاهب الى المضي قدما وبه أولا الفراغ الرئيسي كثافة العمليات. 144 00:06:13,820 --> 00:06:15,980 وخلال بضعة أيام، سنبدأ لندف بصرف النظر 145 00:06:15,980 --> 00:06:19,070 ما هو الفراغ هنا، لماذا من الباحث المقبل الى الأصل، وهكذا دواليك. 146 00:06:19,070 --> 00:06:21,180 لكنه الآن، دعونا نواصل لنسخ لصق ذلك. 147 00:06:21,180 --> 00:06:23,455 >> انا ذاهب الى إعلان سلسلة تسمى ق. 148 00:06:23,455 --> 00:06:26,920 وانا ذاهب الى العودة من GetString مهما كانت أنواع المستخدم في. 149 00:06:26,920 --> 00:06:29,170 هذه ستكون بسيطة برنامج، أي تعليمات، 150 00:06:29,170 --> 00:06:31,336 أنا ذاهب لمجرد عمياء نتوقع أن المستخدم يعرف 151 00:06:31,336 --> 00:06:32,600 ما يجب القيام به ليبقيه بسيط. 152 00:06:32,600 --> 00:06:34,220 >> والآن أنا ذاهب ليكون حلقة for. 153 00:06:34,220 --> 00:06:37,450 وداخل بلدي لحلقة أنا ستكون لدينا كثافة العمليات ط يحصل الصفر. 154 00:06:37,450 --> 00:06:40,660 وأنا هو، مرة أخرى، مجرد اتفاقية، متغير مؤشر لالعد، 155 00:06:40,660 --> 00:06:42,350 ولكن يمكن أن نسمي هذا كل ما أريد. 156 00:06:42,350 --> 00:06:46,275 انا ذاهب الى القيام ط أقل than-- جيدا اسم Zamyla هو ست رسائل طويلة. 157 00:06:46,275 --> 00:06:48,150 لذلك أنا ذاهب الى بجد التعليمات البرمجية التي توجد في الوقت الراهن. 158 00:06:48,150 --> 00:06:49,730 >> وبعد ذلك + +. 159 00:06:49,730 --> 00:06:53,190 والآن داخل هذه مجعد الأقواس انا ذاهب الى القيام printf، 160 00:06:53,190 --> 00:06:55,460 وأريد أن طباعة واحد الحرف في وقت واحد. 161 00:06:55,460 --> 00:06:58,227 لذلك أنا ذاهب لاستخدام٪ ج ل ربما للمرة الأولى. 162 00:06:58,227 --> 00:07:00,560 ثم أريد أن طباعة كل الحرف على السطر الخاص به. 163 00:07:00,560 --> 00:07:02,550 لذلك أنا ذاهب لوضع يذكر مائل ن هناك. 164 00:07:02,550 --> 00:07:03,640 وثيق الاقتباس. 165 00:07:03,640 --> 00:07:06,250 >> والآن أريد أن أفعل شيئا هنا. 166 00:07:06,250 --> 00:07:10,610 أريد لطباعة حرف معين في السلسلة، 167 00:07:10,610 --> 00:07:13,670 ق، وأنا بالتكرار من صفر على ما يصل إلى ستة. 168 00:07:13,670 --> 00:07:17,150 وبعبارة أخرى، أريد أن طباعة الطابع i'th من ق. 169 00:07:17,150 --> 00:07:18,420 الآن كيف يمكن أن أفعل هذا؟ 170 00:07:18,420 --> 00:07:21,550 >> كذلك مثل الكثير من الصناديق في هذا التمثيل هنا، 171 00:07:21,550 --> 00:07:25,560 نوعا ما، تستحضر فكرة الملاكمة حروف، يمكنك أن تفعل بالمثل أن 172 00:07:25,560 --> 00:07:32,630 في بناء جملة C ببساطة عن طريق تحديد، أريد أن تطبع ثانية في i'th الحرف. 173 00:07:32,630 --> 00:07:35,640 باستخدام الأقواس المربعة على لوحة مفاتيح الكمبيوتر 174 00:07:35,640 --> 00:07:38,910 التي على لوحة مفاتيح الولايات المتحدة هي عموما فوق مفتاح عودتك. 175 00:07:38,910 --> 00:07:42,630 >> وهذا ليس صحيحا تماما بعد، كما كنت قد لاحظت. 176 00:07:42,630 --> 00:07:44,780 ولكن انا ذاهب الى نوع من صياغة عمياء قدما هنا. 177 00:07:44,780 --> 00:07:47,020 وانا ذاهب الى القيام به جعل سلسلة 0. 178 00:07:47,020 --> 00:07:50,860 ولكن قبل أن أفعل هذا، دعونا نرى ما اذا كنا لا يمكن توقع بعض الأخطاء الشائعة. 179 00:07:50,860 --> 00:07:52,844 يتم هذا الانتقال لتجميع؟ 180 00:07:52,844 --> 00:07:54,510 لا، أنا في عداد المفقودين في مجمله مجموعة من الأشياء. 181 00:07:54,510 --> 00:07:55,280 المكتبات سمعت. 182 00:07:55,280 --> 00:07:58,480 >> ذلك الذي رأس ملفات ربما أريد أن أضيف هنا؟ 183 00:07:58,480 --> 00:07:59,205 نعم. 184 00:07:59,205 --> 00:08:01,580 >> الجمهور: تحتاج معيار I / O [غير مسموع] 185 00:08:01,580 --> 00:08:02,663 >> J. DAVID مالان: ممتاز. 186 00:08:02,663 --> 00:08:06,060 لذلك أنا بحاجة القياسية I / O. لماذا الغرض أريد القياسية I / O؟ 187 00:08:06,060 --> 00:08:06,670 لprintf. 188 00:08:06,670 --> 00:08:09,220 بحيث تشمل stdio.h. 189 00:08:09,220 --> 00:08:13,490 وأقترح عليك أيضا أنني تشمل المكتبة CS50 لسبب ما؟ 190 00:08:13,490 --> 00:08:14,650 لديك السلاسل. 191 00:08:14,650 --> 00:08:17,780 ولذا فإننا سوف نرى ما تقوم مكتبة CS50 ل 192 00:08:17,780 --> 00:08:19,260 لخلق هذه الفكرة من سلسلة. 193 00:08:19,260 --> 00:08:21,930 لكنه الآن، يمكنك مجرد التفكير لأنها نوع البيانات الفعلية. 194 00:08:21,930 --> 00:08:23,596 >> بحيث يبدو أن قليلا تنظيفها. 195 00:08:23,596 --> 00:08:27,060 والآن انا ذاهب الى المضي قدما وبالفعل لا تجعل سلسلة 0. 196 00:08:27,060 --> 00:08:27,700 المترجمة. 197 00:08:27,700 --> 00:08:28,370 لذلك هذا امر جيد. 198 00:08:28,370 --> 00:08:32,799 لذلك اسمحوا لي أن ./string0 تكبير حتى نتمكن نرى عن كثب ما يحدث. 199 00:08:32,799 --> 00:08:33,850 دخول. 200 00:08:33,850 --> 00:08:37,789 Z-A-M-Y-L-A دخول. 201 00:08:37,789 --> 00:08:39,440 ولقد طباعتها إلى اسم Zamyla ل. 202 00:08:39,440 --> 00:08:40,409 >> لذلك هذا امر جيد جدا. 203 00:08:40,409 --> 00:08:43,220 حتى الآن دعونا نمضي قدما و تشغيل هذا البرنامج مرة أخرى، 204 00:08:43,220 --> 00:08:45,659 واكتب اسم من Daven الكامل. 205 00:08:45,659 --> 00:08:46,450 مفاجأة، مفاجأة. 206 00:08:46,450 --> 00:08:48,021 دخول. 207 00:08:48,021 --> 00:08:48,520 هم. 208 00:08:48,520 --> 00:08:51,750 نحن لم المطبوعة في Daven الاسم الكامل بشكل صحيح. 209 00:08:51,750 --> 00:08:54,250 الآن هذا ينبغي أن يكون واضحا في استذكار بسبب ما، 210 00:08:54,250 --> 00:08:57,010 نوعا ما، قرار تصميم غبي؟ 211 00:08:57,010 --> 00:08:59,590 >> نعم، أنا الثابت ترميز لل ستة داخل بلدي لحلقة. 212 00:08:59,590 --> 00:09:01,610 الآن فعلت ذلك فقط ل كنت أعرف اسم Zamyla ل 213 00:09:01,610 --> 00:09:02,776 كان على وشك أن ستة حروف. 214 00:09:02,776 --> 00:09:04,720 ولكن بالتأكيد هذا ليس حل عام. 215 00:09:04,720 --> 00:09:07,720 حتى اتضح نستطيع حيوي معرفة طول سلسلة 216 00:09:07,720 --> 00:09:10,440 بواسطة استدعاء دالة يسمى strlen. 217 00:09:10,440 --> 00:09:12,840 >> مرة أخرى، عمدا اسمه بإيجاز فقط 218 00:09:12,840 --> 00:09:14,450 لجعله أكثر ملاءمة للكتابة. 219 00:09:14,450 --> 00:09:17,170 ولكن هذا مرادفا لل الحصول على طول السلسلة. 220 00:09:17,170 --> 00:09:23,190 انا ذاهب للذهاب مرة أخرى إلى محطة بلدي نافذة وإعادة تشغيل المجمع. 221 00:09:23,190 --> 00:09:24,170 لكنه يصرخ في وجهي. 222 00:09:24,170 --> 00:09:29,130 ضمنا إعلان وظيفة المكتبة strlen مع نوع غير موقعة كثافة العمليات const-- 223 00:09:29,130 --> 00:09:29,780 أنا تائه. 224 00:09:29,780 --> 00:09:30,590 تماما. 225 00:09:30,590 --> 00:09:32,940 >> لذلك، خاصة ك عيون تبدأ في الصقيل على 226 00:09:32,940 --> 00:09:36,000 مع رسائل خطأ مثل هذا، والتركيز بصدق على الكلمات القليلة الأولى. 227 00:09:36,000 --> 00:09:38,590 ونحن نعلم أن المشكلة هي في خط 8، كما هو مبين هنا. 228 00:09:38,590 --> 00:09:40,500 وانها في سلسلة 0.c. 229 00:09:40,500 --> 00:09:43,580 معلنا ضمنا وظيفة المكتبة strlen. 230 00:09:43,580 --> 00:09:47,000 بحيث يتم عادة الذهاب الى تكون نمطا من رسائل الخطأ. 231 00:09:47,000 --> 00:09:49,190 معلنا ضمنا شيئا. 232 00:09:49,190 --> 00:09:53,250 >> ذلك باختصار ماذا لي بدا فعلت بالنسبة لخط 8، هنا. 233 00:09:53,250 --> 00:09:56,880 ما قد يكون الحل حتى يكون إذا كنت قد استخدمت أبدا strlen نفسك؟ 234 00:09:56,880 --> 00:09:58,907 >> الجمهور: جزء من مكتبة المختلفة؟ 235 00:09:58,907 --> 00:10:00,740 J. DAVID مالان: الجزء مكتبة مختلفة. 236 00:10:00,740 --> 00:10:02,400 حتى يعلن ذلك، إذا جاز التعبير. 237 00:10:02,400 --> 00:10:07,510 هو مذكور في بعض الملفات بخلاف stdio.h وCS50.h. 238 00:10:07,510 --> 00:10:09,179 الآن أين هو تعريفها؟ 239 00:10:09,179 --> 00:10:12,220 أن نكون صادقين، أنت إما أن فقط أعرف هذا من على قمة رأسك، 240 00:10:12,220 --> 00:10:13,640 أو كنت جوجل هذه ومعرفة. 241 00:10:13,640 --> 00:10:18,150 أو تعرف هذا، لقد فتحت في CS50 الأجهزة البرنامج المحطة، التي 242 00:10:18,150 --> 00:10:22,200 هو مجرد، النسخة الكاملة من الشاشة الكبيرة ما هو في الجزء السفلي من نافذة gedit ل. 243 00:10:22,200 --> 00:10:24,970 >> واتضح أن هناك قيادة مقتضبة بالمثل، ودعا 244 00:10:24,970 --> 00:10:29,280 الرجل للدليل، حيث إذا كتبت في اسم وظيفة وهاهنا، 245 00:10:29,280 --> 00:10:32,240 ستحصل على العودة إلى حد ما وثائق غامضة. 246 00:10:32,240 --> 00:10:35,299 انها مجرد نص أن عموما يبدو شيئا قليلا من هذا القبيل. 247 00:10:35,299 --> 00:10:37,090 انها قليلا الساحق للوهلة الأولى. 248 00:10:37,090 --> 00:10:39,048 ولكن بصراحة أنا ذاهب ل السماح عيني الصقيل على 249 00:10:39,048 --> 00:10:41,930 والتركيز فقط على جزء ما يهمني في الوقت الراهن. 250 00:10:41,930 --> 00:10:42,780 >> وهو بذلك. 251 00:10:42,780 --> 00:10:45,470 والتي تبدو مثل هيكليا شيء أنا على دراية. 252 00:10:45,470 --> 00:10:48,080 والواقع أن الصفحة رجل، لذلك في الكلام، وسوف اقول لكم 253 00:10:48,080 --> 00:10:51,590 ما في رأس الملف وظيفة مثل strlen يعرف. 254 00:10:51,590 --> 00:10:54,170 لذلك أنا ذاهب لنعود الآن إلى gedit. 255 00:10:54,170 --> 00:10:59,070 وانا ذاهب الى المضي قدما و إضافة هنا # تشمل 256 00:10:59,070 --> 00:11:00,480 وحفظ الملف. 257 00:11:00,480 --> 00:11:04,300 >> انا ذاهب لمسح الشاشة مع السيطرة L إذا كنت تتساءل. 258 00:11:04,300 --> 00:11:08,210 وانا ذاهب الى إعادة تشغيل الماكياج string.0، يجمع هذا الوقت. 259 00:11:08,210 --> 00:11:11,790 ./string.0 Zamyla. 260 00:11:11,790 --> 00:11:15,020 على ما يبدو للعمل دعني أذهب ثم أعد قبل ذلك مع دافنبورت. 261 00:11:15,020 --> 00:11:15,860 دخول. 262 00:11:15,860 --> 00:11:17,730 وذلك، أيضا، بدا للعمل. 263 00:11:17,730 --> 00:11:21,220 >> لذا فإننا يمكن أن نفعل ما هو أفضل قليلا من هذا، رغم ذلك، يمكننا أن نبدأ لأشياء مرتبة 264 00:11:21,220 --> 00:11:23,257 ما يصل قليلا. 265 00:11:23,257 --> 00:11:25,590 وانا ذاهب الى الواقع إدخال شيء آخر الآن. 266 00:11:25,590 --> 00:11:28,930 انا ذاهب الى المضي قدما و حفظ هذا في ملف مختلف. 267 00:11:28,930 --> 00:11:31,770 وانا ذاهب لاستدعاء هذا الملف string1.c فقط 268 00:11:31,770 --> 00:11:34,620 أن تكون متسقة مع رمز عليك أن تكون قادرا على العثور على الانترنت. 269 00:11:34,620 --> 00:11:37,050 >> ودعونا نركز في يوم بالضبط نفس الرمز. 270 00:11:37,050 --> 00:11:39,000 اتضح أن لدي كان نوع من جني 271 00:11:39,000 --> 00:11:42,600 من المسلمات أن جهاز الكمبيوتر المحمول، وفي المقابل، فإن الأجهزة CS50 272 00:11:42,600 --> 00:11:47,450 لديه الكثير من الذاكرة، والكثير من ذاكرة الوصول العشوائي، والكثير من بايت مساحة 273 00:11:47,450 --> 00:11:48,920 الذي يمكنني تخزين السلاسل. 274 00:11:48,920 --> 00:11:53,560 >> لكن الواقع لو كنت كتبته طويلا بما فيه الكفاية، ويكفي ضربات المفاتيح، و 275 00:11:53,560 --> 00:11:56,170 أستطيع في نوع نظرية في المزيد من الشخصيات 276 00:11:56,170 --> 00:11:58,830 من جهاز الكمبيوتر الخاص بي لديه جسديا الذاكرة. 277 00:11:58,830 --> 00:11:59,830 وهذا هو إشكالية. 278 00:11:59,830 --> 00:12:03,050 مثل الكثير من كثافة العمليات يمكن فقط عد عالية جدا، من الناحية النظرية، 279 00:12:03,050 --> 00:12:06,600 يمكنك الالزام فقط الكثير من الشخصيات في ذاكرة الوصول العشوائي الكمبيوتر الخاص بك أو عشوائية 280 00:12:06,600 --> 00:12:07,920 ذاكرة الوصول. 281 00:12:07,920 --> 00:12:11,140 >> لذلك كنت قد توقع أفضل هذه المشكلة، حتى 282 00:12:11,140 --> 00:12:13,660 على الرغم من أنه قد تكون نادرة حالة الزاوية، إذا جاز التعبير. 283 00:12:13,660 --> 00:12:15,670 لا يحدث ذلك في كثير من الأحيان، يمكن أن يحدث. 284 00:12:15,670 --> 00:12:18,815 واذا حدث ذلك وأنا لا توقع وبرنامج لذلك، 285 00:12:18,815 --> 00:12:20,300 برنامجي يمكن أن تفعله الذي يعرف ما. 286 00:12:20,300 --> 00:12:22,220 تجميد، شنق، تمهيد، أيا كان. 287 00:12:22,220 --> 00:12:24,490 شيء قد يحدث كان متوقعا. 288 00:12:24,490 --> 00:12:27,120 >> ذلك ما أنا ذاهب الى القيام به الآن، من الآن فصاعدا حقا، 289 00:12:27,120 --> 00:12:31,630 هو قبل أي وقت مضى عمياء استخدام متغير مثل ق أن 290 00:12:31,630 --> 00:12:36,790 تم تعيين قيمة الإرجاع بعض من وظيفة أخرى مثل getstring، 291 00:12:36,790 --> 00:12:40,200 انا ذاهب للتأكد من أن قيمتها صالحة. 292 00:12:40,200 --> 00:12:44,280 إذا كنت لا تعرف إلا من بعد قراءة وثائق CS50 لgetstring، 293 00:12:44,280 --> 00:12:49,020 والتي في النهاية سوف نشير لكم في، أن getstring بإرجاع رمز خاص 294 00:12:49,020 --> 00:12:53,610 دعا NULL، N-U-L-L في جميع القبعات، وإذا كان هناك شيء يذهب على نحو خاطئ. 295 00:12:53,610 --> 00:12:55,650 >> لذلك عادة، فإنه بإرجاع سلسلة. 296 00:12:55,650 --> 00:12:59,700 لكن على خلاف ذلك اذا عاد N-U-L-L-- سنرى في النهاية ما الذي حقا 297 00:12:59,700 --> 00:13:01,790 means-- هذا يعني فقط حدث شيء سيئ. 298 00:13:01,790 --> 00:13:05,560 الآن هذا يعني، يشبه إلى حد كبير في خدش، أستطيع أن تحقق شرط هنا في C، 299 00:13:05,560 --> 00:13:08,830 إذا ق لا يساوي NULL. 300 00:13:08,830 --> 00:13:11,930 حتى إذا كنت لم أر هذا من قبل، هذا يعني فقط لا يساوي. 301 00:13:11,930 --> 00:13:15,290 >> لذلك فمن عكس متساوين متساوية، والتي، أذكر، 302 00:13:15,290 --> 00:13:18,940 يختلف من واحدة يساوي، وهو الواجب. 303 00:13:18,940 --> 00:13:23,030 حتى إذا ق لا يساوي NULL، ثم القيام فقط 304 00:13:23,030 --> 00:13:25,980 أريد أن تنفيذ هذه الأسطر من التعليمات البرمجية. 305 00:13:25,980 --> 00:13:28,080 لذلك وبعبارة أخرى، قبل أن تغوص في عمياء 306 00:13:28,080 --> 00:13:30,919 وتبدأ بالتكرار أكثر من ثانية، والتعامل معها 307 00:13:30,919 --> 00:13:33,710 كما لو أنها تسلسل حرفا، انا ذاهب للتحقق أولا، 308 00:13:33,710 --> 00:13:37,900 انتظر لحظة، هو بالتأكيد ليست تساوي هذه القيمة خاصة، NULL؟ 309 00:13:37,900 --> 00:13:40,030 >> لأنه إذا كان كذلك، يمكن أن تحدث أمور سيئة. 310 00:13:40,030 --> 00:13:43,080 والآن، تفترض أن الأمور سيئة يحدث يعني تعطل البرنامج الخاص بك، 311 00:13:43,080 --> 00:13:45,070 وأنت لا يمكن استرداد بالضرورة. 312 00:13:45,070 --> 00:13:46,800 لذلك بصراحة، يبدو أقبح. 313 00:13:46,800 --> 00:13:48,660 انها نوع من الخلط الآن إلى إلقاء نظرة. 314 00:13:48,660 --> 00:13:50,780 ولكن هذا سوف تصبح أكثر قبل فترة طويلة مألوفة. 315 00:13:50,780 --> 00:13:52,920 >> ولكن انا ذاهب الى اقتراح الآن تحسن الآخر. 316 00:13:52,920 --> 00:13:54,660 هذا التحسن إلى صحتها. 317 00:13:54,660 --> 00:13:58,800 برنامجي هو الآن الأصح، ل في حالة نادرة أن الذاكرة لا تكفي 318 00:13:58,800 --> 00:14:01,180 موجود، وأنا على التعامل معها، وسأفعل فقط لا شيء. 319 00:14:01,180 --> 00:14:02,680 أنا على الأقل لا تحطم الطائرة. 320 00:14:02,680 --> 00:14:05,000 >> ولكن دعونا نفعل النسخة النهائية هنا. 321 00:14:05,000 --> 00:14:07,690 ودعا ملف string2.c. 322 00:14:07,690 --> 00:14:10,190 انا ذاهب الى أن لصق نفس رمز لمجرد لحظة، 323 00:14:10,190 --> 00:14:14,210 وانا ذاهب الى تسليط الضوء على هذا خط، 11، هنا، لمجرد لحظة. 324 00:14:14,210 --> 00:14:18,179 الآن فإن الواقع هو أن المجمعين الذكية مثل رنة يمكن إصلاح هذا بالنسبة لنا 325 00:14:18,179 --> 00:14:19,970 وراء الكواليس دون معرفة لدينا من أي وقت مضى. 326 00:14:19,970 --> 00:14:24,670 ولكن دعونا نفكر في هذا في الأساس باعتبارها مشكلة تصميم. 327 00:14:24,670 --> 00:14:29,010 >> هذا سطر من التعليمات البرمجية هو، بطبيعة الحال، قائلا تهيئة بعض متغير ط إلى 0. 328 00:14:29,010 --> 00:14:30,260 هذا هو بسيط جدا. 329 00:14:30,260 --> 00:14:34,691 وما هو هذا مرة أخرى البيان هنا، أنا + +، تفعل؟ 330 00:14:34,691 --> 00:14:37,066 لقد رأينا ذلك من قبل، ولكننا لم يتحدث حقا عن ذلك. 331 00:14:37,066 --> 00:14:37,900 >> الجمهور: تزايد ط. 332 00:14:37,900 --> 00:14:39,191 >> J. DAVID مالان: تزايد ط. 333 00:14:39,191 --> 00:14:41,890 لذلك على كل التكرار من خلال هذه الحلقة، في كل دورة، 334 00:14:41,890 --> 00:14:43,570 كنت تزايد ط تلو الآخر. 335 00:14:43,570 --> 00:14:45,740 لذلك يحصل على أكبر، وأكبر، و أكبر حتى إنهاء الحلقة. 336 00:14:45,740 --> 00:14:46,810 كيف تنهي؟ 337 00:14:46,810 --> 00:14:49,430 كذلك هناك وسط هذا الشرط الذي نحن قد استخدمت من قبل. 338 00:14:49,430 --> 00:14:52,500 كنت قد رأيت في و كثروو في مجموعة P. 339 00:14:52,500 --> 00:14:53,880 >> ولكن ما هو هذا القول؟ 340 00:14:53,880 --> 00:14:58,352 هل الحلقة التالية حتى دمت أقل من ماذا؟ 341 00:14:58,352 --> 00:14:59,810 الجمهور: طول السلسلة. 342 00:14:59,810 --> 00:15:01,518 J. DAVID مالان: و طول السلسلة. 343 00:15:01,518 --> 00:15:04,300 لذلك يترجم نظيفة جدا إلى الإنجليزية في هذا الاتجاه. 344 00:15:04,300 --> 00:15:08,810 الآن المشكلة هي أنه في كل مرة كنت تكرار خلال هذه الحلقة من الناحية النظرية، 345 00:15:08,810 --> 00:15:10,000 أنا أسأل هذا السؤال. 346 00:15:10,000 --> 00:15:12,250 هل أنا أقل من طول سلسلة من ليالي؟ 347 00:15:12,250 --> 00:15:14,500 هل أنا أقل من طول سلسلة من ليالي؟ 348 00:15:14,500 --> 00:15:18,380 >> الآن هو أنني المتغيرة على كل التكرار؟ 349 00:15:18,380 --> 00:15:18,880 هو عليه. 350 00:15:18,880 --> 00:15:19,629 بسبب ++. 351 00:15:19,629 --> 00:15:21,700 لذلك كل التكرار الأول هو الحصول على أكبر. 352 00:15:21,700 --> 00:15:25,411 ولكن هو الحصول على أكبر ق، أو أصغر، أو تغيير على الإطلاق؟ 353 00:15:25,411 --> 00:15:25,910 رقم 354 00:15:25,910 --> 00:15:30,240 وذلك من حيث التصميم، واحدة من محاور جنبا إلى جنب التي نحاول تقييم كود 355 00:15:30,240 --> 00:15:32,610 في الصف، وهذا يشعر نوع من الغباء. 356 00:15:32,610 --> 00:15:34,690 >> وكأنك حرفيا، على كل التكرار 357 00:15:34,690 --> 00:15:37,110 من هذه الحلقة يسأل نفس السؤال اللعين مرة أخرى، 358 00:15:37,110 --> 00:15:40,770 ومرة أخرى، ومرة ​​أخرى، وحرفيا انها لن تغيير. 359 00:15:40,770 --> 00:15:44,220 على الأقل إذا لم أكن لمس ق و يحاول تغيير محتويات ق. 360 00:15:44,220 --> 00:15:46,610 لذلك يمكنني أن أفعل أفضل قليلا من هذا. 361 00:15:46,610 --> 00:15:49,530 >> وما أنا ذاهب الى القيام به هو لا إعلان واحد فقط ط متغير، 362 00:15:49,530 --> 00:15:53,330 ولكن المتغير الثاني وسوف أكون تعسفا، لكن تقليديا، يطلق عليه ن. 363 00:15:53,330 --> 00:15:55,940 تعيين ن يساوي طول سلسلة من ق. 364 00:15:55,940 --> 00:15:59,090 ثم هنا، أنا ذاهب ل تفعل القليل من التحسين ذكي، لذلك 365 00:15:59,090 --> 00:16:03,460 في الكلام، وأنه في نهاية اليوم ليس أكثر ولا أقل صحيح صحيح 366 00:16:03,460 --> 00:16:04,260 من ذي قبل. 367 00:16:04,260 --> 00:16:05,500 ولكن هذا التصميم أفضل. 368 00:16:05,500 --> 00:16:09,480 في حقيقة أن أنا باستخدام وقت أقل، ودورات وحدة المعالجة المركزية أقل، لذلك 369 00:16:09,480 --> 00:16:14,040 جاز التعبير، للرد على نفسه السؤال، ولكن مرة واحدة فقط. 370 00:16:14,040 --> 00:16:17,870 >> أي أسئلة حول هذا العام مبدأ التحسن، 371 00:16:17,870 --> 00:16:21,294 يقول والكفاءة في البرنامج؟ 372 00:16:21,294 --> 00:16:21,991 نعم؟ 373 00:16:21,991 --> 00:16:23,699 الجمهور: لماذا استخدام [غير مسموع]؟ 374 00:16:23,699 --> 00:16:25,760 375 00:16:25,760 --> 00:16:27,010 J. DAVID مالان: سؤال جيد. 376 00:16:27,010 --> 00:16:30,690 فلماذا لا نضع ++ على نهاية ط بدلا من بداية أنا؟ 377 00:16:30,690 --> 00:16:33,070 في هذه الحالة، فقد أي تأثير وظيفي. 378 00:16:33,070 --> 00:16:36,670 وبشكل عام، أنا أميل إلى استخدام المشغل بوستفيكس 379 00:16:36,670 --> 00:16:41,750 بحيث انها أكثر من ذلك بقليل واضحة و إلى متى العملية يحدث. 380 00:16:41,750 --> 00:16:46,670 >> بالنسبة لأولئك غير مألوف، هناك آخر البيانات حيث يمكن أن تفعله ++ ط. 381 00:16:46,670 --> 00:16:48,747 هذه هي وظيفيا ما يعادلها في هذه الحالة 382 00:16:48,747 --> 00:16:51,080 لأنه لا يوجد أي شيء آخر حول ذلك incrementation. 383 00:16:51,080 --> 00:16:54,435 ولكن يمكنك الخروج مع حالات وخطوط من التعليمات البرمجية 384 00:16:54,435 --> 00:16:55,810 حيث أن يحدث فرقا. 385 00:16:55,810 --> 00:16:57,810 لذلك عموما، ونحن لا حتى الحديث عن هذا واحد. 386 00:16:57,810 --> 00:17:00,690 لأن بصراحة، فإنه يجعل لديك كود أكثر جنسية، ونوع من المعطف، 387 00:17:00,690 --> 00:17:01,776 وأحرف أقل. 388 00:17:01,776 --> 00:17:04,859 ولكن الواقع هو انها أصعب بكثير، أعتقد، حتى بالنسبة لي للالتفاف ذهني 389 00:17:04,859 --> 00:17:07,319 حوله أحيانا، ترتيب العمليات. 390 00:17:07,319 --> 00:17:09,750 ذلك جانبا، إذا كنت حقا لا أحب هذا، 391 00:17:09,750 --> 00:17:14,650 حتى وإن كان هذا هو نوع من مثير تبحث، يمكنك أيضا القيام ط + = 1، 392 00:17:14,650 --> 00:17:18,880 وهو نسخة أقبح من نفس الفكرة لبوستفيكس incrementation. 393 00:17:18,880 --> 00:17:22,250 >> أقول قولي هذا ولكم يجب أن يسخر منه، 394 00:17:22,250 --> 00:17:25,140 ولكن سوف يأتون لرؤية الكود كما شيء جميل قبل فترة طويلة. 395 00:17:25,140 --> 00:17:27,160 >> [ضحك] 396 00:17:27,160 --> 00:17:28,410 >> J. DAVID مالان: الحق؟ 397 00:17:28,410 --> 00:17:29,360 نعم. 398 00:17:29,360 --> 00:17:30,480 السؤال في الوسط. 399 00:17:30,480 --> 00:17:32,146 >> الجمهور: هل انت بحاجة الى القول ن الباحث؟ 400 00:17:32,146 --> 00:17:34,020 J. DAVID مالان: أنت تفعل لا حاجة للقول ن الباحث. 401 00:17:34,020 --> 00:17:37,670 ذلك لأنه سبق أن قلنا كثافة العمليات، أنت لست بحاجة إلى أن أقول مرة أخرى. 402 00:17:37,670 --> 00:17:41,820 الصيد هو أن ن أن يكون نفس نوع البيانات كما قلت. 403 00:17:41,820 --> 00:17:43,310 ذلك أن مجرد الراحة هنا. 404 00:17:43,310 --> 00:17:44,058 نعم. 405 00:17:44,058 --> 00:17:47,806 >> الجمهور: هل يمكن أن يذهب أكثر من قوس الطابع الطباعة ق ط مرة أخرى؟ 406 00:17:47,806 --> 00:17:48,930 J. DAVID مالان: بالتأكيد. 407 00:17:48,930 --> 00:17:52,110 حتى٪ ج، أذكر من آخر الوقت، هو مجرد نائب. 408 00:17:52,110 --> 00:17:53,930 وهو ما يعني وضع شار هنا. 409 00:17:53,930 --> 00:17:56,780 ن مائل، وبطبيعة الحال، تماما وضع وسائل فاصل أسطر هنا. 410 00:17:56,780 --> 00:17:59,540 بحيث يترك فقط، والآن، هذه القطعة من تركيب جديد. 411 00:17:59,540 --> 00:18:03,730 وهذا القول حرفيا، والاستيلاء سلسلة تسمى ق وتذهب الحصول على 412 00:18:03,730 --> 00:18:06,050 الطابع i'th، إذا جاز التعبير. 413 00:18:06,050 --> 00:18:10,590 >> وأقول دائما الطابع i'th لأنه في كل التكرار من هذه الحلقة 414 00:18:10,590 --> 00:18:14,540 انها كما لو أننا تطبع من أول ق قوس 0، 415 00:18:14,540 --> 00:18:15,780 كما قد يقول مبرمج. 416 00:18:15,780 --> 00:18:18,680 ثم ق قوس 1، ثم ق قوس 2، ثم 3، ثم 4. 417 00:18:18,680 --> 00:18:21,610 ولكن بالطبع انها متغير، لذلك أنا مجرد تعبير عن ذلك مع ط. 418 00:18:21,610 --> 00:18:23,900 >> مفتاح، رغم ذلك، هو أن ندرك، خاصة إذا كنت لم 419 00:18:23,900 --> 00:18:26,358 تم التأقلم إلى هذا العالم البرمجة، حيث أننا جميعا 420 00:18:26,358 --> 00:18:28,950 يبدو أن العد من الصفر، فلدي بدء العد من الصفر الآن. 421 00:18:28,950 --> 00:18:35,130 لأن السلاسل، الحرف الأول، و ض في Zamyla هو للأفضل أو للأسوأ 422 00:18:35,130 --> 00:18:40,490 الذهاب للعيش في مكان الرقم صفر. 423 00:18:40,490 --> 00:18:48,210 >> كل الحق، لذلك اسمحوا لي أن يجمع يعود بنا إلى هنا Zamyla 424 00:18:48,210 --> 00:18:50,746 ونرى ما يحدث في الواقع تحت غطاء محرك السيارة. 425 00:18:50,746 --> 00:18:52,370 لذلك هناك هذه الفكرة من نوع الصب. 426 00:18:52,370 --> 00:18:53,800 قد يكون لديك بالفعل لعبت مع هذا بالفعل، 427 00:18:53,800 --> 00:18:55,970 ربما لهاكر P طبعة من مجموعة واحدة. 428 00:18:55,970 --> 00:19:00,320 ولكن نوع الصب يشير فقط إلى القدرة في C وبعض اللغات الأخرى 429 00:19:00,320 --> 00:19:03,170 لتحويل نوع بيانات واحد إلى آخر. 430 00:19:03,170 --> 00:19:05,450 >> الآن كيف يمكن أن نرى هذا بشكل مباشر جدا؟ 431 00:19:05,450 --> 00:19:08,530 لذلك هذا، أذكر، هو بداية من الأبجدية الإنجليزية. 432 00:19:08,530 --> 00:19:11,265 والسياق، يتذكر، من مثل قبل اسبوع هو ASCII. 433 00:19:11,265 --> 00:19:13,790 قانون القياسية الأمريكية لتبادل المعلومات. 434 00:19:13,790 --> 00:19:17,080 الذي هو مجرد وسيلة طويلة حقا لقول تعيين من الرسائل 435 00:19:17,080 --> 00:19:19,370 إلى أرقام، والأرقام لمن الحروف. 436 00:19:19,370 --> 00:19:22,940 >> لذلك من A إلى M هنا، نقطة نقطة نقطة، يصطف مع، أذكر، 437 00:19:22,940 --> 00:19:25,582 الرقم العشري 65 على ما يصل. 438 00:19:25,582 --> 00:19:27,290 ونحن لم نتحدث عن هذا صراحة، 439 00:19:27,290 --> 00:19:29,850 ولكن بالتأكيد هناك مماثلة أرقام لأحرف صغيرة. 440 00:19:29,850 --> 00:19:30,820 وفي الواقع، هناك. 441 00:19:30,820 --> 00:19:33,730 قرر العالم بضع سنوات قبل أن قليلا، وأحرف صغيرة، 442 00:19:33,730 --> 00:19:35,020 ستكون 97. 443 00:19:35,020 --> 00:19:38,010 وقليل ب تسير لتكون 98، وهكذا دواليك. 444 00:19:38,010 --> 00:19:40,200 >> وأي مفتاح آخر على لوحة المفاتيح، وهناك 445 00:19:40,200 --> 00:19:42,190 سيكون نمطا مماثلا من البتات. 446 00:19:42,190 --> 00:19:44,540 أو مكافئ، رقم عشري. 447 00:19:44,540 --> 00:19:47,110 لذا فإن السؤال المطروح، إذن، هو كيف يمكننا 448 00:19:47,110 --> 00:19:49,400 نرى في الواقع هذا تحت غطاء محرك السيارة؟ 449 00:19:49,400 --> 00:19:51,539 لذلك أنا ذاهب للذهاب الى gedit مرة أخرى. 450 00:19:51,539 --> 00:19:53,330 وبدلا من نوع هذا واحد من الصفر، 451 00:19:53,330 --> 00:19:55,330 انا ذاهب الى المضي قدما و فتح للتو شيئا 452 00:19:55,330 --> 00:19:58,350 من كود اليوم يسمى ASCII الصفر. 453 00:19:58,350 --> 00:20:01,210 >> وASCII الصفر يبدو مثل هذا. 454 00:20:01,210 --> 00:20:02,710 لذلك دعونا التفاف عقولنا حول هذا. 455 00:20:02,710 --> 00:20:04,969 ذلك أولا، لقد علق رمز، التي هي لطيفة. 456 00:20:04,969 --> 00:20:07,010 لأنه حرفيا تقول لي ما يمكن توقعه، 457 00:20:07,010 --> 00:20:08,950 عرض الخرائط عن الأحرف الكبيرة. 458 00:20:08,950 --> 00:20:13,690 الآن أنا لا أعرف تماما ما أنا يعني ذلك، لذلك دعونا الاستدلال. 459 00:20:13,690 --> 00:20:16,870 >> في اللغة الإنجليزية، وربما الإنجليزية فني إلى حد ما، 460 00:20:16,870 --> 00:20:20,660 ماذا تظهر خط 18 أن تفعل بالنسبة لنا؟ 461 00:20:20,660 --> 00:20:21,500 مجرد خط 18. 462 00:20:21,500 --> 00:20:22,430 ما هو حمل؟ 463 00:20:22,430 --> 00:20:25,192 ما تسير الأمور ليبدأ هنا؟ 464 00:20:25,192 --> 00:20:26,100 >> الجمهور: حلقة. 465 00:20:26,100 --> 00:20:26,630 >> J. DAVID مالان: حلقة. 466 00:20:26,630 --> 00:20:28,463 وعدد المرات هو أن الذهاب إلى تكرار؟ 467 00:20:28,463 --> 00:20:31,562 468 00:20:31,562 --> 00:20:33,270 الجمهور: [فاصلة VOICES] ست مرات. 469 00:20:33,270 --> 00:20:34,830 J. DAVID مالان: غير ست مرات. 470 00:20:34,830 --> 00:20:35,840 الجمهور: 26 مرة. 471 00:20:35,840 --> 00:20:36,560 J. DAVID مالان: 26 مرة. 472 00:20:36,560 --> 00:20:37,060 نعم، آسف. 473 00:20:37,060 --> 00:20:37,960 26 مرات. 474 00:20:37,960 --> 00:20:38,460 لماذا؟ 475 00:20:38,460 --> 00:20:41,590 حسنا، انها غريبة بعض الشيء، ولكن لقد بدأ العد من 65. 476 00:20:41,590 --> 00:20:43,300 وهو أمر غريب، ولكن ليس من الخطأ. 477 00:20:43,300 --> 00:20:44,610 انها ليست سيئة في القول. 478 00:20:44,610 --> 00:20:46,980 وأنا أفعل ذلك فقط لأنه، في هذا المثال، 479 00:20:46,980 --> 00:20:50,455 أنا نوع من استباق كانت تلك العاصمة و65. 480 00:20:50,455 --> 00:20:53,330 الآن هذا ليس الأكثر أناقة طريقة للقيام بذلك، إلى نوع من رمز القرص الثابت 481 00:20:53,330 --> 00:20:56,130 القيم الباطنية التي لا أحد ومن المتوقع أن أتذكر أي وقت مضى. 482 00:20:56,130 --> 00:21:00,155 >> لكنه الآن، لاحظ أنني القيام بذلك من خلال 65 زائد 26. 483 00:21:00,155 --> 00:21:03,030 لأنه على ما يبدو لا أريد حتى للقيام بهذا الحساب في رأسي. 484 00:21:03,030 --> 00:21:04,440 ولذا فإنني سوف تتيح المترجم تفعل ذلك. 485 00:21:04,440 --> 00:21:08,600 ولكن بعد ذلك في كل حلقة، كل التكرار من حلقة، وأنا تزايد ط. 486 00:21:08,600 --> 00:21:10,196 >> حتى الآن هذا يبدو خفي قليلا. 487 00:21:10,196 --> 00:21:13,320 ولكن يجب علينا المبنى الأساسي كتل من خلالها فهم هذا. 488 00:21:13,320 --> 00:21:15,510 ٪ ج هو مجرد عنصر نائب لشار. 489 00:21:15,510 --> 00:21:19,010 ط٪ هو عنصر نائب لكثافة العمليات. 490 00:21:19,010 --> 00:21:23,310 واتضح أنه باستخدام هذه جملة جديدة، وهذا جملة محاطة بأقواس، لذلك 491 00:21:23,310 --> 00:21:26,100 للتحدث، لذلك نوع بيانات داخل قوسين، 492 00:21:26,100 --> 00:21:32,270 يمكنني اجبار مترجم لعلاج أنا لا هو صحيح، ولكن كما شار. 493 00:21:32,270 --> 00:21:35,520 >> تبين لي بذلك الطابع يعادل هذا العدد. 494 00:21:35,520 --> 00:21:37,986 الآن إلى هنا، هذا الرمز هي جميلة متطابقة كثيرا. 495 00:21:37,986 --> 00:21:39,860 أردت فقط أن تجعل السوبر صريح حقيقة 496 00:21:39,860 --> 00:21:42,095 انني ابتداء من الساعة 97، وهي أحرف صغيرة أ. 497 00:21:42,095 --> 00:21:44,080 على ما يصل إلى 26 رسائل أكثر. 498 00:21:44,080 --> 00:21:46,970 وأنا doing-- مرة أخرى، صب ط، إذا جاز التعبير. 499 00:21:46,970 --> 00:21:49,160 أو نوع الصب ط، إذا جاز التعبير. 500 00:21:49,160 --> 00:21:51,420 >> من كثافة العمليات إلى شار. 501 00:21:51,420 --> 00:21:55,760 ولذلك فإن النتيجة النهائية ستكون، بصراحة، المعلومات نعرفه. 502 00:21:55,760 --> 00:21:59,411 انا ذاهب الى جعل أسكي-0 dot-- لا دوت ج. 503 00:21:59,411 --> 00:22:02,160 إشعار، وربما كنت جعلت ذلك خطأ وأنا فقط لم قصد. 504 00:22:02,160 --> 00:22:03,820 جعل أسكي-0. 505 00:22:03,820 --> 00:22:06,090 الآن انا ذاهب الى القيام ./ascii-0. 506 00:22:06,090 --> 00:22:09,050 أنا في التكبير، وأسف انها تسير للتمرير خارج الشاشة. 507 00:22:09,050 --> 00:22:15,060 لكننا نرى مخطط بأكمله حيث على الخرائط إلى 97 والخرائط باء إلى 98، 508 00:22:15,060 --> 00:22:18,931 وإذا كنا انتقل لأعلى مزيد وهناك، بطبيعة الحال، يعين 65. 509 00:22:18,931 --> 00:22:21,180 لذلك هذا هو فقط أن أقول ما كنا الوعظ، 510 00:22:21,180 --> 00:22:25,310 هناك هذا التكافؤ، و في حقيقة الحال في الواقع. 511 00:22:25,310 --> 00:22:28,000 لذلك تعديل سريع لهذا. 512 00:22:28,000 --> 00:22:31,220 اسمحوا لي أن فتح أسكي 1.C. 513 00:22:31,220 --> 00:22:38,070 وتلاحظ هذا ذكي، نوع من، توضيح هذا. 514 00:22:38,070 --> 00:22:41,770 هذا هو أسكي 1.C، و تلاحظ هذا شيء مجنون. 515 00:22:41,770 --> 00:22:45,120 >> وهذا يحصل حقا في القلب ما تقوم به أجهزة الكمبيوتر. 516 00:22:45,120 --> 00:22:48,150 على الرغم من شأنه نحن البشر لا عد من حيث letters-- 517 00:22:48,150 --> 00:22:50,380 أنا لا نبدأ في التفكير، كل الحق في ذلك الحين ب، 518 00:22:50,380 --> 00:22:52,590 وتستخدم هذه لحساب الأشياء المادية. 519 00:22:52,590 --> 00:22:58,680 هل يمكن القول بالتأكيد أنني أريد أن تهيئة بعض متغير يسمى c-- 520 00:22:58,680 --> 00:23:03,220 ولكن كان يمكن أن يسمى هذا anything-- بحيث يتم تهيئة ج على رأس المال A. 521 00:23:03,220 --> 00:23:07,560 >> لأنه في نهاية اليوم، الكمبيوتر لا يهمني ما كنت تخزين، 522 00:23:07,560 --> 00:23:10,170 أنه يهتم فقط كيف تريد لتقديم تلك المعلومات. 523 00:23:10,170 --> 00:23:13,560 كيف تريد من الكمبيوتر إلى تفسير هذا النمط من بت؟ 524 00:23:13,560 --> 00:23:16,320 وهذا ليس شيئا عموما أنصح به. 525 00:23:16,320 --> 00:23:19,500 انها حقا مجرد مثال ل نقل ما تستطيع على الاطلاق 526 00:23:19,500 --> 00:23:22,049 تهيئة عدد صحيح إلى شار. 527 00:23:22,049 --> 00:23:24,090 لأن تحت غطاء محرك السيارة من شار، بالطبع، 528 00:23:24,090 --> 00:23:26,170 هو مجرد رقم من 0 إلى 255. 529 00:23:26,170 --> 00:23:28,540 >> حتى يمكن لكم بالتأكيد وضعها داخل لكثافة العمليات. 530 00:23:28,540 --> 00:23:30,890 وهذا أيضا ما يظهر هو أننا 531 00:23:30,890 --> 00:23:34,040 يمكن تحويل من واحد اكتب إلى آخر، هنا، 532 00:23:34,040 --> 00:23:36,780 الطباعة في نهاية المطاف نفس الشيء. 533 00:23:36,780 --> 00:23:44,760 في واقع الأمر، وهذا سيثبت أنا online-- كان من المفترض أن أقول هذا، مرة أخرى، هنا. 534 00:23:44,760 --> 00:23:48,610 اسمحوا لي تنظيف هذا الموقع، وسنقوم نرى في تجول عبر الإنترنت حسب الحاجة، 535 00:23:48,610 --> 00:23:50,280 ما المقصود هناك. 536 00:23:50,280 --> 00:23:50,960 >> موافق. 537 00:23:50,960 --> 00:23:53,892 المثال الأخير بحيث تشمل الآن لول ب ثم سنقوم 538 00:23:53,892 --> 00:23:54,850 تأخذ الامور قليلا. 539 00:23:54,850 --> 00:23:58,330 حتى مع ول ب و ج في القيمة 540 00:23:58,330 --> 00:24:01,560 ويعادلها، دعونا نلقي نظرة على هذا المثال، هنا. 541 00:24:01,560 --> 00:24:02,752 آخر مثال التعليمة البرمجية. 542 00:24:02,752 --> 00:24:04,460 سنقوم بفتح احد وهذا بالفعل، لذلك نحن 543 00:24:04,460 --> 00:24:06,440 لا يجب أن اكتبه كل خارجا من نقطة الصفر. 544 00:24:06,440 --> 00:24:09,420 >> وتلاحظ تحسبا نستخدمه رأس متعددة 545 00:24:09,420 --> 00:24:13,240 ملفات، من بينها صديقنا الجديد، string.h. 546 00:24:13,240 --> 00:24:15,597 الآن هذا يبدو، في البداية محة، خفي قليلا. 547 00:24:15,597 --> 00:24:18,180 ولكن دعونا نرى ما اذا كنا لا يمكن التفكير من خلال ما يحدث هنا. 548 00:24:18,180 --> 00:24:21,150 أولا أحصل على سلسلة من المستخدم، وأنا وضعت هذه السلسلة في متغير 549 00:24:21,150 --> 00:24:22,286 دعا ق. 550 00:24:22,286 --> 00:24:24,090 نسخ لصق من قبل. 551 00:24:24,090 --> 00:24:27,250 في السطر 22، وأنا على ما يبدو يفعلون بالضبط ما 552 00:24:27,250 --> 00:24:30,760 فعلت قبل لحظة، أنا بالتكرار على الأحرف في ق. 553 00:24:30,760 --> 00:24:34,780 >> والحيل الجديدة هنا تستخدم طول السلسلة، وتحسين طفيف 554 00:24:34,780 --> 00:24:37,930 تخزين طول السلسلة في ن، بدلا من الدعوة strlen مرة أخرى، 555 00:24:37,930 --> 00:24:38,850 ومرة أخرى، ومرة ​​أخرى. 556 00:24:38,850 --> 00:24:41,120 ومجرد التدقيق أنني أقل من ن. 557 00:24:41,120 --> 00:24:43,330 الآن هنا، الامور اهتمام قليلا. 558 00:24:43,330 --> 00:24:45,980 ولكن هذا مجرد تطبيق هذه نفس فكرة جديدة. 559 00:24:45,980 --> 00:24:48,470 ما يفعل باللغة الإنجليزية ق قوس أمثلها؟ 560 00:24:48,470 --> 00:24:51,772 561 00:24:51,772 --> 00:24:54,260 >> الجمهور: عد كل شخصية [غير مسموع]. 562 00:24:54,260 --> 00:24:55,926 >> J. DAVID مالان: عد كل حرف. 563 00:24:55,926 --> 00:24:58,680 وحتى أكثر وضوحا، ق قوس أمثلها ماذا؟ 564 00:24:58,680 --> 00:25:00,950 هل تقول. 565 00:25:00,950 --> 00:25:04,084 عدم وضع لك على الفور هنا. 566 00:25:04,084 --> 00:25:06,375 >> الجمهور: Well-- 567 00:25:06,375 --> 00:25:09,500 J. DAVID مالان: حتى إذا كانت الكلمة إذا is-- السلسلة Zamyla التي starts-- 568 00:25:09,500 --> 00:25:12,380 الجمهور: --you التعامل مع الأحرف separately-- 569 00:25:12,380 --> 00:25:13,690 J. DAVID مالان: جيد. 570 00:25:13,690 --> 00:25:14,190 بالضبط. 571 00:25:14,190 --> 00:25:17,940 التدوين قوس مربع يسمح لك للوصول إلى كل حرف على حدة، 572 00:25:17,940 --> 00:25:21,120 حتى ق قوس 0 سوف يكون الحرف الأول في السلسلة. 573 00:25:21,120 --> 00:25:24,110 ق قوس 1 ستكون الثانية، وهكذا دواليك. 574 00:25:24,110 --> 00:25:28,050 لذا فإن السؤال أنا أسأل، هنا، في هذه الحالة ما هو؟ 575 00:25:28,050 --> 00:25:33,984 هو الحرف i'th أكبر من ق من أو يساوي إلى أحرف صغيرة و؟ 576 00:25:33,984 --> 00:25:36,400 وماذا يعني هذا، هنا، مع اقحام مزدوجة؟ 577 00:25:36,400 --> 00:25:36,800 الحضور (معا): و. 578 00:25:36,800 --> 00:25:37,210 J. DAVID مالان: و. 579 00:25:37,210 --> 00:25:38,418 انها فقط ليعادل بذلك. 580 00:25:38,418 --> 00:25:42,310 وليس الكلمة في C، لديك ل الاستخدام، بشكل مزعج، العطف العطف. 581 00:25:42,310 --> 00:25:47,520 وهذا، على العكس، يسأل هو ق في i'th الطابع أقل من أو يساوي 582 00:25:47,520 --> 00:25:49,030 إلى صغيرة ض؟ 583 00:25:49,030 --> 00:25:52,440 ومرة أخرى، وهنا حيث فهم الكامنة 584 00:25:52,440 --> 00:25:54,550 تنفيذ الكمبيوتر المنطقي. 585 00:25:54,550 --> 00:25:57,330 لاحظ أنه على الرغم من ولدي النقطة نقطة نقطة هناك، 586 00:25:57,330 --> 00:26:04,410 يشبه إلى z في صغيرة و كل القيم متجاورة ارتفاعا من 97 على ما يصل. 587 00:26:04,410 --> 00:26:07,820 >> ونفس الأحرف الكبيرة ابتداء من الساعة 65. 588 00:26:07,820 --> 00:26:10,410 لذلك الوجبات الجاهزة، ثم، غير أنه في اللغة الإنجليزية، 589 00:26:10,410 --> 00:26:12,760 كيف تصفون ما سطر 24 تفعل؟ 590 00:26:12,760 --> 00:26:15,736 591 00:26:15,736 --> 00:26:16,728 نعم؟ 592 00:26:16,728 --> 00:26:21,575 >> الجمهور: في 24 انها فحص لمعرفة سواء كل حرف هو حرف صغير. 593 00:26:21,575 --> 00:26:24,700 J. DAVID مالان: انها التحقق ما إذا كل حرف هو حرف صغير. 594 00:26:24,700 --> 00:26:28,590 وذلك حتى أكثر وضوحا، هو الطابع i'th من ليالي صغيرة؟ 595 00:26:28,590 --> 00:26:30,690 هذا كل ما كنت معربا عن منطقيا هنا، 596 00:26:30,690 --> 00:26:33,750 بشكل غامض قليلا، ولكن في نهاية المطاف بشكل مباشر جدا. 597 00:26:33,750 --> 00:26:36,480 هو ق i'th صغيرة في الشخصية؟ 598 00:26:36,480 --> 00:26:40,130 >> إذا كان الأمر كذلك، وهنا حيث الأشياء الحصول على القليل من العقل الانحناء 599 00:26:40,130 --> 00:26:44,760 لمجرد لحظة، إذا كان الأمر كذلك، انتقل قبل وطباعة حرف. 600 00:26:44,760 --> 00:26:47,360 لذلك هذا هو مجرد نائب، ولكن ما الشخصية؟ 601 00:26:47,360 --> 00:26:53,710 ماذا أفعل قوس ق ط ناقص هذا التعبير هنا؟ 602 00:26:53,710 --> 00:26:55,110 >> كذلك لاحظ نمط هنا. 603 00:26:55,110 --> 00:26:57,380 الأرقام الفعلية لا يهم كثيرا. 604 00:26:57,380 --> 00:27:02,700 لكن لاحظ أن 97 هو كيف بعيدا من 65؟ 605 00:27:02,700 --> 00:27:03,560 >> الجمهور: 32. 606 00:27:03,560 --> 00:27:04,480 >> J. DAVID مالان: 32. 607 00:27:04,480 --> 00:27:06,890 كيف بعيدا هو 98 من 66؟ 608 00:27:06,890 --> 00:27:07,740 >> الجمهور: 32. 609 00:27:07,740 --> 00:27:09,890 >> J. DAVID مالان: ج يتل كبير من C؟ 610 00:27:09,890 --> 00:27:10,420 32. 611 00:27:10,420 --> 00:27:14,550 لذلك هناك 32 من القفزات حرف واحد إلى آخر. 612 00:27:14,550 --> 00:27:17,790 بصراحة حتى أنا، يمكن هذا تبسيط لذلك. 613 00:27:17,790 --> 00:27:20,400 ولكن بعد ذلك أنا الترميز نوع من الصعب هذا الفهم مستوى منخفض 614 00:27:20,400 --> 00:27:21,740 أن أي قارئ من أي وقت مضى سوف تفهم. 615 00:27:21,740 --> 00:27:25,080 لذلك أنا ذاهب الى التعميم بأنه، و تعرف بأحرف صغيرة هي أكبر. 616 00:27:25,080 --> 00:27:28,400 وأنا أعلم أن حروف هي قيم أصغر، ومن المفارقات. 617 00:27:28,400 --> 00:27:33,216 >> ولكن هذا هو ما يعادل نحو فعال ل قائلا طرح 32 من ق قوس ط. 618 00:27:33,216 --> 00:27:35,430 وذلك في سياق هذه الرسائل، إذا كان حرف 619 00:27:35,430 --> 00:27:38,950 يحدث أن تكون، صغيرة لذلك، وأنا طرح 32، 620 00:27:38,950 --> 00:27:43,442 ما أثر ذلك، رياضيا، على أحرف صغيرة و؟ 621 00:27:43,442 --> 00:27:44,400 الجمهور: Capitalizes-- 622 00:27:44,400 --> 00:27:45,691 J. DAVID مالان: تستفيد منه. 623 00:27:45,691 --> 00:27:48,440 وبالفعل، هذا هو السبب لدينا ويسمى البرنامج الاستفادة الصفر. 624 00:27:48,440 --> 00:27:51,590 هذا البرنامج إما تستفيد بريد إلكتروني، 625 00:27:51,590 --> 00:27:54,580 بعد التحقق إذا كان بل حرف صغير. 626 00:27:54,580 --> 00:27:59,810 خلاف ذلك، وذلك تمشيا 30، ماذا أفعل إذا انها ليست حرف صغير أنني 627 00:27:59,810 --> 00:28:02,852 تبحث في على وجه الخصوص في حلقة التكرار. 628 00:28:02,852 --> 00:28:03,890 فقط طباعته. 629 00:28:03,890 --> 00:28:07,010 >> حتى لا تتغير الاشياء هذا ليس حتى صغيرة. 630 00:28:07,010 --> 00:28:10,790 تقييد نفسك ل قليلا إلى z قليلا. 631 00:28:10,790 --> 00:28:12,730 الآن هذه هي غامضة إلى حد ما. 632 00:28:12,730 --> 00:28:15,230 ولكن في نهاية اليوم، وهذا هكذا نحن، مرة واحدة عند كل مرة، 633 00:28:15,230 --> 00:28:16,460 كان لتنفيذ الأشياء. 634 00:28:16,460 --> 00:28:19,780 لو كنت بدلا تفتح الاستفادة واحد، يا الحمد لله. 635 00:28:19,780 --> 00:28:22,320 هناك وظيفة ودعا العلوي إلى أن يمكن 636 00:28:22,320 --> 00:28:25,410 نفعل كل ما فعلت فقط عند مستوى منخفض نسبيا. 637 00:28:25,410 --> 00:28:28,752 >> الآن إلى الجزء العلوي من المثير للاهتمام لأنه أعلن في ملف، 638 00:28:28,752 --> 00:28:31,210 وأنت تعرف هذا فقط عن طريق التحقق من الوثائق، 639 00:28:31,210 --> 00:28:35,730 أو يقال، مثلا، في الصف، حيث كان موجودا، في ملف يسمى ctype.h. 640 00:28:35,730 --> 00:28:37,630 لذلك هذا هو صديق آخر جديد لنا. 641 00:28:37,630 --> 00:28:40,750 ويفعل بالضبط العلوي ما يوحي اسمها. 642 00:28:40,750 --> 00:28:44,860 >> يمكنك تمرير في، كحجة، بين هذه الأقواس، وبعض الحرف. 643 00:28:44,860 --> 00:28:48,390 انا ذاهب لتمرير في شخصية i'th من ليالي باستخدام منهج جديد يتوهم دينا 644 00:28:48,390 --> 00:28:49,870 تشمل أقواس معقوفة. 645 00:28:49,870 --> 00:28:53,391 واتخاذ تخمين، ما هو عودة قيمة على ما يبدو تسير العلوي 646 00:28:53,391 --> 00:28:53,890 أن تكون؟ 647 00:28:53,890 --> 00:28:56,460 648 00:28:56,460 --> 00:28:57,770 كتاب رأس المال. 649 00:28:57,770 --> 00:28:58,620 كتاب رأس المال. 650 00:28:58,620 --> 00:29:02,330 >> حتى لو كنت تمر في صغيرة لذلك، نأمل، من خلال تعريف لالعلوي، 651 00:29:02,330 --> 00:29:05,600 انها تسير لإرجاع A. وإلا الأحرف الكبيرة، 652 00:29:05,600 --> 00:29:08,590 إذا لم تكن حرف صغير في في المقام الأول، أنا فقط طباعته. 653 00:29:08,590 --> 00:29:10,800 وبالفعل، لاحظ صديق الثاني هنا. 654 00:29:10,800 --> 00:29:13,840 ليس فقط لالعلوي موجودا، ولكن أقل، والتي 655 00:29:13,840 --> 00:29:16,200 الواقع يجيب عن هذا السؤال بالنسبة لي. 656 00:29:16,200 --> 00:29:19,730 >> الآن من كتب هذه الأشياء، 10S من قبل سنوات، كنت تعرف لماذا؟ 657 00:29:19,730 --> 00:29:23,840 تنفيذها لالعلوي وغير خفض باستخدام رمز مثل هذا. 658 00:29:23,840 --> 00:29:27,270 ولكن مرة أخرى، بما يتفق مع هذه فكرة التلخيص بعيدا، 659 00:29:27,270 --> 00:29:29,190 نوعا ما، انخفاض مستوى تفاصيل التنفيذ. 660 00:29:29,190 --> 00:29:32,600 والوقوف على أكتاف الناس الذين سبقونا، وذلك باستخدام وظائف 661 00:29:32,600 --> 00:29:36,300 مثل لالعلوي وأقل، والتي رائعة بما يكفي لطيف 662 00:29:36,300 --> 00:29:40,190 اسمه القول ما يفعلونه، هو نموذج رائع لاعتماده. 663 00:29:40,190 --> 00:29:44,040 >> الآن، اتضح أنه إذا قرأت الصفحة رجل ل، تقول، إلى العلوي، 664 00:29:44,040 --> 00:29:45,010 أتعلم شيئا آخر. 665 00:29:45,010 --> 00:29:46,890 ذلك الرجل toUpper. 666 00:29:46,890 --> 00:29:48,050 انها قليلا الساحق. 667 00:29:48,050 --> 00:29:51,110 لكن إشعار، وهنا أن ذكر ملف الرأس أنني يجب أن تستخدم. 668 00:29:51,110 --> 00:29:54,460 بوصفها جانبا، لأن هذا غير مضللة، وظيفة 669 00:29:54,460 --> 00:29:59,070 يستخدم بدلا من حرف [إينتس] لأسباب من التحقق من الخطأ. 670 00:29:59,070 --> 00:30:01,260 ولكننا سوف تأتي ربما العودة إلى ذلك في المستقبل. 671 00:30:01,260 --> 00:30:05,910 >> إلا أن نلاحظ، هنا، إلى المتحولين العليا الحرف ج إلى أحرف كبيرة إن أمكن. 672 00:30:05,910 --> 00:30:07,674 ذلك أن جميلة واضحة. 673 00:30:07,674 --> 00:30:09,340 والآن دعونا نكون أكثر قليلا محددة. 674 00:30:09,340 --> 00:30:12,750 دعونا ننظر إلى جزء من الصفحة رجل تحت قيمة الإرجاع. 675 00:30:12,750 --> 00:30:15,420 القيمة التي تم إرجاعها هي أن الرسالة المحولة. 676 00:30:15,420 --> 00:30:18,690 أو ج، إذا كان التحويل لم يكن ذلك ممكنا، 677 00:30:18,690 --> 00:30:20,250 حيث c هي المدخل الأصلي. 678 00:30:20,250 --> 00:30:24,140 الذي أعرفه من هنا، من الوسيطة إلى أن العلوي. 679 00:30:24,140 --> 00:30:25,780 >> فما هي الوجبات الجاهزة من هذا؟ 680 00:30:25,780 --> 00:30:28,060 القيمة التي تم إرجاعها هي أن الرسالة المحولة، 681 00:30:28,060 --> 00:30:32,110 أو ج، والرسالة الأصلي، إذا كان كان التحويل غير ممكن. 682 00:30:32,110 --> 00:30:36,460 ما يمكنني بالتالي تحسين جعل لتصميم كود بلدي؟ 683 00:30:36,460 --> 00:30:37,146 نعم؟ 684 00:30:37,146 --> 00:30:38,810 >> الجمهور: يمكنك إزالة آخر. 685 00:30:38,810 --> 00:30:40,810 J. DAVID مالان: يمكنني إزالة بيان آخر، 686 00:30:40,810 --> 00:30:42,510 وليس مجرد بيان آخر. 687 00:30:42,510 --> 00:30:44,150 >> الجمهور: يمكنك إزالة [غير مسموع]. 688 00:30:44,150 --> 00:30:46,310 >> J. DAVID مالان: يمكنني إزالة شوكة كله 689 00:30:46,310 --> 00:30:48,209 في الطريق، وإذا آخر تماما. 690 00:30:48,209 --> 00:30:50,250 ذلك الواقع، اسمحوا لي أن فتح النسخة النهائية من هذا، 691 00:30:50,250 --> 00:30:55,540 الاستفادة-2، ولاحظ كيف، إذا سوف، ومثير، رمز يزداد الآن، 692 00:30:55,540 --> 00:31:00,040 في ذلك لقد خفضت من بعض سبعة أو حتى خطوط إلى أربعة فقط، 693 00:31:00,040 --> 00:31:03,850 الوظيفة التي كنت أنوي ببساطة عن طريق الدعوة إلى العلوي، 694 00:31:03,850 --> 00:31:09,410 يمر في ليالي قوس ط، والطباعة خارج، مع النائب٪ ج، 695 00:31:09,410 --> 00:31:11,090 أن حرف معين. 696 00:31:11,090 --> 00:31:14,560 >> الآن يمكن القول، هناك خلل، أو على الأقل من خطر الخلل، 697 00:31:14,560 --> 00:31:15,350 في هذا البرنامج. 698 00:31:15,350 --> 00:31:18,200 حتى مجرد أن أعود إلى الوجبات الجاهزة السابقة، 699 00:31:18,200 --> 00:31:21,820 ماذا يجب أن تفعل ربما أيضا في هذا البرنامج لجعله أكثر قوة، 700 00:31:21,820 --> 00:31:24,974 بحيث ليس هناك طريقة ما في وسعها تحطم الطائرة، حتى في الحالات النادرة؟ 701 00:31:24,974 --> 00:31:26,390 الجمهور: تأكد من انها ليست فارغة. 702 00:31:26,390 --> 00:31:28,056 J. DAVID مالان: تأكد من انها ليست فارغة. 703 00:31:28,056 --> 00:31:31,030 ذلك حقا، لجعل هذا السوبر السليم، يجب أن أفعل شيء من هذا القبيل، 704 00:31:31,030 --> 00:31:35,300 إذا ق ليست فارغة، ثم والمضي قدما في تنفيذ 705 00:31:35,300 --> 00:31:38,470 هذه الأسطر من التعليمات البرمجية التي يمكنني ثم المسافة البادئة من هذا القبيل، 706 00:31:38,470 --> 00:31:39,870 ثم وضعت في بلدي هدفين وثيق. 707 00:31:39,870 --> 00:31:41,550 جيد جدا ربط معا من فكرتين. 708 00:31:41,550 --> 00:31:42,429 نعم؟ 709 00:31:42,429 --> 00:31:44,470 الجمهور: هل يمكنك استخدام وحين تفعل حلقة، بدلا من ذلك؟ 710 00:31:44,470 --> 00:31:47,270 J. DAVID مالان: هل يمكن أنا لا افعل حين حلقة؟ 711 00:31:47,270 --> 00:31:50,020 الجمهور: --you نريد أن نتأكد من ان كنت فعلا [غير مسموع]. 712 00:31:50,020 --> 00:31:51,728 J. DAVID مالان: هل يمكن استخدام افعل حين؟ 713 00:31:51,728 --> 00:31:52,450 الجواب القصير، لا. 714 00:31:52,450 --> 00:31:54,700 لأنك على وشك إدخال حالة زاوية أخرى. 715 00:31:54,700 --> 00:31:56,660 إذا كانت السلسلة من طول صفري. 716 00:31:56,660 --> 00:31:59,600 إذا على سبيل المثال، أنا مجرد ضرب دخول، دون أن كتابة Zamyla. 717 00:31:59,600 --> 00:32:02,490 انا ذاهب لتسليم بعودتكم فعلي سلسلة، كما سنرى في نهاية المطاف، 718 00:32:02,490 --> 00:32:03,780 التي تحتوي على أحرف الصفر. 719 00:32:03,780 --> 00:32:05,630 انها لا تزال سلسلة، انها مجرد السوبر القصير. 720 00:32:05,630 --> 00:32:07,960 لكن إذا كنت تستخدم افعل حين، وأنت تسير على نحو أعمى 721 00:32:07,960 --> 00:32:10,050 تحاول أن تفعل شيئا مع احترام لهذه السلسلة، 722 00:32:10,050 --> 00:32:12,537 ولا شيء سيكون هناك. 723 00:32:12,537 --> 00:32:18,607 >> الجمهور: حسنا، إذا كنت فعلت القيام [غير مسموع] في حين s-- 724 00:32:18,607 --> 00:32:21,190 J. DAVID مالان: أوه أرى، والحفاظ على الحصول على سلسلة من المستخدم. 725 00:32:21,190 --> 00:32:23,525 الجواب القصير لذلك، كنت يمكن، والحفاظ على المضايقه 726 00:32:23,525 --> 00:32:26,150 منهم ان يقدموا لكم سلسلة من باختصار بما يكفي لتناسب في الذاكرة. 727 00:32:26,150 --> 00:32:26,700 تماما. 728 00:32:26,700 --> 00:32:27,630 أنا فقط اختيار عدم. 729 00:32:27,630 --> 00:32:30,505 إذا كانت لا تعطيني سلسلة أنا أريد، أنا الإقلاع عن التدخين، أنا التخلي. 730 00:32:30,505 --> 00:32:33,260 ولكن قطعا، لهذا الغرض، هل يمكن أن تفعل على الاطلاق ذلك. 731 00:32:33,260 --> 00:32:37,500 >> حتى رأس الملفات المكتبة التي نحن الآن على دراية هم هؤلاء، هنا. 732 00:32:37,500 --> 00:32:41,550 معيار I / O، CS50.h، string.h، ctype.h، وهناك، في الواقع، والبعض الآخر. 733 00:32:41,550 --> 00:32:44,460 وقد اكتشف بعض منكم المكتبة الرياضيات في math.h. 734 00:32:44,460 --> 00:32:48,200 ولكن اسمحوا لي أن أعرض لكم، الآن، ل هذا المورد أن الموظفين CS50، دافين، 735 00:32:48,200 --> 00:32:50,630 وروب، وغابي خاصة وضعنا معا. 736 00:32:50,630 --> 00:32:52,630 والتي تصل قريبا على موقع بالطبع ل. 737 00:32:52,630 --> 00:32:54,870 انه دعا المرجع CS50. 738 00:32:54,870 --> 00:32:58,230 >> التي فقط لإعطائك سريعة طعم لها، ويعمل على النحو التالي. 739 00:32:58,230 --> 00:33:00,740 اسمحوا لي أن أذهب إلى reference.cs50.net. 740 00:33:00,740 --> 00:33:02,990 سترى على اليد اليسرى جانب قائمة الساحقة 741 00:33:02,990 --> 00:33:04,595 من الوظائف التي تأتي مع ج. 742 00:33:04,595 --> 00:33:07,790 ولكن إذا كنت الرعاية، لحظة، عن شيء مثل strlen، 743 00:33:07,790 --> 00:33:08,746 أستطيع أن اكتبه هناك. 744 00:33:08,746 --> 00:33:10,870 فإنه بتصفية أسفل القائمة لمجرد ما يهمني. 745 00:33:10,870 --> 00:33:11,940 انا ذاهب الى فوقه. 746 00:33:11,940 --> 00:33:14,740 والآن على اليسار، سترى ما نأمل 747 00:33:14,740 --> 00:33:18,290 هو أكثر وضوحا والبشرية شرح لكيفية ودية 748 00:33:18,290 --> 00:33:19,170 تعمل هذه الوظيفة. 749 00:33:19,170 --> 00:33:20,600 >> إرجاع طول السلسلة. 750 00:33:20,600 --> 00:33:24,060 وفيما يلي موجز، وهنا كيف استخدامها من حيث رأس الملف، 751 00:33:24,060 --> 00:33:27,430 ومن حيث ما وظيفة يشبه من حيث حججها. 752 00:33:27,430 --> 00:33:30,250 ثم هنا، والعودة طول السلسلة. 753 00:33:30,250 --> 00:33:34,280 لكن بالنسبة لأولئك منكم أكثر راحة، يمكنك النقر الواقع أكثر مريح، 754 00:33:34,280 --> 00:33:37,070 ومحتويات هذا الصفحة، الآن، سيتغير 755 00:33:37,070 --> 00:33:41,660 أن تكون القيم الافتراضية ما تحصل باستخدام الصفحة رجل. 756 00:33:41,660 --> 00:33:44,100 >> وبعبارة أخرى، CS50 المرجعية هي تبسيط 757 00:33:44,100 --> 00:33:46,220 من صفحات رجل من قبل الموظفين، للطلاب. 758 00:33:46,220 --> 00:33:49,320 ولا سيما، تلك أقل راحة وبين، بحيث يمكنك 759 00:33:49,320 --> 00:33:51,660 لم يكن لديك في محاولة للالتفاف عقلك حولها، بصراحة، 760 00:33:51,660 --> 00:33:55,030 بعض تركيب خفي إلى حد ما وثائق في وقت ما. 761 00:33:55,030 --> 00:33:57,650 >> حتى أن تبقي في الاعتبار في الأيام القادمة. 762 00:33:57,650 --> 00:33:59,560 حتى هنا، مرة أخرى، هو Zamyla. 763 00:33:59,560 --> 00:34:03,255 دعونا الآن طرح سؤال هذا أكثر من ذلك بقليل في متناول الإنسان. 764 00:34:03,255 --> 00:34:05,380 بفضل تشانغ، الذين تم طباعة المزيد من الفيلة 765 00:34:05,380 --> 00:34:07,090 دون توقف على مدى الأيام القليلة الماضية. 766 00:34:07,090 --> 00:34:09,730 لدينا فرصة لإعطاء واحد منهم على الأقل بعيدا. 767 00:34:09,730 --> 00:34:13,239 لو استطعنا الحصول متطوع واحد فقط لتأتي على ما يصل إلى رسم على الشاشة. 768 00:34:13,239 --> 00:34:14,530 ماذا عن هنا؟ 769 00:34:14,530 --> 00:34:15,340 >> تأتي على ما يصل. 770 00:34:15,340 --> 00:34:16,720 ما هو اسمك؟ 771 00:34:16,720 --> 00:34:17,219 ALEX: أليكس. 772 00:34:17,219 --> 00:34:17,760 J. DAVID مالان: أليكس. 773 00:34:17,760 --> 00:34:18,259 كل الحق. 774 00:34:18,259 --> 00:34:19,388 أليكس، وتأتي على ما يصل. 775 00:34:19,388 --> 00:34:21,679 نحن على وشك أن نرى الخاص الكتابة اليدوية على الشاشة هنا. 776 00:34:21,679 --> 00:34:24,325 777 00:34:24,325 --> 00:34:25,570 حسنا، لطيف لمقابلتك. 778 00:34:25,570 --> 00:34:26,429 >> ALEX: نيس لك مقابلتك. 779 00:34:26,429 --> 00:34:27,512 >> J. DAVID مالان: حسنا. 780 00:34:27,512 --> 00:34:28,969 لذلك، وممارسة فائقة بسيطة. 781 00:34:28,969 --> 00:34:31,440 شريط ليست عالية ل الحصول على الفيل اليوم. 782 00:34:31,440 --> 00:34:33,439 كنت تلعب دور getstring. 783 00:34:33,439 --> 00:34:35,980 وانا ذاهب لاقول لكم فقط السلسلة التي كنت قد حصلت. 784 00:34:35,980 --> 00:34:38,080 وافترض أنك، getstring، تم استدعاؤها. 785 00:34:38,080 --> 00:34:42,480 والإنسان، مثلي، لديه كتبته في Zamyla، Z-A-M-Y-L-A. 786 00:34:42,480 --> 00:34:45,650 اذهبوا الى الامام وكتابة Zamyla على الشاشة كما لو كنت قد حصلت عليه 787 00:34:45,650 --> 00:34:47,250 وتخزينه في مكان ما في الذاكرة. 788 00:34:47,250 --> 00:34:52,370 789 00:34:52,370 --> 00:34:55,570 >> مما يترك مجالا لما سيكون عدة words-- البعض هذا موافق، والحفاظ على الذهاب. 790 00:34:55,570 --> 00:34:59,620 >> [ضحك] 791 00:34:59,620 --> 00:35:00,800 >> حتى Zamyla، ممتاز. 792 00:35:00,800 --> 00:35:04,880 حتى الآن لنفترض أنك، getstring، ودعا مرة أخرى. 793 00:35:04,880 --> 00:35:09,350 وبالتالي، وأنا نقدم لك، في لوحة المفاتيح، مع اسم آخر، بليندا. 794 00:35:09,350 --> 00:35:17,560 795 00:35:17,560 --> 00:35:18,060 كل الحق. 796 00:35:18,060 --> 00:35:22,380 والآن getstring المرة القادمة ودعا، أنا اكتب في شيء مثل غابي، 797 00:35:22,380 --> 00:35:27,560 G-A-B-E. كنت تأخذ حقا إلى قلب ذاكرة الوصول العشوائي. 798 00:35:27,560 --> 00:35:29,631 الذي رسم كل شيء عشوائيا تماما. 799 00:35:29,631 --> 00:35:30,130 موافق. 800 00:35:30,130 --> 00:35:31,104 >> [ضحك] 801 00:35:31,104 --> 00:35:32,520 ALEX: عذرا بلادي الكتابة اليدوية سيئة. 802 00:35:32,520 --> 00:35:33,770 J. DAVID مالان: لا، وهذا موافق. 803 00:35:33,770 --> 00:35:40,480 وماذا عن روب، R-O-B. موافق. 804 00:35:40,480 --> 00:35:41,020 جيدة. 805 00:35:41,020 --> 00:35:43,853 لذلك لم أكن أتوقع كنت نوع من وضع الامور بهذه الطريقة. 806 00:35:43,853 --> 00:35:45,020 ولكن يمكننا جعل هذا العمل. 807 00:35:45,020 --> 00:35:48,810 لذلك كيف يمكنك أن تذهب نحو وضع من هذه الأحرف في الذاكرة؟ 808 00:35:48,810 --> 00:35:51,310 وبعبارة أخرى، إذا كنا نعتقد من هذه الشاشة سوداء مستطيلة 809 00:35:51,310 --> 00:35:53,550 كما يمثل ذاكرة الوصول العشوائي، أو ذاكرة الكمبيوتر. 810 00:35:53,550 --> 00:35:55,850 >> ويذكرون أن ذاكرة الوصول العشوائي هو مجرد في مجمله مجموعة من بايت، 811 00:35:55,850 --> 00:35:57,480 وبايت هي مجموعة كاملة من البتات. 812 00:35:57,480 --> 00:35:59,350 والبتات بطريقة أو بأخرى تنفيذها، عموما 813 00:35:59,350 --> 00:36:01,119 مع بعض شكل من أشكال الكهرباء في الأجهزة. 814 00:36:01,119 --> 00:36:03,160 ولهذا النوع من طبقات تحدثنا عن 815 00:36:03,160 --> 00:36:04,510 ويمكن الآن أمرا مفروغا منه. 816 00:36:04,510 --> 00:36:07,020 كيف يمكنك أن تذهب نحو البت فيها لإرسال 817 00:36:07,020 --> 00:36:11,634 روب مقابل غابي مقابل بليندا مقابل Zamyla؟ 818 00:36:11,634 --> 00:36:14,020 >> ALEX: لقد فعلت ذلك في الأمر الذي كنت قد قال لي. 819 00:36:14,020 --> 00:36:15,650 >> J. DAVID مالان: وهذا صحيح. 820 00:36:15,650 --> 00:36:20,100 ولكن ما يحكم حيث كنت وضعت بليندا اسم واسم غابي؟ 821 00:36:20,100 --> 00:36:20,764 >> ALEX: لا شيء؟ 822 00:36:20,764 --> 00:36:22,930 J. DAVID مالان: [يضحك] بحيث تعمل، فلا بأس. 823 00:36:22,930 --> 00:36:25,290 حتى أجهزة الكمبيوتر الصغيرة أكثر تنظيما من ذلك. 824 00:36:25,290 --> 00:36:29,000 وحتى عندما كنا implement-- البقاء هناك لمجرد اللحظات، عندما كنا فعلا 825 00:36:29,000 --> 00:36:31,470 تنفيذ شيء من هذا القبيل getstring في الكمبيوتر، 826 00:36:31,470 --> 00:36:34,480 Zamyla قد وضعت حد كبير كما فعلت على الشاشة، هناك. 827 00:36:34,480 --> 00:36:36,660 >> وما هو المفتاح لاحظت هنا، ما فعله أليكس، 828 00:36:36,660 --> 00:36:40,260 وهناك نوع من ترسيم الحدود بين كل هذه الكلمات، أليس كذلك؟ 829 00:36:40,260 --> 00:36:46,580 أنت لم يكتب Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- 830 00:36:46,580 --> 00:36:49,740 وبعبارة أخرى، هناك نوع من ترسيم الحدود والذي يبدو أن يكون، 831 00:36:49,740 --> 00:36:52,370 نوع من التباعد عشوائي بين هذه الكلمات المختلفة. 832 00:36:52,370 --> 00:36:54,120 ولكن هذا امر جيد، لأن يمكن نحن البشر الآن 833 00:36:54,120 --> 00:36:56,470 تصور أن هذه هي أربعة سلاسل مختلفة. 834 00:36:56,470 --> 00:36:59,540 انها ليست سلسلة واحدة فقط من الكثير من الشخصيات. 835 00:36:59,540 --> 00:37:04,190 حتى جهاز كمبيوتر، ثم، وفي الوقت نفسه، قد يستغرق سلسلة مثل Zamyla، 836 00:37:04,190 --> 00:37:07,220 وضع كل من تلك الرسائل داخل بايت من الذاكرة. 837 00:37:07,220 --> 00:37:10,400 لكن هذا العدد هو أكبر من ذلك بكثير، بالطبع، من ستة أحرف. 838 00:37:10,400 --> 00:37:11,690 >> هناك مجموعة كاملة من ذاكرة الوصول العشوائي. 839 00:37:11,690 --> 00:37:15,330 وهكذا من الآن فصاعدا، وهذا شبكة من صناديق يسير 840 00:37:15,330 --> 00:37:17,560 لتمثيل ما اليكس فقط فعلت هنا على الشاشة. 841 00:37:17,560 --> 00:37:20,937 والآن، أليكس، يمكننا أن نقدم لكم الأزرق أو فيل البرتقال من تشانغ. 842 00:37:20,937 --> 00:37:22,270 ALEX: سآخذ الفيل الأزرق. 843 00:37:22,270 --> 00:37:23,120 J. DAVID مالان: فيل الأزرق. 844 00:37:23,120 --> 00:37:25,580 حتى جولة كبيرة من التصفيق، إذا استطعنا، لأليكس هنا. 845 00:37:25,580 --> 00:37:26,100 >> [تصفيق] 846 00:37:26,100 --> 00:37:26,766 >> ALEX: شكرا لك. 847 00:37:26,766 --> 00:37:28,820 J. DAVID مالان: شكرا لك. 848 00:37:28,820 --> 00:37:36,230 لذلك الوجبات الجاهزة هي أنه، على الرغم من أن تغير نمط نوع من مرور الوقت، وهنا 849 00:37:36,230 --> 00:37:40,430 على متن الطائرة، كان هناك هذا ترسيم الحدود بين مختلف السلاسل 850 00:37:40,430 --> 00:37:42,610 التي حصلت اليكس بالنسبة لنا. 851 00:37:42,610 --> 00:37:45,230 الآن أجهزة الكمبيوتر، بصراحة، يمكن أن تفعل الشيء نفسه. 852 00:37:45,230 --> 00:37:48,210 يمكنهم نوع من صوت نزول المطر سلاسل في أي مكان في ذاكرة الوصول العشوائي. 853 00:37:48,210 --> 00:37:50,710 هنا، هنا، إلى هنا، إلى هنا. 854 00:37:50,710 --> 00:37:52,020 >> قد يفعلون ذلك بالضبط. 855 00:37:52,020 --> 00:37:54,280 ولكن، بطبيعة الحال، وهذا ربما لا يكون أفضل التخطيط. 856 00:37:54,280 --> 00:37:54,780 أليس كذلك؟ 857 00:37:54,780 --> 00:37:57,340 إذا ظللت يسأل اليكس ل الحصول على أسماء، وربما عنيدا 858 00:37:57,340 --> 00:38:01,370 وضع بعض أكثر إلى هنا، ربما تصل هنا، هنا، هنا، في نهاية المطاف 859 00:38:01,370 --> 00:38:02,211 أكثر من هنا. 860 00:38:02,211 --> 00:38:05,460 ولكن مع التخطيط أكثر قليلا، وبالتأكيد، نحن يمكن ان تضع الامور أكثر نظافة. 861 00:38:05,460 --> 00:38:07,350 وبالفعل، هذا ما يفعله الكمبيوتر. 862 00:38:07,350 --> 00:38:10,720 >> ولكن الفكرة هنا أن إذا كانت السلسلة القادمة أحصل 863 00:38:10,720 --> 00:38:14,050 بعد Zamyla شيء مثل بليندا، 864 00:38:14,050 --> 00:38:17,929 أقترح حيث أننا قد كتابة الرسالة فيما يتعلق ب هذه الشبكة؟ 865 00:38:17,929 --> 00:38:18,720 أين تذهب؟ 866 00:38:18,720 --> 00:38:21,480 إلى اليمين من ذلك، تحت ض، تحت ل؟ 867 00:38:21,480 --> 00:38:23,204 ما يمكن أن يكون أول غرائزك؟ 868 00:38:23,204 --> 00:38:24,120 الجمهور: بالأسفل ض. 869 00:38:24,120 --> 00:38:25,100 J. DAVID مالان: حتى تحت ض. 870 00:38:25,100 --> 00:38:26,530 وهذا جدا واضحة، أليس كذلك؟ 871 00:38:26,530 --> 00:38:29,321 انها نوع من أنيق، وهذا ما نقوم به على لوحة مفاتيح عندما كنا هاهنا، 872 00:38:29,321 --> 00:38:31,770 أو عبر البريد الإلكتروني عندما تبذل قائمة نقطية من الأشياء. 873 00:38:31,770 --> 00:38:34,310 ولكن الواقع هو أن أجهزة الكمبيوتر حاول أن تكون أكثر كفاءة، 874 00:38:34,310 --> 00:38:37,170 والالزام بالتأكيد بقدر البيانات إلى ذاكرة الوصول العشوائي ممكن، 875 00:38:37,170 --> 00:38:38,890 حتى يتسنى لك لا نضيع بايت. 876 00:38:38,890 --> 00:38:41,545 حتى يتسنى لك لا تضيعوا أي عقار الشاشة. 877 00:38:41,545 --> 00:38:44,170 والمشكلة، على الرغم من أن إذا وضعنا حرفيا إلكتروني 878 00:38:44,170 --> 00:38:49,940 ب بعد، كيف نحن ذاهبون ل نعرف أين ينتهي اسم Zamyla ل 879 00:38:49,940 --> 00:38:51,840 واسم بليندا ليبدأ؟ 880 00:38:51,840 --> 00:38:55,270 حتى البشر لك المقترحة فقط، حسنا، اضغط على مفتاح Enter، أساسا. 881 00:38:55,270 --> 00:38:56,410 وضعها في الأسفل. 882 00:38:56,410 --> 00:38:59,750 أو كما فعلت حتى اليكس، مجرد بداية الكتابة اسم المقبل تحت سابقتها، 883 00:38:59,750 --> 00:39:01,583 وأدناه أن واحد، و ثم أدناه أن واحدا. 884 00:39:01,583 --> 00:39:02,510 هذا هو جديلة البصرية. 885 00:39:02,510 --> 00:39:05,960 >> أجهزة الكمبيوتر لديها جديلة البصرية آخر، ولكن هذا قليلا أكثر إيجازا. 886 00:39:05,960 --> 00:39:07,840 انها هذه الشخصية غير تقليدي. 887 00:39:07,840 --> 00:39:11,890 0 مائل، ربما كان تذكرنا مائل ن، 888 00:39:11,890 --> 00:39:12,640 وهكذا دواليك، الآن. 889 00:39:12,640 --> 00:39:14,120 تسلسل الهروب الخاصة. 890 00:39:14,120 --> 00:39:19,120 0 مائل هو السبيل لل تمثل ثمانية الصفر بت على التوالي. 891 00:39:19,120 --> 00:39:22,000 0000 0000. 892 00:39:22,000 --> 00:39:26,130 >> طريقة التعبير عن ذلك ليست ل ضرب الرقم صفر على لوحة المفاتيح، 893 00:39:26,130 --> 00:39:28,140 لأنه في حقيقة أن هو حرف ASCII. 894 00:39:28,140 --> 00:39:30,990 يبدو وكأنه العدد، ولكن هو في الواقع رقم عشري 895 00:39:30,990 --> 00:39:35,910 الذي يمثل التعميم الصورة الرمزية ومحرف دائري. 896 00:39:35,910 --> 00:39:38,410 وفي الوقت نفسه، مائل الصفر يعني، حرفيا 897 00:39:38,410 --> 00:39:40,700 وضع ثمانية الصفر بايت هنا بالنسبة لي. 898 00:39:40,700 --> 00:39:42,136 >> لذلك هذا هو تعسفي إلى حد ما. 899 00:39:42,136 --> 00:39:44,260 نحن يمكن قد استخدمت أي نمط البتات، ولكن العالم 900 00:39:44,260 --> 00:39:46,610 قررت عدة سنوات قبل أن تمثيل 901 00:39:46,610 --> 00:39:49,710 نهاية سلسلة في الذاكرة، وضعت للتو في مجمله مجموعة من الأصفار. 902 00:39:49,710 --> 00:39:51,000 لأننا يمكن الكشف عن ذلك. 903 00:39:51,000 --> 00:39:54,790 الآن هذا يعني أن أي حرف الأبجدية يمكن أن تكون ممثلة مع الأصفار. 904 00:39:54,790 --> 00:39:58,480 >> ولكن هذا ما يرام، لقد رأينا بالفعل الذي نستخدمه على ما يصل 65 في 97 على ما يصل. 905 00:39:58,480 --> 00:40:00,290 لم نحصل على أي مكان إغلاق لكافة الأصفار. 906 00:40:00,290 --> 00:40:03,040 907 00:40:03,040 --> 00:40:06,540 حتى بليندا في ذاكرة جهاز الكمبيوتر يجري فعلا للذهاب هنا. 908 00:40:06,540 --> 00:40:09,764 لقد رسمها باللون الأصفر فقط رسم انتباهنا إلى ذلك. 909 00:40:09,764 --> 00:40:11,680 والإشعار، جدا، وهذا غير تعسفية تماما. 910 00:40:11,680 --> 00:40:12,680 لقد رسمها في شكل شبكة. 911 00:40:12,680 --> 00:40:14,460 مثل، ذاكرة الوصول العشوائي هو مجرد بعض الشيء المادي. 912 00:40:14,460 --> 00:40:17,300 انها لا تملك بالضرورة الصفوف والأعمدة، في حد ذاتها. 913 00:40:17,300 --> 00:40:20,490 انها فقط حصلت على مجموعة كاملة من وحدات البايت نفذت في الأجهزة بطريقة أو بأخرى. 914 00:40:20,490 --> 00:40:22,817 ولكن إذا كنت بعد بليندا كتبته في اسم غابي، 915 00:40:22,817 --> 00:40:25,650 انه لن ينتهي هنا في الذاكرة، وإذا كنت كتبته في اسم Daven، و 916 00:40:25,650 --> 00:40:27,316 على سبيل المثال، انه لن ينتهي هنا. 917 00:40:27,316 --> 00:40:29,310 وأنا يمكن أن تستمر في إرسال المزيد من الأسماء. 918 00:40:29,310 --> 00:40:32,100 >> للأسف، إذا حاولت إرسال بريد اسم السوبر الطويل، 919 00:40:32,100 --> 00:40:33,730 وأود أن تشغيل في نهاية المطاف من الذاكرة. 920 00:40:33,730 --> 00:40:37,810 في هذه الحالة، هو getstring سوف تعود فارغة، كما قلنا. 921 00:40:37,810 --> 00:40:41,720 ولكن لحسن الحظ، على الأقل في هذا البصرية هنا، ونحن لم تحصل الى هذا الحد. 922 00:40:41,720 --> 00:40:45,860 >> الآن ما هو لطيف هو أن هذا فكرة عامة عن معالجة الأمور 923 00:40:45,860 --> 00:40:49,720 كما يجري في صناديق غير ممثل سمة من سمات C 924 00:40:49,720 --> 00:40:52,690 والكثير من اللغات، المعروفة باسم صفيف. 925 00:40:52,690 --> 00:40:55,490 مجموعة هي نوع آخر من البيانات. 926 00:40:55,490 --> 00:40:57,380 انها بنية البيانات، اذا صح التعبير. 927 00:40:57,380 --> 00:41:01,160 هيكل بمعنى حقا، نوع من، تبدو وكأنها مربع، على الأقل 928 00:41:01,160 --> 00:41:02,320 في عين عقلك. 929 00:41:02,320 --> 00:41:09,680 مجموعة هي متجاورة تسلسل أنواع البيانات متطابقة، 930 00:41:09,680 --> 00:41:11,330 العودة إلى الوراء إلى العودة إلى الوراء. 931 00:41:11,330 --> 00:41:14,720 >> حتى سلسلة، في الآخر الكلمات، هو مجموعة من الأحرف. 932 00:41:14,720 --> 00:41:16,120 مجموعة من الأحرف. 933 00:41:16,120 --> 00:41:19,070 ولكن تبين يمكن أن يكون صفائف من عناقيد من الأشياء. 934 00:41:19,070 --> 00:41:21,870 في الواقع، يمكن أن نضع حتى أرقام في صفيف. 935 00:41:21,870 --> 00:41:23,920 ذلك الشكل الذي ونحن في طريقنا لبدء 936 00:41:23,920 --> 00:41:26,590 إعلان هذه البيانات بنية المعروفة باسم مجموعة 937 00:41:26,590 --> 00:41:28,250 يجري أيضا استخدام أقواس معقوفة. 938 00:41:28,250 --> 00:41:31,500 ولكن هذه الأقواس المربعة تسير ل يكون لها معنى مختلف في هذا السياق. 939 00:41:31,500 --> 00:41:33,450 >> ودعونا نرى ذلك على النحو التالي. 940 00:41:33,450 --> 00:41:36,780 لنفترض أن فتحت حتى ملف جديد هنا. 941 00:41:36,780 --> 00:41:38,535 وأنا حفظ هذا كما ages.c. 942 00:41:38,535 --> 00:41:41,280 943 00:41:41,280 --> 00:41:43,470 وسوف توفر هذه في مجلد وجودي هنا. 944 00:41:43,470 --> 00:41:46,130 والآن انا ذاهب الى المضي قدما والبدء في كتابة شيء 945 00:41:46,130 --> 00:41:53,940 كما تشمل CS50.h، وتشمل stdio.h، الباحث الرئيسي الفراغ. 946 00:41:53,940 --> 00:41:57,370 ثم داخل هنا، أريد أن يكون أول عدد صحيح يسمى العمر. 947 00:41:57,370 --> 00:42:01,371 >> وانا ذاهب الى استخدام ذلك للحصول على الباحث من المستخدم له أو لها العمر. 948 00:42:01,371 --> 00:42:04,620 ولكن هذا البرنامج هو المقصود لاستخدامها من قبل عدة أشخاص، مهما كان السياق. 949 00:42:04,620 --> 00:42:05,490 أنا عندي خط من الناس. 950 00:42:05,490 --> 00:42:08,281 كل منهم إلى كتابة في هم لسن ربما بعض، وأنا لا أعرف، 951 00:42:08,281 --> 00:42:10,530 المنافسة، أو الحدث أنها قد وصلت ل. 952 00:42:10,530 --> 00:42:13,030 ذلك الشخص التالي، وأنا تحتاج متغير آخر. 953 00:42:13,030 --> 00:42:15,790 >> لأنه إذا أنا فقط تفعل العمر يحصل getInt، وهذا 954 00:42:15,790 --> 00:42:18,500 الذهاب الى ضرب بقسوة، أو الكتابة عمر الشخص السابق. 955 00:42:18,500 --> 00:42:19,760 حتى هذا ليس جيدا. 956 00:42:19,760 --> 00:42:21,790 حتى أول غريزة بلدي قد تكون، يا، كل الحق، 957 00:42:21,790 --> 00:42:26,260 إذا كنت ترغب في الحصول على العديد من الناس ages-- دعونا نسمي هذا age1، 958 00:42:26,260 --> 00:42:31,280 كثافة العمليات age2 يحصل كثافة العمليات، وكثافة العمليات age3 يحصل getInt. 959 00:42:31,280 --> 00:42:35,340 والآن انا ذاهب الى استخدام بعض رمز شبة الكود هنا. 960 00:42:35,340 --> 00:42:37,679 >> نفعل شيئا مع تلك الأرقام. 961 00:42:37,679 --> 00:42:40,470 سنترك ليوم آخر ما نقوم به هناك، لأننا فقط 962 00:42:40,470 --> 00:42:44,200 يهمني في الوقت الحالي حول age1، age2، age3. 963 00:42:44,200 --> 00:42:46,450 للأسف، مرة واحدة تجميع هذا البرنامج 964 00:42:46,450 --> 00:42:51,140 ووضعها أمام المستخدمين الفعليين، ما هو سوء التصميم الأساس 965 00:42:51,140 --> 00:42:53,890 القرار يبدو لي أن جعلت؟ 966 00:42:53,890 --> 00:42:54,624 نعم؟ 967 00:42:54,624 --> 00:42:55,499 الجمهور: [غير مسموع] 968 00:42:55,499 --> 00:42:58,071 969 00:42:58,071 --> 00:42:59,820 J. DAVID مالان: نعم، حتى أنا لم يحاكم 970 00:42:59,820 --> 00:43:02,028 لمعرفة كيفية العديد من الأعمار يمكنني في الواقع يهتمون؟ 971 00:43:02,028 --> 00:43:05,380 إذا كان لدي أقل من ثلاثة أشخاص هنا، وبالتالي أقل من ثلاثة الأعمار، 972 00:43:05,380 --> 00:43:07,260 أنا لا تزال تتوقع عمياء الثلاثة. 973 00:43:07,260 --> 00:43:08,720 لا سمح الله تظهر أربعة أشخاص يصل. 974 00:43:08,720 --> 00:43:10,990 برنامجي فقط لن حتى يدعمها. 975 00:43:10,990 --> 00:43:13,280 >> وحتى هذا، قصة طويلة باختصار، ليست عادة جيدة. 976 00:43:13,280 --> 00:43:13,780 أليس كذلك؟ 977 00:43:13,780 --> 00:43:16,530 كنت أساسا نسخ و لصق رمز ومجرد اللف 978 00:43:16,530 --> 00:43:17,430 أسماء المتغيرات. 979 00:43:17,430 --> 00:43:22,410 و، يا إلهي، إذا كان لديك، وليس ثلاثة الأعمار، ولكن 10 أو 100 أو حتى 6500 980 00:43:22,410 --> 00:43:23,820 الطلاب الجامعيين، على سبيل المثال. 981 00:43:23,820 --> 00:43:26,950 هذا لن يكون خاصة كود أنيقة، أو استدامة. 982 00:43:26,950 --> 00:43:29,200 وأنت تسير لدينا ل إعادة كتابة البرنامج في كل مرة 983 00:43:29,200 --> 00:43:30,760 رقمك من الناس التغييرات. 984 00:43:30,760 --> 00:43:35,090 >> لذلك ولله الحمد، في منطقتنا الفعلية ملف ages.c لهذا اليوم، 985 00:43:35,090 --> 00:43:36,970 لدينا حل أكثر ذكاء. 986 00:43:36,970 --> 00:43:39,800 أولا، انا ذاهب لاستعارة بناء استخدمنا عدة مرات، 987 00:43:39,800 --> 00:43:43,744 هذا في حين تفعل حلقة، من أجل الحصول على عدد الأشخاص في الغرفة. 988 00:43:43,744 --> 00:43:46,910 أنا مجرد الذهاب الى الالحاح المستخدم، مرة أخرى ومرة أخرى، حتى انه أو انها يعطيني 989 00:43:46,910 --> 00:43:49,260 قيمة ن هذا هو عدد صحيح موجب. 990 00:43:49,260 --> 00:43:51,590 >> كان يمكن أن تستخدم، آخر الوقت في الحصول على كثافة العمليات إيجابي. 991 00:43:51,590 --> 00:43:53,720 ولكن ليس لدينا أن حقيقية، لذلك ذهبت إلى الأمام 992 00:43:53,720 --> 00:43:55,660 وإعادة تنفيذ هذه الفكرة. 993 00:43:55,660 --> 00:43:58,410 الآن إلى هنا، وهذا هو خدعة جديدة. 994 00:43:58,410 --> 00:44:02,260 في خط 27، والتعليقات في خط 26 ويشير، 995 00:44:02,260 --> 00:44:05,180 أعلن مجموعة التي لتخزين سن الجميع. 996 00:44:05,180 --> 00:44:09,320 >> حتى إذا كنت ترغب في الحصول على، وليس كثافة واحدة، وليس اثنان [إينتس]، ولكن في مجمله مجموعة من [إينتس]. 997 00:44:09,320 --> 00:44:13,800 على وجه التحديد ن الأعداد الصحيحة، كانت قد ن يكون الثلاثة، قد يكون 100، قد يكون 1،000. 998 00:44:13,800 --> 00:44:17,570 بناء الجملة، بكل بساطة، هو مثلا، ما نوع البيانات التي تريدها؟ 999 00:44:17,570 --> 00:44:19,620 ماذا تريد الاتصال أن جزءا من الذاكرة؟ 1000 00:44:19,620 --> 00:44:23,530 ماذا تريد الاتصال بالشبكة يشبه هذا بالصور؟ 1001 00:44:23,530 --> 00:44:27,700 >> وهنا بين قوسين، ويقول لك كيف كبيرة تريد مجموعة أن يكون. 1002 00:44:27,700 --> 00:44:30,450 وهكذا، عندما قال في وقت سابق لي الجملة هو مختلفة قليلا هنا، 1003 00:44:30,450 --> 00:44:33,614 نحن لا تزال تستخدم الأقواس المربعة، ولكن عندما أكون معلنا صفيف، 1004 00:44:33,614 --> 00:44:35,530 عدد داخل بين قوسين معقوفين الوسائل 1005 00:44:35,530 --> 00:44:37,610 كيف كبير هل تريد أن تكون المصفوفة. 1006 00:44:37,610 --> 00:44:42,490 >> على النقيض من ذلك، عندما كنا باستخدام ق قوس ط قبل لحظة، ق، سلسلة، 1007 00:44:42,490 --> 00:44:46,820 هو في الواقع مجموعة من حرف، ولكن عندما كنت لا يعلن متغير، 1008 00:44:46,820 --> 00:44:49,760 كما هو الحال مع هذه الكلمة الرئيسية هنا، كنت مجرد الحصول على 1009 00:44:49,760 --> 00:44:54,280 مؤشر معين، محددة عنصر من تلك المصفوفة. 1010 00:44:54,280 --> 00:44:57,090 مرة واحدة ونحن نعلم أن، والباقي هذا واضح ومباشر. 1011 00:44:57,090 --> 00:45:00,765 إذا جديدة أنا أولا الذهاب الى طباعة ما هو سن الشخص رقم ط. 1012 00:45:00,765 --> 00:45:03,890 حيث كنت أقول الشخص رقم واحد، الشخص رقم اثنين، الشخص رقم ثلاثة. 1013 00:45:03,890 --> 00:45:06,306 >> وأنا فقط تفعل الحساب، حتى أن الناس العاديين مثل، 1014 00:45:06,306 --> 00:45:09,030 نحن عد من واحد لهذا البرنامج، وليس من الصفر. 1015 00:45:09,030 --> 00:45:13,620 ثم أدعو getint، لكنني تخزين الجواب في العصور قوس ط. 1016 00:45:13,620 --> 00:45:16,610 وهو سن i'th في الصفيف. 1017 00:45:16,610 --> 00:45:21,640 حتى حين آخر مرة كنا علاج هذه الصناديق وحرف لاسم Zamyla، و 1018 00:45:21,640 --> 00:45:22,490 وغيرها. 1019 00:45:22,490 --> 00:45:26,530 الآن، هذه الصناديق تمثل 32 بت، أو أربعة بايت 1020 00:45:26,530 --> 00:45:29,510 نستطيع من خلالها تخزين عدد صحيح، عدد صحيح، عدد صحيح. 1021 00:45:29,510 --> 00:45:31,890 وكلها، مرة أخرى، هي نفس نوع البيانات. 1022 00:45:31,890 --> 00:45:33,890 >> الآن أفعل شيئا سخيفة، مثل الوقت يمر، فقط 1023 00:45:33,890 --> 00:45:35,510 لتبرير كتابة هذا البرنامج. 1024 00:45:35,510 --> 00:45:40,050 ثم إلى هنا، وأنا مرة أخرى تكرار خلال مجموعة قائلا بعد عام من الآن، 1025 00:45:40,050 --> 00:45:43,090 الشخص رقم إرادة واحدة يكون شيئا سنة. 1026 00:45:43,090 --> 00:45:45,010 ومعرفة أن math-- أعني، هذا 1027 00:45:45,010 --> 00:45:49,260 ليست معقدة جدا arithmetic-- أنا فقط إضافة واحد لسنهم. 1028 00:45:49,260 --> 00:45:51,240 فقط لإثبات، ومرة ​​أخرى، هذا. 1029 00:45:51,240 --> 00:45:57,910 >> فقط ما أستطيع مؤشر إلى سلسلة، ق، لذلك يمكنني مؤشر إلى مجموعة من العصور، 1030 00:45:57,910 --> 00:45:59,950 كما أن هناك. 1031 00:45:59,950 --> 00:46:03,340 فأين هو هذا على وشك أن تأخذنا؟ 1032 00:46:03,340 --> 00:46:07,070 ولذا فإننا سوف نرى، في نهاية المطاف، و قليل من الأشياء في الأيام القادمة. 1033 00:46:07,070 --> 00:46:09,510 واحدة، كل هذا الوقت، عندما كتابة البرامج الخاصة بك، 1034 00:46:09,510 --> 00:46:11,239 مثل ماريو، والجشع، والائتمان. 1035 00:46:11,239 --> 00:46:13,780 كنت قد تم كتابة اسم برنامج وضرب أدخل. 1036 00:46:13,780 --> 00:46:15,610 ثم الحصول على مدخلات المستخدم. 1037 00:46:15,610 --> 00:46:18,137 >> مع getString، getInt، getLongLong، أو ما شابه ذلك. 1038 00:46:18,137 --> 00:46:20,720 ولكن تبين أن يدعم C ما يسمى سطر الأوامر 1039 00:46:20,720 --> 00:46:25,740 الحجج، وهو ذاهب الى ترك لنا في الواقع الحصول على الكلمات التي تكتبها، 1040 00:46:25,740 --> 00:46:28,570 في موجه امض، بعد اسم البرنامج الخاص بك. 1041 00:46:28,570 --> 00:46:31,430 >> وذلك في الأيام القادمة، ل قد اكتب شيئا مثل قيصر، 1042 00:46:31,430 --> 00:46:34,950 أو ./caesar رقم 13، بعد ذلك. 1043 00:46:34,950 --> 00:46:36,070 سنرى كيف يعمل. 1044 00:46:36,070 --> 00:46:37,550 لأنه في الواقع، في مشكلة تعيين اثنين، نحن 1045 00:46:37,550 --> 00:46:39,383 سوف أعرض لكم إلى شيئا قليلا 1046 00:46:39,383 --> 00:46:42,360 تذكر في الخاص Ralphie تحدي في وقت سابق من رسم الخرائط. 1047 00:46:42,360 --> 00:46:43,970 فن الهرولة المعلومات. 1048 00:46:43,970 --> 00:46:46,660 هذا، في الواقع، هو جدا تذكرنا ما فعله الخاص Ralphie. 1049 00:46:46,660 --> 00:46:51,380 >> هذا هو مثال على التشفير دعا خوارزمية ROT13، R-O-T 13. 1050 00:46:51,380 --> 00:46:54,910 وهو ما يعني ببساطة تدوير الحروف في الأبجدية 13 الأماكن. 1051 00:46:54,910 --> 00:46:58,309 وإذا كنت تفعل ذلك، سترى الآن ما هو، ربما، عبارة مألوفة. 1052 00:46:58,309 --> 00:47:01,100 ولكن الطريقة ونحن في طريقنا إلى استخدام هذا، في نهاية المطاف، هو أكثر عموما. 1053 00:47:01,100 --> 00:47:04,390 >> في P تعيين اثنين، في الطبعة القياسية، عليك تنفيذ اثنين من الأصفار، 1054 00:47:04,390 --> 00:47:06,720 واحد يسمى قيصر، واحدة تسمى Vigenere. 1055 00:47:06,720 --> 00:47:10,090 كلاهما التناوب الأصفار، في أن بطريقة ما كنت 1056 00:47:10,090 --> 00:47:11,826 تحويل حرف واحد إلى بريد إلكتروني مختلف. 1057 00:47:11,826 --> 00:47:12,950 وقيصر هو السوبر بسيط. 1058 00:47:12,950 --> 00:47:16,220 يمكنك إضافة واحدة، يمكنك إضافة 13، أو بعض العدد ليصل إلى 26. 1059 00:47:16,220 --> 00:47:19,570 Vigenere يفعل ذلك على أساس لكل رسالة. 1060 00:47:19,570 --> 00:47:22,140 حتى Vigenere، كما سترى في المواصفات، هو أكثر أمنا. 1061 00:47:22,140 --> 00:47:24,973 >> ولكن في نهاية اليوم ما عليك أن تكون تنفيذ ووضع P اثنين، 1062 00:47:24,973 --> 00:47:29,050 هو ذلك المفتاح الذي تستخدمه كلا لتشفير وفك التشفير. 1063 00:47:29,050 --> 00:47:32,160 في اشارة الى عملية تحويل نص عادي، بعض الرسالة الأصلية، 1064 00:47:32,160 --> 00:47:34,490 إلى نص سايفر، التي شيء مشفرة. 1065 00:47:34,490 --> 00:47:36,220 ومن ثم فك تشفير مرة أخرى. 1066 00:47:36,220 --> 00:47:38,119 >> في الطبعة القراصنة، وفي الوقت نفسه، عليك أن تكون 1067 00:47:38,119 --> 00:47:40,660 كلفت شيئا من هذا القبيل في الروح، حيث سنعطيك 1068 00:47:40,660 --> 00:47:44,610 ملف، من لينكس نموذجية، أو ماك، أو يونيكس كمبيوتر يسمى etsy 1069 00:47:44,610 --> 00:47:47,800 كلمة السر، والذي يحتوي على العموم مجموعة من أسماء المستخدمين وكلمات السر. 1070 00:47:47,800 --> 00:47:50,932 وتلك كلمات السر لها جميع تم تشفيرها، أو تجزئته، 1071 00:47:50,932 --> 00:47:53,140 إذا جاز التعبير، أكثر بشكل صحيح كما سترى في المواصفات. 1072 00:47:53,140 --> 00:47:57,090 >> وسوف طبعة القراصنة تحدي كنت مع أخذ المدخلات من هذا القبيل، 1073 00:47:57,090 --> 00:47:58,800 والانشقاق وكلمة السر. 1074 00:47:58,800 --> 00:48:02,590 هذا هو، ومعرفة ما وكلمة الإنسان في الواقع. 1075 00:48:02,590 --> 00:48:05,570 لأنه، في الواقع، هي كلمات السر عموما ليست المخزنة في واضحة، 1076 00:48:05,570 --> 00:48:08,260 وكلمات السر بشكل عام يجب أن يكون من الصعب تخمين. 1077 00:48:08,260 --> 00:48:09,610 هذا ليس الحال غالبا. 1078 00:48:09,610 --> 00:48:12,110 >> وما اعتقد اننا كنا نفعله هو أختم بضع دقائق 1079 00:48:12,110 --> 00:48:15,160 نظرة في خاصة سوء اختيار كلمات السر 1080 00:48:15,160 --> 00:48:17,260 من فيلم تذكرون باعتزاز. 1081 00:48:17,260 --> 00:48:18,915 وإذا لم يكن، يجب أن الإيجار. 1082 00:48:18,915 --> 00:48:20,070 >> [VIDEO قراءة] 1083 00:48:20,070 --> 00:48:22,320 >> -Helmet، أنت شيطان، ما الذي يحدث؟ 1084 00:48:22,320 --> 00:48:24,240 ماذا تفعل لابنتي؟ 1085 00:48:24,240 --> 00:48:28,010 >> -Permit لي أن أعرض باهر جراح التجميل الشباب، 1086 00:48:28,010 --> 00:48:30,010 الطبيب فيليب Schlotkin. 1087 00:48:30,010 --> 00:48:35,020 أكبر أنف رجل عمل في الكون كله وبيفرلي هيلز. 1088 00:48:35,020 --> 00:48:36,140 >> -Your السمو. 1089 00:48:36,140 --> 00:48:36,820 >> العمل -Nose؟ 1090 00:48:36,820 --> 00:48:37,700 أنا لا أفهم. 1091 00:48:37,700 --> 00:48:39,070 لقد كان لديها بالفعل على وظيفة الأنف. 1092 00:48:39,070 --> 00:48:40,800 كان لها الحلو 16 الحاضر. 1093 00:48:40,800 --> 00:48:42,590 >> لا، انها ليست ما هو رأيك. 1094 00:48:42,590 --> 00:48:44,490 انها كثيرا، أسوأ بكثير. 1095 00:48:44,490 --> 00:48:48,160 إذا كنت لا تعطيني تركيبة لدرع الهواء، 1096 00:48:48,160 --> 00:48:52,748 طبيبك سوف Schlotkin إعطاء الخاص ابنة ظهرها القديم الأنف. 1097 00:48:52,748 --> 00:48:53,748 - [صيحات] Nooooooooooooo. 1098 00:48:53,748 --> 00:48:57,684 1099 00:48:57,684 --> 00:48:59,652 من أين لك ذلك؟ 1100 00:48:59,652 --> 00:49:00,640 >> الحق -جميع. 1101 00:49:00,640 --> 00:49:02,506 انا اقول، انا اقول. 1102 00:49:02,506 --> 00:49:03,498 >> لا، أبي، لا. 1103 00:49:03,498 --> 00:49:04,490 يجب عليك لا. 1104 00:49:04,490 --> 00:49:06,090 >> -You're الحق يا عزيزي. 1105 00:49:06,090 --> 00:49:07,390 سأفتقد الأنف الجديد. 1106 00:49:07,390 --> 00:49:10,990 ولكن لن أقول لهم مزيج مهما كانت. 1107 00:49:10,990 --> 00:49:12,450 >> -جدا جيدا. 1108 00:49:12,450 --> 00:49:14,830 طبيب Schlotkin، لا أسوأ الخاص بك. 1109 00:49:14,830 --> 00:49:15,744 >> المتعة بين بلدي. 1110 00:49:15,744 --> 00:49:19,860 1111 00:49:19,860 --> 00:49:20,800 >> تكن له! 1112 00:49:20,800 --> 00:49:22,780 انتظر، انتظر. 1113 00:49:22,780 --> 00:49:24,000 انا اقول. 1114 00:49:24,000 --> 00:49:25,830 انا اقول. 1115 00:49:25,830 --> 00:49:28,270 >> أعرف من أنا انها ستعمل. 1116 00:49:28,270 --> 00:49:31,390 كل الحق، وتعطيه لي. 1117 00:49:31,390 --> 00:49:36,220 >> -THE مزيج واحد. 1118 00:49:36,220 --> 00:49:36,740 >> واحد و. 1119 00:49:36,740 --> 00:49:37,473 >> واحد و. 1120 00:49:37,473 --> 00:49:37,972 اثنين و. 1121 00:49:37,972 --> 00:49:38,471 اثنين و. 1122 00:49:38,471 --> 00:49:39,800 اثنين و. 1123 00:49:39,800 --> 00:49:40,300 ثلاثة و. 1124 00:49:40,300 --> 00:49:40,800 ثلاثة و. 1125 00:49:40,800 --> 00:49:41,800 ثلاثة و. 1126 00:49:41,800 --> 00:49:42,300 أربعة و. 1127 00:49:42,300 --> 00:49:42,800 أربعة و. 1128 00:49:42,800 --> 00:49:44,707 أربعة و. 1129 00:49:44,707 --> 00:49:45,521 ، خمسة. 1130 00:49:45,521 --> 00:49:46,430 ، خمسة. 1131 00:49:46,430 --> 00:49:47,930 ، خمسة. 1132 00:49:47,930 --> 00:49:53,480 -حتى الجمع واحد، اثنان، ثلاثة، أربعة، خمسة. 1133 00:49:53,480 --> 00:49:56,140 هذا هو أغبى مزيج أنا أسمع من أي وقت مضى في حياتي. 1134 00:49:56,140 --> 00:49:58,640 هذا هو النوع من الشيء و سوف يكون احمق في أمتعته. 1135 00:49:58,640 --> 00:50:00,000 >> شكرا لكم، صاحب السمو. 1136 00:50:00,000 --> 00:50:01,340 >> [النقرات عن بعد] 1137 00:50:01,340 --> 00:50:02,450 >> وماذا فعلتم؟ 1138 00:50:02,450 --> 00:50:03,800 >> تحولت -I خارج الجدار. 1139 00:50:03,800 --> 00:50:05,010 >> لا، كنت لا، كنت إيقاف الفيلم كله. 1140 00:50:05,010 --> 00:50:06,220 >> انا يجب -I الضغط على الزر الخطأ. 1141 00:50:06,220 --> 00:50:07,064 >> حسنا، ووضعها مرة أخرى! 1142 00:50:07,064 --> 00:50:07,910 وضع الفيلم مرة أخرى! 1143 00:50:07,910 --> 00:50:08,300 >> نعم، يا سيدي! 1144 00:50:08,300 --> 00:50:08,799 نعم، يا سيدي. 1145 00:50:08,799 --> 00:50:09,660 دعنا نذهب، أرنولد. 1146 00:50:09,660 --> 00:50:10,450 تعال، جريتشين. 1147 00:50:10,450 --> 00:50:12,533 بالطبع كنت أعرف أنني سوف أكون يجب أن فاتورة لكم لهذا. 1148 00:50:12,533 --> 00:50:16,720 1149 00:50:16,720 --> 00:50:17,220 حسنا؟ 1150 00:50:17,220 --> 00:50:17,802 لم يعمل؟ 1151 00:50:17,802 --> 00:50:18,510 أين هو الملك؟ 1152 00:50:18,510 --> 00:50:20,218 >> -أنها عملت، يا سيدي، نحن لديك تركيبة. 1153 00:50:20,218 --> 00:50:20,740 -العظمى. 1154 00:50:20,740 --> 00:50:24,810 الآن يمكن أن نتخذها كل النفس الأخير من الهواء النقي من كوكب Druidia. 1155 00:50:24,810 --> 00:50:25,890 ما هو الجمع؟ 1156 00:50:25,890 --> 00:50:28,155 >> واحد و، اثنان، ثلاثة، أربعة، خمسة. 1157 00:50:28,155 --> 00:50:29,890 >> واحد و، اثنان، ثلاثة، أربعة، خمسة؟ 1158 00:50:29,890 --> 00:50:30,390 ، نعم. 1159 00:50:30,390 --> 00:50:31,110 المفتى هو مدهش. 1160 00:50:31,110 --> 00:50:34,550 أنا عندي نفس تركيبة على أمتعتي. 1161 00:50:34,550 --> 00:50:37,160 إعداد Spaceball 1 ل رحيل فوري. 1162 00:50:37,160 --> 00:50:38,160 >> نعم، يا سيدي. 1163 00:50:38,160 --> 00:50:40,745 >> -وعلى تغيير تركيبة على أمتعتي. 1164 00:50:40,745 --> 00:50:41,578 [باب الختامية SOUND] 1165 00:50:41,578 --> 00:50:42,064 [صلصلة الأبواب ضرب خوذة] 1166 00:50:42,064 --> 00:50:42,550 -Ahh. 1167 00:50:42,550 --> 00:50:43,383 [END تشغيل الفيديو] 1168 00:50:43,383 --> 00:50:46,700 J. DAVID مالان: هذا كل شيء ل CS50، وسنرى في الأسبوع القادم. 1169 00:50:46,700 --> 00:50:49,883 المعلق: والآن، ديب الأفكار، من خلال Daven فارنهام. 1170 00:50:49,883 --> 00:50:53,160 1171 00:50:53,160 --> 00:50:55,860 >> DAVEN فارنهام: الترميز في C هو أصعب بكثير من خدش. 1172 00:50:55,860 --> 00:50:57,320 printf، كان خدش كذب. 1173 00:50:57,320 --> 00:50:59,930 1174 00:50:59,930 --> 00:51:01,430 >> [ضحك الصوت المتزامن مع اللقطات] 1175 00:51:01,430 --> 00:51:02,486