1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON Hirsch: Welkom, almal, tot Week 6. 3 00:00:09,840 --> 00:00:14,790 Ek is bly om julle almal te sien lewend en goed nadat Quiz 0, want ek weet dat 4 00:00:14,790 --> 00:00:15,810 was 'n bietjie rof. 5 00:00:15,810 --> 00:00:18,370 Maar gelukkig, julle almal het ongelooflik goed. 6 00:00:18,370 --> 00:00:21,680 En so dit is wonderlik. 7 00:00:21,680 --> 00:00:25,840 As jy in my artikel, het ek die meeste gegee julle terug jou vasvrae reeds. 8 00:00:25,840 --> 00:00:28,050 >> 'N Paar van julle, ek ontmoet na die klas. 9 00:00:28,050 --> 00:00:32,360 En as jy 'n verlenging student en jy nie jou toets terug ontvang het 10 00:00:32,360 --> 00:00:35,490 nog, jou TF is waarskynlik besig om dit en gradering, en sal dit terug te kry 11 00:00:35,490 --> 00:00:36,490 binnekort na jou toe. 12 00:00:36,490 --> 00:00:39,650 So my verlenging studente wat kyk nou - hopelik lewe - 13 00:00:39,650 --> 00:00:42,880 Ek sal jou vasvrae kry kort as well. 14 00:00:42,880 --> 00:00:45,670 >> Ons agenda vir vandag is soos volg. 15 00:00:45,670 --> 00:00:50,170 Eerste, ons gaan om te gaan oor 'n paar hulpbronne wat CS50 aan u verskaf het. 16 00:00:50,170 --> 00:00:54,590 Ons gaan om te gaan oor Quiz 0 volgende, en Ek sal enige vrae beantwoord enigiemand 17 00:00:54,590 --> 00:00:57,360 het oor spesifieke probleme. 18 00:00:57,360 --> 00:01:02,050 En dan, sal ons gaan oor lêer I / O en probleem stel 5. 19 00:01:02,050 --> 00:01:07,360 Diegene laaste twee onderwerpe sal neem die grootste deel van artikel vandag. 20 00:01:07,360 --> 00:01:11,680 >> Ek het hierdie lys elke week as 'n herinnering aan julle almal, maar van die kern 21 00:01:11,680 --> 00:01:14,650 artikel, ons het net 90 minute - ons nie in staat is om alles te dek wat ek 22 00:01:14,650 --> 00:01:16,280 sou graag te dek vir julle. 23 00:01:16,280 --> 00:01:21,170 Maar ons het 'n ton van die hulpbronne vir julle op te trek as wat jy kry om te weet 24 00:01:21,170 --> 00:01:24,000 die materiaal en werk deur jou probleem sit. 25 00:01:24,000 --> 00:01:30,810 >> 'N herinnering dat ek aanlyn 'n teks boks, die opstel van jou te vul as jy 26 00:01:30,810 --> 00:01:33,250 enige terugvoer vir my, beide positief en 27 00:01:33,250 --> 00:01:35,180 konstruktiewe, oor artikel. 28 00:01:35,180 --> 00:01:38,600 Dit URL is geleë reg hier. 29 00:01:38,600 --> 00:01:43,250 So asseblief, neem 'n oomblik as jy enige terugvoer, hetsy tydens afdeling 30 00:01:43,250 --> 00:01:48,030 of na, of na jy kyk na die video aanlyn, gee my jou terugvoer. 31 00:01:48,030 --> 00:01:52,100 Ek waardeer enige en alle van hulle. 32 00:01:52,100 --> 00:01:55,730 >> Daarom het ek met klein gesprekke met 'n baie van my 33 00:01:55,730 --> 00:01:59,350 studente deur die week - as ek die hand terug vasvrae, praat oor die 34 00:01:59,350 --> 00:02:01,480 Natuurlik, om te sien hoe jy doen. 35 00:02:01,480 --> 00:02:05,120 En een tema oor kom en oor om te praat oor - in 36 00:02:05,120 --> 00:02:05,660 besonder - 37 00:02:05,660 --> 00:02:07,710 probleem sit. 38 00:02:07,710 --> 00:02:13,090 En ek het vasgevang wat tema op die raad nou. 39 00:02:13,090 --> 00:02:16,630 >> In wese is, is daar 'n verskil tussen die draai in iets wat 40 00:02:16,630 --> 00:02:19,590 korrek en iets gedoen wat goed gedoen het. 41 00:02:19,590 --> 00:02:22,920 Die meeste mense is besig met fantastiese in terme van korrektheid - 42 00:02:22,920 --> 00:02:25,460 5's of 4's op al psets. 43 00:02:25,460 --> 00:02:27,930 Die meeste mense kry diegene al die tyd. 44 00:02:27,930 --> 00:02:31,150 >> Maar, net omdat jy dit gedoen het iets reg, beteken nie jy het 45 00:02:31,150 --> 00:02:34,450 iets gedoen as elegant, of doeltreffend, of so skoon as wat jy 46 00:02:34,450 --> 00:02:35,270 kon dit gedoen het. 47 00:02:35,270 --> 00:02:36,790 En dit is wat die ontwerp - 48 00:02:36,790 --> 00:02:39,230 en tot 'n mindere mate, styl - 49 00:02:39,230 --> 00:02:40,450 byle is vir. 50 00:02:40,450 --> 00:02:45,130 So ek stoot julle almal en ander TFS is besig om julle, om nie net sy beurt 51 00:02:45,130 --> 00:02:48,320 in dinge wat reg is, maar draai in die dinge wat goed gekodeer is. 52 00:02:48,320 --> 00:02:53,060 >> Doen nie onnodig vir loops, nie herbereken veranderlikes as 53 00:02:53,060 --> 00:02:53,800 jy hoef te doen. 54 00:02:53,800 --> 00:02:58,520 Byvoorbeeld, terug te kyk na die probleem gestel 4, wanneer die plasing van die bakstene op die 55 00:02:58,520 --> 00:03:03,070 skerm, elke ry - elke baksteen in 'n gegewe ry het dieselfde y-koördinaat - 56 00:03:03,070 --> 00:03:04,390 dieselfde hoogte koördineer. 57 00:03:04,390 --> 00:03:07,930 >> Sodat y-koördinaat het nie nodig om word bereken in die binneland 58 00:03:07,930 --> 00:03:11,070 geneste For lus dat jy waarskynlik gebruik diegene bakstene te plaas op die skerm. 59 00:03:11,070 --> 00:03:14,030 Dit moet net elke bereken tyd wat jy aangeskakel 'n ry, of 60 00:03:14,030 --> 00:03:15,200 verskuif 'n ry. 61 00:03:15,200 --> 00:03:19,760 So sê as daar 10 stene in 'n ry, kan elke baksteen dieselfde het 62 00:03:19,760 --> 00:03:22,260 y-koördinaat en y-koördinaat kan net bereken word 63 00:03:22,260 --> 00:03:23,550 eens en vir almal. 64 00:03:23,550 --> 00:03:27,810 >> Dit hoef nie te bereken 10 keer nie, en dat die berekening behoefte 65 00:03:27,810 --> 00:03:30,220 om te gebeur in die werklike funksie oproep - 66 00:03:30,220 --> 00:03:33,020 die nuwe gracked funksie oproep. 67 00:03:33,020 --> 00:03:37,820 So as dit was 'n bietjie verwarrend vir jy meer generies, dinge wat 68 00:03:37,820 --> 00:03:40,730 hoef nie elke keer te gebeur jy gaan deur 'n VIR lus moet nie 69 00:03:40,730 --> 00:03:42,900 binne-in die FOR-lus, en moet nie gebeur elke keer as jy gaan 70 00:03:42,900 --> 00:03:44,080 deur die FOR-lus. 71 00:03:44,080 --> 00:03:49,270 >> Nog 'n goeie ontwerp voorbeeld het ons gesien in Week 3 vir 15, kan jy hou 72 00:03:49,270 --> 00:03:50,500 spoor van die zero. 73 00:03:50,500 --> 00:03:53,600 So wanneer jy inisialiseer die raad, het jy red - in 'n globale veranderlike, miskien - 74 00:03:53,600 --> 00:03:56,140 die x en y-koördinaat van die zero. 75 00:03:56,140 --> 00:03:57,520 En dan wanneer jy - 76 00:03:57,520 --> 00:04:00,310 in jou skuif funksie, wanneer jy ' 'n suksesvolle beweeg, moet jy werk om die 77 00:04:00,310 --> 00:04:02,040 ligging van die zero. 78 00:04:02,040 --> 00:04:06,240 >> Dit sou red jy uit wat te doen het geneste For loops om te kyk deur die 79 00:04:06,240 --> 00:04:10,700 boord elke keer in jou skuif funksie en vind die nul, of vind die teël, 80 00:04:10,700 --> 00:04:12,460 en dan kyk wat is langs dit. 81 00:04:12,460 --> 00:04:16,329 In plaas daarvan, het jy die plek van die nul, kan jy kyk net bo, onder, 82 00:04:16,329 --> 00:04:21,160 en aan die links en regs van dit, te vind die teël wat jy soek. 83 00:04:21,160 --> 00:04:24,970 >> Dus, in terme van die programme wat ons is skryf, hulle is nooit groot genoeg 84 00:04:24,970 --> 00:04:28,580 dat sommige van hierdie ontwerp besluite te neem werklik gaan belemmer jou 85 00:04:28,580 --> 00:04:31,670 program, of maak dit hardloop stadiger, of miskien selfs loop uit die geheue. 86 00:04:31,670 --> 00:04:35,030 Maar ons is nog steeds besig om julle te skryf as elegante en 87 00:04:35,030 --> 00:04:36,450 doeltreffende kode as moontlik. 88 00:04:36,450 --> 00:04:39,910 >> So as jy nie beland skryf dinge wat 'n aansienlik groter 89 00:04:39,910 --> 00:04:44,660 omvang, sal hulle met 'n goeie geskryf word ontwerp in Benewens die feit dat die korrekte. 90 00:04:44,660 --> 00:04:46,300 So 'n aantal van julle het gebring dat uit. 91 00:04:46,300 --> 00:04:48,560 Dit is iets wat ons soek - iets wat ons gaan om voort te gaan 92 00:04:48,560 --> 00:04:49,840 stoot julle op. 93 00:04:49,840 --> 00:04:52,460 >> As jy ooit enige vrae oor die ontwerp van jou program, voel vry 94 00:04:52,460 --> 00:04:56,870 uit te reik na my, en ek is bly om te loop deur jou program saam met jou, 95 00:04:56,870 --> 00:05:01,320 en wys 'n paar van die ontwerp besluite wat jy gemaak het, en gee jou 'n paar 96 00:05:01,320 --> 00:05:06,240 voorstelle oor hoe om te maak, selfs beter ontwerp besluite te neem. 97 00:05:06,240 --> 00:05:08,870 >> So ons gaan om aan te beweeg te praat oor Quiz 0. 98 00:05:08,870 --> 00:05:11,300 Voordat ons dit doen, doen niemand enige vrae oor wat 99 00:05:11,300 --> 00:05:14,252 Ek het so ver gedek? 100 00:05:14,252 --> 00:05:21,500 >> [Geritsel GERAAS] 101 00:05:21,500 --> 00:05:22,750 >> JASON Hirsch: Sewe sekondes. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 Kom ons praat oor Quiz 0 vir 'n bietjie. 104 00:05:24,970 --> 00:05:26,700 Die meeste van julle het julle Quiz 0 se rug. 105 00:05:26,700 --> 00:05:29,820 As jy dit nie doen nie, hopelik onthou jy dit 'n bietjie. 106 00:05:29,820 --> 00:05:34,770 Maar as jy Quiz 0, dan is jy geneem ook toegang tot die PDF aanlyn in 107 00:05:34,770 --> 00:05:35,890 die monster oplossings. 108 00:05:35,890 --> 00:05:39,480 >> Het enige iemand enige vrae voor Ons spring in die week se materiaal oor 109 00:05:39,480 --> 00:05:41,520 'n spesifieke probleem op Quiz 0 - 110 00:05:41,520 --> 00:05:44,630 waarom die antwoord is wat dit is? 111 00:05:44,630 --> 00:05:47,255 Is enigiemand verward oor enigiets? 112 00:05:47,255 --> 00:05:50,230 Selfs as jy het die probleem reg, maar wil net my om dit te verduidelik 'n bietjie 113 00:05:50,230 --> 00:05:52,640 meer, ek is gelukkig om dit nou te doen. 114 00:05:52,640 --> 00:05:57,800 >> So ek het jou gevra om ouens te voorbereid met 'n paar 115 00:05:57,800 --> 00:05:59,440 gedagtes oor Quiz 0. 116 00:05:59,440 --> 00:06:02,660 So wat wil om ons te kry begin met 'n vraag of 117 00:06:02,660 --> 00:06:04,655 kommentaar oor Quiz 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [VRAESTEL geritsel] 120 00:06:10,410 --> 00:06:11,470 >> JASON Hirsch: Nie almal het perfek. 121 00:06:11,470 --> 00:06:12,720 So weet ek [lag] 122 00:06:12,720 --> 00:06:15,950 Daar het 'n paar vrae te wees oor Quiz 0. 123 00:06:15,950 --> 00:06:27,940 124 00:06:27,940 --> 00:06:28,590 OK. 125 00:06:28,590 --> 00:06:29,210 Ja. 126 00:06:29,210 --> 00:06:29,600 Ompica. 127 00:06:29,600 --> 00:06:30,520 >> OMPICA: nommer 10. 128 00:06:30,520 --> 00:06:33,560 >> JASON Hirsch: nommer 10. 129 00:06:33,560 --> 00:06:35,400 Watter een was nommer 10? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: Die - 131 00:06:35,840 --> 00:06:36,420 >> JASON Hirsch: Ek haven't - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: Die insluit - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON Hirsch: Nommer 10 was agt i - skryf agt tot ek? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Ja. 136 00:06:42,980 --> 00:06:43,630 >> JASON Hirsch: OK. 137 00:06:43,630 --> 00:06:47,390 So 'n vraag wat jy kan hê gevra het, was ek Prescient? 138 00:06:47,390 --> 00:06:48,630 Die antwoord is ja. 139 00:06:48,630 --> 00:06:52,060 In artikel voor die toets, het ek gevra julle albei Sterling om die kode en 140 00:06:52,060 --> 00:06:52,980 agt tot i. 141 00:06:52,980 --> 00:06:54,770 Beide van hulle gebeur verskyn op die quiz. 142 00:06:54,770 --> 00:06:57,510 So hopelik, jy betaal aandag aan dit. 143 00:06:57,510 --> 00:07:02,520 >> En as jy het, dan sou jy waarskynlik goed gedoen op die twee. 144 00:07:02,520 --> 00:07:06,030 Maar agt tot i, het ons nie eintlik kode dit in die klas, maar dit was, weer, 145 00:07:06,030 --> 00:07:07,500 gevra oor die quiz. 146 00:07:07,500 --> 00:07:13,270 So 'n paar dinge te neem daarop toe kodering agt tot i. 147 00:07:13,270 --> 00:07:17,320 Die eerste ding wat, volgens die vraag, was wat jy nodig het om te kyk of die string 148 00:07:17,320 --> 00:07:20,300 was gelyk aan nul. 149 00:07:20,300 --> 00:07:28,060 >> 'N Paar mense het probeer om later op te gaan aan die program as s bracket ek was - 150 00:07:28,060 --> 00:07:30,940 so 'n spesifieke karakter in daardie string - was gelyk aan nul. 151 00:07:30,940 --> 00:07:35,600 Maar onthou, dat null is in wese - dit is goed om te dink aan 152 00:07:35,600 --> 00:07:39,100 nul as 'n nul pointer - 'n verwysing na zero - 153 00:07:39,100 --> 00:07:40,920 iewers in die geheue waar jy kan nooit toegang te verkry. 154 00:07:40,920 --> 00:07:44,730 >> So as daar iets is gelyk aan nul, jy weet dat dit nie geïnisialiseer is, 155 00:07:44,730 --> 00:07:46,430 of daar is niks. 156 00:07:46,430 --> 00:07:50,950 So is 'n kar ster, s bracket ek is 'n kar. 157 00:07:50,950 --> 00:07:57,410 So maak dit sin is te vergelyk met nul is, maar nie s bracket i te null. 158 00:07:57,410 --> 00:07:59,390 Maar weer - so dit was die eerste ding wat dat jy veronderstel is om te doen - 159 00:07:59,390 --> 00:08:03,510 check om seker te maak dat jy eintlik 'n ware string. 160 00:08:03,510 --> 00:08:08,020 >> Volgende, moet jy wou om deur te gaan elke karakter in die string. 161 00:08:08,020 --> 00:08:12,500 En so dit sou wees soos 'n s bracket Ek, byvoorbeeld, as ek jou Iterator. 162 00:08:12,500 --> 00:08:17,250 En neem dat die karakter, en kry sy werklike waarde. 163 00:08:17,250 --> 00:08:21,800 Jy het dit gestoor as 'n kar nie, maar die ASCII waarde vir nul - 164 00:08:21,800 --> 00:08:23,010 zero as 'n karakter - 165 00:08:23,010 --> 00:08:25,450 is nie eintlik die heelgetal nul. 166 00:08:25,450 --> 00:08:28,700 Dit is 'n ander nommer wat jy kan kyk in die ASCII-tabel. 167 00:08:28,700 --> 00:08:30,790 >> So 'n manier om te stel vir die - waarskynlik die beste manier is om vir 168 00:08:30,790 --> 00:08:33,760 dat - is trek uit dit die karakter waarde - 169 00:08:33,760 --> 00:08:35,140 nul as 'n karakter. 170 00:08:35,140 --> 00:08:38,490 So minus enkele aanhaling, nul, 'n ander enkele aanhaling. 171 00:08:38,490 --> 00:08:44,620 Dit sal doen wat jy getal as 'n kar, en kry dit gelyk aan 172 00:08:44,620 --> 00:08:46,720 die nommer as 'n werklike heelgetal. 173 00:08:46,720 --> 00:08:50,300 >> En dit is baie soortgelyk aan die benadering 'n klomp mense het in die 174 00:08:50,300 --> 00:08:52,800 probleem stel 2, met die keiser en Viginere - 175 00:08:52,800 --> 00:08:55,160 diegene getalle, wanneer jy was roterende hulle. 176 00:08:55,160 --> 00:08:59,210 So nadat jy dit as 'n aantal van nul tot nege, dan - afhangende van 177 00:08:59,210 --> 00:09:02,750 waar dit gaan in die uiteindelike nommer - wat jy nodig het om dit te vermeerder 178 00:09:02,750 --> 00:09:04,120 deur 'n krag van 10. 179 00:09:04,120 --> 00:09:07,340 >> Sommige mense het van die terug na die voor, en hulle het vermeerder die individu 180 00:09:07,340 --> 00:09:08,940 getal deur 'n mag van 10. 181 00:09:08,940 --> 00:09:11,160 Sommige mense verskuif vanaf die voor na agter - 182 00:09:11,160 --> 00:09:14,430 en so het die hoogste nommers bestel eerste - 183 00:09:14,430 --> 00:09:18,190 en wil red, wat in 'n globale teller-veranderlike. 184 00:09:18,190 --> 00:09:20,880 En dan elke keer deur die OM lus, vermeerder wat reuse globale 185 00:09:20,880 --> 00:09:25,640 werk veranderlike met 10, te maak ruimte vir die volgende kar. 186 00:09:25,640 --> 00:09:28,750 >> So dit was 'n bietjie verwarrend sonder my is dit op die bord skryf. 187 00:09:28,750 --> 00:09:31,550 Maar die monster oplossing is beskikbaar vir jou. 188 00:09:31,550 --> 00:09:32,870 Maar dit was die groot dinge Ons is op soek na. 189 00:09:32,870 --> 00:09:36,400 Ook 'n tjek om seker te maak dat elke individuele karakter was inderdaad 'n 190 00:09:36,400 --> 00:09:39,780 karakter tussen nul en nege, en nie 'n ander karakter, soos 'n A, 191 00:09:39,780 --> 00:09:41,160 byvoorbeeld. 192 00:09:41,160 --> 00:09:43,150 >> Dit was die dinge wat ons is op soek na in die vraag. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 Maak dit jou vraag? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: Ja. 196 00:09:49,320 --> 00:09:50,240 >> JASON Hirsch: OK. 197 00:09:50,240 --> 00:09:53,940 Is daar enige ander vrae oor Quiz 0? 198 00:09:53,940 --> 00:09:55,440 Wat van die opstel? 199 00:09:55,440 --> 00:09:56,740 Almal saam te stel reg? 200 00:09:56,740 --> 00:09:58,370 No 201 00:09:58,370 --> 00:09:58,840 Daar was 'n - 202 00:09:58,840 --> 00:10:01,010 [Lag] 203 00:10:01,010 --> 00:10:03,265 Enige vrae oor die samestelling proses? 204 00:10:03,265 --> 00:10:06,050 205 00:10:06,050 --> 00:10:06,966 Sjoe. 206 00:10:06,966 --> 00:10:11,090 >> [VRAESTEL geritsel] 207 00:10:11,090 --> 00:10:11,520 >> JASON Hirsch: Ja. 208 00:10:11,520 --> 00:10:11,700 Michael. 209 00:10:11,700 --> 00:10:14,140 >> MICHAEL: Is getal 7 - ewekansige? 210 00:10:14,140 --> 00:10:16,500 >> JASON Hirsch: Nommer 7. 211 00:10:16,500 --> 00:10:20,670 Nommer 7 is 'n ewekansige heelgetal. 212 00:10:20,670 --> 00:10:21,110 Uitstekend. 213 00:10:21,110 --> 00:10:25,630 So jy kry 'n heelgetal n en 'n heelgetal b, en jy wil 'n ewekansige 214 00:10:25,630 --> 00:10:28,710 heelgetal tussen a en b. 215 00:10:28,710 --> 00:10:31,740 Ons kan eintlik skryf hierdie een op die raad, want hierdie een 216 00:10:31,740 --> 00:10:33,320 was een lyn van kode - 217 00:10:33,320 --> 00:10:34,390 een manier om dit te doen. 218 00:10:34,390 --> 00:10:37,810 >> So ons gegee drand as 'n funksie wat ons kan gebruik. 219 00:10:37,810 --> 00:10:38,820 En wat beteken drand - 220 00:10:38,820 --> 00:10:40,290 die veronderstelling dat dit is al gekeurde - 221 00:10:40,290 --> 00:10:42,316 wat beteken drand terugkeer? 222 00:10:42,316 --> 00:10:44,840 >> MICHAEL: 'n float tussen 0,0 en 1,0. 223 00:10:44,840 --> 00:10:45,530 >> JASON Hirsch: 'n nommer - ja. 224 00:10:45,530 --> 00:10:47,910 'N getal tussen 0 en 1. 225 00:10:47,910 --> 00:10:51,760 En so het ons B en 'n. 226 00:10:51,760 --> 00:10:55,480 En dan moet ons ons ewekansige getal tussen 0 en 1 aan ons gegee deur drand. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 Sommige mense probeer b te sit, of b minus 'n, of iets in daardie 229 00:11:06,630 --> 00:11:07,960 hakies. 230 00:11:07,960 --> 00:11:11,210 Dit sou beteken dat hulle argumente aan hierdie funksie. 231 00:11:11,210 --> 00:11:13,450 >> drand nie enige argumente te neem - soos getString doen 232 00:11:13,450 --> 00:11:14,330 geen argumente neem. 233 00:11:14,330 --> 00:11:16,600 So dit is net oop paren, naby hakie - en dat, self, is 234 00:11:16,600 --> 00:11:17,330 die funksie oproep. 235 00:11:17,330 --> 00:11:19,770 En wat gee jou 'n aantal tussen 0 en 1. 236 00:11:19,770 --> 00:11:22,820 Natuurlik, ons het 'n hele reeks dat getalle kan wees in 237 00:11:22,820 --> 00:11:28,470 >> Sê, as b is 10 en 'n 5 is, het ons regtig wil 'n getal met 'n reeks van 5. 238 00:11:28,470 --> 00:11:36,940 So die volgende ding wat ons moet doen is om vermenigvuldig dit met die reeks b minus a. 239 00:11:36,940 --> 00:11:40,380 So die veronderstelling dat is vermenigvuldig. 240 00:11:40,380 --> 00:11:42,590 En dit sal ons 'n aantal binne 'n gegewe reeks. 241 00:11:42,590 --> 00:11:46,610 En dat spesifieke reeks synde die verskil tussen b minus a. 242 00:11:46,610 --> 00:11:50,030 >> En uiteindelik, dit sal net gee dit uit - sê die reeks tussen B minus 'n 243 00:11:50,030 --> 00:11:52,520 5 is, wat sal ons 'n gee getal van 0 tot 5. 244 00:11:52,520 --> 00:11:56,000 Maar as 'n is in werklikheid 5, moet ons n hupstoot te gee Hierdie reeks tot waar dit 245 00:11:56,000 --> 00:12:01,380 eintlik veronderstel is om te wees, deur die toevoeging van 'n. 246 00:12:01,380 --> 00:12:02,580 So wat kry die logika reg. 247 00:12:02,580 --> 00:12:03,745 En dan, sou jy 'n ander vraag? 248 00:12:03,745 --> 00:12:04,547 >> MICHAEL: No 249 00:12:04,547 --> 00:12:06,010 Ek voel net regtig stom nou. 250 00:12:06,010 --> 00:12:06,405 [Lag] 251 00:12:06,405 --> 00:12:06,730 >> JASON Hirsch: No 252 00:12:06,730 --> 00:12:08,640 Moenie voel regtig dom. 253 00:12:08,640 --> 00:12:10,560 'N Aantal mense het gesukkel met hierdie vraag. 254 00:12:10,560 --> 00:12:13,920 En dan, die ander vraag is, drand, jy sê, gee jou 'n float - 255 00:12:13,920 --> 00:12:14,940 gee 'n float. 256 00:12:14,940 --> 00:12:18,020 Maar hierdie funksie eintlik gevra vir 'n heelgetal te terugbesorg word. 257 00:12:18,020 --> 00:12:23,700 >> Jy hoef nie hierdie uitdruklik gooi tot 'n heelgetal, want hierdie 258 00:12:23,700 --> 00:12:29,090 bedrywighede sal dit as al 'n verrassing dryf - as 'n drywende punt nommer. 259 00:12:29,090 --> 00:12:31,570 Soos hierdie sal - selfs al is dit 'n heelgetal is, word dit 260 00:12:31,570 --> 00:12:32,890 korrek vermenigvuldig. 261 00:12:32,890 --> 00:12:34,000 Al die vermenigvuldiging sal werk. 262 00:12:34,000 --> 00:12:35,060 Jy hoef nie om dit hier te gooi. 263 00:12:35,060 --> 00:12:36,480 In werklikheid is, moet jy nie gooi dit. 264 00:12:36,480 --> 00:12:37,310 >> Dit sou - 265 00:12:37,310 --> 00:12:40,750 As jy wil 'n aantal gooi dit is tussen 0 en 1 - 266 00:12:40,750 --> 00:12:42,680 'n ewekansige getal, 'n drywende punt - 267 00:12:42,680 --> 00:12:47,850 dan sal dit nie net 0 of 1 wees, so jy verloor al van daardie presisie. 268 00:12:47,850 --> 00:12:50,120 Maar aan die einde, wanneer jy terugkeer, dit outomaties kry 269 00:12:50,120 --> 00:12:51,620 terug gestuur as 'n heelgetal. 270 00:12:51,620 --> 00:12:56,870 So jy hoef nie te doen nie wat beslissende jouself. 271 00:12:56,870 --> 00:13:00,810 >> So dit was die antwoord op daardie vraag, nommer 7. 272 00:13:00,810 --> 00:13:02,190 Enige ander vrae oor Quiz 0? 273 00:13:02,190 --> 00:13:03,300 Ja, Annie. 274 00:13:03,300 --> 00:13:05,050 >> ANNIE: Wanneer gebruik ons ​​rekursiewe - 275 00:13:05,050 --> 00:13:07,850 Wanneer gebruik ons ​​iteratiewe sirkelroetes? 276 00:13:07,850 --> 00:13:10,210 >> JASON Hirsch: Wanneer gebruik jy rekursiewe - sodat meer algemeen, die 277 00:13:10,210 --> 00:13:14,110 voor-en nadele van rekursie teenoor 'n iteratiewe benadering. 278 00:13:14,110 --> 00:13:17,110 Kan iemand bied 'n pro of 'n con? 279 00:13:17,110 --> 00:13:19,460 Asseblief? 280 00:13:19,460 --> 00:13:20,140 Kan iemand nie. 281 00:13:20,140 --> 00:13:22,526 Wie kan 'n pro of 'n con bied? 282 00:13:22,526 --> 00:13:26,963 >> [VRAESTEL geritsel] 283 00:13:26,963 --> 00:13:29,730 >> Student 1: Rekursiewe minder Kodering - minder tik? 284 00:13:29,730 --> 00:13:33,170 >> JASON Hirsch: So oor die algemeen, rekursie veral 'n funksie - 285 00:13:33,170 --> 00:13:35,750 of 'n algoritme soos merge soort - wat homself verleen 286 00:13:35,750 --> 00:13:37,300 'n rekursiewe benadering - 287 00:13:37,300 --> 00:13:40,710 dalk meer eenvoudig rekursief kode. 288 00:13:40,710 --> 00:13:43,940 En net meer sin maak om dit te rekursief doen nie. 289 00:13:43,940 --> 00:13:46,230 So wat sou wees om 'n pro te rekursie. 290 00:13:46,230 --> 00:13:46,610 Ander? 291 00:13:46,610 --> 00:13:47,467 Ja? 292 00:13:47,467 --> 00:13:49,240 >> STUDENT 2: Con te rekursie - 293 00:13:49,240 --> 00:13:50,940 Dit maak gebruik van meer geheue. 294 00:13:50,940 --> 00:13:52,200 >> JASON Hirsch: So presies reg. 295 00:13:52,200 --> 00:13:55,720 'N rekursiewe funksie sal hou te voeg stapel rame na die stapel. 296 00:13:55,720 --> 00:13:59,690 So as jy wat op 'n baie getalle, en het dit te noem 297 00:13:59,690 --> 00:14:02,560 funksioneer 'n baie, dan sal jy beslis neem meer geheue, terwyl 298 00:14:02,560 --> 00:14:05,810 'n iteratiewe benadering sal slegs die een het stapel raam op die stapel, want 299 00:14:05,810 --> 00:14:08,420 dit alles gebeur binne een funksie. 300 00:14:08,420 --> 00:14:11,010 >> Enige ander voor-en nadele? 301 00:14:11,010 --> 00:14:11,500 Ja. 302 00:14:11,500 --> 00:14:12,550 >> STUDENT 3: Voor vir rekursie. 303 00:14:12,550 --> 00:14:15,950 Jy hoef nie te bepaal in bevorder hoeveel keer die 304 00:14:15,950 --> 00:14:17,660 kode moes herhaal word. 305 00:14:17,660 --> 00:14:22,810 Jy kan 'n voorafbepaalde aantal het tye wat jy hoef te Itereer, dan 306 00:14:22,810 --> 00:14:26,420 rekursie is beter, want dit neem dat die resultaat. 307 00:14:26,420 --> 00:14:27,780 >> JASON Hirsch: Ek dink dit is waar. 308 00:14:27,780 --> 00:14:30,770 Maar ek dink in beide gevalle jy sou nooit - 309 00:14:30,770 --> 00:14:33,290 sou jy waarskynlik 'n paar toevoer van die gebruiker. 310 00:14:33,290 --> 00:14:35,990 Of om hierdie funksie sal 'n paar insette het wat sal bepaal hoeveel keer dit 311 00:14:35,990 --> 00:14:36,730 moet loop. 312 00:14:36,730 --> 00:14:39,520 So oor die algemeen, sal jy nie hard-kode - selfs in 'n iteratiewe benadering - hoe 313 00:14:39,520 --> 00:14:40,940 baie keer dat lus moet uitgevoer word. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Het jy 'n ander jy was dink oor, Annie? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 So dit is waarskynlik die twee - 318 00:14:51,650 --> 00:14:54,370 die grootste pro en die grootste be na 'n rekursiewe versus 319 00:14:54,370 --> 00:14:57,080 'n iteratiewe benadering. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 Enigiets anders op Quiz 0? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> Kom ons beweeg aan. 324 00:15:09,920 --> 00:15:15,260 File I / O. Daar is 'n wonderlike kort Hierdie week op lêer I / O wat hopelik 325 00:15:15,260 --> 00:15:19,270 jy het gesien hoe verskeie tye en bewonder. 326 00:15:19,270 --> 00:15:22,910 Baie van die werk gegaan het in daardie, en ek het hoor dit is intens nuttig. 327 00:15:22,910 --> 00:15:25,740 Ek het ook die skakel op hierdie skuif, in die geval wat jy het nie 'n 328 00:15:25,740 --> 00:15:29,160 kans om dit te sien 10 keer. 329 00:15:29,160 --> 00:15:35,280 >> So, gaan ons kortliks gaan oor die groot stappe tot die opening en werk 330 00:15:35,280 --> 00:15:38,400 met lêers, en dan gaan ons duik in 'n kodering probleem voor 331 00:15:38,400 --> 00:15:40,400 die ondersoek van die probleem stel. 332 00:15:40,400 --> 00:15:44,330 So weer, ek gaan om dit te sit op die skerm, maar ek gaan om te praat vir 333 00:15:44,330 --> 00:15:47,630 net 'n minuut oor wat ons is doen hier met die lêer I/O-- 334 00:15:47,630 --> 00:15:49,090 wat beteken dit? 335 00:15:49,090 --> 00:15:55,280 >> Dit beteken dat ons kan skep ons programme, en dan het ons programme 336 00:15:55,280 --> 00:16:00,370 uitgang, en nie 'n impak op gemaak het die wêreld buite ons program. 337 00:16:00,370 --> 00:16:04,630 Maar toe ons begin werk met lêers - beide lees in en skep 338 00:16:04,630 --> 00:16:10,460 hulle - ons kan 'n effek hê op die wêreld buite ons program. 339 00:16:10,460 --> 00:16:15,440 >> Net soos as Microsoft Word nie in staat was enige Word-dokumente te maak, dan 340 00:16:15,440 --> 00:16:18,710 keer Microsoft Word ophou, al jou werk sou gegaan word, en dit sou 341 00:16:18,710 --> 00:16:19,740 werklik nutteloos. 342 00:16:19,740 --> 00:16:23,620 Ons uiteindelik wil nie in staat wees om te skryf programme wat kan beïnvloed die 343 00:16:23,620 --> 00:16:31,350 wêreld rondom hulle, beide deur in komplekse insette - in terme van lêers en 344 00:16:31,350 --> 00:16:37,080 via lêers, en ook die skep van 'n interessante en dwingende uitgange - 345 00:16:37,080 --> 00:16:39,520 in terme van verskillende vorme van lêers. 346 00:16:39,520 --> 00:16:43,730 >> So dit is hoekom ons is besig om te leer hoe om te werk met lêers. 347 00:16:43,730 --> 00:16:47,080 Meer spesifiek, wat ons doen is as volg. 348 00:16:47,080 --> 00:16:47,680 Dit is baie eenvoudig. 349 00:16:47,680 --> 00:16:51,530 Daar is slegs 'n paar van die stappe, en hulle hier op hierdie kode gelys. 350 00:16:51,530 --> 00:16:55,130 So ons gaan deur te gaan hierdie kode reël vir reël. 351 00:16:55,130 --> 00:16:57,630 >> Eerstens, jy sien uitgelig - 352 00:16:57,630 --> 00:17:01,330 wanneer jy werk met 'n lêer, ongeag van die tipe lêer dit is, 353 00:17:01,330 --> 00:17:02,670 jy nodig het om dit oop te maak. 354 00:17:02,670 --> 00:17:05,130 En dit is met 'n oproep om fopen - 355 00:17:05,130 --> 00:17:05,950 reg hier. 356 00:17:05,950 --> 00:17:07,980 Jy sluit die naam van die lêer. 357 00:17:07,980 --> 00:17:11,930 As die lêer is nie in jou gids, of die gids waar die program 358 00:17:11,930 --> 00:17:15,910 woon, dan moet jy ook in te sluit 'n pad na die plek waar die lêer is. 359 00:17:15,910 --> 00:17:19,099 >> Ons gaan om te aanvaar dat hierdie lêer genaamd "text.txt" - 360 00:17:19,099 --> 00:17:24,220 'n eenvoudige teks dokument - is in die dieselfde gids as hierdie program is. 361 00:17:24,220 --> 00:17:26,859 So dis 'n ander ding in te hou gedagte - dat as jy 'n lêer oop te maak 362 00:17:26,859 --> 00:17:30,050 iewers anders, wat jy eintlik nodig het sy plek in te sluit. 363 00:17:30,050 --> 00:17:33,520 >> Tweedens, kan jy 'n argument slaag om fopen, en dit is wat jy wil doen, 364 00:17:33,520 --> 00:17:34,620 met die dossier. 365 00:17:34,620 --> 00:17:38,450 Daar is drie hoof argumente wat jy gaan om te slaag om fopen. 366 00:17:38,450 --> 00:17:40,060 Wie kan my die drie? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 Wie kan my een van hulle? 369 00:17:47,130 --> 00:17:48,130 Ja. 370 00:17:48,130 --> 00:17:50,010 >> STUDENT 4: Die lêer naam? 371 00:17:50,010 --> 00:17:50,440 >> JASON Hirsch: Jammer. 372 00:17:50,440 --> 00:17:55,490 Drie belangrikste argumente wat jy kan slaag as die tweede argument te fopen. 373 00:17:55,490 --> 00:17:57,060 Jy is reg - die lêer se naam is die eerste argument. 374 00:17:57,060 --> 00:18:01,620 Maar die tweede argument te fopen is gewoonlik drie stringe, en - ja. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> Aleja: A vir aanlas. 377 00:18:03,490 --> 00:18:06,840 >> JASON Hirsch: A, as jy wil voeg 'n lêer wat reeds bestaan. 378 00:18:06,840 --> 00:18:07,810 >> STUDENT 5: R om te lees. 379 00:18:07,810 --> 00:18:09,930 >> JASON Hirsch: R, as jy wil om te lees van 'n lêer. 380 00:18:09,930 --> 00:18:10,670 >> STUDENT 6: W vir skryf. 381 00:18:10,670 --> 00:18:12,840 >> JASON Hirsch: en W, as jy wil 'n lêer te skryf. 382 00:18:12,840 --> 00:18:17,570 So in hierdie geval, ons skryf die lêer, sodat ons 'n w. 383 00:18:17,570 --> 00:18:22,360 Jy dit oopmaak, moet jy ook om te red wat lêer iewers, en dit is met die 384 00:18:22,360 --> 00:18:26,000 kode aan die linkerkant van die opdrag operateur - 385 00:18:26,000 --> 00:18:31,220 Ek is die skep van 'n verwysing na 'n lêer genoem word, in hierdie geval, lêer. 386 00:18:31,220 --> 00:18:36,070 >> Ons gaan nie te bekommer wat hierdie hoofletters FILE ding is. 387 00:18:36,070 --> 00:18:40,600 Voldoende om te sê, dit is 'n lang stroom van nulle en ene. 388 00:18:40,600 --> 00:18:44,970 En dit is hoe ons gaan bedryf het en dit verstaan. 389 00:18:44,970 --> 00:18:47,300 >> Die volgende ding wat ons nodig het om te doen nie - en dit is ongelooflik belangrik - 390 00:18:47,300 --> 00:18:49,070 - wanneer jy 'n lêer oop te maak 391 00:18:49,070 --> 00:18:54,250 Trouens, wanneer jy malloc noem, want dit Byvoorbeeld, en kry 'n paar geheue en probeer 392 00:18:54,250 --> 00:18:57,980 en stoor dit in 'n wyser, het jy altyd wil om te kyk om seker te maak dat 393 00:18:57,980 --> 00:19:00,230 funksie het nie weer null. 394 00:19:00,230 --> 00:19:05,230 >> So in hierdie geval, is ons om toe te maak seker te maak dat ons eintlik het die 395 00:19:05,230 --> 00:19:10,230 korrek lêer, en daar was geen fout in ons program. 396 00:19:10,230 --> 00:19:15,160 Volgende, wanneer ons nagegaan om seker te maak dat ons 'n werkende lêer, kan ons 397 00:19:15,160 --> 00:19:18,520 skryf, of lees, of voeg by die lêer. 398 00:19:18,520 --> 00:19:24,270 In hierdie geval, is ek net te druk een lyn na hierdie lêer. 399 00:19:24,270 --> 00:19:25,450 >> Hoe weet ek dit? 400 00:19:25,450 --> 00:19:27,990 Wel, ek is met behulp van hierdie funksie genoem fprintf. 401 00:19:27,990 --> 00:19:30,970 Al die funksies wat jy sal gebruik word om toe te skryf aan, of die lees van, of 402 00:19:30,970 --> 00:19:34,950 manipuleer van lêers sal soortgelyk wees funksies wat jy nog nooit gesien nie, maar 403 00:19:34,950 --> 00:19:38,420 begin met die letter F, staan ​​vir die lêer. 404 00:19:38,420 --> 00:19:43,440 En fprintf, in teenstelling met ons gewone druk inligting, neem 'n ekstra argument, 405 00:19:43,440 --> 00:19:47,800 en dit is die lêer waar jy wil hierdie lyn te druk. 406 00:19:47,800 --> 00:19:50,640 >> Ek niks nie hoef te die reg van ohai. 407 00:19:50,640 --> 00:19:52,860 Ek het nie die derde nie argument te printf - 408 00:19:52,860 --> 00:19:57,030 of die tweede argument te printf, die Derde argument te fprintf, want ek 409 00:19:57,030 --> 00:19:59,480 het geen plekhouers hier. 410 00:19:59,480 --> 00:20:01,070 Ek is nie insluitend enige veranderlikes. 411 00:20:01,070 --> 00:20:06,070 Maar weereens, fprintf en al hierdie lêer funksies wat werk met lêers 412 00:20:06,070 --> 00:20:09,820 is oor die algemeen gaan om die lêer te moet waarop hulle werk. 413 00:20:09,820 --> 00:20:15,960 >> Ten slotte, die laaste belangrike ding om te doen, is om die lêer te sluit, net soos 414 00:20:15,960 --> 00:20:19,530 met - wanneer ons malloc iets, ons wil om iets te bevry, sodat ons 415 00:20:19,530 --> 00:20:22,730 'n geheue lek - ons wil ons lêer te sluit. 416 00:20:22,730 --> 00:20:28,180 Indien hierdie program afgesluit sonder sluitingsdatum die lêer, is die kans niks sou gaan 417 00:20:28,180 --> 00:20:30,050 verkeerd is, veral as dit was 'n klein lêer. 418 00:20:30,050 --> 00:20:35,020 >> Maar dit is beslis 'n goeie kodering styl en oefen om altyd sluit jou lêer 419 00:20:35,020 --> 00:20:38,050 wanneer jy klaar is om dit te gebruik. 420 00:20:38,050 --> 00:20:43,630 So dit is die basiese beginsels van die lêer I / O. Jy het waarskynlik gesien wat voor of 421 00:20:43,630 --> 00:20:45,710 gekyk het dit in daardie fantastiese kort. 422 00:20:45,710 --> 00:20:48,410 Het enige iemand enige vrae het, voordat ons gaan in 'n praktyk kodering 423 00:20:48,410 --> 00:20:51,800 probleme, sowat lêer I / O of die stappe Ek het net gegaan oor? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [TIK klanke] 426 00:21:03,162 --> 00:21:04,150 >> JASON Hirsch: Het jy het 'n vraag, Avi? 427 00:21:04,150 --> 00:21:04,660 >> AVI: No 428 00:21:04,660 --> 00:21:04,740 >> JASON Hirsch: OK. 429 00:21:04,740 --> 00:21:06,746 Ek gaan 'n ander om te wag sewe sekondes. 430 00:21:06,746 --> 00:21:07,590 [Lag] 431 00:21:07,590 --> 00:21:08,620 Dit is 'n baie goeie punt. 432 00:21:08,620 --> 00:21:10,750 Julle het net nie hou nie om vrae te vra. 433 00:21:10,750 --> 00:21:11,660 Dit is fyn. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 So ons eerste oefening probleem is, ons is gaan die funksie van te dupliseer 436 00:21:17,620 --> 00:21:22,330 'n command line instrument wat jy waarskynlik gebruik voor - kopie - 437 00:21:22,330 --> 00:21:23,500 die kopie hulpmiddel. 438 00:21:23,500 --> 00:21:28,050 As jy tik CP en dan beweeg dit twee argumente in jou terminale, kan jy 439 00:21:28,050 --> 00:21:28,980 kopieer 'n lêer. 440 00:21:28,980 --> 00:21:31,220 En dit is wat ons gaan om nou te skryf. 441 00:21:31,220 --> 00:21:35,830 >> So weer, af te lees van hierdie skuif, ek wil jy 'n program wat neem om te skryf 442 00:21:35,830 --> 00:21:38,130 twee en slegs twee opdrag-lyn argumente - 443 00:21:38,130 --> 00:21:40,750 'n bron lêer en 'n bestemming lêer - 444 00:21:40,750 --> 00:21:44,590 en afskrifte van die inhoud van die bron lêer na die bestemming lêer 445 00:21:44,590 --> 00:21:46,960 een greep op 'n tyd. 446 00:21:46,960 --> 00:21:48,510 So dit is 'n baie om te vra. 447 00:21:48,510 --> 00:21:52,200 >> Weereens, 'n goeie benadering tot hierdie is om te nie reguit na die C-kode, maar 448 00:21:52,200 --> 00:21:54,280 breek dit af in 'n paar van die stappe. 449 00:21:54,280 --> 00:21:58,400 Eerstens, dink oor die logika - presies wat ek vra om te doen - 450 00:21:58,400 --> 00:22:00,620 en verstaan ​​al die stappe vir hierdie probleem. 451 00:22:00,620 --> 00:22:04,410 Nie in C nie, net in 'n paar pseudokode, of selfs 'n geestelike model van 452 00:22:04,410 --> 00:22:06,030 wat gaan aan. 453 00:22:06,030 --> 00:22:10,050 >> Volgende, wanneer jy die pseudokode af, uit te vind hoe die pseudokode 454 00:22:10,050 --> 00:22:14,600 kaarte op gereedskap en dinge wat ons het geleer om te gebruik in C. 455 00:22:14,600 --> 00:22:19,070 >> En uiteindelik, wanneer jy alles wat saam, dan kan jy die probleem kode. 456 00:22:19,070 --> 00:22:23,370 Neem 5 tot 10 minute tot werk op hierdie probleem. 457 00:22:23,370 --> 00:22:25,800 Ek sal die instruksies sit terug in 'n tweede. 458 00:22:25,800 --> 00:22:27,990 En dan gaan ons oor te gaan die pseudokode, en die kode 459 00:22:27,990 --> 00:22:29,230 leef dit as 'n groep. 460 00:22:29,230 --> 00:22:31,640 >> As jy enige vrae het terwyl jy werk op hierdie, voel vry om in te samel 461 00:22:31,640 --> 00:22:34,260 jou hand, en ek sal kom rondom en hulle antwoord. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> STUDENT 7: Kan ek krap 'n stukkie papier? 464 00:22:39,330 --> 00:22:41,537 >> JASON Hirsch: Wat gaan aan? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [TIK klanke] 467 00:26:48,043 --> 00:26:48,730 >> JASON Hirsch: OK. 468 00:26:48,730 --> 00:26:51,710 Kom ons gaan oor die pseudokode eerste en dan sal ek gee jou 'n paar 469 00:26:51,710 --> 00:26:52,960 minute te voltooi kodering. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> Wie wil om te begin my af met die eerste reël van die 472 00:26:58,650 --> 00:27:00,030 pseudokode vir hierdie funksie? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> STUDENT 8: Maak seker dat jy twee lêers is gegee. 475 00:27:05,740 --> 00:27:06,990 >> JASON Hirsch: OK. 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 En as ons nie? 478 00:27:22,990 --> 00:27:25,974 >> STUDENT 8: Ek sou terugkeer 0. 479 00:27:25,974 --> 00:27:27,872 >> JASON Hirsch: Moet ons terugkeer 0? 480 00:27:27,872 --> 00:27:30,182 >> STUDENT 8: Terug a - 481 00:27:30,182 --> 00:27:30,650 uitwissing. 482 00:27:30,650 --> 00:27:30,850 Jammer. 483 00:27:30,850 --> 00:27:31,210 >> JASON Hirsch: Ja. 484 00:27:31,210 --> 00:27:32,710 Waarskynlik nie 0. 485 00:27:32,710 --> 00:27:34,680 Omdat 0 beteken dat alles goed was. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 So dit is die eerste reël van pseudokode. 488 00:27:36,730 --> 00:27:38,715 Wie het die tweede lyn van pseudokode? 489 00:27:38,715 --> 00:27:40,630 >> STUDENT 9: Open beide die lêers? 490 00:27:40,630 --> 00:27:41,880 >> JASON Hirsch: Maak beide lêers. 491 00:27:41,880 --> 00:27:49,970 492 00:27:49,970 --> 00:27:50,920 OK? 493 00:27:50,920 --> 00:27:52,850 >> STUDENT 10: Toets om te sien As die lêer is NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON Hirsch: Gaan maak seker nie, is NULL. 496 00:28:12,580 --> 00:28:15,800 As 'n eenkant - 497 00:28:15,800 --> 00:28:17,540 streep 0 - 498 00:28:17,540 --> 00:28:18,887 is dat NULL? 499 00:28:18,887 --> 00:28:20,080 >> STUDENT 11: No 500 00:28:20,080 --> 00:28:21,190 >> JASON Hirsch: Dit is nie NULL. 501 00:28:21,190 --> 00:28:23,400 Dit is bekend as die NULL Terminator. 502 00:28:23,400 --> 00:28:25,580 Dit is eintlik gespel met net een l. 503 00:28:25,580 --> 00:28:28,580 So nagaan iets teen dat - dit is eintlik 'n karakter - 504 00:28:28,580 --> 00:28:31,710 so nagaan iets teen wat nie dieselfde as om te kyk of dit 505 00:28:31,710 --> 00:28:32,690 gelyk NULL. 506 00:28:32,690 --> 00:28:34,100 >> En sommige mense - 507 00:28:34,100 --> 00:28:36,040 op hul vasvrae en hulle probleem stelle - het die 508 00:28:36,040 --> 00:28:36,890 twee van daardie verwar. 509 00:28:36,890 --> 00:28:38,830 Maar die twee van hulle is in werklikheid anders. 510 00:28:38,830 --> 00:28:40,220 Een eindig 'n string - 511 00:28:40,220 --> 00:28:43,210 een is 'n verwysing na 0. 512 00:28:43,210 --> 00:28:46,490 >> STUDENT 12: Hoekom sou jy nie gaan om te maak seker dat die lêers is nie NULL 513 00:28:46,490 --> 00:28:48,670 voordat jy dit oopmaak? 514 00:28:48,670 --> 00:28:54,772 >> JASON Hirsch: So oop red iets in die lêer. 515 00:28:54,772 --> 00:28:57,780 En as jy terug gaan hier - 516 00:28:57,780 --> 00:28:59,520 sodat hierdie lyn - fopen - 517 00:28:59,520 --> 00:29:05,300 sal 'n adres en stoor jou die adres in die lêer as dit werk. 518 00:29:05,300 --> 00:29:07,650 As dit nie werk nie, is dit sal slaan NULL - 519 00:29:07,650 --> 00:29:08,020 >> STUDENT 12: Oh. 520 00:29:08,020 --> 00:29:08,180 OK. 521 00:29:08,180 --> 00:29:08,500 Het jy. 522 00:29:08,500 --> 00:29:09,050 >> JASON Hirsch: In lêer. 523 00:29:09,050 --> 00:29:11,990 So kan jy nie kyk vir NULL voordat jy dit oopgemaak het. 524 00:29:11,990 --> 00:29:13,520 NULL beteken iets gedoen het nie korrek te werk. 525 00:29:13,520 --> 00:29:18,030 526 00:29:18,030 --> 00:29:18,740 OK. 527 00:29:18,740 --> 00:29:22,590 So check om seker te maak is ook nie? 528 00:29:22,590 --> 00:29:23,200 Of is? 529 00:29:23,200 --> 00:29:23,770 Wat dink ons? 530 00:29:23,770 --> 00:29:24,310 Ons gaan met dit. 531 00:29:24,310 --> 00:29:24,520 >> STUDENT 13: Is. 532 00:29:24,520 --> 00:29:25,020 >> JASON Hirsch: Is? 533 00:29:25,020 --> 00:29:25,930 Dit is ook nie? 534 00:29:25,930 --> 00:29:26,350 >> STUDENT 13: Is. 535 00:29:26,350 --> 00:29:26,390 >> JASON Hirsch: OK. 536 00:29:26,390 --> 00:29:28,510 Ons lyk sommige te hê konsensus oor wat. 537 00:29:28,510 --> 00:29:30,520 Nóg is leeg. 538 00:29:30,520 --> 00:29:32,250 OK, volgende lyn van pseudokode. 539 00:29:32,250 --> 00:29:33,600 Wie het nog nie 'n lyn aan my gegee het nie? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 Ons sal wag vir jou. 542 00:29:38,295 --> 00:29:39,020 Ja. 543 00:29:39,020 --> 00:29:40,895 >> STUDENT 14: Jy moet lees vanaf die eerste lêer? 544 00:29:40,895 --> 00:29:42,290 >> JASON Hirsch: OK. 545 00:29:42,290 --> 00:29:46,240 >> STUDENT 14: Of ons gebruik fscanf of iets soos dat die eerste lêer? 546 00:29:46,240 --> 00:29:50,650 >> JASON Hirsch: So wil ons lees van die eerste lêer en - 547 00:29:50,650 --> 00:29:51,900 Kom ons stel dit reg hier. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 Lees van die bron lêer. 550 00:30:01,880 --> 00:30:05,370 En dan, wat doen ons na ons lees van die bron lêer? 551 00:30:05,370 --> 00:30:06,620 Iemand anders? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> Student 15: Skryf in die bestemming lêer? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON Hirsch: Ons skryf aan die bestemming lêer, en - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 Wat anders is ons ontbreek? 558 00:30:30,030 --> 00:30:32,460 Iemand anders wat nie aan my gegee 'n reël van die kode nie - van pseudokode. 559 00:30:32,460 --> 00:30:33,510 Ja. 560 00:30:33,510 --> 00:30:36,540 >> STUDENT 16: Miskien kan jy altyd kyk of daar is iets te lees, 561 00:30:36,540 --> 00:30:37,970 soos die volgende lyn? 562 00:30:37,970 --> 00:30:39,550 Dit is soos die volgende lyn, sien of dit bestaan. 563 00:30:39,550 --> 00:30:40,660 >> [Elektroniese geluid] 564 00:30:40,660 --> 00:30:41,095 >> JASON Hirsch: Oeps. 565 00:30:41,095 --> 00:30:43,120 Dit is my joernaal sagteware. 566 00:30:43,120 --> 00:30:43,580 Ja? 567 00:30:43,580 --> 00:30:44,960 >> STUDENT 16: Ja. 568 00:30:44,960 --> 00:30:48,940 >> JASON Hirsch: So gee dit vir my nog een keer. 569 00:30:48,940 --> 00:30:51,640 >> STUDENT 16: Kyk of daar nog 'n volgende lyn van die 570 00:30:51,640 --> 00:30:52,920 bron lêer te lees. 571 00:30:52,920 --> 00:30:53,500 >> JASON Hirsch: OK. 572 00:30:53,500 --> 00:30:56,060 So ons is nie lees lyne - gelees grepe hier - 573 00:30:56,060 --> 00:30:57,590 maar jy is reg. 574 00:30:57,590 --> 00:31:00,040 Ons wil om te lees en skryf tot daar is nie meer grepe. 575 00:31:00,040 --> 00:31:11,430 576 00:31:11,430 --> 00:31:11,735 OK. 577 00:31:11,735 --> 00:31:16,940 En so moet dit regtig ingekeep word 'n bietjie, want hulle is onder daar. 578 00:31:16,940 --> 00:31:17,470 Reg? 579 00:31:17,470 --> 00:31:20,620 Totdat ons uit grepe, gaan ons lees van die bron lêer en skryf 580 00:31:20,620 --> 00:31:22,160 na die bestemming lêer. 581 00:31:22,160 --> 00:31:24,510 >> En dan, wat is die laaste lyn van pseudokode? 582 00:31:24,510 --> 00:31:26,380 Iemand wat nie gegee vir my nog iets. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> STUDENT 17: Maak die lêers? 585 00:31:30,260 --> 00:31:31,510 >> JASON Hirsch: Presies. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 Maak die lêers. 588 00:31:37,450 --> 00:31:38,400 So daar is ons pseudokode. 589 00:31:38,400 --> 00:31:41,870 Ek gaan die pseudokode te sit in gedit, en in 'n paar minute het ons 590 00:31:41,870 --> 00:31:44,626 sal dit saam kode. 591 00:31:44,626 --> 00:33:55,280 592 00:33:55,280 --> 00:33:56,000 >> OK. 593 00:33:56,000 --> 00:33:58,290 Kom ons begin as 'n groep. 594 00:33:58,290 --> 00:33:59,940 Nishant, ek het my nuwe lêer. 595 00:33:59,940 --> 00:34:01,130 Ek het net hierdie oopgemaak. 596 00:34:01,130 --> 00:34:01,880 Untitled Document 1. 597 00:34:01,880 --> 00:34:05,490 Wat is die eerste ding wat ek moet doen? 598 00:34:05,490 --> 00:34:07,040 >> Nishant: Sluit biblioteke? 599 00:34:07,040 --> 00:34:08,219 >> JASON Hirsch: OK. 600 00:34:08,219 --> 00:34:11,070 Wat biblioteke? 601 00:34:11,070 --> 00:34:17,570 >> Nishant: Stdio.h, stdlib.h, ek glo? 602 00:34:17,570 --> 00:34:18,000 >> JASON Hirsch: OK. 603 00:34:18,000 --> 00:34:21,592 Wat is stdlib vir? 604 00:34:21,592 --> 00:34:23,010 >> Nishant: ek het vergeet. 605 00:34:23,010 --> 00:34:23,219 >> JASON Hirsch: OK. 606 00:34:23,219 --> 00:34:24,179 So sluit Streek Leuven B.. 607 00:34:24,179 --> 00:34:28,630 Wat moet ek doen, selfs voor Ek begin kodering? 608 00:34:28,630 --> 00:34:29,710 >> Nishant: Skryf 'n kop? 609 00:34:29,710 --> 00:34:31,830 >> JASON Hirsch: Hoe kry ek dit ingekleur? 610 00:34:31,830 --> 00:34:34,060 >> [INTERPOSING Voices] 611 00:34:34,060 --> 00:34:35,040 >> Nishant: Hoe kry jy dit ingekleur? 612 00:34:35,040 --> 00:34:38,060 >> JASON Hirsch: Hoe kleur ek kodering? 613 00:34:38,060 --> 00:34:38,570 >> Nishant: Ek weet nie. 614 00:34:38,570 --> 00:34:38,830 Oh. 615 00:34:38,830 --> 00:34:39,389 Red. 616 00:34:39,389 --> 00:34:39,929 >> JASON Hirsch: red. 617 00:34:39,929 --> 00:34:40,270 Ja. 618 00:34:40,270 --> 00:34:41,760 Ek moet dit stoor as 'n. C. 619 00:34:41,760 --> 00:34:46,239 So stoor dit op die lessenaar as cp.c. 620 00:34:46,239 --> 00:34:47,280 Soet. 621 00:34:47,280 --> 00:34:51,199 En as ek wil vol styl te kry punte, wat moet ek 622 00:34:51,199 --> 00:34:53,085 sluit by die top? 623 00:34:53,085 --> 00:34:58,390 >> Nishant: Jy kan jou naam, die naam skryf van die program, en die doel 624 00:34:58,390 --> 00:34:59,640 van die program, asook? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> JASON Hirsch: Lyk goed. 627 00:35:10,040 --> 00:35:10,470 Uitstekend. 628 00:35:10,470 --> 00:35:12,940 So jy het ons begin af perfek. 629 00:35:12,940 --> 00:35:13,720 # Sluit - 630 00:35:13,720 --> 00:35:15,365 Ons sal ook skryf - 631 00:35:15,365 --> 00:35:30,050 632 00:35:30,050 --> 00:35:30,870 OK. 633 00:35:30,870 --> 00:35:33,520 So ek dink ek al ingestel om te gaan. 634 00:35:33,520 --> 00:35:38,003 Wie het die eerste reël van die kode vir my - of die eerste reëls van die kode wat 635 00:35:38,003 --> 00:35:41,280 dit sal neem ons eerste om te voldoen aan kommentaar in pseudokode? 636 00:35:41,280 --> 00:35:41,985 Jy. 637 00:35:41,985 --> 00:35:48,780 >> STUDENT 18: Indien dit nie int argc, en dan kar * bevat SPASIES? 638 00:35:48,780 --> 00:35:49,490 >> JASON Hirsch: Ek dink jy is reg. 639 00:35:49,490 --> 00:35:56,270 Kom ons verander dit hoof, oop hakie na int, int argc, komma, char * bevat SPASIES? 640 00:35:56,270 --> 00:35:57,150 Soos wat? 641 00:35:57,150 --> 00:35:57,410 >> STUDENT 18: hakies. 642 00:35:57,410 --> 00:35:58,260 >> JASON Hirsch: hakies. 643 00:35:58,260 --> 00:35:59,860 Open bracket, naby bracket, naby ouer. 644 00:35:59,860 --> 00:36:00,240 Perfect. 645 00:36:00,240 --> 00:36:02,160 Nou kan ek neem opdrag-lyn argumente. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 Verseker ons gegee twee lêers. 648 00:36:04,250 --> 00:36:07,905 Jy kan my gee wat as goed. 649 00:36:07,905 --> 00:36:09,180 >> STUDENT 18: As argc - 650 00:36:09,180 --> 00:36:11,060 hierdie een is nie gelyk aan 3. 651 00:36:11,060 --> 00:36:14,360 >> JASON Hirsch: As oop hakie argc nie gelyk 3? 652 00:36:14,360 --> 00:36:16,970 >> STUDENT 18: Ja, jy terugkeer 1 of enigiets. 653 00:36:16,970 --> 00:36:17,460 >> JASON Hirsch: Jammer. 654 00:36:17,460 --> 00:36:19,120 >> STUDENT 18: Terug 1 of enigiets. 655 00:36:19,120 --> 00:36:20,270 >> JASON Hirsch: Terug 1. 656 00:36:20,270 --> 00:36:22,230 OK? 657 00:36:22,230 --> 00:36:22,970 Groot. 658 00:36:22,970 --> 00:36:24,290 Maak beide lêers. 659 00:36:24,290 --> 00:36:26,160 Wie kan my help beide lêers oop te maak? 660 00:36:26,160 --> 00:36:28,125 Wie het nie kode aan my gegee het nie? 661 00:36:28,125 --> 00:36:31,510 662 00:36:31,510 --> 00:36:32,320 Kurt? 663 00:36:32,320 --> 00:36:36,145 >> KURT: So hoofletters F-ek-L-E ster bron. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON Hirsch: Ek gaan om uit te neem van die vokale. 666 00:36:40,920 --> 00:36:41,570 Dit is cool. 667 00:36:41,570 --> 00:36:42,716 Dit is soos Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> STUDENT 18: Equals fopen - 669 00:36:44,610 --> 00:36:46,612 >> JASON Hirsch: Equals fopen? 670 00:36:46,612 --> 00:36:49,870 >> STUDENT 18: Open paren, bevat SPASIES, oop bracket. 671 00:36:49,870 --> 00:36:50,055 >> JASON Hirsch: wag. 672 00:36:50,055 --> 00:36:50,240 Jammer. 673 00:36:50,240 --> 00:36:51,050 Open hakie. 674 00:36:51,050 --> 00:36:51,456 OK. 675 00:36:51,456 --> 00:36:53,080 >> STUDENT 18: Ja. 676 00:36:53,080 --> 00:36:55,110 Bevat SPASIES sub 1. 677 00:36:55,110 --> 00:36:55,860 >> JASON Hirsch: Sub 1? 678 00:36:55,860 --> 00:36:56,140 >> STUDENT 18: Ja. 679 00:36:56,140 --> 00:36:58,540 Bevat SPASIES oop bracket 1 - 680 00:36:58,540 --> 00:36:59,730 ja. 681 00:36:59,730 --> 00:37:06,470 En dan komma, en dan oop dubbel quote, r, dubbel quote, 682 00:37:06,470 --> 00:37:08,250 naby paren, kommapunt. 683 00:37:08,250 --> 00:37:09,450 >> JASON Hirsch: Sweet. 684 00:37:09,450 --> 00:37:10,950 En wat van die ander een? 685 00:37:10,950 --> 00:37:16,030 >> STUDENT 18: baie soortgelyk, maar in plaas daarvan van S-R-C, sou jy dit noem D-S-T. 686 00:37:16,030 --> 00:37:17,060 >> JASON Hirsch: Oo! 687 00:37:17,060 --> 00:37:17,772 Ek hou daarvan. 688 00:37:17,772 --> 00:37:20,010 >> STUDENT 18: Just D-S-T. Ja. 689 00:37:20,010 --> 00:37:23,057 En dan bevat SPASIES, oop bracket, 2. 690 00:37:23,057 --> 00:37:23,200 Ja. 691 00:37:23,200 --> 00:37:26,720 En dan w plaas van r. 692 00:37:26,720 --> 00:37:27,620 Ja. 693 00:37:27,620 --> 00:37:29,630 >> JASON Hirsch: Groot. 694 00:37:29,630 --> 00:37:31,360 Volgende paar lyne. 695 00:37:31,360 --> 00:37:34,040 Ook, as iemand het om dinge te voeg lyne wat ons gedoen het, voel vry om te 696 00:37:34,040 --> 00:37:35,690 voeg dié sowel. 697 00:37:35,690 --> 00:37:37,520 Maak seker dat nie een is leeg. 698 00:37:37,520 --> 00:37:41,450 Wie kan my gee die kode wat ek nodig het om te oortuig dat lyn van pseudokode? 699 00:37:41,450 --> 00:37:44,430 700 00:37:44,430 --> 00:37:45,870 Archer. 701 00:37:45,870 --> 00:37:58,645 >> ARCHER: As src gelyk gelykes NULL of dst gelyk gelykes 702 00:37:58,645 --> 00:38:04,590 NULL, dan moet jy terugkeer - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON Hirsch: Wat? 705 00:38:07,976 --> 00:38:08,890 >> ARCHER: Terug 2? 706 00:38:08,890 --> 00:38:09,760 >> JASON Hirsch: Terug 2. 707 00:38:09,760 --> 00:38:14,400 So as oop hakie src gelyk gelyk NULL, of - 708 00:38:14,400 --> 00:38:15,590 wat dit ook al thing's - pyp? 709 00:38:15,590 --> 00:38:16,346 Pyp? 710 00:38:16,346 --> 00:38:17,140 Ons sal noem dit die pyp. 711 00:38:17,140 --> 00:38:22,340 Pyp, pyp, dst gelyk gelykes NULL, terug 2. 712 00:38:22,340 --> 00:38:23,900 OK? 713 00:38:23,900 --> 00:38:26,060 Totdat ons uit grepe - 714 00:38:26,060 --> 00:38:29,820 Ons soort van oorgeslaan oor hierdie stap uit die pseudokode deel te gaan om hier te. 715 00:38:29,820 --> 00:38:31,970 >> Maar totdat ons uit grepe - Wat beteken dit klink soos? 716 00:38:31,970 --> 00:38:34,680 Watter tipe C-struktuur - 717 00:38:34,680 --> 00:38:36,160 maar ek gebruik nie die woord struktuur, want ons gaan om te begin met 718 00:38:36,160 --> 00:38:37,350 wat in ander gevalle - 719 00:38:37,350 --> 00:38:39,495 maar C instrument klink soos? 720 00:38:39,495 --> 00:38:39,970 >> STUDENT 19: 'n lus. 721 00:38:39,970 --> 00:38:40,980 >> JASON Hirsch: 'n lus. 722 00:38:40,980 --> 00:38:43,060 Klink soos 'n lus. 723 00:38:43,060 --> 00:38:49,670 So wat kan gee my die eerste reël van die lus-kode reg hier? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 Jy kan ook kies watter soort lus wat jy wil, as jy my 726 00:39:01,980 --> 00:39:03,215 hierdie lyn van kode. 727 00:39:03,215 --> 00:39:04,150 Daar is drie soorte. 728 00:39:04,150 --> 00:39:06,530 Jy kry om te kies. 729 00:39:06,530 --> 00:39:08,080 Ek stel voor een van daardie. 730 00:39:08,080 --> 00:39:08,410 Avi. 731 00:39:08,410 --> 00:39:09,230 Watter een wil jy hê? 732 00:39:09,230 --> 00:39:09,960 >> AVI: VIR. 733 00:39:09,960 --> 00:39:11,460 >> JASON Hirsch: VIR. 734 00:39:11,460 --> 00:39:15,180 >> AVI: Int ek gelyk is aan nul. 735 00:39:15,180 --> 00:39:17,360 >> JASON Hirsch: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI: Hierdie deel ek is nie seker oor. 737 00:39:18,570 --> 00:39:29,080 Maar ek is minder as die grootte ster bron? 738 00:39:29,080 --> 00:39:31,128 Ek is nie seker van dat. 739 00:39:31,128 --> 00:39:32,580 >> JASON Hirsch: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: Omdat jy die grootte van 'n lêer, reg? 741 00:39:35,870 --> 00:39:41,090 >> JASON Hirsch: So dit sal waarskynlik nie gee ons die grootte van die werklike 742 00:39:41,090 --> 00:39:43,010 lêer in grepe. 743 00:39:43,010 --> 00:39:47,680 So wat anders kan ons doen? 744 00:39:47,680 --> 00:39:48,810 Wat is 'n ander tipe lus? 745 00:39:48,810 --> 00:39:50,180 Of moet ons vashou aan die FOR-lus? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> STUDENT 20: Kan jy 'n WHILE-lus? 748 00:39:57,900 --> 00:40:01,350 En dan, wat jy wil doen, is om you'd - 749 00:40:01,350 --> 00:40:03,930 want ons het 'n kar * vir die lêer. 750 00:40:03,930 --> 00:40:07,950 So as ons hou net die verhoog wat totdat ons wil die NULL karakter op vind 751 00:40:07,950 --> 00:40:08,500 die einde van dit? 752 00:40:08,500 --> 00:40:11,130 Of nee, is dit nie hoe lêers te werk? 753 00:40:11,130 --> 00:40:14,300 >> JASON Hirsch: sodat ons kan hou verhoog van die kar * 754 00:40:14,300 --> 00:40:16,340 totdat ons die NULL - 755 00:40:16,340 --> 00:40:18,580 >> STUDENT 20: In wese gaan hou karakter deur karakter totdat ons getref 756 00:40:18,580 --> 00:40:21,250 die einde van die lêer. 757 00:40:21,250 --> 00:40:21,600 >> JASON Hirsch: Ja. 758 00:40:21,600 --> 00:40:22,560 So dit is wat ons wil doen. 759 00:40:22,560 --> 00:40:24,545 Ons wil lees, karakter te hou deur karakter, totdat ons kry om te 760 00:40:24,545 --> 00:40:25,080 die einde van die lêer. 761 00:40:25,080 --> 00:40:25,375 >> STUDENT 20: Ja. 762 00:40:25,375 --> 00:40:25,860 Vind - 763 00:40:25,860 --> 00:40:28,540 Wat is die einde of stopteken aan die einde van 'n teks lêer. 764 00:40:28,540 --> 00:40:28,620 >> JASON Hirsch: OK. 765 00:40:28,620 --> 00:40:30,140 So wanneer ons by die einde van die lêer - hoe weet ons ons het bereik 766 00:40:30,140 --> 00:40:33,200 die einde van 'n lêer? 767 00:40:33,200 --> 00:40:34,710 As ek vra - 768 00:40:34,710 --> 00:40:35,910 so laat ons stap terug. 769 00:40:35,910 --> 00:40:37,550 Wat is 'n funksie? 770 00:40:37,550 --> 00:40:39,360 Kom ons gaan na hierdie lyn hier. 771 00:40:39,360 --> 00:40:40,630 Lees van die bron lêer. 772 00:40:40,630 --> 00:40:41,880 Wie kan my dat die lyn van die kode? 773 00:40:41,880 --> 00:40:45,592 774 00:40:45,592 --> 00:40:47,590 >> STUDENT 21: Fscanf? 775 00:40:47,590 --> 00:40:49,110 >> JASON Hirsch: Fscanf. 776 00:40:49,110 --> 00:40:49,510 OK. 777 00:40:49,510 --> 00:40:52,240 Wat as ek wil om te lees, baie spesifiek, een greep? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> STUDENT 21: Ek weet nie. 780 00:40:56,860 --> 00:40:57,110 >> JASON Hirsch: OK. 781 00:40:57,110 --> 00:40:59,380 Selfs makliker as fscanf - wat is 'n - 782 00:40:59,380 --> 00:41:01,890 Ek wil om te lees van 'n bron lêer? 783 00:41:01,890 --> 00:41:03,720 Lees vanaf 'n bron lêer. 784 00:41:03,720 --> 00:41:04,850 Wat is 'n funksie - ja. 785 00:41:04,850 --> 00:41:05,380 >> STUDENT 22: Dit is fread? 786 00:41:05,380 --> 00:41:06,070 >> JASON Hirsch: Fread. 787 00:41:06,070 --> 00:41:07,550 Ek dink laat ons vashou met dat 'n mens vir nou. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 Watter soort argumente nie fread neem? 790 00:41:13,650 --> 00:41:17,410 >> STUDENT 22: Waarskynlik die lêer tipe, en dan plek in die lêer? 791 00:41:17,410 --> 00:41:19,550 >> JASON Hirsch: Wat kan ek tik hier om uit te vind watter soort van argumente 792 00:41:19,550 --> 00:41:20,950 fread neem? 793 00:41:20,950 --> 00:41:23,710 >> MEERVOUDIGE STUDENTE: Man fread. 794 00:41:23,710 --> 00:41:24,740 >> JASON Hirsch: Man fread en fwrite. 795 00:41:24,740 --> 00:41:25,980 Lyk asof hulle uithang saam. 796 00:41:25,980 --> 00:41:29,589 So fread neem hoeveel argumente? 797 00:41:29,589 --> 00:41:30,920 >> STUDENT 23: Vier. 798 00:41:30,920 --> 00:41:32,690 >> JASON Hirsch: Dit neem vier argumente. 799 00:41:32,690 --> 00:41:41,100 Dit neem 'n wyser, 'n grote, en dat ding, wat is vreemd, en 'n paar lêer. 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 Ons lees oor dit hier. 802 00:41:43,990 --> 00:41:49,370 "Die funksie fread lees n memb elemente van data, elke grootte grepe 803 00:41:49,370 --> 00:41:53,840 lank, uit die stroom daarop deur stroom, berging van hulle by die plek 804 00:41:53,840 --> 00:41:56,170 gegee deur wyser. " 805 00:41:56,170 --> 00:41:57,960 >> So vier argumente. 806 00:41:57,960 --> 00:42:04,510 Hoekom moet ek nie net kopieer dit, en plak dit hier. 807 00:42:04,510 --> 00:42:10,060 808 00:42:10,060 --> 00:42:10,770 OK. 809 00:42:10,770 --> 00:42:13,673 So wat kan begin vul hierdie argumente vir my? 810 00:42:13,673 --> 00:42:15,840 Avi. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Neem uit die afgrond. 812 00:42:17,720 --> 00:42:20,530 Sit net src. 813 00:42:20,530 --> 00:42:23,142 Neem uit wyser en die sterre. 814 00:42:23,142 --> 00:42:26,102 Sit src. 815 00:42:26,102 --> 00:42:27,050 Dan - 816 00:42:27,050 --> 00:42:28,500 >> JASON Hirsch: So ek gaan om te stop jy daar, want dit is nie korrek nie. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 Jy is reg met src nie, maar waar moet src gaan? 819 00:42:34,710 --> 00:42:35,960 >> [INTERPOSING Voices] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON Hirsch: Daar moet gaan hier verby. 822 00:42:41,610 --> 00:42:43,790 Dit is die SRC - ons src is 'n tipe. 823 00:42:43,790 --> 00:42:44,610 Kom ons kyk hier. 824 00:42:44,610 --> 00:42:49,610 Dit vra vir 'n tipe lêer * Ons eintlik sien hulle soos dit. 825 00:42:49,610 --> 00:42:57,630 So, dit is te vra vir 'n argument van tik lêer * genoem stroom wat src. 826 00:42:57,630 --> 00:42:58,480 OK? 827 00:42:58,480 --> 00:43:00,410 >> Wat grootte van dinge doen, ons wil om te lees? 828 00:43:00,410 --> 00:43:03,340 Ek het julle dit in die beskrywing van die probleem. 829 00:43:03,340 --> 00:43:04,370 >> STUDENT 24: Een byte op 'n tyd. 830 00:43:04,370 --> 00:43:05,340 >> JASON Hirsch: Een byte. 831 00:43:05,340 --> 00:43:08,205 Hoe groot is 'n greep? 832 00:43:08,205 --> 00:43:11,642 Sy grootte is in grepe, so wat kan ek net daar? 833 00:43:11,642 --> 00:43:12,910 >> STUDENT 25: One. 834 00:43:12,910 --> 00:43:14,730 >> JASON Hirsch: Een. 835 00:43:14,730 --> 00:43:17,020 Right. 836 00:43:17,020 --> 00:43:19,940 Sy grootte is in eenheid byte, so 1 is 1 byte. 837 00:43:19,940 --> 00:43:22,284 Hoeveel wil ek lees op 'n tyd. 838 00:43:22,284 --> 00:43:23,520 >> STUDENT 26: Een? 839 00:43:23,520 --> 00:43:24,270 >> JASON Hirsch: Een ding. 840 00:43:24,270 --> 00:43:28,540 Ek wil een ding van grootte te lees 1, een happie op 'n slag. 841 00:43:28,540 --> 00:43:32,110 En waar kan ek dit, as ek dit lees? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> STUDENT 27: bestemming? 844 00:43:36,510 --> 00:43:39,270 >> JASON Hirsch: So ek kan nie dit reguit in die bestemming. 845 00:43:39,270 --> 00:43:40,800 >> STUDENT 28: Jy gaan sit dit in 'n derde wyser? 846 00:43:40,800 --> 00:43:41,780 >> STUDENT 27: na die bestemming. 847 00:43:41,780 --> 00:43:42,270 >> JASON Hirsch: OK. 848 00:43:42,270 --> 00:43:42,630 Ja. 849 00:43:42,630 --> 00:43:46,820 >> STUDENT 29: Jy kan iets verklaar optree as 'n tydelike stoor vroeër. 850 00:43:46,820 --> 00:43:47,350 >> JASON Hirsch: OK. 851 00:43:47,350 --> 00:43:50,080 Gee my dat. 852 00:43:50,080 --> 00:43:53,930 >> STUDENT 29: Nog 'n lêer wyser, miskien? 853 00:43:53,930 --> 00:43:54,220 >> JASON Hirsch: OK. 854 00:43:54,220 --> 00:43:55,585 So dit is nietig ster - 855 00:43:55,585 --> 00:43:57,750 dit is 'n soort leemte ster, sodat dit nie 'n lêer wyser te wees. 856 00:43:57,750 --> 00:44:02,520 En as ek lees een greep, waar sou 'n goeie plek wees 857 00:44:02,520 --> 00:44:03,850 een greep op te slaan? 858 00:44:03,850 --> 00:44:04,660 >> STUDENT 29: 'n skikking? 859 00:44:04,660 --> 00:44:05,770 >> JASON Hirsch: 'n skikking. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 En wat anders is iets wat net een greep grootte? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> STUDENT 30: 'n kar *? 864 00:44:18,060 --> 00:44:18,530 >> STUDENT 29: Ja. 865 00:44:18,530 --> 00:44:19,880 >> JASON Hirsch: 'n kar * is nie een byte. 866 00:44:19,880 --> 00:44:20,440 >> STUDENT 29: 'n kar. 867 00:44:20,440 --> 00:44:21,810 >> JASON Hirsch: 'n kar is een byte. 868 00:44:21,810 --> 00:44:22,920 Reg? 869 00:44:22,920 --> 00:44:26,740 So kom ons noem hierdie buffer is 'n generiese naam wat gebruik word vir hierdie dinge te stoor 870 00:44:26,740 --> 00:44:27,910 iets tydelik. 871 00:44:27,910 --> 00:44:30,880 So ek 'n buffer. 872 00:44:30,880 --> 00:44:31,150 Reg? 873 00:44:31,150 --> 00:44:32,990 Maar dit neem nie 'n leemte *. 874 00:44:32,990 --> 00:44:38,660 So miskien is jy reg, dat dit behoort 'n buffer van grootte 0 wees. 875 00:44:38,660 --> 00:44:41,070 So dit slaan een - 876 00:44:41,070 --> 00:44:41,280 reg. 877 00:44:41,280 --> 00:44:43,560 >> Omdat hierdie reg hier - char buffer is 'n karakter nie, maar 878 00:44:43,560 --> 00:44:45,110 dit neem 'n leemte * - 879 00:44:45,110 --> 00:44:45,870 'n wyser. 880 00:44:45,870 --> 00:44:50,640 So ek dit kan doen en nou buffer is 'n muis. 881 00:44:50,640 --> 00:44:53,214 Wat anders kon ek doen? 882 00:44:53,214 --> 00:44:55,775 >> STUDENT 31: Sit 'n ster langs teken. 883 00:44:55,775 --> 00:44:58,380 >> JASON Hirsch: ek kon het dit geskape char *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 Wat is 'n ander ding wat ek kan doen? 886 00:45:03,131 --> 00:45:04,050 Of laat ons gaan met hierdie een. 887 00:45:04,050 --> 00:45:05,740 Char * buffer, so wat ek sit hier? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> STUDENT 31: buffer. 890 00:45:09,310 --> 00:45:10,560 >> JASON Hirsch: buffer. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 Buffer is 'n verwysing na 'n kar. 893 00:45:14,500 --> 00:45:19,480 En in daardie plek, ons sit een greep van iets wat ons gelees het. 894 00:45:19,480 --> 00:45:19,980 Ja. 895 00:45:19,980 --> 00:45:20,700 Avi. 896 00:45:20,700 --> 00:45:21,230 >> AVI: Net 'n vinnige vraag. 897 00:45:21,230 --> 00:45:24,440 Wil jy buffer te malloc? 898 00:45:24,440 --> 00:45:25,930 >> JASON Hirsch: Wie kan die vraag beantwoord? 899 00:45:25,930 --> 00:45:30,210 >> STUDENT 32: Wel, beteken dit nie regtig punt na iets nou, so - 900 00:45:30,210 --> 00:45:32,610 >> JASON Hirsch: Maar doen ons wil om dit te malloc? 901 00:45:32,610 --> 00:45:35,600 >> STUDENT 32: As jy om dit te doen wat manier, dink ek, ja, want jy moet 902 00:45:35,600 --> 00:45:36,990 'n plek om dit te wys. 903 00:45:36,990 --> 00:45:38,350 >> JASON Hirsch: Het ons het om dit te malloc? 904 00:45:38,350 --> 00:45:40,580 >> STUDENT 33: As jy gaan om te gebruik dit buite die lus. 905 00:45:40,580 --> 00:45:42,524 >> JASON Hirsch: Gaan ons gebruik dit buite die lus? 906 00:45:42,524 --> 00:45:44,392 >> STUDENT 34: Ja. 907 00:45:44,392 --> 00:45:44,860 >> STUDENT 35: Wag. 908 00:45:44,860 --> 00:45:46,980 Wil ons dit te verklaar in die lus om verder? 909 00:45:46,980 --> 00:45:50,100 >> JASON Hirsch: So ek dink ons ​​het sommige pseudo WHILE-lus hier dat ons 910 00:45:50,100 --> 00:45:51,950 probeer om uit te vind wat ons het nie na gekry nie. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 Ons het dit nie nodig om malloc. 913 00:45:56,010 --> 00:45:59,310 Ons is aktief in die belangrikste, dit gaan slegs om binne hierdie lus gebruik word. 914 00:45:59,310 --> 00:46:00,540 Dit hoef nie te bestaan buite hierdie. 915 00:46:00,540 --> 00:46:02,340 >> So dit kan 'n plaaslike veranderlike. 916 00:46:02,340 --> 00:46:03,925 Jy het 'n verwysing na 'n plaaslike veranderlike. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> STUDENT 36: Maar dit is nie wys na iets. 919 00:46:09,590 --> 00:46:11,540 >> JASON Hirsch: Nee, dit is nie geïnisialiseer tot niks. 920 00:46:11,540 --> 00:46:12,790 Maar ons is nie van plan om dit te gebruik ook. 921 00:46:12,790 --> 00:46:15,300 Ons gaan om iets in dit die eerste keer dat ons dit gebruik. 922 00:46:15,300 --> 00:46:16,580 So dit lyk OK. 923 00:46:16,580 --> 00:46:17,780 Sodat ons nie nodig het om malloc nie hier nie. 924 00:46:17,780 --> 00:46:19,360 En ek dink dit is OK as is. 925 00:46:19,360 --> 00:46:24,350 926 00:46:24,350 --> 00:46:25,790 OK. 927 00:46:25,790 --> 00:46:27,190 Ons het die fread lyn. 928 00:46:27,190 --> 00:46:28,490 Kom ons doen die volgende reël. 929 00:46:28,490 --> 00:46:32,984 >> As ons wil 'n lêer te skryf, wat 'n goeie funksie te gebruik om dit te doen? 930 00:46:32,984 --> 00:46:33,770 >> STUDENT 37: Fwrite? 931 00:46:33,770 --> 00:46:35,140 >> STUDENT 38: fprintf? 932 00:46:35,140 --> 00:46:36,010 >> JASON Hirsch: fprintf is een. 933 00:46:36,010 --> 00:46:37,260 Wat is 'n ander een? 934 00:46:37,260 --> 00:46:37,680 >> STUDENT 39: Fwrite. 935 00:46:37,680 --> 00:46:38,510 >> JASON Hirsch: Fwrite. 936 00:46:38,510 --> 00:46:41,250 En vir ons doeleindes, fwrite, wat ons hier sien, is 937 00:46:41,250 --> 00:46:42,500 waarskynlik 'n beter keuse. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 Dit neem vier argumente as well. 940 00:46:53,950 --> 00:46:57,570 Nishant, kan jy gee my die argumente? 941 00:46:57,570 --> 00:47:00,570 >> Nishant: Die eerste een gaan net buffer te wees. 942 00:47:00,570 --> 00:47:02,210 >> JASON Hirsch: OK. 943 00:47:02,210 --> 00:47:06,752 >> Nishant: Die tweede een se net gaan om te wees 1. 944 00:47:06,752 --> 00:47:09,510 Derde een gaan wees 1. 945 00:47:09,510 --> 00:47:11,470 En die vierde een gaan dst te wees. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON Hirsch: Het enige iemand het enige vrae oor die lyn? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 Dit lyk goed. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 So nou lyk dit soos die een ding wat ons is missing - eintlik, laat skryf 952 00:47:34,250 --> 00:47:35,090 hierdie laaste reël. 953 00:47:35,090 --> 00:47:36,300 Maak die lêers. 954 00:47:36,300 --> 00:47:38,880 Wie kan voltooi ons op skrif hierdie laaste twee lyne? 955 00:47:38,880 --> 00:47:39,120 Ja. 956 00:47:39,120 --> 00:47:39,850 Jammer, wat is jou naam? 957 00:47:39,850 --> 00:47:40,580 >> LUCY: Lucy. 958 00:47:40,580 --> 00:47:41,580 >> JASON Hirsch: Lucy. 959 00:47:41,580 --> 00:47:47,560 >> LUCY: Fclose src en dan fclose bestemming. 960 00:47:47,560 --> 00:47:52,430 >> JASON Hirsch: Fclose, oop paren, SRC, naby paren, kommapunt. 961 00:47:52,430 --> 00:47:53,680 En fclose - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 ja? 964 00:47:58,090 --> 00:48:01,710 >> LUCY: Open hakies, dst en dan kommapunt. 965 00:48:01,710 --> 00:48:02,520 >> JASON Hirsch: Groot. 966 00:48:02,520 --> 00:48:04,338 En wat moet ek aan die einde? 967 00:48:04,338 --> 00:48:05,210 >> LUCY: Terug 0. 968 00:48:05,210 --> 00:48:05,570 >> JASON Hirsch: Terug 0. 969 00:48:05,570 --> 00:48:06,820 Moet ek? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 Net 'n vraag. 972 00:48:12,590 --> 00:48:14,957 Het ons terugkeer 0 in te sluit? 973 00:48:14,957 --> 00:48:16,240 >> MEERVOUDIGE STUDENTE: No 974 00:48:16,240 --> 00:48:16,430 >> JASON Hirsch: No 975 00:48:16,430 --> 00:48:18,090 Main doen dit outomaties As jy aan die einde. 976 00:48:18,090 --> 00:48:20,580 Maar ek dink dit is lekker om te sluit dit uitdruklik. 977 00:48:20,580 --> 00:48:23,860 Veral wanneer ons terugkeer ander dinge in die hele program. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 Dit is wat ons mis - 980 00:48:26,230 --> 00:48:28,520 TERWYL wat? 981 00:48:28,520 --> 00:48:31,630 Wie kan dink van 'n paar - 982 00:48:31,630 --> 00:48:35,240 het 'n sekere sin van die dinge wat kon daar in te gaan? 983 00:48:35,240 --> 00:48:37,350 Selfs al is dit net in 'n paar pseudokode soos taal? 984 00:48:37,350 --> 00:48:41,330 >> Wat is ons regtig - wat wil ons gaan totdat? 985 00:48:41,330 --> 00:48:41,980 Ja, Lucy. 986 00:48:41,980 --> 00:48:43,240 >> LUCY: Die einde van die lêer. 987 00:48:43,240 --> 00:48:44,990 >> JASON Hirsch: Die einde van die lêer. 988 00:48:44,990 --> 00:48:49,280 So, wat beteken dat jy nie teen die einde van die lêer? 989 00:48:49,280 --> 00:48:50,955 >> LUCY: Sodra jy bereik die einde van die lêer, stop. 990 00:48:50,955 --> 00:48:51,240 >> JASON Hirsch: OK. 991 00:48:51,240 --> 00:48:53,460 So wanneer ons aan die einde van die lêer. 992 00:48:53,460 --> 00:48:56,893 Hoe weet ons wanneer ons bereik die einde van die lêer? 993 00:48:56,893 --> 00:48:59,900 >> STUDENT 40: Ek dink buffer sal ingestel word na NULL. 994 00:48:59,900 --> 00:49:01,885 >> STUDENT 41: Buffer verklaar binne die lus. 995 00:49:01,885 --> 00:49:03,670 >> JASON Hirsch: So jy dink buffer sal ingestel word na NULL. 996 00:49:03,670 --> 00:49:05,850 Hoekom sal buffer word ingestel om te NULL? 997 00:49:05,850 --> 00:49:10,420 >> STUDENT 40: Want as jy fread, jy probeer om te sit 998 00:49:10,420 --> 00:49:13,528 niks in buffer. 999 00:49:13,528 --> 00:49:13,980 >> JASON Hirsch: OK. 1000 00:49:13,980 --> 00:49:15,550 So jy dink fread - 1001 00:49:15,550 --> 00:49:19,000 wanneer ons die einde van die bereik het lêer, wat fread gaan doen? 1002 00:49:19,000 --> 00:49:21,230 Ek dink dit is die vraag ons het om uit te vind. 1003 00:49:21,230 --> 00:49:21,960 Wat beteken fread doen? 1004 00:49:21,960 --> 00:49:25,640 Is dit sit NULL in buffer, of beteken dit iets anders doen? 1005 00:49:25,640 --> 00:49:27,510 Hoe kan ons uitvind wat dit beteken? 1006 00:49:27,510 --> 00:49:28,190 >> STUDENT 42: Man. 1007 00:49:28,190 --> 00:49:28,810 >> JASON Hirsch: Man. 1008 00:49:28,810 --> 00:49:32,280 So laat ons kyk hier. 1009 00:49:32,280 --> 00:49:34,000 Terug waarde. 1010 00:49:34,000 --> 00:49:39,620 Op die sukses, fread en fwrite die standaard van die aantal items lees of geskryf. 1011 00:49:39,620 --> 00:49:43,700 Hierdie getal is gelyk aan die aantal grepe oorgedra net vir grootte is 1. 1012 00:49:43,700 --> 00:49:47,780 Indien 'n fout begaan, of die einde van die lêer is bereik, die terugkeer waarde is 'n 1013 00:49:47,780 --> 00:49:51,490 kort item telling of 0. 1014 00:49:51,490 --> 00:49:57,860 >> So vir ons doeleindes, indien fread uithoeke die einde van die lêer, en lees uit 1015 00:49:57,860 --> 00:50:02,100 die einde van die lêer, is daar niks meer om te lees, wat gaan dit om terug te keer? 1016 00:50:02,100 --> 00:50:03,290 >> STUDENT 43: Zero? 1017 00:50:03,290 --> 00:50:04,540 >> JASON Hirsch: Wat? 1018 00:50:04,540 --> 00:50:05,300 >> STUDENT 43: Zero? 1019 00:50:05,300 --> 00:50:05,690 >> JASON Hirsch: Zero. 1020 00:50:05,690 --> 00:50:06,940 Dit gaan om terug te keer nul. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 So weet ons dat fread, wanneer ons bereik die einde van die lêer, gaan 1023 00:50:13,010 --> 00:50:13,690 om terug te keer nul. 1024 00:50:13,690 --> 00:50:17,460 Hoe kan ons wat tot ons voordeel? 1025 00:50:17,460 --> 00:50:21,733 >> AVI: Jy kan 'n veranderlike buite verklaar van die lus genoem tjek. 1026 00:50:21,733 --> 00:50:27,040 As tjek gelyk aan - 1027 00:50:27,040 --> 00:50:28,190 vir nou - een. 1028 00:50:28,190 --> 00:50:28,920 >> JASON Hirsch: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: En dan kan jy sit 'n INDIEN verklaring regs na fread sê as 1030 00:50:38,050 --> 00:50:42,600 fread gelyk aan nul - 1031 00:50:42,600 --> 00:50:43,850 no. 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> JASON Hirsch: Wie kan help Avi uit? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: Wat is die waarde teruggestuur deur fread? 1036 00:50:52,410 --> 00:50:54,060 >> JASON Hirsch: Ons het net gegaan oor dat. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: Hoe doen jy dit voor? 1038 00:50:55,450 --> 00:50:57,190 >> JASON Hirsch: So is dit terug - laat kyk hier - dit gee 'n 1039 00:50:57,190 --> 00:50:59,340 size_t, wat in wese 'n heelgetal. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 So dit gee 'n heelgetal. 1042 00:51:03,410 --> 00:51:05,160 En in ons geval, dit sal terug 1 of 0 - 1043 00:51:05,160 --> 00:51:08,760 1 As dit een ding lees - een greep, en 0 as ons aan die einde gekom. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 So as fread - 1046 00:51:16,450 --> 00:51:16,855 ja? 1047 00:51:16,855 --> 00:51:20,330 >> STUDENT 45: Kan jy nie net die volle fread (buffer, 1, 1, src) in die 1048 00:51:20,330 --> 00:51:21,660 terwyl loop? 1049 00:51:21,660 --> 00:51:26,510 >> JASON Hirsch: So jy stel om dit te doen in daar? 1050 00:51:26,510 --> 00:51:27,600 >> [INTERPOSING Voices] 1051 00:51:27,600 --> 00:51:29,520 >> JASON Hirsch: Hou op. 1052 00:51:29,520 --> 00:51:30,885 So ons is ontslae van daardie. 1053 00:51:30,885 --> 00:51:33,300 So jy stel om fread in daar? 1054 00:51:33,300 --> 00:51:35,457 Wat moet ons ook beweeg As jy wil om dit te doen? 1055 00:51:35,457 --> 00:51:36,740 >> STUDENT 45: Die buffer buite. 1056 00:51:36,740 --> 00:51:38,110 >> JASON Hirsch: Ons moet ook hierdie skuif hier. 1057 00:51:38,110 --> 00:51:41,700 >> STUDENT 45: Maar doen dit voortdurend beweeg dit vorentoe? 1058 00:51:41,700 --> 00:51:42,950 >> [INTERPOSING Voices] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> JASON Hirsch: OK. 1061 00:51:47,470 --> 00:51:50,570 So dit is wat Okshar voorgestel. 1062 00:51:50,570 --> 00:51:51,930 Ons maak ons ​​buffer. 1063 00:51:51,930 --> 00:51:57,020 Ons TERWYL fread, dan fwrite ons. 1064 00:51:57,020 --> 00:51:59,760 Gedagtes oor hierdie? 1065 00:51:59,760 --> 00:52:04,050 >> STUDENT 46: My vraag is net, sou dit eintlik die opdrag fread voer? 1066 00:52:04,050 --> 00:52:06,175 >> JASON Hirsch: Groot vraag. 1067 00:52:06,175 --> 00:52:11,050 Wanneer jy sit 'n funksie oproep binnekant van 'n toestand is, beteken dit 1068 00:52:11,050 --> 00:52:12,300 funksie oproep voer? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 Ons het voorbeelde van hierdie gesien het nie. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 Reg? 1073 00:52:25,660 --> 00:52:26,125 >> STUDENT 46: OK. 1074 00:52:26,125 --> 00:52:26,590 Ja. 1075 00:52:26,590 --> 00:52:30,140 Sodat dit nie uit te voer. 1076 00:52:30,140 --> 00:52:31,790 >> JASON Hirsch: Ons het dinge gesien soos dit voor, waar ons 'n 1077 00:52:31,790 --> 00:52:33,550 funksie oproep binnekant van 'n toestand. 1078 00:52:33,550 --> 00:52:35,540 Maak daardie funksie oproep voer? 1079 00:52:35,540 --> 00:52:36,350 Ja. 1080 00:52:36,350 --> 00:52:37,410 So die antwoord is ja. 1081 00:52:37,410 --> 00:52:41,010 Hierdie funksie oproep sal voer. 1082 00:52:41,010 --> 00:52:42,418 Maar weereens, is dit wat ons wil hê? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> Wat is een manier waarop ons kan vind uit te vind of dit is wat ons wil hê? 1085 00:52:52,204 --> 00:52:53,470 >> MEERVOUDIGE STUDENTE: Doen dit? 1086 00:52:53,470 --> 00:52:54,460 >> JASON Hirsch: Ons kan dit loop. 1087 00:52:54,460 --> 00:52:57,500 Maar voor ons dit doen, ons kon ook redeneer deur middel van hierdie. 1088 00:52:57,500 --> 00:52:57,920 Indien - 1089 00:52:57,920 --> 00:53:01,920 sê ons het 'n greep in ons dien, ons sal kry om hier, 1090 00:53:01,920 --> 00:53:02,660 ons sal kry om hierdie kode. 1091 00:53:02,660 --> 00:53:03,620 Dit sal loop. 1092 00:53:03,620 --> 00:53:07,780 fread sal een byte terugkeer en stoor dit in die buffer. 1093 00:53:07,780 --> 00:53:11,290 En dit sal evalueer tot 1, reg, nadat hy terug 1. 1094 00:53:11,290 --> 00:53:12,640 >> Dus, terwyl 1. 1095 00:53:12,640 --> 00:53:15,325 Dit beteken nie dat die kode binne-in Die while lus sal voer? 1096 00:53:15,325 --> 00:53:15,453 >> STUDENT 47: Ja. 1097 00:53:15,453 --> 00:53:16,040 Dit is waar. 1098 00:53:16,040 --> 00:53:16,290 >> JASON Hirsch: Ja. 1099 00:53:16,290 --> 00:53:17,490 1 is waar. 1100 00:53:17,490 --> 00:53:18,240 Dit is nie 0. 1101 00:53:18,240 --> 00:53:20,360 So die kode binnekant hier sal voer. 1102 00:53:20,360 --> 00:53:22,300 So ons sal skryf nie. 1103 00:53:22,300 --> 00:53:25,340 Ons sal terug te skuif na hierdie weereens. 1104 00:53:25,340 --> 00:53:26,850 Nou het ons - 1105 00:53:26,850 --> 00:53:28,550 ons is aan die einde van ons lêer. 1106 00:53:28,550 --> 00:53:30,980 Ons lees van die einde van ons leer, want ons het net een byte in dit. 1107 00:53:30,980 --> 00:53:34,270 >> Fread terug 0, winkels iets in buffer. 1108 00:53:34,270 --> 00:53:35,890 Ek eerlik weet nie wat dit slaan in buffer. 1109 00:53:35,890 --> 00:53:38,380 Ons kan seker kyk om te sien wat hy doen nie. 1110 00:53:38,380 --> 00:53:40,130 Dat ek eerlik weet nie. 1111 00:53:40,130 --> 00:53:43,090 Ons weet nie, wie wat omgee dit slaan in buffer? 1112 00:53:43,090 --> 00:53:44,010 Maar dit beteken terugkeer 0. 1113 00:53:44,010 --> 00:53:45,440 En sal Terwyl 0 voer? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> TERWYL 0 sal uitvoer nie. 1116 00:53:51,180 --> 00:53:54,030 So dan sal ons hier te beweeg. 1117 00:53:54,030 --> 00:53:58,870 So laat ons 'n opsteek van hande of hierdie is die kode wat ons moet loop, of as ons 1118 00:53:58,870 --> 00:54:00,140 moet veranderinge eerste doen. 1119 00:54:00,140 --> 00:54:02,180 So as jy dink - jy het om te stem. 1120 00:54:02,180 --> 00:54:06,885 As jy dink ons ​​moet hierdie kode hardloop soos dit is, kan jy jou hand. 1121 00:54:06,885 --> 00:54:12,440 1122 00:54:12,440 --> 00:54:13,400 >> OK. 1123 00:54:13,400 --> 00:54:14,315 Daar is een - 1124 00:54:14,315 --> 00:54:17,260 jy het 'n vraag, kommer? 1125 00:54:17,260 --> 00:54:18,080 Ja. 1126 00:54:18,080 --> 00:54:21,240 >> STUDENT 48: Nadat ons beweeg buffer buitekant van die lus, doen ons 1127 00:54:21,240 --> 00:54:22,670 het om dit te malloc? 1128 00:54:22,670 --> 00:54:23,310 >> JASON Hirsch: Groot vraag. 1129 00:54:23,310 --> 00:54:26,670 Nadat ons beweeg buffer buite die lus, het ons dit te malloc? 1130 00:54:26,670 --> 00:54:28,400 Dit is 'n omvang vraag. 1131 00:54:28,400 --> 00:54:32,130 As ons inisialiseer buffer buite van hierdie lus, sal dit bestaan 1132 00:54:32,130 --> 00:54:33,534 binnekant van die loop? 1133 00:54:33,534 --> 00:54:35,230 >> MEERVOUDIGE STUDENTE: Ja. 1134 00:54:35,230 --> 00:54:35,580 >> JASON Hirsch: Ja. 1135 00:54:35,580 --> 00:54:40,100 Die omvang dek binnekant van die loop, en, regtig, enigiets onder dit binne 1136 00:54:40,100 --> 00:54:42,460 van hierdie kode, insluitend die dinge in hier. 1137 00:54:42,460 --> 00:54:43,930 Sodat ons nie nodig het om dit te malloc. 1138 00:54:43,930 --> 00:54:47,766 Dit is 'n plaaslike veranderlike, en die omvang sluit nog steeds die lus. 1139 00:54:47,766 --> 00:54:49,540 >> STUDENT 49: Het ons nodig om dit te bevry? 1140 00:54:49,540 --> 00:54:51,770 >> JASON Hirsch: Het ons moet vry buffer? 1141 00:54:51,770 --> 00:54:53,860 >> STUDENT 49: Ja, as ons dit nie doen nie malloc. 1142 00:54:53,860 --> 00:54:55,750 >> JASON Hirsch: Het ons moet vry buffer? 1143 00:54:55,750 --> 00:54:57,160 Ons doen nie. 1144 00:54:57,160 --> 00:55:01,280 Weereens, dit is 'n plaaslike veranderlike, sodat ons nie nodig het om dit te bevry. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 Kom ons kyk wat gebeur. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 So is dit geïnitialiseerd. 1149 00:55:18,220 --> 00:55:20,830 Dit was wat iets wat Marcus voorgestelde vroeër. 1150 00:55:20,830 --> 00:55:25,340 So het ons dat die fout, veranderlike buffer is geïnitialiseerd wanneer hier gebruik. 1151 00:55:25,340 --> 00:55:26,590 >> Hoe kan ons dit regmaak? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> STUDENT 50: malloc dit? 1154 00:55:30,960 --> 00:55:31,770 >> STUDENT 51: Equals NULL? 1155 00:55:31,770 --> 00:55:33,000 >> STUDENT 52: Sê buffer gelyk NULL. 1156 00:55:33,000 --> 00:55:34,250 >> JASON Hirsch: OK. 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 Lyk goed. 1159 00:55:40,770 --> 00:55:42,410 Ons het dit nou. 1160 00:55:42,410 --> 00:55:45,630 Kom ons skep iets kopiëring te probeer. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 So het ons ons teks lêer. 1163 00:56:10,490 --> 00:56:11,740 Hoe kan ons hierdie program? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 Ja. 1166 00:56:15,472 --> 00:56:22,230 >> STUDENT 53: Jy kan dot doen streep CP, test.txt. 1167 00:56:22,230 --> 00:56:25,140 En dan kan jy 'n ander lêer naam wat dit sal stoor in. 1168 00:56:25,140 --> 00:56:25,510 >> JASON Hirsch: OK. 1169 00:56:25,510 --> 00:56:27,380 Ons sal noem dit out.txt. 1170 00:56:27,380 --> 00:56:28,630 Cool? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 Seg skuld. 1173 00:56:34,320 --> 00:56:35,570 Gedagtes oor die seg skuld? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 Dit is 'n groot. 1176 00:56:41,390 --> 00:56:45,040 Hoe kan ons uitvind waar die seg skuld is? 1177 00:56:45,040 --> 00:56:45,680 Wat? 1178 00:56:45,680 --> 00:56:45,990 >> STUDENT 54: GDB. 1179 00:56:45,990 --> 00:56:47,240 >> JASON Hirsch: GDB. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 Ons loop gdb deur te skryf gdb dot streep die naam van ons program. 1182 00:56:55,300 --> 00:56:57,020 Geen command line argumente daar. 1183 00:56:57,020 --> 00:56:59,570 Ons gaan 'n stel breekpunt te Hoofstraat. 1184 00:56:59,570 --> 00:57:02,190 As ek wil gdb te begin, wat moet ek doen? 1185 00:57:02,190 --> 00:57:02,730 >> STUDENT 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> JASON Hirsch: R. En wat dan? 1187 00:57:08,910 --> 00:57:09,400 >> STUDENT 55: Die argumente? 1188 00:57:09,400 --> 00:57:10,650 >> JASON Hirsch: Toe het die opdrag-lyn argumente. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 Kom ons loop deur. 1191 00:57:17,120 --> 00:57:19,090 N is net om my lyn deur die lyn. 1192 00:57:19,090 --> 00:57:21,450 Ek gaan om te gaan tot Ek kry my seg skuld. 1193 00:57:21,450 --> 00:57:22,700 Daar is my seg skuld. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Dit lyk soos fread veroorsaak my seg skuld. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Ek weet fread veroorsaak my seg skuld, want dit was die 1198 00:57:32,770 --> 00:57:34,950 lyn wat ons net uitgevoer word. 1199 00:57:34,950 --> 00:57:36,530 >> En die enigste ding wat was gebeur in die lyn - 1200 00:57:36,530 --> 00:57:37,520 twee dinge gebeur. 1201 00:57:37,520 --> 00:57:40,610 Fread gaan, en dan was ons doen 'n paar TERWYL nagaan. 1202 00:57:40,610 --> 00:57:44,820 Ek is bereid om te wed dat die TERWYL kontrole is nie veroorsaak dat my seg skuld. 1203 00:57:44,820 --> 00:57:46,950 Heel waarskynlik, fread was veroorsaak dat my seg skuld. 1204 00:57:46,950 --> 00:57:49,260 Ek sien ook iets hier, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Geheue kopie. 1206 00:57:50,500 --> 00:57:53,820 Klink soos die verskuiwing van die geheue van een plek na die ander. 1207 00:57:53,820 --> 00:57:56,890 Klink soos iets wat sou gebeur in fread, miskien 'n paar geheue 1208 00:57:56,890 --> 00:57:58,910 beweeg van hier tot hier. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 Kom ons gaan deur dit weer. 1211 00:58:03,860 --> 00:58:06,900 Hoe begin ek dit oor en voer dit weer? 1212 00:58:06,900 --> 00:58:08,092 Ja. 1213 00:58:08,092 --> 00:58:15,140 >> STUDENT 56: Het jy nodig het om te sit 'n ampersand voor buffer? 1214 00:58:15,140 --> 00:58:17,800 >> JASON Hirsch: So-teken, voordat buffer sal die adres van my 1215 00:58:17,800 --> 00:58:22,330 buffer, wat 'n kar *. 1216 00:58:22,330 --> 00:58:25,250 Kom ons loop deur middel van hierdie een keer. 1217 00:58:25,250 --> 00:58:28,248 Hoe kan ek loop deur dit een keer? 1218 00:58:28,248 --> 00:58:29,210 >> STUDENT 57: Kan jy net Tik weer hardloop? 1219 00:58:29,210 --> 00:58:32,050 >> JASON Hirsch: tik net loop weer. 1220 00:58:32,050 --> 00:58:33,415 So ons gaan nie voer hierdie lyn. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 So buffer is 'n leë wyser. 1223 00:58:39,240 --> 00:58:40,490 Korrek? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 Dit dui op - laat ons sien. 1226 00:58:47,060 --> 00:58:48,500 As ons ons - 1227 00:58:48,500 --> 00:58:50,430 trek 'n vinnige foto van hierdie. 1228 00:58:50,430 --> 00:58:53,500 Kan almal te sien of Ek skryf oor hier? 1229 00:58:53,500 --> 00:59:02,890 >> So in die stapel te plaas, het ons 'n plaaslike veranderlike en dit genoem buffer, en 1230 00:59:02,890 --> 00:59:08,230 dit is 'n verwysing na 'n kar. 1231 00:59:08,230 --> 00:59:10,325 Wat adres is hierdie kar op? 1232 00:59:10,325 --> 00:59:12,550 >> STUDENT 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> JASON Hirsch: Right. 1234 00:59:13,400 --> 00:59:14,200 Dit is wat dit is. 1235 00:59:14,200 --> 00:59:17,600 In hier, binne buffer, gestoor 0x0. 1236 00:59:17,600 --> 00:59:20,480 Dit is wat ons het - die opstel van ons het op die oomblik. 1237 00:59:20,480 --> 00:59:27,540 So hierdie lyn, fread, sit iets van die bron waar? 1238 00:59:27,540 --> 00:59:30,560 In hierdie boks of die boks? 1239 00:59:30,560 --> 00:59:31,060 Watter boks? 1240 00:59:31,060 --> 00:59:33,290 Links box-of die regterkant box? 1241 00:59:33,290 --> 00:59:34,750 Hierdie reg boks. 1242 00:59:34,750 --> 00:59:38,440 >> Dit volg op die muis, en sit dit in hier. 1243 00:59:38,440 --> 00:59:42,620 Wanneer ons probeer kontak geheue plek 0, Wat kry ons? 1244 00:59:42,620 --> 00:59:45,050 'N segmentering skuld. 1245 00:59:45,050 --> 00:59:46,550 Dit is die fout wat ons het op die oomblik. 1246 00:59:46,550 --> 00:59:46,970 Ja. 1247 00:59:46,970 --> 00:59:48,410 >> STUDENT 59: Moenie jy star buffer te sit? 1248 00:59:48,410 --> 00:59:49,180 Of nee? 1249 00:59:49,180 --> 00:59:50,050 Vir fread? 1250 00:59:50,050 --> 00:59:51,450 >> JASON Hirsch: So fread neem 'n wyser. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 So dit gaan in buffer. 1253 00:59:55,900 --> 00:59:58,980 En dan sal dit de-verwysing dit iewers binne fread. 1254 00:59:58,980 --> 01:00:00,700 Maar weereens, sien ons, neem dit 'n wyser. 1255 01:00:00,700 --> 01:00:02,560 Ons het dit nie nodig om te slaag ster buffer. 1256 01:00:02,560 --> 01:00:05,350 Dit sou aanstuur dit alles hier is. 1257 01:00:05,350 --> 01:00:07,980 En dit sal waarskynlik gee ons 'n fout omdat ons de-verwysing nie. 1258 01:00:07,980 --> 01:00:08,150 >> Reg? 1259 01:00:08,150 --> 01:00:10,690 Wanneer ons die verwysing van hierdie wyser, wanneer ons probeer om hierdie plek om toegang te verkry, 1260 01:00:10,690 --> 01:00:13,140 ons kry 'n fout - ons segmentering skuld. 1261 01:00:13,140 --> 01:00:15,800 So - 1262 01:00:15,800 --> 01:00:16,690 Oeps. 1263 01:00:16,690 --> 01:00:19,090 Ons gaan om op te hou uit gdb. 1264 01:00:19,090 --> 01:00:20,160 Ons lyn - 1265 01:00:20,160 --> 01:00:22,990 ons probleem - is reg hier op hierdie lyn. 1266 01:00:22,990 --> 01:00:26,410 En dit is 'n probleem, want van hierdie lyn. 1267 01:00:26,410 --> 01:00:31,780 >> Hoe kan ons 'n boks wat toeganklik is in fread. 1268 01:00:31,780 --> 01:00:31,980 Reg? 1269 01:00:31,980 --> 01:00:35,190 Ons moet 'n boks dit is een te skep byte groot, die grootte van 'n kar. 1270 01:00:35,190 --> 01:00:38,590 Maar ons moet daardie boks om toeganklik te wees Wanneer hierdie funksie voer. 1271 01:00:38,590 --> 01:00:39,390 So waar - 1272 01:00:39,390 --> 01:00:39,640 ja. 1273 01:00:39,640 --> 01:00:40,440 Enige idees? 1274 01:00:40,440 --> 01:00:43,615 >> STUDENT 60: Net dit as enige ewekansige karakter. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 Doen net kar buffer gelykes die karakter. 1277 01:00:51,640 --> 01:00:53,795 En dan, wanneer jy daar buffer - 1278 01:00:53,795 --> 01:00:54,110 >> JASON Hirsch: wag. 1279 01:00:54,110 --> 01:00:55,110 Kar buffer? 1280 01:00:55,110 --> 01:00:55,880 Sodat daar geen sterre? 1281 01:00:55,880 --> 01:00:56,390 >> STUDENT 60: Ja. 1282 01:00:56,390 --> 01:00:58,560 Neem uit die sterre. 1283 01:00:58,560 --> 01:01:00,690 Gelyk aan 'n ewekansige karakter. 1284 01:01:00,690 --> 01:01:01,460 >> JASON Hirsch: OK. 1285 01:01:01,460 --> 01:01:02,420 So gee my 'n. 1286 01:01:02,420 --> 01:01:03,170 >> STUDENT 60: Soos 'n of iets. 1287 01:01:03,170 --> 01:01:06,160 En dan wanneer jy 'n buffer daar, jy gebruik om 'n - 1288 01:01:06,160 --> 01:01:06,420 >> STUDENT 61: Star? 1289 01:01:06,420 --> 01:01:07,650 O nee, die ampersand. 1290 01:01:07,650 --> 01:01:09,000 >> STUDENT 60: Gebruik die ampersand. 1291 01:01:09,000 --> 01:01:09,470 >> JASON Hirsch: OK. 1292 01:01:09,470 --> 01:01:11,320 En wat van in fwrite? 1293 01:01:11,320 --> 01:01:14,150 >> STUDENT 60: Gebruik die ampersand weer. 1294 01:01:14,150 --> 01:01:14,320 >> JASON Hirsch: Alle reg. 1295 01:01:14,320 --> 01:01:20,970 So jou idee is, het ons 'n kar en sit iets in dit, en dan 1296 01:01:20,970 --> 01:01:22,612 skryf dat kar. 1297 01:01:22,612 --> 01:01:23,760 >> STUDENT 60: Ja. 1298 01:01:23,760 --> 01:01:25,916 >> JASON Hirsch: Wat dink mense nie? 1299 01:01:25,916 --> 01:01:27,770 >> STUDENT 62: Dit is ingewikkelde. 1300 01:01:27,770 --> 01:01:28,460 >> JASON Hirsch: OK. 1301 01:01:28,460 --> 01:01:29,760 Kom ons teken dit uit. 1302 01:01:29,760 --> 01:01:35,720 So hierdie tyd, ek gaan om dit te maak in rooi op die stapel hier, en dan het ons 1303 01:01:35,720 --> 01:01:36,410 sal hê - 1304 01:01:36,410 --> 01:01:36,822 ooh! 1305 01:01:36,822 --> 01:01:38,060 Jammer. 1306 01:01:38,060 --> 01:01:45,930 So hierdie tyd het ons het iets genoem buffer, en dit is op die stapel. 1307 01:01:45,930 --> 01:01:48,430 Korrek? 1308 01:01:48,430 --> 01:01:51,520 En ons spaar in dit 'n aanvanklik. 1309 01:01:51,520 --> 01:01:53,830 >> Dan het ons ons oproep om fread. 1310 01:01:53,830 --> 01:02:01,300 Wat fread nie is wat dit neem om 'n greep uit ons lêer en plaas dit iewers. 1311 01:02:01,300 --> 01:02:04,570 Dit sit dit in alles wat die ding is wat verwys na. 1312 01:02:04,570 --> 01:02:09,130 Wel, voordat ons hierdie adres - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 Nou wat adres het ons? 1315 01:02:13,349 --> 01:02:14,650 >> STUDENT 63: Wat adres buffer is. 1316 01:02:14,650 --> 01:02:15,970 >> JASON Hirsch: Wat adres buffer is. 1317 01:02:15,970 --> 01:02:22,370 Dit is waarskynlik gaan om te wees iets soos dit. 1318 01:02:22,370 --> 01:02:26,950 Waarskynlik gaan om te begin met 'n b en 'n Vrou, en dan het ses ander 1319 01:02:26,950 --> 01:02:27,970 hexadecimalen. 1320 01:02:27,970 --> 01:02:28,480 Maak nie saak nie. 1321 01:02:28,480 --> 01:02:29,470 Sommige adres. 1322 01:02:29,470 --> 01:02:31,410 En ons is verby daardie adres in 1323 01:02:31,410 --> 01:02:34,790 >> En ons gaan ons een te sit byte ding by daardie adres. 1324 01:02:34,790 --> 01:02:38,470 So ons gaan ons een te sit byte ding binne-in hier. 1325 01:02:38,470 --> 01:02:40,800 En dan gaan ons uit te skryf Wat is ooit binne-in hier. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 Het enige iemand enige vrae oor wat? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 Wie dink hierdie kode sal werk? 1330 01:02:54,690 --> 01:02:56,020 >> Lig jou hand as jy dink hierdie kode sal werk. 1331 01:02:56,020 --> 01:02:57,270 Jy het 'n standpunt in te neem. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 En wat dink hierdie kode sal nie werk nie? 1334 01:03:02,500 --> 01:03:04,610 Lig jou hand. 1335 01:03:04,610 --> 01:03:06,750 Almal anders moet wees die verhoging van hul hand. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 Michael, waar staan ​​jy? 1338 01:03:09,390 --> 01:03:10,680 >> Michael: Ek kan nie besluit. 1339 01:03:10,680 --> 01:03:12,070 Soort in die middel. 1340 01:03:12,070 --> 01:03:12,736 >> JASON Hirsch: Jy is in die middel. 1341 01:03:12,736 --> 01:03:13,092 Kies een. 1342 01:03:13,092 --> 01:03:14,400 >> Michael: Ek sal geloof en sê dit sal werk. 1343 01:03:14,400 --> 01:03:14,660 >> JASON Hirsch: OK. 1344 01:03:14,660 --> 01:03:16,047 Jy sal geloof het en sê dit werk? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 Wat het gebeur? 1347 01:03:27,020 --> 01:03:28,270 >> [INTERPOSING Voices] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON Hirsch: Nee seg skuld. 1350 01:03:35,950 --> 01:03:40,320 Hoe kan ons kyk om te sien of twee dinge gelyk? 1351 01:03:40,320 --> 01:03:42,060 Twee lêers gelyk. 1352 01:03:42,060 --> 01:03:43,300 >> STUDENT 64: verskil. 1353 01:03:43,300 --> 01:03:45,490 >> JASON Hirsch: verskil. 1354 01:03:45,490 --> 01:03:51,630 Verskil tjeks vir die verskille tussen twee lêers, en as dit terug 1355 01:03:51,630 --> 01:03:52,890 niks, hulle is identies. 1356 01:03:52,890 --> 01:03:59,030 En as ons oopmaak, kry ons ons lêer. 1357 01:03:59,030 --> 01:04:00,490 So dit was die korrekte oplossing. 1358 01:04:00,490 --> 01:04:01,780 Kom ons kyk terug by dit nog een keer. 1359 01:04:01,780 --> 01:04:04,080 Ons het eintlik nie eens nodig het om dit te begin. 1360 01:04:04,080 --> 01:04:05,520 >> Dit sou moontlik 'n bietjie skoner as jy nie sit 1361 01:04:05,520 --> 01:04:07,680 iets ewekansige daar. 1362 01:04:07,680 --> 01:04:13,070 Die punt is, wat jy nodig het om te skep 'n ruimte om iets uit te stoor 1363 01:04:13,070 --> 01:04:15,530 fread en iets te neem uit fwrite. 1364 01:04:15,530 --> 01:04:18,400 En dat die ding moes óf 'n plaaslike veranderlike op die stapel - jy 1365 01:04:18,400 --> 01:04:19,890 kon malloc'd het 'n ruimte. 1366 01:04:19,890 --> 01:04:23,030 >> So het ons eintlik kan hê geskryf malloc hier, en 1367 01:04:23,030 --> 01:04:25,420 wat sou gewerk het. 1368 01:04:25,420 --> 01:04:28,660 En dan sou ons gewees het berging ons dinge iewers op die hoop. 1369 01:04:28,660 --> 01:04:31,940 Maar dit is eintlik, waarskynlik, die mees elegante oplossing. 1370 01:04:31,940 --> 01:04:34,490 Net skep 'n ruimte op die stapel hierdie dinge te gaan. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> Ek sou twee ander kommentaar. 1373 01:04:38,990 --> 01:04:44,650 As jy weer te neem aan hierdie en Dan kry aangeteken op hierdie, my kommentaar 1374 01:04:44,650 --> 01:04:47,400 sou soos volg wees. 1375 01:04:47,400 --> 01:04:54,300 Hierdie 1 is hier, vir my, kyk soos magic nommers. 1376 01:04:54,300 --> 01:04:56,860 Dit 1, in terme van fread, sin maak. 1377 01:04:56,860 --> 01:04:59,580 Dit is die aantal van die dinge wat lees of skryf nie. 1378 01:04:59,580 --> 01:05:03,740 >> Maar hierdie een hier moet waarskynlik iets anders wees. 1379 01:05:03,740 --> 01:05:05,180 So, wat is 'n oplossing? 1380 01:05:05,180 --> 01:05:06,545 >> STUDENT 65: Grootte van byte. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON Hirsch: Soos wat? 1383 01:05:11,080 --> 01:05:13,130 >> STUDENT 65: Grootte van kar. 1384 01:05:13,130 --> 01:05:13,820 >> JASON Hirsch: Grootte van kar. 1385 01:05:13,820 --> 01:05:15,290 Ja, byte is nie 'n tipe. 1386 01:05:15,290 --> 01:05:16,320 So grootte van char werk. 1387 01:05:16,320 --> 01:05:30,270 Ons kan hê, aan die bokant van ons kode, # gedefinieer nie. 1388 01:05:30,270 --> 01:05:33,410 Genoem iets BYTE en dit is regtig 'n kar. 1389 01:05:33,410 --> 01:05:37,675 Eintlik, selfs 'n beter benadering kan dit gewees het - 1390 01:05:37,675 --> 01:05:39,391 uint. 1391 01:05:39,391 --> 01:05:40,780 Enigiemand wat weet wat dit is? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> Jammer. 1394 01:05:44,840 --> 01:05:46,090 Ek het dit agteruit. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 Wag, nee. 1397 01:05:52,200 --> 01:05:53,450 Watter manier gaan dit? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 Enigiemand wat weet wat dit is? 1400 01:05:59,660 --> 01:06:00,950 Ja. 1401 01:06:00,950 --> 01:06:05,650 >> STUDENT 67: veronderstel om te help standaardiseer oor stelsels dinge wat 1402 01:06:05,650 --> 01:06:08,760 het - soos unsigned heelgetalle wat 8 grepe? 1403 01:06:08,760 --> 01:06:11,785 >> JASON Hirsch: Dis presies reg. 1404 01:06:11,785 --> 01:06:14,310 Op verskillende masjiene, die grootte van 'n kar - 1405 01:06:14,310 --> 01:06:15,180 gewoonlik nie 'n kar. 1406 01:06:15,180 --> 01:06:16,100 Karakters is gewoonlik een byte. 1407 01:06:16,100 --> 01:06:19,590 Maar die grootte van ander data tipes is verskillende groottes op 'n 32-bit masjien 1408 01:06:19,590 --> 01:06:21,370 teenoor 'n 64-bit masjien. 1409 01:06:21,370 --> 01:06:25,180 'N uint8_t is altyd 8 stukkies - 1410 01:06:25,180 --> 01:06:27,210 altyd een greep. 1411 01:06:27,210 --> 01:06:29,580 >> En ek nodig het om te sluit wat standaard int kop lêer. 1412 01:06:29,580 --> 01:06:35,040 So nou, dit sou waarskynlik gewees die beste manier om hierdie kode te skryf. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 So ek ontslae raak van die magic nommers. 1415 01:06:41,450 --> 01:06:44,690 En ek het ook 'n meer logiese tik vir buffer. 1416 01:06:44,690 --> 01:06:49,450 Dit is nie net 'n kar, dit is 'n greep, en dit is wat ons verwag om dit te wees. 1417 01:06:49,450 --> 01:06:53,400 >> En hier, ons het eintlik 'n bietjie meer robuuste. 1418 01:06:53,400 --> 01:06:55,190 Ons is nie noem dit 'n kar, wat - 1419 01:06:55,190 --> 01:06:58,630 miskien, wie weet - kan 'n ander grootte op verskillende masjiene. 1420 01:06:58,630 --> 01:07:02,025 Ons is eintlik sê dit is presies een greep, altyd, maak nie saak wat. 1421 01:07:02,025 --> 01:07:05,810 En as ons kyk hier, maak ons ​​CP. 1422 01:07:05,810 --> 01:07:08,340 Uh-oh. 1423 01:07:08,340 --> 01:07:09,590 Wat het gebeur? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> STUDENT 68: Dit kan aangeskakel word. 1426 01:07:16,170 --> 01:07:17,880 >> JASON Hirsch: Wat? 1427 01:07:17,880 --> 01:07:19,130 >> STUDENT 69: Is dit? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> STUDENT 70: Jy het nie dit as 'n tipe definieer. 1430 01:07:25,080 --> 01:07:28,684 >> STUDENT 71: Maar dit moet word gedefinieer in die standaard. 1431 01:07:28,684 --> 01:07:29,934 >> STUDENT 72: Wat gaan aan? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> STUDENT 73: Indien definieer wees hoofletters? 1434 01:07:40,210 --> 01:07:41,370 >> JASON Hirsch: So dit is nie # definieer. 1435 01:07:41,370 --> 01:07:45,490 Eintlik, in hierdie geval, is ek gaan gebruik typedef. 1436 01:07:45,490 --> 01:07:48,590 Omdat ons gebruik dit as 'n tipe in een plek. 1437 01:07:48,590 --> 01:07:51,990 So in hierdie geval, het ons eintlik wil typedef soos ons 'n nuwe soort druk 1438 01:07:51,990 --> 01:07:54,490 byte, en dit is, in wese, hierdie. 1439 01:07:54,490 --> 01:07:56,590 Dit is 'n bietjie anders as # definieer. 1440 01:07:56,590 --> 01:08:02,740 >> En nou, ons kode werk perfek. 1441 01:08:02,740 --> 01:08:05,230 So, weer, # definieer neem iets, vervang dit oral 1442 01:08:05,230 --> 01:08:06,780 met die ander ding. 1443 01:08:06,780 --> 01:08:07,920 Dit is net 'n makro - 1444 01:08:07,920 --> 01:08:09,420 snelskrif om ontslae te raak van die magie nommers. 1445 01:08:09,420 --> 01:08:11,360 Maar in hierdie geval, want ons is gebruik dit as 'n tipe - 1446 01:08:11,360 --> 01:08:12,180 reg hier - 1447 01:08:12,180 --> 01:08:19,880 ten einde vir dit om te werk, moet ons te typedef net byte is. 1448 01:08:19,880 --> 01:08:21,840 >> En ons is die definisie van dit hier. 1449 01:08:21,840 --> 01:08:24,750 Dit is nie 'n struct, dit is eintlik net 'n ongetekende heelgetal. 1450 01:08:24,750 --> 01:08:27,680 Dit is een byte lank. 1451 01:08:27,680 --> 01:08:31,910 Hierdie kode sal aanlyn beskikbaar wees, en julle almal moet dit op die oomblik het. 1452 01:08:31,910 --> 01:08:33,830 >> So ons het - 1453 01:08:33,830 --> 01:08:34,250 volmaak - 1454 01:08:34,250 --> 01:08:41,359 13 minute oor te gaan oor die probleem stel 5. 1455 01:08:41,359 --> 01:08:44,270 Ek wil saam met copy.c om te loop, en dan sal ons praat kortliks 1456 01:08:44,270 --> 01:08:47,120 oor die ander dele van die probleem stel. 1457 01:08:47,120 --> 01:08:48,899 So laat my trek copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 En die cool ding is, ons het eintlik reeds geskryf 'n baie van hierdie kode. 1460 01:09:08,810 --> 01:09:11,180 >> Die kode wat ons letterlik geskryf het net het uit hier toe ek 1461 01:09:11,180 --> 01:09:13,120 op my eie skryf. 1462 01:09:13,120 --> 01:09:16,990 Maar dit is copy.c, vorm die grondslag vir die eerste twee dele van 1463 01:09:16,990 --> 01:09:22,340 die probleem wat vir whodunit.c, wat wat jy nodig het om te skryf, en resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, wat is die derde en finale deel van die probleem stel, is nie 1465 01:09:27,050 --> 01:09:29,529 gebaseer af van hierdie lêer. 1466 01:09:29,529 --> 01:09:32,200 >> Jy gaan nodig om die lêer te skryf, ons gee jou 'n sjabloon vir daardie 1467 01:09:32,200 --> 01:09:34,620 dien, maar dit het niks te doen met copy.c. 1468 01:09:34,620 --> 01:09:38,675 Maar omdat copy.c is die grondslag vir die eerste twee dele, ons gaan 1469 01:09:38,675 --> 01:09:42,000 nou deur dit te loop, so jy hoef 'n goeie sin van wat dit doen. 1470 01:09:42,000 --> 01:09:43,640 >> En die kommentaar gee 'n paar van dit weg. 1471 01:09:43,640 --> 01:09:45,120 Ons het reeds geskryf sommige van hierdie. 1472 01:09:45,120 --> 01:09:49,220 Eerste, ons seker maak kry ons drie argumente. 1473 01:09:49,220 --> 01:09:50,560 Volgende, ons onthou die lêer se naam. 1474 01:09:50,560 --> 01:09:52,960 So het ons hierdie stap oorgeslaan toe ons gekodeerde ons ding - 1475 01:09:52,960 --> 01:09:54,700 Toe ons CP. 1476 01:09:54,700 --> 01:09:56,750 Maar hier, hulle maak dit 'n bietjie skoner. 1477 01:09:56,750 --> 01:09:59,350 >> Hulle is die nagaan om seker te maak beide lêers is goed, in 1478 01:09:59,350 --> 01:10:00,450 Benewens die opening van hulle. 1479 01:10:00,450 --> 01:10:04,760 Ons het al hierdie kode nou net, so ek is gaan nie op hierdie kode te woon. 1480 01:10:04,760 --> 01:10:09,670 Volgende is 'n paar dinge wat spesifiek vir die tipes lêers wat ons gebruik, wat 1481 01:10:09,670 --> 01:10:12,240 is bitmap lêers. 1482 01:10:12,240 --> 01:10:15,660 Bitmap lêers het 'n paar metadata verband hou met hulle. 1483 01:10:15,660 --> 01:10:20,190 >> So het die eerste paar grepe vertel oor die lêer. 1484 01:10:20,190 --> 01:10:23,460 Hulle is nie die kleure van die pixel in die beeld. 1485 01:10:23,460 --> 01:10:25,120 Hulle vertel oor die lêer. 1486 01:10:25,120 --> 01:10:28,220 En as jy deur die probleem stel te lees, jy sal baie meer inligting oor 1487 01:10:28,220 --> 01:10:33,100 Op watter tipe metadata strukture ingesluit met bitmaps. 1488 01:10:33,100 --> 01:10:39,350 >> Maar dit is die rede waarom ons hierdie eerste stel - hierdie kode hier. 1489 01:10:39,350 --> 01:10:42,490 Ons lees van die metadata - 1490 01:10:42,490 --> 01:10:45,800 twee stukke van metadata - die lêer kop-en die info kop. 1491 01:10:45,800 --> 01:10:51,030 En ons is die beheer van sekere dele daarvan te maak seker dit is 'n ware bitmap lêer 1492 01:10:51,030 --> 01:10:52,420 voordat u voortgaan. 1493 01:10:52,420 --> 01:10:55,470 >> En weer, dit is besonderhede wat ons nie nodig het om te gaan in die nou. 1494 01:10:55,470 --> 01:10:57,720 As jy deur die probleem stel te lees, jy sal verstaan ​​hierdie. 1495 01:10:57,720 --> 01:11:01,370 Lang storie kort, word dit net sê, dit is 'n bitmap-lêer, en 1496 01:11:01,370 --> 01:11:02,810 bevestig dat. 1497 01:11:02,810 --> 01:11:05,180 >> Volgende, ons diegene skryf die uit-lêer. 1498 01:11:05,180 --> 01:11:05,660 Ons sien dat hier. 1499 01:11:05,660 --> 01:11:06,910 Ons skryf aan die uit wyser. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 Volgende, ons bepaling van padding. 1502 01:11:11,320 --> 01:11:15,240 So weer, soos met besondere 'n bitmap-lêer, 'n paar lyne sluit 1503 01:11:15,240 --> 01:11:16,840 padding aan die einde. 1504 01:11:16,840 --> 01:11:19,000 En as jy deur die probleem stel te lees, nie meer omtrent padding sal leer. 1505 01:11:19,000 --> 01:11:22,330 Dit is die formule padding te vind. 1506 01:11:22,330 --> 01:11:23,610 >> Belangrik om te onthou - 1507 01:11:23,610 --> 01:11:29,720 wanneer jy die grootte van 'n bitmap verander lêer, die padding veranderinge. 1508 01:11:29,720 --> 01:11:31,970 Wanneer jy die grootte van 'n verandering lêer, die padding veranderinge. 1509 01:11:31,970 --> 01:11:34,310 Dit is nooit gaan wees groter as 3 - 1510 01:11:34,310 --> 01:11:36,510 dit sal wees 0 tot 3, ingesluit. 1511 01:11:36,510 --> 01:11:38,930 Maar wanneer jy die grootte van verandering iets, die padding veranderinge. 1512 01:11:38,930 --> 01:11:47,100 >> As ek net een pixel in die ry, het ek moet drie grepe van padding, want 1513 01:11:47,100 --> 01:11:51,190 Elke ry het veelvoude van vier te wees grepe lank in 'n bitmap lêer. 1514 01:11:51,190 --> 01:11:56,120 Maar as ek verdubbel dit, om te gaan van die een pixel twee pixel, wat elk, 1515 01:11:56,120 --> 01:11:59,510 kom ons sê, is 'n greep, dan moet ek twee grepe van padding te maak 1516 01:11:59,510 --> 01:12:00,970 wat gelyk aan vier. 1517 01:12:00,970 --> 01:12:04,200 >> So wanneer ek verander die grootte van iets, Ek moet die bedrag te verander 1518 01:12:04,200 --> 01:12:06,551 van padding wat ek het. 1519 01:12:06,551 --> 01:12:08,100 Is wat sin maak vir almal? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 Volgende, ons Itereer oor elke ry, of deur middel van al die rye. 1522 01:12:18,720 --> 01:12:21,400 En dan Itereer ons deur elke kolom in elke ry. 1523 01:12:21,400 --> 01:12:25,330 Ons is die behandeling van hierdie bitmap soos 'n rooster, soos ons behandel 1524 01:12:25,330 --> 01:12:26,490 die raad in 15. 1525 01:12:26,490 --> 01:12:29,200 >> Soos ons behandel die stene toe ons gedruk het op die skerm. 1526 01:12:29,200 --> 01:12:31,350 'N rooster van rye en kolomme. 1527 01:12:31,350 --> 01:12:32,350 Dan - ons het dit gesien. 1528 01:12:32,350 --> 01:12:33,840 Ons is eintlik net gekodeer hierdie. 1529 01:12:33,840 --> 01:12:35,780 Ons het 'n paar tydelike stoor. 1530 01:12:35,780 --> 01:12:38,710 Ons lees daar, en dan ons skryf dit uit. 1531 01:12:38,710 --> 01:12:42,680 Dit is presies wat ons nou net gedoen het. 1532 01:12:42,680 --> 01:12:46,760 >> Volgende, want ek het elke lyn eindig in sommige padding, ons 1533 01:12:46,760 --> 01:12:48,260 spring oor wat padding - 1534 01:12:48,260 --> 01:12:51,000 die ou padding. 1535 01:12:51,000 --> 01:12:52,630 En dan voeg ons dit terug. 1536 01:12:52,630 --> 01:12:55,140 In hierdie geval, ons skep presies dieselfde lêer. 1537 01:12:55,140 --> 01:12:56,180 Ons is net die kopiëring van dit. 1538 01:12:56,180 --> 01:12:57,700 So hierdie lyn is 'n soort van dom. 1539 01:12:57,700 --> 01:12:59,660 Ons kon letterlik net sit die padding in 1540 01:12:59,660 --> 01:13:04,290 >> Maar as jy die grootte van die lêer verander, wil jy nog hierdie lyn? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 So as ons verander die grootte van 'n lêer, ons nog steeds wil om oor te slaan 1543 01:13:11,560 --> 01:13:12,810 oor die ou padding? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> STUDENT 74: Ja. 1546 01:13:15,970 --> 01:13:17,090 >> JASON Hirsch: So ons doen. 1547 01:13:17,090 --> 01:13:19,290 Omdat hierdie, weer, handel met die bron lêer. 1548 01:13:19,290 --> 01:13:21,570 Ons gee nie om oor die padding van die bron lêer. 1549 01:13:21,570 --> 01:13:23,410 Ons wil om te gaan na die volgende reël. 1550 01:13:23,410 --> 01:13:28,850 Maar ons het nie net terug te sit die ou bedrag van padding. 1551 01:13:28,850 --> 01:13:31,540 Ons moet terug te sit die nuwe bedrag van padding. 1552 01:13:31,540 --> 01:13:35,810 >> So wanneer ons die grootte van 'n is besig om lêer, ons nog steeds wil om bo-oor die 1553 01:13:35,810 --> 01:13:38,270 padding in die ou lêer - wat ons is in die lees van. 1554 01:13:38,270 --> 01:13:40,370 Maar wat ons skryf te, ons gaan nodig terug te sit 'n paar verskillende 1555 01:13:40,370 --> 01:13:41,890 aantal padding wat Ons het vasgestel. 1556 01:13:41,890 --> 01:13:42,780 Ja. 1557 01:13:42,780 --> 01:13:44,550 >> STUDENT 75: Die einde van die twee lyne nie saak nie, reg? 1558 01:13:44,550 --> 01:13:46,160 Omdat jy die hantering van verskillende lêers. 1559 01:13:46,160 --> 01:13:46,620 >> JASON Hirsch: Presies. 1560 01:13:46,620 --> 01:13:48,220 Die einde van hierdie twee lyne maak nie saak. 1561 01:13:48,220 --> 01:13:49,790 Ons skryf hierdie lyn. 1562 01:13:49,790 --> 01:13:51,430 Dit is hier vir die lêer Ons skryf. 1563 01:13:51,430 --> 01:13:54,370 Dit is belangrik, so ons kry die korrekte bedrag van padding. 1564 01:13:54,370 --> 01:13:57,560 Dit het te doen met die lêer. 1565 01:13:57,560 --> 01:13:58,560 Ons wil slaan reg oor die padding. 1566 01:13:58,560 --> 01:13:59,470 >> Ons wil nie te lees - 1567 01:13:59,470 --> 01:14:01,500 As ons 'n greep te lees op 'n tyd, het ons gee nie om nie oor daardie padding grepe. 1568 01:14:01,500 --> 01:14:04,070 Ons wil om te skuif na die volgende lyn. 1569 01:14:04,070 --> 01:14:11,800 Ten slotte, net soos Lucy het vir ons, Ons sluit die lêers en terugkeer 0. 1570 01:14:11,800 --> 01:14:13,890 So dit is copy.c. 1571 01:14:13,890 --> 01:14:17,850 En ons eintlik geskryf het - ons het die meeste van artikel skryf, in wese. 1572 01:14:17,850 --> 01:14:18,740 >> Jy het dit. 1573 01:14:18,740 --> 01:14:22,440 So ek hoop jy het 'n goeie sin van wat aangaan in hier. 1574 01:14:22,440 --> 01:14:25,890 Die groot verskil, eerlik, is net Die eerste deel wat handel oor 1575 01:14:25,890 --> 01:14:29,970 eienaardighede en gedrag van bitmap lêers. 1576 01:14:29,970 --> 01:14:33,570 So ek het as my volgende skuif, wat moet ons doen? 1577 01:14:33,570 --> 01:14:35,510 Wel, laat ons dink oor detective verhaal. 1578 01:14:35,510 --> 01:14:38,080 >> En vir iemand wat lees die probleem gestel, wat doen ons 1579 01:14:38,080 --> 01:14:41,410 nodig het om te doen in detective verhaal? 1580 01:14:41,410 --> 01:14:42,080 Eenvoudig. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> Aleja: Kan jy neem uit die deel van elke pixel wat rooi dui. 1583 01:14:48,570 --> 01:14:49,730 En dan - 1584 01:14:49,730 --> 01:14:50,730 soort? 1585 01:14:50,730 --> 01:14:51,860 >> JASON Hirsch: OK. 1586 01:14:51,860 --> 01:14:54,460 So neem uit die deel van elke pixel dat die rooi dui. 1587 01:14:54,460 --> 01:14:57,234 Dit is naby, maar nie alles nie. 1588 01:14:57,234 --> 01:14:59,780 >> STUDENT 76: Wel, daar is ' verskillende maniere om dit te doen. 1589 01:14:59,780 --> 01:14:59,870 >> JASON Hirsch: OK. 1590 01:14:59,870 --> 01:15:03,070 Gee my 'n manier. 1591 01:15:03,070 --> 01:15:08,240 >> STUDENT 76: Neem uit al die rooi, en dan beklemtoon die blou en groen. 1592 01:15:08,240 --> 01:15:10,010 >> JASON Hirsch: OK. 1593 01:15:10,010 --> 01:15:11,830 So gegee beide hierdie wyses - 1594 01:15:11,830 --> 01:15:15,210 dit klink asof ons gee dit 'n pixel is, is dit het 'n rooi, blou, en groen vlak. 1595 01:15:15,210 --> 01:15:19,350 Ons wil hê dat die relatiewe vlakke van te verander die rooi, blou, en groen, afhangende 1596 01:15:19,350 --> 01:15:20,740 op die pixel. 1597 01:15:20,740 --> 01:15:28,380 Waar in hierdie kode moet ons verander die relatiewe rooi, blou, en groen 1598 01:15:28,380 --> 01:15:29,720 vlakke van 'n gegewe pixel. 1599 01:15:29,720 --> 01:15:30,600 Nadat ons dit lees - 1600 01:15:30,600 --> 01:15:32,520 voordat ons skryf dit? 1601 01:15:32,520 --> 01:15:34,564 Gee my die lyn nommer. 1602 01:15:34,564 --> 01:15:35,950 >> MEERVOUDIGE STUDENTE: 83. 1603 01:15:35,950 --> 01:15:37,320 >> JASON Hirsch: 83. 1604 01:15:37,320 --> 01:15:38,570 So hier. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 Vir detective verhaal, die kode wat jy nodig het om te skryf, al gaan reg daar. 1607 01:15:45,710 --> 01:15:47,640 En dit is die enigste kode wat jy nodig het om te skryf. 1608 01:15:47,640 --> 01:15:51,520 Omdat, soos ons gehoor het, dat al wat jy nodig het om te doen, is om te verander hierdie relatiewe blou, 1609 01:15:51,520 --> 01:15:54,420 rooi en groen vlakke van elke pixel. 1610 01:15:54,420 --> 01:15:58,250 >> Jy het dit gelees, en nou is jy gaan dit uit te skryf. 1611 01:15:58,250 --> 01:16:03,100 Hoe kry ek - as ek hierdie ding genoem trippel, reg hier, en dit is van 1612 01:16:03,100 --> 01:16:04,570 tik RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 Wel, as ons kyk in bmp.h, Wat is RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> STUDENT 77: Dit is 'n struct. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON Hirsch: RGBTRIPLE is 'n struct. 1618 01:16:18,900 --> 01:16:22,330 Ons sien dat reg hier. 1619 01:16:22,330 --> 01:16:26,600 En so, as ek wou toegang, sê, die rooi vlak van die struct, hoe kan ek 1620 01:16:26,600 --> 01:16:30,005 toegang tot die rooi vlak van hierdie struct? 1621 01:16:30,005 --> 01:16:37,280 >> [KLAS Gerugte] 1622 01:16:37,280 --> 01:16:38,530 >> STUDENT 78: RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> JASON Hirsch: Is dit korrek? 1625 01:16:48,856 --> 01:16:53,040 >> STUDENT 79: Dit moet trippel wees dot, in plaas van RGBTRIPLE dot? 1626 01:16:53,040 --> 01:16:54,120 >> JASON Hirsch: Drie. 1627 01:16:54,120 --> 01:16:56,700 Drie is die plaaslike veranderlike, so hier, is daar geen aanduidings hier. 1628 01:16:56,700 --> 01:16:58,400 Dus het ons net gebruik om die dot-notasie. 1629 01:16:58,400 --> 01:17:00,480 Dit gee my die vlak van die rooi. 1630 01:17:00,480 --> 01:17:06,180 As ek wil om dit te verander, ek het net soos dit gelyk na iets anders. 1631 01:17:06,180 --> 01:17:13,190 So weer, hierdie lyn van die kode toegang hierdie veranderlike in hierdie struct, en 1632 01:17:13,190 --> 01:17:15,070 ons kan dit stel om iets nuuts. 1633 01:17:15,070 --> 01:17:20,040 >> So vir detective verhaal, weer, dit is, In wese is wat ons nodig het om te doen. 1634 01:17:20,040 --> 01:17:21,170 Baie eenvoudig. 1635 01:17:21,170 --> 01:17:25,020 Net verander 'n relatiewe vlakke, en dit is waar dat-kode gaan. 1636 01:17:25,020 --> 01:17:27,720 Grootte, aan die ander kant, is 'n bietjie moeiliker. 1637 01:17:27,720 --> 01:17:30,900 In werklikheid, die grootte is waarskynlik die moeilijkste deel van die probleem stel. 1638 01:17:30,900 --> 01:17:32,720 Ons het drie minute om te gaan oor dit. 1639 01:17:32,720 --> 01:17:34,910 >> Maar weereens, ons het reeds 'n skrywe die meeste van hierdie kode, sodat ons 1640 01:17:34,910 --> 01:17:36,500 behoort redelik bekend is. 1641 01:17:36,500 --> 01:17:40,750 Wat is 'n paar dinge wat ons wil doen in grootte, as jy oor lees die 1642 01:17:40,750 --> 01:17:43,470 probleem gestel? 1643 01:17:43,470 --> 01:17:45,290 As jy hulle vir my, ons kan praat oor hulle. 1644 01:17:45,290 --> 01:17:47,340 Wat is 'n paar dinge wat ons wil doen? 1645 01:17:47,340 --> 01:17:47,970 >> STUDENT 80: Vertikaal - 1646 01:17:47,970 --> 01:17:52,360 so jy hoef te horisontaal grootte daarvan, maar vertikaal grootte dit so goed? 1647 01:17:52,360 --> 01:17:58,475 >> JASON Hirsch: So as ons kry 'n pixel, en ons wil dit om te verander deur 'n 1648 01:17:58,475 --> 01:18:03,460 faktor van twee, is dit nou nodig om te wees verklein horisontaal en verklein 1649 01:18:03,460 --> 01:18:05,220 vertikaal. 1650 01:18:05,220 --> 01:18:06,640 Is wat sin maak? 1651 01:18:06,640 --> 01:18:07,060 Ja. 1652 01:18:07,060 --> 01:18:09,300 So dit is waarskynlik die grootste uitdaging. 1653 01:18:09,300 --> 01:18:10,430 En ons sal praat oor wat in 'n sek. 1654 01:18:10,430 --> 01:18:11,065 Ja. 1655 01:18:11,065 --> 01:18:15,270 >> STUDENT 81: Die manier waarop ek gedink dit is wat jy nodig het druk dit uit - 1656 01:18:15,270 --> 01:18:15,490 >> JASON Hirsch: wag. 1657 01:18:15,490 --> 01:18:17,580 Moet ons nie vertel wat jy gedoen het. 1658 01:18:17,580 --> 01:18:20,620 Ons gaan om te praat in logika. 1659 01:18:20,620 --> 01:18:21,870 >> STUDENT 81: OK. 1660 01:18:21,870 --> 01:18:25,090 1661 01:18:25,090 --> 01:18:27,410 Wat was die vraag? 1662 01:18:27,410 --> 01:18:28,892 >> JASON Hirsch: Jy moet net opgewek jou hand. 1663 01:18:28,892 --> 01:18:31,600 Daar was geen sprake. 1664 01:18:31,600 --> 01:18:32,520 Laat my bied nie. 1665 01:18:32,520 --> 01:18:34,560 Laat my dit kortliks bespreek net. 1666 01:18:34,560 --> 01:18:38,400 So het ons 'n pixel, ons wil herhaal dit, beide horisontaal en 1667 01:18:38,400 --> 01:18:39,360 vertikaal. 1668 01:18:39,360 --> 01:18:48,920 So ideaal wat ons hier doen, is om ons lees in ons pixel, skryf ons dit 1669 01:18:48,920 --> 01:18:51,690 Maar baie van die tye. 1670 01:18:51,690 --> 01:18:54,720 >> Maar dan moet ons ons truuk hier, want dan wil ons oor te slaan na die 1671 01:18:54,720 --> 01:18:57,660 volgende lyn en skryf dit op die begin van die volgende lyn. 1672 01:18:57,660 --> 01:19:02,960 So as ons wil albei te herhaal horisontaal en vertikaal, wat 1673 01:19:02,960 --> 01:19:05,050 'n goeie manier om dit te doen - 1674 01:19:05,050 --> 01:19:06,780 'n goeie maar om dit te doen? 1675 01:19:06,780 --> 01:19:11,950 Sodat ons nie nodig het om voortdurend te soek rondom ons lêer van die dinge te plaas. 1676 01:19:11,950 --> 01:19:14,360 >> Daardie vraag kan nie ' sin gemaak nie, maar ek dink 'n 1677 01:19:14,360 --> 01:19:15,800 beantwoord dit sal help. 1678 01:19:15,800 --> 01:19:17,210 >> STUDENT 82: Skep 'n skikking? 1679 01:19:17,210 --> 01:19:20,090 >> JASON Hirsch: So kom ons dink van elke lêer as 'n ry. 1680 01:19:20,090 --> 01:19:22,550 Kom ons dink in terme van rye. 1681 01:19:22,550 --> 01:19:26,670 As ons ons eerste ry van ons klein foto, kan ons die ry maak 1682 01:19:26,670 --> 01:19:30,640 in 'n groot ry van 'n groot prentjie, en dan herhaal die ry egter 1683 01:19:30,640 --> 01:19:34,250 Baie keer is dit nodig om te herhaal word, eerder as om pixel deur pixel, 1684 01:19:34,250 --> 01:19:37,260 wat kry verwarrend wanneer die hantering van lêers. 1685 01:19:37,260 --> 01:19:38,730 >> Want as ons gehad het - 1686 01:19:38,730 --> 01:19:41,260 Ek hardloop uit die ruimte. 1687 01:19:41,260 --> 01:19:46,490 As dit is ons lêer, en ons het daardie 'n pixel is daar, en ons wil om dit te sit 1688 01:19:46,490 --> 01:19:49,840 net daar, het ons nog 'n paar dinge het dat die behoefte aan meer daar wanneer ons gaan 1689 01:19:49,840 --> 01:19:51,450 skryf en die skep van nuwe lêer - 1690 01:19:51,450 --> 01:19:53,250 ons leer dit is twee keer so groot. 1691 01:19:53,250 --> 01:19:56,820 >> Maar dit is werklik moeilik om met die lêer funksies te slaan om na die nuwe reëls 1692 01:19:56,820 --> 01:20:00,260 soos wat, en dan terug te gaan hier en dinge in daar. 1693 01:20:00,260 --> 01:20:04,500 Dit is byna onmoontlik om iets te doen soos wat, as dit sin maak. 1694 01:20:04,500 --> 01:20:10,180 So as ons dink in terme van rye, kan ons neem ons ry, en dan sit dit - 1695 01:20:10,180 --> 01:20:11,720 herhaal rye vertikaal. 1696 01:20:11,720 --> 01:20:15,860 >> En dit is hoe ons omgaan met die grootte vertikaal eerder as horisontaal. 1697 01:20:15,860 --> 01:20:18,810 Dit was soort van 'n vinnige en 'n bietjie verwarrend. 1698 01:20:18,810 --> 01:20:22,375 Ongelukkig het ons tyd is. 1699 01:20:22,375 --> 01:20:27,340 Ek sal buite staan ​​vir dié van julle hier wat vrae oor die het 1700 01:20:27,340 --> 01:20:30,500 probleem stel, insluitend herstel. 1701 01:20:30,500 --> 01:20:32,320 >> So laat verdaag vir nou. 1702 01:20:32,320 --> 01:20:34,480 En weer, as jy enige vrae het, ons kan buite gesels. 1703 01:20:34,480 --> 01:20:38,294