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