JASON Hirschhorn: Velkomin til A5, allir. Við höfum spennandi viku framundan, aðallega vegna þess að það eru svo margir nýir andlit í þessu herbergi. Það er dásamlegt. A einhver fjöldi af þú ert hér fyrir slysni, sem er jafnvel betra. Svo vonandi að þú munt halda hopinn. Í þessari viku ætlum við að eyða meginhluti kafla undirbúning fyrir próf. Svo á dagskrá okkar, við erum að fara að tala svolítið um úrræði fyrir bekknum, en einnig fyrir prófið, og þá aftur, eyða megnið af bekknum tala um spurningum. Þegar við erum búin að svara þér spurningar, eða ef spurningar þínar að sjálfsögðu leiða okkur að einhverju erfðaskrá, ég hafa sýnishorn vandamál frá midterms framhjá því að við munum númerið lifandi í kafla saman sem einnig koma upp einhver önnur Gott efni til að ná. Svo fyrst, eins og við höfum farið í gegnum fyrir fortíð par af vika til að minna þig krakkar, það eru tonn af auðlindum í boði fyrir þetta námskeið. Margir af þeim mun vera ótrúlega hjálpsamur við þig eins og þú heldur áfram að læra fyrir prófið 0, vegna þess að það er þriðjudagur síðdegis. Svo allir sem þú hefur verið læra fyrir a hluti. Það eru Fyrirlestur Skýringar og uppspretta kóða sem þú ættir örugglega kíkja. Horfa á stuttbuxum. Skoðaðu study.cs50.net. Og þá, hér fyrir neðan eru ýmsar annarra auðlinda. Aftur, quiz 0 er á morgun á 01:00. Ef þú hefur ekki gert það nú þegar, athuga út About Quiz 0 skjal á Heimasíðan Auðvitað er að reikna út þar sem þú ert að taka prófið. The quiz hefst kl 01:10 og endar 70 mínútum síðar. Þannig að ef þú mæta eftir 01:10, þú ert að fara að fá að margir færri mínútur en 70 að taka prófið. Svo vertu viss um að þú ert þarna á réttum tíma. Ef þú ert í framhaldi nemandi eða hafa Sum önnur atriði próf, það gæti ekki verið á 1:00 á morgun. En aftur, athuga Um Spurningakeppni 0 skjal til að tryggja að þú veist hvenær þú ert að taka prófið. Ég skrifaði 75 mínútur upp hér. Ég held að það er rétt, ekki 70. Það nær allar þær efni frá viku 0 að fyrirlestri í síðustu viku á miðvikudaginn. Og aftur, fyrir þetta próf, á að skjal, fá þér einn tveggja hliða og 8 1/2 af 11 lak af pappír sem þú færð að nota sem minnismiða í spurningakeppni. Margir, ef ekki flestir, hafa komist að því að einn hjálpsamur leið til að læra fyrir próf er að gera rannsókn efnahagsreikning, einn Síður, af sínum eigin. Svo líta á undanförnum sjálfur ef þú hefur séð fyrri sjálfur. Ná til vina til að sjá hvað þeir eru að setja á þeirra. En hendur niður, besta leiðin sem þú getur Rannsóknin er að fara í gegnum allt og tálga það niður hvað ætti eða ætti ekki tilheyra á þeirri blað pappír, því það er bara mjög hjálpsamur leið fyrir þig til að vera viss þú ert að fara í gegnum allt og hafa sumir þekkingu með það. Flestir, finnum við, jafnvel þó þeir hafa lak af pappír situr rétt við hliðina á þeim á spurningakeppni, snú ekki við það, vegna þess, aftur, að mjög ferli að fara í gegnum þær upplýsingar sem hefur hjálpað þeim að læra það. Hefur einhver hefur einhverjar spurningar um spurningakeppni 0? Hefur alla - Ég ætla ekki að gera sýningu á hendur. Aldrei hugur. Ég var að fara að spyrja hver byrjaði að læra. En ég vil ekki að gera þér allt ekki hækka hendurnar. Svo eins og ég sagði - já, Avi, fara fram í tímann. AVI: Hvað væri gagnlegt hlutur að setja á einn-Friðþjófur? STUDENT: Það er komið að þér. JASON Hirschhorn: Þú færð að nota dómgreind. Gagnleg atriði til að setja á einnar símboði, ef þú ert óviss um Big O Runtime mismunandi tegundir af leit og tegund, setja það á það í vel spjátrungur myndinni. Þannig ef þú ert beðin um að á quiz, þarft þú ekki að reyna að tala það út eða ástæða gegnum afturkreistingur. Þú getur bara afritað það niður. Ef þú horfir á Skyndipróf fortíð, fullt af sinnum, það er að keyra tíma spurningum. Svo það væri dæmi um góð hlutur til að setja á einn Friðþjófur. Aðrir góðir hlutir að setja á, ef þú ert óviss um hvernig á að lýsa yfir virka eða hvað mismunandi hlutar virka yfirlýsingu eru, skrifa að á það, almenn útgáfa og þá kannski dæmi. Ef þú ert óviss um ábendingum, skýringarmynd af hvernig ábendingum vinna er sennilega mjög gagnlegt. Ef þú ert óviss um endurkvæmni, a sýnishorn endurkvæma virka á það gæti einnig reynst mjög gagnlegt. Er að gefa þér nokkrar hugmyndir? AVI: Þú þarft að skilja Öllu samantekt aðferð, eins og hvernig það virkar allt? JASON Hirschhorn: Allt sem hefur verið húðað að gat mæta á spurningakeppni. Spurningar - en aftur, sumir hlutir verða vegið þungt en aðrir. Sumir hlutir hafa komið upp aftur og aftur í flokki, í fyrirlestur, og kafla. Aðrir hlutir hafa ekki koma upp sem oftast. Við höfum talað mikið um # include og -L eitthvað og hvað þeir meina í samantekt aðferð. Við höfum talað mikið um gdb, loða, þessi mismunandi fánar sem við notum þegar við safna saman einhverju, og hvað make15, til dæmis, í raun þýðir og raunverulega gerir. Við höfum ekki talað eins mikið um hvert einasta skref í samantekt aðferð. Við höfum enn talað um það. Svo það er samt eitthvað sem þú ætti að vera kunnugt. En aftur, við erum ekki að fara að vera - hlutir sem koma upp oftar í flokki eru líklegri til að koma upp fleiri oft og miklu strangara vegin á spurningakeppni. Cool. Aðrar spurningar um spurningakeppni 0? OK, þannig að ég setti saman lista yfir efni á borðinu. Ég fór í gegnum kennsluáætlun. Ég fór í gegnum endurskoðun kafla frá í gærkvöldi og þeir sem renna til að koma upp með ekki tæmandi lista yfir efni sem við höfum fjallað svo langt í CS50 og það sem gæti birtast á spurningakeppni. Þannig að ég ætla ekki að fara í gegnum sérhver einn einn af þessir. Það myndi taka miklu meira tíma en við höfum nú. En ég setti þetta upp hér að vonandi skokka minni þitt eins og að hlutir sem kunna að eða mega ekki vera eins og ég þekki með þér. Og ég vil gjarnan að eyða megnið af kafla svara spurningum þínum um Þessi atriði, efni sem eru ekki fjallað hér. Við getum skrifað gervi kóðann. Við getum skrifað alvöru númer að tryggja að þú - Ég get svarað spurningu þína og hjálpa allir í grundvallaratriðum skilja mikið af þessum viðfangsefnum þannig að þú munt finna undirbúin og þægilegt að fara inn í quiz á morgun. Svo lesa yfir listann. Þú vonandi kominn til kafla með nokkrum spurningum eins og heilbrigður. Þegar þú ert tilbúin, hækka hönd þína og við munum byrja. Hafðu í huga, að spurningum sem þú hefur, það eru engar heimskur spurningar. Við höfum heyrt að mikið. Og spurningar sem þú hefur, ég er tilbúin að veðja, margir aðrir bæði sitja hér og horfa á á netinu hafa eins og heilbrigður. Svo þú getur aðeins hjálpað fólki með því að spyrja spurninga. Marcus. MARCUS: Milli stakkur og að hrúga, er það pre-úthlutað hlutfall minnis sem er skilgreint sem þetta er fyrir í stafla eða til að veggur? Eða hvernig virkar þessi vinna, nákvæmlega? JASON Hirschhorn: Great spurning. Ég ætla að baka rekja svolítið. Gerir alla - vinsamlegast vera heiðarlegur hér. Ég veit að ég er að biðja þig að hækka þinn hönd fyrir framan vini þína. En það eru fólk sem finnst óþægilegt við stafla og hrúga og langar að fara yfir þessi og hvað þeir meina? Hækka hönd þína ef - OK. Þakka þér. Þannig að við ætlum að fara yfir stafla og að hrúga mjög fljótt og þá flytja inn svara spurningunni þinni. Þannig að ef við drögum út kassa til að tákna minni á tölvunni þinni, hvað eru nokkur hlutir sem fara í þennan reit? Main. A Helsta hlutverk. Hvar er aðal fara? STUDENT: [inaudible]. JASON Hirschhorn: Þannig að við munum setja helstu niður hérna. Hvað annað fer í þennan reit? STUDENT: Aðgerðir sem þú hringir. JASON Hirschhorn: Hlutverk sem við köllum. Og hvar þeir fara? STUDENT: í stafla. JASON Hirschhorn: Þeir fara í stafla. Þannig að við ætlum að kalla þetta hlutur hérna stafla. Og allt ofan, höfum við hrúga. Svo er minni ekki kassi bara svona. En það er í raun mjög svipuð. Það er að fara til vera a einhver fjöldi af kassa yfir og yfir, eftir því hversu stór tölva er eða hversu stór minni þitt er. Á vitna-unquote "botn" er að stafla. Og það eru margar hlutir að fara á mánudaginn. Og þeir ráðast á hlutverkum þú ert í kóðann þinn. Þú hefur alltaf eina aðgerð í þínum númer sem heitir helstu, þannig að það er alltaf kafla hér niðri í stafla sem varið er til helstu. Þessir hlutar í stafla eru kallaðir stafla ramma. Þegar þú hringir annan valkost, segja helstu kallar tvöfaldur leita virka, við setjum annan ramma á mánudaginn. Nánar tiltekið, við erum að fara að gefa klumpur af minni á okkar tölvu til að geyma Tvíundarleit er staðbundin breytur og að keyra tvöfaldur Leita kóða. Svo við köllum tvöfaldur leit. Í þessu klumpur af minni, við erum að fara að geyma staðværar breytur hennar. Við ætlum að geyma printf símtöl þess. Hvað sem gerist, að fall er fara til að geyma þarna. Tvöfaldur leit er að fara að framkvæma. Það er að fara að ljúka framkvæmd. Hver er Orð í C sem merkir að virka ætti ljúka framkvæmd hennar? STUDENT: Return. JASON Hirschhorn: Return. Svo þegar þú sérð aftur staðhæfing, Aðgerðahnapparnir endar þegar það hits það. Svo tvöfaldur leita vilja högg arðsemi eigin. Þessi hluti af minni mun í raun vera leystur upp. Og helstu mun fara aftur til framkvæmdar. Svo helstu verður að gera hlé hvar var, kalla Tvíundarleit, fá sumir aftur gildi, og halda áfram framkvæmd. Þessi stakkur ramma mun fara burt. Ef við köllum endurkvæma virka, sem er fall sem kallar sig yfir og yfir, gætum við fengið - segjum við gerði tvöfaldur leit undirmöppum. Við gætum fengið Tvíundarleit útgáfa einn, Tvíundarleit tvö, Tvíundarleit þrír, Tvíundarleit fjórir, Tvíundarleit fimm. Og þá er þetta endanlega Tvíundarleit fimm vilja högg grunntilvikið og stafla rammar mun fara aftur og halda loka þar til við fáum aftur að aðal. Við getum farið yfir endurkvæmni í bita. En allt þetta er að segja, ef þú ert að kalla margar aðgerðir í einu, það verður margar stafla rammar á mánudaginn. Hrúga, á hinn bóginn, upp hér er ekki fyrir aðgerðir, ekki fyrir staðbundnar breytur. Það er fyrir breytilega úthlutað breytum. Svo að þetta eru breytur sem hægt er að forsniðin í annað hvort aðal-eða A virka sem helstu símtöl. Hvar sem er í kóðanum þínum, þeir Hægt er að forsniðin. Og að frumstilla Dynamically úthlutað breytu. Hvaða fall í C notum? STUDENT: Malloc. JASON Hirschhorn: Malloc. Þú kallar malloc. Þú færð pláss af minni. Og það pláss af minni er á hrúga. Og það pláss af minni dvöl þar þangað til þú kalla frjáls. Svo virk úthlutað breytur í hrúga vilja vera eins lengi og þú vilja þá til vera, og þeir munu ekki fara í burtu þar til þú skýrt segðu þeim að fara í burtu. Þú getur búið til þá í einni aðgerð. Stafla sem virka er ramma mun fara í burtu. En það breytu verður enn fyrir hendi í hrúga þangað til það er frelsi, hugsanlega með þeirri aðgerð sem kallast Tvíundarleit eða hvað. Svo þessir hrúga breytur dvelja þar eins lengi og þú vilt þeim að vera þar. Og þeir fá sett hér. Og þá fær sá næsti setti þar. Þeir halda að fá fyllt í, og þeir dvelja þar þangað til þú kalla frjáls. Og í raun, hrúga og stafla, fá við spurningunni Marcus er, vaxa átt að hver annarri. Og ef þeir hlaupa inn í einn annan, hefur þú notað upp alla minni í þinn tölva, og forritið þitt mun hætta vegna þess að þú ert ekki með neina meira minni vinstri til að nota. Á milli þeirra eru hugsanlega önnur atriði. En fyrir gildissvið þessarar Auðvitað, þú þarft ekki að hafa áhyggjur af því. Svo það var svarið við spurningunni þinni. Ekki hafa áhyggjur óður í það. En það var langt svar. Allt sem þú þarft að vita er hrúga og stakkur mun - einn byrjar neðst. Stafla gerir. Hrúga er þarna upp. Þeir munu vaxa nær við annað. Og ef þeir snerta, það er vandamál. Þú hleypur út af minni. En einnig, til viðbótar við að vita hvar þeir eru, hvað er geymt bæði í stafla og hrúga. Curtis. CURTIS: Þegar þeir rekast, er að stafla flæða? JASON Hirschhorn: Þegar þeir rekast, það er ekki stafla flæða. Stafla flæða er mismunandi svæði að við getum farið yfir ef þú vilt. OK, við munum koma aftur til að í a hluti. STUDENT: Hvað er orðið kallað þegar þeir ná hvor öðrum, stafla og hrúga? JASON Hirschhorn: Fyrir nú, ekki hafa áhyggjur óður í. Bara vita - Ég mun svara þeirri spurningu eftir tegund. Ef þeir hlaupa inn í hvert annað, þú hleypur út af minni, því það er ekkert meira pláss þar. STUDENT: Því miður, hvað er seg kenna? JASON Hirschhorn: A hluti kenna má kallað - það fer hvers vegna kallað seg kenna er. Stundum, stafla flæða þinn, verður það segja seg kenna eins villuna. STUDENT: Hvað um dereferencing núll breytu? Er að seg kenna? JASON Hirschhorn: Dereferencing núll bendiprik - OK, þannig að ef þú ert með músina sem þú setja jafn NULL, ábendingum, muna, geyma minni heimilisföng sem gildi þeirra. Og núll bendillinn er í meginatriðum geyma 0, 0-ta takast á breytunni. Svo 0x, 0, 0, 0, 0, et cetera. Að 0-th heimilisfang í minni sem er ekki í myndinni okkar, sem er þarna upp einhvers staðar, það er áskilinn fyrir tölvuna. Við erum ekki leyft að snerta það. Svo þegar forritið þitt er framkvæmd, ef eitthvað er að reyna að fara í minni heimilisfang 0, veit það að sem er tómt gildi. Það veit ekkert ætti að vera þar. Þannig að ef þú ert að reyna og nota eitthvað þarna og meðhöndla eitthvað eins og það eða reyna að fara að þessi staðsetning, þú ert fara að fá seg sök eða villu. Er að svara spurningunni þinni? Og nú munum við fara aftur að stafla flæða. Hlutir í stafla, eins og þið hafið séð áður, í - við skulum draga nærmynd upp stafla ramma. Geta allir séð það? Þannig að við höfum stakkur ramma okkar. Við erum að sparnaður fjölda í eins heimamaður breytu í þetta fall. Svo segja array okkar hefur fimm bletti. Öllum fimm af þeim sem verða geymd í þeim stafla ramma. Ef við byrjum að skrifa út fyrir mörk af þessu fylki - þannig að ef við byrjum að skrifa inn, skulum segja að það er 0. Þeir eru fimm vísitölur af fylking okkar. Ef við byrjum að skrifa inn í vísitölu 5, sem við höfum ekki þegar við höfum að Fylki af stærðinni 5, byrjum við að skrifa inn í Forsíða 6, 7, 8, 9, getum við fá stafla Yfirfall villa. Almennt er það ekki - þú munt sennilega fá inn í vandræði ef þú ferð yfir í einu. En almennt, þú vilja fá inn í mest vandræði ef þú ferð yfir með fullt og þú ferð svo langt yfir að þú skrifar yfir aftur heimilisfang á að virka, sem er staðsett á neðst á stafla ramma. Vegna þess, ekki satt? Þú - í - því miður. Ekki "því rétt." Í stafla ramma, hefur þú Local breytur þínar. Á mjög neðst á stafla ramma er aftur heimilisfang. Það er þar sem hlutverk fer þegar því er lokið. Og ef þú skrifa yfir aftur heimilisfang, svo þegar þetta stakkur ramma, þegar þú ert að fara í gegnum stafla ramma og framkvæmd hverja línu, þú ert að fara til nýja aftur heimilisfang þitt sem er skrifað þarna í stað Raunveruleg einn. Og það er hvernig við höfum séð sumir öryggi brot getur gerst með tölvur. Svo stafla flæða, í stuttu máli, er þegar þú skrifa hluti í stafla þú ert ímyndaður til að nota, the heimamaður breytu sem þú ert ímyndaður til að nota, og einkum þegar þú byrjar að skrifa yfir mikilvæg atriði eins og að aftur heimilisfang. Og það er þar sem þú munt fá villu. Eða kannski jafnvel að þú gætir byrjað jafnvel að skrifa inn - segja Tvíundarleit var rétt fyrir ofan aðal. Ef þú overwrote mikið, þér gæti skrifað í helstu. En almennt, þá færðu villu áður þá, vegna þess að tölvan veit þú ert að gera eitthvað sem þú ætti ekki að vera að gera. Já. STUDENT: Hver er munurinn milli stafla flæða og dúar flæða? JASON Hirschhorn: Buffer flæða er meira almenna tegund af það sem ég hef bara lýst. STUDENT: Svo er stafla flæða að Dæmi um yfirflæði. JASON Hirschhorn: Einmitt. Þetta er fylki sem við getum hugsað sem biðminni, pláss fyrir hluti að fara inn Þetta er stafla biðminni flæða. Við gætum hafa hrúga biðminni flæða. Ef það var buffer, sem það oft er fylki hrúga, og við overwrote þeim mörk, þá myndum við hafa hrúga biðminni flæða. Og utan gildissviðs þessa námskeiðs, þeir eru greind svolítið öðruvísi. Þýðandinn hefur sérstaka leiðir til þess að skynja hvert. En biðminni flæða er meira almenna gerð sem ég lýst, sem var stafla biðminni flæða. Gerði það að svara spurningunni þinni? Sætur. Voru einhverjar aðrar spurningar sem tengjast að stafla eða hrúga? Já. STUDENT: Ég veit að þú þarft að frjáls strengi því þeir eru í hrúga og þú vilt ekki að leka minni. En þú þarft að losa alheims breytur og eitthvað svoleiðis? Eða eru þeir frelsi sjálfkrafa? JASON Hirschhorn: Góð spurning. Svo í CS50.H, búa við slíkt þú kallaðir streng. A band er í raun það? STUDENT: Char stjörnu. JASON Hirschhorn: A bleikju stjörnu, bendillinn að staf bendi á fylki af stöfum. Það er það band er. Þannig að við þurfum að losa það, því getstring, sem við notuðum mikið - Nafn band jafngildir getstring - sem mallocs fyrir okkur nokkur minni á vörðu og þá skilar bendi á Fyrsti stafurinn sem band, char stjarna. Svo ostensibly, ef þú hefur ekki verið skrifa ókeypis á einhverju strengi þína að þú hafir kallað svo langt, hefur þú verið lekur sumir minni. Auðvitað höfum við ekki talað um það, þannig að enginn er fengið í vandræði fyrir að gera það. En að fara áfram, já. Þegar þú hringir getstring, þú ert mallocing pláss á hrúga. Og ef þú kalla ekki frjáls síðar á að band, þú hafa a minni leka. Að svara spurningunni þinni? Já STUDENT: Svo til að gera það, við notum frjáls rétt fyrir staðinn? Eins, innan gildissviðs, held ég ef við segjum, eins og int helstu, innan umfang kóða sem er innan þessara hrokkið axlabönd, rétt áður - þú veist þar sem þú vilt yfirleitt setja aftur. Þú setur frjáls áður? JASON Hirschhorn: Svo þú getur sett frjáls hvar sem þú vilt að setja frjáls. Vegna þess að þetta eru mjög virk úthlutað breytur, því þeir geta lifa utan gildissviðs tiltekinn virka, ef þú kallar malloc í aðskilin virka, til dæmis, getstring, getur þú hringt ókeypis í helstu. Þú þarft ekki að kalla það í tiltekna aðgerð þar malloc er kallað. En þú þarft að hringja í hana áður helstu ávöxtun. Og það fer í raun. Það fer eftir því hvers vegna þú malloced að pláss í fyrsta sæti. Sumir vilja kalla frjáls ansi hratt. Sumir vilja ekki kalla frjáls fyrr enda dagskrá þeirra. Og þeir fara í gegnum og frjáls allt. Það fer eftir því hvers vegna þú kallaðir malloc. STUDENT: Og hvað myndir þú segja ef þú kallaðir nota getstring? Þú vilt segja frjáls hvað? JASON Hirschhorn: Svo setningafræði fyrir frjáls er einfaldlega frjáls, opinn paren, nærri paren, og nafn músina. Þannig að ef þú skrifar String nafn jafn getstring, settu þér nafn hérna. Það er nafn á músina. Og það veit að frjáls að minni. STUDENT: Svo þegar það frjáls að minni, bendillinn enn bendir þeim stað í minni? Eða er bendillinn einnig tæmt af heimilisfangið sem hann bendir til. JASON Hirschhorn: Við ættum að reyna það. Við ættum kóða sem. Við skulum koma aftur þegar við komum til erfðaskrá, og við skulum kóða sem. Og ef þú vilt að reikna út svarið til þessi, getur þú einnig kóða sem í millitíðinni. En það er frábær spurning. STUDENT: Er það mögulegt að frjáls eitthvað of fljótt? Svo þú þarft samt fyrir áætlun þína, og þú leystur, að minni pláss? JASON Hirschhorn: Já. Það er hægt, ef þú frjáls eitthvað og síðan að nota það aftur, þú verður hlaupa inn í villu. En það er á þig, því þú leystur eitthvað og þá heitir það síðar. Svo sem var mistök forritari er. En já. Þú getur skrifað það. Einhverjar fleiri spurningar um - já. STUDENT: Svo ef þú ert að ætlast til að bara frjáls það almennt áður en program endar, þýðir það ef program lýkur og þú losa það ekki, þessi minni er enn úthlutað? JASON Hirschhorn: Ef forrit endar og þú gleymir að losa eitthvað, þá að minni var úthlutað í gegn ævi program. Forritið lokar alveg, að minnið er ekki að fara að vera þar að eilífu. The tölva er sviði nógur til vita að þegar forritið lokast, og það ætti að losna við alla minni sem var tengd við þessi forrit. Hins vegar eru tæki sem þú getur keyrt á forrit til að uppgötva ef, þegar program lokið, gleymdi að losa um minni. Og fyrir næsta vandamál þitt sett þar þú munt nota malloc og nota ábendingum, verður þú að vera að keyra þetta forrita á forritinu til að sjá hvort, Þegar helstu skilar, þú hefðir einhver hlutir sem voru eftir unfreed. Svo þeir eru ekki að fara að vera malloced að eilífu í tölvunni þinni. Sem myndi vera eyðslusamur, því mjög fljótt, tölvur myndi keyra út af minni. En ef þeir hlaupa til loka þínum forrita og þeir eru ekki leystur og þinn program hættir, það er enn vandamál að þessi tól mun hjálpa þér að takast. STUDENT: Er það Valgrind? JASON Hirschhorn: Það er heitir Valgrind. Og þú munt vera - STUDENT: En við þurfum ekki að vita að fyrir prófið, þó? Ég meina, það var talað um svolítið í fyrirlestri. JASON Hirschhorn: Svo Valgrind er nafn sem tól. Vita hvað það gerir er nóg fyrir spurningakeppni. En þú hefur ekki notað það enn á þinn Heimadæmi vegna þess að við höfum ekki haft Heimadæmi sem hefur sérstaklega fjallað með malloc eða þú nota malloc. Svo þú hefur ekki notað Valgrind ennþá. En þú verður að nota það fyrr frekar en síðar. STUDENT: Getur þú endurtekið hvað Valgrind er? JASON Hirschhorn: Fyrirgefðu? STUDENT: Getur þú endurtaka það tilgangur Valgring er? JASON Hirschhorn: Valgrind er nafnið - eins GDB hjálpar þér kemba program, Valgrind hjálpar þér að reikna út ef hlutirnir hafa ekki verið leystur Forritið lokar. Svo þú munt hlaupa það á forritinu. Og program hættir, og það verður að segja program sem heitir malloc þetta margir sinnum fyrir þessu margir bæti og þú aðeins kallað frjáls þetta mörgum sinnum. Og svo þú vinstri þessi mörg bæti án þess að vera leystur. Eða það segi að þú hafir leystur allt. Gott starf. STUDENT: OK. Og það er kallað Valgring? JASON Hirschhorn: V-A-L-G-R-I-N-D. STUDENT: Spurning um ábendingum. Svo segja að þú hefur n stjörnu x er jafnt og eitthvað. Sem jafngildir, hvað sem þú ert að setja það, er að það er verið að setja inni hvað x er bendir til, eða bendillinn á x? JASON Hirschhorn: Getur þú endurtaka spurninguna? Getum við dregið það á meðan þú segir það? STUDENT: í spurningakeppni, reyndar er sem þú sendir oss, og það var eins, bleikju stjörnu sannleikurinn jafngildir CS50 steina, ekki satt? Svo þýðir það að þessi CS50 björg er það sannleikurinn er að benda á? JASON Hirschhorn: Svo þú ert að tala um bleikju stjörnu í streng, hvernig sem virkar? Já. OK. Skulum draga þetta hérna. [SIDE Samtal] JASON Hirschhorn: Svo þessi breyta er að fara að vera af taginu char stjörnu. Hversu stór er breytilegt af taginu char stjarna? Hversu margir bæti? Nemendur: fjórar. JASON Hirschhorn: Það er fjórum bæti. Hversu margir réttindi er breytilegt int stjarna? Nemendur: fjórar. JASON Hirschhorn: Fjórir bæti. Ef það er bendillinn, þá er það alltaf fjögur bæti því upplýsingar ábendingum, þeirra gildi er minni heimilisfang. Og minni heimilisföng á CS50 tæki eru fjögur bæti. Svo þegar við köllum getstring eða þegar við segja, stringname jafnt, og þá í gæsalappa setja band, við erum að setja - Jæja, það er svolítið öðruvísi. Við munum gera getstring sem dæmi. Eða bleikju stjörnu eitthvað jafngildir strenginn. Því miður, gefa mér dæmi sem þú lest? STUDENT: char stjörnu sannleikur jafngildir "cs50 björg" í gæsalöppum. JASON Hirschhorn: Svo þetta stjörnu þetta við munum kalla þessa breytu X fyrir okkar almenna tilgangi. Við höfum búið til breytu sem heitir x. Það er tegund char stjörnu. Það er bendi á röð stafi. Svo niður hér - Svo er þetta hvernig þetta myndi vinna í minni. Þetta myndi geyma minni heimilisfang. Það myndi geyma minni heimilisfang fyrsti stafurinn í array. Og svo þegar þú fylgt bendillinn, þú myndir fá fyrsta staf. Og ef þú ert að lesa þetta í svona a band, tölvan þín er klár nóg að vita, lesa þetta allt hlutur þangað til það fær að bakslag 0. En ef þú ert að lesa það á staf á tími, þannig að þú ert að iterating gegnum Þessi strengur, þá munt þú bara að lesa eðli í einu þar til þú færð að sviga 0. Sem gæti ekki svarið þitt spurning, þó. STUDENT: Já, en þú hefur ekki malloced sem rúm enn fyrir þessi músina. JASON Hirschhorn: Þannig að ég er ekki alveg viss nákvæmlega það sem þú ert að leita á, vegna þess að ég vissi ekki að þessi próf. Sem átti að vera hjálpsamur úrræði frá öðru TF. Ef þú ert að búa til band á stafla eða sem staðbundin breytu, verður það bara vera array af gjöldum frekar en yfirleitt bleikju stjörnu bendir til annað band. En ég veit ekki. Það gæti verið bendi til annars string á stafla eins vel. Já. STUDENT: Ég veit að þú þarft að úthluta minni ef bendillinn er fá lýst inni annars virka. Þú þarft að gera það sama ef það er verið lýst inni helstu, þú ert að nota það inni í main? JASON Hirschhorn: Svo já. Þú getur lýst bendi einhverju minni heimilisfang í minni. Það getur verið minni heimilisfang af a heimamaður breytu, þó oftsinnis, fólk lýsa ekki minni heimilisföng að staðbundnar breytur vegna þess að þeir fara burt þegar það skilar, sem er þess vegna sem við malloc almennt hluti. En já, þú getur lýsa músina til annars heimamaður breytu. Það er bara almennt ekki gert. En ég get að líta á sem sérstakur hlutur eftir tegund. Já. STUDENT: Ég held að þetta sé tegund af því sem er verið að spyrja. Það virðist undarlegt að vera að virkja bendillinn ekki sem heimilisfang, en það sem virðist eins og gildi. Það virðist eins og CS50 er hvað er inni hlutur tilvera benti til og ekki raunverulegt netfang, ekki satt? JASON Hirschhorn: Svo er það ekki raunin, þó. Það er ekki það sem er að gerast. Þegar þú lýsa bleikju stjörnuna, það er minni heimilisfang. Ábendingar eru öll minni heimilisföng benda á eitthvað annað. Að eitthvað annað gæti verið á stafla, en nær alltaf er á hrúga á því hvernig við munum sjá það notað. En stringname jafngildir tvöfalda tilvitnun "Getstring," við getum séð það og við getur að líta í gegnum það og kóða sem. getstring strengur er ekki verið vistuð í að breytilegur eða hvað sem strengur nafn er ekki verið að spara í að breytu, því það er ekki hvernig ábendingum vinna. Er að skynsamleg? STUDENT: Já. JASON Hirschhorn: OK. Vonandi, það var ekki ruglingslegt að einhver. En ef það var, getum við líta á það aftur í hluti, af því að við erum í raun að fara að kóða eitthvað sem mun vonandi vinna með strengi og hjálpa þér finnst öruggari með þeim. Aðrar spurningar sem tengjast þessum efni eða önnur efni sem Ég set aftur upp? Og - núna. Já, Alden. Alden: Þannig að þetta er alveg ótengd, en getum við farið rúmlega virkilega hratt það sem við þurfum að vita um muninn á milli 32 og 64-bita vél? JASON Hirschhorn: Já. Svo 32 bita er hversu margir bæti? Alden: Það er fjórum bæti. JASON Hirschhorn: Það er fjórum bæti. Og 64 bita er hversu margir bæti? STUDENT: Átta. JASON Hirschhorn: Átta bæti. Svo aftur, átta bitar er eitt bæti. CS50 tækið þitt er 32-bita vél. Svo minni heimilisföng eru fjögur bæti. Það eru 2 að 32 minni viðtakandi. 0-2 til 32 mínus 1. Og ég er ekki jákvæð, en það er sennilega gildissviðs það sem þú þarft til að veit að 32-bita vél, að minni heimilisföng eru, aftur, fjögur bæti, og það er hámarksfjárhæð af minni viðtakandi. Einnig gögn gerðum - þetta gæti verið eitthvað sem vel það er rétt að átta sig. Á stærð við gögn gerð veltur á vél þú ert að vinna með. Svo bleikju, einn staf, er hvernig margir bæti á CS50 tæki okkar? Eitt bæti. Og það er í raun einn bæti sem vel á 64-bita vél. Og flestir tegundir gagna eru sama númer bæti á báðum vélum. En sumir tegundir gagna verða öðruvísi á báðum vélum. Svo það væri möguleiki á Það eina sem þú þarft að vita. En jafnvel það, held ég, er utan við mörk - Ég er næstum jákvæð, ef þú lítur til baka á gömlum Skyndipróf, það segir, ráð fyrir erfðaskrá vandamál sem þú ert að nota 32-bita vél. En það eru, að fara með það í Ef þú hefur áhuga, þá eru gögn tegundir sem eru þau sömu stærð á öllum vélum. Ef þú hefur séð eitthvað eins og uint32_t, getur þú eða mega ekki hafa séð það. Það er a gögn tegund. Það er að segja, vera 32 bita burtséð hvað vél þetta er á. Svo þegar fólk er að skrifa flytjanlegur númer, sennilega munu þeir ekki nota ints. Þeir ætla í staðinn nota þessi önnur gögn gerðir að þeir vita mun vera sú sama stærð á hverjum einasta vél. Madhu. Madhu: Ég átti spurningu um samantekt aðferð. Þannig að ef þú ætlar að skrifa forrit sem notar bókasafn eins CS50 eða eitthvað svona, ég veit að það bókasafn hefur að, á einhverjum tímapunkti, að vera saman og tengist inn En hversu mikið af því sem gerist á samantekt program? Hvaða hluti af þessu bókasafni ferli á sér stað þegar þú ert saman eigin program? JASON Hirschhorn: Svo skulum við fara yfir Almennt um stíga á þessu ferli. Þú skrifar. C skrá. Í c. Skrá þína, þú # include þinn bókasöfn haus, til dæmis, cs50.h. Hvað þýðir að mikil eru lína gera til program? Akchar. AKCHAR: Það bætir frumútgáfur af aðgerðir af haus skránum í bókasöfnum. JASON Hirschhorn: Einmitt. Það bætir þau virka frumútgáfur til kóðann þinn. Svo þegar númerið þitt er að safna saman í Fyrstu stigum, sem þýðandi veit að þessar aðgerðir í raun fyrir hendi, og að einhvers staðar að þeir hafa verið skilgreindir. The. H skrár innihalda ekki skilgreiningar þessar aðgerðir eða hvernig þeir vinna í raun. Cs50.h nær bara eitthvað sem segir getstring er alvöru hlutur sem getur gerst. Og standardio.h segir printf er alvöru hlutur sem getur gerst. Svo er C þinn með þessu. Haus skrá fær breytt í sumar tölvutæku númer, sem á endanum fær breytt í tvöfaldur númer, 0 og 1 er er. Og það er númer sem á endanum gets framkvæma. The-L cs50 línu - til dæmis, þegar þú ert að skrifa Clang - og þá eru-l cs50, þú skrifar að inn Og þú sérð það. Þegar þú skrifar að þú munt sjá þessi lína upp hér. Og við munum sjá að í annað þegar við kóða eða síðar þegar við kóða. En það-L cs50 lína gerir eitthvað svolítið öðruvísi en the # include cs50.h. Hvað þýðir að-L cs50 lína gera? Avi? AVI: Ég vil segja að það tengir Bókasafnið að virka kalla, eins og. o skrá. JASON Hirschhorn: Svo mjög loka, ef ekki blettað á. The-L cs50 tekur tvöfaldur skrá og sameinast það með tvöfaldur skrá. Svo cs50.h, það er ekkert lið í að snúa cs50.h frá C tungumál til tvöfaldur á hverjum einasta sinn sem það er verið að nota. Það væri kjánalegt, vegna þess að myndi sóa a einhver fjöldi af tími. Svo það hefur þegar verið unnin og sneri inn í executable. Og nú er að fara að sameinast með skrá í lok. Svo þessir 1 og 0 eru að fara að sameinast sjálfur og 0 í lok. Svo nú þú munt í raun að hafa raunverulegt 1 og 0 sem skilgreina hvernig getstring, til dæmis, virkar, eða hvernig printf, Til dæmis, virkar. Og til að fá meiri upplýsingar, það er stutt Vistþýðendur sem Nate gefur að þú ættir að kíkja sem fer í gegnum þessi skref. En - já. STUDENT: Eru þeir alltaf í o skrár. þegar þeir eru í bókasafninu formi, tilbúin til að sameinast, tengjast - eins og þeir eru í the tvöfaldur kóða? JASON Hirschhorn: OK. Hvað - STUDENT: Er það alltaf raunin fyrir bókasöfn þegar þú hlekkur þá? JASON Hirschhorn: Já. Svo er það. S skrár, sem verður vél númer, sem mun einnig vera dulinn að þér. Þú þarft ekki að hafa áhyggjur af þeim. En almennt, já, þeir ' vera í. o skrár tilbúin að fara. STUDENT: Svo þegar þú skip til bókasafn, þú skipið aðeins á. H og. o? Þú gera skip ekki. C eða. 'S. JASON Hirschhorn: Svo - og þetta er í þessari stuttu eins vel, ef þessar upplýsingar virðist vera að koma á lítið fljótt. En stutt á vistþýðendur viðræður um þetta eins vel. Þegar þú skip bókasafn, ef þú skip á. H, haus skrá, þá virka frumútgáfur, og 1 og 0 er, það er það eina sem þú þarft að gefa. Þú þarft ekki að gefa hvernig virka virkar, c. skrá. Vegna þess að benda abstrakt, eða benda API, að benda á þessa SPL, Stanford flytjanlegur bókasafn, það er fyrir þig að hafa áhyggjur óður í hvernig nýja GRect virkar, eða hvernig færa verk, eða hvernig bæta verk. Allt sem þú þarft að vita er að bæta við er fall sem þú getur nota, og það gerir þetta. Svo þú í raun þarft ekki að vita hvernig það er skrifað í C. Þú þarft bara að vita, eru hér aðgerðir, hvað þeir gera, og hér eru 1 og 0 þegar þú vilt virkilega að nota þær. Cool. Einhverjar fleiri spurningar um vistþýðendur eða annað efni á borðinu? STUDENT: Ég er með spurningu um framkvæmd endurkvæma virka. Spurning um endurkvæmni. Ég hafði á tilfinningunni að myndi koma upp. Þannig að við skulum fljótt að fara í gegnum endurkvæmni með ákveðna dæmis, þáttatilraun virka. Því þetta er dæmi um að oft kemur upp eða er notað til að sýna endurkvæmni. Svo "4!" er að lesa eins og 4 þáttatilraun. Og hvað þýðir 4 þáttatilraun meina? Hvað þýðir það að gera? Hvernig gera þú reiknar 4 aðfeldi? 4 sinnum 3 sinnum 2 sinnum 1. Svo önnur leið til að skrifa 4 aðfeldi er að skrifa þetta. 4 sinnum 3 þáttatilraun. Því 3 þáttatilraun er 3 sinnum 2 sinnum 1. SO 4 sinnum 3 þáttatilraun er 4 sinnum 3 sinnum 2 sinnum 1. Þetta er ástæðan fyrir þáttatilraun er frábær frambjóðandi fyrir endurkvæmni, því það er ljóst að það er eitthvað sem gerist aftur og aftur og aftur á að minni ýmislegt þar þú ná til enda. Þegar þú nærð 1, 1 þáttatilraun er 1. Þú getur ekki farið mikið lengra. 0 þáttatilraun er einnig skilgreint sem 1. Þannig að þegar þú færð að 1 eða 0, þú ert í lok, og þú getur byrja að fara aftur upp. Þannig að ef við vildum að skrifa endurkvæma virka til að reikna aðfeldi, við erum að fara að skrifa nokkrar sauðakóðanum fyrir það núna. Áður en við skrifa að sauðakóðanum - Ég skal gefa ykkur nokkrar mínútur til að skrifa falsaður kóðann eða bara hugsa um það - það eru tveir hlutir fresti endurkvæma virka þarf. Hvað eru þessir tveir hlutir? JACK: Það þarf að kalla sig. JASON Hirschhorn: Nói? Ó, Jack. Fara á undan. JACK: Það þarf að kalla sig. JASON Hirschhorn: Svo endurkvæma virka þarf endurkvæma hringja, er hringja til að sjálfu sér. Það er eitt. Og hvað er annar hlutur? JACK: A grunn tilfelli. JASON Hirschhorn: A grunn tilfelli. A grunn tilfelli er, hér er þegar við hætta. Svo virka fær kallaði. Grunnurinn er að ræða kemur fyrst. Þú vilja til vita ef þú ert á the endir. Og ef þú ert ekki í lok, þú gera endurkvæma símtöl. Og þú ferð í gegnum þessa aðgerð aftur, athuga stöð mál þitt aftur. Ef þú ert ekki endirinn, að þú annar endurkvæma hringja, et cetera, et cetera. Þessi 'hvers vegna endurkvæma virka alltaf þurfa þessir grunn tilvikum og þá endurkvæma símtöl. Ef þú ert ekki með endurkvæma hringja, það myndi ekki vera endurkvæma virka. Ef þú did ekki hafa grunn að ræða, þú myndir fara að eilífu og það væri engin endir. Og stöð ræða kemur alltaf fyrst, vegna þess að þú verður alltaf vilja til að athuga ef þú ert í lok fyrsta. Svo áður en við gerum sumir sauðakóðanum, hvers vegna ertu ekki að taka eina mínútu til að hugsa um hvernig endurkvæma þáttatilraun virka myndi vera skrifuð? Einnig, eins og margir eins og þú ert að gera, skrifa það út á blaði er hvað þú ert að fara til verða að gera á spurningakeppni á morgun. Svo sennilega gott að gera úr skugga um að númerið sem þú ert að skrifa niður á blað - eða þú getur gert það. Þú veist hvar semikommum eru. Þú manst setningafræði. Þar sem þú ert ekki fær um að hafa þýðanda segja að þú gerðir villu. Einnig fylgja þeim línum, á morgun, þegar þú hefur erfðaskrá vandamál, ef þú eru hljóp fyrir tíma, eða ef þú ert mjög rugla um hvernig þú átt að skrifa tiltekin hlutur í C, það myndi behoove þér að skrifa gervi-kóða eða skrifa athugasemdir á eins og heilbrigður. Vegna þess að það er algjör trúnaður fyrir fullt af spurningum um quiz. Svo þú might vera hljóp, eða þú gæti bara að rugla. Skrifa í athugasemdir eða gervi-kóða eru oft leiðir sem þú hægt að fá hluta lánsfé. Svo ekki fara eitthvað autt á spurningakeppni. Það er engin viðurlög við setja hlutina inn Í raun, setja í gervi-kóða eða athugasemdir er að fara að hjálpa Röð reikna út ef þú veist í raun hvað þú ert að tala um, og kannski verðlaun þú sumir hluta kredit fyrir það. Einnig meðfram þeim línum, skrifa skýrt. Ef við getum ekki í raun hvað þú ert að skrifa, við erum ekki að fara að hringja í þig Á miðnætti á morgun til að reikna út það sem þú skrifaðir. Við erum bara að fara að taka burt stig. Skrifa skýrt svo að við getum heyrt, eða öllu heldur, við getum lesið það sem þú skrifaðir. Og ef það segir tvær setningar, ekki skrifa málsgrein. Fylgdu leiðbeiningunum. Skrifa skýrt. Og skrifa í þeim athugasemdum eða sauðakóðanum fyrir spurningar sem gæti verðlaun hluta lánsfé. OK, við skulum fara að þátta. Þannig að við höfum virka aðfeldi. Ef ég væri að í raun skrifa þetta í C, hvað þarf ég að setja áður en nafn af virka? The aftur tegund, sem í þessu tilfelli, munum við gefa það int. Og þá, er inni í hrokkið axlabönd hvað fer inni í hrokkið axlabönd fyrir fall? NEMENDUR: Rök tegund. JASON Hirschhorn: breitum. Svo þáttatilraun mun líklega taka rifrildi. Það verður líklega aðeins taka eitt viðfang. Og við munum segja það mun taka heiltala sem kallast x. Og aftur, þegar þú skrifar frumgerð af fall eða skrifa aðgerðina í kóðanum þínum áður en skilgreina það, þú skrifa gögn tegund og nafn sem breytu fyrir að virka aðeins. Svo er hægt að fara nokkrum númerið inn þetta virka, það verður vísað til sem x innra með sér. Við höfum þáttatilraun fallið. Við þurfum tvennt, a grunntilvikið og endurkvæma hringja. Hvað er undirstaða málið fyrir þáttatilraun? Einhver sem skrifaði það út og sem hefur ekki talað enn, hvað er undirstaða rök fyrir þáttatilraun? STUDENT: Ef n er minna en 2, skila 1. JASON Hirschhorn: Ef n er minna en 2, skila 1. Mér finnst að vegna þess að sér um 0 og 1. Þannig að við munum gera x <2, skila 1. Ef við fá liðið 0, ef við fáum liðin 1, þessi aðgerð mun strax aftur 1. Ef við fá liðið nokkrar tala hærri en eða jafnt og 2, við erum að fara að hafa endurkvæma hringja okkar. Og svo hvernig er að fara að vinna? Getur einhver annar sem vann að þessu sem hefur ekki talað enn gefa mér endurkvæma hringja fyrir þessa aðgerð í sauðakóðanum? Ef við fá liðið í tölu x og það er meiri en 2, hvað viljum við gera? Við höfum einnig dæmi skrifað á hlið sem gæti gefið þér vísbendingu. STUDENT: Hringja x sinnum aðfeldi x mínus 1? JASON Hirschhorn: Einmitt rétt. Við erum að fara að fara aftur x sinnum aðfeldi x mínus 1. Og það jafnvel þó að ég skrifaði upp, grundvallaratriðum, hvað þú sagðir á ensku, þetta þáttatilraun virka vilja fá kallaði aftur. Það verður keyrt á x mínus 1. Það mun koma aftur með einhverja heiltölu og þá er það mun margfalda þessar tvær saman, og það gildi verður aftur til hvað heitir þetta þáttatilraun virka, sem gæti vera annað dæmi af þetta þáttatilraun virka. Svo er þessi dæmi um endurkvæma virka, mjög einfalt endurkvæma virka. En flestir vilja vera svona. Ef þú vildi eins og góð endurkvæma skora fyrir prófið, reyna erfðaskrá Tvíundarleit undirmöppum. Vegna þess að ef þú gerðir tvöfaldur leita Heimadæmi þrjú, þú gerðir sennilega það iteratively í while lykkju. En það getur einnig verið skrifaður endurkvæmt. Þú ert að fara að þurfa að skrifa þína eigin sérstakt fall sem tekur nokkrar mismunandi stjórn-lína rök - eða ekki stjórn-lína rök, sum mismunandi bara venjulegur rök. En þú gætir skrifað tvöfaldur leit endurkvæmur eins vel. STUDENT: Svo þú gætir hafa einnig skrifað, í stað x mínus 1, þú gæti hafa einnig skrifað x mínus mínus, eða þú gætir hafa skrifað mínus mínus x. Geturðu útskýrt bara virkilega fljótt hvers vegna þá væri mismunandi hlutir, eins hvað munur er á milli x mínus mínus og mínus mínus x? JASON Hirschhorn: Nei, ég er ekki að fara inn í það. En ég mun tala við þig um það á eftir flokki. x mínus mínus mínus mínus x lækka x um 1. En þeir gera það aðeins öðruvísi. En ég vil ekki að fara inn í það. Aðrar spurningar um endurkvæmni eða þessi aðgerð? Það er í raun ekki einu sinni sauðakóðanum. Það er í grundvallaratriðum um númerið í C Þú myndi skrifa fyrir þetta. OK, aðrar spurningar um málefni upp hér? Já. STUDENT: ÉG hafa a fljótur samdráttur um fljótandi benda og nákvæmni. JASON Hirschhorn: Fljótandi benda og nákvæmni. Getur einhver virkilega hratt gefa mér samdráttur um fljótandi benda og nákvæmni? Þið öll þurft að gera þetta fyrir þinn Heimadæmi, svo þú ert allur þekkja það. Eða kannski ekki allra. Einhver? Gefa mér byrjaði blettur. Fljótandi benda og nákvæmni. Hvað er vandamálið? Já. Victoria? VANESSA: Vanessa. JASON Hirschhorn: Vanessa. Sorry. VANESSA: Það er aðeins tímabundið fjölda af tölum sem hægt er að eiga fulltrúa vegna þess að þú ert á, í okkar raunin, a 32-bita kerfi. Svo þú ert góður af að gera upp nokkrar tölur. JASON Hirschhorn: Svo er það nákvæmlega rétt. Það eru bara tiltekið magn af tölur sem hægt er að lýsa. Ef þú margfaldar tvær mjög stórar tölur, það gæti flæða magn bila sem þú þarft til að tákna heiltala. Þessi 'hvers vegna stundum notum við lengi lengi í stað int. Það hefur meira rými. Sem getur haldið stærri númer. Fleytitölu nákvæmni hefur að gera með að, en einnig þarf að gera við staðreynd að aukastaf númer eru ekki alltaf fulltrúa. Sorry. Leyfðu mér að setja þetta aftur upp. Tugatölunni 1.0 er ekki alltaf fulltrúa eins og þú vildi búast við, 1,000000000. Það er stundum fulltrúa sem 1,000000001 eða 0,999999999. Það gæti verið jafnvel 89 kastað þarna einhvers staðar. Svo þeir aukastaf númer eru ekki fulltrúa nákvæmlega eins og þú vilt búast við þá til að vera fulltrúa. Svo í Heimadæmi - var það tveir? - Heimadæmi tvö, þar sem við fjallaði fljótandi tölur benda, þegar við vildum þá að tákna nákvæmlega hvað við vildum þá til að tákna, fjölda smápeninga, eða fjöldi sent, við margfalda þá með 100. Við ávalar þeim. Og þá erum við að skera burt allt bak við kommu. Það var til að tryggja að þeir myndu reyndar jafnt nákvæmlega það sem við vildum þeim að jafna. Því þegar þú tekur eitthvað sem er A fljóta og snúa það inn í int, þú skera burt allt til hægri á kommu. Vegna þess að það er einhver fleytitölu imprecision, 100.000 gæti verið fulltrúa sem 99,999999999. Og ef þú skera bara burt allt til rétt strax, þú ert að fara að fá vitlaust númer. Já. STUDENT: Ég átti spurning um steypu. Hvaða röð er það komið í? Ef þú vilt gera fljóta, sviga, 1 skipt með 10, er það ekki 1 deilt með 10, þá fá 0,1, þá snúa það í fljóta? JASON Hirschhorn: Ef þú gerir fljóta 1 deilt með 10 - STUDENT: Já, og þá jafnt - Jæja, myndi það venjulega hafa það jafnir í - Já. Þú vilt gera það fljóta, ekki satt? JASON Hirschhorn: OK, þannig að við erum að fara að nota það til að segue inn í vangaveltur út Svörin við þessum spurningum með erfðaskrá. Þar sem þú munt sennilega hafa a einhver fjöldi af þessir mínútu spurningar og góð leið að leysa úr þeim er í gegnum erfðaskrá. Þannig að við erum að fara að kóða þetta núna, og þá erum við að fara að fara aftur og kóðann spurninguna þú hefðir. Þannig að fyrsta línan - Ég ætti ekki að hafa skrifað það - hvað er Það fyrsta sem við viljum gera þegar við opna nýtt skjal í gedit? STUDENT: Hafa. JASON Hirschhorn: Hafa hvað? STUDENT: CS50 bókasafn. JASON Hirschhorn: OK. Hvað annað ættum við að fela? Við erum bara að fara að athuga hvað gerist þegar þú kastar eitthvað að fljóta. En hvað þurfum við að fela ef við erum fara að skrifa C forrit? STUDENT: Standard I / O. JASON Hirschhorn: stdio.h. Við reyndar þurfum ekki, því að það program, cs50.h, jafnvel þó að það er alltaf gagnlegt að fela það. En við þurfum alltaf stdio.h. STUDENT: Þegar kóðun í C? JASON Hirschhorn: Þegar kóðun í C. Svo ég spara það eins og this. C skrá. Ég fæ gott setningafræði auðkenning. Ég skrifaði ógilt inni helsta. Hvað þýðir ógilt meina? STUDENT: Tekur ekki allir stjórn-lína rifrildi. JASON Hirschhorn: void þýðir, í þessu tilfelli, aðal undanskilur stjórn-lína rifrildi. Í öðrum tilvikum, þá þýðir það að virka tekur ekki stjórn-lína rök. Eða virka, ef ég væri að skrifa ógilt Helstu (tóm), sem myndi segja helstu'S ekki aftur neitt. Svo ógilt bara þýðir ekkert. Hvað myndi ég skrifa ef ég væri að taka stjórn-lína rök? STUDENT: INT hring c band boga v JASON Hirschhorn: INT argc band argv. Er það satt? STUDENT: Það er char stjörnu argv sviga. JASON Hirschhorn: Svo þú gætir skrifað band argv sviga eða bleikju stjörnu argv sviga, en þú þarft sviga. Vegna argv er fylki strengi, man. Það er ekki bara einn strengur. Svo er band argv, hér er einn strengur heitir argv. String argv sviga er, hér er fylki af strengjum. Svo int argc band argv sviga væri eitthvað sem ég myndi sennilega skrifað. Svo þú vilja til spara í heiltala? STUDENT: Já, heiltala. Eða í fljóta. JASON Hirschhorn: Í fljóta? Eins, fljóta x jafngildir 1 deilt með 10. JASON Hirschhorn: OK. Hvernig prenta ég út fljóta í printf? Hvað? STUDENT:% f. JASON Hirschhorn:% f. Hvað er heiltala? D eða i. Hvað er a band? STUDENT: s. JASON Hirschhorn: s. Hvernig fæ ég nýja línu? STUDENT: sviga n. JASON Hirschhorn: Hvað á ég aftur ef helstu keyrir rétt? STUDENT: 0. Þarf ég að skrifa þessi lína, þó? STUDENT: Nei OK, við munum ekki skrifa það, þá. Geta allir lesið það? Það lítur svolítið lítill. Geta allir sjá, eða ættu Ég gera það stærra? Ég held fyrir myndavélina, munum við gera það svolítið stærri, þó. JASON Hirschhorn: Ef ég vil að snúa þessu C. Skrá inn í executable, hvað skrifa ég? STUDENT: Gerðu próf. JASON Hirschhorn: Fyrirgefðu? STUDENT: Gerðu próf. JASON Hirschhorn: Gerðu próf. Við vorum að tala um þessa línu áðan. Clang. Hvað er clang? Nafn þýðanda. Hvað er þetta lína? STUDENT: Setur það upp fyrir notkun gdb. JASON Hirschhorn: Leikmynd það upp fyrir notkun gdb. Þessi lína, hvað er það? STUDENT: Kóðinn. JASON Hirschhorn: Það er frumskrár, c. skrá. Hvað gera þessar tvær línur gera? Eða þessir tveir ekki línur. STUDENT: hún nöfn það prófa. JASON Hirschhorn: Svo segir þjóta o, nefna það eitthvað öðruvísi. Og hér þú ert að kalla það próf. Ef ég var ekki búin að í, hvað myndi það nafn þetta? STUDENT: A.out. JASON Hirschhorn: A.out. Hvað þýðir þetta að gera? STUDENT: Tenglar stærðfræði bókasafn. JASON Hirschhorn: Það tenglar í stærðfræði bókasafn. Við vildum ekki fela í sér stærðfræði bókasafn, en þar sem það er svo algengt, hafa þeir skrifað gera að alltaf eru stærðfræði bókasafn. Og sömuleiðis, þetta felur í sér á CS50 bókasafn. OK, þannig að ef við lista, höfum við nú keyrsluskrá sem heitir próf. Að framkvæma það, ég skrifa próf. Ég sé að fljótandi lið mitt, eins og vænta, er 0. Er þessi - svo - STUDENT: Þá ef þú setur fljóta nú, eins og þú kasta á það sem fljóta - JASON Hirschhorn: Cast sem er frá 1. flotholt? STUDENT: Nei, kastaði fullt hlutur - já. Ef þú gerðir bara það, myndi að gera það 0,1? JASON Hirschhorn: í lagi, svo í raun fljótt, 1 deilt með 10, þeir eru heiltölur sem skipt er. Svo þegar þú skiptir heiltölur, þá eru þeir 0, og þú ert að vista sem 0 í fljóta, vegna þess að rista er bara heiltala deild. Svo nú erum við að beygja eitthvað í fljóta. Við skulum sjá hvað gerist. Við munum gera próf. Svo nú sjáum við að þessi skástrik var ekki heiltala deild, það var fljótandi benda deild. Vegna þess að einn af breitum hafði verið kastað að fljóta. Svo nú var að segja, meðhöndla þessa deild eins og við erum að fást við fljótandi stig, ekki með heiltölur. Og svo fáum við svar við væntum. Við skulum sjá hvað gerist - oops. Ef ég vildi að prenta meiri aukastaf blettir, hvernig gæti ég gert það? STUDENT: Point punktur F, eða eins og margir aukastafi og þú vilt. JASON Hirschhorn: Svo ég prenta 10 aukastöfum blettur. Og við nú að sjá að við erum að fá sumir furðulegur efni. Og það fer aftur til spurningunni þinni um fljótandi lið imprecision. Það er undarlegt efni geymd hér. OK, ekki að svara spurningunni þinni? Hvað annað vildirðu að kóða fljótt? STUDENT: Ég vildi bara sjá hvort ekki, ef þú leystur upp smá músina, hvort sem bendillinn enn hafði geymt í það heimilisfang hvað það hefði verið bendir til áður. JASON Hirschhorn: OK, þannig að við skulum gera það. Bleikju stjörnu PTR, þetta skapar breytu kallað PTR af taginu char stjörnu. Hvernig skrifa ég malloc? Alden? Alden: Bara malloc. En þá þarf það að vera stærð og í þessu tilfelli, ég held að þú vilt vera að benda bleikju. Svo það væri bleikju. JASON Hirschhorn: OK, svo fleiri generically, Inside - skulum breyta. Inni malloc, viltu númerið bæti á hrúga. Almennt, það sem við höfum séð að við erum gera er að við erum að fara að malloc strings, til dæmis, eða fylki af heiltölur. Þannig að ef við viljum 10 heiltölur, eða 10 stafir, 10 mun gefa okkur 10. Og þá stærð stafir myndi gefa okkur að stærð stafir, sem í þetta mál er 1 bæti. Við fáum 10 bæti. Ef við værum að skrifa stærð int, sem myndi gefa okkur 40 bæti. Svo fleiri generically, inni malloc er fjöldi bæti þú vilt. Í þessu tilfelli erum við að fá 1 bæti. Sem virðast eins og a undarlegt notkun af malloc, en fyrir okkar tilgangi vit. Svo er það það. Við erum að fara að hringja ókeypis. Við að losna við það og við notum ptr aftur. Og hvað gerðir þú vilt að athuga? STUDENT: Mig langaði bara að athuga hvort eða ekki það væri eitthvað inni af því. JASON Hirschhorn: Svo hvort það bent til nokkuð? STUDENT: Já, einmitt, hvort það hafði enn minni heimilisfang. JASON Hirschhorn: Svo þú vilt að athuga gildi PTR? STUDENT: Já, einmitt. JASON Hirschhorn: Hvað á ég að skrifa hér ef ég vil að athuga gildi í benda - hvað er, Jordan sagði, gildi? Eða hvað er geymt inni í PTR? STUDENT: A minni heimilisfang. JASON Hirschhorn: A minni heimilisfang. Þannig að ef ég skrifa bara þetta, verður það gefa mér gildi PTR. Og hvernig get ég prentað út minni heimilisfang? Hvað er band snið fyrir minni heimilisfang? STUDENT:% p. JASON Hirschhorn:% p. % S er strengur. % P á músina. Er það satt? Það er rétt. Svo jafnt PTR - það hefur samt eitthvað í það. Þetta er líklega áhugaverð spurning. Hvað þýðir þessi lína að gera? STUDENT: Seg galla. JASON Hirschhorn: Hvað? STUDENT: Ég held að það seg galla. JASON Hirschhorn: Hm? STUDENT: Ég held að það mun seg kenna. JASON Hirschhorn: Þannig að þetta lína af kóða, stjörnu PTR, hvað þýðir stjarna meina? STUDENT: Innihald. JASON Hirschhorn: Já. Fara að fá efni. Þannig að þetta er að fara að fara í minni takast það og gefa mér það. Ég notaði% c hérna vegna þess að það eru stafir geymd þar. Þannig að við ætlum að fara að þessi heimilisfang Við bara sá - eða það mun sennilega vera svolítið öðruvísi þetta þegar við hlaupa the program. En við munum fara á þetta netfang sem við vitum enn til staðar og sjá hvað er þar. Svo það var ekki seg kenna. Það kom bara ekki gefa okkur neitt. Það hefði í raun gefið okkur eitthvað, bara við getum ekki séð það. Og það fer aftur á þessa hugmynd - og við erum ekki að fara að fá of mikið inn þetta, því það er út fyrir umfang þessa námskeiðs. En við ræddum um hérna, ef við fór utan við mörk af the array af 1, gætum við ekki fá í vandræðum. Stundum, þegar þú ferð bara burt með 1, þú ert að gera eitthvað rangt, og þú gæti fengið í vandræðum. En þú þarft ekki alltaf að fá í vandræðum. Það fer eftir því hversu mikið af slæmur hlutur þú gera, þú ert að fara að fá í vandræðum. Sem er ekki að segja, að vera sloppy með númerið þitt. En það er að segja, the program vilja ekki alltaf hætta, jafnvel ef þú ferð eitthvað þú ert ekki að fara. Gott dæmi um það er, a einhver fjöldi af fólk í vanda þeirra setja 3, sem var 15, ekki að athuga mörk af borðinu. Svo þú horfði til vinstri, horfði til hægri, horfði á the toppur, horfði til botns. En þú hefur ekki stöðva til sjá ef the toppur var reyndar að fara að vera á borðinu. Og mikið af fólki sem gerði það og sneri að í, áætlun þeirra vann fullkomlega, því þar að stjórn var geymd í minni, ef þú fórst einn ofan það eða athugað að minni heimilisfang, það var ekki neitt sérstaklega hræðilegt um það, svo program var ekki fara að æpa á þig. En langar samt að taka burt stig ef þú did ekki stöðva það, af því að þér voru að gera eitthvað sem þú varst ekki ætlað að gera, og þú gætir hafa fengið í vandræðum. Stuðlar eru, þó, þú gerðir sennilega ekki. Þannig að þetta er til að sýna að, já, við getum enn farið á það. Og við erum ekki að fá í vandræði í þessu tilfelli. Ef við reyndum að gera lesa Næstu 100 stafir, við myndum sennilega fá í vandræðum. Og þú getur kóðann lesa næstu 100 stafi ef þú vilt með því að gera sumir konar fyrir lykkju. Já. STUDENT: Þar sem við vorum úthlutað að rúm raunveruleg gildi, myndum við ekki í raun að vera fær um að sjá neitt. Ættum við að reyna það með því að setja þessi jafnt er eins og C eða eitthvað? JASON Hirschhorn: Great spurning. Hvernig set ég það gildi - hvaða línu af kóða ég skrifa á netinu sjö til að gera það sem þú segir? STUDENT: Star PTR jafngildir einn vitna enda C einstaklings vitna. JASON Hirschhorn: svo það er að setja eðli, c, á þeim stað, því aftur, sem stjarna þýðir að fara á það. Og þegar það er notað á vinstri hönd hlið af framsal rekstraraðili, sem jafngildir undirrita, við erum ekki að fara að fá að gildi svo mikið sem setja þessi gildi. Nú skulum sjá hvað gerist. Við setjum eitthvað þarna og það var þar. Við kallað frjáls. Smá dót líklega gerst á hrúga. Svo það er ekki þar lengur. En aftur, við erum ekki að fá í vandræðum fyrir að fara þangað. Ég ætla að gera þetta út í kóða til að sýna að mikið af þessum spurningar sem þú hefur, þá eru þeir mjög áhugavert svara mikið af tíma. Og þeir eru í raun góðar spurningar. Og er hægt að reikna þær út á eigin ef þinn, til dæmis, við erum ekki í kafla. Já. STUDENT: Þar sem þú ert ekki að senda bendillinn hvar sem er, þú þarft að nota malloc? JASON Hirschhorn: Svo fer þetta aftur til byrjunar spurningunni þinni. [? ?] Er það bara staðbundin breytu? Malloc hér er ekki sannfærandi. Notkun malloc hér er ekki að sannfærandi því það er bara staðbundin breytu. STUDENT: Svo gastu gert bleikju stjörnu PTR jafngildir heilsa? JASON Hirschhorn: Oh. Þannig að við erum að fara að fá nú aftur til byrjunar spurningunni þinni. Ég held að þú værir ekki sáttur með svarinu mínu. OK? Svona? STUDENT: Já. Bíddu. JASON Hirschhorn: Og hvar viltu prenta út? Þannig að við munum prenta út streng svona? STUDENT: Áhugavert. JASON Hirschhorn: Svo segir þetta þetta rök gerð staf. Þannig að þetta ætti að vera eðli. STUDENT: tekur bara það fyrsta. JASON Hirschhorn: Þannig að þetta er það sem ég sagði áður. Eins og ég sagði, það er ekki að geyma band inni breytilegum músina. Það er að geyma - STUDENT: Fyrsti gildi á band. JASON Hirschhorn: Heimilisfang í fyrsta gildi streng. Ef við værum að prenta út þetta, erum við fá verðmæti inni músina. Og við munum sjá það er reyndar minni heimilisfang. Er að skynsamleg? Sorry. Bíddu, er að svara þér , þó spurning? STUDENT: Já. JASON Hirschhorn: Þessi lína af kóða er búa til band og þá annað breytilegum músina sem er að benda að þeim streng, sem array. Já. STUDENT: Svo ef við fórum einu minni takast lengra, við viljum fá h? Hefur það verið geymt sem streng? JASON Hirschhorn: Eins og við gerðum - þannig að þetta er mikils virði að gera. Þetta er lið tölur, sem þú krakkar hafa séð áður og ætti að vera tiltölulega sátt við. Þetta er svipað og að skrifa - ef við vorum að skrifa þessa línu af kóða, við höfum séð array tákn áður. Þetta ætti að gefa okkur annað gildi í þessu fylki, h. Ef við gerðum þetta, þetta ætti einnig að gefa okkur annað gildi í því fylki. Því það er að fara ekki í minni heimilisfang fyrsta hlutur, en minni heimilisfang hlutur einn yfir. Og þá stjörnu rekstraraðili dereferences sem bendi. Og aftur, við skulum sjá. Við fáum h aftur. STUDENT: Hvað nákvæmlega er dereference meina? JASON Hirschhorn: Dereference er fínt orð fyrir að fara til. Fara til að og fá það sem er þarna er að dereference bendi. Það er bara fínt orð fyrir það. STUDENT: Ef við vildum að prenta allt band, við gátum gera merkið músina? JASON Hirschhorn: OK, við erum að fara að staldra hér við. Við erum að fara að enda hér. Merkið gefur þér veffang staðsetning, þannig að þegar þú gerir merkið án af breytu, gefur það þér heimilisfangið þar sem breyta er geymt. Merkið bendillinn mun gefa þér heimilisfang PTR þar PTR er í minni. Við erum ekki að fara að fara á með þessu dæmi. Þú getur reikna út þessar hlutina á eigin spýtur. En aftur, þetta gæti jafnvel verið verging A hluti umfram það sem þú þarft að vita fyrir gildissvið þessarar miðjan tíma - eða þetta quiz, frekar. Sorry. Við erum að fara að fara, vegna þess að ég vildi eins og að gera einn kóða vandamál áður en tíminn er upp. Og við erum að fara að kóða það sem ég held er mest sannfærandi af þessum dæmi, atoi. Þannig að þetta var spurning um spurningakeppni fyrir tveimur árum. Og ég hef það á borð hér. Fólk var spurt á spurningakeppni - þeir fengu aðeins meiri tesxt í spurningin, en ég útrýma texti vegna þess að það var óþarfa fyrir tilgangi okkar núna. Það var bara einhver bakgrunnur á hvaða atoi gerði. En þú veist allt og eru mjög þekki atoi. Ég legg til að þú kóðann þetta á blaði. Ég legg líka að nota stefnu að við höfum farið yfir mikið í kafla okkar. Fyrst skaltu ganga úr skugga um að þú skiljir gera það atoi er. Teikna mynd eða koma upp með sumir andlegt mynd af því í höfðinu á þér. Næst skaltu skrifa út sauðakóðanum fyrir þetta. Á spurningakeppni, ef það eina sem þú færð er sauðakóðanum, að minnsta kosti þú setja eitthvað niður. Og þá kort sem sauðakóðanum á C. Ef þú ert með ávísun í þinn sauðakóðanum, eins athuga hvort eitthvað er 1, sem varpar á if ástand og svo framvegis. Og að lokum, kóða forritið í C. Svo fara aftur til atoi og taka fimm mínútur að kóða þetta á blaði pappír, sem er líklega um að Tíminn sem þú myndi taka á quiz til að kóða atoi. Fimm til 15 mínútur, fimm til 12, fimm til 10 mínútur, er um magn skipti sem þú vilt eyða í þetta spurning í spurningakeppni. Svo taka fimm mínútur núna. Og ef þú hefur einhverjar spurningar, hækka hönd þín og ég kem í kring. [AUKAVERKANIR samtöl] JASON Hirschhorn: OK, svo sem var fimm mínútur. Það var líklega um fjárhæð skipti sem þú vilt eyða í að á spurningakeppni, kannski lítil hætta á þeim tíma. Við munum ágrip í bita. Leyfðu okkur að byrja kóðun þetta. Og ef við komumst ekki alla leið í gegnum, Svörin við þessari og þetta quiz spurning eru í boði, aftur, Fall 2011 er þegar þessari spurningu birtist á spurningakeppni. Og það var þess virði átta stig á spurningakeppni þá. Átta stig er á hár endir af magn af punktum eitthvað er þess virði. Flestum spurningum eru á bilinu af 1-6 stig. Þannig að þetta er meira krefjandi , fyrir viss spurning. Getur einhver fá mig byrja? Almennt, hvað við erum að fara að vilja að gera með þetta virka atoi, rökrétt? Hvað viljum við gera? Þannig að við erum að fara að skrifa sumir sauðakóðanum. STUDENT: Breyta stöfum í heiltölur. JASON Hirschhorn: Breyta stöfum í heiltölur. OK. Svo hversu margir stafir eru við að fara að þurfa að fara í gegnum? STUDENT: Öll þau. STUDENT: Allar persónurnar í band. JASON Hirschhorn: Allar stafir í strengnum. Þannig að ef við vildum fara í gegnum hvert staf í streng, hvað er málið í C við höfum séð sem hefur gert okkur að fara í gegnum hvert staf í streng? NEMENDUR: A til hliðar. JASON Hirschhorn: A til hliðar. Þannig að við erum að fara að renna í gegnum Sérhver persóna í s. Þá hvað við erum að fara til að vilja gera þegar við komum fram tiltekinn staf? Segja að við erum að fá staðist 90. Við fáum 9. Það er karakter. Hvað viljum við að gera með að eðli 9? STUDENT: Draga hana úr karakter 0? STUDENT: Bæta 0? JASON Hirschhorn: Draga það úr eðli 0? STUDENT: Já. JASON Hirschhorn: Hví þú vilt gera það? STUDENT: [inaudible] gildi. INT gildi þess. JASON Hirschhorn: OK, svo við tökum að eðli 9, draga það frá eðli 0 á að fá Raunveruleg heiltala 9. Sætur. Og hvernig veistu þessi karakter 9 mínus 0 eðli er 9? Hvaða mynd fórstu að líta á? STUDENT: Það eru rökrétt níu Staðir milli 9 og 0. Eða þú getur litið á ASCII töflunni. JASON Hirschhorn: ASCII töflunni. En já, þú ert rétt eins og heilbrigður. Þannig að við drögum 0. Svo nú höfum við heiltölunni 9. Og hvað við viljum gera við það? Ef við höfum 90, er það fyrsta heiltölu við höfum, hvað við viljum gera? STUDENT: Ég myndi setja í tímabundið heiltölu array, þá gera stærðfræði til að það síðar til að gera það inn í enda. JASON Hirschhorn: OK. STUDENT: Þú getur byrjað í lok array og flytja síðan áfram svo að í hvert skipti sem þú færir fram, þú margfaldar það með 10. JASON Hirschhorn: OK. Það hljómar eins og a laglegur sannfærandi hugmynd. Við getum byrjað í lok array okkar, og við getum notað strleng. Við getum notað strleng hérna. Við munum fá lengd band okkar. Við byrjum í lok. Og + þá fyrstu, tökum bara það heiltala, og kannski við að búa eins og Ný heiltölubreytu upp efst þar við erum að geyma allt. Þannig að við lykkja í gegnum alla bleikju í s frá til baka á forsíðu, draga við 0, og þá erum við að taka hana, og eftir þar sem það er, margfalda við það með krafti 10. Vegna þess að fyrsta, hvað gerum við margfalda rightmost stafinn með? STUDENT: 10 til 0. JASON Hirschhorn: 10 til 0. Hvað eigum við margfalda seinni rightmost eðli með? STUDENT: [inaudible]. JASON Hirschhorn: Hvað? STUDENT: 10 til 1. JASON Hirschhorn: 10 til 1. Þriðja-rightmost eðli? STUDENT: 10 til 2. JASON Hirschhorn: 10 til 2. STUDENT: Sorry, ég skil ekki hvað við erum að gera hér. JASON Hirschhorn: OK, við skulum fara aftur, þá. Þannig að við erum að fara að fá liðin í streng. Þar sem við erum að skrifa atoi. Þannig að við fá liðið í streng. Segja að við erum að fá samþykkt í band 90. The fyrstur hlutur sem við erum að fara að gera er að stilla ný heiltölubreytu sem við erum bara að fara að búa til sem nýja heiltölu okkar. Það er það sem við erum að fara til að fara aftur í lokin. Við þurfum að fara í gegnum hvert staf í band vegna þess að við höfum ákveðið að við þurfum að snerta hvert og eitt og þá bæta við það til nýja heiltölu okkar. En við getum ekki bara bæta við það sem tala. Við getum ekki bara tekið 9 og bæta 9 við heiltölu okkar. Það fer eftir því hvað staðurinn það er í band. Við erum að fara að þurfa að margfalda það með krafti 10. Því það er hvernig stöð 10 verk. Þannig að við erum að fara að fá raunverulegt eðli, eða í raun tala númer, með því að draga karakter 0 frá eðli 9 eins og við gerðum með draga staf Capital frá hvað eðli sem við höfðum í einni af þeim vandamálum. Þannig að við munum í raun að fá númer frá 0 til 9 vistað sem alvöru tala, og við munum margfalda það með krafti 10 eftir á því hvar við erum í band. Og þá ætlum við að bæta við það til baka í nýja heiltölu breytu okkar. Svo er það þetta myndi líta út eins og væri vera - við munum draga hérna. Ef við fá liðið í band 90 - STUDENT: [inaudible]. JASON Hirschhorn: En atoi tekur streng. Þannig að við ætlum að fara í gegnum bújörðinni. Við munum fá liðið í 90. Við förum frá aftan að framan. Við tökum 0. STUDENT: Fyrirgefðu. Kannski er þetta heimskulegt. Ef við erum að fá samþykkt í streng, Hvers vegna er 90 það sem við erum fá staðist í? Vegna þess að 90 er heil tala. JASON Hirschhorn: Vegna atoi tekur band og snýr það inn í heiltölu framsetning strengsins. En strengur 90 er ekki heiltala 90 eða fjöldi 90. Band 90 er fylki af tveimur eða þrír stafir, heldur er 9 eðli, 0 eðli og að sviga 0 staf. Og við erum að skrifa atoi því fyrir dæmi, þegar þú tekur stjórn rök lína, og það er vistað í argv, það er vistað sem band. En ef þú vilt að meðhöndla það eins og a tala, þú þarft að umbreyta það til að Raunveruleg heiltala. Sem við gerðum einn af setur okkar vandamál. Sem við gerðum í fjölda setur vandamálið okkar. Allir sem tóku heiltölu sem stjórn lína rifrildi. Svo að hvers vegna atoi virka okkar tekur streng. Svo aftur, í dæmi okkar hér erum við að fara að taka það síðasta. Við ætlum að draga karakterinn 0 af því, vegna þess að stafirnir 0 dreginn af eðli 0 gefur þér miðað við raunverulegan fjölda 0, í samræmi við The ASCII stærðfræði sem við gerum. Vegna stafir eru fulltrúa sem öðruvísi en raunverulegt þeirra - staf, til dæmis, lágstafir A er 97. Það er ekki - oops! Það er ekki hvað þú vildi búast við það til að vera, 0, til dæmis. Svo þú verður að draga staf að fá 0. Þannig að við erum að fara að gera það hér til að fá raunverulegan fjölda. Og þá erum við að fara að margfalda það með A máttur af 10 eftir því sem þær er í band, og síðan taka það og bæta því við stað handhafa okkar breytu svo við getum komið upp með Endanleg nýjum okkar heiltala. Er að vit að öllum? Þannig að við erum ekki að fara að kóða þetta núna, vegna þess að við erum fá til skamms tíma. Ég biðjumst velvirðingar á tímasetningu þess. En þetta er það, vonandi, þú myndir að vera fær um að gera á prófi - á kosti, fá þessa sauðakóðanum skrifað út. Og þá, ef við vorum að skrifa á sauðakóðanum, reyndar væri þetta laglegur fljótt. Hver lína athugasemdir við við skrifuðum hér þýðir að um ein lína af C kóða. Lýsa nýja breytu, skrifa lykkja, sumir frádráttur, sumir margföldun, og sumir verkefni. Við myndi líklega einnig vilja til skrifa aftur línu. Við gætum einnig vilja til að setja nokkrar athuganir í hér. Já. STUDENT: Svo getum við förum s eins og the raunverulegur band? Vegna þess að ég veit að það er bara verið heimilisfang. Eins og, hvernig myndir þú fá lengd band berist í gegnum? JASON Hirschhorn: Svo hvernig did lengd streng? Strlen. STUDENT: strlen, já. En getur þú sett s sem rök fyrir því? JASON Hirschhorn: Svo strlen tekur bleikju stjörnu. Og það segir að bleikju stjörnu, og það heldur telja þangað til það fær að sviga 0. strlen var í raun einn af öðrum áætlunum sem við voru að fara að kóða. Það er önnur góð til að kóða. Það eitt er svolítið auðveldara, vegna þess að ef þú ert að fara að hugsa um að eðli - Ég sagði bara það upphátt - strlen segir bendillinn og heldur áfram og telja og halda utan fyrr en þú nærð sviga 0. STUDENT: Ég skil. JASON Hirschhorn: Svo bestur af heppni á spurningakeppni 0 á morgun. Ef þú hefur einhverjar spurningar, ég vera úti eftir þetta. Feel frjáls til email mig. Ná til eigin TF ef þú ert ekki í kafla mínum, eða fá minn email ef þú vilt það. Ef þú vilt að Freak út og bara að senda mér tölvupóst, sem freakout email, ég senda þér aftur, eins og, broskarl andlit, eða, eins og brandari eða eitthvað. Svo ekki hika við að gera það eins vel. Gangi þér vel aftur, og ég mun sjá ykkur öll í næstu viku.