1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Walkthrough - 2 Set Problem] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Harvard University] 3 00:00:05,170 --> 00:00:07,490 [Mae hyn yn CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Mae pob hawl. Helo, bawb, a chroeso i Walkthrough 2. 5 00:00:10,750 --> 00:00:14,330 Yn gyntaf, hoffwn eich llongyfarch am orffen pset 1. 6 00:00:14,330 --> 00:00:18,140 Rwy'n gwybod y gallai fod wedi bod ychydig yn anodd i rai ohonoch, 7 00:00:18,140 --> 00:00:20,460 gallai fod wedi bod yn eich rhaglen cyfrifiadur cyntaf eich bod wedi ysgrifennu, 8 00:00:20,460 --> 00:00:24,500 ond dim ond cofio bod ar ddiwedd y, pan fyddwch yn edrych yn ôl ar ddiwedd y semester, 9 00:00:24,500 --> 00:00:29,820 byddwch yn edrych ar pset 1 a byddwch yn dweud, "Hey, gallwn fod wedi gwneud hynny mewn 5 munud." 10 00:00:29,820 --> 00:00:35,700 Felly, adnabod ac yn ymddiried bod ar ddiwedd y byddwch yn bendant yn dod o hyd i pset 1 yn eithaf syml. 11 00:00:35,700 --> 00:00:40,640 Ond am nawr mae'n gamp enfawr, a llongyfarchiadau ar gyfer cael ei wneud. 12 00:00:40,640 --> 00:00:44,010 Nawr, hefyd nodyn sydyn cyn i ni fynd i mewn i'r cig y walkthrough. 13 00:00:44,010 --> 00:00:48,340 Fi jyst eisiau gwneud nodyn sydyn fy mod na fydd weithiau'n cael digon o amser 14 00:00:48,340 --> 00:00:52,500 yn ystod y walkthroughs i fynd drwy bob un ffordd o wneud y broblem a osodwyd 15 00:00:52,500 --> 00:00:56,140 ac yn hytrach dim ond efallai canolbwyntio ar 1 neu 2 fath o implementations, 16 00:00:56,140 --> 00:00:57,750 ffyrdd y gallech chi wneud hyn. 17 00:00:57,750 --> 00:01:01,970 Ond nid yw hynny'n dweud eich bod yn cael eu gwahardd rhag gwneud ei ffordd arall. 18 00:01:01,970 --> 00:01:05,980 Yn aml, fel gyda gwyddoniaeth gyfrifiadurol, sawl ffordd o wneud pethau, 19 00:01:05,980 --> 00:01:12,190 ac felly yn bendant mae croeso i chi ddefnyddio math gwahanol o ateb na efallai fy mod wedi cyflwyno. 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. Mae Adran o Gwestiynau - 1. Caesar - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 Mae pob hawl. Felly, problem gosod 2: Crypto yn un llawn hwyl. 23 00:01:20,650 --> 00:01:24,500 Unwaith eto, gyda phob pset byddwch yn dechrau gydag adran o gwestiynau 24 00:01:24,500 --> 00:01:29,600 mae hynny'n mynd i gael eu cynnal yn eich adrannau gyda'ch cyd-addysgu a bennwyd. 25 00:01:29,600 --> 00:01:31,670 Nid ydym yn mynd i fynd drwy'r rhain dros y walkthrough, 26 00:01:31,670 --> 00:01:35,100 ond maent yn bendant yn eich helpu i gwblhau'r pset. 27 00:01:35,100 --> 00:01:38,100 Felly, y rhan gyntaf o'r broblem a osodwyd yn Cesar. 28 00:01:38,100 --> 00:01:43,470 Ac felly yn Cesar bydd rhywun yn pasio i chi allweddol gyda cyfanrif, 29 00:01:43,470 --> 00:01:48,420 a byddwch yn amgryptio cyfres o destun eu bod yn darparu eich 30 00:01:48,420 --> 00:01:50,670 a'u rhoi yn ôl yn beth amgryptio. 31 00:01:50,670 --> 00:01:56,050 Os oes unrhyw un yn gwylio Stori Nadolig, mae 'na enghraifft o hynny yno. 32 00:01:56,050 --> 00:01:59,090 Yna ail ran y broblem a osodwyd yn Vigenere, 33 00:01:59,090 --> 00:02:01,790 sydd yn dechneg amgryptio mwy datblygedig. 34 00:02:01,790 --> 00:02:05,640 Ac felly yr ydym yn mynd i encipher darn o destun, 35 00:02:05,640 --> 00:02:09,600 ac eithrio yn hytrach na gyda dim ond un cyfanrif, rydym yn wir yn mynd i amgodio ei 36 00:02:09,600 --> 00:02:13,340 gyda gair allweddol y bydd y defnyddiwr yn rhoi i ni. 37 00:02:16,270 --> 00:02:22,090 Iawn, felly yr offeryn cyntaf yn y heddiw toolbox mewn gwirionedd yn mynd i fod yn diweddaru'r offer. 38 00:02:22,090 --> 00:02:26,430 Ar y bwrdd trafod byddem yn gweld pethau fel, "Pam nad yw hyn yn gweithio?" 39 00:02:26,430 --> 00:02:28,110 "Pam does Cyflwyno 50 gwaith?" 40 00:02:28,110 --> 00:02:31,830 ac yn aml dyma'r ateb mewn gwirionedd yn unig i ddiweddaru eich offer. 41 00:02:31,830 --> 00:02:36,730 Ac felly os ydych yn unig yn rhedeg mewn ffenestr terfynell yn eich sudo offer iym-y - 42 00:02:36,730 --> 00:02:40,040 sy'n baner yn dweud ie, diweddaru popeth - diweddariad, 43 00:02:40,040 --> 00:02:42,280 yna bydd eich offer diweddaru os oes angen. 44 00:02:42,280 --> 00:02:46,960 Ac nid yw'n brifo os ydych eisioes ar y fersiwn mwyaf diweddar o'r offer. 45 00:02:46,960 --> 00:02:51,280 Yna bydd yn dim ond dweud na diweddariadau newydd ar gael a gallwch barhau i weithio ynghyd. 46 00:02:51,280 --> 00:02:55,800 Ond mae hyn yn dda i weithredu hyd yn oed bob amser y byddwch yn agor yr offer 47 00:02:55,800 --> 00:02:57,140 oherwydd ein bod yn dal i fod yn fawr iawn - 48 00:02:57,140 --> 00:03:00,320 weithiau os byddwn yn dod i mewn i bug - ei gosod yn y peiriant. 49 00:03:00,320 --> 00:03:03,180 Felly, gwnewch yn siwr bod gennych y fersiwn diweddaraf o'r offer 50 00:03:03,180 --> 00:03:07,710 a rhedeg sy'n diweddaru'r yno. 51 00:03:07,710 --> 00:03:14,360 Mae pob hawl. Felly, ers i ni yn delio gyda llythyrau a newid, enciphering pethau, 52 00:03:14,360 --> 00:03:20,410 ydym yn mynd i wir eisiau dod yn ffrindiau gorau gyda ein siart ASCII. 53 00:03:20,410 --> 00:03:24,350 Mae rhai niferus ar-lein, os ydych yn dod o hyd. Efallai hyd yn oed wneud eich pen eich hun. 54 00:03:24,350 --> 00:03:29,950 Yn y bôn, gyda phob llythyr a phob rhif a phob cymeriad 55 00:03:29,950 --> 00:03:32,210 mae nifer yn gysylltiedig â hwy, 56 00:03:32,210 --> 00:03:38,670 ac felly mae'n dda gweld eu gwerthoedd ASCII ochr yn ochr â'r llythyr ei hun. 57 00:03:38,670 --> 00:03:42,310 Bydd hynny yn bendant yn eich helpu yn y set broblem. 58 00:03:42,310 --> 00:03:45,750 Un peth sydd wir yn fy helpu yn y set hon broblem oedd mewn gwirionedd yn ei hargraffu, 59 00:03:45,750 --> 00:03:48,380 a gan fy mod yn mynd drwy, byddwn mewn gwirionedd yn tynnu arno, 60 00:03:48,380 --> 00:03:51,150 ysgrifennu, "Os yw hyn yn gorfod mynd i yno, yna ..." 61 00:03:51,150 --> 00:03:55,270 Math o dynnu arno a marcio i fyny, yn dod yn ffrindiau gorau â'ch bwrdd ASCII. 62 00:03:57,240 --> 00:04:00,750 Yna, mae gennym ychydig o offer eraill yn ein gwaredu. 63 00:04:00,750 --> 00:04:03,750 Y tro hwn yn hytrach na mewn gwirionedd yn annog y defnyddiwr am eu holl fewnbwn 64 00:04:03,750 --> 00:04:05,230 ydym yn mynd i wneud cyfuniad. 65 00:04:05,230 --> 00:04:06,880 Rydym yn mynd i ysgogi nhw am rywfaint o fewnbwn, 66 00:04:06,880 --> 00:04:11,350 ond rydym ni hefyd yn mynd i jyst yn defnyddio dadleuon llinell orchymyn. 67 00:04:11,350 --> 00:04:15,600 Felly, pan maent yn rhedeg eu rhaglen, fel arfer byddwch yn ei ddweud. / Helo, er enghraifft, 68 00:04:15,600 --> 00:04:17,310 os yw eich rhaglen yn hello.c. 69 00:04:17,310 --> 00:04:22,500 Ond y tro hwn yn hytrach na dim ond dweud hynny, gallant roi geiriau, dadleuon wedyn. 70 00:04:22,500 --> 00:04:27,210 Ac felly yr ydym yn mynd i ddefnyddio beth bynnag y maent yn pasio i ni fel eu mewnbwn yn ogystal, 71 00:04:27,210 --> 00:04:31,720 felly symud y tu hwnt i anogaeth gyfer cyfanrif ond hefyd yn defnyddio dadleuon llinell orchymyn. 72 00:04:31,720 --> 00:04:36,590 Ac yna byddwn yn mynd i mewn i araeau a llinynnau, y byddwn yn defnyddio llawer yn ogystal. 73 00:04:41,460 --> 00:04:44,810 Dyma unig enghraifft o 1 siart mini ASCII. 74 00:04:44,810 --> 00:04:48,460 Fel y dywedais, mae pob llythyren yn cyfateb i nifer, 75 00:04:48,460 --> 00:04:52,510 ac felly eich bod yn gyfarwydd â hynny. Bydd yn dod yn ddefnyddiol. 76 00:04:52,510 --> 00:04:55,610 Ac yn ddiweddarach pan fyddwn yn dechrau gwneud rhywfaint o ASCIIMath delio â'r niferoedd - 77 00:04:55,610 --> 00:05:00,110 adio, tynnu nhw - yna bendant yn dda i gyfeirio at y siart. 78 00:05:02,860 --> 00:05:06,920 Felly dyma enghraifft o cipher Caesar - rhywbeth y gallech fod wedi chwarae gyda nhw. 79 00:05:06,920 --> 00:05:11,190 Mae'n yn unig yw olwyn. Yn y bôn, mae wyddor allanol ac yna mae wyddor mewnol. 80 00:05:11,190 --> 00:05:15,290 Felly, dde yma yn enghraifft o'r cipher Cesar, ond gydag allwedd o 0. 81 00:05:15,290 --> 00:05:21,540 Yn y bôn, A yn cyd-fynd gyda A, B yn cyd-fynd gyda B, yr holl ffordd i fyny i Z. 82 00:05:21,540 --> 00:05:26,590 Ond yna dweud ein bod eisiau allweddol 3, er enghraifft. 83 00:05:26,590 --> 00:05:33,280 Yna byddem yn cylchdroi yr olwyn mewnol fel bod A yn cyd-fynd â D, ac ati 84 00:05:33,280 --> 00:05:35,250 Ac felly mae hyn yn ei hanfod yr hyn yr ydym ni'n mynd i'w wneud. 85 00:05:35,250 --> 00:05:38,340 Nid oes gennym olwyn, ond beth ydym yn mynd i wneud yw gwneud ein rhaglen 86 00:05:38,340 --> 00:05:44,490 math o newid y wyddor ynghyd gyda ni a swm penodol o rifau. 87 00:05:44,490 --> 00:05:48,650 Felly, fel y dywedais o'r blaen, rydym yn mynd i fod yn delio gyda dadleuon llinell orchymyn 88 00:05:48,650 --> 00:05:50,390 yn ogystal â chael cyfanrif. 89 00:05:50,390 --> 00:05:55,050 Felly, y ffordd y bydd defnyddiwr yn rhedeg eich Cesar rhaglen yw trwy ddweud. / Cesar 90 00:05:55,050 --> 00:05:58,090 ac yna mynd i mewn i rhif ar ôl hynny. 91 00:05:58,090 --> 00:06:01,130 Ac mae'r nifer yn cynrychioli allweddol, y newid, 92 00:06:01,130 --> 00:06:06,740 faint o weithiau rydych yn mynd i gael ei droi olwyn mewnol eich Caesar cipher. 93 00:06:06,740 --> 00:06:08,390 Ac felly byddwch yn gweld yma yn enghraifft. 94 00:06:08,390 --> 00:06:14,550 Os ydym yn mynd i mewn i'r llythrennau o A i L yn ein Cesar cipher, 95 00:06:14,550 --> 00:06:19,520 yna byddai'n mewnbwn D drwy O oherwydd dyna bob llythyr symud dros 3 gwaith, 96 00:06:19,520 --> 00:06:22,080 yn union fel yr enghraifft o olwyn i mi yn dangos i chi. 97 00:06:22,080 --> 00:06:25,300 Felly, yna os gwnaethoch chi gychwyn, er enghraifft, Mae hyn yn CS50! 98 00:06:25,300 --> 00:06:27,960 yna byddai hefyd yn symud i gyd o'r llythyrau. 99 00:06:27,960 --> 00:06:31,040 Ac mae hynny'n beth pwysig yn y ddwy Caesar a Vigenere 100 00:06:31,040 --> 00:06:34,890 yw ein bod ni'n mynd i neidio dros unrhyw lythyrau nad ydynt yn. 101 00:06:34,890 --> 00:06:39,160 Felly unrhyw fannau, cymeriadau, ac ati, rhifau, rydym yn mynd i gadw yn yr un. 102 00:06:39,160 --> 00:06:42,920 Rydym yn unig yn mynd i newid y llythrennau yn yr achos hwn. 103 00:06:42,920 --> 00:06:45,870 Felly, fel y gwelwch yn yr olwyn, rydym yn unig yn cael y llythrennau sydd ar gael i ni, 104 00:06:45,870 --> 00:06:50,150 felly dim ond eisiau symud y llythyrau a encrypt y llythyrau. 105 00:06:51,370 --> 00:06:56,720 Felly, y peth cyntaf i'w wneud, byddwch yn gweld bod y defnydd ar gyfer Cesar mewn datrys gosod 2 106 00:06:56,720 --> 00:07:05,280 yw cynnal Cesar ac yna mynd i mewn i nifer pan fyddwch yn rhedeg yn y derfynfa. 107 00:07:05,280 --> 00:07:10,940 Felly, beth mae angen i ni ei wneud yw i rhywsut gael y allweddol a chael mynediad iddo. 108 00:07:10,940 --> 00:07:14,730 Ac felly rydym yn awyddus i weld rhywsut ei fod yn mynd i fod yn ymresymiad llinell orchymyn ail. 109 00:07:14,730 --> 00:07:20,950 Mae'r un cyntaf yn mynd i fod. / Cesar, a'r un nesaf yn mynd i fod y rhif allweddol. 110 00:07:22,190 --> 00:07:29,200 Felly, cyn i ni gael int brif (gwag) i ddechrau ar ein rhaglenni C. 111 00:07:29,200 --> 00:07:31,790 Rydym yn mynd i bilio yn ôl haen ychydig 112 00:07:31,790 --> 00:07:34,720 ac mewn gwirionedd yn gweld bod lle basio yng ngofod at ein prif swyddogaeth 113 00:07:34,720 --> 00:07:37,920 rydym yn mewn gwirionedd yn delio gyda 2 baramedrau. 114 00:07:37,920 --> 00:07:44,070 Mae gennym int a enwir argc ac yna amrywiaeth o llinynnau a elwir yn argv. 115 00:07:44,070 --> 00:07:46,030 Felly argc yn gyfanrif, 116 00:07:46,030 --> 00:07:49,640 ac mae'n cynrychioli y nifer o ddadleuon basio i mewn i'ch rhaglen. 117 00:07:49,640 --> 00:07:53,590 Ac yna argv mewn gwirionedd yn y rhestr o'r dadleuon pasio. 118 00:07:53,590 --> 00:08:00,820 Mae pob un o'r dadleuon yn llinynnau, ac felly argv yn cynrychioli amrywiaeth, rhestr, o linynnau. 119 00:08:01,830 --> 00:08:03,990 Gadewch i ni siarad am araeau ychydig. 120 00:08:03,990 --> 00:08:05,940 Araeau eu hanfod strwythur data newydd. 121 00:08:05,940 --> 00:08:09,660 Mae gennym ints, rydym wedi dyblu, mae gennym llinynnau, ac yn awr mae gennym araeau. 122 00:08:09,660 --> 00:08:13,820 Araeau strwythurau data y gellir cynnal gwerthoedd lluosog o'r un math, 123 00:08:13,820 --> 00:08:18,320 felly yn y bôn, rhestr o ba fath bynnag ydych ei eisiau. 124 00:08:18,320 --> 00:08:24,400 Yn y bôn, os ydych eisiau rhestr o gyfanrifau holl mewn 1 amrywiol, 125 00:08:24,400 --> 00:08:29,090 yna byddech yn creu amrywiol newydd a oedd o amrywiaeth int fath. 126 00:08:29,090 --> 00:08:34,450 Felly, araeau yn sero-indexed, sy'n golygu bod yr elfen gyntaf y rhesi ar fynegai 0. 127 00:08:34,450 --> 00:08:41,799 Os yw'r amrywiaeth o hyd yn 4, fel yn yr enghraifft hon, yna byddai eich elfen olaf fod ar mynegai 3, 128 00:08:41,799 --> 00:08:44,810 sy'n 4 - 1. 129 00:08:45,940 --> 00:08:48,420 Felly, i greu amrywiaeth, byddech yn gwneud rhywbeth fel hyn. 130 00:08:48,420 --> 00:08:51,440 Dywedwch eich bod chi eisiau amrywiaeth dwbl. 131 00:08:51,440 --> 00:08:56,520 Mae hyn yn wir am unrhyw fath o ddata fath, er. 132 00:08:56,520 --> 00:09:00,210 Felly, dywedwch eich bod eisiau amrywiaeth dwbl. Dywedwch eich bod chi am ei alw blwch post. 133 00:09:00,210 --> 00:09:04,760 Yn union fel y byddech yn ymgychwyn unrhyw dwbl arall, 134 00:09:04,760 --> 00:09:09,760 y byddech yn dweud dwbl ac yna yr enw, ond y tro hwn rydym yn rhoi y cromfachau sgwâr, 135 00:09:09,760 --> 00:09:13,570 ac yna y nifer fydd hyd y rhesi. 136 00:09:13,570 --> 00:09:16,840 Nodwch fod mewn casgliadau ni allwn newid y hyd, 137 00:09:16,840 --> 00:09:21,230 felly byddwch bob amser yn rhaid i ddiffinio a dewis faint o flychau, 138 00:09:21,230 --> 00:09:25,440 faint o werthoedd eich amrywiaeth yn mynd i ddal. 139 00:09:25,440 --> 00:09:31,820 Felly, er mwyn gosod gwerthoedd gwahanol yn eich array, rydych chi'n mynd i ddefnyddio'r r yn canlyn chystrawen, 140 00:09:31,820 --> 00:09:33,200 fel y gwelwch ar y sleid. 141 00:09:33,200 --> 00:09:37,620 Bydd gennych blwch post 0 mynegai yn cael ei osod i 1.2, 142 00:09:37,620 --> 00:09:42,180 1 blwch post mynegai set i 2.4, ac ati 143 00:09:42,180 --> 00:09:47,910 Felly nawr ein bod wedi adolygu araeau ychydig, gadewch i ni fynd yn ôl i argc a argv. 144 00:09:47,910 --> 00:09:52,220 Rydym yn gwybod bod argv bellach amrywiaeth o linynnau. 145 00:09:52,220 --> 00:09:55,080 Felly, pan fydd defnyddiwr yn mynd i mewn - yn dweud eu bod yn rhedeg rhaglen - 146 00:09:55,080 --> 00:09:58,740 maent yn ei ddweud. / helo David Malan, 147 00:09:58,740 --> 00:10:05,160 yr hyn y bydd y rhaglen yn ei wneud i chi eisoes yn cael ei dod i fyny mewn gwirionedd â'r hyn argc a argv yn cael eu. 148 00:10:05,160 --> 00:10:07,620 Felly nid oes angen i chi boeni am hynny. 149 00:10:07,620 --> 00:10:14,370 Byddai Argc yn yr achos hwn fod yn 3 gan ei fod yn gweld 3 gair gwahanol gwahanu gan fylchau. 150 00:10:14,370 --> 00:10:18,850 Ac felly, yr amrywiaeth yn yr achos hwn, byddai'r mynegai gyntaf. / Helo, 151 00:10:18,850 --> 00:10:21,770 nesaf un David, yr un nesaf Malan. 152 00:10:21,770 --> 00:10:25,640 A oes unrhyw un yn gweld ar unwaith beth yw'r berthynas rhwng argv, 153 00:10:25,640 --> 00:10:28,990  yr amrywiaeth, ac argc yw? 154 00:10:32,820 --> 00:10:38,090 Yeah. Byddwn yn mynd i mewn i hynny yn enghraifft yn args.c. 155 00:10:38,090 --> 00:10:42,880 Gadewch i ni weld os allwn ni fanteisio ar y berthynas rhwng y 2. 156 00:10:42,880 --> 00:10:46,550 Yma, efallai y gwelwch fod yn y peiriant y cais diofyn 157 00:10:46,550 --> 00:10:49,450 i agor. ffeiliau c weithiau Emacs. 158 00:10:49,450 --> 00:10:54,660 Ond rydym am ddelio â gedit, felly beth allwch chi ei wneud yw y gallwch dde glicio ar eich ffeil C, 159 00:10:54,660 --> 00:11:04,580 mynd i Properties, Agor Gyda, ac yna dewis gedit, Gosod fel ball, 160 00:11:04,580 --> 00:11:13,020 ac yn awr y dylai eich rhaglen yn agor ym gedit yn hytrach na Emacs. 161 00:11:14,710 --> 00:11:16,290 Perfect. 162 00:11:17,120 --> 00:11:25,520 Felly dyma gen i raglen yr wyf am i argraffu pob ymresymiad llinell orchymyn. 163 00:11:25,520 --> 00:11:32,050 Felly, beth bynnag y defnyddiwr mewnbynnau, yr wyf am ei hanfod ddychwelyd yn ôl iddynt ar linell newydd. 164 00:11:32,050 --> 00:11:36,710 Felly beth yw strwythur y gallwn ei ddefnyddio i ailadrodd dros rywbeth - 165 00:11:36,710 --> 00:11:40,380 rhywbeth yr ydych yn ôl pob tebyg a ddefnyddir yn eich 1 pset? 166 00:11:40,380 --> 00:11:45,840 Os ydych am i chi fynd drwy nifer penodol o bethau? >> [Myfyrwyr] I ddolen. 167 00:11:45,840 --> 00:11:48,910 Am ddolen. Yn union. Felly, gadewch i ni ddechrau gyda'r gyfer ddolen. 168 00:11:48,910 --> 00:11:56,900 Gennym ar gyfer int i = 0. Gadewch i 'jyst dechrau gyda newidyn initialization safonol. 169 00:11:56,900 --> 00:12:02,370 Rydw i'n mynd i adael y cyflwr ar gyfer set, ac yna dweud i + +, yn mynd i wneud pethau yno. 170 00:12:02,370 --> 00:12:04,090 Mae pob hawl. 171 00:12:04,090 --> 00:12:11,590 Felly meddwl yn ôl i argv, os argv yw'r rhestr o ddadleuon a basiwyd yn y rhaglen 172 00:12:11,590 --> 00:12:15,380 ac argc yw nifer o ddadleuon yn y rhaglen, 173 00:12:15,380 --> 00:12:21,280 yna mae hynny'n golygu bod argc yn ei hanfod hyd argv, ar y dde, 174 00:12:21,280 --> 00:12:28,970 oherwydd bod yn mynd i fod mor ddadleuon lawer fel y gwerth argc. 175 00:12:28,970 --> 00:12:35,910 Felly, os ydym am ailadrodd dros bob elfen yn argv, 176 00:12:35,910 --> 00:12:43,290 rydym yn mynd i eisiau i bob amser yn cael mynediad i'r amrywiol yn argv ar y mynegai a roddir. 177 00:12:43,290 --> 00:12:49,060 Gall hynny gael ei gynrychioli gyda hyn, dde? 178 00:12:49,060 --> 00:12:53,430 Mae'r newidyn yma yn cynrychioli y llinyn penodol yn yr achos hwn 179 00:12:53,430 --> 00:12:57,030 oherwydd ei fod yn amrywiaeth linyn - y llinyn penodol ar y mynegai a roddir. 180 00:12:57,030 --> 00:13:00,690 Yr hyn yr ydym am ei wneud, yn yr achos hwn rydym am ei hargraffu, felly gadewch i ni ddweud printf. 181 00:13:00,690 --> 00:13:04,680 Ac yn awr argv yn llinyn, felly rydym yn awyddus i roi hynny dalfan yno. 182 00:13:04,680 --> 00:13:08,430 Rydym eisiau llinell newydd dim ond er mwyn ei gwneud yn edrych yn dda. 183 00:13:08,430 --> 00:13:12,530 Felly dyma ni gael dolen i. Nid oes gennym y cyflwr eto. 184 00:13:12,530 --> 00:13:20,020 Felly, fi yn dechrau ar 0, ac yna bob tro y mae'n mynd i argraffu'r llinyn a roddir 185 00:13:20,020 --> 00:13:22,980 ar y mynegai arbennig yn y rhesi. 186 00:13:22,980 --> 00:13:28,410 Felly pan rydym eisiau rhoi'r gorau i argraffu elfennau yn y casgliad? 187 00:13:28,410 --> 00:13:35,720 Pan fyddwn wedi gorffen, dde? Pan fyddwn wedi dod i ddiwedd y rhesi. 188 00:13:35,720 --> 00:13:38,870 Felly, nid ydym am fod yn fwy na heibio hyd y rhesi, 189 00:13:38,870 --> 00:13:43,700 ac rydym eisoes yn gwybod nad oes angen i ni mewn gwirionedd yn mynd ati i gael gwybod beth hyd argv yn 190 00:13:43,700 --> 00:13:47,520 oherwydd ei fod wedi rhoi i ni, a beth sy'n bod? Argc. Yn union. 191 00:13:47,520 --> 00:13:56,640 Felly, rydym am wneud y broses hon nifer argc o weithiau. 192 00:13:56,640 --> 00:13:59,550 Dydw i ddim yn y cyfeiriadur cywir. 193 00:14:02,100 --> 00:14:03,490 Mae pob hawl. 194 00:14:03,490 --> 00:14:08,990 Nawr gadewch i ni wneud args. Dim gwallau, sy'n wych. 195 00:14:08,990 --> 00:14:11,430 Felly, gadewch i ni dim ond yn rhedeg args. 196 00:14:11,430 --> 00:14:15,130 Beth mae hyn yn mynd i ddychwelyd i ni? Mae'n jyst yn mynd i argraffu yn ôl. 197 00:14:15,130 --> 00:14:18,320 "Rydych yn bwydo i mewn args y rhaglen; Rydw i'n mynd i roi yn ôl i chi." 198 00:14:18,320 --> 00:14:23,170 Felly, gadewch i ni ddweud ein bod am ei ddweud args yna foo bar. 199 00:14:23,170 --> 00:14:26,570 Felly, yna bydd yn argraffu allan yn ôl i ni. Mae pob hawl? 200 00:14:26,570 --> 00:14:30,790 Felly mae yn enghraifft o sut y gallwch ddefnyddio argc a argv 201 00:14:30,790 --> 00:14:33,460 wybod bod argc yn cynrychioli hyd argv. 202 00:14:33,460 --> 00:14:42,750 Gwnewch yn siŵr nad ydych erioed gyda araeau mynediad un y tu allan hyd y rhesi 203 00:14:42,750 --> 00:14:45,140 gan y bydd C bendant gweiddi ar chi. 204 00:14:45,140 --> 00:14:47,560 Byddwch yn cael rhywbeth a elwir yn wall, 205 00:14:47,560 --> 00:14:52,470 sydd byth yn hwyl, yn y bôn yn dweud eich bod yn ceisio cael mynediad rhywbeth 206 00:14:52,470 --> 00:14:55,000 nad yw'n bodoli, nid yw'n perthyn i chi. 207 00:14:55,000 --> 00:14:59,430 Felly gwnewch yn siŵr, ac yn enwedig gyda'r sero-mynegeio, nid ydym am i - 208 00:14:59,430 --> 00:15:02,390 Fel er enghraifft, os oes gennym amrywiaeth o hyd 4, 209 00:15:02,390 --> 00:15:07,240 Nid yw bod 4 mynegai amrywiaeth yn bodoli oherwydd ein bod yn dechrau ar 0, ar sero mynegai. 210 00:15:07,240 --> 00:15:11,730 Bydd yn dod yn ail natur yn union fel ar gyfer dolenni pan fyddwn yn dechrau ar 0. 211 00:15:11,730 --> 00:15:13,610 Felly, dim ond yn cadw hynny mewn cof. 212 00:15:13,610 --> 00:15:22,590 Nid ydych am i erioed gael mynediad at y mynegai o amrywiaeth sy'n tu hwnt i'ch cyrraedd. 213 00:15:26,710 --> 00:15:32,560 Felly, gallwn weld nawr sut y gallwn math o fynediad 214 00:15:32,560 --> 00:15:35,930 y dadleuon llinell orchymyn sy'n cael eu pasio i mewn 215 00:15:35,930 --> 00:15:41,330 Ond wrth i chi weld y llinyn, y argv mewn gwirionedd amrywiaeth llinyn. 216 00:15:41,330 --> 00:15:45,740 Felly nid yw'n mewn gwirionedd cyfanrif eto, ond yn Cesar ydym am ddelio gyda chyfanrifau. 217 00:15:45,740 --> 00:15:54,430 Yn ffodus, mae swyddogaeth a grëwyd i ni y gellir mewn gwirionedd trosi llinyn i cyfanrif. 218 00:15:54,430 --> 00:15:58,710 Hefyd yn fan hyn nad ydym yn delio gyda mewnbwn defnyddiwr lle rydym yn eu hannog 219 00:15:58,710 --> 00:16:03,740 ar gyfer mewnbwn yma am yr allwedd, felly ni allwn mewn gwirionedd reprompt a dweud, 220 00:16:03,740 --> 00:16:07,840 "O, yn rhoi i mi cyfanrif arall, er enghraifft, os nad yw'n ddilys." 221 00:16:07,840 --> 00:16:10,540 Ond rydym yn dal i fod angen i ni wirio ar gyfer defnydd cywir. 222 00:16:10,540 --> 00:16:13,520 Yn Cesar eu bod yn cael dim ond i basio yn rhif 1, 223 00:16:13,520 --> 00:16:18,030 ac felly mae'n rhaid iddynt redeg. / Cesar, ac yna rhaid iddynt roi i chi nifer. 224 00:16:18,030 --> 00:16:23,660 Felly argc rhaid cael nifer penodol. 225 00:16:23,660 --> 00:16:29,060 Beth fyddai nifer sy'n cael os oes rhaid iddynt basio chi. / Cesar ac yna allweddol? 226 00:16:29,060 --> 00:16:32,920 Beth yw argc? >> [Myfyrwyr] 2. >> Dau. Yn union. 227 00:16:32,920 --> 00:16:35,490 Felly rydych chi am wneud yn siŵr bod argc yw 2. 228 00:16:35,490 --> 00:16:39,620 Fel arall, yn y bôn yn gwrthod i redeg y rhaglen. 229 00:16:39,620 --> 00:16:43,040 Yn y prif mae'n swyddogaeth sy'n dweud int brif 230 00:16:43,040 --> 00:16:47,360 felly, rydym bob amser yn gyfnewid arfer da i 0 ar ddiwedd y rhaglen lwyddiannus. 231 00:16:47,360 --> 00:16:50,840 Felly os, er enghraifft, maent yn rhoi chi 3 dadleuon llinell orchymyn yn hytrach na 2 232 00:16:50,840 --> 00:16:54,350 neu roi i chi: 1, er enghraifft, yna beth fyddwch chi'n ei wneud yw youll 'angen at wirio ar gyfer y 233 00:16:54,350 --> 00:16:59,900 ac yna dychwelyd 1 ddweud, na, ni allaf fwrw ymlaen â'r rhaglen hon. 234 00:16:59,900 --> 00:17:03,190 [Myfyrwyr] Ni all fod yn ofod yn eich testun. >> Maddau i mi? 235 00:17:03,190 --> 00:17:06,780 [Myfyrwyr] Ni all fod yn ofod yn y testun rydych chi'n ceisio ei amgryptio. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 O ran y testun ein bod yn ceisio i amgryptio, sydd mewn gwirionedd yn dod yn nes ymlaen 238 00:17:11,280 --> 00:17:13,970 pan fyddwn yn rhoi y testun. 239 00:17:13,970 --> 00:17:18,260 Felly, ar hyn o bryd rydym yn unig yn derbyn fel dadleuon gorchymyn y nifer gwirioneddol, 240 00:17:18,260 --> 00:17:21,579 y newid gwirioneddol ar gyfer y amgryptio Cesar. 241 00:17:21,579 --> 00:17:27,569 [Myfyrwyr] Pam ydych chi angen 2 yn hytrach na dim ond 1 argc? Mae bendant yn rhif 1. 242 00:17:27,569 --> 00:17:32,200 Hawl. Y rheswm pam y mae angen 2 am argc yn hytrach na o 1 243 00:17:32,200 --> 00:17:36,260 oherwydd pan fyddwch yn rhedeg rhaglen a dweud. / Cesar neu. / helo, 244 00:17:36,260 --> 00:17:38,280 sydd mewn gwirionedd yn cyfrif fel llinell orchymyn ddadl. 245 00:17:38,280 --> 00:17:43,020 Felly, yna sydd eisoes yn cymryd 1 ac felly, rydym yn mewnbynnu 1 yn ychwanegol. 246 00:17:45,030 --> 00:17:49,440 Felly, rydych chi'n mewnbynnu mewn gwirionedd llinyn yn y llinell orchymyn ddadl. 247 00:17:49,440 --> 00:17:52,730 Beth rydych am ei wneud, ar gyfer Cesar rydym am i ddelio â cyfanrif, 248 00:17:52,730 --> 00:17:57,180 fel y gallwch ddefnyddio'r swyddogaeth hon atoi. 249 00:17:57,180 --> 00:18:02,850 Ac yn y bôn, byddwch yn mynd heibio mewn llinyn ac yna bydd yn dychwelyd yn ôl yn gyfanrif 250 00:18:02,850 --> 00:18:06,070 os yw'n bosibl i wneud y llinyn i mewn i gyfanrif. 251 00:18:06,070 --> 00:18:10,960 Nawr cofio pan fyddwn yn delio â phethau printf neu GetString, fel 'na, 252 00:18:10,960 --> 00:18:13,390 rydym yn cynnwys y llyfrgelloedd sy'n benodol i ni. 253 00:18:13,390 --> 00:18:19,450 Felly, ar y dechrau rydym yn dechrau gyda safon tag hash I / O,. H, rhywbeth fel 'na. 254 00:18:19,450 --> 00:18:22,430 Wel, nid atoi o fewn un o'r llyfrgelloedd hynny, 255 00:18:22,430 --> 00:18:26,600 felly beth mae'n rhaid i ni ei wneud yw ein bod wedi cynnwys y llyfrgell cywir ar gyfer hynny. 256 00:18:26,600 --> 00:18:32,720 Felly, yn cofio yn ôl i Walkthrough 1 lle bûm yn trafod y swyddogaeth llaw. 257 00:18:32,720 --> 00:18:37,110 Chi deipio dyn yn eich terfynell, ac yna dilyn gan enw swyddogaeth. 258 00:18:37,110 --> 00:18:39,720 Ac fel y bydd yn dod i fyny rhestr gyfan o'i ddefnydd, 259 00:18:39,720 --> 00:18:42,890 ond yn ogystal bydd yn dod i fyny pa lyfrgell sy'n perthyn i. 260 00:18:42,890 --> 00:18:47,000 Felly, byddaf yn gadael hynny i chi i ddefnyddio'r swyddogaeth llaw gyda atoi 261 00:18:47,000 --> 00:18:53,360 a chyfrif i maes pa lyfrgell angen i chi gynnwys i fod yn gallu defnyddio'r swyddogaeth atoi. 262 00:18:54,450 --> 00:18:57,670 Felly, rydym wedi cael y allweddol ac yn awr mae'n dod i gael y testun plaen, 263 00:18:57,670 --> 00:19:01,820 ac felly sydd mewn gwirionedd yn mynd i fod mewnbwn defnyddwyr lle rydych yn brydlon. 264 00:19:01,820 --> 00:19:05,540 Rydym yn delio â GetInt a GetFloat, ac felly yn yr un modd 265 00:19:05,540 --> 00:19:07,670 rydym yn mynd i fod yn delio â GetString. 266 00:19:07,670 --> 00:19:12,440 Ond yn yr achos hwn nid oes angen i ni wneud unrhyw do gyfnod, neu tra dolenni i wirio. 267 00:19:12,440 --> 00:19:14,480 Bydd GetString sicr yn rhoi i ni llinyn, 268 00:19:14,480 --> 00:19:17,630 ac rydym yn mynd i amgryptio beth bynnag y defnyddiwr yn rhoi i ni. 269 00:19:17,630 --> 00:19:23,770 Felly gallwch gymryd yn ganiataol bod pob un o'r llinynnau defnyddiwr mewnbynnu yn gywir. 270 00:19:23,770 --> 00:19:24,670 Great. 271 00:19:24,670 --> 00:19:27,270 Felly, yna unwaith y byddwch wedi cael y allweddol ac unwaith y byddwch wedi cael y testun, 272 00:19:27,270 --> 00:19:31,660 nawr beth sydd ar ôl yn rhaid i chi encipher y plaintext. 273 00:19:31,660 --> 00:19:36,530 Dim ond yn gyflym yn cynnwys dros lingo, y plaintext yw'r hyn y mae'r defnyddiwr yn rhoi i chi, 274 00:19:36,530 --> 00:19:41,030 ac mae'r ciphertext yr hyn yr ydych yn dychwelyd iddynt. 275 00:19:42,450 --> 00:19:45,850 Felly, llinynnau, i fod yn gallu mynd trwy mewn gwirionedd llythyr trwy lythyr 276 00:19:45,850 --> 00:19:48,550 oherwydd rhaid inni symud bob llythyr, 277 00:19:48,550 --> 00:19:51,390 rydym yn deall bod llinynnau, os byddwn yn fath o groen yn ôl yr haen, 278 00:19:51,390 --> 00:19:54,130 rydym yn gweld bod nhw jyst 'n sylweddol rhestr o gymeriadau. 279 00:19:54,130 --> 00:19:55,930 Mae un yn dod ar ôl y llall. 280 00:19:55,930 --> 00:20:01,690 Ac er mwyn i ni drin llinynnau fel araeau oherwydd eu bod yn araeau o gymeriadau. 281 00:20:01,690 --> 00:20:05,640 Felly, yn dweud bod gennych llinyn a enwir testun, 282 00:20:05,640 --> 00:20:09,400 ac o fewn y testun amrywiol yn cael ei storio Mae hwn yn CS50. 283 00:20:09,400 --> 00:20:15,680 Yna byddai'r testun yn y mynegai 0 fod yn T cyfalaf, byddai mynegai 1 yn h, ac ati 284 00:20:17,530 --> 00:20:23,970 Ac yna gyda arrays, yn yr enghraifft argc yn args.c, 285 00:20:23,970 --> 00:20:27,090 gwelsom fod yn rhaid inni ailadrodd dros amrywiaeth 286 00:20:27,090 --> 00:20:32,440 ac felly roedd rhaid i ni ailadrodd gan i = 0 hyd nes i yn llai na'r hyd. 287 00:20:32,440 --> 00:20:35,560 Felly mae angen rhyw ffordd o figuring allan beth yw hyd y llinyn yn ein 288 00:20:35,560 --> 00:20:37,090 os ydym yn mynd i ailadrodd drosto. 289 00:20:37,090 --> 00:20:42,300 Yn ffodus eto, mae swyddogaeth yno i ni, er yn ddiweddarach yn CS50 290 00:20:42,300 --> 00:20:45,860 byddwch yn bendant yn gallu i weithredu a gwneud eich swyddogaeth ei hun 291 00:20:45,860 --> 00:20:48,260 gallu cyfrifo hyd y llinyn. 292 00:20:48,260 --> 00:20:52,120 Ond am nawr rydym ni'n mynd i'w ddefnyddio, hyd llinyn felly strlen. 293 00:20:52,120 --> 00:21:00,440 Byddwch yn pasio mewn llinyn, ac yna bydd yn dychwelyd i chi int sy'n cynrychioli hyd eich llinyn. 294 00:21:00,440 --> 00:21:05,840 Gadewch i ni edrych ar enghraifft o sut y gallem fod yn gallu ailadrodd dros bob cymeriad mewn llinyn 295 00:21:05,840 --> 00:21:08,470 ac yn gwneud rhywbeth â hynny. 296 00:21:08,470 --> 00:21:13,250 Yr hyn yr ydym eisiau ei wneud yw ailadrodd dros bob cymeriad y llinyn, 297 00:21:13,250 --> 00:21:19,150 a'r hyn yr ydym eisiau ei wneud yw ein bod argraffu yn ôl pob cymeriad 1 o 1 298 00:21:19,150 --> 00:21:22,060 ac eithrio rydym yn ychwanegu rhywbeth drws nesaf iddo. 299 00:21:22,060 --> 00:21:27,020 Felly, gadewch i ni ddechrau gyda'r gyfer ddolen. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Rydym yn mynd i adael lle ar gyfer y cyflwr. 301 00:21:32,700 --> 00:21:36,840 Rydym yn awyddus i ailadrodd hyd nes y byddwn yn cyrraedd diwedd y llinyn, dde? 302 00:21:36,840 --> 00:21:41,340 Felly, yna beth swyddogaeth yn rhoi i ni hyd y llinyn? 303 00:21:41,340 --> 00:21:43,160 [Ymateb y myfyrwyr Anghlywadwy] 304 00:21:43,160 --> 00:21:46,420 Dyna hyd y dadleuon llinell orchymyn. 305 00:21:46,420 --> 00:21:50,650 Ond ar gyfer llinyn yr ydym am ddefnyddio'r swyddogaeth sy'n rhoi i ni hyd y llinyn. 306 00:21:50,650 --> 00:21:53,090 Felly dyna hyd llinyn. 307 00:21:53,090 --> 00:21:57,130 Ac felly, yna rhaid i chi basio mewn llinyn iddo. 308 00:21:57,130 --> 00:21:59,760 Mae angen iddo wybod beth mae angen llinyn i gyfrifo'r hyd. 309 00:21:59,760 --> 00:22:03,160 Felly, yna yn yr achos hwn rydym yn delio â llinyn s. 310 00:22:04,790 --> 00:22:05,860 Great. 311 00:22:05,860 --> 00:22:10,770 Felly, yna beth yr ydym am ei wneud, gadewch i ni printf. 312 00:22:10,770 --> 00:22:14,850 Nawr, rydym am i ddelio â chymeriadau. Rydym am i argraffu pob cymeriad unigol. 313 00:22:14,850 --> 00:22:22,150 Pan fyddwch eisiau iddo argraffu arnofio, byddech yn defnyddio'r ddalfan fel f%. 314 00:22:22,150 --> 00:22:24,580 Gyda int byddech yn ei ddefnyddio d%. 315 00:22:24,580 --> 00:22:30,890 Ac felly yn yr un modd, gyda chymeriad ydych yn defnyddio c% i ddweud fy mod i'n mynd i gael ei argraffu cymeriad 316 00:22:30,890 --> 00:22:34,570 sy'n cael ei storio y tu mewn newidyn. 317 00:22:34,570 --> 00:22:40,840 Felly, rydym wedi hyn, a gadewch i ni ychwanegu cyfnod a man iddo. 318 00:22:40,840 --> 00:22:45,430 Pa gymeriad yr ydym yn ei ddefnyddio? 319 00:22:45,430 --> 00:22:49,780 Rydym yn mynd i gael ei ddefnyddio pa bynnag cymeriad ein bod chi yn y llinyn. 320 00:22:49,780 --> 00:22:52,890 Felly, yna rydym yn mynd i fod yn defnyddio rhywbeth gyda llinyn, 321 00:22:52,890 --> 00:22:56,420 ond rydym eisiau cael gafael ar y cymeriad penodol yno. 322 00:22:56,420 --> 00:23:02,740 Felly, os yw llinyn yn unig yw amrywiaeth, yna sut ydyn ni'n cael mynediad elfennau o araeau? 323 00:23:02,740 --> 00:23:06,480 Mae gennym y cromfachau sgwâr, ac yna rydym yn gosod y mynegai i mewn 'na. 324 00:23:06,480 --> 00:23:11,820 Felly, rydym wedi cromfachau sgwâr. Mae ein mynegai yn yr achos hwn gallwn jyst arfer i. Yn union. 325 00:23:15,290 --> 00:23:22,370 Felly dyma rydym yn dweud ein bod yn mynd i gael ei argraffu cymeriad ddilyn gan ddot a gofod, 326 00:23:22,370 --> 00:23:30,870 a bod y cymeriad yn mynd i fod y llythyr ith yn ein s llinyn. 327 00:23:32,920 --> 00:23:39,330 Im 'jyst yn mynd i achub hynny. Iawn. 328 00:23:42,510 --> 00:23:46,840 Nawr rwy'n mynd i redeg hyd llinyn. 329 00:23:46,840 --> 00:23:53,440 Felly, rydym wedi cael llinyn o'r enw OMG, ac yn awr mae'n cael ei bwysleisio hyd yn oed yn fwy. 330 00:23:53,440 --> 00:23:57,870 Yn yr un modd, gadewch i ni ddweud ein bod mewn gwirionedd yn awyddus i gael llinyn gan y defnyddiwr. 331 00:23:57,870 --> 00:23:59,580 Sut y gallem wneud hyn? 332 00:23:59,580 --> 00:24:01,610 Cyn, sut wnaethon ni gael int? 333 00:24:01,610 --> 00:24:08,040 Dywedasom GetInt, dde? Ond nid yw hyn yn int, felly gadewch i ni GetString. 334 00:24:11,780 --> 00:24:17,770 Gadewch i ni wneud hyd llinyn. Yma nid ydym yn mynd i mewn i prydlon penodol. 335 00:24:17,770 --> 00:24:19,940 Felly, nid wyf yn gwybod. 336 00:24:19,940 --> 00:24:23,820 Rydw i'n mynd i roi fy enw yn yma ac felly, yna gallaf wneud un o'r pethau hynny 337 00:24:23,820 --> 00:24:29,600 lle yr wyf yn neilltuo gair ar gyfer pob llythyr neu rywbeth fel 'na. Cool. 338 00:24:29,600 --> 00:24:31,900 Felly dyna hyd llinyn. 339 00:24:33,000 --> 00:24:34,640 Felly, rydym yn ôl i Cesar. 340 00:24:34,640 --> 00:24:38,620 Mae gennym ychydig o offer ar sut rydym yn ailadrodd dros llinyn, 341 00:24:38,620 --> 00:24:41,250 sut rydym yn mynd at bob elfen unigol. 342 00:24:41,250 --> 00:24:44,720 Felly nawr gallwn fynd yn ôl at y rhaglen. 343 00:24:44,720 --> 00:24:48,650 Fel y soniais o'r blaen, yn y tabl ASCII, eich ffrind gorau, 344 00:24:48,650 --> 00:24:52,300 rydych chi'n mynd i weld y niferoedd sy'n gysylltiedig gyda phob llythyr. 345 00:24:52,300 --> 00:24:55,900 Felly dyma dweud ein plaintext yw fy mod i'n chwil! 346 00:24:55,900 --> 00:25:01,090 Yna pob un o'r cymeriadau yn mynd i gael nifer a gwerth ASCII sy'n gysylltiedig ag ef, 347 00:25:01,090 --> 00:25:04,710 hyd yn oed y collnod, hyd yn oed y gofod, hyd yn oed y ebychnod, 348 00:25:04,710 --> 00:25:06,600 felly byddwch am gadw hynny mewn cof. 349 00:25:06,600 --> 00:25:12,360 Felly, yn dweud ein allweddol bod y defnyddiwr a gynhwysir yn eu llinell gorchymyn dadl yw 6. 350 00:25:12,360 --> 00:25:17,770 Mae hynny'n golygu am y llythyr cyntaf, sef I, sy'n cael ei gynrychioli gan 73, 351 00:25:17,770 --> 00:25:25,610 chi am ddychwelyd iddynt beth bynnag llythyr yn cael ei gynrychioli gan y gwerth ASCII o 73 + 6. 352 00:25:25,610 --> 00:25:29,020 Yn yr achos hwn a fyddai'n 79. 353 00:25:30,840 --> 00:25:35,040 Nawr rydym am i fynd i'r cymeriad nesaf. 354 00:25:35,040 --> 00:25:40,960 Felly byddai'r nesaf yn mynegai 1 y plaintext fod y collnod. 355 00:25:40,960 --> 00:25:46,780 Ond cofiwch mai dim ond eisiau encipher y llythyrau. 356 00:25:46,780 --> 00:25:50,040 Felly, rydym am wneud yn siŵr bod y collnod mewn gwirionedd yn aros yr un fath, 357 00:25:50,040 --> 00:25:54,310 nad ydym yn newid o 39 i 45 yn beth bynnag. 358 00:25:54,310 --> 00:25:57,150 Rydym am ei gadw fel collnod. 359 00:25:57,150 --> 00:26:00,780 Felly, rydym am i gofio dim ond encipher y llythyrau 360 00:26:00,780 --> 00:26:04,560 oherwydd ein bod am i bob un y symbolau eraill i aros yn ddigyfnewid yn ein rhaglen. 361 00:26:04,560 --> 00:26:07,130 Rhywbeth arall yr ydym am ei wneud yw cadw cyfalafu. 362 00:26:07,130 --> 00:26:10,250 Felly, pan fydd gennych lythyr priflythyren, dylai aros fel priflythyren. 363 00:26:10,250 --> 00:26:12,830 Dylai Lowercases aros fel llythrennau bach. 364 00:26:13,620 --> 00:26:19,480 Felly, mae rhai swyddogaethau ddefnyddiol gallu i ddelio â llythyrau yn unig enciphering 365 00:26:19,480 --> 00:26:22,380 a chadw cadw cyfalafu o bethau 366 00:26:22,380 --> 00:26:25,130 yw'r swyddogaethau islower isalpha, isupper,. 367 00:26:25,130 --> 00:26:29,270 Ac felly mae'r rhain yn swyddogaethau sy'n dychwelyd i chi gwerth Boole. 368 00:26:29,270 --> 00:26:34,180 Yn y bôn, yn wir neu'n anwir. A yw hwn yn priflythyren? A yw hyn yn alffaniwmerig? 369 00:26:34,180 --> 00:26:37,180 A yw hwn yn llythyr, yn y bôn. 370 00:26:37,180 --> 00:26:41,070 Felly dyma 3 enghraifft o sut y byddech yn ei ddefnyddio swyddogaeth honno. 371 00:26:41,070 --> 00:26:47,060 Yn y bôn, gallech brofi a yw'r gwerth ddychwelyd i chi gan y swyddogaeth yn gywir neu'n anghywir 372 00:26:47,060 --> 00:26:49,400 yn seiliedig ar y mewnbwn. 373 00:26:49,400 --> 00:26:54,880 Naill ai wneud rhywbeth nad encipher neu cipher neu ei wneud yn siŵr ei fod yn priflythyren, ac ati 374 00:26:54,880 --> 00:27:01,080 [Myfyrwyr] A allwch egluro rhai ychydig yn fwy a sut rydych yn eu defnyddio? >> Yeah, yn sicr. 375 00:27:01,080 --> 00:27:08,470 Felly, os ydym yn edrych yn ôl, dyma mae gennym cyfalaf sydd gennyf, dde? 376 00:27:08,470 --> 00:27:14,550 Felly, rydym yn gwybod fy mod yn mynd i S am fy mod + 6 yn O. 377 00:27:14,550 --> 00:27:18,740 Ond rydym eisiau gwneud yn siŵr bod O yn mynd i fod yn O. cyfalaf 378 00:27:18,740 --> 00:27:22,940 Felly y bôn, fod yn fath o fynd i newid ein mewnbwn. 379 00:27:22,940 --> 00:27:26,870 Felly, boed yn priflythyren neu beidio yn fath o newid y ffordd yr ydym yn ymdrin ag ef. 380 00:27:26,870 --> 00:27:32,360 Felly, yna, os ydym yn defnyddio'r swyddogaeth isupper ar y mynegai penodol, 381 00:27:32,360 --> 00:27:36,480 felly isupper ("I"), sy'n dychwelyd i ni wir, felly rydym yn gwybod ei fod yn uchaf. 382 00:27:36,480 --> 00:27:40,360 Felly, yna yn seiliedig ar hynny, yn ddiweddarach byddwn yn mynd i mewn i fformiwla 383 00:27:40,360 --> 00:27:42,750 y byddwch yn eu defnyddio i symud pethau yn Caesar, 384 00:27:42,750 --> 00:27:46,560 felly, yna yn y bôn, mae mynd i fod yn fformiwla ychydig yn wahanol os yw'n priflythyren 385 00:27:46,560 --> 00:27:50,670 yn hytrach na i lythrennau bach. Gwneud synnwyr? 386 00:27:51,020 --> 00:27:52,760 Yeah. Dim pryderon. 387 00:27:54,900 --> 00:27:58,990 Rwy'n siarad ychydig am ychwanegu 6 i lythyr, nad yw'n hollol gwneud synnwyr 388 00:27:58,990 --> 00:28:05,500 ac eithrio pan fyddwn yn fath o ddeall bod y cymeriadau 389 00:28:05,500 --> 00:28:08,920 yn fath o ymgyfnewidiol gyda chyfanrifau. 390 00:28:08,920 --> 00:28:11,250 Beth rydym yn ei wneud yw ein math o gastio ddefnydd ymhlyg. 391 00:28:11,250 --> 00:28:18,100 Byddwn yn mynd i fwrw ychydig yn nes ymlaen pan fyddwch yn cymryd gwerth ac rydych yn troi i mewn i fath gwahanol 392 00:28:18,100 --> 00:28:20,440 nag yn wreiddiol oedd. 393 00:28:20,440 --> 00:28:25,910 Ond gyda hyn pset byddwn yn gallu math o gyfnewidiol defnyddio cymeriadau 394 00:28:25,910 --> 00:28:30,880 a'u gwerthoedd cyfanrif cyfatebol. 395 00:28:30,880 --> 00:28:35,140 Felly, os ydych yn syml encase gymeriad gyda dim ond y dyfynodau sengl, 396 00:28:35,140 --> 00:28:40,390 yna byddwch yn gallu i weithio gydag ef gyda chyfanrifau, delio ag ef fel cyfanrif. 397 00:28:40,390 --> 00:28:48,040 Felly, y C cyfalaf yn ymwneud â 67. F llythrennau bach yn ymwneud â 102. 398 00:28:48,040 --> 00:28:51,480 Unwaith eto, os ydych am wybod y gwerthoedd hyn, edrychwch ar eich bwrdd ASCII. 399 00:28:51,480 --> 00:28:56,160 Felly, gadewch i ni fynd i mewn i rai enghreifftiau o sut y gallech chi fod yn gallu tynnu ac i greu, 400 00:28:56,160 --> 00:29:03,130 sut y gallwch chi mewn gwirionedd yn wir yn gweithio gyda'r cymeriadau, yn eu defnyddio yn gyfnewidiol. 401 00:29:03,870 --> 00:29:11,350 Yr wyf yn dweud bod ASCIIMath yn mynd i gyfrifo ychwanegu cymeriad i cyfanrif 402 00:29:11,350 --> 00:29:17,590 ac yna dangos y cymeriad o ganlyniad yn ogystal â'r gwerth ASCII yn sgil hynny. 403 00:29:17,590 --> 00:29:22,290 Ac felly dyma i ddim yn dweud - delio we'll â'r rhan hon yn ddiweddarach - 404 00:29:22,290 --> 00:29:29,100 ond yn y bôn, i ddim yn dweud y dylai'r defnyddiwr ddweud ASCIIMath redeg ar hyd gyda allweddol, 405 00:29:29,100 --> 00:29:30,880 ac yr wyf ddim yn dweud bod y allweddol yn mynd i fod y rhif 406 00:29:30,880 --> 00:29:34,600 yr ydym yn mynd i ychwanegu y cymeriad hwn. 407 00:29:34,600 --> 00:29:38,560 Felly dyma sylwi bod ers i mi mod yn mynnu allweddol, 408 00:29:38,560 --> 00:29:40,590 ers i mi mod yn mynnu eu bod yn rhoi i mi 1 peth, 409 00:29:40,590 --> 00:29:45,600 Dim ond eisiau derbyn. / Asciimath ac allwedd. 410 00:29:45,600 --> 00:29:49,330 Felly, yr wyf i'n mynd i fynnu bod argc yn hafal i 2. 411 00:29:49,330 --> 00:29:54,360 Os nad yw'n, yna yr wyf i'n mynd i ddychwelyd 1 a bydd y rhaglen yn gadael. 412 00:29:55,070 --> 00:29:58,540 Felly, yr wyf ddim yn dweud nad yw'r allwedd yn mynd i fod y ymresymiad llinell orchymyn gyntaf, 413 00:29:58,540 --> 00:30:05,080 mae'n mynd i fod yn yr ail un, ac fel y gwelwch yma, 414 00:30:05,080 --> 00:30:11,790 Rydw i'n mynd i droi hynny'n cyfanrif. 415 00:30:15,740 --> 00:30:19,230 Wedyn dw i'n mynd i osod gymeriad i fod yn r. 416 00:30:19,230 --> 00:30:23,970 Sylwch fod y math o bedyddiwyd amrywiol y mae mewn gwirionedd yn gyfanrif. 417 00:30:23,970 --> 00:30:30,480 Y ffordd fy mod i'n gallu defnyddio r fel cyfanrif yw drwy encasing â hyn dyfynodau sengl. 418 00:30:33,850 --> 00:30:40,560 Felly gefnogi ein datganiad printf lle mae gennym dalfan ar gyfer cymeriad 419 00:30:40,560 --> 00:30:43,590 ac yna dalfan ar gyfer cyfanrif, 420 00:30:43,590 --> 00:30:49,450 y cymeriad yn cael ei gynrychioli gan y fedyddiwyd, a'r cyfanrif yn allweddol. 421 00:30:49,450 --> 00:30:54,320 Ac felly, yna rydym yn mynd i mewn canlyniad ychwanegu'r 2 ynghyd. 422 00:30:54,320 --> 00:30:58,420 Felly, rydym yn mynd i ychwanegu r + beth bynnag yw'r allwedd, 423 00:30:58,420 --> 00:31:03,520 ac yna rydym yn mynd i argraffu'r canlyniad hynny. 424 00:31:06,210 --> 00:31:14,220 Felly, gadewch i ni wneud asciimath. Mae i fyny hyd yn hyn, felly gadewch i ni dim ond yn rhedeg asciimath. 425 00:31:14,220 --> 00:31:18,290 O, ond yn gweld, nid yw'n gwneud unrhyw beth gan nad ydym oedd mewn gwirionedd yn rhoi ei fod yn allweddol. 426 00:31:18,290 --> 00:31:23,850 Felly, pan fydd newydd ddychwelyd 1, ein prif swyddogaeth, 'i jyst ddychwelyd yn ôl i ni. 427 00:31:23,850 --> 00:31:29,250 Felly, yna gadewch i ni basio mewn cywair. Rhywun yn rhoi i mi yn rhif. >> [Myfyrwyr] 4. 428 00:31:29,250 --> 00:31:30,920 4. Iawn. 429 00:31:30,920 --> 00:31:39,280 Felly, r cynnydd o 4 yn mynd i roi i ni v, sy'n cyfateb i'r gwerth ASCII o 118. 430 00:31:39,280 --> 00:31:43,880 Felly, yna mae'n fath o gwneud synnwyr bod - 431 00:31:43,880 --> 00:31:51,250 A dweud y gwir, alla i ofyn i chi, beth ydych chi'n credu bod y gwerth ASCII r yw os r + 4 yn 118? 432 00:31:53,070 --> 00:31:55,470 Yna yeah, r yw 114. 433 00:31:55,470 --> 00:32:03,010 Felly, os ydych yn edrych ar y tabl ASCII, yna, yn sicr ddigon, fe welwch fod r yn cael ei gynrychioli gan 114. 434 00:32:03,010 --> 00:32:08,610 Felly, nawr ein bod yn gwybod y gallwn ychwanegu cyfanrifau â chymeriadau, mae hyn yn ymddangos yn eithaf syml. 435 00:32:08,610 --> 00:32:12,740 Rydym yn unig yn mynd i ailadrodd dros llinyn fel y gwelsom yn enghraifft o'r blaen. 436 00:32:12,740 --> 00:32:17,170 Byddwn yn gwirio os yw'n llythyr. 437 00:32:17,170 --> 00:32:20,420 Os ydyw, yna byddwn yn symud iddo gan beth bynnag yw'r allwedd. 438 00:32:20,420 --> 00:32:23,650 Pretty syml, ac eithrio pan fyddwch yn mynd i hoffi hwn, 439 00:32:23,650 --> 00:32:32,140 byddwch yn gweld bod z, a gynrychiolir gan 122, fyddai wedyn yn rhoi cymeriad gwahanol. 440 00:32:32,140 --> 00:32:37,770 Rydym mewn gwirionedd yn awyddus i aros o fewn ein wyddor, dde? 441 00:32:37,770 --> 00:32:43,180 Felly mae angen i chyfrif i maes rhyw ffordd o fath o lapio o gwmpas. 442 00:32:43,180 --> 00:32:47,190 Pan fyddwch yn cyrraedd ZED a ydych am gynyddu gan nifer benodol, 443 00:32:47,190 --> 00:32:51,230 nad ydych am i fynd i mewn y tu hwnt i'r adran wyddor ASCII; 444 00:32:51,230 --> 00:32:54,140 ydych am i lapio yn ôl yr holl ffordd i A. 445 00:32:54,140 --> 00:32:58,550 Ond yn cadw mewn cof eich bod yn dal i gadw yr achos. 446 00:32:58,550 --> 00:33:00,980 Felly ni all wybod bod llythyrau yn dod yn symbolau 447 00:33:00,980 --> 00:33:05,290 nid yn unig fel symbolau yn mynd i fod yn newid hefyd. 448 00:33:05,290 --> 00:33:08,170 Yn y pset diwethaf i chi yn bendant oedd angen, 449 00:33:08,170 --> 00:33:14,310 ond opsiwn oedd i weithredu eich pset barus drwy ddefnyddio'r ffwythiant modwlws. 450 00:33:14,310 --> 00:33:17,230 Ond yn awr rydym yn mewn gwirionedd yn mynd i angen i ddefnyddio modwlws, 451 00:33:17,230 --> 00:33:19,900 felly gadewch i ni dim ond yn mynd dros y darn ychydig. 452 00:33:19,900 --> 00:33:26,920 Yn y bôn, pan fydd gennych x modwlo y, sy'n rhoi i chi y gweddill x rannu gan y. 453 00:33:26,920 --> 00:33:30,930 Dyma rai enghreifftiau yma. Mae gennym 27% 15. 454 00:33:30,930 --> 00:33:36,200 Yn y bôn, pan fyddwch yn tynnu 15 o 27 gymaint o weithiau ag y bo modd heb gael negyddol 455 00:33:36,200 --> 00:33:39,060 yna byddwch yn cael 12 y chwith drosodd. 456 00:33:39,060 --> 00:33:44,650 Felly, dyna'r math o fel yn y cyd-destun mathemateg, ond sut allwn ni mewn gwirionedd yn defnyddio hyn? 457 00:33:44,650 --> 00:33:47,100 Mae'n mynd i fod yn ddefnyddiol ar gyfer ein wrapover. 458 00:33:47,100 --> 00:33:55,420 Ar gyfer hyn, gadewch i 'jyst dweud fy mod wedi gofyn i chi i gyd i rannu i mewn i 3 grŵp. 459 00:33:55,420 --> 00:33:58,010 Weithiau, byddwch yn gwneud hyn mewn grwpiau ac yn rhywbeth fel 'na. 460 00:33:58,010 --> 00:34:01,320 Dywedwch dywedais, "Iawn, yr wyf am i chi i gyd i gael ei rannu i 3." 461 00:34:01,320 --> 00:34:04,240 Sut allech chi wneud hynny? 462 00:34:04,240 --> 00:34:06,810 [Ymateb y myfyrwyr Anghlywadwy] Yeah, yn union. Cyfrif i ffwrdd. Iawn. 463 00:34:06,810 --> 00:34:10,260 Gadewch i ni mewn gwirionedd yn gwneud hynny. Ydych chi eisiau i ddechrau? 464 00:34:10,260 --> 00:34:13,810 [Myfyrwyr cyfrif off] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Ond cofiwch ... >> [Myfyrwyr] O, sori. 466 00:34:16,620 --> 00:34:18,730 Mae hynny'n bwynt da iawn. 467 00:34:18,730 --> 00:34:24,130 Yr oeddech yn dweud 4, ond yr ydym mewn gwirionedd am i chi ddweud 1 oherwydd mai dim ond am 3 grŵp. 468 00:34:24,130 --> 00:34:30,159 Felly, yna, sut - Na, mae hynny'n enghraifft wirioneddol dda oherwydd wedyn sut y gallech chi ddweud 1? 469 00:34:30,159 --> 00:34:33,370 Beth yw'r berthynas rhwng 4 ac 1? 470 00:34:33,370 --> 00:34:36,760 Wel, 4 mod 3 yw 1. 471 00:34:36,760 --> 00:34:41,460 Felly, os ydych yn parhau, byddech yn 2. 472 00:34:41,460 --> 00:34:44,540 Felly, rydym wedi 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Unwaith eto, rydych mewn gwirionedd yn y person 5ed. Sut ydych chi'n gwybod i ddweud 2 yn lle 5? 474 00:34:49,420 --> 00:34:53,760 Byddwch yn ei ddweud 5 mod 3 yw 2. 475 00:34:53,760 --> 00:34:59,100 Rwyf am i weld faint o grwpiau o 3 yn cael eu gadael drosodd, yna mha drefn wyf yn I. 476 00:34:59,100 --> 00:35:02,860 Ac felly, yna os ydym yn parhau ar hyd yr ystafell gyfan, 477 00:35:02,860 --> 00:35:07,760 yna byddem yn gweld ein bod bob amser yn gwneud cais mewn gwirionedd yn y swyddogaeth mod i ni ein hunain 478 00:35:07,760 --> 00:35:09,990 i fath o gyfrif i ffwrdd. 479 00:35:09,990 --> 00:35:14,490 Dyna math mwy o enghraifft ddiriaethol o sut y gallech eu defnyddio modwlo 480 00:35:14,490 --> 00:35:17,960 oherwydd fy mod i'n siwr y rhan fwyaf ohonom wedi mynd yn ôl pob tebyg drwy'r broses 481 00:35:17,960 --> 00:35:19,630 lle'r ydym wedi gorfod cyfrif i ffwrdd. 482 00:35:19,630 --> 00:35:21,840 Unrhyw gwestiynau ar modwlo? 483 00:35:21,840 --> 00:35:25,360 Bydd yn eithaf pwysig i ddeall y cysyniadau hyn, 484 00:35:25,360 --> 00:35:28,640 felly yr wyf am wneud yn siŵr eich guys yn deall. 485 00:35:28,640 --> 00:35:34,660 [Myfyrwyr] Os nad oes gweddill, a yw'n rhoi i chi y nifer gwirioneddol? 486 00:35:34,660 --> 00:35:40,430 Os bydd un o'r 3 cyntaf ohonynt wedi gwneud hynny, a fyddai'n wedi rhoi iddynt beth maent mewn gwirionedd oedd, 487 00:35:40,430 --> 00:35:43,310 neu y byddai wedi rhoi iddynt [Anghlywadwy] >> Mae hynny'n gwestiwn da. 488 00:35:43,310 --> 00:35:48,750 Pan nad oes gweddill ar gyfer y modwlo - felly ddweud eich bod wedi 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 sydd mewn gwirionedd yn rhoi i chi yn ôl 0. 490 00:35:53,670 --> 00:35:57,290 Byddwn yn siarad am hynny ychydig yn ddiweddarach. 491 00:35:58,810 --> 00:36:07,720 Oh yeah, er enghraifft, y 3ydd person - 3 mod 3 yn mewn gwirionedd 0 ond dywedodd 3. 492 00:36:07,720 --> 00:36:14,900 Felly, dyna'r math o debyg i ddal mewnol, er enghraifft, 493 00:36:14,900 --> 00:36:17,620 fel iawn, os yw'r mod yn 0 yna rwy'n mynd i fod y person 3ydd. 494 00:36:17,620 --> 00:36:22,740 Ond byddwn yn mynd i mewn i fath o sut y gallem am ddelio â'r hyn 0 yw ddiweddarach. 495 00:36:22,740 --> 00:36:32,750 Felly, nawr rydym rywsut wedi ffordd o fapio ZED i'r llythyr cywir. 496 00:36:32,750 --> 00:36:34,920 Felly, nawr rydym wedi mynd trwy yr enghreifftiau hyn, 497 00:36:34,920 --> 00:36:37,880 rydym yn fath o weld sut y gallai Caesar yn gweithio. 498 00:36:37,880 --> 00:36:42,640 Byddwch yn gweld y 2 wyddor ac yna rydych yn eu gweld symud. 499 00:36:42,640 --> 00:36:44,430 Felly, gadewch i ni geisio a mynegi hynny yn nhermau fformiwla. 500 00:36:44,430 --> 00:36:46,940 Mae'r fformiwla hon yn cael ei roi i chi mewn gwirionedd yn y fanyleb, 501 00:36:46,940 --> 00:36:52,070 ond gadewch i fath o edrych drwy hyn y mae pob newidyn yn ei olygu. 502 00:36:52,070 --> 00:36:55,000 Mae ein canlyniad terfynol yn mynd i fod y ciphertext. 503 00:36:55,000 --> 00:36:58,300 Felly, mae hyn yn dweud bod cymeriad ith y ciphertext 504 00:36:58,300 --> 00:37:02,500 yn mynd i gyfateb i gymeriad ith y plaintext. 505 00:37:02,500 --> 00:37:08,130 Mae hynny'n gwneud synnwyr oherwydd ein bod eisiau i bob amser yn leinin y pethau hyn i fyny. 506 00:37:08,130 --> 00:37:13,480 Felly, mae'n mynd i fod yn gymeriad ith y ciphertext ogystal k, sef ein allweddol - 507 00:37:13,480 --> 00:37:17,230 sy'n gwneud synnwyr - ac yna rydym yn cael y mod 26. 508 00:37:17,230 --> 00:37:19,860 Cofiwch yn ôl pan gawsom y ZED 509 00:37:19,860 --> 00:37:24,190 doedden ni ddim eisiau mynd i mewn i'r cymeriad, felly rydym yn awyddus i mod yn 510 00:37:24,190 --> 00:37:26,540 a math o lapio o amgylch y wyddor. 511 00:37:26,540 --> 00:37:33,430 Ar ôl ZED fyddech chi'n mynd i a, b, c, d, nes i chi gyrraedd y nifer cywir. 512 00:37:33,430 --> 00:37:44,690 Felly, rydym yn gwybod bod ZED, os + 6, yn rhoi i ni f oherwydd ar ôl ZED yn dod a, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Felly, gadewch i ni gofio ein bod yn gwybod yn sicr bod ZED + 6 yn mynd i roi i ni f. 514 00:37:52,530 --> 00:38:03,530 Yn gwerthoedd ASCII, z yn 122 ac f yw 102. 515 00:38:03,530 --> 00:38:10,570 Felly, mae'n rhaid i ni ddod o hyd i ryw ffordd o wneud ein Cesar fformiwla yn rhoi 102 516 00:38:10,570 --> 00:38:13,590 ar ôl cymryd mewn 122. 517 00:38:13,590 --> 00:38:19,550 Felly, os ydym yn unig cymhwyso'r fformiwla honno, y% ('z' + 6) 26, sydd mewn gwirionedd yn rhoi chi 24 518 00:38:19,550 --> 00:38:25,980 oherwydd 122 + 6 yn 128; 128% 26 yn rhoi chi 24 gweddill. 519 00:38:25,980 --> 00:38:29,140 Ond nid yw hynny'n ei olygu mewn gwirionedd f. Na yn bendant 102. 520 00:38:29,140 --> 00:38:33,590 Nad hefyd y llythyr 6ed yn yr wyddor. 521 00:38:33,590 --> 00:38:41,550 Felly, yn amlwg, mae angen i ni gael rhyw ffordd o tweaking y darn ychydig. 522 00:38:42,970 --> 00:38:51,340 O ran y wyddor rheolaidd, rydym yn gwybod bod z yn y llythyr 26 a f yw 6ed. 523 00:38:51,340 --> 00:38:55,460 Ond rydym mewn gwyddoniaeth gyfrifiadurol, felly rydym yn mynd i mynegai ar 0. 524 00:38:55,460 --> 00:39:00,690 Felly, yna yn lle z yn y rhif 26, rydym yn mynd i ddweud ei rhif 25 525 00:39:00,690 --> 00:39:02,630 oherwydd bod yw 0. 526 00:39:02,630 --> 00:39:04,770 Felly, nawr gadewch i wneud cais fformiwla hon. 527 00:39:04,770 --> 00:39:11,710 Mae gennym z cynrychioli gan 25 + 6, sy'n rhoi i chi 31. 528 00:39:11,710 --> 00:39:15,790 A 31 mod 26 yn rhoi i chi 5 fel gweddill. 529 00:39:15,790 --> 00:39:20,500 Mae hynny'n berffaith oherwydd gwyddom fod f yn y llythyr yn 5ed yn y wyddor. 530 00:39:20,500 --> 00:39:26,400 Ond mae'n dal yn f, dde? Mae'n dal yn 102. 531 00:39:26,400 --> 00:39:32,730 Felly, yna ar gyfer y pset, bydd yn her yn ceisio dod o hyd i'r berthynas 532 00:39:32,730 --> 00:39:36,910 rhwng y trosi rhwng y gwerthoedd ASCII a'r mynegai yn nhrefn yr wyddor. 533 00:39:36,910 --> 00:39:40,280 Yn y bôn, yr hyn y byddwch am ei wneud, yr ydych am ddechrau gyda gwerthoedd ASCII, 534 00:39:40,280 --> 00:39:45,390 ond yna rydych am i rhywsut cyfieithu hynny i mynegai yn nhrefn yr wyddor 535 00:39:45,390 --> 00:39:52,610 yna cyfrifwch pa llythyr dylai hi fod - yn y bôn, beth yw ei nhrefn yr wyddor mynegai yn 536 00:39:52,610 --> 00:39:57,660 o gymeriad cipher - yna gyfieithu hynny yn ôl i'r gwerthoedd ASCII. 537 00:39:57,660 --> 00:40:04,870 Felly, os ydych chwip allan eich bwrdd ASCII, yna ceisiwch ddod o hyd i berthynas rhwng, dyweder, 102 a 5 538 00:40:04,870 --> 00:40:10,440 neu 122 a 25. 539 00:40:12,140 --> 00:40:15,690 Rydym wedi gotten ein allweddol o'r dadleuon llinell orchymyn, rydym wedi gotten y plaintext, 540 00:40:15,690 --> 00:40:17,520 rydym wedi enciphered hynny. 541 00:40:17,520 --> 00:40:19,820 Nawr popeth yr ydym wedi ôl i'w wneud yw argraffu. 542 00:40:19,820 --> 00:40:22,040 Gallem wneud hyn yn cwpl o ffyrdd gwahanol. 543 00:40:22,040 --> 00:40:24,570 Yr hyn y gallem ei wneud mewn gwirionedd argraffu wrth i ni fynd ymlaen. 544 00:40:24,570 --> 00:40:28,250 Wrth i ni ailadrodd dros y cymeriadau yn y llinyn, 545 00:40:28,250 --> 00:40:31,660 gallem dim ond dim ond argraffu i'r dde ac yna pan fyddwn gyfrifo. 546 00:40:31,660 --> 00:40:36,030 Fel arall, gallech hefyd ei storio mewn amrywiaeth ac mae ganddynt amrywiaeth o gymeriadau 547 00:40:36,030 --> 00:40:39,280 ac ar y diwedd ailadrodd dros y casgliad cyfan a'i hargraffu. 548 00:40:39,280 --> 00:40:40,980 Felly, mae gennych ychydig o ddewisiadau ar gyfer hynny. 549 00:40:40,980 --> 00:40:47,280 A chofiwch fod c% yn mynd i fod yn dalfan ar gyfer argraffu cymeriad. 550 00:40:47,280 --> 00:40:50,420 Felly, mae gennym Caesar, ac yn awr rydym yn symud ymlaen i Vigenere, 551 00:40:50,420 --> 00:40:57,580 sy'n debyg iawn i Cesar, ond dim ond ychydig yn fwy cymhleth. 552 00:40:57,580 --> 00:41:03,310 Felly, yn y bôn â Vigenere yn ydych yn mynd i gael eu pasio mewn keyword. 553 00:41:03,310 --> 00:41:06,510 Felly yn hytrach na nifer, rydych chi'n mynd i gael llinyn, 554 00:41:06,510 --> 00:41:09,200 ac felly mae hynny'n mynd i weithredu fel eich allweddair. 555 00:41:09,200 --> 00:41:14,440 Yna, fel arfer, rydych chi'n mynd i gael sbardun ar gyfer llinyn gan y defnyddiwr 556 00:41:14,440 --> 00:41:19,050 ac yna encipher ac yna yn rhoi iddynt y cefn ciphertext. 557 00:41:19,050 --> 00:41:24,650 Felly, fel y dywedais, mae'n debyg iawn i Cesar, ac eithrio yn hytrach na symud i nifer penodol, 558 00:41:24,650 --> 00:41:30,620 yw'r rhif yn wir yn mynd i newid bob amser o gymeriad i gymeriad. 559 00:41:30,620 --> 00:41:34,890 Er mwyn cynrychioli'r gwir nifer yn newid, mae'n gynrychiolir gan y llythrennau bysellfwrdd. 560 00:41:34,890 --> 00:41:43,150 Felly, os ydych yn nodi yn newid o, er enghraifft, yna byddai hynny'n cyfateb i newid o 0. 561 00:41:43,150 --> 00:41:45,900 Felly mae'n unwaith eto yn ôl i'r mynegai yn nhrefn yr wyddor. 562 00:41:45,900 --> 00:41:49,100 Beth allai fod yn ddefnyddiol os ydych chi'n gweld ein bod mewn gwirionedd yn delio â gwerthoedd ASCII 563 00:41:49,100 --> 00:41:51,790 yn ogystal â'r llythrennau, yn ogystal â'r mynegai yn nhrefn yr wyddor, 564 00:41:51,790 --> 00:41:58,020 efallai dod o hyd neu wneud eich bwrdd eich hun ASCII sy'n dangos y mynegai yn nhrefn yr wyddor o 0 drwy 25, 565 00:41:58,020 --> 00:42:03,750 a thrwy z, a'r gwerthoedd ASCII fel y gallwch fath o weld y berthynas 566 00:42:03,750 --> 00:42:07,020 a braslunio allan a cheisio dod o hyd rhai patrymau. 567 00:42:07,020 --> 00:42:11,010 Yn yr un modd, os ydych yn symud yn y lle penodol gan f - 568 00:42:11,010 --> 00:42:21,110 ac mae hyn yn naill ai f llythrennau bach neu priflythyren - yna byddai hynny'n cyfateb i 5. 569 00:42:21,110 --> 00:42:24,180 A ydym yn dda hyd yn hyn? 570 00:42:25,770 --> 00:42:30,050 Mae'r fformiwla ar gyfer Vigenere yn ychydig yn wahanol. 571 00:42:30,050 --> 00:42:32,960 Yn y bôn, byddwch yn gweld ei fod yn union fel Caesar, 572 00:42:32,960 --> 00:42:37,390 ac eithrio hytrach na dim ond k gennym k mynegai j. 573 00:42:37,390 --> 00:42:44,810 Hysbysiad nad ydym yn eu defnyddio i fod yn ei hanfod, hyd y gair allweddol 574 00:42:44,810 --> 00:42:49,850 nid yw'n awdurdodedig hyd ein ciphertext. 575 00:42:49,850 --> 00:42:56,130 Bydd hyn yn gliriach ychydig pan fyddwn yn gweld enghraifft bod gen i ychydig yn nes ymlaen. 576 00:42:56,130 --> 00:43:03,160 Yn y bôn, os ydych yn rhedeg eich rhaglen gyda gair allweddol o ohai, 577 00:43:03,160 --> 00:43:08,560 yna mae hynny'n golygu bod bob tro, ohai yn mynd i fod yn eich shifft. 578 00:43:08,560 --> 00:43:11,060 Felly, yn dibynnu ar ba swydd yr ydych yn eich allweddair, 579 00:43:11,060 --> 00:43:15,800 ydych yn mynd i symud eich cymeriad ciphertext penodol erbyn y swm hwnnw. 580 00:43:15,800 --> 00:43:19,630 Unwaith eto, yn union fel Caesar, rydym am wneud yn siŵr ein bod yn gwarchod y cyfalafu o bethau 581 00:43:19,630 --> 00:43:22,900 ac rydym yn llythyrau encipher nid yn unig, cymeriadau neu ofodau. 582 00:43:22,900 --> 00:43:26,330 Felly, edrych yn ôl i Cesar ar y swyddogaethau y gallech fod wedi eu defnyddio, 583 00:43:26,330 --> 00:43:32,570 y ffordd yr ydych wedi penderfynu sut i symud pethau, ac yn cymhwyso hynny at eich rhaglen yma. 584 00:43:32,570 --> 00:43:35,260 Felly, gadewch i ni fapio'r hyn. 585 00:43:35,260 --> 00:43:39,680 Mae gennym plaintext ein bod wedi gotten gan y defnyddiwr rhag GetString 586 00:43:39,680 --> 00:43:44,090 Mae hyn yn dweud ... yn CS50! 587 00:43:44,090 --> 00:43:47,090 Yna, mae gennym keyword o ohai. 588 00:43:47,090 --> 00:43:50,930 Mae'r 4 nod cyntaf yn eithaf syml. 589 00:43:50,930 --> 00:43:55,580 Rydym yn gwybod bod T yn mynd i gael ei symud gan o, 590 00:43:55,580 --> 00:44:01,990 yna h yn mynd i gael ei symud gan h, i yn mynd i gael ei symud gan a. 591 00:44:01,990 --> 00:44:04,610 Yma byddwch yn gweld bod yn cynrychioli 0, 592 00:44:04,610 --> 00:44:11,940 felly, mae'r gwerth terfynol mewn gwirionedd dim ond un llythyren ag o'r blaen. 593 00:44:11,940 --> 00:44:15,250 Yna s wedi ei symud gan i. 594 00:44:15,250 --> 00:44:19,370 Ond yna mae gennych y cyfnodau hyn yma. 595 00:44:19,370 --> 00:44:25,960 Nid ydym am i encipher hynny, felly, yna nid ydym yn ei newid gan unrhyw beth 596 00:44:25,960 --> 00:44:31,280 a dim ond argraffu'r cyfnod newid. 597 00:44:31,280 --> 00:44:38,020 [Myfyrwyr] Nid wyf yn deall sut rydych yn gwybod bod hyn yn cael ei symud gan - Ble wnaethoch chi - >> O, sori. 598 00:44:38,020 --> 00:44:41,620 Ar y brig yma byddwch yn gweld bod ohai llinell orchymyn dadl y fan hyn, 599 00:44:41,620 --> 00:44:43,740 mae hynny'n mynd i fod yn yr allweddair. 600 00:44:43,740 --> 00:44:49,550 Ac felly yn y bôn, rydych yn beicio dros y cymeriadau yn y keyword. 601 00:44:49,550 --> 00:44:52,020 [Myfyrwyr] Felly, o yn mynd i gael eu symud yr un fath - 602 00:44:52,020 --> 00:44:56,260 Felly, o cyfateb i nifer penodol yn yr wyddor. 603 00:44:56,260 --> 00:44:58,400 [Myfyrwyr] Hawl. Ond lle wnaethoch chi gael y rhan CS50 o? 604 00:44:58,400 --> 00:45:02,540 Oh. Dyna sydd yn GetString lle rydych chi fel, "Rhowch i mi llinyn i amgodio." 605 00:45:02,540 --> 00:45:07,510 [Myfyrwyr] Maen nhw'n mynd i roi ddadl honno i symud drwy 606 00:45:07,510 --> 00:45:09,380 ac yna byddwch yn gofyn am eich llinyn cyntaf. >> Yeah. 607 00:45:09,380 --> 00:45:12,440 Felly, pan fyddant yn rhedeg y rhaglen, maent yn mynd i gynnwys y gair allweddol 608 00:45:12,440 --> 00:45:14,740 yn eu dadleuon llinell orchymyn pan fyddant yn rhedeg. 609 00:45:14,740 --> 00:45:19,740 Yna ar ôl i chi wedi gwirio eu bod wedi cael mewn gwirionedd i chi 1 a dim mwy, nid llai, 610 00:45:19,740 --> 00:45:23,750 yna rydych chi'n mynd i'w hannog i gael llinyn, yn dweud, "Rhowch i mi llinyn." 611 00:45:23,750 --> 00:45:27,630 Felly dyna lle yn yr achos hwn maen nhw wedi rhoi i chi ... Mae hyn yn yn CS50! 612 00:45:27,630 --> 00:45:32,090 Felly, yna rydych chi'n mynd i ddefnyddio'r ac yn defnyddio ohai ac yn ailadrodd drosodd. 613 00:45:32,090 --> 00:45:38,200 Sylwch fod yma rydym yn anwybyddu'r amgryptio y cyfnodau, y 614 00:45:38,200 --> 00:45:51,660 ond o ran ein sefyllfa ar gyfer ohai, yr un nesaf a ddefnyddiwyd gennym o. 615 00:45:51,660 --> 00:45:54,990 Yn yr achos hwn mae'n galetach i'w gweld oherwydd dyna 4, 616 00:45:54,990 --> 00:45:57,710 felly gadewch i ni barhau tipyn. Dim ond aros gyda mi yma. 617 00:45:57,710 --> 00:46:02,960 Yna, mae gennym ia s, sy'n cael eu cyfieithu wedyn gan o a h yn y drefn honno. 618 00:46:02,960 --> 00:46:09,370 Yna, mae gennym le, ac felly, yna rydym yn gwybod nad ydym yn mynd i encipher y bylchau. 619 00:46:09,370 --> 00:46:18,930 Ond rhybudd bod yn hytrach na mynd i yn y fan a'r lle iawn yma, 620 00:46:18,930 --> 00:46:28,330 rydym yn amgryptio gan - nid wyf yn gwybod os gallwch weld hynny - i'r dde yma. 621 00:46:28,330 --> 00:46:33,710 Felly, nid yw'n debyg i chi a bennwyd ymlaen llaw mewn gwirionedd, dyweder, o yn mynd yma, h yn mynd yma, 622 00:46:33,710 --> 00:46:39,200 a mynd yma, i mynd yma, o, h, a, i, o, h, a, i. Nid ydych yn gwneud hynny. 623 00:46:39,200 --> 00:46:43,760 Dim ond symud eich safle yn y gair allweddol 624 00:46:43,760 --> 00:46:51,020 pan fyddwch yn gwybod eich bod mewn gwirionedd yn mynd i fod yn amgryptio llythyr go iawn. 625 00:46:51,020 --> 00:46:53,920 A yw'r math hwnnw o gwneud synnwyr? 626 00:46:53,920 --> 00:46:55,800 Iawn. 627 00:46:56,490 --> 00:46:58,500 Felly, dim ond rhai nodiadau atgoffa. 628 00:46:58,500 --> 00:47:03,760 Byddwch am wneud yn siŵr eich bod ond yn symud ymlaen i'r llythyr nesaf yn eich allweddair 629 00:47:03,760 --> 00:47:06,390 os yw'r cymeriad yn eich plaintext yn llythyr. 630 00:47:06,390 --> 00:47:09,120 Felly, yn dweud ein bod ni'n ar y o. 631 00:47:09,120 --> 00:47:19,310 Rydym yn sylwi bod cymeriad nesaf, y mynegai i y plaintext, yn rhif, er enghraifft. 632 00:47:19,310 --> 00:47:31,630 Yna, nid ydym yn symud ymlaen j, y mynegai ar gyfer ein keyword, nes i ni gyrraedd llythyr arall. 633 00:47:31,630 --> 00:47:36,230 Unwaith eto, byddwch hefyd eisiau gwneud yn siŵr eich bod yn cofleidiol i ddechrau'r gair allweddol 634 00:47:36,230 --> 00:47:37,770 pan fyddwch chi yn y diwedd. 635 00:47:37,770 --> 00:47:42,030 Os ydych yn gweld yma rydym yn i, yr un nesaf fod o. 636 00:47:42,030 --> 00:47:47,690 Felly rydych chi am ddod o hyd i rhyw ffordd o allu cofleidiol i ddechrau eich allweddair 637 00:47:47,690 --> 00:47:49,470 bob tro y byddwch yn cyrraedd y diwedd. 638 00:47:49,470 --> 00:47:55,040 Ac felly unwaith eto, pa fath o gweithredwr yn ddefnyddiol yn yr achos hwnnw ar gyfer lapio o gwmpas? 639 00:47:56,630 --> 00:47:59,840 Fel yn y cyfrif oddi ar enghraifft. 640 00:47:59,840 --> 00:48:03,710 [Myfyrwyr] Mae'r arwydd y cant. >> Yeah, y, arwydd y cant, sef modwlo. 641 00:48:03,710 --> 00:48:11,250 Felly, bydd modwlo dod i mewn 'n hylaw yma pan fyddwch am i lapio dros y mynegai yn eich ohai. 642 00:48:11,250 --> 00:48:17,700 A dim ond awgrym cyflym: Ceisiwch feddwl o lapio dros y gair allweddol yn debyg i ffwrdd cyfrif, 643 00:48:17,700 --> 00:48:23,590 lle os oes 3 grŵp, y person 4ydd, 644 00:48:23,590 --> 00:48:30,610 eu rhif hwy a ddywedasant oedd 4 mod 3, a oedd 1. 645 00:48:30,610 --> 00:48:32,880 Felly, ceisiwch feddwl am y ffordd honno. 646 00:48:34,770 --> 00:48:42,740 Wrth i chi weld yn y fformiwla, ble bynnag yr ydych yn cael ci ac yna pi ond yna kj, 647 00:48:42,740 --> 00:48:44,700 ydych am wneud yn siŵr eich bod yn cadw golwg ar y rhai. 648 00:48:44,700 --> 00:48:47,580 Nid oes angen i chi alw i, nid oes angen i chi alw j, 649 00:48:47,580 --> 00:48:53,270 ond eich bod am wneud yn siŵr eich bod yn cadw golwg ar y sefyllfa yr ydych chi yn yn eich plaintext 650 00:48:53,270 --> 00:48:55,790 yn ogystal â'r sefyllfa eich bod yn yn eich allweddair 651 00:48:55,790 --> 00:48:59,840 oherwydd nid yw pobl o reidrwydd yn mynd i fod yr un fath. 652 00:48:59,840 --> 00:49:06,400 Nid yn unig y mae y gair allweddol - gallai fod yn hyd hollol wahanol nag y mae eich plaintext. 653 00:49:06,400 --> 00:49:09,140 Hefyd, mae eich plaintext, mae nifer a chymeriadau, 654 00:49:09,140 --> 00:49:14,450 felly nid yw'n mynd i berffaith cyd-fynd i fyny at ei gilydd. Ydw. 655 00:49:14,450 --> 00:49:19,280 [Myfyrwyr] A oes swyddogaeth i newid achos? 656 00:49:19,280 --> 00:49:24,530 Allwch chi newid i gyfalaf A? >> Yeah, mae bendant yn. 657 00:49:24,530 --> 00:49:27,890 Gallwch edrych ar - credaf ei fod yn toupper, pob gair 1. 658 00:49:30,650 --> 00:49:36,310 Ond pan fyddwch yn ceisio cipher pethau a chadw y testun, 659 00:49:36,310 --> 00:49:39,350 mae'n well yn y bôn i gael achosion ar wahân. 660 00:49:39,350 --> 00:49:42,040 Os yw'n priflythyren, yna rydych eisiau symud gan y 661 00:49:42,040 --> 00:49:46,460 oherwydd yn eich fformiwla, pan fyddwch yn edrych yn ôl sut y mae'n rhaid i ni fath o fynd 662 00:49:46,460 --> 00:49:50,900 rhyng-gyfnewidiol rhwng y ffordd ASCII o gynrychioli rhifau 663 00:49:50,900 --> 00:49:55,020 ac mae'r mynegai yn nhrefn yr wyddor gwir, rydym am wneud yn siŵr 664 00:49:55,020 --> 00:50:01,850 mae mynd i fod yn rhyw fath o batrwm eich bod yn mynd i'w defnyddio. 665 00:50:01,850 --> 00:50:04,580 Nodyn arall ar y patrwm, mewn gwirionedd. 666 00:50:04,580 --> 00:50:07,250 Rydych chi'n mynd i bendant yn ymdrin â rhifau. 667 00:50:07,250 --> 00:50:11,280 Ceisiwch beidio â defnyddio rhifau hud, sy'n enghraifft o arddull. 668 00:50:11,280 --> 00:50:18,470 Felly, dywedwch eich bod eisiau i bob amser yn rhywbeth newid gan ei hoffi - 669 00:50:18,470 --> 00:50:22,400 Iawn, felly awgrym, un arall spoiler yw pan fyddwch yn mynd i gael ei symud rhywbeth 670 00:50:22,400 --> 00:50:26,310 o swm penodol, ceisiwch beidio i gynrychioli'r gan nifer gwirioneddol 671 00:50:26,310 --> 00:50:32,810 ond yn hytrach ceisio gweld a allwch chi ddefnyddio'r gwerth ASCII, a fydd yn fath o gwneud mwy o synnwyr. 672 00:50:32,810 --> 00:50:35,470 Nodyn arall: Gan ein bod yn delio gyda fformiwlâu, 673 00:50:35,470 --> 00:50:41,200 hyd yn oed er y bydd eich TF math o yn gwybod pa batrwm efallai y byddwch yn eu defnyddio, 674 00:50:41,200 --> 00:50:44,430 gorau i yn eich sylwadau math o esbonio'r rhesymeg, fel, 675 00:50:44,430 --> 00:50:51,880 "Im 'yn arfer y patrwm hwn oherwydd ..." a math o esbonio'r patrwm yn gryno yn eich sylwadau. 676 00:50:54,090 --> 00:50:58,990 [Roedd hyn yn walkthrough 2] Os nad oes unrhyw gwestiynau eraill, yna bydd Fi jyst aros yma am ychydig. 677 00:50:58,990 --> 00:51:04,370 Pob lwc gyda'ch pset 2: Crypto a diolch am ddod. 678 00:51:06,070 --> 00:51:08,620 [Myfyrwyr] Diolch yn fawr. Diolch >>. 679 00:51:09,220 --> 00:51:10,800 [Media intro Offline]