1 00:00:00,000 --> 00:00:02,700 [Powered by Google Translate] [Walkthrough - Harjoitus 4] 2 00:00:02,700 --> 00:00:05,000 [Zamyla Chan - Harvardin yliopisto] 3 00:00:05,000 --> 00:00:07,340 [Tämä on CS50. - CS50.TV] 4 00:00:08,210 --> 00:00:11,670 Selvä. Hei, kaikki, ja tervetuloa läpikäynti 4. 5 00:00:11,670 --> 00:00:14,270 >> Tänään PSET on Forensics. 6 00:00:14,270 --> 00:00:18,080 Forensics on todella hauska PSET että kyse tekemisissä bittikarttatiedostot 7 00:00:18,080 --> 00:00:21,550 löytää tehneen rikoksen. 8 00:00:21,550 --> 00:00:24,200 Sitten aiomme muuttaa joitakin bittikarttatiedostot, 9 00:00:24,200 --> 00:00:27,780 Sitten olemme myös menossa käsitellä todella hauska osa nimeltään Recover, 10 00:00:27,780 --> 00:00:31,160 jossa olemme pohjimmiltaan ojensi muistikortti 11 00:00:31,160 --> 00:00:34,350 jossa joku on vahingossa poistanut kaikki ne tiedostot, 12 00:00:34,350 --> 00:00:38,860 ja olemme pyytäneet palauttaa nämä tiedostot. 13 00:00:38,860 --> 00:00:42,910 >> Mutta ensin ennen kuin pääsemme PSET, olen todella haluavat vain onnitella kaikkia. 14 00:00:42,910 --> 00:00:45,230 Olemme noin keskipisteessä tällä kurssilla. 15 00:00:45,230 --> 00:00:50,070 Quiz 0 on takanamme, ja me olemme pset4, joten lähinnä, olemme puolimatkassa. 16 00:00:50,070 --> 00:00:55,490 Olemme päässeet pitkälle, jos näytät takaisin psets, pset0 ja pset1, 17 00:00:55,490 --> 00:00:57,300 joten onnitella itseäsi siitä, 18 00:00:57,300 --> 00:01:00,760 ja aiomme päästä todella hauskaa. 19 00:01:00,760 --> 00:01:07,070 >> Joten meidän työkalupakki tähän PSET jälleen suorittamisen sijasta sudo yum-y update, 20 00:01:07,070 --> 00:01:13,890 pystymme vain juosta update50 jos olet versio 17.3 ja yläpuolelta laitteen. 21 00:01:13,890 --> 00:01:17,380 Niin varmasti ajaa update50 - se on paljon helpompaa, muutama vähemmän merkkejä - 22 00:01:17,380 --> 00:01:20,640 varmista, että olet uusin versio laitteen. 23 00:01:20,640 --> 00:01:25,410 Erityisesti on tärkeää update50 kun alamme käyttää CS50 Check. 24 00:01:25,410 --> 00:01:28,700 Joten varmista, että teet sen. 25 00:01:28,700 --> 00:01:30,760 >> Kaikkien osien tätä PSET, 26 00:01:30,760 --> 00:01:34,350 aiomme olla tekemisissä tiedosto tulot ja lähdöt, tiedosto I / O. 27 00:01:34,350 --> 00:01:38,140 Aiomme olla menossa yli useita ohjelmia, jotka käsittelevät ryhmät 28 00:01:38,140 --> 00:01:40,350 osoittaa tiedostoja ja tuollaista, 29 00:01:40,350 --> 00:01:43,050 joten haluamme varmistaa, että olemme todella tuttu ja mukava 30 00:01:43,050 --> 00:01:47,990 käsitellään miten tulon ja lähdön tiedostoihin. 31 00:01:47,990 --> 00:01:52,080 >> Vuonna jakelu koodi tähän PSET on tiedosto nimeltä copy.c, 32 00:01:52,080 --> 00:01:55,280 ja sitähän me löydämme tulee olemaan todella hyödyllistä meille 33 00:01:55,280 --> 00:02:00,340 koska aiomme päätyä todella kopioimalla copy.c tiedosto 34 00:02:00,340 --> 00:02:05,350 ja ainoastaan ​​muuttamalla sitä hieman pystyä saavuttamaan ensimmäisen 2 osaa ongelman asetettu. 35 00:02:05,350 --> 00:02:09,030 >> Ja niin sitten kuten aiemmin mainitsin, olemme tekemisissä bittikarttoja sekä JPEG. 36 00:02:09,030 --> 00:02:13,170 Joten todella ymmärtää rakenteen miten nämä tiedostot järjestetään, 37 00:02:13,170 --> 00:02:16,170 miten voimme todella kääntää 0s ja 1s osaksi tietueet 38 00:02:16,170 --> 00:02:19,040 ja asioita, joita voimme todella ymmärtää ja tulkita ja muokata, 39 00:02:19,040 --> 00:02:21,000 että on todella tärkeää, 40 00:02:21,000 --> 00:02:25,970 niin menee JPEG ja bittikarttatiedostot ja ymmärtää rakenteen näiden. 41 00:02:25,970 --> 00:02:30,780 >> Pset4, kuten tavallista, alkaa osa kysymyksiä. 42 00:02:30,780 --> 00:02:36,600 Ne käsittelevät tiedoston I / O ja pääset tottunut siihen. 43 00:02:36,600 --> 00:02:42,520 Sitten osa 1 on jännäri, jossa olet antanut bittikarttatiedosto 44 00:02:42,520 --> 00:02:45,630 joka näyttää ikään kuin punaisia ​​pisteitä ympäri. 45 00:02:45,630 --> 00:02:52,180 Ja sitten pohjimmiltaan mitä aiomme tehdä, on ottaa tämä tiedosto ja vain muokata sitä hieman 46 00:02:52,180 --> 00:02:54,010 osaksi versioon voimme lukea. 47 00:02:54,010 --> 00:02:56,000 Pohjimmiltaan kun päätämme, meillä on sama tiedosto, 48 00:02:56,000 --> 00:03:02,630 paitsi me nähdä piilotettu viesti piilotettu kaikki punaisia ​​pisteitä. 49 00:03:02,630 --> 00:03:07,310 Sitten Resize on ohjelma, joka, koska tiedosto 50 00:03:07,310 --> 00:03:11,490 ja annettiin sitten tiedoston nimi, että se tuottaa ja sitten annetaan numero samoin, 51 00:03:11,490 --> 00:03:16,850 todella muuttaa että bittikarttamuotoisen että kokonaisluku. 52 00:03:16,850 --> 00:03:19,240 Sitten lopuksi, meillä Recover PSET. 53 00:03:19,240 --> 00:03:24,160 Meille annetaan muistikortille ja sitten palauttaa kaikki kuvat 54 00:03:24,160 --> 00:03:25,920 jotka on vahingossa poistettu, 55 00:03:25,920 --> 00:03:31,420 mutta kuten me oppia, ei todellisuudessa poisteta ja poistetaan tiedosto; 56 00:03:31,420 --> 00:03:38,470 me vain eräänlainen menettänyt missä he olivat tiedoston, mutta aiomme palauttaa se. 57 00:03:38,470 --> 00:03:44,950 >> Suuri. Joten menee tiedoston I / O sanottuna nämä ovat koko listan toiminnoista, jotka voit käyttää. 58 00:03:44,950 --> 00:03:49,840 Olet jo nähnyt vähän perusasiat fopen, fread ja fwrite, 59 00:03:49,840 --> 00:03:54,350 mutta aiomme syventää jonkin tiedoston I / O-toimintoja, kuten fputc, 60 00:03:54,350 --> 00:03:56,930 jossa voit vain kirjoittaa yhden merkin kerrallaan, 61 00:03:56,930 --> 00:04:02,000 ja fseek, jossa tavallaan siirtää tiedoston asennonosoittimen eteen-ja taaksepäin, 62 00:04:02,000 --> 00:04:05,770 ja sitten toiset. Mutta me menemme tuohon hieman myöhemmin PSET. 63 00:04:08,050 --> 00:04:13,100 >> Eli ensin vain päästä tiedoston I / O ennen kuin menemme PSET, 64 00:04:13,100 --> 00:04:19,860 avata tiedoston, esimerkiksi mitä sinun pitää tehdä on todella asetettu osoittimen kyseisen tiedoston. 65 00:04:19,860 --> 00:04:22,710 Joten meillä on FILE * osoitin. 66 00:04:22,710 --> 00:04:27,140 Tässä tapauksessa, soitan sitä on osoitin, koska se tulee olemaan minun INFILE. 67 00:04:27,140 --> 00:04:33,340 Ja niin aion käyttää toimintoa fopen ja sitten tiedoston nimi 68 00:04:33,340 --> 00:04:36,360 ja sitten tila, jossa aion olla tekemisissä tiedosto. 69 00:04:36,360 --> 00:04:42,080 Joten on "r" tässä tapauksessa lukea, "w" kirjoittamiseen, ja sitten "" for lisäämällä. 70 00:04:42,080 --> 00:04:44,270 Esimerkiksi, kun olet tekemisissä INFILE 71 00:04:44,270 --> 00:04:47,310 ja kaikki haluat tehdä, on lukea bitit ja tavut varastoidaan 72 00:04:47,310 --> 00:04:50,420 niin olet luultavasti menossa haluavat käyttää "R" kuin tilaan. 73 00:04:50,420 --> 00:04:54,520 Kun haluat itse kirjoittaa, eräänlainen tekevät uuden tiedoston, 74 00:04:54,520 --> 00:04:57,220 niin mitä aiomme tehdä, on aiomme avata uuden tiedoston 75 00:04:57,220 --> 00:05:02,410 ja käyttää "w"-tilassa kirjoittamiseen. 76 00:05:02,410 --> 00:05:07,540 >> Joten sitten kun olet itse lukea osaksi tiedostoja, rakenne on seuraavanlainen. 77 00:05:07,540 --> 00:05:14,930 Ensin kuuluu osoittimen struct jotka sisältävät tavut, että luet. 78 00:05:14,930 --> 00:05:19,830 Niin, että tulee olemaan loppuun sijainnin tavujen luet. 79 00:05:19,830 --> 00:05:23,360 Olet sitten menossa osoittamaan kokoon, kuten periaatteessa kuinka monta tavua 80 00:05:23,360 --> 00:05:30,100 ohjelma on lukea tiedostoon, koko pohjimmiltaan yksi elementti on, 81 00:05:30,100 --> 00:05:32,620 ja sitten olet menossa määrittää, kuinka monta elementtejä haluat lukea. 82 00:05:32,620 --> 00:05:34,980 Ja sitten lopuksi, sinun täytyy tietää, missä olet lukemisen, 83 00:05:34,980 --> 00:05:37,580 niin että tulee olemaan sinun on osoitin. 84 00:05:37,580 --> 00:05:41,780 I värikoodattu Näiden koska fread on myös hyvin samankaltainen fwrite, 85 00:05:41,780 --> 00:05:47,050 paitsi haluat varmistaa, että käytät oikean järjestyksen, 86 00:05:47,050 --> 00:05:51,960 varmista, että olet todella kirjallisesti tai lukee oikean tiedoston. 87 00:05:54,910 --> 00:05:58,610 >> Niin sitten kuin ennen, jos meillä on koko elementin samoin kuin elementtien lukumäärä, 88 00:05:58,610 --> 00:06:00,600 voimme pelata täällä vähän. 89 00:06:00,600 --> 00:06:06,810 Sano Minulla on koira struct ja niin sitten haluan lukea kaksi koiraa kerrallaan. 90 00:06:06,810 --> 00:06:12,450 Mitä voisin tehdä, on sanoa kokoa yhden elementin tulee olemaan kokoa yhden koiran 91 00:06:12,450 --> 00:06:14,770 ja aion itse lukenut niistä kaksi. 92 00:06:14,770 --> 00:06:18,290 Vaihtoehtoisesti, mitä voisin tehdä on sanoa Aion lukea yhden elementin 93 00:06:18,290 --> 00:06:21,340 ja että yksi elementti tulee olemaan koko kaksi koiraa. 94 00:06:21,340 --> 00:06:24,320 Niin, että analogisia miten voit sellaista leikkiä koko ja lukumäärä 95 00:06:24,320 --> 00:06:28,250 riippuen siitä mitä enemmän intuitiivinen sinulle. 96 00:06:28,250 --> 00:06:30,810 >> Selvä. Joten nyt saamme kirjallisesti tiedostoja. 97 00:06:30,810 --> 00:06:36,880 Kun haluat kirjoittaa tiedostoon, ensimmäinen argumentti on oikeastaan ​​missä luet alkaen. 98 00:06:36,880 --> 00:06:42,050 Niin, että pohjimmiltaan tietoja aiot kirjoittaa osaksi tiedoston, 99 00:06:42,050 --> 00:06:44,490 joka on pois osoitin lopussa. 100 00:06:44,490 --> 00:06:47,670 Joten kun olet tekemisissä PSET, varmista ettet hämmentyä. 101 00:06:47,670 --> 00:06:50,480 Ehkä on määritelmät vierekkäin. 102 00:06:50,480 --> 00:06:58,090 Voit vetää määritelmiä ylös käsin kirjoittamalla miehen ja sitten fwrite esimerkiksi 103 00:06:58,090 --> 00:06:59,950 terminaalissa tai voit palata tähän diaan 104 00:06:59,950 --> 00:07:03,570 ja varmista, että käytät oikea. 105 00:07:03,570 --> 00:07:08,700 Joten jälleen, fwrite, kun olet tiedoston, jonka haluat kirjoittaa osaksi, 106 00:07:08,700 --> 00:07:14,290 että tulee olemaan viimeinen väite ja että tulee olemaan osoitin kyseisen tiedoston. 107 00:07:14,290 --> 00:07:18,670 Joten sitten se, miten suhtaudumme kirjallisesti ehkä useita tavuja kerralla, 108 00:07:18,670 --> 00:07:21,820 mutta että haluat vain kirjoittaa vain yhden merkin. 109 00:07:21,820 --> 00:07:25,940 Kuten näemme myöhemmin tässä esimerkiksi bittikartat meidän täytyy käyttää sitä. 110 00:07:25,940 --> 00:07:32,180 Silloin voimme käyttää fputc lähinnä vain asettamalla yksi merkki kerrallaan, chr, 111 00:07:32,180 --> 00:07:37,050 osaksi tiedoston osoitin, ja se on meidän ulos osoitinta siellä. 112 00:07:38,700 --> 00:07:41,560 Joten kun etsimme tai kirjoittaa tiedostoon, 113 00:07:41,560 --> 00:07:44,690 tiedosto on pitää kirjaa siitä, missä olemme. 114 00:07:44,690 --> 00:07:47,810 Joten se on eräänlainen kursorin, tiedosto asennonosoitin. 115 00:07:47,810 --> 00:07:54,330 Ja niin kun me kirjoittaa tai lukea jälleen tiedostoon, 116 00:07:54,330 --> 00:07:56,760 tiedosto todella muistaa missä se on, 117 00:07:56,760 --> 00:07:59,270 ja niin se jatkuu missä kursori on. 118 00:07:59,270 --> 00:08:03,970 Tämä voi olla hyödyllistä, kun haluat vaikkapa lukea tietty määrä tehdä jotain 119 00:08:03,970 --> 00:08:06,160 ja sitten lukea seuraavan summan, 120 00:08:06,160 --> 00:08:10,700 mutta joskus saatamme haluta mennä takaisin tai oikeastaan ​​aloittaa tietty viitearvon. 121 00:08:10,700 --> 00:08:16,870 Joten sitten fseek toiminto, mikä se on voimme siirtää kohdistinta tietyn tiedoston 122 00:08:16,870 --> 00:08:19,680 tietty määrä tavuja. 123 00:08:19,680 --> 00:08:24,260 Ja sitten meidän täytyy tehdä, on määrittää, missä viitearvo on. 124 00:08:24,260 --> 00:08:31,520 Joten joko se liikkuu eteenpäin tai taaksepäin kohdistimen hetkellä on, 125 00:08:31,520 --> 00:08:35,750 tai voimme määritellä, että se olisi vain liikkuu päässä tiedoston alusta 126 00:08:35,750 --> 00:08:37,090 tai tiedoston loppuun. 127 00:08:37,090 --> 00:08:41,230 Ja niin voit kulkea negatiivinen tai positiivinen arvo määrään, 128 00:08:41,230 --> 00:08:44,960 ja että se sellaista siirtää kohdistinta joko eteen-tai taaksepäin. 129 00:08:46,170 --> 00:08:51,920 >> Ennen kuin pääsemme muihin psets, kysyttävää tiedoston I / O? 130 00:08:53,860 --> 00:08:59,990 Okei. Kuten me päästä enemmän esimerkkejä rohkeasti pysäyttää minua kysymyksistä. 131 00:08:59,990 --> 00:09:06,930 >> Joten jännäri, olet ojensi bittikarttatiedostoa samanlainen kuin tämä punainen yksi dian, 132 00:09:06,930 --> 00:09:14,510 ja se näyttää tältä - nippu punaisia ​​pisteitä - ja et todellakaan tiedä mitä on kirjoitettu. 133 00:09:14,510 --> 00:09:23,310 Jos karsastaa, saatat pystyä näkemään hieman sinertävä väri sisälle keskellä. 134 00:09:23,310 --> 00:09:26,270 Pohjimmiltaan se on missä teksti on tallennettu. 135 00:09:26,270 --> 00:09:30,270 Oli murha tapahtui, ja meidän täytyy selvittää kuka sen teki. 136 00:09:30,270 --> 00:09:36,760 Jotta niin, että meidän täytyy tavallaan muuntaa tämän kuvan luettavaan muotoon. 137 00:09:36,760 --> 00:09:42,740 Jos te koskaan kohdannut tätä joskus olisi vähän sarjat 138 00:09:42,740 --> 00:09:48,510 missä haluaisit olla suurennuslasi, jossa punainen kalvo. Kukaan? Joo. 139 00:09:48,510 --> 00:09:52,770 Joten sinun olisi kädellä jotain tällaista, sinulla olisi suurennuslasi 140 00:09:52,770 --> 00:09:58,130 punainen kalvo päälle, voisitte laittaa sen kuvan päälle, 141 00:09:58,130 --> 00:10:03,410 ja sinulla olisi mahdollisuus nähdä viestin piilossa siinä. 142 00:10:03,410 --> 00:10:07,080 Meillä ei ole suurennuslasi punainen kalvo, joten sen sijaan aiomme sellaista luoda oman 143 00:10:07,080 --> 00:10:09,060 tässä PSET. 144 00:10:09,060 --> 00:10:15,760 Ja niin käyttäjä on menossa syöttämään jännäri, sitten vihje,. Bmp, 145 00:10:15,760 --> 00:10:18,800 niin se INFILE, joka on punainen piste viesti 146 00:10:18,800 --> 00:10:23,550 ja sitten he sanovat verdict.bmp tulee olemaan meidän outfile. 147 00:10:23,550 --> 00:10:27,900 Joten se tulee luomaan uuden bittikarttakuvaa samanlainen hajuakaan yksi 148 00:10:27,900 --> 00:10:32,600 paitsi luettavassa muodossa, jossa voimme nähdä piilotettu viesti. 149 00:10:32,600 --> 00:10:37,550 >> Koska aiomme olla tekemisissä muokkaus ja manipuloida bittikarttoja jonkinlaisia, 150 00:10:37,550 --> 00:10:42,400 aiomme sellaista sukelluksen rakenteeseen näiden bittikarttatiedostot. 151 00:10:42,400 --> 00:10:48,130 Menimme näinä hieman luennossa, mutta katsotaanpa niihin hieman. 152 00:10:48,130 --> 00:10:51,740 Bittikarttoja ovat lähinnä vain järjestely tavua 153 00:10:51,740 --> 00:10:55,790 missä olemme määritelty mikä tavua tarkoittaa mitä. 154 00:10:55,790 --> 00:11:00,540 Joten tässä on ikään kuin kartta bittikarttakuvan 155 00:11:00,540 --> 00:11:08,550 sanomalla, että se alkaa joitakin header-tiedostoja, alkaa joitakin tietoja siellä. 156 00:11:08,550 --> 00:11:16,540 Huomaatte, että noin tavu numero 14 koko ilmaistaan ​​sekä bittikarttakuvan, 157 00:11:16,540 --> 00:11:18,520 ja se jatkuu. 158 00:11:18,520 --> 00:11:23,810 Mutta mitä me todella kiinnostunut tästä alkaa noin tavu numero 54. 159 00:11:23,810 --> 00:11:26,060 Meillä on näitä RGB kolminkertaistuu. 160 00:11:26,060 --> 00:11:30,760 Mitä se tulee tehdä, on oltava todellinen pikseliä, väriarvot. 161 00:11:30,760 --> 00:11:35,950 Kaiken yläpuolella, että otsikko on joitakin tietoja 162 00:11:35,950 --> 00:11:41,240 vastaa kuvan kokoa, kuvan leveys ja korkeus. 163 00:11:41,240 --> 00:11:44,930 Kun menemme pehmusteet myöhemmin, näemme miksi kuvan koko 164 00:11:44,930 --> 00:11:48,670 voi olla erilainen kuin leveys tai korkeus. 165 00:11:48,670 --> 00:11:54,240 Joten sitten edustaa näitä - näitä bittikarttakuvia ovat sarjoja tavua - 166 00:11:54,240 --> 00:11:59,370 Mitä voisimme tehdä, on sanoa okei, aion muistaa että indeksi 14, 167 00:11:59,370 --> 00:12:03,380 se jos koko on esimerkiksi vaan mitä aiomme tehdä tämän helpottamiseksi 168 00:12:03,380 --> 00:12:06,020 on kiteyttää sen struct. 169 00:12:06,020 --> 00:12:08,880 Ja niin meillä on kaksi tietueet teki meille BITMAPFILEHEADER 170 00:12:08,880 --> 00:12:10,440 ja BITMAPINFOHEADER, 171 00:12:10,440 --> 00:12:14,840 ja niin kun luemme tätä tiedostoa, oletuksena se tulee olemaan menossa järjestyksessä, 172 00:12:14,840 --> 00:12:22,360 ja niin, jotta se myös aikoo täyttää muuttujiin kuten biWidth ja biSize. 173 00:12:25,270 --> 00:12:31,230 Ja sitten lopuksi, jokainen pikseli edustaa kolme tavua. 174 00:12:31,230 --> 00:12:35,500 Ensimmäinen on määrä sinistä pikselin, toinen on määrä vihreä, 175 00:12:35,500 --> 00:12:41,120 ja lopuksi, paljon punaista, jossa 0 on olennaisesti ei sinistä tai ei vihreä tai ei punaista 176 00:12:41,120 --> 00:12:43,720 ja sitten ff on suurin arvo. 177 00:12:43,720 --> 00:12:46,800 Nämä ovat heksadesimaaliarvot. 178 00:12:46,800 --> 00:12:53,870 Joten jos meillä on FF0000, sitten joka vastaa mahdollisimman paljon sinistä 179 00:12:53,870 --> 00:12:58,890 ja sitten ei vihreää eikä punaista, niin sitten se antaisi meille sininen pikseli. 180 00:12:58,890 --> 00:13:04,190 Sitten jos meillä on FF kaikkialla aluksessa, niin se tarkoittaa, että meillä on valkoinen pikseli. 181 00:13:04,190 --> 00:13:11,370 Tämä on tavallaan vastakkainen tyypillisesti kun sanomme RGB. Se on todella menossa BGR. 182 00:13:12,750 --> 00:13:18,990 >> Joten jos todella tutkia esimerkiksi bittikarttakuvan - haluan säästellä täällä. 183 00:13:31,560 --> 00:13:33,830 Se on vähän pieni. 184 00:13:39,890 --> 00:13:47,840 Olen zoomauksen, ja voimme nähdä se pixelated. Se näyttää lohkojen värin. 185 00:13:47,840 --> 00:13:50,110 Sinulla on valkoiset lohkot ja sitten punaisen korttelin. 186 00:13:50,110 --> 00:13:53,700 Jos pelaat Microsoft Paint, esimerkiksi voisit tehdä jotain tuollaista 187 00:13:53,700 --> 00:13:58,960 by pohjimmiltaan vain maalaamalla ruutuja tietyssä järjestyksessä. 188 00:13:58,960 --> 00:14:08,060 Niin sitten, mitä tämä merkitsee että bittikartta on seuraava. 189 00:14:08,060 --> 00:14:15,710 Täällä meillä on ensimmäinen valkoinen pikseleitä, jotka kaikki 6 ovat f: n, ja sitten meillä on punainen pikseliä, 190 00:14:15,710 --> 00:14:19,910 merkitty 0000FF. 191 00:14:19,910 --> 00:14:27,940 Ja niin jono tavuja, että meillä on osoittaa, kuinka bittikarttakuvan tulee näyttämään. 192 00:14:27,940 --> 00:14:32,230 Joten mitä olen tehnyt täällä on juuri kirjoittanut kaikki nämä tavut ja sitten väritetty punaisella 193 00:14:32,230 --> 00:14:37,550 jotta voit sellaista nähdä, jos karsastaa vähän, miten sellainen osoittaa hymiö kasvot. 194 00:14:40,180 --> 00:14:46,390 >> Siten, että bittikarttakuvia työ on minun kuvitella sitä periaatteessa kuin ruudukko. 195 00:14:46,390 --> 00:14:54,940 Ja niin oletusarvoisesti jokainen rivi ruudukolla on oltava jaollinen 4 tavua. 196 00:15:00,520 --> 00:15:07,060 Jos katsomme bittikarttakuvan, olet täyttämällä jokaisen arvon. 197 00:15:07,060 --> 00:15:17,370 Esimerkiksi, saatat olla punainen täällä, vihreä täällä, sininen täällä, 198 00:15:17,370 --> 00:15:24,950 mutta sinun täytyy varmistaa, että kuva on täytetään useita neljä tavua. 199 00:15:24,950 --> 00:15:32,200 Joten jos haluan kuvan olevan kolmen korttelin leveä, niin olisin täytyy laittaa tyhjä arvo 200 00:15:32,200 --> 00:15:35,640 in viimeinen tehdä neljän kerrannainen. 201 00:15:35,640 --> 00:15:39,530 Joten sitten Lisäisin mitä me vaaditaan täyte. 202 00:15:39,530 --> 00:15:43,750 Menen vain ilmoittaa, että siellä x. 203 00:15:44,920 --> 00:15:54,160 Nyt sanovat haluamme kuvan, joka on 7 pikseliä pitkä, esimerkiksi. 204 00:15:54,160 --> 00:15:59,550 Meillä on 1, 2, 3, 4, 5, 6, 7, 205 00:16:04,750 --> 00:16:07,000 ja kaikki tämä on täytetty värillä. 206 00:16:07,000 --> 00:16:10,620 Siten, että bittikarttakuvia työtä on, että tarvitsemme kahdeksas. 207 00:16:10,620 --> 00:16:12,460 Tällä hetkellä meillä on 1, 2, 3, 4, 5, 6, 7. 208 00:16:12,460 --> 00:16:19,360 Tarvitsemme 8 tilat bittikarttakuvan lukea oikein. 209 00:16:19,360 --> 00:16:25,600 Joten mitä meidän täytyy tehdä, on lisätä vain vähän pehmuste 210 00:16:25,600 --> 00:16:29,430 varmistaa, että kaikki leveydet ovat yhdenmukaisia 211 00:16:29,430 --> 00:16:34,260 ja että kaikki leveydet ovat 4: n monikerta. 212 00:16:42,110 --> 00:16:47,310 Ja niin olen aiemmin todennut, pehmuste kuten x tai koukeroinen viiva, 213 00:16:47,310 --> 00:16:53,880 mutta varsinainen bittikarttakuvia täyte on merkitty heksadesimaalinen 0. 214 00:16:53,880 --> 00:16:57,340 Niin, että olisi vain yksi merkki, 0. 215 00:16:58,980 --> 00:17:06,329 Mikä voisi olla hyötyä on xxd komento. 216 00:17:06,329 --> 00:17:11,220 Mitä se on oikeastaan ​​näyttää, kuten samanlainen kuin mitä tein ennen kanssa hymiö 217 00:17:11,220 --> 00:17:15,630 kun olen itse tulostaa mitä kukin väri olisi se pikselin 218 00:17:15,630 --> 00:17:21,800 ja sitten värikoodattu sitä, kun suoritat xxd seuraavat komennot, 219 00:17:21,800 --> 00:17:28,670 niin se itse tulostaa mitä värit ovat ne pikselit. 220 00:17:28,670 --> 00:17:33,810 Mitä sinun täytyy tehdä, on täällä minä osoittavat, kuten-s 54 221 00:17:33,810 --> 00:17:36,530 sanoo, että aion aloittaa 54. tavun 222 00:17:36,530 --> 00:17:40,820 koska ennen sitä, muistan kun muistelemme kartta bittikarttoja, 223 00:17:40,820 --> 00:17:42,690 että kaikki otsikkotiedot ja tuollaista. 224 00:17:42,690 --> 00:17:46,280 Mutta mitä me todella välitämme on todellinen pikseleitä, jotka osoittavat väri. 225 00:17:46,280 --> 00:17:52,700 Joten lisäämällä että lippu,-s 54, niin pystymme näkemään väriarvot. 226 00:17:52,700 --> 00:17:56,020 Ja älä välitä monimutkaisia ​​liput ja tuollaista. 227 00:17:56,020 --> 00:18:05,020 Vuonna Harjoitus spec, sinun on ohjeet siitä, miten käyttää xxd näyttää kuvapistettä. 228 00:18:07,070 --> 00:18:15,590 Joten jos näet täällä, se tavallaan näyttää vihreää laatikko, tämä pieni juttu. 229 00:18:15,590 --> 00:18:23,610 Olen värejä 00FF00 koska pohjimmiltaan sanomalla ei sinistä, paljon vihreää, eikä punaista. 230 00:18:23,610 --> 00:18:26,370 Siten, että vastaa vihreä. 231 00:18:26,370 --> 00:18:31,920 Kuten näette täällä, näemme vihreä suorakulmio. 232 00:18:31,920 --> 00:18:36,660 Tämä vihreä suorakulmio on vain 3 pikseliä leveä, niin sitten meidän täytyy tehdä 233 00:18:36,660 --> 00:18:44,350 varmista, että kuva on jaollinen 4 leveä on lisätä lisäpehmuste. 234 00:18:44,350 --> 00:18:49,460 Ja niin sitten se miten näette nämä 0s täällä. 235 00:18:49,460 --> 00:18:54,510 Tämä todella on seurausta teidän Resize PSET, 236 00:18:54,510 --> 00:19:01,350 olennaisesti ottaen pieni bittikartta ja sitten laajentaa sitä 4. 237 00:19:01,350 --> 00:19:09,380 Ja niin näemme, että oikeastaan ​​tämä kuva on 12 pikseliä leveä, mutta 12 on jaollinen 4, 238 00:19:09,380 --> 00:19:12,940 ja niin me oikeastaan ​​näe mitään 0s lopussa, koska meidän ei tarvitse lisätä mitään 239 00:19:12,940 --> 00:19:19,070 koska se on täysin pehmustettu. Se ei ole enemmän tilaa. 240 00:19:20,720 --> 00:19:23,470 >> Okei. Kysyttävää pehmuste? 241 00:19:25,150 --> 00:19:27,460 Okei. Cool. 242 00:19:27,460 --> 00:19:32,520 >> Kuten aiemmin mainitsin, bittikarttoja ovat vain jono tavuja. 243 00:19:32,520 --> 00:19:39,170 Ja niin mitä meillä on sen sijaan tarvitsee seurata tarkasti montako tavua 244 00:19:39,170 --> 00:19:47,050 vastaa tiettyä osaa, me itse asiassa luoneet struct edustaa tätä. 245 00:19:47,050 --> 00:19:50,930 Joten mitä meillä on RGBTRIPLE struct. 246 00:19:50,930 --> 00:19:54,590 Aina kun on esiintymän RGB kolminkertainen, 247 00:19:54,590 --> 00:20:00,970 koska tämä on eräänlainen määritellä struct, voit käyttää rgbtBlue muuttuja, 248 00:20:00,970 --> 00:20:09,520 Samoin Green and Red muuttujia, jotka osoittavat, kuinka paljon sininen, vihreä ja punainen, 249 00:20:09,520 --> 00:20:11,580 vastaavasti, sinulla on. 250 00:20:11,580 --> 00:20:16,800 >> Eli jos meillä on sininen muuttuja asetettu 0, vihreä asetettu ff, 251 00:20:16,800 --> 00:20:22,060 mikä on suurin arvo voi olla, ja sitten punainen muuttuja asetettu 0, 252 00:20:22,060 --> 00:20:27,870 niin mikä väri olisi tässä RGB kolminkertainen edustaa? >> [Opiskelija] Vihreä. 253 00:20:27,870 --> 00:20:29,150 Green. Aivan. 254 00:20:29,150 --> 00:20:34,480 Se tulee olemaan hyvä tietää, että aina kun on esiintymän RGB kolminkertainen, 255 00:20:34,480 --> 00:20:41,340 voit itse käyttää värin määrää - sininen, vihreä ja punainen - erikseen. 256 00:20:43,350 --> 00:20:54,900 >> Nyt kun olemme puhuneet rakenteesta että katsotaanpa katsomaan BMP-tiedosto. 257 00:20:54,900 --> 00:20:57,870 Nämä ovat tietueet sinua varten. 258 00:20:57,870 --> 00:21:01,820 Täällä meillä BITMAPFILEHEADER struct. 259 00:21:01,820 --> 00:21:07,610 Mielenkiintoinen on kokoa. 260 00:21:07,610 --> 00:21:12,660 Myöhemmin meillä info otsikon, jossa on muutamia asioita, jotka ovat mielenkiintoisia meille, 261 00:21:12,660 --> 00:21:15,480 nimittäin koko, leveys ja korkeus. 262 00:21:15,480 --> 00:21:19,170 Kuten me mennä myöhemmin, kun olet lukenut tiedoston, 263 00:21:19,170 --> 00:21:25,500 se automaattisesti lukee koska olemme asettaa, jotta sama. 264 00:21:25,500 --> 00:21:31,990 Joten biSize sisältää oikeuden tavua, jotka vastaavat todellista kuvan kokoa. 265 00:21:34,700 --> 00:21:40,500 Ja sitten täällä, lopuksi, kuten olemme puhuneet, meillä RGBTRIPLE typedef struct. 266 00:21:40,500 --> 00:21:46,840 Meillä rgbtBlue, vihreä ja punainen liittyy siihen. 267 00:21:48,210 --> 00:21:49,340 >> Suuri. Okei. 268 00:21:49,340 --> 00:21:56,360 Nyt ymmärrämme bittikarttoja vähän, ymmärtää, että meillä on tiedoston otsikko 269 00:21:56,360 --> 00:22:00,790 ja info otsikko liittyy siihen ja sitten sen jälkeen, meillä on mielenkiintoisia juttuja 270 00:22:00,790 --> 00:22:05,110 ja värejä, ja nuo värit edustavat RGBTRIPLE tietueet, 271 00:22:05,110 --> 00:22:12,710 ja nämä puolestaan ​​on kolme liittyvät arvot on sininen, vihreä ja punainen. 272 00:22:12,710 --> 00:22:17,270 >> Joten nyt voimme tavallaan ajattelen Recover hieman. 273 00:22:17,270 --> 00:22:20,130 Anteeksi. Ajattele jännäri. 274 00:22:20,130 --> 00:22:25,750 Kun meillä on hajuakaan tiedostoa, niin mitä me haluamme tehdä, on lukea sitä pikselivastaavuuden 275 00:22:25,750 --> 00:22:33,860 ja sitten jotenkin muuttaa ne pikselit jotta voimme tulostaa sen luettavaan muotoon. 276 00:22:33,860 --> 00:22:41,020 Ja niin tulostamaan sitä, aiomme kirjoittaa pikselikohtaisesti osaksi verdict.bmp tiedostoon. 277 00:22:41,020 --> 00:22:45,120 Sellainen paljon tekemistä. Ymmärrämme, että. 278 00:22:45,120 --> 00:22:49,860 Joten mitä olemme tehneet, on meillä todella antanut sinulle copy.c. 279 00:22:49,860 --> 00:22:57,610 Mikä copy.c tekee vain tekee tarkan kopion tietyn bittikarttatiedostoa ja sitten tulostaa sen. 280 00:22:57,610 --> 00:23:01,900 Joten tämä jo avaa tiedoston sinulle, lukee pikseli, 281 00:23:01,900 --> 00:23:04,510 ja sitten kirjoittaa sen osaksi tulostetiedostoa. 282 00:23:04,510 --> 00:23:07,080 >> Katsotaanpa katsomaan sitä. 283 00:23:13,390 --> 00:23:18,290 Tämä on taata asianmukainen käyttö, 284 00:23:18,290 --> 00:23:22,640 saada tiedostonimet tänne. 285 00:23:22,640 --> 00:23:29,940 Mikä tämä on siinä syötetiedoston olla mitä olemme hyväksyttiin vuonna INFILE täällä, 286 00:23:29,940 --> 00:23:34,750 joka on toinen komentorivin argumentti. 287 00:23:34,750 --> 00:23:37,640 Tarkistaa, varmista, että voimme avata tiedoston. 288 00:23:38,960 --> 00:23:44,860 Tarkistaa, varmista voimme tehdä uuden outfile täällä. 289 00:23:45,630 --> 00:23:53,270 Sitten mitä tämä tekee täällä, se vain periaatteessa alkaa lukea sisään bittikartta alusta alkaen. 290 00:23:53,270 --> 00:23:56,700 Alussa, kuten tiedämme, on BITMAPFILEHEADER, 291 00:23:56,700 --> 00:24:03,200 ja niin ne sekvenssit bittien suoraan täyttää BITMAPFILEHEADER. 292 00:24:03,200 --> 00:24:07,940 Joten mitä meillä on täällä sanoo että BITMAPFILEHEADER bf - 293 00:24:07,940 --> 00:24:13,150 se on meidän uusi muuttuja tyyppiä BITMAPFILEHEADER - 294 00:24:13,150 --> 00:24:22,560 aiomme laittaa sisälle bf mitä luimme vuonna osoitin, joka on meidän INFILE. 295 00:24:22,560 --> 00:24:23,970 Kuinka paljon lukea? 296 00:24:23,970 --> 00:24:32,160 Luemme kuinka monta tavua meidän sisältävät koko BITMAPFILEHEADER. 297 00:24:32,160 --> 00:24:34,660 Samoin se, mitä teemme info otsikon. 298 00:24:34,660 --> 00:24:39,010 Joten olemme edelleen yhdessä meidän tiedoston INFILE, 299 00:24:39,010 --> 00:24:44,360 ja me lukea nuo bitit ja tavut, ja olemme liittämällä ne suoraan 300 00:24:44,360 --> 00:24:47,880 näihin esimerkkejä muuttujista, jotka olemme tekemässä. 301 00:24:49,370 --> 00:24:53,800 Täällä me vain varmistaa, että bittikartan on bittikartta. 302 00:24:57,670 --> 00:25:01,030 >> Nyt meillä on outfile, eikö? 303 00:25:01,030 --> 00:25:04,420 Niin se on kun luomme, se on lähinnä tyhjä. 304 00:25:04,420 --> 00:25:07,710 Joten meidän on pohjimmiltaan luoda uuden bittikartan tyhjästä. 305 00:25:07,710 --> 00:25:12,280 Mitä me teemme on meidän on varmistettava, että meillä kopioi tiedoston otsikko 306 00:25:12,280 --> 00:25:16,850 ja info otsikon aivan kuten INFILE on. 307 00:25:16,850 --> 00:25:22,850 Mitä teemme me kirjoittaa - ja muistaa, että BF on muuttuva 308 00:25:22,850 --> 00:25:29,300 Tyypin BITMAPFILEHEADER, joten mitä teemme me vain käyttää sisällön 309 00:25:29,300 --> 00:25:34,980 kirjoittaa osaksi outfile. 310 00:25:36,550 --> 00:25:38,510 Täällä muistan puhuimme pehmuste, 311 00:25:38,510 --> 00:25:47,820 kuinka on tärkeää varmistaa, että määrä pikseleitä, että meillä on jaollinen 4. 312 00:25:47,820 --> 00:25:52,790 Tämä on melko hyödyllinen laskukaava kuinka paljon pehmuste olet 313 00:25:52,790 --> 00:25:57,670 koska leveys tiedoston. 314 00:25:57,670 --> 00:26:04,120 Haluan te muistaa, että copy.c meillä laskukaavan täyte. 315 00:26:04,120 --> 00:26:07,970 Okei? Joten jokainen muistaa, että. Suuri. 316 00:26:07,970 --> 00:26:14,050 Joten mitä sitten copy.c tekee seuraavaksi se iteroi kaikki Scanlines. 317 00:26:14,050 --> 00:26:23,730 Se menee läpi rivit ensin ja sitten tallentaa jokaisen kolmen, että se lukee 318 00:26:23,730 --> 00:26:26,920 ja sitten kirjoittaa sen outfile. 319 00:26:26,920 --> 00:26:33,120 Joten tässä me luet vain yhden RGB kolminkertainen kerrallaan 320 00:26:33,120 --> 00:26:39,860 ja sitten asettaa saman kolminkertainen osaksi outfile. 321 00:26:41,120 --> 00:26:48,340 Hankala osa on, että täyte ei ole RGB kolminkertainen, 322 00:26:48,340 --> 00:26:55,200 joten emme voi vain lukea, että täyte määrä RGB kolminkertaistuu. 323 00:26:55,200 --> 00:27:01,460 Mitä meidän täytyy tehdä, on oikeastaan ​​vain siirtää meidän tiedosto asennonosoitin, siirrä meidän kohdistinta 324 00:27:01,460 --> 00:27:06,840 ikään kuin ohittaa kaikki pehmuste niin että me olemme seuraavan rivin. 325 00:27:06,840 --> 00:27:12,990 Ja sitten, mitä tämä tekee on kopio näyttää, miten haluat ehkä lisätä pehmuste. 326 00:27:12,990 --> 00:27:14,990 Joten olemme lasketaan kuinka paljon pehmuste tarvitsemme, 327 00:27:14,990 --> 00:27:18,220 niin se tarkoittaa, että tarvitsemme täyte määrä 0s. 328 00:27:18,220 --> 00:27:24,510 Mikä tämä on for-silmukka, joka asettaa padding määrä 0s meidän outfile. 329 00:27:24,510 --> 00:27:31,170 Ja sitten lopuksi, suljet molemmat tiedostot. Suljet infile sekä outfile. 330 00:27:31,170 --> 00:27:34,870 >> Niin, että miten copy.c toimii, 331 00:27:34,870 --> 00:27:37,430 ja että tulee olemaan melko hyödyllinen. 332 00:27:39,720 --> 00:27:43,750 Sen sijaan vain tosiasiallisesti suoraan kopioimalla ja liittämällä se 333 00:27:43,750 --> 00:27:46,800 tai vain katsomalla sitä ja kirjoittamalla mitä haluat, 334 00:27:46,800 --> 00:27:49,440 saatat vain halua tätä komentoa terminaalissa, 335 00:27:49,440 --> 00:27:54,520 cp copy.c whodunit.c, joka luo uuden tiedoston, whodunit.c, 336 00:27:54,520 --> 00:27:58,330 joka sisältää täsmälleen sama sisältö kuin kopio ei. 337 00:27:58,330 --> 00:28:03,880 Joten mitä voimme tehdä on käyttää sitä puitteet jolle voi rakentaa ja muokata 338 00:28:03,880 --> 00:28:06,900 meidän jännäri tiedoston. 339 00:28:08,500 --> 00:28:14,670 >> Nämä ovat meidän to-DOS tekevän jännäri, mutta mitä copy.c tekee 340 00:28:14,670 --> 00:28:16,730 todella hoitaa useimmat meille. 341 00:28:16,730 --> 00:28:21,900 Joten kaikki mitä meidän tarvitsee tehdä seuraavaksi on muuttaa pikselin tarpeen 342 00:28:21,900 --> 00:28:25,920 todella tehdä tiedosto luettavissa. 343 00:28:25,920 --> 00:28:32,960 Muista, että tietyn pikselin kolminkertainen, joten tietyn muuttuja tyyppiä RGBTRIPLE, 344 00:28:32,960 --> 00:28:35,990 voit käyttää sininen, vihreä ja punainen arvoja. 345 00:28:35,990 --> 00:28:38,670 Että menee ovat käteviä, koska jos et voi käyttää niitä, 346 00:28:38,670 --> 00:28:41,770 se tarkoittaa, että voit myös tarkistaa ne, 347 00:28:41,770 --> 00:28:45,430 ja se tarkoittaa, että voit myös muuttaa niitä. 348 00:28:45,430 --> 00:28:49,430 >> Joten kun menimme takaisin meidän punainen suurennuslasi esimerkiksi 349 00:28:49,430 --> 00:28:53,390 pohjimmiltaan, että toimi eräänlaisena suodattimen meille. 350 00:28:53,390 --> 00:28:58,160 Joten mitä me haluamme tehdä, on haluamme suodattaa kaikki kolminkertaistaa jotka tulevat sisään 351 00:28:58,160 --> 00:29:01,240 On olemassa useita erilaisia ​​tapoja tehdä tätä. 352 00:29:01,240 --> 00:29:07,100 Periaatteessa voit olla mitä tahansa tyyppiä suodattimen haluat. 353 00:29:07,100 --> 00:29:09,890 Ehkä haluat muuttaa kaikki punaiset pikseliä 354 00:29:09,890 --> 00:29:13,570 tai ehkä haluat vaihtaa eri väriä pikselin eri väriä. 355 00:29:13,570 --> 00:29:15,400 Se on sinun. 356 00:29:15,400 --> 00:29:19,580 Muista, että voit tarkistaa, mitä väriä pikseli on 357 00:29:19,580 --> 00:29:23,000 ja voit myös muuttaa sitä olet menossa läpi. 358 00:29:24,410 --> 00:29:26,420 >> Okei. Joten se jännäri. 359 00:29:26,420 --> 00:29:32,760 Kun ajaa jännäri, tiedät kuka syyllinen rikos oli. 360 00:29:32,760 --> 00:29:35,540 >> Nyt aiomme mennä koon. 361 00:29:35,540 --> 00:29:37,990 Aiomme silti käsitellä bittikarttoja. 362 00:29:37,990 --> 00:29:40,750 Mitä me teemme on meidän menossa on tulo bittikartta 363 00:29:40,750 --> 00:29:45,890 ja sitten me aiomme kulkea numero ja sitten saat outfile bittikartta 364 00:29:45,890 --> 00:29:51,380 jos se on pohjimmiltaan meidän INFILE skaalataan n. 365 00:29:54,670 --> 00:30:01,450 Sano minun tiedosto oli vain yksi pikseli suuri. 366 00:30:01,450 --> 00:30:09,100 Sitten jos minun n oli 3, skaalaus 3, niin toistan että pikseli n monta kertaa, 367 00:30:09,100 --> 00:30:14,410 niin 3 kertaa, ja sitten myös skaalata alas 3 kertaa samoin. 368 00:30:14,410 --> 00:30:17,840 Niin näet olen skaalaamalla se pystysuoraan sekä vaakasuoraan. 369 00:30:17,840 --> 00:30:19,680 >> Ja sitten tässä on esimerkki. 370 00:30:19,680 --> 00:30:27,590 Jos sinulla on n = 2, näet, että ensimmäinen sininen pikseli siellä toistettiin kaksi kertaa 371 00:30:27,590 --> 00:30:30,930 vaakasuunnassa sekä kaksi kertaa pystysuunnassa. 372 00:30:30,930 --> 00:30:38,040 Ja sitten se jatkuu, joten sinulla on suora skaalaus alkuperäisen kuvan kaksi. 373 00:30:40,920 --> 00:30:47,600 >> Joten jos me yksityiskohtaisesti pseudokoodi tähän, haluamme avata tiedostoa. 374 00:30:47,600 --> 00:30:49,880 Ja sitten tietäen, että jos palaamme tänne, 375 00:30:49,880 --> 00:30:54,540 näemme, että leveys outfile tulee olemaan erilainen kuin leveys infile. 376 00:30:54,540 --> 00:30:56,130 Mitä se tarkoittaa? 377 00:30:56,130 --> 00:31:01,230 Tämä tarkoittaa sitä, että otsikkoinformaatio muuttuu. 378 00:31:01,230 --> 00:31:03,790 Ja niin, mitä me haluamme tehdä, on päivittää otsikon tiedot, 379 00:31:03,790 --> 00:31:11,820 tietäen, että kun luemme tiedostot, jos olet toimivat copy.c puitteet, 380 00:31:11,820 --> 00:31:17,570 meillä on jo muuttuja, joka osoittaa, mitä kokoa on ja tuollaista. 381 00:31:17,570 --> 00:31:24,060 Joten kun olet, että mitä kannattaa tehdä, on muuttaa kyseisiä muuttujia. 382 00:31:24,060 --> 00:31:29,380 Muista, jos sinulla on struct, miten voit käyttää muuttujia, että. 383 00:31:29,380 --> 00:31:32,080 Voit käyttää piste operaattori, eikö? 384 00:31:32,080 --> 00:31:36,420 Joten sitten käyttää sitä, tiedät, että sinun täytyy muuttaa otsikon info. 385 00:31:36,480 --> 00:31:41,030 Joten tässä on vain lista todellinen elementit, joita aiotaan muuttaa oman tiedoston. 386 00:31:41,030 --> 00:31:45,180 Tiedoston koko tulee olemaan muuttamalla, kuva, sekä leveys ja korkeus. 387 00:31:45,180 --> 00:31:50,080 Niin sitten menee takaisin kartan bittikarttoja, 388 00:31:50,080 --> 00:31:57,730 katso onko se tiedoston otsikko tai info otsikko, joka sisältää nämä tiedot 389 00:31:57,730 --> 00:32:00,920 ja vaihda sitten tarpeen mukaan. 390 00:32:05,010 --> 00:32:12,470 Jälleen, eli cp copy.c resize.c. 391 00:32:12,470 --> 00:32:19,270 Tämä tarkoittaa, että resize.c sisältää nyt kaiken, mitä sisältämää kopio 392 00:32:19,270 --> 00:32:24,490 koska kopio tarjoaa meille tapa perehtyä kunkin juova pikseli. 393 00:32:24,490 --> 00:32:29,860 Paitsi nyt, eikä vain muuttaa arvoja kuten teimme jännäri, 394 00:32:29,860 --> 00:32:37,980 mitä me haluamme tehdä, on haluamme kirjoittaa useita pikseleitä 395 00:32:37,980 --> 00:32:43,580 niin kauan kuin meidän n on suurempi kuin 1. 396 00:32:43,580 --> 00:32:47,110 >> Sitten mitä haluamme tehdä, on haluamme venyttää sitä vaakasuunnassa n, 397 00:32:47,110 --> 00:32:50,490 sekä venyttää sitä pystysuunnassa n.. 398 00:32:50,490 --> 00:32:52,710 Miten voisi teemme tämän? 399 00:32:52,710 --> 00:32:56,890 Sano n on 2 ja sinulla on antanut INFILE. 400 00:32:56,890 --> 00:32:58,730 Kursori aikoo aloittaa ensimmäinen, 401 00:32:58,730 --> 00:33:03,530 ja mitä haluat tehdä, jos n on 2, haluat tulostaa 2 niistä. 402 00:33:03,530 --> 00:33:05,490 Joten te tulostaa 2 niistä. 403 00:33:05,490 --> 00:33:10,830 Silloin kohdistin tulee siirtyä seuraavan pikselin, joka on punainen, 404 00:33:10,830 --> 00:33:18,400 ja se tulee tulostaa 2 näitä punaisia, lisäämällä sen päälle, mitä se on tehnyt ennenkin. 405 00:33:18,400 --> 00:33:26,280 Sitten kohdistin siirtyy seuraavaan pikselin ja piirtää 2 niistä. 406 00:33:26,280 --> 00:33:37,180 Jos muistelen copy.c puitteissa, mitä tämä tekee täällä 407 00:33:37,180 --> 00:33:42,830 on se luo uuden ilmentymän RGB kolminkertainen, uusi muuttuja nimeltä kolminkertainen. 408 00:33:42,830 --> 00:33:50,500 Ja täällä kun se lukee siihen, se lukee INFILE 1 RGBTRIPLE 409 00:33:50,500 --> 00:33:53,470 ja tallentaa sen sisällä että kolminkertainen muuttujan. 410 00:33:53,470 --> 00:33:57,590 Joten sinulla oikeasti on muuttuja edustaa kyseisen pikselin. 411 00:33:57,590 --> 00:34:05,290 Sitten kun kirjoittaa, mitä kannattaa tehdä, on koteloida fwrite lausuman varten silmukka 412 00:34:05,290 --> 00:34:11,080 , joka kirjoittaa sen omaan outfile niin monta kertaa kuin on tarpeen. 413 00:34:17,449 --> 00:34:20,100 Se on tarpeeksi yksinkertainen. 414 00:34:20,200 --> 00:34:27,590 Vain pohjimmiltaan toista kirjoittamista n monta kertaa mittakaavassa se vaakasuoraan. 415 00:34:27,590 --> 00:34:32,969 >> Mutta meidän on muistettava, että meidän täyte tulee muuttumaan. 416 00:34:47,350 --> 00:34:53,020 Aiemmin sanoa meillä oli jotain pituus 3. 417 00:34:53,020 --> 00:35:00,130 Sitten olisi vain lisätä kuinka paljon pehmuste? Vain yksi tehdä jaollinen 4. 418 00:35:00,130 --> 00:35:10,480 Mutta sano me skaalaus tässä kuvaa n = 2. 419 00:35:10,480 --> 00:35:16,300 Joten kuinka monta sinistä pikseliä meillä olisi lopussa? Meillä olisi 6. 420 00:35:16,300 --> 00:35:21,470 1, 2, 3, 4, 5, 6. Selvä. 421 00:35:21,470 --> 00:35:26,580 6 ei ole jaollinen 4. Mikä on lähimpään kerrannaiseen 4? Tämä tulee olemaan 8. 422 00:35:26,580 --> 00:35:33,200 Joten olemme todella menossa on 2 merkkiä pehmuste siellä. 423 00:35:33,200 --> 00:35:38,720 >> Muistaako kukaan, jos meillä on laskukaava pehmusteet 424 00:35:38,720 --> 00:35:41,350 ja jos se voisi olla? 425 00:35:41,350 --> 00:35:45,160 [Äänetön opiskelija vastausta] >> Joo, copy.c. Oikea. 426 00:35:45,160 --> 00:35:49,800 On kaavan copy.c laskea kuinka paljon pehmuste olet 427 00:35:49,800 --> 00:35:53,810 annetaan tietty leveys bittikarttakuvan. 428 00:35:53,810 --> 00:36:02,950 Niin sitten se tulee olemaan hyödyllinen, kun haluat lisätä tietyn määrän pehmuste 429 00:36:02,950 --> 00:36:06,160 todella selvittää, kuinka paljon pehmusteita sinun täytyy lisätä. 430 00:36:10,820 --> 00:36:15,850 Mutta yksi nuotti, vaikka se, että haluat varmistaa, että käytät oikean koon. 431 00:36:15,850 --> 00:36:21,410 Vain olla varovainen, koska olet periaatteessa tullaan käsittelemään kahta bittikarttakuvia. 432 00:36:21,410 --> 00:36:23,410 Haluat varmistaa, että käytät oikea. 433 00:36:23,410 --> 00:36:26,820 Kun olet laskettaessa pehmusteet outfile, jota haluat käyttää leveyden outfile 434 00:36:26,820 --> 00:36:29,860 eikä leveyttä edelliseen. 435 00:36:29,860 --> 00:36:37,240 >> Suuri. Tällainen huolehtii venyttely koko bittikarttakuvana vaakasuunnassa. 436 00:36:37,240 --> 00:36:41,290 Mutta mitä me haluamme tehdä, on todella venyttää sitä vertikaalisesti. 437 00:36:41,290 --> 00:36:48,760 Tämä tulee olemaan hieman hankalampaa, koska kun olemme kopioinut rivi 438 00:36:48,760 --> 00:36:51,580 ja kirjallisesti rivi, meidän kohdistin tulee olemaan lopussa. 439 00:36:51,580 --> 00:36:56,210 Joten jos luemme uudestaan, niin se vain menee lukea seuraavalle riville. 440 00:36:56,210 --> 00:37:03,660 Joten mitä me haluamme tehdä, on eräänlainen löytää jokin tapa kopioida ne rivit uudelleen 441 00:37:03,660 --> 00:37:12,500 tai vain sellainen kun rivin ja uudelleenkirjoitus uudelleen. 442 00:37:14,380 --> 00:37:17,940 Kuten olen tavallaan viittasin, on olemassa useita eri tapoja tehdä tätä. 443 00:37:17,940 --> 00:37:23,040 Mitä voisit tehdä, on niin olet menossa läpi ja lukemisen kautta erityisesti juova 444 00:37:23,040 --> 00:37:28,560 ja muuttaa sitä tarvittaessa, niin sellainen myymälä kaikki nämä pikseliä array. 445 00:37:28,560 --> 00:37:36,350 Sitten myöhemmin tiedät että sinun täytyy tulostaa että array jälleen 446 00:37:36,350 --> 00:37:39,830 joten voit vain käyttää sitä array tehdä niin. 447 00:37:39,830 --> 00:37:44,500 Toinen tapa tehdä se on voisit kopioida alas yhden rivin, 448 00:37:44,500 --> 00:37:47,950 ymmärtää, että sinun täytyy kopioida sitä uudelleen, joten oikeastaan ​​siirrä kursori, 449 00:37:47,950 --> 00:37:50,950 ja että tulee olemaan menetelmää fseek. 450 00:37:50,950 --> 00:37:56,410 Voisit siirrät kohdistinta aina takaisin ja toista kopiointi uudelleen. 451 00:37:56,410 --> 00:38:03,960 >> Joten jos meidän skaalaus numero on n, niin kuinka monta kertaa meillä olisi palattava 452 00:38:03,960 --> 00:38:10,500 ja kirjoittaa linjan? >> [Opiskelija] n - 1. >> Joo, täydellinen. n - 1. 453 00:38:10,500 --> 00:38:14,390 Olemme tehneet sen jo kerran, niin silloin me haluamme toistaa menee takaisin prosessiin 454 00:38:14,390 --> 00:38:17,460 n - 1 määrä kertoja. 455 00:38:22,730 --> 00:38:25,860 Okei. Joten sinulla on oma resize toimintoa. 456 00:38:25,860 --> 00:38:34,360 >> Nyt voimme saada todella hauska osa, suosikkini PSET, mikä on Recover. 457 00:38:34,360 --> 00:38:39,580 Sen sijaan bittikarttoja, tällä kertaa olemme tekemisissä JPEG. 458 00:38:39,580 --> 00:38:43,370 Emme oikeastaan ​​ole antanut tiedostoa juuri ja JPEG, 459 00:38:43,370 --> 00:38:46,600 me annetaan pohjimmiltaan raaka muistikortin. 460 00:38:46,600 --> 00:38:51,790 Ja niin tämä on vähän tietoa ja roskat arvot alussa, 461 00:38:51,790 --> 00:38:57,240 ja sitten se alkaa, ja se on joukko JPEG-tiedostoja. 462 00:38:57,240 --> 00:39:03,430 Kuitenkin olemme ojensi kortin jossa olemme poistanut valokuvia; 463 00:39:03,430 --> 00:39:08,300 olennaisesti, olemme unohtaneet, jossa kuvat sijaitsevat kortin. 464 00:39:08,300 --> 00:39:12,770 Joten meidän tehtävä Recover on käydä läpi tämän kortin muodossa 465 00:39:12,770 --> 00:39:16,500 ja löytää nuo kuvat uudelleen. 466 00:39:16,500 --> 00:39:23,990 >> Onneksi rakenne JPEG-tiedostoja ja kortisto on vähän hyötyä. 467 00:39:23,990 --> 00:39:28,850 Se varmasti voinut hieman hankalampaa, jos se ei tässä nimenomaisessa muodossa. 468 00:39:28,850 --> 00:39:40,160 Jokainen JPEG oikeastaan ​​alkaa kaksi mahdollista sekvenssiä, edellä luetellut. 469 00:39:40,160 --> 00:39:42,970 Periaatteessa aina kun on uusi JPEG, 470 00:39:42,970 --> 00:39:52,720 se alkaa joko sekvenssin ffd8 ffe0 tai toinen, ffd8 ffe1. 471 00:39:52,720 --> 00:39:59,530 Toinen hyödyllinen asia tietää, että JPEG tallennetaan vierekkäin. 472 00:39:59,530 --> 00:40:03,380 Joten aina kun yksi JPEG tiedoston lopussa, toinen alkaa. 473 00:40:03,380 --> 00:40:07,070 Joten ei ole minkäänlaista in-arvojen välisen siellä. 474 00:40:07,070 --> 00:40:15,510 Kun osut alkuun JPEG, jos olet jo lukenut JPEG, 475 00:40:15,510 --> 00:40:21,800 tiedät, että olet osuma päähän edellisen ja alusta seuraavaan. 476 00:40:21,800 --> 00:40:25,890 >> Ikään kuin visualisoida tämän, tein kaavamainen. 477 00:40:25,890 --> 00:40:36,910 Toinen asia JPEG on, että voimme lukea niitä sarjoja 512 tavua kerrallaan, 478 00:40:36,910 --> 00:40:39,380 samalla tavoin alusta kortin. 479 00:40:39,380 --> 00:40:43,370 Emme tarvitse tarkistaa jokaista tavu koska se imee. 480 00:40:43,370 --> 00:40:48,200 Joten sen sijaan, mitä voimme tehdä, on oikeastaan ​​vain lukea 512 tavua kerrallaan 481 00:40:48,200 --> 00:40:54,700 ja sitten vaan lähtöselvityksen välillä näiden pikku viipaleita, 482 00:40:54,700 --> 00:40:58,640 voimme vain tarkistaa alussa 512 tavua. 483 00:40:58,640 --> 00:41:02,570 Pohjimmiltaan tässä kuvassa, mitä näet on alussa kortin 484 00:41:02,570 --> 00:41:08,700 sinulla on arvoja, jotka eivät ole oikeastaan ​​merkitystä varsinaisen JPEG itse. 485 00:41:08,700 --> 00:41:15,830 Mutta mitä sitten minulla on tähti osoittaa toinen alkaa sekvenssit JPEG. 486 00:41:15,830 --> 00:41:19,910 Joten kun näet tähti, tiedät, että sinulla on JPEG-tiedosto. 487 00:41:19,910 --> 00:41:25,030 Ja sen jälkeen joka JPEG-tiedosto tulee olemaan joitakin useita 512 tavua 488 00:41:25,030 --> 00:41:27,880 mutta ei välttämättä samoja useita. 489 00:41:27,880 --> 00:41:32,050 Niin että tiedät, että olet osuma toisen JPEG jos osut toinen tähti, 490 00:41:32,050 --> 00:41:39,090 toinen alkaa sekvenssin tavua. 491 00:41:39,090 --> 00:41:43,330 Sitten mitä tässä on sinulla punainen JPEG jatkuu kunnes osut tähti, 492 00:41:43,330 --> 00:41:45,150 joka on merkitty uuden värin. 493 00:41:45,150 --> 00:41:48,510 Jatkat ja sitten lyödä toisen tähden, osut toiseen JPEG, 494 00:41:48,510 --> 00:41:50,590 jatkat aina loppuun asti. 495 00:41:50,590 --> 00:41:53,180 Olette viimeinen kuva täällä, pinkki. 496 00:41:53,180 --> 00:41:58,220 Menet loppuun kunnes osut tiedoston loppuun luonnetta. 497 00:41:58,220 --> 00:42:00,820 Tämä tulee olemaan todella hyödyllinen. 498 00:42:00,820 --> 00:42:03,170 >> Muutaman tärkeimmät takeaways tässä: 499 00:42:03,170 --> 00:42:06,670 Kortisto ei ala JPEG, 500 00:42:06,670 --> 00:42:13,350 mutta kun JPEG alkaa, kaikki JPEG tallennetaan rinnakkain toisiinsa. 501 00:42:17,520 --> 00:42:20,420 >> Jotkut pseudokoodi Palauta. 502 00:42:20,420 --> 00:42:22,570 Ensinnäkin aiomme avata kortisto, 503 00:42:22,570 --> 00:42:27,500 ja että tulee olemaan käyttämällä tiedoston I / O-toimintoja. 504 00:42:27,500 --> 00:42:32,430 Menemme toistaa seuraavat prosessia kunnes olemme saavuttaneet tiedoston loppuun. 505 00:42:32,430 --> 00:42:36,450 Aiomme lukea 512 tavua kerrallaan. 506 00:42:36,450 --> 00:42:39,180 Ja mitä sanoin tässä me aiomme säilytä sitä puskuria, 507 00:42:39,180 --> 00:42:46,230 joten periaatteessa pidä niitä 512 tavua kunnes tiedämme tarkalleen, mitä tehdä niiden kanssa. 508 00:42:46,230 --> 00:42:50,300 Sitten mitä haluamme tehdä, on haluamme onko meillä osuma tähti vai ei. 509 00:42:50,300 --> 00:42:57,960 Jos olemme osuma tähti, jos olemme osui yksi alkaa sekvenssien 510 00:42:57,960 --> 00:42:59,980 tiedämme, että olemme osuma uusi JPEG-tiedosto. 511 00:42:59,980 --> 00:43:08,860 Mitä me haluamme tehdä, on aiomme haluat luoda uuden tiedoston meidän pset4 hakemistossa 512 00:43:08,860 --> 00:43:14,480 tehdä jatkossakin tiedoston. 513 00:43:14,480 --> 00:43:18,220 Mutta myös, jos olemme jo tehneet JPEG ennen, 514 00:43:18,220 --> 00:43:25,620 Sitten haluamme lopettaa kyseisen tiedoston ja työnnä se pset4 kansioon, 515 00:43:25,620 --> 00:43:29,780 jossa meillä on, että tiedosto tallennetaan koska jos emme täsmentää, että olemme päätyneet että JPEG-tiedosto, 516 00:43:29,780 --> 00:43:37,290 sitten me pohjimmiltaan on määrittelemätön määrä. JPEG lopu koskaan. 517 00:43:37,290 --> 00:43:40,840 Joten haluamme varmistaa, että kun olemme lukemista ja JPEG ja kirjallisesti, 518 00:43:40,840 --> 00:43:46,590 Haluamme nimenomaan sulkea että voidakseen avata seuraavaan. 519 00:43:46,590 --> 00:43:48,430 Me haluamme tarkistaa useita asioita. 520 00:43:48,430 --> 00:43:52,880 Haluamme tarkistaa, olemme alussa uuden JPEG meidän puskurilla 521 00:43:52,880 --> 00:43:56,780 ja jos olemme jo löytäneet JPEG ennen 522 00:43:56,780 --> 00:44:03,930 koska se muuttaa prosessia hieman. 523 00:44:03,930 --> 00:44:07,880 Joten sitten kun olet läpi koko matkan ja osut tiedoston loppuun, 524 00:44:07,880 --> 00:44:11,570 niin mitä sinun kannattaa tehdä, on sinun kannattaa sulkea kaikki tiedostot, jotka ovat tällä hetkellä auki. 525 00:44:11,570 --> 00:44:14,100 Se on todennäköisesti viimeinen JPEG-tiedosto, joka sinulla on, 526 00:44:14,100 --> 00:44:18,930 sekä kortisto, että olet ollut tekemisissä. 527 00:44:21,940 --> 00:44:28,670 >> Viimeinen este, että meidän on puututtava, miten todella tehdä JPEG-tiedoston 528 00:44:28,670 --> 00:44:31,950 ja kuinka todella työntää sen kansioon. 529 00:44:33,650 --> 00:44:39,850 PSET edellyttää, että jokainen JPEG että löydät oltava seuraavassa muodossa, 530 00:44:39,850 --> 00:44:43,990 jos sinulla on numero. jpg. 531 00:44:43,990 --> 00:44:50,750 Numero, vaikka se on 0, kutsumme sitä 000.jpg. 532 00:44:50,750 --> 00:44:55,730 Aina kun löytää JPEG oman ohjelman 533 00:44:55,730 --> 00:44:58,040 olet menossa halua nimetä sitä jotta se löytyy. 534 00:44:58,040 --> 00:44:59,700 Mitä tämä tarkoittaa? 535 00:44:59,700 --> 00:45:03,530 Meidän eräänlainen seurata kuinka monta olemme löytäneet 536 00:45:03,530 --> 00:45:08,680 ja mikä määrä kunkin JPEG pitäisi olla. 537 00:45:08,680 --> 00:45:13,800 Täällä aiomme hyödyntää sprintf toiminnon. 538 00:45:13,800 --> 00:45:17,480 Samanlaisia ​​printf, joka juuri sellainen tulostaa arvon ulos terminaalin 539 00:45:17,480 --> 00:45:23,910 sprintf tulostaa tiedoston ulos kansioon. 540 00:45:23,910 --> 00:45:30,870 Ja niin, mitä tämä tekisi, jos minulla olisi sprintf, otsikko, ja sitten merkkijono siellä, 541 00:45:30,870 --> 00:45:36,660 se tulostaa 2.jpg. 542 00:45:36,660 --> 00:45:41,020 Olettaen, että olen kiinni minun tiedostoja oikein, 543 00:45:41,020 --> 00:45:47,210 jotka sisältävät tiedoston, että olen ollut kirjallisesti ulos. 544 00:45:47,210 --> 00:45:50,320 Mutta yksi asia on, että koodi, että olen täällä 545 00:45:50,320 --> 00:45:53,360 ei aivan täytä mitä PSET vaatii. 546 00:45:53,360 --> 00:46:02,410 PSET edellyttää, että toinen JPEG-tiedosto tulee nimetä 002 sijasta 2. 547 00:46:02,410 --> 00:46:09,160 Joten kun tulostaa nimen, niin ehkä sinun kannattaa muuttaa paikkamerkin hieman. 548 00:46:09,160 --> 00:46:18,140 >> Muistaako kukaan kuinka mahdollistavat ylimääräisiä välilyöntejä kun painan jotain? 549 00:46:18,140 --> 00:46:22,530 Joo. >> [Opiskelija] Laitat 3 välillä prosenttia merkin ja 2. >> Joo, täydellinen. 550 00:46:22,530 --> 00:46:25,610 Voit laittaa 3 tässä tapauksessa, koska haluamme tilaa 3. 551 00:46:25,610 --> 00:46:32,590 % 3d luultavasti antaa teille 002.jpg sijasta 2. 552 00:46:32,590 --> 00:46:40,120 Ensimmäinen argumentti osaksi sprintf toiminto on todella char array, 553 00:46:40,120 --> 00:46:42,520 jota aiemmin tiesimme merkkijonoina. 554 00:46:42,520 --> 00:46:50,700 Nämä tahtoa, eräänlainen enemmän kuin väliaikainen varastointi, vain tallentaa tuloksena merkkijono. 555 00:46:50,700 --> 00:46:54,950 Et todellakaan käsitellä tätä, mutta sinun täytyy sisällyttää sitä. 556 00:46:54,950 --> 00:47:00,710 >> Tietäen, että jokainen tiedoston nimi on numero, joka vie kolme merkkiä, 557 00:47:00,710 --> 00:47:06,770 ja sitten. jpg, kuinka kauan pitäisi tämä array olla? 558 00:47:09,070 --> 00:47:14,310 Heitä numero. Kuinka monta merkkiä otsikossa, nimissä? 559 00:47:18,090 --> 00:47:26,320 Joten on 3 hashtags, ajan, jpg. >> [Opiskelija] 7. >> 7. Ei aivan. 560 00:47:26,320 --> 00:47:32,000 Aiomme haluta 8 koska haluamme mahdollistaa null terminaattori samoin. 561 00:47:45,340 --> 00:47:49,730 >> Lopuksi vain vetää ulos prosessi, voit tehdä ja palauttaa, 562 00:47:49,730 --> 00:47:55,420 sinulla on alussa tietoa. 563 00:47:55,420 --> 00:48:02,460 Jatkat kunnes löydät alku JPEG-tiedoston, 564 00:48:02,460 --> 00:48:07,900 ja joka voi olla joko yksi kaksi alkaa sekvenssejä. 565 00:48:07,900 --> 00:48:12,510 Sinun pitää lukea. Jokainen slash täällä edustaa 512 tavua. 566 00:48:12,510 --> 00:48:22,630 Voit pitää käsittelyssä, pitää lukemista kunnes kohtaat toisen käynnistysjakson. 567 00:48:22,630 --> 00:48:29,790 Kun olet että, lopetat nykyisen JPEG - tässä tapauksessa se on punainen, 568 00:48:29,790 --> 00:48:31,030 joten haluat lopettaa sitä. 569 00:48:31,030 --> 00:48:35,540 Haluat sprintf nimen, joka omaan pset4 kansioon, 570 00:48:35,540 --> 00:48:41,580 sitten haluat avata uuden JPEG ja sitten pitää käsittelyssä 571 00:48:41,580 --> 00:48:46,370 kunnes kohtaat seuraavan. 572 00:48:46,370 --> 00:48:49,040 Pidä käsittelyssä pitää käsittelyssä, 573 00:48:49,040 --> 00:48:56,290 ja lopuksi, lopulta, olet menossa päähän tiedoston, 574 00:48:56,290 --> 00:49:00,360 ja niin sinun kannattaa sulkea viimeistä JPEG että käytit, 575 00:49:00,360 --> 00:49:08,380 sprintf että omaan pset4 kansioon, ja sitten katsoa kaikki kuvat, jotka olet saanut. 576 00:49:08,380 --> 00:49:12,050 Nämä kuvat ovat todella kuvat CS50 henkilöstön 577 00:49:12,050 --> 00:49:16,430 joten tämä on silloin bonus hauska osa PSET tulee 578 00:49:16,430 --> 00:49:26,310 on, että olet kilpailevat Osioidesi löytää TF kuvat 579 00:49:26,310 --> 00:49:34,610 ja ottaa kuvia niiden kanssa todistaa, että olet tehnyt PSET 580 00:49:34,610 --> 00:49:37,030 ja niin näet johon toimihenkilöllä on kuvia. 581 00:49:37,030 --> 00:49:41,510 Niin sitten otat kuvia henkilökunnan. Joskus sinun täytyy jahdata niitä alas. 582 00:49:41,510 --> 00:49:44,680 Luultavasti jotkut heistä yrittävät paeta sinua. 583 00:49:44,680 --> 00:49:47,320 Voit ottaa kuvia niistä. 584 00:49:47,320 --> 00:49:51,190 Tämä on jatkuva. Se ei kanneta, jos PSET johtuu. 585 00:49:51,190 --> 00:49:53,340 Määräaika ilmoitetaan spec. 586 00:49:53,340 --> 00:49:58,060 Sitten yhdessä teidän §, kumpi jakso vie eniten kuvat 587 00:49:58,060 --> 00:50:04,430 eniten henkilökunnan jäsenistä voittaa melko mahtava palkinto. 588 00:50:04,430 --> 00:50:08,890 Sellainen kannustin saat pset4 valmiiksi mahdollisimman nopeasti 589 00:50:08,890 --> 00:50:10,820 koska silloin voit saada alas liiketoiminnan 590 00:50:10,820 --> 00:50:14,570 jahtaa kaikkien eri CS50 henkilökunnan jäsentä. 591 00:50:14,570 --> 00:50:17,500 Se ei ole pakollista, vaikka, joten kun saat kuvia, 592 00:50:17,500 --> 00:50:20,310 niin olet valmis pset4. 593 00:50:20,310 --> 00:50:23,970 >> Ja olen valmis esittely 4, joten kiitos kun tulitte. 594 00:50:23,970 --> 00:50:29,330 Onnea Forensics. [Aplodit] 595 00:50:29,330 --> 00:50:31,000 [CS50.TV]