1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Walkthrough - Problēma Set 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Hārvarda] 3 00:00:05,170 --> 00:00:07,490 [Tas ir CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Labi. Sveiki, visiem, un laipni 2 Walkthrough. 5 00:00:10,750 --> 00:00:14,330 Pirmkārt, es vēlos jūs apsveikt par apdares PSET 1. 6 00:00:14,330 --> 00:00:18,140 Es zinu, ka tas varētu būt bijis nedaudz grūts dažiem no jums, 7 00:00:18,140 --> 00:00:20,460 varēja būt jūsu pirmā datorprogramma, kas jūs rakstījāt, 8 00:00:20,460 --> 00:00:24,500 bet tikai atcerieties, ka gada beigās tas, ja paskatās atpakaļ beigās semestra, 9 00:00:24,500 --> 00:00:29,820 jums izskatās pēc 1 PSET un jūs sakāt: "Hei, es varētu darīt, ka pēc 5 minūtēm." 10 00:00:29,820 --> 00:00:35,700 Tāpēc zinu un ticu, ka beigās tas jūs noteikti atradīsiet PSET 1 pavisam vienkārša. 11 00:00:35,700 --> 00:00:40,640 Bet tagad tas ir milzīgs sasniegums, un apsveicam par kļūst darīts. 12 00:00:40,640 --> 00:00:44,010 Tagad arī ātri piezīmi pirms mēs nokļūt gaļas walkthrough. 13 00:00:44,010 --> 00:00:48,340 Es tikai vēlos, lai ātri piezīmi, ka es reizēm nav pietiekami daudz laika 14 00:00:48,340 --> 00:00:52,500 laikā walkthroughs iet caur katru veids, kā to problēmu kopumu 15 00:00:52,500 --> 00:00:56,140 un diezgan vienkārši varbūt koncentrēties uz 1 vai 2 veida implementāciju, 16 00:00:56,140 --> 00:00:57,750 veidi, ka jūs varētu darīt. 17 00:00:57,750 --> 00:01:01,970 Bet tas nenozīmē, ka jums ir aizliegts to sakot. 18 00:01:01,970 --> 00:01:05,980 Ir bieži, jo ar datoru zinātnes, vairāki veidi, kā darīt lietas, 19 00:01:05,980 --> 00:01:12,190 un tāpēc noteikti justies brīvi izmantot cita veida risinājumu, nekā es varētu būt uzrādīts. 20 00:01:12,190 --> 00:01:14,520 [PSET 2: Kripto - Zamyla Chan - zamyla@cs50.net] 21 00:01:14,520 --> 00:01:17,160 [Pset2 - 0. Nodaļa Jautājumi - 1. Cēzara - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 Labi. Tātad problēma set 2: Kriptogrāfijas ir jautri viens. 23 00:01:20,650 --> 00:01:24,500 Atkal, ar katru PSET jūs sākat ar daļu no jautājumiem 24 00:01:24,500 --> 00:01:29,600 kas notiek, lai jāveic jūsu sadaļās ar savu piešķirto mācību līdzstrādnieks. 25 00:01:29,600 --> 00:01:31,670 Mums nav gatavojas iet cauri šiem pār walkthrough, 26 00:01:31,670 --> 00:01:35,100 bet tie noteikti palīdzēs jums pabeigt PSET. 27 00:01:35,100 --> 00:01:38,100 Tātad pirmā daļa problēmu kopums ir Caesar. 28 00:01:38,100 --> 00:01:43,470 Un tā Cēzars kāds iet jums atslēga ar veselam skaitlim, 29 00:01:43,470 --> 00:01:48,420 un jūs šifrēt virkni teksta ka tie sniedz jums 30 00:01:48,420 --> 00:01:50,670 un dot viņiem atpakaļ šifrētu lieta. 31 00:01:50,670 --> 00:01:56,050 Ja kāds noskatījās Ziemassvētku stāsts, tur ir no ka piemērs. 32 00:01:56,050 --> 00:01:59,090 Tad otrā daļa no problēmas komplekts ir Vigenere, 33 00:01:59,090 --> 00:02:01,790 kas ir vairāk uzlabotas šifrēšanas tehniku. 34 00:02:01,790 --> 00:02:05,640 Un tāpēc mēs esam gatavojas šifrēt kādu teksta, 35 00:02:05,640 --> 00:02:09,600 izņemot vietā tikai ar vienu skaitlim, mēs esam patiešām gatavojas kodēt to 36 00:02:09,600 --> 00:02:13,340 ar atslēgvārdu, ka lietotājs sniegs mums. 37 00:02:16,270 --> 00:02:22,090 Labi, tāpēc pirmais instrumentu kopums šodien ir faktiski gatavojas atjaunināt ierīci. 38 00:02:22,090 --> 00:02:26,430 Uz diskusiju dēļa mēs gribam redzēt lietas, piemēram, "Kāpēc ne šo darbu?" 39 00:02:26,430 --> 00:02:28,110 "Kāpēc ne Iesniegt 50 darbu?" 40 00:02:28,110 --> 00:02:31,830 un bieži risinājums ir faktiski tikai atjaunināt savu ierīci. 41 00:02:31,830 --> 00:02:36,730 Un tā, ja jūs vienkārši palaist termināļa logā jūsu ierīces sudo Yum-y - 42 00:02:36,730 --> 00:02:40,040 tas karogs sakot jā, atjaunināt visu - update, 43 00:02:40,040 --> 00:02:42,280 tad jūsu ierīce tiks atjaunināta, ja tas būtu nepieciešams. 44 00:02:42,280 --> 00:02:46,960 Un tas nav ievainots, ja jums jau ir pie jaunāko versiju ierīces. 45 00:02:46,960 --> 00:02:51,280 Tad tas būs vienkārši pateikt nē jauni atjauninājumi pieejami, un jūs varat turpināt strādāt kopā. 46 00:02:51,280 --> 00:02:55,800 Bet tas ir labi izpildīt pat katru reizi, kad atverat ierīces 47 00:02:55,800 --> 00:02:57,140 jo mēs esam vēl ļoti daudz - 48 00:02:57,140 --> 00:03:00,320 Dažreiz, ja mēs nonāk bug - nosaka to ierīci. 49 00:03:00,320 --> 00:03:03,180 Tāpēc pārliecinieties, ka Jums ir jaunākā versija ierīces 50 00:03:03,180 --> 00:03:07,710 un palaist, ka atjaunināt tur. 51 00:03:07,710 --> 00:03:14,360 Labi. Tāpēc, ka mums ir darīšana ar burtiem un mainās, šifrēšanas lietas, 52 00:03:14,360 --> 00:03:20,410 mēs spēsim patiešām vēlas kļūt par labāko draugu, ar mūsu ASCII topā. 53 00:03:20,410 --> 00:03:24,350 Ir daudz tiem tiešsaistē, ja jūs atradīsiet. Varbūt pat padarīt savu. 54 00:03:24,350 --> 00:03:29,950 Būtībā, ar katru burtu un katru numuru un katru raksturu 55 00:03:29,950 --> 00:03:32,210 ir skaitlis, kas saistīts ar tām, 56 00:03:32,210 --> 00:03:38,670 un tāpēc ir labi, lai redzētu savu ASCII vērtības līdzās faktisko vēstuli. 57 00:03:38,670 --> 00:03:42,310 Tas noteikti palīdzēs jums problēmu kopumu. 58 00:03:42,310 --> 00:03:45,750 Viena lieta, kas patiešām palīdzēja man ar šo problēmu kopumu bija patiešām to izdrukāt, 59 00:03:45,750 --> 00:03:48,380 un kā man bija iet cauri, es tiešām izdarīt par to, 60 00:03:48,380 --> 00:03:51,150 rakstīt: "Ja tas ir iet uz tur, tad ..." 61 00:03:51,150 --> 00:03:55,270 Veida izdarīt par to un atzīmējiet to uz augšu, kļūst par labākajiem draugiem, ar savu ASCII tabulu. 62 00:03:57,240 --> 00:04:00,750 Tad mums ir daži citi instrumenti mūsu rīcībā. 63 00:04:00,750 --> 00:04:03,750 Šoreiz nevis faktiski pamudinot lietotājam par visiem viņu ieguldījumu 64 00:04:03,750 --> 00:04:05,230 mēs esam gatavojas darīt kombināciju. 65 00:04:05,230 --> 00:04:06,880 Mēs ejam, lai liktu viņiem kādu ieguldījumu, 66 00:04:06,880 --> 00:04:11,350 bet mēs arī gatavojas tikai izmantot komandrindas argumentus. 67 00:04:11,350 --> 00:04:15,600 Tātad, ja tie veic savu programmu, parasti jūs sakāt. / Sveiki, piemēram, 68 00:04:15,600 --> 00:04:17,310 ja jūsu programma bija hello.c. 69 00:04:17,310 --> 00:04:22,500 Bet šoreiz nevis tikai sakot, ka viņi var likt vārdus, argumentus tam. 70 00:04:22,500 --> 00:04:27,210 Un tāpēc mēs esam gatavojas izmantot neatkarīgi viņi iet ar mums, kā viņu ieguldījumu, kā arī, 71 00:04:27,210 --> 00:04:31,720 tāpēc ejot tālāk tikai pamudinot skaitlim, bet arī izmantojot komandrindas argumentus. 72 00:04:31,720 --> 00:04:36,590 Un tad mēs iesim uz blokiem un virknes, kas mums būs, izmantojot daudz kā labi. 73 00:04:41,460 --> 00:04:44,810 Šeit ir tikai 1 mini ASCII topā piemērs. 74 00:04:44,810 --> 00:04:48,460 Kā es teicu, katru burtu atbilst vairākiem, 75 00:04:48,460 --> 00:04:52,510 un tāpēc iepazīties ar to. Tas noderēs. 76 00:04:52,510 --> 00:04:55,610 Un vēlāk, kad mēs sākt darīt daži ASCIIMath nodarbojas ar skaitļiem - 77 00:04:55,610 --> 00:05:00,110 piebilstot, atņemot viņiem - tad noteikti labi atsaukties uz šo tabulu. 78 00:05:02,860 --> 00:05:06,920 Tātad, šeit ir par Cēzara šifra piemērs - kaut kas jums var būt bijusi ar. 79 00:05:06,920 --> 00:05:11,190 Tas ir tikai ritenis. Būtībā, ir ārējā alfabētu, un tad tur ir iekšējais alfabētu. 80 00:05:11,190 --> 00:05:15,290 Tātad, šeit ir piemērs Cēzara šifra bet ar atslēgu no 0. 81 00:05:15,290 --> 00:05:21,540 Būtībā, ir saskaņots ar A, B ir saskaņots ar B, visu ceļu līdz Z. 82 00:05:21,540 --> 00:05:26,590 Bet tad saka, ka mēs vēlējāmies atslēgu 3, piemēram. 83 00:05:26,590 --> 00:05:33,280 Tad mēs varētu pagriezt iekšējo riteni tā, ka tagad pieskaņo ar D uc 84 00:05:33,280 --> 00:05:35,250 Un tā tas būtībā ko mēs gatavojamies darīt. 85 00:05:35,250 --> 00:05:38,340 Mums nav riteni, bet tas, ko mēs gatavojamies darīt, ir padarīt mūsu programmu 86 00:05:38,340 --> 00:05:44,490 veida maiņu alfabētu kopā ar mums zināmu skaitu. 87 00:05:44,490 --> 00:05:48,650 Tā kā es teicu iepriekš, mēs ejam, lai būtu darīšana ar komandrindas argumentus 88 00:05:48,650 --> 00:05:50,390 kā arī iegūt skaitlim. 89 00:05:50,390 --> 00:05:55,050 Tātad tā, ka lietotājam būs palaist savu Caesar programmu, ir, saka. / Caesar 90 00:05:55,050 --> 00:05:58,090 un pēc tam ievadot numuru pēc tam. 91 00:05:58,090 --> 00:06:01,130 Un šis skaits ir atslēga, pāreja, 92 00:06:01,130 --> 00:06:06,740 cik reizes jūs esat būs rotācijas iekšējo riteņa jūsu Caesar šifru. 93 00:06:06,740 --> 00:06:08,390 Un lai jūs redzēt šeit piemērs. 94 00:06:08,390 --> 00:06:14,550 Ja mēs ieraksta burtus no A līdz L mūsu Cēzara šifra, 95 00:06:14,550 --> 00:06:19,520 tad tas būtu ieguldījums D caur O, jo tas ir katru burtu pārvietoti vairāk nekā 3 reizes, 96 00:06:19,520 --> 00:06:22,080 tāpat kā, piemēram, riteņa ka es parādīja jums. 97 00:06:22,080 --> 00:06:25,300 Tātad tad, ja esat norādījis, piemēram, tas ir CS50! 98 00:06:25,300 --> 00:06:27,960 tad tas arī pārvietot visi burti. 99 00:06:27,960 --> 00:06:31,040 Un tas ir svarīga lieta gan Cēzara un Vigenere 100 00:06:31,040 --> 00:06:34,890 ir tas, ka mēs spēsim izlaist jebkuru valsti, vēstules. 101 00:06:34,890 --> 00:06:39,160 Lai jebkurš atstarpēm, burtiem, utt, cipari, mēs ejam, lai saglabātu tos pats. 102 00:06:39,160 --> 00:06:42,920 Mēs esam tikai gatavojas novirzīt burti šajā gadījumā. 103 00:06:42,920 --> 00:06:45,870 Tātad, kā jūs redzēt riteni, mums ir tikai burti pieejami pie mums, 104 00:06:45,870 --> 00:06:50,150 tāpēc mēs tikai vēlamies novirzīt burtus un šifrēt burtus. 105 00:06:51,370 --> 00:06:56,720 Tātad pirmā lieta darīt, jūs redzēja, ka par Caesar izmantošana problēmu komplekts 2 106 00:06:56,720 --> 00:07:05,280 ir palaist Cēzars un pēc tam ievadiet numuru, kad jūs palaist to terminālā. 107 00:07:05,280 --> 00:07:10,940 Tātad, ko mums darīt, ir kaut saņemt šo atslēgu un tai piekļūt. 108 00:07:10,940 --> 00:07:14,730 Un tāpēc mēs gribam, lai kaut kā redzēt to būs otrais komandrindas arguments. 109 00:07:14,730 --> 00:07:20,950 Pirmais būs. / Cēzars un nākamais būs galvenais numurs. 110 00:07:22,190 --> 00:07:29,200 Tātad, pirms mums bija int galvenais (spēkā neesošs), lai sāktu mūsu C programmas. 111 00:07:29,200 --> 00:07:31,790 Mēs ejam, lai mizu atpakaļ kārtu mazliet 112 00:07:31,790 --> 00:07:34,720 un faktiski redzēt, ka nevis iet uz tukšumu mūsu galvenā funkcija 113 00:07:34,720 --> 00:07:37,920 mēs faktiski nodarbojas ar 2 parametriem. 114 00:07:37,920 --> 00:07:44,070 Mums ir int nosaukts argc un tad virknes masīvs sauc argv. 115 00:07:44,070 --> 00:07:46,030 Tātad argc ir skaitlis, 116 00:07:46,030 --> 00:07:49,640 un tā pārstāv vairākus argumentus taisītus ar savu programmu. 117 00:07:49,640 --> 00:07:53,590 Un tad argv ir faktiski sarakstu pagājis argumentiem. 118 00:07:53,590 --> 00:08:00,820 Visi argumenti ir stīgas, un tā argv pārstāv masīvs, saraksts, stīgas. 119 00:08:01,830 --> 00:08:03,990 Parunāsim par masīvu mazliet. 120 00:08:03,990 --> 00:08:05,940 Masīvi ir būtībā jauna datu struktūra. 121 00:08:05,940 --> 00:08:09,660 Mums ir Ints, mēs esam dubultspēlē, mums ir stīgas, un tagad mums ir bloki. 122 00:08:09,660 --> 00:08:13,820 Masīvi ir datu struktūras, kas var turēt vairākas vērtības viena tipa, 123 00:08:13,820 --> 00:08:18,320 Tātad būtībā, sarakstu visu tipu vēlaties. 124 00:08:18,320 --> 00:08:24,400 Būtībā, ja jūs vēlētos sarakstu integers visi 1 mainīgo, 125 00:08:24,400 --> 00:08:29,090 tad jūs varētu izveidot jaunu mainīgo, kas bija tipa int masīvu. 126 00:08:29,090 --> 00:08:34,450 Tātad masīvi ir nulles indeksētas, kas nozīmē, ka pirmais elements masīva ir 0 indekss. 127 00:08:34,450 --> 00:08:41,799 Ja masīvs ir garuma 4, kā šajā piemērā, tad jūsu pēdējais elements būs pie 3 indeksu, 128 00:08:41,799 --> 00:08:44,810 kas ir 4 - 1. 129 00:08:45,940 --> 00:08:48,420 Tātad, lai izveidotu masīvu, jūs varētu darīt kaut kas līdzīgs šim. 130 00:08:48,420 --> 00:08:51,440 Say vēlaties dubultu masīvs. 131 00:08:51,440 --> 00:08:56,520 Tas pats attiecas uz jebkāda veida datu tipu, lai gan. 132 00:08:56,520 --> 00:09:00,210 Tā teikt jūs vēlaties dubultu masīvs. Say jūs vēlaties, lai izsauktu to pastkasti. 133 00:09:00,210 --> 00:09:04,760 Tāpat kā jūs varētu sāktu jebkuru citu dubultā, 134 00:09:04,760 --> 00:09:09,760 Jūs varētu teikt dubultā un tad vārdu, taču šoreiz mēs uzdodam kvadrātiekavas, 135 00:09:09,760 --> 00:09:13,570 un pēc tam numuru būs garumu masīvs. 136 00:09:13,570 --> 00:09:16,840 Ņemiet vērā, ka masīvu mēs nevaram kādreiz mainīt garumu, 137 00:09:16,840 --> 00:09:21,230 tāpēc jums vienmēr ir jādefinē un izvēlēties, cik daudz kastes, 138 00:09:21,230 --> 00:09:25,440 cik daudz vērtības jūsu masīvs gatavojas rīkot. 139 00:09:25,440 --> 00:09:31,820 Tātad, lai uzstādītu dažādu vērtību jūsu masīvs, jūs gatavojas izmantot šo šādu sintaksi, 140 00:09:31,820 --> 00:09:33,200 kā jūs redzēt slaidā. 141 00:09:33,200 --> 00:09:37,620 Jums ir pastkaste indekss 0 tiks iestatīts uz 1,2, 142 00:09:37,620 --> 00:09:42,180 pastkaste indekss 1 komplekts līdz 2,4, utt 143 00:09:42,180 --> 00:09:47,910 Tāpēc tagad, ka mēs esam jāpārskata masīvos mazliet, iesim atpakaļ uz argc un argv. 144 00:09:47,910 --> 00:09:52,220 Mēs zinām, ka argv tagad masīvs stīgas. 145 00:09:52,220 --> 00:09:55,080 Tātad, ja lietotājs aiziet - saka, viņi darbojas programma - 146 00:09:55,080 --> 00:09:58,740 viņi saka. / sveiki Deivids Malan, 147 00:09:58,740 --> 00:10:05,160 Kāda programma darīs jums jau ir faktiski nāk klajā ar ko argc un argv ir. 148 00:10:05,160 --> 00:10:07,620 Tātad jums nav jāuztraucas par to. 149 00:10:07,620 --> 00:10:14,370 Argc šajā gadījumā būtu 3, jo tas redz 3 atšķirīgus vārdus atdalīti ar atstarpēm. 150 00:10:14,370 --> 00:10:18,850 Un tā tad šajā gadījumā masīvs, pirmais indekss būtu / sveiki., 151 00:10:18,850 --> 00:10:21,770 nākamais Dāvids, nākamais Malan. 152 00:10:21,770 --> 00:10:25,640 Vai kāds redzēt uzreiz kāda saistība starp argv, 153 00:10:25,640 --> 00:10:28,990  masīvs, un argc ir? 154 00:10:32,820 --> 00:10:38,090 Yeah. Mēs nokļūt, ka par piemēru args.c. 155 00:10:38,090 --> 00:10:42,880 Redzēsim, vai mēs varam gūt labumu no attiecībām starp 2. 156 00:10:42,880 --> 00:10:46,550 Šeit jūs varētu atrast, ka ierīces noklusējuma pieteikumu 157 00:10:46,550 --> 00:10:49,450 atvērt. c failus dažreiz Emacs. 158 00:10:49,450 --> 00:10:54,660 Bet mēs vēlamies, lai risinātu ar gedit, lai ko jūs varat darīt, ir, jūs varat tiesības klikšķi uz jūsu C failu, 159 00:10:54,660 --> 00:11:04,580 iet uz Properties, Atvērt ar un pēc tam izvēlēties gedit, kas kā noklusējuma, 160 00:11:04,580 --> 00:11:13,020 un tagad jūsu programma būtu atvērta gedit vietā Emacs. 161 00:11:14,710 --> 00:11:16,290 Perfekta. 162 00:11:17,120 --> 00:11:25,520 Tāpēc šeit man ir programma, ka es gribu, lai izdrukātu katru komandrindas argumentu. 163 00:11:25,520 --> 00:11:32,050 Tātad neatkarīgi no lietotāja ievadi, es gribu, lai būtībā atgriezties atpakaļ uz tiem par jaunu līniju. 164 00:11:32,050 --> 00:11:36,710 Tātad, kas ir struktūra, mēs varam izmantot, lai atkārtot pār kaut ko - 165 00:11:36,710 --> 00:11:40,380 kaut kas jums, iespējams, izmanto savu PSET 1? 166 00:11:40,380 --> 00:11:45,840 Ja jūs vēlaties, lai iet cauri, kas vairākas lietas? >> [Students] Par cilpu. 167 00:11:45,840 --> 00:11:48,910 Cilpa. Tieši tā. Tāpēc sāksim ar cilpa. 168 00:11:48,910 --> 00:11:56,900 Mums ir par int i = 0. Pieņemsim tikai sākt ar standarta inicializācijas mainīgo. 169 00:11:56,900 --> 00:12:02,370 Es esmu gatavojas atstāt nosacījums kopumu un pēc tam teikt, i + +, gatavojas darīt lietas tur. 170 00:12:02,370 --> 00:12:04,090 Labi. 171 00:12:04,090 --> 00:12:11,590 Tāpēc domāju atpakaļ uz argv, ja argv ir argumentu sarakstā pieņemtiem ar programmu 172 00:12:11,590 --> 00:12:15,380 un argc ir argumentu skaits programmā, 173 00:12:15,380 --> 00:12:21,280 tad tas nozīmē, ka argc būtībā garums argv, pa labi, 174 00:12:21,280 --> 00:12:28,970 jo tur ir būs tikpat daudz argumentu kā vērtību argc. 175 00:12:28,970 --> 00:12:35,910 Tātad, ja mēs gribam atkārtot pār katru elementu argv, 176 00:12:35,910 --> 00:12:43,290 mēs esam gatavojas vēlaties katru reizi piekļūt mainīgo argv pie konkrētā indekss. 177 00:12:43,290 --> 00:12:49,060 Tas var būt pārstāvēta ar šo, labi? 178 00:12:49,060 --> 00:12:53,430 Šis mainīgais šeit pārstāv konkrēto virkni šajā gadījumā 179 00:12:53,430 --> 00:12:57,030 jo tas ir virkne masīvs - konkrētais stīgu tajā noteiktā indeksa. 180 00:12:57,030 --> 00:13:00,690 Ko mēs vēlamies darīt, šajā gadījumā mēs gribam to izdrukāt, tāpēc teiksim printf. 181 00:13:00,690 --> 00:13:04,680 Un tagad argv ir virkne, tāpēc mēs vēlamies nodot, ka vietturis tur. 182 00:13:04,680 --> 00:13:08,430 Mēs vēlamies jaunu līniju tikai, lai tas izskatās labi. 183 00:13:08,430 --> 00:13:12,530 Tātad šeit mums ir cilpa. Mums nav stāvoklī vēl. 184 00:13:12,530 --> 00:13:20,020 Tāpēc es sākas ar 0, un tad katru reizi, kad tā gatavojas drukāt doto virkni 185 00:13:20,020 --> 00:13:22,980 tajā konkrētā indeksa masīvā. 186 00:13:22,980 --> 00:13:28,410 Tātad, ja mēs gribam, lai apturētu drukāšanu elementus masīvā? 187 00:13:28,410 --> 00:13:35,720 Kad mēs esam pabeiguši, vai ne? Kad mēs esam sasnieguši masīva. 188 00:13:35,720 --> 00:13:38,870 Tāpēc mēs nevēlamies pārsniegt pagātnes garumu masīvs, 189 00:13:38,870 --> 00:13:43,700 un mēs jau zinām, mums nav nepieciešams, lai faktiski aktīvi uzzināt par argv garums ir 190 00:13:43,700 --> 00:13:47,520 jo tas ir mums dota, un kas tas ir? Argc. Tieši tā. 191 00:13:47,520 --> 00:13:56,640 Tāpēc mēs vēlamies darīt šo procesu argc vairākas reizes. 192 00:13:56,640 --> 00:13:59,550 Es neesmu pareizajā direktorijā. 193 00:14:02,100 --> 00:14:03,490 Labi. 194 00:14:03,490 --> 00:14:08,990 Tagad pieņemsim args. Nav kļūdas, kas ir lieliski. 195 00:14:08,990 --> 00:14:11,430 Tāpēc pieņemsim tikai palaist args. 196 00:14:11,430 --> 00:14:15,130 Kas tas ir gatavojas atgriezties pie mums? Tas ir tikai gatavojas to izdrukāt atpakaļ. 197 00:14:15,130 --> 00:14:18,320 "Tu ievadīts args vērā programmā, es esmu gatavojas sniegt to atpakaļ uz jums." 198 00:14:18,320 --> 00:14:23,170 Tāpēc pieņemsim, ka mēs vēlamies teikt args tad foo bar. 199 00:14:23,170 --> 00:14:26,570 Tātad, tad tas drukā to, atpakaļ pie mums. Viss labi? 200 00:14:26,570 --> 00:14:30,790 Tāpēc ir par to, kā jūs varat izmantot argc un argv piemērs 201 00:14:30,790 --> 00:14:33,460 zinot, ka argc pārstāv garumu argv. 202 00:14:33,460 --> 00:14:42,750 Pārliecinieties, ka jums nav kādreiz ar masīvu piekļūt vienam aiz garumu masīva 203 00:14:42,750 --> 00:14:45,140 jo C noteikti kliegt pie jums. 204 00:14:45,140 --> 00:14:47,560 Jūs saņemsiet kaut ko sauc segmentāciju vaina, 205 00:14:47,560 --> 00:14:52,470 kas nekad nav jautri, būtībā sakot jūs mēģināt piekļūt kaut 206 00:14:52,470 --> 00:14:55,000 ka nav, nav pieder jums. 207 00:14:55,000 --> 00:14:59,430 Tāpēc pārliecinieties, un jo īpaši ar nulles indeksācija, mēs negribam - 208 00:14:59,430 --> 00:15:02,390 Tāpat kā, piemēram, ja mums ir masīvs 4 garums, 209 00:15:02,390 --> 00:15:07,240 ka masīva indekss 4 nepastāv, jo mēs sākam ar 0, nulles indeksu. 210 00:15:07,240 --> 00:15:11,730 Tas kļūs par otro dabu, tāpat kā uz cilpas, kad mēs sākam ar 0. 211 00:15:11,730 --> 00:15:13,610 Lai tikai saglabātu, ka prātā. 212 00:15:13,610 --> 00:15:22,590 Jūs nevēlaties, lai kādreiz piekļūt indeksu masīvā, kas ir ārpus jūsu sasniegt. 213 00:15:26,710 --> 00:15:32,560 Lai mēs varētu redzēt tagad, kā mēs varam veida piekļuves 214 00:15:32,560 --> 00:15:35,930 komandrindas argumenti, kas tiek nodotas collas 215 00:15:35,930 --> 00:15:41,330 Bet kā jūs redzēja virkni, argv faktiski virkne masīvs. 216 00:15:41,330 --> 00:15:45,740 Tātad, tas tiešām nav skaitlim vēl, bet Cēzars mēs vēlamies tikt galā ar veseliem skaitļiem. 217 00:15:45,740 --> 00:15:54,430 Par laimi, tur ir funkcija radīta mums, ka faktiski var pārvērst virkni līdz veselam skaitlim. 218 00:15:54,430 --> 00:15:58,710 Arī šeit mums nav darīšana ar lietotāja ievadi, kur mēs esam mudinot viņus 219 00:15:58,710 --> 00:16:03,740 par ieguldījumu šeit atslēgu, lai mēs varētu faktiski nav reprompt un teikt, 220 00:16:03,740 --> 00:16:07,840 "Ak, dod man citu skaitli, proti, ja tas nav derīgs." 221 00:16:07,840 --> 00:16:10,540 Bet mēs joprojām ir nepieciešams, lai pārbaudītu pareizu lietošanu. 222 00:16:10,540 --> 00:16:13,520 Jo Cēzars viņiem ir atļauts tikai iet 1 numuru, 223 00:16:13,520 --> 00:16:18,030 un lai viņi būtu palaist. / Cēzaru un tad viņi ir sniegt jums numuru. 224 00:16:18,030 --> 00:16:23,660 Tāpēc argc ir jābūt noteiktam skaitam. 225 00:16:23,660 --> 00:16:29,060 Kādu numuru tas var būt, ja viņiem iet jums. / Cēzars un tad atslēga? 226 00:16:29,060 --> 00:16:32,920 Kas ir argc? >> [Students] 2. >> Divi. Tieši tā. 227 00:16:32,920 --> 00:16:35,490 Tātad jūs vēlaties, lai pārliecinātos, ka argc ir 2. 228 00:16:35,490 --> 00:16:39,620 Pretējā gadījumā jūs būtībā atsakās palaist programmu. 229 00:16:39,620 --> 00:16:43,040 Jo galvenais tas funkcija, kas saka int galvenais, 230 00:16:43,040 --> 00:16:47,360 tā tad mēs vienmēr labas prakses atpakaļ 0 beigās veiksmīgu programmu. 231 00:16:47,360 --> 00:16:50,840 Tātad, ja, teiksim, tie dod jums 3 komandrindas argumentus nevis 2 232 00:16:50,840 --> 00:16:54,350 vai jums 1, piemēram, tad ko jūs darīt, ir jūs vēlaties, lai pārbaudītu, ka 233 00:16:54,350 --> 00:16:59,900 un pēc tam atgriezties 1 saka, nē, es nevaru turpināt šo programmu. 234 00:16:59,900 --> 00:17:03,190 [Students] Tur nevar būt telpu savā tekstā. >> Pardon me? 235 00:17:03,190 --> 00:17:06,780 [Students] Tur nevar būt telpu tekstā jūs mēģināt šifrēt. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 Runājot par tekstu, ka mēs cenšamies, lai šifrētu, kas faktiski nāk vēlāk 238 00:17:11,280 --> 00:17:13,970 kad mēs dodam šo tekstu. 239 00:17:13,970 --> 00:17:18,260 Tātad tagad mēs esam tikai pieņemt kā komandas argumentus faktiskais skaits, 240 00:17:18,260 --> 00:17:21,579 faktiskais pāreja uz Cēzara šifrēšanu. 241 00:17:21,579 --> 00:17:27,569 [Students] Kāpēc jums ir nepieciešams 2 pretstatā tikai 1 argc? Tur noteikti 1 numuru. 242 00:17:27,569 --> 00:17:32,200 Tiesības. Iemesls, kāpēc mums vajag 2 par argc nevis 1 243 00:17:32,200 --> 00:17:36,260 ir tāpēc, kad jūs darbināt programmu un pateikt. / Cēzara vai. / sveiki, 244 00:17:36,260 --> 00:17:38,280 kas faktiski skaitās kā komandrindas arguments. 245 00:17:38,280 --> 00:17:43,020 Tātad, tad tas jau aizņem 1 un tad mēs esam ievadot 1 papildu. 246 00:17:45,030 --> 00:17:49,440 Tātad jūs ievadot faktiski string komandrindas argumentu. 247 00:17:49,440 --> 00:17:52,730 Ko jūs vēlaties darīt, lai Cēzars mēs vēlamies tikt galā ar veselam skaitlim, 248 00:17:52,730 --> 00:17:57,180 lai jūs varētu izmantot šo atoi funkciju. 249 00:17:57,180 --> 00:18:02,850 Un būtībā, jūs nodot to virknē, un tad tas atgriezīsies jums atpakaļ skaitlim 250 00:18:02,850 --> 00:18:06,070 ja tas ir iespējams veikt šo string vērā veselam skaitlim. 251 00:18:06,070 --> 00:18:10,960 Tagad atceros, kad mums ir darīšana ar printf vai GetString, lietām, piemēram, ka, 252 00:18:10,960 --> 00:18:13,390 mēs arī bibliotēkas, kas ir raksturīgi mums. 253 00:18:13,390 --> 00:18:19,450 Tātad sākumā mēs sākam ar hash tag standarta I / O,. H, kaut kas tamlīdzīgs. 254 00:18:19,450 --> 00:18:22,430 Nu, atoi neietilpst kādā no šīm bibliotēkām, 255 00:18:22,430 --> 00:18:26,600 tā, ko mums ir jādara, ir mums ir jāiekļauj tiesības bibliotēka par to. 256 00:18:26,600 --> 00:18:32,720 Tāpēc atceros atpakaļ uz Walkthrough 1 kur es apsprieda manuālo funkciju. 257 00:18:32,720 --> 00:18:37,110 Rakstot cilvēks savā termināla un pēc tam sekoja ar nosaukumu funkciju. 258 00:18:37,110 --> 00:18:39,720 Un tā, kas būs audzināt veselu sarakstu tās lietošanu, 259 00:18:39,720 --> 00:18:42,890 bet arī tas būs audzināt kurā bibliotēka, kas pieder. 260 00:18:42,890 --> 00:18:47,000 Tāpēc es ņemšu atvaļinājumu, ka jums, lai izmantotu manuālo funkciju ar atoi 261 00:18:47,000 --> 00:18:53,360 un izdomāt, ko bibliotēka jums nepieciešams iekļaut, lai varētu izmantot atoi funkciju. 262 00:18:54,450 --> 00:18:57,670 Tāpēc mēs esam ieguvuši atslēgu un tagad runa ir iegūt vienkāršu tekstu, 263 00:18:57,670 --> 00:19:01,820 un tādējādi faktiski būs lietotāja ievadi, kur ātri. 264 00:19:01,820 --> 00:19:05,540 Mēs nodarbojas ar GetInt un GetFloat, un tāpēc tādā pašā garā 265 00:19:05,540 --> 00:19:07,670 mēs gribam būt darīšana ar GetString. 266 00:19:07,670 --> 00:19:12,440 Bet šajā gadījumā mums nav nepieciešams darīt jebkādu darīt, kamēr vai kamēr cilpas pārbaudīt. 267 00:19:12,440 --> 00:19:14,480 GetString noteikti dod mums virkni, 268 00:19:14,480 --> 00:19:17,630 un mēs braucam, lai šifrētu neatkarīgi lietotājs dod mums. 269 00:19:17,630 --> 00:19:23,770 Tātad jūs varat pieņemt, ka visi šie lietotāju ienākošā stīgas ir pareizi. 270 00:19:23,770 --> 00:19:24,670 Lieliski. 271 00:19:24,670 --> 00:19:27,270 Tātad tad, kad jūs esat ieguvuši taustiņu un, kad esat ieguvuši tekstu, 272 00:19:27,270 --> 00:19:31,660 Tagad to, kas ir pa kreisi ir jums šifrēt šo teksta. 273 00:19:31,660 --> 00:19:36,530 Tikai, lai ātri aptver vairāk nekā lingo, tad teksta, ir tas, ko lietotājs dod jums, 274 00:19:36,530 --> 00:19:41,030 un ciphertext ir tas, ko jūs atgriezties pie tiem. 275 00:19:42,450 --> 00:19:45,850 Tātad stīgas, lai varētu iet cauri faktiski burtu pa burtam 276 00:19:45,850 --> 00:19:48,550 jo mums ir novirzīt katru burtu, 277 00:19:48,550 --> 00:19:51,390 Mēs saprotam, ka stīgas, ja mēs veida mizas atpakaļ slāņa, 278 00:19:51,390 --> 00:19:54,130 mēs redzam, ka viņi tikai patiešām sarakstu rakstzīmes. 279 00:19:54,130 --> 00:19:55,930 Viens nāk pēc otra. 280 00:19:55,930 --> 00:20:01,690 Un tā mēs varam ārstēt virknes kā masīvu, jo tie ir bloki no rakstzīmes. 281 00:20:01,690 --> 00:20:05,640 Tā teikt jums ir virkne nosaukts teksts, 282 00:20:05,640 --> 00:20:09,400 un šajā mainīga tekstā tiek glabāti Tas ir CS50. 283 00:20:09,400 --> 00:20:15,680 Tad teksts pie 0 skalas būtu galvaspilsēta T, 1 indekss būtu st, uc 284 00:20:17,530 --> 00:20:23,970 Un tad ar masīviem, kas argc piemēram args.c, 285 00:20:23,970 --> 00:20:27,090 Mēs redzējām, ka mums bija atkārtot pār masīvs 286 00:20:27,090 --> 00:20:32,440 un tāpēc mums bija atkārtot no i = 0 līdz i ir mazāks nekā garumu. 287 00:20:32,440 --> 00:20:35,560 Tāpēc mums ir nepieciešams kaut kādā veidā norādītas, ko no mūsu virknes garums ir 288 00:20:35,560 --> 00:20:37,090 ja mēs spēsim atkārtot pār to. 289 00:20:37,090 --> 00:20:42,300 Par laimi atkal, tur ir funkcija tur mums, lai gan vēlāk arī CS50 290 00:20:42,300 --> 00:20:45,860 jūs noteikti varētu īstenot un padarīt savu funkciju 291 00:20:45,860 --> 00:20:48,260 kas var aprēķināt garumu virknes. 292 00:20:48,260 --> 00:20:52,120 Bet tagad mēs spēsim izmantot rindas garums, strlen tā. 293 00:20:52,120 --> 00:21:00,440 Jums iet virknē, un tad tas atgriezīsies jums int kas pārstāv garumu jūsu virknes. 294 00:21:00,440 --> 00:21:05,840 Apskatīsim piemēru, kā mēs varētu atkārtot pār katru rakstzīmi virknē 295 00:21:05,840 --> 00:21:08,470 un kaut ko darīt ar to. 296 00:21:08,470 --> 00:21:13,250 Ko mēs vēlamies darīt, ir atkārtot pār katru rakstzīmi virknes, 297 00:21:13,250 --> 00:21:19,150 un ko mēs vēlamies darīt, ir, mēs drukāt atpakaļ katru rakstzīmi 1 līdz 1 298 00:21:19,150 --> 00:21:22,060 izņemot mēs pievienot kaut blakus tai. 299 00:21:22,060 --> 00:21:27,020 Tāpēc sāksim ar cilpa. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Mēs ejam, lai atstāt telpu stāvokli. 301 00:21:32,700 --> 00:21:36,840 Mēs vēlamies atkārtot, kamēr mēs sasniegt beigām virknes, vai ne? 302 00:21:36,840 --> 00:21:41,340 Tātad, tad kāda funkcija dod mums garuma virknes? 303 00:21:41,340 --> 00:21:43,160 [Dzirdams studentu reaģēšanas] 304 00:21:43,160 --> 00:21:46,420 Tas ir garums komandrindas argumentus. 305 00:21:46,420 --> 00:21:50,650 Bet virknes mēs vēlamies izmantot funkciju, kas dod mums garuma virknes. 306 00:21:50,650 --> 00:21:53,090 Tā ka ir rindas garums. 307 00:21:53,090 --> 00:21:57,130 Un tā, tad jums ir, lai iet virknē uz to. 308 00:21:57,130 --> 00:21:59,760 Tas nepieciešams, lai zināt, ko virkne tai aprēķināt garumu. 309 00:21:59,760 --> 00:22:03,160 Tātad, tad šajā gadījumā mums ir darīšana ar stīgu s. 310 00:22:04,790 --> 00:22:05,860 Lieliski. 311 00:22:05,860 --> 00:22:10,770 Tātad, tad ko mēs vēlamies darīt, pieņemsim printf. 312 00:22:10,770 --> 00:22:14,850 Tagad mēs vēlamies, lai risinātu ar burtiem. Mēs vēlamies, lai izdrukātu katru individuālu raksturu. 313 00:22:14,850 --> 00:22:22,150 Ja jūs vēlaties to izdrukāt, apgrozāmos līdzekļus, jūs varētu izmantot vietturi kā% f. 314 00:22:22,150 --> 00:22:24,580 Ar int jūs varētu izmantot% d. 315 00:22:24,580 --> 00:22:30,890 Un tā līdzīgi, ar raksturu jūs izmantojat% c, ka es esmu būs drukāšanas raksturs 316 00:22:30,890 --> 00:22:34,570 kas ir saglabāta iekšā mainīgā. 317 00:22:34,570 --> 00:22:40,840 Tāpēc mums ir tas, un pieņemsim pievienot periods un telpu, lai to. 318 00:22:40,840 --> 00:22:45,430 Kuru raksturs mēs izmanto? 319 00:22:45,430 --> 00:22:49,780 Mēs ejam, lai, izmantojot neatkarīgi raksturs mēs esam pie virknes. 320 00:22:49,780 --> 00:22:52,890 Tātad, tad mēs ejam, lai būtu izmantot kaut ar auklu, 321 00:22:52,890 --> 00:22:56,420 bet mēs vēlamies, lai piekļūtu noteiktu raksturu tur. 322 00:22:56,420 --> 00:23:02,740 Tātad, ja virkne ir tikai masīvs, tad kā mēs piekļūt elementus masīviem? 323 00:23:02,740 --> 00:23:06,480 Mums ir šīs kvadrātiekavas, un tad mēs nodot indeksu tur. 324 00:23:06,480 --> 00:23:11,820 Tāpēc mums ir kvadrātiekavas. Mūsu rādītājs šajā gadījumā mēs varam tikai izmantot i. Tieši tā. 325 00:23:15,290 --> 00:23:22,370 Tāpēc šeit mēs esam sakot, mēs gribam būt drukāšanas raksturu seko dot un atstarpi, 326 00:23:22,370 --> 00:23:30,870 un ka raksturs būs kārtējam vēstule mūsu String s. 327 00:23:32,920 --> 00:23:39,330 Es esmu tikai gatavojas glābt to. Labi. 328 00:23:42,510 --> 00:23:46,840 Tagad es esmu gatavojas palaist stīgu garumu. 329 00:23:46,840 --> 00:23:53,440 Tāpēc mums bija virkne sauc OMG, un tagad tas ir uzsvērts vēl vairāk. 330 00:23:53,440 --> 00:23:57,870 Tāpat, pieņemsim, ka mēs tiešām vēlamies, lai iegūtu virkni no lietotāja. 331 00:23:57,870 --> 00:23:59,580 Kā varētu mums darīt? 332 00:23:59,580 --> 00:24:01,610 Pirms, kā mēs iegūt int? 333 00:24:01,610 --> 00:24:08,040 Mēs teicām GetInt, labi? Bet tas nav int, tāpēc pieņemsim GetString. 334 00:24:11,780 --> 00:24:17,770 Pieņemsim stīgu garumu. Šeit mums nav ievadiet konkrētu uzvedni. 335 00:24:17,770 --> 00:24:19,940 Tāpēc es nezinu. 336 00:24:19,940 --> 00:24:23,820 Es esmu gatavojas īstenot manu vārdu šeit un tad es varu darīt vienu no šīm lietām 337 00:24:23,820 --> 00:24:29,600 kur es piešķirt vārdu par katru burtu vai kaut kas tamlīdzīgs. Atdzist. 338 00:24:29,600 --> 00:24:31,900 Tā ka ir rindas garums. 339 00:24:33,000 --> 00:24:34,640 Tātad mēs esam atpakaļ uz ķeizaru. 340 00:24:34,640 --> 00:24:38,620 Mums ir daži instrumenti, kā mēs atkārtot pa virknes, 341 00:24:38,620 --> 00:24:41,250 kā mēs piekļūt katru atsevišķu elementu. 342 00:24:41,250 --> 00:24:44,720 Tātad tagad mēs varam nokļūt atpakaļ uz programmu. 343 00:24:44,720 --> 00:24:48,650 Kā jau minēju iepriekš, ASCII tabulā, Jūsu labākais draugs, 344 00:24:48,650 --> 00:24:52,300 jūs gatavojas redzēt skaitļus, kas ir saistīti ar katru burtu. 345 00:24:52,300 --> 00:24:55,900 Tāpēc šeit teikt mūsu teksta, ir es esmu apreibis! 346 00:24:55,900 --> 00:25:01,090 Tad katrs no šiem burtiem ir nāksies numuru un ASCII vērtība, kas saistīti ar to, 347 00:25:01,090 --> 00:25:04,710 pat Apostrofs, pat telpa, pat izsaukuma zīmi, 348 00:25:04,710 --> 00:25:06,600 tādējādi jūs vēlaties, lai saglabātu, ka prātā. 349 00:25:06,600 --> 00:25:12,360 Tā teikt mūsu galvenais, ka lietotājs, kas iekļauta to komandrindas arguments ir 6. 350 00:25:12,360 --> 00:25:17,770 Tas nozīmē, pirmo burtu, kas man, kas tiek pārstāvēta ar 73, 351 00:25:17,770 --> 00:25:25,610 Jūs vēlaties, lai atgrieztos pie viņiem kāds burts ir pārstāvēta ar ASCII vērtību 73 + 6. 352 00:25:25,610 --> 00:25:29,020 Šajā gadījumā tas būtu 79. 353 00:25:30,840 --> 00:25:35,040 Tagad mēs vēlamies doties uz nākamo rakstzīmi. 354 00:25:35,040 --> 00:25:40,960 Tātad, kas no teksta, 1 indeksa nākamais būtu apostrofs. 355 00:25:40,960 --> 00:25:46,780 Bet atcerieties, mēs tikai vēlamies, lai šifrēt burtus. 356 00:25:46,780 --> 00:25:50,040 Tāpēc mēs vēlamies, lai pārliecinātos, ka apostrofs patiesībā paliek tas pats, 357 00:25:50,040 --> 00:25:54,310 ka mums nav jāmaina 39-45 kāds ir. 358 00:25:54,310 --> 00:25:57,150 Mēs vēlamies, lai saglabātu to kā apostrofam. 359 00:25:57,150 --> 00:26:00,780 Tāpēc mēs vēlamies atcerēties tikai šifrēt burti 360 00:26:00,780 --> 00:26:04,560 jo mēs gribam visus citus simbolus, lai nemainās mūsu programmā. 361 00:26:04,560 --> 00:26:07,130 Vēl viena lieta, ko mēs vēlamies, ir saglabāt kapitalizāciju. 362 00:26:07,130 --> 00:26:10,250 Tātad, ja jums ir lielo burtu, tai vajadzētu palikt kā lielajiem burtiem. 363 00:26:10,250 --> 00:26:12,830 Lowercases vajadzētu palikt kā mazie. 364 00:26:13,620 --> 00:26:19,480 Tāpēc dažas noderīgas funkcijas, lai spētu tikt galā ar tikai šifrēšanas burtiem 365 00:26:19,480 --> 00:26:22,380 un saglabāt saglabājot kapitalizāciju lietām 366 00:26:22,380 --> 00:26:25,130 ir isalpha, isupper, islower funkcijas. 367 00:26:25,130 --> 00:26:29,270 Un tāpēc tie ir funkcijas, kas atgriezīs jums Būla vērtību. 368 00:26:29,270 --> 00:26:34,180 Būtībā, patiess vai nepatiess. Vai šis lielais? Vai tas burtciparu? 369 00:26:34,180 --> 00:26:37,180 Vai tas vēstuli, būtībā. 370 00:26:37,180 --> 00:26:41,070 Tātad šeit ir 3 piemēri, kā jūs varētu izmantot šo funkciju. 371 00:26:41,070 --> 00:26:47,060 Būtībā, jūs varētu pārbaudīt, vai vērtība atgriezās jums ar šo funkciju, ir patiess vai nepatiess 372 00:26:47,060 --> 00:26:49,400 pamatojoties uz šo ieguldījumu. 373 00:26:49,400 --> 00:26:54,880 Nu nav šifrēt kaut vai šifrētus to vai pārliecinieties, ka tas ir lielos, uc 374 00:26:54,880 --> 00:27:01,080 [Students] Vai jūs vienkārši izskaidrot tiem nedaudz vairāk, un kā jūs tos izmantot? >> Jā, protams. 375 00:27:01,080 --> 00:27:08,470 Tātad, ja mēs atskatāmies, šeit mums ir kapitāls I, labi? 376 00:27:08,470 --> 00:27:14,550 Tātad mēs zinām, ka man iet līdz O jo man + 6 ir O. 377 00:27:14,550 --> 00:27:18,740 Bet mēs vēlamies, lai pārliecinātos, ka tas O būs kapitāla O. 378 00:27:18,740 --> 00:27:22,940 Vārdu sakot, tas ir sava veida gatavojas mainīt savu ieguldījumu. 379 00:27:22,940 --> 00:27:26,870 Tātad, vai tas lielais vai nav gribas veida mainīt veidu, kā mēs galā ar to. 380 00:27:26,870 --> 00:27:32,360 Lai tad, ja mēs izmantojam isupper funkciju par konkrēto indeksu, 381 00:27:32,360 --> 00:27:36,480 tāpēc isupper ("es"), kas atgriež mūs patiesi, tāpēc mēs zinām, ka tā ir augšējā. 382 00:27:36,480 --> 00:27:40,360 Tātad, tad, pamatojoties uz to, vēlāk mēs iedziļināties formulā 383 00:27:40,360 --> 00:27:42,750 kas jums tiks izmantojot pārcelt lietas Cēzara, 384 00:27:42,750 --> 00:27:46,560 tā tad būtībā, tur būs nedaudz atšķirīga formula, ja tas ir lielos 385 00:27:46,560 --> 00:27:50,670 nevis uz mazajiem burtiem. Jēga? 386 00:27:51,020 --> 00:27:52,760 Yeah. Neuztraucieties. 387 00:27:54,900 --> 00:27:58,990 Es runāju mazliet par pievienojot 6 līdz vēstuli, kurā nav gluži jēgas 388 00:27:58,990 --> 00:28:05,500 izņemot gadījumus, kad mēs veida saprotam, ka šīs zīmes 389 00:28:05,500 --> 00:28:08,920 ir sava veida aizstājamas ar veseliem skaitļiem. 390 00:28:08,920 --> 00:28:11,250 Ko mēs darām, ir mēs veida izmantošanu netieši liešana. 391 00:28:11,250 --> 00:28:18,100 Mēs iedziļināties lejot nedaudz vēlāk, ja jūs lietojat vērtību un jūs pārvērst to dažāda tipa 392 00:28:18,100 --> 00:28:20,440 nekā tas sākotnēji bija. 393 00:28:20,440 --> 00:28:25,910 Bet ar šo PSET mēs varētu veida pamīšus izmantot simbolus 394 00:28:25,910 --> 00:28:30,880 un tām atbilstošie integer vērtības. 395 00:28:30,880 --> 00:28:35,140 Tātad, ja jūs vienkārši iesaiņot raksturs tikai ar vienu pēdiņām, 396 00:28:35,140 --> 00:28:40,390 tad jūs varēsiet strādāt ar to ar veseliem skaitļiem, kas nodarbojas ar to, kā veselam skaitlim. 397 00:28:40,390 --> 00:28:48,040 Tātad kapitāls C attiecas uz 67. Mazie f attiecas uz 102. 398 00:28:48,040 --> 00:28:51,480 Atkal, ja jūs vēlaties zināt šīs vērtības, apskatīt savu ASCII tabulu. 399 00:28:51,480 --> 00:28:56,160 Tāpēc pieņemsim iedziļināties dažos kā jūs varētu atņemt un pievienot piemērus, 400 00:28:56,160 --> 00:29:03,130 kā jūs faktiski var tiešām strādāt ar šiem burtiem, izmantot tos pamīšus. 401 00:29:03,870 --> 00:29:11,350 Es saku, ka ASCIIMath gatavojas aprēķināt pievienot raksturs līdz veselam skaitlim 402 00:29:11,350 --> 00:29:17,590 un pēc tam parāda iegūto raksturu, kā arī rezultējošo ASCII vērtību. 403 00:29:17,590 --> 00:29:22,290 Un tāpēc šeit es saku - we'll galā ar šo daļu vēlāk - 404 00:29:22,290 --> 00:29:29,100 bet būtībā, es saku, ka lietotājam būtu teikt palaist ASCIIMath kopā ar atslēgu, 405 00:29:29,100 --> 00:29:30,880 un es saku, ka galvenais būs skaits 406 00:29:30,880 --> 00:29:34,600 ar ko mēs ejam, lai pievienotu šo raksturu. 407 00:29:34,600 --> 00:29:38,560 Tāpēc šeit ievērosiet, ka kopš es esmu prasīga atslēgu, 408 00:29:38,560 --> 00:29:40,590 jo es esmu prasīga, ka viņi dod man 1 lieta, 409 00:29:40,590 --> 00:29:45,600 Es tikai gribu pieņemt. / Asciimath un atslēgu. 410 00:29:45,600 --> 00:29:49,330 Tāpēc es esmu gatavojas pieprasīt, lai argc ir vienāds ar 2. 411 00:29:49,330 --> 00:29:54,360 Ja tā nav, tad es esmu gatavojas atgriezties 1 un programma tiks aizvērta. 412 00:29:55,070 --> 00:29:58,540 Tāpēc es saku, galvenais nav būs pirmais komandrindas argumentu, 413 00:29:58,540 --> 00:30:05,080 tas būs otrais, un kā jūs redzēt šeit, 414 00:30:05,080 --> 00:30:11,790 Es esmu gatavojas pārvērst kas stājas veselam skaitlim. 415 00:30:15,740 --> 00:30:19,230 Tad es esmu gatavojas noteikt raksturs būt r. 416 00:30:19,230 --> 00:30:23,970 Ievērojiet, ka no mainīgā Cilvēktiesību veids ir faktiski skaitlis. 417 00:30:23,970 --> 00:30:30,480 Tā, ka es esmu spējīgs izmantot r kā veselums, ir encasing to ar šiem vienu pēdiņām. 418 00:30:33,850 --> 00:30:40,560 Tātad atpakaļ pie mūsu printf paziņojumu, kurā mums ir vietturi raksturs 419 00:30:40,560 --> 00:30:43,590 un tad vietturis veselam skaitlim, 420 00:30:43,590 --> 00:30:49,450 raksturs ir pārstāvēta ar CHR, un skaitlis ir galvenais. 421 00:30:49,450 --> 00:30:54,320 Un tad mēs ejam uz rezultātu pievienotu 2 kopā. 422 00:30:54,320 --> 00:30:58,420 Tāpēc mēs esam gatavojas pievienot r + kāds galvenais ir, 423 00:30:58,420 --> 00:31:03,520 un tad mēs ejam, lai drukātu rezultātu, kas. 424 00:31:06,210 --> 00:31:14,220 Tāpēc pieņemsim asciimath. Tas ir līdz dienai, tāpēc pieņemsim tikai palaist asciimath. 425 00:31:14,220 --> 00:31:18,290 Ak, bet redz, tas nav darīt kaut ko, jo mēs faktiski nav arī tā atslēga. 426 00:31:18,290 --> 00:31:23,850 Tad, kad tas tikko atgriezies 1, Mūsu galvenais uzdevums, tas tikko atgriezies atpakaļ pie mums. 427 00:31:23,850 --> 00:31:29,250 Tātad, tad pieņemsim iet ar atslēgu. Kāds varētu man numuru. >> [Students] 4. 428 00:31:29,250 --> 00:31:30,920 4. Labi. 429 00:31:30,920 --> 00:31:39,280 Tātad R pieauga par 4 gatavojas sniegt mums V, kas atbilst ASCII vērtību 118. 430 00:31:39,280 --> 00:31:43,880 Tātad, tad tas veida jēga, ka - 431 00:31:43,880 --> 00:31:51,250 Patiesībā, es varu lūgt jums, ko jūs domājat ASCII vērtība r ir ja r + 4 ir 118? 432 00:31:53,070 --> 00:31:55,470 Tad jā, r ir 114. 433 00:31:55,470 --> 00:32:03,010 Tātad, ja paskatās uz ASCII tabulu tad, tik tiešām, jūs redzēsiet, ka R pārstāv 114. 434 00:32:03,010 --> 00:32:08,610 Tāpēc tagad, ka mēs zinām, ka mēs varam pievienot integers līdz zīmēm, tas šķiet diezgan vienkārši. 435 00:32:08,610 --> 00:32:12,740 Mēs esam tikai gatavojas atkārtot pa virkni, piemēram, mēs redzējām piemērs pirms. 436 00:32:12,740 --> 00:32:17,170 Mēs pārbaudīt, vai tā vēstule. 437 00:32:17,170 --> 00:32:20,420 Ja tā ir, tad mēs novirzīt to, ko kāds galvenais ir. 438 00:32:20,420 --> 00:32:23,650 Diezgan vienkārši, izņemot gadījumus, kad jums patīk tas, 439 00:32:23,650 --> 00:32:32,140 jūs redzat, ka z, ko pārstāv 122, tad dotu jums citu raksturu. 440 00:32:32,140 --> 00:32:37,770 Mēs tiešām vēlamies, lai nepārsniegtu mūsu alfabētā, labi? 441 00:32:37,770 --> 00:32:43,180 Tāpēc mums ir nepieciešams izdomāt kādu veidu veida iesaiņojuma apkārt. 442 00:32:43,180 --> 00:32:47,190 Kad jūs sasniedzat Zed un jūs vēlaties, lai palielinātu ar noteiktu skaitu, 443 00:32:47,190 --> 00:32:51,230 Jūs nevēlaties iedziļināties ārpus ASCII alfabēta sadaļā; 444 00:32:51,230 --> 00:32:54,140 Jūs vēlaties, lai wrap atpakaļ visu ceļu uz A. 445 00:32:54,140 --> 00:32:58,550 Bet paturiet prātā, jūs joprojām saglabājot lietu. 446 00:32:58,550 --> 00:33:00,980 Tāpēc zinot, ka vēstules nevar kļūt simboliem 447 00:33:00,980 --> 00:33:05,290 tāpat kā simboli netiks mainās arī. 448 00:33:05,290 --> 00:33:08,170 Pēdējā PSET jums noteikti nav nepieciešams, 449 00:33:08,170 --> 00:33:14,310 bet iespēja bija, lai īstenotu savu mantkārīgs PSET izmantojot moduļa funkciju. 450 00:33:14,310 --> 00:33:17,230 Bet tagad mēs esam patiešām būs nepieciešama, lai izmantotu moduli, 451 00:33:17,230 --> 00:33:19,900 tāpēc pieņemsim tikai iet pa šo mazliet. 452 00:33:19,900 --> 00:33:26,920 Būtībā, ja jums ir x MODULO y, kas dod jums atlikušo x dala ar y. 453 00:33:26,920 --> 00:33:30,930 Lūk, daži piemēri šeit. Mums ir 27% 15. 454 00:33:30,930 --> 00:33:36,200 Būtībā, kad jūs atņemt 15 no 27 tik reižu, cik vien iespējams bez kļūst negatīvs 455 00:33:36,200 --> 00:33:39,060 tad jūs saņemsiet 12 paliek pāri. 456 00:33:39,060 --> 00:33:44,650 Tātad tas ir veids, piemēram, kas math kontekstā, bet kā mēs varam reāli izmantot šo? 457 00:33:44,650 --> 00:33:47,100 Tas būs noderīgi mūsu wrapover. 458 00:33:47,100 --> 00:33:55,420 Par šo, pieņemsim tikai teikt, es lūdzu jūs visus, lai sadalīt 3 grupās. 459 00:33:55,420 --> 00:33:58,010 Dažreiz jūs šo grupās un kaut kas tamlīdzīgs. 460 00:33:58,010 --> 00:34:01,320 Say es teicu: "Labi, es gribu jūs visus iedalīt 3." 461 00:34:01,320 --> 00:34:04,240 Kā jūs varētu darīt? 462 00:34:04,240 --> 00:34:06,810 [Dzirdams studentu reaģēšanas] Jā, tieši tā. Skaits off. Labi. 463 00:34:06,810 --> 00:34:10,260 Pieņemsim faktiski darīt. Vai jūs vēlaties sākt? 464 00:34:10,260 --> 00:34:13,810 [Studenti skaitīšanas off] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Bet atcerieties ... >> [Students] Ak, piedodiet. 466 00:34:16,620 --> 00:34:18,730 Tas ir patiešām labs punkts. 467 00:34:18,730 --> 00:34:24,130 Jūs teicāt 4, bet mēs tiešām vēlamies, lai jūs teikt 1, jo mēs tikai vēlamies 3 grupām. 468 00:34:24,130 --> 00:34:30,159 Tātad, cik - Nē, tas ir patiešām labs piemērs, jo tad kā jūs varētu teikt 1? 469 00:34:30,159 --> 00:34:33,370 Kāda ir atšķirība starp 4 un 1 attiecības? 470 00:34:33,370 --> 00:34:36,760 Nu, 4 mod 3 ir 1. 471 00:34:36,760 --> 00:34:41,460 Tātad, ja jūs turpināsiet, jums būtu 2. 472 00:34:41,460 --> 00:34:44,540 Tāpēc mums ir 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Atkal, jūs faktiski 5. persona. Kā jūs zināt, ko teikt, bet gan 2 no 5? 474 00:34:49,420 --> 00:34:53,760 Tu teiksim, 5 MOD 3 ir 2. 475 00:34:53,760 --> 00:34:59,100 Es gribu redzēt, cik grupas no 3 paliek pāri, tad kādā secībā am I. 476 00:34:59,100 --> 00:35:02,860 Un tad, ja mēs turpinājām pa visu istabu, 477 00:35:02,860 --> 00:35:07,760 tad mēs varētu redzēt, ka mēs vienmēr faktiski piemēro mod funkciju, lai sevi 478 00:35:07,760 --> 00:35:09,990 līdz veida skaits off. 479 00:35:09,990 --> 00:35:14,490 Tas ir vairāk veida reālu piemēru tam, kā jūs varētu izmantot MODULO 480 00:35:14,490 --> 00:35:17,960 jo es esmu pārliecināts, ka lielākā daļa no mums ir iespējams izgājušas caur šo procesu 481 00:35:17,960 --> 00:35:19,630 kur mēs esam bija skaits off. 482 00:35:19,630 --> 00:35:21,840 Kādi jautājumi par modulo? 483 00:35:21,840 --> 00:35:25,360 Tas būs diezgan svarīgi saprast jēdzienus šo, 484 00:35:25,360 --> 00:35:28,640 tāpēc es gribu, lai pārliecinātos, jūs guys saprast. 485 00:35:28,640 --> 00:35:34,660 [Students] Ja nav atlikums, tas dod jums faktisko skaitu? 486 00:35:34,660 --> 00:35:40,430 Ja viens no pirmās 3 no tām bija darījis to, vai tas ir devis viņiem to, ko viņi patiesībā bija, 487 00:35:40,430 --> 00:35:43,310 vai arī tas ir dota viņiem [dzirdams] >> Tas ir labs jautājums. 488 00:35:43,310 --> 00:35:48,750 Ja nav par modulo atlikusī - tā teikt, jums ir 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 kas faktiski dod jums atpakaļ 0. 490 00:35:53,670 --> 00:35:57,290 Mēs runājam par to nedaudz vēlāk. 491 00:35:58,810 --> 00:36:07,720 Ak jā, piemēram, 3 personu - 3 mod 3 ir faktiski 0, bet viņa teica 3. 492 00:36:07,720 --> 00:36:14,900 Tātad tas ir veids, piemēram iekšējo nozveju, piemēram, 493 00:36:14,900 --> 00:36:17,620 tāpat labi, ja mod ir 0, tad es esmu gatavojas būt 3 personu. 494 00:36:17,620 --> 00:36:22,740 Bet mēs nokļūt veida kā mēs varētu vēlēties, lai risinātu ar to, 0 ir vēlāk. 495 00:36:22,740 --> 00:36:32,750 Tāpēc tagad mēs kaut ir veids kartēšanas zed uz labo vēstuli. 496 00:36:32,750 --> 00:36:34,920 Tāpēc tagad mēs esam izgājuši cauri šiem piemēriem, 497 00:36:34,920 --> 00:36:37,880 mēs veida redzēt, kā Cēzars varētu strādāt. 498 00:36:37,880 --> 00:36:42,640 Jūs redzēt arī 2 alfabētu, un tad jūs redzēt tos novirzot. 499 00:36:42,640 --> 00:36:44,430 Tāpēc pieņemsim mēģināt izteikt, ka ziņā formulā. 500 00:36:44,430 --> 00:36:46,940 Šī formula ir faktiski dota jums spec, 501 00:36:46,940 --> 00:36:52,070 bet pieņemsim veida caurskatīšanas ko katrs mainīgais nozīmē. 502 00:36:52,070 --> 00:36:55,000 Mūsu gala rezultāts būs ciphertext. 503 00:36:55,000 --> 00:36:58,300 Tāpēc šī saka, ka kārtējā raksturs ciphertext 504 00:36:58,300 --> 00:37:02,500 gatavojas atbilst kārtējam raksturu teksta. 505 00:37:02,500 --> 00:37:08,130 Tas ir jēga, jo mēs vēlamies, lai vienmēr būtu uzliku šīs lietas uz augšu. 506 00:37:08,130 --> 00:37:13,480 Tātad tas būs i-raksturs ciphertext plus k, kas ir mūsu galvenais - 507 00:37:13,480 --> 00:37:17,230 ka ir jēga - un tad mums ir šis mod 26. 508 00:37:17,230 --> 00:37:19,860 Atceros atpakaļ, kad mums bija zed 509 00:37:19,860 --> 00:37:24,190 Mēs negribējām, lai nokļūt raksturu, tāpēc mēs vēlējāmies mod to 510 00:37:24,190 --> 00:37:26,540 un veids aptīšanas alfabēta. 511 00:37:26,540 --> 00:37:33,430 Pēc Zed jūs varētu doties uz, b, c, d, kamēr jums uz labo numuru. 512 00:37:33,430 --> 00:37:44,690 Tātad mēs zinām, ka Zed, ja + 6, dotu mums f jo pēc Zed nāk, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Tāpēc atcerēsimies mēs zinām droši, ka Zed +6 gatavojas sniegt mums f. 514 00:37:52,530 --> 00:38:03,530 ASCII vērtībām, z ir 122 un f ir 102. 515 00:38:03,530 --> 00:38:10,570 Tāpēc mums ir jārod veids, kā padarīt mūsu Caesar formulu dod mums 102 516 00:38:10,570 --> 00:38:13,590 vedot 122. 517 00:38:13,590 --> 00:38:19,550 Tātad, ja mēs vienkārši piemērot šo formulu, tad ("z" + 6)% 26, kas faktiski dod jums 24 518 00:38:19,550 --> 00:38:25,980 jo 122 + 6 ir 128 128% 26 dod jums 24 atlikumu. 519 00:38:25,980 --> 00:38:29,140 Bet tas nav īsti nozīmē f. Tas noteikti nav 102. 520 00:38:29,140 --> 00:38:33,590 Tas arī nav ar 6 alfabēts. 521 00:38:33,590 --> 00:38:41,550 Tātad acīmredzot, mums ir kaut kādā veidā tweaking šo mazliet. 522 00:38:42,970 --> 00:38:51,340 Runājot par regulāru alfabēta, mēs zinām, ka z ir 26. burts un f ir 6. 523 00:38:51,340 --> 00:38:55,460 Bet mēs esam datorzinātnēs, tāpēc mēs esam gatavojas indeksu pie 0. 524 00:38:55,460 --> 00:39:00,690 Tātad tad tā vietā z ir skaitlis 26, mēs esam gatavojas teikt, tas ir numurs 25 525 00:39:00,690 --> 00:39:02,630 jo ir 0. 526 00:39:02,630 --> 00:39:04,770 Tāpēc tagad pieņemsim piemērot šo formulu. 527 00:39:04,770 --> 00:39:11,710 Mums ir z pārstāv 25 + 6, kas dod jums 31. 528 00:39:11,710 --> 00:39:15,790 Un 31 mod 26 dod jums 5 kā pārējiem. 529 00:39:15,790 --> 00:39:20,500 Tas ir ideāls, jo mēs zinām, ka f ir 5 alfabēts. 530 00:39:20,500 --> 00:39:26,400 Bet tas vēl nav f, labi? Tas joprojām nav 102. 531 00:39:26,400 --> 00:39:32,730 Tātad, tad par šo PSET, izaicinājums būs mēģina noskaidrot attiecības 532 00:39:32,730 --> 00:39:36,910 starp konvertējot starp šīm ASCII vērtībām un alfabētisko indeksu. 533 00:39:36,910 --> 00:39:40,280 Būtībā, ko jūs vēlaties darīt, jūs vēlaties sākt ar ASCII vērtībām, 534 00:39:40,280 --> 00:39:45,390 bet tad jūs vēlaties, lai kaut kā pārveido to par alfabētiskajā sarakstā 535 00:39:45,390 --> 00:39:52,610 tad aprēķināt, cik burtu tas būtu - būtībā, kāda tā alfabēta indekss 536 00:39:52,610 --> 00:39:57,660 no šifra raksturs - tad tulkot, ka atpakaļ uz ASCII vērtību. 537 00:39:57,660 --> 00:40:04,870 Tātad, ja jūs pātagu savu ASCII tabulu, tad mēģināt atrast attiecības starp, teiksim, 102 un 5 538 00:40:04,870 --> 00:40:10,440 vai 122 un 25. 539 00:40:12,140 --> 00:40:15,690 Mēs esam gotten mūsu atslēga no komandrindas argumentus, mēs esam gotten teksta, 540 00:40:15,690 --> 00:40:17,520 mēs esam šifrēta to. 541 00:40:17,520 --> 00:40:19,820 Tagad viss, kas mums ir atlicis darīt, ir izdrukāt. 542 00:40:19,820 --> 00:40:22,040 Mēs varētu darīt pāris dažādos veidos. 543 00:40:22,040 --> 00:40:24,570 Ko mēs varētu darīt, ir faktiski drukāt kā mums iet līdzi. 544 00:40:24,570 --> 00:40:28,250 Kā mēs pārietu pāri rakstzīmes virknē, 545 00:40:28,250 --> 00:40:31,660 mēs varētu vienkārši tikai drukāt labi tad, kad mēs to aprēķinātu. 546 00:40:31,660 --> 00:40:36,030 Alternatīvi, jūs varētu arī to uzglabā masīvā un ir masīvs rakstzīmju 547 00:40:36,030 --> 00:40:39,280 un beigās atkārtot pa visu šo masīvā un izdrukāt to ārā. 548 00:40:39,280 --> 00:40:40,980 Tātad jums ir pāris iespējas, kas. 549 00:40:40,980 --> 00:40:47,280 Un atcerieties, ka% c būs vietturi drukāšanai raksturs. 550 00:40:47,280 --> 00:40:50,420 Tātad mums ir Cēzaru, un tagad mēs pāriet uz Vigenere, 551 00:40:50,420 --> 00:40:57,580 kas ir ļoti līdzīgs ķeizaram, bet tikai nedaudz sarežģītāka. 552 00:40:57,580 --> 00:41:03,310 Tātad būtībā ar Vigenere ir jūs būs iet ar atslēgvārdu. 553 00:41:03,310 --> 00:41:06,510 Tātad nevis numuru, jums nāksies virkni, 554 00:41:06,510 --> 00:41:09,200 Un tā tas ir gatavojas darboties kā savu atslēgvārdu. 555 00:41:09,200 --> 00:41:14,440 Tad, kā ierasts, jūs gatavojas saņemt ātru par virknes no lietotāja 556 00:41:14,440 --> 00:41:19,050 un tad šifrēt to un tad dot viņiem ciphertext atpakaļ. 557 00:41:19,050 --> 00:41:24,650 Tā kā es teicu, tas ir ļoti līdzīgs Cēzara, izņemot vietā novirzot ar noteiktu skaitu, 558 00:41:24,650 --> 00:41:30,620 numurs ir faktiski gatavojas mainīt katru reizi no rakstura rakstura. 559 00:41:30,620 --> 00:41:34,890 Kas raksturo faktisko skaitu pāriet, tas pārstāv tastatūras burtiem. 560 00:41:34,890 --> 00:41:43,150 Tātad, ja jūs ievadīt maiņu, piemēram, tam, ka varētu atbilst pāreju no 0. 561 00:41:43,150 --> 00:41:45,900 Tātad, tas ir atkal atpakaļ uz alfabētiskajā sarakstā. 562 00:41:45,900 --> 00:41:49,100 Kāda varētu būt noderīgi, ja jūs redzēt, ka mēs faktiski nodarbojas ar ASCII vērtību 563 00:41:49,100 --> 00:41:51,790 kā arī vēstules, kā arī alfabētiskajā sarakstā, 564 00:41:51,790 --> 00:41:58,020 varbūt atrast vai izveidot savu ASCII tabulu, kas parāda alfabētisko rādītāju no 0 līdz 25, 565 00:41:58,020 --> 00:42:03,750 līdz Z, un ASCII vērtības, lai jūs varētu veida redzēt attiecības 566 00:42:03,750 --> 00:42:07,020 un ieskicēt un mēģināt atrast dažus modeļus. 567 00:42:07,020 --> 00:42:11,010 Tāpat, ja Jums bija novirzot tajā noteiktā instancē F - 568 00:42:11,010 --> 00:42:21,110 un tas vai nu mazos vai lielos f - tad tas varētu atbilst 5. 569 00:42:21,110 --> 00:42:24,180 Vai mēs labi līdz šim? 570 00:42:25,770 --> 00:42:30,050 Par Vigenere formula ir nedaudz atšķirīgs. 571 00:42:30,050 --> 00:42:32,960 Būtībā, jūs redzēsiet, ka tas ir tāpat kā Cēzara, 572 00:42:32,960 --> 00:42:37,390 izņemot nevis tikai k mums ir k indekss j. 573 00:42:37,390 --> 00:42:44,810 Ievērojiet, ka mēs neesam izmantojot i, jo būtībā, garumu atslēgvārdu 574 00:42:44,810 --> 00:42:49,850 ne vienmēr garumu mūsu ciphertext. 575 00:42:49,850 --> 00:42:56,130 Tas būs nedaudz skaidrāks, kad mēs redzam piemēru, kas man ir mazliet vēlāk. 576 00:42:56,130 --> 00:43:03,160 Būtībā, ja jūs palaist savu programmu ar atslēgvārdu ohai, 577 00:43:03,160 --> 00:43:08,560 tad tas nozīmē, ka katru reizi, ohai būs jūsu pāreja. 578 00:43:08,560 --> 00:43:11,060 Tātad, atkarībā no tā, ko amats jums ir jūsu atslēgvārdu, 579 00:43:11,060 --> 00:43:15,800 jūs gatavojas novirzīt savu noteiktu ciphertext raksturu par šo summu. 580 00:43:15,800 --> 00:43:19,630 Atkal, tāpat kā Cēzara, mēs vēlamies, lai pārliecinātos, ka mēs saglabāt kapitalizāciju lietām 581 00:43:19,630 --> 00:43:22,900 un mēs tikai šifrēt vēstules, ne rakstzīmes vai atstarpes. 582 00:43:22,900 --> 00:43:26,330 Tāpēc atskatīties ķeizaram par funkcijām, kas jums var būt izmantoti, 583 00:43:26,330 --> 00:43:32,570 tā, ka esat nolēmis, kā pārcelt lietas, un uzlikt uz savu programmu šeit. 584 00:43:32,570 --> 00:43:35,260 Tāpēc pieņemsim kartēt šo out. 585 00:43:35,260 --> 00:43:39,680 Mums ir teksta, ka mēs esam gotten no lietotāja no GetString 586 00:43:39,680 --> 00:43:44,090 sakot ... ir CS50! 587 00:43:44,090 --> 00:43:47,090 Tad mums ir atslēgvārdu ohai. 588 00:43:47,090 --> 00:43:50,930 Pirmie 4 varoņi ir diezgan vienkārši. 589 00:43:50,930 --> 00:43:55,580 Mēs zinām, ka T ir būs nobīdīts o, 590 00:43:55,580 --> 00:44:01,990 tad h būs nobīdīts H, I ir būs nobīdīts. 591 00:44:01,990 --> 00:44:04,610 Šeit jūs redzēsiet, ka ir 0, 592 00:44:04,610 --> 00:44:11,940 tā tad gala vērtība ir faktiski tikai tā pati vēstule, kas pirms tam. 593 00:44:11,940 --> 00:44:15,250 Tad s tiek nobīdīts i. 594 00:44:15,250 --> 00:44:19,370 Bet tad jums ir šos periodus šeit. 595 00:44:19,370 --> 00:44:25,960 Mēs nevēlamies, lai šifrēt, ka, lai pēc tam mēs nemainīsim to ar jebko 596 00:44:25,960 --> 00:44:31,280 un vienkārši izdrukāt periodu nemainīgu. 597 00:44:31,280 --> 00:44:38,020 [Students] Es nesaprotu, kā jūs zināt, ka tas tiek nobīdīts - Kur tu - >> Ak, piedodiet. 598 00:44:38,020 --> 00:44:41,620 Augšā šeit jūs redzēsiet, ka komandrindas arguments ohai šeit, 599 00:44:41,620 --> 00:44:43,740 kas būs atslēgvārdu. 600 00:44:43,740 --> 00:44:49,550 Un tā būtībā, jūs riteņbraukšana pa attiecīgās atslēgvārdu rakstzīmes. 601 00:44:49,550 --> 00:44:52,020 [Students] tā o ir būs novirzot pašu - 602 00:44:52,020 --> 00:44:56,260 Tā o atbilst noteiktam skaitam šajā alfabētā. 603 00:44:56,260 --> 00:44:58,400 [Students] labi. Bet kur tu saņemt CS50 daļu no? 604 00:44:58,400 --> 00:45:02,540 Oh. Tas ir jo GetString kur tu esi, piemēram, "Dodiet man virknes šifrēt." 605 00:45:02,540 --> 00:45:07,510 [Students] Viņi gatavojas sniegt jums šo argumentu novirzīt par 606 00:45:07,510 --> 00:45:09,380 un tad jūs lūgt par savu pirmo stīgu. >> Jā. 607 00:45:09,380 --> 00:45:12,440 Tātad, ja viņi palaist programmu, viņi gatavojas iekļaut atslēgvārdu 608 00:45:12,440 --> 00:45:14,740 savās komandrindas argumentiem, kad viņi palaist to. 609 00:45:14,740 --> 00:45:19,740 Tad, kad jūs esat pārbaudīts, ka viņi faktiski devis jums 1 un ne vairāk, ne mazāk, 610 00:45:19,740 --> 00:45:23,750 tad jūs gatavojas ātri tos virkne, teiksim, "Dodiet man virkni." 611 00:45:23,750 --> 00:45:27,630 Tā ka, ja šajā gadījumā viņš nodrošina jums šo ... ir CS50! 612 00:45:27,630 --> 00:45:32,090 Tātad, tad jūs gatavojas izmantot to un izmantot ohai un atkārtot vairāk. 613 00:45:32,090 --> 00:45:38,200 Ievērojiet, ka šeit mēs izlaidis vairāk nekā šifrējot periodus, 614 00:45:38,200 --> 00:45:51,660 bet attiecībā uz mūsu nostāju par ohai, nākamais mēs izmantojām o. 615 00:45:51,660 --> 00:45:54,990 Šajā gadījumā tas ir mazliet grūtāk redzēt, jo tas ir 4, 616 00:45:54,990 --> 00:45:57,710 tāpēc pieņemsim turpināt mazliet. Tikai stick ar mani šeit. 617 00:45:57,710 --> 00:46:02,960 Tad mums ir I un S, kas pēc tam tiek tulkots ar o un h attiecīgi. 618 00:46:02,960 --> 00:46:09,370 Tad mums ir telpa, un tā tad mēs zinām, ka mēs negatavojamies šifrēt telpas. 619 00:46:09,370 --> 00:46:18,930 Bet paziņojums, ka tā vietā, lai dodas uz šo vietas tieši šeit, 620 00:46:18,930 --> 00:46:28,330 mēs šifrējot ar - es nezinu, ja jūs varat redzēt, ka - tieši šeit. 621 00:46:28,330 --> 00:46:33,710 Tātad tas nav kā jūs faktiski normēts, teiksim, o iet šeit, st iet šeit, 622 00:46:33,710 --> 00:46:39,200 iet šeit, es iet šeit, o, h,, i, o, h,, i. Jums nav darīt. 623 00:46:39,200 --> 00:46:43,760 Jums tikai novirzīt savu pozīciju atslēgvārdu 624 00:46:43,760 --> 00:46:51,020 ja jūs zināt, ka jūs faktiski būs šifrējot faktisko vēstuli. 625 00:46:51,020 --> 00:46:53,920 Vai šāda veida jēga? 626 00:46:53,920 --> 00:46:55,800 Labi. 627 00:46:56,490 --> 00:46:58,500 Tāpēc tikai daži atgādinājumi. 628 00:46:58,500 --> 00:47:03,760 Jūs vēlaties pārliecināties, ka jūs tikai iepriekš uz nākamo vēstuli atslēgvārda 629 00:47:03,760 --> 00:47:06,390 ja jūsu teksta, raksturs ir burts. 630 00:47:06,390 --> 00:47:09,120 Tā teikt, mēs esam pie o. 631 00:47:09,120 --> 00:47:19,310 Mēs pamanām, ka nākamais raksturs, i indekss teksta, ir skaitlis, piemēram. 632 00:47:19,310 --> 00:47:31,630 Tad mums nav virzīt J, indekss mūsu atslēgvārdu, līdz mēs sasniegtu vēl vienu vēstuli. 633 00:47:31,630 --> 00:47:36,230 Atkal, jūs arī vēlaties, lai pārliecinātos, ka jūs wraparound uz sākuma atslēgvārda 634 00:47:36,230 --> 00:47:37,770 kad tu esi beigās tā. 635 00:47:37,770 --> 00:47:42,030 Ja jūs redzat šeit mēs esam pie i, blakus vienam ir jābūt o. 636 00:47:42,030 --> 00:47:47,690 Tātad jūs vēlaties, lai atrastu kādu veidu, kas spēj wraparound uz sākuma atslēgvārda 637 00:47:47,690 --> 00:47:49,470 Katru reizi, kad beigs. 638 00:47:49,470 --> 00:47:55,040 Un tā atkal, kāda veida operatora ir noderīga šajā gadījumā par ietīšana ap? 639 00:47:56,630 --> 00:47:59,840 Tāpat skaitīšanai off piemērs. 640 00:47:59,840 --> 00:48:03,710 [Students] procentu zīme. >> Jā, procentu zīme, kas ir pēc moduļa. 641 00:48:03,710 --> 00:48:11,250 Tātad modulo noderēs šeit, ja jūs vēlaties, lai wrap pār indeksu savā ohai. 642 00:48:11,250 --> 00:48:17,700 Un tikai ātrs mājienu: Mēģiniet domāt par ietīšanas pār atslēgvārdu mazliet kā skaitīšanas off, 643 00:48:17,700 --> 00:48:23,590 kur, ja tur ir 3 grupas, 4 personām, 644 00:48:23,590 --> 00:48:30,610 To skaits, kas viņi teica bija 4 mod 3, kas bija 1. 645 00:48:30,610 --> 00:48:32,880 Tātad mēģiniet un domāt par to, ka veidā. 646 00:48:34,770 --> 00:48:42,740 Kā redzējāt formulā, kur jums ir CI un tad pi bet tad kJ, 647 00:48:42,740 --> 00:48:44,700 Jūs vēlaties pārliecināties, ka jums sekot līdzi tiem. 648 00:48:44,700 --> 00:48:47,580 Jums nav nepieciešams, lai izsauktu tā i, jums nav nepieciešams, lai izsauktu to j, 649 00:48:47,580 --> 00:48:53,270 bet jūs vēlaties, lai pārliecinātos, ka jums sekot līdzi nostāju, ka jūs esat pie jūsu teksta, 650 00:48:53,270 --> 00:48:55,790 kā arī nostāju, ka jūs esat pie jūsu atslēgvārdu 651 00:48:55,790 --> 00:48:59,840 jo tie ne vienmēr būs tāds pats. 652 00:48:59,840 --> 00:49:06,400 Ne tikai atslēgvārdu - tas varētu būt pilnīgi atšķirīga garuma nekā jūsu teksta. 653 00:49:06,400 --> 00:49:09,140 Arī jūsu teksta, ir skaitļi un zīmes, 654 00:49:09,140 --> 00:49:14,450 tāpēc tas nav gatavojas pilnīgi atbilstu up kopā. Jā. 655 00:49:14,450 --> 00:49:19,280 [Students] Vai ir funkcija, lai mainītu lietu? 656 00:49:19,280 --> 00:49:24,530 Vai jūs varat nomainīt pret kapitālu A? >> Jā, tur noteikti ir. 657 00:49:24,530 --> 00:49:27,890 Jūs varat pārbaudīt - Es uzskatu, ka tas toupper, visi 1 vārdu. 658 00:49:30,650 --> 00:49:36,310 Bet, kad jūs mēģināt šifrēt lietas un saglabāt tekstu, 659 00:49:36,310 --> 00:49:39,350 tas ir labākais būtībā ir atsevišķas lietas. 660 00:49:39,350 --> 00:49:42,040 Ja tas ir lielais, tad jūs vēlaties, lai novirzīt par šo 661 00:49:42,040 --> 00:49:46,460 jo savā formulā, ja paskatās atpakaļ, kā mums ir sava veida piegājienā 662 00:49:46,460 --> 00:49:50,900 pamīšus starp ASCII veidā pārstāv skaitļus 663 00:49:50,900 --> 00:49:55,020 un faktisko alfabētisko rādītāju, mēs vēlamies, lai pārliecinātos 664 00:49:55,020 --> 00:50:01,850 tur būs sava veida modelis, kas jūs gatavojas izmantot. 665 00:50:01,850 --> 00:50:04,580 Vēl viena piezīme par modeli, faktiski. 666 00:50:04,580 --> 00:50:07,250 Jūs gatavojas noteikti būs darīšana ar skaitļiem. 667 00:50:07,250 --> 00:50:11,280 Centieties nelietot burvju numurus, kas ir piemērs stilu. 668 00:50:11,280 --> 00:50:18,470 Tā teikt jūs vēlaties, lai katru reizi maiņu kaut ko patīk - 669 00:50:18,470 --> 00:50:22,400 Labi, tā mājienu, cits spoileris ir, kad jūs esat būs novirzot kaut 670 00:50:22,400 --> 00:50:26,310 par noteiktu summu, mēģiniet nevis lai pārstāvētu ka ar faktisko skaitu 671 00:50:26,310 --> 00:50:32,810 bet drīzāk mēģināt un redzēt, ja jūs varat izmantot ASCII vērtību, kas būs sava veida lielāka jēga. 672 00:50:32,810 --> 00:50:35,470 Vēl viena piezīme: Tā kā mums ir darīšana ar formulām, 673 00:50:35,470 --> 00:50:41,200 pat ja jūsu TF būs sava veida zināt, ko modelis jums varētu būt, izmantojot, 674 00:50:41,200 --> 00:50:44,430 vislabāk uz jūsu komentāriem veida izskaidrot loģiku, tāpat, 675 00:50:44,430 --> 00:50:51,880 "Es esmu, izmantojot šo modeli, jo ..." un veida izskaidrot modelis kodolīgi jūsu komentārus. 676 00:50:54,090 --> 00:50:58,990 [Tas bija Walkthrough 2] Ja nav kādi citi jautājumi, tad es ņemšu tikai palikt šeit mazliet. 677 00:50:58,990 --> 00:51:04,370 Good luck ar savu PSET 2: Kripto un paldies par ierašanos. 678 00:51:06,070 --> 00:51:08,620 [Students] Paldies. >> Paldies. 679 00:51:09,220 --> 00:51:10,800 [Media Offline intro]