1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON HIRSCHHORN: Velkommen, alle, til Uge 6. 3 00:00:09,840 --> 00:00:14,790 Jeg er glad for at se jer alle i live og godt efter Quiz 0, fordi jeg ved, at 4 00:00:14,790 --> 00:00:15,810 var en smule ru. 5 00:00:15,810 --> 00:00:18,370 Men heldigvis, jer alle gjorde utroligt godt. 6 00:00:18,370 --> 00:00:21,680 Og sГҘ er vidunderligt. 7 00:00:21,680 --> 00:00:25,840 Hvis du er i min afdeling, jeg har givet de fleste af du sikkerhedskopiere dine quizzer allerede. 8 00:00:25,840 --> 00:00:28,050 >> Et par af jer, jeg mГёde efter klasse. 9 00:00:28,050 --> 00:00:32,360 Og hvis du er en udvidelse studerende og du ikke har modtaget din quiz tilbage 10 00:00:32,360 --> 00:00:35,490 endnu, er din TF sandsynligvis arbejder pГҘ det og klassificering det, og vil fГҘ det tilbage 11 00:00:35,490 --> 00:00:36,490 til dig snarest. 12 00:00:36,490 --> 00:00:39,650 SГҘ min forlГҰngerledninger studerende, der er ser lige nu - forhГҘbentlig leve - 13 00:00:39,650 --> 00:00:42,880 Jeg vil fГҘ dine quizzer kort sГҘ godt. 14 00:00:42,880 --> 00:00:45,670 >> Vores dagsorden for i dag er som fГёlger. 15 00:00:45,670 --> 00:00:50,170 FГёrst, vi kommer til at gГҘ over nogle ressourcer, CS50 leverer til dig. 16 00:00:50,170 --> 00:00:54,590 Vi kommer til at gГҘ over Quiz 0 nГҰste, og Jeg vil besvare eventuelle spГёrgsmГҘl nogen 17 00:00:54,590 --> 00:00:57,360 har omkring sГҰrlige problemer. 18 00:00:57,360 --> 00:01:02,050 Og sГҘ vil vi vГҰre at gГҘ over fil I / O og problemet sГҰt 5. 19 00:01:02,050 --> 00:01:07,360 Disse sidste to emner vil tage hovedparten af вҖӢвҖӢafsnittet i dag. 20 00:01:07,360 --> 00:01:11,680 >> Jeg sГҰtter denne liste op hver uge som en pГҘmindelse til jer alle, men af вҖӢвҖӢkerne 21 00:01:11,680 --> 00:01:14,650 sektion, har vi kun 90 minutter - vi er ikke i stand til at dГҰkke alt, hvad jeg 22 00:01:14,650 --> 00:01:16,280 ville elske at dГҰkke for jer. 23 00:01:16,280 --> 00:01:21,170 Men vi har et vГҰld af ressourcer til du at trГҰkke pГҘ, som du kommer til at kende 24 00:01:21,170 --> 00:01:24,000 materiale og arbejde gennem dit problem sГҰtter. 25 00:01:24,000 --> 00:01:30,810 >> En pГҘmindelse om, at jeg har online en tekst kasse, sat op for dig at udfylde, hvis du 26 00:01:30,810 --> 00:01:33,250 har feedback til mig, bГҘde positive og 27 00:01:33,250 --> 00:01:35,180 konstruktiv, om sektion. 28 00:01:35,180 --> 00:01:38,600 Denne URL ligger lige hernede. 29 00:01:38,600 --> 00:01:43,250 SГҘ venligst, tage et Гёjeblik, hvis du har nogen feedback, uanset under afsnittet 30 00:01:43,250 --> 00:01:48,030 eller efter, eller efter at du se videoen online, til at give mig din feedback. 31 00:01:48,030 --> 00:01:52,100 Jeg virkelig sГҰtter pris pГҘ enhver og alle af det. 32 00:01:52,100 --> 00:01:55,730 >> SГҘ jeg har haft smГҘ samtaler med en masse af min 33 00:01:55,730 --> 00:01:59,350 studerende i hele ugen - som jeg hГҘnd back quizzer, taler om 34 00:01:59,350 --> 00:02:01,480 selvfГёlgelig, at se, hvordan du gГёr. 35 00:02:01,480 --> 00:02:05,120 Og Г©t tema er kommet op igen og ovre i at tale om - i 36 00:02:05,120 --> 00:02:05,660 sГҰrdeleshed - 37 00:02:05,660 --> 00:02:07,710 problem sГҰt. 38 00:02:07,710 --> 00:02:13,090 Og jeg har indkapslet dette tema pГҘ brГҰttet lige nu. 39 00:02:13,090 --> 00:02:16,630 >> VГҰsentlige, der er en forskel mellem drejning i noget, der er 40 00:02:16,630 --> 00:02:19,590 udfГёrt korrekt og noget der er gjort godt. 41 00:02:19,590 --> 00:02:22,920 De fleste mennesker har gjort fantastisk i form af korrekthed - 42 00:02:22,920 --> 00:02:25,460 5 s eller 4 s pГҘ alle psets. 43 00:02:25,460 --> 00:02:27,930 De fleste mennesker bliver dem hele tiden. 44 00:02:27,930 --> 00:02:31,150 >> Men bare fordi du har gjort noget rigtigt betyder ikke, du har 45 00:02:31,150 --> 00:02:34,450 gjort noget sГҘ elegant, eller effektivt, eller sГҘ rent som du 46 00:02:34,450 --> 00:02:35,270 kunne have gjort det. 47 00:02:35,270 --> 00:02:36,790 Og det er, hvad design - 48 00:02:36,790 --> 00:02:39,230 og i mindre grad, stil - 49 00:02:39,230 --> 00:02:40,450 akser er til for. 50 00:02:40,450 --> 00:02:45,130 SГҘ jeg presser dig alt, og andre TFs presser jer, ikke kun drejning 51 00:02:45,130 --> 00:02:48,320 i ting, der er korrekt, men slГҘ i de ting, der er kodet godt. 52 00:02:48,320 --> 00:02:53,060 >> Ikke at gГёre unГёdvendig efter slГёjfer, ikke genberegne variabler hvis 53 00:02:53,060 --> 00:02:53,800 du behГёver ikke at. 54 00:02:53,800 --> 00:02:58,520 For eksempel, ser tilbage til problem sГҰt 4, nГҘr du placerer mursten pГҘ 55 00:02:58,520 --> 00:03:03,070 skГҰrmen, hver rГҰkke - hver mursten i en given rГҰkke har samme y-koordinat - 56 00:03:03,070 --> 00:03:04,390 samme hГёjde koordinat. 57 00:03:04,390 --> 00:03:07,930 >> SГҘledes at y-koordinat ikke behГёver at beregnes i det indre 58 00:03:07,930 --> 00:03:11,070 indlejret FOR lГёkke, som du sandsynligvis brugt at sГҰtte disse klodser pГҘ skГҰrmen. 59 00:03:11,070 --> 00:03:14,030 Det skal kun beregnes hvert gang, du tГҰndte en rГҰkke, eller 60 00:03:14,030 --> 00:03:15,200 flyttet ned trГҰk. 61 00:03:15,200 --> 00:03:19,760 SГҘ sige, hvis der er 10 klodser i en trГҰk, kan hver sten har samme 62 00:03:19,760 --> 00:03:22,260 y-koordinat, og at y-koordinat kan bare blive beregnet 63 00:03:22,260 --> 00:03:23,550 Г©n gang for alle af disse. 64 00:03:23,550 --> 00:03:27,810 >> Det behГёver ikke at beregne 10 tider, og heller ikke denne beregning behov 65 00:03:27,810 --> 00:03:30,220 ske i den faktiske funktion opkald - 66 00:03:30,220 --> 00:03:33,020 det nye gracked funktion opkald. 67 00:03:33,020 --> 00:03:37,820 SГҘ hvis der var lidt forvirrende for dig, mere generisk, ting, der 68 00:03:37,820 --> 00:03:40,730 behГёver ikke at ske hver eneste gang du gГҘr gennem en for-lГёkke, bГёr ikke vГҰre 69 00:03:40,730 --> 00:03:42,900 sГҰtte inde for-lГёkken, og bГёr ikke ske, hver gang du gГҘr 70 00:03:42,900 --> 00:03:44,080 gennem for-lГёkken. 71 00:03:44,080 --> 00:03:49,270 >> Et andet godt design eksempel oplevede vi i uge 3 for 15, kan du holde 72 00:03:49,270 --> 00:03:50,500 styr pГҘ nul. 73 00:03:50,500 --> 00:03:53,600 SГҘ nГҘr du initialiserer bord, du spare - i en global variabel, mГҘske - 74 00:03:53,600 --> 00:03:56,140 x-og y-koordinat af nul. 75 00:03:56,140 --> 00:03:57,520 Og sГҘ nГҘr du - 76 00:03:57,520 --> 00:04:00,310 i dit trГҰk-funktion, nГҘr du foretager en vellykket trГҰk, du opdaterer 77 00:04:00,310 --> 00:04:02,040 placering af nul. 78 00:04:02,040 --> 00:04:06,240 >> Det ville spare dig fra at skulle gГёre indlejret efter slГёjfer til at se gennem 79 00:04:06,240 --> 00:04:10,700 bord hver gang i din flytte funktionen og finde nul, eller finde fliser, 80 00:04:10,700 --> 00:04:12,460 og derefter kontrollere, hvad der er ved siden af. 81 00:04:12,460 --> 00:04:16,329 I stedet har du placeringen af nul, kan du bare kigge over, under, 82 00:04:16,329 --> 00:04:21,160 og til venstre og hГёjre for den, for at finde den flise, du sГёgte efter. 83 00:04:21,160 --> 00:04:24,970 >> SГҘ med hensyn til de programmer, vi er skrive, de er aldrig store nok 84 00:04:24,970 --> 00:04:28,580 at nogle af disse design beslutninger er virkelig kommer til at hГҰmme din 85 00:04:28,580 --> 00:04:31,670 program, eller gГёre det kГёre langsommere, eller mГҘske endda lГёbe tГёr for hukommelse. 86 00:04:31,670 --> 00:04:35,030 Men vi er stadig skubber jer at skrive sГҘ elegant og 87 00:04:35,030 --> 00:04:36,450 effektiv kode som muligt. 88 00:04:36,450 --> 00:04:39,910 >> SГҘ hvis du ender med at skrive tingene der har en vГҰsentlig stГёrre 89 00:04:39,910 --> 00:04:44,660 anvendelsesomrГҘdet, vil de blive skrevet med god designe ud over at vГҰre korrekt. 90 00:04:44,660 --> 00:04:46,300 SГҘ en rГҰkke af jer har bragt ud af det. 91 00:04:46,300 --> 00:04:48,560 Det er noget, vi leder efter - noget vi kommer til at fortsГҰtte med at 92 00:04:48,560 --> 00:04:49,840 skubbe dig fyre pГҘ. 93 00:04:49,840 --> 00:04:52,460 >> Hvis du nogensinde har spГёrgsmГҘl om den design af dit program, er du velkommen 94 00:04:52,460 --> 00:04:56,870 at nГҘ ud til mig, og jeg er glad for at gГҘ gennem dit program med dig, 95 00:04:56,870 --> 00:05:01,320 og pege pГҘ nogle af udformningen beslutninger, du har foretaget, og giver dig nogle 96 00:05:01,320 --> 00:05:06,240 forslag til, hvordan man kan gГёre selv bedre design beslutninger. 97 00:05:06,240 --> 00:05:08,870 >> SГҘ vi kommer til at bevГҰge sig pГҘ til at tale om Quiz 0. 98 00:05:08,870 --> 00:05:11,300 FГёr vi gГёr det, gГёr nogen har spГёrgsmГҘl om, hvad 99 00:05:11,300 --> 00:05:14,252 Jeg har dГҰkket hidtil? 100 00:05:14,252 --> 00:05:21,500 >> [Raslende lyd] 101 00:05:21,500 --> 00:05:22,750 >> JASON HIRSCHHORN: Syv sekunder. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 Lad os tale om Quiz 0 for lidt. 104 00:05:24,970 --> 00:05:26,700 De fleste af jer har din Quiz 0 ryg. 105 00:05:26,700 --> 00:05:29,820 Hvis du ikke gГёr det, forhГҘbentlig du husker det en smule. 106 00:05:29,820 --> 00:05:34,770 Men hvis du har taget Quiz 0, sГҘ du ogsГҘ have adgang til PDF-online 107 00:05:34,770 --> 00:05:35,890 testoplГёsningen. 108 00:05:35,890 --> 00:05:39,480 >> Er der nogen har nogen spГёrgsmГҘl, fГёr vi springer ind i ugens materiale om 109 00:05:39,480 --> 00:05:41,520 et sГҰrligt problem pГҘ Quiz 0 - 110 00:05:41,520 --> 00:05:44,630 hvorfor svaret er, hvad det er? 111 00:05:44,630 --> 00:05:47,255 Er der nogen forvirret over noget? 112 00:05:47,255 --> 00:05:50,230 Selv hvis du fik problemet ret, men bare gerne vil have mig til at forklare det lidt 113 00:05:50,230 --> 00:05:52,640 mere, jeg er glad for at gГёre det nu. 114 00:05:52,640 --> 00:05:57,800 >> SГҘ jeg har bedt jer til komme forberedt med nogle 115 00:05:57,800 --> 00:05:59,440 tanker om Quiz 0. 116 00:05:59,440 --> 00:06:02,660 SГҘ hvem vil gerne fГҘ os begyndte med et spГёrgsmГҘl eller 117 00:06:02,660 --> 00:06:04,655 kommentar om Quiz 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [PAPER knitrende] 120 00:06:10,410 --> 00:06:11,470 >> JASON HIRSCHHORN: Ikke alle gjorde perfekt. 121 00:06:11,470 --> 00:06:12,720 SГҘ jeg ved, [griner] 122 00:06:12,720 --> 00:06:15,950 der vГҰre nogle spГёrgsmГҘl om 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: Number 10. 128 00:06:30,520 --> 00:06:33,560 >> JASON HIRSCHHORN: Number 10. 129 00:06:33,560 --> 00:06:35,400 Hvilken en var nummer 10? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: The - 131 00:06:35,840 --> 00:06:36,420 >> JASON HIRSCHHORN: I haven't - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: Den omfatter - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON HIRSCHHORN: Number 10 var otte til i - at skrive otte til i? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Ja. 136 00:06:42,980 --> 00:06:43,630 >> JASON HIRSCHHORN: OK. 137 00:06:43,630 --> 00:06:47,390 SГҘ et andet spГёrgsmГҘl du kunne have spurgte var jeg forudseende? 138 00:06:47,390 --> 00:06:48,630 Svaret er ja. 139 00:06:48,630 --> 00:06:52,060 I afsnit fГёr quizzen, spurgte jeg jer at kode bГҘde Sterling og 140 00:06:52,060 --> 00:06:52,980 otte til jeg. 141 00:06:52,980 --> 00:06:54,770 BГҘde af dem skete for vises pГҘ quizzen. 142 00:06:54,770 --> 00:06:57,510 SГҘ forhГҘbentlig, du har betalt opmГҰrksom pГҘ det. 143 00:06:57,510 --> 00:07:02,520 >> Og hvis du havde, sГҘ ville du have sandsynligvis gjort godt pГҘ de to. 144 00:07:02,520 --> 00:07:06,030 Men otte til jeg gjorde vi faktisk ikke kode det i klassen, men det var igen, 145 00:07:06,030 --> 00:07:07,500 spurgte pГҘ quizzen. 146 00:07:07,500 --> 00:07:13,270 SГҘ et par ting at tage BemГҰrk nГҘr kodning otte til jeg. 147 00:07:13,270 --> 00:07:17,320 Den fГёrste ting, pr spГёrgsmГҘlet, var at du havde brug for at kontrollere, om strengen 148 00:07:17,320 --> 00:07:20,300 var lig med nul. 149 00:07:20,300 --> 00:07:28,060 >> Et par personer forsГёgt at kontrollere senere i programmet, hvis s beslag jeg var - 150 00:07:28,060 --> 00:07:30,940 sГҘ et bestemt tegn pГҘ, at snor - var lig med nul. 151 00:07:30,940 --> 00:07:35,600 Men husk, at null er vГҰsentlige - det er godt at tГҰnke pГҘ 152 00:07:35,600 --> 00:07:39,100 null som en nul-pointer - en pointer til nul - 153 00:07:39,100 --> 00:07:40,920 et sted i hukommelsen, hvor du kan aldrig fГҘ adgang til. 154 00:07:40,920 --> 00:07:44,730 >> SГҘ hvis noget er lig med nul, du ved, at det ikke er blevet initialiseret, 155 00:07:44,730 --> 00:07:46,430 eller der er ikke noget der. 156 00:07:46,430 --> 00:07:50,950 SГҘ s er en char stjerne, s beslag i er en char. 157 00:07:50,950 --> 00:07:57,410 SГҘ det giver mening at sammenligne s til null, men ikke s beslag jeg til null. 158 00:07:57,410 --> 00:07:59,390 Men igen - sГҘ det var det fГёrste, at du skulle gГёre - 159 00:07:59,390 --> 00:08:03,510 skal du kontrollere, at du rent faktisk fik en reel streng. 160 00:08:03,510 --> 00:08:08,020 >> NГҰste, du Гёnskede at gГҘ igennem hvert tegn i strengen. 161 00:08:08,020 --> 00:08:12,500 Og sГҘ det ville vГҰre som en s beslag Jeg, for eksempel, hvis jeg er din iterator. 162 00:08:12,500 --> 00:08:17,250 Og tage denne karakter, og fГҘ dens faktiske vГҰrdi. 163 00:08:17,250 --> 00:08:21,800 Du har det gemt som en char, men ASCII-vГҰrdien for nul - 164 00:08:21,800 --> 00:08:23,010 nul som et tegn - 165 00:08:23,010 --> 00:08:25,450 er faktisk det hele tal nul. 166 00:08:25,450 --> 00:08:28,700 Det er nogle andre tal, som du kan kigge op i ASCII-tabellen. 167 00:08:28,700 --> 00:08:30,790 >> SГҘ en mГҘde at korrigere for det - nok den bedste mГҘde at korrigere for 168 00:08:30,790 --> 00:08:33,760 der - er trГҰkke fra det tegnet vГҰrdi - 169 00:08:33,760 --> 00:08:35,140 nul som et tegn. 170 00:08:35,140 --> 00:08:38,490 SГҘ minus enkelt citat, nul, anden enkelt citat. 171 00:08:38,490 --> 00:08:44,620 Det vil tage, hvad nummer du har som en char, og fГҘ det svarer til 172 00:08:44,620 --> 00:08:46,720 nummeret som et virkeligt heltal. 173 00:08:46,720 --> 00:08:50,300 >> Og der er meget lig med den fremgangsmГҘde, en masse mennesker tog i 174 00:08:50,300 --> 00:08:52,800 Problemet sГҰt 2, med CГҰsar og Viginere - 175 00:08:52,800 --> 00:08:55,160 disse ciphers, nГҘr du blev dreje dem. 176 00:08:55,160 --> 00:08:59,210 SГҘ efter at du har det som et nummer fra nul til ni, sГҘ - efter 177 00:08:59,210 --> 00:09:02,750 hvor det gГҘr i den ultimative nummer - du nГёdt til at formere den 178 00:09:02,750 --> 00:09:04,120 ved en effekt pГҘ 10. 179 00:09:04,120 --> 00:09:07,340 >> Nogle folk flyttede fra bagsiden til fronten, og multipliceres den enkelte 180 00:09:07,340 --> 00:09:08,940 tal med en effekt pГҘ 10. 181 00:09:08,940 --> 00:09:11,160 Nogle mennesker flyttede fra den front til bag - 182 00:09:11,160 --> 00:09:14,430 og sГҘ tog de hГёjeste lГёbenumrene fГёrst - 183 00:09:14,430 --> 00:09:18,190 og ville spare dem i en global counter variabel. 184 00:09:18,190 --> 00:09:20,880 Og sГҘ hver gang gennem FOR loop, formere sig, at kГҰmpe global 185 00:09:20,880 --> 00:09:25,640 imГёdegГҘ variabel ved 10, for at gГёre plads til den nГҰste char. 186 00:09:25,640 --> 00:09:28,750 >> SГҘ det var en smule forvirrende uden mig skrive det pГҘ tavlen. 187 00:09:28,750 --> 00:09:31,550 Men prГёveoplГёsningen er tilgГҰngelig for dig. 188 00:09:31,550 --> 00:09:32,870 Men det var de store ting vi ledte efter. 189 00:09:32,870 --> 00:09:36,400 OgsГҘ en kontrol for at sikre, at hver individuel karakter var faktisk en 190 00:09:36,400 --> 00:09:39,780 karakter mellem nul og ni, og ikke en anden karakter, som en A, 191 00:09:39,780 --> 00:09:41,160 for eksempel. 192 00:09:41,160 --> 00:09:43,150 >> Det var de ting, vi ledte i det spГёrgsmГҘl. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 Besvarer det dit spГёrgsmГҘl? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: Ja. 196 00:09:49,320 --> 00:09:50,240 >> JASON HIRSCHHORN: OK. 197 00:09:50,240 --> 00:09:53,940 Er der andre spГёrgsmГҘl om Quiz 0? 198 00:09:53,940 --> 00:09:55,440 Hvad med at samle? 199 00:09:55,440 --> 00:09:56,740 Everybody kompilering ret? 200 00:09:56,740 --> 00:09:58,370 Nej. 201 00:09:58,370 --> 00:09:58,840 Der var en - 202 00:09:58,840 --> 00:10:01,010 [Griner] 203 00:10:01,010 --> 00:10:03,265 Eventuelle spГёrgsmГҘl om kompilering proces? 204 00:10:03,265 --> 00:10:06,050 205 00:10:06,050 --> 00:10:06,966 Wow. 206 00:10:06,966 --> 00:10:11,090 >> [PAPER knitrende] 207 00:10:11,090 --> 00:10:11,520 >> JASON HIRSCHHORN: Ja. 208 00:10:11,520 --> 00:10:11,700 Michael. 209 00:10:11,700 --> 00:10:14,140 >> MICHAEL: Er nummer 7 - tilfГҰldigt? 210 00:10:14,140 --> 00:10:16,500 >> JASON HIRSCHHORN: Number 7. 211 00:10:16,500 --> 00:10:20,670 Nummer 7, var at fГҘ et tilfГҰldigt heltal. 212 00:10:20,670 --> 00:10:21,110 Excellent. 213 00:10:21,110 --> 00:10:25,630 SГҘ du fГҘr et heltal a og en heltal b og du vil have en tilfГҰldig 214 00:10:25,630 --> 00:10:28,710 heltal mellem a og b. 215 00:10:28,710 --> 00:10:31,740 Vi kan faktisk skrive denne ene pГҘ bestyrelsen, fordi denne ene 216 00:10:31,740 --> 00:10:33,320 var Г©n linje kode - 217 00:10:33,320 --> 00:10:34,390 Г©n mГҘde at gГёre det. 218 00:10:34,390 --> 00:10:37,810 >> SГҘ vi givet drand som en funktion, vi kunne bruge. 219 00:10:37,810 --> 00:10:38,820 Og hvad betyder drand - 220 00:10:38,820 --> 00:10:40,290 forudsat det er blevet seedet - 221 00:10:40,290 --> 00:10:42,316 hvad betyder drand vende tilbage? 222 00:10:42,316 --> 00:10:44,840 >> MICHAEL: En flyder mellem 0,0 og 1,0. 223 00:10:44,840 --> 00:10:45,530 >> JASON HIRSCHHORN: Et tal - ja. 224 00:10:45,530 --> 00:10:47,910 Et tal mellem 0 og 1. 225 00:10:47,910 --> 00:10:51,760 Og sГҘ vi har B og A. 226 00:10:51,760 --> 00:10:55,480 Og sГҘ har vi vores tilfГҰldige tal mellem 0 og 1 givet til os af drand. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 Nogle mennesker forsГёgte at sГҰtte b, eller b minus en, eller noget inde dem 229 00:11:06,630 --> 00:11:07,960 parenteser. 230 00:11:07,960 --> 00:11:11,210 Det ville betyde, at de er argumenter denne funktion. 231 00:11:11,210 --> 00:11:13,450 >> drand ikke tager nogen argumenter - Ligesom getString gГёr 232 00:11:13,450 --> 00:11:14,330 ikke tage nogen argumenter. 233 00:11:14,330 --> 00:11:16,600 SГҘ det er bare ГҘbne paren tГҰt paren - og det i sig selv er 234 00:11:16,600 --> 00:11:17,330 funktionen opkald. 235 00:11:17,330 --> 00:11:19,770 Og det giver dig en rГҰkke mellem 0 og 1.. 236 00:11:19,770 --> 00:11:22,820 SelvfГёlgelig har vi en hel rГҰkke at tal kan vГҰre i. 237 00:11:22,820 --> 00:11:28,470 >> Sige, hvis b er 10 og en er 5, vi virkelig Гёnsker et nummer med en rГҰkke af 5.. 238 00:11:28,470 --> 00:11:36,940 SГҘ den nГҰste ting, vi skal gГёre, er multipliceres med den rГҰkke B minus en. 239 00:11:36,940 --> 00:11:40,380 SГҘ under forudsГҰtning af, der er mangedoblet. 240 00:11:40,380 --> 00:11:42,590 Og det vil give os en rГҰkke inden for et givet interval. 241 00:11:42,590 --> 00:11:46,610 Og dette specifikke omrГҘde er den Forskellen mellem B minus en. 242 00:11:46,610 --> 00:11:50,030 >> Og endelig, der vil kun give det fra - sige omrГҘdet mellem b minus en 243 00:11:50,030 --> 00:11:52,520 er 5, vil det give os et tal fra 0 til 5. 244 00:11:52,520 --> 00:11:56,000 Men hvis en er faktisk 5, er vi nГёdt til at Гёge dette omrГҘde op til, hvor det er 245 00:11:56,000 --> 00:12:01,380 faktisk formodes at vГҰre, ved at tilfГёje en. 246 00:12:01,380 --> 00:12:02,580 SГҘ fГҘr logikken hГёjre. 247 00:12:02,580 --> 00:12:03,745 Og sГҘ ville du have et andet spГёrgsmГҘl? 248 00:12:03,745 --> 00:12:04,547 >> MICHAEL: Nej. 249 00:12:04,547 --> 00:12:06,010 Jeg bare fГёler virkelig dum lige nu. 250 00:12:06,010 --> 00:12:06,405 [Griner] 251 00:12:06,405 --> 00:12:06,730 >> JASON HIRSCHHORN: Nej. 252 00:12:06,730 --> 00:12:08,640 MГҘ ikke fГёler virkelig dum. 253 00:12:08,640 --> 00:12:10,560 Et antal mennesker kГҰmpet med dette spГёrgsmГҘl. 254 00:12:10,560 --> 00:12:13,920 Og sГҘ det andet spГёrgsmГҘl er, drand, du sagde, giver dig en float - 255 00:12:13,920 --> 00:12:14,940 returnerer en float. 256 00:12:14,940 --> 00:12:18,020 Men denne funktion faktisk bedt til et helt tal, der skal returneres. 257 00:12:18,020 --> 00:12:23,700 >> Du behГёver ikke at kaste dette udtrykkeligt til et heltal, fordi disse 258 00:12:23,700 --> 00:12:29,090 operationerne vil behandle det som alle en flyde - som et decimaltal. 259 00:12:29,090 --> 00:12:31,570 Som dette vil - ogsГҘ selvom det er et helt tal, vil dette 260 00:12:31,570 --> 00:12:32,890 multipliceres korrekt. 261 00:12:32,890 --> 00:12:34,000 Alle multiplikation vil arbejde. 262 00:12:34,000 --> 00:12:35,060 Du behГёver ikke at kaste det her. 263 00:12:35,060 --> 00:12:36,480 Faktisk bГёr du ikke kaste den. 264 00:12:36,480 --> 00:12:37,310 >> Det ville - 265 00:12:37,310 --> 00:12:40,750 hvis du vil kaste en rГҰkke der er mellem 0 og 1 - 266 00:12:40,750 --> 00:12:42,680 et tilfГҰldigt tal, en floating point - 267 00:12:42,680 --> 00:12:47,850 sГҘ vil det enten kun vГҰre 0 eller 1, sГҘ mister du alt dette prГҰcision. 268 00:12:47,850 --> 00:12:50,120 Men i slutningen, nГҘr du vender tilbage, det automatisk fГҘr 269 00:12:50,120 --> 00:12:51,620 sendes tilbage som et heltal. 270 00:12:51,620 --> 00:12:56,870 SГҘ du behГёver ikke at gГёre at stГёbe selv. 271 00:12:56,870 --> 00:13:00,810 >> SГҘ dette var svaret pГҘ dette spГёrgsmГҘl, nummer 7. 272 00:13:00,810 --> 00:13:02,190 Alle andre spГёrgsmГҘl om Quiz 0? 273 00:13:02,190 --> 00:13:03,300 Ja, Annie. 274 00:13:03,300 --> 00:13:05,050 >> ANNIE: NГҘr vi bruger rekursive - 275 00:13:05,050 --> 00:13:07,850 nГҘr vi bruger iterative loops? 276 00:13:07,850 --> 00:13:10,210 >> JASON HIRSCHHORN: NГҘr bruger du rekursive - sГҘ mere generelt 277 00:13:10,210 --> 00:13:14,110 fordele og ulemper ved rekursion versus en iterativ fremgangsmГҘde. 278 00:13:14,110 --> 00:13:17,110 Kan nogen give en pro eller en con? 279 00:13:17,110 --> 00:13:19,460 Venligst? 280 00:13:19,460 --> 00:13:20,140 Ikke kan nogen. 281 00:13:20,140 --> 00:13:22,526 Hvem kan tilbyde en pro eller en con? 282 00:13:22,526 --> 00:13:26,963 >> [PAPER knitrende] 283 00:13:26,963 --> 00:13:29,730 >> STUDENT 1: Rekursiv er mindre kodning - mindre skrive? 284 00:13:29,730 --> 00:13:33,170 >> JASON HIRSCHHORN: SГҘ generelt, rekursion isГҰr en funktion - 285 00:13:33,170 --> 00:13:35,750 eller en algoritme som merge sortere - som egner sig 286 00:13:35,750 --> 00:13:37,300 til en rekursiv metode - 287 00:13:37,300 --> 00:13:40,710 kunne vГҰre mere ligetil at kode rekursivt. 288 00:13:40,710 --> 00:13:43,940 Og bare give mere mening at gГёre det rekursivt. 289 00:13:43,940 --> 00:13:46,230 SГҘ det ville vГҰre en pro til rekursion. 290 00:13:46,230 --> 00:13:46,610 Andre? 291 00:13:46,610 --> 00:13:47,467 Ja? 292 00:13:47,467 --> 00:13:49,240 >> STUDENT 2: Con til rekursion - 293 00:13:49,240 --> 00:13:50,940 Det bruger mere hukommelse. 294 00:13:50,940 --> 00:13:52,200 >> JASON HIRSCHHORN: SГҘ prГҰcis hГёjre. 295 00:13:52,200 --> 00:13:55,720 En rekursiv funktion vil holde tilfГёje stakrammer til stakken. 296 00:13:55,720 --> 00:13:59,690 SГҘ hvis du opererer pГҘ en masse tal, og er nГёdt til at kalde dette 297 00:13:59,690 --> 00:14:02,560 fungere en masse, sГҘ vil du helt sikkert fylder mere hukommelse, mens 298 00:14:02,560 --> 00:14:05,810 en iterativ tilgang vil kun sГҰtte Г©t stakrammen pГҘ stakken, fordi 299 00:14:05,810 --> 00:14:08,420 det hele sker inden for en funktion. 300 00:14:08,420 --> 00:14:11,010 >> Alle andre fordele og ulemper? 301 00:14:11,010 --> 00:14:11,500 Ja. 302 00:14:11,500 --> 00:14:12,550 >> STUDENT 3: Fordele for rekursion. 303 00:14:12,550 --> 00:14:15,950 Du behГёver ikke at bestemme i forhГҘnd, hvor mange gange 304 00:14:15,950 --> 00:14:17,660 kode mГҘtte gentages. 305 00:14:17,660 --> 00:14:22,810 Du kan have et forudbestemt antal gange, at du er nГёdt til at gentage, sГҘ 306 00:14:22,810 --> 00:14:26,420 rekursion er bedre, fordi det tager dette resultat. 307 00:14:26,420 --> 00:14:27,780 >> JASON HIRSCHHORN: Jeg tror, вҖӢвҖӢdet er rigtigt. 308 00:14:27,780 --> 00:14:30,770 Men jeg tror i begge tilfГҰlde du ville aldrig - 309 00:14:30,770 --> 00:14:33,290 ville du sikkert fГҘ nogle input fra brugeren. 310 00:14:33,290 --> 00:14:35,990 Eller denne funktion ville have nogle input der ville bestemme, hvor mange gange det 311 00:14:35,990 --> 00:14:36,730 skal kГёre. 312 00:14:36,730 --> 00:14:39,520 SГҘ generelt, ikke ville du hГҘrdt kode - selv i en iterativ tilgang - hvordan 313 00:14:39,520 --> 00:14:40,940 mange gange, at lГёkken skal kГёres. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Har du har en anden, du var tГҰnker, Annie? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 SГҘ det er nok de to - 318 00:14:51,650 --> 00:14:54,370 den stГёrste pro og den stГёrste con til en rekursiv versus 319 00:14:54,370 --> 00:14:57,080 en iterativ fremgangsmГҘde. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 Noget andet pГҘ Quiz 0? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> Lad os komme videre. 324 00:15:09,920 --> 00:15:15,260 File I / O. Der er en vidunderlig kort denne uge pГҘ fil I / O, som forhГҘbentlig 325 00:15:15,260 --> 00:15:19,270 du har set flere tidspunkter, og beundret. 326 00:15:19,270 --> 00:15:22,910 En masse arbejde gik ind i det, og jeg har hГёrte det er sindssygt nyttigt. 327 00:15:22,910 --> 00:15:25,740 Jeg har ogsГҘ inkluderet linket pГҘ dette dias, hvis du ikke har haft en 328 00:15:25,740 --> 00:15:29,160 chance for at se det 10 gange. 329 00:15:29,160 --> 00:15:35,280 >> SГҘ vi kommer til kort gГҘ over vigtige skridt til at ГҘbne og arbejde 330 00:15:35,280 --> 00:15:38,400 med filer og derefter vil vi dykke ned i en kodning problem fГёr 331 00:15:38,400 --> 00:15:40,400 undersГёge problemet sГҰt. 332 00:15:40,400 --> 00:15:44,330 SГҘ igen, vil jeg sГҰtte det op pГҘ skГҰrmen, men jeg har tГҰnkt mig at tale om 333 00:15:44,330 --> 00:15:47,630 blot et minut om, hvad vi gГёr her med fil I/O-- 334 00:15:47,630 --> 00:15:49,090 hvad betyder det? 335 00:15:49,090 --> 00:15:55,280 >> Det betyder, at vi kan skabe vores programmer, og sГҘ har vores programmer 336 00:15:55,280 --> 00:16:00,370 exit, og ikke har gjort nogen indvirkning pГҘ verden uden for vores program. 337 00:16:00,370 --> 00:16:04,630 Men nГҘr vi begynder at arbejde med filer - bГҘde lГҰse dem i og skabe 338 00:16:04,630 --> 00:16:10,460 dem - vi kan have en vis effekt pГҘ verden uden for vores program. 339 00:16:10,460 --> 00:16:15,440 >> Ligesom hvis Microsoft Word ikke var i stand at foretage Word-dokumenter, sГҘ 340 00:16:15,440 --> 00:16:18,710 nГҘr Microsoft Word op, alle dine arbejde ville vГҰre vГҰk, og det ville 341 00:16:18,710 --> 00:16:19,740 virkelig vГҰre ubrugelig. 342 00:16:19,740 --> 00:16:23,620 Vi har i sidste ende vil vГҰre i stand til skrive programmer, der kan pГҘvirke 343 00:16:23,620 --> 00:16:31,350 verden omkring dem, bГҘde ved at tage i komplekse indgange - i form af filer og 344 00:16:31,350 --> 00:16:37,080 via filer, og ogsГҘ skaber interessant og overbevisende udgange - 345 00:16:37,080 --> 00:16:39,520 i form af forskellige typer af filer. 346 00:16:39,520 --> 00:16:43,730 >> SГҘ det er derfor, vi er begyndt at lГҰre at arbejde med filer. 347 00:16:43,730 --> 00:16:47,080 Mere konkret, hvilke vi gГёr, er som fГёlger. 348 00:16:47,080 --> 00:16:47,680 Det er meget simpelt. 349 00:16:47,680 --> 00:16:51,530 Der er kun et par skridt, og de er opfГёrt her pГҘ denne kode. 350 00:16:51,530 --> 00:16:55,130 SГҘ vi kommer til at gГҘ igennem denne kode linje for linje. 351 00:16:55,130 --> 00:16:57,630 >> FГёrst skal du se fremhГҰvet - 352 00:16:57,630 --> 00:17:01,330 nГҘr du arbejder med en fil, uanset hvilken type fil det er, 353 00:17:01,330 --> 00:17:02,670 du nГёdt til at ГҘbne den. 354 00:17:02,670 --> 00:17:05,130 Og det er med en opfordring til fopen - 355 00:17:05,130 --> 00:17:05,950 lige her. 356 00:17:05,950 --> 00:17:07,980 Du medtage navnet pГҘ filen. 357 00:17:07,980 --> 00:17:11,930 Hvis filen ikke er i telefonbogen, eller den mappe, hvor dette program 358 00:17:11,930 --> 00:17:15,910 liv, sГҘ er du ogsГҘ nГёdt til at omfatte en sti til hvor filen er. 359 00:17:15,910 --> 00:17:19,099 >> Vi kommer til at antage, at dette fil kaldet "text.txt" - 360 00:17:19,099 --> 00:17:24,220 en simpel tekst dokument - er i samme mappe som dette program er. 361 00:17:24,220 --> 00:17:26,859 SГҘ det er en anden ting at huske pГҘ Гёje - at hvis du Гёnsker at ГҘbne en fil 362 00:17:26,859 --> 00:17:30,050 et andet sted, du faktisk har brug at medtage dens placering. 363 00:17:30,050 --> 00:17:33,520 >> For det andet, kan du overfГёre et argument for fopen, og det er, hvad du Гёnsker at gГёre 364 00:17:33,520 --> 00:17:34,620 med filen. 365 00:17:34,620 --> 00:17:38,450 Der er tre vigtigste argumenter, du kommer til at passere til fopen. 366 00:17:38,450 --> 00:17:40,060 Hvem kan give mig de tre? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 Hvem kan give mig en af вҖӢвҖӢdem? 369 00:17:47,130 --> 00:17:48,130 Ja. 370 00:17:48,130 --> 00:17:50,010 >> STUDENT 4: Filen navn? 371 00:17:50,010 --> 00:17:50,440 >> JASON HIRSCHHORN: Undskyld. 372 00:17:50,440 --> 00:17:55,490 Tre vГҰsentligste argumenter du kan passere som det andet argument til fopen. 373 00:17:55,490 --> 00:17:57,060 Du har ret - filnavnet er det fГёrste argument. 374 00:17:57,060 --> 00:18:01,620 Men det andet argument til fopen er generelt tre strygere, og - ja. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> Aleja: A for append. 377 00:18:03,490 --> 00:18:06,840 >> JASON HIRSCHHORN: A, hvis du vil vedlГҰgge en fil, der allerede eksisterer. 378 00:18:06,840 --> 00:18:07,810 >> STUDENT 5: R for at lГҰse. 379 00:18:07,810 --> 00:18:09,930 >> JASON HIRSCHHORN: R hvis du Гёnsker at lГҰse fra en fil. 380 00:18:09,930 --> 00:18:10,670 >> STUDENT 6: W for write. 381 00:18:10,670 --> 00:18:12,840 >> JASON HIRSCHHORN: Og w hvis du Гёnsker at skrive til en fil. 382 00:18:12,840 --> 00:18:17,570 SГҘ i dette tilfГҰlde, vi skriver til filen, sГҘ vi har w. 383 00:18:17,570 --> 00:18:22,360 Du ГҘbner den, du ogsГҘ nГёdt til at gemme fil et eller andet sted, og det er med 384 00:18:22,360 --> 00:18:26,000 kode til den venstre side af opgaven operatГёr - 385 00:18:26,000 --> 00:18:31,220 Jeg skaber en pointer til en fil kaldes, i dette tilfГҰlde, fil. 386 00:18:31,220 --> 00:18:36,070 >> Vi kommer ikke til at bekymre dig, hvad denne alle hГҰtter FIL ting er. 387 00:18:36,070 --> 00:18:40,600 Det er tilstrГҰkkeligt at sige, det er en lang strГёm af nuller og ettaller. 388 00:18:40,600 --> 00:18:44,970 Og det er, hvordan vi kommer til at betjene det og forstГҘ det. 389 00:18:44,970 --> 00:18:47,300 >> Den nГҰste ting, vi skal gГёre - og dette er utroligt vigtigt - 390 00:18:47,300 --> 00:18:49,070 hver gang du ГҘbner en fil - 391 00:18:49,070 --> 00:18:54,250 i virkeligheden, nГҘr du kalder malloc for eksempel, og fГҘ nogle hukommelse, og prГёv 392 00:18:54,250 --> 00:18:57,980 og gemme det i en pegepind, du altid Гёnsker at tjekke for at sikre, at der 393 00:18:57,980 --> 00:19:00,230 funktion returnerede ikke nul. 394 00:19:00,230 --> 00:19:05,230 >> SГҘ i dette tilfГҰlde, er vi kontrol for at sikker pГҘ, at vi faktisk ГҘbnet 395 00:19:05,230 --> 00:19:10,230 fil korrekt, og der var ingen fejl i vores program. 396 00:19:10,230 --> 00:19:15,160 NГҰste gang vi har tjekket for at sikre, at vi har en fungerende fil, kan vi 397 00:19:15,160 --> 00:19:18,520 skrive til eller lГҰse fra, eller fГёje til filen. 398 00:19:18,520 --> 00:19:24,270 I dette tilfГҰlde er jeg simpelthen udskrive en linje til denne fil. 399 00:19:24,270 --> 00:19:25,450 >> Hvordan kan jeg vide det? 400 00:19:25,450 --> 00:19:27,990 NГҘ, jeg bruger denne funktion kaldet fprintf. 401 00:19:27,990 --> 00:19:30,970 Alle de funktioner, du vil bruge nГҘr du skriver til eller lГҰsning fra eller 402 00:19:30,970 --> 00:19:34,950 manipulere filer vil vГҰre magen til funktioner, du har set fГёr, men 403 00:19:34,950 --> 00:19:38,420 starter med bogstavet F, stГҘende i filen. 404 00:19:38,420 --> 00:19:43,440 Og fprintf, i modsГҰtning til vores normale print app, tager et yderligere argument, 405 00:19:43,440 --> 00:19:47,800 og det er den fil, hvor du Гёnsker at udskrive denne linie til. 406 00:19:47,800 --> 00:19:50,640 >> Jeg har ikke noget at ret ohai. 407 00:19:50,640 --> 00:19:52,860 Jeg har ikke den tredje argument til printf - 408 00:19:52,860 --> 00:19:57,030 eller det andet argument til printf, den tredje argument til fprintf, fordi jeg 409 00:19:57,030 --> 00:19:59,480 ikke har nogen pladsholdere her. 410 00:19:59,480 --> 00:20:01,070 Jeg er ikke inklusive eventuelle variabler. 411 00:20:01,070 --> 00:20:06,070 Men igen, fprintf og alle disse fil funktioner, der opererer med filer 412 00:20:06,070 --> 00:20:09,820 generelt vil fГҘ brug for filen som de er i drift. 413 00:20:09,820 --> 00:20:15,960 >> Endelig er den sidste vigtige ting at gГёre, er at lukke filen, ligesom 414 00:20:15,960 --> 00:20:19,530 med - nГҘr vi allokere noget, vi Гёnsker at frigГёre noget, at vi ikke 415 00:20:19,530 --> 00:20:22,730 har en hukommelsesfejl - vi vil at lukke vores fil. 416 00:20:22,730 --> 00:20:28,180 Hvis programmet forladt uden lukning filen, odds er intet ville gГҘ 417 00:20:28,180 --> 00:20:30,050 forkert, isГҰr hvis det var en lille fil. 418 00:20:30,050 --> 00:20:35,020 >> Men det er bestemt god kodning stil og praksis altid at lukke din fil 419 00:20:35,020 --> 00:20:38,050 nГҘr du er fГҰrdig med at bruge det. 420 00:20:38,050 --> 00:20:43,630 SГҘ det er det grundlГҰggende i fil I / O. Du har sikkert set det fГёr, eller 421 00:20:43,630 --> 00:20:45,710 sГҘ det i denne fantastiske kort. 422 00:20:45,710 --> 00:20:48,410 Er der nogen har nogen spГёrgsmГҘl, fГёr vi gГҘr ind i nogle praksis kodning 423 00:20:48,410 --> 00:20:51,800 problemer, omkring fil I / O eller skridt, jeg gik bare forbi? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [TYPING SOUNDS] 426 00:21:03,162 --> 00:21:04,150 >> JASON HIRSCHHORN: Kan du har et spГёrgsmГҘl, Avi? 427 00:21:04,150 --> 00:21:04,660 >> AVI: Nej. 428 00:21:04,660 --> 00:21:04,740 >> JASON HIRSCHHORN: OK. 429 00:21:04,740 --> 00:21:06,746 Jeg har tГҰnkt mig at vente en anden syv sekunder. 430 00:21:06,746 --> 00:21:07,590 [Griner] 431 00:21:07,590 --> 00:21:08,620 Det er et rigtig godt tip. 432 00:21:08,620 --> 00:21:10,750 Du fyre kan bare ikke lide stille spГёrgsmГҘl. 433 00:21:10,750 --> 00:21:11,660 Det er fint. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 SГҘ vores fГёrste praksis problem er, at vi er kommer til at overlappe funktionen af 436 00:21:17,620 --> 00:21:22,330 en kommandolinje vГҰrktГёj, som du sandsynligvis brugt fГёr - copy - 437 00:21:22,330 --> 00:21:23,500 kopien vГҰrktГёjet. 438 00:21:23,500 --> 00:21:28,050 Hvis du skriver cp, og derefter sende det to argumenter i din terminal, kan du 439 00:21:28,050 --> 00:21:28,980 kopiere en fil. 440 00:21:28,980 --> 00:21:31,220 Og det er det, vi gГҘr til at skrive lige nu. 441 00:21:31,220 --> 00:21:35,830 >> SГҘ igen, lГҰse ud af dette dias, jeg havde dig til at skrive et program, der tager 442 00:21:35,830 --> 00:21:38,130 to og kun to kommando-linje argumenter - 443 00:21:38,130 --> 00:21:40,750 en kildefil og en destination fil - 444 00:21:40,750 --> 00:21:44,590 og kopierer indholdet af kilden filen til destinationen fil 445 00:21:44,590 --> 00:21:46,960 en byte ad gangen. 446 00:21:46,960 --> 00:21:48,510 SГҘ det er meget at bede om. 447 00:21:48,510 --> 00:21:52,200 >> Igen, en god tilgang til dette er at ikke gГҘ direkte til C-kode, men 448 00:21:52,200 --> 00:21:54,280 bryde det ned i et par trin. 449 00:21:54,280 --> 00:21:58,400 FГёrst tГҰnke logikken - prГҰcis hvad jeg beder dig om at gГёre - 450 00:21:58,400 --> 00:22:00,620 og forstГҘ alle de trin til dette problem. 451 00:22:00,620 --> 00:22:04,410 Ikke i C, bare i nogle pseudokode, eller endda en mental model 452 00:22:04,410 --> 00:22:06,030 hvad der foregГҘr. 453 00:22:06,030 --> 00:22:10,050 >> NГҰste gang du har pseudokoden ned, regne ud, hvordan pseudokoden 454 00:22:10,050 --> 00:22:14,600 kort pГҘ vГҰrktГёjer og ting, vi har lГҰrt at bruge i C. 455 00:22:14,600 --> 00:22:19,070 >> Og endelig, nГҘr du har alt, sammen, kan du kode problemet. 456 00:22:19,070 --> 00:22:23,370 Tage 5 til 10 minutter for at arbejde pГҘ dette problem. 457 00:22:23,370 --> 00:22:25,800 Jeg vil sГҰtte instruktionerne tilbage op i et sekund. 458 00:22:25,800 --> 00:22:27,990 Og sГҘ vil vi gГҘ over pseudokode og kode 459 00:22:27,990 --> 00:22:29,230 det lever som en gruppe. 460 00:22:29,230 --> 00:22:31,640 >> Hvis du har spГёrgsmГҘl, mens du er arbejder pГҘ dette, er du velkommen til at hГҰve 461 00:22:31,640 --> 00:22:34,260 din hГҘnd, og jeg vil komme rundt og besvare dem. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> STUDENT 7: Kan jeg knalde et stykke papir? 464 00:22:39,330 --> 00:22:41,537 >> JASON HIRSCHHORN: Hvad sker der? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [TYPING SOUNDS] 467 00:26:48,043 --> 00:26:48,730 >> JASON HIRSCHHORN: OK. 468 00:26:48,730 --> 00:26:51,710 Lad os gГҘ over pseudokoden fГёrst, og sГҘ vil jeg give dig et par mere 469 00:26:51,710 --> 00:26:52,960 minutter at afslutte kodning. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> Hvem vil gerne starte mig med den fГёrste linje i 472 00:26:58,650 --> 00:27:00,030 pseudokode til denne funktion? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> STUDENT 8: Kontroller, at du fik to filer. 475 00:27:05,740 --> 00:27:06,990 >> JASON HIRSCHHORN: OK. 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 Og hvis vi ikke? 478 00:27:22,990 --> 00:27:25,974 >> STUDENT 8: Jeg ville vende tilbage 0. 479 00:27:25,974 --> 00:27:27,872 >> JASON HIRSCHHORN: Skal vi vende tilbage 0? 480 00:27:27,872 --> 00:27:30,182 >> STUDENT 8: Return a - 481 00:27:30,182 --> 00:27:30,650 afblГҰnding. 482 00:27:30,650 --> 00:27:30,850 Undskyld. 483 00:27:30,850 --> 00:27:31,210 >> JASON HIRSCHHORN: Ja. 484 00:27:31,210 --> 00:27:32,710 Sandsynligvis ikke 0. 485 00:27:32,710 --> 00:27:34,680 Fordi 0 betyder alt var godt. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 SГҘ det er den fГёrste linje af pseudokode. 488 00:27:36,730 --> 00:27:38,715 Hvem har den anden linje i pseudokode? 489 00:27:38,715 --> 00:27:40,630 >> STUDENT 9: Г…ben begge filer? 490 00:27:40,630 --> 00:27:41,880 >> JASON HIRSCHHORN: Г…bn begge filer. 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: Kontroller hvis filen er NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON HIRSCHHORN: Kontroller, at at hverken er NULL. 496 00:28:12,580 --> 00:28:15,800 Som en sidebemГҰrkning - 497 00:28:15,800 --> 00:28:17,540 skrГҘstreg 0 - 498 00:28:17,540 --> 00:28:18,887 er, at NUL? 499 00:28:18,887 --> 00:28:20,080 >> STUDENT 11: Nej. 500 00:28:20,080 --> 00:28:21,190 >> JASON HIRSCHHORN: Det er ikke NULL. 501 00:28:21,190 --> 00:28:23,400 Det kaldes NULL terminator. 502 00:28:23,400 --> 00:28:25,580 Det er faktisk staves med kun Г©n liter. 503 00:28:25,580 --> 00:28:28,580 SГҘ kontrollerer noget imod det - der er faktisk et tegn - 504 00:28:28,580 --> 00:28:31,710 sГҘ kontrol noget imod, der er ikke det samme som kontrol for at se, om det 505 00:28:31,710 --> 00:28:32,690 lig NULL. 506 00:28:32,690 --> 00:28:34,100 >> Og nogle mennesker - 507 00:28:34,100 --> 00:28:36,040 pГҘ deres quizzer og deres problem sГҰt - har fГҘet 508 00:28:36,040 --> 00:28:36,890 to af dem forvirret. 509 00:28:36,890 --> 00:28:38,830 Men de to af dem er i virkeligheden forskellige. 510 00:28:38,830 --> 00:28:40,220 Man slutter en streng - 511 00:28:40,220 --> 00:28:43,210 den ene er en pointer til 0. 512 00:28:43,210 --> 00:28:46,490 >> STUDENT 12: Hvorfor ville du ikke kontrollere SГёrg for, at filerne ikke er NULL 513 00:28:46,490 --> 00:28:48,670 fГёr du ГҘbner dem? 514 00:28:48,670 --> 00:28:54,772 >> JASON HIRSCHHORN: So ГҘben sparer noget i denne fil. 515 00:28:54,772 --> 00:28:57,780 Og hvis du gГҘr tilbage her - 516 00:28:57,780 --> 00:28:59,520 sГҘ denne linje - fopen - 517 00:28:59,520 --> 00:29:05,300 vil give dig en adresse og butik at adressen i filen, hvis det virker. 518 00:29:05,300 --> 00:29:07,650 Hvis det ikke virker, er det gemmer 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 Fik dig. 522 00:29:08,500 --> 00:29:09,050 >> JASON HIRSCHHORN: I fil. 523 00:29:09,050 --> 00:29:11,990 SГҘ du kan ikke tjekke for NULL fГёr du har ГҘbnet dem. 524 00:29:11,990 --> 00:29:13,520 NULL betyder noget ikke gjorde fungere korrekt. 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 SГҘ tjek for at sikre hverken sige? 528 00:29:22,590 --> 00:29:23,200 Eller er? 529 00:29:23,200 --> 00:29:23,770 Hvad mener vi? 530 00:29:23,770 --> 00:29:24,310 Vi vil gГҘ med det. 531 00:29:24,310 --> 00:29:24,520 >> STUDENT 13: Er. 532 00:29:24,520 --> 00:29:25,020 >> JASON HIRSCHHORN: Er? 533 00:29:25,020 --> 00:29:25,930 Hverken er? 534 00:29:25,930 --> 00:29:26,350 >> STUDENT 13: Er. 535 00:29:26,350 --> 00:29:26,390 >> JASON HIRSCHHORN: OK. 536 00:29:26,390 --> 00:29:28,510 Vi synes at have nogle enighed om det. 537 00:29:28,510 --> 00:29:30,520 Hverken NULL. 538 00:29:30,520 --> 00:29:32,250 OK, nГҰste linje i pseudokode. 539 00:29:32,250 --> 00:29:33,600 Hvem har ikke givet mig en linje endnu? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 Vi vil vente pГҘ dig. 542 00:29:38,295 --> 00:29:39,020 Ja. 543 00:29:39,020 --> 00:29:40,895 >> STUDENT 14: Du er nГёdt til at lГҰse fra den fГёrste fil? 544 00:29:40,895 --> 00:29:42,290 >> JASON HIRSCHHORN: OK. 545 00:29:42,290 --> 00:29:46,240 >> STUDENT 14: Eller vi bruger fscanf eller noget som den fГёrste fil? 546 00:29:46,240 --> 00:29:50,650 >> JASON HIRSCHHORN: SГҘ vi Гёnsker at lГҰses fra den fГёrste fil, og - 547 00:29:50,650 --> 00:29:51,900 lad os sГҰtte det lige her. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 LГҰs fra kildefilen. 550 00:30:01,880 --> 00:30:05,370 Og sГҘ, hvad gГёr vi, nГҘr vi lГҰses fra kildefilen? 551 00:30:05,370 --> 00:30:06,620 En anden? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> STUDENT 15: Skriv ind destinationsfilen? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON HIRSCHHORN: Vi skriver til destinationsfilen, og - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 Hvad mangler vi? 558 00:30:30,030 --> 00:30:32,460 Nogen andre, der ikke har givet mig en linje kode endnu - af pseudokode. 559 00:30:32,460 --> 00:30:33,510 Ja. 560 00:30:33,510 --> 00:30:36,540 >> STUDENT 16: MГҘske kan du altid tjekke hvorvidt der er noget at lГҰse for, 561 00:30:36,540 --> 00:30:37,970 som den nГҰste linje? 562 00:30:37,970 --> 00:30:39,550 Det er ligesom den nГҰste linje, se, hvis den findes. 563 00:30:39,550 --> 00:30:40,660 >> [ELEKTRONISK BEEP] 564 00:30:40,660 --> 00:30:41,095 >> JASON HIRSCHHORN: Ups. 565 00:30:41,095 --> 00:30:43,120 Det er min journal software. 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 HIRSCHHORN: SГҘ giv det til mig en gang mere. 569 00:30:48,940 --> 00:30:51,640 >> STUDENT 16: Kontroller, om der er stadig en nГҰste linje fra 570 00:30:51,640 --> 00:30:52,920 kildefil at lГҰse. 571 00:30:52,920 --> 00:30:53,500 >> JASON HIRSCHHORN: OK. 572 00:30:53,500 --> 00:30:56,060 SГҘ vi ikke lГҰser linier - lГҰste bytes her - 573 00:30:56,060 --> 00:30:57,590 men du er korrekte. 574 00:30:57,590 --> 00:31:00,040 Vi Гёnsker at lГҰse og skrive, indtil der ikke er flere bytes. 575 00:31:00,040 --> 00:31:11,430 576 00:31:11,430 --> 00:31:11,735 OK. 577 00:31:11,735 --> 00:31:16,940 Og sГҘ disse bГёr virkelig vГҰre indrykket lidt, fordi de er under der. 578 00:31:16,940 --> 00:31:17,470 Right? 579 00:31:17,470 --> 00:31:20,620 Indtil vi er ude af bytes, vi kommer til lГҰses fra kildefilen og skrive 580 00:31:20,620 --> 00:31:22,160 til destinationen fil. 581 00:31:22,160 --> 00:31:24,510 >> Og sГҘ, hvad der er den sidste linje pseudokode? 582 00:31:24,510 --> 00:31:26,380 Nogen, der er ikke givet mig endnu noget. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> STUDENT 17: Luk filerne? 585 00:31:30,260 --> 00:31:31,510 >> JASON HIRSCHHORN: PrГҰcis. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 Luk filerne. 588 00:31:37,450 --> 00:31:38,400 SГҘ der er vores pseudokode. 589 00:31:38,400 --> 00:31:41,870 Jeg har tГҰnkt mig at sГҰtte pseudokoden ind gedit, og i et par minutter, vi 590 00:31:41,870 --> 00:31:44,626 vil kode det sammen. 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 Lad os komme i gang som en gruppe. 594 00:33:58,290 --> 00:33:59,940 Nishant, jeg har min nye fil. 595 00:33:59,940 --> 00:34:01,130 Jeg har lige ГҘbnet det op. 596 00:34:01,130 --> 00:34:01,880 Untitled document 1. 597 00:34:01,880 --> 00:34:05,490 Hvad er det fГёrste, jeg skal gГёre? 598 00:34:05,490 --> 00:34:07,040 >> Nishant: Medtag bibliotekerne? 599 00:34:07,040 --> 00:34:08,219 >> JASON HIRSCHHORN: OK. 600 00:34:08,219 --> 00:34:11,070 Hvilke biblioteker? 601 00:34:11,070 --> 00:34:17,570 >> Nishant: stdio.h, stdlib.h, tror jeg? 602 00:34:17,570 --> 00:34:18,000 >> JASON HIRSCHHORN: OK. 603 00:34:18,000 --> 00:34:21,592 Hvad er stdlib efter? 604 00:34:21,592 --> 00:34:23,010 >> Nishant: Jeg har glemt. 605 00:34:23,010 --> 00:34:23,219 >> JASON HIRSCHHORN: OK. 606 00:34:23,219 --> 00:34:24,179 SГҘ indeholde stdio. 607 00:34:24,179 --> 00:34:28,630 Hvad skal jeg gГёre, selv fГёr Jeg starte kodning? 608 00:34:28,630 --> 00:34:29,710 >> Nishant: Skriv en overskrift? 609 00:34:29,710 --> 00:34:31,830 >> JASON HIRSCHHORN: Hvordan fГҘr jeg det farvet? 610 00:34:31,830 --> 00:34:34,060 >> [indskyde STEMMER] 611 00:34:34,060 --> 00:34:35,040 >> Nishant: Hvordan fГҘr du det farvet? 612 00:34:35,040 --> 00:34:38,060 >> JASON HIRSCHHORN: Hvordan skal jeg Farvekodning? 613 00:34:38,060 --> 00:34:38,570 >> Nishant: Jeg ved det ikke. 614 00:34:38,570 --> 00:34:38,830 Oh. 615 00:34:38,830 --> 00:34:39,389 Gem. 616 00:34:39,389 --> 00:34:39,929 >> JASON HIRSCHHORN: Gem. 617 00:34:39,929 --> 00:34:40,270 Ja. 618 00:34:40,270 --> 00:34:41,760 Jeg skulle gemme det som en. Ca. 619 00:34:41,760 --> 00:34:46,239 SГҘ gem det pГҘ skrivebordet som cp.c. 620 00:34:46,239 --> 00:34:47,280 SГёd. 621 00:34:47,280 --> 00:34:51,199 Og hvis jeg Гёnsker at fГҘ fuld stil punkter, hvad skal jeg 622 00:34:51,199 --> 00:34:53,085 omfatte foroven? 623 00:34:53,085 --> 00:34:58,390 >> Nishant: Du kan skrive dit navn, navnet af programmet, og formГҘlet 624 00:34:58,390 --> 00:34:59,640 af programmet sГҘ godt? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> JASON HIRSCHHORN: Ser godt ud. 627 00:35:10,040 --> 00:35:10,470 Excellent. 628 00:35:10,470 --> 00:35:12,940 SГҘ du har startede os perfekt. 629 00:35:12,940 --> 00:35:13,720 # Include - 630 00:35:13,720 --> 00:35:15,365 vi vil ogsГҘ skrive - 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 SГҘ jeg tror, вҖӢвҖӢjeg alle indstillet til at gГҘ. 634 00:35:33,520 --> 00:35:38,003 Hvem har den fГёrste linje kode for mig - eller de fГёrste linjer kode, der 635 00:35:38,003 --> 00:35:41,280 det vil tage at tilfredsstille vores fГёrste kommentere i pseudokode? 636 00:35:41,280 --> 00:35:41,985 Dig. 637 00:35:41,985 --> 00:35:48,780 >> STUDENT 18: BГёr det ikke vГҰre int argc og derefter char * argv? 638 00:35:48,780 --> 00:35:49,490 >> JASON HIRSCHHORN: Jeg tror du har ret. 639 00:35:49,490 --> 00:35:56,270 Lad os ГҰndre det til int main, ГҘbne parentes, int argc, komma, char * argv? 640 00:35:56,270 --> 00:35:57,150 Ligesom det? 641 00:35:57,150 --> 00:35:57,410 >> STUDENT 18: Beslag. 642 00:35:57,410 --> 00:35:58,260 >> JASON HIRSCHHORN: Beslag. 643 00:35:58,260 --> 00:35:59,860 Г…bneparentes tГҰt beslag, tГҰt forГҰlder. 644 00:35:59,860 --> 00:36:00,240 Perfect. 645 00:36:00,240 --> 00:36:02,160 Nu kan jeg tage kommandolinje-argumenter. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 Sikre, at vi fik to filer. 648 00:36:04,250 --> 00:36:07,905 Du kan give mig, at sГҘ godt. 649 00:36:07,905 --> 00:36:09,180 >> STUDENT 18: Hvis argc - 650 00:36:09,180 --> 00:36:11,060 det man ikke lig 3. 651 00:36:11,060 --> 00:36:14,360 >> JASON HIRSCHHORN: Hvis ГҘbne paren argc ikke lig med 3? 652 00:36:14,360 --> 00:36:16,970 >> STUDENT 18: Ja, du vender tilbage 1 eller noget. 653 00:36:16,970 --> 00:36:17,460 >> JASON HIRSCHHORN: Undskyld. 654 00:36:17,460 --> 00:36:19,120 >> STUDENT 18: Return 1 eller noget. 655 00:36:19,120 --> 00:36:20,270 >> JASON HIRSCHHORN: Tilbage 1. 656 00:36:20,270 --> 00:36:22,230 OK? 657 00:36:22,230 --> 00:36:22,970 Store. 658 00:36:22,970 --> 00:36:24,290 Г…bn begge filer. 659 00:36:24,290 --> 00:36:26,160 Hvem kan hjГҰlpe mig at ГҘbne begge filer? 660 00:36:26,160 --> 00:36:28,125 Hvem har ikke givet mig koden endnu? 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: SГҘ alle caps F-I-L-E stjerne kilde. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON HIRSCHHORN: Jeg har tГҰnkt mig at tage ud vokaler. 666 00:36:40,920 --> 00:36:41,570 Det er cool. 667 00:36:41,570 --> 00:36:42,716 Det er ligesom Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> STUDENT 18: Lig fopen - 669 00:36:44,610 --> 00:36:46,612 >> JASON HIRSCHHORN: Lig fopen? 670 00:36:46,612 --> 00:36:49,870 >> STUDENT 18: Г…bne parentes, argv, ГҘbneparentes. 671 00:36:49,870 --> 00:36:50,055 >> JASON HIRSCHHORN: Vent. 672 00:36:50,055 --> 00:36:50,240 Undskyld. 673 00:36:50,240 --> 00:36:51,050 Г…ben parentes. 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 Argv sub 1.. 677 00:36:55,110 --> 00:36:55,860 >> JASON HIRSCHHORN: Sub 1? 678 00:36:55,860 --> 00:36:56,140 >> STUDENT 18: Ja. 679 00:36:56,140 --> 00:36:58,540 Argv ГҘbneparentes 1 - 680 00:36:58,540 --> 00:36:59,730 Ja. 681 00:36:59,730 --> 00:37:06,470 Og sГҘ komma og derefter ГҘbne dobbelt citat, r, dobbelt citat, 682 00:37:06,470 --> 00:37:08,250 tГҰtte paren, semikolon. 683 00:37:08,250 --> 00:37:09,450 >> JASON HIRSCHHORN: SГёd. 684 00:37:09,450 --> 00:37:10,950 Og hvad med den anden? 685 00:37:10,950 --> 00:37:16,030 >> STUDENT 18: Meget lignende, men i stedet af S-R-C, ville du kalde det D-S-T. 686 00:37:16,030 --> 00:37:17,060 >> JASON HIRSCHHORN: Oo! 687 00:37:17,060 --> 00:37:17,772 Jeg kan godt lide det. 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 Og sГҘ argv, ГҘbneparentes, 2.. 690 00:37:23,057 --> 00:37:23,200 Ja. 691 00:37:23,200 --> 00:37:26,720 Og sГҘ w stedet for r.. 692 00:37:26,720 --> 00:37:27,620 Ja. 693 00:37:27,620 --> 00:37:29,630 >> JASON HIRSCHHORN: Great. 694 00:37:29,630 --> 00:37:31,360 NГҰste par linjer. 695 00:37:31,360 --> 00:37:34,040 OgsГҘ, hvis nogen har ting at tilfГёje til linjer, som vi har gjort, er du velkommen til 696 00:37:34,040 --> 00:37:35,690 tilfГёje dem sГҘ godt. 697 00:37:35,690 --> 00:37:37,520 Kontroller, at ingen af вҖӢвҖӢdem er NULL. 698 00:37:37,520 --> 00:37:41,450 Hvem kan give mig den kode jeg har brug for at tilfredsstille denne linje af 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: Hvis src lig ligemГҰnd NULL eller dst lig ligemГҰnd 702 00:37:58,645 --> 00:38:04,590 NULL, sГҘ du vender tilbage - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON HIRSCHHORN: Hvad? 705 00:38:07,976 --> 00:38:08,890 >> ARCHER: Return 2? 706 00:38:08,890 --> 00:38:09,760 >> JASON HIRSCHHORN: Return 2. 707 00:38:09,760 --> 00:38:14,400 SГҘ hvis ГҘben parentes src lig lig NULL, eller - 708 00:38:14,400 --> 00:38:15,590 uanset hvad der thing's - rГёr? 709 00:38:15,590 --> 00:38:16,346 Pipe? 710 00:38:16,346 --> 00:38:17,140 Vi kalder det rГёr. 711 00:38:17,140 --> 00:38:22,340 Pipe, rГёr, dst lig ligemГҰnd NULL, returnere 2. 712 00:38:22,340 --> 00:38:23,900 OK? 713 00:38:23,900 --> 00:38:26,060 Indtil vi er ude af bytes - 714 00:38:26,060 --> 00:38:29,820 vi slags springes over dette skridt fra pseudokoden del til at gГҘ til her. 715 00:38:29,820 --> 00:38:31,970 >> Men indtil vi er ude af bytes - hvad lyder det? 716 00:38:31,970 --> 00:38:34,680 Hvilken type C struktur - 717 00:38:34,680 --> 00:38:36,160 men jeg bruger ikke ordet struktur, fordi vi kommer til at begynde at bruge 718 00:38:36,160 --> 00:38:37,350 at i andre tilfГҰlde - 719 00:38:37,350 --> 00:38:39,495 men C vГҰrktГёj lyder det? 720 00:38:39,495 --> 00:38:39,970 >> STUDENT 19: En lГёkke. 721 00:38:39,970 --> 00:38:40,980 >> JASON HIRSCHHORN: En lГёkke. 722 00:38:40,980 --> 00:38:43,060 Lyder som en lГёkke. 723 00:38:43,060 --> 00:38:49,670 SГҘ der kan give mig den fГёrste linje af lГёkken kode lige her? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 Du kan ogsГҘ vГҰlge, hvilken slags loop, du Гёnsker, hvis du giver mig 726 00:39:01,980 --> 00:39:03,215 denne linje kode. 727 00:39:03,215 --> 00:39:04,150 Der findes tre typer. 728 00:39:04,150 --> 00:39:06,530 Du kommer til at plukke. 729 00:39:06,530 --> 00:39:08,080 Jeg vil foreslГҘ en af вҖӢвҖӢdem. 730 00:39:08,080 --> 00:39:08,410 Avi. 731 00:39:08,410 --> 00:39:09,230 Hvilken en vil du have? 732 00:39:09,230 --> 00:39:09,960 >> AVI: FOR. 733 00:39:09,960 --> 00:39:11,460 >> JASON HIRSCHHORN: FOR. 734 00:39:11,460 --> 00:39:15,180 >> AVI: int i er lig med nul. 735 00:39:15,180 --> 00:39:17,360 >> JASON HIRSCHHORN: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI: Denne del er jeg ikke sikker pГҘ om. 737 00:39:18,570 --> 00:39:29,080 Men i er mindre end stГёrrelsen af stjerne kilde? 738 00:39:29,080 --> 00:39:31,128 Jeg er ikke sikker pГҘ. 739 00:39:31,128 --> 00:39:32,580 >> JASON HIRSCHHORN: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: Fordi du Гёnsker, at stГёrrelsen pГҘ en fil, right? 741 00:39:35,870 --> 00:39:41,090 >> JASON HIRSCHHORN: SГҘ det vil sandsynligvis ikke giver os stГёrrelsen af вҖӢвҖӢden faktiske 742 00:39:41,090 --> 00:39:43,010 fil i bytes. 743 00:39:43,010 --> 00:39:47,680 SГҘ hvad andet kunne vi gГёre? 744 00:39:47,680 --> 00:39:48,810 Hvad er en anden type loop? 745 00:39:48,810 --> 00:39:50,180 Eller skal vi holde fast i for-lГёkken? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> STUDENT 20: Kan du en while-lГёkke? 748 00:39:57,900 --> 00:40:01,350 Og sГҘ, hvad du ville gГёre, er I ville i stedet - 749 00:40:01,350 --> 00:40:03,930 fordi vi har en char * til filen. 750 00:40:03,930 --> 00:40:07,950 SГҘ hvis vi bare holde forГёgelse at indtil vi ville finde NULL tegn pГҘ 751 00:40:07,950 --> 00:40:08,500 i slutningen af вҖӢвҖӢdet? 752 00:40:08,500 --> 00:40:11,130 Eller nej, er, at ikke hvordan filer fungerer? 753 00:40:11,130 --> 00:40:14,300 >> JASON HIRSCHHORN: SГҘ vi kan beholde forГёgelse af char * 754 00:40:14,300 --> 00:40:16,340 indtil vi finder NULL - 755 00:40:16,340 --> 00:40:18,580 >> STUDENT 20: VГҰsentlige holde ud tegn for tegn, indtil vi ramte 756 00:40:18,580 --> 00:40:21,250 slutningen af вҖӢвҖӢfilen. 757 00:40:21,250 --> 00:40:21,600 >> JASON HIRSCHHORN: Ja. 758 00:40:21,600 --> 00:40:22,560 SГҘ det er hvad vi Гёnsker at gГёre. 759 00:40:22,560 --> 00:40:24,545 Vi Гёnsker at holde lГҰsning, karakter af tegn, indtil vi kommer til 760 00:40:24,545 --> 00:40:25,080 slutningen af вҖӢвҖӢfilen. 761 00:40:25,080 --> 00:40:25,375 >> STUDENT 20: Ja. 762 00:40:25,375 --> 00:40:25,860 Find - 763 00:40:25,860 --> 00:40:28,540 hvad er enden eller stopskilt ved afslutningen af вҖӢвҖӢen tekstfil. 764 00:40:28,540 --> 00:40:28,620 >> JASON HIRSCHHORN: OK. 765 00:40:28,620 --> 00:40:30,140 SГҘ nГҘr vi kommer til slutningen af вҖӢвҖӢfilen - hvordan kan vi vide, vi har nГҘet 766 00:40:30,140 --> 00:40:33,200 slutningen af вҖӢвҖӢen fil? 767 00:40:33,200 --> 00:40:34,710 Hvis jeg ringer - 768 00:40:34,710 --> 00:40:35,910 sГҘ lad os trГҰde et skridt tilbage. 769 00:40:35,910 --> 00:40:37,550 Hvad er en funktion? 770 00:40:37,550 --> 00:40:39,360 Lad os gГҘ til denne linje lige her. 771 00:40:39,360 --> 00:40:40,630 LГҰs fra kildefilen. 772 00:40:40,630 --> 00:40:41,880 Hvem kan give mig denne linje 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 HIRSCHHORN: fscanf. 776 00:40:49,110 --> 00:40:49,510 OK. 777 00:40:49,510 --> 00:40:52,240 Hvad hvis jeg Гёnsker at lГҰse, meget specifikt en byte? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> STUDENT 21: Jeg ved det ikke. 780 00:40:56,860 --> 00:40:57,110 >> JASON HIRSCHHORN: OK. 781 00:40:57,110 --> 00:40:59,380 Endnu enklere end fscanf - hvad er en - 782 00:40:59,380 --> 00:41:01,890 Jeg Гёnsker at lГҰse fra en kilde fil? 783 00:41:01,890 --> 00:41:03,720 LГҰse fra en kildefil. 784 00:41:03,720 --> 00:41:04,850 Hvad er en funktion - ja. 785 00:41:04,850 --> 00:41:05,380 >> STUDENT 22: Det er fread? 786 00:41:05,380 --> 00:41:06,070 >> JASON HIRSCHHORN: fread. 787 00:41:06,070 --> 00:41:07,550 Jeg tror, вҖӢвҖӢlad os holde fast i at man for nu. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 Hvilken slags argumenter betyder fread tage? 790 00:41:13,650 --> 00:41:17,410 >> STUDENT 22: Sandsynligvis den filtype, og derefter placering i filen? 791 00:41:17,410 --> 00:41:19,550 >> JASON HIRSCHHORN: Hvad kan jeg skrive her at finde ud af, hvilken type argumenter 792 00:41:19,550 --> 00:41:20,950 fread tager? 793 00:41:20,950 --> 00:41:23,710 >> FLERE STUDERENDE: Man fread. 794 00:41:23,710 --> 00:41:24,740 >> JASON HIRSCHHORN: Man fread og fwrite. 795 00:41:24,740 --> 00:41:25,980 Ligner de hГҰnge ud sammen. 796 00:41:25,980 --> 00:41:29,589 SГҘ fread tager, hvor mange argumenter? 797 00:41:29,589 --> 00:41:30,920 >> STUDENT 23: Four. 798 00:41:30,920 --> 00:41:32,690 >> JASON HIRSCHHORN: Det tager fire argumenter. 799 00:41:32,690 --> 00:41:41,100 Det tager en pointer, en stГёrrelse, og at ting, som er underligt, og nogle fil. 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 Lad os lГҰse om det lige her. 802 00:41:43,990 --> 00:41:49,370 "Funktionen fread lГҰser n memb elementer af data, hver stГёrrelse bytes 803 00:41:49,370 --> 00:41:53,840 lang, fra strГёmmen der peges pГҘ af streame, opbevare dem pГҘ det sted, 804 00:41:53,840 --> 00:41:56,170 afgivet pointer. " 805 00:41:56,170 --> 00:41:57,960 >> SГҘ fire argumenter. 806 00:41:57,960 --> 00:42:04,510 Hvorfor kan jeg ikke bare kopiere det, og indsГҰt den lige her. 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 SГҘ der kan begynde at udfylde disse argumenter til mig? 810 00:42:13,673 --> 00:42:15,840 Avi. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Tag tomrum. 812 00:42:17,720 --> 00:42:20,530 SГҰt bare src. 813 00:42:20,530 --> 00:42:23,142 Tag pointer og stjernen. 814 00:42:23,142 --> 00:42:26,102 Put src. 815 00:42:26,102 --> 00:42:27,050 SГҘ - 816 00:42:27,050 --> 00:42:28,500 >> JASON HIRSCHHORN: SГҘ jeg har tГҰnkt mig at stoppe du der, fordi det er forkert. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 Du har ret med src, men hvor skal src hen? 819 00:42:34,710 --> 00:42:35,960 >> [indskyde STEMMER] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON HIRSCHHORN: Det bГёr gГҘ over her. 822 00:42:41,610 --> 00:42:43,790 Det er src - vores src er en type. 823 00:42:43,790 --> 00:42:44,610 Lad os se her. 824 00:42:44,610 --> 00:42:49,610 Dette beder om en type FIL *, vi faktisk normalt se dem sГҘdan. 825 00:42:49,610 --> 00:42:57,630 SГҘ dette er at bede om et argument for filtypen * kaldet strГёm, der er src. 826 00:42:57,630 --> 00:42:58,480 OK? 827 00:42:58,480 --> 00:43:00,410 >> Hvilken stГёrrelse af ting at gГёre vi Гёnsker at lГҰse? 828 00:43:00,410 --> 00:43:03,340 Jeg gav dig dette i beskrivelse af problemet. 829 00:43:03,340 --> 00:43:04,370 >> STUDENT 24: En byte ad gangen. 830 00:43:04,370 --> 00:43:05,340 >> JASON HIRSCHHORN: Гүn byte. 831 00:43:05,340 --> 00:43:08,205 Hvor stor er en byte? 832 00:43:08,205 --> 00:43:11,642 Dens stГёrrelse er i bytes, sГҘ hvad kan jeg sГҰtte lige der? 833 00:43:11,642 --> 00:43:12,910 >> STUDENT 25: One. 834 00:43:12,910 --> 00:43:14,730 >> JASON HIRSCHHORN: One. 835 00:43:14,730 --> 00:43:17,020 Right. 836 00:43:17,020 --> 00:43:19,940 Dens stГёrrelse er i enhed byte, sГҘ 1 er 1 byte. 837 00:43:19,940 --> 00:43:22,284 Hvor mange Гёnsker jeg at lГҰse pГҘ et tidspunkt. 838 00:43:22,284 --> 00:43:23,520 >> STUDENT 26: One? 839 00:43:23,520 --> 00:43:24,270 >> JASON HIRSCHHORN: En ting. 840 00:43:24,270 --> 00:43:28,540 Jeg Гёnsker at lГҰse en ting af stГёrrelse 1, en bid ad gangen. 841 00:43:28,540 --> 00:43:32,110 Og hvor skal jeg sГҰtte det, nГҘr jeg lГҰse det? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> STUDENT 27: Destination? 844 00:43:36,510 --> 00:43:39,270 >> JASON HIRSCHHORN: SГҘ jeg kan ikke sГҰtte det lige ind destination. 845 00:43:39,270 --> 00:43:40,800 >> STUDENT 28: Du kommer put det ind i en tredje pointer? 846 00:43:40,800 --> 00:43:41,780 >> STUDENT 27: til destinationen. 847 00:43:41,780 --> 00:43:42,270 >> JASON HIRSCHHORN: OK. 848 00:43:42,270 --> 00:43:42,630 Ja. 849 00:43:42,630 --> 00:43:46,820 >> STUDENT 29: Du kan erklГҰre noget til fungere som en midlertidig oplagring tidligere. 850 00:43:46,820 --> 00:43:47,350 >> JASON HIRSCHHORN: OK. 851 00:43:47,350 --> 00:43:50,080 Giv mig den. 852 00:43:50,080 --> 00:43:53,930 >> STUDENT 29: En anden fil pointer, mГҘske? 853 00:43:53,930 --> 00:43:54,220 >> JASON HIRSCHHORN: OK. 854 00:43:54,220 --> 00:43:55,585 SГҘ dette er ugyldig stjerne - 855 00:43:55,585 --> 00:43:57,750 det er en type tomrum stjerne, sГҘ det ikke vГҰre en fil pointer. 856 00:43:57,750 --> 00:44:02,520 Og hvis jeg lГҰser en byte, hvor ville vГҰre et godt sted 857 00:44:02,520 --> 00:44:03,850 at gemme en byte? 858 00:44:03,850 --> 00:44:04,660 >> STUDENT 29: Et array? 859 00:44:04,660 --> 00:44:05,770 >> JASON HIRSCHHORN: An array. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 Og hvad der ellers er noget, der er bare stГёrrelse en byte? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> STUDENT 30: Et char *? 864 00:44:18,060 --> 00:44:18,530 >> STUDENT 29: Ja. 865 00:44:18,530 --> 00:44:19,880 >> JASON HIRSCHHORN: En char * er ikke Г©n byte. 866 00:44:19,880 --> 00:44:20,440 >> STUDENT 29: En char. 867 00:44:20,440 --> 00:44:21,810 >> JASON HIRSCHHORN: En char er en byte. 868 00:44:21,810 --> 00:44:22,920 Right? 869 00:44:22,920 --> 00:44:26,740 SГҘ lad os kalde denne buffer er en generisk betegnelse for disse ting til at gemme 870 00:44:26,740 --> 00:44:27,910 noget midlertidigt. 871 00:44:27,910 --> 00:44:30,880 SГҘ jeg skabe en buffer. 872 00:44:30,880 --> 00:44:31,150 Right? 873 00:44:31,150 --> 00:44:32,990 Men det tager en void *. 874 00:44:32,990 --> 00:44:38,660 SГҘ mГҘske du har ret, at det bГёr vГҰre en buffer pГҘ stГёrrelse 0. 875 00:44:38,660 --> 00:44:41,070 SГҘ det gemmer en - 876 00:44:41,070 --> 00:44:41,280 hГёjre. 877 00:44:41,280 --> 00:44:43,560 >> Fordi denne ret her - char buffer er et tegn, men 878 00:44:43,560 --> 00:44:45,110 det tager en void * - 879 00:44:45,110 --> 00:44:45,870 en pointer. 880 00:44:45,870 --> 00:44:50,640 SГҘ jeg kunne gГёre dette og nu puffer er en pointer. 881 00:44:50,640 --> 00:44:53,214 Hvad andet kunne jeg gГёre? 882 00:44:53,214 --> 00:44:55,775 >> STUDENT 31: SГҰt en stjerne ud til char. 883 00:44:55,775 --> 00:44:58,380 >> JASON HIRSCHHORN: Jeg kunne har skabt det char *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 Hvad er en anden ting, jeg kunne gГёre? 886 00:45:03,131 --> 00:45:04,050 Eller lad os gГҘ med denne ene. 887 00:45:04,050 --> 00:45:05,740 Char * buffer, sГҘ hvad sГҰtter jeg her? 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 HIRSCHHORN: Buffer. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 Buffer er en pointer til en char. 893 00:45:14,500 --> 00:45:19,480 Og i den placering, vi sГҰtter en byte noget, vi har lГҰst. 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: Bare et hurtigt spГёrgsmГҘl. 897 00:45:21,230 --> 00:45:24,440 Гҳnsker du at allokere buffer? 898 00:45:24,440 --> 00:45:25,930 >> JASON HIRSCHHORN: Hvem kan besvare dette spГёrgsmГҘl? 899 00:45:25,930 --> 00:45:30,210 >> STUDENT 32: NГҘ, det gГёr ikke rigtig punkt til noget lige nu, sГҘ - 900 00:45:30,210 --> 00:45:32,610 >> JASON HIRSCHHORN: Men gГёr vi Гёnsker at allokere det? 901 00:45:32,610 --> 00:45:35,600 >> STUDENT 32: Hvis du skulle gГёre det pГҘ den mГҘde, tror jeg, ja, fordi du havde behov for 902 00:45:35,600 --> 00:45:36,990 nogle sted for det til at pege pГҘ. 903 00:45:36,990 --> 00:45:38,350 >> JASON HIRSCHHORN: Har vi nГёdt til at allokere det? 904 00:45:38,350 --> 00:45:40,580 >> STUDENT 33: Hvis du vil bruge den uden for slГёjfen. 905 00:45:40,580 --> 00:45:42,524 >> JASON HIRSCHHORN: Skal vi bruge den uden for loop? 906 00:45:42,524 --> 00:45:44,392 >> STUDENT 34: Ja. 907 00:45:44,392 --> 00:45:44,860 >> STUDENT 35: Vent. 908 00:45:44,860 --> 00:45:46,980 Гҳnsker vi at erklГҰre den i slГёjfen til ud? 909 00:45:46,980 --> 00:45:50,100 >> JASON HIRSCHHORN: SГҘ jeg gГҰtte, vi har nogle pseudo MENS lГёkke her, at vi er 910 00:45:50,100 --> 00:45:51,950 forsГёger at regne ud, at Vi har ikke fГҘet til endnu. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 Vi behГёver ikke at allokere den. 913 00:45:56,010 --> 00:45:59,310 Vi opererer i hovedsagen, er det kun gГҘr til brug inden for denne lГёkke. 914 00:45:59,310 --> 00:46:00,540 Det behГёver ikke at eksistere uden for dette. 915 00:46:00,540 --> 00:46:02,340 >> SГҘ det kan vГҰre en lokal variabel. 916 00:46:02,340 --> 00:46:03,925 Du har en pointer til en lokal variabel. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> STUDENT 36: Men det er ikke peger pГҘ noget. 919 00:46:09,590 --> 00:46:11,540 >> JASON HIRSCHHORN: Nej, det er ikke initialiseres til noget. 920 00:46:11,540 --> 00:46:12,790 Men vi kommer ikke til at bruge det ogsГҘ. 921 00:46:12,790 --> 00:46:15,300 Vi kommer til at sГҰtte noget i det fГёrste gang vi bruger den. 922 00:46:15,300 --> 00:46:16,580 SГҘ der synes OK. 923 00:46:16,580 --> 00:46:17,780 SГҘ vi har ikke brug for malloc her. 924 00:46:17,780 --> 00:46:19,360 Og jeg synes, det er OK, som det er. 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 Vi har den fread linje. 928 00:46:27,190 --> 00:46:28,490 Lad os gГёre den nГҰste linje. 929 00:46:28,490 --> 00:46:32,984 >> Hvis vi Гёnsker at skrive til en fil, hvad er en god funktion at bruge til at gГёre det? 930 00:46:32,984 --> 00:46:33,770 >> STUDENT 37: fwrite? 931 00:46:33,770 --> 00:46:35,140 >> STUDENT 38: fprintf? 932 00:46:35,140 --> 00:46:36,010 >> JASON HIRSCHHORN: fprintf er Г©n. 933 00:46:36,010 --> 00:46:37,260 Hvad er en anden? 934 00:46:37,260 --> 00:46:37,680 >> STUDENT 39: fwrite. 935 00:46:37,680 --> 00:46:38,510 >> JASON HIRSCHHORN: fwrite. 936 00:46:38,510 --> 00:46:41,250 Og til vores formГҘl, fwrite, som vi sГҘ her, er 937 00:46:41,250 --> 00:46:42,500 sandsynligvis det bedste valg. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 Det tager fire argumenter sГҘ godt. 940 00:46:53,950 --> 00:46:57,570 Nishant, kan du give me argumenterne? 941 00:46:57,570 --> 00:47:00,570 >> Nishant: Den fГёrste ens igangvГҰrende at vГҰre lige puffer. 942 00:47:00,570 --> 00:47:02,210 >> JASON HIRSCHHORN: OK. 943 00:47:02,210 --> 00:47:06,752 >> Nishant: Den anden ens bare at vГҰre 1. 944 00:47:06,752 --> 00:47:09,510 Tredje man kommer til at vГҰre 1. 945 00:47:09,510 --> 00:47:11,470 Og den fjerde bliver DST. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON HIRSCHHORN: Er der nogen, der har spГёrgsmГҘl om denne linje? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 Det ser godt ud. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 SГҘ nu ser det ud som den ene ting, vi er mangler - faktisk, lad os skrive 952 00:47:34,250 --> 00:47:35,090 denne sidste linje. 953 00:47:35,090 --> 00:47:36,300 Luk filerne. 954 00:47:36,300 --> 00:47:38,880 Hvem kan afslutte os op skrivning disse to sidste linjer? 955 00:47:38,880 --> 00:47:39,120 Ja. 956 00:47:39,120 --> 00:47:39,850 Undskyld, hvad er dit navn? 957 00:47:39,850 --> 00:47:40,580 >> LUCY: Lucy. 958 00:47:40,580 --> 00:47:41,580 >> JASON HIRSCHHORN: Lucy. 959 00:47:41,580 --> 00:47:47,560 >> LUCY: fclose src og derefter fclose destination. 960 00:47:47,560 --> 00:47:52,430 >> JASON HIRSCHHORN: fclose, ГҘben parentes, src, tГҰtte paren, semikolon. 961 00:47:52,430 --> 00:47:53,680 Og 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: Г…ben parenteser, dst og derefter semikolon. 965 00:48:01,710 --> 00:48:02,520 >> JASON HIRSCHHORN: Great. 966 00:48:02,520 --> 00:48:04,338 Og hvad skal jeg medtage i slutningen? 967 00:48:04,338 --> 00:48:05,210 >> LUCY: Return 0. 968 00:48:05,210 --> 00:48:05,570 >> JASON HIRSCHHORN: Return 0. 969 00:48:05,570 --> 00:48:06,820 Skal jeg? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 Bare et spГёrgsmГҘl. 972 00:48:12,590 --> 00:48:14,957 Har vi nГёdt til at medtage tilbagevenden 0? 973 00:48:14,957 --> 00:48:16,240 >> FLERE STUDERENDE: Nej. 974 00:48:16,240 --> 00:48:16,430 >> JASON HIRSCHHORN: Nej. 975 00:48:16,430 --> 00:48:18,090 Main gГёr det automatisk hvis du kommer til enden. 976 00:48:18,090 --> 00:48:20,580 Men jeg synes det er rart at medtage den eksplicit. 977 00:48:20,580 --> 00:48:23,860 IsГҰr nГҘr vi vender tilbage en anden ting i hele programmet. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 Dette er, hvad vi mangler - 980 00:48:26,230 --> 00:48:28,520 MENS hvad? 981 00:48:28,520 --> 00:48:31,630 Hvem kan tГҰnke pГҘ nogle - 982 00:48:31,630 --> 00:48:35,240 har en fornemmelse af, hvad tingene kunne gГҘ derind? 983 00:48:35,240 --> 00:48:37,350 Selvom det er bare i nogle pseudokode lignende sprog? 984 00:48:37,350 --> 00:48:41,330 >> Hvad er vi egentlig - hvad Гёnsker vi at gГҘ, indtil? 985 00:48:41,330 --> 00:48:41,980 Ja, Lucy. 986 00:48:41,980 --> 00:48:43,240 >> LUCY: Slutningen af вҖӢвҖӢfilen. 987 00:48:43,240 --> 00:48:44,990 >> JASON HIRSCHHORN: Slutningen af вҖӢвҖӢfilen. 988 00:48:44,990 --> 00:48:49,280 SГҘ hvad mener du med slutningen af вҖӢвҖӢfilen? 989 00:48:49,280 --> 00:48:50,955 >> LUCY: NГҘr du kommer til slutningen af вҖӢвҖӢfilen, stop. 990 00:48:50,955 --> 00:48:51,240 >> JASON HIRSCHHORN: OK. 991 00:48:51,240 --> 00:48:53,460 SГҘ nГҘr vi nГҘr til slutningen af вҖӢвҖӢfilen. 992 00:48:53,460 --> 00:48:56,893 Hvordan kan vi vide, nГҘr vi har nГҘet slutningen af вҖӢвҖӢfil? 993 00:48:56,893 --> 00:48:59,900 >> STUDENT 40: Jeg tror buffer vil blive sat til NULL. 994 00:48:59,900 --> 00:49:01,885 >> STUDENT 41: Buffer er erklГҰret inde i slГёjfen. 995 00:49:01,885 --> 00:49:03,670 >> JASON HIRSCHHORN: SГҘ du tror buffer vil blive sat til NULL. 996 00:49:03,670 --> 00:49:05,850 Hvorfor skulle buffer sГҰttes til NULL? 997 00:49:05,850 --> 00:49:10,420 >> STUDENT 40: Fordi nГҘr du fread, forsГёger du at sГҰtte 998 00:49:10,420 --> 00:49:13,528 intet ind i buffer. 999 00:49:13,528 --> 00:49:13,980 >> JASON HIRSCHHORN: OK. 1000 00:49:13,980 --> 00:49:15,550 SГҘ du tГҰnker fread - 1001 00:49:15,550 --> 00:49:19,000 nГҘr vi har nГҘet slutningen af вҖӢвҖӢden fil, hvad der er fread gГёre? 1002 00:49:19,000 --> 00:49:21,230 Jeg tror, вҖӢвҖӢdet er spГёrgsmГҘlet vi er nГёdt til at regne ud. 1003 00:49:21,230 --> 00:49:21,960 Hvad betyder fread gГёre? 1004 00:49:21,960 --> 00:49:25,640 Er det sat NULL i buffer, eller gГёr den noget andet? 1005 00:49:25,640 --> 00:49:27,510 Hvordan kan vi regne ud, hvad det betyder? 1006 00:49:27,510 --> 00:49:28,190 >> STUDENT 42: Man. 1007 00:49:28,190 --> 00:49:28,810 >> JASON HIRSCHHORN: Man. 1008 00:49:28,810 --> 00:49:32,280 SГҘ lad os se herovre. 1009 00:49:32,280 --> 00:49:34,000 Retur vГҰrdi. 1010 00:49:34,000 --> 00:49:39,620 Den succes, fread og fwrite returnere antallet af elementer lГҰses eller skrives. 1011 00:49:39,620 --> 00:49:43,700 Dette tal er lig med antallet af bytes overfГёres kun, nГҘr stГёrrelsen er 1. 1012 00:49:43,700 --> 00:49:47,780 Hvis der opstГҘr en fejl, eller afslutningen af вҖӢвҖӢden fil er nГҘet, er returvГҰrdien en 1013 00:49:47,780 --> 00:49:51,490 kort post count eller 0. 1014 00:49:51,490 --> 00:49:57,860 >> SГҘ for vores formГҘl, hvis fread afkroge slutningen af вҖӢвҖӢfilen, og lГҰser fra 1015 00:49:57,860 --> 00:50:02,100 I slutningen af вҖӢвҖӢfilen, er der intet tilbage at lГҰse, hvad det kommer til at vende tilbage? 1016 00:50:02,100 --> 00:50:03,290 >> STUDENT 43: Zero? 1017 00:50:03,290 --> 00:50:04,540 >> JASON HIRSCHHORN: Hvad? 1018 00:50:04,540 --> 00:50:05,300 >> STUDENT 43: Zero? 1019 00:50:05,300 --> 00:50:05,690 >> JASON HIRSCHHORN: Zero. 1020 00:50:05,690 --> 00:50:06,940 Det kommer til at returnere nul. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 SГҘ vi ved, at fread, nГҘr vi har nГҘet enden af вҖӢвҖӢfilen, gГҘr 1023 00:50:13,010 --> 00:50:13,690 for at vende tilbage til nul. 1024 00:50:13,690 --> 00:50:17,460 Hvordan kan vi bruge det til vores fordel? 1025 00:50:17,460 --> 00:50:21,733 >> AVI: Du kan erklГҰre en variabel udenfor af lГёkken kaldes check. 1026 00:50:21,733 --> 00:50:27,040 Hvis kontrol lig - 1027 00:50:27,040 --> 00:50:28,190 for nu - Г©n. 1028 00:50:28,190 --> 00:50:28,920 >> JASON HIRSCHHORN: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: Og sГҘ kan du sГҰtte en IF erklГҰring lige efter fread siger, hvis 1030 00:50:38,050 --> 00:50:42,600 fread lig 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 HIRSCHHORN: Hvem kan hjГҰlpe Avi ud? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: Hvad er vГҰrdien returneret af fread? 1036 00:50:52,410 --> 00:50:54,060 >> JASON HIRSCHHORN: Vi har lige gik over. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: Hvordan du reprГҰsenterer det? 1038 00:50:55,450 --> 00:50:57,190 >> JASON HIRSCHHORN: SГҘ det vender tilbage - lad os se op her - det returnerer en 1039 00:50:57,190 --> 00:50:59,340 size_t, der i det vГҰsentlige et heltal. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 SГҘ det returnerer et heltal. 1042 00:51:03,410 --> 00:51:05,160 Og i vores tilfГҰlde, vil det returnere 1 eller 0 - 1043 00:51:05,160 --> 00:51:08,760 1, hvis den lГҰst Г©n ting - en byte, og 0, hvis vi har nГҘet slutningen. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 SГҘ hvis fread - 1046 00:51:16,450 --> 00:51:16,855 ja? 1047 00:51:16,855 --> 00:51:20,330 >> STUDENT 45: Kan du ikke bare sГҰtte den fulde fread (buffer, 1, 1, src) i 1048 00:51:20,330 --> 00:51:21,660 mens loop? 1049 00:51:21,660 --> 00:51:26,510 >> JASON HIRSCHHORN: SГҘ du foreslГҘr gГёre dette i der? 1050 00:51:26,510 --> 00:51:27,600 >> [indskyde STEMMER] 1051 00:51:27,600 --> 00:51:29,520 >> JASON HIRSCHHORN: Hold ud. 1052 00:51:29,520 --> 00:51:30,885 SГҘ vi befri af. 1053 00:51:30,885 --> 00:51:33,300 SГҘ du foreslГҘr at sГҰtte ind der? fread 1054 00:51:33,300 --> 00:51:35,457 Hvad skal vi ogsГҘ flytte hvis du Гёnsker at gГёre det? 1055 00:51:35,457 --> 00:51:36,740 >> STUDENT 45: buffer udenfor. 1056 00:51:36,740 --> 00:51:38,110 >> JASON HIRSCHHORN: Vi bГёr ogsГҘ flytte ud af dette her. 1057 00:51:38,110 --> 00:51:41,700 >> STUDENT 45: Men er der konstant flytte det fremad? 1058 00:51:41,700 --> 00:51:42,950 >> [indskyde STEMMER] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> JASON HIRSCHHORN: OK. 1061 00:51:47,470 --> 00:51:50,570 SГҘ dette er hvad Okshar foreslГҘet. 1062 00:51:50,570 --> 00:51:51,930 Vi skaber vores buffer. 1063 00:51:51,930 --> 00:51:57,020 Vi MENS fread, sГҘ vi fwrite. 1064 00:51:57,020 --> 00:51:59,760 Tanker om dette? 1065 00:51:59,760 --> 00:52:04,050 >> STUDENT 46: Mit eneste spГёrgsmГҘl er, ville det faktisk udfГёre kommandoen fread? 1066 00:52:04,050 --> 00:52:06,175 >> JASON HIRSCHHORN: Great spГёrgsmГҘl. 1067 00:52:06,175 --> 00:52:11,050 NГҘr du lГҰgger et funktionskald inde i en tilstand, gГёr det 1068 00:52:11,050 --> 00:52:12,300 funktionskald udfГёre? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 Vi har set eksempler pГҘ dette fГёr. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 Right? 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 SГҘ det gГёr udfГёre. 1076 00:52:30,140 --> 00:52:31,790 >> JASON HIRSCHHORN: Vi har set tingene som fГёr, hvor vi har en 1077 00:52:31,790 --> 00:52:33,550 funktionskald indersiden af вҖӢвҖӢen tilstand. 1078 00:52:33,550 --> 00:52:35,540 Betyder det funktionskald udfГёre? 1079 00:52:35,540 --> 00:52:36,350 Ja. 1080 00:52:36,350 --> 00:52:37,410 SГҘ svaret er ja. 1081 00:52:37,410 --> 00:52:41,010 Denne funktion indkaldelse vil udfГёre. 1082 00:52:41,010 --> 00:52:42,418 Men igen, det er hvad vi Гёnsker? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> Hvad er en mГҘde, vi kunne regne ud, hvis det er hvad vi Гёnsker? 1085 00:52:52,204 --> 00:52:53,470 >> FLERE STUDERENDE: KГёr det? 1086 00:52:53,470 --> 00:52:54,460 >> JASON HIRSCHHORN: Vi kunne kГёre den. 1087 00:52:54,460 --> 00:52:57,500 Men fГёr vi gГёr det, vi kunne ogsГҘ rГҰsonnere gennem dette. 1088 00:52:57,500 --> 00:52:57,920 Hvis - 1089 00:52:57,920 --> 00:53:01,920 sige, at vi har en byte i vores fil, vil vi komme til her, 1090 00:53:01,920 --> 00:53:02,660 vi fГҘr denne kode. 1091 00:53:02,660 --> 00:53:03,620 Dette vil kГёre. 1092 00:53:03,620 --> 00:53:07,780 fread vil returnere en byte og gemme det i bufferen. 1093 00:53:07,780 --> 00:53:11,290 Og det vil vurdere til 1, hГёjre, efter at han vender tilbage 1. 1094 00:53:11,290 --> 00:53:12,640 >> SГҘ mens 1. 1095 00:53:12,640 --> 00:53:15,325 Betyder det, at koden inde while-lГёkken vil kГёre? 1096 00:53:15,325 --> 00:53:15,453 >> STUDENT 47: Ja. 1097 00:53:15,453 --> 00:53:16,040 Det er sandt. 1098 00:53:16,040 --> 00:53:16,290 >> JASON HIRSCHHORN: Ja. 1099 00:53:16,290 --> 00:53:17,490 1 er sandt. 1100 00:53:17,490 --> 00:53:18,240 Det er ikke 0. 1101 00:53:18,240 --> 00:53:20,360 SГҘ kode inde her, vil udfГёre. 1102 00:53:20,360 --> 00:53:22,300 SГҘ vi vil skrive det. 1103 00:53:22,300 --> 00:53:25,340 Vi flytter tilbage til dette linie igen. 1104 00:53:25,340 --> 00:53:26,850 Nu har vi - 1105 00:53:26,850 --> 00:53:28,550 vi er i slutningen af вҖӢвҖӢvores fil. 1106 00:53:28,550 --> 00:53:30,980 Vi lГҰser fra slutningen af вҖӢвҖӢvores fil, fordi vi kun havde Г©n byte i det. 1107 00:53:30,980 --> 00:53:34,270 >> Fread returnerer 0, gemmer noget i puffer. 1108 00:53:34,270 --> 00:53:35,890 Jeg ved ГҰrligt talt ikke, hvad det gemmer i buffer. 1109 00:53:35,890 --> 00:53:38,380 Vi kunne sikkert se op at se, hvad det gГёr. 1110 00:53:38,380 --> 00:53:40,130 At jeg helt ГҰrligt ikke kender. 1111 00:53:40,130 --> 00:53:43,090 Vi ved ikke, hvem bekymrer sig, hvad det gemmer i buffer? 1112 00:53:43,090 --> 00:53:44,010 Men det vender tilbage 0. 1113 00:53:44,010 --> 00:53:45,440 Og vil mens 0 eksekvere? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> MENS 0 ikke vil udfГёre. 1116 00:53:51,180 --> 00:53:54,030 SГҘ rykker vi ned her. 1117 00:53:54,030 --> 00:53:58,870 SГҘ lad os fГҘ en hГҘndsoprГҰkning, hvis dette er den kode, vi skal kГёre, eller hvis vi 1118 00:53:58,870 --> 00:54:00,140 skal gГёre ГҰndringer fГёrst. 1119 00:54:00,140 --> 00:54:02,180 SГҘ hvis du tror - du er nГёdt til at stemme. 1120 00:54:02,180 --> 00:54:06,885 Hvis du synes, vi skal kГёre denne kode som det er, skal du hГҰve din hГҘnd. 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 Der er en - 1124 00:54:14,315 --> 00:54:17,260 har du et spГёrgsmГҘl, bekymring? 1125 00:54:17,260 --> 00:54:18,080 Ja. 1126 00:54:18,080 --> 00:54:21,240 >> STUDENT 48: NГҘr vi bevГҰger buffer uden for lГёkken, gГёr vi 1127 00:54:21,240 --> 00:54:22,670 nГёdt til at allokere det? 1128 00:54:22,670 --> 00:54:23,310 >> JASON HIRSCHHORN: Great spГёrgsmГҘl. 1129 00:54:23,310 --> 00:54:26,670 NГҘr vi bevГҰger buffer uden for loop, vi er nГёdt til at allokere det? 1130 00:54:26,670 --> 00:54:28,400 Det er et omfang spГёrgsmГҘl. 1131 00:54:28,400 --> 00:54:32,130 Hvis vi initialisere buffer uden af denne slГёjfe, vil det findes 1132 00:54:32,130 --> 00:54:33,534 indersiden af вҖӢвҖӢloop? 1133 00:54:33,534 --> 00:54:35,230 >> FLERE STUDERENDE: Ja. 1134 00:54:35,230 --> 00:54:35,580 >> JASON HIRSCHHORN: Ja. 1135 00:54:35,580 --> 00:54:40,100 Dens anvendelsesomrГҘde dГҰkker indersiden af вҖӢвҖӢlГёkken, og virkelig, noget under det inde 1136 00:54:40,100 --> 00:54:42,460 af denne kode, herunder ting inde her. 1137 00:54:42,460 --> 00:54:43,930 SГҘ vi behГёver ikke at allokere den. 1138 00:54:43,930 --> 00:54:47,766 Det er en lokal variabel, og dens omfang stadig indeholder slГёjfen. 1139 00:54:47,766 --> 00:54:49,540 >> STUDENT 49: Har vi brug for at frigГёre det? 1140 00:54:49,540 --> 00:54:51,770 >> JASON HIRSCHHORN: Har vi nГёdt til at fri buffer? 1141 00:54:51,770 --> 00:54:53,860 >> STUDENT 49: Ja, hvis vi ikke gГёr malloc. 1142 00:54:53,860 --> 00:54:55,750 >> JASON HIRSCHHORN: Har vi nГёdt til at fri buffer? 1143 00:54:55,750 --> 00:54:57,160 Vi gГёr ikke. 1144 00:54:57,160 --> 00:55:01,280 Igen, det er en lokal variabel, sГҘ vi ikke behГёver at frigГёre det. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 Lad os se hvad der sker. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 SГҘ det er initialiseret. 1149 00:55:18,220 --> 00:55:20,830 Det var, hvad noget, Marcus foreslog tidligere. 1150 00:55:20,830 --> 00:55:25,340 SГҘ vi har denne fejl, variabel buffer bliver initialiseret, nГҘr det anvendes her. 1151 00:55:25,340 --> 00:55:26,590 >> Hvordan kan vi lГёse dette? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> STUDENT 50: malloc det? 1154 00:55:30,960 --> 00:55:31,770 >> STUDENT 51: Lig NULL? 1155 00:55:31,770 --> 00:55:33,000 >> STUDENT 52: Sig buffer lig NULL. 1156 00:55:33,000 --> 00:55:34,250 >> JASON HIRSCHHORN: OK. 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 Ser godt ud. 1159 00:55:40,770 --> 00:55:42,410 Vi har det nu. 1160 00:55:42,410 --> 00:55:45,630 Lad os skabe noget at forsГёge at kopiere. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 SГҘ vi har vores tekstfil. 1163 00:56:10,490 --> 00:56:11,740 Hvordan kan vi kГёre dette 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: Du kan gГёre dot slash cp, test.txt. 1167 00:56:22,230 --> 00:56:25,140 Og sГҘ kan du navngive en anden fil som den gemmer i. 1168 00:56:25,140 --> 00:56:25,510 >> JASON HIRSCHHORN: OK. 1169 00:56:25,510 --> 00:56:27,380 Vi kalder det 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 fejl. 1173 00:56:34,320 --> 00:56:35,570 Tanker om seg skyld? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 Dette er stor. 1176 00:56:41,390 --> 00:56:45,040 Hvordan kan vi finde ud af, hvor den seg fejlen er? 1177 00:56:45,040 --> 00:56:45,680 Hvad? 1178 00:56:45,680 --> 00:56:45,990 >> STUDENT 54: gdb. 1179 00:56:45,990 --> 00:56:47,240 >> JASON HIRSCHHORN: gdb. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 Vi kГёrer gdb ved at skrive gdb dot skrГҘstreg, navnet pГҘ vores program. 1182 00:56:55,300 --> 00:56:57,020 Ingen kommandolinjeargumenter der. 1183 00:56:57,020 --> 00:56:59,570 Vi kommer til at sГҰtte en breakpoint pГҘ main. 1184 00:56:59,570 --> 00:57:02,190 Hvis jeg Гёnsker at starte gdb, hvad gГёr jeg? 1185 00:57:02,190 --> 00:57:02,730 >> STUDENT 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> JASON HIRSCHHORN: R. Og hvad sГҘ? 1187 00:57:08,910 --> 00:57:09,400 >> STUDENT 55: Argumenterne? 1188 00:57:09,400 --> 00:57:10,650 >> JASON HIRSCHHORN: SГҘ kommandolinje-argumenter. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 Lad os gГҘ igennem. 1191 00:57:17,120 --> 00:57:19,090 N bare at tage mig linje for linje. 1192 00:57:19,090 --> 00:57:21,450 Jeg har tГҰnkt mig at gГҘ, indtil Jeg fГҘr min seg fejl. 1193 00:57:21,450 --> 00:57:22,700 Der er min seg fejl. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Det ligner fread forГҘrsaget min seg fejl. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Jeg kender fread forГҘrsagede min seg skyld, fordi det var den 1198 00:57:32,770 --> 00:57:34,950 linje, vi lige henrettet. 1199 00:57:34,950 --> 00:57:36,530 >> Og det eneste, der var sker i denne linje - 1200 00:57:36,530 --> 00:57:37,520 to ting blev sker. 1201 00:57:37,520 --> 00:57:40,610 Fread foregik, og sГҘ var vi laver nogle mens du tjekker. 1202 00:57:40,610 --> 00:57:44,820 Jeg er villig til at vГҰdde pГҘ, at WHILE kontrol ikke var ГҘrsag min seg fejl. 1203 00:57:44,820 --> 00:57:46,950 Mest sandsynligt, var fread forГҘrsager min seg fejl. 1204 00:57:46,950 --> 00:57:49,260 Jeg kan ogsГҘ se noget her, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Hukommelse kopi. 1206 00:57:50,500 --> 00:57:53,820 Lyder som at flytte hukommelse fra ene sted til det andet. 1207 00:57:53,820 --> 00:57:56,890 Lyder som noget, der ville ske i fread, mГҘske nogle hukommelse 1208 00:57:56,890 --> 00:57:58,910 flytter fra her til her. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 Lad os gГҘ igennem det igen. 1211 00:58:03,860 --> 00:58:06,900 Hvordan starter jeg det over og kГёre det igen? 1212 00:58:06,900 --> 00:58:08,092 Ja. 1213 00:58:08,092 --> 00:58:15,140 >> STUDENT 56: Har du brug for at sГҰtte et og-tegn fГёr buffer? 1214 00:58:15,140 --> 00:58:17,800 >> JASON HIRSCHHORN: So-tegnet fГёr buffer ville give mig adressen pГҘ 1215 00:58:17,800 --> 00:58:22,330 puffer, som er en char *. 1216 00:58:22,330 --> 00:58:25,250 Lad os lГёbe igennem en gang mere. 1217 00:58:25,250 --> 00:58:28,248 Hvordan kГёrer jeg igennem det en gang til? 1218 00:58:28,248 --> 00:58:29,210 >> STUDENT 57: Kan du bare skriv kГёre igen? 1219 00:58:29,210 --> 00:58:32,050 >> JASON HIRSCHHORN: Bare skriv kГёre igen. 1220 00:58:32,050 --> 00:58:33,415 SГҘ vi kommer ikke til at udfГёre denne linje. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 SГҘ buffer er en NULL-pointer. 1223 00:58:39,240 --> 00:58:40,490 Ret? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 Det peger pГҘ - lad os se. 1226 00:58:47,060 --> 00:58:48,500 Hvis vi har vores - 1227 00:58:48,500 --> 00:58:50,430 tegne et hurtigt billede af det. 1228 00:58:50,430 --> 00:58:53,500 Kan alle se, om Jeg skriver herovre? 1229 00:58:53,500 --> 00:59:02,890 >> SГҘ i stakken, vi har en lokal variabel, og det hedder buffer, og 1230 00:59:02,890 --> 00:59:08,230 det er en pointer til en char. 1231 00:59:08,230 --> 00:59:10,325 Hvilken adresse er denne char pГҘ? 1232 00:59:10,325 --> 00:59:12,550 >> STUDENT 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> JASON HIRSCHHORN: Right. 1234 00:59:13,400 --> 00:59:14,200 Det er, hvad det er. 1235 00:59:14,200 --> 00:59:17,600 I her inde puffer, lagres 0x0. 1236 00:59:17,600 --> 00:59:20,480 Det er, hvad vi har - det setup, vi har lige nu. 1237 00:59:20,480 --> 00:59:27,540 SГҘ denne linje, fread, sГҰtter noget fra kilde, hvor? 1238 00:59:27,540 --> 00:59:30,560 Ind i denne kasse eller denne boks? 1239 00:59:30,560 --> 00:59:31,060 Hvilken kasse? 1240 00:59:31,060 --> 00:59:33,290 Venstre kasse eller hГёjre kasse? 1241 00:59:33,290 --> 00:59:34,750 Denne ret kassen. 1242 00:59:34,750 --> 00:59:38,440 >> Det fГёlger markГёren, og sГҰtter det i her. 1243 00:59:38,440 --> 00:59:42,620 NГҘr vi prГёve at rГёre hukommelse pГҘ placering 0, hvad fГҘr vi? 1244 00:59:42,620 --> 00:59:45,050 En segmentering fejl. 1245 00:59:45,050 --> 00:59:46,550 Det er den fejl, vi har lige nu. 1246 00:59:46,550 --> 00:59:46,970 Ja. 1247 00:59:46,970 --> 00:59:48,410 >> STUDENT 59: Har du ikke at sГҰtte stjerne buffer? 1248 00:59:48,410 --> 00:59:49,180 Eller nej? 1249 00:59:49,180 --> 00:59:50,050 For fread? 1250 00:59:50,050 --> 00:59:51,450 >> JASON HIRSCHHORN: So fread tager en pointer. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 SГҘ det gГҘr i buffer. 1253 00:59:55,900 --> 00:59:58,980 Og sГҘ vil de-henvisning det andet sted inde fread. 1254 00:59:58,980 --> 01:00:00,700 Men igen, sГҘ vi tager det en pointer. 1255 01:00:00,700 --> 01:00:02,560 Vi behГёver ikke at passere den stjerne buffer. 1256 01:00:02,560 --> 01:00:05,350 Det ville vГҰre forbi det, hvad er her. 1257 01:00:05,350 --> 01:00:07,980 Og det ville sandsynligvis give os en fejl fordi vi er de-henvisninger det. 1258 01:00:07,980 --> 01:00:08,150 >> Right? 1259 01:00:08,150 --> 01:00:10,690 NГҘr vi de-henvisningen denne pointer, nГҘr vi forsГёger at fГҘ adgang til denne placering, 1260 01:00:10,690 --> 01:00:13,140 vi fГҘr en fejl - vores segmenteringsfejl. 1261 01:00:13,140 --> 01:00:15,800 SГҘ - 1262 01:00:15,800 --> 01:00:16,690 oops. 1263 01:00:16,690 --> 01:00:19,090 Vi kommer til at holde op ud af gdb. 1264 01:00:19,090 --> 01:00:20,160 Vores linje - 1265 01:00:20,160 --> 01:00:22,990 vores problem - er ret her pГҘ denne linje. 1266 01:00:22,990 --> 01:00:26,410 Og det er et problem, fordi denne linje. 1267 01:00:26,410 --> 01:00:31,780 >> Hvordan kan vi skabe en boks, er tilgГҰngelig i fread. 1268 01:00:31,780 --> 01:00:31,980 Right? 1269 01:00:31,980 --> 01:00:35,190 Vi er nГёdt til at oprette en boks, der er en byte store, stГёrrelsen af вҖӢвҖӢen char. 1270 01:00:35,190 --> 01:00:38,590 Men vi har brug for, at feltet for at vГҰre tilgГҰngelige nГҘr denne funktion udfГёrer. 1271 01:00:38,590 --> 01:00:39,390 SГҘ hvor - 1272 01:00:39,390 --> 01:00:39,640 ja. 1273 01:00:39,640 --> 01:00:40,440 Nogen idГ©er? 1274 01:00:40,440 --> 01:00:43,615 >> STUDENT 60: Bare sГҰt den som en tilfГҰldig karakter. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 Bare gГёr char buffer ligemГҰnd tegnet. 1277 01:00:51,640 --> 01:00:53,795 Og sГҘ, nГҘr du har buffer der - 1278 01:00:53,795 --> 01:00:54,110 >> JASON HIRSCHHORN: Vent. 1279 01:00:54,110 --> 01:00:55,110 Char buffer? 1280 01:00:55,110 --> 01:00:55,880 SГҘ ingen stjerne? 1281 01:00:55,880 --> 01:00:56,390 >> STUDENT 60: Ja. 1282 01:00:56,390 --> 01:00:58,560 Tag stjernen. 1283 01:00:58,560 --> 01:01:00,690 Lig en tilfГҰldig karakter. 1284 01:01:00,690 --> 01:01:01,460 >> JASON HIRSCHHORN: OK. 1285 01:01:01,460 --> 01:01:02,420 SГҘ giv mig en. 1286 01:01:02,420 --> 01:01:03,170 >> STUDENT 60: Ligesom en eller noget. 1287 01:01:03,170 --> 01:01:06,160 Og sГҘ nГҘr du har buffer der bruger du en - 1288 01:01:06,160 --> 01:01:06,420 >> STUDENT 61: Star? 1289 01:01:06,420 --> 01:01:07,650 Г…h nej, det tegnet. 1290 01:01:07,650 --> 01:01:09,000 >> STUDENT 60: Brug tegnet. 1291 01:01:09,000 --> 01:01:09,470 >> JASON HIRSCHHORN: OK. 1292 01:01:09,470 --> 01:01:11,320 Og hvad i fwrite? 1293 01:01:11,320 --> 01:01:14,150 >> STUDENT 60: Brug tegnet igen. 1294 01:01:14,150 --> 01:01:14,320 >> JASON HIRSCHHORN: Okay. 1295 01:01:14,320 --> 01:01:20,970 SГҘ din idГ© er, at vi skaber en char og sГҰtte noget i det, og derefter 1296 01:01:20,970 --> 01:01:22,612 skrive til denne char. 1297 01:01:22,612 --> 01:01:23,760 >> STUDENT 60: Ja. 1298 01:01:23,760 --> 01:01:25,916 >> JASON HIRSCHHORN: Hvad tror folk? 1299 01:01:25,916 --> 01:01:27,770 >> STUDENT 62: Det er indviklede. 1300 01:01:27,770 --> 01:01:28,460 >> JASON HIRSCHHORN: OK. 1301 01:01:28,460 --> 01:01:29,760 Lad os trГҰkke det ud. 1302 01:01:29,760 --> 01:01:35,720 SГҘ denne gang, jeg har tГҰnkt mig at trГҰkke denne i rГёd pГҘ stakken her, og sГҘ vi 1303 01:01:35,720 --> 01:01:36,410 vil have - 1304 01:01:36,410 --> 01:01:36,822 ooh! 1305 01:01:36,822 --> 01:01:38,060 Undskyld. 1306 01:01:38,060 --> 01:01:45,930 SГҘ denne gang har vi noget, der hedder buffer, og det er pГҘ stakken. 1307 01:01:45,930 --> 01:01:48,430 Ret? 1308 01:01:48,430 --> 01:01:51,520 Og vi gemmer i det en, i fГёrste omgang. 1309 01:01:51,520 --> 01:01:53,830 >> SГҘ har vi vores opfordring til fread. 1310 01:01:53,830 --> 01:02:01,300 Hvad fread gГёr, er det tager en byte fra vores fil og sГҰtter det et eller andet sted. 1311 01:02:01,300 --> 01:02:04,570 Det sГҰtter det i uanset ting peger pГҘ. 1312 01:02:04,570 --> 01:02:09,130 NГҘ, fГёr vi havde denne adresse - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 Nu hvad adresse har vi? 1315 01:02:13,349 --> 01:02:14,650 >> STUDENT 63: Whatever adresse buffer. 1316 01:02:14,650 --> 01:02:15,970 >> JASON HIRSCHHORN: Whatever adresse buffer. 1317 01:02:15,970 --> 01:02:22,370 Det er sandsynligvis vil vГҰre noget lignende. 1318 01:02:22,370 --> 01:02:26,950 Sandsynligvis kommer til at starte med en b og en f, og derefter har seks andre 1319 01:02:26,950 --> 01:02:27,970 hexadecimale cifre. 1320 01:02:27,970 --> 01:02:28,480 Betyder ikke noget. 1321 01:02:28,480 --> 01:02:29,470 Nogle adresse. 1322 01:02:29,470 --> 01:02:31,410 Og vi passerer denne adresse i. 1323 01:02:31,410 --> 01:02:34,790 >> Og vi kommer til at sГҰtte vores ene byte ting pГҘ denne adresse. 1324 01:02:34,790 --> 01:02:38,470 SГҘ vi kommer til at sГҰtte vores ene byte ting herinde. 1325 01:02:38,470 --> 01:02:40,800 Og sГҘ vil vi skrive fra hvad der er nogensinde herinde. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 Er der nogen har nogen spГёrgsmГҘl om det? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 Hvem tror denne kode vil arbejde? 1330 01:02:54,690 --> 01:02:56,020 >> LГёft din hГҘnd, hvis du tror denne kode vil arbejde. 1331 01:02:56,020 --> 01:02:57,270 Du er nГёdt til at tage et standpunkt. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 Og hvem tror denne kode vil ikke arbejde? 1334 01:03:02,500 --> 01:03:04,610 LГёft din hГҘnd. 1335 01:03:04,610 --> 01:03:06,750 Alle andre bГёr vГҰre hГҰve deres hГҘnd. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 Michael, hvor stГҘr du? 1338 01:03:09,390 --> 01:03:10,680 >> MICHAEL: Jeg kan ikke afgГёre. 1339 01:03:10,680 --> 01:03:12,070 Slags i midten. 1340 01:03:12,070 --> 01:03:12,736 >> JASON HIRSCHHORN: Du er i midten. 1341 01:03:12,736 --> 01:03:13,092 VГҰlg en. 1342 01:03:13,092 --> 01:03:14,400 >> MICHAEL: Jeg har tro og siger, at det vil virke. 1343 01:03:14,400 --> 01:03:14,660 >> JASON HIRSCHHORN: OK. 1344 01:03:14,660 --> 01:03:16,047 Du har tro og sige det virker? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 Hvad er der sket? 1347 01:03:27,020 --> 01:03:28,270 >> [indskyde STEMMER] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON HIRSCHHORN: Ingen seg fejl. 1350 01:03:35,950 --> 01:03:40,320 Hvordan kan vi kontrollere, om to ting er lige? 1351 01:03:40,320 --> 01:03:42,060 To filer er ens. 1352 01:03:42,060 --> 01:03:43,300 >> STUDENT 64: Diff. 1353 01:03:43,300 --> 01:03:45,490 >> JASON HIRSCHHORN: Diff. 1354 01:03:45,490 --> 01:03:51,630 Diff checks for forskellene mellem to filer, og hvis det returnerer 1355 01:03:51,630 --> 01:03:52,890 ingenting, de er identiske. 1356 01:03:52,890 --> 01:03:59,030 Og hvis vi ГҘbner op, fГҘr vi vores fil. 1357 01:03:59,030 --> 01:04:00,490 SГҘ det var den rigtige lГёsning. 1358 01:04:00,490 --> 01:04:01,780 Lad os se tilbage pГҘ det en gang mere. 1359 01:04:01,780 --> 01:04:04,080 Vi har faktisk ikke engang nГёdt til at initialisere den. 1360 01:04:04,080 --> 01:04:05,520 >> Det ville nok se lidt renere, hvis du ikke har bragt 1361 01:04:05,520 --> 01:04:07,680 noget tilfГҰldigt derinde. 1362 01:04:07,680 --> 01:04:13,070 Pointen er, du behov for at skabe nogle plads til at gemme noget fra 1363 01:04:13,070 --> 01:04:15,530 fread og tage noget ud af fwrite. 1364 01:04:15,530 --> 01:04:18,400 Og at ting skulle vГҰre enten en lokal variabel pГҘ stakken - du 1365 01:04:18,400 --> 01:04:19,890 kunne have malloc'd noget plads. 1366 01:04:19,890 --> 01:04:23,030 >> SГҘ vi kunne faktisk have skriftlig malloc her, og 1367 01:04:23,030 --> 01:04:25,420 der ville have fungeret. 1368 01:04:25,420 --> 01:04:28,660 Og sГҘ ville vi have vГҰret opbevaring vores ting et sted pГҘ bunke. 1369 01:04:28,660 --> 01:04:31,940 Men det er faktisk, sandsynligvis, den mest elegante lГёsning. 1370 01:04:31,940 --> 01:04:34,490 Bare skabe noget plads pГҘ stakken for disse ting til at gГҘ. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> Jeg ville have to andre kommentarer. 1373 01:04:38,990 --> 01:04:44,650 Hvis du skulle tage tur i dette, og derefter fГҘ scoret pГҘ dette, mine kommentarer 1374 01:04:44,650 --> 01:04:47,400 ville vГҰre som fГёlger. 1375 01:04:47,400 --> 01:04:54,300 Disse 1 er her, for mig, se ligesom magiske tal. 1376 01:04:54,300 --> 01:04:56,860 Denne 1, i form af fread, giver mening. 1377 01:04:56,860 --> 01:04:59,580 Det er antallet af ting, at lГҰse eller skrive. 1378 01:04:59,580 --> 01:05:03,740 >> Men denne ene lige her burde sandsynligvis vГҰre noget andet. 1379 01:05:03,740 --> 01:05:05,180 SГҘ hvad er en lГёsning? 1380 01:05:05,180 --> 01:05:06,545 >> STUDENT 65: stГёrrelse byte. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON HIRSCHHORN: Ligesom det? 1383 01:05:11,080 --> 01:05:13,130 >> STUDENT 65: stГёrrelse char. 1384 01:05:13,130 --> 01:05:13,820 >> JASON HIRSCHHORN: StГёrrelse af char. 1385 01:05:13,820 --> 01:05:15,290 Ja, byte er ikke en type. 1386 01:05:15,290 --> 01:05:16,320 SГҘ stГёrrelsen af вҖӢвҖӢchar vГҰrker. 1387 01:05:16,320 --> 01:05:30,270 Vi kunne have pГҘ toppen af vores kode, # definerede det. 1388 01:05:30,270 --> 01:05:33,410 Kaldet noget BYTE og det er virkelig en char. 1389 01:05:33,410 --> 01:05:37,675 Faktisk en endnu bedre tilgang kunne have vГҰret det - 1390 01:05:37,675 --> 01:05:39,391 uint. 1391 01:05:39,391 --> 01:05:40,780 Nogen der ved hvad det er? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> Undskyld. 1394 01:05:44,840 --> 01:05:46,090 Jeg har det baglГҰns. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 Vent, nej. 1397 01:05:52,200 --> 01:05:53,450 Hvilken vej gГҘr det hen? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 Nogen der ved hvad det er? 1400 01:05:59,660 --> 01:06:00,950 Ja. 1401 01:06:00,950 --> 01:06:05,650 >> STUDENT 67: formodes at hjГҰlpe standardisere pГҘ tvГҰrs af systemer ting, 1402 01:06:05,650 --> 01:06:08,760 har - ligesom unsigned heltal der har 8 byte? 1403 01:06:08,760 --> 01:06:11,785 >> JASON HIRSCHHORN: Det er helt rigtigt. 1404 01:06:11,785 --> 01:06:14,310 PГҘ forskellige maskiner, stГёrrelsen af вҖӢвҖӢen char - 1405 01:06:14,310 --> 01:06:15,180 normalt ikke en char. 1406 01:06:15,180 --> 01:06:16,100 Bogstaver er normalt en byte. 1407 01:06:16,100 --> 01:06:19,590 Men stГёrrelsen af вҖӢвҖӢandre datatyper er forskellige stГёrrelser pГҘ en 32-bit maskine 1408 01:06:19,590 --> 01:06:21,370 versus en 64-bit maskine. 1409 01:06:21,370 --> 01:06:25,180 En uint8_t er altid 8 bit - 1410 01:06:25,180 --> 01:06:27,210 altid en byte. 1411 01:06:27,210 --> 01:06:29,580 >> Og jeg har brug for at medtage, at standard int header fil. 1412 01:06:29,580 --> 01:06:35,040 SГҘ nu, dette ville have sandsynligvis vГҰret den bedste mГҘde at skrive denne kode. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 SГҘ jeg slippe af med de magiske tal. 1415 01:06:41,450 --> 01:06:44,690 Og jeg har ogsГҘ en mere logisk skrive til buffer. 1416 01:06:44,690 --> 01:06:49,450 Det er ikke blot en char, er det en byte, hvilket er, hvad vi forventer det at vГҰre. 1417 01:06:49,450 --> 01:06:53,400 >> Og heroppe, vi har faktisk vГҰret lidt mere robust. 1418 01:06:53,400 --> 01:06:55,190 Vi ikke kalde det en char, som - 1419 01:06:55,190 --> 01:06:58,630 mГҘske, hvem ved - kunne vГҰre en anden stГёrrelse pГҘ forskellige maskiner. 1420 01:06:58,630 --> 01:07:02,025 Vi faktisk siger det er prГҰcis en byte, altid, uanset hvad. 1421 01:07:02,025 --> 01:07:05,810 Og hvis vi ser her, gГёr vi cp. 1422 01:07:05,810 --> 01:07:08,340 Uh-oh. 1423 01:07:08,340 --> 01:07:09,590 Hvad er der sket? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> STUDENT 68: Det kunne vГҰre tГҰndt. 1426 01:07:16,170 --> 01:07:17,880 >> JASON HIRSCHHORN: Hvad? 1427 01:07:17,880 --> 01:07:19,130 >> STUDENT 69: Er det? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> STUDENT 70: Du har ikke definere det som en type. 1430 01:07:25,080 --> 01:07:28,684 >> STUDENT 71: men det bГёr skal defineres i standarden. 1431 01:07:28,684 --> 01:07:29,934 >> STUDENT 72: Hvad sker der? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> STUDENT 73: BГёr definere vГҰre alle hГҰtter? 1434 01:07:40,210 --> 01:07:41,370 >> JASON HIRSCHHORN: SГҘ det er ikke # define. 1435 01:07:41,370 --> 01:07:45,490 Faktisk, i dette tilfГҰlde, er jeg vil bruge typedef. 1436 01:07:45,490 --> 01:07:48,590 Fordi vi bruger det som en type pГҘ Г©t sted. 1437 01:07:48,590 --> 01:07:51,990 SГҘ i dette tilfГҰlde, vi rent faktisk Гёnsker at typedef ligesom vi udskriver en ny type 1438 01:07:51,990 --> 01:07:54,490 byte, og det er det vГҰsentlige, dette. 1439 01:07:54,490 --> 01:07:56,590 Det er en smule anderledes end # define. 1440 01:07:56,590 --> 01:08:02,740 >> Og nu, vores kode fungerer perfekt. 1441 01:08:02,740 --> 01:08:05,230 SГҘ igen, # define tager noget, erstatter det overalt 1442 01:08:05,230 --> 01:08:06,780 med den anden ting. 1443 01:08:06,780 --> 01:08:07,920 Det er bare en makro - 1444 01:08:07,920 --> 01:08:09,420 stenografi at slippe af magiske tal. 1445 01:08:09,420 --> 01:08:11,360 Men i dette tilfГҰlde, fordi vi er bruge det som en type - 1446 01:08:11,360 --> 01:08:12,180 lige her - 1447 01:08:12,180 --> 01:08:19,880 for at dette skal fungere, er vi nГёdt at typedef hvad byte er. 1448 01:08:19,880 --> 01:08:21,840 >> Og vi definerer det lige her. 1449 01:08:21,840 --> 01:08:24,750 Det er ikke en struct, det er faktisk bare en usigneret heltal. 1450 01:08:24,750 --> 01:08:27,680 Det er Г©n byte lang. 1451 01:08:27,680 --> 01:08:31,910 Denne kode vil vГҰre tilgГҰngelig online, og du bГёr alle have det lige nu. 1452 01:08:31,910 --> 01:08:33,830 >> SГҘ vi har - 1453 01:08:33,830 --> 01:08:34,250 perfekt - 1454 01:08:34,250 --> 01:08:41,359 13 minutter tilbage til at gГҘ lГёbet problem sГҰt 5. 1455 01:08:41,359 --> 01:08:44,270 Jeg Гёnsker at gГҘ gennem copy.c sammen, og sГҘ vil vi tale kort 1456 01:08:44,270 --> 01:08:47,120 om de andre dele af problemet indstillet. 1457 01:08:47,120 --> 01:08:48,899 SГҘ lad mig trГҰkke op copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 Og cool ting er, vi har faktisk allerede skrevet en masse af denne kode. 1460 01:09:08,810 --> 01:09:11,180 >> Den kode, vi skrev bogstaveligt talt bare kom ud af her, da jeg var 1461 01:09:11,180 --> 01:09:13,120 skriver dette pГҘ min egen. 1462 01:09:13,120 --> 01:09:16,990 Men dette er copy.c, danner grundlaget for de to fГёrste dele af 1463 01:09:16,990 --> 01:09:22,340 problemet indstillet til whodunit.c, som du nГёdt til at skrive, og resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, som er den tredje og sidste del af problemet sГҰt, er ikke 1465 01:09:27,050 --> 01:09:29,529 baseret ud af denne fil. 1466 01:09:29,529 --> 01:09:32,200 >> Du vil fГҘ brug for at skrive, at filen vi giver dig en skabelon til at 1467 01:09:32,200 --> 01:09:34,620 fil, men det har intet at gГёre med copy.c. 1468 01:09:34,620 --> 01:09:38,675 Men fordi copy.c er grundlaget for de to fГёrste dele, vi kommer 1469 01:09:38,675 --> 01:09:42,000 til at gГҘ igennem det nu, sГҘ du har en god fornemmelse af, hvad det gГёr. 1470 01:09:42,000 --> 01:09:43,640 >> Og bemГҰrkninger giver noget af det vГҰk. 1471 01:09:43,640 --> 01:09:45,120 Vi har allerede skrevet nogle af dette. 1472 01:09:45,120 --> 01:09:49,220 FГёrst gГёr vi sikker vi fГҘr tre argumenter. 1473 01:09:49,220 --> 01:09:50,560 NГҰste, vi huske filnavnet. 1474 01:09:50,560 --> 01:09:52,960 SГҘ vi sprunget over dette trin, nГҘr vi kodet vores ting - 1475 01:09:52,960 --> 01:09:54,700 nГҘr vores cp. 1476 01:09:54,700 --> 01:09:56,750 Men her er de gГёr det en smule renere. 1477 01:09:56,750 --> 01:09:59,350 >> De kontrollerer, at begge filer er gode, i 1478 01:09:59,350 --> 01:10:00,450 Ud over at ГҘbne dem. 1479 01:10:00,450 --> 01:10:04,760 Vi skrev alle denne kode lige nu, sГҘ jeg er ikke kommer til at dvГҰle ved denne kode. 1480 01:10:04,760 --> 01:10:09,670 NГҰste er nogle ting, der er specifikke for de typer af filer, vi bruger, som 1481 01:10:09,670 --> 01:10:12,240 er bitmap-filer. 1482 01:10:12,240 --> 01:10:15,660 Bitmap-filer har nogle metadata forbundet med dem. 1483 01:10:15,660 --> 01:10:20,190 >> SГҘ de fГёrste par bytes fortГҰlle dig om filen. 1484 01:10:20,190 --> 01:10:23,460 De er ikke farver pixel i billedet. 1485 01:10:23,460 --> 01:10:25,120 De fortГҰller dig om filen. 1486 01:10:25,120 --> 01:10:28,220 Og hvis du lГҰser igennem problemet sГҰt, vil du have meget mere information 1487 01:10:28,220 --> 01:10:33,100 om, hvilke typer af metadata strukturer indgГҘr med bitmaps. 1488 01:10:33,100 --> 01:10:39,350 >> Men det er derfor vi har denne fГёrste sГҰt - denne kode lige her. 1489 01:10:39,350 --> 01:10:42,490 Vi lГҰser metadata - 1490 01:10:42,490 --> 01:10:45,800 to stykker af metadata - filen header og info header. 1491 01:10:45,800 --> 01:10:51,030 Og vi tjekker nogle dele af den til sГёrg for at det er en sand bitmap-fil 1492 01:10:51,030 --> 01:10:52,420 fГёr du fortsГҰtter. 1493 01:10:52,420 --> 01:10:55,470 >> Og igen, disse er detaljer, som vi behГёver ikke at gГҘ ind i nu. 1494 01:10:55,470 --> 01:10:57,720 Hvis du lГҰser gennem problemet sГҰt, du vil forstГҘ disse. 1495 01:10:57,720 --> 01:11:01,370 Lang historie kort, er disse bare siger, dette er en bitmap-fil, og 1496 01:11:01,370 --> 01:11:02,810 bekrГҰfter, at. 1497 01:11:02,810 --> 01:11:05,180 >> NГҰste, vi skriver dem til ud-fil. 1498 01:11:05,180 --> 01:11:05,660 Vi ser, at her. 1499 01:11:05,660 --> 01:11:06,910 Vi skriver til den ud pointer. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 NГҰste, vi bestemme polstring. 1502 01:11:11,320 --> 01:11:15,240 SГҘ igen, som er sГҰregne med en bitmap-fil, nogle linjer omfatter 1503 01:11:15,240 --> 01:11:16,840 polstring i slutningen. 1504 01:11:16,840 --> 01:11:19,000 Og hvis du lГҰser igennem problemet sГҰt, du vil lГҰre mere om polstring. 1505 01:11:19,000 --> 01:11:22,330 Dette er formlen for at finde polstring. 1506 01:11:22,330 --> 01:11:23,610 >> Vigtigt at huske pГҘ - 1507 01:11:23,610 --> 01:11:29,720 nГҘr du ГҰndrer stГёrrelsen af вҖӢвҖӢen bitmap fil, polstring ГҰndringer. 1508 01:11:29,720 --> 01:11:31,970 NГҘr du ГҰndrer stГёrrelsen pГҘ en fil, polstring ГҰndringer. 1509 01:11:31,970 --> 01:11:34,310 Det er aldrig kommer til at vГҰre stГёrre end 3 - 1510 01:11:34,310 --> 01:11:36,510 det vil vГҰre 0 til 3 inklusive. 1511 01:11:36,510 --> 01:11:38,930 Men nГҘr du ГҰndrer stГёrrelsen pГҘ noget, polstring ГҰndringer. 1512 01:11:38,930 --> 01:11:47,100 >> Hvis jeg kun har Г©n pixel i den pГҘgГҰldende rГҰkke, jeg brug for tre bytes af polstring, fordi 1513 01:11:47,100 --> 01:11:51,190 hver rГҰkke skal vГҰre et multiplum af fire bytes lГҰnge i en bitmap-fil. 1514 01:11:51,190 --> 01:11:56,120 Men hvis jeg fordoble det, at gГҘ fra Г©n pixel til to pixel, som hver, 1515 01:11:56,120 --> 01:11:59,510 lad os sige, er en byte, sГҘ jeg har brug for to bytes af polstring til at gГёre 1516 01:11:59,510 --> 01:12:00,970 der er lig med fire. 1517 01:12:00,970 --> 01:12:04,200 >> SГҘ nГҘr jeg ГҰndre stГёrrelsen pГҘ noget, Jeg har brug for at ГҰndre belГёbet 1518 01:12:04,200 --> 01:12:06,551 polstring jeg har. 1519 01:12:06,551 --> 01:12:08,100 Giver det mening for alle? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 DernГҰst vi gentage over hver rГҰkke, eller gennem alle rГҰkker. 1522 01:12:18,720 --> 01:12:21,400 Og sГҘ skal vi gentage gennem hver kolonne i hver rГҰkke. 1523 01:12:21,400 --> 01:12:25,330 Vi behandler denne bitmap ligesom et gitter, ligesom vi har behandlet 1524 01:12:25,330 --> 01:12:26,490 bestyrelsen i 15.. 1525 01:12:26,490 --> 01:12:29,200 >> Ligesom vi behandlet murstenene nГҘr vi trykt dem pГҘ skГҰrmen. 1526 01:12:29,200 --> 01:12:31,350 Et gitter af rГҰkker og kolonner. 1527 01:12:31,350 --> 01:12:32,350 SГҘ - vi oplevede dette. 1528 01:12:32,350 --> 01:12:33,840 Vi har faktisk lige kodet dette. 1529 01:12:33,840 --> 01:12:35,780 Vi skabte nogle midlertidige opbevaring. 1530 01:12:35,780 --> 01:12:38,710 Vi lГҰser i der, og derefter vi skriver det ud. 1531 01:12:38,710 --> 01:12:42,680 Dette er prГҰcis, hvad vi lige gjorde. 1532 01:12:42,680 --> 01:12:46,760 >> DernГҰst fordi jeg sagde hver linje ender pГҘ polstring, vi 1533 01:12:46,760 --> 01:12:48,260 springe over, at polstring - 1534 01:12:48,260 --> 01:12:51,000 den gamle polstring. 1535 01:12:51,000 --> 01:12:52,630 Og sГҘ tilfГёjer vi det tilbage. 1536 01:12:52,630 --> 01:12:55,140 I dette tilfГҰlde, vi skaber nГёjagtig den samme fil. 1537 01:12:55,140 --> 01:12:56,180 Vi er bare kopiere det. 1538 01:12:56,180 --> 01:12:57,700 SГҘ denne linje er lidt fjollet. 1539 01:12:57,700 --> 01:12:59,660 Vi kunne bogstaveligt talt bare sГҰtte polstring i. 1540 01:12:59,660 --> 01:13:04,290 >> Men hvis du ГҰndrer stГёrrelsen af вҖӢвҖӢfilen, Vil du stadig denne linie? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 SГҘ hvis vi ГҰndre stГёrrelsen pГҘ en fil, gГёr vi stadig Гёnsker at springe 1543 01:13:11,560 --> 01:13:12,810 over den gamle polstring? 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 HIRSCHHORN: SГҘ vi gГёr. 1547 01:13:17,090 --> 01:13:19,290 Fordi dette, igen, tilbud med kildefilen. 1548 01:13:19,290 --> 01:13:21,570 Vi er ligeglade om polstring fra kildefilen. 1549 01:13:21,570 --> 01:13:23,410 Vi Гёnsker at gГҘ til den nГҰste linje. 1550 01:13:23,410 --> 01:13:28,850 Men vi har ikke bare sat tilbage den gamle vГҰrdi af polstring. 1551 01:13:28,850 --> 01:13:31,540 Vi er nГёdt til at sГҰtte tilbage ny mГҰngde af polstring. 1552 01:13:31,540 --> 01:13:35,810 >> SГҘ nГҘr vi er ved at ГҰndre stГёrrelsen pГҘ en fil, vi stadig Гёnsker at springe over 1553 01:13:35,810 --> 01:13:38,270 polstring i den gamle fil - hvad vi lГҰser fra. 1554 01:13:38,270 --> 01:13:40,370 Men hvad vi skriver til, vi kommer til brug for at sГҰtte tilbage nogle forskellige 1555 01:13:40,370 --> 01:13:41,890 Antallet af polstring, vi har bestemt. 1556 01:13:41,890 --> 01:13:42,780 Ja. 1557 01:13:42,780 --> 01:13:44,550 >> STUDENT 75: RГҰkkefГёlgen af вҖӢвҖӢde to linier betyder ikke noget, right? 1558 01:13:44,550 --> 01:13:46,160 Fordi du hГҘndterer forskellige filer. 1559 01:13:46,160 --> 01:13:46,620 >> JASON HIRSCHHORN: PrГҰcis. 1560 01:13:46,620 --> 01:13:48,220 RГҰkkefГёlgen af вҖӢвҖӢdisse to linjer betyder ikke noget. 1561 01:13:48,220 --> 01:13:49,790 Vi skriver denne linje. 1562 01:13:49,790 --> 01:13:51,430 Det er her for filen vi skriver til. 1563 01:13:51,430 --> 01:13:54,370 Det er vigtigt, sГҘ vi fГҘr rigtige mГҰngde af polstring. 1564 01:13:54,370 --> 01:13:57,560 Dette har at beskГҰftige sig med i filen. 1565 01:13:57,560 --> 01:13:58,560 Vi Гёnsker at springe til hГёjre over polstring. 1566 01:13:58,560 --> 01:13:59,470 >> Vi Гёnsker ikke at lГҰse - 1567 01:13:59,470 --> 01:14:01,500 hvis vi lГҰser en byte ad gangen, vi ligeglad disse Udfyldningsbytes. 1568 01:14:01,500 --> 01:14:04,070 Vi Гёnsker at flytte til den nГҰste linje. 1569 01:14:04,070 --> 01:14:11,800 Endelig ligesom Lucy gav for os, vi lukke filer og returnere 0. 1570 01:14:11,800 --> 01:14:13,890 SГҘ dette er copy.c. 1571 01:14:13,890 --> 01:14:17,850 Og vi faktisk skrev - vi brugte det meste af sektion skriver dette vГҰsentlige. 1572 01:14:17,850 --> 01:14:18,740 >> Du har lavet dette. 1573 01:14:18,740 --> 01:14:22,440 SГҘ forhГҘbentlig har du en god fornemmelse af, hvad der foregГҘr her. 1574 01:14:22,440 --> 01:14:25,890 Den store forskel, helt ГҰrligt, er blot denne fГёrste del, der omhandler 1575 01:14:25,890 --> 01:14:29,970 sГҰregenheder bitmap-filer. 1576 01:14:29,970 --> 01:14:33,570 SГҘ jeg har da min nГҰste dias, hvad skal vi gГёre? 1577 01:14:33,570 --> 01:14:35,510 NГҘ, lad os tГҰnke over krimi. 1578 01:14:35,510 --> 01:14:38,080 >> Og for nogen, der lГҰser problemet indstillet, hvad gГёr vi 1579 01:14:38,080 --> 01:14:41,410 nГёdt til at gГёre i krimi? 1580 01:14:41,410 --> 01:14:42,080 Simply. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> Aleja: Kan du tegne den del af hver pixel, der betegner rГёd. 1583 01:14:48,570 --> 01:14:49,730 Og sГҘ - 1584 01:14:49,730 --> 01:14:50,730 slags? 1585 01:14:50,730 --> 01:14:51,860 >> JASON HIRSCHHORN: OK. 1586 01:14:51,860 --> 01:14:54,460 SГҘ tag del af hver pixel, der betegner rГёd. 1587 01:14:54,460 --> 01:14:57,234 Det er tГҰt pГҘ, men ikke det hele. 1588 01:14:57,234 --> 01:14:59,780 >> STUDENT 76: Tja, der er forskellige mГҘder at gГёre det. 1589 01:14:59,780 --> 01:14:59,870 >> JASON HIRSCHHORN: OK. 1590 01:14:59,870 --> 01:15:03,070 Giv mig Г©n mГҘde. 1591 01:15:03,070 --> 01:15:08,240 >> STUDENT 76: Tag alle de rГёde, og derefter understrege blГҘ og grГёn. 1592 01:15:08,240 --> 01:15:10,010 >> JASON HIRSCHHORN: OK. 1593 01:15:10,010 --> 01:15:11,830 SГҘ givet begge disse mГҘder - 1594 01:15:11,830 --> 01:15:15,210 det lyder som vi giver det en pixel, er det har en rГёd, blГҘ og grГёn plan. 1595 01:15:15,210 --> 01:15:19,350 Vi Гёnsker at ГҰndre de relative niveauer af rГёd, blГҘ og grГёn, afhГҰngigt 1596 01:15:19,350 --> 01:15:20,740 pГҘ denne pixel. 1597 01:15:20,740 --> 01:15:28,380 Hvor i denne kode, bГёr vi ГҰndre den relative rГёd, blГҘ og grГёn 1598 01:15:28,380 --> 01:15:29,720 niveauer af en given pixel. 1599 01:15:29,720 --> 01:15:30,600 Efter at vi har lГҰst det - 1600 01:15:30,600 --> 01:15:32,520 fГёr vi skriver det? 1601 01:15:32,520 --> 01:15:34,564 Giv mig den linje nummer. 1602 01:15:34,564 --> 01:15:35,950 >> FLERE STUDERENDE: 83. 1603 01:15:35,950 --> 01:15:37,320 >> JASON HIRSCHHORN: 83. 1604 01:15:37,320 --> 01:15:38,570 SГҘ lige her. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 For mordmysterium den kode, du har brug for at write bГёr alle gГҘ lige der. 1607 01:15:45,710 --> 01:15:47,640 Og det er det eneste kode du nГёdt til at skrive. 1608 01:15:47,640 --> 01:15:51,520 Fordi, ligesom vi hГёrte, alt du behГёver at gГёre, er at ГҰndre disse relative blГҘ, 1609 01:15:51,520 --> 01:15:54,420 rГёde og grГёnne niveauer fra hver pixel. 1610 01:15:54,420 --> 01:15:58,250 >> Du har lГҰst det i, og nu er du kommer til at skrive det ud. 1611 01:15:58,250 --> 01:16:03,100 Hvordan fГҘr jeg - hvis jeg har denne ting kaldet triple, lige her, og det er af 1612 01:16:03,100 --> 01:16:04,570 skriv RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 godt, hvis vi kiggede i bmp.h, hvad der er RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> STUDENT 77: Det er en struct. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON HIRSCHHORN: RGBTRIPLE er en struct. 1618 01:16:18,900 --> 01:16:22,330 Vi ser, at lige hernede. 1619 01:16:22,330 --> 01:16:26,600 Og sГҘ hvis jeg Гёnskede at fГҘ adgang, siger, rГёd niveau af struct, hvordan gГёr jeg 1620 01:16:26,600 --> 01:16:30,005 adgang til rГёde niveau af denne struct? 1621 01:16:30,005 --> 01:16:37,280 >> [KLASSE mumler] 1622 01:16:37,280 --> 01:16:38,530 >> STUDENT 78: RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> JASON HIRSCHHORN: Er det korrekt? 1625 01:16:48,856 --> 01:16:53,040 >> STUDENT 79: Det bГёr vГҰre tredobbelt dot, i stedet for RGBTRIPLE prik? 1626 01:16:53,040 --> 01:16:54,120 >> JASON HIRSCHHORN: Triple. 1627 01:16:54,120 --> 01:16:56,700 Triple er den lokale variabel, sГҘ her, der er ingen henvisninger her. 1628 01:16:56,700 --> 01:16:58,400 SГҘ vi bare bruge dot notation. 1629 01:16:58,400 --> 01:17:00,480 Dette vil give mig niveauet af rГёd. 1630 01:17:00,480 --> 01:17:06,180 Hvis jeg Гёnsker at ГҰndre det, jeg bare indstille det lig med noget andet. 1631 01:17:06,180 --> 01:17:13,190 SГҘ igen, denne linje kode adgange denne variabel inde i denne struct, og 1632 01:17:13,190 --> 01:17:15,070 vi kan indstille den til noget nyt. 1633 01:17:15,070 --> 01:17:20,040 >> SГҘ for mordmysterium, igen, det er, i det vГҰsentlige, hvad vi skal gГёre. 1634 01:17:20,040 --> 01:17:21,170 Meget enkel. 1635 01:17:21,170 --> 01:17:25,020 Bare ГҰndre nogle relative niveauer, og det er her, at koden gГҘr. 1636 01:17:25,020 --> 01:17:27,720 ГҶndre stГёrrelse, pГҘ den anden side, er en smule tricky. 1637 01:17:27,720 --> 01:17:30,900 Faktisk stГёrrelsesfeltet er sandsynligvis vanskeligste del af dette problem indstillet. 1638 01:17:30,900 --> 01:17:32,720 Vi har tre minutter til at gГҘ over det. 1639 01:17:32,720 --> 01:17:34,910 >> Men igen, vi har allerede skrevet det meste af denne kode, sГҘ vi 1640 01:17:34,910 --> 01:17:36,500 bГёr vГҰre temmelig bekendt. 1641 01:17:36,500 --> 01:17:40,750 Hvad er nogle ting, vi Гёnsker at gГёre i ГҰndre stГёrrelse, hvis du har lГҰst i lГёbet af 1642 01:17:40,750 --> 01:17:43,470 problem indstillet? 1643 01:17:43,470 --> 01:17:45,290 Hvis du giver mig dem, vi kan tale om dem. 1644 01:17:45,290 --> 01:17:47,340 Hvad er nogle ting, vi Гёnsker at gГёre? 1645 01:17:47,340 --> 01:17:47,970 >> STUDENT 80: Lodret - 1646 01:17:47,970 --> 01:17:52,360 sГҘ er du nГёdt til vandret ГҰndre stГёrrelse pГҘ det, men lodret resize det sГҘ godt? 1647 01:17:52,360 --> 01:17:58,475 >> JASON HIRSCHHORN: SГҘ hvis vi er givet et pixel, og vi Гёnsker at ГҰndre stГёrrelsen pГҘ det ved en 1648 01:17:58,475 --> 01:18:03,460 faktor to, det nu skal vГҰre skaleres horisontalt og skaleres 1649 01:18:03,460 --> 01:18:05,220 lodret. 1650 01:18:05,220 --> 01:18:06,640 Giver det mening? 1651 01:18:06,640 --> 01:18:07,060 Ja. 1652 01:18:07,060 --> 01:18:09,300 SГҘ det er nok det stГёrste udfordring. 1653 01:18:09,300 --> 01:18:10,430 Og vi vil tale om dette i et sek. 1654 01:18:10,430 --> 01:18:11,065 Ja. 1655 01:18:11,065 --> 01:18:15,270 >> STUDENT 81: Den mГҘde, jeg tГҰnkte pГҘ det var du havde brug for print det ud - 1656 01:18:15,270 --> 01:18:15,490 >> JASON HIRSCHHORN: Vent. 1657 01:18:15,490 --> 01:18:17,580 MГҘ ikke fortГҰlle os, hvad du gjorde. 1658 01:18:17,580 --> 01:18:20,620 Vi kommer til at tale i logik. 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 Hvad var spГёrgsmГҘlet? 1662 01:18:27,410 --> 01:18:28,892 >> JASON HIRSCHHORN: Du skal bare hГҰvede hГҘnden. 1663 01:18:28,892 --> 01:18:31,600 Der var ingen spГёrgsmГҘl. 1664 01:18:31,600 --> 01:18:32,520 Lad mig prГҰsentere den. 1665 01:18:32,520 --> 01:18:34,560 Lad mig blot diskutere dette kort. 1666 01:18:34,560 --> 01:18:38,400 SГҘ vi har en pixel, vi Гёnsker at kopiere det, bГҘde horisontalt og 1667 01:18:38,400 --> 01:18:39,360 lodret. 1668 01:18:39,360 --> 01:18:48,920 SГҘ ideelt set, hvad vi gГёr her er, at vi lГҰse i vores pixel, vi skriver det 1669 01:18:48,920 --> 01:18:51,690 men mange gange. 1670 01:18:51,690 --> 01:18:54,720 >> Men sГҘ har vi vores trick her, fordi sГҘ Гёnsker vi at springe til 1671 01:18:54,720 --> 01:18:57,660 nГҰste linje og skrive det pГҘ begyndelsen af вҖӢвҖӢnГҰste linje. 1672 01:18:57,660 --> 01:19:02,960 SГҘ hvis vi Гёnsker at kopiere bГҘde vandret og lodret, hvad er 1673 01:19:02,960 --> 01:19:05,050 en god mГҘde at gГёre det - 1674 01:19:05,050 --> 01:19:06,780 et godt selv at gГёre det? 1675 01:19:06,780 --> 01:19:11,950 SГҘ vi behГёver ikke hele tiden at sГёge omkring vores fil for at placere ting. 1676 01:19:11,950 --> 01:19:14,360 >> Dette spГёrgsmГҘl har mГҘske ikke gav mening, men jeg tror en 1677 01:19:14,360 --> 01:19:15,800 besvare det vil hjГҰlpe. 1678 01:19:15,800 --> 01:19:17,210 >> STUDENT 82: Opret en array? 1679 01:19:17,210 --> 01:19:20,090 >> JASON HIRSCHHORN: SГҘ lad os tГҰnke for hver fil som en rГҰkke. 1680 01:19:20,090 --> 01:19:22,550 Lad os tГҰnke i rГҰkker. 1681 01:19:22,550 --> 01:19:26,670 Hvis vi har vores fГёrste rГҰkke fra vores lille billede, kan vi gГёre denne rГҰkke 1682 01:19:26,670 --> 01:19:30,640 i en stor rГҰkke af et stort billede, og derefter replikere rГҰkken imidlertid 1683 01:19:30,640 --> 01:19:34,250 mange gange det skal blive gentaget, snarere end at gГҘ pixel for pixel, 1684 01:19:34,250 --> 01:19:37,260 som fГҘr forvirrende, nГҘr beskГҰftiger sig med filer. 1685 01:19:37,260 --> 01:19:38,730 >> Fordi hvis vi havde - 1686 01:19:38,730 --> 01:19:41,260 Jeg kГёrer ud af rummet. 1687 01:19:41,260 --> 01:19:46,490 Hvis dette er vores fil, og vi har at Г©n pixel der, og vi Гёnsker at sГҰtte det 1688 01:19:46,490 --> 01:19:49,840 lige der, vi stadig har nogle ting at det er nГёdvendigt at gГҘ over der, nГҘr vi er 1689 01:19:49,840 --> 01:19:51,450 skrive og skabe vores nye fil - 1690 01:19:51,450 --> 01:19:53,250 vores fil, der er dobbelt sГҘ stor. 1691 01:19:53,250 --> 01:19:56,820 >> Men det er virkelig svГҰrt med fil-funktioner at springe rundt til nye linjer 1692 01:19:56,820 --> 01:20:00,260 lignende, og derefter gГҘ tilbage her og sГҰtte ting derinde. 1693 01:20:00,260 --> 01:20:04,500 Det er nГҰsten umuligt at gГёre noget gerne, hvis det giver mening. 1694 01:20:04,500 --> 01:20:10,180 SГҘ hvis vi tГҰnker i rГҰkker, kan vi tage vores rГҰkke, og derefter sГҰtte det - 1695 01:20:10,180 --> 01:20:11,720 replikere rГҰkker vertikalt. 1696 01:20:11,720 --> 01:20:15,860 >> Og det er, hvordan vi behandler resizing lodret i stedet for vandret. 1697 01:20:15,860 --> 01:20:18,810 Det var slags hurtig, og lidt forvirrende. 1698 01:20:18,810 --> 01:20:22,375 DesvГҰrre vores tid er op. 1699 01:20:22,375 --> 01:20:27,340 Jeg vil stГҘ uden for de af jer, her der har spГёrgsmГҘl om 1700 01:20:27,340 --> 01:20:30,500 problem sГҰt, herunder komme sig. 1701 01:20:30,500 --> 01:20:32,320 >> SГҘ lad os udsГҰtte for nu. 1702 01:20:32,320 --> 01:20:34,480 Og igen, hvis du har spГёrgsmГҘl, vi kan chatte udenfor. 1703 01:20:34,480 --> 01:20:38,294