1 00:00:00,000 --> 00:00:00,487 2 00:00:00,487 --> 00:00:11,210 >> [Musiikki soi] 3 00:00:11,210 --> 00:00:12,100 >> ROB BODEN: Selvä. 4 00:00:12,100 --> 00:00:15,620 Joten, ensimmäinen asia ensin, video alkaen tutut kasvot. 5 00:00:15,620 --> 00:00:22,080 6 00:00:22,080 --> 00:00:22,560 >> [VIDEOTOISTOSTA] 7 00:00:22,560 --> 00:00:23,370 >> -Selvä. 8 00:00:23,370 --> 00:00:27,150 Tämä on CS50, ja tämä on alussa viikolla kolme. 9 00:00:27,150 --> 00:00:29,980 Olen pahoillani, etten voinut olla siellä teidän kanssanne tänään, mutta saanen esitellä 10 00:00:29,980 --> 00:00:32,880 CS50 oma Rob Boden. 11 00:00:32,880 --> 00:00:33,872 >> [END VIDEOTOISTOSTA] 12 00:00:33,872 --> 00:00:39,340 >> [APPLAUSE ja kippis] 13 00:00:39,340 --> 00:00:41,277 >> ROB BODEN: filmografia in että video on fantastinen. 14 00:00:41,277 --> 00:00:47,280 15 00:00:47,280 --> 00:00:47,770 Selvä. 16 00:00:47,770 --> 00:00:50,960 Ensin on toinen lounas. 17 00:00:50,960 --> 00:00:52,330 Se on huomenna klo 01:15. 18 00:00:52,330 --> 00:00:54,480 Ei ole lounasta perjantaina. 19 00:00:54,480 --> 00:00:55,810 Se on kanssa Quora. 20 00:00:55,810 --> 00:01:00,190 Tommy ei ole täällä vielä, mutta yksi ihmiset on entinen CF 21 00:01:00,190 --> 00:01:01,530 Tommy McWilliam. 22 00:01:01,530 --> 00:01:02,730 Joten hän on hauska kaveri. 23 00:01:02,730 --> 00:01:04,819 Sinun pitäisi tulla. 24 00:01:04,819 --> 00:01:05,900 >> Selvä. 25 00:01:05,900 --> 00:01:11,360 Joten viime viikolla, aloimme rikkomatta toisistaan mitä merkkijono todella on. 26 00:01:11,360 --> 00:01:14,830 Olemme tienneet alusta lähtien, että se merkkijono. 27 00:01:14,830 --> 00:01:18,130 Mutta viime viikolla eläytyä siihen, että mikä on todella sekvenssi 28 00:01:18,130 --> 00:01:22,110 merkkiä, hyvin, meillä on nyt ryhmät merkkiä. 29 00:01:22,110 --> 00:01:26,450 Ja tiedämme, että merkkijono, se on array merkkejä, aivan lopussa, 30 00:01:26,450 --> 00:01:30,920 meillä on tämä erityinen null tavu, tämä backslash 0, joka ilmaisee pää 31 00:01:30,920 --> 00:01:32,230 merkkijono. 32 00:01:32,230 --> 00:01:36,970 >> Ja niin merkkijono on joukko merkkiä, mutta voimme olla yli 33 00:01:36,970 --> 00:01:39,530 vain erilaisia ​​merkkejä, meillä voi olla erilaisia ​​tahansa 34 00:01:39,530 --> 00:01:40,890 tyyppinen asia haluamme. 35 00:01:40,890 --> 00:01:51,570 Joten, jos muistatte viime viikolla, Aikuisten ohjelma, David käyttöön 36 00:01:51,570 --> 00:01:53,560 todella nopeasti. 37 00:01:53,560 --> 00:01:57,010 Joten ensimmäinen asia aiomme tehdä, on kysyä käyttäjältä kokonaisluku, 38 00:01:57,010 --> 00:01:58,800 joukko ihmisiä huoneeseen. 39 00:01:58,800 --> 00:02:01,260 Kun meillä on tuo kokonaisluku, me julistaa array. 40 00:02:01,260 --> 00:02:02,890 Huomata tämän kiinnike syntaksin. 41 00:02:02,890 --> 00:02:04,540 Olet menossa tottua siihen. 42 00:02:04,540 --> 00:02:09,430 >> Joten olemme julistamalla joukko kokonaislukuja nimeltään ikäisille, ja siellä on n 43 00:02:09,430 --> 00:02:12,080 kokonaislukuja tässä array. 44 00:02:12,080 --> 00:02:16,480 Joten tämä kuvio täällä, tämä 4 int i on 0, i on pienempi kuin n, i plus 45 00:02:16,480 --> 00:02:20,580 plus, joka on myös olemaan malli että saat hyvin tottunut. 46 00:02:20,580 --> 00:02:24,000 Koska se on aika paljon, miten olet aina menossa kerrata yli paneelit. 47 00:02:24,000 --> 00:02:26,330 Niin muista, että n on pituus meidän array. 48 00:02:26,330 --> 00:02:32,120 Ja niin täällä, me pyytävät toistuvasti iän henkilö i huoneessa. 49 00:02:32,120 --> 00:02:36,640 >> Tämän jälkeen menemme alas, ja jostain mielivaltainen syy, me sitten 50 00:02:36,640 --> 00:02:40,220 tulostaa kuinka vanhoja he aikovat olla vuoden päästä. 51 00:02:40,220 --> 00:02:49,980 Ja käynnissä ohjelman, katsotaanpa tehdä ikäisille, piste slash ikäisille. 52 00:02:49,980 --> 00:02:53,010 Joten ihmisten määrä huoneeseen, sanokaamme on kolme. 53 00:02:53,010 --> 00:02:59,880 Ja sanoa, ensimmäinen henkilö on 13, seuraava on 26, ja viimeinen on 30. 54 00:02:59,880 --> 00:03:05,080 Niin sitten se tulee kerrata yli nämä kolme ihmiset, tulostaa 14, 27 ja 31. 55 00:03:05,080 --> 00:03:16,060 >> Muista siis, että kun julistamme taulukon koko n, indeksit että 56 00:03:16,060 --> 00:03:19,950 array, array on arvojen ja indeksit 0, 1, 2, aina 57 00:03:19,950 --> 00:03:21,680 enintään n miinus 1. 58 00:03:21,680 --> 00:03:26,255 Joten kun sanoimme, että kolme ihmistä huoneessa, ja me laittaa tänne 59 00:03:26,255 --> 00:03:29,850 ensimmäistä iterointia kautta silmukka, i tulee olemaan 0. 60 00:03:29,850 --> 00:03:31,650 Joten indeksi 0. 61 00:03:31,650 --> 00:03:34,540 Olemme osoitetaan ensin ikä käyttäjä syöttää. 62 00:03:34,540 --> 00:03:38,870 Sitten seuraava, olemme syöttämällä Toinen n käyttäjä syöttää ja 63 00:03:38,870 --> 00:03:40,580 vieressä kaksi, n viimeksi. 64 00:03:40,580 --> 00:03:44,200 >> Niin huomaa, että taulukon koko kolme ei ole mitään 65 00:03:44,200 --> 00:03:46,040 indeksissä kolme. 66 00:03:46,040 --> 00:03:49,036 Tämä ei ole voimassa. 67 00:03:49,036 --> 00:03:50,250 Selvä. 68 00:03:50,250 --> 00:03:55,136 Joten, menee takaisin tänne. 69 00:03:55,136 --> 00:03:57,650 70 00:03:57,650 --> 00:04:01,590 Joten nyt olemme kohdanneet paneelit, meillä on joitakin tuttuus. 71 00:04:01,590 --> 00:04:03,780 Nyt aiomme siirtyä komento argumentteja, jotka tulevat olemaan 72 00:04:03,780 --> 00:04:05,890 melko vaikutusta tähän ongelmakenttään asettaa. 73 00:04:05,890 --> 00:04:09,670 >> Joten asti, kun olet julisti teidän päätehtävä, olemme 74 00:04:09,670 --> 00:04:11,230 sanoi int main void. 75 00:04:11,230 --> 00:04:14,070 Joten void vain sitä, että emme ohimennen mitään 76 00:04:14,070 --> 00:04:16,440 argumentteja tätä toimintoa. 77 00:04:16,440 --> 00:04:19,190 Nyt aiomme nähdä, että tärkeimmät voi kestää joitakin perusteluja. 78 00:04:19,190 --> 00:04:22,470 Täällä kutsumme heitä int argc ja merkkijono argv suluissa. 79 00:04:22,470 --> 00:04:26,930 Suluissa jälleen kerran osoittaa, että olemme tekemisissä paneelit. 80 00:04:26,930 --> 00:04:31,850 Joten tässä, merkkijono argv suluissa, olemme käsittelevät Merkkijonotaulukko. 81 00:04:31,850 --> 00:04:35,360 Niin argc, että menee ilmoittamaan kuinka monta argumenttia olemme 82 00:04:35,360 --> 00:04:37,580 kulunut tähän ohjelmaan. 83 00:04:37,580 --> 00:04:46,050 Ja nähdä, mitä se tarkoittaa, , hoidetaan tämä. 84 00:04:46,050 --> 00:04:46,490 >> OK. 85 00:04:46,490 --> 00:04:50,790 Joten asti, Teimme kaikki Ohjelma kuten piste slash ikäisille. 86 00:04:50,790 --> 00:04:55,250 Voimme myös komentoriville ohi argumentteja, mikä termi, komento 87 00:04:55,250 --> 00:04:56,550 argumentteja. 88 00:04:56,550 --> 00:04:59,760 Joten ensimmäinen väite, hello world. 89 00:04:59,760 --> 00:05:03,350 Joten tässä, argc olisi kolme. 90 00:05:03,350 --> 00:05:07,720 Se on määrä argumentteja komentoriviltä. 91 00:05:07,720 --> 00:05:12,840 Argc on aina vähintään 1, koska piste slash ikäisille, itse, lasketaan yhdeksi 92 00:05:12,840 --> 00:05:14,490 komentoriviargumentteja. 93 00:05:14,490 --> 00:05:17,010 >> Sitten hei on ensimmäinen. 94 00:05:17,010 --> 00:05:20,460 Jos piste slash ikäisille on zeroth sitten hei on ensimmäinen, ja maailma on 95 00:05:20,460 --> 00:05:22,830 Toinen komentorivillä. 96 00:05:22,830 --> 00:05:29,490 Joten merkkijono argv, aiomme nähdä, sisältää jouset, piste slash 97 00:05:29,490 --> 00:05:33,830 ikäisille, hei, ja maailma. 98 00:05:33,830 --> 00:05:38,945 Ja David pyynnöstä olemme menossa pelata video käyttöön että. 99 00:05:38,945 --> 00:05:42,486 100 00:05:42,486 --> 00:05:43,890 >> [VIDEOTOISTOSTA] 101 00:05:43,890 --> 00:05:46,240 >> -Tähän asti ohjelmissa olemme kirjoitettu, olemme julistaa 102 00:05:46,240 --> 00:05:48,500 Tärkein int main void. 103 00:05:48,500 --> 00:05:51,170 Ja koko tämän ajan, että mitätön on yksinkertaisesti täsmennetään, että 104 00:05:51,170 --> 00:05:54,430 Ohjelma ei ota mitään komentoriviargumentteja. 105 00:05:54,430 --> 00:05:57,750 Toisin sanoen, kun käyttäjä suorittaa ohjelmaa, hän voi antaa komennon 106 00:05:57,750 --> 00:06:01,710 argumentteja kirjoittamalla lisää sanoja tai lauseita jälkeen ohjelman 107 00:06:01,710 --> 00:06:03,000 nimi kehoitteeseenexit. 108 00:06:03,000 --> 00:06:06,550 >> No, jos et haluat ohjelman ottaa komentoriviargumentteja, yksi tai 109 00:06:06,550 --> 00:06:10,540 enemmän sellaisia ​​sanoja, meidän on korvattava mitätöidä pari argumentteja. 110 00:06:10,540 --> 00:06:12,200 Tehdäänpä että. 111 00:06:12,200 --> 00:06:15,750 Sisällytä CS50.h. 112 00:06:15,750 --> 00:06:19,360 Ovat standardin io.h. 113 00:06:19,360 --> 00:06:20,760 Int main. 114 00:06:20,760 --> 00:06:26,330 Ja nyt, sen sijaan mitätön, aion määrittää int nimeltään argc, ja 115 00:06:26,330 --> 00:06:28,780 Merkkijonotaulukko kutsutaan argv. 116 00:06:28,780 --> 00:06:31,820 Nyt argc ja argv ovat yksinkertaisesti yleissopimukset. 117 00:06:31,820 --> 00:06:34,000 >> Olisimme voineet nimeltään nämä väitteet melkein mitä haluamme. 118 00:06:34,000 --> 00:06:37,630 Mutta mikä on tärkeää on, että argc on int koska määritelmän, se on 119 00:06:37,630 --> 00:06:41,360 menossa sisältää väitteen määrä, sanojen määrä yhteensä, että 120 00:06:41,360 --> 00:06:43,380 käyttäjä on kirjoitettuna hänen ajallaan. 121 00:06:43,380 --> 00:06:47,910 argv puolestaan ​​argumentti vektori, on menossa todella array tallentaa 122 00:06:47,910 --> 00:06:52,020 kaikki sanat, jotka käyttäjä on kirjoitettuna hänen ajallaan. 123 00:06:52,020 --> 00:06:54,500 >> Katsotaanpa edetä tehdä jotain nyt jossa on yksi tai useampi näistä 124 00:06:54,500 --> 00:06:55,660 komentoriviargumentteja. 125 00:06:55,660 --> 00:07:00,070 Erityisesti, mennään eteenpäin ja tulosta mitä sana käyttäjätyyppeihin 126 00:07:00,070 --> 00:07:03,960 jälkeen ohjelman nimi kehoitteeseenexit. 127 00:07:03,960 --> 00:07:04,730 Alkusulkumerkki. 128 00:07:04,730 --> 00:07:06,240 Loppusulkumerkki. 129 00:07:06,240 --> 00:07:10,510 Printf prosenttia s kenoviiva ja pilkku. 130 00:07:10,510 --> 00:07:14,550 Ja nyt minun täytyy kertoa printf mitä arvoa liittämisen että paikkamerkkiin. 131 00:07:14,550 --> 00:07:18,600 Haluan ensimmäinen sana, joka käyttäjällä on kirjoitit jälkeen ohjelman nimi, 132 00:07:18,600 --> 00:07:23,130 ja niin aion määritellä argv kiinnike 1, lähellä 133 00:07:23,130 --> 00:07:24,830 suluissa, puolipiste. 134 00:07:24,830 --> 00:07:27,290 >> Nyt, miksi kannatin 1 eikä kiinnike 0? 135 00:07:27,290 --> 00:07:30,990 No, se kääntyy pois, tallennetaan automaattisesti in argv 0 tulee olemaan 136 00:07:30,990 --> 00:07:32,620 Ohjelman varsinainen nimi. 137 00:07:32,620 --> 00:07:36,180 Joten ensimmäinen sana, että käyttäjä tyypit jälkeen ohjelman nimi on, by 138 00:07:36,180 --> 00:07:38,990 yleissopimus, olemaan tallennettu argv 1. 139 00:07:38,990 --> 00:07:42,380 Katsotaanpa nyt koota ja suorita tämä ohjelma. 140 00:07:42,380 --> 00:07:47,780 >> Tee argv 0, dot slash argv 0. 141 00:07:47,780 --> 00:07:50,520 Ja nyt sana kuin hei. 142 00:07:50,520 --> 00:07:51,670 Enter. 143 00:07:51,670 --> 00:07:53,520 Ja siellä meillä on, hei. 144 00:07:53,520 --> 00:07:55,750 >> [END VIDEOTOISTOSTA] 145 00:07:55,750 --> 00:07:57,000 >> ROB BODEN: Selvä. 146 00:07:57,000 --> 00:07:59,380 147 00:07:59,380 --> 00:08:01,230 Sulje tämä. 148 00:08:01,230 --> 00:08:16,730 Joten vilkaisemalla kyseisessä ohjelmassa, jossa me vain esitteli meille hyvin, vain 149 00:08:16,730 --> 00:08:24,710 näyttää, jos me painamme argv 0, tee, nyt mitä se on, argv 0, dot slash argv 0. 150 00:08:24,710 --> 00:08:30,440 Joten, odotetusti, se tulostaa Ohjelman nimi, koska argv 0 on 151 00:08:30,440 --> 00:08:32,970 aina olemaan Ohjelman nimi. 152 00:08:32,970 --> 00:08:35,640 Mutta tehdään jotain hieman mielenkiintoisempaa. 153 00:08:35,640 --> 00:08:42,080 >> Joten ongelma asetettu, voit olla otettu käyttöön tämän toiminnon, atoi. 154 00:08:42,080 --> 00:08:44,440 Joten mitä me käytämme atoi varten? 155 00:08:44,440 --> 00:08:48,550 Se menee muuntaa merkkijono kokonaisluku. 156 00:08:48,550 --> 00:08:53,280 Joten jos kuljen merkkijono, yksi kaksi kolme, to atoi, joka tulee muuntaa että 157 00:08:53,280 --> 00:08:56,910 on kokonaisluku, yksi kaksi kolme. 158 00:08:56,910 --> 00:09:01,480 Menemme siis muuntaa ensin komentorivin argumentti kokonaisluku, 159 00:09:01,480 --> 00:09:05,690 ja sitten vain tulostaa että kokonaisluku. 160 00:09:05,690 --> 00:09:09,680 >> Joten periaatteessa, olemme tavallaan reimplementing getint, vain 161 00:09:09,680 --> 00:09:12,350 kokonaisluku on kirjattu komento linja sijaan ohjelmaan 162 00:09:12,350 --> 00:09:14,560 vuorovaikutteisesti. 163 00:09:14,560 --> 00:09:23,170 Joten sitten, jolloin argv 0, tehdään se tänne, ja sulje se. 164 00:09:23,170 --> 00:09:27,670 Joten käynnissä argv 0, ja lähdetään kirjoita kokonaisluku, yksi kaksi kolme neljä yksi kaksi. 165 00:09:27,670 --> 00:09:30,840 Joten se tulostaa kokonaisluku, yksi kaksi kolme neljä yksi kaksi. 166 00:09:30,840 --> 00:09:35,500 On joitakin hienouksia ja atoi että se tulee lakata huolehtimasta mitään 167 00:09:35,500 --> 00:09:39,040 pidemmälle voimassa numeerinen merkki, mutta se ei haittaa. 168 00:09:39,040 --> 00:09:42,870 >> Joten mitä luulet tapahtuu jos en tee tätä? 169 00:09:42,870 --> 00:09:45,520 170 00:09:45,520 --> 00:09:47,050 Segmentointi vika. 171 00:09:47,050 --> 00:09:50,410 Niin miksi? 172 00:09:50,410 --> 00:09:56,060 Jos katsot takaisin ohjelmaamme, olemme muuntaa argv 1, ensimmäinen argumentti 173 00:09:56,060 --> 00:09:59,610 ohjelman nimen perään, että kokonaisluku. 174 00:09:59,610 --> 00:10:03,350 Mutta ei ole argumentti ohitettiin ohjelman nimen perään. 175 00:10:03,350 --> 00:10:08,060 Joten tässä me näemme, että tämä on buginen ohjelma, koska, jos yritämme käyttää sitä 176 00:10:08,060 --> 00:10:10,530 ilman mitään perusteluja, se vain kaatuu. 177 00:10:10,530 --> 00:10:16,950 >> Joten toinen yhteinen malli näet on jotain, jos argc on vähemmän 178 00:10:16,950 --> 00:10:21,100 kuin kaksi, mikä osoittaa, että ei ollut ainakin ohjelman nimi ja 179 00:10:21,100 --> 00:10:29,100 Ensimmäisen väitteen, niin me teemme jotain kuten printf, ei riitä 180 00:10:29,100 --> 00:10:31,190 komentoriviargumentteja. 181 00:10:31,190 --> 00:10:33,170 Se ei todennäköisesti hyvä tulostaa, se on luultavasti jotain, kuten 182 00:10:33,170 --> 00:10:35,440 kirjoitettava kokonaisluku komentoriviltä. 183 00:10:35,440 --> 00:10:37,450 Otan vain lopettaa se siellä. 184 00:10:37,450 --> 00:10:39,600 Ja palata sitten 1. 185 00:10:39,600 --> 00:10:44,740 Niin muista, että lopussa meidän ohjelma, jos palaamme 0, että sellainen 186 00:10:44,740 --> 00:10:47,060 osoittaa menestystä. 187 00:10:47,060 --> 00:10:50,940 Ja tärkeimmät myös automaattisesti palauttaa 0 jos et. 188 00:10:50,940 --> 00:10:55,800 >> Joten tässä, me retuning 1 osoittamaan että se ei ole menestystä. 189 00:10:55,800 --> 00:11:01,000 Ja voit palauttaa mitä haluat, vain, 0 osoittaa menestystä ja 190 00:11:01,000 --> 00:11:03,390 mitään muuta ilmaisee epäonnistumista. 191 00:11:03,390 --> 00:11:04,855 Joten suorita tämä versio asioista. 192 00:11:04,855 --> 00:11:12,880 193 00:11:12,880 --> 00:11:16,600 Joten nyt, jos emme anna komentoriviltä argumentti, se tulee oikein kertoa 194 00:11:16,600 --> 00:11:18,290 Meille ei riitä komentoriviltä. 195 00:11:18,290 --> 00:11:20,610 Eikö lopettaa lauseen. 196 00:11:20,610 --> 00:11:24,950 Else, jos todella välittää se yksi, se voi suorittaa ohjelman. 197 00:11:24,950 --> 00:11:27,920 Joten tämä on, miten käyttäisit argc vuonna Voidakseen vahvistaa määrä 198 00:11:27,920 --> 00:11:30,630 komentoriviargumentteja että tosiasiallista siirtämistä. 199 00:11:30,630 --> 00:11:39,360 >> Joten tehkäämme tämä ohjelma hieman monimutkainen, ja katsoa toista 200 00:11:39,360 --> 00:11:42,180 iterointia asioita. 201 00:11:42,180 --> 00:11:46,310 Joten nyt, emme vain tulostus Ensimmäinen komentorivillä. 202 00:11:46,310 --> 00:11:51,210 Täällä olemme iteroimalla alkaen int i tasavertaisina 0, i on pienempi kuin argc, i plus 203 00:11:51,210 --> 00:11:55,280 plus, ja tulostus argv, indeksi i. 204 00:11:55,280 --> 00:11:59,300 Joten tämä kuvio, jälleen, tämä on sama mallineuletta kuten aiemmin, lukuun ottamatta sen sijaan 205 00:11:59,300 --> 00:12:02,600 kutsuvan muuttujan n, käytämme argc. 206 00:12:02,600 --> 00:12:09,520 >> Joten tämä on iteroimalla yli kukin indeksi pakassa, ja tulostettavaksi joka 207 00:12:09,520 --> 00:12:11,910 elementti, että jono. 208 00:12:11,910 --> 00:12:20,300 Ja niin, kun otamme tämän ohjelman hyvin, En anna mitään komentoriviltä 209 00:12:20,300 --> 00:12:22,540 argumentteja, niin se vain tulostaa ohjelman nimi. 210 00:12:22,540 --> 00:12:26,053 Jos astun joukko asioita, niin sitten tulostaa yhden, kukin omalla rivillään. 211 00:12:26,053 --> 00:12:31,213 212 00:12:31,213 --> 00:12:32,210 >> OK. 213 00:12:32,210 --> 00:12:34,770 Joten ottakaamme tämä askeleen pidemmälle. 214 00:12:34,770 --> 00:12:38,890 Ja sen sijaan tulostus jokaisen argumentin omalla rivillään, nyt tulostaa jokaisen 215 00:12:38,890 --> 00:12:42,590 että kukin argumentti omalla rivillään. 216 00:12:42,590 --> 00:12:46,700 Niin muista, että argv on Merkkijonotaulukko. 217 00:12:46,700 --> 00:12:50,960 Joten mikä on merkkijono, mutta joukko merkkejä? 218 00:12:50,960 --> 00:12:57,140 Niin se tarkoittaa, että argv on todella joukko erilaisia ​​merkkejä. 219 00:12:57,140 --> 00:13:04,920 Joten hyödyntää, että Katsotaanpa sivuuttaa tätä nyt. 220 00:13:04,920 --> 00:13:08,190 Toivotaan vain harkita merkkijono argv 0. 221 00:13:08,190 --> 00:13:14,170 >> Joten jos haluamme tuoda kukin merkki argv 0 omalla rivillään, sitten haluan 222 00:13:14,170 --> 00:13:19,500 tehdä mallia olemme tottuneet, i on vähemmän kuin pituus array, 223 00:13:19,500 --> 00:13:23,990 joka täällä on strlen on, se on ei mitä haluan tehdä, string 224 00:13:23,990 --> 00:13:26,450 s vastaa argv 0. 225 00:13:26,450 --> 00:13:30,390 Joten i on pienempi kuin pituus meidän array, joka tässä tapauksessa on matriisi 226 00:13:30,390 --> 00:13:34,410 Merkkien, i plus plus. 227 00:13:34,410 --> 00:13:41,040 Ja niin, kuten näimme viime viikolla, se on ihanteellinen Jos me siirrymme että strlen ulkopuolella 228 00:13:41,040 --> 00:13:45,210 kunnossa, sillä n lisäämme strlen s kerta menemme 229 00:13:45,210 --> 00:13:47,720 silmukan läpi, ja se on aio olla muuttumassa. 230 00:13:47,720 --> 00:13:50,230 Joten me asettaa se suuruudeltaan n tänne. 231 00:13:50,230 --> 00:13:54,260 232 00:13:54,260 --> 00:13:55,170 >> OK. 233 00:13:55,170 --> 00:14:01,320 Joten nyt olemme iteroimalla yli kukin indeksi array. 234 00:14:01,320 --> 00:14:05,630 Ja niin, jos haluamme tulostaa jokaisen merkki, että jono, prosenttia c on 235 00:14:05,630 --> 00:14:06,880 lipun haluamme käyttää merkeille. 236 00:14:06,880 --> 00:14:10,750 237 00:14:10,750 --> 00:14:19,770 Ja nyt kiinnike i tulee olemaan string, indeksi merkki i, joten jos 238 00:14:19,770 --> 00:14:20,970 string olivat hei. 239 00:14:20,970 --> 00:14:27,530 Sitten s 0 tulee olemaan h, s kiinnike 1 on e, ja niin edelleen. 240 00:14:27,530 --> 00:14:30,800 >> Joten nyt haluamme yhdistää nämä kaksi asiaa. 241 00:14:30,800 --> 00:14:35,440 Haluamme tulostaa kunkin merkin Kunkin komentorivillä. 242 00:14:35,440 --> 00:14:38,950 Joten aiomme olla sisäkkäisiä silmukka. 243 00:14:38,950 --> 00:14:47,480 Ja tavanomaisesti, ensimmäisen laskurin on i, seuraava tulee olemaan j, n 244 00:14:47,480 --> 00:14:54,450 on strlen ja argv i, i on pienempi kuin n, i plus plus. 245 00:14:54,450 --> 00:14:59,150 246 00:14:59,150 --> 00:15:06,870 Ja nyt sen sijaan tulostus argv i, joten argv kiinnike i on menossa index - 247 00:15:06,870 --> 00:15:14,280 että tulee olemaan i. komentoriviltä argumentti, argv i, j on menossa 248 00:15:14,280 --> 00:15:16,925 olla nnen luonne i. argumentti. 249 00:15:16,925 --> 00:15:20,580 250 00:15:20,580 --> 00:15:24,810 Minä päästä eroon tästä täällä nyt koska voimme toteuttaa sitä, että silmukka. 251 00:15:24,810 --> 00:15:33,900 Joten vastaa merkkijono vertaisuuden argv i, ja sitten s kiinnike j. 252 00:15:33,900 --> 00:15:36,980 >> No, meidän ei tarvitse julistaa tämä muuttuja s. 253 00:15:36,980 --> 00:15:44,530 Sen sijaan meidän täytyy vain yhdistää nämä kaksi, mitä meillä oli, ARGV i, j. 254 00:15:44,530 --> 00:15:45,780 >> SPEAKER 1: [kuultavissa]. 255 00:15:45,780 --> 00:15:48,850 256 00:15:48,850 --> 00:15:49,680 >> ROB BODEN: Hyvä veto. 257 00:15:49,680 --> 00:15:52,936 Joten tämä on rikki. 258 00:15:52,936 --> 00:15:55,510 Jos minä itse juoksi sitä, olisimme ovat ymmärtäneet tämän. 259 00:15:55,510 --> 00:16:01,210 Joten laskuri välitän tässä erityisesti 260 00:16:01,210 --> 00:16:05,410 silmukka on j, iteraattoria. 261 00:16:05,410 --> 00:16:08,560 Joten olisit joutunut kysymyksiä, luultavasti päättymättömään silmukkaan, jos me 262 00:16:08,560 --> 00:16:09,540 ei ollut vahvistanut sitä. 263 00:16:09,540 --> 00:16:12,220 Siksi me myös puhumme noin virheenkorjaus tänään. 264 00:16:12,220 --> 00:16:13,120 >> OK. 265 00:16:13,120 --> 00:16:15,240 Joten suorita tämä ohjelma. 266 00:16:15,240 --> 00:16:21,200 Ja lähdetään itse lisätä erillinen printf täällä joka vain tulostaa 267 00:16:21,200 --> 00:16:27,480 toinen viiva, koska tämä tarkoittaa, kun me suorita ohjelma, siellä tulee olla tyhjä 268 00:16:27,480 --> 00:16:31,830 linjassa niiden välillä kukin merkki Kunkin komentorivillä. 269 00:16:31,830 --> 00:16:33,448 No, katsotaan mitä se tarkoittaa. 270 00:16:33,448 --> 00:16:37,310 271 00:16:37,310 --> 00:16:37,790 Oop. 272 00:16:37,790 --> 00:16:39,870 Sai joitakin bug. 273 00:16:39,870 --> 00:16:42,860 Virhe epäsuorasti julistamisesta kirjaston funktion strlen. 274 00:16:42,860 --> 00:16:51,630 >> Niin menee takaisin ohjelmaamme, I Unohdin hash kuuluu string.h. 275 00:16:51,630 --> 00:16:54,240 276 00:16:54,240 --> 00:16:57,730 Joten string.h tulee olemaan header-tiedosto, joka ilmoittaa 277 00:16:57,730 --> 00:16:58,980 toiminto strlen. 278 00:16:58,980 --> 00:17:04,650 279 00:17:04,650 --> 00:17:06,060 OK, se kokoaa. 280 00:17:06,060 --> 00:17:09,109 Nyt, suorita se. 281 00:17:09,109 --> 00:17:10,930 Niin juuri näin. 282 00:17:10,930 --> 00:17:17,790 Se tulee tulostaa meidän ohjelman nimi, hello world. 283 00:17:17,790 --> 00:17:23,510 Se tulee tulostaa jokaisen asia, jokainen merkki, omalla rivillään. 284 00:17:23,510 --> 00:17:24,540 OK. 285 00:17:24,540 --> 00:17:30,625 >> Joten todella ottaa tämän askeleen pidemmälle. 286 00:17:30,625 --> 00:17:34,050 287 00:17:34,050 --> 00:17:39,700 Ja sen sijaan käyttää string.h, katsotaanpa miettiä, miten olisimme toteuttaa omia 288 00:17:39,700 --> 00:17:41,420 strlen toiminto. 289 00:17:41,420 --> 00:17:45,600 Niin minä annan heti toiminto allekirjoitus. 290 00:17:45,600 --> 00:17:52,900 Joten soittaa my_strlen, ja se on vie narua argumentti, 291 00:17:52,900 --> 00:17:57,220 ja odotamme palata pituus merkkijonon. 292 00:17:57,220 --> 00:18:03,430 Joten, jos hän on? 293 00:18:03,430 --> 00:18:04,990 Kyllä. 294 00:18:04,990 --> 00:18:06,740 OK. 295 00:18:06,740 --> 00:18:12,900 Muista siis aikaisemmasta dian oli myös viime viikolla, että 296 00:18:12,900 --> 00:18:18,890 joukko hahmoja, hyvin, merkkijono, joten haluan sanoa, tämä on meidän merkkijono s. 297 00:18:18,890 --> 00:18:29,870 Joten jos s on merkkijono, hei sitten, H-E-L-L-O, muisti, että menee 298 00:18:29,870 --> 00:18:35,610 olla, ja sitten tämä kenoviiva 0 luonnetta. 299 00:18:35,610 --> 00:18:39,170 >> Joten miten saamme pituus s? 300 00:18:39,170 --> 00:18:43,190 No, temppu etsii tätä välyksetön 0 luonnetta, tämä null 301 00:18:43,190 --> 00:18:44,380 terminaattori. 302 00:18:44,380 --> 00:18:50,270 Niin algoritmi on menossa olla jotain muutaman 303 00:18:50,270 --> 00:18:51,510 tarpeeksi merkkejä - 304 00:18:51,510 --> 00:18:56,180 Katsotaan tämän käden edustavat noin laskuri, kutsukaamme tätä int pituus. 305 00:18:56,180 --> 00:19:00,060 Joten, alkaen tänne, olemme menossa kerrata yli meidän merkkijono. 306 00:19:00,060 --> 00:19:04,100 >> Joten ensimmäinen merkki, se on H, ja se ei ole kenoviivan 0, joten 307 00:19:04,100 --> 00:19:05,170 pituus on 1. 308 00:19:05,170 --> 00:19:08,050 Kerrata seuraavan merkin, E, ja se ei ole kenoviiva 0. 309 00:19:08,050 --> 00:19:09,630 Pituus on 2. 310 00:19:09,630 --> 00:19:10,960 L, 3. 311 00:19:10,960 --> 00:19:11,850 L, 4. 312 00:19:11,850 --> 00:19:13,050 O, 5. 313 00:19:13,050 --> 00:19:16,690 Ja lopuksi, pääsemme kenoviiva 0, ja niin se tarkoittaa, no, 314 00:19:16,690 --> 00:19:17,780 Tämä merkkijono on ohi. 315 00:19:17,780 --> 00:19:20,130 Joten palata 5. 316 00:19:20,130 --> 00:19:33,630 >> Niin todellisessa täytäntöönpanossa ensinnäkin, minun n pituus on 0, minun oikea käteni. 317 00:19:33,630 --> 00:19:36,088 Ja aiomme kerrata - 318 00:19:36,088 --> 00:19:38,000 >> SPEAKER 1: [kuultavissa] 319 00:19:38,000 --> 00:19:38,640 >> ROB BODEN: Hitto. 320 00:19:38,640 --> 00:19:39,870 Hyvä soittaa. 321 00:19:39,870 --> 00:19:42,680 Puomi. 322 00:19:42,680 --> 00:19:44,140 Joten n pituus vastaa 0. 323 00:19:44,140 --> 00:19:46,910 324 00:19:46,910 --> 00:19:58,310 Joten nyt, kun s pituus ei yhtä ja sitten kenoviiva 0. 325 00:19:58,310 --> 00:20:04,660 Joten muistakaa, tämä kenoviiva 0, se on todellinen luonne, ja se osoittaa 326 00:20:04,660 --> 00:20:05,820 merkkijonon loppuun. 327 00:20:05,820 --> 00:20:09,850 Aivan kuten, myös, kenoviiva n on todellinen luonne. 328 00:20:09,850 --> 00:20:14,040 Backslash 0 tulee osoittamaan Lopussa meidän merkkijonon. 329 00:20:14,040 --> 00:20:15,414 En halua laittaa, että siellä. 330 00:20:15,414 --> 00:20:19,190 331 00:20:19,190 --> 00:20:25,620 Ja vaikka s indeksoitu pituus ei ole on yhtä suuri kuin nolla-terminaattorin, sitten 332 00:20:25,620 --> 00:20:27,130 olemme juuri menossa kasvattaa pituutta. 333 00:20:27,130 --> 00:20:29,860 334 00:20:29,860 --> 00:20:34,880 Joten sitten, lopussa meidän ohjelma, pituus on lopulta menossa 335 00:20:34,880 --> 00:20:37,610 olla 5 tässä tapauksessa. 336 00:20:37,610 --> 00:20:39,210 Ja me vain palata pituus. 337 00:20:39,210 --> 00:20:42,570 338 00:20:42,570 --> 00:20:43,530 >> OK. 339 00:20:43,530 --> 00:20:48,290 Joten nyt tänne, en do my_strlen. 340 00:20:48,290 --> 00:20:50,700 Katsotaanpa kääntää sen varmista kaikki sujuu hyvin. 341 00:20:50,700 --> 00:20:55,820 342 00:20:55,820 --> 00:20:58,210 On onnistun 2? 343 00:20:58,210 --> 00:21:00,565 Vai oliko se 1? 344 00:21:00,565 --> 00:21:01,940 Että pitäisi tehdä. 345 00:21:01,940 --> 00:21:02,690 Selvä. 346 00:21:02,690 --> 00:21:08,490 Joten tämä on argv 2. 347 00:21:08,490 --> 00:21:11,585 Toimii ennakoidusti, joskin oli se, että yksi tein sen? 348 00:21:11,585 --> 00:21:15,060 349 00:21:15,060 --> 00:21:15,550 Kyllä. 350 00:21:15,550 --> 00:21:16,760 OK. 351 00:21:16,760 --> 00:21:21,820 Tämä versio asioista ei ole printf uudelle viivalle, mutta se 352 00:21:21,820 --> 00:21:22,910 ei tee mitään eroa. 353 00:21:22,910 --> 00:21:23,300 OK. 354 00:21:23,300 --> 00:21:25,780 Joten toimi odotetusti. 355 00:21:25,780 --> 00:21:34,750 >> Nyt voimme jopa yhdistää tämän askeleen Lisäksi, jos ilmoitusta täällä, hyvin, 356 00:21:34,750 --> 00:21:38,920 Ensimmäinen, olemme tarttumalla strlen of argv i, ja sitten olemme iteroimalla yli 357 00:21:38,920 --> 00:21:41,450 kunkin merkin merkkijonon. 358 00:21:41,450 --> 00:21:47,480 Joten sen sijaan tehdä, että mitä jos me vain yhdistää tätä logiikkaa odottaa 359 00:21:47,480 --> 00:21:50,740 kunnes osuimme kenoviiva 0 oikea tähän silmukka? 360 00:21:50,740 --> 00:21:53,740 361 00:21:53,740 --> 00:22:07,490 Joten kerrata taas argv i, j ei ei yhtä kenoviiva 0. 362 00:22:07,490 --> 00:22:10,680 Joten käyttää sitä ensin. 363 00:22:10,680 --> 00:22:19,838 364 00:22:19,838 --> 00:22:21,180 >> Selvä. 365 00:22:21,180 --> 00:22:27,655 Joten tässä, tämä ehto sanoo - 366 00:22:27,655 --> 00:22:38,090 367 00:22:38,090 --> 00:22:40,060 Katsotaanpa selvää, että. 368 00:22:40,060 --> 00:22:49,140 Joten nyt, olkoon tämä meidän argv. 369 00:22:49,140 --> 00:22:55,290 Joten kun minä vain juoksin että ohjelma ennen, argv on Merkkijonotaulukko. 370 00:22:55,290 --> 00:23:03,100 Ja niin, jos en suorita sitä dot slash argv 2, hello world, sitten argv 371 00:23:03,100 --> 00:23:07,650 itse on pituus 3, ja argv nolla, hei, ja maailma. 372 00:23:07,650 --> 00:23:11,700 373 00:23:11,700 --> 00:23:19,660 >> Ja jokaisen sisällä näiden indeksien on, itse array, jos tämä tulee olemaan 374 00:23:19,660 --> 00:23:23,780 dot, tämä on slash, en tiedä jos se oli oikeaan suuntaan, I 375 00:23:23,780 --> 00:23:25,680 usko, että se oli. 376 00:23:25,680 --> 00:23:30,110 -R-V ajatusviiva, tarvitsevat enemmän tilaa. 377 00:23:30,110 --> 00:23:32,570 Leikataan tähän array. 378 00:23:32,570 --> 00:23:38,230 -R-V viiva 0, ja sitten kenoviiva 0. 379 00:23:38,230 --> 00:23:43,160 Ja sitten sekasorrossa on hei. 380 00:23:43,160 --> 00:23:45,910 Sanotaan, H-E kenoviiva 0. 381 00:23:45,910 --> 00:23:51,130 Ja lopuksi, W-O kenoviiva 0. 382 00:23:51,130 --> 00:23:59,730 >> Niin algoritmi, että me vain kirjoitti, sisäkkäisiä silmukoita, mitä he 383 00:23:59,730 --> 00:24:07,321 tekemässä on, meidän on ensin counter i ja sitten j. 384 00:24:07,321 --> 00:24:15,206 Tämä olisi helpompaa koodi näyttö, Mennään takaisin tähän. 385 00:24:15,206 --> 00:24:17,476 OK. 386 00:24:17,476 --> 00:24:24,600 Niin huomaa, että i on iteraattori joka on iteroimalla yli jokaisen komennon 387 00:24:24,600 --> 00:24:25,610 argumentti. 388 00:24:25,610 --> 00:24:28,870 Ja j on iteraattoria iteroimalla yli kunkin merkin, että 389 00:24:28,870 --> 00:24:30,410 komentorivillä. 390 00:24:30,410 --> 00:24:46,755 Joten mitä tämä sisin printf tekee on, olemme printf argv 0 0, printf 391 00:24:46,755 --> 00:24:58,680 argv 0 1, printf argv 0 2, 0 3, 0 4, 0 5, 0 6, mutta nyt argv 0 7 on menossa 392 00:24:58,680 --> 00:25:00,670 yhtä kenoviiva 0. 393 00:25:00,670 --> 00:25:05,730 >> Niin sitten me poistua että silmukka, ja nyt olen iteroi 1. 394 00:25:05,730 --> 00:25:10,910 Ja nyt me aiomme tulosta argv 1 0, argv 1 1 - 395 00:25:10,910 --> 00:25:17,040 No, nyt, koska leikkasin hei lyhyt, argv 1 2 jälleen olemaan 396 00:25:17,040 --> 00:25:18,170 kenoviiva 0. 397 00:25:18,170 --> 00:25:25,050 Ja niin, lisäys i ja jatkaa, ja niin edelleen, kunnes me tulostaa kaikki 398 00:25:25,050 --> 00:25:28,580 maailman, ja ne ovat kolme komentoriviltä argumentteja, ja me poistumiseen 399 00:25:28,580 --> 00:25:31,670 syrjäisimpien silmukka, ja loppuun ohjelmaamme. 400 00:25:31,670 --> 00:25:38,390 401 00:25:38,390 --> 00:25:39,640 OK. 402 00:25:39,640 --> 00:25:43,903 403 00:25:43,903 --> 00:25:46,795 >> Joten tulkaa takaisin. 404 00:25:46,795 --> 00:25:49,670 405 00:25:49,670 --> 00:25:52,370 Joten voit saada joitakin perehtyneisyyttä komentoriviargumentteja tästä 406 00:25:52,370 --> 00:25:54,460 Erityisenä ongelmana asetettu. 407 00:25:54,460 --> 00:25:56,630 >> Nyt, virheenkorjaus. 408 00:25:56,630 --> 00:26:01,680 Niin olet todennäköisesti jo joutunut tekemään jotkut testaajat aikaisempia 409 00:26:01,680 --> 00:26:03,120 Harjoitus. 410 00:26:03,120 --> 00:26:08,420 Ja yksi erittäin helppo tapa virheenkorjaus, ensimmäinen, katsotaanpa buginen ohjelma. 411 00:26:08,420 --> 00:26:20,710 412 00:26:20,710 --> 00:26:23,830 No, kävely läpi tämän ohjelman aiomme kysyä käyttäjältä 413 00:26:23,830 --> 00:26:29,350 kokonaisluku, napata että kokonaisluku, ja sitten, mielivaltaisesti, meillä on taas silmukka, joka 414 00:26:29,350 --> 00:26:32,280 on juuri menossa dekrementoidaan i kunnes se on yhtä suuri kuin 10. 415 00:26:32,280 --> 00:26:35,820 Katsotaanpa vain olettaa Olen kirjoittamalla kokonaisluku suurempi kuin 10. 416 00:26:35,820 --> 00:26:38,700 Joten dekrementoidaan i kunnes se on yhtä suuri kuin 10. 417 00:26:38,700 --> 00:26:42,630 >> Ja sitten meillä on toinen kun silmukka että vaikka minulla ei ole 0, olemme 418 00:26:42,630 --> 00:26:44,540 menossa dekrementoidaan I 3. 419 00:26:44,540 --> 00:26:49,790 Joten jos näet tarkoitus bug täällä, se on, että tämä tulee dekrementoidaan I 420 00:26:49,790 --> 00:26:57,010 olla 10, ja sitten tämä, kun silmukka vähenemä i 10, 7, 4, 1, 421 00:26:57,010 --> 00:27:02,880 negatiiviseksi 2, negatiiviseen 5, ja niin edelleen, negatiiviseksi ääretön, koska aion 422 00:27:02,880 --> 00:27:05,920 oikeastaan ​​koskaan 0. 423 00:27:05,920 --> 00:27:08,610 Ja sitten lopussa tämän ohjelman meillä foo toiminto, joka on 424 00:27:08,610 --> 00:27:12,130 meneillään tulostaa että olen. 425 00:27:12,130 --> 00:27:16,520 >> Joten tämä on lyhyt ja triviaali ohjelma, ja vika on ilmeinen, 426 00:27:16,520 --> 00:27:18,790 varsinkin kun olen juuri sanoi mitä bug oli. 427 00:27:18,790 --> 00:27:24,840 Mutta tarkoitus tässä, hyvin, tämä voisi todella näyttää joku 428 00:27:24,840 --> 00:27:30,040 ratkaisuja ahne viimeisestä Harjoitus, ja ehkä et ole 429 00:27:30,040 --> 00:27:32,800 Joissakin päättymättömään silmukkaan oman ohjelman, ja sinulla ei ole aavistustakaan 430 00:27:32,800 --> 00:27:34,100 mikä aiheuttaa sen. 431 00:27:34,100 --> 00:27:38,690 Joten erittäin hyödyllinen virheenkorjaus tekniikka on vain lisätä printfs 432 00:27:38,690 --> 00:27:40,180 koko koodi. 433 00:27:40,180 --> 00:27:49,200 >> Joten tässä haluan printf ulkopuolella Ensimmäinen kun silmukka. 434 00:27:49,200 --> 00:27:53,155 Ja tässä haluan printf, ja minä vain tulostaa i. 435 00:27:53,155 --> 00:27:55,670 436 00:27:55,670 --> 00:27:58,330 Minä jopa tehdä ensin while-silmukka, i. 437 00:27:58,330 --> 00:28:05,130 438 00:28:05,130 --> 00:28:09,040 Ulkopuolella, toinen taas silmukka. 439 00:28:09,040 --> 00:28:12,170 Jälleen kerran, tulosta sisällä täältä arvo i. 440 00:28:12,170 --> 00:28:16,270 441 00:28:16,270 --> 00:28:17,520 Ja juostaan ​​tätä. 442 00:28:17,520 --> 00:28:22,620 443 00:28:22,620 --> 00:28:24,800 >> Joten dot slash debug. 444 00:28:24,800 --> 00:28:25,610 Anna kokonaisluku. 445 00:28:25,610 --> 00:28:28,150 Tehdään 13. 446 00:28:28,150 --> 00:28:28,760 Ja puomi. 447 00:28:28,760 --> 00:28:33,300 Näemme, että olemme äärettömän silmukoiminen sisällä toisen while-silmukka. 448 00:28:33,300 --> 00:28:36,305 Joten nyt me tiedämme, mitä vika on. 449 00:28:36,305 --> 00:28:39,610 450 00:28:39,610 --> 00:28:45,610 Mutta printf virheenkorjaus on täysin suuri, mutta kun ohjelmat saavat 451 00:28:45,610 --> 00:28:50,560 pidempi ja monimutkaisempi, on kehittyneempiä ratkaisuja 452 00:28:50,560 --> 00:28:51,705 saada homma. 453 00:28:51,705 --> 00:28:52,955 Joten poistaa kaikki nämä printfs. 454 00:28:52,955 --> 00:29:06,242 455 00:29:06,242 --> 00:29:08,896 Ja varmistetaan että en riko mitään. 456 00:29:08,896 --> 00:29:09,850 OK. 457 00:29:09,850 --> 00:29:14,180 >> Joten ohjelma aiomme esitellä kutsutaan 458 00:29:14,180 --> 00:29:16,715 GDB, GNU Debugger. 459 00:29:16,715 --> 00:29:21,892 460 00:29:21,892 --> 00:29:27,510 No, itse asiassa, nyt poistaa debug varten Toinen, ja tehdä debug uudelleen. 461 00:29:27,510 --> 00:29:31,420 462 00:29:31,420 --> 00:29:34,440 No, itse asiassa ensimmäinen, hyvä oppitunti vuonna komentoriviargumentteja. 463 00:29:34,440 --> 00:29:37,780 Huomaa, että tämä kalahtaa komento, joka on koota kaikki on ohi 464 00:29:37,780 --> 00:29:41,300 komentoriville, nämä komentoriviargumentteja. 465 00:29:41,300 --> 00:29:46,250 Joten kuinka aiot käyttää komentoriviargumentteja, kuten me 466 00:29:46,250 --> 00:29:51,500 ennenkin, ja kun tahtoa PSET 2, näin kalahtaa käyttää niitä. 467 00:29:51,500 --> 00:30:00,070 >> Niin huomaa, että tämä ensimmäinen lippu, viiva ggdb3, mitä se on sanoa on, kalahtaa, 468 00:30:00,070 --> 00:30:03,790 sinun pitäisi koota tämän tiedoston tarkoitusta varten, että me lopulta 469 00:30:03,790 --> 00:30:05,380 täytyy debug sitä. 470 00:30:05,380 --> 00:30:13,840 Niin kauan kuin sinulla on, että lippu, Sitten voimme GDB debug. 471 00:30:13,840 --> 00:30:17,380 Ja se tulee avata GNU Debugger. 472 00:30:17,380 --> 00:30:22,920 >> Niin on olemassa paljon komentoja että sinun täytyy tottua. 473 00:30:22,920 --> 00:30:27,100 Ensimmäinen, joka luultavasti heti tarvitsemme Run. 474 00:30:27,100 --> 00:30:28,200 Joten mitä Run aikoo tehdä? 475 00:30:28,200 --> 00:30:30,910 Se tulee aloittaa ohjelmaamme. 476 00:30:30,910 --> 00:30:36,180 Joten ajaa, alkaa ohjelma, ohjelma pyytää meiltä kokonaisluku, 13. 477 00:30:36,180 --> 00:30:39,170 Ja sitten se on ääretön silmukoiminen kuin odotettavissa, paitsi poistin 478 00:30:39,170 --> 00:30:40,500 printfs, joten emme edes huomaa. 479 00:30:40,500 --> 00:30:43,320 480 00:30:43,320 --> 00:30:44,600 Lähtenyt normaalisti. 481 00:30:44,600 --> 00:30:45,850 Oh. 482 00:30:45,850 --> 00:30:48,570 483 00:30:48,570 --> 00:30:53,640 On mahdollista, että se kääritty kaikki päin, takaisin - välittämättä siitä. 484 00:30:53,640 --> 00:30:55,170 Oletetaan se ei poistu normaalisti. 485 00:30:55,170 --> 00:30:59,500 486 00:30:59,500 --> 00:31:03,370 Siellä on monimutkainen vastaus tähän. 487 00:31:03,370 --> 00:31:07,890 >> Joten nyt, että ei ole kovin hyödyllinen. 488 00:31:07,890 --> 00:31:11,480 Joten juuri käynnissä meidän ohjelma sisällä Tämän debuggeri ei auta meitä millään 489 00:31:11,480 --> 00:31:15,610 tavalla, koska olisimme voineet juuri tehneet dot slash debug ulkopuolelta GDB. 490 00:31:15,610 --> 00:31:21,250 Joten yksi komento Luultavasti - 491 00:31:21,250 --> 00:31:22,970 ja lopetan tähän. 492 00:31:22,970 --> 00:31:25,850 Ohjaus-d tai lopettaa, niin työssä. 493 00:31:25,850 --> 00:31:29,550 Joten avaa sen uudelleen. 494 00:31:29,550 --> 00:31:31,130 >> Toinen komento, että luultavasti heti halua 495 00:31:31,130 --> 00:31:33,600 tottua, on murtaa. 496 00:31:33,600 --> 00:31:37,120 Niin me murtaa tärkeimmistä nyt, ja sitten selitän että. 497 00:31:37,120 --> 00:31:41,010 498 00:31:41,010 --> 00:31:46,370 No, tässä näemme asetimme breakpoint Tämän linjan debug.c. 499 00:31:46,370 --> 00:31:50,160 Joten mikä tauko keino on, että kun kirjoita tähtäimellä ohjelma on menossa 500 00:31:50,160 --> 00:31:53,560 jatkaa toimintaansa, kunnes Löin murtuessa. 501 00:31:53,560 --> 00:31:59,390 Joten kun lyön tähtäimellä ohjelma käynnistyy, ja sitten se hajoaa heti, kun se 502 00:31:59,390 --> 00:32:01,940 tulee päätehtävä. 503 00:32:01,940 --> 00:32:06,930 Rikkoa tärkein tulee olemaan jotain olet aika usein tehdä. 504 00:32:06,930 --> 00:32:11,340 >> Ja nyt esitellä teille Joidenkin enemmän komentoja. 505 00:32:11,340 --> 00:32:14,330 Huomaa täällä, että se sanoo me murtui line 11, joka on 506 00:32:14,330 --> 00:32:16,230 printf, syötä kokonaisluku. 507 00:32:16,230 --> 00:32:21,260 Joten komento Seuraava tulee olemaan, miten menemme seuraavan rivin koodia. 508 00:32:21,260 --> 00:32:24,810 Tämä on menossa, jotta voimme astua ohjelmamme kautta rivi riviltä. 509 00:32:24,810 --> 00:32:26,260 Joten seuraavaksi. 510 00:32:26,260 --> 00:32:29,820 >> Nyt linja 12, aiomme saada kokonaisluku. 511 00:32:29,820 --> 00:32:30,450 Seuraava. 512 00:32:30,450 --> 00:32:34,290 Ja jos painaa vain Enter uudelleen, se tulee redo viimeinen asia teit. 513 00:32:34,290 --> 00:32:36,480 Joten en tarvitse kirjoittaa ensi kerta. 514 00:32:36,480 --> 00:32:40,100 Joten anna kokonaisluku, 13. 515 00:32:40,100 --> 00:32:46,940 Joten nyt, linja 14, kun i on suurempi kuin 10, ja minä teen seuraavaksi. 516 00:32:46,940 --> 00:32:48,685 Ja me näemme aiomme dekrementoidaan i. 517 00:32:48,685 --> 00:32:50,210 Menemme siis dekrementoidaan i uudelleen. 518 00:32:50,210 --> 00:32:53,620 >> Joten nyt toinen hyödyllinen komento on Tulosta. 519 00:32:53,620 --> 00:32:55,750 Joten Tulosta tulee tulostaa Muuttujan arvo. 520 00:32:55,750 --> 00:32:57,825 Katsotaanpa tuoda esiin arvo muuttujan i. 521 00:32:57,825 --> 00:32:58,705 Katsotaanpa tulostaa i. 522 00:32:58,705 --> 00:33:00,910 Se aikoo sanoa i on 11. 523 00:33:00,910 --> 00:33:03,330 Nyt Seuraava uudelleen, kun i on suurempi kuin 10. 524 00:33:03,330 --> 00:33:05,590 Joten en vielä suurempi kuin 10, koska se on 11. 525 00:33:05,590 --> 00:33:06,920 i minus minus. 526 00:33:06,920 --> 00:33:08,250 Katsotaanpa tulostaa i uudelleen. 527 00:33:08,250 --> 00:33:10,950 Kuten odotettua, se on 10. 528 00:33:10,950 --> 00:33:12,510 >> Joten nyt seuraavaksi. 529 00:33:12,510 --> 00:33:16,250 Se tulee takaisin kunnossa, i on suurempi kuin 10, mutta i on nyt 10, joten 530 00:33:16,250 --> 00:33:20,040 se ei ole suurempi kuin 10, joten odotamme sen pudota pois kun silmukka. 531 00:33:20,040 --> 00:33:22,220 Ja nyt olemme alle Koodirivin. 532 00:33:22,220 --> 00:33:28,750 Ja toinen komento, List, on juuri menossa näyttää edellisen ja seuraavan 533 00:33:28,750 --> 00:33:31,240 pari riviä koodia, vuonna Jos olet menettänyt itse. 534 00:33:31,240 --> 00:33:35,420 Joten me vain lähtenyt tästä kun silmukka, ja nyt olemme tulleet tähän 535 00:33:35,420 --> 00:33:37,080 while-silmukka, linja 18. 536 00:33:37,080 --> 00:33:39,860 Joten vaikka i = 0, ei. 537 00:33:39,860 --> 00:33:46,570 Ja seuraavaksi, i on yhtä suuri kuin i miinus 3, ja me huomaa, tämä täytyy vain jatkaa eteenpäin. 538 00:33:46,570 --> 00:33:48,270 Ja voimme painaa i. 539 00:33:48,270 --> 00:33:49,990 >> Jokainen komento tavallaan on oikoteitä. 540 00:33:49,990 --> 00:33:51,720 Joten p on lyhyt Tulosta. 541 00:33:51,720 --> 00:33:53,400 Joten voimme p i. 542 00:33:53,400 --> 00:33:57,550 Vain pitää holding n, tai pitää tehdä Next. 543 00:33:57,550 --> 00:33:58,340 Tulosta i uudelleen. 544 00:33:58,340 --> 00:34:00,380 Näet nyt se on negatiivinen 167. 545 00:34:00,380 --> 00:34:06,030 Joten tämä jatkuu loputtomiin, mutta ei todella ikuisesti, koska olet juuri nähnyt, se 546 00:34:06,030 --> 00:34:09,330 todella päättyy jossain vaiheessa. 547 00:34:09,330 --> 00:34:15,699 >> Niin että alkaa GDB. 548 00:34:15,699 --> 00:34:19,504 Mutta katsotaanpa vielä yhden asia GDB. 549 00:34:19,504 --> 00:34:20,754 Uh, debug. 550 00:34:20,754 --> 00:34:23,540 551 00:34:23,540 --> 00:34:28,534 Niin, tässä nimenomaisessa tapauksessa, päättymättömään silmukkaan sattui olemaan sisällä 552 00:34:28,534 --> 00:34:30,050 päätehtävä. 553 00:34:30,050 --> 00:34:35,779 Ja nyt, vain hyväksyä, että olen siirrymme päättymättömään silmukkaan osaksi 554 00:34:35,779 --> 00:34:37,029 foo toiminto. 555 00:34:37,029 --> 00:34:40,679 556 00:34:40,679 --> 00:34:43,730 Vain muistaa, että lopussa tämän ohjelma, no, tämä oli alun perin 557 00:34:43,730 --> 00:34:46,210 kutsuvan foo, joka oli juuri painoon i. 558 00:34:46,210 --> 00:34:51,880 Mutta nyt soitat foo, joka on menossa dekrementoidaan i kunnes se on 0, ja 559 00:34:51,880 --> 00:34:54,548 sitten tulostaa muuttuja. 560 00:34:54,548 --> 00:34:55,469 OK. 561 00:34:55,469 --> 00:34:57,970 Paitsi että. 562 00:34:57,970 --> 00:35:00,175 Make debug. 563 00:35:00,175 --> 00:35:03,310 Ja nyt, gdb debug. 564 00:35:03,310 --> 00:35:04,090 OK. 565 00:35:04,090 --> 00:35:10,580 >> Joten jos olen vain ajaa niin en aio pystyä todella selata minun 566 00:35:10,580 --> 00:35:11,730 ohjelma rivi-line. 567 00:35:11,730 --> 00:35:19,820 Joten tauko tärkein, ja kirjoita sitten ajaa. 568 00:35:19,820 --> 00:35:28,160 Joten mene läpi tämän, printf, kirjoita kokonaisluku, saat kokonaisluku, 13. 569 00:35:28,160 --> 00:35:34,180 570 00:35:34,180 --> 00:35:37,490 Joten aiomme pitää decrementing kunnes i on suurempi kuin 10. 571 00:35:37,490 --> 00:35:42,840 Sitten olemme putoamassa läpi while-silmukka, ja saada linja - 572 00:35:42,840 --> 00:35:44,364 katsotaanpa avaa sen erilliseen ikkunaan. 573 00:35:44,364 --> 00:35:48,720 574 00:35:48,720 --> 00:35:53,300 Joten me pienennetään, kunnes en enää suurempi kuin 10, ja sitten me 575 00:35:53,300 --> 00:35:55,700 nimeltään toiminto, foo. 576 00:35:55,700 --> 00:36:01,340 >> Mitä tapahtui, kun osuin funktio foo, no, minä foo, ja 577 00:36:01,340 --> 00:36:04,030 Sitten en enää ollut määräysvaltaa GDB. 578 00:36:04,030 --> 00:36:10,230 Niin heti kun osuin Seuraava tältä riviltä asioita jatkui kunnes tämä tapahtui, 579 00:36:10,230 --> 00:36:12,400 jossa ohjelma saadessaan - 580 00:36:12,400 --> 00:36:14,450 olettaa sitä ei ollut lopulta. 581 00:36:14,450 --> 00:36:16,390 Näit sen pysähtyä vähän kuitenkin. 582 00:36:16,390 --> 00:36:22,040 Joten miksi olen menettää valvoa Ohjelman tässä vaiheessa? 583 00:36:22,040 --> 00:36:27,540 No, kun kirjoitan seuraavan, joka menee kirjaimellinen seuraava rivi koodia, että 584 00:36:27,540 --> 00:36:28,850 tulee suorittaa. 585 00:36:28,850 --> 00:36:35,950 Niin sen jälkeen linja 21, seuraava rivi koodia joka suorittaa on line 22, 586 00:36:35,950 --> 00:36:38,520 joka on, joka poistuu tärkein. 587 00:36:38,520 --> 00:36:43,810 Joten en halua vain mennä seuraavalle riville koodia. 588 00:36:43,810 --> 00:36:48,170 Haluan mennä toiminto, foo, ja sitten myös selata 589 00:36:48,170 --> 00:36:49,830 nämä riviä koodia. 590 00:36:49,830 --> 00:36:53,726 >> Niin, että meillä on vaihtoehto. 591 00:36:53,726 --> 00:36:56,770 Lopetetaan se uudestaan. 592 00:36:56,770 --> 00:36:58,020 Rikkoa tärkein. 593 00:36:58,020 --> 00:37:00,520 594 00:37:00,520 --> 00:37:06,370 Uh, 1, seuraava, seuraava, 13, seuraava, seuraava, seuraava huolellisesti, 595 00:37:06,370 --> 00:37:09,820 ennen osuimme linja foo. 596 00:37:09,820 --> 00:37:10,520 OK. 597 00:37:10,520 --> 00:37:13,700 >> Joten nyt me olemme linja 21, jossa kutsumme foo. 598 00:37:13,700 --> 00:37:17,100 Emme halua kirjoittaa seuraavaksi, koska tämä vain soittaa toiminto foo, ja 599 00:37:17,100 --> 00:37:18,710 Siirry seuraavalle riville koodia. 600 00:37:18,710 --> 00:37:20,840 Mitä haluamme käyttää on Step. 601 00:37:20,840 --> 00:37:25,690 Joten ei eroa Step ja Seuraava, jos vaihe astuu 602 00:37:25,690 --> 00:37:28,190 toimiakseen, ja Seuraava menee yli-toiminto. 603 00:37:28,190 --> 00:37:32,830 Se vain toteuttaa kokonaisuudessaan toimintaa ja pitää menossa. 604 00:37:32,830 --> 00:37:37,210 >> Joten Step aikoo tuoda meille osaksi toiminto, foo. 605 00:37:37,210 --> 00:37:41,160 Ja me näemme täällä, nyt olemme takaisin tämä taas silmukka, joka on teoriassa 606 00:37:41,160 --> 00:37:44,190 tulee jatkumaan ikuisesti. 607 00:37:44,190 --> 00:37:50,420 Ja jos osut vaiheessa, kun se ei ole edes toiminto soittaa, niin se on 608 00:37:50,420 --> 00:37:51,720 identtinen Seuraava. 609 00:37:51,720 --> 00:37:55,320 Joten se on vain kun olet linja, joka soittaa toiminto Step 610 00:37:55,320 --> 00:37:56,970 aikoo poiketa Seuraava. 611 00:37:56,970 --> 00:37:57,930 Joten Step tuo meidät tänne. 612 00:37:57,930 --> 00:38:02,100 Askel, askel, askel, askel, askel, askel, ja me vain loputon silmukka ikuisesti. 613 00:38:02,100 --> 00:38:06,810 >> Joten saatat tottua sitä oman tapa tunnistaa ääretön silmukoita, on 614 00:38:06,810 --> 00:38:08,960 vain tilalla tämän Enter nähdä, missä jäät jumiin. 615 00:38:08,960 --> 00:38:11,610 616 00:38:11,610 --> 00:38:14,780 On olemassa parempia tapoja tehdä sitä, mutta nyt, että on täysin riittävä. 617 00:38:14,780 --> 00:38:17,967 Ja tyylillisesti, noudattaa Style 50, minun olisi pitänyt tehdä tätä. 618 00:38:17,967 --> 00:38:21,550 619 00:38:21,550 --> 00:38:24,030 OK. 620 00:38:24,030 --> 00:38:28,400 >> Joten viimeisen komennon käyttöön. 621 00:38:28,400 --> 00:38:30,810 No, gdb debug sisään 622 00:38:30,810 --> 00:38:35,580 Joten sen sijaan, rikkomatta kohdallaan, jos en tietää foo toiminto on myös 623 00:38:35,580 --> 00:38:39,230 ongelma, niin voisin olla vain sanoi, tauko foo sijaan. 624 00:38:39,230 --> 00:38:42,310 Sanotaan rikon at sekä pää-foo. 625 00:38:42,310 --> 00:38:45,390 Joten voit asettaa niin monta breakpoints kuin haluat. 626 00:38:45,390 --> 00:38:49,230 Kun kirjoitan aikavälillä, se tulee pysähtyä - 627 00:38:49,230 --> 00:38:52,180 ooh, nyt kääntää, koska Olen muuttanut asioita. 628 00:38:52,180 --> 00:38:55,950 Näet tämän linjan, Varoitus, lähde tiedosto on uudempi kuin suoritettavan. 629 00:38:55,950 --> 00:38:59,680 Niin se tarkoittaa, että olen vain meni täällä ja muutti nämä mukaiseksi Style 630 00:38:59,680 --> 00:39:03,100 50, mutta en uudelleenkääntää ohjelma. 631 00:39:03,100 --> 00:39:04,870 Joten GDB saa minut tietoisia siitä. 632 00:39:04,870 --> 00:39:10,130 Lopetan, tee debug uudelleen, osuma GDB debug. 633 00:39:10,130 --> 00:39:10,700 OK. 634 00:39:10,700 --> 00:39:12,800 >> Joten nyt takaisin siihen, mitä olin tekemässä. 635 00:39:12,800 --> 00:39:15,720 Rikkoa tärkein, break foo. 636 00:39:15,720 --> 00:39:20,680 Nyt jos en suorita ohjelma, joten se on tulee jatkumaan, kunnes osuu 637 00:39:20,680 --> 00:39:21,320 murtuessa. 638 00:39:21,320 --> 00:39:24,680 Että breakpoint sattuu olla ensimmäinen yksi tärkeimmistä. 639 00:39:24,680 --> 00:39:28,630 Nyt sen sijaan tehdä seuraavaksi, seuraavaksi, seuraavaksi, seuraava, seuraava, kunnes osuin foo, I 640 00:39:28,630 --> 00:39:35,230 voi kirjoittaa jatkaa, joka jatkaa kunnes osut seuraavaan murtuessa. 641 00:39:35,230 --> 00:39:37,200 Minun täytyy syöttää kokonaisluvun ensin. 642 00:39:37,200 --> 00:39:40,570 Jatka jatkuu kunnes osuin Seuraavan murtuessa, jonka mukaan 643 00:39:40,570 --> 00:39:43,320 funktio foo. 644 00:39:43,320 --> 00:39:50,130 >> Joten Run jatkuu osut murtuessa, mutta sinulla on vain kirjoitat aikavälillä, kun 645 00:39:50,130 --> 00:39:54,060 olet alkanut ohjelma, ja sitten lähtien, se on edelleen. 646 00:39:54,060 --> 00:40:01,950 Jos tein rikkoa pää-ja sitten juoksi, se tulee tauko 647 00:40:01,950 --> 00:40:03,670 Tärkein, ja jatka sitten. 648 00:40:03,670 --> 00:40:10,050 Koska minulla ei ole taitekohta klo foo, Syötä kokonaisluku, niin nyt olen 649 00:40:10,050 --> 00:40:11,380 aio rikkoa klo foo. 650 00:40:11,380 --> 00:40:16,318 Se on vain olemaan ääretön silmukka kunnes. 651 00:40:16,318 --> 00:40:17,568 OK. 652 00:40:17,568 --> 00:40:19,500 653 00:40:19,500 --> 00:40:24,420 >> Niin, että Intro GDB. 654 00:40:24,420 --> 00:40:27,790 Sinun pitäisi alkaa käyttää sitä teidän ongelma sarjaa. 655 00:40:27,790 --> 00:40:30,550 Se voi olla hyvin hyödyllinen tunnistaa vikoja. 656 00:40:30,550 --> 00:40:35,280 Jos todella vain, rivi riviltä, ​​go läpi koodin, ja vertailla, mitä on 657 00:40:35,280 --> 00:40:39,740 todella tapahtuu, mitä odotat tapahtua, niin se on aika 658 00:40:39,740 --> 00:40:41,060 vaikea kaipaamaan vikoja. 659 00:40:41,060 --> 00:40:45,280 660 00:40:45,280 --> 00:40:46,530 OK. 661 00:40:46,530 --> 00:40:48,310 662 00:40:48,310 --> 00:40:54,040 >> Joten viime viikolla David vienyt tämän salaisen avaimen salausta juttuja 663 00:40:54,040 --> 00:40:59,350 ensimmäistä kertaa, jos emme halua salasanat vain olla tallennetussa 664 00:40:59,350 --> 00:41:03,210 tietokone joissakin tekstitiedosto, jossa joku voi tulla yli ja vain 665 00:41:03,210 --> 00:41:04,660 avaa sen ja lukea niitä. 666 00:41:04,660 --> 00:41:07,530 Ihannetapauksessa, ne salataan jollain tavalla. 667 00:41:07,530 --> 00:41:13,340 Ja Harjoitus 2, voit olla tekemisissä yhden tavan salauksen, 668 00:41:13,340 --> 00:41:16,520 tai, no, kaksi menetelmää, mutta ne eivät ole niin suuria. 669 00:41:16,520 --> 00:41:20,050 Jos et hakkeri painos, olet Lisäksi aiotaan käsitellä 670 00:41:20,050 --> 00:41:22,150 salauksen joitakin asioita. 671 00:41:22,150 --> 00:41:29,770 >> Joten kysymys on nyt hyvin, vaikka meillä on vahvin salaus 672 00:41:29,770 --> 00:41:34,830 algoritmi maailmassa, jos valitset erityisen heikko salasana, niin se 673 00:41:34,830 --> 00:41:37,720 ei auta sinua paljon, koska ihmiset voi silti tajuta se. 674 00:41:37,720 --> 00:41:41,530 Vaikka nähdä salattu merkkijono ja se näyttää sotku roskat 675 00:41:41,530 --> 00:41:44,760 että ei merkitse mitään, jos he silti täytyy vain kokeilla muutamia salasanoja 676 00:41:44,760 --> 00:41:50,560 tajuta se, niin eivät ole kovin turvallinen. 677 00:41:50,560 --> 00:41:55,890 Joten katselet videota, joka tekee tältä osin. 678 00:41:55,890 --> 00:41:59,587 679 00:41:59,587 --> 00:42:00,970 >> [VIDEOTOISTOSTA] 680 00:42:00,970 --> 00:42:02,100 >> -Kypärä, sinun riiviö. 681 00:42:02,100 --> 00:42:03,370 Mitä on tekeillä? 682 00:42:03,370 --> 00:42:05,170 Mitä teet tyttärelleni? 683 00:42:05,170 --> 00:42:09,910 >> -Saanen esitellä loistava nuori plastiikkakirurgi, tohtori Phillip 684 00:42:09,910 --> 00:42:13,730 Schlotkin, suurin nenä työ mies koko 685 00:42:13,730 --> 00:42:16,080 maailmankaikkeus, ja Beverly Hills. 686 00:42:16,080 --> 00:42:17,210 >> -Your Highness. 687 00:42:17,210 --> 00:42:18,070 >> -Nenä työtä? 688 00:42:18,070 --> 00:42:18,670 En ymmärrä. 689 00:42:18,670 --> 00:42:20,090 Hän on jo ollut nenä työtä. 690 00:42:20,090 --> 00:42:21,910 Se oli Sweet Sixteen läsnä. 691 00:42:21,910 --> 00:42:22,140 >> -Ei. 692 00:42:22,140 --> 00:42:23,690 Se ei ole mitä luulet. 693 00:42:23,690 --> 00:42:25,420 Se on paljon, paljon pahempi. 694 00:42:25,420 --> 00:42:30,300 Jos et anna minulle yhdistelmä ilmasuojan, Dr. Schlotkin tulee 695 00:42:30,300 --> 00:42:34,226 anna tyttäresi takaisin hänen vanhan nenä. 696 00:42:34,226 --> 00:42:35,476 >> -Ei. 697 00:42:35,476 --> 00:42:38,712 698 00:42:38,712 --> 00:42:40,516 Mistä sait sen? 699 00:42:40,516 --> 00:42:41,440 >> -Selvä. 700 00:42:41,440 --> 00:42:42,180 Kerron. 701 00:42:42,180 --> 00:42:43,381 Kerron. 702 00:42:43,381 --> 00:42:44,263 Ei, isä. 703 00:42:44,263 --> 00:42:45,590 Ei, et saa. 704 00:42:45,590 --> 00:42:46,860 >> Olet oikeassa, kultaseni. 705 00:42:46,860 --> 00:42:48,450 Tulen kaipaamaan uusi nenä. 706 00:42:48,450 --> 00:42:52,090 Mutta en kerro hänelle yhdistelmä, ei väliä mitä. 707 00:42:52,090 --> 00:42:53,680 >> -Erittäin hyvin. 708 00:42:53,680 --> 00:42:55,685 Dr. Schlotkin, tee pahin. 709 00:42:55,685 --> 00:42:56,914 >> -Mielelläni. 710 00:42:56,914 --> 00:43:00,690 >> [Työkaluja vain teroitettu] 711 00:43:00,690 --> 00:43:01,910 >> -Ei. 712 00:43:01,910 --> 00:43:02,520 Odota. 713 00:43:02,520 --> 00:43:03,836 Odota. 714 00:43:03,836 --> 00:43:05,300 Kerron. 715 00:43:05,300 --> 00:43:06,880 Kerron. 716 00:43:06,880 --> 00:43:09,130 >> -Tiesin, että se toimisi. 717 00:43:09,130 --> 00:43:09,900 Selvä. 718 00:43:09,900 --> 00:43:12,850 Anna se minulle. 719 00:43:12,850 --> 00:43:16,918 >> -Yhdistelmä on yksi. 720 00:43:16,918 --> 00:43:17,406 >> -One. 721 00:43:17,406 --> 00:43:18,382 >> -One. 722 00:43:18,382 --> 00:43:19,358 >> -Kaksi. 723 00:43:19,358 --> 00:43:19,846 >> -Kaksi. 724 00:43:19,846 --> 00:43:20,822 >> -Kaksi. 725 00:43:20,822 --> 00:43:21,310 >> -Kolme. 726 00:43:21,310 --> 00:43:21,798 >> -Kolme. 727 00:43:21,798 --> 00:43:22,774 >> -Kolme. 728 00:43:22,774 --> 00:43:23,262 >> -Neljä. 729 00:43:23,262 --> 00:43:23,750 >> -Neljä. 730 00:43:23,750 --> 00:43:26,150 >> -Neljä. 731 00:43:26,150 --> 00:43:27,010 >> -Viisi. 732 00:43:27,010 --> 00:43:27,670 >> -Viisi. 733 00:43:27,670 --> 00:43:29,010 >> -Viisi. 734 00:43:29,010 --> 00:43:34,770 >> -Joten yhdistelmä on yksi, kaksi, kolme, neljä, viisi. 735 00:43:34,770 --> 00:43:37,460 Se on typerin yhdistelmä Olen koskaan kuullut elämässäni. 736 00:43:37,460 --> 00:43:39,710 Se on sellainen asia idiootti olisi hänen matkatavaroita. 737 00:43:39,710 --> 00:43:42,000 >> -Kiitos, teidän korkeutenne. 738 00:43:42,000 --> 00:43:43,530 >> -Mitä teit? 739 00:43:43,530 --> 00:43:44,490 >> -Käännyin pois seinästä. 740 00:43:44,490 --> 00:43:45,420 >> -Ei et tehnyt. 741 00:43:45,420 --> 00:43:45,840 Olet sammuttanut koko elokuvan. 742 00:43:45,840 --> 00:43:46,930 >> -Minun on painanut väärää nappia. 743 00:43:46,930 --> 00:43:48,265 >> -No, laita se takaisin. 744 00:43:48,265 --> 00:43:49,110 Laittaa elokuva takaisin. 745 00:43:49,110 --> 00:43:49,510 >> -Kyllä, sir. 746 00:43:49,510 --> 00:43:49,917 Kyllä, sir. 747 00:43:49,917 --> 00:43:50,324 >> -Mennään, Arnold. 748 00:43:50,324 --> 00:43:51,140 Tule, Gretchen. 749 00:43:51,140 --> 00:43:53,060 Tietenkin, tiedät olen silti täytyy laskuttaa sinua tästä. 750 00:43:53,060 --> 00:43:53,440 >> [END VIDEOTOISTOSTA] 751 00:43:53,440 --> 00:43:54,690 >> ROB BODEN: Selvä. 752 00:43:54,690 --> 00:43:59,690 753 00:43:59,690 --> 00:44:08,430 Joten nyt, että me puhutaan jo turvallisuus jollain tapaa, nice 754 00:44:08,430 --> 00:44:16,050 pikku elokuvajuliste, joten viime päivää, nämä kysymykset NSA 755 00:44:16,050 --> 00:44:17,300 seurantaa kaiken. 756 00:44:17,300 --> 00:44:21,840 757 00:44:21,840 --> 00:44:26,930 Se voi olla vaikeaa tuntuu et on jonkinlainen yksityisyyden 758 00:44:26,930 --> 00:44:34,540 online-maailma, vaikka en voinut kertoa sinua eniten yksityiskohdista Prism. 759 00:44:34,540 --> 00:44:42,130 Joten siirtymässä Prism, emme aio puhuvan, että nyt 760 00:44:42,130 --> 00:44:44,030 mieti kannettavan tietokoneen. 761 00:44:44,030 --> 00:44:48,360 Joten tänne, haluan vaihtaa minun todellinen tilille, 762 00:44:48,360 --> 00:44:50,370 pikku pingviini. 763 00:44:50,370 --> 00:44:57,310 Joten minulla on salasana asetettu, ja että salasana on mitä haluan sen olevan. 764 00:44:57,310 --> 00:45:02,430 >> Mutta muista, että mitä olen kirjautumisen kanssa, joten tämä login 765 00:45:02,430 --> 00:45:04,850 ajallaan, on jokin ohjelma. 766 00:45:04,850 --> 00:45:07,910 Se on joku ohjelma, joka oli kirjoittanut joitakin henkilö. 767 00:45:07,910 --> 00:45:13,250 Ja niin, että henkilö, jos ne ovat erityisen ilkeä, ne voisivat 768 00:45:13,250 --> 00:45:17,780 ovat sanoneet, kaikki hyvin, joten jos salasana että astun on yhtä kuin minun 769 00:45:17,780 --> 00:45:22,800 Varsinainen salasana tai se on yhtä suuri Joidenkin erityisen salasanan - 770 00:45:22,800 --> 00:45:25,550 David on mahtava tai jotain - 771 00:45:25,550 --> 00:45:27,190 anna heidät sisään 772 00:45:27,190 --> 00:45:33,760 Niin ilkeä ohjelmoija voisi olla pääsy kaikkiin Macit tai 773 00:45:33,760 --> 00:45:36,150 Windows, tai jotain. 774 00:45:36,150 --> 00:45:41,980 >> Niin että ei ole paljon huolta, koska Tarkoitan, tämä on kirjautunut ohjelmaan 775 00:45:41,980 --> 00:45:48,720 joka toimitetaan OS X, satoja tai tuhannet ihmiset ovat 776 00:45:48,720 --> 00:45:50,020 tarkasteli tätä koodia. 777 00:45:50,020 --> 00:45:55,330 Ja niin, jos koodissa jonnekin, sinun sanoa, jos tämä merkkijono vastaa tasavertaisina 778 00:45:55,330 --> 00:45:58,860 David on mahtava, kirjaudu sisään, niin jonkun tulee olemaan, kuten, odota. 779 00:45:58,860 --> 00:45:59,800 Tämä ei ole oikein. 780 00:45:59,800 --> 00:46:01,790 Tämän ei pitäisi olla täällä. 781 00:46:01,790 --> 00:46:06,650 Niin, että yksi tapa saamme asiat olla sellainen turvallinen. 782 00:46:06,650 --> 00:46:10,300 >> Mutta ajattele jopa ohjelmia että kirjoitat. 783 00:46:10,300 --> 00:46:13,000 Sanotaan, että olet kirjoittanut kirjautuminen ohjelmaan. 784 00:46:13,000 --> 00:46:20,440 Joten tämä login ohjelma, jonka kirjoitit, joten ilmeisesti, olet hyvä 785 00:46:20,440 --> 00:46:21,210 ohjelmoija. 786 00:46:21,210 --> 00:46:25,610 Et aio tehdä mitään haittaohjelmia jos x on yhtä vastaa David on mahtava 787 00:46:25,610 --> 00:46:27,860 omaan koodia. 788 00:46:27,860 --> 00:46:31,930 Mutta tämä ohjelma, mitä sinä koostaa tätä ohjelmaa? 789 00:46:31,930 --> 00:46:34,180 Jotain kalahtaa. 790 00:46:34,180 --> 00:46:38,460 Joten mitä jos henkilö, joka sattui kirjoittaa kalahtaa erityistä cased kalahtaa 791 00:46:38,460 --> 00:46:44,310 jotain, jos olen koota kirjaudu ohjelma, kirjoita tämä koodi 792 00:46:44,310 --> 00:46:49,720 osaksi login ohjelma, joka kertoo, jos X vastaa vastaa David on mahtava? 793 00:46:49,720 --> 00:46:59,890 Joten ei ihan vielä, mutta meillä on sama kysymys, jossa kalahtaa, hyvin, 794 00:46:59,890 --> 00:47:03,790 tuhansia, ellei kymmeniä tuhansia ihmiset, ovat tutkineet kalahtaa, on 795 00:47:03,790 --> 00:47:07,160 Katsoin sen riviä koodia ja sanoi: kunnossa, ei mitään pahaa täällä. 796 00:47:07,160 --> 00:47:10,680 Kukaan ei toki tekee mitään tämän ilkeä. 797 00:47:10,680 --> 00:47:15,780 >> Mutta mitä on kalahtaa itse, kuten, mitä jos en koota kalahtaa? 798 00:47:15,780 --> 00:47:20,900 Entä jos minulla on kääntäjä, joka kokoaa Clang, joka lisää osaksi Clang 799 00:47:20,900 --> 00:47:25,610 tämä erityinen hakata joka sanoo, kaikki hyvin, kun minä koota kalahtaa, sitten 800 00:47:25,610 --> 00:47:31,290 suoritettavan Saan pitäisi erityisesti tarkastella sisällä login ohjelman ja insertti 801 00:47:31,290 --> 00:47:34,230 tämä salasana, vastaa tasavertaisina Dave on mahtava? 802 00:47:34,230 --> 00:47:37,990 Niin muista, että kääntäjä itse tarpeen laatia jossain vaiheessa. 803 00:47:37,990 --> 00:47:42,810 Joten jos mitä haluat koota kalahtaa kanssa, itse on ilkeä, niin 804 00:47:42,810 --> 00:47:45,580 voitaisiin kierretään kokonaan tavalla ruodussa. 805 00:47:45,580 --> 00:47:49,630 >> Joten tässä meillä on Ken Thompson ja Dennis Ritchie. 806 00:47:49,630 --> 00:47:53,780 Joten tämä on ikonin kuva. 807 00:47:53,780 --> 00:47:55,470 Dennis Ritchie on oikealla. 808 00:47:55,470 --> 00:47:58,740 Hän on suuri - 809 00:47:58,740 --> 00:48:03,640 melko paljon kirjoitti C. Voit siis kiittää häntä tähän luokkaan. 810 00:48:03,640 --> 00:48:04,840 Ken Thomson on vasemmalla. 811 00:48:04,840 --> 00:48:07,780 Kaksi heistä pohjimmiltaan kirjoitti UNIX. 812 00:48:07,780 --> 00:48:10,140 No, he olivat tärkeimpiä toimijoita UNIX. 813 00:48:10,140 --> 00:48:11,310 Oli joitakin muita. 814 00:48:11,310 --> 00:48:16,240 Joten Ken Thompson, jossain vaiheessa, hän voittaa Turing Award. 815 00:48:16,240 --> 00:48:20,860 Ja Turingin palkinnon, olen aina kuullut se viitattu tällä tavalla, se on 816 00:48:20,860 --> 00:48:23,100 Nobelin tietojenkäsittelytiede. 817 00:48:23,100 --> 00:48:27,500 >> Joten Turing Award, hänen on antaa hän hyväksyy puheessaan. 818 00:48:27,500 --> 00:48:31,790 Ja hän antaa tämän hyvin kuuluisan puheensa nyt nimeltään Mietteitä Luottavainen 819 00:48:31,790 --> 00:48:35,620 Luottamusta, jonka olemme sidoksissa Päälle kurssin verkkosivuilla. 820 00:48:35,620 --> 00:48:41,670 Ja tässä puheenvuorossa, hän sanoo, kaikki hyvin, joten kirjoitin UNIX, ja nyt kaikki 821 00:48:41,670 --> 00:48:43,320 te ihmiset käyttävät UNIX. 822 00:48:43,320 --> 00:48:46,960 Nyt, nyt muistettava, että Linux on suora jälkeläinen UNIX. 823 00:48:46,960 --> 00:48:50,140 OS X: n suoraan käyttää UNIX. 824 00:48:50,140 --> 00:48:53,810 Windows ei niinkään, mutta paljon ideoita otettiin UNIX. 825 00:48:53,810 --> 00:48:59,220 >> Niin hän menee lavalle ja sanoo, okei, minä kirjoitin UNIX. 826 00:48:59,220 --> 00:49:03,940 Ja juuri niin te tiedätte, olen voi kirjautua jokaiseen 827 00:49:03,940 --> 00:49:05,590 ikisen tietokoneissa. 828 00:49:05,590 --> 00:49:14,280 Koska laitoin jotakin näistä erikoistyökaluja, jos x vastaa vastaa Ken Thomson on mahtava, 829 00:49:14,280 --> 00:49:16,350 niin olen voi kirjautua. 830 00:49:16,350 --> 00:49:18,370 Joten ihmiset ovat kuin hyvin, Miten teit sen? 831 00:49:18,370 --> 00:49:21,090 Katselimme login ohjelman ja mikään ei ole siellä. 832 00:49:21,090 --> 00:49:24,700 Hän on kuin, no, minä muutettu kääntäjä kirjautua sisään kirjautuminen ohjelmaan 833 00:49:24,700 --> 00:49:30,490 jotta kirjautuminen ohjelma nyt on että x on yhtä vastaa Ken Thompson 834 00:49:30,490 --> 00:49:31,700 on mahtava. 835 00:49:31,700 --> 00:49:33,120 >> Ja he sanovat, no, se ei ole totta. 836 00:49:33,120 --> 00:49:35,740 Etsimme kääntäjä, ja kääntäjä ei ole riviä 837 00:49:35,740 --> 00:49:36,400 koodia niin. 838 00:49:36,400 --> 00:49:40,540 Hän on kuin, OK, mutta mitä sinä kokoamiseen kääntäjän kanssa? 839 00:49:40,540 --> 00:49:44,810 Ja he ajattelevat, ja hän on, kuten hyvin, Minä olen se, joka antoi sinulle kääntäjä 840 00:49:44,810 --> 00:49:50,580 käytät kääntää kääntäjä, joten olet koota kääntäjä, joka 841 00:49:50,580 --> 00:49:56,390 itsessään on ilkeä, ja tulee rikkoa login ohjelman. 842 00:49:56,390 --> 00:49:59,360 Joten periaatteessa, siinä vaiheessa, siellä on mitenkään voisit katsoa lähde 843 00:49:59,360 --> 00:50:02,450 koodi login ohjelman nähdä, mikä on väärin. 844 00:50:02,450 --> 00:50:04,220 Et voi edes katsoa lähdekoodin kääntäjä 845 00:50:04,220 --> 00:50:06,790 nähdä, mikä on väärin. 846 00:50:06,790 --> 00:50:11,940 >> Sinun täytyy tarkastella koneen koodia, todellinen binary ja 847 00:50:11,940 --> 00:50:16,760 koonnut kääntäjä nähdä, odota, nämä riviä koodia ei pitäisi olla täällä. 848 00:50:16,760 --> 00:50:22,130 Mutta Ken Thompson otti sen askeleen pidemmälle ja sanoi hyvin, on 849 00:50:22,130 --> 00:50:25,980 näitä erityisiä ohjelmia, jotka todella auttaa sinua lukemaan binary ohjelmien, 850 00:50:25,980 --> 00:50:29,340 ja niin jos joku käyttää kyseisen ohjelman lukea binary, he näkisivät nämä 851 00:50:29,340 --> 00:50:30,490 riviä koodia. 852 00:50:30,490 --> 00:50:34,020 Hän muutettu näiden ohjelmien sanoa, kaikki oikea, jos etsit 853 00:50:34,020 --> 00:50:38,460 kääntäjä, älä näytä tätä erityistä asennuspaketit saadaan mahtumaan. 854 00:50:38,460 --> 00:50:42,830 >> Niin sitten sinun täytyy ottaa se askel edelleen ja periaatteessa, joilla voi olla 855 00:50:42,830 --> 00:50:46,210 otettu useita tasoja välillisen, ja jossain vaiheessa, kukaan ei oikeastaan 856 00:50:46,210 --> 00:50:47,990 aiotaan tarkistaa. 857 00:50:47,990 --> 00:50:52,590 Joten Tarinan on, olet aio olla kirjallisesti 858 00:50:52,590 --> 00:50:54,340 Kalahtaa tässä luokassa. 859 00:50:54,340 --> 00:50:57,020 Aiot käyttää kiipeily Kalahtaa paljon tässä luokassa. 860 00:50:57,020 --> 00:51:00,490 Kaikki tiedätte, kalahtaa on ilkeä ohjelma, joka on sabotoi jokainen 861 00:51:00,490 --> 00:51:03,520 yksi ohjelma olet koskaan koottu. 862 00:51:03,520 --> 00:51:08,206 Ja jättää sinut, että hyvin huolestuttavana Huomioithan, nähdään keskiviikkona. 863 00:51:08,206 --> 00:51:10,030 >> [APPLAUSE] 864 00:51:10,030 --> 00:51:12,935 >> SPEAKER 2: Seuraavalla CS50. 865 00:51:12,935 --> 00:51:14,580 >> SPEAKER 3: Etkö uskalla sanoa. 866 00:51:14,580 --> 00:51:15,930 Voit tehdä tämän. 867 00:51:15,930 --> 00:51:19,440 Olet tehnyt tätä ennen, voit tehdä tämän tänään, voit tehdä tämän huomenna. 868 00:51:19,440 --> 00:51:20,930 Olet tehnyt tätä jo vuosia. 869 00:51:20,930 --> 00:51:22,790 Vain mennä sinne ja tehdä tämän. 870 00:51:22,790 --> 00:51:24,310 Voit tehdä tämän. 871 00:51:24,310 --> 00:51:26,102 >> [Musiikki soi]