1 00:00:00,000 --> 00:00:09,780 >> [MIZIK jwe] 2 00:00:09,780 --> 00:00:11,150 >> ZAMYLA Chan: Se pou nou atake geri. 3 00:00:11,150 --> 00:00:14,030 Refè se pwobableman PSET pi renmen m ', ak sitou paske mwen panse ke li nan 4 00:00:14,030 --> 00:00:15,650 reyèlman, reyèlman fre. 5 00:00:15,650 --> 00:00:19,040 Fondamantalman, w ap ba yo yon memwa dosye kat nan ki 6 00:00:19,040 --> 00:00:20,900 foto yo te efase. 7 00:00:20,900 --> 00:00:23,650 Men, sa ki w ap ale nan fè se refè yo tout. 8 00:00:23,650 --> 00:00:24,250 >> OK. 9 00:00:24,250 --> 00:00:28,230 Se konsa, li vrèman enteresan, men petèt yon ti kras entimidasyon, paske w ap 10 00:00:28,230 --> 00:00:32,430 bay yon dosye C vid ak , ou oblije ranpli li pous 11 00:00:32,430 --> 00:00:36,250 OK, se konsa se pou yo kraze sa a nan pati jere. 12 00:00:36,250 --> 00:00:38,160 Ou pral vle louvri nan dosye kat memwa. 13 00:00:38,160 --> 00:00:39,900 Ki sanble senp ase. 14 00:00:39,900 --> 00:00:43,030 Lè sa a, jwenn nan konmansman an nan yon imaj JPG. 15 00:00:43,030 --> 00:00:46,740 Tout dosye yo sou sa a memwa kat yo ale nan dwe jpg. 16 00:00:46,740 --> 00:00:50,840 Lè sa a, yon fwa ou jwenn nan konmansman an, w ap ale nan louvri yon nouvo JPG, ki 17 00:00:50,840 --> 00:00:57,610 se, tankou, kreye yon JPG, epi ekri 512 multiple nan yon tan jiskaske yon nouvo JPG se 18 00:00:57,610 --> 00:01:02,930 jwenn, epi ki fini pwogram nan, yon fwa ou detekte nan fen dosye a. 19 00:01:02,930 --> 00:01:06,400 >> Se konsa, premye etap premye se yo louvri dosye a kat memwa. 20 00:01:06,400 --> 00:01:09,850 Men ou konnen sa a deja, epi gen nan yon dosye mwen / O fonksyon ki nan ale nan 21 00:01:09,850 --> 00:01:12,030 pwouve trè itil. 22 00:01:12,030 --> 00:01:12,820 OK. 23 00:01:12,820 --> 00:01:14,760 Se konsa, sa yo se jpg? 24 00:01:14,760 --> 00:01:16,330 Paske nou bezwen nan konmansman an li. 25 00:01:16,330 --> 00:01:21,310 Oke, jpg, jis tankou ti jan kat, yo se jis sekans nan bytes. 26 00:01:21,310 --> 00:01:30,660 Chans pou, chak JPG kòmanse ak swa 0xff, 0xd8, 0xff, 0xe0, yon sèl sekans 27 00:01:30,660 --> 00:01:33,610 nan bytes, oswa yon lòt sekans bytes. 28 00:01:33,610 --> 00:01:37,250 >> Se konsa, kat bytes sa yo endike kòmanse nan yon JPG. 29 00:01:37,250 --> 00:01:40,780 Okenn lòt pase de konbinezon sa yo nan kat bytes. 30 00:01:40,780 --> 00:01:44,840 Apre sa, Chans pou pou nou, yon lòt reyalite ke nou kapab pran avantaj de se ke chak 31 00:01:44,840 --> 00:01:48,550 JPG ki estoke bò-a-kòt sou kat la memwa. 32 00:01:48,550 --> 00:01:52,210 Mwen te reprezante estrikti a nan yon kat memwa Schematics sa a sou 33 00:01:52,210 --> 00:01:53,310 glise isit la. 34 00:01:53,310 --> 00:01:59,270 Isit la, chak kare, chak rektang, reprezante 512 bytes, epi li kòmanse 35 00:01:59,270 --> 00:02:01,750 ak yon gri nan ke nou pa fè sa vrèman gen yon JPG. 36 00:02:01,750 --> 00:02:05,700 >> Men, Lè sa a, nou finalman frape yon blòk ki gen yon zetwal. 37 00:02:05,700 --> 00:02:10,940 Sa vle di ke kat premye bytes yo soti nan tout sa yo 512 yo se youn nan moun ki de 38 00:02:10,940 --> 00:02:13,230 kòmanse sekans nan yon JPG. 39 00:02:13,230 --> 00:02:17,340 Apre sa, nou ale nan la, ak Lè sa a, yon fwa yon sèl JPG fini, youn nan pwochen an kòmanse. 40 00:02:17,340 --> 00:02:20,990 Nou pa janm gen nenpòt plis espas gri nan-ant. 41 00:02:20,990 --> 00:02:25,550 >> Men, ki jan nou aktyèlman li sa a, epi li 512 bytes yo pou ke nou ka fè 42 00:02:25,550 --> 00:02:27,500 konparezon an plas an premye? 43 00:02:27,500 --> 00:02:33,470 Oke, kite la tounen nan frèd, ki pran nan konstri la ki pral genyen 44 00:02:33,470 --> 00:02:34,470 bytes sa yo ke ou ap li. 45 00:02:34,470 --> 00:02:36,570 Se konsa, w ap ale nan mete moun ki nan gen - 46 00:02:36,570 --> 00:02:42,192 gwosè a, ki kantite, ak Lè sa a, inpointer ke w ap lekti nan. 47 00:02:42,192 --> 00:02:49,900 Koulye a, nou vle li 512 nan yon moman, ak nou vle nan magazen sa a nan yon zòn de defans, 48 00:02:49,900 --> 00:02:50,700 Mwen pral rele li. 49 00:02:50,700 --> 00:02:54,100 >> Fondamantalman, nou pral kenbe sou sa yo 512 bytes ak fè 50 00:02:54,100 --> 00:02:55,500 bagay sa yo avèk li, dwa? 51 00:02:55,500 --> 00:02:58,260 Nou ap swa ale nan konpare premye a kat bytes, oswa nou pral 52 00:02:58,260 --> 00:02:59,830 li li l 'nan, OK? 53 00:02:59,830 --> 00:03:05,050 Se konsa, Lè sa a, konsèy la done pral Lè sa a, sèvi kòm tanpon ou a, ak nan 54 00:03:05,050 --> 00:03:07,745 inpointer, byen, sa se sèlman pral yo dwe kat memwa ou. 55 00:03:07,745 --> 00:03:09,500 >> Retounen nan schematic kat memwa nou an. 56 00:03:09,500 --> 00:03:14,690 Nou pral li 512 bytes nan yon moman, estoke chak blòk 512-multiple 57 00:03:14,690 --> 00:03:19,190 nan yon zòn de defans, kenbe sou sa yo pezib, moun 512 bytes, jouk nou konnen 58 00:03:19,190 --> 00:03:22,000 egzakteman sa yo dwe fè yo. 59 00:03:22,000 --> 00:03:25,960 Se konsa, nan konmansman an se pa anyen, se konsa nou pral li tanpon a, konpare l ', li 60 00:03:25,960 --> 00:03:28,160 nou pa pral bezwen fè anyen ak li. 61 00:03:28,160 --> 00:03:32,030 Lè sa a,, nou finalman frape yon etwal bloke, sa vle di nou te 62 00:03:32,030 --> 00:03:33,630 yo te jwenn premye JPG nou an. 63 00:03:33,630 --> 00:03:36,560 Se konsa, tanpon a kounye a kenbe bytes de sa JPG. 64 00:03:36,560 --> 00:03:40,220 >> Tan nan pwochen 512 bytes, paske yo ap pa yon blòk etwal, yo tou 65 00:03:40,220 --> 00:03:41,740 yon pati nan ki JPG. 66 00:03:41,740 --> 00:03:47,630 Apre sa, jpg yo se kontinyèl soti nan gen sou an, jouk nou frape JPG nan pwochen an. 67 00:03:47,630 --> 00:03:51,880 Lè sa a, tanpon la Lè sa a, kenbe 512 bytes pou sa JPG, ak 68 00:03:51,880 --> 00:03:53,580 sou sa, ak pou fè. 69 00:03:53,580 --> 00:03:54,250 OK. 70 00:03:54,250 --> 00:03:58,980 >> Se konsa, yon fwa ou frape premye joue nan blòk, premye JPG a, ki jan ou fè 71 00:03:58,980 --> 00:04:01,910 aktyèlman, byen, louvri l? 72 00:04:01,910 --> 00:04:04,990 Se pou yo fè yon nouvo JPG. 73 00:04:04,990 --> 00:04:08,846 Non yo pou yon JPG yo ale nan dwe nan fòma a, nimewo, nimewo, 74 00:04:08,846 --> 00:04:13,830 number.jpg, nan yo ke yo ap rele nan nan ki lòd yo jwenn yo deja, 75 00:04:13,830 --> 00:04:14,780 kòmanse nan 0. 76 00:04:14,780 --> 00:04:19,890 >> Se konsa, JPG nan premye ke ou jwenn yo pral 000.jpg. 77 00:04:19,890 --> 00:04:26,560 Se konsa, pwobableman yon bon lide yo kenbe tras nan ki jan anpil jpg ou te jwenn twò lwen. 78 00:04:26,560 --> 00:04:27,610 Se konsa, sa a, se non an dosye-a. 79 00:04:27,610 --> 00:04:29,660 Men, ki jan ou aktyèlman fè sa? 80 00:04:29,660 --> 00:04:34,310 Oke, nou ap ale nan sèvi ak yon fonksyon rele sprintf. 81 00:04:34,310 --> 00:04:38,260 Yon ti kras menm jan ak printf, kote ou ka sèvi ak placeholders pou strings, 82 00:04:38,260 --> 00:04:42,420 eksepte nan ka sa a, sprintf pral enprime dosye a deyò nan aktyèl la 83 00:04:42,420 --> 00:04:45,550 anyè, pa nan tèminal la. 84 00:04:45,550 --> 00:04:46,120 >> OK. 85 00:04:46,120 --> 00:04:49,950 Se konsa, isit la nou wè ke nou gen tit, yon etalaj Char ki pral magazen an 86 00:04:49,950 --> 00:04:55,120 resultant fisèl, epi nou pase nan la tit nan fil aktyèl la ak yon 87 00:04:55,120 --> 00:04:58,720 kontneur, jis tankou nou te aprann fè ak printf. 88 00:04:58,720 --> 00:05:05,530 Men, sa a kòd ki mwen gen isit la ap ba 2.jpg, pa 002.jpg. 89 00:05:05,530 --> 00:05:09,920 Se konsa, mwen pral kite ou jwenn konnen kouman ou kapab modifye kontneur la fè a 90 00:05:09,920 --> 00:05:11,920 kòrèk Non. 91 00:05:11,920 --> 00:05:12,610 >> OK. 92 00:05:12,610 --> 00:05:17,390 Se konsa, yon fwa ou te sprintf'd Lè sa a, ou kapab louvri ke dosye, paske li egziste nan 93 00:05:17,390 --> 00:05:22,690 anyè ou, ak fopen, lè l sèvi avèk la tit, ak Lè sa a, tou sa mòd ou vle 94 00:05:22,690 --> 00:05:25,140 yo louvri ke dosye pous 95 00:05:25,140 --> 00:05:30,260 Se konsa, kounye a ke nou te louvri yon nouvo dosye JPG, kounye a nou ka ekri 512 bytes nan yon 96 00:05:30,260 --> 00:05:33,320 tan, jiskaske yo jwenn yon nouvo JPG. 97 00:05:33,320 --> 00:05:36,640 Se konsa, kite a pran yon lòt gade nan sentaks la nan fwrite. 98 00:05:36,640 --> 00:05:40,060 >> Mwen konnen ke mwen ki montre glise sa a yon anpil, men mwen jis vle asire w ke 99 00:05:40,060 --> 00:05:43,530 ou nèg Pa vin twò mele, paske Mwen konnen ke li trè fasil a 100 00:05:43,530 --> 00:05:47,000 melanje moute premye a ak dènye a agiman yo, an patikilye. 101 00:05:47,000 --> 00:05:54,390 Men, sonje ke w ap ekri ki soti nan tanpon ou nan imaj sa yo dosye deyò. 102 00:05:54,390 --> 00:05:59,250 >> Kounye a ke ou konnen ki jan ekri nan 512 bytes nan dosye JPG ou ke ou te 103 00:05:59,250 --> 00:06:03,230 kreye, byen, nou vle yo sispann ki pwosesis yon fwa nou te rive nan nan fen 104 00:06:03,230 --> 00:06:06,720 kat nou an, paske se la pa pral nenpòt ki imaj plis yo dwe jwenn. 105 00:06:06,720 --> 00:06:10,760 Se konsa, kite a tounen nan frèd yon fwa plis, mwen te pwomèt. 106 00:06:10,760 --> 00:06:15,600 frèd retounen konbyen atik nan gwosè, gwosè, te pare nan avèk siksè. 107 00:06:15,600 --> 00:06:19,440 Idealman, sa a se pral fè tou sa ou pase nan pou yon nimewo pou, dwa? 108 00:06:19,440 --> 00:06:24,140 Paske w ap eseye li nimewo nan eleman ki gen yon gwosè, gwosè. 109 00:06:24,140 --> 00:06:29,380 Men, si frèd a pa kapab li sa kantite eleman, Lè sa a, li pral retounen 110 00:06:29,380 --> 00:06:32,530 tou sa nimewo li li avèk siksè. 111 00:06:32,530 --> 00:06:36,310 >> Koulye a, se yon sèl bagay enpòtan sonje se ke si ou sèvi ak yon lòt dosye mwen / O 112 00:06:36,310 --> 00:06:43,860 fonksyon tankou fgetc, li pral retounen tou ki jan plizyè atik li li avèk siksè. 113 00:06:43,860 --> 00:06:48,000 Ki sa ki nan itil sou fonksyon sa a se ke si ou itilize fonksyon andedan nan yon 114 00:06:48,000 --> 00:06:53,190 kondisyon, li pral egzekite tèt li pandan y ap pou detèmine si ke kondisyon, ki se 115 00:06:53,190 --> 00:06:54,340 jis reyèlman itil. 116 00:06:54,340 --> 00:07:00,440 Se konsa, si ou gen sa a kondisyon, di, si frèd tanpon, sizof DOG, 2, 117 00:07:00,440 --> 00:07:04,870 konsèy, egal egal 1, ki vle di ke mwen ta renmen li 118 00:07:04,870 --> 00:07:06,540 2 chen nan moman an. 119 00:07:06,540 --> 00:07:13,490 Men, si frèd retounen 1 olye pou yo 2 kòm yo espere a, sa vle di ke gen 2 120 00:07:13,490 --> 00:07:16,480 chen kite nan dosye mwen, men pito 1. 121 00:07:16,480 --> 00:07:22,450 Men, si li retounen 2, Lè sa a, mwen toujou gen sa yo 2 chen andedan nan zòn de defans mwen. 122 00:07:22,450 --> 00:07:26,280 >> Se konsa, kounye a ke ba ou yon sans pou konnen kijan pou tcheke pou fen a nan dosye a, men 123 00:07:26,280 --> 00:07:28,940 kite yo ale la a kounye a lojik la. 124 00:07:28,940 --> 00:07:32,460 Ki jan nou fè aktyèlman moso tout nan eleman sa yo ansanm? 125 00:07:32,460 --> 00:07:36,880 Yon fwa nou frape premye JPG nou an, depi nou konnen ke jpg yo estoke 126 00:07:36,880 --> 00:07:40,910 kontigu, nou pral ekri jouk nou rive nan fen an nan dosye a kat. 127 00:07:40,910 --> 00:07:43,950 Men, nou pa vle ekri anyen jouk lè sa a. 128 00:07:43,950 --> 00:07:48,710 Se konsa, li enpòtan, se pa sèlman ke nou ap nan kòmanse nan yon nouvo JPG, men si wi ou non 129 00:07:48,710 --> 00:07:50,655 nou te deja jwenn yon JPG oswa ou pa. 130 00:07:50,655 --> 00:07:55,390 >> Si Li nan kòmansman an nan yon nouvo JPG, nou pral vle fèmen dosye JPG kounye a nou an si 131 00:07:55,390 --> 00:07:59,110 Nou gen yon sèl louvri, epi yo louvri yon nouvo yo ekri nan. 132 00:07:59,110 --> 00:08:03,340 Si li pa kòmanse nan JPG nan nouvo, menm si, nou pral kenbe dosye a JPG menm 133 00:08:03,340 --> 00:08:05,910 louvri ak ekri nan sa. 134 00:08:05,910 --> 00:08:10,100 Nou pral ekri tanpon nou an, nan kèlkeswa sa ki Dosye JPG nou gen louvri, bay ki 135 00:08:10,100 --> 00:08:12,120 Nou gen yon sèl louvri, nan kou. 136 00:08:12,120 --> 00:08:16,190 Si nou pa jwenn premye JPG nou ankò, nou pa ekri anyen. 137 00:08:16,190 --> 00:08:20,290 Apre sa, pwosesis sa a ap kontinye jiskaske ou rive nan fen an nan dosye a kat. 138 00:08:20,290 --> 00:08:23,410 >> E finalman, ou pral vle fè asire w ke ou fkloz nenpòt ki 139 00:08:23,410 --> 00:08:25,800 dosye ke ou te fopened. 140 00:08:25,800 --> 00:08:28,360 Yon fwa w ap konfòtab ak nan konsèp, pran yon gade nan kèk 141 00:08:28,360 --> 00:08:30,840 pseudocode, ki mwen te enkli isit la. 142 00:08:30,840 --> 00:08:34,830 Premyèman, ou vle ouvri dosye a kat, ak Lè sa a, repete pwosesis sa a 143 00:08:34,830 --> 00:08:37,144 jouk ou te rive nan nan nan fen kat la. 144 00:08:37,144 --> 00:08:40,880 Ou vle li 512 bytes nan yon zòn de defans. 145 00:08:40,880 --> 00:08:43,934 Lè l sèvi avèk ki pezib, ou pral vle tcheke si wi ou non ou se nan kòmansman an nan yon 146 00:08:43,934 --> 00:08:45,300 nouvo JPG oswa ou pa. 147 00:08:45,300 --> 00:08:48,400 Apre sa, repons lan nan kesyon an pral afekte jesyon dosye ou - 148 00:08:48,400 --> 00:08:51,940 ki dosye ou louvri, ki moun ou fèmen. 149 00:08:51,940 --> 00:08:55,220 >> Lè sa a, ou deja jwenn yon JPG? 150 00:08:55,220 --> 00:08:57,740 Ki jan ou te kenbe tras nan sa? 151 00:08:57,740 --> 00:09:01,735 Lè sa a, tou depann de sa, ou pral swa ekri nan JPG aktyèl la ke ou 152 00:09:01,735 --> 00:09:07,090 gen ou ouvè, oubyen pa ekri li nan tout, paske ou pa yo te jwenn yon JPG ankò. 153 00:09:07,090 --> 00:09:10,870 Finalman, yon fwa ou te rive nan nan fen dosye a, ou pral vle yo fèmen nenpòt ki 154 00:09:10,870 --> 00:09:12,590 rete dosye ke ou gen louvri. 155 00:09:12,590 --> 00:09:14,590 Nou vle pwòp isit la. 156 00:09:14,590 --> 00:09:18,790 >> Apre sa, ak sa, ou te refè tout dosye yo ki manke nan ki memwa 157 00:09:18,790 --> 00:09:21,620 kat, ki se yon feat trè dwòl. 158 00:09:21,620 --> 00:09:23,430 Se konsa, PAT tèt ou sou do an. 159 00:09:23,430 --> 00:09:27,560 Men, gen nan yon eleman plis PSET a, ki se konpetisyon an. 160 00:09:27,560 --> 00:09:30,920 Ou ap jwenn ke tout nan foto yo ke ou te refè yo aktyèlman 161 00:09:30,920 --> 00:09:32,820 foto nan anplwaye CS50 la. 162 00:09:32,820 --> 00:09:38,500 Se konsa, si w ap sou lakou lekòl la oubyen yon kote bò kote yo, Lè sa a, ou ka pran foto ak 163 00:09:38,500 --> 00:09:42,600 anplwaye a, ak seksyon ki gen nan pi foto ak manm pèsonèl 164 00:09:42,600 --> 00:09:46,940 soti nan dosye refè yo pral jwenn yon pwi pè. 165 00:09:46,940 --> 00:09:50,650 Ak sa, Lè sa a, ou te fini refè an PSET. 166 00:09:50,650 --> 00:09:53,600 Non mwen se Zamyla, e sa se CS50. 167 00:09:53,600 --> 00:10:01,835