[MIZIK jwe] [VIDEO lèktur] -Li Te bay manti. -About Ki sa? -M pa konnen. -Se Konsa sa nou konnen? -ki Nan 9:15, Ray Santoya te nan ATM lan. -Yeah. Se konsa, kesyon an se, ki sa te li fè nan 9:16? -Shooting 9 milimèt a nan yon bagay. Petèt li te wè tirè pwofesyonèl la. -OR Te ap travay avè l '. -Wait. Tounen yon sèl. -Ki Ou wè? -Bring Figi l 'moute ekran plen. Linèt -His. -Pa Nan yon refleksyon. -Li La ekip la bezbòl Nuevitas. Sa a logo yo. -epi Li te pale ak moun ki va la mete ki levit. [END lèktur] DAVID Malan: Tout dwa. Sa a se CS50 ak sa a se yon ti jan plis a [fèbl] ak kote ou ap diletantism ak pwoblèm mete kat. Jodi a nou kòmanse gade yon ti kras plis pwofondman nan sa yo bagay sa yo rele endikasyon, ki menm si li nan yon sijè trè Esoteric, li vire soti ke li k ap pase yo dwe vle di a pa ki nou ka kòmanse bati ak rasanble pwogram pi plis sofistike. Men, nou te fè li nan Mèkredi dènye pa fason pou kèk claymation premye. Se konsa, sa a, sonje, se Binky epi nou itilize l ' pran yon gade nan yon pwogram ki pa t 'reyèlman fè anyen ki enteresan, men li te fè revele yon pwoblèm kèk. Se konsa, yo kòmanse jodi a, poukisa pa nou mache byen vit nan yon kèk nan etap sa yo, eseye distile nan tèm imen an ekzakteman ki sa k ap pase sou isit la e poukisa sa a se move, ak Lè sa a deplase sou ak aktyèlman kòmanse bati yon bagay ak teknik sa a? Se konsa, sa yo te premye a de liy nan pwogram sa a ak an tèm pwofàn la, ki sa yo se de liy sa yo ap fè? Yon moun ki nan rezonab konfòtab ak sa k ap deklare sou ekran an? Ki sa ki yo se de liy sa yo ap fè? Li pa tout sa ki diferan de semèn yon sèl, men gen kèk nouvo senbòl espesyal. Yeah? Retounen a. ODYANS: Deklare endikasyon? DAVID Malan: Di ankò? ODYANS: Deklare endikasyon? DAVID Malan: Deklare endikasyon ak se pou yo rafine li yon ti jan ti kras pi plis. ODYANS: [fèbl] adrès x ak Lè sa a y. DAVID Malan: Lè sa a, adrese. Se konsa, espesyalman sa n ap fè se nou ap deklare de varyab. Sa yo varyab, menm si, yo ale yo dwe nan kalite zetwal int, ki plis espesyalman vle di yo pral nan magazen adrès ki nan yon int, respektivman, x ak y. Koulye a, èske genyen kèk valè? Èske gen nenpòt adrès aktyèl nan sa yo de varyab nan pwen sa a nan tan? No Li nan jis sa yo rele valè fatra. Si ou pa aktyèlman bay yon varyab, kèlkeswa sa te nan RAM deja ki pral ranpli ak zewo ak moun yo tou de nan sa yo varyab. Men, nou poko konnen ki sa yo ye e ke sa a pral fè kle poukisa Binky pèdi tèt li semèn pase a. Se konsa, sa a te claymation nan enkarnasyon nan sa a kijan ou gen jis de varyab, ti kras moso sikilè nan ajil, ki ka magazen varyab, men kòm vlope moute flèch yo sijere, yo ap pa aktyèlman montre nan nenpòt kote li te ye se pou chak. Se sak fè nou te gen liy sa a, ak sa a te nouvo semèn pase a, malok pou memwa alokasyon, ki se jis yon fason anpenpan a di sistèm nan fonksyone, Linux oswa Mac OS oswa Windows, hey, ban m 'kèk memwa, ak tout sa ou dwe di sistèm nan fonksyone se sa ki lè mande li pou memwa. Li nan pa ale nan pran swen sa w ap ale nan fè ak li, men ou bezwen di opere nan sistèm sa pa fason pou malok. Yeah? ODYANS: Ki kantite? DAVID Malan: Ki kantite? Ki kantite nan bytes, e konsa, sa a, ankò, yon egzanp parvenus, se jis di, ban m 'gwosè a nan yon int. Koulye a, gwosè a nan yon int se kat bytes oswa 32 miyèt moso. Se konsa, sa a se jis yon fason pou di, hey, sistèm opere, ban m 'kat bytes nan memwa ke mwen ka itilize a jete m 'yo, ak espesifikman, ki sa fè malok retounen ki gen rapò ak sa yo ki ti moso nan kat bytes? ODYANS: Adrès? DAVID Malan: postal lan. Postal la nan ki moso nan kat bytes. Egzakteman. Se konsa, sa a, se sa k ap estoke finalman nan x ak Se poutèt sa nou pa fè sa vrèman pran swen sa ki kantite ki adrès se, si li nan ox1 oswa ox2 oswa kèk adrès skre ekzadesimal. Nou jis pran swen pictorially ki varyab sa x se kounye a montre nan ki ti moso nan memwa. Se konsa, flèch la reprezante yon konsèy, oswa plis espesyalman, yon adrès memwa. Men, ankò, nou pa tipikman pran swen sa ki sa yo adrès aktyèl ye. Koulye a, liy sa a di sa ki nan tèm pwofàn la? Star x vin 42 virgules. Ki sa sa vle di? Ou vle ale? Pa grate kou ou. ODYANS: postal la nan x se nan 42 a. DAVID Malan: postal la nan x se nan 42. Pa byen. Se konsa, fèmen, men li pa byen, paske gen nan zetwal la ki nan prefiks sa a x. Se konsa, nou bezwen ajiste yon ti kras. Yeah? ODYANS: Valè a ki nan konsèy x se lonje dwèt nan se 42. DAVID Malan: OK. Valè a ki konsèy x la se montre nan, se pou yo di, pral 42, oubyen yo mete li yon lòt fason, zetwal la x di, ale nan tou sa adrès se nan x, si li nan 1 Oxford Ri oswa 33 Oxford Street oswa ox1 oswa ox33, kèlkeswa sa ki nimerik adrès se, etwal x se dereferencing nan x. Se konsa, ale nan adrès sa ki epi lè sa a mete nimewo a 42 la. Se konsa, ki ta pwal genyen yon ekivalan fason pou li di sa. Se konsa, sa a, se tout bon ak Lè sa a nou ta reprezante foto a jan sa a kote nou te ajoute 42 nan ak sa yo ki ti moso nan kat bytes sou bò men dwat-ou, men liy sa a te kote bagay sa yo te ale courbe ak tèt la déja Binky desann nan pwen sa a, paske move bagay rive lè ou dèreferans valè fatra oswa ou dèreferans valab endikasyon, e mwen di valab paske nan pwen sa a nan la istwa, ki sa ki andedan nan y? Ki sa ki nan valè a nan y baze sou etap sa yo sot pase yo kèk? Yeah? Ki sa ki nan sa? ODYANS: Yon adrès. DAVID Malan: Yon adrès. Li ta dwe yon adrès men m 'inisyalizèd li? Se konsa, mwen pa gen ankò. Se konsa, sa se li te ye yo dwe nan la? Se jis kèk valè fatra. Li ta ka nenpòt adrès soti nan zewo rive 2 milya dola si ou gen de jig nan RAM, oswa zewo rive 4 milya de dola si ou te te resevwa kat jigokte nan RAM. Li nan kèk valè fatra, men pwoblèm nan se ke sistèm nan fonksyone, si li pa te ban nou ki ti moso nan memwa espesyalman ki w ap eseye pou yo ale nan, li nan jeneralman ale nan lakòz sa nou te wè sa tankou yon fay segmentation. Se konsa, an reyalite, yon moun pami nou ki gen plede nan pwoblèm nan lè biwo oswa nan pwoblèm ki nan plis jeneralman ak ap eseye figi konnen yon fay segmentation, ki jeneralman vle di w ap manyen yon segman nan memwa ke ou pa ta dwe. W ap manyen memwa ki sistèm nan fonksyone a pa gen anyen pèmèt ou manyen, si li nan pa ale twò lwen nan etalaj ou oswa kòmanse kounye a, si wi ou non li a paske w ap manyen memwa ki jis se kèk valè fatra. Li ap fè travay zetwal x isit la se sòt de konpòtman endefini. Ou pa janm ta dwe fè l ', paske chans yo, pwogram nan nan jis ale nan aksidan, paske w ap di: ale nan adrès sa a epi ou pa gen okenn lide ki kote adrès ki aktyèlman se. Se konsa, sistèm nan fonksyone gen anpil chans ale nan aksidan pwogram ou an kòm yon rezilta ak tout bon, sa se sa ki te pase gen yo Binky. Se konsa, finalman, Binky fiks pwoblèm sa a ak sa. Se konsa, ke pwogram tèt li te defekte. Men, si ou sòt de fòje devan yo ak egzekite liy sa a olye de sa, y egal x vle di tou sa jis adrès se yon x, tou mete l 'nan y. Se konsa, pictorially, nou te reprezante sa a ak de flèch soti nan x ak pou soti nan y pwente nan plas la menm. Se konsa, Semantics, x ki egal y paske tou de nan sa yo yo estoke menm bagay la tou adrès, èrgo montre nan 42, epi kounye a, lè ou di zetwal y, ale nan adrès la nan y, sa a te gen yon efè segondè enteresan. Se konsa, adrès la nan y se nan menm bagay kòm adrès la nan x. Se konsa, si ou di ale nan adrès la nan y ak chanje valè la a 13, ki lòt moun ap afekte? X se, pwen D, se konsa pale, yo ta dwe afekte kòm byen. Ak tout bon, ki jan Nick te trase foto sa a nan claymation te egzakteman sa. Menm si nou swiv konsèy la y, nou te fini nan plas la menm, ak Se konsa, si nou te ekri ak lèt ​​detache soti x oswa y pointee a, Lè sa a, nou ta renmen wè valè a nan 13. Koulye a, mwen di pointee yo dwe ki konsistan avèk videyo a. Pwogramasyon, nan m ' konesans, pa janm aktyèlman di mo pointee a, sa ki pwenti a, men pou konsistans ak videyo a, reyalize sa a, se tout sa ki te vle di nan ki sitiyasyon. Se konsa, nenpòt kesyon sou claymation oswa endikasyon oswa malok jis ankò? Se pa? Tout dwa. Se konsa, san yo pa plis tarde, kite a pran yon gade nan kote sa a gen aktyèlman te itilize pou kèk tan. Se konsa, nou te gen bibliyotèk CS50 sa a ki nan te resevwa tout nan fonksyon sa yo. Nou te itilize GetInt yon anpil, GetString, pwobableman pi bonè GetLongLong nan pset mwen youn oswa konsa, men sa k ap aktyèlman te ale sou? Oke, kite a pran yon gade rapid anba kapo a nan yon pwogram ki enspire poutèt sa nou ba ou CS50 nan bibliyotèk, ak tout bon kòm nan semèn pase a, nou te kòmanse pran moun wou fòmasyon an. Se konsa, sa se kounye a Ranje nan yon otopsi nan sa ki ki te ale sou andedan bibliyotèk la CS50, menm si nou kounye a pral kòmanse deplase lwen soti nan li pou pifò pwogram yo. Se konsa, sa a se yon pwogram ki rele skanf 0. Li nan super kout. Li jis gen liy sa yo, men li entwodui yon fonksyon rele skanf ke nou ap aktyèlman pral wè nan yon ti moman andedan nan bibliyotèk la CS50, kwake nan yon fòm yon ti kras diferan. Se konsa, pwogram sa a sou liy 16 se deklare yon x varyab. Se konsa, ban m 'kat bytes pou yon int. Li te di itilizatè, Nimewo tanpri, ak Lè sa a sa a se yon liy enteresan ki aktyèlman mare ansanm semèn pase a ak sa a. Skanf, ak Lè sa remake li pran yon fòma fisèl, jis tankou printf, % m vle di yon int, ak Lè sa li pran yon dezyèm agiman ki sanble yon ti kras Funky. Li nan comercial x, ak sonje, nou sèlman te wè semèn sa a yon fwa pase. Ki sa ki comercial x reprezante? Ki sa ki comercial fè nan C? Yeah? ODYANS: postal la nan. DAVID Malan: postal la nan. Se konsa, li opoze a nan operatè a etwal, Lè nou konsidere ke operatè a zetwal di, ale nan adrès sa a, operatè a comercial di, figi konnen an adrès nan varyab sa a, ak kidonk sa a se kle, paske objektif skanf a nan lavi se yo analysis nan nan itilizatè enfòmasyon nan men gwoup klavye a, depann sou tou sa l 'oswa li te kalite, ak Lè sa a li opinyon ki itilizatè a nan yon varyab, men nou te wè nan de semèn ki sot pase yo ki ki fonksyon swap ke nou eseye efor aplike te jis kase. Sonje byen, ak fonksyon an swap, si nou jis te deklare A ak B kòm antye, nou te avèk siksè swap a de varyab andedan nan swap jis tankou ak lèt ​​la ak OJ, men le pli vit ke swap tounen, sa ki te rezilta a ki gen rapò x ak y, valè orijinal yo? Pa gen anyen. Yeah. Pa gen anyen ki te pase tan sa a, paske echanj chanje sèlman kopi lokal li yo, sa vle di, tout tan sa a, chak fwa nou te te pase nan agiman nan fonksyon, nou ap jis pase kopi nan tout sa yo agiman. Ou ka fè ak sa tou sa ou vle ak yo, men yo pwal santi yo pa gen okenn efè sou valè yo orijinal la. Se konsa, sa se yon pwoblèm si ou vle gen yon fonksyon tankou skanf nan lavi, ki gen objektif se yo analysis D 'itilizatè a nan soti nan klavye a ak Lè sa a ranpli nan espas vid yo, se konsa yo pale, se sa ki, bay yon varyab tankou x se yon valè, paske si m 'te jis pase x skanf, si ou konsidere lojik la nan dènye semèn, skanf ka fè tou sa li vle ak yon kopi x, men li pa t 'kapab pou tout tan chanje x sof si nou bay skanf yon kat jeyografik trezò, se konsa pale, kote x make plas la, annakò ak sa nou pase nan adrès ki nan x se konsa ke skanf ka ale la ak aktyèlman chanje valè a nan x. Se konsa, tout bon, tout ke pwogram sa a fè si mwen fè skanf 0, nan sous mwen 5m anyè, asire skanf 0, dot koupe skanf, nimewo tanpri 50, mèsi pou 50 an. Se konsa, li pa tout sa ki enteresan, men sa k ap pase tout bon se ke le pli vit ke mwen rele skanf isit la, valè a nan x se ke yo te tout tan chanje. Koulye a, sa a sanble bèl ak bon, ak an reyalite, li sanble tankou nou pa reyèlman bezwen bibliyotèk la CS50 nan tout ankò. Pou egzanp, kite a kouri sa a yon fwa plis isit la. Kite m 're-louvri li pou yon dezyèm fwa. Ann eseye yon PO tanpri ak olye pou yo li di 50 tankou anvan, kite yo jis di pa gen okenn. OK, sa a, se yon ti kras etranj. OK. Epi jis kèk istwa san sans isit la. Se konsa, li pa sanble yo okipe sitiyasyon inègza. Se konsa, nou bezwen minim kòmansman pandan l ajoute kèk erè-tcheke a asire w ke itilizatè a gen tape nan yon nimewo aktyèl tankou 50, paske aparamman sezisman pawòl se pa sa detekte kòm pwoblèm, men li pwobableman ta dwe. Se pou yo gade nan vèsyon sa-a kounye a sa a, se tantativ mwen an reimplement GetString. Si skanf gen tout bagay sa a fonctionnalités bati nan, poukisa nou te diletantism ak sa yo wou fòmasyon tankou GetString? Oke, isit la se petèt pwòp mwen senp vèsyon an GetString kijan yon semèn de sa, mwen ta ka yo te di, ban m 'yon fisèl ak rele li pezib. Jodi a, mwen pral kòmanse jis li di zetwal Char, ki, sonje, li nan jis synonyme. Li sanble scarier men li la egzak menm bagay la. Se konsa, ban m 'yon varyab rele zòn de defans ki k ap pase nan magazen yon fisèl, di fisèl la itilizatè tanpri, ak Lè sa a, jis tankou anvan, se pou yo eseye prete leson sa a skanf % s tan sa a ak Lè sa a pase nan zòn de defans. Koulye a, yon chèk saniti rapid. Poukisa mwen pa di comercial pezib tan sa a? Dégager soti nan egzanp lan anvan yo. ODYANS: Char zetwal se yon konsèy. DAVID Malan: Egzakteman, paske tan sa a, Char zetwal se deja yon konsèy, yon adrès, pa definisyon nan ki zetwal yo te gen. Men, si skanf espere yon adrès, li sifizan jis konsa, nan zòn de defans. Mwen pa bezwen di comercial tanpon. Pou kirye a, ou te kapab fè yon bagay tankou sa a. Li ta gen diferan sans. Sa a ta ba ou yon konsèy nan yon konsèy, ki se aktyèlman yon bagay ki valab nan C, men pou kounye a, se pou yo kenbe li senp epi kenbe istwa a ki konsistan. Mwen jis ale nan pase nan pezib e ke sa a kòrèk. Pwoblèm nan menm si se sa a. Kite m 'ale pi devan epi kouri sa a pwogram apre konpile li. Fè skanf 1. Modi li, du mwen an pwan erè m 'yo. Ban m 'yon sèl dezyèm fwa. Rezone. Se pou nou di skanf-1.c. OK. Gen nou ale. Mwen bezwen l. ID CS50 gen divès kalite anviwònman konfigirasyon ki pwoteje ou kont tèt ou. Mwen te bezwen enfim moun pa kouri rezone manyèlman tan sa a. Se konsa, fisèl tanpri. Mwen pral ale pi devan epi tape nan mond pi renmen alo mwen. OK, nil. Sa a pa ki sa mwen tape. Se konsa, li indicative de yon bagay ke yo te sa ki mal. Kite m 'ale pi devan epi tape nan yon fisèl reyèlman long. Mèsi pou nil la ak Mwen pa konnen si mwen pral pou kapab aksidan li. Ann eseye yon ti kras kopi keratin ak wè si sa a ede. Jis kole yon anpil nan sa a. Li definitivman yon pi gwo fisèl pase nòmal. Se pou nou jis reyèlman ekri li. No Modi li. Pa mande jwenn. Se konsa, sa a, se gen rapò. Sa a paske mwen kopye kèk karaktè move, men sa a vire soti a pa pral travay. Ann eseye sa a yon fwa plis, paske li a plezi pi plis si nou aktyèlman aksidan li. Se pou yo tape sa a epi kounye a, mwen se ale nan kopi yon kòd reyèlman long e kounye a, kite a wè si nou ka aksidan bagay sa a. Avi mwen omisyon espas ak liy ak nouvo virgules ak tout karaktè Funky. Antre nan. Epi, koulye a rezo a nan jis ke yo te ralanti. Mwen te kenbe desann Kòmandman-V twò lontan, byen klè. Modi li! Pa mande jwenn. OK. Oke, pwen an se Alòske sa ki annapre yo. Se konsa, sa se aktyèlman pral sou ak deklarasyon sa a a Char tanpon zetwal sou liy 16? Se konsa, sa mwen ap resevwa menm lè m 'deklare yon konsèy? Tout sa mwen ap resevwa se yon valè kat multiple rele zòn de defans, men sa ki nan andedan nan li nan moman sa a? Se jis kèk valè fatra. Paske nenpòt ki lè ou deklare yon varyab nan C, li nan jis kèk valè fatra, epi nou ap kòmanse vwayaj sou reyalite sa a. Koulye a, lè m'ap di skanf, ale nan adrès sa a , li mete tou sa ki kalite itilizatè nan. Si itilizatè a kalite nan alo mond, byen, kote mwen mete l '? Tanpon se yon valè fatra. Se konsa, sa a, se kalite tankou yon flèch ki nan lonje dwèt moun ki konnen ki kote. Petèt li nan lonje dwèt dwa isit la nan memwa mwen. Se konsa, lè itilizatè a kalite nan mond hello, pwogram nan ap eseye mete nan fisèl alo mond antislach 0 nan ki ti moso nan memwa. Men, avèk gwo pwobablite, men klèman pa 100% pwobabilite, òdinatè a ki pral Lè sa a, aksidan pwogram lan paske sa a se pa memwa mwen ta dwe gen dwa manyen. Se konsa, nan ti bout tan, pwogram sa a se defekte pou egzakteman rezon ki fè sa. Mwen fondamantalman pa fè ki sa? Ki etap, mwen omisyon, jis tankou nou omisyon ak premye egzanp Binky a? Yeah? ODYANS: alokasyon memwa? DAVID Malan: alokasyon memwa. Mwen pa te resevwa lajan aktyèlman nenpòt memwa pou ki fisèl. Se konsa, nou ka ranje sa a nan yon koup nan fason. Youn, nou ka kenbe li senp ak nan reyalite, kounye a ou se pral kòmanse wè yon konfizyon nan liy ki ant sa yon etalaj se, ki sa yon fisèl se, ki sa yon zetwal Char se, ki sa yon etalaj de charaktèr se. Isit la nan yon dezyèm egzanp ki enplike strings ak avi tout mwen te fè sou liy 16 se, olye pou yo li di ki zòn de defans a pwal yon Char etwal, yon konsèy nan yon ti moso nan memwa, Mwen pral trè dinamik bay tèt mwen yon zòn de defans pou 16 karaktè, ak nan reyalite, si w ap abitye ak tampon nan tèm, pwobableman soti nan mond lan nan videyo, kote yon videyo ki tampon, tampon, tampon. Oke, sa ki nan koneksyon an isit la? Oke, Anndan nan YouTube ak andedan nan jwè videyo jeneralman se yon etalaj sa a, se pi gwo pase 16. Li ta ka yon etalaj de gwosè yon sèl megaokte, petèt 10 megabit, ak nan ki etalaj fè navigatè ou a download yon pakèt antye nan bytes, yon pakèt antye nan megabit nan videyo, ak jwè a videyo, YouTube a oswa moun ki va la, kòmanse lekti bytes nan soti nan ki etalaj, ak nenpòt ki lè ou wè nan tampon mo, tampon, sa vle di jwè a gen vinn nan fen a nan ki etalaj. Rezo a se konsa dousman ke li a pa gen anyen rampli etalaj la ki gen plis bytes e konsa w ap soti nan Bits yo montre nan itilizatè a. Se konsa, zòn de defans se yon tèm nimewo apatman isit la nan ki li nan jis yon etalaj, yon ti moso nan memwa. Lè sa a pral fikse li paske li vire soti ke ou ka trete ranje tankou si yo adrès, menm si tanpon se jis yon senbòl, li nan yon sekans nan karaktè, tanpon, sa a, se itil pou m ', pwogramè a, ou ka pase non li alantou tankou si li te yon konsèy, tankou si li te adrès la nan yon moso nan memwa pou 16 charaktèr. Se konsa, sa a, se yo di, mwen ka pase skanf la egzakteman mo sa a ak konsa koulye a, si mwen fè pwogram sa a, fè skanf 2, dot koupe skanf 2, ak kalite nan alo mond, Antre, ki time-- O o, sa ki te pase? Fisèl tanpri. Ki sa m 'fè ki mal? Bonjou mond, tanpon. Bonjou nan lemonn. Ah, mwen konnen sa li a fè. OK. Se konsa, li nan lekti moute jouk espas ki la an premye. Se konsa nou tronpe pou jis yon ti moman ak di mwen jis te vle tape yon bagay reyèlman long tankou sa a se yon fraz ki long sa a, se yon sèl, de, twa, kat, senk, sis, sèt, uit, nèf, 10, 11, 12, 13, 14, 15, 16. OK. Li se vre yon fraz long. Se konsa, sa a se fraz pi lontan pase 16 karaktè ak pou lè m 'frape Antre, sa ki pwal rive? Oke, nan ka sa a nan la istwa, mwen te deklare tanpon ki aktyèlman yo te yon etalaj ak 16 charaktèr pare ale. Se konsa, yon sèl, de, twa, kat, senk, sis, sèt, uit, nèf, 10, 11, 12, 13, 14, 15, 16. Se konsa, 16 karaktè, epi kounye a, lè m ' li nan yon bagay tankou sa a se yon long fraz, ki sa ki pwal pase se ke mwen pral li nan sa a se yon long S-E-N-T-E-N-C-E, fraz. Se konsa, sa a se fè espre yon move bagay ke mwen kenbe ekri pi lwen pase a limit nan etalaj mwen, pi lwen pase limit yo nan zòn de defans mwen. Mwen te kapab jwenn chans ak pwogram nan ap kenbe sou kouri ak pa pran swen, men jeneralman pale, sa a pral tout bon aksidan pwogram m 'yo, epi li se yon ensèk nan m ' kode moman sa a mwen etap pi lwen pase limit yo nan ki etalaj, paske mwen pa konnen si li nan nesesèman ale nan aksidan oswa si mwen jis ale nan jwenn chans. Se konsa, sa se yon pwoblèm paske nan sa a, li sanble yo travay e kite yo tante sò isit la, menm si IDE a sanble li rive tolere byen yon ti jan de- Gen nou ale. Finalman. Se konsa, mwen youn nan sèlman ki kapab wè sa a. Se konsa, mwen jis te gen yon anpil plezi sezisman soti yon reyèlman long fraz aktyèl ke li sètènman depase 16 bytes, paske mwen tape nan sa a fou lontan milti-liy fraz, ak Lè sa a remake sa ki te pase. Pwogram nan te eseye enprime li ak Lè sa a te resevwa yon fay segmentation ak fot segmentation se lè yon bagay tankou sa rive ak sistèm nan fonksyone di pa gen okenn, pa ka manyen ki memwa. Nou pral touye pwogram nan tout ansanm. Se konsa, sa a sanble Pwoblematik. Mwen te amelyore pwogram nan kijan omwen gen kèk memwa, men sa a ta sanble yo Fèmen GetString an fonksyon a ap resevwa strings nan kèk longè fini 16. Se konsa, si ou vle sipòte ankò fraz pase 16 karaktè, sa w ap fè? Oke, ou ka ogmante nan gwosè nan zòn de defans sa a jiska 32 oswa ki sanble kalite kout. Poukisa nou pa nou jis fè li 1,000 men pouse tounen. Ki sa ki nan repons lan entwitif nan jis evite pwoblèm sa a pa fè tanpon mwen pi gwo, tankou 1,000 charaktèr? Pa mete ann aplikasyon GetString nan fason sa. Ki sa ki nan bon oubyen move isit la? Yeah? ODYANS: Si ou mare moute yon anpil nan espas epi ou pa sèvi ak li, Lè sa a, ou pa ka aloue ki espas. DAVID Malan: Absoliman. Li nan inutil tèl degre ke si ou pa fè sa aktyèlman bezwen 900 nan tout sa yo bytes e ankò w ap mande pou 1,000 nan total de tout fason, w ap sèlman konsome plis memwa sou òdinatè itilizatè a pase ou bezwen, epi apre tout, kèk nan ou te deja rankontre nan lavi ki lè w ap kouri anpil nan pwogram epi yo ap manje moute anpil nan memwa, sa a ka aktyèlman gen enpak sou pèfòmans ak eksperyans itilizatè a sou òdinatè a. Se konsa, sa a, se kalite yon solisyon parese, pou asire w, ak Kontrèman, li a pa sèlman inutil, ki sa pwoblèm toujou rete, menm si mwen fè m 'tanpon 1,000? Yeah? ODYANS: fisèl la se longè 1,001. DAVID Malan: Egzakteman. Si fisèl ou a se longè 1,001, ou gen egzak menm pwoblèm lan, ak pa agiman m 'yo, mwen ta jis Lè sa a, fè l '2000, men ou pa konnen nan avanse ki jan gwo li ta dwe, E ankò, mwen gen yo konpile pwogram mwen anvan refize kite pèp itilize ak download li. Se konsa, sa a se egzakteman ki kalite bagay ki ap eseye yo bibliyotèk CS50 ede nou ak ak nou pral sèlman ti koutje sou nan kèk nan aplikasyon an kache isit la, men sa a se CS50 dot C. Sa a se dosye a ki nan te sou CS50 IDE tout semèn sa yo ki ou ve yo te lè l sèvi avèk. Li nan pre-konpile ak ou te lè l sèvi avèk li otomatikman pa nati ki gen nan kase L CS50 drapo ak rezone, men si mwen desann nan tout nan fonksyon sa yo, isit la nan GetString, ak jis ba ou yon gou nan sa k ap pase sou li a, kite a pran yon gade rapid nan konpleksite nan manm fanmi. Li pa yon long super fonksyon, men nou pa t ' gen panse difisil sou tout ki jan yo ale sou kesyon pran strings. Se konsa, isit la nan zòn de defans mwen epi mwen aparamman inisyalize li nan nil. Sa a, nan kou, se nan menm bagay tankou zetwal Char, men mwen deside nan mete ann aplikasyon bibliyotèk la CS50 ke si nou ap ale nan dwe konplètman dinamik, Mwen pa konnen nan avanse ki jan gwo nan yon itilizatè fisèl yo ale nan vle jwenn. Se konsa, mwen pral kòmanse ak jis yon fisèl vid ak mwen pral konstwi kòm anpil memwa kòm mwen bezwen nan anfòm fisèl la itilizatè epi si mwen pa gen ase, mwen pral mande sistèm nan fonksyone pou plis memwa. Mwen pral pou avanse pou pi fisèl yo nan yon moso pi gwo nan memwa ak mwen pral lage oswa gratis nan ensufizant moso gwo nan memwa epi nou ap jis ale fè sa iterativman. Se konsa, Yon ti koutje sou rapid, isit la nan jis yon varyab ak ki mwen pral kenbe tras nan kapasite a nan zòn de defans mwen. Konbyen bytes mwen kapab anfòm? Isit la nan yon n varyab ak ki mwen pral kenbe tras nan konbyen bytes yo aktyèlman an tanpon an oswa ki te itilizatè a tape. Si ou pa te wè sa a anvan, ou ka presize ki yon varyab tankou yon int se siye, ki kòm non an sijere, vle di li ki pa negatif, e poukisa ta Mwen janm vle deranje espesifye ke yon int se pa sèlman yon int, men li la yon int siye? Li se yon int ki pa negatif. Ki sa ki [fèbl a] vle di? ODYANS: Li nan dekri yon kantite lajan nan memwa ki ka [fèbl]. DAVID Malan: Yeah. Se konsa, si mwen di siye, sa a se aktyèlman ban nou yon sèl ti jan nan siplemantè memwa epi li sanble kalite komik, men si ou gen yon sèl ti jan nan plis memwa, ki vle di ou gen de fwa tankou anpil valè ou ka reprezante, paske li kapab yon 0 oswa yon 1. Se konsa, pa default, yon int kapab apeprè negatif 2 milya dola tout wout la jiska pozitif 2 milya dola. Moun sa yo se chenn gwo, men li la toujou kalite inutil si ou sèlman pran swen sou gwosè, ki jis entwitif yo ta dwe ki pa Peye-negatif oswa pozitif oswa 0, byen lè sa a, poukisa w'ap gaspiye 2 milya dola valè posib pou nimewo negatif si ou pa janm ap ale nan sèvi ak yo? Se konsa, lè li di siye, kounye a int mwen kapab gen ant 0 ak apeprè 4 milya dola. Se konsa, isit la nan jis yon int C pou rezon nou pa pral jwenn nan jis kounye a kòm poukisa li nan yon int olye pou nan yon Char, men isit la se Esansyèl la nan sa k ap pase sou li a, ak kèk nan nou ta ka lè l sèvi avèk, pou egzanp, nan fonksyon fgetc menm nan pset kat oswa apre sa, nou pral wè li ankò nan pwoblèm mete senk, fgetc se bèl paske kòm non an kalite, sòt de arcanely sijere, li nan yon fonksyon ki vin yon karaktè ak sa, sa ki nan fondamantalman diferan sou sa n ap fè nan GetString se nou pa ap sèvi ak skanf nan menm fason an. Nou ap jis trennen sou vant ansanm etap-pa-etap sou tou sa te itilizatè a tape nan, paske nou ka toujou asiyen yon sèl Char, e konsa nou kapab toujou san danje gade nan yon sèl Char nan yon moman, ak majik la kòmanse rive isit la. Mwen pral woulo liv desann nan mitan an nan fonksyon sa a jis prezante yon ti tan fonksyon sa a. Anpil tankou gen nan yon fonksyon malok, gen nan yon fonksyon realloc kote realloc pèmèt ou aloue yon ti moso nan memwa , epi fè li pi gwo oswa pi piti. Istwa Se konsa, lontan kout ak ak yon vag nan men m 'pou jodi a, konnen ke sa GetString ap fè se li nan sòt a maji ap grandi oswa réduction tanpon a kòm itilizatè a kalite nan fisèl li. Se konsa, si itilizatè a kalite yon fisèl ti bout tan, sa a Kòd sèlman rezèvè ase memwa nan anfòm fisèl la. Si itilizatè a kenbe sezisman jan mwen te fè l 'ankò e ankò e ankò, byen, si nan tanpon nan okòmansman sa a gwo ak pwogram nan reyalize, nan rete tann yon minit, mwen soti nan espas, li pral a doub gwosè a nan zòn de defans la ak Lè sa a double gwosè a nan zòn de defans la ak kòd la ki fè double nan, si nou gade nan li isit la, li nan jis sa a entelijan yon sèl-revètman. Ou pa ta ka gen pou wè sa a sentaks anvan, men si ou di zetwal egal, sa a se menm bagay la kòm li di kapasite fwa 2. Se konsa, li jis kenbe double kapasite a nan zòn de defans la ak Lè sa a di realloc bay tèt li ke memwa plis ankò. Koulye a, kòm yon sou kote, gen lòt fonksyon nan isit la ke nou pa pral gade nan nenpòt detay lòt pase yo montre nan GetInt, nou itilize GetString nan GetInt. Nou tcheke ke li pa nil, ki, sonje, se valè a espesyal ki vle di yon bagay ale mal. Nou ap soti nan memwa. Pi bon tcheke pou sa. Apre sa, nou retounen yon valè Sentinel. Men, mwen pral ranvwaye nan kòmantè yo ke yo poukisa e lè sa a nou sèvi ak sa a kouzen li nan skanf rele sskanf epi li vire soti ki skanf sskanf, oswa fisèl, pèmèt ou pran yon gade nan liy la ki te itilizatè a tape nan epi kite ou analize li esansyèlman ak sa mwen se fè isit la se mwen di sskanf, analize tou sa itilizatè a gen tape nan, epi fè sèten% mwen, gen yon nonb antye relatif nan li, epi nou pa pral jwenn nan jodi a egzakteman poukisa gen nan tou yon% c isit la, men sa nan yon Nutshell pèmèt nou yo detekte si gen itilizatè a tape nan yon bagay fos apre nimewo a. Se konsa, rezon ki fè GetInt ak GetString di ou rekoumanse, rekoumanse, rekoumanse se paske nan tout nan ke kòd nou te ekri nan Liv la li nan kalite gade nan D 'itilizatè a nan fè si li nan antyèman nimerik oswa li nan yon k ap flote aktyèl valè pwen oswa renmen an, depann sou sa ki valè fonksyone w ap itilize. Wou. OK. Sa ki te yon gren men pwen an isit la se ki rezon ki fè yo nou te gen moun wou fòmasyon sou se paske nan nivo a pi ba a, gen se jis bagay sa yo anpil ki ka ale mal ke nou te vle preemptively okipe bagay sa yo sètènman nan la pi bonè semèn nan klas la, men kounye a ak PSet kat ak senk ak PSet pi lwen pase ou pral wè ke li nan plis l ou men tou, w ap plis kapab nan rezoud moun kalite pwoblèm tèt ou. Nenpòt kesyon sou GetString oswa GetInt? Yeah? ODYANS: Poukisa ou ta double kapasite a nan zòn de defans la olye ke sèlman ogmante li pa kantite lajan an egzak? DAVID Malan: Bon kesyon. Poukisa nou ta double kapasite a nan zòn de defans la kòm opoze jis ogmante li pa kèk valè konstan? Se te yon desizyon konsepsyon. Nou jis deside ke paske li gen tandans fè gen yon ti kras chè tan-ki gen bon konprann yo mande sistèm nan fonksyone pou memwa, nou pa t ' vle fini trape nan yon sitiyasyon pou strings gwo ke nou te mande eksplwatasyon an ankò e ankò e ankò epi ankò nan siksesyon rapid pou memwa. Se konsa, nou jis deside, yon ti jan abitrèman men nou espere rezonab, sa, ou konnen ki sa, se pou yo eseye jwenn devan yo nan tèt nou ak jis kenbe li pou ke double nou misyon pou minimize kantite lajan an nan fwa nou gen yo rele malok oswa realloc, men yon jijman manm rele nan absans la nan konnen sa itilizatè ta ka vle tape nan. Tou de fason ta ka plozibl. Joui bon. Se konsa, kite a pran yon gade nan yon koup nan efè segondè lòt kote nan memwa, bagay ki ka ale mal ak zouti ke ou ka itilize trape sa yo kalite erè. Li sanble tout nan nou, menm si check50 pa te di nou kòm anpil, yo te ekri buggy Kòd depi semèn yon sèl, menm si tout tès yo check50 pase, e menm si ou menm ak ou TF se super konfyans ke kòd ou a ap travay kòm gen entansyon. Te kòd ou a te buggy oswa defekte nan ke tout nan nou, nan lè l sèvi avèk bibliyotèk la CS50, yo te koule memwa. Ou ve yo te mande sistèm nan fonksyone pou memwa nan pi fò nan pwogram yo ou te ekri, men ou te pa janm aktyèlman bay l 'tounen. Ou te rele GetString ak GetInt ak GetFloat, Men, se avèk GetString, ou te pa janm rele unGetString oswa Bay Fisèl Retounen oswa tankou an, men nou te wè ki GetString fè asiyen memwa pa fason pou malok oswa sa a realloc fonksyon, ki se jis trè menm jan an nan lespri, e ankò, nou ve yo te mande sistèm nan fonksyone pou memwa ak memwa ankò e ankò men pa janm bay li tounen. Koulye a, kòm yon sou kote, li sanble ke lè yon pwogram kit, nan tout memwa a se otomatikman te libere. Se konsa, li pa te gen yon kontra gwo. Li nan pa ale nan kraze nan IDE oswa bagay sa yo ralanti desann, Men, lè pwogram fè jeneralman genyen fuit memwa epi yo ap kouri pou yon tan long. Si ou te janm wè ti kras nan estipid boul plaj nan Mac OS oswa sabliye a sou Windows kote li nan kalite ralanti desann oswa panse oswa panse oswa jis reyèlman kòmanse yo ralanti a yon rale, li trè posib ta ka rezilta a nan yon fwit memwa. Pwogramasyon yo ki te ekri lojisyèl an w ap itilize mande sistèm nan fonksyone pou memwa chak kèk minit, chak èdtan. Men, an si w ap kouri lojisyèl, menm si li nan minimize nan òdinatè w lan pou èdtan oswa jou sou fen, ou ka mande pou pi plis ak plis memwa epi pa janm aktyèlman sèvi ak li e konsa kòd ou a ta ka, oswa pwogram ta ka koule memwa, epi si ou kòmanse genyen fuit memwa, gen nan mwens memwa pou lòt pwogram, ak efè a se ralanti tout bagay desann. Koulye a, sa a se pa lwen youn nan pwogram ki pi atròs w ap gen opòtinite nan kouri nan CS50 tèl degre kòm pwodiksyon li se menm plis Esoteric pase sonnen nan oswa fè nan oswa nenpòt nan yo lòd, ki pwogram liy nou te kouri devan men Erezman, entegre nan pwodiksyon li se kèk konsèy itil ki super pral itil swa pou PSet kat oswa sètènman pset senk. Se konsa, Valgrind se yon zouti ki ka itilize yo gade pou fwit memwa nan pwogram ou an. Li nan relativman senp nan kouri. Ou kouri Valgrind ak Lè sa a, menm menm si li nan yon ti kras sil, priz fwit priz chèk egal plen, ak Lè sa a dot koupe ak non an nan pwogram ou an. Se konsa, Valgrind pral Lè sa a kouri pwogram ou an ak nan fen la anpil nan pwogram ou an kouri anvan li kit ak ba ou yon lòt èd memwa, li k ap pase yo analize ou pwogram pandan y ap li a te kouri epi di ou ou te genyen fuit nenpòt memwa ak pi bon toujou, ou te manyen memwa ki pa t 'fè pati nan ou? Li pa ka trape tout bagay, men li la trè bon nan pwan pi bagay sa yo. Se konsa, isit la nan yon egzanp ki gen kouri mwen pwogram sa a, li te gen kouri Valgrind, sou yon pwogram yo rele memwa, ak mwen pral mete aksan sou liy ki ki finalman nan enterè yo ban nou. Se konsa, gen nan menm plis distraksyon ke mwen te efase soti nan glise la. Men, kite a jis wè ki sa sa a pwogram se kapab nan di nou. Li nan ki kapab di nou bagay sa yo tankou valab ekri nan gwosè 4. Nan lòt mo, si ou manyen memwa, espesyalman 4 bytes nan memwa ke ou pa ta dwe gen, Valgrind ka di ou sa. Envalid ekri nan gwosè 4. Ou manyen kat bytes ke ou pa ta dwe gen. Ki kote ou te fè sa? Sa a se bote a. Dot memwa liy c 21 a se kote ou vise moute ak Se poutèt sa li a itil. Anpil tankou gdb, li ka ede pwen ou nan erè a vrè. Koulye a, yon sèl sa a nan yon ti kras plis sil, si se pa konfizyon. 40 bytes nan 1 blòk yo definitivman pèdi nan dosye pèt 1 nan 1. Ki sa sa vle di? Oke, li jis vle di ou mande pou 40 bytes epi ou pa janm te bay l 'tounen. Ou rele malok oswa ou rele GetString ak sistèm nan fonksyone te ban nou 40 bytes, men ou pa janm libere oswa lage ke memwa, ak yo dwe jis, nou te pa janm montre w kouman bay tounen memwa. Vire soti gen nan yon super fonksyon senp rele gratis. Pran yon sèl agiman, bagay la ou vle libere oswa bay tounen, men 40 bytes, aparamman, nan pwogram sa a yo te pèdi nan liy 20 nan memwa dot c. Se konsa, kite a wè pwogram sa a. Li nan super initil. Li sèlman demontre erè patikilye sa a. Se konsa, kite a pran yon gade. Isit la se prensipal ak prensipal yo, avi, apèl yon fonksyon rele f ak Lè sa a retounen. Se konsa, pa tout sa ki enteresan. Ki sa ki f fè? Avi mwen pa t 'bezwen deranje ak yon pwototip. Mwen te vle kenbe kòd la kòm minim ke posib. Se konsa, mwen mete pi wo a prensipal ak f sa a, se amann, sètènman, pou pwogram kout tankou sa a. Se konsa, f pa retounen anyen ak fè pa pran anyen, men li fè sa. Li deklare, anpil tankou nan egzanp lan Binky, yon konsèy rele x ki k ap pase nan magazen adrès la nan yon int. Se konsa, sa a, se bò gòch-men yo. Nan lang angle, ki sa ki la bò men dwat-ou ap fè? Nenpòt moun ki? Ki sa ki sa a ap fè pou nou? Yeah? ODYANS: [fèbl] fwa gwosè a nan yon int ki se 10 fwa ke [fèbl] DAVID Malan: Bon ak kite m 'rezime. Se konsa, asiyen ase espas pou 10 nonm antye relatif oswa 10, sa ki nan gwosè a nan yon int, li nan kat bytes, se konsa 10 fwa 4 se 40, se konsa ke bò men dwat-ou ke mwen te make se ban m '40 bytes ak magazen adrès la nan multiple an premye nan x. Epi, koulye a anfen, ak isit la a kote pwogram sa a se buggy, sa ki nan mal ak liy 21 ki baze sou ki lojik? Ki sa ki nan mal ak liy 21? Yeah? ODYANS: Ou pa kapab endèks nan x [fèbl]. DAVID Malan: Yeah. Mwen pa ta dwe endèks nan x tankou sa. Se konsa, syntactically, ki nan OK. Ki sa ki nan bèl se, anpil tankou ou ka trete non an nan yon etalaj tankou si li nan yon konsèy, Menm jan an tou ou ka trete yon konsèy tankou si li nan yon etalaj, Se poutèt sa mwen kapab syntactically di x bracket yon bagay, x bracket mwen, men 10 an se yon pwoblèm. Poukisa? ODYANS: Paske li pa anndan an. DAVID Malan: Li pa andedan ki ti moso nan memwa. Ki sa ki nan valè a pi gwo mwen ta dwe dwe mete nan sa yo parantèz kare? 9, 0 a 9. Paske nan zewo Indexing. Se konsa, 0 jiska 9 ta dwe amann. Sipò 10 se pa byen ak sa ki men, sonje menm si, chak fwa Mwen sanble yo eseye fè CS50 IDE aksidan lè ou tape nan valè fos, li pa toujou kolabore, ak tout bon, ou souvan jwenn chans jis paske nan sistèm opere pa fè sa remake ke w te janm konsa yon ti kras pase kèk ti moso nan memwa, paske ou te rete nan teknikman segman ou, men plis sou sa nan yon klas sistèm operasyon, ak pou yon bagay tankou sa te kapab trè fasil ale detèkte. Pwogram ou an pa janm ale nan aksidan toujou men petèt yon fwa nan yon ti moman. Se konsa, kite a eseye Valgrind sou sa a, ak isit la a kote nou pral jwenn akable pa pwodiksyon an ti tan. Se konsa, fè memwa fwit Valgrind chèk egal plen koupe dot memwa. Ak isit la poutèt sa mwen te pwomèt sa a ta sitèlman chaj. Men sa Valgrind, isit la nan ki sa yon pwogramè, gen kèk ane de sa- deside li ta yon bon lide pou pwodiksyon an sanble. Se konsa nou fè sans nan sa a. Se konsa, tout wout la sou bò gòch bò pou okenn rezon bon se pwosesis ID a nan pwogram nan nou jis kouri, idantifyan a inik pou pwogram nan nou jis kouri. Nou efase ki soti nan glise nan, men gen se kèk enfòmasyon itil nan isit la. Se pou nou woulo liv moute sou tèt la anpil. Isit la nan kote nou te kòmanse. Se konsa, li pa tout sa ki anpil pwodiksyon. Isit la nan ki ekri valab nan gwosè 4 sou liy 21. Oke, sa ki te liy 21? Liy 21 te egzakteman sa a epi li fè sans ke mwen se nan valables ekri 4 bytes paske mwen se ap eseye mete nonb antye ki pè sa a, ki ta ka anyen, li jis k ap pase yo zewo, men mwen ap eseye yo mete l 'nan yon kote ki pa fè pati nan mwen. Anplis, desann isit la, 40 bytes nan yon sèl blòk yo definitivman pèdi nan dosye 1. Sa a se paske lè m 'rele malok isit la, pa janm mwen aktyèlman libere memwa a. Se konsa, ki jan nou ka ranje sa a? Kite m 'ale pi devan epi yon ti kras pi an sekirite gen ak fè 9 gen ak kite m 'isit la gratis x. Sa a se fonksyon an nouvo pou jodi a. Si m 'kounye a relance fè koupe dot memwa, se pou yo kouri Valgrind sou li ankò, maksimize fenèt m 'ak frape Antre nan. Koulye a, li la bon. Yo antere bon nouvèl la nan tout nan pwodiksyon sa a. Tout blòk pil wòch yo te gratis. Nou pral tounen vin jwenn sa pil wòch la se, men pa gen okenn fwit yo se posib. Se konsa, sa a se jis yon lòt zouti pou twous zouti ou ak kote ou ka kòmanse jwenn kounye a erè tankou sa. Men, kite a wè sa ki plis kapab ale mal isit la. Se pou nou tranzisyon kounye a aktyèlman rezoud yon pwoblèm. Kòm yon sou kote, si sa a pral soulaje yon ti jan nan konfizyon oswa tansyon, sa a se kounye a amizan. Yeah. Sa a trè bon. Paske endikasyon yo adrès ak adrès yo jeneralman pa konvansyon ekri ak ekzadesimal. Ha, ha, sa a se komik kounye a. Kanmèm, kidonk kite a kounye a aktyèlman rezoud yon pwoblèm. Sa a te gen super, super ba-nivo konsa byen lwen, epi nou ka aktyèlman fè itil bagay ak sa yo detay nan nivo ki ba. Se konsa, nou prezante yon kèk semèn Anons sa pibliye depi nosyon de yon etalaj. Yon etalaj te bèl paske li difisil a netwaye Kòd nou an paske si nou te vle ekri yon pwogram ak elèv miltip oswa non miltip ak kay ak dortwar ak kolèj ak nan tout sa, nou te ka magazen tout bagay plis propr andedan nan yon etalaj. Men, pwopoze yon sèl inconvénient nan yon etalaj konsa byen lwen. Menm si ou pa te soufri li tèt ou nan yon pwogram, jis enstenktiv, ki sa ki yon move bagay sou yon etalaj, petèt? Mwen tande kèk murmura. ODYANS: Li trè difisil chanje gwosè la. DAVID Malan: Li trè difisil chanje gwosè la. Ou pa ka chanje gwosè a nan yon etalaj, an reyalite, se pou chak nan C. Ou ka asiyen yon lòt etalaj, deplase tout bagay soti nan yon sèl la fin vye granmoun nan nouvo a, e kounye a, gen kèk espas anplis, men li pa nan renmen yon lang tankou Java oswa Piton oswa nenpòt ki kantite lòt lang ak ki kèk nan nou ta ka dwe abitye kote ou ka jis kenbe ajoute bagay anons nozim nan fen a nan yon etalaj. Lè ou gen yon etalaj de gwosè 6, se sa ki gwosè li, ak anpil tankou lide a pi bonè li te gen yon tanpon ki gen yon gwosè sèten, ou gen devine soti nan pòtay lavil la sa ki gwosè ou vle l 'yo dwe? Si ou devine twò gwo, w ap gaspiye espas. Si ou devine twò piti, ou pa ka magazen ke done, omwen san yo pa yon anpil plis travay. Se konsa, jodi a, gras a endikasyon, nou kapab kòmanse wanga ansanm pwòp koutim nou estrikti done, ak nan reyalite, isit la se yon bagay ki sanble yon ti kras plis skre nan zye premye, men sa a se ki sa nou pral rele yon lye lis, ak li yo kalite non sentetiz li. Li se yon lis nimewo, oswa nan ka sa a, yon lis ki gen nimewo, men li te kapab fè yon lis ki gen anyen, men li nan lye ansanm pa fason pou flèch, ak jis pran yon devine ak sa teknik nou pral kapab kout zegwi ansanm, sòt de tankou pòpkòn ak yon fil, yon lye lis rektang isit la? Nimewo li yo? Ki sa ki nan karakteristik nan lang kache? ODYANS: Yon konsèy. DAVID Malan: Yon konsèy. Se konsa, chak nan flèch sa yo isit la reprezante yon konsèy oswa jis yon adrès. Se konsa, nan lòt mo, si mwen vle nan magazen yon lis nimewo, Mwen pa ka jis magazen li si mwen vle kapasite nan grandi ak retresi mwen estrikti done nan yon etalaj. Se konsa, mwen bezwen gen yon ti kras plis bagay konplike, men remake ke sa a foto kalite sijere ke si ou te jis te resevwa ti kras fil konekte tout bagay ansanm, pwobableman se pa sa ki difisil yo fè espas nan ant de nan moun rektang oswa de nan tout sa yo nœuds, menm jan nou pral kòmanse rele yo, mete nan yon nouvo ne, ak Lè sa a ak kèk nouvo fil, jis twou twa nœuds yo ansanm, youn nan premye, yon sèl ki sot pase a, ak yon sèl la ke ou jis mete nan mitan yo. Ak tout bon yon lis lye, kontrèman yon etalaj, se dinamik. Li ka grandi ak li kapab retresi ak ou pa fè sa gen konnen oswa pran swen nan avanse ki jan done lajan ou ap ale nan dwe estoke, men li vire soti nou gen yo dwe yon ti kras atansyon sou jan yo ka aplike sa a. Se konsa, premye kite la konsidere ki jan nou aplike youn nan sa yo rektang ti kras. Li fasil aplike yon int. Ou jis di int n ak Lè sa a ou jwenn 4 bytes pou yon int, men ki jan mwen jwenn yon int, rele l 'n, ak Lè sa a yon konsèy, se pou yo rele l 'vini an. Nou te kapab rele sa yo bagay anyen nou vle men mwen bezwen yon estrikti done koutim. Yeah? ODYANS: comercial [fèbl]. DAVID Malan: Se konsa, comercial nou pral itilize yo jwenn adrès ki nan yon ne ki kapab. Men, nou bezwen yon lòt karakteristik nan C yo nan lòd ban m 'kapasite a yo kreye sa a rektang koutim, sa a koutim varyab si ou pral, nan memwa. ODYANS: Yon struct. DAVID Malan: Yon struct. Sonje byen soti nan semèn pase a, nou prezante struct, sa a mo kle relativman senp ki pèmèt nou fè bagay sa yo tankou sa a. C pa t 'vini ak yon done estrikti rele elèv yo. Li vini ak int ak flote ak Char ak sa yo, men li pa vini ak elèv, men nou ka kreye yon kalite done elèv, yon estrikti elèv, ak sentaks sa a isit la. Men, ou pral wè sa a ankò e ankò. Se konsa, pa enkyete sou memorize mo kle sa yo, men mo kle a sa a, se enpòtan an se jis lefèt ke nou te di struct ak Lè sa a nou rele l 'elèv ak andedan elèv la te yon non ak yon kay oswa yon dòtwa oswa renmen an. Se konsa, kounye a jodi a, se pou yo pwopoze sa a. Mwen te ajoute yon kèk mo, men si mwen vle aplike rektang sa a sa a, se te resevwa tou de yon int ak yon konsèy, ou konnen ki sa, mwen ale nan deklare yon struct rele ne. Mwen menm tou, andedan nan li, pral di ke yon ne, rektang sa a, gen yon int epi n ap rele l 'n ak li gen yon konsèy kap vini an. Lè sa a se yon ti kras sil, men si ou panse sou li, flèch yo ki te nan foto a yon ti moman Anons sa pibliye depi yo se nan ki kalite done? Ki kote chak nan sa yo flèch ap montre nan sa di ki kalite estrikti done? Li pa nan lonje dwèt jis yon int se pou chak. Li nan montre nan nan tout bagay rektangilè e ke bagay rektangilè, nou te di, yo rele yon ne. Se konsa, nou kalite gen yo recursive defini sa a tankou ki yon ne, nou va reponn: pral gen yon int rele n ak yon konsèy rele pwochen an ak di ki kalite estrikti done yo ki ki pwen konsèy se aparamman pral fè struct ne. Se konsa, sa a se annoyingly sil ak jis yo dwe pedant, rezon an pou kisa nou pa kapab jis di sa a, ki franchman sanble yon anpil plis lizib, se paske Sonje byen, C li bagay anwo jouk anba, gòch a dwat. Li pa jiskaske nou jwenn nan virgules ki ne la mo kle aktyèlman egziste. Se konsa, si nou vle gen sa a sòt de conjoncture referans andedan nan done yo estrikti, nou dwe fè sa a, kote nou di struct ne nan tèt la, ki ba nou yon fason ki pi long dekri sa a bagay, Lè sa a, andedan nou di struct ne, ak Lè sa a nan liy lan trè dènye nou di, tout dwa, C, nan chemen an, jis rele modi sa a tout antye bagay yon ne epi yo sispann lè l sèvi avèk mo kle a struct tout ansanm. Se konsa, sa a se jis sòt de yon Massachusetts Institute of Technology Trick ki finalman pèmèt nou kreye yon bagay ki sanble egzakteman menm jan ak sa a. Se konsa, si nou sipoze nou kapab kounye a aplike bagay sa a nan C, ki jan nou aktyèlman kòmanse Travelers sa a? Oke, an reyalite, tout sa nou dwe fè se repekte de gòch a dwat ak jis kalite Insert nœuds ou efase nœuds oswa rechèch pou bagay sa yo tout kote nou vle, men yo fè sa, se pou yo ale pi devan epi fè bagay sa yo yon ti kras pi plis reyèl paske sa a te gen super ba-nivo konsa byen lwen. Èske nenpòt moun ki literalman renmen yo dwe an premye? OK. Vini non sou yo. Ki sa ki nan non ou? DAVID: David. DAVID Malan: David. Nice al kontre ou. Mwen tou. Tout dwa. Apre sa, nou bezwen yon nimewo 9. Pa kòm bon jan premye, petèt. OK, nimewo 9. Yon nimewo 17, tanpri. Kite m 'ale tounen yon ti kras pi lwen. Nimewo 22, tanpri, ak ki jan sou pi lwen tounen si mwen ka wè nenpòt ki men ak tout limyè a oswa ki pa gen. Yon moun k ap travay kòm volontè la a. Ou vle vini? Avanbra ou a ap forséman ap moute. OK, 17. 22. 26 la ap vini desann. Èske nenpòt lòt moun renmen forcefully-- Vini non sou yo. Yon volontè vrè. Se konsa, trè byen vit, si ou nèg te kapab fè aranjman pou nou jis tankou nœuds yo sou ekran an. Mèsi poutèt ou. Men, ou pral 26. Tout introductions dwa ak rapid. Se konsa, mwen David, epi ou yo tou? DAVID: David. DAVID Malan: Epi ou yo ye? Jake: Jake. Sue: Sue. ALEX: Alex. RAPHAEL: Raphael. TAYLOR: Taylor. DAVID Malan: Taylor. Ekselan. Se konsa, sa yo, se volontè nou pou jodi a ak ale pi devan ak chanjman yon ti kras fason sa a, ak jis ale pi devan epi kenbe kenbe nimewo ou jan ou ye oswa ou premye siy ak lè l sèvi avèk men gòch ou, ale pi devan ak jis aplike flèch sa yo, jis se konsa ke men gòch ou se literalman montre nan tou sa ou ta dwe pwen a, epi bay tèt ou kèk chanm pou ke nou ka vizyèlman wè bra ou aktyèlman pwente, epi ou ka jis pwen sòt de nan tè a se amann. Se konsa, isit la nou gen yon lis lye nan yon sèl, de, twa, kat, senk nœuds okòmansman, ak avi nou gen sa a espesyal konsèy nan kòmansman an ki moun ki nan kle paske nou gen nan kenbe tras nan tout lis la longè yon jan kanmenm. Mesye sa yo, menm si yo ap kite a dwat, tounen nan tounen nan memwa, yo ka aktyèlman ap nenpòt kote nan memwa òdinatè a. Se konsa, mesye sa yo te kapab fè kanpe nenpòt kote sou sèn nan e ke sa a amann, toutotan yo ap aktyèlman montre nan youn ak lòt, men yo kenbe bagay sa yo pwòp epi ki senp, nou pral jis trase yo gòch a dwat tankou sa a, men ta kapab genyen twou vid ki genyen masiv nan ant moun nœuds. Koulye a, si mwen vle aktyèlman insert kèk nouvo valè, se pou yo ale pi devan epi fè sa. Nou gen yon opòtinite kounye a yo chwazi yon lòt ne. Di kite la kòmanse koupe ak mallocing 55. Èske yon moun lide ke yo te malok? OK, vini sou yo. Ki sa ki nan non ou? RAINBOW: Rainbow. DAVID Malan: Rainbow? Tout dwa. Malok Rainbow. Vini non sou yo. Se konsa, kounye a nou gen mande tèt nou algorithmically kote nou ka mete 55. Se konsa, tout moun nan nou konnen, evidamman, kote li te pwobableman ki dwe si nou ap eseye kenbe sa a Ranje epi si ou nèg te kapab pran yon sèl etap tounen pou nou pa tonbe sèn nan, ki ta ka gwo. Se konsa, aktyèlman, Rainbow, kòmanse sou isit la avè m ', paske nou kòm òdinatè a kounye a kapab sèlman wè yon varyab nan yon tan. Se konsa, si sa a se ne la an premye. Avi li pa yon ne, li se jis yon konsèy, ak Se poutèt sa li te trase yo dwe sèlman gwosè a nan yon konsèy, pa youn nan moun ki rektang plen. Se konsa, nou ap ale nan tcheke nan chak iterasyon se 55 mwens pase 9? No Se 55 mwens pase 17? No Mwens pase 22? Mwens pase 26? Mwens pase 34? Se konsa, kounye a, evidamman Rainbow fè pati nan fen an. Se konsa, yo dwe klè, e ki sa non ou, Taylor te ye? TAYLOR: Taylor. DAVID Malan: Se konsa, nan mitan Taylor a men gòch ak men Rainbow nan isit la, men ki gen bezwen nan pwen nan sa ki nan lòd insert 55 nan lis sa a? Ki sa nou bezwen fè? Yeah? ODYANS: men Taylor a bezwen nan pwen kite. DAVID Malan: Egzakteman. Se konsa, mete yon ne nan nan fen lis la se trè senp paske Taylor jis gen nan pwen, olye pou yo nan tè a oswa nou pral rele li nil, nil se sòt de absans la a yon konsèy oswa yon espesyal zewo konsèy, w ap ale nan pwen ak gòch ou men nan Rainbow ak Lè sa a Rainbow, kote yo ta dwe gòch ou men pwobableman pwen? Desann. Li pa bon si men l 'se sòt a lonje dwèt sou isit la oswa sòt de nenpòt ki fason. Sa ta dwe konsidere se yon valè fatra, men si li lonje dwèt nan kèk valè li te ye, nou pral rele li zewo oswa nil, sa a, se OK paske nou gen yon tèm nan sa a e nou konnen lis la kounye a se konplè. Se konsa, sa nan yon lòt relativman senp ka? Te kapab nou malok 5? Vini non sou yo. Ki sa ki nan non ou? TIFFANY: Tiffany. DAVID Malan: Mwen regrèt? TIFFANY: Tiffany. DAVID Malan: Tiffany. Tout dwa. Tiffany te malloced ak valè a 5. Vini non sou yo. Sa a yon sèl nan relativman fasil tou, men se pou yo konsidere lòd nan operasyon kounye a. Li te trè fasil ak Taylor nan fen an. Nimewo 5 se nan kou mwens pase 9, e konsa nou gen David, nou gen Tiffany, ak sa ki non ou te ye? Jake: Jake. DAVID Malan: Jake. Tiffany, Jake, ak David. Gen men yo ta dwe mete ajou premye? Ki sa ou vle fè isit la? Genyen yon koup fason posib, men gen nan tou youn oswa plis fason sa ki mal. ODYANS: Kòmanse ak leftmost. DAVID Malan: Kòmanse ak leftmost a. Ki moun ki nan leftmost a isit la lè sa a? ODYANS: Premye. DAVID Malan: OK. Se konsa, kòmanse ak premye ak ki kote ou vle mete ajou men David la ta dwe ye? ODYANS: Nan direksyon pou 5 an. DAVID Malan: OK. Se konsa, David, pwen nan senk oswa Tiffany isit la, ak kounye a? ODYANS: Tiffany pwen nan 9 a? DAVID Malan: Pafè, eksepte Binky a tèt jis kalite tonbe sou, dwa? Paske sa ki nan mal ak foto sa a literalman? ODYANS: Pa gen anyen ki montre. DAVID Malan: Pa gen anyen ki montre nan Jake kounye a. Nou te literalman òfelen 9 ak 17, epi nou te gen literalman fwit tout bagay sa yo memwa, paske pa à men David la an premye, sa a, se amann tèl degre ke li nan kòrèkteman montre nan Tiffany kounye a, men si pa gen yon te gen nan Prospective nan pwen an Jake, lè sa a nou te pèdi a antye nan ki lis. Se konsa nou defèt. Se konsa, ki te yon bon bagay yo vwayaj sou men kite a korije kounye a. Ki sa nou ta dwe fè premye olye? Yeah? ODYANS: Tiffany ta dwe pwen nan 9 a? DAVID Malan: mwen pa kapab jwenn ki tou pre ou. Kimoun ki ta dwe pwen nan 9 a? ODYANS: Tiffany. DAVID Malan: Tout dwa. Se konsa, yo ta dwe premye Tiffany pwen nan 9 lan. Se konsa, Tiffany ta dwe pran sou yon valè ki idantik jwenn David, ki sanble redondants pou yon moman, men sa a amann paske kounye a, ki se dezyèm etap, nou ka mete ajou men David la A ak pwen nan Tiffany, ak Lè sa si nou jis kalite pwòp bagay yo tankou si sa a se kalite sezon prentan-tankou, kounye a ke nan yon ensèsyon kòrèk. Se konsa, ekselan. Se konsa, kounye nou ap prèske la. Se pou nou youn final Insert valè tankou valè a 20. Si nou te ka malok yon volontè final? Vini non sou yo. Se konsa, yon sèl sa a nan yon ti kras pi plis difisil. Men, reyèlman, kòd a nou ap ekri, kwake vèbalman, se jis tankou li te gen yon pakèt moun a si kondisyon kounye a, dwa? Nou te gen yon kondisyon tcheke si li fè pati nan fen a, petèt nan konmansman an. Nou bezwen kèk kalite riban jwenn plas la nan mitan yo. Se konsa nou fè sa ak sa ki nan non ou? ERIC: Eric. DAVID Malan: Eric? Eric. Nice al kontre ou. Se konsa, nou gen 20. Mwens pase senk? No Mwens pase nèf? No Mwens pase 17? No OK. Li fè pati isit la ak non ou ankò yo ye? Sue: Sue. DAVID Malan: Sue. ALEX: Alex. DAVID Malan: Sue, Alex, ak? ERIC: Eric. DAVID Malan: Eric. Ki gen men bezwen debarase mete ajou premye? ODYANS: Eric. OK. Se konsa, Eric a ta dwe pwen nan ki kote? Nan 22. Bon. Epi, koulye a sa ki nan pwochen? Sue ka Lè sa a pwen nan Eric e kounye a,, si ou nèg jis fè kèk chanm, ki se amann vizyèlman, kounye a nou te fè ensèsyon an. Se konsa, kite a kounye a konsidere yon kesyon men di ou mèsi anpil pou volontè nou yo. Trè byen fè. Ou ka kenbe sa yo, si ou renmen. Epi nou gen yon kado louvri bèl si ou ta chak renmen pran yon boul estrès. Kite m 'jis pase sa a desann. Se konsa, ki sa ki Takeaway a nan sa a? Sa a sanble ap etonan tèl degre ke nou genyen kounye a prezante yon altènativ a yon etalaj ki pa se konsa nan prizon nan yon etalaj de kèk gwosè fiks yo. Yo ka grandi dynamique. Men, anpil tankou nou te wè nan semèn sot pase yo, nou pa janm jwenn anyen pou gratis, tankou siman gen nan yon komès-off isit la. Se konsa, avèk yon tèt nan yon lye lis, se dinamik sa a? Kapasite sa a yo grandi ak franchman, nou te ka te fè Delete epi nou te kapab retresi jan sa nesesè. Ki sa ki pri yo nou peye? De fwa tankou anpil espas, premye a tout moun. Si ou gade nan foto a, pa gen okenn ankò yé estoke yon lis nonm antye relatif. M 'ap estoke yon lis nonm antye relatif plis endikasyon. Se konsa, mwen double kantite lajan an nan espas. Koulye a, petèt sa a, se pa tankou yon kontra gwo 4 bytes, 8 bytes, men li te kapab sètènman ajoute moute pou aparèy televisyon HD done gwo. Ki sa ki nan yon lòt inconvénient? Yeah? ODYANS: Nou dwe Traverse yo youn-pa-youn. DAVID Malan: Yeah. Nou dwe Traverse yo youn-pa-youn. Ou konnen ki sa, nou te bay moute sa a super karakteristik pratik nan bracket kare notasyon, plis byen li te ye tankou aksè o aza, kote nou ka jis Ale nan yon eleman endividyèl Men, koulye a si mwen toujou te gen volontè m 'isit la, si mwen te vle jwenn nan Nimewo 22, mwen pa kapab jis Ale nan bracket yon bagay yon bagay. Mwen gen yo gade sou lis la, anpil tankou egzanp chache nou an linear, jwenn nimewo a 22. Se konsa, nou sanble yo te peye yon pri a. Men, nou kapab Alòske rezoud lòt pwoblèm tou. An reyalite, kite m 'entwodui jis yon koup la vizyèl. Se konsa, si ou ve yo te desann nan Mather nan Gastronomie Hall dènyèman, ou pral sonje ke yo pil nan plato tankou sa a, nou prete sa yo soti nan Annenberg anvan klas la. Se konsa, sa pil nan plato, menm si, se reprezantan aktyèlman nan yon estrikti done syans òdinatè. Gen yon estrikti done nan syans òdinatè li te ye tankou yon pil ki trè joliman prèt tèt li egzakteman sa a vizyèl. Se konsa, si chak nan plato sa yo se pa yon plato men tankou yon PO epi mwen te nan magazen nimewo, mwen te kapab mete yon sèl desann isit la, ak mwen te kapab mete yon lòt desann isit la, yo e yo kontinye anpile nimewo sou tèt youn ak lòt, ak sa ki nan potansyèlman itil sou sa a se ke sa ki nan enplikasyon la nan sa a estrikti done? Ki nonb mwen kapab rale mete deyò premye ki pi bon? Pi resamman yon sèl mete nan sou la. Se konsa, sa a se sa nou ta rele nan syans òdinatè yon done LIFO estrikti. Sot pase a nan, premye deyò. Epitou, n ap wè anvan lontan poukisa ke sa ta kapab itil, men pou kounye a, jis konsidere pwopriyete a. Lè li nan kalite estipid si ou panse sou ki jan sal la kote moun fè li. Chak fwa yo plato pwòp ak mete yo menm ki frèch sou tèt, ou te kapab gen yon deja pwòp men evantyèlman trè sal ak pousyè plato nan pati anba a anpil si ou pa janm aktyèlman li ale nan pati anba a nan ki chemine, paske ou jis kenbe mete nouvo a ak yo menm ki pwòp sou tèt li. Menm bagay la ki ka rive nan yon makèt tou. Si ou gen yon ka ekspozisyon nan lèt ak tout CVS tan oswa moun ki va vin pi plis lèt, ou jis bouskile le yo ou deja genyen nan do a ak ou mete yo menm ki nouvo moute devan, w ap ale nan gen kèk bèl anbarasan lèt nan fen a nan estrikti a done, paske li nan toujou nan pati anba a oswa équivalant li a toujou nan do a. Men, gen nan yon lòt fason yo reflechi sou doubli done ak pou egzanp, sa a. Si ou se youn nan moun sa yo ki renmen nan liy moute deyò nan magazen Apple lè yon nouvo pwodwi vini soti, w ap pwobableman pa lè l sèvi avèk yon done chemine estrikti paske ou ta ékarté tout lòt moun ki moun ki se doubli yo achte kèk jwèt nouvo. Olye de sa, w ap pwobableman lè l sèvi avèk ki kalite estrikti done oswa sa ki kalite sistèm nan mond reyèl la? Nou swete ke li nan yon liy, oswa plis byen oswa plis Britanik-tankou, yon keu. Epi li vire soti yon keu tou yon se done estrikti nan syans òdinatè, men yon keu gen yon trè diferan pwopriyete. Li pa LIFO. Sot pase a nan, premye deyò. Bondye padon. Li nan olye pou FIFO. Premye nan, premye deyò. Epi sa a, yon bon bagay pou etidye ekite Règleman poutèt ' sètènman lè w ap pawa moute super byen bonè nan maten an. Si w ap resevwa gen premye, ou vle jwenn soti premye kòm byen. Se konsa, tout nan done sa yo estrikti, ke moun kap kriye ak pil ak grap nan lòt moun, vire soti ou ka panse a sa a kòm jis yon etalaj. Sa a se yon etalaj, petèt yon gwosè fiks 4, men li ta gen kalite bèl si nou te ka jis pil plato prèske enfiniman wotè si nou gen sa plato anpil oswa nimewo. Se konsa, petèt nou vle sèvi ak yon lis lye isit la, men komès-off la a pwal potansyèlman ke nou bezwen plis memwa, pran yon ti kras plis tan, men nou pa limite wotè nan chemine a, anpil tankou ka ekspozisyon Mather la ta ka limite gwosè a nan chemine a, e konsa sa yo, se desizyon konsepsyon oswa opsyon ki disponib yo ban nou finalman. Se konsa, avèk done sa yo estrikti, nou te te kòmanse wè nouvo limit anwo potansyèlman sou sa ki deja te Super vit ak ki kote nou pral kite koupe jodi a ak ki kote nou pral espere pou li ale nan se nan Mèkredi, nou pral kòmanse fè yon gade nan yon done estrikti ki pèmèt nou rechèch a done nan tan fen boutèy demi lit ankò. Apre sa, nou te wè sa, sonje, nan semèn zewo ak youn ak rechèch binè oswa divize ak konkeri. Li nan vini tounen ak pi bon toujou, grail a apa pou Bondye pou sa a Mèkredi yo pral vini ak nan done estrikti ki kouri se vre wi: oswa teyorikman an tan konstan, annakò ak sa li pa gen pwoblèm ki jan anpil dè milyon oswa dè milya de bagay sa yo nou gen nan estrikti a done, li pral pran nou tan konstan, petèt yon sèl etap oswa de etap oswa 10 etap, men nimewo konstan nan etap nan rechèch nan ke estrikti done. Sa tout bon yo pral grail a apa pou Bondye men plis sou sa nan Mèkredi. Wè ya lè sa a. [MIZIK jwe]