[Powered by Google Translate] [Semèn 2, Kontinye] [David J. Malan, Inivèsite Harvard] [Sa a se CS50. - CS50.TV] Tout dwa. Sa a se CS50, e sa se nan fen semèn 2. Si ou espere yo dwe grangou alantou tan sa a demen, konnen ke nou ap ale nan konvoke kòm yon demen an ti gwoup, Jedi, 1:15 pm. Genyen nan sa a URL isit la si ou ta renmen RSVP. Espas a limite, kidonk, tanpri padonnen si fòm nan ranpli leve pa tan an ou ranpli sa a soti. Yon lòt URL, menm si, ke sa ta kapab nan enterè a se sa a. Nan jis sou tan yon mwa a, kou a ki pral ap disponib tout plis lajman a atravè èdo, via ki jan sou Entènèt la yo pral kapab swiv ansanm, angaje yo nan kou a byen aktivman, an reyalite. Yo pral lè l sèvi avèk aparèy la CS50 ak CS50 Diskite sou ak pi fò nan zouti yo lojisyèl divès kalite ke nou yo deja lè l sèvi avèk sa a semès la. Ak youn nan inisyativ sa yo nou ta renmen pran sou kòm yon eksperyans nan ane sa a se wè jis ki jan anpil kontni nou ka tradui nan lòt lang pale e ekri. Se konsa, si ou ta ka gen yon enterè nan k ap patisipe nan pwojè sa a kote n ap ofri relve nòt angle ak tradiksyon an pou konferans kou a nan ak bout pantalon ak seminè ak seksyon ak renmen an, si ou pale kouraman oswa ekri kouraman kèk lòt lang, nou ta renmen angaje ou nan pwojè sa a annakò ou pran sou youn oswa plis nan videyo yo, tradui yo nan yon lang ou konnen trè byen. Pou bay ou yon sans de koòdone a, gen nan sa a koòdone itilizatè ki baze sou wèb ke nou pral lè l sèvi avèk ki pral kreye esansyèlman se yon UI tankou sa a. Sa a te m 'moutre kèk Halloween de sa, ak sou bò men dwat-ou gen nan nwa pwochen sa yo koupon pou tan, ou pral wè bagay sa yo divès kalite ki te vin soti nan bouch mwen jou sa a, ak Lè sa a, pi ba a sa a, nou pral kapab tradwi nan kèk lòt lang ekzakteman ki sa kat la se ant, nan ka sa a, angle ak, di, an panyòl. Se konsa, li la aktyèlman yon trè user-zanmitay zouti. Ou ka remonte ak vit-pou pi devan trè fasilman ak rakoursi klavye. Se konsa, si ou ta renmen pran yon pati nan eksperyans sa a ak menm ki gen pawòl ou wè ak li pa potansyèlman dè milye de jan yo deyò, tanpri santi yo lib yo patisipe. Youn nan mo sou kitten la nan Lendi. Ann kouri pou nou voye yon mesaj tro pè, fè reyalize ke, kòm lè biwo sijere epi kòm seksyon sijere, desen an nan kou a se anpil yo te elèv yo kolabore ak ap pale ak ap travay nan aparèy televisyon HD pwoblèm ak pwoblèm ansanm, ak reyèlman liy lan jis vini desann nan, ankò, travay la ou finalman soumèt yo ta dwe pwòp ou yo. Se konsa, byen onètman, nan lè biwo louvri li nan totalman nòmal, li nan totalman yo dwe atann menm, yo dwe diskite ak kèk zanmi kap vini jwenn ou. Si li gen difikilte avèk kèk sijè epi w ap tankou, "O, byen, kite m 'ba ou yon aperçu nan kèk liy nan kòd ki mwen te ekri," ki nan amann, sa rive, e ke se anpil fezab, mwen panse, avèk pwosesis pou aprann. Ki kote vin liy lan janbe lòt se lè tèt la se sòt de panche sou isit la pou segonn twò lwen anpil oswa minit pou ki vrèman yo te jis te yon opòtinite déblotché pou zanmi ou, epi sètènman lè bagay sa yo jwenn echanj via imel ak Dropbox ak renmen an, gen tou se liy lan. Se konsa, pa tout vle di santi yo alèz ak santi yo ankouraje chat ak zanmi ak kamarad klas sou psets ak plis ankò ak jis reyalize ke sa ou finalman soumèt ta dwe reyèlman dwe pwodwi a nan kreyasyon ou epi li pa yon lòt moun. Se konsa, youn nan pwoblèm ki domèn ki espesifik pou pset2, ki pwal vini deyò anreta lannwit demen, se plonje nan mond lan nan chifreman, ki se atizay la chifreman oswa eskalade enfòmasyon, ak sa a finalman gen rapò ak mond lan nan sekirite. Koulye a, sekirite pou pifò nan nou rive nan fòm la nan fòmil jistis Munden. Tout moun nan nou gen usernames ak modpas, ak tout moun nan nou gen usernames trè move ak modpas, gen plis chans. Si modpas ou se menm bagay la sou sit entènèt plizyè, sa se pwobableman pa lide a pi byen, kòm n ap diskite nan direksyon fen semès la. Si yo modpas ou ekri sou yon nòt kolan - pa gen blag - sou pou kontwole ou a, ki tou se pa nesesèman konsepsyon nan pi bon, men byen yon fenomèn komen. Men, si ou pa ap lè l sèvi avèk chifreman ankripte modpas ou a, yo yo frajil sitou. Se konsa, si ou panse w ap yo te super entelijan pa gen yon dokiman Pawòl kache yon kote sou kondwi difisil ou a, ki te gen tout modpas ou men li la nan yon folder ke pa gen okenn youn nan pral gade nan, ki twò se pa yon mekanis trè an sekirite. Se konsa, sa ki pset2, n ap entwodui sa a atizay nan chifreman ak eskalade enfòmasyon pou ke bagay sa yo tankou modpas, yo tout plis la an sekirite. Kontèks la isit la se ke ak done anksyeu vini yon opòtinite ankripte l ak Goumen li. Se konsa, sa a, pou egzanp, ki se yon egzanp yon mesaj chiffres. Sa sa a aktyèlman di yon bagay nan lang angle, men li la klèman pa nèt evidan. Epitou, n ap vin plen sèk jodi a toumante apa sa ki mesaj sa a isit la se sekrè. Men, nan mond reyèl la nan òdinatè, bagay sa yo pa menm gade tankou yo ka fraz angle. Pou egzanp, sa a se sa ou ta ka jwenn sou yon Linux estanda oswa Mac oswa UNIX òdinatè nan yon dosye ki te yon fwa sou yon tan ki rele dosye a modpas ou. Sèjousi li a te demenaje ale rete nan lòt kote. Men, si ou gade nan kote a dwat sou yon sistèm, ou ap wè se pa sèlman non itilizatè ou an oswa sa yo ki an lòt moun sou sistèm nan, men ou pral wè yon vèsyon chiffres nan modpas yo. Vreman vre, yo kripte nan mo gen sijere ke bagay sa yo se chiffres, ak sa a seri de lèt w pèdi o aza ak karaktè ak nimewo ak pou fè kapab dechifre sèlman pa jeneralman konnen kèk sekrè - yon mo sekrè a, yon nimewo sekrè - e konsa tout bon, atizay la chifreman finalman klou desann nan fè konfyans nan kèk sòt ak konnen yon bagay ke yon lòt moun fè sa ki pa. Se konsa, nou pral eksplore sa a nan yon ti jan plis detay jodi a ak nan pset an ap vini yo. Epi, koulye a yon mo sou pase / fail. Espesyalman tankou kèk nan ou te plonje nan pset1, Aparèy la, ak yon mond trè nouvo pou tèt ou, reyalize ke fristrasyon ak konfizyon ak jis difikilte teknik yo trè yo dwe atann, sitou ak pset a an premye, kote gen nan jis tèlman nouvo, jis ap resevwa abitye avèk ls ak cd ak tout sa yo kòmandman Esoteric ak yon anviwònman nouvo, e ke se separe de materyèl aktyèl la ak pwogramasyon tèt li. Se konsa, reyalize twò ke gen sètènman lè biwo ki egziste kòm yon estrikti sipò. Seksyon kòmanse jou Dimanch sa a ki t'ap vini. Men, sa ki pi enpòtan, si ou santi ke sa a se jis pa mond lan pou ou, reyalize ke li vrèman jis pran tan. Epi yo te pou li pa pou opòtinite sa a ane de sa pou m 'nan pran yon pas klas / echwe, franchman, mwen pa tap janm menm mete pye nan salklas la. Epi ou ka chanje sa a moute jouk, di, Lendi a senkyèm nan kou a, Se konsa, si w ap sou kwen an, koulye a, reyalize ke olye ke tèt nan kèk lòt dlo nèt, sètènman konsidere jis chanje yo pase / fail. Yon fwa ankò, gen nan pa reyèlman kilti sa a isit la nan Harvard nan pran bagay sa yo pase / fail depi tout moun ta vrèman renmen reyalize oswa overachieve, men franchman, sa a se yon fason bèl bagay pou eseye yon bagay ki soti ki pa kapab abitye avèk ou, epi ou pral fini fè, nan pifò ka yo, afè byen, petèt anpil sipriz ou a. Ak nan plis tèm konkrè, ki sa mwen panse pase / fail jeneralman fè, espesyalman kòm ou ta ka fè eksperyans avèk pset0, si ou mete nan 10 èdtan, 15 èdtan, 25 èdtan nan kèk pset ak w ap sèlman frape tèt ou kont miray la ak li nan ap resevwa super anreta nan mitan lannwit men ou te pran pset 90% an nan wout la epi ou jis pa kapab konnen ki yon sèl bagay, pase / fail reyèlman pran kwen nan koupe nan yon klas tankou sa a, ki kote ou ka sòt de san pwoblèm mwen tap di, "Oke, mwen konnen li pa pafè, Men, mwen te travay bourik mwen an nan sa a sou, mwen trè kontan ak kote li te fini, " ak ki pral rankontre nan ap atann pou pase / fail. Se konsa, kenbe sa nan tèt ou. Tout dwa. Se konsa, moun nan nou ki te plede goumen yo sèvi ak Inivèsite a Harvard Wi-Fi, konnen ke gen se yon ssid CS50, yon koneksyon Wi-Fi, waf alantou ke ou ta ka gen pi bon chans pou li a. Li se yon ironik ti ke modpas la pou sa a, si ou ta renmen eseye konekte ak lòt moun sa a pou pi bon vitès - ak fè nou konnen si li nan pa gen pi bon - se 12345, tout wout la jiska 8 paske 8 se plis sekirite pase 5. Se konsa, si ou bezwen modpas la Wi-Fi, konekte nan CS50 wirelessly isit la, 12345678, ak pòs sou CS50 Diskite si ou toujou gen pwoblèm koneksyon tanzantan, epi n ap kite pouvwa yo pou yo konnen pou plas sa a. Tout dwa. Se konsa, yon kol rapid, espesyalman pou moun nan nou ki yo se ti gason fanatik oswa ti fi nan tout Apple bagay sa yo. Ki sa mwen fouye moute soti nan yon kèk ane tounen te sa a ranpli isit la, iUnlock.c, jis kalite fè plis konkrè ak plis konplèks kèk nan pwogram ki pi plis debaz C nou ve yo te ekri. Se konsa, mwen louvri moute sa a ranpli, iUnlock.c. Li nan ki disponib sou paj la Konferans pou jodi a. Ki sou bò gòch-men ou wè yon lis long nan fonksyon. Se konsa, parèy la ki te ekri sa a te ekri moute yon anpil nan fonksyon yo, pi plis pase jis prensipal la. Li te itilize yon pakèt antye nan bibliyotèk isit la, epi si nou kòmanse defile nan, ki sa sa a aktyèlman se trè premye, mwen kwè, krak la pou iPhone orijinal la. Lè ou te vle jaybrèk iPhone orijinal la, ki vle di untether li nan men AT & T ak aktyèlman enstale lojisyèl espesyal sou li epi fè bagay sa yo ke Apple pa t 'vle moun fè, yon moun te pran tan la konnen egzakteman kouman yo te ka esplwate defo lojisyèl, erè, pinèz, nan lojisyèl Apple, e konsa te fèt iUnlock.c-- ke si ou konpile l 'sou òdinatè w lan ak enstale li sou yon iPhone ki te konekte nan òdinatè w lan atravè, di, yon kab USB, sa a ta ba ou privilèj administratif oswa rasin sou iPhone ou epi kite ou fè bèl anpil tout sa ou vle. Se konsa, te gen sa a chat kaptivan ak jwèt sourit ant Apple ak rès la nan mond lan an patikilye tankou yo, tankou konpayi anpil, eseye fèmen bagay yo desann pou ke ou ka sèlman fè avèk li sa yo te gen entansyon. Men, gras a moun tankou sa a ak konpreyansyon a nan ba-nivo detay - ak nan ka sa a C Programming - ak yon anpil nan konstwi yo abitye ke nou te kòmanse jwe ak, se ou ki kapab reyèlman ogmante pyès ki nan konpitè nan yon fason ki ou wè anfòm e li pa nesesèman kèk antite rèstriktirasyon. Se konsa, pou egzanp, mwen pa gen okenn lide ki sa tout bagay sa a ap fè, men GetVersion son trè dwat, e li sanble tankou sa a se yon fonksyon ki moun sa a te ekri. Li pran kèk kalite nonb antye relatif kòm yon agiman, pa retounen anyen, men sanble li riban ak yon riban pou isit la ak yon si kondisyon, si repo kondisyon, ak yon jan kanmenm gen rapò ak nimewo vèsyon si nou desann, menm si yon anpil nan sa yo mo kle yo pral yo dwe nouvo. Ak gen nan yon anpil tout fonksyon nan isit la nou pat janm wè ak pa ta ka janm wè sou kou nan semès la. Nan fen jou a, li swiv règ yo menm ak lojik ke nou ve yo te jwe ak konsa byen lwen. Se konsa, sa a se byen lwen twò granmoun krak 3s ifon ou oswa 4s oswa touswit 5s jou sa yo, men konnen ke li nan tout anpil ki sòti nan mond sa-a ke nou te plonje nan. Se pou nou pran yon gade nan yon egzanp ti kras pi plis senp: yon sèl sa a, jis jwenn t'ap chofe moute ak kèk sentaks ak tou gen kèk lòt kalite done ke nou te deja pale sou, men se pa te reyèlman wè nan C. Sa a se yon dosye rele positive1.c, ak pou chak kòmantè yo nan tèt la, sa a jis mande pou yon itilizatè bay yon nimewo ki pozitif. Se konsa, li yon egzanp sou yon riban fè-pandan y ap, ki se bèl pou itilizatè pwogram entèaktif ki kote ou bezwen di itilizatè a fè yon bagay, ak si yo pa kolabore ou rele nan yo oswa rejte D 'yo. Ka nan pwen: Mwen pral fè liy 19 a 24 toutotan itilizatè a pa ban m 'yon chif pozitif. Sa a detay isit la sou liy 18, poukisa Mwen deklare n pi wo a sa a loupin antye konstwi tankou yo te opoze a dwat pwochen nan liy 22 kote mwen aktyèlman pran swen yo ka resevwa n? Yeah. [Elèv] Dimansyon. >> Yeah, se konsa pwoblèm sa a nan dimansyon. Ak an tèm pwofàn la, ki sa ki dimansyon, al gade nan? Yeah. >> [Fèbl repons elèv] >> Èske ou ka pale yon ti kras pi fò? [Elèv] Ki kote ou kapab jwenn aksè nan varyab sa a. >> Pafè. Ki kote ou kapab jwenn aksè nan yon varyab patikilye. Epi jeneralman, règ la nan gwo pous konsa byen lwen te gen ki sijè ki abòde lan kèk varyab Yo defini nan aparèy òtopedik ki pi resan yo Curly ke ou te wè. Se konsa, nan ka sa a, si mwen fè erè nan deklare n sou liy 22, ki liy ta ka travay. Mwen ta jwenn yon int, epi mwen ta mete l 'nan ke n varyab nan liy 22, men ki liy nan kòd yo kounye a pwal pa gen okenn lide ki sa mwen ap pale de? >> [Elèv] 25. [Malan] 25, epi li vire soti 24 kòm byen paske nan ka sa a li tonbe deyò nan aparèy òtopedik yo Curly. Se konsa, jis yon ti kras nan yon nwuizans men trè fasil rezoud pa senpleman deklare varyab la deyò nan fonksyon nan tèt li. Nou pral wè pi ta jodi a ou ka ale yon sèl etap plis epi ou te kapab menm jwenn yon ti parese. Ak sa a se pa t 'dwe rekòmande an jeneral, men ou ta ka jwenn menm parese epi li mete yon varyab globalman, se konsa pale, pa andedan nan yon fonksyon, pa andedan nan yon riban, men nan dosye a li menm, andeyò nan tout nan fonksyon ou te ekri, menm jan mwen te fè isit la sou liyn 15. Sa a se jeneralman dezaprouve sou, men mwen reyalize sa a se yon solisyon pafwa ak pwoblèm lòt, kòm n ap pètèt wè. Se konsa, pou kounye a nou ap kite li tankou sa a, men kite a wè si nou ka reyekri sa a jis kòmanse eksprime tèt nou yon ti jan diferan. Pwogram sa a, jis yo dwe klè, se positive1. Kite m 'ale pi devan isit la ak nan fenèt tèminal mwen ki fè positive1, Antre. Compiles oke. Mwen pral kouri positive1, frape Mete. Mwen mande w ban m 'yon nonm antye ki pozitif. Mwen pral di -1. Ki pa t 'travay. 0, 99. Ki sanble nan travay. Petèt pa tès ki pi rijid, men omwen li nan yon chèk saniti bèl ke nou se sou track dwat la. Se konsa, kounye a kite m 'ale pi devan epi louvri vèsyon 2 nan sa a, ak sa ki diferan deja? Li aplike menm bagay la, men sa ki sote soti kòm tan klèman diferan sa a? Sa a bouleen nan vèt. Li se make nan vèt, sa a mo kle ke yo rekonèt kòm bouleen, ki se yon kalite done. Li pa vini bati nan nan tout vèsyon an C. Ou bezwen genyen ladan yo yon bibliyotèk espesifik. Nan ka nou an, mwen enkli bibliyotèk la CS50 pou nou gen aksè a bouleen. Men, nan liy 18, nou yo sanble yo gen yon valè Boolean isit la yo rele rekonesan. Mwen te kapab yo te rele sa a anyen, men mwen rele l 'rekonesan jis kalite transmèt kèk siyifikasyon semantik. Se konsa, okòmansman sou liy 18, mwen aparamman pa rekonesan paske se valè a Boolean rekonesan inisyalizèd fo nan liy 18. Lè sa a, li sanble sa m 'te fè isit la nan liy 21 a 23 se Mwen te jis kalite reekri lojik m 'yo. Se konsa, pa gen okenn woulant diferan, men nan liy 22 koulye a, mwen tcheke si int a te itilizatè a bay se pi gran pase 0, lè sa a Mwen tou senpleman chanje valè la nan rekonesan vre. Ak poutèt sa mwen fè sa? Paske nan liy 25, aparamman mwen pral tcheke yon kondisyon. Èske sa a riban pandan y ap rekonesan se fo. Se konsa, mwen pwopoze sa a kòm yon altènativ a vèsyon 1 paske li nan omwen yon ti kras plis entwisyon petèt, li nan yon ti kras plis chita nan lang angle. Se konsa, fè bagay sa yo pandan w ap pa rekonesan oswa pandan y ap rekonesan se fo. Ak tan sa a twò mwen aparamman pa pran swen a sonje sa itilizatè a tape nan paske avi gen nan pa gen n varyab, se konsa aktyèlman, yon ti kras bay manti blan la. Woulant, pwogram nan se yon ti jan diferan yon fwa nou jwenn nan fon li paske mwen pa sonje sa n se. Men, mwen te vle demontre isit la tou, menm lè nou te wè GetInt ak GetString ki te itilize sou bò men dwat-ou nan yon egal siy konsa byen lwen pou nou sonje valè a, teknikman, sa se pa estrikteman nesesè. Si pou kèlkeswa rezon ou jis pa pran swen pou konsève pou valè a, ou jis vle tcheke valè a, remake ke nou ka senpleman ekri sa a kòm GetInt, ouvè paren, fèmen paren. Sa fonksyon ki pral retounen yon valè, menm jan nou ve yo te di. Li nan pral ba ou tounen yon int. Se konsa, si ou mantalman panse a sa kap pase, lè mwen tape nan 99, GetInt retounen nimewo a 99, ak sa concept, li la tankou si m 'te aktyèlman nan kòd sa a. Se konsa, si 99 se vre pi gran pase 0, lè sa a rekonesan vin vre, Lè sa a, liy 25 reyalize Ooh, nou ap fè paske mwen kounye a rekonesan, ak nan liy 26, nou tou senpleman di, "Mèsi pou nonb antye relatif pozitif la!" tou sa li te rive yo dwe. Koulye a, kite a fè ti tay sik Massachusetts Institute of Technology isit la, se konsa pale. Se pou nou wè si nou ka netwaye liy sa a 25 ak sa a Variant twazyèm ak dènye nan positive3. Avi diferans la sèlman kounye a se sa liy nan kòd? >> [Elèv] 25. >> [Malan] Yeah, 25. Epi nou pa te reyèlman wè sa a jwe fent jis ankò, men nou t 'wè nan ki pwen esklamasyon nan Lendi, ki vle di ki sa? >> [Elèv] Pa. >> Pa oswa negasyon. Se konsa, pran yon valè Boolean ak baskile valè li yo. Vrè vin fo, fo vin vre. Se konsa, sa a, mwen ta pwopoze, se menm yon ti kras pi plis entwisyon yon fason pou ekri kòd la paske mwen toujou inisyalize rekonesan fo, mwen toujou fè bagay sa yo, Mwen mete rekonesan vre lè lè a va rive, men kounye a ou ka vrèman jis tradwi sa a kòd vèbalman goch a dwat, pandan y ap (rekonesan!); paske bang oswa esklamasyon pwen vle di nosyon de pa, Se konsa, pandan pa rekonesan. Se konsa, ankò, nou pa te prezante nenpòt konsèp nouvo se pou chak. Nou te pale de Booleans tounen lè nou te jwe ak grafouyen, men mwen reyalize kounye a nou ka jis kòmanse ekri kòd nou yo nan plizyè fason diferan. Se konsa, espesyalman nan pset1 si ou se sòt de difikilte yo konnen ki wout la ekri kèk pwogram nan, akwochaj yo w ap nan chans paske gen kapab gen nenpòt ki nimewo nan solisyon ke ou ka rive sou li. Pou egzanp, sa a se jis 3 pou menm pi senp la pwogram yo. Tout dwa. Epi, koulye a sonje nan Lendi nou te kite sou nòt sa a ak valè retou. Se konsa, pou tan an trè premye nou te ekri yon pwogram ki pa jis gen prensipal la; li tou te gen pwòp li yo fonksyon koutim ke mwen te ekri isit la. Se konsa, nan liy 31 a 34 Mwen te aplike yon fonksyon kib. Li pa konplike. Se jis nan yon * yon * yon nan ka sa a. Men, sa ki enpòtan sou li se ke mwen ap pran opinyon nan fòm lan nan yon ak mwen retounen pwodiksyon nan fòm lan nan yon * yon * yon. Se konsa, koulye a, mwen gen kapasite a, anpil tankou mwen itilize yo ak prinf pou kont yo, yo rele sa a fonksyon lè w rele fonksyon an kib. Ak fonksyon an kib pran kèk D ', ak fonksyon nan kib retounen kèk pwodiksyon. Nan kontras, printf jis te fè yon bagay. Li pa t 'tounen anyen ke nou pran swen sou sa, menm si kòm yon sou kote li retounen yon valè; ou jis jeneralman inyore li. Printf jis te fè yon bagay. Li te gen yon efè segondè nan enprime ekran an. Nan kontras isit la, nou gen fonksyon an kib, ki aktyèlman retounen yon bagay. Se konsa, pou moun ki abitye avèk sa a, li nan yon lide san patipri senp. Men, pou moun mwens abitye avèk sa a lide nan pase nan entrain yo ak pou jwenn tounen sorti, kite a eseye jis yon bagay super senp. Èske nenpòt moun ki konfòtab k'ap moute sou sèn yon ti tan? Ou dwe konfòtab ak yon kamera sou ou tankou byen. Yeah? Oke. Ki sa ki nan non ou? >> [Elèv] Ken. >> Ken. Tout dwa. Ken, vini sou yo. Ken a pwal yon fonksyon nan kalite isit la. Se pou nou ale pi devan epi fè sa. Se pou nou jwenn yon anpenpan ti kras. Bèl al kontre ou. Byenveni nan sant etap yo. Tout dwa. Se pou nou frape bouton sa-a isit la. Tout dwa. Se konsa, isit la ou gen yon tablo modèn, ak sa m 'ye a se fonksyon prensipal, pou egzanp, epi mwen pa gen yon iPad nan men m '. Mwen pa reyèlman sonje ki jan yo - Enben, mwen pa ka di sa. Mwen pa vrèman gen bon ekriti, e konsa Se poutèt sa mwen vle nou enprime yon bagay sou ekran an pou mwen. Mwen ke yo te pwogram nan prensipal yo, ak mwen pral gen ou di sa a pa ekri l 'nan grafouyen poul mwen yo ak Lè sa a, pase ou yon antre. Se konsa, enbesil menm si sa a fè egzèsis se, nosyon de fonksyon ak rele yon fonksyon epi retounen yon fonksyon reyèlman klou desann nan sa a. Se mwen menm prensipal yo, mwen te jis ekri printf, quote-unquote yon bagay sou ekran an, Mwen kouri pwogram sa a, ak le pli vit ke printf vin rele, li pran yon sèl agiman oswa yon sèl paramèt pafwa ant quotes doub. Isit la se ke agiman. Mwen pase li nan Ken. Li se yon bwat nwa ekri kèk nimewo de zan de sa ki aparamman sèlman konnen ki jan yo enprime bagay sa yo sou ekran an. Se konsa, egzekite. Sa se pa move. Li bon anpil. Se konsa, kounye a Ken a se fè pwomenad. li bezwen lage m 'anyen tounen ankò? Se pa ke nou te wè konsa byen lwen. Yon fwa ankò, printf aktyèlman retounen yon nimewo, men nou ap ale nan inyore ki pou kounye a paske nou pa janm te itilize li. Se konsa, sa a, se li pou Ken. Se konsa, kounye a prensipal pran plis pase kontwòl nan pwogram nan ankò paske sa liy nan kòd, printf, se fè pwomenad. E nou ale sou fason nou an, kèlkeswa sa pwomenad liy lòt la tou. Se konsa, kounye a kite a eseye yon egzanp yon ti kras diferan. Fwa sa a, isit la kite a premye klè ekran an, ak tan sa a, n ap fè fonksyon an cubing, men fwa sa a, Mwen atann mwen ke yon valè randman. Se konsa, kite a ale pi devan epi fè sa. Koulye a, mwen gen yon liy nan kòd ki di x ap vin kib pou x. Liy lan nan kòd, sonje, sanble sa a: x = kib (x); Se konsa, kouman sa a ale nan travay? Se pou nou ale pi devan epi ba ou yon ekran blan ankò. Mwen pral ekri kounye a valè x, ki nan moman sa a nan tan k ap pase yo, se pou yo di, 2 kenbe li senp. Mwen te ekri desann sou yon moso papye valè a nan 2, ki se x valè m 'yo. Mwen lage li nan Ken. >> Apre sa, mwen jis ekri repons la? >> Yeah, kite yo jis ekri repons la. Oke. Epi, koulye a li gen retounen m 'yon bagay. Pafè. Bèl seg. Se konsa, koulye a, li men m 'tounen valè a nan 8 nan ka sa a, e ki sa m' fè ak li? Aktyèlman - kite a wè, jwenn sa a dwat. Kisa mwen pwal fè avèk li? Koulye a, mwen pral pran sa a valè ak aktyèlman mete yo nan sa yo Bits menm nan memwa. Men, remake mwen kalite difikilte isit la. Mwen se yon ti kras konfonn paske kote mwen aktyèlman ekri valè x, paske sa Mwen te jis fè se fizikman men Ken yon moso papye ki te gen valè a 2, ki te x, ak tout bon, ki nan pwesizeman sa ki te pase a. Se konsa, li sanble ke lè w rele fonksyon an, epi ou pase nan yon agiman tankou hello, mond oswa ou pase nan yon agiman tankou 2, jeneralman, w ap pase nan yon kopi ki agiman. Se konsa, menm jan mwen te ekri desann nimewo 2 a isit la epi lage li nan Ken, ki dwe vle di ke mwen toujou gen yon kopi valè a 2 yon kote paske tout bon, kounye a ke mwen te vinn tounen valè a 8, mwen bezwen ale tounen nan RAM ak aktyèlman ekri 8 kote mwen yon fwa te gen nimewo 2 a. Se konsa, vizyèlman, sonje sa a nosyon nan pase nan, literalman, yon kopi valè an. Ken fè bagay li yo, men m 'tounen yon bagay - nan ka sa a yon valè tankou 8 - ak Lè sa a, mwen gen fè yon bagay ak ki valè si mwen vle kenbe l 'alantou. Se konsa, tout bagay sa yo ap tounen yo dwe tout twò abitye anvan lontan. Mèsi anpil pou sa a Demo isit la, Ken. [Aplodisman] Trè byen fè. Ann gade pou wè ki jan ki finalman gen rapò ak kèk nan fonksyon an rele nou pou nou te toujou ap fè isit la. Kite m 'ale pi devan epi pote nou tounen nan egzanp lan cubing isit la. Remake si nou vle aktyèlman kòmanse pran sa a pi lwen, nou pral gen yo dwe bliye nan lefèt ke x la nimewo ki nan ke yo te ki te pase nan isit la se diferan de sa ki la aktyèlman ke yo te ki te pase nan fonksyon an. Se konsa, ankò, sa a pas pa kopi ki pral vin byen alye nan jis moman yon. Se pou nou pran yon gade nan yon bagay ki pa byen travay dwa ankò. Mwen pral ale pi devan epi louvri yon egzanp buggy twazyèm, ki se defekte pa nati, ak sa yo rele buggy3 epi li mete sou pye yon fonksyon échanjé. Isit la nou gen yon fonksyon prensipal ki te x ak y abitrèman inisyalizèd 1 ak 2, respektivman. Nou te ka itilize GetInt, men nou jis bezwen yon egzèsis ki senp, Se konsa li difisil-kode kòm 1 ak 2. Nan liy 21 ak 22, nou aparamman enprime soti x ak y, 1 pou chak liy. Lè sa a, sou liy 23, mwen reklame mwen échanjé valè sa yo, dot, dot, dot. Mwen aparamman rele yon fonksyon nan liy 24 rele swap ki pran 2 agiman. Li nan totalman legi pou fonksyon yo pran 2 agiman. Nou te wè printf fè li deja. Se konsa, swap aparamman pran x ak y, e kòm non li sijere, Mwen ta espere ke li pral boukante valè sa yo 2. Se konsa, Lè sa a, mwen reklame sou liy 25 "échanges!" epi mwen Reprint x ak y anba sipozisyon nan yo ke yo te tout bon yo te échanges. Men, si mwen aktyèlman kouri pwogram sa a - kite m 'louvri moute yon fenèt tèminal, kite m 'fè buggy3 - kòm non an sijere, sa a pa pral mete fen nan byen paske lè m 'frape Antre, avi ke x se 1, y se 2, e ankò nan fen pwogram nan, yo toujou, an reyalite, menm bagay la. Se konsa, ki baze sou demonstrasyon an jis kounye a ak Ken, ki sa ki la aktyèlman ale sou? Se pou nou plonje nan sa a fonksyon swap. Li nan super kout. Li nan sèlman yon liy kèk nan kòd long. Men, sa ki nan pwoblèm nan fondamantal ki baze sou istwa a te di ki senp moute isit la ak Ken? Poukisa se swap kase? [Elèv] Ou ap estoke nan yon kopi, pa varyab la. Egzakteman. Nou ap estoke nan yon kopi, pa varyab la li menm. Nan lòt mo, swap aparamman pran 2 agiman, yon int, ak li a abitrèman yo te rele yon b, epi, ak moute isit la mwen te ki te pase nan x ak y yo, ki se respektivman 1 ak 2, men mwen pa literalman pase nan x, mwen pa literalman pase nan y, Mwen pase yon kopi x ak yon kopi y. Li nan prèske tankou si ou kopye ak kole nan swap valè yo ke w vle l 'bay aktyèlman manipile. Se konsa, si sa a, se ka a, lè m 'nan kòmansman an pwogram pwomenad liy 35 Lè sa a, 36, lè m 'rive nan liy 37, nan pwen sa a nan istwa a, ki sa ki valè a nan yon? Nan pwen sa a nan istwa a, liy 37, ki valè a nan yon nan pwen sa a? >> [Elèv] 1. [Malan] Li ta dwe jis pou 1, dwa, paske x te pase nan kòm agiman a an premye, ak sa a fonksyon jis abitrèman ap rele agiman premye li yo yon. Menm jan an se y agiman, dezyèm lan, epi li jis abitrèman rele b nan agiman dezyèm fwa. Sa a se dikotomi aktyèlman jistis tou senpleman eksplike. Reflechi sou li. Okenn nan nou gen te rankontre moun ki te ekri printf, Se konsa siman, li oubyen li pa gen okenn lide ki sa varyab nou an 30 ane pita yo pral yo dwe rele. Se konsa, gen te gen yon diferans ant sa ou rele varyab nan fonksyon w ap ekri ak sa ou rele varyab nan fonksyon w ap rele oswa lè l sèvi avèk. Se konsa, nan lòt mo, mwen te ekri varyab mwen kòm x ak y, Men, si te yon lòt moun ekri fonksyon an swap, li oubyen li sètènman pa ta renmen konnen ki sa varyab m 'yo pral rele, Se konsa reyalize ke sa a se poukisa ou gen sa a duality nan non. Teknikman, mwen te kapab fè sa a pa konyensidans, men yo ta dwe toujou ki te pase nan kòm kopi. Li ta jis pou yon konyensidans pi estetik si moun sa a ki te ekri swap te itilize non yo menm. Se konsa, nan pwen sa a nan istwa a, liy 37, yon se 1, b se 2, ak koulye a, mwen kontinye nan boukante yo. Premye a tout, kite m 'aktyèlman fè sa a pi plis tou senpleman. Mwen pa konnen sa moun liy 3 nan kòd yo te fè a. Kite m 'jis fè sa a: b = yon; yon = b; fè. Poukisa se sa a kase, lojikman? Li nan kalite bagay la entwisyon, dwa? Se konsa, yon b pran ak b vin tounen yon, men pwoblèm nan se ke le pli vit ke liy 37 ègzekutra, sa ki nan valè a nan yon b ak? Menm bagay la tou, 1, paske ou te clobbered, se konsa pale, ou te chanje b egal a yon. Se konsa, yon fwa ke liy 37 egzekite, ki nan gwo, ou kounye a gen 2 kopi nimewo a 1 andedan nan fonksyon sa a, se konsa Lè sa a, lè w di nan liy 38 yon = b, w ap kalite vise paske w ap sèlman plase 1 a 1. Ou te kalite pèdi valè a ou pran swen sou yo. Se konsa, nan vèsyon orijinal la nan sa a, remake sa mwen te fè. Mwen olye te gen yon liy twazyèm nan kòd ki te sanble ak sa a. Mwen deklare yon varyab tanporè. Tan se yon non trè komen pou yon varyab tanporè, ak li nan yon int paske li gen matche ak sa m 'vle fè yon kopi. Mwen sere kopi yon andedan nan tan, se konsa yon fwa ke liy 37 egzekite, valè a nan yon se - chèk rapid saniti - 1, valè b se 2, ak valè a nan tan tou se 1. Se konsa, koulye a, mwen egzekite liy 38. Yon fwa liy 38 ègzekutra, yon pran sou valè a pou b. Ak b, se te 2 Se konsa, yon se kounye a 2. Se konsa, nan pwen sa a nan istwa a, yon se 2, b se 2, ak tan se 1, konsa koulye a lojikman, nou kapab valè jis plok tan la nan b ak nou ap fè. Se konsa, nou te rezoud pwoblèm sa a. Malerezman, lè m 'kouri pwogram sa a nan fòm sa a, li pa aktyèlman swap nenpòt valè. Men, yo dwe klè, poukisa? Mwen fiks pwoblèm nan ki lojik ki soti nan jis yon ti moman de sa, men ankò, si mwen kouri pwogram sa a, x ak y rete san okenn chanjman nan fen ekzekisyon pwogram nan. [Fèbl kòmantè elèv] >> Nou pa t 'tounen anyen, se konsa sa a, se vre. Men, li vire soti gen nan yon ti jan nan yon pwoblèm isit la paske konsa byen lwen, bagay la sèlman nou te kapab retounen se yon sèl bagay, e sa se yon restriksyon nan C. Ou kapab sèlman retounen vrèman yon sèl valè, nan ka sa a mwen kalite kole isit la paske mwen te kapab retounen valè a nouvo sou x oswa mwen te kapab retounen valè a nouvo sou y, men mwen vle tou de tounen. Se konsa, retounen se pa sa solisyon an senp isit la. Men, pwoblèm lan se fondamantalman poukisa? Ki sa nou aktyèlman échanges? [Elèv] a ak b. >> A ak b. Men, a ak b se kopi x ak y, ki vle di nou jis te fè tout bagay sa yo travay, nou jis te pase 3 minit ap pale de fonksyon an swap ak tout 3 nan sa yo varyab, ak sa a, se gwo, parfe kòrèk nan izòlman, men yon ak anviwonman b a sèlman se nan liy sa yo isit la. Se konsa, jis tankou yon riban pou, si ou deklare yon nonb antye relatif mwen andedan an pou riban, Menm jan tou, si w ap deklare a ak b andedan yon fonksyon ke ou te ekri, yo ap valab sèlman andedan nan ki fonksyon, ki vle di le pli vit ke swap a se fè pwomenad ak nou ale nan liy 24 nan liy 25, x ak y pa te chanje nan tout. Ou jis gaspiye yon anpil tout tan échanjé kopi varyab. Se konsa, li sanble ke solisyon an sa a se aktyèlman ki pa klè. Li pa byen ase retounen valè paske nou ka sèlman retounen 1 valè, e mwen reyèlman vle swap tou de x ak y nan menm tan an, pou nou pwal gen pou tounen nan sa a. Men, pou kounye a, reyalize ke pwoblèm nan fondamantalman sòti de la lefèt ke a ak b se kopi ak yo nan dimansyon pwòp yo. Se pou nou eseye rezoud sa a nan kèk fason. Kite m 'tounen isit la aktyèlman woulo liv ak louvri moute, kite la di, yon Variant katriyèm sa a, buggy4. Ki sa ki sou sa a? Sa a se yon pwoblèm ki sanble men ki pi senp gade nan anvan nou pran yon koud nan rezoud li. Sa a se pwogram yo rele kantite, epi li aparamman inisyalizasyon yon nonb antye relatif x nan 1 nan liy 18. Mwen Lè sa a, reklame x se 1, mwen Lè sa a, reklamasyon "Incrementing ..." Mwen Lè sa a, rele kantite, men Lè sa a, nan liy 22 ak 23, mwen reklame li nan te enkremante, Mwen reklame x se kounye a tou sa li se - 2, prezimableman - men pwogram sa a se buggy. Ki sa ki nan pwoblèm nan? Yeah. >> [Fèbl repons elèv] >> Egzakteman. Se konsa, x ki te deklare, evidamman, sou liy 18. Sa a se andedan aparèy òtopedik Curly prensipal la. Se konsa, repons lan senp isit la se ke pandan ke x egziste isit la, li pa egziste nan liy 32, se konsa pwogram sa a aktyèlman pa pral menm konpile. Du a, lè mwen eseye konpile sa a kòd ki pral rele nan m ' sou kèk idantifyan sekrè oswa yon bagay sou sa. An reyalite, se pou yo eseye. Sa a se fè buggy4. Gen li ye. Sèvi ak nan 'x' sekrè idantifyan nan liy 32. Ak aktyèlman, se pou yo gen plis eksplisit isit la jodi a se konsa ke sa a se itil nan lè biwo louvri ak nan kay la. Remake li nan yon ti kras cryptically ekri. Men, lefèt ke rezone gen rele nan nou, li di buggy4.c: 32:5, se aktyèlman itil. Sa vle di ke erè a se sou liy 32 nan pozisyon karaktè 5. Se konsa, 1, 2, 3, 4, 5. Sa a se, an reyalite, kote pwoblèm lan se. Epi tou li, tou, kenbe nan tèt ou nan lè biwo louvri ak nan kay la, mwen gen chans isit la. Mwen gen yon erè. Li k ap pase yo dwe relativman fasil yo ranje. Men, si ou jwenn yon ekran tout plen ak mesaj erè boulvèsan, ankò reyalize ke yon sèl la bottommost ta ka jis pou sentòm nan yon sèl la topmost. Se konsa, toujou kouri dèyè desann pinèz ou soti nan tèt anba paske se la ta ka jis gen yon efè chèn flè magerit ki sijere ou gen fason plis pwoblèm ke ou aktyèlman fè. Se konsa, kouman nou ta ka ranje sa a si objektif mwen se kantite x? >> [Elèv] Fè x mondyal. Okay, pou nou ka fè x mondyal. Kite a pran rakoursi nan ke mwen te avèti sou pi bonè, men èk, nou jis bezwen yon ranje rapid, se konsa kite yo jis di x int moute isit la. Ki fè x mondyal. Se konsa, kounye a prensipal gen aksè a li epi li kantite gen aksè a li, e konsa, kite m 'ale pi devan epi pou konpile tout sa a kounye a. Fè buggy4, Antre. Sanble yo konpile kounye a. Se pou nou kouri buggy4. Li sanble vin aktyèlman ap travay. Sa a se youn nan bagay sa yo ki nan fè menm bagay mwen di, se pa kòm m 'fè, kòm Mwen te jis fè isit la, paske an jeneral, pwogram nou yo ale nan jwenn pi plis enteresan ak pi lontan ankò pase sa a, epi si solisyon ou a pwoblèm lavi a se jis mete tout varyab yo nan tèt la nan dosye ou a, trè vit pwogram jwenn horrifically difisil jere. Li vin pi difisil yo panse moute nouvo non varyab, li vin pi difisil a konprann ki sa varyab ap fè sa, ak sa an jeneral, sa a se pa yon solisyon bon. Se konsa, kite a fè sa pi byen. Nou pa vle sèvi ak yon varyab mondyal isit la. Mwen vle kantite x, se konsa mwen te kapab evidamman - nan fen jou a, sa a se kalite yon istwa komik paske nou jis fè sa a - Men, si mwen pa t 'konnen sou ki operatè oswa mwen pa te pèmèt li chanje li nan prensipal tèt li, konbyen lòt bagay te kapab mwen aplike Ken sou isit la tan sa a pa kib, men yo kantite? Kouman pou mwen chanje bagay sa a isit la? Yeah. [Elèv] Pase nan x ak Lè sa a, retounen [fèbl] >> Okay, bon. Se konsa, poukisa m pa pase nan x ak Lè sa a, olye ke retounen li, poukisa m pa jis retounen x + 1. Yon koup plis bagay oblije chanje isit la. Mwen sou track dwat la. Ki lòt bagay mwen bezwen ajistè? Yon lòt moun. Yeah. [Fèbl repons elèv] Mwen bezwen chanje kalite a retounen nan kantite paske li pa anile. Se pa gen anyen vle di ke yo te anile tounen, men byen klè kounye a li, kidonk sa a bezwen chanje pou - >> [elèv] int. Int yo dwe konsistan avèk tou sa m ap aktyèlman retounen. Koulye a, yon lòt bagay se toujou buggy isit la. Yeah. [Fèbl repons elèv] >> [Malan] Se konsa, mwen bezwen kantite x? [Fèbl repons elèv] >> [Malan] Ah, se konsa mwen bezwen pase x. Se konsa, mwen bezwen fè sa a isit la. >> [Fèbl kòmantè elèv] [Malan] Se konsa, pwototip a, mwen gen chanje sa a moute isit la. Se konsa, sa a te vin tounen yon int, sa a gen yo vin - hmm, mwen gen aktyèlman yon ensèk desann isit la. Se pou nou ranje yon sèl sa a an premye. Kisa mwen ta dwe sa sa a aktyèlman ta dwe ye? Li nan te resevwa yo dwe genyen yon yon bagay int. Li ta ka x, men franchman, si w kòmanse rele tout x varyab ou a, li nan pral jwenn pi piti ak mwens klè ki se ki. Se konsa, kite a jis abitrèman chwazi yon konvansyon nonmen diferan pou fonksyon vin ede mwen, fonksyon yo mwen ekri. Nou pral rele li yon, oswa nou te ka rele li - Se pou nou rele li nimewo yo dwe menm plis eksplisit. Se konsa, Lè sa a, mwen gen retounen tou sa nimewo a se plis 1, e kounye a, mwen gen chanje 1 lòt bagay moute isit la epi yon lòt bagay moute isit la. Kisa mwen gen chanje sou liy 21 an premye? >> [Fèbl repons elèv] [Malan] mwen gen yo asiyen li nan x. Mwen pa ka jis rele kantite (x). Mwen bezwen sonje repons lan pa chanje valè x ki sou bò gòch-men yo. E menm si x se kounye a sou bò gòch la ak dwa, sa se an totalman amann paske vin bò a men dwat-ou egzekite premye Lè sa a, vin plopped nan bagay la sou bò gòch - x nan ka sa a. Lè sa a, anfen, sa a se yon ranje fasil kounye a. Sa a ta dwe jis matche ak sa ki nan desann anba a, nimewo int. Se konsa, yon pakèt antye nan chanjman pou yon fonksyon vrèman estipid men reprezantan de bagay sa yo ke nou pral de pli zan pli vle fè. Se konsa, fè buggy4. Mwen te vise moute kèk kote. Oh, Bondye mwen an. Senk erè nan yon pwogram 6-liy. Se konsa, sa ki nan mal sou liy 18, pèsonaj 5? Se konsa, mwen gen deklare sa a Int,. Ann gade pou wè. Gen tout yon seri nan erè ak lòt. Oh, Bondye mwen an - 19, 18, 21 - men ankò, kite yo jis klè ekran an, L kontwòl isit la, ak relance sonnen. Se konsa, 5 pwoblèm se aktyèlman jis ki 1. Se konsa, kounye a kite a kouri buggy4, Antre. Wou, x ki te enkremante kòrèkteman. Tout dwa. Nenpòt kesyon sou kòman yo kantite nimewo? Yeah. [Fèbl kesyon elèv] >> Bon kesyon. Kouman se li ke mwen ka jis chanje x ak kantite ak pwogram lan pral konn sa touswit? Yon fwa ankò, panse a li tankou sa a abstraction. Se konsa, si mwen menm prensipal ak Ken se kantite, franchman, mwen pa pran swen sa ki Ken rele iPad l 'yo. Mwen pa pran swen sa l 'mande nenpòt ki bagay ki te fè avèk aplikasyon li nan sa a fonctionnalités. Sa a se yon detay aplikasyon se mwen menm, prensipal yo, pa gen nan swen sou. Se konsa, tou senpleman chanje li toujou andedan nan fonksyon la - nimewo isit la ak nimewo isit la - se tout li pran toutotan m'a compile. Li nan sòt de renmen si ou panse sou anpil nan nou, moun nan nou ki gen lisans pou kondwi ki te kondwi oswa si w te menm kondwi nan yon machin, pi fò nan nou pa gen okenn lide ki jan yon machin ap travay anba kapo a. Ak literalman, si ou louvri moute kapo machin lan, pi fò nan nou - tèt mwen enkli - pa pral vrèman konnen ki sa nou ap chèche a, kalite tankou ou kapab santi ou ak bagay tankou sa a kounye a. Men nou pa vrèman gen nan swen ki jan machin nan travay, nou pa gen pran swen ki sa tout branch yo ak Pistons ak câbles andedan nan machin nan yo aktyèlman ap fè. Se konsa, yon bagay tankou sa ou rele Piston la pa enpòtan isit la nan ka sa a. Menm lide. Yeah. >> [Fèbl kesyon elèv] Si gen plis itilizasyon nan moman an varyab g de sa, ou, pwogramè a, ta gen yo chanje yo toupatou. Oswa ou ta ka literalman fè File, Menu, ak Lè sa a, Jwenn, Ranplase - yon bagay tankou sa - men ou yo ale nan gen fè chanjman sa yo tèt ou. Ou dwe konsistan. >> [Elèv] Si gen varyab miltip [fèbl] Yon lòd patikilye tankou isit la, si sa a te Int yon lòt nimewo? >> [Elèv] ki kòrèk. [Malan] Yeah. Lòd zafè lè ou ap rele fonksyon an. Se konsa, si m 't'ap rele increment isit la ak yon bagay vigil yon bagay, gen yon kat dirèk. Se varyab a an premye, tou sa li yo rele, te fè yon kopi agiman an premye sou isit la. Sorry. Sa a pa ta dwe gen yon parantèz. Liy ki agiman dezyèm moute ak yon sèl, dezyèm lan. Se konsa, lòd, se wi, zafè. Tout dwa. Sorry. Mwen te pran wout la long yo ka resevwa la. Lòt kesyon yo? Tout dwa. Se konsa, kite a wè si nou pa ka penti yon foto nan sa ki aktyèlman pral sou isit la anba kapo a, se konsa pale. Sa a se yon rektang ki ta ka reprezante memwa òdinatè ou a. Menm si ou pa gen okenn lide kouman memwa ap travay oswa ki jan RAM travay, omwen asime ke ou genyen grap rezen li jou sa yo. Ou te gen megabit nan li, ou te gen jigokte nan li, e nou konnen soti nan semèn 0 ke yon multiple se sèlman sa ki? >> [Elèv] 8 Bits. 8 Bits, dwa? Se konsa, 8 zero ak 1. Se konsa, si òdinatè ou a gen yon Gig nan RAM, 2 jig nan RAM jou sa yo, ou gen yon milya dola oswa 2 milya dola bytes nan memwa oswa apeprè 8 milya dola oswa 16 milya dola Bits andedan nan òdinatè ou. Kontrèman ak ti kras egzanp lan Willy lanijèr, li pa patikil mayetik tipikman ankò. De pli zan pli - nan laptops omwen - li a kondui eta solid, SSDs, ki jis pa gen okenn pati k ap deplase. Li nan tout elektwonik. Li nan tout elektrisite ki baze sou. Se konsa, panse a rektang sa a kòm jis ki reprezante jigokte yo 1 oswa 2 nan memwa ki di ou gen. Se konsa, li yon ti moso nan memwa. Mond lan nan syans konpitè te sòt de partition koupe sègman nan memwa fè bagay diferan. Pou egzanp, si sa a se RAM òdinatè ou a, jan sijere pa rektang lan la, Li sanble ke pa konvansyon, nan tèt la nan RAM ou konsa, yo pale, se jeneralman sa ki rele yon segman tèks. Moun sa yo se 0s la ak 1S ke ou te konpile. Se konsa, lè nou te gade anba kapo a nan sa ki a.out se, tout bagay sa yo 0s ak 1, lè ou kouri nan yon pwogram nan, sa yo 0s ak 1S yo chaje soti nan kondwi difisil ou a nan yon bagay yo rele RAM, ak nan belye mouton an yo ap mete nan tèt la. Pandan se tan, ou gen lòt bagay: inisyalize done, uninitialize done. Moun sa yo ki swaths 2 nan memwa, al gade nan varyab mondyal, ki ou pa yo itilize souvan men pafwa si ou fè sa, yo fini 'kanpe tankou byen. Lè sa a, gen nan kèk lòt bagay: varyab anviwònman, ki nou pa pral pase anpil tan sou li a, men Lè sa a, 2 bagay sa yo enpòtan ke yo va tounen nan tout semès la, chemine ak pil wòch. Se konsa, pifò nan memwa òdinatè w lan a ap rezève lè kouri yon pwogram pou yon bagay yo rele pil la ak yon bagay yo rele pil wòch la. Nou pa pwal pale sou pil wòch la jodi a, men nou pral pale sou pil la. Se chemine a vle di ke yo sorselri moute vizyèl a nan plato yo sal kote moun manje nan Mather House oubyen nenpòt kote ou rive yo kote ekip la sal kote moun netwaye yo chak jou, yo chemine yo moute ki soti sou planche sou leve, ak Menm jan tou, nan memwa, gen ide sa a nan mete yon bagay sou yon pil, mete yon bagay sou yon pil, mete yon bagay sou yon pil. Ak sa ki nou vle di pa sa a? Se pou nou rale nan sou jis mwatye ki pi ba nan foto sa a, RAM òdinatè ou a, pwopoze sa ki annapre yo. Li sanble ke lè ou kouri nan yon pwogram tankou a.out oswa alo - kèlkeswa sa pwogram lan se ke ou te ekri - ankò, sa yo ki 0s ak 1S yo chaje soti nan kondwi difisil ou, ki se alontèm depo, rete gen menm lè ou rale ploge an, chaje nan RAM. RAM se pi vit pase kondui difisil - li a ki pi piti pase kondui difisil - men li la kote pwogram viv pandan w ap kouri yo. Se konsa, ou doub klike sou yon pwogram sou yon Mac oswa PC, li chaje soti nan kondwi difisil nan RAM. Le pli vit ke li an chaje nan RAM, ale nan 0s ak 1S nan tèt la fason sa a, segman nan tèks sa yo rele, men Lè sa a, le pli vit ke pwogram ou an aktyèlman kòmanse kouri, se fonksyon prensipal yo rele, ak prensipal, menm jan nou te wè, souvan gen varyab lokal yo, epi li gen antye ak strings ak charaktèr ak renmen an. Se konsa, si pwogram ou ke ou te ekri oswa pwogram nan ke ou te doub klike itilize kèk varyab andedan nan prensipal yo, yo fini nan pati anba a nan chemine ou nan memwa, se konsa pale. Plis konkrètman, ki sa ki sa sa a aktyèlman vle di? Sa a jis vle di ke si nou te ale nan nimewo bytes yo nan RAM nan òdinatè w lan, remake ke sa a ta kapab multiple nimewo 0, sa a ta kapab multiple nimewo 1, 2, 3, 4, 5, 6, tout wout la jiska 2 milya dola ta dwe tout wout la moute gen nan tèt la. Se konsa, nan lòt mo, lè nou pale sou RAM oswa memwa an tèm de bytes, li jis vle di ke yon moun te deside ki sa ak kantite chak nan sa yo fragman nan memwa. Se konsa, lè ou bezwen 32 Bits pou yon int oswa ou bezwen 8 Bits pou yon Char, kote yo fini nan memwa? Concept yo, yo jis fini nan fon an nan bagay sa yo rele pil la. Men, sa ki nan enteresan kounye a se lè prensipal rele yon fonksyon - sipoze yon fonksyon rele foo, jis yon non abitrè - sa k ap pase se prensipal se nan pati anba a nan sa a pil nan memwa; foo koulye a, se mete sou tèt prensipal nan memwa. Se konsa, nenpòt varyab lokal ki foo te fini sòt de teori pi wo a sa yo ki nan prensipal la. Si foo rele yon lòt fonksyon rele bar, sa yo ki varyab fini isit la. Si bar rele yon lòt bagay, isit la, isit la, isit la. Se konsa, sa ki nan enteresan sou kouri yon pwogram se ke lè w rele fonksyon ak tankou moun yo fonksyon rele fonksyon ak tankou moun yo fonksyon rele fonksyon, ou bati sa a pil nan fonksyon nan memwa. Ak sèlman yon fwa yon retounen fonksyon ou kòmanse resevwa ki memwa tounen. Se konsa, youn nan fason ki pi fasil yo kouri soti nan memwa nan yon pwogram òdinatè se yo ekri fonksyon ki pa janm retounen. Se konsa, pou egzanp, kite a demontre kòm anpil ak yon pwogram entansyonèlman buggy. Kite m 'ale pi devan epi # enkli , int prensipal (san valè), ak mwen pral fè pandan y ap (2> 1), ki pwobableman pa pral janm chanje sou nou, ak kite m 'ale pi devan koulye a ak fè printf. Aktyèlman, ki k ap pase yo dwe mwens vizyèlman enteresan. Se pou nou fè sa. Pou int mwen = 0; mwen> 0 - kite a fè sa-a erè - mwen + +. Li kite yo pa printf isit la. Se pou nou pratike sa mwen te t'ap anonse bon. Se pou nou genyen yon metòd isit la, koral anile, epi nou pral di Int mwen, ak Lè sa a, mwen pral di printf - pa gen okenn, kite la fè sa-a plis enteresan. Se pou nou aktyèlman pa enprime anyen nan tout. Se pou nou jis fè sa a: koral (mwen). Tout dwa. Se konsa, sa a se buggy paske poukisa? Mwen fè sa a moute kòm m 'ale paske pwogram lan pa aktyèlman fè anyen nan enterè yo. Men se pa sèlman objektif la. Objektif la se yo ekri yon pwogram ki gen prensipal fonksyon fè sa, aparamman? Rele tèt li. Ak aktyèlman, nou pa bezwen riban an. Se pou nou menm senplifye sa a jis pou yo pa pèdi devan je nan reyèlman pinèz la fondamantal. Apèl Main koral nan chante kèk koral, Lè sa a, mwen te fè yon bagay estipid ak mwen te gen koral rele nan koral paske mwen sipoze yon lòt moun te ale nan aplike li petèt, e kounye a, sa a pa pral konpile ankò. Mwen bezwen fè ki sa? Mwen bezwen pwototip a, sonje. Se konsa, mwen bezwen gen moute isit la koral anile (Int mwen); Se konsa, kounye a si m 'desann isit la - aktyèlman, se pou yo sèvi ak fenèt la pi gran. Se pou nou ale pi devan epi fè koral. Se pou nou ale pi devan epi fè koral. Sèvi ak nan idantifyan sekrè mwen. Oh, sa ki te estipid. Nou pa bezwen agiman an. Se pou nou jis fè sa. Mwen swete nou te te kòmanse fason sa a. Li ta yon pwogram pi fasil ekri. Gen. Koulye a, kite a janbe lòt bò nan fenèt tèminal m 'yo, relance rezone, ak isit la nou ale. Se te vrèman vit. Ki sa ki aktyèlman jis te rive, menm si? Oke, koulye a, mwen pral ajoute liy lan ekri ak lèt ​​detache pou nou ka wè. Kite m 'di printf ("mwen an isit la") - pa gen okenn varyab. Nou pral kite li tankou sa. Kite m 'relance fè. Kite m 'relance koral. Ak ... vin sou. Kenbe prale. Kòm yon sou kote, poukisa li pa te fè aksidan ankò? Fay la segmentation te rive Super vit anvan. [Fèbl repons elèv] >> Egzakteman. Se konsa, li pran tan nan enprime, dwa? Li jis pran plis travay sou pati òdinatè a. Ak la li ye: fòt Segmentation. Se konsa, remake jis ki jan pwogram vit kouri. Si ou pa ap enprime anyen, Super vit. Men, nou toujou gen sa a fòt segmentation paske sa ki te rive? Si ou panse sou ki jan se memwa òdinatè w lan an mete deyò, sa a k ap pase yo prensipal yo, men isit la kite yo jis rele sa koral, e kite yo rele sa koral. Epi, koulye a, si mwen fè estetik mwen dwat, sa a se jis pral di koral, koral, koral, koral, koral, koral, koral, nauseum anons, epi evantyèlman, sa ki pral rive? Si foto a gwo, literalman, se sa a, ki sa ki jis k ap pase concept? Chemine depatman yo pil wòch la. Oswa, pi mal, ou jis anvahi tout bagay, ki gen ladan segman nan tèks, ki se 0s la ak 1S ki reprezante pwogram ou an. Nan ti bout tan, sa a se jis super, super move. Te pwogram ou an espiral soti nan kontwòl. W ap itilize fason plis memwa pase ou gen entansyon tout paske yo te yon erè estipid nan ka sa a, oswa nan ka sa a yon fonksyon trè fè espre fè rele tèt li. Koulye a, sa a se pa tout move. Fonksyon rele tèt yo aktyèlman gen gwo pouvwa lè ou itilize li kòrèkteman. Mwen pa te itilize li kòrèkteman isit la. Se konsa, sa a se pa tout move, men reyalite a ke mwen pa janm aktyèlman sispann rele tèt mwen se yon feblès fondamantal isit la nan pwogram sa a. Se konsa, kote nou pral ansanm ak tout sa yo? Kisa ki vrèman rive? Lè m 'rele fonksyon an kantite tankou nou te fè nan sa yo egzanp, Mwen gen yon valè tankou 1 ke mwen pase pous Mwen pase nan yon kopi nimewo a 1, se konsa sa ki annapre yo k ap pase. Ann al nan egzanp lan kantite, sa a Guy dwa sou isit la. Isit la nan sa ki aktyèlman rive. Lè m 'rele kantite ak mwen pase nan x, pictorially, sa k ap pase sou isit la se sa a. Si mwen gen valè a nan 1 ki estoke isit la e mwen aktyèlman rele kantite, ki se kounye a yo rele koral - iPad a ap voye m 'wete isit la. Se pou nou rele sa a kantite, epi nou pa konnen ki sa sa a fonksyon pwochen a pwal. Se konsa, sa ki aktyèlman rive se isit la yon kote nan prensipal mwen gen yon ti moso nan memwa ki estoke nimewo a 1. Lè m 'rele kantite, mwen sèvi ak yon lòt ti moso nan memwa, Men, koulye a mwen gen kopi a nan 1. Lè m 'kantite ki valè, sa a vin tounen 2, men Lè sa a, kisa k ap rive le pli vit ke retounen kantite? Sa a memwa jis vin yo retounen l ba sistèm nan fonksyone, ki vle di tout sa ou te fè se pa gen anyen itil. 1 a ki te orijinal genyen nan yo nan prensipal se toujou aktyèlman la. Se konsa, kote nou pral ak sa a? Li sanble ke nan memwa ou gen sa a sekans tounen-a-tounen nan bytes ke ou ka mete bagay nan, epi li sanble ke nou te deja wè yon bagay ki enplike nan mete bagay sa yo tounen nan fè bak nan do nan do. Ki sa ki se yon fisèl ki baze sou semèn 1 e kounye a, semèn 2? Se jis nan yon koleksyon karaktè. Se konsa, li vire soti menm jan ou ka mete nimewo yo nan memwa, Menm jan an ou kapab mete karaktè nan memwa. E yon fwa nou kòmanse mete karaktè nan memwa tounen nan Retounen nan Retounen nan tounen, Li sanble ke lè l sèvi avèk pi senp la bagay sa yo tankou yon riban pou oswa yon riban pandan y ap, nou ka rèspèté de gòch a dwat sou karaktè yo nan yon fisèl e kòmanse masaj yo nan karaktè diferan tout ansanm - yon ka vin b, b te ka vin c - pou ke finalman, nou ka pran yon fraz angle ki aktyèlman fè sans ak konvèti chak nan youn lèt sa yo nan yon moman pa mache nan memwa òdinatè nou an goch a dwat aktyèlman ankripte. Se konsa, kite a pran repo senk minit nou yo isit la, ak lè nou 'tounen an, nou pral kòmanse pwosesis sa a nan eskalade enfòmasyon. Tout dwa. Anvan nou plonje nan kèk kriptografik ak tout bagay sa yo rele ranje, kite m 'pran yon poz pou nenpòt kesyon paske mwen santi mwen tankou mwen reyèlman kalite confus kèk nan sijè sa yo. Se konsa, kite a ranje kounye a, si nou kapab. Nou jis te pale osijè de valè retou, nou te pale de agiman, epi nou te pale osijè de sa a nosyon, ki nou pral tounen vin jwenn nan semèn kap vini yo nan gade memwa kòm yon pakèt antye nan sa yo plato anpile, se konsa pale, anba nan fon sou moute, tankou ke chak plato ki vin mete yo sou chemine a ki reprezante yon fonksyon ki nan kounye a yo te rele. Nenpòt kesyon? Kite m 'poze yon kesyon isit la. Kite m 'senplifye sa a tounen nan ki sa li te la anvan kèk nan pi bonè Q & A. nou Lefèt ke kantite a gen parantèz louvri, int nimewo, fèmen parantèz - ki sa int nimewo reprezante? [Elèv] Yon diskisyon. >> Yon diskisyon. Oke. Men, sa ki nan yon diskisyon? [Repons fèbl elèv] >> Ki sa ki nan sa? >> [Elèv] yon bagay ke ou pase pous Oke, kidonk yon bagay ke ou pase pous Ak plis jeneralman, li nan jis opinyon an. Si ou te ekri yon fonksyon ak objektif ki fonksyon an nan lavi se fè yon bagay yon ti kras diferan chak fwa ou sèvi ak li, Lè sa a, wout la sèlman pou sa rive reyèlman ta sanble yo gen ba yo li l anplas ak patisipasyon konsa ke li kapab fè yon bagay diferan ak sa D 'chak fwa. Se konsa, ou bezwen presize de bagay lè yon fonksyon pran opinyon. Ou bezwen presize non an ke ou vle bay ak sa yo ki D ' piman pou konvenyans pwòp ou a pou ke ou ka al gade nan li nan fonksyon la ke ou tèt ou ap ekri, jan mwen te fè isit la nan liy 32. Men, ou ap bezwen tou presize kalite li yo paske C se yon lang programmation ki jis mande pou si ou vle yon varyab, ou gen di òdinatè a ki sa done kalite li ye, nan pati gwo pou ke li konnen kijan anpil Bits asiyen pou varyab sa a paske li ka 6 - regrèt sa, li pa pral 6. Li kapab 16, li kapab 8, li kapab 32, menm 64, men òdinatè a bezwen konnen. Koulye a, int la ki sou bò gòch-men reprezante sa, pa kontra? [Repons fèbl elèv] >> Ki sa ki nan sa? >> [Elèv] Kalite fonksyon. Ki kalite yon fonksyon ak, plis espesyalman, ki kalite pwodiksyon li yo. Dwat. Se konsa, Lè nou konsidere ke bagay la nan parantèz reprezante opinyon li yo, si genyen, bagay la sou bò goch la reprezante pwodiksyon li yo. Ak nan ka sa a, kantite aparamman retounen yon int, ak sa int a se tip a retounen nan fonksyon sa a. Kisa sa vle di retounen? Literalman, ou sèvi ak retounen nan mo kle ak Lè sa a, si sa w ap retounen a dwat a mo kle a se yon nonb antye, Lè sa a, ki se vre ki konsistan avèk ki sa nou te pwomèt la. Ou pa t 'kapab fè yon bagay tankou sa a - hello, mond - paske sa se yon kòd. Li evidan, li pa yon nonb antye. Se konsa, nan kout, chay la se reyèlman sou nou, pwogramè a, yo dwe espesifik tankou sa ki nou ap retounen ak Lè sa a, aktyèlman ale sou retounen li. Kontèks la isit la kounye a se ke memwa òdinatè w lan a se yon jigokte, 2 jigokte - kèlkeswa sa - petèt li plis, petèt li mwens, men òdinatè a wè li tankou ke li gen seksyon diferan. Yon bagay desann la, yon lòt bagay ap moute a, bagay diferan ale nan mitan an, ak jodi a nou jis kòmanse rakonte istwa a, men nou pwal tounen vin jwenn tan sa a sou. Pou kounye a, moso a sèlman nan memwa nou reyèlman sousye de se segman nan tèks paske ki jis reprezante 0s ak 1S ki rezone a te outputted. Se konsa, lè ou kouri nan yon lòd nan klavye a tankou a.out oswa ou doub klike sou yon icon sou Mac OS oswa Windows, se pwogram ou an chaje soti nan difisil kondwi ou nan RAM ak li a plopped nan tèt la nan RAM òdinatè ou a, se konsa pale. Pandan se tan, kòm pwogram ou an kòmanse kouri ak prensipal vin rele nan pwogram nan, ou te ekri oswa Microsoft a pwogram oswa Apple te ekri, nenpòt nan varyab lokal li fini desann gen nan fon an nan memwa òdinatè ou a. Men, si apèl prensipal yon lòt fonksyon ki kont li genyen varyab oswa agiman yo, yo fini pi wo a li. Men, si ke fonksyon rele yon bagay, yo fini anlè li, anlè li, pi wo a li. Ak sèlman yon fwa se yon fonksyon fè pwomenad chemine a nan plato ki anba po, se konsa pale, kòmanse jwenn pi ba ak pi ba yo. Ak sa a se sa lè sa a, nan yon Nutshell, eksplike poukisa lè w rele kib oswa ou rele kantite, w ap pase nan yon kopi valè an. Ak ki sa sa vle pictorially se ke w ap literalman ekri nimewo a 1 nan yon lòt pati nan memwa, chanje, ki 1 a 2 nan ka a nan kantite oubyen nan yon 8 nan ka a nan kib ak Lè sa a, voye ki memwa lwen le pli vit ke kantite a oswa retounen yo fonksyon kib. Kesyon. [Elèv] Ki kote yo varyab mondyal ki estoke? Varyab Global yo estoke nan sa ki kounye a yo rele done yo inisyalizèd oswa done uninitialized, diferans lan ke yo te si ou gen yon varyab mondyal ak ou asiyen li imedyatman yon valè avèk egal a siy, li fini moute nan tèt la a, epi si ou jis di x int; ki pa gen okenn valè, li fini moute yon ti kras pi ba nan RAM tou senpleman pa konvansyon. Lòt kesyon yo? Tout dwa. Se konsa, foto sa a ap tounen menm jan nou jwenn plis pouvwa anpil ak sa nou kapab fè nan òdinatè a, men pou kounye a, se pou yo gen yon Intro kout chifreman, yon kalite espesifik nan chifreman ki pa rezoud tout pwoblèm nan mond lan men rezoud kèk nan yo. Nan ka sa a isit la, nou gen yon bagay yo rele sekrè-kle chifreman. Sekrè-kle chifreman, kòm non an sijere, proceed sekirite li yo ki sòti nan yon sekrè. Pou egzanp, si ou te tounen nan lekòl klas yo ak ou te pase yon sekrè ti kras lèt renmen ti gason an oswa ti fi ou te kraze sou li a, si ou te vle pase ki note nan odyans la, pwobableman ou pa ta ekri tankou yon nòt nan lang angle oswa kèlkeswa sa lang natif natal ou se. Olye de sa, ou ta ka ankripte li oswa ou ta ka jis voye yo yon mesaj tèks jou sa yo. Men, ou ta ka aktyèlman pase yo yon nòt nan tout sal klas la. Ak fè sa byen nan yon fason ke zanmi ou a ak pwofesè a pa konnen sa ou ap ekri, ou ta ka vini ak yon algorithm jistis senp, jenn menm si ou ka, jis goumen mo yo. Se konsa, olye pou yo ekri yon ou ta ka ekri b, olye pou yo b ou ta ka ekri c, olye pou yo c ou ta ka ekri d, ak pou fè. Oswa ou ta ka vini ak yon tradiksyon pi plis sofistike nan lèt bay lèt diferan. Men, trape an se ti gason an oswa ti fi ki moun w ap voye nòt sa a bezwen konnen yon bagay, ki se ki sa, evidamman? >> [Elèv] Ki sa ki w ap voye. Ki sa ki sekrè ou ye, se tankou sa sa kat ant yon a ak nan b ak a c ak d's. Èske li jis ajoute 1 sou chak nan lèt yo ale ki sòti nan yon b b, c? Èske li pi konplèks pase sa? Se konsa, ou menm ak kraze ou a bezwen gen enfòmasyon sa a sekrè, , men tou genyen kalite yon trape 22-isit la. Si sa a se tan an trè premye w ap voye lèt sa a renmen nan klas la, Kouman se ke tigason oswa yon tifi pral konnen ki sa ki sekrè a menm se? Se konsa, sekrè-kle kriptografik pa rezoud tout pwoblèm nan mond lan, epi gen la aktyèlman yon relasyon isit la ke nou pral tounen vin jwenn rive sou fen semès la. Menm jan an pi fò nan nou pa konnen yon moun ki travay, pou egzanp, nan Amazon.com, e ankò anpil nan nou te pwobableman te achte bagay nan Amazon.com, e nou te te anseye yo asime ke tranzaksyon sa e-komès yo se an sekirite. URL la pwobableman di https, gen nan petèt yon icon komik ti kras kadna yon kote, gen nan kèk kalite chifreman sekirite enfòmasyon kat kredi w ant ou menm ak Amazon.com. Men, si chifreman enplike konnen kèk sekrè e ankò mwen pa konnen nenpòt moun ki nan Amazon epi mwen te sètènman pa ranje nenpòt kalite sekrè ak yon moun nan Amazon, ki jan pou òdinatè mwen an oswa navigatè mwen fè sa? Li vire soti gen nan lòt kalite chifreman tout ansanm ki rezoud pwoblèm sa. Men, pou jounen jodi a, nou pral konsantre sou yon sèl nan senp ki kote ou ka fè aranjman pou nan avanse yo konnen kèk sekrè tankou +1 oswa kèk kat ant yon a ak nan b. Ak pwosesis la nan chifreman jeneralman enplike nan sa. Ou gen kèk tèks plenn, repwezante isit la sou bò gòch, ou kouri li nan kèk kalite algorithm oswa pwosedi pou chifreman li - petèt sa a, se jis yon vin b, b vin c - ak Lè sa a, ou fini ak chifre. Pandan se tan, yon fwa kraze ou a ap resevwa nòt sa a sekrè, li gen Lè sa a, dekriptaj li pa jeneralman ranvèse ki algorithm konsa tankou jwenn tounen tèks la klè. Gen enkarnasyon fizik sa a. Pou egzanp, sa a se yon sekrè bag ti kras dekodaj, ak sa a se yon bèl zanno nan sans ke gen nan de kadran isit la. Sou periferi la deyò nan bagay sa a, gen nan lèt A jiska Z, byenke yo ap nan lòd o aza, yo, epi sou andedan an, gen nan aktyèlman kèk nimewo sa yo ki ak sa a bag ou ka kalite vire deyò an, men se pa andedan kay la yo nan lòd yo aliyen nimewo ak lèt. Ki sòti nan yon fim ki rele Yon Istwa Nwèl la, ou ap wè ke Ralphie ti kras te tèlman anvi konnen sa ki sekrè mesaj Little Annie Òfelen nan te fè l ' ki te kominike, mwen panse, nan fòm lan nan mesaj nimerik sou yon bwat sereyal epi ou te dwe akimile tout kat yo ti kras ki te vin nan ti bwat la sereyal, ou te voye yo nan, ou te gen jwenn tounen bag la dekodaj sekrè pou ke ou ka finalman konnen sa ki kat la se ant lèt ak nimewo oswa lèt ak lèt. Ki jan nan yon òdinatè nou ka ale sou mete ann aplikasyon oswa ki reprezante bagay sa yo tankou sa a? Nou bezwen yon fason pou eksprime tèt nou yon ti kras pi plis genyèn flexibilité pase varyab nou konsa byen lwen yo te aksepte. Nou te gen antye, nou te gen charaktèr, nou te gen cha ak double ak yon lòt moun kèk, men sa yo se moso endividyèl nan memwa ki pa vrèman pèmèt nou eksprime bagay sa yo tankou mo ak fraz ak fraz. Vreman vre, nou te rele tout bagay sa strings, men nou pwomèt ke sa a se vrèman jis yon senplifikasyon nan bibliyotèk la CS50 ke nou ap lide kale tounen. Se konsa, kite la kòmanse fè sa isit la. Kite m 'ale pi devan epi louvri moute yon dosye - tout moun sa yo dosye ki disponib, kòm dabitid, sou entènèt - yo rele array.c rezoud yon pwoblèm asosye strings men sa ki pentire yon foto isit la nan jan nou ta kapab itilize yon bagay yo rele yon etalaj. Yon etalaj se yon kalite done. Li se yon kalite varyab nan kalite ki gen plizyè ki pi piti kalite done andedan nan li tounen nan fè bak nan do nan do. Se konsa, pou egzanp, si nou te vle ekri yon pwogram ti kras ki ba ou mwayèn egzamen ou pou yon kou tankou 50 ki gen 2 ti tès, ou ta ka trè fasil ekri pwogram sa a ki baze menm sou kèk nan materyèl semèn pase a nan lè l sèvi avèk GetInt ak yon koup la varyab: int quiz1, int quiz2. E li trè dwat. Li nan petèt 10, 20 liy nan kòd max yo mete yon pwogram ki mande itilizatè a pou 2 nòt egzamen ak Lè sa a, òdinatè mwayèn yo pa ajoute yo ansanm, divize pa 2, ak Lè sa a, enprime rezilta yo. Nou te ka pwobableman fè sa trè fasilman kounye a apre kèk nimewo nan minit. Men, pwoblèm nan se ke sipoze ke 50 te gen 3 ti tès oswa 4. Sipoze ke ou te vle sèvi ak menm pwogram lan pou yon klas ki te gen ti tès chak semèn. Reflechi sou yon klas ki te chak semèn ti tès. Si gen nan 16 oswa konsa semèn nan yon semès, kounye a ou gen 16 varyab: int quiz1, int quiz2, int quiz3, int quiz4. Osito ke ou kòmanse wè sa a redondance, sa a kopye ak kole nan kòd, li ta dwe kòmanse fè ou vle, te gen yon pi bon fason. Ak Erezman, paske nan ranje gen. Se konsa, kite a fè sa. Premyèman, kite m 'prezante yon bagay trè senp ke nou pa te itilize konsa byen lwen, men ou pral wè li detanzantan nan kòd. Sa a se sa ki jeneralman yo te rele yon konstan. Se konsa, li nan yon konstan nan sans ke sa a valè pa janm chanje. Konvansyon imen an lè y ap kreye yon konstan se sèvi ak tout lèt majiskil jis konsa ke li reyèlman vle di soti nan kòd ou a, ak mo kle a espesyal ke ou itilize nan C a # defini. Se konsa, nou di # defini, lè sa a yon espas, Lè sa a, pawòl Bondye a ke ou vle pou itilize pou non konstan nan ak Lè sa a, valè a konstan la. Avi sa a se diferan de plase yon bagay nan yon varyab. Gen nan pa gen egal siyen, gen nan pa gen virgules. Sa a se sa ki jeneralman li te ye tankou yon direktiv preproseseur, men plis sou tan sa a yon lòt. Pou kounye a, sa a kreye yon valè chanje rele ti tès aktyèl ki gen valè nimerik se 2. Se konsa, nenpòt kote ou wè ti tès, ti tès, ti tès nan tout sa a ranpli, sa se sèlman nimewo 2 a. Si m 'gade nan prensipal kounye a, kite la wè ki jan sa a travay. Premye li sanble yon ti kras skre, men li la tout bagay soti nan semèn 1. Mande itilizatè a pou klas. Ki jan nou fè sa? Nan liy 22 - sa a se reyèlman pati nan juicy - Mwen deklare yon flote men se pa jis yon flote sèl. Mwen deklare, olye, yon etalaj la k ap flote-pwen valè. Varyab sa yo pral rele klas, kòm enplisit isit la, men moso a sèlman nan sentaks nouvo Lè sa a, moun sa yo ki parantèz kare. Lefèt ke mwen te di klas flote ak Lè sa a, bracket louvri, epi Lè sa a, nimewo yon - avi si sa a se yon konstan sa a se jis tankou nou te fè sa sa a - sa vle di, "Hey òdinatè, ban m '2 flote e kite yo kolektivman rele yo klas." Sa a se nan kontras nan yon pwosesis pi plis fatigan tankou sa a: flote grade1; flote grade2; ak pou fè. Se konsa, yon etalaj pèmèt nou aplike ide sa a, men anpil mwens messily, nan yon fason ke nou ka ekri 1 liy nan kòd olye pou yo, di, 16 pou yon semès 16-semèn. Mwen pa t 'vle difisil-kòd 2 paske si ou panse sou sa a kounye a lojikman, ta kwè ane pwochèn CS50 chanjman nan 3 ti tès olye epi mwen te gen nimewo 2 a isit la, mwen te gen nimewo 2 a isit la, Mwen te gen nimewo 2 a isit la, nimewo 2 a isit la. Li vin tounen trè fatigan ak trè fasil a vis moute nan ak aksidantèlman chanje 1 valè a nan 3 ak manke kèk valè lòt moun ki te 2. Se konsa, mwen pral olye abstrè sa a lwen ak itilize sa a konstan sa, kòm non li sijere, pa janm chanje. Epi, koulye a pa gen pwoblèm si nou gen diferan ti tès ane sa a oswa pwochen, Mwen jis gen nan chanje li nan yon sèl kote moute isit la nan tèt. Se konsa, ki nan tout sa yon konstan se. Pandan se tan, karakteristik nan nouvo konseptyèl ekspresyon se sa yo ki an yon etalaj. Se konsa, parantèz yo kare, ban m 'sa a flote anpil, epi li pèmèt m' kolektivman rele yo klas isit la. Se konsa, kounye a kite a wè sa m pral fè a. Isit la nan liy 24 se nan konmansman an nan yon riban pou. Sa a se vrèman anpenpan pa gen anyen. Li nan jis lè l sèvi avèk ti tès olye pou yo yon nimewo difisil-kode. Men pa gen anyen entelektyèlman diferan gen soti nan semèn dènye a. Sa a se jis printf, se konsa printf ("Kwiz #% d nan% d:") paske mwen jis vle enprime soti, ban m 'poze nimewo 1 nan 2 ak Lè sa a, 2 nan 2. Se konsa, sa a se yon bagay piman ayestetik. Men, pati nan enteresan kounye a se nan liy 27. Yo nan lòd yo ranpli nan youn nan de placeholders yo ki gen yon valè k ap flote-pwen, ou ankò itilize parantèz kare. Nan ka sa a, mwen sèvi ak mwen paske sa a pou riban te kòmanse avèk mwen egal ki sa valè, aparamman? [Elèv] 0. >> [Malan] 0. Se konsa, sou iterasyon an premye nan sa a riban, li se tankou si m 'te ekri sa a nan kòd, men sou iterasyon an dezyèm nan sa a riban, li se tankou si m 'te ekri sa a nan kòd m' yo. Men reyalite a ke mwen lè l sèvi avèk yon varyab se pafè, paske, kòm non an sijere, li nan divès valè li sou chak iterasyon, Se konsa, mwen ap ranpli sa a etalaj yon sèl plas nan yon tan. Ki sa sa etalaj sanble? Rezon ki fè mwen te trase super rektang lan senp sou ekran an isit la anvan te pou rezon sa a. Yon etalaj se jis yon ti moso nan memwa ki te swiv pa yon lòt ti moso nan memwa ki te swiv pa yon lòt ti moso nan memwa ak pou fè. Se konsa, si etalaj mwen, se yon nan gwosè 2 nan ka sa a isit la, tout mwen ta dwe ap fè lè ou tape nan nòt egzamen mwen renmen isit la - mwen te resevwa 100 sou yon sèl sa a ak Lè sa a, mwen te resevwa yon 99 sa a sou youn - Lè sa a, sa a memwa ka pa menm kapab itilize paske mwen te sèlman mande òdinatè a pou yon etalaj de gwosè 2. Moun sa yo ki kare se toujou la, dwa? Ou toujou gen 2 jigokte nan RAM menm si w ap sèlman mande pou 2 flote. Se konsa, lide nan dèyè ranje se ke òdinatè a jis pran yon ti moso nan memwa ak Lè sa a, repartisan ki pi piti moso tounen nan fè bak nan do nan do. Se konsa, ki nan tout sa yon etalaj se. Li se yon moso vwazen nan andedan memwa nan ki ou ka mete bagay sa yo. Sa a k ap pase nan Lè sa a, fè sèlman kèk aritmetik raz. Si m 'desann isit la, sa a se kote mwen Lè sa a, repekte sou etalaj la. Mwen vini ak somasyon nan tout valè yo nan etalaj la, ak Lè sa a, mwen sèvi ak fonksyon an wonn isit la yo aktyèlman fè sòm total la divize pa ti tès. Men, kite m 'balanse men m' nan ke kòm sòt de aritmetik ase pou kounye a. Men, tout sa ki nan ap fè pou m 'finalman ap kalkile yon mwayèn. Se konsa, premye egzamen plis egzamen dezyèm divize pa 2 ak Lè sa a, enprime li soti kòm yon int. Men, nan kite l 'koulye a tranzisyon nan yon egzanp diferan rele string1, ki pentire yon foto ki sanble men strings lè l sèvi avèk. Kite m 'ale pi devan epi senplifye sa a sèlman pou moman yon. Padonnen dekoupaj an pou kounye a. Avi nan liy 19 nan egzanp sa a, mwen jwenn yon fisèl soti nan itilizatè lan. Men, remake sa m ap fè pwochen nan liy 22 pati. Mwen aktyèlman iteration soti nan mwen jiska - ak sa a se yon Trick nouvo - strlèn, longè fil. Sa a se yon fonksyon ki vini ak C ke si ou pase l yon kòd, li di ou kouman anpil karaktè yo nan ki fisèl. Sa a tout. Ak lefèt ke li nan strlèn olye pou yo longè fil se jis paske li nan somèr plis. Trant ane de sa, moun ki te renmen ekri bagay kòm suksen kòm sa posib, Se konsa nou te kenbe ki konvansyon isit la. mwen + + jis vle di kantite mwen nan chak iterasyon. Epi, koulye a avi sa a, ki se reyèlman enteresan. Nan liy 24, mwen di, "Odinatè, ban m 'yon karaktè, 8 Bits, ak rele li c." Men, sa ki sa a sou bò nan men dwat-ou di a? Nan lang angle, ki sa sa reprezante? [Elèv] karaktè a an premye nan etalaj la. Egzakteman. Ban m 'pèsonaj la an premye nan etalaj la. Oswa, plis jeneralman, ban m 'pèsonaj la on nan etalaj la. Ak reyalize li enpòtan kounye a ke kòm syantis konpitè, nou ap aktyèlman konte soti nan 0. Ou pa gen diskresyon a kounye a yo kòmanse fè sa. Koulye a, ou gen konpòte li yon jan an akò avèk egzijans òdinatè a ak konte ki ant 0 paske [0] a pwal pèsonaj la an premye nan yon fisèl, [1] a pwal dezyèm lan, [2] a pwal twazyèm lan, ak pou fè. Se konsa, pwogram sa a, si mwen konpile li, sa a se ankò string1, sa fè string1, e kounye a, mwen te kouri string1 nan fennèt tèminal m 'yo. Li nan ap tann pou D ', se konsa mwen pral tape nan David la, Mete, epi kounye a li simagri David tout sou liy diferan paske avi sa m ap fè a. Mwen enprime yon karaktè nan yon tan. Nou pa pral antre detay jodi a sou sa a, men mwen efase yon moman Anons sa pibliye depi chèk sa-a isit la. Li sanble ke si itilizatè a se dezòd, konfwontasyon, oswa jis konfonn, ou ka aktyèlman fail bay yon afè de kèk longè. Si ou frape kle a mal sou klavye a, ou ta ka bay pa gen okenn fil nan tout, oswa si w ap move, ou ta ka eseye keratin nan vo yon jigokte nan yon redaksyon ranpli sa a fisèl, epi si òdinatè a kouri soti nan memwa, Li sanble ke nou pwal jwenn tounen sa a valè espesyal ki rele nil. Se konsa, pou kounye a, jis konnen ke gen nan sa a valè espesyal ki rele nil ki pral pèmèt nou yo tcheke lè nou ap soti nan memwa, pami lòt bagay. Men, si mwen louvri moute kounye a string2, remake yon diferans ki genyen isit la. Avi yon diferans ki genyen isit la ak string2. Avèk string2, sa a pou riban se yon ti kras diferan. Kite m 'efase NULLs yo pou ke nou ka pale sou sa yo yon lòt lè. Ki sa ki nan diferan sou la pou riban tan sa a? Mwen ka tounen nan egzanp lan anvan yo. Se konsa, sa a, se vèsyon 2, sa a se vèsyon 1. 1, 2. 1, 2. Rele nan strlèn se ki kote? Li nan nan premye pati nan an pou riban. Nenpòt panse kòm poukisa m ap fè sa? Yeah. [Elèv] Se konsa, ou pa rele fonksyon an chak fwa sèl. [Malan] Se konsa, nou pa rele fonksyon an chak fwa sèl. Egzakteman. Sonje soti nan pou pasan yo ke yo ap super senp yon fwa ou sòt de konprann ke sa a se inisyalizasyon a, kondisyon an, ak mete ajou nan. Pwoblèm lan se ke kondisyon an k ap pase sou chak iterasyon nan riban an. Se konsa, nan egzanp sa a isit la, sa ki mal sou lefèt ke sa a se kondisyon mwen an? [Elèv] Ou ap rele strlèn. [Malan] Ou ap rele strlèn ankò, li ankò epi ankò. Men, yon fwa mwen te tape nan David la, longè a nan ki fisèl se 5, e li pa nan pral chanje sou chak iterasyon nan riban an paske fisèl la se toujou D-yon-v-m-d. Se konsa, sa a se yon allusion nan sa k ap pase yo vin yon lide de pli zan pli enpòtan ke yo rekonèt kòm yon desizyon konsepsyon kote jis pa fè òdinatè a fè nesesè travay. Menm jan yon preview glisman nan pset2 pset2, nan edisyon an estanda ki pral defi ou a aktyèlman aplike kèk nimewo nan Algorithms, kèk nimewo nan algoritm chifreman, pou ke ou ka tou de ankripte ak mesaj dekriptaj sekrè anpil tankou Ralphie a yon sèl gen Decoder. Nan edisyon an aker nan pset2, nou pwal ale yon ti kras pi lwen. Nou pral lage ou yon dosye soti nan yon sistèm òdinatè aktyèl ki gen yon pakèt antye nan usernames ak aktyèl modpas chiffres, ak defi a pou edisyon an aker a pwal krak sa yo modpas ak konnen sa ki chifreman oswa sa ki sekrè te itilize yo aktyèlman jenere sa yo modpas. Epi nou ap ale nan fè sa a pa lè l sèvi avèk yon karakteristik nouvo isit la nan C ke mwen pral ba ou jis yon Demo nan li te ye tankou lòd-liy agiman. Li sanble soti, tankou kèk nan ou ka gen pou wè nan seksyon oswa nan liv lekòl, prensipal pa toujou gen yo dwe anile nan parantèz. Li sanble ke prensipal kapab tou ekri tankou sa a, ak de agiman, arg ak argv, kote arg se nimewo a nan mo ke ou tape apre non pwogram nan sou liy lòd ou ak argv se mo sa yo vrè. Epi kòm parantèz yo kare gen sijere, argv se aparamman yon etalaj. Li nan ale nan yon fisèl apre yon fisèl apre yon fisèl nan memwa. Se konsa, sa nou pral kapab fè kòmanse avèk pset 2 se yon bagay tankou sa a. Si mwen fè argv1, ki se yon egzanp nou pral tounen vin jwenn nan Lendi, ak kouri li, remake ke li pa sanble yo fè anyen ankò. Li jis simagri soti non pwòp li yo. Men, si mwen di orevwa klas, avi ke pwogram sa aparamman iterates sou chak nan mo sa yo ki te tape nan èd memwa a. Ak mwayen yo pa ki nou pral jwenn aksè nan mo ki te itilizatè a tape nan èd memwa a se pa chanje prensipal kòmanse nan fen semèn sa soti nan int prensipal (san valè) Int prensipal (arg, argv) e konsa yo pral fèt bay lòd-liy agiman. E yon fwa w jwenn vrèman sofistike nan nivo sa a, ou pral kapab ekri pwogram reyèlman tripi tankou yon sèl sa a isit la, ki ale pi wo a ak pi lwen pase kèk nan fonctionnalités a nou te fè konsa byen lwen men yo tout byen ki pwisan. Se konsa, nou pral kite sa-a ak sa-a sou ekran an, epi nou pral wè ou nan Lendi. [CS50.TV]