1 00:00:00,000 --> 00:00:00,940 2 00:00:00,940 --> 00:00:05,440 >> [MUSIC پخش] 3 00:00:05,440 --> 00:00:11,577 4 00:00:11,577 --> 00:00:12,660 DAVID J. مالان: خوب. 5 00:00:12,660 --> 00:00:15,590 این CS50 است، و این آغاز هفته دو است. 6 00:00:15,590 --> 00:00:19,120 بنابراین، بیایید امروز شروع با اشکال. 7 00:00:19,120 --> 00:00:20,974 اشکال، البته، اشتباه در برنامه، 8 00:00:20,974 --> 00:00:22,890 و خیلی از شما دریافت کنید با این مفهوم آشنا 9 00:00:22,890 --> 00:00:26,050 اگر شما هرگز برنامه ریزی کرده ام قبل از. pset0 و در حال حاضر pset1. 10 00:00:26,050 --> 00:00:29,280 اما اجازه دهید چیزی در نظر ساده در ابتدا کمی. 11 00:00:29,280 --> 00:00:32,189 این برنامه در اینجا که من با هم در پیش انداخت، 12 00:00:32,189 --> 00:00:37,280 و من ادعا می کنند که این باید چاپ 10 ستاره بر روی صفحه نمایش با استفاده از تابع () printf، 13 00:00:37,280 --> 00:00:41,020 اما ظاهرا در برخی از راه حشره دار. 14 00:00:41,020 --> 00:00:45,370 >> با توجه به اینکه خصوصیات که آن را باید 10 ستاره چاپ، 15 00:00:45,370 --> 00:00:50,230 اما آن را به ظاهر نیست، چه به شما ادعا می کنند که اشکال است؟ 16 00:00:50,230 --> 00:00:52,004 آره؟ 17 00:00:52,004 --> 00:00:54,420 پس از آن که توسط یک خطا، و چه چیزی شما را در آن چیست؟ 18 00:00:54,420 --> 00:01:00,991 19 00:01:00,991 --> 00:01:01,490 OK. 20 00:01:01,490 --> 00:01:09,820 21 00:01:09,820 --> 00:01:10,410 عالی. 22 00:01:10,410 --> 00:01:13,930 بنابراین ما مشخص کرده ایم ارزش صفر شروع برای من، 23 00:01:13,930 --> 00:01:18,399 و ما مشخص کرده ایم یک مقدار N 10، اما ما کمتر از یا مساوی استفاده می شود. 24 00:01:18,399 --> 00:01:21,190 و دلیلی که این دو است شخصیت ها و نه فقط یک نماد، 25 00:01:21,190 --> 00:01:22,630 مانند یک کتاب ریاضی، این است که شما لازم نیست 26 00:01:22,630 --> 00:01:24,880 یکی از راه های بیان یک معادل شخصیت. 27 00:01:24,880 --> 00:01:28,450 >> بنابراین این بدان معناست که کمتر از، اما اگر شما شروع به شمارش صفر، 28 00:01:28,450 --> 00:01:31,690 اما شما تعداد دفعات مشاهده تمام راه تا از طریق و برابر با 10، 29 00:01:31,690 --> 00:01:34,170 شما البته رفتن به هستی 11 همه چیز در مجموع تعداد. 30 00:01:34,170 --> 00:01:35,900 و به این ترتیب شما به چاپ 11 ستاره. 31 00:01:35,900 --> 00:01:37,990 پس چه ممکن است یک راه حل برای این؟ 32 00:01:37,990 --> 00:01:39,970 آره؟ 33 00:01:39,970 --> 00:01:43,980 >> پس فقط تنظیم کمتر از یا برابر با تنها کمتر از باشد، 34 00:01:43,980 --> 00:01:46,250 و وجود دارد، من ادعا می کنند، شاید راه حل دیگر، بیش از حد. 35 00:01:46,250 --> 00:01:47,210 چه ممکن است دیگری انجام دهید؟ 36 00:01:47,210 --> 00:01:48,590 آره؟ 37 00:01:48,590 --> 00:01:53,660 >> بنابراین شروع به برابر آن را به 1، و ترک کمتر از یا مساوی. 38 00:01:53,660 --> 00:01:56,187 و رک و پوست کنده من ادعا می کنند که برای یک انسان معمولی، 39 00:01:56,187 --> 00:01:57,770 این است که احتمالا ساده تر است. 40 00:01:57,770 --> 00:02:00,280 شروع شمارش در 1 و تعداد دفعات مشاهده را از طریق 10. 41 00:02:00,280 --> 00:02:01,690 اساسا انجام منظور شما چیست. 42 00:02:01,690 --> 00:02:04,010 >> اما واقعیت این است در برنامه نویسی، همانطور که ما دیده ایم، 43 00:02:04,010 --> 00:02:07,598 دانشمندان کامپیوتر و برنامه نویسان به طور کلی شروع به شمارش صفر. 44 00:02:07,598 --> 00:02:09,389 و به طوری که خوب است یک بار شما به آن استفاده می شود. 45 00:02:09,389 --> 00:02:12,640 شرایط شما به طور کلی خواهد شد تواند چیزی شبیه کمتر از. 46 00:02:12,640 --> 00:02:14,910 بنابراین به سادگی منطقی خطا که ما در حال حاضر می تواند 47 00:02:14,910 --> 00:02:17,990 تعمیر و در نهایت کامپایل مجدد این و فقط 10 دریافت کنید. 48 00:02:17,990 --> 00:02:19,610 >> خوب در مورد این اشکال که اینجا هستید؟ 49 00:02:19,610 --> 00:02:24,200 در اینجا، دوباره، من ادعا می کنند که من هدف از چاپ 10 stars-- 50 00:02:24,200 --> 00:02:28,140 در هر خط در این زمان، اما آن را نمی کند. 51 00:02:28,140 --> 00:02:30,940 قبل از اینکه ما پیشنهاد چه ثابت است، چه این کار را 52 00:02:30,940 --> 00:02:34,640 چاپ بصری اگر من به کامپایل و اجرای این برنامه شما فکر می کنید؟ 53 00:02:34,640 --> 00:02:35,140 آره؟ 54 00:02:35,140 --> 00:02:38,360 55 00:02:38,360 --> 00:02:38,860 >> ستاره. 56 00:02:38,860 --> 00:02:41,690 بنابراین تمام ستاره ها در همان خط است آنچه که من شنیده، 57 00:02:41,690 --> 00:02:43,391 و پس از آن شخصیت خط جدید. 58 00:02:43,391 --> 00:02:44,140 بنابراین اجازه دهید سعی کنید که. 59 00:02:44,140 --> 00:02:48,710 بنابراین حشره دار-1، وارد را، و من از فرمان صدای شیپور را ببینید 60 00:02:48,710 --> 00:02:50,090 که ما در مورد صحبت کردهایم. 61 00:02:50,090 --> 00:02:55,180 ./buggy-1، و در واقع من تمام 10 ستاره در همان خط حتی اگر من ادعا می کنند 62 00:02:55,180 --> 00:02:58,690 در مشخصات من فقط یک نظر در بالای کدی که من در نظر گرفته شده برای انجام این کار در هر 63 00:02:58,690 --> 00:02:59,230 خط. 64 00:02:59,230 --> 00:03:00,580 اما این حق به نظر می رسد. 65 00:03:00,580 --> 00:03:04,620 >> در حال حاضر خط 15 به نظر می رسد من چاپ یک ستاره، و سپس خط 16 66 00:03:04,620 --> 00:03:06,620 به نظر می رسد مثل من چاپ هستم یک شخصیت خط جدید، 67 00:03:06,620 --> 00:03:09,560 و آنها هر دو فاصله دار تا I داخل حلقه به وضوح هستم. 68 00:03:09,560 --> 00:03:13,610 بنابراین باید نه من انجام ستاره، جدید خط، ستاره، خط جدید، ستاره، خط جدید؟ 69 00:03:13,610 --> 00:03:14,110 بله؟ 70 00:03:14,110 --> 00:03:18,430 71 00:03:18,430 --> 00:03:21,240 >> آره، بر خلاف یک زبان مانند پایتون، اگر شما آشنا هستند، 72 00:03:21,240 --> 00:03:23,540 دندانه نیست موضوع را به کامپیوتر است. 73 00:03:23,540 --> 00:03:25,280 این تنها به انسان مهم است. 74 00:03:25,280 --> 00:03:29,860 بنابراین در حالی که خطوط در اینجا من اختراع کردم 15 و 16-- که به نظر می رسد زیبا، 75 00:03:29,860 --> 00:03:31,330 اما کامپیوتر مهم نیست. 76 00:03:31,330 --> 00:03:34,640 کامپیوتر در مورد مراقبت در واقع داشتن آکولاد 77 00:03:34,640 --> 00:03:36,310 در اطراف این خط کد. 78 00:03:36,310 --> 00:03:39,520 >> به طوری که آن را clear-- درست مثل در Scratch-- که این دو خط کد 79 00:03:39,520 --> 00:03:40,450 باید اعدام شود. 80 00:03:40,450 --> 00:03:44,390 مانند یکی از این پازل خراش زرد قطعه دوباره و دوباره و دوباره. 81 00:03:44,390 --> 00:03:50,920 >> بنابراین در حال حاضر اگر من دوباره اجرای این program-- ./buggy-2-- حم. 82 00:03:50,920 --> 00:03:51,770 من یک خطا در حال حاضر. 83 00:03:51,770 --> 00:03:54,212 چه من را فراموش کرده ام کاری انجام دهید؟ 84 00:03:54,212 --> 00:03:55,420 آره، بنابراین من آن را کامپایل کنید. 85 00:03:55,420 --> 00:03:56,740 بنابراین حشره دار-2. 86 00:03:56,740 --> 00:03:59,840 بدون چنین فایل به دلیل من نمی در واقع نسخه دوم کامپایل. 87 00:03:59,840 --> 00:04:04,860 بنابراین در حال حاضر جالب اعلام نشده variable-- 2 نیست. 88 00:04:04,860 --> 00:04:05,510 ما در حال انجام 1. 89 00:04:05,510 --> 00:04:11,050 را حشره دار-1-- ./buggy-1-- و در حال حاضر هر یک از آنها را در همان خط است. 90 00:04:11,050 --> 00:04:13,880 >> در حال حاضر یک استثنا وجود دارد این ادعا قرار من 91 00:04:13,880 --> 00:04:15,520 که شما نیاز دارید این آکولاد. 92 00:04:15,520 --> 00:04:20,160 هنگامی که آن را در واقع OK-- اگر شما در متوجه در بخش و یا textbooks-- 93 00:04:20,160 --> 00:04:22,130 به حذف آکولاد؟ 94 00:04:22,130 --> 00:04:22,630 آره؟ 95 00:04:22,630 --> 00:04:26,290 96 00:04:26,290 --> 00:04:26,870 >> دقیقا. 97 00:04:26,870 --> 00:04:28,940 وقتی که تنها یک وجود دارد خط از کد که شما 98 00:04:28,940 --> 00:04:32,830 می خواهم به با همراه است حلقه به عنوان در اولین مثال ما. 99 00:04:32,830 --> 00:04:36,380 این کاملا مشروع است به حذف آکولاد 100 00:04:36,380 --> 00:04:40,310 فقط به عنوان یک نوع راحتی از کامپایلر به شما. 101 00:04:40,310 --> 00:04:40,810 آره؟ 102 00:04:40,810 --> 00:04:43,347 103 00:04:43,347 --> 00:04:43,930 سوال خوب. 104 00:04:43,930 --> 00:04:45,500 آیا آن را به عنوان یک خطا به سبک؟ 105 00:04:45,500 --> 00:04:49,340 ما به عنوان در CS50 promote-- راهنمای سبک، URL که 106 00:04:49,340 --> 00:04:51,926 در pset1-- که همیشه استفاده از آکولاد. 107 00:04:51,926 --> 00:04:53,550 قطعا اگر شما تازه به برنامه نویسی است. 108 00:04:53,550 --> 00:04:56,800 واقعیت این است که ما نه می خواهم برای شما ممنوع کرده است 109 00:04:56,800 --> 00:04:58,680 از انجام این راحتی. 110 00:04:58,680 --> 00:05:00,846 اما اگر شما فقط گرفتن به نوسان از همه چیز، 111 00:05:00,846 --> 00:05:04,020 کاملا تنها همیشه استفاده از مجعد پرانتز تا زمانی که شما از آن آویزان است. 112 00:05:04,020 --> 00:05:04,640 سوال خوب. 113 00:05:04,640 --> 00:05:05,320 >> خوب. 114 00:05:05,320 --> 00:05:07,660 به طوری که پس از آن یک اشکال بود. 115 00:05:07,660 --> 00:05:09,190 حداقل در چیزی نسبتا ساده است. 116 00:05:09,190 --> 00:05:11,260 و با این حال شما ممکن است این فکر می کنم نسبتا ابتدایی، درست است؟ 117 00:05:11,260 --> 00:05:13,635 این نوع از هفته اول از نگاه زبان 118 00:05:13,635 --> 00:05:14,890 مانند، در آن نگاه کنید به اشکالات خود را. 119 00:05:14,890 --> 00:05:17,250 اما واقعیت این است در واقع نماینده 120 00:05:17,250 --> 00:05:20,310 برخی از مشکلات بسیار ترسناک است که می تواند در دنیای واقعی بوجود می آیند. 121 00:05:20,310 --> 00:05:23,530 >> بنابراین برخی از شما ممکن است به یاد می آورند اگر شما به دنبال اخبار تکنولوژی، 122 00:05:23,530 --> 00:05:25,740 و یا شاید حتی گرفتار باد از این در ماه فوریه 123 00:05:25,740 --> 00:05:29,434 از سال گذشته که اپل به حال یک بیت از یک اشتباه در هر دو سیستم عامل iOS ساخته شده، 124 00:05:29,434 --> 00:05:31,350 سیستم عامل در تلفن های خود را، و همچنین 125 00:05:31,350 --> 00:05:34,220 سیستم عامل مک، سیستم عامل در دسکتاپ و لپ تاپ خود را. 126 00:05:34,220 --> 00:05:36,480 و شما سرفصل مانند این را دیدم. 127 00:05:36,480 --> 00:05:41,120 و پس از آن، اپل وعده داده به رفع این اشکال، 128 00:05:41,120 --> 00:05:45,950 و به سرعت انجام تعمیر آن در IOS، اما پس از آن در نهایت آن را در سیستم عامل مک ثابت 129 00:05:45,950 --> 00:05:46,810 و همچنین. 130 00:05:46,810 --> 00:05:50,370 >> در حال حاضر هیچ کدام از این عناوین به تنهایی واقعا نشان چه مشکل اساسی این بود، 131 00:05:50,370 --> 00:05:55,640 اما اشکال در نهایت به کاهش می یابد یک اشکال در SSL، لایه سوکت های امن. 132 00:05:55,640 --> 00:05:57,390 و داستان کوتاه مدت، این نرم افزار است 133 00:05:57,390 --> 00:06:01,030 که مرورگرهای ما و دیگر نرم افزار مورد استفاده برای انجام چه؟ 134 00:06:01,030 --> 00:06:04,090 135 00:06:04,090 --> 00:06:06,860 >> اگر من گفت که SSL است درگیر، هر زمان که شما 136 00:06:06,860 --> 00:06:13,920 URL که با HTTPS شروع می شود بازدید، آنچه پس از آن ممکن است SSL به مربوط؟ 137 00:06:13,920 --> 00:06:14,580 رمزگذاری. 138 00:06:14,580 --> 00:06:16,470 بنابراین ما صحبت در مورد این در روزهای آینده. 139 00:06:16,470 --> 00:06:18,750 رمزگذاری، هنر تقلا اطلاعات. 140 00:06:18,750 --> 00:06:22,200 >> اما داستان کوتاه مدت، اپل مدتی پیش یک اشتباه شده است 141 00:06:22,200 --> 00:06:25,970 در اجرای آنها از SSL، نرم افزاری است که در نهایت پیاده سازی 142 00:06:25,970 --> 00:06:30,120 آدرس ها مانند HTTPS و یا حداکثر اتصالات نیز وجود دارد. 143 00:06:30,120 --> 00:06:32,850 نتیجه آن است که خود را اتصالات به طور بالقوه می تواند 144 00:06:32,850 --> 00:06:33,920 قطع شود. 145 00:06:33,920 --> 00:06:37,130 و ارتباطات شما بود لزوما رمزگذاری نشده 146 00:06:37,130 --> 00:06:40,350 اگر شما بین به حال برخی از پسر بد در شما و وب سایت مقصد که 147 00:06:40,350 --> 00:06:42,170 می دانست که چگونه به استفاده از این. 148 00:06:42,170 --> 00:06:45,090 >> در حال حاضر اپل در نهایت ارسال شده رفع این در نهایت، 149 00:06:45,090 --> 00:06:46,920 و شرح تعمیر خود را در این بود. 150 00:06:46,920 --> 00:06:49,878 حمل و نقل ایمن انجام نشد به اعتبار صحت اتصال. 151 00:06:49,878 --> 00:06:52,920 موضوع های پرداخته شده است بازگرداندن از دست رفته مراحل اعتبار سنجی. 152 00:06:52,920 --> 00:06:57,250 >> بنابراین این توضیح مواج دست بسیار است برای سادگی گفت: که ما رو خراب کرد. 153 00:06:57,250 --> 00:07:00,920 است به معنای واقعی کلمه وجود دارد خط از کد که حشره دار بود 154 00:07:00,920 --> 00:07:05,130 در اجرای آنها از SSL و اگر شما به صورت آنلاین و جستجو برای این 155 00:07:05,130 --> 00:07:07,210 شما می توانید در واقع پیدا کردن کد منبع اصلی. 156 00:07:07,210 --> 00:07:11,960 به عنوان مثال، این یک شات از صفحه نمایش است فقط یک قسمت از یک فایل نسبتا بزرگ، 157 00:07:11,960 --> 00:07:15,965 اما این تابع ظاهرا به نام است SSL بررسی سرور علامت تبادل کلید. 158 00:07:15,965 --> 00:07:17,840 و آن طول می کشد یک دسته از بحث ها و ورودی ها. 159 00:07:17,840 --> 00:07:20,298 و ما قصد داریم به تمرکز بیش از حد در minutia وجود دارد، 160 00:07:20,298 --> 00:07:24,390 اما اگر شما در کد تمرکز در داخل از که بالاترین function-- اجازه دهید 161 00:07:24,390 --> 00:07:25,590 زوم بر روی آن است. 162 00:07:25,590 --> 00:07:28,140 شما در حال حاضر ممکن است مشکوک چه خطا ممکن است 163 00:07:28,140 --> 00:07:31,230 شود حتی اگر شما هیچ ایده در نهایت آنچه که شما دنبال آن هستید در. 164 00:07:31,230 --> 00:07:35,924 نوع ناهنجاری وجود دارد در اینجا، که چه؟ 165 00:07:35,924 --> 00:07:38,940 >> آره، من واقعا دوست دارم نگاه از دو رفتن به شکست مواجه است. 166 00:07:38,940 --> 00:07:42,060 صادقانه بگویم، من واقعا نمی دانند چه برو شکست معنی، اما داشتن دو نفر از آنها 167 00:07:42,060 --> 00:07:42,810 پشت به پشت. 168 00:07:42,810 --> 00:07:45,290 این تنها نوع از من پاک فکری راه اشتباه، 169 00:07:45,290 --> 00:07:48,910 و در واقع اگر ما در زوم فقط کسانی که خطوط، این C. است 170 00:07:48,910 --> 00:07:52,220 >> بنابراین تعداد زیادی از کد های اپل است خود را در C نوشته شده است، 171 00:07:52,220 --> 00:07:55,780 و این ظاهرا واقعا equivalent-- 172 00:07:55,780 --> 00:07:59,060 به که دندانه بسیار نسخه، اما اگر شما تشخیص این واقعیت است 173 00:07:59,060 --> 00:08:02,560 که هیچ آکولاد، وجود دارد چه اپل واقعا نوشت کد است که به نظر می رسد بود 174 00:08:02,560 --> 00:08:03,540 مثل این. 175 00:08:03,540 --> 00:08:07,080 بنابراین من زوم کرده اید و من فقط ثابت دندانه در حس 176 00:08:07,080 --> 00:08:10,690 که اگر هیچ آکولاد، که وجود دارد رفتن به دوم شکست که در زرد 177 00:08:10,690 --> 00:08:12,500 در حال رفتن به اجرای بدون توجه به آنچه. 178 00:08:12,500 --> 00:08:15,540 این با وجود نمی اگر شرایط بالا را. 179 00:08:15,540 --> 00:08:19,590 >> بنابراین حتی دوباره، اگر شما کاملا درک آنچه در این می تواند احتمالا 180 00:08:19,590 --> 00:08:23,230 است انجام می دهند، می دانند که هر یک از این conditions-- هر یک از این خطوط 181 00:08:23,230 --> 00:08:26,180 یک گام بسیار مهم است در روند بررسی 182 00:08:26,180 --> 00:08:28,350 اگر اطلاعات شما در واقع رمزگذاری شده است. 183 00:08:28,350 --> 00:08:31,710 بنابراین پرش یکی از این مراحل، بهترین ایده. 184 00:08:31,710 --> 00:08:34,840 >> اما از آنجا که ما این رفتن به دوم شکست در رنگ های زرد، 185 00:08:34,840 --> 00:08:36,840 و از آنجا که یک بار ما مرتب کردن بر اساس زیبا 186 00:08:36,840 --> 00:08:40,480 به سمت چپ حرکت می کند آن را که در آن منطقی است در حال حاضر، چه 187 00:08:40,480 --> 00:08:43,230 مفهومی برای خط از کد زیر که رفتن به دوم 188 00:08:43,230 --> 00:08:46,480 شکست را به شما فکر می کنم؟ 189 00:08:46,480 --> 00:08:48,860 این همیشه نادیده گرفته شد. 190 00:08:48,860 --> 00:08:52,100 بنابراین gotos می نماید دلایل ما نمی خواهد واقعا به به، 191 00:08:52,100 --> 00:08:54,940 و در واقع در CS50 ما تمایل ندارد برای آموزش این دستور goto، 192 00:08:54,940 --> 00:08:58,130 اما شما می توانید از فکر می کنم رفتن شکست به معنای رفتن پرش 193 00:08:58,130 --> 00:08:59,600 به برخی از بخش دیگری از کد. 194 00:08:59,600 --> 00:09:03,120 >> به عبارت دیگر انتخاب بیش از این خط آخر در مجموع، 195 00:09:03,120 --> 00:09:07,420 و بنابراین نتیجه این احمق اشتباه ساده است که فقط 196 00:09:07,420 --> 00:09:10,330 در نتیجه احتمالا کسی کپی و الصاق یک بیش از حد 197 00:09:10,330 --> 00:09:14,150 چند بار بود که کل امنیت iOS و مک OS 198 00:09:14,150 --> 00:09:18,240 آسیب پذیر به رهگیری شد توسط بچه های بد برای مدتی. 199 00:09:18,240 --> 00:09:19,940 تا زمانی که اپل در نهایت این ثابت شده است. 200 00:09:19,940 --> 00:09:23,100 >> حال اگر برخی از شما در واقع در حال اجرا نسخه های قدیمی از IOS و یا سیستم عامل مک، 201 00:09:23,100 --> 00:09:27,250 شما می توانید به gotofail.com به آن یک وب سایت که کسی راه اندازی شده است 202 00:09:27,250 --> 00:09:29,190 اساسا تعیین برنامه نویسی 203 00:09:29,190 --> 00:09:30,980 اگر کامپیوتر شما هنوز آسیب پذیر است. 204 00:09:30,980 --> 00:09:33,600 و رک و پوست کنده، اگر از آن است، آن را احتمالا یک ایده خوب 205 00:09:33,600 --> 00:09:36,870 برای به روز رسانی تلفن خود و یا مک خود را در این نقطه است. 206 00:09:36,870 --> 00:09:40,120 اما، فقط به عهد به چقدر وجود دارد قدردانی از این سطح پایین تر 207 00:09:40,120 --> 00:09:42,400 جزئیات و نسبتا ایده های ساده واقعا می تواند در 208 00:09:42,400 --> 00:09:44,590 ترجمه به تصمیم گیری و مشکلاتی که 209 00:09:44,590 --> 00:09:47,320 affected-- در این case-- میلیون ها نفر از مردم است. 210 00:09:47,320 --> 00:09:49,107 >> در حال حاضر یک کلمه در دولت. 211 00:09:49,107 --> 00:09:50,690 بخش روز یکشنبه آینده آغاز خواهد شد. 212 00:09:50,690 --> 00:09:53,360 شما یک ایمیل با دریافت آخر هفته در مورد بخش، که در آن نقطه 213 00:09:53,360 --> 00:09:55,290 فرآیند برش آغاز خواهد شد اگر شما در 214 00:09:55,290 --> 00:09:56,998 متوجه شدم شما در حال حاضر برخی از درگیری های جدید. 215 00:09:56,998 --> 00:10:00,180 بنابراین این اتفاق می افتد در هر سال، و ما در روز مسکن خواهد شد آمده است. 216 00:10:00,180 --> 00:10:02,430 >> دفتر hours-- نگه داشتن چشم در این برنامه است. 217 00:10:02,430 --> 00:10:05,100 تغییرات کمی در این هفته، به ویژه زمان شروع 218 00:10:05,100 --> 00:10:08,180 و محل، پس مشورت که قبل از رفتن به ساعات اداری 219 00:10:08,180 --> 00:10:09,520 هر یک از چهار شب بعد. 220 00:10:09,520 --> 00:10:12,680 و در حال حاضر یک کلمه در ارزیابی، به خصوص به عنوان شما را به شیرجه رفتن مشکل 221 00:10:12,680 --> 00:10:14,350 مجموعه یک و فراتر از آن. 222 00:10:14,350 --> 00:10:17,070 >> بنابراین در خصوصیات، این به طور کلی 223 00:10:17,070 --> 00:10:20,360 محور همراه است که ما کار خود را ارزیابی کنند. 224 00:10:20,360 --> 00:10:23,170 محدوده اشاره به آنچه میزان پیاده سازی کد شما 225 00:10:23,170 --> 00:10:25,690 ویژگی های مورد نیاز توسط ویژگی های کار ما. 226 00:10:25,690 --> 00:10:28,290 به عبارت دیگر، چه مقدار از مجموعه ای قطعه آیا شما نیش کردن. 227 00:10:28,290 --> 00:10:30,440 آیا شما یک سوم از آن، نیمی از آن، 100٪ از آن را. 228 00:10:30,440 --> 00:10:33,000 حتی اگر آن را درست نیست، چقدر شما تلاش کردید؟ 229 00:10:33,000 --> 00:10:35,290 به طوری که قطاری از سطح تلاش و مقدار 230 00:10:35,290 --> 00:10:38,260 که شما کمی کردن مشکلات مشکل مجموعه است. 231 00:10:38,260 --> 00:10:40,690 >> Correctness-- این یکی، به چه اندازه، کد شما است 232 00:10:40,690 --> 00:10:43,150 سازگار با ما مشخصات و عاری از اشکالات. 233 00:10:43,150 --> 00:10:44,770 بنابراین آن را به درستی کار می کند؟ 234 00:10:44,770 --> 00:10:48,700 اگر ما آن را برخی از ورودی می دهد، آن را خروجی که ما انتظار داریم به ما؟ 235 00:10:48,700 --> 00:10:52,570 Design-- در حال حاضر این است که برای اولین بار از آنهایی که به خصوص کیفی، 236 00:10:52,570 --> 00:10:56,180 و یا آنهایی که نیاز به قضاوت انسان است. 237 00:10:56,180 --> 00:10:59,690 و در واقع، این است که چرا ما کارکنان بسیاری از همراهان آموزش و دوره 238 00:10:59,690 --> 00:11:00,350 دستیاران. 239 00:11:00,350 --> 00:11:03,480 تا چه حد شما می باشد کد نوشته شده است؟ 240 00:11:03,480 --> 00:11:05,810 >> و باز هم این است که بسیار ارزیابی کیفی 241 00:11:05,810 --> 00:11:09,100 که با شما در کار خواهد کرد دوطرفه در هفته های آینده است. 242 00:11:09,100 --> 00:11:12,060 به طوری که زمانی که شما می کنید تنها نمرات عددی، بلکه 243 00:11:12,060 --> 00:11:16,682 نمرات نوشته شده است، و یا بازخورد تایپ شده، و یا بازخورد به عبارت انگلیسی نوشته شده است. 244 00:11:16,682 --> 00:11:19,640 این چیزی است که ما از آن استفاده به شما درایو به سمت در واقع نوشتن کد بهتر است. 245 00:11:19,640 --> 00:11:23,320 و در سخنرانی و بخش، ما تلاش خواهیم کرد به نقطه out-- به عنوان اغلب به عنوان ما can-- 246 00:11:23,320 --> 00:11:26,420 چه چیزی باعث یک برنامه نه تنها درست و عملکرد خوب، 247 00:11:26,420 --> 00:11:28,200 اما نیز به خوبی طراحی شده است. 248 00:11:28,200 --> 00:11:31,850 کارآمد ترین آن می تواند، و یا حتی زیبا ترین آن می تواند باشد. 249 00:11:31,850 --> 00:11:33,100 >> کدام ما را به سبک. 250 00:11:33,100 --> 00:11:36,876 سبک نهایت است قضاوت زیبایی شناسانه. 251 00:11:36,876 --> 00:11:38,750 آیا شما انتخاب می کنید خوب نام برای متغیرهای خود را؟ 252 00:11:38,750 --> 00:11:40,330 آیا کد خود را به شما به درستی فاصله دار؟ 253 00:11:40,330 --> 00:11:44,010 آن را نگاه خوب است، و در نتیجه، است آن را آسان برای انسانی دیگر 254 00:11:44,010 --> 00:11:46,550 به عنوان خوانده شده مربوطه خود از صحت آن است. 255 00:11:46,550 --> 00:11:50,300 >> در حال حاضر به طور کلی در هر برنامه درسی، نمره ما این چیزها در مقیاس پنج نقطه. 256 00:11:50,300 --> 00:11:53,640 و به من اجازه چکش به خانه نقطه که سه است که در واقع خوب است. 257 00:11:53,640 --> 00:11:55,550 خیلی به سرعت انجام مردمی شروع به انجام حساب. 258 00:11:55,550 --> 00:11:58,133 وقتی که آنها به سه نفر از پنج در صحت برای برخی از pset 259 00:11:58,133 --> 00:12:02,040 و آنها فکر می کنم لعنتی، من به 60٪ رفتن که اساسا D یا E. 260 00:12:02,040 --> 00:12:03,980 >> این راهی نیست که ما از این شماره فکر می کنم. 261 00:12:03,980 --> 00:12:06,880 سه در واقع خوب است، و آنچه که ما به طور کلی در آغاز انتظار 262 00:12:06,880 --> 00:12:09,820 از مدت این است که اگر شما در حال گرفتن یک دسته از three's-- شاید یک زن و شوهر 263 00:12:09,820 --> 00:12:12,540 نمایشگاه، یک زن و شوهر از fours-- یا یک زن و شوهر twos، یک زن و شوهر از fours-- 264 00:12:12,540 --> 00:12:13,748 که یک محل خوبی برای شروع است. 265 00:12:13,748 --> 00:12:16,320 و تا زمانی که ما می بینیم مسیر رو به بالا در طول زمان، 266 00:12:16,320 --> 00:12:18,540 شما در یک مکان به خصوص خوب است. 267 00:12:18,540 --> 00:12:20,752 >> فرمول ما به استفاده از همه چیز وزن است که در اصل 268 00:12:20,752 --> 00:12:22,710 این در برنامه درسی، که فقط بدان معناست که ما 269 00:12:22,710 --> 00:12:24,750 وزن بیشتر به صحت می دهد. 270 00:12:24,750 --> 00:12:27,930 از آنجا که آن را اغلب صحت که بیشتر هم طول می کشد. 271 00:12:27,930 --> 00:12:28,760 به من اعتماد کن حال حاضر. 272 00:12:28,760 --> 00:12:31,190 شما حداقل find-- در یک pset-- که شما 273 00:12:31,190 --> 00:12:36,790 صرف 90٪ از وقت خود را کار بر روی 10٪ از مشکل است. 274 00:12:36,790 --> 00:12:39,320 >> و همه چیز مرتب سازی بر اساس کار به جز یک یا دو باگ ها، 275 00:12:39,320 --> 00:12:41,570 و کسانی که اشکالات که شما را تا در اواخر شب. 276 00:12:41,570 --> 00:12:43,380 کسانی هستند که مرتب کردن بر اساس از شما فرار کنند. 277 00:12:43,380 --> 00:12:45,560 اما پس از خواب بر روی آن، و یا حضور در ساعات اداری 278 00:12:45,560 --> 00:12:48,844 و یا پرسیدن سوال آنلاین است هنگامی که شما به 100٪ هدف دریافت، 279 00:12:48,844 --> 00:12:50,760 و این که چرا ما وزن است صحت بیشتر. 280 00:12:50,760 --> 00:12:54,102 طراحی یک کمی کمتر، و سبک کمی کمتر از آن. 281 00:12:54,102 --> 00:12:56,060 اما در سبک mind-- حفظ شاید ساده ترین 282 00:12:56,060 --> 00:12:58,890 از این به نیش کردن به عنوان در راهنمای سبک. 283 00:12:58,890 --> 00:13:01,580 >> و در حال حاضر، جدی تر توجه داشته باشید در صداقت علمی. 284 00:13:01,580 --> 00:13:05,000 CS50 تمایز ناگوار که بزرگترین تولید کننده های آگهی انجمن 285 00:13:05,000 --> 00:13:07,330 موارد تقریبا در هر سال در طول تاریخ. 286 00:13:07,330 --> 00:13:11,012 دلیل این است که دانش آموزان در تقلب نمی CS50 هر بیشتر از هر کلاس دیگر، 287 00:13:11,012 --> 00:13:13,720 اما به دلیل طبیعت کار، این واقعیت که این الکترونیکی، 288 00:13:13,720 --> 00:13:16,636 این واقعیت است که ما برای آن نگاه کنید، و این واقعیت که ما دانشمندان کامپیوتر، 289 00:13:16,636 --> 00:13:20,570 می توانم بگویم که ما متاسفانه در تشخیص آن بسیار خوب است. 290 00:13:20,570 --> 00:13:22,710 >> بنابراین چه در شرایط واقعی چیست؟ 291 00:13:22,710 --> 00:13:24,820 پس از آن، در هر برنامه درسی، فلسفه درس 292 00:13:24,820 --> 00:13:28,090 واقعا جوش پایین به معقول. 293 00:13:28,090 --> 00:13:31,684 است این خط بین وجود دارد انجام کار فرد در خود 294 00:13:31,684 --> 00:13:34,100 و به دست آوردن کمی از کمک های معقول و منطقی از یک دوست، 295 00:13:34,100 --> 00:13:38,020 و آشکار انجام آن کار را برای شما دوستان، و یا ارسال به او کد شما 296 00:13:38,020 --> 00:13:41,080 به طوری که او به سادگی می تواند را و یا قرض گرفتن آن را حق. 297 00:13:41,080 --> 00:13:43,580 و این خط عبور که ما در کلاس کشیده شده است. 298 00:13:43,580 --> 00:13:45,410 >> ببینید، برنامه درسی در نهایت برای خطوط 299 00:13:45,410 --> 00:13:48,209 که ما به عنوان معقول بودن رسم و رفتار غیر معقول، 300 00:13:48,209 --> 00:13:50,000 واقعا جوش را به جوهر 301 00:13:50,000 --> 00:13:53,980 از کار شما نیاز به است خود را در پایان. 302 00:13:53,980 --> 00:13:56,230 در حال حاضر با که گفت، است از روش اکتشافی وجود دارد. 303 00:13:56,230 --> 00:13:58,980 از آنجا که شما ممکن است imagine-- از ساعات اداری و تصاویری 304 00:13:58,980 --> 00:14:01,060 و فیلم ایم نشان داده شده است در نتیجه far-- CS50 305 00:14:01,060 --> 00:14:04,530 در واقع به معنای به عنوان مشترک است و به عنوان تعاونی و اجتماعی 306 00:14:04,530 --> 00:14:06,450 که ممکن است. 307 00:14:06,450 --> 00:14:08,570 به عنوان مشترک آن را به عنوان دقیق است. 308 00:14:08,570 --> 00:14:11,314 >> اما با این گفت، اکتشافی، عنوان شما در برنامه درسی نگاه کنید، 309 00:14:11,314 --> 00:14:12,980 این است که وقتی شما با داشتن بعضی از مشکل. 310 00:14:12,980 --> 00:14:16,470 شما باید برخی از مشکلات را در کد خود را که شما نمی تواند حل کند، آن را مناسب برای شما است 311 00:14:16,470 --> 00:14:18,039 کد خود را به شخص دیگری برای نشان دادن. 312 00:14:18,039 --> 00:14:21,080 یکی از دوستان حتی در کلاس، یک دوست نشستن در کنار شما در ساعات اداری، 313 00:14:21,080 --> 00:14:22,680 و یا یک عضو از کارکنان. 314 00:14:22,680 --> 00:14:25,810 اما آنها ممکن است کد خود را به شما نشان نمی دهد. 315 00:14:25,810 --> 00:14:27,710 >> به عبارت دیگر، پاسخ به question-- شما 316 00:14:27,710 --> 00:14:29,940 من نیاز به help-- نیست آه، اینجا کد من است. 317 00:14:29,940 --> 00:14:32,440 نگاهی به این و استنباط از آن چه شما خواهد شد. 318 00:14:32,440 --> 00:14:34,580 در حال حاضر، البته، وجود دارد راه وضوح به بازی 319 00:14:34,580 --> 00:14:37,760 این سیستم به موجب آن من به شما نشان می دهد کد من قبل از سوال. 320 00:14:37,760 --> 00:14:40,150 تو به من کد شما من نشان می دهد قبل از سوال. 321 00:14:40,150 --> 00:14:45,870 اما برنامه درسی را دوباره برای جزئیات دقیقتر که در آن این خط است. 322 00:14:45,870 --> 00:14:50,606 >> فقط به حال تصویر رنگ و به اشتراک گذاری به عنوان شفاف که ممکن است 323 00:14:50,606 --> 00:14:53,480 که در آن ما در در سال های اخیر، این تعداد موارد آگهی انجمن است 324 00:14:53,480 --> 00:14:56,260 که CS50 تا به حال بیش از در هفت سال گذشته. 325 00:14:56,260 --> 00:14:58,717 با 14 مورد از این سقوط اخیر. 326 00:14:58,717 --> 00:15:01,300 از نظر دانش آموزان درگیر، 20 برخی از دانش آموزان عجیب و غریب بود 327 00:15:01,300 --> 00:15:02,490 این پاییز گذشته. 328 00:15:02,490 --> 00:15:05,670 یک اوج 33 وجود دارد دانش آموزان چند سال پیش. 329 00:15:05,670 --> 00:15:08,830 بسیاری از آنها متاسفانه دیگر در اینجا در محوطه دانشگاه. 330 00:15:08,830 --> 00:15:13,100 >> دانش آموزان درگیر به عنوان یک درصد از کلاس در طول تاریخ از 0٪ در محدوده زمانی معین 331 00:15:13,100 --> 00:15:17,300 به 5.3٪، است که فقط می گویند این است سالانه یک چالش است. 332 00:15:17,300 --> 00:15:20,390 و در راه آن هدف، چه ما می خواهیم انجام دهیم این است انتقال یک 333 00:15:20,390 --> 00:15:24,310 که ما dd-- فقط FYI-- مقایسه در انصاف به کسانی که دانش آموزانی که 334 00:15:24,310 --> 00:15:26,520 پس از خط بر این اساس می باشد. 335 00:15:26,520 --> 00:15:29,620 ما مقایسه فعلی ارسالی در برابر همه ماموریت های گذشته 336 00:15:29,620 --> 00:15:30,840 از سال ها گذشته است. 337 00:15:30,840 --> 00:15:33,620 >> ما هم می دانیم که چگونه به گوگل اطراف و پیدا کردن مخازن کد 338 00:15:33,620 --> 00:15:36,360 آنلاین، بحث و تبادل نظر آنلاین، سایت های کار آنلاین. 339 00:15:36,360 --> 00:15:41,580 اگر یک دانش آموز می توانید آن را پیدا کنید، ما مطمئنا می تواند پیدا کردن آن تا آنجا که ما متأسفانه انجام دهد. 340 00:15:41,580 --> 00:15:45,330 پس چه شما در برنامه درسی را ببینید هر چند این بند تاسف است. 341 00:15:45,330 --> 00:15:47,500 من قطعا می تواند قدردانی، و همه ما است 342 00:15:47,500 --> 00:15:50,870 کارکنان پس از انجام دوره مانند این یا این یکی خود را در طول زمان، 343 00:15:50,870 --> 00:15:53,997 قطعا می دانید که چه آن را مانند زمانی که زندگی می شود در راه هنگامی که شما به 344 00:15:53,997 --> 00:15:56,080 برخی در اواخر شب deadline-- نه تنها در این کلاس، 345 00:15:56,080 --> 00:15:58,660 اما another-- زمانی که شما به طور کامل خسته، استرس، 346 00:15:58,660 --> 00:16:00,659 یک تعداد مفرط از چیزهای دیگر انجام دهد. 347 00:16:00,659 --> 00:16:03,660 شما در برخی از نقطه در را زندگی قطعا بد، شاید اواخر 348 00:16:03,660 --> 00:16:04,620 تصمیم شب. 349 00:16:04,620 --> 00:16:06,520 >> بنابراین در برنامه درسی، این بند وجود دارد، 350 00:16:06,520 --> 00:16:10,629 به طوری که اگر ظرف 72 ساعت از زمان برخی از تصمیم گیری های فقیر، شما خود را به آن 351 00:16:10,629 --> 00:16:12,670 و رسیدن به من و یکی از سر درس 352 00:16:12,670 --> 00:16:14,300 و ما یک مکالمه داشته باشد. 353 00:16:14,300 --> 00:16:16,220 ما همه چیز را اداره داخلی در امید 354 00:16:16,220 --> 00:16:18,770 از آن تبدیل شدن به بیشتر از یک لحظه ای آموزش و درس زندگی، 355 00:16:18,770 --> 00:16:22,120 و نه چیزی که با انشعابات به ویژه شدید 356 00:16:22,120 --> 00:16:24,570 که شما ممکن است در این نمودار اینجا را ببینید. 357 00:16:24,570 --> 00:16:26,540 >> به طوری که لحن بسیار جدی است. 358 00:16:26,540 --> 00:16:29,960 اجازه دهید ما فقط برای چند مکث ثانیه برای شکستن تنش است. 359 00:16:29,960 --> 00:16:34,442 >> [MUSIC پخش] 360 00:16:34,442 --> 00:17:17,768 361 00:17:17,768 --> 00:17:20,250 >> DAVID J. مالان: خوب، پس چگونه بود که برای اش Segue؟ 362 00:17:20,250 --> 00:17:22,059 به مباحث اولیه امروز. 363 00:17:22,059 --> 00:17:23,859 اولین بار است که انتزاعی است. 364 00:17:23,859 --> 00:17:26,900 یکی دیگر از آنها در حال رفتن به نمایندگی از داده ها، که رک و پوست کنده 365 00:17:26,900 --> 00:17:31,640 راه واقعا خشک کرد و گفت که ما چگونه است می تواند به مورد حل مشکلات و تفکر 366 00:17:31,640 --> 00:17:33,250 در مورد حل مشکلات؟ 367 00:17:33,250 --> 00:17:37,285 بنابراین شما در ابتدا دیده می شود، و شما در دیده می شود شاید در حال حاضر در pset1 با C 368 00:17:37,285 --> 00:17:39,930 که شما نه تنها می توانید استفاده کنید توابع مانند تابع () printf، 369 00:17:39,930 --> 00:17:42,770 که مردم دیگر در سال گذشته برای شما نوشته است. 370 00:17:42,770 --> 00:17:45,340 شما همچنین می توانید توابع خود را ارسال. 371 00:17:45,340 --> 00:17:48,440 >> و حتی اگر شما ممکن است در C انجام این کار، و رک و پوست کنده در pset1 372 00:17:48,440 --> 00:17:51,866 شما واقعا نیاز به نوشتن خود را عملکرد خود را به این دلیل که problem-- 373 00:17:51,866 --> 00:17:53,990 در حالی که شاید در دلهره آور اولین glance-- خواهید دید 374 00:17:53,990 --> 00:17:57,910 می تواند در نهایت با حل شود نه همه که بسیاری از خط کد. 375 00:17:57,910 --> 00:18:01,140 اما با که گفت، در شرایط از نوشتن تابع خود، 376 00:18:01,140 --> 00:18:03,570 متوجه است که C را می کند شما این قابلیت را. 377 00:18:03,570 --> 00:18:06,940 >> من قصد دارم برای رفتن در کد منبع امروز، که در دسترس است در حال حاضر آنلاین، 378 00:18:06,940 --> 00:18:10,900 و من قصد دارم به جلو بروید و باز یک برنامه به نام تابع 0.C، 379 00:18:10,900 --> 00:18:14,620 و در تابع صفر ما چند چیز را ببینید. 380 00:18:14,620 --> 00:18:19,160 در اولین خط 18 از طریق 23 تابع اصلی من است. 381 00:18:19,160 --> 00:18:22,414 و حالا که ما شروع به عنوان خوانده شده کد که ما در پرواز نوشتن نیست، 382 00:18:22,414 --> 00:18:25,080 اما به جای من در پیش نوشته شده یا این که شما را در یک مشکل تنظیم 383 00:18:25,080 --> 00:18:27,910 ممکن است دریافت داشتن در پیش نوشته شده است. 384 00:18:27,910 --> 00:18:30,040 یک راه خوب برای شروع خواندن کد شخص دیگری 385 00:18:30,040 --> 00:18:31,400 برای تابع اصلی است. 386 00:18:31,400 --> 00:18:34,420 شکل که در آن است که ورود نکته این است که در حال اجرا برنامه، 387 00:18:34,420 --> 00:18:36,580 و سپس آن را دنبال منطقی از وجود دارد. 388 00:18:36,580 --> 00:18:40,190 >> بنابراین این برنامه ظاهرا چاپ نام شما به دنبال یک روده بزرگ است. 389 00:18:40,190 --> 00:18:42,490 پس از آن ما با استفاده از GetString از کتابخانه CS50 390 00:18:42,490 --> 00:18:46,050 برای دریافت یک رشته و یا یک کلمه یا عبارت از کاربر در صفحه کلید. 391 00:18:46,050 --> 00:18:48,390 و پس از آن این وجود دارد چیزی که PrintName here--. 392 00:18:48,390 --> 00:18:51,420 >> در حال حاضر PrintName نمی باشد. تابع است که همراه با C. 393 00:18:51,420 --> 00:18:52,970 این در io.h. استاندارد 394 00:18:52,970 --> 00:18:55,570 این در CS50.h. نمی 395 00:18:55,570 --> 00:18:57,880 این نه در همان فایل. 396 00:18:57,880 --> 00:19:01,000 توجه کنید که اگر من در پایین حرکت خطوط bit-- 25 به 27-- 397 00:19:01,000 --> 00:19:05,330 این فقط یک راه بسیار از اظهار نظر در کد خود را با استفاده از ستاره و اسلش. 398 00:19:05,330 --> 00:19:07,320 این چند خط است اظهار نظر، و این فقط 399 00:19:07,320 --> 00:19:10,570 توضیحات من به رنگ آبی از چه این تابع انجام می دهد. 400 00:19:10,570 --> 00:19:14,530 >> از آنجا که در خطوط 28 تا 31، من یک تابع فوق العاده ساده نوشته شده 401 00:19:14,530 --> 00:19:16,280 نام و نام خانوادگی که PrintName است. 402 00:19:16,280 --> 00:19:19,560 طول می کشد که چگونه بسیاری از استدلال را به شما می گویند؟ 403 00:19:19,560 --> 00:19:25,120 به همین دلیل یک argument-- چرا که یک وجود دارد استدلال ذکر شده در داخل پرانتز. 404 00:19:25,120 --> 00:19:27,000 نوع عبارات که است. 405 00:19:27,000 --> 00:19:30,240 به عبارت PrintName مثل این جعبه سیاه و سفید 406 00:19:30,240 --> 00:19:32,910 و یا تابع است که طول می کشد به عنوان ورودی یک رشته است. 407 00:19:32,910 --> 00:19:35,730 >> و نام آن عبارات به راحتی خواهد شد نام. 408 00:19:35,730 --> 00:19:37,840 نه S، نه N، اما نام. 409 00:19:37,840 --> 00:19:41,090 پس چه PrintName انجام دهید؟ 410 00:19:41,090 --> 00:19:42,210 این خوب ساده است. 411 00:19:42,210 --> 00:19:45,390 فقط به عنوان یک خط کد برای تابع () printf، اما ظاهرا 412 00:19:45,390 --> 00:19:47,950 چاپ از "سلام،" چنین و چنان. 413 00:19:47,950 --> 00:19:50,070 که در آن چنین و چنان می آید از استدلال. 414 00:19:50,070 --> 00:19:52,300 >> در حال حاضر این است که یک نوآوری بزرگ در اینجا نیست. 415 00:19:52,300 --> 00:19:56,710 در واقع، من یک برنامه ای است که می تواند گرفته شده با یک خط کد نوشته شده است 416 00:19:56,710 --> 00:20:00,190 با قرار دادن این تا اینجا، و آن را به چیزی تغییر 417 00:20:00,190 --> 00:20:04,920 که شامل حدود شش یا هفت یا بیشتر خط کد تمام راه را در اینجا. 418 00:20:04,920 --> 00:20:08,190 >> اما این تمرین یک است اصل شناخته شده به عنوان انتزاع. 419 00:20:08,190 --> 00:20:12,550 نوع کپسوله سازی در داخل جدید تابع که دارای نام، و بهتر 420 00:20:12,550 --> 00:20:14,590 در عین حال که به معنای واقعی کلمه نام و نام خانوادگی می گوید آنچه در آن می کند. 421 00:20:14,590 --> 00:20:16,880 منظور من printf-- که نیست به خصوص توصیفی. 422 00:20:16,880 --> 00:20:18,932 اگر من می خواهم برای ایجاد یک قطعه پازل، و یا اگر I 423 00:20:18,932 --> 00:20:21,140 می خواهید برای ایجاد یک تابع چاپ نام شخصی، 424 00:20:21,140 --> 00:20:23,230 زیبایی از انجام این کار این است که من در واقع می تواند 425 00:20:23,230 --> 00:20:27,170 را که تابع نام که توصیف آنچه در آن می کند. 426 00:20:27,170 --> 00:20:29,844 >> در حال حاضر آن را در ورودی می گیرد که I خودسرانه نام نام ام، 427 00:20:29,844 --> 00:20:32,760 اما بیش از حد زیبا و توصیفی به جای اینکه یک کمی بیشتر 428 00:20:32,760 --> 00:20:36,140 عمومی مانند S. و از درجه اعتبار ساقط، در حال حاضر، فقط بدان معناست 429 00:20:36,140 --> 00:20:38,330 که این تابع نیست من دست به عقب هر چیزی. 430 00:20:38,330 --> 00:20:41,127 این GetString را مانند که به معنای واقعی کلمه به من دست به عقب یک رشته 431 00:20:41,127 --> 00:20:43,960 مانند ما با تکه های کاغذ را انجام داد با همکلاسی های خود در هفته گذشته، 432 00:20:43,960 --> 00:20:45,990 بلکه آن را فقط یک اثر جانبی. 433 00:20:45,990 --> 00:20:48,080 این چیزی است که به صفحه نمایش چاپ میکند. 434 00:20:48,080 --> 00:20:53,880 >> بنابراین در پایان روز، اگر من انجام را تابع 0، ./function-0، 435 00:20:53,880 --> 00:20:55,450 خواهیم دید که آن را برای نام من می پرسد. 436 00:20:55,450 --> 00:20:58,150 I تایپ دیوید، و آن نوع از نام من. 437 00:20:58,150 --> 00:21:01,080 اگر من این کار را دوباره با راب، آن را می گویند: "سلام، راب." 438 00:21:01,080 --> 00:21:04,280 بنابراین یک ایده ساده، اما شاید برون یابی از این ذهنی 439 00:21:04,280 --> 00:21:06,750 که به عنوان برنامه های خود را دریافت کنید کمی پیچیده تر است، 440 00:21:06,750 --> 00:21:10,290 و شما می خواهید برای نوشتن یک تکه از کد و تماس که code-- فراخوان 441 00:21:10,290 --> 00:21:13,270 که code-- توسط برخی توصیفی نام مانند PrintName، 442 00:21:13,270 --> 00:21:15,600 C می کند از عهده ما این قابلیت را. 443 00:21:15,600 --> 00:21:17,660 >> در اینجا یکی دیگر از مثال ساده است. 444 00:21:17,660 --> 00:21:22,940 برای مثال، اگر باز من فایل را از امروز به نام return.c، 445 00:21:22,940 --> 00:21:24,270 متوجه آنچه که من در اینجا انجام داده ایم. 446 00:21:24,270 --> 00:21:26,330 بسیاری از این تابع اصلی تابع () printf است. 447 00:21:26,330 --> 00:21:30,360 من برای اولین بار دلخواه مقداردهی اولیه متغیر به نام x به تعداد 2. 448 00:21:30,360 --> 00:21:34,110 من پس از چاپ "X در حال حاضر ٪ من "عبور در مقدار x. 449 00:21:34,110 --> 00:21:35,500 بنابراین من فقط گفت: آنچه در آن است. 450 00:21:35,500 --> 00:21:37,208 >> در حال حاضر من فقط با قاطعیت هستم این ادعا با تابع () printf. 451 00:21:37,208 --> 00:21:42,050 I cubing هستم که مقدار x، و من انجام این کار با یک تابع 452 00:21:42,050 --> 00:21:45,590 نام عبور مکعب در ایکس به عنوان استدلال، 453 00:21:45,590 --> 00:21:49,300 و پس از آن صرفه جویی در خروجی در متغیر خود، ایکس. 454 00:21:49,300 --> 00:21:51,340 پس من ضربه بزند مقدار x. 455 00:21:51,340 --> 00:21:53,380 من فارغ از مقدار x را با هر 456 00:21:53,380 --> 00:21:56,510 در نتیجه تماس این تابع مکعب است. 457 00:21:56,510 --> 00:21:59,530 و بعد من فقط از چاپ برخی چیزهای زده اینجا و گفت که من کردم. 458 00:21:59,530 --> 00:22:01,600 >> پس چه پس از آن مکعب است؟ 459 00:22:01,600 --> 00:22:03,510 توجه کنید چه چیزی اساسا متفاوت است در اینجا. 460 00:22:03,510 --> 00:22:05,540 من تابع داده شده ام یک نام مانند قبل. 461 00:22:05,540 --> 00:22:08,270 من یک نام برای یک آرگومان مشخص شده است. 462 00:22:08,270 --> 00:22:11,650 این بار آن را به نام n را به جای نام، اما من می توانم آن را به هر چیزی من می خواهم تماس بگیرید. 463 00:22:11,650 --> 00:22:12,650 اما این متفاوت است. 464 00:22:12,650 --> 00:22:14,080 این چیزی که در سمت چپ. 465 00:22:14,080 --> 00:22:16,290 پیش از این چه کلمه کلیدی بود؟ 466 00:22:16,290 --> 00:22:16,870 پسران. 467 00:22:16,870 --> 00:22:18,580 در حال حاضر آن بدیهی است که اعضای هیات. 468 00:22:18,580 --> 00:22:20,630 >> بنابراین آنچه که شاید از بین بردن؟ 469 00:22:20,630 --> 00:22:24,090 در حالی که دلالت از درجه اعتبار ساقط مرتب کردن بر اساس هیچ، و مورد بود. 470 00:22:24,090 --> 00:22:25,970 PrintName هیچ چیز بازگشت. 471 00:22:25,970 --> 00:22:27,942 این چیزی است که انجام داد، اما این به من دست نیست 472 00:22:27,942 --> 00:22:30,650 چیزی که من می توانم در قرار داده سمت چپ علامت مساوی 473 00:22:30,650 --> 00:22:32,460 مثل من در اینجا در خط 22 انجام داده ام. 474 00:22:32,460 --> 00:22:36,780 >> بنابراین اگر من به در خط 30 می گویند، چه چیزی است که احتمالا دلالت 475 00:22:36,780 --> 00:22:38,610 در مورد آنچه مکعب می کند برای من؟ 476 00:22:38,610 --> 00:22:41,110 آره؟ 477 00:22:41,110 --> 00:22:42,310 این یک عدد صحیح را برمی گرداند. 478 00:22:42,310 --> 00:22:44,590 پس از آن من دست به، برای، به عنوان مثال، یک تکه کاغذ 479 00:22:44,590 --> 00:22:46,580 که در آن تا به پاسخ نوشته شده است. 480 00:22:46,580 --> 00:22:50,130 2 نبات، و یا 3، نبات، و یا 4 cubed-- هر آنچه که گذشت در، 481 00:22:50,130 --> 00:22:51,540 و چگونه من از این اجرا بود؟ 482 00:22:51,540 --> 00:22:54,810 خوب، فقط n بار n بار نفر این است که چگونه ممکن است ارزش مکعبی. 483 00:22:54,810 --> 00:22:57,110 پس دوباره، فوق العاده ساده ایده است، اما نمایشی 484 00:22:57,110 --> 00:23:00,100 در حال حاضر چگونه ما می توانیم توابع ارسال که در واقع ما به حال پشت 485 00:23:00,100 --> 00:23:02,380 ارزش هایی که ممکن است مورد علاقه باشد. 486 00:23:02,380 --> 00:23:05,740 >> بیایید در یک مثال نگاه در اینجا تابع به نام. 487 00:23:05,740 --> 00:23:08,530 در این مثال، آن شروع می شود برای دریافت قانع کننده تر است. 488 00:23:08,530 --> 00:23:12,400 بنابراین در عملکرد یک، این اطلاع program-- نهایت 489 00:23:12,400 --> 00:23:14,920 خواستار یک تابع به نام GetPositiveInt. 490 00:23:14,920 --> 00:23:17,800 GetPositiveInt نمی باشد. تابع در کتابخانه CS50، 491 00:23:17,800 --> 00:23:20,400 اما ما تصمیم ما می خواهم آن را به وجود دارد. 492 00:23:20,400 --> 00:23:24,550 >> بنابراین اگر ما جواب را بعد از آن در فایل، توجه کنید که چگونه من در مورد اجرای رفت 493 00:23:24,550 --> 00:23:26,560 دریافت هوشمند مثبت، و من می گویند آن را قانع کننده تر 494 00:23:26,560 --> 00:23:28,992 دلیل این است که مناسب و معقول تعداد خط کد. 495 00:23:28,992 --> 00:23:30,700 این فقط یک نداشت برنامه اسباب بازی کوچک. 496 00:23:30,700 --> 00:23:33,870 این در واقع برخی از چک کردن خطا و انجام کاری مفید تر. 497 00:23:33,870 --> 00:23:38,470 >> بنابراین اگر شما خرید دیده ام فیلم ها است که ما در pset1 تعبیه شده، 498 00:23:38,470 --> 00:23:42,350 می دانم که این یک نوع است حلقه در C، در روح مشابه 499 00:23:42,350 --> 00:23:44,270 به نوع چیز خراش می توانید انجام دهید. 500 00:23:44,270 --> 00:23:46,320 و انجام این کار را می گوید. 501 00:23:46,320 --> 00:23:47,500 چاپ این از. 502 00:23:47,500 --> 00:23:51,860 سپس پیش بروید و n-- دریافت هوشمند و ذخیره آن در نفر، 503 00:23:51,860 --> 00:23:55,760 و نگه داشتن انجام این کار دوباره و دوباره و دوباره تا زمانی که نفر کمتر از یک است. 504 00:23:55,760 --> 00:23:58,720 >> بنابراین نفر در حال رفتن به کمتر از یک تنها در صورتی که انسان به همکاری نیست. 505 00:23:58,720 --> 00:24:01,980 اگر او در حال تایپ در 0 یا -1 یا -50، 506 00:24:01,980 --> 00:24:04,790 این حلقه است که به نگه داشتن اجرای دوباره و دوباره. 507 00:24:04,790 --> 00:24:07,549 و در نهایت متوجه، من به سادگی ارزش گشت. 508 00:24:07,549 --> 00:24:09,590 بنابراین در حال حاضر ما باید یک تابع که زیبا شده است 509 00:24:09,590 --> 00:24:14,040 اگر CS50 را پیاده سازی آن در CS50.h و CS50.c برای شما، 510 00:24:14,040 --> 00:24:16,520 اما در اینجا ما در حال حاضر می تواند پیاده سازی این خودمان. 511 00:24:16,520 --> 00:24:19,230 >> اما دو نظر در برخی جزئیات کلیدی است. 512 00:24:19,230 --> 00:24:24,390 One-- چرا من هوشمند اعلام بود نفر، به نظر شما، در خط 29 513 00:24:24,390 --> 00:24:27,139 به جای فقط انجام این در اینجا، است که 514 00:24:27,139 --> 00:24:28,930 سازگار با آنچه که ما در هفته گذشته انجام داد؟ 515 00:24:28,930 --> 00:24:29,430 آره؟ 516 00:24:29,430 --> 00:24:34,485 517 00:24:34,485 --> 00:24:35,110 فکر خوب است. 518 00:24:35,110 --> 00:24:37,080 بنابراین اگر ما آن را قرار داده در اینجا، آن را به عنوان هر چند ما 519 00:24:37,080 --> 00:24:39,110 نگه اعلام آن را دوباره و دوباره. 520 00:24:39,110 --> 00:24:42,000 این به خودی خود است مشکل ساز نیست، در هر سه، 521 00:24:42,000 --> 00:24:43,940 چون ما فقط نیاز ارزش یک بار و پس از آن 522 00:24:43,940 --> 00:24:45,330 ما در حال رفتن به دریافت یک جدید به هر حال. 523 00:24:45,330 --> 00:24:45,940 اما فکر خوب است. 524 00:24:45,940 --> 00:24:46,440 آره؟ 525 00:24:46,440 --> 00:24:52,770 526 00:24:52,770 --> 00:24:53,330 >> نزدیک است. 527 00:24:53,330 --> 00:24:59,030 پس چون من نفر در اعلام کرده ام خط 29 در خارج از حلقه، 528 00:24:59,030 --> 00:25:01,390 آن را در سراسر دسترس این تابع کل. 529 00:25:01,390 --> 00:25:05,400 نه توابع دیگر به دلیل نفر هنوز در داخل این مجعد 530 00:25:05,400 --> 00:25:06,470 آماده مقابله کنید. 531 00:25:06,470 --> 00:25:07,940 So-- مطمئن شوید. 532 00:25:07,940 --> 00:25:12,430 533 00:25:12,430 --> 00:25:12,940 >> دقیقا. 534 00:25:12,940 --> 00:25:14,356 پس این است که حتی بیشتر به نقطه است. 535 00:25:14,356 --> 00:25:18,600 اگر ما به جای اعلام کرد نفر حق در اینجا در خط 32، 536 00:25:18,600 --> 00:25:22,340 این مشکل به دلیل حدس که در آن دیگری من نیاز به آن دسترسی داشته باشید؟ 537 00:25:22,340 --> 00:25:25,620 در خط 34، و قانون سرانگشتی ساده است 538 00:25:25,620 --> 00:25:30,060 که فقط می توان یک متغیر استفاده داخل آکولاد اخیر 539 00:25:30,060 --> 00:25:31,420 که در آن شما آن را اعلام کرد. 540 00:25:31,420 --> 00:25:35,230 >> متاسفانه، خط 34 یک خط است خیلی دیر شده، 541 00:25:35,230 --> 00:25:38,560 چرا که من در حال حاضر بسته ام آکولاد در خط 33 542 00:25:38,560 --> 00:25:41,220 که مربوط به آکولاد در خط 30. 543 00:25:41,220 --> 00:25:44,180 و این روشی برای گفتن است که این متغیر از نوع int مورد نظر است، 544 00:25:44,180 --> 00:25:46,970 پس به صحبت می کنند، به تنها در داخل از آن آکولاد. 545 00:25:46,970 --> 00:25:48,910 آن را فقط به خارج از آنها وجود ندارد. 546 00:25:48,910 --> 00:25:51,580 >> پس در واقع، اگر من این کار اشتباه، اجازه دهید من کد را ذخیره کنید 547 00:25:51,580 --> 00:25:53,530 آن را به عنوان اشتباه is-- نوشته شده است. 548 00:25:53,530 --> 00:25:57,990 اجازه بدهید من به جلو و را تابع 1، و خطا notice--. 549 00:25:57,990 --> 00:26:03,502 استفاده از شناسه های اعلام نشده نفر در خط 35، که به حق در اینجا. 550 00:26:03,502 --> 00:26:05,210 و اگر ما رفته بالا علاوه بر این، یکی دیگر. 551 00:26:05,210 --> 00:26:08,750 استفاده از اعلام نشده شناسه نفر در خط 34. 552 00:26:08,750 --> 00:26:11,200 >> بنابراین کامپایلر، صدای جرنگ جرنگ، است توجه به این که آن را فقط 553 00:26:11,200 --> 00:26:13,720 حتی اگر وجود ندارد به وضوح آن وجود دارد بصری. 554 00:26:13,720 --> 00:26:16,090 بنابراین حل ساده است اعلام آن وجود دارد. 555 00:26:16,090 --> 00:26:18,790 >> در حال حاضر من برای حرکت بالای فایل. 556 00:26:18,790 --> 00:26:21,080 چه جهش در شما به عنوان که کمی متفاوت 557 00:26:21,080 --> 00:26:23,070 از چیزهایی که ما در هفته گذشته نگاه کرد؟ 558 00:26:23,070 --> 00:26:26,990 نه تنها نام من، نه تنها من به برخی از تیز شامل تا بالا، 559 00:26:26,990 --> 00:26:29,340 من چیزی است که من هستم باید تماس یک نمونه اولیه. 560 00:26:29,340 --> 00:26:36,100 حالا که به نظر می رسد awfully مشابه به آنچه ما فقط یک لحظه پیش در خط 27 را دیدم. 561 00:26:36,100 --> 00:26:39,230 >> بنابراین اجازه دهید از استنباط های مختلف پیغام خطا که چرا من این انجام داده ام. 562 00:26:39,230 --> 00:26:42,050 اجازه بدهید من به جلو و حذف این خطوط وجود دارد. 563 00:26:42,050 --> 00:26:44,240 و بنابراین ما هیچ چیزی در مورد نمونه دانم. 564 00:26:44,240 --> 00:26:45,430 بازسازی این فایل. 565 00:26:45,430 --> 00:26:46,890 را تابع یک. 566 00:26:46,890 --> 00:26:48,090 و در حال حاضر، لعنتی، چهار خطا. 567 00:26:48,090 --> 00:26:50,220 اجازه دهید تا رفته به یکی از اولین. 568 00:26:50,220 --> 00:26:55,070 >> بیانیه ضمنی از تابع دریافت اعضای هیات مثبت نامعتبر در C99 است. 569 00:26:55,070 --> 00:26:57,780 C99 فقط بدان معناست که 1999 نسخه از زبان 570 00:26:57,780 --> 00:26:59,710 C، که همان چیزی است که ما در حال در واقع با استفاده از. 571 00:26:59,710 --> 00:27:01,050 پس چه معنی است؟ 572 00:27:01,050 --> 00:27:05,250 خب C-- و به طور خاص C برنامه بسیار گنگ compilers--. 573 00:27:05,250 --> 00:27:07,420 آنها فقط می دانم شما چه کرده اید به آنها گفت، و این 574 00:27:07,420 --> 00:27:08,960 در واقع از هفته گذشته موضوعی. 575 00:27:08,960 --> 00:27:12,910 >> مشکل این است که اگر من به در مورد اجرای نام اینجا، 576 00:27:12,910 --> 00:27:17,640 و من یک تابع به نام تماس GetPositiveInt در اینجا در خط 20، 577 00:27:17,640 --> 00:27:22,520 که عملکرد فنی نمی وجود داشته باشد تا زمانی که کامپایلر خط 27 را می بیند. 578 00:27:22,520 --> 00:27:25,450 متاسفانه، کامپایلر است انجام کارهای بالا، پایین، چپ، راست، 579 00:27:25,450 --> 00:27:29,580 را به دلیل آن را ندیده است اجرای GetPositiveInt، 580 00:27:29,580 --> 00:27:32,400 اما آن را می بیند شما سعی برای استفاده از آن در اینجا، 581 00:27:32,400 --> 00:27:35,810 آن را فقط به bail-- فریاد زدن در شما با خطا message-- شاید 582 00:27:35,810 --> 00:27:38,440 مرموز، و نه در واقع کامپایل فایل. 583 00:27:38,440 --> 00:27:41,940 >> بنابراین یک نمونه اولیه به اصطلاح تا اینجا مسلما کار برکنار شده است. 584 00:27:41,940 --> 00:27:47,870 به معنای واقعی کلمه، من در اینجا رفت و من کپی و جا به جا از این، و من آن را در اینجا. 585 00:27:47,870 --> 00:27:51,020 از درجه اعتبار ساقط خواهد بود مناسب تر است، بنابراین ما می خواهیم به معنای واقعی کلمه را کپی کنید و این زمان آن را وارد کنید. 586 00:27:51,020 --> 00:27:52,854 من به معنای واقعی کلمه کپی و جا به جا می کند. 587 00:27:52,854 --> 00:27:54,270 واقعا فقط به عنوان مثل نان. 588 00:27:54,270 --> 00:27:56,260 >> نشانه کمی به کامپایلر. 589 00:27:56,260 --> 00:27:58,860 من نمی دانم که چه می کند این در عین حال، اما من قول داده به شما 590 00:27:58,860 --> 00:28:00,260 که آن را در نهایت وجود داشته باشد. 591 00:28:00,260 --> 00:28:04,010 و به همین دلیل این line-- در خط 16-- با یک سمی کولن پایان می رسد. 592 00:28:04,010 --> 00:28:05,486 این کار برکنار شده طراحی شده است. 593 00:28:05,486 --> 00:28:05,986 بله؟ 594 00:28:05,986 --> 00:28:11,340 595 00:28:11,340 --> 00:28:14,360 >> اگر شما کتابخانه خود را پیوند کنید به the-- آه، سوال خوب است. 596 00:28:14,360 --> 00:28:17,350 شارپ شامل اجزاء فایل هدر. 597 00:28:17,350 --> 00:28:20,040 نیاز به be-- تقریبا باید همیشه در بالا بسیار است 598 00:28:20,040 --> 00:28:23,270 فایل برای similar-- برای دقیقا به همین دلیل، بله. 599 00:28:23,270 --> 00:28:26,430 از آنجا که در استاندارد io.h است به معنای واقعی کلمه یک خط 600 00:28:26,430 --> 00:28:30,560 شبیه به این، اما با تابع () printf کلمه، و با استدلال و نوع بازگشت آن است. 601 00:28:30,560 --> 00:28:33,310 و به این ترتیب با انجام تیز عبارتند از در اینجا، آنچه که شما به معنای واقعی کلمه انجام می 602 00:28:33,310 --> 00:28:36,380 است کپی و چسباندن محتویات از شخص دیگری نوشت تا بالا. 603 00:28:36,380 --> 00:28:39,660 در نتیجه cluing کد خود را در به واقعیت این است که آن دسته از توابع وجود دارد. 604 00:28:39,660 --> 00:28:40,160 آره؟ 605 00:28:40,160 --> 00:28:47,520 606 00:28:47,520 --> 00:28:48,260 >> کاملا. 607 00:28:48,260 --> 00:28:51,690 بنابراین بسیار هوشمندانه و درست راه حل خواهد بود، شما می دانید چه؟ 608 00:28:51,690 --> 00:28:53,760 من نمی دانم چه نمونه اولیه است، اما من می دانم 609 00:28:53,760 --> 00:28:56,390 اگر من درک می کنم که C است فقط گنگ و تجدید نظر بالا به پایین. 610 00:28:56,390 --> 00:28:57,820 خوب اجازه دهید آن چه آن را می خواهد بدهد. 611 00:28:57,820 --> 00:29:01,650 اجازه دهید به کاهش است که کد، آن را تا چسباندن بالا، و در حال حاضر فشار اصلی پایین پایین. 612 00:29:01,650 --> 00:29:03,470 این بیش از حد مشکل را حل کند. 613 00:29:03,470 --> 00:29:07,409 >> اما شما به راحتی می تواند آمد تا با یک سناریو که در آن نیاز به تماس B، 614 00:29:07,409 --> 00:29:10,075 و شاید B به عقب را به A. این چیزی به نام بازگشت است، 615 00:29:10,075 --> 00:29:11,370 و ما به آن می آیند. 616 00:29:11,370 --> 00:29:13,911 و این ممکن است یا نه ممکن است خوب چیزی، اما شما قطعا می تواند 617 00:29:13,911 --> 00:29:15,110 در این راه حل را بشکند. 618 00:29:15,110 --> 00:29:17,690 >> و علاوه بر این، من ادعا می کنند سبک، 619 00:29:17,690 --> 00:29:20,760 به ویژه هنگامی که برنامه های خود را تبدیل این مدت و در این مدت، 620 00:29:20,760 --> 00:29:23,064 آن را فقط فوق العاده مناسب برای قرار دادن اصلی در بالای 621 00:29:23,064 --> 00:29:25,730 زیرا این چیزی بیشتر برنامه نویسان در حال رفتن به در مورد مراقبت. 622 00:29:25,730 --> 00:29:28,150 و پس از آن پاک کن کمی، مسلما، این کار را انجام راه 623 00:29:28,150 --> 00:29:30,380 من در اصل این کار را کرد با یک نمونه اولیه حتی 624 00:29:30,380 --> 00:29:33,396 هر چند که به نظر می رسد کمی کار برکنار شده در نگاه اول. 625 00:29:33,396 --> 00:29:33,895 آره؟ 626 00:29:33,895 --> 00:29:36,472 627 00:29:36,472 --> 00:29:37,680 با عرض پوزش، می تواند به شما آن را با صدای بلند می گویند؟ 628 00:29:37,680 --> 00:29:45,650 629 00:29:45,650 --> 00:29:49,580 >> اگر شما از مکان های از تغییر اجرا و نمونه اولیه؟ 630 00:29:49,580 --> 00:29:51,270 به طوری که سوال خوبی است. 631 00:29:51,270 --> 00:29:53,780 اگر شما دوباره اعلام این پایین در اینجا، بیایید ببینید چه اتفاقی می افتد. 632 00:29:53,780 --> 00:29:55,530 بنابراین اگر من قرار این پایین در اینجا، شما می گویید. 633 00:29:55,530 --> 00:29:57,860 634 00:29:57,860 --> 00:29:58,360 اوه، ببخشید. 635 00:29:58,360 --> 00:29:58,859 بلندتر؟ 636 00:29:58,859 --> 00:30:02,000 637 00:30:02,000 --> 00:30:04,011 حتی بلندتر. 638 00:30:04,011 --> 00:30:04,760 اوه، سوال خوب است. 639 00:30:04,760 --> 00:30:05,860 آیا آن را از درجه اعتبار ساقط تابع؟ 640 00:30:05,860 --> 00:30:08,901 شما می دانید، بعد از این همه سال، I هرگز یک نمونه اولیه قرار داده پس از آن. 641 00:30:08,901 --> 00:30:13,810 بنابراین اجازه دهید کار را انجام را تابع 1 بعد از انجام این کار. 642 00:30:13,810 --> 00:30:15,279 >> [غرغر] 643 00:30:15,279 --> 00:30:16,320 DAVID J. مالان: اوه، صبر کنید. 644 00:30:16,320 --> 00:30:17,944 ما هنوز برای قرار دادن همه چیز را تا بالا. 645 00:30:17,944 --> 00:30:21,400 بنابراین اجازه دهید این کار را تا اینجا، اگر من درک سوال خود را به درستی. 646 00:30:21,400 --> 00:30:24,700 من قرار دادن همه چیز، از جمله نمونه فوق اصلی، 647 00:30:24,700 --> 00:30:28,180 اما من قرار دادن نمونه در زیر پیاده سازی. 648 00:30:28,180 --> 00:30:33,190 >> بنابراین اگر من را یک، من گرفتن بازگشت متغیر n استفاده نشده error--. 649 00:30:33,190 --> 00:30:37,280 650 00:30:37,280 --> 00:30:37,860 اوه، وجود دارد. 651 00:30:37,860 --> 00:30:38,360 با تشکر از شما. 652 00:30:38,360 --> 00:30:39,430 بیایید ببینید، ما خلاصی از این. 653 00:30:39,430 --> 00:30:41,304 این یک اشکال مختلف، پس بیایید چشم پوشی است. 654 00:30:41,304 --> 00:30:43,910 بیایید واقعا به سرعت این بازسازی. 655 00:30:43,910 --> 00:30:48,100 >> OK، بنابراین بحث داده نشده است مورد استفاده توسط قالب عبارات 656 00:30:48,100 --> 00:30:52,310 n-- آه، چرا که من به این اینجا تغییر کرده است. 657 00:30:52,310 --> 00:30:55,885 همه حق است، ما می دانیم چه پاسخ است که to-- همه حق است، در اینجا ما بروید. 658 00:30:55,885 --> 00:31:00,560 آه، با تشکر برای مثبت است. 659 00:31:00,560 --> 00:31:03,430 خوب، من این کد تعمیر after-- چشم پوشی از این مشکلات خاص 660 00:31:03,430 --> 00:31:08,300 از آنجایی که این was-- کار می کند پاسخ است. 661 00:31:08,300 --> 00:31:11,560 >> پس از آن بازنویسی کنید آنچه شما فقط انجام داده ام. 662 00:31:11,560 --> 00:31:14,800 I کامپایلر مشکوک است به گونه ای نوشته شده است 663 00:31:14,800 --> 00:31:18,420 آن است که نادیده گرفتن نمونه شما چون بدن، پس به صحبت می کنند، 664 00:31:18,420 --> 00:31:20,922 از تابع در حال حاضر اجرا شده است بالاتر است. 665 00:31:20,922 --> 00:31:23,380 من می خواهم که به واقع مشورت کتابچه راهنمای کامپایلر 666 00:31:23,380 --> 00:31:26,171 به درک اگر هر گونه دیگر وجود دارد مفهوم، اما در نگاه اول 667 00:31:26,171 --> 00:31:29,290 فقط با تلاش و تجربه، به نظر می رسد هیچ تاثیری وجود دارد. 668 00:31:29,290 --> 00:31:30,730 سوال خوب. 669 00:31:30,730 --> 00:31:33,660 >> بنابراین اجازه دهید جعل جلوتر در حال حاضر، در حال حرکت به دور از عوارض جانبی که 670 00:31:33,660 --> 00:31:36,660 توابع است که انجام کاری مانند بصری بر روی صفحه نمایش با تابع () printf، 671 00:31:36,660 --> 00:31:38,090 اما هیچ مقداری باز است. 672 00:31:38,090 --> 00:31:41,550 و توابع که بازگشت ارزش مانند ما فقط دیدم چند از. 673 00:31:41,550 --> 00:31:45,350 ما در حال حاضر شاهد این مفهوم دامنه، و ما این را دوباره و دوباره ببینید. 674 00:31:45,350 --> 00:31:47,210 اما در حال حاضر، دوباره، استفاده از قاعده کلی 675 00:31:47,210 --> 00:31:51,410 که یک متغیر تنها می تواند مورد استفاده قرار گیرد در داخل از مهمترین و به تازگی افتتاح شد 676 00:31:51,410 --> 00:31:54,350 و آکولاد بسته به عنوان ما در این مثال خاص دیدم. 677 00:31:54,350 --> 00:31:56,910 >> و به عنوان شما اشاره کرد، است ability-- وجود دارد 678 00:31:56,910 --> 00:32:00,040 شما می توانید از برخی از این مشکلات را حل کند با قرار دادن یک متغیر در سطح جهان 679 00:32:00,040 --> 00:32:01,290 در سطوح بسیار بالای از یک فایل. 680 00:32:01,290 --> 00:32:03,630 اما تقریبا در همه موارد ما را بر اساس آن اخم، 681 00:32:03,630 --> 00:32:06,170 و در واقع حتی به به این راه حل در حال حاضر. 682 00:32:06,170 --> 00:32:09,890 بنابراین در حال حاضر، غذای آماده است که متغیرهای این مفهوم دامنه. 683 00:32:09,890 --> 00:32:13,430 >> اما در حال حاضر اجازه دهید نگاهی به یکی دیگر از نگاه راه خشک در واقع به دنبال 684 00:32:13,430 --> 00:32:15,810 در برخی از جالب جزئیات پیاده سازی. 685 00:32:15,810 --> 00:32:17,810 چگونه ما ممکن است اطلاعات را نمایندگی کند. 686 00:32:17,810 --> 00:32:20,370 و ما در حال حاضر در این نگاه در هفته اول از کلاس. 687 00:32:20,370 --> 00:32:23,320 با نگاهی به باینری، و یادآوری خودمان را از اعشار. 688 00:32:23,320 --> 00:32:28,310 >> اما به خاطر از هفته گذشته که C است انواع داده های مختلف و خوشه تر، 689 00:32:28,310 --> 00:32:30,600 اما آنهایی که مفید ترین در حال حاضر ممکن است این. 690 00:32:30,600 --> 00:32:36,030 کاراکتر یا شخصیت، که اتفاق می افتد به یک بایت و یا هشت بیت در کل. 691 00:32:36,030 --> 00:32:40,060 و این که می گویند که به اندازه یک کاراکتر تنها با یک بایت است. 692 00:32:40,060 --> 00:32:45,370 یک بایت هشت بیت است، بنابراین این بدان معنی است که ما می توانیم که چگونه بسیاری از شخصیت های نمایندگی کند. 693 00:32:45,370 --> 00:32:47,320 چگونه بسیاری از حروف یا کاراکتر بر روی صفحه کلید 694 00:32:47,320 --> 00:32:49,210 اگر ما یک بایت و یا هشت بیت است. 695 00:32:49,210 --> 00:32:51,546 فکر می کنم به هفته صفر است. 696 00:32:51,546 --> 00:32:53,420 اگر شما هشت بیت، چگونه بسیاری از کل ارزش 697 00:32:53,420 --> 00:32:55,503 شما می توانید با نشان دادن الگوهای صفر و آنهایی که؟ 698 00:32:55,503 --> 00:32:58,170 699 00:32:58,170 --> 00:33:00,260 One-- بیشتر از آن. 700 00:33:00,260 --> 00:33:03,490 بنابراین 256 کل اگر شما شروع به شمارش از صفر است. 701 00:33:03,490 --> 00:33:07,120 بنابراین اگر شما هشت bits-- اگر ما حال لامپ های باینری ما در اینجا دوباره، 702 00:33:07,120 --> 00:33:12,180 ما می تواند آن لامپ را روشن و خاموش در هر یک از 256 الگوهای منحصر به فرد. 703 00:33:12,180 --> 00:33:13,640 >> در حال حاضر این است که کمی مشکل ساز است. 704 00:33:13,640 --> 00:33:16,857 خیلی نه برای زبان انگلیسی و زبان عشق، اما مطمئنا 705 00:33:16,857 --> 00:33:19,190 زمانی که معرفی کنید، برای به عنوان مثال، زبان های آسیایی، که 706 00:33:19,190 --> 00:33:22,580 دارای نمادهای بسیار بیشتر از مثل 26 حروف الفبا. 707 00:33:22,580 --> 00:33:24,390 ما در واقع ممکن است نیاز بیش از یک بایت. 708 00:33:24,390 --> 00:33:28,240 و خدا را شکر در سال اخیر است جامعه 709 00:33:28,240 --> 00:33:31,040 استانداردهای دیگر به تصویب رسید که با استفاده از بیش از یک بایت در هر بار. 710 00:33:31,040 --> 00:33:34,210 >> اما در حال حاضر در C، به طور پیش فرض فقط یک بایت و یا هشت بیت است. 711 00:33:34,210 --> 00:33:38,195 یک عدد صحیح، در عین حال، چهار است بایت، در غیر این صورت به عنوان 32 بیت شناخته شده است. 712 00:33:38,195 --> 00:33:41,320 که بدان معنی است آنچه که بزرگترین ممکن تعداد ما می توانیم با اعضای هیات نمایندگی 713 00:33:41,320 --> 00:33:41,820 ظاهرا؟ 714 00:33:41,820 --> 00:33:44,426 715 00:33:44,426 --> 00:33:45,050 با یک میلیارد. 716 00:33:45,050 --> 00:33:46,760 پس از آن چهار میلیارد دادن یا گرفتن است. 717 00:33:46,760 --> 00:33:49,840 2 به قدرت 32th، اگر ما فرض کنیم هیچ عدد منفی 718 00:33:49,840 --> 00:33:52,530 و فقط استفاده از تمام مثبت شماره، آن را چهار میلیارد 719 00:33:52,530 --> 00:33:53,730 را و یا احتمالات را. 720 00:33:53,730 --> 00:33:57,890 شناور، در عین حال، یک نوع متفاوت است از نوع داده ها در C. این هنوز تعداد، 721 00:33:57,890 --> 00:33:58,990 اما آن را یک عدد حقیقی است. 722 00:33:58,990 --> 00:34:00,660 چیزی با نقطه اعشار. 723 00:34:00,660 --> 00:34:03,000 و معلوم است که C همچنین با استفاده از چهار بایت 724 00:34:03,000 --> 00:34:05,340 برای نشان دادن ارزشهای ممیز شناور. 725 00:34:05,340 --> 00:34:09,420 >> متاسفانه که چگونه بسیاری از شناور ارزش نقطه در جهان وجود دارد؟ 726 00:34:09,420 --> 00:34:11,582 چگونه بسیاری از اعداد حقیقی وجود دارد؟ 727 00:34:11,582 --> 00:34:13,540 یک بی نهایت وجود دارد تعداد، و برای همین موضوع 728 00:34:13,540 --> 00:34:15,164 یک تعداد نامحدود از اعداد صحیح وجود دارد. 729 00:34:15,164 --> 00:34:18,070 بنابراین ما در حال حاضر نوع هستند حفر خودمان یک سوراخ اینجا. 730 00:34:18,070 --> 00:34:21,780 به موجب آن ظاهرا در computers-- در حداقل برنامه ها در C نوشته شده است در them-- 731 00:34:21,780 --> 00:34:24,110 تنها می تواند تعداد عنوان بالا به عنوان چهار میلیارد دادن یا گرفتن، 732 00:34:24,110 --> 00:34:26,260 و شناور مقادیر نقطه تنها می تواند ظاهرا 733 00:34:26,260 --> 00:34:28,330 برخی از مقدار محدود از دقت. 734 00:34:28,330 --> 00:34:30,810 فقط تا بسیاری از رقم بعد نقطه اعشار است. 735 00:34:30,810 --> 00:34:32,822 >> از آنجا که، البته، اگر شما فقط 32 بیت داشته باشد، 736 00:34:32,822 --> 00:34:36,030 من نمی دانم که چگونه ما قصد داریم تا در مورد رفتن نمایندگی numbers-- واقعی احتمالا 737 00:34:36,030 --> 00:34:37,409 با انواع مختلف الگوهای. 738 00:34:37,409 --> 00:34:40,030 اما مطمئنا محدود وجود دارد تعداد این الگوها، 739 00:34:40,030 --> 00:34:41,830 بنابراین در اینجا، بیش از حد، این مشکل ساز است. 740 00:34:41,830 --> 00:34:43,710 >> در حال حاضر ما می تواند مشکل را کمی اجتناب کنند. 741 00:34:43,710 --> 00:34:45,710 اگر شما یک شناور استفاده نمی کند، شما می توانید از دو برابر استفاده 742 00:34:45,710 --> 00:34:50,230 در C، که به شما می دهد هشت بایت، که الگوهای احتمالی راه بیشتر از صفر است 743 00:34:50,230 --> 00:34:50,730 و آنهایی که. 744 00:34:50,730 --> 00:34:55,199 اما هنوز محدود است، که رفتن به تواند مشکل ساز باشد اگر شما ارسال نرم افزار 745 00:34:55,199 --> 00:34:57,670 برای گرافیک یا فانتزی فرمولهای ریاضی. 746 00:34:57,670 --> 00:35:00,410 بنابراین شما ممکن است در واقع می خواهم به دفعات مشاهده شده تا بزرگتر از آن است. 747 00:35:00,410 --> 00:35:05,640 طولانی long-- ابلهانه named-- همچنین هشت بایت یا 64 بیت، 748 00:35:05,640 --> 00:35:10,260 و این دو بار تا زمانی که یک int، و آن را برای یک مقدار عدد صحیح بلند است. 749 00:35:10,260 --> 00:35:15,655 >> fact-- پاپ اگر یک int چهار بایت است، چه مدت طولانی در C به طور معمول است؟ 750 00:35:15,655 --> 00:35:18,290 751 00:35:18,290 --> 00:35:21,560 همچنین چهار بایت، اما بلند بلند هشت بایت است، 752 00:35:21,560 --> 00:35:23,050 و این است به دلایل تاریخی. 753 00:35:23,050 --> 00:35:26,450 >> اما غذای آماده ساعت است که فقط داده است 754 00:35:26,450 --> 00:35:29,625 در یک computer-- که به نمایندگی یک دستگاه فیزیکی با برق، 755 00:35:29,625 --> 00:35:32,190 آن را به طور کلی رانندگی آن صفر و ones-- 756 00:35:32,190 --> 00:35:34,320 با مقدار محدود از دقت. 757 00:35:34,320 --> 00:35:35,620 پس مشکل را پس از آن؟ 758 00:35:35,620 --> 00:35:37,480 >> خب یک مشکل وجود دارد از سرریز عدد صحیح. 759 00:35:37,480 --> 00:35:39,780 نه فقط در C، اما در کامپیوتر به طور کلی. 760 00:35:39,780 --> 00:35:42,590 به عنوان مثال، در صورتی که این یک بایت است به ارزش یک bit-- 761 00:35:42,590 --> 00:35:45,120 بنابراین اگر این هشت bit-- تمام است که در حال شماره یک. 762 00:35:45,120 --> 00:35:47,300 چه تعداد از این است نمایندگی اگر فرض کنیم 763 00:35:47,300 --> 00:35:50,730 این همه ارزش های مثبت در دودویی؟ 764 00:35:50,730 --> 00:35:54,410 >> 255، و آن را 256 نیست، چرا که صفر به پایین ترین تعداد است. 765 00:35:54,410 --> 00:35:56,760 پس 255 بالاترین است یکی است، اما مشکل 766 00:35:56,760 --> 00:36:00,330 فرض کنید که من می خواستم افزایش این متغیر که 767 00:36:00,330 --> 00:36:04,030 با استفاده از هشت بیت کل اگر من می خواهم به آن را افزایش. 768 00:36:04,030 --> 00:36:07,160 >> خب به محض اضافه کنم یکی به همه این عزیزان، 769 00:36:07,160 --> 00:36:10,500 شما می توانید تصور کنید شاید visually-- فقط مانند حمل یک با استفاده از decimals-- 770 00:36:10,500 --> 00:36:12,300 چیزی برای رفتن به جریان به سمت چپ. 771 00:36:12,300 --> 00:36:15,590 و در واقع، اگر من اضافه کردن تعداد یکی از این، چه در باینری اتفاق می افتد 772 00:36:15,590 --> 00:36:17,670 است که آن را به صفر سرریز. 773 00:36:17,670 --> 00:36:21,730 >> بنابراین اگر شما فقط use-- اعضای هیات نیست، اما یک بایت به تعداد اعداد صحیح 774 00:36:21,730 --> 00:36:27,170 در یک برنامه، توسط default-- به محض شما را به 250 دریافت، 251، 252، 253، 254، 775 00:36:27,170 --> 00:36:32,710 255-- 0 پس از 255، که ممکن است چه 776 00:36:32,710 --> 00:36:34,790 یک کاربر است که به انتظار. 777 00:36:34,790 --> 00:36:39,620 >> در حال حاضر در عین حال در نقطه جهان شناور، شما همچنین مشکل مشابه داشته باشد. 778 00:36:39,620 --> 00:36:42,670 نه زیاد با بزرگترین number-- هر چند که مسئله هنوز. 779 00:36:42,670 --> 00:36:45,360 اما با مقدار دقت که شما می توانید نمایندگی کند. 780 00:36:45,360 --> 00:36:49,490 بنابراین اجازه دهید نگاهی به این مثال در اینجا نیز از code-- منبع امروز 781 00:36:49,490 --> 00:36:52,070 شناور-0.c. 782 00:36:52,070 --> 00:36:54,280 >> و متوجه آن فوق العاده است برنامه ساده است که 783 00:36:54,280 --> 00:36:56,580 باید ظاهرا نسخه قابل چاپ کردن چه مقدار؟ 784 00:36:56,580 --> 00:37:00,777 785 00:37:00,777 --> 00:37:04,110 نظر شما در شرطبندی این است که برای چاپ حتی اگر یک بیت از نحو جدید وجود دارد 786 00:37:04,110 --> 00:37:05,540 اینجا؟ 787 00:37:05,540 --> 00:37:06,700 پس امیدوارم 0.1. 788 00:37:06,700 --> 00:37:10,000 بنابراین معادل یک دهم چرا که من انجام می دهند 1 تقسیم بر 10. 789 00:37:10,000 --> 00:37:12,430 من ذخیره سازی پاسخ در یک متغیر به نام ج. 790 00:37:12,430 --> 00:37:15,850 این متغیر از نوع float است، که یک کلمه کلیدی من فقط پیشنهاد وجود داشته است. 791 00:37:15,850 --> 00:37:18,910 >> ما این را دیده ام و نه قبل از، اما این نوع از راه شسته و رفته در تابع () printf است 792 00:37:18,910 --> 00:37:22,110 برای مشخص کردن که چگونه بسیاری از ارقام شما می خواهند پس از نقطه اعشار را ببینید. 793 00:37:22,110 --> 00:37:25,020 بنابراین این نماد فقط بدان معناست که در اینجا یک حفره یا سوراخ است. 794 00:37:25,020 --> 00:37:27,900 این برای یک نقطه شناور است ارزش، و آه، توسط راه، 795 00:37:27,900 --> 00:37:31,389 آن را با نقطه اعشار با نشان یک عدد بعد از نقطه اعشار. 796 00:37:31,389 --> 00:37:33,180 به طوری که تعداد است از ارقام مهم، 797 00:37:33,180 --> 00:37:34,650 پس به صحبت می کنند، که شما ممکن است بخواهید. 798 00:37:34,650 --> 00:37:40,450 >> بنابراین، اجازه دهید به جلو و انجام را شناور-0، ./float-0، 799 00:37:40,450 --> 00:37:46,660 و ظاهرا 1 تقسیم بر 10 0.0 می باشد. 800 00:37:46,660 --> 00:37:47,760 حالا چرا این؟ 801 00:37:47,760 --> 00:37:51,380 >> خوب دوباره، کامپیوتر در نظر گرفتن من به معنای واقعی کلمه، و من نوشته ام 1 802 00:37:51,380 --> 00:37:56,680 و من نوشته شده است 10، و حدس بزنید چه نوع داده در نظر گرفته شده برای آن دو است 803 00:37:56,680 --> 00:37:58,440 ارزش؟ 804 00:37:58,440 --> 00:38:00,970 اعضای هیات، آن را از لحاظ فنی چیزی کمی متفاوت است. 805 00:38:00,970 --> 00:38:04,150 این به طور معمول طولانی است، اما آن را در نهایت یک مقدار انتگرال. 806 00:38:04,150 --> 00:38:06,030 یک مقدار ممیز شناور. 807 00:38:06,030 --> 00:38:09,456 >> کدام است برای گفتن که اگر این یک int است و این یک int است، 808 00:38:09,456 --> 00:38:11,830 مشکل این است که کامپیوتر می کند توانایی ندارد 809 00:38:11,830 --> 00:38:13,680 حتی آن نقطه اعشاری را ذخیره کنید. 810 00:38:13,680 --> 00:38:16,430 بنابراین، هنگامی که شما انجام 1 تقسیم 10 با استفاده از اعداد صحیح 811 00:38:16,430 --> 00:38:20,950 برای هر دو صورت کسر و مخرج، پاسخ باید 0.1 باشد. 812 00:38:20,950 --> 00:38:24,930 اما به دلیل computer-- کسانی که integers-- 813 00:38:24,930 --> 00:38:27,430 نمی داند که چه کاری انجام دهید با 0.1. 814 00:38:27,430 --> 00:38:30,010 >> پس چه شده است آن را به وضوح انجام می دهند؟ 815 00:38:30,010 --> 00:38:33,120 این فقط آن را دور انداختن، و آنچه من در نهایت از دیدن 816 00:38:33,120 --> 00:38:38,830 0.0 است فقط به این دلیل من اصرار داشت که تابع () printf من یک نقطه اعشار نشان می دهد. 817 00:38:38,830 --> 00:38:41,740 اما مشکل این است که اگر شما یک عدد صحیح بر یک عدد صحیح تقسیم، 818 00:38:41,740 --> 00:38:44,347 شما تعریف get-- از C-- یک عدد صحیح. 819 00:38:44,347 --> 00:38:46,680 و آن را به انجام چیزی خوب و راحتی 820 00:38:46,680 --> 00:38:49,040 مانند دور آن را به نزدیکترین یکی بالا یا پایین. 821 00:38:49,040 --> 00:38:51,860 آن را برای کوتاه کردن همه چیز بعد از اعشار. 822 00:38:51,860 --> 00:38:54,030 >> پس فقط به طور مستقیم، آنچه احتمالا ثابت؟ 823 00:38:54,030 --> 00:38:55,351 ساده ترین راه حل اینجا چه خبر؟ 824 00:38:55,351 --> 00:38:55,850 آره؟ 825 00:38:55,850 --> 00:39:00,570 826 00:39:00,570 --> 00:39:01,100 دقیقا. 827 00:39:01,100 --> 00:39:04,200 چرا ما نه تنها این درمان به عنوان ارزش ممیز شناور به طور موثر 828 00:39:04,200 --> 00:39:05,860 تبدیل آنها به شناور یا دو برابر. 829 00:39:05,860 --> 00:39:10,500 و در حال حاضر اگر من را شناور-0، یا اگر من شناور-1 کامپایل، 830 00:39:10,500 --> 00:39:12,570 که یکسان است به است چه چیزی پیشنهاد شد. 831 00:39:12,570 --> 00:39:16,400 و در حال حاضر من شناور-0، در حال حاضر من 0.1 من. 832 00:39:16,400 --> 00:39:17,234 >> در حال حاضر این شگفت انگیز است. 833 00:39:17,234 --> 00:39:19,441 اما در حال حاضر من قصد دارم به انجام چیزی کمی متفاوت است. 834 00:39:19,441 --> 00:39:22,280 من کنجکاو هستم برای دیدن آنچه که واقعا در رفتن در زیر هود، 835 00:39:22,280 --> 00:39:26,050 و من قصد دارم برای چاپ این به 28 رقم اعشار. 836 00:39:26,050 --> 00:39:29,730 من می خواهم به واقعا 0.1000-- infinite-- 837 00:39:29,730 --> 00:39:32,710 [نامفهوم] 27 صفر بعد از آن 0.1. 838 00:39:32,710 --> 00:39:34,740 >> خب بیایید ببینید که اگر این آنچه که من در واقع دریافت کنید. 839 00:39:34,740 --> 00:39:39,430 را شناور-0 همان فایل. 840 00:39:39,430 --> 00:39:41,150 ./floats-0. 841 00:39:41,150 --> 00:39:44,380 اجازه دهید به زوم بر روی پاسخ های دراماتیک. 842 00:39:44,380 --> 00:39:49,980 در تمام این مدت، شما فکر بوده ام 1 تقسیم بر 10 10٪ یا 0.1 است. 843 00:39:49,980 --> 00:39:50,810 این طور نیست. 844 00:39:50,810 --> 00:39:53,210 حداقل تا آنجا که به کامپیوتر نگران است. 845 00:39:53,210 --> 00:39:57,060 >> در حال حاضر why-- OK، که کامل دروغ 1 تقسیم بر 10 0.1 می باشد. 846 00:39:57,060 --> 00:39:59,710 اما why-- که نیست غذای آماده است. 847 00:39:59,710 --> 00:40:04,010 پس چرا کامپیوتر فکر می کنم، بر خلاف همه ما در اتاق، 848 00:40:04,010 --> 00:40:06,870 که 1 تقسیم بر 10 است در واقع است که ارزش دیوانه؟ 849 00:40:06,870 --> 00:40:10,620 کامپیوتر انجام ظاهرا چه خبر؟ 850 00:40:10,620 --> 00:40:12,490 آن چیست؟ 851 00:40:12,490 --> 00:40:13,785 >> این سرریز نیست، در هر سه. 852 00:40:13,785 --> 00:40:15,910 سرریز است به طور معمول وقتی شما بسته بندی کردن در اطراف یک مقدار است. 853 00:40:15,910 --> 00:40:18,970 این مسئله از عدم دقت در در یک مقدار اعشاری 854 00:40:18,970 --> 00:40:22,220 که در آن شما تنها 32 دارند و یا شاید حتی 64 بیتی. 855 00:40:22,220 --> 00:40:25,230 اما اگر بی نهایت وجود دارد تعداد numbers-- واقعی 856 00:40:25,230 --> 00:40:27,940 اعداد را با نقطه اعشاری و شماره thereafter-- قطعا 857 00:40:27,940 --> 00:40:29,380 شما می توانید همه آنها را نمایندگی نمی کنند. 858 00:40:29,380 --> 00:40:32,870 بنابراین کامپیوتر داده است ما نزدیک ترین بازی 859 00:40:32,870 --> 00:40:37,090 به ارزش آن می تواند نشان دهنده استفاده از آن بیت های بسیاری برای ارزش من در واقع می خواهم، 860 00:40:37,090 --> 00:40:38,690 که 0.1 است. 861 00:40:38,690 --> 00:40:40,685 >> متاسفانه، اگر شما شروع به انجام ریاضی و یا شما 862 00:40:40,685 --> 00:40:44,360 شروع که شامل این نوع از شناور ارزش نقطه در programs-- مهم 863 00:40:44,360 --> 00:40:46,770 نرم افزار های مالی، هر چیزی software-- نظامی 864 00:40:46,770 --> 00:40:49,090 که در آن ادراک است احتمالا بسیار مهم است. 865 00:40:49,090 --> 00:40:51,520 و شما شروع به اضافه کردن تعداد مانند این، و شروع 866 00:40:51,520 --> 00:40:54,050 در حال اجرا است که نرم افزار با ورودی های واقعا بزرگ 867 00:40:54,050 --> 00:40:56,890 و یا برای بسیاری از ساعت و یا مقدار زیادی از روز و یا مقدار زیادی از سال، 868 00:40:56,890 --> 00:41:01,060 این اشتباهات کمی کوچک قطعا می تواند در طول زمان اضافه کردن. 869 00:41:01,060 --> 00:41:04,252 >> در حال حاضر به عنوان یک به کنار، تا کنون اگر شما در مشاهده سوپرمن 3 یا فضای دفتر 870 00:41:04,252 --> 00:41:05,960 و شما ممکن است به یاد می آورند چگونه آن بچه ها به سرقت برده 871 00:41:05,960 --> 00:41:08,668 مقدار زیادی از پول را از کامپیوتر خود با استفاده از مقادیر ممیز شناور 872 00:41:08,668 --> 00:41:11,290 و اضافه کردن کمی باقی مانده، امیدوارم که فیلم 873 00:41:11,290 --> 00:41:12,390 اکنون حس می کند بیشتر است. 874 00:41:12,390 --> 00:41:14,930 این چیزی است که آنها اشاره به در آن فیلم. 875 00:41:14,930 --> 00:41:16,710 واقعیت این است که بیشتر شرکت نمی نگاه 876 00:41:16,710 --> 00:41:18,600 پس از تعداد معینی از رقم اعشار، 877 00:41:18,600 --> 00:41:20,009 ولی برای کسانی که کسری از سنت می باشد. 878 00:41:20,009 --> 00:41:22,550 بنابراین شما شروع به آنها اضافه کردن، شما شروع به ساختن پول زیادی 879 00:41:22,550 --> 00:41:23,424 در حساب بانکی شما. 880 00:41:23,424 --> 00:41:25,160 به طوری که فضای دفتر توضیح داد. 881 00:41:25,160 --> 00:41:28,220 >> در حال حاضر متاسفانه فراتر از فضای دفتر، وجود دارد 882 00:41:28,220 --> 00:41:31,794 برخی از مشروع نگران و اثرات قابل توجه 883 00:41:31,794 --> 00:41:33,710 از این نوع از تصمیم گیری های طراحی زمینه ای، 884 00:41:33,710 --> 00:41:35,990 و در واقع یکی از دلایل استفاده می کنیم C در این دوره 885 00:41:35,990 --> 00:41:39,640 است به طوری که شما واقعا این زمین تا درک درستی از نحوه کار کامپیوتر، 886 00:41:39,640 --> 00:41:42,440 چگونه نرم افزار کار می کند، و نمی را هیچ چیز را برای اعطا. 887 00:41:42,440 --> 00:41:45,820 >> و در واقع متاسفانه، حتی با که درک اساسی، 888 00:41:45,820 --> 00:41:47,370 ما انسان ها اشتباه می کنند. 889 00:41:47,370 --> 00:41:51,310 و چیزی که من فکر کردم من می خواهم به اشتراک بگذارید این فیلم هشت دقیقه اینجا گرفته 890 00:41:51,310 --> 00:41:56,980 از قسمت امکانات مدرن است که نشان می دهد آموزشی درباره چگونگی کار 891 00:41:56,980 --> 00:42:00,370 که رنگ دو عکس از زمانی که استفاده نادرست 892 00:42:00,370 --> 00:42:02,540 و درک ارزش ممیز شناور 893 00:42:02,540 --> 00:42:05,610 منجر به برخی از مهم نتایج مایه تاسف است. 894 00:42:05,610 --> 00:42:06,363 اجازه دهید یک نگاه. 895 00:42:06,363 --> 00:42:07,029 [VIDEO پخش] 896 00:42:07,029 --> 00:42:11,290 ما با در حال حاضر به "مهندسی بازگشت حوادث "در امکانات مدرن. 897 00:42:11,290 --> 00:42:12,940 کامپیوترها. 898 00:42:12,940 --> 00:42:15,580 ما همه آمده ام تا شرایط مشکلات اغلب نا امید کننده است که 899 00:42:15,580 --> 00:42:20,960 کردم با them-- اشکالات، ویروس ها، و glitches-- نرم افزار برای قیمت های کوچک 900 00:42:20,960 --> 00:42:23,100 برای راحتی پرداخت. 901 00:42:23,100 --> 00:42:27,770 اما در تکنولوژی پیشرفته و سرعت بالا نظامی و برنامه های فضایی برنامه های کاربردی، 902 00:42:27,770 --> 00:42:32,780 کوچکترین مشکل می تواند توان به فاجعه بزرگ. 903 00:42:32,780 --> 00:42:38,880 >> در 4 ژوئن 1996، دانشمندان آماده برای راه اندازی بدون سرنشین موشک Ariane 5 موشک. 904 00:42:38,880 --> 00:42:41,190 این حمل علمی ماهواره طراحی شده 905 00:42:41,190 --> 00:42:44,570 برای ایجاد دقیقا چگونه تعامل میدان مغناطیسی زمین 906 00:42:44,570 --> 00:42:47,380 با باد خورشیدی است. 907 00:42:47,380 --> 00:42:50,580 راکت برای ساخته شد آژانس فضایی اروپا، 908 00:42:50,580 --> 00:42:54,400 و خاموش برداشته از تسهیلات آن در ساحل گویان فرانسه. 909 00:42:54,400 --> 00:42:57,520 >> -At حدود 37 ثانیه به پرواز، آنها برای اولین بار 910 00:42:57,520 --> 00:42:59,070 چیزی متوجه بود اشتباه است. 911 00:42:59,070 --> 00:43:02,240 این نازل آهنی شد در راه آنها واقعا باید نیست. 912 00:43:02,240 --> 00:43:06,550 حدود 40 ثانیه به پرواز، به وضوح وسیله نقلیه دچار مشکل شد، 913 00:43:06,550 --> 00:43:08,820 و این زمانی که آنها ساخته شده تصمیم به نابود کردن آن. 914 00:43:08,820 --> 00:43:12,370 افسر ایمنی محدوده، با جرات فوق العاده ای، دکمه 915 00:43:12,370 --> 00:43:18,030 و منفجر موشک قبل از آن می تواند خطر برای امنیت عمومی تبدیل شده است. 916 00:43:18,030 --> 00:43:21,010 >> -این قبل از ازدواج بود سفر از موشک Ariane 5، 917 00:43:21,010 --> 00:43:23,920 و تخریب آن در زمان به دلیل نقص محل 918 00:43:23,920 --> 00:43:25,932 تعبیه شده در نرم افزار موشک است. 919 00:43:25,932 --> 00:43:27,640 بانک مشکل در آریان بود که وجود دارد 920 00:43:27,640 --> 00:43:30,500 تعداد مورد نیاز بود 64 بیت بیان می شوند، 921 00:43:30,500 --> 00:43:33,560 و آنها می خواستند برای تبدیل آن را به یک عدد 16 بیتی. 922 00:43:33,560 --> 00:43:36,820 آنها تصور می کردند تعداد هرگز به بسیار بزرگ است. 923 00:43:36,820 --> 00:43:40,940 که بیشتر از آن ارقام در تعداد 64 بیتی صفر بود. 924 00:43:40,940 --> 00:43:42,450 آنها در اشتباه بودند. 925 00:43:42,450 --> 00:43:45,000 >> بانک ناتوانی یک برنامه نرم افزار برای شرایط 926 00:43:45,000 --> 00:43:49,460 نوع تعداد تولید شده توسط دیگر در ریشه شکست بود. 927 00:43:49,460 --> 00:43:54,260 توسعه نرم افزار تبدیل شده بود بخش بسیار پر هزینه از فن آوری های جدید است. 928 00:43:54,260 --> 00:43:57,060 آریان 4 موشک به حال بسیار موفق بوده است. 929 00:43:57,060 --> 00:44:01,600 بنابراین بسیاری از نرم افزار ایجاد شده برای آن را نیز در موشک Ariane 5 استفاده شد. 930 00:44:01,600 --> 00:44:04,790 >> بانک مشکل اساسی که موشک Ariane 5. 931 00:44:04,790 --> 00:44:11,200 شد faster-- شتاب سریع تر، و نرم افزار برای آن به حساب نمی بود. 932 00:44:11,200 --> 00:44:14,910 >> بانک تخریب موشک یک فاجعه مالی بزرگی بود. 933 00:44:14,910 --> 00:44:18,630 اکنون به علت خطای نرم افزار دقیقه است. 934 00:44:18,630 --> 00:44:21,160 اما این اولین بار نیست زمان مشکلات تبدیل داده ها 935 00:44:21,160 --> 00:44:24,770 فن آوری موشکی مدرن به ستوه آورده بود. 936 00:44:24,770 --> 00:44:28,020 >> -در سال 1991 با شروع از جنگ اول خلیج فارس، 937 00:44:28,020 --> 00:44:30,540 موشک پاتریوت یک نوع مشابه تجربه 938 00:44:30,540 --> 00:44:32,465 از یک مشکل تبدیل عدد است. 939 00:44:32,465 --> 00:44:36,760 و به عنوان یک نتیجه 28 people-- 28 soldiers-- آمریکا، کشته شدند 940 00:44:36,760 --> 00:44:39,010 و حدود صد تن دیگر زخمی شدند. 941 00:44:39,010 --> 00:44:42,830 هنگامی که Patriot، که قرار بود برای محافظت در برابر Scuds ورودی، 942 00:44:42,830 --> 00:44:45,780 شکست خورده را به آتش موشک. 943 00:44:45,780 --> 00:44:51,610 >> وقتی عراق به کویت حمله کرد، و امریکا در اوایل سال 1991 آغاز طوفان صحرا، 944 00:44:51,610 --> 00:44:55,720 موشک پاتریوت مستقر شدند برای محافظت از عربستان سعودی و اسرائیل 945 00:44:55,720 --> 00:44:59,180 از حملات موشکی اسکاد عراق. 946 00:44:59,180 --> 00:45:03,080 پاتریوت US میان برد است سطح به هوا سیستم 947 00:45:03,080 --> 00:45:06,530 تولید شده توسط شرکت ریتون. 948 00:45:06,530 --> 00:45:09,500 >> بانک اندازه پاتریوت رهگیر itself-- 949 00:45:09,500 --> 00:45:14,705 آن را در مورد تقریبا 20 فوت طول، و وزن آن حدود 2،000 پوند است. 950 00:45:14,705 --> 00:45:19,090 و آن را حمل یک کلاهک در حدود، من فکر می کنم حدود £ 150. 951 00:45:19,090 --> 00:45:23,880 و سر جنگی خود را است انفجاری بالا، که 952 00:45:23,880 --> 00:45:26,700 دارای قطعات در اطراف او. 953 00:45:26,700 --> 00:45:31,630 بنابراین پوشش از سر جنگی است طراحی به مانند یک چارپاره عمل می کنند. 954 00:45:31,630 --> 00:45:34,040 >> بانک موشک انجام می چهار در ظرف، 955 00:45:34,040 --> 00:45:37,170 و توسط یک تریلر نیمه منتقل می شود. 956 00:45:37,170 --> 00:45:44,880 >> بانک سیستم ضد موشکی پاتریوت حداقل 20 سال در حال حاضر باز می گردد. 957 00:45:44,880 --> 00:45:48,380 این روش در اصل طراحی شده بود به عنوان یک موشک دفاع هوایی 958 00:45:48,380 --> 00:45:50,810 به شلیک کردن هواپیما دشمن. 959 00:45:50,810 --> 00:45:54,410 در جنگ اول خلیج فارس وقتی که جنگ در آمد، 960 00:45:54,410 --> 00:45:59,650 ارتش خواست به استفاده از آن را به شلیک کردن Scuds، نه هواپیما. 961 00:45:59,650 --> 00:46:03,580 نیروی هوایی عراق بود نه آنقدر از یک مشکل، 962 00:46:03,580 --> 00:46:06,590 اما ارتش در مورد Scuds نگران بود. 963 00:46:06,590 --> 00:46:10,120 و به طوری که آنها به تلاش ارتقاء پاتریوت. 964 00:46:10,120 --> 00:46:12,740 >> -Intercepting دشمن موشک های سفر در ماخ 5 965 00:46:12,740 --> 00:46:15,670 قرار بود به چالش به اندازه کافی. 966 00:46:15,670 --> 00:46:18,440 اما زمانی که میهن پرستی به خدمات با عجله شد، 967 00:46:18,440 --> 00:46:22,580 ارتش بود آگاه نیست اصلاح عراق که 968 00:46:22,580 --> 00:46:25,880 ساخته شده scuds خود را نزدیک به غیر ممکن است به آن. 969 00:46:25,880 --> 00:46:30,690 >> چه اتفاق افتاده است که Scuds در سال های آینده بی ثبات بود. 970 00:46:30,690 --> 00:46:32,000 آنها لرزان بود. 971 00:46:32,000 --> 00:46:37,210 دلیل این Iraqis-- بود به منظور رسیدن به 600 کیلومتر از 972 00:46:37,210 --> 00:46:41,680 از missile-- محدوده 300 کیلومتر وزن خارج از کلاهک مقابل زمان، 973 00:46:41,680 --> 00:46:43,340 و کلاهک سبک تر. 974 00:46:43,340 --> 00:46:48,490 بنابراین در حال حاضر در پاتریوت در تلاش برای رسیدن در حرکت تند و سریع، و بسیاری از time-- 975 00:46:48,490 --> 00:46:52,880 اکثریت قریب به اتفاق از time-- که فقط توسط حرکت تند و سریع پرواز می کنند. 976 00:46:52,880 --> 00:46:57,120 >> -Once اپراتورهای سیستم پاتریوت متوجه پاتریوت هدف خود را گم، 977 00:46:57,120 --> 00:47:01,630 آنها کلاهک پاتریوت را منفجر برای اجتناب از تلفات احتمالی اگر آن را 978 00:47:01,630 --> 00:47:04,440 به سقوط به زمین داده شد. 979 00:47:04,440 --> 00:47:08,700 >> یعنی چیزی بود که بسیاری از مردم را دیدم به عنوان توپ های آتشین بزرگ در آسمان، 980 00:47:08,700 --> 00:47:14,180 و اشتباه به عنوان ره گیری از کلاهک حرکت تند و سریع. 981 00:47:14,180 --> 00:47:18,020 >> گرچه در آسمان شب، میهن پرستان به نظر می رسد با موفقیت از بین بردن 982 00:47:18,020 --> 00:47:23,280 Scuds، در ظهران تواند وجود داشته باشد اشتباه نکنید در مورد عملکرد آن است. 983 00:47:23,280 --> 00:47:27,930 سیستم رادار پاتریوت وجود دارد آهنگ از دست داده یک حرکت تند و سریع ورودی 984 00:47:27,930 --> 00:47:30,260 و هرگز از راه اندازی به نقص نرم افزار. 985 00:47:30,260 --> 00:47:34,060 986 00:47:34,060 --> 00:47:38,880 >> این اسرائیلی ها که برای اولین بار کشف شد که دیگر سیستم روشن بود، 987 00:47:38,880 --> 00:47:41,130 بیشتر اختلاف زمان تبدیل شد. 988 00:47:41,130 --> 00:47:44,770 با توجه به ساعت های جاسازی شده در کامپیوتر سیستم. 989 00:47:44,770 --> 00:47:48,190 >> -درباره دو هفته قبل از تراژدی در ظهران، 990 00:47:48,190 --> 00:47:50,720 اسرائیلی ها به گزارش وزارت دفاع 991 00:47:50,720 --> 00:47:52,410 که سیستم شد زمان از دست دادن. 992 00:47:52,410 --> 00:47:54,410 پس از حدود هشت ساعت در حال اجرا، آنها متوجه 993 00:47:54,410 --> 00:47:57,690 که سیستم تبدیل شدن به به طرز محسوسی کمتر دقیق است. 994 00:47:57,690 --> 00:48:01,850 وزارت دفاع در پاسخ به گفتن تمام پاتریوت 995 00:48:01,850 --> 00:48:04,800 سیستم را ترک نمی در برای مدت طولانی. 996 00:48:04,800 --> 00:48:06,980 آنها هرگز گفت: آنچه که مدت زمان طولانی بود. 997 00:48:06,980 --> 00:48:09,140 8 ساعت، 10 ساعت، هزار ساعت است. 998 00:48:09,140 --> 00:48:11,300 هیچ کس نمی دانست. 999 00:48:11,300 --> 00:48:13,320 >> بانک باتری پاتریوت مستقر در پادگان 1000 00:48:13,320 --> 00:48:18,310 در ظهران و ناقص داخلی آن ساعت در بیش از 100 ساعت بوده است 1001 00:48:18,310 --> 00:48:21,520 در شب 25 فوریه. 1002 00:48:21,520 --> 00:48:25,792 >> آن را هم ردیابی با دقت در حدود یک دهم از یک ثانیه. 1003 00:48:25,792 --> 00:48:27,950 در حال حاضر یک دهم ثانیه تعداد جالب است 1004 00:48:27,950 --> 00:48:31,850 زیرا نمی تواند بیان شود در باینری دقیقا، که 1005 00:48:31,850 --> 00:48:36,500 معنی آن را نمی توان دقیقا بیان شود در هر کامپیوتر های دیجیتال مدرن. 1006 00:48:36,500 --> 00:48:41,070 این سخت است به این باور است، اما استفاده از این به عنوان مثال. 1007 00:48:41,070 --> 00:48:43,420 >> بیایید تعداد یک سوم. 1008 00:48:43,420 --> 00:48:47,330 یک سوم نمی تواند بیان شده در اعشار دقیقا. 1009 00:48:47,330 --> 00:48:52,060 یک سوم 0.333 است ادامه بی نهایت. 1010 00:48:52,060 --> 00:48:56,420 هیچ راهی برای انجام این کار وجود دارد با دقت مطلق در یک دهدهی. 1011 00:48:56,420 --> 00:48:59,530 این دقیقا همان نوع مشکل است که در میهن پرستی اتفاق افتاده است. 1012 00:48:59,530 --> 00:49:04,040 دیگر سیستم زد، بدتر از خطای زمان تبدیل شد. 1013 00:49:04,040 --> 00:49:08,840 >> -After 100 ساعت از عمل، خطا در زمان فقط حدود یک سوم بود 1014 00:49:08,840 --> 00:49:10,440 از یک ثانیه. 1015 00:49:10,440 --> 00:49:14,150 اما از نظر هدف قرار دادن موشک های سفر در ماخ 5، 1016 00:49:14,150 --> 00:49:18,560 آن را در ردیابی منجر خطا از بیش از 600 متر است. 1017 00:49:18,560 --> 00:49:21,870 این امر می تواند خطای مهلک برای سربازان در ظهران. 1018 00:49:21,870 --> 00:49:28,455 >> چه اتفاق افتاده است راه اندازی حرکت تند و سریع بود تشخیص داده شده توسط ماهواره های هشدار دهنده، 1019 00:49:28,455 --> 00:49:32,710 و آنها می دانستند حرکت تند و سریع بود در آینده در جهت خود را. 1020 00:49:32,710 --> 00:49:35,150 آنها نمی دانند که در آن بود در آینده. 1021 00:49:35,150 --> 00:49:38,210 این در حال حاضر تا رادار بود بخشی از سیستم پاتریوت 1022 00:49:38,210 --> 00:49:43,150 دفاع از ظهران به کردهاید و حفظ آهنگ از موشک های دشمن وارده. 1023 00:49:43,150 --> 00:49:44,561 >> بانک رادار بسیار باهوش بود. 1024 00:49:44,561 --> 00:49:46,560 این در واقع آهنگ موقعیت حرکت تند و سریع 1025 00:49:46,560 --> 00:49:48,930 و پس از آن پیش بینی که در آن آن را احتمالا خواهد بود 1026 00:49:48,930 --> 00:49:51,380 در کنار هم رادار پالس فرستاده شده از. 1027 00:49:51,380 --> 00:49:53,040 این دروازه دامنه نامیده می شد. 1028 00:49:53,040 --> 00:49:57,620 >> سپس، پس از آن که پاتریوت تصمیم می گیرد هم به اندازه کافی است 1029 00:49:57,620 --> 00:50:02,400 گذشت به عقب برگردید و بررسی بعدی محل این مورد شناسایی شده است 1030 00:50:02,400 --> 00:50:03,550 آن را به عقب می رود. 1031 00:50:03,550 --> 00:50:07,820 بنابراین، هنگامی که آن را به رفت و برگشت به اشتباه مکان، آن را پس از آن هیچ شی را می بیند. 1032 00:50:07,820 --> 00:50:10,360 و این تصمیم این بود که هیچ شیء وجود دارد. 1033 00:50:10,360 --> 00:50:13,630 این یک تشخیص غلط وجود دارد و آن قطره مسیر. 1034 00:50:13,630 --> 00:50:16,970 >> بانک های دریافتی حرکت تند و سریع ناپدید شد از صفحه رادار، 1035 00:50:16,970 --> 00:50:20,200 و ثانیه بعد، آن را ناودان به سربازخانه. 1036 00:50:20,200 --> 00:50:22,570 حرکت تند و سریع 28 کشته شدند. 1037 00:50:22,570 --> 00:50:26,110 این یکی از آخرین اخراج شد در طول جنگ اول خلیج فارس. 1038 00:50:26,110 --> 00:50:31,920 متأسفانه، نرم افزار به روز رسانی در سپیده دم روز بعد وارد شده است. 1039 00:50:31,920 --> 00:50:34,870 نقص نرم افزار به حال است ثابت، بسته شدن 1040 00:50:34,870 --> 00:50:39,150 یک فصل در مشکل تاریخ موشکی پاتریوت. 1041 00:50:39,150 --> 00:50:40,030 >> [END VIDEO پخش] 1042 00:50:40,030 --> 00:50:41,488 >> DAVID J. مالان: که در آن است برای CS50. 1043 00:50:41,488 --> 00:50:42,820 ما شما را در روز چهارشنبه را ببینید. 1044 00:50:42,820 --> 00:50:46,420 1045 00:50:46,420 --> 00:50:50,370 >> [MUSIC پخش] 1046 00:50:50,370 --> 00:54:23,446