Oratè 1: Tout dwa. Byenveni tounen. Sa a se Semèn De nan CS50, e nou gen konsa byen lwen te lè l sèvi avèk fonksyon men lajman pran yo pou yo akòde. Nou te itilize printf ki te gen nan efè segondè nan enprime bagay sa yo sou ekran an. Nou te itilize jwenn-Int, jwenn flote. Men, sa ki si ou aktyèlman vle kreye fonksyon pwòp ou a, tankou kèk ladan ou ta ka te deja kòmanse fè pou Set Pwoblèm Yon, menm si pa entèdi nesesè? Oke, kite la ale pi devan epi revize ki pwoblèm nan jis mande itilizatè a pou non yo ak enprime yon bagay sou la ekran, men eseye faktè soti kèk nan menm aksyon an ke nou te gen wè nan Kòd nou konsa byen lwen. Se konsa, pa sa mwen vle di sa ki annapre yo. Mwen pral ale pi devan epi kreye yon nouvo pwogram, jis rele li hello.c kòm dabitid. Mwen pral ale pi devan epi bay tèt mwen gen ladan yo estanda io.h nan tèt la. Mwen pral tou bay tèt mwen preemptively bibliyotèk la CS50 pou ke Mwen pa jwenn rele nan pa du la. Epi, koulye a mwen pral ale pi devan ak deklare Int, prensipal la, anile. Lè sa a, nan isit la, sa a se kote mwen vle yo kòmanse konfye fonksyonalite kèk fonksyon lòt pou mwen menm mwen menm ki pral ekri men sa pa kounye a egziste. Pou egzanp, sipoze ke mwen te vle ekri yon fonksyon ki pèmèt m 'nan enprime soti hello, vigil, ak Lè sa a, Non kèk itilizatè a. Olye ke kontinye fè printf hello,% s, li pa t li dwe nice si te gen jis yon fonksyon rele pa printf men non ekri an lèt detache? Se konsa, nan lòt mo, mwen vle pou kapab ekri yon pwogram ki fè yon ti kras yon bagay tankou sa. Premyèman, mwen pral di printf ou Non, kidonk pouse itilizatè a ban m 'non li oswa li, ak Lè sa a, mwen se pwal itilize s yo fisèl abitye nan deklare yon fisèl. Ban m 'yon varyab nan fisèl kalite, rele li a, ak magazen nan ki nan lakòz pou rezidan yo rele jwenn fisèl. Men koulye a, nan semèn sot pase yo, mwen ta gen yon ti jan tediously fè hello,% s / n. Ak nan lòt mo, nou te wè sa a egzanp yon pakèt moun sou fwa, ak li nan yon trivial egzanp paske gen sèlman yon sèl liy nan Kòd se konsa li a vrèman pa yon gwo kontra kenbe tape nan ankò. Men, si ke sa a liy nan Kòd aktyèlman yo te vin tounen yon chay, ak li pa yon sèl liy nan Kòd men li la 10 liy nan Kòd yon semèn koup soti nan kounye a, ak w ap jis ap resevwa fatige nan w kopye e kole oswa retyping ki Kòd menm. Pa ta bon pou li olye pou yo fè printf hello,% s ak pou fè, pa t 'vle li dwe nice si te gen jis yon fonksyon rele ekri ak lèt ​​detache ki pran yon agiman - nan lòt mo, li pran opinyon - ak Lè sa a virgules. Se konsa, ki fonksyon, pa t 'vle li dwe nice si ki te egziste? Lè sa a, mwen pa ta gen enkyete sou sa printf se, ki sa ki% s ak tout sa yo complexités ki pa tout sa ki enteresan. Yo se itil. Se konsa, ekri ak lèt ​​majiskil, malerezman, pa t ' envante kèk 40 ane plis de sa. Pa gen moun ki te panse yo ekri li. Men, sa a bote nan li te gen yon lang programmation, jis tankou nan Grafouyen ou ka defini blòk koutim, se konsa nan C ak sa ki pi lang nenpòt ki, ou kapab defini fonksyonalite pwòp ou a, kapab ou defini fonksyon pwòp ou yo. Se konsa, menm si nou jwenn prensipal pa otomatikman pou gratis, nou ka deklare fonksyon pwòp nou yo. Se konsa, mwen pral fè kèk chanm moute isit la moute tèt, ak mwen pral deklare mwen pwòp fonksyon ki nan pral gade yon ti kras etranj nan premye men nou pwal vini tounen nan sa a depi lontan anvan. Mwen pral di anile, kidonk ki endike fonksyon sa a fè yon bagay, gen yon efè segondè, men li pa retounen yon bagay m 'nan a menm fason ki jwenn Int oswa jwenn fisèl tèt li ap fè. Ak mwen se pral bay fonksyon sa a yon Non Non ekri an lèt detache, ak mwen pral presize ke sa a nèg a pral pran yon kòd, ak mwen pral rele ki Non fisèl. Mwen te kapab rele li anyen mwen vle, men mwen vle Kòd mwen yo dwe pwòp tèt ou-ki dokimante. Nan lòt mo, si yonn nan nou te louvri sa a ranpli, li li l, ou kapab sòt de dégager nan non an nan ki D 'ki wòl li nan sipoze jwe. Epi, koulye a anba a ki, mwen pral louvri Curly atèl ak fèmen atèl Curly, yo ak pou remake mwen te swiv menm bagay la tou modèl sou liy kat nan sèt kòm Mwen te swiv pou yon semèn bon plis kounye a ant, di, liy nèf ak 14 ki konpoze prensipal la. Nan lòt mo, ekri non se yon lòt fonksyon. Koulye a, du a pa pral konnen yo rele bagay sa a otomatikman paske mwen literalman jis envante li, men li pral konnen toujou yo rele prensipal otomatikman, ak Lè sa a, nan kou nan liy 13, Mwen rele fonksyon m 'pwòp. Epi paske mwen te deklare ke fonksyon moute sou liy kat anvan prensipal yo, sa a ki pral anseye du a sa quote, unquote, "ekri ak lèt ​​detache Non" vle di epi ki sa li ta dwe fè. Se konsa, mwen se sòt de bay li yon koutim nouvo bloke nan yon kontèks la nan, di, grate. Se konsa, nan isit la, mwen ka mete sa trè komen oswa renouvlab modèl nan kòd Mwen kenbe ekri nan klas la, printf % S hello,% s / n ", - sa m 'vle mete isit la? S? Se konsa, mwen vle mete non yo nan kontèks sa a. Se konsa, remake yon ti jan nan yon dikotomi isit la. Paske mwen deklare fonksyon m 'pwòp epi mwen te yon ti jan abitrèman rele li a, ekri non, epi paske mwen te espesifye nan parantèz yo ke sa a fonksyon pran youn agiman, ki kalite ki se yon fisèl - se konsa li a yon mo oubyen yon fraz oswa yon bagay tankou sa - ak M ap rele ke non agiman, ki vle di varyab la sèlman ki la nan sijè ki abòde, se konsa pale, se non. S sèlman egziste ant ki de aparèy òtopedik Curly, nan kou? Oke reyèlman, jis tankou liy 10 pou rive 14, Se konsa, jis renmen nan Lendi pa ka sèvi ak S, men sa m 'ka fè se pase S nan non ekri an lèt detache. Ekri non jis pou k ap pase nan bay li yon alyas, yon synonym, yon tinon, rele li non, e kounye a, lè l sèvi avèk li nan liy sa a. Se konsa, kounye a kite m 'sove sa a, rale soti. Kite m 'ale pi devan epi fè hello. Sanble bon. Pa t 'krache soti nenpòt ki erè. . / Alo antre. Ki sa ki nan non mwen? David la. Men, alo David la. Se konsa, pa tout sa ki enteresan, men jis panse ke kounye a. Ou kounye a gen ki engredyan menm jan nou te fè nan scratches fè fonksyon pwòp nou yo. Men, gen yon ti jan nan yon gotcha. Sipoze ke mwen pa te reyèlman panse sa a nan ak mwen aktyèlman san yo pa vrèman panse sou sa te ekri ki fonksyon desann isit la. Santi parfe ki rezonab. Nan scratches pa gen okenn nosyon nan kote nan Scripts ou. Ou te kapab mete yon kanpe, isit la, yon sèl moute isit la, yon sèl moute isit la, epi li ta ka kòmanse gade yon sal ti kras si ou pa fè sa mete l 'soti nètman, men li pa fè sa gen pwoblèm kote fizikman Scripts yo yo te sou ekran an. Malerezman nan C - ak sa a se kontrèman ak lang tankou Java ak Piton ak lòt moun ke ou ta ka dwe abitye ak - malerezman nan C, lòd fè gen pwoblèm paske gade sa ki nan pral rive kounye a. Default fonksyon nan ki k ap pase egzekite se, nan kou, prensipal la. Main ki pral rele non ekri an lèt detache sou liy uit, men malerezman, nan du pa pral menm konnen ke Non ekri an lèt detache egziste jiskaske li vin nan liy 11, ki malerezman se yo pral twò ta. Se konsa, kite a fè fè hello. Epi, koulye a modi, erè de pwodwi. Se konsa, kounye a kite m 'woulo liv jiska trè a premye, menm jan nou ta dwe toujou fè, ak remake ke li la kriyan nan m ', "Enplisit deklarasyon nan fonksyon ekri non. " Se konsa, nou te wè mesaj sa a anvan, enplisit deklarasyon nan fonksyon. Lè yo te wè nou ki kalite erè? Lè m 'pa t' genyen ladan yo yon bibliyotèk la. Si mwen bliye cs50.h ak mwen ta jwenn rele nan pou jwenn fisèl oswa pou w jwenn Int. Men, nan ka sa a, fonksyon sa a ekri an lèt detache Non se pa nan yon bibliyotèk, dwa? Li nan literalman nan sa a ranpli, se konsa sa ki nan vrèman pwoblèm nan? Oke, malerezman nan C, li pran ou Se konsa èkstrèmeman literalman ke si ou vle yon fonksyon rele ekri an lèt detache egziste, ou swa gen aplike ki fonksyon nan tèt la anpil nan ou Kòd pou ke li nan aksesib a pi ba fonksyon, men franchman, ki vin peu trè vit. Pèsonèlman, mwen renmen mete prensipal premye paske lè sa a li trè klè ki sa sa a pwogram fè sa ki nan premye gade. Men, plis, ou kapab jwenn nan kwen etranj ka kote si x vle rele y men y ta ka rele x, ou jis fizikman pa kapab aktyèlman mete yon sèl pi wo a lòt la. Men, li vire soti nan C, nou ka rezoud sa a anpil tou senpleman. Mwen pral mete yon ti kras nan espas Moute bò isit, epi mwen jis ale nan preemptively, kwake yon ti jan redundantly, ale nan anseye a du ke gen egziste yon fonksyon rele ekri an lèt detache, li pran yon kòd, ak Mwen pral rele li non virgules. Se konsa, sa a kounye a nan liy kat, ki nou pa gen pou wè anvan, se yon deklarasyon nan yon non ekri an lèt detache fonksyon, men li la sèlman yon pwomès ke sa a fonksyon pral evantyèlman dwe defini, evantyèlman kapab aplike. Sa a koulye a, mwen ka kite pou kont li paske kounye a sa a se definisyon an, nan aplikasyon, sòt de mil ki sot pase a nan aplikasyon an nan sa a patikilye fonksyon. Se konsa, franchman li nan estipid, li la anmèdan, men sa a se yon fason a C se, epi li paske li pran ou anpil literalman epi, kòm yon òdinatè franchman ta dwe, sèlman ekzakteman ki sa ou di li nan fè, ak pou ke kòmann lan, se enpòtan. Se konsa, kenbe ki nan tèt ou e ankò, kòmanse remake repetition a nan modèl. Chans yo ou pral, si ou gen pa deja, kòmanse rankontre mesaj tankou sa a ki nan premye gade sanble konplètman skre, men si ou kòmanse gade pou mo sa yo kle tankou "Enplisit deklarasyon," mansyone nan yon fonksyon nan ka sa a - ak franchman, ou pafwa menm jwenn yon vèt ti kras senbòl kawòt ki di ou kote pwoblèm nan pwobableman se - ou ka kòmanse travay fason ou nan ankò mesaj erè invizibl. Nenpòt kesyon sou sa ou ekri yo pwòp fonksyon nan fason sa a? Se pou yo fè yon bagay ki nan yon ti kras pi plis irezistib. Olye de sa pase jis fè yon bagay ki gen yon efè segondè nan enprime, kite m 'ale devan epi sove yon dosye nouvo, epi n ap rele sa positive.c, menm si li nan pral gen yon ti kras diferan kont dènye fwa. Ak tan sa a, mwen vle re-aplike positive.C egzanp dènye fwa a, ki se fòs itilizatè a bay m 'yon nonm antye ki pozitif. Men, mwen te sèvi ak jwenn Int tan sot pase yo. Pa li ta yo te bèl si te gen yon fonksyon rele jwenn pozitif Int ke mwen te ka jis konfye sa a moso nan fonctionnalités a? Se konsa, diferans lan isit la se nou pral aplike jwenn pozitif Int, men kontrèman ak Non ekri ak lèt ​​detache ki te gen yon efè segondè - li pa t 'tounen yon bagay m' tankou yon nimewo oswa yon fil - jwenn pozitif Int se, nan kou, ale nan retounen, èspere ke, yon Int pozitif. Se konsa, kite a fè sa. Mete cs50.h, Mete estanda io.h. Int prensipal anile. Epi, koulye a nan isit la, mwen pral ale pi devan ak kite a di Int, rele l 'n, egal jwenn pozitif Int. Men, jis tankou jwenn Int deja egziste paske anplwaye a te ekri l ', mwen pral asime pou moman sa a ki jwenn Int pozitif ki egziste, e kounye a, mwen pral ale pi devan epi di printf, mèsi pou% a mwen / n ", n. Se konsa, kounye a si mwen konpile pwogram sa a, sa ki ki pral rive nan tèminal mwen fenèt nan pati anba a nan ekran an? Mwen pral pwobableman jwenn ki menm erè tankou anvan. Se konsa, kite nan eseye sa a. Fè pozitif. Li di ankò: enplisit deklarasyon nan fonksyon, jwenn pozitif Int. Se konsa, nou kapab rezoud sa a nan yon koup nan fason. Mwen pral kenbe l senp ak jis mete deklarasyon m 'yo moute isit la epi pou yo jwenn pozitif Int. Mwen bezwen siyati sa yo rele. Siyati a jis vle di estetik yo nan la premye liy nan pwogram nan. Se konsa, sa ta dwe pran pozitif Int retounen? Se konsa, yon Int. Mwen vle di depreferans, li ta retounen yon bagay tankou Int pozitif, men sa pa egziste. Nou pa te wè ke nan mitan done nou an kalite, se konsa nou gen kontra avèk la reyalite ke nou gen anpil kalite done yo travay avèk. Men, nou ka retounen yon Int ak jis konfyans ke li pral pozitif. Li k ap pase yo dwe rele jwenn pozitif Int. Epi, koulye a ki jan sou agiman li yo? li pran okenn opinyon? li bezwen nenpòt opinyon? Se konsa, li pa bezwen konnen nan anyen davans. Jwenn fisèl pa, jwenn Int pa fè sa. Printf fè - li bezwen gen kèk D 'te pase nan li - ak non ekri an lèt detache bezwen kèk D ', men jwenn Int pozitif pa fè sa. Se konsa, mwen pral klèman di anile nan du. Vid se absans la nan nenpòt lòt bagay. Se konsa, pa gen anyen vle di anile ki pral andedan nan tout sa yo parantèz, virgules. Epi, koulye a nan pati anba a nan dosye mwen an - ak ankò, mwen jis ke yo te kalite twou dèyè isit la mete prensipal nan tèt la, ki se pratik bon paske fason sa a, nenpòt lè ou oswa yon lòt moun ouvè dosye a ou a, fonctionnalités ki dwat la. Ou ka plonje nan nan kare yon sèl. Se konsa, kounye a mwen pral kopi sa a, jwenn pozitif anile Int, men mwen pa ale nan frape yon virgules kounye a. Mwen pral louvri aparèy òtopedik Curly, e kounye a, mwen bezwen prete kèk lide ki soti nan Lendi. Se konsa, jan ou sonje, nou te fè yon bagay renmen fè bagay sa yo pandan y ap yon bagay se vre. Ak sa ki t 'pou mwen fè? Mwen te fè yon bagay tankou bay m 'yon nonm antye ki pozitif, ti kras ti jan nan yon èd memwa. Mwen te kapab sèvi ak nenpòt mo mwen vle. Lè sa a, mwen itilize ki sa? Int n egal jwenn Int, pa gen agiman li. Ak Avi diferans-la. Lè ou rele yon fonksyon, lè ou sèvi ak yon fonksyon, ou pa mete nan anile. Ou sèlman fè sa lè deklare yon fonksyon, moutre moun yo anpil du a sa ki li ta dwe atann. Se konsa, ou pa bezwen mete anile gen tèt ou. Epi, koulye a sa ki te kondisyon mwen an? Oke, n se pa egal a pozitif, men sa se sèlman pseudo-kòd. Se konsa, kouman mwen eksprime sa a plis propr? Se konsa, mwens pase oswa egal a zewo. Se konsa, ankò, remake ou ka fè mwens pase oswa egal a. Menm si li nan de separe senbòl, ou ka fè li sou klavye ou tankou sa yo. Men, gen a toujou yon ensèk ki Mwen vise moute dènye fwa tou. Mwen gen deklare - egzakteman. Mwen gen deklare n deyò nan bouk la. Se konsa, mwen bezwen mete n moute isit la, ak mwen pa fè sa vle re-deklare li nan isit la Si mwen jwenn yon varyab nouvo. Mwen jis vle bay elèv yo yon valè nan isit la. Epi, koulye a mwen pa byen fè isit la. Kite m 'jwenn devan yo nan tèt mwen ak pretann mwen fè. Fè pozitif, e kounye a, gen yon erè nouvo. Kontwòl rive nan nan fen ki pa anile fonksyon. Se konsa, nouvo mesaj erè, men si ou kalite nan toumante apa chak nan mo sa yo li, pwobableman sijesyon nan sa ki nan mal. Kontwòl. Kontwòl jis vle di nan lòd la nan operasyon nan yon pwogram. Òdinatè a nan kontwòl ak yon bagay ale mal. Se konsa, li rive nan fen yon fonksyon ki pa anile. Ki sa ki fonksyon se li aparamman refere li a? Ki sa ki fonksyon se ki pa anile? Se konsa, jwenn pozitif Int, ak yon ti kras konfizyon nan ki byen, li nan kalite anile. Li te gen yon spesifikasyon nan anile pou li yo agiman, men pwodiksyon li ki pral dwe n kalite. Se konsa, pawòl Bondye a sou bò gòch la se nan sa yo rele di ki kalite retou. Pawòl Bondye a sou andedan an isit la se agiman yo zewo oswa plis ki yon fonksyon pran. Se konsa, sa mwen bezwen? Nan pwen sa a nan kòd m 'yo, liy 21 kote èd memwa a kliyote kounye a se, mwen gen yon Int pozitif andedan nan varyab la rele n. Kouman pou mwen bay li tounen nan prensipal yo? Literalman. Retounen n virgules. Se konsa, jis kòm Holton tounen yon moso nan papye avèk yon repons bay m 'pa jete moso papye sa nan ti kras nwa a bwat sou tab la, fè sa nan Kòd, ou literalman jis ekri, retounen n, epi li tankou si Holton te Distribiye m 'yon bagay fizik tounen. Nan ka sa a, sa kap pase la se jwenn pozitif Int ki pral lage tounen sa ki nan prezimableman yon pozitif nonb antye ki pè ki moun? Ki kote ke valè fini? Sa fini moute nan sa a varyab, n, ak Lè sa a, nou kontinye ak liy nèf. Se konsa, nan lòt mo, nan lòd operasyon yo, pwogram sa a kòmanse egzekite, ak du a reyalize, oh, ou vle bibliyotèk la? Kite m 'ale gen tan pwan tout sa ki andedan sa. Oh, ou vle estanda IO bibliyotèk la? Kite m 'ale gen tan pwan tout sa ki andedan sa. Ki sa ki du a di tèt li lè li frape liy kat? Oh, ou te pwomèt la aplike a fonksyon rele jwenn pozitif, men nou pral jwenn tounen nan ki pita, yon bagay sou liy sa yo. Anile Int prensipal jis vle di, isit la nan kouraz yo nan pwogram m 'yo. Liy sèt se jis yon atèl Curly. Liy uit ap di sou bò gòch la, bay m '32 Bits pou yon nonb antye ki pè, rele l' n. Sou bò nan men dwat, li nan li di jwenn pozitif Int. Koulye a, pran yon poz kite a ki istwa paske kounye a Mwen pa kenbe deplase kurseur m 'desann. Kurseur mwen kounye a desann isit la paske kounye a jwenn Int pozitif ègzekutra. Int n se te deklare. Men sa pou fè. Printf ki ban m 'yon nonm antye ki pozitif. Jwenn yon Int soti nan itilizatè a, magazen li nan n, e petèt fè sa ankò e ankò. Sa a bouk vle di ke sa a Kòd ka egzekite leve, li desann tankou sa a ankò epi ankò, men lè itilizatè a finalman kowopere epi li ba m 'yon pozitif Int, mwen frape liy 21, nan ki pwen an nimewo yo retounen, epi ki yon sèl mwen ta dwe mete aksan sou kounye a? Nèf. Kontwòl, se konsa pale, retounen nan liy nèf. Sa a liy lan sa a, se kounye a nan chaj. Se konsa, sa a, se sa ki te pase tout tan sa a anba kapo a, men lè nou te itilize fonksyon tankou printf oswa menm jwenn fisèl ke yon lòt moun te ekri pou ou, kontwòl te ke yo te lage liy Kòd yo ale nan yon lòt moun nan pa liy pa liy. Li nan jis nou pa t 'kapab wè li epi nou pa t 'kapab vrèman dekri li nan sa a pwogram paske li nan nan kèk lòt dosye sou kondwi a difisil ensu l nou. Se konsa, kite a aktyèlman konpile epi kouri sa a kounye a. Fè pozitif. Sanble tout, ki nan pwogrè. . / Pozitif. Ban m 'yon nonm antye ki pozitif. Se pou yo ka difisil. Negatif 1. Zewo. Se pou yo bay li 50. Mèsi pou 50 an, ak kontwòl se konsa gen kounye a tounen. Nenpòt kesyon, lè sa a, sou sa? Yeah? [Fèbl]. Di ankò. Oh, bon kesyon. Se konsa, ou ta ka remake yon paralèl isit la ke Mwen se kalite koupe yon kwen sou. Nan liy 12, m ap di, jwenn pozitif Int retounen yon Int, men pa ke menm lojik, li kounye a vle di rezon ki nan liy sis, mwen di ke retounen prensipal yon Int, men sa ki gen nou pa janm te gen nan nenpòt nan pwogram nou yo? Nou pa janm te gen chwa de sa a retounen mo kle. Se konsa, li sanble ke nan C, omwen vèsyon an nan li ke nou ap lè l sèvi avèk te fè nan 1999, teknikman, sa a se k ap pase pou ou otomatikman. Nenpòt ki lè ou aplike yon pwogram yo epi ou aplike yon fonksyon rele prensipal yo, ki fonksyon ap retounen zewo pa default si ou pa di otreman, epi zewo se jis yon konvansyon. Mond nan retounen zewo kidonk ki endike ke tout se byen, efektivman kite nou ak kat milya dola bagay sa yo posib ke ta kapab ale sa ki mal pou ke si nou retounen yon sèl, ki ta ka siyifi yon kòd ki vle di sa a bagay ale mal. Nou te kapab retounen de, ki vle di bagay sa a lòt ale mal. Nou kapab retounen kat milya dola, ki vle di bagay sa a lòt ale mal. Men, si ou kounye a panse sou pwòp ou a PC oswa Mac, ou ta ka sonje ki pafwa ou jwenn mesaj erè skre soti nan lojisyèl ke w ap lè l sèvi avèk, epi pafwa li gen yon moun deskripsyon zanmitay, men gen nan souvan yon kòd oswa nimewo yon sou ekran an? Si sa a pa vini nan tèt ou, jis kenbe yon grenn je deyò pou li. Sa a anjeneral sa ki sa yo kòd yo refere li a. Yo ap enkli nan Microsoft Word ak lòt pwogram pou ke si ou depoze yon rapò ensèk ak konpayi an, ou kapab di yo, o, mwen te resevwa nimewo erè 45. Se konsa, kèk pwogramè tounen nan konpayi an ka gade ki moute nan li oswa li Kòd epi di, o, ki nan paske mwen te fè sa a ensèk ak Se poutèt sa itilizatè a te resevwa mesaj sa a. Men, franchman, li nan jis yon ti kras distrè ak yon fatigan ti konkli ke, omwen sou nou premye pwogram kèk, se konsa nou te te omissions li. Men, tout tan sa a chak youn nan ou fonksyon prensipal te an kachèt te gen sa a liy otomatikman te ajoute pou ou pa la du, jis pa konvansyon sove ou kèk tan. [Fèbl]. Ou pa bezwen gen ladan li nan prensipal la. Sa a amann. Ou bezwen gen ladan li si ou te mete ann aplikasyon yon fonksyon tankou sa a. Sinon fonksyon plat la soti pa ta travay. Men, nan prensipal la, li nan pa nesesè. Nan yon semenn oswa de, nou pral kòmanse resevwa nan ki abitid yon fwa nou vle kòmanse siyifye erè. Reyèlman bon kesyon. Se konsa, rapid kraze vèbal mansyone ke sa a Vandredi, nou pa pral gen manje midi se pou chak, men nou pral gen dine ak kèk nan elèv yo ak anplwaye yo. Si ou ta renmen rantre nan nou, santi gratis pou yo ale nan cs50.net/rsvp. 6:00 PM sa a Vandredi. Espas se, tankou toujou, limite, men nou pwal kontinye fè sa yo sou yon prèske chak semèn baz si espas kouri soti semèn sa a. Se konsa, cliffhanger a ke nou sispann sou Lendi te ke strings ka aktyèlman dwe Catalogue nan, ki jis vle di ou ka jwenn nan nan karaktè a an premye, dezyèm karaktè, pèsonaj la twazyèm ak pou fè, paske ou kapab efektivman panse a yon kòd, tankou hello, tankou se te nan ka sa a senk lèt andedan nan bwat. Epi ou ka jwenn nan chak nan sa yo bwat ak sa sentaks te fè nou prezante nan Lendi? Moun sa yo ki parantèz kare sou klavye ou. Sa jis te vle di yo ale nan kote zewo. Nou kòmanse konte nan zewo, se konsa bracket zewo vle h, bracket yon sèl vle e, ak pou fè. Se konsa, tout tan tout tan an lè nou te te lè l sèvi avèk strings ak sezisman nan "alo" ak "mond" ak lòt bagay sou ekran an, li la te sere nan bwat tankou sa a. Men, pran yon devine. Ki sa ki chak bwat reprezante fizikman andedan nan òdinatè w lan? [Fèbl]. M regrèt? Karaktè. Se konsa, yon karaktè, sètènman nan ka a nan strings, ak yon karaktè se jis uit Bits oswa multiple yon sèl. Se konsa, ou pwobableman gen omwen vagman ki abitye avèk lefèt ke ou òdinatè gen memwa. Li te gen de kalite memwa omwen. Youn nan se ki gen kapasite a difisil kote ou sove lòt bagay pou tout tan, e ke sa a Anjeneral, gwo pou w ka jwenn sinema ak mizik ak pou fè. Lè sa a, ou gen yon lòt di ki kalite memwa rele RAM, R-A-M, Random Aksè Memwa, e sa se kalite a nan memwa ki itilize lè òdinatè w lan se kouri Men, si ou pèdi pouvwa oswa ou batri mouri, anyen ki nan estoke nan RAM disparèt si ou pèdi pouvwa tout ansanm paske li pa ki pèsistan. Ou tipikman genyen, jou sa yo, yon Gig nan li, de jig, petèt pi plis. Men, tèt la nan RAM se ke li la pi anpil, anpil pi vit pase disk difisil oswa menm eta solid kondui jou sa yo, men li la anjeneral plis chè se konsa ou gen mwens nan li. Se konsa, konvèsasyon jodi a reyèlman vle RAM, ki di ki kalite memwa ki egziste sèlman pandan y ap gen nan pouvwa ke yo te manje nan òdinatè ou. Se konsa, lè ou tape nan H-E-L-L O-, Mete sou klavye a, H a pral nan yon sèl multiple nan RAM, E a pral nan yon lòt multiple nan RAM, kòm se rès la nan mo a. Se konsa, sonje ki sa nou yo te kapab fè dènye fwa sa a te. Kite m 'ale pi devan epi louvri moute dosye a ke nou rele string.c, ak sonje ke li gade yon ti kras yon bagay tankou sa. Kite m 'aktyèlman woule retounen lakay yo epi chanje li nan ekzakteman ki sa li te sanble ak, longè fil nan s. Se konsa, gade nan pwogram nan isit la. Nou gen ladan bibliyotèk la CS50 se konsa ke nou ka itilize jwenn fisèl. Nou gen ladan estanda io.h pou nou ka sèvi ak printf. Poukisa nou gen ladan string.h? Sa a te nouvo nan Lendi. Se konsa, nou te vle longè fil. Str Leng. Moun ki deside ane de sa, kite a jis pou somèr. Olye pou yo rele l 'longè fil, " kite a rele li "str Leng" epi kite nan figi mond ki soti, epi konsa sa a, se ki sa nou jwenn aksè nan ak string.h. Sa a se yo konnen yo. Sa a se yo konnen yo. Sa a se yo konnen yo. Sa a se yon ti kras nouvo. Nan liy 22 - epi nou ap tounen sa a, men pou kounye a konnen - Se ou ki ta ka konnen sèlman sa a soti nan gen li dokiman an oswa si ou te konnen deja C - jwenn fisèl pafwa ka vis moute nan. Si itilizatè a se reyèlman konfwontasyon oswa kooperatif ak li oswa li te jis Pa tape anyen nan klavye a oswa kalite anpil nan klavye a ke li debord memwa òdinatè a, nan teyori, jwenn fisèl kapab retounen yon lòt bagay pase yon fisèl nan karaktè. Li kapab retounen yon valè espesyal ki rele Nil nan tout bouchon, N-U-L-L, e sa se jis yon valè Sentinel sa yo rele. Li se yon valè espesyal ki vle yon move bagay ki te pase nan ka sa a. Li se absans la nan yon kòd. Se konsa, nil mwen tcheke pou tou senpleman se konsa ke, lontan istwa kout, str Leng ak lòt fonksyon ki vini ak C, si yo espere yon fisèl men ou pase yo absans la nan yon fisèl, si ou pase yo nil, òdinatè a oswa yon pwogram nan pral jis aksidan francheman. Li pral kwoke. Li pral voye jete moute kèk mesaj erè. Move bagay ki pral rive. Se konsa, menm si sa a se toujou pa byen defini - sa a pral fè plis sans nan yon semèn oswa de - nan liy 22, sa a se jis yon egzanp w tcheke pwòp tèt ou erè defansiv jis nan ka yon sèl fwa soti nan yon yon bagay milyon dola ale mal, nan pi piti pwogram mwen pa pral aksidan. Se konsa, si yo fè sa ki pa egal yon move bagay, Mwen gen sa a pou bouk, ak sa a te kote nou te gen ke lòt nouvo moso nan sentaks. Mwen gen yon pou bouk iteration soti nan zewo sou jiska longè a nan s. Lè sa a, isit la, mwen te yon enprime soti nan bracket mwen, men poukisa mwen sèvi ak c% tout yon toudenkou olye pou yo% s menm menm si yo se yon fisèl? Li se yon karaktè, dwa? S se yon fisèl, men yon bagay bracket, s bracket mwen kote mwen se zewo oswa yon sèl oswa de, sa a, se yon moun karaktè nan fisèl la, epi konsa pou sa, printf bezwen yo dwe konnen ke li nan tout bon yon karaktè ou kapab espere. Lè sa a, sonje, sa ki te fè sa pwogram aktyèlman fè? Enprime li soti nan kolòn. Yeah, egzakteman. Li jis enprime pawòl Bondye a ke mwen tape nan yon kolòn, yon karaktè pou chak liy. Se konsa, kite a wè sa ankò. Se konsa, fè fisèl. Konpile OK. . / Fisèl. Kite m 'tape nan H-E-L-L O-, Antre, ak tout bon, mwen jwenn li, youn pou chak liy. Se konsa, kite m 'fè yon sèl optimize isit la. Si ou panse sou li, espesyalman si ou te pwograme anvan, gen nan joui yon inefikasite nan liy 24. Nan lòt mo, li pa nan nesesèman desen an pi byen. Simple, omwen yon fwa ou sonje sa str Leng se, men li la fè yon bagay bèbè potansyèlman. Ki sa ki ta ka ke ta dwe ye? [Fèbl]. Egzakteman. Li nan tcheke pou longè a nan s chak fwa yon sèl menm si H-E-L-L-O se toujou pral yo dwe senk karaktè. Chak fwa sa a nan bouk, senk an pa chanje. Mwen ta ka incrementing mwen, men sa ki longè yo sou chak iteration sa a bouk? Li nan senk, li nan senk, li nan senk, ak ankò a mwen Alòske mande sa a kesyon ankò, li ankò e ankò. Koulye a, franchman, òdinatè a se konsa modi vit, pa gen yon sèl k ap pase a yon avi yon diferans nan ka sa a, men sa yo kalite nan desizyon konsepsyon pòv kapab kòmanse ajoute jiska si du nan tèt li pa eseye ranje sa a pou ou ki li tipikman pa ta, nan pi piti nan aparèy la. Se konsa, mwen pral fè sa. Mwen pral ajoute yon vigil apre yo fin varyab premye fwa mwen, mwen. Mwen pral bay tèt mwen yon lòt varyab, rele li n, jis pa konvansyon pou chif, ak Lè sa a, mwen se ale nan bay n valè a nan fisèl longè yo. Lè sa a, mwen pral chanje kondisyon mwen yo dwe ki sa? Mwen pral chanje kondisyon mwen pandan l ap mwen se mwens pase n. Se konsa, koulye a, konbyen fwa mwen tcheke longè a nan s? Yon fwa, men li la OK yo tcheke mwen kont n ankò e ankò paske kounye a sa yo valè pa yo aktyèlman chanje. Koulye a, pou kounye a, jis konnen ke nenpòt lè ou rele yon fonksyon, gen nan yon ti jan nan sou tèt li, pa ase yo dekouraje ou vrèman soti nan tout tan tout tan lè l sèvi avèk fonksyon, men sètènman lè gen nan yon liy nan Kòd renmen sa - ak liy ki pral jwenn plis enteresan anvan lontan - kote gen yon opòtinite yo panse, si mwen tape kòd sa a, konbyen fwa l ap egzekite? Ou pral kòmanse wè sou tan an pèfòmans nan pwogram ou kapab tout bon chanje. An reyalite, youn nan pwoblèm nan kouche nou te fè nan ane ki sot pase enplike nan mete ann aplikasyon, kòm ou ka sonje soti nan semèn zewo, yon korektè eple, men yon korektè òtograf ki nan fèt yo sipòte yon diksyonè nan 150,000 plis mo ki nou ba ou guys. Ou ta gen ekri kòd ki charj mo sa yo nan RAM, se konsa nan bwat tankou nou te wè sou ekran an yon ti moman de sa, ak Lè sa a vit menm jan ou kapab, ou bezwen pou kapab reponn yon kesyon nan fòm la, se pawòl sa a mal ekri? Sa a se mo mal ekri? Sa a se mo mal ekri? Ak nan yon bagay tankou sa ki sa nou te fè nan ane ki sot pase la yo te tounen l 'nan, kwake sou yon opt-nan si ou vle baz, konpetisyon nan kalite, kijan la elèv-yo itilize RAM nan pi piti ak mwens tan, mwens sik CPU, fini bouyònman moute sou tèt la nan yon ti kras tablo lidè oswa plase ke nou mete yo sou Homepage kou a nan kòm nou te fè nan ane ki sot pase. Se konsa, ankò, totalman si ou vle, men sa a pale ak opòtinite yo konsepsyon ki se devan yo yon fwa nou kòmanse bati anlè kèk nan sa yo blòk bilding debaz yo. Se konsa, kite m 'tounen nan dyagram sa a pou jis yon ti moman ak revele yon ti kras yon bagay ki pi. Sa a tout bon se yon fisèl, epi nou te pran avantaj ki genyen nan yon bibliyotèk kèk, estanda io.h ki te gen - Printf. Printf, pami lòt bagay. cs50.h, ki te gen jwenn Int epi pou yo jwenn fisèl ak pou fè, string.h, ki te gen str Leng. Men, li vire soti gen nan ankò yon lòt. Franchman, gen nan anpil ak anpil header dosye ki deklare fonksyon pou bibliyotèk, men ctype.h sa a se aktyèlman pral fè yon ti jan avantaje paske mwen pral ale pi devan epi aplike yon sèl lòt pwogram isit la. Kite m 'ale pi devan epi louvri moute yon bagay Mwen te ekri nan avanse yo rele capitalize.c, ak kite a pran yon gade nan ki jan travay sa a. Remake mwen lè l sèvi avèk, nan vèsyon sa-a nan li, twa dosye yo konnen yo. Remake nan liy 18, mwen se ap resevwa yon liy nan tèks. Avi nan liy 21, mwen reklame ke Kòd sa a ki pral tirer la, tou sa itilizatè a tape nan, ak ki jan mwen fè sa? Bon, mwen ap pran - leson yo aprann nan tan sot pase a - Mwen deklare mwen ak n ak iteration sou karaktè yo ki nan fisèl la. Lè sa a, ki sa ki sa a blòk Kòd nan liy 24 a 27 fè an tèm pwofàn la? Miniskil lèt tounen. Egzakteman. Si yo bracket mwen - Se konsa, si m-th a karaktè nan s, ki se yon espesifik Char nan fisèl la, se pi gran pase oswa egal a miniskil yon ak - sonje ki comercial doub siyifi ak - ak karaktè a menm, yo bracket mwen, se mwens pase oswa egal a miniskil z, sa vle di li nan yon b yon oswa yon oswa yon c oswa dot, dot, dot, oswa yon z, ki vle di li nan lèt miniskil. Ki sa mwen vle fè nan ka sa a? Oke, mwen ka fè sa yon ti jan cryptically, men kite a toumante sa a apa. Mwen pral rele printf, simagri c% paske mwen vle Reprint sa a N. sou ekran an. Mwen Lè sa a, pral pran yo bracket mwen an, m-th karaktè nan s, ak Lè sa a, poukisa mwen fè sa Trick ti kras isit la, miniskil yon Yon kapital mwens? Ki sa ki ki pral bay m ', jeneralman pale? [Fèbl]. Egzakteman. Mwen pa reyèlman sonje - li te 65 pou kapital A. mwen pa fè sa vrèman sonje sa miniskil yon se, men pa gen pwoblèm. Òdinatè a konnen. Se konsa, lè li di, lèt miniskil yon mwens kapital A, li la etranj yo dwe soustraksyon yon sèl Char soti nan yon lòt, men ki sa yo charaktèr anba kapo a? Yo ap jis chif yo. Se konsa, tou sa moun ki nimewo yo, kite òdinatè a sonje li olye ke m 'moun lan. Se konsa, lèt miniskil yon kapital mwens A se ale nan, ban m 'yon diferans. Li k ap pase yo 32, ak ki ta ka ka a pou miniskil b ak kapital B ak pou fè. Li rete konsistan, Erezman. Se konsa, mwen esansyèlman li di, pran an miniskil lèt, fè soustraksyon-la ki estanda diferans, epi ki mwen bracket efektivman chanjman yo soti nan miniskil, nan kou, majuskul, san yo pa m 'reyèlman gen yo panse sou oswa sonje, sa ki te moun nimewo nou te pale de lè uit a volontè li moute soti deyò sou sèn? Koulye a, pandan se tan, nan lòt la, si li pa yon lèt miniskil jan yo detèmine pa liy 24, jis pou enprime li. Mwen sèlman vle manyen la karaktè ki te aktyèlman orijinal lèt miniskil. Se konsa, kite a wè sa. Fè tirer. Konpile, OK. . / Tirer. Men, kite m 'tape nan H-E-L-L O- nan lèt miniskil, antre. Men, remake ke li se konvèti nan majuskul. Kite m 'fè sa ankò ak yon mo diferan. Kouman sou D-A-V-mwen D-ak D nan premye pwofite kapitalize kòm yon Non tipikman se? Antre nan. Avi li la toujou kòrèk. Li jis outputted ki premye D chanje via ki lòt konstwi. Se konsa, kenbe nan tèt ou, Lè sa a, yon koup de bagay sa yo isit la. Youn, si ou tout tan tout tan vle tcheke de kondisyon nan yon fwa, ou kapab ak yo ansanm kòm nou prevwa. Ou ka konpare karaktè nan fason sa a ak efikasite trete karaktè kòm nimewo, men franchman, sa a se konsa modi skre mwen pa janm ap ale nan sonje ki jan yo vini ak sa a nan grate san yo pa rezònman nan li pou byen yon ti jan nan tan. Pa li ta yo te bèl si yon moun yo deyò ekri yon fonksyon rele se pi ba ki t 'kapab reponn pou mwen vre oubyen fo, sa a karaktè se miniskil? Oke Erezman, moun ki va ekri ctype.h te fè egzakteman sa. Kite m 'ale moute isit la epi ajoute ctype pou c kalite, epi kounye a, kite m 'desann isit la ak ekri liy sa a jan sa a. Se konsa, si sa yo rele se pi ba, mwen fè reklamasyon, s bracket mwen, lè sa a mwen pral efase liy sa yo de tout ansanm. Se konsa, kounye a yon lòt moun, mwen espere, ekri yon fonksyon rele se pi ba, epi li vire soti yo te fè ak yo te deklare li andedan nan ctype.h. Epi, koulye a mwen pral kite liy 27 pou kont li, mwen pral kite liy 31 pou kont li, men remake konbyen mwen te sere boulon moute Kòd mwen. Li nan kounye a pwòp. Li nan mwens difisil gade nan paske kounye a fonksyon an, Anplis, se se konsa bèl yo te rele li jis fè sa li di. Se konsa, kounye a mwen pral pou konsève pou sa a. Mwen pral rale soti. Ak jis kòm nan scratches ou ta ka genyen Booleans, valè Boolean vre oubyen fo, se te ekzakteman ki sa ki pi ba efektivman retounen. Kite m 'compile. Kite m 're-kouri. Epi, koulye a kite a eseye li ankò, H-E-L-L-O, Antre. Sa a trè bon. Epi eseye l 'ankò, asire w ke mwen pa t 'vis yon bagay yo. Sa se pwofite kapitalize kòm byen. Men, sa a se pa bon ase paske la lòt bagay ke mwen pa janm ap ale nan sonje sof si mwen travay nan li vrèman ak anpil atansyon sou, di, papye se liy sa a modi. Pa ta bon pou li si te gen yon fonksyon rele anwo? Oke, li vire soti gen se nan ctype.h kòm byen. Mwen pral ale pi devan epi tape - kite m 'pote ki liy tounen. Olye pou yo sa a isit la, kite m 'ale pi devan ak di, ranplase c la a% rezilta pou rezidan yo rele sa a fonksyon anwo sou pèsonaj la m-th nan s. Epi, koulye a remake li a ap resevwa yon ti kras balanse. Mwen gen yo kenbe tras nan konbyen parantèz mwen te louvri epi li fèmen. Se konsa, kounye a li nan menm cleaner. Koulye a, pwogram sa a ap resevwa pi bon ak pi bon ki fèt joui paske li nan anpil, pi plis lizib men Li pa kite a korije. Fè tirer. . / Tirer. H-E-L-L-O. Se pou yo kouri li ankò, D-A-V-I-D. OK, se konsa nou ap toujou nan trè bon fòm. Men koulye a, anwo kay la. Mwen pwopoze ke gen nan yon sèl plis revizyon nou te ka fè ki ta ka vrèman bèl, ki ta ka vrèman sere boulon moute sa a Kòd ak reyèlman ban nou senk soti nan senk pou konsepsyon, pou egzanp. Ki sa ki ta dwe nice yo debarase m de? Oke, gade ki jan modi tan sa a blòk Kòd se jis fè yon bagay ki senp. Koulye a, kòm yon sou kote, kòm ou ka gen wè nan seksyon super sa a sot pase yo fen semèn, ou pa entèdi bezwen an aparèy òtopedik Curly lè ou jis gen yon sèl liy nan Kòd, menm si nou pwopoze kenbe yo pou ke li fè anpil pi klè, tankou nan ki gen fòm U-scratches a blòk, sa ki andedan nan branch la. Men, pa t 'vle li dwe nice si yo anwo kay la, lè yo bay opinyon li yo, tounen vin jwenn li nan majuskul si li pa, ak Ki sa ki ta gen bèl bagay nan ka opoze a si li nan deja majuskul? Jis pase l 'nan epi kite li pou kont li. Se konsa, petèt li fè sa. Mwen te kapab eseye ak jis espere ki li, men li kite m ' prezante yon lòt bagay. Olye pou yo lè l sèvi avèk sa a tèminal bati-an fenèt desann isit la, sonje ke sa a kare nwa icon ba ou yon pi gwo tèminal fenèt ke mwen ka plen ekran si mwen vle? Se konsa, li vire soti yo ap sòt de etranj yo te rele, men gen nan bagay sa yo rele nonm paj, paj manyèl, moun pou ti bout tan, e mwen ka gen aksè a sa yo pa tape moun - sa m 'vle di ki kalite? Moun yo anwo kay la. Epi, koulye a remake si gen egziste yon fonksyone andedan nan òdinatè a, nan ka sa a aparèy la, ki se jis Linux a sistèm opere, li pral ban mwen yon seri yon ti jan skre nan pwodiksyon, men w ap jwenn sou tan ki li toujou ap fòma bèl anpil la menm pou ou kòmanse jwenn itilize li. Avi nan tèt la anwo kay la, ak aparamman se dokiman an menm pou pi ba. Moun ki te ekri li te koupe kèk kwen li mete l 'tout sou yon sèl paj. Objektif Tout bagay sa yo 'nan lavi a se konvèti yon lèt nan anwo oswa miniskil. Remake anba Rezime, paj an nonm ap anseye m 'sa dosye mwen gen genyen ladan yo sèvi ak bagay sa a. Li nan bay m 'siyati yo pou sa yo fonksyon, tou de peyi yo, menm si nou kounye a sèlman pran swen sou yon sèl. Isit la se kounye a yon deskripsyon. Anwo konvèti lèt la C rive nan majuskul si sa posib. Toujou pa ki édikatif, men kite m ' kounye a gade anba valè retounen, bagay la ki nan men dèyè. Se konsa, valè a tounen se sa yo ki an nan konvèti lèt oswa yon c si la konvèsyon pa te posib. Ki sa ki se c? Karaktè orijinal yo. Karaktè orijinal ak nou konnen ki pa, ankò, moute a Rezime, moun ki va ekri sa a fonksyon jis deside ke opinyon an pou fè pou anwo ak pi ba a se jis abitrèman yo pral rele c. Yo te kapab yo te rele li pi anyen yo vle, men yo kenbe li senp tankou c. Se konsa, mwen te konsilte paj an moun. Fraz sa a rasur m 'ke si li pa yon lèt miniskil, li nan ale nan jis bay m 'tounen c, ki se pafè, ki vle di mwen ka debarase m de kondisyon lòt moun mwen. Se konsa, kite m 'tounen nan jdi, ak kounye a, kite m 'jis fè sa. Mwen pral fè kopi deklarasyon printf mwen. Mwen pral ale pi devan ak dwa anndan a pou ekri an lèt detache bouk ki soti, epi pou yo jwenn debarase m de kounye a sa a tout antye si konstwi. Pa t 'yon lide move, epi li te trè pi kòrèk epi yo konsistan avèk tout sa nou te anonse, men jis pa nesesè. Osito ke ou reyalize kèk bibliyotèk fonksyon ki egziste ke yon lòt moun te ekri, oswa petèt ou te ekri yon lòt kote nan dosye a, ou ka itilize li ak reyèlman kòmanse sere boulon moute Kòd la. Men, lè m 'di bagay sa yo tankou style bon, lefèt ke moun sa a yo rele nan fonksyone nan anwo kay la, oswa te deja se pi ba a se bèl itil paske yo ap trè deskriptif. Ou pa ta vle rele fonksyon ou x ak y ak Z, ki gen anpil, anpil mwens sans. Nenpòt kesyon sou sa seri nan amelyorasyon? Se konsa, sufi li vle di youn nan la takeaways se menm jan pwoblèm pwòp ou a seri - petèt pwoblèm seri yon sèl, men sètènman P mete de ak pati, menm lè yo ap kòrèk pa nesesèman vle di ke yo pafè jis ankò oswa patikilyèman byen ki fèt. Sa a aks lòt nan kòmanse reflechi sou. Se konsa, sa a te yon andedan fisèl nan ou memwa òdinatè a, men si ou gen yon tout pakèt moun sou karaktè tankou H-E-L-L O- andedan nan RAM, ak ta kwè ke ou nan pwogram ou an rele jwenn fisèl plizyè fwa sa yo ke ou rele jwenn fisèl yon fwa, Lè sa a, ou rele jwenn fisèl ankò. Oke, sa k ap pase rive sou tan? Nan lòt mo, si ou gen yon liy nan Kòd, kwake soti nan kontèks, tankou fisèl yo vin - kite a fè sa. Non chèn egal jwenn fisèl. Se konsa, ta kwè se ke liy nan Kòd vle di mande itilizatè a pou li oswa non li. Sa a se liy kap vini yo nan kòd vle di ke yo mande itilizatè a pou lekòl li a, ak liy sa a kap vini yo, ak pou fè. Sipoze ke nou kontinye mande itilizatè a pou yon lòt ak yon lòt ak yon lòt fisèl. Yo ap ale nan rete nan memwa an menm tan an. Youn a pa pral nip lòt la. Lekòl se pa sa recouvrir lòt la. Men, kote fè yo tout fini nan memwa? Bon, si nou kòmanse fè desen sou ekran an, ki nou ka sèvi ak bagay sa a isit la tankou yon tablo, si sa a nwa rektang reprezante nan òdinatè mwen memwa, mwen pral abitrèman kòmanse divize l 'moute nan kare ti kras, chak nan yo ki reprezante yon sèl multiple nan memwa. Franchman, si ou gen yon jigokte nan RAM jou sa yo, ou gen yon bytes milya dola nan memwa nan òdinatè w lan, se konsa yon milya dola nan sa yo kare. Se konsa, sufi li vle di, sa a se pa reyèlman sou yon echèl. Men, nou te ka kenbe desen tout moun sa yo klèman pa selon echèl la kare, ak sa a kolektivman reprezante memwa òdinatè mwen an. Koulye a, nou jis pral fè dot, dot, dot. Se konsa, nan lòt mo, lè m 'koulye a Èd memwa a itilizatè ak fisèl jwenn yo ban m 'yon fisèl, ki sa k ap pase? Si itilizatè a kalite nan "hello," ki fini moute nan H-E-L-L-O. Men, si nan itilizatè Lè sa a, kalite nan - aktyèlman, mwen pa ta dwe fè alo paske nou ap mande yo pou non yo. Se konsa, kite a tounen si mwen ka fè sa. Se konsa, si mwen di ki kalite nan D-A-V-mwen D-pou non m ', men sonje ke liy nan dezyèm nan Kòd te jwenn fisèl ankò jwenn lekòl yo. Ki kote se ke mo ki itilizatè a kalite nan pwal ale kap vini yo? Oke, petèt li pral ale nan H-A-R-V-A-R-D. Se konsa, menm si mwen te gen trase li kòm de ranje, sa a se jis yon pakèt antye nan bytes nan ou RAM òdinatè a. Genyen yon pwoblèm kounye a paske kounye a si mwen se lè l sèvi avèk RAM nan sa a rezonab trè men sòt de fason nayif, Ki sa ou ka pa aparamman yo fè distenksyon ant? Ki kote yon sèl kòmanse ak ki kote yon sèl bout, dwa? Yo ap kalite flou yo ansanm. Se konsa, li vire soti òdinatè a pa fè sa. Kite m 'aktyèlman woulo liv tounen nan tan yon karaktè kèk, ak olye pou yo Harvard pral imedyatman apre non itilizatè a, itilizatè a aktyèlman vin, dèyè sèn nan, yon karaktè espesyal eleman pa la òdinatè pou l 'oswa li. / 0, otreman li te ye kòm pèsonaj la nul annoyingly rele N-U-L, pa N-U-L-L, men ou ekri li kòm / 0. Se jis nan tout Bits zewo se yon makè nan ant pawòl Bondye a premye ki itilizatè a tape ak dezyèm lan. Se konsa, Harvard aktyèlman kounye a fini moute tankou sa a sekans nan karaktè ak yon sèl plis / 0. Se konsa, nan lòt mo, pa gen sa yo Sentinel valè yo, uit vwazen zewo Bits, ou kapab kounye a kòmanse yo fè distenksyon ant yon karaktè soti nan yon lòt. Se konsa, tout tan sa a sa ki te "alo" se aktyèlman "alo" ak yon 0 /, ak Pandan se tan, gen ka trè byen dwe byen yon ti jan pi plis RAM andedan nan òdinatè a. Kite m 'fè yon lòt bagay kounye a. Li sanble ke tout moun sa yo kare nou ve yo te desen yo, yo yo, wi, strings, men li plis jeneralman, bagay sa yo ranje. Yon etalaj se jis yon ti moso nan memwa sa a, se tounen nan Retounen nan Retounen nan tounen, epi ou tipikman sèvi ak yon etalaj pa fason sa a notasyon bracket kare. Se konsa, nou ap ale nan wè sa yo byen yon ti jan sou tan, men, kite m 'ale pi devan epi louvri moute, se pou yo rele li laj. Ak Avi sa nou kapab fè ak sa yo ke trik nouvèl menm, yon ti kras ti jan pi plis sentaks isit la. Se konsa, nan liy 17 nan pwogram sa a - aktyèlman, kite m 'kouri pwogram nan premye pou nou ka wè sa ki bagay sa a fè. Kite m 'rele fè ki gen laj konpile pwogram sa a. . / Laj. Konbyen moun ki se nan chanm nan? Rele li twa. Laj moun nan an premye? 18, 19, ak 20. Epi, koulye a yon ti jan ridikil, mwen jis te fè yon pwogram ki gen laj moun twa moun. Se konsa, gen nan byen klè yon opòtinite pou kèk aritmetik plezi isit la. Erezman, matematik an kòrèk. 18 te ale nan 19, 19 te ale a 20 ak pou fè. Men, sa ki nan vrèman vle di yo dwe ilistrasyon isit la se ki jan nou ap estoke ki gen laj moun sa yo twa a. Kite m 'rale nan nan sa ki nan ale sou isit la. Se konsa, an premye, sa yo premye liy kèk ta dwe ap resevwa trè yo konnen yo. Mwen jis pouse itilizatè a pou la kantite moun ki nan sal la. Lè sa a, mwen lè l sèvi avèk jwenn Int ak fè pandan y ap fè sa ankò, li ankò e ankò. Nou te wè ki jan modèl anvan, men liy 27 se nouvo ak aktyèlman byen ki itil, epi yo ap vin de pli zan pli itil. Remake sa ki nan diferan nan liy 27 se pou m 'parèt yo dwe deklare yon Int rele laj, men rete tann. Li pa jis ki gen laj Int. Genyen sa yo parantèz kare, se andedan nan yo ki n. Se konsa, bracket n la nan kontèks sa a, pa andedan nan yon deklarasyon printf isit la, men nan liy sa a sèl 27, liy sa a se li di, ban m 'n antye, chak nan yo ki se nan Int kalite. Se konsa, sa a se yon bokit, se konsa pale, nan, nan ka sa a, twa nonm antye tounen nan tounen nan do pou m 'efektivman gen twa varyab. Altènatif la, yo dwe klè, ta dwe sa a. Si mwen te vle elèv nan premye a laj, mwen ta ka fè sa. Si mwen te vle elèv nan dezyèm nan laj mwen ta ka fè sa. Si mwen te vle elèv la twazyèm lan laj, mwen ta ka fè sa. Men, mande Bondye padon! Nou bezwen tout moun nan gen laj nan sal sa a - Mwen vle di, sa a se yon èk nan yon anpil nan kopi, kole ankò, li ankò e ankò. Men, plis yon fwa mwen konpile pwogram sa a, si yon lòt elèv ap mache nan plis pase soti nan ke pòt, kounye a nimewo mwen nan varyab la se kòrèk. Se konsa, sa ki nan bèl sou yon etalaj se kòm pli vit ke ou kòmanse santi tèt ou w kopye e kole, chans yo se sa a, se pa pi bon apwòch. Yon etalaj la se dinamik potansyèlman. Mwen pa konnen an davans konbyen moun ki yo ale nan dwe nan sal la, Men, mwen konnen mwen bezwen N OF yo, epi mwen pral figi konnen n lè lè a va rive. Liy sa a nan kòd kounye a vle di, ban m 'yon ti moso nan memwa ki sanble ak sa a kote kantite bwat sou ekran an se antyèman depann sou n ki itilizatè a tape pous Se konsa, kounye a rès la nan pwogram sa a se aktyèlman trè menm jan ak sa nou jis te fè ak karaktè. Avi Mwen gen yon pou bouk kòmanse nan liy 30. Se konsa, dwa apre mwen jwenn etalaj la, mwen répétèr soti nan y egal zewo sou jiska n. Mwen jis gen sa a printf édikatif mesaj jis di, ban m 'laj moun #% mwen, se konsa nimewo yon sèl, nimewo de, nimewo twa. Epi poukisa mwen fè sa? Franchman, moun pito konte soti nan yon sou moute Lè nou konsidere ke syantis konpitè, zewo sou yo. syantis konpitè pa pral itilize sa a kalite pwogram, se konsa nou ap ale nan jis kòmanse konte nan yon sèl tankou moun nòmal. Epi, koulye a nan liy 33, remake yon ti kras nan diferan moso nan sentaks. Gen laj nan m-th nan varyab sa a nan kalite etalaj ki pral jwenn yon Int. Epi, koulye a Anfen, sa a se jis aritmetik desann isit la. Mwen deside nan yon bouk separe nan reklamasyon kèk tan pase, epi kounye a nan sa a apa bouk, liy sa yo egzekite. Yon ane nan kounye a, moun mwen pral mwen ane fin vye granmoun, men remake sa a se la pa varyab mwen. Sa a se kounye a% mwen pou Int. Ak Avi kòm kontneur a an premye, mwen ploge nan mwen plis 1, se konsa nou konte tankou yon nòmal moun. Lè sa a, pou valè a nan laj yo, pou mwen ane fin vye granmoun, mwen pran laj bracket mwen - epi poukisa mwen fè plis yon isit la? Yo jis ki gen laj. Li nan chwa estipid mwen nan pwogram. Yo jis ki gen laj yon ane. Mwen te kapab tape nan nenpòt nimewo ki Mwen aktyèlman vle a. Se konsa, sa la aktyèlman tout enpòtans a isit la? Oke, kite m 'aktyèlman woulo liv tounen sou isit la ak penti yon foto nan sa ki bay manti devan. Ki sa nou ap fè ak pwochen nou yo Set Pwoblèm De se diletantism nan la mond nan chifreman. Se konsa, sa a se yon afè de karaktè, se konsa yon sekans charaktèr miltip, ak sa sa a di nou fè? Li pa nan vèsyon an sou entènèt nan glisad yo. Se konsa, mwen reklamasyon ke sa a egal sa a, yon estipid reklam soti nan anpil ane de sa ki ta ka aktyèlman sonje youn nan orijin li. Se konsa, sa a se yon egzanp chifreman oswa chifreman. Li sanble ke si ou vle aktyèlman voye enfòmasyon oswa pataje enfòmasyon ak yon moun byen, tankou yon mesaj tankou sa a, ou kapab brouiller lèt yo. Men, anjeneral, mo sa yo se pa grenpe moute owaza. Yo ap permuted nan kèk fason oswa chanje nan kèk fason pou ke - Wouch. Sa se yon beke plezi pou tan kap vini an. Se konsa, ou ka kat ki sa ki aparamman O B a Avi ki liy moute lèt majiskil-ki gen bon konprann. Aparamman r vin e. Aparamman F-H-E-R vin S-U-R-E. Se konsa, li vire soti gen yon kat, ak nan ka sa a gen yon estipid bèl gewografik si nenpòt moun te kalkile li soti? Sa a se yon bagay yo rele Pouri 13, vire 13. Li se estipid la nan chifreman mekanism paske li literalman jis ajoute 13 a chak youn nan lèt yo, estipid nan sans ke si ou jis gen yon ti jan nan tan lib sou men ou ak yon kreyon, oswa ou jis panse ke li nan nan tèt ou, ou ta ka eseye tout testaman posib - yonn, de,, twa, dot, dot, dot, 25 a jis Thorne alfabè a tout antye, ak evantyèlman, ou pral konnen ki sa mesaj sa a se. Se konsa, si ou te fè yon bagay tankou sa a nan klas lekòl pase pou bay mesaj pou ou pi bon zanmi, si lekòl klas ou pwofesè tou senpleman li nan la mesaj ak brital fòse solisyon an, ou ta ka gen vinn yon repons pa sa. Koulye a, nan kou, nan mond reyèl la, chifreman se pi plis sofistike. Sa a se yon brib nan tèks ki sòti nan yon sistèm òdinatè ki gen usernames ak modpas, kòm prèske tout nan nou fè, ak sa a se sa modpas ou ka gade renmen si ki estoke sou di ou yo kondwi men nan fòm chiffres. Sa a se pa jis yon wotasyon lèt, A B se ak B se C. Sa a se pi plis sofistike, men li sèvi ak sa ki jeneralman li te ye kòm kle sekrè chifreman. Pòtre sa a di sa ki annapre yo istwa ak yon ikon kèk. Sou bò gòch la, nou gen sa ki nou pral rele plenn tèks. Nan mond lan nan chifreman, plenn tèks se jis mesaj orijinal la ekri nan lang angle oswa franse oswa nenpòt lang tou. Si ou vle ankripte li, nou pral pase li pictorially atravè yon kadna, se konsa kèk kalite nan algorithm, gen kèk fonksyon oswa pwogram ke yon moun te ekri ki scrambles lèt yo èspere ke plis complicatedly pase jis ajoute 13 nan chak nan yo. Ki sa ou jwenn soti nan pwosesis sa a nan la mitan gen yo rele cyphertext. Se konsa, kalite nan yon mo sexy. Li jis vle di li nan chiffres a vèsyon an tèks la klè. Ak sèlman si ou gen ki sekrè menm, 13 oswa mwens 13, ou kapab fè dechifre yon mesaj tankou sa. Se konsa, nan Pwoblèm Mete De, nan mitan bagay sa yo ou pral fè si nan pirataj la Edisyon, w ap gen yo ekri Kòd krak sa yo modpas, n ap kalkile konnen sa yo te ak ki jan yo te chiffres, menm si nou fè ba ou yon ti jan nan konsèy sou wout la. Nan edisyon a Creole, nou prezante yon koup la algorithms, chifreman fòmil, yon sèl rele Seza, yon sèl rele Vigenere, ki toujou Algorithms wotasyon kote A vin yon bagay, B vin yon bagay, men sa ou dwe fè li pwogramasyon paske gen pral tout bon gen yon sekrè kle ki enplike ki se tipikman yon nimewo oswa yon mo kle ke se sèlman nan moun k ak moun k ap resevwa a nan sa yo mesaj ta dwe konprann. Koulye a, sa a aktyèlman gen enkarnasyon nan mond lan reyèl. Sa a, pou egzanp, se on òfelen ti kras Sekrè bag dekodaj Annie a, epi ou ka aktyèlman aplike sa yo Algorithms wotasyon - Yon vin yon bagay, B vin yon bagay - ki gen yon koup nan wou, yon sèl sou deyò a, yon sèl sou andedan an sa yo ke si ou vire volan an oswa bag la, ou ka aktyèlman liy lan moute lèt ak lèt ​​diferan, jwenn yon kòd sekrè. Se konsa, kòm cliffhanger la pou jodi a, sa mwen te panse mwen ta fè se yon ti jan nan throwback ke si ou vire sou televizyon an sou Desanm 24, ou ka gade nan fim anons nauseum pou 24 èdtan nan yon ranje. Men, pou jodi a, mwen pral louvri l 'isit la ak ban nou jis de minit nan yon pedagojik ki enpòtan Nwèl istwa ak yon parèy ti kras yo te rele Ralphie. [Lèktur videyo] -Se pou li li te ye nan tout ak diverses ki Ralph Parker sa a fin nonmen yon manm nan Little Òfelen Annie sekrè a se ti sèk epi li gen dwa nan tout onè ak benefis ki fèt kite yo pase. -Siyen, Little Annie on òfelen. Kontresiye, Pierre Andre nan lank. Kou onè ak benefis deja a laj de nèf. [T'ap rele byen fò nan radyo] Vini non sou, se pou yo jwenn sou ak li. Mwen pa bezwen tout sa ki djaz sou kontrebandye ak pirat. -Koute demen swa pou la conclure avanti nan nwa a bato bato. Koulye a, li lè pou sekrè Annie a Mesaj pou ou manm sèk la sekrè. Sonje byen, timoun. Manm sèlman nan Sèk sekrè Annie a ka dekode sekrè mesaj Annie a. Sonje byen, Annie se depann sou ou. Mete broch ou a B2. Isit la se mesaj la. 12, 11, 2 - -Se mwen menm ki nan premye rankont sekrè m 'yo. -25, 14, 11, 18, 16 - -Pierre te nan aswè a gwo vwa. Mwen te kapab di mesaj ke aswè a nan te vrèman enpòtan. -3, 25. Sa se yon mesaj ki soti nan Annie tèt li. Sonje byen, pa di pesonn sa. -90 Segonn pita, mwen se nan chanm nan sèlman nan kay la kote yon ti gason nan nèf te kapab chita nan vi prive ak dekode. Wi, B. Mwen te ale nan pwochen an. E. mo nan premye se "dwe." S. Li te vini pi fasil kounye a. Ameriken 25. Sa a R. -Vini non sou, Ralphie. Mwen oblije ale. -I'll dwe gen dwa desann, Ma. Gee sifleman. -T. O. Asire ou ke ou. Asire w ke w ki sa? Ki sa ki te Little Òfelen Annie ap eseye di nou fè? Asire w ke w ki sa? -Ralphie, Randy te pran yo ale. Èske w ap tanpri la ye konsa? -Tout dwa, Ma. Mwen pral dwe gen dwa soti. -Mwen te resevwa pi pre kounye a. Tansyon nan te terib. Ki sa ki te li? Sò a nan planèt la kapab pann nan balans lan. -Ralphie, oblije ale Randy a. -I'll dwe gen dwa soti pou rele byen fò. -Prèske la. Dwèt mwen te pran vòl. Lide mwen se te yon pèlen an asye. Chak pò vibre. Li te prèske klè. Wi, wi, se wi, repons lan se wi, wi. -Asire w ke w bwè Ovaltine ou. Ovaltine? Yon komèsyal sal? Pitit nan yon femèl chen. [Lèktur videyo END] Oratè 1: Sa a se CS50, epi ki pral mete Pwoblèm De. Al gade nan ou an semèn pwochèn. Oratè 2: Nan pwochen an CS50, sa a k ap pase. Oratè 1: Se konsa, yon sijè nou pa gen gade konsa byen lwen se sa yo ki an pwent fonksyon. Koulye a, yon konsèy fonksyon se jis adrès ki nan yon piblik fonksyon, men anpil tankou - pitit gason nan yon -