1 00:00:00,000 --> 00:00:02,760 [Powered by Google Translate] [هفته 5] 2 00:00:02,760 --> 00:00:04,760 [دیوید J. مالان، دانشگاه هاروارد] 3 00:00:04,760 --> 00:00:11,990 [این CS50.] [CS50.TV] 4 00:00:11,990 --> 00:00:17,780 [زن] او را به دروغ گفتن در مورد آنچه که من نمی دانم. 5 00:00:17,780 --> 00:00:20,300 [مرد] پس چه می دانیم؟ 6 00:00:20,300 --> 00:00:24,120 [زن] است که در 9:15، ری Santoya در ATM بود. 7 00:00:24,120 --> 00:00:27,420 [مرد] بنابراین سوال این است، چه شد که او در 9:16 انجام شده است؟ 8 00:00:27,420 --> 00:00:29,980 [زن] تیراندازی میلی متر 9 در چیزی. 9 00:00:29,980 --> 00:00:31,900 شاید او را دیدم تیرانداز از خفا. 10 00:00:31,900 --> 00:00:34,000 [مرد] و یا او را با او مشغول به کار بود. 11 00:00:34,000 --> 00:00:36,330 [زن] صبر کنید. بازگشت به عقب است. 12 00:00:36,330 --> 00:00:38,330 [انسان] چه می بینید؟ 13 00:00:38,330 --> 00:00:44,520 [♫ موسیقی suspenseful ♫] 14 00:00:44,520 --> 00:00:48,320 [زن] چهره خود را بیاورید. صفحه نمایش کامل. 15 00:00:48,320 --> 00:00:51,230 [مرد] عینک او. >> انعکاس وجود دارد. 16 00:00:51,230 --> 00:01:00,810 [♫ موسیقی suspenseful ♫] 17 00:01:00,810 --> 00:01:03,580 [انسان] که تیم بیس بال Nuevita. که لوگوی خود را. 18 00:01:03,580 --> 00:01:07,790 [زن] و او را به صحبت کردن به هر کس که کت پوشیده است. 19 00:01:07,790 --> 00:01:13,730 >> [دیوید مالان] بنابراین، این CS50 هفته 5 است، و امروز یک کمی از تلویزیون و فیلم خراب کردن برای شما. 20 00:01:13,730 --> 00:01:16,170 بنابراین، هر زمان که شما در حال تماشای یک نمایش شبیه این یکی اینجا، 21 00:01:16,170 --> 00:01:19,910 و پلیس می گویند: "که شما تمیز کردن است؟" یا "افزایش" 22 00:01:19,910 --> 00:01:21,900 نه در دنیای واقعی افزایش وجود دارد. 23 00:01:21,900 --> 00:01:25,220 در واقع، آنچه که شما واقعا چیزی کمی شبیه به این است. 24 00:01:25,220 --> 00:01:27,570 من کشیده تا یکی از عکس کارکنان از صفحه است. 25 00:01:27,570 --> 00:01:30,980 این یک برنامه ای به نام فتوشاپ. این 1 از 2 Bowdens است، 26 00:01:30,980 --> 00:01:36,300 1 از 3 Bowdens در واقع، امروز، از آنجا که ما خانم Bowden در اینجا نیز، با راب و پل. 27 00:01:36,300 --> 00:01:41,950 اما در اینجا راب است که بر روی صفحه نمایش، و اگر ما در در آن تابانیدن زوم او همیشه در چشم او بود، 28 00:01:41,950 --> 00:01:47,600 آنچه شما در واقع این است که آنچه می بینید همان چیزی است که شما می توانید. 29 00:01:47,600 --> 00:01:51,690 این است "بهبود یافته است،" پس "CSI" آن را کمی اشتباه است. 30 00:01:51,690 --> 00:01:55,190 یک کلیپ دیگر وجود دارد، در صورتی که ما می توانیم بر روی "CSI" فقط کمی طولانی تر را انتخاب کنید. 31 00:01:55,190 --> 00:01:58,500 این یک عبارت به خوبی مطلق پس اگر شما می خواهید به 32 00:01:58,500 --> 00:02:10,280 فنی صدا با دوستان خود را هنگامی که، در واقع، شما می گویید مطلقا هیچ چیز. 33 00:02:10,280 --> 00:02:12,970 >> [مرد] هفته من شده است تحقیق در مورد قتل های قاتل راننده تاکسی 34 00:02:12,970 --> 00:02:15,360 با شیفتگی خاصی مرضی. 35 00:02:15,360 --> 00:02:17,160 [زن # 1] این است که در زمان واقعی است. 36 00:02:17,160 --> 00:02:22,930 [زن # 2] من یک رابط کاربری GUI با استفاده از ویژوال بیسیک، ایجاد ببینید اگر من می توانم آدرس IP ردیابی. 37 00:02:22,930 --> 00:02:29,570 >> [مالان] صوتی از همگام سازی را کنار گذاشته، ایجاد یک رابط گرافیکی با استفاده از ویژوال بیسیک 38 00:02:29,570 --> 00:02:31,820 برای ردیابی یک آدرس IP مزخرف کامل است. 39 00:02:31,820 --> 00:02:33,840 این روزها شما می توانید از ویژوال بیسیک استفاده نمی کند، 40 00:02:33,840 --> 00:02:38,920 بدون نیاز به GUI وجود دارد، و آدرس IP یک مدت از لحاظ فنی دقیق بود. 41 00:02:38,920 --> 00:02:41,730 بنابراین یک چشم را برای این، و یکی از مورد علاقه های من: 42 00:02:41,730 --> 00:02:45,070 این یکی کمی بیشتر پیچیده است، به دلیل این که شما نیاز به دانستن زبان های مختلف. 43 00:02:45,070 --> 00:02:47,860 یک زبان به نام هدف-C است، که superset از C. وجود دارد 44 00:02:47,860 --> 00:02:51,960 که به معنای C به علاوه برخی از ویژگی های اضافی، برنامه نویسی شی گرا در میان آنها است. 45 00:02:51,960 --> 00:02:55,070 و این زبان است که اپل تا به محبوبیت برای برنامه نویسی در iOS است. 46 00:02:55,070 --> 00:02:58,760 و بنابراین در اینجا یک کلیپ از یک نمایش کاملا متفاوت، از "شماره" 47 00:02:58,760 --> 00:03:02,450 که در واقع اگر شما نگاه از نزدیک در ویدئو و مکث خود را در لحظه ای مناسب، 48 00:03:02,450 --> 00:03:07,700 شما خواهید دید که آنچه که هستید، در این است نه کاملا آنچه که شرح داده شده است. 49 00:03:07,700 --> 00:03:11,170 و اجازه دهید یک کانکتور صوتی مختلف من در اینجا امتحان کنید و ببینید که آیا ما می توانیم 50 00:03:11,170 --> 00:03:13,780 نگه داشتن صدا در همگام سازی این زمان. 51 00:03:13,780 --> 00:03:20,530 من شما را به "شماره". 52 00:03:20,530 --> 00:03:23,240 >> [مرد # 1] این یک آدرس 32 بیتی IPv4 را. 53 00:03:23,240 --> 00:03:38,930 [مرد # 2] IP، که از طریق اینترنت می باشد. شبکه >> خصوصی. این شبکه خصوصی آنیتا است. 54 00:03:38,930 --> 00:03:43,810 [مالان] باشه. این هدف-C است، و آن را برای برنامه رنگ آمیزی بعضی از بچه، 55 00:03:43,810 --> 00:03:51,140 شما شاید می تواند استنباط از نام متغیر وجود دارد. 56 00:03:51,140 --> 00:03:54,410 به طوری که پس از آن بود "." بنابراین امروز و این هفته معرفی می کنیم 57 00:03:54,410 --> 00:03:57,740 کمی از جهان پزشکی قانونی و بافت در مسائل بنابراین. 58 00:03:57,740 --> 00:04:00,590 امروز یک سخنرانی به صورت مختصر به دلیل یک رویداد خاص در اینجا وجود دارد 59 00:04:00,590 --> 00:04:05,530 پس از آن، بنابراین خواهیم زیرچشمی نگاه کردن، گرفتن و اذیت دانش آموزان و پدر و مادر به طور یکسان امروز 60 00:04:05,530 --> 00:04:07,420 با برخی از چیزهایی که در افق هستند. 61 00:04:07,420 --> 00:04:12,240 در میان آنها، روز دوشنبه، چند همکلاسی را داشته باشد. 62 00:04:12,240 --> 00:04:16,050 EDX، دانشگاه هاروارد و MITS ابتکار جدید آنلاین برای باز کردن دروس 63 00:04:16,050 --> 00:04:19,120 و بیشتر، در حال راه اندازی در دانشگاه هاروارد در روز دوشنبه است. 64 00:04:19,120 --> 00:04:21,490 که به معنای آمده دوشنبه - به عنوان آخرین شمارش، 65 00:04:21,490 --> 00:04:26,210 86،000 همکلاسی های دیگر خواهد شد همراه با سخنرانی CS50 66 00:04:26,210 --> 00:04:29,170 و بخش ها و مجموعه walkthroughs و مشکل است. 67 00:04:29,170 --> 00:04:32,350 و به عنوان بخشی از این، شما را به تبدیل شدن به اعضای کلاس افتتاحیه 68 00:04:32,350 --> 00:04:35,090 CS50 و در حال حاضر CS50x. 69 00:04:35,090 --> 00:04:39,310 >> به عنوان بخشی از این، در حال حاضر، این باور که وجود خواهد داشت و برخی از upsides به عنوان. 70 00:04:39,310 --> 00:04:43,790 آماده شدن برای این کار، به تعداد گسترده ای از دانش آموزان، 71 00:04:43,790 --> 00:04:47,180 کافی است برای گفتن که حتی اگر ما دارای 108 TFS و CA ها، 72 00:04:47,180 --> 00:04:50,790 نه کاملا بهترین نسبت استاد و دانشجو / زمانی که ما به 80،000 دانش آموز دیگر. 73 00:04:50,790 --> 00:04:52,850 بنابراین ما در حال رفتن به درجه بندی مشکل بسیاری از مجموعه های دستی. 74 00:04:52,850 --> 00:04:55,920 بنابراین این هفته در مجموعه مشکل خواهد بود CS50 ورود، 75 00:04:55,920 --> 00:04:58,450 است که برای رفتن به یک ابزار خط فرمان در داخل دستگاه 76 00:04:58,450 --> 00:05:01,200 که شما هنگامی که آن را به روز رسانی بعد از این تعطیلات آخر هفته، 77 00:05:01,200 --> 00:05:03,200 و شما قادر خواهید بود برای اجرای یک فرمان، چک 50، 78 00:05:03,200 --> 00:05:06,500 در pset خود را، و شما برخی از بازخورد به عنوان که آیا برنامه شما 79 00:05:06,500 --> 00:05:11,160 درست یا نادرست با توجه به مشخصات طرح های مختلف است که ما ارائه کرده اند. 80 00:05:11,160 --> 00:05:13,580 بنابراین بیشتر در مورد آن و مشکل و مشخصات مجموعه 81 00:05:13,580 --> 00:05:17,240 از همکلاسی CS50x خواهد شد با استفاده از این نیز هست. 82 00:05:17,240 --> 00:05:19,230 >> بنابراین مجموعه ای مشکل 4 همه چیز در مورد پزشکی قانونی است. 83 00:05:19,230 --> 00:05:21,940 و این قطعه از سوی برخی از مسائل در زندگی واقعی الهام گرفته شده بود، 84 00:05:21,940 --> 00:05:24,620 به موجب آن زمانی که من در مدرسه فارغ التحصیل شده بود، من در حالی که با زندانی 85 00:05:24,620 --> 00:05:28,650 دفتر منطقه دادستان شهرستان میانه انجام کار قانونی 86 00:05:28,650 --> 00:05:31,650 با محقق سرب قانونی خود، و چه این مبلغ به 87 00:05:31,650 --> 00:05:35,260 است، من فکر می کنم من در گذشته یک هفته چند اشاره، پلیس دولت بزرگ و یا دیگران است 88 00:05:35,260 --> 00:05:39,000 خواهد آمد، آنها را رها کردن چیزهایی مثل سی دی ها و دیسک های سخت و فلاپی دیسک 89 00:05:39,000 --> 00:05:42,340 و مانند آن، و پس از آن هدف از اداره پزشکی قانونی برای تعیین اینکه آیا 90 00:05:42,340 --> 00:05:44,600 و یا وجود دارد برخی از مرتب کردن بر اساس شواهد نیست. 91 00:05:44,600 --> 00:05:48,010 واحد تحقیقات ویژه بود، پس از آن جرم یقه سفید بود، 92 00:05:48,010 --> 00:05:52,350 مرتب کردن بر اساس نگران کننده تر از جنایات بود، 93 00:05:52,350 --> 00:05:55,990 هر چیزی که شامل برخی از انواع رسانه های دیجیتال؛ معلوم که هنوز بسیاری از مردم 94 00:05:55,990 --> 00:05:59,370 ارسال یک ایمیل به گفت: "من این کار را کرد." 95 00:05:59,370 --> 00:06:03,290 بنابراین اغلب این جستجوها پزشکی قانونی روشن نیست که میوه بسیار، 96 00:06:03,290 --> 00:06:05,850 اما گاهی اوقات مردم به ایمیل مانند ارسال. 97 00:06:05,850 --> 00:06:08,490 بنابراین گاهی اوقات تلاش ها پاداش. 98 00:06:08,490 --> 00:06:14,420 >> اما منجر به این pset قانونی، خواهیم به معرفی در pset 4 بیت از گرافیک است. 99 00:06:14,420 --> 00:06:18,260 بنابراین شما احتمالا این چیزها برای داده، عکس JPEG، gif و مثل این روزها، 100 00:06:18,260 --> 00:06:21,640 اما اگر شما واقعا در مورد آن فکر می کنم، تصویر، بسیار شبیه به چهره راب، 101 00:06:21,640 --> 00:06:24,430 می تواند به عنوان یک دنباله از نقاط یا پیکسل های مدل شده است. 102 00:06:24,430 --> 00:06:26,680 در حال حاضر، در مورد چهره راب، تمام انواع رنگ وجود دارد، 103 00:06:26,680 --> 00:06:29,940 و ما شروع به دیدن نقاط منحصر به فرد، otherwide به عنوان پیکسل شناخته می شود، 104 00:06:29,940 --> 00:06:31,610 زمانی که ما شروع به زوم شوید. 105 00:06:31,610 --> 00:06:35,590 اما اگر ما جهان ساده یک کمی، و فقط می گویند که این در اینجا این است راب 106 00:06:35,590 --> 00:06:40,560 در سیاه و سفید، به خوبی، به نمایندگی از سیاه و سفید ما فقط می تواند باینری استفاده کنید. 107 00:06:40,560 --> 00:06:44,960 و اگر ما قصد استفاده از باینری، 0 یا 1، ما می توانیم این تصویر بیان 108 00:06:44,960 --> 00:06:51,970 چهره خندان راب با این الگوی بیت: 11000011 نشان دهنده 109 00:06:51,970 --> 00:06:55,160 سفید، سفید، سیاه و سفید، سیاه و سفید، سیاه و سفید، سیاه و سفید، سفید است. 110 00:06:55,160 --> 00:06:59,290 و پس از آن یک جهش بزرگ نیست، پس از آن، شروع به صحبت کردن در مورد عکس های رنگارنگ. 111 00:06:59,290 --> 00:07:01,920 چیزهایی که شما را در فیس بوک ببینید و یا با دوربین های دیجیتال، 112 00:07:01,920 --> 00:07:04,730 اما بدیهی است، هنگامی که آن را به رنگ می آید، شما نیاز بیت بیشتر است. 113 00:07:04,730 --> 00:07:08,470 و کاملا رایج در جهان عکس است، برای استفاده از 1-بیت رنگ، 114 00:07:08,470 --> 00:07:12,730 این نشان می دهد، اما 24 بیت رنگ، که در آن شما در واقع میلیون ها از رنگ. 115 00:07:12,730 --> 00:07:15,430 همانگونه که در مورد زمانی که ما در چشم راب زوم، 116 00:07:15,430 --> 00:07:19,270 که هر تعداد از میلیون ها نفر از امکانات مختلف رنگارنگ بود. 117 00:07:19,270 --> 00:07:22,260 >> بنابراین ما در این مجموعه مشکل 4 و همچنین در walkthrough، 118 00:07:22,260 --> 00:07:27,050 خواهد شد که امروز به دلیل سخنرانی در روز جمعه در ساعت 3:30 به جای 2:30 معمول است. 119 00:07:27,050 --> 00:07:29,930 اما این فیلم به صورت آنلاین، به طور معمول، فردا. 120 00:07:29,930 --> 00:07:31,880 ما همچنین می خواهیم شما را به فرمت فایل دیگری معرفی نماید. 121 00:07:31,880 --> 00:07:34,150 پس این است که عمدا در ابتدا به منظور نگاه تهدید آمیز، 122 00:07:34,150 --> 00:07:38,980 اما این فقط برخی از اسناد و مدارک برای یک ساختار C است. 123 00:07:38,980 --> 00:07:42,280 به نظر می رسد که مایکروسافت، سال پیش، به مورد پسند عامه این فرمت، 124 00:07:42,280 --> 00:07:46,630 نام فرمت فایل بیت مپ، BMP، و این فوق العاده ساده بود، 125 00:07:46,630 --> 00:07:50,390 رنگارنگ فرمت فایل های گرافیکی است که برای مدتی مورد استفاده قرار گرفت 126 00:07:50,390 --> 00:07:53,640 و هنوز هم گاهی اوقات برای تصاویر پس زمینه بر روی دسکتاپ. 127 00:07:53,640 --> 00:07:57,410 اگر شما فکر می کنم بازگشت به ویندوز XP و تپه و آسمان آبی، 128 00:07:57,410 --> 00:08:00,660 بود که به طور معمول، BMP یا تصویر بیت مپ، و مپ 129 00:08:00,660 --> 00:08:03,340 سرگرم کننده برای ما هستند زیرا آنها به پیچیدگی کمی بیشتر است. 130 00:08:03,340 --> 00:08:05,640 این کاملا به عنوان به عنوان این شبکه از 0 و 1 است ساده نیست؛ 131 00:08:05,640 --> 00:08:10,680 در عوض، شما باید چیزهایی مثل هدر در آغاز از یک فایل است. 132 00:08:10,680 --> 00:08:15,520 بنابراین به عبارت دیگر، در داخل یک فایل BMP دسته کامل از 0 و 1، 133 00:08:15,520 --> 00:08:18,070 اما بعضی از این 0 و 1 در آن وجود دارد وجود دارد. 134 00:08:18,070 --> 00:08:21,450 و معلوم است که آنچه که ما احتمالا گرفته شده برای سال اعطا، 135 00:08:21,450 --> 00:08:27,040 فرمت های فایل مانند توضیحات. XLS. MP3. MP4، 136 00:08:27,040 --> 00:08:29,910 هر آنچه که از فرمت های فایل که شما با آن آشنا هستید. 137 00:08:29,910 --> 00:08:31,900 خب، چه آن را حتی به فرمت فایل چیست؟ 138 00:08:31,900 --> 00:08:35,740 از آنجا که در پایان روز، تمام این فایل ها استفاده می کنیم فقط 0 و 1 139 00:08:35,740 --> 00:08:39,950 و شاید کسانی که 0 و 1 نشان دهنده A، B، C، از طریق ASCII یا مانند، 140 00:08:39,950 --> 00:08:42,030 اما از پایان روز، آن را فقط 0 و 1 است. 141 00:08:42,030 --> 00:08:45,300 >> بنابراین انسان گاهی اوقات فقط یک قالب فایل جدید را اختراع تصمیم گیری 142 00:08:45,300 --> 00:08:49,420 جایی که آنها استاندارد چه الگوهای بیت در واقع به این معنی است. 143 00:08:49,420 --> 00:08:52,790 و در این مورد در اینجا، مردمی که طراحی شده فرمت فایل های بیت مپ 144 00:08:52,790 --> 00:08:58,260 گفت که در بایت اول در یک فایل بیت مپ، افست 0 نشان داده، وجود دارد، 145 00:08:58,260 --> 00:09:02,320 رفتن به برخی از cryptically نام متغیر به نام bfType، 146 00:09:02,320 --> 00:09:06,510 که فقط برای نوع فایل بیت مپ می ایستد، چه نوع از فایل های بیت مپ این است. 147 00:09:06,510 --> 00:09:10,780 شما می توانید استنباط، شاید، از ردیف دوم که جبران 2، تعداد بایت 2، 148 00:09:10,780 --> 00:09:15,980 یک الگوی از 0 و 1 است که نشان دهنده چه؟ 149 00:09:15,980 --> 00:09:18,320 اندازه چیزی است، و آن را از آنجا می رود. 150 00:09:18,320 --> 00:09:20,660 بنابراین در مجموعه مشکل 4، شما را از طریق برخی از این چیزها راه می رفت. 151 00:09:20,660 --> 00:09:24,480 >> به پایان خواهد رسید تا مراقبت در مورد همه آنها، اما متوجه آن شروع به گرفتن جالب 152 00:09:24,480 --> 00:09:30,780 در اطراف خط و یا بایت 54، rgbtBlue، سبز و قرمز است. 153 00:09:30,780 --> 00:09:35,280 اگر تا کنون شنیده RGB مخفف، قرمز سبز آبی، این اشاره به آن است. 154 00:09:35,280 --> 00:09:37,840 از آنجا که معلوم است شما می توانید تمام رنگ های رنگین کمان رنگ 155 00:09:37,840 --> 00:09:41,580 با ترکیبی از رنگ های قرمز و آبی و سبز است. 156 00:09:41,580 --> 00:09:46,560 و، در واقع، پدر و مادر در اتاق ممکن است برخی از اولین پروژکتور یاد. 157 00:09:46,560 --> 00:09:49,360 این روزها، شما فقط 1 نور بیرون آمدن از یک لنز را ببینید. 158 00:09:49,360 --> 00:09:52,870 اما در روز، شما تا به حال لنز قرمز، لنز آبی، و لنز سبز 159 00:09:52,870 --> 00:09:56,620 و با هم آنها را در روی صفحه نمایش با هدف و با تشکیل یک تصویر رنگارنگ است. 160 00:09:56,620 --> 00:09:59,590 و اغلب مدارس و دبیرستان کسانی که لنز دارند 161 00:09:59,590 --> 00:10:02,680 همیشه کمی چپ چپ نگاه، بنابراین شما مرتب کردن بر اساس دیدن تصاویر دو یا سه برابر بود، 162 00:10:02,680 --> 00:10:07,500 اما این ایده بود. شما تا به حال با نور قرمز و سبز و آبی رنگ آمیزی یک تصویر است. 163 00:10:07,500 --> 00:10:09,570 و این اصل همان است که در کامپیوتر استفاده می شود. 164 00:10:09,570 --> 00:10:12,000 >> بنابراین در میان این چالش ها، پس از آن، برای شما مشکل مجموعه 4 165 00:10:12,000 --> 00:10:16,080 در حال رفتن به چند چیز، یکی این است که در واقع تغییر اندازه یک تصویر است. 166 00:10:16,080 --> 00:10:18,050 را در یک الگوی از 0 و 1، 167 00:10:18,050 --> 00:10:22,840 کشف کردن که تکه های 0 و 1 را در یک ساختار شبیه به این نمایندگی، 168 00:10:22,840 --> 00:10:26,800 و پس از آن شکل چگونه به تکرار پیکسل: قرمز، بلوز، سبزی 169 00:10:26,800 --> 00:10:32,460 در داخل به طوری که زمانی که یک تصویر به نظر می رسد شبیه به این در ابتدا، ممکن است شبیه به این به جای پس از آن. 170 00:10:32,460 --> 00:10:35,590 از جمله چالش های دیگر، بیش از حد است، رفتن به این باشد که شما به دست 171 00:10:35,590 --> 00:10:38,900 پزشکی قانونی یک تصویر از یک فایل واقعی را از یک دوربین دیجیتال 172 00:10:38,900 --> 00:10:42,410 و در آن دوربین، یک بار پس از یک زمان بودند، یک دسته از عکس ها. 173 00:10:42,410 --> 00:10:47,030 مشکل این است که، ما به طور تصادفی پاک شده و یا تا به حال تصویر خراب شده به نحوی. 174 00:10:47,030 --> 00:10:51,040 چیزهای بد اتفاق می افتد با دوربین های دیجیتال، و بنابراین ما به سرعت کپی از 0 و 1 175 00:10:51,040 --> 00:10:55,410 خارج از این کارت برای شما، همه آنها را در 1 فایل بزرگ ذخیره می شود، و سپس ما آنها را به شما دست 176 00:10:55,410 --> 00:11:00,000 مشکل تنظیم 4 به طوری که شما می توانید یک برنامه که با آن در C برای بازیابی ارسال 177 00:11:00,000 --> 00:11:02,660 تمام کسانی که عکس JPEG، ایده آل است. 178 00:11:02,660 --> 00:11:06,280 و معلوم است که عکس JPEG، حتی اگر آنها تا حدودی از یک فرمت فایل پیچیده، 179 00:11:06,280 --> 00:11:09,580 آنها بسیار پیچیده تر از این چهره خندان در اینجا. 180 00:11:09,580 --> 00:11:14,320 به نظر می رسد که هر JPEG با الگوهای همان 0 و 1 شروع می شود. 181 00:11:14,320 --> 00:11:18,820 بنابراین با استفاده از یک حلقه یا حلقه یا مشابه آن، 182 00:11:18,820 --> 00:11:22,350 شما می توانید بیش از همه 0 و 1 در این تصویر پزشکی قانونی تکرار 183 00:11:22,350 --> 00:11:26,670 و هر بار که شما الگوی ویژه ای است که در مشخصات مجموعه ای از مشکل تعریف شده، 184 00:11:26,670 --> 00:11:29,770 شما می توانید فرض کنید، اوه، اینجا، با احتمال بسیار بالا، 185 00:11:29,770 --> 00:11:33,520 آغاز JPEG، و به محض این که شما در پیدا کردن همان الگوی، 186 00:11:33,520 --> 00:11:36,050 از چند بایت یا کیلوبایت یا مگابایت بعد، 187 00:11:36,050 --> 00:11:40,550 شما می توانید فرض کنید، 'آه! اینجا است که یک JPEG دوم، عکس من پس از یک زمان. 188 00:11:40,550 --> 00:11:44,720 اجازه دهید من دست از خواندن آن فایل اول، شروع به نوشتن این یکی جدید است. 189 00:11:44,720 --> 00:11:49,980 و خروجی از برنامه های خود را برای pset 4 به عنوان بسیاری از 50 عکس JPEG است. 190 00:11:49,980 --> 00:11:52,400 و اگر آن را به 50 عکس JPEG یا نه، شما باید کمی از یک حلقه است. 191 00:11:52,400 --> 00:11:55,580 اگر شما یک تعداد نامحدود از عکس JPEG، شما باید یک حلقه بی نهایت است. 192 00:11:55,580 --> 00:11:58,280 ، بیش از حد، به طوری که کاملا یک مورد مشترک خواهد بود. 193 00:11:58,280 --> 00:12:00,280 این چیزی است که در افق است. 194 00:12:00,280 --> 00:12:03,740 >> امتحان 0، پشت سر ما. تحقق، در هر ایمیل من که همواره این مردمی وجود دارد 195 00:12:03,740 --> 00:12:06,820 که هر دو شاد، مرتب کردن بر اساس خنثی، و غمگین در سراسر مسابقه 0 بار. 196 00:12:06,820 --> 00:12:10,160 لطفا رسیدن به من، TFS سر، Zamyla، TF خود را 197 00:12:10,160 --> 00:12:14,120 یا یکی از CAS که شما می دانید اگر شما می خواهم به بحث در مورد این که چه کارهایی رفت. 198 00:12:14,120 --> 00:12:16,460 >> بنابراین برای تحت تاثیر قرار دادن پدر و مادر، در اتاق، 199 00:12:16,460 --> 00:12:23,990 کتابخانه CS50 چه شده است؟ کار خوب. 200 00:12:23,990 --> 00:12:32,280 کتابخانه CS50 چه خبر؟ آره؟ [پاسخ دانشجویی، ناخوانا] 201 00:12:32,280 --> 00:12:35,730 >> خوب، خوب است. پس از آن یک مجموعه prewritten از کد است که ما، کارکنان، نوشت، 202 00:12:35,730 --> 00:12:38,460 ما به شما ارائه می کنند، به ارائه برخی از ویژگی های مشترک است. 203 00:12:38,460 --> 00:12:42,290 چیزهای مانند یک رشته بین المللی به من، همه از توابع که در اینجا ذکر شده است. 204 00:12:42,290 --> 00:12:45,260 شروع در حال حاضر، ما شروع به گرفتن این چرخ آموزش. 205 00:12:45,260 --> 00:12:48,230 بنابراین ما در حال رفتن به شروع به گرفتن "رشته" را از شما دور است، 206 00:12:48,230 --> 00:12:52,790 که به یاد می آورند، تنها یک مترادف برای آنچه واقعی نوع داده بود؟ * کاراکتر باشد. 207 00:12:52,790 --> 00:12:57,020 بنابراین برای پدر و مادر، که احتمالا - که خوب است، به طوری * کاراکتر خواهیم شروع به دیدن 208 00:12:57,020 --> 00:13:00,810 بر روی صفحه نمایش به عنوان "رشته" ما از واژگان ما حذف، 209 00:13:00,810 --> 00:13:02,760 حداقل زمانی که آن را در واقع به نوشتن کد می آید. 210 00:13:02,760 --> 00:13:06,240 به همین ترتیب، ما باید با استفاده از برخی از این توابع به همان اندازه، 211 00:13:06,240 --> 00:13:08,390 زیرا برنامه های ما در حال رفتن به پیچیده تر 212 00:13:08,390 --> 00:13:11,370 نه فقط برنامه هایی که نشستن وجود دارد با یک چشمک زدن اعلان ارسال، 213 00:13:11,370 --> 00:13:13,580 انتظار برای کاربر به تایپ چیزی شوید. 214 00:13:13,580 --> 00:13:15,220 شما ورودی خود را از جای دیگری دریافت کنید. 215 00:13:15,220 --> 00:13:18,720 به عنوان مثال، شما می خواهید آنها را از یک سری از بیت ها بر روی دیسک سخت محلی دریافت کنید. 216 00:13:18,720 --> 00:13:23,340 به جای آن شما می خواهید آنها را در آینده از اتصال به شبکه، برخی از وب سایت جایی. 217 00:13:23,340 --> 00:13:27,460 بنابراین پوست پشت این لایه برای اولین بار به شما اجازه می دهد، بالا بکشد و لوازم CS50 218 00:13:27,460 --> 00:13:32,300 و این فایل به نام CS50.h، که شما تیز از جمله برای هفته ها بوده است. 219 00:13:32,300 --> 00:13:34,380 >> اما اجازه دهید در واقع ببینیم که چه چیزی در داخل این. 220 00:13:34,380 --> 00:13:38,250 بنابراین بالا فایل را در آبی است که فقط یک دسته از نظرات، 221 00:13:38,250 --> 00:13:41,340 اطلاعات مربوط به ضمانت نامه و مجوز. این نوع از یک الگوی مشترک است 222 00:13:41,340 --> 00:13:44,600 در نرم افزار، چرا که بسیاری از نرم افزار این روزها چیزی است که به نام "منبع باز" 223 00:13:44,600 --> 00:13:46,940 که بدان معنی است که کسی نوشته است کد 224 00:13:46,940 --> 00:13:50,060 و آن را به صورت آزاد موجود است، نه فقط برای اجرا و استفاده، 225 00:13:50,060 --> 00:13:53,660 اما در واقع و خواندن به کار خود را تغییر و ادغام. 226 00:13:53,660 --> 00:13:55,790 بنابراین این چیزی است که شما با استفاده از نرم افزار منبع باز، 227 00:13:55,790 --> 00:13:58,030 البته در یک فرم بسیار کوچک است. 228 00:13:58,030 --> 00:14:01,860 اگر من حرکت پایین گذشته به نظر، هر چند، ما شروع به دیدن برخی از چیزهایی بیشتر آشنا. 229 00:14:01,860 --> 00:14:08,090 پس در بالای در اینجا متوجه، که فایل CS50.h شامل یک دسته کامل از فایل های هدر. 230 00:14:08,090 --> 00:14:11,160 در حال حاضر، بیشتر از این ما را دیده اند، نه قبل از، اما یکی از 231 00:14:11,160 --> 00:14:15,640 آشنا که از این ما دیده می شود، البته به طور خلاصه، تا کنون؟ 232 00:14:15,640 --> 00:14:18,720 آره، کتابخانه استاندارد. Stdlib.h malloc، 233 00:14:18,720 --> 00:14:21,590 بنابراین زمانی که ما شروع به صحبت کردن در مورد تخصیص حافظه پویا، 234 00:14:21,590 --> 00:14:24,960 کنیم که دوباره به هفته آینده و همچنین، ما از جمله این که فایل آغاز شده است. 235 00:14:24,960 --> 00:14:29,660 به نظر می رسد که بولی و درست و نادرست را در C در واقع وجود ندارد، و در هر سه، 236 00:14:29,660 --> 00:14:32,460 مگر اینکه شما این فایل اینجا کلیک کنید. 237 00:14:32,460 --> 00:14:35,770 بنابراین ما باید برای هفته ها، شده است از جمله استاندارد bool.h 238 00:14:35,770 --> 00:14:39,020 به طوری که شما می توانید مفهوم بولی، درست یا غلط استفاده 239 00:14:39,020 --> 00:14:41,830 بدون این، شما را مجبور به جعلی آن مرتب سازی و استفاده از نوع int 240 00:14:41,830 --> 00:14:45,920 و فقط خودسرانه فرض که 0 نادرست است و 1 درست است. 241 00:14:45,920 --> 00:14:49,980 >> در حال حاضر، اگر ما در پایین حرکت علاوه بر این، در اینجا تعریف ما از یک رشته است. 242 00:14:49,980 --> 00:14:54,820 به نظر می رسد، همانطور که قبلا گفته شد، که در جایی که این * کار واقعا مهم نیست. 243 00:14:54,820 --> 00:14:56,750 شما حتی می توانید از فضای در سراسر داشته باشد. 244 00:14:56,750 --> 00:15:01,550 ما، این ترم شده اند آن را ترویج به عنوان این را به روشن است که * با توجه به نوع انجام دهد. 245 00:15:01,550 --> 00:15:05,370 اما درک، فقط به عنوان مشترک، اگر نه کمی شایع تر است، آن را می شود وجود دارد 246 00:15:05,370 --> 00:15:07,480 اما عملکرد این همان چیزی است. 247 00:15:07,480 --> 00:15:11,070 اما در حال حاضر، اگر ما به خواندن علاوه بر این، اجازه دهید نگاهی به نظرات، GetInt، 248 00:15:11,070 --> 00:15:15,350 از آنجا که ما استفاده می شود که، شاید، قبل از هر چیز دیگری از این ترم. 249 00:15:15,350 --> 00:15:19,620 و در اینجا این است GetInt. این چیست؟ 250 00:15:19,620 --> 00:15:24,650 این نمونه است. بنابراین اغلب، ما نمونه های اولیه در تاپس از ما قرار داده است. فایل های C، 251 00:15:24,650 --> 00:15:28,190 اما شما همچنین می توانید نمونه در فایل های هدر، فایل های ساعت قرار داده است، 252 00:15:28,190 --> 00:15:32,110 مانند این یکی در اینجا، به طوری که زمانی که تو می نویسم برخی از توابع 253 00:15:32,110 --> 00:15:36,790 که شما می خواهید دیگران قادر به استفاده از، است که دقیقا این مورد با کتابخانه CS50، 254 00:15:36,790 --> 00:15:40,900 شما نه تنها پیاده سازی توابع خود را در چیزی شبیه به CS50.c، 255 00:15:40,900 --> 00:15:46,720 شما همچنین نمونه های اولیه و نه در بالا از آن فایل قرار داده، اما در بالای فایل هدر، 256 00:15:46,720 --> 00:15:50,810 پس از آن که فایل هدر همان چیزی است که دوستان و همکارانش شامل، 257 00:15:50,810 --> 00:15:52,800 با تیز باشد در کد خود را. 258 00:15:52,800 --> 00:15:55,440 بنابراین تمام این مدت شما شده است از جمله این نمونه 259 00:15:55,440 --> 00:15:59,870 موثر در بالا فایل های خود را، اما از طریق این تیز شامل مکانیزم 260 00:15:59,870 --> 00:16:03,320 که در اصل نسخه و رب این فایل را به را آن گونه که مایلید تغییر دهید. 261 00:16:03,320 --> 00:16:06,400 در حال حاضر، در اینجا برخی از اسناد و مدارک نسبتا دقیق است. 262 00:16:06,400 --> 00:16:08,880 >> ما تا حد زیادی گرفته شده برای اعطا که GetInt می شود از نوع int، 263 00:16:08,880 --> 00:16:10,740 اما معلوم برخی از موارد گوشه وجود دارد، درست است؟ 264 00:16:10,740 --> 00:16:14,320 چه می شود در صورتی که کاربر در یک شماره است که راه بیش از حد بزرگ است؟ 265 00:16:14,320 --> 00:16:17,350 عدد یک با 18 صفر بتوان 2، که نه تنها می توانند به راحتی داخل یک int؟ 266 00:16:17,350 --> 00:16:21,180 رفتار مورد انتظار به چه صورت است؟ خوب، ایده آل، آن را قابل پیش بینی است. 267 00:16:21,180 --> 00:16:23,460 بنابراین در این حالت، اگر شما در واقع نسخه قابل چاپ خوب به عنوان خوانده شده 268 00:16:23,460 --> 00:16:27,850 شما که اگر خط را نمی تواند بخواند، این INT_MAX بازده را ببینید. 269 00:16:27,850 --> 00:16:30,800 ما هرگز در این مورد صحبت کردیم، اما بر اساس حروف بزرگ خود را، 270 00:16:30,800 --> 00:16:33,030 آنچه در آن است، احتمالا؟ 271 00:16:33,030 --> 00:16:36,610 ثابت است، پس از آن برخی از ثابت ویژه ای که احتمالا اعلام 272 00:16:36,610 --> 00:16:39,460 در یکی از فایل های هدر کسانی که بالاتر در فایل، 273 00:16:39,460 --> 00:16:43,400 و INT_MAX احتمالا چیزی شبیه به، حدود، 2 میلیارد است. 274 00:16:43,400 --> 00:16:48,160 این ایده که چون ما باید به نحوی نشان که چیزی را اشتباه رفت. 275 00:16:48,160 --> 00:16:51,090 ما، بله، 4 میلیارد شماره در اختیار داریم، 276 00:16:51,090 --> 00:16:53,980 منفی 2 میلیارد تا 2 میلیارد دلار، دادن یا گرفتن. 277 00:16:53,980 --> 00:16:58,030 خب، چه در برنامه نویسی مشترک است این است که شما سرقت تنها یکی از آن اعداد است. 278 00:16:58,030 --> 00:17:02,250 شاید 0، شاید 2 میلیارد، شاید منفی 2 میلیارد دلار است. 279 00:17:02,250 --> 00:17:06,720 بنابراین شما صرف یکی از مقادیر ممکن خود را به طوری که شما می توانید به جهان متعهد 280 00:17:06,720 --> 00:17:10,089 که اگر چیزی را اشتباه می رود، من به این مقدار فوق العاده بزرگ بازگشت. 281 00:17:10,089 --> 00:17:13,329 اما شما نمی خواهید که کاربر تایپ کردن چیزی مرموز مانند "2، 3، 4 ..." 282 00:17:13,329 --> 00:17:17,079 تعداد واقعا بزرگ، جایی که شما تعمیم به جای به عنوان یک ثابت است. 283 00:17:17,079 --> 00:17:19,380 پس در واقع، اگر شما مقعد بودن شد و در چند هفته گذشته، 284 00:17:19,380 --> 00:17:23,800 در هر زمان با شما تماس GetInt، شما باید شده اند چک کردن با یک شرط IF است. 285 00:17:23,800 --> 00:17:27,109 نوع کاربر در INT_MAX انجام داد، و یا بیشتر به طور خاص، 286 00:17:27,109 --> 00:17:29,900 آیا GetInt INT_MAX بازگشت؟ زیرا اگر آن را انجام داد، 287 00:17:29,900 --> 00:17:35,140 که در واقع به این معنی که آن را نه از نوع، چیزی در این مورد اشتباه رفت. 288 00:17:35,140 --> 00:17:38,970 پس این همان چیزی است که به طور کلی به عنوان "نگهبان" ارزش، که به معنی خاص شناخته شده است. 289 00:17:38,970 --> 00:17:41,020 >> خوب، اجازه دهید در حال حاضر به فایل C به نوبه خود. 290 00:17:41,020 --> 00:17:44,500 فایل C در دستگاه برای برخی از زمان وجود داشته است، 291 00:17:44,500 --> 00:17:47,540 و در واقع، دستگاه آن را برای شما از پیش تالیف شده 292 00:17:47,540 --> 00:17:49,720 به چیزی که ما به نام "کد شیء، 293 00:17:49,720 --> 00:17:52,940 اما آن را فقط به شما مهم نیست که در آن به این دلیل است که این سیستم می داند، 294 00:17:52,940 --> 00:17:54,780 در این مورد، که در آن است، لوازم خانگی. 295 00:17:54,780 --> 00:18:00,620 اما اجازه دهید در پایین حرکت کنید در حال حاضر به GetInt، و ببینید که چگونه GetInt تمام این مدت کار کرده است. 296 00:18:00,620 --> 00:18:02,380 بنابراین در اینجا ما نظرات مشابه از قبل است. 297 00:18:02,380 --> 00:18:04,930 اجازه بدهید من فقط بخش کد زوم در، 298 00:18:04,930 --> 00:18:07,410 و آنچه ما برای GetInt به شرح زیر است. 299 00:18:07,410 --> 00:18:12,770 طول می کشد تا ورودی و بین المللی را بر می گرداند، در حالی که (درست است)، بنابراین ما باید یک حلقه بی نهایت عمدی 300 00:18:12,770 --> 00:18:16,560 اما، احتمالا خواهیم شکسته از این به نحوی، یا بازگشت از درون. 301 00:18:16,560 --> 00:18:19,890 پس ببینید که چگونه این کار را کنیم. خب، ما به نظر می رسد با استفاده از GetString 302 00:18:19,890 --> 00:18:22,550 در این خط برای اولین بار در داخل حلقه، 166. 303 00:18:22,550 --> 00:18:25,320 این تمرین خوبی است زیرا تحت چه شرایطی 304 00:18:25,320 --> 00:18:30,820 می تواند GetString بازگشت این کلمه کلیدی خاص، NULL؟ 305 00:18:30,820 --> 00:18:38,460 اگر چیزی می رود اشتباه است. چه چیزی ممکن است اشتباه زمانی که شما با چیزی شبیه به GetString؟ 306 00:18:38,460 --> 00:18:42,550 آره؟ [پاسخ دانشجو، ناخوانا] >> آره. شاید malloc نتواند. 307 00:18:42,550 --> 00:18:45,310 جایی در زیر هود GetString خواستار malloc، 308 00:18:45,310 --> 00:18:48,210 که تخصیص حافظه، که به شما اجازه می دهد فروشگاه کامپیوتر 309 00:18:48,210 --> 00:18:50,950 همه از شخصیت است که نوع کاربر را به صفحه کلید است. 310 00:18:50,950 --> 00:18:53,270 و فرض کنید که کاربر تا به حال زیادی از وقت آزاد 311 00:18:53,270 --> 00:18:56,470 و تایپ بیشتر، به عنوان مثال، از 2 میلیارد کاراکتر است. 312 00:18:56,470 --> 00:18:59,600 کاراکتر بیشتر از کامپیوتر حتی به RAM است. 313 00:18:59,600 --> 00:19:02,350 خب، GetString قادر باشد که به معنی آن را به شما، 314 00:19:02,350 --> 00:19:05,650 حتی اگر این فوق العاده، فوق العاده مورد گوشه ای غیر معمول است. 315 00:19:05,650 --> 00:19:08,490 این است که به نحوی قادر به رسیدگی به این، و GetString 316 00:19:08,490 --> 00:19:11,850 اگر ما به عقب و خواندن مستندات خود را می کند، در واقع، بازگشت NULL. 317 00:19:11,850 --> 00:19:16,150 حال اگر GetString نتواند با بازگشت NULL، GetInt رفتن به شکست است 318 00:19:16,150 --> 00:19:19,370 بازگشت INT_MAX، فقط به عنوان یک نگهبان. 319 00:19:19,370 --> 00:19:22,650 این، فقط کنوانسیون انسان. تنها راهی که شما می توانید از این می دانم که در مورد 320 00:19:22,650 --> 00:19:24,840 با خواندن اسناد و مدارک. 321 00:19:24,840 --> 00:19:28,200 بنابراین حرکت به پایین که در آن بین المللی است که در واقع GotInt. 322 00:19:28,200 --> 00:19:34,220 >> بنابراین اگر من در پایین حرکت کمی بیشتر، در خط 170 نظر بالاتر از این خطوط است. 323 00:19:34,220 --> 00:19:38,470 بنابراین ما اعلام کرد، در سال 172، نوع int N و C کاراکتر، و سپس این تابع 324 00:19:38,470 --> 00:19:41,870 که برخی از شما در سراسر قبل از تصادفا، اما sscanf. 325 00:19:41,870 --> 00:19:44,190 این مخفف برای رشته F اسکن. 326 00:19:44,190 --> 00:19:48,580 به عبارت دیگر، من یک رشته بدهد و من آن را برای قطعه از اطلاعات مورد علاقه اسکن. 327 00:19:48,580 --> 00:19:53,820 پس چه معنا است؟ خب، فرض کنید که من به معنای واقعی کلمه، در، 1 2 3 در صفحه کلید تایپ، 328 00:19:53,820 --> 00:19:59,730 و سپس کلید را وارد کنید. چه نوع داده از 1 2 3 GetString بازگشته است؟ 329 00:19:59,730 --> 00:20:05,010 این بدیهی است که یک رشته است، درست است؟ من یک رشته، پس 1 2 3 واقعا "1 2 3" 330 00:20:05,010 --> 00:20:07,260 با 0 \ در انتهای آن است. که بین المللی نیست. 331 00:20:07,260 --> 00:20:10,420 که تعداد زیادی نیست. آن را مثل یک عدد به نظر می رسد اما در واقع نیست. 332 00:20:10,420 --> 00:20:14,680 پس چه GetInt باید کاری انجام دهید؟ این به اسکن آن رشته از چپ به راست، 333 00:20:14,680 --> 00:20:19,010 1 2 3 \ 0، و به نوعی آن را تبدیل به یک عدد صحیح واقعی است. 334 00:20:19,010 --> 00:20:21,010 در حال حاضر، شما می توانید بفهمند که چگونه به انجام این کار. 335 00:20:21,010 --> 00:20:24,240 اگر شما فکر می کنم به pset 2، شما احتمالا کمی راحت 336 00:20:24,240 --> 00:20:26,810 با سزار یا vigenere بنابراین شما می توانید تکرار بیش از یک رشته، 337 00:20:26,810 --> 00:20:29,800 شما می توانید کاراکتر ها را به نوع داده int با انتخاب تبدیل کنید. که زیادی از کار است. 338 00:20:29,800 --> 00:20:32,800 چرا یک تابع مانند sscanf که این کار را برای شما تماس نمی گیرم؟ 339 00:20:32,800 --> 00:20:37,520 بنابراین sscanf انتظار استدلال، در این مورد به نام خط است، که یک رشته است. 340 00:20:37,520 --> 00:20:41,310 بعد از آن شما، در نقل قول را مشخص کنید، بسیار شبیه به printf، 341 00:20:41,310 --> 00:20:44,960 چه انتظاری دارید که در این رشته را مشاهده کنید؟ 342 00:20:44,960 --> 00:20:52,980 چیزی که من میگم اینجا است، من انتظار برای دیدن یک عدد دهدهی و شاید یک شخصیت. 343 00:20:52,980 --> 00:20:54,990 و خواهیم دید چرا که این مورد فقط در یک لحظه است. 344 00:20:54,990 --> 00:20:58,440 به نظر می رسد که این نماد در حال حاضر از مسائل یادآور 345 00:20:58,440 --> 00:21:00,840 ما شروع به صحبت کردن در مورد بیش از یک هفته پیش. 346 00:21:00,840 --> 00:21:05,430 >> چیست & N و & C کار را برای ما در اینجا؟ [پاسخ دانشجویی، ناخوانا] 347 00:21:05,430 --> 00:21:07,610 >> آره. این به من آدرس از N و آدرس C است. 348 00:21:07,610 --> 00:21:10,440 در حال حاضر، این است که چرا مهم است؟ خب، شما می دانید که با توابع در C 349 00:21:10,440 --> 00:21:13,440 شما همیشه می توانید یک مقدار و یا هیچ ارزش در همه بازگشت. 350 00:21:13,440 --> 00:21:16,630 شما می توانید بین المللی، یک رشته، شناور، یک کاراکتر، هر چه بازگشت. 351 00:21:16,630 --> 00:21:21,150 یا شما می توانید از درجه اعتبار ساقط بازگشت، اما شما فقط می توانید بازگشت 1 چیز حداکثر. 352 00:21:21,150 --> 00:21:26,100 اما در اینجا ما می خواهیم sscanf به من بازگشت شاید هوشمند، یک عدد دهدهی، 353 00:21:26,100 --> 00:21:29,240 و همچنین یک کاراکتر است، و من چرا کاراکتر را در یک لحظه را توضیح دهد. 354 00:21:29,240 --> 00:21:34,250 بنابراین شما به طور موثر می خواهید F بازگشت 2 چیز است که فقط در C. امکان پذیر نیست 355 00:21:34,250 --> 00:21:38,460 بنابراین شما می توانید در اطراف آن کار شده توسط عبور در 2 آدرس: 356 00:21:38,460 --> 00:21:43,710 چرا که به محض اینکه شما دست تابع 2 آدرس، آنچه که می تواند تابع با آنها کاری انجام دهید؟ 357 00:21:43,710 --> 00:21:49,880 این می تواند به این آدرس ارسال. شما می توانید عملیات * و استفاده از "رفتن وجود دارد" به هر یک از این آدرس. 358 00:21:49,880 --> 00:21:54,320 مرتب کردن بر اساس از این مکانیسم درپشتی است، اما بسیار معمول است برای تغییر ارزش های متغیر 359 00:21:54,320 --> 00:21:58,020 در بیش از فقط 1 مکان، در این مورد 2. 360 00:21:58,020 --> 00:22:04,590 در حال حاضر، توجه من برای چک کردن == to1، و سپس بازگشت N در صورتی که می کند، در واقع، درست ارزیابی است. 361 00:22:04,590 --> 00:22:09,340 پس چه اتفاقی افتاده؟ خب، از نظر فنی، ما واقعا می خواهید به در GetInt اتفاق می افتد این است. 362 00:22:09,340 --> 00:22:12,340 ما می خواهیم به تجزیه، پس به صحبت می کنند، ما می خواهیم به خواندن رشته 363 00:22:12,340 --> 00:22:16,210 "1 2 3" و اگر به نظر می رسد مثل یک عدد وجود دارد، 364 00:22:16,210 --> 00:22:21,360 آنچه که ما در حال گفتن sscanf به انجام این است که قرار دادن این تعداد، 1 2 3، در این N متغیر برای من است. 365 00:22:21,360 --> 00:22:26,060 پس چرا من این را به عنوان به خوبی؟ 366 00:22:26,060 --> 00:22:33,750 چه چیزی است که نقش نیز گفت، sscanf، شما همچنین ممکن است یک شخصیت است. 367 00:22:33,750 --> 00:22:36,890 [صحبت دانشجویی، ناخوانا] >> نه - نقطه اعشار می تواند کار. 368 00:22:36,890 --> 00:22:40,650 بیایید نگه دارید که فکر می کردم برای یک لحظه. چه چیز دیگری؟ 369 00:22:40,650 --> 00:22:42,570 [دانشجو، ناخوانا] >> بنابراین، فکر خوب، آن می تواند شخصیت NULL است. 370 00:22:42,570 --> 00:22:44,970 در واقع در این مورد، نه. آره؟ [دانشجو، ناخوانا] 371 00:22:44,970 --> 00:22:47,100 >> >> ASCII. یا، اجازه دهید به من تعمیم و حتی بیشتر. 372 00:22:47,100 --> 00:22:49,670 ٪ C وجود دارد فقط برای چک کردن خطا است. 373 00:22:49,670 --> 00:22:52,510 ما نمی خواهیم به کاراکتر پس از شماره 374 00:22:52,510 --> 00:22:54,980 اما آنچه در این به من اجازه می دهد برای انجام این کار به شرح زیر است: 375 00:22:54,980 --> 00:23:01,270 به نظر می رسد که sscanf، علاوه بر ذخیره کردن مقادیر در N و C، در این مثال در اینجا، 376 00:23:01,270 --> 00:23:08,170 آنچه که آن را نیز انجام می دهد، آن را برمی گرداند تعدادی از متغیرهای آن را قرار داده ارزش شوید. 377 00:23:08,170 --> 00:23:13,330 بنابراین اگر شما فقط در 1 2 3 تایپ کنید، و سپس تنها٪ D رفتن به مطابقت 378 00:23:13,330 --> 00:23:18,830 و تنها N می شود با ارزش مانند 1 2 3 ذخیره می شود و هیچ چیز در C قرار داده می شود؛ 379 00:23:18,830 --> 00:23:20,870 C یک مقدار زباله باقی می ماند، پس به صحبت می کنند. 380 00:23:20,870 --> 00:23:23,550 زباله به دلیل آن را به عنوان برخی از ارزش هرگز مقداردهی اولیه شده است. 381 00:23:23,550 --> 00:23:29,390 پس در آن صورت، باز می گرداند sscanf 1، چرا که من یکی از کسانی که اشاره گر جمعیت، 382 00:23:29,390 --> 00:23:33,650 که در این صورت، بزرگ است. من بین المللی است، بنابراین من آزاد خط را به آزاد کردن حافظه 383 00:23:33,650 --> 00:23:37,150 که GetString در واقع اختصاص داده شده است، و سپس N I بازگشت. 384 00:23:37,150 --> 00:23:42,210 دیگری، اگر شما همیشه تعجب که در آن است که سعی مجدد بیانیه می آید از، از حق در اینجا می آید. 385 00:23:42,210 --> 00:23:45,770 در مقابل، اگر من در 1 2 3 صنایع غذایی تایپ، 386 00:23:45,770 --> 00:23:48,640 فقط برخی از دنباله تصادفی از متن، sscanf است برای دیدن، 387 00:23:48,640 --> 00:23:51,500 آه، شماره، آه، شماره، آه، شماره، آه - F. 388 00:23:51,500 --> 00:23:54,190 و آن را برای قرار دادن در n 1 2 3. 389 00:23:54,190 --> 00:23:59,970 رفتن به قرار دادن F C، و سپس بازگشت 2. 390 00:23:59,970 --> 00:24:02,980 بنابراین ما باید، فقط با استفاده از تعریف اساسی از رفتار scanf، 391 00:24:02,980 --> 00:24:06,170 یک راه بسیار ساده - خب، پیچیده در نگاه اول است، اما در پایان روز، 392 00:24:06,170 --> 00:24:11,460 مکانیزم نسبتا ساده گفت، بین المللی، و اگر چنین است، که تنها چیزی که من پیدا کردم؟ 393 00:24:11,460 --> 00:24:14,950 و فضای سفید در اینجا این است آگاهانه. اگر مستندات sscanf شما خواندن، 394 00:24:14,950 --> 00:24:18,690 آن را به شما می گوید که اگر شما عبارتند از: تکه ای از فضای سفید در آغاز یا پایان، 395 00:24:18,690 --> 00:24:24,990 sscanf بیش از حد به کاربر، اجازه می دهد به هر دلیلی، به ضربه فاصله 1 2 3، و خواهد بود که مشروع باشد. 396 00:24:24,990 --> 00:24:28,310 این کاربر نمی خواهد داد فقط به خاطر اینکه آنها را به فاصله در ابتدا یا پایان رسید، 397 00:24:28,310 --> 00:24:32,160 که فقط یک کمی کاربر پسند تر شده است. 398 00:24:32,160 --> 00:24:34,160 >> پس از آن، هر گونه سؤال، در GetInts؟ آره؟ 399 00:24:34,160 --> 00:24:36,820 [سوال دانشجو، ناخوانا] 400 00:24:36,820 --> 00:24:40,740 >> پرسش خوبی است. اگر شما فقط در یک کاراکتر تایپ شده، مانند F و ضربه را وارد کنید 401 00:24:40,740 --> 00:24:47,830 تا کنون که بدون تایپ کردن 1 2 3؛ شما چه فکر میکنید رفتار این خط از کد پس از آن خواهد بود؟ 402 00:24:47,830 --> 00:24:50,500 بنابراین sscanf می تواند بیش از حد پوشش، زیرا در آن صورت، 403 00:24:50,500 --> 00:24:56,280 قصد ندارم برای پر کردن N یا C، آن را به جای بازگشت 0. 404 00:24:56,280 --> 00:25:01,540 که در این صورت، من هم ابتلا به این سناریو، به این دلیل که ارزش انتظار می رود من می خواهم 1. 405 00:25:01,540 --> 00:25:07,310 من فقط می خواهم 1 و فقط 1 چیز پر شود. خوب سوال. دیگران؟ 406 00:25:07,310 --> 00:25:09,610 >> تمامی حقوق، بنابراین اجازه دهید از طریق تمام توابع در اینجا نیست، 407 00:25:09,610 --> 00:25:11,820 اما یکی که به نظر می رسد می شود، شاید از علاقه باقی مانده 408 00:25:11,820 --> 00:25:14,530 GetString به دلیل آن معلوم است که GetFloat، GetInt، 409 00:25:14,530 --> 00:25:19,490 GetDouble، GetLongLong همه میفرستتون بسیاری از قابلیت های خود را به GetString. 410 00:25:19,490 --> 00:25:22,860 نگاهی که او چگونه پیاده سازی شده است به شما اجازه می دهد تا. 411 00:25:22,860 --> 00:25:27,040 این یکی به نظر می رسد کمی پیچیده است، اما آن را با استفاده از اصول مشابه 412 00:25:27,040 --> 00:25:29,680 که ما شروع به صحبت کردن در مورد در هفته گذشته است. بنابراین در GetString، 413 00:25:29,680 --> 00:25:32,670 طول می کشد که هیچ استدلال همانطور که در خلاء تا در اینجا، 414 00:25:32,670 --> 00:25:37,110 و آن را یک رشته را بر می گرداند، بنابراین من اعلام یک رشته به نام بافر. 415 00:25:37,110 --> 00:25:39,670 من واقعا نمی دانند که آنچه را که برای هنوز مورد استفاده قرار گیرد، اما خواهیم دید. 416 00:25:39,670 --> 00:25:42,950 به نظر می رسد ظرفیت است، به طور پیش فرض، 0، کاملا مطمئن نیست که در آن این است که رفتن. 417 00:25:42,950 --> 00:25:44,920 اطمینان حاصل کنید که N را برای هنوز مورد استفاده قرار گیرد. 418 00:25:44,920 --> 00:25:47,860 اما در حال حاضر آن را کمی جالب تر است، بنابراین در خط 243، 419 00:25:47,860 --> 00:25:51,760 ما اعلام هوشمند، C مرتب سازی بر اساس جزئیات احمقانه. 420 00:25:51,760 --> 00:25:58,080 کاراکتر 8 بیت و 8 بیت می تواند که چگونه بسیاری از ارزش های مختلف را ذخیره؟ 421 00:25:58,080 --> 00:26:03,310 256. مشکل این است که، اگر شما می خواهید به 256 حالت مختلف کاراکتر ASCII، 422 00:26:03,310 --> 00:26:06,210 که وجود دارد، اگر شما فکر می کنم، و این چیزی است که به حفظ کردن نیست. 423 00:26:06,210 --> 00:26:09,100 اما اگر شما فکر می کنم که به نمودار ASCII بزرگ ما تا به حال هفته پیش، 424 00:26:09,100 --> 00:26:13,780 وجود دارد، در آن صورت، 128 یا 256 کاراکتر ASCII بودند. 425 00:26:13,780 --> 00:26:16,220 ما با استفاده از الگوهای از 0 و 1 تا. 426 00:26:16,220 --> 00:26:19,410 این یک مشکل است اگر شما می خواهید می شود قادر به تشخیص خطا است. 427 00:26:19,410 --> 00:26:23,290 از آنجا که اگر شما در حال حاضر با استفاده از 256 مقدار برای شخصیت شما، 428 00:26:23,290 --> 00:26:26,390 شما واقعا از پیش برنامه ریزی، چرا که در حال حاضر شما هیچ راهی برای گفتن، 429 00:26:26,390 --> 00:26:29,750 "این شخصیت حلال نمی باشد، این است که برخی از پیام اشتباه است." 430 00:26:29,750 --> 00:26:32,430 پس چه دنیا است، آنها با استفاده از بزرگترین ارزش، 431 00:26:32,430 --> 00:26:35,790 چیزی شبیه به یک int به طوری که شما یک عدد دیوانه از بیت ها 432 00:26:35,790 --> 00:26:39,610 32 برای 4 میلیارد مقادیر ممکن است، به طوری که شما به سادگی می توانید تا پایان با استفاده از 433 00:26:39,610 --> 00:26:44,800 در اصل 257 از آنها، 1 است که برخی از معنا و مفهوم خاصی را به عنوان یک خطا است. 434 00:26:44,800 --> 00:26:49,190 >> پس ببینید که چگونه این کار را کنیم. در خط 246، من این حلقه بزرگ 435 00:26:49,190 --> 00:26:54,530 است که خواستار fgetc F فایل معنا، getc، و پس از آن STDIN. 436 00:26:54,530 --> 00:26:59,030 معلوم میشود که این تنها راه دقیق تر گفت: "خواندن ورودی از صفحه کلید است." 437 00:26:59,030 --> 00:27:02,730 استاندارد صفحه کلید وسیله ورودی، خروجی استاندارد به معنای صفحه نمایش، 438 00:27:02,730 --> 00:27:06,920 و خطای استاندارد، که ما آن را در pset 4، بدان معنی است که صفحه نمایش، 439 00:27:06,920 --> 00:27:09,670 اما یک بخش خاص از صفحه نمایش به طوری که آن را تلفیق شدهاست نیست 440 00:27:09,670 --> 00:27:13,760 با خروجی واقعی که شما در نظر گرفته شده برای چاپ، اما در آینده بیشتر در مورد آن است. 441 00:27:13,760 --> 00:27:19,430 بنابراین fgetc فقط معنی است که خواندن یک کاراکتر از صفحه کلید و ذخیره آن جایی که؟ 442 00:27:19,430 --> 00:27:24,000 ذخیره آن در ج، و سپس چک کنید، به طوری که من فقط با استفاده از برخی از ربط بولی در اینجا، 443 00:27:24,000 --> 00:27:28,430 بررسی کنید که آن را برابر \ N، به طوری که کاربر ضربه را وارد کنید. 444 00:27:28,430 --> 00:27:31,510 ما می خواهیم که در آن نقطه، پایان حلقه را متوقف کند، و ما می خواهیم برای بررسی 445 00:27:31,510 --> 00:27:36,170 برای ثابت ویژه، EOF، که اگر می دانید یا حدس می زنم - چه آن را برای ایستادن؟ 446 00:27:36,170 --> 00:27:39,860 انتهای فایل. بنابراین این نوع از مزخرف است، چرا که اگر من تایپ کردن در صفحه کلید، 447 00:27:39,860 --> 00:27:41,900 واقعا وجود دارد هیچ پرونده دخیل در این، 448 00:27:41,900 --> 00:27:44,330 اما این فقط از اصطلاح عمومی استفاده می شود به معنی مرتب کردن بر اساس 449 00:27:44,330 --> 00:27:50,320 که هیچ چیز دیگری در حال آمدن است از انگشتان دست انسان است. EOF. انتهای فایل. 450 00:27:50,320 --> 00:27:52,600 تا به کنار، اگر شما تا به حال شاهد D در صفحه کلید خود را ضربه، 451 00:27:52,600 --> 00:27:54,680 که نه شما هنوز می خواهم که شما ضربه کنترل ج. 452 00:27:54,680 --> 00:27:57,920 اما کنترل D می فرستد این ویژه ثابت به نام EOF. 453 00:27:57,920 --> 00:28:03,100 >> بنابراین در حال حاضر ما فقط برخی از تخصیص حافظه پویا داشته باشد. 454 00:28:03,100 --> 00:28:06,460 بنابراین اگر N + 1> ظرفیت، در حال حاضر من ازت توضیح دهد. 455 00:28:06,460 --> 00:28:09,380 N است که فقط چند بایت در حال حاضر در بافر، 456 00:28:09,380 --> 00:28:11,970 رشته ای که شما در حال حاضر ساخت تا از کاربر است. 457 00:28:11,970 --> 00:28:16,240 اگر شما شخصیت های بیشتری را در بافر خود را از ظرفیت در بافر، 458 00:28:16,240 --> 00:28:20,760 به طور مستقیم، آنچه ما نیاز داریم برای انجام آن تخصیص ظرفیت بیشتر است. 459 00:28:20,760 --> 00:28:24,490 من قصد دارم برای جمع آوری بیش از بعضی از حساب 460 00:28:24,490 --> 00:28:26,900 و تمرکز فقط بر روی این تابع در اینجا. 461 00:28:26,900 --> 00:28:29,170 شما می دانید چه malloc است، و یا حداقل به طور کلی آشنا است. 462 00:28:29,170 --> 00:28:32,380 نگاهی حدس بزنید چه بازتخصیص کند. [پاسخ دانشجویی، ناخوانا] 463 00:28:32,380 --> 00:28:35,690 >> آره. و حافظه کاملا اضافه کردن، آن را reallocates حافظه به شرح زیر است: 464 00:28:35,690 --> 00:28:40,530 اگر هنوز هم وجود دارد اتاق در انتهای رشته به شما بیشتر از آن حافظه را 465 00:28:40,530 --> 00:28:43,370 از این روش در اصل به شما می دهد، سپس شما که حافظه اضافی را دریافت کنید. 466 00:28:43,370 --> 00:28:46,640 بنابراین شما فقط می توانید قرار دادن شخصیت های رشته پشت به پشت به پشت به پشت. 467 00:28:46,640 --> 00:28:49,290 اما در صورتی که این مورد نیست، چرا که شما صبر کردم بیش از حد طولانی 468 00:28:49,290 --> 00:28:51,700 و چیزی تصادفی کردم plopped در حافظه وجود دارد، اما فوق العاده وجود دارد 469 00:28:51,700 --> 00:28:56,480 حافظه را در اینجا، این درست است. بازتخصیص رفتن به بلند کردن اجسام سنگین برای شما، 470 00:28:56,480 --> 00:28:58,810 حرکت رشته شما در خواندن این ترتیب دور از اینجا، 471 00:28:58,810 --> 00:29:02,550 قرار داده و از آن به پایین وجود دارد، و پس از آن شما باند بیشتر در آن نقطه است. 472 00:29:02,550 --> 00:29:05,610 بنابراین با یک موج از این دست، اجازه دهید به من می گویند که آنچه GetString در حال انجام 473 00:29:05,610 --> 00:29:09,540 آن را با شروع از یک بافر کوچک، شاید 1 شخصیت تک، 474 00:29:09,540 --> 00:29:12,300 و در صورتی که کاربر در 2 کاراکتر، GetString به پایان می رسد 475 00:29:12,300 --> 00:29:15,210 خواستار بازتخصیص و می گوید: "آه، 1 شخصیت کافی نبود. 476 00:29:15,210 --> 00:29:18,480 2 حرف به من بده. " پس اگر شما را از طریق منطق از حلقه به عنوان خوانده شده 477 00:29:18,480 --> 00:29:21,070 رفتن به می گویند، "اوه، کاربر تایپ شده در 3 کاراکتر. 478 00:29:21,070 --> 00:29:25,690 به من بده در حال حاضر 2 اما 4 کاراکتر، و سپس من را به 8، 16 و 32 را. 479 00:29:25,690 --> 00:29:28,180 واقعیت این است که من دو برابر ظرفیت در هر زمان 480 00:29:28,180 --> 00:29:30,320 این بدان معنی است که بافر است که قصد ندارم به آهستگی رشد می کند. 481 00:29:30,320 --> 00:29:35,870 رفتن به رشد فوق العاده سریع، و آنچه که ممکن است استفاده از آن؟ 482 00:29:35,870 --> 00:29:38,540 چرا من دو برابر اندازه بافر، حتی اگر کاربر 483 00:29:38,540 --> 00:29:41,450 ممکن است فقط نیاز به 1 کاراکتر اضافی را از صفحه کلید؟ 484 00:29:41,450 --> 00:29:44,830 [پاسخ دانشجویی، ناخوانا]. >> این چیه؟ 485 00:29:44,830 --> 00:29:46,750 دقیقا. شما لازم نیست که به رشد آن به عنوان اغلب. 486 00:29:46,750 --> 00:29:48,870 و این فقط یک نوع است - you're پرچینی شرط خود را در اینجا. 487 00:29:48,870 --> 00:29:54,150 این ایده که شما نمی خواهید بازتخصیص تا حد زیادی به تماس، زیرا این امر منجر به آهسته. 488 00:29:54,150 --> 00:29:56,840 هر زمانی که شما از سیستم عامل برای حافظه، همانطور که شما به زودی خواهید دید 489 00:29:56,840 --> 00:30:00,620 در یک مجموعه مشکل در آینده، این امر منجر به برداشتن برخی از زمان. 490 00:30:00,620 --> 00:30:04,980 بنابراین به حداقل رساندن این مقدار از زمان، حتی اگر شما در حال هدر رفتن مقداری از فضا را، گرایش به یک چیز خوب است. 491 00:30:04,980 --> 00:30:07,250 >> اما اگر ما را از طریق قسمت نهایی GetString در اینجا بخوانید، 492 00:30:07,250 --> 00:30:10,880 و دوباره، درک هر خط در اینجا بسیار مهم است امروز. 493 00:30:10,880 --> 00:30:14,830 اما توجه کنید که آن را در نهایت خواستار malloc دوباره، و اختصاص 494 00:30:14,830 --> 00:30:16,980 دقیقا به عنوان بایت بسیاری آن را به عنوان رشته نیاز 495 00:30:16,980 --> 00:30:21,620 و پس از آن می اندازد دور از طریق تماس با آزاد، بافر بیش از حد بزرگ است، 496 00:30:21,620 --> 00:30:23,510 اگر آن را در واقع بیش از حد بسیاری از دو برابر شد. 497 00:30:23,510 --> 00:30:25,970 به طور خلاصه، این که چگونه GetString تمام این مدت کار کرده است. 498 00:30:25,970 --> 00:30:30,100 همه آن را نشانی از یک شخصیت در یک زمان خواندن دوباره و دوباره و دوباره 499 00:30:30,100 --> 00:30:37,930 و هر وقت به آن نیاز دارد برخی از حافظه اضافی، آن را می پرسد سیستم عامل آن از طریق تماس با بازتخصیص. 500 00:30:37,930 --> 00:30:41,660 هر گونه سؤال؟ بسیار خوب. 501 00:30:41,660 --> 00:30:45,220 >> حمله. حالا که ما درک می کنیم اشاره گر، یا حداقل 502 00:30:45,220 --> 00:30:47,560 به طور فزاینده ای آشنا با اشاره گر، 503 00:30:47,560 --> 00:30:50,020 اجازه دهید در نظر بگیرید چگونه تمام جهان شروع به سقوط 504 00:30:50,020 --> 00:30:53,160 اگر شما در برابر کاربران خصمانه کاملا دفاع کند، 505 00:30:53,160 --> 00:30:55,180 افرادی که در حال تلاش برای هک را به سیستم شما. 506 00:30:55,180 --> 00:31:00,260 افرادی که در حال تلاش برای سرقت نرم افزار خود را با دور زدن بعضی از کد ثبت نام 507 00:31:00,260 --> 00:31:02,150 که در غیر این صورت ممکن است به تایپ شوید. 508 00:31:02,150 --> 00:31:04,860 نگاهی به در این مثال در اینجا است که فقط کد C 509 00:31:04,860 --> 00:31:07,920 است که تابع اصلی در پایین، که خواستار صنایع غذایی عملکرد، 510 00:31:07,920 --> 00:31:12,100 و آنچه در آن است به صنایع غذایی عبور؟ [دانشجو] یک استدلال. 511 00:31:12,100 --> 00:31:15,660 استدلال >> تنها. پس ی argv [1]، به این معنی که اولین کلمه که کاربر تایپ 512 00:31:15,660 --> 00:31:19,150 در خط فرمان بعد از a.out یا هر چیز دیگری از این برنامه گفته می شود. 513 00:31:19,150 --> 00:31:24,920 بنابراین صنایع غذایی، در بالا، در * کاراکتر طول می کشد، اما * کاراکتر است فقط آنچه را؟ 514 00:31:24,920 --> 00:31:28,860 String است. هیچ چیز تازه ای وجود دارد، و این رشته را خودسرانه نامیده می شود نوار. 515 00:31:28,860 --> 00:31:36,090 در این خط در اینجا، کاراکتر C [12]، در نوع نیمه فنی انگلیسی، آن چیزی است که این خط انجام شده است؟ 516 00:31:36,090 --> 00:31:40,640 آرایه - کاراکترها. مجموعه ای از 12 کاراکتر به من بده. 517 00:31:40,640 --> 00:31:44,970 بنابراین ما ممکن است این یک بافر است. از لحاظ تکنیکی به نام c، اما یک بافر در برنامه نویسی 518 00:31:44,970 --> 00:31:47,890 فقط به معنی دسته ای از فضا است که شما می توانید برخی از مسائل وارد قرار داده است 519 00:31:47,890 --> 00:31:49,940 >> سپس در نهایت، memcpy، ما قبلا استفاده نمی شود. 520 00:31:49,940 --> 00:31:52,380 اما شما احتمالا می تواند آنچه در آن حدس بزنید. این نسخه حافظه است. 521 00:31:52,380 --> 00:31:58,790 چه کاری انجام میدهد؟ خب، ظاهرا کپی نوار، ورودی خود را، به ج. 522 00:31:58,790 --> 00:32:03,420 اما فقط تا طول میله است. 523 00:32:03,420 --> 00:32:07,440 اما یک اشکال اینجا وجود دارد. 524 00:32:07,440 --> 00:32:14,500 خوب، پس به لحاظ فنی ما واقعا باید strlen (نوار) ​​X sizeof (کاراکتر)، این درست است. 525 00:32:14,500 --> 00:32:17,920 اما در بدترین حالت، اجازه دهید فرض کنیم که that's - بنابراین، درست است. 526 00:32:17,920 --> 00:32:23,760 سپس 2 اشکالات وجود دارد. بنابراین sizeof (کاراکتر)، همه حق است، اجازه دهید این است که یک کمی گسترده تر است. 527 00:32:23,760 --> 00:32:28,860 بنابراین در حال حاضر یک اشکال، که همان چیزی است که هنوز هم وجود دارد؟ 528 00:32:28,860 --> 00:32:31,630 [پاسخ دانشجویی، ناخوانا] ورود >> برای چه؟ خوب، پس ما باید به بررسی 529 00:32:31,630 --> 00:32:35,010 برای NULL، چرا که همه چیز بد اتفاق می افتد زمانی که اشاره گر خود را NULL است، 530 00:32:35,010 --> 00:32:38,490 از آنجا که شما ممکن است در نهایت رفتن وجود دارد، و شما هرگز نباید رفتن به NULL 531 00:32:38,490 --> 00:32:40,890 بصورت غیر مرجع آن را با عملگر *. 532 00:32:40,890 --> 00:32:45,250 به طوری که خوب است، و چه چیز دیگری کار می کنیم؟ منطقا یک نقص در اینجا وجود دارد بیش از حد. 533 00:32:45,250 --> 00:32:47,650 [پاسخ دانشجویی، ناخوانا] 534 00:32:47,650 --> 00:32:51,340 >> بنابراین اگر argc ≥ 2 چک کنید؟ 535 00:32:51,340 --> 00:32:54,130 بسیار خوب، پس 3 اشکالات در این برنامه در اینجا وجود دارد. 536 00:32:54,130 --> 00:33:00,080 ما در حال بررسی در صورتی که کاربر در واقع در هر چیزی به ی argv [1]، خوب تایپ شده است. 537 00:33:00,080 --> 00:33:02,240 پس چه اشکال سوم؟ آره؟ 538 00:33:02,240 --> 00:33:04,420 [پاسخ دانشجو، ناخوانا] >> خوب است. 539 00:33:04,420 --> 00:33:09,590 بنابراین ما به بررسی یک سناریو است. ما به طور ضمنی به بررسی حافظه کپی نیست 540 00:33:09,590 --> 00:33:12,800 از طول نوار بیشتر. 541 00:33:12,800 --> 00:33:15,720 بنابراین اگر رشته کاربر تایپ شده در 10 کاراکتر است. 542 00:33:15,720 --> 00:33:18,260 این است که گفت: "فقط کپی 10 کاراکتر است. 543 00:33:18,260 --> 00:33:21,140 و این اشکالی ندارد، اما اگر کاربر در یک کلمه در اعلان تایپ 544 00:33:21,140 --> 00:33:29,360 مانند 20 کاراکتر کلمه این است، گفت: کپی 20 حرف از نوار به چه؟ 545 00:33:29,360 --> 00:33:32,840 C، در غیر این صورت به عنوان بافر ما شناخته شده است، که بدین معناست که شما فقط نوشت: اطلاعات 546 00:33:32,840 --> 00:33:35,950 8 مکان بایت است که شما خود را ندارد، 547 00:33:35,950 --> 00:33:38,320 و شما آنها را به این معنا است که شما به آنها اختصاص داده هرگز خود را ندارد. 548 00:33:38,320 --> 00:33:41,190 پس این همان چیزی است که به طور کلی به عنوان حمله سرریز بافر شناخته شده است، 549 00:33:41,190 --> 00:33:46,650 یا حمله بافر تاخت و تاز کردن، و حمله آن به این معنی است که در صورتی که کاربر 550 00:33:46,650 --> 00:33:50,650 یا برنامه ای است که فراخوانی تابع خود را در حال انجام این کار بدتر، 551 00:33:50,650 --> 00:33:53,780 آنچه که در واقع اتفاق می افتد بعدی می تواند بسیار بد است. 552 00:33:53,780 --> 00:33:55,690 >> بیایید یک نگاهی به این تصویر در اینجا. 553 00:33:55,690 --> 00:33:59,070 این تصویر نشان دهنده پشته خود را از حافظه می باشد. 554 00:33:59,070 --> 00:34:01,050 و به یاد بیاورید که هر بار که شما به یک تابع، 555 00:34:01,050 --> 00:34:04,520 این قاب کمی در پشته شما و پس از آن دیگر و پس از آن دیگر و پس از آن دیگر. 556 00:34:04,520 --> 00:34:07,250 و تا کنون ما فقط نوع خلاصه این دور به عنوان مستطیل 557 00:34:07,250 --> 00:34:09,380 هر دو وجود دارد در هیئت مدیره و یا بر روی صفحه نمایش در اینجا. 558 00:34:09,380 --> 00:34:12,219 اما اگر ما در یکی از آن مستطیل زوم، 559 00:34:12,219 --> 00:34:16,460 هنگامی که با شما تماس صنایع غذایی تابع، آن را معلوم می کند که بیشتر در پشته وجود دارد 560 00:34:16,460 --> 00:34:18,739 داخل آن قاب و آن مستطیل 561 00:34:18,739 --> 00:34:23,370 از X و Y و A و B، مانند صحبت کردن در مورد مبادله بود. 562 00:34:23,370 --> 00:34:25,949 به نظر می رسد که برخی از جزئیات سطح پایین تر وجود دارد. 563 00:34:25,949 --> 00:34:27,780 در میان آنها آدرس بازگشت. 564 00:34:27,780 --> 00:34:33,020 بنابراین به نظر می رسد از زمانی که اصلی می نامد صنایع غذایی، اصلی است برای اطلاع رسانی به صنایع غذایی 565 00:34:33,020 --> 00:34:36,760 آنچه که آدرس اصلی است که در حافظه کامپیوتر است. 566 00:34:36,760 --> 00:34:40,659 چرا که در غیر این صورت، به زودی به عنوان صنایع غذایی انجام شده است اجرا، همانطور که در این مورد در اینجا، 567 00:34:40,659 --> 00:34:43,790 یک بار شما در رسیدن به این زانوبند نزدیک فرفری در پایان از کفش، 568 00:34:43,790 --> 00:34:48,860 چگونه هک می کند صنایع غذایی بدانید که کنترل این برنامه قرار است به آن بروید؟ 569 00:34:48,860 --> 00:34:52,460 به نظر می رسد که پاسخ به این سوال است که در مستطیل قرمز در اینجا. 570 00:34:52,460 --> 00:34:56,130 این نشان دهنده یک اشاره گر است، و آن را به کامپیوتر برای ذخیره، به طور موقت، 571 00:34:56,130 --> 00:35:00,250 در پشته به اصطلاح آدرس های اصلی به طوری که به زودی به عنوان صنایع غذایی انجام شده است اجرا 572 00:35:00,250 --> 00:35:04,110 کامپیوتر می داند که در آن و چه در خط اصلی برای رفتن به. 573 00:35:04,110 --> 00:35:06,900 ذخیره شده اشاره گر قاب مربوط به طور مشابه به این است. 574 00:35:06,900 --> 00:35:09,620 چهار نوار * در اینجا نشان دهنده چه؟ 575 00:35:09,620 --> 00:35:14,740 خوب، در حال حاضر این بخش آبی قاب صنایع غذایی، آنچه که نوار؟ 576 00:35:14,740 --> 00:35:18,300 خوب، پس نوار فقط آرگومان به تابع صنایع غذایی است. 577 00:35:18,300 --> 00:35:20,720 >> بنابراین در حال حاضر ما در حال بازگشت به تصویر آشنا است. 578 00:35:20,720 --> 00:35:22,960 بیشتر مسائل و حواس او را پرت بیشتری بر روی صفحه نمایش وجود دارد 579 00:35:22,960 --> 00:35:27,490 اما این بخش نور آبی رنگ است آن چیزی است که ما در حال نقاشی بر روی تخته سیاه را برای چیزی شبیه به مبادله. 580 00:35:27,490 --> 00:35:31,890 این قاب برای صنایع غذایی و تنها چیزی که در آن است در حال حاضر نوار است، 581 00:35:31,890 --> 00:35:34,630 که این پارامتر است. 582 00:35:34,630 --> 00:35:39,840 اما چه چیز دیگری باید در پشته می شود، با توجه به این کد را در اینجا؟ 583 00:35:39,840 --> 00:35:44,280 کاراکتر C [12]. بنابراین ما نیز باید به 12 مربع از حافظه را ببینید، 584 00:35:44,280 --> 00:35:46,260 اختصاص داده شده به یک متغیر به نام ج. 585 00:35:46,260 --> 00:35:48,340 و در واقع ما را که بر روی صفحه نمایش. 586 00:35:48,340 --> 00:35:51,650 بسیار بالا وجود دارد C [0]، و پس از آن نویسنده از این نمودار 587 00:35:51,650 --> 00:35:55,130 را به زحمت نمی رسم مربع اما در واقع وجود دارد 12 588 00:35:55,130 --> 00:36:00,120 چرا که اگر شما در سمت راست پایین نگاه کنید، c [11]، اگر شما از 0 تعداد، است که 12 بایت از جمله. 589 00:36:00,120 --> 00:36:06,190 اما در اینجا مشکل این است: که در آن مسیر C رو به رشد است؟ 590 00:36:06,190 --> 00:36:10,390 مرتب کردن بر اساس از بالا به پایین، درست است؟ اگر آن را در بالا شروع می شود و به پایین رشد می کند، 591 00:36:10,390 --> 00:36:13,480 به نظر نمیرسد مثل ما به سمت چپ خودمان باند زیادی در اینجا در همه. 592 00:36:13,480 --> 00:36:15,320 ما به نوعی خودمان را به گوشه نقاشی، 593 00:36:15,320 --> 00:36:20,210 و این که C [11] مناسب است تا در برابر بار، که مناسب است تا در برابر اشاره گر پشته قاب، 594 00:36:20,210 --> 00:36:23,800 که مناسب است تا در مقابل آدرس بازگشت، نه بیشتر اتاق وجود دارد. 595 00:36:23,800 --> 00:36:26,100 پس چه مفهوم، و سپس، اگر شما پیچ، 596 00:36:26,100 --> 00:36:30,460 و شما سعی می کنید به خواندن 20 کلمه در ادامه متن را به یک بافر 12-BYTE؟ 597 00:36:30,460 --> 00:36:33,460 کجا هستند آن 8 بایت اضافی برای رفتن؟ 598 00:36:33,460 --> 00:36:36,370 در داخل هر چیز دیگری که برخی از آنها فوق العاده مهم است. 599 00:36:36,370 --> 00:36:40,480 و مهم ترین چیز، به طور بالقوه، جعبه قرمز وجود دارد، آدرس بازگشت. 600 00:36:40,480 --> 00:36:44,720 از آنجا که فرض کنید که شما یا به طور تصادفی یا adversarially 601 00:36:44,720 --> 00:36:48,040 بازنویسی آن 4 بایت، که آدرس اشاره گر، 602 00:36:48,040 --> 00:36:53,190 فقط با زباله، اما با یک شماره است که اتفاق می افتد به نمایندگی از یک آدرس واقعی در حافظه نیست؟ 603 00:36:53,190 --> 00:36:55,930 چه implicaiton، منطقی است؟ 604 00:36:55,930 --> 00:36:59,080 [پاسخ دانشجویی، ناخوانا] >> دقیقا. وقتی صنایع غذایی می گرداند 605 00:36:59,080 --> 00:37:03,560 و بازدید که بریس فرفری، برنامه رفتن به ادامه به بخش اصلی برای بازگشت، 606 00:37:03,560 --> 00:37:08,320 آن را به بازگشت به هر آدرس در آن جعبه قرمز است. 607 00:37:08,320 --> 00:37:11,560 >> در حال حاضر، در مورد ثبت نام نرم افزار دور زدن، 608 00:37:11,560 --> 00:37:14,400 آدرس که در حال به بازگشته است تابع 609 00:37:14,400 --> 00:37:18,820 که به طور معمول می شود به نام بعد از شما که برای نرم افزار پرداخت می شود و کد ثبت نام خود را وارد کردهاید؟ 610 00:37:18,820 --> 00:37:23,160 شما می توانید از ترفند کامپیوتر را به قصد ندارم در اینجا مرتب کردن، اما به جای آن، بالا رفتن. 611 00:37:23,160 --> 00:37:27,950 یا، اگر شما واقعا باهوش، دشمن در واقع می تواند در در صفحه کلید تایپ، 612 00:37:27,950 --> 00:37:32,500 به عنوان مثال، نه یک کلمه واقعی است، نه 20 حرف است، اما فرض کنید که او 613 00:37:32,500 --> 00:37:36,200 انواع در برخی از کاراکترهایی که نشان دهنده کد؟ 614 00:37:36,200 --> 00:37:38,860 و آن را به کد C نخواهد بود، آن را به رفتن به شخصیت ها 615 00:37:38,860 --> 00:37:42,920 که نشان دهنده کدهای باینری به ماشین آلات، 0 و 1 است. 616 00:37:42,920 --> 00:37:46,740 اما فرض کنید که آنها هوشمندانه به اندازه کافی برای انجام این کار، به نحوی به اعلان GetString رب 617 00:37:46,740 --> 00:37:49,460 چیزی است که اساسا وارد شده کد، 618 00:37:49,460 --> 00:37:56,900 و 4 بایت آخر بازنویسی که آدرس بازگشت، و چه آدرس که ورودی انجام دهد؟ 619 00:37:56,900 --> 00:38:01,860 آن را در این مستطیل قرمز رنگ آدرس اولین بایت از بافر فروشگاه ها. 620 00:38:01,860 --> 00:38:04,270 بنابراین شما باید واقعا باهوش است، و این است که بسیاری از آزمون و خطا 621 00:38:04,270 --> 00:38:08,500 برای افراد بد وجود دارد، اما اگر شما می توانید شکل از این بافر چقدر بزرگ است، 622 00:38:08,500 --> 00:38:12,170 به طوری که کلمه در ادامه متن چند در ورودی است که شما به برنامه ارائه 623 00:38:12,170 --> 00:38:15,970 اتفاق می افتد به معادل از آغاز بافر خود را به آدرس، 624 00:38:15,970 --> 00:38:22,270 شما می توانید این کار را انجام دهند. اگر ما می گویند، به طور معمول، سلام، و \ 0، که چیزی است که به پایان می رسد تا در بافر است. 625 00:38:22,270 --> 00:38:27,860 اما اگر ما باهوش تر است، و ما با آنچه که ما عموما خواهید تماس بگیرید کد حمله را پر کنید که بافر، 626 00:38:27,860 --> 00:38:31,920 A، A، A، A: حمله، حمله، حمله، حمله، که در آن این است که تنها چیزی که کاری بد است. 627 00:38:31,920 --> 00:38:35,190 خب، چه اتفاقی می افتد اگر شما واقعا باهوش، شما ممکن است این کار را انجام دهند: 628 00:38:35,190 --> 00:38:41,740 در جعبه قرمز است دنباله ای از اعداد: 80، CO، 35، 08 می باشد. 629 00:38:41,740 --> 00:38:44,890 توجه داشته باشید که که منطبق شماره که تا اینجا. 630 00:38:44,890 --> 00:38:47,280 آن را در جهت معکوس است، اما بیشتر در مورد که برخی از زمان های دیگر است. 631 00:38:47,280 --> 00:38:51,430 توجه کنید که این آدرس بازگشت عمدا تغییر داده شده است 632 00:38:51,430 --> 00:38:54,970 را برابر آدرس در اینجا، نه آدرس اصلی. 633 00:38:54,970 --> 00:39:00,170 بنابراین اگر پسر بد هوشمند فوق العاده است، او در حال رفتن به در کد حمله که عبارتند از: 634 00:39:00,170 --> 00:39:02,890 چیزی شبیه به، حذف همه فایل های کاربر است. 635 00:39:02,890 --> 00:39:06,320 یا کپی کردن کلمه عبور، 'یا' ایجاد یک حساب کاربری است که من می توانم به وارد سیستم شوید. 636 00:39:06,320 --> 00:39:10,130 هر چیزی در همه، و این است که هر دو خطر و قدرت از C. 637 00:39:10,130 --> 00:39:12,900 از آنجا که شما باید دسترسی به حافظه از طریق اشاره گر 638 00:39:12,900 --> 00:39:15,950 و بنابراین شما می توانید هر چیزی که در حافظه کامپیوتر می خواهید ارسال کنید. 639 00:39:15,950 --> 00:39:19,290 شما می توانید یک کامپیوتر انجام دهید، هر چیزی که شما می خواهید به سادگی با 640 00:39:19,290 --> 00:39:22,780 پس از پرش در اطراف آن در فضای حافظه خود را. 641 00:39:22,780 --> 00:39:27,230 و بنابراین، برای این روز، به طوری که بسیاری از برنامه و بسیاری از وب سایت هایی که در معرض خطر هستند 642 00:39:27,230 --> 00:39:29,730 جوش پایین به مردم با استفاده از این. 643 00:39:29,730 --> 00:39:32,510 و این ممکن است مانند یک حمله فوق العاده پیچیده به نظر می رسد، 644 00:39:32,510 --> 00:39:34,220 اما این همیشه شروع که راه نیست. 645 00:39:34,220 --> 00:39:36,770 >> واقعیت این است که چه بد از مردم به طور معمول را انجام خواهد داد، 646 00:39:36,770 --> 00:39:41,470 که آیا این برنامه در خط فرمان و یا یک برنامه GUI و یا یک وب سایت، 647 00:39:41,470 --> 00:39:43,290 شما فقط ارائه مزخرف شروع می شود. 648 00:39:43,290 --> 00:39:46,940 شما در یک کلمه واقعا بزرگ را در قسمت جستجو وارد کنید و آمار را تایپ کنید، 649 00:39:46,940 --> 00:39:49,030 شما صبر کنید و اگر تصادفات وب سایت ها را ببینید. 650 00:39:49,030 --> 00:39:53,270 یا شما صبر کنید تا ببینید که آیا این برنامه آشکار برخی از پیام خطا. 651 00:39:53,270 --> 00:39:55,480 از آنجا که اگر شما خوش شانس، پسر بد، 652 00:39:55,480 --> 00:39:59,610 و به شما ارائه برخی از ورودی دیوانه است که سقوط این برنامه، 653 00:39:59,610 --> 00:40:02,280 این بدان معناست که برنامه نویس رفتار بد خود را پیش بینی کنید 654 00:40:02,280 --> 00:40:05,420 که بدین معناست که شما احتمالا می تواند با تلاش به اندازه کافی، 655 00:40:05,420 --> 00:40:09,870 آزمایش و خطا به اندازه کافی، کشف کردن که چگونه به راه انداختن یک حمله دقیق تر است. 656 00:40:09,870 --> 00:40:15,900 بنابراین به عنوان یک بخشی از امنیت است و نه فقط اجتناب از این حملات در مجموع، اما تشخیص آنها 657 00:40:15,900 --> 00:40:20,250 و در واقع در سیاهههای مربوط به دنبال دیدن چه ورودی دیوانه که مردم را به وب سایت خود را تایپ. 658 00:40:20,250 --> 00:40:26,040 چه عبارات جستجو مردم را به وب سایت خود را در امید سرشار برخی از بافر تایپ؟ 659 00:40:26,040 --> 00:40:28,900 و این همه جوش پایین به اصول ساده از یک آرایه، 660 00:40:28,900 --> 00:40:32,510 و چه آن معنی برای تخصیص و استفاده از حافظه؟ 661 00:40:32,510 --> 00:40:34,920 و مربوط به آن، بیش از حد، این است. 662 00:40:34,920 --> 00:40:37,520 >> بنابراین اجازه دهید فقط نگاه در داخل دیسک سخت دوباره. 663 00:40:37,520 --> 00:40:40,190 بنابراین شما به خاطر از یک یا دو هفته پیش که در زمانی که شما کشیدن فایل 664 00:40:40,190 --> 00:40:45,470 به بن خود را بازیافت و یا سطل زباله، چه اتفاقی می افتد؟ 665 00:40:45,470 --> 00:40:47,850 [دانشجو] هیچ چیز نیست. >> آره، مطلقا هیچ چیز. در نهایت اگر شما کم 666 00:40:47,850 --> 00:40:51,370 بر روی فضای هارد دیسک، ویندوز یا Mac OS شروع به پاک کردن فایل ها برای شما. 667 00:40:51,370 --> 00:40:53,670 اما اگر کشیدن چیزی در آن وجود دارد، سپس آن را در تمام امن نیست. 668 00:40:53,670 --> 00:40:56,550 عضو roomate، دوست و یا خانواده خود را به انجام دو برابر شده است، کلیک کنید و voila. 669 00:40:56,550 --> 00:40:59,720 تمام فایل های ناقص که شما سعی در حذف وجود دارد. 670 00:40:59,720 --> 00:41:02,840 بنابراین بسیاری از ما حداقل می دانیم که شما به راست کلیک کنید و یا کنترل کلیک کنید 671 00:41:02,840 --> 00:41:05,320 و خالی کردن سطل زباله، و یا چیزی شبیه به آن است. 672 00:41:05,320 --> 00:41:07,900 اما حتی پس از آن، که نمی تواند کاملا انجام ترفند. 673 00:41:07,900 --> 00:41:11,340 زیرا آنچه اتفاق می افتد زمانی که شما یک فایل را بر روی دیسک سخت خود را 674 00:41:11,340 --> 00:41:14,590 که نشان دهنده برخی از سند Word و یا برخی از JPEG است؟ 675 00:41:14,590 --> 00:41:18,820 و این نشان دهنده دیسک سخت خود، و اجازه دهید می گویند این بریدن در اینجا نشان دهنده آن فایل، 676 00:41:18,820 --> 00:41:21,640 و آن را از کل یک دسته از 0 و 1 تشکیل شده است. 677 00:41:21,640 --> 00:41:25,470 چه اتفاقی می افتد زمانی که شما نه تنها به کشیدن این فایل را به trashcan یا سطل بازیافت، 678 00:41:25,470 --> 00:41:30,390 بلکه آن را خالی؟ 679 00:41:30,390 --> 00:41:32,820 مرتب سازی بر اساس هیچ چیز نیست. مطلقا هیچ چیزی نیست. 680 00:41:32,820 --> 00:41:37,630 در حال حاضر آن را فقط به هیچ چیز، به خاطر یک چیزی کمی اتفاق می افتد در این جدول است. 681 00:41:37,630 --> 00:41:41,170 بنابراین نوعی از جدول پایگاه داده و یا در داخل حافظه کامپیوتر وجود دارد 682 00:41:41,170 --> 00:41:44,470 که اساسا به 1 ستون برای نام فایل، 683 00:41:44,470 --> 00:41:50,550 و 1 ستون برای محل فایل، جایی که ممکن است این محل 123، فقط یک عدد تصادفی است. 684 00:41:50,550 --> 00:41:58,270 بنابراین ما ممکن است چیزی مانند x.jpg، و 123 محل سکونت داشته باشد. 685 00:41:58,270 --> 00:42:02,870 و آنچه پس از آن اتفاق می افتد، زمانی که شما خالی از زباله های خود را؟ 686 00:42:02,870 --> 00:42:06,720 می رود که دور. اما آنچه بین نمی رود. 0 و 1 است. 687 00:42:06,720 --> 00:42:09,690 >> بنابراین چه چیزی است، پس از آن، اتصال به pset 4؟ 688 00:42:09,690 --> 00:42:13,460 خوب، با pset 4، فقط به خاطر ما که به طور تصادفی پاک شده 689 00:42:13,460 --> 00:42:15,890 کارت کامپکت فلش است که تا به حال همه از این عکس ها، 690 00:42:15,890 --> 00:42:18,710 یا فقط به این دلیل آن را بد شانس خراب شد، 691 00:42:18,710 --> 00:42:21,170 به این معنا نیست که 0 و 1 هنوز هم وجود دارد. 692 00:42:21,170 --> 00:42:23,920 شاید تعداد کمی از آنها گم بشه چون چیزی خراب کردم 693 00:42:23,920 --> 00:42:26,530 در این معنا که برخی از 0 1 و 1 شد شد 0 است. 694 00:42:26,530 --> 00:42:30,460 کارهای بد می تواند رخ دهد به دلیل اشکال از نرم افزار یا سخت افزار معیوب است. 695 00:42:30,460 --> 00:42:33,510 اما بسیاری از کسانی که بیت، شاید حتی 100٪ از آنها هنوز هم وجود دارد، 696 00:42:33,510 --> 00:42:38,330 آن را که فقط کامپیوتر و یا دوربین نمی دانم از کجا JPEG 1 697 00:42:38,330 --> 00:42:41,660 و که در آن JPEG 2 شروع شده است، اما اگر شما، برنامه نویس، 698 00:42:41,660 --> 00:42:45,800 می دانید، با کمی زرنگ و دانا، که در آن کسانی که عکس JPEG هستند و یا آنچه که آنها مانند نگاه، 699 00:42:45,800 --> 00:42:49,570 شما می توانید از 0 و 1 و تجزیه و تحلیل می گویند، "اوه. JPEG. آه، JPEG. 700 00:42:49,570 --> 00:42:52,830 شما می توانید یک برنامه را در اصل فقط برای ارسال و یا در حالی که حلقه 701 00:42:52,830 --> 00:42:56,100 که هر یک از آن فایل ها را بازیابی. 702 00:42:56,100 --> 00:42:59,360 پس درس پس از آن، این است که شروع به "امن" پاک کردن فایل های خود را 703 00:42:59,360 --> 00:43:01,720 اگر شما می خواهم برای جلوگیری از این در دسترس نباشد. بله؟ 704 00:43:01,720 --> 00:43:06,940 [سوال دانشجو، ناخوانا] 705 00:43:06,940 --> 00:43:11,150 >> دارای حافظه بیشتری از شما قبل از انجام - 706 00:43:11,150 --> 00:43:14,790 آه! خوب سوال. پس چرا، پس از آن، بعد از تخلیه سطل زباله، 707 00:43:14,790 --> 00:43:18,300 کامپیوتر خود را به شما بگویم که شما باید فضای آزاد بیشتر از شما قبل از انجام؟ 708 00:43:18,300 --> 00:43:22,450 به طور خلاصه، به دلیل آن را دروغ می گوید. با مشخصات فنی، شما دارای فضای بیشتری است. 709 00:43:22,450 --> 00:43:26,720 از آنجا که در حال حاضر شما گفته اند، شما می توانید چیزهای دیگر را که در آن است که فایل یک بار قرار بود، 710 00:43:26,720 --> 00:43:28,930 اما این به این معنا نیست که این بیت ها رفتن به دور، 711 00:43:28,930 --> 00:43:33,070 و این به این معنا نیست که این بیت ها در حال تغییر همه 0، برای مثال، برای حفاظت از حقوق شما است. 712 00:43:33,070 --> 00:43:37,520 در مقابل، اگر شما "امن" فایلهای پاک کردن، و یا از نظر جسمی نابود کردن دستگاه، 713 00:43:37,520 --> 00:43:40,810 که واقعا تنها راه است، گاهی اوقات، در اطراف آن است. 714 00:43:40,810 --> 00:43:45,300 پس چرا در آن توجه داشته باشید نیمه ترسناک نیست را ترک کند، و ما شما را در روز دوشنبه را ببینید. 715 00:43:45,300 --> 00:43:52,810 CS50.TV