JASON Hirschhorn: Velkomin, allir, að viku 6. Ég er fús til að sjá ykkur öll á lífi og vel eftir Quiz 0, vegna þess að ég veit að var dálítið gróft. En sem betur fer, er allt gerði ótrúlega vel. Og svo er það dásamlegt. Ef þú ert í kafla mína, hef ég gefið mest af þér aftur Skyndipróf nú þegar. A par af þér, ég er að hitta eftir tegund. Og ef þú ert í framhaldi nemandi og þú hefur ekki fengið prófið aftur enn, TF þinn er sennilega að vinna á það og yfirferð það, og vilja fá hana aftur til þín fljótlega. Svo eftirnafn nemendur mínir sem eru horfa núna - vonandi lifa - Ég mun fá Skyndipróf skömmu eins vel. Dagskrá okkar í dag er sem hér segir. Fyrst, við erum að fara að fara yfir og auðlindir sem CS50 veitir þér. Við ætlum að fara yfir Quiz 0 næst, og Ég svara öllum spurningum neinn hefur um sérstök vandamál. Og þá munum við vera að fara yfir skrá I / O og Heimadæmi 5. Þeim síðustu tvo hluti mun taka upp megnið af kafla í dag. Ég setti þessa lista upp í hverri viku sem áminning til ykkar allra, en af ​​kjarna kafla, höfum við aðeins 90 mínútur - við eru ekki fær um að ná allt sem ég myndi elska að ná ykkur. En við höfum tonn af auðlindum fyrir þú að teikna á eins og þú fá að vita efni og vinna með vandamál þitt setur. A áminning um að ég hef á netinu texta kassi, setja upp fyrir þig til að fylla út ef þú hefur einhverjar athugasemdir um mig, bæði jákvæð og uppbyggjandi, um kafla. Að slóðin er rétt niður hér. Svo skaltu taka a augnablik ef þú hefur einhverjar viðbrögð, hvort við kafla, eða eftir, eða eftir að þú horfa á vídeó á netinu, til að gefa mér álit þitt. Ég þakka virkilega allir og allt það. Þannig að ég hef verið að hafa lítil samtöl með fullt af mínum nemendur alla vikuna - og ég hendi aftur Skyndipróf, tala um Auðvitað sjá hvernig þú ert að gera. Og eitt þema hefur komið upp aftur og yfir í að tala um - í einkum - vandamál setur. Og ég hef encapsulated að þema á borð núna. Í meginatriðum, það er munur milli beygja í eitthvað sem er gert á réttan hátt og eitthvað sem vel er gert. Flestir hafa verið að gera frábær hvað varðar nákvæmni - 5 eða 4 er á öllum psets. Flestir eru að fá þá allan tímann. Hins vegar, bara vegna þess að þú hefur gert eitthvað rétt þýðir ekki að þú hafir gert eitthvað sem glæsilegur, eða skilvirkan hátt, eða eins eðlilega og þú hefði getað gert það. Og það er það sem hönnun - og í minna mæli, stíl - ása eru fyrir. Svo er ég að ýta þér allt, og önnur TFS eru að þrýsta ykkur, að ekki aðeins snúa í hlutum sem eru rétt, en snúa í þeim hlutum sem eru á dulmáli vel. Ekki að gera óþarfa fyrir lykkjur, ekki reikna breytur ef það þú þarft ekki að. Til dæmis, að leita aftur til Heimadæmi 4, þegar setja múrsteina á skjár, hver róður - hvert múrsteinn í gefið röð hefur sömu þýðingu og y-hnit - í sömu hæð samræma. Svo að y-hnit þarf ekki að reiknast inn í innri hreiður fyrir lykkju sem þú notaðir líklega að setja þær múrsteinn á skjánum. Það þarf bara að reikna á hverjum tími til þú skiptir röð, eða flutti niður röð. Svo segja ef það eru 10 múrsteinn í róður, hvert múrsteinn er hægt að hafa sama y-hnit og að y-hnit getur bara verið reiknað eitt skipti fyrir öll af þeim. Það þarf ekki að reikna 10 sinnum, né heldur að útreikningur þörf að gerast í raun Virka Hringja - nýja gracked virka símtalinu. Þannig að ef það var dálítið ruglingslegt fyrir þú, meira generically, það sem þurfa ekki að gerast í hvert einasta skipti þú ferð í gegnum for lykkju ætti ekki að vera setja inni í for lykkju, og ætti ekki að gerast í hvert skipti sem þú ferð gegnum for lykkju. Önnur góð hönnun dæmi sáum í 3. viku í 15, getur þú haldið utan um núll. Svo þegar þú frumstilla borð, þér spara - í alþjóðlegum breytu, kannski - X og Y-hnit núll. Og þá þegar þú - Færa fallinu þínu, þegar þú gerir vel færa, þú uppfærir staðsetning núlli. Það myndi spara þér frá að þurfa að gera hreiður fyrir lykkjur að líta í gegnum borð á hverjum tíma færa fallinu þínu og finna núll, eða finna flísar, og þá athuga hvað er við hliðina á henni. Í staðinn, þú um staðsetningu núll, getur þú bara líta ofan, neðan, og til vinstri og hægri á því, að finna spjaldinu sem þú varst að leita að. Svo í skilmálar af the programs við erum að skrifa, eru þeir aldrei nógu stór að sumir þessara hönnun ákvarðanir ert virkilega að fara að karfa þín program, eða gera það að keyra hægar, eða kannski jafnvel keyra út af minni. En við erum enn að ýta ykkur að skrifa eins glæsilegur og skilvirk kóða og hægt er. Þannig að ef þú endar að skrifa hlutina sem hafa verulega stærri umfang, þeir vilja vera skrifuð með gott hönnun auk þess að vera rétt. Svo a tala af þú hefur leiddi það út. Það er eitthvað sem við erum að leita að - eitthvað sem við erum að fara að halda áfram að ýta ykkur á. Ef þú hefur einhvern tíma einhverjar spurningar um hönnun program, ekki hika að ná til út til mín, og ég er fús til að ganga með forritinu með þér, og benda á sumir af the hönnun ákvarðanir sem þú gerðir, og gefa þér uppástungur um hvernig á að gera jafnvel Betri hönnun ákvarðanir. Þannig að við erum að fara að flytja á að tala um Quiz 0. Áður en við gerum það, er einhver hefur einhverjar spurningar um hvað Ég hef fjallað svo langt? [Rustling Hávaði] JASON Hirschhorn: Sjö sekúndur. OK. Við skulum tala um Quiz 0 fyrir a hluti. Flest ykkar hafa prófi 0 er kominn aftur. Ef þú ert ekki, vonandi þú manst það aðeins. En ef þú hefur tekið próf 0, þá einnig hafa aðgang að PDF netinu í sýnið lausnir. Hefur einhver hefur einhverjar spurningar áður en við stökk inn efni í viku um einkum vandamál á Quiz 0 - hvers vegna svarið er hvað það er? Er einhver rugla um eitthvað? Jafnvel ef þú got the vandamál rétt, en bara langar mig til að útskýra það aðeins meira, ég er fús til að gera það núna. Svo ég hef spurt ykkur að koma undirbúin með nokkrum hugsanir um Quiz 0. Svo sem langar til að fá okkur byrjaði með spurningu eða comment um Quiz 0? [PAPER rustling] JASON Hirschhorn: Ekki allir gerði fullkomlega. Þannig að ég veit [Hlær] Það verða að vera nokkrar spurningar um Quiz 0. OK. Já. Ompica. OMPICA: Number 10. JASON Hirschhorn: Number 10. Hver einn var númer 10? OMPICA: The - JASON Hirschhorn: Ég haven't - OMPICA: The fela - JASON Hirschhorn: Number 10 var átta til i - skrifa átta til i? OMPICA: Já. JASON Hirschhorn: OK. Svo önnur spurning sem þú gætir hafa spurði var ég Prescient? Svarið er já. Í kafla áður en prófið spurði ég þú krakkar að kóða bæði Sterling og átta til i. Bæði af þeim gerðist birtast á spurningakeppni. Svo vonandi, sem greidd athygli á því. Og ef þú hefðir, þá hefði sennilega gert vel á þessum tveimur. En átta til i, við gerðum í raun ekki númer það í bekknum, en það var, aftur, spurði um spurningakeppni. Svo a par af hlutum til að taka huga þegar erfðaskrá átta til i. The fyrstur hlutur, á spurningunni, var að þú þurftir að athuga ef strengurinn var jöfn null. Tveimur fólk reyndi að stöðva síðar í áætluninni ef s krappi ég var - svo sérstakur karakter í því band - var jöfn null. En mundu, að null er í raun - það er gott að hugsa um null sem núll bendiprik - bendi á núll - einhvers staðar í minni þar sem þú getur aldrei aðgang. Svo er ef eitthvað jafn null, þú veit að það hefur ekki verið forsniðin, eða það er ekkert þar. Svo er s char stjarna, s krappi ég er bleikja. Svo gerir það vit í að bera saman s að null, en ekki s krappi ég að null. En aftur - svo það var það fyrsta sem sem þú varst að gera - athuga að ganga úr skugga um að þú í raun og veru fékk alvöru band. Næstur, þú vildir fara í gegnum Hver stafur í streng. Og svo það væri eins og s krappi Ég, til dæmis, ef ég er Iterator þinn. Og taka þessi karakter, og fá raunverulegt gildi þess. Þú hefur það geymt sem char, en The ASCII gildi fyrir núll - núll og staf - er í raun ekki heil tala núll. Það er einhver önnur tala sem þú getur líta upp í ASCII töflunni. Svo ein leið til að leiðrétta það - líklega besta leiðin til að leiðrétta fyrir sem - er draga úr því eðli gildi - núll og staf. Svo mínus einn vitna, núll, aðra smáskífu vitna. Það mun taka hvað númerið sem þú hefur eins og char, og fá það jafn fjöldi sem raunveruleg heiltölu. Og það er mjög líkur til the aðferð fullt af fólki tók í Vandamálið sett 2, með keisaranum og Viginere - þessir dulmál, þegar þú voru að snúa þeim. Svo eftir að þú ert það sem tala frá núll til níu, þá - eftir þar sem það fer í fullkominn númer - þú þarft að margfalda það með krafti 10. Sumir flutt úr aftur til framan, og margfaldað einstaklinginn tala með krafti 10. Sumir flutt frá framan til baka - og svo tók hæsta panta tölur fyrst - og myndi spara þeim í alþjóðlegt gegn breytu. Og þá hvert skipti í gegnum FOR lykkja, margfalda það risastór heimsvísu gegn breytu af 10, til að gera pláss fyrir næsta char. Svo það var svolítið ruglingslegt án mér að skrifa það á borðinu. En úrtaki lausn er í boði fyrir þig. En þeir voru stór hluti við vorum að leita að. Einnig stöðva til að tryggja að hver sérstæð var örugglega eðli milli núll og níu, og ekki einhver önnur persóna, eins og A, til dæmis. Þeir voru hlutir sem við vorum að leita um í þeirri spurningu. Er að svara spurningunni þinni? OMPICA: Já. JASON Hirschhorn: OK. Eru einhverjar aðrar spurningar um Quiz 0? Hvað um söfnun? Allir saman ekki satt? Nei Það voru - [Hlær] Einhverjar spurningar um samantekt aðferð? Vá. [PAPER rustling] JASON Hirschhorn: Já. Michael. MICHAEL: Er númer 7 - handahófi? JASON Hirschhorn: Númer 7. Númer 7 var að fá handahófi heiltala. Excellent. Svo þú ert að gefa heiltölu a og heiltala b, og þú vilt af handahófi heiltala á milli a og b. Við getum í raun skrifa þetta einn á stjórnin, vegna þess að þetta eitt var ein lína af kóða - ein leið til að gera það. Þannig að við erum gefið drand sem virka við gætum notað. Og hvað þýðir drand - miðað við það er verið sáð - hvað þýðir drand aftur? MICHAEL: A fljóta milli 0,0 og 1,0. JASON Hirschhorn: Ýmis - já. A tala á milli 0 og 1. Og svo höfum við B-og A. Og þá höfum við handahófi númer okkar milli 0 og 1 gefið okkur drand. Sumir reyndu að hafa B, eða b mínus A, eða eitthvað inni þá sviga. Það myndi þýða að þeir séu rök til þessa aðgerð. drand tekur ekki neinar röksemdir - eins getString gerir ekki taka nein rök. Svo er það bara að opna paren, nærri paren - og það sjálft, er virka símtalinu. Og það gefur þér fjölda á milli 0 og 1 er. Að sjálfsögðu höfum við allt svið að tölur geta vera inn Segja, ef B er 10 og A er 5, sem við raunverulega langar að tala með ýmsum 5. Svo er næsta hlutur sem við þurfum að gera margfalda þetta með svið b mínus. Svo miðað við að margfaldað. Og það mun gefa okkur númerið innan tiltekins svið. Og að sérstakur svið vera munur milli B mínus. Og að lokum, það verður bara að gefa það frá - segja á bilinu milli B mínus er 5, sem mun gefa okkur tala frá 0 til 5. En ef a er í raun 5, þurfum við að efla þetta svið allt að þar sem það er ætlast í raun til að vera, með því að bæta a. Svo fær að rökfræði rétt. Og þá, myndir þú hafa önnur spurning? MICHAEL: Nei Mér finnst bara virkilega heimsk núna. [Hlær] JASON Hirschhorn: Nei Ekki finnst virkilega heimsk. A tala af fólk í erfiðleikum með þessari spurningu. Og þá, hinn spurningin er, drand, þú sagðir, gefur þér fljóta - skilar fljóta. En þessi aðgerð í raun spurt fyrir heiltala að koma aftur. Þú þarft ekki að varpa afdráttarlaust heiltala, vegna þess að þessi aðgerðir munu meðhöndla það eins og allt a fljóta - sem fljótandi lið númer. Eins og þetta mun - jafnvel ef þetta er heil tala, þetta mun að margfalda rétt. Allt margföldun vilja vinna. Þú þarft ekki að reka hann hér. Í raun ættir þú ekki kastað henni. Sem myndi - ef þú vildi varpa númer sem er á milli 0 og 1 - A handahófi númer fljótandi lið - þá mun það annað hvort að vera aðeins 0 eða 1, þannig að þú munt missa öll þessi nákvæmni. En í lok, þegar þú kemur aftur, það gerist sjálfkrafa sendur til baka sem heiltala. Svo þú þarft ekki að gera það að greiða sjálfur. Svo var þetta ekki svar við þessi spurning, númer 7. Aðrar spurningar um Quiz 0? Já, Annie. Annie: Hvenær eigum við að nota endurkvæma - þegar notum endurtekningu lykkjur? JASON Hirschhorn: Þegar þú notar endurkvæma - svo almennt, að Kostir og gallar af endurkvæmni móti endurtekningu nálgun. Getur einhver bjóða upp á Pro eða sam? Vinsamlegast? Ekki getur hver sem er. Sem getur boðið upp á Pro eða sam? [PAPER rustling] STUDENT 1: Endurkvæm er minna erfðaskrá - minna slá? JASON Hirschhorn: Svo almennt, endurkvæmni sérstaklega, ferii sem er - eða reiknirit eins sameiningu Flokka - sem lánar sig til endurkvæma aðferð - gæti verið meira augljóst að kóða endurkvæmt. Og bara gera meira vit að gera það í undirmöppum. Svo það væri atvinnumaður að endurkvæmni. Öðrum? Já? STUDENT 2: Con að endurkvæmni - Það notar meira minni. JASON Hirschhorn: Svo nákvæmlega rétt. A endurkvæma virka mun halda að bæta stakkur ramma til að stafla. Þannig að ef þú ætlar að starfa á fullt af tölur, og verða að kalla þetta virka mikið, þá munt þú örugglega taka upp meira minni, en endurtekningu nálgun mun setja eitt stafla ramma á mánudaginn, vegna það gerist allt innan virka. Allar aðrar kostir og gallar? Já. STUDENT 3: Kostir fyrir endurkvæmni. Þú þarft ekki að ákveða í fara hversu oft númer þurfti að endurtaka. Hægt er að hafa fyrirfram ákveðinn fjölda sinnum að þú þarft að iterate, þá endurkvæmni er betri, vegna þess að það tekur að niðurstöðu. JASON Hirschhorn: Ég held það er satt. En ég held að í báðum tilfellum Þú myndir aldrei - þú vildi sennilega fá sumir skilaboðum frá notanda. Eða þessi aðgerð myndi hafa sumir inntak sem myndi ákvarða hversu oft það ætti að keyra. Svo almennt, þú myndir ekki harður kóðann - jafnvel í endurtekningu nálgun - hvernig oft að lykkja ætti að hlaupa. Vissir þú hafa annað sem þú varst hugsa um, Annie? OK. Þeir eru líklega tveir - stærsta atvinnumaður og stærsta sam að endurkvæma móti endurtekningu nálgun. OK. Eitthvað annað á Quiz 0? Skulum fara. Skrá I / O. Það er yndislegt stutt í þessari viku á skrá I / O sem vonandi Þú hefur horft margfeldi sinnum, og dáðist. A einhver fjöldi af vinna fór í það, og ég hef heyrðu það er geðveikur gagnlegt. Ég hef líka tengil á þessa mynd, ef þú hefur ekki haft tækifæri til að horfa á það 10 sinnum. Svo erum við að fara til stuttlega farið yfir Helstu skref til að opna og vinna með skrár, og þá erum við að fara að kafa í erfðaskrá vandamál áður skoða Heimadæmi. Svo aftur, ég ætla að setja þetta upp á skjánum, en ég ætla að tala um bara eina mínútu um það sem við erum gera hér með skrá I/O-- hvað þýðir það? Það þýðir að við getum búið til okkar forrit, og þá hafa áætlanir okkar brottför, og ekki hafa gert nein áhrif á heimurinn utan kerfis okkar. En þegar við byrjum að vinna með skrár - bæði lesa þær í og ​​skapa þá - við getum haft einhver áhrif á heimurinn utan kerfis okkar. Rétt eins og ef Microsoft Word gat ekki að gera neinar Word skjöl, þá þegar Microsoft Word hætta, öllum þínum yrði farið, og það væri virkilega vera gagnslaus. Við viljum að lokum vera fær um að skrifa forrit sem geta haft áhrif á heimurinn í kringum þá, bæði með því að taka í flóknar inntak - í skilmálar af skrá og um skrá, og einnig að skapa áhugavert og sannfærandi framleiðsla - að því er varðar mismunandi gerðir af skrá. Svo það er þess vegna sem við erum farin að læra hvernig á að vinna með skrár. Nánar tiltekið, það sem við gerum er sem hér segir. Það er mjög einfalt. Það eru aðeins nokkur skref, og þau eru skráð hér á þessum kóða. Þannig að við ætlum að fara í gegnum þetta línu fyrir línu. Fyrst, þú sérð hápunktur - þegar þú ert að vinna með skrá, Óháð því hvaða gerð af skrá er það, þú þarft til að opna hana. Og það er með símtali til fopen - hérna. Þú setur nafnið á skránni. Ef skráin er ekki í möppuna, eða möppuna þar sem þetta forrit líf, þá þarftu líka að fela vörðuð leið að þar sem skrá er. Við erum að fara að gera ráð fyrir að þetta skrá sem heitir "text.txt" - einfaldur texti skjal - er í sömu möppu og þetta forrit er. Svo það er annar hlutur til viðurværi í hugur - að ef þú vilt að opna skrá annars staðar, þú þarft í raun og veru að fela staðsetningu hennar. Í öðru lagi, getur þú standast rök fopen, og það er það sem þú vilt gera með skrárinnar. Það eru þrjár helstu rök að þú ert að fara að fara að fopen. Hver getur gefið mér þessar þrjár? Hver getur gefið mér einn af þeim? Já. STUDENT 4: The skrá nafn? JASON Hirschhorn: Því miður. Þrjár rök þú getur framhjá sem annað rök að fopen. Þú ert rétt - skrá nafn er fyrsta rifrildi. En seinni rök að fopen eru almennt þrjár strengjum, og - já. Aleja. ALEJA: A til endingin. JASON Hirschhorn: A, ef þú vilt að bæta við skrá sem er þegar til. STUDENT 5: R til að lesa. JASON Hirschhorn: R, ef þú vilja til að lesa úr skrá. STUDENT 6: W fyrir skrifa. JASON Hirschhorn: Og w, ef þú langar til að skrifa í skrá. Svo í þessu tilfelli erum við að skrifa að skránni, þannig að við höfum w. Þú opnar það, hefur þú einnig að vista skrá einhvers staðar, og það er með kóða til vinstri hönd hlið af framsal rekstraraðili - Ég er að stofna bendi til a skrá heitir, í þessu tilfelli, skrá. Við erum ekki að fara að hafa áhyggjur hvað þetta ALL Paprika FILE hlutur er. Látum nægja að segja, er það löngu straum af núllum og sjálfur. Og það er hvernig við ætlum að reka það og skilja það. The næstur hlutur sem við þurfum að gera - og þetta er ótrúlega mikilvægt - þegar þú opnar skrá - Í raun, þegar þú kallar malloc, fyrir dæmi, og fá sumir minni og reyna og vista það í bendi, þú alltaf vilja til að athuga til að tryggja að þessi aðgerðin skilaði ekki null. Þannig að í þessu tilviki, við erum að stöðva til að gera viss um að við opnuðum í raun skrá rétt, og það var engin villa í kerfi okkar. Næst, þegar við höfum athugað til að tryggja að við höfum að vinna skrá, getum við skrifa til, eða lesa, eða bæta við skrá. Í þessu tilviki, Ég er einfaldlega prentun ein lína í þessa skrá. Hvernig veit ég það? Jæja, ég ætla að nota þessa aðgerð kallað fprintf. Allar aðgerðir sem þú verður að nota þegar þú skrifar að, eða lesa af, eða notfæra skrár verður svipað aðgerðir sem þú hefur séð áður, en byrja á stafnum F, standa fyrir skrá. Og fprintf, ólíkt venjulegum prenta okkar app, tekur einn til viðbótar rök, og það er skrá þar sem þú vilt prenta þessa línu til. Ég hef ekki neitt að rétt ohai. Ég hef ekki þriðja rök að printf - eða annað rök að printf, sem Þriðja röksemd að fprintf, því ég ekki hafa allir staðgengla hér. Ég er ekki þar á meðal einhverjar breytur. En aftur, fprintf og öll þessi skrá aðgerðir sem starfa með skrár eru almennt að fara að þurfa að skrá sem þeir vinni. Að lokum, síðasta mikilvægur hlutur til gera er að loka skrá, rétt eins og með - þegar við malloc eitthvað, við viljum að losa eitthvað, svo að við hafa minni leka - við viljum að loka skrá okkar. Ef þetta forrit lauk án þess að loka skráin, eru líkurnar ekkert myndi fara rangt, sérstaklega ef það var lítil skrá. En það er vissulega gott erfðaskrá stíl og æfa alltaf loka skránni þinni þegar þú ert búinn að nota hana. Svo er þessi grunnatriði skrá I / O. Þú hefur sennilega séð það áður, eða horfði á það í þeirri frábæru stutt. Hefur einhver hefur einhverjar spurningar, áður en við förum í einhvers æfa forritun vandamál, um skrá I / O eða skref ég fór bara yfir? [Vélritun Hljómar] JASON Hirschhorn: Ert þú hafa a spurning, AVI? AVI: Nei JASON Hirschhorn: OK. Ég ætla að bíða annan sjö sekúndur. [Hlær] Sem er mjög góð ábending. Þið bara ekki eins spyrja spurninga. Það er allt í lagi. OK. Svo fyrsta æfa vandamál, við erum fara til afrit virkni a stjórn lína tól sem þú sennilega notað áður - eintak - afrita tól. Ef þú slærð CP og þá fara framhjá það tveir rök í flugstöðinni, þú getur afrita skrá. Og það er það sem við erum að fara til að skrifa núna. Svo aftur, lesa burt af þessum renna, myndi ég þér að skrifa forrit sem tekur tveir og aðeins tveir stjórn-lína rök - uppspretta skrá og áfangastað skrá - og afrit innihald af the uppspretta skrá til áfangastaðar skrá eitt bæti í einu. Svo það er mikið að biðja um. Again, góð aðferð til þessa er að ekki fara beint til the C kóða, en brjóta það niður í nokkur skref. Fyrst, hugsa um rökfræði - einmitt það sem ég er að biðja þig að gera - og skilja allt í skref á þessu vandamáli. Ekki í C, bara í sumum sauðakóðanum, eða jafnvel andlegt líkan af hvað er að gerast. Næst, þegar þú hefur sauðakóðanum niður, reikna út hvernig sauðakóðanum kort inná verkfæri og hlutir sem við höfum lærði að nota í C. Og að lokum, þegar þú hefur allt sem saman, getur þú kóðann vandann. Tekið 5 til 10 mínútur að vinna á þessu vandamáli. Ég set leiðbeiningunum aftur upp í annað. Og þá erum við að fara að fara yfir á sauðakóðanum og númer það lifa sem hópur. Ef þú hefur einhverjar spurningar á meðan þú ert vinna á þessu, ekki hika við að hækka hönd þín, og ég mun koma um og svara þeim. STUDENT 7: Get ég högg a stykki af pappír? JASON Hirschhorn: Hvað er uppi? [Vélritun Hljómar] JASON Hirschhorn: OK. Við skulum fara yfir sauðakóðanum fyrst og þá ég skal gefa þér nokkrar fleiri mínútur til að klára kóðun. Sem langar til að byrja mig burt með fyrstu línu sauðakóðanum fyrir þessa aðgerð? STUDENT 8: Athugaðu að ganga úr skugga um að þú varst að gefa tvær skrár. JASON Hirschhorn: OK. Og ef við erum ekki? STUDENT 8: Ég myndi aftur á 0. JASON Hirschhorn: Ættum við að skila 0? STUDENT 8: fara aftur a - tæmingu. Sorry. JASON Hirschhorn: Já. Sennilega ekki 0. Vegna 0 þýðir allt var gott. OK. Svo er það fyrsta línan af sauðakóðanum. Hver hefur annarri línu sauðakóðanum? STUDENT 9: Opna bæði skrár? JASON Hirschhorn: Opið bæði skrár. OK? STUDENT 10: Athugaðu að sjá ef skráin er NÚLL? JASON Hirschhorn: Athugaðu að ganga viss hvorki eru NÚLL. Sem innskot - rista 0 - er þessi NÚLL? STUDENT 11: No JASON Hirschhorn: Það er ekki NULL. Það er kallað NULL Ljúka. Það er í raun stafsett með aðeins eitt l. Svo stöðva eitthvað á móti því - það er í raun eðli - svo stöðva eitthvað á móti sem er ekki það sama og stöðva til sjá ef það jafngildir NULL. Og sumt fólk - á prófum sínum og vanda þeirra setur - hafa fengið að tvö af þeim sem rugla. En tveir af þeim eru í raun öðruvísi. Einn endar streng - einn er bendi á 0. STUDENT 12: Hvers vegna vildi þú ekki að athuga að ganga úr skugga um að skrár séu ekki NULL áður en þú opnar þær? JASON Hirschhorn: Svo opinn vistar eitthvað í þessi skrá. Og ef þú ferð aftur hingað - svo þessi lína - fopen - mun gefa þér heimilisfang og geyma að tölu í skrá ef það virkar. Ef það virkar ekki, það mun geyma NULL - STUDENT 12: Ó. OK. Fékk þig. JASON Hirschhorn: Í skránni. Svo þú getur ekki stöðva for null áður en þú hefur opnað þeim. NULL þýðir eitthvað ekki virka rétt. OK. Svo gættu hvorki er? Eða eru? Hvað eigum við held? Við munum fara með það. STUDENT 13: Er. JASON Hirschhorn: Er? Hvorki er? STUDENT 13: Er. JASON Hirschhorn: OK. Við virðumst hafa sumir samstaða um það. Hvorki er NULL. OK, næsta lína af sauðakóðanum. Hver hefur ekki gefið mér línu enn? Við munum bíða eftir þér. Já. STUDENT 14: Þú ert að lesa frá fyrsta skrá? JASON Hirschhorn: OK. STUDENT 14: Eða við notum fscanf eða Eitthvað eins og þessi fyrsta skrá? JASON Hirschhorn: Þannig að við viljum lesa frá fyrstu skránni og - skulum setja það hérna. Lesið úr frumskrár. Og þá, hvað eigum við að gera eftir að við lesa úr frumskrár? Einhver annar? STUDENT 15: Skrifa inn markskrána? JASON Hirschhorn: Við skrifa til markskrána, og - OK. Hvað annað eru við vantar? Einhver annar sem hefur ekki gefið mér lína af kóða enn - af sauðakóðanum. Já. STUDENT 16: Kannski þú getur alltaf að skoða hvort það er eitthvað til að lesa fyrir, eins og næsta lína? Sem eru eins og næsta lína, sjá hvort það er til staðar. [RAFRÆN FLAUTA] JASON Hirschhorn: Oops. Það er journaling hugbúnaður minn. Já? STUDENT 16: Já. JASON Hirschhorn: Svo gefa það að mér einu sinni enn. STUDENT 16: Athugaðu hvort það er enn næsta lína frá frumskrár að lesa. JASON Hirschhorn: OK. Þannig að við erum ekki að lesa línur - var að lesa bæti hér - en þú ert rétt. Við viljum að lesa og skrifa þar það eru ekki fleiri bæti. OK. Og svo þetta ætti í raun að vera grafin svolítið, vegna þess að þeir eru undir það. Satt? Þar til við erum út af bytes, þá ætlum við að lesa frá upptökum skrá og skrifa til áfangastaðar skrá. Og þá, hvað er síðasta lína af sauðakóðanum? Einhver sem er ekki gefið mig eitthvað enn. STUDENT 17: Lokaðu skrár? JASON Hirschhorn: Einmitt. Loka skrá. Þannig að það er sauðakóðanum. Ég ætla að setja sauðakóðanum inn gedit, og í nokkrar mínútur við mun tákna þetta saman. OK. Leyfðu okkur að byrja sem hópur. Nishant, ég hef nýja skrá mína. Ég hef bara opnað þetta upp. Untitled Document 1. Hvað er það fyrsta sem ég ætti að gera? NISHANT: Hafa bókasöfnum? JASON Hirschhorn: OK. Hvað bókasöfn? NISHANT: stdio.h, stdlib.h, tel ég? JASON Hirschhorn: OK. Hvað er stdlib fyrir? NISHANT: Ég gleymdi. JASON Hirschhorn: OK. Svo eru stdio. Hvað ætti ég að gera jafnvel áður en Ég byrja erfðaskrá? NISHANT: Skrifa haus? JASON Hirschhorn: Hvernig fæ ég það litað? [INTERPOSING raddir] NISHANT: Hvernig færðu það litað? JASON Hirschhorn: Hvernig ég lit erfðaskrá? NISHANT: Ég veit það ekki. Oh. Vista. JASON Hirschhorn: Vista. Já. Ég ætti að vista það sem. C. Svo vista það á the skrifborð sem cp.c. Sætur. Og ef ég vil fá fullt stíl stig, hvað ætti ég fela í sér efst? NISHANT: Þú getur skrifað nafnið þitt, nafn áætlunarinnar og þeim tilgangi áætlunarinnar eins og heilbrigður? JASON Hirschhorn: Lítur vel út. Excellent. Svo þú hefur byrjað okkur burt fullkomlega. # Include - við munum líka skrifa - OK. Þannig að ég held að ég sé allt sett til að fara. Hver hefur the fyrstur lína af kóða fyrir mig - eða fyrstu línur af kóða sem það mun taka að uppfylla okkar fyrstur comment í sauðakóðanum? Þú. STUDENT 18: Ætti það ekki að vera Int argc, og þá char * argv? JASON Hirschhorn: Ég held þú ert rétt. Skulum breyta því að int helstu, opna paren, INT argc, komma, char * argv? Svona? STUDENT 18: Krappi. JASON Hirschhorn: Krappi. Open krappi, loka krappi, loka foreldri. Fullkominn. Nú get ég tekið stjórn-lína rök. OK. Tryggja að við erum að gefa tvær skrár. Þú getur gefið mér það eins og heilbrigður. STUDENT 18: Ef argc - þetta er ekki jafn 3. JASON Hirschhorn: Ef opna paren argc ekki jafn 3? STUDENT 18: Já, þú kemur aftur 1 eða eitthvað. JASON Hirschhorn: Því miður. STUDENT 18: Return 1 eða eitthvað. JASON Hirschhorn: Return 1. OK? Great. Opna bæði skrár. Hver getur hjálpað mér að opna bæði skrár? Hver hefur ekki gefið mér kóðann enn? Kurt? KURT: Svo allar húfur F-I-L-E stjörnu uppspretta. JASON Hirschhorn: Ég ætla að taka út sérhljóða. Þeir eru töff. Það er eins og Tumblr. STUDENT 18: Jafnt fopen - JASON Hirschhorn: Jafnt fopen? STUDENT 18: Opinn paren, argv, opið krappi. JASON Hirschhorn: Bíddu. Sorry. Open paren. OK. STUDENT 18: Já. Argv undir 1. JASON Hirschhorn: Sub 1? STUDENT 18: Já. Argv opinn krappi 1 - já. Og þá komma, og þá opinn tvöfaldur vitna, r, tvöfaldur vitna, loka paren, semíkommu. JASON Hirschhorn: Sweet. Og hvað um hinn? STUDENT 18: Mjög svipað, en í staðinn S-R-C, vilt þú kalla það d-S-T. JASON Hirschhorn: Oo! Mér líkar það. STUDENT 18: Just D-S-T. Já. Og þá argv, opið krappi, 2. Já. Og þá m í stað r. Já. JASON Hirschhorn: Great. Næsta par af línum. Einnig, ef einhver hefur það til að bæta við línur sem við höfum gert, ekki hika við að bæta þá eins og heilbrigður. Athugaðu að ganga úr skugga hvorki er NÚLL. Hver getur gefið mér kóðann sem ég þarf að uppfylla þessi lína af sauðakóðanum? Archer. ARCHER: Ef src jafnt jafn NULL eða DST jafngildir jafn NULL, þá þú aftur - JASON Hirschhorn: Hvað? ARCHER: Return 2? JASON Hirschhorn: Return 2. Þannig að ef opinn paren src jafngildir jafngildir NULL, eða - hvað sem thing's - pípa? Pípa? Við munum kalla það pípa. Pípa, pípa, DST jafngildir jafn NULL, skila 2. OK? Þar til við erum út af bæti - við sleppt svona yfir þetta skref frá að sauðakóðanum hluti til að fara til hér. En þangað til við erum út af bæti - hvað þýðir að hljóma? Hvaða tegund af C uppbygging - en ég er ekki að nota orðið uppbyggingu, vegna þess að við erum að fara að byrja að nota að í öðrum tilvikum - en C tól Hefur þessi hljóð eins og? STUDENT 19: Lykkja. JASON Hirschhorn: Lykkja. Hljómar eins og lykkju. Svo sem getur gefið mér fyrstu línu lykkja kóða hérna? Þú getur einnig valið hvaða lykkja sem þú vilt, ef þú gefur mér Þessi lína af kóða. Það eru þrjár tegundir. Þú færð að velja. Ég myndi stinga upp á einn af þeim. Avi. Hver einn gera þú vilja? AVI: FOR. JASON Hirschhorn: FOR. AVI: int i jafn núlli. JASON Hirschhorn: OK. AVI: Þessi hluti sem ég er ekki viss um. En I er minni en stærð af stjörnu uppspretta? Ég er ekki viss um það. JASON Hirschhorn: OK. AVI: Þar sem þú vilt að skráar, ekki satt? JASON Hirschhorn: Svo þetta verður að öllum líkindum ekki gefa okkur stærð á raunverulegri skrá í bætum. Svo hvað getum við gert? Hvað er annars konar lykkju? Eða ættum við að standa með for lykkju? STUDENT 20: Gætirðu gera meðan lykkja? Og þá, hvað þú vilt gera er you'd - vegna þess að við höfum char * skrárinnar. Þannig að ef við höldum bara incrementing að þar til við myndum finna NULL karakter í endirinn á því? Eða nei, er það ekki hvernig skrár virka? JASON Hirschhorn: Svo við getum haldið incrementing bleikjan * þar til við að finna NULL - STUDENT 20: meginatriðum halda áfram eðli með staf þar til við högg í lok skrárinnar. JASON Hirschhorn: Já. Svo það er það sem við viljum gera. Við viljum halda lestur, karakter með staf, þar til við fáum að í lok skrárinnar. STUDENT 20: Já. Finna - hvað er endir eða stöðva skilti í lok textaskrá. JASON Hirschhorn: OK. Svo þegar við komum til the endir af the skrá - hvernig vitum við að við höfum náð enda a skrá? Ef ég er að hringja - þannig að við skulum stíga til baka. Hvað er fall? Við skulum fara í þessa línu hérna. Lesið úr frumskrár. Hver getur gefið mér þessi lína af kóða? STUDENT 21: Fscanf? JASON Hirschhorn: Fscanf. OK. Hvað ef ég vil lesa, mjög sérstaklega, eitt bæti? Námsmaður 21: Ég veit það ekki. JASON Hirschhorn: OK. Jafnvel einfaldara en fscanf - hvað er - Mig langar að lesa úr frumskrár? Lesa úr frumskrár. Hvað er fall - já. Námsmaður 22: Það er fread? JASON Hirschhorn: Fread. Ég held við skulum standa með að einn nú. Hvers konar rök er fread taka? STUDENT 22: Sennilega skrá tegund, og þá staðsetningu í skránni? JASON Hirschhorn: Hvað get ég pikka hér að reikna út hvaða gerð af rökum fread tekur? Margfeldi NEMENDUR: Man fread. JASON Hirschhorn: Man fread og fwrite. Lítur út eins og þeir hanga út saman. Svo tekur fread hversu mörg rök? STUDENT 23: Four. JASON Hirschhorn: Það tekur fjögur rök. Það tekur bendi, stærð, og að hlutur, sem er skrýtið, og sumir skrá. OK? Við skulum lesa um það hérna. "Fallið fread les n viðstaddir þættir af gögnum, hver stærð bœti langur, frá straumi benti á eftir streyma, geyma þá í stað gefið er með músina. " Svo fjórir rök. Hvers vegna get ég ekki afrita bara þetta, og límdu hana hérna. OK. Svo sem getur byrjað að fylla út þessi rök fyrir mig? Avi. AVI: Taka út í tómarúm. Setja bara src. Taka út músina og stjörnu. Setja src. Þá - JASON Hirschhorn: Þannig að ég ætla að hætta þú þarna, því það er rangt. Þú ert rétt með src, en hvar ætti src fara? [INTERPOSING raddir] JASON Hirschhorn: Það ætti fara hérna. Það er src - src okkar er gerð. Við skulum líta hér. Þetta er að biðja um gerð skrá *, við reyndar yfirleitt sjá þá svona. Þannig að þetta er að biðja um rök tegund SKRÁ * heitir straum sem er src. OK? Hvaða stærð af hlutur við viljum lesa? Ég gaf þér þetta í vandamál lýsingu. STUDENT 24: Eitt bæti í einu. JASON Hirschhorn: Eitt bæti. Hversu stór er bæti? Stærð þess er í bætum, svo hvað get ég sett þarna? STUDENT 25: One. JASON Hirschhorn: Einn. Rétt. Stærð hennar er er í bæti, svo 1 er 1 bæti. Hversu margir gera ég vil lesa í einu. STUDENT 26: Einn? JASON Hirschhorn: Eitt. Mig langar að lesa eitt af stærð 1, einn biti í einu. Og þar fæ ég orðaði það, þegar ég las það? STUDENT 27: Áfangastaður? JASON Hirschhorn: Svo ég get ekki sett það beint inn áfangastað. STUDENT 28: Þú ert ætla að setja það í þriðja músina? STUDENT 27: á áfangastað. JASON Hirschhorn: OK. Já. Námsmaður 29: Þú getur lýst eitthvað að starfa sem tímabundinn geymslustaður fyrr. JASON Hirschhorn: OK. Gefðu mér að. STUDENT 29: Annar skrá músina, kannski? JASON Hirschhorn: OK. Svo er þetta ógilt stjörnu - það er ein tegund ógilt stjörnu, svo það er ekki verða að vera a bendils. Og ef ég er að lesa eitt bæti, hvar væri góður staður að geyma eitt bæti? STUDENT 29: An array? JASON Hirschhorn: An array. OK. Og hvað annað er eitthvað sem er bara að stærð eitt bæti? STUDENT 30: A char *? STUDENT 29: Já. JASON Hirschhorn: A char * er ekki eitt bæti. STUDENT 29: A bleikju. JASON Hirschhorn: A bleikju er eitt bæti. Satt? Svo skulum kalla þessa biðminni er almenn nafn notað þetta til þess að geyma eitthvað tímabundið. Svo ég búa til biðminni. Satt? En það er tekið ógilt *. Svo kannski þú ert rétt, að það ætti að vera stuðpúði af stærð 0. Svo það geymir einn - rétt. Vegna þess að þetta hérna - bleikju biðminni er eðli, en þetta tekur tómarúm * - bendillinn. Svo ég gæti gert þetta og nú jafnalausnin er músina. Hvað annað gat ég gert? STUDENT 31: Settu stjörnuna við bleikju. JASON Hirschhorn: Ég gat hafa skapað það char *. OK. Hvað er annað sem ég gæti gert? Eða við skulum fara með þessu. Char * biðminni, svo hvað set ég hér? STUDENT 31: Buffer. JASON Hirschhorn: Buffer. Buffer er bendi char. Og í þeim stað, við erum að setja eitt bæti af einhverju sem við höfum lesið. Já. Avi. AVI: Just a fljótur spurning. Viltu malloc biðminni? JASON Hirschhorn: Hver getur svara þeirri spurningu? STUDENT 32: Jæja, það er í raun ekki benda til nokkuð núna, svo - JASON Hirschhorn: En gera við viljum malloc það? STUDENT 32: Ef þú værir að gera það sem Þannig held ég, já, vegna þess að þú vilt þurfa sumir staður fyrir það að benda á. JASON Hirschhorn: Eigum við verða að malloc það? STUDENT 33: Ef þú ert að fara að nota það utan úr lykkja. JASON Hirschhorn: Erum við að fara að nota það utan lykkju? STUDENT 34: Já. STUDENT 35: Bíddu. Viljum við lýsa það í lykkju og hafa verið yfir? JASON Hirschhorn: Svo ég held að við höfum sumir gervi meðan lykkja hér að við erum reyna að reikna út, að við höfum ekki fengið að enn. Við þurfum ekki að malloc það. Við erum að starfa í helstu, það er bara að fara til að nota í þessari lykkju. Það þarf ekki að vera til utan þetta. Svo það getur verið staðbundin breytu. Þú ert bendi á a heimamaður breytu. STUDENT 36: En það er ekki benda til nokkuð. JASON Hirschhorn: Nei, það er ekki frumstilla að neinu. En við erum ekki að fara að nota það líka. Við erum að fara að setja eitthvað í það í fyrsta skipti sem við notum það. Svo virðist sem allt í lagi. Þannig að við þurfum ekki malloc hér. Og ég held að það er allt í lagi eins og er. OK. Við höfum fread línu. Skulum gera næstu línu. Ef við viljum að skrifa í skrá, hvað er góð aðgerð til að nota til að gera það? STUDENT 37: fwrite? STUDENT 38: Fprintf? JASON Hirschhorn: Fprintf er einn. Hvað er annað? STUDENT 39: fwrite. JASON Hirschhorn: fwrite. Og með tilliti til okkar, fwrite, sem við sáum hér, er líklega betri kostur. Það tekur fjórar rök eins og heilbrigður. Nishant, getur þú gefið mér rök? NISHANT: Going sá fyrsti er að vera bara biðminni. JASON Hirschhorn: OK. NISHANT: The second einn er bara að fara að vera 1. Þriðja einn er að fara að vera 1. Og fjórða einn er að fara að vera DST. JASON Hirschhorn: Hefur einhver hafa einhverjar spurningar um þessi lína? Sem lítur vel út. OK. Svo nú lítur það eins og eitt við erum vantar - reyndar, við skulum skrifa þessari síðustu línu. Loka skrá. Sem getur klárað okkur upp skrif þessar síðustu tvær línur? Já. Því miður, hvað er nafn þitt? LUCY: Lucy. JASON Hirschhorn: Lucy. LUCY: fclose src og þá fclose áfangastað. JASON Hirschhorn: fclose, opið paren, src, loka paren, semíkommu. Og fclose - já? LUCY: Open sviga, DST og þá semíkommu. JASON Hirschhorn: Great. Og hvað ætti ég að hafa á endanum? LUCY: return 0. JASON Hirschhorn: return 0. Þarf ég að? Bara spurning. Þurfum við að fela return 0? Margfeldi NEMENDUR: Nei JASON Hirschhorn: Nei Helsta er það sjálfkrafa ef þú fá til the endir. En ég held að það er gott að fela það sérstaklega. Sérstaklega þegar við erum að aftur aðra hlutir meðan áætlunin. OK. Þetta er það sem við erum vantar - MEÐAN hvað? Sem hægt er að hugsa af sumum - hefur eitthvað vit á því hvað hlutirnir gæti farið í það? Jafnvel ef það er bara á einhvern sauðakóðanum eins og tungumál? Hvað erum við í raun - hvað viljum við fara þangað? Já, Lucy. LUCY: The endir skjals. JASON Hirschhorn: The endir skjals. Svo hvað áttu við lok skrá? LUCY: Þegar þú hefur náð að lok skrárinnar, hætta. JASON Hirschhorn: OK. Svo þegar við náum lok skrárinnar. Hvernig vitum við þegar við höfum náð í lok skrárinnar? STUDENT 40: Ég held biðminni verður að vera stillt á NÚLL. Námsmaður 41: Buffer er lýst inni í lykkju. JASON Hirschhorn: Svo þú heldur biðminni verður að vera stillt á NÚLL. Hvers vegna vildi biðminni vera stillt á núll? STUDENT 40: Því þegar þú fread, þú ert að reyna að setja ekkert í buffer. JASON Hirschhorn: OK. Svo þú ert að hugsa fread - þegar við höfum náð í lok skrá, hvað er fread að fara að gera? Ég held að það er spurningin við þurfum að reikna út. Hvað þýðir fread gera? Er það að setja NULL í biðminni eða er það ekki eitthvað annað? Hvernig getum við fundið út hvað það er? STUDENT 42: Man. JASON Hirschhorn: Man. Svo skulum líta hérna. Skilagildi. Á velgengni, fread og fwrite skila fjöldi atriða lesið eða skrifað. Þessi fjöldi er fjöldi bæti flutt aðeins þegar stærð er 1. Ef villa kemur, eða í lok skrá er náð, skilagildi er stutt atriði telja eða 0. Svo fyrir tilgangi okkar, ef fread nær í lok skrárinnar, og les úr í lok skrá, það er ekkert eftir að lesa, hvað er það að fara að koma aftur? STUDENT 43: Zero? JASON Hirschhorn: Hvað? STUDENT 43: Zero? JASON Hirschhorn: Zero. Það er að fara að skila núll. Þannig að við vitum að fread, þegar við höfum náð í lok skrárinnar, er að fara að skila núll. Hvernig getum við notað það til að nýta okkar? AVI: Þú getur lýst breytu utan lykkja kallast stöðva. Ef stöðva jafningjar - nú - einn. JASON Hirschhorn: OK. AVI: Og þá er hægt að setja if yfirlýsingu rétt eftir fread segja ef fread jafn núlli - nr. JASON Hirschhorn: Hver getur hjálpað avi út? AVI: Hvað er virði skilað fread? JASON Hirschhorn: Við bara fór yfir það. AVI: Hvernig heldur þú að tákna það? JASON Hirschhorn: Svo það skilar - við skulum líta upp hér - það skilar size_t, sem er í meginatriðum heiltala. Svo það skilar heiltölu. Og í okkar tilfelli, það verður skila 1 eða 0 - 1 ef það lesa eitt - eitt bæti, og 0 ef við höfum náð enda. Þannig að ef fread - já? STUDENT 45: ekki hægt að setja bara fullt fread (TAG, 1, 1, src) inn í en lykkja? JASON Hirschhorn: Svo þú leggur gera þetta í það? [INTERPOSING raddir] JASON Hirschhorn: Bíddu. Þannig að við erum ridding af því. Svo þú ert að leggja til að setja fread inn þarna? Hvað eigum við að fara líka ef þú vilt gera það? STUDENT 45: The biðminni utan. JASON Hirschhorn: Við ættum einnig færa þetta út hér. STUDENT 45: En þýðir það stöðugt færa það áfram? [INTERPOSING raddir] JASON Hirschhorn: OK. Svo er þetta það Okshar lagt. Við búum til biðminni okkar. Við MEÐAN fread, þá erum fwrite. Hugsanir um þetta? STUDENT 46: Aðeins spurning mín er, myndi það framkvæma í raun stjórn fread? JASON Hirschhorn: Great spurning. Þegar þú ert að setja inn fall hringja inni í ástandi, er að virka kalla keyra? Við höfum séð dæmi um þetta áður. Satt? STUDENT 46: OK. Já. Svo er það að framkvæma. JASON Hirschhorn: Við höfum séð það svona áður, þar sem við höfum kalla virka inni í ástandi. Er að virka kalla keyra? Já. Svo svarið er já. Þessi aðgerð kalla mun framkvæma. En aftur, það er það sem við viljum? Hvað er ein leið að við gætum fundið út ef það er það sem við viljum? Margfeldi NEMENDUR: Setja það? JASON Hirschhorn: Við gætum keyrt það. En áður en við gerum það, við gátum einnig ástæðu gegnum þetta. Ef - segja að við höfum eitt bæti í okkar skrá, við munum komast að hér, við munum komast að þessum kóða. Þetta mun birtast. fread mun skila eitt bæti og geyma það í buffer. Og þetta mun meta til 1, rétt, eftir að hann skilar 1. Svo á meðan 1. Þýðir kóðann inni while lykkja mun framkvæma? STUDENT 47: Já. Það er satt. JASON Hirschhorn: Já. 1 er satt. Það er ekki 0. Svo kóðann inni hér mun framkvæma. Þannig að við munum skrifa það. Við munum fara aftur til þessa lína einu sinni enn. Nú höfum við - við erum í lok skrá okkar. Við að lesa frá lok skrá okkar, vegna þess að við höfðum aðeins eitt bæti í það. Fread skilar 0, verslanir eitthvað í buffer. Ég heiðarlega veit ekki hvað það geymir í biðminni. Við gætum sennilega líta upp til að sjá hvað það gerir. Að ég heiðarlega veit ekki. Við vitum ekki, hver er ekki sama hvað það geymir í biðminni? En það þýðir aftur á 0. Og mun á meðan 0 framkvæma? MEÐAN 0 mun ekki framkvæma. Svo þá munum við fara niður hér. Svo skulum við fá sýningu á hendur, ef þetta er kóðinn sem við ætti að keyra, eða ef við ættu að gera breytingar fyrst. Þannig að ef þú heldur - þú þarft að greiða atkvæði. Ef þú heldur að við ættum að keyra þennan kóða sem er, skaltu hækka hönd þína. OK. Það er eitt - þú ert með spurningu, áhyggjur? Já. STUDENT 48: Eftir að við færa biðminni utan úr lykkja, gera við verða að malloc það? JASON Hirschhorn: Great spurning. Eftir að við færa biðminni utan af lykkja, eigum við að malloc það? Þetta er umfang spurning. Ef við frumstilla biðminni utan þessarar lykkju, mun það vera til inni í lykkju? Margfeldi NEMENDUR: Já. JASON Hirschhorn: Já. Umfang hennar nær inni í lykkju, og, í raun, nokkuð fyrir neðan það inni þessa kóða, þ.mt hlutunum á haus hérna. Þannig að við þurfum ekki að malloc það. Það er staðbundin breytu, og umfang hennar enn nær lykkju. STUDENT 49: Þurfum að losa það? JASON Hirschhorn: Eigum við þarf að losa biðminni? STUDENT 49: Já, ef við gerum ekki malloc. JASON Hirschhorn: Eigum við þarf að losa biðminni? Við gerum ekki. Aftur, er það heimamaður breytu, þannig að við þurfum ekki að losa hana. OK. Við skulum sjá hvað gerist. Svo það er ekki forsniðinn. Það var það sem eitthvað sem Marcus lagði fyrr. Þannig að við höfum að villa, breyta biðminni er ekki forsniðinn þegar það er notað hér. Hvernig getum við lagað þetta? STUDENT 50: Malloc það? STUDENT 51: Jafnt NULL? STUDENT 52: Segja biðminni jafngildir NULL. JASON Hirschhorn: OK. Lítur vel út. Við höfum það núna. Skulum skapa eitthvað til að reyna afritun. Þannig að við höfum textaskrá okkar. Hvernig getum við keyrt þetta forrit? Já. Námsmaður 53: Þú getur gert punkt rista CP, test.txt. Og þá er hægt að nefna aðra skrá þar sem það verður að geyma í. JASON Hirschhorn: OK. Við munum kalla það out.txt. Cool? Seg kenna. Hugsanir á seg kenna? Þetta er frábært. Hvernig getum við fundið út hvar sem seg kenna er? Hvað? STUDENT 54: gdb. JASON Hirschhorn: gdb. Hlaupum gdb með því að skrifa gdb punktur rista, nafn program okkar. Engin stjórn lína rifrildi þar. Við ætlum að setja breakpoint á helstu. Ef ég vil byrja gdb, hvað á ég að gera? STUDENT 55: R. JASON Hirschhorn: R. Og hvað þá? STUDENT 55: Rök? JASON Hirschhorn: Þá stjórn-lína rifrildi. Skulum ganga í gegnum. N er bara að taka mér línu fyrir línu. Ég ætla að fara þangað Ég fæ seg mér að kenna. Það er seg mér að kenna. Það lítur út eins fread völdum seg mér að kenna. Ég veit fread olli seg mér að kenna, vegna þess að það var línu við keyrð bara. Og það eina sem var gerast í þeirri línu - tveir hlutir voru að gerast. Fread var að fara, og þá vorum við gera sumir á meðan að haka. Ég er tilbúin að veðja að á meðan stöðva var ekki að valda seg mér að kenna. Líklegast, fread var veldur seg mér að kenna. Ég sé einnig eitthvað hér, memcopy. Minni afrita. Hljómar eins og að flytja minni frá einum stað til annars. Hljómar eins og eitthvað sem myndi gerast í fread, kannski sumir minni flytja héðan til hér. Förum í gegnum þetta aftur. Hvernig byrja ég það yfir og keyra það aftur? Já. STUDENT 56: Ert þú þarft að setja merkið áður biðminni? JASON Hirschhorn: Svo merkið áður biðminni myndi gefa mér veffang stuðpúða, sem er char *. Við skulum hlaupa í gegnum þetta einu sinni enn. Hvernig keyri ég í gegnum það einu sinni enn? STUDENT 57: Getur þú bara tegund hlaupa aftur? JASON Hirschhorn: Réttlátur tegund hlaupa aftur. Þannig að við erum ekki að fara að framkvæma þessa línu. Svo er biðminni NULL músina. Rétt? Það bendir til - við skulum sjá. Ef við höfum okkar - teikna a fljótur mynd af þessu. Geta allir séð hvort Ég skrifa hérna? Svo í stafla, höfum við á staðnum breytilegir og það er kallað buffer, og það er bendi á char. Hvaða heimilisfang er þetta char á? STUDENT 58: 0x0. JASON Hirschhorn: Hægri. Það er það sem þetta er. Í hér, inni buffer, er geymt 0x0. Það er það sem við höfum - við skipulag sem við höfum núna. Þannig að fyrirsögnin, fread, setur eitthvað frá uppspretta hvar? Inn í þennan kassa eða þessum kassa? Hvaða kassi? Vinstri kassi eða hægri kassi? Þessi réttur kassi. Það fylgir músina, og setur það í hér. Þegar við reynum og snerta minni á Staðsetning 0, hvað fáum við? A skiptingu kenna. Það er villa við höfum núna. Já. STUDENT 59: Ert þú ekki hafa að setja stjörnu biðminni? Eða nei? Fyrir fread? JASON Hirschhorn: Svo fread tekur músina. Svo það fer í biðminni. Og þá verður það de-tilvísun það einhvers staðar inni fread. En aftur, við sáum það tekur músina. Við þurfum ekki að fara framhjá það stjörnu biðminni. Sem myndi vera brottför það hvað er hér. Og það myndi líklega gefa okkur villu vegna þess að við erum de-tilvísun það. Satt? Þegar við de-tilvísun þetta bendi, þegar við reynum að fá aðgang að þessum stað, við erum að fá villu - skiptingu kenna. Svo - oops. Við erum að fara að hætta út af gdb. Línu okkar - vandamál okkar - er rétt hér á þessari línu. Og það er vandamál vegna þess að þessa línu. Hvernig getum við búið til kassa sem er aðgengilegt á fread. Satt? Við þurfum að búa til kassa sem er einn bæti stór, á stærð við bleikju. En við þurfum að kassi til að vera aðgengileg Þegar þessi aðgerð framkvæmd. Svo þar - já. Einhverjar hugmyndir? STUDENT 60: Bara setja það eins og allir handahófi staf. Bara gera char biðminni Jafnt eðli. Og þá, þegar þú hefur biðminni þar - JASON Hirschhorn: Bíddu. Char biðminni? Svo engin stjarna? STUDENT 60: Já. Taka út stjörnuna. Jafnt handahófi staf. JASON Hirschhorn: OK. Svo gefa mér eitt. STUDENT 60: Eins eða eitthvað. Og svo þegar þú hefur biðminni þar notarðu - STUDENT 61: Star? Ó nei, merkið. STUDENT 60: Notaðu merkið án. JASON Hirschhorn: OK. Og hvað um í fwrite? STUDENT 60: Notaðu merkið án aftur. JASON Hirschhorn: Allt í lagi. Svo er hugmynd þín, við að búa til char og setja eitthvað í það, og þá skrifa til bleikju. STUDENT 60: Já. JASON Hirschhorn: Hvað gera fólk hugsa? Námsmaður 62: Það er undinn. JASON Hirschhorn: OK. Skulum draga það út. Svo í þetta sinn, ég ætla að draga þetta í rautt á mánudaginn hér, og þá erum við mun hafa - ooh! Sorry. Svo í þetta sinn höfum við eitthvað sem kallast dúa, og það er á stafla. Rétt? Og við erum að spara í það, fyrst um sinn. Þá höfum við kalla okkar til fread. Hvað fread gerir er að það tekur bæti úr skrá okkar og setur það einhvers staðar. Það setur það í hvað sem hlutur er bendir til. Jæja, áður en við höfðum þetta netfang - 0x0. Nú hvaða tölu höfum við? STUDENT 63: Hvað vistfang jafnalausnin er. JASON Hirschhorn: Whatever vistfang jafnalausnin er. Það er líklega að fara að vera eitthvað svoleiðis. Líklega að fara að byrja með b og er F, og þá hafa sex öðrum sextánskur tölustafir. Skiptir ekki máli. Sumir heimilisfang. Og við erum liggur þetta netfang inn Og við erum að fara að setja eitt okkar bæti hlutur á þetta netfang. Þannig að við erum að fara að setja eitt okkar bæti hlutur inni hér. Og þá erum við að fara að skrifa frá hvað er alltaf inni hér. Hefur einhver hefur einhverjar spurningar um það? Sem hugsar þetta kóði mun virka? Hækka hönd þína ef þú heldur Þessi kóði mun virka. Þú þarft að taka afstöðu. Og sem hugsar þetta númer mun ekki virka? Hækka hönd þína. Allir aðrir ættu að vera hækka hönd þeirra. OK. Michael, hvar ert þú að standa? MICHAEL: Ég get ekki ákveðið. Konar í miðju. JASON Hirschhorn: Þú ert í miðju. Velja einn. MICHAEL: Ég hef trú og segja að það muni vinna. JASON Hirschhorn: OK. Þú munt hafa trú og segja að það virkar? Hvað gerðist? [INTERPOSING raddir] JASON Hirschhorn: Nei seg kenna. Hvernig getum við að athuga hvort tveir hlutir eru jafnir? Tvær skrár eru jafnir. STUDENT 64: Diff. JASON Hirschhorn: Diff. Breyting stöðva fyrir mismunandi milli tvær skrár, og ef það skilar ekkert, þá eru þeir eins. Og ef við opnað upp, fáum við skrá okkar. Svo það var rétt lausn. Skulum líta aftur á það einu sinni enn. Við gerðum reyndar ekki einu sinni þarf að frumstilla hana. Það myndi líklega líta dálítið hreinni ef þú did ekki setja eitthvað af handahófi þar. Aðalatriðið sé, að þú þurftir að búa nokkur pláss til að geyma eitthvað af fread og taka eitthvað út af fwrite. Og þessi hlutur þurfti að vera annað hvort á staðnum breytu á mánudaginn - þú hefði getað malloc'd pláss. Þannig að við í raun gætu haft skrifað malloc hér, og sem hefði unnið. Og þá myndum við hafa verið að geyma dótið okkar einhvers staðar á hrúga. En þetta er í raun, líklega, mest glæsilegur lausn. Bara búa til nokkur pláss á stafla fyrir þetta að fara. Ég myndi hafa tvær aðrar athugasemdir. Ef þú værir að taka beygju í þessu, og þá fá skorað á þessu, athugasemdir mínar myndi vera eins og hér segir. Þessir 1 er hér, að mér, líta eins og galdur númer. Þetta 1, í skilmálar af fread, vit. Það er ýmislegt að lesa eða skrifa. En þetta hérna ætti líklega verið eitthvað annað. Svo er það ein lausn? STUDENT 65: Stærð bæti. JASON Hirschhorn: Svona? STUDENT 65: Stærð bleikju. JASON Hirschhorn: Stærð bleikju. Já, bæti er ekki gerð. Svo stærð af bleikju verkum. Við gætu haft, efst á númerið okkar, # skilgreint það. Heitir eitthvað bæti-og það er eiginlega bara bleikju. Reyndar, jafnvel betri nálgun gæti hafa verið þetta - UINT. Hver veit hvað þetta er? Sorry. Ég hef það aftur á bak. Bíddu, nei. Hvaða leið er það að fara? Hver veit hvað þetta er? Já. Námsmaður 67: átti að hjálpa staðla yfir kerfi hluti sem hafa - eins óundirritaður heiltölur sem hafa 8 bæti? JASON Hirschhorn: Það er nákvæmlega rétt. Á mismunandi vélar, á stærð við stafir - yfirleitt ekki bleikju. Stafir eru yfirleitt eitt bæti. En stærð annarra gerðir gagna eru mismunandi stærðir á 32-bita vél á móti 64-bita vél. A uint8_t er alltaf 8 bitar - alltaf eitt bæti. Og ég þarf að fela í sér að staðall Int hausaskrár. Svo nú, þetta hefði líklega verið besta leiðin til að skrifa þennan kóða. Svo ég losna við galdra númer. Og ég hef líka meira rökrétt slá til biðminni. Það er einfaldlega ekki bleikju, það er bæti, sem er það sem við búast við það til vera. Og allt hérna, höfum við í raun verið hluti fleiri sterkur. Við erum ekki að kalla það bleikju, sem - kannski, hver veit - gæti verið öðruvísi stærð á mismunandi vélar. Við erum í raun að segja þetta er nákvæmlega eitt bæti, alltaf, sama hvað. Og ef við lítum hér, gera við sbr. Uh-oh. Hvað gerðist? Námsmaður 68: Það gæti verið kveikt. JASON Hirschhorn: Hvað? STUDENT 69: Er það? STUDENT 70: Þú varst ekki skilgreina hana sem tegund. STUDENT 71: En það ætti verið skilgreind í staðlinum. Námsmaður 72: Hvað er að gerast? STUDENT 73: Ætti að skilgreina vera allar húfur? JASON Hirschhorn: Svo það er ekki # skilgreina. Reyndar, í þessu tilfelli, er ég fara að nota typedef. Þar sem við erum að nota það sem gerð á einum stað. Svo í þessu tilfelli, við viljum í raun og veru að typedef eins og við erum að prenta nýja tegund bæti, og það er í raun, þetta. Það er dálítið öðruvísi en # skilgreina. Og nú, númerið okkar virkar fullkomlega. Svo aftur, # define tekur eitthvað, stað það alls staðar með annar hlutur. Það er bara þjóðhagsleg - styttingin til að losna við galdra númer. En í þessu tilfelli, vegna þess að við erum nota það sem tegund - hérna - í röð fyrir það að vinna, við þurfum að typedef hvað bæti er. Og við erum að skilgreina það hérna. Það er ekki strúktúr, það er í raun bara að óundirritaður heiltölu. Það er eitt bæti lengi. Þessi kóði mun vera laus online, og þið öll að hafa það núna. Þannig að við höfum - fullkominn - 13 mínútur eftir til að fara yfir Heimadæmi 5. Ég vil ganga í gegnum copy.c saman, og þá munum við tala stuttlega um aðra hluta á vandamálinu stillt. Svo láta mig draga upp copy.c. Og kaldur hlutur er, við höfum í raun þegar skrifað mikið af þessum kóða. The merkjamál við skrifuðum bókstaflega bara kom út hér þegar ég var skrifa þetta á mína eigin. En þetta er copy.c, myndar grundvöll fyrir fyrstu tvo hluta vandamálið sett whodunit.c, sem þú þarft að skrifa, og resize.c. Recover.c, sem er þriðja og síðasta hluti af vandamálinu setja, er ekki byggt burt af þessari skrá. Þú ert að fara að þurfa að skrifa þessi skrá, við gefum þér sniðmát fyrir það skrá, en það hefur ekkert að gera með copy.c. En vegna þess copy.c er grundvöllur Fyrstu tveir hlutar, við erum að fara að ganga í gegnum það núna, svo þú hefur góða tilfinningu fyrir hvað það gerir. Og athugasemdir gefa eitthvað af því í burtu. Við höfum nú þegar skrifað eitthvað af þessu. Fyrst erum við að tryggja við fáum þrjú rök. Næst erum við að muna að skrá nafn. Þannig að við sleppt þessu skrefi þegar við dulmáli hlutur okkar - þegar sbr okkar. En hér, þá eru þeir að gera það svolítið hreinni. Þeir eru að skoða til að ganga úr skugga um bæði skrár eru góð, í viðbót til að opna þá. Við skrifaði allt þetta númer bara núna, svo ég er ekki að fara að búa á þessum kóða. Næst er smá dót sem er sérstaklega við þær tegundir af skrám við erum að nota, sem eru punktamynd skrá. Punktamynd skrá hafa sumir lýsigögn í tengslum við þá. Þannig að fyrsta par sem bæti segja ykkur frá skrá. Þeir eru ekki litirnir pixla í þeirri mynd. Þeir segja þér um skrá. Og ef þú lest í gegnum Heimadæmi, þú munt hafa miklu meiri upplýsingar á hvaða tegundir af lýsigögn mannvirki eru með bitmaps. En það er hvers vegna við höfum þetta fyrsta setja af - þessum kóða hérna. Við erum að lesa lýsigögn - tvö stykki af lýsigögn - the skrá haus og upplýsa haus. Og við erum að skoða nokkrar hluta af því að ganga úr skugga um að það er satt punktamynd skrá en lengra er haldið. Og aftur, eru þessar upplýsingar við þarft ekki að fara inn núna. Ef þú lest í gegnum Heimadæmi, þú verður að skilja þetta. Löng saga stutt, þetta eru bara að segja, þetta er punktamynd skrá, og staðfestir það. Næst erum við að skrifa þær við út skrá. Við sjáum það hér. Við erum að skrifa til út músina. Næst erum við að ákvarða padding. Svo aftur, sem er sérkenni með punktamynd skrá, fela einhverjum línur bólstrun í lokin. Og ef þú lest í gegnum Heimadæmi, þú munt læra meira um padding. Þetta er uppskrift til að finna tróð. Mikilvægt að muna - þegar þú breytir stærð punktamynd skrá, padding breytingar. Þegar þú breytir stærð við skrá, padding breytingar. Það er aldrei að fara að vera meiri en 3 - það verður 0 til 3, að báðum meðtöldum. En þegar þú breytir stærð eitthvað, padding breytingar. Ef ég hef bara eitt pixla í röðinni, ég þurfa þrjú bæti af padding, því Hver röð þarf að vera margfeldi af fjórum bæti í punktamynd skrá. En ef ég tvöfalda það, að fara úr einu pixla til tveggja punkta, sem hvert um sig, segjum, er bæti, þá þarf ég tvö bæti af padding að gera sem jafn fjórum. Svo þegar ég breytt stærð af einhverju, Ég þarf að breyta upphæð af padding að ég hef. Er að skynsamleg að öllum? Næst, iterate við yfir hverri röð, eða í gegnum allar línur. Og þá erum við iterate gegnum hver dálkur í hverri röð. Við erum að meðhöndla þessa punktamynd eins rist, eins og við höfum meðhöndlað stjórnin í 15. Eins og við meðferð múrsteinn þegar Við prentuðum þær á skjánum. A rist af línum og dálkum. Þá - við sáum þetta. Við reyndar bara dulmáli þetta. Við bjuggum nokkur tímabundna geymslu. Við að lesa í það, og þá við að skrifa það út. Þetta er einmitt það sem við gerðum bara. Næst, því ég sagði hver lína endar í sumum padding, við sleppa yfir þessi padding - gamla padding. Og þá erum við að bæta hana aftur. Í þessu tilfelli erum við að skapa sama nákvæmlega skrá. Við erum bara að afrita það. Svo er þetta lína konar vitleysu. Við gátum bókstaflega bara setja padding inn En ef þú breytir stærð af the skrá, viltu samt þessa línu? Þannig að ef við breyta stærð af a skrá, við viljum samt að sleppa yfir gamla padding? STUDENT 74: Já. JASON Hirschhorn: Svo við gerum. Því þetta, aftur, tilboð með frumskrár. Við gerum ekki sama um padding frá upptökum skrá. Við viljum fara í næstu línu. En við gerum ekki einfaldlega setja aftur gamla magn af padding. Við þurfum að setja til baka Ný magn af padding. Svo þegar við erum að breyta stærð á skrá, viljum við enn að sleppa yfir bólstrun í gamla skrá - hvað við erum að lesa í úr. En það sem við erum að skrifa til, við erum að fara að þurfa að setja aftur nokkur mismunandi fjöldi padding sem við höfum ákveðið. Já. STUDENT 75: Röð af þessum tveimur línur skiptir ekki máli, ekki satt? Þar sem þú ert að meðhöndla mismunandi skrár. JASON Hirschhorn: Einmitt. Röð af þessum tveimur línum skiptir ekki máli. Við að skrifa þessa línu. Þetta er hér fyrir skrána við erum að skrifa á. Það er mikilvægt, svo við fáum rétt magn af padding. Þetta verður að takast með í skránni. Við viljum sleppa hægri yfir padding. Við viljum ekki að lesa - ef við erum að lesa bæti í einu, við alveg sama um þá, padding bæti. Okkur langar að flytja í næstu línu. Loksins bara eins og Lucy gaf fyrir okkur, við loka skrá og skila 0. Svo er þetta copy.c. Og við skrifuðum reyndar - við eyddum mest af kafla að skrifa þetta, í raun. Þú gerðir þetta. Svo vonandi að þú hefur gott vit hvað er að gerast hérna. Stóri munurinn, heiðarleika, er bara þessum fyrsta hluta sem fæst við sérkenni punktamynd skrá. Þannig að ég hef eins og næstu glæru minn, hvað þurfum við að gera? Jæja, við skulum hugsa um whodunit. Og fyrir einhvern sem lesa í gegnum vandamálið sett, hvað gerum við þarf að gera í whodunit? Einfaldlega. Aleja. ALEJA: Getur þú tekið út hluta af hverju pixla sem táknar rauð. Og þá - konar? JASON Hirschhorn: OK. Svo taka út hluta hvers pixla sem táknar rauð. Það er nálægt, en ekki minna en það. STUDENT 76: Jæja, það er mismunandi leiðir til að gera það. JASON Hirschhorn: OK. Gefðu mér eina leið. STUDENT 76: Taka út alla rauða og þá leggja áherslu á bláa og græna. JASON Hirschhorn: OK. Svo í ljósi bæði þessar leiðir - það hljómar eins og við að gefa það a pixla, það hefur rautt, blátt og grænt stig. Við viljum breyta hlutfallslegt magn rauða og bláa grænn, allt eftir á þeim díl. Hvar í þessum kóða ættum við að breyta hlutfallslegt rauður, blár og grænn stig af tilteknu punkta. Eftir að við höfum lesið það - áður en við skrifa það? Gefa mér línu númer. Margfeldi NEMENDUR: 83. JASON Hirschhorn: 83. Svo hérna. Fyrir whodunit, kóðinn sem þú þarft að skrifar ættu allir að fara rétt þar. Og það er eina númer þú þarft að skrifa. Vegna þess, eins og við heyrðum, allt sem þú þarft til að gera er að breyta þessum hlutfallslega blá, rauður og grænn stigum frá hverjum pixla. Þú hefur lesið það í, og nú þú ert að fara að skrifa það út. Hvernig fæ ég - ef ég hef þetta í kallast þrefaldur, hérna, og það er slá RGBTRIPLE - Jæja, ef við skoðuðum í bmp.h, hvað er RGBTRIPLE? Námsmaður 77: Það er strúktúr. JASON Hirschhorn: RGBTRIPLE er Struct. Við sjáum að rétt niður hér. Og svo ef ég vildi til að fá aðgang, segjum, rauður láréttur flötur af the strúktúrinn, hvernig ég aðgang rauða stigi þessa strúktúr? [CLASS murmurs] STUDENT 78: RGBTRIPLE.rgbtred? JASON Hirschhorn: Er það rétt? STUDENT 79: Það ætti að vera þrefaldur punktur, í stað þess að RGBTRIPLE punktur? JASON Hirschhorn: Triple. Triple er staðbundin breytu, svo hér, það er engin ábendingum hér. Svo við notum bara punktur sýndur. Þetta mun gefa mér hversu rauður. Ef ég vil breyta því, ég setti bara það jafn eitthvað annað. Svo aftur, þessi lína af kóða aðgangur þessa breytu innan þessa strúktúr, og við getum sett það í eitthvað nýtt. Svo fyrir whodunit, aftur, þetta er, í raun, það sem við þurfum að gera. Mjög einfalt. Bara breyta sumir ættingja stigum, og þetta er þar sem kóða fer. Búa, á hinn bóginn, er svolítið trickier. Í raun, búa er líklega erfiðustu hluti af þessu vandamáli sett. Við höfum þrjár mínútur til að fara yfir það. En aftur, við höfum nú þegar skrifað flest af þessu kóða, svo við ætti að vera nokkuð kunnuglegt. Hvað eru nokkur atriði sem við viljum gera í búa, ef þú hefur lesið yfir Heimadæmi? Ef þú gefur mér þá, við getur talað um þau. Hvað eru nokkur atriði sem við viljum gera? STUDENT 80: lóðrétt - svo þú þarft að lárétt búa það, en lóðrétt búa það eins vel? JASON Hirschhorn: Svo ef við erum gefið pixla, og við viljum búa það með þáttur af tveimur, það þarf nú að vera búa lárétt og búa lóðrétt. Er að skynsamleg? Já. Svo er það líklega Stærsta áskorunin. Og við munum tala um það í eina sek. Já. STUDENT 81: Eins og ég hugsaði um það var að þú þurftir að prenta það út - JASON Hirschhorn: Bíddu. Ekki segja okkur hvað þú gerðir. Við erum að fara að tala í rökfræði. STUDENT 81: OK. Hver var spurningin? JASON Hirschhorn: Þú bara rétti upp hönd þína. Það var engin spurning. Leyfðu mér að kynna hana. Leyfðu mér að ræða bara þetta stuttlega. Þannig að við höfum einn pixla, við viljum endurtaka það, bæði lárétt og lóðrétt. Svo fullkomlega það sem við gerum hér er, við lesa í pixla okkar, skrifa við það Þó margir af sinnum. En þá höfum við bragð okkar hér, því þá viljum við sleppa við næsta lína og skrifa það á upphaf næstu línu. Þannig að ef við viljum að endurtaka bæði lárétt og lóðrétt, hvað er Ein góð leið til að gera það - einn góður þó að gera það? Þannig að við þurfum ekki stöðugt að leita um skrá okkar til að setja hlutina. Þessi spurning gæti ekki hafa vit, en ég held að svar við því mun hjálpa. STUDENT 82: búa til array? JASON Hirschhorn: Svo skulum hugsa af hverri skrá sem röð. Við skulum hugsa í skilmálar af línum. Ef við höfum fyrstu röðinni okkar frá litlum okkar mynd, getum við gert í röðinni í stóra röð af stóru myndinni, og þá endurtaka röðinni þó oft það þarf að endurtaka, frekar en að fara pixla með pixla, sem fær ruglingslegt þegar takast á við skrám. Vegna þess að ef við hefðum - Ég er að keyra út af plássi. Ef þetta er skrá okkar, og við höfum að einn pixla þar, og við viljum að setja það rétt þar, við höfum enn nokkur atriði sem þarf að fara yfir það þegar við erum skrifa og skapa nýja skrá okkar - skrá okkar sem er tvisvar sinnum eins og stór. En það er mjög erfitt með skrá virka að sleppa um að nýjum línum svona, og þá fara aftur hingað og setja hlutina í það. Það er nánast ómögulegt að gera eitthvað svona, ef það er vit í. Þannig að ef við hugsa í skilmálar af línum, getum við taka röð okkar, og þá setja það - endurtaka raðir lóðrétt. Og það er hvernig við takast á við að breyta stærð lóðrétt frekar en lárétt. Það var eins konar fljótur, og smá ruglingslegt. Því miður er tíminn er upp. Ég mun standa fyrir utan fyrir þá hér sem hafa spurningar um Heimadæmi, þ.mt batna. Svo skulum fresta í bili. Og aftur, ef þú hefur einhverjar spurningar, við getum spjallað úti.