[Powered by Google Translate] [Walkthrough - Tatizo Set 2]
[Zamyla Chan - Chuo Kikuu cha Harvard]
[Hii ni CS50. CS50.TV]
Wote haki. Hello, kila mtu, na kuwakaribisha kwa walkthrough 2.
Kwanza, nataka kumpongeza wewe kwa ajili ya kumaliza pset 1.
Najua kwamba inaweza kuwa kidogo ngumu kwa baadhi yenu,
wangeweza kompyuta yako kwanza mpango kwamba aliandika,
lakini kumbuka tu kwamba mwishoni mwa huu, wakati wewe kuangalia nyuma katika mwisho wa muhula,
utasikia kuangalia pset 1 na itabidi kusema, "Hey, mimi wangefanya kwamba katika dakika 5."
Basi jua na imani kwamba katika mwisho wa hii wewe utakuwa dhahiri kupata pset 1 rahisi kabisa.
Lakini kwa sasa ni accomplishment kubwa, na pongezi kwa ajili ya kupata kufanyika.
Sasa, pia kumbuka haraka kabla ya sisi kupata katika nyama ya walkthrough.
Mimi nataka tu kufanya note haraka kwamba mimi wakati mwingine si muda wa kutosha
wakati walkthroughs kupitia kila njia moja ya kufanya seti tatizo
na badala tu labda kuzingatia 1 au 2 aina ya utekelezaji,
njia ambazo unaweza kufanya.
Lakini kwamba si kusema kwamba wewe ni haramu kutoka kufanya hivyo kwa njia nyingine.
Kuna mara nyingi, kama na sayansi ya kompyuta, njia mbalimbali za kufanya mambo,
na hivyo dhahiri kujisikia huru kutumia aina mbalimbali za ufumbuzi kuliko nipate kuwasilishwa.
[Pset 2: Crypto - Zamyla Chan - zamyla@cs50.net]
[Pset2 - 0. Sehemu ya Maswali - 1. Caesar - 2. Vigenere]
Wote haki. Hivyo tatizo kuweka 2: Crypto ni moja ya kujifurahisha.
Tena, kwa pset kila itabidi kuanza na sehemu ya maswali
ambayo inaenda kuwa uliofanywa katika sehemu yako na wenzako kupewa mafundisho.
Sisi si kwenda na kwenda kwa njia hizi juu ya walkthrough,
lakini wao dhahiri kusaidia kukamilisha pset.
Hivyo sehemu ya kwanza ya kuweka tatizo ni Kaisari.
Na hivyo katika Kaisari mtu atapita wewe muhimu na integer,
na utakuwa encrypt kamba ya maandishi kwamba wao kutoa
na kuwapa nyuma kitu uliosimbwa.
Kama mtu yeyote watched Story Krismasi, kuna mfano wa kwamba kuna.
Kisha sehemu ya pili ya kuweka tatizo ni Vigenere,
ambayo ni ya juu zaidi encryption mbinu.
Na hivyo tunakwenda encipher kipande cha maandishi,
ila badala tu na integer moja, sisi ni kweli kwenda encode ni
na Keyword kwamba mtumiaji atatupatia.
Sawa, hivyo chombo kwanza katika leo toolbox ni kweli kwenda kuwa uppdatering appliance.
Juu ya bodi ya majadiliano tunataka kuona vitu kama, "Kwa nini si kazi hii?"
"Kwa nini si Kuwasilisha 50 kazi?"
na mara nyingi ufumbuzi ni kweli tu kwa update appliance yako.
Na hivyo kama wewe kukimbia tu katika dirisha terminal katika Sudo appliance yako yum-y -
hiyo ni bendera ya kusema ndiyo, update kila kitu - update,
kisha appliance wako update kama haja kuwa.
Na haina madhara kama tayari ni saa toleo ya hivi karibuni zaidi ya appliance.
Basi itakuwa tu kusema hakuna masasisho mapya yanapatikana na unaweza kuendelea kufanya kazi pamoja.
Lakini hii ni nzuri na nitafanya hata kila wakati kwamba kufungua appliance
kwa sababu sisi ni bado sana -
wakati mwingine kama sisi kuja katika mdudu - fixing katika appliance.
Hivyo kuhakikisha kwamba una toleo ya hivi karibuni zaidi ya appliance
na kukimbia kwamba update huko.
Wote haki. Hivyo tangu sisi ni kushughulika na barua na kubadilisha, enciphering mambo,
tunakwenda kweli unataka kuwa bora na marafiki pamoja na chati yetu ASCII.
Kuna wale wengi online, kama wewe kupata. Labda hata kufanya yako mwenyewe.
Kimsingi, kwa kila barua na kila idadi na kila tabia
kuna idadi kuhusishwa na wao,
na hivyo ni vizuri kuona maadili yao ASCII sambamba barua halisi.
Hiyo dhahiri kukusaidia katika kuweka tatizo.
Jambo moja kwamba kweli imenisaidia katika kuweka tatizo hili lilikuwa kweli magazeti ni nje,
na kama mimi alikuwa anaenda kwa njia ya, mimi ingekuwa kweli kuteka juu yake,
kuandika, "Kama hii ina kwenda huko, basi ..."
Aina ya kuteka juu yake na alama yake juu, kuwa bora na marafiki pamoja na meza yako ASCII.
Basi tuna chache zana nyingine tulizonazo.
Hii wakati badala ya kweli uvuvio mtumiaji kwa ajili ya wote ya pembejeo zao
tunakwenda kufanya mchanganyiko.
Sisi ni kwenda kuwashawishi kwa ajili ya pembejeo baadhi,
lakini sisi ni pia kwenda tu kutumia hoja mstari amri.
Basi walipo kuendesha programu zao, kwa kawaida unaweza kusema /. Hello, kwa mfano,
kama mpango wako ulikuwa hello.c.
Lakini wakati huu badala ya kusema tu kwamba, wanaweza kuweka maneno hoja, baadaye.
Na hivyo sisi ni kwenda kutumia chochote kupita katika kwetu kama mchango wao pia,
hivyo kusonga zaidi tu uvuvio kwa integer lakini pia kutumia hoja mstari amri.
Na kisha tutaweza kwenda katika arrays na masharti, ambayo sisi utakuwa kutumia mengi pia.
Hapa ni mfano tu ya chati 1 mini ASCII.
Kama nilivyosema, kila barua sambamba na idadi,
na hivyo jizoeshe na kwamba. Ni atakuja katika Handy.
Na baadaye wakati sisi kuanza kufanya baadhi ASCIIMath kushughulika na idadi -
akiongeza, subtracting yao - basi dhahiri nzuri kwa kutaja chati hii.
Hivyo hapa ni mfano wa cipher Caesar - kitu ambacho unaweza kuwa alicheza na.
Ni haki ya gurudumu. Kimsingi, kuna alfabeti nje na kisha kuna alfabeti ndani.
Hivyo haki hapa ni mfano wa cipher Kaisari lakini kwa ufunguo wa 0.
Kimsingi, ni iliyokaa na, B ni iliyokaa na B, njia yote hadi Z.
Lakini kisha kusema tulitaka muhimu ya 3, kwa mfano.
Basi tutakuwa mzunguko gurudumu ya ndani ili sasa aligns na D, nk
Na hivyo hii kimsingi ni nini tunakwenda kufanya.
Hatuna gurudumu, lakini nini tunakwenda kufanya ni kufanya mpango wetu
aina ya kuhama alfabeti pamoja na sisi kiasi fulani ya namba.
Hivyo kama nilivyosema hapo kabla, tunakwenda kuwa kushughulika na hoja mstari amri
kama vile kupata integer.
Hivyo njia kwamba mtumiaji kukimbia yako Kaisari mpango ni kwa kusema. / Kaisari
na kisha kuingia idadi baada ya hapo.
Na kwamba idadi hiyo inawakilisha muhimu, kuhama,
mara ngapi wewe utaenda kupokezana gurudumu ndani ya cipher yako Kaisari.
Na hivyo unaweza kuona hapa mfano.
Kama sisi aliingia barua kutoka kwa L katika cipher wetu Kaisari,
basi ingekuwa pembejeo D kupitia O kwa sababu hiyo ni kila barua kubadilishwa zaidi ya mara 3,
tu kama mfano wa gurudumu ambayo nilikuonyeshea.
Hivyo basi kama wewe aliingia, kwa mfano, Hii ​​ni CS50!
basi ingekuwa pia hoja yote ya barua.
Na kwamba ni jambo muhimu katika wawili Kaisari na Vigenere
ni kwamba sisi ni kwenda ruka juu ya barua zisizo yoyote.
Hivyo yoyote nafasi, herufi, nk, idadi, tunakwenda kuwaweka sawa.
Sisi ni kwenda tu kuhama barua katika kesi hii.
Hivyo kama unaweza kuona katika gurudumu, sisi tu barua inapatikana kwetu,
hivyo sisi tu wanataka kuhama barua na kusimba barua.
Hivyo jambo la kwanza kufanya, ninyi kuona kwamba matumizi kwa Kaisari katika tatizo kuweka 2
ni kukimbia Kaisari na kisha kuingia idadi wakati wewe kukimbia katika terminal.
Basi nini tunahitaji kufanya ni namna fulani kupata kwamba muhimu na kupata hiyo.
Na hivyo tunataka kuona namna fulani ni kwenda kuwa ya pili ya mstari amri hoja.
moja ya kwanza ni kwenda kuwa. / Kaisari, na moja ijayo itakuwa ni idadi muhimu.
Hivyo kabla tulikuwa int kuu (utupu) kuanza C programu yetu.
Sisi ni kwenda safu peel nyuma kidogo
na kweli kuona kwamba badala ya kupita katika utupu kwa kazi yetu kuu
sisi ni kweli kushughulika na vigezo 2.
Tuna int aitwaye argc na kisha safu ya masharti kuitwa argv.
Hivyo argc ni integer,
na inawakilisha idadi ya hoja kupita katika mpango wako.
Na kisha argv ni kweli orodha ya hoja kupita.
Yote ya hoja ni masharti, na hivyo argv inawakilisha safu, orodha, ya masharti.
Hebu majadiliano kuhusu arrays kidogo.
Arrays ni kimsingi mpya data muundo.
Tuna ints, tuna mara mbili, tuna masharti, na sasa tuna arrays.
Arrays ni data miundo ambayo inaweza kushikilia maadili mbalimbali ya aina moja,
hivyo kimsingi, orodha ya kila aina unataka.
Kimsingi, kama alitaka orodha ya integers wote katika variable 1,
basi ingekuwa kujenga variable mpya ambayo ilikuwa ya aina safu int.
Hivyo arrays ni sifuri-indexed, kwa maana kwamba kipengele kwanza ya safu ni katika index 0.
Kama safu ni ya urefu 4, kama katika mfano huu, basi kipengele yako ya mwisho itakuwa katika index 3,
ambayo ni 4-1.
Hivyo kujenga safu, ungependa kufanya kitu kama hiki.
Sema wewe alitaka safu mbili.
Hii inakwenda kwa aina yoyote ya aina data, ingawa.
Hivyo kusema unataka safu mbili. Sema unataka simu yake mailbox.
Just kama ungependa initialize yoyote mbili nyingine,
wewe kusema mara mbili na kisha jina, lakini wakati huu sisi kuweka mabano mraba,
na kisha namba kutakuwa urefu wa safu.
Kumbuka kuwa katika arrays hatuwezi kubadilika urefu,
hivyo daima kuwa kufafanua na kuchagua masanduku ngapi,
wangapi maadili safu yako anaenda kushikilia.
Hivyo kuweka maadili mbalimbali katika safu yako, utaenda kutumia syntax zifuatazo,
kama unaweza kuona kwenye slide.
Mailbox una 0 index itakuwa kuweka 1.2,
mailbox index 1 kuweka 2.4, nk
Hivyo sasa kwamba tumekuwa upya arrays kidogo, hebu kwenda nyuma argc na argv.
Tunajua kwamba argv sasa ni safu ya masharti.
Hivyo wakati mtumiaji hupita katika - kusema wanakimbia mpango -
wanasema / hujambo Daudi Malan.,
nini mpango kufanya kwa ajili yenu ni kweli tayari kuja na kile argc na argv ni.
Hivyo huna haja ya kuwa na wasiwasi juu ya hilo.
Argc katika kesi hii itakuwa 3 kwa sababu anaona 3 maneno tofauti waliojitenga na mazingira.
Na hivyo basi safu katika mfano huu, ripoti ya kwanza itakuwa /. Hello,
ijayo moja Daudi, ijayo moja Malan.
Je, mtu yeyote kuona haki mbali uhusiano gani kati ya argv,
safu, na argc ni?
Yeah. Tutaweza kupata ndani ya kwamba katika mfano katika args.c.
Hebu tuone kama tunaweza kuchukua faida ya uhusiano kati ya 2.
Hapa unaweza kupata kwamba katika appliance maombi default
kufungua. files c ni wakati mwingine Emacs.
Lakini tunataka kukabiliana na gedit, hivyo nini unaweza kufanya ni unaweza kulia bonyeza C faili yako,
kwenda Properties, Fungua Kwa, na kisha kuchagua gedit, Kuweka kama default,
na sasa mpango wako inapaswa kufungua katika gedit badala ya Emacs.
Perfect.
Hivyo hapa nina mpango kwamba nataka magazeti nje ya kila mstari amri hoja.
Hivyo kila mtumiaji pembejeo, nataka kimsingi kurudi nyuma yao kwenye mstari mpya.
Basi nini muundo kwamba tunaweza kutumia kwa iterate juu ya kitu fulani -
kitu ambacho pengine kutumika katika 1 pset yako?
Kama unataka kwenda kwa idadi ya seti ya vitu? >> [Mwanafunzi] Kwa kitanzi.
Kwa kitanzi. Hasa. Basi hebu kuanza na kwa kitanzi.
Tuna kwa int i = 0. Hebu tu kuanza na kutofautiana kiwango initialization.
Mimi naenda kuondoka hali kwa ajili ya kuweka na kisha kusema i + +, kwenda kufanya mambo huko.
Wote haki.
Hivyo kufikiri nyuma argv, ikiwa ni argv orodha ya hoja kupita katika mpango
na argc ni idadi ya hoja katika mpango,
basi hiyo ina maana kwamba argc kimsingi ni urefu wa argv, kulia,
kwa sababu kuna ni kwenda kuwa kama hoja nyingi kama thamani ya argc.
Hivyo kama tunataka iterate juu ya kila kipengele katika argv,
tunakwenda wanataka kila wakati kupata variable katika argv katika index aliyopewa.
Ambayo yanaweza kuwakilishwa na hii, sawa?
Hii variable hapa inawakilisha string hasa katika mfano huu
sababu ni safu string - string hasa katika index kwamba aliyopewa.
Nini tunataka kufanya, katika kesi hii tunataka magazeti yake nje, hivyo hebu sema printf.
Na sasa argv ni kamba, hivyo tunataka kuweka kwamba placeholder huko.
Tunataka mstari mpya tu kufanya ni kuangalia nzuri.
Hivyo hapa tuna kitanzi kwa. Hatuna hali bado.
Hivyo i kuanza saa 0, na kisha kila wakati ni kwenda magazeti string aliyopewa
saa kwamba index hasa katika safu.
Hivyo wakati wa kufanya sisi unataka kuacha kuchapa nje vipengele katika safu?
Wakati tumekuwa kumaliza, haki? Wakati sisi Umefikia mwisho wa safu.
Hivyo hatutaki kisichozidi uliopita urefu wa safu,
na sisi tayari kujua sisi hawana haja ya kweli kikamilifu kujua nini urefu wa argv ni
sababu ni tuliyopewa na nini hiyo? Argc. Hasa.
Hivyo tunataka kufanya hili argc mchakato idadi ya nyakati.
Mimi si katika saraka ya haki.
Wote haki.
Sasa wacha kufanya args. Hakuna makosa, ambayo ni kubwa.
Basi hebu kukimbia tu args.
Nini hii kwenda na kurudi kwetu? Ni tu kwenda na magazeti hayo tena.
"Wewe inputted args katika mpango; Mimi naenda kuwapa nyuma yenu."
Basi hebu kusema tunataka kusema args kisha foo bar.
Hivyo basi ni Prints ni nje nyuma yetu. Wote haki?
Kwa hiyo, kuna mfano wa jinsi gani unaweza kutumia argc na argv
tukijua kwamba argc inawakilisha urefu wa argv.
Kuhakikisha kwamba huna milele na arrays upatikanaji moja zaidi ya urefu wa safu
kwa sababu C dhahiri kelele saa wewe.
Utapata kitu kinachoitwa kosa segmentation,
ambayo ni kamwe fun, kimsingi akisema wewe ni kujaribu kupata kitu
kwamba haipo, si mali yenu.
Hivyo kuhakikisha, na hasa kwa Indexing sifuri-, sisi hatutaki -
Kama kwa mfano, kama tuna safu ya urefu 4,
kwamba index safu 4 haipo kwa sababu sisi kuanza saa 0, saa index sifuri.
Itakuwa asili ya pili tu kama kwa matanzi wakati sisi kuanza saa 0.
Hivyo tu kuendelea kuwa katika akili.
Wewe hawataki milele kupata index ya safu hiyo ni nje ya uwezo wako.
Hivyo tunaweza kuona jinsi sasa tunaweza aina ya upatikanaji
mstari amri hoja kwamba ni kupita in
Lakini kama wewe niliona kamba, argv ni kweli safu kamba.
Hivyo ni kweli si integer bado, lakini katika Kaisari tunataka kukabiliana na integers.
Kwa bahati, kuna kazi umba kwa ajili yetu kwamba kweli anaweza kubadilisha kamba integer.
Pia katika hapa sisi si kushughulika na pembejeo mtumiaji ambapo sisi ni uvuvio yao
kwa ajili ya pembejeo hapa kwa ajili ya muhimu, hivyo hatuwezi kweli reprompt na kusema,
"Oh, nipe mwingine integer, kusema, kama si halali."
Lakini sisi bado kufanya haja ya kuangalia kwa ajili ya matumizi sahihi.
Katika Kaisari wao ni kuruhusiwa tu kwa kupita katika namba 1,
na hivyo kuwa na kukimbia. / Kaisari na kisha wao kuwa na kukupa idadi.
Hivyo argc ina kuwa idadi fulani.
Nini idadi ingekuwa kwamba kuwa kama wana kupita wewe /. Kaisari na kisha muhimu?
Nini ni argc? >> [Mwanafunzi] 2. >> Mbili. Hasa.
Hivyo unataka kuhakikisha kwamba argc ni 2.
Vinginevyo wewe kimsingi kukataa kuendesha programu.
Katika kuu ni kazi ambayo anasema int kuu,
hivyo basi sisi daima katika mema 0 mazoezi kurudi katika mwisho wa mpango mafanikio.
Hivyo kama, kusema, wao kukupa 3 hoja mstari amri badala ya 2
au kukupa 1, kwa mfano, basi nini wewe itabidi kufanya ni utasikia wanataka kuangalia kwa kuwa
na kisha kurudi 1 akisema, hapana, siwezi kuendelea na mpango huu.
[Mwanafunzi] Kuna hawezi kuwa nafasi katika maandishi yako. >> Kunradhi?
[Mwanafunzi] Kuna hawezi kuwa nafasi katika maandishi wewe ni kujaribu kuficha.
Ah!
Katika suala la Nakala kwamba sisi ni kujaribu kuficha, kwamba kwa kweli inakuja baadaye
tunapotoa kwamba maandishi.
Hivyo sasa hivi sisi ni tu kukubali kama hoja amri idadi halisi,
kuhama halisi kwa encryption Kaisari.
[Mwanafunzi] Kwa nini unahitaji 2 kinyume na tu argc 1? Kuna dhahiri 1 idadi.
Haki. Sababu kwa nini tunahitaji 2 kwa argc badala ya 1
ni kwa sababu wakati wewe kukimbia na mpango na kusema. / Kaisari, au /. hello,
kwamba kweli makosa kama hoja mstari amri.
Hivyo basi, kwamba tayari inachukua hadi 1 na hivyo basi tuko inputting 1 ziada.
Basi, wewe ni kweli inputting string katika hoja mstari amri.
Nini unataka kufanya, kwa Kaisari tunataka kukabiliana na integer,
hivyo unaweza kutumia kazi hii atoi.
Na kimsingi, wewe kupita katika kamba na kisha atarudi nyuma yenu integer
kama inawezekana kufanya ile kamba ndani ya integer.
Sasa kumbuka wakati sisi ni kushughulika na mambo printf au GetString, kama kwamba,
sisi ni pamoja na maktaba kwamba ni maalum kwa sisi.
Hivyo mwanzoni sisi kuanza na hash tag kitu standard I / O, h., Kama hiyo.
Naam, atoi si ndani ya moja ya maktaba hizo,
hivyo kile sisi kufanya ni sisi ni pamoja na maktaba ya haki kwa ajili hiyo.
Hivyo kukumbuka nyuma walkthrough 1 ambapo mimi kujadiliwa kazi mwongozo.
Unapoandika mtu katika terminal yako na kisha kufuatiwa na jina la kazi.
Na ili kuleta orodha nzima ya matumizi yake,
lakini pia itakuwa kuleta juu ambayo maktaba ambayo ni mali ya.
Hivyo mimi itabidi kuondoka kwamba kwa wewe kutumia kazi mwongozo na atoi
na kufikiri ambayo maktaba unahitaji ni pamoja na kuwa na uwezo wa kutumia kazi atoi.
Hivyo sisi tumepewa muhimu na sasa ni suala la kupata Nakala wazi,
na hivyo kwamba kweli ni kwenda kuwa mtumiaji pembejeo ambapo wewe kuchochea.
Sisi kushughulikiwa na GetInt na GetFloat, na hivyo katika ven
tunakwenda kuwa kushughulika na GetString.
Lakini katika kesi hii hatuna haja ya kufanya lolote do wakati au wakati matanzi ya kuangalia.
GetString dhahiri kutupa kamba,
na sisi ni kwenda encrypt chochote mtumiaji inatupa.
Hivyo unaweza kudhani kuwa yote haya masharti ya mtumiaji inputted ni sahihi.
Mkuu.
Hivyo basi mara moja nimepata muhimu na mara moja nimepata maandishi,
sasa nini kushoto ni una encipher maandishi wazi.
Tu kwa haraka ufunike Hands, maandishi wazi ni nini mtumiaji inakupa,
na nakala ya siri ni nini kurudi kwao.
Hivyo masharti, kuwa na uwezo wa kwenda kwa njia ya barua kweli kwa barua
sababu tuna kuhama kila herufi,
sisi kuelewa masharti kwamba, kama sisi aina ya Peel nyuma safu,
tunaona kwamba wao ni kweli tu orodha ya wahusika.
Moja anakuja baada ya nyingine.
Na hivyo tunaweza kutibu masharti kama arrays kwa sababu wao ni arrays ya wahusika.
Hivyo kusema kuwa string aitwaye maandishi,
na ndani ya maandishi kwamba variable ni kuhifadhiwa Hii ni CS50.
Kisha Nakala saa index 0 itakuwa Simu mji mkuu, index 1 itakuwa h, nk
Na kisha na arrays, katika mfano argc katika args.c,
tuliona kwamba tulikuwa na iterate juu ya safu
na hivyo alikuwa na iterate kutoka i = 0 hadi i ni chini ya urefu.
Hivyo tunahitaji baadhi ya njia ya kuhesabia nje nini urefu wa kamba yetu ni
kama sisi ni kwenda iterate juu yake.
Kwa bahati tena, kuna kazi huko kwa ajili yetu, ingawa baadaye katika CS50
wewe utakuwa dhahiri kuwa na uwezo wa kutekeleza na kufanya kazi yako mwenyewe
ambayo inaweza mahesabu ya urefu wa kamba.
Lakini kwa sasa tunakwenda kutumia kamba urefu, hivyo strlen.
Wewe kupita katika kamba, na kisha atarudi wewe int kwamba inawakilisha urefu wa kamba yako.
Hebu tuangalie mfano wa jinsi sisi kuwa na uwezo wa iterate juu ya kila tabia katika string
na kufanya kitu na kwamba.
Nini tunataka kufanya ni iterate juu ya kila tabia ya kamba,
na nini tunataka kufanya ni sisi magazeti nyuma kila tabia 1 na 1
ila sisi kuongeza kitu karibu na hiyo.
Basi hebu kuanza na kwa kitanzi. Int i = 0.
Sisi ni kwenda kuacha nafasi kwa ajili ya hali hiyo.
Tunataka iterate mpaka sisi kufikia mwisho wa kamba, sawa?
Hivyo basi nini kazi inatupa urefu wa kamba?
[Inaudible mwanafunzi majibu]
Hiyo ni urefu wa hoja mstari amri.
Lakini kwa kamba tunataka kutumia kazi ambayo inatupa urefu wa kamba.
Basi hiyo ni kamba urefu.
Na hivyo basi una kupita katika kamba hiyo.
Ni mahitaji ya kujua nini string inahitaji mahesabu ya urefu wa.
Hivyo basi katika kesi hii sisi ni kushughulika na uzi s.
Mkuu.
Hivyo basi nini tunataka kufanya, hebu printf.
Sasa, tunataka kukabiliana na wahusika. Tunataka magazeti nje kila tabia ya mtu binafsi.
Wakati unataka kwa magazeti nje kuelea, ungependa kutumia placeholder kama f%.
Pamoja na int ungependa kutumia% d.
Na hivyo vile vile, na tabia wewe kutumia c% kusema mimi nina kwenda kuwa uchapishaji tabia
ambayo imehifadhiwa ndani ya kutofautiana.
Hivyo tuna hii, na hebu kuongeza kipindi na nafasi yake.
Ambayo ni tabia ya sisi kutumia?
Sisi wanaenda kutumia chochote kile tabia sisi ni saa ya kamba.
Hivyo basi sisi wanaenda kutumia kitu kwa kamba,
lakini tunataka kuwa kupata huduma ya tabia fulani huko.
Hivyo kama ni kamba tu safu, basi, jinsi gani sisi kupata mambo ya arrays?
Tuna mabano mraba those, na kisha sisi kuweka index huko.
Hivyo tuna mabano mraba. Index yetu katika kesi hii tunaweza kutumia tu i. Hasa.
Hivyo hapa sisi ni kusema sisi ni kwenda kuwa uchapishaji tabia kufuatiwa na dot na nafasi,
na tabia ya kuwa ni kwenda kuwa barua idh katika kamba s yetu.
Mimi tu anaenda kuokoa. Sawa.
Sasa mimi nina kwenda kukimbia string urefu.
Hivyo tulikuwa string kuitwa OMG, na sasa ni alisisitiza hata zaidi.
Vile vile, hebu sema sisi kweli wanataka kupata kamba kutoka kwa mtumiaji.
Jinsi gani tunafanya hivi?
Kabla ya hapo, jinsi gani sisi kupata int?
Sisi alisema GetInt, haki? Lakini hii si int, hivyo hebu GetString.
Hebu kufanya string urefu. Hapa sisi hawakuwa kuingia haraka maalum.
Hivyo mimi sijui.
Mimi naenda kuweka jina langu katika hapa na hivyo basi naweza kufanya moja ya mambo
ambapo mimi hawawajui neno kwa kila barua au kitu kama hicho. Cool.
Basi hiyo ni kamba urefu.
Hivyo sisi ni nyuma ya Kaisari.
Tuna zana chache juu ya jinsi sisi iterate juu ya kamba,
jinsi sisi kupata kila kipengele binafsi.
Hivyo sasa tunaweza kupata nyuma ya mpango.
Kama nilivyoeleza hapo awali, katika meza ASCII, rafiki yako,
utaenda kuona idadi kuwa ni kuhusishwa na kila barua.
Hivyo hapa kusema maandishi wazi yetu ni mimi nina kizunguzungu!
Ndipo kila mmoja wa wahusika hawa ni kwenda kuwa na idadi na thamani ASCII yanayohusiana na hayo,
hata apostrophe, hata nafasi, hata alama Moderators,
hivyo utasikia wanataka kuendelea kuwa katika akili.
Hivyo kusema ufunguo yetu kwamba mtumiaji pamoja na katika hoja zao amri line ni 6.
Hiyo ina maana kwa barua ya kwanza, ambayo ni mimi, ambayo ni kuwakilishwa na 73,
unataka kurudi kwao chochote barua ni kuwakilishwa na thamani ya 73 + ASCII 6.
Katika kesi hiyo ambayo itakuwa ya 79.
Sasa tunataka kwenda kwa tabia ijayo.
Hivyo ijayo katika index 1 ya maandishi wazi itakuwa apostrophe.
Lakini kumbuka sisi tu wanataka encipher barua.
Hivyo tunataka kuhakikisha kwamba apostrophe kweli anakaa huo,
kwamba hatuwezi kubadilika kutoka 39 hadi 45 ni chochote.
Tunataka kuitunza kama apostrophe.
Hivyo tunataka kumbuka tu encipher barua
sababu tunataka wote wa ishara nyingine kubaki unchanged katika programu yetu.
Jambo jingine ni kwamba tunataka ni kulinda mtaji.
Hivyo wakati una barua uppercase, ni lazima kukaa kama uppercase.
Lowercases wanapaswa kukaa kama lowercase.
Hivyo baadhi ya kazi muhimu kuwa na uwezo wa kukabiliana na barua tu enciphering
na kuweka kuhifadhi mtaji wa mambo
ni islower isalpha, isupper, kazi.
Na hivyo haya ni kazi ya kwamba kurudi wewe thamani Boolean.
Kimsingi, kweli au uongo. Je, hii ni uppercase? Je, hii ni alphanumeric?
Je, hii ni barua, kimsingi.
Hivyo hapa ni mifano 3 ya jinsi gani kutumia kazi.
Kimsingi, unaweza mtihani kama thamani akarudi na wewe na kazi ambayo ni ya kweli au ya uongo
msingi pembejeo kwamba.
Aidha si encipher kitu au cipher au kuhakikisha kwamba ni uppercase, nk
[Mwanafunzi] Je, unaweza kueleza tu wale kidogo zaidi na jinsi ya matumizi yao? >> Yeah, kwa uhakika.
Hivyo kama sisi kuangalia nyuma, hapa tuna mtaji mimi, sawa?
Hivyo tunajua kwamba mimi huenda kwa sababu mimi Enyi + 6 ni O.
Lakini tunataka kuhakikisha kwamba O ni kwenda kuwa mji mkuu O.
Hivyo kimsingi, kwamba ni aina ya kwenda na mabadiliko ya pembejeo yetu.
Hivyo kama ni uppercase au si mapenzi ya aina ya kubadilisha njia ya kwamba sisi kukabiliana nayo.
Hivyo basi kama sisi kutumia kazi isupper katika ripoti husika,
hivyo isupper ("mimi"), kwamba anarudi kwa ajili yetu kweli, hivyo tunajua kwamba ni juu.
Hivyo basi kwa kuzingatia kwamba, baadaye tutaweza kwenda katika formula
kwamba wewe utakuwa kutumia kuhama mambo katika Kaisari,
hivyo basi kimsingi, kuna kwenda kuwa formula tofauti kidogo kama ni uppercase
kinyume na Herufi za chini. Mantiki?
Yeah. Hakuna wasiwasi.
Mimi kuongea kidogo kuhusu kuongeza 6 kwa barua, ambayo haina kabisa mantiki
ila wakati sisi aina ya kuelewa kuwa hawa wahusika
ni aina ya interchangeable na integers.
Tunachofanya ni sisi aina ya akitoa matumizi thabiti.
Tutaweza kwenda katika akitoa kidogo baadaye ambapo wewe kuchukua thamani na wewe kugeuka ndani ya aina mbalimbali
kuliko awali alikuwa.
Lakini pamoja na pset hii tutaweza kuwa na uwezo wa aina ya kubadilishana kutumia herufi
na wao sambamba integer maadili.
Hivyo kama wewe tu encase tabia na tu enda quotes,
basi utakuwa na uwezo wa kufanya kazi na kwa integers, kukabiliana na ni kama integer.
Hivyo C mtaji inahusiana na 67. F lowercase inahusiana na 102.
Tena, kama unataka kujua maadili haya, kuangalia meza yako ASCII.
Basi hebu kwenda katika baadhi ya mifano ya jinsi ya unavyoweza kuwa na uwezo wa Ondoa na kuongeza,
jinsi unaweza kweli kweli kazi na wahusika hawa, matumizi yao kubadilishana.
Nasema ASCIIMath kwamba ni kwenda kwa mahesabu ya nyongeza ya tabia kwa integer
na kisha kuonyesha tabia matokeo kama vile matokeo ASCII thamani.
Na hivyo hapa mimi kusema - we'll kukabiliana na sehemu hii baadaye -
lakini kimsingi, mimi kusema kwamba mtumiaji lazima kusema kukimbia ASCIIMath pamoja na muhimu,
na mimi kusema kwamba muhimu kwamba ni kwenda kuwa idadi
ambayo sisi ni kwenda kuongeza tabia hii.
Hivyo hapa taarifa kwamba tangu nina kudai muhimu,
tangu mimi nina wanadai kwamba wao ni kunipa 1 kitu,
Mimi nataka tu kukubali. / Asciimath na ufunguo.
Hivyo nina kwenda kudai kwamba argc ni sawa na 2.
Kama siyo, basi mimi naenda kurudi 1 na mpango exit.
Hivyo mimi kusema muhimu si kwenda kuwa ya kwanza ya mstari amri hoja,
itakavyo kuwa moja ya pili, na kama unaweza kuona hapa,
Mimi naenda kugeuka kuwa ndani ya integer.
Kisha Mimi naenda kuweka tabia kuwa r.
Ona kwamba aina ya kutofautiana ni kweli CHR integer.
njia ambayo nina uwezo wa kutumia r kama integer ni kwa encasing kwa hizi quotes moja.
Hivyo nyuma kwa taarifa yetu printf ambapo tuna placeholder kwa tabia
na kisha placeholder kwa integer,
tabia ni kuwakilishwa na CHR, na integer ni muhimu.
Na hivyo basi tunakwenda katika matokeo kuongeza 2 pamoja.
Hivyo sisi ni kwenda kuongeza r + chochote muhimu ni,
na kisha tunakwenda magazeti matokeo ya kwamba.
Basi hebu kufanya asciimath. Ni juu ya tarehe, hivyo hebu kukimbia tu asciimath.
Oh, lakini kuona, haina kufanya kitu chochote kwa sababu hatukuwa kweli kuwapa muhimu.
Hivyo linapokuja tu akarudi 1, kazi yetu kuu, ni tu akarudi nyuma yetu.
Hivyo basi hebu kupita katika muhimu. Mtu nipe namba. >> [Mwanafunzi] 4.
4. Sawa.
Hivyo r iliongezeka kwa 4 ni kwenda kutupa v, ambayo inalingana na thamani ASCII ya 118.
Hivyo basi aina ya mantiki kwamba -
Kweli, ninaweza kuuliza wewe, unafikiri nini thamani ASCII ya r ni kama r + 4 ni 118?
Kisha yeah, r ni 114.
Hivyo kama wewe kuangalia juu ya meza ASCII basi, uhakika wa kutosha, utaona r kwamba ni kuwakilishwa na 114.
Hivyo sasa kwamba sisi kujua kwamba tunaweza kuongeza integers kwa wahusika, hii inaonekana pretty rahisi.
Sisi ni kwenda tu iterate juu ya kamba kama tulivyoona katika mfano kabla.
Tutaweza kuangalia kama ni barua.
Kama ni, basi tutaweza kuhama hivyo kwa chochote muhimu ni.
Pretty rahisi, isipokuwa wakati kupata kama hii,
unaweza kuona kwamba z, kuwakilishwa na 122, basi bila kutoa tabia tofauti.
Sisi kwa kweli wanataka kukaa ndani ya alfabeti yetu, haki?
Hivyo tunahitaji kufikiri baadhi ya njia ya aina ya wrapping kote.
Wakati kufikia Zed na unataka kuongeza kwa idadi fulani,
hutaki kwenda ng'ambo ya sehemu ASCII alfabeti;
unataka wrap nyuma njia yote ya A.
Lakini kumbuka bado uko kuhifadhi kesi.
Hivyo kwa kufahamu barua kwamba hawezi kuwa ishara
tu kama ishara si kwenda kuwa kubadilisha pia.
Katika pset mwisho wewe dhahiri hakuwa na haja ya,
lakini chaguo lilikuwa kutekeleza pset yako tamaa na kutumia kazi modulus.
Lakini sasa sisi ni kweli kwenda haja ya kutumia modulus,
hivyo hebu tu kwenda juu kidogo hii ndogo.
Kimsingi, wakati una x modulo y, kwamba anatoa salio ya x kugawanywa na y.
Hapa ni baadhi ya mifano hapa. Tuna 27% 15.
Kimsingi, wakati wewe Ondoa 15 kutoka 27 kwa mara nyingi kama inawezekana bila kupata hasi
basi kupata 12 wa kushoto juu.
Basi hiyo ni aina ya kama katika muktadha math, lakini ni jinsi gani tunaweza kweli matumizi ya hili?
Ni kwenda kuwa na manufaa kwa wrapover yetu.
Kwa hili, hebu sema tu mimi aliuliza wewe wote kujigawa katika vikundi 3.
Wakati mwingine unaweza kufanya hili katika vikundi na kitu kama hicho.
Sema mimi akasema, "Sawa, mimi nataka ninyi nyote kugawanywa katika 3."
Jinsi gani unaweza kufanya hivyo?
[Inaudible mwanafunzi majibu] Yeah, kwa uhakika. Hesabu mbali. Sawa.
Hebu kweli kufanya hivyo. Je, unataka kuanza?
[Wanafunzi kuhesabu off] 1, 2, 3, 4.
Lakini kumbuka ... >> [Mwanafunzi] Oh, pole.
Hiyo ni hatua nzuri kwa kweli.
Wewe alisema 4, lakini sisi kweli nataka kusema 1 kwa sababu sisi tu kutaka makundi 3.
Hivyo basi, jinsi - Hapana, hiyo ni mfano mzuri kwa sababu basi, jinsi utasema 1?
Nini uhusiano kati ya 4 na 1?
Naam, 4 Mod 3 ni 1.
Hivyo kama wewe kuendelea, itakuwa 2.
Hivyo tuna 1, 2, 3, 1, 2.
Tena, wewe ni kweli mtu 5. Unajuaje kusema 2 badala ya 5?
Unaweza kusema 5 Mod 3 ni 2.
Nataka kuona jinsi makundi mengi ya 3 ni kushoto juu, kisha utaratibu upi ni I.
Na hivyo basi kama sisi iliendelea pamoja chumba nzima,
basi tunataka kuona kwamba sisi ni daima kwa kweli kutumia kazi Mod kwa wenyewe
kwa aina ya kuhesabu mbali.
Hiyo ni aina zaidi ya mfano yanayoonekana ya jinsi unaweza kutumia modulo
kwa sababu mimi nina uhakika wengi wetu pengine wamekwenda kupitia mchakato wa kuwa
ambapo tulikuwa na kuhesabu mbali.
Maswali yoyote juu ya modulo?
Itakuwa pretty muhimu kuelewa dhana hii,
hivyo nataka kuhakikisha guys kuelewa.
[Mwanafunzi] Kama kuna salio hakuna, je, ni kukupa idadi halisi?
Kama moja ya kwanza 3 wao alikuwa amefanya hivyo, je, nimewapa kile kweli walikuwa,
au ingekuwa ni nimewapa [inaudible] >> Hilo ni swali nzuri.
Wakati hakuna salio kwa modulo - hivyo kusema kuwa 6 Mod 3 -
kwamba kwa kweli anakupa nyuma 0.
Tutazungumzia kwamba kidogo baadaye.
Oh yeah, kwa mfano, mtu 3 - 3 Mod 3 ni kweli lakini alisema 0 3.
Basi hiyo ni aina ya kama samaki wa ndani, kwa mfano,
kama sawa, ikiwa ni Mod 0 basi mimi nitakuja kuwa mtu 3.
Lakini tutaweza kupata katika aina ya jinsi sisi kutaka kukabiliana na kile 0 ni baadaye.
Hivyo sasa sisi kwa namna fulani kuwa na njia ya ramani Zed kwa barua ya haki.
Hivyo sasa tumeenda kwa njia ya mifano hii,
sisi aina ya kuona jinsi Kaisari ili kazi.
Unaweza kuona alphabets 2 na kisha kuwaona shifting.
Basi hebu jaribu na kueleza kuwa katika suala la formula.
Formula Hii ni kweli aliyopewa na wewe katika spec,
lakini aina hebu ya kuangalia kwa nini kila variable maana yake.
Mwisho wetu matokeo ni kwenda kuwa nakala ya siri.
Hivyo hii anasema kwamba, tabia idh ya nakala ya siri
ni kwenda yanahusiana na tabia idh ya maandishi wazi.
Kwamba inafanya hisia kwa sababu tunataka daima bitana mambo haya juu.
Hivyo ni kwenda kuwa tabia idh ya nakala ya siri plus k, ambayo ni muhimu yetu -
kwamba inafanya hisia - na kisha tuna hii Mod 26.
Kumbuka nyuma wakati tulikuwa na Zed
sisi hakutaka kuingia katika tabia, hivyo sisi alitaka Mod ni
na aina ya wrap kuzunguka alfabeti.
Baada ya Zed ungependa kwenda, b, c, d, mpaka wewe got idadi ya haki.
Hivyo tunajua kwamba Zed, ikiwa + 6, atatupa f kwa sababu baada ya Zed inakuja, b, c, d, e, f.
Basi hebu kumbuka sisi kujua kwa uhakika kwamba zed + 6 ni kwenda kutupa f.
Katika maadili ASCII, z ni 122 na f ni 102.
Hivyo inabidi kutafuta baadhi ya njia ya maamuzi yetu Kaisari formula kutupatia 102
baada ya kuchukua katika 122.
Hivyo kama sisi tu kuomba hii formula,% ('z' + 6) 26, kwamba kwa kweli anakupa 24
kwa sababu 122 + 6 ni 128; 128% 26 inakupa 24 salio.
Lakini hiyo haina maana ya kweli f. Hiyo ni dhahiri si 102.
Hiyo pia si barua 6 katika alfabeti.
Hivyo ni wazi, tunahitaji kuwa na baadhi ya njia ya tweaking hii kidogo kidogo.
Katika suala la alfabeti ya mara kwa mara, tunajua kwamba z ni barua 26 na f ni 6.
Lakini tuko katika sayansi ya kompyuta, hivyo tunakwenda index saa 0.
Hivyo basi badala ya z kuwa namba 26, sisi ni kwenda kusema idadi ni 25
kwa sababu ni 0.
Hivyo sasa hebu kuomba hii formula.
Tuna z kuwakilishwa na 25 + 6, ambayo inakupa 31.
Na 31 Mod 26 inakupa 5 kama salio.
Hiyo ni kamili kwa sababu tunajua kwamba f ni barua 5 katika alfabeti.
Lakini bado ni si f, haki? Ni bado ni si 102.
Hivyo basi kwa pset hii, changamoto itakuwa kujaribu kujua uhusiano
kati ya kuwageuza kati ya maadili haya ASCII na index alfabeti.
Kimsingi, nini utasikia wanataka kufanya, unataka kuanza nje na maadili ASCII,
lakini kisha unataka namna fulani kwamba kutafsiri katika index alfabeti
kisha hesabu herufi gani ni lazima - kimsingi, nini wake herufi index ni
wa tabia cipher - kisha kutafsiri kwamba nyuma ya maadili ASCII.
Hivyo kama wewe mjeledi nje meza yako ASCII, basi kujaribu na kutafuta mahusiano kati ya, wanasema, 102 na 5
au 122 na 25.
Tumekuwa Gotten ufunguo wetu kutoka hoja mstari amri, tumekuwa Gotten maandishi wazi,
tumekuwa enciphered yake.
Sasa wote tuna baki ni magazeti hayo.
Tunaweza kufanya hili michache ya njia tofauti.
Nini tunaweza kufanya ni kweli magazeti kama sisi kwenda pamoja.
Kama sisi iterate juu ya wahusika katika kamba,
tunaweza tu tu magazeti haki basi wakati sisi hesabu yake.
Vinginevyo, unaweza pia kuhifadhi katika safu na kuwa na safu ya wahusika
na mwishoni iterate juu ya safu kwamba nzima na magazeti nje.
Hivyo kuwa na michache ya chaguzi kwa ajili hiyo.
Na kumbuka kwamba% c ni kwenda kuwa placeholder kwa kuchapa tabia.
Hivyo kuna tuna Kaisari, na sasa sisi kuendelea na Vigenere,
ambayo ni sawa na Kaisari lakini kidogo tu ngumu zaidi.
Hivyo kimsingi na Vigenere ni wewe utaenda kupita katika Keyword.
Hivyo badala ya namba, wewe utaenda kuwa na kamba,
na ili kwenda kutenda kama Keyword yako.
Kisha, kama kawaida, wewe ni kwenda kupata haraka kwa ajili ya kamba kutoka kwa mtumiaji
na kisha encipher yake na kisha kuwapa nyuma nakala ya siri.
Hivyo kama nilivyosema, ni sawa sana kwa Kaisari, ila badala ya shifting kwa idadi fulani,
idadi ni kweli kwenda kubadili kila wakati kutoka tabia ya tabia.
Kuwakilisha kwamba idadi halisi kuhama, ni kuwakilishwa na barua keyboard.
Hivyo kama wewe kuingia katika mabadiliko ya, kwa mfano, basi hiyo itakuwa yanahusiana na mabadiliko ya 0.
Hivyo ni tena nyuma index alfabeti.
Nini kinaweza kuwa na manufaa kama wewe ni kuona kwamba sisi ni kweli kushughulika na maadili ASCII
kama vile barua, kama vile index ya alfabeti,
labda kupata au kufanya ASCII yako mwenyewe meza ambayo inaonyesha index herufi ya 25 kupitia 0,
kupitia z, na maadili ASCII ili uweze aina ya kuona uhusiano
na mchoro nje na kujaribu na kupata mwelekeo fulani.
Vile vile, kama wewe walikuwa shifting katika mfano mmoja na f -
na hii ni aidha f lowercase au uppercase - kisha ambayo yanahusiana na 5.
Je, sisi nzuri hadi sasa?
formula kwa Vigenere ni tofauti kidogo.
Kimsingi, unaweza kuona kwamba ni tu kama Kaisari,
isipokuwa tu badala ya k tuna k index j.
Ona kwamba sisi siyo kutumia i kwa sababu kimsingi, urefu wa Keyword
si lazima urefu wa nakala ya siri yetu.
Hii itakuwa ni wazi kidogo wakati tunaona mfano kwamba mimi kuwa na kidogo baadaye.
Kimsingi, kama wewe kuendesha programu yako kwa Keyword ya ohai,
basi hiyo ina maana kwamba kila wakati, ohai ni kwenda na mabadiliko yako.
Hivyo kutegemea na nini nafasi ya wewe ni katika Keyword yako,
utaenda kuhama nakala ya siri yako fulani tabia kwa kiasi hicho.
Tena, kama Kaisari, tunataka kuhakikisha kwamba sisi kuhifadhi mtaji wa mambo
na sisi tu encipher barua, si wahusika au mazingira.
Hivyo kuangalia nyuma kwa Kaisari juu ya majukumu ya kwamba unaweza kuwa kutumika,
njia ambayo wewe kuamua jinsi ya kuhama mambo, na kuomba kwamba kwa mpango wako hapa.
Basi hebu ramani hii nje.
Tuna maandishi wazi kwamba tumekuwa wamezipata kutoka kwa mtumiaji kutoka GetString
akisema huu ... ni CS50!
Basi tuna neno la ufunguo wa ohai.
kwanza 4 wahusika ni pretty rahisi.
Tunajua kwamba T ni kwenda kuwa kubadilishwa kwa o,
kisha h ni kwenda kubadilishwa na h, i ni kwenda kubadilishwa kwa.
Hapa unaweza kuona kwamba inawakilisha 0,
hivyo basi thamani mwisho ni kweli tu barua sawa kabla.
Kisha s ni kubadilishwa kwa i.
Lakini basi una vipindi hivi hapa.
Sisi hatutaki encipher kwamba, hivyo basi hatuwezi kubadilisha kitu chochote na
na tu magazeti nje kipindi unchanged.
[Mwanafunzi] Sielewi jinsi unajua kwamba hii ni kubadilishwa kwa - wapi Ulifanya - >> Oh, sorry.
Saa ya juu hapa unaweza kuona kwamba mstari amri hoja ohai hapa,
kwamba itakuja kuwa Keyword.
Na hivyo kimsingi, wewe baiskeli juu ya wahusika katika Keyword.
[Mwanafunzi] Basi o ni kwenda shifting sawa -
Hivyo o sambamba na idadi fulani katika alfabeti.
[Mwanafunzi] Haki. Lakini wapi kupata sehemu CS50 kutoka?
Oh. Hiyo ni katika GetString ambapo wewe ni kama, "Nipe kamba encode."
[Mwanafunzi] Wao wanaenda kukupa kwamba hoja kuhama kwa
na kisha utasikia kuuliza kwa kamba yako ya kwanza. >> Yeah.
Basi walipo kuendesha programu, wao wanaenda pamoja Keyword
katika amri zao line hoja wakati wao kukimbia.
Kisha mara moja umefanya checked kwamba wameweza kweli kupeni 1 na si zaidi, si chini,
kisha utaenda kuwachochea kwa kamba, wanasema, "Nipe kamba."
Hivyo hiyo ambapo katika kesi hii wameweza kupeni huu ... ni CS50!
Hivyo basi wewe ni kwenda kutumia kwamba na kutumia ohai na iterate juu.
Ona kwamba hapa sisi skipped juu ya encrypting vipindi,
lakini katika suala la msimamo wetu kwa ohai, moja ijayo sisi kutumika o.
Katika kesi hii ni vigumu kidogo kuona kwa sababu hiyo ni 4,
hivyo hebu kuendelea kidogo. Tu fimbo na mimi hapa.
Basi tuna i na s, ambayo ni basi Tafsiri kwa o na h mtiririko huo.
Basi tuna nafasi, na hivyo basi tunajua kwamba sisi si kwenda encipher mazingira.
Lakini ona kwamba badala ya kwenda katika doa haki hii hapa,
tuko encrypting na - mimi sijui kama unaweza kuona kwamba - haki hapa.
Hivyo si kama wewe kweli predetermined, kusema, o huenda hapa, h huenda hapa,
huenda hapa, i huenda hapa, o, h,, i, o, h,, i. Huwezi kufanya hivyo.
Wewe tu kuhama nafasi yako katika Keyword
wakati unajua kwamba wewe ni kweli kwenda kuwa encrypting barua halisi.
Je, hiyo aina ya mantiki?
Sawa.
Hivyo baadhi tu kuwakumbusha.
Wewe unataka kuhakikisha kwamba wewe tu mapema ili barua ijayo katika Keyword yako
kama tabia yako katika maandishi wazi ni barua.
Hivyo kusema sisi ni saa o.
Tunaona kwamba, tabia ijayo, index i wa maandishi wazi, ni idadi, kwa mfano.
Kisha sisi wala kuendeleza j, index kwa Keyword zetu, hata sisi kufikia barua nyingine.
Tena, wewe pia wanataka kuhakikisha kuwa wewe iliyomficha mwanzo wa Keyword
wakati uko katika mwisho wake.
Kama unaweza kuona hapa sisi ni saa i, moja ijayo ina kuwa o.
Hivyo unataka kupata baadhi ya njia ya kuwa na uwezo wa iliyomficha mwanzo wa Keyword yako
kila wakati kwamba kufikia mwisho.
Na hivyo tena, aina gani ya operator ni muhimu katika kesi hiyo kwa wrapping kote?
Kama ilivyo katika kuhesabu mbali mfano.
[Mwanafunzi] ishara asilimia. >> Yeah, ishara asilimia, ambayo ni modulo.
Hivyo modulo atakuja katika Handy hapa wakati unataka wrap juu ya index katika ohai yako.
Na tu ladha haraka: Jaribu kufikiria wrapping zaidi Keyword kidogo kama mbali kuhesabu,
ambapo kama kuna 3 vikundi, mtu 4,
idadi yao kuwa walisema ilikuwa 4 Mod 3, ambayo ilikuwa 1.
Hivyo kujaribu na kufikiria njia hiyo.
Kama wewe aliona katika formula, popote una ci na kisha pi lakini basi KJ,
unataka kuhakikisha kwamba kuweka wimbo wa wale.
Huna haja ya kumwita i, huna haja ya kuiita j,
lakini wewe unataka kuhakikisha kwamba kuweka wimbo wa msimamo kuwa uko katika maandishi wazi katika yako
kama vile nafasi ya kuwa uko katika katika Keyword yako
kwa sababu wale si lazima kwenda kuwa sawa.
Si tu haina Keyword - inaweza kuwa urefu tofauti kabisa kuliko maandishi wazi yako.
Pia, maandishi wazi wako, kuna idadi na wahusika,
hivyo si kwenda kikamilifu match up pamoja. Ndiyo.
[Mwanafunzi] Je, kuna kazi ya kubadilisha kesi?
Je, unaweza kubadilisha mji mkuu? >> Yeah, kuna dhahiri ni.
Unaweza kuangalia - naamini toupper ni, wote neno 1.
Lakini wakati wewe ni kujaribu cipher mambo na kuhifadhi maandishi,
ni bora kimsingi kuwa na kesi tofauti.
Kama ni uppercase, kisha unataka kuhama kwa hii
kwa sababu katika formula yako, wakati ukiangalia nyuma jinsi tuna aina ya go
kubadilishana kati ya njia ASCII ya anayewakilisha idadi
na halisi alfabeti index, tunataka kuhakikisha
kuna kwenda kuwa baadhi ya aina ya muundo kwamba utaenda kutumia.
Mwingine kumbuka juu ya muundo, kwa kweli.
Utaenda dhahiri kuwa kushughulika na idadi.
Jaribu kutumia namba uchawi, ambayo ni mfano wa mtindo.
Hivyo kusema unataka kila kitu wakati kuhama na kama -
Sawa, hivyo ladha, spoiler mwingine ni wakati wewe ni kwenda kuwa kitu shifting
kwa kiasi fulani, jaribu kuwakilisha kwamba kwa idadi halisi
lakini badala ya kujaribu na kuona kama unaweza kutumia thamani ASCII, ambayo itakuwa ya aina ya kufanya zaidi ya akili.
Mwingine kumbuka: Kwa sababu sisi ni kushughulika na formula,
ingawa TF wako aina ya kujua nini mfano unaweza kutumia,
bora katika aina yako maoni ya kueleza mantiki, kama,
"Mimi nina kutumia muundo huu kwa sababu ..." na aina ya kueleza mfano succinctly katika maoni yako.
[Hii ilikuwa walkthrough 2] Kama kuna mtu yoyote maswali mengine, basi mimi itabidi tu kukaa hapa kwa muda kidogo.
Bahati nzuri na pset yako 2: Crypto na shukrani kwa kuja.
[Mwanafunzi] Asante. >> Shukrani.
[Media Offline intro]