[Powered by Google Translate] [Walkthrough - 2 Set Problem] [Zamyla Chan - Harvard University] [Mae hyn yn CS50. CS50.TV] Mae pob hawl. Helo, bawb, a chroeso i Walkthrough 2. Yn gyntaf, hoffwn eich llongyfarch am orffen pset 1. Rwy'n gwybod y gallai fod wedi bod ychydig yn anodd i rai ohonoch, gallai fod wedi bod yn eich rhaglen cyfrifiadur cyntaf eich bod wedi ysgrifennu, ond dim ond cofio bod ar ddiwedd y, pan fyddwch yn edrych yn ôl ar ddiwedd y semester, byddwch yn edrych ar pset 1 a byddwch yn dweud, "Hey, gallwn fod wedi gwneud hynny mewn 5 munud." Felly, adnabod ac yn ymddiried bod ar ddiwedd y byddwch yn bendant yn dod o hyd i pset 1 yn eithaf syml. Ond am nawr mae'n gamp enfawr, a llongyfarchiadau ar gyfer cael ei wneud. Nawr, hefyd nodyn sydyn cyn i ni fynd i mewn i'r cig y walkthrough. Fi jyst eisiau gwneud nodyn sydyn fy mod na fydd weithiau'n cael digon o amser yn ystod y walkthroughs i fynd drwy bob un ffordd o wneud y broblem a osodwyd ac yn hytrach dim ond efallai canolbwyntio ar 1 neu 2 fath o implementations, ffyrdd y gallech chi wneud hyn. Ond nid yw hynny'n dweud eich bod yn cael eu gwahardd rhag gwneud ei ffordd arall. Yn aml, fel gyda gwyddoniaeth gyfrifiadurol, sawl ffordd o wneud pethau, ac felly yn bendant mae croeso i chi ddefnyddio math gwahanol o ateb na efallai fy mod wedi cyflwyno. [Pset 2: Crypto - Zamyla Chan - zamyla@cs50.net] [Pset2 - 0. Mae Adran o Gwestiynau - 1. Caesar - 2. Vigenere] Mae pob hawl. Felly, problem gosod 2: Crypto yn un llawn hwyl. Unwaith eto, gyda phob pset byddwch yn dechrau gydag adran o gwestiynau mae hynny'n mynd i gael eu cynnal yn eich adrannau gyda'ch cyd-addysgu a bennwyd. Nid ydym yn mynd i fynd drwy'r rhain dros y walkthrough, ond maent yn bendant yn eich helpu i gwblhau'r pset. Felly, y rhan gyntaf o'r broblem a osodwyd yn Cesar. Ac felly yn Cesar bydd rhywun yn pasio i chi allweddol gyda cyfanrif, a byddwch yn amgryptio cyfres o destun eu bod yn darparu eich a'u rhoi yn ôl yn beth amgryptio. Os oes unrhyw un yn gwylio Stori Nadolig, mae 'na enghraifft o hynny yno. Yna ail ran y broblem a osodwyd yn Vigenere, sydd yn dechneg amgryptio mwy datblygedig. Ac felly yr ydym yn mynd i encipher darn o destun, ac eithrio yn hytrach na gyda dim ond un cyfanrif, rydym yn wir yn mynd i amgodio ei gyda gair allweddol y bydd y defnyddiwr yn rhoi i ni. Iawn, felly yr offeryn cyntaf yn y heddiw toolbox mewn gwirionedd yn mynd i fod yn diweddaru'r offer. Ar y bwrdd trafod byddem yn gweld pethau fel, "Pam nad yw hyn yn gweithio?" "Pam does Cyflwyno 50 gwaith?" ac yn aml dyma'r ateb mewn gwirionedd yn unig i ddiweddaru eich offer. Ac felly os ydych yn unig yn rhedeg mewn ffenestr terfynell yn eich sudo offer iym-y - sy'n baner yn dweud ie, diweddaru popeth - diweddariad, yna bydd eich offer diweddaru os oes angen. Ac nid yw'n brifo os ydych eisioes ar y fersiwn mwyaf diweddar o'r offer. Yna bydd yn dim ond dweud na diweddariadau newydd ar gael a gallwch barhau i weithio ynghyd. Ond mae hyn yn dda i weithredu hyd yn oed bob amser y byddwch yn agor yr offer oherwydd ein bod yn dal i fod yn fawr iawn - weithiau os byddwn yn dod i mewn i bug - ei gosod yn y peiriant. Felly, gwnewch yn siwr bod gennych y fersiwn diweddaraf o'r offer a rhedeg sy'n diweddaru'r yno. Mae pob hawl. Felly, ers i ni yn delio gyda llythyrau a newid, enciphering pethau, ydym yn mynd i wir eisiau dod yn ffrindiau gorau gyda ein siart ASCII. Mae rhai niferus ar-lein, os ydych yn dod o hyd. Efallai hyd yn oed wneud eich pen eich hun. Yn y bôn, gyda phob llythyr a phob rhif a phob cymeriad mae nifer yn gysylltiedig â hwy, ac felly mae'n dda gweld eu gwerthoedd ASCII ochr yn ochr â'r llythyr ei hun. Bydd hynny yn bendant yn eich helpu yn y set broblem. Un peth sydd wir yn fy helpu yn y set hon broblem oedd mewn gwirionedd yn ei hargraffu, a gan fy mod yn mynd drwy, byddwn mewn gwirionedd yn tynnu arno, ysgrifennu, "Os yw hyn yn gorfod mynd i yno, yna ..." Math o dynnu arno a marcio i fyny, yn dod yn ffrindiau gorau â'ch bwrdd ASCII. Yna, mae gennym ychydig o offer eraill yn ein gwaredu. Y tro hwn yn hytrach na mewn gwirionedd yn annog y defnyddiwr am eu holl fewnbwn ydym yn mynd i wneud cyfuniad. Rydym yn mynd i ysgogi nhw am rywfaint o fewnbwn, ond rydym ni hefyd yn mynd i jyst yn defnyddio dadleuon llinell orchymyn. Felly, pan maent yn rhedeg eu rhaglen, fel arfer byddwch yn ei ddweud. / Helo, er enghraifft, os yw eich rhaglen yn hello.c. Ond y tro hwn yn hytrach na dim ond dweud hynny, gallant roi geiriau, dadleuon wedyn. Ac felly yr ydym yn mynd i ddefnyddio beth bynnag y maent yn pasio i ni fel eu mewnbwn yn ogystal, felly symud y tu hwnt i anogaeth gyfer cyfanrif ond hefyd yn defnyddio dadleuon llinell orchymyn. Ac yna byddwn yn mynd i mewn i araeau a llinynnau, y byddwn yn defnyddio llawer yn ogystal. Dyma unig enghraifft o 1 siart mini ASCII. Fel y dywedais, mae pob llythyren yn cyfateb i nifer, ac felly eich bod yn gyfarwydd â hynny. Bydd yn dod yn ddefnyddiol. Ac yn ddiweddarach pan fyddwn yn dechrau gwneud rhywfaint o ASCIIMath delio â'r niferoedd - adio, tynnu nhw - yna bendant yn dda i gyfeirio at y siart. Felly dyma enghraifft o cipher Caesar - rhywbeth y gallech fod wedi chwarae gyda nhw. Mae'n yn unig yw olwyn. Yn y bôn, mae wyddor allanol ac yna mae wyddor mewnol. Felly, dde yma yn enghraifft o'r cipher Cesar, ond gydag allwedd o 0. Yn y bôn, A yn cyd-fynd gyda A, B yn cyd-fynd gyda B, yr holl ffordd i fyny i Z. Ond yna dweud ein bod eisiau allweddol 3, er enghraifft. Yna byddem yn cylchdroi yr olwyn mewnol fel bod A yn cyd-fynd â D, ac ati Ac felly mae hyn yn ei hanfod yr hyn yr ydym ni'n mynd i'w wneud. Nid oes gennym olwyn, ond beth ydym yn mynd i wneud yw gwneud ein rhaglen math o newid y wyddor ynghyd gyda ni a swm penodol o rifau. Felly, fel y dywedais o'r blaen, rydym yn mynd i fod yn delio gyda dadleuon llinell orchymyn yn ogystal â chael cyfanrif. Felly, y ffordd y bydd defnyddiwr yn rhedeg eich Cesar rhaglen yw trwy ddweud. / Cesar ac yna mynd i mewn i rhif ar ôl hynny. Ac mae'r nifer yn cynrychioli allweddol, y newid, faint o weithiau rydych yn mynd i gael ei droi olwyn mewnol eich Caesar cipher. Ac felly byddwch yn gweld yma yn enghraifft. Os ydym yn mynd i mewn i'r llythrennau o A i L yn ein Cesar cipher, yna byddai'n mewnbwn D drwy O oherwydd dyna bob llythyr symud dros 3 gwaith, yn union fel yr enghraifft o olwyn i mi yn dangos i chi. Felly, yna os gwnaethoch chi gychwyn, er enghraifft, Mae hyn yn CS50! yna byddai hefyd yn symud i gyd o'r llythyrau. Ac mae hynny'n beth pwysig yn y ddwy Caesar a Vigenere yw ein bod ni'n mynd i neidio dros unrhyw lythyrau nad ydynt yn. Felly unrhyw fannau, cymeriadau, ac ati, rhifau, rydym yn mynd i gadw yn yr un. Rydym yn unig yn mynd i newid y llythrennau yn yr achos hwn. Felly, fel y gwelwch yn yr olwyn, rydym yn unig yn cael y llythrennau sydd ar gael i ni, felly dim ond eisiau symud y llythyrau a encrypt y llythyrau. Felly, y peth cyntaf i'w wneud, byddwch yn gweld bod y defnydd ar gyfer Cesar mewn datrys gosod 2 yw cynnal Cesar ac yna mynd i mewn i nifer pan fyddwch yn rhedeg yn y derfynfa. Felly, beth mae angen i ni ei wneud yw i rhywsut gael y allweddol a chael mynediad iddo. Ac felly rydym yn awyddus i weld rhywsut ei fod yn mynd i fod yn ymresymiad llinell orchymyn ail. Mae'r un cyntaf yn mynd i fod. / Cesar, a'r un nesaf yn mynd i fod y rhif allweddol. Felly, cyn i ni gael int brif (gwag) i ddechrau ar ein rhaglenni C. Rydym yn mynd i bilio yn ôl haen ychydig ac mewn gwirionedd yn gweld bod lle basio yng ngofod at ein prif swyddogaeth rydym yn mewn gwirionedd yn delio gyda 2 baramedrau. Mae gennym int a enwir argc ac yna amrywiaeth o llinynnau a elwir yn argv. Felly argc yn gyfanrif, ac mae'n cynrychioli y nifer o ddadleuon basio i mewn i'ch rhaglen. Ac yna argv mewn gwirionedd yn y rhestr o'r dadleuon pasio. Mae pob un o'r dadleuon yn llinynnau, ac felly argv yn cynrychioli amrywiaeth, rhestr, o linynnau. Gadewch i ni siarad am araeau ychydig. Araeau eu hanfod strwythur data newydd. Mae gennym ints, rydym wedi dyblu, mae gennym llinynnau, ac yn awr mae gennym araeau. Araeau strwythurau data y gellir cynnal gwerthoedd lluosog o'r un math, felly yn y bôn, rhestr o ba fath bynnag ydych ei eisiau. Yn y bôn, os ydych eisiau rhestr o gyfanrifau holl mewn 1 amrywiol, yna byddech yn creu amrywiol newydd a oedd o amrywiaeth int fath. Felly, araeau yn sero-indexed, sy'n golygu bod yr elfen gyntaf y rhesi ar fynegai 0. Os yw'r amrywiaeth o hyd yn 4, fel yn yr enghraifft hon, yna byddai eich elfen olaf fod ar mynegai 3, sy'n 4 - 1. Felly, i greu amrywiaeth, byddech yn gwneud rhywbeth fel hyn. Dywedwch eich bod chi eisiau amrywiaeth dwbl. Mae hyn yn wir am unrhyw fath o ddata fath, er. Felly, dywedwch eich bod eisiau amrywiaeth dwbl. Dywedwch eich bod chi am ei alw blwch post. Yn union fel y byddech yn ymgychwyn unrhyw dwbl arall, y byddech yn dweud dwbl ac yna yr enw, ond y tro hwn rydym yn rhoi y cromfachau sgwâr, ac yna y nifer fydd hyd y rhesi. Nodwch fod mewn casgliadau ni allwn newid y hyd, felly byddwch bob amser yn rhaid i ddiffinio a dewis faint o flychau, faint o werthoedd eich amrywiaeth yn mynd i ddal. Felly, er mwyn gosod gwerthoedd gwahanol yn eich array, rydych chi'n mynd i ddefnyddio'r r yn canlyn chystrawen, fel y gwelwch ar y sleid. Bydd gennych blwch post 0 mynegai yn cael ei osod i 1.2, 1 blwch post mynegai set i 2.4, ac ati Felly nawr ein bod wedi adolygu araeau ychydig, gadewch i ni fynd yn ôl i argc a argv. Rydym yn gwybod bod argv bellach amrywiaeth o linynnau. Felly, pan fydd defnyddiwr yn mynd i mewn - yn dweud eu bod yn rhedeg rhaglen - maent yn ei ddweud. / helo David Malan, 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. Felly nid oes angen i chi boeni am hynny. Byddai Argc yn yr achos hwn fod yn 3 gan ei fod yn gweld 3 gair gwahanol gwahanu gan fylchau. Ac felly, yr amrywiaeth yn yr achos hwn, byddai'r mynegai gyntaf. / Helo, nesaf un David, yr un nesaf Malan. A oes unrhyw un yn gweld ar unwaith beth yw'r berthynas rhwng argv,  yr amrywiaeth, ac argc yw? Yeah. Byddwn yn mynd i mewn i hynny yn enghraifft yn args.c. Gadewch i ni weld os allwn ni fanteisio ar y berthynas rhwng y 2. Yma, efallai y gwelwch fod yn y peiriant y cais diofyn i agor. ffeiliau c weithiau Emacs. Ond rydym am ddelio â gedit, felly beth allwch chi ei wneud yw y gallwch dde glicio ar eich ffeil C, mynd i Properties, Agor Gyda, ac yna dewis gedit, Gosod fel ball, ac yn awr y dylai eich rhaglen yn agor ym gedit yn hytrach na Emacs. Perfect. Felly dyma gen i raglen yr wyf am i argraffu pob ymresymiad llinell orchymyn. Felly, beth bynnag y defnyddiwr mewnbynnau, yr wyf am ei hanfod ddychwelyd yn ôl iddynt ar linell newydd. Felly beth yw strwythur y gallwn ei ddefnyddio i ailadrodd dros rywbeth - rhywbeth yr ydych yn ôl pob tebyg a ddefnyddir yn eich 1 pset? Os ydych am i chi fynd drwy nifer penodol o bethau? >> [Myfyrwyr] I ddolen. Am ddolen. Yn union. Felly, gadewch i ni ddechrau gyda'r gyfer ddolen. Gennym ar gyfer int i = 0. Gadewch i 'jyst dechrau gyda newidyn initialization safonol. Rydw i'n mynd i adael y cyflwr ar gyfer set, ac yna dweud i + +, yn mynd i wneud pethau yno. Mae pob hawl. Felly meddwl yn ôl i argv, os argv yw'r rhestr o ddadleuon a basiwyd yn y rhaglen ac argc yw nifer o ddadleuon yn y rhaglen, yna mae hynny'n golygu bod argc yn ei hanfod hyd argv, ar y dde, oherwydd bod yn mynd i fod mor ddadleuon lawer fel y gwerth argc. Felly, os ydym am ailadrodd dros bob elfen yn argv, rydym yn mynd i eisiau i bob amser yn cael mynediad i'r amrywiol yn argv ar y mynegai a roddir. Gall hynny gael ei gynrychioli gyda hyn, dde? Mae'r newidyn yma yn cynrychioli y llinyn penodol yn yr achos hwn oherwydd ei fod yn amrywiaeth linyn - y llinyn penodol ar y mynegai a roddir. Yr hyn yr ydym am ei wneud, yn yr achos hwn rydym am ei hargraffu, felly gadewch i ni ddweud printf. Ac yn awr argv yn llinyn, felly rydym yn awyddus i roi hynny dalfan yno. Rydym eisiau llinell newydd dim ond er mwyn ei gwneud yn edrych yn dda. Felly dyma ni gael dolen i. Nid oes gennym y cyflwr eto. Felly, fi yn dechrau ar 0, ac yna bob tro y mae'n mynd i argraffu'r llinyn a roddir ar y mynegai arbennig yn y rhesi. Felly pan rydym eisiau rhoi'r gorau i argraffu elfennau yn y casgliad? Pan fyddwn wedi gorffen, dde? Pan fyddwn wedi dod i ddiwedd y rhesi. Felly, nid ydym am fod yn fwy na heibio hyd y rhesi, ac rydym eisoes yn gwybod nad oes angen i ni mewn gwirionedd yn mynd ati i gael gwybod beth hyd argv yn oherwydd ei fod wedi rhoi i ni, a beth sy'n bod? Argc. Yn union. Felly, rydym am wneud y broses hon nifer argc o weithiau. Dydw i ddim yn y cyfeiriadur cywir. Mae pob hawl. Nawr gadewch i ni wneud args. Dim gwallau, sy'n wych. Felly, gadewch i ni dim ond yn rhedeg args. Beth mae hyn yn mynd i ddychwelyd i ni? Mae'n jyst yn mynd i argraffu yn ôl. "Rydych yn bwydo i mewn args y rhaglen; Rydw i'n mynd i roi yn ôl i chi." Felly, gadewch i ni ddweud ein bod am ei ddweud args yna foo bar. Felly, yna bydd yn argraffu allan yn ôl i ni. Mae pob hawl? Felly mae yn enghraifft o sut y gallwch ddefnyddio argc a argv wybod bod argc yn cynrychioli hyd argv. Gwnewch yn siŵr nad ydych erioed gyda araeau mynediad un y tu allan hyd y rhesi gan y bydd C bendant gweiddi ar chi. Byddwch yn cael rhywbeth a elwir yn wall, sydd byth yn hwyl, yn y bôn yn dweud eich bod yn ceisio cael mynediad rhywbeth nad yw'n bodoli, nid yw'n perthyn i chi. Felly gwnewch yn siŵr, ac yn enwedig gyda'r sero-mynegeio, nid ydym am i - Fel er enghraifft, os oes gennym amrywiaeth o hyd 4, Nid yw bod 4 mynegai amrywiaeth yn bodoli oherwydd ein bod yn dechrau ar 0, ar sero mynegai. Bydd yn dod yn ail natur yn union fel ar gyfer dolenni pan fyddwn yn dechrau ar 0. Felly, dim ond yn cadw hynny mewn cof. Nid ydych am i erioed gael mynediad at y mynegai o amrywiaeth sy'n tu hwnt i'ch cyrraedd. Felly, gallwn weld nawr sut y gallwn math o fynediad y dadleuon llinell orchymyn sy'n cael eu pasio i mewn Ond wrth i chi weld y llinyn, y argv mewn gwirionedd amrywiaeth llinyn. Felly nid yw'n mewn gwirionedd cyfanrif eto, ond yn Cesar ydym am ddelio gyda chyfanrifau. Yn ffodus, mae swyddogaeth a grëwyd i ni y gellir mewn gwirionedd trosi llinyn i cyfanrif. Hefyd yn fan hyn nad ydym yn delio gyda mewnbwn defnyddiwr lle rydym yn eu hannog ar gyfer mewnbwn yma am yr allwedd, felly ni allwn mewn gwirionedd reprompt a dweud, "O, yn rhoi i mi cyfanrif arall, er enghraifft, os nad yw'n ddilys." Ond rydym yn dal i fod angen i ni wirio ar gyfer defnydd cywir. Yn Cesar eu bod yn cael dim ond i basio yn rhif 1, ac felly mae'n rhaid iddynt redeg. / Cesar, ac yna rhaid iddynt roi i chi nifer. Felly argc rhaid cael nifer penodol. Beth fyddai nifer sy'n cael os oes rhaid iddynt basio chi. / Cesar ac yna allweddol? Beth yw argc? >> [Myfyrwyr] 2. >> Dau. Yn union. Felly rydych chi am wneud yn siŵr bod argc yw 2. Fel arall, yn y bôn yn gwrthod i redeg y rhaglen. Yn y prif mae'n swyddogaeth sy'n dweud int brif felly, rydym bob amser yn gyfnewid arfer da i 0 ar ddiwedd y rhaglen lwyddiannus. Felly os, er enghraifft, maent yn rhoi chi 3 dadleuon llinell orchymyn yn hytrach na 2 neu roi i chi: 1, er enghraifft, yna beth fyddwch chi'n ei wneud yw youll 'angen at wirio ar gyfer y ac yna dychwelyd 1 ddweud, na, ni allaf fwrw ymlaen â'r rhaglen hon. [Myfyrwyr] Ni all fod yn ofod yn eich testun. >> Maddau i mi? [Myfyrwyr] Ni all fod yn ofod yn y testun rydych chi'n ceisio ei amgryptio. Ah! O ran y testun ein bod yn ceisio i amgryptio, sydd mewn gwirionedd yn dod yn nes ymlaen pan fyddwn yn rhoi y testun. Felly, ar hyn o bryd rydym yn unig yn derbyn fel dadleuon gorchymyn y nifer gwirioneddol, y newid gwirioneddol ar gyfer y amgryptio Cesar. [Myfyrwyr] Pam ydych chi angen 2 yn hytrach na dim ond 1 argc? Mae bendant yn rhif 1. Hawl. Y rheswm pam y mae angen 2 am argc yn hytrach na o 1 oherwydd pan fyddwch yn rhedeg rhaglen a dweud. / Cesar neu. / helo, sydd mewn gwirionedd yn cyfrif fel llinell orchymyn ddadl. Felly, yna sydd eisoes yn cymryd 1 ac felly, rydym yn mewnbynnu 1 yn ychwanegol. Felly, rydych chi'n mewnbynnu mewn gwirionedd llinyn yn y llinell orchymyn ddadl. Beth rydych am ei wneud, ar gyfer Cesar rydym am i ddelio â cyfanrif, fel y gallwch ddefnyddio'r swyddogaeth hon atoi. Ac yn y bôn, byddwch yn mynd heibio mewn llinyn ac yna bydd yn dychwelyd yn ôl yn gyfanrif os yw'n bosibl i wneud y llinyn i mewn i gyfanrif. Nawr cofio pan fyddwn yn delio â phethau printf neu GetString, fel 'na, rydym yn cynnwys y llyfrgelloedd sy'n benodol i ni. Felly, ar y dechrau rydym yn dechrau gyda safon tag hash I / O,. H, rhywbeth fel 'na. Wel, nid atoi o fewn un o'r llyfrgelloedd hynny, felly beth mae'n rhaid i ni ei wneud yw ein bod wedi cynnwys y llyfrgell cywir ar gyfer hynny. Felly, yn cofio yn ôl i Walkthrough 1 lle bûm yn trafod y swyddogaeth llaw. Chi deipio dyn yn eich terfynell, ac yna dilyn gan enw swyddogaeth. Ac fel y bydd yn dod i fyny rhestr gyfan o'i ddefnydd, ond yn ogystal bydd yn dod i fyny pa lyfrgell sy'n perthyn i. Felly, byddaf yn gadael hynny i chi i ddefnyddio'r swyddogaeth llaw gyda atoi a chyfrif i maes pa lyfrgell angen i chi gynnwys i fod yn gallu defnyddio'r swyddogaeth atoi. Felly, rydym wedi cael y allweddol ac yn awr mae'n dod i gael y testun plaen, ac felly sydd mewn gwirionedd yn mynd i fod mewnbwn defnyddwyr lle rydych yn brydlon. Rydym yn delio â GetInt a GetFloat, ac felly yn yr un modd rydym yn mynd i fod yn delio â GetString. Ond yn yr achos hwn nid oes angen i ni wneud unrhyw do gyfnod, neu tra dolenni i wirio. Bydd GetString sicr yn rhoi i ni llinyn, ac rydym yn mynd i amgryptio beth bynnag y defnyddiwr yn rhoi i ni. Felly gallwch gymryd yn ganiataol bod pob un o'r llinynnau defnyddiwr mewnbynnu yn gywir. Great. Felly, yna unwaith y byddwch wedi cael y allweddol ac unwaith y byddwch wedi cael y testun, nawr beth sydd ar ôl yn rhaid i chi encipher y plaintext. Dim ond yn gyflym yn cynnwys dros lingo, y plaintext yw'r hyn y mae'r defnyddiwr yn rhoi i chi, ac mae'r ciphertext yr hyn yr ydych yn dychwelyd iddynt. Felly, llinynnau, i fod yn gallu mynd trwy mewn gwirionedd llythyr trwy lythyr oherwydd rhaid inni symud bob llythyr, rydym yn deall bod llinynnau, os byddwn yn fath o groen yn ôl yr haen, rydym yn gweld bod nhw jyst 'n sylweddol rhestr o gymeriadau. Mae un yn dod ar ôl y llall. Ac er mwyn i ni drin llinynnau fel araeau oherwydd eu bod yn araeau o gymeriadau. Felly, yn dweud bod gennych llinyn a enwir testun, ac o fewn y testun amrywiol yn cael ei storio Mae hwn yn CS50. Yna byddai'r testun yn y mynegai 0 fod yn T cyfalaf, byddai mynegai 1 yn h, ac ati Ac yna gyda arrays, yn yr enghraifft argc yn args.c, gwelsom fod yn rhaid inni ailadrodd dros amrywiaeth ac felly roedd rhaid i ni ailadrodd gan i = 0 hyd nes i yn llai na'r hyd. Felly mae angen rhyw ffordd o figuring allan beth yw hyd y llinyn yn ein os ydym yn mynd i ailadrodd drosto. Yn ffodus eto, mae swyddogaeth yno i ni, er yn ddiweddarach yn CS50 byddwch yn bendant yn gallu i weithredu a gwneud eich swyddogaeth ei hun gallu cyfrifo hyd y llinyn. Ond am nawr rydym ni'n mynd i'w ddefnyddio, hyd llinyn felly strlen. Byddwch yn pasio mewn llinyn, ac yna bydd yn dychwelyd i chi int sy'n cynrychioli hyd eich llinyn. Gadewch i ni edrych ar enghraifft o sut y gallem fod yn gallu ailadrodd dros bob cymeriad mewn llinyn ac yn gwneud rhywbeth â hynny. Yr hyn yr ydym eisiau ei wneud yw ailadrodd dros bob cymeriad y llinyn, a'r hyn yr ydym eisiau ei wneud yw ein bod argraffu yn ôl pob cymeriad 1 o 1 ac eithrio rydym yn ychwanegu rhywbeth drws nesaf iddo. Felly, gadewch i ni ddechrau gyda'r gyfer ddolen. Int i = 0. Rydym yn mynd i adael lle ar gyfer y cyflwr. Rydym yn awyddus i ailadrodd hyd nes y byddwn yn cyrraedd diwedd y llinyn, dde? Felly, yna beth swyddogaeth yn rhoi i ni hyd y llinyn? [Ymateb y myfyrwyr Anghlywadwy] Dyna hyd y dadleuon llinell orchymyn. Ond ar gyfer llinyn yr ydym am ddefnyddio'r swyddogaeth sy'n rhoi i ni hyd y llinyn. Felly dyna hyd llinyn. Ac felly, yna rhaid i chi basio mewn llinyn iddo. Mae angen iddo wybod beth mae angen llinyn i gyfrifo'r hyd. Felly, yna yn yr achos hwn rydym yn delio â llinyn s. Great. Felly, yna beth yr ydym am ei wneud, gadewch i ni printf. Nawr, rydym am i ddelio â chymeriadau. Rydym am i argraffu pob cymeriad unigol. Pan fyddwch eisiau iddo argraffu arnofio, byddech yn defnyddio'r ddalfan fel f%. Gyda int byddech yn ei ddefnyddio d%. Ac felly yn yr un modd, gyda chymeriad ydych yn defnyddio c% i ddweud fy mod i'n mynd i gael ei argraffu cymeriad sy'n cael ei storio y tu mewn newidyn. Felly, rydym wedi hyn, a gadewch i ni ychwanegu cyfnod a man iddo. Pa gymeriad yr ydym yn ei ddefnyddio? Rydym yn mynd i gael ei ddefnyddio pa bynnag cymeriad ein bod chi yn y llinyn. Felly, yna rydym yn mynd i fod yn defnyddio rhywbeth gyda llinyn, ond rydym eisiau cael gafael ar y cymeriad penodol yno. Felly, os yw llinyn yn unig yw amrywiaeth, yna sut ydyn ni'n cael mynediad elfennau o araeau? Mae gennym y cromfachau sgwâr, ac yna rydym yn gosod y mynegai i mewn 'na. Felly, rydym wedi cromfachau sgwâr. Mae ein mynegai yn yr achos hwn gallwn jyst arfer i. Yn union. Felly dyma rydym yn dweud ein bod yn mynd i gael ei argraffu cymeriad ddilyn gan ddot a gofod, a bod y cymeriad yn mynd i fod y llythyr ith yn ein s llinyn. Im 'jyst yn mynd i achub hynny. Iawn. Nawr rwy'n mynd i redeg hyd llinyn. Felly, rydym wedi cael llinyn o'r enw OMG, ac yn awr mae'n cael ei bwysleisio hyd yn oed yn fwy. Yn yr un modd, gadewch i ni ddweud ein bod mewn gwirionedd yn awyddus i gael llinyn gan y defnyddiwr. Sut y gallem wneud hyn? Cyn, sut wnaethon ni gael int? Dywedasom GetInt, dde? Ond nid yw hyn yn int, felly gadewch i ni GetString. Gadewch i ni wneud hyd llinyn. Yma nid ydym yn mynd i mewn i prydlon penodol. Felly, nid wyf yn gwybod. Rydw i'n mynd i roi fy enw yn yma ac felly, yna gallaf wneud un o'r pethau hynny lle yr wyf yn neilltuo gair ar gyfer pob llythyr neu rywbeth fel 'na. Cool. Felly dyna hyd llinyn. Felly, rydym yn ôl i Cesar. Mae gennym ychydig o offer ar sut rydym yn ailadrodd dros llinyn, sut rydym yn mynd at bob elfen unigol. Felly nawr gallwn fynd yn ôl at y rhaglen. Fel y soniais o'r blaen, yn y tabl ASCII, eich ffrind gorau, rydych chi'n mynd i weld y niferoedd sy'n gysylltiedig gyda phob llythyr. Felly dyma dweud ein plaintext yw fy mod i'n chwil! Yna pob un o'r cymeriadau yn mynd i gael nifer a gwerth ASCII sy'n gysylltiedig ag ef, hyd yn oed y collnod, hyd yn oed y gofod, hyd yn oed y ebychnod, felly byddwch am gadw hynny mewn cof. Felly, yn dweud ein allweddol bod y defnyddiwr a gynhwysir yn eu llinell gorchymyn dadl yw 6. Mae hynny'n golygu am y llythyr cyntaf, sef I, sy'n cael ei gynrychioli gan 73, chi am ddychwelyd iddynt beth bynnag llythyr yn cael ei gynrychioli gan y gwerth ASCII o 73 + 6. Yn yr achos hwn a fyddai'n 79. Nawr rydym am i fynd i'r cymeriad nesaf. Felly byddai'r nesaf yn mynegai 1 y plaintext fod y collnod. Ond cofiwch mai dim ond eisiau encipher y llythyrau. Felly, rydym am wneud yn siŵr bod y collnod mewn gwirionedd yn aros yr un fath, nad ydym yn newid o 39 i 45 yn beth bynnag. Rydym am ei gadw fel collnod. Felly, rydym am i gofio dim ond encipher y llythyrau oherwydd ein bod am i bob un y symbolau eraill i aros yn ddigyfnewid yn ein rhaglen. Rhywbeth arall yr ydym am ei wneud yw cadw cyfalafu. Felly, pan fydd gennych lythyr priflythyren, dylai aros fel priflythyren. Dylai Lowercases aros fel llythrennau bach. Felly, mae rhai swyddogaethau ddefnyddiol gallu i ddelio â llythyrau yn unig enciphering a chadw cadw cyfalafu o bethau yw'r swyddogaethau islower isalpha, isupper,. Ac felly mae'r rhain yn swyddogaethau sy'n dychwelyd i chi gwerth Boole. Yn y bôn, yn wir neu'n anwir. A yw hwn yn priflythyren? A yw hyn yn alffaniwmerig? A yw hwn yn llythyr, yn y bôn. Felly dyma 3 enghraifft o sut y byddech yn ei ddefnyddio swyddogaeth honno. Yn y bôn, gallech brofi a yw'r gwerth ddychwelyd i chi gan y swyddogaeth yn gywir neu'n anghywir yn seiliedig ar y mewnbwn. Naill ai wneud rhywbeth nad encipher neu cipher neu ei wneud yn siŵr ei fod yn priflythyren, ac ati [Myfyrwyr] A allwch egluro rhai ychydig yn fwy a sut rydych yn eu defnyddio? >> Yeah, yn sicr. Felly, os ydym yn edrych yn ôl, dyma mae gennym cyfalaf sydd gennyf, dde? Felly, rydym yn gwybod fy mod yn mynd i S am fy mod + 6 yn O. Ond rydym eisiau gwneud yn siŵr bod O yn mynd i fod yn O. cyfalaf Felly y bôn, fod yn fath o fynd i newid ein mewnbwn. Felly, boed yn priflythyren neu beidio yn fath o newid y ffordd yr ydym yn ymdrin ag ef. Felly, yna, os ydym yn defnyddio'r swyddogaeth isupper ar y mynegai penodol, felly isupper ("I"), sy'n dychwelyd i ni wir, felly rydym yn gwybod ei fod yn uchaf. Felly, yna yn seiliedig ar hynny, yn ddiweddarach byddwn yn mynd i mewn i fformiwla y byddwch yn eu defnyddio i symud pethau yn Caesar, felly, yna yn y bôn, mae mynd i fod yn fformiwla ychydig yn wahanol os yw'n priflythyren yn hytrach na i lythrennau bach. Gwneud synnwyr? Yeah. Dim pryderon. Rwy'n siarad ychydig am ychwanegu 6 i lythyr, nad yw'n hollol gwneud synnwyr ac eithrio pan fyddwn yn fath o ddeall bod y cymeriadau yn fath o ymgyfnewidiol gyda chyfanrifau. Beth rydym yn ei wneud yw ein math o gastio ddefnydd ymhlyg. Byddwn yn mynd i fwrw ychydig yn nes ymlaen pan fyddwch yn cymryd gwerth ac rydych yn troi i mewn i fath gwahanol nag yn wreiddiol oedd. Ond gyda hyn pset byddwn yn gallu math o gyfnewidiol defnyddio cymeriadau a'u gwerthoedd cyfanrif cyfatebol. Felly, os ydych yn syml encase gymeriad gyda dim ond y dyfynodau sengl, yna byddwch yn gallu i weithio gydag ef gyda chyfanrifau, delio ag ef fel cyfanrif. Felly, y C cyfalaf yn ymwneud â 67. F llythrennau bach yn ymwneud â 102. Unwaith eto, os ydych am wybod y gwerthoedd hyn, edrychwch ar eich bwrdd ASCII. Felly, gadewch i ni fynd i mewn i rai enghreifftiau o sut y gallech chi fod yn gallu tynnu ac i greu, sut y gallwch chi mewn gwirionedd yn wir yn gweithio gyda'r cymeriadau, yn eu defnyddio yn gyfnewidiol. Yr wyf yn dweud bod ASCIIMath yn mynd i gyfrifo ychwanegu cymeriad i cyfanrif ac yna dangos y cymeriad o ganlyniad yn ogystal â'r gwerth ASCII yn sgil hynny. Ac felly dyma i ddim yn dweud - delio we'll â'r rhan hon yn ddiweddarach - ond yn y bôn, i ddim yn dweud y dylai'r defnyddiwr ddweud ASCIIMath redeg ar hyd gyda allweddol, ac yr wyf ddim yn dweud bod y allweddol yn mynd i fod y rhif yr ydym yn mynd i ychwanegu y cymeriad hwn. Felly dyma sylwi bod ers i mi mod yn mynnu allweddol, ers i mi mod yn mynnu eu bod yn rhoi i mi 1 peth, Dim ond eisiau derbyn. / Asciimath ac allwedd. Felly, yr wyf i'n mynd i fynnu bod argc yn hafal i 2. Os nad yw'n, yna yr wyf i'n mynd i ddychwelyd 1 a bydd y rhaglen yn gadael. Felly, yr wyf ddim yn dweud nad yw'r allwedd yn mynd i fod y ymresymiad llinell orchymyn gyntaf, mae'n mynd i fod yn yr ail un, ac fel y gwelwch yma, Rydw i'n mynd i droi hynny'n cyfanrif. Wedyn dw i'n mynd i osod gymeriad i fod yn r. Sylwch fod y math o bedyddiwyd amrywiol y mae mewn gwirionedd yn gyfanrif. Y ffordd fy mod i'n gallu defnyddio r fel cyfanrif yw drwy encasing â hyn dyfynodau sengl. Felly gefnogi ein datganiad printf lle mae gennym dalfan ar gyfer cymeriad ac yna dalfan ar gyfer cyfanrif, y cymeriad yn cael ei gynrychioli gan y fedyddiwyd, a'r cyfanrif yn allweddol. Ac felly, yna rydym yn mynd i mewn canlyniad ychwanegu'r 2 ynghyd. Felly, rydym yn mynd i ychwanegu r + beth bynnag yw'r allwedd, ac yna rydym yn mynd i argraffu'r canlyniad hynny. Felly, gadewch i ni wneud asciimath. Mae i fyny hyd yn hyn, felly gadewch i ni dim ond yn rhedeg asciimath. O, ond yn gweld, nid yw'n gwneud unrhyw beth gan nad ydym oedd mewn gwirionedd yn rhoi ei fod yn allweddol. Felly, pan fydd newydd ddychwelyd 1, ein prif swyddogaeth, 'i jyst ddychwelyd yn ôl i ni. Felly, yna gadewch i ni basio mewn cywair. Rhywun yn rhoi i mi yn rhif. >> [Myfyrwyr] 4. 4. Iawn. Felly, r cynnydd o 4 yn mynd i roi i ni v, sy'n cyfateb i'r gwerth ASCII o 118. Felly, yna mae'n fath o gwneud synnwyr bod - 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? Yna yeah, r yw 114. Felly, os ydych yn edrych ar y tabl ASCII, yna, yn sicr ddigon, fe welwch fod r yn cael ei gynrychioli gan 114. Felly, nawr ein bod yn gwybod y gallwn ychwanegu cyfanrifau â chymeriadau, mae hyn yn ymddangos yn eithaf syml. Rydym yn unig yn mynd i ailadrodd dros llinyn fel y gwelsom yn enghraifft o'r blaen. Byddwn yn gwirio os yw'n llythyr. Os ydyw, yna byddwn yn symud iddo gan beth bynnag yw'r allwedd. Pretty syml, ac eithrio pan fyddwch yn mynd i hoffi hwn, byddwch yn gweld bod z, a gynrychiolir gan 122, fyddai wedyn yn rhoi cymeriad gwahanol. Rydym mewn gwirionedd yn awyddus i aros o fewn ein wyddor, dde? Felly mae angen i chyfrif i maes rhyw ffordd o fath o lapio o gwmpas. Pan fyddwch yn cyrraedd ZED a ydych am gynyddu gan nifer benodol, nad ydych am i fynd i mewn y tu hwnt i'r adran wyddor ASCII; ydych am i lapio yn ôl yr holl ffordd i A. Ond yn cadw mewn cof eich bod yn dal i gadw yr achos. Felly ni all wybod bod llythyrau yn dod yn symbolau nid yn unig fel symbolau yn mynd i fod yn newid hefyd. Yn y pset diwethaf i chi yn bendant oedd angen, ond opsiwn oedd i weithredu eich pset barus drwy ddefnyddio'r ffwythiant modwlws. Ond yn awr rydym yn mewn gwirionedd yn mynd i angen i ddefnyddio modwlws, felly gadewch i ni dim ond yn mynd dros y darn ychydig. Yn y bôn, pan fydd gennych x modwlo y, sy'n rhoi i chi y gweddill x rannu gan y. Dyma rai enghreifftiau yma. Mae gennym 27% 15. Yn y bôn, pan fyddwch yn tynnu 15 o 27 gymaint o weithiau ag y bo modd heb gael negyddol yna byddwch yn cael 12 y chwith drosodd. Felly, dyna'r math o fel yn y cyd-destun mathemateg, ond sut allwn ni mewn gwirionedd yn defnyddio hyn? Mae'n mynd i fod yn ddefnyddiol ar gyfer ein wrapover. Ar gyfer hyn, gadewch i 'jyst dweud fy mod wedi gofyn i chi i gyd i rannu i mewn i 3 grŵp. Weithiau, byddwch yn gwneud hyn mewn grwpiau ac yn rhywbeth fel 'na. Dywedwch dywedais, "Iawn, yr wyf am i chi i gyd i gael ei rannu i 3." Sut allech chi wneud hynny? [Ymateb y myfyrwyr Anghlywadwy] Yeah, yn union. Cyfrif i ffwrdd. Iawn. Gadewch i ni mewn gwirionedd yn gwneud hynny. Ydych chi eisiau i ddechrau? [Myfyrwyr cyfrif off] 1, 2, 3, 4. Ond cofiwch ... >> [Myfyrwyr] O, sori. Mae hynny'n bwynt da iawn. Yr oeddech yn dweud 4, ond yr ydym mewn gwirionedd am i chi ddweud 1 oherwydd mai dim ond am 3 grŵp. Felly, yna, sut - Na, mae hynny'n enghraifft wirioneddol dda oherwydd wedyn sut y gallech chi ddweud 1? Beth yw'r berthynas rhwng 4 ac 1? Wel, 4 mod 3 yw 1. Felly, os ydych yn parhau, byddech yn 2. Felly, rydym wedi 1, 2, 3, 1, 2. Unwaith eto, rydych mewn gwirionedd yn y person 5ed. Sut ydych chi'n gwybod i ddweud 2 yn lle 5? Byddwch yn ei ddweud 5 mod 3 yw 2. Rwyf am i weld faint o grwpiau o 3 yn cael eu gadael drosodd, yna mha drefn wyf yn I. Ac felly, yna os ydym yn parhau ar hyd yr ystafell gyfan, yna byddem yn gweld ein bod bob amser yn gwneud cais mewn gwirionedd yn y swyddogaeth mod i ni ein hunain i fath o gyfrif i ffwrdd. Dyna math mwy o enghraifft ddiriaethol o sut y gallech eu defnyddio modwlo oherwydd fy mod i'n siwr y rhan fwyaf ohonom wedi mynd yn ôl pob tebyg drwy'r broses lle'r ydym wedi gorfod cyfrif i ffwrdd. Unrhyw gwestiynau ar modwlo? Bydd yn eithaf pwysig i ddeall y cysyniadau hyn, felly yr wyf am wneud yn siŵr eich guys yn deall. [Myfyrwyr] Os nad oes gweddill, a yw'n rhoi i chi y nifer gwirioneddol? Os bydd un o'r 3 cyntaf ohonynt wedi gwneud hynny, a fyddai'n wedi rhoi iddynt beth maent mewn gwirionedd oedd, neu y byddai wedi rhoi iddynt [Anghlywadwy] >> Mae hynny'n gwestiwn da. Pan nad oes gweddill ar gyfer y modwlo - felly ddweud eich bod wedi 6 mod 3 - sydd mewn gwirionedd yn rhoi i chi yn ôl 0. Byddwn yn siarad am hynny ychydig yn ddiweddarach. Oh yeah, er enghraifft, y 3ydd person - 3 mod 3 yn mewn gwirionedd 0 ond dywedodd 3. Felly, dyna'r math o debyg i ddal mewnol, er enghraifft, fel iawn, os yw'r mod yn 0 yna rwy'n mynd i fod y person 3ydd. Ond byddwn yn mynd i mewn i fath o sut y gallem am ddelio â'r hyn 0 yw ddiweddarach. Felly, nawr rydym rywsut wedi ffordd o fapio ZED i'r llythyr cywir. Felly, nawr rydym wedi mynd trwy yr enghreifftiau hyn, rydym yn fath o weld sut y gallai Caesar yn gweithio. Byddwch yn gweld y 2 wyddor ac yna rydych yn eu gweld symud. Felly, gadewch i ni geisio a mynegi hynny yn nhermau fformiwla. Mae'r fformiwla hon yn cael ei roi i chi mewn gwirionedd yn y fanyleb, ond gadewch i fath o edrych drwy hyn y mae pob newidyn yn ei olygu. Mae ein canlyniad terfynol yn mynd i fod y ciphertext. Felly, mae hyn yn dweud bod cymeriad ith y ciphertext yn mynd i gyfateb i gymeriad ith y plaintext. Mae hynny'n gwneud synnwyr oherwydd ein bod eisiau i bob amser yn leinin y pethau hyn i fyny. Felly, mae'n mynd i fod yn gymeriad ith y ciphertext ogystal k, sef ein allweddol - sy'n gwneud synnwyr - ac yna rydym yn cael y mod 26. Cofiwch yn ôl pan gawsom y ZED doedden ni ddim eisiau mynd i mewn i'r cymeriad, felly rydym yn awyddus i mod yn a math o lapio o amgylch y wyddor. Ar ôl ZED fyddech chi'n mynd i a, b, c, d, nes i chi gyrraedd y nifer cywir. 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. Felly, gadewch i ni gofio ein bod yn gwybod yn sicr bod ZED + 6 yn mynd i roi i ni f. Yn gwerthoedd ASCII, z yn 122 ac f yw 102. Felly, mae'n rhaid i ni ddod o hyd i ryw ffordd o wneud ein Cesar fformiwla yn rhoi 102 ar ôl cymryd mewn 122. Felly, os ydym yn unig cymhwyso'r fformiwla honno, y% ('z' + 6) 26, sydd mewn gwirionedd yn rhoi chi 24 oherwydd 122 + 6 yn 128; 128% 26 yn rhoi chi 24 gweddill. Ond nid yw hynny'n ei olygu mewn gwirionedd f. Na yn bendant 102. Nad hefyd y llythyr 6ed yn yr wyddor. Felly, yn amlwg, mae angen i ni gael rhyw ffordd o tweaking y darn ychydig. O ran y wyddor rheolaidd, rydym yn gwybod bod z yn y llythyr 26 a f yw 6ed. Ond rydym mewn gwyddoniaeth gyfrifiadurol, felly rydym yn mynd i mynegai ar 0. Felly, yna yn lle z yn y rhif 26, rydym yn mynd i ddweud ei rhif 25 oherwydd bod yw 0. Felly, nawr gadewch i wneud cais fformiwla hon. Mae gennym z cynrychioli gan 25 + 6, sy'n rhoi i chi 31. A 31 mod 26 yn rhoi i chi 5 fel gweddill. Mae hynny'n berffaith oherwydd gwyddom fod f yn y llythyr yn 5ed yn y wyddor. Ond mae'n dal yn f, dde? Mae'n dal yn 102. Felly, yna ar gyfer y pset, bydd yn her yn ceisio dod o hyd i'r berthynas rhwng y trosi rhwng y gwerthoedd ASCII a'r mynegai yn nhrefn yr wyddor. Yn y bôn, yr hyn y byddwch am ei wneud, yr ydych am ddechrau gyda gwerthoedd ASCII, ond yna rydych am i rhywsut cyfieithu hynny i mynegai yn nhrefn yr wyddor yna cyfrifwch pa llythyr dylai hi fod - yn y bôn, beth yw ei nhrefn yr wyddor mynegai yn o gymeriad cipher - yna gyfieithu hynny yn ôl i'r gwerthoedd ASCII. Felly, os ydych chwip allan eich bwrdd ASCII, yna ceisiwch ddod o hyd i berthynas rhwng, dyweder, 102 a 5 neu 122 a 25. Rydym wedi gotten ein allweddol o'r dadleuon llinell orchymyn, rydym wedi gotten y plaintext, rydym wedi enciphered hynny. Nawr popeth yr ydym wedi ôl i'w wneud yw argraffu. Gallem wneud hyn yn cwpl o ffyrdd gwahanol. Yr hyn y gallem ei wneud mewn gwirionedd argraffu wrth i ni fynd ymlaen. Wrth i ni ailadrodd dros y cymeriadau yn y llinyn, gallem dim ond dim ond argraffu i'r dde ac yna pan fyddwn gyfrifo. Fel arall, gallech hefyd ei storio mewn amrywiaeth ac mae ganddynt amrywiaeth o gymeriadau ac ar y diwedd ailadrodd dros y casgliad cyfan a'i hargraffu. Felly, mae gennych ychydig o ddewisiadau ar gyfer hynny. A chofiwch fod c% yn mynd i fod yn dalfan ar gyfer argraffu cymeriad. Felly, mae gennym Caesar, ac yn awr rydym yn symud ymlaen i Vigenere, sy'n debyg iawn i Cesar, ond dim ond ychydig yn fwy cymhleth. Felly, yn y bôn â Vigenere yn ydych yn mynd i gael eu pasio mewn keyword. Felly yn hytrach na nifer, rydych chi'n mynd i gael llinyn, ac felly mae hynny'n mynd i weithredu fel eich allweddair. Yna, fel arfer, rydych chi'n mynd i gael sbardun ar gyfer llinyn gan y defnyddiwr ac yna encipher ac yna yn rhoi iddynt y cefn ciphertext. Felly, fel y dywedais, mae'n debyg iawn i Cesar, ac eithrio yn hytrach na symud i nifer penodol, yw'r rhif yn wir yn mynd i newid bob amser o gymeriad i gymeriad. Er mwyn cynrychioli'r gwir nifer yn newid, mae'n gynrychiolir gan y llythrennau bysellfwrdd. Felly, os ydych yn nodi yn newid o, er enghraifft, yna byddai hynny'n cyfateb i newid o 0. Felly mae'n unwaith eto yn ôl i'r mynegai yn nhrefn yr wyddor. Beth allai fod yn ddefnyddiol os ydych chi'n gweld ein bod mewn gwirionedd yn delio â gwerthoedd ASCII yn ogystal â'r llythrennau, yn ogystal â'r mynegai yn nhrefn yr wyddor, efallai dod o hyd neu wneud eich bwrdd eich hun ASCII sy'n dangos y mynegai yn nhrefn yr wyddor o 0 drwy 25, a thrwy z, a'r gwerthoedd ASCII fel y gallwch fath o weld y berthynas a braslunio allan a cheisio dod o hyd rhai patrymau. Yn yr un modd, os ydych yn symud yn y lle penodol gan f - ac mae hyn yn naill ai f llythrennau bach neu priflythyren - yna byddai hynny'n cyfateb i 5. A ydym yn dda hyd yn hyn? Mae'r fformiwla ar gyfer Vigenere yn ychydig yn wahanol. Yn y bôn, byddwch yn gweld ei fod yn union fel Caesar, ac eithrio hytrach na dim ond k gennym k mynegai j. Hysbysiad nad ydym yn eu defnyddio i fod yn ei hanfod, hyd y gair allweddol nid yw'n awdurdodedig hyd ein ciphertext. Bydd hyn yn gliriach ychydig pan fyddwn yn gweld enghraifft bod gen i ychydig yn nes ymlaen. Yn y bôn, os ydych yn rhedeg eich rhaglen gyda gair allweddol o ohai, yna mae hynny'n golygu bod bob tro, ohai yn mynd i fod yn eich shifft. Felly, yn dibynnu ar ba swydd yr ydych yn eich allweddair, ydych yn mynd i symud eich cymeriad ciphertext penodol erbyn y swm hwnnw. Unwaith eto, yn union fel Caesar, rydym am wneud yn siŵr ein bod yn gwarchod y cyfalafu o bethau ac rydym yn llythyrau encipher nid yn unig, cymeriadau neu ofodau. Felly, edrych yn ôl i Cesar ar y swyddogaethau y gallech fod wedi eu defnyddio, y ffordd yr ydych wedi penderfynu sut i symud pethau, ac yn cymhwyso hynny at eich rhaglen yma. Felly, gadewch i ni fapio'r hyn. Mae gennym plaintext ein bod wedi gotten gan y defnyddiwr rhag GetString Mae hyn yn dweud ... yn CS50! Yna, mae gennym keyword o ohai. Mae'r 4 nod cyntaf yn eithaf syml. Rydym yn gwybod bod T yn mynd i gael ei symud gan o, yna h yn mynd i gael ei symud gan h, i yn mynd i gael ei symud gan a. Yma byddwch yn gweld bod yn cynrychioli 0, felly, mae'r gwerth terfynol mewn gwirionedd dim ond un llythyren ag o'r blaen. Yna s wedi ei symud gan i. Ond yna mae gennych y cyfnodau hyn yma. Nid ydym am i encipher hynny, felly, yna nid ydym yn ei newid gan unrhyw beth a dim ond argraffu'r cyfnod newid. [Myfyrwyr] Nid wyf yn deall sut rydych yn gwybod bod hyn yn cael ei symud gan - Ble wnaethoch chi - >> O, sori. Ar y brig yma byddwch yn gweld bod ohai llinell orchymyn dadl y fan hyn, mae hynny'n mynd i fod yn yr allweddair. Ac felly yn y bôn, rydych yn beicio dros y cymeriadau yn y keyword. [Myfyrwyr] Felly, o yn mynd i gael eu symud yr un fath - Felly, o cyfateb i nifer penodol yn yr wyddor. [Myfyrwyr] Hawl. Ond lle wnaethoch chi gael y rhan CS50 o? Oh. Dyna sydd yn GetString lle rydych chi fel, "Rhowch i mi llinyn i amgodio." [Myfyrwyr] Maen nhw'n mynd i roi ddadl honno i symud drwy ac yna byddwch yn gofyn am eich llinyn cyntaf. >> Yeah. Felly, pan fyddant yn rhedeg y rhaglen, maent yn mynd i gynnwys y gair allweddol yn eu dadleuon llinell orchymyn pan fyddant yn rhedeg. Yna ar ôl i chi wedi gwirio eu bod wedi cael mewn gwirionedd i chi 1 a dim mwy, nid llai, yna rydych chi'n mynd i'w hannog i gael llinyn, yn dweud, "Rhowch i mi llinyn." Felly dyna lle yn yr achos hwn maen nhw wedi rhoi i chi ... Mae hyn yn yn CS50! Felly, yna rydych chi'n mynd i ddefnyddio'r ac yn defnyddio ohai ac yn ailadrodd drosodd. Sylwch fod yma rydym yn anwybyddu'r amgryptio y cyfnodau, y ond o ran ein sefyllfa ar gyfer ohai, yr un nesaf a ddefnyddiwyd gennym o. Yn yr achos hwn mae'n galetach i'w gweld oherwydd dyna 4, felly gadewch i ni barhau tipyn. Dim ond aros gyda mi yma. Yna, mae gennym ia s, sy'n cael eu cyfieithu wedyn gan o a h yn y drefn honno. Yna, mae gennym le, ac felly, yna rydym yn gwybod nad ydym yn mynd i encipher y bylchau. Ond rhybudd bod yn hytrach na mynd i yn y fan a'r lle iawn yma, rydym yn amgryptio gan - nid wyf yn gwybod os gallwch weld hynny - i'r dde yma. Felly, nid yw'n debyg i chi a bennwyd ymlaen llaw mewn gwirionedd, dyweder, o yn mynd yma, h yn mynd yma, a mynd yma, i mynd yma, o, h, a, i, o, h, a, i. Nid ydych yn gwneud hynny. Dim ond symud eich safle yn y gair allweddol pan fyddwch yn gwybod eich bod mewn gwirionedd yn mynd i fod yn amgryptio llythyr go iawn. A yw'r math hwnnw o gwneud synnwyr? Iawn. Felly, dim ond rhai nodiadau atgoffa. Byddwch am wneud yn siŵr eich bod ond yn symud ymlaen i'r llythyr nesaf yn eich allweddair os yw'r cymeriad yn eich plaintext yn llythyr. Felly, yn dweud ein bod ni'n ar y o. Rydym yn sylwi bod cymeriad nesaf, y mynegai i y plaintext, yn rhif, er enghraifft. Yna, nid ydym yn symud ymlaen j, y mynegai ar gyfer ein keyword, nes i ni gyrraedd llythyr arall. Unwaith eto, byddwch hefyd eisiau gwneud yn siŵr eich bod yn cofleidiol i ddechrau'r gair allweddol pan fyddwch chi yn y diwedd. Os ydych yn gweld yma rydym yn i, yr un nesaf fod o. Felly rydych chi am ddod o hyd i rhyw ffordd o allu cofleidiol i ddechrau eich allweddair bob tro y byddwch yn cyrraedd y diwedd. Ac felly unwaith eto, pa fath o gweithredwr yn ddefnyddiol yn yr achos hwnnw ar gyfer lapio o gwmpas? Fel yn y cyfrif oddi ar enghraifft. [Myfyrwyr] Mae'r arwydd y cant. >> Yeah, y, arwydd y cant, sef modwlo. Felly, bydd modwlo dod i mewn 'n hylaw yma pan fyddwch am i lapio dros y mynegai yn eich ohai. A dim ond awgrym cyflym: Ceisiwch feddwl o lapio dros y gair allweddol yn debyg i ffwrdd cyfrif, lle os oes 3 grŵp, y person 4ydd, eu rhif hwy a ddywedasant oedd 4 mod 3, a oedd 1. Felly, ceisiwch feddwl am y ffordd honno. Wrth i chi weld yn y fformiwla, ble bynnag yr ydych yn cael ci ac yna pi ond yna kj, ydych am wneud yn siŵr eich bod yn cadw golwg ar y rhai. Nid oes angen i chi alw i, nid oes angen i chi alw j, ond eich bod am wneud yn siŵr eich bod yn cadw golwg ar y sefyllfa yr ydych chi yn yn eich plaintext yn ogystal â'r sefyllfa eich bod yn yn eich allweddair oherwydd nid yw pobl o reidrwydd yn mynd i fod yr un fath. Nid yn unig y mae y gair allweddol - gallai fod yn hyd hollol wahanol nag y mae eich plaintext. Hefyd, mae eich plaintext, mae nifer a chymeriadau, felly nid yw'n mynd i berffaith cyd-fynd i fyny at ei gilydd. Ydw. [Myfyrwyr] A oes swyddogaeth i newid achos? Allwch chi newid i gyfalaf A? >> Yeah, mae bendant yn. Gallwch edrych ar - credaf ei fod yn toupper, pob gair 1. Ond pan fyddwch yn ceisio cipher pethau a chadw y testun, mae'n well yn y bôn i gael achosion ar wahân. Os yw'n priflythyren, yna rydych eisiau symud gan y oherwydd yn eich fformiwla, pan fyddwch yn edrych yn ôl sut y mae'n rhaid i ni fath o fynd rhyng-gyfnewidiol rhwng y ffordd ASCII o gynrychioli rhifau ac mae'r mynegai yn nhrefn yr wyddor gwir, rydym am wneud yn siŵr mae mynd i fod yn rhyw fath o batrwm eich bod yn mynd i'w defnyddio. Nodyn arall ar y patrwm, mewn gwirionedd. Rydych chi'n mynd i bendant yn ymdrin â rhifau. Ceisiwch beidio â defnyddio rhifau hud, sy'n enghraifft o arddull. Felly, dywedwch eich bod eisiau i bob amser yn rhywbeth newid gan ei hoffi - Iawn, felly awgrym, un arall spoiler yw pan fyddwch yn mynd i gael ei symud rhywbeth o swm penodol, ceisiwch beidio i gynrychioli'r gan nifer gwirioneddol ond yn hytrach ceisio gweld a allwch chi ddefnyddio'r gwerth ASCII, a fydd yn fath o gwneud mwy o synnwyr. Nodyn arall: Gan ein bod yn delio gyda fformiwlâu, hyd yn oed er y bydd eich TF math o yn gwybod pa batrwm efallai y byddwch yn eu defnyddio, gorau i yn eich sylwadau math o esbonio'r rhesymeg, fel, "Im 'yn arfer y patrwm hwn oherwydd ..." a math o esbonio'r patrwm yn gryno yn eich sylwadau. [Roedd hyn yn walkthrough 2] Os nad oes unrhyw gwestiynau eraill, yna bydd Fi jyst aros yma am ychydig. Pob lwc gyda'ch pset 2: Crypto a diolch am ddod. [Myfyrwyr] Diolch yn fawr. Diolch >>. [Media intro Offline]