1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> Джэйсан Хиршхорн: Сардэчна запрашаем, усё, каб Тыдзень 6. 3 00:00:09,840 --> 00:00:14,790 Я шчаслівы бачыць вас усіх жывы і здаровы пасля Віктарына 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 Мы збіраемся перайсці Віктарына 0 наступны, і Я адкажу на любыя пытанні нікога 17 00:00:54,590 --> 00:00:57,360 мае аб канкрэтных праблем. 18 00:00:57,360 --> 00:01:02,050 І потым, мы будзем ісці па файлавы ўвод / выснова і праблема ўсталяваць 5. 19 00:01:02,050 --> 00:01:07,360 Гэтыя апошнія дзве тэмы будуць прымаць да асноўнай масы раздзеле сёння. 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 І я інкапсулюецца гэтую тэму на дошцы прама цяпер. 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 зрабіў нешта, як элегантна, або эфектыўна, або, як чыста, як вам 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 Так Я штурхаю вас усіх, і іншых ТФ штурхаюць вас, хлопцы, каб не толькі сваю чаргу 51 00:02:45,130 --> 00:02:48,320 ў рэчах, якія з'яўляюцца правільнымі, але ператварыць ў рэчах, якія кадуюцца добра. 52 00:02:48,320 --> 00:02:53,060 >> Калі гэтага не зрабіць непатрэбным для завес, ня пералічваючы зменных, калі 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 экран, кожны радок - кожная цагліна ў дадзеная радок мае той жа каардынаты ў - 56 00:03:03,070 --> 00:03:04,390 аднолькавую вышыню каардынатаў. 57 00:03:04,390 --> 00:03:07,930 >> Так што у-каардынату ня трэба разлічваецца ў інтэр'еры 58 00:03:07,930 --> 00:03:11,070 укладзенымі ДЛЯ цыкл, які вы, верагодна, выкарыстоўваецца паставіць гэтыя цэглу на экране. 59 00:03:11,070 --> 00:03:14,030 Гэта трэба толькі разлічвацца кожны раз, калі вы перайшлі шэраг, або 60 00:03:14,030 --> 00:03:15,200 з'ехаў радок. 61 00:03:15,200 --> 00:03:19,760 Так бы мовіць, калі ёсць 10 цэглы ў шэраг, кожная цагліна можа мець тое ж самае 62 00:03:19,760 --> 00:03:22,260 у-каардынату, і што каардынаты ў можа проста быць разлічана 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 Так што, калі гэта было трохі заблытаным для Вы, у больш агульным, усё, што 68 00:03:37,820 --> 00:03:40,730 ня трэба адбывацца кожны раз, калі вы ідзяце праз пятлю ДЛЯ быць не павінна 69 00:03:40,730 --> 00:03:42,900 пакласці ўнутры цыклу FOR, і не павінны адбываецца кожны раз, калі вы ідзяце 70 00:03:42,900 --> 00:03:44,080 праз пятлю ДЛЯ. 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 х і у-каардынату нуля. 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 >> Так што мы збіраемся рухацца далей да размовы аб віктарыне 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 >> [Шоргат] 101 00:05:21,500 --> 00:05:22,750 >> Джэйсан Хиршхорн: Сем секунд. 102 00:05:22,750 --> 00:05:23,250 ОК. 103 00:05:23,250 --> 00:05:24,970 Давайце пагаворым аб віктарыне 0 няшмат. 104 00:05:24,970 --> 00:05:26,700 Большасць з вас ёсць свой Віктарына 0 вярнуўся. 105 00:05:26,700 --> 00:05:29,820 Калі вы гэтага не зробіце, мы спадзяемся, Вы памятаеце яго няшмат. 106 00:05:29,820 --> 00:05:34,770 Але калі вы ўзялі Віктарына 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 думкі аб віктарыне 0. 116 00:05:59,440 --> 00:06:02,660 Так, хто хацеў бы атрымаць нас пачаў з пытання або 117 00:06:02,660 --> 00:06:04,655 пракаментаваць аб віктарыне 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [ПАПЕРЫ шолах] 120 00:06:10,410 --> 00:06:11,470 >> Джэйсан Хиршхорн: Не ўсе зрабіў выдатна. 121 00:06:11,470 --> 00:06:12,720 Так што я ведаю [смяецца] 122 00:06:12,720 --> 00:06:15,950 там павінны быць некаторыя пытанні аб віктарыне 0. 123 00:06:15,950 --> 00:06:27,940 124 00:06:27,940 --> 00:06:28,590 ОК. 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 >> Джэйсан Хиршхорн: нумар 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 >> Джэйсан Хиршхорн: Я 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 >> Джэйсан Хиршхорн: нумар 10 было восем у I - пісаць ад васьмі да I? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Так. 136 00:06:42,980 --> 00:06:43,630 >> Джэйсан Хиршхорн: ОК. 137 00:06:43,630 --> 00:06:47,390 Так яшчэ адно пытанне вы маглі б спытаў, я дарам прадбачання? 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 васьмі да я. 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 Але ад васьмі да мяне, мы на самай справе не код гэта ў класе, але гэта было, зноў жа, 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 быў роўны нулю. 149 00:07:20,300 --> 00:07:28,060 >> Пара людзей паспрабавалі праверыць пазней у праграме, калі з кранштэйны я быў - 150 00:07:28,060 --> 00:07:30,940 так спецыфіка ў тым, што радок - была роўная нуль. 151 00:07:30,940 --> 00:07:35,600 Але памятайце, што нулявы з'яўляецца па сутнасці - гэта добра, каб думаць пра 152 00:07:35,600 --> 00:07:39,100 нуль як паказальнік нулявы - паказальнік да нуля - 153 00:07:39,100 --> 00:07:40,920 дзесьці ў памяці, дзе Вы ніколі не можаце атрымаць доступ к. 154 00:07:40,920 --> 00:07:44,730 >> Так што, калі нешта роўная нуль, то ведаю, што гэта не быў ініцыялізаваны, 155 00:07:44,730 --> 00:07:46,430 ці там нічога няма. 156 00:07:46,430 --> 00:07:50,950 Так з з'яўляецца сімвал зоркі, ы Кранштэйны я гэта сімвал. 157 00:07:50,950 --> 00:07:57,410 Так што мае сэнс параўноўваць з да нуль, але не з кранштэйны я абнуліць. 158 00:07:57,410 --> 00:07:59,390 Але зноў жа - так, каб было першае, што што вы павінны былі зрабіць - 159 00:07:59,390 --> 00:08:03,510 праверыць, каб пераканацца, што вы на самай справе атрымалі рэальную радок. 160 00:08:03,510 --> 00:08:08,020 >> Далей, вы хацелі, каб прайсці кожны знак у радку. 161 00:08:08,020 --> 00:08:12,500 І так, што б як ёй кранштэйна я, напрыклад, калі я гэта итератор. 162 00:08:12,500 --> 00:08:17,250 І лічыць, што характар, і атрымаць яго сапраўднага кошту. 163 00:08:17,250 --> 00:08:21,800 Вы яго захоўваецца ў выглядзе гольца, але значэнне ASCII для нуля - 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 Гэта зойме яшчэ большая колькасць у вас ёсць як гольца, і атрымаць яго роўным 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, з Цэзарам і Viginere - 175 00:08:52,800 --> 00:08:55,160 тыя шыфры, калі вы былі круцячы іх. 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 і захаваць б тых, хто ў глабальная пераменная лічыльніка. 184 00:09:18,190 --> 00:09:20,880 А потым кожны раз праз FOR пятля, памножце гэта гіганцкі глабальны 185 00:09:20,880 --> 00:09:25,640 пераменная-лічыльнік на 10, каб зрабіць прастору для наступнага знак. 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 >> Джэйсан Хиршхорн: ОК. 197 00:09:50,240 --> 00:09:53,940 Ці ёсць іншыя пытанні аб віктарыне 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 Любыя пытанні аб зборнік працэс? 204 00:10:03,265 --> 00:10:06,050 205 00:10:06,050 --> 00:10:06,966 Нічога сабе. 206 00:10:06,966 --> 00:10:11,090 >> [ПАПЕРЫ шолах] 207 00:10:11,090 --> 00:10:11,520 >> Джэйсан Хиршхорн: Так. 208 00:10:11,520 --> 00:10:11,700 Майкл. 209 00:10:11,700 --> 00:10:14,140 >> Майкл: Гэта лік 7 - выпадковая? 210 00:10:14,140 --> 00:10:16,500 >> Джэйсан Хиршхорн: нумар 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 Такім чынам, вы далі цэлае а і цэлае б, і вы хочаце выпадковая 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 >> Майкл: паплавок паміж 0.0 і 1.0. 223 00:10:44,840 --> 00:10:45,530 >> Джэйсан Хиршхорн: колькасць - так. 224 00:10:45,530 --> 00:10:47,910 Лік паміж 0 і 1. 225 00:10:47,910 --> 00:10:51,760 І так мы б і. 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 Некаторыя людзі спрабавалі паставіць б або б мінус , Або што-то ўнутры тых, 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 Так што гэта проста адкрыць дужка, недалёка Хлопец - і што, само па сабе, з'яўляецца 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 Так што ў наступны, што нам трэба зрабіць, гэта памножыць гэта на дыяпазоне б мінус. 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 І, што пэўны дыяпазон, які з'яўляецца Розніца паміж б мінус. 242 00:11:46,610 --> 00:11:50,030 >> І, нарэшце, што буду толькі даць яго з - кажуць дыяпазон паміж б мінус 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 >> Майкл: Не. 249 00:12:04,547 --> 00:12:06,010 Я проста адчуваю, вельмі дурная прама цяпер. 250 00:12:06,010 --> 00:12:06,405 [Смяецца] 251 00:12:06,405 --> 00:12:06,730 >> Джэйсан Хиршхорн: Не. 252 00:12:06,730 --> 00:12:08,640 Не адчуваць сябе сапраўды па-дурному. 253 00:12:08,640 --> 00:12:10,560 Колькасьць людзей, з усіх сіл з гэтым пытаннем. 254 00:12:10,560 --> 00:12:13,920 А потым, іншае пытанне ў тым, drand, Вы сказалі, дае вам паплавок - 255 00:12:13,920 --> 00:12:14,940 вяртае лік з якая плавае кропкай. 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 Любыя іншыя пытанні аб віктарыне 0? 273 00:13:02,190 --> 00:13:03,300 Так, Эні. 274 00:13:03,300 --> 00:13:05,050 >> Эні: Калі мы выкарыстоўваем рэкурсіўны - 275 00:13:05,050 --> 00:13:07,850 калі мы выкарыстоўваем ітэрацыйныя цыклы? 276 00:13:07,850 --> 00:13:10,210 >> Джэйсан Хиршхорн: Калі вы выкарыстоўваеце рэкурсіўная - так больш агульна, 277 00:13:10,210 --> 00:13:14,110 плюсы і мінусы рэкурсіі супраць итеративный падыход. 278 00:13:14,110 --> 00:13:17,110 Хто-небудзь можа прапанаваць профі або кон? 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 Хто можа прапанаваць профі або кон? 282 00:13:22,526 --> 00:13:26,963 >> [ПАПЕРЫ шолах] 283 00:13:26,963 --> 00:13:29,730 >> СТУДЭНЦКАЯ 1: рэкурсіўнае менш кадавання - менш набіраць? 284 00:13:29,730 --> 00:13:33,170 >> Джэйсан Хиршхорн: Так наогул, Рэкурсія асабліва, функцыя - 285 00:13:33,170 --> 00:13:35,750 або алгарытм, як зліцця роду - якая паддаецца 286 00:13:35,750 --> 00:13:37,300 на рэкурсіўны падыход - 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 >> Джэйсан Хиршхорн: Так дакладна. 295 00:13:52,200 --> 00:13:55,720 Рэкурсіўная функцыя будзе працягваць дадаваць стэк кадраў у стэк. 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 >> Любыя іншыя плюсы і мінусы? 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 Вы можаце мець загадзя пэўную колькасць раз, што ў вас ёсць для перабору, то 306 00:14:22,810 --> 00:14:26,420 Рэкурсія лепш, таму што ён прымае гэты вынік. 307 00:14:26,420 --> 00:14:27,780 >> Джэйсан Хиршхорн: Я думаю, што гэта праўда. 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 Або гэтая функцыя будзе мець некаторы ўваход што б вызначыць, колькі разоў ён 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 шмат разоў, што цыкл павінен быць запушчаны. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Ці было ў вас іншы, вы былі думаць пра, Эні? 316 00:14:48,670 --> 00:14:49,330 ОК. 317 00:14:49,330 --> 00:14:51,650 Такім чынам, гэта, бадай, два - 318 00:14:51,650 --> 00:14:54,370 самы вялікі за і самы вялікі кон, каб рэкурсіўны супраць 319 00:14:54,370 --> 00:14:57,080 итеративный падыход. 320 00:14:57,080 --> 00:14:57,690 ОК. 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 Выява ўводу / вываду Існуе выдатны кароткая На гэтым тыдні на файл уводу / высновы, што, мы спадзяемся, 325 00:15:15,260 --> 00:15:19,270 вы глядзелі кратнае раз, і захапляўся. 326 00:15:19,270 --> 00:15:22,910 Шмат працы ўвайшлі ў гэта, і ў мяне ёсць пачуў, што гэта шалёна карысна. 327 00:15:22,910 --> 00:15:25,740 Я таксама уключыў спасылку на гэтым слайдзе, у выпадку, калі вы яшчэ не было 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 Такім чынам, яшчэ раз, я збіраюся паставіць гэта на экран, але я буду казаць для 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 не змог рабіць якія-небудзь дакументы слова, то 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 >> Па-другое, вы можаце перадаць аргумент у Еореп, і вось, што вы хочаце зрабіць 364 00:17:33,520 --> 00:17:34,620 з файлам. 365 00:17:34,620 --> 00:17:38,450 Ёсць тры асноўных аргументу, што Вы збіраецеся перайсці на Еореп. 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 >> Джэйсан Хиршхорн: Выбачайце. 372 00:17:50,440 --> 00:17:55,490 Тры асноўных аргументу можна перадаць як другі аргумент Еореп. 373 00:17:55,490 --> 00:17:57,060 Вы маеце рацыю - імя файла з'яўляецца першым аргументам. 374 00:17:57,060 --> 00:18:01,620 Але другі аргумент Еореп з'яўляюцца як правіла, тры струны, і - так. 375 00:18:01,620 --> 00:18:02,210 Алея. 376 00:18:02,210 --> 00:18:03,490 >> ALEJA: для дадання. 377 00:18:03,490 --> 00:18:06,840 >> Джэйсан Хиршхорн:, калі вы хочаце дадаць у файл, які ўжо існуе. 378 00:18:06,840 --> 00:18:07,810 >> СТУДЭНЦКАЯ 5: R для чытання. 379 00:18:07,810 --> 00:18:09,930 >> Джэйсан Хиршхорн: R, калі вы хочаце чытаць з файла. 380 00:18:09,930 --> 00:18:10,670 >> СТУДЭНЦКАЯ 6: Вт для запісу. 381 00:18:10,670 --> 00:18:12,840 >> Джэйсан Хиршхорн: А ж, калі вы хочаце напісаць у файл. 382 00:18:12,840 --> 00:18:17,570 Такім чынам, у гэтым выпадку, мы пішам ў файл, таму мы павінны ш. 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 >> Мы не збіраемся турбавацца, што гэта ўсё загалоўныя Файлаў рэч. 387 00:18:36,070 --> 00:18:40,600 Дастаткова сказаць,, гэта доўгі паток нулёў і адзінак. 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 на самай справе, кожны раз, калі вы тэлефануеце Таноса, для Напрыклад, каб атрымаць некаторы колькасць памяці і паспрабуйце 392 00:18:54,250 --> 00:18:57,980 і захаваць яго ў паказальнік, вы заўсёды хочаце праверыць, каб пераканацца, што гэта 393 00:18:57,980 --> 00:19:00,230 Функцыя не вярнуўся пустым. 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, у адрозненне ад нашай звычайнай друку дадатак, займае адзін дадатковы аргумент, 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 Я не маю траціну аргумент Е - 408 00:19:52,860 --> 00:19:57,030 ці другі аргумент Е, Трэці аргумент fprintf, таму што я 409 00:19:57,030 --> 00:19:59,480 не маюць ніякіх запаўняльнікі тут. 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 Так што гэта асновы файлавага ўводу / 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 праблемы, аб файле ўводу / вываду ці крокі, якія я проста падышоў? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [Машынцы ГУК] 426 00:21:03,162 --> 00:21:04,150 >> Джэйсан Хиршхорн: Ці падабаецца вам ёсць пытанне, AVI? 427 00:21:04,150 --> 00:21:04,660 >> AVI: Не. 428 00:21:04,660 --> 00:21:04,740 >> Джэйсан Хиршхорн: ОК. 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 ОК. 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 Калі вы ўведзяце ф а затым перадаць яго два Аргументы ў вашым тэрмінале, вы можаце 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 >> Такім чынам, яшчэ раз, чытаючы прэч гэтым слайдзе, я б Вам напісаць праграму, якая прымае 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 адзін байт за адзін раз. 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 Не ў З, проста ў нейкі псевдокоде, ці нават ментальная мадэль 452 00:22:04,410 --> 00:22:06,030 што адбываецца. 453 00:22:06,030 --> 00:22:10,050 >> Далей, калі ў вас ёсць псевдокод ўніз, высветліць, як псевдокод 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 А потым мы збіраемся перайсці псевдокод, і код 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 >> Джэйсан Хиршхорн: У чым справа? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [Машынцы ГУК] 467 00:26:48,043 --> 00:26:48,730 >> Джэйсан Хиршхорн: ОК. 468 00:26:48,730 --> 00:26:51,710 Давайце разгледзім псевдокоде першым, і тады я дам табе яшчэ пару 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 >> Хто хацеў бы пачаць мяне з першай радку 472 00:26:58,650 --> 00:27:00,030 псевдокод для гэтай функцыі? 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 >> Джэйсан Хиршхорн: ОК. 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 >> Джэйсан Хиршхорн: Ці павінны мы вярнуць 0? 480 00:27:27,872 --> 00:27:30,182 >> СТУДЭНЦКАЯ 8: Вяртанне - 481 00:27:30,182 --> 00:27:30,650 гашэння. 482 00:27:30,650 --> 00:27:30,850 Выбачайце. 483 00:27:30,850 --> 00:27:31,210 >> Джэйсан Хиршхорн: Так. 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 ОК. 487 00:27:35,030 --> 00:27:36,730 Дык вось першая лінія псевдокода. 488 00:27:36,730 --> 00:27:38,715 Хто мае другую лінію псевдокоде? 489 00:27:38,715 --> 00:27:40,630 >> СТУДЭНЦКАЯ 9: Адкрыць абедзве файлы? 490 00:27:40,630 --> 00:27:41,880 >> Джэйсан Хиршхорн: Адкрыйце абодва файла. 491 00:27:41,880 --> 00:27:49,970 492 00:27:49,970 --> 00:27:50,920 ОК? 493 00:27:50,920 --> 00:27:52,850 >> СТУДЭНЦКАЯ 10: Праверце, калі файл NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> Джэйсан Хиршхорн: Праверце, упэўнены ні адзін не NULL. 496 00:28:12,580 --> 00:28:15,800 Як у баку - 497 00:28:15,800 --> 00:28:17,540 слэш 0 - 498 00:28:17,540 --> 00:28:18,887 з'яўляецца тое, што NULL? 499 00:28:18,887 --> 00:28:20,080 >> СТУДЭНЦКАЯ 11: Не. 500 00:28:20,080 --> 00:28:21,190 >> Джэйсан Хиршхорн: Гэта не NULL. 501 00:28:21,190 --> 00:28:23,400 Гэта называецца NULL тэрмінатар. 502 00:28:23,400 --> 00:28:25,580 Гэта на самай справе пішацца толькі з адной л. 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 Адзін сканчаецца радок - 511 00:28:40,220 --> 00:28:43,210 адзін з'яўляецца паказальнікам на 0. 512 00:28:43,210 --> 00:28:46,490 >> СТУДЭНЦКАЯ 12: Чаму б вам не праверыць, пераканайцеся, што файлы не NULL 513 00:28:46,490 --> 00:28:48,670 перш чым адкрыць іх? 514 00:28:48,670 --> 00:28:54,772 >> Джэйсан Хиршхорн: Так адкрытым эканоміць нешта ў гэтым файле. 515 00:28:54,772 --> 00:28:57,780 І калі вы ідзяце сюды - 516 00:28:57,780 --> 00:28:59,520 так гэтая лінія - Еореп - 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 >> СТУДЭНЦКАЯ 12: Ох. 520 00:29:08,020 --> 00:29:08,180 ОК. 521 00:29:08,180 --> 00:29:08,500 Трапіўся. 522 00:29:08,500 --> 00:29:09,050 >> Джэйсан Хиршхорн: У файле. 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 ОК. 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 >> СТУДЭНЦКАЯ 13: Ці з'яўляецца. 532 00:29:24,520 --> 00:29:25,020 >> Джэйсан Хиршхорн: Ці з'яўляецца? 533 00:29:25,020 --> 00:29:25,930 Ні адзін не? 534 00:29:25,930 --> 00:29:26,350 >> СТУДЭНЦКАЯ 13: Ці з'яўляецца. 535 00:29:26,350 --> 00:29:26,390 >> Джэйсан Хиршхорн: ОК. 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 Добра, наступная радок псевдокода. 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 >> СТУДЭНЦКАЯ 14: Вы павінны прачытаць з першага файла? 544 00:29:40,895 --> 00:29:42,290 >> Джэйсан Хиршхорн: ОК. 545 00:29:42,290 --> 00:29:46,240 >> СТУДЭНЦКАЯ 14: Ці мы выкарыстоўваем fscanf або нешта накшталт гэтага першага файла? 546 00:29:46,240 --> 00:29:50,650 >> Джэйсан Хиршхорн: Таму мы хочам чытаць з першага файла і - 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 >> СТУДЭНЦКАЯ 15: Напісаць у канчатковы файл? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> Джэйсан Хиршхорн: Мы пішам, каб канчатковы файл, і - 556 00:30:25,620 --> 00:30:26,210 ОК. 557 00:30:26,210 --> 00:30:30,030 Што яшчэ нам не хапае? 558 00:30:30,030 --> 00:30:32,460 Кто-то, хто не даў мне радок кода яшчэ - псевдокода. 559 00:30:32,460 --> 00:30:33,510 Так. 560 00:30:33,510 --> 00:30:36,540 >> СТУДЭНЦКАЯ 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 >> [Электронны гукавы сігнал] 564 00:30:40,660 --> 00:30:41,095 >> Джэйсан Хиршхорн: Ой. 565 00:30:41,095 --> 00:30:43,120 Гэта мая журналявання праграмнага забеспячэння. 566 00:30:43,120 --> 00:30:43,580 Да? 567 00:30:43,580 --> 00:30:44,960 >> СТУДЭНЦКАЯ 16: Так. 568 00:30:44,960 --> 00:30:48,940 >> Джэйсан Хиршхорн: Так дайце ён мне яшчэ адзін раз. 569 00:30:48,940 --> 00:30:51,640 >> СТУДЭНЦКАЯ 16: Праверце, ці правільна там яшчэ наступная радок з 570 00:30:51,640 --> 00:30:52,920 Зыходны файл для чытання. 571 00:30:52,920 --> 00:30:53,500 >> Джэйсан Хиршхорн: ОК. 572 00:30:53,500 --> 00:30:56,060 Такім чынам, мы не чытае радкі - чыталі байт тут - 573 00:30:56,060 --> 00:30:57,590 але вы маеце рацыю. 574 00:30:57,590 --> 00:31:00,040 Мы хочам, каб чытаць і пісаць, пакуль няма больш байт. 575 00:31:00,040 --> 00:31:11,430 576 00:31:11,430 --> 00:31:11,735 ОК. 577 00:31:11,735 --> 00:31:16,940 І такім чынам, яны павінны быць сапраўды водступам трохі, таму што яны пад там. 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 >> І потым, што гэта апошні лінія псевдокоде? 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 >> СТУДЭНЦКАЯ 17: Зачыніце файлы? 585 00:31:30,260 --> 00:31:31,510 >> Джэйсан Хиршхорн: Цалкам дакладна. 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 Так што наш псевдокод. 589 00:31:38,400 --> 00:31:41,870 Я збіраюся паставіць псевдокод ў 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 >> ОК. 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 Без назвы дакумента 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 >> Джэйсан Хиршхорн: ОК. 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 >> Джэйсан Хиршхорн: ОК. 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 >> Джэйсан Хиршхорн: ОК. 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: Напісаць загаловак? 609 00:34:29,710 --> 00:34:31,830 >> Джэйсан Хиршхорн: Як я атрымліваю гэта каляровы? 610 00:34:31,830 --> 00:34:34,060 >> [Устаўляючы ГАЛАСЫ] 611 00:34:34,060 --> 00:34:35,040 >> Nishant: Як вы атрымліваеце гэта колеры? 612 00:34:35,040 --> 00:34:38,060 >> Джэйсан Хиршхорн: Як я каляровае кадаваньне? 613 00:34:38,060 --> 00:34:38,570 >> Nishant: Я не ведаю. 614 00:34:38,570 --> 00:34:38,830 О. 615 00:34:38,830 --> 00:34:39,389 Захаваць. 616 00:34:39,389 --> 00:34:39,929 >> Джэйсан Хиршхорн: Save. 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 >> Джэйсан Хиршхорн: Выглядае добра. 627 00:35:10,040 --> 00:35:10,470 Выдатна. 628 00:35:10,470 --> 00:35:12,940 Такім чынам, вы пачалі нас выдатна. 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 ОК. 633 00:35:30,870 --> 00:35:33,520 Так што я думаю, што я ўсё гатова да працы. 634 00:35:33,520 --> 00:35:38,003 Хто мае першую радок кода для мяне - або першыя радкі кода, 635 00:35:38,003 --> 00:35:41,280 спатрэбіцца, каб задаволіць наш першы каментаваць псевдокоде? 636 00:35:41,280 --> 00:35:41,985 Вы. 637 00:35:41,985 --> 00:35:48,780 >> СТУДЭНЦКАЯ 18: яна не павінна быць унутр агдс, а затым сімвал * агду? 638 00:35:48,780 --> 00:35:49,490 >> Джэйсан Хиршхорн: Я думаю, вы маеце рацыю. 639 00:35:49,490 --> 00:35:56,270 Давайце зменім гэта ў цэлае асноўныя, адкрытыя дужка, унутр агдс, коска, сімвал * агду? 640 00:35:56,270 --> 00:35:57,150 Як гэта? 641 00:35:57,150 --> 00:35:57,410 >> СТУДЭНЦКАЯ 18: Кранштэйны. 642 00:35:57,410 --> 00:35:58,260 >> Джэйсан Хиршхорн: Кранштэйны. 643 00:35:58,260 --> 00:35:59,860 Адкрыць кранштэйны, якая зачыняе дужка, блізка бацькоў. 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 ОК. 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 >> СТУДЭНЦКАЯ 18: Калі агдс - 650 00:36:09,180 --> 00:36:11,060 на гэты раз не раўняцца 3. 651 00:36:11,060 --> 00:36:14,360 >> Джэйсан Хиршхорн: Калі адкрытыя дужка агдс ня роўная 3? 652 00:36:14,360 --> 00:36:16,970 >> СТУДЭНЦКАЯ 18: Так, вы вернецеся 1 або што-небудзь. 653 00:36:16,970 --> 00:36:17,460 >> Джэйсан Хиршхорн: Выбачайце. 654 00:36:17,460 --> 00:36:19,120 >> СТУДЭНЦКАЯ 18: Вяртанне 1 або што-небудзь. 655 00:36:19,120 --> 00:36:20,270 >> Джэйсан Хиршхорн: Вяртанне 1. 656 00:36:20,270 --> 00:36:22,230 ОК? 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 Курт? 663 00:36:32,320 --> 00:36:36,145 >> Курт: Так усё загалоўныя F-I-L-E зоркі-крыніцы. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> Джэйсан Хиршхорн: Я збіраюся выняць галосныя. 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 >> СТУДЭНЦКАЯ 18: Роўна FOPEN - 669 00:36:44,610 --> 00:36:46,612 >> Джэйсан Хиршхорн: Роўна FOPEN? 670 00:36:46,612 --> 00:36:49,870 >> СТУДЭНЦКАЯ 18: Адкрытыя дужка, агду, якая адкрывае дужка. 671 00:36:49,870 --> 00:36:50,055 >> Джэйсан Хиршхорн: Пачакайце. 672 00:36:50,055 --> 00:36:50,240 Выбачайце. 673 00:36:50,240 --> 00:36:51,050 Адкрыць дужка. 674 00:36:51,050 --> 00:36:51,456 ОК. 675 00:36:51,456 --> 00:36:53,080 >> СТУДЭНЦКАЯ 18: Так. 676 00:36:53,080 --> 00:36:55,110 Argv 1 да поўдня. 677 00:36:55,110 --> 00:36:55,860 >> Джэйсан Хиршхорн: Sub 1? 678 00:36:55,860 --> 00:36:56,140 >> СТУДЭНЦКАЯ 18: Так. 679 00:36:56,140 --> 00:36:58,540 Argv якая адкрывае дужка 1 - 680 00:36:58,540 --> 00:36:59,730 Так. 681 00:36:59,730 --> 00:37:06,470 А потым коска, а затым адкрыты двайны цытата, г, падвойныя двукоссі, 682 00:37:06,470 --> 00:37:08,250 блізкія дужка, кропка з коскі. 683 00:37:08,250 --> 00:37:09,450 >> Джэйсан Хиршхорн: Салодкі. 684 00:37:09,450 --> 00:37:10,950 А як наконт другога? 685 00:37:10,950 --> 00:37:16,030 >> СТУДЭНЦКАЯ 18: Вельмі падобна, але замест з S-R-C, вы б назваў гэта D-S-Т. 686 00:37:16,030 --> 00:37:17,060 >> Джэйсан Хиршхорн: Оо! 687 00:37:17,060 --> 00:37:17,772 Мне гэта падабаецца. 688 00:37:17,772 --> 00:37:20,010 >> СТУДЭНЦКАЯ 18: Проста D-S-Т. Так. 689 00:37:20,010 --> 00:37:23,057 А потым ARGV, адкрыты кранштэйны, 2. 690 00:37:23,057 --> 00:37:23,200 Так. 691 00:37:23,200 --> 00:37:26,720 І тое ш замест р. 692 00:37:26,720 --> 00:37:27,620 Так. 693 00:37:27,620 --> 00:37:29,630 >> Джэйсан Хиршхорн: Выдатна. 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 Хто можа даць мне код, мне трэба, каб задаволіць гэтую лінію псевдокоде? 699 00:37:41,450 --> 00:37:44,430 700 00:37:44,430 --> 00:37:45,870 Арчер. 701 00:37:45,870 --> 00:37:58,645 >> ARCHER: Калі ўражаннямі роўная роўных 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 >> Джэйсан Хиршхорн: Што? 705 00:38:07,976 --> 00:38:08,890 >> ARCHER: Return 2? 706 00:38:08,890 --> 00:38:09,760 >> Джэйсан Хиршхорн: Return 2. 707 00:38:09,760 --> 00:38:14,400 Так што, калі адкрыта дужка ўражаннямі роўна роўна NULL, або - 708 00:38:14,400 --> 00:38:15,590 што б гэта ні thing's - труба? 709 00:38:15,590 --> 00:38:16,346 Труба? 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 ОК? 713 00:38:23,900 --> 00:38:26,060 Пакуль мы не знаходзіцеся па-за байт - 714 00:38:26,060 --> 00:38:29,820 мы накшталт прапусціў гэты крок з псевдокод частка ісці, каб тут. 715 00:38:29,820 --> 00:38:31,970 >> Але пакуль мы не з байт - што гэта падобна? 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 але З інструментам гэта гучыць як? 720 00:38:39,495 --> 00:38:39,970 >> СТУДЭНЦКАЯ 19: пятля. 721 00:38:39,970 --> 00:38:40,980 >> Джэйсан Хиршхорн: пятля. 722 00:38:40,980 --> 00:38:43,060 Гучыць як завесы. 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 Вы можаце таксама выбраць, якія цыкл вы хочаце, калі вы дасце мне 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 Аві. 731 00:39:08,410 --> 00:39:09,230 Які з іх вы хочаце? 732 00:39:09,230 --> 00:39:09,960 >> AVI: ДЛЯ. 733 00:39:09,960 --> 00:39:11,460 >> Джэйсан Хиршхорн: ДЛЯ. 734 00:39:11,460 --> 00:39:15,180 >> AVI: Int я роўная нуля. 735 00:39:15,180 --> 00:39:17,360 >> Джэйсан Хиршхорн: ОК. 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 >> Джэйсан Хиршхорн: ОК. 740 00:39:32,580 --> 00:39:35,870 >> AVI: Таму што вы хочаце памер файла, ці не так? 741 00:39:35,870 --> 00:39:41,090 >> Джэйсан Хиршхорн: Так што гэта, верагодна, не будзе даць нам памер фактычная 742 00:39:41,090 --> 00:39:43,010 файла ў байтах. 743 00:39:43,010 --> 00:39:47,680 Так, што яшчэ мы маглі зрабіць? 744 00:39:47,680 --> 00:39:48,810 Што гэта іншы тып цыкла? 745 00:39:48,810 --> 00:39:50,180 Ці мы павінны прытрымлівацца пятля для? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> СТУДЭНЦКАЯ 20: Не маглі б вы зрабіць той час як цыкл? 748 00:39:57,900 --> 00:40:01,350 І потым, што вы хацелі зрабіць, гэта you'd - 749 00:40:01,350 --> 00:40:03,930 таму што ў нас з * для файла. 750 00:40:03,930 --> 00:40:07,950 Так што, калі мы проста працягваем павялічваючы, што пакуль мы не знайшлі б нулявога знака ў 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 >> Джэйсан Хиршхорн: Так мы можам трымаць павялічваючы сімвал * 754 00:40:14,300 --> 00:40:16,340 пакуль мы не знойдзем NULL - 755 00:40:16,340 --> 00:40:18,580 >> СТУДЭНЦКАЯ 20: Па сутнасці працягваць посимвольно, пакуль мы патрапілі 756 00:40:18,580 --> 00:40:21,250 канца файла. 757 00:40:21,250 --> 00:40:21,600 >> Джэйсан Хиршхорн: Так. 758 00:40:21,600 --> 00:40:22,560 Дык вось што мы хочам зрабіць. 759 00:40:22,560 --> 00:40:24,545 Мы хочам, каб чытаць, характар па характары, пакуль мы не дабяромся да 760 00:40:24,545 --> 00:40:25,080 канца файла. 761 00:40:25,080 --> 00:40:25,375 >> СТУДЭНЦКАЯ 20: Так. 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 >> Джэйсан Хиршхорн: ОК. 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 >> СТУДЭНЦКАЯ 21: Fscanf? 775 00:40:47,590 --> 00:40:49,110 >> Джэйсан Хиршхорн: Fscanf. 776 00:40:49,110 --> 00:40:49,510 ОК. 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 >> СТУДЭНЦКАЯ 21: Я не ведаю. 780 00:40:56,860 --> 00:40:57,110 >> Джэйсан Хиршхорн: ОК. 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 Што такое функцыя - так. 785 00:41:04,850 --> 00:41:05,380 >> СТУДЭНЦКАЯ 22: Гэта FREAD? 786 00:41:05,380 --> 00:41:06,070 >> Джэйсан Хиршхорн: 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 >> СТУДЭНЦКАЯ 22: Верагодна, тып файла, а затым размяшчэнне ў файле? 791 00:41:17,410 --> 00:41:19,550 >> Джэйсан Хиршхорн: Што я магу ўвесці тут каб высветліць, які тып аргументаў 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 >> Джэйсан Хиршхорн: Чалавек FREAD і FWRITE. 795 00:41:24,740 --> 00:41:25,980 Падобна на тое, яны боўтацца разам. 796 00:41:25,980 --> 00:41:29,589 Так FREAD займае, як шмат аргументаў? 797 00:41:29,589 --> 00:41:30,920 >> СТУДЭНЦКАЯ 23: Чатыры. 798 00:41:30,920 --> 00:41:32,690 >> Джэйсан Хиршхорн: яна займае чатыры аргументу. 799 00:41:32,690 --> 00:41:41,100 Ён прымае паказальнік, памер, і што рэч, што дзіўна, а некаторыя файл. 800 00:41:41,100 --> 00:41:42,000 ОК? 801 00:41:42,000 --> 00:41:43,990 Давайце прачытаем пра гэта прама тут. 802 00:41:43,990 --> 00:41:49,370 "Функцыя FREAD чытае н кар элементы дадзеных, кожны байт памер 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 ОК. 809 00:42:10,770 --> 00:42:13,673 Дык хто ж можа пачаць запаўненне гэтыя аргументы для мяне? 810 00:42:13,673 --> 00:42:15,840 Аві. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Выміце пустэчу. 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 >> Джэйсан Хиршхорн: Так што я збіраюся спыніць Вы там, таму што гэта няправільна. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 Вы маеце рацыю з SRC, але дзе Знаходжанне павінны пайсці? 819 00:42:34,710 --> 00:42:35,960 >> [Устаўляючы ГАЛАСЫ] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> Джэйсан Хиршхорн: Ён павінен ісці сюды. 822 00:42:41,610 --> 00:42:43,790 Гэта ўражаннямі - наш ўражаннямі тып. 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 Так што гэта просіць аргументам тып файла * пад назвай паток, які ўражаннямі. 826 00:42:57,630 --> 00:42:58,480 ОК? 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: Адзін байт за адзін раз. 830 00:43:04,370 --> 00:43:05,340 >> Джэйсан Хиршхорн: Адзін байт. 831 00:43:05,340 --> 00:43:08,205 Наколькі вялікая байт? 832 00:43:08,205 --> 00:43:11,642 Яго памер у байтах, таму тое, што я магу паставіць прама там? 833 00:43:11,642 --> 00:43:12,910 >> СТУДЭНЦКАЯ 25: Адзін. 834 00:43:12,910 --> 00:43:14,730 >> Джэйсан Хиршхорн: Адзін. 835 00:43:14,730 --> 00:43:17,020 Дакладна. 836 00:43:17,020 --> 00:43:19,940 Яе памер складае ў адзінку байта, так 1 СТУДЗЕНЯ байт. 837 00:43:19,940 --> 00:43:22,284 Колькі я хачу, каб прачытаць за адзін раз. 838 00:43:22,284 --> 00:43:23,520 >> СТУДЭНЦКАЯ 26: Адзін? 839 00:43:23,520 --> 00:43:24,270 >> Джэйсан Хиршхорн: Адна рэч. 840 00:43:24,270 --> 00:43:28,540 Я хачу прачытаць адно з памеру 1, адзін укус за адзін раз. 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 >> СТУДЭНЦКАЯ 27: Пункт прызначэння? 844 00:43:36,510 --> 00:43:39,270 >> Джэйсан Хиршхорн: Так я не магу паставіць гэта проста ў месца прызначэння. 845 00:43:39,270 --> 00:43:40,800 >> СТУДЭНЦКАЯ 28: Ты збіраешся пакласці гэта ў трэці паказальнік? 846 00:43:40,800 --> 00:43:41,780 >> СТУДЭНЦКАЯ 27: Для прызначэння. 847 00:43:41,780 --> 00:43:42,270 >> Джэйсан Хиршхорн: ОК. 848 00:43:42,270 --> 00:43:42,630 Так. 849 00:43:42,630 --> 00:43:46,820 >> СТУДЭНЦКАЯ 29: Вы можаце абвясціць нешта дзейнічаць як часовае захоўванне раней. 850 00:43:46,820 --> 00:43:47,350 >> Джэйсан Хиршхорн: ОК. 851 00:43:47,350 --> 00:43:50,080 Дай мне гэта. 852 00:43:50,080 --> 00:43:53,930 >> СТУДЭНЦКАЯ 29: Яшчэ адзін файл паказальнік, можа быць? 853 00:43:53,930 --> 00:43:54,220 >> Джэйсан Хиршхорн: ОК. 854 00:43:54,220 --> 00:43:55,585 Так што гэта пустата зорка - 855 00:43:55,585 --> 00:43:57,750 гэта тып несапраўднымі зорка, так што гэта не павінны быць паказальнікам файла. 856 00:43:57,750 --> 00:44:02,520 І калі я чытаю адзін байт, дзе б добрае месца 857 00:44:02,520 --> 00:44:03,850 захоўваць адзін байт? 858 00:44:03,850 --> 00:44:04,660 >> СТУДЭНЦКАЯ 29: масіў? 859 00:44:04,660 --> 00:44:05,770 >> Джэйсан Хиршхорн: масіў. 860 00:44:05,770 --> 00:44:07,730 ОК. 861 00:44:07,730 --> 00:44:14,040 І, што яшчэ нешта, што гэта проста памер адзін байт? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> СТУДЭНЦКАЯ 30: знак *? 864 00:44:18,060 --> 00:44:18,530 >> СТУДЭНЦКАЯ 29: Так. 865 00:44:18,530 --> 00:44:19,880 >> Джэйсан Хиршхорн: знак * не адзін байт. 866 00:44:19,880 --> 00:44:20,440 >> СТУДЭНЦКАЯ 29: знак. 867 00:44:20,440 --> 00:44:21,810 >> Джэйсан Хиршхорн: знак займае адзін байт. 868 00:44:21,810 --> 00:44:22,920 Ці не так? 869 00:44:22,920 --> 00:44:26,740 Так што давайце называць гэты буфер з'яўляецца агульным імя, якое выкарыстоўваецца для гэтых рэчаў для захоўвання 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 Але для гэтага трэба пустэчу *. 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 >> Таму што гэта прама тут - сімвал буфер характар, але 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 >> СТУДЭНЦКАЯ 31: Пакладзеце зорку наступны на персанаж. 883 00:44:55,775 --> 00:44:58,380 >> Джэйсан Хиршхорн: я мог стварылі гэта сімвал *. 884 00:44:58,380 --> 00:45:00,216 ОК. 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 Чар * буфер, так што я магу перавесці сюды? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> СТУДЭНЦКАЯ 31: Буфер. 890 00:45:09,310 --> 00:45:10,560 >> Джэйсан Хиршхорн: Буфер. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 Буфер з'яўляецца паказальнікам на знак. 893 00:45:14,500 --> 00:45:19,480 І ў гэтым месцы, мы змяшчаем адзін байт тое, што мы чыталі. 894 00:45:19,480 --> 00:45:19,980 Так. 895 00:45:19,980 --> 00:45:20,700 Аві. 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 >> Джэйсан Хиршхорн: Хто можа адказаць на гэтае пытанне? 899 00:45:25,930 --> 00:45:30,210 >> СТУДЭНЦКАЯ 32: Ну, гэта на самай справе не кропка да чаго прама цяпер, так - 900 00:45:30,210 --> 00:45:32,610 >> Джэйсан Хиршхорн: Але рабіць мы хочам Malloc гэта? 901 00:45:32,610 --> 00:45:35,600 >> СТУДЭНЦКАЯ 32: Калі вы павінны былі зрабіць яго, што спосаб, я думаю, так, таму што вы павінны былі б 902 00:45:35,600 --> 00:45:36,990 некаторы месца для таго, каб паказаць на. 903 00:45:36,990 --> 00:45:38,350 >> Джэйсан Хиршхорн: Ці ёсць у нас павінны Malloc гэта? 904 00:45:38,350 --> 00:45:40,580 >> СТУДЭНЦКАЯ 33: Калі вы збіраецеся выкарыстоўваць яго па-за цыклу. 905 00:45:40,580 --> 00:45:42,524 >> Джэйсан Хиршхорн: Мы збіраемся выкарыстоўваць яго па-за цыкла? 906 00:45:42,524 --> 00:45:44,392 >> СТУДЭНЦКАЯ 34: Так. 907 00:45:44,392 --> 00:45:44,860 >> СТУДЭНЦКАЯ 35: Пачакайце. 908 00:45:44,860 --> 00:45:46,980 Ці хочам мы аб'явім яго ў пятлі ў тагасветным? 909 00:45:46,980 --> 00:45:50,100 >> Джэйсан Хиршхорн: Так што я думаю, мы павінны некаторыя псеўда той час як цыкл тут, што мы 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 Мы працуе ў асноўным гэта толькі збіраецца для выкарыстання ўнутры гэтай завесы. 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 >> СТУДЭНЦКАЯ 36: Але гэта не паказваючы ні да чаго. 919 00:46:09,590 --> 00:46:11,540 >> Джэйсан Хиршхорн: Не, гэта не ініцыялізацыі ні да чаго. 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 Так што, здаецца, у парадку. 923 00:46:16,580 --> 00:46:17,780 Такім чынам, мы не павінны Таноса тут. 924 00:46:17,780 --> 00:46:19,360 І я думаю, гэта нармальна, як ёсць. 925 00:46:19,360 --> 00:46:24,350 926 00:46:24,350 --> 00:46:25,790 ОК. 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 >> СТУДЭНЦКАЯ 37: FWRITE? 931 00:46:33,770 --> 00:46:35,140 >> СТУДЭНЦКАЯ 38: Fprintf? 932 00:46:35,140 --> 00:46:36,010 >> Джэйсан Хиршхорн: Fprintf з'яўляецца адным. 933 00:46:36,010 --> 00:46:37,260 Што яшчэ адзін? 934 00:46:37,260 --> 00:46:37,680 >> СТУДЭНЦКАЯ 39: FWRITE. 935 00:46:37,680 --> 00:46:38,510 >> Джэйсан Хиршхорн: 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 >> Джэйсан Хиршхорн: ОК. 943 00:47:02,210 --> 00:47:06,752 >> Nishant: Другі'S проста будзе 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 >> Джэйсан Хиршхорн: Хто-небудзь ёсць ўсе пытанні аб той лініі? 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 ОК. 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 Хто можа скончыць нас пісаць гэтыя апошнія два радкі? 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 >> Люсі: Люсі. 958 00:47:40,580 --> 00:47:41,580 >> Джэйсан Хиршхорн: Люсі. 959 00:47:41,580 --> 00:47:47,560 >> Люсі: Fclose ўражаннямі, а затым FClose прызначэння. 960 00:47:47,560 --> 00:47:52,430 >> Джэйсан Хиршхорн: Fclose, адкрытая дужка, Першапачаткова, блізкія дужка, кропка з коскі. 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 так? 964 00:47:58,090 --> 00:48:01,710 >> Люсі: Адкрыць дужкі, DST а затым з коскі. 965 00:48:01,710 --> 00:48:02,520 >> Джэйсан Хиршхорн: Выдатна. 966 00:48:02,520 --> 00:48:04,338 І што я павінен ўключыць у канцы? 967 00:48:04,338 --> 00:48:05,210 >> Люсі: Вяртае 0. 968 00:48:05,210 --> 00:48:05,570 >> Джэйсан Хиршхорн: Вяртае 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 >> Джэйсан Хиршхорн: Не. 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 ОК. 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 Нават калі гэта ўсяго толькі ў некаторым псевдокоде як і мову? 984 00:48:37,350 --> 00:48:41,330 >> Што мы на самай справе - тое, што мы хочам, каб ісці да? 985 00:48:41,330 --> 00:48:41,980 Так, Люсі. 986 00:48:41,980 --> 00:48:43,240 >> Люсі: канец файла. 987 00:48:43,240 --> 00:48:44,990 >> Джэйсан Хиршхорн: канец файла. 988 00:48:44,990 --> 00:48:49,280 Так што вы разумееце пад канец файла? 989 00:48:49,280 --> 00:48:50,955 >> Люсі: Як толькі вы дасягаеце канец файла, спыніцца. 990 00:48:50,955 --> 00:48:51,240 >> Джэйсан Хиршхорн: ОК. 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 >> СТУДЭНЦКАЯ 40: Я думаю, што буфер будзе ўстаноўлены ў NULL. 994 00:48:59,900 --> 00:49:01,885 >> СТУДЭНЦКАЯ 41: Буфер абвешчаны ўнутры цыклу. 995 00:49:01,885 --> 00:49:03,670 >> Джэйсан Хиршхорн: Дык вы думаеце, буфер будзе ўстаноўлены ў NULL. 996 00:49:03,670 --> 00:49:05,850 Навошта буфер быць усталяваны ў NULL? 997 00:49:05,850 --> 00:49:10,420 >> СТУДЭНЦКАЯ 40: Таму што, калі вы FREAD, вы спрабуеце паставіць 998 00:49:10,420 --> 00:49:13,528 нічога ў буфер. 999 00:49:13,528 --> 00:49:13,980 >> Джэйсан Хиршхорн: ОК. 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 >> СТУДЭНЦКАЯ 42: Чалавек. 1007 00:49:28,190 --> 00:49:28,810 >> Джэйсан Хиршхорн: Чалавек. 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 >> СТУДЭНЦКАЯ 43: Нулявая? 1017 00:50:03,290 --> 00:50:04,540 >> Джэйсан Хиршхорн: Што? 1018 00:50:04,540 --> 00:50:05,300 >> СТУДЭНЦКАЯ 43: Нулявая? 1019 00:50:05,300 --> 00:50:05,690 >> Джэйсан Хиршхорн: Нуль. 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 >> Джэйсан Хиршхорн: ОК. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: І тады вы можаце пакласці IF заяву адразу пасля FREAD кажучы, калі 1030 00:50:38,050 --> 00:50:42,600 FREAD роўная нуля - 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 >> Джэйсан Хиршхорн: Хто можа дапамагчы Аві па-за домам? 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 >> Джэйсан Хиршхорн: Мы проста пайшоў з гэтай нагоды. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: Як вы ўяўляеце гэта? 1038 00:50:55,450 --> 00:50:57,190 >> Джэйсан Хиршхорн: Так яна вяртае - давайце паглядзець тут - яна вяртае 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 так? 1047 00:51:16,855 --> 00:51:20,330 >> СТУДЭНЦКАЯ 45: А вы не можаце проста пакласці ў поўнай FREAD (буфер, 1, 1, SRC) у 1048 00:51:20,330 --> 00:51:21,660 у той час як цыкл? 1049 00:51:21,660 --> 00:51:26,510 >> Джэйсан Хиршхорн: Дык вы прапануеце Робячы гэта ў там? 1050 00:51:26,510 --> 00:51:27,600 >> [Устаўляючы ГАЛАСЫ] 1051 00:51:27,600 --> 00:51:29,520 >> Джэйсан Хиршхорн: Пачакай. 1052 00:51:29,520 --> 00:51:30,885 Такім чынам, мы збавення гэтага. 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 >> СТУДЭНЦКАЯ 45: Буфер звонку. 1056 00:51:36,740 --> 00:51:38,110 >> Джэйсан Хиршхорн: Мы павінны таксама рухацца ў гэтым тут. 1057 00:51:38,110 --> 00:51:41,700 >> СТУДЭНЦКАЯ 45: Але робіць гэта ўвесь час перамясціць яго наперад? 1058 00:51:41,700 --> 00:51:42,950 >> [Устаўляючы ГАЛАСЫ] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> Джэйсан Хиршхорн: ОК. 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 >> СТУДЭНЦКАЯ 46: Мой адзіны пытанне, будзе ён на самай справе выканаць каманду FREAD? 1066 00:52:04,050 --> 00:52:06,175 >> Джэйсан Хиршхорн: Добры пытанне. 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 >> СТУДЭНЦКАЯ 46: ОК. 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 >> Джэйсан Хиршхорн: Мы бачылі рэчы ні раней, дзе ў нас ёсць 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 >> Джэйсан Хиршхорн: Мы маглі б запусціць яго. 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 у нас ёсць адзін байт ў нашым файл, мы вернемся да тут, 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 вернецца адзін байт і захоўваеце яго ў буферы. 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 Ці азначае гэта, код ўнутры той час як цыкл будзе выконвацца? 1096 00:53:15,325 --> 00:53:15,453 >> СТУДЭНЦКАЯ 47: Так. 1097 00:53:15,453 --> 00:53:16,040 Гэта праўда. 1098 00:53:16,040 --> 00:53:16,290 >> Джэйсан Хиршхорн: Так. 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 Мы чытаем з канца нашага файла, , Таму што мы толькі адзін байт ў ім. 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 >> ОК. 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 >> СТУДЭНЦКАЯ 48: Пасля таго як мы рухацца буфер па-за цыкла, мы 1127 00:54:21,240 --> 00:54:22,670 павінны Malloc гэта? 1128 00:54:22,670 --> 00:54:23,310 >> Джэйсан Хиршхорн: Добры пытанне. 1129 00:54:23,310 --> 00:54:26,670 Пасля таго як мы рухацца буфер межамі цыкл, мы павінны 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 ўнутры цыкла? 1133 00:54:33,534 --> 00:54:35,230 >> НЕКАЛЬКІ СТУДЭНТЫ: Так. 1134 00:54:35,230 --> 00:54:35,580 >> Джэйсан Хиршхорн: Так. 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 Гэта лакальная пераменная, і яе маштабы па-ранейшаму ўключае цыкл. 1139 00:54:47,766 --> 00:54:49,540 >> СТУДЭНЦКАЯ 49: Ці трэба нам, каб вызваліць яе? 1140 00:54:49,540 --> 00:54:51,770 >> Джэйсан Хиршхорн: Ці ёсць у нас трэба вольнага буфера? 1141 00:54:51,770 --> 00:54:53,860 >> СТУДЭНЦКАЯ 49: Так, калі мы не Таноса. 1142 00:54:53,860 --> 00:54:55,750 >> Джэйсан Хиршхорн: Ці ёсць у нас трэба вольнага буфера? 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 ОК. 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 Так што без ініцыялізацыі. 1149 00:55:18,220 --> 00:55:20,830 Гэта было тое, што тое, што Маркус прапанаваў раней. 1150 00:55:20,830 --> 00:55:25,340 Таму ў нас ёсць, што памылкі, пераменная буфер ня ініцыялізаваны пры выкарыстанні тут. 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 >> СТУДЭНЦКАЯ 50: Malloc гэта? 1154 00:55:30,960 --> 00:55:31,770 >> СТУДЭНЦКАЯ 51: Роўна NULL? 1155 00:55:31,770 --> 00:55:33,000 >> СТУДЭНЦКАЯ 52: Скажыце буфера роўны NULL. 1156 00:55:33,000 --> 00:55:34,250 >> Джэйсан Хиршхорн: ОК. 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 >> СТУДЭНЦКАЯ 53: Вы можаце зрабіць кропку слэш CP, test.txt. 1167 00:56:22,230 --> 00:56:25,140 І тады вы можаце назваць яшчэ адзін файл якія ён будзе захоўваць у. 1168 00:56:25,140 --> 00:56:25,510 >> Джэйсан Хиршхорн: ОК. 1169 00:56:25,510 --> 00:56:27,380 Мы будзем называць яго out.txt. 1170 00:56:27,380 --> 00:56:28,630 Крута? 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 Думкі аб віне сегменце? 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 Як мы можам даведацца, дзе няспраўнасць сегмент з'яўляецца? 1177 00:56:45,040 --> 00:56:45,680 Што? 1178 00:56:45,680 --> 00:56:45,990 >> СТУДЭНЦКАЯ 54: GDB. 1179 00:56:45,990 --> 00:56:47,240 >> Джэйсан Хиршхорн: GDB. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 Мы бяжым GDB, напісаўшы GDB кропка слэш, назва нашай праграмы. 1182 00:56:55,300 --> 00:56:57,020 Няма аргументаў каманднага радка там. 1183 00:56:57,020 --> 00:56:59,570 Мы збіраемся ўсталяваць супыну на асноўнай. 1184 00:56:59,570 --> 00:57:02,190 Калі я хачу, каб пачаць GDB, што мне рабіць? 1185 00:57:02,190 --> 00:57:02,730 >> СТУДЭНЦКАЯ 55: Р. 1186 00:57:02,730 --> 00:57:08,910 >> Джэйсан Хиршхорн: Р. А што потым? 1187 00:57:08,910 --> 00:57:09,400 >> СТУДЭНЦКАЯ 55: Аргументы? 1188 00:57:09,400 --> 00:57:10,650 >> Джэйсан Хиршхорн: Тады аргументы каманднага радка. 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 Я збіраюся пайсці да Я атрымаю свой сегм няспраўнасць. 1193 00:57:21,450 --> 00:57:22,700 Там мой сегмент віна. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Падобна на тое FREAD выклікала мой сегмент віна. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Я ведаю, FREAD выклікала маё сегм віну, таму што гэта было 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 Я гатовы трымаць заклад, што ПАКУЛЬ праверкі не з'яўляецца прычынай майго сегм няспраўнасць. 1203 00:57:44,820 --> 00:57:46,950 Хутчэй за ўсё, FREAD было прычынай майго сегм няспраўнасць. 1204 00:57:46,950 --> 00:57:49,260 Я таксама бачу нешта тут, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Копія памяці. 1206 00:57:50,500 --> 00:57:53,820 Падобна на тое, рухаючыся памяць з адно месца да іншага. 1207 00:57:53,820 --> 00:57:56,890 Падобна на тое, тое, што здарылася б у 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 >> СТУДЭНЦКАЯ 56: Вы павінны паставіць Ампэрсанд перад буфера? 1214 00:58:15,140 --> 00:58:17,800 >> Джэйсан Хиршхорн: Так Ампэрсанд перад буфер дасць мне адрас 1215 00:58:17,800 --> 00:58:22,330 буфер, які ўяўляе сабой сімвал *. 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 >> СТУДЭНЦКАЯ 57: Можа вы проста увядзіце запусціць зноў? 1219 00:58:29,210 --> 00:58:32,050 >> Джэйсан Хиршхорн: Проста увядзіце працаваць зноў. 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 гэта паказальнік на знак. 1231 00:59:08,230 --> 00:59:10,325 Які адрас гэта сімвал на? 1232 00:59:10,325 --> 00:59:12,550 >> СТУДЭНЦКАЯ 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> Джэйсан Хиршхорн: Дакладна. 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 Гэта тое, што ў нас ёсць - Ўстаноўка ў нас цяпер. 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 >> СТУДЭНЦКАЯ 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 >> Джэйсан Хиршхорн: Так 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 упс. 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 Нам трэба стварыць акно, якое адзін байт вялікі, памерам з гольца. 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 так. 1273 01:00:39,640 --> 01:00:40,440 Ёсць ідэі? 1274 01:00:40,440 --> 01:00:43,615 >> СТУДЭНЦКАЯ 60: Проста ўсталяваць яго ў якасці любы выпадковы характар. 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 >> Джэйсан Хиршхорн: Пачакайце. 1279 01:00:54,110 --> 01:00:55,110 Чар буфер? 1280 01:00:55,110 --> 01:00:55,880 Дык не зоркі? 1281 01:00:55,880 --> 01:00:56,390 >> СТУДЭНЦКАЯ 60: Так. 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 >> Джэйсан Хиршхорн: ОК. 1285 01:01:01,460 --> 01:01:02,420 Так дайце мне адзін. 1286 01:01:02,420 --> 01:01:03,170 >> СТУДЭНЦКАЯ 60: Як або што-то. 1287 01:01:03,170 --> 01:01:06,160 А потым, калі ў вас ёсць буфер там, вы карыстаецеся - 1288 01:01:06,160 --> 01:01:06,420 >> СТУДЭНЦКАЯ 61: Зорка? 1289 01:01:06,420 --> 01:01:07,650 О не, Ампэрсанд. 1290 01:01:07,650 --> 01:01:09,000 >> СТУДЭНЦКАЯ 60: Выкарыстоўвайце Ампэрсанд. 1291 01:01:09,000 --> 01:01:09,470 >> Джэйсан Хиршхорн: ОК. 1292 01:01:09,470 --> 01:01:11,320 А як наконт ў FWRITE? 1293 01:01:11,320 --> 01:01:14,150 >> СТУДЭНЦКАЯ 60: Выкарыстоўвайце Ампэрсанд зноў. 1294 01:01:14,150 --> 01:01:14,320 >> Джэйсан Хиршхорн: Добра. 1295 01:01:14,320 --> 01:01:20,970 Так ваша ідэя, мы ствараем сімвал і пакласці што-то ў ім, а затым 1296 01:01:20,970 --> 01:01:22,612 запіс на гэты знак. 1297 01:01:22,612 --> 01:01:23,760 >> СТУДЭНЦКАЯ 60: Так. 1298 01:01:23,760 --> 01:01:25,916 >> Джэйсан Хиршхорн: Што людзі думаюць? 1299 01:01:25,916 --> 01:01:27,770 >> СТУДЭНЦКАЯ 62: Гэта заблытаным. 1300 01:01:27,770 --> 01:01:28,460 >> Джэйсан Хиршхорн: ОК. 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 ох! 1305 01:01:36,822 --> 01:01:38,060 Выбачайце. 1306 01:01:38,060 --> 01:01:45,930 Таму ў гэты раз у нас ёсць тое, што называецца буфер, і гэта ў стэку. 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 робіць гэта бярэ байт з наш файл і змяшчае яго недзе. 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 >> СТУДЭНЦКАЯ 63: Незалежна адрас буфера. 1316 01:02:14,650 --> 01:02:15,970 >> Джэйсан Хиршхорн: Незалежна адрас буфера. 1317 01:02:15,970 --> 01:02:22,370 Гэта, верагодна, будзе нешта ў гэтым родзе. 1318 01:02:22,370 --> 01:02:26,950 Напэўна збіраюся пачаць з б і е, а затым шэсць іншых 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 >> І мы збіраемся паставіць нашу адну байт, што па гэтым адрасе. 1324 01:02:34,790 --> 01:02:38,470 Такім чынам, мы збіраемся паставіць нашу адну байт, што ўсярэдзіне тут. 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 ОК. 1337 01:03:07,670 --> 01:03:09,390 Майкл, дзе ты стаіш? 1338 01:03:09,390 --> 01:03:10,680 >> Майкл: Я не магу вырашыць. 1339 01:03:10,680 --> 01:03:12,070 Выгляд у сярэдзіне. 1340 01:03:12,070 --> 01:03:12,736 >> Джэйсан Хиршхорн: Ты у сярэдзіне. 1341 01:03:12,736 --> 01:03:13,092 Выбераце адзін. 1342 01:03:13,092 --> 01:03:14,400 >> Майкл: Я буду мець веру і кажуць, што гэта будзе працаваць. 1343 01:03:14,400 --> 01:03:14,660 >> Джэйсан Хиршхорн: ОК. 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 >> [Устаўляючы ГАЛАСЫ] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> Джэйсан Хиршхорн: Няма сегмент віна. 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 >> СТУДЭНЦКАЯ 64: Розніца. 1353 01:03:43,300 --> 01:03:45,490 >> Джэйсан Хиршхорн: Розніца. 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 і ўзяць нешта з 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 >> Такім чынам, мы на самай справе можа мець напісана Таноса тут, і 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 тут, са мной, з нецярпеннем як магічных лікаў. 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 >> СТУДЭНЦКАЯ 65: Памер байта. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> Джэйсан Хиршхорн: Як што? 1383 01:05:11,080 --> 01:05:13,130 >> СТУДЭНЦКАЯ 65: Памер знак. 1384 01:05:13,130 --> 01:05:13,820 >> Джэйсан Хиршхорн: Памер знак. 1385 01:05:13,820 --> 01:05:15,290 Так, байт не з'яўляецца тыпам. 1386 01:05:15,290 --> 01:05:16,320 Так памер знакавых работ. 1387 01:05:16,320 --> 01:05:30,270 Мы маглі б, у верхняй частцы наш код, # вызначаецца, што. 1388 01:05:30,270 --> 01:05:33,410 Выклікаецца нешта BYTE і гэта сапраўды знак. 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 >> СТУДЭНЦКАЯ 67: Меркаваны, каб дапамагчы стандартаваць праз сістэмы рэчаў, якія 1402 01:06:05,650 --> 01:06:08,760 ёсць - як цэлыя лікі без знака што ёсць 8 байт? 1403 01:06:08,760 --> 01:06:11,785 >> Джэйсан Хиршхорн: Гэта Цалкам дакладна. 1404 01:06:11,785 --> 01:06:14,310 На розных машынах, памер гольца - 1405 01:06:14,310 --> 01:06:15,180 як правіла, не сымбаль. 1406 01:06:15,180 --> 01:06:16,100 Знакаў, як правіла, адзін байт. 1407 01:06:16,100 --> 01:06:19,590 Але памер іншых тыпаў дадзеных з'яўляюцца розных памераў на 32-бітнай машыне 1408 01:06:19,590 --> 01:06:21,370 у параўнанні з 64-бітнай машыне. 1409 01:06:21,370 --> 01:06:25,180 Uint8_t заўсёды 8 біт - 1410 01:06:25,180 --> 01:06:27,210 заўсёды адзін байт. 1411 01:06:27,210 --> 01:06:29,580 >> І мне трэба, каб уключыць, што стандартны файл унутр загаловак. 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 Гэта не проста сімвал, гэта байт, што і мы чакаем, што ён будзе. 1417 01:06:49,450 --> 01:06:53,400 >> І тут, мы на самай справе быў трохі больш надзейнымі. 1418 01:06:53,400 --> 01:06:55,190 Мы не называючы гэта сімвал, які - 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 І калі мы паглядзім тут, мы робім пар. 1422 01:07:05,810 --> 01:07:08,340 Ой-ой. 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 >> СТУДЭНЦКАЯ 68: Гэта можа быць уключаны. 1426 01:07:16,170 --> 01:07:17,880 >> Джэйсан Хиршхорн: Што? 1427 01:07:17,880 --> 01:07:19,130 >> СТУДЭНЦКАЯ 69: Ці з'яўляецца гэта? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> СТУДЭНЦКАЯ 70: Вы не зрабілі вызначыць яго як тыпу. 1430 01:07:25,080 --> 01:07:28,684 >> СТУДЭНЦКАЯ 71: Але ён павінен быць вызначаны ў стандарце. 1431 01:07:28,684 --> 01:07:29,934 >> СТУДЭНЦКАЯ 72: Што адбываецца? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> СТУДЭНЦКАЯ 73: Калі вызначыць быць усё загалоўныя? 1434 01:07:40,210 --> 01:07:41,370 >> Джэйсан Хиршхорн: Так што гэта не # вызначыць. 1435 01:07:41,370 --> 01:07:45,490 На самай справе, у гэтым выпадку, я збіраецеся выкарыстоўваць ЬурейеЕ. 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 байт, і гэта, па сутнасці, гэта. 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 для таго, каб гэта працавала, мы павінны каб TypeDef што байт. 1448 01:08:19,880 --> 01:08:21,840 >> І мы вызначаем яго прама тут. 1449 01:08:21,840 --> 01:08:24,750 Гэта не структура, гэта на самай справе проста цэлы лік без знака. 1450 01:08:24,750 --> 01:08:27,680 Гэта адзін байт. 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 Такім чынам, дазвольце мне падцягнуць 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, які вам трэба напісаць, і Змена памеру. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, які з'яўляецца трэцім і апошнім частка мноства задач, не 1465 01:09:27,050 --> 01:09:29,529 заснаваныя ад гэтага файла. 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 калі наша пар. 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 з'яўляюцца растравых файлаў. 1482 01:10:12,240 --> 01:10:15,660 Растравыя файлы маюць некаторыя метададзеныя звязаныя з імі. 1483 01:10:15,660 --> 01:10:20,190 >> Такім чынам, першая пара байтаў распавесці вам аб файле. 1484 01:10:20,190 --> 01:10:23,460 Яны не з'яўляюцца кветкамі піксель у гэтым малюнку. 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 на якія тыпы структур метададзеных ўключаны з кропкавымі малюнкамі. 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 дзве часткі метададзеных - файл загаловак і інфармацыйны загаловак. 1491 01:10:45,800 --> 01:10:51,030 І мы правяраем некаторыя яго часткі, каб пераканайцеся, што ён з'яўляецца сапраўдным Выява растравага 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 Карацей кажучы, яны проста кажу, гэта файл малюнка, і 1496 01:11:01,370 --> 01:11:02,810 пацверджанне таго, што. 1497 01:11:02,810 --> 01:11:05,180 >> Далей, мы пішам тыя у файл вонкі. 1498 01:11:05,180 --> 01:11:05,660 Мы бачым, што тут. 1499 01:11:05,660 --> 01:11:06,910 Мы пішам на вонкавы паказальніка. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 Далей, мы вызначэння запаўнення. 1502 01:11:11,320 --> 01:11:15,240 Такім чынам, яшчэ раз, як гэта асаблівасць з Выява растравага, некаторыя лініі ўключаюць у сябе 1503 01:11:15,240 --> 01:11:16,840 абіўка ў канцы. 1504 01:11:16,840 --> 01:11:19,000 І калі вы чытаеце праз набор праблем, вы даведаецеся больш пра абіўка. 1505 01:11:19,000 --> 01:11:22,330 Гэта і ёсць формула, каб знайсці дадатак. 1506 01:11:22,330 --> 01:11:23,610 >> Важна памятаць - 1507 01:11:23,610 --> 01:11:29,720 пры змене памеру растравага малюнка файл, змены запаўнення. 1508 01:11:29,720 --> 01:11:31,970 Пры змене памеру файл, змены запаўнення. 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 Але калі вы змяніць памер нешта, змены абіўка. 1512 01:11:38,930 --> 01:11:47,100 >> Калі ў мяне ёсць толькі адзін піксель у гэтай радку, я трэба тры байта запаўнення, паколькі 1513 01:11:47,100 --> 01:11:51,190 кожны радок павінна быць кратныя чатыром байт даўжынёй у растравы файл. 1514 01:11:51,190 --> 01:11:56,120 Але калі я яго падвоіць, каб перайсці ад аднаго пікселя на два пікселя, кожны з якіх, 1515 01:11:56,120 --> 01:11:59,510 скажам так, з'яўляецца байт, то мне трэба два байта запаўнення, каб зрабіць 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 абіўка ў мяне ёсць. 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 Далей, мы перабору кожнага радка, або па ўсіх радках. 1522 01:12:18,720 --> 01:12:21,400 А потым мы перабіраем кожны слупок у кожнай радку. 1523 01:12:21,400 --> 01:12:25,330 Мы лячэнні гэтага растравы малюнак як сетка, як мы разглядалі 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 >> Далей, таму што я сказаў кожны радок заканчваецца ў пэўным абіўка, мы 1533 01:12:46,760 --> 01:12:48,260 прапусціць гэтага дапаўненні - 1534 01:12:48,260 --> 01:12:51,000 стары абіўка. 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 Мы маглі літаральна толькі паставіць пракладку цалі 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 па-над старой пракладкі? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> СТУДЭНЦКАЯ 74: Так. 1546 01:13:15,970 --> 01:13:17,090 >> Джэйсан Хиршхорн: Так мы робім. 1547 01:13:17,090 --> 01:13:19,290 Таму што гэта, зноў жа, здзелкі з зыходным файлам. 1548 01:13:19,290 --> 01:13:21,570 Мы не клапоцімся пра абіўка з зыходнага файла. 1549 01:13:21,570 --> 01:13:23,410 Мы хочам, каб перайсці да наступнай радку. 1550 01:13:23,410 --> 01:13:28,850 Але мы не проста пакласці назад стары Аб'ём запаўнення. 1551 01:13:28,850 --> 01:13:31,540 Мы павінны пакласці назад новы Аб'ём запаўнення. 1552 01:13:31,540 --> 01:13:35,810 >> Таму, калі мы мяняем памер файл, мы ўсё яшчэ хочам, каб прапусціць 1553 01:13:35,810 --> 01:13:38,270 абіўка ў старым файле - тое, што мы чытаем у ад. 1554 01:13:38,270 --> 01:13:40,370 Але тое, што мы пішам, каб, мы збіраемся неабходна змясціць назад некалькі адрозніваецца 1555 01:13:40,370 --> 01:13:41,890 колькасць абіўка, што мы вызначылі. 1556 01:13:41,890 --> 01:13:42,780 Так. 1557 01:13:42,780 --> 01:13:44,550 >> СТУДЭНЦКАЯ 75: Парадак гэтых двух лініі не мае значэння, ці не так? 1558 01:13:44,550 --> 01:13:46,160 Таму што вы апрацоўкі розныя файлы. 1559 01:13:46,160 --> 01:13:46,620 >> Джэйсан Хиршхорн: Цалкам дакладна. 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 Гэта важна, так што мы атрымліваем Патрэбную колькасць абіўка. 1564 01:13:54,370 --> 01:13:57,560 Гэта мае справу з файлам ст. 1565 01:13:57,560 --> 01:13:58,560 Мы хочам, каб прапусціць права над пракладкай. 1566 01:13:58,560 --> 01:13:59,470 >> Мы не хочам, каб прачытаць - 1567 01:13:59,470 --> 01:14:01,500 калі мы чытаем байт за адзін раз, мы не клапоцяцца пра тых дададзеную зь байты. 1568 01:14:01,500 --> 01:14:04,070 Мы хочам, каб перайсці да наступнай радку. 1569 01:14:04,070 --> 01:14:11,800 Нарэшце, як і Люсі даў для нас, мы закрываем файлы і вяртаць 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 асаблівасці растравых файлаў. 1576 01:14:29,970 --> 01:14:33,570 Так што ў мяне, як мой наступны слайд, Дык што ж нам рабіць? 1577 01:14:33,570 --> 01:14:35,510 Ну, давайце падумаем пра дэтэктыўны раман. 1578 01:14:35,510 --> 01:14:38,080 >> І для таго, хто прачытаў праблема ўсталяваць, што ж мы 1579 01:14:38,080 --> 01:14:41,410 трэба зрабіць у дэтэктыўны раман? 1580 01:14:41,410 --> 01:14:42,080 Проста. 1581 01:14:42,080 --> 01:14:42,460 Алея. 1582 01:14:42,460 --> 01:14:48,570 >> ALEJA: Ці можаце вы прыняць тую частку кожнага пікселя, якая пазначае чырвоны колер. 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 >> Джэйсан Хиршхорн: ОК. 1586 01:14:51,860 --> 01:14:54,460 Так вывезці частка кожнага піксель, які пазначае чырвоны колер. 1587 01:14:54,460 --> 01:14:57,234 Гэта блізка, але не ўсё. 1588 01:14:57,234 --> 01:14:59,780 >> СТУДЭНЦКАЯ 76: Ну, ёсць розных спосабаў зрабіць гэта. 1589 01:14:59,780 --> 01:14:59,870 >> Джэйсан Хиршхорн: ОК. 1590 01:14:59,870 --> 01:15:03,070 Дайце мне адзін бок. 1591 01:15:03,070 --> 01:15:08,240 >> СТУДЭНЦКАЯ 76: Выміце усе чырвоныя, і затым падкрэсліць сіні і зялёны. 1592 01:15:08,240 --> 01:15:10,010 >> Джэйсан Хиршхорн: ОК. 1593 01:15:10,010 --> 01:15:11,830 Таму, улічваючы абодва гэтыя шляхі - 1594 01:15:11,830 --> 01:15:15,210 гэта гучыць як мы даем яму піксель, гэта мае чырвоны, сіні і зялёны ўзровень. 1595 01:15:15,210 --> 01:15:19,350 Мы хочам змяніць адносныя ўзроўні чырвоны, сіні і зялёны, у залежнасці 1596 01:15:19,350 --> 01:15:20,740 на гэтым пікселі. 1597 01:15:20,740 --> 01:15:28,380 Дзе ў гэтым кодзе мы павінны змяніць адносная чырвоны, сіні і зялёны 1598 01:15:28,380 --> 01:15:29,720 ўзроўні дадзенага пікселя. 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 >> Джэйсан Хиршхорн: 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 Для дэтэктыўны раман, код трэба запісы ўсе павінны ісці прама там. 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 чырвоныя, і зялёныя ўзроўні ад кожнага пікселя. 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 >> СТУДЭНЦКАЯ 77: Гэта структура. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> Джэйсан Хиршхорн: RGBTRIPLE з'яўляецца структурай. 1618 01:16:18,900 --> 01:16:22,330 Мы бачым, што прама тут. 1619 01:16:22,330 --> 01:16:26,600 І таму, калі я хацеў доступу, скажам, чырвоны ўзровень структуры, як мне 1620 01:16:26,600 --> 01:16:30,005 доступ чырвоную ўзровень гэтай структуры? 1621 01:16:30,005 --> 01:16:37,280 >> [КЛАС мармыча] 1622 01:16:37,280 --> 01:16:38,530 >> СТУДЭНЦКАЯ 78: RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> Джэйсан Хиршхорн: Гэта правільна? 1625 01:16:48,856 --> 01:16:53,040 >> СТУДЭНЦКАЯ 79: Яна павінна быць трайная кропка, а RGBTRIPLE кропкай? 1626 01:16:53,040 --> 01:16:54,120 >> Джэйсан Хиршхорн: Трехмясцовый. 1627 01:16:54,120 --> 01:16:56,700 Трехмясцовый з'яўляецца лакальнай зменнай, таму тут, няма ніякіх паказальнікаў тут. 1628 01:16:56,700 --> 01:16:58,400 Так што мы проста выкарыстоўваюць кропку. 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 Такім чынам, яшчэ раз, гэты радок кода атрымлівае доступ гэтая пераменная ўнутры гэтай структуры, і 1632 01:17:13,190 --> 01:17:15,070 мы можам усталяваць яго на нешта новае. 1633 01:17:15,070 --> 01:17:20,040 >> Такім чынам, для дэтэктыўны раман, зноў жа, гэта, па сутнасці, тое, што мы павінны зрабіць. 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 Змяненне памеру, з другога боку, крыху больш складана. 1637 01:17:27,720 --> 01:17:30,900 На самай справе, змены памеру, верагодна, складаная частка гэтай праблемы ўсталюеце. 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 >> СТУДЭНЦКАЯ 80: Вертыкальна - 1646 01:17:47,970 --> 01:17:52,360 так што вам прыйдзецца па гарызанталі змяніць яго памер, але вертыкальна змяніць яе памер, а? 1647 01:17:52,360 --> 01:17:58,475 >> Джэйсан Хиршхорн: Дык што, калі нам даюць піксель, і мы хочам змяніць яго, 1648 01:17:58,475 --> 01:18:03,460 у два разы, цяпер ён павінен быць зменены па гарызанталі і змены памеру 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 >> СТУДЭНЦКАЯ 81: Тое, як я думаў пра гэта быў вам трэба раздрукаваць яго - 1656 01:18:15,270 --> 01:18:15,490 >> Джэйсан Хиршхорн: Пачакайце. 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 >> СТУДЭНЦКАЯ 81: ОК. 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 >> Джэйсан Хиршхорн: Вы толькі што падняў руку. 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 Такім чынам, мы ў адзін піксель, мы хочам паўтарыць яго па гарызанталі і 1667 01:18:38,400 --> 01:18:39,360 па вертыкалі. 1668 01:18:39,360 --> 01:18:48,920 Так што тэарэтычна, што мы робім тут, мы чытаць у нашай пікселя, запішам яго 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 >> СТУДЭНЦКАЯ 82: Стварэнне масіва? 1679 01:19:17,210 --> 01:19:20,090 >> Джэйсан Хиршхорн: Так што давайце думаць кожнага файла ў якасці запар. 1680 01:19:20,090 --> 01:19:22,550 Давайце думаць у тэрмінах радкоў. 1681 01:19:22,550 --> 01:19:26,670 Калі ў нас ёсць першы шэраг ад нашай маленькай карціна, мы можам зрабіць гэты радок 1682 01:19:26,670 --> 01:19:30,640 у вялікай шэрагу ад вялікай карціны, а затым паўтарыць гэты радок аднак 1683 01:19:30,640 --> 01:19:34,250 шмат разоў гэта павінна быць прайграныя, замест таго, каб піксель за пікселем, 1684 01:19:34,250 --> 01:19:37,260 якая збівае з толку, калі працы з файламі. 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 Калі гэта наш файл, і ў нас ёсць, што адзін піксель ёсць, і мы хочам, каб пакласці яго 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 >> І вось як мы маем справу з змены памеру вертыкальна, а не гарызантальна. 1697 01:20:15,860 --> 01:20:18,810 Гэта было збольшага хутка, і трохі заблытаным. 1698 01:20:18,810 --> 01:20:22,375 На жаль, наш час скончыўся. 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 >> Так што давайце адкласці на дадзены момант. 1702 01:20:32,320 --> 01:20:34,480 І зноў жа, калі ў вас ёсць якія-небудзь пытанні, мы можам мець зносіны на вуліцы. 1703 01:20:34,480 --> 01:20:38,294