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 یک کامپیوتر است تنها به طور معمول رفتن به استفاده از 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 و آن را فقط 1/10 است. 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، دانشمندان آماده برای راه اندازی یک بدون سرنشین موشک Ariane 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 >> البته حدود 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 >> -این قبل از ازدواج بود سفر از موشک Ariane 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 بانک مشکل در آریان بود که وجود دارد 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 >> بانک ناتوانی یک برنامه نرم افزار به قبول 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 ایجاد شده برای آن بود در موشک Ariane 5 استفاده می شود. 133 00:05:43,990 --> 00:05:49,750 >> بانک مشکل اساسی این بود که آریان 5 سریعتر بود، شتاب سریع تر است. 134 00:05:49,750 --> 00:05:53,000 و نرم افزار بود اختصاص دارد. 135 00:05:53,000 --> 00:05:56,330 >> بانک نابودی موشک یک فاجعه مالی بزرگ بود، 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 زمانی که Patriot، که قرار بود برای محافظت در برابر scuds ورودی، 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 >> بانک اندازه از رهگیر پاتریوت، خودی خود، در مورد، حدود 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 >> بانک موشک ها انجام شده، 4 در هر ظرف، 158 00:07:09,130 --> 00:07:12,080 و توسط یک نیمه تریلر منتقل می شود. 159 00:07:12,080 --> 00:07:19,100 >> -روز سیستم ضد موشکی پاتریوت حداقل 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 ارتش خواست به استفاده از آن را به شلیک کردن scuds، نه هواپیما. 164 00:07:32,745 --> 00:07:36,150 نیروهای عراقی بود خیلی از یک مشکل، 165 00:07:36,150 --> 00:07:39,110 اما ارتش در مورد scuds نگران بود. 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 scuds خود تقریبا غیر ممکن است به ضربه. 172 00:07:56,840 --> 00:08:01,020 >> چه اتفاقی افتاده است، که scuds در سال های آینده، ناپایدار بودند، 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 به موفقیت شود از بین بردن scuds، در ظهران، 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 بانک پاتریوت مستقر در پادگان 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 >> -After 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 >> بانک رادار بسیار باهوش بود. 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 >> سپس،، یک بار پاتریوت تصمیم می گیرد زمان کافی 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 اما در ابتدا، اجازه دهید انتقال به چند FYI است. 248 00:11:58,470 --> 00:12:01,575 بنابراین one-- این آخر هفته، وجود دارد خواهد بود بخش های فوق العاده، 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 آن را فقط یک تابع print عمومی است. 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 و کامپایلر می داند که زمانی که آن / N را می بیند، 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: [؟ COPAL. ؟] 360 00:16:14,155 --> 00:16:15,529 >> DAVID J مالان: و Copal در آمده است. 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 چگونه OK 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: OK. 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 پس از انتساب به متغیر به نام، رشته ها، و یا نام S؛ 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 است به من باز می گردد، من، به عنوان یک متغیر رشته نامیده می شود، است. 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 >> من به، در حال حاضر، من اجرای سمت چپ 447 00:19:38,720 --> 00:19:43,440 که بیان، که در آن من به سادگی کپی کردن، برای مقاصد امروز، نیک. 448 00:19:43,440 --> 00:19:46,470 بنابراین در حال حاضر، من یک متغیر دارند نام، S، ذخیره سازی نام نیک است. 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-- کمی "سلام،٪ S،" N بک اسلش. 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 شناور است، به طور کلی، یک 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 این در جاوا وجود داشته باشد، اگر شما نفربرهای گرفته شده، 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 INT آسان است. 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 آن را مانند 4 میلیارد است، و این تنها اگر ما 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 به معنی آن منظور از قدر است حتی بزرگتر از یک int است. 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 در حال حاضر به عنوان یک کنار، به لحاظ تاریخی، اگر یک int 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 شما می خواهم فکر می کنم آن طولانی تر از نوع int اما شاید کمتر از یک مدت طولانی طولانی مدت، 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 بولی درست یا غلط، و یک است رشته یک رشته از کاراکتر است، 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، حفره یا سوراخ٪ C است که احتمالا. 546 00:24:15,270 --> 00:24:19,650 و اگر شما می خواهید برای چاپ کردن عدد صحیح را با حفره یا سوراخ،٪ من. 547 00:24:19,650 --> 00:24:25,150 ٪ LLD یک مقدار طولانی اعشاری است، اما طولانی، به طوری که نقشه ها را به که. 548 00:24:25,150 --> 00:24:28,640 و پس از آن٪ f برای شناور مقدار نقطه و یا برای یک دو، 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 بک اسلش T، آیا کسی می خواهم به یک چاقو؟ 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 و چند نفر دیگر در اینجا وجود دارد، R بک اسلش، از نقل قول تکی، 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 را بالا خود را وارد کنید کلید یا بازگشت کلیدی است. 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 و من حدس می زنم که دلیل این که شما ببینید که یک int و من وجود دارد، 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 >> بنابراین یک شوخی در حال حاضر، از Foxtrot، که شما شاید در حال حاضر درک. 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 اما برخی از غذای آماده وجود دارد در اینجا، آموزشی، TOO. 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 بنابراین چه چیزی اشتباه است با یک int رفت؟ 750 00:33:09,430 --> 00:33:12,210 اگر من با استفاده از یک int به تعداد دفعات مشاهده، چه می تواند به اشتباه؟ 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 این 4 میلیارد است. 809 00:35:40,330 --> 00:35:42,080 پس از آن معلوم و برخی از people-- وجود دارد 810 00:35:42,080 --> 00:35:46,080 برخی در Google تایید آخرین night-- 4 میلیارد سکه های طلا شده اند، 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 این شات از صفحه نمایش کسی که من (آنلاین) است، در واقع، 4 میلیارد دلار. 816 00:35:58,360 --> 00:35:59,240 >> در حال حاضر این است که چرا؟ 817 00:35:59,240 --> 00:36:03,040 دقیقا به 4 میلیارد دلار، احتمالا به خاطر کسی که تصمیم، 818 00:36:03,040 --> 00:36:05,500 بود که در حال نوشتن این بازی، که آنها می توانند از 4 میلیارد انجام دهید، 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-- که شما می توانید جمع آوری 4 میلیارد است. 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 مالان: آن متوقف می شود شمارش پس از 4 میلیارد دلار، 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 بنابراین شما می توانید همه چیز را دقیق انجام با یک حلقه در حالی که، به عنوان با یک حلقه for، 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 در حالی که یک حلقه for و یک حلقه در حالی که همیشه 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 که در آن شما متغیر خود را اعلام، مانند INT ضد نقطه و ویرگول، 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 و آن را ضد، بنابراین آن را می دهد من بیت اندازه کافی برای نگهداری یک int است. 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 و پس از آن بسیار شبیه با داوطلب ما با تصویر چاپی 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 در صورتی که از نوع int بزرگتر است از 0 و داد در کاربران 1010 00:45:00,320 --> 00:45:02,699 اگر او نمی دهد شما مثبت است. 1011 00:45:02,699 --> 00:45:04,740 اما اجازه دهید این ساخت بلوک ساختمان خودمان، A، 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 قادر به چاپ هر آنچه که نوع int است. 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، اما از نوع int، 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 بیت نامیده می شود، N، 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 N است. 1044 00:46:26,700 --> 00:46:28,030 بنابراین اجازه دهید که چه اتفاقی می افتد. 1045 00:46:28,030 --> 00:46:30,760 من نسخه قابل چاپ کردن، لطفا من INT مثبت می دهد. 1046 00:46:30,760 --> 00:46:34,300 من پس از دریافت یک int، با استفاده از CS50 را عملکرد و ذخیره شده در N. 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، N کمتر از منفی 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 من قصد دارم برای انجام این کار در حالی که نفر کمتر از 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 زیرا به محض N کمتر از نه 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 آن را ندارد به یک رشته، آن یک int است. 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 بنابراین در اینجا، من اعلام یک متغیر، به نام x، از نوع 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 به من دست به عقب یک ورق کاغذ با یک int بر روی آن. 1097 00:48:51,780 --> 00:48:53,990 بنابراین من یک int است، نام خودسرانه، 1098 00:48:53,990 --> 00:48:55,530 اما به راحتی مکعب نامیده می شود. 1099 00:48:55,530 --> 00:48:58,430 ورودی به آن، N است نوع عدد صحیح، به طوری که 1100 00:48:58,430 --> 00:49:00,800 چگونه من می توانم در تعداد عبور 2 بر روی یک ورق کاغذ. 1101 00:49:00,800 --> 00:49:03,910 و پس از آن که معلوم است پشتیبانی از سی ریاضی، بنابراین شما X برای بار را نداشته باشند، 1102 00:49:03,910 --> 00:49:06,680 شما فقط استفاده از علامت ستاره برای ضرب. 1103 00:49:06,680 --> 00:49:11,070 و این به n بار n بار N، است که به سادگی یک مقدار نبات. 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 و نسخه استاندارد از P مجموعه شما هرم ماریو اجرا می کنند. 1112 00:49:31,591 --> 00:49:34,340 و در نسخه هکر از P مجموعه، اگر شما را انتخاب کنید به انتخاب، 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 مانند Silkwood. 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 در حال حاضر این چیست؟ 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 >> SPEAKER 1: [؟ اسکالی؟]، [؟ ایان،؟] تا آنجا که این پروژه مامانم، 1165 00:51:49,029 --> 00:51:50,362 آنچه را که شما بچه ها می آیند تا با؟ 1166 00:51:50,362 --> 00:51:51,990 >> SPEAKER 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 >> SPEAKER 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 برای دیگران با یک چیزی 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: دیگران در مورد هیچ چیز نیست. 1178 00:52:16,260 --> 00:52:21,720 SPEAKER 2: خوب، منظور من، در فلسفه، منظور من، هیچ چیز چیزی است که همیشه. 1179 00:52:21,720 --> 00:52:24,200 SPEAKER 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: این جدیدا است. 1185 00:52:34,056 --> 00:52:36,806 SPEAKER 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 >> SPEAKER 1: پس چرا تماشای می کنیم؟ 1189 00:52:42,910 --> 00:52:46,956 >> SPEAKER 3: از آنجا که آن مامانم برای CS50 است. 1190 00:52:46,956 --> 00:52:48,652 >> DAVID J مالان: نه هنوز. 1191 00:52:48,652 --> 00:52:49,151