1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Walkthrough - Ongelma Set 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Harvardin yliopisto] 3 00:00:05,170 --> 00:00:07,490 [Tämä on CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Selvä. Hei, kaikki, ja tervetuloa läpikäynti 2. 5 00:00:10,750 --> 00:00:14,330 Ensinnäkin haluan onnitella teitä viimeistelyyn PSET 1. 6 00:00:14,330 --> 00:00:18,140 Tiedän, että se olisi voinut hieman kova joillekin teistä, 7 00:00:18,140 --> 00:00:20,460 voinut ensimmäinen tietokoneohjelma, kirjoitit, 8 00:00:20,460 --> 00:00:24,500 mutta vain muistaa, että lopussa, kun katsotte taaksepäin lopussa lukukauden, 9 00:00:24,500 --> 00:00:29,820 voit tarkastella PSET 1 ja sanot: "Hei, olen voinut tehdä sen 5 minuutissa." 10 00:00:29,820 --> 00:00:35,700 Niin tietää ja luottaa, että lopussa tämän sinun ehdottomasti löytää PSET 1 melko yksinkertainen. 11 00:00:35,700 --> 00:00:40,640 Mutta nyt se on valtava saavutus, ja onnittelut saada tehdä. 12 00:00:40,640 --> 00:00:44,010 Nyt myös nopeasti huomata ennen kuin pääsemme lihaa läpikäynti. 13 00:00:44,010 --> 00:00:48,340 Haluan vain tehdä nopeasti huomata, että joskus ei ole tarpeeksi aikaa 14 00:00:48,340 --> 00:00:52,500 aikana walkthroughs käydä läpi jokaisen tapa ongelman sarja 15 00:00:52,500 --> 00:00:56,140 ja mieluummin vain ehkä keskittyä 1 tai 2 sellaista toteutuksia, 16 00:00:56,140 --> 00:00:57,750 tapoja, että voisit tehdä tämän. 17 00:00:57,750 --> 00:01:01,970 Mutta se ei tarkoita sitä, että sinun on kielletty tekemästä sitä toisella tavalla. 18 00:01:01,970 --> 00:01:05,980 On usein, kuten tietotekniikassa, lukuisia tapoja tehdä asioita, 19 00:01:05,980 --> 00:01:12,190 ja niin varmasti vapaasti käyttää eri tyyppinen ratkaisu kuin olen voinut esittää. 20 00:01:12,190 --> 00:01:14,520 [PSET 2: Crypto - Zamyla Chan - zamyla@cs50.net] 21 00:01:14,520 --> 00:01:17,160 [Pset2 - 0. § kysymyksiä - 1. Caesar - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 Selvä. Joten ongelma asettaa 2: Crypto on hauska yksi. 23 00:01:20,650 --> 00:01:24,500 Jälleen jokaisen PSET voit aloittaa osa kysymyksistä 24 00:01:24,500 --> 00:01:29,600 että menee toteutetaan Osioidesi teidän määritetty opetuksen stipendiaatti. 25 00:01:29,600 --> 00:01:31,670 Emme mene läpi nämä yli walkthrough, 26 00:01:31,670 --> 00:01:35,100 mutta he varmasti auttavat sinua täyttämään PSET. 27 00:01:35,100 --> 00:01:38,100 Joten ensimmäinen osa ongelmaa joukko on Caesar. 28 00:01:38,100 --> 00:01:43,470 Ja niin Caesar joku välittää sinulle avaimen kokonaisluku, 29 00:01:43,470 --> 00:01:48,420 ja voit salata merkkijonoa, he tarjoavat sinulle 30 00:01:48,420 --> 00:01:50,670 ja antaa heille takaisin salattu asia. 31 00:01:50,670 --> 00:01:56,050 Jos joku katseli Christmas Story, siellä esimerkki, että. 32 00:01:56,050 --> 00:01:59,090 Sitten toinen osa ongelmaa joukko on Vigenere, 33 00:01:59,090 --> 00:02:01,790 joka on kehittyneempi salaustekniikka. 34 00:02:01,790 --> 00:02:05,640 Ja niin me aiomme salakoodaus palan tekstiä, 35 00:02:05,640 --> 00:02:09,600 paitsi sen sijaan vain yksi kokonaisluku, olemme todella menossa koodaamaan sitä 36 00:02:09,600 --> 00:02:13,340 kanssa avainsanan, että käyttäjä antaa meille. 37 00:02:16,270 --> 00:02:22,090 Okei, joten ensimmäinen työkalupaletissa tänään todella aiotaan päivittää laitteen. 38 00:02:22,090 --> 00:02:26,430 On keskustelualueen näkisimme asioita, kuten "Miksi ei tätä työtä?" 39 00:02:26,430 --> 00:02:28,110 "Miksi ei toimita 50 työtä?" 40 00:02:28,110 --> 00:02:31,830 ja usein ratkaisu on oikeastaan ​​vain päivittää laitteen. 41 00:02:31,830 --> 00:02:36,730 Ja niin jos vain ajaa terminaalin ikkunan laitteesi sudo yum-y - 42 00:02:36,730 --> 00:02:40,040 se lippu sanoa kyllä, päivittää kaiken - update, 43 00:02:40,040 --> 00:02:42,280 sitten laitteesi päivittää jos tarvetta on. 44 00:02:42,280 --> 00:02:46,960 Ja se ei satu, jos olet jo viimeisimmässä versiossa laitteen. 45 00:02:46,960 --> 00:02:51,280 Sitten se vain sanoa ei uusia päivityksiä saatavilla ja voit jatkaa työskentelyä pitkin. 46 00:02:51,280 --> 00:02:55,800 Mutta tämä on hyvä toteuttaa edes joka kerta, kun avaat laitteen 47 00:02:55,800 --> 00:02:57,140 koska olemme vielä hyvin paljon - 48 00:02:57,140 --> 00:03:00,320 joskus jos tulemme bug - kiinnittämällä se laitteeseen. 49 00:03:00,320 --> 00:03:03,180 Joten varmista, että sinulla on uusin versio laitteen 50 00:03:03,180 --> 00:03:07,710 ja ajaa se päivittää siellä. 51 00:03:07,710 --> 00:03:14,360 Selvä. Joten koska olemme tekemisissä kirjeitä ja muuttuvat, salakoodausohjelmia asioita, 52 00:03:14,360 --> 00:03:20,410 aiomme todella haluat tulla parhaita ystäviä meidän ASCII kaavio. 53 00:03:20,410 --> 00:03:24,350 On olemassa lukuisia niitä verkossa, jos löydät. Ehkä jopa tehdä omia. 54 00:03:24,350 --> 00:03:29,950 Periaatteessa jokaisen kirjaimen ja jokainen numero ja jokainen merkki 55 00:03:29,950 --> 00:03:32,210 on olemassa useita niihin liittyviä, 56 00:03:32,210 --> 00:03:38,670 ja niin se on hyvä nähdä niiden ASCII arvot rinnalla varsinainen kirjain. 57 00:03:38,670 --> 00:03:42,310 Se varmasti auttaa sinua ongelman asetettu. 58 00:03:42,310 --> 00:03:45,750 Yksi asia, joka todella auttoi minua tämän ongelman setti oli todella tulostaa sen, 59 00:03:45,750 --> 00:03:48,380 ja kun olin menossa läpi, haluaisin todella tehdä sitä, 60 00:03:48,380 --> 00:03:51,150 kirjoittaa, "Jos tämä on mennä sinne, niin ..." 61 00:03:51,150 --> 00:03:55,270 Kind of piirtää sitä ja merkitse se ylös, tulee parhaat ystävät teidän ASCII taulukon. 62 00:03:57,240 --> 00:04:00,750 Sitten meillä on muutamia muita välineitä käytettävissämme. 63 00:04:00,750 --> 00:04:03,750 Tällä kertaa sen sijaan todella kysymättä käyttäjältä kaikkien niiden panos 64 00:04:03,750 --> 00:04:05,230 aiomme tehdä yhdistelmä. 65 00:04:05,230 --> 00:04:06,880 Menemme kysymään niitä joitakin tulon, 66 00:04:06,880 --> 00:04:11,350 mutta olemme myös menossa vain käyttää komentoriviargumentteja. 67 00:04:11,350 --> 00:04:15,600 Joten kun he hoitavat ohjelma, yleensä sanot. / Hei, esimerkiksi 68 00:04:15,600 --> 00:04:17,310 Jos ohjelma oli hello.c. 69 00:04:17,310 --> 00:04:22,500 Mutta tällä kertaa, eikä vain sanoa, että ne voi laittaa sanoja, perusteluja jälkikäteen. 70 00:04:22,500 --> 00:04:27,210 Ja niin me aiomme käyttää mitä he kulkevat sisään meidät heidän kannanottonsa samoin, 71 00:04:27,210 --> 00:04:31,720 joten siirtymässä vain kehotukset kokonaisluku myös komentorivin argumentteja. 72 00:04:31,720 --> 00:04:36,590 Ja sitten me mennä taulukot ja merkkijonot, jotka Käytämme paljon samoin. 73 00:04:41,460 --> 00:04:44,810 Tässä on vain esimerkki 1 mini ASCII kaavio. 74 00:04:44,810 --> 00:04:48,460 Kuten sanoin, jokainen kirjain vastaa numero, 75 00:04:48,460 --> 00:04:52,510 ja niin tutustu siihen. Se on kätevää. 76 00:04:52,510 --> 00:04:55,610 Ja myöhemmin, kun alkaa tehdä joitakin ASCIIMath tekemisissä numerot - 77 00:04:55,610 --> 00:05:00,110 lisäämällä, vähentämällä niistä - niin varmasti hyvä viitata tähän kaavioon. 78 00:05:02,860 --> 00:05:06,920 Joten tässä on esimerkki Caesar cipher - jotain, olet ehkä pelataan. 79 00:05:06,920 --> 00:05:11,190 Se on vain pyörän. Pohjimmiltaan on ulompi aakkoset ja sitten on sisäinen aakkoset. 80 00:05:11,190 --> 00:05:15,290 Joten täällä on esimerkki Caesar cipher mutta avaimen 0. 81 00:05:15,290 --> 00:05:21,540 Pohjimmiltaan on linjassa A, B on linjassa B, aina jopa Z. 82 00:05:21,540 --> 00:05:26,590 Mutta sitten sanoa halusimme avain 3, esimerkiksi. 83 00:05:26,590 --> 00:05:33,280 Silloin olisimme pyörittää sisemmän pyörän niin että nyt osuu D jne. 84 00:05:33,280 --> 00:05:35,250 Ja niin tämä on lähinnä mitä aiomme tehdä. 85 00:05:35,250 --> 00:05:38,340 Meillä ei ole pyörää, mutta mitä me aiomme tehdä, on tehdä meidän ohjelma 86 00:05:38,340 --> 00:05:44,490 Tällainen siirtää aakkoset mukaamme tietty määrä numeroita. 87 00:05:44,490 --> 00:05:48,650 Niin kuin sanoin, aiomme olla tekemisissä komentoriviargumentteja 88 00:05:48,650 --> 00:05:50,390 sekä saada kokonaisluku. 89 00:05:50,390 --> 00:05:55,050 Niin siten, että käyttäjä ajaa Caesar ohjelma sanomalla. / Caesar 90 00:05:55,050 --> 00:05:58,090 ja sitten syöttämällä numero jälkeen. 91 00:05:58,090 --> 00:06:01,130 Ja että numero on avainasemassa, muutos, 92 00:06:01,130 --> 00:06:06,740 kuinka monta kertaa aiot pyöriä sisemmän pyörän oman Caesarin salakirjoitus. 93 00:06:06,740 --> 00:06:08,390 Ja niin näet tästä esimerkki. 94 00:06:08,390 --> 00:06:14,550 Jos me tulleet kirjeet ja L meidän Caesar cipher, 95 00:06:14,550 --> 00:06:19,520 Sitten se syöttää D kautta O koska se on jokaisen kirjaimen siirtynyt 3 kertaa, 96 00:06:19,520 --> 00:06:22,080 kuten esimerkiksi pyörä näytin sinulle. 97 00:06:22,080 --> 00:06:25,300 Joten jos tuli esimerkiksi tämä on CS50! 98 00:06:25,300 --> 00:06:27,960 sitten se myös siirtää kaikki kirjaimet. 99 00:06:27,960 --> 00:06:31,040 Ja se on tärkeä asia sekä Caesar ja Vigenere 100 00:06:31,040 --> 00:06:34,890 on, että me aiomme ohittaa ei-kirjaimia. 101 00:06:34,890 --> 00:06:39,160 Joten välilyöntejä, merkkejä, jne., numerot, aiomme pitää ne samat. 102 00:06:39,160 --> 00:06:42,920 Olemme vain menossa siirtää kirjaimet tässä tapauksessa. 103 00:06:42,920 --> 00:06:45,870 Joten kuten näette pyörän, meillä on vain kirjaimia käytettävissämme, 104 00:06:45,870 --> 00:06:50,150 joten me vain haluamme siirtää kirjaimia ja salaa kirjeitä. 105 00:06:51,370 --> 00:06:56,720 Joten ensimmäinen asia tehdä, näit että käyttö Caesar Harjoitus 2 106 00:06:56,720 --> 00:07:05,280 on ajaa keisarille ja kirjoita numero, kun ajaa sen pääte. 107 00:07:05,280 --> 00:07:10,940 Joten mitä meidän täytyy tehdä on jotenkin saada että avain ja käyttää sitä. 108 00:07:10,940 --> 00:07:14,730 Ja niin me haluamme jotenkin nähdä se tulee olemaan toinen komentorivillä. 109 00:07:14,730 --> 00:07:20,950 Ensimmäinen tulee olemaan. / Caesar, ja seuraava tulee olemaan keskeinen numero. 110 00:07:22,190 --> 00:07:29,200 Joten ennen meillä oli int main (void) aloittaa meidän C-ohjelmia. 111 00:07:29,200 --> 00:07:31,790 Aiomme Taitat kerros hieman 112 00:07:31,790 --> 00:07:34,720 ja todella nähdä, että sen sijaan kulkevat mitätön meidän päätehtävä 113 00:07:34,720 --> 00:07:37,920 olemme todella tekemisissä 2 parametrit. 114 00:07:37,920 --> 00:07:44,070 Olemme int nimeltä argc ja sitten joukko merkkijonoja kutsutaan argv. 115 00:07:44,070 --> 00:07:46,030 Joten argc on kokonaisluku, 116 00:07:46,030 --> 00:07:49,640 ja se edustaa useita väitteitä välitetään sisään ohjelmaan. 117 00:07:49,640 --> 00:07:53,590 Ja sitten argv on itse asiassa luettelo argumenttien. 118 00:07:53,590 --> 00:08:00,820 Kaikki argumentit ovat merkkijonoja, joten argv edustaa joukko, lista, merkkijonojen. 119 00:08:01,830 --> 00:08:03,990 Puhutaanpa ryhmät hieman. 120 00:08:03,990 --> 00:08:05,940 Paneelit ovat pohjimmiltaan uusi tietorakenne. 121 00:08:05,940 --> 00:08:09,660 Olemme ints, olemme kaksinkertaistuu, meillä on jouset, ja nyt meillä on taulukot. 122 00:08:09,660 --> 00:08:13,820 Paneelit ovat tietorakenteita, jotka voivat olla useita arvoja samaa tyyppiä, 123 00:08:13,820 --> 00:08:18,320 niin olennaisesti, lista mitä tyyppiä haluat. 124 00:08:18,320 --> 00:08:24,400 Pohjimmiltaan, jos halusi kokonaislukujen lista kaikki 1 muuttuja, 125 00:08:24,400 --> 00:08:29,090 niin voisitte luoda uusi muuttuja, joka oli tyyppiä int array. 126 00:08:29,090 --> 00:08:34,450 Joten paneelit ovat nolla-indeksoitu, eli ensimmäinen alkiota on indeksi 0. 127 00:08:34,450 --> 00:08:41,799 Jos matriisi on pituudeltaan 4, kuten tässä esimerkissä, sitten viimeinen elementti olisivat indeksi 3, 128 00:08:41,799 --> 00:08:44,810 joka on 4-1. 129 00:08:45,940 --> 00:08:48,420 Joten luoda array, voisitte tehdä jotain tällaista. 130 00:08:48,420 --> 00:08:51,440 Sano halusitte kaksinkertainen array. 131 00:08:51,440 --> 00:08:56,520 Tämä pätee tahansa tietotyyppi, tosin. 132 00:08:56,520 --> 00:09:00,210 Sano haluat double array. Sano haluat soittaa sitä postilaatikkoon. 133 00:09:00,210 --> 00:09:04,760 Aivan kuten te alustaa muita kaksinkertainen, 134 00:09:04,760 --> 00:09:09,760 sanoisit kaksinkertainen ja sitten nimi, mutta tällä kertaa laitoimme hakasulkeissa 135 00:09:09,760 --> 00:09:13,570 ja sitten numero tulee olemaan pituus jono. 136 00:09:13,570 --> 00:09:16,840 Huomaa, että ryhmät emme voi koskaan muuttaa pituutta, 137 00:09:16,840 --> 00:09:21,230 joten sinulla on aina määritellä ja valita kuinka monta laatikkoa, 138 00:09:21,230 --> 00:09:25,440 kuinka moni arvostaa array aikoo järjestää. 139 00:09:25,440 --> 00:09:31,820 Joten asettaa erilaisia ​​arvoja matriisin, aiot käyttää seuraavaa syntaksia, 140 00:09:31,820 --> 00:09:33,200 kuten näet dian. 141 00:09:33,200 --> 00:09:37,620 Sinulla on postilaatikko indeksi 0 arvoksi tulee 1,2, 142 00:09:37,620 --> 00:09:42,180 postilaatikko indeksi 1 sarja 2,4, jne. 143 00:09:42,180 --> 00:09:47,910 Joten nyt olemme tarkastaneet taulukot vähän, mennään takaisin argc ja argv. 144 00:09:47,910 --> 00:09:52,220 Tiedämme, että argv on nyt joukko merkkijonoja. 145 00:09:52,220 --> 00:09:55,080 Joten kun käyttäjä kulkee - sanovat he käynnissä ohjelma - 146 00:09:55,080 --> 00:09:58,740 he sanovat. / Hei David Malan, 147 00:09:58,740 --> 00:10:05,160 mitä ohjelma tekee sinulle jo todella keksiä mitä argc ja argv ovat. 148 00:10:05,160 --> 00:10:07,620 Joten sinun ei tarvitse huolehtia siitä. 149 00:10:07,620 --> 00:10:14,370 Argc tässä tapauksessa olisi 3 koska se näkee 3 erillistä sanat erotetaan toisistaan ​​välilyönnillä. 150 00:10:14,370 --> 00:10:18,850 Ja niin sitten array tässä tapauksessa ensimmäinen indeksi olisi. / Hei, 151 00:10:18,850 --> 00:10:21,770 seuraava David, seuraava Malan. 152 00:10:21,770 --> 00:10:25,640 Onko kukaan katso heti mitä suhde argv, 153 00:10:25,640 --> 00:10:28,990  array, ja argc on? 154 00:10:32,820 --> 00:10:38,090 Joo. Pääsemme että esimerkiksi args.c. 155 00:10:38,090 --> 00:10:42,880 Katsotaan jos voimme hyödyntää suhde 2. 156 00:10:42,880 --> 00:10:46,550 Täältä saatat löytää, että laite oletussovelluksessa 157 00:10:46,550 --> 00:10:49,450 avata. c tiedostot on joskus Emacs. 158 00:10:49,450 --> 00:10:54,660 Mutta haluamme käsitellä gedit, niin mitä voit tehdä on, voit oikealla klikkaa C-tiedosto, 159 00:10:54,660 --> 00:11:04,580 Siirry Ominaisuudet, Avaa sovelluksessa ja valitse sitten gedit, Aseta oletukseksi, 160 00:11:04,580 --> 00:11:13,020 ja nyt ohjelma pitäisi avautua gedit sijaan Emacs. 161 00:11:14,710 --> 00:11:16,290 Perfect. 162 00:11:17,120 --> 00:11:25,520 Joten tässä olen ohjelma, haluan tulostaa jokaisen komentorivillä. 163 00:11:25,520 --> 00:11:32,050 Joten mitä käyttäjä syöttää, haluan lähinnä palauttaa sen takaisin heille uuden rivin. 164 00:11:32,050 --> 00:11:36,710 Joten mitä rakennetta että voimme käyttää toistaa yli jotain - 165 00:11:36,710 --> 00:11:40,380 jotain, että luultavasti käytetty oman PSET 1? 166 00:11:40,380 --> 00:11:45,840 Jos haluat mennä läpi asettaa monia asioita? >> [Opiskelija] For silmukka. 167 00:11:45,840 --> 00:11:48,910 Varten silmukka. Aivan. Joten aloitetaan varten silmukka. 168 00:11:48,910 --> 00:11:56,900 Meillä on int i = 0. Toivotaan vain aloittaa standardi alustus muuttuja. 169 00:11:56,900 --> 00:12:02,370 Aion lähteä edellytys asettaa ja sitten sanoa i + +, aiomme tehdä asioita siellä. 170 00:12:02,370 --> 00:12:04,090 Selvä. 171 00:12:04,090 --> 00:12:11,590 Joten ajattelu takaisin argv, jos argv on luettelo argumenttien sisään ohjelmaan 172 00:12:11,590 --> 00:12:15,380 ja argc on useita väitteitä ohjelmassa, 173 00:12:15,380 --> 00:12:21,280 niin se tarkoittaa, että argc on olennaisesti pituus argv, oikealle, 174 00:12:21,280 --> 00:12:28,970 koska aiotaan niin monia argumentteja kuin arvo argc. 175 00:12:28,970 --> 00:12:35,910 Joten jos haluamme toistaa yli jokaisen elementin argv, 176 00:12:35,910 --> 00:12:43,290 aiomme halua aina käyttää muuttujan argv on tietyn indeksin. 177 00:12:43,290 --> 00:12:49,060 Tämä voidaan esittää tämän, eikö? 178 00:12:49,060 --> 00:12:53,430 Tämä muuttuja tässä on tietty merkkijono tässä tapauksessa 179 00:12:53,430 --> 00:12:57,030 koska se on string array - erityisesti string tuohon tietyn indeksin. 180 00:12:57,030 --> 00:13:00,690 Mitä me haluamme tehdä, tässä tapauksessa haluamme tulostaa sen, niin sanotaanko printf. 181 00:13:00,690 --> 00:13:04,680 Ja nyt argv on merkkijono, joten haluamme laittaa että paikkamerkkiin siellä. 182 00:13:04,680 --> 00:13:08,430 Haluamme uuden linjan vain tehdä se näyttää hyvältä. 183 00:13:08,430 --> 00:13:12,530 Joten tässä meillä on silmukka. Meillä ei ole kunnossa vielä. 184 00:13:12,530 --> 00:13:20,020 Joten minä alkaa 0, ja sitten joka kerta se tulee tulostaa annetun merkkijonon 185 00:13:20,020 --> 00:13:22,980 , että erityisesti indeksi jono. 186 00:13:22,980 --> 00:13:28,410 Joten kun haluamme lopettaa tulostamisen elementtejä array? 187 00:13:28,410 --> 00:13:35,720 Kun olet valmis, eikö? Kun olemme päässeet loppuun array. 188 00:13:35,720 --> 00:13:38,870 Joten emme halua ylittää ohi pituus array, 189 00:13:38,870 --> 00:13:43,700 ja tiedämme jo meidän ei tarvitse itse aktiivisesti selvittää, mitä pituus argv on 190 00:13:43,700 --> 00:13:47,520 koska se on antanut meille, ja mitä se on? Argc. Aivan. 191 00:13:47,520 --> 00:13:56,640 Joten me haluamme tehdä tämän prosessin argc monta kertaa. 192 00:13:56,640 --> 00:13:59,550 En ole oikeassa hakemistossa. 193 00:14:02,100 --> 00:14:03,490 Selvä. 194 00:14:03,490 --> 00:14:08,990 Nyt tekee args. Ei virheitä, mikä on hienoa. 195 00:14:08,990 --> 00:14:11,430 Joten vain ajaa args. 196 00:14:11,430 --> 00:14:15,130 Mitä tämä aikoo palata meille? Se vain tulee tulostaa sen takaisin. 197 00:14:15,130 --> 00:14:18,320 "Sinä syötetty args ohjelmaan, aion antaa sen sinulle takaisin." 198 00:14:18,320 --> 00:14:23,170 Joten sanokaamme haluamme sanoa args sitten foo bar. 199 00:14:23,170 --> 00:14:26,570 Joten sitten se tulostaa sen takaisin meille. Kaikki hyvin? 200 00:14:26,570 --> 00:14:30,790 Joten on esimerkki siitä, miten voit käyttää argc ja argv 201 00:14:30,790 --> 00:14:33,460 tietäen, että argc edustaa pituutta argv. 202 00:14:33,460 --> 00:14:42,750 Varmista, että et koskaan paneelit pääsy rajojen tuolle puolen pituus array 203 00:14:42,750 --> 00:14:45,140 koska C varmasti huutaa sinulle. 204 00:14:45,140 --> 00:14:47,560 Saat jotain kutsutaan segmentointi vika, 205 00:14:47,560 --> 00:14:52,470 joka ei ole koskaan hauskaa, pohjimmiltaan sanomalla yrität käyttää jotain 206 00:14:52,470 --> 00:14:55,000 että ei ole olemassa, ei kuulu sinulle. 207 00:14:55,000 --> 00:14:59,430 Joten varmista, ja erityisesti nolla-indeksointi, emme halua - 208 00:14:59,430 --> 00:15:02,390 Kuten esimerkiksi, jos meillä on joukko pituus 4, 209 00:15:02,390 --> 00:15:07,240 että taulukkoindeksin 4 ei ole olemassa, koska aloitamme klo 0, nolla indeksi. 210 00:15:07,240 --> 00:15:11,730 Se tulee toinen luonto aivan kuten silmukoita, kun aloitamme klo 0. 211 00:15:11,730 --> 00:15:13,610 Joten pitää tämä mielessä. 212 00:15:13,610 --> 00:15:22,590 Et halua koskaan käyttää indeksi taulukon, joka on kuin oman ulottumattomissa. 213 00:15:26,710 --> 00:15:32,560 Jotta voimme nähdä nyt miten voimme sellainen yhteys 214 00:15:32,560 --> 00:15:35,930 komentoriviargumentit että välitetään sisään 215 00:15:35,930 --> 00:15:41,330 Mutta näit merkkijono, argv on todella string array. 216 00:15:41,330 --> 00:15:45,740 Joten se on oikeastaan ​​ole kokonaisluku vielä, mutta Caesar haluamme käsitellä kokonaislukuja. 217 00:15:45,740 --> 00:15:54,430 Onneksi on olemassa funktio luotu meille todella voi muuntaa merkkijonon kokonaisluvuksi. 218 00:15:54,430 --> 00:15:58,710 Myös täällä emme ole tekemisissä käyttäjä syöttää missä olemme kehottaa heitä 219 00:15:58,710 --> 00:16:03,740 syötteen täällä avaimen, joten emme voi oikeastaan ​​reprompt ja sanoa, 220 00:16:03,740 --> 00:16:07,840 "Oi, anna minulle toinen kokonaisluku, sanotaan, jos se ei kelpaa." 221 00:16:07,840 --> 00:16:10,540 Mutta emme vielä tarkistaa oikean käytön. 222 00:16:10,540 --> 00:16:13,520 Vuonna Caesar ne vain voivat siirtää 1 numero, 223 00:16:13,520 --> 00:16:18,030 ja niin heidän täytyy juosta. / Caesar ja sitten ne on antaa sinulle numero. 224 00:16:18,030 --> 00:16:23,660 Niin argc on oltava tietty määrä. 225 00:16:23,660 --> 00:16:29,060 Mikä numero se olisi, jos ne on läpäistävä sinulle. / Caesar ja sitten avain? 226 00:16:29,060 --> 00:16:32,920 Mikä on argc? >> [Opiskelija] 2. >> Kaksi. Aivan. 227 00:16:32,920 --> 00:16:35,490 Joten haluat varmistaa, että argc on 2. 228 00:16:35,490 --> 00:16:39,620 Muuten periaatteessa kieltäytyä suorita ohjelma. 229 00:16:39,620 --> 00:16:43,040 Tärkeimpien se toiminto, joka sanoo int main, 230 00:16:43,040 --> 00:16:47,360 niin sitten olemme aina hyviä käytäntöjä return 0 lopussa onnistuneen ohjelman. 231 00:16:47,360 --> 00:16:50,840 Eli jos vaikkapa he antavat sinulle 3 komentoriviargumentteja sijasta 2 232 00:16:50,840 --> 00:16:54,350 tai antaa sinulle 1, esimerkiksi niin mitä voit tehdä on sinun kannattaa tarkistaa, että 233 00:16:54,350 --> 00:16:59,900 ja palata sitten 1 sanoen, ei, en voi jatkaa tätä ohjelmaa. 234 00:16:59,900 --> 00:17:03,190 [Opiskelija] ei voi olla tilaa tekstin. >> Anteeksi? 235 00:17:03,190 --> 00:17:06,780 [Opiskelija] ei voi olla tilaa tekstin yrität salata. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 Kannalta tekstin yritämme salata, että todella tulee myöhemmin 238 00:17:11,280 --> 00:17:13,970 kun annamme tämän tekstin. 239 00:17:13,970 --> 00:17:18,260 Joten nyt me vain hyväksyä kuin komennon argumentteja todellinen määrä, 240 00:17:18,260 --> 00:17:21,579 todellinen siirtymä Caesar salausta. 241 00:17:21,579 --> 00:17:27,569 [Opiskelija] Miksi tarvitset 2 eikä vain 1 argc? Ei varmasti 1 numero. 242 00:17:27,569 --> 00:17:32,200 Oikea. Syy miksi tarvitsemme 2 argc sijasta 1 243 00:17:32,200 --> 00:17:36,260 johtuu siitä, kun käynnistät ohjelman ja sanoa. / Caesar tai. / hello, 244 00:17:36,260 --> 00:17:38,280 että todella laskee kuin komentorivillä. 245 00:17:38,280 --> 00:17:43,020 Niin sitten se jo vie 1 ja niin sitten olemme syöttämällä 1 ylimääräinen. 246 00:17:45,030 --> 00:17:49,440 Joten olet syöttänyt itse merkkijono komentorivillä. 247 00:17:49,440 --> 00:17:52,730 Mitä haluat tehdä, Caesar haluamme käsitellä kokonaisluku, 248 00:17:52,730 --> 00:17:57,180 joten voit käyttää tätä atoi toimintoa. 249 00:17:57,180 --> 00:18:02,850 Ja pohjimmiltaan, ohitat sen merkkijonon ja sitten se palaa takaisin kokonaisluku 250 00:18:02,850 --> 00:18:06,070 jos se on mahdollista tehdä, että merkkijono kokonaisluku. 251 00:18:06,070 --> 00:18:10,960 Nyt muistan, kun olemme tekemisissä printf tai GetString, tuollaista, 252 00:18:10,960 --> 00:18:13,390 me kuuluvat kirjastot, jotka ovat ominaisia ​​meille. 253 00:18:13,390 --> 00:18:19,450 Joten alussa aloitamme hash tag vakio I / O,. H, jotain sellaista. 254 00:18:19,450 --> 00:18:22,430 No, atoi ei kuulu yksi niistä kirjastojen, 255 00:18:22,430 --> 00:18:26,600 niin mitä meidän täytyy tehdä, on meidän tarvitse olla oikea kirjasto siitä. 256 00:18:26,600 --> 00:18:32,720 Joten muistaa takaisin Walkthrough 1 missä keskustelin manuaalinen toiminto. 257 00:18:32,720 --> 00:18:37,110 Kirjoitat mies puhelimesi ja sitten seuraa nimi funktion. 258 00:18:37,110 --> 00:18:39,720 Ja niin se tuo esiin koko lista sen käyttö, 259 00:18:39,720 --> 00:18:42,890 mutta yhtä hyvin se tuo esille jonka kirjasto, joka kuuluu. 260 00:18:42,890 --> 00:18:47,000 Joten Jätän että voit käyttää manuaalinen toiminto atoi 261 00:18:47,000 --> 00:18:53,360 ja selvittää, mikä kirjasto sinun täytyy sisällyttää pystyä käyttämään atoi toimintoa. 262 00:18:54,450 --> 00:18:57,670 Joten meillä avain ja nyt se tulee saamaan pelkkää tekstiä, 263 00:18:57,670 --> 00:19:01,820 ja niin, että todellisuudessa tulee olemaan käyttäjä syöttää missä pyytää. 264 00:19:01,820 --> 00:19:05,540 Käsittelimme GetInt ja GetFloat, joten samansuuntaisesti 265 00:19:05,540 --> 00:19:07,670 aiomme olla tekemisissä GetString. 266 00:19:07,670 --> 00:19:12,440 Mutta tässä tapauksessa emme tarvitse tehdä mitään tehdä, kun tai kun silmukoita tarkistaa. 267 00:19:12,440 --> 00:19:14,480 GetString varmasti antaa meille merkkijono, 268 00:19:14,480 --> 00:19:17,630 ja aiomme salata mitä käyttäjä antaa meille. 269 00:19:17,630 --> 00:19:23,770 Voit siis olettaa, että kaikki nämä käyttäjien syötetyn jouset ovat oikeat. 270 00:19:23,770 --> 00:19:24,670 Suuri. 271 00:19:24,670 --> 00:19:27,270 Joten sitten kun olet saanut avaimen ja kun olet saanut tekstin, 272 00:19:27,270 --> 00:19:31,660 nyt mitä on jäljellä on sinun salakoodaus selväkielisenä. 273 00:19:31,660 --> 00:19:36,530 Vain nopeasti kattaa yli mongerrus, selväteksti on mitä käyttäjä antaa, 274 00:19:36,530 --> 00:19:41,030 ja salateksti on mitä palata niihin. 275 00:19:42,450 --> 00:19:45,850 Joten jouset, jotta voi mennä läpi todella kirjain 276 00:19:45,850 --> 00:19:48,550 koska meillä on siirtää jokaiseen kirjeeseen, 277 00:19:48,550 --> 00:19:51,390 ymmärrämme, että jouset, jos sellainen kuori takaisin kerros, 278 00:19:51,390 --> 00:19:54,130 näemme, että he vain todella luettelon merkkejä. 279 00:19:54,130 --> 00:19:55,930 Yksi tulee toisensa jälkeen. 280 00:19:55,930 --> 00:20:01,690 Ja jotta voimme käsitellä merkkijonoja paneelit, koska ne ovat ryhmät merkkiä. 281 00:20:01,690 --> 00:20:05,640 Sano sinulla merkkijono nimeltä tekstiä, 282 00:20:05,640 --> 00:20:09,400 ja sisällä, että muuttuja teksti on tallennettu Tämä on CS50. 283 00:20:09,400 --> 00:20:15,680 Sitten tekstiä indeksi 0 olisi pääomaa T, indeksi 1 olisi h jne. 284 00:20:17,530 --> 00:20:23,970 Ja sitten paneelit, vuonna argc esimerkki args.c, 285 00:20:23,970 --> 00:20:27,090 näimme, että meillä oli toistaa yli array 286 00:20:27,090 --> 00:20:32,440 ja meidän oli iteroida alkaen i = 0, kunnes i on pienempi kuin pituus. 287 00:20:32,440 --> 00:20:35,560 Tarvitsemme siis jotenkin mietitään mitä pituus meidän merkkijono on 288 00:20:35,560 --> 00:20:37,090 jos aiomme toistaa sen yli. 289 00:20:37,090 --> 00:20:42,300 Onneksi taas on funktio siellä meitä, vaikka myöhemmin CS50 290 00:20:42,300 --> 00:20:45,860 sinun ehdottomasti pystyä toteuttamaan ja tehdä oman toiminnan 291 00:20:45,860 --> 00:20:48,260 , joka voi laskea pituus merkkijono. 292 00:20:48,260 --> 00:20:52,120 Mutta nyt me aiomme käyttää merkkijonon pituus, joten strlen. 293 00:20:52,120 --> 00:21:00,440 Voit kulkea merkkijono, ja sitten se palaa teille int joka edustaa pituus merkkijono. 294 00:21:00,440 --> 00:21:05,840 Katsotaanpa esimerkki siitä, miten ehkä toistaa yli kunkin merkin merkkijono 295 00:21:05,840 --> 00:21:08,470 ja tehdä jotain sen kanssa. 296 00:21:08,470 --> 00:21:13,250 Mitä me haluamme tehdä, on toistaa yli jokaisen merkin merkkijonon, 297 00:21:13,250 --> 00:21:19,150 ja mitä haluamme tehdä, on me painamme takaisin jokaisen merkin 1 1 298 00:21:19,150 --> 00:21:22,060 paitsi lisäämme jotain sen vieressä. 299 00:21:22,060 --> 00:21:27,020 Joten aloitetaan varten silmukka. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Aiomme jättää tilaa kunnossa. 301 00:21:32,700 --> 00:21:36,840 Haluamme toistaa kunnes pääsemme loppuun merkkijonon, eikö? 302 00:21:36,840 --> 00:21:41,340 Joten mitä sitten toiminto antaa meille merkkijonon pituus? 303 00:21:41,340 --> 00:21:43,160 [Äänetön opiskelija vastausta] 304 00:21:43,160 --> 00:21:46,420 Se pituus komentoriviargumentteja. 305 00:21:46,420 --> 00:21:50,650 Mutta merkkijono haluamme käyttää toimintoa, joka antaa meille pituus merkkijono. 306 00:21:50,650 --> 00:21:53,090 Joten se merkkijonon pituus. 307 00:21:53,090 --> 00:21:57,130 Ja niin sitten sinun täytyy kulkea merkkijono sitä. 308 00:21:57,130 --> 00:21:59,760 On tiedettävä, mitä merkkijono se tarvitsee laskea pituuden. 309 00:21:59,760 --> 00:22:03,160 Joten tässä tapauksessa olemme tekemisissä merkkijono s. 310 00:22:04,790 --> 00:22:05,860 Suuri. 311 00:22:05,860 --> 00:22:10,770 Joten mitä me haluamme tehdä, katsotaanpa printf. 312 00:22:10,770 --> 00:22:14,850 Nyt haluamme käsitellä merkkiä. Haluamme tulostaa kunkin merkin. 313 00:22:14,850 --> 00:22:22,150 Kun haluat tulostaa float, voit käyttää paikkamerkkiä kuin% f. 314 00:22:22,150 --> 00:22:24,580 Kanssa int käyttäisit% d. 315 00:22:24,580 --> 00:22:30,890 Ja niin Vastaavasti, merkki käytät% c sanoa aion olla tulostaa merkki 316 00:22:30,890 --> 00:22:34,570 joka tallennetaan sisällä muuttuja. 317 00:22:34,570 --> 00:22:40,840 Joten meillä on tämä, ja mennään lisätä ajan ja tilaa se. 318 00:22:40,840 --> 00:22:45,430 Mikä merkki käytämme? 319 00:22:45,430 --> 00:22:49,780 Aiomme käyttää mitä tahansa merkin me olemme merkkijonon. 320 00:22:49,780 --> 00:22:52,890 Joten aiomme käyttää jotain merkkijono, 321 00:22:52,890 --> 00:22:56,420 mutta haluamme olla pääsy tiettyihin merkki siellä. 322 00:22:56,420 --> 00:23:02,740 Joten jos merkkijono on vain joukko, niin miten voimme käyttää elementtejä matriiseja? 323 00:23:02,740 --> 00:23:06,480 Meillä on nuo hakasulkeissa ja sitten laitamme indeksin siellä. 324 00:23:06,480 --> 00:23:11,820 Joten meillä on hakasulkeissa. Meidän index tässä tapauksessa voimme vain käyttää i. Aivan. 325 00:23:15,290 --> 00:23:22,370 Joten tässä me sanomme me tullaan tulostaa merkin jälkeen piste ja välilyönti, 326 00:23:22,370 --> 00:23:30,870 ja että luonne tulee olemaan i kirjain meidän merkkijonon s. 327 00:23:32,920 --> 00:23:39,330 Aion pelastaa se. Okei. 328 00:23:42,510 --> 00:23:46,840 Nyt aion juosta merkkijonon pituus. 329 00:23:46,840 --> 00:23:53,440 Joten meillä oli merkkijono nimeltään OMG, ja nyt se korostuu entisestään. 330 00:23:53,440 --> 00:23:57,870 Samoin sanokaamme me todella haluamme saada merkkijono käyttäjältä. 331 00:23:57,870 --> 00:23:59,580 Miten voisi teemme tämän? 332 00:23:59,580 --> 00:24:01,610 Ennen kuinka saamme int? 333 00:24:01,610 --> 00:24:08,040 Sanoimme GetInt, eikö? Mutta tämä ei ole int, joten katsotaanpa GetString. 334 00:24:11,780 --> 00:24:17,770 Tehdään merkkijonon pituus. Täällä ei anna erityistä nopeasti. 335 00:24:17,770 --> 00:24:19,940 Joten en tiedä. 336 00:24:19,940 --> 00:24:23,820 Aion laittaa nimeni täällä ja niin sitten voin tehdä yksi niistä asioista 337 00:24:23,820 --> 00:24:29,600 jossa olen antaa sanan jokaisen kirjaimen tai jotain. Cool. 338 00:24:29,600 --> 00:24:31,900 Joten se merkkijonon pituus. 339 00:24:33,000 --> 00:24:34,640 Joten olemme takaisin keisarille. 340 00:24:34,640 --> 00:24:38,620 Meillä on muutamia työkaluja, miten voimme toistaa yli merkkijono, 341 00:24:38,620 --> 00:24:41,250 miten käyttää kunkin elementin. 342 00:24:41,250 --> 00:24:44,720 Joten nyt voimme palata ohjelmaan. 343 00:24:44,720 --> 00:24:48,650 Kuten aiemmin mainitsin, on ASCII taulukon, paras ystävä, 344 00:24:48,650 --> 00:24:52,300 olet menossa nähdä numeroita, jotka liittyvät jokaisen kirjaimen. 345 00:24:52,300 --> 00:24:55,900 Joten tässä sanoa meidän selkokielisen on olen huimaa! 346 00:24:55,900 --> 00:25:01,090 Sitten kukin näistä merkeistä on menossa on useita ja ASCII-arvo liittyy siihen, 347 00:25:01,090 --> 00:25:04,710 jopa heittomerkki, vaikka tila, vaikka huutomerkki, 348 00:25:04,710 --> 00:25:06,600 joten sinun kannattaa pitää tämä mielessä. 349 00:25:06,600 --> 00:25:12,360 Sano keskeisiä että käyttäjä sisältyvät niiden Komentoriviargumentti 6. 350 00:25:12,360 --> 00:25:17,770 Tämä tarkoittaa sitä, että ensimmäinen kirjain, joka on I, joka edustaa 73, 351 00:25:17,770 --> 00:25:25,610 haluat palata niihin mitä kirjain edustaa ASCII-arvon 73 + 6. 352 00:25:25,610 --> 00:25:29,020 Tässä tapauksessa se olisi 79. 353 00:25:30,840 --> 00:25:35,040 Nyt haluamme mennä seuraavaan merkkiin. 354 00:25:35,040 --> 00:25:40,960 Joten seuraavaksi indeksi 1 selkokielisen olisi heittomerkki. 355 00:25:40,960 --> 00:25:46,780 Mutta muistakaa me vain haluamme salakoodaus kirjaimia. 356 00:25:46,780 --> 00:25:50,040 Joten haluamme varmistaa, että heittomerkki todella pysyy samana, 357 00:25:50,040 --> 00:25:54,310 että emme vaihtaa 39 mihin tahansa 45 on. 358 00:25:54,310 --> 00:25:57,150 Haluamme pitää se heittomerkki. 359 00:25:57,150 --> 00:26:00,780 Niinpä haluamme muistaa vain salakoodaus kirjaimet 360 00:26:00,780 --> 00:26:04,560 sillä haluamme kaikki muut symbolit pysyvän ennallaan vuonna ohjelmaamme. 361 00:26:04,560 --> 00:26:07,130 Toinen asia, että haluamme säilyttää arvo. 362 00:26:07,130 --> 00:26:10,250 Joten kun sinulla on iso kirjain, sen pitäisi pysyä niin isoja. 363 00:26:10,250 --> 00:26:12,830 Lowercases pitäisi pysyä niin pieniä. 364 00:26:13,620 --> 00:26:19,480 Joten muutamia hyödyllisiä toimintoja pystyä käsittelemään vain salakoodausohjelmia kirjaimia 365 00:26:19,480 --> 00:26:22,380 ja pitää säilyttää arvo asioita 366 00:26:22,380 --> 00:26:25,130 on isalpha, isupper, islower toimintoja. 367 00:26:25,130 --> 00:26:29,270 Ja niin nämä ovat funktioita, jotka palauttavat sinut totuusarvon. 368 00:26:29,270 --> 00:26:34,180 Periaatteessa totta vai tarua. Onko tämä iso? Onko tämä aakkosnumeerinen? 369 00:26:34,180 --> 00:26:37,180 Onko tämä kirjeen lähinnä. 370 00:26:37,180 --> 00:26:41,070 Joten tässä on 3 esimerkkejä siitä, miten voisitte käyttää kyseistä toimintoa. 371 00:26:41,070 --> 00:26:47,060 Periaatteessa voit testata, onko arvo palautetaan sinulle, että toiminto on tosi tai epätosi 372 00:26:47,060 --> 00:26:49,400 perustuu siihen, että panos. 373 00:26:49,400 --> 00:26:54,880 Joko eivät salakoodaus jotain tai Cipher sitä tai varmista, että se on iso, jne. 374 00:26:54,880 --> 00:27:01,080 [Opiskelija] Voisitko selittää nuo hieman enemmän ja miten käytät niitä? >> Joo, varmasti. 375 00:27:01,080 --> 00:27:08,470 Joten jos katsomme taaksepäin, täällä meillä on pääomaa minä, eikö? 376 00:27:08,470 --> 00:27:14,550 Joten me tiedämme, että minun menee O koska en + 6 on O. 377 00:27:14,550 --> 00:27:18,740 Mutta haluamme varmistaa, että O tulee olemaan pääoman O. 378 00:27:18,740 --> 00:27:22,940 Joten periaatteessa, että on tavallaan menossa muuttamaan tuloon. 379 00:27:22,940 --> 00:27:26,870 Joten onko se iso vai ei tahtoa sellaista muuttaa siten, että käsittelemme sitä. 380 00:27:26,870 --> 00:27:32,360 Joten jos käytämme isupper toimintoa kyseisen indeksin, 381 00:27:32,360 --> 00:27:36,480 joten isupper ("I"), joka palauttaa meille totta, joten me tiedämme, että se on ylempi. 382 00:27:36,480 --> 00:27:40,360 Joten sitten perustuu, että myöhemmin me mennä kaava 383 00:27:40,360 --> 00:27:42,750 että aiot käyttää siirtämään asioita Caesar, 384 00:27:42,750 --> 00:27:46,560 niin silloin periaatteessa, siellä tulee olemaan hieman erilainen kaava, jos se on iso 385 00:27:46,560 --> 00:27:50,670 toisin pieniksi. Järkeä? 386 00:27:51,020 --> 00:27:52,760 Joo. Ei hätää. 387 00:27:54,900 --> 00:27:58,990 Puhuin vähän siitä lisäämällä 6 kirjeeseen, joka ei ole aivan järkevää 388 00:27:58,990 --> 00:28:05,500 paitsi kun sellaista ymmärtää, että nämä merkit 389 00:28:05,500 --> 00:28:08,920 ovat sellaisia ​​vaihdettavissa kokonaislukuja. 390 00:28:08,920 --> 00:28:11,250 Mitä teemme me tavallaan käytön implisiittinen valu. 391 00:28:11,250 --> 00:28:18,100 Me mennä valu hieman myöhemmin, jos otat arvon ja otat sen eri tyyppiä 392 00:28:18,100 --> 00:28:20,440 kuin se alun perin oli. 393 00:28:20,440 --> 00:28:25,910 Mutta tämä PSET me voi sellaista vaihtoehtoisesti käyttää merkkejä 394 00:28:25,910 --> 00:28:30,880 ja niiden vastaavat kokonaisluku arvoja. 395 00:28:30,880 --> 00:28:35,140 Joten jos vain koteloida merkki vain heittomerkkejä, 396 00:28:35,140 --> 00:28:40,390 Sitten voit työskennellä sen kanssa kokonaislukuja, käsittelee se kokonaisluku. 397 00:28:40,390 --> 00:28:48,040 Joten pääoma C koskee 67. Pienet f liittyy 102. 398 00:28:48,040 --> 00:28:51,480 Jälleen, jos haluat tietää näitä arvoja, katso sinun ASCII pöydän. 399 00:28:51,480 --> 00:28:56,160 Joten mennä joitakin esimerkkejä siitä, miten te ehkä vähentää ja lisätä, 400 00:28:56,160 --> 00:29:03,130 miten voit itse todella työskennellä näiden merkkien, käyttää niitä synonyymeinä. 401 00:29:03,870 --> 00:29:11,350 Sanon, että ASCIIMath on menossa laskea lisäämällä merkin kokonaisluku 402 00:29:11,350 --> 00:29:17,590 ja näyttää sitten tuloksena luonnetta samoin kuin tuloksena ASCII-arvon. 403 00:29:17,590 --> 00:29:22,290 Ja joten tässä yritän sanoa - we'll käsitellä tämän osan myöhemmin - 404 00:29:22,290 --> 00:29:29,100 mutta pohjimmiltaan, sanon, että käyttäjän pitäisi sanoa ajaa ASCIIMath yhdessä avaimen, 405 00:29:29,100 --> 00:29:30,880 ja minä sanon, että avain tulee olemaan numero 406 00:29:30,880 --> 00:29:34,600 jonka aiomme lisätä tämän merkin. 407 00:29:34,600 --> 00:29:38,560 Joten tässä huomannut, että koska olen vaativa avain, 408 00:29:38,560 --> 00:29:40,590 koska olen vaativa, että he antavat minulle 1 asia, 409 00:29:40,590 --> 00:29:45,600 Haluan vain hyväksyä. / Asciimath ja avain. 410 00:29:45,600 --> 00:29:49,330 Joten aion vaatia argc on 2. 411 00:29:49,330 --> 00:29:54,360 Jos se ei ole, niin aion palata 1 ja ohjelma päättyy. 412 00:29:55,070 --> 00:29:58,540 Joten sanon avain ei tule olemaan ensimmäinen komentorivillä, 413 00:29:58,540 --> 00:30:05,080 Se tulee olemaan toinen, ja kuten näette täällä, 414 00:30:05,080 --> 00:30:11,790 Aion tehdä tästä tulee kokonaisluku. 415 00:30:15,740 --> 00:30:19,230 Sitten aion asettaa merkin olevan r. 416 00:30:19,230 --> 00:30:23,970 Huomaa, että tyypin muuttujan chr on todella kokonaisluku. 417 00:30:23,970 --> 00:30:30,480 Siten, että olen pystynyt käyttämään r kokonaisluku tapahtuu encasing se näiden puolilainausmerkkejä. 418 00:30:33,850 --> 00:30:40,560 Joten takaisin meidän printf julkilausuman, jossa meillä on paikkamerkki merkin 419 00:30:40,560 --> 00:30:43,590 ja sitten paikkamerkin kokonaisluku, 420 00:30:43,590 --> 00:30:49,450 merkki edustaa ihmisoikeustoimikunnassa ja kokonaisluku on avain. 421 00:30:49,450 --> 00:30:54,320 Ja niin sitten tulemme vuonna tulokseen lisätään 2 yhdessä. 422 00:30:54,320 --> 00:30:58,420 Joten aiomme lisätä r + mikä avain on, 423 00:30:58,420 --> 00:31:03,520 ja sitten aiomme tulostaa tuloksen että. 424 00:31:06,210 --> 00:31:14,220 Joten tehkäämme asciimath. Se on ajan tasalla, joten haluan vain juosta asciimath. 425 00:31:14,220 --> 00:31:18,290 Voi, mutta katso, se ei tee mitään, koska emme oikeastaan ​​anna se avain. 426 00:31:18,290 --> 00:31:23,850 Joten kun se vain palautti 1, tärkein tehtävä, se vain palasi takaisin meille. 427 00:31:23,850 --> 00:31:29,250 Joten niin nyt kulkea avain. Joku antaa minulle numero. >> [Opiskelija] 4. 428 00:31:29,250 --> 00:31:30,920 4. Okei. 429 00:31:30,920 --> 00:31:39,280 Joten r kasvoi 4 on antaa meille vastaan, joka vastaa ASCII-arvon 118. 430 00:31:39,280 --> 00:31:43,880 Joten se sellainen järkevää, että - 431 00:31:43,880 --> 00:31:51,250 Oikeastaan, voinko kysyä teiltä, ​​mitä mieltä olette ASCII arvo r jos r + 4 118? 432 00:31:53,070 --> 00:31:55,470 Sitten joo, r on 114. 433 00:31:55,470 --> 00:32:03,010 Joten jos näytät ASCII taulukon sitten tosiaan, näet, että r edustaa 114. 434 00:32:03,010 --> 00:32:08,610 Joten nyt me tiedämme, että voimme lisätä kokonaislukuja ja merkkejä, tämä tuntuu melko yksinkertainen. 435 00:32:08,610 --> 00:32:12,740 Olemme juuri menossa toistaa yli merkkijono kuten näimme esimerkin ennen. 436 00:32:12,740 --> 00:32:17,170 Me tarkista onko se kirjain. 437 00:32:17,170 --> 00:32:20,420 Jos se on, niin me siirtää sen millä tahansa avain on. 438 00:32:20,420 --> 00:32:23,650 Melko yksinkertaista, paitsi kun saat like this, 439 00:32:23,650 --> 00:32:32,140 näet että z, edustajanaan 122, niin se antaa sinulle erilaisia ​​luonteeltaan. 440 00:32:32,140 --> 00:32:37,770 Me todella haluamme pysyä meidän aakkoset, eikö? 441 00:32:37,770 --> 00:32:43,180 Joten meidän täytyy selvittää jotenkin tavallaan kiertyy. 442 00:32:43,180 --> 00:32:47,190 Kun tulet Zedin ja haluat lisätä tietyn määrän, 443 00:32:47,190 --> 00:32:51,230 et halua mennä pidemmälle ASCII aakkoset osassa; 444 00:32:51,230 --> 00:32:54,140 haluat kääri takaisin aina A. 445 00:32:54,140 --> 00:32:58,550 Mutta pitää mielessä olet vielä säilyttää asian. 446 00:32:58,550 --> 00:33:00,980 Tietäen, että kirjeitä ei voi tulla symboleja 447 00:33:00,980 --> 00:33:05,290 kuten symboleja ei aiota muuttumassa. 448 00:33:05,290 --> 00:33:08,170 Viimeisessä PSET sinun ehdottomasti ei tarvitse, 449 00:33:08,170 --> 00:33:14,310 mutta vaihtoehto oli toteuttaa oman ahne PSET käyttämällä moduuli toimintoa. 450 00:33:14,310 --> 00:33:17,230 Mutta nyt olemme todella menossa tarvitse käyttää moduuli, 451 00:33:17,230 --> 00:33:19,900 niin mennään vain yli tämän hieman. 452 00:33:19,900 --> 00:33:26,920 Pohjimmiltaan kun on x modulo y, joka antaa sinulle loput x jaettuna y. 453 00:33:26,920 --> 00:33:30,930 Tässä muutamia esimerkkejä tästä. Meillä on 27% 15. 454 00:33:30,930 --> 00:33:36,200 Periaatteessa, kun vähennetään 15 päässä 27 niin monta kertaa kuin mahdollista ilman saada negatiivisia 455 00:33:36,200 --> 00:33:39,060 niin saat 12 jäljellä. 456 00:33:39,060 --> 00:33:44,650 Niin, että sellainen kuten matematiikka yhteydessä, mutta miten voimme todella käyttää tätä? 457 00:33:44,650 --> 00:33:47,100 Se tulee olemaan hyötyä meidän wrapover. 458 00:33:47,100 --> 00:33:55,420 Tätä varten Sanotaan vain pyysin teitä kaikkia jakaa 3 ryhmään. 459 00:33:55,420 --> 00:33:58,010 Joskus voit tehdä tämän ryhmissä ja jotain. 460 00:33:58,010 --> 00:34:01,320 Say I sanoi, "Okei, haluan teidän kaikkien jaetaan 3." 461 00:34:01,320 --> 00:34:04,240 Miten voisit tehdä? 462 00:34:04,240 --> 00:34:06,810 [Äänetön opiskelija vastausta] Joo, aivan. Laske pois. Okei. 463 00:34:06,810 --> 00:34:10,260 Mennään todella tehdä se. Haluatko aloittaa? 464 00:34:10,260 --> 00:34:13,810 [Opiskelijat laskenta off] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Mutta muistakaa ... >> [Opiskelija] Anteeksi. 466 00:34:16,620 --> 00:34:18,730 Se on todella hyvä pointti. 467 00:34:18,730 --> 00:34:24,130 Sanoit 4, mutta me todella haluamme sinun sanoa 1 koska me vain haluamme 3 ryhmään. 468 00:34:24,130 --> 00:34:30,159 Joten sitten, miten - Ei, se on todella hyvä esimerkki, sillä miten sitten voisit sanoa 1? 469 00:34:30,159 --> 00:34:33,370 Mikä on suhde 4 ja 1? 470 00:34:33,370 --> 00:34:36,760 No, 4 mod 3 on 1. 471 00:34:36,760 --> 00:34:41,460 Joten jos jatkat, sinun olisi 2. 472 00:34:41,460 --> 00:34:44,540 Joten meillä on 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Jälleen olet todella 5. henkilö. Mistä tiedät sanoa 2 eikä 5? 474 00:34:49,420 --> 00:34:53,760 Sanot 5 mod 3 on 2. 475 00:34:53,760 --> 00:34:59,100 Haluan nähdä, kuinka monta ryhmää 3 jää yli, niin missä järjestyksessä minäkin 476 00:34:59,100 --> 00:35:02,860 Ja niin sitten jos me jatkanut koko huoneen, 477 00:35:02,860 --> 00:35:07,760 silloin näkisimme, että olemme aina soveltaen tosiasiassa mod toiminnon itsellemme 478 00:35:07,760 --> 00:35:09,990 ikään kuin laskea pois. 479 00:35:09,990 --> 00:35:14,490 Se on enemmän eräänlainen konkreettinen esimerkki siitä, miten voit käyttää modulo 480 00:35:14,490 --> 00:35:17,960 koska olen varma, että useimmat meistä ovat varmaan käyneet läpi tämän prosessin 481 00:35:17,960 --> 00:35:19,630 jossa meillä on ollut laskea pois. 482 00:35:19,630 --> 00:35:21,840 Kysyttävää modulo? 483 00:35:21,840 --> 00:35:25,360 On aika tärkeää ymmärtää käsitteet tätä, 484 00:35:25,360 --> 00:35:28,640 joten haluan varmistaa että teillä ymmärrät. 485 00:35:28,640 --> 00:35:34,660 [Opiskelija] Jos ei ole jäljellä, se antaa sinulle todellinen määrä? 486 00:35:34,660 --> 00:35:40,430 Jos yksi ensimmäisistä 3 heistä oli tehnyt sen, se olisi antanut heille, mitä he todellisuudessa olivat, 487 00:35:40,430 --> 00:35:43,310 tai se olisi antanut heille [kuulumattomissa] >> Tuo on hyvä kysymys. 488 00:35:43,310 --> 00:35:48,750 Kun ei ole loput modulo - niin että sinulla on 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 joka todella antaa sinulle takaisin 0. 490 00:35:53,670 --> 00:35:57,290 Puhumme siitä hieman myöhemmin. 491 00:35:58,810 --> 00:36:07,720 Ai joo, esimerkiksi kolmas henkilö - 3 mod 3 on oikeastaan ​​0 mutta hän sanoi 3. 492 00:36:07,720 --> 00:36:14,900 Niin, että on tavallaan kuin sisemmän saalis, esimerkiksi, 493 00:36:14,900 --> 00:36:17,620 kuten okei, jos mod on 0 niin aion olla kolmas henkilö. 494 00:36:17,620 --> 00:36:22,740 Mutta me päästä sellaista miten kannattaa käsitellä mitä 0 on myöhemmin. 495 00:36:22,740 --> 00:36:32,750 Joten nyt meillä jotenkin on tapa kartoittaa zed oikealle kirjeen. 496 00:36:32,750 --> 00:36:34,920 Joten nyt olemme käyneet läpi näitä esimerkkejä, 497 00:36:34,920 --> 00:36:37,880 me tavallaan nähdä miten Caesarin voisi toimia. 498 00:36:37,880 --> 00:36:42,640 Näet 2 aakkosia ja sitten näet ne siirretään. 499 00:36:42,640 --> 00:36:44,430 Joten yrittää ilmaista, että mitä kaavassa. 500 00:36:44,430 --> 00:36:46,940 Tämä kaava on itse asiassa annetaan sinulle spec, 501 00:36:46,940 --> 00:36:52,070 mutta katsotaanpa sellaista näyttää läpi mitä kukin muuttuja tarkoittaa. 502 00:36:52,070 --> 00:36:55,000 Meidän lopputulos tulee olemaan salatekstin. 503 00:36:55,000 --> 00:36:58,300 Joten tämä kertoo, että i: nnen luonne salatekstin 504 00:36:58,300 --> 00:37:02,500 on menossa vastaamaan i luonnetta selväkielisenä. 505 00:37:02,500 --> 00:37:08,130 Tämä on järkevää, koska haluamme aina tasata näitä asioita. 506 00:37:08,130 --> 00:37:13,480 Joten se tulee olemaan i luonnetta salakieli plus k, mikä on tärkein - 507 00:37:13,480 --> 00:37:17,230 että järkevää - ja sitten meillä on tämä mod 26. 508 00:37:17,230 --> 00:37:19,860 Muistan kun meillä oli Zed 509 00:37:19,860 --> 00:37:24,190 emme halunneet päästä hahmo, joten halusimme mod se 510 00:37:24,190 --> 00:37:26,540 ja millaisia ​​Ulottumamitan aakkoset. 511 00:37:26,540 --> 00:37:33,430 Kun Zed menisit, b, c, d, kunnes sinulla on oikea numero. 512 00:37:33,430 --> 00:37:44,690 Joten me tiedämme, että Zed, jos + 6, antaisi meille f koska sen jälkeen Zedistä tulee, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Joten muistakaamme tiedämme varmasti, että Zed + 6 aikoo antaa meille f.. 514 00:37:52,530 --> 00:38:03,530 ASCII-arvot, z on 122, ja f on 102. 515 00:38:03,530 --> 00:38:10,570 Joten meidän täytyy löytää tapa tehdä meidän Caesar kaava antaa meille 102 516 00:38:10,570 --> 00:38:13,590 jälkeen ottaen 122. 517 00:38:13,590 --> 00:38:19,550 Eli jos me vain soveltaa tätä kaavaa, ('Z' + 6)% 26, joka todella antaa sinulle 24 518 00:38:19,550 --> 00:38:25,980 koska 122 + 6 128; 128% 26 saat 24 jäljellä. 519 00:38:25,980 --> 00:38:29,140 Mutta se ei oikeastaan ​​tarkoita f.. Se ei todellakaan ole 102. 520 00:38:29,140 --> 00:38:33,590 Se ei myöskään 6. kirjain aakkosissa. 521 00:38:33,590 --> 00:38:41,550 Niinpä tietysti tarvitsemme jotenkin säätämistä tätä hieman. 522 00:38:42,970 --> 00:38:51,340 Kannalta säännöllisen aakkoset, me tiedämme, että Z on 26. kirjain ja f on 6.. 523 00:38:51,340 --> 00:38:55,460 Mutta olemme tietotekniikassa, joten aiomme indeksi 0. 524 00:38:55,460 --> 00:39:00,690 Joten sen sijaan, z on numero 26, aiomme sanoa se numero 25 525 00:39:00,690 --> 00:39:02,630 koska on 0. 526 00:39:02,630 --> 00:39:04,770 Joten nyt mennään soveltaa tätä kaavaa. 527 00:39:04,770 --> 00:39:11,710 Olemme z edustaa 25 + 6, joka antaa sinulle 31. 528 00:39:11,710 --> 00:39:15,790 Ja 31 mod 26 saat 5 kuin muilta. 529 00:39:15,790 --> 00:39:20,500 Se on täydellinen, koska me tiedämme, että f on 5. kirjain aakkosissa. 530 00:39:20,500 --> 00:39:26,400 Mutta silti se ei ole F, eikö? Silti se ei ole 102. 531 00:39:26,400 --> 00:39:32,730 Joten sitten tähän PSET, haasteena on yrittää selvittää suhdetta 532 00:39:32,730 --> 00:39:36,910 välillä muuntaa näiden ASCII arvojen ja aakkosellinen hakemisto. 533 00:39:36,910 --> 00:39:40,280 Pohjimmiltaan, mitä sinun kannattaa tehdä, haluatko aloittaa kanssa ASCII arvoja, 534 00:39:40,280 --> 00:39:45,390 mutta sitten haluat jotenkin siirtääkseen aakkosellinen hakemisto 535 00:39:45,390 --> 00:39:52,610 sitten laskea mitä kirjeessä pitäisi olla - periaatteessa, mitä sen aakkosellinen hakemisto on 536 00:39:52,610 --> 00:39:57,660 ja cipher merkki - sitten kääntää se takaisin ASCII arvoja. 537 00:39:57,660 --> 00:40:04,870 Joten jos kiskaista ulos ASCII taulukon, sitten yrittää löytää suhteita, vaikkapa 102 ja 5 538 00:40:04,870 --> 00:40:10,440 tai 122 ja 25. 539 00:40:12,140 --> 00:40:15,690 Olemme saaneet myös avain komentoriviargumentit, olemme saaneet selväteksti, 540 00:40:15,690 --> 00:40:17,520 olemme Yksityisen sitä. 541 00:40:17,520 --> 00:40:19,820 Nyt kaikki olemme jäljellä vain tulostaa sen. 542 00:40:19,820 --> 00:40:22,040 Voisimme tehdä tämän usealla eri tavalla. 543 00:40:22,040 --> 00:40:24,570 Mitä voisimme tehdä, on itse tulostaa matkan varrella. 544 00:40:24,570 --> 00:40:28,250 Kuten me toistaa yli merkit merkkijonon, 545 00:40:28,250 --> 00:40:31,660 voisimme yksinkertaisesti vain tulostaa juuri silloin kun laskemme sen. 546 00:40:31,660 --> 00:40:36,030 Vaihtoehtoisesti voit myös tallentaa sen array ja on joukko merkkejä 547 00:40:36,030 --> 00:40:39,280 ja lopussa iteroida yli että koko joukko, ja tulostaa sen. 548 00:40:39,280 --> 00:40:40,980 Joten sinulla on pari vaihtoehtoa siitä. 549 00:40:40,980 --> 00:40:47,280 Ja muista, että% c tulee olemaan paikkamerkki tulostaa merkki. 550 00:40:47,280 --> 00:40:50,420 Joten siellä olemme Caesar, ja nyt siirrymme Vigenere, 551 00:40:50,420 --> 00:40:57,580 joka on hyvin samankaltainen kuin Caesar, mutta vain hieman monimutkaisempi. 552 00:40:57,580 --> 00:41:03,310 Joten olennaisesti Vigenere on aiot olla ohimennen avainsanan. 553 00:41:03,310 --> 00:41:06,510 Joten sen sijaan useita, olet menossa on merkkijono, 554 00:41:06,510 --> 00:41:09,200 ja niin että menee toimia avainsanan. 555 00:41:09,200 --> 00:41:14,440 Sitten, kuten tavallista, olet menossa saada kehotteen merkkijonon käyttäjä 556 00:41:14,440 --> 00:41:19,050 ja sitten salakoodaus se ja sitten antaa ne salakieli takaisin. 557 00:41:19,050 --> 00:41:24,650 Niin kuin sanoin, se on hyvin samanlainen kuin Caesar, paitsi sen sijaan siirtää tietyn määrän, 558 00:41:24,650 --> 00:41:30,620 numero on todellisuudessa muuttuu joka kerta siitä merkin luonnetta. 559 00:41:30,620 --> 00:41:34,890 Edustaa tätä todellinen määrä siirtää, se edustaa näppäimistön kirjaimia. 560 00:41:34,890 --> 00:41:43,150 Joten jos syöttää siirtymän, esimerkiksi niin, että vastaisi siirtäminen 0. 561 00:41:43,150 --> 00:41:45,900 Joten se on taas takaisin aakkoselliseen. 562 00:41:45,900 --> 00:41:49,100 Mikä voisi olla hyödyllistä, jos näet, että olemme todellakin tekemisissä ASCII-arvot 563 00:41:49,100 --> 00:41:51,790 sekä kirjaimia, samoin kuin aakkosellinen indeksi, 564 00:41:51,790 --> 00:41:58,020 ehkä löytää tai tehdä oman ASCII taulukon, joka osoittaa aakkosellinen hakemisto 0 kautta 25, 565 00:41:58,020 --> 00:42:03,750 Z, ja ASCII-arvot, jotta voit sellaista nähdä suhteesta 566 00:42:03,750 --> 00:42:07,020 ja hahmotella ja yrittää löytää joitakin malleja. 567 00:42:07,020 --> 00:42:11,010 Samoin jos olisit siirtymässä klo tietyt esimerkiksi F - 568 00:42:11,010 --> 00:42:21,110 ja tämä on joko pieniä tai isoja f - niin, että se vastaa 5. 569 00:42:21,110 --> 00:42:24,180 Olemmeko hyviä tähän asti? 570 00:42:25,770 --> 00:42:30,050 Kaava Vigenere on vähän erilainen. 571 00:42:30,050 --> 00:42:32,960 Periaatteessa, näet että se on aivan kuin Caesar, 572 00:42:32,960 --> 00:42:37,390 paitsi sijasta k olemme k indeksi j. 573 00:42:37,390 --> 00:42:44,810 Huomaa, että emme käytä i koska lähinnä pituus avainsanan 574 00:42:44,810 --> 00:42:49,850 ei välttämättä pituus meidän salateksti. 575 00:42:49,850 --> 00:42:56,130 Tämä on hieman selkeämpi, kun näemme esimerkiksi, että minulla on hieman myöhemmin. 576 00:42:56,130 --> 00:43:03,160 Periaatteessa, jos ajaa ohjelman avainsanan ohai, 577 00:43:03,160 --> 00:43:08,560 niin se tarkoittaa, että joka kerta, ohai tulee olla muutos. 578 00:43:08,560 --> 00:43:11,060 Joten riippuen siitä, mitä asemaa olet avainsanan, 579 00:43:11,060 --> 00:43:15,800 aiot siirtää oman tiettyjä salakieli merkki vastaavalla määrällä. 580 00:43:15,800 --> 00:43:19,630 Jälleen aivan kuten Caesar, haluamme varmistaa, että meillä säilyttää arvo asioita 581 00:43:19,630 --> 00:43:22,900 ja me vain salakoodaus kirjaimia, ei merkkejä tai välilyöntejä. 582 00:43:22,900 --> 00:43:26,330 Joten muistelen Caesar toimintoja, joita olet saattanut käyttää, 583 00:43:26,330 --> 00:43:32,570 siten, että olet päättänyt miten siirtää asioita, ja soveltaa tätä teidän ohjelma täältä. 584 00:43:32,570 --> 00:43:35,260 Joten kartoittaa tämän. 585 00:43:35,260 --> 00:43:39,680 Meillä selkokielisen että olemme mennyt käyttäjän GetString 586 00:43:39,680 --> 00:43:44,090 tätä mieltä ... on CS50! 587 00:43:44,090 --> 00:43:47,090 Sitten meillä avainsanan ohai. 588 00:43:47,090 --> 00:43:50,930 4 ensimmäistä merkkiä ovat melko yksinkertaisia. 589 00:43:50,930 --> 00:43:55,580 Tiedämme, että T aiotaan siirretään o, 590 00:43:55,580 --> 00:44:01,990 Sitten h aiotaan siirretään h, i aiotaan siirretään. 591 00:44:01,990 --> 00:44:04,610 Täällä näet että on 0, 592 00:44:04,610 --> 00:44:11,940 niin sitten loppuarvon on oikeastaan ​​aivan sama kirjain kuin ennen. 593 00:44:11,940 --> 00:44:15,250 Sitten s siirretään i. 594 00:44:15,250 --> 00:44:19,370 Mutta sitten on näitä aikoja täällä. 595 00:44:19,370 --> 00:44:25,960 Emme halua salakoodaus että, niin sitten emme muuta sitä mistään 596 00:44:25,960 --> 00:44:31,280 ja vain tulostaa ajan muuttumattomina. 597 00:44:31,280 --> 00:44:38,020 [Opiskelija] En ymmärrä miten te tiedätte, että tämä on siirretty - Mistä sinä - >> Anteeksi. 598 00:44:38,020 --> 00:44:41,620 Ylimpänä täällä näet että komentorivillä ohai täällä, 599 00:44:41,620 --> 00:44:43,740 että tulee olemaan avainsana. 600 00:44:43,740 --> 00:44:49,550 Ja niin periaatteessa, olet polkupyörä merkkiä avainsanan. 601 00:44:49,550 --> 00:44:52,020 [Opiskelija] niin o aiotaan siirtää saman - 602 00:44:52,020 --> 00:44:56,260 Niin o vastaa tietty numero aakkoset. 603 00:44:56,260 --> 00:44:58,400 [Opiskelija] Oikea. Mutta mistä sait CS50 osittain? 604 00:44:58,400 --> 00:45:02,540 Oh. Se on GetString jossa olet kuin "Anna minulle merkkijono koodata." 605 00:45:02,540 --> 00:45:07,510 [Opiskelija] He antavat teille tämän väitteen siirtyvän 606 00:45:07,510 --> 00:45:09,380 ja sitten voit kysyä ensimmäinen merkkijono. >> Joo. 607 00:45:09,380 --> 00:45:12,440 Joten kun ne ajaa ohjelmaa, he aikovat sisällyttää avainsanan 608 00:45:12,440 --> 00:45:14,740 niiden komentoriviargumentteja kun ne ajaa sitä. 609 00:45:14,740 --> 00:45:19,740 Sitten kun olet tarkistanut, että he ovat todella antanut sinulle 1 eikä enemmän, ei vähemmän, 610 00:45:19,740 --> 00:45:23,750 sitten olet menossa kysymään niitä merkkijonon, sano, "Anna minulle merkkijono." 611 00:45:23,750 --> 00:45:27,630 Niin, että jos tässä asiassa he ovat antaneet sinulle tämä ... on CS50! 612 00:45:27,630 --> 00:45:32,090 Joten aiot käyttää sitä ja käyttää ohai ja iteroida yli. 613 00:45:32,090 --> 00:45:38,200 Huomaa, että täällä me ohitetaan salaa aikana, 614 00:45:38,200 --> 00:45:51,660 mutta suhteen kantamme varten ohai, seuraava käytimme o. 615 00:45:51,660 --> 00:45:54,990 Tässä tapauksessa se on vähän vaikeampi nähdä, koska se on 4, 616 00:45:54,990 --> 00:45:57,710 joten jatkakaamme hieman. Pysy kanssani täällä. 617 00:45:57,710 --> 00:46:02,960 Sitten meillä on i ja s, jotka sitten käännetty o ja h vastaavasti. 618 00:46:02,960 --> 00:46:09,370 Sitten meillä on tilaa, ja niin sitten tiedämme, että emme aio salakoodaus tiloihin. 619 00:46:09,370 --> 00:46:18,930 Mutta huomaa, että sen sijaan menee tällä paikalla täällä, 620 00:46:18,930 --> 00:46:28,330 olemme salataan by - En tiedä, jos näet, että - täällä. 621 00:46:28,330 --> 00:46:33,710 Joten se ei ole kuin sinä itse ennalta vaikkapa O menee täällä, h menee täällä, 622 00:46:33,710 --> 00:46:39,200 menee täällä, menee täällä, o, h,, i, o, h,, minä. Et tee sitä. 623 00:46:39,200 --> 00:46:43,760 Sinä vain siirrä asemaa avainsana 624 00:46:43,760 --> 00:46:51,020 kun tiedät, että olet todella aiotaan salata todellisen kirjeen. 625 00:46:51,020 --> 00:46:53,920 Onko sellaista järkeä? 626 00:46:53,920 --> 00:46:55,800 Okei. 627 00:46:56,490 --> 00:46:58,500 Joten vain muutamia muistutuksia. 628 00:46:58,500 --> 00:47:03,760 Haluat varmistaa, että olet vain etukäteen seuraavalle kirje avainsanan 629 00:47:03,760 --> 00:47:06,390 jos merkki teidän selväkielisenä on kirjain. 630 00:47:06,390 --> 00:47:09,120 Sano me olemme o. 631 00:47:09,120 --> 00:47:19,310 Huomaamme, että seuraavan merkin, minä indeksi selvätekstin, on numero, esimerkiksi. 632 00:47:19,310 --> 00:47:31,630 Silloin emme etukäteen j, indeksi avainsanojen, kunnes pääsemme uuden kirjeen. 633 00:47:31,630 --> 00:47:36,230 Jälleen haluat myös varmistaa, että olet ympäröity alkuun avainsanan 634 00:47:36,230 --> 00:47:37,770 kun olet lopussa se. 635 00:47:37,770 --> 00:47:42,030 Jos näet täällä me olemme minä, seuraavaksi täytyy olla o. 636 00:47:42,030 --> 00:47:47,690 Joten haluat löytää jonkin keinon pysty ympäröivä alkuun avainsanan 637 00:47:47,690 --> 00:47:49,470 aina, kun päähän. 638 00:47:49,470 --> 00:47:55,040 Ja niin edelleen, millainen toimija on hyödyllistä, että tapauksessa kiertyy? 639 00:47:56,630 --> 00:47:59,840 Kuten laskentaa pois esimerkki. 640 00:47:59,840 --> 00:48:03,710 [Opiskelija] prosenttimerkki. >> Joo, prosenttimerkki, mikä on modulo. 641 00:48:03,710 --> 00:48:11,250 Joten modulo tulee kätevä täällä, kun haluat kääri yli indeksin oman ohai. 642 00:48:11,250 --> 00:48:17,700 Ja vain nopea vihje: Yritä ajatella kääre yli avainsanan vähän kuin laskenta pois, 643 00:48:17,700 --> 00:48:23,590 jos jos on 3 ryhmää, 4. henkilö, 644 00:48:23,590 --> 00:48:30,610 niiden määrä että he sanoivat oli 4 mod 3, joka oli 1. 645 00:48:30,610 --> 00:48:32,880 Joten yrittää ajatella niin. 646 00:48:34,770 --> 00:48:42,740 Kuten näitte kaavassa, missä olet ci ja pi mutta sitten kJ, 647 00:48:42,740 --> 00:48:44,700 haluat varmistaa, että voit seurata niitä. 648 00:48:44,700 --> 00:48:47,580 Sinun ei tarvitse kutsua sitä minä, sinun ei tarvitse kutsua j, 649 00:48:47,580 --> 00:48:53,270 mutta haluat varmistaa, että voit seurata kannan, että olet oman selväkielisenä 650 00:48:53,270 --> 00:48:55,790 sekä kannan, että olet in avainsanan 651 00:48:55,790 --> 00:48:59,840 koska nämä eivät välttämättä tule olemaan sama. 652 00:48:59,840 --> 00:49:06,400 Ei ainoastaan ​​avainsana - se voisi olla täysin erilainen pituus kuin selväkielisenä. 653 00:49:06,400 --> 00:49:09,140 Myös teidän selväteksti, on numeroita ja kirjaimia, 654 00:49:09,140 --> 00:49:14,450 joten se ei tule vastaamaan täydellisesti yhdessä. Kyllä. 655 00:49:14,450 --> 00:49:19,280 [Opiskelija] Onko funktio muuttaa tapauksessa? 656 00:49:19,280 --> 00:49:24,530 Voitko vaihtaa pääoman? >> Joo, siellä varmasti on. 657 00:49:24,530 --> 00:49:27,890 Voit tarkistaa - Uskon sen toupper, kaikki 1 sana. 658 00:49:30,650 --> 00:49:36,310 Mutta kun yrität salakirjoitus asioita ja säilyttää teksti, 659 00:49:36,310 --> 00:49:39,350 se on parasta pohjimmiltaan olla erillisiä tapauksia. 660 00:49:39,350 --> 00:49:42,040 Jos se on iso, niin haluat siirtää tämän 661 00:49:42,040 --> 00:49:46,460 koska kaavassa, kun muistelen, miten meidän on eräänlainen go 662 00:49:46,460 --> 00:49:50,900 vaihdellen välillä ASCII tapa edustaa numeroita 663 00:49:50,900 --> 00:49:55,020 ja varsinainen aakkosellinen hakemisto, haluamme varmistaa 664 00:49:55,020 --> 00:50:01,850 siellä tulee olemaan jonkinlainen kuvio, että aiot käyttää. 665 00:50:01,850 --> 00:50:04,580 Toinen huomautus kuvio, todella. 666 00:50:04,580 --> 00:50:07,250 Tulette varmasti käsitellä numeroita. 667 00:50:07,250 --> 00:50:11,280 Yritä käyttää Magic Numbers, joka on esimerkki tyyliin. 668 00:50:11,280 --> 00:50:18,470 Sano haluat aina ajansiirto jotain haluat - 669 00:50:18,470 --> 00:50:22,400 Okei, joten vihje, toinen spoileri on, kun olet menossa on siirtymässä jotain 670 00:50:22,400 --> 00:50:26,310 tietyllä määrällä, yritä edustamaan että todellinen määrä 671 00:50:26,310 --> 00:50:32,810 vaan kokeilla ja nähdä, jos voit käyttää ASCII-arvo, joka tavallaan järkevämpää. 672 00:50:32,810 --> 00:50:35,470 Toinen huomautus: Koska olemme tekemisissä kaavoja, 673 00:50:35,470 --> 00:50:41,200 vaikka teidän TF sellaista mitä kuvio saatat käyttää, 674 00:50:41,200 --> 00:50:44,430 parasta teidän kommentteja eräänlainen selittää logiikka, niinku, 675 00:50:44,430 --> 00:50:51,880 "Käytän tätä mallia, koska ..." ja millaisia ​​selittää kuvion ytimekkäästi teidän kommentteja. 676 00:50:54,090 --> 00:50:58,990 [Tämä oli walkthrough 2] Jos ei ole muita kysymyksiä, niin minä vain jäädä tänne vähän. 677 00:50:58,990 --> 00:51:04,370 Onnea PSET 2: Crypto ja kiitos kun tulitte. 678 00:51:06,070 --> 00:51:08,620 [Opiskelija] Kiitos. >> Kiitos. 679 00:51:09,220 --> 00:51:10,800 [Media Offline intro]