[Tónlist spila] DAVID J. MALAN: Allt í lagi. Þetta er CS50, og þetta er endir viku 2. Svo í dag, við erum að fara að halda áfram að líta okkar hvernig við tákna það undir að hood-- flytja burt frá tölum eins heiltölur og fleytitölum og áherslu á strengi og á endanum meira áhugavert forrit. En við munum líka kíkja á a par af tilteknum lénum problems-- fyrsta sem mun vera þar dulmál, listin að spæna upplýsingar, þar sem þú sérð hér að ofan hér er mynd af Radio Orphan Annie leyndarmál leyniletri hringinn frá fyrra. Þetta er í raun mjög frumstætt mynd og barn-vingjarnlegur formi cryptopgraphy þar þessi hringur hefur tvær disks-- einn inni og úti. Og með því að snúa einn af þeim, þú getur meginatriðum stilla upp bréf eins og gegnum Z með öðrum bréfum eins B með A. Í öðrum orðum, þú getur bókstaflega snúið stafrófið, þannig að koma upp með a kortlagning frá bréf til bréf þannig að ef þú vildi senda leynileg skilaboð að einhver eins og Annie, þú gætir skrifað niður skilaboð og þá snúa bréf, þar sem, ef þú átt að segja "A," segir þú í staðinn "B" þú átt að segja "B" þú segir í stað "C" - eða eitthvað svolítið meira snjall en that-- og þá, að lokum, svo lengi sem Annie er þetta leyniletri hringur, hún getur afkóðað skeytið. Nú getur þú manst, í raun, að þetta var notað í mjög fræga mynd sem spilar auglýsinga nauseum á jól árstíð. Við skulum taka a líta hér. RALPHIE PARKER: "Vera það vitað er að allt í stuttu máli að Ralph Parker er hér með skipaður meðlimur Little Orphan Annie Secret Hring og er rétt að allir heiður og ávinningur sem koma þar að lútandi. " RALPHIE PARKER (narrating): Undirritað Little Orphan Annie. Countersigned, Pierre Andre! Í bleki. Heiður og hlunnindi, þegar á aldrinum níu. [Tónlist spila] [RADIO umræður] RALPHIE PARKER: Komdu. Við skulum fá á við það. Ég þarf ekki öll þessi djass um smyglara og sjóræningjum. RADIO announcer: Hlustaðu á morgun nótt fyrir samruna lokið ævintýri The Black Pirate Ship. Nú er kominn tími fyrir Annie Leyndarmál skilaboð fyrir þig meðlimi á Secret Circle. Mundu börnin, aðeins meðlimir af Annie Secret Circle geta lesa Leyndarmál Annie. Mundu, Annie er eftir þér. Setja pinna til B-2. Hér er message-- 12, 11, 2-- RALPHIE PARKER (narrating): Ég er í fyrsta leyndarmál fundi mínum. RADIO announcer: --25, 14, 11, 18, 16-- RALPHIE PARKER (narrating): Ó, Pierre var í mikilli rödd kvöld. Ég gæti sagt að í kvöld er Skilaboðin voru mjög mikilvæg. RADIO announcer: --3, 25. Það er skilaboð frá Annie sjálf. Mundu, ekki segja neinum. [Panting] RALPHIE PARKER (narrating): Níutíu sekúndum síðar, er ég í eina herberginu í að Húsið þar sem drengurinn níu gæti setið í næði og lesa. Ah. "B." [Chuckles] RALPHIE PARKER (narrating): Ég fór til næsta. "E." Fyrsta orðið er "að vera." Já! Það var að koma auðveldara núna. "U." [Chuckles] Randy PARKER: Æ, komdu, Ralphie. Ég verð að fara! RALPHIE PARKER: Ég kem niður, mamma. Gee whiz. "T." "O." "Vertu viss til. "" Vertu viss um að "hvað? Hvað var Little Orphan Annie að reyna að segja? "Vertu viss um að" hvað? Móðir: Ralphie, Randy hefur got til að fara. Verður þú vinsamlegast koma út? RALPHIE PARKER: Allt í lagi, mamma! Ég kem út! RALPHIE PARKER (narrating): Ég var að fá nær nú. Spennan var skelfilegt. Hvað var það? Örlög jörðinni getur hanga í jafnvægi. Móðir: Ralphie, Randy fékk að fara! RALPHIE PARKER: Ég kem strax út, gráta upphátt! RALPHIE PARKER (Narrating): Næstum þarna! Fingur mína flaug! Hugur minn var stál gildru. Sérhver svitahola titrað. Það var nánast ljóst! Já! Já! Já! Já! RALPHIE PARKER: "Vertu viss að drekka Ovaltine þína. " Ovaltine? A crummy auglýsing? [Tónlist spila] RALPHIE PARKER: Andskotinn. [Book] DAVID J. MALAN: Svo að þá er svipinn á hvaða dulmál getur verið fyrir this-- a drekka úr fyrra. Svo fljótur tilkynning. Ef þú ert frjáls þetta Föstudagur á 1:15 og vildi eins og til að tengja okkur fyrir CS50 hádegismatur höfuð á þessa slóð hér. Fyrstur kemur, fyrstur fær eins og venjulega. En með tímanum, munum við ganga úr skugga um að mest einhver sem langar til að taka þátt getur áætlun-vitur. Svo strengir. Við höfum Zamyla-- Hvern þú hefur nú hitt líklegast í Vandamál Set 1-- sem nafn er stafsett svona. Og ráð fyrir að þú slóst nafnið hennar í tölvuforriti sem er nota eitthvað eins getString. Til að sækja þessir mínútum, hvernig eigum við að fara um hönd a band, orð, málsgrein, eða fleiri stafi eins og þessir hér? Við töluðum síðast um heiltölur og vandamál að koma með heiltölu flæða og fleytitölum og vandamál sem koma innan nákvæmni. Með strengi, við amk hafa aðeins meiri sveigjanleika vegna strings-- bara í alvöru world-- getur verið ansi handahófskennt lengd. Mjög stutt, nokkuð lengi. En jafnvel þá, við erum að fara að finna að tölvur geta stundum keyra út af minni og ekki einu sinni geyma nógu stór band. En nú, við skulum byrja að sjón band sem eitthvað í þessum kassa hér. Svo sex slíkar kassar, hver sem táknar staf eða "bleikju." Svo muna að "char" - c-h-a-r-- er einn af the innbyggður-í gagnatög í C Og hvað er gott er að þú getur notað þessi tegund af eins og a byggja blokk, ráðgáta stykki, ef þú vilt, til að mynda stærri gerð af gögnum sem við munum halda áfram að hringja í "band". Nú, hvað er gagnlegt um að hugsa um hluti eins og strengi á þennan hátt? Jæja, það kemur í ljós að við getum reyndar nýta þessa uppbyggingu að í raun og veru sjá einstaka stafi í ansi einfaldan hátt. Ég ætla að fara á undan og búa til skrá sem heitir "stringzero.c," en þú getur hringt í það hvað sem þú vilt. Og á heimasíðu námskeiðsins er þegar þetta dæmi fyrirfram, svo þú þarft ekki að slá allt út. Og ég ætla að fara á undan og fyrst að gera INT helstu tóm. Og innan fárra daga, Við munum byrja að stríða í sundur hvað tómarúmið er hér, af hverju það er int hlið helsta, og svo framvegis. En nú skulum við halda áfram að afrita líma það. Ég ætla að lýsa yfir band sem heitir s. Og ég ætla að fara aftur frá GetString hvað sem notandinn slær í. Þetta er að fara til vera a einfaldur program, engar leiðbeiningar, Ég ætla bara að fara að blindni ráð fyrir að notandinn veit hvað á að gera til að halda það einfalt. Og nú er ég að fara að hafa til hliðar. Og inni fyrir lykkju ég er fara að hafa int ég fær núll. Og ég er, aftur, bara venju, vísitölu breytu fyrir talningu, en ég gæti kalla þetta hvað sem ég vil. Ég ætla að gera ég er minna than-- vel Nafn Zamyla er sex stafir að lengd. Þannig að ég ætla að erfitt kóða að það nú. Og svo ég ++. Og nú inni af þessum hrokkið axlabönd Ég ætla að gera printf, og ég vil að prenta einn eðli í einu. Þannig að ég ætla að nota% c fyrir kannski í fyrsta skipti. Og þá vil ég að prenta hvert eðli í sér línu. Þannig að ég ætla að fara að setja upp smá sviga n þar. Loka vitna. Og nú vil ég að gera eitthvað hérna. Ég vil að prenta út sérstakur bréf í band, s, sem ég er að iterating frá núll á allt að sex. Með öðrum orðum, ég vil prenta i'th eðli s. Nú hvernig get ég gert þetta? Jæja líkt og kassa í umboð hér, konar, töfra upp hugmynd um box stafir, getur þú álíka gert það setningafræðilega í C með því einfaldlega að skilgreina, Ég vil að prenta út s 's i'th staf. Notkun hornklofum á lyklaborðinu tölvunnar að á bandarískum lyklaborðið almennt yfir takkann aftur þinn. Svo er þetta ekki alveg rétt enn, eins og þú gætir hafa tekið eftir. En ég ætla að hvers konar blindni sækja fram hér. Og ég ætla að gera að gera band 0. En áður en ég geri þetta, við skulum sjá hvort við getur ekki ráð nokkrar algengar mistök. Er þetta að fara að safna saman? Nei, ég er að missa allt fullt af hlutum. Bókasöfn ég heyrði. Svo sem haus skrár gæti ég vil bæta við hér? Já. Áhorfendur: Þú þarft staðall I / O [inaudible] DAVID J. MALAN: Excellent. Þannig að ég þarf staðall I / O. Fyrir hvað Tilgangur vil ég staðall I / O? Fyrir printf. Svo er meðal annars stdio.h. Og þú leggur líka að ég er meðal annars sem CS50 bókasafn til hvers? Til að fá strengi. Þannig að við munum sjá hvað Bókasafnið CS50 er að gera að búa til þessa hugmynd um streng. En nú, þú geta hugsa bara um það eins og raunveruleg gögn tegund. Svo það virðist vera smá þrifin upp. Og nú er ég að fara að fara á undan og örugglega ekki gera band 0. Unnin. Svo er það gott. Svo ./string0 láta mig súmma inn svo við getum sjá nánar hvað er að gerast. Enter. Z-A-M-Y-L-A koma inn í. Og við höfum prentað á nafn Zamyla er. Svo er það nokkuð gott. Svo nú skulum fara á undan og keyra þetta forrit aftur, og slá út Daven er fullt nafn. Óvart, óvart. Enter. Hmm. Við höfum ekki prentað Daven er fullt fornafn rétt. Nú ætti þetta að vera augljóst í hyggja vegna þess hvað, konar, heimskur hönnun ákvörðun? Já, erfitt dulmáli ég sex inni á minn fyrir lykkju. Nú gerði ég það bara vegna þess að Ég vissi nafn Zamyla er ætlaði að vera sex stafir. En vissulega er þetta ekki almenn lausn. Svo kemur í ljós að við getum virk reikna út lengd streng því að hringja í aðgerð sem kallast strlen. Aftur, vísvitandi succinctly heitir bara til að gera það auðvelt meira að slá. En það er samheiti við fá lengd band. Ég ætla að fara aftur í flugstöðinni minn glugga og aftur að keyra þýðanda. En það er að öskra á mig. Óbeint lýsa virka bókasafn strlen með gerð óundirritaður int const-- Ég er glataður. Alveg. Svo, sérstaklega þar sem þinn Augun byrja að gljáa yfir með villa skilaboð eins og þetta, áherslur heiðarlega á fyrstu orðum. Við vitum að vandamálið er í lína 8, eins og sýnt er hér. Og það er í band-0.c. Óbeint lýsa virka bókasafn strlen. Svo það er almennt að fara að vera fyrirmynd í villa skilaboð. Óbeint lýsa eitthvað. Svo í stuttu máli, hvað á ég virtist hafa gert með tilliti til línu 8, hér. Hvað gæti verið lausn að vera jafnvel ef þú hefur aldrei notað strlen þig? Áhorfendur: Hluti af mismunandi bókasafni? DAVID J. MALAN: Hluti af mismunandi safni. Svo það er lýst, svo að segja. Það er getið í sumum skrá annað en stdio.h og CS50.h. Nú þar sem það er skilgreint? Til að vera heiðarlegur, þú hefur annað hvort bara veit þetta burt the toppur af þinn höfuð, eða þú Google það og finna út. Eða vita þetta, ég hef hafið starfsemi í CS50 Tæki í flugstöðinni program, þar sem er bara stór, fullur skjár útgáfa af hvað er í botni glugga gedit er. Og það kemur í ljós að það er álíka gagnorðar stjórn, sem heitir maður fyrir handbók, þar sem ef þú slærð inn nafn á virka og ýttu á Enter, þú munt fá aftur nokkuð Bogagöng skjöl. Það er bara texti sem almennt lítur smá eitthvað eins og this. Það er svolítið yfirþyrmandi við fyrstu sýn. En hreinskilnislega að ég ætla að Augu mín gljáa yfir og aðeins áherslu á þann hluta Mér þykir vænt um í augnablikinu. Sem er þetta. Sem lítur að byggingu eins eitthvað sem ég er kunnugur. Reyndar maðurinn síðu, svo að tala, mun segja þér í hvaða haus skrá aðgerð eins strlen er skilgreind. Þannig að ég ætla að fara aftur núna í gedit. Og ég ætla að fara á undan og bæta hér #include og vista skrána. Ég ætla að hreinsa skjáinn með Control L Ef þú hefur verið að velta fyrir mér. Og ég ætla að koma aftur að keyra make string.0, safnar í þetta sinn. ./string.0 Zamyla. Það virtist virka Leyfðu mér að fara undan og endursýning það með Davenport. Enter. Og það líka, virtist virka. Svo við getum gera a lítill betri en þetta, þó getum við byrjað að snyrtilegu hluti upp réttlátur a lítill hluti. Og ég ætla að í raun og veru kynna einn annar hlutur núna. Ég ætla að fara á undan og vista þetta í aðra skrá. Og ég ætla að fara að hringja þessa skrá string1.c bara til að vera í samræmi við kóða þú munt vera fær til finna á netinu. Og við skulum einbeita sér á þann nákvæmlega sama kóða. Það kemur í ljós að ég hef verið eins konar taka fyrir veitt þá staðreynd að minn laptop, og í snúa, CS50 tæki hefur a einhver fjöldi af minni, fullt af RAM, a einhver fjöldi af bæti af plássi þar sem ég get geymt strengi. En raunin ef ég slóst lengi nóg, og nóg mínútum, Ég gat í orði tegund í fleiri stafi en tölvunni minni líkamlega hefur minni fyrir. Og þetta er erfitt. Líkt og int getur aðeins telja svo hátt, í orði, þú getur aðeins troða svo margir stafir í RAM tölvunnar eða Random Access Memory. Svo ég hafði betur sjá þetta vandamál, jafnvel þó það gæti verið sjaldgæft horn að ræða, svo að segja. Gerist ekki það oft, gæti gerst. Og ef það gerist og ég er ekki sjá fyrir og áætlun fyrir það, áætlun mín gæti gert hver veit hvað. Frjósa, hanga, endurfæddur, hvað sem er. Eitthvað ráð gæti gerst. Svo það sem ég ætla að gera nú, héðan í raun, er áður en ég alltaf í blindni nota breytu eins s sem hefur verið falið að skilagildi einhver önnur virka eins getstring, Ég ætla að ganga úr skugga um að gildi þess er í gildi. Þannig að ég veit bara af því ég hafði lesið Skjöl CS50 fyrir getstring, sem á endanum munum við benda þér á, að getstring skilar sérstakt tákn kallað NULL, N-U-L-L í öllum paprika, ef eitthvað fer úrskeiðis. Svo venjulega, skilar það band. En annars ef það skilar N-U-L-L-- Við munum að lokum sjá hvað það raunverulega means-- það bara þýðir eitthvað slæmt gerðist. Nú þýðir þetta, eins og í grunni, Ég get athugað ástand hér í C, ef s er ekki jafn null. Þannig að ef þú hefur ekki séð þetta áður, þetta þýðir bara ekki jafn. Svo það er andstæða jöfnum jafningja, sem, muna, er frábrugðin einn jafngildir, sem er verkefni. Þannig að ef s er ekki jafnt NULL, aðeins þá Ég vil að framkvæma þessar línur af kóða. Svo í öðrum orðum, áður en ég kafa í blindni og byrja iterating yfir s, og meðhöndla það eins og það er röð stafir, ég ætla fyrst að athuga, Bíddu, er s örugglega ekki jafnt í þessa sérstöku gildi, NULL? Vegna þess að ef það er slæmur hlutur getur gerst. Og nú, gera ráð fyrir að slæma hluti gerast þýðir program hrun, og þú getur ekki endilega batna. Svo satt, það lítur ljótari. það er eins konar ruglingslegt núna til litið á. En þetta mun verða þekki áður en langur. En ég ætla að leggja nú einn annar framför. Það er framför að misskilning. Áætlun mín er nú réttara, því í sjaldgæfum tilvikum að ekki nóg minni hendi, mun ég höndla það, og ég ætla bara að gera ekki neitt. Ég að minnsta kosti mun ekki hrun. En við skulum gera endanlega útgáfu hér. Og skrá sem heitir string2.c. Ég ætla að líma það Sama númer fyrir aðeins augnablik, og ég ætla að varpa ljósi þessa lína, 11, hér, fyrir aðeins augnablik. Nú er raunin að sviði þýðendur eins Clang gæti lagað þetta fyrir okkur bak við tjöldin án okkar alltaf að vita. En við skulum hugsa um þetta grundvallaratriðum sem erfið hönnun. Þessi lína af kóða er, að sjálfsögðu, segja, frumstilla sumir breytu ég á 0. Það er frekar einfalt. Og hvað er aftur þetta yfirlýsingu, hér, ég ++, að gera? Við höfum séð það áður, en við gerði í raun ekki tala um það. Áhorfendur: hækka i. DAVID J. MALAN: hækka i. Svo á hverjum endurtekning gegnum Þessi lykkja, hvert hringrás, þú ert að hækka i um einn. Svo það fær stærri og stærri, og stærri þar til lykkja lýkur. Hvernig er það sagt? Jæja það er þetta mitt ástand sem við höfum notað áður. Þú hefur séð og í walkthroughs í P setja. En hvað er þetta orðatiltæki? Gera eftirfarandi lykkju þannig lengi sem ég er minna en hvað? Áhorfendur: Lengd strengsins. DAVID J. MALAN: The lengd strengsins. Svo það þýðir nokkuð eðlilega á ensku í þeim skilningi. Nú er vandamálið að í hvert sinn sem ég kunnugt um þessa lykkju í orði, Ég ætla að biðja þessa spurningu. Er ég minni en band lengd s? Er ég minni en band lengd s? Er nú ég að breytast á hverjum endurtekning? Það er. Vegna ++. Svo í hvert endurtekning ég er að verða stærri. En er farið að stærri eða minni, eða breyta á öllum? Nei Svo hvað varðar hönnun, ein af ása eftir sem við reynum að meta kóða í bekknum, þetta finnst konar heimskur. Eins og þú ert bókstaflega, á hverjum endurtekning þessarar lykkju spyrja að Sama helvítis spurning aftur, og aftur, og aftur, og bókstaflega það er aldrei að fara að breytast. Amk ef ég ætla ekki að snerta s og reyna að breyta innihaldi s. Svo ég get gert lítið betri en þetta. Og það sem ég ætla að gera er ekki lýsa bara einn breyta ég, en annað breytu ég ætla geðþótta, en á hefðbundinn hátt, kalla það n. Framselja n jafnt sem band lengd s. Og þá hérna, ég ætla að gera snjall lítill hagræðingu, svo að tala, því að í lok dagsins er ekkert meira rétt eða ekki síður rétt en áður. En það er betra hönnun. Í þeirri staðreynd að ég er að nota minni tíma, færri CPU hringrás, svo að tala, til að svara sömu , en bara einu sinni spurning. Einhverjar spurningar um að almenn meginregla um batna, segja, skilvirkni a program? Já? Áhorfendur: Hvers vegna gera þú nota [inaudible]? DAVID J. MALAN: Góð spurning. Svo hvers vegna eigum við að setja ++ á enda ég í stað þess að upphaf i? Í þessu tilviki, hefur það engin virk áhrif. Og almennt, ÉG hafa tilhneigingu til að nota Postfix rekstraraðila þannig að það er lítið meira skýr og að þegar rekstur er að gerast. Fyrir þá sem ókunnur, það er annað yfirlýsingar þar sem þú getur gert ++ i. Þetta eru virkni reiknuð í þessu tilfelli vegna þess að það er ekkert annað kringum þessi incrementation. En þú getur komið upp með tilvikum og línur af kóða þar sem það skiptir máli. Svo almennt, er það ekki jafnvel tala um þennan eina. Því hreinskilnislega, gerir það þína númer kynþokkafyllri og svoleiðis Flottari, og færri stafi. En raunin er að það er mikið erfiðara, Ég held, jafnvel fyrir mig að vefja huga minn í kringum það stundum, röð aðgerða. Svo sem innskot, ef þú virkilega líkar ekki þetta, jafnvel þótt þetta sé eins konar kynþokkafullur i + = 1, útlit, getur þú einnig gera sem er uglier útgáfa af Sama hugmynd fyrir Postfix incrementation. Ég segi þetta og þú ætti að gera grín að henni, en þú munt koma til að sjá kóðann sem eitthvað fallegt áður en langur. [Hlátur] DAVID J. MALAN: Hægri? Já. Spurning í miðjunni. Áhorfendur: Ert þú þarft að segja int n? DAVID J. MALAN: Þú Ekki þarf að segja int n. Svo vegna þess að við höfum þegar sagt int, þú þarft ekki að segja það aftur. Aflann er að n þarf að vera sú sama gögn tegund sem i. Svo er það bara þægindi hér. Já. Áhorfendur: Getur þú ferð yfir prenta staf s krappi ég aftur? DAVID J. MALAN: Algjörlega. Svo% c, muna frá síðustu tími, er bara tákn. Það þýðir að setja bleikju hérna. sviga n, að sjálfsögðu, bara leið setja línu brot hér. Þannig að það fer nú, þetta stykki af nýjum setningafræði. Og þetta er bókstaflega að segja, grípa band heitir s og fara að fá sína i'th eðli, svo að segja. Og ég halda að segja i'th karakter vegna þess að á hverjum endurtekning þessa lykkju það er eins og við erum að prenta út, Fyrsta krappi 0, sem forritari gæti sagt. Þá er Bríkin 1, þá s Bríkin 2, þá 3, þá 4. En auðvitað er það breytilegt, svo ég tjá bara það með i. Lykill, þó, er að átta sig á, sérstaklega ef þú hefur ekki verið acclimating þessum heimi forritun, þar sem við öll virðast telja frá núlli, gotta byrja að telja frá núll núna. Vegna þess að strengir, fyrsta staf, að z í Zamyla er fyrir betri eða verri fara að lifa á staðsetningu númer núll. Allt í lagi, svo látið mig koma okkur aftur hingað til Zamyla og sjá hvað er í raun að fara á undir hetta. Svo er það þetta hugmynd af gerðinni steypu. Þú gætir hafa í raun spilað með þetta nú þegar, kannski fyrir tölvusnápur útgáfa af P setja einn. En gerð steypu átt rétt til hæfni í C og nokkrar aðrar tungumálum að umbreyta eina gögn gerð til annars. Nú hvernig gætum við séð þetta laglegur einfaldur? Svo þetta, muna, er upphaf enska stafrófið. Og í samhengi, man, frá eins viku síðan er ASCII. The American Standard Code Fyrir upplýsingar skipti. Sem er bara mjög langt að segja kortlagning frá bréf til tölur, og úr númerum bréfum. Svo A í gegnum M hér, punktur punktur punktur, línur upp með, muna, við aukastaf númer 65 á upp. Og við ekki tala um þetta skýrt, en örugglega er það svipað tölur fyrir lágstöfum. Og reyndar, það eru. Heimurinn ákvað nokkur ár síðan að lítið er, lágstafir a, er að fara að vera 97. Og litla b er að fara að vera 98, og svo framvegis. Og fyrir aðra takka á lyklaborðið, það er að fara að vera svipuð mynstur bits. Eða equivalently, heiltala. Svo spurningin sem fyrir hendi, þá er hvernig getum við, raunverulega sjá þetta undir hetta? Þannig að ég ætla að fara aftur í gedit. Og frekar en tegund þetta frá grunni, Ég ætla að fara á undan og bara að opna upp eitthvað frá kóða dag heitir ASCII núll. Og ASCII núll lítur svona út. Svo skulum vefja huga okkar um þetta. Svo fyrst ég hef ummæli kóðinn, sem er gott. Vegna þess að það er bókstaflega segja mér hvað ég á að búast við, birta kortlagning fyrir hástafi bréf. Nú er ég ekki alveg að vita hvað ég meina með því, þannig að við skulum álykta. Á ensku, kannski nokkuð techie enska, hvað gerir lína 18 birtast að vera að gera fyrir okkur? Bara línu 18. Hvað er það örvandi? Hvað er það að fara að sparka burt hér? Áhorfendur: Lykkja. DAVID J. MALAN: Lykkja. Og hversu oft er að fara að kunnugt? Áhorfendur: [INTERPOSING raddir] sex sinnum. DAVID J. MALAN: Ekki sex sinnum. Áhorfendur: 26 sinnum. DAVID J. MALAN: 26 sinnum. Já, því miður. 26 sinnum. Hvers vegna? Jæja, það er svolítið skrítið, en Ég hef byrjað að telja frá 65. Sem er skrýtið, en ekki rangt. Það er ekki slæmt á segja. Og ég ætla að gera það bara af því að, í þessu dæmi, Ég er eins konar sjá að fjármagn A var 65. Nú er þetta ekki the glæsilegur leiðin til að gera þetta, til hvers konar harða kóða dulspekilegur gildi sem enginn er alltaf gert ráð fyrir að muna. En nú, eftir að ég er gera þetta allt í gegnum 65 plús 26. Vegna virðist ég ekki einu sinni vilja að gera tölur í höfðinu á mér. Svo ég ætla að láta þýðanda gera það. En þá á hverjum lykkju, hver endurtekning lykkja, ég er að hækka i. Svo nú lítur þetta svolítið dulinn. En við ættum að hafa grunn bygging blokkir með sem að skilja þetta. % C er bara tákn fyrir bleikju. % I er tákn fyrir int. Og það kemur í ljós að með því að nota þetta Ný setningafræði, þetta parenthetical, svo að tala, þannig að gögn gerð inni í sviga, Ég get þvinga þýðanda til að meðhöndla Ég ekki er heiltala, en eins og bleikju. Þar sýna mér persónu jafnvirði þeirrar tölu. Nú niður hér, þetta númer er ansi mikið eins. Mig langaði bara að gera frábær skýr staðreynd að ég er að byrja á 97, sem er lágstafir a. Á allt í gegnum 26 fleiri stafi. Og ég er doing-- aftur, steypu i, svo að segja. Eða tegund steypu i, svo að segja. Frá int til bleikju. Svo niðurstaðan er að fara að vera, hreinskilnislega, upplýsingar sem við vitum nú þegar. Ég ætla að gera ASCII-0 dot-- ekki punktur c. Tilkynning, þú gerðir líklega að mistök sem ég gerði bara af tilviljun. Gera ASCII-0. Nú ætla ég að gera ./ascii-0. Ég zoom í, og því miður það er að fara að fletta á skjánum. En við sjáum heilt töfluna hvar a kort til 97, b kort til 98, og ef við skruna upp frekari A, að sjálfsögðu, kort til 65. Svo er þetta bara til að segja að hvað við höfum verið að predika, það er þetta jafngildi er í raun að ræða í raun og veru. Svo fljótur breytingar á þessu. Leyfðu mér að opna ASCII-1.c. Og eftir þessu snjall, flokka af, skýringar á þessu. Þetta er ASCII-1.c og taka þessa brjálaður hlutur. Og þetta virkilega fær að hjarta hvað tölvur eru að gera. Jafnvel þótt við mennirnir myndu ekki telja með tilliti letters-- Ég byrja ekki að hugsa, allt í lagi að þá b, og nota þá til að telja líkamlega hluti. Þú getur vissulega sagt að ég vil frumstilla sumir breytu sem heitir c-- en ég hefði getað kallað þetta anything-- svo c er frumstilla til fjár A. Vegna í lok dags, í tölvunni er ekki sama hvað þú ert að geyma, það er ekki sama bara hvernig þú vilt að kynna þær upplýsingar. Hvernig viltu að tölva til túlka þessi mynstur bita? Svo er þetta ekki eitthvað sem ég myndi almennt mæla með að gera. Það er í raun bara dæmi til flytja að þú getur alveg frumstilla heila tölu til bleikju. Vegna undir hlutanum hlíf char, að sjálfsögðu, er bara númer 0-255. Svo þú getur örugglega setja það inni í int. Og hvað þetta líka sýnir er að við geta umbreyta frá einu slá til annars, hér, lokum prentun sama. Og í raun er þetta ég mun festa online-- var ætlað að segja þetta aftur, hér. Leyfðu mér að hreinsa þetta upp á netinu, og við munum sjá í online walkthrough sem þörf krefur, það sem var ætlað það. OK. Svo síðasta dæmi nú þátttöku a og B er og þá munum við taka hluti upp hak. Svo með og B áratugnum og c er í fjármögnun og jafngildi þess, við skulum taka a líta á þetta dæmi, hér. Annað kóða dæmi. Við munum opna einn sem er þegar gert, svo við þarft ekki að slá það inn allt út frá grunni. Og taka í aðdraganda við erum að nota margar haus skrár, þar á meðal er nýja vini okkar, string.h. Nú lítur þetta, fyrst litið, smá dulinn. En við skulum sjá hvort við getum ekki ástæðu gegnum hvað er að gerast hér. Fyrst ég streng frá notanda, og ég setti það band í breytu kallast s. Afrita líma frá áður. Í samræmi 22, ég er greinilega gera nákvæmlega það Ég gerði áðan, ég er að iterating persónurnar í s. Og nýja bragðarefur hér eru að nota band lengd, minniháttar hagræðingu um að geyma the band lengd í N, frekar en að hringja strlen aftur, og aftur, og aftur. Og bara athuga hvort ég sé minna en n. Nú hér, það fá smá áhugavert. En það er bara forrit þessa sömu nýju hugmynd. Hvað í enska gerir s krappi ég tákna? Áhorfendur: Talning hver eðli [inaudible]. DAVID J. MALAN: Telja hvern staf. Og jafnvel fleiri succinctly, s krappi ég tákna það? Vilt þú segja. Ekki að setja þig á staðnum hér. Áhorfendur: Well-- DAVID J. MALAN: Svo ef orðið is-- ef strengurinn er Zamyla, sem starts-- Áhorfendur: --you takast á við persónurnar separately-- DAVID J. MALAN: Gott. Nákvæmlega. Veldi krappi tákn leyfir þér til að fá aðgang hvern staf fyrir sig, svo s krappi 0 er að fara að vera Fyrsti stafurinn í strengnum. s krappi 1 er að fara að vera annað, og svo framvegis. Svo spurningin sem ég er að spyrja, hér, í þessu ástandi er það? Er i'th eðli s unar meiri en eða jafnt og lágstafir a? Og hvað þýðir þetta, hér, með tvöföldum -merkið? Áhorfendur (SAMAN): Og. DAVID J. MALAN: Og. Það er bara samsvarar þetta. Og er ekki lykilorð í C, þú þarft að Notkun, gremjulegur, ampersand ampersand. Og þetta öfugt, er að spyrja er s er i'th eðli minna en eða jafnt til lágstafir z? Og aftur, hér er þar skilja undirliggjandi framkvæmd a tölva vit. Taka eftir því, jafnvel þótt ég hafi punktur punktur punktur þarna, lítur út eins og í gegnum z lágstafir eru allar samliggjandi gildi up frá 97 upp. Og sama fyrir hástafi hefst kl 65. Svo takeaway, þá, er það á ensku, hvernig myndir þú lýsa hvaða línu 24 er að gera? Já? Áhorfendur: Á 24 það er stöðva til að sjá hvort hver persóna er lágstafir. DAVID J. MALAN: Það er að kanna hvort hver persóna er lágstafir bréf. Svo jafnvel fleiri succinctly, er i'th eðli s lágstöfum? Það er allt sem við erum tjá hér rökrétt, smá cryptically, en lokum nokkuð einfaldur. Er s er i'th eðli lágstöfum? Ef svo er, og hér er þar sem hlutirnir fá smá hugur beygja fyrir aðeins augnablik, ef svo er, fara undan og prenta út staf. Svo er þetta bara tákn, en hvaða staf? Hvers vegna er ég að gera s krappi i mínus þessi tjáning hér? Jæja taka munstur. Raunveruleg tölur skipta ekki máli svo mikið. En eftir því að 97 er hversu langt í burtu frá 65? Áhorfendur: 32. DAVID J. MALAN: 32. Hversu langt í burtu er 98 frá 66? Áhorfendur: 32. DAVID J. MALAN: Little c frá stóru C? 32. Svo er 32 hops þaðan einn stafur til annars. Svo vildi ég, gæti einfalda þetta við það. En þá er ég svona erfitt erfðaskrá þetta lágt skilning að enginn lesandi er alltaf að fara að skilja. Þannig að ég ætla að fara að alhæfa það sem ég veist lágstöfum eru stærri. Ég veit höfuðborg bréf eru minni gildi, kaldhæðnislega. En þetta er í raun jafngildir segja draga 32 frá s krappi i. Svo í tengslum við þetta bréf, ef bréf gerist að vera, lágstafir a, og ég draga 32, Hvaða áhrif hefur það haft, stærðfræðilega, á lágstafir a? Áhorfendur: Capitalizes-- DAVID J. MALAN: eignfærir það. Og reyndar, þetta er ástæðan okkar Námið er kallað nýta núll. Þetta forrit heldur eignfærir bréf, eftir að athuga hvort það er örugglega lágstafir bréf. Annars, í samræmi 30, hvað á ég að gera ef það er ekki lágstafir bréf sem ég er horfa á á tiltekin endurtekning á lykkju. Bara prenta það út. Svo breytast ekki efni það er ekki einu sinni lágstafir. Takmarka sjálfur til litla gegnum litla z. Nú er þetta nokkuð yfirnáttúrulegt. En í lok dagsins, þetta er hvernig við, einu sinni, þurfti að framkvæma hlutina. Ef ég staðinn opinn nýta einn, ó þakka guði. Það er hlutverk kallaður til efri sem getur gera allt sem við gerðum bara á nokkuð lágt. Nú til er efri áhugavert vegna þess að það sé skilgreint í skrá, og þú vildi bara vita þetta með því að skoða skjöl, eða að vera sagt, segjum, í flokki, þar sem það er til, í skrá sem kallast ctype.h. Svo er þetta annar nýr vinur okkar. Og efri er nákvæmlega það sem nafnið gefur til kynna. Þú geta fara framhjá í, sem rök, milli þessir svigar, sumir eðli. Ég ætla að fara í i'th eðli af s nota ímynda nýja tákn okkar sem felur í sér hornklofum. Og taka giska, hvað er aftur gildi til efri virðist fara að vera? A höfuðborg bréf. A höfuðborg bréf. Þannig að ef ég fara í lágstafir a, vonandi, með skilgreiningu á efri, það er að fara að skila inn hástafi A. Annars, ef það er ekki lágstafir bréf í fyrsta sæti, ég prenta bara það út. Og reyndar, eftir að Annað vinur hér. Ekki bara til að efri hendi, en er lægri, sem reyndar svarar þessi spurning fyrir mig. Sá nú skrifaði þetta, 10s árum, þú veist hvað? Hrint í framkvæmd til efri og er lækka með kóða eins og þetta. En aftur, í samræmi við þessi hugmynd um öflun burtu, konar, lægri framkvæmd upplýsingar. Og standa á herðum fólks sem kom fyrir okkur, með því að nota aðgerðir eins og til efri og er lægra, sem frábærlega nóg eru fallega heitir að segja hvað þeir gera, er yndislegt hugmyndafræði að samþykkja. Nú kemur í ljós að ef ég las maðurinn síðu til, segja, að efri, Ég læri eitthvað annað. Svo maður toUpper. Það er svolítið yfirþyrmandi. En tilkynning, hér er það minnst á haus skrá sem ég ætti að nota. Sem innskot, því þetta er villandi, sem virka notar ints í stað Sérstafir af ástæðum er varða stöðva villa. En við munum kannski koma aftur til að í framtíðinni. En eftir, hér, að efri breytir stafurinn c í hástafi ef mögulegt er. Svo er það frekar einfalt. Og nú skulum vera svolítið nákvæmari. Við skulum líta á hluta af maður síðu undir skilagildi. Gildið skilað er að umbreyttu staf. Eða C, ef viðskiptin var ekki hægt, þar sem c er upprunalega inntak. Sem ég veit héðan frá rök að efri. Svo er það takeaway þetta? Gildið skilað er að umbreyttu bókstafs, eða c, upprunalega bókstafur, ef viðskiptin var ekki hægt. Hvaða framfarir get ég því gera til að hanna míns? Já? Áhorfendur: Hægt er að fjarlægja annað. DAVID J. MALAN: Ég get fjarlægja annað yfirlýsingu, og ekki bara annað yfirlýsingu. Áhorfendur: Þú getur fjarlægt [inaudible]. DAVID J. MALAN: Ég get fjarlægja allan gaffal á veginum, sem ef annað að öllu leyti. Svo reyndar láta mig opna endanleg útgáfa af þessu, nýta-2 og taka bara hvernig, ef þú verður, kynþokkafullur, kóðinn er nú að fá, í að ég hef minnkað úr sumum sjö eða svo línur til aðeins fjóra, virkni sem ég ætlaði með því einfaldlega að hringja í efri, liggur í s krappi i og prentun út, með Pláss% c, sem einkum staf. Nú öllum líkindum, það er padda, eða að minnsta kosti hætta á galla, í þessari áætlun. Svo bara til að koma aftur til fyrri takeaway, hvað ætti ég líklega líka gert þetta forrit til að gera það öflugri meira, þannig að það er engin leið að það getur hrun, jafnvel í mjög sjaldgæfum tilvikum? Áhorfendur: Gakktu úr skugga um að það er ekki null. DAVID J. MALAN: Gakktu úr skugga um að það er ekki null. Svo í raun, til að gera þetta frábær réttur, ég ætti að gera eitthvað eins og, ef s er ekki NULL, þá fara á undan og framkvæma þessar línur af kóða, sem Ég get þá undirliður svona, og þá setja í nánu borsveif mínu. Svo gott Binda saman af tveimur hugmyndum. Já? Áhorfendur: Gætirðu nota a að gera á meðan lykkja, í staðinn? DAVID J. MALAN: Gat ÉG gera a gera á meðan lykkja? Áhorfendur: --you vilt ganga úr skugga um að þú í raun og veru [inaudible]. DAVID J. MALAN: Gat þú notar do meðan? Stutt svar, nei. Þar sem þú ert að fara að kynna aðra horn tilfelli. Ef strengurinn er núll lengd. Ef til dæmis, ég lenti bara Sláðu inn, án þess nokkurn tíma að slá Zamyla. Ég ætla að skila þér aftur raunveruleg band, eins og við munum að lokum sjá, sem hefur núll stafi. Það er samt band, það er bara frábær stutt. En ef þú notar gera á meðan, þú ert að fara að blindni reyna að gera eitthvað með virða til strengsins, og ekkert er að fara að vera þar. Áhorfendur: Jæja, ef þú gerðir gera [inaudible] á meðan s-- DAVID J. MALAN: Ó ég sé, að halda fá band frá notanda. Svo stutt svar, þú gæti, og halda pestering þá að gefa þér band sem er stutt nóg til að passa í minni. Algerlega. Ég valdi bara ekki til. Ef þeir gefa mér ekki strenginn I vilja, ég er að hætta, ég ætla að gefa upp. En algerlega, í því skyni, þú gætir alveg gert það. Svo á bókasafnið í haus skrár sem við erum nú þekki eru þetta, hér. Standard I / O, CS50.h, string.h, ctype.h, og það eru reyndar aðrir. Sum ykkar hafa uppgötvað stærðfræði bókasafn math.h. En láttu mig kynna þig, nú, til þetta úrræði sem CS50 starfsfólk, Davin, og Rob, og Gabe einkum hafa sett saman. Sem mun brátt tengilinn á Vefsíða námskeiðsins er. Það heitir CS50 tilvísun. Sem bara til að gefa þér fljótur bragð af því, virkar eins og hér segir. Leyfðu mér að fara til reference.cs50.net. Þú munt sjá á vinstri hönd hlið yfirgnæfandi lista aðgerðir sem koma með c. En ef ég hugsa, fyrir stundu, um eitthvað eins strlen, Ég get slá það þar. Það filters niður listann bara það sem ég hugsa um. Ég ætla að smella á hann. Og nú á vinstri, þú munt sjá hvað við vonum er meira einfalt, mannleg vingjarnlegur útskýringu á því hvernig þessi aðgerð virkar. Skilar lengd strengsins. Hér er ágrip, hér er hvernig þú nota það í skilmálar af haus skrá, og hvað varðar það að virka lítur út eins og í skilmálar af málflutningi hennar. Og þá er hér, skilar lengd streng. En fyrir þá öruggari, þú getur í raun að smella fleiri notalega, og innihald þessa síðu, nú mun breytast að vera sjálfgefin gildi hvað þú færð með því að nota man. Í öðrum orðum, CS50 vísað er einföldun af síðum með starfsfólki, fyrir nemendur. Sérstaklega þeir minna þægilegt og þar á milli, svo að að þarft ekki að reyna að vefja hugur þinn í kring, hreinskilnislega, sumir nokkuð dulinn setningafræði og skjöl einhvern. Svo halda að í huga á næstu dögum koma. Svo hér, aftur, er Zamyla. Skulum nú spyrja spurningu sem er smá fleiri manna aðgengilegri. Þökk sé Chang, sem hefur verið prenta fleiri fíla stanslaus fyrir undanfarna daga. Við höfum tækifæri til að gefa að minnsta kosti eitt af þeim í burtu. Ef við gætum fengið bara einum sjálfboðaliða að koma á allt að draga á skjánum. Hvernig um hér? Komdu upp. Hvað er nafn þitt? ALEX Alex. DAVID J. MALAN: Alex. Allt í lagi. Alex, koma upp. Við erum að fara að sjá þinn rithönd á skjánum hér. Allt í lagi, gaman að hitta þig. ALEX: Gaman að hitta þig. DAVID J. MALAN: Allt í lagi. Svo, frábær einföld æfing. Bar er ekki hár í fá fíl dag. Þú ert að spila hlutverk getstring. Og ég ætla bara að segja ykkur band sem þú hefur fengið. Og geri ráð fyrir að þú, getstring, hafa verið kölluð. Og manna, eins og mig, hefur slegið í Zamyla, Z-A-M-Y-L-A. Bara fara á undan og skrifa Zamyla á skjár eins og þú hefur fengið það og geymd það einhvers staðar í minni. Keyrsla pláss fyrir það sem mun vera nokkur annað words-- sem er allt í lagi, að halda áfram. [Hlátur] Svo Zamyla, Excellent. Svo nú ætla að þér, getstring eru kölluð aftur. Og veita því ég yður, að minnsta hljómborð, með öðru nafni, Belinda. Allt í lagi. Og nú er næst getstring kallaði ég tegund í eitthvað eins og Gabe, G-A-B-E. Þú ert í raun að taka til hjarta handahófi aðgangur minni. Sem er að teikna allt alveg af handahófi. OK. [Hlátur] ALEX: Því miður rithönd mín er slæmt. DAVID J. MALAN: Nei, það er allt í lagi. Og hvernig óður Rob, R-O-B. OK. Gott. Svo ég gerði ekki ráð fyrir þér myndi konar lá það út á þennan hátt. En við getum gert þetta verk. Svo hvernig did þú fara um lagningu út þessar stafir í minni? Í öðrum orðum, ef við hugsum um þetta rétthyrnd svartur skjár sem fulltrúi a RAM eða minni tölva '. Og muna að RAM er bara a heild búnt af bæti, og bæti eru allt fullt af bitum. Og bitar eru einhvern veginn framkvæmda, almennt með einhvers konar rafmagn í vélbúnaði. Svo er þessi tegund af layering við höfum talað um og getur nú tekið sem sjálfsögðum hlut. Hvernig fóruð þér um ákveða hvar á að skrifa Rob móti Gabe móti Belinda móti Zamyla? ALEX: Ég gerði bara það í panta að þú sagt mér. DAVID J. MALAN: Og það er satt. En hvað fer þar sem þú setur Nafn Belinda og nafn Gabe er? ALEX: Ekkert? DAVID J. MALAN: [Hlær] Svo sem virkar, það er allt í lagi. Svo tölvur eru lítið meira reglusamur en það. Og svo þegar við implement-- dvelja þar fyrir aðeins moment-- þegar við í raun innleiða eitthvað eins getstring í tölvu, Zamyla gæti verið sett fram nánast eins og þú gerðir á skjánum, þar. Og hvað er lykillinn að því að taka hér, hvað Alex gerði, er að það er eins konar afmörkun meðal hvert þessara orða, ekki satt? Þú varst ekki að skrifa Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- í öðrum orðum, það er sumir góður af afmörkun sem virðist vera, konar, handahófi bil milli þessara mismunandi orðum. En það er gott, vegna þess að við mennirnir geta nú sjón að þetta eru fjórar mismunandi strengir. Það er ekki bara einn röð hellingur af stöfum. Svo tölva, þá, á meðan, gæti tekið band eins Zamyla, setja hvert bréfinu inni í bæti af minni. En þessi tala er miklu stærri, auðvitað, en sex stafir. Það er allt fullt af vinnsluminni. Og svo héðan, þetta rist af kassa er að fara að tákna hvað Alex bara gerði hér á skjánum. Og nú, Alex, getum við boðið þér upp á blár eða appelsínugulur fíll frá Chang. ALEX: Ég tek bláa fíl. DAVID J. MALAN: A blár fíll. Svo stór umferð lófaklapp, ef við gætum fyrir Alex hér. [Applause] ALEX: Þakka þér. DAVID J. MALAN: Þakka þér. Svo takeaway er að jafnvel þó að mynstur konar breyst með tímanum, hér á borð, það var þessi afmörkun milli mismunandi strengi sem Alex fékk fyrir okkur. Nú tölvur, hreinskilnislega, gæti gert það sama. Þeir gætu eins konar plop strengir hvar í vinnsluminni. Upp hér, hérna, niður hér, hérna. Þeir gætu gert nákvæmlega það. En, auðvitað, það er sennilega ekki sú besta áætlanagerð. Ekki satt? Ef ég hélt að biðja Alex að fá nöfn, sennilega hann myndi setja meira hérna, kannski upp hér, hérna, hérna, loksins hérna. En með smá meira skipulagi, vissulega, við gætum leggja það út meira hreinlegur. Og reyndar, það er það sem tölvan gerir. En afla er að ef næsta band sem ég fá eftir Zamyla er eitthvað eins og Belinda, leggja þar sem við gætum skrifað á stafa b með tilliti til þessa rist? Hvert mynduð þið fara? Til hægra megin við A, neðan z, neðan við a? Hvað myndi Fyrstu eðlishvöt þín að vera? Áhorfendur: Undir z. DAVID J. MALAN: Svo neðan z. Og það er ansi einfalt, ekki satt? Það er góður af snyrtilegur, það er það sem við gerum á lyklaborðinu þegar við högg inn, eða email þegar gerð a bulleted listi af hlutum. En raunin er sú að tölvur reyna að vera skilvirkari, og troða vissulega eins mikið gagna í RAM og mögulegt, svo að þú sóa ekki allir bæti. Svo að þú sóa ekki hvaða skjár fasteignir. Og vandamálið, þó, er að ef við setjum bókstaflega bréf b eftir, hvernig eigum við að fara að vita hvar nafn Zamyla lýkur og nafn Belinda byrjar? Svo þú menn bara lagt, vel, högg á Enter takkann, í meginatriðum. Settu það niður hér fyrir neðan. Eða jafnvel eins og Alex gerði, bara byrja að skrifa næsta nafn fyrir neðan fyrri, og undir því einu, og þá undir því einn. Það er sjón bending. Tölvur hafa annað sjón bending, en það er svolítið meira gagnorðar. Það er þetta angurvær eðli. Sviga 0, sem er ef til vill minnir Sviga n, og svo framvegis, núna. Sérstaða raðir flýja. Sviga 0 er leiðin fulltrúi átta núll bita í röð. 0000 0000. Leiðin sem þú tjá það er ekki að högg númer núll á lyklaborðinu, vegna þess að í raun það er að ASCII stafir. Það lítur út eins og a tala, en er í raun aukastaf númer sem táknar dreifibréf Glyph, hringlaga leturgerð. Á sama tíma, sviga núll þýðir, bókstaflega setja átta núll bæti hér fyrir mig. Svo er þetta nokkuð handahófskennt. Við hefðum getað notað hvaða mynstur bita, en heimurinn ákveðið nokkur ár síðan, að til þess að tákna enda streng í minni, bara setja a heild búnt af núllum. Vegna þess að við getum uppgötva það. Nú þýðir það að engin bréf af stafrófið getur verið fulltrúi með núllum. En það er allt í lagi, við höfum nú þegar séð að við erum að nota 65 á allt í 97 upp. Við vildum ekki fá einhvers staðar loka öllum núllum. Svo Belinda í minni tölvu er reyndar að fara að fara hingað. Ég hef dregið það í gulu bara að vekja athygli okkar á því. Og tilkynning líka, þetta er alveg handahófskennt. Ég hef dregið það sem tafla. Eins, RAM er bara líkamlega mótmæla. Það þýðir ekki endilega að hafa raðir og dálkar, í sjálfu sér. Það er bara allt fullt af bætum framkvæmda í vélbúnaði einhvern veginn. En ef eftir Belinda I slegið í nafni Gabe er, hann er að fara að enda hér í minni, og ef ég slóst í nafni Daven er, til dæmis, hann er að fara að enda hér. Og ég get haldið áfram að skrifa jafnvel fleiri nöfn. Því miður, ef ég reyni að skrifa frábær langa nafn, Ég gæti að lokum keyra út af minni. Í því tilviki, getstring er fara að skila NULL, eins og ég sagði. En sem betur fer, að minnsta kosti í þessu sjón hér, höfum vér ekki fá alveg svo langt. Nú er það einmitt það sem er gott almenn hugmynd að meðhöndla það eins og að vera í kassa er fulltrúi lögun af C og mikið af tungumálum, þekktur sem fylki. An array er annars konar gögn. Það er gögn uppbygging, ef þú vilt. Uppbygging í skilningi það virkilega, konar, útlit eins og kassi, amk í auga huga þíns. Fylki er samliggjandi röð af eins gagnatög, aftur til baka til baka til baka. Svo a band, í öðrum orð, er fylki á stafir. An array af stöfum. En það kemur í ljós að þú getur haft fylki af bunches af hlutum. Í raun getum við sett enn tölur í array. Svo því formi sem við erum að fara að byrja lýsa þessum gögnum uppbyggingu þekktur sem fylki er líka að fara að nota hornklofa. En þessi hornklofum eru að fara að hafa mismunandi merkingu í þessu samhengi. Og við skulum sjá það eins og hér segir. Segjum sem svo að ég opnaði upp nýja skrá hér. Og ég vistað þetta sem ages.c. Og ég ætla að vista þetta í möppu mína hér. Og nú er ég að fara að fara á undan og byrjaðu að slá inn eitthvað eins eru ma CS50.h, meðal annars stdio.h, int helstu ógild. Og þá inni hér, ég vil fyrst hafa int heitir aldri. Og ég ætla að nota það til að fá að int frá notanda til aldurs hans. En þetta forrit er ætlað að vera notað af margar fólk, fyrir hvaða samhengi. Ég hef fengið línu af fólki. Allir hafa þeir að slá í þeirra aldur fyrir kannski sumir, ég veit ekki, samkeppni, eða atburð að þeir hafa komið fyrir. Þannig að næsta manneskja, ég þarft annað breytu. Vegna þess að ef ég bara aldur fær getInt, það er fara að clobber, eða skrifa aldur fyrri viðkomandi. Svo er það ekki gott. Svo fyrsta eðlishvöt mín gæti verið, ó, allt í lagi, ef ég vil fá margar fólks ages-- skulum kalla þetta age1, int age2 fær int, int age3 fær getInt. Og nú er ég að fara að nota sumir sauðakóðanum kóða hér. Gera eitthvað með þær tölur. Við munum fara annan dag hvað við erum að gera þar, vegna þess að við bara umönnun fyrir stundu um age1, age2, age3. Því miður, þegar ég saman þetta forrit og setja það fyrir framan raunverulegum notendum, hvað er í grundvallaratriðum léleg hönnun ákvörðun sem ég virðist hafa gert? Já? Áhorfendur: [inaudible] DAVID J. MALAN: Já, Ég hef ekki einu sinni reynt að reikna út hversu margir aldri mér er sama í raun um? Ef ég hef færri en þrír hér, og því færri en þrjú aldur, Ég er enn í blindni von þrjú. Guð forði fjórir manns mæta. Áætlun mín bara ekki einu sinni að styðja þá. Og svo þetta, löng saga stutt, er ekki góð venja. Ekki satt? Ég var í raun að afrita og límir kóðann og bara klip breytu nöfn. Og guð minn, ef þú hefðir ekki þrír aldur, en 10, eða 100, eða jafnvel 6500 háskólastúdent, til dæmis. Þetta er ekki að fara að vera sérstaklega glæsilegur númer, eða sjálfbær. Þú ert að fara að hafa til að umrita the program í hvert skipti tala af fólk breytingar. Svo sem betur fer, í raun okkar ages.c skrá í dag, Við höfum meira snjall lausn. Fyrst ætla ég að taka lán á reisa við höfum notað nokkrum sinnum, þetta gera á meðan lykkja, til þess að fá fjöldi fólks í herberginu. Ég ætla bara að fara að pester notanda, aftur og aftur, þangað til hann eða hún gefur mér gildi n sem er jákvæð heiltala. Ég hefði getað notað, síðasta tíminn er að fá jákvæða int. En við höfum ekki það fyrir alvöru, svo ég fór á undan og aftur innleitt þessa hugmynd. Nú niður hér, þetta er nýja bragð. Í samræmi 27, sem athugasemdir í línu 26 gefur til kynna, lýsa fjölda sem að geyma aldur allra. Svo ef þú vilt fá, ekki eitt int, ekki tveir ints, en a heild búnt af ints. Sérstaklega n heiltölur, voru n gæti vera þrír, gæti verið 100, gæti verið 1000. The setningafræði, einfaldlega, er að segja, hvaða gögn tegund viltu? Hvað viltu kalla sem klumpur af minni? Hvað viltu að hringja í rist sem lítur svona út pictorially? Og í sviga hér, þú segir hversu stór þú vilt að array að vera. Og svo áðan þegar ég sagði setningafræði er svolítið öðruvísi hér, við erum enn að nota hornklofa, en þegar ég er að lýsa fylki, fjöldi inni á hornklofum þýðir hversu stór þú vilt að array að vera. Með því móti, þegar við vorum með s krappi ég í smá stund síðan, s, a band, er örugglega fylki á stafir, en þegar þú ert ekki að lýsa breytu, eins og með þetta leitarorð hér, þú ert einfaldlega að fá sérstök vísitala, er sérstakur þáttur frá því fylki. Þegar við vitum að hvíla um er þetta einfalt. Ef nýr Ég fyrst að fara að prenta út hvað er aldur persónu númer i. Þar sem ég segi bara maður númer eitt, maður númer tvö, maður númer þrjú. Og ég ætla bara að gera tölur, þannig að eins og venjulegt fólk, að telja frá einum til þessa program, og ekki frá núlli. Þá kalla ég getint, en ég geyma svarið í aldri krappi i. Hver er i'th aldur í array. Svo en síðast þegar við vorum að meðhöndla þessir kassar sem stafir fyrir nafni Zamyla er, og aðrir. Nú standa þessir kassar 32 bitar eða fjórar bæti þar sem við getum geymt int int int. Allir sem, aftur, eru þau sömu gögn tegund. Nú er ég að gera eitthvað kjánalegt, eins tíminn líður, bara að réttlæta að skrifa þetta forrit. Og þá hérna, ég og kunnugt aftur yfir array segja á ári héðan í frá, maður númer eitt mun vera eitthvað ára. Og til að reikna út að math-- Ég meina, þetta er ekki mjög flókið arithmetic-- Ég bæta bara einn til aldurs þeirra. Bara til að sýna, aftur, þetta. Rétt eins og ég get vísitölu í band, s, svo get ég Vísitala inn fjölda aldri, svona þar. Svo hvar er þetta að fara að taka okkur? Þannig að við munum sjá, að lokum, a fátt í dögum. Einn, allan þennan tíma, þegar skrifa eigin áætlunum þínum, eins og Mario, gráðugur, trúnaður. Þú hefur verið að slá nafn forritið og hitting á Enter. Og þá fá inntak notandans. Með getString, getInt, getLongLong, eða þess háttar. En það kemur í ljós að C styður eitthvað sem kallast stjórn lína rök, sem er að fara að láta okkur reyndar fá á orðum sem þú skrifar, á blikkandi hvetja, eftir nafni forritsins þíns. Svo á næstu dögum koma, þér gæti slegið eitthvað eins Caesar, eða ./caesar númer 13, eftir það. Við munum sjá hvernig það virkar. Vegna reyndar í Vandamálið sett tvö, við erum að fara að kynna þér til smá eitthvað minnir Ralphie er áskorun áðan um kortagerð. Listin að spæna upplýsingar. Þetta, í raun, er mjög minnir það Ralphie gerði. Þetta er dæmi um dulkóðun reiknirit sem kallast rot13, R-O-T 13. Sem einfaldlega þýðir að snúa við stafir í stafrófinu 13 stöðum. Og ef þú gerir það, þú munt nú sjá hvað er, kannski, þekki setningu. En hvernig við ætlum að nota þetta, á endanum, er almennt. Í P sett tvö, í venjulegu útgáfunni, þú munt framkvæma nokkrar dulmál, einn heitir Caesar, einn heitir Vigenere. Báðir þeirra eru hverfi dulmálin, í það einhvern veginn að þú snúa einn staf í mismunandi bréf. Og Caesar er frábær einfalt. Þú bæta við einum, þú bæta 13, eða einhver tala upp að 26. Vigenere gerir það á a bókstaf grunni. Svo Vigenere, eins og þú munt sjá í sérstakur er öruggari. En í lok dagsins hvað þú munt vera að innleiða og P setja tvo, er þessi lykill sem þú notar bæði fyrir dulkóðun og decryption. Vísa til ferli beygja texta, sumir upprunalega skilaboð, í Cypher texta, sem er eitthvað dulkóðaðar. Og þá dulkóða það aftur. Í spjallþráð útgáfu, meðan, þú munt vera verkefni með eitthvað svipað í anda, þar sem við munum gefa þér skrá, frá dæmigerðum Linux, eða Mac eða Unix tölva kallast Etsy lykilorð, sem inniheldur í heild fullt af notendanöfnum og lykilorðum. Og þessir lykilorð hafa allt verið dulkóðuð, eða tætt svo að segja, fleiri almennilega eins og þú munt sjá í sérstakur. Og tölvusnápur útgáfa vilja áskorun þú með að taka inntak eins og þetta, og sprunga lykilorð. Það er, vangaveltur út hvað lykilorð Human raun var. Vegna þess, reyndar eru lykilorð almennt ekki geymd í tær, og almennt lykilorð ætti að vera erfitt að giska á. Það er ekki oft raunin. Og það sem ég hélt að við myndum gera er ljúka með í nokkrar mínútur litið á sérstaklega lélegt val á lykilorð frá myndinni sem þú gætir muna fondly. Og ef ekki, þú ættir að leigja. [Vídeó spilun] -Helmet, Þú fiend, hvað er að gerast? Hvað ert þú að gera til dóttur minnar? -Permit Mér að kynna Frábær lýtalæknir, Doctor Phillip Schlotkin. Mesta nef starf maður í Alheimurinn og Beverly Hills. -Your Hátign. -Nose Starf? Ég skil ekki. Hún er nú þegar haft nef vinnu. Það var henni sætur 16 staðar. Nei, það er ekki það sem þú heldur. Það er miklu, miklu verra. Ef þú gefur ekki mér að samsetning á loft skjöld, Læknirinn Schlotkin mun gefa þér dóttir baka gamla nef hennar. - [Gasps] Nooooooooooooo. Hvar fékkstu þetta? -Alltí Lagi. Ég segi, ég segi. Nei, pabbi, nei. Þú mátt ekki. -Þú Rétt minn kæri. Ég sakna nýja nefið. En ég mun ekki segja þeim að samsetning sama hvað. -Mjög Vel. Doctor Schlotkin gera versta þinn. -Ég Ánægja. Nei! Bíddu, bíddu. Ég segi. Ég segi. Ég vissi að það myndi virka. Allt í lagi, gefa mér. -The samsetning er einn. One. One. -Tveir. -Tveir. -Tveir. -Three. -Three. -Three. -Four. -Four. -Four. -Five. -Five. -Five. So the samsetning er einn, tveir, þrír, fjórir, fimm. Það er heimskasta samsetning Ég heyri alltaf í lífi mínu. Það er góður af hlutur an hálfviti hefði á farangri sínum. Takk, yðar hátign. [REMOTE Smellir] -Hvað Gerðirðu? Ég slökkti á vegg. Nei, þú gerðir það ekki, þú slökkt alla myndina. Ég hlýt ýtt á rangan hnapp. -Well, Setja hana á aftur! Settu myndina aftur! Já, herra! Já, herra. -Hringjum Fara, Arnold. Komdu, Gretchen. Auðvitað þú veist ég ætla verða að senda þér reikning fyrir þessu. -Well? Gerði það að vinna? Hvar er konungur? -Það Vann, herra, við hafa samsetningu. -Mikill. Nú getum við tekið alla síðustu andann af fersku lofti frá plánetunni Druidia. Hvað er samsetning? Ón, tveir, þrír, fjórir, fimm. Ón, tveir, þrír, fjórir, fimm? -Já. -Það Er ótrúlegt. Ég hef fengið það sama samsetning á töskunni minni. Undirbúa Spaceball 1 fyrir strax brottför. Já, herra. -Og Breyta samsetning á töskunni minni. [Lokun á hurðinni SOUND] [Snún dyra hitting hjálm] -Ahh. [END vídeó spilun] DAVID J. MALAN: Það er það fyrir CS50, sjáumst í næstu viku. Sögumaður: Og nú, Deep Hugsun, eftir Daven Farnham. DAVEN FARNHAM: erfðaskrá í C er svo miklu erfiðara en grunni. printf, Scratch var lygi. [Hlátur SOUNDBITE]