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 ипак, ваш ТФ је вероватно ради на томе и оцењивање га, и да ће га добити назад 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 Прво, ми ћемо ићи преко неке ресурси који ЦС50 пружа вама. 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 То УРЛ адреса се налази овде доле. 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 је на свим псетс. 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 нови грацкед позив функције. 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 ставити унутар ЗА петље, а не би требало да деси сваки пут када одем 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, онда такође имају приступ мрежи у ПДФ 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 Посебан проблем на квизу 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 Омпица. 127 00:06:29,600 --> 00:06:30,520 >> ОМПИЦА: Број 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 >> ОМПИЦА: - 131 00:06:35,840 --> 00:06:36,420 >> ЈАСОН Хирсцххорн: Ја Отад - 132 00:06:36,420 --> 00:06:37,670 >> ОМПИЦА: укључују - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> ЈАСОН Хирсцххорн: Број 10 је осам И да - писање осам до и? 135 00:06:42,180 --> 00:06:42,980 >> ОМПИЦА: Да. 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 Дакле, неколико ствари које треба предузети уму када кодирање осам до и. 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 Ви сте га чувају као цхар, али АСЦИИ вредност за нулу - 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 То је неки други број који можете потражите у АСЦИИ табели. 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, са Цезаром и Вигинере - 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 И онда сваки пут кроз ом петља, помножите то гигант глобална 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 >> ОМПИЦА: Да. 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 >> Дакле, ми смо дали као дранд функција можемо да користимо. 219 00:10:37,810 --> 00:10:38,820 И шта дранд - 220 00:10:38,820 --> 00:10:40,290 под претпоставком да је био засејан - 221 00:10:40,290 --> 00:10:42,316 Шта дранд врати? 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 који су нам по дранд. 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 >> дранд не узима никакве аргументе - као гетСтринг ради 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 А онда, друго питање је, дранд, сте рекли, даје вам пловак - 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: Цон до рекурзије - 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 Још нешто о квизу 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 само минут о томе шта смо радиш овде са датотеком И/О-- 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 >> Баш као и ако је Мицрософт Ворд није могао да било какве Ворд докумената, затим 340 00:16:15,440 --> 00:16:18,710 једном Мицрософт Ворд отказ, сви ваши Рад ће нестати, а то би 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 И то је са позивом да фопен - 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 >> Идемо да се претпостави да ово фајл под називом "тект.ткт" - 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 >> АЛЕЈА: за Аппенд. 377 00:18:03,490 --> 00:18:06,840 >> ЈАСОН Хирсцххорн:, ако желите да додаје на фајл који већ постоји. 378 00:18:06,840 --> 00:18:07,810 >> СТУДЕНТСКИ 5: Р за читање. 379 00:18:07,810 --> 00:18:09,930 >> ЈАСОН Хирсцххорн: А, ако желите да прочитате из датотеке. 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 Па, ја користим ову функцију зове иф. 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 почети са словом Ф, стоји за датотеку. 404 00:19:38,420 --> 00:19:43,440 И иф, за разлику од наше нормалне штампе апликација, узима један додатни аргумент, 405 00:19:43,440 --> 00:19:47,800 и да је датотека у којој сте Желим да одштампате ову линију да. 406 00:19:47,800 --> 00:19:50,640 >> Немам ништа да право охаи. 407 00:19:50,640 --> 00:19:52,860 Ја немам трећину Аргумент за принтф - 408 00:19:52,860 --> 00:19:57,030 или други аргумент да принтф, Трећи аргумент да фпринтф, јер сам 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 Али опет, иф и све ове датотеке Функције које послују са фајловима 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 са - кад год ми нешто маллоц, желимо да ослободимо нешто, да не бисмо 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 Тако да је основе фајла И / О. Вероватно сте видели да је пре, или 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 >> ЈАСОН Хирсцххорн: До иоу Имам једно питање, Ави? 427 00:21:04,150 --> 00:21:04,660 >> АВИ: Не 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 >> Опет, добар приступ за ово је да не иду право у Ц коду, али 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 мапе на алатима и ствари које смо научили да користе у Ц. 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: Проверите да ли ако је фајл НУЛЛ? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> ЈАСОН Хирсцххорн: Проверите да сигуран ни су НУЛЛ. 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 је то НУЛЛ? 499 00:28:18,887 --> 00:28:20,080 >> СТУДЕНТСКА 11: Не. 500 00:28:20,080 --> 00:28:21,190 >> ЈАСОН Хирсцххорн: То није НУЛЛ. 501 00:28:21,190 --> 00:28:23,400 То се зове НУЛЛ терминатор. 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 једнак НУЛЛ. 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: Зашто не би сте проверили да уверите да су датотеке нису НУЛЛ 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 Ако то не ради, она ће сачувати НУЛЛ - 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 Дакле, ви не можете проверити за НУЛЛ пре него што сте их отворили. 524 00:29:11,990 --> 00:29:13,520 НУЛЛ значи нешто није раде исправно. 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 Ни НУЛЛ. 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: Или ми користимо фсцанф или нешто као онај први фајл? 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 Ја ћу да ставим у Псеудокод гедит, и за пар минута смо 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 Нисхант, имам нову датотеку. 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 >> Нисхант: Укључи библиотеке? 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 >> Нисхант: Стдио.х, стдлиб.х, ја верујем? 602 00:34:17,570 --> 00:34:18,000 >> ЈАСОН Хирсцххорн: У реду. 603 00:34:18,000 --> 00:34:21,592 Шта је за стдлиб? 604 00:34:21,592 --> 00:34:23,010 >> Нисхант: Заборавио сам. 605 00:34:23,010 --> 00:34:23,219 >> ЈАСОН Хирсцххорн: У реду. 606 00:34:23,219 --> 00:34:24,179 Тако укључују стдио. 607 00:34:24,179 --> 00:34:28,630 Шта треба да урадим пре него што Ја почети кодирање? 608 00:34:28,630 --> 00:34:29,710 >> Нисхант: Напишите заглавље? 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 >> Нисхант: Како то да боје? 612 00:34:35,040 --> 00:34:38,060 >> ЈАСОН Хирсцххорн: Како да обојите кодирање? 613 00:34:38,060 --> 00:34:38,570 >> Нисхант: Ја не знам. 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 >> ЈАСОН Хирсцххорн: Саве. 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 Тако је сачували на десктопу као цп.ц. 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 >> Нисхант: Могао би да напишем своје име, име програма, а у циљу 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 >> КУРТ: Па сви капе Ф-И-Л-Е звезда извора. 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 То је као Тумблр. 668 00:36:42,716 --> 00:36:44,610 >> СТУДЕНТСКА 18: Једнако фопен - 669 00:36:44,610 --> 00:36:46,612 >> ЈАСОН Хирсцххорн: Једнако фопен? 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 Аргв суб 1. 677 00:36:55,110 --> 00:36:55,860 >> ЈАСОН Хирсцххорн: Под 1? 678 00:36:55,860 --> 00:36:56,140 >> СТУДЕНТСКА 18: Да. 679 00:36:56,140 --> 00:36:58,540 Аргв отворена конзола 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: Врло слично, али уместо тога С-Р-Ц, да ћеш га звати Д-С-Т. 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: Д Само-С-Т. Да. 689 00:37:20,010 --> 00:37:23,057 А онда аргв, отворену конзолу, 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 Проверите да ли није ни НУЛЛ. 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 >> Арцхер: Ако срц једнако екуалс НУЛЛ или дст једнако екуалс 702 00:37:58,645 --> 00:38:04,590 НУЛЛ, онда сте се вратили - 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 >> Арцхер: Повратак 2? 706 00:38:08,890 --> 00:38:09,760 >> ЈАСОН Хирсцххорн: Повратак 2. 707 00:38:09,760 --> 00:38:14,400 Дакле, ако отворена заграда срц једнако једнак НУЛЛ, или - 708 00:38:14,400 --> 00:38:15,590 шта год да тхинг'с - лулу? 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 Цеви, цеви, дст једнако екуалс НУЛЛ, врати 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 Који тип Ц структуре - 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 >> АВИ: ЗА. 733 00:39:09,960 --> 00:39:11,460 >> ЈАСОН Хирсцххорн: ЗА. 734 00:39:11,460 --> 00:39:15,180 >> АВИ: инт једнак нули. 735 00:39:15,180 --> 00:39:17,360 >> ЈАСОН Хирсцххорн: У реду. 736 00:39:17,360 --> 00:39:18,570 >> АВИ: Овај део нисам сигуран. 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 >> АВИ: Зато што желите величину слика, зар не? 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 И онда, шта ћете урадити јесте Ти би - 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 док не пронађу НУЛЛ - 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: фсцанф? 775 00:40:47,590 --> 00:40:49,110 >> ЈАСОН Хирсцххорн: фсцанф. 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 Чак и једноставније него фсцанф - шта је - 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: То је фреад? 786 00:41:05,380 --> 00:41:06,070 >> ЈАСОН Хирсцххорн: фреад. 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 Какав аргумената не фреад узети? 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 фреад траје? 793 00:41:20,950 --> 00:41:23,710 >> Више студената: Човек фреад. 794 00:41:23,710 --> 00:41:24,740 >> ЈАСОН Хирсцххорн: Човек фреад и фврите. 795 00:41:24,740 --> 00:41:25,980 Изгледа да су се друже. 796 00:41:25,980 --> 00:41:29,589 Дакле фреад узима како много аргумената? 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 "Функција фреад чита н Мемб елементи података, свака величина бајтова 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 >> АВИ: Извадите празнину. 812 00:42:17,720 --> 00:42:20,530 Стави само срц. 813 00:42:20,530 --> 00:42:23,142 Извадите показивач и звезду. 814 00:42:23,142 --> 00:42:26,102 Пут срц. 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 У праву си са СРЦ, али где срц треба да иде? 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 је 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 >> АВИ: Само брзо питање. 897 00:45:21,230 --> 00:45:24,440 Да ли желите да маллоц бафер? 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 >> ЈАСОН Хирсцххорн: Али, да ли желимо да га маллоц? 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 >> ЈАСОН Хирсцххорн: Да ли ми да га маллоц? 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 Ми не треба да га маллоц. 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 Имамо фреад линију. 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: фврите? 931 00:46:33,770 --> 00:46:35,140 >> СТУДЕНТСКА 38: фпринтф? 932 00:46:35,140 --> 00:46:36,010 >> ЈАСОН Хирсцххорн: фпринтф је један. 933 00:46:36,010 --> 00:46:37,260 Шта је још један? 934 00:46:37,260 --> 00:46:37,680 >> СТУДЕНТСКА 39: фврите. 935 00:46:37,680 --> 00:46:38,510 >> ЈАСОН Хирсцххорн: фврите. 936 00:46:38,510 --> 00:46:41,250 И за наше потребе, фврите, које смо овде видели, је 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 Нисхант, можете ли дати ме аргументи? 941 00:46:57,570 --> 00:47:00,570 >> Нисхант: Први иде да буде само бафер. 942 00:47:00,570 --> 00:47:02,210 >> ЈАСОН Хирсцххорн: У реду. 943 00:47:02,210 --> 00:47:06,752 >> Нисхант: други је само ће бити 1. 944 00:47:06,752 --> 00:47:09,510 Трећи ће бити 1. 945 00:47:09,510 --> 00:47:11,470 И четврти ће бити дст. 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 >> ЛУЦИ: фцлосе срц и онда фцлосе дестинација. 960 00:47:47,560 --> 00:47:52,430 >> ЈАСОН Хирсцххорн: фцлосе, отворена заграда, срц, затвори заграда, тачка и зарез. 961 00:47:52,430 --> 00:47:53,680 И фцлосе - 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 >> ЛУЦИ: Отворена заграда, дст а затим тачка и зарез. 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: Мислим да бафер ће бити постављен на НУЛЛ. 994 00:48:59,900 --> 00:49:01,885 >> СТУДЕНТСКА 41: Пуфер се проглашава унутар петље. 995 00:49:01,885 --> 00:49:03,670 >> ЈАСОН Хирсцххорн: Дакле, мислите бафер ће бити постављен на НУЛЛ. 996 00:49:03,670 --> 00:49:05,850 Зашто би бафер може подесити на вредност НУЛЛ? 997 00:49:05,850 --> 00:49:10,420 >> СТУДЕНТСКА 40: Јер када фреад, ви покушавате да ставите 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 Значи мислиш фреад - 1001 00:49:15,550 --> 00:49:19,000 када смо стигли до краја фајл, шта је фреад да уради? 1002 00:49:19,000 --> 00:49:21,230 Мислим да је то питање морамо да схватимо. 1003 00:49:21,230 --> 00:49:21,960 Шта фреад радим? 1004 00:49:21,960 --> 00:49:25,640 Да ли ставити НУЛЛ у бафер, или то уради нешто друго? 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 На успех, фреад и фврите врати број ставки прочитаних или писаних. 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 >> Дакле, за наше потребе, ако достигне фреад крај датотеке, и чита из 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 Дакле, ми знамо да је фреад, када смо стигли до краја датотеке, иде 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 >> АВИ: Можете декларисати променљиву изван петље се зове провера. 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 >> АВИ: А онда можете ставити ИФ изјава после фреад кажем ако 1030 00:50:38,050 --> 00:50:42,600 фреад једнак нули - 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 >> АВИ: Шта је вредност враћа фреад? 1036 00:50:52,410 --> 00:50:54,060 >> ЈАСОН Хирсцххорн: Управо смо отишао да. 1037 00:50:54,060 --> 00:50:55,450 >> АВИ: Како вам се представљају? 1038 00:50:55,450 --> 00:50:57,190 >> ЈАСОН Хирсцххорн: Па то враћа - Хајде да погледајте овде - то враћа 1039 00:50:57,190 --> 00:50:59,340 сизе_т, што је у суштини цео број. 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 Дакле, ако фреад - 1046 00:51:16,450 --> 00:51:16,855 да? 1047 00:51:16,855 --> 00:51:20,330 >> СТУДЕНТСКА 45: не можеш само ставити пуну фреад (бафер, 1, 1, срц) у 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 Дакле, ви предлагање стављање фреад у ту? 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 Дакле, то је оно што Оксхар предложио. 1062 00:51:50,570 --> 00:51:51,930 Ми стварамо нашу бафер. 1063 00:51:51,930 --> 00:51:57,020 Ми ДОК фреад, онда фврите. 1064 00:51:57,020 --> 00:51:59,760 Осврт на ово? 1065 00:51:59,760 --> 00:52:04,050 >> СТУДЕНТСКА 46: Моје једино питање је, да ли би она заправо извршава команду фреад? 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 фреад ће се вратити један бајт и складишти се у бафер. 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 >> Фреад враћа 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 да га маллоц? 1128 00:54:22,670 --> 00:54:23,310 >> ЈАСОН Хирсцххорн: Одлично питање. 1129 00:54:23,310 --> 00:54:26,670 Након што пређемо бафер ван петља, морамо да га маллоц? 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 Тако да не треба да га маллоц. 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: маллоц то? 1154 00:55:30,960 --> 00:55:31,770 >> СТУДЕНТСКА 51: Једнако НУЛЛ? 1155 00:55:31,770 --> 00:55:33,000 >> СТУДЕНТСКА 52: Реци бафер једнако НУЛЛ. 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: Можете да урадите тачку сласх ЦП, тест.ткт. 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 Ми ћемо га звати оут.ткт. 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 Сец кривица. 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: гдб. 1179 00:56:45,990 --> 00:56:47,240 >> ЈАСОН Хирсцххорн: гдб. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 Ми смо покренули гдб писањем гдб дот косу црту, име нашег програма. 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 Ако желим да почне гдб, шта да радим? 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 Н се само ми узима линију по линију. 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 Изгледа фреад проузрокована моја кривица сек. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Знам фреад изазвао моју СЕГ грешка, јер је то био 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 Фреад се дешава, а онда смо били раде неке провере, док. 1202 00:57:40,610 --> 00:57:44,820 Ја сам спреман да се кладим да ДОК провера није узрок мог СЕГ грешка. 1203 00:57:44,820 --> 00:57:46,950 Највероватније, фреад био узрок мог СЕГ грешка. 1204 00:57:46,950 --> 00:57:49,260 Такође видим нешто овде, мемцопи. 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 Звучи као нешто што би се догодило у фреад, можда неки меморија 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 Дакле, бафер је НУЛЛ показивач. 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: 0к0. 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 У овде, унутар бафера, се складишти 0к0. 1236 00:59:17,600 --> 00:59:20,480 То је оно што имамо - подешавање имамо сада. 1237 00:59:20,480 --> 00:59:27,540 Дакле, ово линија, фреад, ставља нешто од извора где? 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 За фреад? 1250 00:59:50,050 --> 00:59:51,450 >> ЈАСОН Хирсцххорн: Па фреад узима показивач. 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 И онда ће се де-референца она негде унутра фреад. 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 Идемо да оставе из ГДБ. 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 >> Како можемо створити оквир који је доступан у фреад. 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 Само уради цхар буффер једнакима карактер. 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 А шта је у фврите? 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 >> Онда имамо позив фреад. 1310 01:01:53,830 --> 01:02:01,300 Шта ли је фреад је потребно бајт из наш фајл и ставља га негде. 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 0к0. 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 Дифф проверава разлике између две датотеке, а ако се врати 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 фреад и узети нешто од фврите. 1364 01:04:15,530 --> 01:04:18,400 И то ствар морао да буде или локални променљива на стек - ви 1365 01:04:18,400 --> 01:04:19,890 Могао сам маллоц'д мало простора. 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, у смислу фреад, има смисла. 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 Назван нешто БИТЕ и то је заиста знак. 1389 01:05:33,410 --> 01:05:37,675 Заправо, чак и бољи приступ Можда су ово - 1390 01:05:37,675 --> 01:05:39,391 уинт. 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 Уинт8_т је увек 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 Дакле, у овом случају, ми заправо желимо да типедеф као да штампа нови тип 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 да би за то да раде, морамо да типедеф год бајт је. 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 Желим да ходам кроз цопи.ц заједно, а онда ћемо разговарати кратко 1456 01:08:44,270 --> 01:08:47,120 о другим деловима проблема сет. 1457 01:08:47,120 --> 01:08:48,899 Дакле, дозволите ми попети цопи.ц. 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 Али ово је цопи.ц, представља темељ за прва два дела 1463 01:09:16,990 --> 01:09:22,340 Проблем сет за входунит.ц, који морате да пишете, и ресизе.ц. 1464 01:09:22,340 --> 01:09:27,050 Рецовер.ц, која је трећа и коначна Део проблема сета, није 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 филе, али то нема никакве везе са цопи.ц. 1468 01:09:34,620 --> 01:09:38,675 Али зато цопи.ц је основа за прва два дела, идемо 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 Дакле, ово је цопи.ц. 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 >> АЛЕЈА: Да ли можете да извадите део сваког пиксела који означава црвено. 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 укуцајте РГБТРИПЛЕ - 1613 01:16:04,570 --> 01:16:08,650 добро, ако смо гледали у бмп.х, шта је РГБТРИПЛЕ? 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 >> ЈАСОН Хирсцххорн: РГБТРИПЛЕ је струцт. 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: РГБТРИПЛЕ.ргбтред? 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: Требало би да буде троструко тачка, уместо РГБТРИПЛЕ тачке? 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