JASON HIRSCHHORN: Byenveni A5, tout moun. Nou gen yon semèn enteresan devan nou, sitou paske gen anpil nouvo ap fè fas nan sal sa a. Li nan bèl bagay. Yon anpil nan ou isit la pa aksidan, ki se menm pi bon. Se konsa, èspere ke ou pral kenbe rantre nan nou. Semèn sa a nou pral pase èstime nan seksyon prepare pou egzamen an. Se konsa, pou chak ajanda nou yo, nou ap ale nan pale yon ti jan sou resous pou klas la, men tou pou egzamen an, epi lè sa a, ankò, pase èstime nan pale klas sou kesyon yo. Yon fwa nou ap fè reponn ou kesyon, oswa si kesyon ou natirèlman mennen nou nan kèk kodaj, mwen gen pwoblèm echantiyon soti nan midterms sot pase yo ke nou pral kòd ap viv nan seksyon ansanm ki tou pote moute kèk lòt bon sijè yo kouvri. Se konsa, anvan, dapre jan nou te ale nan pou la koup sot pase a nan semèn fè ou sonje nèg, gen yon tòn resous ki disponib pou kou sa a. Anpil nan yo yo pral ekstrèmman itil ak ou tankou ou kontinye etidye pou egzamen 0, paske li nan Madi aprè midi. Se konsa, nou tout yo te etidye pou yon ti jan. Gen nòt konferans ak sous kòd ki ou ta dwe definitivman tcheke deyò. Gade bout pantalon yo. Tcheke study.cs50.net. Lè sa a,, ki nan lis anba a, yon kantite nan lòt resous. Yon fwa ankò, egzamen 0 se demen nan 1 è. Si ou pa te fè sa deja, tcheke soti egzamen 0 dokiman an About sou la Homepage kou a figi konnen ki kote ou ap pran egzamen an. Egzamen an kòmanse nan 1:10 ak fini 70 minit pita. Se konsa, si ou montre moute apre 1:10, w ap pral jwenn ke anpil mwens minit pase 70 yo pran egzamen an. Se konsa, asire w ke ou ap gen sou tan. Si w ap yon elèv ekstansyon oswa ki gen kèk lòt konsiderasyon tès, li pa ka nan 1 è demen. Men, ankò, tcheke sou kwiz a 0 dokimante asire w ke ou konnen ki lè ou ap pran egzamen an. Mwen te ekri 75 minit moute isit la. Mwen panse ke ki bon, pa 70. Li kouvri tout materyèl la soti nan yon semèn 0 konferans semèn pase a nan Mèkredi. Li di ankò, pou egzamen sa a, pou chak ki dokiman, ou jwenn yon sèl de-sided ak 8yèm ane 1/2 pa 11 fèy papye ke ou jwenn yo itilize kòm nòt pandan egzamen an. Anpil moun, si se pa pi fò moun yo, yo gen te jwenn ke yon sèl fason ki pi itil yo etidye pou egzamen an se fè yon fèy etid, yon yon sèl-egzamine, nan pwòp yo. Se konsa, gade nan moun sot pase yo si ou te wè moun sot pase yo. Rive jwenn soti nan zanmi yo wè sa ki yo ap mete sou sa yo fè. Men, men-desann, pi bon fason sa ou kapab etid se yo ale nan tout bagay, redwir li desann nan sa ki ta dwe oswa yo ta dwe pa fè pati sou sa fèy papye an papye, paske sa se sèlman yon reyèlman bon fason pou ou pou w asire w ke w ap ale atravè tout tout bagay ak gen kèk abitye avèk li. Pifò moun ki, nou jwenn, menm si yo te fèy nan papye chita dwat bò kote yo a sou egzamen an, pa vire l ', paske, ankò, sa trè pwosesis pou ale atravè tout enfòmasyon ki ki te ede yo aprann li. okenn moun gen nenpòt kesyon sou egzamen 0? Gen tout moun - Mwen pa pral fè yon montre nan men yo. Pa janm tèt ou. Mwen te ale nan mande ki moun ki te kòmanse etidye. Men, mwen pa vle fè ou tout pa leve men ou. Se konsa, tankou m 'te di - wi, Avi, ale pi devan. AVI: Ki sa ki ta dwe yon bagay ki itil mete yo sou yon sèl-pager a? ELÈV: Sa se moute nan ou. JASON HIRSCHHORN: Ou jwenn yo sèvi ak jijman ou yo. Bagay sa yo itil mete yo sou yon sèl-pager a, si w ap konfonn sou O nan gwo ègzekutabl nan diferan kalite rechèch ak kalite, mete sa sou gen nan yon sou la men élégan tablo. Nan fason sa a, si w ap mande sa a sou la egzamen, ou pa bezwen eseye ak figi li soti oswa rezon ki fè nan ègzekutabl la. Ou ka jis kopi li desann. Si ou gade nan ti tès sot pase yo, yon anpil nan fwa, gen nan kouri kesyon tan. Se konsa, ki ta ka yon egzanp nan yon bon bagay yo mete yo sou ou yon sèl-pager. Lòt bon bagay yo mete sou li a, si w ap konfonn sou jan yo ka deklare yon fonksyon oswa sa ki diferan pati yo nan deklarasyon an fonksyon yo, ekri ki sou la, yon vèsyon jenerik ak Lè sa a, petèt yon egzanp. Si w ap konfonn sou pwent, yon dyagram ki montre kouman endikasyon travay se pwobableman reyèlman itil. Si w ap konfonn sou rkursyon, yon echantiyon fonksyon repetitif sou gen ta ka tou pwouve ke yo dwe reyèlman itil. ki ba w kèk ide? AVI: Ou bezwen konprann la tout pwosesis élaboration, tankou ki jan tout travay? JASON HIRSCHHORN: Tout ki te kouvri t 'kapab montre moute sou egzamen an. Kesyon - men ankò, kèk bagay yo pral filaplon lou pase lòt moun. Men kèk bagay te vini ankò epi ankò nan klas, nan konferans, ak seksyon. Lòt bagay pa gen vini ki souvan. Nou te pale anpil sou # genyen ladan yo ak -L yon bagay ak sa moun ki vle di nan pwosesis la konpilasyon. Nou te pale anpil sou gdb, rete kole, sa yo drapo diferan ke nou itilize lè nou konpile yon bagay, e ki sa make15, pou egzanp, vrèman vle di ak reyèlman fè. Nou pa t 'pale kòm anpil sou chak etap yon sèl nan pwosesis la konpilasyon. Nou te toujou te pale osijè de li. Se konsa, li la toujou yon bagay ke ou yo ta dwe abitye avèk yo. Men, ankò, nou pa ap ale nan dwe - bagay ki vini pi souvan nan klas yo gen plis chans vini plis souvan yo epi yo dwe plis lou filaplon sou egzamen an. Fre. Nenpòt lòt kesyon sou egzamen 0? OK, se konsa mwen mete yon lis sijè sou tablo a. Mwen te ale nan progranm la. Mwen te ale nan seksyon an revizyon soti nan yè swa, ak moun ki glisad l 'moute ak yon lis ki pa konplè nan sijè ke nou te kouvri byen lwen tèlman nan CS50 ak bagay ki kapab parèt sou egzamen an. Se konsa, mwen pa pral yo ale nan chak yon sèl nan sa yo. Sa ta pran pi plis tan pase nou genyen kounye a. Men, mwen mete sa a moute isit la yo èspere ke jog memwa ou tankou bagay ki ka oswa pa pouvwa ap tankou abitye avèk ou. Apre sa, mwen ta renmen pase èstime nan seksyon reponn kesyon ou sou sijè sa yo, sijè ki pa kouvri isit la. Nou ka ekri kòd pseudo. Nou ka ekri reyèl Kòd asire ke ou - Mwen ka reponn kesyon ou yo epi ede tout moun fondamantalman konprann yon anpil nan sijè sa yo se konsa ou pral santi prepare ak konfòtab pral antre nan egzamen an demen. Se konsa, li sou lis la. Ou èspere ke te vini nan seksyon ak kèk kesyon tou. Lè w ap pare, leve men ou epi n ap jwenn te kòmanse. Kenbe nan tèt ou, kesyon yo ou genyen, pa gen okenn kesyon estipid. Nou te konn tande ke yon anpil. Apre sa, kesyon ou genyen, mwen vle yo parye, anpil lòt moun tou de chita isit la epi l ap gade sou entènèt gen kòm byen. Se konsa, ou ka sèlman ede moun pa poze kesyon. Marcus. MARCUS: Ant chemine a ak nan pil wòch, se gen yon pre-resevwa lajan pousantaj nan memwa ki nan defini kòm sa a se pou chemine a oswa pou pil wòch la? Oubyen kòman pou fè sa travay, egzakteman? JASON HIRSCHHORN: Gwo kesyon. Mwen pral tounen tras yon ti kras. Èske tout moun - tanpri dwe onèt isit la. Mwen konnen mwen mande ou ogmante ou men la devan kamarad klas ou yo. Men, ki gen moun ki santi alèz ak chemine a ak pil e yo ta renmen ale sou ki ak sa moun ki vle di? Leve men ou si - OK. Mèsi poutèt ou. Se konsa, nou ap ale nan ale sou chemine a ak pil wòch la vrèman byen vit ak Lè sa a, deplase ale nan reponn kesyon ou yo. Se konsa, si nou trase soti yon bwat ki reprezante memwa sou òdinatè ou, ki sa ki yo se kèk bagay sa yo ki ale nan bwat sa a? Prensipal la. Yon fonksyon prensipal la. Ki kote prensipal 'al jwenn? ELÈV: [fèbl]. JASON HIRSCHHORN: Se konsa, nou pral mete prensipal desann isit la. Ki lòt bagay ale nan bwat sa a? ELÈV: fonksyon yo ke ou rele. JASON HIRSCHHORN: fonksyon yo ke nou rele. Apre sa, kote yo ale? ELÈV: Nan chemine a. JASON HIRSCHHORN: Yo ale nan chemine a. Se konsa, nou ap ale nan rele sa bagay desann isit la chemine a. Apre sa, moute tèt, nou gen pil wòch la. Se konsa, memwa se pa yon bwat jis tankou sa a. Men, li se aktyèlman trè menm jan an. Li pral fè yon anpil nan bwat sou yo ak sou, depann sou ki jan gwo ou òdinatè se oswa ki jan gwo memwa ou a. Nan quote-unquote "anba a" se chemine a. Apre sa, gen plizyè bagay ki ale sou chemine a. Ak moun ki depann sou fonksyon yo ou gen nan Kòd ou. Ou toujou gen yon fonksyon nan ou Kòd rele prensipal, se konsa gen nan toujou yon seksyon desann isit la nan la chemine konsakre nan prensipal la. Seksyon sa yo nan chemine a yo rele yo ankadreman chemine. Lè ou rele yon lòt fonksyon, di prensipal rele yon fonksyon rechèch binè, nou mete yon lòt ankadreman sou chemine a. Plis espesyalman, nou pral bay yon ti moso nan memwa sou nou òdinatè nan magazen rechèch binè nan lokal varyab, epi poze kandidati binè la Kòd rechèch la. Se konsa, nou rele binè rechèch la. Nan sa a ti moso nan memwa, nou pral nan magazen varyab lokal li yo. Nou pwal nan magazen apèl printf li yo. Kèlkeswa sa k ap pase, ki fonksyon se ale nan dwe estoke ki la a. Binè rechèch ki pral egzekite. Li se ale nan ranpli ekzekisyon. Ki sa ki se pawòl Bondye a nan C ki vle ki yon fonksyon yo ta dwe ranpli ekzekisyon li yo? ELÈV: Retounen. JASON HIRSCHHORN: Retounen. Se konsa, chak fwa ou wè yon deklarasyon retou, pwent yo fonksyon lè li frape sa a. Se konsa, binè rechèch pral frape retounen li yo. Pati sa a nan memwa pral esansyèlman dwe libere yo. Apre sa, prensipal ap tounen nan ekzekisyon. Se konsa, prensipal ap pran yon poz tout kote te, rele binè rechèch, jwenn kèk valè retou, yo e yo kontinye ekzekisyon. Sa a ankadreman chemine pral ale. Si nou rele yon fonksyon repetitif, ki se yon fonksyon ki rele tèt li sou yo ak sou, nou ta ka jwenn - di nou te fè binè rechèch recursive. Nou ta ka jwenn binè vèsyon rechèch yon sèl, binè rechèch de, binè rechèch twa, binè rechèch kat, binè rechèch senk. Lè sa a, sa a final rechèch binè senk pral frape ka a baz, ak chemine a ankadreman pral tounen ladan l epi kenbe fèmen jiskaske nou jwenn tounen nan prensipal la. Nou kapab ale sou rkursyon nan yon ti jan. Men, tou sa sa a vle di, si w ap rele anpil fonksyon nan yon moman, gen pral miltip chemine ankadreman sou chemine a. Pil wòch la, nan lòt men an, moute isit la, se pa pou fonksyon, pa pou varyab lokal yo. Li nan pou dynamique resevwa lajan varyab. Se konsa, sa yo, se varyab ki ka initialisé swa nan prensipal oswa yon fonksyon ki apèl prensipal la. Nenpòt kote nan Kòd ou yo, yo kapab initialisé. Men, inisyalize yon dynamique resevwa lajan varyab. Ki sa ki fonksyon nan C nou itilize? ELÈV: malok. JASON HIRSCHHORN: malok. Ou rele malok. Ou jwenn yon espas nan memwa. Apre sa, espas sa a nan memwa se sou pil wòch la. Apre sa, espas sa a nan memwa rete la jouk lè ou rele gratis. Se konsa, dynamique resevwa lajan varyab nan pil wòch pral egziste pou osi lontan ke ou vle yo egziste, epi yo pa pral ale jiskaske ou klèman di yo ale. Ou ka kreye yo nan yon fonksyon. Chemine ki fonksyon an ankadreman pral ale. Men, varyab sa a ap toujou egziste nan pil wòch la jiskaske li se libere, potansyèlman pa fonksyon an ke yo rele rechèch binè oswa kèlkeswa sa. Se konsa, moun varyab pil wòch rete la pou osi lontan ke ou vle yo rete a. Apre sa, yo jwenn mete isit la. Lè sa a, vin youn nan pwochen mete ladan l '. Yo kenbe ap resevwa plen nan, epi yo rete la jouk lè ou rele gratis. Apre sa, esansyèlman, pil wòch la ak chemine a, ap resevwa nan kesyon Marcus a, grandi nan direksyon pou youn ak lòt. Men, si yo kouri antre nan yon lòt, ou te itilize moute tout memwa a nan ou òdinatè, ak pwogram ou an ap kite paske ou pa gen okenn memwa plis kite yo sèvi ak. Nan ant yo, gen potansyèlman lòt bagay. Men, pou sijè ki abòde lan nan kou sa a, ou pa bezwen enkyete sou sa. Se konsa, sa ki te repons lan nan kesyon ou yo. pa enkyete sou li. Men, sa ki te repons long la. Tout sa ou bezwen konnen se la pil wòch ak chemine a pral - yon sèl kòmanse nan pati anba nan. Chemine a fè. Pil wòch la a jiska la. Yo ap grandi pi pre youn ak lòt. Men, si yo manyen, ki nan yon pwoblèm. Ou kouri soti nan memwa. Men, tou, nan adisyon a konnen ki kote yo, sa ki estoke nan nan tou de chemine ak miray. Curtis. CURTIS: Lè yo fè kolizyon, se ke yon debòde chemine? JASON HIRSCHHORN: Lè yo fè kolizyon, sa a, se pa yon debòde chemine. Yon debòde chemine se yon zòn diferan ke nou ka ale sou si ou vle. OK, nou pral tounen vin jwenn ke nan yon ti jan. ELÈV: Ki sa ki nan pawòl Bondye a rele yo lè yo frape youn ak lòt, nan chemine ak pil wòch la? JASON HIRSCHHORN: Pou kounye a, pa enkyete sou. Jis konnen - Mwen pral reponn kesyon ki apre klas la. Si yo kouri antre nan chak lòt, ou kouri soti nan memwa, paske gen nan pa gen plis espas la. ELÈV: Padon, sa ki nan yon fay seg? JASON HIRSCHHORN: Yon segman ka fòt dwe rele pou - li depann de poukisa yo rele fay la seg a. Pafwa, debòde chemine ou a, li pral di seg fòt kòm erè a. ELÈV: Ki sa ki sou dereferencing yon varyab nil? Eske se sa ke yon fay seg? JASON HIRSCHHORN: Dereferencing yon konsèy nil - OK, Se konsa, si ou gen yon konsèy ke ou mete egal a nil, endikasyon, sonje, adrès magazen memwa kòm valè yo. Ak yon konsèy nil se esansyèlman estoke 0, 0-th nan adrese nan varyab sa a. Se konsa, 0x, 0, 0, 0, 0, et setra. Sa adrès 0-th nan memwa sa a pa nan foto nou yo, sa a, se kanpe yon kote, ki nan rezève pou òdinatè a. Nou pa pèmèt yo manyen li. Se konsa, lè pwogram ou an egzekite, si yon bagay ap eseye pou yo ale nan memwa adrès 0, li konnen ke ki se yon valè vid. Li konnen pa gen anyen yo ta dwe la. Se konsa, si ou eseye epi sèvi ak yon bagay gen epi trete yon bagay tankou gen oswa ap eseye pou yo ale nan ki kote, w ap pral jwenn yon fay seg oswa yon erè. ki reponn kesyon ou a? Epi, koulye a nou pral tounen chemine debòde. Bagay sa yo nan chemine a, menm jan ou nèg gen wè anvan, nan - kite a trase yon fèmen leve nan yon ankadreman chemine. Èske tout moun wè sa? Se konsa, nou gen ankadreman chemine nou an. Nou ap ekonomize yon etalaj nan kòm yon lokal varyab nan fonksyon sa a. Se konsa, di etalaj nou an ki gen senk tach. Tout senk nan tout sa yo pral estoke nan ki ankadreman chemine. Si nou kòmanse ekri andeyò a limit nan etalaj sa a - Se konsa, si nou kòmanse ekri nan, Se pou nou di sa a, se 0. Sa yo se senk endis yo nan etalaj nou an. Si nou kòmanse ekri nan endèks 5, ki nou pa gen lè nou gen yon etalaj de gwosè 5, nou kòmanse ekri nan endèks 6, 7, 8, 9, nou ka jwenn yon Stack Debòde erè. Anjeneral li pa - w ap pwobableman tonbe nan pwoblèm si ou ale sou pa youn. Men, jeneralman, ou pral jwenn nan la pi pwoblèm si ou ale sou pa yon anpil epi ou ale twò lwen sou ke ou ekri sou adrès la retounen nan ki fonksyon, ki sitiye nan nan anba nan ankadreman an pil. Paske, dwa? Ou - nan - a regrèt. Se pa "paske dwa." Nan ankadreman an chemine, ou gen varyab lokal ou a. Nan pati anba a anpil nan chemine a ankadreman kote adrès la retounen. Sa a kote fonksyon an ale a lè li sou. Men, si ou recouvrir ke retounen adrès, Lè sa a, lè sa a ankadreman chemine, lè w ap ale atravè tout chemine a ankadreman ak egzekite chak liy, w ap ale pou yo ale nan nouvo adrès ou retounen ki nan ekri gen olye pou yo nan aktyèl yon sèl. Epi sa a, ki jan nou te wè kèk violations sekirite ka rive ak òdinatè. Se konsa, chemine debòde, nan kout, se lè ou recouvrir pati a nan chemine a w ap sipoze itilize, lokal la varyab w ap sipoze itilize, e an patikilye lè ou kòmanse ranplasan bagay enpòtan tankou an retounen adrès. Epi sa a, kote ou pral jwenn yon erè. Oswa petèt menm ou te kapab kòmanse menm ekri nan - di binè rechèch te dwa pi wo a prensipal la. Si ou overwrote yon anpil, ou kapab ekri nan prensipal la. Men, jeneralman, ou jwenn yon erè anvan Lè sa a,, paske òdinatè a konnen w ap fè yon bagay ou pa ta dwe fè. Yeah. ELÈV: Ki diferans ki genyen ant yon debòde chemine ak yon debòde tanpon? JASON HIRSCHHORN: Buffer debòde se yon kalite plis jenerik nan sa m 'te jis ki dekri yo. ELÈV: Se konsa, yon debòde chemine se yon egzanp sou yon debòde tanpon. JASON HIRSCHHORN: Egzakteman. Sa a se yon etalaj nou ka panse a kòm yon tanpon, yon espas pou bagay sa yo ale pous Sa a se yon tanpon debòde chemine. Nou te kapab gen yon debòde pil wòch tanpon. Si te gen yon zòn de defans, ki gen souvan se yon etalaj pil wòch la, epi nou overwrote sa yo limit, lè sa a nou ta gen yon debòde pil wòch tanpon. Apre sa, pi lwen pase sijè ki abòde lan nan kou sa a, yo ap detekte yon ti jan yon lòt jan. Du a gen espesyal fason pou detekte chak. Men, yon debòde tanpon se yon plis jenerik di ki kalite ki sa mwen dekri, ki te yon tanpon debòde chemine. Eske sa te reponn kesyon ou a? Dous. Te gen nenpòt lòt kesyon ki gen rapò chemine a oswa pil wòch la? Yeah. ELÈV: Mwen konnen ou gen strings gratis paske yo ap nan pil wòch la epi ou pa vle genyen fuit memwa. Men, ou gen gratis varyab mondyal ak lòt bagay tankou sa? Oubyen èske yo te libere otomatikman? JASON HIRSCHHORN: Bon kesyon. Se konsa, nan CS50.H, nou kreye bagay sa a pou ou rele yon kòd. Yon fil se reyèlman ki sa? ELÈV: Char zetwal. JASON HIRSCHHORN: A etwal Char, yon konsèy nan yon karaktè, yon konsèy yon etalaj de karaktè. Sa a ki sa fisèl la se. Se konsa, nou bezwen libere l ', paske getstring, ki nou itilize yon anpil - Non fisèl egal getstring - ki mallocs pou nou kèk memwa sou la yon seri ak Lè sa a, retounen yon konsèy la premye karaktè nan ki fisèl, yon etwal Char. Se konsa, ofisyèlman, si ou pa yo te ekri gratis sou nenpòt nan strings ou ke ou te rele byen lwen tèlman, ou gen te koule kèk memwa. Natirèlman nou pa t 'te pale osijè de li, se konsa pèsonn pa nan fè nan pwoblèm pou fè sa. Men, pwal pi devan, wi. Lè ou rele getstring, w ap mallocing kèk espas sou pil wòch la. Men, si ou pa rele gratis pita sou ki fisèl, ou gen yon fwit memwa. Sa reponn kesyon ou a? Yeah ELÈV: Se konsa, yo fè sa, nou itilize gratis dwat devan retounen? Tankou, nan sijè ki abòde lan nan, mwen devine si nou di, tankou, Int prensipal yo, ki nan la sijè ki abòde nan kòd la sa a, se nan sa yo aparèy òtopedik Curly, dwa anvan - èske w konnen kote ou ta anjeneral mete retou. ou mete gratis anvan sa? JASON HIRSCHHORN: Se konsa, ou ka mete gratis tout kote ou vle mete gratis. Paske sa yo yo dynamique resevwa lajan varyab, paske yo kapab ap viv pi lwen pase sijè ki abòde lan yon patikilye fonksyon, si ou rele malok nan yon fonksyon ki apa a, pou egzanp, getstring, ou ka rele gratis nan prensipal la. Ou pa bezwen rele l ' nan fonksyon an espesifik kote malok yo rele. Men, ou bezwen rele l ' anvan retounen prensipal la. Epi li reyèlman depann. Sa depann de poukisa ou malloced ki espas nan plas an premye. Gen kèk moun ki pral rele gratis yo byen vit. Gen kèk moun ki pa pral rele gratis jouk nan fen pwogram yo. Apre sa, yo pral ale nan ak gratis tout bagay. Sa depann de poukisa ou rele malok. ELÈV: Ak sa ki èske ou ka di si ou rele pou sèvi getstring? Ou ta di gratis ki sa? JASON HIRSCHHORN: Se konsa, sentaks la pou gratis se tou senpleman gratis, paren louvri, fèmen paren, ak non an nan konsèy la. Se konsa, si ou ekri fisèl egal Non getstring, ou mete non yo nan isit la. Sa a non an nan konsèy la. Apre sa, li konnen yo gratis ke memwa. ELÈV: Se konsa, lè li libere ki memwa, konsèy la toujou lonje dwèt nan plas sa a nan memwa a? Oubyen èske konsèy la tou vide rès dlo nan adrès la ke li lonje dwèt nan. JASON HIRSCHHORN: Nou ta dwe eseye sa a. Nou ta dwe kòd ki. Se pou yo tounen vin lè nou ale nan kodaj, e kite yo kòd ki. Men, si ou vle konnen ki repons lan ak sa yo ki, ou ka tou kòd ki nan Antretan la. Men, sa a yon kesyon gwo. ELÈV: Eske li posib poum gratis yon bagay twò bonè? Se konsa, ou toujou bezwen li pou pwogram ou an, epi ou libere espas sa a memwa? JASON HIRSCHHORN: Wi. Li se posib, si ou gratis yon bagay ak Lè sa a, ou sèvi ak li ankò, ou pral kouri antre nan yon erè. Men, sa a sou nou, paske nou te libere yon bagay e yo Lè sa a, li rele l 'pita. Se konsa, sa ki te erè yon pwogramè a. Men, repons lan se wi. Ou kapab ekri sa a. Nenpòt ki plis kesyon sou - repons lan se wi. ELÈV: Se konsa, si w sipoze jis gratis li an jeneral anvan an pwogram fini, sa vle di si la pwogram fini epi ou pa gratis li, se ke memwa toujou resevwa lajan? JASON HIRSCHHORN: Si pwogram ou an fini epi ou bliye yo gratis yon bagay, Lè sa a, te ke memwa resevwa lajan nan tout tout lavi a nan pwogram ou an. Lè pwogram ou an fèmen nèt, ki memwa a pa pral yo rete gen pou tout tan. Òdinatè a se entelijan ase yo konnen ke lè pwogram nan fèmen, li ta dwe debarase m de tout nan memwa a ki te asosye avèk pwogram sa a. Men tou, gen yo se zouti ou ka kouri nan yon pwogram yo detekte si, lè a pwogram fini, ou bliye yo gratis kèk memwa. Se pou pwoblèm pwochèn ou an mete kote ou pral lè l sèvi avèk malok ak lè l sèvi avèk endikasyon, ou pral kouri sa a pwogram sou pwogram ou a wè si, lè retounen prensipal yo, ou te gen kèk bagay sa yo ki te rete unfreed. Se konsa, yo pa ap ale nan rete malloced pou tout tan nan òdinatè ou. Ki ta ka inutil, paske trè byen vit, òdinatè ta kouri soti nan memwa. Men, si yo kouri jouk nan fen ou pwogram yo epi yo pa ap libere ak ou pwogram sòti, ki nan toujou yon pwoblèm ki zouti sa a pral ede w adrese. ELÈV: Eske se sa ke Valgrind? JASON HIRSCHHORN: Li nan rele Valgrind. Apre sa, ou pral - ELÈV: Men, nou pa bezwen konnen ke pou egzamen an, menm si? Mwen vle di, li te pale osijè de yon ti kras nan konferans. JASON HIRSCHHORN: Se konsa, Valgrind se non an nan ki zouti. Lè ou konnen sa li fè a se ase pou egzamen an. Men, ou pa te itilize li ankò sou ou pwoblèm mete paske nou pa te gen yon pwoblèm seri ki te klèman te fè fas ak malok oswa ou lè l sèvi avèk malok. Se konsa, ou pa te itilize Valgrind ankò. Men, ou pral sèvi avèk li pi bonè olye ke pi ta. ELÈV: Èske ou ka repete sa Valgrind se? JASON HIRSCHHORN: M regrèt? ELÈV: Èske ou ka repete sa ki bi pou yo Valgring se? JASON HIRSCHHORN: Valgrind se non an - tankou gdb ede ou debug pwogram ou an, Valgrind ede ou konnen si bagay sa yo pa yo te libere lè pwogram ou an fèmen. Se konsa, ou pral kouri l 'sou pwogram ou an. Apre sa, pwogram ou an sòti, epi li pral di pwogram ou an rele malok sa a anpil fwa pou sa a bytes anpil, epi ou sèlman rele gratis sa a plizyè fwa. Se konsa, ou te kite sa yo bytes anpil san yo pa libere. Oswa li pral di ou te libere tout bagay. Bon travay. ELÈV: OK. Apre sa, sa yo rele li Valgring? JASON HIRSCHHORN: V-A-L-G-R-I-N-D. ELÈV: Yon kesyon sou pwent. Se konsa, di ou te n zetwal x egal yon bagay. Sa egal, kèlkeswa sa w ap mete la, se ke sa k ap mete anndan sa x ap montre a, oswa konsèy la nan x? JASON HIRSCHHORN: Èske ou ka repete kesyon an? Èske nou ka rale l 'pandan w ap di li? ELÈV: Nan egzamen an, aktyèlman, an youn ou voye nou, li te tankou, Char verite zetwal egal wòch CS50, dwa? Se konsa, ki vle di ke ke wòch CS50 se sa ki verite a ap montre a? JASON HIRSCHHORN: Se konsa, ou ap pale sou yon etwal Char nan yon fisèl, ki jan ki travay? Yeah. OK. Se pou yo trase sa a sou isit la. [SIDE KONVÈSASYON] JASON HIRSCHHORN: Se konsa, varyab sa a a pwal nan kalite zetwal Char. Kòman gwo se yon varyab nan zetwal di ki kalite Char? Konbyen bytes? ELÈV YO: Kat. JASON HIRSCHHORN: Se kat bytes. Konbyen dwa se yon varyab nan zetwal di ki kalite Int? ELÈV YO: Kat. JASON HIRSCHHORN: Kat bytes. Si li nan yon konsèy, lè sa a li se toujou kat bytes, paske endikasyon, yo valè yon adrès memwa. Ak adrès memwa sou CS50 nan aparèy yo se kat bytes lontan. Se konsa, lè nou rele getstring, oswa lè nou di, stringname egal, ak Lè sa a, nan quotes doub mete yon fil, nou ap mete - byen, sa a, se yon ti kras diferan. Nou pral getstring kòm egzanp lan. Oswa yon bagay zetwal Char egal fisèl la. Padon, ban m 'egzanp lan pou w li? ELÈV: verite zetwal Char egal "Wòch cs50" nan quotes doub. JASON HIRSCHHORN: Se konsa, zetwal sa a, sa a nou pral rele varyab sa a x pou nou rezon jenerik. Nou te kreye yon varyab rele x. Li nan di ki kalite zetwal Char. Li se yon konsèy nan yon seri nan karaktè. Se konsa, desann isit la - Se konsa, sa a se ki jan sa a ta travay nan memwa. Sa a ta sere yon adrès memwa. Li ta magazen adrès la memwa nan N. la an premye nan etalaj la. Lè sa a, lè ou swiv konsèy la, ou ta jwenn karaktè a an premye. Men, si ou ap li bagay sa a tankou yon kòd, òdinatè w lan se entelijan ase yo konnen, li sa a tout antye bagay jiskaske li vin yon repèkisyon 0. Men, si ou ap li li yon karaktè nan yon tan, se konsa w ap iteration nan fisèl sa a, Lè sa a, ou pral jis li yon N. nan yon tan jiskaske ou jwenn antislach 0. Sa pa ta ka repons ou an kesyon, menm si. ELÈV: Yeah, men ou gen pa malloced espas sa a ankò pou sa konsèy. JASON HIRSCHHORN: Se konsa, mwen se pa byen asire egzakteman sa w ap chèche a, paske mwen pa t 'fè sa egzamen. Ki te sipoze gen yon itil resous soti nan yon lòt TF. Si w ap kreye yon fisèl sou la chemine oswa kòm yon varyab lokal yo, li pral jis pou etalaj de chaj olye ke jeneralman yon etwal Char montre yon lòt fisèl. Men, mwen pa konnen. Sa te kapab fè yon konsèy nan yon lòt fisèl sou chemine a tou. Yeah. ELÈV: Mwen konnen ke ou bezwen asiyen memwa si konsèy la se resevwa te deklare andedan nan yon lòt fonksyon. ou bezwen fè menm bagay la si li nan yo te deklare andedan nan prensipal yo, w ap sèvi ak li andedan nan prensipal yo? JASON HIRSCHHORN: Se konsa, repons lan se wi. Ou ka deklare yon konsèy nan nenpòt adrès memwa nan memwa. Li kapab adrès la memwa nan yon lokal varyab, menm si souvan, moun ki pa deklare adrès memwa varyab lokal yo paske yo ale lwen yon fwa ke fonksyon retounen, ki pou rezon sa a jeneralman malok bagay sa yo. Men, repons lan se wi, ou ta ka deklare yon konsèy nan yon lòt varyab lokal yo. Li nan jis jeneralman yo pa fè. Men, mwen ka pran yon gade nan ki bagay espesifik apre klas la. Yeah. ELÈV: Mwen panse ke sa a se sòt nan sa ki yo mande a. Li sanble etranj yo dwe inisyalizin yon konsèy pa kòm yon adrès, men kòm sa sanble tankou yon valè. Li sanble tankou CS50 a se sa ki andedan bagay la ke yo te vize pou ale ak pou pa adrès aktyèl la, dwa? JASON HIRSCHHORN: Se konsa, sa a, se pa ka a, menm si. Sa se pa sa k ap pase. Lè ou deklare yon etwal Char, li nan yon adrès memwa. Endikasyon yo tout adrès memwa montre yon lòt bagay. Sa yon lòt bagay ta ka sou la chemine, men prèske toujou se sou a yon seri nan chemen an nou pral wè li itilize. Men, stringname egal doub-quote "Getstring," nou ka wè ke e nou ka gade nan ki ak kòd sa a. getstring fisèl pa se ke yo te sove nan varyab sa a, oswa kèlkeswa sa fisèl la Non se pa se ke yo te sove nan ki varyab, se pa paske lè sa a jan endikasyon travay. ki fè sans? ELÈV: Yeah. JASON HIRSCHHORN: OK. Èspere ke, ki pa te konfizyon yo ba nenpòt moun. Men, si li te, nou ka gade nan li ankò nan yon ti jan, paske nou ap aktyèlman pral ki prevwa nan kòd yon bagay ki pral èspere ke travay avèk strings epi ede ou santi ou pi alèz avèk yo. Nenpòt lòt kesyon ki gen rapò ak sa yo sijè oswa lòt sijè ki Mwen pral mete tounen moute? Apre sa, - kounye a. Wi, Alden. ALDEN: Se konsa, sa a se konplètman gen rapò, men yo ka nou jis ale sou vrèman byen vit sa nou bezwen konnen sou diferans ki genyen ant yon 32 ak 64-ti jan machin? JASON HIRSCHHORN: Wi. Se konsa, 32 Bits se konbyen bytes? ALDEN: Se kat bytes. JASON HIRSCHHORN: Se kat bytes. Ak 64 Bits se konbyen bytes? ELÈV: Two. JASON HIRSCHHORN: Two bytes. Se konsa, ankò, uit Bits se youn multiple. Aparèy CS50 ou se yon 32-bit machin. Se konsa, adrès memwa yo kat bytes lontan. Gen 2 jiska 32 an memwa adrès. 0 a 2 a 32 mwens 1 an. Apre sa, mwen menm mwen pa pozitif, men sa a pwobableman sijè ki abòde lan sa ou bezwen konnen pou yon machin 32-ti jan, ki memwa adrès yo se, ankò, kat bytes long, e ke sa a kantite lajan maksimòm nan nan adrès memwa. Epitou, kalite done - sa a ta kapab yon bagay kòm byen sa a, se vo anyen. Gwosè a nan yon kalite done depann sou machin nan w ap travay avèk yo. Se konsa, yon karaktè, yon karaktè yon sèl, ki jan pou anpil bytes sou aparèy CS50 nou an? Yon multiple. Apre sa, li la aktyèlman yon sèl multiple kòm byen sou yon machin 64-ti jan. Ak pi fò done kalite yo se menm bagay nimewo a nan bytes sou tou de machin. Men, gen kèk kalite done ap diferan sou tou de machin. Se konsa, ki ta ka potansyèlman la sèlman bagay ou bezwen konnen. Men, menm sa, mwen panse, ale pi lwen limit yo - Mwen se prèske pozitif, si ou tounen gade dèyè nan ti tès fin vye granmoun, li di, sipoze pou kodaj pwoblèm w ap itilize yon 32-bit machin. Men, gen, yo ale ansanm ak ke nan ka w ap enterese, gen kalite done ki se menm bagay la gwosè sou tout machin. Si ou te wè yon bagay tankou uint32_t, ou ka oswa ka pa gen pou wè sa. Sa se yon kalite done. Sa se li di, se pou 32 Bits pa gen pwoblèm sa machin sa a se sou. Se konsa, lè moun ap ekri pòtab Kòd yo, yo pwobableman pa pral sèvi ak antye. Yo pral olye pou sèvi ak lòt done sa yo kalite ke yo konnen yo pral menm bagay la tou gwosè sou chak machin sèl. Madhu. Madhu: mwen te gen yon kesyon sou pwosesis la konpilasyon. Se konsa, si w ap ekri yon pwogram ki sèvi ak yon bibliyotèk tankou CS50 oswa yon bagay tankou sa yo, mwen konnen ke ke bibliyotèk gen yo, nan kèk pwen, ou dwe konpile ak lye pous Men, ki jan anpil nan sa ki ap pase pandan konpilasyon an nan pwogram ou an? Ki sa ki yon pati nan pwosesis bibliyotèk ki rive lè w ap konpile pwogram pwòp ou a? JASON HIRSCHHORN: Se konsa, kite a ale sou jeneralman etap sa yo nan pwosesis sa a. Ou ekri dosye c ou.. Nan dosye c ou., Ou # genyen ladan yo ou bibliyotèk header, pou egzanp, cs50.h. Ki sa ki byen file gen ladan liy fè nan pwogram ou an? Akchar. AKCHAR: Li ajoute prototip yo nan fonksyon yo soti nan header a dosye nan bibliyotèk yo. JASON HIRSCHHORN: Egzakteman. Li ajoute sa yo prototip fonksyon nan kòd ou a. Se konsa, lè se kòd ou a ke yo te konpile nan premye etap yo byen bonè, du a konnen ki fonksyon sa yo reyèlman egziste, ak ki yon kote yo te defini. Dosye yo. H pa gen ladan nan definisyon pou fonksyon sa yo oswa ki jan yo aktyèlman ap travay. Cs50.h jis gen ladan yon bagay ki di getstring se yon bagay reyèl ki ka rive. Apre sa, standardio.h di printf se yon bagay reyèl ki ka rive. Se konsa, lang c ou a ak sa a. Header dosye vin tounen kèk machin-lizib Kòd, ki evantyèlman vin tounen binè Kòd, 0 a ak 1 an. Epi sa a, kòd la ki finalman vin egzekite. -L liy lan cs50 - pou egzanp, lè w ap ekri rezone - ak Lè sa a, ou gen ladan-l cs50, ou tape ke pous Apre sa, ou wè sa. Lè w ekri fè, ou pral wè ke liy moute isit la. Apre sa, nou pral wè ke nan yon dezyèm lè nou kòd oswa pita sou lè nou kòd. Men, liy cs50 ki-l fè yon bagay yon ti jan diferan pase # yo gen ladan cs50.h. Ki sa ki dwat ki-l cs50 fè? Avi? AVI: Mwen vle di ke li lyen bibliyotèk nan fonksyon an rele, tankou. o dosye yo. JASON HIRSCHHORN: Se konsa, anpil fèmen, si se pa tach-sou. L nan-cs50 pran dosye a binè ak melanje l 'ak dosye binè ou. Se konsa, cs50.h, gen nan pa gen pwen nan vire cs50.h soti nan C lang binè chak yon sèl fwa li a ki te itilize. Ki ta ka dwòl, paske men sa ta gaspiye anpil tan. Se konsa, li te deja konpile epi yo tounen vin nan yon ègzèkutabl. Epi kounye a li se yo pral fizyone ak dosye ou nan fen an. Se konsa, 1 moun ki la ak 0 a yo pral nan amalgame ak sa ki ou ak 0 a nan fen an. Se konsa, koulye a ou pral gen aktyèlman aktyèl la 1 an ak 0 a ki defini ki jan getstring, pou egzanp, travay, oswa ki jan printf, pou egzanp, travay. Apre sa, pou plis enfòmasyon, gen nan yon konpilateur kout ki Nate bay ki ou ta dwe tcheke deyò ki ale nan etap sa yo. Men, - repons lan se wi. ELÈV: Eske yo se moun toujou nan o dosye. yo lè yo ap nan fòm nan bibliyotèk, pare yo dwe fizyone, lye - tankou yo ap nan kòd la binè? JASON HIRSCHHORN: OK. Ki sa ki - ELÈV: Eske se sa ke toujou ka a pou bibliyotèk yo lè ou genyen lyen yo? JASON HIRSCHHORN: Wi. Se konsa, gen dosye, ki pral nan. Yo Kòd machin, ki ap tou ap skre ba ou. Ou pa bezwen enkyete sou sa yo. Men, jeneralman, wi, yo pral dwe nan. o depoze pare ale. ELÈV: Se konsa, lè ou POU YO VOYE LI yon bibliyotèk, ou sèlman bato h la. ak o la.? Ou pa bato c la. Oswa s la.. JASON HIRSCHHORN: Se konsa, - ak sa a se nan sa a ti bout tan kòm byen, si enfòmasyon sa a sanble ap vini yon ti kras byen vit. Men, kout la sou konpilateur chita pale sou sa a tou. Lè ou bato yon bibliyotèk, si ou bato h la., dosye a header, sa yo ki prototip fonksyon, ak nan la 1 ak 0 a, sa a, se tout sa ou bezwen pou nou bay. Ou pa bezwen bay ki jan nan fonksyon travay, dosye a c.. Paske pwen nan distraksyon, oswa nan pwen APIs, pwen an nan spl sa a, bibliyotèk la pòtab Stanford, li nan pou ou pou w pa enkyete sou kòman nouvo GRect ap travay, oswa ki jan deplase travay, oswa ki jan ajoute travay. Tout sa ou bezwen konnen se ke ajoute se yon fonksyon ki ou kapab itilize, e li fè sa sa a. Se konsa, ou reyèlman pa bezwen konnen ki jan li nan ekri nan C. Ou jis bezwen konnen, isit la se fonksyon yo, ki sa yo fè, ak isit la yo se la a 1 an ak 0 lè ou reyèlman vle sèvi ak yo. Fre. Nenpòt ki plis kesyon sou konpilateur oswa lòt sijè sou tablo a? ELÈV: Mwen gen yon kesyon nan mete ann aplikasyon fonksyon repetitif. Yon kesyon sou rkursyon. Mwen te gen yon santiman ki ta vini. Se konsa, kite a byen vit ale nan rkursyon ak yon espesifik egzanp, yon fonksyon faktoryèl. Paske sa a se yon egzanp pou souvan vini monte oswa ki itilize ilistre rkursyon. Se konsa, "4!" Men kouman pou li kòm 4 faktoryèl. Ak sa ki 4 faktoryèl vle di? Ki sa ki ki fè? Ki jan ou fè kalkile 4 faktoryèl? 4 fwa 3 fwa 2 fwa 1. Se konsa, yon lòt fason yo ekri 4 faktoryèl se yo ekri sa a. 4 fwa 3 faktoryèl. Paske 3 faktoryèl se 3 fwa 2 fwa 1. Se konsa, 4 fwa 3 faktoryèl se 4 fwa 3 fwa 2 fwa 1. Sa a se poukisa faktoryèl se yon gwo kandida pou rkursyon, paske li nan klè ke gen se yon bagay ki k ap pase sou yo ak sou yo ak sou sou yon ki pi piti nimewo de bagay sa yo jouk ou rive nan fen an. Lè ou rive nan 1, 1 faktoryèl se 1. Ou pa ka ale anpil pi lwen. Se 0 faktoryèl tou defini kòm 1. Se konsa, lè ou rive nan 1 oswa 0, w ap nan fen a, epi ou ka kòmanse ale tounen moute. Se konsa, si nou te vle ekri yon repetitif fonksyon yo kalkile yon faktoryèl, nou pral ekri kèk pseudocode pou sa kounye a. Anvan nou ekri ke pseudocode - Mwen pral ba w mesye yon koup la minit yo ekri kòd la pseudo oswa jis panse sou li - ki te gen de bagay sa yo chak fonksyon repetitif bezwen. Ki sa ki de bagay sa yo? Jack: Li te gen yo rele tèt li. JASON HIRSCHHORN: Noe? Oh, Jack. Ale pi devan. Jack: Li te gen yo rele tèt li. JASON HIRSCHHORN: Se konsa, yon repetitif fonksyon bezwen yon apèl repetitif, yon rele nan tèt li. Sa a yon sèl. Ak sa ki nan bagay la lòt? Jack: Yon ka baz. JASON HIRSCHHORN: A ka baz. Yon ka baz se, isit la nan lè nou sispann. Se konsa, vin fonksyon ou rele. Ka a baz vini anvan. Ou vle konnen si w ap nan fen an. Men, si ou pa nan fen a, ou fè apèl repetitif ou. Apre sa, ou ale nan fonksyon sa a ankò, tcheke ka baz ou a ankò. Si ou pa fen a, ou fè yon lòt apèl repetitif, et setra, et setra. Se poutèt sa fonksyon repetitif toujou bezwen sa yo ka baz, ak moun ki apèl repetitif. Si ou pa gen yon apèl repetitif, li pa ta dwe yon fonksyon repetitif. Si ou pa t 'gen yon ka baz, ou ta ale ak pou tout tan ta gen pa gen okenn fini. Epi ka-a baz toujou vini an premye, paske ou ap toujou vle tcheke si w ap nan fen a an premye. Se konsa, anvan nou fè kèk pseudocode, poukisa ou pa pran yon minit yo reflechi sou ki jan yon fonksyon repetitif faktoryèl ta dwe ekri? Epitou, anpil jan ou ap fè, ekriti li soti sou yon fèy papye se ki sa w ap pral fè yo fè sou egzamen an demen. Se konsa, pwobableman bon pratik fè asire w ke kòd la w ap ekri desann sou fèy papye - oswa ou ka fè sa. Èske w konnen kote virgules yo ye. Ou sonje sentaks la. Paske ou pa ap kapab gen yon du di ou fè yon erè. Epitou, ansanm sa yo ki liy, denmen maten, lè ou te kodaj pwoblèm, si ou yo kouri pou tan, oswa si w ap trè konfonn sou fason w ap sipoze ekri bagay la patikilye nan c, li ta behoove w ekri pseudo-Kòd oswa ekri kòmantè nan kòm byen. Paske gen nan yon pati nan kredi pou yon anpil nan kesyon ki nan egzamen an. Se konsa, ou ka kouri, oswa ou ta ka jis dwe bay konfizyon. Ekri nan kòmantè oswa pseudo-Kòd yo souvan fason ke ou ka jwenn yon pati nan kredi. Se konsa, pa kite yon bagay vid sou egzamen an. Gen nan pa gen penalite pou mete bagay sa yo pous An reyalite, mete nan pseudo-Kòd oswa kòmantè se ale nan ede elèv klas la detèminen si ou aktyèlman konnen ki sa wap pale osijè de, ak petèt prim ou kèk kredi yon pati nan pou sa. Epitou sou liy sa yo, ekri byen klè. Si nou ka pa vrèman sa w ap ekri, nou pa ap ale nan rele w nan mitan lannwit demen ak figi konnen ki sa ki ou te ekri. Nou jis ap pral pran nan pwen. Ekri klèman pou nou ka tande, oswa olye, nou ka li sa ou te ekri. Men, si li di de fraz, Pa fè ekri yon paragraf. Swiv enstriksyon yo. Ekri byen klè. Epi ekri nan sa yo kòmantè oswa pseudocode pou kesyon ki te kapab prim yon pati nan kredi. OK, se pou yo ale nan faktoryèl. Se konsa, nou gen yon faktoryèl fonksyon. Si m 'te ki aktyèlman ekri sa a nan C, sa m 'bezwen mete devan non an nan fonksyon an? Kalite a retounen, ki, nan sa a ka, nou pral bay li Int. Lè sa a, andedan aparèy òtopedik yo Curly, se sa ki ale andedan aparèy òtopedik yo Curly pou yon fonksyon? ELÈV YO: di ki kalite Agiman. JASON HIRSCHHORN: agiman li yo. Se konsa, faktoryèl pral pwobableman pran yon agiman. Li ap pwobableman sèlman pran yon agiman. Epitou, n ap di li ap pran yon nonb antye relatif rele x. Men, lè ekri pwototip a nan yon fonksyon oswa ekri fonksyon an nan kòd ou anvan ou defini li, ou ekri kalite a done ak non an nan varyab sa a pou sa fonksyon sèlman. Se konsa, ou ka pase kèk nimewo nan sa a fonksyon, li pral refere yo kòm x intern. Nou gen fonksyon faktoryèl nou an. Nou bezwen de bagay sa yo, yon ka baz ak yon apèl repetitif. Ki sa ki se ka a baz pou faktoryèl? Yon moun ki te ekri l 'voye ki pa gen anyen pale ankò, sa ki baz la ka pou faktoryèl? ELÈV: Si n ki pi piti a pase 2, retounen 1. JASON HIRSCHHORN: Si n se mwens pase 2, retounen 1. Mwen renmen sa, paske sa pran swen de 0 ak 1. Se konsa, nou pral fè x <2, retounen 1. Si nou jwenn te pase 0, si nou pran pase 1, fonksyon sa a ap imedyatman retounen 1. Si nou jwenn te pase kèk pi gwo nimewo pase oswa egal a 2, nou pral gen rele repetitif nou an. Se konsa, ki jan yo ki ale nan travay? Èske yon lòt moun ki te travay sou sa a ki pa te di l 'ankò, ban m' an repetitif rele pou fonksyon sa a nan pseudocode? Si nou jwenn te pase nan yon kantite x epi li pi gran pase 2, ki nou vle fè? Nou menm tou nou te yon egzanp ekri sou la bò ki ta ka ba ou yon allusion. ELÈV: Rele x fwa a faktoryèl nan x 1 mwens? JASON HIRSCHHORN: Egzakteman dwat. Nou pral retounen x fwa faktoryèl a nan 1 x mwens. Epi ki, menm si mwen te ekri leve, fondamantalman, sa ou te di nan lang angle, fonksyon sa a faktoryèl pral jwenn yo rele ankò. Li pral egzekite sou x mwens 1. Li pral retounen ak kèk nonb antye ki pè, ak Lè sa a, li pral anpil anpil pitit de moun sa yo ansanm, epi ke valè yo pral tounen nan tou sa yo rele sa a fonksyon faktoryèl, ki ta ka yon lòt egzanp nan fonksyon faktoryèl sa a. Se konsa, ki se yon egzanp nan yon repetitif fonksyon, yon trè senp fonksyon repetitif. Men, pi fò nan yo yo pral tankou sa a. Si ou ta renmen yon repetitif bon defi pou egzamen an, eseye kodaj binè rechèch recursive. Paske si ou te fè binè rechèch pou pwoblèm mete twa, pwobableman ou te fè l ' iterativman nan yon bouk ti tan. Men, li kapab tou gen pou ekri recursive. W ap ale nan bezwen ekri pwòp ou a fonksyon apa ki pran kèk diferan agiman lòd-liy - oswa pa bay lòd-liy agiman, gen kèk diferan agiman jis regilye. Men, ou ta ka ekri binè rechèch recursive kòm byen. ELÈV: Se konsa, ou ta ka ekri yo te tou, olye pou yo x mwens 1, ou te kapab ekri tou x mwens mwens, oswa ou ta ka genyen ekri x mwens mwens. Èske ou ka jis eksplike vrèman byen vit poukisa sa yo ta dwe bagay sa yo diferan, tankou sa ki diferans ki genyen ant x mwens mwens ak mwens mwens x? JASON HIRSCHHORN: Non, mwen pa se ale nan antre nan sa. Men, m'ap pale avèk ou sou li apre klas la. x mwens mwens, mwens mwens x dekrwasans x pa 1. Men, yo fè l 'yon ti jan yon lòt jan. Men, mwen pa ta vle ale nan sa. Lòt kesyon sou rkursyon oswa fonksyon sa a? Sa a pa reyèlman menm pseudocode. Sa a fondamantalman kòd la nan C ou ta ekri pou sa a. OK, nenpòt lòt kesyon sou sijè moute isit la? Yeah. ELÈV: Mwen gen yon fatige rapid nan k ap flote pwen ak presizyon. JASON HIRSCHHORN: K ap flote pwen ak presizyon. Èske yon moun reyèlman byen vit ban m 'yon fatige nan k ap flote pwen ak presizyon? Ou tout te fè sa a pou ou pwoblèm mete, se konsa w ap tout abitye ak li. Oswa petèt pa nou tout ki. Nenpòt moun ki? Ban m 'yon plas kòmanse. K ap flote pwen ak presizyon. Ki sa ki nan pwoblèm nan? Wi. Victoria? Vanessa: Vanessa. JASON HIRSCHHORN: Vanessa. M regrèt. Vanessa: Genyen sèlman yon kantite fini nan nimewo ki ka reprezante paske ou se sou yon, nan nou an ka, yon sistèm 32-ti jan. Se konsa, ou kalite gen fè moute kèk nimewo. JASON HIRSCHHORN: Se konsa, sa a, se egzakteman dwat. Gen sèlman yon sèten kantite nonb ki kapab reprezante. Si ou anpil anpil pitit de nonb gwo anpil, li ta ka debòde kantite lajan an nan espas ou gen reprezante yon nonb antye relatif. Se poutèt sa pafwa nou sèvi ak yon lontan lontan olye pou yo yon Int. Ki gen plis espas. Ki kapab kenbe yon nimewo ki pi gwo. K ap flote pwen presizyon te fè ak ki, men tou, te fè ak an reyalite ki nimewo desimal yo pa toujou reprezante. M regrèt. Kite m 'mete sa a tounen moute. Nimewo a desimal 1.0 se pa toujou reprezante tankou ou ta atann, 1,000000000. Li se pafwa reprezante kòm 1,000000001 oswa 0,999999999. Li ta ka menm 89 voye jete nan gen yon kote. Se konsa, moun nimewo desimal yo pa reprezante egzakteman menm jan ak ou ta atann yo yo dwe reprezante. Se konsa, nan pwoblèm mete - li te de? - pwoblèm mete de, kote nou te fè fas ak nimewo k ap flote pwen, lè nou te vle yo reprezante ekzakteman ki sa nou te vle yo reprezante, nimewo a nan peni, oswa ki kantite santim, nou anpil anpil pitit yo pa 100. Nou awondi yo. Lè sa a, nou koupe tout bagay dèyè pwen desimal la. Sa ki te asire yo ke yo ta aktyèlman egal ekzakteman ki sa nou te vle yo egal-ego. Paske lè ou pran yon bagay sa a, se yon flote ak vire l 'nan yon Int, ou koupe tout bagay sa yo dwa pou pwen an desimal. Paske gen nan kèk pwen k ap flote enpresizyon, 100.000 ta kapab reprezante kòm 99.999999999. Ak si ou jis koupe tout bagay sa yo dwa pou touswit, w ap ale nan jwenn nimewo a mal. Yeah. ELÈV: mwen te gen yon kesyon sou depoze. Ki sa ki lòd li rive nan? Si w ta fè flote, parantèz, 1 divize pa 10, li 1 divize pa 10, Lè sa a, jwenn 0.1, lè sa a vire li nan yon flote? JASON HIRSCHHORN: Si ou fè sa flote 1 divize pa 10 - ELÈV: Yeah, ak Lè sa a egal - byen, li ta nòmalman genyen li egal nan - Yeah. Ou vle fè l 'yon flote, dwa? JASON HIRSCHHORN: OK, se konsa nou ap ale nan sèvi ak ke yo seg nan lè n ap kalkile soti repons kesyon sa yo nan kodaj. Paske ou ap pwobableman gen yon anpil nan kesyon sa yo minit, epi yon bon fason yo rezoud yo, se nan kodaj. Se konsa, nou ap ale nan kòd dwa sa-a kounye a, ak Lè sa a, nou pral tounen ladan l epi kòd kesyon an ou te fè. Se konsa, liy la premye - Mwen pa ta dwe te ekri li - ki sa ki premye bagay nou vle fè lè nou louvri moute yon nouvo dosye ki nan jdi? ELÈV: Mete. JASON HIRSCHHORN: Enkli ki sa? ELÈV: bibliyotèk CS50. JASON HIRSCHHORN: OK. Ki lòt bagay nou ta dwe gen ladan l? Nou jis ap ale nan tcheke sa k ap pase lè ou jete yon bagay nan yon flote. Men, sa ki nou bezwen gen ladan si nou ap pral ekri yon pwogram C? ELÈV: Creole Mwen / O. JASON HIRSCHHORN: stdio.h. Nou aktyèlman pa bezwen, pou sa a pwogram nan, cs50.h, menm si li nan toujou ede genyen ladan yo li. Men, nou toujou bezwen stdio.h. ELÈV: Lè kodaj nan C? JASON HIRSCHHORN: Lè kodaj nan C. Se konsa, mwen delivre l 'tankou sa a dosye c.. Mwen jwenn kèk eklèrsisaj sentaks bèl. Mwen te ekri anile andedan prensipal la. Ki sa ki anile vle di? ELÈV: Pa pran okenn lòd-liy agiman. JASON HIRSCHHORN: vle di vid, nan ka sa ka, prensipal pa pran okenn lòd-liy agiman. Nan kèk lòt ka, sa vle di fonksyon an pa pran lòd-liy agiman. Oswa fonksyon an, si m 'te ekri anile prensipal (san valè), ki ta ka di nan prensipal pa retounen anyen. Se konsa, anile jis vle di pa gen anyen. Ki sa mwen ta ekri si m 'te pran lòd-liy agiman? ELÈV: Int arc ak c fisèl arc ak v JASON HIRSCHHORN: Int arg fisèl argv. Eske se sa ke dwa? ELÈV: Se Char parantèz zetwal argv. JASON HIRSCHHORN: Se konsa, ou ta ka ekri parantèz fisèl argv oswa zetwal Char argv parantèz, men ou bezwen parantèz yo. Paske argv se yon etalaj nan strings, sonje. Li pa jis yon sèl fisèl. Se konsa, fil argv se, isit la nan yon sèl fil rele argv. Parantèz chèn argv se, isit la nan yon etalaj de strings. Se konsa, Int parantèz arg argv fisèl ta dwe yon bagay ki mwen ta pwobableman ekri. Se konsa, ou te vle pou konsève pou nan yon nonb antye? ELÈV: Yeah, nonb antye ki pè. Oswa nan yon flote. JASON HIRSCHHORN: Nan yon flote? Tankou, flote x egal 1 divize pa 10. JASON HIRSCHHORN: OK. Kouman pou mwen enprime soti yon flote nan printf? Ki sa? ELÈV:% f. JASON HIRSCHHORN:% f. Ki sa ki nan yon nonb antye? d oswa mwen. Ki sa ki nan yon kòd? ELÈV: a. JASON HIRSCHHORN: a. Kouman pou mwen jwenn yon liy nouvo? ELÈV: antislach n. JASON HIRSCHHORN: Ki sa mwen retounen si kouri prensipal kòrèkteman? ELÈV: 0. Mwen bezwen ekri ke liy, menm si? ELÈV: No OK, nou pa pral ekri li, lè sa a. Èske tout moun li sa? Li sanble yon ti jan piti. Èske tout moun wè, oswa yo ta dwe Mwen fè l 'pi gwo? Mwen panse ke pou kamera a, nou pral fè li yon ti jan pi gwo, menm si. JASON HIRSCHHORN: Si m 'vle vire sa a . C pote nan yon ègzèkutabl, ki sa ki Mwen ekri? ELÈV: Fè egzamen an. JASON HIRSCHHORN: M regrèt? ELÈV: Fè egzamen an. JASON HIRSCHHORN: Fè egzamen an. Nou te pale sou liy sa a pi bonè. Sonnen. Ki sa ki nan sonnen? Non a nan du a. Ki sa ki nan liy sa a? ELÈV: ansanm l 'pou itilize nan gdb. JASON HIRSCHHORN: Sets li moute pou itilize nan gdb. Liy sa a, sa ki nan sa? ELÈV: Sous kòd. JASON HIRSCHHORN: Sa se a dosye sous, dosye a c.. Ki sa ki de liy sa yo fè? Oswa sa yo de pa liy yo. ELÈV: Li non li teste. JASON HIRSCHHORN: Se konsa, o nan priz di, non li yon bagay yon lòt jan. Ak isit la w ap rele li egzamen an. Si m 'pa t' gen ke nan, sa ki ta li non sa a? ELÈV: A.out. JASON HIRSCHHORN: A.out. Ki sa sa fè? ELÈV: Lyen bibliyotèk la matematik. JASON HIRSCHHORN: Li lyen nan bibliyotèk la matematik. Nou pa t 'gen ladan bibliyotèk la matematik, men depi lè sa a se konsa komen, yo te fè ekri nan toujou gen ladan bibliyotèk la matematik. Menm jan an tou, sa a gen ladan bibliyotèk la CS50. OK, Se konsa, si nou fè lis, nou genyen kounye a yon ègzèkutabl rele egzamen an. Al touye l ', m' ekri egzamen an. Mwen wè ke pwen k ap flote m 'yo, kòm espere, egal 0. Èske sa - Se konsa, - ELÈV: Lè sa a, si ou mete flote kounye a, tankou ou jete l 'kòm flote - JASON HIRSCHHORN: Mete 1 an nan yon flote? ELÈV: Non, jete bagay la plen - yeah. Si ou jis te fè sa, ta ki fè li 0.1? JASON HIRSCHHORN: OK, se konsa vrèman byen vit, 1 divize pa 10 sa yo, se nonb antye relatif yo te divize. Se konsa, lè ou divize nonb antye relatif, yo ap 0, epi w ap ekonomize ki 0 nan yon flote, paske koupe a se jis nonb antye ki pè divizyon. Se konsa, kounye a nou ap vire yon bagay nan yon flote. Ann wè sa ki rive. Nou pral fè egzamen an. Se konsa, kounye a nou wè ke ki koupe pa t ' divizyon nonb antye ki pè, li te k ap flote pwen divizyon. Paske youn nan agiman li yo yo te jete nan yon flote. Se konsa, kounye a li te di, trete sa a divizyon tankou nou ap fè fas ak pwen k ap flote, se pa avèk nonb antye relatif. Se konsa, nou jwenn repons lan nou espere. Ann wè sa ki rive - Wouch. Si mwen te vle ekri ak lèt ​​detache plis desimal tach, ki jan mwen te kapab fè sa? ELÈV: Point dot f, oswa kòm anpil kote desimal jan ou vle. JASON HIRSCHHORN: Se konsa, mwen ekri an lèt detache 10 tach desimal. Ak nou koulye a wè nou ap vin kèk bagay etranj. Apre sa, ki ale tounen nan kesyon ou sou k ap flote pwen enpresizyon. Genyen etranj bagay ki estoke nan isit la. OK, ki reponn kesyon ou a? Ki lòt bagay ou t 'vle ki prevwa nan kòd byen vit? ELÈV: Mwen jis te vle wè si wi ou pa, si ou libere moute kèk konsèy, si wi ou non ke konsèy toujou te ki estoke nan li adrès la nan sa li te montre deja. JASON HIRSCHHORN: OK, Se konsa, kite a fè sa. Ptr zetwal Char, sa a kreye yon varyab rele ptr nan kalite zetwal Char. Kouman pou mwen ekri malok? Alden? ALDEN: Jis malok. Men, Lè sa a, li te gen gwosè nan, ak nan ka sa a, mwen devine ou ta dwe montre Char. Se konsa, li ta dwe Char. JASON HIRSCHHORN: OK, se konsa pi plis generic, Anndan - kite a modifye. Anndan malok, ou ta vle nimewo a nan bytes sou pil wòch la. An jeneral, sa nou te wè ke nou ap fè la a nou pral malok strings, pou egzanp, oswa ranje nan nonb antye relatif. Se konsa, si nou vle 10 nonm antye yo, oswa 10 charaktèr, 10 pral ban nou 10. Lè sa a, gwosè nan charaktèr ta bay nou ke gwosè nan charaktèr, ki nan ka sa a se 1 multiple. Nou jwenn 10 bytes. Si nou te ekri gwosè nan Int, ki ta ban nou 40 bytes. Se konsa, plis generic, andedan nan malok se kantite bytes ou vle. Nan ka sa a, nou ap vin 1 multiple. Ki sanble tankou yon itilize etranj nan malok, men pou nou rezon fè sans. Se konsa, gen nan sa. Nou pral rele gratis. Nou debarase m de li epi nou itilize ptr ankò. Ak sa ki t 'ou vle tcheke? ELÈV: Mwen jis te vle tcheke si oswa ou pa te gen anyen andedan nan li. JASON HIRSCHHORN: Se konsa, si li pwente nan anyen? ELÈV: Yeah, egzakteman, si wi ou non li toujou te gen yon adrès memwa. JASON HIRSCHHORN: Se konsa, ou vle yo tcheke valè a nan ptr? ELÈV: Yeah, egzakteman. JASON HIRSCHHORN: Ki sa mwen ekri isit la si mwen vle yo tcheke valè a nan la pwen - ki sa ki, lòt bò larivyè Jouden di, valè a? Oswa ki sa ki estoke andedan nan ptr? ELÈV: yon adrès memwa. JASON HIRSCHHORN: A adrès memwa. Se konsa, si m 'ekri jis sa a, li pral ban m 'valè a nan ptr. Apre sa, kijan pou m 'enprime soti yon adrès memwa? Ki sa ki nan fòma fisèl la pou yon adrès memwa? ELÈV:% p. JASON HIRSCHHORN:% p. % S la se yon fisèl. % P pou konsèy. Eske se sa ke dwa? Sa se dwa. Se konsa, ptr egal - li toujou gen yon bagay nan li. Sa a se pwobableman yon pi plis enteresan kesyon. Ki sa ki ki liy fè? ELÈV: seg defo. JASON HIRSCHHORN: Ki sa? ELÈV: Mwen panse ke li seg defo. JASON HIRSCHHORN: Hm? ELÈV: Mwen panse ke li pral seg fay. JASON HIRSCHHORN: Se konsa, liy sa a nan kòd, zetwal ptr, ki sa ki zetwal la vle di? ELÈV: Kisa ki nan. JASON HIRSCHHORN: Yeah. Ale nan jwenn sa ki ekri nan. Se konsa, sa a se pral pou yo ale nan memwa a adrese gen ak ban m 'sa. Mwen itilize% c dwa isit la paske gen yo karaktè ki estoke la. Se konsa, nou ap ale pou yo ale nan ki adrès nou jis te wè - oswa li ap pwobableman gen yon ti kras diferan sa a fwa nou kouri pwogram nan. Men, nou pral ale nan adrès ki ki nou konnen toujou egziste ak wè sa ki nan la. Se konsa, li pa t 'seg fay. Li jis pa t 'ban nou anyen. Li ka gen aktyèlman ban nou yon bagay, nou jis pa ka wè li. Apre sa, ki ale tounen nan ide sa a - epi nou pa ap ale nan jwenn twòp nan sa a, paske sa a, se pi lwen pase a Dimansyon de kou sa a. Men, nou te pale osijè de dwa isit la, si nou ale pi lwen pase limit yo nan etalaj la pa 1, nou pa ka jwenn nan tray la. Pafwa, lè ou jis ale nan pa 1, w ap fè yon bagay mal, epi ou te kapab jwenn nan tray la. Men, ou pa toujou jwenn nan tray la. Sa depann de ki jan anpil nan yon move bagay ou , W ap ale nan jwenn nan tray la. Ki se pa vle di, se pou débordan avèk kòd ou a. Men, li se vle di, pwogram nan pa pral toujou kite fimen, menm si ou ale yon kote ou pa ap sipoze ale. Yon bon egzanp nan se sa ki, yon anpil nan moun ki nan pwoblèm yo mete 3, ki te 15, pa t 'tcheke nan limit nan tablo a. Se konsa, ou gade sou bò goch la, gade nan dwat, gade nan tèt la, gade nan fon an. Men, nou pa t 'tcheke yo wè si tèt la te aktyèlman pral fè sou tablo a. Ak yon anpil nan moun ki te fè sa ak vire ke nan, pwogram yo te travay parfe, paske kote ki tablo te ki estoke nan memwa, si ou te ale yon sèl pi wo a li oswa tcheke ke memwa adrès, pa t 'gen yon bagay patikilyèman terib sou sa, Se konsa, pwogram ou an pa t ' ale nan rele nan ou. Men, nou ta toujou pou yo wete tout pwen si nou pa t 'tcheke ke, paske ou yo te fè yon bagay ou pa t ' sipoze fè, epi ou te kapab gen Avèk konkou nan tray la. Chans yo se, menm si, pwobableman ou pa t '. Se konsa, sa a se montre ke, repons lan se wi, nou ka toujou ale nan li. Apre sa, nou pa ap vin nan pwoblèm nan ka sa a. Si nou te eseye fè li nan 100 karaktè kap vini an, nou ta pwobableman jwenn nan tray la. Epi ou ka kòd lekti pwochen 100 la karaktè si ou vle pa fè kèk sòt de pou bouk. Yeah. ELÈV: Depi nou te plase ke espas yon valè aktyèl, nou pa ta aktyèlman kapab wè anyen. Eske nou ta dwe eseye li ak anviwònman ki egal a renmen c oswa yon bagay? JASON HIRSCHHORN: Gwo kesyon. Kouman pou mwen mete ke valè - sa ki liy nan Kòd m 'ekri sou liy sèt a fè sa ou di? ELÈV: Star ptr egal yon sèl quote c fini yon sèl quote. JASON HIRSCHHORN: Se konsa, ki nan mete yon karaktè, c, lè sa kote, paske ankò, pou zetwal vle di ale nan la. Apre sa, lè yo itilize sou bò men gòch nan yon operatè plasman, ki egal siyen, nou pa ap ale nan jwenn ki valè anpil kòm mete ke valè. Koulye a, kite a wè sa ki rive. Nou mete yon bagay gen epi li te la. Nou te rele gratis. Gen kèk bagay pwobableman te pase sou pil wòch la. Se konsa, li pa gen ankò. Men, ankò, nou pa ap vin nan pwoblèm pou ale la. M ap fè sa a soti nan kòd ilistre ke yon anpil nan sa yo kesyon ki di ou gen yo, yo ap reyèlman enteresan reponn yon anpil tan. Apre sa, yo ap reyèlman bon kesyon. Epi ou ka kalkile yo soti sou pwòp ou a si, pou egzanp, nou pa ap nan seksyon. Yeah. ELÈV: Paske nou pa ap voye a konsèy nenpòt kote, ou bezwen sèvi ak malok? JASON HIRSCHHORN: Se konsa, sa a ale tounen premye kesyon ou yo. [? ?] Èske li jis yon varyab lokal yo? Malok isit la se pa sa ki konvenkan. Itilize nan malok isit la se pa ki konvenkan paske li nan jis yon varyab lokal yo. ELÈV: Se konsa, te kapab ou fè Char etwal ptr egal alo? JASON HIRSCHHORN: O. Se konsa, nou ap ale nan kounye a jwenn tounen premye kesyon ou yo. Mwen panse ke ou pa te satisfè ak repons mwen an. OK? Tankou sa? ELÈV: Yeah. Rete tann. JASON HIRSCHHORN: Ak ki kote ou vle enprime soti? Se konsa, nou pral enprime soti yon fisèl tankou sa? ELÈV: enteresan. JASON HIRSCHHORN: Se konsa, sa a di sa a agiman gen kalite a nan yon karaktè. Se konsa, sa a ta dwe gen yon karaktè. ELÈV: Jis pran yon sèl la an premye. JASON HIRSCHHORN: Se konsa, sa a se sa m 'te di anvan. Tankou mwen te di, li pa nan estoke nan fisèl andedan varyab konsèy. Li estoke - ELÈV: valè nan premye nan fisèl la. JASON HIRSCHHORN: postal la nan valè an premye nan fil la. Si nou te ekri ak lèt ​​detache soti sa a, nou ap ap resevwa valè a andedan konsèy. Apre sa, nou pral wè li se, tout bon, yon adrès memwa. ki fè sans? M regrèt. Rete tann, ki reponn ou kesyon, menm si? ELÈV: Yeah. JASON HIRSCHHORN: Sa a liy nan Kòd la se kreye yon fisèl ak Lè sa a, yon lòt varyab konsèy ki nan lonje dwèt ak sa yo ki fisèl, ki etalaj. Yeah. ELÈV: Se konsa, si nou te ale yon sèl memwa adrese pi lwen, ta nou jwenn h a? Èske li te estoke kòm yon kòd? JASON HIRSCHHORN: Tankou, nou te fè sa - Se konsa, sa a se ki gen anpil valè yo fè. Sa a se pwen aritmetik, ki ou mesye te wè anvan epi yo ta dwe relativman konfòtab ak. Sa a se analogue nan ekri - si nou te ekri liy sa a nan kòd, nou te wè notasyon pozisyon devan. Sa a ta dwe ban nou dezyèm lan valè nan etalaj sa a, h. Si nou te fè sa a, sa a ta dwe tou bay nou valè a dezyèm nan ki etalaj. Paske li ki pral pa memwa a adrès nan premye bagay la, men nan adrès memwa nan bagay la yon sèl sou. Lè sa a, dereferences yo operatè zetwal ki konsèy. Li di ankò, se pou yo wè. Nou jwenn h ankò. ELÈV: Ki sa egzakteman fè dèreferans vle di? JASON HIRSCHHORN: dèreferans se yon mo anpenpan pou ale nan. Ale nan ki epi pou yo jwenn sa ki nan gen se dèreferans yon konsèy. Se jis nan yon mo anpenpan pou sa. ELÈV: Si nou te vle ekri ak lèt ​​detache fisèl la tout antye, te kapab nou fè komersyal konsèy? JASON HIRSCHHORN: OK, nou se ale nan pran yon poz isit la. Nou pral fini isit la. Komersyal ba ou adrès la nan yon kote, se konsa lè ou fè komersyal nan yon varyab, li ba ou adrès la ki kote ke varyab ki estoke. Komersyal konsèy ap ba ou a adrès la ptr kote ptr se nan memwa. Nou pa pwal ale sou ak egzanp sa a. Ou kapab konnen ki sa yo bagay sa yo sou pwòp ou yo. Men, ankò, sa a ta ka menm gen verging yon ti jan ki depase sa ou bezwen konnen pou sijè ki abòde lan sa a nan mitan tèm - oswa egzamen sa a, olye. M regrèt. Nou pral pou avanse pou pi sou li a, paske mwen ta renmen fè yon sèl kodaj pwoblèm anvan lè se leve. Apre sa, nou pwal kòd sa mwen panse ki pi irezistib la nan sa yo egzanp, atwa. Se konsa, sa a te yon kesyon sou yon egzamen de zan de sa. Apre sa, mwen genyen li sou tablo a isit la. Moun ki te mande sou egzamen an - yo te ba yo yon ti kras plis tesxt nan kesyon an, men mwen elimine nan tèks paske li te nesesè pou rezon nou an kounye a. Li te jis kèk background sou sa ki atwa te fè sa. Men, nou tout konnen epi yo trè abitye ak atwa. Mwen sijere ou Kòd sa a sou yon fèy papye. Mwen menm mwen te sijere ou sèvi ak estrateji nan ke nou te ale sou yon anpil nan seksyon nou an. Premyèman, asire w ke ou konprann sa atwa a fè. Desine yon foto oswa vini ak kèk imaj mantal ladan l 'nan tèt ou. Apre sa, ekri soti pseudocode yo pou sa. Sou egzamen an, si tout sa ou jwenn se pseudocode, omwen ou menm ou mete yon bagay desann. Lè sa a, kat jeyografik ki pseudocode sou C. Si ou gen yon ti tchèk nan ou pseudocode, tankou tcheke si gen yon bagay se 1, ke kat sou yon si kondisyon ak pou fè. E finalman, kòd pwogram lan nan C. Se konsa, tounen nan atwa epi pran senk minit ki prevwa nan kòd sa a sou yon fèy papye an papye, ki se pwobableman sou la kantite tan ou ta pran sou yon egzamen atwa kòd. Senk a 15 minit, senk a 12, senk a 10 minit, se sou kantite lajan an nan tan ou ta depanse nan sa a kesyon nan egzamen an. Se konsa, pran senk minit, koulye a, tanpri. Men, si ou gen nenpòt kesyon, ogmante men ou epi mwen pral vini alantou. [SIDE konvèsasyon] JASON HIRSCHHORN: OK, se konsa sa ki te senk minit. Sa ki te pwobableman sou kantite lajan an nan tan ou ta depanse nan sa a sou yon egzamen, petèt fen a ki ba nan moman sa. Nou pral Rekapitilasyon nan yon ti jan. Se pou nou kòmanse kod sa a. Men, si nou pa jwenn tout wout la nan, repons yo nan sa a ak sa a kesyon egzamen yo disponib, ankò, Sezon otòn 2011, se lè kesyon sa a parèt sou egzamen an. Apre sa, li te vo uit pwen sou egzamen an lè sa a. Uit pwen se sou fen nan segondè a nan kantite lajan pou pwen yon bagay ki vo. Pifò kesyon ki gen nan seri a nan yon sèl nan sis pwen. Se konsa, sa a se yon pi difisil kesyon, pou asire w. Èske okenn moun jwenn m 'te kòmanse? An jeneral, sa nou pral vle fè ak sa a fonksyone atwa, lojikman? Ki sa nou vle fè? Se konsa, nou ap ale nan ekri kèk pseudocode. ELÈV: Konvèti karaktè nan nonb antye relatif. JASON HIRSCHHORN: Konvèti karaktè nan nonb antye relatif. OK. Se konsa, ki jan anpil karaktè yo nou pral bezwen yo ale nan? ELÈV: Tout moun nan yo. ELÈV: tout karaktè yo ki nan fisèl la. JASON HIRSCHHORN: Tout moun nan nan karaktè nan fisèl la. Se konsa, si nou te vle yo ale nan chak karaktè nan yon fil, ki sa ki se yon bagay nan C nou te wè ki te pèmèt nou yo ale nan chak karaktè nan yon kòd? ELÈV YO: A pou bouk. JASON HIRSCHHORN: A pou bouk. Se konsa, nou ap ale nan bouk nan chak karaktè nan s. Lè sa a, kisa nou pral vle fè lè nou jwenn yon karaktè espesifik yo? Di nou ap resevwa yo te pase yon 90. Nou jwenn 9 la. Li se yon karaktè. Ki sa nou vle fè ak ki N. 9? ELÈV: Fè soustraksyon li nan men karaktè 0? ELÈV: Add 0? JASON HIRSCHHORN: Fè soustraksyon li nan men karaktè 0? ELÈV: Yeah. JASON HIRSCHHORN: Poukisa fè ou vle fè sa? ELÈV: [fèbl] valè. Valè Int li yo. JASON HIRSCHHORN: OK, se konsa nou pran an N. 9, fè soustraksyon li nan men N. 0 yo ka resevwa yon nonb antye ki pè aktyèl 9. Dous. Ak ki jan ou konnen ke karaktè 9 mwens 0 N. se 9? Ki sa ki tablo ou te gade nan? ELÈV: Gen lojikman nèf kote ant 9 ak 0. Oswa ou ta ka gade nan tablo a ASCII. JASON HIRSCHHORN: tab ASCII. Men, repons lan se wi, w ap kòrèk tou. Se konsa, nou fè soustraksyon 0. Se konsa, kounye a nou gen nonb antye ki pè a 9. Apre sa, ki sa nou vle fè ak sa? Si nou gen 90 an, li nonb antye ki pè nan premye nou te, sa nou vle fè? ELÈV: Mwen ta mete nan yon nonb antye ki pè pou yon ti tan etalaj, lè sa a fè matematik li pita yo fè l 'nan yon fen. JASON HIRSCHHORN: OK. ELÈV: Ou ka kòmanse nan fen etalaj la ak Lè sa a avanse pou pi devan pou ke chak fwa ou avanse pou pi devan, ou anpil anpil pitit li a 10. JASON HIRSCHHORN: OK. Ke son tankou yon bèl konvenkan lide. Nou ka kòmanse nan fen a nan etalaj nou an, epi nou ka sèvi ak strleng. Nou ka sèvi ak strleng nan isit la. Nou pral jwenn longè a nan fisèl nou an. Nou kòmanse nan fen an. Apre sa, + yon an premye, nou jis pran ki nonb antye ki pè, ak petèt nou kreye tankou yon nouvo varyab nonb antye ki pè moute tèt kote nou ap estoke tout bagay. Se konsa, nou bouk nan chak Char nan s soti nan tounen nan devan, n ap retire 0, epi Lè sa a, nou pran l ', li depann sou kote li se, nou anpil anpil pitit li pa yon pouvwa nan 10. Paske yon sèl la an premye, sa nou fè anpil anpil pitit karaktè a rightmost pa? ELÈV: 10 a 0 a. JASON HIRSCHHORN: 10 a 0 a. Ki sa nou anpil anpil pitit dezyèm lan N. rightmost pa? ELÈV: [fèbl]. JASON HIRSCHHORN: Ki sa? ELÈV: 10 a 1 an. JASON HIRSCHHORN: 10 nan 1 an. Karaktè nan twazyèm-rightmost? ELÈV: 10 nan 2 a. JASON HIRSCHHORN: 10 nan 2 a. ELÈV: Padon, mwen pa konprann sa n ap fè isit la. JASON HIRSCHHORN: OK, kite a tounen, lè sa a. Se konsa, nou ap ale nan jwenn te pase nan yon kòd. Paske nou ap ekri atwa. Se konsa, nou jwenn te pase nan yon kòd. Di nou ap resevwa pase nan fisèl la 90. Se bagay ki premye nou ap pral fè mete yon nouvo varyab nonb antye ki pè ke nou ap jis ale nan kreye kòm nouvo nonb antye ki pè nou an. Sa a ki sa nou pral retounen nan fen an. Nou bezwen yo ale nan chak karaktè nan fisèl la paske nou te detèmine ke nou bezwen manyen chak yon sèl ak Lè sa a, ajoute li nan nouvo nonb antye ki pè nou an. Men, nou pa ka jis ajoute li kòm yon kantite. Nou pa ka jis pran 9 ak ajoute 9 a nonb antye ki pè nou an. Sa depann de ki kote li se nan fisèl la. Nou pral bezwen anpil anpil pitit li pa yon pouvwa nan 10. Paske sa a, se ki jan baz 10 travay. Se konsa, nou ap ale nan jwenn vrè la karaktè, oswa nonb antye ki pè aktyèl la nimewo, pa soustraksyon karaktè 0 soti nan karaktè 9 tankou nou te fè ak soustraksyon karaktè kapital Yon soti nan tou sa karaktè nou te gen nan youn nan sa yo pwoblèm. Se konsa, nou pral aktyèlman jwenn yon nimewo ki ant 0 a 9 sove kòm yon nimewo reyèl, epi n ap anpil anpil pitit li pa yon pouvwa nan 10 depann sou kote nou yo nan fil la. Lè sa a, nou pral ajoute li tounen nan nouvo varyab nonb antye ki pè nou an. Se konsa, sa sa a ta sanble ta dwe - nou pral pran sou isit la. Si nou jwenn te pase nan fisèl la 90 - ELÈV: [fèbl]. JASON HIRSCHHORN: Men, atwa pran yon kòd. Se konsa, nou ap ale nan ale nan kenbe la. Nou pral jwenn ki te pase nan 90. Nou ale soti nan do a, yo kanpe devan la. Nou pran 0 a. ELÈV: mwen regrèt. Petèt sa a se estipid. Si nou ap resevwa te pase nan yon fil, poukisa se 90 ki sa nou ap resevwa te pase nan? Paske 90 se yon nonb antye. JASON HIRSCHHORN: Paske atwa pran yon fisèl ak vire l 'nan nonb antye ki pè a reprezantasyon nan ki fil. Men, fisèl la 90 se pa nonb antye ki pè a 90 osinon nimewo ki 90. Fisèl la 90 se yon etalaj de de, oswa twa karaktè, olye, 9 la karaktè, karaktè a 0, epi antislach 0 karaktè la. Apre sa, nou ap ekri atwa paske, pou egzanp, lè ou pran yo lòd, ki liy agiman, epi li sove nan argv, li te sove kòm yon kòd. Men, si ou vle trete li kòm yon nimewo, ou bezwen konvèti li nan yon nonb antye ki pè vrè. Ki nou te fè youn nan kouche pwoblèm nou yo. Ki nou te fè nan yon nonb nan aparèy televisyon HD pwoblèm nou yo. Tout moun ki te pran yon nonb antye relatif kòm yon agiman liy lòd. Se konsa, Se poutèt sa fonksyon atwa nou pran yon kòd. Se konsa, ankò, nan egzanp nou an isit la, nou ap pral pran yon sèl ki sot pase a. Nou pral fè soustraksyon karaktè a 0 soti nan li, paske karaktè yo 0 soustrè pa karaktè a 0 ba ou nimewo aktyèl la 0, dapre matematik la ASCII ke nou fè. Paske karaktè yo reprezante kòm diferan pase aktyèl yo - nan N. yon, pou egzanp, miniskil yon se 97. Li pa - Wouch! Li pa sa ou ta atann li nan dwe, 0, pou egzanp. Se konsa, ou gen fè soustraksyon a N. yon jwenn 0. Se konsa, nou ap ale nan fè sa isit la jwenn nimewo a vrè. Lè sa a, nou pral miltipliye li pa yon puisans 10 depann sou kote li se nan fisèl la, ak Lè sa a, pran ki epi ajoute li sou detantè plas nou varyab pou nou ka vini ak final nouvo nonb antye ki pè nou an. ki fè sans a tout moun? Se konsa, nou pa ap ale nan Kòd sa a kounye a, paske nou ap ap resevwa kout sou tan. Mwen regrete pou tan an sou sa. Men, sa a se sa, èspere ke, ou ta kapab fè sou egzamen an - nan a trè pi piti, jwenn pseudocode sa a ekri deyò. Lè sa a,, si nou tout nou te ekri a pseudocode, aktyèlman, nou te ka fè sa yo byen vit. Chak liy nan kòmantè nou nou te ekri isit la tradui a sou yon sèl liy nan C kòd. Deklare yon nouvo varyab, ekri yon bouk, gen kèk soustraksyon, gen kèk miltiplikasyon, ak kèk plasman. Nou ta pwobableman tou vle ekri yon liy retou. Nou ka tou vle mete kèk chèk nan isit la. Yeah. ELÈV: Se konsa, nou ka trete s kòm fisèl aktyèl la? Paske mwen konnen li nan jis yon adrès. Tankou, ki jan ou ta jwenn longè a nan fisèl la ke yo te mache nan tout? JASON HIRSCHHORN: Se konsa, kouman fè longè a nan yon fil? Strlèn. ELÈV: strlèn, yeah. Men, ou ka mete yo kòm nan agiman pou sa? JASON HIRSCHHORN: Se konsa, strlèn pran yon etwal Char. Apre sa, li swiv ki zetwal Char, epi li kenbe konte jiskaske li vin nan yon antislach 0. strlèn te aktyèlman youn nan lòt pwogram sa yo nou te ale nan kòd. Sa a yon lòt bon kòd. Ke yon moun nan yon ti jan pi fasil, paske si w ap ale nan panse osijè de sa concept - Mwen jis te di ke li byen fò - strlèn sa a yon konsèy ak kenbe prale ak konte ak kenbe tras jouk ou rive nan yon antislach 0. ELÈV: OK, te resevwa li. JASON HIRSCHHORN: Se konsa, pi bon nan chans sou egzamen 0 demen. Si w gen nenpòt kesyon, mwen pral gen deyò apre sa a. Santi yo lib yo voye yon imèl ba m '. Rive jwenn soti nan TF pwòp ou a si w ap pa nan seksyon m 'yo, oswa pou w jwenn mwen voye yon imèl ba si ou vle li. Si ou vle sovaj deyò epi yo jis voye m 'yon imel, yon imel freakout, mwen pral voye ou ale, tankou, yon figi Smiley, oswa, tankou, yon blag oubyen yon bagay. Se konsa, santi yo lib yo fè sa tou. Bon chans ankò, epi mwen pral wè ou tout semèn pwochèn.