1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Walkthrough - Set Problem 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Universiteti i Harvardit] 3 00:00:05,170 --> 00:00:07,490 [Kjo është CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Dakord. Hello, të gjithë, dhe të mirëpritur të walkthrough 2. 5 00:00:10,750 --> 00:00:14,330 Së pari, unë dua të ju përgëzoj për të përfunduar pset 1. 6 00:00:14,330 --> 00:00:18,140 Unë e di se ai mund të ketë qenë pak e vështirë për disa prej jush, 7 00:00:18,140 --> 00:00:20,460 mund të ketë qenë programi i parë në kompjuterin tuaj që ju ka shkruajtur, 8 00:00:20,460 --> 00:00:24,500 por vetëm mos harroni se në fund të kësaj, kur ju shikoni mbrapa në fund të semestrit, 9 00:00:24,500 --> 00:00:29,820 ju do të shikoni në pset 1 dhe ju do të thonë: "Hej, unë mund të ketë bërë që në 5 minuta." 10 00:00:29,820 --> 00:00:35,700 Kështu e di dhe besoj se në fund të kësaj ju do të gjeni patjetër pset 1 fare e thjeshtë. 11 00:00:35,700 --> 00:00:40,640 Por tani për tani kjo është një arritje e madhe, dhe urime për marrjen e bërë. 12 00:00:40,640 --> 00:00:44,010 Tani, edhe një shënim të shpejtë para se të merrni në mish e walkthrough. 13 00:00:44,010 --> 00:00:48,340 Unë vetëm dua të bëjë një shënim të shpejtë se unë ndonjëherë nuk do të ketë kohë të mjaftueshme 14 00:00:48,340 --> 00:00:52,500 gjatë walkthroughs për të shkuar nëpërmjet çdo mënyrë të vetme të bërë grup problemit 15 00:00:52,500 --> 00:00:56,140 dhe në vend të vetëm ndoshta përqëndrohet në 1 ose 2 lloj Implementimi, 16 00:00:56,140 --> 00:00:57,750 mënyra që ju mund të bëni këtë. 17 00:00:57,750 --> 00:01:01,970 Por kjo nuk do të thotë që ju janë të ndaluara nga e bërë atë një mënyrë tjetër. 18 00:01:01,970 --> 00:01:05,980 Nuk janë shpesh, si me shkenca kompjuterike, mënyra të shumta e të bërit gjëra, 19 00:01:05,980 --> 00:01:12,190 dhe kështu patjetër të ndjehen të lirë për të përdorur një lloj të ndryshme të zgjidhjes se unë mund të ketë paraqitur. 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. Një Seksioni i Pyetjeve - 1. Cezari - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 Dakord. Pra, problemi vendosur 2: kripto është një kënaqësi. 23 00:01:20,650 --> 00:01:24,500 Përsëri, me çdo pset ju do të fillojë me një pjesë të pyetjeve 24 00:01:24,500 --> 00:01:29,600 që do të zhvillohet në seksione tuaja me shokët tuaj të caktuar të mësimdhënies. 25 00:01:29,600 --> 00:01:31,670 Ne nuk do të shkojnë nëpër këto mbi walkthrough, 26 00:01:31,670 --> 00:01:35,100 por ata patjetër do t'ju ndihmojë të plotë pset. 27 00:01:35,100 --> 00:01:38,100 Pra, pjesa e parë e caktuar problemit është Cezari. 28 00:01:38,100 --> 00:01:43,470 Dhe kështu në Cezarit dikush do t'ju kalojë një çelës me një numër të plotë, 29 00:01:43,470 --> 00:01:48,420 dhe ju do të encrypt një varg të tekstit që ata t'ju japin 30 00:01:48,420 --> 00:01:50,670 dhe për t'u dhënë atyre përsëri një gjë të koduar. 31 00:01:50,670 --> 00:01:56,050 Nëse dikush shikuar një histori e Krishtlindjeve, ka një shembull i se ka. 32 00:01:56,050 --> 00:01:59,090 Pastaj pjesa e dytë e problemit është e vendosur Vigenere, 33 00:01:59,090 --> 00:02:01,790 cila është një teknikë më të avancuar enkriptim. 34 00:02:01,790 --> 00:02:05,640 Dhe kështu që ne jemi duke shkuar për të shifroj një copë të tekstit, 35 00:02:05,640 --> 00:02:09,600 përveç në vend me numër të plotë vetëm një të vetme, ne jemi të vërtetë do të shifroj atë 36 00:02:09,600 --> 00:02:13,340 me një fjalen që përdoruesi do të na japin. 37 00:02:16,270 --> 00:02:22,090 Mirë, kështu që mjeti i parë në veglave sot është në të vërtetë do të jetë përditësimin e aparatit. 38 00:02:22,090 --> 00:02:26,430 Në bordin e diskutimeve ne do të shohim gjëra të tilla si, "Pse nuk këtë punë?" 39 00:02:26,430 --> 00:02:28,110 "Pse nuk Submit 50 punë?" 40 00:02:28,110 --> 00:02:31,830 dhe shpesh zgjidhja është në fakt vetëm për të rinovuar aparatin tuaj. 41 00:02:31,830 --> 00:02:36,730 Dhe kështu që nëse ju vetëm të kandidojë në një dritare terminali në sudo tuaj aplikim yum-y - 42 00:02:36,730 --> 00:02:40,040 kjo është një flamur duke thënë: po, gjithçka Përditëso - Update, 43 00:02:40,040 --> 00:02:42,280 atëherë pajisja juaj do update nëse duhet të jetë. 44 00:02:42,280 --> 00:02:46,960 Dhe kjo nuk do të dëmtojë në qoftë se ju tashmë jeni në versionin më të fundit të pajisjes. 45 00:02:46,960 --> 00:02:51,280 Pastaj ai thjesht do të thotë nuk ka përditësime të reja në dispozicion dhe ju mund të vazhdojnë të punojnë së bashku. 46 00:02:51,280 --> 00:02:55,800 Por kjo është e mirë për të ekzekutuar edhe çdo herë që ju hapni pajisjen 47 00:02:55,800 --> 00:02:57,140 sepse ne jemi ende shumë - 48 00:02:57,140 --> 00:03:00,320 ndonjëherë në qoftë se ne kemi ardhur në një bug - ndreqim atë në aplikim. 49 00:03:00,320 --> 00:03:03,180 Prandaj sigurohuni që ju keni versionin më të fundit të pajisjes 50 00:03:03,180 --> 00:03:07,710 dhe të drejtuar se përditësimin atje. 51 00:03:07,710 --> 00:03:14,360 Dakord. Kështu që ne jemi që kanë të bëjnë me shkronja dhe ndryshimin, enciphering gjëra, 52 00:03:14,360 --> 00:03:20,410 ne jemi duke shkuar me të vërtetë duan të bëhen miq të mirë me skemën tonë ASCII. 53 00:03:20,410 --> 00:03:24,350 Nuk janë ato të shumta online, në qoftë se ju të gjeni. Ndoshta edhe të bëjë tuaj. 54 00:03:24,350 --> 00:03:29,950 Në thelb, me çdo shkronjë dhe çdo numër dhe çdo karakter 55 00:03:29,950 --> 00:03:32,210 ka një numër të lidhur me to, 56 00:03:32,210 --> 00:03:38,670 dhe kështu që është e mirë për të parë vlerat e tyre ASCII së bashku me letrën aktuale. 57 00:03:38,670 --> 00:03:42,310 Kjo patjetër do t'ju ndihmojë në grup problemit. 58 00:03:42,310 --> 00:03:45,750 Një gjë që me të vërtetë më ndihmoi në këtë grup problemit ishte në fakt print it out, 59 00:03:45,750 --> 00:03:48,380 dhe si unë ishte duke shkuar nëpër, unë në fakt do të tërheqë në të, 60 00:03:48,380 --> 00:03:51,150 shkruar, "Nëse kjo ka për të shkuar atje, pastaj ..." 61 00:03:51,150 --> 00:03:55,270 Lloji i nxjerrë mbi të dhe të shënojë atë, bëhen miq të mirë me tryezën tuaj ASCII. 62 00:03:57,240 --> 00:04:00,750 Pastaj ne kemi një disa mjete të tjera në dispozicionin tonë. 63 00:04:00,750 --> 00:04:03,750 Këtë herë në vend të vërtetë duke bërë që përdoruesit për të gjithë kontributin e tyre 64 00:04:03,750 --> 00:04:05,230 ne jemi duke shkuar për të bërë një kombinim. 65 00:04:05,230 --> 00:04:06,880 Ne jemi duke shkuar për të nxitur ata për disa të dhëna, 66 00:04:06,880 --> 00:04:11,350 por ne jemi gjithashtu do të përdorin vetëm argumentet command line. 67 00:04:11,350 --> 00:04:15,600 Kështu që kur ata të drejtuar programin e tyre, zakonisht ju thoni. / Hello, për shembull, 68 00:04:15,600 --> 00:04:17,310 Nëse programi juaj ishte hello.c. 69 00:04:17,310 --> 00:04:22,500 Por këtë herë në vend të vetëm duke thënë se, ata mund të bëjnë fjalët, argumentet më pas. 70 00:04:22,500 --> 00:04:27,210 Dhe kështu që ne jemi duke shkuar për të përdorur çfarëdo që ndodhë për ne si kontributin e tyre si edhe, 71 00:04:27,210 --> 00:04:31,720 kështu që lëviz përtej vetëm duke bërë për numër të plotë, por edhe duke përdorur argumente command line. 72 00:04:31,720 --> 00:04:36,590 Dhe pastaj ne do të shkojnë në vargjeve dhe vargjet, të cilat ne do të jetë duke përdorur një shumë të mirë. 73 00:04:41,460 --> 00:04:44,810 Ja vetëm një shembull i tabelës 1 mini ASCII. 74 00:04:44,810 --> 00:04:48,460 Siç thashë, çdo letër korrespondon me një numër, 75 00:04:48,460 --> 00:04:52,510 dhe kështu të njoh veten me këtë. Ajo do të jetë në dispozicion. 76 00:04:52,510 --> 00:04:55,610 Dhe më vonë kur ne të fillojnë të bëjnë disa ASCIIMath që kanë të bëjnë me numrat - 77 00:04:55,610 --> 00:05:00,110 duke shtuar, zbritur ata - atëherë patjetër e mirë për të referuar në këtë tabelë. 78 00:05:02,860 --> 00:05:06,920 Kështu që këtu është një shembull i një shifër Caesar - diçka që ju mund të keni luajtur me të. 79 00:05:06,920 --> 00:05:11,190 Kjo është vetëm një rrotë. Në thelb, ka një alfabeti jashtme dhe pastaj nuk është një alfabeti brendshme. 80 00:05:11,190 --> 00:05:15,290 Kështu që këtu është një shembull i Cezarit shifër, por me një çelës prej 0. 81 00:05:15,290 --> 00:05:21,540 Në thelb, A është në përputhje me A, B është në përputhje me B, të gjithë rrugën deri në Z. 82 00:05:21,540 --> 00:05:26,590 Por pastaj thonë se ne kemi kërkuar një çelës prej 3, për shembull. 83 00:05:26,590 --> 00:05:33,280 Atëherë ne do të rrotullohen timon brendshme në mënyrë që një tani aligns me D, etj 84 00:05:33,280 --> 00:05:35,250 Dhe kështu kjo është në thelb ajo që ne jemi duke shkuar për të bërë. 85 00:05:35,250 --> 00:05:38,340 Ne nuk kemi një rrotë, por ajo që ne jemi duke shkuar për të bërë është të bëjë programin tonë 86 00:05:38,340 --> 00:05:44,490 lloj zhvendoset alfabetit së bashku me ne për një sasi të caktuar të numrave. 87 00:05:44,490 --> 00:05:48,650 Pra, siç thashë më parë, ne jemi duke shkuar për të që kanë të bëjnë me argumente command line 88 00:05:48,650 --> 00:05:50,390 si dhe marrjen e një numër të plotë. 89 00:05:50,390 --> 00:05:55,050 Pra, mënyra se si një përdorues do të kandidojë Cezarit programin tuaj është duke thënë. / Cezari 90 00:05:55,050 --> 00:05:58,090 dhe pastaj të hyjnë në një numër pas kësaj. 91 00:05:58,090 --> 00:06:01,130 Dhe ky numër përfaqëson çelësin, kalimi, 92 00:06:01,130 --> 00:06:06,740 se sa herë ju jeni do të jetë rradhës rrota e brendshme të Cezarit shifër tuaj. 93 00:06:06,740 --> 00:06:08,390 Dhe kështu që ju shihni këtu një shembull. 94 00:06:08,390 --> 00:06:14,550 Nëse kemi hyrë letra nga një L në Cezarit shifër tonë, 95 00:06:14,550 --> 00:06:19,520 atëherë ajo do të input D O nëpërmjet sepse kjo është çdo letër zhvendosur mbi 3 herë, 96 00:06:19,520 --> 00:06:22,080 ashtu si shembullin e timonit që unë ju tregoi. 97 00:06:22,080 --> 00:06:25,300 Prandaj, nëse keni hyrë në, për shembull, Kjo është CS50! 98 00:06:25,300 --> 00:06:27,960 atëherë ajo do të lëvizin të gjitha letrat. 99 00:06:27,960 --> 00:06:31,040 Dhe kjo është një gjë e rëndësishme në të dy Cezarit dhe Vigenere 100 00:06:31,040 --> 00:06:34,890 është se ne jemi duke shkuar për të kaloni mbi ndonjë jo-letra. 101 00:06:34,890 --> 00:06:39,160 Kështu që çdo hapësira, karaktere, etj, numrat, ne jemi duke shkuar për t'i mbajtur ata të njëjtën gjë. 102 00:06:39,160 --> 00:06:42,920 Ne jemi vetëm do të zhvendoset letra në këtë rast. 103 00:06:42,920 --> 00:06:45,870 Kështu si ju shihni në timon, ne kemi vetëm letra në dispozicion për ne, 104 00:06:45,870 --> 00:06:50,150 kështu që ne vetëm duam të zhvendoset letra dhe encrypt letra. 105 00:06:51,370 --> 00:06:56,720 Pra, gjëja e parë për të bërë, ju pa se përdorimi për Cezarit në problemin vendosur 2 106 00:06:56,720 --> 00:07:05,280 është për të kandiduar Cezarin dhe pastaj të hyjë në një numër kur ju drejtuar atë në terminal. 107 00:07:05,280 --> 00:07:10,940 Kështu që ajo që ne duhet të bëni është që të marrë atë disi kyç dhe të përdorni atë. 108 00:07:10,940 --> 00:07:14,730 Dhe kështu ne duam të shohim disi ajo do të jetë e dyta command line argument. 109 00:07:14,730 --> 00:07:20,950 Një parë është do të jetë. / Cezari, dhe tjetri është do të jetë numri çelësi. 110 00:07:22,190 --> 00:07:29,200 Pra, para se të kishim int kryesor (i pavlefshëm) për të filluar programet tona c. 111 00:07:29,200 --> 00:07:31,790 Ne jemi duke shkuar për të zhvishem përsëri një shtresë pak 112 00:07:31,790 --> 00:07:34,720 dhe në fakt shohim se në vend të kalimit në zbrazëti të funksionojë tonë kryesore 113 00:07:34,720 --> 00:07:37,920 ne jemi në të vërtetë kanë të bëjnë me 2 parametra. 114 00:07:37,920 --> 00:07:44,070 Ne kemi një int emrin argc dhe pastaj një grup i quajtur vargjet argv. 115 00:07:44,070 --> 00:07:46,030 Kështu argc është një numër i plotë, 116 00:07:46,030 --> 00:07:49,640 dhe paraqet numrin e kaluar argumente për programin tuaj. 117 00:07:49,640 --> 00:07:53,590 Dhe pastaj argv është në fakt lista e argumenteve kaluar. 118 00:07:53,590 --> 00:08:00,820 Të gjitha argumentet janë vargjet, dhe kështu argv përfaqëson një grup, një listë, e strings. 119 00:08:01,830 --> 00:08:03,990 Le të flasim për vargjeve pak. 120 00:08:03,990 --> 00:08:05,940 Vargjeve janë në thelb një strukturë e re të të dhënave. 121 00:08:05,940 --> 00:08:09,660 Ne kemi ints, ne kemi dyshen, kemi vargjet, dhe tani ne kemi vargjeve. 122 00:08:09,660 --> 00:08:13,820 Vargjeve janë strukturat e të dhënave që mund të mbajnë vlerat e shumta të të njëjtit lloj, 123 00:08:13,820 --> 00:08:18,320 Pra, në thelb, një listë e çfarëdo lloj që ju dëshironi. 124 00:08:18,320 --> 00:08:24,400 Në thelb, në qoftë se ju të kërkuar një listë të të gjitha integers në 1 ndryshueshme, 125 00:08:24,400 --> 00:08:29,090 atëherë ju do të krijojë një ndryshore të ri që ishte i tipit int array. 126 00:08:29,090 --> 00:08:34,450 Kështu vargjeve janë zero-indeksuar, që do të thotë se elementi i parë i vektorit është në indeksit 0. 127 00:08:34,450 --> 00:08:41,799 Nëse array është e gjatësi 4, si në këtë shembull, atëherë elementi juaj e fundit do të jetë në indeks 3, 128 00:08:41,799 --> 00:08:44,810 cili është 4 - 1. 129 00:08:45,940 --> 00:08:48,420 Pra, për të krijuar grup, ju do të bëni diçka si kjo. 130 00:08:48,420 --> 00:08:51,440 Thuaj ju kërkuar një koleksion të dyfishtë. 131 00:08:51,440 --> 00:08:56,520 Kjo vlen për çdo lloj të të dhënave lloji, pse. 132 00:08:56,520 --> 00:09:00,210 Pra, thonë se ju doni një koleksion të dyfishtë. Thonë se ju doni të telefononi atë kuti postare. 133 00:09:00,210 --> 00:09:04,760 Ashtu si ju do të ndonjë nisja dyfishtë tjetër, 134 00:09:04,760 --> 00:09:09,760 ju do të thoni dyfishtë dhe pastaj emrin, por këtë herë ne kemi vënë kllapa katrore, 135 00:09:09,760 --> 00:09:13,570 dhe pastaj numri nuk do të jetë gjatësia e vektorit. 136 00:09:13,570 --> 00:09:16,840 Vini re se në vargjeve ne kurrë nuk mund të ndryshoni gjatësinë, 137 00:09:16,840 --> 00:09:21,230 kështu që ju gjithmonë duhet të përcaktojnë dhe zgjedhin sa kuti, 138 00:09:21,230 --> 00:09:25,440 sa vlerat array juaj është duke shkuar për të mbajtur. 139 00:09:25,440 --> 00:09:31,820 Pra, për të vendosur vlera të ndryshme në rrjet tuaj, ju jeni do të përdorni këtë sintaksë e mëposhtme, 140 00:09:31,820 --> 00:09:33,200 si ju shihni në rrëshqitje. 141 00:09:33,200 --> 00:09:37,620 Indeksi keni mailbox 0 do te behet 1.2, 142 00:09:37,620 --> 00:09:42,180 Indeksi mailbox 1 set me 2.4, etj 143 00:09:42,180 --> 00:09:47,910 Pra, tani që ne kemi shqyrtuar vargjeve pak, le të kthehemi në argc dhe argv. 144 00:09:47,910 --> 00:09:52,220 Ne e dimë se argv tani është një grup i strings. 145 00:09:52,220 --> 00:09:55,080 Kështu që kur një përdorues kalon në - thonë ata janë drejtimin e një program të - 146 00:09:55,080 --> 00:09:58,740 thonë ata. / Përshëndetje David Malan, 147 00:09:58,740 --> 00:10:05,160 çfarë programi do të bëjë për ju tashmë ka ardhur në fakt me atë argc dhe argv janë. 148 00:10:05,160 --> 00:10:07,620 Pra, ju nuk keni nevojë të shqetësohen për këtë. 149 00:10:07,620 --> 00:10:14,370 Argc në këtë rast do të jetë 3 për shkak se ajo i sheh 3 fjalë të veçanta të ndara nga hapësira. 150 00:10:14,370 --> 00:10:18,850 Dhe kështu atëherë array në këtë rast, indeksi i parë do të jetë. / Hello, 151 00:10:18,850 --> 00:10:21,770 tjetër një David, një tjetër Malan. 152 00:10:21,770 --> 00:10:25,640 Does anyone shihni menjëherë çfarë marrëdhënia midis argv, 153 00:10:25,640 --> 00:10:28,990  grup, dhe argc është? 154 00:10:32,820 --> 00:10:38,090 Po. Ne do të merrni në atë në një shembull në args.c. 155 00:10:38,090 --> 00:10:42,880 Le të shohim nëse ne mund të përfitojnë nga marrëdhëniet në mes të 2. 156 00:10:42,880 --> 00:10:46,550 Këtu ju mund të gjeni se në aplikim aplikimi paracaktuar 157 00:10:46,550 --> 00:10:49,450 për të hapur dosjet. c ndonjëherë është Emacs. 158 00:10:49,450 --> 00:10:54,660 Por ne duam të merremi me Gedit, kështu që çfarë ju mund të bëni është që ju mund të drejtë të klikoni në dosjen tuaj C, 159 00:10:54,660 --> 00:11:04,580 shkoni tek Properties, Open With, dhe pastaj zgjidhni Gedit, siç default, 160 00:11:04,580 --> 00:11:13,020 dhe tani programi juaj duhet të hapet në Gedit në vend të Emacs. 161 00:11:14,710 --> 00:11:16,290 Përsosur. 162 00:11:17,120 --> 00:11:25,520 Kështu që këtu unë kam një program që unë dua të shtypura nga çdo argument të command line. 163 00:11:25,520 --> 00:11:32,050 Pra, çfarëdo përdoruesi inputeve, unë dua të kthehen në thelb atë përsëri për ta në një linjë të re. 164 00:11:32,050 --> 00:11:36,710 Pra, çfarë është një strukturë që ne mund të përdorim për të iterate mbi diçka - 165 00:11:36,710 --> 00:11:40,380 diçka që ju ndoshta përdoren në 1 pset tuaj? 166 00:11:40,380 --> 00:11:45,840 Nëse ju doni të shkoni nëpër një numër të caktuar të gjërave? >> [Student] Për lak. 167 00:11:45,840 --> 00:11:48,910 Për lak. Saktësisht. Pra, le të fillojë me të për lak. 168 00:11:48,910 --> 00:11:56,900 Ne kemi për int i = 0. Le të fillojmë me një ndryshore filluese standarde. 169 00:11:56,900 --> 00:12:02,370 Unë jam duke shkuar për të lënë gjendjen për një grup dhe pastaj thonë se i + +, duke shkuar për të bërë gjëra atje. 170 00:12:02,370 --> 00:12:04,090 Dakord. 171 00:12:04,090 --> 00:12:11,590 Pra, duke menduar përsëri në argv, nëse argv është lista e argumenteve të miratuara për programin 172 00:12:11,590 --> 00:12:15,380 dhe argc është numri i argumenteve në program, 173 00:12:15,380 --> 00:12:21,280 atëherë kjo do të thotë se është në thelb argc gjatësia e argv, e drejtë, 174 00:12:21,280 --> 00:12:28,970 sepse nuk do të jetë aq shumë argumente, si vlera e argc. 175 00:12:28,970 --> 00:12:35,910 Pra, nëse ne duam të iterate mbi çdo element në argv, 176 00:12:35,910 --> 00:12:43,290 ne do të duan të hyni në çdo kohë ndryshueshme në argv në indeksin e dhënë. 177 00:12:43,290 --> 00:12:49,060 Kjo mund të përfaqësohet me këtë, apo jo? 178 00:12:49,060 --> 00:12:53,430 Kjo variabël këtu përfaqëson varg të veçantë në këtë rast 179 00:12:53,430 --> 00:12:57,030 sepse kjo është një koleksion string - vargu të veçantë në atë indeksin e dhënë. 180 00:12:57,030 --> 00:13:00,690 Ajo që ne duam të bëjmë, në këtë rast ne duam të shtypura atë, kështu që le të themi printf. 181 00:13:00,690 --> 00:13:04,680 Dhe tani argv është një varg, kështu që ne duam të vënë atë placeholder atje. 182 00:13:04,680 --> 00:13:08,430 Ne duam një linjë të re vetëm për të bërë atë të duken mirë. 183 00:13:08,430 --> 00:13:12,530 Pra, këtu kemi një lak për të. Ne nuk kemi gjendjen ende. 184 00:13:12,530 --> 00:13:20,020 Kështu që i fillon në 0, dhe pastaj çdo herë ajo do të shtypura string dhënë 185 00:13:20,020 --> 00:13:22,980 në atë indeks të veçantë në grup. 186 00:13:22,980 --> 00:13:28,410 Kështu që kur duam të ndaluar shtypjen nga elementet në rrjet? 187 00:13:28,410 --> 00:13:35,720 Kur ne kemi mbaruar, apo jo? Kur kemi arritur fundin e vektorit. 188 00:13:35,720 --> 00:13:38,870 Pra, ne nuk duam të tejkalojë të kaluarën gjatësinë e vektorit, 189 00:13:38,870 --> 00:13:43,700 dhe ne tashmë e dimë, ne nuk kemi nevojë të vërtetë aktive të gjetur se çfarë është gjatësia e argv 190 00:13:43,700 --> 00:13:47,520 sepse ai ka dhënë për ne, dhe çfarë është ajo? Argc. Saktësisht. 191 00:13:47,520 --> 00:13:56,640 Pra, ne duam të bëjmë këtë numër argc proces të kohës. 192 00:13:56,640 --> 00:13:59,550 Unë nuk jam në directory e duhur. 193 00:14:02,100 --> 00:14:03,490 Dakord. 194 00:14:03,490 --> 00:14:08,990 Tani le të bëjë args. Nuk ka gabime, të cilat është e madhe. 195 00:14:08,990 --> 00:14:11,430 Pra, le të vetëm të drejtuar args. 196 00:14:11,430 --> 00:14:15,130 Çfarë është kjo do të kthehen tek ne? Është vetëm do të shtypura atë. 197 00:14:15,130 --> 00:14:18,320 "Ju args futur në program, unë jam duke shkuar për të dhënë atë për ju." 198 00:14:18,320 --> 00:14:23,170 Pra, le të thonë se ne duam të themi pastaj args bar foo. 199 00:14:23,170 --> 00:14:26,570 Pra pastaj ajo shtyp atë prapa ke ne. Të gjithë të drejtë? 200 00:14:26,570 --> 00:14:30,790 Kështu që nuk është një shembull se si ju mund të përdorni argc dhe argv 201 00:14:30,790 --> 00:14:33,460 ditur se argc paraqet gjatësinë e argv. 202 00:14:33,460 --> 00:14:42,750 Sigurohuni që ju nuk e bëni kurrë me vargjeve qasje përtej një gjatësi prej array 203 00:14:42,750 --> 00:14:45,140 sepse C patjetër do të bërtasin në ju. 204 00:14:45,140 --> 00:14:47,560 Ju do të merrni diçka që quhet një faj segmentimit, 205 00:14:47,560 --> 00:14:52,470 që nuk është e bukur, në thelb duke thënë se ju jeni duke u përpjekur për të hyrë në diçka 206 00:14:52,470 --> 00:14:55,000 që nuk ekziston, nuk i takon për ju. 207 00:14:55,000 --> 00:14:59,430 Prandaj sigurohuni, dhe sidomos me zero-indeksimin, ne nuk duam të - 208 00:14:59,430 --> 00:15:02,390 Si për shembull, nëse ne kemi një rrjet të gjatësinë 4, 209 00:15:02,390 --> 00:15:07,240 se indeksi array 4 nuk ekziston sepse ne të fillojë në 0, në zero indeks. 210 00:15:07,240 --> 00:15:11,730 Ajo do të bëhet natyrë e dytë ashtu si për sythe kur ne të fillojë në 0. 211 00:15:11,730 --> 00:15:13,610 Pra, vetëm i mbajnë në mend. 212 00:15:13,610 --> 00:15:22,590 Ju nuk doni të ndonjëherë të hyni në indeksin e një grup që është përtej mundësive tuaja. 213 00:15:26,710 --> 00:15:32,560 Pra, ne mund të shohim tani se si ne mund të lloj të qasjes 214 00:15:32,560 --> 00:15:35,930 argumentet command line që janë miratuar in 215 00:15:35,930 --> 00:15:41,330 Por si ju pa varg, argv është në fakt një grup string. 216 00:15:41,330 --> 00:15:45,740 Pra, kjo nuk është në të vërtetë një numër të plotë, por në të Cezarit ne duam që të merren me integers. 217 00:15:45,740 --> 00:15:54,430 Për fat të mirë, ka një funksion krijuar për ne që në fakt mund të konvertohet në një varg në një numër të plotë. 218 00:15:54,430 --> 00:15:58,710 Gjithashtu këtu nuk kemi të bëjmë me të dhëna përdoruesi, ku ne jemi duke bërë ato 219 00:15:58,710 --> 00:16:03,740 për kontributin këtu për çelës, kështu që ne nuk mund të vërtetë reprompt dhe thonë, 220 00:16:03,740 --> 00:16:07,840 "Oh, më jep një numër të plotë, të themi, nëse ajo nuk është e vlefshme." 221 00:16:07,840 --> 00:16:10,540 Por ne nuk ende duhet të kontrolloni për përdorimin korrekt. 222 00:16:10,540 --> 00:16:13,520 Në Cezarit ato janë të lejuara vetëm për të kaluar në 1 numër, 223 00:16:13,520 --> 00:16:18,030 dhe kështu ata kanë për të kandiduar. / Cezarit dhe pastaj ata duhet të ju jap një numër. 224 00:16:18,030 --> 00:16:23,660 Pra argc duhet të jetë një numër i caktuar. 225 00:16:23,660 --> 00:16:29,060 Çfarë numri do që të jetë, nëse ata duhet të kalojnë ju. / Cezarit dhe pastaj një çelës? 226 00:16:29,060 --> 00:16:32,920 Çfarë është argc? >> [Student] 2. Dy >>. Saktësisht. 227 00:16:32,920 --> 00:16:35,490 Pra, ju doni të bëni të sigurtë që argc është 2. 228 00:16:35,490 --> 00:16:39,620 Përndryshe ju në thelb refuzojnë të drejtuar programin. 229 00:16:39,620 --> 00:16:43,040 Në kryesor është një funksion që thotë int kryesore, 230 00:16:43,040 --> 00:16:47,360 kështu atëherë ne gjithmonë në kthim 0 praktikë të mirë në fund të një programi të suksesshëm. 231 00:16:47,360 --> 00:16:50,840 Pra, nëse, të themi, ata të ju jap 3 argumente command line në vend të 2 232 00:16:50,840 --> 00:16:54,350 apo ju jap 1, për shembull, atëherë çfarë ju do të bëni është që ju do të dëshironi të shikoni për atë 233 00:16:54,350 --> 00:16:59,900 dhe pastaj kthehen duke thënë: 1, jo, unë nuk mund të vazhdojë me këtë program. 234 00:16:59,900 --> 00:17:03,190 [Student] Nuk mund të jetë një hapësirë ​​në tekstin tuaj. Pardon >> mua? 235 00:17:03,190 --> 00:17:06,780 [Student] Nuk mund të jetë një hapësirë ​​e në tekstin që ju jeni duke u përpjekur për të kriptuar. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 Në kushtet e tekstit që ne jemi duke u përpjekur për të encrypt, që në fakt vjen më vonë 238 00:17:11,280 --> 00:17:13,970 kur japim atë tekst. 239 00:17:13,970 --> 00:17:18,260 Deri tani ne jemi vetëm duke pranuar si argumente komandës numri aktual, 240 00:17:18,260 --> 00:17:21,579 ndryshim aktuale për encryption Cezarit. 241 00:17:21,579 --> 00:17:27,569 [Student] Pse keni nevojë për 2 në krahasim me vetëm argc 1? Ka patjetër numri 1. 242 00:17:27,569 --> 00:17:32,200 Drejtë. Arsyeja pse ne kemi nevojë për 2 argc vend të 1 243 00:17:32,200 --> 00:17:36,260 është sepse kur ju drejtuar një program dhe thonë. / Cezari ose. / hello, 244 00:17:36,260 --> 00:17:38,280 që aktualisht numëron si një argument command line. 245 00:17:38,280 --> 00:17:43,020 Kështu, pra, që tashmë merr 1 dhe kështu, atëherë ne jemi inputting 1 shtesë. 246 00:17:45,030 --> 00:17:49,440 Pra, ju jeni në të vërtetë një varg futjen në argumentin command line. 247 00:17:49,440 --> 00:17:52,730 Çfarë doni të bëni, për të Cezarit ne duam të merremi me një numër të plotë, 248 00:17:52,730 --> 00:17:57,180 kështu që ju mund të përdorni këtë funksion atoi. 249 00:17:57,180 --> 00:18:02,850 Dhe në thelb, ju të kalojë atë në një varg dhe pastaj ajo do të ju kthejë përsëri një numër të plotë 250 00:18:02,850 --> 00:18:06,070 nëse është e mundur për të bërë atë varg në një numër të plotë. 251 00:18:06,070 --> 00:18:10,960 Tani kujtohet kur ne jemi që kanë të bëjnë me gjëra printf ose getString, si kjo, 252 00:18:10,960 --> 00:18:13,390 Ne përfshijnë bibliotekat që janë specifike për ne. 253 00:18:13,390 --> 00:18:19,450 Pra, në fillim ne fillojmë me një diçka të hash tag standarde I / O,. H, si kjo. 254 00:18:19,450 --> 00:18:22,430 E pra, atoi nuk është në njërën prej këtyre bibliotekave, 255 00:18:22,430 --> 00:18:26,600 kështu që ajo që ne duhet të bëjmë është që ne duhet të përfshijë bibliotekën e duhur për këtë. 256 00:18:26,600 --> 00:18:32,720 Pra kujtojnë përsëri në walkthrough 1 ku kam diskutuar funksionin manual. 257 00:18:32,720 --> 00:18:37,110 Ju shkruani njeriun në terminalin tuaj dhe pastaj pasohet nga emri i një funksioni. 258 00:18:37,110 --> 00:18:39,720 Dhe kështu që do të sjellë një listë e tërë e përdorimit të saj, 259 00:18:39,720 --> 00:18:42,890 por edhe kjo do të sjellë deri të cilat biblioteka që i takon. 260 00:18:42,890 --> 00:18:47,000 Kështu që unë do të iki që për ju për të përdorur funksionin manual me atoi 261 00:18:47,000 --> 00:18:53,360 dhe të kuptoj se cilat biblioteka ju duhet të përfshijë të jenë në gjendje të përdorin funksionin atoi. 262 00:18:54,450 --> 00:18:57,670 Pra, ne kemi marrë çelësin dhe tani është fjala për marrjen e plain text, 263 00:18:57,670 --> 00:19:01,820 dhe kështu që në fakt do të jetë dhëna Përdoruesi ku ju të shpejtë. 264 00:19:01,820 --> 00:19:05,540 Ne trajtuar me GetInt dhe GetFloat, dhe kështu në të njëjtën mënyrë 265 00:19:05,540 --> 00:19:07,670 ne jemi duke shkuar për të merret me getString. 266 00:19:07,670 --> 00:19:12,440 Por në këtë rast ne nuk kemi nevojë të bëni ndonjë ose bëni ndërsa duke sythe për të kontrolluar. 267 00:19:12,440 --> 00:19:14,480 GetString patjetër do të na japin një varg, 268 00:19:14,480 --> 00:19:17,630 dhe ne jemi duke shkuar për të encrypt çdo gjë na jep përdoruesit. 269 00:19:17,630 --> 00:19:23,770 Kështu që ju mund të supozojmë se të gjitha këto vargjet përdoruesit futur janë të sakta. 270 00:19:23,770 --> 00:19:24,670 Madhe. 271 00:19:24,670 --> 00:19:27,270 Pra, pastaj një herë ju keni marrë kyç dhe një herë ju keni marrë tekstin, 272 00:19:27,270 --> 00:19:31,660 tani ajo ka mbetur është që ju keni për të shifroj the PLAINTEXT. 273 00:19:31,660 --> 00:19:36,530 Vetëm të shpejt të të mbulojë mbi zhargon, të PLAINTEXT është ajo që ju jep shfrytëzuesi, 274 00:19:36,530 --> 00:19:41,030 dhe ciphertext është ajo që ju të kthehet për ta. 275 00:19:42,450 --> 00:19:45,850 Kështu vargjet, të jetë në gjendje për të shkuar nëpër aktualisht letrën me letër 276 00:19:45,850 --> 00:19:48,550 sepse ne duhet të zhvendoset çdo letër, 277 00:19:48,550 --> 00:19:51,390 ne e kuptojmë se vargjet, në qoftë se ne lloj zhvishem mbrapa Layer, 278 00:19:51,390 --> 00:19:54,130 ne shohim se ata janë me të vërtetë vetëm një listë të karaktereve. 279 00:19:54,130 --> 00:19:55,930 Një vjen pas tjetrës. 280 00:19:55,930 --> 00:20:01,690 Dhe kështu që ne mund të trajtoni vargjet si vargjeve, sepse ata janë të vargjeve të karaktereve. 281 00:20:01,690 --> 00:20:05,640 Pra, thonë se ju keni një varg me emrin tekst, 282 00:20:05,640 --> 00:20:09,400 dhe brenda këtij teksti ndryshueshme është ruajtur Kjo është CS50. 283 00:20:09,400 --> 00:20:15,680 Pastaj teksti në indeksin 0 do të jetë një T kapitalit, indeksi i 1 do të jetë h, etj 284 00:20:17,530 --> 00:20:23,970 Dhe pastaj me vargjeve, në shembull argc në args.c, 285 00:20:23,970 --> 00:20:27,090 ne pamë se kishim të iterate mbi një grup 286 00:20:27,090 --> 00:20:32,440 dhe kështu që ne duhej të iterate nga i = 0 deri unë është më pak se gjatësia. 287 00:20:32,440 --> 00:20:35,560 Pra, ne kemi nevojë për disa mënyra të parafytyruar se çfarë gjatësia e vargut tonë është 288 00:20:35,560 --> 00:20:37,090 në qoftë se ne jemi duke shkuar për të iterate mbi të. 289 00:20:37,090 --> 00:20:42,300 Për fat të mirë përsëri, nuk është një funksion atje për ne, edhe pse më vonë në CS50 290 00:20:42,300 --> 00:20:45,860 ju patjetër do të jetë në gjendje të zbatojë dhe të bëjë funksionin tuaj 291 00:20:45,860 --> 00:20:48,260 që mund të llogarisin gjatësinë e një varg. 292 00:20:48,260 --> 00:20:52,120 Por tani për tani ne jemi duke shkuar për të përdorur gjatësi string, kështu strlen. 293 00:20:52,120 --> 00:21:00,440 Ju të kalojë në një varg, dhe pastaj ajo do të ju kthehen një int që përfaqëson gjatësinë e vargut tuaj. 294 00:21:00,440 --> 00:21:05,840 Le të shikojmë në një shembull se si ne mund të jetë në gjendje për të iterate mbi çdo karakter në një varg 295 00:21:05,840 --> 00:21:08,470 dhe të bëjë diçka me këtë. 296 00:21:08,470 --> 00:21:13,250 Ajo që ne duam të bëjmë është iterate mbi çdo karakter të vargut, 297 00:21:13,250 --> 00:21:19,150 dhe atë që ne duam të bëjmë është që ne të shtypura mbrapa çdo karakter 1 nga 1 298 00:21:19,150 --> 00:21:22,060 me përjashtim të shtojmë diçka tjetër për të. 299 00:21:22,060 --> 00:21:27,020 Pra, le të fillojë me të për lak. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Ne jemi duke shkuar për të lënë hapësirë ​​për gjendjen. 301 00:21:32,700 --> 00:21:36,840 Ne duam të iterate derisa të arrijmë në fund të vargut, apo jo? 302 00:21:36,840 --> 00:21:41,340 Pra, atëherë çfarë funksioni na jep gjatësinë e vargut? 303 00:21:41,340 --> 00:21:43,160 [Përgjigja e padëgjueshme Student] 304 00:21:43,160 --> 00:21:46,420 Kjo është gjatësia e argumenteve të linjës së komandës. 305 00:21:46,420 --> 00:21:50,650 Por për një varg ne duam të përdorim një funksion që na jep gjatësinë e vargut. 306 00:21:50,650 --> 00:21:53,090 Pra, kjo është gjatësia string. 307 00:21:53,090 --> 00:21:57,130 Dhe kështu, atëherë ju duhet të kalojnë në një varg të saj. 308 00:21:57,130 --> 00:21:59,760 Ajo duhet të dini se çfarë varg ajo ka nevojë për të llogaritur gjatësinë e. 309 00:21:59,760 --> 00:22:03,160 Pra, atëherë në këtë rast ne jemi që kanë të bëjnë me string s. 310 00:22:04,790 --> 00:22:05,860 Madhe. 311 00:22:05,860 --> 00:22:10,770 Kështu, pra, ajo që ne duam të bëjmë, le të printf. 312 00:22:10,770 --> 00:22:14,850 Tani, ne duam të merremi me karaktere. Ne duam të shtypura nga çdo karakter individual. 313 00:22:14,850 --> 00:22:22,150 Kur ju dëshironi që ajo të shtypura nga një noton, ju do të përdorni placeholder si f%. 314 00:22:22,150 --> 00:22:24,580 Me një int ju do të përdorni% d. 315 00:22:24,580 --> 00:22:30,890 Dhe kështu të ngjashme, me një karakter të përdorni% c do të thotë që unë jam duke shkuar për të shtypur një karakter 316 00:22:30,890 --> 00:22:34,570 që është ruajtur në brendësi të një ndryshore. 317 00:22:34,570 --> 00:22:40,840 Pra, ne kemi këtë, dhe le të shtoni një periudhë dhe një hapësirë ​​në të. 318 00:22:40,840 --> 00:22:45,430 Të cilat karakteri jemi duke përdorur? 319 00:22:45,430 --> 00:22:49,780 Ne do të jetë duke përdorur çfarëdo karakteri ne jemi në të vargut. 320 00:22:49,780 --> 00:22:52,890 Pra, atëherë ne do të jetë duke përdorur diçka me varg, 321 00:22:52,890 --> 00:22:56,420 por ne duam të hyrë në karakterin e caktuar aty. 322 00:22:56,420 --> 00:23:02,740 Pra, nëse një varg është vetëm një grup, atëherë si nuk kemi qasje elementet e vargjeve? 323 00:23:02,740 --> 00:23:06,480 Ne kemi ato kllapa katrore, dhe pastaj ne kemi vënë në indeksin e atje. 324 00:23:06,480 --> 00:23:11,820 Pra, ne kemi kllapa katrore. Indeksi i jonë në këtë rast ne mund të përdorni vetëm i. Saktësisht. 325 00:23:15,290 --> 00:23:22,370 Pra, këtu ne jemi duke thënë se ne jemi duke shkuar për të shtypur një karakter ndjekur nga një pikë dhe një hapësirë, 326 00:23:22,370 --> 00:23:30,870 dhe se karakteri do të jetë në letër ith s tonë string. 327 00:23:32,920 --> 00:23:39,330 Unë jam vetëm duke shkuar për të shpëtuar atë. Rregull. 328 00:23:42,510 --> 00:23:46,840 Tani unë jam duke shkuar për të drejtuar gjatësinë string. 329 00:23:46,840 --> 00:23:53,440 Pra, kemi pasur një varg quajtur OMG, dhe tani është e theksuar edhe më shumë. 330 00:23:53,440 --> 00:23:57,870 Në mënyrë të ngjashme, le të thonë se ne të vërtetë duan të marrin një varg nga përdoruesit. 331 00:23:57,870 --> 00:23:59,580 Si mund ta bëjmë këtë? 332 00:23:59,580 --> 00:24:01,610 Para se, si nuk kemi marrë një int? 333 00:24:01,610 --> 00:24:08,040 Ne i thamë GetInt, apo jo? Por kjo nuk është int, kështu që le të getString. 334 00:24:11,780 --> 00:24:17,770 Le të bëjë gjatësi string. Këtu nuk kemi hyrë në një të shpejtë të veçantë. 335 00:24:17,770 --> 00:24:19,940 Kështu që unë nuk e di. 336 00:24:19,940 --> 00:24:23,820 Unë jam duke shkuar për të vënë emrin tim në këtu dhe kështu, atëherë unë mund të bëjë një nga ato gjëra 337 00:24:23,820 --> 00:24:29,600 ku unë të caktojë një fjalë për çdo letër apo diçka të tillë. Cool. 338 00:24:29,600 --> 00:24:31,900 Pra, kjo është gjatësia string. 339 00:24:33,000 --> 00:24:34,640 Pra, ne jemi kthyer Cezarit. 340 00:24:34,640 --> 00:24:38,620 Ne kemi një disa mjete për mënyrën se si ne iterate mbi një varg, 341 00:24:38,620 --> 00:24:41,250 si ne qasje çdo element individual. 342 00:24:41,250 --> 00:24:44,720 Kështu që tani ne mund të merrni përsëri në programin e. 343 00:24:44,720 --> 00:24:48,650 Siç e kam përmendur më parë, në tabelën ASCII, shoku më i mirë, 344 00:24:48,650 --> 00:24:52,300 ju do të jeni për të parë numrat që janë të lidhur me çdo letër. 345 00:24:52,300 --> 00:24:55,900 Kështu që këtu thonë PLAINTEXT ynë është që unë jam i trullosur! 346 00:24:55,900 --> 00:25:01,090 Pastaj secili prej këtyre personazheve do të ketë një numër dhe vlerë ASCII lidhur me të, 347 00:25:01,090 --> 00:25:04,710 edhe apostrof, madje edhe hapësirë, edhe pikëçuditëse, 348 00:25:04,710 --> 00:25:06,600 kështu që ju do të dëshironi që të mbani në mend. 349 00:25:06,600 --> 00:25:12,360 Kështu thonë kyç tonë që përdoruesi përfshirë në argumentin e tyre të linjës së komandës është 6. 350 00:25:12,360 --> 00:25:17,770 Që do të thotë për të letrës pare, i cili është I, e cila është e përfaqësuar nga 73, 351 00:25:17,770 --> 00:25:25,610 ju duam të kthehen te tyre çfarëdo letër është përfaqësuara nga vlerën ASCII e 73 + 6. 352 00:25:25,610 --> 00:25:29,020 Në këtë rast që do të jetë 79. 353 00:25:30,840 --> 00:25:35,040 Tani ne duam të shkojnë në karakter tjetër. 354 00:25:35,040 --> 00:25:40,960 Pra ardhshme në indeksin e 1 plaintext do të jetë apostrof. 355 00:25:40,960 --> 00:25:46,780 Por mos harroni ne vetëm duam të shifroj letra. 356 00:25:46,780 --> 00:25:50,040 Pra, ne duam të sigurohemi që apostrof në fakt qëndron e njëjtë, 357 00:25:50,040 --> 00:25:54,310 se ne nuk do të ndryshojë nga 39 për çdo gjë që është 45. 358 00:25:54,310 --> 00:25:57,150 Ne duam që të mbani atë si një apostrof. 359 00:25:57,150 --> 00:26:00,780 Pra, ne duam të kujtojmë vetëm shifroj letra 360 00:26:00,780 --> 00:26:04,560 sepse ne duam të gjitha simbolet e tjera të mbeten të pandryshuara në programin tonë. 361 00:26:04,560 --> 00:26:07,130 Një tjetër gjë që ne duam është që të ruajnë kapitalizimit. 362 00:26:07,130 --> 00:26:10,250 Pra, kur ju keni një letër të uppercase, ajo duhet të qëndrojë si një uppercase. 363 00:26:10,250 --> 00:26:12,830 Lowercases duhet të qëndrojnë si Fjala. 364 00:26:13,620 --> 00:26:19,480 Kështu që disa funksione të dobishme të jetë në gjendje të merren me shkronja vetëm enciphering 365 00:26:19,480 --> 00:26:22,380 dhe për të mbajtur ruajtjen e kapitalizimit të gjërave 366 00:26:22,380 --> 00:26:25,130 është funksionet isalpha, isupper, islower. 367 00:26:25,130 --> 00:26:29,270 Dhe kështu këto janë funksione që ju kthehen një vlerë Boolean. 368 00:26:29,270 --> 00:26:34,180 Në thelb, e vërtetë apo e rreme. A është kjo një uppercase? Është kjo alfanumerike? 369 00:26:34,180 --> 00:26:37,180 A është kjo një letër, në thelb. 370 00:26:37,180 --> 00:26:41,070 Pra, këtu janë 3 shembuj se si ju do të përdorni këtë funksion. 371 00:26:41,070 --> 00:26:47,060 Në thelb, ju mund të testuar nëse vlera kthehet tek ju nga ky funksion është e vërtetë apo e rreme 372 00:26:47,060 --> 00:26:49,400 bazuar në atë input. 373 00:26:49,400 --> 00:26:54,880 Ose të bëjë diçka nuk shifroj ose Shifrës atë apo të sigurt se kjo është uppercase, etj 374 00:26:54,880 --> 00:27:01,080 [Student] A mund të shpjegojë vetëm ata pak më shumë dhe si ti përdorin ato? Po >>, për sigurt. 375 00:27:01,080 --> 00:27:08,470 Pra, nëse ne shikojmë prapa, këtu kemi një kapital unë, apo jo? 376 00:27:08,470 --> 00:27:14,550 Kështu që ne e dimë se kam shkon o sepse unë + 6 është O. 377 00:27:14,550 --> 00:27:18,740 Por ne duam të sigurohemi se kjo o do të jetë një O. kapitale 378 00:27:18,740 --> 00:27:22,940 Pra, në thelb, kjo është lloj i do të ndryshojë kontributin tonë. 379 00:27:22,940 --> 00:27:26,870 Pra, nëse kjo është uppercase ose nuk do lloj të ndryshojë mënyrën se si të merremi me të. 380 00:27:26,870 --> 00:27:32,360 Pra, atëherë në qoftë se ne përdorim funksionin isupper në këtë indeks të veçantë, 381 00:27:32,360 --> 00:27:36,480 kështu isupper ("I"), që kthehet për ne e vërtetë, kështu që ne e dimë se kjo është e lartë. 382 00:27:36,480 --> 00:27:40,360 Pra, atëherë në bazë të kësaj, më vonë ne do të shkojnë në një formulë 383 00:27:40,360 --> 00:27:42,750 se ju do të jeni duke përdorur për të zhvendosur gjërat në Cezarit, 384 00:27:42,750 --> 00:27:46,560 kështu atëherë në thelb, nuk do të jetë një formulë pak të ndryshme në qoftë se është uppercase 385 00:27:46,560 --> 00:27:50,670 në krahasim me Fjala. Kuptim? 386 00:27:51,020 --> 00:27:52,760 Po. Nuk shqetësohet. 387 00:27:54,900 --> 00:27:58,990 Kam folur pak për të shtuar në një letër të 6, e cila nuk ka fare kuptim 388 00:27:58,990 --> 00:28:05,500 përveç kur ne lloj kuptojmë se këto karaktere 389 00:28:05,500 --> 00:28:08,920 janë lloj i këmbyeshëm me integers. 390 00:28:08,920 --> 00:28:11,250 Çfarë bëjmë ne është që ne të përdorim lloj i hedh nënkuptuar. 391 00:28:11,250 --> 00:28:18,100 Ne do të shkojnë në hedh pak më vonë ku ju merrni një vlerë dhe ju kthejnë atë në një lloj të ndryshme 392 00:28:18,100 --> 00:28:20,440 se ajo fillimisht ishte. 393 00:28:20,440 --> 00:28:25,910 Por me këtë pset ne do të jetë në gjendje të përdorin lloj interchangeably shkronja 394 00:28:25,910 --> 00:28:30,880 dhe përkatëse të tyre vlera integer. 395 00:28:30,880 --> 00:28:35,140 Pra, nëse ju thjesht mbështjellin me një karakter të vetëm kuotat e vetme, 396 00:28:35,140 --> 00:28:40,390 atëherë ju do të jetë në gjendje për të punuar me atë me integers, që kanë të bëjnë me atë si një numër të plotë. 397 00:28:40,390 --> 00:28:48,040 Pra C kapitalit lidhet me 67. F vogla lidhet me 102. 398 00:28:48,040 --> 00:28:51,480 Përsëri, në qoftë se ju doni të dini se këto vlera, shikoni në tryezën tuaj ASCII. 399 00:28:51,480 --> 00:28:56,160 Pra, le të shkojë në disa shembuj se si ju mund të jetë në gjendje të zbres dhe të shtoni, 400 00:28:56,160 --> 00:29:03,130 se si ju mund të vërtetë të vërtetë të punojnë me këto karaktere, përdorin ato interchangeably. 401 00:29:03,870 --> 00:29:11,350 Unë them se ASCIIMath do të llogaritur shtimin e një karakter në një numër të plotë 402 00:29:11,350 --> 00:29:17,590 dhe pastaj tregon karakterin rezultate si dhe vlera rezultate ASCII. 403 00:29:17,590 --> 00:29:22,290 Dhe kështu këtu unë jam duke thënë se - we'll marrëveshje me këtë pjesë më vonë - 404 00:29:22,290 --> 00:29:29,100 por në thelb, unë jam duke thënë se përdoruesit duhet të them ASCIIMath drejtuar së bashku me një çelës, 405 00:29:29,100 --> 00:29:30,880 dhe unë jam duke thënë se kjo kyç do të jetë numri 406 00:29:30,880 --> 00:29:34,600 me të cilat ne do të mund të shtoni këtë karakter. 407 00:29:34,600 --> 00:29:38,560 Kështu që këtu vëreni se pasi që unë jam duke kërkuar një çelës, 408 00:29:38,560 --> 00:29:40,590 pasi që unë jam duke kërkuar që ata janë duke i dhënë mua 1 gjë, 409 00:29:40,590 --> 00:29:45,600 Unë vetëm dua të pranojë. / Asciimath dhe një çelës. 410 00:29:45,600 --> 00:29:49,330 Kështu që unë jam duke shkuar për të kërkuar që argc është e barabartë me 2. 411 00:29:49,330 --> 00:29:54,360 Nëse nuk është, atëherë unë jam duke shkuar për t'u kthyer 1 dhe programi do të dalë. 412 00:29:55,070 --> 00:29:58,540 Kështu që unë jam duke thënë se çelësi nuk do të jetë i pari command line argument, 413 00:29:58,540 --> 00:30:05,080 ajo do të jetë e dyta, dhe siç e shihni këtu, 414 00:30:05,080 --> 00:30:11,790 Unë jam duke shkuar për ta kthyer atë në një numër të plotë. 415 00:30:15,740 --> 00:30:19,230 Atëherë unë jam duke shkuar për të vendosur një karakter të jenë r. 416 00:30:19,230 --> 00:30:23,970 Vini re se lloji i chr ndryshueshme në fakt është një numër të plotë. 417 00:30:23,970 --> 00:30:30,480 Mënyra se unë jam në gjendje të përdorin r si një numër të plotë është duke encasing atë me këto citate të vetme. 418 00:30:33,850 --> 00:30:40,560 Pra, përsëri në deklaratën tonë printf ku ne kemi një placeholder për një karakter 419 00:30:40,560 --> 00:30:43,590 dhe pastaj një placeholder për një numër të plotë, 420 00:30:43,590 --> 00:30:49,450 karakter është përfaqësuara nga chr, dhe integer është çelësi. 421 00:30:49,450 --> 00:30:54,320 Dhe kështu atëherë ne jemi duke shkuar për në rezultat shtoni 2 së bashku. 422 00:30:54,320 --> 00:30:58,420 Pra, ne jemi duke shkuar për të shtuar r + çfarëdo kryesore është, 423 00:30:58,420 --> 00:31:03,520 dhe pastaj ne jemi duke shkuar për të shtypur rezultat i kësaj. 424 00:31:06,210 --> 00:31:14,220 Pra, le të bëjë asciimath. Është e deri më sot, kështu që le të vetëm të drejtuar asciimath. 425 00:31:14,220 --> 00:31:18,290 Oh, por shikoni, kjo nuk ka të bëjë asgjë, sepse ne fakt nuk jepte një çelës. 426 00:31:18,290 --> 00:31:23,850 Pra, kur ai sapo u kthye 1, funksioni ynë kryesor, ajo vetëm u kthye prapa ke ne. 427 00:31:23,850 --> 00:31:29,250 Pra, atëherë le të kalojë në një kyç. Dikush të më jepni një numër. >> [Student] 4. 428 00:31:29,250 --> 00:31:30,920 4. Rregull. 429 00:31:30,920 --> 00:31:39,280 Pra r rritur me 4 do të na japin V, e cila korrespondon me vlerën ASCII e 118. 430 00:31:39,280 --> 00:31:43,880 Kështu, pra, kjo lloj kuptim se - 431 00:31:43,880 --> 00:31:51,250 Në fakt, mund të ju pyes, çfarë mendoni se vlera ASCII e r është në qoftë se r + 4 është 118? 432 00:31:53,070 --> 00:31:55,470 Atëherë, vërtet, r është 114. 433 00:31:55,470 --> 00:32:03,010 Pra, nëse ju shikoni në tabelën ASCII, atëherë, pa dyshim, ju do të shihni se r është e përfaqësuar nga 114. 434 00:32:03,010 --> 00:32:08,610 Pra, tani që ne e dimë që ne mund të shtoni integers në karaktere, kjo duket shumë e thjeshtë. 435 00:32:08,610 --> 00:32:12,740 Ne jemi vetëm do të iterate mbi një varg ashtu siç e pamë në një shembull para. 436 00:32:12,740 --> 00:32:17,170 Ne do të kontrolloni nëse kjo është një letër. 437 00:32:17,170 --> 00:32:20,420 Nëse është, atëherë ne do të zhvendoset atë me çfarëdo kyç është. 438 00:32:20,420 --> 00:32:23,650 Shumë e thjeshtë, përveç kur ju të merrni për të si kjo, 439 00:32:23,650 --> 00:32:32,140 ju shihni se z, përfaqësuar nga 122, atëherë do të ju jap një karakter të ndryshëm. 440 00:32:32,140 --> 00:32:37,770 Ne të vërtetë duan të qëndrojnë brenda alfabetit tonë, apo jo? 441 00:32:37,770 --> 00:32:43,180 Pra, ne duhet të kuptoj se disa mënyra të lloj ambalazhi rreth. 442 00:32:43,180 --> 00:32:47,190 Kur të keni arritur zed dhe ju doni të rritet me një numër të caktuar, 443 00:32:47,190 --> 00:32:51,230 ju nuk doni të shkoni në pjesën përtej ASCII alfabetit; 444 00:32:51,230 --> 00:32:54,140 ju doni të përfundojë prapa gjatë gjithë rrugës për A. 445 00:32:54,140 --> 00:32:58,550 Por mbani në mend ju jeni ende ruajtjen e rastit. 446 00:32:58,550 --> 00:33:00,980 Pra, duke e ditur se letra nuk mund të bëhet simbole 447 00:33:00,980 --> 00:33:05,290 ashtu si simbolet nuk do të ndryshuar si. 448 00:33:05,290 --> 00:33:08,170 Në pset fundit ju patjetër nuk ka nevojë për të, 449 00:33:08,170 --> 00:33:14,310 por një alternativë ishte për të zbatuar pset tuaj babëzitur duke përdorur funksionin modulus. 450 00:33:14,310 --> 00:33:17,230 Por tani ne jemi në të vërtetë do të duhet të përdorin modulus, 451 00:33:17,230 --> 00:33:19,900 kështu që le të shkojnë vetëm mbi këtë pak pak. 452 00:33:19,900 --> 00:33:26,920 Në thelb, kur ju keni x y modulo, që ju jep pjesën e mbetur të ndarë nga x y. 453 00:33:26,920 --> 00:33:30,930 Këtu janë disa shembuj këtu. Ne kemi 27% 15. 454 00:33:30,930 --> 00:33:36,200 Në thelb, kur ju zbres 15 nga 27 si shumë herë të jetë e mundur pa u negative 455 00:33:36,200 --> 00:33:39,060 atëherë ju merrni 12 majtë gjatë. 456 00:33:39,060 --> 00:33:44,650 Pra, kjo është lloj i si në kontekstin matematikë, por si mund të përdorni të vërtetë kjo? 457 00:33:44,650 --> 00:33:47,100 Ajo do të jetë e dobishme për wrapover tonë. 458 00:33:47,100 --> 00:33:55,420 Për këtë, le të them vetëm unë të gjithë ju kërkuar për të ndarë në 3 grupe. 459 00:33:55,420 --> 00:33:58,010 Ndonjëherë ju bëni këtë në grupe dhe diçka si kjo. 460 00:33:58,010 --> 00:34:01,320 Thuaj Unë i thashë, "Mirë, unë dua që ju të gjithë do të ndahet në 3." 461 00:34:01,320 --> 00:34:04,240 Si mund ta bëni këtë? 462 00:34:04,240 --> 00:34:06,810 [Përgjigja e padëgjueshme Student] Po, pikërisht. Count off. Rregull. 463 00:34:06,810 --> 00:34:10,260 Le të bëjë në fakt atë. A ju doni të filloni? 464 00:34:10,260 --> 00:34:13,810 [Studentët jashtë numërimit] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Por mos harroni ... >> [Student] Oh, sorry. 466 00:34:16,620 --> 00:34:18,730 Kjo është një pikë të vërtetë të mirë. 467 00:34:18,730 --> 00:34:24,130 Ju tha 4, por ne të vërtetë duan që ju të thoni 1, sepse ne duam vetëm 3 grupe. 468 00:34:24,130 --> 00:34:30,159 Pra atëherë, si - Jo, kjo është një shembull të vërtetë të mirë, sepse atëherë si mund të ju them 1? 469 00:34:30,159 --> 00:34:33,370 Çfarë është marrëdhënia në mes 4 dhe 1? 470 00:34:33,370 --> 00:34:36,760 E pra, 4 mod 3 është 1. 471 00:34:36,760 --> 00:34:41,460 Pra, nëse ju vazhdoni, ju do të jetë 2. 472 00:34:41,460 --> 00:34:44,540 Pra, ne kemi 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Përsëri, ju jeni në të vërtetë personi i 5-të. Si mund të dini të them 2 në vend të 5? 474 00:34:49,420 --> 00:34:53,760 Ju thoni mod 5 3 është 2. 475 00:34:53,760 --> 00:34:59,100 Unë dua të shoh se sa grupet e 3 janë lënë pushim, pastaj të cilën mënyrë jam I. 476 00:34:59,100 --> 00:35:02,860 Dhe kështu, atëherë në qoftë se ne kemi vazhduar së bashku në dhomë të tërë, 477 00:35:02,860 --> 00:35:07,760 atëherë ne do të shohim se ne jemi gjithmonë në fakt zbatuar funksionin mod për veten 478 00:35:07,760 --> 00:35:09,990 të lloj numërimin off. 479 00:35:09,990 --> 00:35:14,490 Kjo është një lloj shumë të prekshme shembull se si ju mund të përdorni modulo 480 00:35:14,490 --> 00:35:17,960 sepse unë jam i sigurt se shumica prej nesh kanë kaluar nëpër atë proces ndoshta 481 00:35:17,960 --> 00:35:19,630 ku ne kemi pasur për të numëruar off. 482 00:35:19,630 --> 00:35:21,840 Çdo pyetje në modulo? 483 00:35:21,840 --> 00:35:25,360 Ajo do të jetë shumë e rëndësishme për të kuptuar konceptet e kësaj, 484 00:35:25,360 --> 00:35:28,640 kështu që unë dua të bëni të sigurtë që ju djema kuptoni. 485 00:35:28,640 --> 00:35:34,660 [Student] Nëse nuk ka mbetur, e bën atë të ju jap numrin aktual? 486 00:35:34,660 --> 00:35:40,430 Nëse një nga 3 e parë të tyre e kishte bërë atë, ai do të u kemi dhënë atyre atë që ata në fakt ishin, 487 00:35:40,430 --> 00:35:43,310 apo do të kemi dhënë atyre [padëgjueshme] >> Kjo është një pyetje e mirë. 488 00:35:43,310 --> 00:35:48,750 Kur nuk ka mbetur për modulo - kështu thonë se ju keni 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 që në fakt ju jep mbrapa 0. 490 00:35:53,670 --> 00:35:57,290 Ne do të flasim për këtë pak më vonë. 491 00:35:58,810 --> 00:36:07,720 Oh yeah, për shembull, personi 3 - 3 mod është në të vërtetë 3 0, por ajo tha se 3. 492 00:36:07,720 --> 00:36:14,900 Pra, kjo është lloj i si një kapur të brendshëm, për shembull, 493 00:36:14,900 --> 00:36:17,620 si rregull, në qoftë se mod është 0 atëherë unë jam do të jetë personi i 3. 494 00:36:17,620 --> 00:36:22,740 Por ne do të merrni në lloj si ne mund të duan të merren me atë që është 0 vonë. 495 00:36:22,740 --> 00:36:32,750 Deri tani ne kemi një mënyrë disi të Mapping zed në letër e duhur. 496 00:36:32,750 --> 00:36:34,920 Deri tani ne kemi kaluar nëpër këto shembuj, 497 00:36:34,920 --> 00:36:37,880 ne lloj të shohim se si Cezari mund të punojnë. 498 00:36:37,880 --> 00:36:42,640 Ju shikoni 2 alfabete dhe pastaj ju shohin ato zhvendosur. 499 00:36:42,640 --> 00:36:44,430 Pra, le të përpiqemi dhe të shprehë se në aspektin e formulës. 500 00:36:44,430 --> 00:36:46,940 Kjo formulë është dhënë në fakt për ju në spekulim, 501 00:36:46,940 --> 00:36:52,070 por lloj le të shikoni nëpër atë çdo ndryshore të thotë. 502 00:36:52,070 --> 00:36:55,000 Rezultati ynë përfundimtar do të jetë ciphertext. 503 00:36:55,000 --> 00:36:58,300 Pra, kjo thotë se karakteri ith e ciphertext 504 00:36:58,300 --> 00:37:02,500 do të korrespondojnë me karakter ith të plaintext. 505 00:37:02,500 --> 00:37:08,130 Kjo ka kuptim, sepse ne duam që gjithmonë të rreshtuar këto gjëra deri. 506 00:37:08,130 --> 00:37:13,480 Pra, kjo do të jetë karakteri ith e k plus ciphertext, e cila është çelësi jonë - 507 00:37:13,480 --> 00:37:17,230 që e bën kuptim - dhe pastaj ne kemi këtë mod 26. 508 00:37:17,230 --> 00:37:19,860 Mos harroni mbrapa kur ne kishim zed 509 00:37:19,860 --> 00:37:24,190 ne nuk doni të merrni në karakter, kështu që ne të kërkuar për të mod atë 510 00:37:24,190 --> 00:37:26,540 dhe lloji i mbyllur rreth alfabetit. 511 00:37:26,540 --> 00:37:33,430 Pas zed ju do të shkoni në a, b, c, d, deri sa ju mori me numrin e duhur. 512 00:37:33,430 --> 00:37:44,690 Kështu që ne e dimë se zed, qoftë + 6, do të na japë f sepse pas zed vjen a, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Pra, le të kujtojmë ne e dimë me siguri se zed + 6 do të na japë f. 514 00:37:52,530 --> 00:38:03,530 Në vlerat ASCII, z është 122 dhe f është 102. 515 00:38:03,530 --> 00:38:10,570 Pra, ne duhet të gjejmë një mënyrë për të bërë Cezarit formulën tonë të na japin 102 516 00:38:10,570 --> 00:38:13,590 pas marrjes në 122. 517 00:38:13,590 --> 00:38:19,550 Pra, nëse ne vetëm të zbatojë këtë formulë, ('z' + 6) 26%, që në të vërtetë ju jep 24 518 00:38:19,550 --> 00:38:25,980 sepse 122 + 6 është 128; 128% 26 ju jep 24 mbetur. 519 00:38:25,980 --> 00:38:29,140 Por kjo nuk ka të vërtetë do të thotë f. Kjo nuk është patjetër 102. 520 00:38:29,140 --> 00:38:33,590 Kjo nuk është edhe shkronja në alfabetin 6. 521 00:38:33,590 --> 00:38:41,550 Pra natyrisht, ne duhet të kemi disa mënyra të tweaking kjo pak pak. 522 00:38:42,970 --> 00:38:51,340 Në kushtet e alfabetit të rregullt, ne e dimë se z është letra 26 dhe f është 6. 523 00:38:51,340 --> 00:38:55,460 Por ne jemi në shkenca kompjuterike, kështu që ne jemi duke shkuar për indeksin në 0. 524 00:38:55,460 --> 00:39:00,690 Kështu, pra, në vend të z qenë numri 26, ne jemi duke shkuar për të thonë se është numri 25 525 00:39:00,690 --> 00:39:02,630 sepse një është 0. 526 00:39:02,630 --> 00:39:04,770 Pra, tani le të aplikojnë këtë formulë. 527 00:39:04,770 --> 00:39:11,710 Ne kemi përfaqësuar nga z 25 + 6, i cili ju jep 31. 528 00:39:11,710 --> 00:39:15,790 Dhe 31 mod 26 ju jep 5 si një tjetër. 529 00:39:15,790 --> 00:39:20,500 Kjo është e përsosur, sepse ne e dimë se f është letra 5 në alfabetin. 530 00:39:20,500 --> 00:39:26,400 Por ajo ende nuk është f, e drejtë? Kjo ende nuk është 102. 531 00:39:26,400 --> 00:39:32,730 Kështu, pra, për këtë pset, një sfidë do të jetë duke u përpjekur për të gjetur marrëdhënie 532 00:39:32,730 --> 00:39:36,910 mes konvertimin në mes të këtyre vlerave ASCII dhe indeksi alfabetik. 533 00:39:36,910 --> 00:39:40,280 Në thelb, ajo që ju do të dëshironi të bëni, ju doni të filloni me vlerat ASCII, 534 00:39:40,280 --> 00:39:45,390 por pastaj ju doni të përkthyer që në një farë mënyre një indeks alfabetik 535 00:39:45,390 --> 00:39:52,610 pastaj llogarisin atë letër ai duhet të jetë - në thelb, ajo që indeksi alfabetik i saj është 536 00:39:52,610 --> 00:39:57,660 të karakterit shifër - pastaj të përkthejnë atë përsëri në vlerat ASCII. 537 00:39:57,660 --> 00:40:04,870 Pra, nëse ju rrëmbej nga tavolina juaj ASCII, atëherë provoni dhe për të gjetur marrëdhëniet midis, të themi, 102 dhe 5 538 00:40:04,870 --> 00:40:10,440 ose 122 dhe 25. 539 00:40:12,140 --> 00:40:15,690 Ne kemi marrë çelësin tonë nga argumentet e linjës së komandës, ne keni marrë PLAINTEXT, 540 00:40:15,690 --> 00:40:17,520 ne kemi enciphered atë. 541 00:40:17,520 --> 00:40:19,820 Tani të gjithë ne kemi lënë të bëni është të shtypura atë. 542 00:40:19,820 --> 00:40:22,040 Ne mund ta bëjë këtë një çift të mënyra të ndryshme. 543 00:40:22,040 --> 00:40:24,570 Ajo që ne mund të bëjmë në fakt është shkruar si të shkojmë së bashku. 544 00:40:24,570 --> 00:40:28,250 Si ne iterate mbi karakteret në varg, 545 00:40:28,250 --> 00:40:31,660 ne mund thjesht vetëm të shtypura të drejtë atëherë kur ne të llogaritur atë. 546 00:40:31,660 --> 00:40:36,030 Përndryshe, ju mund të ruani atë në një grup dhe të ketë një rrjet të karaktereve të 547 00:40:36,030 --> 00:40:39,280 dhe në fund iterate mbi këtë grup të tërë dhe të shtypura it out. 548 00:40:39,280 --> 00:40:40,980 Pra, ju keni disa opcione për këtë. 549 00:40:40,980 --> 00:40:47,280 Dhe mos harroni se% c do të jetë placeholder për shtypjen e një karakter. 550 00:40:47,280 --> 00:40:50,420 Kështu që nuk kemi Cezarin, dhe tani ne shkojmë për të Vigenere, 551 00:40:50,420 --> 00:40:57,580 e cila është shumë e ngjashme me Cezarit, por vetëm pak më komplekse. 552 00:40:57,580 --> 00:41:03,310 Pra, në thelb me Vigenere është që ju do të jeni të kaluar në një fjalen. 553 00:41:03,310 --> 00:41:06,510 Pra, në vend të një numri, ju jeni do të ketë një varg, 554 00:41:06,510 --> 00:41:09,200 dhe kështu që do të veprojë si fjalen tuaj. 555 00:41:09,200 --> 00:41:14,440 Pastaj, si zakonisht, ju jeni do të merrni një të shpejtë për një varg nga përdoruesit 556 00:41:14,440 --> 00:41:19,050 dhe pastaj shifroj atë dhe pastaj për t'u dhënë atyre shpinën ciphertext. 557 00:41:19,050 --> 00:41:24,650 Pra, si unë, tha, se është shumë e ngjashme me Cezarit, përveç në vend të zhvendosur nga një numër të caktuar, 558 00:41:24,650 --> 00:41:30,620 Numri është në të vërtetë do të ndryshojë çdo herë që prej karakterit të karakterit. 559 00:41:30,620 --> 00:41:34,890 Për të përfaqësuar se numri aktual të zhvendoset, ai është përfaqësuar nga letrat tastierë. 560 00:41:34,890 --> 00:41:43,150 Pra, nëse ju shkruani në një zhvendosje e një, për shembull, atëherë kjo do të korrespondojnë me një ndryshim prej 0. 561 00:41:43,150 --> 00:41:45,900 Pra, kjo është përsëri kthehet në indeksin alfabetik. 562 00:41:45,900 --> 00:41:49,100 Çfarë mund të jetë e dobishme në qoftë se ju jeni duke parë që ne jemi në të vërtetë kanë të bëjnë me vlerat ASCII 563 00:41:49,100 --> 00:41:51,790 si dhe letrave, si dhe indeksi alfabetik, 564 00:41:51,790 --> 00:41:58,020 ndoshta gjeni apo bëni vetë tabelën ASCII tuaj që tregon indeksin alfabetik të 0 deri 25, 565 00:41:58,020 --> 00:42:03,750 a me z, dhe vlerat ASCII mënyrë që ju mund të shihni lloj marrëdhënie 566 00:42:03,750 --> 00:42:07,020 dhe skemë jashtë dhe të përpiqet dhe të gjeni disa modele. 567 00:42:07,020 --> 00:42:11,010 Në mënyrë të ngjashme, në qoftë se keni qenë të zhvendosur në shkallë të caktuar nga f - 568 00:42:11,010 --> 00:42:21,110 dhe kjo është ose f vogla ose uppercase - atëherë kjo do të korrespondojnë me 5. 569 00:42:21,110 --> 00:42:24,180 Jemi të mirë deri më tani? 570 00:42:25,770 --> 00:42:30,050 Formula për Vigenere është pak më ndryshe. 571 00:42:30,050 --> 00:42:32,960 Në thelb, ju shihni se ajo është vetëm si Cezarit, 572 00:42:32,960 --> 00:42:37,390 përveç në vend të vetëm k kemi k indeksi j. 573 00:42:37,390 --> 00:42:44,810 Vini re se ne nuk jeni duke përdorur, sepse në thelb i, gjatësinë e fjalen 574 00:42:44,810 --> 00:42:49,850 nuk është domosdoshmërisht gjatësinë e ciphertext tonë. 575 00:42:49,850 --> 00:42:56,130 Kjo do të jetë një pak më të qarta kur ne shohim një shembull që unë kam një grimë më vonë. 576 00:42:56,130 --> 00:43:03,160 Në thelb, në qoftë se ju drejtuar programin tuaj me një fjalen e ohai, 577 00:43:03,160 --> 00:43:08,560 atëherë kjo do të thotë se çdo herë, ohai do të jetë zhvendosja tuaj. 578 00:43:08,560 --> 00:43:11,060 Pra, në varësi se çfarë pozicioni ju jeni në fjalen tuaj, 579 00:43:11,060 --> 00:43:15,800 ju jeni do të zhvendoset caktuar karakterin tuaj ciphertext nga ajo sasi. 580 00:43:15,800 --> 00:43:19,630 Përsëri, ashtu si Cezari, ne duam të sigurohemi që ne të ruajmë kapitalizimin e gjërave 581 00:43:19,630 --> 00:43:22,900 dhe ne vetëm shkronja shifroj jo, karaktere apo hapësirat. 582 00:43:22,900 --> 00:43:26,330 Pra, të shohim pas Cezarit në funksionet që ju mund të keni përdorur, 583 00:43:26,330 --> 00:43:32,570 mënyrë që ju të vendosur se si të zhvendoset gjëra, dhe të aplikojnë atë në programin tuaj këtu. 584 00:43:32,570 --> 00:43:35,260 Pra, le të ndajë këtë. 585 00:43:35,260 --> 00:43:39,680 Ne kemi një PLAINTEXT që ne kemi marrë nga përdoruesit nga getString 586 00:43:39,680 --> 00:43:44,090 duke thënë se kjo ... është CS50! 587 00:43:44,090 --> 00:43:47,090 Pastaj ne kemi një fjalen e ohai. 588 00:43:47,090 --> 00:43:50,930 E para 4 karaktere janë mjaft të thjeshta. 589 00:43:50,930 --> 00:43:55,580 Ne e dimë se T do të jetë zhvendosur nga o, 590 00:43:55,580 --> 00:44:01,990 atëherë h është do të zhvendosur nga H, I është do të zhvendosur nga një. 591 00:44:01,990 --> 00:44:04,610 Këtu ju shihni se a përfaqëson 0, 592 00:44:04,610 --> 00:44:11,940 kështu atëherë vlera përfundimtar është në fakt vetëm letër njëjtë si më parë. 593 00:44:11,940 --> 00:44:15,250 Pastaj s është zhvendosur nga unë. 594 00:44:15,250 --> 00:44:19,370 Por pastaj ju keni këto periudha këtu. 595 00:44:19,370 --> 00:44:25,960 Ne nuk duam të shifroj atë, kështu që atëherë ne nuk do të ndryshojë atë nga çdo gjë 596 00:44:25,960 --> 00:44:31,280 dhe vetëm të shtypura nga periudha pandryshuar. 597 00:44:31,280 --> 00:44:38,020 [Student] Unë nuk e kuptoj se si ju e dini se kjo është zhvendosur nga - Ku ka me ju - >> Oh, sorry. 598 00:44:38,020 --> 00:44:41,620 Në krye këtu ju shihni se command line argumenti ohai këtu, 599 00:44:41,620 --> 00:44:43,740 që do të jetë fjalen. 600 00:44:43,740 --> 00:44:49,550 Dhe kështu në thelb, ju jeni të çiklizmit mbi personazhet në fjalë. 601 00:44:49,550 --> 00:44:52,020 [Student] Pra, o do të jetë i ndryshueshëm njëjtë - 602 00:44:52,020 --> 00:44:56,260 Kështu o korrespondon me një numër të caktuar në alfabetin. 603 00:44:56,260 --> 00:44:58,400 [Student] E drejta. Por ku keni marrë pjesë CS50 nga? 604 00:44:58,400 --> 00:45:02,540 Oh. Kjo është në getString ku ju jeni si, "Më jepni një varg të kodifikuar". 605 00:45:02,540 --> 00:45:07,510 [Student] Ata do të ju japin këtë argument për të zhvendosur nga 606 00:45:07,510 --> 00:45:09,380 dhe pastaj ju do të pyesni për vargun tuaj të parë. Po >>. 607 00:45:09,380 --> 00:45:12,440 Kështu që kur ata të drejtuar programin, ata do të përfshijë fjalen 608 00:45:12,440 --> 00:45:14,740 Në linjë argumentet e tyre, kur ata të drejtuar komandës atë. 609 00:45:14,740 --> 00:45:19,740 Pastaj një herë ju keni kontrolluar se ata kanë dhënë në të vërtetë ju 1 dhe jo më shumë, jo më pak, 610 00:45:19,740 --> 00:45:23,750 atëherë ju do të jeni për të nxitur ata për një varg, thonë: "Më jep mua një varg". 611 00:45:23,750 --> 00:45:27,630 Pra, kjo është ajo ku në këtë rast ata kanë dhënë këtë ... është CS50! 612 00:45:27,630 --> 00:45:32,090 Pra, atëherë ju jeni do të përdorin atë dhe të përdorni ohai dhe iterate gjatë. 613 00:45:32,090 --> 00:45:38,200 Vini re se këtu kemi anashkaluar encrypting periudhat, 614 00:45:38,200 --> 00:45:51,660 por në aspektin e pozitës sonë për ohai, një tjetër kemi përdorur o. 615 00:45:51,660 --> 00:45:54,990 Në këtë rast kjo është pak e vështirë për të parë, sepse kjo është 4, 616 00:45:54,990 --> 00:45:57,710 kështu që le të vazhdojë një grimë. Vetëm rrinë me mua këtu. 617 00:45:57,710 --> 00:46:02,960 Pastaj kemi dhe s i, të cilat janë përkthyer më pas nga o dhe h respektivisht. 618 00:46:02,960 --> 00:46:09,370 Pastaj ne kemi një hapësirë, dhe kështu atëherë ne e dimë se ne nuk jemi duke shkuar për të shifroj hapësirat. 619 00:46:09,370 --> 00:46:18,930 Por njoftim se në vend që të shkojnë për një vend në këtë të drejtë këtu, 620 00:46:18,930 --> 00:46:28,330 ne jemi encrypting nga një - Unë nuk e di nëse ju mund të shihni se - të drejtë këtu. 621 00:46:28,330 --> 00:46:33,710 Pra, kjo nuk është si ju paracaktuar të vërtetë, të themi, o shkon këtu, h shkon këtu, 622 00:46:33,710 --> 00:46:39,200 një shkon këtu, I shkon këtu, o, h, një, I, o, h, një, I. Ju nuk e bëjmë këtë. 623 00:46:39,200 --> 00:46:43,760 Ju vetëm ndryshim pozitën tuaj në fjalen 624 00:46:43,760 --> 00:46:51,020 kur ju e dini se ju jeni në të vërtetë do të encrypting një letër aktuale. 625 00:46:51,020 --> 00:46:53,920 Bën që të lloj kuptim? 626 00:46:53,920 --> 00:46:55,800 Rregull. 627 00:46:56,490 --> 00:46:58,500 Pra, vetëm disa lajmërimeve. 628 00:46:58,500 --> 00:47:03,760 Ju dëshironi të bëni të sigurtë që ju vetëm të përparuar në letër tjetër në fjalen tuaj 629 00:47:03,760 --> 00:47:06,390 nëse karakter në plaintext tuaj është një letër. 630 00:47:06,390 --> 00:47:09,120 Pra, thonë se ne jemi në o. 631 00:47:09,120 --> 00:47:19,310 Vërejmë se karakteri tjetër, indeksi i të plaintext, është një numër, për shembull. 632 00:47:19,310 --> 00:47:31,630 Atëherë ne nuk do të përparojnë j, indeksi për fjalen tonë, derisa të arrijmë një tjetër letër. 633 00:47:31,630 --> 00:47:36,230 Përsëri, edhe ju doni të bëni të sigurtë që ju wraparound në fillim të fjalen 634 00:47:36,230 --> 00:47:37,770 kur ju jeni në fund të saj. 635 00:47:37,770 --> 00:47:42,030 Nëse ju shikoni këtu ne jemi në unë, një tjetër duhet të jetë o. 636 00:47:42,030 --> 00:47:47,690 Pra, ju doni të gjeni një mënyrë për të qenë në gjendje për wraparound në fillim të fjalen tuaj 637 00:47:47,690 --> 00:47:49,470 çdo herë që ju të arrini në fund. 638 00:47:49,470 --> 00:47:55,040 Dhe kështu përsëri, çfarë lloji i operatorit është i dobishëm në këtë rast për mbështjellës rreth? 639 00:47:56,630 --> 00:47:59,840 Ashtu si në të numërimit off shembull. 640 00:47:59,840 --> 00:48:03,710 [Student] shenjë qind. >> Yeah, shenja për qind, e cila është modulo. 641 00:48:03,710 --> 00:48:11,250 Pra modulo do të vijë në dobishëm këtu, kur ju doni të përfundojë mbi indeksin në ohai tuaj. 642 00:48:11,250 --> 00:48:17,700 Dhe vetëm një aluzion të shpejtë: Provoni të mendoni për mbështjellës mbi fjalen pak a shumë si jashtë numërimit, 643 00:48:17,700 --> 00:48:23,590 ku në qoftë se ka 3 grupe, personi i 4, 644 00:48:23,590 --> 00:48:30,610 numri i tyre që thanë ata ishte 4 mod 3, i cili ishte 1. 645 00:48:30,610 --> 00:48:32,880 Kështu që të përpiqet dhe të mendojnë për atë në këtë mënyrë. 646 00:48:34,770 --> 00:48:42,740 Si ju pa në formulën, kudo që ju keni Ci dhe pastaj pi por pastaj kj, 647 00:48:42,740 --> 00:48:44,700 ju doni të bëni të sigurtë që ju të mbani gjurmët e atyre. 648 00:48:44,700 --> 00:48:47,580 Ju nuk keni nevojë për të thirrur atë unë, ju nuk keni nevojë për të thirrur atë j, 649 00:48:47,580 --> 00:48:53,270 por ju doni të bëni të sigurtë që ju të mbani gjurmët e pozitës që ju jeni në në plaintext tuaj 650 00:48:53,270 --> 00:48:55,790 si dhe pozicionin që ju jeni në në fjalen tuaj 651 00:48:55,790 --> 00:48:59,840 sepse ato nuk janë domosdoshmërisht do të jetë e njëjtë. 652 00:48:59,840 --> 00:49:06,400 Jo vetëm që e bën fjalen - ajo mund të jetë një gjatësi krejtësisht të ndryshme se sa plaintext tuaj. 653 00:49:06,400 --> 00:49:09,140 Gjithashtu, PLAINTEXT tuaj, nuk janë numrat dhe karaktere, 654 00:49:09,140 --> 00:49:14,450 kështu që ajo nuk do të përkryer ndeshje së bashku. Po. 655 00:49:14,450 --> 00:49:19,280 [Student] A ka një funksion për të ndryshuar rast? 656 00:49:19,280 --> 00:49:24,530 Ju mund të ndryshojë një për një kryeqytet? Po >>, atje patjetër është. 657 00:49:24,530 --> 00:49:27,890 Ju mund të shikoni - Unë besoj se është toupper, të gjitha 1 fjalë. 658 00:49:30,650 --> 00:49:36,310 Por kur ju jeni duke u përpjekur për të shifrojë gjëra dhe ruajtur tekstin, 659 00:49:36,310 --> 00:49:39,350 është më mirë që të ketë në thelb raste të veçanta. 660 00:49:39,350 --> 00:49:42,040 Në qoftë se kjo është një uppercase, atëherë ju doni të zhvendoset nga kjo 661 00:49:42,040 --> 00:49:46,460 sepse në formulën tuaj, kur ju shikoni mbrapa se si ne duhet të lloj lëvizje 662 00:49:46,460 --> 00:49:50,900 këmbyeshme mes mënyrën ASCII të përfaqësojnë numrat 663 00:49:50,900 --> 00:49:55,020 dhe indeksi alfabetik aktuale, ne duam të sigurohemi 664 00:49:55,020 --> 00:50:01,850 atje do të jetë një lloj i modelit që ju jeni do të përdorin. 665 00:50:01,850 --> 00:50:04,580 Një shënim mbi modelin, në të vërtetë. 666 00:50:04,580 --> 00:50:07,250 Ju do të jeni patjetër të merret me numra. 667 00:50:07,250 --> 00:50:11,280 Mundohuni të mos përdorni numrat magjike, e cila është një shembull i stilit. 668 00:50:11,280 --> 00:50:18,470 Pra, thonë se ju doni për çdo ndryshim në kohë nga diçka si - 669 00:50:18,470 --> 00:50:22,400 Mirë, kështu që hint, një tjetër spoiler është kur ju do të jeni të zhvendosur diçka 670 00:50:22,400 --> 00:50:26,310 me një shumë të caktuar, nuk përpiqet për të përfaqësuar që nga një numër aktual 671 00:50:26,310 --> 00:50:32,810 por provoni dhe të shihni nëse ju mund të përdorni vlerën ASCII, e cila do lloj bëjë më shumë kuptim. 672 00:50:32,810 --> 00:50:35,470 Një tjetër shënim: Sepse ne jemi që kanë të bëjnë me formula, 673 00:50:35,470 --> 00:50:41,200 edhe pse TF juaj do të dinë se çfarë lloj model që ju mund të jeni duke përdorur, 674 00:50:41,200 --> 00:50:44,430 mirë në komente llojin tuaj të shpjegojnë logjikën, si, 675 00:50:44,430 --> 00:50:51,880 "Unë jam duke përdorur këtë model, sepse ..." dhe lloji i shpjegojnë modelin e përmbledhur në komentet tuaja. 676 00:50:54,090 --> 00:50:58,990 [Kjo ishte walkthrough 2] Nëse nuk ka ndonjë pyetje të tjera, atëherë unë vetëm do të qëndrojnë këtu për një pak. 677 00:50:58,990 --> 00:51:04,370 Good luck me pset tuaj 2: kripto dhe faleminderit për të ardhur. 678 00:51:06,070 --> 00:51:08,620 [Student] Ju faleminderit. Thanks >>. 679 00:51:09,220 --> 00:51:10,800 [Intro Media Gjinia]