[Music kucheza] DAVID Malan: zote haki. Hii ni CS50, na hii Huu ndio mwisho wa wiki 2. Mimi hivyo pole sikuweza kuwa kuna nanyi nyote leo, lakini wewe ni katika mikono nzuri sana. Naomba kuanzisha CS50 ya mwenyewe Rob Bowden. Rob BOWDEN: Na bila shaka, kisha tuna kufanya furaha ya kweli ndipo akatuma sisi wima video na kuonyesha hii. [VIDEO avspelning] [Music kucheza] [Nyayo] -Hii Video hakufanya hivyo na kuangalia njia hii. Ni inaweza kuwa kuzuiwa. Kusema hapana kwa video wima. -Vertical Video kutokea wakati kushikilia kamera yako njia sahihi. Video wako mwisho juu kuangalia kama crap. - [Grunt] -Kuna Watu wengi zaidi addicted kwa kufanya video wima kila siku. Siyo ufa au kitu, lakini bado ni mbaya kweli kweli. Kuna aina mbili tofauti za watu ambao ni vibaya kwa VVS. Kundi la kwanza chipsi video risasi kama picha. Hawana maana madhara yoyote. Wao tu hawaelewi kwamba wakati unaweza kugeuka picha, unaweza si kweli kugeuka video. [Ajali] - [Tumbili Sauti] -The Kundi lingine ni watu ambao wala kutoa [Bleep]. -Vertical Sehemu Syndrome ni hatari. Picha mwendo na zimekuwa usawa. Televisheni ni usawa. Kompyuta skrini ni usawa. Macho ya watu ni usawa. Sisi si kujengwa kwa kuangalia video wima. -I Upendo video wima. -Nobody Anayejali kuhusu wewe. -Kama Tatizo hili la kushoto unchecked, wewe pia itaanza kuonyesha video nne mara moja tu kuokoa Bandwidth. -Letterboxed Wima video ingekuwa kuwa na ukubwa wa stempu. -Na Itakuwa kuenea kila mahali. Skrini Kisasa na zimekuwa usawa. Kama video wima kuwa kukubalika, sinema movie itakuwa na kuwa mrefu na skinny. -Na Wote wa sinema movie ingekuwa una kupata lenye chini na upya. Na kwa wakati wao walikuwa upya, Mila Kunis itakuwa zamani na mbaya. -Birds Ajali ndani yao na kufa. -We'll Wote kupata ngumu shingo kutoka kuangalia juu. -Na Hakuna mtu kukaa katika mstari wa mbele milele tena. -George Lucas re-kutolewa Star Vita again-- toleo skinny. -I Alikuwa kweli kamwe na uwezo wa kuwaambia hadithi kuwa nilitaka kukuambia. Hii ilikuwa ni nafasi kubwa kwa ajili yangu na majaribio na teknolojia mpya. -You're Jerk. Muda -Kila simu ya mkononi hutumika rekodi ya video, majaribu ni huko. Tu kusema hapana. Kusema hapana kwa George Lucas. Kusema hapana kwa miaka Mila Kunis. Kusema hapana kwa video wima. -Na Ukiona mtu kufanya hivyo, wanasema, "wewe si risasi kuwa dummy haki!" [Music kucheza] [Mwisho avspelning] [Makofi] [Audio OUT] Rob BOWDEN: --simple aina ya cryptography, ambayo kimsingi ni kuficha na decryption ya ujumbe wa siri. Hivyo hapa tuna toy rahisi sana. Na wazo ni pete ya nje rotates kuzunguka pete ya ndani. Na unaweza kuona, labda kama mimi kuvuta katika, that-- ni vigumu kuona. Lakini, kama, idadi 1-- vizuri, kwamba wakiongozwa. Namba 1 elekezi barua X, namba 2 ramani ya barua J. Cha ajabu ni vigumu si ruka mbele. Barua 2 elekezi J. Namba 3 elekezi D. Hivyo na pete hii unaweza kuwapa mtu ujumbe 1, 2, 3. Kwa baadhi ya sababu wewe wanataka kuwaambia XJD. Lakini unaweza kuwapa baadhi ya ujumbe wa namba, na kama muda wao kuwa na pete hii, unaweza decrypt nini wewe anajaribu kusema. Hivyo unaweza tumeona hii mfano hasa wa cryptography kabla kama karibu msimu wa Krismasi umefanya kuangalia Story Krismasi. Kama wewe sijawahi kuona hivyo kabla, basi tu kurejea kwenye TBS katika halisi wakati wowote juu ya Krismasi, kwa sababu wao tu kuonyesha kuwa nyuma kwa nyuma kwa nyuma kwa nyuma kwa nyuma siku nzima. Na video husika ni hii. [VIDEO avspelning] -Kuwa Ijulikane kwa wote na sundry kwamba Ralph Parker ni hili aliteuliwa kuwa mjumbe wa Kidogo Yatima Annie Secret Circle na ana haki ya heshima zote na faida zinazotokea lazimishwa. Saini Little Yatima Annie. Countersigned Pierre Andre katika wino! Heshima na faida Tayari akiwa na umri wa tisa! [Kunguruma kutoka RADIO] -Come Juu. Hebu kupata tarehe na hayo. Sina haja jazz kwamba wote kuhusu smugglers na maharamia. -Sikiliza Kesho usiku kwa adventure kuhitimisha ya Black Pirate meli. Sasa, ni wakati kwa Annie ya siri ujumbe kwa wewe wanachama wa Uwanja Siri. Kumbuka watoto, wanachama tu ya Annie ya siri Uwanja unaweza Decode Annie ya siri ujumbe. Kumbuka, Annie ni kutegemea wewe. Kuweka pini wako B2. Hapa ni ujumbe. 12. 11. 2. -I Am katika wangu siri mkutano wa kwanza. -25. 14. 11. 18. 16. -Oh, Pierre ni kwa sauti kubwa usiku wa leo. Mimi nilikuwa naona kwamba usiku wa leo ujumbe ulikuwa kweli ni muhimu. -3. 25. Hiyo ni ujumbe kutoka Annie mwenyewe. Kumbuka, usimwambie mtu yeyote. Sekunde -Five baadaye, mimi niko katika tu chumba katika nyumba ambapo kijana wa tisa wanaweza kukaa katika faragha na Decode. Aha! B! Nilikwenda ijayo. E. neno la kwanza ni "kuwa." S. Ni alikuwa anakuja rahisi sasa. U. 25. Hiyo ni R. -Come Juu, Ralphie! Nimekuwa gotta go! -I'll Kuwa haki ya chini, Ma! Gee whiz. T. O. "Kuwa na uhakika wa" - kuwa na uhakika wa nini? Ilikuwa Little Yatima nini Annie anajaribu kusema nini? Kuwa na uhakika wa nini? -Randy Ina got kwenda! Je, tafadhali kuja nje? -All Haki, mama! Mimi itakuwa haki nje! Mimi nilikuwa kupata karibu sasa. Mvutano ilikuwa ya kutisha. Ilikuwa ni nini? Hatma ya dunia inaweza hutegemea katika mizani! -Ralphie, Randy got kwenda! -I'll Kuwa haki ya nje, kwa kelele kubwa! Karibu hapo! Vidole yangu aliruka. Mawazo yangu yalikuwa ni chuma mtego. Kila pore vibrated. Ilikuwa karibu wazi! Ndiyo. Ndiyo. Ndiyo. Ndiyo. Kuwa na uhakika na kunywa Ovaltine yako. Ovaltine? Kibiashara crummy? Mwana wa Bitch. [Mwisho avspelning] Rob BOWDEN: Basi hiyo ni jinsi Ovaltine inahusiana na cryptography. Kimsingi CS50 tu kutangazwa Ovaltine, hivyo tunaweza kuwa kibiashara crummy kwa Ovaltine. Sawa. Hivyo sasa halisi sayansi ya kompyuta. Kumbuka siku ya Jumatatu sisi kushoto mbali mbizi zaidi katika masharti. Hivyo tulikuwa kushughulika na kamba "Zamyla." Na tulikuwa na kutambua ukweli kwamba tunaweza kutibu "Zamyla" kama mlolongo wa wahusika. Na kukumbuka kwamba sisi kujifunza bracket nukuu. Hivyo kama hii walikuwa kuhifadhiwa katika kamba "s," kisha kama tulivyosema s mabano 0, kwamba ingekuwa zinaonyesha herufi kubwa Z. Na kama sisi alisema s mabano 1, kwamba ingekuwa zinaonyesha kwanza lowercase a, na kadhalika hadi s mabano 5, ambayo yanaonyesha a mwisho. Sasa kumbuka kwamba urefu wa kamba hii ni 6, lakini fahirisi katika kamba ni 0 kupitia 5, Z kupitia kwamba mara ya mwisho. Hivyo hii sasa inafaa katika picha kubwa ya kumbukumbu ya kompyuta yako, RAM yako. Hivyo mahali fulani ya mpango huo wewe ni mbio kompyuta yako anapaswa kukumbuka Zamyla mahali fulani katika kumbukumbu. Hivyo naweza kuwa na kujitolea? Ndiyo, tafadhali. Na jina lako ni lipi? DEAN: Dean. Rob BOWDEN: Dean? Vyema kukutana na wewe, Mkuu. Hivyo kuja juu hapa, na tunakwenda kuwa na wewe kuteka juu ya nifty yetu nzuri mpangilio wa kumbukumbu. Sasa Mimi kama kufikiri ya kumbukumbu kama moja ya muda mrefu ukanda wa ka, lakini tu kwa ajili ya kuonyesha tutaweza tu kushoto kwenda kulia, juu hadi chini. SAWA? Hivyo nina kwenda kwa kuonyesha program-- Getstrings.c. Na hivyo mpango huu wote ni kufanya inaomba masharti manne kutoka kwa mtumiaji kwa GetString na kisha kuchapisha chochote kile kamba kwanza aliingia mara. Sisi ni kupuuza mbili kwa njia ya nne. SAWA. Hivyo zaidi ya hapa now-- wakati Mimi kwanza ombi S1. Basi, wewe ni kompyuta. Na wewe ni utekelezaji wa GetString. Hivyo kuomba kamba kutoka mimi, na mimi kusema, sawa, Dean. Kutoa kamba "Mkuu." Hivyo mahali fulani katika kumbukumbu wewe haja ya kukumbuka "Mkuu." Hivyo kuandika katika kumbukumbu mahali fulani. Kamilifu. SAWA. Hivyo sasa tuna S2. Na s2 ni kwenda kuwa ombi GetString. Hivyo nina kwenda kuingia kamba. Mimi nina kwenda kuingia "Hana." Hivyo kuingia "Hana" mahali fulani katika kumbukumbu. Naam. -H. OK, hivyo sasa S3. Na itakuja kuwa mwingine kuomba kwa GetString. Na hivyo sasa kuingia "Maria." Sawa. Na kisha kuna mwisho mmoja ombi GetString, S4. Kwa hiyo, mimi sijui. Vipi kuhusu sisi kwenda kwa antidisestablishmentarianism. Hivyo kuingia kwamba katika kumbukumbu. Naam. Hivyo tu kufanya "Rob." SAWA. Hivyo sasa explain-- kwa nini kuondoka maeneo haya? Kwa nini una hii tupu nafasi hapa, hapa, na hapa? Ndiyo. Hivyo taarifa wakati mimi kwenda magazeti s1-- hivyo kama sisi alikuwa na "Hana" mbio haki juu karibu na "Mkuu," tunajuaje wakati kamba "Mkuu" mwisho? Hivyo uchapishaji kamba S1 wanaweza kuwa na tu kuchapishwa "DeanHannahMariaRob" kama hana fununu yoyote ya wakati "Mkuu" kweli mwisho. Sawa. Hivyo katika kumbukumbu njia sisi kweli kuwakilisha maana hii ya kamba ni pamoja na backslash sifuri. Hivyo nafasi hii ni nini hasa sisi alitaka. Ni lazima backslash sifuri. Hii itakuwa sifuri backslash, na hii itakuwa sifuri backslash. Na unaweza kuwa na tuzo fabulous kwa kufanya kazi ya kujitolea kamili. Kuchukua msongo mpira! SAWA. Hivyo hii backslash tabia sifuri ni jinsi sisi zinaonyesha mwisho wa kamba. Ni jinsi wakati mpango wowote ni anataka magazeti kamba, ni how-- kumbuka sisi kujifunza kazi strlen wiki iliyopita? Urefu wa kamba? Ni jinsi urefu wa kamba ni uwezo wa kuamua ni muda gani kamba ni. Ni kuvaa tu iterating zaidi ya wahusika mpaka anaona sifuri backslash tabia. Kwa hiyo, jambo muhimu kutambua kuhusu tabia sifuri backslash ni ni kuwakilishwa na zeros wote katika vipande. Hivyo taarifa kwamba hii ni tofauti kutoka tabia sifuri. Hivyo tabia sifuri, kama unakumbuka katika mfano kwamba akatoa mwishoni ya hotuba ambapo wahusika ramani to-- kama mtaji A ramani ya 65. Herufi za chini ramani kwa 97. Lowercase b itakuwa 98. Hivyo idadi 0 ramani to-- mimi si kujua mbali juu ya kichwa yangu. 44 au 45. Mahali fulani katika kanda hiyo. Hivyo tabia 0 ni idadi halisi. Lakini sifuri backslash ramani ya bits wote sifuri. Hivyo kuna tofauti kati ya sifuri backslash, ambayo tutaweza wito null Terminator. Kuna tofauti kati ya sifuri backslash na tabia sifuri. Sawa. Hivyo kuzungumza kidogo zaidi kuhusu masharti. Hivyo basi tunaona hapa hii ni jinsi itakuwa kuweka nje katika kumbukumbu. Hivyo wazo hili la masharti kama mlolongo ya characters-- hivyo kompyuta rasmi sciency mrefu kwa mlolongo ni safu. Hivyo tunataka kuwaita kamba safu ya wahusika. Na ni kweli kuna data nyingine aina tuweze kufanya arrays nje ya. Hivyo kuwahamasisha hii, tuangalie mfano. Tutaweza simu yake ages0.c mimi itabidi nakala na kuweka template yetu. SAWA. Hivyo katika mpango huu kile sisi wanataka kufanya ni kunyakua umri ya wanafunzi tatu katika mwendo. Hivyo tunajua int age-- na sasa mimi nina kwenda kusema 0. Hivyo unaweza kutaka kusema age1, lakini kwa madhumuni tutaona muda mfupi sana, Mimi itabidi kusema int age0 sawa na GetInt. Hivyo wito huo kwa GetInt kwamba sisi tumekuwa kutumia mimi si kutokea kwa kuwa na kusababisha akisema, "nipe umri." Lakini tu maombi hayo. Na age1 sawa na GetInt. Na int age2 sawa na GetInt. Hivyo, tena, wanafunzi watatu, lakini hatimaye fahirisi kutofautiana ni age0 kupitia age2. SAWA. Hivyo mpango huu kufanya chochote tunataka kwa age0, age1, na age2, lakini mpango huu hatimaye kazi kwa ajili ya wanafunzi tatu. SAWA. Hivyo sasa nini kama nataka nne wanafunzi? Naam, mimi nina kwenda na kurudi ndani ya kanuni yangu, mabadiliko ya maoni, na sasa tuna int age3 sawa na GetInt. SAWA. Hivyo ambaye anaona tatizo hapa? Ni tatizo gani na aina hii ya kuanzisha? Naam. Naam. Hivyo sisi ni kujenga kutofautiana kwa kila mwanafunzi. Sasa kwa kuwa kazi, lakini hatimaye nini kama mimi sasa kusema, "Nataka kunyakua umri wa wanafunzi nane au 16 ya wanafunzi au wanafunzi hata hivyo wengi wa mamia ya wanafunzi katika CS50 au maelfu ya wanafunzi juu ya chuo au mabilioni ya watu duniani? Hivyo hatimaye hii si endelevu. Wakati wowote unaweza kuona mwenyewe kuiga na pasting code kama hii, unapaswa kujisikia ujumla kwamba kuna njia bora. Hivyo hii ni mahali ambapo sisi kuanzisha safu tamko hilo. Hivyo wakati wewe kutangaza safu, hii ni nini format ujumla ni kwenda kuangalia kama. Tunakwenda kusema aina. na kisha tunakwenda kutoa jina la kwamba safu, tu kama sisi kufafanua kutofautiana wowote. Na kisha hatimaye sisi ni kutumia nukuu hii mabano tena lakini katika mazingira tofauti na jinsi tulikuwa kutumia mapema. Hivyo hapa hii inaonekana kama kawaida kutofautiana tamko kwamba tumeona. Hivyo tumeona int x nusu ya matumbo kabla. Naam sasa tuweze kuona kitu kama int x mabano 5. Na kuweka wazo hili katika GetInt mpango huo sisi have-- ili tuweze kutekeleza hii kwa njia sawa. Hebu sema katika CS sisi huwa na kutumia n kama idadi ya kitu fulani. Hivyo hapa tunakwenda kuhifadhi wanafunzi wanne. Na sasa tunaweza kusema int umri mabano n-- si kabisa kupata yet-- kutangaza safu ya nne wanafunzi. Hivyo ni jinsi hii kuangalia katika kumbukumbu itakuwa sawa na hii. Wazi hii. Na tunakwenda kuwa na mahali fulani katika memory-- mimi itabidi kuweka hii kuna up. Hivyo mahali fulani katika kumbukumbu. Moja, mbili, tatu, nne. Tuna integers nne mfululizo kwa safu hii ya integers nne. Hivyo, kwa sasa, ni nini ukubwa wa moja ya masanduku hayo? Naam. Ni ka nne. Ni 32 bits. Hivyo sasa hii ni tofauti kutoka safu kwamba sisi aliona mapema, safu ya wahusika. Katika kamba sanduku kila mara byte moja tu, kwa sababu tabia ni byte moja tu. Lakini pamoja na safu ya integers, kila sanduku ina kuwa ka nne ili walionao integer nzima. Hivyo hii ni nini safu ya ints nne bila kuangalia kama. Na kisha kurejea kanuni. Sasa tunataka kweli duka integers ndani ya kwamba safu. Hivyo sasa hii ni sana, sana, sana mfano kawaida kwamba mapenzi wakati fulani kuwa misuli kumbukumbu. Hivyo int i sawa 0. i chini ya n. i pamoja pamoja. Umri bracket i sawa GetInt. Hivyo hii kwa kitanzi, muundo huu, unapaswa kupata sana kutumika. Hivyo hii ni kwa ujumla jinsi sisi iterate juu ya safu karibu yoyote. Sasa angalia aina hii ya inaeleza kwa nini tangu mwanzo hatukuwa na kwa mizunguko kwenda kwa int i sawa na 1, i chini ya au sawa na 10. Sababu ikiwa ni kwamba kuanzia sifuri hufanya kazi hii vizuri na arrays. Hivyo arrays ni sifuri indexed. Kama safu hii ni ya urefu 4, fahirisi ni 0 kupitia 3. Hivyo kupitia kwanza iteration ya hii kwa kitanzi tunakwenda kuwa kuweka umri mabano 0 sawa na mwito wa GetInt. Kwa hiyo chochote mimi kilichotokea kuingia katika keyboard. Katika kupita pili, tuko kuweka age1 sawa na GetInt. Tatu kupita, age2. Kupita mwisho age3. Hivyo kama katika kupita kwanza ya kitanzi Mimi kuingia namba 4 katika keyboard, kisha tutaweza kuingiza 4 hapa. Kama juu ya kupita ya pili mimi kuingia 50, tutaweza kuweka 50 hapa. Juu ya kupita tatu nipate kuingia hasi 1, hasi 1, na kisha hatimaye kama mimi kuingia 0-- na sasa kumbuka kwamba hii ilikuwa ni ripoti ya tatu. Baada ya sisi kitanzi nyuma, i ni kwenda kuwa incremented kwa 4. i ni tena chini ya n, ambayo ni 4. Na sisi kuvunja nje ya kitanzi. Kwa hiyo kile itakuwa ni makosa na hili? [Inaudible]? Watazamaji: [inaudible] Ndiyo. Hivyo safu tu ana maeneo manne, ambayo ina maana kama fahirisi 0 kupitia 3. Hivyo kama hii walikuwa kesi, napenda kuchukua thamani 4 wakati fulani. umri bracket 4 itakuwa kuweka chochote kinachotokea kwa kuwa zaidi ya hapa kwa nini mimi kusema, kuingia 6. Hiyo utakuwa kuweka hii kwa 6. Lakini hatujui nini zaidi ya hapa. Hii si kumbukumbu kwamba tulikuwa na upatikanaji wa. Hivyo kama wewe kumbuka kutoka hotuba ya awali, alikuwa uchapishaji nje maadili ya Zamyla na wakati fulani yeye kugonga segmentation hii kosa. Hivyo pengine kuwa na kuona makosa mengi segmentation kama wewe kutekeleza baadhi ya seti tatizo. Lakini hii ni moja ya njia ambazo unaweza kukutana segmentation kosa, wakati wa kuanza kupata kumbukumbu kwa njia ambazo unapaswa kuwa. Hivyo hatukuwa na upatikanaji wa eneo hili na hii ni mdudu. Hivyo hii ni bora zaidi. Sasa kuna bado ni ndogo suala hilo na kanuni hii. Na kwamba kimsingi kwamba tuko bado kukwama katika nne wanafunzi. Sasa kama nataka kutumia nane ya wanafunzi, OK. Siyo kubwa kwamba mpango huo. Siwezi kwenda katika, mabadiliko kutoa maoni, na mabadiliko n. Sasa hii itafanya kazi na nane wanafunzi. Kama mimi kukusanya hii na kukimbia hii, itakuwa show ME itakuwa kuomba integers kwa nane wanafunzi na itakuwa kazi tu. Lakini ni chini ya bora ya haja ya recompile mpango kila wakati Nataka mabadiliko ya idadi ya wanafunzi kuwa nataka kuingia umri kwa. Hivyo uboreshaji wa mwisho juu ya hivyo, kama tutaweza kuona here-- tuko kwenda kuomba idadi ya watu. Hapa tuna idadi ya watu katika vyumba au umri yoyote ya watu katika chumba hicho. Lakini tunakwenda kuomba idadi ya watu katika chumba kutoka kwa mtumiaji. Hivyo hii ni exact do-wakati kitanzi kwamba tumeona kabla. Ni exact kufanya-wakati kitanzi kwamba inaweza kuwa inatekeleza juu ya kuweka tatizo. Hivyo muda mrefu kama wao ni kuingia n chini ya 1, hivyo kuna got kuwa katika angalau mtu mmoja katika chumba hicho. Muda mrefu kama wao ni kuingia n chini ya 1, kisha tunakwenda kuendelea kuuliza tena. Tafadhali kuingia idadi ya watu katika chumba. Sasa, mara moja tuna idadi ya watu katika room-- hivyo nipate kuingia kwamba kuna ni watu 200 katika chumba hiki. Kisha chini hapa tunakwenda kuja na kutangaza safu ya ukubwa 200. Sisi ni kutangaza safu hiyo ni kubwa ya kutosha kushikilia 200 milele. Wakishuka, ni kwa kitanzi kwamba utakuwa kupata sana kutumika. Hivyo iterating juu safu hii, kumshirikisha kwa kila eneo katika safu hiyo integer, na kisha hatimaye hapa tuko kupata tu mfano wa iterating zaidi ya kwamba safu, si kuwapa maadili, lakini kupata maadili. Hivyo hapa tunaona kwamba sisi wanachosema, mwaka mmoja kuanzia sasa, mtu% i itakuwa% umri wa miaka i, ambapo% kwanza i ni i pamoja na 1. Hivyo i ni kutofautiana hii ripoti. Na ya pili% i ni kwenda kuwa thamani kuhifadhiwa katika umri safu pamoja na 1. Hivyo hii pamoja na 1 ni kwa sababu tu sisi ni saying-- hii pamoja na 1, umri i pamoja na 1. Hii pamoja na 1 ni kwa sababu tu sisi ni akisema, mwaka mmoja kuanzia sasa mtu Itakuwa hii zamani. Hivyo ni kwa nini hii i pamoja na 1? Kwa nini tuna pamoja na 1 huko? Naam. Ndiyo. Basi kumbuka arrays ni sifuri indexed. Hivyo kama sisi ni kuchapisha hii nje kwa mtu wa kusoma tu pato, basi pengine wanataka kuona kitu kama mtu mmoja, mtu namba moja, itakuwa umri wa miaka 20. Mtu namba mbili itakuwa umri wa miaka 15. Wao d badala si kuona mtu idadi sifuri ana umri wa miaka 15. Hivyo kuandaa hii na kuona tu kile inaonekana like-- Kujenga baadhi ya nafasi. Kufanya umri inaandaa. Mbio muda mrefu. Tunaona idadi ya watu katika chumba hicho. Hivyo mimi itabidi kusema kuna watu watu watatu katika chumba hicho. Umri wa mtu namba moja, hebu sema 15, 20, 25. Na sasa mimi itabidi kusema mwaka kutoka wao sasa kuwa 16, 21, 26. Hebu angalia kwamba hii inafanya kazi na n kwamba si sawa na 3. Hivyo kama mimi kusema idadi ya watu ni 5, moja, mbili, tatu, mbili, moja, mwaka mmoja kuanzia sasa wao utakuwa mbili, tatu, umri wa nne, tatu, miaka miwili. Hivyo mimi naweza tu kama urahisi n kuwa 10,000. Sasa mimi kuwa wamekaa hapa kwa muda kabisa wakati kuingia umri, lakini hii kazi. Hivyo sasa katika kumbukumbu mahali fulani sisi na safu ya ukubwa 10,000, hivyo hatimaye 40,000 ka, kwa sababu kuna ka nne kwa kila moja ya integers hizo. Hivyo kuna safu ya ukubwa 10,000 ambapo tunaweza kuhifadhi umri wa watu hao 10,000. Sawa. Maswali kuhusu yoyote ya hili? Naam. Nini kama wewe alitoa namba hasi? Hebu kuona nini kinatokea. Hivyo katika hili case-- idadi fulani ya watu katika chumba, hasi moja. Ni kukataliwa kwamba, kwa sababu hapa sisi kutokea kuwa utunzaji ukweli kwamba kama n ni chini ya moja tunakwenda kuuliza tena. Kama wewe kujaribu kutangaza safu ya ukubwa hasi, kwa ujumla haifanyi kazi. Basi hebu jaribu. Hebu kupuuza chochote thamani wao pembejeo kwa n na tu kusema umri int hasi moja. Hebu angalia kama hivyo hata inaandaa. Sina uhakika. Hakuna Hivyo umri ni alitangaza kama safu kwa ukubwa hasi. Hivyo upfront inatambua safu hawezi kuwa wa kawaida hasi na anakataa yake. Sasa, kama hatukuwa kushughulikia hii kitanzi do-wakati kwa usahihi, kama sisi si kuangalia kama n ni chini ya 1-- hebu sema sisi tu hawakuwa na hii wakati wote na badala yake sisi tu kunyakua integer. Hakuna jambo gani kwamba integer ni, sisi kutangaza safu ya kwamba ukubwa. Hivyo compiler hawawezi uwezekano wa kulalamika sasa. Kama mimi kukusanya Haya hivyo haiwezi kulalamika, kwa sababu haiwezi kujua kwamba mimi nina kwenda kuingia idadi hasi, ambayo inaweza kuwa ni batili. Kwa sababu wote anajua, mimi ili kuingia idadi chanya, ambayo ni kikamilifu halali. Hivyo mimi kufikiria kama mimi kuingia hasi 1 Watu katika chumba, segmentation kosa. Hivyo, sawa. Basi hebu kuongeza hii nyuma tu kuitunza nini awali alikuwa. Hivyo kufanya muda mrefu. Sasa kama nataka kujaribu hasi age-- hivyo hebu kusema kuna watu watano katika chumba hicho. Umri wa mtu namba moja ni hasi 4, mtu tatu ni sifuri, mtu three-- sawa. Hivyo hapa, mwaka mmoja kuanzia sasa, mtu idadi moja itakuwa mbaya na umri wa miaka 3. Hivyo pengine haina mantiki. Kwa sababu Lakini hiyo ni kuangalia katika kanuni zote tuko kufanya inaomba GetInt. Sasa, kama tunakuwa na GetPositiveInt kazi au tulikuwa tu tu jambo hili aina ya kitanzi wakati huo chini ya hapo, basi hii ingekuwa kazi kikamilifu faini. Lakini katika hili hasa kesi, sisi tu hawana kutokea kwa kuwa utunzaji maadili hasi. Maswali mengine yoyote kuhusu arrays? SAWA. Hivyo tumekuwa sasa kuonekana arrays. Na sisi ni kwenda haja ya kutumia hii kwa amri ya mstari wa hoja. Hivyo katika tatizo kuweka two-- Najua wengi wenu bado wanaweza kuwa kazi tatizo seti moja, lakini tatizo kuweka mbili ni kuja juu. Katika tatizo kuweka mbili, wewe ni kwenda haja ya kuwa na kushughulika na masharti, arrays, na amri ya mstari wa hoja. Kwa hiyo kile hoja mstari amri ni? Sasa, unaweza kuona chini hapa teaser kidogo kwa nini hasa ni kwenda kuwa kinachotokea. Tunaona int kuu, inc argc, kamba argv mabano. Hivyo basi kwanza jaribu kutafsiri nini hiyo anajaribu kusema. Sasa, sawa. Hivyo katika mstari amri unapaswa kuwa kupata kutumika kwa baadhi ya amri hizi sasa, na umefanya pengine kukimbia cd katika terminal kabla. Hivyo kama sisi kusema cd pset1, unajua kwamba kwamba lazima kuwa mabadiliko ya ndani pset1 directory. Sasa taarifa kwamba wewe sijawahi Imeandikwa mpango kama huu kabla. Kila mpango huo umefanya imeandikwa, ungependa kukimbia, kusema, dot kufyeka Mario, dot kufyeka tamaa, na kisha inaweza haraka wewe kwa ajili ya pembejeo. Sasa, si kwamba kile mabadiliko directory gani. Wakati kukimbia cd, haina basi sema, ambayo directory unataka cd ndani ya? Badala yake, wewe tu kusema, CD pset1, na tu huenda katika pset1 directory. Hivyo vile vile tuna mifano mingine. kufanya hello. Wakati kukimbia kufanya hivyo, haina basi sema, ambayo mpango gani ungependa kufanya? Wewe tu kusema, katika mstari amri kufanya hello. Hoja ni mfano mwingine. Hii moja sisi ni kusonga mario.c faili up directory moja. Hivyo sasa tunajua kwa mfano huu sisi ni kweli kupita hoja mbili. Kuna mario.c kama hoja ya kwanza, na nukta nukta ni hoja ya pili. Na kisha wakati wewe kukimbia kufanya, wewe kuona kwamba amri kweli kwa muda mrefu line-- kwamba amri kweli kwa muda mrefu kuchapishwa katika mstari amri. Hivyo kwamba kwa muda mrefu command-- hii ni sehemu fupi ya hayo, lakini sasa tuna tatu amri ya mstari wa hoja. Dot dash sifuri, hello, na hello.c. Basi hizi ni amri ya mstari hoja, hoja kwamba wewe ni kupita katika mstari amri hivyo kwamba hana na kuwa ilisababisha wakati kukimbia mpango. Itakuwa frustrating kama wakati wewe likaporomoka Clang hayo, wakasema, "Sawa, ambayo program-- ambayo faili ni wewe kuandaa? Hello.c. Bendera gani wewe kama kuingia? dash o. Ungependa nini faili kuitwa? hodi. Hapana, wewe tu kukimbia Clang dash o hodi hello.c. Hivyo kuangalia nyuma katika hili. Sasa argc argc ni hoja makosa. Ni idadi ya amri ya mstari hoja aliingia katika mstari amri. Naam, argv-- kitaalam v anasimama kwa vector, ambayo kimsingi ina maana safu. Lakini unaweza kupuuza kwamba. Argv-- tuna kamba argv, hivyo kamba argv mabano. Hivyo hii ni aina nyingine ya mabano hawajaona kabla. Hivyo tumeona mabano nukuu wakati tumekuwa alisema, kama, kamba s ni sawa Zamyla. s mabano 0 wanapata Z. tabia Tumekuwa pia kuonekana mabano wakati tulivyosema int umri bracket 5. Ambayo ilitangaza safu ya ukubwa 5. Hivyo hapa ni toleo la mabano hatujaona kabla. Hivyo aina hii ya kamba argv kwamba watamfahamu kabisa kuwa itakuwa tu kuwa kamba. Sasa mabano zinaonyesha kwamba hii ni safu. Hivyo mabano kamba argv njia kwamba argv ni safu ya masharti. Sasa kitaalam kamba ni safu ya wahusika. Hivyo hii ni sasa safu ya safu ya wahusika. Lakini ni rahisi zaidi kufikiria kuhusu hii kama tu safu ya masharti. Hivyo kwa nini huenda mabano kuwa tupu? Kama, kwa nini hatuwezi kusema, mabano 5, mabano n? Naam. Naam. Hatujui ni wangapi pembejeo huko ni kwenda kuwa. Hivyo kama sisi tuangalie mfano Clang, sisi kusema Clang dash o hodi hello.c. Katika kesi hii, kuna kutokea kuwa tatu amri ya mstari wa hoja. Na hivyo brackets-- tutaona katika pili isingekuwa tatu. Ni kitaalam itakuwa minne. Lakini mabano, tunataka kusema, kuna watu watatu. Lakini sasa kama sisi inaonekana katika hoja mario.c dot dot, mabano tunataka wanataka kuweka mbili katika wao. Na kuna mengi ya amri kwamba kuwa na idadi kutofautiana wa mstari amri hoja. Kwa hiyo kile hili toleo la bracket nukuu inaonyesha ni kwamba argv ni safu ya masharti. Lakini hatujui ni wangapi masharti ni katika safu hiyo. Na jinsi gani sisi basi unajua jinsi masharti mengi ni katika safu? Hiyo ni mzima kumweka argc. argc anatueleza muda gani argv ni. Hivyo jambo la mwisho kuweka katika akili ni kwamba, kitaalam, amri yenyewe makosa kama moja amri ya mstari wa hoja. Hivyo cd pset1, kuna mambo mawili amri ya mstari wa hoja. A mpango yenyewe, CD, na kisha halisi hoja sehemu yake, pset1. Mpango wowote kwamba umefanya imeandikwa hivi sasa imekuwa na moja amri ya mstari wa nukta argument-- kufyeka Mario. Hiyo ni tu hoja amri ya mstari. Hivyo sasa kuangalia Clang dash o hodi hello.c. Kwa hiyo kile ni argc? 4. Hivyo argc ni 4. Clang, hivyo argv mabano 0 ni Clang. argv mabano 1 ni dash 0. argv mabano 2 ni hodi, na argv mabano 3 ni hello.c. OK, hivyo maswali juu ya hili, na kisha tutaweza tuangalie baadhi ya mifano ya programu. SAWA. Hivyo tutaweza kuchukua kuangalia hello3.c. Hivyo hii lazima familiar kutoka moja ya c mifano kwanza tulikuwa ambapo tunataka tu kusema, hello dunia, lakini sasa hii ni zaidi kwa ujumla. Hivyo hapa sisi ni kusema hodi % s backslash n argv mabano 1. Notice-- hivyo juu mpaka hatua hii, hii ni nini template yangu ya faili ina inaonekana kama. Mimi nilikuwa int kuu (utupu), na kisha napenda kufanya kitu katika kazi kuu. Sasa badala yake, mara moja tunaanza kushughulika kwa amri ya mstari wa hoja, tunahitaji kueleza aina mbalimbali za kuu. Hivyo kuangalia hello3 tena, kuu ni kwenda kuchukua hoja mbili now-- int argc, idadi ya amri ya mstari wa hoja, na kamba argv mabano, halisi masharti aliingia katika mstari amri. Hivyo nina kwenda kwa mabadiliko hayo template kwa kuzingatia ukweli kwamba. Sasa wakati wowote kuandika mpango, kama huna haja ya kuchukua yoyote amri ya mstari hoja, basi tu kutumia int kuu (utupu). Lakini sasa wakati wewe ni kuandika amri ya mstari wa mipango hoja, ambayo wewe ni kwenda kufanya kwa tatizo kuweka two-- hivyo sasa kwamba wewe ni mbio mipango ambayo haja ya kuchukua amri ya mstari wa hoja, unahitaji kuwa na kuu wa aina hii. Hivyo here-- hii ni matumizi makubwa hoja amri ya mstari. Hivyo uchapishaji argv 1. OK hivyo hebu kukusanya na kuendesha mpango huu. Kufanya hello3. Inaandaa. Dot kufyeka hello3. Na hebu sema, "Rob." Habari Rob. Kama mimi kusema, "hodi Maria," hodi Maria. Habari Maria. Hana bado anasema, "hodi Maria, "kwa sababu mimi si kufanya kitu chochote kwa argv yetu 2. Argv 2 sasa itakuwa "Hana." Argc itakuwa 3. Nini kama mimi alifanya hivyo? Hivyo hodi null. Yeye kwa ufupi kuguswa juu ya ukweli kuwa, kitaalam, GetString ili kurudi null, lakini tutaweza kupata mengi zaidi katika kile null kweli ni. Lakini kuchukua kama ni suala la ukweli kwamba hakuna kwa ujumla ni mbaya. Sisi alifanya kitu kibaya kama ni uchapishaji "hello null." Na sababu hatukuwa kitu kibaya is-- vizuri, wakati mimi mbio dot slash hello3, argc ilikuwa 1. Hivyo kwamba maana urefu wa argv ilikuwa 1. Kama safu ni ya urefu 1, tu halali ripoti ni sifuri. Na hivyo hapa argv 1 ni nje mbalimbali ya safu hii. Ilikuwa ni sawa na kabla ya wakati mimi alijaribu kuhifadhi 6 nje mwisho wa safu. Hivyo mimi nina kujaribu kupata kitu nje ya argv makosa, na sisi ni kupata null. Hivyo toleo bora ya hivyo, kuboresha, ni dhahiri kuangalia argc. Hivyo kama argc ni sawa na 2, hiyo ina maana sisi mbio kitu kama dot slash hello3 Rob. Na itakuwa magazeti "hello Rob." Kama argc haina sawa 2, basi ni kwenda tu kupuuza chochote kuweka katika hoja amri ya mstari kama amri ya mstari wa hoja. Au kama hakuwa na kuweka yoyote wakati wote, ni tu kwenda kupuuza kwamba na kusema tu, "hello wewe." Hivyo kuandaa hii. Kufanya hello4. Na kukimbia hello4. Mbio kwa njia hii, nini lazima kuchapishwa? "Habari yako." Habari yenu. Je kuhusu hello4 Rob? "Habari Rob." Na hatimaye, hodi Rob Maria ni tu "hello You" tena, kwa sababu wewe si kweli kuingia kitu ambacho ni ilivyotarajiwa. Wewe aliingia majina zaidi kuliko inaweza kushughulikia, hivyo ni tu defaulted kwa wewe hodi tabia. Hivyo maswali juu ya hili? Au amri ya mstari wa hoja? OK, hivyo kuchukua kuangalia wanandoa mifano zaidi ya kutumia amri ya mstari wa kwanza arguments-- sisi argv dash 1 nukta c. Hivyo maoni kutoa mbali yale mpango huu wanapaswa kufanya. Lakini taarifa now-- hii kwa kitanzi, hii inalingana mfano halisi Mimi alikuwa akisema kabla. Sisi tu kutokea kwa kuwa kutumia argc badala ya n. Sasa argc ni kweli n. Ni urefu wa argv safu. Hivyo ni iterating juu argv safu printf-ing kila thamani argv. Hivyo kama mimi kufanya hili. Kufanya argv 1. Ni inaandaa. Dot kufyeka argv 1. Kukimbia tu hii, prints dot slash argv 1 tangu hiyo ilikuwa tu amri ya mstari argument-- jina mpango. Siku zote kutakuwa na utafutaji least-- argc hawezi kuwa chini ya moja, tangu mapenzi kuna siku zote angalau kuwa mpango jina kukimbia. Hivyo argv 1 Rob itakuwa magazeti argv 1 na kisha kwenye mstari mpya "Rob." Hivyo katika iteration kwanza ya kitanzi hii, i ni 0. Argv 0 ni jina mpango. Dot kufyeka argv 1. Na kisha argv 1 ni yangu ya kwanza amri ya mstari wa hoja, ambayo ni Rob. Katika hatua hii, sisi ni sawa na argc. Sisi kuvunja nje ya kitanzi na sisi ni kosa. Hivyo hii itafanya kazi kwa holela idadi ya amri ya mstari wa hoja. Taarifa Prints argv 0, argv 1, argv 2, argv 3, argv 4. Na hakuna argv 5. argc ni sawa na 5. Hivyo katika argc katika i sawa 5, sisi kuvunja nje ya kitanzi. SAWA. Hivyo maswali juu ya kwamba kabla ya sisi tuangalie mfano ngumu zaidi? Hivyo argv 2. Sawa. Hivyo sisi bado ni uchapishaji amri ya mstari wa hoja. Lakini sasa tuna taarifa Furushi kwa kitanzi. Hivyo ni nini hii kufanya? Hivyo kitanzi kwanza ni kufanya nini hasa ilivyokuwa kabla. Bado tuko looping juu ya kila amri ya mstari wa hoja, lakini sasa loop-- hii ya pili tumekuwa pia kuonekana kitu kama hii kabla. Alipokuwa iterating juu Zamyla uchapishaji nje Z-A-M-Y-L-A. Hivyo hii kitanzi pili kwa int j sawa na 0, n sawa na strlen wa argv mabano i. Basi hebu kwanza kufikiri kwa the-- hebu kutembea kwa njia. Hebu fikiria nini kompyuta ingekuwa kufanya kama mimi mbio mpango huu kama tu dot kufyeka argv dash 2. Hivyo kama mimi mbio kificho hii, basi argc ni kwenda kuwa sawa na 1. Na kamba argv-- kuna tu kwenda kuwa ripoti moja katika argv, na kwamba itakuja kuwa sawa na nukta kufyeka argv 2-- jina mpango. OK, hivyo sasa i sawa 0, i chini ya 1, i pamoja pamoja kwa int j sawa na 0, n sawa na strlen wa argv mabano 0, hivyo katika iteration kwanza ya kitanzi hii. argv mabano 0 ni dot slash argv 2. Hivyo ni urefu wa kamba kwamba ni nini? Naam, dot kufyeka-R-G-V dash 2. Hivyo strlen ya kwamba itakuwa 8. Hivyo j sawa na 0, n sawa na 8. Muda mrefu kama j ni chini ya 8, j ++. Na kwa kuwa tunakwenda kuwa uchapishaji tabia moja, ambayo ni argv mabano i mabano j. Hivyo i tu ni sifuri. Sisi bado tu moja amri ya mstari wa hoja. Katika kwamba iteration kwanza ya kwa kitanzi, tuko kwenda kuwa uchapishaji argv mabano 0 mabano 0. Na kisha j ni kwenda increment. Na tunakwenda uchapishaji argv mabano 0 mabano 1. Na kisha argv mabano 0 mabano 2. Hivyo hii ni kukutana kwetu mara ya kwanza mfumo wa vyama vingi dimensional arrays. Kumbuka awali kwamba nilisema kwamba argv ni kitaalam safu ya arrays ya wahusika. Hivyo hapa ikiwa mimi alisema kitu kama kamba s ni sawa argv mabano i, na ndipo nikasema, s mabano j, hii itakuwa kufanikisha jambo hilo. Sasa, wameweza kuona s mabano j kabla. Hiyo kupata tu j-th tabia ya hii kamba. Hivyo, pamoja na hayo, sisi ni kupata j-th tabia ya i-th argv. Kwa hiyo kile lazima hii hatimaye pato? Kufanya argv 2. Ni inaandaa. Dot kufyeka argv 2. "Rob Maria Hana," na kutupa baadhi ya chumba. Hivyo tunaona kwamba hii ni outputting nukta kwenye mstari wake na kufyeka juu ya line yake mwenyewe na juu ya mstari yake mwenyewe. Ni uchapishaji nje kila tabia ya mtu binafsi wa kila hoja amri ya mstari. Na kisha katika baina yao, kwa sababu ya mstari huu mpya sisi ni uchapishaji chini hapa, katika kati yao kutakuwa na magazeti mstari mpya. Hivyo hii ni sawa na kabla argv dash 1, ambayo kuchapishwa kila amri ya mstari wa hoja, lakini sasa sisi ni uchapishaji amri ya mstari wa hoja na kisha iterating kwa njia ya kila tabia ya kila hoja amri ya mstari kupata pato huu. SAWA? Hivyo maswali juu ya hili? Jambo moja kukumbuka ni kwamba amri ya mstari arguments-- hivyo ni kutengwa kwa nafasi kama ungependa kawaida wao wanatarajia kuwa. Hivyo kamba wanaweza kuwa na nafasi ndani yake. Siyo super muhimu, lakini kama mimi Alitaka tatu hoja amri ya mstari kuwa na nafasi ndani yake, basi mimi naweza kusema kitu kama hiki. SAWA? Hivyo hii sasa bado tu ina tatu amri ya mstari arguments-- vizuri 4. Dot kufyeka argv dash 2, Rob, Maria, na Hana Bloomberg. SAWA. Maswali juu ya hili? Kuna kitu maalum kuhusu tabia nafasi. Ni hutokea tu kuwa kwamba amri ya mstari wa chipsi tabia nafasi kama jinsi tofauti na hoja kila mmoja. Sawa. Hivyo basi Tatizo kuweka two-- wewe ni kwenda kuwa kuangalia cryptography siri-ufunguo. Hivyo, kwa mfano kwamba kama tuliona kutoka Story Krismasi, wewe ni kwenda kuwa utekelezaji wa baadhi algorithms kwamba, kutokana na ujumbe, wewe ni kwenda kuwa na uwezo encrypt ujumbe kwamba kwamba tu mtu aliye na kwamba siri ufunguo, na kwamba pete avkodare, wanapaswa kuwa na uwezo decrypt. Hivyo kwamba ni toleo la kawaida. Wewe ni kwenda kuwa utekelezaji matoleo mawili tofauti. Kama kutokea kwa kuchukua kuangalia katika hacker Addition sasa, tunakwenda kutoa wewe kamba kama hii, ambayo inawakilisha nenosiri encrypted. Hivyo lengo ni kufikiri nini password decrypted ni. Sasa hii ni kweli jinsi nywila kuhifadhiwa katika mengi ya kompyuta, na ni haki maduka huu random kamba ya wahusika. Una kufikiri jinsi ya kupata kutoka kamba hii random ya wahusika kwa nini password ya awali ilikuwa. Na hatimaye, baada ya hii Tatizo kuweka, unapaswa kuwa na uwezo wa kuelewa nini maana ya hii. Hivyo utakuwa kujifunza jinsi ya decrypt aina hii ya kamba random. Vile vile, kama unakumbuka kutoka wiki 0, unaweza kuwa na kuonekana URL hii. Na unapaswa kuwa na uwezo wa decrypt hii hatimaye. Unaweza kuwa na furaha wakati decrypt yake na bonyeza kiungo. Sawa. Hiyo ni kwa leo. Hivyo kuona wiki ijayo! [ELECTRONIC Music kucheza]