[MIZIK jwe] Doug Lloyd: Tout dwat. Travay ak sèl varyab se plezi bèl. Men, sa ki si nou vle travay ak yon anpil nan varyab, men nou pa vle gen yon pakèt moun sou non diferan vole alantou Kòd nou an? Nan ka sa a, ranje yo se ale nan vini nan reyèlman sou la men. Ranje se yon done reyèlman fondamantal estrikti pou nenpòt ki lang programmation di ou pral sèvi. Apre sa, yo ap reyèlman, reyèlman itil, patikilyèman, jan nou pral wè, nan CS 50. Nou itilize ranje yo kenbe valè nan kalite la menm done nan kote memwa vwazen. Ki vle di, li nan yon fason ki nou kapab gwoup yon pakèt moun sou nonm antye relatif ansanm nan memwa oswa yon pakèt moun sou karaktè oswa flote nan memwa vrèman fèmen ansanm ak travay ak yo san yo pa gen bay chak youn li yo pwòp non inik, sa ki ka jwenn ankonbran apre yon ti tan. Koulye a, yon fason ki analogize ranje se yo reflechi sou pòs lokal ou a biwo pou yon dezyèm fwa. Se konsa, etap lwen pwogram ak jis fèmen je ou ak visualized nan tèt ou pòs biwo lokal ou yo. Anjeneral, nan pifò pòs biwo, gen nan yon bank gwo yon bwat biwo pòs sou miray la. Yon etalaj se yon blòk jeyan a vwazen memwa, menm jan an ke yon lapòs bank nan biwo pòs ou se yon gwo espas sou la miray nan biwo a post. Ranje yo te partition nan ti, idantik blòk menm gwosè ak nan espas, chak nan ki te rele yon eleman, nan menm fason an ki miray ranpa a nan nan post la Gen biwo te partition nan ti, idantik blòk menm gwosè ak nan espas, ki nou rele yon bwat PO. Chak eleman nan etalaj la kapab magazen yon sèten kantite done, menm jan chak bwat biwo lapòs ki toupre se kapab yo kenbe yon sèten kantite lapòs. Ki sa ki ka dwe estoke nan chak eleman nan etalaj la se varyab nan done la menm kalite, tankou int oswa Char, jis tankou nan ti bwat biwo lapòs ki toupre ou, ou ka sèlman anfòm bagay nan yon kalite ki similè yo, tankou lèt oswa ti pakè. Anfen, nou kapab jwenn aksè chak eleman nan etalaj la dirèkteman pa kantite endèks, menm jan nou kapab jwenn aksè biwo lapòs ki toupre nou an bwat pa konnen nimewo bwat lèt li yo. Èspere ke, ki analoji ede ou jwenn tèt ou alantou lide a nan ranje pa analogizing yon lòt bagay ke ou yo se pwobableman deja abitye avèk yo. Nan C, eleman ki nan yon etalaj se Catalogue kòmanse nan 0, pa soti nan 1. Lè sa a se reyèlman enpòtan. Lè an reyalite, sa a se poutèt sa nou, an CS 50, e poukisa syantis òdinatè souvan pral konte ki ant 0, se paske nan etalaj C a Indexing, ki toujou kòmanse nan 0. Se konsa, si yon etalaj konsiste de eleman n, eleman an premye nan ki etalaj sitiye nan endèks 0, ak eleman ki sot pase a nan etalaj la sitiye nan endèks n mwens 1. Yon fwa ankò, si gen nan eleman n nan nou an etalaj, dènye endèks la se n mwens 1. Se konsa, si etalaj nou an ki gen 50 eleman yo, se premye eleman ki chita nan endèks 0, ak eleman ki sot pase a sitiye nan endèks 49. Malerezman, oswa erezman, tou depann de pèspektiv ou, C se yon bagay ki tolerance isit la. Li pa pral anpeche w ale soti nan avèk limit nan etalaj ou yo. Ou te kapab jwenn aksè nan mwens an 3 eleman nan etalaj ou oswa eleman nan 59th nan etalaj ou a, si etalaj ou sèlman gen 50 eleman. Li pa yo ap sispann pwogram ou a soti nan konpile, men nan kouri tan, ou ta ka rankontre yon tèribl fòt segmentation si w kòmanse jwenn aksè nan memwa ki se deyò limit yo nan sa ki ou mande pwogram ou l 'ban nou. Se konsa, dwe fè atansyon. Ki sa yon etalaj deklarasyon sanble? Ki jan nou kode yon etalaj nan egzistans tankou nou kode nenpòt lòt varyab? Gen twa pati nan yon etalaj declaration-- yon kalite, yon non, ak yon gwosè. Sa a se trè menm jan ak yon varyab deklarasyon, ki se jis yon kalite ak yon non, eleman nan gwosè yo te ka a espesyal pou yon etalaj, paske nou ap resevwa yon pakèt moun sou yo an menm tan an. Se konsa, di ki an se ki kalite varyab ou vle chak eleman nan etalaj la yo dwe. Vle li nan yon etalaj de nonm antye relatif? Lè sa a, di ki done ou ta dwe int. Èske ou vle li nan dwe yon etalaj de double oswa flote? Done di ki ta dwe doub oswa flote. Non a se ki sa ou vle rele etalaj ou yo. Ki sa ou vle nan non sa a jeyan bank of nonm antye relatif oswa flote oswa charaktèr oswa double, oswa kèlkeswa sa gen ou? Ki sa ou vle rele li? Joli pwòp tèt ou eksplikasyon. Anfen, gwosè, ki ale andedan nan parantèz kare, se ki jan anpil eleman ou ta tankou etalaj ou a ki genyen. Konbyen nonm antye relatif ou vle a? Konbyen flote ou vle a? Se konsa, pou egzanp, int klas elèv 40. Sa a deklare yon etalaj rele Elèv klas, ki gen ladann 40 nonm antye relatif. Joli eksplikasyon pwòp tèt ou, Mwen espere. Isit la nan yon lòt egzanp. Pri meni Double 8. Sa vin kreye yon etalaj rele Pri Menu, ki gen ladann nan chanm nan memwa pou uit double. Si ou panse nan chak eleman a yon etalaj de kalite done-kalite, se konsa pou egzanp, yon eleman sèl nan yon etalaj de kalite int, menm jan an ou ta panse nan nenpòt ki lòt varyab nan kalite int, tout operasyon yo abitye ke nou diskite deja nan operasyon yo videyo pral fè sans. Se konsa, isit, nou te ka deklare yon etalaj a Booleans rele Truthtable, ki gen ladann plas pou 10 Booleans. Apre sa, lè sa a, jis tankou nou te kapab jis bay se yon valè nan nenpòt lòt varyab nan kalite Boolean, nou te ka di yon bagay tankou Truthtable bracket kare 2, ki se ki jan nou endike, ki eleman nan tablo a verite? Eleman nan twa moun ki sou la tab verite, paske sonje, nou ap konte soti nan 0. Se konsa, sa a, se ki jan nou endike nan twazyèm eleman nan tablo a verite a. Truthtable 2 egal fo, jis tankou nou te ka declare-- oswa nou te ka bay, olye, nenpòt Boolean varyab kalite yo dwe fo. Nou kapab tou sèvi ak li nan kondisyon. si (truthtable 7 == vre), ki se vle di, si eleman nan wityèm a Truthtable se vre, petèt nou vle enprime yon mesaj itilizatè a, printf ("VRÈ N!") ;. Ki lakòz nou yo di Truthtable 10 egal vre, dwa? Bon, mwen kapab, men li a trè danjere, paske sonje, nou gen yon etalaj de 10 Booleans. Se konsa, endèks ki pi wo a ki nan te ban nou du se 9. Pwogram sa a ap konpile, men si yon lòt bagay nan memwa egziste kote nou ta espere Truthtable 10 yo ale, nou te ka soufri yon fay segmentation. Nou ta ka jwenn lwen ak li, men an jeneral, bèl danjere. Se konsa, sa m ap fè isit la se C legal, men se pa nesesèman deplase nan pi byen. Koulye a, lè ou deklare ak inisyalize yon etalaj ansanm, gen nan aktyèlman yon trè sentaks espesyal ke ou ka itilize yo ranpli moute etalaj la ak valè kòmanse li yo. Li ka jwenn ankonbran yo deklare yon etalaj de gwosè 100, ak Lè sa a te vle di, eleman 0 egal sa a; eleman 1 egal sa a; eleman 2 egal sa. Ki sa ki nan pwen an, dwa? Si li nan yon etalaj piti, ou ta ka fè yon bagay tankou sa a. Bouleen truthtable 3 egal louvri Curly atèl ak Lè sa a vigil separe lis la nan eleman ke ou vle mete nan etalaj la. Lè sa a, fèmen Curly atèl virgules. Sa vin kreye yon etalaj de gwosè twa rele Truthtable, ak eleman fo, vre, epi vre. Ak an reyalite, enstansyasyon nan sentaks mwen gen isit la se egzakteman menm jan fè nan endividyèl sentaks eleman pi ba pase. De fason sa yo nan kodaj ta pwodwi etalaj la egzak menm. Menm jan an tou, nou te ka repekte sou tout nan eleman yo a lè l sèvi avèk yon etalaj yon bouk, ki, nan reyalite, se yon trè rekòmande seryezman pou at-lakay fè egzèsis. Ki jan ou fè kreye yon etalaj nan 100 nonm antye relatif, kote chak eleman nan etalaj la se endèks li yo? Se konsa, pou egzanp, nou gen yon etalaj de 100 nonm antye relatif, ak nan eleman a an premye, nou vle mete 0. Nan eleman, dezyèm lan, nou vle mete 1. Nan eleman nan twazyèm, nou vle yo mete 2; ak sou sa ak sou sa. Sa se yon reyèlman bon at-lakay fè egzèsis fè sa. Isit la, li pa gade tankou twòp te chanje. Men, remake ke nan ant a parantèz kare, tan sa a, Mwen te aktyèlman omisyon nimewo a. Si w ap lè l sèvi avèk sa a anpil enstansyasyon espesyal sentaks yo kreye yon etalaj, ou aktyèlman pa fè sa bezwen endike gwosè a nan etalaj la davans. Du a se entelijan ase konnen ke ou aktyèlman vle yon etalaj de gwosè 3, paske ou mete twa eleman a dwat a siy ki egal-ego. Si ou te mete kat, li ta gen ban nou yon tab verite nan gwosè kat; ak sou sa ak sou sa. Ranje pa gen restriksyon nan yon sèl dimansyon, ki se trè fre. Ou ka gen aktyèlman kòm anpil prèskripteur bò jan ou vle. Se konsa, pou egzanp, si ou vle kreye yon tablo pou jwèt kwirase a, ki, si ou te janm te jwe, se yon jwèt ki se te jwe ak pikèt sou 10 an pa 10 griy, ou te kapab kreye yon etalaj tankou sa a. Ou te kapab di bouleen kwirase bracket kare 10 fèmen kare bracket kare bracket 10 fèmen bracket kare. Apre sa, lè sa a, ou ka chwazi yo entèprete sa a nan tèt ou kòm yon 10 pa 10 kadriyaj nan selil yo. Koulye a, an reyalite, nan memwa, li vrèman fè jis rete yon eleman 100, sèl etalaj dimansyon. Lè sa a, an reyalite, ale pou si ou gen twa dimansyon oswa kat oswa senk. Li reyèlman jis anpil anpil pitit tout nan indices-- nan oswa tout nan gwosè a specifiers-- ansanm, epi ou jis jwenn yon yon sèl-dimansyon etalaj de ki gwosè. Men, an tèm nan ak òganizasyon vizyalizasyon ak pèsepsyon imen, li kapab yon anpil pi fasil yo travay avèk yon griy si w ap travay sou yon jwèt tankou Tic-TAC-zòtèy oswa kwirase, oswa yon bagay tankou sa. Li se yon gwo distraksyon, olye pou yo gen yo reflechi sou yon Tic-TAC-zòtèy tablo kòm yon liy nan nèf kare oswa yon tablo kwirase kòm yon liy nan 100 kare. Yon 10 pa 10 kadriyaj oswa yon twa pa twa kadriyaj se pwobableman yon anpil plis fasil yo wè. Koulye a, yon bagay ki reyèlman enpòtan sou ranje. Nou ka trete chak moun eleman nan etalaj la kòm yon varyab. Nou te wè ke pi bonè lè nou te plase valè a vre nan sèten Booleans oswa tès yo nan kondisyonal. Men, nou pa ka trete tout ranje tèt yo kòm varyab. Nou pa ka, pou egzanp, bay yon sèl etalaj nan yon lòt lè l sèvi avèk etalaj plasman an operatè. Li pa legal C. Si nou vle, pou example-- sa nou ta dwe ap fè nan ki egzanp ta dwe kapab bay kopi youn etalaj nan yon lòt. Si nou vle fè sa, nou aktyèlman bezwen sèvi ak yon riban a kapab bay kopi sou chak eleman endividyèl yon sèl nan yon tan. Mwen konnen li nan yon ti tan konsome. Se konsa, pou egzanp, si nou te gen sa yo koup nan liy nan kòd, ta travay sa a? Oke, pa gen okenn, li pa t 'vle, dwa? Paske nou ap eseye yo asiyen manje yo ba. Sa pa k ap pase nan travay, paske li nan yon etalaj, epi nou jis dekri ki sa a, se pa legal C. Olye de sa, si nou vle kopi sa ki nan manje an ba, ki se sa ki nou ap eseye fè isit la, nou ta bezwen yon sentaks tankou sa a. Nou gen yon pou riban ki ale soti nan J ki egal a 0 jiska 5, epi nou kantite J sou chak iterasyon nan bouk la ak eleman asiyen tankou sa. Sa a ta rezilta nan ba tou yo te youn, de, twa, kat, senk, men nou gen fè li sa a trè ralanti eleman-pa-eleman fason, olye pou yo pa jis kopye etalaj la tout antye. Nan lòt pwogram lang, yo menm plis modèn, ou ka, an reyalite, fè sèlman sa ki senp egal sentaks. Men, C, malerezman, nou ap yo pa pèmèt yo fè sa. Koulye a, gen nan yon lòt bagay mwen vle mansyone sou ranje ki kapab yon ti kras ti jan difisil premye fwa a ou travay avèk yo. Nou te diskite nan yon videyo sou sijè ki abòde varyab ★ ki pi fò varyab nan C, lè ou rele yo nan fonksyon, yo pase bò valè. Ou sonje sa li vle di yo pase yon bagay pa valè? Sa vle di nou ap fè yon kopi nan varyab ki nan ke yo te pase nan. Fonksyon an aple, fonksyon an ki nan k ap resevwa varyab la, pa jwenn varyab nan tèt li. Li vin pwòp lokal li kopi li nan travay avèk yo. Ranje, nan kou, fè pa swiv règleman sa-a. Olye de sa, sa a sa nou rele ap pase pa referans. Aple a aktyèlman resevwa etalaj la. Li pa resevwa li yo pwòp kopi lokal nan li. Men, si ou panse osijè de li, sa a fè sans. Si ranje yo se reyèlman gwo, li pran anpil tan ak efò fè yon kopi yon etalaj de 100 oswa 1,000 oswa 10,000 eleman, ke li nan pa vo li pou yon fonksyone resevwa yon kopi li, fè kèk travay ak li, ak Lè sa a jis dwe fè ak kopi a; li pa bezwen gen li pandye alantou ankò. Paske ranje yo se kèk ki men gwosè ak ankonbran, nou jis pase yo pa referans. Nou jis mete konfyans ke fonksyon a, pa kraze anyen. Se konsa, li aktyèlman jwenn etalaj la. Li pa jwenn pwòp li yo kopi lokal nan li. Se konsa, sa sa a vle di, lè sa a, lè aple a manipul eleman nan etalaj la? Sak pase? Pou kounye a, nou pral enteprete sou poukisa egzakteman sa a k ap pase, poukisa ranje yo pase pa referans ak tout lòt bagay se te pase pa valè. Men, mwen te pwomèt ou, n ap retounen ak ba ou repons lan nan sa a nan yon videyo pi ta. Isit la nan yon sèl plis fè egzèsis pou ou anvan nou vlope moute bagay sa yo sou ranje. Pakèt moun an nan Kòd isit la, sa a, se pa patikilyèman bon style, jis mwen pral fè ki opozisyon. Gen nan pa gen kòmantè nan isit la, ki se trè move fòm. Men, li la sèlman paske mwen te vle fè kapab anfòm tout bagay sou ekran an. Nan tèt la, ou ka wè ke mwen gen de deklarasyon fonksyon pou etalaj seri , li mete int. Etalaj Mete aparamman pran yon etalaj nan kat nonm antye relatif kòm opinyon li yo. , Li mete int aparamman pran yon nonb antye relatif sèl kòm opinyon li yo. Men, tou de peyi yo pa gen yon pwodiksyon. Pwodiksyon an, retounen nan tape, nan se chak moun anile. Nan Main, nou gen yon koup la liy nan kòd. Nou deklare yon varyab nonb antye relatif rele A ak bay li valè a 10. Nou deklare yon etalaj de nonm antye relatif kat rele B ak bay eleman yo 0, 1, 2, ak 3, respektivman. Lè sa a, nou gen yon apèl yo mete int ak yon apèl yo mete etalaj. Definisyon ki nan mete etalaj, li mete int yo desann anba a, nan pati anba nan. Se konsa, ankò, mwen mande w kesyon an. Ki sa ki vin enprime soti isit la nan fen Main? Genyen yon kopi enprime col. Mwen se enprime soti de nonm antye relatif. Mwen enprime soti sa ki nan A ak sa ki nan B kare bracket 0. Pran yon ti pòz videyo a isit la epi pran yon minit. Èske ou ka figi konnen ki sa sa a fonksyon pral enprime nan fen a? Nou swete ke, si ou sonje nan diferans ant pase pa valè yo, e pase pa referans, sa a pwoblèm pa t 'twò difisil pou ou. Apre sa, repons lan ou ta yo te jwenn se sa a. Si ou se pa reyèlman asire w ke yo poukisa sa a, se ka a, pran yon dezyèm fwa, tounen, revize ki sa mwen te jis diskite sou pase ranje pa referans, kont pase lòt varyab pa valè, ak èspere ke, li pral fè yon ti jan plis sans. Mwen se Doug Lloyd, e sa se CS50.