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