1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [موسيقى] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> ديفيد جيه مالان: كل الحق، وهذا هو CS50. 5 00:00:16,240 --> 00:00:18,010 وهذا هو أسبوع واحد. 6 00:00:18,010 --> 00:00:22,050 لذلك أذكر أن آخر مرة في الأسبوع الصفر، ركزنا على التفكير الحسابي. 7 00:00:22,050 --> 00:00:25,440 ونحن انتقلت من أن ل الصفر، برمجة رسومية 8 00:00:25,440 --> 00:00:27,360 لغة من أصدقائنا في مختبر معهد ماساتشوستس للتكنولوجيا وسائل الإعلام. 9 00:00:27,360 --> 00:00:31,730 >> ومع خدش، لم نستكشف أفكار مثل وظائف، والظروف، 10 00:00:31,730 --> 00:00:35,210 والحلقات، والمتغيرات، وحتى أحداث، والمواضيع، وأكثر من ذلك. 11 00:00:35,210 --> 00:00:37,880 واليوم، ونحن في طريقنا ل الاستمرار في استخدام تلك الأفكار، 12 00:00:37,880 --> 00:00:40,630 وحقا نقلهم ل منح، ولكن ترجمتها 13 00:00:40,630 --> 00:00:44,220 إلى لغة أخرى تعرف باسم جيم الآن، C هي لغة أكثر تقليدية. 14 00:00:44,220 --> 00:00:46,020 انها مستوى أقل لغة، اذا صح التعبير. 15 00:00:46,020 --> 00:00:47,300 >> انها نصية بحتة. 16 00:00:47,300 --> 00:00:49,910 وذلك لأول وهلة، انها كل ذاهب للبحث خفي بدلا 17 00:00:49,910 --> 00:00:51,430 إذا كنت قد برمجت لم يحدث من قبل. 18 00:00:51,430 --> 00:00:53,530 ونحن في طريقنا ل شبه كولون، والأقواس، 19 00:00:53,530 --> 00:00:55,150 والأقواس المعقوفة، وأكثر من ذلك. 20 00:00:55,150 --> 00:00:57,240 ولكن ندرك أنه حتى على الرغم من أن بناء الجملة 21 00:00:57,240 --> 00:01:00,600 على وشك أن ننظر قليلا غير مألوف لمعظمكم، انظر الماضي أن. 22 00:01:00,600 --> 00:01:03,220 ونحاول أن نرى الأفكار التي هي، في الواقع، مألوفة، 23 00:01:03,220 --> 00:01:06,750 لأن هنا في أسبوع واحد ما سنبدأ القيام به هو للمقارنة، 24 00:01:06,750 --> 00:01:08,980 في البداية، خدش مقابل C. 25 00:01:08,980 --> 00:01:12,350 >> لذلك، على سبيل المثال، أذكر أننا عندما تنفيذ أول من برامجنا 26 00:01:12,350 --> 00:01:16,220 آخر مرة، كان لدينا كتلة التي بدت شيئا قليلا مثل this-- عندما 27 00:01:16,220 --> 00:01:19,990 النقر العلم الأخضر، ومن ثم كان لدينا واحد أو أكثر من قطعة اللغز تحتها، 28 00:01:19,990 --> 00:01:22,150 في هذه الحالة، ويقول، مرحبا العالم. 29 00:01:22,150 --> 00:01:24,870 لذلك، في الواقع، في خدش، عندما تنقر على هذا العلم الأخضر 30 00:01:24,870 --> 00:01:27,390 لتشغيل برنامج بلدي، لذلك في الكلام، وهذه هي 31 00:01:27,390 --> 00:01:29,520 الكتل التي الحصول على تنفيذها، أو التشغيل. 32 00:01:29,520 --> 00:01:32,230 وعلى وجه التحديد، خدش وقال، مرحبا، العالم. 33 00:01:32,230 --> 00:01:35,377 >> الآن، أنا يمكن أن يكون محدد كلمات مختلفة هنا. 34 00:01:35,377 --> 00:01:37,960 ولكن سنرى ذلك، في الواقع، العديد هذه blocks-- والواقع، 35 00:01:37,960 --> 00:01:41,880 في C يمكن أن يكون العديد functions-- parametrized أو حسب الطلب 36 00:01:41,880 --> 00:01:43,150 أن تفعل أشياء مختلفة. 37 00:01:43,150 --> 00:01:45,520 في الواقع، في C إذا كنا تريد تحويله، الآن، 38 00:01:45,520 --> 00:01:47,567 هذا البرنامج خدش لهذه اللغة الأخرى، 39 00:01:47,567 --> 00:01:49,650 ونحن في طريقنا لكتابة شيئا قليلا من هذا القبيل. 40 00:01:49,650 --> 00:01:52,540 >> منحت، وهناك بعض غير مألوف تركيب هناك على الأرجح، الباحث، 41 00:01:52,540 --> 00:01:54,380 والأقواس، وباطلة. 42 00:01:54,380 --> 00:01:57,740 لكن printf-- حتى ولو كنت من شأنه أعتقد أنه سيكون مجرد الطباعة. 43 00:01:57,740 --> 00:02:00,120 ولكن الطباعة وسائل الطباعة تنسيق، كما سنرى قريبا. 44 00:02:00,120 --> 00:02:02,140 هذا وسوف طباعة حرفيا إلى الشاشة مهما كان 45 00:02:02,140 --> 00:02:05,990 هو داخل تلك الأقواس، التي بالطبع في هذه الحالة، مرحبا العالم. 46 00:02:05,990 --> 00:02:09,290 >> ولكن ستلاحظ بعض الآخر لغوي، وبعض علامات الاقتباس المزدوجة، 47 00:02:09,290 --> 00:02:11,890 أن الأقواس في النهاية، ومنقوطة، وما شابه ذلك. 48 00:02:11,890 --> 00:02:15,027 لذلك هناك القليل من النفقات العامة، إذا جاز التعبير، على حد سواء معرفيا 49 00:02:15,027 --> 00:02:17,860 ونحويا، وأننا ذاهبون لدينا لنتذكر قبل فترة طويلة. 50 00:02:17,860 --> 00:02:20,720 ولكن ندرك أنه مع الممارسة، هذا سوف تبدأ في القفز في لكم. 51 00:02:20,720 --> 00:02:24,920 >> في الواقع، دعونا نركز على أن واحدا specifically-- وظيفة في هذه الحالة، 52 00:02:24,920 --> 00:02:26,290 ويقول مرحبا العالم. 53 00:02:26,290 --> 00:02:27,560 أقول ذلك هو وظيفة. 54 00:02:27,560 --> 00:02:31,320 مرحبا العالم به المعلمة، أو حجة، والتخصيص لها. 55 00:02:31,320 --> 00:02:34,320 >> والتكافؤ في C فقط سيكون هذا الخط واحد هنا، 56 00:02:34,320 --> 00:02:38,710 حيث printf ما يعادل، ويقول، سلسلة نقلت مزدوجة، مرحبا 57 00:02:38,710 --> 00:02:41,470 العالم ما يعادل، بطبيعة الحال، ما هو في المربع الأبيض هناك. 58 00:02:41,470 --> 00:02:45,680 ون مائل، على الرغم قليلا غريب وغائب من الصفر، 59 00:02:45,680 --> 00:02:49,380 ببساطة سوف يكون له تأثير سنقوم نرى في الكمبيوتر، مثل بلدي ماك أو جهاز كمبيوتر، 60 00:02:49,380 --> 00:02:51,660 من مجرد نقل المؤشر إلى السطر التالي. 61 00:02:51,660 --> 00:02:53,970 انها مثل ضرب أدخل على لوحة المفاتيح. 62 00:02:53,970 --> 00:02:55,580 >> ولذا فإننا سوف نرى ذلك مرة أخرى قبل مرور وقت طويل. 63 00:02:55,580 --> 00:02:58,640 ولكن أولا، دعونا نلقي نظرة على هذا مثال آخر في حالة التكرار. 64 00:02:58,640 --> 00:03:02,830 كان لدينا هذه الحلقة إلى الأبد آخر مرة، التي كانت سلسلة من قطع اللغز 65 00:03:02,830 --> 00:03:05,490 أن فعلت شيئا حرفيا forever-- في هذه الحالة، 66 00:03:05,490 --> 00:03:08,360 أقول، العالم مرحبا، مرحبا العالم، مرحبا العالم، مرحبا العالم. 67 00:03:08,360 --> 00:03:10,350 حتى انها حلقة لا نهائية حسب التصميم. 68 00:03:10,350 --> 00:03:14,580 >> في C، إذا كنا نريد لتنفيذ هذا نفس الفكرة، ونحن قد ببساطة القيام بذلك. 69 00:03:14,580 --> 00:03:19,570 بينما صحيح، printf مرحبا world-- الآن في حين، فقط لغويا، نوع من 70 00:03:19,570 --> 00:03:23,090 تستحضر فكرة القيام شيء مرة أخرى، ومرة ​​أخرى، ومرة ​​أخرى، 71 00:03:23,090 --> 00:03:23,980 وإلى متى؟ 72 00:03:23,980 --> 00:03:27,990 حسنا، أذكر true-- أن صحيح هو مجرد أو واحد. 73 00:03:27,990 --> 00:03:30,660 >> وصحيح هو، بطبيعة الحال، دائما صحيحا. 74 00:03:30,660 --> 00:03:33,060 لذلك فمن نوع من معنى بيان لمجرد أن يقول صحيح. 75 00:03:33,060 --> 00:03:36,890 ولكن في الواقع، وهذا هو متعمد، لأنه إذا كان صحيحا هو مجرد صحيحا دائما، 76 00:03:36,890 --> 00:03:40,850 من حين صحيح يعني فقط، إذا كان قليلا غير مباشرة، 77 00:03:40,850 --> 00:03:44,070 أن الأسطر التالية من التعليمات البرمجية بين تلك الأقواس المجعدة 78 00:03:44,070 --> 00:03:48,320 يجب تنفيذ فقط مرة أخرى، ومرة ​​أخرى، ومرة أخرى، ولم تتوقف أبدا عن الواقع. 79 00:03:48,320 --> 00:03:50,230 >> ولكن إذا كنت لا تريد الخاص بك حلقة لتتوقف، ونحن 80 00:03:50,230 --> 00:03:54,500 لم آخر مرة مع شيء من هذا القبيل هذا، كرر 50 مرات التالية، 81 00:03:54,500 --> 00:03:57,700 في C يمكننا أن نفعل الشيء نفسه مع ما هو ودعا لloop-- الكلمة 82 00:03:57,700 --> 00:03:59,330 لا يجري الوقت، ولكن ل. 83 00:03:59,330 --> 00:04:03,290 ومن ثم لدينا بعض الجملة جديد هنا، مع كثافة العمليات ط يساوي 0، أنا أقل من 50 عاما، 84 00:04:03,290 --> 00:04:03,880 ط ++. 85 00:04:03,880 --> 00:04:05,430 وسوف نعود إلى ذلك. 86 00:04:05,430 --> 00:04:09,660 ولكن هذا هو ببساطة كيف كنا ترجمة مجموعة من القطع خدش 87 00:04:09,660 --> 00:04:13,079 إلى مجموعة من خطوط C من التعليمات البرمجية. 88 00:04:13,079 --> 00:04:14,450 >> وفي الوقت نفسه، والنظر في المتغيرات. 89 00:04:14,450 --> 00:04:16,540 و، في الواقع، نحن فقط رأى واحد قبل لحظة. 90 00:04:16,540 --> 00:04:21,220 وفي حالة خدش، إذا نحن أراد أن يعلن متغير يسمى ط 91 00:04:21,220 --> 00:04:24,590 لأنني يكون صحيحا، مجرد رقم، ونحن نريد أن تعيينها إلى بعض القيمة، 92 00:04:24,590 --> 00:04:28,410 سوف نستخدم هذا البرتقال منع here-- وضع ط 0. 93 00:04:28,410 --> 00:04:30,800 >> وسنرى اليوم و بعدها، تماما مثل الاسبوع الماضي، 94 00:04:30,800 --> 00:04:33,850 المبرمجين تفعل دائما تقريبا بدء العد من الصفر، حقا 95 00:04:33,850 --> 00:04:34,950 بالإقناع. 96 00:04:34,950 --> 00:04:37,250 ولكن أيضا لأن استدعاء من مناقشتنا للثنائي، 97 00:04:37,250 --> 00:04:39,990 أصغر عدد يمكنك تمثل مع أي عدد من البتات 98 00:04:39,990 --> 00:04:41,640 هو مجرد الذهاب إلى تكون 0 في حد ذاته. 99 00:04:41,640 --> 00:04:45,190 وهكذا سنبدأ بشكل عام تهيئة حتى المتغيرات جهدنا ل0. 100 00:04:45,190 --> 00:04:47,710 >> وفي C على أن تحذو حذوها، ونحن في طريقنا إلى القول كثافة العمليات 101 00:04:47,710 --> 00:04:50,110 لعدد صحيح، أنا فقط من الاتفاقية. 102 00:04:50,110 --> 00:04:53,390 كان يمكن أن يسمى هذا المتغير أي شيء أريد، مثلما هو الحال في خدش. 103 00:04:53,390 --> 00:04:57,770 ثم يساوي 0 المتنازل فقط قيمة 0 من الحق 104 00:04:57,770 --> 00:05:01,319 ووضعه في متغير، أو تخزين الحاويات هناك، على اليسار. 105 00:05:01,319 --> 00:05:04,360 ومنقوطة كما سنقوم see-- و رأيناه عدد قليل من هذه already-- 106 00:05:04,360 --> 00:05:06,530 يعني فقط نهاية الفكر. 107 00:05:06,530 --> 00:05:09,430 انتقل إلى القيام بشيء آخر على الخطوط التي تتبع. 108 00:05:09,430 --> 00:05:11,330 >> الآن، ماذا عن التعبيرات المنطقية؟ 109 00:05:11,330 --> 00:05:14,320 أذكر أنه في خدش، كانت هذه العبارات 110 00:05:14,320 --> 00:05:16,740 التي إما أن تكون صحيحة أو أسئلة false--، 111 00:05:16,740 --> 00:05:18,910 حقا، التي إما أن تكون صحيحة أو خاطئة. 112 00:05:18,910 --> 00:05:21,960 حتى في حالة الصفر، ونحن قد طرح سؤال بسيط مثل هذا، 113 00:05:21,960 --> 00:05:24,586 هو أنا أقل من 50؟ 114 00:05:24,586 --> 00:05:25,710 لذلك أنا، مرة أخرى، هو عدد صحيح. 115 00:05:25,710 --> 00:05:27,210 ربما نحن استخدامه في برنامج سكراتش 116 00:05:27,210 --> 00:05:29,310 لمتابعة النتيجة أو شيء من هذا القبيل. 117 00:05:29,310 --> 00:05:33,810 لذلك هذا النحو هنا في سكراتش يعني فقط، هو أنني أقل من 50؟ 118 00:05:33,810 --> 00:05:37,330 حسنا، لحسن الحظ، هناك شيء بسيطة في C. وترجمة، 119 00:05:37,330 --> 00:05:41,780 هذا كنا نقول ببساطة أنا أقل من 50، وذلك باستخدام مفتاح مألوف 120 00:05:41,780 --> 00:05:42,850 على لوحة المفاتيح. 121 00:05:42,850 --> 00:05:45,141 >> وفي الوقت نفسه، إذا أردت أقول شيئا أكثر عمومية، 122 00:05:45,141 --> 00:05:49,890 مثل، حسنا، هو العاشر أقل من y حيث كل x و y هي نفسها المتغيرات؟ 123 00:05:49,890 --> 00:05:52,280 يمكننا أن نفعل نفس الشيء في C، طالما قمنا 124 00:05:52,280 --> 00:05:53,942 إنشاء هذه المتغيرات بالفعل. 125 00:05:53,942 --> 00:05:55,650 وسنرى كيف ل فعل ذلك قبل فترة طويلة. 126 00:05:55,650 --> 00:05:58,590 ونحن نقول ببساطة س أقل من ذ. 127 00:05:58,590 --> 00:06:00,530 >> لذلك كنت بدأت ترى بعض أوجه التشابه. 128 00:06:00,530 --> 00:06:03,490 وهؤلاء الناس الذين جعلوا كانت نقطة الصفر بالتأكيد 129 00:06:03,490 --> 00:06:05,250 مستوحاة من بعض هذه الأفكار الأساسية. 130 00:06:05,250 --> 00:06:10,350 وسترى هذا النوع من بناء الجملة في كثير languages-- 131 00:06:10,350 --> 00:06:12,160 ليس فقط للخدش، وليس فقط C، ولكن بيثون، 132 00:06:12,160 --> 00:06:14,790 وجافا سكريبت، و لغات أخرى لا يزال. 133 00:06:14,790 --> 00:06:18,270 >> دعونا النظر في بناء آخر من C، فكرة وجود الشرط، 134 00:06:18,270 --> 00:06:20,370 تفعل شيئا مشروط. 135 00:06:20,370 --> 00:06:22,720 إذا كان هناك شيء غير صحيح، القيام بذلك. 136 00:06:22,720 --> 00:06:24,457 إذا كان هناك شيء آخر هو الصحيح، أن تفعل ذلك. 137 00:06:24,457 --> 00:06:27,040 انها نوع من البرمجة يعادل مفترق الطريق. 138 00:06:27,040 --> 00:06:29,730 ربما انها اتجاهين شوكة، ثلاثي شوكة، أو أكثر. 139 00:06:29,730 --> 00:06:32,800 وفي خدش، قد يكون لدينا شهدت شيئا من هذا القبيل. 140 00:06:32,800 --> 00:06:34,010 >> لذلك هذا هو واحد كبير واحد. 141 00:06:34,010 --> 00:06:36,750 ولكن النظر في النسبية بساطة المنطق. 142 00:06:36,750 --> 00:06:44,010 إذا كان x أقل من ذ، ثم يقول x هو أقل من ذ، إلا إذا كان x أكبر من ذ، 143 00:06:44,010 --> 00:06:46,230 ثم يقول x هو أكبر من ذ. 144 00:06:46,230 --> 00:06:48,300 وبعد ذلك، منطقيا، إذا كنت تعتقد أن العودة إلى سكراتش 145 00:06:48,300 --> 00:06:52,610 أو مجرد الخاص بك الحدس البشري الخاص، حسنا، إذا كان x ليس أكبر من ذ، و x 146 00:06:52,610 --> 00:06:57,000 ليس أقل من ذ، ثم بالطبع س سوف يكون مساويا لذ. 147 00:06:57,000 --> 00:06:59,690 حتى في هذه الحالة، التي تعشش تلك الكتل خدش، 148 00:06:59,690 --> 00:07:02,580 يمكننا تحقيق ثلاثة طريقة شوكة في الطريق؟ 149 00:07:02,580 --> 00:07:04,980 >> وفي الوقت نفسه، إذا كنا نريد أن فعل ذلك في C، ولكنه يمكن القول 150 00:07:04,980 --> 00:07:08,420 يتطلع simpler-- قليلا على الأقل بمجرد الحصول على دراية بناء الجملة. 151 00:07:08,420 --> 00:07:12,050 إذا كان x أقل من ذ، printf x هو أقل من ذ. 152 00:07:12,050 --> 00:07:16,140 آخر إذا كان x أكبر من ذ، printf x هو أكبر من ذ. 153 00:07:16,140 --> 00:07:21,210 آخر printf س يساوي y-- و، مرة أخرى، مع تلك مائل ينتهي فقط 154 00:07:21,210 --> 00:07:24,160 بالنسبة لأولئك خطوط جديدة بحيث إذا كان ل ركض في الواقع هذا النوع من البرامج 155 00:07:24,160 --> 00:07:25,940 انها ستتحرك فقط المؤشر في نهاية المطاف 156 00:07:25,940 --> 00:07:28,100 إلى السطر التالي من الشاشة. 157 00:07:28,100 --> 00:07:31,270 >> الآن، وكان في الوقت نفسه خدش الآخر المزيد من الميزات المتطورة، فقط 158 00:07:31,270 --> 00:07:34,320 بعض منها ونحن في طريقنا ل نقل في البداية الى عالم C. 159 00:07:34,320 --> 00:07:37,010 واحد منهم كان يسمى القائمة في خدش. 160 00:07:37,010 --> 00:07:39,100 وكان هذا خاص نوع متغير 161 00:07:39,100 --> 00:07:42,840 يسمح لك لتخزين الأشياء متعددة في مرة أخرى، إلى الوراء، إلى الوراء، إلى الخلف. 162 00:07:42,840 --> 00:07:45,540 >> في C، ولكنه لم يكن لديك القوائم، في حد ذاته، ولكن شيئا 163 00:07:45,540 --> 00:07:48,090 التي هي أعم دعا المصفوفات، على الرغم من أننا سوف 164 00:07:48,090 --> 00:07:50,590 أعود لاحقا في هذا الفصل الدراسي إلى النظر في شيء 165 00:07:50,590 --> 00:07:52,780 يسمى القائمة، أو حقا قائمة مرتبطة. 166 00:07:52,780 --> 00:07:55,510 ولكن الآن، والأقرب ما يعادلها في C بالنسبة لنا 167 00:07:55,510 --> 00:07:57,345 سيكون شيئا دعا مجموعة. 168 00:07:57,345 --> 00:07:59,740 ومجموعة هي مجرد نوع خاص من متغير 169 00:07:59,740 --> 00:08:03,160 الذي يسمح لك لتخزين البيانات إلى الوراء، إلى الوراء، إلى الوراء، إلى الوراء. 170 00:08:03,160 --> 00:08:05,840 >> وبالفعل، في خدش، إذا أردنا الوصول إلى 171 00:08:05,840 --> 00:08:09,030 العنصر الأول من مجموعة أو وlist-- وانا ذاهب الى نسميها، 172 00:08:09,030 --> 00:08:13,600 من الاتفاقية، ARGV، حجة ناقلات، ولكن أكثر على ذلك قبل فترة طويلة. 173 00:08:13,600 --> 00:08:17,090 إذا كنت ترغب في الحصول على العنصر الأول من ARGV، في العالم من الصفر 174 00:08:17,090 --> 00:08:20,930 يمكنك القيام به في الواقع عادة بدء العد من 1. 175 00:08:20,930 --> 00:08:22,850 >> ولذا فإنني قد تحصل على البند 1 من ARGV. 176 00:08:22,850 --> 00:08:26,310 هذا فقط كيف ينفذ معهد ماساتشوستس للتكنولوجيا فكرة القوائم. 177 00:08:26,310 --> 00:08:29,860 ولكن في C، أنا ذاهب ل أكثر ببساطة أقول، ARGV، 178 00:08:29,860 --> 00:08:32,758 ومرة أخرى هو اسم بلدي list-- أو أن تكون واضحة، صفيف. 179 00:08:32,758 --> 00:08:34,549 وإذا أريد لأول مرة العناصر، وانا ذاهب 180 00:08:34,549 --> 00:08:37,890 لاستخدام الأقواس المربعة، والتي قد لا يستخدم كثيرا تحت لوحة المفاتيح. 181 00:08:37,890 --> 00:08:40,150 >> ولكن 0 مجرد وسيلة، والحصول على لي أولا. 182 00:08:40,150 --> 00:08:42,160 حتى في بعض الأحيان وكما الوقت يمر، ونحن في طريقنا 183 00:08:42,160 --> 00:08:44,570 لتبدأ في رؤية هذه الانقسامات بين الصفر و C، 184 00:08:44,570 --> 00:08:46,070 حيث يستخدم خدش واحد. 185 00:08:46,070 --> 00:08:47,670 نحن في C استخدام 0 هنا. 186 00:08:47,670 --> 00:08:49,420 ولكن سترى بسرعة بمجرد فهم 187 00:08:49,420 --> 00:08:52,920 أسس كل لغة، أن هذه الأمور تبدأ للحصول على كل أكثر 188 00:08:52,920 --> 00:08:56,860 مألوفة من خلال الممارسة والتطبيق. 189 00:08:56,860 --> 00:08:59,700 >> لذلك دعونا ننظر في الواقع الآن في البرنامج. 190 00:08:59,700 --> 00:09:04,031 هنا يجب أن يكون أول لدينا C الشفرة المصدرية للبرامج الكاملة. 191 00:09:04,031 --> 00:09:06,280 وبرنامج ونحن في طريقنا لتقديم للنظر فيها 192 00:09:06,280 --> 00:09:09,340 هو واحد وهذا ما يعادل لأنه في وقت سابق خدش قطعة. 193 00:09:09,340 --> 00:09:13,210 >> حتى هنا، لدينا ما هو يمكن القول إن أبسط برنامج C 194 00:09:13,210 --> 00:09:15,410 يمكنك أن تكتب في الواقع لا شيء. 195 00:09:15,410 --> 00:09:18,250 الآن، ونحن سوف ننظر في الماضي، في الوقت الراهن، وتشمل، 196 00:09:18,250 --> 00:09:21,190 io.h القياسية، وهذه زاوية بين قوسين، وكثافة، والفراغ، 197 00:09:21,190 --> 00:09:22,840 والأقواس المعقوفة، وما شابه ذلك. 198 00:09:22,840 --> 00:09:25,390 >> ودعونا نركز على ما، على الأقل بشكل حدسي، 199 00:09:25,390 --> 00:09:26,860 قد القفز في لكم بالفعل. 200 00:09:26,860 --> 00:09:30,300 في الواقع، الرئيسي، وأنا لا تعرف بالضرورة ما هو هذا، 201 00:09:30,300 --> 00:09:34,580 ولكن مثل الكثير من خدش كان ذلك عندما العلم الأخضر النقر قطعة اللغز، 202 00:09:34,580 --> 00:09:39,070 فهل C كلغة برمجة الحصول على قطعة الرئيسي من التعليمات البرمجية التي 203 00:09:39,070 --> 00:09:43,380 يعدم افتراضيا. و، في الواقع، انها سوف حرفيا ليتم استدعاؤها الرئيسية. 204 00:09:43,380 --> 00:09:44,720 >> الرئيسية لذلك هي وظيفة. 205 00:09:44,720 --> 00:09:48,720 وانها وظيفة خاصة موجود في C أنه عند تشغيل البرنامج، 206 00:09:48,720 --> 00:09:52,720 فمن الرئيسي الذي يحصل تديرها افتراضي. في العالم من الصفر، 207 00:09:52,720 --> 00:09:56,970 وكان من عادة عندما علم أخضر النقر التي حصلت على تشغيل افتراضيا. 208 00:09:56,970 --> 00:10:01,130 >> وفي الوقت نفسه، لقد رأيت هذا من قبل، printf أو طباعة تنسيق، وهذا 209 00:10:01,130 --> 00:10:05,620 ستكون وظيفة التي تأتي مع C، جنبا إلى جنب مع مجموعة كاملة من الآخرين، 210 00:10:05,620 --> 00:10:10,140 هذه الإرادة من الوقت والوقت مرة أخرى، من أجل القيام بالضبط 211 00:10:10,140 --> 00:10:12,450 وكما يوحي اسمها، طباعة شيء. 212 00:10:12,450 --> 00:10:13,500 ماذا نريد لطباعة؟ 213 00:10:13,500 --> 00:10:15,770 حسنا، سنرى أن قبل شخصيات أرفق 214 00:10:15,770 --> 00:10:18,680 مثل these-- مرحبا العالم، ن مائل في التنصيص، 215 00:10:18,680 --> 00:10:23,040 يمكننا ان نقول printf بالضبط ما للطباعة على الشاشة. 216 00:10:23,040 --> 00:10:26,430 >> ولكن من أجل القيام ذلك، ونحن للأسف 217 00:10:26,430 --> 00:10:30,010 تحتاج إلى أن تأخذ ما هو خفي بالفعل لنا البشر، 218 00:10:30,010 --> 00:10:34,510 ولكن على الأقل أنها إلى حد ما readable-- حادة تشمل io.h القياسية، الباحث، 219 00:10:34,510 --> 00:10:39,340 الرئيسي، باطل، printf، جميع السحرية التعزيم نحن فقط رأيت على الشاشة. 220 00:10:39,340 --> 00:10:42,470 ولكن لدينا فعلا ل يذهب أكثر غامضة حتى الآن. 221 00:10:42,470 --> 00:10:47,140 نحتاج أولا إلى ترجمة التعليمات البرمجية أن نكتب إلى رمز الجهاز. 222 00:10:47,140 --> 00:10:51,370 ونذكر من الأسبوع الماضي أن الآلات، على الأقل تلك التي نعرفها هنا، 223 00:10:51,370 --> 00:10:54,450 في نهاية اليوم فقط فهم أصفار ومنها. 224 00:10:54,450 --> 00:10:58,100 >> وإلهي، إذا كان لدينا لكتابة هذه الأصفار ومنها إلى البرنامج فعلا، 225 00:10:58,100 --> 00:11:01,260 انه سيكون بسرعة شديدة جدا تأخذ متعة من أي شيء. 226 00:11:01,260 --> 00:11:05,150 ولكن تبين، في الأسبوع الماضي، أن هذه الأنماط من الآحاد والأصفار و 227 00:11:05,150 --> 00:11:06,400 يكون مجرد معنى خاص. 228 00:11:06,400 --> 00:11:08,500 في سياقات معينة، لأنها قد تعني الأرقام. 229 00:11:08,500 --> 00:11:11,840 >> في بعض السياقات، لأنها قد تعني خطابات، أو الألوان، أو أي عدد 230 00:11:11,840 --> 00:11:14,710 من تجريدات أخرى هناك عليها. 231 00:11:14,710 --> 00:11:18,450 ولكن مثلما كان جهاز الكمبيوتر الخاص بك وحدة المعالجة المركزية، وحدة المعالجة المركزية، 232 00:11:18,450 --> 00:11:20,390 أو أدمغة داخل جهاز الكمبيوتر الخاص بك. 233 00:11:20,390 --> 00:11:22,240 انها عادة ما تكون إنتل في الداخل، لأن هذا 234 00:11:22,240 --> 00:11:24,900 واحدة من أكبر الشركات أن يجعل وحدات المعالجة المركزية لأجهزة الكمبيوتر. 235 00:11:24,900 --> 00:11:28,910 >> حسنا، وحدات المعالجة المركزية إنتل وغيرها ببساطة قرروا مقدما 236 00:11:28,910 --> 00:11:33,970 أن أنماط معينة من الأصفار و يجب منها تعني أشياء محددة. 237 00:11:33,970 --> 00:11:37,040 أنماط معينة من الآحاد والأصفار و يعني، طباعة هذا إلى الشاشة، 238 00:11:37,040 --> 00:11:39,710 أو إضافة هذين الرقمين، أو طرح هذين الرقمين، 239 00:11:39,710 --> 00:11:43,310 أو نقل هذه القطعة من البيانات من ذاكرة جهاز الكمبيوتر الخاص بي هنا، 240 00:11:43,310 --> 00:11:47,870 أو أي عدد من مستوى منخفض جدا الآخرين، ولكن من المفيد في نهاية المطاف، والعمليات. 241 00:11:47,870 --> 00:11:53,022 ولكن، لحسن الحظ، نحن البشر لا تسير في حاجة إلى أن نعرف هذا المستوى من التفصيل. 242 00:11:53,022 --> 00:11:56,230 في الواقع، تماما مثل المرة السابقة، حيث كنا تستخرج مرة أخرى، ومرة ​​أخرى، ومرة ​​أخرى، 243 00:11:56,230 --> 00:11:58,930 المبنى من مستوى منخفض جدا البدائيون مثل الآحاد والأصفار و 244 00:11:58,930 --> 00:12:01,160 لمفاهيم مستوى أعلى مثل الأرقام والحروف، 245 00:12:01,160 --> 00:12:04,330 والألوان، وأكثر من ذلك، لذلك يمكننا كما المبرمجين 246 00:12:04,330 --> 00:12:07,080 الوقوف على أكتاف الآخرين الذين جاءوا قبل لنا 247 00:12:07,080 --> 00:12:11,260 واستخدام البرمجيات التي الآخر وقد كتب الناس قبل us-- 248 00:12:11,260 --> 00:12:14,340 وهي برامج تسمى المجمعين. 249 00:12:14,340 --> 00:12:17,770 >> C هي لغة عادة ما يتم تصنيف، 250 00:12:17,770 --> 00:12:22,130 وهو ما يعني تحويلها من كود المصدر إلى رمز الجهاز. 251 00:12:22,130 --> 00:12:25,230 على وجه الخصوص، ما يعني هذا وأنه إذا كنت قد حصلت على المصدر 252 00:12:25,230 --> 00:12:29,530 التعليمات البرمجية التي أنت نفسك الكتابة، ونحن قريبا سوف في لحظة فقط على الشاشة، 253 00:12:29,530 --> 00:12:33,140 وتريد تحويله في نهاية المطاف إلى آلة code-- 254 00:12:33,140 --> 00:12:37,100 تلك الأصفار وتلك التي فقط الخاص بك ماك أو جهاز الكمبيوتر الخاص بك 255 00:12:37,100 --> 00:12:41,230 understands-- كنت قد حصلت على أول تغذية أن الشيفرة المصدرية في مثل 256 00:12:41,230 --> 00:12:46,340 مدخلات خاص دعا برنامج مترجم، 257 00:12:46,340 --> 00:12:48,974 خرج منها نحن سنرى هو رمز الجهاز. 258 00:12:48,974 --> 00:12:51,890 وبالفعل، آخر مرة تحدثنا حول، حقا، في نهاية المطاف، 259 00:12:51,890 --> 00:12:52,610 حل المشاكل. 260 00:12:52,610 --> 00:12:53,360 كنت قد حصلت على المدخلات. 261 00:12:53,360 --> 00:12:54,318 وكنت قد حصلت على المخرجات. 262 00:12:54,318 --> 00:12:56,560 وكنت قد حصلت على بعض نوع خوارزمية في الوسط. 263 00:12:56,560 --> 00:12:59,830 >> يمكن خوارزميات يكون بالتأكيد تنفذ في مجال البرمجيات، 264 00:12:59,830 --> 00:13:02,900 وكما رأينا في شبة الكود الأسبوع الماضي وكما سنرى مع الرمز الفعلي 265 00:13:02,900 --> 00:13:03,490 هذا الاسبوع. 266 00:13:03,490 --> 00:13:06,430 وهكذا مترجم حقا فقط لديه مجموعة من الخوارزميات داخل 267 00:13:06,430 --> 00:13:10,060 من أن تعرف كيف تحويل الكلمات الخاصة، 268 00:13:10,060 --> 00:13:12,180 مثل الرئيسي، وprintf، وغيرها من الجهات التي نحن فقط 269 00:13:12,180 --> 00:13:17,620 رأى في أنماط من الأصفار و تلك التي إنتل في الداخل وغيرها من وحدات المعالجة المركزية 270 00:13:17,620 --> 00:13:20,020 يفهم الواقع. 271 00:13:20,020 --> 00:13:22,460 فكيف نفعل هذا؟ 272 00:13:22,460 --> 00:13:24,470 أين نحصل على المترجم؟ 273 00:13:24,470 --> 00:13:26,400 >> معظمنا هنا لديك ماك أو جهاز كمبيوتر. 274 00:13:26,400 --> 00:13:29,152 وأنت تعمل بنظام التشغيل Mac OS، أو ويندوز، أو لينكس، أو سولاريس، 275 00:13:29,152 --> 00:13:30,860 أو أي عدد آخر أنظمة التشغيل. 276 00:13:30,860 --> 00:13:32,568 وبالفعل، استطعنا الخروج على شبكة الإنترنت 277 00:13:32,568 --> 00:13:35,710 وتحميل مترجم لنظام التشغيل Mac الخاص بك أو جهاز الكمبيوتر الخاص بك 278 00:13:35,710 --> 00:13:37,360 لنظام التشغيل الخاص بك معين. 279 00:13:37,360 --> 00:13:39,617 ولكن علينا أن نكون جميعا على صفحات مختلفة، إذا جاز التعبير. 280 00:13:39,617 --> 00:13:41,450 سيكون لدينا قليلا تكوينات مختلفة. 281 00:13:41,450 --> 00:13:43,210 وكانت الأمور لا تعمل كل نفس. 282 00:13:43,210 --> 00:13:45,280 و، في الواقع، في هذه الأيام الكثير منا لا تستخدم 283 00:13:45,280 --> 00:13:47,516 البرنامج الذي يعمل فقط على أجهزة الكمبيوتر المحمولة لدينا. 284 00:13:47,516 --> 00:13:49,390 بدلا من ذلك، ونحن نستخدم شيئا مثل مستعرض 285 00:13:49,390 --> 00:13:52,930 يسمح لنا الوصول إلى شبكة الإنترنت التطبيقات في السحابة. 286 00:13:52,930 --> 00:13:55,630 وبعد هذا الفصل الدراسي، وسوف نفعل ذلك بالضبط. 287 00:13:55,630 --> 00:13:59,660 سنكتب التطبيقات أو البرنامج باستخدام code-- لا C، 288 00:13:59,660 --> 00:14:02,860 ولكن لغات أخرى مثل بايثون و JavaScript-- التي يتم تشغيلها في السحابة. 289 00:14:02,860 --> 00:14:05,860 >> وللقيام بذلك، ونحن أنفسنا خلال الفصل الدراسي 290 00:14:05,860 --> 00:14:11,890 سوف تستخدم في الواقع مقرها سحابة البيئة المعروفة باسم CS50 IDE. 291 00:14:11,890 --> 00:14:16,030 هذا هو البرمجة على شبكة الإنترنت البيئة، أو التنمية المتكاملة 292 00:14:16,030 --> 00:14:20,610 بيئة، بيئة تطوير متكاملة، التي بنيت فوق بعض البرمجيات مفتوحة المصدر يسمى الغيمة 9. 293 00:14:20,610 --> 00:14:22,966 وحققنا بعض التربوية التبسيط إليها 294 00:14:22,966 --> 00:14:25,840 وذلك لإخفاء ملامح معينة في الأسابيع الأولى أننا لسنا في حاجة، 295 00:14:25,840 --> 00:14:27,770 وبعد ذلك يمكنك كشف أمرهم ويفعلون أكثر 296 00:14:27,770 --> 00:14:29,400 أي شيء تريده مع البيئة. 297 00:14:29,400 --> 00:14:32,470 >> ويسمح لنا أيضا، ل قبل تثبيت برامج معينة. 298 00:14:32,470 --> 00:14:35,330 أشياء مثل ما يسمى CS50 مكتبة، والذي سنرى قريبا 299 00:14:35,330 --> 00:14:39,210 يقدم لنا في C مع بعض وظائف إضافية. 300 00:14:39,210 --> 00:14:44,392 حتى إذا ذهبت إلى، في نهاية المطاف، CS50.io، سيطلب منك تسجيل الدخول، 301 00:14:44,392 --> 00:14:46,350 وبمجرد الانتهاء من ذلك، وخلق حساب مجانا، 302 00:14:46,350 --> 00:14:52,150 سوف تكون قادرة على الوصول إلى البيئة التي تبدو تماما مثل هذا. 303 00:14:52,150 --> 00:14:53,760 >> الآن، وهذا هو في الوضع الافتراضي. 304 00:14:53,760 --> 00:14:55,650 كل شيء هو لطيف و مشرق على الشاشة. 305 00:14:55,650 --> 00:14:57,941 الكثير منا لديهم عادة العمل على قطعة CS50 هذا 306 00:14:57,941 --> 00:14:59,150 في وقت متأخر جدا من الليل. 307 00:14:59,150 --> 00:15:02,400 وحتى بعض من قد تفضل تحويلها إلى الوضع الليلي، إذا جاز التعبير. 308 00:15:02,400 --> 00:15:05,550 >> لكن، في نهاية المطاف، ما كنت الذهاب لرؤية داخل CS50 IDE 309 00:15:05,550 --> 00:15:08,340 هو ثلاثة areas-- متميزة منطقة على اليسار حيث 310 00:15:08,340 --> 00:15:12,604 الملفات ستكون في سحابة، وهي منطقة في أعلى يمين 311 00:15:12,604 --> 00:15:14,270 حيث التعليمات البرمجية ستكون قابلة للتحرير. 312 00:15:14,270 --> 00:15:16,650 عليك أن تكون قادرا على فتح علامات الفردية لأي برنامج 313 00:15:16,650 --> 00:15:19,670 أن تكتب في هذا الفصل الدراسي داخل من أن أعلى الزاوية اليمنى. 314 00:15:19,670 --> 00:15:23,070 ثم الأكثر arcanely، وبعد بقوة، 315 00:15:23,070 --> 00:15:26,610 سيكون هذا الشيء في أسفل المعروفة باسم نافذة الصالة. 316 00:15:26,610 --> 00:15:29,450 >> هذا هو المدرسة القديمة واجهة سطر الأوامر، 317 00:15:29,450 --> 00:15:32,240 أو CLI، التي تسمح لل لك لتنفيذ الأوامر 318 00:15:32,240 --> 00:15:35,260 على computer-- في هذه الحالة، الكمبيوتر في cloud-- 319 00:15:35,260 --> 00:15:39,090 أن تفعل أشياء مثل ترجمة التعليمات البرمجية من التعليمات البرمجية المصدر إلى رمز الجهاز، 320 00:15:39,090 --> 00:15:43,600 لتشغيل البرامج الخاصة بك، أو لبدء الخاص بك خادم الويب، أو الوصول إلى قاعدة البيانات الخاصة بك، 321 00:15:43,600 --> 00:15:47,454 وأي عدد من التقنيات الأخرى أننا سوف تبدأ في استخدام قبل وقت طويل. 322 00:15:47,454 --> 00:15:49,370 ولكن للوصول إلى هناك، ونحن ستكون لدينا في الواقع 323 00:15:49,370 --> 00:15:51,240 الذهاب على الانترنت والبدء في اللعب. 324 00:15:51,240 --> 00:15:54,399 وأن نفعل ذلك، دعونا أولا بدء ترقيع الرئيسية، 325 00:15:54,399 --> 00:15:55,940 وكتابة الجزء الرئيسي من هذا البرنامج. 326 00:15:55,940 --> 00:15:59,170 ودعونا استخدام هذه الوظيفة printf، والتي كنا في وقت سابق، 327 00:15:59,170 --> 00:16:01,050 ببساطة أن أقول شيئا. 328 00:16:01,050 --> 00:16:04,910 >> حتى هنا أنا بالفعل داخل IDE CS50. 329 00:16:04,910 --> 00:16:05,930 لقد دخولك مسبقا. 330 00:16:05,930 --> 00:16:07,360 وأنا مليئة فحص النافذة. 331 00:16:07,360 --> 00:16:09,670 وهكذا، في نهاية المطاف، ل أيضا في مشاكل المقبلة 332 00:16:09,670 --> 00:16:12,960 سوف تتبع خطوات مماثلة ستقدم الوثائق الفورية. 333 00:16:12,960 --> 00:16:16,360 لذلك أنت لا تحتاج للقلق حول استيعاب كل خطوة فنية صغيرة 334 00:16:16,360 --> 00:16:17,730 أن أفعل هنا اليوم. 335 00:16:17,730 --> 00:16:19,222 >> ولكن ستحصل على الشاشة مثل هذا. 336 00:16:19,222 --> 00:16:20,430 أنا يحدث ليكون في الوضع الليلي. 337 00:16:20,430 --> 00:16:22,944 ويمكنك سطع كل شيء يصل عن طريق تعطيل الوضع الليلي. 338 00:16:22,944 --> 00:16:24,860 وفي نهاية اليوم، وأنت تسير لرؤية 339 00:16:24,860 --> 00:16:30,090 هذه أهم ثلاثة areas-- الملف المتصفح في اليسار، وعلامات التبويب كود يصل أعلى، 340 00:16:30,090 --> 00:16:32,430 وإطار المحطة الطرفية في القاع. 341 00:16:32,430 --> 00:16:34,890 >> اسمحوا لي أن المضي قدما في إرسال أول برنامج لي. 342 00:16:34,890 --> 00:16:42,300 انا ذاهب للذهاب استباقي إلى ملف، حفظها وحفظ ملف بصفتي hello.c. 343 00:16:42,300 --> 00:16:46,850 في الواقع، من خلال اتفاقية، أي أننا البرنامج الكتابة وهذا ما كتب في لغة C 344 00:16:46,850 --> 00:16:49,739 يجب أن تكون تسمية شيء نقطة ج، من خلال الاتفاقية. 345 00:16:49,739 --> 00:16:53,030 لذلك أنا ذاهب لتسميته hello.c، ل أريد فقط أن أقول مرحبا إلى العالم. 346 00:16:53,030 --> 00:16:54,820 الآن انا ذاهب للتكبير من ثم انقر فوق حفظ. 347 00:16:54,820 --> 00:16:58,180 وكل ما لدي هنا الآن هو علامة تبويب الذي يمكنني البدء في كتابة التعليمات البرمجية. 348 00:16:58,180 --> 00:16:59,490 >> هذا لن ترجمة. 349 00:16:59,490 --> 00:17:00,300 هذا لا يعني شيئا. 350 00:17:00,300 --> 00:17:02,750 وحتى لو اعتنقت هذا إلى أصفار ومنها، 351 00:17:02,750 --> 00:17:05,390 وحدة المعالجة المركزية وستكون لدينا لا فكرة عما يجري حولها. 352 00:17:05,390 --> 00:17:14,170 ولكن إذا أنا أكتب الخطوط التي لا تطابق مع جيم C كائن conventions--، 353 00:17:14,170 --> 00:17:20,150 مرة أخرى، هذا language-- مع جملة مثل هذا، printf مرحبا world-- ولدي 354 00:17:20,150 --> 00:17:22,210 حصلت مريحة مع تفعل هذا مع مرور الوقت. 355 00:17:22,210 --> 00:17:24,510 لذلك أنا لا أعتقد أنني قدمت أي أخطاء مطبعية. 356 00:17:24,510 --> 00:17:27,910 >> ولكن، دائما، أول جدا مرة كنت تفعل هذا، وسوف. 357 00:17:27,910 --> 00:17:31,090 وما أنا على وشك أن تفعل قد جدا كذلك لا عمل لك في المرة الأولى. 358 00:17:31,090 --> 00:17:33,610 وهذا موافق تماما، لأنه الآن حق لك 359 00:17:33,610 --> 00:17:37,662 قد نرى مجموعة كبيرة من حداثة، لكن مع مرور الوقت بمجرد الحصول على دراية 360 00:17:37,662 --> 00:17:39,870 مع هذه البيئة، و هذه اللغة، وغيرها، 361 00:17:39,870 --> 00:17:42,370 عليك أن تبدأ في رؤية الأشياء التي إما أن تكون صحيحة أو غير صحيحة. 362 00:17:42,370 --> 00:17:44,369 >> وهذا هو ما زملاء التدريس وبطبيعة الحال 363 00:17:44,369 --> 00:17:48,780 مساعدين الحصول على جيد جدا في أكثر من مرة، و اكتشاف الأخطاء أو الخلل في التعليمات البرمجية. 364 00:17:48,780 --> 00:17:52,110 ولكن أزعم أن هناك لم الخلل في هذا القانون. 365 00:17:52,110 --> 00:17:53,990 لذلك أريد الآن لتشغيل هذا البرنامج. 366 00:17:53,990 --> 00:17:57,440 >> الآن في بلدي ماكنتوش أو كمبيوتر شخصي، وأنا في هذه العادة من الرموز النقر المزدوج 367 00:17:57,440 --> 00:17:59,350 عندما كنت ترغب في تشغيل بعض البرامج. 368 00:17:59,350 --> 00:18:01,080 ولكن هذا ليس النموذج هنا. 369 00:18:01,080 --> 00:18:04,570 في هذه البيئة، وهو CS50 IDE. 370 00:18:04,570 --> 00:18:07,192 نحن تستخدم التشغيل نظام يسمى لينكس. 371 00:18:07,192 --> 00:18:09,900 لينكس يذكرنا آخر نظام التشغيل، والمعروفة عموما 372 00:18:09,900 --> 00:18:10,850 كما يونكس. 373 00:18:10,850 --> 00:18:16,340 ولينكس هو معروف بشكل خاص ل وجود سطر الأوامر البيئة، CLI. 374 00:18:16,340 --> 00:18:20,070 الآن، نحن باستخدام محددة نكهة لينكس تسمى أوبونتو. 375 00:18:20,070 --> 00:18:22,770 وأوبونتو هو مجرد نسخة معينة من لينكس. 376 00:18:22,770 --> 00:18:27,900 >> ولكن هذه لينكس في هذه الأيام تفعل في الواقع تأتي مع واجهات المستخدم الرسومية. 377 00:18:27,900 --> 00:18:30,360 واحد يحدث لأننا تستخدم هنا هو قائم على شبكة الإنترنت. 378 00:18:30,360 --> 00:18:32,735 ولذلك فإن هذا قد تبدو حتى تختلف قليلا من شيء 379 00:18:32,735 --> 00:18:35,310 أنت نفسك قد يكون ينظر أو تشغيل في الماضي. 380 00:18:35,310 --> 00:18:37,910 >> لذلك أنا ذاهب إلى المضي قدما الآن، والقيام بما يلي. 381 00:18:37,910 --> 00:18:40,950 لقد أنقذ هذا الملف كما hello.c. 382 00:18:40,950 --> 00:18:47,350 انا ذاهب الى المضي قدما و نوع clanghello.c حتى رنة 383 00:18:47,350 --> 00:18:49,850 للغة C هو مترجم. 384 00:18:49,850 --> 00:18:51,952 انها مثبتة مسبقا في CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 ويمكنك تحميل على الاطلاق و تثبيت هذا على ماك الخاص بك أو جهاز الكمبيوتر. 386 00:18:54,910 --> 00:18:57,910 >> ولكن، مرة أخرى، لن يكون لديك كل من ما قبل التكوين القيام به بالنسبة لك. 387 00:18:57,910 --> 00:19:00,940 حتى الآن، أنا فقط الذهاب لتشغيل clanghello.c. 388 00:19:00,940 --> 00:19:03,240 والآن لاحظ هذا النحو هنا في نهاية المطاف 389 00:19:03,240 --> 00:19:06,930 أدرك يعني فقط أن أكون في مجلد أو دليل يسمى مساحة العمل. 390 00:19:06,930 --> 00:19:11,030 هذه علامة الدولار الاتفاقية فقط عن المعنى، اكتب الأوامر الخاص بك هنا. 391 00:19:11,030 --> 00:19:14,560 >> وهذا ما يسمى موجه، فقط من الاتفاقية هو علامة الدولار. 392 00:19:14,560 --> 00:19:19,130 وإذا ذهبت قدما الآن وانقر أدخل، لا يبدو أن شيئا قد حدث. 393 00:19:19,130 --> 00:19:20,930 ولكن هذا في الواقع أمر جيد. 394 00:19:20,930 --> 00:19:23,650 وأقل ما يحدث على الشاشة، وعلى الأرجح 395 00:19:23,650 --> 00:19:26,710 الشفرة هو أن يكون صحيحا، على الأقل من حيث التركيب. 396 00:19:26,710 --> 00:19:29,120 >> حتى لو كنت ترغب في تشغيل هذا برنامج، ماذا أفعل؟ 397 00:19:29,120 --> 00:19:33,770 حسنا، اتضح أن الاسم الافتراضي من الاتفاقية 398 00:19:33,770 --> 00:19:38,854 البرامج عند عدم تحديد اسم البرنامج الخاص بك هو مجرد a.out. 399 00:19:38,854 --> 00:19:41,270 وبناء الجملة هذا أيضا، عليك تعرف على قبل فترة طويلة. 400 00:19:41,270 --> 00:19:47,500 >> نقطة خفض يعني فقط، مهلا، CS50 IDE، قم بتشغيل برنامج يسمى a.out 401 00:19:47,500 --> 00:19:49,400 وهذا داخل دليل بلدي الحالي. 402 00:19:49,400 --> 00:19:51,520 تلك النقطة تعني الدليل الحالي. 403 00:19:51,520 --> 00:19:55,040 وسنرى ما هذه متواليات أخرى من الشخصيات يعني قبل فترة طويلة. 404 00:19:55,040 --> 00:19:58,430 >> حتى هنا نذهب، أدخل، مرحبا العالم. 405 00:19:58,430 --> 00:20:00,080 وستلاحظ أن ما حدث؟ 406 00:20:00,080 --> 00:20:01,580 ليس فقط أنها لم طباعة مرحبا العالم. 407 00:20:01,580 --> 00:20:05,990 كما تحركت ل المؤشر إلى السطر التالي. 408 00:20:05,990 --> 00:20:07,160 >> ولماذا كان ذلك؟ 409 00:20:07,160 --> 00:20:12,400 ما هو الرمز الذي كتبنا قبل يضمن التي من شأنها أن المؤشر 410 00:20:12,400 --> 00:20:14,882 الذهاب على السطر التالي؟ 411 00:20:14,882 --> 00:20:16,840 شيء مضحك عن الكمبيوتر هو انه سيكون فقط 412 00:20:16,840 --> 00:20:18,570 للقيام حرفيا ما كنت أقول أن تفعله. 413 00:20:18,570 --> 00:20:26,050 >> حتى إذا كنت أقول ذلك لprintf مرحبا، فاصلة، والفضاء، عالم، واقتبس وثيق، 414 00:20:26,050 --> 00:20:29,090 انها حرفيا لن يؤدي الا لطباعة تلك الأحرف. 415 00:20:29,090 --> 00:20:31,980 ولكن كان هذا طابع خاص في النهاية، تذكر، مائل ن. 416 00:20:31,980 --> 00:20:34,230 وهذا ما يضمن أن ذهب شخصية 417 00:20:34,230 --> 00:20:36,570 إلى السطر التالي من الشاشة. 418 00:20:36,570 --> 00:20:38,097 >> في الواقع، اسمحوا لي أن تذهب وتفعل هذا. 419 00:20:38,097 --> 00:20:39,430 اسمحوا لي أن نمضي قدما وحذف هذه. 420 00:20:39,430 --> 00:20:41,180 الآن، لاحظ أن أعلى الشاشة بلدي هناك 421 00:20:41,180 --> 00:20:42,890 القليل من الضوء الأحمر في علامة التبويب تشير، 422 00:20:42,890 --> 00:20:45,047 مهلا، كنت قد يتم حفظ الملف. 423 00:20:45,047 --> 00:20:47,880 لذلك أنا ذاهب إلى المضي قدما في السيطرة S أو الأمر S، حفظ الملف. 424 00:20:47,880 --> 00:20:51,130 الآن حان goes-- ذهب لالخضراء اللحظات،. 425 00:20:51,130 --> 00:20:53,760 والآن يعود إلى كونها مجرد رمز وثيق. 426 00:20:53,760 --> 00:21:01,860 >> إذا أنا الآن تشغيل clanghello.c مرة أخرى، أدخل، نقطة مائلة، a.out، أدخل، 427 00:21:01,860 --> 00:21:04,110 سترى أنه لا يزال يعمل. 428 00:21:04,110 --> 00:21:06,020 ولكن هذا القول عربة صغيرة. 429 00:21:06,020 --> 00:21:08,714 الآن، مساحة العمل الخاصة بي prompt--، وبعد ذلك علامة الدولار، 430 00:21:08,714 --> 00:21:10,880 ثم ضعي prompt-- الفعلية هو كل شيء على نفس الخط. 431 00:21:10,880 --> 00:21:14,540 ولذلك فإن هذا بالتأكيد علة الجمالية، حتى لو انها ليست حقا خلل منطقي. 432 00:21:14,540 --> 00:21:16,250 >> لذلك أنا ذاهب إلى التراجع عن ما فعلت. 433 00:21:16,250 --> 00:21:18,560 أنا ذاهب إلى إعادة تشغيل a.out. 434 00:21:18,560 --> 00:21:22,710 لاحظ أنني قمت بإضافة السطر الخلفي الطابع. 435 00:21:22,710 --> 00:21:24,280 أنا قد قمت بحفظ الملف. 436 00:21:24,280 --> 00:21:31,630 >> لذلك أنا ذاهب إلى إعادة تشغيل a.out، and-- اللعنة، خلل، خلل يعني خطأ. 437 00:21:31,630 --> 00:21:35,020 وبالتالي فإن الخطأ هو أنه على الرغم من أضفت مائل ن هناك، 438 00:21:35,020 --> 00:21:41,180 إعادة حفظها، وإعادة ركض-البرنامج، كان السلوك نفسه. 439 00:21:41,180 --> 00:21:42,640 لماذا يكون ذلك؟ 440 00:21:42,640 --> 00:21:43,910 >> أنا في عداد المفقودين خطوة، أليس كذلك؟ 441 00:21:43,910 --> 00:21:47,620 وكان ذلك خطوة رئيسية في وقت سابق أن لديك ل-- عند تغيير شفرة المصدر الخاصة بك، 442 00:21:47,620 --> 00:21:49,610 اتضح أيضا تشغيل من خلال مترجم 443 00:21:49,610 --> 00:21:51,102 مرة أخرى حتى تحصل على رمز الجهاز الجديد. 444 00:21:51,102 --> 00:21:52,810 وآلة القانون، الأصفار ومنها، 445 00:21:52,810 --> 00:21:56,260 سوف تكون متطابقة تقريبا، ولكن ليس تماما لذلك، لأننا في حاجة، 446 00:21:56,260 --> 00:21:57,510 بالطبع، هذا الخط الجديد. 447 00:21:57,510 --> 00:22:02,640 >> لذلك لإصلاح هذا، وأنا ذاهب الى الحاجة إعادة تشغيل clanghello.c، أدخل، نقطة 448 00:22:02,640 --> 00:22:03,800 خفض، a.out. 449 00:22:03,800 --> 00:22:08,402 والآن، مرحبا العالم هو العودة إلى حيث أتوقع أن يكون. 450 00:22:08,402 --> 00:22:09,610 لذلك هذا هو كل شيء على ما يرام وجيدة. 451 00:22:09,610 --> 00:22:13,150 لكن a.out هو اسم غبي جدا ل برنامج، على الرغم من أنه يحدث أن تكون، 452 00:22:13,150 --> 00:22:16,530 لأسباب تاريخية، و default-- يعني مخرجات الجمعية. 453 00:22:16,530 --> 00:22:20,780 >> ولكن اسمحوا لي أن المضي قدما هنا والقيام بذلك بشكل مختلف. 454 00:22:20,780 --> 00:22:24,760 أريد برنامجي مرحبا العالم لفي الواقع أن يسمى مرحبا. 455 00:22:24,760 --> 00:22:28,320 حتى لو كان رمز على بلدي سطح المكتب، فإنه لن a.out. 456 00:22:28,320 --> 00:22:29,730 سوف يطلق عليه مرحبا. 457 00:22:29,730 --> 00:22:33,660 >> حتى للقيام بذلك، اتضح أن رنة، مثل العديد من البرامج، 458 00:22:33,660 --> 00:22:37,980 تدعم وسائط سطر الأوامر، أو الأعلام، أو التبديل، 459 00:22:37,980 --> 00:22:39,600 التي تؤثر ببساطة سلوكها. 460 00:22:39,600 --> 00:22:45,160 على وجه التحديد، رنة يدعم شرطة س العلم، الذي ثم يأخذ الكلمة الثانية. 461 00:22:45,160 --> 00:22:48,190 في هذه الحالة، وسوف أكون تعسفا، ولكن بشكل معقول، الذي يطلق عليه مرحبا. 462 00:22:48,190 --> 00:22:50,710 ولكن يمكن أن يطلق عليه أي شيء أريد، إلا a.out، التي 463 00:22:50,710 --> 00:22:52,390 يفضل أن يكون إلى جانب هذه النقطة. 464 00:22:52,390 --> 00:22:55,640 >> وبعد ذلك فقط تحديد اسم الملف أريد أن ترجمة. 465 00:22:55,640 --> 00:22:59,190 وحتى الآن حتى وإن كان في بداية الأمر لا يزال لدي رنة، 466 00:22:59,190 --> 00:23:01,410 في نهاية الأمر لا يزال لدي اسم الملف، 467 00:23:01,410 --> 00:23:05,520 لدي الآن سطر الأوامر هذه الحجج، وهذه العلامات التي تقول، 468 00:23:05,520 --> 00:23:11,180 أوه، بالمناسبة، خرج س، ملف دعا مرحبا، وليس a.out الافتراضية. 469 00:23:11,180 --> 00:23:13,810 >> حتى لو كنت هاهنا الآن، لا شيء يبدو أنه قد حدث. 470 00:23:13,810 --> 00:23:17,900 و، ولكن، الآن أستطيع أن أفعل نقطة مائلة مرحبا. 471 00:23:17,900 --> 00:23:19,089 لذلك هو نفس البرنامج. 472 00:23:19,089 --> 00:23:21,380 الأصفار ومنها هي متطابقة في نهاية اليوم. 473 00:23:21,380 --> 00:23:24,210 >> ولكنهم في اثنين a.out files-- مختلفة، 474 00:23:24,210 --> 00:23:26,490 الذي هو الإصدار الأول ومجرد اسمه بحماقة، 475 00:23:26,490 --> 00:23:30,250 والآن مرحبا، وهو كثيرا أكثر اسم مقنعة لأحد البرامج. 476 00:23:30,250 --> 00:23:33,195 ولكن، بصراحة، أنا أبدا الذهاب إلى تذكر هذا مرة أخرى، 477 00:23:33,195 --> 00:23:34,070 ومرة أخرى، ومرة ​​أخرى. 478 00:23:34,070 --> 00:23:36,411 و، في الواقع، ونحن نكتب برامج أكثر تعقيدا، 479 00:23:36,411 --> 00:23:38,160 الأوامر كنت ستكون لدينا لكتابة 480 00:23:38,160 --> 00:23:40,920 سوف تحصل على حتى أكثر تعقيدا من ذلك. 481 00:23:40,920 --> 00:23:41,940 >> وذلك لا داعي للقلق. 482 00:23:41,940 --> 00:23:46,220 وتبين أن البشر قبل لنا أدركوا أنهم أيضا 483 00:23:46,220 --> 00:23:47,530 وكان نفس هذا المشكلة بالضبط. 484 00:23:47,530 --> 00:23:50,900 هم أيضا لا تتمتع الحاجة إلى اكتب طويلة نسبيا، أوامر غامضة، 485 00:23:50,900 --> 00:23:52,200 ناهيك عن تذكرها. 486 00:23:52,200 --> 00:23:56,070 وحتى البشر أمامنا جعلت البرامج الأخرى التي تجعل من السهل 487 00:23:56,070 --> 00:23:57,670 تجميع البرنامج. 488 00:23:57,670 --> 00:24:01,609 >> و، في الواقع، واحدة منها ويسمى برنامج صانع. 489 00:24:01,609 --> 00:24:03,150 لذلك أنا ذاهب إلى المضي قدما ونفعل ذلك. 490 00:24:03,150 --> 00:24:05,691 انا ذاهب الى التراجع عن كل ما فعلت بالطريقة التالية. 491 00:24:05,691 --> 00:24:07,690 اسمحوا لي أن اكتب ليرة سورية. 492 00:24:07,690 --> 00:24:10,980 وستلاحظ ثلاثة things-- a.out، ونجم، مرحبا 493 00:24:10,980 --> 00:24:12,810 ونجم، وhello.c. 494 00:24:12,810 --> 00:24:14,730 نأمل، هذا ينبغي تكون بديهية قليلا، 495 00:24:14,730 --> 00:24:18,220 بقدر ما كان هناك في وقت سابق لا شيء في هذه مساحة العمل. 496 00:24:18,220 --> 00:24:21,240 لم يكن هناك شيء ان كان لي تم إنشاؤها حتى بدأنا الطبقة. 497 00:24:21,240 --> 00:24:22,840 >> وأنا خلقت hello.c. 498 00:24:22,840 --> 00:24:24,544 وبعد ذلك جمعت منه، ويطلق عليه a.out. 499 00:24:24,544 --> 00:24:27,460 وبعد ذلك أنا جمعت مرة أخرى قليلا مختلفة ويطلق عليه مرحبا. 500 00:24:27,460 --> 00:24:32,830 لذلك ليس لدي ثلاثة ملفات في هذا الدليل، في هذا المجلد يسمى مساحة العمل. 501 00:24:32,830 --> 00:24:35,005 الآن، أستطيع أن أرى ذلك أيضا إذا كنت تصغير الواقع. 502 00:24:35,005 --> 00:24:37,530 >> لو كنت التصغير هنا و ننظر في ذلك أعلى اليد اليمنى 503 00:24:37,530 --> 00:24:39,940 الزاوية، كما وعدت اليسار الجانب من الشاشة 504 00:24:39,940 --> 00:24:42,990 دائما ما تظهر لك ما هو في حسابك، ما هو 505 00:24:42,990 --> 00:24:44,790 داخل IDE CS50. 506 00:24:44,790 --> 00:24:46,680 وهناك ثلاثة ملفات هناك. 507 00:24:46,680 --> 00:24:49,070 >> لذلك أريد أن تخلص من a.out ومرحبا. 508 00:24:49,070 --> 00:24:51,275 وكما كنت قد تخيل بشكل حدسي، يمكنك 509 00:24:51,275 --> 00:24:53,400 يمكن فرز من فوق عنصر تحكم أو انقر على الحق في هذا. 510 00:24:53,400 --> 00:24:54,590 وهذه القائمة الصغيرة للملوثات العضوية الثابتة. 511 00:24:54,590 --> 00:24:57,170 يمكنك تحميل الملف، تشغيل ذلك، معاينته، ​​تحديث، إعادة تسمية، 512 00:24:57,170 --> 00:24:57,700 أو ليس ما. 513 00:24:57,700 --> 00:25:00,260 >> وأنا فقط يمكن حذف، وسوف تذهب بعيدا. 514 00:25:00,260 --> 00:25:05,260 ولكن دعونا نفعل الأشياء مع أمر خط في الوقت الراهن، وذلك للحصول على راحة 515 00:25:05,260 --> 00:25:07,010 مع هذا، والقيام بما يلي. 516 00:25:07,010 --> 00:25:12,345 انا ذاهب الى المضي قدما وإزالة a.out بكتابة حرفيا rma.out. 517 00:25:12,345 --> 00:25:14,890 كما تبين، الأمر ل إزالة أو حذف شيء، 518 00:25:14,890 --> 00:25:16,280 ليس إزالة أو حذف. 519 00:25:16,280 --> 00:25:21,260 >> انها أكثر وضوحا RM، فقط لانقاذ لك بعض ضربات المفاتيح، ثم اضغط على Enter. 520 00:25:21,260 --> 00:25:24,707 الآن ونحن في طريقنا إلى حد ما بغموض إزالة a.out ملف منتظم. 521 00:25:24,707 --> 00:25:27,040 أنا لا أعرف حقا ما ل سيكون ملف انتظام يكون حتى الان. 522 00:25:27,040 --> 00:25:28,660 ولكن أنا لا أريد أن إزالته. 523 00:25:28,660 --> 00:25:30,150 >> لذلك أنا ذاهب لكتابة ذ لنعم. 524 00:25:30,150 --> 00:25:31,940 أو أستطيع أن اكتب بها، ثم اضغط على Enter. 525 00:25:31,940 --> 00:25:33,440 ومرة أخرى، يبدو أن لا شيء يحدث. 526 00:25:33,440 --> 00:25:35,840 ولكن هذا هو، بشكل عام، وهو شيء جيد. 527 00:25:35,840 --> 00:25:40,490 >> إذا كنت اكتب LS هذه المرة، ما ينبغي أن أرى؟ 528 00:25:40,490 --> 00:25:44,930 نأمل، فقط مرحبا وhello.c. 529 00:25:44,930 --> 00:25:47,286 الآن، بوصفها جانبا، عليك لاحظت هذا النجم، النجمة، 530 00:25:47,286 --> 00:25:48,660 هذا هو في نهاية برامجي. 531 00:25:48,660 --> 00:25:50,201 وانهم تظهر أيضا باللون الأخضر. 532 00:25:50,201 --> 00:25:53,970 وهذا هو مجرد وسيلة CS50 IDE ل من الدلالة لكم في الواقع 533 00:25:53,970 --> 00:25:55,280 أن هذا ليس شفرة المصدر. 534 00:25:55,280 --> 00:25:58,880 هذا قابل للتنفيذ، وrunnable البرنامج الذي يمكنك تشغيل فعلا 535 00:25:58,880 --> 00:26:01,020 عن طريق القيام نقطة مائلة، وبعد ذلك اسم. 536 00:26:01,020 --> 00:26:05,860 >> والآن، اسمحوا لي المضي قدما وإزالة هذا، جمهورية مقدونيا مرحبا، أدخل، وإزالة العادية 537 00:26:05,860 --> 00:26:08,010 ملف مرحبا، نعم. 538 00:26:08,010 --> 00:26:11,180 والآن إذا كنت اكتب ليرة سورية، نعود إلى hello.c. 539 00:26:11,180 --> 00:26:13,917 ليس محاولة لحذف الخاص بك كود المصدر الفعلي. 540 00:26:13,917 --> 00:26:16,250 على الرغم من أن هناك ميزات في صلب CS50 IDE حيث 541 00:26:16,250 --> 00:26:19,870 يمكنك الذهاب من خلال تاريخ المراجعة الخاصة بك والترجيع في الوقت المناسب إذا كنت غير قصد 542 00:26:19,870 --> 00:26:23,660 حذف شيء، لا أن تضع في اعتبارها وفقا لهذه المطالبات نعم أو لا، 543 00:26:23,660 --> 00:26:25,381 ما كنت فعلا تريد أن تفعل. 544 00:26:25,381 --> 00:26:27,380 وإذا صعدت إلى الأعلى الزاوية اليسرى هنا، 545 00:26:27,380 --> 00:26:30,696 كل ما تبقى هو hello.c. 546 00:26:30,696 --> 00:26:32,570 ولذلك لا يوجد باقات الأوامر الأخرى التي 547 00:26:32,570 --> 00:26:37,550 يمكن تنفيذ في عالم لينكس، واحدة منها هي، مرة أخرى، وجعل. 548 00:26:37,550 --> 00:26:40,180 ونحن في طريقنا لجعل برنامجي الآن على النحو التالي. 549 00:26:40,180 --> 00:26:43,270 >> بدلا من القيام رنة، بدلا من القيام رنة س، 550 00:26:43,270 --> 00:26:45,860 انا ذاهب الى ببساطة اكتب حرفيا، وجعل مرحبا. 551 00:26:45,860 --> 00:26:49,630 والآن لاحظت، وأنا لا تكتب جعل hello.c. 552 00:26:49,630 --> 00:26:50,910 أنا كتابة جعل مرحبا. 553 00:26:50,910 --> 00:26:54,840 >> وهذا البرنامج جعل ذلك يأتي مع IDE CS50، وأكثر من ذلك 554 00:26:54,840 --> 00:26:57,090 عموما مع لينكس، هو البرنامج الذي 555 00:26:57,090 --> 00:26:59,120 الذهاب الى جعل برنامج يسمى مرحبا. 556 00:26:59,120 --> 00:27:03,680 وانه ذاهب لنفترض، من خلال اتفاقية، أنه إذا أمكن جعل هذا البرنامج، 557 00:27:03,680 --> 00:27:09,030 انها سوف تكون مصنوعة من مصدر ملف التعليمات البرمجية التي تنتهي في نقطة ج، hello.c. 558 00:27:09,030 --> 00:27:12,210 >> حتى لو كنت هاهنا الآن، لاحظ أن الأمر الذي يعدم 559 00:27:12,210 --> 00:27:14,340 هو في الواقع لفترة أطول قبل أكثر من ذي قبل. 560 00:27:14,340 --> 00:27:16,670 وهذا لأننا IDE CS50 مسبقا أن يكون 561 00:27:16,670 --> 00:27:19,878 بعض الميزات الإضافية بنيت في ذلك نحن لسنا بحاجة فقط حتى الآن، ولكن قريبا. 562 00:27:19,878 --> 00:27:23,470 ولكن الشيء الرئيسي لتحقيق الآن لدي برنامج مرحبا. 563 00:27:23,470 --> 00:27:27,080 >> إذا كنت اكتب LS مرة أخرى، وأنا لديك برنامج مرحبا. 564 00:27:27,080 --> 00:27:32,070 ويمكنني تشغيله مع نقطة خفض a.out، لا، 565 00:27:32,070 --> 00:27:35,590 لأن بيت القصيد من هذا وكانت ممارسة دوت مائل مرحبا. 566 00:27:35,590 --> 00:27:38,089 والآن لدي برنامج مرحبا العالم. 567 00:27:38,089 --> 00:27:39,880 حتى تتحرك إلى الأمام، نحن دائما تقريبا فقط 568 00:27:39,880 --> 00:27:42,088 الذهاب إلى تجميع برامجنا باستخدام جعله الأوامر. 569 00:27:42,088 --> 00:27:45,300 وبعد ذلك نحن ذاهبون لتشغيلها من قبل نقطة خفض، واسم البرنامج. 570 00:27:45,300 --> 00:27:49,610 ولكن ندرك ما جعل تقوم به ل لك، وأنه هو نفسه ليس المترجم. 571 00:27:49,610 --> 00:27:53,310 انها مجرد برنامج الراحة أن يعرف كيف يؤدي الى مترجم 572 00:27:53,310 --> 00:27:56,470 لتشغيل حتى يتسنى لك نفسك يمكن استخدامها. 573 00:27:56,470 --> 00:28:00,220 >> ما توجد أوامر أخرى في لينكس، وبدوره IDE CS50؟ 574 00:28:00,220 --> 00:28:03,107 سنرى قريبا أن هناك الأمر CD، تغيير الدليل. 575 00:28:03,107 --> 00:28:05,190 هذا يسمح لك داخل واجهة سطر الأوامر 576 00:28:05,190 --> 00:28:07,610 للتحرك إلى الأمام، والخلف، وفتح مجلدات مختلفة 577 00:28:07,610 --> 00:28:08,860 دون استخدام الماوس الخاص بك. 578 00:28:08,860 --> 00:28:12,470 >> LS رأينا، والتي تقف على قائمة الملفات في الدليل الحالي. 579 00:28:12,470 --> 00:28:14,650 جعل دير، يمكنك ربما تبدأ في الاستدلال 580 00:28:14,650 --> 00:28:18,150 ما يعني هذه الآن-- جعل الدليل، إذا كنت ترغب في إنشاء مجلد. 581 00:28:18,150 --> 00:28:21,270 RM لإزالة، RM دير ل إزالة directory-- وهذه، 582 00:28:21,270 --> 00:28:24,160 مرة أخرى، هي سطر الأوامر حكمه ما كنت 583 00:28:24,160 --> 00:28:26,945 يمكن أن تفعل في CS50 IDE مع الماوس. 584 00:28:26,945 --> 00:28:28,820 ولكن سوف تجد قريبا أنه في بعض الأحيان انها مجرد 585 00:28:28,820 --> 00:28:30,610 على نحو أسرع كثيرا للقيام الامور مع لوحة المفاتيح، 586 00:28:30,610 --> 00:28:33,690 وفي نهاية المطاف الكثير أكثر قوة. 587 00:28:33,690 --> 00:28:36,440 >> ولكن من الصعب القول بأن أي شيء كنا نقوم به حتى الآن 588 00:28:36,440 --> 00:28:39,990 هو كل ما قوية، عندما تكون جميع كنا نقوله هو، مرحبا العالم. 589 00:28:39,990 --> 00:28:43,740 و، في الواقع، لقد ضمني لل الكلمات مرحبا العالم في برنامجي. 590 00:28:43,740 --> 00:28:45,530 ليس هناك ديناميكية حتى الان. 591 00:28:45,530 --> 00:28:49,320 كان الصفر أمر من حجم أكثر إثارة للاهتمام في الأسبوع الماضي. 592 00:28:49,320 --> 00:28:51,220 >> ولذلك دعونا نصل الى هناك. 593 00:28:51,220 --> 00:28:55,310 دعونا نلقي خطوة نحو ذلك عن طريق الطريق لبعض هذه الوظائف. 594 00:28:55,310 --> 00:28:59,470 وذلك ليس فقط لا C تأتي مع printf، وباقات من وظائف أخرى 595 00:28:59,470 --> 00:29:01,850 بعضها سنرى مع مرور الوقت، فإنه لا 596 00:29:01,850 --> 00:29:05,760 جعل كل شيء بهذه السهولة الحق في الخروج من البوابة في الحصول على مدخلات المستخدم. 597 00:29:05,760 --> 00:29:08,140 >> في الواقع، واحدة من نقاط الضعف لغات مثل C، 598 00:29:08,140 --> 00:29:10,140 وحتى جافا وبعد الآخرين، هو أنه لا 599 00:29:10,140 --> 00:29:15,860 تجعل من السهل لمجرد الحصول على أشياء مثل الأعداد الصحيحة من المستخدمين، أو الجمل، والكلمات، 600 00:29:15,860 --> 00:29:19,970 والعبارات، واسمحوا الأشياء وحدها مثل القيم النقطة العائمة، أو الأعداد الحقيقية 601 00:29:19,970 --> 00:29:23,240 مع النقاط العشرية، وحقا أرقام طويلة، كما سنرى قريبا. 602 00:29:23,240 --> 00:29:27,000 حتى هذه القائمة من وظائف هنا، هذه هي مثل قطع خدش لغز أخرى 603 00:29:27,000 --> 00:29:31,090 أننا مثبتة مسبقا في CS50 IDE التي سنستخدم لبضعة أسابيع 604 00:29:31,090 --> 00:29:34,010 كما عجلات التدريب من نوع ما، و أخذها في نهاية المطاف قبالة، والبحث 605 00:29:34,010 --> 00:29:37,210 تحت غطاء محرك السيارة، وربما، في كيف يتم تنفيذ هذه الأمور. 606 00:29:37,210 --> 00:29:40,460 >> ولكن للقيام بذلك، دعنا في الواقع كتابة برنامج. 607 00:29:40,460 --> 00:29:41,770 اسمحوا لي أن المضي قدما الآن. 608 00:29:41,770 --> 00:29:44,750 وانا ذاهب الى خلق جديد ملف عن طريق النقر على هذا بالإضافة إلى القليل، 609 00:29:44,750 --> 00:29:45,970 والنقر ملف جديد. 610 00:29:45,970 --> 00:29:49,250 >> أنا ذاهب لإنقاذ هذه المقبل واحد كما، دعنا نقول، string.c، 611 00:29:49,250 --> 00:29:50,750 لأنني أريد أن ألعب مع السلاسل. 612 00:29:50,750 --> 00:29:53,990 والسلسلة في C هي فقط سلسلة من الأحرف. 613 00:29:53,990 --> 00:29:56,090 حتى الآن دعونا نمضي قدما والقيام بما يلي. 614 00:29:56,090 --> 00:30:01,204 >> وتشمل المعايير IO.h-- و اتضح IO القياسية، 615 00:30:01,204 --> 00:30:03,360 IO يعني فقط المدخلات والمخرجات. 616 00:30:03,360 --> 00:30:05,920 هكذا اتضح أن هذا الخط هنا هو ما 617 00:30:05,920 --> 00:30:08,140 هو المجاورة لنا استخدام printf. 618 00:30:08,140 --> 00:30:10,410 Printf، وبطبيعة الحال، وتنتج الانتاج. 619 00:30:10,410 --> 00:30:15,000 وذلك من أجل استخدام printf، فإنه يتحول من أن يكون لديك هذا سطر من التعليمات البرمجية 620 00:30:15,000 --> 00:30:16,040 في الجزء العلوي من الملف. 621 00:30:16,040 --> 00:30:18,456 >> وسوف نعود إلى ما وهذا يعني في الواقع قبل وقت طويل. 622 00:30:18,456 --> 00:30:20,400 وتبين أن في أي برنامج C أنا أكتب، 623 00:30:20,400 --> 00:30:23,640 لقد حصلت على تشغيله مع التعليمات البرمجية التي تبدو مثل هذا. 624 00:30:23,640 --> 00:30:26,860 وستلاحظ CS50 IDE، و التنمية المتكاملة أخرى 625 00:30:26,860 --> 00:30:30,050 بيئات مثل ذلك، وسوف نحاول بأقصى 626 00:30:30,050 --> 00:30:31,780 أنها يمكن أن ينهي الفكر الخاص بك. 627 00:30:31,780 --> 00:30:35,930 في الواقع، منذ لحظة إذا يمكنني التراجع ما أنا فعلت، وأنا هاهنا. 628 00:30:35,930 --> 00:30:39,160 >> وبعد ذلك ضرب مجعد مفتوحة هدفين، هاهنا مرة أخرى. 629 00:30:39,160 --> 00:30:40,430 والانتهاء من تفكيري. 630 00:30:40,430 --> 00:30:45,140 أنه أعطاني خط جديد، بادئة لا يقل لأسباب الأسلوبية لطيفة سنرى. 631 00:30:45,140 --> 00:30:48,559 ثم أنه أعطاني تلقائيا أن متعرج لإنهاء تفكيري. 632 00:30:48,559 --> 00:30:50,600 الآن، فإنه ليس دائما تخمين ما تريد القيام به. 633 00:30:50,600 --> 00:30:53,620 ولكن في جزء كبير منه، فإنه لا يوفر لك بعض المفاتيح. 634 00:30:53,620 --> 00:30:59,560 حتى قبل لحظة، ركضنا هذا program-- مرحبا، العالم، ومن ثم جمعت ذلك، 635 00:30:59,560 --> 00:31:00,460 ثم تجلى ذلك. 636 00:31:00,460 --> 00:31:01,867 ولكن ليس هناك ديناميكية هنا. 637 00:31:01,867 --> 00:31:03,700 ماذا لو أردنا أن نفعل شيئا مختلفا؟ 638 00:31:03,700 --> 00:31:07,630 حسنا، ماذا لو أردت أن الواقع الحصول على سلسلة من المستخدم؟ 639 00:31:07,630 --> 00:31:11,250 انا ذاهب الى استخدام قطعة اللغز دعا بالضبط هكذا- يضرب الحصول على السلسلة. 640 00:31:11,250 --> 00:31:15,860 >> تبين في C أنه عندما كنت لا تريد لتوفير مدخلات لقطعة اللغز، 641 00:31:15,860 --> 00:31:19,360 أو أكثر بشكل صحيح على وظيفة، ل حرفيا مجرد القيام قوس فتح، 642 00:31:19,360 --> 00:31:20,430 قوس إغلاق. 643 00:31:20,430 --> 00:31:25,540 لذلك كما لو هناك لا مربع أبيض لكتابة فيه. 644 00:31:25,540 --> 00:31:27,720 كتلة مثلا قبل كان مربع أبيض صغير. 645 00:31:27,720 --> 00:31:29,660 نحن ليس لدينا هذا المربع الأبيض الآن. 646 00:31:29,660 --> 00:31:33,310 >> ولكن عندما أدعو سلسلة الحصول عليها، وأنا نريد أن نضع النتيجة في مكان ما. 647 00:31:33,310 --> 00:31:37,680 لذلك النموذج شائع جدا في C هو استدعاء دالة، مثل سلسلة الحصول على هنا، 648 00:31:37,680 --> 00:31:41,070 ومن ثم تخزين قيمة عودتها. 649 00:31:41,070 --> 00:31:44,450 انها نتيجة ل جهد في شيء. 650 00:31:44,450 --> 00:31:47,630 >> وما هو بناء في البرمجة، 651 00:31:47,630 --> 00:31:53,450 سواء في خدش أو الآن C، وأننا يمكن استخدامها لتخزين شيئا في الواقع؟ 652 00:31:53,450 --> 00:31:55,990 يطلق عليه متغير، أليس كذلك؟ 653 00:31:55,990 --> 00:32:00,320 وفي خدش، ونحن لا حقا يهمني ما كان يحدث في المتغيرات. 654 00:32:00,320 --> 00:32:02,170 >> ولكن في هذه الحالة، نحن فعلا. 655 00:32:02,170 --> 00:32:03,719 انا ذاهب الى القول السلسلة. 656 00:32:03,719 --> 00:32:05,510 وبعد ذلك يمكن أن نسميه هذا ما أريد. 657 00:32:05,510 --> 00:32:08,340 انا ذاهب الى نسميها اسم، ويحصل على السلسلة. 658 00:32:08,340 --> 00:32:10,250 >> والآن حتى لو كنت جديد يذكر لهذا، 659 00:32:10,250 --> 00:32:11,984 لاحظت أنني تفتقر إلى بعض التفاصيل. 660 00:32:11,984 --> 00:32:13,150 أنا النسيان منقوطة. 661 00:32:13,150 --> 00:32:14,400 ولست بحاجة لإنهاء هذا الفكر. 662 00:32:14,400 --> 00:32:17,480 لذلك أنا ذاهب لأحرك المؤشر، وضرب منقوطة هناك. 663 00:32:17,480 --> 00:32:19,130 وما أنا فقط القيام به؟ 664 00:32:19,130 --> 00:32:21,440 في هذا الخط من التعليمات البرمجية، عدد 5 في الوقت الراهن، 665 00:32:21,440 --> 00:32:23,799 ادعو سلسلة الحصول مع عدم وجود المدخلات. 666 00:32:23,799 --> 00:32:26,090 لذلك ليس هناك الأبيض الصغير مربع مثل حفظ كتلة لديها. 667 00:32:26,090 --> 00:32:28,590 >> أنا فقط أقول، مهلا، الكمبيوتر، ويحصل لي سلسلة. 668 00:32:28,590 --> 00:32:31,390 علامة المساواة ليست في الحقيقة علامة المساواة، في حد ذاته. 669 00:32:31,390 --> 00:32:33,790 انها مهمة المشغل، وهو ما يعني، 670 00:32:33,790 --> 00:32:37,860 مهلا، الكمبيوتر، نقل قيمة من حق أكثر إلى اليسار. 671 00:32:37,860 --> 00:32:40,480 وفي الجهة اليسرى، ولدي ما يلي. 672 00:32:40,480 --> 00:32:43,580 >> مهلا، الكمبيوتر، أعطني string-- سلسلة من الأحرف. 673 00:32:43,580 --> 00:32:45,637 وندعو إلى أن اسم السلسلة. 674 00:32:45,637 --> 00:32:47,220 وأنا لا تملك حتى أن نسميها الاسم. 675 00:32:47,220 --> 00:32:49,970 >> أنا يمكن أن نسميها، تقليديا، شيء من هذا القبيل S، 676 00:32:49,970 --> 00:32:52,900 يشبه إلى حد كبير كنا أنا ل استدعاء متغير ط. 677 00:32:52,900 --> 00:32:54,829 ولكن الان انا بحاجة لفعل شيء معها. 678 00:32:54,829 --> 00:32:57,370 وسيكون من الغباء جدا ل محاولة تجميع هذا الرمز، تشغيل 679 00:32:57,370 --> 00:32:59,410 هذا البرنامج، على الرغم من انني اتلقى سلسلة، 680 00:32:59,410 --> 00:33:01,580 لأنها لا تزال مجرد أريد أن أقول مرحبا العالم. 681 00:33:01,580 --> 00:33:06,140 >> ولكن ماذا لو كنت لا تريد لتغيير هذا الوضع. 682 00:33:06,140 --> 00:33:07,940 لماذا لا أفعل هذا؟ 683 00:33:07,940 --> 00:33:11,632 في المئة الصورة، فاصلة الصورة. 684 00:33:11,632 --> 00:33:13,090 وهذا هو خفي قليلا لا يزال. 685 00:33:13,090 --> 00:33:15,560 >> لذلك اسمحوا لي أن المتغيرات بلدي أكثر وضوحا. 686 00:33:15,560 --> 00:33:17,510 اسمحوا لي أن تسمية هذا اسم المتغير. 687 00:33:17,510 --> 00:33:20,230 ودعونا نرى ما اذا كنا لا يمكن أن ندف وبصرف النظر عما يحدث هنا. 688 00:33:20,230 --> 00:33:22,770 >> هكذا السطر الخامس، وأنا الحصول على السلسلة. 689 00:33:22,770 --> 00:33:25,620 وأنا تخزين هذه السلسلة، كل ما قد كتبته المستخدم في 690 00:33:25,620 --> 00:33:28,430 في له أو لها لوحة المفاتيح، في متغير يسمى الاسم. 691 00:33:28,430 --> 00:33:30,590 واتضح أن printf لا فقط 692 00:33:30,590 --> 00:33:34,220 تأخذ وسيطة واحدة في ضعف ونقلت ومدخل واحد في علامات اقتباس مزدوجة. 693 00:33:34,220 --> 00:33:39,100 >> يمكن أن يستغرق يومين، أو ثلاثة، أو أكثر، مثل أن الثانية، أو الثالثة، أو الرابعة، 694 00:33:39,100 --> 00:33:42,320 كلها أسماء المتغيرات، أو تقدر على وجه التحديد، 695 00:33:42,320 --> 00:33:48,610 التي ترغب في الاندماج، حيوي، هذه السلسلة في الاقتباس. 696 00:33:48,610 --> 00:33:52,110 وبعبارة أخرى، ما سيكون الخطأ في هذا؟ 697 00:33:52,110 --> 00:33:57,920 إذا قلت للتو مرحبا الاسم، مائل ن، حفظ الملف الخاص بي، وقد تم تجميعها قانون بلدي، 698 00:33:57,920 --> 00:34:01,660 ويدير هذا، ماذا سيحدث؟ 699 00:34:01,660 --> 00:34:05,139 >> انها مجرد الذهاب الى القول، مرحبا اسم، حرفيا N-A-M-E، 700 00:34:05,139 --> 00:34:07,900 الذي هو نوع من الغباء ل انها لا تختلف من العالم. 701 00:34:07,900 --> 00:34:10,400 لذا فان أي شيء في الاقتباس هو ما حرفيا يحصل المطبوعة. 702 00:34:10,400 --> 00:34:12,520 حتى لو كنت تريد أن يكون عنصر نائب هناك، 703 00:34:12,520 --> 00:34:14,422 أنا فعلا بحاجة إلى استخدام بعض تركيب خاص. 704 00:34:14,422 --> 00:34:17,380 واتضح إذا كنت تقرأ ثائق الدالة printf، 705 00:34:17,380 --> 00:34:21,320 وسوف اقول لكم ان إذا كنت تستخدم في المئة الصورة، 706 00:34:21,320 --> 00:34:23,920 يمكنك استبدال قيمة كما يلي. 707 00:34:23,920 --> 00:34:27,190 >> بعد فاصلة بعد أن اقتباس مزدوجة، يمكنك ببساطة 708 00:34:27,190 --> 00:34:29,179 كتابة اسم المتغير الذي تريد 709 00:34:29,179 --> 00:34:33,790 بهدف سد العجز في في هذا الشكل الرمز، أو شكل محدد، 710 00:34:33,790 --> 00:34:35,469 في المئة الصورة لسلاسل. 711 00:34:35,469 --> 00:34:39,190 والآن إذا كنت قد قمت بحفظ الملف الخاص بي، أعود وصولا الى محطة بلدي. 712 00:34:39,190 --> 00:34:42,870 وأنا اكتب جعل سلسلة، لأنه، مرة أخرى، واسم هذا 713 00:34:42,870 --> 00:34:45,510 الملف الذي اخترت قبل هو string.c. 714 00:34:45,510 --> 00:34:48,510 >> لذلك أنا أريد أن أقول جعل سلسلة، أدخل. 715 00:34:48,510 --> 00:34:51,550 يا إلهي، أن ننظر في كل من الأخطاء التي قمنا بها بالفعل. 716 00:34:51,550 --> 00:34:55,540 وهذا ما أعرف، هل هذا حقا مثل، برنامج خط الستة سبعة؟ 717 00:34:55,540 --> 00:34:57,790 لذلك هذا هو المكان الذي يمكن جدا بسرعة الحصول على الساحقة. 718 00:34:57,790 --> 00:35:00,890 >> هذه النافذة محطة له الآن متقيا فقط 719 00:35:00,890 --> 00:35:03,230 عدد كبير من رسائل الخطأ. 720 00:35:03,230 --> 00:35:07,560 بالتأكيد، ليس لدي المزيد من خطأ رسائل من عندي أسطر من التعليمات البرمجية. 721 00:35:07,560 --> 00:35:08,680 ماذا يحدث؟ 722 00:35:08,680 --> 00:35:10,920 >> كذلك، فإن أفضل استراتيجية للقيام أي وقت 723 00:35:10,920 --> 00:35:13,710 لا تواجه ساحقة قائمة الأخطاء من هذا القبيل، 724 00:35:13,710 --> 00:35:16,690 وانتقل إلى الوراء، ننظر للأمر قمت بتشغيل فقط، وهو في حالتي 725 00:35:16,690 --> 00:35:18,020 هو جعل السلسلة. 726 00:35:18,020 --> 00:35:21,630 ننظر إلى ما جعل فعل، وهذا هو الذي قيادة رنة طويلة، ليست صفقة كبيرة هناك. 727 00:35:21,630 --> 00:35:22,950 >> لكن الأحمر هو سيئ. 728 00:35:22,950 --> 00:35:24,750 الأخضر يحاول أن يكون لطيف ومفيدة. 729 00:35:24,750 --> 00:35:26,140 لكنه ما زال سيئا، في هذه الحالة. 730 00:35:26,140 --> 00:35:27,510 ولكن أين هي سيئة؟ 731 00:35:27,510 --> 00:35:31,450 >> String.c، السطر الخامس، والطابع خمسة. 732 00:35:31,450 --> 00:35:32,930 لذلك هذا هو اتفاقية مشتركة فقط. 733 00:35:32,930 --> 00:35:36,060 شيء القولون شيء يعني رقم السطر ورقم الحرف. 734 00:35:36,060 --> 00:35:41,080 الخطأ، واستخدام غير معلنة سلسلة معرف. 735 00:35:41,080 --> 00:35:42,900 هل تقصد القياسي في؟ 736 00:35:42,900 --> 00:35:45,530 >> لذلك، للأسف، رنة تحاول أن تكون مفيدة. 737 00:35:45,530 --> 00:35:46,850 لكن من الخطأ، في هذه الحالة. 738 00:35:46,850 --> 00:35:49,350 لا، رنة، وأنا لم أقصد IO القياسية. 739 00:35:49,350 --> 00:35:51,070 أنا يعني أن على سطر واحد، نعم. 740 00:35:51,070 --> 00:35:53,420 >> ولكن السطر الخامس هو هذا واحد هنا. 741 00:35:53,420 --> 00:35:57,040 ورنة لا فهم S-T-R-I-N-G. 742 00:35:57,040 --> 00:36:01,490 انها المعرف غير معروفة، ل كلمة هو فقط لم ير من قبل. 743 00:36:01,490 --> 00:36:05,730 وذلك لأن C، واللغة نحن كتابة التعليمات البرمجية في الوقت الراهن، 744 00:36:05,730 --> 00:36:08,070 لم يكن لديك المتغيرات تسمى السلاسل. 745 00:36:08,070 --> 00:36:11,380 >> لم يحدث ذلك، افتراضيا، الدعم شيء يسمى سلسلة. 746 00:36:11,380 --> 00:36:16,750 هذا هو قطعة CS50 من المصطلحات، ولكن تقليدية جدا. 747 00:36:16,750 --> 00:36:18,600 ولكن يمكنني أن إصلاح هذا على النحو التالي. 748 00:36:18,600 --> 00:36:22,090 >> إذا أضيف سطر واحد من التعليمات البرمجية إلى الأعلى من هذا البرنامج، 749 00:36:22,090 --> 00:36:27,890 تشمل CS50.h، وهو ملف آخر في مكان ما داخل CS50 IDE، في مكان ما 750 00:36:27,890 --> 00:36:30,820 على القرص الصلب، إذا جاز التعبير، من نظام التشغيل أوبونتو 751 00:36:30,820 --> 00:36:33,590 أن أنا على التوالي، أن هو الملف الذي هو 752 00:36:33,590 --> 00:36:38,740 الذهاب لتعليم التشغيل نظام ما هي سلسلة، فقط 753 00:36:38,740 --> 00:36:41,930 مثل io.h هو معيار ملف في نظام التشغيل هذا 754 00:36:41,930 --> 00:36:44,430 الذهاب إلى تدريسه ما printf هو. 755 00:36:44,430 --> 00:36:46,810 >> في الواقع، لكنا قد حصلت رسالة مشابهة جدا 756 00:36:46,810 --> 00:36:50,600 إذا IO اعترف القياسية IO.h وحاولت استخدام printf. 757 00:36:50,600 --> 00:36:53,632 لذلك أنا ذاهب إلى المضي قدما وفقط السيطرة L لمسح شاشة بلدي. 758 00:36:53,632 --> 00:36:56,340 أو يمكنك كتابة واضحة وسوف مجرد مسح إطار المحطة الطرفية. 759 00:36:56,340 --> 00:36:58,020 ولكن لا يزال بإمكانك انتقل إلى الوراء في الوقت المناسب. 760 00:36:58,020 --> 00:37:01,100 >> وأنا ذاهب إلى إعادة تشغيل جعل سلسلة. 761 00:37:01,100 --> 00:37:03,660 عبور أصابعي هذا الوقت، أدخل. 762 00:37:03,660 --> 00:37:05,380 يا إلهي، لأنها عملت. 763 00:37:05,380 --> 00:37:09,280 انه يظهر لي أمر خفي طويل هذا هو ما جعل إنشاء طريق رنة، 764 00:37:09,280 --> 00:37:10,460 ولكن لا توجد رسائل خطأ. 765 00:37:10,460 --> 00:37:12,460 حتى ندرك، على الرغم من قد تحصل تماما 766 00:37:12,460 --> 00:37:14,480 طغت مع عدد الرسائل الخطأ، 767 00:37:14,480 --> 00:37:17,540 فإنه قد يكون مجرد هذا المتتالية مزعج تأثير، حيث لا يفهم رنة 768 00:37:17,540 --> 00:37:19,620 شيء واحد، وهو ما يعني أنها ثم لا يفهم الكلمة التالية، 769 00:37:19,620 --> 00:37:20,560 أو السطر التالي. 770 00:37:20,560 --> 00:37:22,850 وذلك الإختناقات فقط على التعليمات البرمجية. 771 00:37:22,850 --> 00:37:24,440 لكن الإصلاح قد تكون بسيطة. 772 00:37:24,440 --> 00:37:27,822 وتركز ذلك دائما على السطر الأول جدا من الانتاج. 773 00:37:27,822 --> 00:37:29,530 وإذا كنت لا فهم ذلك، مجرد إلقاء نظرة 774 00:37:29,530 --> 00:37:32,480 عن الكلمات الرئيسية التي قد تكون القرائن، ورقم السطر، 775 00:37:32,480 --> 00:37:34,650 والطابع، حيث قد يكون هذا الخطأ. 776 00:37:34,650 --> 00:37:40,328 >> والآن اسمحوا لي المضي قدما واكتب نقطة خفض، سلسلة، أدخل. 777 00:37:40,328 --> 00:37:44,340 جلالة الملك، فإنه لا يقول مرحبا أي شيء. 778 00:37:44,340 --> 00:37:46,210 لماذا؟ 779 00:37:46,210 --> 00:37:48,170 حسنا، أذكر، حيث يتم تشغيله؟ 780 00:37:48,170 --> 00:37:53,730 >> وربما تبقى عالقة في الوقت الراهن في حلقة، اذا صح التعبير، على خط الستة، 781 00:37:53,730 --> 00:37:56,950 لأن الحصول على سلسلة من التصميم، كتبه الموظفين CS50، 782 00:37:56,950 --> 00:38:00,350 يقصد حرفيا لمجرد الجلوس هناك انتظار، والانتظار، 783 00:38:00,350 --> 00:38:01,850 وتنتظر السلسلة. 784 00:38:01,850 --> 00:38:03,792 كل نعنيه سلسلة من المدخلات البشرية. 785 00:38:03,792 --> 00:38:04,500 لذلك أنت تعرف لماذا؟ 786 00:38:04,500 --> 00:38:05,166 اسمحوا لي أن المضي قدما. 787 00:38:05,166 --> 00:38:08,704 وفقط لمجرد نزوة، واسمحوا لي اكتب اسمي، ديفيد، أدخل. 788 00:38:08,704 --> 00:38:10,120 الآن لدي برنامج أكثر ديناميكية. 789 00:38:10,120 --> 00:38:11,240 يقال، مرحبا ديفيد. 790 00:38:11,240 --> 00:38:16,280 >> إذا ذهبت إلى الأمام وتشغيل هذا مرة أخرى، اسمحوا لي أن أحاول أن أقول اسم Zamila، أدخل. 791 00:38:16,280 --> 00:38:17,940 والآن لدينا برنامج ديناميكي. 792 00:38:17,940 --> 00:38:19,380 أنا لم الثابت ترميز العالم. 793 00:38:19,380 --> 00:38:21,760 أنا لم الثابت ترميز تسمية، أو ديفيد، أو Zamila. 794 00:38:21,760 --> 00:38:25,350 >> الآن انها اكثر من ذلك بكثير مثل البرامج ونحن نعلم، حيث إذا يستغرق المدخلات، 795 00:38:25,350 --> 00:38:27,870 وتنتج إخراج مختلف قليلا. 796 00:38:27,870 --> 00:38:31,020 الآن، ليس هذا هو أفضل تجربة المستخدم، أو UX. 797 00:38:31,020 --> 00:38:33,000 أنا تشغيل البرنامج. 798 00:38:33,000 --> 00:38:35,830 >> أنا لا أعرف ما أنا من المفترض القيام به، إلا إذا كنت فعلا ننظر 799 00:38:35,830 --> 00:38:37,290 أو تذكر شفرة المصدر. 800 00:38:37,290 --> 00:38:39,640 لذلك دعونا جعل المستخدم تجربة أفضل قليلا 801 00:38:39,640 --> 00:38:41,240 مع أبسط الأشياء. 802 00:38:41,240 --> 00:38:44,782 واسمحوا لي أن أعود إلى هذا برنامج، وبكل بساطة تقول printf. 803 00:38:44,782 --> 00:38:48,870 >> واسمحوا لي أن المضي قدما ويقول اسمه، القولون، والفضاء، ثم منقوطة. 804 00:38:48,870 --> 00:38:51,170 وفقط لركلات، أي رد فعل عنيف ن. 805 00:38:51,170 --> 00:38:52,980 وهذا متعمد، لأنني لا أريد 806 00:38:52,980 --> 00:38:54,590 موجه للانتقال إلى السطر التالي. 807 00:38:54,590 --> 00:38:58,800 >> أريد أن، بدلا من ذلك، القيام بذلك، وجعل سلسلة إعادة ترجمة قانون بلدي إلى الجهاز الجديد 808 00:38:58,800 --> 00:39:00,980 كود دوت خفض السلسلة. 809 00:39:00,980 --> 00:39:02,460 آه، هذا هو أجمل من ذلك بكثير. 810 00:39:02,460 --> 00:39:05,780 الآن أنا فعلا تعرف ما الكمبيوتر تريد مني أن أفعل، وإعطائها اسما. 811 00:39:05,780 --> 00:39:10,020 >> لذلك أنا ذاهب إلى المضي قدما واكتب في روب، أدخل، ومرحبا، روب. 812 00:39:10,020 --> 00:39:13,640 لذلك، وتحقيق، وهذا لا يزال، في نهاية اليوم، فقط برنامج تسعة خط. 813 00:39:13,640 --> 00:39:15,090 لكننا اتخذنا الخطوات الطفل. 814 00:39:15,090 --> 00:39:18,380 >> كتبنا سطر واحد مع الذي نحن كانت مألوفة، printf، مرحبا العالم. 815 00:39:18,380 --> 00:39:19,980 ثم نحن أفقرت قليلا من ذلك. 816 00:39:19,980 --> 00:39:21,560 وكنا في الواقع سلسلة الحصول عليها. 817 00:39:21,560 --> 00:39:23,362 ونحن قذف تلك القيمة في متغير. 818 00:39:23,362 --> 00:39:26,070 وبعد ذلك ذهبت إلى الأمام وتحسين أكثر من ذلك مع الخط الثالث. 819 00:39:26,070 --> 00:39:29,220 وهذه العملية التكرارية ل كتابة البرامج غير الأساسية حقا. 820 00:39:29,220 --> 00:39:33,420 في CS50، وفي الحياة بشكل عام، يجب عليك عموما لا نجلس، 821 00:39:33,420 --> 00:39:36,800 لديك برنامج في الاعتبار، ومحاولة الكتابة لعنة كل شيء دفعة واحدة. 822 00:39:36,800 --> 00:39:40,810 >> وعليه، لا محالة، ويؤدي في الطريق المزيد من الأخطاء من نحن أنفسنا رأى هنا. 823 00:39:40,810 --> 00:39:44,070 حتى أنا، حتى يومنا هذا، باستمرار يخطئ غبية أخرى، 824 00:39:44,070 --> 00:39:47,480 هي الأخطاء أصعب في الواقع التي يصعب معرفة. 825 00:39:47,480 --> 00:39:52,095 ولكن سوف ارتكاب المزيد من الاخطاء أكثر أسطر من التعليمات البرمجية تكتب في كل مرة. 826 00:39:52,095 --> 00:39:54,220 وحتى هذه الممارسة، إرسال قليلا من التعليمات البرمجية 827 00:39:54,220 --> 00:39:57,930 أن كنت راضيا، ترجمة ذلك، تشغيلها، اختباره بشكل عام، 828 00:39:57,930 --> 00:40:01,370 ثم نقل on-- حتى مجرد مثل حافظنا طبقات وطبقات الأسبوع الماضي، 829 00:40:01,370 --> 00:40:04,190 بناء من شيء جدا بسيطة إلى شيء أكثر تعقيدا، 830 00:40:04,190 --> 00:40:05,200 تفعل الشيء نفسه هنا. 831 00:40:05,200 --> 00:40:08,500 لا تجلس، ومحاولة ل كتابة المشكلة برمتها. 832 00:40:08,500 --> 00:40:10,780 أخذ فعلا هذه خطوات طفل. 833 00:40:10,780 --> 00:40:15,100 >> الآن، سلاسل ليست كلها أن من المفيد في حد ذاتها. 834 00:40:15,100 --> 00:40:18,210 لكنا في الواقع، من الناحية المثالية، مثل ل لديك شيء آخر في أدوات لدينا. 835 00:40:18,210 --> 00:40:20,990 لذلك دعونا نفعل ذلك فعلا بالضبط. 836 00:40:20,990 --> 00:40:24,900 >> اسمحوا لي أن المضي قدما الآن وجهز برنامج مختلف قليلا. 837 00:40:24,900 --> 00:40:28,320 ونحن سوف نسمي هذا int.c، لعدد صحيح. 838 00:40:28,320 --> 00:40:30,870 أنا ذاهب ل، وبالمثل، تشمل CS550.h. 839 00:40:30,870 --> 00:40:33,060 أنا ذاهب لتشمل IO القياسية. 840 00:40:33,060 --> 00:40:36,630 والتي ستكون جميلة مشتركة في هذه الأيام القليلة الأولى من الصف. 841 00:40:36,630 --> 00:40:39,050 >> وانا ذاهب الى جاهزة نفسي مع المهمة الرئيسية. 842 00:40:39,050 --> 00:40:43,370 والآن بدلا من الحصول على سلسلة، دعونا نمضي قدما والحصول على كثافة العمليات. 843 00:40:43,370 --> 00:40:49,285 دعنا نسميها ط، والذي يطلق عليه الحصول على كثافة العمليات، أقواس وثيقة، منقوطة. 844 00:40:49,285 --> 00:40:51,410 والآن دعونا نفعل شيء معها، printf. 845 00:40:51,410 --> 00:40:56,190 >> دعونا نقول شيء من هذا القبيل مرحبا، مائل ن، ط فاصلة. 846 00:40:56,190 --> 00:41:00,010 لذلك أنا محاكاة حد كبير ما فعلته قبل لحظة فقط. 847 00:41:00,010 --> 00:41:01,660 لدي نائبا هنا. 848 00:41:01,660 --> 00:41:05,150 لقد بفواصل أنا هنا، لأنني أريد من أجل سد ط إلى أن العنصر النائب. 849 00:41:05,150 --> 00:41:07,250 >> لذلك دعونا نمضي قدما ومحاولة جمع هذا البرنامج. 850 00:41:07,250 --> 00:41:10,060 يتم استدعاء الملف int.c. 851 00:41:10,060 --> 00:41:12,920 لذلك أنا أريد أن أقول، وجعل كثافة العمليات، أدخل. 852 00:41:12,920 --> 00:41:16,420 يا إلهي، ولكن ليست صفقة كبيرة، أليس كذلك؟ 853 00:41:16,420 --> 00:41:17,230 هناك خطأ. 854 00:41:17,230 --> 00:41:19,810 >> هناك خطأ نحوي هنا مثل هذا البرنامج لا يمكن 855 00:41:19,810 --> 00:41:25,460 يتم تجميعها داخل int.c، خط سبعة، والحرف 27، شكل خطأ 856 00:41:25,460 --> 00:41:28,400 يحدد نوع شار نجم، أيا كان ذلك. 857 00:41:28,400 --> 00:41:30,020 ولكن نوع الوسيطة هو كثافة العمليات. 858 00:41:30,020 --> 00:41:33,110 >> حتى هنا، أيضا، أننا لن ل-- على الرغم من أن اليوم هو الكثير من المواد، 859 00:41:33,110 --> 00:41:35,710 ونحن في طريقنا إلى تطغى لك تماما كل سمة من سمات C، 860 00:41:35,710 --> 00:41:38,070 والبرمجة بشكل عام، فقط في هذه الأسابيع القليلة الأولى. 861 00:41:38,070 --> 00:41:40,400 ولذلك لا يوجد في كثير من الأحيان سيكون المصطلحات التي كنت لم تكن مألوفة. 862 00:41:40,400 --> 00:41:43,350 و، في الواقع، نجوم شار شيء ونحن في طريقنا للعودة إلى 863 00:41:43,350 --> 00:41:44,830 في غضون أسبوع أو اثنين من مرة و. 864 00:41:44,830 --> 00:41:47,530 >> لكنه الآن، دعونا نرى ما اذا كنا نستطيع تحليل الكلمات التي هي مألوفة. 865 00:41:47,530 --> 00:41:50,750 Formats-- حتى سمعنا شكل محدد، رمز تنسيق من قبل. 866 00:41:50,750 --> 00:41:51,840 هذا هو مألوف. 867 00:41:51,840 --> 00:41:53,840 Type-- لكن الحجة نوع int. 868 00:41:53,840 --> 00:41:55,980 انتظر لحظة، أنا هو عدد صحيح. 869 00:41:55,980 --> 00:41:59,230 >> ربما في المئة الصورة في الواقع لديه بعض معنى محدد. 870 00:41:59,230 --> 00:42:00,230 وفي الحقيقة، فإنه لا. 871 00:42:00,230 --> 00:42:03,101 عدد صحيح، إذا كنت تريد printf لاستبدالها، 872 00:42:03,101 --> 00:42:05,350 لديك فعلا لاستخدام شكل مختلف محدد. 873 00:42:05,350 --> 00:42:06,890 وأنت لا تعرف هذا إلا إذا قال شخص ما، 874 00:42:06,890 --> 00:42:07,973 أو كنت قد فعلت ذلك من قبل. 875 00:42:07,973 --> 00:42:10,490 ولكن في المئة ط هو ما يمكن أن تستخدم عادة 876 00:42:10,490 --> 00:42:12,240 في printf ليسد في عدد صحيح. 877 00:42:12,240 --> 00:42:14,920 يمكنك أيضا استخدام في المئة د لعدد صحيح عشري. 878 00:42:14,920 --> 00:42:16,490 ولكن أنا لطيفة وبسيطة هنا. 879 00:42:16,490 --> 00:42:17,590 ومن ثم سنذهب مع ذلك. 880 00:42:17,590 --> 00:42:21,160 >> والآن اسمحوا لي المضي قدما و أعد تشغيل جعل كثافة العمليات، أدخل. 881 00:42:21,160 --> 00:42:23,328 هذا امر جيد، عدم وجود أخطاء. 882 00:42:23,328 --> 00:42:27,260 نقطة خفض موافق int--، تجربة المستخدم سيئة، لأنني لم قلت لنفسي 883 00:42:27,260 --> 00:42:27,760 ماذا أفعل. 884 00:42:27,760 --> 00:42:28,426 ولكن هذا شيء طيب. 885 00:42:28,426 --> 00:42:29,480 أنا على التقاط بسرعة. 886 00:42:29,480 --> 00:42:36,260 >> والآن اسمحوا لي أن المضي قدما في اكتب في ديفيد، موافق، Zamila، روب. 887 00:42:36,260 --> 00:42:37,820 حسنا، هذا أمر جيد. 888 00:42:37,820 --> 00:42:41,710 هذه المرة، أنا باستخدام وظيفة، قطعة اللغز، ودعا الحصول على كثافة العمليات. 889 00:42:41,710 --> 00:42:44,230 ويتحول out-- وسنقوم نرى هذا في وقت لاحق term-- 890 00:42:44,230 --> 00:42:47,730 نفذت الموظفين CS50 الحصول على سلسلة في مثل هذه الطريقة 891 00:42:47,730 --> 00:42:50,350 أنه لن يؤدي إلا جسديا الحصول على سلسلة من أجلك. 892 00:42:50,350 --> 00:42:54,340 >> وقد نفذت ذلك الحصول على كثافة العمليات في مثل هذه الطريقة أنه لن يؤدي إلا 893 00:42:54,340 --> 00:42:55,590 الحصول على عدد صحيح بالنسبة لك. 894 00:42:55,590 --> 00:42:57,830 وإذا كنت، والإنسان، لا تتعاون، انها 895 00:42:57,830 --> 00:43:00,590 حرفيا مجرد الذهاب الى أقول إعادة المحاولة، إعادة المحاولة، إعادة المحاولة، 896 00:43:00,590 --> 00:43:05,200 يجلس حرفيا هناك حلقات، حتى كنت إلزام مع بعض رقم سحري، 897 00:43:05,200 --> 00:43:07,670 مثل 50، ومرحبا 50. 898 00:43:07,670 --> 00:43:11,440 >> أو إذا كان لنا أن تشغيل هذا مرة أخرى ونوع في 42، مرحبا 42. 899 00:43:11,440 --> 00:43:15,750 وبالتالي فإن وظيفة الحصول على كثافة العمليات داخل تلك القطعة اللغز 900 00:43:15,750 --> 00:43:19,050 يكفي المنطق، ما يكفي من الفكر، لمعرفة ما هي كلمة؟ 901 00:43:19,050 --> 00:43:20,330 وما هو العدد؟ 902 00:43:20,330 --> 00:43:23,165 قبول فقط، في نهاية المطاف، وأرقام. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> لذلك تبين أن هذا ليس كل ما معبرة. 905 00:43:30,230 --> 00:43:30,910 إلى هذا الحد. 906 00:43:30,910 --> 00:43:33,690 لذلك، ياي، آخر مرة نحن ذهبت بسرعة كبيرة 907 00:43:33,690 --> 00:43:38,320 في مباريات تنفيذ، والرسوم المتحركة، والأعمال الفنية في خدش. 908 00:43:38,320 --> 00:43:42,260 وهنا، ونحن حاليا المحتوى مع العالم مرحبا، ومرحبا 50. 909 00:43:42,260 --> 00:43:43,696 >> انها ليست كل ما الملهم. 910 00:43:43,696 --> 00:43:46,070 وبالفعل، فإن هذه القليلة الأولى والأمثلة يستغرق بعض الوقت 911 00:43:46,070 --> 00:43:47,510 لزيادة في الإثارة. 912 00:43:47,510 --> 00:43:49,854 ولكن لدينا أكثر من ذلك بكثير السيطرة الآن، في واقع الأمر. 913 00:43:49,854 --> 00:43:51,770 ونحن في طريقنا للغاية تبدأ بسرعة طبقات 914 00:43:51,770 --> 00:43:53,870 على رأس هذه الأوليات الأساسية. 915 00:43:53,870 --> 00:43:56,370 >> ولكن أولا، دعونا نفهم ما هي القيود. 916 00:43:56,370 --> 00:43:58,620 في الواقع، واحدة من الأشياء الصفر لا بسهولة 917 00:43:58,620 --> 00:44:00,990 دعونا نفعل حقا نتطلع تحت غطاء محرك السيارة، 918 00:44:00,990 --> 00:44:03,740 وفهم ما الكمبيوتر، ما يمكن القيام به، 919 00:44:03,740 --> 00:44:05,250 وما هي حدوده. 920 00:44:05,250 --> 00:44:08,580 و، في الواقع، أن عدم وجود فهم، يحتمل أن تكون، على المدى الطويل 921 00:44:08,580 --> 00:44:12,520 يمكن أن يؤدي إلى موقعنا على الكتابة mistakes-- الخاصة البق، وكتابة البرامج غير آمن 922 00:44:12,520 --> 00:44:13,880 يحصل اختراق في بعض الطريق. 923 00:44:13,880 --> 00:44:17,130 >> لذلك دعونا نلقي بعض الخطوات نحو فهم هذا أفضل قليلا من قبل 924 00:44:17,130 --> 00:44:19,710 طريقة، ويقول، والمثال التالي. 925 00:44:19,710 --> 00:44:23,550 انا ذاهب الى المضي قدما في تنفيذ حقيقية سريعة برنامج يسمى الأفعى. 926 00:44:23,550 --> 00:44:25,134 مثل، دعونا نضيف بعض الأرقام معا. 927 00:44:25,134 --> 00:44:27,800 وانا ذاهب الى رمز بعض الزوايا هنا، ومجرد نسخ ولصق 928 00:44:27,800 --> 00:44:30,270 أين كنت من قبل، فقط حتى نتمكن من الحصول على الذهاب عاجلا. 929 00:44:30,270 --> 00:44:33,090 حتى الآن أنا عندي بدايات الأساسية برنامج يسمى الأفعى. 930 00:44:33,090 --> 00:44:34,670 >> ودعونا نمضي قدما ونفعل هذا. 931 00:44:34,670 --> 00:44:38,680 انا ذاهب الى المضي قدما و مثلا، intx يحصل على كثافة العمليات. 932 00:44:38,680 --> 00:44:39,430 وتعلم ماذا؟ 933 00:44:39,430 --> 00:44:40,990 دعونا نجعل تجربة أفضل للمستخدم. 934 00:44:40,990 --> 00:44:45,740 >> لذلك دعونا نقول فقط x هو، وعلى نحو فعال مطالبة المستخدم لتعطينا س. 935 00:44:45,740 --> 00:44:50,600 ثم اسمحوا لي المضي قدما ويقول: printf ماذا عن ذ، وهذه المرة يتوقع 936 00:44:50,600 --> 00:44:53,140 قيمتين من المستخدم. 937 00:44:53,140 --> 00:44:59,759 ثم دعونا نمضي قدما و مثلا، printf، مجموع x و y هو. 938 00:44:59,759 --> 00:45:01,300 والآن أنا لا تريد أن تفعل في المئة الصورة. 939 00:45:01,300 --> 00:45:09,080 أريد أن أفعل في المئة ط، مائل n ومن ثم سد العجز في قيمة المبلغ. 940 00:45:09,080 --> 00:45:10,620 >> فكيف يمكنني أن أذهب عن القيام بذلك؟ 941 00:45:10,620 --> 00:45:11,270 أتعلم؟ 942 00:45:11,270 --> 00:45:12,840 أنا أعرف كيفية استخدام المتغيرات. 943 00:45:12,840 --> 00:45:15,140 واسمحوا لي أن أعلن واحدة جديدة، كثافة العمليات ض. 944 00:45:15,140 --> 00:45:16,770 >> وانا ذاهب الى اتخاذ تخمين هنا. 945 00:45:16,770 --> 00:45:21,470 إذا كانت هناك علامات على قدم المساواة في هذا اللغة، ربما أستطيع أن مجرد القيام X زائد ذ، 946 00:45:21,470 --> 00:45:23,660 طالما أنا في نهاية بلدي فكرت مع منقوطة؟ 947 00:45:23,660 --> 00:45:28,170 الآن أستطيع أن أعود إلى هنا، والمكونات في ض، الانتهاء من هذا الفكر مع منقوطة. 948 00:45:28,170 --> 00:45:33,160 ودعونا نرى الآن، إذا كانت هذه تسلسل س lines-- هو الحصول على كثافة العمليات. 949 00:45:33,160 --> 00:45:34,770 Y هو الحصول على كثافة العمليات. 950 00:45:34,770 --> 00:45:37,980 >> إضافة x و y، تخزين قيمة في z-- لذلك، مرة أخرى، تذكر علامة المساواة 951 00:45:37,980 --> 00:45:38,560 ليس على قدم المساواة. 952 00:45:38,560 --> 00:45:41,100 انها مهمة من اليمين إلى اليسار. 953 00:45:41,100 --> 00:45:45,180 ودعونا طباعة إلى أن المبلغ x و y ليس حرفيا ض، 954 00:45:45,180 --> 00:45:46,830 ولكن ما هو داخل ض. 955 00:45:46,830 --> 00:45:50,090 لذلك دعونا جعل الأفعى - لطيفة، أي أخطاء هذه المرة. 956 00:45:50,090 --> 00:45:53,030 نقطة خفض الأفعى، أدخل، س ستكون 1. 957 00:45:53,030 --> 00:45:55,380 >> Y سيكون 2. 958 00:45:55,380 --> 00:45:58,964 ومجموع x و y هو 3. 959 00:45:58,964 --> 00:46:00,130 ذلك أن كل شيء على ما يرام وجيدة. 960 00:46:00,130 --> 00:46:03,260 >> هكذا كنت أتصور أن الرياضيات يجب أن تعمل في مثل هذا البرنامج. 961 00:46:03,260 --> 00:46:04,040 ولكن هل تعرف لماذا؟ 962 00:46:04,040 --> 00:46:06,904 هل هذا المتغير، خط 12، بل وضروريا؟ 963 00:46:06,904 --> 00:46:09,820 أنت لست بحاجة للحصول على هذه العادة من مجرد تخزين الأشياء في المتغيرات 964 00:46:09,820 --> 00:46:10,980 فقط لأنك تستطيع. 965 00:46:10,980 --> 00:46:13,550 و، في الواقع، انها عموما تصميم سيئة يعتبر 966 00:46:13,550 --> 00:46:18,100 إذا كنت تقوم بإنشاء متغير، ودعا ض في هذه الحالة، تخزين شيء في ذلك، 967 00:46:18,100 --> 00:46:21,390 وبعد ذلك على الفور استخدامه، ولكن مرة أخرى أبدا. 968 00:46:21,390 --> 00:46:24,700 لماذا تعطي شيئا اسما مثل ض إذا كنت حرفيا 969 00:46:24,700 --> 00:46:26,770 الذهاب لاستخدام هذا شيء مرة واحدة فقط، وذلك 970 00:46:26,770 --> 00:46:29,380 الأقرب إلى حيث قمت بإنشائه في المقام الأول، 971 00:46:29,380 --> 00:46:31,052 قريبة جدا من حيث خطوط للقانون؟ 972 00:46:31,052 --> 00:46:31,760 لذلك أنت تعرف لماذا؟ 973 00:46:31,760 --> 00:46:34,480 وتبين أن C هو مرن جدا. 974 00:46:34,480 --> 00:46:36,586 إذا كنت فعلا تريد المكونات في القيم هنا، 975 00:46:36,586 --> 00:46:38,210 ولست بحاجة إلى تعريف متغير جديد. 976 00:46:38,210 --> 00:46:41,680 أنا يمكن أن مجرد سد العجز في X زائد ذ، لأن C يفهم 977 00:46:41,680 --> 00:46:43,390 الحساب، والعمليات الحسابية. 978 00:46:43,390 --> 00:46:47,140 >> لذلك أستطيع أن أقول ببساطة، تفعل هذا والرياضيات، X زائد ذ، مهما كانت تلك القيم، 979 00:46:47,140 --> 00:46:50,780 سد العجز الناتج صحيح في هذه السلسلة. 980 00:46:50,780 --> 00:46:53,730 ولذلك فإن هذا قد يكون، على الرغم من فقط سطر واحد أقصر، 981 00:46:53,730 --> 00:46:58,480 أفضل تصميم، برنامج أفضل، لأنه لا يوجد أقل رمز، وبالتالي 982 00:46:58,480 --> 00:46:59,921 أقل بالنسبة لي لفهم. 983 00:46:59,921 --> 00:47:01,920 وكما انها أنظف فقط، بقدر ما نحن لسنا 984 00:47:01,920 --> 00:47:04,620 إدخال كلمات جديدة، رموز جديدة، مثل ض، 985 00:47:04,620 --> 00:47:07,510 على الرغم من أنها لا حقا خدمة الكثير من الغرض. 986 00:47:07,510 --> 00:47:12,890 >> للأسف، ليست الرياضيات جميع أنه في بعض الأحيان يمكن الاعتماد عليها. 987 00:47:12,890 --> 00:47:15,270 دعونا نمضي قدما ونفعل هذا. 988 00:47:15,270 --> 00:47:18,200 انا ذاهب الى المضي قدما الآن، والقيام بما يلي. 989 00:47:18,200 --> 00:47:27,650 >> دعونا نفعل printf، في المئة ط، بالإضافة المئة ط، يجب أن تكون في المئة ط، مائل ن. 990 00:47:27,650 --> 00:47:32,240 وانا ذاهب الى القيام this-- xyx بالإضافة إلى ذ. 991 00:47:32,240 --> 00:47:34,821 لذلك أنا ذاهب لمجرد كتابة هذا بشكل مختلف قليلا هنا. 992 00:47:34,821 --> 00:47:36,320 اسمحوا لي أن لا مجرد الاختيار التعقل سريع. 993 00:47:36,320 --> 00:47:37,986 مرة أخرى، دعونا لا نسبق الاحداث. 994 00:47:37,986 --> 00:47:41,420 جعل الأفعى، نقطة مائلة الأفعى. 995 00:47:41,420 --> 00:47:44,950 س هو 1، ص هو 2، 1 زائد 2 هو 3. 996 00:47:44,950 --> 00:47:45,870 لذلك هذا امر جيد. 997 00:47:45,870 --> 00:47:49,060 ولكن دعونا تعقيد هذا الآن قليلا، وإنشاء ملف جديد. 998 00:47:49,060 --> 00:47:53,350 >> أنا ذاهب لهذه الكلمة واحدة، أقول، [إينتس]، الجمع للأعداد صحيحة. 999 00:47:53,350 --> 00:47:55,980 اسمحوا لي أن نبدأ من حيث كنت قبل لحظة. 1000 00:47:55,980 --> 00:47:57,770 ولكن الآن دعونا نفعل بضعة أسطر أخرى. 1001 00:47:57,770 --> 00:48:03,430 اسمحوا لي أن نمضي قدما ونفعل ما يلي، printf، في المئة ط، ناقص في المئة ط، 1002 00:48:03,430 --> 00:48:08,959 هو في المئة ط، س فاصلة، فاصلة YX ناقص ذ. 1003 00:48:08,959 --> 00:48:10,750 لذلك أنا أفعل قليلا الرياضيات المختلفة هناك. 1004 00:48:10,750 --> 00:48:11,624 دعونا نفعل واحد آخر. 1005 00:48:11,624 --> 00:48:16,610 حتى في المئة ط مرات في المئة i غير المئة ط، مائل ن. 1006 00:48:16,610 --> 00:48:21,430 دعونا المكونات في العاشر، و y، ومرات خ ذ. 1007 00:48:21,430 --> 00:48:24,530 سنستخدم النجمة على جهاز الكمبيوتر الخاص بك لمرات. 1008 00:48:24,530 --> 00:48:26,390 >> كنت لا تستخدم س. x هو اسم متغير هنا. 1009 00:48:26,390 --> 00:48:28,270 استخدام النجوم للتكاثر. 1010 00:48:28,270 --> 00:48:29,020 دعونا نفعل أكثر واحد. 1011 00:48:29,020 --> 00:48:34,580 في المئة أنا Printf، مقسمة بواسطة المئة ط، هو في المئة ط، 1012 00:48:34,580 --> 00:48:40,460 ن مائل. س ص مقسوما y-- لذلك يمكنك استخدام مائل في C 1013 00:48:40,460 --> 00:48:41,502 للقيام الانقسام. 1014 00:48:41,502 --> 00:48:42,460 ودعونا نفعل الآخر. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 ما تبقى من المئة ط، مقسمة بواسطة المئة ط، هو في المئة ط. 1017 00:48:55,240 --> 00:48:59,550 xy-- والآن تبقى هو ما خلفها. 1018 00:48:59,550 --> 00:49:02,980 عند محاولة تقسيم القاسم إلى البسط، 1019 00:49:02,980 --> 00:49:05,570 كم هو خلفها أن أنت لا تستطيع أن تفرق بها؟ 1020 00:49:05,570 --> 00:49:07,910 >> لذلك ليس هناك حقا، بالضرورة، رمزا 1021 00:49:07,910 --> 00:49:09,470 استخدمنا في المدارس الابتدائية لهذا الغرض. 1022 00:49:09,470 --> 00:49:13,830 ولكن هناك في C. يمكنك يقول س مودولو ذ، حيث 1023 00:49:13,830 --> 00:49:18,000 هذه النسبة المئوية في هذا context-- مربك عندما كنت داخل 1024 00:49:18,000 --> 00:49:20,170 من علامات اقتباس مزدوجة، داخل printf، في المئة 1025 00:49:20,170 --> 00:49:21,830 يتم استخدام شكل محدد. 1026 00:49:21,830 --> 00:49:25,420 >> عند استخدام في المئة خارج أن في تعبير رياضي، 1027 00:49:25,420 --> 00:49:29,910 انها المشغل مودولو لوحدات arithmetic-- لأغراضنا 1028 00:49:29,910 --> 00:49:33,650 هنا، مجرد وسيلة، ما هو ما تبقى من العاشر مقسوما ذ؟ 1029 00:49:33,650 --> 00:49:36,130 لذلك س مقسوما ذ خ ذ مائلة. 1030 00:49:36,130 --> 00:49:38,220 ما تبقى من العاشر مقسوما ذ؟ 1031 00:49:38,220 --> 00:49:41,780 انها س ص وزارة الدفاع، كمبرمج أن أقول. 1032 00:49:41,780 --> 00:49:48,300 >> حتى لو كنت لم ترتكب أخطاء هنا، اسمحوا لي المضي قدما وجعل [إينتس]، الجمع، لطيف، 1033 00:49:48,300 --> 00:49:50,010 و[إينتس] مائلة نقطة. 1034 00:49:50,010 --> 00:49:55,270 ودعونا نمضي قدما و القيام به، دعنا نقول، 1، 10. 1035 00:49:55,270 --> 00:49:58,390 كل الحق، 1 + 10: 11، الاختيار. 1036 00:49:58,390 --> 00:50:01,240 1 ناقص 10 هو سلبي 9، والتحقق. 1037 00:50:01,240 --> 00:50:03,420 >> 1 مرات 10 هو 10، الاختيار. 1038 00:50:03,420 --> 00:50:07,090 1 مقسوما على 10 أعرف، حسنا، نحن سوف تخطي هذا واحد. 1039 00:50:07,090 --> 00:50:09,480 ما تبقى من 1 مقسوما على 10 هو 1. 1040 00:50:09,480 --> 00:50:10,680 هذا صحيح. 1041 00:50:10,680 --> 00:50:12,630 ولكن هناك خلل في هنا. 1042 00:50:12,630 --> 00:50:15,390 >> حتى واحد أضع بلدي تسليم، غير صحيح. 1043 00:50:15,390 --> 00:50:16,670 أعني، انها قريبة إلى 0. 1044 00:50:16,670 --> 00:50:20,670 1 مقسوما على 10، كما تعلمون، إذا نحن قطع بعض زوايا، بالتأكيد، انها الصفر. 1045 00:50:20,670 --> 00:50:28,050 لكن يجب أن يكون حقا 1/10، 0.1 أو 0.10، 0.1000، أو هكذا دواليك. 1046 00:50:28,050 --> 00:50:30,600 >> لا ينبغي أن يكون حقا الصفر. 1047 00:50:30,600 --> 00:50:35,990 حسنا، اتضح أن الكمبيوتر به حرفيا ما قلنا أن تفعله. 1048 00:50:35,990 --> 00:50:39,460 ونحن نفعل مثل الرياضيات س مقسوما ذ. 1049 00:50:39,460 --> 00:50:44,680 وكلا x و y، في السطور من التعليمات البرمجية في وقت سابق، أعداد صحيحة. 1050 00:50:44,680 --> 00:50:50,440 >> وعلاوة على ذلك، على الخط 15، ونحن يقول printf، مهلا، printf في المكونات 1051 00:50:50,440 --> 00:50:54,230 عدد صحيح، والمكونات في عدد صحيح، المكونات في integer-- على وجه التحديد 1052 00:50:54,230 --> 00:50:57,580 س، ثم y، ومن ثم س مقسوما ذ. x و y هم [إينتس]. 1053 00:50:57,580 --> 00:50:59,060 نحن في حالة جيدة هناك. 1054 00:50:59,060 --> 00:51:01,250 >> ولكن ما هو العاشر مقسوما العاشر؟ 1055 00:51:01,250 --> 00:51:06,790 س مقسوما ذ ينبغي أن يكون، رياضيا، 1/10، أو 0.1، 1056 00:51:06,790 --> 00:51:11,600 وهو العدد الحقيقي، العدد الحقيقي وجود، وربما، وهذه نقطة عشرية. 1057 00:51:11,600 --> 00:51:13,230 انها ليست عددا صحيحا. 1058 00:51:13,230 --> 00:51:18,290 >> ولكن ما هو الأقرب عدد صحيح إلى 10/01، أو 0.1؟ 1059 00:51:18,290 --> 00:51:21,114 نعم، انها نوع من صفر. 1060 00:51:21,114 --> 00:51:22,030 0.1 مثل هذا بكثير. 1061 00:51:22,030 --> 00:51:22,890 و1 غير هذا بكثير. 1062 00:51:22,890 --> 00:51:25,870 حتى 10/1 هو أقرب إلى 0 مما هو عليه إلى واحد. 1063 00:51:25,870 --> 00:51:30,800 >> وماذا في ذلك C تقوم به لus-- نوع من لقلنا أنه ل-- 1064 00:51:30,800 --> 00:51:32,600 واقتطاع هذا صحيح. 1065 00:51:32,600 --> 00:51:40,540 انه أخذ قيمة، وهو مرة أخرى من المفترض أن يكون شيء من هذا القبيل 0.1000، 1066 00:51:40,540 --> 00:51:41,800 0 وهكذا دواليك. 1067 00:51:41,800 --> 00:51:45,320 وانها اقتطاع كل شيء بعد العلامة العشرية 1068 00:51:45,320 --> 00:51:47,510 ذلك أن كل هذا الاشياء، لأنه لا 1069 00:51:47,510 --> 00:51:51,910 تناسب في فكرة وجود عدد صحيح، والذي هو مجرد رقم مثل سلبي 1، 0، 1، 1070 00:51:51,910 --> 00:51:55,830 صعودا وهبوطا، فإنه يلقي بعيدا كل شيء بعد العلامة العشرية لأنك 1071 00:51:55,830 --> 00:51:59,020 لا يمكن أن يصلح العشرية في عدد صحيح من حيث التعريف. 1072 00:51:59,020 --> 00:52:01,290 >> هكذا كان الجواب هنا هو صفر. 1073 00:52:01,290 --> 00:52:02,600 لذلك كيف يمكننا حل هذه المشكلة؟ 1074 00:52:02,600 --> 00:52:04,400 نحتاج حل آخر كل ذلك معا. 1075 00:52:04,400 --> 00:52:06,880 ويمكننا القيام بذلك على النحو التالي. 1076 00:52:06,880 --> 00:52:12,820 >> اسمحوا لي أن نمضي قدما وخلق جديد ملف، هذا واحد يسمى floats.c. 1077 00:52:12,820 --> 00:52:16,500 واحفظه هنا في نفس الدليل، float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 واسمحوا لي أن المضي قدما ونسخ بعض من هذا الرمز من قبل. 1080 00:52:23,260 --> 00:52:27,690 >> ولكن بدلا من الحصول على عدد صحيح، دعونا نفعل ذلك. 1081 00:52:27,690 --> 00:52:31,037 أعطني قيمة النقطة العائمة دعا س. حيث نقطة عائمة 1082 00:52:31,037 --> 00:52:33,370 القيمة هي مجرد حرفيا شيء مع النقطة العائمة. 1083 00:52:33,370 --> 00:52:34,410 ويمكن ان تتحرك إلى اليسار، إلى اليمين. 1084 00:52:34,410 --> 00:52:35,530 انها العدد الحقيقي. 1085 00:52:35,530 --> 00:52:38,050 >> واسمحوا لي أن الكلمة لا الحصول على كثافة العمليات، ولكن الحصول على تعويم، 1086 00:52:38,050 --> 00:52:41,420 الذي كان أيضا من بين القائمة من الخيارات في المكتبة C250. 1087 00:52:41,420 --> 00:52:43,220 دعونا تغيير ذ لتعويم. 1088 00:52:43,220 --> 00:52:45,000 ولذلك فإن هذا يصبح الحصول على تعويم. 1089 00:52:45,000 --> 00:52:47,620 >> والآن، نحن لا نريد أن سد العجز في [إينتس]. 1090 00:52:47,620 --> 00:52:53,130 اتضح لدينا لاستخدام في المئة و لتعويم، في المئة و لتعويم، 1091 00:52:53,130 --> 00:52:54,560 والآن حفظه. 1092 00:52:54,560 --> 00:53:01,220 والآن، تمنيت، وجعل العوامات، لطيفة، نقطة مائلة عوامات. 1093 00:53:01,220 --> 00:53:04,280 س ستكون واحدة 1. ذ ستكون 10 ثانية. 1094 00:53:04,280 --> 00:53:08,240 >> و، لطيفة، موافق بلدي بالإضافة صحيحة. 1095 00:53:08,240 --> 00:53:10,240 كنت أتمنى أكثر من ذلك، لكني نسيت أن أكتبها. 1096 00:53:10,240 --> 00:53:13,250 لذلك دعونا نذهب وإصلاح هذا الخطأ المنطقي. 1097 00:53:13,250 --> 00:53:16,280 >> دعونا نمضي قدما والاستيلاء على ما يلي. 1098 00:53:16,280 --> 00:53:18,080 سنقوم فقط تفعل القليل من النسخ واللصق. 1099 00:53:18,080 --> 00:53:20,080 وانا ذاهب الى القول ناقص. 1100 00:53:20,080 --> 00:53:21,890 >> وانا ذاهب الى القول مرة. 1101 00:53:21,890 --> 00:53:24,060 وانا ذاهب الى القول المقسمة. 1102 00:53:24,060 --> 00:53:28,240 وأنا لن تفعل مودولو، الذي هو أمر لا كما هنا، 1103 00:53:28,240 --> 00:53:33,690 مقسوما و، ومرات plus-- حسنا، دعونا نفعل ذلك مرة أخرى. 1104 00:53:33,690 --> 00:53:44,210 >> جعل العوامات، يطفو نقطة مائلة، و1، 10، and-- لطيفة، لا، موافق. 1105 00:53:44,210 --> 00:53:45,250 لذلك أنا أحمق. 1106 00:53:45,250 --> 00:53:47,000 لذلك هذا هو شائع جدا في علم الحاسوب 1107 00:53:47,000 --> 00:53:49,780 لارتكاب الأخطاء الغبية مثل هذا. 1108 00:53:49,780 --> 00:53:53,100 >> لأغراض تربوية، ما أردت حقا أن تفعل 1109 00:53:53,100 --> 00:53:57,410 تم تغيير العلم هنا إلى زائد، إلى ناقص، لمرة، 1110 00:53:57,410 --> 00:54:01,140 وعلى الانقسام، كما كنت أمل لاحظت خلال هذه العملية. 1111 00:54:01,140 --> 00:54:04,700 حتى الآن دعونا إعادة تجميع هذه برنامج، تفعل نقطة مائلة عوامات. 1112 00:54:04,700 --> 00:54:07,950 >> وللمرة الثالثة، دعونا معرفة ما اذا كان يجتمع توقعاتي. 1113 00:54:07,950 --> 00:54:21,480 1، 10، أدخل، نعم، حسنا، 1.000، مقسوما 10.000، هو 0.100000. 1114 00:54:21,480 --> 00:54:24,952 واتضح يمكننا التحكم في عدد الأرقام بعد تلك النقاط العشرية. 1115 00:54:24,952 --> 00:54:25,660 ونحن في الواقع. 1116 00:54:25,660 --> 00:54:26,790 سوف نعود إلى ذلك. 1117 00:54:26,790 --> 00:54:28,440 >> ولكن الآن، في الواقع، والرياضيات هي الصحيحة. 1118 00:54:28,440 --> 00:54:30,090 لذلك، مرة أخرى، ما هي الوجبات الجاهزة هنا؟ 1119 00:54:30,090 --> 00:54:33,050 وتبين أن في C، هناك ليس فقط مجرد strings-- و، في الواقع، 1120 00:54:33,050 --> 00:54:36,120 لا توجد في الواقع، لأننا إضافة أولئك الذين لديهم مكتبة CS50. 1121 00:54:36,120 --> 00:54:37,710 ولكن ليست هناك [إينتس] فقط. 1122 00:54:37,710 --> 00:54:38,990 >> هناك يطفو أيضا. 1123 00:54:38,990 --> 00:54:42,810 واتضح مجموعة من البيانات الأخرى أنواع أيضا، أننا سوف تستخدم قبل فترة طويلة. 1124 00:54:42,810 --> 00:54:46,270 تبين إذا كنت تريد واحدة الطابع، وليس سلسلة من الأحرف، 1125 00:54:46,270 --> 00:54:47,610 يمكنك استخدام مجرد شار. 1126 00:54:47,610 --> 00:54:52,350 >> تبين أنه إذا كنت تريد منطقي، قيمة منطقية، صحيحة أو خاطئة فقط، 1127 00:54:52,350 --> 00:54:56,840 بفضل مكتبة CS50، لدينا إضافة إلى C نوع البيانات منطقي كذلك. 1128 00:54:56,840 --> 00:54:59,180 لكنه يقدم أيضا في العديد من اللغات الأخرى كذلك. 1129 00:54:59,180 --> 00:55:04,130 واتضح أنه في بعض الأحيان كنت تحتاج أعداد أكبر ثم تأتي افتراضيا 1130 00:55:04,130 --> 00:55:05,210 مع [إينتس] وعوامات. 1131 00:55:05,210 --> 00:55:10,590 >> و، في الواقع، مزدوج هو رقم أن لا يستخدم 32 بت، ولكن 64 بت. 1132 00:55:10,590 --> 00:55:14,990 ومنذ فترة طويلة طويلة هو الرقم الذي لا يستخدم 32 بت ولكن 64 بت، 1133 00:55:14,990 --> 00:55:19,190 على التوالي، لنقطة عائمة القيم وصحيحة، على التوالي. 1134 00:55:19,190 --> 00:55:22,780 لذلك دعونا فعلا الآن نرى في هذا العمل. 1135 00:55:22,780 --> 00:55:26,150 >> انا ذاهب الى المضي قدما هنا وجهز البرنامج الآخر. 1136 00:55:26,150 --> 00:55:32,020 هنا، انا ذاهب الى المضي قدما ولا تشمل CS50.h. 1137 00:55:32,020 --> 00:55:34,910 واسمحوا لي أن أذهب، وتشمل IO.h. القياسية 1138 00:55:34,910 --> 00:55:37,320 >> وستلاحظ شيئا غير تقليدي يحدث هنا. 1139 00:55:37,320 --> 00:55:40,592 انها ليست لون الترميز الأمور في بنفس الطريقة كما فعلت من قبل. 1140 00:55:40,592 --> 00:55:43,550 واتضح، وهذا لأنني لم تعط الشيء اسم الملف. 1141 00:55:43,550 --> 00:55:47,270 >> أنا ذاهب لهذه الكلمة واحدة sizeof.c، وضرب حفظ. 1142 00:55:47,270 --> 00:55:51,039 ولاحظ ما يحدث لبلدي جدا كود الأبيض ضد هذه الخلفية السوداء. 1143 00:55:51,039 --> 00:55:52,830 الآن، على الأقل هناك بعض الأرجواني في هناك. 1144 00:55:52,830 --> 00:55:54,490 ومن أبرز بناء الجملة. 1145 00:55:54,490 --> 00:55:57,700 >> هذا لأنه، بكل بساطة، لقد قال IDE أي نوع من الملفات 1146 00:55:57,700 --> 00:56:01,060 فمن خلال إعطائها اسما، و على وجه التحديد ملحق ملف. 1147 00:56:01,060 --> 00:56:03,620 الآن، دعونا نمضي قدما ونفعل هذا. 1148 00:56:03,620 --> 00:56:08,910 انا ذاهب الى المضي قدما وجدا ببساطة بطباعة منطقي following-- 1149 00:56:08,910 --> 00:56:11,080 غير LU في المئة. 1150 00:56:11,080 --> 00:56:12,950 >> سوف نعود إلى أن في مجرد لحظة. 1151 00:56:12,950 --> 00:56:15,840 ثم انا ذاهب الى حجم طباعة منطقي. 1152 00:56:15,840 --> 00:56:18,170 والآن، فقط لانقاذ نفسي بعض الوقت، وأنا 1153 00:56:18,170 --> 00:56:20,280 تنوي القيام به بشكل عام مجموعة من هذه في وقت واحد. 1154 00:56:20,280 --> 00:56:24,620 وعلى وجه التحديد، وانا ذاهب ل تغيير هذا إلى شار وشار. 1155 00:56:24,620 --> 00:56:27,760 هذا واحد، انا ذاهب الى تغيير إلى ضعف والضعف. 1156 00:56:27,760 --> 00:56:31,440 >> هذا واحد، انا ذاهب الى تغيير لتعويم وتعويم. 1157 00:56:31,440 --> 00:56:35,670 هذا واحد، وانا ذاهب ل تغيير إلى int وعدد صحيح. 1158 00:56:35,670 --> 00:56:38,660 وهذا واحد، وانا ذاهب التغيير إلى فترة طويلة طويلة. 1159 00:56:38,660 --> 00:56:40,840 وانها لا تزال آخذة منذ وقت طويل، طويل. 1160 00:56:40,840 --> 00:56:44,572 >> ومن ثم، أخيرا، أعطى نفسي واحد الكثير من، سلسلة. 1161 00:56:44,572 --> 00:56:47,030 وتبين أن في C، هناك مشغل خاص يسمى 1162 00:56:47,030 --> 00:56:50,260 حجم هذا هو حرفيا الذهاب الى عند تشغيله، 1163 00:56:50,260 --> 00:56:52,099 يقول لنا حجم كل من هذه المتغيرات. 1164 00:56:52,099 --> 00:56:53,890 وهذا هو الطريق، والآن، يمكننا ربط العودة 1165 00:56:53,890 --> 00:56:57,140 للنقاش الاسبوع الماضي البيانات والتمثيل. 1166 00:56:57,140 --> 00:57:00,330 >> اسمحوا لي أن المضي قدما وتجميع حجم حجم الخط المائل نقطة من. 1167 00:57:00,330 --> 00:57:01,210 ودعونا نرى. 1168 00:57:01,210 --> 00:57:05,210 وتبين أن في C، على وجه التحديد على CS50 IDE، 1169 00:57:05,210 --> 00:57:08,170 على وجه التحديد على نظام التشغيل أوبونتو، 1170 00:57:08,170 --> 00:57:11,100 وهو تشغيل 64 بت النظام في هذه الحالة، 1171 00:57:11,100 --> 00:57:14,189 منطقي سوف استخدام بايت واحد من الفضاء. 1172 00:57:14,189 --> 00:57:16,480 هذه هي الطريقة التي يتم قياس حجم، ليس في بت، ولكن في بايت. 1173 00:57:16,480 --> 00:57:18,690 وأذكر أن بايت واحد هو ثمانية بت. 1174 00:57:18,690 --> 00:57:22,030 لذلك منطقي، حتى ولو كنت من الناحية الفنية تحتاج فقط 0 أو 1، 1175 00:57:22,030 --> 00:57:24,092 انها الإسراف قليلا كيف قمنا بتنفيذه. 1176 00:57:24,092 --> 00:57:26,800 انها في طريقها فعلا إلى استخدام ككل byte-- ذلك كل الأصفار، وربما 1177 00:57:26,800 --> 00:57:31,050 كل منها، أو شيء من هذا القبيل، أو واحد فقط 1 من بين ثمانية بت. 1178 00:57:31,050 --> 00:57:34,962 >> وشار، في الوقت نفسه، وتستخدم لحرف مثل حرف ASCII في الأسبوع الماضي، 1179 00:57:34,962 --> 00:57:36,170 سيكون حرف واحد. 1180 00:57:36,170 --> 00:57:42,340 وأن synchs مع مفهومنا لل كونها لا يزيد عن 256 bits-- بدلا من ذلك، 1181 00:57:42,340 --> 00:57:45,360 synchs حتى مع كونها لا أطول من 8 بت، والتي 1182 00:57:45,360 --> 00:57:47,450 يعطينا ما لا يقل عن 256 القيم. 1183 00:57:47,450 --> 00:57:49,680 مزدوج هو الذهاب الى يكون 8 بايت أو 64 بت. 1184 00:57:49,680 --> 00:57:50,510 >> وتعويم هو 4. 1185 00:57:50,510 --> 00:57:51,690 عدد صحيح هو 4. 1186 00:57:51,690 --> 00:57:52,980 ومنذ فترة طويلة، هي مدة 8. 1187 00:57:52,980 --> 00:57:54,716 والسلسلة 8. 1188 00:57:54,716 --> 00:57:55,840 ولكن لا تقلق بشأن ذلك. 1189 00:57:55,840 --> 00:57:57,340 ونحن في طريقنا إلى قشر العودة تلك الطبقة. 1190 00:57:57,340 --> 00:57:59,940 كما تبين، يمكن سلاسل أن تكون أطول من 8 بايت. 1191 00:57:59,940 --> 00:58:02,310 >> وبالفعل، كتبنا سلاسل بالفعل، مرحبا العالم، 1192 00:58:02,310 --> 00:58:03,700 أطول من 8 بايت. 1193 00:58:03,700 --> 00:58:06,270 ولكن سوف نعود ل أن في مجرد لحظة. 1194 00:58:06,270 --> 00:58:09,690 ولكن اتولى هنا هو التالي. 1195 00:58:09,690 --> 00:58:15,320 >> أي جهاز كمبيوتر ليس لديها سوى محدود مقدار الذاكرة والمكان. 1196 00:58:15,320 --> 00:58:17,860 يمكنك تخزين فقط الكثير ملفات على جهاز ماكنتوش أو كمبيوتر شخصي. 1197 00:58:17,860 --> 00:58:23,030 يمكنك تخزين فقط الكثير من البرامج في ذاكرة الوصول العشوائي تشغيل في وقت واحد، بالضرورة، حتى 1198 00:58:23,030 --> 00:58:26,360 مع الذاكرة الظاهرية، ل لديك كمية محدودة من ذاكرة الوصول العشوائي. 1199 00:58:26,360 --> 00:58:28,990 >> وفقط لpicture-- إذا لم يسبق لك أن فتحت جهاز كمبيوتر محمول 1200 00:58:28,990 --> 00:58:31,300 أو أمر ذاكرة إضافية للكمبيوتر، ل 1201 00:58:31,300 --> 00:58:33,670 قد لا يعرف أن داخل جهاز الكمبيوتر الخاص بك 1202 00:58:33,670 --> 00:58:36,590 هو الشيء الذي يبدو قليلا من هذا القبيل. 1203 00:58:36,590 --> 00:58:40,540 لذلك هذا هو مجرد شركة مشتركة اسمه حاسمة أن يجعل من ذاكرة الوصول العشوائي لأجهزة الكمبيوتر. 1204 00:58:40,540 --> 00:58:43,620 وذاكرة الوصول العشوائي هو المكان البرامج العيش في حين أنها تقوم بتشغيل. 1205 00:58:43,620 --> 00:58:46,630 >> لذلك على كل ماكنتوش أو كمبيوتر شخصي، عند مضاعفة انقر فوق البرنامج، ويفتح، 1206 00:58:46,630 --> 00:58:48,921 ويفتح بعض مستند Word أو شيء من هذا القبيل، 1207 00:58:48,921 --> 00:58:51,764 لأنه يخزن مؤقتا في ذاكرة الوصول العشوائي، لأن ذاكرة الوصول العشوائي هو أسرع 1208 00:58:51,764 --> 00:58:53,680 من القرص الثابت، أو قرص الحالة الصلبة الخاصة بك. 1209 00:58:53,680 --> 00:58:56,600 حتى انها مجرد أين تذهب البرامج للعيش عندما تقوم بتشغيل، 1210 00:58:56,600 --> 00:58:58,060 أو عندما يتم استخدام الملفات. 1211 00:58:58,060 --> 00:59:00,890 >> بحيث يكون لديك أشياء تبدو مثل هذا داخل الكمبيوتر المحمول، 1212 00:59:00,890 --> 00:59:03,320 أو أشياء أكبر قليلا داخل سطح المكتب الخاص بك. 1213 00:59:03,320 --> 00:59:07,440 ولكن المفتاح هو أن يكون لديك فقط عدد محدود من هذه الأشياء. 1214 00:59:07,440 --> 00:59:11,230 وهناك فقط كمية محدودة من الأجهزة يجلس على هذا المكتب حق 1215 00:59:11,230 --> 00:59:11,730 هنا. 1216 00:59:11,730 --> 00:59:15,920 >> لذلك، بالتأكيد، لا يمكننا تخزين أرقام طويلة لا نهاية. 1217 00:59:15,920 --> 00:59:19,030 و، ولكن، إذا كنت تعتقد أن يعود إلى المدرسة الابتدائية، كم من الأرقام يمكن 1218 00:59:19,030 --> 00:59:21,400 لديك إلى اليمين نقطة عشرية؟ 1219 00:59:21,400 --> 00:59:24,680 لهذه المسألة، وكيف العديد من الأرقام يمكن لديك إلى يسار الفاصلة العشرية؟ 1220 00:59:24,680 --> 00:59:26,300 حقا، كثير ما لا نهاية. 1221 00:59:26,300 --> 00:59:30,840 >> الآن، ربما نحن البشر فقط تعلم كيف تنطق مليون، 1222 00:59:30,840 --> 00:59:34,990 ومليار تريليون دولار، و كوادريليون، وكوينتيليون. 1223 00:59:34,990 --> 00:59:39,370 وأنا دفع حدود بلادي understanding-- أو my-- أفهم 1224 00:59:39,370 --> 00:59:41,110 أرقام، ولكن بلدي نطق الأرقام. 1225 00:59:41,110 --> 00:59:44,720 ولكن يمكنهم الحصول كبير بلا حدود مع عدد لانهائي من الأرقام إلى اليسار 1226 00:59:44,720 --> 00:59:47,050 أو إلى اليمين من العلامة العشرية. 1227 00:59:47,050 --> 00:59:50,040 >> ولكن أجهزة الكمبيوتر لديها فقط كمية محدودة من الذاكرة، 1228 00:59:50,040 --> 00:59:53,510 عدد محدود من الترانزستورات، ل عدد محدود من المصابيح داخل. 1229 00:59:53,510 --> 00:59:57,350 ذلك ما يحدث عندما كنت قد نفد من الفضاء؟ 1230 00:59:57,350 --> 00:59:59,620 وبعبارة أخرى، إذا كنت بذاكرتي إلى الأسبوع الماضي 1231 00:59:59,620 --> 01:00:03,160 عندما تحدثنا عن أرقام أنفسهم أن تكون ممثلة في ثنائي، 1232 01:00:03,160 --> 01:00:05,480 لنفترض أن لدينا هذا 8 بت قيمة هنا. 1233 01:00:05,480 --> 01:00:08,290 >> ولدينا سبعة 1 واحد 0. 1234 01:00:08,290 --> 01:00:10,827 ونفترض أننا نريد إضافة 1 إلى هذه القيمة. 1235 01:00:10,827 --> 01:00:12,410 هذا هو رقم كبير حقا الآن. 1236 01:00:12,410 --> 01:00:16,610 >> هذا هو 254، إذا كنت أتذكر الرياضيات من الأسبوع الماضي حق. 1237 01:00:16,610 --> 01:00:19,480 ولكن ماذا لو قمت بتغيير أن أقصى اليمين 0 إلى 1؟ 1238 01:00:19,480 --> 01:00:22,800 عدد كله، من بطبيعة الحال، يصبح ثمانية 1 ل. 1239 01:00:22,800 --> 01:00:24,050 لذلك نحن لا تزال جيدة. 1240 01:00:24,050 --> 01:00:27,204 >> وهذا ربما يمثل 255، اعتمادا على الرغم من على السياق 1241 01:00:27,204 --> 01:00:29,120 أنها يمكن أن تمثل في الواقع رقم سالب. 1242 01:00:29,120 --> 01:00:31,240 ولكن أكثر على أن وقت آخر. 1243 01:00:31,240 --> 01:00:34,220 هذا يبدو وكأنه على وشك مرتفعا كما يمكنني الاعتماد. 1244 01:00:34,220 --> 01:00:35,290 >> الآن، انها فقط 8 بت. 1245 01:00:35,290 --> 01:00:38,170 وبلدي ماك، بالتأكيد، لديها طريقة أكثر من 8 بت من الذاكرة. 1246 01:00:38,170 --> 01:00:39,170 ولكن لا توجد لديها محدود. 1247 01:00:39,170 --> 01:00:43,230 لذلك تنطبق نفس الحجة، حتى لو كنا لدينا أكثر من هؤلاء الصغار على الشاشة. 1248 01:00:43,230 --> 01:00:47,020 >> ولكن ماذا يحدث إذا كنت تخزين هذا الرقم، 255، 1249 01:00:47,020 --> 01:00:49,290 وتريد الاعتماد أعلى 1 بت؟ 1250 01:00:49,290 --> 01:00:51,600 تريد أن تذهب 255-256. 1251 01:00:51,600 --> 01:00:55,800 المشكلة، بالطبع، هو أنه إذا كنت بدء العد من الصفر مثل الأسبوع الماضي، 1252 01:00:55,800 --> 01:00:59,670 لا يمكنك الاعتماد يصل كما 256، ناهيك عن 257، 1253 01:00:59,670 --> 01:01:02,584 ناهيك عن 258 متر بسبب ما يحدث عند إضافة 1؟ 1254 01:01:02,584 --> 01:01:05,000 إذا كنت تفعل المدرسة الابتدائية القديمة النهج، كنت وضعت 1 هنا، 1255 01:01:05,000 --> 01:01:08,150 ثم 1 زائد 1 هو 2، ولكن هذا حقا صفر، كنت تحمل 1، 1256 01:01:08,150 --> 01:01:09,695 حمل 1، حمل 1. 1257 01:01:09,695 --> 01:01:12,620 كل هذه الأمور، هذه 1، يذهب إلى الصفر. 1258 01:01:12,620 --> 01:01:17,820 وانتهى بك الأمر، نعم، كمن أشار، 1 على الجانب الأيسر. 1259 01:01:17,820 --> 01:01:22,540 ولكن كل ما تستطيع في الواقع نرى وتناسب في الذاكرة 1260 01:01:22,540 --> 01:01:27,960 هو فقط ثمانية 0، والذي هو القول في مرحلة ما إذا كنت، كمبيوتر، 1261 01:01:27,960 --> 01:01:32,490 حاول عد عالية بما فيه الكفاية حتى، كنت الذهاب إلى التفاف حولها، على ما يبدو، 1262 01:01:32,490 --> 01:01:35,850 إلى الصفر، أو ربما حتى السلبي الأرقام، التي هي أقل حتى من الصفر. 1263 01:01:35,850 --> 01:01:37,260 >> ويمكننا أن نرى نوع من هذا. 1264 01:01:37,260 --> 01:01:39,900 اسمحوا لي أن المضي قدما والكتابة برنامج سريع الحقيقي هنا. 1265 01:01:39,900 --> 01:01:43,690 اسمحوا لي أن المضي قدما والكتابة برنامج يسمى تجاوز. 1266 01:01:43,690 --> 01:01:49,980 تشمل CS50.h، وتشمل معيار IO.h-- أوه، 1267 01:01:49,980 --> 01:01:51,730 فاتني حقا بلدي تسليط الضوء على تركيب. 1268 01:01:51,730 --> 01:01:54,440 لذلك دعونا حفظ هذا كما overflow.c. 1269 01:01:54,440 --> 01:01:57,084 >> والآن الباحث الرئيسي void-- وقبل وقت طويل، وسوف نقوم 1270 01:01:57,084 --> 01:01:59,500 أعود لشرح لماذا نحن الاستمرار في الكتابة الفراغ الرئيسي كثافة العمليات. 1271 01:01:59,500 --> 01:02:02,080 لكنه الآن، دعونا نفعل فقط انها، مع ذلك أمرا مفروغا منه. 1272 01:02:02,080 --> 01:02:06,200 دعونا نعطي نفسي كثافة العمليات، وتهيئة إلى 0. 1273 01:02:06,200 --> 01:02:11,716 >> دعونا ثم القيام لكثافة أحصل zero-- في الواقع، دعونا نفعل حلقة لا نهائية 1274 01:02:11,716 --> 01:02:12,590 ونرى ما سيحدث. 1275 01:02:12,590 --> 01:02:22,440 بينما صحيح، ثم دعونا طباعة ن هو في المئة ط، مائل ن، والمكونات في ن. 1276 01:02:22,440 --> 01:02:27,200 ولكن، الآن، دعونا نفعل ن ن يحصل زائد 1. 1277 01:02:27,200 --> 01:02:29,660 >> لذلك وبعبارة أخرى، على كل تكرار هذه حلقة لا نهائية، 1278 01:02:29,660 --> 01:02:32,550 دعونا نلقي قيمة ن، و وإضافة 1 إلى ذلك، وبعد ذلك 1279 01:02:32,550 --> 01:02:34,350 تخزين النتيجة مرة أخرى في ن على اليسار. 1280 01:02:34,350 --> 01:02:37,150 و، في الواقع، شاهدنا بناء الجملة قليلا من هذا القبيل، لفترة وجيزة. 1281 01:02:37,150 --> 01:02:39,730 خدعة هو بارد بدلا من ذلك الكتابة عن هذا الخروج، 1282 01:02:39,730 --> 01:02:42,770 هل يمكن القول فعلا زائد ن يساوي 1. 1283 01:02:42,770 --> 01:02:47,480 >> أو إذا كنت تريد حقا أن تكون نزوة، هل يمكن القول ن زائد زائد منقوطة. 1284 01:02:47,480 --> 01:02:50,130 ولكن هذه الأخيران هما فقط ما كنا ندعو نحوي السكر 1285 01:02:50,130 --> 01:02:50,790 لأول شيء. 1286 01:02:50,790 --> 01:02:53,456 >> وأول شيء هو أكثر وضوحا، غرامة تماما، صحيح تماما. 1287 01:02:53,456 --> 01:02:55,470 ولكن هذا هو أكثر شيوعا، وأنا أقول. 1288 01:02:55,470 --> 01:02:57,210 ولذا فإننا سوف تفعل هذا لمجرد لحظة. 1289 01:02:57,210 --> 01:03:01,685 >> دعونا نجعل الآن تجاوز، الذي يبدو المشؤومة بدلا من ذلك، دوت مائل تجاوز. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 دعونا نرى، ن يزداد كبيرة جدا. 1292 01:03:09,852 --> 01:03:11,310 ولكن دعونا نفكر، كيف كبيرة يمكن ن الحصول على؟ 1293 01:03:11,310 --> 01:03:12,870 >> ن هو عدد صحيح. 1294 01:03:12,870 --> 01:03:16,400 رأينا منذ لحظة مع حجم المثال أن عدد صحيح أربعة بايت. 1295 01:03:16,400 --> 01:03:22,070 ونحن نعلم من الأسبوع الماضي، أربعة بايت هو 32 بت، ل8 مرات 4، وهذا هو 32. 1296 01:03:22,070 --> 01:03:23,460 التي ستكون 4000000000. 1297 01:03:23,460 --> 01:03:25,802 >> ونحن ما يصل إلى 800،000. 1298 01:03:25,802 --> 01:03:28,510 هذا هو ذاهب الى اتخاذ إلى الأبد العد عالية كما كنت ربما يمكن. 1299 01:03:28,510 --> 01:03:30,635 لذلك أنا ذاهب إلى المضي قدما، كما كنت قد قبل فترة طويلة، 1300 01:03:30,635 --> 01:03:34,910 وضرب تحكم C-- بصراحة، تحكم C، والكثير، حيث تحكم C عموما 1301 01:03:34,910 --> 01:03:36,034 وسائل إلغاء. 1302 01:03:36,034 --> 01:03:38,200 للأسف، لأن هذا يعمل في السحابة، 1303 01:03:38,200 --> 01:03:41,190 في بعض الأحيان سحابة من بصق الكثير من الاشياء، 1304 01:03:41,190 --> 01:03:44,180 الكثير من الانتاج، وانها سوف يستغرق بعض الوقت القليل لإدخال بلدي 1305 01:03:44,180 --> 01:03:45,630 للوصول الى سحابة. 1306 01:03:45,630 --> 01:03:49,240 حتى على الرغم من أنني ضرب السيطرة C بضع ثوان قبل، 1307 01:03:49,240 --> 01:03:53,110 هذا هو بالتأكيد الجانب تأثير حلقة لا نهائية. 1308 01:03:53,110 --> 01:03:56,070 >> وحتى في مثل هذه الحالات، ونحن الذهاب إلى ترك أن يكون. 1309 01:03:56,070 --> 01:03:59,050 ونحن في طريقنا لإضافة آخر نافذة الصالة أكثر من هنا 1310 01:03:59,050 --> 01:04:03,186 مع زائد، والتي بالطبع لا من هذا القبيل، نظرا لأنه لا يزال يفكر. 1311 01:04:03,186 --> 01:04:05,310 ودعونا نمضي قدما ويكون أكثر من ذلك بقليل معقولة. 1312 01:04:05,310 --> 01:04:07,768 >> انا ذاهب الى المضي قدما والقيام هذا فقط كثير محدود مرات. 1313 01:04:07,768 --> 01:04:10,047 دعونا استخدام للحلقة، التي أشرت إليها سابقا. 1314 01:04:10,047 --> 01:04:10,630 دعونا نفعل ذلك. 1315 01:04:10,630 --> 01:04:13,430 أعطني كثافة متغير آخر ط يحصل 0. 1316 01:04:13,430 --> 01:04:17,430 أنا أقل من، دعنا نقول، 64 ط ++. 1317 01:04:17,430 --> 01:04:24,010 والآن اسمحوا لي أن المضي قدما والطباعة من ن هو في المئة ط، ن فاصلة. 1318 01:04:24,010 --> 01:04:27,547 ثم n-- هذا لا يزال ذاهب الى اتخاذ إلى الأبد. 1319 01:04:27,547 --> 01:04:28,130 دعونا نفعل ذلك. 1320 01:04:28,130 --> 01:04:30,620 >> ن يحصل ن مرات (2). 1321 01:04:30,620 --> 01:04:34,140 أو أننا يمكن أن تكون نزوة والقيام الأوقات يساوي 2. 1322 01:04:34,140 --> 01:04:37,120 ولكن دعنا نقول فقط ن يساوي نفسه، مرة 2. 1323 01:04:37,120 --> 01:04:39,321 وبعبارة أخرى، في هذا النسخة الجديدة من البرنامج، 1324 01:04:39,321 --> 01:04:41,820 أنا لا أريد أن ننتظر إلى الأبد من مثل 800،000 إلى 4 مليارات دولار. 1325 01:04:41,820 --> 01:04:43,070 دعونا فقط الحصول على هذا أكثر مع. 1326 01:04:43,070 --> 01:04:44,920 >> دعونا مضاعفة فعلا ن في كل مرة. 1327 01:04:44,920 --> 01:04:47,660 التي، أذكر، تضاعف هي عكس وجود، بطبيعة الحال. 1328 01:04:47,660 --> 01:04:50,035 وبينما الأسبوع الماضي لدينا شيء مرة أخرى، ومرة ​​أخرى، 1329 01:04:50,035 --> 01:04:52,200 ومرة أخرى، بسرعة فائقة، سوف تضاعف بالتأكيد 1330 01:04:52,200 --> 01:04:58,080 يأتينا من 1 إلى أكبر ممكن القيمة التي نستطيع أن نعول عليها مع عدد صحيح. 1331 01:04:58,080 --> 01:04:59,750 >> لذلك دعونا نفعل هذا بالضبط. 1332 01:04:59,750 --> 01:05:01,720 وسوف نعود إلى هذا قبل فترة طويلة. 1333 01:05:01,720 --> 01:05:04,180 ولكن هذا، مرة أخرى، هو تماما مثل كتلة تكرار في خدش. 1334 01:05:04,180 --> 01:05:05,600 وسوف تستخدم هذه قبل وقت طويل. 1335 01:05:05,600 --> 01:05:10,170 >> هذا يعني فقط العد من الصفر حتى، ولكن ليس على قدم المساواة، إلى 64. 1336 01:05:10,170 --> 01:05:14,285 وعلى كل التكرار من هذا حلقة، وتبقي فقط تزايد ط. 1337 01:05:14,285 --> 01:05:18,990 لذلك أنا ++ - وهذا البناء العام على خط 7 هو مجرد وسيلة عظمى المشتركة 1338 01:05:18,990 --> 01:05:22,290 تكرار بعض خطوط الرمز، بعض عدة مرات. 1339 01:05:22,290 --> 01:05:23,362 التي خطوط للقانون؟ 1340 01:05:23,362 --> 01:05:25,570 هذه الأقواس المجعدة، كما كنت قد استقاها من الآن، 1341 01:05:25,570 --> 01:05:26,780 يعني، القيام بما يلي. 1342 01:05:26,780 --> 01:05:29,510 >> انها في مثل خدش، عندما أنه يحتوي على كتل صفراء 1343 01:05:29,510 --> 01:05:32,680 وغيرها من الألوان هذا النوع من احتضان أو عناق الكتل الأخرى. 1344 01:05:32,680 --> 01:05:34,750 هذا ما تلك مجعد الأقواس يفعلون هنا. 1345 01:05:34,750 --> 01:05:40,200 حتى إذا حصلت على جملة بلدي right-- لك يمكن رؤية رمز الجزرة في وسائل C 1346 01:05:40,200 --> 01:05:42,706 هذا هو عدد المرات التي كنت محاولة حل هذه المشكلة. 1347 01:05:42,706 --> 01:05:45,330 لذلك دعونا نتخلص من أن واحدا تماما، وإغلاق هذه النافذة. 1348 01:05:45,330 --> 01:05:46,520 وسنستخدم واحدة جديدة. 1349 01:05:46,520 --> 01:05:51,980 جعل الفائض، مائل نقطة تجاوز، أدخل، كل الحق، 1350 01:05:51,980 --> 01:05:53,090 يبدو سيئا في البداية. 1351 01:05:53,090 --> 01:05:56,200 ولكن دعونا انتقل إلى الوراء في الوقت المناسب، لأنني فعلت ذلك 64 مرات. 1352 01:05:56,200 --> 01:05:58,700 >> وتلاحظ أول مرة، ن هو 1. 1353 01:05:58,700 --> 01:06:03,110 المرة الثانية، ن هو 2، ثم 4 ثم 8 ثم 16. 1354 01:06:03,110 --> 01:06:09,450 ويبدو أن أقرب وقت أحصل على ما يقرب من 1 مليار دولار، 1355 01:06:09,450 --> 01:06:12,800 إذا كنت يتضاعف مرة أخرى، أن يجب أن تعطيني 2 مليار دولار. 1356 01:06:12,800 --> 01:06:14,980 ولكن تبين، انها الحق على أعتاب. 1357 01:06:14,980 --> 01:06:18,930 >> وهكذا تجاوزات في الواقع عدد صحيح من 1000000000 1358 01:06:18,930 --> 01:06:23,514 إلى سلبية تقريبا 2 مليار، لأن عددا صحيحا، 1359 01:06:23,514 --> 01:06:25,430 خلافا لأننا أرقام وعلى افتراض الأسبوع الماضي، 1360 01:06:25,430 --> 01:06:28,397 يمكن أن تكون إيجابية وسلبية في الواقع وفي جهاز الكمبيوتر. 1361 01:06:28,397 --> 01:06:30,730 واحدة على الأقل حتى تلك سرقة فعال بت. 1362 01:06:30,730 --> 01:06:34,190 لذلك لدينا حقا 31 بت فقط، أو 2000000000 القيم الممكنة. 1363 01:06:34,190 --> 01:06:38,220 >> ولكن الآن، والوجبات الجاهزة هي تماما ببساطة، كل ما هذه الأرقام 1364 01:06:38,220 --> 01:06:42,280 ومهما كانت الرياضيات، شيئا سيئا يحدث في نهاية المطاف، 1365 01:06:42,280 --> 01:06:46,980 لأنه في نهاية المطاف تحاول نستبدل بت واحد عدة مرات أيضا. 1366 01:06:46,980 --> 01:06:51,060 وتذهب نحو فعال من جميع 1 لربما كل ل0، أو ربما 1367 01:06:51,060 --> 01:06:54,260 فقط بعض نمط آخر أنه بشكل واضح، وهذا يتوقف على السياق، 1368 01:06:54,260 --> 01:06:56,342 يمكن أن تفسر على أنها رقما سالبا. 1369 01:06:56,342 --> 01:06:59,300 وهكذا يبدو الاعلى أنا ويمكن الاعتماد في هذا البرنامج بالذات 1370 01:06:59,300 --> 01:07:01,210 هو فقط ما يقرب من 1 مليار دولار. 1371 01:07:01,210 --> 01:07:02,760 ولكن هناك حل جزئي هنا. 1372 01:07:02,760 --> 01:07:03,480 أتعلم؟ 1373 01:07:03,480 --> 01:07:07,600 >> اسمحوا لي أن تغيير من كثافة العمليات لفترة طويلة طويلة. 1374 01:07:07,600 --> 01:07:10,633 واسمحوا لي أن المضي قدما هنا وsay-- أنا ذاهب ل 1375 01:07:10,633 --> 01:07:12,290 لتغيير هذا لفترة طويلة غير موقعة. 1376 01:07:12,290 --> 01:07:16,860 أو، دعونا نرى، لم أكن أتذكر نفسي. 1377 01:07:16,860 --> 01:07:19,920 >> دعونا نمضي قدما وجعل الفائض. 1378 01:07:19,920 --> 01:07:21,860 لا، هذا ليس هو، بكالوريوس في القانون، وشكرا لكم. 1379 01:07:21,860 --> 01:07:23,430 حتى في بعض الأحيان رنة يمكن أن تكون مفيدة. 1380 01:07:23,430 --> 01:07:27,550 لم أكن أتذكر ما شكل كان محدد لفترة طويلة طويلة. 1381 01:07:27,550 --> 01:07:28,950 >> ولكن، في الواقع، وقال لي رنة. 1382 01:07:28,950 --> 01:07:31,570 الأخضر هو نوع من أنواع جيدة، لا يزال يعني أنك ارتكبت خطأ. 1383 01:07:31,570 --> 01:07:33,190 انها التخمين أن قصدته بكالوريوس في القانون. 1384 01:07:33,190 --> 01:07:38,750 >> لذلك اسمحوا لي أن أغتنم انها المشورة، منذ فترة طويلة عدد عشري طويلة، ما عدا ذلك. 1385 01:07:38,750 --> 01:07:43,190 واسمحوا لي أن أعد به، نقطة خفض الفائض، وأدخل. 1386 01:07:43,190 --> 01:07:45,020 والآن ما هو بارد هو هذا. 1387 01:07:45,020 --> 01:07:49,140 >> إذا كنت انتقل إلى الوراء في الوقت المناسب، ونحن لا تزال بدء عد في نفس place-- 1، 2، 4، 1388 01:07:49,140 --> 01:07:50,220 8 و 16. 1389 01:07:50,220 --> 01:07:54,860 إشعار، وحصلنا على كل الطريقة تصل إلى 1 مليار دولار. 1390 01:07:54,860 --> 01:07:57,070 ولكن بعد ذلك نحن بأمان الحصول على 2 مليار دولار. 1391 01:07:57,070 --> 01:08:01,300 >> ثم نصل إلى 4 مليار دولار، ثم 8 مليارات و 17 مليار دولار. 1392 01:08:01,300 --> 01:08:03,340 ونذهب العالي، و أعلى وأعلى. 1393 01:08:03,340 --> 01:08:05,740 في نهاية المطاف، وهذا، أيضا، فواصل. 1394 01:08:05,740 --> 01:08:09,350 >> في نهاية المطاف، مع فترة طويلة طويلة، وهو قيمة 64 بت، وليس 1395 01:08:09,350 --> 01:08:13,660 قيمة 32 بت، إذا كنت تعول مرتفعة جدا، وكنت التفاف حول 0. 1396 01:08:13,660 --> 01:08:16,410 وفي هذه الحالة، فإننا يحدث ل في نهاية المطاف مع رقم سالب. 1397 01:08:16,410 --> 01:08:17,550 >> لذلك هذا هو المشكلة. 1398 01:08:17,550 --> 01:08:20,439 واتضح أن هذا المشكلة ليست كل ما غامضة. 1399 01:08:20,439 --> 01:08:23,060 على الرغم من أنني قمت عمدا بفعل ذلك مع هذه الأخطاء، 1400 01:08:23,060 --> 01:08:26,149 اتضح نراه نوع من جميع من حولنا، أو على الأقل بعض منا القيام به. 1401 01:08:26,149 --> 01:08:28,939 >> حتى في ليغو حرب النجوم، إذا كنت قد لعبت أي وقت مضى لعبة، 1402 01:08:28,939 --> 01:08:33,830 اتضح يمكنك يرحل كسر الامور في ليغو العالم، 1403 01:08:33,830 --> 01:08:36,640 وجمع القطع النقدية، وأساسا. 1404 01:08:36,640 --> 01:08:39,200 وإذا كنت قد لعبت أي وقت مضى هذه اللعبة الطريقة الكثير من الوقت، 1405 01:08:39,200 --> 01:08:42,630 كما ان هذا الشخص لم يكشف عن اسمه هنا فعل، فإن العدد الإجمالي 1406 01:08:42,630 --> 01:08:46,700 من القطع النقدية التي يمكنك جمع هو، على ما يبدو، 4000000000. 1407 01:08:46,700 --> 01:08:48,240 >> الآن، مع انها اعتقلت في الواقع. 1408 01:08:48,240 --> 01:08:50,239 حتى ليغو كان يحاول ابقاء الامور سهلة الاستعمال. 1409 01:08:50,239 --> 01:08:53,779 أنها لم تفعل ذلك بالضبط 2 ل قوة 32، في الأسبوع الماضي. 1410 01:08:53,779 --> 01:08:55,310 لكن 4000000000 هو السبب. 1411 01:08:55,310 --> 01:08:58,979 على ما يبدو، استنادا إلى هذه المعلومات، أن ليغو، والشركة التي 1412 01:08:58,979 --> 01:09:02,624 جعلت هذا البرنامج الفعلي، قررت أن عدد ممكن من القطع النقدية 1413 01:09:02,624 --> 01:09:04,540 يمكن للمستخدم أن تتراكم هو، في الواقع، 4000000000، 1414 01:09:04,540 --> 01:09:12,069 لأنهم اختاروا في مدوناتها لاستخدام ليست فترة طويلة طويلة، على ما يبدو، 1415 01:09:12,069 --> 01:09:16,140 ولكن فقط عدد صحيح، وهو غير موقعة صحيح، فقط عدد صحيح موجب، الذي 1416 01:09:16,140 --> 01:09:18,089 ماكس القيمة تقريبا ذلك. 1417 01:09:18,089 --> 01:09:19,380 حسنا، هنا واحد آخر مضحك. 1418 01:09:19,380 --> 01:09:23,500 حتى في لعبة الحضارة، التي البعض منكم قد تكون مألوفة، مع 1419 01:09:23,500 --> 01:09:26,660 اتضح أن هناك منذ سنوات كان خطأ في هذه اللعبة حيث 1420 01:09:26,660 --> 01:09:28,750 إذا كنت لعبت دور غاندي في اللعبة، 1421 01:09:28,750 --> 01:09:34,020 بدلا من كونه السلمي للغاية، بدلا من ذلك كان لا يصدق، لا يصدق 1422 01:09:34,020 --> 01:09:36,399 عدوانية، في بعض الظروف. 1423 01:09:36,399 --> 01:09:40,529 على وجه الخصوص، الطريقة التي الحضارة يعمل هو أنه إذا كنت، لاعب، 1424 01:09:40,529 --> 01:09:44,680 تبني الديمقراطية، الخاص يحصل نتيجة العدوانية 1425 01:09:44,680 --> 01:09:48,130 decremented قبل اثنين، لذلك ناقص ناقص، ثم ناقص ناقص. 1426 01:09:48,130 --> 01:09:50,569 >> لذا تقوم بطرح 2 من بالتكرار الخاص الفعلي. 1427 01:09:50,569 --> 01:09:56,650 للأسف، إذا بالتكرار الخاص بك هو في البداية 1، وتقوم بطرح 2 منه 1428 01:09:56,650 --> 01:09:59,050 بعد اعتماد الديمقراطية كما غاندي هنا قد 1429 01:09:59,050 --> 01:10:02,200 قد فعلت، لأنه كان passive-- جدا 1 درجة على مقياس العدوانية. 1430 01:10:02,200 --> 01:10:04,830 ولكن إذا كان يتبنى الديمقراطية، ثم يذهب من 1 إلى 1 السلبي. 1431 01:10:04,830 --> 01:10:11,470 >> للأسف، كانت التي تستخدم فيها أرقام غير موقعة، 1432 01:10:11,470 --> 01:10:15,400 وهو ما يعني أنها تعامل حتى السلبي أرقام كما لو أنها كانت ايجابية. 1433 01:10:15,400 --> 01:10:19,780 واتضح أن تعادل إيجابي سلبية 1، 1434 01:10:19,780 --> 01:10:23,480 في برامج الكمبيوتر النموذجية، 255. 1435 01:10:23,480 --> 01:10:27,250 حتى إذا تتبنى غاندي ، وبالتالي الديمقراطية لديها 1436 01:10:27,250 --> 01:10:32,470 انخفضت درجة العدوانية له، أنها تتحرك في الواقع حول الى 255 1437 01:10:32,470 --> 01:10:35,470 ويجعله أكثر شخصية عدوانية في اللعبة. 1438 01:10:35,470 --> 01:10:36,930 حتى تتمكن من جوجل حتى على هذا. 1439 01:10:36,930 --> 01:10:39,380 وكان، في الواقع، ل علة البرمجة عرضي، 1440 01:10:39,380 --> 01:10:43,010 ولكن هذا دخلت جدا العلم منذ ذلك الحين. 1441 01:10:43,010 --> 01:10:44,360 >> هذا كل شيء متعة ولطيف. 1442 01:10:44,360 --> 01:10:47,760 أكثر إثارة للخوف هو عندما الفعلية أجهزة العالم الحقيقي، وليس الألعاب، 1443 01:10:47,760 --> 01:10:48,820 لديهم نفس هذه الأخطاء. 1444 01:10:48,820 --> 01:10:54,500 في الواقع، منذ عام واحد فقط وجاءت مقالة خارج عن دريملاينر بوينغ 787. 1445 01:10:54,500 --> 01:10:56,850 >> والمقال في البداية وهلة يقرأ قليلا غامضة. 1446 01:10:56,850 --> 01:11:01,480 ولكنه قال هذا، وهو برنامج الضعف في بوينغ 1447 01:11:01,480 --> 01:11:04,790 الجديدة 787 دريملاينر طائرة لديها يمكن أن تتسبب الطيارين 1448 01:11:04,790 --> 01:11:07,220 يفقد السيطرة على الطائرة، ربما 1449 01:11:07,220 --> 01:11:11,750 في منتصف الرحلة، المسؤولين FAA شركات الطيران حذر مؤخرا. 1450 01:11:11,750 --> 01:11:14,520 وكان تقرير أن نموذج 787 1451 01:11:14,520 --> 01:11:19,770 الطائرة التي تم مدعوم بشكل مستمر ل248 يوما 1452 01:11:19,770 --> 01:11:24,880 يمكن أن تخسر كل التيار المتردد، AC، الطاقة الكهربائية بسبب المولد 1453 01:11:24,880 --> 01:11:28,892 وحدات التحكم، GCUs، في وقت واحد الذهاب إلى فشل الوضع الآمن. 1454 01:11:28,892 --> 01:11:29,850 انها نوع من فقدان لي. 1455 01:11:29,850 --> 01:11:35,390 لكن المذكرة أشارت، حسنا، الآن أنا حصلت على هذا، وقد تسبب في حالة من البرمجيات 1456 01:11:35,390 --> 01:11:38,590 مواجهة داخلية ل السيطرة مولد 1457 01:11:38,590 --> 01:11:44,860 الوحدات التي سيتم تجاوز بعد 248 يوما من الطاقة المستمرة. 1458 01:11:44,860 --> 01:11:47,070 نحن إصدار هذا لاحظت لمنع فقدان 1459 01:11:47,070 --> 01:11:49,300 جميع AC الكهربائية السلطة، الأمر الذي قد يؤدي 1460 01:11:49,300 --> 01:11:50,980 في فقدان السيطرة على الطائرة. 1461 01:11:50,980 --> 01:11:55,380 >> لذلك، حرفيا، هناك بعض صحيحا، أو نوع البيانات يعادل، 1462 01:11:55,380 --> 01:11:57,960 تستخدم في مجال البرمجيات في طائرة الفعلي 1463 01:11:57,960 --> 01:12:00,756 أنه إذا واصلتم طائرتك لفترة طويلة بما فيه الكفاية، والتي على ما يبدو 1464 01:12:00,756 --> 01:12:03,880 يمكن أن يكون عليه الحال لو كنت مجرد تشغيل لهم باستمرار وأبدا بفصل 1465 01:12:03,880 --> 01:12:06,810 طائرتك، على ما يبدو، أو السماح البطاريات تموت، 1466 01:12:06,810 --> 01:12:09,840 سيعتمد في نهاية المطاف، وحتى، وحتى، وحتى، وحتى، وحتى. 1467 01:12:09,840 --> 01:12:12,150 >> و، بحكم طبيعتها، ل كمية محدودة من الذاكرة 1468 01:12:12,150 --> 01:12:15,880 سيتم تجاوز في تراجع ل الصفر أو بعض قيمة سالبة، 1469 01:12:15,880 --> 01:12:19,920 من الآثار الجانبية لوالذي هو واقع حقيقي مخيف 1470 01:12:19,920 --> 01:12:23,970 ان الطائرة قد تحتاج إلى إعادة تمهيد، على نحو فعال، 1471 01:12:23,970 --> 01:12:27,290 أو قد تقع ما هو أسوأ، لأنها يطير. 1472 01:12:27,290 --> 01:12:29,230 لذلك هذا النوع من القضايا لا تزال معنا، 1473 01:12:29,230 --> 01:12:33,130 even-- كانت هذه المادة عام 2015، جميع أكثر إثارة للخوف 1474 01:12:33,130 --> 01:12:36,100 عندما كنت لا بالضرورة فهم وتقدير، أو استباق 1475 01:12:36,100 --> 01:12:38,640 تلك الأنواع من الأخطاء. 1476 01:12:38,640 --> 01:12:42,030 >> لذلك تبين هناك واحد آخر شيئا سيئا عن تمثيل البيانات. 1477 01:12:42,030 --> 01:12:47,080 اتضح أنه حتى العوامات نوع من معيبة، لأن يطفو، أيضا، 1478 01:12:47,080 --> 01:12:51,440 اقترحت و32 بت، أو ربما 64 إذا كنت تستخدم مزدوج. 1479 01:12:51,440 --> 01:12:53,070 لكن هذا لا يزال محدودا. 1480 01:12:53,070 --> 01:12:57,070 >> وتكمن المشكلة في أنه إذا كنت تستطيع وضع عدد لانهائي من الأرقام 1481 01:12:57,070 --> 01:12:59,460 بعد العلامة العشرية، لا توجد وسيلة لك 1482 01:12:59,460 --> 01:13:02,690 يمكن أن تمثل جميع ممكن الأرقام التي كنا تدرس 1483 01:13:02,690 --> 01:13:04,990 في الصف يمكن أن توجد مدرسة في العالم. 1484 01:13:04,990 --> 01:13:08,870 كمبيوتر، أساسا، أن اختيار مجموعة فرعية من هذه الأرقام 1485 01:13:08,870 --> 01:13:10,200 لتمثيل بدقة. 1486 01:13:10,200 --> 01:13:12,450 >> الآن، يمكن للكمبيوتر جولة ربما قليلا، 1487 01:13:12,450 --> 01:13:17,900 ويمكن أن تسمح لك لتخزين ما يقرب من أي الرقم الذي ربما قد ترغب. 1488 01:13:17,900 --> 01:13:20,940 ولكن فقط بشكل حدسي، إذا كنت لدينا عدد محدود من البتات، 1489 01:13:20,940 --> 01:13:24,560 يمكنك نستبدل لهم فقط في العديد من الطرق محدودة. 1490 01:13:24,560 --> 01:13:26,570 لذلك لا يمكن ربما استخدام عدد محدود 1491 01:13:26,570 --> 01:13:29,880 من التقليب من البتات، أنماط من الآحاد والأصفار و، 1492 01:13:29,880 --> 01:13:32,940 لتمثيل لانهائي عدد من الأرقام، 1493 01:13:32,940 --> 01:13:37,370 مما يوحي بأن قد أجهزة الكمبيوتر يكون جيدا الكذب لنا في بعض الأحيان. 1494 01:13:37,370 --> 01:13:38,770 >> في الواقع، دعونا نفعل هذا. 1495 01:13:38,770 --> 01:13:41,239 واسمحوا لي أن أعود إلى IDE CS50. 1496 01:13:41,239 --> 01:13:43,030 اسمحوا لي أن المضي قدما في إنشاء برنامج صغير 1497 01:13:43,030 --> 01:13:47,940 ودعا الدقة، لإظهار أن أجهزة الكمبيوتر هي، في الواقع، غير دقيقة. 1498 01:13:47,940 --> 01:13:51,910 >> واسمحوا لي أن المضي قدما والبدء مع بعض من هذا الرمز من قبل، 1499 01:13:51,910 --> 01:13:53,830 والآن فقط القيام بما يلي. 1500 01:13:53,830 --> 01:14:03,640 اسمحوا لي أن نمضي قدما ونفعل printf، في المئة و، مائل ن، 1 مقسوما على 10. 1501 01:14:03,640 --> 01:14:07,430 وبعبارة أخرى، دعونا الغوص في أعمق ل1/10، مثل 1 و مقسوما على 10. 1502 01:14:07,430 --> 01:14:09,760 بالتأكيد، يمكن للكمبيوتر تمثل 1/10. 1503 01:14:09,760 --> 01:14:13,620 >> لذلك دعونا نمضي قدما وجعل عدم الدقة. 1504 01:14:13,620 --> 01:14:14,390 دعنا نرى. 1505 01:14:14,390 --> 01:14:16,210 يحدد شكل اكتب مزدوجة. 1506 01:14:16,210 --> 01:14:18,160 ولكن الحجة نوع int. 1507 01:14:18,160 --> 01:14:19,040 ماذا يحدث هنا؟ 1508 01:14:19,040 --> 01:14:21,970 >> أوه، مثيرة للاهتمام، لذلك هو الدرس المستفاد من قبل. 1509 01:14:21,970 --> 01:14:26,050 أنا أقول، مهلا، عرض الكمبيوتر لي تعويم مع في المئة و. 1510 01:14:26,050 --> 01:14:28,200 ولكن أنا يعطيها 2 [إينتس]. 1511 01:14:28,200 --> 01:14:31,120 لذلك تبين، ويمكن إصلاح هذا في عدة طرق. 1512 01:14:31,120 --> 01:14:38,430 >> أنا يمكن أن تتحول واحدة فقط إلى 1.0، و 10 إلى 10.0، والذي من شأنه، في الواقع، 1513 01:14:38,430 --> 01:14:42,390 يكون لها أثر تحويل لهم في floats-- لا يزال أمل 1514 01:14:42,390 --> 01:14:43,180 نفس العدد. 1515 01:14:43,180 --> 01:14:45,880 أو اتضح هناك شيء سنرى مرة أخرى قبل مرور وقت طويل. 1516 01:14:45,880 --> 01:14:47,170 هل يمكن أن يلقي الأرقام. 1517 01:14:47,170 --> 01:14:49,880 >> يمكنك باستخدام هذا خاص بجملة معترضة التعبير، يمكنك أن تقول، 1518 01:14:49,880 --> 01:14:52,560 مهلا، الكمبيوتر، وتأخذ هذه 10، والذي أعرفه هو عدد صحيح. 1519 01:14:52,560 --> 01:14:54,660 ولكن التعامل معها، من فضلك، كما لو انها تطفو. 1520 01:14:54,660 --> 01:14:56,680 ولكن هذا يشعر المعقدة دون داع. 1521 01:14:56,680 --> 01:14:59,040 >> لأغراضنا اليوم، دعونا فقط حرفيا 1522 01:14:59,040 --> 01:15:02,700 جعلها القيم النقطة العائمة مع نقطة عشرية، مثل هذا. 1523 01:15:02,700 --> 01:15:07,060 اسمحوا لي أن المضي قدما واعادة، وجعل عدم الدقة، وحسن، مائل نقطة 1524 01:15:07,060 --> 01:15:08,870 عدم الدقة، أدخل. 1525 01:15:08,870 --> 01:15:10,990 حسنا، نحن نبحث جيدا. 1526 01:15:10,990 --> 01:15:18,194 >> 1 مقسوما على 10، وفقا لبلدي ماك هنا، هو، في الواقع، 0.100000. 1527 01:15:18,194 --> 01:15:21,360 الآن، وأنا كان يدرس في المدارس الابتدائية هناك يجب أن يكون عدد لانهائي من 0 و. 1528 01:15:21,360 --> 01:15:23,151 لذلك دعونا نحاول على الأقل لرؤية بعض من هؤلاء. 1529 01:15:23,151 --> 01:15:26,770 وتبين أن printf قليلا لا يزال مربي الحيوانات من نحن أستعمل. 1530 01:15:26,770 --> 01:15:30,890 اتضح لم يكن لديك لتحديد فقط في المئة و، أو فقط لأنني في المئة. 1531 01:15:30,890 --> 01:15:33,830 يمكنك تحديد الواقع بعض خيارات التحكم هنا. 1532 01:15:33,830 --> 01:15:36,470 >> على وجه التحديد، وانا ذاهب القول، مهلا، printf، 1533 01:15:36,470 --> 01:15:39,660 تظهر في الواقع لي 10 نقطة عشرية. 1534 01:15:39,660 --> 01:15:40,820 لذلك تبدو غريبة بعض الشيء. 1535 01:15:40,820 --> 01:15:42,845 ولكن أقول لكم في المئة، نقطة وأرقام عن عدد 1536 01:15:42,845 --> 01:15:44,970 كنت تريد أن ترى بعد العشرية، ثم و 1537 01:15:44,970 --> 01:15:48,340 للشقة، فقط لأن هذا هو ما تقوله الوثائق. 1538 01:15:48,340 --> 01:15:50,080 اسمحوا لي أن المضي قدما وحفظ ذلك. 1539 01:15:50,080 --> 01:15:52,460 >> وتلاحظ أيضا، وأنا اتلقى تعبت من إعادة كتابة الأشياء. 1540 01:15:52,460 --> 01:15:55,900 لذلك أنا فقط وضع صعودا و السهم لأسفل على مفاتيح بلدي هنا. 1541 01:15:55,900 --> 01:15:58,710 وإذا أظل ضرب، وكنت يمكن أن نرى جميع الأوامر 1542 01:15:58,710 --> 01:16:01,090 الذي أدليت به، أو جعلها غير صحيح. 1543 01:16:01,090 --> 01:16:04,630 >> وانا ذاهب الى المضي قدما الآن و في الواقع لا تستخدم هذا، على ما يبدو. 1544 01:16:04,630 --> 01:16:11,416 جعل عدم الدقة، نقطة خفض imprecision-- ذلك 1545 01:16:11,416 --> 01:16:13,290 ما كنت تدرس في يتحقق المدارس الابتدائية بها. 1546 01:16:13,290 --> 01:16:19,010 حتى لو كنت طباعته إلى 10 عشري يضع ذلك، في الواقع، هو 0.10000. 1547 01:16:19,010 --> 01:16:19,840 ولكن هل تعرف لماذا؟ 1548 01:16:19,840 --> 01:16:21,150 >> دعونا الحصول على الجشع قليلا. 1549 01:16:21,150 --> 01:16:23,990 دعنا نقول، مثل، وتبين لي 55 يشير بعد العلامة العشرية. 1550 01:16:23,990 --> 01:16:26,160 دعونا حقا أن تتخذ هذه البرنامج من أجل زيادة ونقصان. 1551 01:16:26,160 --> 01:16:31,170 اسمحوا لي أن تغييره مع make عدم الدقة، نقطة مائلة، عدم الدقة. 1552 01:16:31,170 --> 01:16:32,390 >> وها قد بدأنا. 1553 01:16:32,390 --> 01:16:34,420 وكانت طفولتك كذبة. 1554 01:16:34,420 --> 01:16:48,410 على ما يبدو، 1 مقسوما على 10 هو في الواقع 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> ما الذي يجري؟ 1556 01:16:49,740 --> 01:16:53,360 حسنا، كما تبين، إذا كنت من النوع ننظر بعيدا بما فيه الكفاية في أصل الأساسي 1557 01:16:53,360 --> 01:16:55,950 تمثيل هذا عدد، فإنه في الواقع 1558 01:16:55,950 --> 01:17:00,400 ليس بالضبط 1/10، أو 0.1 و عدد لا حصر له من الأصفار. 1559 01:17:00,400 --> 01:17:01,630 الآن، لماذا؟ 1560 01:17:01,630 --> 01:17:06,250 >> حسنا، على الرغم من أن هذا هو بسيط عدد لنا البشر، 1 مقسوما على 10، 1561 01:17:06,250 --> 01:17:10,910 انها لا تزال واحدة من عدد لانهائي أرقام أننا يمكن أن يفكر حتى. 1562 01:17:10,910 --> 01:17:14,490 ولكن جهاز كمبيوتر يمكن أن تمثل فقط بشكل محدود العديد من الأرقام لذلك. 1563 01:17:14,490 --> 01:17:18,710 وهكذا، على نحو فعال، ما الكمبيوتر يظهر لنا هو الأقرب لها 1564 01:17:18,710 --> 01:17:22,940 تقريب للعدد نحن نريد أن نصدق هو 1/10، 1565 01:17:22,940 --> 01:17:27,760 أو حقا 0.10000 انهاية. 1566 01:17:27,760 --> 01:17:30,425 >> بدلا من ذلك، على الرغم من، وهذا هو أقرب ما يمكن أن تحصل. 1567 01:17:30,425 --> 01:17:32,300 وبالفعل، إذا نظرتم تحت غطاء محرك السيارة، 1568 01:17:32,300 --> 01:17:37,050 ونحن هنا من خلال النظر 55 ارقام بعد العلامة العشرية، 1569 01:17:37,050 --> 01:17:39,990 نحن نرى في الواقع هذا الواقع. 1570 01:17:39,990 --> 01:17:42,610 الآن بوصفها جانبا، إذا كنت قد من أي وقت مضى رأيت movie-- 1571 01:17:42,610 --> 01:17:45,780 معظمكم ربما haven't-- ولكن قبل سوبرمان 3 بضع سنوات، 1572 01:17:45,780 --> 01:17:49,500 ريتشارد بريور الاستدانة أساسا هذا واقع في شركته لسرقة الكثير 1573 01:17:49,500 --> 01:17:53,500 الكسور والكسور من البنسات، لأن company-- على ما أذكر، 1574 01:17:53,500 --> 01:17:57,210 انها كانت while-- كان في الأساس رمي أي شيء لم تناسب 1575 01:17:57,210 --> 01:17:58,790 في مفهوم سنتا. 1576 01:17:58,790 --> 01:18:01,480 >> ولكن إذا كنت تضيف ما يصل كل هذه صغيرة، صغيرة، وأرقام صغيرة مرة أخرى، 1577 01:18:01,480 --> 01:18:04,960 ومرة أخرى، ومرة ​​أخرى، يمكنك، كما هو الحال في قضيته، وجعل كمية لا بأس بها من المال. 1578 01:18:04,960 --> 01:18:08,010 >> كان وقع هذه الفكرة نفسها من قبل أكثر حداثة، ولكن الآن لا يزال كبار السن 1579 01:18:08,010 --> 01:18:10,500 فيلم، ودعا مكتب الفضاء، حيث الرجال في هذا الفيلم، 1580 01:18:10,500 --> 01:18:13,501 فعلوا الشيء نفسه، ثمل عنه تماما، انتهى الطريق كثيرا 1581 01:18:13,501 --> 01:18:14,666 المال في حساباتهم المصرفية. 1582 01:18:14,666 --> 01:18:15,800 كان كل شيء مريب جدا. 1583 01:18:15,800 --> 01:18:19,290 ولكن في نهاية اليوم، الدقة هي في كل مكان حولنا. 1584 01:18:19,290 --> 01:18:22,240 >> وذلك، أيضا، يمكن أن يكون مخيف القضية. 1585 01:18:22,240 --> 01:18:25,590 وتبين أن سوبرمان 3 ومكتب الفضاء جانبا، هناك 1586 01:18:25,590 --> 01:18:28,460 يمكن أن يكون بعضها حقيقي جدا تداعيات العالم 1587 01:18:28,460 --> 01:18:32,290 من واقع غير دقيقة تمثيل البيانات 1588 01:18:32,290 --> 01:18:34,770 أنه حتى نحن البشر ل هذا اليوم لا بالضرورة 1589 01:18:34,770 --> 01:18:38,230 فهم كذلك ينبغي لنا، أو تذكر في كثير من الأحيان كما ينبغي. 1590 01:18:38,230 --> 01:18:42,950 وبالفعل، مقطع التالية من نظرة على بعض العالم الحقيقي جدا 1591 01:18:42,950 --> 01:18:47,730 تداعيات ما يحدث إذا لا نقدر أن عدم الدقة 1592 01:18:47,730 --> 01:18:50,065 يمكن أن يحدث في تمثيل الأرقام. 1593 01:18:50,065 --> 01:18:51,300 >> [تشغيل الفيديو] 1594 01:18:51,300 --> 01:18:55,620 >> -Computers، ونحن قد وصلنا كل قبول المشاكل في كثير من الأحيان محبطة 1595 01:18:55,620 --> 01:19:00,310 الذهاب مع them-- البق، والفيروسات، ومواطن الخلل البرمجيات، 1596 01:19:00,310 --> 01:19:03,130 لاسعارها صغيرة لدفع لراحة. 1597 01:19:03,130 --> 01:19:07,800 ولكن في ذات التقنية العالية وسرعة عالية التطبيقات العسكرية وبرنامج الفضاء، 1598 01:19:07,800 --> 01:19:12,800 أصغر مشكلة يمكن يتعظم إلى كارثة. 1599 01:19:12,800 --> 01:19:18,900 >> في 4 يونيو 1996، أعد العلماء شن من دون طيار صاروخ أريان 5. 1600 01:19:18,900 --> 01:19:21,220 وكانت تحمل العلمي الأقمار الصناعية المصممة 1601 01:19:21,220 --> 01:19:24,600 لإنشاء بالضبط كيف يتفاعل الحقل المغناطيسي للأرض 1602 01:19:24,600 --> 01:19:27,410 مع الرياح الشمسية. 1603 01:19:27,410 --> 01:19:30,800 تم بناء صاروخ ل وكالة الفضاء الأوروبية، 1604 01:19:30,800 --> 01:19:34,370 وانطلق من منشأتها على ساحل غيانا الفرنسية. 1605 01:19:34,370 --> 01:19:37,540 >> -على نحو 37 ثانية في الرحلة، لأول مرة 1606 01:19:37,540 --> 01:19:39,270 شيء لاحظت تسير على خطأ. 1607 01:19:39,270 --> 01:19:42,250 الفتحات والدوران في على الطريقة التي حقا لا ينبغي. 1608 01:19:42,250 --> 01:19:46,580 حوالي 40 ثانية فقط من بداية الرحلة، بشكل واضح، وكانت السيارة في ورطة. 1609 01:19:46,580 --> 01:19:48,850 >> وذلك عندما جعلوا قرار لتدميره. 1610 01:19:48,850 --> 01:19:52,780 ضابط سلامة المدى، مع الشجاعة الهائلة، الضغط على زر، 1611 01:19:52,780 --> 01:19:58,150 فجر الصاروخ، قبل أن تصبح خطرا على السلامة العامة. 1612 01:19:58,150 --> 01:20:01,060 >> كان، هذا قبل الزواج الرحلة من آريان 5. 1613 01:20:01,060 --> 01:20:03,960 واستغرق تدميرها ضع بسبب عيب 1614 01:20:03,960 --> 01:20:05,822 جزءا لا يتجزأ من برنامج الصاروخ. 1615 01:20:05,822 --> 01:20:08,280 وكانت -The المشكلة على آريان أن كان هناك رقم 1616 01:20:08,280 --> 01:20:10,600 مطلوب 64 بت للتعبير. 1617 01:20:10,600 --> 01:20:13,590 وأرادوا تحويل إلى رقم 16 بت. 1618 01:20:13,590 --> 01:20:15,610 ويبدو أنهم افترضوا أن لم يكن عدد مستمرة 1619 01:20:15,610 --> 01:20:20,980 أن تكون كبيرة جدا، أن معظم تلك وكانت الأرقام في عدد 64 بت أصفار. 1620 01:20:20,980 --> 01:20:22,440 كانوا مخطئين. 1621 01:20:22,440 --> 01:20:25,060 >> -The عدم قدرة واحدة برنامج حاسوبي لقبول 1622 01:20:25,060 --> 01:20:29,510 هذا النوع من رقم تم إنشاؤه من قبل وكان آخر في جذور الفشل. 1623 01:20:29,510 --> 01:20:34,350 وتطوير البرمجيات تصبح جزء مكلفة جدا من التكنولوجيا الجديدة. 1624 01:20:34,350 --> 01:20:38,140 وكان الصاروخ اريان جدا نجحت الكثير من البرامج 1625 01:20:38,140 --> 01:20:41,550 خلقت لكنه كان أيضا المستخدمة في آريان 5. 1626 01:20:41,550 --> 01:20:47,940 >> وكانت -The المشكلة الأساسية التي آريان وكان 5 أسرع، وتسارع أسرع. 1627 01:20:47,940 --> 01:20:51,450 وكان البرنامج لا وشكلت لذلك. 1628 01:20:51,450 --> 01:20:55,060 >> -The تدمير الصواريخ كانت كارثة مالية ضخمة، 1629 01:20:55,060 --> 01:20:58,790 جميع بسبب خطأ في برنامج دقيقة. 1630 01:20:58,790 --> 01:21:01,210 ولكن هذا لم يكن الأول مشاكل تحويل البيانات في الوقت 1631 01:21:01,210 --> 01:21:04,820 قد تعاني تكنولوجيا الصواريخ الحديثة. 1632 01:21:04,820 --> 01:21:08,050 >> -في عام 1991، مع بداية حرب الخليج الأولى، 1633 01:21:08,050 --> 01:21:10,570 باتريوت الصاروخي شهدت نوع مماثل 1634 01:21:10,570 --> 01:21:12,800 من مشكلة تحويل عدد. 1635 01:21:12,800 --> 01:21:16,090 ونتيجة لذلك، 28 شخصا، 28 جنود أمريكيين، 1636 01:21:16,090 --> 01:21:19,080 قتل، وحوالي جرح 100 آخرين، 1637 01:21:19,080 --> 01:21:22,780 عندما باتريوت، التي كان من المفترض للحماية من صواريخ سكود واردة، 1638 01:21:22,780 --> 01:21:25,830 فشل إطلاق صاروخ. 1639 01:21:25,830 --> 01:21:31,670 >> غزا، وعندما العراق الكويت، وأمريكا أطلقت عاصفة الصحراء في أوائل عام 1991، 1640 01:21:31,670 --> 01:21:35,780 تم نشر بطاريات صواريخ باتريوت لحماية السعودية واسرائيل 1641 01:21:35,780 --> 01:21:39,230 من هجمات صواريخ سكود العراقية. 1642 01:21:39,230 --> 01:21:43,810 باتريوت هو متوسط ​​المدى الولايات المتحدة السطح لنظام الهواء، المصنعة 1643 01:21:43,810 --> 01:21:45,770 من قبل الشركة رايثيون. 1644 01:21:45,770 --> 01:21:52,340 >> -The حجم اعتراضية باتريوت نفسه هو حول ما يقرب من 20 أقدام طويلة. 1645 01:21:52,340 --> 01:21:55,230 ويزن حوالي 2000 جنيه. 1646 01:21:55,230 --> 01:21:59,320 ويحمل رأسا حربية من حول، اعتقد انها ما يقرب من 150 جنيه. 1647 01:21:59,320 --> 01:22:03,930 والرؤوس الحربية نفسه شديدة الانفجار، التي 1648 01:22:03,930 --> 01:22:07,330 لديها شظايا من حوله. 1649 01:22:07,330 --> 01:22:11,680 غلاف الرأس الحربي هو مصممة للعمل مثل رصاص. 1650 01:22:11,680 --> 01:22:14,110 >> تتم -The صواريخ أربعة في وعاء، 1651 01:22:14,110 --> 01:22:17,130 ويتم نقلها من قبل مقطورة نصف. 1652 01:22:17,130 --> 01:22:24,930 >> -The نظام باتريوت المضادة للصواريخ يعود لا يقل عن 20 سنوات حتى الآن. 1653 01:22:24,930 --> 01:22:28,420 صمم أصلا كما صاروخ الدفاع الجوي 1654 01:22:28,420 --> 01:22:30,720 لاسقاط طائرات العدو. 1655 01:22:30,720 --> 01:22:34,500 في حرب الخليج الأولى، عندما جاءت تلك الحرب جنبا إلى جنب، 1656 01:22:34,500 --> 01:22:39,745 يريد الجيش لاستخدامها ل اسقاط صواريخ سكود، وليس الطائرات. 1657 01:22:39,745 --> 01:22:43,620 >> كانت القوة الجوية العراقية وليس ذلك بكثير على وجود مشكلة. 1658 01:22:43,620 --> 01:22:46,670 ولكن الجيش كان قلقا حول صواريخ سكود. 1659 01:22:46,670 --> 01:22:50,170 وهكذا حاولوا ترقية باتريوت. 1660 01:22:50,170 --> 01:22:52,800 >> -Intercepting عدو صاروخ السفر في ماخ 5 1661 01:22:52,800 --> 01:22:55,830 كان على وشك أن يتحدى بما فيه الكفاية. 1662 01:22:55,830 --> 01:22:58,490 ولكن عندما باتريوت تم نقله إلى الخدمة، 1663 01:22:58,490 --> 01:23:02,860 وكان الجيش لا علم ل تعديل العراقي التي جعلت 1664 01:23:02,860 --> 01:23:05,930 صواريخ سكود من المستحيل تقريبا للضرب. 1665 01:23:05,930 --> 01:23:10,740 >> وماذا حدث هو أن صواريخ سكود كانوا قادمين كانت غير مستقرة. 1666 01:23:10,740 --> 01:23:11,692 كانوا متذبذب. 1667 01:23:11,692 --> 01:23:14,910 وكان السبب في ذلك العراقيين، من أجل 1668 01:23:14,910 --> 01:23:18,280 للحصول على 600 كيلو متر من أصل 300 كيلو متر 1669 01:23:18,280 --> 01:23:21,700 صاروخ، أخذ الوزن من الرؤوس الحربية الأمامي. 1670 01:23:21,700 --> 01:23:23,390 جعلوا الرؤوس أخف وزنا. 1671 01:23:23,390 --> 01:23:27,330 >> وحتى الآن صواريخ باتريوت هي في محاولة للتوصل إلى سكود. 1672 01:23:27,330 --> 01:23:30,230 والأكثر من ذلك الوقت، الغالبية العظمى من الوقت، 1673 01:23:30,230 --> 01:23:32,940 انها تطير فقط عن طريق سكود. 1674 01:23:32,940 --> 01:23:37,260 وبمجرد أن مشغلي نظام باتريوت أدرك باتريوت أخطأ هدفه، 1675 01:23:37,260 --> 01:23:41,690 فجروا رأس حربي لصواريخ باتريوت لتجنب سقوط ضحايا محتملة اذا 1676 01:23:41,690 --> 01:23:44,570 وسمح ليسقط على الأرض. 1677 01:23:44,570 --> 01:23:48,790 >> كان -من ما اعتبره معظم الناس، تلك نارية كبيرة في السماء، 1678 01:23:48,790 --> 01:23:54,550 ويساء فهمه على اعتراض الرؤوس الحربية من طراز سكود. 1679 01:23:54,550 --> 01:23:56,630 >> -Although في الليل السماء، بدا وطنيات 1680 01:23:56,630 --> 01:24:00,370 أن يكون بنجاح تدمير صواريخ سكود، في الظهران، 1681 01:24:00,370 --> 01:24:03,360 يمكن أن يكون هناك أي خطأ حول أدائها. 1682 01:24:03,360 --> 01:24:07,970 هناك، ونظام رادار باتريوت فقدت المسار من صواريخ سكود واردة، 1683 01:24:07,970 --> 01:24:10,721 وأبدا أطلقت بسبب لعيب البرمجيات. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 وكان الإسرائيليون الذين اكتشفت لأول مرة أن يعد النظام كان على، 1686 01:24:18,940 --> 01:24:22,690 وكلما زاد التباين الوقت أصبح، بسبب ساعة جزءا لا يتجزأ من 1687 01:24:22,690 --> 01:24:24,810 في جهاز الكمبيوتر الخاص بالنظام. 1688 01:24:24,810 --> 01:24:28,210 >> نبذة عن أسبوعين قبل المأساة في الظهران، 1689 01:24:28,210 --> 01:24:30,770 ذكرت صحيفة الإسرائيليين وزارة الدفاع 1690 01:24:30,770 --> 01:24:32,590 أن النظام بدأ يفقد الوقت. 1691 01:24:32,590 --> 01:24:35,360 بعد حوالي ثماني ساعات أو الجري، لاحظوا أن النظام 1692 01:24:35,360 --> 01:24:37,720 أصبح بشكل ملحوظ أقل دقة. 1693 01:24:37,720 --> 01:24:41,900 وردت وزارة الدفاع من قبل يقول كل من بطاريات باتريوت 1694 01:24:41,900 --> 01:24:44,950 ذلك لعدم ترك النظم لفترة طويلة. 1695 01:24:44,950 --> 01:24:49,160 هم لم يقل ما فترة طويلة was-- ثماني ساعات، 10 ساعة، 1000 ساعة. 1696 01:24:49,160 --> 01:24:51,360 لا أحد يعرف. 1697 01:24:51,360 --> 01:24:53,380 >> -The بطارية صواريخ باتريوت المتمركزة في الثكنة 1698 01:24:53,380 --> 01:24:58,350 في الظهران ومعيبة الداخلية لها وعلى مدار الساعة كان على أكثر من 100 ساعة 1699 01:24:58,350 --> 01:25:01,670 في ليلة 25 فبراير. 1700 01:25:01,670 --> 01:25:05,917 >> -من تعقب الوقت الى دقة من حوالي عشر من الثانية. 1701 01:25:05,917 --> 01:25:08,000 الآن، عشر من الثانية هو عدد مثيرة للاهتمام، 1702 01:25:08,000 --> 01:25:11,920 لأنه لا يمكن التعبير عنها في ثنائي بالضبط، والتي 1703 01:25:11,920 --> 01:25:16,820 يعني أنه لا يمكن التعبير عنها بالضبط في أي جهاز كمبيوتر الرقمية الحديثة. 1704 01:25:16,820 --> 01:25:18,540 من الصعب أن نصدق. 1705 01:25:18,540 --> 01:25:21,210 >> ولكن استخدام هذا كمثال. 1706 01:25:21,210 --> 01:25:23,540 دعونا نلقي الثالث رقم واحد. 1707 01:25:23,540 --> 01:25:27,350 لا يمكن أن يكون ثلث وأعرب في العشرية بالضبط. 1708 01:25:27,350 --> 01:25:32,080 ثلث هو 0.333 يجري لما لا نهاية. 1709 01:25:32,080 --> 01:25:36,480 >> لا توجد وسيلة لفعل ذلك مع الدقة المطلقة في العشرية. 1710 01:25:36,480 --> 01:25:39,560 هذا هو بالضبط هذا النوع من المشكلة ما حدث في وطني. 1711 01:25:39,560 --> 01:25:44,100 ركض النظام أطول، و أسوأ أصبح خطأ وقت. 1712 01:25:44,100 --> 01:25:48,890 >> ، وبعد 100 ساعة من العملية، كان الخطأ في الوقت حوالي الثلث فقط 1713 01:25:48,890 --> 01:25:50,600 من الثانية. 1714 01:25:50,600 --> 01:25:54,210 ولكن من حيث استهداف صاروخ السفر في ماخ 5، 1715 01:25:54,210 --> 01:25:58,710 اسفر ذلك عن تتبع خطأ لأكثر من 600 متر. 1716 01:25:58,710 --> 01:26:02,120 سيكون خطأ فادح للجنود على ما 1717 01:26:02,120 --> 01:26:08,940 حدث وكان إطلاق سكود الكشف عن طريق الأقمار الصناعية للإنذار المبكر 1718 01:26:08,940 --> 01:26:12,860 وكانوا يعرفون أن سكود كان القادمة في الاتجاه العام لها. 1719 01:26:12,860 --> 01:26:15,320 انهم لا يعرفون أين كانت قادمة. 1720 01:26:15,320 --> 01:26:18,250 >> -من يعود الان الى الرادار مكونات نظام باتريوت 1721 01:26:18,250 --> 01:26:23,190 الدفاع الظهران لتحديد والحفاظ على مسار صواريخ العدو واردة. 1722 01:26:23,190 --> 01:26:24,609 >> كان -The رادار ذكية جدا. 1723 01:26:24,609 --> 01:26:26,650 فإنه تتبع الواقع موقف سكود، 1724 01:26:26,650 --> 01:26:30,350 ثم التنبؤ بمكان ربما سيكون في المرة القادمة الرادار أرسلت 1725 01:26:30,350 --> 01:26:31,420 نبض بها. 1726 01:26:31,420 --> 01:26:33,110 التي كانت تسمى بوابة النطاق. 1727 01:26:33,110 --> 01:26:37,660 >> -Then، وبمجرد أن باتريوت يقرر ما يكفي من الوقت لديها 1728 01:26:37,660 --> 01:26:42,450 تمريرها إلى العودة ومراجعة المقبل الموقع لهذا الكائن المكتشف، 1729 01:26:42,450 --> 01:26:43,600 انه يعود. 1730 01:26:43,600 --> 01:26:48,650 لذلك عندما عاد إلى الخطأ المكان، ثم لا يرى وجوه. 1731 01:26:48,650 --> 01:26:52,160 وتقرر أنه لا يوجد كائن، كان الكشف كاذبة، 1732 01:26:52,160 --> 01:26:53,930 ويسقط المسار. 1733 01:26:53,930 --> 01:26:57,030 >> اختفى -The سكود واردة من شاشة الرادار. 1734 01:26:57,030 --> 01:27:00,260 وبعد ثوان، فإنه انتقد إلى الثكنات. 1735 01:27:00,260 --> 01:27:06,150 سكود مقتل 28، وكان آخر واحدة أطلقت خلال حرب الخليج الأولى. 1736 01:27:06,150 --> 01:27:11,960 >> ومن المؤسف أن البرنامج المحدث وصل في الظهران في اليوم التالي. 1737 01:27:11,960 --> 01:27:14,930 وكان عيب البرمجيات كانت ثابتة، وإغلاق 1738 01:27:14,930 --> 01:27:19,806 فصل واحد في المضطربة تاريخ صواريخ باتريوت. 1739 01:27:19,806 --> 01:27:20,729 >> [تشغيل الفيديو] 1740 01:27:20,729 --> 01:27:23,520 ديفيد جيه مالان: هذا هو كل شيء ل أقول إن هذه القضايا من فيض 1741 01:27:23,520 --> 01:27:25,860 وعدم الدقة كلها حقيقية جدا. 1742 01:27:25,860 --> 01:27:26,920 حتى كيف وصلنا إلى هنا؟ 1743 01:27:26,920 --> 01:27:28,895 بدأنا مع نتحدث فقط عن printf. 1744 01:27:28,895 --> 01:27:31,270 مرة أخرى، هذه الوظيفة التي يطبع شيء على الشاشة، 1745 01:27:31,270 --> 01:27:33,450 وقدمنا ​​بعد ذلك عدد قليل من الوظائف الأخرى 1746 01:27:33,450 --> 01:27:34,945 من ما يسمى مكتبة CS50 ل. 1747 01:27:34,945 --> 01:27:36,910 وسوف نستمر في نرى هذه في الوقت المناسب. 1748 01:27:36,910 --> 01:27:40,760 ونحن، وخاصة، وتستخدم سلسلة الحصول عليها، والحصول على كثافة العمليات، والآن أيضا الحصول على تعويم، 1749 01:27:40,760 --> 01:27:44,410 وبعضها الآخر لا يزال سوف نواجهها واستخدام أنفسنا قبل فترة طويلة. 1750 01:27:44,410 --> 01:27:47,220 >> ولكن في بعض الأحيان، يكون نحن رأينا بالفعل حاجة 1751 01:27:47,220 --> 01:27:50,520 لتخزين ما يد تلك المهام مرة أخرى؟ 1752 01:27:50,520 --> 01:27:52,920 أنها يسلمنا إلى الوراء سلسلة، أو عدد صحيح أو عدد عشري. 1753 01:27:52,920 --> 01:27:56,070 وأحيانا نحتاج لوضع هذا سلسلة، أو الباحث، أو تعويم، في مكان ما. 1754 01:27:56,070 --> 01:28:00,100 >> ولتخزين تلك الأشياء، أذكر فقط في مثل خدش، لدينا المتغيرات. 1755 01:28:00,100 --> 01:28:03,260 ولكن خلافا في خدش، في C لدينا أنواع الفعلية 1756 01:28:03,260 --> 01:28:05,530 البيانات variables-- أنواع، أكثر generally-- 1757 01:28:05,530 --> 01:28:08,640 من بينها، سلسلة، عدد صحيح، ل تطفو، وهؤلاء الآخرين لا يزال. 1758 01:28:08,640 --> 01:28:12,321 >> وذلك عندما نعلن المتغيرات في C، علينا أن يعلن أنواع البيانات لدينا. 1759 01:28:12,321 --> 01:28:14,820 هذا ليس شيئا سنقوم عليك القيام به في وقت لاحق في الفصل الدراسي 1760 01:28:14,820 --> 01:28:16,810 ونحن ننتقل إلى لغات أخرى. 1761 01:28:16,810 --> 01:28:19,610 لكنه الآن، نحن بحاجة لبداهة مقدما، 1762 01:28:19,610 --> 01:28:24,370 يشرح للكمبيوتر نوع من متغير نريد لها أن تعطينا. 1763 01:28:24,370 --> 01:28:27,290 >> الآن، وفي الوقت نفسه، لطباعة هذا النوع من أنواع البيانات، 1764 01:28:27,290 --> 01:28:29,570 علينا أن نقول printf ما يمكن توقعه. 1765 01:28:29,570 --> 01:28:32,450 ورأينا في المئة الصورة للجمل، وفي المئة ط عن الأعداد الصحيحة، 1766 01:28:32,450 --> 01:28:33,790 وعدد قليل من الآخرين بالفعل. 1767 01:28:33,790 --> 01:28:37,237 وتلك هي ببساطة متطلبات لعرض مرئي 1768 01:28:37,237 --> 01:28:38,070 من تلك المعلومات. 1769 01:28:38,070 --> 01:28:42,080 >> ولكل من هذه يمكن أن تكون في الواقع parametrized أو أنب في بعض الطريق، 1770 01:28:42,080 --> 01:28:45,370 إذا كنت ترغب في مزيد من السيطرة نوع من الإخراج الذي تحصل عليه. 1771 01:28:45,370 --> 01:28:49,604 و، في الواقع، اتضح أن الأمر لا يقتصر هناك مائل ن لسطر جديد. 1772 01:28:49,604 --> 01:28:52,520 هناك شيء آخر يسمى مائل ص لإرجاع، التي 1773 01:28:52,520 --> 01:28:54,360 هي أقرب إلى آلة كاتبة المدرسة القديمة، 1774 01:28:54,360 --> 01:28:57,690 وأيضا تستخدم ويندوز لسنوات عديدة. 1775 01:28:57,690 --> 01:28:59,690 >> هناك طن مائل لعلامات التبويب. 1776 01:28:59,690 --> 01:29:03,170 تبين، أنه إذا كنت تريد اقتباس مزدوجة داخل سلسلة، 1777 01:29:03,170 --> 01:29:05,000 أذكر أننا قد استخدمت مزدوج اقتباس مزدوجة 1778 01:29:05,000 --> 01:29:07,900 اقتبس على اليسار واليمين نهايات سلاسل لدينا حتى الآن. 1779 01:29:07,900 --> 01:29:09,420 ويبدو أن هذا الخلط بين الأشياء. 1780 01:29:09,420 --> 01:29:12,503 >> إذا كنت ترغب في وضع اقتباس مزدوجة في وسط string-- و، في الواقع، 1781 01:29:12,503 --> 01:29:13,670 انها مربكة لنرى. 1782 01:29:13,670 --> 01:29:17,120 وحتى يكون لديك للهروب، وذلك ل الكلام، واقتباس مزدوجة مع شيء 1783 01:29:17,120 --> 01:29:18,860 مثل، حرفيا، مائل اقتباس مزدوجة. 1784 01:29:18,860 --> 01:29:20,230 وهناك عدد قليل الآخر لا يزال. 1785 01:29:20,230 --> 01:29:24,540 وسنرى المزيد من هذه في الاستخدام الفعلي قبل فترة طويلة. 1786 01:29:24,540 --> 01:29:27,930 >> لذلك دعونا الانتقال الآن من البيانات، والتمثيل، 1787 01:29:27,930 --> 01:29:30,820 ومشغلي الحسابية، كل من الذي قدم لنا بعض أعمال البناء 1788 01:29:30,820 --> 01:29:32,070 الكتل التي للعب. 1789 01:29:32,070 --> 01:29:34,481 ولكن الآن دعونا نعطي في الواقع لنا بقية المفردات 1790 01:29:34,481 --> 01:29:36,230 أن لدينا بالفعل الأسبوع الماضي مع خدش 1791 01:29:36,230 --> 01:29:39,350 من خلال إلقاء نظرة على بعض الآخر يبني في C-- ليس كلهم. 1792 01:29:39,350 --> 01:29:41,680 لكن الأفكار نحن على وشك أن نرى حقا فقط 1793 01:29:41,680 --> 01:29:45,610 التأكيد على الترجمة من لغة واحدة، خدش، لآخر، C. 1794 01:29:45,610 --> 01:29:48,470 >> وعلى مر الزمن، ونحن سوف تلتقط المزيد من الأدوات لأدوات لدينا، 1795 01:29:48,470 --> 01:29:49,820 إذا جاز التعبير، من حيث التركيب. 1796 01:29:49,820 --> 01:29:54,190 وبالفعل، سترى أن الأفكار هي الآن مألوفة بدلا من الأسبوع الماضي. 1797 01:29:54,190 --> 01:29:55,200 لذلك دعونا نفعل هذا. 1798 01:29:55,200 --> 01:29:58,870 >> دعونا نمضي قدما وجهز برنامج في الواقع أن يستخدم بعض التعبيرات، 1799 01:29:58,870 --> 01:30:00,720 تعبير منطقي. 1800 01:30:00,720 --> 01:30:02,810 اسمحوا لي أن المضي قدما هنا وإنشاء ملف جديد. 1801 01:30:02,810 --> 01:30:06,090 سأتصل هذا condition.c. 1802 01:30:06,090 --> 01:30:09,350 >> اسمحوا لي أن المضي قدما في وتشمل المكتبة CS50. 1803 01:30:09,350 --> 01:30:12,640 واسمحوا لي أن المضي قدما وتشمل معيار IO.h عن وظائفنا، 1804 01:30:12,640 --> 01:30:14,690 وprintf، وأكثر من ذلك على التوالي. 1805 01:30:14,690 --> 01:30:18,900 اسمحوا لي أن أقدم نفسي أن النمطي لل الفراغ الرئيسي كثافة العمليات التي سنقوم شرح 1806 01:30:18,900 --> 01:30:20,360 أعود إليها في المستقبل. 1807 01:30:20,360 --> 01:30:23,820 >> والآن اسمحوا لي المضي قدما وإعطاء نفسي كثافة العمليات عبر الباحث الحصول عليها. 1808 01:30:23,820 --> 01:30:25,970 ثم اسمحوا لي أن نمضي قدما ونفعل هذا. 1809 01:30:25,970 --> 01:30:30,150 أريد أن أقول إن كنت غير less-- دعونا التمييز بين إيجابية أو سلبية، 1810 01:30:30,150 --> 01:30:31,260 أو قيم الصفر. 1811 01:30:31,260 --> 01:30:36,630 >> حتى لو كنت أقل من الصفر، واسمحوا لي لديهم فقط هذا البرنامج ببساطة تقول، 1812 01:30:36,630 --> 01:30:42,370 سلبي، مائل ن، وإلا لو كنت أكبر من الصفر. 1813 01:30:42,370 --> 01:30:47,030 الآن أنا، بالطبع، أريد أن أقول printf إيجابي، مائل ن. 1814 01:30:47,030 --> 01:30:50,690 ثم آخر if-- أتمكن من القيام بذلك. 1815 01:30:50,690 --> 01:30:53,410 >> يمكنني أن أفعل لو كنت يساوي 0. 1816 01:30:53,410 --> 01:30:55,840 ولكن يهمني أن تكون القرارات في أقل خطأ واحد بالفعل. 1817 01:30:55,840 --> 01:30:59,480 يذكر أن علامة المساواة هو لا يساوي، كما يعرف نحن البشر ذلك. 1818 01:30:59,480 --> 01:31:01,010 >> لكنه عامل التعيين. 1819 01:31:01,010 --> 01:31:05,640 ونحن لا نريد أن نأخذ 0 على الحق ووضعها في الاول على اليسار. 1820 01:31:05,640 --> 01:31:11,810 وذلك لتجنب هذا الارتباك، أو ربما سوء استخدام يساوي توقيع، 1821 01:31:11,810 --> 01:31:14,740 قرر البشر منذ عدة سنوات أنه في كثير من لغات البرمجة 1822 01:31:14,740 --> 01:31:18,000 عندما تريد أن تحقق من وجود المساواة بين اليسار واليمين، 1823 01:31:18,000 --> 01:31:19,635 كنت في الواقع استخدام يساوي متساوين. 1824 01:31:19,635 --> 01:31:21,010 لذلك كنت ضرب علامة يساوي مرتين. 1825 01:31:21,010 --> 01:31:25,600 عندما تريد تعيين من اليمين إلى اليسار، يمكنك استخدام علامة المساواة واحد. 1826 01:31:25,600 --> 01:31:29,360 حتى نتمكن من القيام this-- آخر اذا كنت يساوي يساوي الصفر. 1827 01:31:29,360 --> 01:31:31,710 >> أنا يمكن أن ثم انتقل و فتح بلدي الأقواس المعقوفة، 1828 01:31:31,710 --> 01:31:36,087 ويقول: printf 0، مائل ن، فعل. 1829 01:31:36,087 --> 01:31:38,170 ولكن تذكر كيف أن هذه الشوك في الطريق يمكن أن تعمل. 1830 01:31:38,170 --> 01:31:39,836 و، حقا، مجرد التفكير في المنطق. 1831 01:31:39,836 --> 01:31:41,510 أنا هو رقم. 1832 01:31:41,510 --> 01:31:43,320 انها صحيحا، على وجه التحديد. 1833 01:31:43,320 --> 01:31:48,600 وهذا يعني أنه سيكون أقل من 0، أو أكبر من 0، أو 0. 1834 01:31:48,600 --> 01:31:51,600 حتى لا يكون هناك نوع من هذا الحالة الافتراضية الضمنية. 1835 01:31:51,600 --> 01:31:54,920 >> وحتى نتمكن من، تماما مثل الصفر، الاستغناء عن آخر إذا، 1836 01:31:54,920 --> 01:31:55,747 وأقول آخر. 1837 01:31:55,747 --> 01:31:57,830 منطقيا، إذا لك مبرمج يعرف هناك فقط 1838 01:31:57,830 --> 01:32:01,635 ثلاثة دلاء إلى فيه السيناريو يمكن fall-- الأولى، 1839 01:32:01,635 --> 01:32:03,510 والثاني، أو الثالث في هذا case-- لا 1840 01:32:03,510 --> 01:32:07,100 انشغال بإضافة دقة إضافية ومنطق إضافية هناك. 1841 01:32:07,100 --> 01:32:09,690 فقط المضي قدما في الحالة الافتراضية هنا لآخر. 1842 01:32:09,690 --> 01:32:11,950 >> الآن، دعونا نمضي قدما بعد حفظ هذا، وجعل 1843 01:32:11,950 --> 01:32:15,760 شروط دوت خفض conditions-- لا واجهة المستخدم كبيرة، 1844 01:32:15,760 --> 01:32:18,914 لأنني لست دفع المستخدم، كما ذكرت سابقا. 1845 01:32:18,914 --> 01:32:19,580 ولكن هذا شيء طيب. 1846 01:32:19,580 --> 01:32:20,454 ونحن سوف يبقيه بسيط. 1847 01:32:20,454 --> 01:32:21,890 دعونا نحاول عدد 42. 1848 01:32:21,890 --> 01:32:23,240 وهذا أمر إيجابي. 1849 01:32:23,240 --> 01:32:26,120 دعونا نحاول عدد سلبية 42، سلبية. 1850 01:32:26,120 --> 01:32:28,244 >> دعونا نحاول القيمة 0. 1851 01:32:28,244 --> 01:32:29,160 وبالفعل، وأنها تعمل. 1852 01:32:29,160 --> 01:32:33,900 الآن، سترى مع المشاكل قبل طويلة، اختبار الأشياء ثلاث مرات، 1853 01:32:33,900 --> 01:32:34,980 ربما ليست كافية. 1854 01:32:34,980 --> 01:32:37,438 ربما كنت ترغب في اختبار بعض أعداد أكبر، وبعض أصغر 1855 01:32:37,438 --> 01:32:40,520 أرقام، وبعض الحالات الزاوية، كما سوف نأتي لوصفها. 1856 01:32:40,520 --> 01:32:42,500 >> ولكن الآن، وهذا هو برنامج بسيط جدا. 1857 01:32:42,500 --> 01:32:45,160 وأنا متأكد، منطقيا، أنه يقع في ثلاث حالات. 1858 01:32:45,160 --> 01:32:49,360 و، في الواقع، على الرغم من أننا فقط ركزت على الجوانب السلبية المحتملة 1859 01:32:49,360 --> 01:32:53,480 من عدم الدقة وتجاوز، في الواقع حيث العديد من المشاكل CS50، و 1860 01:32:53,480 --> 01:32:56,000 نحن لن تقلق حول، في كل وقت، 1861 01:32:56,000 --> 01:32:59,050 هذه القضايا من تجاوز و عدم الدقة، لأنه، في الواقع، في C، 1862 01:32:59,050 --> 01:33:01,889 انها في الواقع ليس كل ما من السهل تجنب تلك الأشياء. 1863 01:33:01,889 --> 01:33:04,180 إذا كنت تريد أن العد حتى أكبر، وأكبر، وأكبر، 1864 01:33:04,180 --> 01:33:07,510 اتضح أن هناك تقنيات لك يمكن استخدامها، وغالبا ما تنطوي على أشياء تسمى 1865 01:33:07,510 --> 01:33:11,240 المكتبات، ومجموعات من التعليمات البرمجية، التي كتب الآخرين التي يمكنك استخدامها، 1866 01:33:11,240 --> 01:33:13,910 وغيرها من اللغات مثل جافا وغيرها، في الواقع 1867 01:33:13,910 --> 01:33:15,800 جعل من الأسهل كثيرا لحساب أعلى من ذلك. 1868 01:33:15,800 --> 01:33:19,810 لذلك هو حقا بعض من هذه المخاطر وظيفة اللغة التي تستخدمها. 1869 01:33:19,810 --> 01:33:22,710 وخلال الأسابيع القادمة، وسوف نقوم نرى كيف خطير C حقا 1870 01:33:22,710 --> 01:33:24,950 يمكن أن يكون إذا كنت لا تستخدم بشكل صحيح. 1871 01:33:24,950 --> 01:33:27,610 ولكن من هناك، ومع بيثون، وجافا سكريبت، سوف 1872 01:33:27,610 --> 01:33:32,620 نحن طبقة على بعض الحماية الإضافية، وتشغيل أقل من تلك المخاطر. 1873 01:33:32,620 --> 01:33:35,820 >> لذلك دعونا جعل أكثر من ذلك بقليل منطق مثيرة للاهتمام في برنامجنا. 1874 01:33:35,820 --> 01:33:39,110 لذلك اسمحوا لي أن أذهب إلى الأمام وخلق برنامج يسمى المنطقي 1875 01:33:39,110 --> 01:33:43,804 فقط حتى أتمكن من اللعب مع بعض المنطق الفعلي، logical.c. 1876 01:33:43,804 --> 01:33:46,870 أنا مجرد نسخ ولصق بعض كود في وقت سابق من ذلك أعود 1877 01:33:46,870 --> 01:33:49,950 لهذا نقطة انطلاق لطيفة. 1878 01:33:49,950 --> 01:33:53,980 >> اسمحوا لي هذه المرة القيام C. شار أنا الذهاب إلى إعطائها اسم C 1879 01:33:53,980 --> 01:33:58,510 لمجرد انها التقليدية، الحصول على حرف من المستخدم. 1880 01:33:58,510 --> 01:34:00,730 ودعونا نتظاهر مثل أنا تنفيذ جزء 1881 01:34:00,730 --> 01:34:04,130 هذا البرنامج رو، وإزالة البرنامج قبل أن مطالبة المستخدم 1882 01:34:04,130 --> 01:34:05,400 لإزالة ملف. 1883 01:34:05,400 --> 01:34:06,750 كيف يمكن أن نفعل ذلك؟ 1884 01:34:06,750 --> 01:34:11,090 >> أريد أن أقول، إذا كان يساوي C يساوي، الإقتباس، 1885 01:34:11,090 --> 01:34:16,304 ذ، ثم أنا ذاهب لنفترض أن المستخدم قد اختار نعم. 1886 01:34:16,304 --> 01:34:17,470 أنا ذاهب لمجرد طباعة نعم. 1887 01:34:17,470 --> 01:34:19,440 لو كانت الكتابة فعلا برنامج إزالة، 1888 01:34:19,440 --> 01:34:21,420 نحن يمكن إزالة الملف مع مزيد من الخطوط من التعليمات البرمجية. 1889 01:34:21,420 --> 01:34:22,461 ولكننا سوف يبقيه بسيط. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> آخر إذا تساوي ج يساوي n-- والآن هنا، وأنا أريد أن أقول، 1892 01:34:31,250 --> 01:34:32,980 يجب على المستخدم أن يعني لا. 1893 01:34:32,980 --> 01:34:34,360 ثم آخر، وأنت تعرف لماذا؟ 1894 01:34:34,360 --> 01:34:36,200 أنا لا أعرف ماذا المستخدم هو الذهاب الى الكتابة. 1895 01:34:36,200 --> 01:34:38,533 لذلك أنا فقط أريد أن أقول أن هذا خطأ، مهما كان 1896 01:34:38,533 --> 01:34:40,070 انه أو انها كتبته فعلا. 1897 01:34:40,070 --> 01:34:41,180 >> لذلك ما الذي يحدث هنا؟ 1898 01:34:41,180 --> 01:34:44,530 هناك فرق جوهري مقابل ما فعلته في الماضي. 1899 01:34:44,530 --> 01:34:49,300 التنصيص، علامات الاقتباس المزدوجة، انقر نقرا ونقلت وو، ولكن، ونقلت واحدة، 1900 01:34:49,300 --> 01:34:50,170 ونقلت واحدة. 1901 01:34:50,170 --> 01:34:52,860 اتضح في C، أنه عندما كنت أريد أن أكتب سلسلة، 1902 01:34:52,860 --> 01:34:56,680 كنت لا تستخدم علامات التنصيص، تماما كما كنا تم استخدام كل هذا الوقت مع printf. 1903 01:34:56,680 --> 01:35:02,030 >> ولكن إذا كنت ترغب في التعامل مع مجرد حرف واحد، وهو ما يسمى شار، 1904 01:35:02,030 --> 01:35:03,780 ثم كنت في الواقع استخدام علامات الاقتباس المفردة. 1905 01:35:03,780 --> 01:35:05,450 لأولئك منكم الذين برمجت من قبل، قد لا يكون لديك 1906 01:35:05,450 --> 01:35:07,850 كان ما يدعو للقلق حول هذا التمييز في بعض اللغات. 1907 01:35:07,850 --> 01:35:09,450 في C، ولكنه لا يهم. 1908 01:35:09,450 --> 01:35:12,560 وحتى عندما أحصل على شار وأريد لنقارن ذلك شار باستخدام يساوي 1909 01:35:12,560 --> 01:35:18,350 يساوي بعض إلكتروني مثل نعم أو لا، أنا لا، في الواقع، تحتاج إلى أن يكون الاقتباس واحدة. 1910 01:35:18,350 --> 01:35:19,770 >> الآن، دعونا نمضي قدما ونفعل هذا. 1911 01:35:19,770 --> 01:35:26,180 دعونا نمضي قدما ولا تجعل نقطة منطقية مائل منطقية. 1912 01:35:26,180 --> 01:35:27,305 والآن أنا المطالبة. 1913 01:35:27,305 --> 01:35:30,638 لذلك، من المفترض، وتجربة أفضل للمستخدم سيقول لي فعلا ما يجب القيام به هنا. 1914 01:35:30,638 --> 01:35:33,030 ولكن انا ذاهب الى مجرد عمياء يقول ذ لنعم، حسنا، لطيف. 1915 01:35:33,030 --> 01:35:35,780 >> دعونا تشغيله مرة أخرى، ن للا، لطيفة. 1916 01:35:35,780 --> 01:35:39,610 لنفترض مثل بعض الناس وأنا أعلم، بلدي مفتاح Caps Lock على كثير من الأحيان. 1917 01:35:39,610 --> 01:35:43,740 لذلك أقوم العاصمة Y، أدخل، خطأ. 1918 01:35:43,740 --> 01:35:46,130 حسنا، انها ليست بالضبط ما كنت أتوقع. 1919 01:35:46,130 --> 01:35:48,170 في الواقع، الكمبيوتر تقوم به حرفيا ما 1920 01:35:48,170 --> 01:35:51,794 قلت لdo-- تحقق ل صغيرة ذ والصغيرة ن. 1921 01:35:51,794 --> 01:35:53,960 هذا لا يشعر وكأنه جيدة تجربة المستخدم، وبالرغم من ذلك. 1922 01:35:53,960 --> 01:35:59,010 واسمحوا لي أن أسأل ل، واستعرض إما أقل القضية أو الحالة العليا. 1923 01:35:59,010 --> 01:36:02,090 لذلك تبين، قد ترغب أن أقول شيئا في مثل خدش، 1924 01:36:02,090 --> 01:36:08,150 مثل حرفيا أو C يساوي يساوي العاصمة واحد ذ نقلت. 1925 01:36:08,150 --> 01:36:11,400 تبين، C لايوجد هذه الكلمة الحرفي أو. 1926 01:36:11,400 --> 01:36:12,880 >> ولكن لديها اثنين من أشرطة عمودية. 1927 01:36:12,880 --> 01:36:15,463 لديك لعقد التحول عادة، إذا كنت تستخدم لوحة المفاتيح الولايات المتحدة، 1928 01:36:15,463 --> 01:36:18,910 وضرب شريط عمودي مفتاح فوق مفتاح عودتك. 1929 01:36:18,910 --> 01:36:22,410 ولكن هذا الشريط العمودي شريط عمودي يعني أو. 1930 01:36:22,410 --> 01:36:26,220 >> إذا، على النقيض من ذلك، أردنا أقول و، كما هو الحال في خدش، 1931 01:36:26,220 --> 01:36:28,180 يمكننا القيام به العطف العطف. 1932 01:36:28,180 --> 01:36:31,330 أن لا معنى منطقي هنا، لأن الإنسان لا يمكن أن 1933 01:36:31,330 --> 01:36:37,110 وقد كتبته على حد سواء ذ والصغيرة ذ ورأس المال Y كما نفس الحرف. 1934 01:36:37,110 --> 01:36:39,470 لذلك أو ما ننوي هنا. 1935 01:36:39,470 --> 01:36:46,280 >> لذلك إذا كنت تفعل هذا في كلا المكانين، أو ج يساوي يساوي العاصمة N، أعد الآن، 1936 01:36:46,280 --> 01:36:49,390 جعل منطقية، إعادة تشغيل منطقي. 1937 01:36:49,390 --> 01:36:51,200 الآن، ويمكنني أن اكتب ذ. 1938 01:36:51,200 --> 01:36:53,920 وأستطيع أن أفعل ذلك مرة أخرى مع العاصمة Y، أو N. العاصمة 1939 01:36:53,920 --> 01:36:56,630 وبوسعي أن أضيف في إضافي تركيبات لا يزال. 1940 01:36:56,630 --> 01:36:58,810 >> لذلك هذا هو منطقي البرنامج بقدر الآن 1941 01:36:58,810 --> 01:37:01,940 أنا فحص منطقيا ل هذه القيمة أو هذه القيمة. 1942 01:37:01,940 --> 01:37:06,420 وأنا لم يكن لديك ل، بالضرورة، يأتي مع اثنين من أكثر المحاذير وإلا استثناءات. 1943 01:37:06,420 --> 01:37:09,960 أنا يمكن الجمع بين الواقع بعض منطق ذات الصلة معا في هذا الطريق. 1944 01:37:09,960 --> 01:37:11,950 ولذلك فإن هذا سيكون أفضل صمم من مجرد 1945 01:37:11,950 --> 01:37:17,490 وقال: إذا C يساوي أقل حالة ذ، طباعة نعم، وإلا إذا ج يساوي العاصمة Y، 1946 01:37:17,490 --> 01:37:20,074 طباعة نعم، وإلا إذا تساوي ج lower-- وبعبارة أخرى، 1947 01:37:20,074 --> 01:37:21,990 لم يكن لديك لديك المزيد والمزيد من الفروع. 1948 01:37:21,990 --> 01:37:28,840 يمكنك الجمع بين بعض ما يعادل فروع منطقيا، كما هو الحال في هذا الطريق. 1949 01:37:28,840 --> 01:37:34,150 >> لذلك دعونا نلقي نظرة على واحدة فقط العنصر النهائي، واحدة بناء النهائية، 1950 01:37:34,150 --> 01:37:34,847 أن C يسمح. 1951 01:37:34,847 --> 01:37:36,930 وسوف نعود في المستقبل للآخرين لا يزال. 1952 01:37:36,930 --> 01:37:41,400 وبعد ذلك سوف نستنتج من خلال النظر لعدم صحة code-- 1953 01:37:41,400 --> 01:37:46,070 الحصول على الرمز إلى work-- لكن التصميم من التعليمات البرمجية، وزرع هذه البذور في وقت مبكر. 1954 01:37:46,070 --> 01:37:51,337 >> لذلك اسمحوا لي المضي قدما و فتح ملف جديد هنا. 1955 01:37:51,337 --> 01:37:51,920 أتعلم؟ 1956 01:37:51,920 --> 01:37:54,450 انا ذاهب الى إعادة تنفيذ- هذا البرنامج نفسه، 1957 01:37:54,450 --> 01:37:55,940 ولكن باستخدام بناء مختلفة. 1958 01:37:55,940 --> 01:38:00,110 >> لذلك اسمحوا لي بسرعة أعطي نفسي وصول لتشمل CS50.h 1959 01:38:00,110 --> 01:38:04,150 للمكتبة CS50، Io.h معيار لprintf. 1960 01:38:04,150 --> 01:38:06,510 أعطني بلدي الفراغ الرئيسي كثافة العمليات. 1961 01:38:06,510 --> 01:38:09,310 ثم هنا، اسمحوا لي نمضي قدما ونفعل هذا. 1962 01:38:09,310 --> 01:38:12,010 >> شار ج يحصل على شار، تماما مثل قبل. 1963 01:38:12,010 --> 01:38:16,770 وانا ذاهب الى استخدام بناء جديد الآن-- تبديل، على ما الشخصية؟ 1964 01:38:16,770 --> 01:38:19,820 ذلك التحول هو نوع من مثل التحول من خطوط السكك الحديدية. 1965 01:38:19,820 --> 01:38:22,070 أو، في الحقيقة، هو نوع من وعدا ذلك، إذا آخر إذا، 1966 01:38:22,070 --> 01:38:23,980 ولكن مكتوبة بشكل مختلف نوعا ما. 1967 01:38:23,980 --> 01:38:25,490 >> فالتحول يشبه هذا. 1968 01:38:25,490 --> 01:38:29,060 لديك التبديل، ثم ما حرف أو الرقم الذي تريد أن ننظر، 1969 01:38:29,060 --> 01:38:32,000 ثم بعض الأقواس المجعدة كما هو الحال في الصفر، ويقول عادل تفعل هذه الاشياء. 1970 01:38:32,000 --> 01:38:33,480 ثم لديك قضايا مختلفة. 1971 01:38:33,480 --> 01:38:34,830 >> كنت لا تستخدم إذا وآخر. 1972 01:38:34,830 --> 01:38:37,050 لكم حرفيا استخدام القضية كلمة. 1973 01:38:37,050 --> 01:38:38,790 وسوف أقول لكم شيئا من هذا القبيل. 1974 01:38:38,790 --> 01:38:43,820 >> حتى في حالة وجود ذ صغيرة، أو في حالة وجود عاصمة Y، 1975 01:38:43,820 --> 01:38:47,350 المضي قدما وطباعة نعم. 1976 01:38:47,350 --> 01:38:49,020 ومن ثم الخروج من التبديل. 1977 01:38:49,020 --> 01:38:49,580 هذا هو. 1978 01:38:49,580 --> 01:38:50,880 لقد انتهينا. 1979 01:38:50,880 --> 01:38:57,270 >> آخر إذا، إذا جاز التعبير، انخفاض حالة ن، أو رأس المال N، 1980 01:38:57,270 --> 01:39:02,560 ثم المضي قدما والطباعة من لا، ومن ثم كسر. 1981 01:39:02,560 --> 01:39:08,022 Else-- وهذا النوع من هو الحالة الافتراضية indeed-- printf error-- 1982 01:39:08,022 --> 01:39:10,980 وفقط لحسن التدبير، على الرغم من منطقيا كسر هذا ليس ضروريا 1983 01:39:10,980 --> 01:39:12,896 لأننا في نهاية للتبديل على أي حال، 1984 01:39:12,896 --> 01:39:14,520 أنا كسر الآن من التبديل. 1985 01:39:14,520 --> 01:39:16,280 لذلك هذا تبدو مختلفة قليلا. 1986 01:39:16,280 --> 01:39:18,272 >> ولكن، منطقيا، انها أي ما يعادل في الواقع. 1987 01:39:18,272 --> 01:39:19,980 وماذا كنت تستخدم واحد على الآخر؟ 1988 01:39:19,980 --> 01:39:23,220 في بعض الأحيان، مجرد تفضيل شخصي، أحيانا جماليات، 1989 01:39:23,220 --> 01:39:25,420 إذا كنت إلقاء نظرة على هذا الآن، هناك شيء 1990 01:39:25,420 --> 01:39:27,510 يمكن أن يقال ل قراءة من هذا القانون. 1991 01:39:27,510 --> 01:39:30,690 أعني، ناهيك عن حقيقة أن هذا متاحة الجديد للكثيرين منا في الغرفة. 1992 01:39:30,690 --> 01:39:33,515 >> ولكن مجرد نوع من هي جميلة. 1993 01:39:33,515 --> 01:39:37,760 ترى صغيرة ذ عاصمة Y، انخفاض حالة ن عاصمة N الافتراضي، 1994 01:39:37,760 --> 01:39:40,150 انها مجرد نوع من يقفز في لكم بطريقة 1995 01:39:40,150 --> 01:39:42,200 هذا، يمكن القول، ربما المثال السابق 1996 01:39:42,200 --> 01:39:45,780 مع المؤسسة الدولية للعلوم، وأشرطة عمودية، والمحاذير آخر، قد لا يكون. 1997 01:39:45,780 --> 01:39:51,600 لذلك هذا هو حقا مسألة شخصية الاختيار، حقا، أو القراءة، 1998 01:39:51,600 --> 01:39:52,360 من التعليمات البرمجية. 1999 01:39:52,360 --> 01:39:58,230 >> ولكن من حيث الأداء الوظيفي، واسمحوا لي المضي قدما وجعل التبديل، مائل نقطة 2000 01:39:58,230 --> 01:40:05,830 التبديل، واكتب الآن في ذ صغيرة، العاصمة Y، ن صغيرة عاصمة N، 2001 01:40:05,830 --> 01:40:09,250 ديفيد، إعادة المحاولة لأن هذا لا حرف واحد. 2002 01:40:09,250 --> 01:40:12,050 دعونا نفعل س، خطأ، كما هو متوقع. 2003 01:40:12,050 --> 01:40:15,640 و، logically-- وهذا شيء وأود أن أشجع في general-- حتى 2004 01:40:15,640 --> 01:40:17,790 على الرغم من أننا فقط خدش سطح بعض من هذه الميزات. 2005 01:40:17,790 --> 01:40:20,560 >> وأنه قد لا يكون واضحا عند نفسك الجلوس على لوحة المفاتيح، 2006 01:40:20,560 --> 01:40:21,370 كيف يعمل هذا؟ 2007 01:40:21,370 --> 01:40:22,240 ما هذا من شأنه أن تفعل؟ 2008 01:40:22,240 --> 01:40:25,630 الشيء الجميل عن وجود جهاز كمبيوتر محمول، أو سطح المكتب، أو الوصول 2009 01:40:25,630 --> 01:40:29,290 إلى كمبيوتر مع مترجم، ومع محرر مدونة من هذا القبيل، 2010 01:40:29,290 --> 01:40:32,990 ويمكنك دائما تقريبا الإجابة على هذه الأسئلة لنفسك فقط عن طريق المحاولة. 2011 01:40:32,990 --> 01:40:36,570 >> على سبيل المثال، إذا كان الخطابي كانت مسألة في متناول اليد، 2012 01:40:36,570 --> 01:40:39,540 ماذا يحدث إذا كنت قد نسيت البيانات كسر الخاص بك؟ 2013 01:40:39,540 --> 01:40:41,400 الذي هو في الواقع شائعة جدا ما ينبغي القيام به، 2014 01:40:41,400 --> 01:40:43,540 لأنه لا يبدو مثل كنت حقا في حاجة إليها. 2015 01:40:43,540 --> 01:40:46,790 أنها لا تكمل في الواقع الخاص بك يعتقد مثل قوس أو مجعد 2016 01:40:46,790 --> 01:40:47,714 هدفين لا. 2017 01:40:47,714 --> 01:40:49,630 دعونا نمضي قدما و إعادة ترجمة التعليمات البرمجية ونرى. 2018 01:40:49,630 --> 01:40:53,690 وهكذا جعل التبديل، نقطة التحول مائلة. 2019 01:40:53,690 --> 01:40:56,435 دعونا اكتب في الحالة الأدنى ذ، في حالة أعلى، أدخل. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 لذلك أنا كتبته ذ. 2022 01:41:00,700 --> 01:41:04,420 >> وقال برنامج نعم، لا، خطأ، كما لو انها تغير رأيها. 2023 01:41:04,420 --> 01:41:09,280 ولكنه نوع من كان، لأن ما يحدث مع التحول هو الحال الأولى التي 2024 01:41:09,280 --> 01:41:13,899 مباراة تعني في الأساس، مهلا الكمبيوتر، تنفيذ كافة التعليمات البرمجية تحتها. 2025 01:41:13,899 --> 01:41:16,690 وإذا كنت لا أقول كسر، أو لا أقول كسر، أو لا أقول انقطاع، 2026 01:41:16,690 --> 01:41:19,540 الكمبيوتر هو الذهاب الى تفجير خلال كل تلك الخطوط 2027 01:41:19,540 --> 01:41:22,779 وتنفيذ كل منهم حتى فإنه يحصل على هذا متعرج. 2028 01:41:22,779 --> 01:41:24,320 حتى الفرامل هي، في الواقع، اللازمة. 2029 01:41:24,320 --> 01:41:27,120 ولكن الوجبات الجاهزة هنا، عندما في شك، حاول شيئا. 2030 01:41:27,120 --> 01:41:29,510 ربما حفظ التعليمات البرمجية الخاصة بك أولا، أو حفظه في ملف إضافي 2031 01:41:29,510 --> 01:41:32,930 إذا كنت قلقا حقا حول لخبطة والحاجة إلى استعادة 2032 01:41:32,930 --> 01:41:34,430 العمل الذي تعرفه يعمل. 2033 01:41:34,430 --> 01:41:35,410 >> ولكن في محاولة الأشياء. 2034 01:41:35,410 --> 01:41:38,074 ولا تخافوا كما، ربما، ما قد يفعله الكمبيوتر، 2035 01:41:38,074 --> 01:41:39,490 أو أنك قد كسر شيء. 2036 01:41:39,490 --> 01:41:42,790 يمكنك دائما العودة الى الوراء لبعض إصدار سابق. 2037 01:41:42,790 --> 01:41:45,640 >> لذلك دعونا ينتهي من خلال النظر في التصميم من التعليمات البرمجية. 2038 01:41:45,640 --> 01:41:49,020 لدينا هذه القدرة الآن على كتابة الشروط والحلقات الكتابة، 2039 01:41:49,020 --> 01:41:50,850 والمتغيرات، وظائف الاتصال. 2040 01:41:50,850 --> 01:41:54,590 لذلك، وبصراحة، نحن نوع من الخلف في حيث كنا قبل أسبوع مع خدش، 2041 01:41:54,590 --> 01:42:00,120 وإن كان ذلك مع النصوص أقل مقنعة البيئة من خدش تسمح. 2042 01:42:00,120 --> 01:42:03,990 >> ولكن لاحظ كيف بسرعة اكتسبناه أن المفردات، حتى لو كان 2043 01:42:03,990 --> 01:42:07,570 سيستغرق بعض الوقت لتغرق في، حتى نتمكن من الآن استخدام هذه المفردات 2044 01:42:07,570 --> 01:42:10,320 لكتابة برامج أكثر إثارة للاهتمام. 2045 01:42:10,320 --> 01:42:12,940 ودعونا نلقي خطوة الطفل نحو ذلك، على النحو التالي. 2046 01:42:12,940 --> 01:42:14,890 اسمحوا لي أن المضي قدما في إنشاء ملف جديد هنا. 2047 01:42:14,890 --> 01:42:17,750 >> أنا ذاهب لاستدعاء هذا prototype.c، وإدخال 2048 01:42:17,750 --> 01:42:20,954 لأول مرة، والقدرة لجعل المهام الخاصة بك. 2049 01:42:20,954 --> 01:42:22,870 البعض منكم قد يكون فعلت ذلك مع خدش، 2050 01:42:22,870 --> 01:42:25,430 حيث يمكنك إنشاء الخاصة بك كتل المخصصة الخاصة في خدش، 2051 01:42:25,430 --> 01:42:27,892 ومن ثم جرها إلى مكان أينما كنت ترغب في C. 2052 01:42:27,892 --> 01:42:30,100 وفي معظم البرمجة لغات، يمكنك أن تفعل بالضبط 2053 01:42:30,100 --> 01:42:33,580 هكذا- يضرب جعل المهام الخاصة بك، إذا لم تكن موجودة بالفعل. 2054 01:42:33,580 --> 01:42:38,660 >> لذلك، على سبيل المثال، اسمحوا لي أن المضي قدما وتشمل CS50.h، وتشمل 2055 01:42:38,660 --> 01:42:43,110 معيار IO.h، الفراغ الرئيسي كثافة العمليات. 2056 01:42:43,110 --> 01:42:46,020 والآن لدينا العنصر النائب على استعداد للذهاب. 2057 01:42:46,020 --> 01:42:48,550 أنا ابقاء الامور الطباعة مثل أسماء الناس اليوم. 2058 01:42:48,550 --> 01:42:51,910 وأن يشعر like-- لن يكون لطيفا إذا كان هناك 2059 01:42:51,910 --> 01:42:53,936 كانت وظيفة تسمى اسم المطبوعة؟ 2060 01:42:53,936 --> 01:42:55,060 أنا لم يكن لديك لاستخدام printf. 2061 01:42:55,060 --> 01:42:56,976 أنا لم يكن لديك لنتذكر جميع رموز تنسيق. 2062 01:42:56,976 --> 01:43:00,050 لماذا لا أنا، أو لماذا لم شخص قبلي، 2063 01:43:00,050 --> 01:43:02,980 إنشاء دالة يسمى الطباعة اسم، أنه نظرا بعض الاسم، 2064 01:43:02,980 --> 01:43:03,980 ببساطة يطبع بها؟ 2065 01:43:03,980 --> 01:43:08,700 >> وبعبارة أخرى، إذا قلت، مهلا، الكمبيوتر، أعطني سلسلة 2066 01:43:08,700 --> 01:43:11,870 بسؤال المستخدم لمثل هذا، من خلال وظيفة سلسلة الحصول CS50 ل. 2067 01:43:11,870 --> 01:43:15,090 مهلا، الكمبيوتر، وضعت هذه السلسلة في المتغير في الجانب الأيسر، 2068 01:43:15,090 --> 01:43:16,150 والذي يطلق عليه ق. 2069 01:43:16,150 --> 01:43:22,150 ومن ثم، مهلا الكمبيوتر، والمضي قدما وطباعة إسم هذا الشخص، القيام به. 2070 01:43:22,150 --> 01:43:26,240 >> الآن، سيكون من الجميل، ل هذا البرنامج، اسم على مسمى، 2071 01:43:26,240 --> 01:43:29,170 يقول لي ما يفترض القيام به عن طريق أسماء تلك الدالة. 2072 01:43:29,170 --> 01:43:32,930 اسمحوا لي ان اذهب وجعل النموذج، أدخل. 2073 01:43:32,930 --> 01:43:34,930 و، للأسف، هذا لن يطير. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c، السطر 7، شخصية 5، خطأ، إعلانا ضمنيا 2075 01:43:39,430 --> 01:43:42,960 من اسم المطبوعة وظيفة غير صالح في C99، C99 2076 01:43:42,960 --> 01:43:45,130 وهذا يعني نسخة من C التي خرجت في عام 1999. 2077 01:43:45,130 --> 01:43:45,730 هذا كل شئ. 2078 01:43:45,730 --> 01:43:48,780 >> لذلك أنا لا أعرف ما كل هذا يعني حتى الان. 2079 01:43:48,780 --> 01:43:50,810 لكنني الاعتراف خطأ باللون الأحمر. 2080 01:43:50,810 --> 01:43:51,770 وهذا واضح جدا. 2081 01:43:51,770 --> 01:43:53,769 >> ويبدو أنه مع الطابع الأخضر هنا، 2082 01:43:53,769 --> 01:43:57,520 كانت المشكلة مع اسم المطبوعة، وفتح القوسين الصورة، إغلاق القوسين، منقوطة. 2083 01:43:57,520 --> 01:44:01,800 لكن إعلان ضمني وظيفة فعلنا نرى لفترة وجيزة في وقت سابق. 2084 01:44:01,800 --> 01:44:04,880 وهذا يعني، ببساطة، أن رنة لا تعرف ما أعنيه. 2085 01:44:04,880 --> 01:44:09,000 >> لقد استعملت كلمة المفردات أنه لم أر أو تم تدريسها من قبل. 2086 01:44:09,000 --> 01:44:11,950 ولذلك أنا بحاجة لتدريسه ماذا تعني هذه الوظيفة. 2087 01:44:11,950 --> 01:44:13,590 لذلك أنا ذاهب إلى المضي قدما ونفعل ذلك. 2088 01:44:13,590 --> 01:44:17,970 >> انا ذاهب الى المضي قدما في تنفيذ مهمتي الخاصة يسمى اسم طباعة. 2089 01:44:17,970 --> 01:44:24,720 وأنا أريد أن أقول، على النحو التالي، أن وهي تفعل ذلك، printf، مرحبا، في المئة 2090 01:44:24,720 --> 01:44:27,760 الصورة، مائل ن والاسم ومنقوطة. 2091 01:44:27,760 --> 01:44:29,250 وذلك ما لم أنا فقط أفعل؟ 2092 01:44:29,250 --> 01:44:31,325 >> هكذا اتضح، ل تنفيذ وظيفة الخاصة بك، 2093 01:44:31,325 --> 01:44:33,845 نحن نوع من اقتراض بعض نفس هيكل الرئيسي 2094 01:44:33,845 --> 01:44:35,720 أن كنا فقط مفروغا منه، وأنا 2095 01:44:35,720 --> 01:44:37,730 أعرف فقط نسخ و لصق حد كبير ما 2096 01:44:37,730 --> 01:44:39,170 لقد تم كتابة في الماضي. 2097 01:44:39,170 --> 01:44:40,570 ولكن لاحظ نمط هنا. 2098 01:44:40,570 --> 01:44:43,750 كثافة العمليات، الرئيسي، الفراغ، فإننا سوف ندف بعيدا قبل فترة طويلة ماذا يعني ذلك في الواقع. 2099 01:44:43,750 --> 01:44:46,160 >> ولكن لهذا اليوم، فقط تلاحظ التوازي. 2100 01:44:46,160 --> 01:44:48,210 باطلا، اسم المطبوعة، اسم السلسلة، ولذلك لا يوجد 2101 01:44:48,210 --> 01:44:50,310 والكلمة الأرجواني، الذي ونحن في طريقنا لبدء 2102 01:44:50,310 --> 01:44:54,067 استدعاء نوع الإرجاع، واسم وظيفة، ثم دخل. 2103 01:44:54,067 --> 01:44:56,400 لذلك، في الواقع، يمكننا استخلاص هذا النوع من مثل الأسبوع الماضي 2104 01:44:56,400 --> 01:44:59,030 كما، وهذا هو الاسم أو الخوارزمية من قانون نحن 2105 01:44:59,030 --> 01:45:00,761 الذهاب إلى write-- لل الخوارزمية 2106 01:45:00,761 --> 01:45:02,010 رمز ونحن في طريقنا إلى الكتابة. 2107 01:45:02,010 --> 01:45:03,180 >> هذا هو مدخلاته. 2108 01:45:03,180 --> 01:45:04,670 هذا هو انتاجها. 2109 01:45:04,670 --> 01:45:08,730 هذه الوظيفة، اسم المطبوعة، هو مصممة على اتخاذ سلسلة تسمى اسم، 2110 01:45:08,730 --> 01:45:11,350 أو أيا كان، كمدخل، ثم الفراغ. 2111 01:45:11,350 --> 01:45:13,904 فإنه لا يرجع أي شيء، مثل الحصول على سلسلة أو الحصول على كثافة لا. 2112 01:45:13,904 --> 01:45:15,570 لذلك سيكون لتسليم لي شيئا في المقابل. 2113 01:45:15,570 --> 01:45:17,960 انها مجرد ستكون لدينا الآثار الجانبية، إذا جاز التعبير، 2114 01:45:17,960 --> 01:45:19,570 طباعة اسم الشخص. 2115 01:45:19,570 --> 01:45:22,260 لذلك تلاحظ، السطر 7، وأنا يمكن أن نطلق اسم المطبوعة. 2116 01:45:22,260 --> 01:45:25,920 خط 10، وأنا يمكن أن تحدد أو تنفيذ اسم المطبوعة. 2117 01:45:25,920 --> 01:45:28,450 ولكن، للأسف، هذا لا يكفي. 2118 01:45:28,450 --> 01:45:31,230 >> اسمحوا لي أن المضي قدما في إعادة ترجمة هذا بعد حفظه. 2119 01:45:31,230 --> 01:45:33,910 قف، الآن، لقد جعلت من الأسوأ من ذلك، فإنه يبدو. 2120 01:45:33,910 --> 01:45:37,027 إعلان ضمني لذلك من اسم وظيفة الطباعة غير صالح. 2121 01:45:37,027 --> 01:45:38,360 ومرة أخرى، هناك المزيد من الأخطاء. 2122 01:45:38,360 --> 01:45:41,430 ولكن كما قلت حذر في وقت سابق، حتى إذا كنت الحصول على طغت مع، 2123 01:45:41,430 --> 01:45:44,850 أو حزين قليلا لرؤية هذا العدد الكبير الأخطاء، والتركيز فقط على أول 2124 01:45:44,850 --> 01:45:47,500 في البداية، لأنه ربما فقط كان لها تأثير المتتالية. 2125 01:45:47,500 --> 01:45:51,970 لذا C، أو رنة وبشكل أكثر تحديدا، لا يزال لا يعرف اسمه الطباعة. 2126 01:45:51,970 --> 01:45:54,580 >> وذلك لأن رنة، حسب التصميم، هو نوع من البكم. 2127 01:45:54,580 --> 01:45:56,280 وهو يفعل إلا ما كنت أقول أن تفعله. 2128 01:45:56,280 --> 01:46:00,950 وهو يفعل ذلك فقط في الترتيب الذي كنت أقول أن تفعله. 2129 01:46:00,950 --> 01:46:05,270 >> لذلك أنا قد حددت الرئيسي على خط الأربعة، كما كنا نفعل في كثير من الأحيان إلى حد ما. 2130 01:46:05,270 --> 01:46:07,980 لقد تعرف اسم المطبوعة على خط 10. 2131 01:46:07,980 --> 01:46:11,793 ولكن أنا أحاول أن استخدام اسم المطبوعة على خط سبعة. 2132 01:46:11,793 --> 01:46:13,670 >> انها في وقت قريب جدا، لم تكن موجودة حتى الآن. 2133 01:46:13,670 --> 01:46:19,150 لذلك يمكن أن تكون ذكية، ويكون مثل، حسنا، دعونا لعب جنبا إلى جنب، 2134 01:46:19,150 --> 01:46:23,680 ونقل اسم طباعة تصل هنا، وإعادة تجميع. 2135 01:46:23,680 --> 01:46:24,550 يا إلهي. 2136 01:46:24,550 --> 01:46:25,260 انها عملت. 2137 01:46:25,260 --> 01:46:26,670 انها بسيطة على هذا النحو. 2138 01:46:26,670 --> 01:46:28,120 >> ولكن المنطق هو ذلك بالضبط. 2139 01:46:28,120 --> 01:46:30,870 لديك لتعليم رنة ما هو من خلال تحديد وظيفة أولا. 2140 01:46:30,870 --> 01:46:31,920 ثم يمكنك استخدامه. 2141 01:46:31,920 --> 01:46:33,940 ولكن، بصراحة، وهذا يشعر مثل منحدر زلق. 2142 01:46:33,940 --> 01:46:35,773 >> هكذا في كل مرة أقوم بتشغيل في مشكلة، أنا فقط 2143 01:46:35,773 --> 01:46:39,450 الذهاب لتسليط الضوء على ونسخ رمز كتبت، وقطع ولصقه هنا. 2144 01:46:39,450 --> 01:46:41,370 وبالتأكيد، فإننا يمكن أن دبر بعض السيناريوهات 2145 01:46:41,370 --> 01:46:43,286 حيث قد وظيفة واحدة تحتاج إلى استدعاء آخر. 2146 01:46:43,286 --> 01:46:46,030 وانك لا يمكن وضع كل وظيفة فوق كل الآخرين. 2147 01:46:46,030 --> 01:46:47,930 >> هكذا اتضح هناك ل أفضل حل. 2148 01:46:47,930 --> 01:46:50,100 يمكننا أن نترك هذا يكون. 2149 01:46:50,100 --> 01:46:53,677 وبصراحة، أنه من الجيد عموما، ومريحة، والتصميم الجيد 2150 01:46:53,677 --> 01:46:56,760 لوضع الرئيسية أولا، لأنه، مرة أخرى، الرئيسية تماما مثل عند النقر العلم الأخضر، 2151 01:46:56,760 --> 01:46:59,027 هذا هو وظيفة أن يعدم افتراضيا. 2152 01:46:59,027 --> 01:47:01,110 لذلك قد مثل وضع جيد في الجزء العلوي من الملف 2153 01:47:01,110 --> 01:47:03,560 حتى عندما كنت أنت أو أي يبدو انسان آخر في الملف 2154 01:47:03,560 --> 01:47:06,360 أنت تعرف ما يحدث فقط من خلال قراءة الرئيسي أولا. 2155 01:47:06,360 --> 01:47:15,360 لذلك تبين، يمكننا ان نقول رنة استباقي، مهلا، رنة، على خط الأربعة، 2156 01:47:15,360 --> 01:47:17,940 أعدك أن تنفيذ وظيفة تسمى طباعة 2157 01:47:17,940 --> 01:47:22,600 الاسم الذي يأخذ اسم سلسلة تسمى كمدخل، والعوائد شيء أو باطل. 2158 01:47:22,600 --> 01:47:24,770 وسوف تحصل في جميع أنحاء ل تنفيذ في وقت لاحق. 2159 01:47:24,770 --> 01:47:25,680 >> هنا يأتي الرئيسية. 2160 01:47:25,680 --> 01:47:29,130 الرئيسية الآن على خط 9 يمكن استخدام اسم المطبوعة بسبب رنة 2161 01:47:29,130 --> 01:47:32,600 والثقة التي، في نهاية المطاف، وسوف تواجه التعريف 2162 01:47:32,600 --> 01:47:34,880 لتنفيذ اسم طباعة. 2163 01:47:34,880 --> 01:47:37,390 حتى بعد حفظ الملف الخاص بي، واسمحوا لي المضي قدما وتقديم النموذج، 2164 01:47:37,390 --> 01:47:38,498 تبدو جيدة هذه المرة. 2165 01:47:38,498 --> 01:47:43,470 نقطة خفض، والنموذج، واسمحوا لي المضي قدما واكتب في اسم. 2166 01:47:43,470 --> 01:47:48,440 ديفيد، مرحبا ديفيد، Zamila، مرحبا Zamila، و، في الواقع، والآن يعمل. 2167 01:47:48,440 --> 01:47:52,200 >> لذلك العنصر هنا هو أن لدينا جعل وظيفة مخصصة، مثل مخصص 2168 01:47:52,200 --> 01:47:54,219 كتلة الصفر نحن نطلق عليه. 2169 01:47:54,219 --> 01:47:57,010 ولكن على عكس الصفر حيث يمكنك فقط إنشائه والبدء في استخدامه، 2170 01:47:57,010 --> 01:47:59,330 الآن علينا أن نكون على أكثر قليلا متحذلق، 2171 01:47:59,330 --> 01:48:03,410 وفعلا تدريب رنة للاستخدام، أو أن نتوقع ذلك. 2172 01:48:03,410 --> 01:48:09,140 الآن، بوصفها جانبا، لماذا كل هذا الوقت لديها نحن للتو على نحو أعمى على الإيمان بما في ذلك 2173 01:48:09,140 --> 01:48:12,170 CS50.h، وبما في ذلك معيار IO.h؟ 2174 01:48:12,170 --> 01:48:15,190 >> حسنا، كما تبين، بين عدد قليل من الأشياء الأخرى، 2175 01:48:15,190 --> 01:48:18,550 كل هذا في تلك النقطة ح الملفات، ويحدث أن تكون ملفات. 2176 01:48:18,550 --> 01:48:20,460 انهم الملفات رأس، إذا جاز التعبير. 2177 01:48:20,460 --> 01:48:23,270 انهم ما زالوا مكتوب في C. ولكن انهم نوع مختلف من الملف. 2178 01:48:23,270 --> 01:48:28,690 >> في الوقت الراهن، يمكن أن نفترض حد كبير أن كل ما هو داخل CS50.h 2179 01:48:28,690 --> 01:48:33,360 هو بعض المتشددين واحد من هذا القبيل، لا لوظائف دعا اسم طباعة، 2180 01:48:33,360 --> 01:48:36,840 ولكن لاحصل على سلسلة، واحصل على تعويم، وعدد قليل من الآخرين. 2181 01:48:36,840 --> 01:48:41,510 وهناك نماذج مماثلة، واحد المتشددين، داخل IO.h القياسية 2182 01:48:41,510 --> 01:48:46,241 لprintf، الذي هو الآن في بلدي وظيفة اسم طباعة. 2183 01:48:46,241 --> 01:48:49,490 لذلك وبعبارة أخرى، وهذه المرة كله قمنا فقط تم نسخ ولصق عمياء 2184 01:48:49,490 --> 01:48:51,780 وتشمل هذه، وتشمل ذلك، ما الذي يحدث؟ 2185 01:48:51,780 --> 01:48:55,310 تلك ليست سوى نوع من القرائن إلى رنة لما ظائف 2186 01:48:55,310 --> 01:49:00,170 هي، في الواقع، نفذت فقط في أماكن أخرى في ملفات مختلفة 2187 01:49:00,170 --> 01:49:02,440 في مكان آخر على النظام. 2188 01:49:02,440 --> 01:49:05,160 >> ولذا فإننا قد نفذت اسم المطبوعة. 2189 01:49:05,160 --> 01:49:07,910 فإنه لا يكون هذا التأثير الجانبي لل طباعة شيء على الشاشة. 2190 01:49:07,910 --> 01:49:10,170 ولكنه لم يكن في الواقع تسلم لي شيئا في المقابل. 2191 01:49:10,170 --> 01:49:12,200 كيف نذهب حول تنفيذ برنامج 2192 01:49:12,200 --> 01:49:14,510 لا يسلم لي شيئا مرة أخرى؟ 2193 01:49:14,510 --> 01:49:15,580 >> حسنا، دعونا نحاول هذا. 2194 01:49:15,580 --> 01:49:21,360 اسمحوا لي أن المضي قدما في تنفيذ ملف يسمى return.c 2195 01:49:21,360 --> 01:49:24,530 حتى نتمكن من شرح كيفية شيئا مثل الحصول على سلسلة، أو الحصول على كثافة العمليات، 2196 01:49:24,530 --> 01:49:27,340 هو العودة في الواقع شيء إلى المستخدم. 2197 01:49:27,340 --> 01:49:29,840 دعونا نمضي قدما وتحديد الفراغ الرئيسي كثافة العمليات. 2198 01:49:29,840 --> 01:49:33,230 >> ومرة أخرى، في المستقبل، وسوف نقوم شرح ما أن كثافة وهذا الفراغ 2199 01:49:33,230 --> 01:49:34,090 هو القيام بالفعل. 2200 01:49:34,090 --> 01:49:35,840 ولكن لهذا اليوم، وسوف نقوم أعتبر أمرا مفروغا منه. 2201 01:49:35,840 --> 01:49:39,970 انا ذاهب الى المضي قدما وprintf، للحصول على تجربة جيدة للمستخدم، x هو. 2202 01:49:39,970 --> 01:49:44,360 ثم انا ذاهب الى الانتظار ل المستخدم أن تعطيني X مع كثافة الحصول عليها. 2203 01:49:44,360 --> 01:49:48,459 >> ثم انا ذاهب الى المضي قدما وطباعة x إلى الساحة. 2204 01:49:48,459 --> 01:49:50,500 حتى عندما يكون لديك فقط لوحة المفاتيح، والناس عادة 2205 01:49:50,500 --> 01:49:52,600 استخدام الجزرة قليلا رمز على لوحة المفاتيح 2206 01:49:52,600 --> 01:49:55,330 لتمثيل لسلطة من، أو الأس. 2207 01:49:55,330 --> 01:49:58,960 لذا X مربع موجود ط. 2208 01:49:58,960 --> 01:50:00,660 >> والآن أنا ذاهب للقيام بذلك. 2209 01:50:00,660 --> 01:50:03,940 أنا فقط يمكن أن do-- ما هو العاشر المربعة؟ س التربيعية س س الأوقات. 2210 01:50:03,940 --> 01:50:06,690 >> وفعلنا هذا بعض منذ فترة بالفعل اليوم. 2211 01:50:06,690 --> 01:50:08,730 هذا لا يشعر وكأنه كل ما تقدم كبير. 2212 01:50:08,730 --> 01:50:09,570 أتعلم؟ 2213 01:50:09,570 --> 01:50:13,100 دعونا الاستفادة من بعض هذه الفكرة من آخر مرة من التجريد. 2214 01:50:13,100 --> 01:50:16,080 >> لن يكون ذلك جميلا إذا هناك وظيفة تسمى 2215 01:50:16,080 --> 01:50:18,460 المربع الذي يفعل ذلك بالضبط؟ 2216 01:50:18,460 --> 01:50:20,640 لا يزال، في نهاية اليوم، لا نفس الرياضيات. 2217 01:50:20,640 --> 01:50:22,410 ولكن دعونا مجردة بعيدا عن فكرة جني 2218 01:50:22,410 --> 01:50:25,280 رقم واحد مضروبا آخر، ويكتفي بأن يقدم لها اسم، 2219 01:50:25,280 --> 01:50:27,360 مثل تربيع هذه القيمة. 2220 01:50:27,360 --> 01:50:29,560 >> وبعبارة أخرى، في C، دعونا خلق وظيفة 2221 01:50:29,560 --> 01:50:32,660 دعا المربع الذي يفعل ذلك بالضبط. 2222 01:50:32,660 --> 01:50:34,600 انها على وشك أن يسمى مربع. 2223 01:50:34,600 --> 01:50:35,790 انها سوف تأخذ عدد صحيح. 2224 01:50:35,790 --> 01:50:37,820 وسنقوم سوف فقط نسميها ن، بشكل افتراضي. 2225 01:50:37,820 --> 01:50:39,403 >> لكننا يمكن أن يطلق عليه أي شيء نريده. 2226 01:50:39,403 --> 01:50:42,900 وكل ما يحدث ل القيام به، حرفيا، هو عودة 2227 01:50:42,900 --> 01:50:45,810 نتيجة المرات ن ن. 2228 01:50:45,810 --> 01:50:48,980 ولكن لأنها العودة شيء، والذي 2229 01:50:48,980 --> 01:50:53,690 هي الكلمة باللون الأرجواني قمنا لم يسبق له مثيل، وأنا، على الخط 11، 2230 01:50:53,690 --> 01:50:55,410 لا يمكن أن أقول الفراغ هذه المرة. 2231 01:50:55,410 --> 01:51:01,320 >> الفراغ، في المثال رأينا فقط بدلا من اسم المطبوعة، يعني فقط، 2232 01:51:01,320 --> 01:51:02,190 نفعل شيئا. 2233 01:51:02,190 --> 01:51:04,170 ولكن لا يد لي شيئا في المقابل. 2234 01:51:04,170 --> 01:51:06,790 في هذه الحالة، وأنا لا أريد للعودة ن ن مرات، 2235 01:51:06,790 --> 01:51:08,460 أو أيا كان ذلك، هذا العدد. 2236 01:51:08,460 --> 01:51:12,460 >> لذلك لا أستطيع أن أقول، مهلا، الكمبيوتر، أعود شيء، الفراغ. 2237 01:51:12,460 --> 01:51:16,166 انها سوف تعود، بحكم طبيعتها، وعدد صحيح. 2238 01:51:16,166 --> 01:51:17,790 وذلك أن كل ما يحدث هنا. 2239 01:51:17,790 --> 01:51:20,070 >> مدخل إلى مربعة سيكون عدد صحيح. 2240 01:51:20,070 --> 01:51:24,760 وحتى نتمكن من استخدامها، فقد ل يكون له اسم، N. انه ذاهب لإخراج 2241 01:51:24,760 --> 01:51:26,240 عدد صحيح لا تحتاج إلى اسم. 2242 01:51:26,240 --> 01:51:29,590 يمكننا أن نترك لالرئيسي، أو أيا كان باستخدام لي أن نتذكر هذه القيمة إذا كنا 2243 01:51:29,590 --> 01:51:31,120 تريد مع المتغير الخاص بها. 2244 01:51:31,120 --> 01:51:33,230 >> ومرة أخرى، الجديد الوحيد الكلمة هنا هو العائد. 2245 01:51:33,230 --> 01:51:34,480 وأنا مجرد القيام ببعض الرياضيات. 2246 01:51:34,480 --> 01:51:41,825 إذا أردت حقا أن يكون لا لزوم لها، أستطيع أن أقول المنتج كثافة يحصل ن ن مرات. 2247 01:51:41,825 --> 01:51:44,170 >> وبعد ذلك يمكن أن نقول، عودة المنتج. 2248 01:51:44,170 --> 01:51:47,360 ولكن، مرة أخرى، إلى وجهة نظري في وقت سابق من هذه مجرد عدم design-- جيدة 2249 01:51:47,360 --> 01:51:50,060 مثل، لماذا إدخال اسم، رمز، مثل المنتج، 2250 01:51:50,060 --> 01:51:51,570 فقط للعودة على الفور؟ 2251 01:51:51,570 --> 01:51:53,670 انها قليلا أكثر نظافة، تشديد قليلا، لذلك 2252 01:51:53,670 --> 01:51:59,380 في الكلام، فقط أن أقول مرة عودة ن ن، والتخلص من هذا الخط تماما. 2253 01:51:59,380 --> 01:52:02,860 >> وانها مجرد أقل كود للقراءة، فرصة أقل للخطأ. 2254 01:52:02,860 --> 01:52:05,180 ودعونا نرى ما اذا كان هذا في الواقع يعمل الآن. 2255 01:52:05,180 --> 01:52:09,380 الآن، وانا ذاهب للذهاب قدما وجعل العودة. 2256 01:52:09,380 --> 01:52:11,460 >> اه أوه، إعلان ضمني من وظيفة. 2257 01:52:11,460 --> 01:52:14,080 أنا جعلت هذا الخطأ من قبل، ليست صفقة كبيرة. 2258 01:52:14,080 --> 01:52:18,950 واسمحوا لي أن اكتب، أو تسليط الضوء على نسخ، بالضبط نفس وظيفة النموذج، 2259 01:52:18,950 --> 01:52:21,342 أو التوقيع، وظيفة هنا. 2260 01:52:21,342 --> 01:52:22,800 أو أنا يمكن أن تتحرك وظيفة كاملة. 2261 01:52:22,800 --> 01:52:23,841 >> ولكن هذا كسول قليلا. 2262 01:52:23,841 --> 01:52:24,870 لذلك نحن لن نفعل ذلك. 2263 01:52:24,870 --> 01:52:27,960 والآن، اسمحوا لي أن عودة مرة أخرى، دوت عودة مائلة. 2264 01:52:27,960 --> 01:52:32,790 >> س و2. س التربيعية 4. س و3. س التربيعية 9. 2265 01:52:32,790 --> 01:52:35,300 ويبدو أن وظيفة الآن أن العمل. 2266 01:52:35,300 --> 01:52:36,550 إذن ما هو الفرق هنا؟ 2267 01:52:36,550 --> 01:52:42,520 لدي وظيفة وهذا يسمى مربع، في هذه الحالة، التي وضعت في المدخلات. 2268 01:52:42,520 --> 01:52:43,830 وأعود يبلغ حجم انتاجها. 2269 01:52:43,830 --> 01:52:46,210 وحتى الآن، في وقت سابق، إن أنا فتح مثال آخر 2270 01:52:46,210 --> 01:52:51,640 في وقت سابق من، التي ودعا prototype.c، 2271 01:52:51,640 --> 01:52:54,770 كان لي اسم المطبوعة، التي عاد الفراغ، إذا جاز التعبير، 2272 01:52:54,770 --> 01:52:58,730 أو أنه عاد شيء، و كان مجرد أثر جانبي. 2273 01:52:58,730 --> 01:53:00,230 >> لذلك ما الذي يحدث هنا؟ 2274 01:53:00,230 --> 01:53:03,520 حسنا، والنظر في وظيفة الحصول على سلسلة لمجرد لحظة. 2275 01:53:03,520 --> 01:53:06,570 لقد تم استخدام وظيفة الحصول على سلسلة بالطريقة التالية. 2276 01:53:06,570 --> 01:53:10,464 >> لقد كان لدينا وظيفة الحصول على سلسلة، مثل تشمل CS50.h، 2277 01:53:10,464 --> 01:53:16,624 تشمل معيار IO.h، الباحث، الرئيسي، الفراغ. 2278 01:53:16,624 --> 01:53:18,790 ثم في كل مرة لقد دعا سلسلة الحصول حتى الآن، 2279 01:53:18,790 --> 01:53:23,260 قلت شيء من هذا القبيل، سلسلة الصورة يحصل على سلسلة، لأن الحصول على string-- 2280 01:53:23,260 --> 01:53:27,880 دعونا ندعو هذه السلسلة الحصول get.c-- نفسه بإرجاع سلسلة أستطيع أن ثم 2281 01:53:27,880 --> 01:53:32,050 استخدام، ويقول: مرحبا، فاصلة، في المئة الصورة، مائل ن، ق. 2282 01:53:32,050 --> 01:53:35,660 >> لذلك هذا هو نفس المثال، حقا، أن كان لدينا وقت سابق. 2283 01:53:35,660 --> 01:53:37,920 حتى الحصول على سلسلة بإرجاع قيمة. 2284 01:53:37,920 --> 01:53:41,260 ولكن قبل لحظة، سلسلة الطباعة لا ترجع قيمة. 2285 01:53:41,260 --> 01:53:42,721 انها ببساطة على الآثار الجانبية. 2286 01:53:42,721 --> 01:53:44,220 لذلك هذا هو الفرق الأساسي. 2287 01:53:44,220 --> 01:53:46,710 لقد رأينا مختلفة أنواع من الوظائف الآن، 2288 01:53:46,710 --> 01:53:49,490 وقد عاد بعض منها القيم، وبعضها لا. 2289 01:53:49,490 --> 01:53:51,890 لذلك ربما انها سلسلة، أو الباحث، أو تعويم. 2290 01:53:51,890 --> 01:53:53,480 أو ربما انها مجرد باطلا. 2291 01:53:53,480 --> 01:53:55,710 >> والفرق هو أن هذه الوظائف التي 2292 01:53:55,710 --> 01:53:59,940 الحصول على البيانات وإرجاع قيمة هي في الواقع جلب شيء يعود الى طاولة المفاوضات، 2293 01:53:59,940 --> 01:54:01,110 إذا جاز التعبير. 2294 01:54:01,110 --> 01:54:03,710 لذلك دعونا نمضي قدما و ننظر في مجموعة واحدة أخيرة 2295 01:54:03,710 --> 01:54:09,129 من الأمثلة التي تعطي الشعور، الآن، من كيف يمكننا، في الواقع، مجردة أفضل، 2296 01:54:09,129 --> 01:54:11,670 وأفضل، وأفضل، أو أكثر، وأكثر من ذلك، وأكثر من ذلك، من أجل 2297 01:54:11,670 --> 01:54:13,810 في الكتابة، في نهاية المطاف، رمز أفضل. 2298 01:54:13,810 --> 01:54:16,860 دعونا نمضي قدما، وبروح من الصفر، القيام بما يلي. 2299 01:54:16,860 --> 01:54:21,700 >> اسمحوا لي أن نمضي قدما وتشمل CS50.h وIO.h. القياسية 2300 01:54:21,700 --> 01:54:24,010 اسمحوا لي أن المضي قدما وإعطاء نفسي كثافة العمليات، الرئيسي، باطل. 2301 01:54:24,010 --> 01:54:27,380 واسمحوا لي أن المضي قدما، ونسمي هذا cough.c. 2302 01:54:27,380 --> 01:54:35,510 >> واسمحوا لي أن المضي قدما وفقط مثل خدش، طباعة السعال / ن. 2303 01:54:35,510 --> 01:54:37,170 وأريد أن أفعل ذلك ثلاث مرات. 2304 01:54:37,170 --> 01:54:39,670 لذلك أنا، بالطبع، مجرد الذهاب لنسخ ولصق ثلاث مرات. 2305 01:54:39,670 --> 01:54:46,440 أنا الآن ذاهب إلى جعل السعال السعال مائلة نقطة. 2306 01:54:46,440 --> 01:54:50,120 دعونا نعطي نفسي مساحة أكبر قليلا هنا، أدخل، والسعال، والسعال، والسعال. 2307 01:54:50,120 --> 01:54:53,970 >> هناك، بالطبع، بالفعل فرصة للتحسين. 2308 01:54:53,970 --> 01:54:55,679 لقد نسخ ولصق عدة مرات اليوم. 2309 01:54:55,679 --> 01:54:58,261 لكن ذلك كان فقط لذلك لم أكن لديك لكتابة العديد من الشخصيات. 2310 01:54:58,261 --> 01:55:00,250 ما زلت تغير ما تلك الأسطر من التعليمات البرمجية هي. 2311 01:55:00,250 --> 01:55:04,240 >> هذه الخطوط الثلاثة متطابقة، الذي يشعر كسول، بل هو، 2312 01:55:04,240 --> 01:55:07,110 وربما لا يكون النهج الصحيح. 2313 01:55:07,110 --> 01:55:11,029 حتى مع ما المكون يمكن أن نحسن هذا الرمز؟ 2314 01:55:11,029 --> 01:55:12,570 ليس لدينا لنسخ ولصق رمز. 2315 01:55:12,570 --> 01:55:15,070 >> و، في الواقع، في أي وقت تشعر نفسك نسخ ولصق، 2316 01:55:15,070 --> 01:55:17,700 وحتى لا تغيير الرمز، الاحتمالات هي أن هناك طريقة أفضل. 2317 01:55:17,700 --> 01:55:19,470 وبالفعل، هناك. 2318 01:55:19,470 --> 01:55:22,510 اسمحوا لي أن نمضي قدما ونفعل لحلقة، على الرغم من بناء الجملة قد لا 2319 01:55:22,510 --> 01:55:24,570 تأتي بشكل طبيعي حتى الان. 2320 01:55:24,570 --> 01:55:29,494 >> هل هذا ثلاث مرات، وذلك ببساطة عن طريق القيام بما following-- 2321 01:55:29,494 --> 01:55:31,160 وأنا أعلم هذا من الناحية العملية. 2322 01:55:31,160 --> 01:55:32,810 ولكن لدينا عدد من الأمثلة الآن. 2323 01:55:32,810 --> 01:55:34,950 وسترى على الانترنت المزيد من الإشارات لا يزال. 2324 01:55:34,950 --> 01:55:37,790 >> هذا هو بناء الجملة في سطر 6، أن مثل الكثير من خدش أن يكرر 2325 01:55:37,790 --> 01:55:40,090 كتلة، كرر ثلاث مرات التالية. 2326 01:55:40,090 --> 01:55:41,340 انها قليلا السحرية في الوقت الراهن. 2327 01:55:41,340 --> 01:55:43,050 ولكن هذا سوف تحصل على المزيد، وأكثر دراية. 2328 01:55:43,050 --> 01:55:45,050 >> وانها سوف أكرر خط الثمانية ثلاث مرات، 2329 01:55:45,050 --> 01:55:52,390 بحيث إذا أنا أعيد تجميع جعل السعال، نقطة خفض السعال والسعال والسعال والسعال. 2330 01:55:52,390 --> 01:55:54,030 أنه لا يزال يعمل بنفس الطريقة. 2331 01:55:54,030 --> 01:55:55,550 ذلك أن كل شيء على ما يرام وجيدة. 2332 01:55:55,550 --> 01:55:58,200 ولكن هذا ليس المستخرجة جدا. 2333 01:55:58,200 --> 01:55:59,371 >> انها صحيحة تماما. 2334 01:55:59,371 --> 01:56:01,370 ولكن بدا الامر وكأننا هناك قد تكون هذه فرصة، 2335 01:56:01,370 --> 01:56:03,750 كما هو الحال في عالم الصفر، إلى نوع من البداية 2336 01:56:03,750 --> 01:56:07,530 لإضافة بعض دلالات هنا بحيث أنا لا فقط بعض لحلقة، 2337 01:56:07,530 --> 01:56:09,867 وظيفة أن يقول السعال، أو لا السعال. 2338 01:56:09,867 --> 01:56:10,450 أتعلم؟ 2339 01:56:10,450 --> 01:56:12,620 اسمحوا لي أن أحاول أن أكون برودة قليلا من ذلك، 2340 01:56:12,620 --> 01:56:16,090 وفعلا كتابة دالة التي لديه بعض الآثار الجانبية، الذي يطلق عليه السعال. 2341 01:56:16,090 --> 01:56:20,830 >> ويستغرق أي إدخال، و إرجاع أية قيمة كإخراج. 2342 01:56:20,830 --> 01:56:22,680 لكنك تعلم ماذا يفعل؟ 2343 01:56:22,680 --> 01:56:29,370 وهو يفعل this-- printf، الإقتباس، السعال. 2344 01:56:29,370 --> 01:56:32,380 >> والآن هنا، وانا ذاهب المضي قدما وكثافة العمليات، 2345 01:56:32,380 --> 01:56:36,070 ط يحصل على الصفر، وأنا أقل من 3، وأنا زائد زائد. 2346 01:56:36,070 --> 01:56:39,770 انا ذاهب الى عدم القيام printf، الذي هو يمكن القول إن تطبيق مستوى منخفض 2347 01:56:39,770 --> 01:56:40,270 التفاصيل. 2348 01:56:40,270 --> 01:56:41,353 لا يهمني كيفية السعال. 2349 01:56:41,353 --> 01:56:43,240 أريد فقط أن استخدام وظيفة السعال. 2350 01:56:43,240 --> 01:56:44,840 وأنا ذاهب لمجرد استدعاء السعال. 2351 01:56:44,840 --> 01:56:46,204 >> الآن، لاحظ الانقسام. 2352 01:56:46,204 --> 01:56:49,370 عند استدعاء وظيفة، إذا كنت لا تريد أن تعطيه المدخلات، ودفع غرامة تماما. 2353 01:56:49,370 --> 01:56:51,780 لا مجرد فتح قوسين، على مقربة القوسين، والانتهاء من ذلك. 2354 01:56:51,780 --> 01:56:56,271 >> عند تعريف وظيفة، أو إعلان نموذج وظيفة، و 2355 01:56:56,271 --> 01:56:58,770 إذا كنت تعرف مسبقا انها ليست ذاهب الى اتخاذ أي حجج، 2356 01:56:58,770 --> 01:57:01,170 يقول الفراغ في تلك قوسين هناك. 2357 01:57:01,170 --> 01:57:05,660 وهذا يجعل من المؤكد أن لك لن تسيء استخدام بطريق الخطأ. 2358 01:57:05,660 --> 01:57:07,020 اسمحوا لي أن المضي قدما وجعل السعال. 2359 01:57:07,020 --> 01:57:08,540 وبطبيعة الحال، لقد ارتكبت خطأ. 2360 01:57:08,540 --> 01:57:10,410 >> اللعنة، هناك أن إعلان ضمني. 2361 01:57:10,410 --> 01:57:11,325 ولكن هذا شيء طيب. 2362 01:57:11,325 --> 01:57:12,590 انها حل سهل. 2363 01:57:12,590 --> 01:57:18,240 أنا فقط بحاجة النموذج على مستوى اعلى في الملف الخاص بي من أنا فعلا استخدامه. 2364 01:57:18,240 --> 01:57:20,070 >> وحتى الآن اسمحوا لي أن السعال مرة أخرى، لطيفة. 2365 01:57:20,070 --> 01:57:20,790 الآن يعمل. 2366 01:57:20,790 --> 01:57:22,930 جعل السعال والسعال والسعال والسعال. 2367 01:57:22,930 --> 01:57:25,930 ولذلك قد تعتقدون أننا حقا ما يزيد قليلا على هندسة هذه المشكلة. 2368 01:57:25,930 --> 01:57:26,763 و، في الواقع، نحن. 2369 01:57:26,763 --> 01:57:28,870 هذه ليست جيدة مرشح برنامج 2370 01:57:28,870 --> 01:57:31,930 في هذه اللحظة ل إعادة بيع ديون، والقيام بما هو 2371 01:57:31,930 --> 01:57:35,645 دعا التحلل الهرمي، حيث كنت تأخذ بعض التعليمات البرمجية، ومن ثم 2372 01:57:35,645 --> 01:57:38,790 أنت نوع من الأشياء عامل خارج، وذلك لصقه المزيد من دلالات لهم، 2373 01:57:38,790 --> 01:57:40,930 وإعادة استخدامها على المدى الطويل في نهاية المطاف. 2374 01:57:40,930 --> 01:57:43,490 ولكن هذا لبنة نحو برامج أكثر تطورا 2375 01:57:43,490 --> 01:57:45,600 التي سنبدأ الكتابة قبل وقت طويل من أن 2376 01:57:45,600 --> 01:57:50,090 يسمح لنا أن يكون المفردات التي لكتابة رمز أفضل. 2377 01:57:50,090 --> 01:57:52,920 و، في الواقع، دعونا نرى ما اذا كنا لا يمكن تعميم هذا أبعد من ذلك. 2378 01:57:52,920 --> 01:57:57,984 >> يبدو قليلا عرجاء أنني، الرئيسية، داعي للقلق بشأن هذا الرتق للحلقة، 2379 01:57:57,984 --> 01:57:59,400 ويدعو السعال مرارا وتكرارا. 2380 01:57:59,400 --> 01:58:03,050 لماذا لا أستطيع أنا أقول السعال، يرجى السعال ثلاث مرات؟ 2381 01:58:03,050 --> 01:58:08,170 وبعبارة أخرى، لماذا لا يمكنني فقط إعطاء المدخلات إلى السعال والقيام بذلك؟ 2382 01:58:08,170 --> 01:58:11,270 >> لماذا لا يمكنني أن أقول، في السعال الرئيسي ثلاث مرات. 2383 01:58:11,270 --> 01:58:13,150 والآن، وهذا هو نوع من السحرية. 2384 01:58:13,150 --> 01:58:14,540 انها متكررة جدا هنا. 2385 01:58:14,540 --> 01:58:15,940 وانها، في الواقع، خطوة صغيرة. 2386 01:58:15,940 --> 01:58:19,250 >> ولكن مجرد القدرة على يقول على خط ثمانية السعال ثلاث مرات، 2387 01:58:19,250 --> 01:58:20,730 انها مجرد أكثر من ذلك بكثير للقراءة. 2388 01:58:20,730 --> 01:58:24,210 وبالاضافة الى ذلك، أنا لم يكن لديك لمعرفة أو يهمني كيف يتم تنفيذ السعال. 2389 01:58:24,210 --> 01:58:26,460 و، في الواقع، في وقت لاحق المدى والمشاريع النهائية، 2390 01:58:26,460 --> 01:58:29,150 إذا كنت معالجة مشروع مع زميل أو اثنين من زملاء الدراسة، 2391 01:58:29,150 --> 01:58:32,370 عليك أن تدرك أنك ذاهب ل لديك، أو تريد، تقسيم العمل. 2392 01:58:32,370 --> 01:58:34,650 >> وأنت تريد الذهاب الى اتخاذ قرار مقدما، الذي سيفعل ما، 2393 01:58:34,650 --> 01:58:35,483 والذي قطع؟ 2394 01:58:35,483 --> 01:58:37,520 ولن يكون ذلك جميلا إذا كنت، على سبيل المثال، 2395 01:58:37,520 --> 01:58:40,100 تولي الكتابة الرئيسي، القيام به. 2396 01:58:40,100 --> 01:58:43,470 والحجرة الخاصة بك، أو لديك شريك أكثر عموما، 2397 01:58:43,470 --> 01:58:45,230 يرعى تنفيذ السعال. 2398 01:58:45,230 --> 01:58:49,540 >> وهذا التقسيم، وهذه جدران من التجريد، 2399 01:58:49,540 --> 01:58:52,310 أو طبقات من التجريد إذا صح التعبير، هي عظمى قوية، 2400 01:58:52,310 --> 01:58:55,480 لاسيما لأكبر، المزيد من البرامج والأنظمة المعقدة، 2401 01:58:55,480 --> 01:59:00,070 انها تسمح للشخص متعددة لبناء الأشياء معا، وفي نهاية المطاف 2402 01:59:00,070 --> 01:59:02,680 غرزة عملهم معا في هذا الطريق. 2403 01:59:02,680 --> 01:59:05,332 ولكن، بطبيعة الحال، نحن تحتاج إلى الآن إصلاح السعال. 2404 01:59:05,332 --> 01:59:07,290 علينا أن نقول السعال هذا، مهلا، هل تعرف لماذا؟ 2405 01:59:07,290 --> 01:59:11,230 كنت بحاجة الى الذهاب الى اتخاذ input-- حتى لا باطل، ولكن كثافة والآن. 2406 01:59:11,230 --> 01:59:15,170 دعونا نمضي قدما ووضعها في السعال كثافة العمليات. ط يحصل على صفر. 2407 01:59:15,170 --> 01:59:16,890 >> أنا أقل من عدد المرات. 2408 01:59:16,890 --> 01:59:18,550 قلت الثلاثة قبل. 2409 01:59:18,550 --> 01:59:20,420 ولكن هذا ليس ما أريد. 2410 01:59:20,420 --> 01:59:25,520 أريد السعال لتعميمها على دعم أي عدد من التكرارات. 2411 01:59:25,520 --> 01:59:28,800 >> لذلك، في الواقع، انها ن الذي أريد، أيا كان المستخدم يقول لي. 2412 01:59:28,800 --> 01:59:31,620 الآن، أستطيع أن أمضي قدما ويقول السعال الطباعة. 2413 01:59:31,620 --> 01:59:34,750 وبغض النظر عن عدد يمر المستخدم في، 2414 01:59:34,750 --> 01:59:36,890 وسوف تكرار ذلك مرات عديدة. 2415 01:59:36,890 --> 01:59:39,160 >> ذلك في نهاية اليوم، البرنامج هو متطابقة. 2416 01:59:39,160 --> 01:59:42,820 ولكن لاحظ كل هذه الاشياء يمكن أن يكون حتى في ملف آخر. 2417 01:59:42,820 --> 01:59:45,620 في الواقع، أنا لا أعرف في ذلك لحظة كيف printf ينفذ. 2418 01:59:45,620 --> 01:59:47,980 >> أنا لا أعرف في هذه اللحظة كيفية الوصول سلسلة، أو الحصول على كثافة العمليات، أو الحصول على تعويم 2419 01:59:47,980 --> 01:59:48,646 تنفذ. 2420 01:59:48,646 --> 01:59:50,930 وأنا لا أريد أن نراهم على الشاشة. 2421 01:59:50,930 --> 01:59:55,320 كما هو، وأنا بدأت في التركيز على برنامجي، وليس تلك الوظائف. 2422 01:59:55,320 --> 01:59:59,070 >> وهكذا، في الواقع، في أقرب وقت كما كنت بدء العوملة كود مثل هذا الخروج، 2423 01:59:59,070 --> 02:00:01,397 بل ويمكن أن ننتقل السعال إلى ملف منفصل؟ 2424 02:00:01,397 --> 02:00:02,730 شخص آخر يمكن تنفيذه. 2425 02:00:02,730 --> 02:00:06,810 وكنت وبرنامجك تصبح جميلة جدا، وجدا للقراءة، 2426 02:00:06,810 --> 02:00:10,830 يمكن القول، حقا أربعة برنامج سطر هناك حق. 2427 02:00:10,830 --> 02:00:13,510 >> لذلك دعونا نمضي قدما الآن وجعل تغيير واحد أكثر من ذلك. 2428 02:00:13,510 --> 02:00:16,180 لاحظ أن بلدي النموذج يجب أن يتغير حتى أعلى. 2429 02:00:16,180 --> 02:00:18,390 لذلك اسمحوا لي أن إصلاح أن ذلك أنا لا تحصل على صاح في. 2430 02:00:18,390 --> 02:00:22,580 >> جعل السعال، واسمحوا لي أن تشغيل السعال مرة واحدة أكثر من ذلك، لا تزال تفعل الشيء نفسه. 2431 02:00:22,580 --> 02:00:26,010 ولكن الآن، لاحظ لدينا المكون لصيغة نهائية واحدة. 2432 02:00:26,010 --> 02:00:26,940 أتعلم؟ 2433 02:00:26,940 --> 02:00:29,040 أنا لا أريد أن السعال فقط، بالضرورة. 2434 02:00:29,040 --> 02:00:30,802 أريد أن يكون شيء أكثر عمومية. 2435 02:00:30,802 --> 02:00:31,510 لذلك أنت تعرف لماذا؟ 2436 02:00:31,510 --> 02:00:32,450 أريد أن أفعل هذا. 2437 02:00:32,450 --> 02:00:37,140 أريد أن يكون، مثل الكثير من الصفر لا، كتلة مثلا، ولكن ليس 2438 02:00:37,140 --> 02:00:38,680 أقول شيئا بعض عدة مرات. 2439 02:00:38,680 --> 02:00:41,510 أريد أن أقول سلسلة محددة جدا. 2440 02:00:41,510 --> 02:00:43,850 وبالتالي، وأنا لا نريد أن نقول فقط السعال. 2441 02:00:43,850 --> 02:00:47,660 أريد أن أقول أيا كان يتم تمرير سلسلة في. 2442 02:00:47,660 --> 02:00:49,960 >> لذلك تلاحظ، لقد المعمم هذا بحيث الآن 2443 02:00:49,960 --> 02:00:53,110 مثلا يشعر وكأنه اسم جيد لهذا، مثل خدش، 2444 02:00:53,110 --> 02:00:55,530 يأخذ حجتين، على عكس خدش. 2445 02:00:55,530 --> 02:00:56,570 هو واحد من سلسلة. 2446 02:00:56,570 --> 02:00:57,300 واحد هو عدد صحيح. 2447 02:00:57,300 --> 02:00:58,130 >> وأنا لا يمكن التبديل بينها. 2448 02:00:58,130 --> 02:01:00,713 أنا مجرد نوع من مثل فكرة يقول السلسلة أولا، وبعد ذلك 2449 02:01:00,713 --> 02:01:01,940 كم مرة في وقت لاحق. 2450 02:01:01,940 --> 02:01:03,970 الفراغ يعني أنه لا يزال لا يعود أي شيء. 2451 02:01:03,970 --> 02:01:06,428 هذه ليست سوى الجانب البصري الآثار، مثل مع [؟ الأردن؟] 2452 02:01:06,428 --> 02:01:08,240 تأثير الجانب اللفظي من الصراخ. 2453 02:01:08,240 --> 02:01:12,630 فإنه لا يزال الأوقات شيء ن، 0 حتى، ولكن لا يساوي ن. 2454 02:01:12,630 --> 02:01:14,540 وهذا يعني ن مجموع مرات. 2455 02:01:14,540 --> 02:01:16,540 وبعد ذلك فقط طباعة أيا كان ذلك السلسلة. 2456 02:01:16,540 --> 02:01:19,060 حتى لقد المعمم حقا هذا سطر من التعليمات البرمجية. 2457 02:01:19,060 --> 02:01:22,460 وحتى الآن، كيف يمكنني تنفيذ وظيفة السعال؟ 2458 02:01:22,460 --> 02:01:25,520 >> يمكنني القيام به السعال باطلا. 2459 02:01:25,520 --> 02:01:28,501 وأنا لا تزال تأخذ في كيفية مرات كثيرة كنت تريد أن السعال. 2460 02:01:28,501 --> 02:01:29,250 ولكن هل تعرف لماذا؟ 2461 02:01:29,250 --> 02:01:31,240 أستطيع الآن أن أقول البونت. 2462 02:01:31,240 --> 02:01:36,540 >> يمكن أن أدعو القول مع كلمة السعال، ويمر في ن. 2463 02:01:36,540 --> 02:01:40,410 وإذا أريد لتنفيذ أيضا، للمتعة فقط، وهي وظيفة العطس، 2464 02:01:40,410 --> 02:01:42,290 أستطيع أن يعطس بعض عدة مرات. 2465 02:01:42,290 --> 02:01:47,300 وأنا يمكن أن تبقي إعادة استخدام ن، ل تلاحظ أن م في هذا السياق أو نطاق 2466 02:01:47,300 --> 02:01:49,470 موجود فقط في هذه الوظيفة. 2467 02:01:49,470 --> 02:01:52,767 >> ون في هذا السياق فقط موجود داخل هذه الوظيفة هنا. 2468 02:01:52,767 --> 02:01:54,600 ولذا فإننا سوف أعود ل هذه القضايا النطاق. 2469 02:01:54,600 --> 02:02:01,160 وهنا، أنا فقط أريد أن أقول، achoo، ثم ن مرات، منقوطة. 2470 02:02:01,160 --> 02:02:04,340 >> والآن، أنا فقط بحاجة إلى اقتراض هذه وظيفة التوقيعات هنا. 2471 02:02:04,340 --> 02:02:06,290 حتى السعال هو الصحيح. 2472 02:02:06,290 --> 02:02:10,090 العطس باطل هو الصحيح الآن. 2473 02:02:10,090 --> 02:02:12,390 >> وأنا لا تزال بحاجة نقول فقط. 2474 02:02:12,390 --> 02:02:18,990 لذلك أنا ذاهب الى القول، مثلا سلسلة ق، الباحث ن، منقوطة. 2475 02:02:18,990 --> 02:02:22,010 حتى لقد الإفراط في هندستها هيك من هذا البرنامج. 2476 02:02:22,010 --> 02:02:23,760 >> وهذا لا يعني بالضرورة وهذا هو 2477 02:02:23,760 --> 02:02:26,343 ما يجب عليك فعله عند الكتابة حتى أبسط البرامج. 2478 02:02:26,343 --> 02:02:29,280 يأخذ شيئا تعلقت به من الواضح بسيطة حقا، حقا قصيرة، 2479 02:02:29,280 --> 02:02:31,800 وإعادة تنفيذه باستخدام الطريقة الكثير من التعليمات البرمجية. 2480 02:02:31,800 --> 02:02:34,560 ولكن عليك أن ترى في الواقع، وفي الوقت ننظر إلى الوراء في هذه الأمثلة، 2481 02:02:34,560 --> 02:02:38,610 ويدرك، أوه، تلك هي الخطوات أخذنا إلى التعميم في الواقع، 2482 02:02:38,610 --> 02:02:40,797 إلى عامل شيء، حتى في نهاية اليوم 2483 02:02:40,797 --> 02:02:42,380 قانون بلدي هو في الواقع معقول جدا. 2484 02:02:42,380 --> 02:02:45,960 لأنه إذا أريد أن السعال ثلاثة مرات ثم يعطس ثلاث مرات، 2485 02:02:45,960 --> 02:02:50,420 أنا ببساطة الذهاب الى إعادة تشغيل هذه، برنامج يجعل السعال، وتشغيل السعال. 2486 02:02:50,420 --> 02:02:53,620 ولدي ثلاثة السعال وثلاثة العطس. 2487 02:02:53,620 --> 02:02:55,990 >> وهكذا وهذا هو الأساسي نموذج، إذا صح التعبير، 2488 02:02:55,990 --> 02:03:00,110 لكيف يمكن أن تذهب نحو تنفيذ في الواقع برنامج. 2489 02:03:00,110 --> 02:03:03,220 ولكن دعونا نرى الآن ما هو عليه كنا نفعل كل هذا الوقت، 2490 02:03:03,220 --> 02:03:06,940 وما تناقلته بعض والقطع النهائي وراء هذا الأمر بسيط. 2491 02:03:06,940 --> 02:03:09,620 في نهاية اليوم، لدينا تم استخدام رنة كما مترجم لدينا. 2492 02:03:09,620 --> 02:03:11,494 لقد تم كتابة المصدر الرمز، وتحويلها 2493 02:03:11,494 --> 02:03:12,820 عبر رنة إلى رمز الجهاز. 2494 02:03:12,820 --> 02:03:15,540 >> ولقد تم استخدام جعل فقط لتسهيل ضربات المفاتيح لدينا لذلك 2495 02:03:15,540 --> 02:03:20,740 أننا لا يجب أن تذكر تلك الطلاسم من رنة نفسها. 2496 02:03:20,740 --> 02:03:22,640 ولكن ما هو جعل الواقع تفعل؟ 2497 02:03:22,640 --> 02:03:24,750 وبدوره، ما هو رنة تفعل في الواقع؟ 2498 02:03:24,750 --> 02:03:28,790 >> كما تبين، على الرغم من أننا قد مبسطة مناقشة اليوم قائلا: 2499 02:03:28,790 --> 02:03:33,090 كنت تأخذ شفرة المصدر، وتمر عليه كما مدخل إلى مترجم، والتي تعطيك 2500 02:03:33,090 --> 02:03:35,750 الناتج من الجهاز الرمز، يتحول الى هناك ل 2501 02:03:35,750 --> 02:03:37,420 بضع خطوات مختلفة داخل هناك. 2502 02:03:37,420 --> 02:03:41,940 وتجميع يحدث أن تكون مظلة مصطلح لمجموعة كاملة من الخطوات. 2503 02:03:41,940 --> 02:03:43,970 ولكن دعونا ندف فقط هذا بسرعة حقا. 2504 02:03:43,970 --> 02:03:48,070 >> وتبين أن كنا نقوم به المزيد من الأشياء في كل مرة أقوم بتشغيل البرنامج، 2505 02:03:48,070 --> 02:03:50,990 أو في كل مرة كنت ترجمة برنامج اليوم. 2506 02:03:50,990 --> 02:03:55,020 لذلك يشير تجهيزها ل this-- أي شيء في برنامج C، 2507 02:03:55,020 --> 02:03:58,720 كما سنرى مرة أخرى ومرة ​​أخرى، الذي يبدأ مع هذا الرمز التجزئة، 2508 02:03:58,720 --> 02:04:03,320 أو رمز الهاشتاج هنا، يعني انها التوجيه المعالج. 2509 02:04:03,320 --> 02:04:07,330 وهذا يعني، في هذه الحالة، مهلا كمبيوتر، تفعل شيئا مع هذا الملف 2510 02:04:07,330 --> 02:04:09,430 قبل كنت في الواقع ترجمة التعليمات البرمجية الخاصة بي. 2511 02:04:09,430 --> 02:04:15,220 >> في هذه الحالة، التجزئة وتشمل غير، في الأساس، وسيلة C في القول، 2512 02:04:15,220 --> 02:04:19,325 يا الكمبيوتر، ويذهب للحصول على محتويات من CS50.h ولصقها هنا. 2513 02:04:19,325 --> 02:04:22,170 يا الكمبيوتر، الذهاب الحصول على محتويات مستوى IO.h، 2514 02:04:22,170 --> 02:04:24,690 أينما الموجود على القرص الصلب، لصقه هنا. 2515 02:04:24,690 --> 02:04:27,390 حتى تلك الأمور لأول مرة خلال تجهيزها. 2516 02:04:27,390 --> 02:04:28,880 >> ورنة يفعل كل هذا بالنسبة لنا. 2517 02:04:28,880 --> 02:04:30,510 وحدث ذلك فانه حتى الرتق بسرعة، حتى أنك لا 2518 02:04:30,510 --> 02:04:32,000 رؤية أربعة أشياء متميزة يحدث. 2519 02:04:32,000 --> 02:04:34,100 ولكن هذا أول هذه الخطوة. 2520 02:04:34,100 --> 02:04:35,560 >> ما يحدث فعلا في المرة القادمة؟ 2521 02:04:35,560 --> 02:04:38,320 حسنا، المسؤول المقبل خطوة بتجميع. 2522 02:04:38,320 --> 02:04:40,385 واتضح أن تجميع برنامج 2523 02:04:40,385 --> 02:04:44,060 يعني من الناحية الفنية الانتقال من شفرة المصدر، والاشياء التي قمت 2524 02:04:44,060 --> 02:04:47,890 تم كتابة اليوم، إلى شيء دعا رمز التجميع، شيء 2525 02:04:47,890 --> 02:04:49,260 التي تبدو مختلفة قليلا. 2526 02:04:49,260 --> 02:04:51,050 >> و، في الواقع، يمكننا أن نرى هذا حقيقي بسرعة. 2527 02:04:51,050 --> 02:04:53,890 اسمحوا لي أن تذهب في الواقع إلى IDE بلدي. 2528 02:04:53,890 --> 02:04:58,050 اسمحوا لي أن نمضي قدما وhello.c المفتوحة، التي هو البرنامج الأول جدا التي تربطنا 2529 02:04:58,050 --> 02:04:59,120 بدأت اليوم. 2530 02:04:59,120 --> 02:05:04,130 واسمحوا لي أن المضي قدما وتشغيل رنة ل مختلف قليلا، رنة والصورة، وhello.c، 2531 02:05:04,130 --> 02:05:07,720 الذي يجري في الواقع ل تعطيني hello.s ملف آخر. 2532 02:05:07,720 --> 02:05:10,330 >> ونحن سوف ربما أبدا مرة أخرى نرى هذا النوع من التعليمات البرمجية. 2533 02:05:10,330 --> 02:05:13,030 إذا كنت تأخذ مستوى أقل الطبقة نظم مثل CS61، 2534 02:05:13,030 --> 02:05:14,920 سترون الكثير هذا النوع من التعليمات البرمجية. 2535 02:05:14,920 --> 02:05:17,020 ولكن هذا هو لغة التجميع. 2536 02:05:17,020 --> 02:05:22,050 هذا هو X86 لغة التجميع أن وحدة المعالجة المركزية التي الكامنة 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE يفهم الواقع. 2538 02:05:24,460 --> 02:05:27,060 >> وخفي كما هو الحال نظرة، بل هو شيء 2539 02:05:27,060 --> 02:05:29,180 الكمبيوتر يفهم بشكل جيد. 2540 02:05:29,180 --> 02:05:30,790 جنوب ف، هذا هو طرح. 2541 02:05:30,790 --> 02:05:31,660 هناك حركات. 2542 02:05:31,660 --> 02:05:35,730 >> هناك المتصل من وظائف هنا، س أورينج، حركة، الوظيفة، البوب، 2543 02:05:35,730 --> 02:05:36,430 عودة. 2544 02:05:36,430 --> 02:05:38,850 لذلك هناك بعض جدا تعليمات مستوى منخفض 2545 02:05:38,850 --> 02:05:41,280 أن وحدات المعالجة المركزية تدرك أن أشرت إليها سابقا. 2546 02:05:41,280 --> 02:05:43,100 هذا هو ما إنتل في الداخل. 2547 02:05:43,100 --> 02:05:45,030 >> وهناك أنماط من الأصفار وتلك التي 2548 02:05:45,030 --> 02:05:51,800 خريطة لهذه اللهجة arcanely، ولكن إلى حد ما اسمه جيدا، تعليمات، 2549 02:05:51,800 --> 02:05:52,780 إذا جاز التعبير. 2550 02:05:52,780 --> 02:05:54,780 هذا هو ما يحدث عندما يمكنك ترجمة التعليمات البرمجية. 2551 02:05:54,780 --> 02:05:58,560 تحصل التجمع لغة للخروج منه، والذي 2552 02:05:58,560 --> 02:06:04,680 يعني الخطوة الثالثة هي لتجميع أن رمز التجميع في نهاية المطاف، 2553 02:06:04,680 --> 02:06:09,080 آلة الأصفار code-- ومنها، وليس النص الذي رأيناه للتو قبل لحظة. 2554 02:06:09,080 --> 02:06:13,370 >> حتى ما قبل المعالجة لا أن يجد واستبدال، وبعض الأشياء الأخرى. 2555 02:06:13,370 --> 02:06:16,430 يأخذ تجميع المصدر رمز من C، وشفرة المصدر 2556 02:06:16,430 --> 02:06:18,980 أن كتبنا، في التجمع التعليمات البرمجية التي نحن يحملق فقط في. 2557 02:06:18,980 --> 02:06:22,170 تجميع أن يأخذ التجمع الرمز إلى أصفار ومنها 2558 02:06:22,170 --> 02:06:24,680 أن وحدة المعالجة المركزية سوف حقا فهم في نهاية المطاف. 2559 02:06:24,680 --> 02:06:27,630 وربط هو الخطوة الأخيرة ما يحدث لus-- مرة أخرى، 2560 02:06:27,630 --> 02:06:29,830 بسرعة لذلك نحن لا حتى notice-- الذي يقول: 2561 02:06:29,830 --> 02:06:32,460 يا الكمبيوتر، واتخاذ كل الأصفار وتلك التي 2562 02:06:32,460 --> 02:06:36,750 نتج عن ترجمة التعليمات البرمجية داود، وتتمثل المهمة الرئيسية له في هذه الحالة. 2563 02:06:36,750 --> 02:06:39,160 >> ومهلا الكمبيوتر، ويذهب للحصول على كل من الآحاد والأصفار و 2564 02:06:39,160 --> 02:06:42,180 أن كتب موظفي CS50 داخل المكتبة CS50. 2565 02:06:42,180 --> 02:06:43,440 مزيج من هم في مع ديفيد. 2566 02:06:43,440 --> 02:06:46,648 ومهلا الكمبيوتر، ويذهب للحصول على كل الأصفار ومنها أن شخصا آخر كتب سنوات 2567 02:06:46,648 --> 02:06:47,470 منذ لprintf. 2568 02:06:47,470 --> 02:06:49,880 وإضافة إلى تلك كل شيء، حتى نتمكن قمت 2569 02:06:49,880 --> 02:06:52,870 حصلت على الآحاد والأصفار و، و الأصفار الموظفين CS50 ومنها، 2570 02:06:52,870 --> 02:06:55,370 الأصفار printf ومنها، وأي شيء آخر نستخدمه. 2571 02:06:55,370 --> 02:07:00,410 >> انهم جميعا الحصول على جنبا إلى جنب معا في واحد برنامج يسمى، في هذه الحالة، مرحبا. 2572 02:07:00,410 --> 02:07:03,141 لذلك من الآن فصاعدا، ونحن سوف فقط استخدام كلمة تجميع. 2573 02:07:03,141 --> 02:07:06,390 ونحن سوف تتخذ لمنح أنه عندما نقول، ترجمة البرنامج الخاص بك، فهذا يعني، 2574 02:07:06,390 --> 02:07:08,849 يا تفعل أجهزة معالجة مسبقة، تجميع وربط. 2575 02:07:08,849 --> 02:07:11,890 ولكن هناك فعلا بعض الاشياء المثيرة يحدث هناك تحت غطاء محرك السيارة. 2576 02:07:11,890 --> 02:07:13,723 وخاصة إذا كنت الحصول على الغريب بعض الوقت، 2577 02:07:13,723 --> 02:07:15,900 يمكنك البدء بدس حول على هذا المستوى أقل. 2578 02:07:15,900 --> 02:07:19,660 ولكن في الوقت الراهن، ندرك أن بين الوجبات لهذا اليوم 2579 02:07:19,660 --> 02:07:23,420 هي ببساطة ل ابتداء من هذه العملية، 2580 02:07:23,420 --> 02:07:26,700 من الحصول على راحة مع شيء من هذا القبيل مرحبا العالم. 2581 02:07:26,700 --> 02:07:29,575 في الواقع، فإن معظم ما فعلناه اليوم بالتأكيد لن تغرق في بسرعة فائقة. 2582 02:07:29,575 --> 02:07:31,491 وسوف يستغرق بعض الوقت، وبعض الممارسات. 2583 02:07:31,491 --> 02:07:33,864 والاحتمالات، سوف فرز من تريد ضرب لوحة المفاتيح 2584 02:07:33,864 --> 02:07:34,780 أو يصيح في الشاشة. 2585 02:07:34,780 --> 02:07:35,880 وكل هذا موافق. 2586 02:07:35,880 --> 02:07:38,320 رغم ذلك، ربما ليس محاولة ل تفعل ذلك في المكتبة كثيرا. 2587 02:07:38,320 --> 02:07:40,820 >> وفي نهاية المطاف، عليك تكون قادرة على الرغم من أن تبدأ 2588 02:07:40,820 --> 02:07:44,580 رؤية الأنماط، سواء في قانون جيد أن كنت قد كتبت وفي الأخطاء 2589 02:07:44,580 --> 02:07:45,370 التي قمت بها. 2590 02:07:45,370 --> 02:07:48,965 ويشبه إلى حد كبير عملية تصبح TF أو CA هو مثل، 2591 02:07:48,965 --> 02:07:51,590 عليك أن تبدأ في الحصول على أفضل و أفضل لرؤية هذه الأنماط، 2592 02:07:51,590 --> 02:07:53,774 ومجرد حل بك المشاكل الخاصة في نهاية المطاف. 2593 02:07:53,774 --> 02:07:56,940 في غضون ذلك، سيكون هناك الكثير من منا لتقدم لك الدعم، وتحصل على 2594 02:07:56,940 --> 02:07:57,481 من خلال هذا. 2595 02:07:57,481 --> 02:07:59,450 وفي الكتابة المنبثقة لجميع المشاكل 2596 02:07:59,450 --> 02:08:01,366 وسوف يكون من خلال الاسترشاد جميع الأوامر 2597 02:08:01,366 --> 02:08:05,330 أن أعرف بالتأكيد من الكثير من الممارسة قبل الآن، 2598 02:08:05,330 --> 02:08:07,380 ولكن قد يكون جوا أكثر من رأسه حتى الآن. 2599 02:08:07,380 --> 02:08:08,580 وهذا شيء طيب تماما. 2600 02:08:08,580 --> 02:08:11,230 >> لكن، في نهاية المطاف، وأنت تسير لتبدأ في رؤية أنماط تظهر. 2601 02:08:11,230 --> 02:08:14,260 وحالما تحصل في الماضي كل من تفاصيل غبية، مثل الأقواس، 2602 02:08:14,260 --> 02:08:16,710 والأقواس المعقوفة، ومنقوطة، والاشياء، وبصراحة، 2603 02:08:16,710 --> 02:08:19,360 هذا ليس على الإطلاق اهتمام فكريا. 2604 02:08:19,360 --> 02:08:22,690 وليس الهدف من اتخاذ أي الطبقة التمهيدية. 2605 02:08:22,690 --> 02:08:24,410 إنها الأفكار التي تجري ليهم. 2606 02:08:24,410 --> 02:08:26,659 >> انها الحلقات، و الظروف، وظائف، 2607 02:08:26,659 --> 02:08:30,552 وأكثر من ذلك بقوة التجريد، والعوملة من التعليمات البرمجية، 2608 02:08:30,552 --> 02:08:33,510 والتصميم الجيد، والخير أسلوب، وفي نهاية المطاف صحة 2609 02:08:33,510 --> 02:08:37,330 من التعليمات البرمجية الخاصة بك، وهذا في نهاية المطاف الذهاب إلى المسألة أكثر. 2610 02:08:37,330 --> 02:08:40,925 حتى الأسبوع المقبل، وسوف نأخذ هذه الأفكار التي رأيناها لأول مرة في سكراتش 2611 02:08:40,925 --> 02:08:42,800 وترجمت الآن لجيم وسنبدأ 2612 02:08:42,800 --> 02:08:45,740 لإدخال أول المجالات العالم الحقيقي بالطبع ل. 2613 02:08:45,740 --> 02:08:50,140 >> سنركز على عالم الأمن، والتشفير بشكل أكثر تحديدا، 2614 02:08:50,140 --> 02:08:51,980 فن الهرولة المعلومات. 2615 02:08:51,980 --> 02:08:54,000 وبين أول مشاكل أنت نفسك 2616 02:08:54,000 --> 02:08:56,840 سوف تحصل على كتابة بعد اللعب مع بعض من بناء الجملة 2617 02:08:56,840 --> 02:08:59,880 وحل بعض منطقية مشاكل، في نهاية المطاف قبل فترة طويلة، 2618 02:08:59,880 --> 02:09:03,960 ويتبارى في الواقع، أو تشفير، وفك تشفير في نهاية المطاف من المعلومات. 2619 02:09:03,960 --> 02:09:06,470 وكل ما قمنا به اليوم، سوف منخفضة نسبيا 2620 02:09:06,470 --> 02:09:09,190 مستوى، هو مجرد الذهاب للسماح لل لنا أن تأخذ واحدة، واحدة، 2621 02:09:09,190 --> 02:09:13,550 وخطوة أخرى نحو أعلى كتابة رمز الأكثر إثارة للاهتمام حتى الان. 2622 02:09:13,550 --> 02:09:15,050 >> أكثر من ذلك على ان الاسبوع المقبل. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [تشغيل الفيديو] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> وماذا يمكن أن تخبرني عن آخر مرة رأيته؟ 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 وماذا يمكنني أن أقول، حقا؟ 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 أعني، كان مثل أي دولة أخرى بروفة ما قبل الإنتاج، 2631 02:09:35,340 --> 02:09:40,510 إلا أن هناك شيء قاله في النهاية أن تمسك معي. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> كان، هذا CS50. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> -من هو قطع الجميع، وظيفة كبيرة في بروفة. 2636 02:09:52,190 --> 02:09:53,070 >> الغداء -من و؟ 2637 02:09:53,070 --> 02:09:54,986 >> -Yeah، أنت وأنا يمكن الاستيلاء على شطيرة في شيء. 2638 02:09:54,986 --> 02:09:58,380 واسمحوا لي أن استخلاص المعلومات مع ديفيد بسرعة حقا. 2639 02:09:58,380 --> 02:09:59,160 ديفيد؟ 2640 02:09:59,160 --> 02:10:01,260 ديفيد؟ 2641 02:10:01,260 --> 02:10:03,110 >> [نهاية قراءة]