[TÓNLIST spila] DAVID Malan: Allt í lagi. Þetta er CS50, og þetta er lok viku 2. Ég er svo leitt að ég gæti ekki verið það með þér allt í dag, en þú ert í mjög góðum höndum. Leyfa mér að kynna Eigin CS50 er Rob Bowden. ROB BOWDEN: Og auðvitað, þá við verðum að gera grín af því að hann sendi okkur lóðrétt vídeó og sýna þetta. [Vídeó spilun] [TÓNLIST spila] [Fótspor] Video -Þessi ekki að líta á þennan hátt. Það gæti hafa verið í veg fyrir. Segja nei við lóðrétta myndbönd. -Vertical Myndbönd gerast þegar þú halda myndavélinni á rangan hátt. Video mun enda upp útlit eins vitleysa. - [Grunt] -Það Eru fleiri og fleiri fólk háður að gera lóðrétta myndbönd á hverjum degi. Það er ekki sprunga eða ekkert, en það er samt mjög slæmt. Það eru tvær mismunandi tegundir af fólk sem er bæklaður með VVS. Fyrsti hópurinn skemmtun myndbönd sem þeir skjóta eins og myndir. Þeir gera það ekki skaða. Þeir bara skilja ekki að á meðan þú getur snúið mynd, þú getur í raun ekki snúa vídeó. [CRASH] - [MONKEY SOUNDS] -The Hinn hópurinn er fólk sem gefa ekki [Bleep]. -Vertical Video Syndrome er hættulegt. Kvikmyndir hafa alltaf verið lárétt. Sjónvörp eru lárétt. Tölvuskjáir eru lárétt. Augu fólks eru lárétt. Við erum ekki byggð til að horfa lóðrétt myndbönd. -Ég Elska lóðrétt myndbönd. -Nobody Annt um þig. -Ef Þetta vandamál er vinstri óskráðan, þú líka mun byrja að sýna fjórar myndbönd í einu bara til að spara bandbreidd. -Letterboxed Lóðrétt myndbönd myndi að vera á stærð við frímerki. -Og Það mun dreifa alls staðar. Bíómynd skjár hafa alltaf verið lárétt. Ef lóðrétt myndbönd verða Samþykkt, kvikmyndahúsum verður að vera hár og horaður. -Og Allar kvikmyndahúsum myndi að fá rifið niður og endurbyggð. Og með þeim tíma sem þeir voru endurbyggð, Mila Kunis væri gamall og ljótur. -Birds Mun hrun í þeim og deyja. -We'll Allir fá stífur háls að horfa upp. -Og Enginn mun sitja í fremstu röð alltaf aftur. -George Lucas mun aftur út Star Stríð again-- horaður útgáfa. -Ég Var aldrei hægt að segja sagan sem ég vildi segja. Þetta var frábært tækifæri fyrir mig til að tilraunir með nýja tækni. -Þú Ert skíthæll. -Every Tími hreyfanlegur tæki er notað til að taka upp myndskeið, þá freistingu er þar. Bara segja nei. Segja nei við George Lucas. Segja nei við gamla Mila Kunis. Segja nei við lóðrétta myndbönd. -Og Ef þú sérð einhver að gera það, segja, "þú ert ekki að skjóta það rétt Dummy!" [TÓNLIST spila] [END spilun] [Applause] [AUDIO OUT] ROB BOWDEN: --simple mynd af dulmál, sem er í grundvallaratriðum the brengla og decryption leyndarmál skilaboð. Svo hér erum við með mjög einfalt leikfang. Og hugmyndin er ytri hringur snýst í kringum innri hring. Og þú geta sjá, kannski ef ég stækka í, that-- það er erfitt að sjá. En, eins og fjöldi 1-- vel, sem flutti. Númer 1 kort til bréf X, númer 2 kort til bréfi J. Ótrúlega erfitt að sleppa fram. Letter 2 kort til J. Númer 3 kort til D. Svo með þessum hring er hægt að gefa einhver skilaboð 1, 2, 3. Fyrir sumir ástæða þú langar að segja þeim XJD. En þú getur gefið þeim sumir skilaboð af tölum, og svo lengi sem þeir hafa þessi hringur, þeir getur hallmæla hvað þú ert að reyna að segja. Svo þú gætir hafa séð þetta einkum dæmi um dulmál áður ef um jólahátíðinni þú hefur fylgst með A Christmas Story. Ef þú hefur aldrei séð það áður, þá bara kveikja á TBS á bókstaflega hvenær á aðfangadagskvöld, vegna þess að þeir sýna bara það aftur til baka til baka til baka til baka allan daginn. Og viðeigandi vídeó er þetta. [Vídeó spilun] -Farðu Það kunnugt öllum og ýmis sem Ralph Parker er hér með skipaður meðlimur Little Orphan Annie Secret Circle og er rétt að öllum láði og bætur koma við hana. Undirritað Little Orphan Annie. Eftirlitsskýrslu Pierre Andre í bleki! Heiður og ávinningur þegar á aldrinum níu! [GARGA frá útvarpi] -Láttu ekki svona. Við skulum fá á við það. Ég þarf ekki allt sem djass um smyglara og sjóræningja. -Listen Morgun með heimasíðunni niðurstöður ævintýri af Black Pirate Ship. Nú er kominn tími fyrir Leynileg skilaboð Annie að þér meðlimir Secret Circle. Mundu börnin, aðeins meðlimir Annie Secret Circle geta lesa leyndarmál skilaboð Annie. Mundu, Annie er eftir þig. Setja pinna til B2. Hér eru skilaboðin. 12. 11. 2. -Ég Er í fyrsta leyndarmál fundi mínum. -25. 14. 11. 18. 16. -Ég Pierre er í mikilli rödd kvöld. Ég gæti sagt að í kvöld er Skilaboðin var mjög mikilvægt. -3. 25. Það er skilaboð frá Annie sjálf. Mundu, ekki segja neinum. -Five Sekúndum síðar er ég í eina herbergi í húsinu þar sem drengurinn níu gæti setið í næði og lesa. Aha! B! Ég fór til the næstur. E. Fyrsta orðið er "að vera." S. Það var að koma auðveldara núna. U. 25. Það er R. -Komdu Á, Ralphie! Ég hef gotta fara! -Ég Vera rétt niður, Ma! Gee whiz. T. O. "Vertu viss um að" - vera viss um að hvað? Hvað var Little Orphan Annie að reyna að segja? Vertu viss um að hvað? -Randy Hefur fengið að fara! Viltu koma út? -Allt Í lagi, mamma! Ég kem strax út! Ég var að fá nær nú. Spennan var hræðilegur. Hvað var það? Örlög jörðinni getur hanga í jafnvægi! -Ralphie, Randy fékk að fara! -Ég Sé rétt út, fyrir að gráta upphátt! Næstum þar! Fingur minn flaug. Hugur minn var stál gildru. Hverri svitaholu titrað. Það var næstum ljóst! Já. Já. Já. Já. Vertu viss um að drekka Ovaltine þína. Ovaltine? A crummy auglýsing? Fjandinn. [END spilun] ROB BOWDEN: Svo er það hvernig Ovaltine tengist dulmál. Í grundvallaratriðum CS50 auglýst bara Ovaltine, svo við gátum vera crummy auglýsing fyrir Ovaltine. Allt í lagi. Svo nú raunveruleg tölvunarfræði. Muna á mánudaginn sem við var horfið köfun dýpra inn strengi. Þannig að við vorum að fást við strengurinn "Zamyla." Og við vorum að viðurkenna sú staðreynd að við getum meðhöndla "Zamyla" sem röð af stöfum. Og muna að við lærðum krappi tákn. Þannig að ef þetta voru geymd í streng "s," þá ef við sögðum s krappi 0, sem myndi bókstaf höfuðborg Z. Og ef við sögðum s krappi 1, sem myndi gefa til kynna fyrsta lágstafir A, og svo á allt að s krappi 5, sem myndi gefa til kynna að endast. Nú muna að lengd Þessi strengur er 6, en vísitölur í streng eru 0 til 5, Z í gegnum það endast. Þannig að þetta passar nú í stærri mynd af minni tölvunnar, RAM. Svo einhvers staðar forrit sem þú ert að keyra tölvuna þarf að muna Zamyla einhvers staðar í minni. Svo get ég verið með sjálfboðaliða? Já endilega. Og hvað heitir þú? DEAN: Dean. ROB BOWDEN: Dean? Gaman að hitta þig, Dean. Svo koma hérna, og við erum að fara að hafa þú draga á fallegu nifty okkar skipulag minni. Nú er ég eins og til hugsa af minni eins og einn langur ræma bæti, en bara til birtingar við munum bara vinstri til hægri, efst til botn. OK? Þannig að ég ætla að sýna a program-- Getstrings.c. Og svo er allt þetta program að gera er að biðja fjóra strengi frá notanda með GetString og þá prentun hvað að fyrsta band inn var. Við erum að hunsa Tveir gegnum fjórum. OK. Svo hérna now-- þegar Ég fyrst beiðni s1. Svo þú ert í tölvunni. Og þú ert að innleiða GetString. Svo þú biður um band frá mér, og ég segi, OK, Dean. Gefðu strenginn "Dean." Svo einhversstaðar í minni þú þarf að muna "Dean." Svo skrifa það inn í minni einhvers staðar. Perfect. OK. Svo nú höfum við S2. Og s2 er að fara að vera beiðni um að GetString. Þannig að ég ætla að slá inn streng. Ég ætla að koma inn "Hönnu." Svo inn "Hönnu" einhvers staðar inn í minni. Já. A-H. OK, svo nú s3. Og það er að fara að vera annar óskað eftir að GetString. Og svo nú inn "Maria". Allt í lagi. Og þá er það eitt síðasta beiðni til GetString, s4. Svo, ég veit ekki. Hvernig væri að við að fara með antidisestablishmentarianism. Svo inn að í minni. Já. Svo bara gera "Rob." OK. Svo nú explain-- hverju gerði þú skilur þessi rými? Hvers vegna ertu með þetta auður pláss hér, hér, og hér? Já. Svo eftir þegar ég fer að prenta s1-- þannig að ef við hefði "Hannah" gangi rétt upp við hliðina á "Dean," hvernig vitum við hvenær strengurinn "Dean" endar? Svo prentun strenginn S1 getur haft bara prenta "DeanHannahMariaRob" ef það hefur ekki allir vísbending af þegar "Dean" endar í raun. Allt í lagi. Svo í minni þannig að við í raun tákna þetta enda streng er með sviga núll. Svo er þetta rúm einmitt það sem við vildum. Það ætti að vera skástrik núll. Þetta verður sviga núll, og þetta mun vera skástrik núll. Og þú getur haft stórkostlegur verðlaun fyrir að vera fullkomið sjálfboðaliði. Taktu streitu boltanum! OK. Svo er þetta eðli sviga núll hvernig við kynna enda streng. Það er að þegar einhver gefið program vill til að prenta streng, það er how-- man við lærðum sem strlen virka í síðustu viku? String lengd? Það er hvernig band lengd er hægt að ákvarða hversu lengi band er. Hún heldur bara iterating persónurnar þar til það finnur Sviga núll staf. Svo mikilvægt að átta sig á um sviga núll staf er það táknað af öllum núllum í bita. Svo eftir að þetta er greinilegur frá núll staf. Svo núll eðli, ef þú manst í dæminu að hann gaf í lok af fyrirlestri þar stafir kort to-- eins fjármagni kort til 65. Lágstafir í kort til 97. Lágstafir b væri 98. Svo tala 0 kortin to-- ég ekki veit burt the toppur af minn höfuð. 44 eða 45. Einhvers staðar á því svæði. Svo er eðli 0 raunveruleg tala. En sviga núll kort til allra núll bita. Svo er það greinarmunur milli sviga núll, sem við munum kalla núll Ljúka. Það er munur á milli sviga núll og eðli núll. Allt í lagi. Svo tala svolítið meira um strengi. Svo þá sem við sjáum hér, þetta er hvernig það væri sett fram í minni. Svo þessi hugmynd um strengi sem röð af characters-- svo opinber tölva sciency orð fyrir röð er fylki. Svo við myndum kalla streng An array af stöfum. Og það eru í raun önnur gögn tegundir sem við getum gert fylki út af. Svo til að hvetja þetta, líta á dæmi. Við munum kalla það ages0.c ég ætla afrita og líma sniðmát okkar. OK. Svo í þessari áætlun hvað við langar að gera er að grípa aldri þriggja nemenda í námskeiðinu. Þannig að við vitum int age-- og nú ætla ég að segja 0. Svo þú might vilja til að segja age1, en vegna munum við sjá mjög fljótlega, Ég segi INT age0 jafngildir GetInt. Svo sama símtali til GetInt sem við höfum verið að nota I ekki skyldir vera vekur segja, "að gefa mér aldur." En bara óskar þess. Og age1 jafngildir GetInt. Og INT age2 jafngildir GetInt. Svo aftur, þrír nemendur, en Á endanum breytilegum vísitölur eru age0 gegnum age2. OK. Þannig að þetta forrit mun gera hvað sem við viljum með age0, age1 og age2, en þetta forrit á endanum virkar fyrir þremur nemendum. OK. Svo nú er það ef ég vil fjórir nemendur? Jæja, ég ætla að hafa til að fara aftur í númerið mitt, breyta athugasemd, og nú höfum við int age3 jafngildir GetInt. OK. Svo sem sér vandamál hér? Hvað er vandamálið við þessa tegund af uppsetningu? Já. Já. Þannig að við erum að búa til breyta fyrir hvern nemanda. Nú sem virkar, en lokum hvað ef ég nú segja: "Ég vil að grípa aldri átta nemendur eða 16 nemendur eða að þó margir nemendur í hundruð nemenda í CS50 eða þúsundir nemenda á háskólasvæðinu eða milljarða manna í heiminum? Svo að lokum er þetta ekki sjálfbær. Hvenær sem þú sérð sjálfur að afrita og líma númer svona, þú ættir almennt líða að það er betri leið. Svo er þetta þar sem við kynna fylki yfirlýsingu. Svo þegar þú lýsa fylki, þetta er það sem almennt snið er að fara að líta út. Við erum að fara að segja gerð. og þá erum við að fara að gefa nafn af því fylki, bara eins og við skilgreinum hverju breytu. Og svo að lokum að við erum að nota þetta krappi ritháttur aftur en í öðru samhengi frá hvernig við værum að nota þetta fyrr. Svo hér lítur þetta út eins og venjulegt breyta yfirlýsingu sem við höfum séð. Þannig að við höfum séð int x semikomma áður. Jæja nú erum við kannski að sjá eitthvað eins int x sviga 5. Og setja þessa hugmynd inn í GetInt forrit sem við have-- svo við getum innleiða þetta á sama hátt. Segjum að í CS við tilhneigingu til að nota n og fjöldi eitthvað. Svo hér erum við að fara að geyma fjórar nemendur. Og nú getum við sagt int aldri krappi n- ekki alveg það yet-- að lýsa fjölda fjórum nemendum. Svo hvernig þetta mun líta í minni verður svipað þessu. Hreinsa þetta. Og við erum að fara að hafa eitthvað í memory-- Ég setti þetta upp þar. Svo einhvers staðar í minni. Einn tveir þrír fjórir. Við höfum fjórum heiltölur í röð fyrir þennan fjölda af fjórum heiltölur. Svo, nú, hvað er Stærð einn af þessum kassa? Já. Það er fjögur bæti. Það er 32 bita. Svo nú er þetta öðruvísi frá array sem við sá fyrri, array stafi. Í streng hver kassi var aðeins eitt bæti, vegna þess að eðli er aðeins eitt bæti. En með fjölda heiltalna, hver kassi þarf að vera fjögur bæti í röð að passa heilt heiltölu. Svo er þetta það fylki af fjögur ints myndi líta út. Og svo aftur að kóða. Nú viljum við í raun geyma heiltölur í því fylki. Svo nú er þetta mjög, mjög, mjög algengt mynstur sem mun á einhverjum tímapunkti verða vöðva minni. Svo int i jafngildir 0. Ég minna en n. ég plús plús. Aldurshópi ég jafngildir GetInt. Svo þetta fyrir lykkju, þetta snið, þú ættir að fá mjög vön. Svo er þetta yfirleitt hvernig við munum iterate yfir nánast hvaða fylki. Nú taka svona útskýrir hvers vegna frá upphafi höfum við ekki fyrir lykkjur fara fyrir int Ég jafnt og 1, I minna en eða jafnt og 10. Ástæðan er sú að frá og núll gerir þetta verk vel með fylki. Svo fylki eru núll verðtryggð. Ef þetta array er lengd 4, Vísitölurnar eru 0 til 3. Svo í gegnum fyrsta endurtekning á þetta fyrir lykkju við erum að fara að vera að setja aldur krappi 0 jafnt símtali til GetInt. Svo hvað ég gerðist til að slá inn á lyklaborðið. Í seinni umferð, við erum setja age1 jafnt GetInt. Þriðja umferð, age2. Final framhjá age3. Svo ef í fyrstu umferð lykkju Ég inn í númer 4 á lyklaborðinu, þá munum við setja inn 4 hér. Ef á annarri umferð ég inn 50, munum við setja 50 hér. Á þriðja skarðið ég gæti inn neikvæð 1, neikvæð 1, og þá að lokum ef ég inn 0-- og nú man að þetta var vísitalan þriggja. Eftir að við lykkja til baka, ég er fara að hækkaður í 4. Ég er ekki lengur minna en n, sem er 4. Og við að brjótast út úr lykkja. Svo hvað væri rangt við þetta? [Inaudible]? Áhorfendur: [inaudible] Já. Svo array hefur aðeins fjórum stöðum, sem þýðir í vísitölur 0 gegnum 3. Þannig að ef þetta væri raunin, myndi ég taka á gildi 4. á einhverjum tímapunkti. aldur krappi 4 verður að setja hvað verður um að vera hérna að það sem ég hef að segja, inn 6. Það verður að stilla þetta á 6. En við vitum ekki hvað er hérna. Þetta er ekki minni sem við höfðum aðgang að. Þannig að ef þú manst frá fyrri fyrirlestur, hann var að prenta út gildi Zamyla og á einhverjum tímapunkti hann ná þessu skiptingu kenna. Svo þú munt sennilega vera að sjá margir gallar skiptingu eins og þú framkvæma sumir af the vandamál setur. En þetta er ein af þeim leiðum sem þú getur lenda í skiptingu kenna, þegar þú byrjar að fá aðgang minni á þann hátt sem þú ættir ekki að vera. Svo höfum við ekki aðgang að Þessi staðsetning og þetta er padda. Svo er þetta betra. Nú er það enn lítið málið með þessum kóða. Og það er í rauninni að við erum enn fastur á fjórum nemendum. Nú ef ég vil nota átta nemendur, OK. Það er ekki það stór samningur. Ég get farið í, breyta tjá, og breyta n. Nú er þetta vinna með átta nemendum. Ef ég safna saman þetta og hlaupa þetta, það mun sýna me-- það mun biðja heiltölur fyrir átta nemendur og það verður bara að vinna. En það er minna en hugsjón að þurfa að endurþýða program hvert einasta skipti Ég vil breyta fjölda nemenda að ég vil að slá inn aldur fyrir. Þannig að endanleg framför á þetta, eins og við munum sjá here-- við erum fara að biðja um fjölda fólks. Hér höfum við fjölda af fólki í herbergjunum eða einhverjar aldur af fólki í herberginu. En við erum að fara að biðja um númerið af fólki í herberginu frá notanda. Þannig að þetta er nákvæmlega sama do-en lykkja sem við höfum séð áður. Það er nákvæmlega sama gera-while lykkju sem þú má innleiða á vandamál setja. Svo lengi sem þeir eru farið er inn á n minna en 1, þannig að það er got að vera á kosti einn maður í herberginu. Svo lengi sem þeir eru farið er inn á n minna en 1, þá erum við að fara að halda að spyrja aftur. Vinsamlegast sláðu inn númerið af fólki í herberginu. Nú, þegar við höfum fjölda af fólki í room-- svo ég gæti slegið inn að það eru 200 manns í þessu herbergi. Þá hérna við erum að fara að koma og lýsa fjölda stærð 200. Við erum að lýsa array sem er nógu stór til að halda 200 aldri. Koma niður, er það til hliðar að þú munt fá mjög vön. Svo iterating yfir þessu fylki, framselja til hverjum stað í því fylki heiltala, og þá á endanum hér erum við bara að fá dæmi um iterating yfir þessi fylking, að úthluta gildi, en til að fá aðgang gildi. Svo hérna sjáum við að við eru að segja, að ári, Maður% i verði% i ára, þar sem fyrsti% i er ég auk 1. Svo er ég vísitalan breyta. Og seinni% i er að fara til vera the gildi geymd í alda array plús 1. Svo er þetta plús 1 bara vegna þess að við erum saying-- þetta plús 1, aldur i plus 1. Þetta plús 1 er bara vegna þess að við erum segja, á ári héðan í mann verður þetta gamla. Svo hvers vegna er þetta ég plús 1? Hvers vegna höfum við auk 1 þar? Já. Já. Svo man fylki eru núll verðtryggð. Þannig að ef við erum að prenta þetta út fyrir einhver bara lesa framleiðsla, þá líklega þeir vilja sjá eitthvað eins mann einn, maður númer eitt, verður 20 ára gamall. Sá númer tvö verður 15 ára. Þeir myndu ekki sjá mann tala núll er 15 ára gamall. Svo samantekt þetta og bara sjá hvað það lítur like-- Búa pláss. Gera aldrinum safnar. Running aldri. Við sjáum fjölda fólks í herberginu. Svo ég ætla að segja að það eru þrír menn í herberginu. Aldur persónu númer eitt, við skulum segja 15, 20, 25. Og nú ætla ég að segja á ári frá Munu þeir nú vera 16, 21, 26. Við skulum sjá að þetta virkar með og N sem er ekki jafnt og 3. Þannig að ef ég segi fjöldi fólks er 5, einn, tveir, þrír, tveir, einn, á ári héðan þeir verða tveir, þrír, fjórir, þrír, og tveggja ára gamall. Svo ég gat bara eins auðveldlega getað n vera 10.000. Nú er ég mun sitja hér fyrir alveg a meðan að slá inn aldur, en þetta virkar. Svo nú í minni einhvers staðar við hafa fjölbreytta stærð 10.000, svo að lokum 40.000 bytes, því það eru fjögur bæti fyrir hvert þessara talna. Þannig að það er fylki af stærð 10.000 þar sem við getum geyma aldur þessara 10.000 manns. Allt í lagi. Spurningar um eitthvað af þessu? Já. Hvað ef þú gafst neikvæð tala? Við skulum sjá hvað gerist. Þannig að í þessu tiltekna case-- númer af fólki í herberginu, neikvæð einn. Því hafnað að, því hér við gerast að meðhöndlun þá staðreynd að ef n er minna en sá sem við erum að fara að spyrja aftur. Ef þú reynir að lýsa array af neikvæðum stærð, það yfirleitt virkar ekki. Svo skulum reyna. Skulum hunsa hvað gildi þeir inntak fyrir n og bara segja int aldri neikvæðu. Við skulum sjá hvort það safnar jafnvel. Ég er ekki viss. Nei Svo aldur er skilgreind sem að array með neikvæðum stærð. Svo upfront færir fylki getur ekki vera neikvæð stærð og hafnar. Nú, ef við ekki séð þetta do-while lykkju rétt, ef við værum ekki að haka ef n er minna en 1-- Segjum að við bara ekki hafa þetta á öllum og í staðinn við grípa bara heiltölu. Sama hvað það heiltala er, við lýsa fjölda af sömu stærðargráðu. Svo þýðandinn getur ekki hugsanlega kvarta núna. Ef ég safna saman this-- svo það er ekki hægt að kvarta, vegna þess að það er ekki hægt að vita að ég er fara að slá inn neikvæð tala, sem gæti verið ógilt. Fyrir allt það veit, ég gæti slá jákvæð tala, sem er fullkomlega gild. Svo ég ímynda mér ef ég inn neikvæð 1 fólk í herberginu, skiptingu kenna. Svo, OK. Svo skulum bæta þetta aftur bara halda það hvað það var upphaflega. Svo gera aldri. Nú ef ég vil reyna a neikvæð age-- þannig að við skulum segja að það eru fimm manns í herberginu. Aldur persónu númer eitt er neikvæð 4, maður þrír er núll, maður three-- OK. Svo hér, að ári, maður númer mun vera neikvæð 3 ára. Svo sennilega er ekki skynsamleg. En það er bara vegna þess að leita á kóða allt sem við erum að gera er að biðja GetInt. Nú, ef við hefðum haft á GetPositiveInt virka eða við höfðum bara einfaldlega gert þetta konar sama while lykkju þarna niðri, þá myndi þetta virka fullkomlega í lagi. En í þessu tiltekna skaltu gera við bara ekki verður að vera meðhöndlun neikvæð gildi. Aðrar spurningar um fylki? OK. Þannig að við höfum nú séð fylki. Og við erum að fara að þurfa að nota þetta fyrir stjórn-lína rök. Svo í Heimadæmi two-- Ég veit að mörg ykkar gæti samt verið að vinna á Heimadæmi einn, en vandamál setja tvö er að koma upp. Í Heimadæmi tvö, þú ert að fara að þarf að takast á við strengi, fylki, og stjórn-lína rök. Svo það eru stjórn lína rifrildi? Nú getur þú séð niður hér smá beitu fyrir nákvæmlega hvað er að fara að gerast. Við sjáum int helstu aukið út argc, string argv sviga. Svo fyrst skulum reyna að túlka hvað það er að reyna að segja. Nú, OK. Svo á the stjórn lína sem þú ættir að vera venjast að sumir af þessum skipunum nú, og þú hefur sennilega hlaupa cd í flugstöðinni áður. Þannig að ef við segjum CD pset1, þú veist að það ætti að breytast í pset1 skrá. Nú taka eftir því að þú hefur aldrei skrifað forrit eins og þetta áður. Hvert forrit sem þú hefur skrifað, þú myndi hlaupa, segjum, punktur rista Mario, punktur rista gráðugur, og þá er það gæti hvetja þig fyrir hjálpina. Nú, það er ekki það Breyta skrá gerir. Þegar þú keyrir cd, er það ekki þá að segja, sem skrá viltu cd inn? Þess í stað, þú segir bara, CD pset1 og það fer bara í pset1 skrá. Svo álíka við höfum fleiri dæmi. gera halló. Þegar þú keyrir að gera, er það ekki þá að segja, hvaða forrit viltu gera? Þú segir bara, að minnsta stjórn lína gera halló. Ferðinni er annað dæmi. Þetta eina sem við erum að flytja í mario.c skrá upp einn lista. Svo nú vitum við þetta dæmi við erum í raun liggur tvær breytur. Það er mario.c sem fyrsta rifrildi, og punktur punktur er annað rök. Og svo þegar þú keyrir að gera, þér sjá að í raun langur stjórn line-- sem raunverulega langur stjórn prentuð á the stjórn lína. Svo það lengi command-- þetta er bara stutt hluti af því, en nú höfum við þrjú stjórn-lína rök. Dot Dash núll, halló, og hello.c. Svo þetta eru stjórn-lína röksemdir, rök að þú ert liggur á að stjórn lína þannig að það þarf ekki að vera beðin þegar þú keyrir forritið. Það væri svekkjandi ef við þú hleypur clang sagt, "OK, sem program-- sem skrá ertu að setja saman? Hello.c. Hvað fánar myndir þú eins og að koma inn? þjóta o. Hvað myndir þú vilja skráin að vera kölluð? halló. Nei, þú keyrir bara clang þjóta eða halló hello.c. Svo horfa aftur á þetta. Nú er argc-- argc þau rök telja. Það er fjöldi stjórn-lína rök færð á the stjórn lína. Jæja, argv-- tæknilega V stendur fyrir vektor, sem í grundvallaratriðum þýðir fylkisins. En þú getur að hunsa það. Argv-- við höfum band argv, svo string argv sviga. Svo er þetta annars konar sviga þú hefur ekki séð áður. Þannig að við höfum séð krappi ritháttur þegar við höfum sagt, eins, string s jafngildir Zamyla. s krappi 0 aðgangur að há- Z. Við höfum einnig séð sviga þegar við sögðum int aldur krappi 5. Sem lýst fjölda stærð 5. Svo er hér útgáfa af sviga við höfum ekki séð áður. Þannig að þetta svona band argv sem væri alveg þekki að það myndi bara vera band. Nú sviga gefa til kynna að þetta er fylki. Svo string argv sviga þýðir sem argv er fylki af strengjum. Nú tæknilega band er fylki af stöfum. Svo er þetta nú fylki af fjölda stafi. En það er miklu auðveldara að hugsa um þetta sem bara array af strengjum. Svo hvers vegna gæti sviga verið tóm? Eins, hvers vegna getum við ekki sagt, krappi 5, krappi n? Já. Já. Við vitum ekki hversu margir aðföng eru að fara að vera. Þannig að ef við lítum á clang dæmis við segjum clang sprettinn eða hello hello.c. Í þessu tiltekna tilviki, það gerist að vera þrír stjórn-lína rök. Og svo brackets-- við munum sjá í annað það væri ekki þrjú. Það tæknilega væri fjórir. En sviga, við gerðum segja, það eru þrír. En nú ef við skoðuðum færa mario.c punktur punktur, sviga við viljum að setja tvö í þeim. Og það eru fullt af skipunum sem hafa breytilegan fjölda skipanalínu rök. Svo er það þetta útgáfa af krappi tákn sýnir er að argv er fylki af strengjum. En við vitum ekki hversu margir strengir eru í því fylki. Og hvernig vitum við þá hvernig margir strengir eru í fylkinu? Það er allt lið argc. argc segir okkur hversu lengi argv er. Svo síðasta sem þarf að hafa í hugur er að tæknilega, stjórn sjálft telst einn af stjórn-lína rök. Svo cd pset1, það eru tveir stjórn-lína rök. The program í sjálfu sér, CD, og ​​þá í raun rök hluti af því, pset1. Hvaða forrit sem þú hefur skrifað svona langt hefur haft einn stjórn-lína argument-- punktur rista Mario. Það er eina stjórn-lína rök. Svo nú að horfa á clang þjóta eða halló hello.c. Svo er það argc? 4. Svo er argc 4. Clang, svo argv krappi 0 er Clang. argv krappi 1 er þjóta 0. argv krappi 2 er halló, og argv krappi 3 er hello.c. OK, svo spurningar um þetta, og þá munum við líta á sumir forritanlegur dæmi. OK. Þannig að við munum taka a líta á hello3.c. Þannig að þetta ætti að vera kunnugt frá eitt af fyrstu dæmum c við höfðum þar sem við myndum bara segja, halló heim, en nú er þetta meira almennt. Svo hér erum við að segja halló % s sviga n argv krappi 1. Notice-- svo upp til þessa liðar, þetta er hvað sniðmát skrá minn hefur litið út. Ég hafði int helstu (tóm), og þá myndi ég gera eitthvað í aðalæð virka. Nú í stað, þegar við byrjum að fást með stjórn-lína rifrildi, við þurfum að staðhæfa a mismunandi form af helstu. Svo að horfa á hello3 aftur, helstu er að fara að taka tvær breytur now-- int argc, fjöldi stjórn-lína rifrildi, og band argv sviga, í raun strengir inn á the stjórn lína. Þannig að ég ætla að breyta því sniðmát til að endurspegla þá staðreynd. Nú þegar þú skrifar a program, ef þú ert ekki þarf að grípa til neinna stjórn-lína rök, þá bara nota int helstu (tóm). En nú þegar þú ert að skrifa stjórn-lína rök forrit sem þú ert að fara að vera að gera fyrir vandamál setja two-- svo nú að þú ert að keyra forrit sem þarf að taka stjórn-lína rök, þú þarft að hafa main af þessu formi. Svo here-- er þetta stór notkun af stjórn-lína rök. Svo prentun argv 1. OK þannig að við skulum taka saman og keyra þetta forrit. Gera hello3. Safnar. Dot rista hello3. Og við skulum segja, "Rob." Halló Rob. Ef ég segi, "Halló Maria" halló Maria. Halló Maria. Hannah segir enn, "halló Maria, "vegna þess að ég er ekki gera neitt með argv okkar 2. Argv 2 nú væri "Hannah." Argc væri 3. Hvað ef ég gerði þetta? Svo halló null. Hann snerti stuttlega á þá staðreynd að tæknilega, GetString gæti skilað null, en við munum fá miklu meira í það null raun er. En taka það sem málið staðreynd að ekki er almennt slæmt. Við gerðum eitthvað rangt ef það er prentun "halló null." Og ástæðan að við gerðum eitthvað rangt is-- vel, þegar ég hljóp punktur rista hello3, argc var 1. Svo þýðir lengd argv var 1. Ef array er lengd 1, aðeins gild vísitalan er núll. Og svo hér argv 1 er utan Umfang þessu fylki. Það var svipað og áður þegar ég reyndi að geyma 6 utan lok fylkisins. Þannig að ég er að reyna að opna eitthvað utan argv telja, og við erum að fá null. Svo betri útgáfa af þetta framför, er skýrt haka argc. Svo ef argc jafngildir 2, sem þýðir að við hljóp eitthvað eins og punktur rista hello3 Rob. Og það mun prenta "halló Rob." Ef argc ekki jafn 2, þá er það bara að fara að hunsa hvað sem þú setur á stjórn-lína rök sem stjórn-lína rök. Eða ef þú ekki setja eitthvað á öllum, það er bara að fara að hunsa það og bara segja, "halló þig." Svo samantekt þetta. Gera hello4. Og keyra hello4. Gangi það með þessum hætti, hvað ætti að prenta? "Hello þig." Halló þú. Hvað um hello4 Rob? "Hello Rob." Og að lokum, halló Rob Maria er bara "halló You" aftur, vegna þess að þú did ekki raunverulega inn eitthvað sem það ráð. Þú færð fleiri nöfnum en það gæti séð, svo það vanskil bara að Hello þú hegðun. Svo spurningum um þetta? Eða stjórn-lína rök? OK, svo að taka a líta á a par fleiri dæmi um notkun stjórn-lína arguments-- fyrst við höfum argv Dash 1 punktur c. Svo athugasemdir ljóstra því þetta forrit ætti að vera að gera. En taka now-- þetta fyrir lykkju, þetta passar nákvæmlega mynstur Ég var að segja áður. Við verður bara að vera nota argc stað n. Nú er argc raun n. Það er lengd argv fylkisins. Svo eru iterating yfir argv array printf-ing hvert argv gildi. Svo ef ég geri þetta. Gera argv 1. Það safnar. Dot rista argv 1. Bara að keyra þetta, það prentar punktur rista argv 1 síðan það var eina stjórn-lína argument-- forritið nafn. Það verður alltaf að vera á least-- argc má ekki vera minna en einn, Þar mun alltaf að minnsta kosti vera program nafn að keyra. Svo argv 1 Rob mun prenta argv 1 og þá á nýja línu "Rob." Svo í fyrsta endurtekning þessa lykkju, ég er 0. Argv 0 er program nafn. Dot rista argv 1. Og þá argv 1 er mitt fyrsta Rök stjórn-lína, sem er Rob. Á þessum tímapunkti erum við jafn argc. Við brjótast út úr lykkja og við erum að gera. Þannig að þetta mun virka fyrir handahófskennt Fjöldi stjórn-lína rök. Takið það prentar argv 0, argv 1, argv 2, argv 3, argv 4. Og það er engin argv 5. argc er jafnt og 5. Svo á argc-- á ég er 5, við að brjótast út úr lykkja. OK. Svo spurningum um að áður en við líta á flóknari dæmi? Svo argv 2. Allt í lagi. Þannig að við erum enn að prenta stjórn-lína rök. En nú taka við höfum a hreiður til hliðar. Svo hvað er þetta að gera? Svo fyrsta lykkja er að gera nákvæmlega það sem það gerði áður. Við erum enn að lykkja yfir hver stjórn-lína rök, en nú þetta annað loop-- við höfum einnig séð eitthvað svona áður. Þegar hann var iterating yfir Zamyla prentun út Ö-A-m-Y-L-A. Svo þetta annað lykkja fyrir int j jafngildir 0, n er jafnt og strlen af ​​argv krappi i. Svo skulum fyrst að hugsa um the-- skulum ganga í gegnum. Við skulum hugsa hvað tölva myndi gera ef ég hljóp þetta forrit sem bara punktur rista argv þjóta 2. Þannig að ef ég hljóp þennan kóða, þá argc er að fara að vera jöfn 1. Og band argv-- það er bara að fara að vera einn Vísitala argv, og það er að fara að vera jafn punktur rista argv 2-- forritið nafn. OK, svo nú er ég jafnt og 0, ég minna en 1, ég plús plús fyrir Int J jafngildir 0 n jafngildir strlen af ​​argv krappi 0, svo í fyrsta endurtekning þessa lykkju. argv krappi 0 er punktur rista argv 2. Svo er það lengd strengsins? Jæja, punktur rista A-R-G-V þjóta 2. Svo strlen af ​​því verði 8. Svo, j er 0, n er jafnt og 8. Svo lengi sem j er minna en 8, j ++. Og með því að við erum að fara að vera prentun einn staf, sem er argv krappi ég krappi j. Þannig að eina sem ég er núll. Við samt aðeins hafa einn stjórn-lína rök. Í því fyrsta endurtekning af fyrir lykkju, við erum að fara að vera prentun argv krappi 0 krappi 0. Og þá, j er að fara að hækka. Og við erum að fara að prenta argv krappi 0 krappi 1. Og þá argv krappi 0 krappi 2. Svo er þetta fyrsti fundur okkar af multi-víddar fylki. Mundu áðan að ég sagði sem argv er tæknilega fjölbreytta fylki af stöfum. Svo hér ef ég sagði eitthvað eins og string s jafngildir argv krappi i, og þá sagði ég, s krappi, j, þetta væri inna sama. Nú, hefur þú séð s krappi j áður. Það er bara að opna j-ta eðli þessa streng. Svo með þetta, við erum að fá j ta eðli i-ta argv. Svo hvað ætti þetta að lokum framleiðsla? Gera argv 2. Það safnar. Dot rista argv 2. "Rob Maria Hannah," og gefa okkur smá pláss. Þannig að við sjáum að þetta er outputting punktur á eigin línu og rista í sinni línu og a á eigin línu. Það er prentun út hver sérstæð hvers stjórn-lína rök. Og þá á milli þeirra, vegna þessa nýja línu við erum prentun hérna, í milli þeirra og það mun prenta nýja línu. Svo er þetta svipað sem áður argv þjóta 1, sem prentuð hver Rök stjórn-lína, en nú erum við að prenta stjórn-lína rök og þá iterating gegnum hvert eðli hvers stjórn-lína rök að fá þessa útkomu. OK? Svo spurningum um þetta? Eitt sem þarf að hafa í huga er að stjórn-lína arguments-- svo þeir eru aðskilin með bilum sem þú vildi náttúrulega búast við þá til að vera. Svo band getur haft rými í það. Það er ekki frábær mikilvægt, en ef ég vildi rök þriðja stjórn-lína að hafa pláss í henni, þá er ég gæti sagt eitthvað eins og this. OK? Svo þetta nú samt hefur aðeins þrjú stjórn-lína arguments-- vel 4. Dot rista argv þjóta 2, Rob, Maria, og Hannah Bloomberg. OK. Spurningar um þetta? Það er ekkert sérstakt um rúm staf. Það gerist bara að vera að stjórn-lína skemmtun rúm staf eins og hvernig þú aðskilja hvert rifrildi. Allt í lagi. Svo þá Heimadæmi two-- þú ert að fara að vera horfa á leyndarmál-lykill dulmál. Svo, svipað því dæmi við sáum frá A Christmas Story, þú ert að fara að innleiða nokkrar reiknirit sem, gefið skilaboð, þú ert að fara að vera fær um að dulkóða þessi skilaboð að aðeins einhver með þessi leyndarmál lykill, með því leyniletri hringinn, ætti að vera fær um að hallmæla. Svo er að Standard Edition. Þú ert að fara að vera framkvæmd tvær mismunandi útgáfur. Ef þú skyldir til að kíkja á spjallþráð edition-- nú, við erum að fara að gefa þú a band eins og þetta, sem táknar brengla lykilorð. Svo er markmið þitt að reikna út hvað afkóðað lykilorðið er. Nú er þetta í raun hvernig lykilorð eru geymdar í fullt af tölvum, og það geymir bara þetta handahófi band af stöfum. Þú þarft að reikna út hvernig á að fá frá þessari handahófi band af stöfum hvað upprunalega lykilorð var. Og að lokum, eftir þetta Heimadæmi, þú ættir vera fær um að skilja hvað þetta þýðir. Svo þú verður að læra hvernig á að hallmæla Þessi tegund af handahófi band. Á sama hátt, ef þú manst frá viku 0, þú gætir hafa séð þessa vefslóð. Og þú ættir að vera fær um að hallmæla þetta á endanum. Þú might ekki vera hamingjusamur þegar þú hallmæla það og smella á tengilinn. Allt í lagi. Það er það í dag. Svo sjá þig í næstu viku! [Raftónlist spila]