1 00:00:00,000 --> 00:00:03,944 >> [عزف الموسيقى] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID مالان: حسنا. 4 00:00:11,690 --> 00:00:14,674 هذا هو CS50، وهذا هي نهاية الاسبوع 2. 5 00:00:14,674 --> 00:00:16,840 أنا آسف لذلك لا يمكن أن يكون هناك معكم جميعا اليوم، 6 00:00:16,840 --> 00:00:18,300 ولكن كنت في أيد أمينة جدا. 7 00:00:18,300 --> 00:00:21,710 اسمحوا لي أن أعرض الخاصة روب بودين CS50 ل. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: وبطبيعة الحال، ثم علينا أن يسخر من الواقع 10 00:00:31,730 --> 00:00:36,820 أنه أرسل لنا العمودي فيديو وتظهر هذه. 11 00:00:36,820 --> 00:00:38,320 >> [تشغيل الفيديو] 12 00:00:38,320 --> 00:00:39,820 >> [عزف الموسيقى] 13 00:00:39,820 --> 00:00:42,350 >> [خطى] 14 00:00:42,350 --> 00:00:44,730 >> لم لا، هذا الفيديو يجب أن ننظر بهذه الطريقة. 15 00:00:44,730 --> 00:00:46,570 وكان من الممكن منعها. 16 00:00:46,570 --> 00:00:49,070 نقول لا لأشرطة الفيديو العمودية. 17 00:00:49,070 --> 00:00:53,310 >> أشرطة الفيديو -Vertical يحدث عند تعقد الكاميرا بطريقة خاطئة. 18 00:00:53,310 --> 00:00:55,880 ستنتهي الفيديو حتى تبدو وكأنها هراء. 19 00:00:55,880 --> 00:00:57,650 >> - [الناخر] 20 00:00:57,650 --> 00:01:02,240 >> -هناك هي المزيد والمزيد من الناس المدمنين لجعل أشرطة الفيديو العمودية كل يوم. 21 00:01:02,240 --> 00:01:06,240 انها ليست الكراك أو لا شيء، لكنه ما زال سيئا حقا. 22 00:01:06,240 --> 00:01:10,410 هناك نوعان من أنواع مختلفة من الناس الذين أصابتهم VVS. 23 00:01:10,410 --> 00:01:14,160 يعامل المجموعة الأولى مقاطع الفيديو التي تبادل لاطلاق النار مثل الصور. 24 00:01:14,160 --> 00:01:15,850 انهم لا يعني أي ضرر. 25 00:01:15,850 --> 00:01:19,180 انهم فقط لا يفهمون أن في حين يمكنك تحويل الصورة، 26 00:01:19,180 --> 00:01:20,880 لا يمكن أن تتحول حقا الفيديو. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [SOUNDS القرد] 29 00:01:23,460 --> 00:01:27,540 >> -THE مجموعة أخرى هي الناس الذين لا تعطي [بليب]. 30 00:01:27,540 --> 00:01:31,090 >> متلازمة فيديو -Vertical غير خطرة. 31 00:01:31,090 --> 00:01:34,120 الصور المتحركة لديها دائما الأفقي. 32 00:01:34,120 --> 00:01:35,990 التلفزيون أفقية. 33 00:01:35,990 --> 00:01:38,380 شاشات الكمبيوتر أفقية. 34 00:01:38,380 --> 00:01:41,580 عيون الناس أفقية. 35 00:01:41,580 --> 00:01:45,170 نحن لا تبنى ل مشاهدة أشرطة الفيديو العمودية. 36 00:01:45,170 --> 00:01:47,600 >> -أنا أحب أشرطة الفيديو العمودية. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody يهتم لأمرك. 38 00:01:50,410 --> 00:01:53,340 >> إذا، هذه المشكلة ل تركت لحالها، أنت أيضا 39 00:01:53,340 --> 00:01:57,650 ستبدأ تظهر أربعة أشرطة الفيديو في مرة واحدة فقط لحفظ عرض النطاق الترددي. 40 00:01:57,650 --> 00:02:02,400 >> أشرطة الفيديو العمودية -Letterboxed شأنه أن يكون حجم طابع بريد. 41 00:02:02,400 --> 00:02:04,920 >> -and وسوف تنتشر في كل مكان. 42 00:02:04,920 --> 00:02:07,670 شاشات السينما لها دائما الأفقي. 43 00:02:07,670 --> 00:02:11,200 إذا أصبحت أشرطة الفيديو العمودية ودور السينما المقبولة 44 00:02:11,200 --> 00:02:13,930 ويجب أن تكون طويل القامة ونحيف. 45 00:02:13,930 --> 00:02:17,710 >> -و كل من دور السينما سوف يجب أن تحصل على هدمه وإعادة بنائها. 46 00:02:17,710 --> 00:02:22,090 وبحلول الوقت الذي تم بناؤه عليها، سوف ميلا كونيس تكون قديمة وقبيحة. 47 00:02:22,090 --> 00:02:24,342 >> -Birds سوف تصطدم لهم ويموت. 48 00:02:24,342 --> 00:02:26,530 >> -We'll عن الحصول قاسية رقاب من يبحث حتى. 49 00:02:26,530 --> 00:02:29,800 >> -و لا أحد سيجلس في الصف الأمامي من أي وقت مضى مرة أخرى. 50 00:02:29,800 --> 00:02:37,170 >> سوف -George لوكاس إعادة إطلاق ستار الحروب again-- الطبعة نحيف. 51 00:02:37,170 --> 00:02:41,860 >> كان من أنا أبدا قادرة حقا أن أقول القصة التي أردت أن أقول. 52 00:02:41,860 --> 00:02:46,030 وكانت هذه فرصة عظيمة بالنسبة لي ل تجربة مع التكنولوجيا الجديدة. 53 00:02:46,030 --> 00:02:48,150 >> -You're النطر. 54 00:02:48,150 --> 00:02:54,430 >> -Every مرة يتم استخدام جهاز محمول ل تسجيل الفيديو، والإغراء هناك. 55 00:02:54,430 --> 00:02:56,370 فقط قل لا. 56 00:02:56,370 --> 00:03:00,116 نقول لا لجورج لوكاس. 57 00:03:00,116 --> 00:03:04,062 نقول لا للميلا كونيس القديم. 58 00:03:04,062 --> 00:03:06,600 نقول لا لأشرطة الفيديو العمودية. 59 00:03:06,600 --> 00:03:12,511 >> -و إذا رأيت شخص ما يفعلون ذلك، ويقول، "كنت لا إطلاق النار التي دمية على حق!" 60 00:03:12,511 --> 00:03:15,433 >> [عزف الموسيقى] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END قراءة] 63 00:03:19,830 --> 00:03:23,702 >> [تصفيق] 64 00:03:23,702 --> 00:03:27,598 >> [الصوت خارج] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB BOWDEN: --simple شكل الترميز، 67 00:03:45,790 --> 00:03:49,500 الذي هو في الأساس التشفير وفك تشفير رسائل سرية. 68 00:03:49,500 --> 00:03:52,590 حتى هنا لدينا لعبة بسيطة للغاية. 69 00:03:52,590 --> 00:03:56,900 والفكرة هي الطوق الخارجي تدور حول الحلقة الداخلية. 70 00:03:56,900 --> 00:04:01,610 ويمكنك أن ترى، ربما لو كنت تكبير في، هكذا- يضرب فإنه من الصعب أن نرى. 71 00:04:01,610 --> 00:04:05,090 ولكن، مثل، عدد 1-- جيدا، أن يتحرك. 72 00:04:05,090 --> 00:04:09,120 >> عدد 1 خرائط الرسالة X، عدد 2 خرائط الرسالة 73 00:04:09,120 --> 00:04:11,630 J. صعبة بشكل لا يصدق عدم تخطي إلى الأمام. 74 00:04:11,630 --> 00:04:16,100 رسالة 2 خرائط لJ. عدد 3 خرائط لD. ذلك 75 00:04:16,100 --> 00:04:20,140 مع هذا الخاتم التي يمكن أن تعطي شخص ما رسالة 1، 2، 3. 76 00:04:20,140 --> 00:04:22,624 لسبب ما أريد أن أقول لهم XJD. 77 00:04:22,624 --> 00:04:24,540 ولكن يمكنك ان تعطي لهم بعض الرسائل من الأرقام، 78 00:04:24,540 --> 00:04:28,460 وطالما لديهم هذه الحلقة، فإنها يمكن فك تشفير ما كنت أحاول أن أقول. 79 00:04:28,460 --> 00:04:32,510 >> لذلك كنت قد رأيت هذا مثال معين من التشفير 80 00:04:32,510 --> 00:04:36,640 قبل إذا حول موسم عيد الميلاد كنت قد شاهدت قصة عيد الميلاد. 81 00:04:36,640 --> 00:04:38,520 إذا كنت لم أر من قبل، ثم عادل 82 00:04:38,520 --> 00:04:41,060 بدوره على TBS في حرفيا أي وقت عشية عيد الميلاد، 83 00:04:41,060 --> 00:04:44,510 لأنها تظهر فقط لأنها العودة إلى الوراء إلى العودة إلى العودة إلى الوراء يوم كامل. 84 00:04:44,510 --> 00:04:46,744 والفيديو ذات الصلة هو هذا. 85 00:04:46,744 --> 00:04:47,410 [تشغيل الفيديو] 86 00:04:47,410 --> 00:04:50,020 أغلب بلدان أنه معروف للجميع من دون استثناء أن رالف باركر هو أنشر 87 00:04:50,020 --> 00:04:52,850 عين عضوا في ليتل اليتيم آني الدائرة السرية 88 00:04:52,850 --> 00:04:56,490 ويحق لجميع يكرم والمزايا التي تحدث بها. 89 00:04:56,490 --> 00:04:59,010 وقع ليتل اليتيم آني. 90 00:04:59,010 --> 00:05:03,120 بالعطف بيار اندريه في الحبر! 91 00:05:03,120 --> 00:05:07,460 الأوسمة والفوائد بالفعل في سن التاسعة! 92 00:05:07,460 --> 00:05:12,530 >> [الصراخ من RADIO] 93 00:05:12,530 --> 00:05:13,030 -هيا. 94 00:05:13,030 --> 00:05:14,000 دعونا الحصول على معها. 95 00:05:14,000 --> 00:05:18,274 أنا لست بحاجة إلى كل ذلك موسيقى الجاز حول المهربين والقراصنة. 96 00:05:18,274 --> 00:05:20,440 ليلة الغد مع -Listen مغامرة الختامية 97 00:05:20,440 --> 00:05:22,540 من القراصنة السفينة الأسود. 98 00:05:22,540 --> 00:05:25,460 الآن، حان الوقت ل رسالة سرية آني 99 00:05:25,460 --> 00:05:28,620 لك أعضاء الدائرة السرية. 100 00:05:28,620 --> 00:05:32,370 تذكر الاطفال، فقط أعضاء من الدائرة السرية آني 101 00:05:32,370 --> 00:05:34,880 يمكن فك شفرة رسالة سرية آني. 102 00:05:34,880 --> 00:05:39,100 تذكر، آني وهذا يتوقف على لك. 103 00:05:39,100 --> 00:05:41,660 وضع دبابيس لB2. 104 00:05:41,660 --> 00:05:43,960 هنا هو رسالة. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -أنا أنا في أول اجتماع بلدي السري. 109 00:05:48,110 --> 00:05:49,030 >> -25. 110 00:05:49,030 --> 00:05:49,834 14. 111 00:05:49,834 --> 00:05:51,040 11. 112 00:05:51,040 --> 00:05:51,854 18. 113 00:05:51,854 --> 00:05:52,670 16. 114 00:05:52,670 --> 00:05:54,570 >> أوه، بيير في هذه الليلة العظيمة صوت. 115 00:05:54,570 --> 00:05:57,490 ويمكنني أن أقول أن هذه الليلة وكانت رسالة مهمة حقا. 116 00:05:57,490 --> 00:05:57,990 -3. 117 00:05:57,990 --> 00:06:00,080 25. 118 00:06:00,080 --> 00:06:01,580 هذه رسالة من آني نفسها. 119 00:06:01,580 --> 00:06:02,880 تذكر، لا تخبر أحدا. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> ثانية، خمسة في وقت لاحق، وأنا في فقط غرفة في المنزل حيث ولد من تسعة 122 00:06:11,130 --> 00:06:15,830 يمكن أن تجلس في الخصوصية وفك شفرة. 123 00:06:15,830 --> 00:06:16,620 آها! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 ذهبت في اليوم التالي. 126 00:06:20,210 --> 00:06:23,300 E. الكلمة الأولى هي "أن يكون". 127 00:06:23,300 --> 00:06:25,880 S. وكانت قادمة من الأسهل الآن. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 هذا R. 130 00:06:30,528 --> 00:06:31,278 تعال على، الخاص Ralphie! 131 00:06:31,278 --> 00:06:31,861 لقد انتقل فلدي! 132 00:06:31,861 --> 00:06:33,182 -I'll يكون وصولا، ما! 133 00:06:33,182 --> 00:06:36,038 جي الازيز. 134 00:06:36,038 --> 00:06:42,840 T. O. "مما لا شك فيه أن" - تأكد من ماذا؟ 135 00:06:42,840 --> 00:06:44,770 ما كان اليتيم الصغير آني أحاول أن أقول؟ 136 00:06:44,770 --> 00:06:46,381 ومن المؤكد أن ما؟ 137 00:06:46,381 --> 00:06:47,825 >> وقد حصلت -Randy للذهاب! 138 00:06:47,825 --> 00:06:48,866 هل يرجى يخرج؟ 139 00:06:48,866 --> 00:06:49,783 >> حق عموم، أمي! 140 00:06:49,783 --> 00:06:51,786 سأكون من الصحيح! 141 00:06:51,786 --> 00:06:53,606 أنا أقترب الآن. 142 00:06:53,606 --> 00:06:55,550 وكان التوتر الفظيع. 143 00:06:55,550 --> 00:06:57,050 ما كان هذا؟ 144 00:06:57,050 --> 00:06:59,905 مصير كوكب الأرض قد يتعطل في الميزان! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie، راندي حصلت على الذهاب! 146 00:07:01,736 --> 00:07:05,680 >> -I'll يكون الحق في الخروج، ليبكي بصوت عال! 147 00:07:05,680 --> 00:07:07,170 اكاد اصل! 148 00:07:07,170 --> 00:07:08,150 حلقت أصابعي. 149 00:07:08,150 --> 00:07:09,980 كان ذهني فخ الصلب. 150 00:07:09,980 --> 00:07:11,496 صدي كل مسام. 151 00:07:11,496 --> 00:07:13,268 وكان واضحا تقريبا! 152 00:07:13,268 --> 00:07:13,767 نعم. 153 00:07:13,767 --> 00:07:14,609 نعم. 154 00:07:14,609 --> 00:07:15,108 نعم. 155 00:07:15,108 --> 00:07:16,449 نعم. 156 00:07:16,449 --> 00:07:20,240 تأكد من شرب فالتين الخاص بك. 157 00:07:20,240 --> 00:07:20,740 فالتين؟ 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 A التجارية تافه؟ 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 ابن العاهرة. 162 00:07:34,920 --> 00:07:35,890 >> [END قراءة] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: هذه هي الطريقة التي فالتين يتعلق التشفير. 164 00:07:39,650 --> 00:07:42,290 في الأساس CS50 الإعلان فقط فالتين، لذلك يمكن لنا 165 00:07:42,290 --> 00:07:44,400 يكون التجارية تافه لفالتين. 166 00:07:44,400 --> 00:07:44,900 حسنا. 167 00:07:44,900 --> 00:07:47,120 وحتى الآن علوم الكمبيوتر الفعلي. 168 00:07:47,120 --> 00:07:50,670 تذكر يوم الاثنين توقفنا الغوص أعمق في السلاسل. 169 00:07:50,670 --> 00:07:52,820 لذلك كنا نتعامل مع السلسلة "Zamyla". 170 00:07:52,820 --> 00:07:55,130 وكنا الاعتراف حقيقة أن نتمكن من علاج 171 00:07:55,130 --> 00:07:57,510 "Zamyla" باعتباره سلسلة من الأحرف. 172 00:07:57,510 --> 00:07:59,740 وتذكر أن تعلمنا التدوين قوس. 173 00:07:59,740 --> 00:08:01,995 حتى إذا تم تخزين هذا في سلسلة "ليالي"، ثم 174 00:08:01,995 --> 00:08:05,860 إذا قلنا الصورة قوس 0، التي من شأنها أن تشير إلى Z. العاصمة إلكتروني 175 00:08:05,860 --> 00:08:09,790 وإذا قلنا الصورة قوس 1، التي سيشير أول صغيرة لذلك، 176 00:08:09,790 --> 00:08:14,220 وهكذا حتى تصل إلى s قوس 5، التي من شأنها أن تشير إلى الماضي. 177 00:08:14,220 --> 00:08:17,090 >> أتذكر الآن أن طول هذه السلسلة هو 6، 178 00:08:17,090 --> 00:08:23,220 لكن مؤشرات في سلسلة قابلة لل من 0 إلى 5، Z من خلال ذلك تستمر. 179 00:08:23,220 --> 00:08:28,650 ولذلك فإن هذا يناسب الآن إلى الصورة الأكبر من ذاكرة جهاز الكمبيوتر الخاص بك، ذاكرة الوصول العشوائي الخاصة بك. 180 00:08:28,650 --> 00:08:32,020 حتى في مكان ما البرنامج الذي كنت تقوم بتشغيل جهاز الكمبيوتر الخاص بك 181 00:08:32,020 --> 00:08:34,780 يجب أن نتذكر Zamyla في مكان ما في الذاكرة. 182 00:08:34,780 --> 00:08:36,029 لذلك يمكن أن لدي المتطوعين؟ 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 نعم، من فضلك. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 و ما هو أسمك؟ 187 00:08:51,500 --> 00:08:52,410 >> العميد: عميد. 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN: عميد؟ 189 00:08:53,550 --> 00:08:54,910 لطيف لمقابلتك، عميد. 190 00:08:54,910 --> 00:08:58,240 حتى يأتي أكثر من هنا، و نحن ذاهبون الى ترسمه 191 00:08:58,240 --> 00:09:00,740 على موقعنا على تخطيط أنيق لطيف من الذاكرة. 192 00:09:00,740 --> 00:09:05,950 الآن أود أن أفكر في الذاكرة باعتبارها واحدة شريط طويل من بايت، 193 00:09:05,950 --> 00:09:11,090 ولكن فقط لأغراض العرض وسوف نقوم فقط لا من اليسار إلى اليمين، من أعلى إلى أسفل. 194 00:09:11,090 --> 00:09:11,590 موافق؟ 195 00:09:11,590 --> 00:09:22,030 >> لذلك أنا ذاهب لاظهار program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 وذلك عن هذا البرنامج القيام يطلب أربع سلاسل 197 00:09:25,760 --> 00:09:28,830 من المستخدم مع GetString ثم الطباعة 198 00:09:28,830 --> 00:09:30,950 كل ما دخلت هذه السلسلة الأولى كان. 199 00:09:30,950 --> 00:09:32,840 نحن تجاهل اثنين خلال الأربعة. 200 00:09:32,840 --> 00:09:33,610 حسنا. 201 00:09:33,610 --> 00:09:38,210 حتى هنا now-- عندما أنا أول طلب S1. 202 00:09:38,210 --> 00:09:39,740 لذلك كنت الكمبيوتر. 203 00:09:39,740 --> 00:09:41,680 وكنت تنفيذ GetString. 204 00:09:41,680 --> 00:09:46,710 لذلك أنت تطلب سلسلة من لي، وأنا أقول، OK، عميد. 205 00:09:46,710 --> 00:09:47,900 إعطاء السلسلة "عميد". 206 00:09:47,900 --> 00:09:50,300 >> حتى في مكان ما في الذاكرة التي بحاجة إلى أن نتذكر "عميد". 207 00:09:50,300 --> 00:09:52,160 حتى اكتبها في الذاكرة في مكان ما. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 الكمال. 210 00:09:59,210 --> 00:09:59,880 حسنا. 211 00:09:59,880 --> 00:10:01,740 حتى الآن لدينا S2. 212 00:10:01,740 --> 00:10:03,869 وS2 ستكون طلب إلى GetString. 213 00:10:03,869 --> 00:10:05,160 لذلك أنا ذاهب لإدخال سلسلة. 214 00:10:05,160 --> 00:10:08,720 انا ذاهب الى دخول "هانا". 215 00:10:08,720 --> 00:10:10,586 حتى أدخل "هانا" في مكان ما في الذاكرة. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 نعم. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> حسنا، حتى الآن S3. 220 00:10:25,550 --> 00:10:28,380 وسيكون آخر يطلب إلى GetString. 221 00:10:28,380 --> 00:10:37,020 وحتى الآن دخول "ماريا". 222 00:10:37,020 --> 00:10:37,520 حسنا. 223 00:10:37,520 --> 00:10:40,980 ثم هناك آخر واحد طلب GetString، S4. 224 00:10:40,980 --> 00:10:42,580 لذلك، وأنا لا أعرف. 225 00:10:42,580 --> 00:10:45,640 كيف نذهب مع antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 حتى أدخل ذلك في الذاكرة. 227 00:10:49,460 --> 00:10:50,400 نعم. 228 00:10:50,400 --> 00:10:53,970 حتى مجرد القيام به "روب". 229 00:10:53,970 --> 00:10:54,560 >> حسنا. 230 00:10:54,560 --> 00:10:58,410 حتى explain-- الآن لماذا تركت هذه المساحات؟ 231 00:10:58,410 --> 00:11:01,340 لماذا لديك هذا فارغا الفضاء هنا، هنا، وهنا؟ 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 نعم. 234 00:11:05,670 --> 00:11:09,450 لذلك تلاحظ عندما أذهب لطباعة s1-- حتى إذا كنا 235 00:11:09,450 --> 00:11:11,890 كان "هانا" تشغيل يقف إلى جوارها "عميد" 236 00:11:11,890 --> 00:11:14,360 كيف لنا أن نعرف متى السلسلة "عميد" ينتهي؟ 237 00:11:14,360 --> 00:11:19,470 حتى طباعة S1 سلسلة قد يكون المطبوعة فقط "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 إذا لم يكن لديك أي فكرة متى "عميد" ينتهي فعلا. 239 00:11:22,720 --> 00:11:23,240 >> حسنا. 240 00:11:23,240 --> 00:11:27,650 حتى في الذاكرة الطريق ونحن في الواقع تمثل هذه نهاية سلسلة 241 00:11:27,650 --> 00:11:29,940 هو مع مائل الصفر. 242 00:11:29,940 --> 00:11:32,620 لذلك هذا الفضاء هو بالضبط ما كنا نريد. 243 00:11:32,620 --> 00:11:34,040 وينبغي أن يكون مائل الصفر. 244 00:11:34,040 --> 00:11:37,690 وستكون هذه مائل الصفر، وهذا سوف يكون مائل الصفر. 245 00:11:37,690 --> 00:11:41,585 ويمكنك الحصول على جائزة رائعة لكونه أحد المتطوعين الكمال. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 نلقي الكرة الإجهاد! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> حسنا. 250 00:11:49,700 --> 00:11:54,420 لذلك هذا مائل حرف الصفر كيف يمكننا الإشارة إلى نهاية السلسلة. 251 00:11:54,420 --> 00:11:57,120 انها الطريقة عند أي برنامج معين تريد طباعة سلسلة، 252 00:11:57,120 --> 00:11:59,760 انها how-- أتذكر علمنا وظيفة strlen الأسبوع الماضي؟ 253 00:11:59,760 --> 00:12:00,940 طول السلسلة؟ 254 00:12:00,940 --> 00:12:03,770 انها الطريقة طول السلسلة قادر على تحديد المدة سلسلة هي. 255 00:12:03,770 --> 00:12:05,810 أنها تحتفظ فقط بالتكرار أكثر من الأحرف 256 00:12:05,810 --> 00:12:08,217 حتى يجدها مائل حرف الصفر. 257 00:12:08,217 --> 00:12:11,050 وبالتالي فإن الشيء المهم أن يدرك حول الطابع مائل الصفر 258 00:12:11,050 --> 00:12:14,950 وتمثيله جميع الأصفار في بت. 259 00:12:14,950 --> 00:12:18,980 لذلك نلاحظ أن هذا هو متميز من الطابع الصفر. 260 00:12:18,980 --> 00:12:23,010 وبالتالي فإن الطابع الصفر، إذا كنت تتذكر في المثال انه اعطى في نهاية 261 00:12:23,010 --> 00:12:27,360 المحاضرة حيث خريطة الأحرف to-- مثل العاصمة والخرائط إلى 65. 262 00:12:27,360 --> 00:12:29,130 أحرف صغيرة على الخرائط إلى 97. 263 00:12:29,130 --> 00:12:30,890 سوف صغيرة ب أن يكون 98. 264 00:12:30,890 --> 00:12:35,220 وبالتالي فإن عدد 0 خرائط to-- أنا لا تعرف من على قمة رأسي. 265 00:12:35,220 --> 00:12:36,400 44 أو 45. 266 00:12:36,400 --> 00:12:37,890 في مكان ما في تلك المنطقة. 267 00:12:37,890 --> 00:12:40,850 >> وبالتالي فإن الطابع 0 هو العدد الفعلي. 268 00:12:40,850 --> 00:12:44,350 ولكن الصفر مائل خرائط لجميع البتات صفر. 269 00:12:44,350 --> 00:12:46,380 لذلك هناك تمييز بين مائل الصفر، 270 00:12:46,380 --> 00:12:48,450 ونحن سوف ندعو فاصل فارغة. 271 00:12:48,450 --> 00:12:53,210 هناك تمييز بين مائل الصفر والطابع الصفر. 272 00:12:53,210 --> 00:12:54,350 >> حسنا. 273 00:12:54,350 --> 00:12:57,520 لذلك نتحدث قليلا المزيد عن السلاسل. 274 00:12:57,520 --> 00:13:01,470 لذلك فإننا نرى هنا هذه هي الطريقة أن تكون وضعت بها في الذاكرة. 275 00:13:01,470 --> 00:13:07,940 حتى هذه الفكرة من سلاسل كتسلسل من characters-- ذلك الكمبيوتر الرسمي 276 00:13:07,940 --> 00:13:10,750 المدى sciency لتسلسل صفيف. 277 00:13:10,750 --> 00:13:13,790 لذلك نود ان ندعو سلسلة مجموعة من الأحرف. 278 00:13:13,790 --> 00:13:17,770 وهناك في الواقع بيانات أخرى أنواع نتمكن من جعل صفائف من. 279 00:13:17,770 --> 00:13:19,975 >> لذلك لتحفيز هذا، ننظر على سبيل المثال. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 ونحن سوف يطلق عليه ages0.c وسوف أكون نسخ ولصق لدينا قالب. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 حسنا. 284 00:13:33,410 --> 00:13:39,378 حتى في هذا البرنامج ما تريد القيام به هو انتزاع سن 285 00:13:39,378 --> 00:13:45,160 ثلاثة طلاب في الدورة. 286 00:13:45,160 --> 00:13:49,240 حتى نعرف الباحث age-- والآن انا ذاهب الى القول 0. 287 00:13:49,240 --> 00:13:53,140 لذلك قد أريد أن أقول age1، ولكن لأغراض سنرى قريبا جدا، 288 00:13:53,140 --> 00:13:57,187 أنا أقول الباحث age0 يساوي GetInt. 289 00:13:57,187 --> 00:13:59,270 حتى نفس المكالمة إلى GetInt أننا أستعمل أنا 290 00:13:59,270 --> 00:14:01,561 لا يحدث أن دفع قائلا: "أعطني العمر." 291 00:14:01,561 --> 00:14:03,120 ولكن تطلب فقط. 292 00:14:03,120 --> 00:14:06,510 >> وage1 يساوي GetInt. 293 00:14:06,510 --> 00:14:09,600 والباحث age2 يساوي GetInt. 294 00:14:09,600 --> 00:14:14,070 لذلك، مرة أخرى، ثلاثة طلاب، ولكن في نهاية المطاف مؤشرات متغيرة 295 00:14:14,070 --> 00:14:16,890 هي age0 من خلال age2. 296 00:14:16,890 --> 00:14:17,550 حسنا. 297 00:14:17,550 --> 00:14:23,960 لذلك هذا البرنامج سوف تفعل ما نريد مع age0، age1، وage2، 298 00:14:23,960 --> 00:14:27,670 ولكن هذا البرنامج في نهاية المطاف يعمل لثلاثة طلاب. 299 00:14:27,670 --> 00:14:28,380 >> حسنا. 300 00:14:28,380 --> 00:14:32,110 وحتى الآن ما إذا أريد أربعة طلاب؟ 301 00:14:32,110 --> 00:14:36,000 حسنا، انا ذاهب لدينا للذهاب إلى الوراء في قانون بلدي، تغيير التعليق، 302 00:14:36,000 --> 00:14:39,840 والآن لدينا عدد صحيح age3 يساوي GetInt. 303 00:14:39,840 --> 00:14:40,610 حسنا. 304 00:14:40,610 --> 00:14:43,660 ذلك الذي يرى أن المشكلة هنا؟ 305 00:14:43,660 --> 00:14:47,310 ما هي المشكلة مع هذا النوع من الإعداد؟ 306 00:14:47,310 --> 00:14:47,810 نعم. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 نعم. 309 00:14:53,610 --> 00:14:56,360 لذلك نحن بصدد إنشاء متغير لكل طالب. 310 00:14:56,360 --> 00:15:00,140 الآن أن يعمل، ولكن في نهاية المطاف ما إذا كنت الآن 311 00:15:00,140 --> 00:15:06,500 يقول: "أريد أن الاستيلاء على عمر ثمانية طلاب أو 16 طالبا 312 00:15:06,500 --> 00:15:11,340 أو ولكن العديد من الطلاب من مئات الطلاب في CS50 313 00:15:11,340 --> 00:15:16,750 أو الآلاف من الطلاب في الحرم الجامعي أو المليارات من الناس في العالم؟ 314 00:15:16,750 --> 00:15:19,130 حتى النهاية هذه ليست مستدامة. 315 00:15:19,130 --> 00:15:21,990 أي وقت ترى نفسك نسخ ولصق التعليمات البرمجية مثل هذا، 316 00:15:21,990 --> 00:15:25,050 يجب أن تشعر عموما أن هناك طريقة أفضل. 317 00:15:25,050 --> 00:15:31,290 >> لذلك هذا هو المكان الذي نحن نقدم إعلان مجموعة. 318 00:15:31,290 --> 00:15:34,564 لذلك عندما تقوم بتعريف صفيف، هذا هو ما الشكل العام 319 00:15:34,564 --> 00:15:35,480 سوف تبدو وكأنها. 320 00:15:35,480 --> 00:15:36,664 ونحن في طريقنا إلى القول نوع. 321 00:15:36,664 --> 00:15:38,830 ثم نحن في طريقنا لل إعطاء اسم ذلك مجموعة، 322 00:15:38,830 --> 00:15:41,150 تماما كما نحدد أي متغير معين. 323 00:15:41,150 --> 00:15:43,980 ثم أخيرا ونحن نستخدم هذه الرموز قوس مرة أخرى 324 00:15:43,980 --> 00:15:47,480 ولكن في سياق مختلف من كيف كنا استخدامه في وقت سابق. 325 00:15:47,480 --> 00:15:51,860 >> حتى هنا هذا يبدو وكأنه طبيعي إعلان المتغير الذي رأيناه. 326 00:15:51,860 --> 00:15:54,890 لذلك رأيناه الباحث س منقوطة قبل. 327 00:15:54,890 --> 00:16:00,020 حسنا الآن يمكننا أن نرى شيئا مثل الباحث س قوسين 5. 328 00:16:00,020 --> 00:16:04,020 ووضع هذه الفكرة في برنامج GetInt أننا have-- 329 00:16:04,020 --> 00:16:08,850 حتى نتمكن من تنفيذ هذا في نفس الطريق. 330 00:16:08,850 --> 00:16:13,630 >> دعنا نقول في CS فإننا نميل إلى استخدام ن حيث وصل عدد شيء. 331 00:16:13,630 --> 00:16:16,150 حتى هنا ونحن في طريقنا ل تخزين أربعة طلاب. 332 00:16:16,150 --> 00:16:25,960 والآن يمكننا القول عمر الباحث قوس n-- لم يحصل ذلك تماما yet-- 333 00:16:25,960 --> 00:16:32,210 بإعلان مجموعة من أربعة طلاب. 334 00:16:32,210 --> 00:16:38,050 فكيف هذا سوف ننظر في والذاكرة تكون مشابهة لهذا. 335 00:16:38,050 --> 00:16:39,570 مسح هذا. 336 00:16:39,570 --> 00:16:46,606 ونحن ذاهبون الى مكان ما في memory-- سوف أضع هذا الأمر هناك. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> حتى في مكان ما في الذاكرة. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 واحد إثنان ثلاثة أربعة. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 لدينا أربعة أعداد صحيحة في صف واحد لهذه المجموعة من أربعة أعداد صحيحة. 343 00:17:09,849 --> 00:17:13,820 لذلك، في الوقت الحالي، ما هو حجم واحد من هذه الصناديق؟ 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 نعم. 346 00:17:17,690 --> 00:17:18,390 انها أربعة بايت. 347 00:17:18,390 --> 00:17:19,690 انها 32 بت. 348 00:17:19,690 --> 00:17:22,310 وحتى الآن وهذا يختلف من مجموعة أننا 349 00:17:22,310 --> 00:17:24,020 شهدت في وقت سابق، ومجموعة من الأحرف. 350 00:17:24,020 --> 00:17:28,540 في سلسلة كان كل مربع بايت واحد فقط، لأن الحرف هو بايت واحد فقط. 351 00:17:28,540 --> 00:17:32,170 ولكن مع مجموعة من الأعداد الصحيحة، كل مربع يجب أن يكون أربعة بايت من أجل 352 00:17:32,170 --> 00:17:34,060 لتتناسب مع عدد صحيح بأكمله. 353 00:17:34,060 --> 00:17:37,197 لذلك هذا هو ما مجموعة من أن أربعة [إينتس] تبدو. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> ومن ثم العودة إلى التعليمات البرمجية. 356 00:17:43,870 --> 00:17:47,460 الآن نريد أن مخزن الواقع الأعداد الصحيحة في ذلك مجموعة. 357 00:17:47,460 --> 00:17:53,470 وحتى الآن هذا هو جدا، جدا، جدا نمط مشترك من شأنه أن في بعض نقطة 358 00:17:53,470 --> 00:17:54,680 تصبح الذاكرة العضلية. 359 00:17:54,680 --> 00:17:56,710 حتى كثافة العمليات ط يساوي 0. 360 00:17:56,710 --> 00:17:57,940 أنا أقل من ن. 361 00:17:57,940 --> 00:18:01,850 ط زائد زائد. 362 00:18:01,850 --> 00:18:05,790 الفئة العمرية ط يساوي GetInt. 363 00:18:05,790 --> 00:18:15,100 >> لذلك هذا للحلقة، وهذا الشكل، يجب أن تحصل جدا تستخدم ل. 364 00:18:15,100 --> 00:18:20,010 لذلك هذا هو عموما كيف ونحن تكرار عبر أي مجموعة تقريبا. 365 00:18:20,010 --> 00:18:23,690 لاحظ الآن هذا النوع من يفسر لماذا من البداية 366 00:18:23,690 --> 00:18:29,870 لم يكن لدينا لحلقات مستمرة لكثافة العمليات ط يساوي 1، ط أقل من أو يساوي 10. 367 00:18:29,870 --> 00:18:34,200 والسبب هو أن تبدأ من صفر يجعل هذا العمل بشكل جيد مع المصفوفات. 368 00:18:34,200 --> 00:18:36,270 حتى صفائف صفر فهرستها. 369 00:18:36,270 --> 00:18:40,360 إذا كانت هذه هي مجموعة من طول 4، المؤشرات هي من 0 إلى 3. 370 00:18:40,360 --> 00:18:42,880 >> ذلك من خلال أول تكرار هذا للحلقة 371 00:18:42,880 --> 00:18:49,930 ونحن في طريقنا إلى أن تحديد سن قوس 0 يساوي دعوة إلى GetInt. 372 00:18:49,930 --> 00:18:52,440 لذلك كل ما حدث لي للدخول على لوحة المفاتيح. 373 00:18:52,440 --> 00:18:56,970 في الممر الثاني، ونحن وضع يساوي age1 إلى GetInt. 374 00:18:56,970 --> 00:18:58,230 ممر ثالث، age2. 375 00:18:58,230 --> 00:18:59,880 التمريرة الحاسمة age3. 376 00:18:59,880 --> 00:19:05,750 إذا كان الأمر كذلك في الممر الأول للحلقة أنا أدخل رقم 4 على لوحة المفاتيح، 377 00:19:05,750 --> 00:19:07,740 ثم سنقوم بإدراج 4 هنا. 378 00:19:07,740 --> 00:19:11,470 إذا على مسار الثاني يمكنني الدخول 50، ونحن سوف تضع 50 هنا. 379 00:19:11,470 --> 00:19:15,180 على مرور الثالث I قد أدخل سلبية 1، سلبية 1، 380 00:19:15,180 --> 00:19:21,810 ثم أخيرا إذا دخلت 0-- و أتذكر الآن أن هذا كان مؤشر الثلاثة. 381 00:19:21,810 --> 00:19:25,350 >> بعد أن حلقة الوراء، وأنا غير الذهاب إلى يمكن زيادة إلى 4. 382 00:19:25,350 --> 00:19:27,770 أنا لم يعد هو أقل من ن، الذي هو 4. 383 00:19:27,770 --> 00:19:29,840 ونحن خروج من الحلقة. 384 00:19:29,840 --> 00:19:32,578 ذلك ما يمكن أن يكون الخطأ في هذا؟ 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [غير مسموع]؟ 387 00:19:38,729 --> 00:19:39,604 الحضور: (غير مسموع) 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> نعم. 390 00:19:46,400 --> 00:19:51,550 وبالتالي فإن مجموعة ليس لديها سوى أربعة أماكن، وهو ما يعني كما المؤشرات من 0 إلى 3. 391 00:19:51,550 --> 00:19:55,630 حتى إذا كانت هذه هي الحالة، وأود أن تأخذ على القيمة 4 عند نقطة معينة. 392 00:19:55,630 --> 00:20:00,910 الفئة العمرية 4 سوف يتم وضع كل ما يحدث أن تكون أكثر من هنا 393 00:20:00,910 --> 00:20:02,920 لماذا يجب أن أقول، أدخل 6. 394 00:20:02,920 --> 00:20:05,010 والتي سوف يتم تحديد هذا إلى 6. 395 00:20:05,010 --> 00:20:06,560 >> ولكننا لا نعرف ما هو أكثر من هنا. 396 00:20:06,560 --> 00:20:08,836 هذه ليست الذاكرة أن كان لدينا الوصول إليها. 397 00:20:08,836 --> 00:20:10,710 حتى إذا كنت تذكر من المحاضرة السابقة، 398 00:20:10,710 --> 00:20:14,350 كان طبع قيم Zamyla و في مرحلة ما ضرب هذا تجزئة 399 00:20:14,350 --> 00:20:17,990 خطأ. لذلك سوف ربما تكون رؤية العديد من تجزئة أخطاء كما كنت 400 00:20:17,990 --> 00:20:20,530 تنفيذ بعض مجموعات المشكلة. 401 00:20:20,530 --> 00:20:24,950 ولكن هذا هو واحد من الطرق التي يمكنك لقاء تجزئة 402 00:20:24,950 --> 00:20:28,540 خطأ عند بدء الدخول الذاكرة بطرق لا ينبغي أن يكون. 403 00:20:28,540 --> 00:20:34,117 لذلك لم يكن لدينا إمكانية الوصول إلى هذا الموقع وهذا خطأ. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> لذلك هذا هو أفضل. 406 00:20:40,190 --> 00:20:45,820 الآن لا يزال هناك صغيرة مشكلة مع هذا الرمز. 407 00:20:45,820 --> 00:20:50,720 وهذا في الأساس هو أننا لا تزال عالقة في أربعة طلاب. 408 00:20:50,720 --> 00:20:52,940 الآن إذا أريد استخدام ثمانية طلاب، OK. 409 00:20:52,940 --> 00:20:54,350 انها ليست صفقة كبيرة. 410 00:20:54,350 --> 00:20:58,120 يمكنني أن أذهب في، تغيير التعليق، وتغيير ن. 411 00:20:58,120 --> 00:20:59,760 الآن هذا العمل مع ثمانية طلاب. 412 00:20:59,760 --> 00:21:02,190 إذا كنت تجميع هذا وتشغيل هذا، وسوف تظهر me-- 413 00:21:02,190 --> 00:21:07,870 وسوف يطلب من الأعداد الصحيحة لمدة ثمانية طلاب وأنها ستعمل فقط. 414 00:21:07,870 --> 00:21:11,850 لكنه أقل من مثالية في حاجة ل إعادة ترجمة البرنامج في كل مرة واحد 415 00:21:11,850 --> 00:21:15,960 أريد تغيير عدد من الطلاب أريد أن أدخل الأعمار ل. 416 00:21:15,960 --> 00:21:22,990 >> وبالتالي فإن تحسين النهائي على هذا، كما سنرى here-- نحن 417 00:21:22,990 --> 00:21:26,177 الذهاب لطلب عدد من الناس. 418 00:21:26,177 --> 00:21:28,010 هنا لدينا عدد من الناس في غرف 419 00:21:28,010 --> 00:21:29,880 أو أي الأعمار من الناس في الغرفة. 420 00:21:29,880 --> 00:21:33,300 ولكن نحن في طريقنا لطلب رقم من الناس في الغرفة من المستخدم. 421 00:21:33,300 --> 00:21:36,171 لذلك هذا هو بالضبط نفس افعل حين الحلقة التي شهدناها من قبل. 422 00:21:36,171 --> 00:21:37,920 انها بالضبط نفس افعل حين حلقة أنك 423 00:21:37,920 --> 00:21:40,050 يمكن تنفيذ على مجموعة المشكلة. 424 00:21:40,050 --> 00:21:43,102 وطالما انهم ندخل ن أقل من 1، 425 00:21:43,102 --> 00:21:45,310 لذلك لا بد من أن تكون على شخص واحد على الأقل في الغرفة. 426 00:21:45,310 --> 00:21:47,407 طالما انهم ندخل ن أقل من 1، 427 00:21:47,407 --> 00:21:48,990 ثم نحن في طريقنا للحفاظ يسأل مرة أخرى. 428 00:21:48,990 --> 00:21:50,906 الرجاء إدخال الرقم من الناس في الغرفة. 429 00:21:50,906 --> 00:21:53,550 الآن، مرة واحدة لدينا عدد الناس في room-- 430 00:21:53,550 --> 00:21:58,020 لذلك أنا قد تدخل أن هناك هم 200 شخص في هذه الغرفة. 431 00:21:58,020 --> 00:22:05,480 ثم إلى هنا ونحن في طريقنا للحضور وأعلن مجموعة من حجم 200. 432 00:22:05,480 --> 00:22:10,220 نحن تعلن مجموعة هذا تتسع ل200 الأعمار. 433 00:22:10,220 --> 00:22:15,370 نازلة، انها لحلقة أنك لن تحصل جدا تستخدم ل. 434 00:22:15,370 --> 00:22:19,490 هكذا بالتكرار عبر هذه المجموعة، تكليف كل مكان 435 00:22:19,490 --> 00:22:23,020 في ذلك مجموعة عدد صحيح، و ثم في نهاية المطاف هنا نحن 436 00:22:23,020 --> 00:22:28,340 مجرد الحصول على مثال بالتكرار على أن مجموعة، وليس لتعيين قيم، 437 00:22:28,340 --> 00:22:30,150 ولكن للوصول إلى القيم. 438 00:22:30,150 --> 00:22:33,810 >> حتى هنا نرى أننا يقولون، بعد عام من الآن، 439 00:22:33,810 --> 00:22:40,470 الشخص٪ وسوف تكون٪ ط عاما، حيث أول٪ ط ط هو زائد 1. 440 00:22:40,470 --> 00:22:43,010 لذلك أنا هو هذا المتغير المؤشر. 441 00:22:43,010 --> 00:22:49,420 و٪ ط الثانية ستكون في القيمة المخزنة في العصور مجموعة زائد 1. 442 00:22:49,420 --> 00:22:54,217 لذلك هذا زائد 1 هو لمجرد أننا saying-- هذا زائد 1، الذين تتراوح أعمارهم ط زائد 1. 443 00:22:54,217 --> 00:22:57,050 هذا بالإضافة إلى 1 هي لمجرد أننا قائلا: بعد عام من الآن الشخص 444 00:22:57,050 --> 00:22:58,280 سيكون هذا العمر. 445 00:22:58,280 --> 00:23:01,080 >> فلماذا هذا الذي زائد 1؟ 446 00:23:01,080 --> 00:23:04,064 لماذا لدينا زائد 1 هناك؟ 447 00:23:04,064 --> 00:23:04,564 نعم. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 نعم. 450 00:23:07,930 --> 00:23:10,510 لذا تذكر صفائف المفهرسة الصفر. 451 00:23:10,510 --> 00:23:14,840 لذلك إذا أردنا طباعة هذا الخروج ل شخص ما لمجرد قراءة الإخراج، 452 00:23:14,840 --> 00:23:19,380 ثم ربما أنها تريد أن ترى شيئا مثل شخص واحد، شخص ورقم واحد، 453 00:23:19,380 --> 00:23:21,160 سيكون 20 سنة. 454 00:23:21,160 --> 00:23:23,570 والشخص الثاني يكون عمره 15 عاما. 455 00:23:23,570 --> 00:23:27,420 أنها تفضل عدم رؤية شخص الرقم صفر هو 15 سنة. 456 00:23:27,420 --> 00:23:36,460 >> حتى إعداد هذا ومجرد رؤية ما يبدو like-- خلق بعض المساحة. 457 00:23:36,460 --> 00:23:43,560 جعل الأعمار برمجيا. 458 00:23:43,560 --> 00:23:45,080 تشغيل الأعمار. 459 00:23:45,080 --> 00:23:46,580 ونحن نرى عدد الأشخاص في الغرفة. 460 00:23:46,580 --> 00:23:48,850 لذلك أنا أقول هناك ثلاثة أشخاص في الغرفة. 461 00:23:48,850 --> 00:23:54,000 عمر الشخص رقم واحد، دعنا نقول 15، 20، 25. 462 00:23:54,000 --> 00:23:59,680 والآن أنا أقول سنويا من الآن أنها ستكون 16، 21، 26. 463 00:23:59,680 --> 00:24:02,900 دعونا نرى أن هذا يعمل مع ون أن لا يساوي 3. 464 00:24:02,900 --> 00:24:07,940 لذلك إذا قلت عدد من الناس هو 5، واحد، اثنان، ثلاثة، اثنان، واحد، بعد عام من الآن 465 00:24:07,940 --> 00:24:11,170 أنها سوف تكون اثنان، ثلاثة، أربعة، ثلاثة، تبلغ من العمر عامين. 466 00:24:11,170 --> 00:24:16,500 حتى أتمكن تماما كما بسهولة ون يكون 10000. 467 00:24:16,500 --> 00:24:21,270 الآن سوف أكون جالسا هنا لفترة طويلة حين دخول الأعمار، ولكن هذا يعمل. 468 00:24:21,270 --> 00:24:26,000 >> وحتى الآن في الذاكرة مكان ما لدينا مجموعة من حجم 10000، 469 00:24:26,000 --> 00:24:28,830 حتى في نهاية المطاف 40000 بايت، لأن هناك 470 00:24:28,830 --> 00:24:31,222 أربعة بايت لكل تلك الأعداد الصحيحة. 471 00:24:31,222 --> 00:24:33,180 لذلك هناك مجموعة من حجم 10،000 حيث يمكننا 472 00:24:33,180 --> 00:24:36,201 تخزين تتراوح أعمارهم من هؤلاء الناس 10،000. 473 00:24:36,201 --> 00:24:36,700 حسنا. 474 00:24:36,700 --> 00:24:40,070 أسئلة حول أي من هذه؟ 475 00:24:40,070 --> 00:24:41,892 نعم. 476 00:24:41,892 --> 00:24:43,350 ماذا لو أعطيته رقم سالب؟ 477 00:24:43,350 --> 00:24:44,870 دعونا نرى ما سيحدث. 478 00:24:44,870 --> 00:24:49,320 حتى في هذا العدد case-- معين من الناس في الغرفة، والآخر سلبي. 479 00:24:49,320 --> 00:24:52,580 ورفضت ذلك، لأن هنا نحن نحدث 480 00:24:52,580 --> 00:24:57,180 أن التعامل مع حقيقة أنه إذا كان n هو أقل من واحد ونحن ذاهبون لنسأل مرة أخرى. 481 00:24:57,180 --> 00:25:01,780 إذا حاولت تعلن مجموعة من حجم السلبي، 482 00:25:01,780 --> 00:25:03,950 عموما لا يعمل. 483 00:25:03,950 --> 00:25:05,570 >> لذلك دعونا نحاول. 484 00:25:05,570 --> 00:25:08,000 دعونا نتجاهل أيا كان القيمة التي يدخلونها لن 485 00:25:08,000 --> 00:25:10,571 وأقول الأعمار كثافة العمليات الآخر سلبي. 486 00:25:10,571 --> 00:25:12,410 دعونا نرى ما اذا كان حتى يجمع. 487 00:25:12,410 --> 00:25:14,100 أنا غير متاكد. 488 00:25:14,100 --> 00:25:14,920 لا. 489 00:25:14,920 --> 00:25:18,280 لذلك أعلن الأعمار باعتبارها مجموعة مع حجم سلبي. 490 00:25:18,280 --> 00:25:22,540 مقدما لذلك يقر مجموعة لا يمكن يكون حجم سلبي وترفض ذلك. 491 00:25:22,540 --> 00:25:26,840 الآن، إذا كنا لم يعالجوا هذا افعل حين حلقة بشكل صحيح، 492 00:25:26,840 --> 00:25:28,810 إذا لم نكن فحص إذا كان n أقل من 1-- 493 00:25:28,810 --> 00:25:32,690 دعونا نقول أننا فقط لم يكن لديك هذا على الإطلاق 494 00:25:32,690 --> 00:25:35,940 وبدلا من ذلك نحن مجرد الاستيلاء على عدد صحيح. 495 00:25:35,940 --> 00:25:40,710 بغض النظر عن ما هو صحيح، نعلن مجموعة من هذا الحجم. 496 00:25:40,710 --> 00:25:44,250 >> لذلك لا يمكن للمترجم ربما يشكو الآن. 497 00:25:44,250 --> 00:25:48,780 إذا كنت تجميع this-- لذلك لا يمكن أن يشكو، 498 00:25:48,780 --> 00:25:51,480 لأنه لا يمكن أعلم أنني الذهاب إلى إدخال رقم سالب، 499 00:25:51,480 --> 00:25:52,550 التي قد تكون غير صالحة. 500 00:25:52,550 --> 00:25:54,633 لكل ما يعرف، وأنا قد أدخل رقم موجب، 501 00:25:54,633 --> 00:25:56,000 وهي صالحة تماما. 502 00:25:56,000 --> 00:26:01,090 حتى أستطيع أن أتخيل إذا دخلت سلبي 1 الناس في الغرفة، وتجزئة الخطأ. 503 00:26:01,090 --> 00:26:06,040 >> لذلك، OK. 504 00:26:06,040 --> 00:26:13,160 لذلك دعونا إضافة هذا يعود فقط يبقيه ما كان عليه في الأصل. 505 00:26:13,160 --> 00:26:15,640 وهكذا جعل الأعمار. 506 00:26:15,640 --> 00:26:18,120 الآن إذا كنت أريد أن أحاول ل سلبية age-- لذلك دعونا 507 00:26:18,120 --> 00:26:19,710 أقول أن هناك خمسة أشخاص في الغرفة. 508 00:26:19,710 --> 00:26:23,180 عمر الشخص رقم واحد هو سلبي 4، ثلاثة أشخاص 509 00:26:23,180 --> 00:26:26,500 هو صفر، شخص three-- موافق. 510 00:26:26,500 --> 00:26:29,850 حتى هنا، بعد عام من الآن، عدد شخص واحد سيكون سلبيا 3 سنوات من العمر. 511 00:26:29,850 --> 00:26:32,830 لذلك ربما لا يكون له معنى. 512 00:26:32,830 --> 00:26:37,220 لولكن هذا مجرد النظر في مدونة كل ما تفعلونه 513 00:26:37,220 --> 00:26:40,260 يطلب GetInt. 514 00:26:40,260 --> 00:26:44,110 >> الآن، إذا كان لدينا ل وظيفة GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 أو كان علينا القيام به ببساطة هذه نوع من نفسها حين حلقة هناك، 516 00:26:49,690 --> 00:26:52,340 ثم هذا من شأنه أن تعمل بشكل جيد تماما. 517 00:26:52,340 --> 00:26:54,200 ولكن في هذا الخصوص حالة، ونحن لا فقط 518 00:26:54,200 --> 00:26:57,772 يحدث أن يكون التعامل مع القيم السلبية. 519 00:26:57,772 --> 00:26:59,147 أي أسئلة أخرى حول المصفوفات؟ 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 حسنا. 522 00:27:03,250 --> 00:27:09,380 >> لذلك رأيناه الآن المصفوفات. 523 00:27:09,380 --> 00:27:12,500 ونحن بحاجة الى الذهاب الى استخدام هذا عن وسائط سطر الأوامر. 524 00:27:12,500 --> 00:27:14,680 وذلك في مشكلة تعيين two-- أنا أعرف الكثير منكم 525 00:27:14,680 --> 00:27:18,040 ربما لا تزال تعمل على مجموعة المشكلة واحد، ولكن المشكلة تعيين اثنين هو الخروج. 526 00:27:18,040 --> 00:27:22,260 في مجموعة مشكلة اثنين، وأنت تسير ل تحتاج إلى التعامل مع الجمل، والمصفوفات، 527 00:27:22,260 --> 00:27:23,950 وسائط سطر الأوامر. 528 00:27:23,950 --> 00:27:26,270 >> فما هي الحجج سطر الأوامر؟ 529 00:27:26,270 --> 00:27:29,570 الآن، يمكنك ان ترى أسفل هنا دعابة قليلا عن بالضبط ما هو 530 00:27:29,570 --> 00:27:30,950 على وشك أن يحدث. 531 00:27:30,950 --> 00:27:32,950 ونحن نرى كثافة العمليات الرئيسي، ARGC المؤتمر الوطني العراقي، بين قوسين سلسلة ARGV. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 لذلك دعونا أولا محاولة تفسير ما أن يحاول أن يقول. 534 00:27:38,130 --> 00:27:40,800 الآن لابأس. 535 00:27:40,800 --> 00:27:44,637 >> حتى في سطر الأوامر يجب أن تكون التعود على بعض من هذه الأوامر 536 00:27:44,637 --> 00:27:48,580 الآن، وربما كنت قد تشغيل مؤتمر نزع السلاح في المحطة قبل. 537 00:27:48,580 --> 00:27:52,100 حتى لو قلنا مؤتمر نزع السلاح pset1، كنت أعرف أن ذلك ينبغي 538 00:27:52,100 --> 00:27:55,050 يكون تغيير إلى الدليل pset1. 539 00:27:55,050 --> 00:27:59,120 >> لاحظ الآن أن قمت أبدا كتب برنامج مثل هذا من قبل. 540 00:27:59,120 --> 00:28:03,120 كل البرنامج الذي كنت قد كتبت، كنت تشغيل، مثلا، دوت خفض ماريو، 541 00:28:03,120 --> 00:28:06,779 نقطة خفض الجشع، وبعد ذلك قد يطالبك الإدخال. 542 00:28:06,779 --> 00:28:08,570 الآن، هذا ليس ما لا تغيير الدليل. 543 00:28:08,570 --> 00:28:12,770 عند تشغيل القرص المضغوط، فإنه لا يقول بعد ذلك، الدليل الذي تريد لمؤتمر نزع السلاح في؟ 544 00:28:12,770 --> 00:28:17,200 بدلا من ذلك، كنت أقول، مؤتمر نزع السلاح pset1، و وغني فقط إلى الدليل pset1. 545 00:28:17,200 --> 00:28:20,430 >> لذلك بالمثل لدينا أمثلة أخرى. 546 00:28:20,430 --> 00:28:21,540 جعل مرحبا. 547 00:28:21,540 --> 00:28:25,760 عند تشغيل جعل، فإنه لا يقول بعد ذلك، البرنامج الذي تريد أن تجعل؟ 548 00:28:25,760 --> 00:28:29,620 كنت أقول، في سطر الأوامر تجعل مرحبا. 549 00:28:29,620 --> 00:28:31,060 >> الخطوة مثالا آخر. 550 00:28:31,060 --> 00:28:34,840 هذا واحد أننا نسير على mario.c ملف حتى دليل واحد. 551 00:28:34,840 --> 00:28:38,060 حتى الآن نحن نعرف مع هذا المثال نحن يمر حقا حجتين. 552 00:28:38,060 --> 00:28:42,090 هناك mario.c كما الوسيطة الأولى، ونقطة نقطة هي الحجة الثانية. 553 00:28:42,090 --> 00:28:46,140 ثم عند تشغيل جعل، ل نرى هذا الأمر طويلا حقا line-- 554 00:28:46,140 --> 00:28:50,580 هذا الأمر طويلا حقا طبع في سطر الأوامر. 555 00:28:50,580 --> 00:28:53,590 بحيث command-- طويلة هذا هو مجرد جزء قصير منه، 556 00:28:53,590 --> 00:28:56,090 ولكن الآن لدينا ثلاثة وسائط سطر الأوامر. 557 00:28:56,090 --> 00:28:59,750 نقطة شرطة الصفر، مرحبا، وhello.c. 558 00:28:59,750 --> 00:29:03,497 >> لذلك فان هذه هي سطر الأوامر الحجج، والحجج 559 00:29:03,497 --> 00:29:05,580 ان كنت تمر في سطر الأوامر بحيث 560 00:29:05,580 --> 00:29:08,680 ليس من الضروري أن تتم مطالبتك عند تشغيل البرنامج. 561 00:29:08,680 --> 00:29:13,090 وسيكون محبطا إذا عندما وقال أنه تشغيلك رنة، "حسنا، 562 00:29:13,090 --> 00:29:15,630 التي program-- التي ملف أنك بجمع؟ 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 ما الذي الأعلام ترغب في الدخول؟ اندفاعة س. 565 00:29:19,440 --> 00:29:21,190 ماذا تريد ملف ليتم استدعاؤها؟ 566 00:29:21,190 --> 00:29:21,690 مرحبا. 567 00:29:21,690 --> 00:29:25,290 لا، أنت فقط تشغيل رنة اندفاعة س مرحبا hello.c. 568 00:29:25,290 --> 00:29:28,820 >> لذلك إذا نظرنا إلى الوراء في هذا. 569 00:29:28,820 --> 00:29:32,920 الآن ARGC argc-- هو التهم حجة. 570 00:29:32,920 --> 00:29:36,620 انها عددا من سطر الأوامر دخلت الحجج في سطر الأوامر. 571 00:29:36,620 --> 00:29:39,720 حسنا، من الناحية الفنية argv-- الخامس لتقف على ناقلات، 572 00:29:39,720 --> 00:29:41,460 وهو ما يعني أساسا مجموعة. 573 00:29:41,460 --> 00:29:42,680 ولكن يمكنك تجاهل ذلك. 574 00:29:42,680 --> 00:29:47,540 Argv-- لدينا سلسلة ARGV، لذلك بين قوسين سلسلة ARGV. 575 00:29:47,540 --> 00:29:50,150 لذلك هذا هو شكل آخر من أشكال أقواس كنت لم أر من قبل. 576 00:29:50,150 --> 00:29:52,300 قوس حتى رأيناه تدوين عندما قلنا، 577 00:29:52,300 --> 00:29:53,970 مثل، سلسلة الصورة يساوي Zamyla. 578 00:29:53,970 --> 00:29:56,910 الصورة قوس 0 بالوصول إلى Z. شخصية 579 00:29:56,910 --> 00:30:00,720 >> لقد رأينا أيضا بين قوسين عندما قلنا الباحث الأعمار قوس 5. 580 00:30:00,720 --> 00:30:03,160 الذي أعلن مجموعة من حجم 5. 581 00:30:03,160 --> 00:30:06,280 حتى هنا هو نسخة من بين قوسين نحن لم نر من قبل. 582 00:30:06,280 --> 00:30:09,630 لذلك هذا النوع من سلسلة ARGV أن أن يكون على دراية تماما 583 00:30:09,630 --> 00:30:12,050 أنه سيكون مجرد سلسلة. 584 00:30:12,050 --> 00:30:14,520 الآن تشير الأقواس أن هذه صفيف. 585 00:30:14,520 --> 00:30:19,920 لذلك بين قوسين سلسلة ARGV الوسائل أن ARGV هو مجموعة من السلاسل. 586 00:30:19,920 --> 00:30:22,540 الآن تقنيا سلسلة هو مجموعة من الأحرف. 587 00:30:22,540 --> 00:30:26,400 لذلك هذا هو الآن مجموعة من مجموعة من الأحرف. 588 00:30:26,400 --> 00:30:31,490 ولكن انه من الاسهل بكثير للتفكير هذا صفيف فقط من السلاسل. 589 00:30:31,490 --> 00:30:34,900 >> فلماذا قد تكون الأقواس فارغة؟ 590 00:30:34,900 --> 00:30:38,170 مثل، لماذا لا يمكننا أن نقول، قوس 5، قوس ن؟ 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 نعم. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 نعم. 595 00:30:44,230 --> 00:30:46,396 نحن لا نعرف كم عدد المدخلات هناك سيكون. 596 00:30:46,396 --> 00:30:53,560 لذلك إذا نظرنا إلى المثال رنة، نحن نقول رنة شرطة س مرحبا hello.c. 597 00:30:53,560 --> 00:30:56,710 في هذه الحالة بالذات، يحدث هناك أن تكون ثلاث وسائط سطر الأوامر. 598 00:30:56,710 --> 00:31:00,522 وهكذا brackets-- سنرى في الثانية أنه لن يكون من الثلاثة. 599 00:31:00,522 --> 00:31:01,730 فنيا سيكون الأربعة. 600 00:31:01,730 --> 00:31:04,030 ولكن بين قوسين، كنا مثلا، هناك ثلاثة. 601 00:31:04,030 --> 00:31:08,220 ولكن الآن إذا نظرنا إلى الخطوة mario.c نقطة نقطة، الأقواس 602 00:31:08,220 --> 00:31:09,760 كنا نريد أن نضع اثنين في نفوسهم. 603 00:31:09,760 --> 00:31:12,884 >> وهناك الكثير من الأوامر التي لدينا عدد متغير من سطر الأوامر 604 00:31:12,884 --> 00:31:13,620 الحجج. 605 00:31:13,620 --> 00:31:17,430 فما هذا الإصدار من يشير تدوين قوس 606 00:31:17,430 --> 00:31:20,820 غير أن ARGV هو مجموعة من السلاسل. 607 00:31:20,820 --> 00:31:24,360 لكننا لا نعرف كم عدد السلاسل في ذلك مجموعة. 608 00:31:24,360 --> 00:31:27,090 وكيف لنا بعد ذلك أعرف كيف العديد من السلاسل في المصفوفة؟ 609 00:31:27,090 --> 00:31:28,870 هذا هو ARGC القصيد. 610 00:31:28,870 --> 00:31:32,300 ARGC يخبرنا متى ARGV هو. 611 00:31:32,300 --> 00:31:36,500 >> وبالتالي فإن آخر شيء أن نأخذ في العقل هو أنه، من الناحية الفنية، 612 00:31:36,500 --> 00:31:40,820 الأمر نفسه التهم واحدة من وسائط سطر الأوامر. 613 00:31:40,820 --> 00:31:45,330 لذلك مؤتمر نزع السلاح pset1، وهناك نوعان وسائط سطر الأوامر. 614 00:31:45,330 --> 00:31:50,260 البرنامج في حد ذاته، مؤتمر نزع السلاح، ومن ثم الجزء حجة الفعلي منه، pset1. 615 00:31:50,260 --> 00:31:54,490 أي برنامج كنت قد كتبت حتى الآن وقد كان خط أمر واحد argument-- نقطة 616 00:31:54,490 --> 00:31:55,320 خفض ماريو. 617 00:31:55,320 --> 00:31:57,350 هذا هو فقط وسيطة سطر الأوامر. 618 00:31:57,350 --> 00:32:00,900 >> تبحث حتى الآن في رنة اندفاعة س مرحبا hello.c. 619 00:32:00,900 --> 00:32:01,905 فما هو ARGC؟ 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4. 622 00:32:06,080 --> 00:32:08,140 حتى ARGC هو 4. 623 00:32:08,140 --> 00:32:12,140 رنة، قوس ARGV ذلك 0 ورنة. 624 00:32:12,140 --> 00:32:15,630 ARGV قوس 1 هو اندفاع 0. 625 00:32:15,630 --> 00:32:21,870 ARGV قوس 2 هو مرحبا، و ARGV قوس 3 هو hello.c. 626 00:32:21,870 --> 00:32:26,813 OK، من الأسئلة حول هذا الموضوع، وبعد ذلك سوف نقوم نلقي نظرة على بعض الأمثلة البرمجية. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> حسنا. 629 00:32:30,480 --> 00:32:36,260 ولذا فإننا سوف نلقي نظرة على hello3.c. 630 00:32:36,260 --> 00:32:41,890 هذا ما ينبغي أن يكون على دراية من أحد الأمثلة ج الأولى 631 00:32:41,890 --> 00:32:45,800 كان لدينا حيث كنا نقول فقط، مرحبا العالم، ولكن الآن هذا هو أعم. 632 00:32:45,800 --> 00:32:52,300 حتى هنا نحن نقول مرحبا ٪ الصورة مائل ن ARGV قوس 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- ذلك حتى هذه النقطة، وهذا هو ما بدا لي ملف قالب مثل. 634 00:32:57,440 --> 00:33:01,800 كان لي كثافة العمليات الرئيسي (الفراغ)، ثم أود تفعل شيئا في الوظيفة الرئيسية. 635 00:33:01,800 --> 00:33:05,100 الآن بدلا من ذلك، عندما نبدأ التعامل مع وسائط سطر الأوامر، 636 00:33:05,100 --> 00:33:07,890 نحن بحاجة لدولة ل شكل مختلف من الرئيسية. 637 00:33:07,890 --> 00:33:11,930 >> حتى النظر في hello3 مرة أخرى، وأهم يجري 638 00:33:11,930 --> 00:33:15,990 لاخذ اثنين من الحجج now-- الباحث ARGC، عدد وسائط سطر الأوامر، 639 00:33:15,990 --> 00:33:20,970 وسلسلة ARGV بين قوسين، والفعلية دخلت السلاسل في سطر الأوامر. 640 00:33:20,970 --> 00:33:26,560 لذلك أنا ذاهب لتغيير ذلك قالب لتعكس هذا الواقع. 641 00:33:26,560 --> 00:33:29,060 الآن كلما تكتب برنامج، إذا كنت لا 642 00:33:29,060 --> 00:33:33,720 تحتاج إلى اتخاذ أي سطر الأوامر الحجج، ثم مجرد استخدام كثافة العمليات الرئيسي (الفراغ). 643 00:33:33,720 --> 00:33:37,070 ولكن الآن عندما كنت تكتب برامج وسيطة سطر الأوامر، التي 644 00:33:37,070 --> 00:33:40,350 كنت تنوي أن تفعل لمشكلة تعيين two-- حتى الآن بعد أن كنت تقوم بتشغيل 645 00:33:40,350 --> 00:33:42,630 البرامج التي تحتاج إلى اتخاذ وسائط سطر الأوامر، 646 00:33:42,630 --> 00:33:45,250 تحتاج إلى أن يكون أهم من هذا النموذج. 647 00:33:45,250 --> 00:33:51,290 >> حتى here-- هذا هو الاستخدام الكبير من وسيطة سطر الأوامر. 648 00:33:51,290 --> 00:33:54,100 حتى طباعة ARGV 1. 649 00:33:54,100 --> 00:33:59,180 OK لذلك دعونا تجميع وتشغيل هذا البرنامج. 650 00:33:59,180 --> 00:34:02,440 جعل hello3. 651 00:34:02,440 --> 00:34:03,570 يجمع. 652 00:34:03,570 --> 00:34:06,870 نقطة خفض hello3. 653 00:34:06,870 --> 00:34:08,920 ودعنا نقول، "روب". 654 00:34:08,920 --> 00:34:10,760 مرحبا روب. 655 00:34:10,760 --> 00:34:14,940 إذا قلت، "مرحبا ماريا،" مرحبا ماريا. 656 00:34:14,940 --> 00:34:15,719 مرحبا ماريا. 657 00:34:15,719 --> 00:34:18,639 هانا لا يزال يقول: "مرحبا ماريا "، لأنني لست 658 00:34:18,639 --> 00:34:21,340 فعل أي شيء لدينا ARGV 2. 659 00:34:21,340 --> 00:34:22,590 ARGV 2 الآن سيكون "هانا". 660 00:34:22,590 --> 00:34:25,030 سوف يكون ARGC 3. 661 00:34:25,030 --> 00:34:27,735 ماذا لو فعلت هذا؟ 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 لذلك مرحبا اغية. 664 00:34:34,679 --> 00:34:38,760 >> وتطرق لفترة وجيزة على حقيقة ذلك، من الناحية الفنية، GetString 665 00:34:38,760 --> 00:34:42,429 قد يعود لاغية، لكننا سوف تحصل على الكثير الى ما لاغية هو في الواقع. 666 00:34:42,429 --> 00:34:47,449 ولكن أعتبر كمسألة الحقيقة أنه لا يوجد أمر سيء بشكل عام. 667 00:34:47,449 --> 00:34:50,179 فعلنا شيئا خاطئا إذا انها الطباعة "مرحبا لاغية". 668 00:34:50,179 --> 00:34:52,179 والسبب فعلنا شيئا خاطئا جيدا is--، 669 00:34:52,179 --> 00:34:56,179 عندما ركضت دوت مائل hello3، كان ARGC 1. 670 00:34:56,179 --> 00:34:59,680 وهذا يعني أن طول ARGV 1. 671 00:34:59,680 --> 00:35:05,110 إذا كان الصفيف من طول 1، المؤشر الصحيح الوحيد هو صفر. 672 00:35:05,110 --> 00:35:08,550 وحتى هنا ARGV 1 خارج مجموعة من هذه المجموعة. 673 00:35:08,550 --> 00:35:13,410 كان مماثلا لمن قبل عندما حاولت لتخزين 6 خارج نهاية المصفوفة. 674 00:35:13,410 --> 00:35:18,100 لذلك أنا أحاول الوصول إلى شيء خارج التهم ARGV، 675 00:35:18,100 --> 00:35:21,340 ونحن نحصل على باطل. 676 00:35:21,340 --> 00:35:24,360 >> لذلك أفضل نسخة من هذا، تحسن، 677 00:35:24,360 --> 00:35:27,010 تم فحص ARGC صراحة. 678 00:35:27,010 --> 00:35:33,580 حتى إذا ARGC يساوي 2، وهذا يعني هربنا شيء من هذا القبيل نقطة مائل hello3 روب. 679 00:35:33,580 --> 00:35:36,840 وسوف طباعة "مرحبا روب". 680 00:35:36,840 --> 00:35:39,850 إذا ARGC لا يساوي 2، ثم انها مجرد الذهاب 681 00:35:39,850 --> 00:35:42,560 تجاهل مهما كنت وضعت في وسيطة سطر الأوامر 682 00:35:42,560 --> 00:35:43,960 كوسائط سطر الأوامر. 683 00:35:43,960 --> 00:35:47,168 أو إذا كنت لم تضع أي في كل شيء، مجرد الذهاب إلى تجاهل ذلك، ونقول فقط، 684 00:35:47,168 --> 00:35:47,960 "مرحبا انت." 685 00:35:47,960 --> 00:35:51,490 >> حتى إعداد هذا. 686 00:35:51,490 --> 00:35:54,500 جعل hello4. 687 00:35:54,500 --> 00:35:56,790 وتعمل hello4. 688 00:35:56,790 --> 00:36:00,010 تشغيله بهذه الطريقة، ما يجب أن تكون مطبوعة؟ 689 00:36:00,010 --> 00:36:01,330 "مرحبا انت." 690 00:36:01,330 --> 00:36:02,810 مرحبا انت. 691 00:36:02,810 --> 00:36:05,870 ماذا عن hello4 روب؟ 692 00:36:05,870 --> 00:36:06,950 "مرحبا روب". 693 00:36:06,950 --> 00:36:10,580 وأخيرا، مرحبا روب ماريا هو مجرد "مرحبا أنت" مرة أخرى، 694 00:36:10,580 --> 00:36:13,677 لأنك لم تدخل حقا وهو الأمر الذي من المتوقع. 695 00:36:13,677 --> 00:36:15,510 لقد أدخلت عددا من الأسماء مما كان يمكن التعامل معها، 696 00:36:15,510 --> 00:36:19,500 لذلك تخلفت فقط ل ومرحبا لكم السلوك. 697 00:36:19,500 --> 00:36:23,040 من الأسئلة حول هذا؟ 698 00:36:23,040 --> 00:36:26,290 أو وسائط سطر الأوامر؟ 699 00:36:26,290 --> 00:36:28,690 >> OK، حتى أخذ نظرة على مزيد من الأمثلة زوجين من استخدام 700 00:36:28,690 --> 00:36:34,230 سطر الأوامر arguments-- أولا لقد ARGV اندفاعة 1 نقطة مئوية. 701 00:36:34,230 --> 00:36:38,510 لذا التعليقات التخلي عن ما هذا البرنامج يجب أن تفعل. 702 00:36:38,510 --> 00:36:42,460 ولكن لاحظ now-- هذا للحلقة، هذا يطابق النمط المحدد 703 00:36:42,460 --> 00:36:43,390 كنت أقول من قبل. 704 00:36:43,390 --> 00:36:46,240 نحن يحدث لمجرد أن يكون باستخدام ARGC بدلا من ن. 705 00:36:46,240 --> 00:36:48,880 الآن ARGC هو حقا ن. 706 00:36:48,880 --> 00:36:51,260 انها طول المصفوفة ARGV. 707 00:36:51,260 --> 00:36:59,600 بحيث يتم بالتكرار عبر ARGV مجموعة قيمة كل ARGV جي printf. 708 00:36:59,600 --> 00:37:04,730 >> لذلك إذا قمت بعمل ذلك. 709 00:37:04,730 --> 00:37:08,232 جعل ARGV 1. 710 00:37:08,232 --> 00:37:09,940 وتجمع. 711 00:37:09,940 --> 00:37:11,620 نقطة خفض ARGV 1. 712 00:37:11,620 --> 00:37:15,530 تشغيل فقط هذا، يطبع دوت مائل ARGV 1 713 00:37:15,530 --> 00:37:18,500 منذ أن كان الوحيد سطر الأوامر argument-- اسم البرنامج. 714 00:37:18,500 --> 00:37:22,080 سيكون هناك دائما في least-- ARGC لا يمكن أن يكون أقل من واحد، 715 00:37:22,080 --> 00:37:25,910 وبما أن هناك دائما على الأقل يكون اسم البرنامج لتشغيل. 716 00:37:25,910 --> 00:37:32,040 حتى ARGV 1 سوف روب طباعة ARGV 1 ومن ثم على الخط الجديد "روب". 717 00:37:32,040 --> 00:37:36,350 >> وذلك في التكرار الأول هذه الحلقة، أنا هو 0. 718 00:37:36,350 --> 00:37:39,090 ARGV 0 هو اسم البرنامج. 719 00:37:39,090 --> 00:37:40,010 نقطة خفض ARGV 1. 720 00:37:40,010 --> 00:37:43,770 ثم ARGV 1 هي المرة الأولى وسيطة سطر الأوامر، وهو روب. 721 00:37:43,770 --> 00:37:45,920 عند هذه النقطة، نحن متساوون في ARGC. 722 00:37:45,920 --> 00:37:48,210 نحن خروج من حلقة وننتهي. 723 00:37:48,210 --> 00:37:53,940 لذلك هذا سنعمل لتحقيق تعسفيا عدد من وسائط سطر الأوامر. 724 00:37:53,940 --> 00:37:58,550 لاحظ أنه يطبع ARGV 0، ARGV 1، 2 ARGV، ARGV 3، 4 ARGV. 725 00:37:58,550 --> 00:38:00,150 وليس هناك ARGV 5. 726 00:38:00,150 --> 00:38:01,460 ARGC يساوي 5. 727 00:38:01,460 --> 00:38:06,960 حتى في argc-- في الاول يساوي 5، نحن الخروج من الحلقة. 728 00:38:06,960 --> 00:38:07,950 حسنا. 729 00:38:07,950 --> 00:38:11,315 من الأسئلة على ذلك قبل أن ننظر إلى مثال أكثر تعقيدا؟ 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> حتى ARGV 2. 732 00:38:16,860 --> 00:38:17,830 حسنا. 733 00:38:17,830 --> 00:38:20,610 لذلك نحن ما زلنا طباعة وسائط سطر الأوامر. 734 00:38:20,610 --> 00:38:23,170 ولكن الآن تلاحظ لدينا متداخلة للحلقة. 735 00:38:23,170 --> 00:38:24,670 فما هو هذا تفعل؟ 736 00:38:24,670 --> 00:38:28,430 حتى الحلقة الأولى يقوم به بالضبط ما فعلت من قبل. 737 00:38:28,430 --> 00:38:30,950 نحن لا نزال حلقات أكثر كل وسيطة سطر الأوامر، 738 00:38:30,950 --> 00:38:34,260 ولكن الآن هذا loop-- الثانية قمنا كما شهدت شيئا مثل هذا من قبل. 739 00:38:34,260 --> 00:38:38,600 عندما كان بالتكرار عبر Zamyla طبع Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 حتى هذه الحلقة الثانية لكثافة العمليات ي يساوي 0، ن يساوي strlen من ARGV قوس ط. 741 00:38:44,816 --> 00:38:49,170 >> لذلك دعونا نفكر أولا ل the-- دعونا من خلال المشي. 742 00:38:49,170 --> 00:38:53,560 دعونا نفكر ما من شأنه الكمبيوتر تفعل إذا ركضت هذا البرنامج كما دوت فقط 743 00:38:53,560 --> 00:38:56,030 خفض ARGV اندفاعة 2. 744 00:38:56,030 --> 00:39:03,590 حتى إذا ركضت هذا الرمز، ثم ARGC سيكون يساوي 1. 745 00:39:03,590 --> 00:39:07,050 وسلسلة argv-- هناك فقط سيكون مؤشر واحد في ARGV، 746 00:39:07,050 --> 00:39:12,370 وهذا سوف يكون مساويا لنقطة خفض ARGV 2-- اسم البرنامج. 747 00:39:12,370 --> 00:39:19,170 >> حسنا، الآن أنا يساوي 0، ط أقل من 1، ط زائد زائد عن الباحث ي يساوي 0، 748 00:39:19,170 --> 00:39:23,880 ن يساوي strlen من ARGV قوس 0، وذلك في التكرار الأول من هذه الحلقة. ARGV 749 00:39:23,880 --> 00:39:27,250 قوس 0 غير مائل دوت ARGV 2. 750 00:39:27,250 --> 00:39:29,320 فما هو طول هذه السلسلة؟ 751 00:39:29,320 --> 00:39:32,480 حسنا، دوت خفض A-R-G-V اندفاعة 2. 752 00:39:32,480 --> 00:39:35,020 لذلك strlen من شأنها أن تكون 8. 753 00:39:35,020 --> 00:39:37,500 لذلك ي يساوي 0، ن يساوي 8. 754 00:39:37,500 --> 00:39:39,530 طالما ي أقل من 8، ي ++. 755 00:39:39,530 --> 00:39:44,080 ومع أننا في طريقنا لتكون طباعة حرف واحد، والتي 756 00:39:44,080 --> 00:39:47,350 غير ARGV قوس قوس ط ي. 757 00:39:47,350 --> 00:39:49,826 >> لذلك أنا الوحيد هو صفر. 758 00:39:49,826 --> 00:39:51,700 لا يزال لدينا واحدة فقط وسيطة سطر الأوامر. 759 00:39:51,700 --> 00:39:53,890 في هذا التكرار الأول من أجل حلقة، ونحن 760 00:39:53,890 --> 00:39:56,950 سيكون الطباعة ARGV قوس قوس 0 0. 761 00:39:56,950 --> 00:39:58,325 ثم ي هو الذهاب الى زيادة. 762 00:39:58,325 --> 00:40:01,650 ونحن في طريقنا للطباعة ARGV قوس قوس 0 1. 763 00:40:01,650 --> 00:40:04,150 ثم ARGV قوس قوس 0 2. 764 00:40:04,150 --> 00:40:09,030 >> لذلك هذا هو أول لقاء لدينا من المصفوفات متعددة الأبعاد. 765 00:40:09,030 --> 00:40:12,770 تذكر في وقت سابق ان قلت أن ARGV من الناحية التقنية 766 00:40:12,770 --> 00:40:15,950 مجموعة من صفائف حرفا. 767 00:40:15,950 --> 00:40:24,360 حتى هنا إذا قلت شيء من هذا القبيل سلسلة ق يساوي ARGV قوس ط، 768 00:40:24,360 --> 00:40:29,590 ثم قلت، ق قوس ي، هذا سيكون قيام بالشيء نفسه. 769 00:40:29,590 --> 00:40:31,960 الآن، كنت قد رأيت الصورة قوس ي من قبل. 770 00:40:31,960 --> 00:40:36,680 أن مجرد الوصول إلى J-عشر حرف من هذه السلسلة. 771 00:40:36,680 --> 00:40:48,010 حتى مع هذا، ونحن الحصول على -ي ال طابع ARGV ط عشر. 772 00:40:48,010 --> 00:40:51,450 >> وذلك ما ينبغي هذا الناتج في نهاية المطاف؟ 773 00:40:51,450 --> 00:40:53,210 جعل ARGV 2. 774 00:40:53,210 --> 00:40:54,730 وتجمع. 775 00:40:54,730 --> 00:40:56,340 نقطة خفض ARGV 2. 776 00:40:56,340 --> 00:41:03,790 "روب ماريا هانا" وتعطينا بعض الغرف. 777 00:41:03,790 --> 00:41:07,050 لذلك نحن نرى أن هذا هو إخراج نقطة على السطر الخاص به ومائل 778 00:41:07,050 --> 00:41:08,920 على خط خاص به وعلى السطر الخاص به. 779 00:41:08,920 --> 00:41:11,260 انها طبع كل الطابع الفردي 780 00:41:11,260 --> 00:41:12,950 كل وسيطة سطر الأوامر. 781 00:41:12,950 --> 00:41:15,960 وبعد ذلك بينهما، بسبب هذا الخط الجديد 782 00:41:15,960 --> 00:41:19,380 نحن الطباعة إلى هنا، في بين لهم أنه سوف طباعة سطر جديد. 783 00:41:19,380 --> 00:41:24,540 >> لذلك هذا هو مماثل ل وARGV اندفاعة السابقة 1، 784 00:41:24,540 --> 00:41:26,459 الذي طبع كل وسيطة سطر الأوامر، 785 00:41:26,459 --> 00:41:28,500 ولكن الآن نحن الطباعة وسائط سطر الأوامر 786 00:41:28,500 --> 00:41:31,950 ثم بالتكرار عبر كل شخصية كل وسيطة سطر الأوامر 787 00:41:31,950 --> 00:41:35,400 للحصول على هذا الانتاج. 788 00:41:35,400 --> 00:41:36,870 موافق؟ 789 00:41:36,870 --> 00:41:40,570 من الأسئلة حول هذا؟ 790 00:41:40,570 --> 00:41:45,130 >> شيء واحد هو أن نلاحظ أن سطر الأوامر arguments-- 791 00:41:45,130 --> 00:41:49,990 حتى يفصل بينهما مسافات كما تتوقعون من الطبيعي لها أن تكون. 792 00:41:49,990 --> 00:41:53,050 لذلك يمكن أن يكون سلسلة مسافات فيه. 793 00:41:53,050 --> 00:41:57,380 انها ليست فائقة الأهمية، ولكن إذا أنا أراد ثالثة وسيطة سطر الأوامر 794 00:41:57,380 --> 00:42:01,226 أن يكون لها مساحة في ذلك، ثم أنا يمكن القول بشيء من هذا القبيل. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 موافق؟ 797 00:42:05,550 --> 00:42:12,190 لذلك هذا الآن لا يزال لديه ثلاثة فقط سطر الأوامر arguments-- جيدا 4. 798 00:42:12,190 --> 00:42:17,620 نقطة خفض ARGV اندفاعة 2، روب، ماريا، وهانا بلومبرغ. 799 00:42:17,620 --> 00:42:18,320 حسنا. 800 00:42:18,320 --> 00:42:19,310 أسئلة حول هذا؟ 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> لا يوجد شيء خاص عن مسافة. 803 00:42:24,894 --> 00:42:27,810 انه يحدث لمجرد أن أن سطر الأوامر يعامل حرف مسافة 804 00:42:27,810 --> 00:42:29,226 كما كيف فصل كل حجة. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 حسنا. 807 00:42:33,000 --> 00:42:39,950 حتى ذلك الحين مجموعة مشكلة two-- وأنت تسير أن يكون 808 00:42:39,950 --> 00:42:43,240 أبحث في التشفير سر مفتاح. 809 00:42:43,240 --> 00:42:47,700 لذلك، على غرار هذا المثال رأينا من قصة عيد الميلاد، 810 00:42:47,700 --> 00:42:52,840 كنت على وشك أن تنفيذ بعض خوارزميات أنه بالنظر رسالة، 811 00:42:52,840 --> 00:42:55,560 وأنت تسير لتكون قادرة لتشفير هذه الرسالة 812 00:42:55,560 --> 00:42:58,730 أن شخصا فقط مع هذا السر مفتاح، مع أن حلقة فك، 813 00:42:58,730 --> 00:43:01,090 يجب أن تكون قادرة على فك تشفير. 814 00:43:01,090 --> 00:43:04,839 >> لذلك هذا هو الإصدار القياسي. 815 00:43:04,839 --> 00:43:07,130 كنت على وشك أن تنفيذ نسختين مختلفتين. 816 00:43:07,130 --> 00:43:09,620 إذا كنت يحدث لنلقي نظرة في الهاكر الإصدار المميز الآن، 817 00:43:09,620 --> 00:43:12,600 ونحن في طريقنا لإعطاء لكم سلسلة من هذا القبيل، 818 00:43:12,600 --> 00:43:15,240 وهو ما يمثل كلمة السر المشفرة. 819 00:43:15,240 --> 00:43:19,990 لذلك هدفك هو لمعرفة ما هي كلمة السر فك شفرة. 820 00:43:19,990 --> 00:43:26,950 الآن هذا هو في الواقع كيف كلمات السر يتم تخزينها في الكثير من أجهزة الكمبيوتر، 821 00:43:26,950 --> 00:43:31,290 ويقوم بتخزين هذا فقط سلسلة من الأحرف العشوائية. 822 00:43:31,290 --> 00:43:34,440 لديك لمعرفة كيفية الحصول على من هذه السلسلة من الأحرف العشوائية 823 00:43:34,440 --> 00:43:36,140 لما كانت كلمة السر الأصلية. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> وأخيرا، وبعد هذا مجموعة المشكلة، يجب عليك 826 00:43:43,290 --> 00:43:46,100 تكون قادرة على فهم ما يعنيه هذا. 827 00:43:46,100 --> 00:43:51,650 لذلك سوف نتعلم كيفية فك تشفير هذا النوع من سلسلة عشوائية. 828 00:43:51,650 --> 00:43:56,390 وبالمثل، إذا كنت تتذكر من أسبوع 0، كنت قد رأيت هذا URL. 829 00:43:56,390 --> 00:44:00,210 ويجب أن تكون قادرة على فك تشفير هذه في نهاية المطاف. 830 00:44:00,210 --> 00:44:04,810 قد لا تكون سعيدة عندما كنت فك تشفير وانقر على الرابط. 831 00:44:04,810 --> 00:44:05,700 حسنا. 832 00:44:05,700 --> 00:44:06,591 هذا كل شيء لهذا اليوم. 833 00:44:06,591 --> 00:44:12,095 حتى أراك الأسبوع المقبل! 834 00:44:12,095 --> 00:44:18,315 >> [عزف الموسيقى الإلكترونية] 835 00:44:18,315 --> 00:47:15,619