1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Walkthrough - Vandamál Set 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Harvard University] 3 00:00:05,170 --> 00:00:07,490 [Þetta er CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Allt í lagi. Halló, allir, og velkomin til walkthrough 2. 5 00:00:10,750 --> 00:00:14,330 Fyrst vil ég óska ​​til hamingju þú fyrir að klára pset 1. 6 00:00:14,330 --> 00:00:18,140 Ég veit að það gæti verið svolítið erfitt fyrir sum ykkar, 7 00:00:18,140 --> 00:00:20,460 gæti hafa verið fyrsta tölvan program sem þú skrifaðir, 8 00:00:20,460 --> 00:00:24,500 en bara muna að í lok þessa, þegar þú lítur til baka í lok misseris, 9 00:00:24,500 --> 00:00:29,820 þú munt líta á pset 1 og þú munt segja: "Hey, ég hefði getað gert það í 5 mínútur." 10 00:00:29,820 --> 00:00:35,700 Svo vita og treysta því að í lok þessa sem þú munt örugglega finna pset 1 alveg einfalt. 11 00:00:35,700 --> 00:00:40,640 En nú er það mikið afrek, og til hamingju til að fá gert. 12 00:00:40,640 --> 00:00:44,010 Nú, einnig a fljótur í huga áður en við komum inn í kjöt á walkthrough. 13 00:00:44,010 --> 00:00:48,340 Ég vil bara að gera a fljótur í huga að ég stundum ekki hafa nægan tíma 14 00:00:48,340 --> 00:00:52,500 á walkthroughs til að fara í gegnum hvert einasta leið til að gera vandamálið sett 15 00:00:52,500 --> 00:00:56,140 og frekar bara kannski einblína á 1 eða 2 konar gerð, 16 00:00:56,140 --> 00:00:57,750 leiðir sem þú gætir gert þetta. 17 00:00:57,750 --> 00:01:01,970 En það er ekki að segja að þú ert bannaður frá að gera það á annan hátt. 18 00:01:01,970 --> 00:01:05,980 Það eru oft, eins og með tölvunarfræði, margar leiðir til að gera hlutina, 19 00:01:05,980 --> 00:01:12,190 og svo örugglega ekki hika við að nota aðra tegund af lausn en ég kann að hafa fram. 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. Hluta Spurningar - 1. Caesar - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 Allt í lagi. Svo vandamálið sett 2: Crypto er skemmtilegt. 23 00:01:20,650 --> 00:01:24,500 Aftur, með hverjum pset þú munt byrja með hluta af spurningum 24 00:01:24,500 --> 00:01:29,600 það er að fara að fara fram í köflum þinn með úthlutun kennslu náungi þinn. 25 00:01:29,600 --> 00:01:31,670 Við erum ekki að fara að fara í gegnum þetta á walkthrough, 26 00:01:31,670 --> 00:01:35,100 en þeir örugglega mun hjálpa þér að ljúka pset. 27 00:01:35,100 --> 00:01:38,100 Þannig er fyrsti hluti af vandamálinu setja Caesar. 28 00:01:38,100 --> 00:01:43,470 Og svo í keisarans einhver mun fara þér lykill með heiltala, 29 00:01:43,470 --> 00:01:48,420 og þú verður að dulkóða textastrenginn sem þeir veita þér 30 00:01:48,420 --> 00:01:50,670 og gefa þeim aftur dulkóðuð hlutur. 31 00:01:50,670 --> 00:01:56,050 Ef einhver horfði á jólin Story, það er dæmi um að það. 32 00:01:56,050 --> 00:01:59,090 Þá er seinni hluti af vandamálinu setja Vigenere, 33 00:01:59,090 --> 00:02:01,790 sem er a fleiri háþróaður dulkóðun tækni. 34 00:02:01,790 --> 00:02:05,640 Og svo við erum að fara að encipher stykki af texta, 35 00:02:05,640 --> 00:02:09,600 nema í stað með aðeins einni heiltölu, erum við í raun að fara að umrita það 36 00:02:09,600 --> 00:02:13,340 með leitarorð sem notandi mun veita okkur. 37 00:02:16,270 --> 00:02:22,090 Allt í lagi, þannig að fyrsta tól í verkfærakistu dag er í raun að fara að uppfæra tækið. 38 00:02:22,090 --> 00:02:26,430 Á umræðu borð við viljum sjá hlutina eins, "Hvers vegna ekki þetta?" 39 00:02:26,430 --> 00:02:28,110 "Hvers vegna ekki fram 50 verk?" 40 00:02:28,110 --> 00:02:31,830 og oft er lausnin í raun bara til að uppfæra tækið þitt. 41 00:02:31,830 --> 00:02:36,730 Og svo ef þú keyrir bara í flugstöðinni glugga í sudo tæki þínu Yum-y - 42 00:02:36,730 --> 00:02:40,040 það er fáni segja já, uppfæra allt - Update, 43 00:02:40,040 --> 00:02:42,280 þá tæki mun uppfæra ef þörf krefur. 44 00:02:42,280 --> 00:02:46,960 Og það er ekki meiða ef þú ert nú þegar í nýjustu útgáfu af tækinu. 45 00:02:46,960 --> 00:02:51,280 Þá verður bara að segja engar nýjar uppfærslur í boði og þú getur haldið áfram að vinna með. 46 00:02:51,280 --> 00:02:55,800 En þetta er gott að framkvæma jafnvel í hvert skipti sem þú opnar tækið 47 00:02:55,800 --> 00:02:57,140 vegna þess að við erum enn mjög mikið - 48 00:02:57,140 --> 00:03:00,320 stundum ef við komum inn í galla - Lagað hana í tækinu. 49 00:03:00,320 --> 00:03:03,180 Svo tryggja að þú hafir nýjustu útgáfu af tækinu 50 00:03:03,180 --> 00:03:07,710 og hlaupa að uppfæra það. 51 00:03:07,710 --> 00:03:14,360 Allt í lagi. Svo þar sem við erum að fást við bréf og breytast enciphering hluti, 52 00:03:14,360 --> 00:03:20,410 við erum að fara að virkilega að verða bestu vinir við ASCII töfluna okkar. 53 00:03:20,410 --> 00:03:24,350 Það eru fjölmargir sjálfur á netinu, ef þú finnur. Kannski jafnvel að gera þitt eigið. 54 00:03:24,350 --> 00:03:29,950 Í grundvallaratriðum, með hverjum staf og hvert númer og hvert eðli 55 00:03:29,950 --> 00:03:32,210 There er a tala í tengslum við þá, 56 00:03:32,210 --> 00:03:38,670 og svo það er gott að sjá ASCII gildi þeirra hlið raunverulegt bréf. 57 00:03:38,670 --> 00:03:42,310 Það mun örugglega hjálpa þér í vandamál setja. 58 00:03:42,310 --> 00:03:45,750 Eitt sem raunverulega hjálpaði mér í þetta vandamál sett var í raun prenta það út, 59 00:03:45,750 --> 00:03:48,380 og eins og ég var að fara í gegnum, myndi ég reyndar draga á það, 60 00:03:48,380 --> 00:03:51,150 skrifa, "Ef þetta er að fara þangað, þá ..." 61 00:03:51,150 --> 00:03:55,270 Konar draga á það og merkja það upp, verða bestu vinir við ASCII töflunni. 62 00:03:57,240 --> 00:04:00,750 Þá höfum við nokkrar aðrar verkfæri til ráðstöfunar okkar. 63 00:04:00,750 --> 00:04:03,750 Að þessu sinni í stað þess vekur reyndar notanda fyrir alla inntak þeirra 64 00:04:03,750 --> 00:04:05,230 við erum að fara að gera samsetningu. 65 00:04:05,230 --> 00:04:06,880 Við ætlum að biðja þá um nokkurt inntak, 66 00:04:06,880 --> 00:04:11,350 en við erum líka að fara bara að nota the stjórn lína rifrildi. 67 00:04:11,350 --> 00:04:15,600 Svo þegar þeir hlaupa program, yfirleitt er sagt. / Halló, til dæmis, 68 00:04:15,600 --> 00:04:17,310 Ef forritið þitt var hello.c. 69 00:04:17,310 --> 00:04:22,500 En í þetta skiptið í stað þess bara að segja að, þeir geta sett orð, rök eftir. 70 00:04:22,500 --> 00:04:27,210 Og svo við erum að fara að nota það sem þeir fara í okkur og inntak þeirra eins og heilbrigður, 71 00:04:27,210 --> 00:04:31,720 svo flytja út bara vekur að heiltala heldur einnig með því að nota stjórn lína rifrildi. 72 00:04:31,720 --> 00:04:36,590 Og þá munum við fara í fylki og strengi, sem við munum vera að nota mikið eins og heilbrigður. 73 00:04:41,460 --> 00:04:44,810 Hér er bara dæmi um 1 lítill ASCII töfluna. 74 00:04:44,810 --> 00:04:48,460 Eins og ég sagði, hvert bréf samsvarar númeri 75 00:04:48,460 --> 00:04:52,510 og svo kynna þér það. Það mun koma sér vel. 76 00:04:52,510 --> 00:04:55,610 Og seinna þegar við byrjum að gera sumir ASCIIMath takast með númerum - 77 00:04:55,610 --> 00:05:00,110 bæta, draga þá - þá örugglega gott að vísa í þessa töflu. 78 00:05:02,860 --> 00:05:06,920 Svo er hér dæmi um Caesar dulmál - eitthvað sem þú gætir hafa spilað með. 79 00:05:06,920 --> 00:05:11,190 Það er bara hjól. Í meginatriðum, það er ytri stafróf og þá er innri stafróf. 80 00:05:11,190 --> 00:05:15,290 Svo er hérna dæmi um Caesar dulmál en með takka af 0. 81 00:05:15,290 --> 00:05:21,540 Í meginatriðum, A er í samræmi við A, B er í samræmi við B, alla leið upp til Z. 82 00:05:21,540 --> 00:05:26,590 En þá segjum við vildum lykil af 3, til dæmis. 83 00:05:26,590 --> 00:05:33,280 Þá myndum við snúa innri hjólinu þannig að A nú raða í beina röð með D, osfrv 84 00:05:33,280 --> 00:05:35,250 Og svo er þetta í raun það sem við erum að fara að gera. 85 00:05:35,250 --> 00:05:38,340 Við höfum ekki hjól, en það sem við erum að fara að gera er að gera áætlun okkar 86 00:05:38,340 --> 00:05:44,490 konar breyting stafrófið með okkur ákveðna upphæð af tölum. 87 00:05:44,490 --> 00:05:48,650 Svo eins og ég sagði áður, við erum að fara að takast á við stjórn lína rifrildi 88 00:05:48,650 --> 00:05:50,390 og fá heiltölu. 89 00:05:50,390 --> 00:05:55,050 Svo er leiðin sem notandinn mun keyra Caesar program með því að segja. / Caesar 90 00:05:55,050 --> 00:05:58,090 og slá síðan inn númer eftir það. 91 00:05:58,090 --> 00:06:01,130 Og þessi tala táknar takka á vakt, 92 00:06:01,130 --> 00:06:06,740 hversu oft þú ert að fara að snúa innri hjól Caesar dulmál þinn. 93 00:06:06,740 --> 00:06:08,390 Og svo þú sérð hér er dæmi. 94 00:06:08,390 --> 00:06:14,550 Ef við inn stafina frá A til L í Caesar dulmál okkar, 95 00:06:14,550 --> 00:06:19,520 þá myndi inntak D í O vegna þess að það er hvert bréf færst yfir 3 sinnum, 96 00:06:19,520 --> 00:06:22,080 bara eins og dæmi um hjól sem ég sýndi þér. 97 00:06:22,080 --> 00:06:25,300 Svo ef þú færð til dæmis, þetta er CS50! 98 00:06:25,300 --> 00:06:27,960 þá væri líka færa alla stafina. 99 00:06:27,960 --> 00:06:31,040 Og það er mikilvægt bæði keisarans og Vigenere 100 00:06:31,040 --> 00:06:34,890 er að við erum að fara að sleppa yfir allir non-bréf. 101 00:06:34,890 --> 00:06:39,160 Svo allir rými, stafi, etc, tölur, við erum að fara að halda þeim sama. 102 00:06:39,160 --> 00:06:42,920 Við erum bara að fara að skipta á bréfum í þessu tilfelli. 103 00:06:42,920 --> 00:06:45,870 Svo eins og þú sérð í hjólinu, höfum við bara stafina í boði fyrir okkur, 104 00:06:45,870 --> 00:06:50,150 þannig að við viljum bara að skipta stafina og dulkóða bréf. 105 00:06:51,370 --> 00:06:56,720 Svo the fyrstur hlutur til gera, sá þig að notkun fyrir keisaranum í vandamál setja 2 106 00:06:56,720 --> 00:07:05,280 er að keyra Caesar og síðan slá inn númerið þegar þú keyrir það í flugstöðinni. 107 00:07:05,280 --> 00:07:10,940 Svo er það sem við þurfum að gera til að einhvern veginn fá þessi lykill og sjá hana. 108 00:07:10,940 --> 00:07:14,730 Og svo viljum við einhvern veginn sjá það er að fara að vera á öðrum stjórn lína rifrildi. 109 00:07:14,730 --> 00:07:20,950 Sú fyrsta er að fara til vera. / Caesar, og næsta er að fara að vera lykill tala. 110 00:07:22,190 --> 00:07:29,200 Svo áður en við höfðum INT helstu (tóm) að byrja C forrit okkar. 111 00:07:29,200 --> 00:07:31,790 Við ætlum að afhýða aftur lag svolítið 112 00:07:31,790 --> 00:07:34,720 og í raun sjá að í stað þess farið í tóm til meginvirkni okkar 113 00:07:34,720 --> 00:07:37,920 við erum í raun að takast á við 2 þáttum. 114 00:07:37,920 --> 00:07:44,070 Við höfum int heitir argc og fylki af strengjum heitir argv. 115 00:07:44,070 --> 00:07:46,030 Svo er argc heiltala, 116 00:07:46,030 --> 00:07:49,640 og það táknar fjölda rökum samþykkt á forritinu. 117 00:07:49,640 --> 00:07:53,590 Og þá er argv raun lista yfir rök liðin. 118 00:07:53,590 --> 00:08:00,820 Öll rök eru strengir, og svo stendur argv array, lista af strengjum. 119 00:08:01,830 --> 00:08:03,990 Við skulum tala um fylki svolítið. 120 00:08:03,990 --> 00:08:05,940 Fylki er í raun ný gögn uppbygging. 121 00:08:05,940 --> 00:08:09,660 Við höfum ints, við höfum tveggja manna, höfum við strengi, og nú höfum við fylki. 122 00:08:09,660 --> 00:08:13,820 Fylki er gögn uppbygging sem getur haldið mörg gildi af sömu gerð, 123 00:08:13,820 --> 00:08:18,320 svo í raun, lista yfir hvað tegund þú vilt. 124 00:08:18,320 --> 00:08:24,400 Í meginatriðum, ef þú vilja a lista yfir heilar allt í 1 breytu, 125 00:08:24,400 --> 00:08:29,090 þá myndi búa til nýja breytu sem var af gerðinni int array. 126 00:08:29,090 --> 00:08:34,450 Svo fylki eru núll lán, sem þýðir að fyrsti þáttur í fylki er í vísitölunni 0. 127 00:08:34,450 --> 00:08:41,799 Ef array er lengd 4, eins og í þessu dæmi, þá síðustu þáttur þinn væri á vísitölu 3, 128 00:08:41,799 --> 00:08:44,810 sem er 4 - 1. 129 00:08:45,940 --> 00:08:48,420 Svo að búa til array, viltu gera eitthvað eins og this. 130 00:08:48,420 --> 00:08:51,440 Segjum að þú vildir að tvöfalda fjölda. 131 00:08:51,440 --> 00:08:56,520 Þetta gildir um hvers konar gögn tegund, þó. 132 00:08:56,520 --> 00:09:00,210 Svo segja að þú vilt að tvöfalda fjölda. Segjum að þú vilt kalla það pósthólf. 133 00:09:00,210 --> 00:09:04,760 Rétt eins og þú vilt frumstilla önnur tvöfaldur, 134 00:09:04,760 --> 00:09:09,760 þú myndir segja tvöfaldur og þá nafn, en í þetta skiptið vorum við að setja hornklofa, 135 00:09:09,760 --> 00:09:13,570 og svo númerið verður lengd fylkisins. 136 00:09:13,570 --> 00:09:16,840 Athugaðu að í fylki við getum ekki alltaf breytt lengd, 137 00:09:16,840 --> 00:09:21,230 þannig að þú þarft alltaf að skilgreina og velja hversu marga reiti, 138 00:09:21,230 --> 00:09:25,440 hversu mörg gildi array er að fara að halda. 139 00:09:25,440 --> 00:09:31,820 Svo að setja mismunandi gildi í array þinn, ert þú að fara að nota þetta eftirfarandi setningafræði, 140 00:09:31,820 --> 00:09:33,200 eins og þú sérð á mynd. 141 00:09:33,200 --> 00:09:37,620 Pósthólfið Þú hefur vísitalan 0 verður að vera stillt á 1,2, 142 00:09:37,620 --> 00:09:42,180 pósthólf 1 er vísitala neysluverðs sett við 2,4, osfrv 143 00:09:42,180 --> 00:09:47,910 Svo nú er að við höfum farið Fylki hluti, við skulum fara aftur til argc og argv. 144 00:09:47,910 --> 00:09:52,220 Við vitum að argv er nú fylki af strengjum. 145 00:09:52,220 --> 00:09:55,080 Svo þegar notandi fer í - segja þeir að keyra forrit - 146 00:09:55,080 --> 00:09:58,740 þeir segja. / Halló David Malan, 147 00:09:58,740 --> 00:10:05,160 hvað the program vilja gera fyrir þig þegar er í raun að koma upp með það argc og argv eru. 148 00:10:05,160 --> 00:10:07,620 Svo þú þarft ekki að hafa áhyggjur óður í þessi. 149 00:10:07,620 --> 00:10:14,370 Argc í þessu tilfelli væri 3 því það sér 3 mismunandi orð meðbiliámilli. 150 00:10:14,370 --> 00:10:18,850 Og svo þá array í þessu dæmi, fyrsta vísitölu væri. / Halló, 151 00:10:18,850 --> 00:10:21,770 næsta einn Davíð, næsta einn Malan. 152 00:10:21,770 --> 00:10:25,640 Hefur einhver séð strax hvað tengslin milli argv, 153 00:10:25,640 --> 00:10:28,990  array, og argc er? 154 00:10:32,820 --> 00:10:38,090 Já. Við munum fá inn að í td í args.c. 155 00:10:38,090 --> 00:10:42,880 Við skulum sjá hvort við getum nýtt á sambandi milli 2. 156 00:10:42,880 --> 00:10:46,550 Hér þú getur fundið það í tækið sjálfgefið forrit 157 00:10:46,550 --> 00:10:49,450 að opna. c skrá er stundum EmacsName. 158 00:10:49,450 --> 00:10:54,660 En við viljum að takast á við gedit, svo það sem þú getur gert er að þú getur hægri smellt á skrána C þinni, 159 00:10:54,660 --> 00:11:04,580 fara Properties, Opna með, og þá velja gedit, sjálfgefið 160 00:11:04,580 --> 00:11:13,020 og nú program ætti að opna í gedit stað EmacsName. 161 00:11:14,710 --> 00:11:16,290 Perfect. 162 00:11:17,120 --> 00:11:25,520 Svo hér er ég með forrit sem ég ætla að prenta út hvert lína rifrildi. 163 00:11:25,520 --> 00:11:32,050 Svo hvað sem notandi inntak, ég vil í raun skila aftur til þeirra á nýja línu. 164 00:11:32,050 --> 00:11:36,710 Svo er það skipulag sem við getum notað til að iterate yfir eitthvað - 165 00:11:36,710 --> 00:11:40,380 eitthvað sem þú notaðir líklega pset 1 þínum? 166 00:11:40,380 --> 00:11:45,840 Ef þú vilt fara í gegnum tiltekins fjölda af hlutum? >> [Nemandi] for lykkju. 167 00:11:45,840 --> 00:11:48,910 Til hliðar. Einmitt. Svo skulum byrja með til hliðar. 168 00:11:48,910 --> 00:11:56,900 Við höfum fyrir int i = 0. Við skulum byrja bara með venjulegu frumstilling breytu. 169 00:11:56,900 --> 00:12:02,370 Ég ætla að fara að skilyrði fyrir hóp og þá segi ég + +, að fara að gera hlutina þar. 170 00:12:02,370 --> 00:12:04,090 Allt í lagi. 171 00:12:04,090 --> 00:12:11,590 Svo hugsa aftur til argv ef argv er listi af rökum samþykkt til the program 172 00:12:11,590 --> 00:12:15,380 og argc er fjöldi rök í áætluninni, 173 00:12:15,380 --> 00:12:21,280 þá þýðir það að argc er fyrst og fremst lengd argv, hægri, 174 00:12:21,280 --> 00:12:28,970 af því að það eru að fara að vera eins mörg rök sem gildi argc. 175 00:12:28,970 --> 00:12:35,910 Svo ef við viljum iterate yfir hvert frumefni í argv, 176 00:12:35,910 --> 00:12:43,290 við erum að fara til að vilja hverju sinni aðgang að breytu í argv á tilteknu vísitölu. 177 00:12:43,290 --> 00:12:49,060 Það er hægt að lýsa með þessu, ekki satt? 178 00:12:49,060 --> 00:12:53,430 Þessi breyta hér táknar tiltekna band í þessu tilfelli 179 00:12:53,430 --> 00:12:57,030 því það er band array - tiltekna band á þeim tilteknu vísitölu. 180 00:12:57,030 --> 00:13:00,690 Það sem við viljum gera, í þessu tilfelli sem við viljum að prenta það út, þannig að við skulum segja printf. 181 00:13:00,690 --> 00:13:04,680 Og nú er argv a band, þannig að við viljum setja þessi tákn þar. 182 00:13:04,680 --> 00:13:08,430 Við viljum nýja línu bara til að gera það líta vel út. 183 00:13:08,430 --> 00:13:12,530 Svo hér höfum við fyrir lykkju. Við höfum ekki ástand enn. 184 00:13:12,530 --> 00:13:20,020 Svo byrjar ég á 0, og þá í hvert skipti sem það er að fara að prenta gefið band 185 00:13:20,020 --> 00:13:22,980 á viðkomandi vísitölu í fylki. 186 00:13:22,980 --> 00:13:28,410 Svo þegar viljum við hætta að prenta út þætti í fylki? 187 00:13:28,410 --> 00:13:35,720 Þegar við höfum lokið, ekki satt? Þegar við höfum náð enda fylkisins. 188 00:13:35,720 --> 00:13:38,870 Þannig að við viljum ekki að fara framhjá lengd fylkisins, 189 00:13:38,870 --> 00:13:43,700 og við vitum nú þegar að við þurfum ekki að í raun virkan finna út hvað lengd argv er 190 00:13:43,700 --> 00:13:47,520 vegna þess að það er gefið okkur, og hvað er það? Argc. Einmitt. 191 00:13:47,520 --> 00:13:56,640 Þannig að við viljum gera þetta argc ferli nokkrum sinnum. 192 00:13:56,640 --> 00:13:59,550 Ég er ekki í rétta möppu. 193 00:14:02,100 --> 00:14:03,490 Allt í lagi. 194 00:14:03,490 --> 00:14:08,990 Nú skulum gera viðföng. Engar villur, sem er frábært. 195 00:14:08,990 --> 00:14:11,430 Svo við skulum bara keyra viðföng. 196 00:14:11,430 --> 00:14:15,130 Hvað er þetta að fara að koma aftur til okkar? Það er bara að fara að prenta hana aftur. 197 00:14:15,130 --> 00:14:18,320 "Þú inputted viðföng í áætluninni, ég ætla að gefa það aftur til þín." 198 00:14:18,320 --> 00:14:23,170 Svo skulum segja að við viljum segja viðföng þá foo bar. 199 00:14:23,170 --> 00:14:26,570 Svo þá prentar það út aftur til okkar. Allt í lagi? 200 00:14:26,570 --> 00:14:30,790 Svo er dæmi um hvernig hægt er að nota argc og argv 201 00:14:30,790 --> 00:14:33,460 vita að argc táknar lengd argv. 202 00:14:33,460 --> 00:14:42,750 Gakktu úr skugga um að þú ert ekki alltaf með Fylki aðgang einn utan lengd fylkisins 203 00:14:42,750 --> 00:14:45,140 því C mun örugglega hrópa á þig. 204 00:14:45,140 --> 00:14:47,560 Þú munt fá eitthvað sem kallast a skiptingu kenna, 205 00:14:47,560 --> 00:14:52,470 sem er aldrei gaman, í rauninni að segja að þú ert að reyna að fá aðgang eitthvað 206 00:14:52,470 --> 00:14:55,000 sem er ekki til, ekki tilheyrir þér. 207 00:14:55,000 --> 00:14:59,430 Svo tryggja, og sérstaklega með núll-flokkun, við viljum ekki - 208 00:14:59,430 --> 00:15:02,390 Eins og til dæmis, ef við höfum fjölda lengd 4, 209 00:15:02,390 --> 00:15:07,240 að array vísitölu 4 er ekki til vegna þess að við byrja á 0, á núll vísitölunni. 210 00:15:07,240 --> 00:15:11,730 Það mun verða annað eðli alveg eins og lykkjur þegar við byrja á 0. 211 00:15:11,730 --> 00:15:13,610 Svo bara hafa það í huga. 212 00:15:13,610 --> 00:15:22,590 Þú vilt ekki alltaf aðgang vísitölu fjölda sem er utan seilingar. 213 00:15:26,710 --> 00:15:32,560 Þannig getum við séð nú hvernig við getum konar aðgang 214 00:15:32,560 --> 00:15:35,930 stjórn lína rök sem liðin inn 215 00:15:35,930 --> 00:15:41,330 En eins og þú sást band er argv er í raun band array. 216 00:15:41,330 --> 00:15:45,740 Svo það er í raun ekki heiltala enn, en í keisarans við viljum takast á við heiltölur. 217 00:15:45,740 --> 00:15:54,430 Til allrar hamingju, það er fall búið til fyrir okkur að geta í raun breyta streng heiltala. 218 00:15:54,430 --> 00:15:58,710 Einnig hér erum við ekki að fást við notandi inntak sem við erum vekur þá 219 00:15:58,710 --> 00:16:03,740 fyrir hjálpina hér fyrir takkann, þannig að við getum í raun ekki reprompt og segja, 220 00:16:03,740 --> 00:16:07,840 "Ó, gef mér annan heiltala, segja, ef það er ekki gild." 221 00:16:07,840 --> 00:16:10,540 En við þurfum samt að athuga að notkun. 222 00:16:10,540 --> 00:16:13,520 Í keisarans þeir eru aðeins heimilt að fara í 1 númer, 223 00:16:13,520 --> 00:16:18,030 og svo þeir þurfa að hlaupa. / Caesar og þeir verða að gefa þér númerið. 224 00:16:18,030 --> 00:16:23,660 Svo hefur argc að vera ákveðinn fjölda. 225 00:16:23,660 --> 00:16:29,060 Hvaða númer myndi það vera ef þeir þurfa að fara þér. / Caesar og þá lykillinn? 226 00:16:29,060 --> 00:16:32,920 Hvað er argc? >> [Nemandi] 2. >> Two. Einmitt. 227 00:16:32,920 --> 00:16:35,490 Svo þú vilja til vera viss um að argc er 2. 228 00:16:35,490 --> 00:16:39,620 Annars neita í rauninni að hlaupa the program. 229 00:16:39,620 --> 00:16:43,040 Í helstu það fall sem segir int helstu, 230 00:16:43,040 --> 00:16:47,360 svo þá erum við alltaf í gott starf aftur 0 við lok árangursríku áætlun. 231 00:16:47,360 --> 00:16:50,840 Svo ef, segjum, þeir gefa þér 3 stjórn lína rifrildi í stað 2 232 00:16:50,840 --> 00:16:54,350 eða gefa þér 1, til dæmis, þá hvað þú munt gera er að þú þarft að athuga að 233 00:16:54,350 --> 00:16:59,900 og svo aftur 1 segja, nei, ég get ekki haldið áfram með þessu forriti. 234 00:16:59,900 --> 00:17:03,190 [Nemandi] Það getur ekki verið pláss í texta. >> Fyrirgefðu mér? 235 00:17:03,190 --> 00:17:06,780 [Nemandi] Það getur ekki verið pláss í textanum sem þú ert að reyna að dulkóða. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 Í ljósi þeirra texta sem við erum að reyna að dulkóða, sem kemur reyndar síðar 238 00:17:11,280 --> 00:17:13,970 þegar við gefum þessi texti. 239 00:17:13,970 --> 00:17:18,260 Svo núna erum við bara að samþykkja sem rök stjórn í raun númer, 240 00:17:18,260 --> 00:17:21,579 raunveruleg breyting fyrir Caesar dulkóðun. 241 00:17:21,579 --> 00:17:27,569 [Nemandi] Hvers vegna þarf 2 í stað þess að bara 1 argc? Það er örugglega 1 númer. 242 00:17:27,569 --> 00:17:32,200 Hægri. Ástæða þess að við þurfum 2 fyrir argc stað 1 243 00:17:32,200 --> 00:17:36,260 er vegna þess að þegar þú ert að keyra forrit og segja. / Caesar eða. / halló, 244 00:17:36,260 --> 00:17:38,280 að telja í raun og veru eins og stjórn lína rifrildi. 245 00:17:38,280 --> 00:17:43,020 Svo sem tekur nú þegar upp 1 og svo þá erum við inputting 1 aukalega. 246 00:17:45,030 --> 00:17:49,440 Svo þú ert að inputting raun band í stjórn lína rifrildi. 247 00:17:49,440 --> 00:17:52,730 Það sem þú vilt gera, fyrir keisarann ​​átt við viljum að takast á við heiltölu, 248 00:17:52,730 --> 00:17:57,180 svo þú getur notað þetta atoi virka. 249 00:17:57,180 --> 00:18:02,850 Og í raun, gefa þér það í streng og þá mun það skila þér aftur heiltölu 250 00:18:02,850 --> 00:18:06,070 ef það er hægt að gera það band inn heiltölu. 251 00:18:06,070 --> 00:18:10,960 Nú man þegar við erum að fást við printf eða GetString, hlutum eins og þessi, 252 00:18:10,960 --> 00:18:13,390 Við fela í bókasöfnum sem eru sérstaklega við okkur. 253 00:18:13,390 --> 00:18:19,450 Svo í upphafi við að byrja með kjötkássa tag staðall I / O,. H, eitthvað svona. 254 00:18:19,450 --> 00:18:22,430 Jæja, atoi er ekki í einum af þessum bókasöfnum, 255 00:18:22,430 --> 00:18:26,600 svo er það sem við þurfum að gera að við þurfum að fela rétt bókasafn fyrir það. 256 00:18:26,600 --> 00:18:32,720 Svo muna aftur til walkthrough 1 þar sem ég fjallaði um handbók virka. 257 00:18:32,720 --> 00:18:37,110 Þú slærð mann í flugstöðinni og síðan fylgt eftir nafni virka. 258 00:18:37,110 --> 00:18:39,720 Og svo það mun koma upp a heild listi af notkun þess, 259 00:18:39,720 --> 00:18:42,890 en eins og það mun koma upp sem safn sem tilheyrir. 260 00:18:42,890 --> 00:18:47,000 Svo ég ætla að láta það þig til að nota handbók virka með atoi 261 00:18:47,000 --> 00:18:53,360 og reikna út hvaða bókasafn sem þú þarft að fela að vera fær um að nota atoi virka. 262 00:18:54,450 --> 00:18:57,670 Þannig að við höfum fengið lykilinn og nú kemur það til að fá texta, 263 00:18:57,670 --> 00:19:01,820 og svo sem í raun er að fara að vera notandi inntak sem þú hvetja. 264 00:19:01,820 --> 00:19:05,540 Við fjallað GetInt og GetFloat, og svo að sama skapi 265 00:19:05,540 --> 00:19:07,670 við erum að fara að takast á við GetString. 266 00:19:07,670 --> 00:19:12,440 En í þessu tilfelli sem við þurfum ekki að gera allir að gera á meðan eða á meðan lykkjur til að athuga. 267 00:19:12,440 --> 00:19:14,480 GetString mun örugglega gefa okkur a band, 268 00:19:14,480 --> 00:19:17,630 og við erum að fara að dulkóða hvað notandinn gefur okkur. 269 00:19:17,630 --> 00:19:23,770 Svo er hægt að gera ráð fyrir að öllum þessum notanda inputted strings eru réttar. 270 00:19:23,770 --> 00:19:24,670 Frábært. 271 00:19:24,670 --> 00:19:27,270 Svo þegar þú hefur fengið lykil og þegar þú hefur fengið texta, 272 00:19:27,270 --> 00:19:31,660 nú það sem eftir er að þú þarft að encipher kæra. 273 00:19:31,660 --> 00:19:36,530 Bara til fljótt ná yfir lingo, kæra er það sem notandinn gefur þér, 274 00:19:36,530 --> 00:19:41,030 og ciphertext er það sem þú aftur til þeirra. 275 00:19:42,450 --> 00:19:45,850 Svo strengi, til að vera fær um að fara í gegnum í raun bréf með bréfi 276 00:19:45,850 --> 00:19:48,550 vegna þess að við verðum að skipta öllum bréf, 277 00:19:48,550 --> 00:19:51,390 Við skiljum að strengi, ef við svona afhýða aftur lag, 278 00:19:51,390 --> 00:19:54,130 sjáum við að þeir eru bara í raun listi yfir stafi. 279 00:19:54,130 --> 00:19:55,930 Einn kemur eftir öðrum. 280 00:19:55,930 --> 00:20:01,690 Og svo við getum meðhöndla strengi sem fylki vegna þess að þeir eru fylki af stöfum. 281 00:20:01,690 --> 00:20:05,640 Svo segja þú hafa a band heitir texta, 282 00:20:05,640 --> 00:20:09,400 og innan þess breytu texta er geymd Þetta er CS50. 283 00:20:09,400 --> 00:20:15,680 Þá texti á vísitölu 0 væri höfuðborg T, 1 er vísitala neysluverðs væri h, o.fl. 284 00:20:17,530 --> 00:20:23,970 Og þá með fylki í argc td í args.c, 285 00:20:23,970 --> 00:20:27,090 sáum við að við þurftum að iterate yfir fylki 286 00:20:27,090 --> 00:20:32,440 og svo við þurftum að iterate frá i = 0 fram i er minna en lengd. 287 00:20:32,440 --> 00:20:35,560 Þannig að við þurfum á einhvern hátt að vangaveltur út hvaða lengd band okkar er 288 00:20:35,560 --> 00:20:37,090 ef við erum að fara að iterate yfir það. 289 00:20:37,090 --> 00:20:42,300 Sem betur fer aftur, það er fall þar fyrir okkur, þó síðar í CS50 290 00:20:42,300 --> 00:20:45,860 þú munt örugglega vera fær um að framkvæma og gera eigin virka 291 00:20:45,860 --> 00:20:48,260 sem getur reiknað lengd streng. 292 00:20:48,260 --> 00:20:52,120 En nú erum við að fara að nota band lengd, svo strlen. 293 00:20:52,120 --> 00:21:00,440 Þú fara í streng, og þá mun það skila þér int sem sýnir lengd band þinn. 294 00:21:00,440 --> 00:21:05,840 Við skulum líta á dæmi um hvernig við gætum vera fær um að iterate yfir hvern staf í streng 295 00:21:05,840 --> 00:21:08,470 og gera eitthvað með það. 296 00:21:08,470 --> 00:21:13,250 Það sem við viljum gera er að iterate yfir hvern staf í strengnum, 297 00:21:13,250 --> 00:21:19,150 og það sem við viljum gera er að við prentað aftur hvern staf 1 af 1 298 00:21:19,150 --> 00:21:22,060 nema við bætum eitthvað við hliðina á henni. 299 00:21:22,060 --> 00:21:27,020 Svo skulum byrja með til hliðar. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Við ætlum að fara pláss fyrir ástand. 301 00:21:32,700 --> 00:21:36,840 Við viljum iterate fyrr en við náum í lok band, ekki satt? 302 00:21:36,840 --> 00:21:41,340 Svo hvað þá aðgerð gefur okkur lengd strengsins? 303 00:21:41,340 --> 00:21:43,160 [Inaudible nemandi svar] 304 00:21:43,160 --> 00:21:46,420 Það er lengd lína rifrildi. 305 00:21:46,420 --> 00:21:50,650 En fyrir streng sem við viljum að nota aðgerð sem gefur okkur lengd strengsins. 306 00:21:50,650 --> 00:21:53,090 Svo það er band lengd. 307 00:21:53,090 --> 00:21:57,130 Og svo þá verður þú að fara í band við það. 308 00:21:57,130 --> 00:21:59,760 Það þarf að vita hvaða band það þarf að reikna út lengd. 309 00:21:59,760 --> 00:22:03,160 Svo í þessu tilfelli sem við erum að fást við er strengur. 310 00:22:04,790 --> 00:22:05,860 Frábært. 311 00:22:05,860 --> 00:22:10,770 Svo það sem við viljum gera, við skulum printf. 312 00:22:10,770 --> 00:22:14,850 Nú viljum við að takast á við persónur. Við viljum að prenta út hverja einstaka staf. 313 00:22:14,850 --> 00:22:22,150 Þegar þú vilt það til að prenta út fljóta, myndir þú nota tákn eins og% f. 314 00:22:22,150 --> 00:22:24,580 Með INT þú myndir nota% d. 315 00:22:24,580 --> 00:22:30,890 Og svo á sama hátt, með persónu sem þú notar% c að segja að ég ætla að fara að prenta staf 316 00:22:30,890 --> 00:22:34,570 sem er geymd inni í breytu. 317 00:22:34,570 --> 00:22:40,840 Þannig að við höfum það, og við skulum bæta við tíma og rúm til þess. 318 00:22:40,840 --> 00:22:45,430 Hvaða persóna erum við að nota? 319 00:22:45,430 --> 00:22:49,780 Við ætlum að vera með hvað sem persóna við erum á af the band. 320 00:22:49,780 --> 00:22:52,890 Svo við erum að fara að vera með eitthvað með band, 321 00:22:52,890 --> 00:22:56,420 en við viljum vera að nota ákveðin eðli þar. 322 00:22:56,420 --> 00:23:02,740 Svo ef strengur er bara fylki, þá hvernig aðgang við þætti fylki? 323 00:23:02,740 --> 00:23:06,480 Við höfum þá hornklofum, og þá erum við að setja vísitölu þar. 324 00:23:06,480 --> 00:23:11,820 Þannig að við höfum hornklofum. Vísitala okkar í þessu tilfelli getum við bara notað i. Einmitt. 325 00:23:15,290 --> 00:23:22,370 Svo hér erum við að segja að við erum að fara að prenta staf á eftir punkti og aðstöðu, 326 00:23:22,370 --> 00:23:30,870 og það eðli er að fara til vera the ith bréf í S band okkar. 327 00:23:32,920 --> 00:23:39,330 Ég ætla bara að fara að spara það. Allt í lagi. 328 00:23:42,510 --> 00:23:46,840 Nú ætla ég að keyra band lengd. 329 00:23:46,840 --> 00:23:53,440 Svo fengum við band heitir OMG, og nú er lögð áhersla á enn meira. 330 00:23:53,440 --> 00:23:57,870 Á sama hátt, við skulum segja að við viljum í raun og veru að fá band frá notanda. 331 00:23:57,870 --> 00:23:59,580 Hvernig gætum við gert þetta? 332 00:23:59,580 --> 00:24:01,610 Áður, hvernig fáum við int? 333 00:24:01,610 --> 00:24:08,040 Við sögðum GetInt, ekki satt? En þetta er ekki int, þannig að við skulum GetString. 334 00:24:11,780 --> 00:24:17,770 Við skulum gera band lengd. Hér ekki inn ákveðna hvetja. 335 00:24:17,770 --> 00:24:19,940 Svo ég veit ekki. 336 00:24:19,940 --> 00:24:23,820 Ég ætla að setja nafn mitt hér og svo þá get ég gert eitt af þessum hlutum 337 00:24:23,820 --> 00:24:29,600 þar sem ég tengja orð fyrir hvern staf eða eitthvað svoleiðis. Cool. 338 00:24:29,600 --> 00:24:31,900 Svo það er band lengd. 339 00:24:33,000 --> 00:24:34,640 Þannig að við erum aftur á keisaranum. 340 00:24:34,640 --> 00:24:38,620 Við höfum nokkur tæki um hvernig við iterate yfir band, 341 00:24:38,620 --> 00:24:41,250 hvernig við aðgang hverja einustu frumefni. 342 00:24:41,250 --> 00:24:44,720 Svo nú getum við fengið aftur til áætlun. 343 00:24:44,720 --> 00:24:48,650 Eins og ég nefndi áður, í ASCII töflunni, besti vinur þinn, 344 00:24:48,650 --> 00:24:52,300 þú ert að fara að sjá tölurnar sem eru tengd við hvert bréf. 345 00:24:52,300 --> 00:24:55,900 Svo hér segja kæra okkar er ég svimar! 346 00:24:55,900 --> 00:25:01,090 Þá hver þessara persóna er að fara að hafa númer og ASCII gildi í tengslum við það, 347 00:25:01,090 --> 00:25:04,710 jafnvel úrfellingarmerki, jafnvel pláss, jafnvel upphrópunarmerki, 348 00:25:04,710 --> 00:25:06,600 svo þú þarft að hafa það í huga. 349 00:25:06,600 --> 00:25:12,360 Svo segja lykilinn okkar að notandi með í stjórn lína rifrildi þeirra er 6. 350 00:25:12,360 --> 00:25:17,770 Það þýðir að í fyrsta bréfinu, sem er ég, sem er táknað með 73, 351 00:25:17,770 --> 00:25:25,610 þú vilt fara aftur til þeirra hvað stafur er táknuð með ASCII gildi 73 + 6. 352 00:25:25,610 --> 00:25:29,020 Í þessu tilfelli sem væri 79. 353 00:25:30,840 --> 00:25:35,040 Nú viljum við fara að næsta staf. 354 00:25:35,040 --> 00:25:40,960 Svo næst á vísitölu 1 í kæra yrði úrfellingarmerki. 355 00:25:40,960 --> 00:25:46,780 En mundu að við viljum bara að encipher stafina. 356 00:25:46,780 --> 00:25:50,040 Þannig að við viljum ganga úr skugga um að úrfellingarmerki raun dvöl the sami, 357 00:25:50,040 --> 00:25:54,310 að við breytast ekki frá 39 til hvað 45 er. 358 00:25:54,310 --> 00:25:57,150 Við viljum halda því sem úrfellingarmerki. 359 00:25:57,150 --> 00:26:00,780 Svo viljum við að muna að aðeins encipher stafina 360 00:26:00,780 --> 00:26:04,560 vegna þess að við viljum öll önnur tákn til að haldast óbreytt í áætlun okkar. 361 00:26:04,560 --> 00:26:07,130 Annar hlutur sem við viljum er að varðveita hástöfum. 362 00:26:07,130 --> 00:26:10,250 Svo þegar þú ert með hástafi bréf, ætti það að vera sem hástaf. 363 00:26:10,250 --> 00:26:12,830 Lowercases ætti að vera eins og lágstafir. 364 00:26:13,620 --> 00:26:19,480 Svo nokkrar gagnlegar aðgerðir til að vera fær um að takast á við aðeins enciphering bréf 365 00:26:19,480 --> 00:26:22,380 og halda vörð um fjármögnun hluta 366 00:26:22,380 --> 00:26:25,130 er isalpha, isupper, islower virka. 367 00:26:25,130 --> 00:26:29,270 Og svo eru þetta aðgerðir sem skila þér Boolean gildi. 368 00:26:29,270 --> 00:26:34,180 Í grundvallaratriðum, satt eða ósatt. Er þetta há? Er þetta tölu? 369 00:26:34,180 --> 00:26:37,180 Er þetta bréf, í meginatriðum. 370 00:26:37,180 --> 00:26:41,070 Svo hér eru 3 dæmi um hvernig þú vilt nota það virka. 371 00:26:41,070 --> 00:26:47,060 Í grundvallaratriðum, þú gætir prófað hvort gildi aftur til þín með þessi aðgerð er satt eða ósatt 372 00:26:47,060 --> 00:26:49,400 byggt á því inntak. 373 00:26:49,400 --> 00:26:54,880 Annaðhvort ekki encipher eitthvað eða dulmáli hana eða tryggja að það hástafi o.fl. 374 00:26:54,880 --> 00:27:01,080 [Nemandi] Geturðu útskýrt bara þá aðeins meira og hvernig þú notar þá? >> Já, fyrir viss. 375 00:27:01,080 --> 00:27:08,470 Þannig að ef við lítum til baka, hér erum við með fjármagn I, ekki satt? 376 00:27:08,470 --> 00:27:14,550 Þannig að við vitum að ég fer til O því ég + 6 er O. 377 00:27:14,550 --> 00:27:18,740 En við viljum vera viss um að um að O er að fara að vera höfuðborg O. 378 00:27:18,740 --> 00:27:22,940 Svo í grundvallaratriðum, það er góður af að fara að breyta inntak okkar. 379 00:27:22,940 --> 00:27:26,870 Svo hvort sem það er hástafi eða ekki vilja konar breytt því hvernig við takast á við það. 380 00:27:26,870 --> 00:27:32,360 Svo ef við notum isupper virka á viðkomandi vísitölu, 381 00:27:32,360 --> 00:27:36,480 svo isupper ("ég"), sem skilar fyrir okkur satt, þannig að við vitum að það er efri. 382 00:27:36,480 --> 00:27:40,360 Þá byggist á því, síðar við munum fara inn í formúlu 383 00:27:40,360 --> 00:27:42,750 sem þú munt nota til að skipta hlutum í keisaranum 384 00:27:42,750 --> 00:27:46,560 Svo í grundvallaratriðum, það er að fara að vera aðeins öðruvísi uppskrift ef það er hástafi 385 00:27:46,560 --> 00:27:50,670 eins og til lágstafir. Skynsamleg? 386 00:27:51,020 --> 00:27:52,760 Já. Engar áhyggjur. 387 00:27:54,900 --> 00:27:58,990 Ég talaði aðeins um að bæta 6 við bréfi, sem er ekki alveg að gera skilningarvit 388 00:27:58,990 --> 00:28:05,500 nema þegar við skiljum svona að þessir stafir 389 00:28:05,500 --> 00:28:08,920 eru eins konar víxlanlegur með heiltölur. 390 00:28:08,920 --> 00:28:11,250 Það sem við gerum er að við hvers konar notkun óbeina steypu. 391 00:28:11,250 --> 00:28:18,100 Við munum fara í steypu aðeins seinna þar sem þú tekur gildi og þú snúa það inn í a ólíkur tegund 392 00:28:18,100 --> 00:28:20,440 en það var upphaflega. 393 00:28:20,440 --> 00:28:25,910 En með þessu pset við munum vera fær til tegund jöfnum höndum að nota stafi 394 00:28:25,910 --> 00:28:30,880 og þeirra samsvarandi tölustafi. 395 00:28:30,880 --> 00:28:35,140 Svo ef þú encase einfaldlega staf með aðeins einn quotes, 396 00:28:35,140 --> 00:28:40,390 þá munt þú vera fær um að vinna með það með heiltölur, að takast á við það sem heiltölu. 397 00:28:40,390 --> 00:28:48,040 Svo snýr höfuðborg C til 67 ára. Lágstafir f lýtur í 102. 398 00:28:48,040 --> 00:28:51,480 Aftur, ef þú vilt vita þessi gildi, líta á ASCII töflunni. 399 00:28:51,480 --> 00:28:56,160 Svo skulum við fara inn í nokkur dæmi um hvernig þú might vera fær til draga og bæta við, 400 00:28:56,160 --> 00:29:03,130 hvernig þú getur raunverulega raunverulega vinna með þessum stöfum, nota þá jöfnum höndum. 401 00:29:03,870 --> 00:29:11,350 Ég segi að ASCIIMath er að fara að reikna út að bæta við stafnum heiltala 402 00:29:11,350 --> 00:29:17,590 og þá sýnir hlýst eðli eins og heilbrigður eins og the hlýst ASCII gildi. 403 00:29:17,590 --> 00:29:22,290 Og svo hér er ég að segja - we'll takast á við þessa hluti seinna - 404 00:29:22,290 --> 00:29:29,100 en í grundvallaratriðum er ég að segja að notandinn ætti að segja keyra ASCIIMath ásamt lykli, 405 00:29:29,100 --> 00:29:30,880 og ég er að segja að þessi lykill er að fara til vera the tala 406 00:29:30,880 --> 00:29:34,600 sem við erum að fara að bæta þessum staf. 407 00:29:34,600 --> 00:29:38,560 Svo hér eftir því að þar sem ég er krefjandi lykil 408 00:29:38,560 --> 00:29:40,590 þar sem ég er krefjandi að þeir eru að gefa mér 1 hlut, 409 00:29:40,590 --> 00:29:45,600 Ég vil bara að sætta sig við. / Asciimath og lykill. 410 00:29:45,600 --> 00:29:49,330 Þannig að ég ætla að krefjast þess að argc er jafnt 2. 411 00:29:49,330 --> 00:29:54,360 Ef það er ekki, þá er ég að fara að skila 1 og the program vilja hætta. 412 00:29:55,070 --> 00:29:58,540 Þannig að ég er að segja að lykillinn er ekki að fara til vera the fyrstur stjórn lína rifrildi, 413 00:29:58,540 --> 00:30:05,080 það er að fara til vera the second einn, og eins og þú sérð hér, 414 00:30:05,080 --> 00:30:11,790 Ég ætla að snúa þessi inn heiltölu. 415 00:30:15,740 --> 00:30:19,230 Og ég ætla að setja inn staf til að r. 416 00:30:19,230 --> 00:30:23,970 Takið eftir að gerð breytu CHR er í raun heiltala. 417 00:30:23,970 --> 00:30:30,480 Leiðin sem ég er fær um að nota r sem heiltala er með encasing það með þessum einn quotes. 418 00:30:33,850 --> 00:30:40,560 Svo aftur til printf yfirlýsingu okkar þar sem við höfum tákn fyrir persónu 419 00:30:40,560 --> 00:30:43,590 og þá tákn fyrir heiltölu, 420 00:30:43,590 --> 00:30:49,450 eðli er fulltrúi CHR og heiltala er lykillinn. 421 00:30:49,450 --> 00:30:54,320 Og svo þá erum við að fara í vegna bæta 2 saman. 422 00:30:54,320 --> 00:30:58,420 Þannig að við erum að fara að bæta við r + hvað lykillinn er, 423 00:30:58,420 --> 00:31:03,520 og þá erum við að fara að prenta niðurstöðu um það. 424 00:31:06,210 --> 00:31:14,220 Svo skulum gera asciimath. Það er upp til dagsetning, svo að við skulum bara hlaupa asciimath. 425 00:31:14,220 --> 00:31:18,290 Ó, en sjá, er það ekki að gera neitt vegna þess að við vissum ekki í raun að gefa það a takkann. 426 00:31:18,290 --> 00:31:23,850 Svo þegar það kom bara 1, helstu virkni okkar aftur það bara aftur til okkar. 427 00:31:23,850 --> 00:31:29,250 Svo skulum við fara í takkann. Einhver að gefa mér númerið. >> [Nemandi] 4. 428 00:31:29,250 --> 00:31:30,920 4. Allt í lagi. 429 00:31:30,920 --> 00:31:39,280 Svo R jókst um 4 er að fara að gefa okkur V, sem samsvarar ASCII gildi af 118. 430 00:31:39,280 --> 00:31:43,880 Svo það gerir konar vit því - 431 00:31:43,880 --> 00:31:51,250 Reyndar má ég spyrja þig, hvað finnst þér ASCII gildi r er hvort R + 4 er 118? 432 00:31:53,070 --> 00:31:55,470 Þá já, r er 114. 433 00:31:55,470 --> 00:32:03,010 Svo ef þú horfir á ASCII töflunni þá víst, munt þú sjá að R er táknuð með 114. 434 00:32:03,010 --> 00:32:08,610 Svo nú er að við vitum að við getum bætt heiltölur til stafi, þetta virðist frekar einfalt. 435 00:32:08,610 --> 00:32:12,740 Við erum bara að fara að iterate á band eins og við sáum í dæmi áður. 436 00:32:12,740 --> 00:32:17,170 Við munum athuga hvort það bréf. 437 00:32:17,170 --> 00:32:20,420 Ef það er, þá munum við skipta því með hvaða lykill er. 438 00:32:20,420 --> 00:32:23,650 Pretty einfalt, nema þegar þú færð að eins þetta, 439 00:32:23,650 --> 00:32:32,140 þú sérð að z, fulltrúi 122, þá myndi gefa þér mismunandi karakter. 440 00:32:32,140 --> 00:32:37,770 Við viljum í raun og veru að vera í stafrófinu okkar, ekki satt? 441 00:32:37,770 --> 00:32:43,180 Þannig að við þurfum að reikna út á einhvern hátt að hvers konar umbúðir í kring. 442 00:32:43,180 --> 00:32:47,190 Þegar þú nærð Zed og þú vilt að auka við ákveðinn fjölda, 443 00:32:47,190 --> 00:32:51,230 þú vilt ekki að fara í utan ASCII stafrófið kafla; 444 00:32:51,230 --> 00:32:54,140 þú vilt að vefja aftur alla leið til A. 445 00:32:54,140 --> 00:32:58,550 En hafðu í huga að þú ert enn að varðveita málið. 446 00:32:58,550 --> 00:33:00,980 Svo vita að bréf geta ekki orðið tákn 447 00:33:00,980 --> 00:33:05,290 bara eins og tákn eru ekki að fara að breyta eins og heilbrigður. 448 00:33:05,290 --> 00:33:08,170 Í síðasta pset þú örugglega ekki að, 449 00:33:08,170 --> 00:33:14,310 en möguleiki var að innleiða gráðugur pset þinn með því að nota stuðull virka. 450 00:33:14,310 --> 00:33:17,230 En nú erum við í raun að fara að þurfa að nota stuðull, 451 00:33:17,230 --> 00:33:19,900 þannig að við skulum bara fara yfir þetta smá. 452 00:33:19,900 --> 00:33:26,920 Í meginatriðum, þegar þú hefur x modulo y, sem gefur þér afganginn af x deilt með y. 453 00:33:26,920 --> 00:33:30,930 Hér eru nokkur dæmi hér. Við höfum 27% 15. 454 00:33:30,930 --> 00:33:36,200 Í grundvallaratriðum, þegar þú draga 15 frá 27 eins oft og mögulegt er án þess að fá neikvæð 455 00:33:36,200 --> 00:33:39,060 þá færðu 12 til vinstri yfir. 456 00:33:39,060 --> 00:33:44,650 Svo það er góður af eins og í stærðfræði samhengi, en hvernig getum við notað í raun það? 457 00:33:44,650 --> 00:33:47,100 Það er að fara að vera gagnlegt fyrir wrapover okkar. 458 00:33:47,100 --> 00:33:55,420 Fyrir þetta, við skulum bara segja að ég bað ykkur að skipta í 3 hópa. 459 00:33:55,420 --> 00:33:58,010 Stundum gera þetta í hópum og eitthvað svoleiðis. 460 00:33:58,010 --> 00:34:01,320 Segja að ég sagði, "Jæja, ég vil ykkur öll til að vera skipt í 3". 461 00:34:01,320 --> 00:34:04,240 Hvernig getur þú gert það? 462 00:34:04,240 --> 00:34:06,810 [Inaudible nemandi svar] Já, nákvæmlega. Telja burt. Allt í lagi. 463 00:34:06,810 --> 00:34:10,260 Við skulum í raun að gera það. Viltu byrja? 464 00:34:10,260 --> 00:34:13,810 [Nemendur telja á] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 En mundu ... >> [Nemandi] Ó, fyrirgefðu. 466 00:34:16,620 --> 00:34:18,730 Það er mjög góður punktur. 467 00:34:18,730 --> 00:34:24,130 Þú sagðir 4, en við viljum í raun og veru að segja 1 vegna þess að við viljum aðeins 3 hópa. 468 00:34:24,130 --> 00:34:30,159 Svo, hvernig - Nei, það er mjög gott dæmi vegna þess að þá hvernig getur þú sagt 1? 469 00:34:30,159 --> 00:34:33,370 Hvað er sambandið milli 4 og 1? 470 00:34:33,370 --> 00:34:36,760 Jæja, 4 unga fólkið 3 er 1. 471 00:34:36,760 --> 00:34:41,460 Svo ef þú heldur áfram, myndir þú vera 2. 472 00:34:41,460 --> 00:34:44,540 Þannig að við höfum 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Aftur, þú ert í raun 5 maður. Hvernig veistu að segja 2 í staðinn fyrir 5? 474 00:34:49,420 --> 00:34:53,760 Þú segir 5 unga fólkið 3 er 2. 475 00:34:53,760 --> 00:34:59,100 Mig langar að sjá hversu margir hópar 3 eru afgangs, þá sem til er ég 476 00:34:59,100 --> 00:35:02,860 Og svo þá ef við héldum áfram eftir allt herbergi, 477 00:35:02,860 --> 00:35:07,760 þá myndum við sjá að við erum alltaf í raun að beita mod virka að okkur 478 00:35:07,760 --> 00:35:09,990 að svona telja burt. 479 00:35:09,990 --> 00:35:14,490 Það er meira svona áþreifanlega dæmi um hvernig þú getur notað modulo 480 00:35:14,490 --> 00:35:17,960 vegna þess að ég er viss um að flestir af okkur hafa líklega farið í gegnum það ferli 481 00:35:17,960 --> 00:35:19,630 þar sem við höfum haft til að telja út. 482 00:35:19,630 --> 00:35:21,840 Einhverjar spurningar um modulo? 483 00:35:21,840 --> 00:35:25,360 Það verður ansi mikilvægt að skilja hugtökin á þessu, 484 00:35:25,360 --> 00:35:28,640 þannig að ég vil vera viss um að þú krakkar skilja. 485 00:35:28,640 --> 00:35:34,660 [Nemandi] Ef það er ekkert sem eftir stendur, er það gefa þér til fjölda? 486 00:35:34,660 --> 00:35:40,430 Ef eitt af fyrstu 3 þeirra hefði gert það, hefði það gefið þeim það sem þeir voru í raun og veru, 487 00:35:40,430 --> 00:35:43,310 eða myndi það hafa gefið þeim [inaudible] >> Það er góð spurning. 488 00:35:43,310 --> 00:35:48,750 Þegar það er enginn eftir stendur fyrir modulo - svo segja að þú ert 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 það gefur í raun þér aftur 0. 490 00:35:53,670 --> 00:35:57,290 Við munum tala um það svolítið seinna. 491 00:35:58,810 --> 00:36:07,720 Ó já, til dæmis 3. maður - 3 unga fólkið 3 er í raun 0 en hún sagði 3. 492 00:36:07,720 --> 00:36:14,900 Svo það er góður af eins og óákveðinn greinir í ensku innri afla, til dæmis, 493 00:36:14,900 --> 00:36:17,620 eins og allt í lagi, ef unga fólkið er 0 þá er ég að fara að vera 3 manneskja. 494 00:36:17,620 --> 00:36:22,740 En við munum komast í konar hvernig við gætum vilja til að takast á við það sem 0 er síðar. 495 00:36:22,740 --> 00:36:32,750 Svo nú höfum við einhvern veginn leið að kortleggja Zed til hægri bréf. 496 00:36:32,750 --> 00:36:34,920 Svo nú höfum við farið í gegnum þessi dæmi, 497 00:36:34,920 --> 00:36:37,880 við sjáum eins konar hvernig Caesar gæti virkað. 498 00:36:37,880 --> 00:36:42,640 Þú sérð 2 stafróf og þá sjá þá breytast. 499 00:36:42,640 --> 00:36:44,430 Svo skulum reyna að tjá það í skilmálar af formúlu. 500 00:36:44,430 --> 00:36:46,940 Þessi uppskrift er í raun gefið í sérstakur, 501 00:36:46,940 --> 00:36:52,070 en við skulum konar líta í gegnum hvað hver breyta þýðir. 502 00:36:52,070 --> 00:36:55,000 Niðurstaðan okkar er að fara til vera the ciphertext. 503 00:36:55,000 --> 00:36:58,300 Svo segir þetta að ith eðli ciphertext 504 00:36:58,300 --> 00:37:02,500 er að fara að vera í samræmi við ith eðli kæra. 505 00:37:02,500 --> 00:37:08,130 Það er skynsamlegt vegna þess að við viljum alltaf að undirbúa þetta allt. 506 00:37:08,130 --> 00:37:13,480 Svo það er að fara til vera the ith eðli ciphertext plús k, sem er lykill okkar - 507 00:37:13,480 --> 00:37:17,230 sem vit - og þá höfum við þetta mod 26. 508 00:37:17,230 --> 00:37:19,860 Mundu aftur þegar við vorum að Zed 509 00:37:19,860 --> 00:37:24,190 við vildum ekki að komast í eðli, svo að við vildum að unga fólkið það 510 00:37:24,190 --> 00:37:26,540 og konar hula um stafrófið. 511 00:37:26,540 --> 00:37:33,430 Eftir Zed þú myndir fara til a, b, c, d, þar sem þú verður að rétta númer. 512 00:37:33,430 --> 00:37:44,690 Þannig að við vitum að Zed, ef + 6, myndi gefa okkur f því eftir Meðlimur kemur a, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Svo við skulum muna að við vitum fyrir víst að Zed + 6 er að fara að gefa okkur f. 514 00:37:52,530 --> 00:38:03,530 Í ASCII gildi, z er 122 og f er 102. 515 00:38:03,530 --> 00:38:10,570 Þannig að við verðum að finna einhverja leið til að gera Caesar uppskrift okkar gefa okkur 102 516 00:38:10,570 --> 00:38:13,590 eftir að taka í 122. 517 00:38:13,590 --> 00:38:19,550 Svo ef við eiga bara þessa uppskrift, í ('Z' + 6)% 26, sem í raun gefur þér 24 518 00:38:19,550 --> 00:38:25,980 vegna 122 + 6 er 128, 128% 26 gefur þér 24 afganginn. 519 00:38:25,980 --> 00:38:29,140 En það þýðir í raun ekki þýða f. Það er örugglega ekki 102. 520 00:38:29,140 --> 00:38:33,590 Það er líka ekki 6 bréf í stafrófinu. 521 00:38:33,590 --> 00:38:41,550 Svo augljóslega, þurfum við að hafa einhverja leið til klip þetta svolítið. 522 00:38:42,970 --> 00:38:51,340 Hvað varðar almenna stafrófsins, vitum við að z er 26 bréf og f er 6.. 523 00:38:51,340 --> 00:38:55,460 En við erum í tölvunarfræði, þannig að við erum að fara að kemba á 0. 524 00:38:55,460 --> 00:39:00,690 Svo í stað þess að z vera númer 26, við erum að fara að segja númer það er 25 525 00:39:00,690 --> 00:39:02,630 vegna þess er 0. 526 00:39:02,630 --> 00:39:04,770 Svo nú skulum við þessa formúlu. 527 00:39:04,770 --> 00:39:11,710 Við höfum Z fulltrúa um 25 + 6, sem gefur þér 31. 528 00:39:11,710 --> 00:39:15,790 Og 31 unga fólkið 26 gefur þér 5 sem eftir lifir. 529 00:39:15,790 --> 00:39:20,500 Það er fullkomið vegna þess að við vitum að f er 5. stafur í stafrófinu. 530 00:39:20,500 --> 00:39:26,400 En það er enn ekki f, ekki satt? Það er samt ekki 102. 531 00:39:26,400 --> 00:39:32,730 Svo fyrir þessa pset, áskorun verður að reyna að finna út tengsl 532 00:39:32,730 --> 00:39:36,910 milli breyta milli ASCII gildi og stafrófsröð vísitölu. 533 00:39:36,910 --> 00:39:40,280 Í meginatriðum, það sem þú þarft að gera, langar að byrja út með ASCII gildi, 534 00:39:40,280 --> 00:39:45,390 en þú vilt einhvern veginn þýða að inn í stafrófsröð vísitölu 535 00:39:45,390 --> 00:39:52,610 þá reikna hvaða bréf það ætti að vera - í grundvallaratriðum, hvað Stafrófsröð Vísitala þess er 536 00:39:52,610 --> 00:39:57,660 í dulmál karakter - þá þýða að aftur til ASCII gildi. 537 00:39:57,660 --> 00:40:04,870 Svo ef þú svipa út ASCII töflunni, þá reyna að finna tengsl á milli, segja, 102 og 5 538 00:40:04,870 --> 00:40:10,440 eða 122 og 25. 539 00:40:12,140 --> 00:40:15,690 Við höfum fengið lykilinn okkar frá the stjórn lína rifrildi, höfum við fengið að kæra, 540 00:40:15,690 --> 00:40:17,520 við höfum enciphered það. 541 00:40:17,520 --> 00:40:19,820 Nú er allt sem við höfum til vinstri til að gera prenta það. 542 00:40:19,820 --> 00:40:22,040 Við gætum gert þetta á nokkra mismunandi vegu. 543 00:40:22,040 --> 00:40:24,570 Það sem við gætum gert er í raun prenta sem við förum eftir. 544 00:40:24,570 --> 00:40:28,250 Eins og við iterate yfir stafina í streng, 545 00:40:28,250 --> 00:40:31,660 við gætum einfaldlega bara prenta rétt þá þegar við reikna það. 546 00:40:31,660 --> 00:40:36,030 Einnig getur þú líka geymt það í fjölda og hafa fjölda af stöfum 547 00:40:36,030 --> 00:40:39,280 og í lok iterate yfir að heil fylking og prenta það út. 548 00:40:39,280 --> 00:40:40,980 Svo þú hafa a par af valkostur fyrir það. 549 00:40:40,980 --> 00:40:47,280 Og mundu að% c er að fara að vera tákn fyrir prentun staf. 550 00:40:47,280 --> 00:40:50,420 Svo þar höfum við Caesar, og nú erum við að fara að Vigenere, 551 00:40:50,420 --> 00:40:57,580 sem er mjög svipað og keisarans, en bara örlítið flóknari. 552 00:40:57,580 --> 00:41:03,310 Svo í raun með Vigenere er þú ert að fara að vera komið í leitarorði. 553 00:41:03,310 --> 00:41:06,510 Svo í stað þess að tala, þú ert að fara að hafa band, 554 00:41:06,510 --> 00:41:09,200 og svo er að fara að starfa sem leitarorð. 555 00:41:09,200 --> 00:41:14,440 Þá, eins og venjulega, þú ert að fara að fá a hvetja til streng frá notanda 556 00:41:14,440 --> 00:41:19,050 og þá encipher það og þá gefa þeim ciphertext aftur. 557 00:41:19,050 --> 00:41:24,650 Svo eins og ég sagði, það er mjög svipað og keisaranum, nema í stað þess að breytast með ákveðnum fjölda, 558 00:41:24,650 --> 00:41:30,620 númerið er reyndar að fara að breyta í hvert skipti frá stafnum staf. 559 00:41:30,620 --> 00:41:34,890 Til að tákna að raunveruleg tala til að skipta, það er táknað með hljómborð stafi. 560 00:41:34,890 --> 00:41:43,150 Svo ef þú slærð inn í færslunni að, til dæmis, þá sem myndi samsvara færslunni 0. 561 00:41:43,150 --> 00:41:45,900 Svo er það aftur til baka í stafrófsröð vísitölu. 562 00:41:45,900 --> 00:41:49,100 Hvað gæti verið gagnlegt ef þú sérð að við erum í raun að takast á við ASCII gildi 563 00:41:49,100 --> 00:41:51,790 sem og bréf, sem og stafrófsröð vísitölu, 564 00:41:51,790 --> 00:41:58,020 kannski finna eða gera eigin ASCII taflan sem sýnir stafrófsröð vísitölu 0 með 25, 565 00:41:58,020 --> 00:42:03,750 a í Z og ASCII gildi þannig að þú getur konar séð tengsl 566 00:42:03,750 --> 00:42:07,020 og skissa út og reyna að finna einhverja mynstur. 567 00:42:07,020 --> 00:42:11,010 Á sama hátt, ef þú varst að breytast í ákveðna dæmi af F - 568 00:42:11,010 --> 00:42:21,110 og þetta er annað hvort lágstafir eða hástafi f - þá myndi samsvara 5. 569 00:42:21,110 --> 00:42:24,180 Erum við góðar svo langt? 570 00:42:25,770 --> 00:42:30,050 Formúlan fyrir Vigenere er svolítið öðruvísi. 571 00:42:30,050 --> 00:42:32,960 Í grundvallaratriðum, þú sérð að það er bara eins og keisarans, 572 00:42:32,960 --> 00:42:37,390 nema í staðinn af réttlátur K við höfum k vísitölu j. 573 00:42:37,390 --> 00:42:44,810 Takið eftir því að við erum ekki að nota i því í meginatriðum, að lengd leitarorð 574 00:42:44,810 --> 00:42:49,850 er ekki endilega lengd ciphertext okkar. 575 00:42:49,850 --> 00:42:56,130 Það vilja vera a hluti skýrari þegar við sjáum dæmi sem ég hef svolítið síðar. 576 00:42:56,130 --> 00:43:03,160 Í grundvallaratriðum, ef þú keyrir forritið með leitarorð í ohai, 577 00:43:03,160 --> 00:43:08,560 þá þýðir það að í hvert skipti, ohai er að fara að vera breyting þinn. 578 00:43:08,560 --> 00:43:11,060 Svo eftir því hvaða stöðu þú ert í leitarorð, 579 00:43:11,060 --> 00:43:15,800 þú ert að fara að skipta á ákveðnum ciphertext karakterinn þinn með þeirri upphæð. 580 00:43:15,800 --> 00:43:19,630 Aftur, eins og keisarans, viljum við að tryggja að við að varðveita fjármögnun hlutum 581 00:43:19,630 --> 00:43:22,900 og við aðeins encipher bréf, ekki stafi eða bil. 582 00:43:22,900 --> 00:43:26,330 Svo líta aftur til keisarans um aðgerðir sem kunna að hafa þú notaðir, 583 00:43:26,330 --> 00:43:32,570 á þann hátt að þú hefur ákveðið hvernig á að skipta hlutum, og eiga það til að forritinu hér. 584 00:43:32,570 --> 00:43:35,260 Svo skulum kortleggja þetta út. 585 00:43:35,260 --> 00:43:39,680 Við höfum kæra sem við höfum fengið frá eiganda GetString 586 00:43:39,680 --> 00:43:44,090 að segja þetta ... er CS50! 587 00:43:44,090 --> 00:43:47,090 Þá höfum við leitarorð á ohai. 588 00:43:47,090 --> 00:43:50,930 Fyrstu 4 stafir eru nokkuð einfalt. 589 00:43:50,930 --> 00:43:55,580 Við vitum að T er að fara að færst um o, 590 00:43:55,580 --> 00:44:01,990 þá h er að fara að færst af H, er ég að fara að færst um a. 591 00:44:01,990 --> 00:44:04,610 Hér sérðu að táknar 0, 592 00:44:04,610 --> 00:44:11,940 svo þá enda gildi er í raun bara það sama bréf og áður. 593 00:44:11,940 --> 00:44:15,250 Þá er færist af i. 594 00:44:15,250 --> 00:44:19,370 En þá hafa þessir tímabil hér. 595 00:44:19,370 --> 00:44:25,960 Við viljum ekki að encipher það, svo þá erum við ekki breytt því með neitt 596 00:44:25,960 --> 00:44:31,280 og bara prenta út tímabilið óbreytt. 597 00:44:31,280 --> 00:44:38,020 [Nemandi] Ég skil ekki hvernig þú veist að þetta er færst af - Hvar hafið þér - >> Ó, fyrirgefðu. 598 00:44:38,020 --> 00:44:41,620 Efst Hér sérðu að lína rifrildi ohai hér, 599 00:44:41,620 --> 00:44:43,740 það er að fara að vera leitarorð. 600 00:44:43,740 --> 00:44:49,550 Og svo í rauninni, þú ert að hjóla yfir stafi í leitarorði. 601 00:44:49,550 --> 00:44:52,020 [Nemandi] Svo o er að fara að breytast sama - 602 00:44:52,020 --> 00:44:56,260 Svo svarar o við ákveðinn fjölda í stafrófinu. 603 00:44:56,260 --> 00:44:58,400 [Nemandi] Rétt. En hvar fékkstu CS50 hluta frá? 604 00:44:58,400 --> 00:45:02,540 Oh. Það er í GetString þar sem þú ert eins og "Gefðu mér band til að umrita." 605 00:45:02,540 --> 00:45:07,510 [Nemandi] Þeir eru að fara að gefa þér að rifrildi til að skipta um 606 00:45:07,510 --> 00:45:09,380 og þá biðja um fyrsta band þinn. >> Já. 607 00:45:09,380 --> 00:45:12,440 Svo þegar þeir hlaupa the program, þá eru þeir að fara að fela leitarorð 608 00:45:12,440 --> 00:45:14,740 í stjórn lína rifrildi þeirra þegar þeir hlaupa það. 609 00:45:14,740 --> 00:45:19,740 Síðan þegar þú hefur athugað að þeir hafa í raun gefið þér 1 og ekki meira, ekki minna, 610 00:45:19,740 --> 00:45:23,750 þá þú ert að fara að biðja þá um streng, segja: "Gefðu mér band." 611 00:45:23,750 --> 00:45:27,630 Svo er það sem í þessu tilfelli þeir hafa gefið þér þetta ... er CS50! 612 00:45:27,630 --> 00:45:32,090 Svo þú ert að fara að nota það og nota Ohai og iterate yfir. 613 00:45:32,090 --> 00:45:38,200 Takið eftir að hér við sleppt yfir Dulkóðun tímabil, 614 00:45:38,200 --> 00:45:51,660 en hvað varðar stöðu okkar fyrir ohai, næsta einn við notuðum o. 615 00:45:51,660 --> 00:45:54,990 Í þessu tilviki það er svolítið erfiðara að sjá þar sem það er 4, 616 00:45:54,990 --> 00:45:57,710 þannig að við skulum halda áfram aðeins. Bara halda sig við mig hérna. 617 00:45:57,710 --> 00:46:02,960 Þá höfum við i og s sem eru svo þýdd af o og h sig. 618 00:46:02,960 --> 00:46:09,370 Þá höfum við pláss, og svo þá vitum við að við erum ekki að fara að encipher rými. 619 00:46:09,370 --> 00:46:18,930 En eftir því að í stað þess að fara á í þessum stað hérna, 620 00:46:18,930 --> 00:46:28,330 við erum að dulkóða með a - Ég veit ekki hvort þú getur séð það - hérna. 621 00:46:28,330 --> 00:46:33,710 Svo það er ekki eins og þú fyrirfram ákveðið í raun, segja, o fer hér, h fer hér, 622 00:46:33,710 --> 00:46:39,200 a fer hér, fer ég hér, o, h, a, i, o, h, a, i. Þú gerir það ekki. 623 00:46:39,200 --> 00:46:43,760 Þú skiptir bara stöðu þína á leitarorð 624 00:46:43,760 --> 00:46:51,020 þegar þú veist að þú ert í raun að fara að brengla í raun bréf. 625 00:46:51,020 --> 00:46:53,920 Er svona skynsamleg? 626 00:46:53,920 --> 00:46:55,800 Allt í lagi. 627 00:46:56,490 --> 00:46:58,500 Svo bara nokkrar ábendingar. 628 00:46:58,500 --> 00:47:03,760 Þú vilt tryggja að þú fara bara á næsta staf í leitarorð 629 00:47:03,760 --> 00:47:06,390 ef eðli í kæra þinn er bréf. 630 00:47:06,390 --> 00:47:09,120 Svo segja að við erum á o. 631 00:47:09,120 --> 00:47:19,310 Við taka að næsta staf, er ég Vísitala kæra, er tala, til dæmis. 632 00:47:19,310 --> 00:47:31,630 Þá erum við ekki að fara ekki J, vísitalan fyrir leitarorð okkar, fyrr en við náum annað bréf. 633 00:47:31,630 --> 00:47:36,230 Aftur, þú vilt einnig að ganga úr skugga um að þú wraparound við upphaf leitarorð 634 00:47:36,230 --> 00:47:37,770 þegar þú ert á the endir af það. 635 00:47:37,770 --> 00:47:42,030 Ef þú sérð hér að við erum í ég, sá næsti að vera o. 636 00:47:42,030 --> 00:47:47,690 Svo þú vilt að finna einhverja leið til að vera fær um að wraparound í upphafi leitarorð 637 00:47:47,690 --> 00:47:49,470 hvert skipti sem þú nærð í lok. 638 00:47:49,470 --> 00:47:55,040 Og svo aftur, hvers konar stjórnandi er gagnlegur í því tilviki að umbúðir í kring? 639 00:47:56,630 --> 00:47:59,840 Eins og í talningu burt dæmis. 640 00:47:59,840 --> 00:48:03,710 [Nemandi] The prósent skilti. >> Já, prósent skilti, sem er modulo. 641 00:48:03,710 --> 00:48:11,250 Svo modulo mun koma sér vel hér þegar þú vilt að vefja á vísitölu í ohai þínu. 642 00:48:11,250 --> 00:48:17,700 Og bara fljótur vísbending: Reyndu að hugsa um umbúðir yfir leitarorð dálítið eins og að telja burt, 643 00:48:17,700 --> 00:48:23,590 þar sem ef það er 3 hópa, 4. mann, 644 00:48:23,590 --> 00:48:30,610 fjölda þeirra sem þeir sögðu var 4 unga fólkið 3, sem var 1. 645 00:48:30,610 --> 00:48:32,880 Svo að reyna að hugsa um það þannig. 646 00:48:34,770 --> 00:48:42,740 Eins og þú sást í formúlunni, hvar sem þú ert CI og svo Pi en þá kJ, 647 00:48:42,740 --> 00:48:44,700 þú vilt ganga úr skugga um að þú haldir utan um þá. 648 00:48:44,700 --> 00:48:47,580 Þú þarft ekki að hringja í það að ég, þú þarft ekki að kalla það J, 649 00:48:47,580 --> 00:48:53,270 en þú vilt ganga úr skugga um að þú haldir utan um stöðu sem þú ert á í kæra þinni 650 00:48:53,270 --> 00:48:55,790 sem og stöðu sem þú ert á í leitarorð 651 00:48:55,790 --> 00:48:59,840 vegna þess að þeir eru ekki endilega að fara að vera sú sama. 652 00:48:59,840 --> 00:49:06,400 Ekki eini hjartarskinn the leitarorð - það gæti verið allt öðruvísi lengd en kæra þínu. 653 00:49:06,400 --> 00:49:09,140 Einnig kæra þín, það eru tölur og bókstafi, 654 00:49:09,140 --> 00:49:14,450 svo það er ekki að fara að fullkomlega passa upp saman. Já. 655 00:49:14,450 --> 00:49:19,280 [Nemandi] Er aðgerð til að breyta málið? 656 00:49:19,280 --> 00:49:24,530 Getur þú breytt í hlutafé A? >> Já, það örugglega er. 657 00:49:24,530 --> 00:49:27,890 Þú geta skrá sig út - ég tel toupper það er, allt 1 orð. 658 00:49:30,650 --> 00:49:36,310 En þegar þú ert að reyna að dulmál hluti og varðveita texta, 659 00:49:36,310 --> 00:49:39,350 það er best í grundvallaratriðum að hafa aðskilin mál. 660 00:49:39,350 --> 00:49:42,040 Ef að það er há, þá þú vilja til að skipta um þetta 661 00:49:42,040 --> 00:49:46,460 vegna þess að í uppskrift þinni, þegar þú lítur til baka hvernig við verðum að konar fara 662 00:49:46,460 --> 00:49:50,900 jöfnum höndum milli ASCII leið fulltrúi tölurnar 663 00:49:50,900 --> 00:49:55,020 og í raun Stafrófsröð vísitölu, viljum við að tryggja 664 00:49:55,020 --> 00:50:01,850 það er að fara að vera einhvers konar mynstur sem þú ert að fara að nota. 665 00:50:01,850 --> 00:50:04,580 Annar í huga í mynstri, reyndar. 666 00:50:04,580 --> 00:50:07,250 Þú ert að fara að ákveðið að takast á við númer. 667 00:50:07,250 --> 00:50:11,280 Reyndu að nota ekki galdra tölur, sem er dæmi um stíl. 668 00:50:11,280 --> 00:50:18,470 Svo segja að þú viljir að sérhver breyting tíma eitthvað með eins og - 669 00:50:18,470 --> 00:50:22,400 Jæja, svo vísbending, annar Spilla er þegar þú ert að fara að breytast eitthvað 670 00:50:22,400 --> 00:50:26,310 með ákveðna upphæð, reyna ekki að tákna að um raunverulegan fjölda 671 00:50:26,310 --> 00:50:32,810 heldur að reyna og sjá hvort þú getur notað ASCII gildi, sem konar gera meira vit. 672 00:50:32,810 --> 00:50:35,470 Annar athugið: Þar sem við erum að fást við uppskrift, 673 00:50:35,470 --> 00:50:41,200 jafnvel þótt TF mun konar vita hvað mynstur sem þú gætir verið að nota, 674 00:50:41,200 --> 00:50:44,430 best að í athugasemdum góður af útskýra rökfræði, eins og, 675 00:50:44,430 --> 00:50:51,880 "Ég er að nota þetta mynstur vegna þess að ..." og tegund útskýra mynstur succinctly í athugasemdum þínum. 676 00:50:54,090 --> 00:50:58,990 [Þetta var walkthrough 2] Ef það eru ekki einhverjar aðrar spurningar, þá verð ég bara að vera hér í smá. 677 00:50:58,990 --> 00:51:04,370 Gangi þér vel með pset þína 2: Crypto og takk fyrir komuna. 678 00:51:06,070 --> 00:51:08,620 [Nemandi] Þakka þér. >> Takk. 679 00:51:09,220 --> 00:51:10,800 [Media Offline Intro]