1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Walkthrough - Problemo Serio 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Universitato Harvard] 3 00:00:05,170 --> 00:00:07,490 [Jen CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Bone. Saluton, ĉiuj, kaj bonvenon al Walkthrough 2. 5 00:00:10,750 --> 00:00:14,330 Unue, mi volas gratuli vin pro finante pset 1. 6 00:00:14,330 --> 00:00:18,140 Mi scias, ke ĝi povus esti iom malfacila por iuj de vi, 7 00:00:18,140 --> 00:00:20,460 povus esti via unua komputila programo kiun vi skribis, 8 00:00:20,460 --> 00:00:24,500 sed gxuste memoras, ke je la fino de tio, kiam vi retrorigardas al la fino de la semestro, 9 00:00:24,500 --> 00:00:29,820 vi rigardas pset 1 kaj vi diros: "Hej, mi povus esti farita, ke en 5 minutoj." 10 00:00:29,820 --> 00:00:35,700 Do konas kaj fidas ke en la fino de ĉi vi certe trovos pset 1 sufiĉe simpla. 11 00:00:35,700 --> 00:00:40,640 Sed por nun estas grandega realigo, kaj gratuloj por getting farita. 12 00:00:40,640 --> 00:00:44,010 Nun, ankaŭ rapida noto antaŭ ol ni eniri la karnon de la walkthrough. 13 00:00:44,010 --> 00:00:48,340 Mi nur volas fari rapidan noto, kiun mi kelkfoje ne havas sufiĉe da tempo 14 00:00:48,340 --> 00:00:52,500 dum la walkthroughs iri tra ĉiu unuopa maniero fari la problemo aro 15 00:00:52,500 --> 00:00:56,140 kaj iom ĵus eble enfokusigi la 1 aŭ 2 speco de realigoj, 16 00:00:56,140 --> 00:00:57,750 manieroj, ke vi povus fari tion. 17 00:00:57,750 --> 00:01:01,970 Sed tio ne estas diri, ke vi malpermesis fari ĝin alian vojon. 18 00:01:01,970 --> 00:01:05,980 Estas ofte, kiel kun komputiko, multnombraj manieroj de fari aferojn, 19 00:01:05,980 --> 00:01:12,190 kaj tiel definitive bonvolu uzi malsaman tipon de solvo ol mi povus esti prezentita. 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. Al Sekcio de Demandoj - 1. Cezaro - 2. Vigenère] 22 00:01:17,160 --> 00:01:20,650 Bone. Do problemo starigis 2: Crypto estas amuza unu. 23 00:01:20,650 --> 00:01:24,500 Denove, kun ĉiu pset vi komencos kun sekcio de demandoj 24 00:01:24,500 --> 00:01:29,600 ke tuj oni kondutu en via sekcioj kun via atribuita instruado ulo. 25 00:01:29,600 --> 00:01:31,670 Ni ne tuj iros tra tiuj super la walkthrough, 26 00:01:31,670 --> 00:01:35,100 sed certe helpos vin kompletigi la pset. 27 00:01:35,100 --> 00:01:38,100 Do la unua parto de la problemo aro estas Cezaro. 28 00:01:38,100 --> 00:01:43,470 Kaj tiel en Cezaro iu preterpasos vin ŝlosilon kun entjero, 29 00:01:43,470 --> 00:01:48,420 kaj vi ĉifri ĉenon de teksto kiu havigas al vi 30 00:01:48,420 --> 00:01:50,670 kaj donu ilin ĉifrita afero. 31 00:01:50,670 --> 00:01:56,050 Se iu rigardis A Christmas Story, estas ekzemplo de tiu tie. 32 00:01:56,050 --> 00:01:59,090 Tiam la dua parto de la problemo aro estas Vigenère, 33 00:01:59,090 --> 00:02:01,790 kiu estas pli progresintaj ĉifrado tekniko. 34 00:02:01,790 --> 00:02:05,640 Kaj tial ni tuj encipher pecon de teksto, 35 00:02:05,640 --> 00:02:09,600 krom anstataŭ kun nur unu entjero, ni fakte tuj kodi ĝi 36 00:02:09,600 --> 00:02:13,340 kun ŝlosilvorto ke la uzanto havigos al ni. 37 00:02:16,270 --> 00:02:22,090 Konsentite, do la unua ilo en la skatolo hodiaŭ fakte tuj estos ĝisdatigi la aparaton. 38 00:02:22,090 --> 00:02:26,430 En la diskutejo oni vidus tion kiel, "Kial ne ĉi laboro?" 39 00:02:26,430 --> 00:02:28,110 "Kial ne Submetu 50 laboron?" 40 00:02:28,110 --> 00:02:31,830 kaj ofte la solvo estas fakte nur por ĝisdatigi vian aparaton. 41 00:02:31,830 --> 00:02:36,730 Kaj do se vi simple kuras en terminalo fenestro en via aparaton ŝvitas yum-y - 42 00:02:36,730 --> 00:02:40,040 tio estas flago dirante jes, ĝisdatigi ĉio - ĝisdatigo, 43 00:02:40,040 --> 00:02:42,280 tiam via aparaton ĝisdatigos se bezono esti. 44 00:02:42,280 --> 00:02:46,960 Kaj ne vundi se vi jam estas en la plej freŝa versio de la aparaton. 45 00:02:46,960 --> 00:02:51,280 Tiam estos ĝuste diri ne novajn ĝisdatigojn disponeblaj kaj vi povos daŭre labori kune. 46 00:02:51,280 --> 00:02:55,800 Sed ĉi tiu estas bona por ekzekuti eĉ ĉiufoje, ke vi malfermu la aparaton 47 00:02:55,800 --> 00:02:57,140 ĉar ni estas ankoraŭ tre multe - 48 00:02:57,140 --> 00:03:00,320 kelkfoje, se ni eniros en cimon - fiksi ĝin en la aparaton. 49 00:03:00,320 --> 00:03:03,180 Do certigi ke vi havas la plej freŝa versio de la aparaton 50 00:03:03,180 --> 00:03:07,710 kaj kuri ke ĝisdatigi tie. 51 00:03:07,710 --> 00:03:14,360 Bone. Do ekde ni pritraktas literoj kaj ŝanĝante, enciphering aferojn, 52 00:03:14,360 --> 00:03:20,410 ni iras al vere volas fariĝi pli bona amikino nia ASCII abako. 53 00:03:20,410 --> 00:03:24,350 Ekzistas multnombraj linio, se vi trovos. Eble eĉ vian propran. 54 00:03:24,350 --> 00:03:29,950 Esence, kun ĉiu litero kaj ĉiu nombro kaj ĉiu karaktero 55 00:03:29,950 --> 00:03:32,210 estas nombro asociita kun ili, 56 00:03:32,210 --> 00:03:38,670 kaj tiel ĝi estas bonaj por vidi lian ASCII valoroj apud la reala litero. 57 00:03:38,670 --> 00:03:42,310 Kiu definitive helpi vin en la problemo aro. 58 00:03:42,310 --> 00:03:45,750 Unu afero kiu vere helpis min en ĉi tiu problemo aro estis vere presi ĝin, 59 00:03:45,750 --> 00:03:48,380 kaj kiel mi trairis, mi vere desegni sur ĝi, 60 00:03:48,380 --> 00:03:51,150 skribi, "Se tiu devas iri al tie, tiam ..." 61 00:03:51,150 --> 00:03:55,270 Speco de utiligi ĝin kaj marki ĝin, fariĝis bonaj amikoj kun via ASCII tablo. 62 00:03:57,240 --> 00:04:00,750 Tiam ni havas kelkajn aliajn ilojn je nia dispono. 63 00:04:00,750 --> 00:04:03,750 Ĉi-foje anstataŭ reale instigante la uzanto por ĉiuj iliaj enigo 64 00:04:03,750 --> 00:04:05,230 ni tuj faros kombinaĵo. 65 00:04:05,230 --> 00:04:06,880 Ni tuj instigas ilin por iu eniro, 66 00:04:06,880 --> 00:04:11,350 sed ni ankaŭ tuj ĝuste uzi la komandlinio argumentoj. 67 00:04:11,350 --> 00:04:15,600 Do kiam ili kuras lia programo, kutime vi diras. / Saluton, ekzemple, 68 00:04:15,600 --> 00:04:17,310 se via programo estis hello.c. 69 00:04:17,310 --> 00:04:22,500 Sed ĉi tiun fojon anstataŭ nur diri, ke ili povas meti vortojn, argumentoj poste. 70 00:04:22,500 --> 00:04:27,210 Kaj tial ni tuj uzi ajn pasas en al ni kiel ilia eniro tiel, 71 00:04:27,210 --> 00:04:31,720 tiel movante tie apenaŭ instigante por entjero sed ankaŭ uzante komandlinio argumentoj. 72 00:04:31,720 --> 00:04:36,590 Kaj poste ni iros en tabeloj kaj ŝnuro, kiun ni estos uzi multon ankaŭ. 73 00:04:41,460 --> 00:04:44,810 Jen ĝuste ekzemplo de 1 mini ASCII abako. 74 00:04:44,810 --> 00:04:48,460 Kiel mi diris, ĉiu litero korespondas al nombro, 75 00:04:48,460 --> 00:04:52,510 kaj tiel familiarizar vin kun tio. Ĝi venos en oportuna. 76 00:04:52,510 --> 00:04:55,610 Kaj poste kiam ni komencos fari iujn ASCIIMath pritraktanta la nombroj - 77 00:04:55,610 --> 00:05:00,110 aldono, subtrahanta ilin - tiam definitive bona por raporti al ĉi grafikaĵo. 78 00:05:02,860 --> 00:05:06,920 Do jen unu ekzemplo de Cezaro kodita - iu kiu eble vi ludis kun. 79 00:05:06,920 --> 00:05:11,190 Ĝi estas nur rado. Esence, ekzistas ekstera alfabeto kaj tiam tie estas ena alfabeto. 80 00:05:11,190 --> 00:05:15,290 Do ĉi tie estas ekzemplo de Cezaro kodita sed kun ŝlosilo de 0. 81 00:05:15,290 --> 00:05:21,540 Esence, A estas vicigitaj kun A, B estas vicigita kun B, la tuta vojo ĝis Z. 82 00:05:21,540 --> 00:05:26,590 Sed tiam diras, ke ni volis ŝlosilon de 3, ekzemple. 83 00:05:26,590 --> 00:05:33,280 Tiam ni devus turni la internan rado tiel ke A nun vicigas kun D, ​​ktp 84 00:05:33,280 --> 00:05:35,250 Kaj tiel tio estas esence kion ni faros. 85 00:05:35,250 --> 00:05:38,340 Ni ne havas rado, sed tio, kion ni faros estas fari nian programon 86 00:05:38,340 --> 00:05:44,490 speco de ŝanĝi la alfabeton kune kun ni certa kvanto de ciferoj. 87 00:05:44,490 --> 00:05:48,650 Do kiel mi diris antaŭe, ni tuj estos pritraktas komandlinio argumentoj 88 00:05:48,650 --> 00:05:50,390 tiel kiel atingi entjero. 89 00:05:50,390 --> 00:05:55,050 Do la maniero ke uzanto kuros vian Cezaro programo estas dirante. / Cezaro 90 00:05:55,050 --> 00:05:58,090 kaj tiam eniri numeron post tio. 91 00:05:58,090 --> 00:06:01,130 Kaj tiu cifero reprezentas la ŝlosilon, la sxangxigxo, 92 00:06:01,130 --> 00:06:06,740 kiom da fojoj vi tuj estos turnanta la interna rado de via Cezaro ĉifro. 93 00:06:06,740 --> 00:06:08,390 Kaj tial vi vidas tie ekzemplo. 94 00:06:08,390 --> 00:06:14,550 Se ni eniris la literoj de A al L en nia Cezaro kodita, 95 00:06:14,550 --> 00:06:19,520 tiam estus enigo D tra O ĉar tio estas ĉiu litero moviĝis super 3 fojojn, 96 00:06:19,520 --> 00:06:22,080 same kiel la ekzemplo de la rado kiu mi montris al vi. 97 00:06:22,080 --> 00:06:25,300 Se do vi tajpis, ekzemple, tiu estas CS50! 98 00:06:25,300 --> 00:06:27,960 tiam estus ankaŭ movi ĉiujn de la literoj. 99 00:06:27,960 --> 00:06:31,040 Kaj tio estas grava afero en ambaŭ Cezaro kaj Vigenère 100 00:06:31,040 --> 00:06:34,890 estas, ke ni tuj salti super ajna ne-literoj. 101 00:06:34,890 --> 00:06:39,160 Do neniu spacoj, gravuloj, ktp, nombroj, ni iras por subteni ilin same. 102 00:06:39,160 --> 00:06:42,920 Ni nur tuj ŝanĝi la literojn en ĉi tiu kazo. 103 00:06:42,920 --> 00:06:45,870 Do kiel vi vidas en la rado, ni nur havas la literojn disponebla por ni, 104 00:06:45,870 --> 00:06:50,150 do ni nur volas ŝanĝi la literojn kaj kodi la literojn. 105 00:06:51,370 --> 00:06:56,720 Do la unua afero por fari, vi vidis, ke la uzado por Cezaro en problemo starigis 2 106 00:06:56,720 --> 00:07:05,280 estas kuri Cezaro kaj tiam enmeti numeron kiam vi kuros en la terminalo. 107 00:07:05,280 --> 00:07:10,940 Do kion ni bezonas por fari estas iel atingi tiun ŝlosilon kaj konsenti ĝin. 108 00:07:10,940 --> 00:07:14,730 Kaj tial ni volas iel vidas tuj estos la dua komandlinio argumento. 109 00:07:14,730 --> 00:07:20,950 La unua estas tuj estos. / Cezaro, kaj la sekvan tiu tuj estos la ŝlosilo nombro. 110 00:07:22,190 --> 00:07:29,200 Do antaŭ ol ni havis int main (void) por komenci nian C programoj. 111 00:07:29,200 --> 00:07:31,790 Ni tuj senŝeligi reen mantelo iom 112 00:07:31,790 --> 00:07:34,720 kaj fakte vidas ke anstataŭ pasante en malplena al nia ĉefa funkcio 113 00:07:34,720 --> 00:07:37,920 ni vere kontraktanta kun 2 parametroj. 114 00:07:37,920 --> 00:07:44,070 Ni havas int nomata argc kaj poste arsenalo de kordoj nomis argv. 115 00:07:44,070 --> 00:07:46,030 Do argc estas entjero, 116 00:07:46,030 --> 00:07:49,640 kaj ĝi reprezentas la nombro de argumentoj pasis al via programo. 117 00:07:49,640 --> 00:07:53,590 Kaj tiam argv estas fakte la listo de la argumentoj pasis. 118 00:07:53,590 --> 00:08:00,820 Ĉiuj el la argumentoj estas ŝnuroj, kaj tiel argv reprezentas tabelo, listo, de kordoj. 119 00:08:01,830 --> 00:08:03,990 Ni parolos pri tabeloj iomete. 120 00:08:03,990 --> 00:08:05,940 Arrays estas esence nova datumstrukturo. 121 00:08:05,940 --> 00:08:09,660 Ni havas ints, ni duobligas, ni havas kordojn, kaj nun ni havas tabeloj. 122 00:08:09,660 --> 00:08:13,820 Arrays estas datumoj strukturoj kiuj povas teni multnombraj valoroj de la sama tipo, 123 00:08:13,820 --> 00:08:18,320 do esence, liston de kiom tipo vi volas. 124 00:08:18,320 --> 00:08:24,400 Esence, se vi volas listo de entjeroj ĉiuj en 1 variablo, 125 00:08:24,400 --> 00:08:29,090 tiam vi kreus novajn variablo kiu estis de tipo int tabelo. 126 00:08:29,090 --> 00:08:34,450 Do tabeloj estas nulo-indeksitaj, signifante ke la unua ero de la tabelo estas indekso 0. 127 00:08:34,450 --> 00:08:41,799 Se la tabelo estas de longo 4, kiel en ĉi tiu ekzemplo, tiam via lasta elemento estus en indekso 3, 128 00:08:41,799 --> 00:08:44,810 kio estas 4 - 1. 129 00:08:45,940 --> 00:08:48,420 Do por krei tabelo, vi farus ion kiel ĉi tio. 130 00:08:48,420 --> 00:08:51,440 Diru vi volis duoblan tabelo. 131 00:08:51,440 --> 00:08:56,520 Ĉi tio iras por ajna tipo de datumtipo, tamen. 132 00:08:56,520 --> 00:09:00,210 Do diru vi volas duoblan tabelo. Diru vi volas nomi ĝin leterkesto. 133 00:09:00,210 --> 00:09:04,760 Kiel vi devus pravalorizi ajna alia duobla, 134 00:09:04,760 --> 00:09:09,760 vi dirus duobla kaj tiam la nomo, sed ĉi-foje ni metas la rektaj krampoj, 135 00:09:09,760 --> 00:09:13,570 kaj tiam la nombro estos la longo de la tabelo. 136 00:09:13,570 --> 00:09:16,840 Notu ke en tabeloj ni ne povas eterne ŝanĝi la longecon, 137 00:09:16,840 --> 00:09:21,230 tial vi ĉiam devas difini kaj elekti kiom da skatoloj, 138 00:09:21,230 --> 00:09:25,440 kiom da valoroj vian tabelo tuj teni. 139 00:09:25,440 --> 00:09:31,820 Do meti malsamaj valoroj en via tabelo, vi tuj uzas tiun sekvan sintakson, 140 00:09:31,820 --> 00:09:33,200 kiel vi vidas sur la glito. 141 00:09:33,200 --> 00:09:37,620 Vi havas leterkesto indekso 0 estos metita al 1,2, 142 00:09:37,620 --> 00:09:42,180 leterkesto indekso 1 aro al 2,4, ktp 143 00:09:42,180 --> 00:09:47,910 Do nun ni jam reviziis arrays iom, ni reiru al argc kaj argv. 144 00:09:47,910 --> 00:09:52,220 Ni scias ke argv nun estas tabelo de kordoj. 145 00:09:52,220 --> 00:09:55,080 Do kiam uzanto pasas en - diras ili estas kurante programo - 146 00:09:55,080 --> 00:09:58,740 ili diras. / saluton David Malan, 147 00:09:58,740 --> 00:10:05,160 kion la programo faros por vi jam estas reale supreniru kun kio argc kaj argv estas. 148 00:10:05,160 --> 00:10:07,620 Do vi ne bezonas zorgi pri tio. 149 00:10:07,620 --> 00:10:14,370 Argc en ĉi tiu kazo estus 3 ĉar ĝi vidas 3 malsamaj vortoj disigitaj per spacoj. 150 00:10:14,370 --> 00:10:18,850 Kaj tiel tiam la tabelo en ĉi Ekzemple, la unua indico estus. / Saluton, 151 00:10:18,850 --> 00:10:21,770 la venonta unu Davido, la sekva Malan. 152 00:10:21,770 --> 00:10:25,640 Ĉu iu vidas tuj, kion la interrilato inter argv, 153 00:10:25,640 --> 00:10:28,990  la tabelo, kaj argc estas? 154 00:10:32,820 --> 00:10:38,090 Yeah. Ni ricevos en tiun en ekzemplo en args.c. 155 00:10:38,090 --> 00:10:42,880 Ni vidu se ni povas utiligi la interrilato inter la 2. 156 00:10:42,880 --> 00:10:46,550 Ĉi tie vi povus trovi ke en la aparaton la defaŭlta apliko 157 00:10:46,550 --> 00:10:49,450 por malfermi. c dosieroj estas kelkfoje Emakso. 158 00:10:49,450 --> 00:10:54,660 Sed ni volas trakti gedit, do kion vi povas fari estas vi povos dekstre alklaki vian C dosiero, 159 00:10:54,660 --> 00:11:04,580 iru al Ecoj: Malfermu Kun, kaj tiam elektu gedit, Set as default, 160 00:11:04,580 --> 00:11:13,020 kaj nun via programo devus malfermi en gedit anstataŭ Emakso. 161 00:11:14,710 --> 00:11:16,290 Perfekta. 162 00:11:17,120 --> 00:11:25,520 Do jen mi havas programon kiu mi volas presi ĉiu komandlinio argumento. 163 00:11:25,520 --> 00:11:32,050 Do kion la uzanto enigas, mi volas esence redoni ĝin al ili sur nova linio. 164 00:11:32,050 --> 00:11:36,710 Do kio estas strukturo kiu ni povas uzi ankaŭ persisti super io - 165 00:11:36,710 --> 00:11:40,380 iu kiu vi verŝajne uzas en via pset 1? 166 00:11:40,380 --> 00:11:45,840 Se vi volas iri tra starigis nombro de aĵoj? >> [Studento] Por buklo. 167 00:11:45,840 --> 00:11:48,910 Por buklo. Ekzakte. Do ni komencu kun la por buklo. 168 00:11:48,910 --> 00:11:56,900 Ni havas por int i = 0. Ni komencu per norma inicialización variablo. 169 00:11:56,900 --> 00:12:02,370 Mi foriros la kondiĉo por aro kaj poste diri i + +, faros tion tie. 170 00:12:02,370 --> 00:12:04,090 Bone. 171 00:12:04,090 --> 00:12:11,590 Do pensante reen al argv, se argv estas la listo de argumentoj pasis en la programo 172 00:12:11,590 --> 00:12:15,380 kaj argc estas la nombro de argumentoj en la programo, 173 00:12:15,380 --> 00:12:21,280 tiam tio signifas ke argc estas esence la longo de argv, dekstra, 174 00:12:21,280 --> 00:12:28,970 ĉar ne tuj estos kiel multaj argumentoj kiel la valoro de argc. 175 00:12:28,970 --> 00:12:35,910 Do, se ni volas persisti super ĉiu elemento en argv, 176 00:12:35,910 --> 00:12:43,290 nin tuj volas ĉiufoje aliri la variablo en argv ĉe la donita indekso. 177 00:12:43,290 --> 00:12:49,060 Tio povas esti prezentita kun ĉi tio, ĉu ne? 178 00:12:49,060 --> 00:12:53,430 Tiu variablo tie reprezentas la aparta cxeno en ĉi tiu petskribo 179 00:12:53,430 --> 00:12:57,030 ĉar ĝi estas ĉeno tabelo - la aparta cxeno en tiu donita indekso. 180 00:12:57,030 --> 00:13:00,690 Kion ni volas fari, en ĉi tiu kazo ni volas presi ĝin, do ni diru printf. 181 00:13:00,690 --> 00:13:04,680 Kaj nun argv estas cxeno, do ni volas meti tiun lokokupilo tie. 182 00:13:04,680 --> 00:13:08,430 Ni volas novan linion ĝuste por fari ĝin rigardi bona. 183 00:13:08,430 --> 00:13:12,530 Do jen ni havas por buklo. Ni ne havas la kondiĉon ankoraŭ. 184 00:13:12,530 --> 00:13:20,020 Do mi komencas en 0, kaj tiam ĉiu tempo tuj presi la donita linio 185 00:13:20,020 --> 00:13:22,980 en tiu aparta indekso en la tabelo. 186 00:13:22,980 --> 00:13:28,410 Do kiam ni volas halti presi el elementoj en la tabelo? 187 00:13:28,410 --> 00:13:35,720 Kiam ni finis, ĉu ne? Kiam ni atingis la finon de la tabelo. 188 00:13:35,720 --> 00:13:38,870 Do ni ne volas superi preter la longo de la tabelo, 189 00:13:38,870 --> 00:13:43,700 kaj ni jam scias ke ni ne bezonas efektive aktive eltrovi la longo de argv estas 190 00:13:43,700 --> 00:13:47,520 ĉar ĝi estas donita al ni, kaj kio estas tio? Argc. Ekzakte. 191 00:13:47,520 --> 00:13:56,640 Do ni volas fari ĉi procezo argc plurfoje. 192 00:13:56,640 --> 00:13:59,550 Mi ne estas en la dekstra dosierujo. 193 00:14:02,100 --> 00:14:03,490 Bone. 194 00:14:03,490 --> 00:14:08,990 Nun ni faru argumentojn. Neniu eraroj, kiuj estas granda. 195 00:14:08,990 --> 00:14:11,430 Do ni ĵus kuras argumentojn. 196 00:14:11,430 --> 00:14:15,130 Kio estas ĉi tuj revenos al ni? Ĝi simple tuj presi ĝin. 197 00:14:15,130 --> 00:14:18,320 "Vi inputted argumentojn en la programo; Mi tuj donos ĝin al vi." 198 00:14:18,320 --> 00:14:23,170 Do ke ​​ni volas diri argumentojn tiam foo trinkejo. 199 00:14:23,170 --> 00:14:26,570 Tial do tio presas ĝin reen al ni. Bone? 200 00:14:26,570 --> 00:14:30,790 Do tie estas ekzemplo de kiel vi povas uzi argc kaj argv 201 00:14:30,790 --> 00:14:33,460 sciante, ke argc reprezentas la longo de argv. 202 00:14:33,460 --> 00:14:42,750 Certiĝu, ke vi ne iam kun tabeloj aliro unu preter la longo de la tabelo 203 00:14:42,750 --> 00:14:45,140 ĉar C definitive krii ĉe vi. 204 00:14:45,140 --> 00:14:47,560 Vi ricevos ion nomata segmentación kulpo, 205 00:14:47,560 --> 00:14:52,470 kiu estas neniam amuza, esence dirante vi provas atingi ion 206 00:14:52,470 --> 00:14:55,000 ke ne ekzistas, ne apartenas al vi. 207 00:14:55,000 --> 00:14:59,430 Do certigu, kaj precipe kun la nulo-indeksado, ni ne volas - 208 00:14:59,430 --> 00:15:02,390 Kiel ekzemple, se ni havas aron de longo 4, 209 00:15:02,390 --> 00:15:07,240 ke tabelo indekso 4 ne ekzistas ĉar ni starti je 0, je nulo indekso. 210 00:15:07,240 --> 00:15:11,730 Ĝi fariĝos dua naturo samkiel por maŝojn kiam ni komencos je 0. 211 00:15:11,730 --> 00:15:13,610 Do simple observu, ke en la menso. 212 00:15:13,610 --> 00:15:22,590 Vi ne volas iam aliri la indekso de tabelo tio preter via atingo. 213 00:15:26,710 --> 00:15:32,560 Do ni povas nun vidas, kiom ni povas ia aliro 214 00:15:32,560 --> 00:15:35,930 la komandlinio argumentoj kiuj pasis in 215 00:15:35,930 --> 00:15:41,330 Sed kiel vi vidis la cxeno, argv estas fakte string tabelo. 216 00:15:41,330 --> 00:15:45,740 Do fakte ne estas entjero ankoraŭ, sed en Cezaro ni volas trakti entjeroj. 217 00:15:45,740 --> 00:15:54,430 Bonŝance, estas funkcio kreis por ni kiu povas vere konverti ŝnuro al entjero. 218 00:15:54,430 --> 00:15:58,710 Ankaŭ en ĉi tie ni ne pritraktas uzanto enigo kie ni instigante ilin 219 00:15:58,710 --> 00:16:03,740 por enigo tie por la ŝlosilo, do ni ne povas vere reprompt kaj diru: 220 00:16:03,740 --> 00:16:07,840 "Ho, donu al mi alian entjero, diru, se ĝi ne estas valida." 221 00:16:07,840 --> 00:16:10,540 Sed ni ankoraŭ bezonas kontroli por ĝusta uzado. 222 00:16:10,540 --> 00:16:13,520 En Cezaro ili nur rajtas pasi en 1 numeron, 223 00:16:13,520 --> 00:16:18,030 kaj tial ili devas kuri. / Cezaro kaj tiam ili devas doni al vi kelkajn. 224 00:16:18,030 --> 00:16:23,660 Do argc devas esti certa nombro. 225 00:16:23,660 --> 00:16:29,060 Kio nombro devus esti ke se ili devas pasi vi la. / Cezaro kaj tiam ŝlosila? 226 00:16:29,060 --> 00:16:32,920 Kio estas argc? >> [Studento] 2. >> Du. Ekzakte. 227 00:16:32,920 --> 00:16:35,490 Do vi volas certigi ke argc estas 2. 228 00:16:35,490 --> 00:16:39,620 Alie vi esence rifuzas uzi la programon. 229 00:16:39,620 --> 00:16:43,040 En ĉefa ĝi estas funkcio kiu diras int main, 230 00:16:43,040 --> 00:16:47,360 tiel poste ni ĉiam en bona praktiko reveno 0 je la fino de sukcesa programo. 231 00:16:47,360 --> 00:16:50,840 Do, se, ekzemple, ili donos al vi 3 komandlinio argumentojn anstataŭ 2 232 00:16:50,840 --> 00:16:54,350 aŭ doni al vi 1, ekzemple, do kion vi faras estas vi volas kontroli por ke 233 00:16:54,350 --> 00:16:59,900 kaj tiam revenu 1 dirante, ne, mi ne povas procedi kun ĉi tiu programo. 234 00:16:59,900 --> 00:17:03,190 [Studento] Ne povas spaco en via teksto. >> Pardonu min? 235 00:17:03,190 --> 00:17:06,780 [Studento] Ne povas spaco en la teksto kiun vi provas ĉifri. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 En terminoj de la teksto kiu ni provas ĉifri, ke reale venas poste 238 00:17:11,280 --> 00:17:13,970 kiam oni donas la tradukenda teksto. 239 00:17:13,970 --> 00:17:18,260 Do ĝuste nun ni estas nur akcepti kiel komando argumentoj la reala nombro, 240 00:17:18,260 --> 00:17:21,579 la efektiva ŝanĝo por Cezaro kodita. 241 00:17:21,579 --> 00:17:27,569 [Studento] Kial vi bezonas 2 kiel kontraŭ nur 1 argc? Estas definitive 1 numeron. 242 00:17:27,569 --> 00:17:32,200 Ĝuste. La kialo kial ni bezonas 2 por argc anstataŭ 1 243 00:17:32,200 --> 00:17:36,260 estas ĉar, kiam vi kuris de programo kaj diru. / Cezaro aŭ. / saluton, 244 00:17:36,260 --> 00:17:38,280 ke fakte rakontas kiel komanda linio argumento. 245 00:17:38,280 --> 00:17:43,020 Tial ke jam okupas 1 kaj do tiam ni inputting 1 ekstra. 246 00:17:45,030 --> 00:17:49,440 Do vi inputting reale ĉenon en la komanda linio argumento. 247 00:17:49,440 --> 00:17:52,730 Kion vi volas fari, por Cezaro ni volas trakti entjero, 248 00:17:52,730 --> 00:17:57,180 tiel vi povas uzi tiun atoi funkcio. 249 00:17:57,180 --> 00:18:02,850 Kaj esence, vi pasas en ĉenon kaj poste revenos vin entjero 250 00:18:02,850 --> 00:18:06,070 se ĝi estas ebla al preni tiun ĉenon en entjero. 251 00:18:06,070 --> 00:18:10,960 Nun memoras kiam ni pritraktas printf aŭ GetString, aĵoj kiel tiu, 252 00:18:10,960 --> 00:18:13,390 ni inkluzivas la bibliotekoj kiuj estas specifaj al ni. 253 00:18:13,390 --> 00:18:19,450 Do komence ni starti kun hash etikedo normo I / O,. H, io simila. 254 00:18:19,450 --> 00:18:22,430 Nu, atoi ne ene de unu el tiuj bibliotekoj, 255 00:18:22,430 --> 00:18:26,600 do kion ni devas fari estas ni devas inkluzivi la dekstra biblioteko por tio. 256 00:18:26,600 --> 00:18:32,720 Do rememori reen al Walkthrough 1 kie mi diskutis la manlibro funkcio. 257 00:18:32,720 --> 00:18:37,110 Vi tajpas viro en via terminalo kaj poste sekvata de la nomo de funkcio. 258 00:18:37,110 --> 00:18:39,720 Kaj por ke ili alportu tuta listo de ĝia uzo, 259 00:18:39,720 --> 00:18:42,890 sed tiel ĝi alportu kio bibliotekon kiu apartenas al. 260 00:18:42,890 --> 00:18:47,000 Do mi lasos tion al vi uzi la manlibro funkcio kun atoi 261 00:18:47,000 --> 00:18:53,360 kaj eltrovi kiu biblioteko vi bezonas inkluzivi por povi uzi la atoi funkcio. 262 00:18:54,450 --> 00:18:57,670 Do ni havas la ŝlosilon kaj nun klopodas atingi la simpla teksto, 263 00:18:57,670 --> 00:19:01,820 kaj por ke fakte tuj estos uzanto enigo, kie vi instigas. 264 00:19:01,820 --> 00:19:05,540 Ni traktis GetInt kaj GetFloat, do en la sama stilo 265 00:19:05,540 --> 00:19:07,670 ni iras al pritraktas GetString. 266 00:19:07,670 --> 00:19:12,440 Sed en ĉi tiu kazo ni ne bezonas fari neniun do momento aŭ dum bukloj por kontroli. 267 00:19:12,440 --> 00:19:14,480 GetString definitive al ni kordoj, 268 00:19:14,480 --> 00:19:17,630 kaj ni tuj ĉifri ajn uzanto donas al ni. 269 00:19:17,630 --> 00:19:23,770 Do vi povas supozi, ke ĉiuj el tiuj uzanto inputted kordoj estas korekta. 270 00:19:23,770 --> 00:19:24,670 Granda. 271 00:19:24,670 --> 00:19:27,270 Tial iam vi havas la ŝlosilon kaj iam vi devas la teksto, 272 00:19:27,270 --> 00:19:31,660 nun kio restas estas vi devas encipher la kompletan tekston. 273 00:19:31,660 --> 00:19:36,530 Nur por rapide kovri super Lingo, la kompleta teksto estas kion la uzanto donas al vi, 274 00:19:36,530 --> 00:19:41,030 kaj la ĉifrita teksto estas kion vi revenos al ili. 275 00:19:42,450 --> 00:19:45,850 Do kordoj, por povi iri tra fakte letero de letero 276 00:19:45,850 --> 00:19:48,550 ĉar ni devas ŝanĝi ĉiun literon, 277 00:19:48,550 --> 00:19:51,390 ni komprenas ke kordoj, se ni ia ŝelo redonas la mantelo, 278 00:19:51,390 --> 00:19:54,130 ni vidas ke ili estas nur vere listo de signoj. 279 00:19:54,130 --> 00:19:55,930 Unu venas post la alia. 280 00:19:55,930 --> 00:20:01,690 Kaj tiel ni povas trakti ĉenojn kiel arrays ĉar ili estas tabeloj de signoj. 281 00:20:01,690 --> 00:20:05,640 Do diru ke vi havas ĉenon nomata teksto, 282 00:20:05,640 --> 00:20:09,400 kaj ene de tiu variablo teksto estas stokitaj Jen CS50. 283 00:20:09,400 --> 00:20:15,680 Tiam teksto ĉe indeksa 0 estus ĉefurbo T, indico 1 estus h, ktp 284 00:20:17,530 --> 00:20:23,970 Kaj tiam kun tabeloj, en la argc ekzemple en args.c, 285 00:20:23,970 --> 00:20:27,090 ni vidis, ke ni devis persisti super tabelo 286 00:20:27,090 --> 00:20:32,440 kaj tiel ni havis ankaŭ persisti de mi = 0 ĝis i estas malpli ol la longo. 287 00:20:32,440 --> 00:20:35,560 Do ni bezonas iun rimedon decidi kio la longo de nia linio estas 288 00:20:35,560 --> 00:20:37,090 se ni iras ankaŭ persisti super ĝi. 289 00:20:37,090 --> 00:20:42,300 Bonŝance denove, tie estas funkcio ekzistas por ni, kvankam poste en CS50 290 00:20:42,300 --> 00:20:45,860 vi certe povos apliki kaj fari viajn proprajn funkcio 291 00:20:45,860 --> 00:20:48,260 kiu povas kalkuli la longecon de ĉeno. 292 00:20:48,260 --> 00:20:52,120 Sed por nun ni tuj uzos ĉenon longo, do strlen. 293 00:20:52,120 --> 00:21:00,440 Vi pasas en cxeno, kaj tiam ĝi revenos al vi int kiu reprezentas la longo de via ĉeno. 294 00:21:00,440 --> 00:21:05,840 Ni rigardu ekzemplon de kiel ni eble povus persisti super ĉiu signo en ĉeno 295 00:21:05,840 --> 00:21:08,470 kaj faru ion kun tio. 296 00:21:08,470 --> 00:21:13,250 Kion ni volas fari estas persisti super ĉiu karaktero de la kordo, 297 00:21:13,250 --> 00:21:19,150 kaj kion ni volas fari estas ni presi reen ĉiu karaktero 1 de 1 298 00:21:19,150 --> 00:21:22,060 krom ni aldonu ion apud ĝi. 299 00:21:22,060 --> 00:21:27,020 Do ni komencu kun la por buklo. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Ni tuj lasi spacon por la kondiĉo. 301 00:21:32,700 --> 00:21:36,840 Ni volas persisti ĝis ni atingos la finon de la ŝnuro, ĉu ne? 302 00:21:36,840 --> 00:21:41,340 Tial kion funkcio donas al ni la longo de la kordo? 303 00:21:41,340 --> 00:21:43,160 [Inaudible studento respondon] 304 00:21:43,160 --> 00:21:46,420 Tio estas la longo de la komanda linio argumentoj. 305 00:21:46,420 --> 00:21:50,650 Sed por ĉeno ni volas uzi funkcio kiu donas al ni la longeco de la kordo. 306 00:21:50,650 --> 00:21:53,090 Do jen ĉeno longa. 307 00:21:53,090 --> 00:21:57,130 Kaj tiel do vi devas pasi en cxeno al ĝi. 308 00:21:57,130 --> 00:21:59,760 Ĝi bezonas scii kion string bezonas por kalkuli la longon de. 309 00:21:59,760 --> 00:22:03,160 Tial en tiu kazo ni pritraktas string s. 310 00:22:04,790 --> 00:22:05,860 Granda. 311 00:22:05,860 --> 00:22:10,770 Tial kion ni volas fari, ni printf. 312 00:22:10,770 --> 00:22:14,850 Nun, ni volas trakti signojn. Ni volas presi ĉiu individua karaktero. 313 00:22:14,850 --> 00:22:22,150 Kiam vi volas presi kaleŝego, vi uzus la lokokupilo kiel% f. 314 00:22:22,150 --> 00:22:24,580 Kun int vi uzus% d. 315 00:22:24,580 --> 00:22:30,890 Kaj tiel same, kun karaktero vi uzas% c diri Mi tuj iros presi gravulo 316 00:22:30,890 --> 00:22:34,570 ke tio stokita ene variablo. 317 00:22:34,570 --> 00:22:40,840 Do ni havas ĉi tio, kaj ni aldonas periodo kaj spaco al ĝi. 318 00:22:40,840 --> 00:22:45,430 Kiu karaktero estas ni uzas? 319 00:22:45,430 --> 00:22:49,780 Ni tuj estos uzante ajn karaktero ni ĉe de la kordo. 320 00:22:49,780 --> 00:22:52,890 Tial ni tuj uzos iun kun ĉeno, 321 00:22:52,890 --> 00:22:56,420 sed ni volas esti aliri la iu karaktero tie. 322 00:22:56,420 --> 00:23:02,740 Do se cxeno estas nur tabelo, do kiel ni aliro elementoj de tabeloj? 323 00:23:02,740 --> 00:23:06,480 Ni havas tiuj rektaj krampoj, kaj tiam ni metis la indekso en tie. 324 00:23:06,480 --> 00:23:11,820 Do ni havas rektaj krampoj. Nia indekso en ĉi tiu kazo ni povas simple uzi i. Ekzakte. 325 00:23:15,290 --> 00:23:22,370 Do jen ni dirante ni tuj estos presi karakteron sekvata de punkto kaj spaco, 326 00:23:22,370 --> 00:23:30,870 kaj ke karaktero tuj estos la th,-a litero en nia string s. 327 00:23:32,920 --> 00:23:39,330 Mi simple intencas savi. Okay. 328 00:23:42,510 --> 00:23:46,840 Nun mi iros kuri string longa. 329 00:23:46,840 --> 00:23:53,440 Do ni havis ĉenon nomita OMG, kaj nun ĝi estas emfazis eĉ pli. 330 00:23:53,440 --> 00:23:57,870 Simile, ni diras, ke ni vere volas ricevi ĉenon de la uzanto. 331 00:23:57,870 --> 00:23:59,580 Kiel povus ni faru tion? 332 00:23:59,580 --> 00:24:01,610 Antaŭe, kiamaniere ni ricevas int? 333 00:24:01,610 --> 00:24:08,040 Ni diris GetInt, ĉu ne? Sed ĉi tio ne estas int, do ni GetString. 334 00:24:11,780 --> 00:24:17,770 Ni faras string longa. Ĉi tie ni ne eniris specifa prompto. 335 00:24:17,770 --> 00:24:19,940 Do mi ne scias. 336 00:24:19,940 --> 00:24:23,820 Mi tuj metos mian nomon ĉi tie kaj tiel mi povas fari unu el tiuj aĵoj 337 00:24:23,820 --> 00:24:29,600 kie mi asigni vorto por ĉiu litero aŭ io kiel tio. Cool. 338 00:24:29,600 --> 00:24:31,900 Do jen ĉeno longa. 339 00:24:33,000 --> 00:24:34,640 Do ni estas al Cezaro. 340 00:24:34,640 --> 00:24:38,620 Ni havas kelkajn ilojn pri kiel ni persisti super ĉenon, 341 00:24:38,620 --> 00:24:41,250 kiel ni aliro ĉiu individuo elemento. 342 00:24:41,250 --> 00:24:44,720 Do nun ni povas reiri al la programo. 343 00:24:44,720 --> 00:24:48,650 Kiel mi menciis antaŭe, en la ASCII tablo, via plej bona amiko, 344 00:24:48,650 --> 00:24:52,300 vi tuj vidos la numeroj kiuj asocias kun ĉiu litero. 345 00:24:52,300 --> 00:24:55,900 Do jen diras nia teksto estas mi kapturna! 346 00:24:55,900 --> 00:25:01,090 Tiam ĉiu de tiuj gravuloj tuj havas numeron kaj ASCII valoro asociita kun ĝi, 347 00:25:01,090 --> 00:25:04,710 eĉ la apostrofo, eĉ la spaco, eĉ la ekkrio marko, 348 00:25:04,710 --> 00:25:06,600 tiel vi volas teni ke en menso. 349 00:25:06,600 --> 00:25:12,360 Do diru nia ŝlosilo kiu la uzanto inkludis en sia komandlinio argumento estas 6. 350 00:25:12,360 --> 00:25:17,770 Tio signifas por la unua litero, kiu estas mi, kiu estas prezentita per 73, 351 00:25:17,770 --> 00:25:25,610 vi volas reveni al ili kion ajn letero estas reprezentita de la ASCII valoro de 73 + 6. 352 00:25:25,610 --> 00:25:29,020 En ĉi tiu kazo, ke estus 79. 353 00:25:30,840 --> 00:25:35,040 Nun ni volas iri al la sekvanta signo. 354 00:25:35,040 --> 00:25:40,960 Do la proksimaj en indekso 1 de la teksto estus la apostrofo. 355 00:25:40,960 --> 00:25:46,780 Sed memoru ni nur volas encipher la literoj. 356 00:25:46,780 --> 00:25:50,040 Do ni volas certigi ke la apostrofo fakte restas la sama, 357 00:25:50,040 --> 00:25:54,310 ke ni ne ŝanĝas de 39 al kiom 45 estas. 358 00:25:54,310 --> 00:25:57,150 Ni volas konservi ĝin kiel apostrofo. 359 00:25:57,150 --> 00:26:00,780 Do ni volas memori nur encipher la literoj 360 00:26:00,780 --> 00:26:04,560 ĉar ni deziras, ke ĉiuj el la aliaj simboloj por resti senŝanĝe en nia programo. 361 00:26:04,560 --> 00:26:07,130 Alia afero kiun ni volas estas konservi majuskloj. 362 00:26:07,130 --> 00:26:10,250 Do kiam vi havas Cxeflitero, ĝi devus resti kiel majuskla. 363 00:26:10,250 --> 00:26:12,830 Lowercases devus resti kiel minuskla. 364 00:26:13,620 --> 00:26:19,480 Do iuj utilaj funkcioj por povi trakti nur enciphering literoj 365 00:26:19,480 --> 00:26:22,380 kaj observu konservi la majuskloj de aĵoj 366 00:26:22,380 --> 00:26:25,130 estas la isalpha, isupper, islower funkcioj. 367 00:26:25,130 --> 00:26:29,270 Kaj tiel ili estas funkcioj kiuj revenos al vi Bulea valoro. 368 00:26:29,270 --> 00:26:34,180 Esence, vera aŭ malvera. Is this an majuskla? Ĉu ĉi tiu alfanuméricos? 369 00:26:34,180 --> 00:26:37,180 Ĉu ĉi tiu letero, esence. 370 00:26:37,180 --> 00:26:41,070 Do jen estas 3 ekzemplojn de kiel vi uzas tiun funkcion. 371 00:26:41,070 --> 00:26:47,060 Esence, vi povus provi se la valoro revenis al vi per tiu funkcio estas vera aŭ malvera 372 00:26:47,060 --> 00:26:49,400 bazita en tiu enigo. 373 00:26:49,400 --> 00:26:54,880 Ĉu ne encipher iu aŭ kodita ĝin aŭ certigu ke ĝi estas majuskla, ktp 374 00:26:54,880 --> 00:27:01,080 [Studento] Ĉu vi povas simple klarigi tiujn iom pli kaj kiel vi uzas ilin? >> Jes, certe. 375 00:27:01,080 --> 00:27:08,470 Do, se ni retrorigardas, jen ni havas ĉefurbon mi, ĉu ne? 376 00:27:08,470 --> 00:27:14,550 Do ni scias, ke mi iras al ho ĉar mi + 6 estas O. 377 00:27:14,550 --> 00:27:18,740 Sed ni volas certigi, ke tiu O estas tuj estos ĉefurbo O. 378 00:27:18,740 --> 00:27:22,940 Do esence, ke estas ia tuj ŝanĝos nian eniron. 379 00:27:22,940 --> 00:27:26,870 Do ĉu ĝi estas majuskla aŭ ne volas specon de ŝanĝi la maniero ke ni trakti ĝin. 380 00:27:26,870 --> 00:27:32,360 Se do ni uzas la isupper funkcio sur tiu aparta indekso, 381 00:27:32,360 --> 00:27:36,480 tiel isupper ("mi"), kiu revenas por ni vera, do ni scias, ke ĝi estas supra. 382 00:27:36,480 --> 00:27:40,360 Tial bazita sur tio, ni poste iros en formulo 383 00:27:40,360 --> 00:27:42,750 ke vi estos uzanta ŝanĝi aĵojn en Cezaro, 384 00:27:42,750 --> 00:27:46,560 tiel do esence, ne tuj estos iomete malsaman formulon se estas majuskla 385 00:27:46,560 --> 00:27:50,670 kontraste al minuskla. Sencon? 386 00:27:51,020 --> 00:27:52,760 Yeah. No worries. 387 00:27:54,900 --> 00:27:58,990 Mi parolis iomete pri aldono 6 al letero, kiu ne sufiĉe sencon 388 00:27:58,990 --> 00:28:05,500 krom kiam ni ia kompreni, ke tiuj signoj 389 00:28:05,500 --> 00:28:08,920 estas ia interŝanĝeblaj kun entjeroj. 390 00:28:08,920 --> 00:28:11,250 Kion ni faras estas ni ia uzo implicita casting. 391 00:28:11,250 --> 00:28:18,100 Ni iru en jxetantajn iom poste kie vi prenas valoron kaj vi turnas ĝin en malsama tipo 392 00:28:18,100 --> 00:28:20,440 ol origine estis. 393 00:28:20,440 --> 00:28:25,910 Sed kun ĉi pset ni povos ia interŝanĝebla uzi signojn 394 00:28:25,910 --> 00:28:30,880 kaj lia responda entjero valoroj. 395 00:28:30,880 --> 00:28:35,140 Do, se vi simple encase karakteron kun nur la simpla citaĵoj, 396 00:28:35,140 --> 00:28:40,390 tiam vi povos labori kun ĝi kun entjeroj, traktante ĝin kiel entjero. 397 00:28:40,390 --> 00:28:48,040 Do la majuskla C rilatas al 67. Minuskla f rilatas al 102. 398 00:28:48,040 --> 00:28:51,480 Denove, se vi volas scii tiuj valoroj, rigardu vian ASCII tablo. 399 00:28:51,480 --> 00:28:56,160 Do ni iru en kelkaj ekzemploj de kiel vi eble povus subtrahi kaj aldoni, 400 00:28:56,160 --> 00:29:03,130 kiel vi povas fakte vere funkcias kun tiuj signoj, uzu ilin sendiference. 401 00:29:03,870 --> 00:29:11,350 Mi diras ke ASCIIMath tuj kalkuli la aldono de gravulo al entjero 402 00:29:11,350 --> 00:29:17,590 kaj poste montras la rezulta karakteron tiel kiel la rezulta ASCII valoro. 403 00:29:17,590 --> 00:29:22,290 Kaj tial mi tie estas diranta - we'll interkonsento kun tiu parto poste - 404 00:29:22,290 --> 00:29:29,100 sed esence, mi diras ke la uzanto devus diri kuri ASCIIMath kune kun ŝlosilo, 405 00:29:29,100 --> 00:29:30,880 kaj mi dirante ke tiu ŝlosilo tuj estos la nombro 406 00:29:30,880 --> 00:29:34,600 kun kiu ni tuj aldoni tiun karakteron. 407 00:29:34,600 --> 00:29:38,560 Do jen rimarki ke de mi postuli ŝlosilo, 408 00:29:38,560 --> 00:29:40,590 ekde mi postulante ke ili estas doni al mi 1 aferon, 409 00:29:40,590 --> 00:29:45,600 Mi nur volas akcepti. / Asciimath kaj ŝlosilo. 410 00:29:45,600 --> 00:29:49,330 Do mi tuj postulas ke argc estas egala al 2. 411 00:29:49,330 --> 00:29:54,360 Se ĝi ne estas, tiam mi tuj revenos 1 kaj la programo eliras. 412 00:29:55,070 --> 00:29:58,540 Do mi diras la ŝlosilo ne tuj estos la unua komandlinio argumento, 413 00:29:58,540 --> 00:30:05,080 ĝi tuj estos la dua, kaj kiel vi vidas tie, 414 00:30:05,080 --> 00:30:11,790 Mi iros por igi tiun en entjero. 415 00:30:15,740 --> 00:30:19,230 Tiam mi iros, por kontrauxmeti karaktero esti r. 416 00:30:19,230 --> 00:30:23,970 Rimarku ke la tipo de la variablo chr fakte entjero. 417 00:30:23,970 --> 00:30:30,480 La vojo, kiun mi plu povos uzi r kiel entjero estas per encasing ĝin per tiuj sola citaĵoj. 418 00:30:33,850 --> 00:30:40,560 Do apogi nian printf deklaro kie ni havas lokokupilo di karaktero 419 00:30:40,560 --> 00:30:43,590 kaj tiam lokokupilo por entjero, 420 00:30:43,590 --> 00:30:49,450 la karaktero estas reprezentita de la chr, kaj la entjero estas la ŝlosilo. 421 00:30:49,450 --> 00:30:54,320 Kaj tiel poste ni tuj en rezulto aldoni la 2 kune. 422 00:30:54,320 --> 00:30:58,420 Do ni tuj aldonu r + ajn la klavo estas, 423 00:30:58,420 --> 00:31:03,520 kaj poste ni iras al presi la rezulto de tio. 424 00:31:06,210 --> 00:31:14,220 Do ni faru asciimath. Ĝi dependas de dato, do ni ĵus kuras asciimath. 425 00:31:14,220 --> 00:31:18,290 Ho, sed vidi, tio ne faras nenion ĉar ni ne vere donas ŝlosilo. 426 00:31:18,290 --> 00:31:23,850 Do kiam ĵus revenis 1, nia ĉefa funkcio, ĝi ĵus revenis al ni. 427 00:31:23,850 --> 00:31:29,250 Tial ni pasas en ŝlosilon. Iu donu al mi numeron. >> [Studento] 4. 428 00:31:29,250 --> 00:31:30,920 4. Okay. 429 00:31:30,920 --> 00:31:39,280 Do r pliigis 4 tuj donos al ni v, kiu korespondas al la ASCII valoro de 118. 430 00:31:39,280 --> 00:31:43,880 Tial do tio ia makes sense ke - 431 00:31:43,880 --> 00:31:51,250 Fakte, mi povas demandi vin, kion vi opinias la ASCII valoro de r estas se r + 4 estas 118? 432 00:31:53,070 --> 00:31:55,470 Tiam jes, r estas 114. 433 00:31:55,470 --> 00:32:03,010 Do, se vi rigardos la ASCII tablo tiam, efektive, vi vidos ke r estas reprezentita de 114. 434 00:32:03,010 --> 00:32:08,610 Do nun ni scias ke ni povas aldoni entjeroj al signoj, ĉi tio ŝajnas sufiĉe simpla. 435 00:32:08,610 --> 00:32:12,740 Ni nur tuj persisti super ĉenon kiel ni vidis en ekzemplo antaŭe. 436 00:32:12,740 --> 00:32:17,170 Ni kontrolu se ĝi estas letero. 437 00:32:17,170 --> 00:32:20,420 Se jes, tiam ni ŝanĝi ĝin per nenial la ŝlosilo estas. 438 00:32:20,420 --> 00:32:23,650 Bela simpla, krom kiam vi atingos like this, 439 00:32:23,650 --> 00:32:32,140 vi vidas, ke z, reprezentita de 122, tiam donus al vi malsaman karakteron. 440 00:32:32,140 --> 00:32:37,770 Ni vere volas resti ene de nia alfabeto, ĉu ne? 441 00:32:37,770 --> 00:32:43,180 Do ni bezonas eltrovi iun formon de ia envolviendo ĉirkaŭe. 442 00:32:43,180 --> 00:32:47,190 Kiam vi atingas Zed kaj vi volas pliigi per certa nombro, 443 00:32:47,190 --> 00:32:51,230 vi ne volas iri en preter la ASCII alfabeto sekcio; 444 00:32:51,230 --> 00:32:54,140 vi volas kovri reen tuta vojo al A. 445 00:32:54,140 --> 00:32:58,550 Sed memoru ke vi ankoraŭ konservante la kazo. 446 00:32:58,550 --> 00:33:00,980 Do sciante ke literoj ne povas iĝi simboloj 447 00:33:00,980 --> 00:33:05,290 nur kiel simboloj ne tuj esti ŝanĝante tiel. 448 00:33:05,290 --> 00:33:08,170 En la lastaj pset vi certe ne bezonas, 449 00:33:08,170 --> 00:33:14,310 sed eblo estis por apliki vian avidaj pset uzante la modulon funkcio. 450 00:33:14,310 --> 00:33:17,230 Sed nun ni efektive tuj bezonos uzi modulo, 451 00:33:17,230 --> 00:33:19,900 do ni ĵus transiru ĉi iom. 452 00:33:19,900 --> 00:33:26,920 Esence, kiam vi havas x module y, kiu donas al vi la reston de x dividita per y. 453 00:33:26,920 --> 00:33:30,930 Jen kelkaj ekzemploj. Ni havas 27% 15. 454 00:33:30,930 --> 00:33:36,200 Esence, kiam vi subtrahi 15 el 27 tiom da fojoj kiel eble sen alveni negativa 455 00:33:36,200 --> 00:33:39,060 tiam vi havos 12 maldekstra super. 456 00:33:39,060 --> 00:33:44,650 Do jen speco de kiel en la matematika kunteksto, sed kiel ni povas efektive uzi tiun? 457 00:33:44,650 --> 00:33:47,100 Ĝi tuj estos utila por nia wrapover. 458 00:33:47,100 --> 00:33:55,420 Por tio, ni simple diri, ke mi petis vin ĉiujn, ke ili disdonu en 3 grupoj. 459 00:33:55,420 --> 00:33:58,010 Kelkfoje vi faras tion en grupoj kaj io simila. 460 00:33:58,010 --> 00:34:01,320 Say mi diris, "Bone, mi volas ke vi cxiuj esti dividita en 3." 461 00:34:01,320 --> 00:34:04,240 Kiel povus vi faros tion? 462 00:34:04,240 --> 00:34:06,810 [Inaudible studento respondon] Jes, ĝuste. Grafo malproksime. Okay. 463 00:34:06,810 --> 00:34:10,260 Ni efektive fari tion. Ĉu vi volas komenci? 464 00:34:10,260 --> 00:34:13,810 [Studentoj rakonti for] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Sed memoru ... >> [Studento] Ho, pardonu. 466 00:34:16,620 --> 00:34:18,730 Tio estas vere bona punkto. 467 00:34:18,730 --> 00:34:24,130 Vi diris 4, sed ni vere volas ke vi diru 1 ĉar ni nur volas 3 grupoj. 468 00:34:24,130 --> 00:34:30,159 Tial, kiel - Ne, tio estas vere bona ekzemplo ĉar tiam kiel eble vi diras 1? 469 00:34:30,159 --> 00:34:33,370 Kio estas la rilato inter 4 kaj 1? 470 00:34:33,370 --> 00:34:36,760 Nu, 4 mod 3 estas 1. 471 00:34:36,760 --> 00:34:41,460 Do se vi daŭrigos, vi estus 2. 472 00:34:41,460 --> 00:34:44,540 Do ni havas 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Denove, vi estas vere la 5a persono. Kiel vi scias diri 2 anstataŭ 5? 474 00:34:49,420 --> 00:34:53,760 Vi diras 5 mod 3 estas 2. 475 00:34:53,760 --> 00:34:59,100 Mi volas vidi, kiel multaj grupoj de 3 restas super, tiam kiu celo mi ankaux 476 00:34:59,100 --> 00:35:02,860 Kaj tiel do, se ni daŭre kune la tutan ĉambron, 477 00:35:02,860 --> 00:35:07,760 tiam ni vidus ke ni ĉiam reale aplikanta la mod funkcio al mem 478 00:35:07,760 --> 00:35:09,990 al ia kalkulu al. 479 00:35:09,990 --> 00:35:14,490 Tio estas pli ia palpebla ekzemplo de kiel vi eble uzu module 480 00:35:14,490 --> 00:35:17,960 ĉar mi certas plimulto de ni probable iris tra tiu procezo 481 00:35:17,960 --> 00:35:19,630 kie ni devis havi malproksime. 482 00:35:19,630 --> 00:35:21,840 Demandojn sur module? 483 00:35:21,840 --> 00:35:25,360 Estos bela grava por kompreni la konceptojn de ĉi tio, 484 00:35:25,360 --> 00:35:28,640 do mi volas certigi vin infanoj komprenas. 485 00:35:28,640 --> 00:35:34,660 [Studento] Se ne ekzistas resto, tio donas al vi la reala nombro? 486 00:35:34,660 --> 00:35:40,430 Se unu el la unuaj 3 el ili jam faris tion, ĉu doni al ili kion ili efektive estis, 487 00:35:40,430 --> 00:35:43,310 aŭ ĉu ili donis ilin [inaudible] >> Tio estas bona demando. 488 00:35:43,310 --> 00:35:48,750 Kiam ne estas resta por la module - tiel diras, ke vi havas 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 ke efektive donas vin 0. 490 00:35:53,670 --> 00:35:57,290 Ni parolos pri tio iom poste. 491 00:35:58,810 --> 00:36:07,720 Ho jes, ekzemple, la 3a persono - 3 _mod_ 3 estas vere 0 sed ŝi diris 3. 492 00:36:07,720 --> 00:36:14,900 Do jen speco de kiel ena catch, ekzemple, 493 00:36:14,900 --> 00:36:17,620 kiel bone, se la mod estas 0 tiam mi tuj estos la 3-a persono. 494 00:36:17,620 --> 00:36:22,740 Sed ni ricevos en speco de kiel ni volus trakti kio 0 estas posta. 495 00:36:22,740 --> 00:36:32,750 Do nun ni iel havas formon de surĵeto la Zed dekstre letero. 496 00:36:32,750 --> 00:36:34,920 Do nun ni trapasis tiujn ekzemplojn, 497 00:36:34,920 --> 00:36:37,880 ni ia vidi kiel Cezaro povus funkcii. 498 00:36:37,880 --> 00:36:42,640 Vi vidas la 2 alfabetoj kaj tiam vi vidos ilin movo. 499 00:36:42,640 --> 00:36:44,430 Do ni provu kaj esprimi, ke en terminoj de formulo. 500 00:36:44,430 --> 00:36:46,940 Ĉi tiu formulo estas reale donita al vi en la specifo, 501 00:36:46,940 --> 00:36:52,070 sed estu la speco de rigardo tra ĉiu variablo signifas. 502 00:36:52,070 --> 00:36:55,000 Nia fina rezulto estas tuj estos la ĉifrita teksto. 503 00:36:55,000 --> 00:36:58,300 Do tiu diras ke la th,-a karaktero de la ĉifrita teksto 504 00:36:58,300 --> 00:37:02,500 tuj respondas al la th,-a karaktero de la kompleta teksto. 505 00:37:02,500 --> 00:37:08,130 Tio havas sencon ĉar ni volas ĉiam esti vicatendis tion supren. 506 00:37:08,130 --> 00:37:13,480 Do ĝi estas tuj estos la th,-a karaktero de la ĉifrita teksto plus k, kiu estas nia ŝlosilo - 507 00:37:13,480 --> 00:37:17,230 kiu faras senson - kaj tiam ni havas ĉi mod 26. 508 00:37:17,230 --> 00:37:19,860 Memoru reen kiam ni havis la Zed 509 00:37:19,860 --> 00:37:24,190 ni ne volas eniri la karaktero, do ni volis mod ĝin 510 00:37:24,190 --> 00:37:26,540 kaj tipon de wrap ĉirkaŭ la alfabeto. 511 00:37:26,540 --> 00:37:33,430 Post Zed vi irus al a, b, c, d, ĝis vi alvenis al la rajto nombro. 512 00:37:33,430 --> 00:37:44,690 Do ni scias, ke Zed, se + 6, donus al ni f ĉar post Zed venas a, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Do ni memoros ni scias certe, ke Zed + 6 tuj donos al ni f. 514 00:37:52,530 --> 00:38:03,530 En ASCII valoroj, z estas 122 kaj f estas 102. 515 00:38:03,530 --> 00:38:10,570 Do ni devas trovi iun manieron de fari nian Cezaro formulon al ni 102 516 00:38:10,570 --> 00:38:13,590 post preni en 122. 517 00:38:13,590 --> 00:38:19,550 Do, se ni simple apliki tiun formulon, la ('z' + 6)% 26, kiu fakte donas 24 518 00:38:19,550 --> 00:38:25,980 ĉar 122 + 6 estas 128; 128% 26 donas 24 resto. 519 00:38:25,980 --> 00:38:29,140 Sed tio ne vere signifas f. Tio certe ne 102. 520 00:38:29,140 --> 00:38:33,590 Tio ankaŭ ne la 6a litero en la alfabeto. 521 00:38:33,590 --> 00:38:41,550 Do evidente, ni bezonas havi iun manieron de tweaking ĉi iom. 522 00:38:42,970 --> 00:38:51,340 En terminoj de la regula alfabeto, ni scias ke z estas la 26a letero kaj f estas la 6-a. 523 00:38:51,340 --> 00:38:55,460 Sed ni estas en komputiko, do ni tuj indekso je 0. 524 00:38:55,460 --> 00:39:00,690 Tial anstataŭ z estante la numero 26, oni tuj diras ke estas numero 25 525 00:39:00,690 --> 00:39:02,630 ĉar estas 0. 526 00:39:02,630 --> 00:39:04,770 Do nun ni apliku tiun formulon. 527 00:39:04,770 --> 00:39:11,710 Ni havas z reprezentita de 25 + 6, kiu donas al vi 31. 528 00:39:11,710 --> 00:39:15,790 Kaj 31 mod 26 donas 5 kiel restaĵo. 529 00:39:15,790 --> 00:39:20,500 Tio estas perfekta ĉar ni scias ke f estas la 5a litero en la alfabeto. 530 00:39:20,500 --> 00:39:26,400 Sed ankoraŭ ne estas f, right? Ĝi ankoraŭ ne estas 102. 531 00:39:26,400 --> 00:39:32,730 Tial por tiu ĉi pset, defio estos provi eltrovi la rilato 532 00:39:32,730 --> 00:39:36,910 inter konverto inter tiuj ASCII valoroj kaj la alfabeta indekso. 533 00:39:36,910 --> 00:39:40,280 Esence, kion vi volas fari, vi volas komenci evi la ASCII valoroj, 534 00:39:40,280 --> 00:39:45,390 sed tiam vi volas iel traduki tiu enen alfabeta indekso 535 00:39:45,390 --> 00:39:52,610 tiam kalkuli kio letero devus esti - esence, kion lia alfabeta indekso estas 536 00:39:52,610 --> 00:39:57,660 de la kodita karaktero - tiam traduki ke reen al la ASCII valoroj. 537 00:39:57,660 --> 00:40:04,870 Do se vi skurĝi vian ASCII tablo, provu kaj trovi rilatojn inter, ekzemple, 102 kaj 5 538 00:40:04,870 --> 00:40:10,440 aŭ la 122 kaj 25. 539 00:40:12,140 --> 00:40:15,690 Ni alvenas nia ŝlosilo de la komandlinio argumentoj, ni alvenas la kompleta teksto, 540 00:40:15,690 --> 00:40:17,520 ni enciphered ĝin. 541 00:40:17,520 --> 00:40:19,820 Kaj cxio ni forlasis fari estas presi ĝin. 542 00:40:19,820 --> 00:40:22,040 Ni povus fari ĉi paro de malsamaj manieroj. 543 00:40:22,040 --> 00:40:24,570 Kion ni povus fari estas vere presi kiel ni iru kune. 544 00:40:24,570 --> 00:40:28,250 Kiel ni persisti super la gravuloj de la kordoj, 545 00:40:28,250 --> 00:40:31,660 ni povus simple nur presi ĝuste tiam, kiam ni kalkuli ĝin. 546 00:40:31,660 --> 00:40:36,030 Alternative, vi povus ankaŭ konservas ĝin en tabelo kaj havas aron da karakteroj 547 00:40:36,030 --> 00:40:39,280 kaj fine persisti super tiu tuta tabelo kaj presi ĝin. 548 00:40:39,280 --> 00:40:40,980 Do vi havas kelkajn eblojn por tio. 549 00:40:40,980 --> 00:40:47,280 Kaj memoru ke% c tuj estos la lokokupilo por presi karakteron. 550 00:40:47,280 --> 00:40:50,420 Do ni havos Cezaro, kaj nun ni movi antaŭen al Vigenère, 551 00:40:50,420 --> 00:40:57,580 kio estas tre simila al Cezaro sed nur iomete pli kompleksa. 552 00:40:57,580 --> 00:41:03,310 Do esence kun Vigenère estas vi tuj estos pasante en ŝlosilvorto. 553 00:41:03,310 --> 00:41:06,510 Do anstataŭ numero, vi tuj havas ĉenon, 554 00:41:06,510 --> 00:41:09,200 kaj por ke tuj agi kiel via ŝlosilvorto. 555 00:41:09,200 --> 00:41:14,440 Tiam, kiel kutime, vi tuj ricevas prompto por kordoj de la uzanto 556 00:41:14,440 --> 00:41:19,050 kaj tiam encipher ĝin kaj tiam donu al ili la ĉifrita teksto dorso. 557 00:41:19,050 --> 00:41:24,650 Do kiel mi diris, estas tre simila al Cezaro, krom anstataŭ movo de iu numero, 558 00:41:24,650 --> 00:41:30,620 la nombro estas vere tuj ŝanĝos ĉiufoje el karaktero al karaktero. 559 00:41:30,620 --> 00:41:34,890 Por reprezenti ke reala nombro ŝanĝi, ĝi estas reprezentita de la klavaro literoj. 560 00:41:34,890 --> 00:41:43,150 Do, se vi eniros en ŝanĝo de, ekzemple, tiam tiu respondus al ŝanĝo de 0. 561 00:41:43,150 --> 00:41:45,900 Do ĝi estas denove reen al la alfabeta indekso. 562 00:41:45,900 --> 00:41:49,100 Kio povus esti utila se vi vidas ke ni vere pritraktas ASCII valoroj 563 00:41:49,100 --> 00:41:51,790 tiel kiel la literoj, tiel kiel la alfabeta indekso, 564 00:41:51,790 --> 00:41:58,020 eble trovi aŭ fari vian propran ASCII tablo kiu montras la alfabeta indekso de 0 per 25, 565 00:41:58,020 --> 00:42:03,750 oni tra z, kaj la ASCII valoroj tiel ke vi povas ia vidas la rilaton 566 00:42:03,750 --> 00:42:07,020 kaj skizi ekster kaj provi kaj trovi iun ŝablonoj. 567 00:42:07,020 --> 00:42:11,010 Simile, se vi movo en la certa ekzemple per f - 568 00:42:11,010 --> 00:42:21,110 kaj ĉi estas ĉu minuskla aŭ majuskla f - tiam tiu respondus al 5. 569 00:42:21,110 --> 00:42:24,180 Ĉu ni bone ĝis nun? 570 00:42:25,770 --> 00:42:30,050 La formulo por Vigenère estas iom malsama. 571 00:42:30,050 --> 00:42:32,960 Esence, vi vidos ke ĝi estas nur kiel Cezaro, 572 00:42:32,960 --> 00:42:37,390 krom anstataŭ simple k ni havas k indekso j. 573 00:42:37,390 --> 00:42:44,810 Rimarku ke ni ne uzas i ĉar esence, la longo de la ŝlosilvorto 574 00:42:44,810 --> 00:42:49,850 ne estas nepre la longo de nia ĉifrita teksto. 575 00:42:49,850 --> 00:42:56,130 Ĉi tiu estos iom pli klara kiam ni vidas ekzemplon ke mi havas iom poste. 576 00:42:56,130 --> 00:43:03,160 Esence, se vi kuros via programo per ŝlosilvorto de ohai, 577 00:43:03,160 --> 00:43:08,560 tiam tio signifas ke ĉiufoje, ohai tuj estos vian ŝanĝon. 578 00:43:08,560 --> 00:43:11,060 Do laŭ kio pozicio vi estas en via ŝlosilvorto, 579 00:43:11,060 --> 00:43:15,800 vi tuj ŝanĝi vian iuj ĉifrita teksto karaktero de tiu sumo. 580 00:43:15,800 --> 00:43:19,630 Denove, kiel Cezaro, ni volas certigi ke ni konservu la majusklojn de aĵoj 581 00:43:19,630 --> 00:43:22,900 kaj ni nur encipher literoj, ne karakteroj aŭ spacoj. 582 00:43:22,900 --> 00:43:26,330 Do retrorigardas al Cezaro sur la funkcioj ke vi uzis, 583 00:43:26,330 --> 00:43:32,570 la vojo, kiun vi decidis kiel ŝanĝi tion, kaj apliki ke via programo tie. 584 00:43:32,570 --> 00:43:35,260 Do ni mapaj ĉi eksteren. 585 00:43:35,260 --> 00:43:39,680 Ni havas tekston kiun ni alvenas al la uzanto de GetString 586 00:43:39,680 --> 00:43:44,090 dirante Tiu ... estas CS50! 587 00:43:44,090 --> 00:43:47,090 Tiam ni havas ŝlosilvorto de ohai. 588 00:43:47,090 --> 00:43:50,930 La unuaj 4 karakteroj estas bela simpla. 589 00:43:50,930 --> 00:43:55,580 Ni scias ke T tuj estos moviĝis per o, 590 00:43:55,580 --> 00:44:01,990 tiam h tuj estos moviĝis per h, i tuj estos moviĝis per. 591 00:44:01,990 --> 00:44:04,610 Ĉi tie vi vidas, ke oni reprezentas 0, 592 00:44:04,610 --> 00:44:11,940 tiel tiam la fino valoro estas fakte ĝuste la sama litero kiel antaŭe. 593 00:44:11,940 --> 00:44:15,250 Tiam s moviĝis per i. 594 00:44:15,250 --> 00:44:19,370 Sed tiam vi havas ĉi tiuj periodoj tie. 595 00:44:19,370 --> 00:44:25,960 Ni ne volas encipher ke, do tiam ni ne ŝanĝi ĝin por nenio 596 00:44:25,960 --> 00:44:31,280 kaj ĝuste presi la periodo neŝanĝita. 597 00:44:31,280 --> 00:44:38,020 [Studento] Mi ne komprenas kiel vi scias, ke ĉi tio ŝanĝis de - Kie vi faris - >> Ho, pardonu. 598 00:44:38,020 --> 00:44:41,620 Ĉe la supro tie vi vidas ke la komanda linio argumento ohai tie, 599 00:44:41,620 --> 00:44:43,740 ke tuj estos la ŝlosilvorto. 600 00:44:43,740 --> 00:44:49,550 Kaj tial esence, vi biciklas tra la gravuloj de la ŝlosilvorto. 601 00:44:49,550 --> 00:44:52,020 [Studento] So o tuj estos sxangxigxantaj la sama - 602 00:44:52,020 --> 00:44:56,260 Do o respondas al certa nombro en la alfabeto. 603 00:44:56,260 --> 00:44:58,400 [Studento] Ĝuste. Sed kie vi akiris la CS50 parto de? 604 00:44:58,400 --> 00:45:02,540 Oh. Tio estas en GetString kie vi estas kiel, "Donu al mi string kodi." 605 00:45:02,540 --> 00:45:07,510 [Studento] Ili tuj donos al vi, ke argumento ŝanĝi per 606 00:45:07,510 --> 00:45:09,380 kaj tiam vi petos vian unuan kordoj. >> Jes. 607 00:45:09,380 --> 00:45:12,440 Do kiam ili kuras la programo, ili tuj inkluzivi la ŝlosilvorto 608 00:45:12,440 --> 00:45:14,740 en lia komandlinio argumentojn kiam ruli ĝin. 609 00:45:14,740 --> 00:45:19,740 Tiam kiam vi kontrolis ke mi efektive donis al vi 1 kaj ne pli, ne malpli, 610 00:45:19,740 --> 00:45:23,750 tiam vi tuj instigas ilin por kordoj, diru, "Donu al mi linio." 611 00:45:23,750 --> 00:45:27,630 Do jen kie en ĉi tiu kazo mi donis al vi Ĉi ... estas CS50! 612 00:45:27,630 --> 00:45:32,090 Do tiam vi tuj uzas tiun kaj uzu ohai kaj persisti super. 613 00:45:32,090 --> 00:45:38,200 Rimarku, ke ĉi tie ni saltis super encrypting la periodoj, 614 00:45:38,200 --> 00:45:51,660 sed en terminoj de nia pozicio por ohai, la sekva ni uzis o. 615 00:45:51,660 --> 00:45:54,990 En ĉi tiu kazo ĝi estas iom pli malfacile vidi ĉar tio estas 4, 616 00:45:54,990 --> 00:45:57,710 do ni daŭre iom. Nur batos min tie. 617 00:45:57,710 --> 00:46:02,960 Tiam ni havas i kaj j, kiuj estas poste tradukita de o kaj h respektive. 618 00:46:02,960 --> 00:46:09,370 Tiam ni havas spacon, kaj tiel poste ni scias, ke ni ne tuj encipher la spacoj. 619 00:46:09,370 --> 00:46:18,930 Sed rimarkas ke anstataŭ iri al en ĉi lokon ĉi tie, 620 00:46:18,930 --> 00:46:28,330 ni encrypting per - Mi ne scias se vi povos vidi ke - right here. 621 00:46:28,330 --> 00:46:33,710 Do ĝi ne plaĉas al mi efektive antaŭdeterminita, diru, o iras tie, h iras tien, 622 00:46:33,710 --> 00:46:39,200 oni iras tie, i iras tien, o, h, a, i, o, h, a, i. Vi ne faras tion. 623 00:46:39,200 --> 00:46:43,760 Vi nur ŝanĝi vian pozicion en la ŝlosilvorto 624 00:46:43,760 --> 00:46:51,020 kiam vi scias, ke vi efektive tuj estos encrypting reala litero. 625 00:46:51,020 --> 00:46:53,920 Ĉu tian sencon? 626 00:46:53,920 --> 00:46:55,800 Okay. 627 00:46:56,490 --> 00:46:58,500 Do nur iuj recordatorios. 628 00:46:58,500 --> 00:47:03,760 Vi volas certigi ke vi nur antaŭeniri la sekvanta letero en via ŝlosilvorto 629 00:47:03,760 --> 00:47:06,390 se la karaktero en via teksto estas letero. 630 00:47:06,390 --> 00:47:09,120 Do diru ni ĉe la aŭ. 631 00:47:09,120 --> 00:47:19,310 Ni rimarkas, ke la venonta signo, la i indekso de la kompleta teksto, estas nombro, ekzemple. 632 00:47:19,310 --> 00:47:31,630 Tiam ni ne antaŭi j, la indekso por nia ŝlosilvorto, ĝis ni atingos alian leteron. 633 00:47:31,630 --> 00:47:36,230 Denove, vi ankaŭ volas certigi ke vi wraparound al la komenco de la ŝlosilvorto 634 00:47:36,230 --> 00:47:37,770 kiam vi estas je la fino de ĝi. 635 00:47:37,770 --> 00:47:42,030 Se vi vidas ĉi tie ni estas en mi, la venonta unu devas esti o. 636 00:47:42,030 --> 00:47:47,690 Do vi volas trovi metodon de povi wraparound al la komenco de via ŝlosilvorto 637 00:47:47,690 --> 00:47:49,470 ĉiufoje ke oni atingas la finon. 638 00:47:49,470 --> 00:47:55,040 Kaj tiel denove, kia operatoro estas utila en tiu kazo por envolviendo ĉirkaŭ? 639 00:47:56,630 --> 00:47:59,840 Kiel en la kalkula ekstere ekzemplo. 640 00:47:59,840 --> 00:48:03,710 [Studento] La procentoj signo. >> Jes, la procentoj signo, kiu estas module. 641 00:48:03,710 --> 00:48:11,250 Do module venos en oportuna tie kiam vi volas kovri super la indekso en via ohai. 642 00:48:11,250 --> 00:48:17,700 Kaj ĝuste rapida aludo: Provu pensi envolviendo super la ŝlosilvorto iom kiel la kalkula for, 643 00:48:17,700 --> 00:48:23,590 kie se ekzistas 3 grupoj, la 4-a persono, 644 00:48:23,590 --> 00:48:30,610 ilia nombro, ke ili diris estis 4 mod 3, kiu estis 1. 645 00:48:30,610 --> 00:48:32,880 Do provu kaj pensi pri tio, ke vojo. 646 00:48:34,770 --> 00:48:42,740 Kiel vi vidis en la formulo, kie ajn vi havas ci kaj poste pi sed tiam kj, 647 00:48:42,740 --> 00:48:44,700 vi volas certigi ke vi observu spuron de tiuj. 648 00:48:44,700 --> 00:48:47,580 Vi ne bezonas nomi ĝin mi, vi ne bezonas nomi ĝin j, 649 00:48:47,580 --> 00:48:53,270 sed vi volas certigi ke vi observu trako de la pozicio ke vi estas en en via teksto 650 00:48:53,270 --> 00:48:55,790 tiel kiel la pozicio ke vi estas en en via ŝlosilvorto 651 00:48:55,790 --> 00:48:59,840 ĉar tiuj ne nepre tuj estos la sama. 652 00:48:59,840 --> 00:49:06,400 Ne nur faras la ŝlosilvorto - ĝi povus esti tute malsama longo ol via teksto. 653 00:49:06,400 --> 00:49:09,140 Ankaŭ, viaj teksto, estas nombroj kaj signoj, 654 00:49:09,140 --> 00:49:14,450 do ĝi estas ne tuj perfekte kongruas supren kune. Jes. 655 00:49:14,450 --> 00:49:19,280 [Studento] Ĉu estas funkcio ŝanĝi kazo? 656 00:49:19,280 --> 00:49:24,530 Ĉu vi povas ŝanĝi al ĉefurbo A? >> Jes, tie certe estas. 657 00:49:24,530 --> 00:49:27,890 Vi povas kontroli - Mi kredas ke estas toupper, ĉiuj 1 vorto. 658 00:49:30,650 --> 00:49:36,310 Sed kiam vi provas kodita aĵoj kaj konservi la tekston, 659 00:49:36,310 --> 00:49:39,350 ĝi estas bona esence havi apartajn kazojn. 660 00:49:39,350 --> 00:49:42,040 Se estas majuskla, do vi volas ŝanĝi per ĉi 661 00:49:42,040 --> 00:49:46,460 ĉar en vian formulon, kiam vi retrorigardas kiel ni devas speco de iras 662 00:49:46,460 --> 00:49:50,900 interŝanĝebla inter la ASCII maniero reprezenti la numeroj 663 00:49:50,900 --> 00:49:55,020 kaj la vera alfabeta indekso, ni volas certigi 664 00:49:55,020 --> 00:50:01,850 tie tuj estos ia mastro, ke vi tuj uzos. 665 00:50:01,850 --> 00:50:04,580 Alia noto pri la ŝablono, fakte. 666 00:50:04,580 --> 00:50:07,250 Vi tuj definitive pritraktatos nombroj. 667 00:50:07,250 --> 00:50:11,280 Provu ne uzi magion nombroj, kiu estas ekzemplo de stilo. 668 00:50:11,280 --> 00:50:18,470 Do diru vi volas ĉiufoje movo iun por ŝati - 669 00:50:18,470 --> 00:50:22,400 Okay, do aludo, alia spoiler estas kiam vi iras al sxangxigxantaj ion 670 00:50:22,400 --> 00:50:26,310 per certa kvanto, provas ne reprezentas ke per reala nombro 671 00:50:26,310 --> 00:50:32,810 sed prefere provu kaj vidu se vi povas uzi la ASCII valoro, kiu estos speco de fari pli senco. 672 00:50:32,810 --> 00:50:35,470 Alia noto: Ĉar ni pritraktas formuloj, 673 00:50:35,470 --> 00:50:41,200 eĉ se viaj TF estos ia scias kion ŝablono vi povus uzi, 674 00:50:41,200 --> 00:50:44,430 plej bone en viaj komentoj ia klarigi la logikon, kiel, 675 00:50:44,430 --> 00:50:51,880 "Mi uzas ĉi ŝablono ĉar ..." kaj tipon de ekspliki la ŝablono koncize en via komentoj. 676 00:50:54,090 --> 00:50:58,990 [Tio walkthrough 2] Se tie ne estas neniu aliaj demandoj, tiam mi nur resti ĉi tie por iom. 677 00:50:58,990 --> 00:51:04,370 Bonŝancon kun via pset 2: Crypto kaj dankon pro veni. 678 00:51:06,070 --> 00:51:08,620 [Studento] Dankon. >> Dankon. 679 00:51:09,220 --> 00:51:10,800 [Media eksterrete intro]