1 00:00:00,000 --> 00:00:02,700 [Powered by Google Translate] [Walkthrough - تنظیم سوال 4] 2 00:00:02,700 --> 00:00:05,000 [Zamyla چان - دانشگاه هاروارد 3 00:00:05,000 --> 00:00:07,340 [این CS50 است. - CS50.TV] 4 00:00:08,210 --> 00:00:11,670 بسیار خوب. خوش آمدید، هر کس، و به Walkthrough 4 خوش آمدید. 5 00:00:11,670 --> 00:00:14,270 >> امروز pset ما قانونی است. 6 00:00:14,270 --> 00:00:18,080 پزشکی قانونی pset واقعا سرگرم کننده است که شامل خرید و فروش با فایل های بیت مپ 7 00:00:18,080 --> 00:00:21,550 برای کشف که مرتکب جرم و جنایت. 8 00:00:21,550 --> 00:00:24,200 آنگاه ما در حال رفتن به تغییر اندازه برخی از فایل های بیت مپ، 9 00:00:24,200 --> 00:00:27,780 پس از آن ما در حال رفتن به مقابله با بخش واقعا سرگرم کننده به نام بازیابی، 10 00:00:27,780 --> 00:00:31,160 که در آن ما اساسا به دست کارت حافظه 11 00:00:31,160 --> 00:00:34,350 که در آن کسی به طور تصادفی حذف تمام فایل های خود را، 12 00:00:34,350 --> 00:00:38,860 و ما برای بازیابی آن فایل است. 13 00:00:38,860 --> 00:00:42,910 >> اما در ابتدا، قبل از اینکه ما به pset، من واقعا تبریک به همه می خواهم. 14 00:00:42,910 --> 00:00:45,230 ما در نقطه میانی این دوره است. 15 00:00:45,230 --> 00:00:50,070 امتحان است 0 پشت سر ما، و ما در pset4 هستید، بنابراین اساسا، ما در نیمه راه است. 16 00:00:50,070 --> 00:00:55,490 ما راه درازی را اگر شما نگاه به psets خود، pset0 و pset1، 17 00:00:55,490 --> 00:00:57,300 بنابراین خود را در مورد آن تبریک می گویم. 18 00:00:57,300 --> 00:01:00,760 و ما قصد داریم به برخی از مسائل واقعا سرگرم کننده است. 19 00:01:00,760 --> 00:01:07,070 >> بنابراین جعبه ابزار ما برای این pset، دوباره، به جای یام کنید: sudo-Y به روز رسانی در حال اجرا، 20 00:01:07,070 --> 00:01:13,890 ما قادر به اجرا update50 اگر شما در نسخه 17.3 و بالاتر از دستگاه هستید. 21 00:01:13,890 --> 00:01:17,380 بنابراین مطمئن شوید که برای اجرای update50 - آن را زیادی آسان تر، چند کاراکتر کمتر - 22 00:01:17,380 --> 00:01:20,640 مطمئن شوید که شما در آخرین نسخه از دستگاه هستید. 23 00:01:20,640 --> 00:01:25,410 به خصوص این مهم است که به update50 زمانی که ما شروع به استفاده از CS50 ورود. 24 00:01:25,410 --> 00:01:28,700 بنابراین مطمئن شوید که شما انجام این کار را. 25 00:01:28,700 --> 00:01:30,760 >> برای همه بخش برای این pset، 26 00:01:30,760 --> 00:01:34,350 ما در حال رفتن به خرید و فروش با ورودی و خروجی فایل، فایل I / O. 27 00:01:34,350 --> 00:01:38,140 ما در حال رفتن به رفتن بیش از بسیاری از برنامه هایی که با آرایه های مقابله 28 00:01:38,140 --> 00:01:40,350 با اشاره به فایل ها و چیزهایی شبیه به آن، 29 00:01:40,350 --> 00:01:43,050 بنابراین ما می خواهیم مطمئن شوید که ما که واقعا آشنا و راحت 30 00:01:43,050 --> 00:01:47,990 خرید و فروش چگونه به ورودی و خروجی را به فایل. 31 00:01:47,990 --> 00:01:52,080 >> در کد توزیع برای این pset یک فایل به نام copy.c 32 00:01:52,080 --> 00:01:55,280 و این چیزی است که ما قصد داریم برای پیدا کردن واقعا برای ما مفید خواهد بود 33 00:01:55,280 --> 00:02:00,340 از آنجا که ما در حال رفتن برای پایان دادن به در واقع کپی کردن فایل copy.c 34 00:02:00,340 --> 00:02:05,350 و فقط آن را تغییر کمی به قادر به دستیابی به 2 قسمت اول از مجموعه مشکل است. 35 00:02:05,350 --> 00:02:09,030 >> و به این ترتیب پس از آن به عنوان اشاره کردم، ما در حال برخورد با مپ و همچنین عکس JPEG. 36 00:02:09,030 --> 00:02:13,170 بنابراین واقعا درک ساختار این فایل ها را سازماندهی، 37 00:02:13,170 --> 00:02:16,170 چگونه ما واقعا می تواند 0s و 1S به ساختمانها ترجمه 38 00:02:16,170 --> 00:02:19,040 و چیزهایی است که ما در واقع می تواند درک و تفسیر و ویرایش 39 00:02:19,040 --> 00:02:21,000 خواهد بود که واقعا مهم است، 40 00:02:21,000 --> 00:02:25,970 پس رفتن به JPEG و فایل های بیت مپ و درک ساختار آنها است. 41 00:02:25,970 --> 00:02:30,780 >> Pset4، به طور معمول، با یک بخش از سوالات شروع می شود. 42 00:02:30,780 --> 00:02:36,600 کسانی که به مقابله با فایل های I / O و شما به آن عادت کرده اند. 43 00:02:36,600 --> 00:02:42,520 سپس قسمت 1، داستان پلیسی است، که در آن شما در حال با توجه به یک فایل بیت مپ 44 00:02:42,520 --> 00:02:45,630 که به نظر می رسد نوع مانند نقطه قرمز بیش از همه. 45 00:02:45,630 --> 00:02:52,180 و پس از آن اساسا چیزی است که ما قصد انجام است که این فایل و فقط کمی آن را ویرایش کنید 46 00:02:52,180 --> 00:02:54,010 به نسخه ای که ما قادر به خواندن. 47 00:02:54,010 --> 00:02:56,000 اساسا، هنگامی که ما به پایان برسد، ما به همان فایل، 48 00:02:56,000 --> 00:03:02,630 به جز ما قادر خواهید بود برای دیدن پیام های مخفی توسط تمام کسانی که نقطه قرمز. 49 00:03:02,630 --> 00:03:07,310 سپس تغییر اندازه یک برنامه است که با توجه به یک فایل است 50 00:03:07,310 --> 00:03:11,490 و پس از آن با توجه به نام فایل است که آن را در خروجی و سپس با توجه به تعداد و همچنین، 51 00:03:11,490 --> 00:03:16,850 در واقع که بیت مپ است که مقدار صحیح آن، اندازه آن را تغییر. 52 00:03:16,850 --> 00:03:19,240 سپس در نهایت، ما باید بازیابی pset. 53 00:03:19,240 --> 00:03:24,160 ما داده می شود یک کارت حافظه است و پس از آن برای بازیابی تمام عکس ها 54 00:03:24,160 --> 00:03:25,920 که به طور تصادفی پاک شده اند. 55 00:03:25,920 --> 00:03:31,420 اما، همانطور که ما باید یاد بگیرند، در واقع نه حذف شده و حذف از فایل؛ 56 00:03:31,420 --> 00:03:38,470 ما فقط از نوع از دست داده است که آنها را در فایل بود، اما ما قصد داریم برای بازیابی آن. 57 00:03:38,470 --> 00:03:44,950 >> بزرگ است. بنابراین رفتن به فایل های I / O به طور خاص، این یک لیست کامل از توابع است که شما با استفاده از. 58 00:03:44,950 --> 00:03:49,840 شما در حال حاضر دیده می شود کمی اصول fopen، fread، و fwrite، 59 00:03:49,840 --> 00:03:54,350 اما ما قصد داریم که به دنبال بیشتر به برخی از فایل I / O مانند fputc، 60 00:03:54,350 --> 00:03:56,930 که در آن شما فقط یکی از شخصیت ها را در یک زمان ارسال، 61 00:03:56,930 --> 00:04:02,000 به fseek، جایی که شما نوع از حرکت نشانگر موقعیت فایل ها به جلو و عقب، 62 00:04:02,000 --> 00:04:05,770 و پس از آن برخی از دیگران است. اما ما خواهید به آن بروید و کمی بعد در طول pset. 63 00:04:08,050 --> 00:04:13,100 >> بنابراین، فقط به فایل I / O قبل از اینکه ما به pset، 64 00:04:13,100 --> 00:04:19,860 برای باز کردن یک فایل، برای مثال، آنچه که شما باید انجام دهید این است در واقع اشاره گر به آن فایل است. 65 00:04:19,860 --> 00:04:22,710 بنابراین ما باید یک فایل اشاره گر *. 66 00:04:22,710 --> 00:04:27,140 در این مورد، من خواستار آن در اشاره گر که به دلیل رفتن به infile من. 67 00:04:27,140 --> 00:04:33,340 و بنابراین من قصد دارم برای استفاده از تابع fopen و پس از آن نام فایل 68 00:04:33,340 --> 00:04:36,360 و پس از آن حالت که در آن من می خواهم به خرید و فروش با فایل. 69 00:04:36,360 --> 00:04:42,080 بنابراین "R" در این مورد برای خواندن، "W" برای نوشتن، و سپس "A" برای الحاق وجود دارد. 70 00:04:42,080 --> 00:04:44,270 به عنوان مثال، هنگامی که شما در حال خرید و فروش با infile 71 00:04:44,270 --> 00:04:47,310 و همه شما می خواهید برای انجام این کار این است که خواندن بیت و بایت ذخیره می شود وجود دارد، 72 00:04:47,310 --> 00:04:50,420 و سپس شما احتمالا مایل به استفاده از "R" را به عنوان حالت شما. 73 00:04:50,420 --> 00:04:54,520 هنگامی که شما می خواهید به نوشتن در واقع، نوعی از ایجاد یک فایل جدید، 74 00:04:54,520 --> 00:04:57,220 پس از آن چه ما قصد داریم برای انجام این کار این است که ما قصد داریم برای باز کردن فایل جدید 75 00:04:57,220 --> 00:05:02,410 و با استفاده از حالت "W" برای نوشتن. 76 00:05:02,410 --> 00:05:07,540 >> بنابراین پس از آن زمانی که شما در واقع به فایل خواندن، ساختار به شرح زیر است. 77 00:05:07,540 --> 00:05:14,930 در ابتدا شما شامل اشاره گر به ساختار است که کلمه در ادامه متن است که شما در حال خواندن داشته باشد. 78 00:05:14,930 --> 00:05:19,830 به طوری که برای رفتن به محل پایان کلمه در ادامه متن است که شما در حال خواندن است. 79 00:05:19,830 --> 00:05:23,360 شما سپس رفتن به نشان می دهد که اندازه، مانند اساسا چند بایت 80 00:05:23,360 --> 00:05:30,100 برنامه شما برای خواندن فایل، اندازه اساسا یک عنصر است، 81 00:05:30,100 --> 00:05:32,620 و سپس شما را در حال رفتن به مشخص کنید که چگونه بسیاری از عناصر که می خواهید به خواندن. 82 00:05:32,620 --> 00:05:34,980 و پس از آن در نهایت، شما باید بدانید که در آن شما در حال خواندن از، 83 00:05:34,980 --> 00:05:37,580 به طوری که رفتن به اشاره گر خود را در. 84 00:05:37,580 --> 00:05:41,780 من رنگی، اما به دلیل fread است نیز بسیار شبیه به fwrite، 85 00:05:41,780 --> 00:05:47,050 به جز شما می خواهید مطمئن شوید که شما با استفاده از راست، 86 00:05:47,050 --> 00:05:51,960 مطمئن شوید که شما در واقع به نوشتن یا خواندن از فایل راست. 87 00:05:54,910 --> 00:05:58,610 >> بنابراین پس از آن به عنوان قبل از، اگر ما به اندازه این عنصر همچنین به عنوان تعدادی از عناصر، 88 00:05:58,610 --> 00:06:00,600 پس از آن ما می توانیم در سراسر بازی در اینجا یک کمی. 89 00:06:00,600 --> 00:06:06,810 بگویم که یک ساختار سگ و بنابراین پس از آن من می خواهم به خواندن دو سگ در یک زمان. 90 00:06:06,810 --> 00:06:12,450 چیزی که من می تواند انجام دهد این است که می گویند به اندازه یک عنصر است برای رفتن به اندازه یک سگ 91 00:06:12,450 --> 00:06:14,770 و من قصد دارم به دو نفر از آنها در واقع خواندن. 92 00:06:14,770 --> 00:06:18,290 روش دیگر، آنچه که من می تواند انجام دهد این است که می گویند من فقط رفتن به خواندن یک عنصر 93 00:06:18,290 --> 00:06:21,340 و این که یک عنصر به اندازه دو سگ. 94 00:06:21,340 --> 00:06:24,320 به طوری که شبیه شما می توانید نوع بازی در اطراف با اندازه و تعداد 95 00:06:24,320 --> 00:06:28,250 بسته بر روی چه چیزی بیشتر در شهودی به شما. 96 00:06:28,250 --> 00:06:30,810 >> بسیار خوب. بنابراین در حال حاضر ما به فایل های نوشتن. 97 00:06:30,810 --> 00:06:36,880 هنگامی که شما می خواهید برای نوشتن یک فایل، بحث اول است که در واقع که در آن شما در حال خواندن از. 98 00:06:36,880 --> 00:06:42,050 به طوری که اساسا داده هایی را که می خواهید به فایل ارسال 99 00:06:42,050 --> 00:06:44,490 است که اشاره گر در پایان. 100 00:06:44,490 --> 00:06:47,670 بنابراین، هنگامی که شما در حال خرید و فروش با pset، مطمئن شوید که شما اشتباه است. 101 00:06:47,670 --> 00:06:50,480 شاید طرف تعاریف در کنار داشته باشد. 102 00:06:50,480 --> 00:06:58,090 شما می توانید تعاریف کشیدن در کتابچه راهنمای کاربر با تایپ کردن مرد و پس از آن، به عنوان مثال fwrite، 103 00:06:58,090 --> 00:06:59,950 در ترمینال، یا شما می توانید مراجعه کنید به این اسلاید 104 00:06:59,950 --> 00:07:03,570 و مطمئن شوید که شما با استفاده از یک حق است. 105 00:07:03,570 --> 00:07:08,700 تا دوباره، fwrite، هنگامی که شما یک فایل را که شما می خواهید برای نوشتن به، 106 00:07:08,700 --> 00:07:14,290 که رفتن به استدلال گذشته و این که برای رفتن به یک اشاره گر به آن فایل است. 107 00:07:14,290 --> 00:07:18,670 بنابراین پس از آن که چگونه ما با شاید نوشتن بایت های مختلف در یک زمان، 108 00:07:18,670 --> 00:07:21,820 اما می گویند که شما می خواهید فقط فقط در یک شخصیت واحد ارسال. 109 00:07:21,820 --> 00:07:25,940 همانطور که بعدا خواهید دید که در این مثال در مپ ما باید به استفاده از آن. 110 00:07:25,940 --> 00:07:32,180 زمانی که ما می توانیم با استفاده از fputc، اساسا فقط با قرار دادن یکی از شخصیت ها در یک زمان، CHR، 111 00:07:32,180 --> 00:07:37,050 اشاره گر به اشاره گر فایل، و این خارج از ما وجود دارد. 112 00:07:38,700 --> 00:07:41,560 بنابراین پس از آن هر زمان که ما به دنبال و یا نوشتن در یک فایل، 113 00:07:41,560 --> 00:07:44,690 فایل پیگیری ما در آن هستیم. 114 00:07:44,690 --> 00:07:47,810 پس از آن یک نوع اشاره گر، نشانگر موقعیت فایل است. 115 00:07:47,810 --> 00:07:54,330 و تا هر زمان که ما نوشتن و یا خواندن دوباره به یک فایل، 116 00:07:54,330 --> 00:07:56,760 فایل در واقع به یاد می آورد که در آن است، 117 00:07:56,760 --> 00:07:59,270 و پس از آن از جایی که مکان نما است همچنان ادامه دارد. 118 00:07:59,270 --> 00:08:03,970 این می تواند مفید هنگامی که شما می خواهید، می گویند، خواندن در یک مقدار مشخصی برای انجام کاری 119 00:08:03,970 --> 00:08:06,160 و سپس در مقدار زیر به عنوان خوانده شده 120 00:08:06,160 --> 00:08:10,700 اما گاهی اوقات ممکن است بخواهید برای رفتن به عقب و یا در واقع شروع از یک مقدار مرجع خاص. 121 00:08:10,700 --> 00:08:16,870 پس تابع fseek، آنچه در آن می کند، اجازه می دهد تا ما را به حرکت مکان نما در یک فایل خاص 122 00:08:16,870 --> 00:08:19,680 تعداد خاصی از کلمه در ادامه متن. 123 00:08:19,680 --> 00:08:24,260 و سپس آنچه که ما باید انجام دهیم این است که مشخص کنید که در آن مقدار مرجع است. 124 00:08:24,260 --> 00:08:31,520 بنابراین یا از آن حرکت به جلو یا رو به عقب از جایی که مکان نما در حال حاضر، 125 00:08:31,520 --> 00:08:35,750 یا ما می توانید مشخص کنید که فقط باید از حرکت در ابتدا از فایل 126 00:08:35,750 --> 00:08:37,090 و یا از انتهای فایل. 127 00:08:37,090 --> 00:08:41,230 و بنابراین شما می توانید در ارزش های منفی و یا مثبت به مقدار عبور 128 00:08:41,230 --> 00:08:44,960 و این نوع از حرکت مکان نما یا جلو و یا عقب. 129 00:08:46,170 --> 00:08:51,920 >> قبل از اینکه ما به psets دیگر، هر گونه سوال در مورد فایل I / O؟ 130 00:08:53,860 --> 00:08:59,990 باشه. همانطور که ما به مثالهای بیشتر، احساس رایگان به من برای متوقف کردن سوالات. 131 00:08:59,990 --> 00:09:06,930 >> بنابراین در داستان پلیسی، شما دست به یک فایل بیت مپ شبیه به این یکی رنگ قرمز بر روی اسلاید 132 00:09:06,930 --> 00:09:14,510 و آن را مانند این به نظر می رسد - یک دسته از نقاط قرمز - و شما واقعا نمی دانند چه چیزی نوشته شده است. 133 00:09:14,510 --> 00:09:23,310 اگر شما چپ نگاه کردن، شما ممکن است قادر به دیدن اندکی رنگ مایل به آبی در داخل وسط. 134 00:09:23,310 --> 00:09:26,270 اساسا، در آنجا بود که از متن ذخیره شده است. 135 00:09:26,270 --> 00:09:30,270 قتل بود که اتفاق افتاده است وجود دارد، و ما باید برای پیدا کردن که آن را انجام داد. 136 00:09:30,270 --> 00:09:36,760 به منظور انجام این کار، ما نیاز به نوعی این تصویر را به فرمت قابل خواندن تبدیل. 137 00:09:36,760 --> 00:09:42,740 اگر شما بچه ها همیشه مواجه می شوند، گاهی اوقات می تواند وجود داشته باشد کیت کوچک 138 00:09:42,740 --> 00:09:48,510 که در آن شما می توانید از یک ذره بین با یک فیلم قرمز داشته باشد. هر کس؟ آره. 139 00:09:48,510 --> 00:09:52,770 بنابراین شما چیزی دست شبیه به این خواهد بود، شما می توانید یک شیشه بزرگ داشته باشید. 140 00:09:52,770 --> 00:09:58,130 با فیلم قرمز بیش از آن، شما می توانید آن را بر روی تصویر قرار دهید، 141 00:09:58,130 --> 00:10:03,410 و شما قادر خواهد بود برای دیدن این پیام پنهان در آن. 142 00:10:03,410 --> 00:10:07,080 ما ذره با فیلم قرمز را ندارد، بنابراین به جای ما در حال رفتن به نوع خود را ایجاد ما 143 00:10:07,080 --> 00:10:09,060 در این pset. 144 00:10:09,060 --> 00:10:15,760 و به این ترتیب کاربر رفتن به رمان پلیسی ورودی، پس از آن نشانه، BMP، 145 00:10:15,760 --> 00:10:18,800 به طوری که infile، این پیام نقطه قرمز، 146 00:10:18,800 --> 00:10:23,550 و سپس به آنها گفت: verdict.bmp رفتن به outfile ما. 147 00:10:23,550 --> 00:10:27,900 پس از آن برای ایجاد یک تصویر بیت مپ جدید شبیه به یک سرنخ 148 00:10:27,900 --> 00:10:32,600 به جز در یک فرمت قابل خواندن است که در آن ما می توانیم پیام پنهان را ببینید. 149 00:10:32,600 --> 00:10:37,550 >> از آنجا که ما در حال رفتن به خرید و فروش با ویرایش و دستکاری مپ برخی از مرتب کردن بر اساس: 150 00:10:37,550 --> 00:10:42,400 ما قصد داریم به نوع شیرجه به ساختار این فایل بیت مپ. 151 00:10:42,400 --> 00:10:48,130 ما بیش از این بیت کمی در سخنرانی رفت، اما بیایید نگاهی به برخی از آنها بیشتر است. 152 00:10:48,130 --> 00:10:51,740 مپ اساسا فقط ترتیب کلمه در ادامه متن 153 00:10:51,740 --> 00:10:55,790 جایی که ما کرده ایم مشخص شده که بایت آنچه. 154 00:10:55,790 --> 00:11:00,540 بنابراین در اینجا این است که به نوعی مانند یک نقشه از تصویر بیت مپ 155 00:11:00,540 --> 00:11:08,550 و گفت که آن را با برخی از فایل هدر شروع می شود، شروع می شود با برخی از اطلاعات در آن وجود دارد. 156 00:11:08,550 --> 00:11:16,540 شما می بینید که در مورد تعداد بایت 14 اندازه از تصویر بیت مپ نشان داده شده، 157 00:11:16,540 --> 00:11:18,520 و از آن همچنان ادامه دارد. 158 00:11:18,520 --> 00:11:23,810 اما پس از آن چیزی است که ما واقعا علاقه مند در اینجا این است که به شروع اطراف شماره BYTE 54. 159 00:11:23,810 --> 00:11:26,060 ما باید این سه RGB. 160 00:11:26,060 --> 00:11:30,760 آنچه که به انجام است که شامل پیکسل های واقعی، مقدار رنگ. 161 00:11:30,760 --> 00:11:35,950 همه چیز در بالا که در هدر برخی از اطلاعات است 162 00:11:35,950 --> 00:11:41,240 مربوط به اندازه تصویر، عرض تصویر و ارتفاع است. 163 00:11:41,240 --> 00:11:44,930 هنگامی که ما را به بالشتک به بعد، خواهیم دید که چرا اندازه تصویر 164 00:11:44,930 --> 00:11:48,670 از عرض یا ارتفاع ممکن است متفاوت باشد. 165 00:11:48,670 --> 00:11:54,240 پس از آن برای نشان دادن این - این تصاویر بیت مپ، دنباله ای از بایت - 166 00:11:54,240 --> 00:11:59,370 آنچه که ما می توانیم انجام دهیم این است می گویند بسیار خوب، من قصد دارم به خاطر داشته باشید که در اول 14، 167 00:11:59,370 --> 00:12:03,380 که که در آن اندازه است، به عنوان مثال، اما در عوض چیزی است که ما قصد داریم برای انجام این کار به آسانتر کردن این امر 168 00:12:03,380 --> 00:12:06,020 است که آن را در محفظهای قرار دادن در یک ساختار است. 169 00:12:06,020 --> 00:12:08,880 و بنابراین ما باید دو ساختمانها ساخته شده است برای ما، یک BITMAPFILEHEADER 170 00:12:08,880 --> 00:12:10,440 و BITMAPINFOHEADER، 171 00:12:10,440 --> 00:12:14,840 و بنابراین، هر زمان که به آن فایل، به طور پیش فرض آن را به رفتن به رفتن به منظور 172 00:12:14,840 --> 00:12:22,360 و بنابراین در آن را نیز به پر کردن به متغیرهایی مانند biWidth و biSize. 173 00:12:25,270 --> 00:12:31,230 و سپس در نهایت، هر پیکسل توسط سه کلمه در ادامه متن نشان داده شده است. 174 00:12:31,230 --> 00:12:35,500 اول این است که مقدار آبی در پیکسل، دوم میزان سبز است، 175 00:12:35,500 --> 00:12:41,120 و در نهایت، مقدار رنگ قرمز، که در آن 0 است اساسا هیچ آبی یا سبز و یا بدون قرمز 176 00:12:41,120 --> 00:12:43,720 و سپس FF به حداکثر ارزش افزوده است. 177 00:12:43,720 --> 00:12:46,800 این مقادیر هگزادسیمال است. 178 00:12:46,800 --> 00:12:53,870 پس اگر ما FF0000، پس از آن که مربوط به حداکثر مقدار آبی 179 00:12:53,870 --> 00:12:58,890 و پس از آن هیچ سبز و نه قرمز، به طوری که پس از آن خواهد بود که ما یک پیکسل آبی به من بدهید. 180 00:12:58,890 --> 00:13:04,190 پس اگر همه ما FF را در سراسر هیئت مدیره، پس از آن که این بدان معنی است که ما باید یک پیکسل سفید می باشد. 181 00:13:04,190 --> 00:13:11,370 این نوع از مخالف به طور معمول این است که وقتی می گوییم RGB می باشد. در واقع رفتن BGR. 182 00:13:12,750 --> 00:13:18,990 >> بنابراین اگر ما در واقع به عنوان مثال یک تصویر بیت مپ - بهتر است یک جلو و من اینجا. 183 00:13:31,560 --> 00:13:33,830 این کوچک کم است. 184 00:13:39,890 --> 00:13:47,840 من زوم کردن در، و ما می توانیم آن را pixelated. مانند بلوک های رنگ به نظر می رسد. 185 00:13:47,840 --> 00:13:50,110 شما باید بلوک های سفید و پس از آن بلوک قرمز است. 186 00:13:50,110 --> 00:13:53,700 اگر شما در رنگ مایکروسافت بازی، به عنوان مثال، شما می توانید چیزی شبیه به آن را 187 00:13:53,700 --> 00:13:58,960 توسط اساسا فقط نقاشی مربع خاصی در یک نظم خاص است. 188 00:13:58,960 --> 00:14:08,060 بنابراین پس از این ترجمه به بیت مپ به شرح زیر است. 189 00:14:08,060 --> 00:14:15,710 در اینجا ما باید پیکسل اول سفید، که تمام 6 اف، و پس از آن دارای پیکسل های قرمز، 190 00:14:15,710 --> 00:14:19,910 نشان داده شده توسط 0000ff. 191 00:14:19,910 --> 00:14:27,940 و به این ترتیب دنباله ای از بایت ها است که ما نشان می دهد که چگونه تصویر بیت مپ است رفتن به نگاهی. 192 00:14:27,940 --> 00:14:32,230 پس آنچه که من انجام داده ام در اینجا فقط نوشته شده است از تمام کسانی که بایت و سپس به رنگ قرمز 193 00:14:32,230 --> 00:14:37,550 به طوری که شما از نوع مشاهده می کنید، اگر شما چپ کمی، چگونه است که نوع نشان می دهد یک صورت خندان. 194 00:14:40,180 --> 00:14:46,390 >> راه که تصاویر بیت مپ کار این است که من آن را پیش بینی اساسا به عنوان یک شبکه. 195 00:14:46,390 --> 00:14:54,940 و به این ترتیب به طور پیش فرض، هر ردیف از شبکه است که باید مضربی از 4 بایت است. 196 00:15:00,520 --> 00:15:07,060 اگر ما در یک تصویر بیت مپ نگاه کنید، شما در حال پر کردن در هر مقدار. 197 00:15:07,060 --> 00:15:17,370 به عنوان مثال، شما ممکن است یک قرمز در اینجا، سبز، آبی در اینجا، 198 00:15:17,370 --> 00:15:24,950 اما شما باید مطمئن شوید که تصویر در با چند چهار بایت پر. 199 00:15:24,950 --> 00:15:32,200 پس اگر من می خواهم تصویر من به عرض سه بلوک، پس از آن من خواهد بود که برای قرار دادن یک مقدار خالی 200 00:15:32,200 --> 00:15:35,640 در یکی از آخرین، آن را به مضربی از چهار است. 201 00:15:35,640 --> 00:15:39,530 بنابراین پس از آن من می خواهم در چیزی است که ما خواستار بالشتک اضافه کنید. 202 00:15:39,530 --> 00:15:43,750 من فقط رفتن وجود دارد که با X نشان می دهد. 203 00:15:44,920 --> 00:15:54,160 اکنون می گویند ما می خواهیم یک تصویر است که 7 پیکسل طولانی، به عنوان مثال. 204 00:15:54,160 --> 00:15:59,550 ما 1، 2، 3، 4، 5، 6، 7، 205 00:16:04,750 --> 00:16:07,000 و همه که با رنگ پر شده است. 206 00:16:07,000 --> 00:16:10,620 راهی که تصاویر بیت مپ کار این است که ما نیاز به 8 می باشد. 207 00:16:10,620 --> 00:16:12,460 در حال حاضر ما باید 1، 2، 3، 4، 5، 6، 7. 208 00:16:12,460 --> 00:16:19,360 ما باید 8 فاصله ها را برای تصویر بیت مپ به خواندن به درستی. 209 00:16:19,360 --> 00:16:25,600 بنابراین پس از آنچه ما باید انجام دهیم این است فقط در یک بیت از بالشتک اضافه کنید 210 00:16:25,600 --> 00:16:29,430 مطمئن شوید که تمام عرض یکسان 211 00:16:29,430 --> 00:16:34,260 و این که تمام عرض مضربی از 4 است. 212 00:16:42,110 --> 00:16:47,310 و بنابراین من قبلا نشان داد، بالشتک به عنوان یک X یا یک خط پرپیچ وتاب ولول خور، 213 00:16:47,310 --> 00:16:53,880 اما در بیت مپ تصاویر واقعی بالشتک توسط یک 0 هگزادسیمال نشان داده شده است. 214 00:16:53,880 --> 00:16:57,340 به طوری که می تواند یک شخصیت واحد، 0. 215 00:16:58,980 --> 00:17:06,329 چه چیزی ممکن است می آیند در دستی فرمان xxd است. 216 00:17:06,329 --> 00:17:11,220 چه میکند در واقع به شما نشان می دهد، دوست دارم شبیه به آنچه که من قبل از اینکه با لبخند 217 00:17:11,220 --> 00:17:15,630 زمانی که من در واقع چاپ کردن آنچه که هر یک از رنگ پیکسل 218 00:17:15,630 --> 00:17:21,800 و سپس آن را رنگ کد گذاری، زمانی که شما با دستورات زیر اجرا xxd 219 00:17:21,800 --> 00:17:28,670 سپس آن را در واقع از چاپ رنگ آن پیکسل است. 220 00:17:28,670 --> 00:17:33,810 چیزی که شما باید انجام دهید این است در اینجا به من نشان می دهد، مانند S-54 221 00:17:33,810 --> 00:17:36,530 می گوید که من قصد دارم در بایت 54 شروع 222 00:17:36,530 --> 00:17:40,820 چرا که قبل از آن، به یاد داشته باشید اگر ما نگاه به نقشه مپ 223 00:17:40,820 --> 00:17:42,690 که تمام اطلاعات مربوط به هدر و چیزهایی مثل آن. 224 00:17:42,690 --> 00:17:46,280 اما آنچه که ما واقعا در مورد مراقبت از پیکسل های واقعی است که نشان می دهد رنگ است. 225 00:17:46,280 --> 00:17:52,700 بنابراین با اضافه کردن در آن پرچم،-S 54، پس از آن ما قادر به دیدن ارزشهای رنگ. 226 00:17:52,700 --> 00:17:56,020 و در مورد پرچم های پیچیده و چیزهایی مانند که نگران نباشید. 227 00:17:56,020 --> 00:18:05,020 در تنظیمات مشکل مجموعه، به شما جهت در مورد چگونگی استفاده از xxd به نمایش پیکسل داشته باشد. 228 00:18:07,070 --> 00:18:15,590 بنابراین اگر شما در اینجا، آن را به نوعی به نظر می رسد مانند یک جعبه سبز، این چیز کوچک. 229 00:18:15,590 --> 00:18:23,610 من 00ff00 گفت: اساسا هیچ آبی، بسیاری از سبز و نه قرمز رنگی است. 230 00:18:23,610 --> 00:18:26,370 به طوری که مربوط به رنگ سبز است. 231 00:18:26,370 --> 00:18:31,920 همانطور که می بینید در اینجا، ما یک مستطیل سبز است. 232 00:18:31,920 --> 00:18:36,660 این مستطیل سبز عرض تنها 3 پیکسل است، به طوری که پس از آن چیزی است که ما را مجبور به انجام 233 00:18:36,660 --> 00:18:44,350 مطمئن شوید که تصویر مختلف از 4 گسترده است اضافه کردن در بالشتک اضافی. 234 00:18:44,350 --> 00:18:49,460 و پس از این که شما چگونه این 0s و در اینجا است. 235 00:18:49,460 --> 00:18:54,510 این در واقع نتیجه از pset را تغییر اندازه دهید، 236 00:18:54,510 --> 00:19:01,350 اساسا در نظر گرفتن بیت مپ کوچک و سپس گسترش آن را توسط 4. 237 00:19:01,350 --> 00:19:09,380 و بنابراین، آنچه ما می بینیم این است که در واقع این تصویر 12 پیکسل گسترده است، اما 12 است که مضربی از 4 238 00:19:09,380 --> 00:19:12,940 و ما در واقع هیچ 0s و در پایان نمی بینم چرا که ما نیاز به اضافه کردن هر 239 00:19:12,940 --> 00:19:19,070 چرا که آن را به طور کامل خالی می باشند. این اتاق هیچ بیشتر ندارد. 240 00:19:20,720 --> 00:19:23,470 >> باشه. هرگونه سوال در مورد بالشتک؟ 241 00:19:25,150 --> 00:19:27,460 باشه. دانلود. 242 00:19:27,460 --> 00:19:32,520 >> همانطور که پیشتر نیز اشاره شد، این مپ فقط دنباله ای از بایت ها است. 243 00:19:32,520 --> 00:19:39,170 و بنابراین، آنچه که ما باید به جای نیاز به پیگیری که دقیقا تعداد بایت 244 00:19:39,170 --> 00:19:47,050 مربوط به یک عنصر خاص، ما در واقع ایجاد یک ساختار برای نشان دادن که. 245 00:19:47,050 --> 00:19:50,930 بنابراین آنچه که ما باید ساختار RGBTRIPLE است. 246 00:19:50,930 --> 00:19:54,590 هر زمان که شما یک نمونه از یک سه گانه RGB، 247 00:19:54,590 --> 00:20:00,970 دلیل این است که یک نوع تعریف ساختار، سپس شما می توانید متغیر rgbtBlue دسترسی داشته باشید. 248 00:20:00,970 --> 00:20:09,520 به همین ترتیب متغیر های سبز و قرمز است، که نشان می دهد چه مقدار آبی، سبز، و قرمز، 249 00:20:09,520 --> 00:20:11,580 به ترتیب، به شما داشته باشد. 250 00:20:11,580 --> 00:20:16,800 >> بنابراین اگر ما مجموعه ای متغیر آبی تا 0، سبز به FF، 251 00:20:16,800 --> 00:20:22,060 که حداکثر ارزش شما می توانید، و سپس متغیر قرمز مجموعه را به 0، 252 00:20:22,060 --> 00:20:27,870 سپس این سه گانه خاص RGB چه رنگی را نشان می دهد؟ >> [دانشجو] سبز. 253 00:20:27,870 --> 00:20:29,150 سبز است. دقیقا. 254 00:20:29,150 --> 00:20:34,480 رفتن به مفید باشد به دانستن است که هر زمان که شما یک نمونه از یک سه گانه RGB، 255 00:20:34,480 --> 00:20:41,340 آبی، سبز، و قرمز - - به طور جداگانه شما در واقع می توانید میزان رنگ دسترسی داشته باشید. 256 00:20:43,350 --> 00:20:54,900 >> حالا که ما در مورد ساختار آن صحبت کردیم، اجازه دهید یک نگاهی به فایل BMP. 257 00:20:54,900 --> 00:20:57,870 این ساختمانها ساخته شده را برای شما می باشد. 258 00:20:57,870 --> 00:21:01,820 در اینجا ما باید یک ساختار BITMAPFILEHEADER. 259 00:21:01,820 --> 00:21:07,610 از علاقه به اندازه. 260 00:21:07,610 --> 00:21:12,660 بعدها، در حال حاضر اطلاعات هدر، است که چند چیز که جالب به ما، 261 00:21:12,660 --> 00:21:15,480 یعنی به اندازه، عرض، و ارتفاع. 262 00:21:15,480 --> 00:21:19,170 همانطور که خواهیم به بعد، هنگامی که شما به فایل خواندن، 263 00:21:19,170 --> 00:21:25,500 آن را به طور خودکار در چرا که ایم مجموعه به همان خوانده شده. 264 00:21:25,500 --> 00:21:31,990 بنابراین biSize کلمه در ادامه متن سمت راست که مربوط به اندازه واقعی تصویر را داشته باشد. 265 00:21:34,700 --> 00:21:40,500 و سپس در اینجا، در نهایت، به عنوان مورد صحبت کرده ایم، ما ساختار RGBTRIPLE typedef. 266 00:21:40,500 --> 00:21:46,840 ما rgbtBlue، سبز، و قرمز در ارتباط با آن است. 267 00:21:48,210 --> 00:21:49,340 >> بزرگ است. باشه. 268 00:21:49,340 --> 00:21:56,360 حالا که ما را در درک مپ کمی درک کنند که ما باید هدر فایل 269 00:21:56,360 --> 00:22:00,790 و هدر اطلاعات مرتبط با آن و پس از آن، ما باید چیزهای جالب 270 00:22:00,790 --> 00:22:05,110 از رنگ ها، و کسانی که رنگ توسط ساختمانها RGBTRIPLE نشان داده شده است، 271 00:22:05,110 --> 00:22:12,710 و کسانی که، به نوبه خود، دارای سه مقدار مربوط به آبی، سبز و قرمز است. 272 00:22:12,710 --> 00:22:17,270 >> بنابراین در حال حاضر، ما می توانیم نوع فکر می کنم در مورد بازیابی کمی است. 273 00:22:17,270 --> 00:22:20,130 متأسفم. فکر می کنم در مورد رمان پلیسی. 274 00:22:20,130 --> 00:22:25,750 هنگامی که ما فایل سرنخ ما، پس از آن چیزی که ما می خواهیم انجام دهیم این است که به آن پیکسل با پیکسل 275 00:22:25,750 --> 00:22:33,860 و پس از آن به نحوی از این پیکسل به طوری که ما می توانیم آن را به یک فرمت قابل خواندن خروجی را تغییر دهید. 276 00:22:33,860 --> 00:22:41,020 و تا به آن خروجی، ما در حال رفتن به نوشتن پیکسل به پیکسل را در فایل verdict.bmp. 277 00:22:41,020 --> 00:22:45,120 این نوع از حد زیادی به کار است. ما درک میکنیم که. 278 00:22:45,120 --> 00:22:49,860 بنابراین آنچه که ما انجام داده ایم این است که ما در واقع شما با ارائه copy.c. 279 00:22:49,860 --> 00:22:57,610 چه copy.c می کند فقط باعث می شود یک کپی دقیق از یک فایل بیت مپ داده شده و سپس خروجی آن است. 280 00:22:57,610 --> 00:23:01,900 بنابراین در حال حاضر این فایل را برای شما باز می شود، می خواند در پیکسل به پیکسل، 281 00:23:01,900 --> 00:23:04,510 و پس از آن می نویسد: به یک فایل خروجی می باشد. 282 00:23:04,510 --> 00:23:07,080 >> بیایید نگاهی به آن. 283 00:23:13,390 --> 00:23:18,290 این است که اطمینان از استفاده مناسب، 284 00:23:18,290 --> 00:23:22,640 نام فایل اینجا کلیک کنید. 285 00:23:22,640 --> 00:23:29,940 چه می کند این است که آن را از فایل ورودی را به آنچه که ما در infile منتقل اینجا، 286 00:23:29,940 --> 00:23:34,750 که استدلال دوم در خط فرمان ما است. 287 00:23:34,750 --> 00:23:37,640 بررسی می کند تا مطمئن شوید که ما می توانیم باز کردن فایل. 288 00:23:38,960 --> 00:23:44,860 بررسی می کند تا مطمئن شوید که ما می توانیم outfile جدید اینجا زا کلیک کنید. 289 00:23:45,630 --> 00:23:53,270 پس چه می کند در اینجا، آن را فقط اساسا شروع به خواندن در فایل های بیت مپ از ابتدا. 290 00:23:53,270 --> 00:23:56,700 همانطور که می دانیم، در آغاز، شامل از BITMAPFILEHEADER، 291 00:23:56,700 --> 00:24:03,200 و به همین ترتیب کسانی که توالی از بیت ها به طور مستقیم در BITMAPFILEHEADER را پر کنید. 292 00:24:03,200 --> 00:24:07,940 بنابراین چه چیزی ما را در اینجا می گوید که BF BITMAPFILEHEADER - 293 00:24:07,940 --> 00:24:13,150 که متغیر جدید از نوع BITMAPFILEHEADER - 294 00:24:13,150 --> 00:24:22,560 ما در حال رفتن به داخل BF قرار داده است آنچه که ما را از اشاره گر خواندن، که infile ما است. 295 00:24:22,560 --> 00:24:23,970 تا چه حد می خوانیم؟ 296 00:24:23,970 --> 00:24:32,160 ما در چند بایت است که ما نیاز داریم که شامل تمام BITMAPFILEHEADER خوانده می شود. 297 00:24:32,160 --> 00:24:34,660 به همین ترتیب، این چیزی است که ما انجام می دهیم برای اطلاعات هدر. 298 00:24:34,660 --> 00:24:39,010 بنابراین ما در حال ادامه همراه فایل ما در infile 299 00:24:39,010 --> 00:24:44,360 و ما در حال خواندن این بیت و بایت، و ما آنها را متصل به طور مستقیم در 300 00:24:44,360 --> 00:24:47,880 به این نمونه از متغیر است که ما در حال ساخت است. 301 00:24:49,370 --> 00:24:53,800 در اینجا ما فقط مطمئن شوید که تصویر بیت مپ است. 302 00:24:57,670 --> 00:25:01,030 >> در حال حاضر ما outfile، درست است؟ 303 00:25:01,030 --> 00:25:04,420 بنابراین به عنوان آن می ایستد وقتی که آن را ایجاد می کنیم، آن را اساسا خالی است. 304 00:25:04,420 --> 00:25:07,710 بنابراین ما باید اساسا ایجاد یک بیت مپ جدید، از ابتدا. 305 00:25:07,710 --> 00:25:12,280 آنچه ما انجام می دهیم این است که ما باید تا مطمئن شوید که ما در هدر فایل را کپی کنید 306 00:25:12,280 --> 00:25:16,850 و هدر اطلاعات درست مثل infile دارد. 307 00:25:16,850 --> 00:25:22,850 آنچه ما انجام می دهیم این است که ما نوشتن - و به یاد داشته باشید که BF متغیر 308 00:25:22,850 --> 00:25:29,300 BITMAPFILEHEADER نوع، بنابراین آنچه که ما انجام می دهیم این است که ما فقط استفاده از آن محتوا 309 00:25:29,300 --> 00:25:34,980 برای نوشتن به outfile. 310 00:25:36,550 --> 00:25:38,510 در اینجا، به یاد داشته باشید که ما در مورد بالشتک صحبت، 311 00:25:38,510 --> 00:25:47,820 چگونه این مهم است که مطمئن شوید که مقدار پیکسل است که ما باید مضربی از 4 است. 312 00:25:47,820 --> 00:25:52,790 این یک فرمول بسیار مفید برای محاسبه چقدر بالشتک شما است 313 00:25:52,790 --> 00:25:57,670 با توجه به عرض فایل خود را. 314 00:25:57,670 --> 00:26:04,120 من می خواهم به شما بچه ها را به یاد داشته باشید که به در copy.c ما یک فرمول برای محاسبه بالشتک. 315 00:26:04,120 --> 00:26:07,970 باشه؟ بنابراین هر کس به یاد داشته باشید که. بزرگ است. 316 00:26:07,970 --> 00:26:14,050 تا پس از آن چه copy.c بعدی این است که آن را تکرار بیش از همه از scanlines. 317 00:26:14,050 --> 00:26:23,730 آن را از طریق ردیف اول و پس از آن ذخیره هر سه گانه است که آن را می خواند 318 00:26:23,730 --> 00:26:26,920 و پس از آن می نویسد: به outfile. 319 00:26:26,920 --> 00:26:33,120 بنابراین پس از آن در اینجا ما در حال خواندن تنها یک RGB سه گانه در یک زمان 320 00:26:33,120 --> 00:26:39,860 و پس از آن قرار دادن که سه گانه را به outfile. 321 00:26:41,120 --> 00:26:48,340 بخشی از مشکل این است که بالشتک سه گانه RGB، 322 00:26:48,340 --> 00:26:55,200 و بنابراین ما فقط نمی تواند خواندن که مقدار بالشتک سه RGB. 323 00:26:55,200 --> 00:27:01,460 آنچه ما باید انجام دهیم در واقع فقط فایل شاخص و موقعیت ما، حرکت حرکت مکان نما، 324 00:27:01,460 --> 00:27:06,840 به نوع پرش بیش از همه بالشتک به طوری که ما در ردیف بعدی هستیم. 325 00:27:06,840 --> 00:27:12,990 و پس از آن چه می کند این را کپی کنید و به شما نشان می دهد که چگونه شما ممکن است بخواهید برای اضافه کردن بالشتک. 326 00:27:12,990 --> 00:27:14,990 بنابراین ما از محاسبه چقدر بالشتک ما نیاز داریم، 327 00:27:14,990 --> 00:27:18,220 به طوری که بدان معنی است که ما نیاز به شماره بالشتک 0s و. 328 00:27:18,220 --> 00:27:24,510 چه می کند این است که یک حلقه قرار می دهد که تعداد بالشتک 0s و به outfile ما. 329 00:27:24,510 --> 00:27:31,170 و سپس در نهایت، هر دو فایل به شما نزدیک است. infile و همچنین outfile نزدیک شما. 330 00:27:31,170 --> 00:27:34,870 >> به طوری که چگونه copy.c با این نسخهها کار، 331 00:27:34,870 --> 00:27:37,430 و این بسیار مفید خواهد بود. 332 00:27:39,720 --> 00:27:43,750 در عوض فقط در واقع، به طور مستقیم کپی کردن و چسباندن آن 333 00:27:43,750 --> 00:27:46,800 یا فقط به دنبال آن و تایپ کردن در هر آنچه شما می خواهید، 334 00:27:46,800 --> 00:27:49,440 شما فقط ممکن است این دستور را در ترمینال اجرا کنید، 335 00:27:49,440 --> 00:27:54,520 CP copy.c whodunit.c است، که به یک فایل جدید ایجاد whodunit.c، 336 00:27:54,520 --> 00:27:58,330 که شامل محتوای دقیق همان کپی می کند. 337 00:27:58,330 --> 00:28:03,880 تا پس از آن چیزی است که ما می توانیم انجام شده است استفاده از آن به عنوان یک چارچوب که بر اساس آن برای ساخت و ویرایش 338 00:28:03,880 --> 00:28:06,900 برای فایل فیلمپلیسی ما. 339 00:28:08,500 --> 00:28:14,670 >> اینها ما را به-DOS برای رمان پلیسی انجام دهد، اما چه copy.c می کند 340 00:28:14,670 --> 00:28:16,730 است که در واقع طول می کشد مراقبت از بسیاری از آنها را برای ما می باشد. 341 00:28:16,730 --> 00:28:21,900 بنابراین همه ما باید انجام دهیم بعدی تغییر پیکسل را به عنوان مورد نیاز است 342 00:28:21,900 --> 00:28:25,920 در واقع به فایل قابل خواندن است. 343 00:28:25,920 --> 00:28:32,960 به یاد داشته باشید که برای یک پیکسل سه گانه، برای یک متغیر RGBTRIPLE نوع، 344 00:28:32,960 --> 00:28:35,990 شما می توانید ارزش های آبی، سبز، و قرمز دسترسی داشته باشید. 345 00:28:35,990 --> 00:28:38,670 که برای آمدن به در دستی به دلیل اگر شما می توانید به آنها دسترسی داشته باشید، 346 00:28:38,670 --> 00:28:41,770 که بدان معنی است که شما نیز می توانید آنها را چک کنید، 347 00:28:41,770 --> 00:28:45,430 و این بدان معناست که شما همچنین می توانید آنها را تغییر دهید. 348 00:28:45,430 --> 00:28:49,430 >> بنابراین، هنگامی که ما رفت و برگشت به عنوان مثال بزرگنمایی شیشه ای قرمز، 349 00:28:49,430 --> 00:28:53,390 در واقع، این اقدام به عنوان یک نوع از فیلتر برای ما بود. 350 00:28:53,390 --> 00:28:58,160 بنابراین آنچه که ما می خواهیم انجام دهیم این است که ما می خواهیم برای فیلتر کردن تمام سه که می آیند شوید. 351 00:28:58,160 --> 00:29:01,240 چندین راه مختلف برای انجام این کار وجود دارد. 352 00:29:01,240 --> 00:29:07,100 در واقع، شما می توانید هر نوع فیلتر شما می خواهید. 353 00:29:07,100 --> 00:29:09,890 شاید شما می خواهید به تغییر تمام پیکسل های قرمز 354 00:29:09,890 --> 00:29:13,570 یا شاید شما می خواهید به تغییر یک پیکسل و رنگ های مختلف به رنگ های مختلف است. 355 00:29:13,570 --> 00:29:15,400 که تا به شما. 356 00:29:15,400 --> 00:29:19,580 به یاد داشته باشید که شما می توانید بررسی کنید چه رنگی پیکسل است 357 00:29:19,580 --> 00:29:23,000 و پس از آن شما همچنین می توانید آن را به عنوان شما را از طریق رفتن را تغییر دهید. 358 00:29:24,410 --> 00:29:26,420 >> باشه. به طوری که داستان پلیسی است. 359 00:29:26,420 --> 00:29:32,760 هنگامی که شما اجرا از داستان پلیسی، شما بدانید که مقصر از جرم بود. 360 00:29:32,760 --> 00:29:35,540 >> در حال حاضر ما قصد داریم برای رفتن به تغییر اندازه. 361 00:29:35,540 --> 00:29:37,990 ما قصد داریم تا هنوز هم در برخورد با مپ. 362 00:29:37,990 --> 00:29:40,750 آنچه ما قصد انجام این است که ما در حال رفتن به بیت مپ ورودی 363 00:29:40,750 --> 00:29:45,890 و پس از آن ما قصد داریم تا در شماره منتقل می کند و سپس یک بیت مپ outfile 364 00:29:45,890 --> 00:29:51,380 که در آن است که اساسا infile مدرج شده توسط N. 365 00:29:54,670 --> 00:30:01,450 می گویند فایل من فقط یک پیکسل بزرگ بود. 366 00:30:01,450 --> 00:30:09,100 سپس اگر n من 3، پوسته پوسته شدن های 3 بود، پس از آن من خواهد بود که پیکسل و N تعداد بار تکرار، 367 00:30:09,100 --> 00:30:14,410 SO 3 بار، و پس از آن نیز آن را در مقیاس و 3 بار به عنوان. 368 00:30:14,410 --> 00:30:17,840 بنابراین می بینید من آن را پوسته پوسته شدن به صورت عمودی و همچنین به صورت افقی است. 369 00:30:17,840 --> 00:30:19,680 >> و سپس در اینجا یک مثال است. 370 00:30:19,680 --> 00:30:27,590 اگر n = 2 باشد، شما می بینید که پیکسل آبی دو بار تکرار وجود دارد 371 00:30:27,590 --> 00:30:30,930 و دو بار به صورت عمودی به صورت افقی به عنوان خوب. 372 00:30:30,930 --> 00:30:38,040 و پس از آن همچنان ادامه دارد، و به همین ترتیب شما یک پوسته پوسته شدن مستقیم از تصویر اصلی خود را با دو. 373 00:30:40,920 --> 00:30:47,600 >> پس اگر ما به جزئیات این شبه بودند، ما می خواهم برای باز کردن فایل. 374 00:30:47,600 --> 00:30:49,880 و سپس دانستن اینکه اگر ما به عقب در اینجا، 375 00:30:49,880 --> 00:30:54,540 ما می بینیم که عرض outfile است برای رفتن به متفاوت تر از عرض infile. 376 00:30:54,540 --> 00:30:56,130 به چه معنا است؟ 377 00:30:56,130 --> 00:31:01,230 این بدان معنی است که اطلاعات هدر ما این است که رفتن به تغییر است. 378 00:31:01,230 --> 00:31:03,790 و بنابراین، آنچه که ما می خواهید برای انجام شده است به روز رسانی اطلاعات هدر، 379 00:31:03,790 --> 00:31:11,820 دانستن این است که هنگامی که ما در فایل ها اگر شما در چارچوب copy.c، 380 00:31:11,820 --> 00:31:17,570 ما در حال حاضر یک متغیر است که نشان می دهد چه اندازه است و چیزهایی مانند که. 381 00:31:17,570 --> 00:31:24,060 بنابراین در هنگامی که شما را از آن، چیزی است که شما ممکن است بخواهید برای انجام این کار این است که تغییر آن متغیرهای خاص. 382 00:31:24,060 --> 00:31:29,380 به یاد داشته باشید، اگر شما دارای یک ساختار، متغیرهای که در آن شما دسترسی به. 383 00:31:29,380 --> 00:31:32,080 شما با استفاده از عملگر نقطه، درست است؟ 384 00:31:32,080 --> 00:31:36,420 سپس با استفاده از آن، شما می دانید که شما نیاز به اطلاعات هدر را تغییر دهید. 385 00:31:36,480 --> 00:31:41,030 بنابراین در اینجا فقط یک لیست از عناصر واقعی که می رویم به تغییر در فایل شما است. 386 00:31:41,030 --> 00:31:45,180 حجم فایل برای رفتن به تغییر، تصویر، و همچنین به عنوان عرض و ارتفاع است. 387 00:31:45,180 --> 00:31:50,080 بنابراین پس از آن قصد بازگشت به نقشه مپ، 388 00:31:50,080 --> 00:31:57,730 نگاه کنید که آیا آن را به هدر فایل یا هدر اطلاعات که شامل اطلاعات 389 00:31:57,730 --> 00:32:00,920 و در صورت نیاز تغییر دهید. 390 00:32:05,010 --> 00:32:12,470 دوباره، می گویند CP copy.c resize.c. 391 00:32:12,470 --> 00:32:19,270 این بدان معناست که، resize.c در حال حاضر شامل همه چیز است که در داخل نسخه موجود 392 00:32:19,270 --> 00:32:24,490 چون نسخه را فراهم می کند با ما راه خواندن به هر پیکسل scanline پیکسل است. 393 00:32:24,490 --> 00:32:29,860 جز در حال حاضر، به جای فقط تغییر ارزش ها مانند ما در داستان پلیسی، 394 00:32:29,860 --> 00:32:37,980 آنچه ما می خواهیم انجام دهیم این است که ما می خواهیم به نوشتن در پیکسل های مختلف 395 00:32:37,980 --> 00:32:43,580 تا زمانی که N ما این است که بیشتر از 1 است. 396 00:32:43,580 --> 00:32:47,110 >> پس آنچه که ما می خواهیم انجام دهیم این است که ما می خواهیم به آن کشش افقی توسط N، 397 00:32:47,110 --> 00:32:50,490 و همچنین آن را به صورت عمودی توسط N کشش. 398 00:32:50,490 --> 00:32:52,710 چگونه ممکن است این را ما انجام می دهیم؟ 399 00:32:52,710 --> 00:32:56,890 N 2 است و شما این infile داده شده است. 400 00:32:56,890 --> 00:32:58,730 اشاره گر خود را در حال رفتن به در یکی از اولین شروع، 401 00:32:58,730 --> 00:33:03,530 و آنچه که شما می خواهید به انجام اگر n 2 است، شما می خواهید به 2 از آنها نسخه قابل چاپ. 402 00:33:03,530 --> 00:33:05,490 بنابراین شما در 2 از آن را چاپ کنید. 403 00:33:05,490 --> 00:33:10,830 سپس اشاره گر خود را برای حرکت به پیکسل بعدی، که یکی قرمز، 404 00:33:10,830 --> 00:33:18,400 و آن را برای چاپ کردن 2 کسانی که از آنهایی که قرمز، اضافه آن را بر روی آنچه که آن را انجام داده قبل از. 405 00:33:18,400 --> 00:33:26,280 سپس مکان نما را به پیکسل بعدی حرکت می کند و قرعه کشی در 2 از آن. 406 00:33:26,280 --> 00:33:37,180 اگر شما نگاه به چارچوب copy.c، چه می کند این حق در اینجا 407 00:33:37,180 --> 00:33:42,830 است آن را ایجاد یک نمونه جدید از سه گانه RGB، یک متغیر جدید به نام سه گانه است. 408 00:33:42,830 --> 00:33:50,500 و در اینجا وقتی که آن را به آن می خواند، آن را از infile 1 RGBTRIPLE خوانده شده 409 00:33:50,500 --> 00:33:53,470 در آن فروشگاه و به داخل آن متغیر سه گانه است. 410 00:33:53,470 --> 00:33:57,590 پس شما در واقع یک متغیر به نمایندگی که پیکسل خاص. 411 00:33:57,590 --> 00:34:05,290 پس زمانی که تو می نویسم، چیزی که شما ممکن است بخواهید برای انجام روکش بیانیه fwrite به حلقه 412 00:34:05,290 --> 00:34:11,080 که در آن می نویسد: به outfile خود را به عنوان هر چند بار که مورد نیاز است. 413 00:34:17,449 --> 00:34:20,100 این به اندازه کافی ساده است. 414 00:34:20,200 --> 00:34:27,590 اساسا فرایند نوشتن و N تعداد بار آن را در مقیاس به صورت افقی تکرار. 415 00:34:27,590 --> 00:34:32,969 >> اما پس از آن ما باید به خاطر داشته باشید که بالشتک ما این است که رفتن به تغییر است. 416 00:34:47,350 --> 00:34:53,020 پیش از این، می گویند ما تا به حال چیزی در طول 3. 417 00:34:53,020 --> 00:35:00,130 پس ما فقط در چه مقدار از بالشتک اضافه کنید؟ فقط یک آن را به مضربی از 4 است. 418 00:35:00,130 --> 00:35:10,480 اما می گویند که ما در حال پوسته پوسته شدن این تصویر خاص توسط N = 2. 419 00:35:10,480 --> 00:35:16,300 بنابراین پس از آن که چگونه بسیاری از پیکسل آبی که ما در پایان؟ ما می خواهیم 6. 420 00:35:16,300 --> 00:35:21,470 1، 2، 3، 4، 5، 6. بسیار خوب. 421 00:35:21,470 --> 00:35:26,580 6 مضربی از 4 است. نزدیکترین مضربی از 4 چه خبر؟ که رفتن تا 8. 422 00:35:26,580 --> 00:35:33,200 پس ما در واقع رفتن به 2 کاراکتر از بالشتک وجود دارد. 423 00:35:33,200 --> 00:35:38,720 >> آیا کسی به یاد داشته باشید اگر ما یک فرمول برای محاسبه پد 424 00:35:38,720 --> 00:35:41,350 و جایی است که ممکن است باشد؟ 425 00:35:41,350 --> 00:35:45,160 [پاسخ دانش آموز نامفهوم] >> آره، copy.c. راست. 426 00:35:45,160 --> 00:35:49,800 یک فرمول در copy.c به محاسبه چقدر بالشتک شما وجود دارد 427 00:35:49,800 --> 00:35:53,810 با توجه به عرض خاصی از تصویر بیت مپ. 428 00:35:53,810 --> 00:36:02,950 بنابراین پس از آن که رفتن به تواند مفید باشد که شما نیاز دارید را در یک مقدار مشخصی از بالشتک اضافه کنید 429 00:36:02,950 --> 00:36:06,160 به واقع از شکل چقدر بالشتک است که شما نیاز به اضافه کردن. 430 00:36:10,820 --> 00:36:15,850 اما توجه داشته باشید، این است که شما می خواهید مطمئن شوید که شما با استفاده از اندازه درست است. 431 00:36:15,850 --> 00:36:21,410 فقط مراقب باشید زیرا شما اساسا برای رفتن به خرید و فروش با دو تصویر بیت مپ. 432 00:36:21,410 --> 00:36:23,410 شما می خواهید مطمئن شوید که شما با استفاده از یک حق. 433 00:36:23,410 --> 00:36:26,820 هنگامی که شما در حال محاسبه بالشتک برای outfile، شما می خواهید به استفاده از عرض outfile 434 00:36:26,820 --> 00:36:29,860 و عرض از قبل نیست. 435 00:36:29,860 --> 00:36:37,240 >> بزرگ است. این نوع از طول می کشد مراقبت از کشش کل یک تصویر بیت مپ به صورت افقی می باشد. 436 00:36:37,240 --> 00:36:41,290 اما آنچه ما می خواهیم انجام دهیم این است که در واقع آن را به صورت عمودی و همچنین کشش. 437 00:36:41,290 --> 00:36:48,760 این است که برای رفتن به یک کمی سختتر است زیرا زمانی که ما کرده ایم به پایان رسید کپی کردن یک ردیف 438 00:36:48,760 --> 00:36:51,580 و نوشتن این سطر، مکان نما به ما این است که در پایان می شود. 439 00:36:51,580 --> 00:36:56,210 بنابراین اگر ما دوباره، و سپس آن را فقط به خواندن به خط بعدی. 440 00:36:56,210 --> 00:37:03,660 بنابراین آنچه که ما می خواهیم انجام دهیم این است که به نوعی برخی از راه کپی کردن آن ردیف را دوباره 441 00:37:03,660 --> 00:37:12,500 یا فقط نوع مصرف آن سطر و پس از آن بازنویسی دوباره آن را. 442 00:37:14,380 --> 00:37:17,940 همانطور که من به نوعی اشاره به راه های مختلفی برای انجام این کار وجود دارد. 443 00:37:17,940 --> 00:37:23,040 آنچه شما می توانید انجام دهید این است که شما در حال رفتن را از طریق خواندن و از طریق scanline خاص 444 00:37:23,040 --> 00:37:28,560 و تغییر آن در صورت لزوم، پس از آن نوع از فروشگاه همه از این پیکسل ها در یک آرایه. 445 00:37:28,560 --> 00:37:36,350 سپس بعد از آن بر شما می دانم که شما نیاز به نسخه قابل چاپ کردن که آرایه دوباره، 446 00:37:36,350 --> 00:37:39,830 و بنابراین شما فقط می توانید که آرایه برای انجام این کار استفاده کنید. 447 00:37:39,830 --> 00:37:44,500 یکی دیگر از راه برای انجام آن است که شما می توانید از کپی کردن یک ردیف، 448 00:37:44,500 --> 00:37:47,950 درک کنند که شما نیاز به کپی که دوباره، پس در واقع مکان نما را حرکت می کند، 449 00:37:47,950 --> 00:37:50,950 و این که می شود با استفاده از روش fseek. 450 00:37:50,950 --> 00:37:56,410 شما می توانید حرکت مکان نما خود را تمام راه بازگشت و پس از آن روند کپی را مجددا تکرار کنید. 451 00:37:56,410 --> 00:38:03,960 >> بنابراین اگر تعداد پوسته پوسته شدن ما این است که N، پس از آن چند بار ما باید به عقب برگردید 452 00:38:03,960 --> 00:38:10,500 و بازنویسی یک خط؟ >> [دانشجوی] n - 1. >> آره، کامل است. n - 1. 453 00:38:10,500 --> 00:38:14,390 ما از آن انجام شود که در حال حاضر، به طوری که پس از آن ما می خواهید از رفتن فرایند برگشت به تکرار 454 00:38:14,390 --> 00:38:17,460 n - 1 مقدار از زمان. 455 00:38:22,730 --> 00:38:25,860 باشه. بنابراین تابع را تغییر اندازه دهید به شما داشته باشد. 456 00:38:25,860 --> 00:38:34,360 >> در حال حاضر ما می توانیم به بخش واقعا سرگرم کننده، pset مورد علاقه من است، که بازیابی کنید. 457 00:38:34,360 --> 00:38:39,580 به جای مپ، این زمان ما در حال برخورد با عکس JPEG. 458 00:38:39,580 --> 00:38:43,370 ما در واقع فقط از یک فایل عکس JPEG داده نشده است، 459 00:38:43,370 --> 00:38:46,600 ما اساسا خام فرمت کارت حافظه داده شده است. 460 00:38:46,600 --> 00:38:51,790 و بنابراین این شامل یک بیت از اطلاعات و ارزش زباله در آغاز، 461 00:38:51,790 --> 00:38:57,240 و پس از آن شروع می شود و آن را به یک دسته از فایل های JPEG است. 462 00:38:57,240 --> 00:39:03,430 با این حال، ما در حال دست یک کارت که در آن ما را حذف کردهاید و عکس؛ 463 00:39:03,430 --> 00:39:08,300 اساسا، ما را فراموش کرده ام که در آن عکس ها در درون کارت قرار گرفته است. 464 00:39:08,300 --> 00:39:12,770 پس وظیفه ما در بازیابی است را از طریق این فرمت کارت 465 00:39:12,770 --> 00:39:16,500 و پیدا کردن دوباره آن تصاویر. 466 00:39:16,500 --> 00:39:23,990 >> خوشبختانه، ساختار فایل های JPEG و فایل کارت کمی مفید است. 467 00:39:23,990 --> 00:39:28,850 این قطعا می توانست کمی سختتر اگر آن را در این قالب خاص نمی شد. 468 00:39:28,850 --> 00:39:40,160 هر فایل JPEG در واقع با دو توالی ممکن است، ذکر شده در بالا شروع می شود. 469 00:39:40,160 --> 00:39:42,970 در واقع، هر زمان که شما یک فایل جدید JPEG، 470 00:39:42,970 --> 00:39:52,720 آن را با هر دو دنباله ffd8 ffe0 یا یکی دیگر، ffd8 ffe1 شروع می شود. 471 00:39:52,720 --> 00:39:59,530 چیز دیگری که مفید به دانستن این است که عکس JPEG ذخیره می شوند متوالی است. 472 00:39:59,530 --> 00:40:03,380 بنابراین هر زمان که یک فایل JPEG به پایان می رسد، یکی دیگر شروع می شود. 473 00:40:03,380 --> 00:40:07,070 بنابراین از هر نوع در میان ارزش ها وجود دارد وجود ندارد. 474 00:40:07,070 --> 00:40:15,510 هنگامی که شما شروع JPEG، اگر شما در حال حاضر به خواندن JPEG، 475 00:40:15,510 --> 00:40:21,800 شما می دانید که شما ضربه در پایان از قبل و از آغاز یک بعدی است. 476 00:40:21,800 --> 00:40:25,890 >> به نوع تجسم این، من یک طرح کلی است. 477 00:40:25,890 --> 00:40:36,910 چیز دیگری که در مورد عکس JPEG این است که ما می توانیم آنها را در دنباله از 512 کلمه در ادامه متن در یک زمان به عنوان خوانده شده 478 00:40:36,910 --> 00:40:39,380 به همین ترتیب با شروع از کارت. 479 00:40:39,380 --> 00:40:43,370 ما لازم نیست که برای هر بایت منفرد بررسی به این دلیل است که می خورد. 480 00:40:43,370 --> 00:40:48,200 بنابراین به جای آن، چیزی است که ما می توانیم انجام دهیم این است که در واقع فقط مطالعه در 512 کلمه در ادامه متن در یک زمان 481 00:40:48,200 --> 00:40:54,700 و پس از آن، به جای چک کردن در میان کسانی که در آن برش کوچک، 482 00:40:54,700 --> 00:40:58,640 ما فقط می تواند آغاز از 512 کلمه در ادامه متن را بررسی کنید. 483 00:40:58,640 --> 00:41:02,570 اساسا، در این تصویر چه می بینید در آغاز از کارت، 484 00:41:02,570 --> 00:41:08,700 شما باید ارزش هایی که واقعا مربوط به عکس JPEG واقعی خود نیست. 485 00:41:08,700 --> 00:41:15,830 اما پس از آن چه که من یک ستاره به نشان می دهد یکی از دو دنباله برای شروع JPEG است. 486 00:41:15,830 --> 00:41:19,910 بنابراین، هر زمان که شما می بینید یک ستاره، شما می دانید که شما یک فایل JPEG. 487 00:41:19,910 --> 00:41:25,030 و سپس هر فایل JPEG است برای رفتن به برخی از متعدد از 512 کلمه در ادامه متن 488 00:41:25,030 --> 00:41:27,880 اما نه لزوما چندگانه است. 489 00:41:27,880 --> 00:41:32,050 راه که شما می دانید که شما ضربه دیگری JPEG است اگر شما یکی دیگر از ستاره، 490 00:41:32,050 --> 00:41:39,090 یکی دیگر از دنباله شروع از کلمه در ادامه متن. 491 00:41:39,090 --> 00:41:43,330 پس آنچه که شما باید در اینجا این است که شما باید فایل JPEG قرمز همچنان ادامه دارد تا زمانی که شما ضربه ستاره، 492 00:41:43,330 --> 00:41:45,150 است که با یک رنگ جدید نشان داده شده است. 493 00:41:45,150 --> 00:41:48,510 شما ادامه دهد و پس از آن شما یک ستاره، شما یکی دیگر از JPEG، 494 00:41:48,510 --> 00:41:50,590 شما تمام راه را تا پایان ادامه خواهد داد. 495 00:41:50,590 --> 00:41:53,180 شما در آخرین تصویر اینجا هستیم، یکی صورتی. 496 00:41:53,180 --> 00:41:58,220 شما به پایان تا زمانی که شما به پایان رسید از شخصیت های فایل. 497 00:41:58,220 --> 00:42:00,820 این امر می تواند واقعا مفید است. 498 00:42:00,820 --> 00:42:03,170 >> چند takeaways اصلی در اینجا: 499 00:42:03,170 --> 00:42:06,670 فایل کارت با JPEG شروع نشد، 500 00:42:06,670 --> 00:42:13,350 اما یک بار JPEG شروع می شود، همه از عکس JPEG در کنار هم به یک دیگر ذخیره می شود. 501 00:42:17,520 --> 00:42:20,420 >> برخی از شبه برای بازیابی. 502 00:42:20,420 --> 00:42:22,570 اول، ما قصد داریم برای باز کردن فایل کارت، 503 00:42:22,570 --> 00:42:27,500 و این با استفاده از فایل های I / O توابع. 504 00:42:27,500 --> 00:42:32,430 ما قصد داریم به تکرار مراحل زیر را تا به انتهای فایل رسیده ایم. 505 00:42:32,430 --> 00:42:36,450 ما در حال رفتن به خواندن 512 کلمه در ادامه متن در یک زمان. 506 00:42:36,450 --> 00:42:39,180 و آنچه من گفتم در اینجا این است که ما در حال رفتن به آن را در یک بافر ذخیره، 507 00:42:39,180 --> 00:42:46,230 بنابراین اساسا نگه دارید به این 512 کلمه در ادامه متن تا زمانی که ما می دانیم که دقیقا چه چیزی را با آنها انجام دهد. 508 00:42:46,230 --> 00:42:50,300 پس آنچه که ما می خواهیم انجام دهیم این است که ما می خواهیم برای بررسی اینکه آیا یک ستاره یا نه ایم ضربه می باشد. 509 00:42:50,300 --> 00:42:57,960 اگر ما از ضربه ستاره، اگر ما از ضربه به یکی از توالی شروع، 510 00:42:57,960 --> 00:42:59,980 پس از آن ما می دانیم که ما ضربه جدید فایل JPEG. 511 00:42:59,980 --> 00:43:08,860 چیزی که ما می خواهید برای انجام این کار این است که ما در حال رفتن به خواهید برای ایجاد یک فایل جدید در دایرکتوری pset4 ما 512 00:43:08,860 --> 00:43:14,480 به ادامه ساخت که فایل. 513 00:43:14,480 --> 00:43:18,220 اما همچنین، اگر ما قبلا JPEG قبل ساخته شده است، 514 00:43:18,220 --> 00:43:25,620 پس از آن ما می خواهیم برای پایان دادن به این فایل و فشار آن را به پوشه pset4، 515 00:43:25,620 --> 00:43:29,780 که در آن ما باید آن فایل ذخیره می شود، زیرا اگر ما مشخص نیست که ما به پایان رسید که فایل JPEG، 516 00:43:29,780 --> 00:43:37,290 سپس ما اساسا به مقدار نامحدود داشته باشد. عکس JPEG هرگز به پایان خواهد رسید. 517 00:43:37,290 --> 00:43:40,840 بنابراین ما می خواهیم مطمئن شوید که هنگامی که ما در حال خواندن را به یک فایل JPEG و نوشتن که، 518 00:43:40,840 --> 00:43:46,590 ما می خواهیم نزدیک است که به طور خاص به منظور باز کردن بعدی. 519 00:43:46,590 --> 00:43:48,430 ما می خواهید به بررسی چند چیز است. 520 00:43:48,430 --> 00:43:52,880 ما می خواهیم برای بررسی اینکه آیا ما در آغاز JPEG جدید با بافر ما هستیم 521 00:43:52,880 --> 00:43:56,780 و همچنین اگر ما در حال حاضر پیدا کرده اند JPEG قبل 522 00:43:56,780 --> 00:44:03,930 چرا که روند خود را کمی تغییر دهید. 523 00:44:03,930 --> 00:44:07,880 سپس بعد از اینکه شما را از طریق تمام راه بروید و به شما ضربه انتهای فایل، 524 00:44:07,880 --> 00:44:11,570 پس از آن چه شما می خواهید برای انجام این کار این است که شما می خواهید برای بستن همه فایل هایی که در حال حاضر باز است. 525 00:44:11,570 --> 00:44:14,100 که احتمالا آخرین فایل های JPEG است که شما را، 526 00:44:14,100 --> 00:44:18,930 و همچنین به عنوان فایل کارت که شما خرید و فروش شده است. 527 00:44:21,940 --> 00:44:28,670 >> تاریخ و زمان آخرین مانع که ما باید برای مقابله با این است که چگونه در واقع به ایجاد یک فایل JPEG 528 00:44:28,670 --> 00:44:31,950 و چگونه می توان به واقع آن را با فشار به پوشه. 529 00:44:33,650 --> 00:44:39,850 pset مستلزم آن است که هر JPEG است که شما را در فرمت های زیر می باشد. 530 00:44:39,850 --> 00:44:43,990 که در آن شما باید تعداد. JPG. 531 00:44:43,990 --> 00:44:50,750 تعداد، حتی اگر آن را به 0، ما آن را 000.jpg. 532 00:44:50,750 --> 00:44:55,730 هر زمان که شما پیدا کردن یک JPEG در برنامه شما، 533 00:44:55,730 --> 00:44:58,040 شما قصد دارید که می خواهید آن را در نظم که در آن پیدا می شود، نام. 534 00:44:58,040 --> 00:44:59,700 این به چه معنی؟ 535 00:44:59,700 --> 00:45:03,530 ما به نوع نیاز به پیگیری که چگونه بسیاری از ما پیدا کرده ام 536 00:45:03,530 --> 00:45:08,680 و چه تعداد از هر JPEG باید باشد. 537 00:45:08,680 --> 00:45:13,800 در اینجا ما قصد داریم را به استفاده از تابع sprintf. 538 00:45:13,800 --> 00:45:17,480 مشابه printf، که فقط نوع از چاپ یک مقدار را به ترمینال، 539 00:45:17,480 --> 00:45:23,910 sprintf چاپ فایل را به پوشه. 540 00:45:23,910 --> 00:45:30,870 و بنابراین، آنچه این را انجام دهد اگر من تا به حال sprintf، عنوان، و پس از آن رشته وجود دارد. 541 00:45:30,870 --> 00:45:36,660 نسخه قابل چاپ کردن آن را 2.JPG. 542 00:45:36,660 --> 00:45:41,020 با فرض این که من بسته فایل های من به درستی، 543 00:45:41,020 --> 00:45:47,210 که به فایل شامل اطلاعاتی است که من نوشتن بود. 544 00:45:47,210 --> 00:45:50,320 اما یک چیز این است که کدی که من آن را در اینجا 545 00:45:50,320 --> 00:45:53,360 نه کاملا ارضا چه pset نیاز. 546 00:45:53,360 --> 00:46:02,410 pset مستلزم آن است که فایل های JPEG دوم باید با نام 002 به جای فقط 2. 547 00:46:02,410 --> 00:46:09,160 بنابراین، هنگامی که شما نسخه قابل چاپ کردن نام، و سپس شاید شما ممکن است بخواهید که حفره یا سوراخ برای تغییر کمی است. 548 00:46:09,160 --> 00:46:18,140 >> آیا کسی به یاد داشته باشید که ما چگونه برای فضاهای اضافی اجازه می دهد هنگامی که ما چیزی چاپ؟ 549 00:46:18,140 --> 00:46:22,530 آره. >> [دانشجو] 3 را بین علامت درصد و 2 قرار داده است. >> آره، کامل است. 550 00:46:22,530 --> 00:46:25,610 شما 3 در این مورد چون ما می خواهیم فضا برای 3 قرار داده است. 551 00:46:25,610 --> 00:46:32,590 3D٪ احتمالا به شما خواهد داد 002.jpg به جای 2. 552 00:46:32,590 --> 00:46:40,120 اولین آرگومان به تابع sprintf است که در واقع یک آرایه کاراکتر، 553 00:46:40,120 --> 00:46:42,520 که ما قبلا به عنوان رشته دانست. 554 00:46:42,520 --> 00:46:50,700 کسانی که اراده، نوع بیشتر شبیه ذخیره سازی موقت، فقط رشته حاصل را ذخیره کنید. 555 00:46:50,700 --> 00:46:54,950 شما واقعا نمی تواند برای مقابله با این، اما شما نیاز به آن را شامل است. 556 00:46:54,950 --> 00:47:00,710 >> با آگاهی از این که هر نام فایل شماره، که طول می کشد تا سه حرف دارد، 557 00:47:00,710 --> 00:47:06,770 و پس از آن. JPG، چه مدت باید این آرایه می شود؟ 558 00:47:09,070 --> 00:47:14,310 بیرون انداختن یک عدد است. چگونه بسیاری از شخصیت های این عنوان، به نام؟ 559 00:47:18,090 --> 00:47:26,320 بنابراین 3 hashtags، دوره، JPG وجود دارد. >> [دانشجو] 7. >> 7. نه کاملا. 560 00:47:26,320 --> 00:47:32,000 ما در حال رفتن به خواهید 8 چرا که ما می خواهیم برای نابودگر تهی اجازه می دهد و همچنین. 561 00:47:45,340 --> 00:47:49,730 >> در نهایت، فقط به منظور جلب روند که شما برای انجام بازیابی، 562 00:47:49,730 --> 00:47:55,420 شما برخی از اطلاعات آغاز. 563 00:47:55,420 --> 00:48:02,460 شما ادامه خواهد داد تا زمانی که شما شروع به یک فایل JPEG، 564 00:48:02,460 --> 00:48:07,900 و است که می تواند به صورت یکی از دو توالی شروع. 565 00:48:07,900 --> 00:48:12,510 ادامه مطلب را بخوانید. هر علامت ممیز در اینجا نشان دهنده 512 کلمه در ادامه متن. 566 00:48:12,510 --> 00:48:22,630 شما در خواندن نگه دارید، نگه داشتن در خواندن تا زمانی که دیگر دنباله شروع شما روبرو می شوند. 567 00:48:22,630 --> 00:48:29,790 هنگامی که شما که، شما را تا پایان JPEG کنونی - در این مورد، آن را به یکی از قرمز، 568 00:48:29,790 --> 00:48:31,030 بنابراین شما می خواهید برای پایان دادن به آن است. 569 00:48:31,030 --> 00:48:35,540 شما به sprintf نام آن به پوشه pset4 شما می خواهید، 570 00:48:35,540 --> 00:48:41,580 پس از آن شما می خواهید برای باز کردن یک JPEG و پس از آن به خاطر خواندن 571 00:48:41,580 --> 00:48:46,370 تا در کنار شما روبرو می شوند. 572 00:48:46,370 --> 00:48:49,040 به خاطر خواندن، نگه داشتن در خواندن، 573 00:48:49,040 --> 00:48:56,290 و پس از آن در نهایت، در نهایت، شما در حال رفتن برای رسیدن به انتهای فایل، 574 00:48:56,290 --> 00:49:00,360 و به همین ترتیب شما می خواهید برای بستن آخرین JPEG است که شما کار با، 575 00:49:00,360 --> 00:49:08,380 sprintf که به پوشه pset4 خود را، و پس از آن در تمام تصاویری که شما بدست. 576 00:49:08,380 --> 00:49:12,050 این تصاویر در واقع تصاویر CS50 کارکنان، 577 00:49:12,050 --> 00:49:16,430 و پس از این است که در آن بخش های سرگرم کننده جایزه از pset می آید 578 00:49:16,430 --> 00:49:26,310 این است که شما در حال رقابت در بخش های خود را برای پیدا کردن TFS در تصاویر 579 00:49:26,310 --> 00:49:34,610 و گرفتن عکس با آنها ثابت کند که شما انجام داده ام pset 580 00:49:34,610 --> 00:49:37,030 و بنابراین شما می توانید ببینید که اعضای هیات در تصاویر هستند. 581 00:49:37,030 --> 00:49:41,510 پس ورود شما را با کارکنان است. گاهی اوقات شما باید آنها را تعقیب می کرد. 582 00:49:41,510 --> 00:49:44,680 احتمالا برخی از آنها سعی خواهد کرد که برای اجرا از شما دور است. 583 00:49:44,680 --> 00:49:47,320 عکس شما را با آنها. 584 00:49:47,320 --> 00:49:51,190 این در حال انجام است. این دلیل نیست که به pset است که به علت است. 585 00:49:51,190 --> 00:49:53,340 مهلت خواهد شد در مشخصات اعلام شده است. 586 00:49:53,340 --> 00:49:58,060 سپس همراه با بخش خود را، هر کدام بخش تصاویر طول می کشد 587 00:49:58,060 --> 00:50:04,430 با اکثر اعضای هیات برنده یک جایزه بسیار عالی. 588 00:50:04,430 --> 00:50:08,890 این نوع انگیزه ای برای دریافت pset4 خود را به پایان رسید در اسرع وقت 589 00:50:08,890 --> 00:50:10,820 زیرا در این صورت شما می توانید به کسب و کار 590 00:50:10,820 --> 00:50:14,570 شکار کردن همه اعضای هیات CS50. 591 00:50:14,570 --> 00:50:17,500 که اجباری نیست، هر چند، به طوری که پس از آن که تصاویر شما می توانید، 592 00:50:17,500 --> 00:50:20,310 سپس شما با pset4 به پایان رسید. 593 00:50:20,310 --> 00:50:23,970 >> و من با Walkthrough 4 به پایان رسید، به طوری که شما از همه برای آینده است. 594 00:50:23,970 --> 00:50:29,330 موفق باشید با پزشکی قانونی. [تشویق حضار] 595 00:50:29,330 --> 00:50:31,000 [CS50.TV]