1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON HIRSCHHORN: მოგესალმებით, ყველას, რომ Week 6. 3 00:00:09,840 --> 00:00:14,790 მოხარული ვარ, რომ თქვენ ყველა ცოცხალია და კარგად მას შემდეგ, რაც Quiz 0, იმიტომ, რომ მე ვიცი, რომ 4 00:00:14,790 --> 00:00:15,810 ცოტა უხეში. 5 00:00:15,810 --> 00:00:18,370 მაგრამ საბედნიეროდ, თქვენ ყველა გააკეთა წარმოუდგენლად კარგად. 6 00:00:18,370 --> 00:00:21,680 და ისე, რომ მშვენიერია. 7 00:00:21,680 --> 00:00:25,840 თუ თქვენ ჩემს განყოფილებაში, მე მოცემული საუკეთესო თქვენ დაბრუნება თქვენი ტესტებში უკვე. 8 00:00:25,840 --> 00:00:28,050 >> რამდენიმე თქვენ, მე შეხვედრა მას შემდეგ, რაც კლასის. 9 00:00:28,050 --> 00:00:32,360 და თუ თქვენ გაგრძელების სტუდენტი და თქვენ არ მიუღიათ თქვენს ვიქტორინა უკან 10 00:00:32,360 --> 00:00:35,490 ჯერჯერობით, თქვენი TF ალბათ მუშაობა და შეფასების, და მიიღებს უკან 11 00:00:35,490 --> 00:00:36,490 თქვენ მალე. 12 00:00:36,490 --> 00:00:39,650 ასე რომ, ჩემი გაფართოება სტუდენტები, რომლებიც თვალს ახლა - იმედია, ცხოვრობს - 13 00:00:39,650 --> 00:00:42,880 მე მიიღებთ თქვენს ტესტებში მოკლედ ისევე. 14 00:00:42,880 --> 00:00:45,670 >> ჩვენი დღის წესრიგი დღეს ასეთია. 15 00:00:45,670 --> 00:00:50,170 პირველი, ჩვენ ვაპირებთ წავიდეთ მეტი რამდენიმე რესურსები, რომ CS50 უზრუნველყოფს თქვენ. 16 00:00:50,170 --> 00:00:54,590 ჩვენ ვაპირებთ წავიდეთ მეტი Quiz 0 მომდევნო, და მე უპასუხოს ნებისმიერ შეკითხვას არავისთვის 17 00:00:54,590 --> 00:00:57,360 აქვს კონკრეტული პრობლემები. 18 00:00:57,360 --> 00:01:02,050 და შემდეგ, ჩვენ ვაპირებთ მეტი ფაილის I / O და პრობლემა კომპლექტი 5. 19 00:01:02,050 --> 00:01:07,360 იმ ბოლო ორი თემა მიიღებს up ნაყარი მონაკვეთზე დღეს. 20 00:01:07,360 --> 00:01:11,680 >> მე ზუსტად ამ სიაში ყოველ კვირაში შეგახსენებთ, რომ თქვენ ყველა, მაგრამ ძირითადი 21 00:01:11,680 --> 00:01:14,650 განყოფილებიანი, ჩვენ მხოლოდ 90 წუთი - ჩვენ ვერ დაფარავს ყველაფერს, რომ მე 22 00:01:14,650 --> 00:01:16,280 მიყვარს მოიცავს თქვენ ბიჭები. 23 00:01:16,280 --> 00:01:21,170 მაგრამ ჩვენ გვყავს ტონა რესურსები თქვენ მიაპყროს საფუძველზე, როგორც თქვენ უნდა იცოდეს 24 00:01:21,170 --> 00:01:24,000 მატერიალური და მუშაობის გზით თქვენი პრობლემა კომპლექტი. 25 00:01:24,000 --> 00:01:30,810 >> შეგახსენებთ, რომ მაქვს ონლაინ ტექსტური ყუთი, წყობის თქვენ შეავსოთ, თუ 26 00:01:30,810 --> 00:01:33,250 გაქვთ რაიმე კავშირი ჩემთვის, როგორც დადებითი, ასევე 27 00:01:33,250 --> 00:01:35,180 კონსტრუქციული, დაახლოებით მონაკვეთზე. 28 00:01:35,180 --> 00:01:38,600 რომ URL მდებარეობს უფლება ქვემოთ აქ. 29 00:01:38,600 --> 00:01:43,250 ასე რომ, გთხოვთ, მიიღოს მომენტში თუ თქვენ გაქვთ რაიმე კავშირი, თუ არა დროს განყოფილებიანი, 30 00:01:43,250 --> 00:01:48,030 ან მის შემდეგ, ან მას შემდეგ, უყუროთ ვიდეო ამჟამად, მომეცი თქვენი კავშირი. 31 00:01:48,030 --> 00:01:52,100 მე ნამდვილად ვაფასებ ნებისმიერი და ყველა ის. 32 00:01:52,100 --> 00:01:55,730 >> ასე რომ, მე, რომელსაც მცირე საუბარი ბევრი ჩემი 33 00:01:55,730 --> 00:01:59,350 სტუდენტები კვირის განმავლობაში - როგორც მე გადასცემს უკან ტესტებში, ვსაუბრობთ 34 00:01:59,350 --> 00:02:01,480 რა თქმა უნდა, ხედავს, თუ როგორ ვაკეთებთ. 35 00:02:01,480 --> 00:02:05,120 და ერთი თემა ამუშავება მეტი და მეტი საუბარი - ში 36 00:02:05,120 --> 00:02:05,660 კერძოდ - 37 00:02:05,660 --> 00:02:07,710 პრობლემა ადგენს. 38 00:02:07,710 --> 00:02:13,090 და მე არ encapsulated რომ თემა ფორუმში ახლა. 39 00:02:13,090 --> 00:02:16,630 >> არსებითად, არსებობს განსხვავება შორის გთხოვოთ, რომ რაღაც არის 40 00:02:16,630 --> 00:02:19,590 სწორად და რამე რომ კეთდება კარგად. 41 00:02:19,590 --> 00:02:22,920 ადამიანების უმეტესობა არ აკეთებს ფანტასტიკური თვალსაზრისით სისწორის - 42 00:02:22,920 --> 00:02:25,460 5 ან 4 ყველა psets. 43 00:02:25,460 --> 00:02:27,930 ადამიანების უმეტესობა იღებენ იმ ყველა დროის. 44 00:02:27,930 --> 00:02:31,150 >> თუმცა, მხოლოდ იმიტომ, რომ ვაკეთებ რაღაც უფლება არ ნიშნავს იმას, რომ თქვენ 45 00:02:31,150 --> 00:02:34,450 გავაკეთეთ რაღაც, როგორც ელეგანტურად, ან ეფექტურად, ან როგორც cleanly როგორც თქვენ 46 00:02:34,450 --> 00:02:35,270 შეეძლო მას. 47 00:02:35,270 --> 00:02:36,790 და ეს რა დიზაინი - 48 00:02:36,790 --> 00:02:39,230 და ნაკლები ხარისხი, სტილი - 49 00:02:39,230 --> 00:02:40,450 ცულები არიან. 50 00:02:40,450 --> 00:02:45,130 ამიტომ მე უბიძგებს ყველა, და სხვა TFs უბიძგებს თქვენ ბიჭები, არა მარტო თავის მხრივ, 51 00:02:45,130 --> 00:02:48,320 რამ, რომ სწორია, მაგრამ იქაური იმ რამ, რომ კოდირებული კარგად. 52 00:02:48,320 --> 00:02:53,060 >> არ აკეთებს არასაჭირო მარყუჟების, არ recalculating ცვლადები თუ 53 00:02:53,060 --> 00:02:53,800 თქვენ არ უნდა. 54 00:02:53,800 --> 00:02:58,520 მაგალითად, ეძებს უკან პრობლემა კომპლექტი 4, როდესაც დებს აგური 55 00:02:58,520 --> 00:03:03,070 ეკრანზე, ყველა row - ყველა აგურის მოცემული ზედიზედ აქვს იგივე y-კოორდინაცია - 56 00:03:03,070 --> 00:03:04,390 იგივე სიმაღლე კოორდინაციას. 57 00:03:04,390 --> 00:03:07,930 >> ასე რომ y-კოორდინაცია არ უნდა გამოითვლება შიგნით ინტერიერი 58 00:03:07,930 --> 00:03:11,070 წყობილი მარყუჟის, რომ თქვენ, როგორც ჩანს, გამოყენებული დააყენოს იმ აგური ეკრანზე. 59 00:03:11,070 --> 00:03:14,030 ეს მხოლოდ უნდა იყოს გათვლილი ყველა დროს თქვენ შეცვალა a row, ან 60 00:03:14,030 --> 00:03:15,200 გადავიდა ქვემოთ a row. 61 00:03:15,200 --> 00:03:19,760 ასე რომ ვთქვათ, თუ არსებობს 10 აგური ზედიზედ, თითოეული აგურის შეგიძლიათ იგივე 62 00:03:19,760 --> 00:03:22,260 y-კოორდინირება, რომ y-კოორდინაცია შეგიძლიათ უბრალოდ გამოითვლება 63 00:03:22,260 --> 00:03:23,550 ერთხელ ყველა იმ. 64 00:03:23,550 --> 00:03:27,810 >> ეს არ უნდა იყოს გათვლილი 10 ჯერ, არც რომ გაანგარიშება სჭირდება 65 00:03:27,810 --> 00:03:30,220 უნდა მოხდეს ფაქტობრივი ფუნქცია ზარი - 66 00:03:30,220 --> 00:03:33,020 ახალი gracked ფუნქცია ზარი. 67 00:03:33,020 --> 00:03:37,820 ასე რომ, თუ რომ იყო ცოტა დამაბნეველი თქვენ, უფრო generically, რამ 68 00:03:37,820 --> 00:03:40,730 არ უნდა მოხდეს თითოეული დრო თქვენ გავლა მარყუჟის არ უნდა იყოს 69 00:03:40,730 --> 00:03:42,900 დააყენა შიგნით ამისთვის მარყუჟის, და არ უნდა ხდება ყოველ დროს, თქვენ წავიდეთ 70 00:03:42,900 --> 00:03:44,080 მეშვეობით იყიდება loop. 71 00:03:44,080 --> 00:03:49,270 >> კიდევ ერთი კარგი დიზაინის მაგალითი ჩვენ ვნახეთ კვირა 3 15, შეგიძლიათ შენარჩუნება 72 00:03:49,270 --> 00:03:50,500 სიმღერა ნულოვანი. 73 00:03:50,500 --> 00:03:53,600 ასე რომ, როდესაც თქვენ ინიციალიზაცია ფორუმში, გადარჩენა - გლობალური ცვლადი, ალბათ - 74 00:03:53,600 --> 00:03:56,140 x და y-კოორდინაციას ნულოვანი. 75 00:03:56,140 --> 00:03:57,520 და მაშინ, როდესაც თქვენ - 76 00:03:57,520 --> 00:04:00,310 თქვენი ნაბიჯი ფუნქცია, როდესაც თქვენ წარმატებული ნაბიჯი, თქვენ განახლება 77 00:04:00,310 --> 00:04:02,040 მდებარეობა ნულოვანი. 78 00:04:02,040 --> 00:04:06,240 >> რომ გადაარჩენს თქვენ მქონე გავაკეთოთ წყობილი ამისთვის მარყუჟების გაეცნონ 79 00:04:06,240 --> 00:04:10,700 მონიშნე ყველა დროის თქვენი ნაბიჯი ფუნქცია და იპოვოს ნულოვანი, ან ფილა, 80 00:04:10,700 --> 00:04:12,460 და შემდეგ შეამოწმეთ რა მომავალი იგი. 81 00:04:12,460 --> 00:04:16,329 ამის ნაცვლად, თქვენ გაქვთ მდებარეობა ნულოვანი, შეგიძლიათ უბრალოდ გამოიყურება ზემოთ, ქვემოთ, 82 00:04:16,329 --> 00:04:21,160 და მარცხნივ და მარჯვნივ, რათა იპოვოს ფილა ეძებდით. 83 00:04:21,160 --> 00:04:24,970 >> ასე რომ, იმ თვალსაზრისით, პროგრამები ჩვენ წერილობით, ისინი არასდროს დიდი საკმარისი 84 00:04:24,970 --> 00:04:28,580 რომ ზოგიერთი დიზაინის გადაწყვეტილებები ნამდვილად აპირებს ხელი შეუშალოს თქვენი 85 00:04:28,580 --> 00:04:31,670 პროგრამა, ან მიიღოს იგი აწარმოებს უფრო ნელა, ან შესაძლოა ამოიწურა მეხსიერება. 86 00:04:31,670 --> 00:04:35,030 მაგრამ ჩვენ მაინც უბიძგებს თქვენ ბიჭები წერენ, როგორც დახვეწილი და 87 00:04:35,030 --> 00:04:36,450 ეფექტური კოდი, რაც შეიძლება. 88 00:04:36,450 --> 00:04:39,910 >> ასე რომ, თუ თქვენ აკეთებთ დასრულდება მდე წერა რამ რომ აქვს გაცილებით დიდი 89 00:04:39,910 --> 00:04:44,660 ფარგლებში, ისინი წერილობითი კარგი დიზაინი გარდა იმისა, რომ სწორი. 90 00:04:44,660 --> 00:04:46,300 ასე რომ, რიგი გაქვთ მოიყვანა, რომ. 91 00:04:46,300 --> 00:04:48,560 ეს რაღაც ჩვენ ვეძებთ - რაღაც ჩვენ გავაგრძელებთ 92 00:04:48,560 --> 00:04:49,840 დააყენებს თქვენ ბიჭები. 93 00:04:49,840 --> 00:04:52,460 >> თუ თქვენ ოდესმე გაქვთ რაიმე შეკითხვები დიზაინი თქვენი პროგრამა, მოგერიდებათ 94 00:04:52,460 --> 00:04:56,870 მივაწვდინოთ ჩემთვის და მოხარული ვარ, გავლა თქვენი პროგრამა, თქვენთან ერთად, 95 00:04:56,870 --> 00:05:01,320 და აღვნიშნო ზოგიერთი დიზაინი გადაწყვეტილებები თქვენ გააკეთა და მოგცემთ ზოგიერთი 96 00:05:01,320 --> 00:05:06,240 წინადადებები, თუ როგორ, რათა კიდევ უკეთესი დიზაინის გადაწყვეტილებები. 97 00:05:06,240 --> 00:05:08,870 >> ამიტომ, ჩვენ ვაპირებთ გადაადგილება to ვსაუბრობთ Quiz 0. 98 00:05:08,870 --> 00:05:11,300 სანამ ჩვენ გავაკეთოთ, რომ ვინმეს გაქვთ რაიმე შეკითხვა, თუ რა 99 00:05:11,300 --> 00:05:14,252 მე დაფარული აქამდე? 100 00:05:14,252 --> 00:05:21,500 >> [Rustling ხმაური] 101 00:05:21,500 --> 00:05:22,750 >> JASON HIRSCHHORN: შვიდი წამი. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 მოდით ვისაუბროთ Quiz 0 bit. 104 00:05:24,970 --> 00:05:26,700 ყველაზე მეტად თქვენ გაქვთ თქვენი Quiz 0 ზურგზე. 105 00:05:26,700 --> 00:05:29,820 თუ არ, იმედია გახსოვთ ცოტა. 106 00:05:29,820 --> 00:05:34,770 მაგრამ თუ თქვენ გადაღებული Quiz 0, მაშინ ასევე გაქვთ PDF ონლაინ 107 00:05:34,770 --> 00:05:35,890 ნიმუში გადაწყვეტილებები. 108 00:05:35,890 --> 00:05:39,480 >> ვინმეს გაქვთ რაიმე შეკითხვები, სანამ ჩვენ ხტომა შევიდა კვირას მასალა 109 00:05:39,480 --> 00:05:41,520 კონკრეტული პრობლემა Quiz 0 - 110 00:05:41,520 --> 00:05:44,630 რატომ პასუხი რა არის? 111 00:05:44,630 --> 00:05:47,255 არის ვინმე დაბნეული შესახებ არაფერი? 112 00:05:47,255 --> 00:05:50,230 მაშინაც კი, თუ თქვენ გაქვთ პრობლემა უფლება, მაგრამ უბრალოდ მინდა ჩემთვის ამას ცოტა 113 00:05:50,230 --> 00:05:52,640 უფრო მეტიც, მოხარული ვარ, რომ ამის გაკეთება ახლა. 114 00:05:52,640 --> 00:05:57,800 >> ასე რომ, მე ვთხოვე თქვენ ბიჭები მოვიდა მომზადებული ზოგიერთი 115 00:05:57,800 --> 00:05:59,440 ფიქრები Quiz 0. 116 00:05:59,440 --> 00:06:02,660 ასე რომ, ვისაც სურს მიიღოს us დაიწყო კითხვა ან 117 00:06:02,660 --> 00:06:04,655 კომენტარის Quiz 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [PAPER Rustling] 120 00:06:10,410 --> 00:06:11,470 >> JASON HIRSCHHORN: ყველას არ გააკეთა კარგად. 121 00:06:11,470 --> 00:06:12,720 ასე ვიცი [იცინის] 122 00:06:12,720 --> 00:06:15,950 იქ უნდა იყოს გარკვეული კითხვები დაახლოებით Quiz 0. 123 00:06:15,950 --> 00:06:27,940 124 00:06:27,940 --> 00:06:28,590 OK. 125 00:06:28,590 --> 00:06:29,210 დიახ. 126 00:06:29,210 --> 00:06:29,600 Ompica. 127 00:06:29,600 --> 00:06:30,520 >> OMPICA: პუნქტების 10. 128 00:06:30,520 --> 00:06:33,560 >> JASON HIRSCHHORN: პუნქტების 10. 129 00:06:33,560 --> 00:06:35,400 რომელი იყო ნომერი 10? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: - 131 00:06:35,840 --> 00:06:36,420 >> JASON HIRSCHHORN: I haven't - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: მოიცავს - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON HIRSCHHORN: ხმების 10 რვა to i - წერა რვა i? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: ჰო. 136 00:06:42,980 --> 00:06:43,630 >> JASON HIRSCHHORN: OK. 137 00:06:43,630 --> 00:06:47,390 ასე რომ, კიდევ ერთი შეკითხვა, თუ შეიძლება კითხვაზე, იყო მე prescient? 138 00:06:47,390 --> 00:06:48,630 პასუხი არის დიახ. 139 00:06:48,630 --> 00:06:52,060 განყოფილებაში სანამ ვიქტორინა, მე ვკითხე თქვენ ბიჭები კოდექსში ორივე სტერლინგი და 140 00:06:52,060 --> 00:06:52,980 რვა i. 141 00:06:52,980 --> 00:06:54,770 ორივე მათგანი მოხდა გამოჩნდება ვიქტორინა. 142 00:06:54,770 --> 00:06:57,510 ასე რომ, იმედია, თქვენ გადახდილი ყურადღება. 143 00:06:57,510 --> 00:07:02,520 >> და თუ ჰქონდა, მაშინ უნდა ალბათ კარგად იმ ორი. 144 00:07:02,520 --> 00:07:06,030 მაგრამ რვა i, ჩვენ არ რეალურად კოდი ეს კლასი, მაგრამ ეს იყო, კიდევ ერთხელ, 145 00:07:06,030 --> 00:07:07,500 სთხოვა ვიქტორინა. 146 00:07:07,500 --> 00:07:13,270 ასე რომ, რამდენიმე რამ, რომ მიიღოს აღვნიშნო, როდესაც კოდირების რვა i. 147 00:07:13,270 --> 00:07:17,320 პირველი, რაც, ერთ კითხვაზე, იყო რომ თქვენ საჭირო, რათა შეამოწმოთ, თუ სიმებიანი 148 00:07:17,320 --> 00:07:20,300 ტოლფასი იყო null. 149 00:07:20,300 --> 00:07:28,060 >> რამდენიმე ადამიანმა სცადა გადაამოწმოთ მოგვიანებით პროგრამაში თუ bracket მე - 150 00:07:28,060 --> 00:07:30,940 ისე კონკრეტული ხასიათის, რომ string - ტოლფასი იყო null. 151 00:07:30,940 --> 00:07:35,600 მაგრამ გახსოვდეთ, რომ null არსებითად - კარგია ვფიქრობ 152 00:07:35,600 --> 00:07:39,100 null, როგორც ნულოვანი მაჩვენებელი - მომცეთ zero - 153 00:07:39,100 --> 00:07:40,920 ადგილას მეხსიერებაში, სადაც თქვენ ვერ შედიხართ. 154 00:07:40,920 --> 00:07:44,730 >> ასე რომ, თუ რაღაც ტოლია null, თქვენ ვიცი, რომ ეს არ იყო ინიციალიზაცია, 155 00:07:44,730 --> 00:07:46,430 ან არაფერი არსებობს. 156 00:07:46,430 --> 00:07:50,950 ასე s არის char ვარსკვლავი, დრიურის bracket i არის char. 157 00:07:50,950 --> 00:07:57,410 ასე რომ აზრი შედარების s null, მაგრამ არა s bracket i to null. 158 00:07:57,410 --> 00:07:59,390 თუმცა ისევ და ისევ - ისე, რომ იყო პირველი, რაც რომ თქვენ უნდა გავაკეთოთ - 159 00:07:59,390 --> 00:08:03,510 შეამოწმეთ დარწმუნდით, რომ თქვენ რეალურად მივიღე რეალური string. 160 00:08:03,510 --> 00:08:08,020 >> შემდეგი, თქვენ სურდა გაიაროს თითოეული პერსონაჟი სიმებიანი. 161 00:08:08,020 --> 00:08:12,500 და ისე, რომ იქნება, როგორიც s bracket მე, მაგალითად, თუ თქვენი iterator. 162 00:08:12,500 --> 00:08:17,250 და მიიღოს, რომ ხასიათი და მიიღეთ მისი ფაქტობრივი ღირებულება. 163 00:08:17,250 --> 00:08:21,800 თქვენ ის ინახება როგორც char, მაგრამ ASCII ღირებულება zero - 164 00:08:21,800 --> 00:08:23,010 ნულოვანი როგორც პერსონაჟი - 165 00:08:23,010 --> 00:08:25,450 არ არის რეალურად რიცხვი ნულის ტოლია. 166 00:08:25,450 --> 00:08:28,700 ეს რაღაც სხვა ნომერი, რომელიც შეგიძლიათ გამოიყურება მდე ASCII მაგიდასთან. 167 00:08:28,700 --> 00:08:30,790 >> ასე რომ ერთი გზა კორექტირება, რომ - ალბათ საუკეთესო გზა კორექტირება 168 00:08:30,790 --> 00:08:33,760 რომ - არის სხვაობა ეს ხასიათი ღირებულება - 169 00:08:33,760 --> 00:08:35,140 ნულოვანი როგორც ხასიათი. 170 00:08:35,140 --> 00:08:38,490 ასე რომ მინუს ერთი გაცემა, ნულოვანი, კიდევ ერთი გაცემა. 171 00:08:38,490 --> 00:08:44,620 რომ მიიღებს, რაც ნომერი გაქვთ როგორც char, და მიიღეთ იგი უდრის 172 00:08:44,620 --> 00:08:46,720 ნომერი, ფაქტობრივი რიცხვი. 173 00:08:46,720 --> 00:08:50,300 >> და ეს არის ძალიან მსგავსი მიდგომა ბევრი ადამიანი მიიღო 174 00:08:50,300 --> 00:08:52,800 პრობლემა კომპლექტი 2, Caesar და Viginere - 175 00:08:52,800 --> 00:08:55,160 იმ ciphers, როდესაც თქვენ იყო მბრუნავი მათ. 176 00:08:55,160 --> 00:08:59,210 ასე რომ, მას შემდეგ, რაც თქვენ გაქვთ ის, როგორც ნომერი ნულოვანი ცხრა, მაშინ - დამოკიდებულია 177 00:08:59,210 --> 00:09:02,750 სადაც ის მიდის საბოლოო ნომერი - თქვენ უნდა გავამრავლოთ ის 178 00:09:02,750 --> 00:09:04,120 რომელსაც ძალა 10. 179 00:09:04,120 --> 00:09:07,340 >> ზოგიერთი ადამიანი გადაინაცვლა უკან წინა და გამრავლებული ინდივიდუალური 180 00:09:07,340 --> 00:09:08,940 ნომერი მიერ ძალა 10. 181 00:09:08,940 --> 00:09:11,160 ზოგიერთი ადამიანი გადავიდა წინა უკან - 182 00:09:11,160 --> 00:09:14,430 და ასე აიღო უმაღლესი შეკვეთა ნომერი პირველი - 183 00:09:14,430 --> 00:09:18,190 და რომ გადარჩენა იმ გლობალური counter ცვლადი. 184 00:09:18,190 --> 00:09:20,880 და შემდეგ ყოველ ჯერზე მეშვეობით FOR loop, გამრავლების, რომ გიგანტური მსოფლიო 185 00:09:20,880 --> 00:09:25,640 Counter ცვლადი 10, რათა ფართი მომდევნო char. 186 00:09:25,640 --> 00:09:28,750 >> ასე რომ იყო ცოტა დამაბნეველი გარეშე ჩემთვის წერა ის ფორუმში. 187 00:09:28,750 --> 00:09:31,550 მაგრამ ნიმუში გადაწყვეტა არის ხელმისაწვდომი. 188 00:09:31,550 --> 00:09:32,870 მაგრამ ეს იყო დიდი რამ ჩვენ ეძებდნენ. 189 00:09:32,870 --> 00:09:36,400 ასევე გამშვები დავრწმუნდეთ, რომ ყოველი ინდივიდუალური ხასიათი მართლაც 190 00:09:36,400 --> 00:09:39,780 ხასიათი შორის ნულოვანი და ცხრა, და არა ზოგიერთი სხვა ხასიათი, ისევე, როგორც, 191 00:09:39,780 --> 00:09:41,160 მაგალითად. 192 00:09:41,160 --> 00:09:43,150 >> ეს იყო ის, რაც ჩვენ ეძებდნენ წელს ამ კითხვას. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 ამჯამად რომ უპასუხოს შეკითხვას? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: ჰო. 196 00:09:49,320 --> 00:09:50,240 >> JASON HIRSCHHORN: OK. 197 00:09:50,240 --> 00:09:53,940 არსებობს რაიმე სხვა სახის კითხვებით დაახლოებით Quiz 0? 198 00:09:53,940 --> 00:09:55,440 რაც შეეხება შედგენა? 199 00:09:55,440 --> 00:09:56,740 ყველას შედგენის უფლება? 200 00:09:56,740 --> 00:09:58,370 პოსტები 201 00:09:58,370 --> 00:09:58,840 იყო - 202 00:09:58,840 --> 00:10:01,010 [იცინის] 203 00:10:01,010 --> 00:10:03,265 შეკითხვები compilation პროცესში? 204 00:10:03,265 --> 00:10:06,050 205 00:10:06,050 --> 00:10:06,966 Wow. 206 00:10:06,966 --> 00:10:11,090 >> [PAPER Rustling] 207 00:10:11,090 --> 00:10:11,520 >> JASON HIRSCHHORN: დიახ. 208 00:10:11,520 --> 00:10:11,700 მაიკლ. 209 00:10:11,700 --> 00:10:14,140 >> MICHAEL: არის ნომერი 7 - შემთხვევითი? 210 00:10:14,140 --> 00:10:16,500 >> JASON HIRSCHHORN: პუნქტების 7. 211 00:10:16,500 --> 00:10:20,670 პუნქტების 7 იყო კიდევ შემთხვევითი რიცხვი. 212 00:10:20,670 --> 00:10:21,110 შესანიშნავი. 213 00:10:21,110 --> 00:10:25,630 ასე რომ, თქვენ მოცემული რიცხვი და რიცხვი b, და გსურთ შემთხვევითი 214 00:10:25,630 --> 00:10:28,710 რიცხვი შორის და ბ. 215 00:10:28,710 --> 00:10:31,740 ჩვენ შეგვიძლია რეალურად წერენ ამ ერთი ფორუმში, იმიტომ, რომ ამ ერთი 216 00:10:31,740 --> 00:10:33,320 იყო ერთი ხაზი კოდი - 217 00:10:33,320 --> 00:10:34,390 ერთი გზა ამის გაკეთება. 218 00:10:34,390 --> 00:10:37,810 >> ამიტომ ჩვენ მოცემული drand როგორც ფუნქცია ჩვენ შეგვიძლია გამოვიყენოთ. 219 00:10:37,810 --> 00:10:38,820 და რა drand - 220 00:10:38,820 --> 00:10:40,290 ვთქვათ, რომ ეს უკვე დაითესა - 221 00:10:40,290 --> 00:10:42,316 რას drand დაბრუნებას? 222 00:10:42,316 --> 00:10:44,840 >> MICHAEL: A float შორის 0.0 და 1.0. 223 00:10:44,840 --> 00:10:45,530 >> JASON HIRSCHHORN: ნომერი - yeah. 224 00:10:45,530 --> 00:10:47,910 რიცხვი 0 და 1. 225 00:10:47,910 --> 00:10:51,760 და ამიტომ ჩვენ B და ა. 226 00:10:51,760 --> 00:10:55,480 და მაშინ ჩვენ გვაქვს ჩვენი შემთხვევითი რიცხვების შორის 0 და 1 ენიჭება ჩვენს მიერ drand. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 ზოგიერთი ადამიანი ვცდილობდი ბ, ბ minus , ან რაღაც შიგნით იმ 229 00:11:06,630 --> 00:11:07,960 ფრჩხილებში. 230 00:11:07,960 --> 00:11:11,210 ეს ნიშნავს იმას, რომ ისინი არგუმენტები ამ ფუნქციას. 231 00:11:11,210 --> 00:11:13,450 >> drand არ იღებს რაიმე არგუმენტი - როგორიცაა GetString აკეთებს 232 00:11:13,450 --> 00:11:14,330 არ მიიღოს ნებისმიერი არგუმენტები. 233 00:11:14,330 --> 00:11:16,600 ასე რომ მხოლოდ ღია paren ახლოს, Paren - და ეს, თავისთავად, არ არის 234 00:11:16,600 --> 00:11:17,330 ფუნქცია ზარი. 235 00:11:17,330 --> 00:11:19,770 და რომელიც გაძლევთ ნომერი შორის 0 და 1. 236 00:11:19,770 --> 00:11:22,820 რა თქმა უნდა, ჩვენ გვაქვს მთელი რიგი რომ ციფრები შეიძლება იყოს შემოსული 237 00:11:22,820 --> 00:11:28,470 >> ამბობენ, თუ ბ არის 10 და 5, ჩვენ ნამდვილად მინდა ნომერი რიგ 5. 238 00:11:28,470 --> 00:11:36,940 ასე რომ, შემდეგი რამ უნდა გავაკეთოთ არის გავამრავლოთ ეს სპექტრი b მინუს. 239 00:11:36,940 --> 00:11:40,380 ასე რომ, ვთქვათ, რომ ის მრავლდება. 240 00:11:40,380 --> 00:11:42,590 და რომ ყველაფერს მოგვცეს ნომერი მოცემულ სპექტრი. 241 00:11:42,590 --> 00:11:46,610 და რომ კონკრეტული დიაპაზონი, რომ განსხვავება b მინუს. 242 00:11:46,610 --> 00:11:50,030 >> და ბოლოს, რომ ყველაფერს მხოლოდ მისცეს მას - ამბობენ, რომ სპექტრი შორის b მინუს 243 00:11:50,030 --> 00:11:52,520 5, რომელიც მოგვცემს ნომერი 0 დან 5. 244 00:11:52,520 --> 00:11:56,000 მაგრამ თუ ფაქტობრივად 5, ჩვენ უნდა გაზარდოს ამ სპექტრს მდე, სადაც ეს 245 00:11:56,000 --> 00:12:01,380 რეალურად უნდა იყოს, დასძინა. 246 00:12:01,380 --> 00:12:02,580 ასე რომ იღებს ლოგიკა უფლება. 247 00:12:02,580 --> 00:12:03,745 და შემდეგ, რომ თქვენ გაქვთ კიდევ ერთი კითხვა? 248 00:12:03,745 --> 00:12:04,547 >> MICHAEL: არა 249 00:12:04,547 --> 00:12:06,010 უბრალოდ ვგრძნობ მართლაც dumb ახლა. 250 00:12:06,010 --> 00:12:06,405 [იცინის] 251 00:12:06,405 --> 00:12:06,730 >> JASON HIRSCHHORN: არა 252 00:12:06,730 --> 00:12:08,640 ვერ ვგრძნობ მართლაც dumb. 253 00:12:08,640 --> 00:12:10,560 რაოდენობის ხალხი იბრძვის ამ კითხვაზე. 254 00:12:10,560 --> 00:12:13,920 და შემდეგ, მეორე საკითხი, drand, თქვენ თქვით, გაძლევთ float - 255 00:12:13,920 --> 00:12:14,940 დააბრუნებს float. 256 00:12:14,940 --> 00:12:18,020 მაგრამ ეს ფუნქცია რეალურად სთხოვა განთავსების რიცხვი უნდა დაბრუნდნენ. 257 00:12:18,020 --> 00:12:23,700 >> თქვენ არ უნდა მისცეს ამ მკაფიოდ მთელი რიცხვი, რადგან ეს 258 00:12:23,700 --> 00:12:29,090 ოპერაციების მკურნალობა, როგორც ყველა ათწილადი - როგორც მცურავი პუნქტიანი ნომერი. 259 00:12:29,090 --> 00:12:31,570 მოსწონს ეს ნება - მაშინაც კი, თუ ამ არის მთელი რიცხვი, ეს იქნება 260 00:12:31,570 --> 00:12:32,890 უნდა გამრავლდეს სწორად. 261 00:12:32,890 --> 00:12:34,000 ყველა გამრავლება იმუშავებს. 262 00:12:34,000 --> 00:12:35,060 თქვენ არ უნდა მისცეს მას აქ. 263 00:12:35,060 --> 00:12:36,480 ფაქტობრივად, თქვენ არ უნდა მიიღო ის. 264 00:12:36,480 --> 00:12:37,310 >> რომ - 265 00:12:37,310 --> 00:12:40,750 თუ მიცემული ნომერი რომ არის 0 და 1 - 266 00:12:40,750 --> 00:12:42,680 შემთხვევითი ნომერი, მცურავი წერტილი - 267 00:12:42,680 --> 00:12:47,850 მაშინ იყოს მხოლოდ 0 ან 1, ასე რომ, თქვენ დაკარგავთ ყველა რომ სიზუსტით. 268 00:12:47,850 --> 00:12:50,120 მაგრამ ბოლოს, როცა დაბრუნდება, ეს ავტომატურად იღებს 269 00:12:50,120 --> 00:12:51,620 დააბრუნეს როგორც მთელი რიცხვი. 270 00:12:51,620 --> 00:12:56,870 ასე რომ თქვენ არ გჭირდებათ რომ გააკეთოთ რომ აძლევენ თავს. 271 00:12:56,870 --> 00:13:00,810 >> ასე რომ, ეს იყო პასუხი კითხვაზე, ნომერი 7. 272 00:13:00,810 --> 00:13:02,190 ნებისმიერი სხვა კითხვები Quiz 0? 273 00:13:02,190 --> 00:13:03,300 ჰო, Annie. 274 00:13:03,300 --> 00:13:05,050 >> ANNIE: როდესაც ვიყენებთ რეკურსიული - 275 00:13:05,050 --> 00:13:07,850 როდესაც ვიყენებთ iterative მარყუჟების? 276 00:13:07,850 --> 00:13:10,210 >> JASON HIRSCHHORN: როდესაც იყენებთ რეკურსიული - ასე უფრო ზოგადად, 277 00:13:10,210 --> 00:13:14,110 დადებითი და cons უკან წინააღმდეგ განმეორებითი მიდგომა. 278 00:13:14,110 --> 00:13:17,110 შეიძლება ვინმეს გთავაზობთ პრო ან con? 279 00:13:17,110 --> 00:13:19,460 გთხოვთ? 280 00:13:19,460 --> 00:13:20,140 არ შეიძლება ვინმეს. 281 00:13:20,140 --> 00:13:22,526 რომელიც გთავაზობთ პრო ან con? 282 00:13:22,526 --> 00:13:26,963 >> [PAPER Rustling] 283 00:13:26,963 --> 00:13:29,730 >> STUDENT 1 რეკურსიული ნაკლებია, კოდირების - ნაკლებად ფერთა? 284 00:13:29,730 --> 00:13:33,170 >> JASON HIRSCHHORN: ასე რომ, ზოგადად, უკან განსაკუთრებით ფუნქცია - 285 00:13:33,170 --> 00:13:35,750 ან ალგორითმი, როგორიცაა შერწყმა დალაგება - რომელიც lends თავს 286 00:13:35,750 --> 00:13:37,300 to რეკურსიული მიდგომა - 287 00:13:37,300 --> 00:13:40,710 შეიძლება უფრო მარტივია კოდექსში რეკურსიული. 288 00:13:40,710 --> 00:13:43,940 და მხოლოდ უფრო გრძნობა ამის გაკეთება რეკურსიული. 289 00:13:43,940 --> 00:13:46,230 ისე, რომ იქნება პრო უკან. 290 00:13:46,230 --> 00:13:46,610 სხვები? 291 00:13:46,610 --> 00:13:47,467 ჰო? 292 00:13:47,467 --> 00:13:49,240 >> სტუდენტური 2 con რომ უკან - 293 00:13:49,240 --> 00:13:50,940 იგი იყენებს უფრო მეხსიერებაში. 294 00:13:50,940 --> 00:13:52,200 >> JASON HIRSCHHORN: ასე ზუსტად უფლება. 295 00:13:52,200 --> 00:13:55,720 რეკურსიული ფუნქცია დაიცავს დასძინა დასტის ფარგლებში Stack. 296 00:13:55,720 --> 00:13:59,690 ასე რომ, თუ თქვენ მოქმედი ბევრი ნომერი, და მოვუწოდებთ ამ 297 00:13:59,690 --> 00:14:02,560 ფუნქციონირებს ბევრი, მაშინ თქვენ აუცილებლად დასჭირდეს მეტი მეხსიერება, ხოლო 298 00:14:02,560 --> 00:14:05,810 განმეორებითი მიდგომა მხოლოდ დააყენა ერთი დასტის ჩარჩო დასტის, რადგან 299 00:14:05,810 --> 00:14:08,420 ეს ყველაფერი ხდება ერთ ფუნქციას. 300 00:14:08,420 --> 00:14:11,010 >> ნებისმიერი სხვა დადებითი და cons? 301 00:14:11,010 --> 00:14:11,500 ჰო. 302 00:14:11,500 --> 00:14:12,550 >> სტუდენტური 3: დადებითი განთავსების უკან. 303 00:14:12,550 --> 00:14:15,950 თქვენ არ გაქვთ განსაზღვროს წინასწარ რამდენჯერ 304 00:14:15,950 --> 00:14:17,660 კოდი უნდა განმეორდეს. 305 00:14:17,660 --> 00:14:22,810 თქვენ შეგიძლიათ წინასწარ ნომერი ჯერ, რომ თქვენ უნდა iterate, მაშინ 306 00:14:22,810 --> 00:14:26,420 უკან უკეთესია, რადგან სჭირდება, რომ შედეგი. 307 00:14:26,420 --> 00:14:27,780 >> JASON HIRSCHHORN: მე ვფიქრობ, რომ ასეა. 308 00:14:27,780 --> 00:14:30,770 მაგრამ მე ვფიქრობ, ორივე შემთხვევაში თქვენ არასოდეს - 309 00:14:30,770 --> 00:14:33,290 თქვენ ალბათ კიდევ რამდენიმე შეყვანის შესახებ. 310 00:14:33,290 --> 00:14:35,990 ან ეს ფუნქცია ექნება რამდენიმე input რომ დადგინდეს, თუ რამდენი ჯერ 311 00:14:35,990 --> 00:14:36,730 უნდა გაუშვათ. 312 00:14:36,730 --> 00:14:39,520 ასე რომ, ზოგადად, თქვენ არ არის ძნელი კოდი - კი განმეორებითი მიდგომა - როგორ 313 00:14:39,520 --> 00:14:40,940 ბევრჯერ, რომ loop უნდა აწარმოებს. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> გქონდათ ერთი იყავით ფიქრი, Annie? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 ასე რომ, ეს, ალბათ, ორი - 318 00:14:51,650 --> 00:14:54,370 ყველაზე დიდი პრო და ყველაზე დიდი con რომ რეკურსიული წინააღმდეგ 319 00:14:54,370 --> 00:14:57,080 განმეორებითი მიდგომა. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 არაფერი Quiz 0? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> მოდით გადაადგილება. 324 00:15:09,920 --> 00:15:15,260 ფაილის I / O. არსებობს მშვენიერი მოკლე ამ კვირაში ფაილის I / O რომ იმედია 325 00:15:15,260 --> 00:15:19,270 თქვენ არ პოპულარულები სხვადასხვა ჯერ, და აღფრთოვანებული. 326 00:15:19,270 --> 00:15:22,910 ბევრი მუშაობა შევიდა, რომ, და მე გავიგე, ეს არის insanely გამოსადეგი. 327 00:15:22,910 --> 00:15:25,740 მე ასევე ბმული ამ slide, იმ შემთხვევაში თუ თქვენ არ ჰქონდა 328 00:15:25,740 --> 00:15:29,160 შანსი უყუროთ მას 10 ჯერ. 329 00:15:29,160 --> 00:15:35,280 >> ასე რომ, ჩვენ ვაპირებთ, რომ მოკლედ წავიდეთ მეტი ძირითადი ნაბიჯები, რათა გახსნას და სამუშაო 330 00:15:35,280 --> 00:15:38,400 ფაილი, და მაშინ ჩვენ ვაპირებთ ჩაყვინთვის შევიდა კოდირების პრობლემის წინაშე 331 00:15:38,400 --> 00:15:40,400 საგამოცდო პრობლემა კომპლექტი. 332 00:15:40,400 --> 00:15:44,330 ასე რომ კიდევ ერთხელ, მე ვაპირებ დააყენა ამ მდე ეკრანზე, მაგრამ მე ვაპირებ გაიგო for 333 00:15:44,330 --> 00:15:47,630 მხოლოდ ერთი წუთით, თუ რა ჩვენ აკეთებს აქ ფაილის I/O-- 334 00:15:47,630 --> 00:15:49,090 რას ნიშნავს ეს? 335 00:15:49,090 --> 00:15:55,280 >> ეს იმას ნიშნავს რომ ჩვენ შეგვიძლია შევქმნათ ჩვენი პროგრამები, და მაშინ ჩვენი პროგრამების 336 00:15:55,280 --> 00:16:00,370 გასასვლელი, და არ გააკეთა რაიმე გავლენა მსოფლიოში გარეთ ჩვენი პროგრამა. 337 00:16:00,370 --> 00:16:04,630 მაგრამ როდესაც ჩვენ ამუშავდება ფაილები - ორივე კითხულობს მათ და ქმნის 338 00:16:04,630 --> 00:16:10,460 მათ - ჩვენ შეგვიძლია აქვს გარკვეული ეფექტი მსოფლიოს გარეთ ჩვენი პროგრამა. 339 00:16:10,460 --> 00:16:15,440 >> ისევე, როგორც იმ შემთხვევაში, თუ Microsoft Word-მა ვერ შეძლო რაიმე Word დოკუმენტების, მაშინ 340 00:16:15,440 --> 00:16:18,710 ერთხელ Microsoft Word დატოვა, ყველა თქვენი მუშაობა იქნება წასული, და ეს იქნებოდა 341 00:16:18,710 --> 00:16:19,740 ნამდვილად აზრი არ აქვს. 342 00:16:19,740 --> 00:16:23,620 ჩვენ არ გვინდა საბოლოოდ შეძლებს წერენ პროგრამებს, შეიძლება გავლენა იქონიოს 343 00:16:23,620 --> 00:16:31,350 მსოფლიოს გარშემო, როგორც აღების კომპლექსური საშუალებებით - თვალსაზრისით ფაილი და 344 00:16:31,350 --> 00:16:37,080 მეშვეობით ფაილი, და ასევე შექმნაში საინტერესო და მყარი მასალები - 345 00:16:37,080 --> 00:16:39,520 თვალსაზრისით სხვადასხვა სახის ფაილებს. 346 00:16:39,520 --> 00:16:43,730 >> ასე რომ, სწორედ ამიტომ ჩვენ ვიწყებთ ვისწავლოთ თუ როგორ უნდა იმუშაოს ფაილი. 347 00:16:43,730 --> 00:16:47,080 უფრო კონკრეტულად, რა ვაკეთებთ ასეთია. 348 00:16:47,080 --> 00:16:47,680 ეს ძალიან მარტივია. 349 00:16:47,680 --> 00:16:51,530 არსებობს მხოლოდ რამდენიმე ნაბიჯები, და ისინი აქ ჩამოთვლილი ამ კოდი. 350 00:16:51,530 --> 00:16:55,130 ამიტომ, ჩვენ ვაპირებთ გავლა ეს კოდი ხაზს. 351 00:16:55,130 --> 00:16:57,630 >> პირველი, თქვენ ხედავთ ხაზგასმით - 352 00:16:57,630 --> 00:17:01,330 როდესაც თქვენ მუშაობის ფაილი, მიუხედავად ტიპის ფაილი არის, 353 00:17:01,330 --> 00:17:02,670 თქვენ უნდა გახსნა. 354 00:17:02,670 --> 00:17:05,130 და რომ არის ზარი fopen - 355 00:17:05,130 --> 00:17:05,950 უფლება აქ. 356 00:17:05,950 --> 00:17:07,980 თქვენ მოიცავს სახელით ფაილი. 357 00:17:07,980 --> 00:17:11,930 იმ შემთხვევაში, თუ ფაილი არ არის თქვენს დირექტორია, ან საქაღალდეში სადაც ეს პროგრამა 358 00:17:11,930 --> 00:17:15,910 ცხოვრება, მაშინ ასევე უნდა შეიცავდეს გზა, სადაც ეს ფაილი. 359 00:17:15,910 --> 00:17:19,099 >> ჩვენ ვაპირებთ, რომ ვივარაუდოთ, რომ ეს ფაილი სახელად "text.txt" - 360 00:17:19,099 --> 00:17:24,220 მარტივი ტექსტური დოკუმენტი - არის იმავე საქაღალდეში, როგორც ამ პროგრამის. 361 00:17:24,220 --> 00:17:26,859 ასე რომ კიდევ ერთი რამ უნდა შევინარჩუნოთ გონება - რომ, თუ გსურთ გახსნათ ფაილი 362 00:17:26,859 --> 00:17:30,050 სხვაგან, თქვენ რეალურად სჭირდება მოიცავს მისი ადგილმდებარეობა. 363 00:17:30,050 --> 00:17:33,520 >> მეორე, თქვენ ვერ გაივლის არგუმენტი fopen, და ეს არის ის, რაც გსურთ 364 00:17:33,520 --> 00:17:34,620 ფაილის. 365 00:17:34,620 --> 00:17:38,450 არსებობს სამი ძირითადი არგუმენტები, რომ თქვენ აპირებს გაიაროს fopen. 366 00:17:38,450 --> 00:17:40,060 ვის შეუძლია მომეცი იმ სამ? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 ვის შეუძლია მომეცი ერთი მათგანი? 369 00:17:47,130 --> 00:17:48,130 დიახ. 370 00:17:48,130 --> 00:17:50,010 >> სტუდენტური 4: ფაილის სახელი? 371 00:17:50,010 --> 00:17:50,440 >> JASON HIRSCHHORN: უკაცრავად. 372 00:17:50,440 --> 00:17:55,490 სამი ძირითადი არგუმენტი თქვენ ვერ გაივლის მეორე არგუმენტი fopen. 373 00:17:55,490 --> 00:17:57,060 თქვენ უფლება - ფაილის სახელი პირველი არგუმენტი. 374 00:17:57,060 --> 00:18:01,620 მაგრამ მეორე არგუმენტი fopen არის ზოგადად სამი სიმები, და - დიახ. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> Aleja: A განთავსების დამატება. 377 00:18:03,490 --> 00:18:06,840 >> JASON HIRSCHHORN: A, თუ გსურთ დამატება ფაილი, რომელიც უკვე არსებობს. 378 00:18:06,840 --> 00:18:07,810 >> სტუდენტური 5: R განთავსების წაკითხული. 379 00:18:07,810 --> 00:18:09,930 >> JASON HIRSCHHORN: R, თუ მინდა წაიკითხონ ფაილიდან. 380 00:18:09,930 --> 00:18:10,670 >> სტუდენტური 6: W განთავსების ჩაწერის. 381 00:18:10,670 --> 00:18:12,840 >> JASON HIRSCHHORN: და w, თუ გსურთ დაწეროთ ფაილი. 382 00:18:12,840 --> 00:18:17,570 ასე რომ, ამ შემთხვევაში, ჩვენ წერილობით ფაილი, ამიტომ ჩვენ გვაქვს w. 383 00:18:17,570 --> 00:18:22,360 გასახსნელად, თქვენ ასევე უნდა გადავარჩინოთ ფაილი სადმე, და ეს ერთად 384 00:18:22,360 --> 00:18:26,000 კოდი მარცხენა მხარეს, დავალება ოპერატორი - 385 00:18:26,000 --> 00:18:31,220 მე შექმნაში მომცეთ ფაილი მოუწოდა, ამ შემთხვევაში, ფაილი. 386 00:18:31,220 --> 00:18:36,070 >> ჩვენ არ ვაპირებთ ფიქრი რა ამ ყველა caps ი რამ არის. 387 00:18:36,070 --> 00:18:40,600 საკმარისია ითქვას, რომ ეს არის დიდი ნაკადი zeros და პირობა. 388 00:18:40,600 --> 00:18:44,970 და ასე ვაპირებთ მუშაობას და გაგება. 389 00:18:44,970 --> 00:18:47,300 >> შემდეგი რამ უნდა გავაკეთოთ - და ეს არის ძალიან მნიშვნელოვანი - 390 00:18:47,300 --> 00:18:49,070 როცა გახსნა ფაილი - 391 00:18:49,070 --> 00:18:54,250 ფაქტობრივად, როცა მოვუწოდებთ malloc, for მაგალითად, და მიიღოთ გარკვეული მეხსიერება და ვცდილობთ 392 00:18:54,250 --> 00:18:57,980 და შეინახეთ ის მაჩვენებელი, თქვენ ყოველთვის გსურთ შეამოწმოთ, რომ დავრწმუნდეთ, რომ 393 00:18:57,980 --> 00:19:00,230 ფუნქცია არ დაბრუნდება null. 394 00:19:00,230 --> 00:19:05,230 >> ასე რომ, ამ შემთხვევაში, ჩვენ შემოწმების რათა დარწმუნებული ვარ, რომ ჩვენ რეალურად გახსნა 395 00:19:05,230 --> 00:19:10,230 ფაილის სწორად, და არ იყო შეცდომა ჩვენი პროგრამა. 396 00:19:10,230 --> 00:19:15,160 შემდეგი, ერთხელ ჩვენ შემოწმდება, რათა დავრწმუნდეთ, რომ ჩვენ გვაქვს მუშაობის ფაილი, ჩვენ შეგვიძლია 397 00:19:15,160 --> 00:19:18,520 ვწერ, ან ვკითხულობ, ან დამატება ფაილი. 398 00:19:18,520 --> 00:19:24,270 ამ შემთხვევაში, მე უბრალოდ ბეჭდვა ერთი ხაზი ამ ფაილს. 399 00:19:24,270 --> 00:19:25,450 >> როგორ მე ვიცი, რომ? 400 00:19:25,450 --> 00:19:27,990 ისე, მე გამოყენებით ამ ფუნქციას ე.წ. fprintf. 401 00:19:27,990 --> 00:19:30,970 ყველა ფუნქციების თქვენ გამოყენებით როდესაც წერა, ან კითხვა, ან 402 00:19:30,970 --> 00:19:34,950 მანიპულირების ფაილი მსგავსი იქნება ფუნქციების თქვენ მინახავს ადრე, მაგრამ 403 00:19:34,950 --> 00:19:38,420 იწყება წერილი F, იდგა ფაილი. 404 00:19:38,420 --> 00:19:43,440 და fprintf, განსხვავებით ჩვენი ნორმალური print app იღებს ერთი დამატებითი არგუმენტი, 405 00:19:43,440 --> 00:19:47,800 და ეს არის ფაილი სადაც თქვენ გვინდა ბეჭდვა ეს ხაზი. 406 00:19:47,800 --> 00:19:50,640 >> მე არ მაქვს არაფერი მარჯვნივ ohai. 407 00:19:50,640 --> 00:19:52,860 მე არ მაქვს მესამე არგუმენტი printf - 408 00:19:52,860 --> 00:19:57,030 ან მეორე არგუმენტი printf, მესამე არგუმენტი fprintf, რადგან მე 409 00:19:57,030 --> 00:19:59,480 არ გაქვთ placeholders აქ. 410 00:19:59,480 --> 00:20:01,070 მე არ ვარ მათ შორის ნებისმიერი ცვლადები. 411 00:20:01,070 --> 00:20:06,070 მაგრამ ერთხელ, fprintf და ყველა ეს ფაილი ფუნქციები, რომელიც მოქმედებენ ფაილი 412 00:20:06,070 --> 00:20:09,820 ზოგადად სჭირდება ფაილი რომელზეც ისინი ფუნქციონირებს. 413 00:20:09,820 --> 00:20:15,960 >> საბოლოოდ, ბოლო მნიშვნელოვანი რამ გააკეთოთ დახურეთ ფაილი, ისევე, როგორც 414 00:20:15,960 --> 00:20:19,530 ერთად - როდესაც ჩვენ malloc რაღაც, ჩვენ გვინდა თავისუფალი, რაღაც, მცირეოდენ ჩვენ 415 00:20:19,530 --> 00:20:22,730 აქვს მეხსიერების გაჟონვის - ჩვენ გვინდა დახურვა ჩვენი ფაილი. 416 00:20:22,730 --> 00:20:28,180 იმ შემთხვევაში, თუ ამ პროგრამის დასრულების გარეშე დახურვის ფაილი, შანსები არაფერი წავიდოდა 417 00:20:28,180 --> 00:20:30,050 არასწორია, განსაკუთრებით, თუ ის იყო პატარა ფაილი. 418 00:20:30,050 --> 00:20:35,020 >> მაგრამ ეს, რა თქმა უნდა კარგი კოდირების სტილი და პრაქტიკაში ყოველთვის დახუროთ თქვენი ფაილი 419 00:20:35,020 --> 00:20:38,050 როდესაც თქვენ დასრულდა გამოყენება. 420 00:20:38,050 --> 00:20:43,630 ასე რომ საფუძვლებს ფაილის I / O. თქვენ ალბათ ჩანს, რომ ადრე, ან 421 00:20:43,630 --> 00:20:45,710 პოპულარულები ის, რომ ფანტასტიკური მოკლე. 422 00:20:45,710 --> 00:20:48,410 ვინმეს გაქვთ რაიმე შეკითხვები, სანამ ჩვენ წასვლას გარკვეული პრაქტიკა კოდირება 423 00:20:48,410 --> 00:20:51,800 პრობლემების, ფაილის I / O ან ნაბიჯები მე უბრალოდ წავიდა? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [Typing ხმები] 426 00:21:03,162 --> 00:21:04,150 >> JASON HIRSCHHORN: თქვენ მაქვს შეკითხვა, Avi? 427 00:21:04,150 --> 00:21:04,660 >> AVI: არა 428 00:21:04,660 --> 00:21:04,740 >> JASON HIRSCHHORN: OK. 429 00:21:04,740 --> 00:21:06,746 მე ვაპირებ დაველოდოთ კიდევ შვიდი წამი. 430 00:21:06,746 --> 00:21:07,590 [იცინის] 431 00:21:07,590 --> 00:21:08,620 ეს მართლაც კარგი წვერი. 432 00:21:08,620 --> 00:21:10,750 შენ უბრალოდ არ მომწონს სვამს კითხვებს. 433 00:21:10,750 --> 00:21:11,660 ეს ჯარიმა. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 ამიტომ ჩვენი პირველი პრაქტიკა პრობლემა ის არის, რომ ჩვენ ვართ აპირებს დუბლიკატი ფუნქცია 436 00:21:17,620 --> 00:21:22,330 ბრძანების ინსტრუმენტი, რომ თქვენ ალბათ უხმარია - ასლი - 437 00:21:22,330 --> 00:21:23,500 ასლი ინსტრუმენტი. 438 00:21:23,500 --> 00:21:28,050 თუ თქვენ ტიპის cp და შემდეგ გაიაროს ეს ორი არგუმენტები თქვენს ტერმინალი, შეგიძლიათ 439 00:21:28,050 --> 00:21:28,980 ასლი ფაილი. 440 00:21:28,980 --> 00:21:31,220 და ეს არის ის, რაც ჩვენ ვაპირებთ წერენ ახლა. 441 00:21:31,220 --> 00:21:35,830 >> ასე რომ კიდევ ერთხელ, კითხულობს off ამ slide, მინდა გაძლევთ დაწეროთ პროგრამა, რომელიც იღებს 442 00:21:35,830 --> 00:21:38,130 ორი და მხოლოდ ორი ბრძანება ხაზი არგუმენტები - 443 00:21:38,130 --> 00:21:40,750 წყაროს ფაილი და დანიშნულების ფაილი - 444 00:21:40,750 --> 00:21:44,590 და ასლები შინაარსი წყარო წარადგინოს დანიშნულების ფაილი 445 00:21:44,590 --> 00:21:46,960 ერთი byte დროს. 446 00:21:46,960 --> 00:21:48,510 ასე რომ ბევრი ითხოვენ. 447 00:21:48,510 --> 00:21:52,200 >> ერთხელ, კარგი მიდგომა ამ არის არ წავიდეთ პირდაპირ C კოდი, მაგრამ 448 00:21:52,200 --> 00:21:54,280 შესვენება მას შევიდა რამდენიმე ნაბიჯები. 449 00:21:54,280 --> 00:21:58,400 პირველი, ვიფიქროთ ლოგიკა - ზუსტად რა მე გეკითხებით თქვენ უნდა გააკეთოთ - 450 00:21:58,400 --> 00:22:00,620 და მესმის ყველა ნაბიჯები, რათა ეს პრობლემა. 451 00:22:00,620 --> 00:22:04,410 არა C, უბრალოდ ზოგიერთ pseudocode, ან თუნდაც გონებრივი მოდელი 452 00:22:04,410 --> 00:22:06,030 რა ხდება. 453 00:22:06,030 --> 00:22:10,050 >> შემდეგი, ერთხელ თქვენ გაქვთ pseudocode down, გაერკვნენ, თუ როგორ pseudocode 454 00:22:10,050 --> 00:22:14,600 რუკები გადატანა ინსტრუმენტები და რამ ჩვენ შეიტყო გამოყენება C. 455 00:22:14,600 --> 00:22:19,070 >> და ბოლოს, კიდევ გაქვთ, რომ ყველა ერთად, შეგიძლიათ კოდექსის პრობლემა. 456 00:22:19,070 --> 00:22:23,370 მიიღეთ 5 10 წუთი მუშაობა ამ პრობლემას. 457 00:22:23,370 --> 00:22:25,800 მე დააყენა ინსტრუქციები უკან მეორე. 458 00:22:25,800 --> 00:22:27,990 და მაშინ ჩვენ ვაპირებთ წავიდეთ მეტი pseudocode და კოდი 459 00:22:27,990 --> 00:22:29,230 იგი ცხოვრობს როგორც ჯგუფი. 460 00:22:29,230 --> 00:22:31,640 >> იმ შემთხვევაში, თუ თქვენ გაქვთ რაიმე შეკითხვები, ხოლო თქვენ ვმუშაობთ, მოგერიდებათ დააყენებს 461 00:22:31,640 --> 00:22:34,260 თქვენი მხრივ, და მე მოვა გარშემო და უპასუხოს მათ. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> სტუდენტური 7: შემიძლია დარტყმა ნაჭერი ქაღალდი? 464 00:22:39,330 --> 00:22:41,537 >> JASON HIRSCHHORN: რა არის up? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [Typing ხმები] 467 00:26:48,043 --> 00:26:48,730 >> JASON HIRSCHHORN: OK. 468 00:26:48,730 --> 00:26:51,710 მოდით წავიდეთ მეტი pseudocode პირველი და მაშინ მე მივცემ თქვენ რამდენიმე 469 00:26:51,710 --> 00:26:52,960 ე დასრულება კოდირების. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> ვისაც სურს დაიწყოს me off პირველი ხაზი 472 00:26:58,650 --> 00:27:00,030 pseudocode ამ ფუნქციას? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> სტუდენტური 8: შეამოწმეთ რომ დავრწმუნდეთ, რომ თქვენ მოცემულია ორი ფაილი. 475 00:27:05,740 --> 00:27:06,990 >> JASON HIRSCHHORN: OK. 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 და თუ ჩვენ არა ვართ? 478 00:27:22,990 --> 00:27:25,974 >> სტუდენტური 8: მე დაბრუნებას 0. 479 00:27:25,974 --> 00:27:27,872 >> JASON HIRSCHHORN: უნდა დაბრუნდნენ 0? 480 00:27:27,872 --> 00:27:30,182 >> სტუდენტური 8: დაბრუნება - 481 00:27:30,182 --> 00:27:30,650 blanking. 482 00:27:30,650 --> 00:27:30,850 უკაცრავად. 483 00:27:30,850 --> 00:27:31,210 >> JASON HIRSCHHORN: ჰო. 484 00:27:31,210 --> 00:27:32,710 ალბათ არა 0. 485 00:27:32,710 --> 00:27:34,680 იმის გამო, 0 ნიშნავს, რომ ყველაფერი კარგი იყო. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 ასე რომ, პირველი ხაზი საქართველოს pseudocode. 488 00:27:36,730 --> 00:27:38,715 ვის აქვს მეორე ხაზი pseudocode? 489 00:27:38,715 --> 00:27:40,630 >> სტუდენტური 9 Open ორივე ფაილი? 490 00:27:40,630 --> 00:27:41,880 >> JASON HIRSCHHORN: გახსენით ორივე ფაილი. 491 00:27:41,880 --> 00:27:49,970 492 00:27:49,970 --> 00:27:50,920 OK? 493 00:27:50,920 --> 00:27:52,850 >> STUDENT 10: შეამოწმეთ თუ ფაილი არის NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON HIRSCHHORN: შეამოწმეთ რათა დარწმუნებული ვარ, არც NULL. 496 00:28:12,580 --> 00:28:15,800 როგორც განზე - 497 00:28:15,800 --> 00:28:17,540 slash 0 - 498 00:28:17,540 --> 00:28:18,887 ის არის, რომ NULL? 499 00:28:18,887 --> 00:28:20,080 >> STUDENT 11: No 500 00:28:20,080 --> 00:28:21,190 >> JASON HIRSCHHORN: ეს არ არის NULL. 501 00:28:21,190 --> 00:28:23,400 რომ ეწოდება NULL terminator. 502 00:28:23,400 --> 00:28:25,580 სინამდვილეში ჩაწერეთ მხოლოდ ერთი l. 503 00:28:25,580 --> 00:28:28,580 ისე შემოწმების რაღაც წინააღმდეგ, რომ - რომ რეალურად ხასიათი - 504 00:28:28,580 --> 00:28:31,710 ისე შემოწმების რაღაც წინააღმდეგ, რომელიც არ არის იგივე როგორც შემოწმების თუ ის 505 00:28:31,710 --> 00:28:32,690 უდრის NULL. 506 00:28:32,690 --> 00:28:34,100 >> და ზოგიერთი ადამიანი - 507 00:28:34,100 --> 00:28:36,040 მათი ტესტები და მათი პრობლემა კომპლექტი - გვაქვს 508 00:28:36,040 --> 00:28:36,890 ორი იმ დაბნეული. 509 00:28:36,890 --> 00:28:38,830 მაგრამ ორი მათგანი არის სინამდვილეში განსხვავებული. 510 00:28:38,830 --> 00:28:40,220 ერთი დამთავრდა string - 511 00:28:40,220 --> 00:28:43,210 ერთი მომცეთ 0. 512 00:28:43,210 --> 00:28:46,490 >> STUDENT 12: რატომ არ შეამოწმებს დარწმუნდით, რომ ფაილი არ არის NULL 513 00:28:46,490 --> 00:28:48,670 სანამ გახსნა მათ? 514 00:28:48,670 --> 00:28:54,772 >> JASON HIRSCHHORN: So ღია ზოგავს რაღაც რომ ფაილი. 515 00:28:54,772 --> 00:28:57,780 და თუ აქ - 516 00:28:57,780 --> 00:28:59,520 ასე რომ, ეს ხაზი - fopen - 517 00:28:59,520 --> 00:29:05,300 მოგაწვდით მისამართი და მაღაზია რომ მისამართი ფაილს თუ ის მუშაობს. 518 00:29:05,300 --> 00:29:07,650 თუ ეს არ იმუშავებს, ეს შეინახავს NULL - 519 00:29:07,650 --> 00:29:08,020 >> STUDENT 12: Oh. 520 00:29:08,020 --> 00:29:08,180 OK. 521 00:29:08,180 --> 00:29:08,500 მივიღე თქვენ. 522 00:29:08,500 --> 00:29:09,050 >> JASON HIRSCHHORN: In ფაილი. 523 00:29:09,050 --> 00:29:11,990 ასე რომ თქვენ ვერ შემოწმება NULL სანამ თქვენ გახსნა მათ. 524 00:29:11,990 --> 00:29:13,520 NULL ნიშნავს, რაღაც არ იმუშავებს სწორად. 525 00:29:13,520 --> 00:29:18,030 526 00:29:18,030 --> 00:29:18,740 OK. 527 00:29:18,740 --> 00:29:22,590 ასე რომ, შემოწმება, რათა დავრწმუნდეთ, არც არის? 528 00:29:22,590 --> 00:29:23,200 ან? 529 00:29:23,200 --> 00:29:23,770 რას ფიქრობთ? 530 00:29:23,770 --> 00:29:24,310 ჩვენ წავიდეთ ერთად, რომ. 531 00:29:24,310 --> 00:29:24,520 >> STUDENT 13: არის. 532 00:29:24,520 --> 00:29:25,020 >> JASON HIRSCHHORN: არის? 533 00:29:25,020 --> 00:29:25,930 არც არის? 534 00:29:25,930 --> 00:29:26,350 >> STUDENT 13: არის. 535 00:29:26,350 --> 00:29:26,390 >> JASON HIRSCHHORN: OK. 536 00:29:26,390 --> 00:29:28,510 ჩვენ, როგორც ჩანს, გარკვეული კონსენსუსი, რომ. 537 00:29:28,510 --> 00:29:30,520 არც არის NULL. 538 00:29:30,520 --> 00:29:32,250 OK, შემდეგი ხაზი pseudocode. 539 00:29:32,250 --> 00:29:33,600 ვინ არ მომცა ხაზი არის? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 ჩვენ დაველოდებით თქვენ. 542 00:29:38,295 --> 00:29:39,020 ჰო. 543 00:29:39,020 --> 00:29:40,895 >> STUDENT 14: თქვენ უნდა წაიკითხოთ პირველი ფაილი? 544 00:29:40,895 --> 00:29:42,290 >> JASON HIRSCHHORN: OK. 545 00:29:42,290 --> 00:29:46,240 >> STUDENT 14 ან ვიყენებთ fscanf ან ასე რომ პირველი ფაილი? 546 00:29:46,240 --> 00:29:50,650 >> JASON HIRSCHHORN: ასე რომ ჩვენ გვინდა, რომ წაკითხვის პირველი ფაილი და - 547 00:29:50,650 --> 00:29:51,900 მოდით დააყენა, რომ უფლება აქ. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 წაკითხვის წყარო ფაილი. 550 00:30:01,880 --> 00:30:05,370 და მაშინ, რას ვაკეთებთ შემდეგ ჩვენ წაკითხვის წყარო ფაილი? 551 00:30:05,370 --> 00:30:06,620 სხვისი? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> STUDENT 15: დაწერეთ შევიდა დანიშნულების ფაილი? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON HIRSCHHORN: ჩვენ ვწერ დანიშნულების ფაილი, და - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 რა ვართ დაკარგული? 558 00:30:30,030 --> 00:30:32,460 სხვისი, ვინც არ მომცა ხაზი კოდი ყოლა - საქართველოს pseudocode. 559 00:30:32,460 --> 00:30:33,510 ჰო. 560 00:30:33,510 --> 00:30:36,540 >> STUDENT 16: შესაძლოა თქვენ ყოველთვის შეგიძლიათ გადაამოწმოთ არსებობს თუ არა რაიმე წაიკითხავს, 561 00:30:36,540 --> 00:30:37,970 ისევე როგორც მომდევნო ხაზი? 562 00:30:37,970 --> 00:30:39,550 , რომლებიც, ისევე როგორც მომდევნო ხაზი, თუ იგი არსებობს. 563 00:30:39,550 --> 00:30:40,660 >> [ELECTRONIC BEEP] 564 00:30:40,660 --> 00:30:41,095 >> JASON HIRSCHHORN: Oops. 565 00:30:41,095 --> 00:30:43,120 ეს არის ჩემი journaling პროგრამული უზრუნველყოფა. 566 00:30:43,120 --> 00:30:43,580 ჰო? 567 00:30:43,580 --> 00:30:44,960 >> STUDENT 16: Yeah. 568 00:30:44,960 --> 00:30:48,940 >> JASON HIRSCHHORN: ასე რომ ეს ჩემთვის კიდევ ერთხელ. 569 00:30:48,940 --> 00:30:51,640 >> STUDENT: 16 შეამოწმეთ თუ არსებობს მაინც მომდევნო ხაზი 570 00:30:51,640 --> 00:30:52,920 წყარო ფაილი წაიკითხოს. 571 00:30:52,920 --> 00:30:53,500 >> JASON HIRSCHHORN: OK. 572 00:30:53,500 --> 00:30:56,060 ასე რომ ჩვენ არ კითხულობს ხაზები - კითხულობს bytes აქ - 573 00:30:56,060 --> 00:30:57,590 მაგრამ თქვენ სწორი. 574 00:30:57,590 --> 00:31:00,040 ჩვენ გვინდა, რომ წაიკითხოთ და დაწეროთ სანამ არ არსებობს უფრო bytes. 575 00:31:00,040 --> 00:31:11,430 576 00:31:11,430 --> 00:31:11,735 OK. 577 00:31:11,735 --> 00:31:16,940 და ა.შ. ეს უნდა იყოს ნამდვილად indented ცოტა, იმიტომ, რომ ისინი ქვეშ არსებობს. 578 00:31:16,940 --> 00:31:17,470 უფლება? 579 00:31:17,470 --> 00:31:20,620 სანამ ჩვენ გარეთ ბაიტი, ჩვენ ვაპირებთ წაკითხვის წყარო ფაილი და დაწეროთ 580 00:31:20,620 --> 00:31:22,160 დანიშნულების ფაილი. 581 00:31:22,160 --> 00:31:24,510 >> და მაშინ, რა არის ბოლო ხაზი pseudocode? 582 00:31:24,510 --> 00:31:26,380 ვინც არ მიეცა ჩემთვის რაღაც არავის გაუკეთებია. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> STUDENT 17 დახურვა ფაილი? 585 00:31:30,260 --> 00:31:31,510 >> JASON HIRSCHHORN: ზუსტად. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 დახურვა ფაილი. 588 00:31:37,450 --> 00:31:38,400 ასე რომ ჩვენი pseudocode. 589 00:31:38,400 --> 00:31:41,870 მე ვაპირებ დააყენა pseudocode შევიდა gedit და რამდენიმე წუთში ჩვენ 590 00:31:41,870 --> 00:31:44,626 იქნება კოდექსს ერთად. 591 00:31:44,626 --> 00:33:55,280 592 00:33:55,280 --> 00:33:56,000 >> OK. 593 00:33:56,000 --> 00:33:58,290 მოდით დავიწყოთ, როგორც ჯგუფი. 594 00:33:58,290 --> 00:33:59,940 Nishant, მე მაქვს ჩემი ახალი ფაილი. 595 00:33:59,940 --> 00:34:01,130 მე უბრალოდ გახსნა ამ მდე. 596 00:34:01,130 --> 00:34:01,880 Untitled document 1. 597 00:34:01,880 --> 00:34:05,490 რა არის პირველი რაც უნდა გავაკეთოთ? 598 00:34:05,490 --> 00:34:07,040 >> NISHANT: ჩართეთ ბიბლიოთეკები? 599 00:34:07,040 --> 00:34:08,219 >> JASON HIRSCHHORN: OK. 600 00:34:08,219 --> 00:34:11,070 რა ბიბლიოთეკებს? 601 00:34:11,070 --> 00:34:17,570 >> NISHANT: stdio.h, stdlib.h, მე მჯერა? 602 00:34:17,570 --> 00:34:18,000 >> JASON HIRSCHHORN: OK. 603 00:34:18,000 --> 00:34:21,592 რა არის stdlib ამისთვის? 604 00:34:21,592 --> 00:34:23,010 >> NISHANT: დამავიწყდა. 605 00:34:23,010 --> 00:34:23,219 >> JASON HIRSCHHORN: OK. 606 00:34:23,219 --> 00:34:24,179 ასე რომ, არის stdio. 607 00:34:24,179 --> 00:34:28,630 რა უნდა გავაკეთოთ, კიდევ დავიწყო კოდირების? 608 00:34:28,630 --> 00:34:29,710 >> NISHANT: დაწერეთ header? 609 00:34:29,710 --> 00:34:31,830 >> JASON HIRSCHHORN: როგორ მივიღებ ეს ფერადი? 610 00:34:31,830 --> 00:34:34,060 >> [INTERPOSING VOICES] 611 00:34:34,060 --> 00:34:35,040 >> NISHANT: როგორ იღებთ ეს ფერადი? 612 00:34:35,040 --> 00:34:38,060 >> JASON HIRSCHHORN: როგორ შემიძლია ფერადი კოდირების? 613 00:34:38,060 --> 00:34:38,570 >> NISHANT: მე არ ვიცი. 614 00:34:38,570 --> 00:34:38,830 Oh. 615 00:34:38,830 --> 00:34:39,389 გადარჩენა. 616 00:34:39,389 --> 00:34:39,929 >> JASON HIRSCHHORN შენახვა. 617 00:34:39,929 --> 00:34:40,270 დიახ. 618 00:34:40,270 --> 00:34:41,760 მე უნდა გადარჩენა, როგორც. გ. 619 00:34:41,760 --> 00:34:46,239 ასე რომ გადარჩენა ეს დესკტოპის როგორც cp.c. 620 00:34:46,239 --> 00:34:47,280 ტკბილი. 621 00:34:47,280 --> 00:34:51,199 და თუ მინდა მიიღოს სრული სტილი რაოდენობა, რა უნდა 622 00:34:51,199 --> 00:34:53,085 არის ზედა? 623 00:34:53,085 --> 00:34:58,390 >> NISHANT თქვენ შეეძლო დაეწერა თქვენი სახელი, გვარი პროგრამა, და მიზანი 624 00:34:58,390 --> 00:34:59,640 პროგრამა ასევე? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> JASON HIRSCHHORN: კარგად გამოიყურება. 627 00:35:10,040 --> 00:35:10,470 შესანიშნავი. 628 00:35:10,470 --> 00:35:12,940 ასე რომ, თქვენ დაიწყო us off შესანიშნავად. 629 00:35:12,940 --> 00:35:13,720 # მოიცავს - 630 00:35:13,720 --> 00:35:15,365 ჩვენ ასევე წერა - 631 00:35:15,365 --> 00:35:30,050 632 00:35:30,050 --> 00:35:30,870 OK. 633 00:35:30,870 --> 00:35:33,520 ასე რომ, მე ვფიქრობ, მე ყველა მითითებული წასვლა. 634 00:35:33,520 --> 00:35:38,003 ვის აქვს პირველი ხაზი კოდი me - ან პირველი ხაზი კოდი, რომ 635 00:35:38,003 --> 00:35:41,280 დასჭირდება, რათა დააკმაყოფილოს ჩვენი პირველი კომენტარის pseudocode? 636 00:35:41,280 --> 00:35:41,985 თქვენ. 637 00:35:41,985 --> 00:35:48,780 >> STUDENT 18: არ უნდა იყოს ის, int argc და შემდეგ char * argv? 638 00:35:48,780 --> 00:35:49,490 >> JASON HIRSCHHORN: ვფიქრობ თქვენ უფლება. 639 00:35:49,490 --> 00:35:56,270 მოდით შეცვალოს იგი int, მთავარ ღია paren, int argc, მძიმე, char * argv? 640 00:35:56,270 --> 00:35:57,150 ასე? 641 00:35:57,150 --> 00:35:57,410 >> STUDENT 18 ფრჩხილებში. 642 00:35:57,410 --> 00:35:58,260 >> JASON HIRSCHHORN: ფრჩხილებში. 643 00:35:58,260 --> 00:35:59,860 ღია bracket, ახლო bracket, close მშობელი. 644 00:35:59,860 --> 00:36:00,240 სრულყოფილი. 645 00:36:00,240 --> 00:36:02,160 ახლა შემიძლია მიიღოს ბრძანება ხაზი არგუმენტები. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 დარწმუნდით ჩვენ მოცემული ორი ფაილი. 648 00:36:04,250 --> 00:36:07,905 შეგიძლიათ მომეცი რომ ისევე. 649 00:36:07,905 --> 00:36:09,180 >> STUDENT 18: თუ argc - 650 00:36:09,180 --> 00:36:11,060 ეს ერთი არ გაუტოლდება 3. 651 00:36:11,060 --> 00:36:14,360 >> JASON HIRSCHHORN თუ ღია paren argc არ უდრის 3? 652 00:36:14,360 --> 00:36:16,970 >> STUDENT 18: Yeah, თქვენ დაბრუნდება 1 ან არაფერი. 653 00:36:16,970 --> 00:36:17,460 >> JASON HIRSCHHORN: უკაცრავად. 654 00:36:17,460 --> 00:36:19,120 >> STUDENT 18 Return 1 ან არაფერი. 655 00:36:19,120 --> 00:36:20,270 >> JASON HIRSCHHORN: დაბრუნება 1. 656 00:36:20,270 --> 00:36:22,230 OK? 657 00:36:22,230 --> 00:36:22,970 დიდი. 658 00:36:22,970 --> 00:36:24,290 გახსენით ორივე ფაილი. 659 00:36:24,290 --> 00:36:26,160 ვისაც შეუძლია დამეხმაროს გახსნა ორივე ფაილი? 660 00:36:26,160 --> 00:36:28,125 ვინ არ მომცა კოდი არის? 661 00:36:28,125 --> 00:36:31,510 662 00:36:31,510 --> 00:36:32,320 Kurt? 663 00:36:32,320 --> 00:36:36,145 >> KURT: ასე რომ ყველა caps F-I-L-E star წყარო. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON HIRSCHHORN: მე ვაპირებ აიღოს ხმოვანთა. 666 00:36:40,920 --> 00:36:41,570 ეს არის მაგარი. 667 00:36:41,570 --> 00:36:42,716 ეს მოსწონს Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> STUDENT 18 უდრის fopen - 669 00:36:44,610 --> 00:36:46,612 >> JASON HIRSCHHORN: უდრის fopen? 670 00:36:46,612 --> 00:36:49,870 >> STUDENT 18: ღია paren, argv, ღია bracket. 671 00:36:49,870 --> 00:36:50,055 >> JASON HIRSCHHORN: Wait. 672 00:36:50,055 --> 00:36:50,240 უკაცრავად. 673 00:36:50,240 --> 00:36:51,050 ღია paren. 674 00:36:51,050 --> 00:36:51,456 OK. 675 00:36:51,456 --> 00:36:53,080 >> STUDENT 18: Yeah. 676 00:36:53,080 --> 00:36:55,110 Argv sub 1. 677 00:36:55,110 --> 00:36:55,860 >> JASON HIRSCHHORN: Sub 1? 678 00:36:55,860 --> 00:36:56,140 >> STUDENT 18: Yeah. 679 00:36:56,140 --> 00:36:58,540 Argv ღია bracket 1 - 680 00:36:58,540 --> 00:36:59,730 დიახ. 681 00:36:59,730 --> 00:37:06,470 და შემდეგ მძიმე, და შემდეგ ღია ორმაგი გაცემა, r, ორმაგი გაცემა, 682 00:37:06,470 --> 00:37:08,250 close paren, მძიმით. 683 00:37:08,250 --> 00:37:09,450 >> JASON HIRSCHHORN: Sweet. 684 00:37:09,450 --> 00:37:10,950 რაც შეეხება მეორე? 685 00:37:10,950 --> 00:37:16,030 >> STUDENT 18: მსგავსი, არამედ S-R-C, ნეტავ ეძახით D-S-T. 686 00:37:16,030 --> 00:37:17,060 >> JASON HIRSCHHORN: Oo! 687 00:37:17,060 --> 00:37:17,772 მომწონს, რომ. 688 00:37:17,772 --> 00:37:20,010 >> STUDENT 18: Just D-S-T. ჰო. 689 00:37:20,010 --> 00:37:23,057 და შემდეგ argv, ღია bracket, 2. 690 00:37:23,057 --> 00:37:23,200 ჰო. 691 00:37:23,200 --> 00:37:26,720 და შემდეგ w ნაცვლად რ. 692 00:37:26,720 --> 00:37:27,620 ჰო. 693 00:37:27,620 --> 00:37:29,630 >> JASON HIRSCHHORN: Great. 694 00:37:29,630 --> 00:37:31,360 მომდევნო რამდენიმე ხაზები. 695 00:37:31,360 --> 00:37:34,040 ასევე, თუ ვინმეს აქვს რამ რჩეულებში ხაზები, რომ ჩვენ გავაკეთეთ, მოგერიდებათ 696 00:37:34,040 --> 00:37:35,690 დაამატოთ იმ, ისევე. 697 00:37:35,690 --> 00:37:37,520 შეამოწმეთ რომ დავრწმუნდეთ არც არის NULL. 698 00:37:37,520 --> 00:37:41,450 ვის შეუძლია მომეცი კოდი უნდა დააკმაყოფილა, რომ ხაზი pseudocode? 699 00:37:41,450 --> 00:37:44,430 700 00:37:44,430 --> 00:37:45,870 Archer. 701 00:37:45,870 --> 00:37:58,645 >> ARCHER თუ src შეადგენს შეადგენს NULL ან dst შეადგენს შეადგენს 702 00:37:58,645 --> 00:38:04,590 NULL, მაშინ დაბრუნდება - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON HIRSCHHORN: What? 705 00:38:07,976 --> 00:38:08,890 >> ARCHER: დაბრუნება 2? 706 00:38:08,890 --> 00:38:09,760 >> JASON HIRSCHHORN: დაბრუნება 2. 707 00:38:09,760 --> 00:38:14,400 ასე რომ, თუ ღია paren src შეადგენს უდრის NULL, ან - 708 00:38:14,400 --> 00:38:15,590 რასაც thing's - მილები? 709 00:38:15,590 --> 00:38:16,346 Pipe? 710 00:38:16,346 --> 00:38:17,140 ჩვენ მოვუწოდებთ მას მილს. 711 00:38:17,140 --> 00:38:22,340 მილები, მილის, dst შეადგენს შეადგენს NULL, დაბრუნდება 2. 712 00:38:22,340 --> 00:38:23,900 OK? 713 00:38:23,900 --> 00:38:26,060 სანამ ჩვენ გარეთ bytes - 714 00:38:26,060 --> 00:38:29,820 ჩვენ ერთგვარი გამოტოვებენ ამ ნაბიჯს pseudocode ნაწილი აპირებს აქ. 715 00:38:29,820 --> 00:38:31,970 >> მაგრამ სანამ ჩვენ გარეთ bytes - რას გავს? 716 00:38:31,970 --> 00:38:34,680 რა ტიპის C სტრუქტურა - 717 00:38:34,680 --> 00:38:36,160 მაგრამ მე არ გამოიყენოს სიტყვა სტრუქტურა, იმიტომ, რომ ჩვენ ვაპირებთ დავიწყოთ გამოყენებით 718 00:38:36,160 --> 00:38:37,350 რომ სხვა შემთხვევაში - 719 00:38:37,350 --> 00:38:39,495 მაგრამ C ინსტრუმენტი აკეთებს, რომ გავს? 720 00:38:39,495 --> 00:38:39,970 >> STUDENT 19: loop. 721 00:38:39,970 --> 00:38:40,980 >> JASON HIRSCHHORN: A loop. 722 00:38:40,980 --> 00:38:43,060 ჟღერს loop. 723 00:38:43,060 --> 00:38:49,670 ასე რომ, ვისაც შეუძლია მომეცი პირველი ხაზი მარყუჟის კოდი უფლება აქ? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 თქვენ ასევე შეგიძლიათ აირჩიოთ, თუ რა სახის loop გსურთ, თუ თქვენ მომეცი 726 00:39:01,980 --> 00:39:03,215 ეს ხაზი კოდი. 727 00:39:03,215 --> 00:39:04,150 არსებობს სამი სახის. 728 00:39:04,150 --> 00:39:06,530 თქვენ უნდა აირჩიოთ. 729 00:39:06,530 --> 00:39:08,080 მინდა ვარაუდობენ ერთ იმ. 730 00:39:08,080 --> 00:39:08,410 Avi. 731 00:39:08,410 --> 00:39:09,230 რომელი ერთი გინდათ? 732 00:39:09,230 --> 00:39:09,960 >> AVI: FOR. 733 00:39:09,960 --> 00:39:11,460 >> JASON HIRSCHHORN: FOR. 734 00:39:11,460 --> 00:39:15,180 >> AVI: int i ნულის ტოლი. 735 00:39:15,180 --> 00:39:17,360 >> JASON HIRSCHHORN: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI ეს ნაწილი მე არ ვარ დარწმუნებული. 737 00:39:18,570 --> 00:39:29,080 მაგრამ მე ნაკლებია, ვიდრე ზომა ვარსკვლავი წყარო? 738 00:39:29,080 --> 00:39:31,128 მე არ ვარ დარწმუნებული, რომ. 739 00:39:31,128 --> 00:39:32,580 >> JASON HIRSCHHORN: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: იმის გამო, რომ გსურთ ზომის ფაილების, არა? 741 00:39:35,870 --> 00:39:41,090 >> JASON HIRSCHHORN: ასე რომ, ეს ალბათ არ მოგვცეს ზომა ფაქტობრივი 742 00:39:41,090 --> 00:39:43,010 ფაილი bytes. 743 00:39:43,010 --> 00:39:47,680 ასე რომ, რა შეიძლება გავაკეთოთ? 744 00:39:47,680 --> 00:39:48,810 რა არის სხვა ტიპის loop? 745 00:39:48,810 --> 00:39:50,180 ან უნდა გამყარებაში იყიდება loop? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> STUDENT 20: იქნებ გავაკეთოთ ხოლო loop? 748 00:39:57,900 --> 00:40:01,350 და შემდეგ, რა ნეტავ გავაკეთოთ არის you'd - 749 00:40:01,350 --> 00:40:03,930 იმიტომ რომ ჩვენ გვაქვს char * ფაილი. 750 00:40:03,930 --> 00:40:07,950 ასე რომ, თუ ჩვენ უბრალოდ გააგრძელეთ დამატება, რომ სანამ ჩვენ გვინდა ვიპოვოთ NULL ხასიათი at 751 00:40:07,950 --> 00:40:08,500 ბოლოს ეს? 752 00:40:08,500 --> 00:40:11,130 ან არა, ის არის, რომ არა ფაილი მუშაობს? 753 00:40:11,130 --> 00:40:14,300 >> JASON HIRSCHHORN: ასე რომ ჩვენ შეგვიძლია შევინარჩუნოთ დამატება char * 754 00:40:14,300 --> 00:40:16,340 სანამ ჩვენ NULL - 755 00:40:16,340 --> 00:40:18,580 >> STUDENT 20 არსებითად შენარჩუნებას აპირებს ხასიათი ხასიათი, სანამ ჩვენ მოხვდა 756 00:40:18,580 --> 00:40:21,250 ბოლოს ფაილი. 757 00:40:21,250 --> 00:40:21,600 >> JASON HIRSCHHORN: დიახ. 758 00:40:21,600 --> 00:40:22,560 ასე რომ, ის, რაც ჩვენ გვინდა, რომ გავაკეთოთ. 759 00:40:22,560 --> 00:40:24,545 ჩვენ გვინდა, რომ შევინარჩუნოთ reading, ხასიათი by ხასიათი, სანამ არ მივიღებთ 760 00:40:24,545 --> 00:40:25,080 ბოლოს ფაილი. 761 00:40:25,080 --> 00:40:25,375 >> STUDENT 20: Yeah. 762 00:40:25,375 --> 00:40:25,860 მონახე - 763 00:40:25,860 --> 00:40:28,540 რა არის ბოლოს და გაჩერების ნიშანი ბოლოს ტექსტური ფაილი. 764 00:40:28,540 --> 00:40:28,620 >> JASON HIRSCHHORN: OK. 765 00:40:28,620 --> 00:40:30,140 ასე რომ, როდესაც მივიღებთ ბოლომდე ფაილი - ვიცით ჩვენ მიაღწია 766 00:40:30,140 --> 00:40:33,200 ბოლოს ფაილი? 767 00:40:33,200 --> 00:40:34,710 იმ შემთხვევაში, თუ მე მოუწოდებდა - 768 00:40:34,710 --> 00:40:35,910 მოდით უკან დახევას. 769 00:40:35,910 --> 00:40:37,550 რა არის ფუნქცია? 770 00:40:37,550 --> 00:40:39,360 მოდით წავიდეთ ამ ხაზის უფლება აქ. 771 00:40:39,360 --> 00:40:40,630 წაკითხვის წყარო ფაილი. 772 00:40:40,630 --> 00:40:41,880 ვის შეუძლია მაძლევს, რომ ხაზი კოდი? 773 00:40:41,880 --> 00:40:45,592 774 00:40:45,592 --> 00:40:47,590 >> STUDENT 21 fscanf? 775 00:40:47,590 --> 00:40:49,110 >> JASON HIRSCHHORN: fscanf. 776 00:40:49,110 --> 00:40:49,510 OK. 777 00:40:49,510 --> 00:40:52,240 რა მოხდება თუ მე მინდა წაიკითხონ, ძალიან კერძოდ, ერთი ბაიტი? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> STUDENT 21: არ ვიცი. 780 00:40:56,860 --> 00:40:57,110 >> JASON HIRSCHHORN: OK. 781 00:40:57,110 --> 00:40:59,380 კიდევ უფრო მარტივი, ვიდრე fscanf - რა არის - 782 00:40:59,380 --> 00:41:01,890 მინდა წაიკითხოთ წყარო ფაილი? 783 00:41:01,890 --> 00:41:03,720 დაწვრილებით წყარო ფაილი. 784 00:41:03,720 --> 00:41:04,850 რა არის ფუნქცია - yeah. 785 00:41:04,850 --> 00:41:05,380 >> STUDENT 22: ეს fread? 786 00:41:05,380 --> 00:41:06,070 >> JASON HIRSCHHORN: Fread. 787 00:41:06,070 --> 00:41:07,550 მე ვფიქრობ, მოდით გამყარებაში რომ ერთი არის. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 რა სახის არგუმენტები ჯერ fread მიიღოს? 790 00:41:13,650 --> 00:41:17,410 >> STUDENT 22: ალბათ ფაილის ტიპის, და შემდეგ ადგილმდებარეობა ფაილი? 791 00:41:17,410 --> 00:41:19,550 >> JASON HIRSCHHORN: რა შემიძლია აკრიფოთ აქ გაერკვნენ, თუ რა ტიპის არგუმენტები 792 00:41:19,550 --> 00:41:20,950 fread იღებს? 793 00:41:20,950 --> 00:41:23,710 >> მრავალჯერადი სტუდენტური მამაკაცს fread. 794 00:41:23,710 --> 00:41:24,740 >> JASON HIRSCHHORN: Man fread და fwrite. 795 00:41:24,740 --> 00:41:25,980 როგორც ჩანს, ისინი გათიშეთ out ერთად. 796 00:41:25,980 --> 00:41:29,589 ასე fread იღებს რამდენი არგუმენტები? 797 00:41:29,589 --> 00:41:30,920 >> STUDENT 23: ოთხი. 798 00:41:30,920 --> 00:41:32,690 >> JASON HIRSCHHORN: იგი იღებს ოთხი არგუმენტები. 799 00:41:32,690 --> 00:41:41,100 იგი იღებს მაჩვენებელი, ზომა, და რომ რამ, რაც არის უცნაური, და ზოგიერთი ფაილი. 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 მოდით წაიკითხოთ ამის შესახებ აქ. 802 00:41:43,990 --> 00:41:49,370 "ფუნქცია fread ნათქვამია n memb ელემენტები მონაცემები, თითოეული ზომით bytes 803 00:41:49,370 --> 00:41:53,840 ხანგრძლივი, საწყისი ნაკადი მიუთითა მიერ ნაკადი, შენახვა მათ მდებარეობა 804 00:41:53,840 --> 00:41:56,170 მიერ მოცემული მაჩვენებელი. " 805 00:41:56,170 --> 00:41:57,960 >> ასე რომ ოთხი არგუმენტები. 806 00:41:57,960 --> 00:42:04,510 რატომ არ მე უბრალოდ დააკოპირეთ ეს, და ჩასვით აქ. 807 00:42:04,510 --> 00:42:10,060 808 00:42:10,060 --> 00:42:10,770 OK. 809 00:42:10,770 --> 00:42:13,673 ასე რომ, ვისაც შეუძლია დაიწყოს შევსების ეს არგუმენტები ჩემთვის? 810 00:42:13,673 --> 00:42:15,840 Avi. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Take out ბათილად. 812 00:42:17,720 --> 00:42:20,530 განათავსეთ უბრალოდ src. 813 00:42:20,530 --> 00:42:23,142 აიღოს მაჩვენებელი და ვარსკვლავი. 814 00:42:23,142 --> 00:42:26,102 განათავსეთ src. 815 00:42:26,102 --> 00:42:27,050 შემდეგ - 816 00:42:27,050 --> 00:42:28,500 >> JASON HIRSCHHORN: ასე რომ მე ვაპირებ შეწყვიტოს თქვენ არ არსებობს, იმიტომ, რომ არასწორია. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 თქვენ უფლება src, მაგრამ სად უნდა src წავიდეთ? 819 00:42:34,710 --> 00:42:35,960 >> [INTERPOSING VOICES] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON HIRSCHHORN: ეს უნდა წავიდეთ მეტი აქ. 822 00:42:41,610 --> 00:42:43,790 სწორედ src - ჩვენი src არის ტიპის. 823 00:42:43,790 --> 00:42:44,610 მოდით შევხედოთ აქ. 824 00:42:44,610 --> 00:42:49,610 ეს ითხოვს ტიპის ფაილ *, ჩვენ რეალურად, როგორც წესი, ვხედავთ, რომ. 825 00:42:49,610 --> 00:42:57,630 ასე რომ, ეს ითხოვს არგუმენტი ჩაწერეთ ი * მოუწოდა ნაკადი რომ არის src. 826 00:42:57,630 --> 00:42:58,480 OK? 827 00:42:58,480 --> 00:43:00,410 >> რა ზომა რამ ჩვენ გვინდა, რომ წაიკითხოთ? 828 00:43:00,410 --> 00:43:03,340 მივეცი თქვენ ამ პრობლემის აღწერა. 829 00:43:03,340 --> 00:43:04,370 >> სტუდენტთა 24: ერთი byte დროს. 830 00:43:04,370 --> 00:43:05,340 >> JASON HIRSCHHORN: ერთი byte. 831 00:43:05,340 --> 00:43:08,205 როგორ დიდი არის byte? 832 00:43:08,205 --> 00:43:11,642 მისი ზომა ბაიტებში, მერე რა შემიძლია დააყენა უფლება არსებობს? 833 00:43:11,642 --> 00:43:12,910 >> STUDENT 25: One. 834 00:43:12,910 --> 00:43:14,730 >> JASON HIRSCHHORN: One. 835 00:43:14,730 --> 00:43:17,020 უფლება. 836 00:43:17,020 --> 00:43:19,940 მისი ზომა არის ერთეული byte, ასე რომ 1 არის 1 byte. 837 00:43:19,940 --> 00:43:22,284 რამდენი მინდა წაკითხვის დროს. 838 00:43:22,284 --> 00:43:23,520 >> STUDENT 26: One? 839 00:43:23,520 --> 00:43:24,270 >> JASON HIRSCHHORN: ერთი რამ. 840 00:43:24,270 --> 00:43:28,540 მე მინდა წაიკითხონ ერთი რამ ზომა 1, ერთი bite დროს. 841 00:43:28,540 --> 00:43:32,110 და სად მე ამას, კიდევ ერთხელ წავიკითხე ეს? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> STUDENT 27 დანიშნულება? 844 00:43:36,510 --> 00:43:39,270 >> JASON HIRSCHHORN: ასე რომ მე ვერ დააყენა ეს სწორი შევიდა დანიშნულების. 845 00:43:39,270 --> 00:43:40,800 >> STUDENT 28: თქვენ კარგად დააყენა მას მესამე მაჩვენებელი? 846 00:43:40,800 --> 00:43:41,780 >> STUDENT 27 დან დანიშნულების. 847 00:43:41,780 --> 00:43:42,270 >> JASON HIRSCHHORN: OK. 848 00:43:42,270 --> 00:43:42,630 ჰო. 849 00:43:42,630 --> 00:43:46,820 >> STUDENT 29: თქვენ შეგიძლიათ გამოაცხადოთ რაღაც იმოქმედოს, როგორც დროებითი შენახვის ადრე. 850 00:43:46,820 --> 00:43:47,350 >> JASON HIRSCHHORN: OK. 851 00:43:47,350 --> 00:43:50,080 მომეცი, რომ. 852 00:43:50,080 --> 00:43:53,930 >> STUDENT 29 სხვა ფაილი მაჩვენებელი, იქნებ? 853 00:43:53,930 --> 00:43:54,220 >> JASON HIRSCHHORN: OK. 854 00:43:54,220 --> 00:43:55,585 ასე რომ, ეს არის ბათილად star - 855 00:43:55,585 --> 00:43:57,750 ის ტიპის ბათილად ვარსკვლავი, ასე რომ არ უნდა იყოს ფაილის მაჩვენებელი. 856 00:43:57,750 --> 00:44:02,520 და თუ მე კითხულობს ერთი byte, სადაც იქნება კარგი ადგილია 857 00:44:02,520 --> 00:44:03,850 შესანახად ერთი byte? 858 00:44:03,850 --> 00:44:04,660 >> STUDENT 29 მასივი? 859 00:44:04,660 --> 00:44:05,770 >> JASON HIRSCHHORN: მასივი. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 და რა არის ის, რაც უბრალოდ ზომა ერთი byte? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> STUDENT 30 char *? 864 00:44:18,060 --> 00:44:18,530 >> STUDENT 29: Yeah. 865 00:44:18,530 --> 00:44:19,880 >> JASON HIRSCHHORN: A char * არ არის ერთი ბაიტი. 866 00:44:19,880 --> 00:44:20,440 >> STUDENT 29 char. 867 00:44:20,440 --> 00:44:21,810 >> JASON HIRSCHHORN: A char არის ერთ ერთი byte. 868 00:44:21,810 --> 00:44:22,920 უფლება? 869 00:44:22,920 --> 00:44:26,740 მოდით მოვუწოდებთ ამ ბუფერულ არის generic სახელი გამოიყენება ეს ყველაფერი შესანახად 870 00:44:26,740 --> 00:44:27,910 რაღაც დროებით. 871 00:44:27,910 --> 00:44:30,880 ასე რომ, მე შექმნას ბუფერული. 872 00:44:30,880 --> 00:44:31,150 უფლება? 873 00:44:31,150 --> 00:44:32,990 მაგრამ ეს არ მიიღოს void *. 874 00:44:32,990 --> 00:44:38,660 იქნებ თქვენ უფლება, რომ უნდა იყოს ბუფერული ზომა 0. 875 00:44:38,660 --> 00:44:41,070 ასე რომ ინახავს ერთ - 876 00:44:41,070 --> 00:44:41,280 უფლება. 877 00:44:41,280 --> 00:44:43,560 >> იმიტომ, რომ ეს სწორედ აქ - char ბუფერული არის ხასიათი, მაგრამ 878 00:44:43,560 --> 00:44:45,110 ეს იღებს ბათილად * - 879 00:44:45,110 --> 00:44:45,870 მაჩვენებელი. 880 00:44:45,870 --> 00:44:50,640 ასე რომ, მე ვერ გავაკეთებ ამ და ახლა ბუფერული არის მაჩვენებელი. 881 00:44:50,640 --> 00:44:53,214 რა შეიძლება გავაკეთო? 882 00:44:53,214 --> 00:44:55,775 >> STUDENT: 31 განათავსეთ star შემდეგი char. 883 00:44:55,775 --> 00:44:58,380 >> JASON HIRSCHHORN: შემეძლო შევქმენი ეს char *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 რა არის კიდევ ერთი რამ, მე ვერ გავაკეთებ? 886 00:45:03,131 --> 00:45:04,050 ან მოდით წავიდეთ ეს ერთი. 887 00:45:04,050 --> 00:45:05,740 Char * ბუფერული, ასე რომ შემიძლია დააყენა აქ? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> STUDENT 31 ბუფერული. 890 00:45:09,310 --> 00:45:10,560 >> JASON HIRSCHHORN: Buffer. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 ბუფერული არის მომცეთ char. 893 00:45:14,500 --> 00:45:19,480 და რომ მდებარეობა, ჩვენ აყენებს ერთი byte რაღაც ჩვენ წაიკითხა. 894 00:45:19,480 --> 00:45:19,980 ჰო. 895 00:45:19,980 --> 00:45:20,700 Avi. 896 00:45:20,700 --> 00:45:21,230 >> AVI: უბრალოდ სწრაფი კითხვა. 897 00:45:21,230 --> 00:45:24,440 გსურთ malloc ბუფერული? 898 00:45:24,440 --> 00:45:25,930 >> JASON HIRSCHHORN: ვის შეუძლია ამ კითხვაზე პასუხის გაცემა? 899 00:45:25,930 --> 00:45:30,210 >> STUDENT 32: ისე, ეს ნამდვილად არ წერტილი არაფერს ახლა, ისე - 900 00:45:30,210 --> 00:45:32,610 >> JASON HIRSCHHORN: მაგრამ ჩვენ გვინდა malloc ეს? 901 00:45:32,610 --> 00:45:35,600 >> STUDENT 32 თუ იყო ამის გაკეთება, რომ ისე, ვფიქრობ, yeah, რადგან ნეტავ უნდა 902 00:45:35,600 --> 00:45:36,990 რამდენიმე ადგილას ეს აღვნიშნო. 903 00:45:36,990 --> 00:45:38,350 >> JASON HIRSCHHORN: Do we უნდა malloc ეს? 904 00:45:38,350 --> 00:45:40,580 >> STUDENT 33: თუ თქვენ აპირებთ გამოიყენოს იგი გარეთ loop. 905 00:45:40,580 --> 00:45:42,524 >> JASON HIRSCHHORN: ჩვენ ვაპირებთ გამოიყენოს იგი გარეთ loop? 906 00:45:42,524 --> 00:45:44,392 >> STUDENT 34: დიახ. 907 00:45:44,392 --> 00:45:44,860 >> STUDENT 35 მოითმინოთ. 908 00:45:44,860 --> 00:45:46,980 გვინდა გამოაცხადოს ის ამ loop to მის ფარგლებს გარეთ? 909 00:45:46,980 --> 00:45:50,100 >> JASON HIRSCHHORN: ასე რომ, ვფიქრობ, ჩვენ ზოგიერთი ფსევდო ხოლო loop აქ, რომ ჩვენ 910 00:45:50,100 --> 00:45:51,950 ცდილობენ გაერკვნენ, რომელიც ჩვენ ჯერ არ მივსულვართ ჯერ. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 ჩვენ არ უნდა malloc იგი. 913 00:45:56,010 --> 00:45:59,310 ჩვენ მოქმედი მთავარი, ეს მხოლოდ აპირებს უნდა იყოს გამოყენებული შიგნით ამ loop. 914 00:45:59,310 --> 00:46:00,540 ეს არ უნდა არსებობდეს გარეთ ამ. 915 00:46:00,540 --> 00:46:02,340 >> ასე რომ, ეს შეიძლება იყოს ადგილობრივი ცვლადი. 916 00:46:02,340 --> 00:46:03,925 თქვენ უნდა მომცეთ ადგილობრივი ცვლადი. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> STUDENT 36: მაგრამ ეს არ არის მიუთითებს არაფერი. 919 00:46:09,590 --> 00:46:11,540 >> JASON HIRSCHHORN: არა, ეს არ არის ინიციალიზაცია არაფერი. 920 00:46:11,540 --> 00:46:12,790 მაგრამ ჩვენ არ ვაპირებთ გამოიყენოს იგი ასევე. 921 00:46:12,790 --> 00:46:15,300 ჩვენ ვაპირებთ დააყენა რაღაც ეს პირველი შემთხვევაა, ვიყენებთ მას. 922 00:46:15,300 --> 00:46:16,580 ასე რომ, როგორც ჩანს, OK. 923 00:46:16,580 --> 00:46:17,780 ასე რომ, ჩვენ არ უნდა malloc აქ. 924 00:46:17,780 --> 00:46:19,360 და მე ვფიქრობ, ეს OK როგორც არის. 925 00:46:19,360 --> 00:46:24,350 926 00:46:24,350 --> 00:46:25,790 OK. 927 00:46:25,790 --> 00:46:27,190 ჩვენ გვაქვს fread ონლაინ. 928 00:46:27,190 --> 00:46:28,490 მოდით მომდევნო ხაზი. 929 00:46:28,490 --> 00:46:32,984 >> თუ გვინდა, რომ ვწერ ფაილს, რა არის კარგი ფუნქციის გამოყენება ამის გაკეთება? 930 00:46:32,984 --> 00:46:33,770 >> STUDENT 37 Fwrite? 931 00:46:33,770 --> 00:46:35,140 >> STUDENT 38 fprintf? 932 00:46:35,140 --> 00:46:36,010 >> JASON HIRSCHHORN: fprintf ერთი. 933 00:46:36,010 --> 00:46:37,260 რა არის ერთი? 934 00:46:37,260 --> 00:46:37,680 >> STUDENT 39 Fwrite. 935 00:46:37,680 --> 00:46:38,510 >> JASON HIRSCHHORN: Fwrite. 936 00:46:38,510 --> 00:46:41,250 და ჩვენი მიზნებისთვის, fwrite, რომელიც ჩვენ ვნახეთ, აქ არის 937 00:46:41,250 --> 00:46:42,500 ალბათ უკეთესი არჩევანი. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 იგი იღებს ოთხი არგუმენტები ასევე. 940 00:46:53,950 --> 00:46:57,570 Nishant, შეგიძლიათ მისცეს ჩემთვის არგუმენტები? 941 00:46:57,570 --> 00:47:00,570 >> NISHANT: პირველი აპირებს უნდა იყოს მხოლოდ ბუფერული. 942 00:47:00,570 --> 00:47:02,210 >> JASON HIRSCHHORN: OK. 943 00:47:02,210 --> 00:47:06,752 >> NISHANT: მეორე ერთი უბრალოდ იქნება 1. 944 00:47:06,752 --> 00:47:09,510 მესამე იქნება 1. 945 00:47:09,510 --> 00:47:11,470 და მეოთხე იქნება dst. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON HIRSCHHORN: ვინმეს აქვს რაიმე შეკითხვები, რომ ხაზი? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 რომ კარგად გამოიყურება. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 ასე რომ, ახლა როგორც ჩანს ერთი რამ ჩვენ დაკარგული - ფაქტობრივად, მოდით დავწეროთ 952 00:47:34,250 --> 00:47:35,090 ამ ბოლო ხაზი. 953 00:47:35,090 --> 00:47:36,300 დახურვა ფაილი. 954 00:47:36,300 --> 00:47:38,880 ვინ შეიძლება დასრულდეს us up წერილობით ამ ბოლო ორი ხაზი? 955 00:47:38,880 --> 00:47:39,120 დიახ. 956 00:47:39,120 --> 00:47:39,850 უკაცრავად, რა გქვია? 957 00:47:39,850 --> 00:47:40,580 >> LUCY: Lucy. 958 00:47:40,580 --> 00:47:41,580 >> JASON HIRSCHHORN: Lucy. 959 00:47:41,580 --> 00:47:47,560 >> LUCY: Fclose src და შემდეგ fclose დანიშნულების. 960 00:47:47,560 --> 00:47:52,430 >> JASON HIRSCHHORN: Fclose, ღია paren, src ახლოს paren, მძიმით. 961 00:47:52,430 --> 00:47:53,680 და fclose - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 yeah? 964 00:47:58,090 --> 00:48:01,710 >> LUCY: ღია ფრჩხილებში, dst და შემდეგ მძიმით. 965 00:48:01,710 --> 00:48:02,520 >> JASON HIRSCHHORN: Great. 966 00:48:02,520 --> 00:48:04,338 და რა უნდა შეიცავდეს ბოლოს? 967 00:48:04,338 --> 00:48:05,210 >> LUCY: დაბრუნება 0. 968 00:48:05,210 --> 00:48:05,570 >> JASON HIRSCHHORN: დაბრუნება 0. 969 00:48:05,570 --> 00:48:06,820 არ მაქვს? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 უბრალოდ კითხვა. 972 00:48:12,590 --> 00:48:14,957 გვაქვს მოიცავს დაბრუნების 0? 973 00:48:14,957 --> 00:48:16,240 >> მრავალჯერადი სტუდენტური: არა 974 00:48:16,240 --> 00:48:16,430 >> JASON HIRSCHHORN: არა 975 00:48:16,430 --> 00:48:18,090 მთავარი აკეთებს ავტომატურად თუ თქვენ გაქვთ ბოლომდე. 976 00:48:18,090 --> 00:48:20,580 მაგრამ, ვფიქრობ, ეს კარგია არის ეს მკაფიოდ. 977 00:48:20,580 --> 00:48:23,860 განსაკუთრებით მაშინ, როდესაც ჩვენ დაბრუნების სხვა რამ მთელი პროგრამა. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 ეს არის ის, რაც ჩვენ აკლია - 980 00:48:26,230 --> 00:48:28,520 ხოლო, თუ რა? 981 00:48:28,520 --> 00:48:31,630 ვინ შეიძლება ვიფიქროთ, რაღაც - 982 00:48:31,630 --> 00:48:35,240 რაღაც გრძნობა, რაც შეიძლება წავიდეს იქ? 983 00:48:35,240 --> 00:48:37,350 მაშინაც კი, თუ ეს მხოლოდ ზოგიერთ pseudocode ისევე როგორც ენა? 984 00:48:37,350 --> 00:48:41,330 >> რა ჩვენ ნამდვილად - რა გვინდა წასვლა სანამ? 985 00:48:41,330 --> 00:48:41,980 ჰო, Lucy. 986 00:48:41,980 --> 00:48:43,240 >> LUCY: ფაილის ბოლოს. 987 00:48:43,240 --> 00:48:44,990 >> JASON HIRSCHHORN: ფაილის ბოლოს. 988 00:48:44,990 --> 00:48:49,280 ასე რომ რას ნიშნავს ბოლომდე ფაილი? 989 00:48:49,280 --> 00:48:50,955 >> LUCY: ერთხელ თქვენ მიღწევა ფაილის ბოლოში, შეწყვიტოს. 990 00:48:50,955 --> 00:48:51,240 >> JASON HIRSCHHORN: OK. 991 00:48:51,240 --> 00:48:53,460 ასე რომ ერთხელ ჩვენ მიაღწიონ ბოლომდე ფაილი. 992 00:48:53,460 --> 00:48:56,893 ვიცით, როდესაც ჩვენ მიაღწია ბოლოს ფაილი? 993 00:48:56,893 --> 00:48:59,900 >> STUDENT 40: მე ვფიქრობ, რომ ბუფერული იქნება მითითებული NULL. 994 00:48:59,900 --> 00:49:01,885 >> STUDENT 41 Buffer ცხადდება შიგნით loop. 995 00:49:01,885 --> 00:49:03,670 >> JASON HIRSCHHORN: ასე ფიქრობთ ბუფერული იქნება მითითებული NULL. 996 00:49:03,670 --> 00:49:05,850 რატომ ბუფერული მითითებული null? 997 00:49:05,850 --> 00:49:10,420 >> STUDENT 40 რადგან, როდესაც თქვენ fread, თქვენ ცდილობთ დააყენა 998 00:49:10,420 --> 00:49:13,528 არაფერი შევიდა ბუფერული. 999 00:49:13,528 --> 00:49:13,980 >> JASON HIRSCHHORN: OK. 1000 00:49:13,980 --> 00:49:15,550 ასე რომ თქვენ ფიქრი fread - 1001 00:49:15,550 --> 00:49:19,000 როდესაც ჩვენ მიაღწია ბოლოს ფაილი, რა fread აპირებს? 1002 00:49:19,000 --> 00:49:21,230 მე ვფიქრობ, რომ კითხვა ჩვენ გაერკვნენ. 1003 00:49:21,230 --> 00:49:21,960 რას fread გავაკეთოთ? 1004 00:49:21,960 --> 00:49:25,640 იგი დააყენა NULL ბუფერულ, ან აკეთებთ რაღაც? 1005 00:49:25,640 --> 00:49:27,510 როგორ შეგვიძლია გაერკვნენ, თუ რას აკეთებს? 1006 00:49:27,510 --> 00:49:28,190 >> STUDENT 42: Man. 1007 00:49:28,190 --> 00:49:28,810 >> JASON HIRSCHHORN: Man. 1008 00:49:28,810 --> 00:49:32,280 მოდით შევხედოთ აქ. 1009 00:49:32,280 --> 00:49:34,000 დაბრუნება ღირებულება. 1010 00:49:34,000 --> 00:49:39,620 წარმატება, fread და fwrite დაბრუნდნენ ნომერი ნივთები წაიკითხა ან წერილობითი. 1011 00:49:39,620 --> 00:49:43,700 ეს რიცხვი შეადგენს ბაიტების რაოდენობას გადაეცემა მხოლოდ მაშინ, როცა ზომა არის 1. 1012 00:49:43,700 --> 00:49:47,780 თუ შეცდომა ხდება, ან ბოლომდე ფაილი მიაღწია, დაბრუნების ღირებულება არის 1013 00:49:47,780 --> 00:49:51,490 მოკლე საქონლის რაოდენობა ან 0. 1014 00:49:51,490 --> 00:49:57,860 >> ასე რომ, ჩვენი მიზნებისთვის, თუ fread აღწევს ბოლოს ფაილი, და იკითხება 1015 00:49:57,860 --> 00:50:02,100 ფაილის დასასრულს, იქ არაფერი დარჩა წავიკითხე, რა არის ის დაბრუნებას აპირებს? 1016 00:50:02,100 --> 00:50:03,290 >> STUDENT 43: Zero? 1017 00:50:03,290 --> 00:50:04,540 >> JASON HIRSCHHORN: What? 1018 00:50:04,540 --> 00:50:05,300 >> STUDENT 43: Zero? 1019 00:50:05,300 --> 00:50:05,690 >> JASON HIRSCHHORN: Zero. 1020 00:50:05,690 --> 00:50:06,940 ის დაბრუნებას აპირებს ნულოვანი. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 ასე რომ, ჩვენ ვიცით, რომ fread, როდესაც ჩვენ მიაღწია ფაილის ბოლოში, აპირებს 1023 00:50:13,010 --> 00:50:13,690 დაბრუნების ნულოვანი. 1024 00:50:13,690 --> 00:50:17,460 როგორ გამოვიყენოთ რომ ჩვენი უპირატესობა? 1025 00:50:17,460 --> 00:50:21,733 >> AVI შეგიძლიათ განაცხადოს ცვლადი გარეთ მარყუჟის მოუწოდა ქვითარი. 1026 00:50:21,733 --> 00:50:27,040 იმ შემთხვევაში, თუ შემოწმების შეადგენს - 1027 00:50:27,040 --> 00:50:28,190 ახლა ერთ - ერთი. 1028 00:50:28,190 --> 00:50:28,920 >> JASON HIRSCHHORN: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: და მაშინ თქვენ შეგიძლიათ განათავსოთ IF განცხადება მას შემდეგ fread განაცხადა, რომ იმ შემთხვევაში, თუ 1030 00:50:38,050 --> 00:50:42,600 fread შეადგენს zero - 1031 00:50:42,600 --> 00:50:43,850 არ. 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> JASON HIRSCHHORN: ვინ დაგეხმარებათ Avi out? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: რა არის ღირებულება დაბრუნდა fread? 1036 00:50:52,410 --> 00:50:54,060 >> JASON HIRSCHHORN: ჩვენ მხოლოდ წავიდა, რომ. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: როგორ წარმოადგენს მას? 1038 00:50:55,450 --> 00:50:57,190 >> JASON HIRSCHHORN: ასე რომ, ის დააბრუნებს - მოდით ეძებოთ აქ - ის დააბრუნებს 1039 00:50:57,190 --> 00:50:59,340 size_t, რომელიც არსებითად მთელი რიცხვი. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 ასე რომ, ის დააბრუნებს რიცხვი. 1042 00:51:03,410 --> 00:51:05,160 და ჩვენს შემთხვევაში, ის დაბრუნდნენ 1 ან 0 - 1043 00:51:05,160 --> 00:51:08,760 1 თუ ეს წავიკითხე ერთი რამ - ერთი ბაიტი, და 0 თუ ჩვენ მიაღწია ბოლომდე. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 ასე რომ, თუ fread - 1046 00:51:16,450 --> 00:51:16,855 yeah? 1047 00:51:16,855 --> 00:51:20,330 >> STUDENT 45: ვერ უბრალოდ დააყენა სრული fread (ბუფერული, 1, 1, src) შევიდა 1048 00:51:20,330 --> 00:51:21,660 ხოლო loop? 1049 00:51:21,660 --> 00:51:26,510 >> JASON HIRSCHHORN: ასე რომ თქვენ შესთავაზოს ამით შევიდა იქ? 1050 00:51:26,510 --> 00:51:27,600 >> [INTERPOSING VOICES] 1051 00:51:27,600 --> 00:51:29,520 >> JASON HIRSCHHORN: Hold on. 1052 00:51:29,520 --> 00:51:30,885 ასე რომ ჩვენ ridding რომ. 1053 00:51:30,885 --> 00:51:33,300 ასე რომ თქვენ სთავაზობს აყენებს fread შევიდა იქ? 1054 00:51:33,300 --> 00:51:35,457 რა უნდა ჩვენ ასევე გადაადგილება თუ გსურთ ამის გაკეთება? 1055 00:51:35,457 --> 00:51:36,740 >> STUDENT 45 ბუფერული გარეთ. 1056 00:51:36,740 --> 00:51:38,110 >> JASON HIRSCHHORN: ჩვენ უნდა ასევე გადაადგილება ამ აქ. 1057 00:51:38,110 --> 00:51:41,700 >> STUDENT 45: მაგრამ იმას, რომ მუდმივად გადატანა ნაბიჯია? 1058 00:51:41,700 --> 00:51:42,950 >> [INTERPOSING VOICES] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> JASON HIRSCHHORN: OK. 1061 00:51:47,470 --> 00:51:50,570 ასე რომ, ეს არის ის, რაც Okshar შესთავაზა. 1062 00:51:50,570 --> 00:51:51,930 ჩვენ შევქმნათ ჩვენი ბუფერული. 1063 00:51:51,930 --> 00:51:57,020 ჩვენ ხოლო fread, მაშინ ჩვენ fwrite. 1064 00:51:57,020 --> 00:51:59,760 აზრები ამ საკითხთან დაკავშირებით? 1065 00:51:59,760 --> 00:52:04,050 >> STUDENT 46 ჩემი ერთადერთი საკითხი არ არის, რომ რეალურად შესრულდეს ბრძანება fread? 1066 00:52:04,050 --> 00:52:06,175 >> JASON HIRSCHHORN: Great კითხვა. 1067 00:52:06,175 --> 00:52:11,050 როდესაც თქვენ აყენებს ფუნქცია ზარი შიგნით მდგომარეობაში, აკეთებს, რომ 1068 00:52:11,050 --> 00:52:12,300 ფუნქციის ზარის შეასრულოს? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 ჩვენ ვნახეთ მაგალითები ადრე. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 უფლება? 1073 00:52:25,660 --> 00:52:26,125 >> STUDENT 46 OK. 1074 00:52:26,125 --> 00:52:26,590 ჰო. 1075 00:52:26,590 --> 00:52:30,140 ასე რომ, ეს არ შეასრულოს. 1076 00:52:30,140 --> 00:52:31,790 >> JASON HIRSCHHORN: ჩვენ ვნახეთ რამ როგორიცაა, რომ ადრე, სადაც ჩვენ გვაქვს 1077 00:52:31,790 --> 00:52:33,550 ფუნქციის ზარის შიგნით მდგომარეობა. 1078 00:52:33,550 --> 00:52:35,540 ამჯამად რომ ფუნქცია ზარი შეასრულოს? 1079 00:52:35,540 --> 00:52:36,350 დიახ. 1080 00:52:36,350 --> 00:52:37,410 ასე რომ, პასუხი არის დიახ. 1081 00:52:37,410 --> 00:52:41,010 ეს ფუნქცია ზარი განახორციელებს. 1082 00:52:41,010 --> 00:52:42,418 თუმცა ისევ და ისევ, არის ის, რაც ჩვენ გვინდა? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> რა არის ერთი გზა, ჩვენ ვერ გაერკვნენ თუ ის, რაც ჩვენ გვინდა? 1085 00:52:52,204 --> 00:52:53,470 >> მრავალჯერადი სტუდენტები: გაუშვით? 1086 00:52:53,470 --> 00:52:54,460 >> JASON HIRSCHHORN ჩვენ ვერ აწარმოებს. 1087 00:52:54,460 --> 00:52:57,500 მაგრამ სანამ ჩვენ გავაკეთოთ, რომ შეგვეძლო ასევე მსჯელობა მეშვეობით. 1088 00:52:57,500 --> 00:52:57,920 იმ შემთხვევაში, თუ - 1089 00:52:57,920 --> 00:53:01,920 ამბობენ, რომ ჩვენ ერთი byte ჩვენს შეიტანოს, ჩვენ კიდევ აქ, 1090 00:53:01,920 --> 00:53:02,660 ჩვენ კიდევ ეს კოდი. 1091 00:53:02,660 --> 00:53:03,620 ამ მიიღებს. 1092 00:53:03,620 --> 00:53:07,780 fread დაბრუნდება ერთი byte და ჩაწერს მას ბუფერული. 1093 00:53:07,780 --> 00:53:11,290 და ეს იქნება შეაფასოს 1, მარჯვენა, შემდეგ იგი ბრუნდება 1. 1094 00:53:11,290 --> 00:53:12,640 >> ასე რომ, ხოლო 1. 1095 00:53:12,640 --> 00:53:15,325 ნიშნავს ეს კოდი შიგნით ხოლო loop განახორციელებს? 1096 00:53:15,325 --> 00:53:15,453 >> STUDENT 47: Yeah. 1097 00:53:15,453 --> 00:53:16,040 ეს სიმართლეა. 1098 00:53:16,040 --> 00:53:16,290 >> JASON HIRSCHHORN: დიახ. 1099 00:53:16,290 --> 00:53:17,490 1 მართალია. 1100 00:53:17,490 --> 00:53:18,240 ეს არ არის 0. 1101 00:53:18,240 --> 00:53:20,360 ამიტომ კოდი შიგნით აქ შეასრულოს. 1102 00:53:20,360 --> 00:53:22,300 ამიტომ ჩვენ წერენ, რომ. 1103 00:53:22,300 --> 00:53:25,340 ჩვენ გადაადგილება უკან ამ ხაზი კიდევ ერთხელ. 1104 00:53:25,340 --> 00:53:26,850 ახლა გვაქვს - 1105 00:53:26,850 --> 00:53:28,550 ჩვენ დასასრულს ჩვენი ფაილი. 1106 00:53:28,550 --> 00:53:30,980 ჩვენ წაკითხვის ბოლოს ჩვენი ფაილი, იმიტომ, რომ ჩვენ მხოლოდ ერთი byte მას. 1107 00:53:30,980 --> 00:53:34,270 >> Fread დააბრუნებს 0, მაღაზიები რაღაც ბუფერული. 1108 00:53:34,270 --> 00:53:35,890 მე ნამდვილად არ ვიცი, რა იგი ინახავს ბუფერულ. 1109 00:53:35,890 --> 00:53:38,380 ჩვენ შეგვეძლო ალბათ ეძებოთ იმისათვის, რომ ნახოთ, თუ რას აკეთებს. 1110 00:53:38,380 --> 00:53:40,130 რომ მე ნამდვილად არ ვიცი. 1111 00:53:40,130 --> 00:53:43,090 ჩვენ არ ვიცით, ვინ ზრუნავს რა იგი ინახავს ბუფერულ? 1112 00:53:43,090 --> 00:53:44,010 მაგრამ ეს არ დაბრუნდება 0. 1113 00:53:44,010 --> 00:53:45,440 და მიუხედავად იმისა 0 შეასრულოს? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> ხოლო 0 არ შეასრულოს. 1116 00:53:51,180 --> 00:53:54,030 ასე რომ მაშინ ჩვენ ქვევით აქ. 1117 00:53:54,030 --> 00:53:58,870 მოდით მისაღებად შოუ ხელში, თუ ამ არის კოდი ჩვენ უნდა აწარმოებს, ან თუ ჩვენ 1118 00:53:58,870 --> 00:54:00,140 უნდა გავაკეთოთ ცვლილებები პირველი. 1119 00:54:00,140 --> 00:54:02,180 ასე რომ, თუ თქვენ ფიქრობთ - თქვენ გაქვთ ხმის მიცემა. 1120 00:54:02,180 --> 00:54:06,885 თუ ფიქრობთ, რომ ჩვენ უნდა აწარმოებს ამ კოდი როგორც არის, გთხოვთ დააყენებს თქვენი მხრივ. 1121 00:54:06,885 --> 00:54:12,440 1122 00:54:12,440 --> 00:54:13,400 >> OK. 1123 00:54:13,400 --> 00:54:14,315 იქ ერთ - 1124 00:54:14,315 --> 00:54:17,260 გაქვთ კითხვა, შეშფოთება? 1125 00:54:17,260 --> 00:54:18,080 ჰო. 1126 00:54:18,080 --> 00:54:21,240 >> STUDENT 48: შემდეგ გადავდივართ ბუფერული გარეთ მარყუჟის, ჩვენ 1127 00:54:21,240 --> 00:54:22,670 უნდა malloc ეს? 1128 00:54:22,670 --> 00:54:23,310 >> JASON HIRSCHHORN: Great კითხვა. 1129 00:54:23,310 --> 00:54:26,670 შემდეგ გადავდივართ ბუფერული გარეთ loop, გვაქვს malloc ეს? 1130 00:54:26,670 --> 00:54:28,400 ეს არის ფარგლებში კითხვაზე. 1131 00:54:28,400 --> 00:54:32,130 იმ შემთხვევაში, თუ ჩვენ ინიციალიზაცია ბუფერული გარეთ ამ მარყუჟის, იქნება ეს არსებობს 1132 00:54:32,130 --> 00:54:33,534 შიგნით loop? 1133 00:54:33,534 --> 00:54:35,230 >> მრავალჯერადი სტუდენტური: დიახ. 1134 00:54:35,230 --> 00:54:35,580 >> JASON HIRSCHHORN: დიახ. 1135 00:54:35,580 --> 00:54:40,100 მოქმედების არეალი მოიცავს შიგნით მარყუჟის, და, მართლაც, არაფერს ქვემოთ შიგნით 1136 00:54:40,100 --> 00:54:42,460 ამ კოდექსის, მათ შორის, რამ შიგნით აქ. 1137 00:54:42,460 --> 00:54:43,930 ასე რომ, ჩვენ არ უნდა malloc იგი. 1138 00:54:43,930 --> 00:54:47,766 ეს ადგილობრივი ცვლადი, და მის ფარგლებს მაინც მოიცავს loop. 1139 00:54:47,766 --> 00:54:49,540 >> STUDENT 49: ჩვენ უნდა გავათავისუფლოთ ეს? 1140 00:54:49,540 --> 00:54:51,770 >> JASON HIRSCHHORN: Do we უნდა უფასო ბუფერული? 1141 00:54:51,770 --> 00:54:53,860 >> STUDENT 49: Yeah, თუ ჩვენ არ malloc. 1142 00:54:53,860 --> 00:54:55,750 >> JASON HIRSCHHORN: Do we უნდა უფასო ბუფერული? 1143 00:54:55,750 --> 00:54:57,160 არა. 1144 00:54:57,160 --> 00:55:01,280 ისევ, ეს არის ადგილობრივი ცვლადი, ამიტომ ჩვენ არ უნდა გავათავისუფლოთ იგი. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 ვნახოთ, რა მოხდება. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 ასე რომ, ეს არის uninitialized. 1149 00:55:18,220 --> 00:55:20,830 ეს იყო რა, რომ რაღაც Marcus გააკეთა. 1150 00:55:20,830 --> 00:55:25,340 ასე რომ, ჩვენ, რომ შეცდომა, ცვლადი ბუფერული არის uninitialized როდესაც გამოიყენება აქ. 1151 00:55:25,340 --> 00:55:26,590 >> როგორ შეგვიძლია დაფიქსირება ამ? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> STUDENT 50 Malloc ეს? 1154 00:55:30,960 --> 00:55:31,770 >> STUDENT 51 უდრის NULL? 1155 00:55:31,770 --> 00:55:33,000 >> STUDENT 52: Say ბუფერული უდრის NULL. 1156 00:55:33,000 --> 00:55:34,250 >> JASON HIRSCHHORN: OK. 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 კარგად გამოიყურება. 1159 00:55:40,770 --> 00:55:42,410 ჩვენ ახლა. 1160 00:55:42,410 --> 00:55:45,630 მოდით შევქმნათ რაღაც ცდილობენ კოპირება. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 ასე რომ, ჩვენ გვაქვს ჩვენი ტექსტური ფაილი. 1163 00:56:10,490 --> 00:56:11,740 როგორ შეგვიძლია აწარმოებს ამ პროგრამის? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 ჰო. 1166 00:56:15,472 --> 00:56:22,230 >> STUDENT 53: შეგიძლიათ გააკეთოთ dot slash cp, test.txt. 1167 00:56:22,230 --> 00:56:25,140 და მაშინ ასახელებს სხვა ფაილი რომელიც მას შესანახად შევიდა. 1168 00:56:25,140 --> 00:56:25,510 >> JASON HIRSCHHORN: OK. 1169 00:56:25,510 --> 00:56:27,380 ჩვენ მოვუწოდებთ მას out.txt. 1170 00:56:27,380 --> 00:56:28,630 Cool? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 Seg ბრალია. 1173 00:56:34,320 --> 00:56:35,570 ფიქრები seg ბრალია? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 ეს არის დიდი. 1176 00:56:41,390 --> 00:56:45,040 როგორ შეგვიძლია გავარკვიოთ, სადაც seg ბრალია? 1177 00:56:45,040 --> 00:56:45,680 რა? 1178 00:56:45,680 --> 00:56:45,990 >> STUDENT 54 GDB. 1179 00:56:45,990 --> 00:56:47,240 >> JASON HIRSCHHORN: GDB. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 ჩვენ აწარმოებს GDB წერილობით GDB dot ხაზი, სახელი ჩვენი პროგრამა. 1182 00:56:55,300 --> 00:56:57,020 არარის ბრძანება ხაზი არგუმენტები არსებობს. 1183 00:56:57,020 --> 00:56:59,570 ჩვენ ვაპირებთ, რომ მითითებული breakpoint დროს ძირითადი. 1184 00:56:59,570 --> 00:57:02,190 იმ შემთხვევაში, თუ მინდა, რომ დაიწყოს GDB, რა გავაკეთო? 1185 00:57:02,190 --> 00:57:02,730 >> STUDENT 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> JASON HIRSCHHORN: R. და მერე რა? 1187 00:57:08,910 --> 00:57:09,400 >> STUDENT 55 არგუმენტები? 1188 00:57:09,400 --> 00:57:10,650 >> JASON HIRSCHHORN: მაშინ ბრძანების ხაზი არგუმენტები. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 მოდით გავლა. 1191 00:57:17,120 --> 00:57:19,090 N უბრალოდ აღების ჩემთვის ხაზს. 1192 00:57:19,090 --> 00:57:21,450 მე ვაპირებ წასვლა სანამ მივიღო ჩემი seg ბრალია. 1193 00:57:21,450 --> 00:57:22,700 იქ ჩემი seg ბრალია. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 ეს ჰგავს fread გამოიწვია ჩემი seg ბრალია. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 მე ვიცი fread გამოიწვია ჩემი seg ბრალია, იმიტომ, რომ იყო 1198 00:57:32,770 --> 00:57:34,950 ონლაინ ჩვენ უბრალოდ დახვრიტეს. 1199 00:57:34,950 --> 00:57:36,530 >> და ერთადერთი, რაც იყო, ხდება, რომ ხაზი - 1200 00:57:36,530 --> 00:57:37,520 ორი რამ ხდებოდა. 1201 00:57:37,520 --> 00:57:40,610 Fread ხდებოდა, და მაშინ ვიყავით აკეთებს ზოგიერთი ხოლო შემოწმების. 1202 00:57:40,610 --> 00:57:44,820 მე სურვილი დადებს, რომ იმ დროს, როდესაც შემოწმების არ იწვევს ჩემი seg ბრალია. 1203 00:57:44,820 --> 00:57:46,950 სავარაუდოდ, fread იყო რამაც ჩემი seg ბრალია. 1204 00:57:46,950 --> 00:57:49,260 მეც ვხედავ რაღაც აქ, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Memory ასლი. 1206 00:57:50,500 --> 00:57:53,820 ჟღერს მოძრავი მეხსიერება ერთი ადგილმდებარეობა სხვა. 1207 00:57:53,820 --> 00:57:56,890 ჟღერს რაღაც რომ მოხდება in fread, შესაძლოა, გარკვეული მეხსიერება 1208 00:57:56,890 --> 00:57:58,910 მოძრავი აქ აქ. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 მოდით გავლა ამ ერთხელ. 1211 00:58:03,860 --> 00:58:06,900 როგორ დავიწყო, რომ მეტი და გაუშვით ერთხელ? 1212 00:58:06,900 --> 00:58:08,092 ჰო. 1213 00:58:08,092 --> 00:58:15,140 >> STUDENT 56: თქვენ უნდა დააყენოს ampersand წინაშე ბუფერული? 1214 00:58:15,140 --> 00:58:17,800 >> JASON HIRSCHHORN: ასე ampersand წინაშე ბუფერული მაძლევს მისამართი 1215 00:58:17,800 --> 00:58:22,330 ბუფერული, რომელიც არის char *. 1216 00:58:22,330 --> 00:58:25,250 მოდით აწარმოებს ამ გზით კიდევ ერთხელ. 1217 00:58:25,250 --> 00:58:28,248 როგორ შემიძლია აწარმოებს მეშვეობით ეს კიდევ ერთხელ? 1218 00:58:28,248 --> 00:58:29,210 >> STUDENT 57: შეგიძლიათ უბრალოდ ჩაწერეთ run ერთხელ? 1219 00:58:29,210 --> 00:58:32,050 >> JASON HIRSCHHORN: მხოლოდ ჩაწერეთ ტირაჟი ერთხელ. 1220 00:58:32,050 --> 00:58:33,415 ასე რომ, ჩვენ არ ვაპირებთ შეასრულოს ამ ხაზის. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 ასე რომ ბუფერული არის NULL მაჩვენებელი. 1223 00:58:39,240 --> 00:58:40,490 სწორი? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 ის მიუთითებს - ვნახოთ. 1226 00:58:47,060 --> 00:58:48,500 იმ შემთხვევაში, თუ ჩვენ გვყავს ჩვენი - 1227 00:58:48,500 --> 00:58:50,430 დავხატოთ სწრაფი სურათი ამ. 1228 00:58:50,430 --> 00:58:53,500 შეგიძლიათ ყველამ ნახოთ, თუ ვწერ აქ? 1229 00:58:53,500 --> 00:59:02,890 >> ასე რომ, დასტის, ჩვენ ადგილობრივი ცვლადი და ეს ე.წ. ბუფერულ, და 1230 00:59:02,890 --> 00:59:08,230 ის მომცეთ char. 1231 00:59:08,230 --> 00:59:10,325 რა მისამართზე არის ეს char ზე? 1232 00:59:10,325 --> 00:59:12,550 >> STUDENT 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> JASON HIRSCHHORN: Right. 1234 00:59:13,400 --> 00:59:14,200 სწორედ ამ არის. 1235 00:59:14,200 --> 00:59:17,600 აქ, შიგნით, ბუფერული, ინახება 0x0. 1236 00:59:17,600 --> 00:59:20,480 ის, რაც გვაქვს - setup ჩვენ ახლა. 1237 00:59:20,480 --> 00:59:27,540 ასე რომ, ეს ხაზი, fread, აყენებს რაღაც წყარო სად? 1238 00:59:27,540 --> 00:59:30,560 ამ ყუთში ან ამ ყუთში? 1239 00:59:30,560 --> 00:59:31,060 რომელ ყუთში? 1240 00:59:31,060 --> 00:59:33,290 მარცხენა ყუთში ან მარჯვენა ყუთში? 1241 00:59:33,290 --> 00:59:34,750 ეს უფლება ყუთში. 1242 00:59:34,750 --> 00:59:38,440 >> ეს შემდეგნაირად მაჩვენებელი, და აყენებს მას აქ. 1243 00:59:38,440 --> 00:59:42,620 როდესაც ვცდილობთ და სენსორული მეხსიერება განთავსების 0, რას მივიღებთ? 1244 00:59:42,620 --> 00:59:45,050 სეგმენტაცია ბრალია. 1245 00:59:45,050 --> 00:59:46,550 სწორედ შეცდომა ჩვენ ახლა. 1246 00:59:46,550 --> 00:59:46,970 ჰო. 1247 00:59:46,970 --> 00:59:48,410 >> STUDENT 59: არ გაქვთ დააყენოს ვარსკვლავი ბუფერული? 1248 00:59:48,410 --> 00:59:49,180 თუ არა? 1249 00:59:49,180 --> 00:59:50,050 განთავსების fread? 1250 00:59:50,050 --> 00:59:51,450 >> JASON HIRSCHHORN: So fread იღებს მაჩვენებელი. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 ასე რომ გადის ბუფერული. 1253 00:59:55,900 --> 00:59:58,980 და მერე კიდე დე მითითება ის სადღაც შიგნით fread. 1254 00:59:58,980 --> 01:00:00,700 თუმცა ისევ და ისევ, ჩვენ ვნახეთ, ის მაჩვენებელი. 1255 01:00:00,700 --> 01:00:02,560 ჩვენ არ უნდა გაიაროს ეს ვარსკვლავი ბუფერული. 1256 01:00:02,560 --> 01:00:05,350 რომ იქნება გავლის ის, რასაც აქ. 1257 01:00:05,350 --> 01:00:07,980 და რომ, ალბათ, გვაძლევს შეცდომა რადგან ჩვენ დე მითითება იგი. 1258 01:00:07,980 --> 01:00:08,150 >> უფლება? 1259 01:00:08,150 --> 01:00:10,690 როდესაც ჩვენ დე მინიშნება ეს მაჩვენებელი, როდესაც ჩვენ ვცდილობთ ამ განყოფილების 1260 01:00:10,690 --> 01:00:13,140 ჩვენ ვიღებთ შეცდომა - ჩვენი სეგმენტაცია ბრალია. 1261 01:00:13,140 --> 01:00:15,800 ასე რომ, - 1262 01:00:15,800 --> 01:00:16,690 oops. 1263 01:00:16,690 --> 01:00:19,090 ჩვენ ვაპირებთ დატოვა გარეთ GDB. 1264 01:00:19,090 --> 01:00:20,160 ჩვენი ხაზი - 1265 01:00:20,160 --> 01:00:22,990 ჩვენი პრობლემა - არის სწორი აქ, ამ ხაზის. 1266 01:00:22,990 --> 01:00:26,410 და ეს პრობლემა, რადგან ამ ხაზის. 1267 01:00:26,410 --> 01:00:31,780 >> როგორ შეგვიძლია შევქმნათ ყუთი, ხელმისაწვდომია fread. 1268 01:00:31,780 --> 01:00:31,980 უფლება? 1269 01:00:31,980 --> 01:00:35,190 ჩვენ უნდა შევქმნათ ყუთი რომ ერთი byte დიდი, ზომა char. 1270 01:00:35,190 --> 01:00:38,590 მაგრამ ჩვენ გვჭირდება, რომ ყუთში იყოს ხელმისაწვდომი როდესაც ეს ფუნქცია გაუშვებს. 1271 01:00:38,590 --> 01:00:39,390 ასე რომ, სად - 1272 01:00:39,390 --> 01:00:39,640 yeah. 1273 01:00:39,640 --> 01:00:40,440 ნებისმიერი იდეები? 1274 01:00:40,440 --> 01:00:43,615 >> STUDENT 60: Just მითითებული, როგორც ნებისმიერი შემთხვევითი ხასიათი. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 უბრალოდ char ბუფერული შეადგენს ხასიათი. 1277 01:00:51,640 --> 01:00:53,795 და მაშინ, როცა ბუფერში იქ - 1278 01:00:53,795 --> 01:00:54,110 >> JASON HIRSCHHORN: Wait. 1279 01:00:54,110 --> 01:00:55,110 Char ბუფერული? 1280 01:00:55,110 --> 01:00:55,880 ასე რომ არ ვარსკვლავი? 1281 01:00:55,880 --> 01:00:56,390 >> STUDENT 60: Yeah. 1282 01:00:56,390 --> 01:00:58,560 აიღოს ვარსკვლავი. 1283 01:00:58,560 --> 01:01:00,690 შეადგენს შემთხვევითი ხასიათი. 1284 01:01:00,690 --> 01:01:01,460 >> JASON HIRSCHHORN: OK. 1285 01:01:01,460 --> 01:01:02,420 ასე რომ მომეცი ერთი. 1286 01:01:02,420 --> 01:01:03,170 >> STUDENT 60: Like a ან რამე. 1287 01:01:03,170 --> 01:01:06,160 და მაშინ, როდესაც თქვენ გაქვთ ბუფერული იქ, თქვენ იყენებთ - 1288 01:01:06,160 --> 01:01:06,420 >> STUDENT 61: Star? 1289 01:01:06,420 --> 01:01:07,650 Oh no, ampersand. 1290 01:01:07,650 --> 01:01:09,000 >> STUDENT 60: გამოიყენეთ ampersand. 1291 01:01:09,000 --> 01:01:09,470 >> JASON HIRSCHHORN: OK. 1292 01:01:09,470 --> 01:01:11,320 რაც შეეხება ამ fwrite? 1293 01:01:11,320 --> 01:01:14,150 >> STUDENT 60: გამოიყენეთ ampersand ერთხელ. 1294 01:01:14,150 --> 01:01:14,320 >> JASON HIRSCHHORN ყველა უფლება. 1295 01:01:14,320 --> 01:01:20,970 ასე რომ თქვენი იდეა არის ის, რომ ჩვენ შევქმნათ char და დააყენა რაღაც, და მერე 1296 01:01:20,970 --> 01:01:22,612 წერენ, რომ char. 1297 01:01:22,612 --> 01:01:23,760 >> STUDENT 60: Yeah. 1298 01:01:23,760 --> 01:01:25,916 >> JASON HIRSCHHORN: რა ფიქრობს ხალხი? 1299 01:01:25,916 --> 01:01:27,770 >> STUDENT 62: ეს convoluted. 1300 01:01:27,770 --> 01:01:28,460 >> JASON HIRSCHHORN: OK. 1301 01:01:28,460 --> 01:01:29,760 მოდით დავხატოთ ის. 1302 01:01:29,760 --> 01:01:35,720 ასე რომ, ამ დროს, მე ვაპირებ შევაჩერო ამ წითელი დასტის აქ, და შემდეგ ჩვენ 1303 01:01:35,720 --> 01:01:36,410 ექნება - 1304 01:01:36,410 --> 01:01:36,822 ooh! 1305 01:01:36,822 --> 01:01:38,060 უკაცრავად. 1306 01:01:38,060 --> 01:01:45,930 ასე რომ, ამ დროს ჩვენ გვაქვს რაღაც მოუწოდა ბუფერი, და ეს Stack. 1307 01:01:45,930 --> 01:01:48,430 სწორი? 1308 01:01:48,430 --> 01:01:51,520 და ჩვენ გადარჩენა მას, თავდაპირველად. 1309 01:01:51,520 --> 01:01:53,830 >> მაშინ ჩვენ გვაქვს ჩვენი მოწოდება fread. 1310 01:01:53,830 --> 01:02:01,300 რა fread არ არის ის იღებს byte დან ჩვენი ფაილი და აყენებს მას სადღაც. 1311 01:02:01,300 --> 01:02:04,570 იგი აყენებს მას რასაც რაც მიუთითებს. 1312 01:02:04,570 --> 01:02:09,130 ისე, ადრე გვქონდა ამ მისამართზე - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 ახლა რა მისამართზე გვაქვს? 1315 01:02:13,349 --> 01:02:14,650 >> STUDENT 63: Whatever მისამართი ბუფერი. 1316 01:02:14,650 --> 01:02:15,970 >> JASON HIRSCHHORN: Whatever მისამართი ბუფერი. 1317 01:02:15,970 --> 01:02:22,370 ალბათ იქნება რამე მაგდაგვარს. 1318 01:02:22,370 --> 01:02:26,950 ალბათ აპირებს დაიწყოს ბ და f, და შემდეგ ექვსი სხვა 1319 01:02:26,950 --> 01:02:27,970 თექვსმეტობითი ციფრები. 1320 01:02:27,970 --> 01:02:28,480 მნიშვნელობა არ აქვს. 1321 01:02:28,480 --> 01:02:29,470 ზოგიერთი მისამართზე. 1322 01:02:29,470 --> 01:02:31,410 და ჩვენ ავლით, რომ მისამართი შემოსული 1323 01:02:31,410 --> 01:02:34,790 >> და ჩვენ ვაპირებთ, რომ ჩვენი ერთი byte რამ იმ მისამართზე. 1324 01:02:34,790 --> 01:02:38,470 ამიტომ, ჩვენ ვაპირებთ, რომ ჩვენი ერთი byte, რაც შიგნით აქ. 1325 01:02:38,470 --> 01:02:40,800 და მაშინ ჩვენ ვაპირებთ დავწეროთ დან რა ოდესმე შიგნით აქ. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 ვინმეს გაქვთ რაიმე შეკითხვები ამის შესახებ? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 ვინც ფიქრობს, ამ კოდექსით იმუშავებს? 1330 01:02:54,690 --> 01:02:56,020 >> გაზარდოთ თქვენი მხრივ, თუ ფიქრობთ, ეს კოდი იმუშავებს. 1331 01:02:56,020 --> 01:02:57,270 თქვენ უნდა მიიღოს პოზიცია. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 და ვინც ფიქრობს, რომ ეს კოდი არ იმუშავებს? 1334 01:03:02,500 --> 01:03:04,610 ამაღლება თქვენი მხრივ. 1335 01:03:04,610 --> 01:03:06,750 ყველას უნდა იყოს ამაღლების მათი მხრივ. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 მიხეილი, სად იდგა? 1338 01:03:09,390 --> 01:03:10,680 >> MICHAEL მე ვერ გადაწყვეტს. 1339 01:03:10,680 --> 01:03:12,070 კეთილი ცენტრიდან. 1340 01:03:12,070 --> 01:03:12,736 >> JASON HIRSCHHORN: თქვენ ცენტრიდან. 1341 01:03:12,736 --> 01:03:13,092 აირჩიოთ ერთი. 1342 01:03:13,092 --> 01:03:14,400 >> MICHAEL: მე რწმენა და აცხადებენ, რომ ის იმუშავებს. 1343 01:03:14,400 --> 01:03:14,660 >> JASON HIRSCHHORN: OK. 1344 01:03:14,660 --> 01:03:16,047 თქვენ უნდა რწმენა და აცხადებენ, რომ ეს მუშაობს? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 რა მოხდა? 1347 01:03:27,020 --> 01:03:28,270 >> [INTERPOSING VOICES] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON HIRSCHHORN: არარის seg ბრალია. 1350 01:03:35,950 --> 01:03:40,320 როგორ შეგვიძლია შეამოწმეთ თუ ორი რამ არის თანაბარი? 1351 01:03:40,320 --> 01:03:42,060 ორი ფაილი იდენტურია. 1352 01:03:42,060 --> 01:03:43,300 >> STUDENT 64: Diff. 1353 01:03:43,300 --> 01:03:45,490 >> JASON HIRSCHHORN: Diff. 1354 01:03:45,490 --> 01:03:51,630 Diff ამოწმებს განსხვავებები ორი ფაილი, და თუ ის დააბრუნებს 1355 01:03:51,630 --> 01:03:52,890 არაფერი, ისინი იდენტურია. 1356 01:03:52,890 --> 01:03:59,030 და თუ ჩვენ გახსნას, მივიღებთ ჩვენი ფაილი. 1357 01:03:59,030 --> 01:04:00,490 ასე, რომ ეს იყო სწორი გადაწყვეტილება. 1358 01:04:00,490 --> 01:04:01,780 მოდით ვიხსენებთ მას კიდევ ერთხელ. 1359 01:04:01,780 --> 01:04:04,080 ჩვენ, ფაქტობრივად, არც კი უნდა ინიციალიზაცია იგი. 1360 01:04:04,080 --> 01:04:05,520 >> ეს, ალბათ გამოიყურებოდეს ცოტა დამლაგებელი თუ თქვენ არ დააყენა 1361 01:04:05,520 --> 01:04:07,680 რაღაც შემთხვევითი არსებობს. 1362 01:04:07,680 --> 01:04:13,070 წერტილი, რომ, თქვენ საჭიროა შეიქმნას გარკვეული სივრცე შესანახად რაღაც 1363 01:04:13,070 --> 01:04:15,530 fread და მიიღოს რაიმე out of fwrite. 1364 01:04:15,530 --> 01:04:18,400 და რომ, რაც უნდა იყოს ან ადგილობრივი ცვლადი დასტის - თქვენ 1365 01:04:18,400 --> 01:04:19,890 შეიძლება მე malloc'd გარკვეული ფართი. 1366 01:04:19,890 --> 01:04:23,030 >> ამიტომ ჩვენ რეალურად შეგვეძლო წერილობითი malloc აქ, და 1367 01:04:23,030 --> 01:04:25,420 რომ არ მუშაობდა. 1368 01:04:25,420 --> 01:04:28,660 და მაშინ ჩვენ უკვე შენახვა ჩვენი რამ სადმე ბევრი. 1369 01:04:28,660 --> 01:04:31,940 მაგრამ ეს არის რეალურად, ალბათ, ყველაზე ელეგანტური გადაწყვეტა. 1370 01:04:31,940 --> 01:04:34,490 უბრალოდ შევქმნათ სივრცე დასტის ეს ყველაფერი უნდა წავიდეს. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> მე ორი სხვა კომენტარი. 1373 01:04:38,990 --> 01:04:44,650 თუ იყო მიიღოს მხრივ, და შემდეგ მიიღოს გაიტანა ამ, ჩემი კომენტარი 1374 01:04:44,650 --> 01:04:47,400 იქნება შემდეგნაირად. 1375 01:04:47,400 --> 01:04:54,300 ეს 1 არის აქ, ჩემთვის, შევხედოთ მოსწონს Magic ნომრები. 1376 01:04:54,300 --> 01:04:56,860 ეს 1, თვალსაზრისით fread, აზრი. 1377 01:04:56,860 --> 01:04:59,580 სწორედ რიგი საკითხები, წაკითხვის ან ჩაწერის. 1378 01:04:59,580 --> 01:05:03,740 >> მაგრამ ეს ერთი აქ უნდა ალბათ რაღაც. 1379 01:05:03,740 --> 01:05:05,180 რა არის ერთი გამოსავალი? 1380 01:05:05,180 --> 01:05:06,545 >> STUDENT 65: ზომა byte. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON HIRSCHHORN: Like რომ? 1383 01:05:11,080 --> 01:05:13,130 >> STUDENT 65: ზომა char. 1384 01:05:13,130 --> 01:05:13,820 >> JASON HIRSCHHORN: ზომა char. 1385 01:05:13,820 --> 01:05:15,290 ჰო, byte არ არის ტიპის. 1386 01:05:15,290 --> 01:05:16,320 ასე ზომა char სამუშაოები. 1387 01:05:16,320 --> 01:05:30,270 ჩვენ შეგვეძლო, ზედა ჩვენი კოდი, # განმარტა, რომ. 1388 01:05:30,270 --> 01:05:33,410 მოუწოდა რაღაც ბიტიანი და ეს მართლაც char. 1389 01:05:33,410 --> 01:05:37,675 რეალურად, კიდევ უკეთესი მიდგომა შეიძლება ყოფილიყო ამ - 1390 01:05:37,675 --> 01:05:39,391 uint. 1391 01:05:39,391 --> 01:05:40,780 ვინმე იცით, რა არის? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> უკაცრავად. 1394 01:05:44,840 --> 01:05:46,090 მე მას უკან. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 დაველოდოთ, არა. 1397 01:05:52,200 --> 01:05:53,450 რომელი გზა აქვს მას წასვლა? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 ვინმე იცით, რა არის? 1400 01:05:59,660 --> 01:06:00,950 ჰო. 1401 01:06:00,950 --> 01:06:05,650 >> STUDENT 67 უნდა დაეხმაროს standardize მთელი სისტემები რამ, რომ 1402 01:06:05,650 --> 01:06:08,760 აქვს - მოსწონს ხელმოუწერელი რიცხვებით რომ აქვს 8 ბაიტი? 1403 01:06:08,760 --> 01:06:11,785 >> JASON HIRSCHHORN: ეს სწორედ. 1404 01:06:11,785 --> 01:06:14,310 სხვადასხვა მანქანები, ზომა char - 1405 01:06:14,310 --> 01:06:15,180 როგორც წესი, არ char. 1406 01:06:15,180 --> 01:06:16,100 სიმბოლო, როგორც წესი, ერთი byte. 1407 01:06:16,100 --> 01:06:19,590 მაგრამ ზომა სხვა მონაცემები სახის სხვადასხვა ზომის on 32-bit მანქანა 1408 01:06:19,590 --> 01:06:21,370 წინააღმდეგ 64-bit მანქანა. 1409 01:06:21,370 --> 01:06:25,180 Uint8_t ყოველთვის 8 ბიტი - 1410 01:06:25,180 --> 01:06:27,210 ყოველთვის ერთი byte. 1411 01:06:27,210 --> 01:06:29,580 >> და მე უნდა შეიცავდეს, რომ სტანდარტული int header ფაილი. 1412 01:06:29,580 --> 01:06:35,040 ახლა, ეს იქნებოდა ალბათ საუკეთესო გზა წერენ ეს კოდი. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 ასე რომ, თავი დაეღწია ჯადოსნური ნომრები. 1415 01:06:41,450 --> 01:06:44,690 და მე ასევე აქვს უფრო ლოგიკური ტიპის ბუფერული. 1416 01:06:44,690 --> 01:06:49,450 ეს არ არის უბრალოდ char, ეს არის byte, რაც ჩვენ მოველით, რომ იყოს. 1417 01:06:49,450 --> 01:06:53,400 >> და აქ, ჩვენ, ფაქტობრივად, ცოტა უფრო ძლიერი. 1418 01:06:53,400 --> 01:06:55,190 ჩვენ არ უწოდა char, რომელიც - 1419 01:06:55,190 --> 01:06:58,630 იქნებ, ვინ იცის - შეიძლება იყოს სხვადასხვა ზომის სხვადასხვა მანქანები. 1420 01:06:58,630 --> 01:07:02,025 ჩვენ რეალურად ვამბობ, ეს არის ზუსტად ის ერთი ბაიტი, ყოველთვის, არა აქვს მნიშვნელობა რა. 1421 01:07:02,025 --> 01:07:05,810 და თუ გადავხედავთ აქ, ჩვენ cp. 1422 01:07:05,810 --> 01:07:08,340 Uh-oh. 1423 01:07:08,340 --> 01:07:09,590 რა მოხდა? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> STUDENT 68: ეს შეიძლება იყოს ჩართული. 1426 01:07:16,170 --> 01:07:17,880 >> JASON HIRSCHHORN: What? 1427 01:07:17,880 --> 01:07:19,130 >> STUDENT 69: არის ეს? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> STUDENT 70: თქვენ არ განისაზღვროს, როგორც ტიპის. 1430 01:07:25,080 --> 01:07:28,684 >> STUDENT 71: მაგრამ ეს უნდა განისაზღვროს სტანდარტი. 1431 01:07:28,684 --> 01:07:29,934 >> STUDENT 72: რა ხდება? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> STUDENT 73 უნდა განსაზღვროს იქნება ყველა caps? 1434 01:07:40,210 --> 01:07:41,370 >> JASON HIRSCHHORN: ასე რომ, ეს არ არის # განსაზღვრავს. 1435 01:07:41,370 --> 01:07:45,490 სინამდვილეში, ამ შემთხვევაში, მე ვარ აპირებს გამოიყენოს typedef. 1436 01:07:45,490 --> 01:07:48,590 იმიტომ, რომ ჩვენ იყენებს მას, როგორც ტიპის ერთ ადგილას. 1437 01:07:48,590 --> 01:07:51,990 ასე რომ, ამ შემთხვევაში, ჩვენ რეალურად გვინდა typedef ისევე როგორც ჩვენ დაბეჭდვის ახალი ტიპის 1438 01:07:51,990 --> 01:07:54,490 byte, და ეს, არსებითად, ამ. 1439 01:07:54,490 --> 01:07:56,590 ეს ცოტა განსხვავებული # განსაზღვრავს. 1440 01:07:56,590 --> 01:08:02,740 >> და ახლა, ჩვენი კოდი მუშაობს იდეალურად. 1441 01:08:02,740 --> 01:08:05,230 ასე რომ, კიდევ ერთხელ, # განსაზღვრავს იღებს რაღაც, ცვლის მას ყველგან 1442 01:08:05,230 --> 01:08:06,780 სხვა რამ. 1443 01:08:06,780 --> 01:08:07,920 უბრალოდ მაკრო - 1444 01:08:07,920 --> 01:08:09,420 სტენოგრამის თავი დაეღწია ჯადოსნური ნომრები. 1445 01:08:09,420 --> 01:08:11,360 მაგრამ ამ შემთხვევაში, რადგან ჩვენ გამოყენებით, როგორც ტიპი - 1446 01:08:11,360 --> 01:08:12,180 სწორედ აქ - 1447 01:08:12,180 --> 01:08:19,880 იმისათვის, რომ იმუშაოს, საჭიროა to typedef რასაც byte არის. 1448 01:08:19,880 --> 01:08:21,840 >> და ჩვენ განსაზღვრავს მას უფლება აქ. 1449 01:08:21,840 --> 01:08:24,750 ეს არ არის struct, სინამდვილეში მხოლოდ unsigned რიცხვი. 1450 01:08:24,750 --> 01:08:27,680 ეს არის ერთ ერთი byte ხანგრძლივი. 1451 01:08:27,680 --> 01:08:31,910 ეს კოდი იქნება ხელმისაწვდომი, და თქვენ ყველა უნდა ჰქონდეს მას ახლა. 1452 01:08:31,910 --> 01:08:33,830 >> ასე რომ, ჩვენ - 1453 01:08:33,830 --> 01:08:34,250 სრულყოფილი - 1454 01:08:34,250 --> 01:08:41,359 13 წუთის დაუტოვებიათ წასვლა მეტი პრობლემა კომპლექტი 5. 1455 01:08:41,359 --> 01:08:44,270 მინდა გავლა copy.c ერთად, და მაშინ ჩვენ გაიგო მოკლედ 1456 01:08:44,270 --> 01:08:47,120 შესახებ სხვა ნაწილები პრობლემა შეიქმნა. 1457 01:08:47,120 --> 01:08:48,899 ნება მომეცით, დახევის up copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 და მაგარი რამ არის, ჩვენ, ფაქტობრივად, უკვე დაწერილი ბევრი ეს კოდი. 1460 01:09:08,810 --> 01:09:11,180 >> კოდი ჩვენ წერდა სიტყვასიტყვით უბრალოდ გამოვიდა აქ, როდესაც მე ვიყავი 1461 01:09:11,180 --> 01:09:13,120 წერა ამ ჩემს. 1462 01:09:13,120 --> 01:09:16,990 მაგრამ ეს არის copy.c, ქმნის საფუძველს პირველი ორი ნაწილი 1463 01:09:16,990 --> 01:09:22,340 პრობლემა მითითებული whodunit.c, რომელიც თქვენ უნდა დაწეროთ და resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, რომელიც არის მესამე და საბოლოო ნაწილი პრობლემა კომპლექტი, რომელიც არ არის 1465 01:09:27,050 --> 01:09:29,529 საფუძველზე off ამ ფაილის. 1466 01:09:29,529 --> 01:09:32,200 >> თქვენ აპირებთ უნდა დაწეროთ, რომ ფაილი, ჩვენ გაძლევთ თარგი რომ 1467 01:09:32,200 --> 01:09:34,620 შეიტანოს, მაგრამ მას არაფერი აქვს უნდა გავაკეთოთ copy.c. 1468 01:09:34,620 --> 01:09:38,675 არამედ იმიტომ, რომ copy.c არის საფუძველი პირველი ორი ნაწილი, ჩვენ ვაპირებთ 1469 01:09:38,675 --> 01:09:42,000 გავლა ახლა, ასე რომ თქვენ უნდა კარგი გრძნობა, თუ რას აკეთებს. 1470 01:09:42,000 --> 01:09:43,640 >> და კომენტარები მისცეს ზოგიერთი ის დაშორებით. 1471 01:09:43,640 --> 01:09:45,120 ჩვენ უკვე დაწერილი გარკვეული ამ. 1472 01:09:45,120 --> 01:09:49,220 პირველი, ჩვენ მიღების დარწმუნებული ვარ, ჩვენ კიდევ სამი არგუმენტები. 1473 01:09:49,220 --> 01:09:50,560 შემდეგი, ჩვენ დამახსოვრების ფაილის სახელი. 1474 01:09:50,560 --> 01:09:52,960 ასე რომ, ჩვენ გამოტოვებენ ეს ნაბიჯი, როდესაც ჩვენ კოდირებული ჩვენი რამ - 1475 01:09:52,960 --> 01:09:54,700 როდესაც ჩვენი cp. 1476 01:09:54,700 --> 01:09:56,750 მაგრამ აქ, ისინი მიღების ცოტა სუფთა. 1477 01:09:56,750 --> 01:09:59,350 >> ისინი შემოწმების დარწმუნდით ორივე ფაილი არის კარგი, 1478 01:09:59,350 --> 01:10:00,450 გარდა ამისა, გახსნის მათ. 1479 01:10:00,450 --> 01:10:04,760 ჩვენ წერდა ყველა ამ კოდექსის ახლა, ასე რომ მე არ აპირებს დაეფუძნება ეს კოდი. 1480 01:10:04,760 --> 01:10:09,670 შემდეგი არის რაღაცები, რომ კონკრეტული სახის ფაილებს ჩვენ გამოყენებით, რომელიც 1481 01:10:09,670 --> 01:10:12,240 არის bitmap ფაილი. 1482 01:10:12,240 --> 01:10:15,660 Bitmap ფაილი აქვს გარკვეული მეტადატის მათთან ასოცირებული. 1483 01:10:15,660 --> 01:10:20,190 >> ასე რომ, პირველი რამდენიმე bytes გითხრათ ფაილი. 1484 01:10:20,190 --> 01:10:23,460 ისინი არ არიან ფერები pixel რომ იმიჯი. 1485 01:10:23,460 --> 01:10:25,120 ისინი გითხრათ ფაილი. 1486 01:10:25,120 --> 01:10:28,220 და თუ წაიკითხავთ მეშვეობით პრობლემა კომპლექტი, თქვენ ბევრად უფრო მეტი ინფორმაცია 1487 01:10:28,220 --> 01:10:33,100 თუ რა სახის მეტადატის სტრუქტურებში შედის bitmaps. 1488 01:10:33,100 --> 01:10:39,350 >> მაგრამ ამიტომ ჩვენ ამ პირველ კომპლექტი - ეს კოდი უფლება აქ. 1489 01:10:39,350 --> 01:10:42,490 ჩვენ კითხულობს მეტადატის - 1490 01:10:42,490 --> 01:10:45,800 ორი ცალი მეტადატის - ფაილი header და ინფორმაციის header. 1491 01:10:45,800 --> 01:10:51,030 და ჩვენ შემოწმების ზოგიერთ ნაწილში, რომ ეს დარწმუნდით, რომ იგი არის ნამდვილი bitmap ფაილი 1492 01:10:51,030 --> 01:10:52,420 გაგრძელებამდე. 1493 01:10:52,420 --> 01:10:55,470 >> ისევ და ისევ, ეს არის დეტალები, ჩვენ არ უნდა წასვლას ახლა. 1494 01:10:55,470 --> 01:10:57,720 თუ წაიკითხავთ მეშვეობით პრობლემა კომპლექტი, თქვენ კარგად ესმის ეს. 1495 01:10:57,720 --> 01:11:01,370 დიდხანს ამბავი მოკლედ, ეს უბრალოდ ვამბობ, ეს არის bitmap ფაილი და 1496 01:11:01,370 --> 01:11:02,810 ადასტურებს, რომ. 1497 01:11:02,810 --> 01:11:05,180 >> შემდეგი, ჩვენ წერილობით იმ რათა out ფაილი. 1498 01:11:05,180 --> 01:11:05,660 ჩვენ ვხედავთ, რომ აქ. 1499 01:11:05,660 --> 01:11:06,910 ჩვენ წერილობით out მაჩვენებელი. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 შემდეგი, ჩვენ განსაზღვრის padding. 1502 01:11:11,320 --> 01:11:15,240 ასე რომ კიდევ ერთხელ, როგორც ეს განსაკუთრებულობის ერთად Bitmap ფაილი, ზოგიერთი ხაზები არის 1503 01:11:15,240 --> 01:11:16,840 padding დასასრულს. 1504 01:11:16,840 --> 01:11:19,000 და თუ წაიკითხავთ მეშვეობით პრობლემა კომპლექტი, თქვენ გაიგეთ მეტი padding. 1505 01:11:19,000 --> 01:11:22,330 ეს არის ფორმულა, რათა იპოვოს padding. 1506 01:11:22,330 --> 01:11:23,610 >> მნიშვნელოვანია გვახსოვდეს, - 1507 01:11:23,610 --> 01:11:29,720 როდესაც თქვენ შეცვლით ზომა bitmap ფაილის padding ცვლილებები. 1508 01:11:29,720 --> 01:11:31,970 როდესაც თქვენ შეცვლით ზომა ფაილის padding ცვლილებები. 1509 01:11:31,970 --> 01:11:34,310 ის არასდროს იქნება უფრო მეტი, ვიდრე 3 - 1510 01:11:34,310 --> 01:11:36,510 ეს იქნება 0 მეშვეობით 3, მოიცავს. 1511 01:11:36,510 --> 01:11:38,930 მაგრამ როდესაც თქვენ შეცვალოს ზომა რაღაც, padding ცვლილებები. 1512 01:11:38,930 --> 01:11:47,100 >> თუ მე მხოლოდ ერთი pixel რომ ზედიზედ, მე გვჭირდება სამი ბაიტი padding, რადგან 1513 01:11:47,100 --> 01:11:51,190 თითოეული მწკრივი უნდა იყოს ჯერადი ოთხი ბაიტი ხანგრძლივი Bitmap ფაილი. 1514 01:11:51,190 --> 01:11:56,120 მაგრამ თუ მე გაორმაგდება ის, რომ წავიდეს ერთი pixel ორ pixel, რომელთაგან თითოეული, 1515 01:11:56,120 --> 01:11:59,510 ვთქვათ, არის byte, მაშინ მე უნდა ორი ბაიტი padding, რათა 1516 01:11:59,510 --> 01:12:00,970 რომ თანაბარი ოთხ. 1517 01:12:00,970 --> 01:12:04,200 >> ასე რომ, როდესაც მე შეცვალოთ ზომის რაღაც, მე უნდა შეცვალოს ოდენობით 1518 01:12:04,200 --> 01:12:06,551 საქართველოს padding მაქვს. 1519 01:12:06,551 --> 01:12:08,100 ამჯამად, რომ აზრი, რომ ყველასთვის? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 შემდეგი, ჩვენ iterate მეტი თითოეულ სტრიქონს, ან მთელი რიგები. 1522 01:12:18,720 --> 01:12:21,400 და მაშინ ჩვენ iterate მეშვეობით ყოველი სვეტი თითოეული მწკრივი. 1523 01:12:21,400 --> 01:12:25,330 ჩვენ მკურნალობის ამ bitmap მოსწონს ბადე, როგორიც ჩვენ მკურნალობა 1524 01:12:25,330 --> 01:12:26,490 ფორუმში 15. 1525 01:12:26,490 --> 01:12:29,200 >> როგორც ჩვენ დამუშავებული აგური, როდესაც ჩვენ დაბეჭდილი მათ ეკრანზე. 1526 01:12:29,200 --> 01:12:31,350 ქსელში რიგები და სვეტები. 1527 01:12:31,350 --> 01:12:32,350 მაშინ - ჩვენ ვნახეთ ეს. 1528 01:12:32,350 --> 01:12:33,840 ჩვენ რეალურად მხოლოდ კოდირებული ეს. 1529 01:12:33,840 --> 01:12:35,780 ჩვენ შევქმენით რაღაც დროებითი შენახვის. 1530 01:12:35,780 --> 01:12:38,710 ვკითხულობთ იქ, და მაშინ ჩვენ წერენ გარეთ. 1531 01:12:38,710 --> 01:12:42,680 ეს არის ზუსტად ის, რაც ჩვენ უბრალოდ გააკეთეს. 1532 01:12:42,680 --> 01:12:46,760 >> შემდეგი, იმიტომ, რომ მე ვთქვი, თითოეული ხაზი მთავრდება ზოგიერთი padding, ჩვენ 1533 01:12:46,760 --> 01:12:48,260 გაფართოებული გამო, რომ padding - 1534 01:12:48,260 --> 01:12:51,000 ძველი padding. 1535 01:12:51,000 --> 01:12:52,630 და მაშინ ჩვენ დაამატოთ ეს უკან. 1536 01:12:52,630 --> 01:12:55,140 ამ შემთხვევაში, ჩვენ შექმნის იმავე ზუსტი ფაილი. 1537 01:12:55,140 --> 01:12:56,180 ჩვენ უბრალოდ გადაწერა იგი. 1538 01:12:56,180 --> 01:12:57,700 ასე რომ, ეს ხაზი არის სახის სულელური. 1539 01:12:57,700 --> 01:12:59,660 ჩვენ შეგვიძლია სიტყვასიტყვით უბრალოდ დააყენა padding შემოსული 1540 01:12:59,660 --> 01:13:04,290 >> მაგრამ თუ თქვენ შეგიძლიათ შეცვალოთ ზომის ფაილი, თქვენ მაინც მინდა ეს ხაზი? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 ასე რომ, თუ ჩვენ შეცვალოთ ზომის ფაილი, ჩვენ კვლავ გსურთ გამოტოვოთ 1543 01:13:11,560 --> 01:13:12,810 ძველი padding? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> STUDENT 74: დიახ. 1546 01:13:15,970 --> 01:13:17,090 >> JASON HIRSCHHORN: ასე რომ, ჩვენ ვაკეთებთ. 1547 01:13:17,090 --> 01:13:19,290 იმიტომ, რომ ეს, კიდევ ერთხელ, გარიგება წყარო ფაილი. 1548 01:13:19,290 --> 01:13:21,570 ჩვენ არ აინტერესებს padding წყარო ფაილი. 1549 01:13:21,570 --> 01:13:23,410 ჩვენ გვინდა წასვლა მომდევნო ხაზი. 1550 01:13:23,410 --> 01:13:28,850 მაგრამ ჩვენ არ უბრალოდ დააყენოს უკან ძველი ოდენობით padding. 1551 01:13:28,850 --> 01:13:31,540 ჩვენ უნდა დააყენოს უკან new თანხის padding. 1552 01:13:31,540 --> 01:13:35,810 >> ასე რომ, როდესაც ჩვენ იცვლება ზომა ფაილი, ჩვენ მაინც მინდა გამოტოვოთ მეტი 1553 01:13:35,810 --> 01:13:38,270 padding ძველი ფაილი - რა ჩვენ კითხულობს წელს. 1554 01:13:38,270 --> 01:13:40,370 მაგრამ რაც ჩვენ წერილობით, ჩვენ ვაპირებთ უნდა დააყენოს უკან განსხვავებული 1555 01:13:40,370 --> 01:13:41,890 ნომერი padding, რომ ჩვენ განისაზღვრა. 1556 01:13:41,890 --> 01:13:42,780 ჰო. 1557 01:13:42,780 --> 01:13:44,550 >> STUDENT 75 ბრძანება იმ ორი ხაზების მნიშვნელობა არ აქვს, არა? 1558 01:13:44,550 --> 01:13:46,160 იმიტომ, რომ თქვენ გატარება სხვადასხვა files. 1559 01:13:46,160 --> 01:13:46,620 >> JASON HIRSCHHORN: ზუსტად. 1560 01:13:46,620 --> 01:13:48,220 იმისათვის, რომ ამ ორ ხაზს მნიშვნელობა არ აქვს. 1561 01:13:48,220 --> 01:13:49,790 ჩვენ წერენ ეს ხაზი. 1562 01:13:49,790 --> 01:13:51,430 ეს არის აქ ფაილი ჩვენ წერილობით. 1563 01:13:51,430 --> 01:13:54,370 ეს მნიშვნელოვანია, ამიტომ მივიღებთ უფლება ოდენობით padding. 1564 01:13:54,370 --> 01:13:57,560 ეს უნდა გაუმკლავდეთ ფაილი. 1565 01:13:57,560 --> 01:13:58,560 ჩვენ გვინდა, რომ გამოტოვოთ უფლება მეტი padding. 1566 01:13:58,560 --> 01:13:59,470 >> ჩვენ არ გვინდა, რომ წაიკითხა - 1567 01:13:59,470 --> 01:14:01,500 თუ ჩვენ კითხულობს byte დროს, ჩვენ არ აინტერესებს იმ padding bytes. 1568 01:14:01,500 --> 01:14:04,070 ჩვენ გვინდა, რომ გადაადგილება, რათა მომდევნო ხაზი. 1569 01:14:04,070 --> 01:14:11,800 და ბოლოს, ისევე, როგორც Lucy მისცა ჩვენთვის, ჩვენ დახურვა ფაილი და დაბრუნებას 0. 1570 01:14:11,800 --> 01:14:13,890 ასე რომ, ეს copy.c. 1571 01:14:13,890 --> 01:14:17,850 და ჩვენ, ფაქტობრივად წერდა - ჩვენ გაატარა უმრავლესობა განყოფილების წერა ამ, არსებითად. 1572 01:14:17,850 --> 01:14:18,740 >> თქვენ გააკეთა ეს. 1573 01:14:18,740 --> 01:14:22,440 ასე რომ იმედია თქვენ გაქვთ კარგი გაგებით რა ხდება აქ. 1574 01:14:22,440 --> 01:14:25,890 დიდი განსხვავება, პატიოსნად, მხოლოდ ამ პირველ ნაწილში, რომელიც ეხება 1575 01:14:25,890 --> 01:14:29,970 თავისებურებები bitmap ფაილი. 1576 01:14:29,970 --> 01:14:33,570 ასე რომ, მე, როგორც ჩემი მომავალი slide, რა უნდა გავაკეთოთ? 1577 01:14:33,570 --> 01:14:35,510 ისე, მოდით ვიფიქროთ whodunit. 1578 01:14:35,510 --> 01:14:38,080 >> და ვინც წაიკითხა მეშვეობით პრობლემა კომპლექტი, რას 1579 01:14:38,080 --> 01:14:41,410 უნდა გავაკეთოთ whodunit? 1580 01:14:41,410 --> 01:14:42,080 უბრალოდ. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> Aleja შეგიძლიათ აიღოს ნაწილი თითოეული pixel რომ ნიშნავს წითელი. 1583 01:14:48,570 --> 01:14:49,730 ხოლო შემდეგ - 1584 01:14:49,730 --> 01:14:50,730 სახის? 1585 01:14:50,730 --> 01:14:51,860 >> JASON HIRSCHHORN: OK. 1586 01:14:51,860 --> 01:14:54,460 ასე რომ აიღოს ნაწილი თითოეული pixel რომ ნიშნავს წითელი. 1587 01:14:54,460 --> 01:14:57,234 რომ არის მიახლოებული, თუმცა არა ყველა ეს. 1588 01:14:57,234 --> 01:14:59,780 >> STUDENT 76: ისე, არსებობს სხვადასხვა გზა ამის გაკეთება. 1589 01:14:59,780 --> 01:14:59,870 >> JASON HIRSCHHORN: OK. 1590 01:14:59,870 --> 01:15:03,070 მომეცი ერთი გზა. 1591 01:15:03,070 --> 01:15:08,240 >> STUDENT 76: აიღეთ ყველა წითელი და შემდეგ ხაზი გავუსვა, ლურჯი და მწვანე. 1592 01:15:08,240 --> 01:15:10,010 >> JASON HIRSCHHORN: OK. 1593 01:15:10,010 --> 01:15:11,830 ასე რომ, მოცემულ ორივე გზა - 1594 01:15:11,830 --> 01:15:15,210 ჟღერს ვაძლევთ მას pixel, ეს აქვს წითელი, ლურჯი, მწვანე და დონეზე. 1595 01:15:15,210 --> 01:15:19,350 ჩვენ გვინდა, რომ ნათესავი დონეზე წითელი, ლურჯი, მწვანე, დამოკიდებულია 1596 01:15:19,350 --> 01:15:20,740 რომ pixel. 1597 01:15:20,740 --> 01:15:28,380 სადაც ეს კოდი უნდა შევცვალოთ ნათესავი წითელი, ლურჯი, მწვანე და 1598 01:15:28,380 --> 01:15:29,720 დონეზე მოცემული pixel. 1599 01:15:29,720 --> 01:15:30,600 მას შემდეგ, რაც ჩვენ წაიკითხა, რომ - 1600 01:15:30,600 --> 01:15:32,520 სანამ ჩვენ დაწერა? 1601 01:15:32,520 --> 01:15:34,564 მომეცი ხაზის ნომერი. 1602 01:15:34,564 --> 01:15:35,950 >> მრავალჯერადი სტუდენტები: 83. 1603 01:15:35,950 --> 01:15:37,320 >> JASON HIRSCHHORN: 83. 1604 01:15:37,320 --> 01:15:38,570 ასე რომ სწორედ აქ. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 განთავსების whodunit, კოდი გჭირდებათ ჩაწერის უნდა წავიდეს უფლება არსებობს. 1607 01:15:45,710 --> 01:15:47,640 და ეს ერთადერთი კოდი თქვენ უნდა დაწეროთ. 1608 01:15:47,640 --> 01:15:51,520 რადგან, ისევე როგორც გავიგეთ, ყველა თქვენ უნდა გავაკეთოთ არის შეცვალოთ ეს ნათესავი ლურჯი, 1609 01:15:51,520 --> 01:15:54,420 წითელი და მწვანე დონეზე თითოეული pixel. 1610 01:15:54,420 --> 01:15:58,250 >> თქვენ წაიკითხავთ მას, და ახლა თქვენ აპირებს დაწეროს ის. 1611 01:15:58,250 --> 01:16:03,100 როგორ მივიღო - თუ მე მაქვს ეს საგანი ე.წ. სამმაგი, სწორედ აქ, და ეს საქართველოს 1612 01:16:03,100 --> 01:16:04,570 ჩაწერეთ RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 ასევე, თუ ჩვენ ჩანდა bmp.h, რა არის RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> STUDENT 77: ეს struct. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON HIRSCHHORN: RGBTRIPLE არის struct. 1618 01:16:18,900 --> 01:16:22,330 ჩვენ ვხედავთ, რომ უფლება ქვემოთ აქ. 1619 01:16:22,330 --> 01:16:26,600 და ასე თუ მინდოდა შესვლა, ვთქვათ, წითელი დონეზე struct, როგორ შემიძლია 1620 01:16:26,600 --> 01:16:30,005 წვდომის წითელი დონეზე ამ struct? 1621 01:16:30,005 --> 01:16:37,280 >> [CLASS Murmurs] 1622 01:16:37,280 --> 01:16:38,530 >> STUDENT 78: RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> JASON HIRSCHHORN: მართალია? 1625 01:16:48,856 --> 01:16:53,040 >> STUDENT 79: ეს უნდა იყოს triple dot, ნაცვლად RGBTRIPLE dot? 1626 01:16:53,040 --> 01:16:54,120 >> JASON HIRSCHHORN: Triple. 1627 01:16:54,120 --> 01:16:56,700 Triple არის ადგილობრივი ცვლადი, ასე რომ, აქ, იქ არ არის პოინტერები აქ. 1628 01:16:56,700 --> 01:16:58,400 ასე რომ, ჩვენ უბრალოდ გამოიყენოთ dot ნოტაცია. 1629 01:16:58,400 --> 01:17:00,480 ეს ხელს მაძლევს დონეზე წითელი. 1630 01:17:00,480 --> 01:17:06,180 იმ შემთხვევაში, თუ მინდა, რომ შეიცვალოს ეს, მე მხოლოდ მითითებული მას ტოლი რაღაც განსხვავებული. 1631 01:17:06,180 --> 01:17:13,190 ასე რომ კიდევ ერთხელ, ამ ხაზი კოდი ხელმისაწვდომი ამ ცვლადის შიგნით ამ struct და 1632 01:17:13,190 --> 01:17:15,070 ჩვენ შეგვიძლია მითითებული, რომ ეს რაღაც ახალი. 1633 01:17:15,070 --> 01:17:20,040 >> ასე whodunit, კიდევ ერთხელ, ეს არის, არსებითად, რაც ჩვენ უნდა გავაკეთოთ. 1634 01:17:20,040 --> 01:17:21,170 ძალიან მარტივია. 1635 01:17:21,170 --> 01:17:25,020 უბრალოდ შეცვალოს ზოგიერთი ნათესავი დონეზე, და ეს არის, სადაც რომ კოდი მიდის. 1636 01:17:25,020 --> 01:17:27,720 შემცირება, მეორეს მხრივ, ცოტა trickier. 1637 01:17:27,720 --> 01:17:30,900 ფაქტობრივად, ზომა, ალბათ, trickiest ნაწილი პრობლემა კომპლექტი. 1638 01:17:30,900 --> 01:17:32,720 ჩვენ სამი წუთის წასვლა მას. 1639 01:17:32,720 --> 01:17:34,910 >> თუმცა ისევ და ისევ, ჩვენ უკვე დაწერილი ყველაზე მეტად ეს კოდი, ამიტომ ჩვენ 1640 01:17:34,910 --> 01:17:36,500 უნდა იყოს საკმაოდ ნაცნობი. 1641 01:17:36,500 --> 01:17:40,750 რა რამ გვინდა გავაკეთოთ ზომის შეცვლა, თუ თქვენ წაიკითხავთ მეტი 1642 01:17:40,750 --> 01:17:43,470 პრობლემა კომპლექტი? 1643 01:17:43,470 --> 01:17:45,290 თუ თქვენ მათ ჩემთვის, ჩვენ ვერ გაიგო მათ შესახებ. 1644 01:17:45,290 --> 01:17:47,340 რა რამ გვინდა გავაკეთოთ? 1645 01:17:47,340 --> 01:17:47,970 >> STUDENT 80 ვერტიკალურად - 1646 01:17:47,970 --> 01:17:52,360 ასე რომ თქვენ უნდა ჰორიზონტალურად შეცვლის მას, მაგრამ ვერტიკალურად ზომის შეცვლა იგი ისევე? 1647 01:17:52,360 --> 01:17:58,475 >> JASON HIRSCHHORN: ასე რომ, თუ ჩვენ ეძლევა pixel, და ჩვენ გვინდა შეცვლის ის მიერ 1648 01:17:58,475 --> 01:18:03,460 ფაქტორი ორი, რომ ახლა უნდა იყოს resized ჰორიზონტალურად და resized 1649 01:18:03,460 --> 01:18:05,220 ვერტიკალურად. 1650 01:18:05,220 --> 01:18:06,640 ამჯამად რომ აზრი? 1651 01:18:06,640 --> 01:18:07,060 ჰო. 1652 01:18:07,060 --> 01:18:09,300 ასე რომ, ალბათ, ყველაზე დიდი გამოწვევა. 1653 01:18:09,300 --> 01:18:10,430 და ჩვენ ვსაუბრობთ, რომ წ. 1654 01:18:10,430 --> 01:18:11,065 ჰო. 1655 01:18:11,065 --> 01:18:15,270 >> STUDENT 81: გზა ვფიქრობდი, რომ ეს იყო საჭირო ამობეჭდოთ - 1656 01:18:15,270 --> 01:18:15,490 >> JASON HIRSCHHORN: Wait. 1657 01:18:15,490 --> 01:18:17,580 არ გვეუბნებიან რა გააკეთეთ თქვენ. 1658 01:18:17,580 --> 01:18:20,620 ჩვენ ვაპირებთ, რომ გაიგო ლოგიკა. 1659 01:18:20,620 --> 01:18:21,870 >> STUDENT 81: OK. 1660 01:18:21,870 --> 01:18:25,090 1661 01:18:25,090 --> 01:18:27,410 რა იყო კითხვა? 1662 01:18:27,410 --> 01:18:28,892 >> JASON HIRSCHHORN თქვენ უბრალოდ დააყენა თქვენს ხელში. 1663 01:18:28,892 --> 01:18:31,600 არ არსებობს საკითხი. 1664 01:18:31,600 --> 01:18:32,520 ნება მომეცით წარმოგიდგინოთ იგი. 1665 01:18:32,520 --> 01:18:34,560 ნება მომეცით უბრალოდ განვიხილოთ ეს მოკლედ. 1666 01:18:34,560 --> 01:18:38,400 ასე რომ, ჩვენ ერთი pixel, ჩვენ გვინდა იმეორებს მას, როგორც ჰორიზონტალურად და 1667 01:18:38,400 --> 01:18:39,360 ვერტიკალურად. 1668 01:18:39,360 --> 01:18:48,920 ასე რომ იდეალურად რას ვაკეთებთ აქ, ჩვენ წაიკითხეთ ჩვენი pixel, ჩვენ დაწერა 1669 01:18:48,920 --> 01:18:51,690 თუმცა ბევრი ჯერ. 1670 01:18:51,690 --> 01:18:54,720 >> მაგრამ მაშინ ჩვენ გვაქვს ჩვენი შეასრულა აქ, იმიტომ, რომ მაშინ ჩვენ გვინდა გაფართოებული 1671 01:18:54,720 --> 01:18:57,660 შემდეგი ხაზი და დაწეროთ იგი დასაწყისში მომდევნო ხაზი. 1672 01:18:57,660 --> 01:19:02,960 ასე რომ, თუ ჩვენ გვინდა, რომ იმეორებს ორივე ჰორიზონტალურად და ვერტიკალურად, რა არის 1673 01:19:02,960 --> 01:19:05,050 ერთი კარგი გზა უნდა გააკეთოს, რომ - 1674 01:19:05,050 --> 01:19:06,780 ერთი კარგი, თუმცა ამის გაკეთება? 1675 01:19:06,780 --> 01:19:11,950 ამიტომ, ჩვენ არ უნდა მუდმივად შეეცდება გარშემო ჩვენი ფაილი განვათავსოთ რამ. 1676 01:19:11,950 --> 01:19:14,360 >> ამ კითხვაზე შეიძლება არ აქვს გააკეთა გრძნობა, მაგრამ მე ვფიქრობ, 1677 01:19:14,360 --> 01:19:15,800 პასუხი ის დაეხმარება. 1678 01:19:15,800 --> 01:19:17,210 >> STUDENT 82: შექმენით მასივი? 1679 01:19:17,210 --> 01:19:20,090 >> JASON HIRSCHHORN: ასე რომ, მოდით ვიფიქროთ თითოეული ფაილი, როგორც a row. 1680 01:19:20,090 --> 01:19:22,550 მოდით ვიფიქროთ თვალსაზრისით რიგები. 1681 01:19:22,550 --> 01:19:26,670 იმ შემთხვევაში, თუ ჩვენ გვაქვს ჩვენი პირველი რიგის ჩვენი პატარა სურათი, ჩვენ შეგვიძლია, რომ row 1682 01:19:26,670 --> 01:19:30,640 შევიდა დიდი row დიდი სურათი, და შემდეგ იმეორებს, რომ ზედიზედ თუმცა 1683 01:19:30,640 --> 01:19:34,250 ბევრი ჯერ ის უნდა ტირაჟირებული, ვიდრე აპირებს pixel მიერ pixel, 1684 01:19:34,250 --> 01:19:37,260 რომელიც იღებს გაუგებარია, როდესაც საქმე files. 1685 01:19:37,260 --> 01:19:38,730 >> რადგან თუ გვქონდა - 1686 01:19:38,730 --> 01:19:41,260 მე გაშვებული გარეთ სივრცეში. 1687 01:19:41,260 --> 01:19:46,490 იმ შემთხვევაში, თუ ეს არის ჩვენი ფაილი, და ჩვენ რომ ერთი pixel იქ, და ჩვენ გვინდა, რომ დააყენოს ის 1688 01:19:46,490 --> 01:19:49,840 უფლება არსებობს, ჩვენ ჯერ კიდევ გვაქვს ზოგიერთი რამ რომ უნდა წავიდეთ იქ, როდესაც ჩვენ 1689 01:19:49,840 --> 01:19:51,450 წერა და შექმნის ჩვენი ახალი ფაილი - 1690 01:19:51,450 --> 01:19:53,250 ჩვენი ფაილი რომ ორჯერ დიდია. 1691 01:19:53,250 --> 01:19:56,820 >> მაგრამ ეს მართლაც მძიმე ფაილის ფუნქციები გაფართოებული გარშემო ახალი ხაზები 1692 01:19:56,820 --> 01:20:00,260 რომ, და შემდეგ დაბრუნდეს აქ და ამით რამ არსებობს. 1693 01:20:00,260 --> 01:20:04,500 ეს თითქმის შეუძლებელია, რომ რამე როგორც, რომ, თუ ეს აზრი. 1694 01:20:04,500 --> 01:20:10,180 ასე რომ, თუ ჩვენ ვფიქრობთ თვალსაზრისით რიგები, ჩვენ შეგვიძლია ჩვენი მწკრივი, და შემდეგ დააყენოს ის - 1695 01:20:10,180 --> 01:20:11,720 იმეორებს რიგები ვერტიკალურად. 1696 01:20:11,720 --> 01:20:15,860 >> და რომ ის, თუ როგორ გაუმკლავდეთ resizing ვერტიკალურად ვიდრე ჰორიზონტალურად. 1697 01:20:15,860 --> 01:20:18,810 ეს იყო ერთგვარი სწრაფი და ცოტა გაუგებარია. 1698 01:20:18,810 --> 01:20:22,375 სამწუხაროდ, ჩვენი დრო არის up. 1699 01:20:22,375 --> 01:20:27,340 მე ვიქნები გარეთ იმ თქვენ აქ, რომელსაც აქვს შეკითხვები 1700 01:20:27,340 --> 01:20:30,500 პრობლემა კომპლექტი, მათ შორის ფეხზე. 1701 01:20:30,500 --> 01:20:32,320 >> მოდით adjourn ახლა. 1702 01:20:32,320 --> 01:20:34,480 ისევ და ისევ, თუ თქვენ გაქვთ რაიმე შეკითხვები, ჩვენ შეგვიძლია სტატისტიკა გარეთ. 1703 01:20:34,480 --> 01:20:38,294