[Powered by Google Translate] [Seksyon 4] [Mwens Alèz] [Nate Hardison] [Inivèsite Harvard] [Sa a se CS50.] [CS50.TV] Tout dwa, akeyi tounen nan seksyon. Nan seksyon yo semenn sa a nou ap pral fè yon koup la bagay sa yo. Nou pral Set premye Pwoblèm rapèl 2, ki se mete nan pwoblèm Seza tande kòz ak Vigenère. Lè sa a, nou pral kontinye plonje nan revizyon kwiz 0 ak depanse yon ti kras nan tan recapping ki sa nou te pale sou nan chak nan konferans yo twò lwen, epi n ap fè tou yon pwoblèm kèk soti nan ti tès anvan ane a. Nan fason sa a ou nèg gen yon bon fason pou prepare yo pou sa. Pou yo kòmanse, mwen te demare moute yon koup la solisyon bon pou mete nan pwoblèm anvan, Pwoblèm Fikse 2, nan espas sa a. Si ou nèg tout frape lyen sa a, epi si ou klike sou non mwen, epi klike sou revizyon premye fwa mwen ou pral wè caesar.c, ki se ekzakteman ki sa m ap gade. Se pou nou pale sou sa a vrèman byen vit. Sa a se jis yon solisyon echantiyon. Sa a se pa nesesèman solisyon an pafè. Gen anpil fason diferan nan ekri sa a, men gen yon bagay kèk ki mwen te vle mete aksan sou ke mwen te wè jan mwen te korije, erè komen ke mwen panse ke sa a solisyon fè yon trè bon djòb nan manyen. Premye an se gen kèk sòt de kòmantè header nan tèt la. Sou liy 1 jiska 7 ou gade nan detay yo, ki sa egzakteman pwogram sa a ap fè. Yon bon pratik estanda lè w ap ekri C kòd kèlkeswa si se pwogram ou an genyen nan yon dosye yon selibatè oubyen si li nan divize sou zafè dosye miltip se genyen kèk sòt de oryante kòmantè nan tèt la. Sa a se tou pou moun ki ale deyò epi ekri kòd nan mond lan reyèl. Sa a se kote yo pral mete enfòmasyon copyright. Anba a yo se gen ladan nan #. Sou liy 16 gen nan sa a # defini, ki nou pral tounen vin jwenn nan jis yon ti jan. Lè sa a, yon fwa fonksyon an kòmanse, kòmanse yon fwa prensipal yo, paske pwogram sa a yo te genyen nan yo nan tout yon fonksyon sèl bagay la trè premye ki ap pase-yo ak sa a se trè idyomatik ak tipik nan yon pwogram C ki pran nan liy lòd agiman-a se ke li imedyatman tcheke pou konte a agiman, arg. Dwa isit la nou wè ke pwogram sa a ap tann 2 agiman egzakteman. Sonje byen gen nan ke agiman sa a, se premye yon sèl nan espesyal sa a, se toujou non an nan pwogram nan ki nan ke yo te kouri, non an nan dosye a ègzèkutabl. Se konsa, ki sa sa a fè se li anpeche itilizatè a soti nan kouri pwogram nan ki gen plis oswa mwens diskisyon. Rezon ki fè nou vle tcheke pou sa a touswit se paske nou pa ka aktyèlman jwenn aksè sa a etalaj argv dwa isit la fiable jiskaske nou te tcheke yo wè ki jan gwo li ye. Youn nan erè yo ki komen, mwen wè te moun ki ta imedyatman ale nan ak pwan argv [1]. Yo ta gen tan pwan agiman kle a soti nan etalaj la ak yon mwen tcheke nan sou li, ak Lè sa a, yo ta fè tès la pou arg kòm byen ke pwochen egzamen an, si ou pa agiman an premye te depoze yon nonb antye relatif nan menm tan an, epi ki pa travay paske nan ka a ke pa gen okenn agiman apwovizyone ou pral arachman gen yon diskisyon ki pa gen oswa eseye gen tan pwan yon sèl ki pa gen. Bagay a lòt gwo ke ou ta dwe voye avi se ke ou toujou vle enprime soti kèk sòt de mesaj erè itil itilizatè a oryante yo. Mwen asire w ou te tout pwogram kouri kote tout nan yon toudenkou li kolizyon, epi ou jwenn sa a ridikil dyalòg ti kras ki Pops leve e li di yon bagay oribleman skre e petèt ap ba ou yon kòd erè oswa yon bagay tankou sa ki pa fè okenn sans. Sa a se kote ou reyèlman vle bay yon bagay ki itil ak vize itilizatè a pou lè yo kouri li yo pou y al "O," figi palmis. "Mwen konnen ekzakteman ki sa yo fè. Mwen konnen ki jan yo ranje sa a." Si ou pa enprime yon mesaj, Lè sa a, ou fini aktyèlman kite itilizatè a yo ale egzaminen kòd sous ou a konnen sa ki ale mal. Genyen tou kèk fwa ke ou pral sèvi ak kòd erè diferan. Isit la nou jis itilize yon sèl vle di te gen yon erè, te gen yon erè, te gen yon erè. Pi gwo pwogram, souvan pwogram ki rele yo pa lòt pwogram yo, pral retounen kèk sòt de kòd erè espesyal nan senaryo diferan programe kominike ki sa ou ta otreman jis itilize yon bèl mesaj angle pou li a. Fre. Pandan n ap travay desann, ou ka wè nou rale mete deyò nan kle. Nou teste yo wè si kle a adapte. Nou jwenn yon mesaj nan itilizatè a. Rezon ki fè nou fè l 'nan sa a fè pandan y ap riban-yo ak sa a se yon bagay ke nou pral kouvri nan yon ti kras ti jan-men li vire soti ke si ou tape kontwòl D lè ou jwenn ki GetString èd memwa sou tèminal nan ki sa ki aktyèlman fè, se li voye yon karaktè espesyal nan pwogram nan. Yo rele li ELF la oswa nan fen karaktè dosye-a. Ak nan ka sa a, fisèl mesaj nou an pral nil, kidonk sa a pa t 'yon bagay nou tcheke pou nan pwoblèm nan mete tèt li. Men, kòm nou ale nan, kounye a ke nou te kòmanse pale sou pwent ak dinamik memwa alokasyon sou pil wòch la, tcheke pou nil nenpòt lè w gen yon fonksyon ki ta ka retounen nil kòm yon valè se yon bagay ki ou pral vle jwenn nan abitid la pou fè a. Sa a se isit la sitou pou ilistrasyon. Men, lè ou fè wè GetString nan tan kap vini an, se konsa soti nan Pwoblèm Fikse 4 sou, ou pral vle kenbe sa a nan tèt li. Yon fwa ankò, sa a se pa yon pwoblèm pou Pwoblèm Fikse 3 swa depi nou pa t 'kouvri l' ankò. Finalman, nou jwenn yo nan pati sa a kote nou jwenn yo riban an chifreman prensipal yo, e gen yon koup nan bagay sa yo pral sou isit la. Premyèman, nou repekte sou fisèl la mesaj tout tèt li. Isit la nou te kenbe apèl la strlèn nan kondisyon an, ki te yon kantite ou vize deyò se pa yon bon fason yo ale. Li vire soti nan ka sa a li la tou pa gwo, an pati paske nou ap chanje sa ki nan mesaj la li menm andedan pou riban, kidonk si nou gen yon mesaj ki nan 10 karaktè long, nan premye fwa a nou kòmanse ke pou riban strlèn pral retounen ki sa? 10. Men, si nou Lè sa a, modifye mesaj, di nou modifye karaktè 5yèm li yo, epi nou jete nan yon karaktè \ 0 nan yon pozisyon nan 5yèm, sou yon iterasyon ki vin apre strlèn (mesaj) pa pral retounen sa li te fè tan an trè premye nou iteratif, men li pral olye retounen 5 paske nou jete nan ki nil Terminator, epi li se longè fil la defini pa pozisyon sa a nan 0 \. Nan ka sa a, sa a se yon bon fason yo ale paske nou ap chanje l 'nan plas. Men, ou remake ke sa a se aktyèlman surprenante senp yo ankripte si ou kapab jwenn matematik ki kòrèk la. Tout sa ki nan egzije se tcheke si ou pa lèt la ke w ap chèche a se majuskul oswa miniskil. Rezon ki fè nou gen sèlman yo tcheke pou ki epi nou pa gen yo tcheke pou ka a alfa se se paske si yon karaktè se majuskul oswa si li nan miniskil Lè sa a, li la definitivman yon karaktè alfabetik, paske nou pa gen chif majuskul ak miniskil. Bagay a lòt nou fè-yo ak sa a se yon ti kras difisil- se nou te modifye estanda Seza tande kòz kalkile fòmil la ke nou te bay nan spesifikasyon la ansanm pwoblèm. Ki sa ki nan diferan isit la se ke nou soustrè nan kapital la ka majuskul A a, epi Lè sa a, nou te ajoute kapital Yon tounen nan nan fen an. Mwen konnen yon kèk nan sa ou fè a nan kòd ou a. Èske nenpòt nan ou fè sa nan observation ou a? Ou te fè sa a. Èske ou ka eksplike ki sa sa a fè, Sahb? By soustraksyon li soti, paske ou te fè yon Mod dwa apre l ', ou dwe pran li soti, se konsa ke fason ou jwenn [touse] pozisyon. Lè sa a, pa ajoute li tounen pita ou deplase sou youn nan ki ou te vle. Yeah, egzakteman. Ki sa ki Sahb te di se te ke lè nou vle ajoute mesaj nou yo ak kle nou yo ansanm ak Lè sa a, Mod sa, Mod ki pa NUM_LETTERS, si nou pa echèl mesaj nou an, nan ranje ki apwopriye a 0 a 25 an premye, Lè sa a, nou ta ka fini ou jwenn yon nimewo reyèlman etranj paske valè sa yo ke nou ap chèche a lè nou gade mesaj [mwen], lè nou gade pèsonaj la on nan plenn-tèks mesaj nou an, se yon valè yon kote nan sa a ranje 65 a 122 ki baze sou valè yo ASCII pou majuskul A jiska miniskil z. Se konsa, lè nou Mod li pa 26 oswa pa NUM_LETTERS, depi sa ki te defini # nou an nan dwa nan tèt moute isit la, ki nan ale nan ba nou yon valè ki nan nan seri a 0 a 25, epi nou bezwen yon fason yo Lè sa a, echèl ki tounen moute epi pou yo jwenn li nan ki apwopriye ranje a ASCII. Fason ki pi fasil fè sa ki jis echèl tout bagay desann nan seri a 0 a 25 yo kòmanse avèk yo, ak Lè sa a, chanjman tout bagay tounen moute nan fen an. Yon lòt erè komen ki mwen te wè moun kouri antre nan se ke si ou pa aktyèlman fè sa a Eskalad touswit epi ou ajoute mesaj ak kle yo ansanm epi ou ajoute yo, di, nan yon varyab Char, pwoblèm nan ak ki se depi mesaj [mwen] se yon nimewo relativman gwo yo kòmanse avèk yo- sonje ke se byen omwen 65 si li nan yon majuskul karaktè- si ou gen yon kle gwo, di, yon bagay tankou 100, epi ou ajoute sa yo 2 ansanm nan yon Char siyen w ap ale nan jwenn yon debòde. W ap ale nan jwenn yon valè ki nan pi gwo pase 127, ki se valè a pi gwo ke yon varyab Char ka kenbe. Yon fwa ankò, sa a, se poukisa ou ta vle fè sa sòt de bagay sa yo kòmanse avèk yo. Gen kèk moun ki te resevwa alantou ka sa a nan fè yon lòt moun, e si tès yo wè si li ta debòde anvan yo fè sa, men fason sa a vin bò kote sa. Lè sa a, nan sa a solisyon nou soti enprime fisèl la tout antye nan fen an trè. Lòt moun ki soti enprime yon karaktè nan yon tan. Tou de se pè. Nan pwen sa a, èske ou nèg gen nenpòt kesyon, nenpòt kòmantè sou sa a? Bagay sa yo ou renmen, bagay sa yo ou pa renmen? Mwen te gen yon kesyon. Petèt mwen rate li pandan repons ou, men ki jan fè sa ki nan pwogram sa a sote espas yo pou konekte kle nan longè a nan tèks la? Sa a se jis Seza tande kòz kalkile. >> Oh, regrèt sa, yeah. Yeah, nou pral wè sa. Nan kalkile nan Seza tande kòz nou te resevwa alantou sa paske nou sèlman ranvèrse karaktè. Nou sèlman Thorne yo si yo te majuskul oswa miniskil. Ou nèg santi trè bon sou sa a? Santi yo lib a kapab bay kopi sa a lakay ou, pran li, li konpare l ak sa ou guys te ekri. Definitivman santi yo lib yo voye kesyon sou li tou. Epi ankò, reyalize ke objektif la isit la ak pwoblèm ou an kouche se pa fè ou jwenn nèg yo ekri pafè kòd pou aparèy televisyon HD pwoblèm ou. Li se yon eksperyans aprantisaj. Yeah. Retounen fè a pandan y ap riban, si li egal nil, Se konsa nil jis vle di pa gen anyen yo, yo jis frape antre nan? Nil se yon valè konsèy espesyal, epi nou itilize nil lè nou vle di nou gen yon varyab konsèy ki montre pa gen anyen. Se konsa, anjeneral sa vle di ke sa a varyab, sa a varyab mesaj a vid, ak isit la, paske nou ap sèvi ak CS50 espesyal kalite nan fisèl, ki sa ki kalite nan fisèl CS50? Èske ou te wè ki sa li se lè David rale tounen kapo a nan konferans? Li se yon fenki-li nan yon konsèy, dwa? Okay, yeah. >> Li se yon * Char. Se konsa, reyèlman nou te ka ranplase sa a dwa isit la ak Char mesaj *, ak sa fonksyon an GetString, si li pa avèk siksè jwenn yon fisèl soti nan itilizatè a yo, li pa ka analizan yon fisèl, epi ka-a yon sèl nan ki li pa kapab analizan yon kòd se si itilizatè a kalite nan fen karaktè dosye, D kontwòl la, ki se pa yon bagay ou tipikman fè, men si sa rive Lè sa a, fonksyon an ap retounen sa a valè null kòm yon fason pou li di "Hey, mwen pa t 'jwenn yon fisèl." Ki sa ki ta rive si nou pa mete mesaj = nil, ki se yon bagay ke nou pa yo te fè ankò? Poukisa ta ke gen yon pwoblèm isit la? Paske mwen konnen ke nou te pale yon ti kras nan konferans sou fwit memwa. Yeah, kite la fè sa, e kite yo wè sa ki rive. Kesyon Basil a te kisa k ap rive si nou pa gen aktyèlman mesaj sa a = nil tès? Se pou nan woulo liv moute sou tèt la. Ou nèg ka fè komantè sa a soti. Aktyèlman, mwen pral sove li nan yon revizyon. Sa a pral Revizyon 3. Ki sa ki ou pral gen pou fè pou kouri pwogram sa a se ou pral oblije klike sou icon sa a Kovèti pou moute isit la, epi ou pral gen ajoute yon diskisyon ak li. Ou pral oblije bay li agiman kle a depi nou vle pase nan yon diskisyon liy lòd. Isit la mwen pral bay li nimewo a 3. Mwen renmen 3. Koulye a, zoum tounen soti, kouri pwogram nan. Li nan kouri, konpile, bati a. Isit la nou ale. Li nan ap tann yo dwe pouse. Si m 'tape nan yon bagay tankou alo kote-t' ki ale? Oh, pwogram m 'te pran twò lontan nan kouri. Mwen te jawing pou twò lontan. Isit la li ale. Koulye a, mwen tape nan hello. Nou wè ke li chifre kòmsadwa. Kounye a ki sa k ap pase si nou fè èd memwa GetString retounen nil? Sonje byen, mwen te di ke nou te fè sa pa peze kontwòl D nan menm tan an. Mwen pral woulo liv moute isit la. Nou pral kouri l 'ankò. Bilding nan. Gen li ale. Koulye a, lè m 'frape kontwòl D Mwen te resevwa liy sa a ki di opt/sandbox50/bin/run.sh, fòt Segmentation. Eske ou te wè ki jan nèg ye anvan an? [Elèv] Poukisa gen pa gen okenn->> Padon? [Elèv] Poukisa gen pa gen okenn pil fatra debaz nan ka sa a? Pil fatra nan nwayo se-kesyon an se poukisa ki gen la pa gen okenn pil fatra debaz isit la? Kesyon an se ke gen pouvwa pou yo, men pil fatra debaz la se yon dosye ki vin ki estoke sou kondwi a difisil. Nan ka sa a nou te enfim jete debaz sou sèvè a kouri pou nou pa t 'moun segman frakti ak bati moute tòn jete prensipal yo. Men, ou ka jwenn youn. Jete debaz yo sòt nan de bagay sa ke ou ka souvan enfim, e pafwa ou fè. Segmentation fòt la, w ka reponn kesyon ou an, Basil, ap di ke nou te eseye gen aksè a yon konsèy ki pa te mete lonje dwèt sou anyen. Sonje Binky nan videyo a lè Binky ap eseye ale gen aksè a yon konsèy ki pa nan lonje dwèt anyen? Nan ka sa a mwen devine teknikman konsèy la ap lonje dwèt a yon bagay. Li nan lonje dwèt nil, ki se teknikman 0, men sa yo defini yo dwe nan yon segman ki pa aksesib pou pa pwogram ou an, kidonk, ou jwenn yon fay segmentation paske ou pa ap gen aksè nan memwa sa a, se nan yon segman ki valab tankou segman nan pil oswa segman nan chemine oswa segman done a. Fre. Nenpòt kesyon plis sou Seza tande kòz? Se pou nou deplase sou. Se pou yo gade nan Revizyon 2 vrèman byen vit. Sa a Vigenère. Isit la nan Vigenère nou pral mache nan yon sèl sa a trè byen vit, paske, ankò, Vigenère ak Seza tande kòz ase sanblab. Kòmantè Header se anvan, # Defini se anvan pou fè pou evite lè l sèvi avèk nimewo sa yo majik. Bagay nan bon an di nou te vle pou yo avanse pou yon alfabè diferan oswa yon bagay tankou sa. Olye de gen yo ale manuelman chanje tout 26 nan a nan kòd la nou te ka chanje sa a 27 oswa lage li desann si nou te lè l sèvi avèk alfabè diferan, lang diferan. Yon fwa ankò, nou te gen chèk sa-a nan konte a agiman, ak reyèlman ou kapab pwèske pran sa a kòm yon modèl. Bèl anpil chak pwogram ou ekri ta dwe gen- si li pran liy lòd agiman-kèk sekans nan liy ki li tankou sa a nan konmansman an anpil. Sa a se youn nan tès yo saniti premye ou vle fè. Isit la ki sa nou t 'te nou te fè asire w ke mo kle a te valab, epi sa yo ki te chèk la dezyèm ke nou te fè sa. Avi ankò ke nou separe sa a soti nan arg ak 2. Remake byen ke nan ka sa a yon sèl bagay ke nou te fè te olye nan lè l sèvi avèk yon mwen nou te vle valide fisèl la an antye, ak yo nan lòd yo fè sa ou gen aktyèlman ale karaktè pa karaktè sou fisèl la. Gen nan pa gen bon fason yo rele yon bagay sou li paske menm, pou egzanp, yon mwen pral retounen 0 si li pa ka analizan yon nonb antye relatif, se konsa ke pa menm travay. Yon fwa ankò, bèl mesaj di itilizatè a egzakteman sa ki te pase. Lè sa a, isit la, ankò, nou menm tou nou okipe ka a kote itilizatè a kalite nan yon kontwòl karaktè o aza D. Lè sa a, Charlotte te gen yon kesyon pi bonè sou fason nou jere sote espas nan fisèl nou isit la. Sa a te kalite ki sanble ak sa nou te fè ak pwogram sa a Myspace ke nou te fè nan seksyon, ak wout la sa a te travay se ke nou Suivi ki kantite lèt ki nou ta wè. Kòm nou te mache sou fisèl la mesaj, kòm nou te mache sou karaktè nan karaktè, nou Suivi endèks la kòm yon pati nan nou an pou riban, ak Lè sa a, nou menm tou nou Suivi ki kantite lèt, se konsa ki pa espesyal karaktè, ki pa chif, ki pa blan espas ke nou ta wè nan varyab la ki apa a. Lè sa a, sa a solisyon modifye kle a jwenn yon vrè nonb antye relatif kle yo, ak li fè sa ki sou vole a, dwa anvan li Lè sa a, ale nan ankripte pèsonaj la mesaj reyèl. Gen kèk solisyon ki te parfe gwo tou ki ta modifye kle a moute lè tès pou validite kle a. Anplis fè si ke karaktè a ak mo kle a te yon karaktè alfabetik li tou te vire ki nan yon nonb antye relatif nan seri a 0 a 25 a Lè sa a, sote gen fè sa sou pita nan sa a pou riban. Yon fwa ankò, ou wè isit la sa a se reyèlman kòd la egzak menm ke nou te itilize nan Seza tande kòz nan pwen sa. Ou ap fè egzak menm bagay la, se konsa jwe fent la reyèl se lè n ap kalkile soti ki jan yo vire mo kle a nan yon nonb antye relatif. Youn nan bagay ki nou te fè sa isit la ke se yon ti kras dans se nou repete fraz sa a, mwen devine ou ta ka rele li, 3 fwa apa a, sou, 58 liy 59, ak 61. Èske yon moun eksplike ki sa egzakteman fraz sa a li fè? Li nan jwenn aksè yon karaktè, tankou ou te di. Yeah, li nan [fèbl] yon karaktè nan mo kle a, ak Se konsa li kantite lèt wè paske w ap sèlman k ap deplase ansanm mo kle a yon fwa ou te wè lèt la, pou ke a pral efektivman sote espas ak lòt bagay tankou sa. Yeah, egzakteman. Lè sa a, yon fwa ou te wè vid la mo kle ou jis Mod konsa ou deplase tounen alantou. Egzakteman. Sa a se yon eksplikasyon pafè. Ki sa ki Kevin di se ke nou vle endèks nan mo kle a. Nou vle jwenn pèsonaj la num_letters_seen, si ou pral, Men, si num_letters_seen depase longè nan mo kle a, wout la nou jwenn tounen nan ranje ki apwopriye a se nou itilize operatè a Mod nan efektivman vlope alantou. Pou egzanp, tankou nan kout la, mo kle nou an, se bekonn, ak li a 5 lèt long. Men, nou te wè 6 lèt ki nan tèks plenn nou an nan pwen sa a ak chiffres 6. Nou pral fini aksè num_letters_seen a, ki se 6, Mod longè nan mo kle a, 5, epi pou nou ap jwenn 1, ak pou ki sa nou pral fè se nou pral aksè nan andedan kay la karaktè premye nan mo kle nou an nan pwen sa a. Tout dwa, nenpòt kesyon sou Vigenère anvan nou deplase sou? Ou nèg santi trè bon sou sa a? Fre, gwo. Mwen vle asire w ke ou nèg ap resevwa chans pou yo wè kòd ke nou te panse sanble bon epi yo gen chans nan aprann nan men li. Sa a se pral fè dènye a nou pral lè l sèvi avèk espas pou tan an ke yo te, e nou pral fè tranzisyon kounye a, ak mwen pral pou yo ale nan cs50.net/lectures pou nou ka fè yon ti kras nan revizyon egzamen. Pi bon fason pou mwen panse ke yo kòmanse ap fè egzamen revizyon se pou yo vini nan paj sa a Konferans, cs50.net/lectures, ak anba chak nan tit yo semèn, kidonk si mwen gade isit la nan Semèn 0, Mwen wè ke nou gen yon lis sijè ke nou kouvri nan Semèn 0. Si nenpòt nan sijè sa yo sanble abitye avèk wout yo ou ou pral definitivman vle ale retounen lakay yo epi revive nòt yo konferans epi pètèt menm koudèy nan konferans la, gade yo ankò si ou vle yo ka resevwa yon santi yo pou sa k ap pase sou ak chak nan sijè sa yo. Mwen pral di anplis sa a yon ane nan resous ki fre nou te gen se sa yo bout pantalon ke nou te kreye, epi si ou gade nan Semèn 0, nou pa gen tout sijè ki kouvri, men nou te gen byen kèk nan yo, kèk nan yo menm ki Delice, se konsa l ap gade sa yo bout pantalon ankò se yon bon fason fè ou jwenn jiska vitès. An patikilye, mwen pral mete nan yon ploge pou 3 a sou anba a, depi m 'te fè sa yo. Men, si w ap konbat ak binè, Bits, Egzagòn, ki kalite bagay, binè se yon gwo plas kòmanse. ASCII se yon lòt yon sèl sa a, se bon wè tou. Ou ka menm gade m 'nan vitès 1.5x si mwen pral twò lou pou ou. Depi revizyon li a, santi yo lib fè sa. Jis kòmanse reyèlman byen vit, nou pwal yo ale nan yon koup nan pwoblèm sa yo egzamen jis byen vit désabonnement nan sa yo. Pou egzanp, kite a gade nan pwoblèm 16 ki mwen te gen dwa moute isit la sou tablo a. Nou gen sa nou kalkile sa yo nan binè, e nou vle montre nenpòt ki travay. Okay, mwen pral bay sa a yon piki. Ou nèg ta dwe swiv ansanm ak papye, epi nou pral fè sa a vrèman byen vit. Nou vle fè kalkil ki anba la a nan binè. Mwen te gen 00110010. Apre sa, mwen pral ajoute nan li 00110010. Pou matematik la jeni apre ansanm nan kay la, sa a se efektivman miltipliye pa 2. Ann kòmanse. Nou pral swiv algorithm nan adisyon menm ki fè nou byen lè nou ajoute nimewo desimal ansanm. Vrèman diferans la sèlman isit la se ke nou riban tounen otou yon fwa nou gen 1 + 1 olye pou yo yon fwa nou jwenn a 10. Si nou kòmanse soti sou bò dwat la, vrèman byen vit, sa ki nan chif la an premye? [Elèv] 0. >> [Nate H.] 0. Great, chif la dezyèm? [Elèv] 1. [Nate H.] Èske se yon 1 an? 1 + 1 se? [Elèv] 10. [Nate H.] Egzakteman konsa, sa ki se chif a ke mwen ekri dwa anba 2 sa yo ajoute yo ansanm? [Elèv] 1, 0, oswa 0 ak Lè sa a, pote 1 an. [Nate H.] 0 epi mache ak yon 1, egzakteman. Next yon sèl leve, Basil, w ap leve. Ki sa ki nan twazyèm lan? >> [Basil] 1. [Nate H.] 1, pafè. Kevin? [Kevin] 0. >> [Nate H.] 0, Charlotte? [Charlotte] 0. >> [Nate H.] Yeah, epi ki sa mwen dwe fè? [Elèv] 1 an. [Nate H.] Ak sa ki m 'fè? Lè sa a, mwen pote 1 an. Pafè, Sahb? >> [Sahb] Koulye a, ou gen 1. [Nate H.] Lè fè m 'fè anyen isit la? [Sahb] Lè sa a, pou youn nan pwochen ou gen 1 paske ou te pote plis pase 1. [Nate H.] Gran, se konsa isit la nou kapab fini li. Fre. [Elèv] Èske 0 + 0 = 0? 0 + 0 = 0. 1 + 1, tankou ou te di, se 10, oswa 1, 0, olye. 10 se yon pèsonalite misnomer paske m '10 ki vle di kantite a 10, epi li kapris a nan ki jan n ap reprezante li lè n ap ekri li. Nou reprezante ki kantite 2 pa 1 0,, ak nimewo a 10 se yon ti kras diferan. Ki sa ki nan kalite bèl sou binè se ke gen reyèlman yo pa ke anpil ka ou bezwen aprann. Genyen 0 + 0 = 0, 0 + 1 = 1, 1 + 1 se 0, epi Lè sa a, pote yon 1, ak Lè sa a, ou ka wè isit la sou kolòn nan twazyèm de dwat a nou te gen sa a 1, 1, ak 1. Ak 1 + 1 + 1 se yon 1, epi ou pote yon lòt 1. Lè w ap fè binè plis de sa, trè senp. Mwen ta fè yon pi plis koup la sa yo, saniti tcheke tèt nou anvan ou ale nan paske sa se pwobableman yon bagay nou pral wè sou egzamen an. Koulye a, kite a fè yon sèl sa a pwochen kòm byen. Se pou nou fè pwoblèm 17. Nou pral konvèti nimewo a binè yo nan desimal. Mwen te gen 10100111001. Sonje nan videyo a binè sa m 'fè Mwen te mache nan tout yon koup la egzanp, ak mwen te montre ki jan tout bagay ap travay lè w ap fè l 'nan desimal. Lè w ap travay nan reprezantasyon desimal mwen panse ke nou ap nan pwen sa a nan lavi nou se konsa pale nan li ki li nan trè fasil a enteprete sou mekanik yo nan li montre kouman li aktyèlman ap travay. Men, fè yon rapèl rapid, si mwen gen nimewo a 137 sa a vrèman vle di-yo ak ankò, sa a se nan desimal reprezantasyon- nimewo a 137 nan desimal vle di ke mwen gen 1 x 100 + 3 x 10 + 7 x 1. Sa a se tout rete sou ekran an. Lè sa a, si ou gade nan nimewo sa yo dwa isit la, 100, 10 ak 1, ou wè sa a yo ap aktyèlman tout pouvwa a 10. Mwen gen 10 ², 10 ¹, ak 10 a zewo a. Nou gen yon sòt menm jan de bagay sa nan binè, eksepte ke baz nou an, jan nou rele li, se 2 olye pou yo 10. Sa yo 10 ki mwen te ekri desann isit la nan pati anba a, sa a ² 10, 10 ¹, 10 a zewo 10 an, se baz nou an, ak ekspozan an, 0, 1, oswa 2, se enplisit pa pozisyon nan chif la nan nimewo a ke nou ekri. 1, si nou gade nan li, sa a 1 se nan yon pozisyon nan 2nd. 3 a se nan yon pozisyon nan 1ye ane, ak 7 an se nan yon pozisyon nan 0th. Sa a se kijan nou jwenn ekspozan sa yo divès kalite pi ba a pou baz nou an. Apre tout bagay sa yo we'll aktyèlman-a, ou konnen ki sa? Nou pral fè-kote t 'bouton defèt mwen an ale? Gen li ale. Mwen renmen sa a defèt bagay sa yo. Apre sa mwen panse pou m 'omwen fason ki pi fasil yo kòmanse konvèti yon nimewo binè oswa yon nimewo ekzadesimal kote baz la se 16 epi yo pa 10 oswa 2 se ale pi devan epi ekri deyò baz ak ekspozan pou tout nan nimewo ki nan nimewo binè mwen nan tèt la. Si nou kòmanse de gòch a dwat ankò, ki yon jan counterintuitive, Mwen pral chanje tounen nan nwa isit la, nou gen 2 an nan pozisyon an 0th, ak Lè sa a, nou gen 2 ¹, 2 ², ak Lè sa a, 2 a 3 an, 2 a 4, 2 an a 5 an, 6, 7, 8, 9, ak 10. Nimewo sa yo Mwen te ekri soti, yo tout ekspozan yo. Mwen sèlman te ekri baz yo isit la nan 3 nan premye jis pou espas. Nan pwen sa a mwen pral ale pi devan epi mwen aktyèlman ale nan efase bagay la ke nou te fè nan desimal, si se oke. Ou te tout te resevwa sa. Moun sa yo ki nan nou ap gade sou entènèt mwen asire w yo pral kapab remonte mwen si ou ta renmen. Oblije chanje tounen nan plim la. Koulye a, sa nou kapab fè-si ou nèg yo pa totalman jiska pi vit sou pouvwa ou nan 2, sa a, se totalman fre. Li k ap pase. Mwen konprann. Mwen yon fwa te gen yon entèvyou travay kote mwen te di mwen ta dwe konnen tout pouvwa nan 2 moute nan 2 a 30 an. Li pa t 'yon travay mwen te resevwa. Anyway, ou nèg ka ale pi devan ak fè matematik la isit la, Men, se avèk binè li pa vrèman fè sans, ak ni li fè sans avèk desimal oswa ekzadesimal swa, bezwen fè matematik la konnen ki kote ou gen zewo. Ou ka wè mwen gen 0 isit la, yon 0 isit la, 0 isit la, 0 isit la, 0 isit la, 0 isit la. Poukisa ta ka li pa fè sans nan fè matematik aktyèl la kalkile pouvwa ki apwopriye a nan 2 pou pozisyon sa? Egzakteman, tankou Charlotte di, li pral 0. Ta ka kòm byen sove tèt ou tan an si kalkile pouvwa nan 2 se pa kostim fò ou yo. Nan ka sa a nou sèlman bezwen kalkile li pou 2 a 0 a ki se-? [Elèv] 1. [Nate H.] 1, 2 a 3 an ki se-? [Elèv] 8. >> [Nate H.] 8. 2 a 4 an? [Elèv] 2. Mwen regrèt, 1. [Nate H.] 2 a 4 la se 16, egzakteman. 2 a 5 an, Kevin? >> 32. [Nate H.] 32, 2 a 8 an? [Elèv] 32 x 8, 256. [Nate H.] pafè. Ak 2 a 10 an? [Elèv] 1024. [Nate H.] Yeah, 1024. Yon fwa nou te gen nimewo sa yo nou ka rapò kantite yo tout yo. E sa se kote li vrèman enpòtan fè yon koup la bagay sa yo. Se yon sèl ale ralanti ak tcheke travay ou. Ou ka di ke gen yon 1 nan fen nan nimewo sa a, Se konsa, mwen ta dwe definitivman jwenn yon nimewo enpè kòm rezilta m 'yo, paske tout sa yo lòt pwal gen menm nimewo bay ke li nan yon nimewo binè. Bagay a lòt fè se si ou jwenn yo pwen sa a nan egzamen an ak ou te ekri li soti sa a byen lwen ak w ap kouri soti nan tan gade nan ki kantite pwen ke pwoblèm sa a vo. Pwoblèm sa a, kòm ou kapab wè-si mwen baskile tounen nan laptop mwen vrèman byen vit- pwoblèm sa a se vo 2 pwen, se konsa sa a se pa sòt nan nan adisyon ou ta dwe ale atravè tout, si w ap reyèlman fòse pou tan. Men, nou pral chanje tounen nan iPad a, epi nou pral ale nan li vrèman byen vit. Mwen renmen fè chif yo ti premye paske mwen jwenn ke pi fasil. Mwen renmen 32 ak 8 paske yo ale ansanm trè byen fasil, e nou jwenn 50. 16 ak 1 vin 17. Gen nou jwenn 57, ak Lè sa a, nou ka fè rès la nan sa a, se konsa nou ka fè 57, 156. Vini non sou. Monchè, byen, kite la wè. Nou te gen 57, 256, ak 1024. Nan pwen sa a, mwen ta pito jis ale nan. Mwen pa gen okenn endis. Mwen byen klè bezwen li moute sou sa a. 7, 6, ak 4, ou jwenn 17. 1, 5, 5, 2, 13. Lè sa a, nou jwenn 3, ak Lè sa a, nou jwenn 1. 1337. Pak ze, okenn moun? Nenpòt moun rekonèt nonb sa a? Chris rekonèt nimewo a. Kisa sa vle di, Chris? [Chris] lèe. Lèe, kidonk si w gade nan sa a, li sanble lèe. Bagay pirataj. Gade deyò pou ki kalite bagay sou A. Kilès la oswa egzamen an, olye. Si ou wè ki kalite bagay ak w ap mande "Huh," ki ta ka aktyèlman vle di yon bagay. Mwen pa konnen. David renmen mete l pous Li se yon bon fason yo saniti tcheke li. Tankou oke, mwen ka wè sa ki pral sou. Sa a se Semèn 0/Week 1 bagay. Si nou chanje tounen nan konpitè pòtatif nou kounye a, rale soti, epi yon koup la lòt bagay. Genyen nan ASCII, ki nou te toujou ap fè yon anpil nan ak ansanm sa yo, pwoblèm. Sa a nosyon nan kapital A. Ki sa ki ki vrèman? Lè konnen li nan nonb antye relatif desimal la. 65 se sa ki li nan mappé nan tablo a ASCII, ak sa a, se poutèt sa ki jan òdinatè a ekri li, ak sa a, se ki jan nou ve yo te jwenn lwen ak aktyèlman ekri kapital la karaktè A ak karaktè nan miniskil yon nan kèk nan sa yo solisyon yo ak aparèy televisyon HD pwoblèm ke ou ve yo te fè a. Yon koup la lòt bagay. Nou gen deklarasyon, ekspresyon Boolean, kondisyon, pasan, varyab ak fil. Moun sa yo ki tout yo sanble yo fè sans pou pati ki pi? Gen kèk nan sa a tèminoloji se yon fenki ti kras nan fwa. Mwen renmen panse a yon deklarasyon kòm pou yon bagay an ki fini ak yon virgules pi pati. Deklarasyon tankou x = 7, ki etabli yon varyab, prezimableman rele x = 7. Prezimableman x se tou yon kalite ki ka magazen nimewo a 7, Se konsa li yon int oswa pètèt flote yon oswa yon kout oswa yon Char, yon bagay tankou sa. Yon ekspresyon Boolean a lè l sèvi avèk sa yo doub egal ak bang lan egal a oswa egal a pa, mwens pase, ki pi konsekan pase, mwens pase oswa egal a, tout kalite sa yo ki an bagay. Kondisyon Lè sa a, se si lòt deklarasyon. Mwen ta sonje sa ke ou pa kapab gen yon lòt bagay san li pa yon korespondan si. Menm jan an tou, ou pa kapab gen yon lòt bagay si san li pa yon korespondan si. Pasan, sonje kalite sa yo 3 nan pasan nou ve yo te rakle nan ou pou koup la dènye nan seksyon epi li kouche pwoblèm. Sèvi ak pandan y ap lè w ap vin opinyon itilizatè, lè l sèvi avèk pandan y ap pasan jouk yon kondisyon patikilye se vre, ak Lè sa a, lè l sèvi avèk sa yo pou pasan si ou bezwen konnen ki iterasyon nan riban an w ap kounye a sou ki jan pou mwen panse sou li. Oswa si w ap fè yon pou chak karaktè nan yon fisèl mwen vle fè yon bagay, pou chak eleman nan yon etalaj mwen vle fè yon bagay ak sa yo ki eleman. Threads ak evènman. Sa yo, nou pa t 'kouvri sa fòmèlman nan C, men sonje sa a nan grafouyen. Sa a se nosyon a ki gen Scripts diferan. Sa a se tou sa a nosyon nan difize yon evènman. Gen kèk moun ki pa t 'sèvi ak difize nan pwojè yo okòmansman, ki se totalman fre, men sa yo, se 2 diferan fason pou manyen pwoblèm sa a pi gwo yo rele konkouran, ki se ki jan ou jwenn pwogram yo egzekite oswa w pèdi egzekite nan menm tan an? Travay diferan kouri pandan y ap lòt travay yo tou kouri. Sa a se fason sistèm opere ou sanble nan travay. Sa a se poukisa menm si, pou egzanp, Mwen te gen navigatè mwen kouri, mwen kapab tou vire sou Spotify ak jwe yon chante. Sa a se plis nan yon bagay konseptyèl ekspresyon yo konprann. Mwen ta pran yon gade nan fil yo kout si ou ta renmen aprann plis sou sa. Ann gade pou wè, mwen kwè gen ta ka fèt yon yon pwoblèm sa a sou nan youn nan sa yo. Yon lòt fwa ankò, mwen panse ke fil ak evènman yo se pa yon bagay ke nou pral kouvri nan C jis paske li nan siyifikativman pi difisil pase nan grafonyen moun. Ou pa ta dwe enkyete sou li a, men definitivman konprann konsèp yo, konprann ki sa k ap pase. Anvan nou deplase sou li a, nenpòt kesyon sou Semèn 0 materyèl? Tout moun santi trè bon? Varyab konpreyansyon ak sa ki yon varyab se? Deplase sou. Semèn 1. Yon koup de bagay sa yo isit la ki pa te patikilyèman kouvri nan revizyon an egzamen nesesèman epi tou li gen plis konseptyèl bagay yo reflechi sou. Premye a se sa a nosyon de sa ki sous kòd, konpilateur ak kòd objè yo ye. Nenpòt moun? Basil. Èske objè kòd-Mwen vle di kòd sous se ki sa ou mete nan sonnen, ak kòd objè a se sa ki sonnen mete deyò pou ke òdinatè ou a kapab li pwogram nan. Egzakteman. Kòd Sous se kòd la C ke ou aktyèlman tape yo. Kòd objè se ki sa ou jwenn soti nan sonnen. Li nan 0s la ak 1S nan ki fòma binè. Lè sa a, kisa k ap rive se lè w gen yon pakèt moun sou dosye objè, di w ap konpile yon pwojè oswa nan yon pwogram ki sèvi ak dosye miltip kòd sous, ki pa konvansyon yo bay yo. ekstansyon an dosye c. Se poutèt sa nou gen caesar.c, vigenère.c. Si w ap ekri Java pwogram ou ba yo ekstansyon an. Java. Pwogram Piton gen ekstansyon an. Pi souvan. Yon fwa ou gen miltip. C dosye, ou konpile yo. Rezone krache soti tout bagay sa a binè tenten. Lè sa a, paske ou se sèlman vle 1 pwogram ou gen lyen ki Linkshere tout moun sa yo objè depoze ansanm nan 1 dosye ègzèkutabl. Sa a se tou sa ki pase lè ou itilize bibliyotèk la CS50, pou egzanp. Bibliyotèk la CS50 se toude ki. H dosye header pou w li, ki # includecs50.h. Lè sa a, li la tou yon binè dosye espesyal bibliyotèk ki nan te konpile ki se 0s ak 1, e ke-l drapo, kidonk si nou tounen nan Espas nou yo ak nou gade vrèman byen vit nan sa k ap pase sou isit la, lè nou gade lòd rezone nou an, ki sa nou te gen se sa a se dosye sous kòd nou isit la menm. Sa yo se yon pakèt moun sou drapo du. Lè sa a, nan fen a trè, sa yo L-drapo lyen an nan dosye yo binè aktyèl pou 2 sa yo nan bibliyotèk, nan bibliyotèk la CS50 ak Lè sa a, bibliyotèk la matematik. Konprann chak kalite bi dosye ' nan pwosesis la konpilasyon se yon bagay ki ou pral vle pou kapab bay omwen yon BECA de wo nivo. Kòd Sous vini pous kòd objè soti. Dosye kòd objè konekte ansanm, epi ou jwenn yon bèl, ègzèkutabl dosye-a. Fre. Sa a se tou kote ou ka jwenn erè nan pwen miltip nan pwosesis la konpilasyon. Sa a se kote, pou egzanp, si ou pran sa a drapo ki lye ak, drapo a CS50, epi ou oblije li yo nan espas oubyen lè w ap kouri kòd ou a, sa a se kote ou pral jwenn yon erè nan faz la ki lye ak, ak Linkshere a pral di: "Hey, ou rele yon GetString fonksyon sa a, se nan bibliyotèk la CS50. " "Ou te di m 'li te nan bibliyotèk la CS50, epi mwen pa ka jwenn kòd la pou li." Sa a kote ou gen fè rapò ant l 'nan, ak ki nan separe ki sòti nan yon erè du paske du a se kap nan sentaks ak ki kalite bagay. Li nan bon konnen sa k ap pase sou lè. Lòt bagay yo konnen sou. Mwen ta ka di ou definitivman vle pran yon gade nan kout la sou typecasting fè lòt bò larivyè Jouden a konprann ki sa antye se anba kapo machin lan, ki sa charaktèr yo se anba kapo machin lan. Lè nou pale sou ASCII e nou aktyèlman gade nan tablo a ASCII, ki sa ki nan ap fè an, ap ban nou yon anba gade nan Hood nan ki jan òdinatè a aktyèlman reprezante kapital A ak 7 nan chif ak yon vigil ak yon mak kesyon. Òdinatè a tou te gen fason espesyal ki reprezante nimewo a 7 kòm yon antye relatif. Li te gen yon fason espesyal reprezante ki kantite 7 kòm yon nimewo pwen k ap flote, ak sa yo se trè diferan. Typecasting se ki jan ou di òdinatè a "Hey, mwen vle ou konvèti soti nan yon reprezantasyon nan yon lòt reprezantasyon. " Poukisa nou pa nou pran yon gade nan sa. Mwen ta tou pran yon gade nan kout la sou bibliyotèk ak kout la sou konpilateur. Moun sa yo ki pale de pwosesis la nan konpilasyon, ki sa yon bibliyotèk se, epi ale sou kèk nan kesyon sa yo ke ou ta ka jwenn mande. Kesyon sou materyèl Semèn 1? Èske gen nenpòt sijè nan isit la ki sanble redoutable ou ta renmen yo kouvri? Mwen ap eseye soufle nan pi fò nan sijè sa yo pi bonè pou nou ka jwenn yo endikasyon ak fè yon ti kras nan rkursyon. Panse? Nenpòt bagay yo kouvri? Tan pou kèk chokola petèt? Ou nèg yo ap travay atravè li. Mwen pral kenbe siwote sou kafe m 'yo. Semèn 2. Bon rele, bon apèl. Nan Semèn 2 nou te pale yon ti kras plis sou fonksyon. Nan ansanm sa yo, premye pwoblèm kèk nou pa t 'reyèlman ekri nenpòt fonksyon nan tout lòt pase ki fonksyon? [Elèv] Main. >> Main, egzakteman. Se konsa, nou te wè kostim yo diferan ki prensipal mete-l. Genyen yon an nan ki li pran pa gen okenn agiman, ak nou jis di anile nan ant parantèz yo, ak Lè sa a, gen nan yon sèl nan lòt kote nou vle pran m 'agiman liy lòd, epi kòm nou te wè, sa se kote ou gen int arg ak tout kòd etalaj argv oswa kounye a ke nou te aktyèlman ki ekspoze fisèl yo dwe a * Char ke li se nou pwal kòmanse ekri li kòm Char argv * ak Lè sa a, parantèz. Nan Set Pwoblèm 3, ou nèg te wè yon pakèt moun sou fonksyon, epi ou aplike yon pakèt moun sou fonksyon, trase, leve kanpe, goumen. Prototip yo te tout ekri la pou ou. Ki sa mwen vle pale de isit la ak fonksyon vrèman byen vit se ke gen 3 pati yo nenpòt lè ou ekri yon fonksyon. Ou gen presize kalite a retounen nan fonksyon an. Ou gen presize yon non pou fonksyon an, epi Lè sa a, ou gen presize agiman lis la oswa nan lis la paramèt. Pou egzanp, si m 'te ekri yon fonksyon a sòm moute yon pakèt moun sou nonm antye relatif ak Lè sa a, tounen vin jwenn mwen sòm total la sa ki ta kalite retou mwen si mwen te vle rapò kantite nonm antye relatif ak Lè sa a, retounen sòm la? Lè sa a, non an nan fonksyon an. Si m 'ale pi devan epi ekri nan vèt, nan pati sa a se tip lè li retounen. Nan pati sa a se non an. Lè sa a, nan ant parantèz se kote m 'ba agiman yo, souvan abreje kòm arg, pafwa yo rele parameters pou paramèt. Men, si ou gen youn, ou jis presize yon sèl la. Si ou gen plizyè ou separe chak youn ki gen yon vigil. Epi pou chak agiman ou ba li 2 bagay ki-Kevin? [Kevin] Ou gen bay kalite ak Lè sa a, non an. Lè sa a, non an, ak non an se non an ki w ap ale nan itilize pou fè referans a ki agiman ki nan fonksyon an sòm, nan fonksyon an ke w ap kounye a ekri. Ou pa gen an-pou egzanp, si mwen pral rapò kantite leve, di, yon etalaj de nonm antye relatif we'll-fè int etalaj, epi mwen pral bay tèt mwen kèk aparèy òtopedik Curly gen- Lè sa a, lè m 'pase yon etalaj fonksyon an sòm Mwen pase l 'nan pozisyon an premye nan lis la agiman. Men, etalaj la ke mwen pase nan pa bezwen gen ArR a non. ArR a pwal ki jan mwen gade nan ki agiman ki nan kò a nan fonksyon an. Bagay a lòt ke nou bezwen pran an kont, ak sa a se yon ti kras diferan de fonksyon, men mwen panse li nan yon pwen ki enpòtan yo, se sa yo nan C lè m ap ekri yon fonksyon tankou sa a Kouman pou mwen konnen ki jan anpil eleman yo nan sa a etalaj? Sa a se yon ti jan nan yon kesyon Trick. Nou te pale de sa a yon ti jan nan seksyon semèn pase a la. Kouman pou mwen konnen ki kantite eleman andedan yon etalaj nan C? Èske gen yon fason? Li sanble ke gen nan pa gen fason yo konnen. Ou gen yo pase l 'nan separeman. Gen yon Trick ke ou ka fè si w ap nan fonksyon an menm nan ki te etalaj la te deklare, epi ou ap travay ak yon etalaj chemine. Men, ke se sèlman travay si w ap nan fonksyon an menm. Yon fwa ou pase yon etalaj nan yon lòt fonksyon oswa si ou te deklare yon etalaj epi ou mete sa etalaj sou pil wòch la, ou te itilize malok  ak ki kalite bagay, Lè sa a, tout parye yo la. Lè sa a, ou gen aktyèlman yo pase alantou yon agiman espesyal oswa paramèt yon lòt di ou ki jan gwo etalaj la se. Nan ka sa a, mwen ta vle sèvi ak yon vigil-I'm regrèt sa, li pral nan ekran an isit la- e mwen 'D pase nan yon lòt agiman  ak rele li int Len pou longè a. Youn nan bagay ki ta ka moute vin sou egzamen an ap mande w ekri oswa aplike yon fonksyon patikilye ki rele yon bagay. Si nou pa ba ou pwototip a, se konsa bagay sa a tout antye isit la, sa a se dezòd antye rele deklarasyon an fonksyon oswa pwototip fonksyon an, sa a se youn nan bagay ki premye ke ou pral vle klou desann si li pa nan bay ou touswit sou egzamen an. Jwe fent la lòt mwen te aprann se ke di nou fè ba ou yon pwototip pou yon fonksyon, epi nou di, "Hey, ou te gen yo ekri li." Anndan aparèy òtopedik yo Curly ki di ou gen sou egzamen an si w remake ke gen se yon kalite retou yo e ou remake ke retou kalite a se yon lòt bagay pase anile, ki vle di ke fonksyon an pa retounen anyen, Lè sa a, yon sèl bagay ou definitivman vle fè se ekri kèk sòt de deklarasyon retounen nan fen la anpil nan fonksyon an. Tounen non, ak nan ka sa a, nou pral mete yon vid paske nou vle ranpli nan vid la. Men, sa a vin ou panse nan yon dwa chemen sou ki jan mwen pral pwoche bò kote pwoblèm sa a? Epi li fè w sonje w ap ale nan gen retounen yon valè moun kap rele a nan fonksyon an. Yeah. >> [Elèv] style aplike lè n ap ekri kòd sou egzamen an? Tankou mark ak ki kalite bagay? >> [Elèv] Yeah. Non, pa kòm anpil. Mwen panse ke yon anpil nan-sa a se yon bagay nou pral klarifye sou egzamen an nan jou a nan, men anjeneral mangonmen sou # genyen ladan ak ki kalite bagay, li nan kalite deyò. [Elèv] Èske ou bezwen fè kòmantè kòd ekri alamen ou a? Èske ou bezwen fè kòmantè kòd ekri alamen ou a? Kòmantè se toujou bon, si w ap enkyete w sou kredi yon pati nan oswa ou vle kominike entansyon ou a elèv klas la. Men mwen menm, ankò, yo pral klarifye sou egzamen an pwòp tèt li ak nan jou a egzamen, men mwen pa kwè ke ou pral oblije ekri kòmantè, pa gen okenn. Tipikman se pa sa, men li la definitivman sòt nan de bagay sa kote ou kapab kominike entansyon ou a, renmen "Hey, sa a se kote mwen pral avèk li." Epi pafwa ki ka ede ak kredi yon pati nan. Fre. Basil. [Basil] Ki sa ki nan diferans ki genyen ant deklare, di, int lang nan agiman yo oswa paramèt kont deklare yon varyab nan fonksyon an? Wow, kafe desann trachea la. [Basil] Tankou ki bagay sa yo nou vle mete nan agiman. Yeah, ki nan yon kesyon gwo. Ki jan ou chwazi pou ou ki sa bagay sa yo ou vle mete nan agiman yo kont sa ki bagay ou ta dwe fè andedan nan fonksyon an? Nan ka sa a nou tou de nan sa yo enkli kòm agiman paske yo ap yon bagay ki moun ki va ki pral sèvi avèk fonksyon an sòm bezwen presize bagay sa yo. Fonksyon an sòm, tankou nou te pale de, pa gen okenn jan pou konnen ki jan gwo etalaj la se li vin soti nan moun ki rele li yo oswa moun ki va la lè l sèvi avèk fonksyon an sòm. Li pa gen okenn fason pou konnen ki jan gwo ki etalaj se. Rezon ki fè nou pase nan sa a longè dwa isit la kòm yon agiman se paske sa se yon bagay ke nou ap fondamantalman di moun kap rele a nan fonksyon an, Nenpòt moun ki ki pral sèvi avèk fonksyon an sòm, "Hey, pa sèlman ou gen ba nou yon etalaj nan antye, nou menm tou nou oblije di nou ki jan gwo etalaj la ke ou te ban nou se. " [Basil] Moun sa yo ki pral tou de ka agiman liy komand yo ye? Non, sa yo, se agiman aktyèl ke ou ta pase fonksyon an. Kite m 'fè yon paj nouvo isit la. [Basil] Tankou non ta pase- [Nate H.] Si mwen gen int prensipal (san valè), ak mwen pral mete nan 0 retounen m 'desann isit la nan pati anba a, epi di mwen vle rele fonksyon an sòm. Mwen vle di Int x = sòm (); Pou itilize fonksyon an sòm mwen gen yo pase nan tou de etalaj la ki mwen vle rapò kantite moute ak longè a nan etalaj la, se konsa sa a se kote asepte mwen te gen yon seri antye, di mwen te gen int numbaz [] = 1, 2, 3, kalite itilizasyon ki te rache moute sentaks dwa la, Lè sa a, ki sa mwen ta fè se nan sòm Mwen ta vle pase nan tou de numbaz ak nimewo a 3 di fonksyon an sòm "Oke, isit la nan etalaj la mwen vle nou rapò kantite." "Isit la nan gwosè li yo." ki fè sans? ki reponn kesyon ou an? Nan plizyè fason li fè sa paralèl sa n ap fè avèk prensipal lè nou gen agiman yo liy lòd. Yon pwogram tankou Seza tande kòz kalkile, pou egzanp, ki te bezwen agiman liy lòd pa ta kapab fè anyen. Li pa ta konnen ki jan yo ankripte si ou pa t 'janm di l' sa ki kle yo sèvi ak oswa si w pa t 'janm di l' sa fisèl ou te vle ankripte. Pouse pou D ', sa a se kote nou te gen 2 mekanism diferan pou pran opinyon nan soti nan itilizatè a yo, pou ki yo pran enfòmasyon ki nan soti nan itilizatè lan. Pou Pwoblèm Fikse 1 nou te wè sa a GetInt, GetString, GetFloat fason nan pouse pou D ', e ke yo rele lè l sèvi avèk kouran an opinyon estanda. Li nan yon ti kras diferan. Li nan yon bagay ke ou ka fè nan yon sèl fwa kòm opoze a lè ou envoke pwogram nan, lè ou kòmanse pwogram nan kouri. Agiman yo liy lòd tout yo espesifye lè ou kòmanse kouri pwogram lan. Nou te ap melanje de tout moun sa yo. Lè nou itilize agiman nan yon fonksyon, li nan anpil tankou agiman liy lòd li prensipal la. Se lè ou envoke fonksyon an ou bezwen di li ki sa egzakteman li bezwen yo nan lòd yo fè travay li yo. Yon lòt bon bagay fè yon gade nan-yo ak mwen pral kite ou gade nan li rezèv nan tan ou a, e li te kouvri nan egzamen an-sa te nosyon nan dimansyon ak varyab lokal kont varyab mondyal. Èske peye atansyon sou sa. Kounye a ke nou ap vin sou yo bagay sa a ak lòt, nan Semèn 3 nou te kòmanse pale sou chèche ak Fouye. Rechèch ak Fouye, omwen nan CS50, se anpil yon entwodiksyon nan kèk nan pati yo nan syans òdinatè plis teyorik. Pwoblèm lan nan rechèch, pwoblèm lan nan Fouye yo gwo, pwoblèm kanonyal. Ki jan ou fè jwenn yon nimewo an patikilye nan yon etalaj de dè milya de nonm antye relatif? Kouman pou w jwenn yon non patikilye andedan yon liv telefòn ki nan ki estoke sou laptop ou a? Se konsa, nou prezante sa a nosyon de fwa kouri asenptotik reyèlman quantifier konbyen tan, ki jan difisil sa yo pwoblèm yo, konbyen tan yo pran yo rezoud. Nan, mwen kwè, egzamen 2011 la gen yon pwoblèm ke mwen panse ke baz byenfonde ki kouvri trè vit, ki se yon sèl sa a, pwoblèm 12. O pa gen okenn, li nan Omega. Isit la nou ap pale tan an kouri pi rapid posib pou yon algorithm patikilye ak Lè sa a, tan an kouri plus posib. Sa a Omega ak O yo se reyèlman jis rakoursi. Yo ap rakoursi notation pou li di konbyen vit nan ka a pi byen posib pral kouri algorithm nou an, ak ki jan ralanti nan ka ki pi mal la posib pral algorithm nou an kouri? Se pou nou fè yon koup la sa yo, ak sa yo yo te tou kouvri nan kout la sou notasyon asenptotik, ki mwen trè rekòmande. Jackson te fè yon travay reyèlman bon. Avèk rechèch binè, nou pale sou rechèch binè tankou se te yon algorithm, epi dabitid nou pale osijè de sa an tèm de gwo O. li yo Ki sa ki O an gwo? Ki sa ki se tan a kouri plus posib pou rechèch binè? [Elèv] N ²? Fèmen, mwen devine menm jan ak sa. Li se yon anpil pi vit pase sa. [Elèv] binè? >> Yeah, binè rechèch. [Elèv] Li nan n log. Log n konsa, sa ki fè sa ki ale n vle di? Li mwatye li chak iterasyon. Egzakteman, se konsa nan ka a plus sa posib, di si ou gen yon etalaj Ranje nan yon milyon nonm antye relatif ak nimewo a ou ap chèche pou se swa eleman an trè premye nan etalaj la oswa eleman nan anpil dènye nan etalaj la. Sonje byen, algorithm nan rechèch binè travay pa gade nan eleman nan mitan, wè si sa a, se match la ke w ap chèche pou. Si li se, Lè sa a, gwo, ou te jwenn li. Nan ka a pi byen posib, ki jan vit fè kouri rechèch binè? [Elèv yo] 1. 1, li lè konstan, gwo O nan 1. Yeah. [Elèv] Mwen gen yon kesyon. Lè ou di ouvri sesyon nan n, ou vle di ki gen rapò ak baz 2, dwa? Wi, se konsa sa a, se bagay la ak lòt. Nou di n boutèy demi lit, ak mwen devine lè m 'te nan lekòl segondè Mwen toujou sipoze ke log te baz 10. Yeah, se konsa wi, ale 2 baz tipikman se sa nou itilize. Yon fwa ankò, pral tounen nan rechèch binè, si w ap chèche pou swa eleman ki nan fen an trè oswa eleman ki nan kòmansman an trè, paske ou kòmanse nan mitan an ak Lè sa a, ou jete kèlkeswa sa ki mwatye pa satisfè kritè yo ke w ap chèche pou yo, epi ou ale nan mwatye nan pwochen ak mwatye nan pwochen ak mwatye kap vini an. Si mwen pou chèche eleman nan pi gwo nan etalaj la nonb antye relatif milyon dola Mwen pral halve li nan pifò boutèy demi lit plen 1 milyon fwa mwen anvan m 'finalman teste ak wè ke eleman nan mwen kap chèche se nan pi gwo a oswa nan endèks la pi wo nan etalaj la, ak ki pral pran boutèy demi lit plen n, ale nan 1 milyon fwa. Sòt jarèt. ou nèg sonje algorithm nan sòt jarèt? Kevin, ou ka ban m 'yon rapèl rapid sou sa ki pase nan algorithm nan sòt jarèt? [Kevin] Fondamantalman li ale nan tout bagay nan lis la. Li sanble nan de a an premye. Si youn nan premye se pi gwo pase yon sèl nan dezyèm li echanj yo. Lè sa a, li konpare dezyèm ak twazyèm, bagay menm, echanj, twazyèm ak katriyèm, tout wout la desann. Pi gwo nimewo pral swiv jiska fen an. Apre yo te fin pasan sepandan anpil w ap fè. Egzakteman konsa, sa ki Kevin di se ke nou pral gade pi gwo nimewo jarèt moute a nan fen etalaj la. Pou egzanp, ou lide mache nou nan egzanp sa a si sa a se etalaj nou an? [Kevin] Ou ap pran 2 ak 3. 3 se pi gwo pase 2, kidonk, ou swap yo. [Nate H.] Dwa, konsa nou boukante sa yo, epi pou nou jwenn 2, 3, 6, 4, ak 9. [Kevin] Lè sa a, ou konpare 3 an ak 6. 3 se pi piti pase 6, kidonk, ou kite yo, ak 6 ak 4, ou ta boukante yo paske 4 se ki pi piti pase 6. [Nate H.] Dwa, se konsa mwen jwenn 2, 3, 4, 6, 9. [Kevin] ak 9 se pi gwo pase 6, kidonk, ou kite l. Epi ou ta tounen nan l 'ankò. [Nate H.] Èske mwen fè nan pwen sa a? >> [Kevin] No Epi poukisa mwen pa fè nan pwen sa a? Paske li sanble se etalaj mwen Ranje. M ap gade li. [Kevin] Ale nan l 'ankò, epi fè sèten ke pa gen okenn plis echanj anvan ou kapab konplètman sispann. Egzakteman, kidonk, ou bezwen kenbe ale atravè tout, epi fè sèten ke pa gen okenn echanj ke ou ka fè nan pwen sa. Se te vrèman jis gen chans, tankou ou te di, ke nou te fini sèlman gen fè 1 pase nan e nou Ranje. Men, fè sa nan ka la, an jeneral nou pral gen aktyèlman fè sa sou yo ak sou ankò. Ak nan reyalite, sa a te yon egzanp sou ka a pi byen posib, tankou nou te wè nan pwoblèm nan. Nou te wè ki te ka a pi byen posib n. Nou te ale nan tan an etalaj 1. Sa ki ka ki pi mal la posib pou sa a algorithm? [Kevin] N ². Ak ki sa sa gade renmen? Ki sa ki ta yon gade etalaj tankou sa ta pran n tan ²? [Kevin] [fèbl] Ranje. Egzakteman, kidonk si mwen te gen etalaj la 9, 7, 6, 5, 2, premye 9 la ta jarèt tout wout la yo. Apre 1 iterasyon nou ta gen 7, 6, 5, 2, 9. Lè sa a, 7 nan ta jarèt moute, 6, 5, 2, 7, 9, ak sou sa ak pou fè. Nou ta gen yo ale nan etalaj nan tout n fwa, epi ou ka aktyèlman jwenn yon ti kras pi presi pase sa a paske yon fwa nou te deplase 9 tout wout la nan moute nan pozisyon dènye li yo posib nou konnen ke nou pa janm gen yo konpare kont ke eleman ankò. Yon fwa nou kòmanse ebulisyon 7 a moute nou konnen ke nou ka sispann yon fwa 7 a se dwa anvan 9 la depi nou te deja konpare 9 la ak li. Si ou fè sa nan yon fason entelijan li pa vrèman, mwen devine, tan sa a anpil. Ou pa ap ale nan konpare tout sa ki posib [fèbl] konbinezon yo chak fwa yon sèl ou ale nan chak iterasyon. Men, toujou, lè nou pale sou sa a mare anwo nou di w ap chèche a n ² konparezon tout wout la nan. Ann al lakay li, li depi nou ap kòmanse yo ka resevwa yon ti kras kout sou tan Mwen ta ka di ou ta dwe definitivman ale nan rès la nan tablo sa a, ranpli li tout soti. Panse a kèk egzanp. Panse a egzanp konkrè. Sa ki nan vrèman sou la men ak itil fè. Trase li deyò. Sa a se sòt nan nan tablo ki jan ou ale nan nan syans òdinatè ou ta dwe reyèlman kòmanse konnen sa yo kè pa. Sa yo se kalite ki nan kesyon ou jwenn nan entèvyou yo. Sa yo se kalite bagay sa yo ki bon yo konnen, epi reflechi sou ka sa yo, kwen, reyèlman lè n ap kalkile konnen kouman ou kapab panse osijè de konnen ke pou jarèt sòt etalaj ki pi mal la posib sòt ak ki se youn ki nan yo nan lòd ranvèse. Endikasyon. Se pou nou pale yon ti kras sou pwent. Nan minit ki sot pase yo nou gen isit la Mwen konnen sa a se yon bagay ansanm ak dosye mwen / O ki se pito nouvo. Lè nou pale sou pwent rezon ki fè yo nou vle pale sou pwent se paske, youn, lè nou ap travay nan C nou yo se reyèlman nan yon nivo san patipri ki ba konpare ak lang ki pi modèn nan pwogramasyon. Nou se aktyèlman kapab manipile varyab yo nan memwa, konnen ki kote yo ap aktyèlman chita nan RAM nou an. Yon fwa ou te pati al nan pran kou sistèm opere ou pral wè ki sa a, se, ankò, kalite yon abstraction. Sa se pa aktyèlman ka-a. Nou gen vityèl memwa ki nan kache sa yo detay nan men nou. Men, pou kounye a ou ka asime ke lè ou gen yon pwogram, pou egzanp, lè ou kòmanse ap kouri pwogram-Seza tande kòz kalkile ou Mwen pral chanje tounen nan iPad mwen vrèman byen vit- ki nan pwogram nan kòmanse trè ou, si ou gen, di, 4 jigokte nan belye mouton sou konpitè pòtatif ou, ou jwenn mete sou kote sa a moso, epi nou ap rele sa a RAM. Epi li kòmanse nan yon kote nou pral rele 0, epi li fini nan yon kote ki nou pral rele 4 jigokte. Mwen vrèman pa ka ekri. Man, se sa ki te rache. Lè pwogram ou an ègzekutra sistèm nan fonksyone carves moute RAM, epi li espesifye diferan segments pou diferan pati nan pwogram ou an ap viv pous Desann isit la nan zòn sa a se kalite yon peyi pesonn pa t 'la. Lè ou ale moute yon ti kras pi lwen isit la ou te gen aktyèlman plas la kote kòd la pou lavi pwogram ou an. Sa kòd binè reyèl, ki dosye ègzèkutabl aktyèlman vin chaje nan memwa lè ou kouri nan yon pwogram, e li ap viv nan segman nan kòd. Ak pwogram ou an kòm ègzekutra processeur a parèt nan segman sa a kòd konnen sa ki se enstriksyon nan pwochen? Ki sa ki se liy nan pwochen nan kòd mwen bezwen egzekite? Genyen tou yon segman done, e sa se kote sa yo konstan fisèl jwenn ki estoke ke ou ve yo te lè l sèvi avèk. Lè sa a, pi lwen moute gen nan sa a kote yo rele pil wòch la. Nou gen aksè memwa nan la lè l sèvi avèk malok, ak Lè sa a, nan direksyon pou tèt la anpil nan pwogram ou an gen nan chemine a, ak sa a, se kote nou ve yo te jwe pou pi fò nan kòmansman an. Sa a se pa sou yon echèl oswa anyen. Yon anpil nan sa a se trè machin depandan, fonksyònman sistèm depandan, men sa a se relativman ki jan bagay yo jwenn chunked yo. Lè ou kouri nan yon pwogram, epi ou deklare yon varyab rele x- Mwen pral trase yon lòt bwat desann anba a, ak sa a a pwal RAM kòm byen. Apre sa, mwen pral gade. Nou pral trase liy ak dan pou montre pou sa a se jis yon seksyon ti RAM epi se pa tout nan li kòm nou trase nan tèt la. Si m 'deklare yon varyab nonb antye relatif yo rele x, Lè sa a, sa m 'aktyèlman jwenn se yon kat ki se ki estoke nan tab la senbòl nan pwogram mwen an ki konekte x la non pitit mwen an nan rejyon sa a nan memwa ke mwen te trase dwa isit la ant ba ki vètikal. Si mwen gen yon liy nan kòd nan pwogram mwen an ki di x = 7 processeur a konnen "O, oke, mwen konnen ke x lavi nan sa a kote nan memwa." "Mwen pral ale pi devan epi ekri yon 7 la." Ki jan li konnen ki sa ki kote sa a se nan memwa? Oke, se te tout fè nan moman konpile. Du a pran swen de allocation kote chak nan varyab yo ap pwal ale epi kreye yon kat espesyal oswa olye konekte pwen yo ant yon senbòl ak ki kote li pral, non yon varyab nan ak ki kote li pral rete nan memwa. Men, li vire soti ke nou ka aktyèlman jwenn aksè li nan pwogram nou kòm byen. Sa a vin enpòtan lè nou kòmanse pale sou kèk nan estrikti yo done, ki se yon konsèp ke nou ap ale nan entwodui pita sou. Men, pou kounye a, ki sa ou kapab konnen sa sa mwen kapab kreye yon konsèy sa a kote, x. Pou egzanp, mwen kapab kreye yon varyab konsèy. Lè nou kreye yon varyab konsèy nou itilize notasyon nan zetwal. Nan ka sa a, sa a di mwen pral kreye yon konsèy nan yon int. Li se yon kalite jis tankou nenpòt ki lòt. Nou bay li yon varyab tankou y, ak Lè sa a, nou mete l 'egal a adrès la, nan yon adrès. Nan ka sa a, nou ka mete y nan pwen x lè yo pran adrès ki nan x, ki nou fè ak sa a Comercial, ak Lè sa a, nou mete y nan pwen li. Ki sa sa esansyèlman se si nou gade nan RAM nou sa a kreye yon varyab ki apa a. Li nan ale nan rele li y, ak ki lè liy sa a nan kòd ègzekutra li la aktyèlman ale nan kreye yon konsèy ti kras ki nou tipikman trase kòm yon flèch, ak li kouche y nan pwen x. Wi. [Elèv] Si x se deja yon konsèy, ou ta jis fè int * y = x olye pou yo gen comercial a? Wi. Si x se deja yon konsèy, lè sa a ou ka mete 2 endikasyon egal a chak lòt, nan ka sa a y pa ta lonje dwèt sou x, men li ta lonje dwèt sou tou sa x se lonje dwèt yo. Malerezman, nou ap soti nan tan. Ki sa ki mwen ta ka di nan pwen sa a, nou ka pale sou sa a offline, Men, m 'ta di kòmanse travay nan pwoblèm sa a, # 14. Ou ka wè gen nan deja yon ti jan plen nan pou ou isit la. Ou ka wè ke lè nou deklare 2 endikasyon, int * x ak * y, ak sonje ke lonje dwèt * nan pwochen varyab la te yon bagay ki te fè ane pase a. Li sanble ke sa a se menm jan ak sa n ap fè ane sa a. Li pa enpòtan ki kote ou ekri a * lè w ap deklare konsèy la. Men, nou te ekri * nan pwochen kalite a paske ki fè li trè klè ke w ap deklare yon varyab konsèy. Ou ka wè deklare pwent yo 2 a ba nou 2 bwat. Isit la, lè nou mete x egal a malok ki sa sa a ap di se mete sou kote memwa nan pil wòch la. Sa a se bwat ti kras dwa isit la, sa a sèk, ki chita sou pil la. X la se lonje dwèt li. Remake byen ke y ap toujou pa lonje dwèt anyen. Pou jwenn memwa-nan magazen nimewo a 42 nan x nou ta itilize sa notasyon? [Elèv] * x = 42. Egzakteman, * x = 42. Sa vle di swiv flèch la, li voye jete 42 an la. Isit la kote nou mete y ak x nou te lonje dwèt y x. Yon fwa ankò, sa a se jis tankou sa ki Kevin di kote nou mete y egal a x. Y se pa sa lonje dwèt x. Olye de sa, li nan lonje dwèt nan sa x se lonje dwèt li a kòm byen. Lè sa a, finalman nan bwat sa a dènye gen 2 bagay sa yo posib ke nou te ka fè. Youn nan se nou te ka di * x = 13. Bagay a lòt se nou te ka di-Alex, ou konnen ki sa nou ta ka fè isit la? Ou kapab di * x = 13 oswa- [Elèv] Ou kapab di Int kèlkeswa sa. [Nate H.] Si sa a yo te refere yo kòm yon varyab int nou ka fè sa. Nou te ka di tou * y = 13 paske yo te ap tou de montre nan plas la menm, pou nou te kapab itilize swa varyab a rive. Yeah. >> [Elèv] Ki sa ki ta li sanble si nou jis di x int se 13? Ki ta ka deklare yon varyab nouvo rele x, ki pa t 'travay. Nou ta gen yon kolizyon paske nou te deklare x yo dwe yon konsèy moute isit la. [Elèv] Si nou jis te gen ki deklarasyon pou kont li sa ki ta li sanble an tèm de sèk la? Si nou te gen x = 13 Lè sa a, nou ta gen yon bwat, ak olye ke gen yon flèch vini soti nan bwat la nou ta trase li kòm jis 13 yon. [Elèv] Nan bwat la. Oke. Mèsi pou l ap gade, ak bon chans sou kwiz 0. [CS50.TV]