[Jwe mizik] DAVID J. Malan: Tout dwa. Sa a se CS50, ak sa a se nan fen Semèn 2. Se konsa, jounen jodi a, nou ap ale kontinye gade nou an nan ki jan nou reprezante bagay anba hood-- la k ap deplase lwen soti nan nimewo tankou nonm antye relatif ak valè pwen k ap flote ak konsantre sou strings ak pwogram finalman plis enteresan. Men, nou pral pran tou yon gade nan yon koup nan pwoblèm domèn-espesifik premye a nan ki pral gen ki enplike chifreman, atizay la nan eskalade enfòmasyon, nan ki ou gade pi wo a isit la se yon foto nan Radyo Òfelen Annie a sekrè bag dekodaj soti nan pase. Sa a se aktyèlman fòm trè primitif ak fòm pitit-zanmitay nan cryptopgraphy kijan sa a bag gen de disks-- yon sèl andedan ak yon sèl deyò. Epi pa wotasyon youn nan moun ki, ou ka esansyèlman liy moute lèt tankou yon jiska Z ak lòt lèt tankou B a A. Nan lòt mo, ou ka literalman Thorne alfabè a, kidonk vini ak yon kat soti nan lèt bay lèt pou ke, si ou te vle voye yon mesaj sekrè ak yon moun tankou Annie, ou ta ka ekri desann mesaj ou a ak Lè sa a Thorne lèt yo, annakò ak sa, si ou vle di yo di "A," ou olye pou di "B," ou vle di yo di "B," ou olye pou yo di "C" - oswa yon bagay yon ti kras plis entelijan pase that-- ak Lè sa a, finalman, toutotan Annie gen dekodaj sa a bag, li ka dekode mesaj la. Koulye a, ou ka sonje, an reyalite, ke sa a te itilize nan yon fim trè popilè ki jwe nauseum anons pandan sezon Nwèl la. Se pou nou pran yon gade isit la. Ralphie PARKER: "Se pou li te ye nan tout nan rezime ki Ralph Parker sa a fin nonmen yon manm nan Little Òfelen Annie sekrè Fè yon ti wonn epi li gen dwa nan tout onè ak benefis ki rive kite yo pase. " Ralphie PARKER (raconter): Siyen Little Òfelen Annie. Kontresiye, Pierre Andre! Nan lank. Kou onè ak benefis, deja nan laj la nan nèf. [Jwe mizik] [RADIO bavardaj] Ralphie PARKER: Vini non sou. Se pou nou jwenn sou ak li. Mwen pa bezwen tout sa ki djaz sou kontrebandye ak pirat. RADIO Announcer: Koute demen lannwit pou avanti a conclure nan Nwa bato bato a. Koulye a, li lè pou Annie a Sekrè Mesaj pou ou manm nan Sèk la sekrè. Sonje timoun, sèlman manm nan Sèk sekrè Annie a ka dekode sekrè mesaj Annie a. Sonje byen, Annie se depann sou ou. Mete broch ou a B-2. Isit la se nan message-- 12, 11, 2-- Ralphie PARKER (raconter): Mwen menm mwen nan premye rankont sekrè m 'yo. RADIO Announcer: --25, 14, 11, 18, 16-- Ralphie PARKER (raconter): Oh, Pierre te nan gwo aswè a vwa. Mwen te kapab di aswè a nan ki mesaj te vrèman enpòtan. RADIO Announcer: --3, 25. Sa a se yon mesaj soti nan Annie tèt li. Sonje, pa di pesonn sa. [Esoufle] Ralphie PARKER (raconter): Katreven segonn pita, mwen se nan chanm nan sèlman nan la kay kote yon ti gason nan nèf te kapab chita nan vi prive ak dechifre. Ah. "B." [Chuckles] Ralphie PARKER (raconter): Mwen te ale nan pwochen an. "E." Mo an premye se "dwe." Wi! Li te vini pi fasil kounye a. "Ameriken" [Chuckles] Randy PARKER: Aw, vini sou, Ralphie. Mwen oblije ale! Ralphie PARKER: Mwen pral dwe gen dwa desann, Ma. Gee sifleman. "T." "O." "Asire ou ke . "" Asire ou ke ou "ki sa? Ki sa ki te Little Òfelen Annie ap eseye di nou fè? "Asire ou ke ou" ki sa? MANMAN: Ralphie, Randy te gen yo ale. Èske w ap tanpri ye konsa? Ralphie PARKER: Tout dwa, manman an! Mwen pral dwe gen dwa soti! Ralphie PARKER (raconter): Mwen te resevwa pi pre kounye a. Tansyon an te terib. Ki sa ki te li? Sò a nan planèt la ka kwoke nan balans lan. MANMAN: Ralphie, Randy a te rive nan ale! Ralphie PARKER: Mwen pral dwe gen dwa soti, pou kriye byen fò! Ralphie PARKER (Raconter): Prèske la! Dwèt mwen te pran vòl! Lide m 'te yon pèlen asye. Chak pò vibre. Li te prèske klè! Wi! Wi! Wi! Wi! Ralphie PARKER: "Asire w ke yo bwè Ovaltine ou. " Ovaltine? Yon komèsyal sal? [Jwe mizik] Ralphie PARKER: Pitit nan yon femèl chen. [Ri] DAVID J. Malan: Se konsa, ki Lè sa a, se yon aperçu nan sa ki chifreman kapab pou this-- yon bwè nan pase. Se konsa, yon anons rapid. Si ou yo gratis sa a Vandredi nan 1:15 PM epi m te swete renmen rantre nan nou pou CS50 manje midi, tèt nan sa a URL isit la. Premye vini, premye sèvi kòm dabitid. Men, sou tan, nou pral asire w ke pi nenpòt ki moun ki ta renmen patisipe ka pran randevou pou-gen bon konprann. Se konsa, strings. Nou gen Zamyla-- moun ou te kounye a te rankontre gen plis chans nan Set Pwoblèm 1-- ki gen Non se eple konsa. Ak ta kwè ou tape non li nan yon pwogram òdinatè ki nan lè l sèvi avèk yon bagay tankou getString. Yo nan lòd yo rekipere moun frap, ki jan nou ale sou reprezante yon fisèl, yon mo, yon paragraf, oswa lèt miltip tankou sa yo isit la? Nou te pale dènye fwa sou nonm antye relatif ak pwoblèm ki rive avèk nonb antye relatif debòde ak valè pwen k ap flote ak pwoblèm ki Leve chita non ki nan presizyon. Ak strings, nou omwen gen yon ti jan plis fleksibilite paske strings-- jis nan world-- a reyèl kapab yon longè trè abitrè. Trè kout, bèl lontan. Men, menm lè sa a, nou ap ale nan jwenn ke òdinatè kapab pafwa kouri soti nan memwa epi yo pa menm magazen yon gwo ase fisèl. Men, pou kounye a, kite la kòmanse visualized yon kòd kòm yon bagay nan bwat sa yo isit la. Se konsa, sis bwat sa yo, chak nan yo ki reprezante yon karaktè oswa "Char." Se konsa, sonje ke "Char" - c-h-yon-r-- se youn nan kalite yo bati-an done nan C. Ak sa ki nan bon se ke ou ka itilize ki sòt de kòm yon blòk bilding, yon moso devinèt, si ou vle, yo fòme yon pi gwo di ki kalite done ki nou pral kontinye yo rele yon "fisèl." Koulye a, sa ki nan itil sou panse sou bagay sa yo tankou strings nan fason sa a? Oke, li sanble ke nou kapab aktyèlman ogmante estrikti sa a aktyèlman jwenn aksè karaktè endividyèl nan yon fason trè senp. Mwen pral ale pi devan epi kreye yon dosye rele "stringzero.c," men ou ka rele li tou sa ou ta renmen. Yo, epi sou sit entènèt kou a se deja egzanp sa a an avanse, pou w pa bezwen tape tout bagay soti. Apre sa, mwen pral ale pi devan ak premye fè Int anile prensipal. E nan lespas de yon kèk jou, nou pral kòmanse toumante apa sa ki anile se isit la, poukisa li nan int akote prensipal yo, ak pou fè. Men, pou kounye a, kite a kontinye a kapab bay kopi kole sa. Mwen pral deklare yon kòd yo rele an. Men, mwen pral retounen soti nan GetString tou sa itilizatè a kalite nan. Sa a se pral gen yon senp pwogram nan, pa gen okenn enstriksyon, Mwen jis ale nan je fèmen espere ke itilizatè a konnen sa pou fè pou kenbe li senp. Epi, koulye a, mwen pral gen yon riban pou. Ak andedan nan riban pou m 'mwen se ale nan gen int mwen vin zewo. Apre sa, mwen se, ankò, jis yon konvansyon, yon varyab endèks pou konte, men mwen te kapab rele sa a tou sa mwen vle. Mwen pral fè mwen se mwens than-- byen Non Zamyla a se sis lèt lontan. Se konsa, mwen pral difisil Kòd ke gen pou kounye a. Lè sa a, mwen ++. Epi, koulye a andedan nan sa yo Curly aparèy òtopedik, mwen pral fè printf, e mwen vle ekri ak lèt ​​detache youn karaktè nan yon tan. Se konsa, mwen ale nan sèvi ak c% pou petèt premye fwa. Lè sa a, mwen vle enprime chak karaktè sou liy pwòp li yo. Se konsa, mwen pral mete yon ti kras antislach n la. Fèmen quote. Koulye a, mwen vle fè yon bagay isit la. Mwen vle enprime soti nan lèt espesifik nan fisèl la, a, kòm mwen iteration soti nan zewo sou jiska sis. Nan lòt mo, mwen vle enprime pèsonaj la i'th nan s. Koulye a, kouman mwen ka fè sa? Oke anpil tankou bwat yo nan reprezantasyon sa a isit la, kalite, evoke leve nosyon de boksè lèt nan, ou ka menm fè sa syntactically nan C pa senpleman ki espesifye, Mwen vle enprime soti nan la i'th karaktè. Lè l sèvi avèk parantèz yo kare sou klavye òdinatè w lan an ki sou yon klavye US yo jeneralman pi wo a kle ou retounen. Se konsa, sa a se pa byen dwat ankò, jan ou ka remake gen. Men, mwen pral kalite je fèmen fòje devan isit la. Men, mwen pral fè fè fisèl 0. Men, anvan m 'fè sa, se pou yo wè si nou pa ka antisipe kèk erè komen. Sa a se ale nan konpile? Non, mwen manke yon pakèt antye nan bagay sa yo. Bibliyotèk m 'te tande. Se konsa, ki header dosye ta ka mwen vle ajoute isit la? Yeah. ODYANS: Ou bezwen estanda I / O [fèbl] DAVID J. Malan: Excellent. Se konsa, mwen bezwen estanda I / O. Pou ki sa objektif fè mwen vle estanda I / O? Pou printf. Se konsa, gen ladan yo stdio.h. Epi nou menm tou nou pwopoze ke mwen gen ladan bibliyotèk la CS50 pou sa ki rezon ki fè? Pou ou gen strings. Se konsa, nou pral wè sa Bibliyotèk CS50 nan ap fè yo kreye sa a nosyon nan yon fisèl. Men, pou kounye a, ou ka jis panse nan li kòm yon kalite done vrè. Se konsa, ki sanble ap yon ti kras netwaye. Epi, koulye a, mwen pral ale pi devan ak tout bon fè fè fisèl 0. Konpile. Se konsa, ki la bon. Se konsa, ./string0 kite m 'rale nan sa nou kapab gade pi byen sa k ap pase. Antre nan. Z-A-M-Y-L-Yon antre. E nou te enprime soti nan non Zamyla la. Se konsa, se trè bon. Se konsa, kounye a kite a ale pi devan epi kouri pwogram sa a ankò, ak kalite soti tout non Daven la. Sipriz, sipriz. Antre nan. Hmm. Nou pa t 'enprime Daven a plen premye non kòrèkteman. Koulye a, sa a ta dwe evidan nan retrospective paske nan sa ki, sòt de, desizyon konsepsyon estipid? Yeah, mwen difisil kode nan sis andedan nan pou m 'bouk. Koulye a, mwen te fè sa sèlman paske Mwen te konnen non Zamyla a te pral fè sis lèt yo. Men, siman sa a se pa yon solisyon jeneral. Se konsa, li vire soti nou kapab dynamique figi konnen longè yon fisèl lè w rele yon fonksyon rele strlèn. Yon fwa ankò, fè espre suksen yo te rele jis fè li pi fasil yo tape. Men, sa a synonyme ak ap resevwa longè yon fisèl. Mwen pral ale tounen nan tèminal m ' fenèt ak re-kouri du a. Men, li la tap rele ke nan mwen. Chal deklare fonksyon bibliyotèk strlèn ak kalite siye Int const-- Mwen se pèdi. Konplètman. Se konsa,, espesyalman kòm ou je kòmanse Glaze sou ak mesaj erè tankou sa a, konsantre onètman sou premye mo sa yo kèk. Nou konnen pwoblèm nan se nan liy 8, jan sa endike isit la. Lè li nan nan fisèl-0.c. Chal deklare fonksyon bibliyotèk strlèn. Se konsa, ki se jeneralman ale nan gen yon modèl nan mesaj erè. Chal deklare yon bagay. Se konsa, nan kout, sa pou m te sanble ke yo te fè ki gen rapò ak liy 8, isit la. Ki sa ki ta ka solisyon an dwe menm si ou pa janm te itilize strlèn tèt ou? ODYANS: Pati nan yon bibliyotèk diferan? DAVID J. Malan: Pati nan yon bibliyotèk diferan. Se konsa, li se te deklare, se konsa pale. Li se mansyone nan kèk dosye lòt pase stdio.h ak CS50.h. Koulye a, ki kote li defini? Yo dwe onèt, ou swa gen jis konnen sa a nan tèt la nan tèt ou, oswa ou Google sa a epi jwenn deyò. Oswa ou konnen sa a, mwen te louvri moute nan CS50 a Aparèy pwogram nan tèminal, ki se jis gwo, vèsyon an ekran plen nan sa ki nan nan pati anba a nan fenèt jdi la. Epi li vire soti ke gen nan yon lòd Menm jan an tou somèr, ki rele moun pou manyèl, kote si ou tape nan non an nan yon fonksyon ak frape Antre, ou pral jwenn tounen san patipri Esoteric kopi dokiman yo. Li nan tèks sèlman sa jeneralman sanble yon ti kras yon bagay tankou sa a. Li se yon ti kras akablan nan premye gade. Men, franchman, mwen pral kite je m 'Glaze sou ak sèlman konsantre sou pati nan Mwen pran swen sou pou moman sa a. Ki se sa a. Ki sanble struktural tankou yon bagay mwen se abitye avèk yo. Vreman vre paj la nonm, se konsa yo pale, ap di ou nan sa ki header ranpli yon fonksyon tankou strlèn se defini. Se konsa, mwen pral ale tounen kounye a jdi. Men, mwen pral ale pi devan epi ajoute nan isit la # enkli epi sove dosye a. Mwen pral klè ekran an ak Kontwòl L Si w te te mande. Men, mwen pral re-kouri fè string.0, compiles tan sa a. ./string.0 Zamyla. Sa te sanble nan travay Kite m 'ale pi devan epi relance l 'ak Davenport. Antre nan. Epi sa, tou, te sanble nan travay. Se konsa, nou ka fè yon ti kras pi bon pase sa a, menm si, nou kapab kòmanse nan bagay sa yo pwòp moute jis yon ti kras. Men, mwen pral aktyèlman prezante yon lòt bagay kounye a. Mwen pral ale pi devan epi sove sa a nan yon dosye diferan. Men, mwen pral yo rele sa a string1.c dosye jis yo dwe konsistan ak kòd la ou pral kapab jwenn sou entènèt. Li kite yo konsantre nan sou egzakteman Kòd la menm. Li sanble ke mwen te te kalite pran pou yo akòde lefèt ke laptop mwen, ak nan vire, aparèy la CS50 gen yon anpil nan memwa, yon anpil nan RAM, yon anpil nan bytes nan espas nan ki mwen ka magazen strings. Men, reyalite a si mwen tape lontan ase, ak ase frap, Mwen te kapab nan kalite teyori nan plis karaktè pase òdinatè mwen an fizikman gen memwa pou. Lè sa a se yon pwoblèm. Anpil tankou yon int kapab sèlman konte tèlman wo, nan teyori, ou ka sèlman bachote karaktè anpil nan RAM òdinatè w lan an oswa Random Aksè memwa. Se konsa, mwen te gen pi bon antisipe pwoblèm sa a, menm menm si li ta kapab yon bagay ki ra ka kwen, se konsa pale. pa rive ki souvan, te kapab rive. Men, si bagay sa yo rive ak mwen pa fè sa antisipe ak pwogram pou li, pwogram m 'ta ka fè moun ki konnen sa. Glase, pann, rdemare, kèlkeswa sa. Yon bagay antisipe ka rive. Se konsa, sa mwen pral fè kounye a, koulye a reyèlman, se mwen anvan m 'tout tan tout tan je fèmen sèvi ak yon varyab tankou nan ki te asiyen valè a retounen nan kèk lòt fonksyon tankou getstring, Mwen pral asire w ke ke valè li yo se ki valab. Se konsa, mwen konnen sèlman ki soti nan gen li Dokiman CS50 a pou getstring, ki finalman nou pral pwen ou a, ki getstring retounen yon senbòl espesyal rele nil, N-U-L-L nan tout kaskèt, si gen yon bagay ale mal. Se konsa, nòmalman, li retounen yon fisèl. Men, otreman si li retounen N-U-L-L-- n ap pètèt wè sa ki ki vrèman means-- jis ki vle di yon move bagay ki te pase. Koulye a, sa vle di, anpil tankou nan grafouyen, Mwen ka tcheke yon kondisyon isit la nan C, si a pa fè sa ki egal nil. Se konsa, si ou pa te wè sa a anvan, sa a jis vle di pa fè sa egal-ego. Se konsa, li opoze a nan egal egal, ki, sonje, ki diferan de yon sèl egal, ki se devwa. Se konsa, si nan fè sa ki pa egal Nil, sèlman Lè sa a fè Mwen vle egzekite liy sa yo nan Kòd. Se konsa, nan lòt mo, anvan m 'plonje nan je fèmen epi yo kòmanse iteration sou a, ak trete li tankou si li se yon sekans nan karaktè, mwen pral premye tcheke, rete tann yon minit, se s definitivman pa egal a valè sa a espesyal, nil? Paske si li se, move bagay ka rive. Se pou koulye a, asime ke move bagay pase vle di aksidan pwogram ou an, epi ou pa ka nesesèman geri. Se konsa, franchman, li sanble uglier. li nan kalite konfizyon kounye a nan ti koutje sou nan. Men, sa a pral vin pi plis abitye anvan lontan. Men, mwen pral pwopoze kounye a youn lòt amelyorasyon. Sa a yon amelyorasyon Correct. Pwogram mwen an se kounye a pi plis kòrèk, paske nan ka a ra ki pa ase memwa egziste, mwen pral manch li yo, epi mwen pral jis pa fè anyen. Mwen omwen pa pral aksidan. Men, kite a fè yon vèsyon final isit la. Ak yon dosye rele string2.c. Mwen pral kole ki Kòd menm sèlman pou moman yon, ak mwen pral nan mete aksan sou sa a liy, 11, isit la, sèlman pou moman yon. Koulye a, reyalite a se sa konpilateur entelijan tankou sonnen te kapab ranje sa a pou nou dèyè sèn nan san yo pa nou an tout tan tout tan konnen. Men, kite a panse osijè de sa a fondamantalman kòm yon konsepsyon Pwoblematik. Liy sa a nan kòd se, nan kou, li di yo: inisyalize kèk varyab mwen a 0. Sa a se trè senp. Ak sa ki ankò se sa a deklarasyon, isit la, mwen ++, ap fè? Nou te wè l 'devan, men nou pa t 'reyèlman pale sou sa. ODYANS: incrementing mwen. DAVID J. Malan: incrementing mwen. Se konsa, sou chak iterasyon nan sa a riban, chak sik, w ap incrementing mwen pa youn. Se konsa, li vin pi gwo, ak pi gwo, ak pi gwo jouk bouk la mete fen. Ki jan li mete fen nan? Oke gen nan sa a mitan kondisyon ki nou te itilize anvan. Ou te wè ak nan valktroug nan P ansanm lan. Men, sa ki pawòl sa yo? Èske bouk ki anba la a se konsa lontan ke mwen se mwens pase ki sa? ODYANS: Longè a nan fisèl la. DAVID J. Malan: nan longè fil la. Se konsa, li tradui trè propr angle nan sans sa. Koulye a, pwoblèm nan se ke chak fwa mwen repekte nan sa a riban nan teyori, Mwen mande kesyon sa a. Èske mwen mwens pase longè a fil nan s? Èske mwen mwens pase longè a fil nan s? Koulye a, se mwen chanje sou chak iteration? Li se. Paske nan ++ la. Se konsa, chak iteration mwen a ap vin pi gran. Men, se nan ap resevwa pi gwo, oswa ki pi piti, oswa chanje nan tout? No Se konsa, an tèm de konsepsyon, youn nan aks yo ansanm ki nou eseye evalye Kòd nan klas la, sa a santi l kalite estipid. Menm jan ak ou se literalman, sou chak iterasyon nan sa a riban mande a menm kesyon modi ankò, e ankò, e ankò, ak literalman li se pa janm pral chanje. Omwen si mwen pa manyen la ak ap eseye chanje sa ki nan la. Se konsa, mwen ka fè yon ti kras pi bon pase sa a. Ak sa ki, mwen pral fè se pa deklare jis yon varyab mwen, men yon varyab dezyèm mwen pral abitrèman, men konvansyonèl, rele li n. Bay n egal a la longè fil nan s. Lè sa a, sou isit la, mwen pral fè yon entelijan ti kras optimize, se konsa yo pale, ke nan fen an nan jounen an se pa plis kòrèk oswa pa mwens kòrèk pase anvan. Men, li la yon konsepsyon pi byen. An reyalite a ke mwen lè l sèvi avèk mwens tan, mwens sik CPU, se konsa yo pale, yo reponn menm bagay la tou kesyon, men jis yon fwa. Nenpòt kesyon sou ki jeneral prensip nan amelyore, di, efikasite yon pwogram nan? Yeah? ODYANS: Poukisa ou sèvi ak [fèbl la]? DAVID J. Malan: Bon kesyon. Se konsa, poukisa nou mete ++ nan sou fen a nan mwen olye pou yo nan konmansman an nan mwen an? Nan ka sa a, li gen okenn enpak fonksyonèl. Ak an jeneral, mwen gen tandans yo itilize operatè a sifiks se konsa ke li nan yon ti kras pi plis klè tankou lè operasyon an k ap pase. Pou moun ki abitye, gen yon lòt deklarasyon annakò ak sa ou ta ka fè ++ mwen. Sa yo se fonksyonèl ekivalan nan ka sa a paske gen nan pa gen anyen lòt alantou ke incrementation. Men, ou ka vini ak ka ak liy nan kòd nan ki ki fè yon diferans. Se konsa, jeneralman, nou pa fè sa menm pale osijè de sa a youn. Paske franchman, li fè ou Kòd sexier, ak sòt de konbinar, epi mwens karaktè. Men, reyalite a se li nan yon anpil pi rèd, Mwen panse ke, menm pou mwen pou m vlope lide m ' bò kote l 'pafwa, lòd la nan operasyon yo. Se konsa, kòm yon sou kote, si ou reyèlman pa renmen sa a, menm si sa a se kalite sexy kap, ou ka tou fè mwen + = 1, ki se vèsyon an uglier nan la menm lide pou sifiks incrementation. Mwen di sa, epi ou ta dwe fè plezi nan li, men ou pral vin wè kòd kòm yon bagay bèl anvan lontan. [Ri] DAVID J. Malan: Dwa? Yeah. Kesyon nan mitan yo. ODYANS: ou bezwen di Int n? DAVID J. Malan: Ou fè pa bezwen di Int n. Se konsa, paske nou te deja di Int, ou pa bezwen di l 'ankò. Trape an se ke n gen gen kalite a menm jan ak done mwen. Se konsa, sa se sèlman yon konvenyans isit la. Yeah. ODYANS: Èske ou ka ale sou la bracket ekri an lèt detache karaktè a mwen ankò? DAVID J. Malan: Absoliman. Se konsa,% c, sonje soti nan sot pase a tan, se jis yon kontneur. Sa vle di mete yon Char isit la. antislach n, nan kou, jis vle di mete yon ti repo liy isit la. Se konsa, ki jis kite, kounye a, pyès sa a nan nouvo sentaks. Lè sa a se literalman di, gen tan pwan fisèl la rele a ak ale jwenn li yo karaktè i'th, se konsa pale. Apre sa, mwen kenbe li di karaktè i'th paske sou chak iterasyon sa a riban li a tankou si nou ap enprime soti, premye a bracket 0, kòm yon pwogramè ta ka di. Lè sa a, nan bracket 1, Lè sa a, nan bracket 2, Lè sa a, 3, Lè sa a, 4. Men, nan kou li nan yon varyab, Se konsa, mwen jis eksprime l 'ak mwen. Key, menm si, se reyalize, espesyalman si ou te pa te acclimating nan mond sa a nan pwogramasyon, kote nou tout sanble yo konte soti nan zewo, oblije kòmanse konte soti nan zewo kounye a. Paske strings, premye karaktè, a z nan Zamyla se pou pi bon oswa pou vin pi mal ale nan ap viv nan nimewo kote zewo. Tout dwa, kidonk kite m 'pote nou tounen isit la yo Zamyla ak wè sa ki nan reyèlman ale sou anba kapo a. Se konsa, gen nan sa a nosyon nan kalite Distribisyon. Ou ta ka gen aktyèlman te jwe ak sa a deja, petèt pou HACKER la edisyon an P mete yon sèl. Men, kalite Distribisyon jis refere a nan kapasite nan C ak kèk lòt lang konvèti yon sèl kalite done nan yon lòt. Koulye a, ki jan nou ta ka wè sa a bèl kareman? Se konsa, sa, sonje, se nan konmansman an nan alfabè angle a. Ak kontèks la, sonje, ki soti nan tankou yon semèn de sa se ASCII. Creole Kòd la pou Enfòmasyon Interchange. Ki se jis yon fason reyèlman long pou li di yon kat soti nan lèt nan nimewo, ak soti nan chif ki rive jiska lèt yo. Se konsa, A jiska M isit la, dot dot dot, liy moute ak, sonje, nimewo a desimal 65 sou yo. Apre sa, nou pa t 'pale sou sa a klèman, , men siman gen nan menm jan an nimewo pou lèt miniskil. Ak tout bon, gen. Mond lan deside kèk ane de sa ki ti kras yon, miniskil yon, a pwal 97. Ak yon ti kras b ki pral yo dwe 98, ak pou fè. Ak pou nenpòt lòt kle sou klavye ou, gen nan pral fè yon modèl ki sanble nan miyèt moso. Oswa équivalant, yon PO desimal. Se konsa, kesyon an nan men, lè sa a, se ki jan nou ka aktyèlman wè sa a anba kapo a? Se konsa, mwen pral ale sou nan jdi ankò. Ak olye ke kalite yon sèl sa a soti nan grafouyen, Mwen pral ale pi devan epi jis louvri moute yon bagay nan kòd la jodi a rele ASCII zewo. Epi ASCII zewo sanble tankou sa a. Se konsa, kite a vlope lespri nou alantou sa a. Se konsa, premye, mwen te kòmante kòd la, ki se bèl. Paske li nan literalman di m 'sa ou kapab espere, montre yon kat pou lèt majuskul. Koulye a, mwen pa byen konnen sa m ' vle di pa sa, Se konsa, kite a dégager. Nan lang angle, petèt yon ti jan techie lang angle, sa ki fè liy 18 parèt yo dwe fè pou nou? Jis liy 18. Ki sa ki nan li pwovoke? Ki sa ki nan li ale nan choute koupe isit la? ODYANS: Yon sikui. DAVID J. Malan: Yon sikui. Ak ki jan anpil fwa se ki ale nan repekte? ODYANS: [Entèrpozisyon vwa] sis fwa. DAVID J. Malan: Se pa sis fwa. ODYANS: 26 fwa. DAVID J. Malan: 26 fwa. Yeah, regrèt. 26 fwa. Poukisa? Oke, li nan yon ti kras etranj, men Mwen te kòmanse konte soti nan 65. Ki se etranj, men se pa sa ki mal. Li pa move pou chak di. Apre sa, mwen fè sa sèlman paske, pou egzanp sa a, Mwen kalite prevwar kapital ki Yon te 65. Koulye a, sa a se pa ki pi elegant la fason yo fè sa, nan kalite Kòd difisil valè Esoteric ki pa gen yon se tout tan tout tan espere sonje. Men, pou kounye a, remake ke mwen se fè sa moute nan 65 plis 26. Paske aparamman Mwen pa menm vle fè aritmetik a nan tèt mwen. Se konsa, mwen pral kite du a fè li. Men, Lè sa a, sou chak bouk, chak iteration nan riban an, mwen incrementing mwen. Se konsa, kounye a sa a sanble yon ti kras skre. Men, nou ta dwe gen bilding lan debaz blòk ak ki yo konprann sa a. C% se jis yon kontneur pou yon Char. % Mwen se yon kontneur pou yon Int. Epi li vire soti ke lè l sèvi avèk sa a nouvo sentaks, parantèz sa a, se konsa yo pale, se konsa yon kalite done andedan yon parantèz, Mwen ka fòse du a nan trete mwen pa se yon nonb antye, men kòm yon Char. Kidonk ki montre m 'pèsonaj la ekivalan nan nimewo sa a. Koulye a, desann isit la, sa a Kòd se bèl anpil idantik. Mwen jis te vle fè super eksplisit lefèt ke mwen kòmanse nan 97, ki se miniskil yon. Sou moute nan 26 plis lèt. Apre sa, mwen doing-- ankò, Distribisyon mwen, se konsa pale. Oswa kalite Distribisyon mwen, se konsa pale. Soti nan yon int nan yon Char. Se konsa, rezilta nan fen a pwal, franchman, enfòmasyon nou deja konnen. Mwen pral fè ascii-0 pa dot-- dot c. Avi, pwobableman ou te fè ki erè jan mwen jis te fè aksidantèlman. Fè wèb-0. Koulye a, mwen pral fè ./ascii-0. Mwen pral rale nan, ak malerezman li a pral woulo liv sou ekran an. Men, nou wè yon tablo kote tout yon kat a 97, kat b 98, epi si nou woulo liv moute pi lwen A, nan kou, kat nan 65. Se konsa, sa a se sèlman yo di ke sa nou ve yo te preche, gen ekivalans sa a, se an reyalite ka a nan reyalite. Se konsa, yon modifikasyon rapid nan sa a. Se pou m 'louvri moute wèb-1.c. Ak avi sa a entelijan, sòt a, klarifikasyon nan sa a. Sa a se wèb-1.c, ak remake bagay sa a fou. Epi sa a vrèman vin nan kè a nan sa ki òdinatè ap fè a. Menm si nou moun ta pa konte an tèm de letters-- Mwen pa kòmanse panse, tout dwa yon Lè sa a, b, epi sèvi ak sa yo ki yo konte objè fizik. Ou ka sètènman di ke mwen vle inisyalize kèk varyab rele c-- men mwen te kapab yo te rele anything-- sa a se konsa c se initialisé yo nan kapital A. Paske nan fen jounen an, òdinatè a pa pran swen sa w ap estoke, li sèlman traka ki jan ou vle prezante enfòmasyon sa a. Ki jan ou vle òdinatè a nan entèprete ki modèl nan Bits? Se konsa, sa a se pa yon bagay mwen ta jeneralman rekòmande fè. Li nan reyèlman jis yon egzanp transmèt ke ou ka absoliman inisyalize yon nonb antye relatif nan yon Char. Paske anba a kapo nan yon Char, nan kou, se jis yon nimewo ki ant 0 a 255. Se konsa, ou kapab sètènman mete l 'anndan yon Int. Ak sa ki sa a tou demontre se ke nou ka konvèti soti nan yon tape nan yon lòt, isit la, finalman enprime menm bagay la. Ak an reyalite, sa a mwen pral ranje online-- te vle di yo di sa a, ankò, isit la. Kite m 'netwaye sa a moute sou entènèt, ak nou pral wè nan yon solisyon sou entènèt jan sa nesesè, sa ki te gen entansyon la. OK. Egzanp Se konsa, dènye kounye a ki enplike yon a ak b a ak Lè sa a, nou pral pran bagay sa yo moute yon Notch. Se konsa, ak yon la ak b a ak c a nan lèt majiskil nan ak ekivalans a ladan l ', se pou yo pran yon gade nan egzanp sa a, isit la. Yon lòt Kòd egzanp. Nou pral louvri yon sèl sa a, se deja fè, se konsa nou pa gen yo tape l ' tout soti nan grate. Ak avi nan patisipe nou ap sèvi ak miltip header dosye, nan mitan ki se nouvo zanmi nou an, string.h. Koulye a, sa a sanble, nan premye gade, yon ti kras skre. Men, kite a wè si nou pa ka rezone nan sa ki k ap pase sou isit la. Premye fwa mwen jwenn yon fisèl soti nan itilizatè a, ak Mwen mete ki fisèl nan yon varyab rele nan. Kopi keratin soti nan anvan. Nan liy 22, mwen se aparamman fè ekzakteman ki sa Mwen te fè yon ti moman de sa, mwen iteration sou karaktè yo ki nan la. Ak ke trik nouvèl yo nouvo isit la yo lè l sèvi avèk longè fil, optimize ki minè a nan estoke longè a fisèl nan n, olye ke w rele strlèn ankò, e ankò, e ankò. Ak jis tcheke ki mwen se mwens pase n. Koulye a, isit la, bagay sa yo jwenn yon ti kras ki enteresan. Men, li la jis yon aplikasyon nan sa a menm lide nouvo. Ki sa ki nan lang angle fè s bracket mwen reprezante? ODYANS: Konte chak N. [fèbl]. DAVID J. Malan: Konte chak karaktè. E menm plis suksen, s bracket mwen reprezante ki sa? Èske ou ta di. Pa mete ou sou tèren an isit la. ODYANS: Well-- DAVID J. Malan: Se konsa, si mo a is-- si fisèl la se Zamyla, ki starts-- ODYANS: --you fas ak karaktè yo separately-- DAVID J. Malan: Bon. Egzakteman. Notasyon a bracket kare pèmèt ou jwenn aksè nan chak karaktè endividyèlman, se konsa s bracket 0 a pwal nan premye karaktè nan fisèl la. s bracket 1 a pwal dezyèm lan, ak pou fè. Se konsa, kesyon an mwen mande, isit la, nan kondisyon sa a se ki sa? Èske pèsonaj la i'th nan pi gwo a pase oswa egal a miniskil yon? E ki sa sa vle di, isit la, ak ampersands yo doub? ODYANS (ansanm): Ak. DAVID J. Malan: Lè. Se jis nan ekivalan a sa a. Epi se pa yon mo kle nan C, ou gen itilize, annoyingly, comercial comercial. Lè sa a, Kontrèman, ap mande se s la i'th karaktè mwens pase oswa egal miniskil z? Epi ankò, isit la nan kote konprann kache nan egzekisyon pou yon òdinatè fè sans. Remake, menm si mwen gen dot dot dot a lòt bò a, sanble yon nan z an miniskil yo tout valè vwazen moute soti nan 97 sou yo. Ak menm bagay pou majuskul kòmanse nan 65. Se konsa, Takeaway a, lè sa a, se ke nan lang angle, ki jan ou ta dekri sa liy 24 ap travay? Yeah? ODYANS: Sou 24 li a tcheke yo wè si wi ou non chak karaktè se yon miniskil. DAVID J. Malan: Li nan tcheke si wi ou non chak karaktè se yon lèt miniskil. Se konsa, menm plis suksen, se nan karaktè i'th nan s miniskil? Sa a tout nou ap eksprime isit la lojikman, yon ti kras cryptically, men finalman trè kareman. Se s a i'th miniskil karaktè? Si se konsa, ak isit la nan kote bagay sa yo jwenn yon ti kras lide koube pou jis yon ti moman, si se konsa, ale pi devan epi enprime soti yon karaktè. Se konsa, sa a se jis yon kontneur, men ki sa karaktè? Poukisa mwen fè a bracket mwen mwens ekspresyon sa a isit la? Oke remake modèl la isit la. Nimewo yo aktyèl pa gen pwoblèm anpil. Men, avi ke 97 se ki jan lwen lwen 65? ODYANS: 32. DAVID J. Malan: 32. Ki jan lwen lwen se 98 soti nan 66? ODYANS: 32. DAVID J. Malan: Little c soti nan gwo C? 32. Se konsa, gen nan 32 oublions soti nan yon lèt nan yon lòt. Se konsa, franchman mwen, te kapab senplifye sa a ak sa yo ki. Men, sa a, mwen kalite difisil kodaj sa a konpreyansyon nivo ki ba ke pa gen okenn lektè se tout tan ale nan konprann. Se konsa, mwen pral jeneralizasyon li kòm, mwen konnen lèt yo miniskil yo pi gran. Mwen konnen lèt yo kapital yo ki pi piti valè, iwonilman. Men, sa a se efektivman ekivalan a li di fè soustraksyon 32 soti nan nan bracket mwen. Se konsa, nan yon kontèks la nan sa yo lèt, si lèt la k ap pase yo yon, miniskil yon, epi mwen fè soustraksyon 32, ki efè sa yo ki te, matematik, sou miniskil yon? ODYANS: Capitalizes-- DAVID J. Malan: lèt majiskil li. Ak tout bon, sa a se poukisa nou an se pwogram ki rele tirer zewo. Pwogram sa a swa avantaj yon lèt, apre yo fin tcheke si li se tout bon yon lèt miniskil. Sinon, nan liy 30, ki sa mwen dwe fè si li pa yon lèt miniskil ke mwen se gade nan nan yon patikilye iteration nan riban an. Jis enprime li soti. Se konsa, pa chanje bagay sa a, se pa menm miniskil. Mete restriksyon sou tèt ou bay ti kras yon nan ti kras z. Koulye a, sa a se san patipri Esoteric. Men, nan fen jounen an, sa a se ki jan nou, yon fwa sou yon tan, te gen aplike bagay sa yo. Si mwen olye louvri tirer yon sèl, oh Mèsi Bondye. Genyen nan yon fonksyon rele anwo ki ka fè tout sa nou jis te fè nan yon nivo jistis ki ba. Koulye a, yo anwo se enteresan paske li se te deklare nan yon dosye, epi ou ta sèlman konnen sa a lè w tcheke dokiman an, oswa yo te di, di, nan klas, kote li egziste, nan yon dosye rele ctype.h. Se konsa, sa a se yon lòt zanmi nouvo nan nou. Men, anwo fè egzakteman sa non li sijere. Ou ka pase nan, kòm yon agiman, ant parantèz sa yo, kèk karaktè. Mwen pral pase nan pèsonaj la i'th nan la lè l sèvi avèk nouvo notasyon anpenpan nou an ki enplike parantèz kare. Epi pran yon devine, ki sa ki retounen nan valè de anwo aparamman pral yo dwe? Yon lèt kapital la. Yon lèt kapital la. Se konsa, si mwen pase nan miniskil yon, èspere ke, pa definisyon nan anwo kay la, li pral retounen yon majuskul A. Sinon, si li pa yon lèt miniskil nan plas an premye, mwen jis enprime li. Ak tout bon, avi a dezyèm zanmi isit la. Pa sèlman anwo egziste, men se pi ba, ki aktyèlman reponn kesyon sa a pou mwen. Koulye a, moun ki va te ekri bagay sa yo, 10 la ane de sa, ou konnen ki sa? Aplike anwo e se pi ba lè l sèvi avèk Kòd tankou sa a. Men, ankò, ki konsistan avèk ide sa a nan Abstraksyon lwen, sòt de, pi ba nivo aplikasyon detay. Ak kanpe sou zepòl yo nan moun ki moun ki te vin anvan nou, lè l sèvi avèk fonksyon tankou anwo ak se pi ba, ki bèl ase yo joliman yo te rele yo di sa yo fè, se yon paradigm bèl bagay yo adopte. Koulye a, li vire soti ke si mwen li paj la nonm pou, di, nan anwo kay la, Mwen aprann yon lòt bagay. Se konsa, nonm toupper. Li se yon ti kras akablan yo. Men, avi, isit la nan ki mansyone nan dosye a header ke mwen ta dwe itilize. Kòm yon sou kote, paske sa a se twonpe, fonksyon an sèvi ak antye olye pou yo charaktèr pou rezon nan erè kont kouran. Men, nou pral petèt vini tounen nan ke nan lavni an. Men, remake, isit la, konvèti anwo lèt c a majuskul si sa posib. Se konsa, se trè senp. Epi, koulye a kite a gen yon ti kras pi plis espesifik. Se pou yo gade nan pati nan la paj nonm anba valè retou. Valè a tounen se ke nan lèt la konvèti. Oswa c, si konvèsyon an pa te posib, ki kote c se opinyon orijinal la. Ki Mwen konnen soti isit la, soti nan agiman nan anwo kay la. Se konsa, ki sa ki Takeaway a nan sa a? Valè a tounen se ke nan lèt la konvèti, oswa c, lèt orijinal la, si konvèsyon an pa te posib. Ki sa ki amelyorasyon kapab mwen Se poutèt sa fè nan konsepsyon Kòd mwen an? Yeah? ODYANS: Ou ka retire lòt moun la. DAVID J. Malan: mwen kapab retire deklarasyon an lòt moun, epi li pa jis deklarasyon an lòt moun. ODYANS: Ou ka retire [fèbl]. DAVID J. Malan: mwen kapab retire fouchèt la tout antye nan wout la, a si lòt moun tout ansanm. Se konsa, tout bon, kite m 'louvri vèsyon final la nan sa a, kapitalize-2 ak avi jis ki jan, si ou pral, sexy, kòd la se kounye a resevwa, nan ke mwen te redwi soti nan kèk sèt oswa konsa liy nan jis kat, fonctionnalités a ke mwen gen entansyon pa senpleman rele anwo, pase nan a bracket mwen, ak enprime soti, ak kontneur% c a, ki karaktè patikilye. Koulye a, joui, gen yon ensèk, oswa omwen risk pou yo yon ensèk, nan pwogram sa a. Se konsa, jis tounen vin nan yon Takeaway pi bonè, kisa pou m pwobableman tou fè nan pwogram sa a fè li plis gaya, se konsa ke gen nan okenn fason li kapab aksidan, menm nan kèk ka ki ra? ODYANS: Asire w ke li pa nil. DAVID J. Malan: Asire w ke li pa nil. Se konsa, reyèlman, fè sa-a super apwopriye, mwen ta dwe fè yon bagay tankou, si s se pa nil, Lè sa a, ale pi devan epi egzekite liy sa yo nan Kòd, ki Mwen kapab Lè sa a, indent tankou sa yo, ak Lè sa a mete nan atèl fèmen m 'yo. Se konsa, bon mare ansanm de de lide yo. Yeah? ODYANS: Èske ou ta kapab itilize yon fè pandan y ap riban, olye? DAVID J. Malan: Te kapab Mwen fè yon fè pandan riban? ODYANS: --you vle asire w ke ou aktyèlman [fèbl]. DAVID J. Malan: Te kapab ou itilize yon fè pandan? Kout repons, pa gen okenn. Paske w ap sou yo prezante yon lòt ka kwen. Si fisèl la se nan zewo longè. Si pou egzanp, mwen jis frape Antre, san yo pa janm tape Zamyla. Mwen pral lage ou tounen yon vrè fisèl, kòm n ap pètèt wè, ki gen zewo karaktè. Li la toujou yon fisèl, li nan jis super kout. Men, si ou sèvi ak yon fè ti tan, w ap ale nan je fèmen eseye fè yon bagay ki gen respekte ak sa yo ki fisèl, e pa gen anyen k ap pase yo dwe la. ODYANS: Bon, si ou te fè fè [fèbl] pandan y ap s-- DAVID J. Malan: Oh mwen wè, kenbe ap resevwa yon fisèl soti nan itilizatè lan. Repons Se konsa, kout, ou te kapab, epi kenbe pestering yo ba w yon afè sa a, se kout ase anfòm nan memwa. Absoliman. Mwen jis te chwazi pa fè sa. Si yo pa ban m 'fisèl mwen an vle, mwen yon moun kite fimen, mwen bay yo. Men, absoliman, pou ki rezon, ou ta ka absoliman fè sa. Se konsa, dosye header bibliyotèk la ki nou ap kounye a abitye ak yo se sa yo, isit la. Creole I / O, CS50.h, string.h, ctype.h, e gen, tout bon, lòt moun. Kèk nan nou yo te dekouvri bibliyotèk la matematik nan math.h. Men, se pou m 'entwodui ou, kounye a, resous sa a ke anplwaye CS50, Davin, ak Rob, ak Gabe patikilye te mete ansanm. Ki pral byento mennen sou sit entènèt kou a. Yo rele li CS50 referans. Ki jis ba ou yon rapid gou nan li, ap travay kòm swiv. Kite m 'ale nan reference.cs50.net. Ou pral wè sou bò gòch bò yon lis akablan nan fonksyon ki vini ak c. Men, si mwen pran swen, pou moman an, sou yon bagay tankou strlèn, Mwen ka tape li a. Li filtè desann lis la jis sa mwen pran swen sou. Mwen pral klike sou li. Epi, koulye a sou bò gòch la, ou pral wè sa ki nou espere se yon plis dwat, moun zanmitay esplikasyon sou kouman fonksyon sa a travay. Retounen longè yon fisèl. Isit la nan yon Rezime, isit la nan ki jan ou sèvi ak li an tèm de dosye a header, ak an tèm de sa ki fonksyon an sanble an tèm de agiman li yo. Lè sa a, isit la, retounen longè yon fisèl. Men, pou moun nan nou pi alèz, ou ka aktyèlman klike sou plis confortable, ak sa ki nan sa a paj, kounye a, pral chanje yo dwe valè yo default nan sa ki ou jwenn lè l sèvi avèk paj la nonm. Nan lòt mo, CS50 referans se yon senplifikasyon nan kè yon nonm paj pa anplwaye a, pou elèv yo. Patikilyèman, sa yo ki mwens konfòtab ak nan ant, pou ke ou pa gen pou yo eseye vlope lide ou alantou li, franchman, kèk sentaks san patipri skre ak dokiman nenpòt moman. Se konsa, kenbe sa nan tèt ou nan jou sa yo rive. Se konsa, isit la, ankò, se yon Zamyla. Se pou nou kounye a poze yon kesyon sa a, se yon ti kras plis imen aksesib. Mèsi a Chang, ki moun ki te gen enprime plis elefan san rete pou jou ki sot pase yo kèk. Nou gen yon opòtinite yo ba omwen youn nan yo ale. Si nou te ka jwenn sèlman yon sèl volontè yo vini sou jiska trase sou ekran an. Kouman sou isit la? Vini non sou yo. Ki jan ou rele? ALEX: Alex. DAVID J. Malan: Alex. Tout dwa. Alex, vini sou yo. Nou ap sou yo wè ou ekriti sou ekran an isit la. Tout dwa, bèl al kontre ou. ALEX: Nice ou kontre ou. DAVID J. Malan: Tout dwa. Se konsa, super senp egzèsis. Bar se pa segondè jwenn yon elefan jodi a. Ou ap jwe wòl nan getstring. Men, mwen pral jis di ou fisèl la ke ou te vinn. Ak ta kwè ke ou, getstring, yo te rele. Ak moun nan, tankou m ', gen tape nan Zamyla, Z-A-M-Y-L-A. Jis ale pi devan epi ekri Zamyla sou la ekran tankou si ou gen vinn li ak ki estoke li yon kote nan memwa. Si w kite plas pou ki sa yo pral plizyè lòt words-- sa a, se OK, kenbe prale. [Ri] Se konsa, Zamyla, Excellent. Se konsa, kounye ta kwè ke ou, getstring, yo rele yo ankò. Ak Se poutèt sa, mwen ofri ou, nan la entènèt klavye, ak yon lòt non, Belinda. Tout dwa. Epi, koulye a getstring nan pwochen tan se rele, mwen tape nan yon bagay tankou Gabe, G-A-B-E. W ap reyèlman pran nan kè aksè o aza memwa. Ki se desen tout bagay konplètman owaza. OK. [Ri] ALEX: Padon ekriti mwen an se move. DAVID J. Malan: Non, sa se OK. Ak ki jan sou Rob, R-O-B. OK. Bon. Se konsa, mwen pa t 'antisipe ou ta kalite kouche bagay sa yo soti nan fason sa. Men, nou ka fè travay sa a. Se konsa, kouman ou te ale sou tap mete soti char sa yo nan memwa? Nan lòt mo, si nou panse a sa a ekran nwa rektangilè repwezantan yon kòm RAM, oswa memwa òdinatè a. Epi sonje ke RAM se jis yon pakèt antye nan bytes, ak bytes se yon pakèt antye nan miyèt moso. Ak Bits se yon jan kanmenm aplike, jeneralman ak kèk fòm elektrisite nan kenkayri. Se konsa, ki nan sòt de la stratifikasyon nou te pale sou ak kapab kounye a pran pou yo akòde. Ki jan ou te ale sou n ap deside ki kote yo ekri Rob kont Gabe kont Belinda kont Zamyla? ALEX: Mwen jis te fè li nan la lòd ke ou te di m '. DAVID J. Malan: E ke se vre. Men, sa ki reji kote ou te mete Non Belinda a ak non Gabe a? ALEX: Pa gen anyen? DAVID J. Malan: [ri] Se konsa, ki travay, ki nan amann. Se konsa, òdinatè yo ti kras plis lòd pase sa. Se konsa, lè nou implement-- rete la pou jis moman sa lè nou aktyèlman aplike yon bagay tankou getstring nan yon òdinatè, Zamyla ta ka mete deyò bèl anpil tankou ou te fè sou ekran an, gen. Ak sa ki se kle a yon avi isit la, sa Alex te fè, ki gen la se kalite yon delimiter nan mitan chak nan pawòl sa yo, dwa? Ou pa t 'ekri Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- nan lòt mo, gen nan kèk kalite nan delimiter ki sanble yo dwe, sòt de, espas o aza ant divès kalite pawòl sa yo. Men, sa a bon, paske nou moun kapab kounye a visualized ke sa yo se kat strings diferan. Li pa jis yon sèl sekans nan anpil nan karaktè. Se konsa, yon òdinatè, lè sa a, pandan se tan, ta ka pran yon fisèl tankou Zamyla, mete chak nan sa yo lèt andedan nan yon multiple nan memwa. Men, nimewo sa a se pi gwo anpil, nan kou, pase sis karaktè. Genyen yon pakèt antye nan RAM. Se konsa, koulye a, sa a kadriyaj nan bwat ki pral reprezante sa Alex jis te fè isit la sou ekran an. Epi, koulye a, Alex, nou ka ofri w yon ble oswa yon elefan zoranj soti nan Chang. ALEX: Mwen pral pran yon elefan ble. DAVID J. Malan: Yon elefan ble. Se konsa, yon gwo wonn nan aplodisman, si nou te kapab, pou Alex isit la. [Aplodisman] ALEX: Mèsi. DAVID J. Malan: Mèsi poutèt ou. Se konsa, Takeaway a se ke, menm si nan modèl kalite chanje sou tan, isit la sou tablo a, te gen sa a delimiter nan mitan strings yo divès kalite ki Alex te resevwa pou nou. Koulye a, òdinatè, franchman, ta ka fè menm bagay la. Yo te kapab kalite plok strings nenpòt kote nan RAM. Moute isit la, sou isit la, desann isit la, desann isit la. Yo te kapab fè egzakteman sa. Men,, nan kou, sa a, se pwobableman pa planifikasyon an pi byen. Dwa? Si mwen te kenbe mande Alex jwenn non, pwobableman li ta mete kèk plis desann isit la, petèt moute isit la, sou isit la, sou isit la, evantyèlman sou isit la. Men, avèk yon ti jan pi plis planifikasyon, sètènman, nou te ka mete bagay sa yo soti plis propr. Ak tout bon, se sa ki yon òdinatè fè. Men, trape an se ke si fisèl nan pwochen mwen jwenn apre Zamyla se yon bagay tankou Belinda a, pwopoze kote nou ta ka ekri la lèt b ki gen rapò ak griy sa a? Ki kote ou ta ale? A dwat a yon a, anba a z an, pi ba a yon a? Ki sa ki ta ensten premye ou ta dwe ye? ODYANS: Anba a z la. DAVID J. Malan: Se konsa, anba a z la. Epi sa a, trè senp, dwa? Li nan kalite pwòp, li nan sa nou fè sou yon klavye lè nou frape Antre, oswa yon imèl lè yo fè yon lis pus de bagay sa yo. Men, reyalite a se ke òdinatè eseye yo dwe pi efikas, ak bachote sètènman kòm anpil done nan RAM ke posib, pou ke ou pa gaspiye nenpòt bytes. Se konsa, ke ou pa gaspiye nenpòt ekran byen imobilye. Ak pwoblèm nan, menm si, se ke si nou literalman mete lèt la b apre yon, ki jan nou pral konnen ki kote Non Zamyla a fini ak non Belinda a kòmanse? Se konsa, ou moun jis pwopoze a, byen, frape Antre nan kle, esansyèlman. Mete l 'desann pi ba a. Oswa menm kòm Alex te fè, jis kòmanse ekri Non nan pwochen te anba a yon sèl anvan an, ak anba a ki yon sèl, ak Lè sa a, anba a ki yon sèl. Sa a se yon Replik vizyèl. Odinatè gen yon lòt Replik vizyèl, men li la yon ti kras pi plis somèr. Li nan sa a karaktè Funky. Antislach 0, ki se petèt okoumansman de antislach n, ak pou fè, kounye a. Sekans yo chape espesyal. Antislach 0 se yon fason a nan repwezantan uit zewo Bits nan yon ranje. 0000 0000. Wout la ou eksprime ki se pa yo frape nimewo a zewo sou klavye ou, paske an reyalite ki se yon Char ASCII. Li sanble ke yon nimewo, men se aktyèlman yon nimewo desimal ki reprezante sikilè a glif, Tipografi nan sikilè. Pandan se tan, antislach zewo vle di, literalman mete uit zewo bytes isit la pou mwen. Se konsa, sa a se yon ti jan abitrè. Nou te ka te itilize nenpòt ki modèl nan Bits, men mond lan deside kèk ane de sa, ke yo reprezante nan fen yon fisèl nan memwa, jis mete yon pakèt antye nan zewo. Paske nou ka detekte sa. Koulye a, sa vle di ke pa gen okenn lèt nan an ka alfabè dwe reprezante ak zewo. Men, sa a OK, nou te deja wè ke nou ap lè l sèvi avèk 65 sou moute nan 97 sou yo. Nou pa t 'jwenn nenpòt kote fèmen nan tout zewo. Se konsa, Belinda nan memwa yon òdinatè a se aktyèlman ale nan ale isit la. Mwen te trase li nan jòn jis trase atansyon nou an nan li. Ak avi, tou, sa a se konplètman abitrè. Mwen te trase li kòm yon griy. Tankou, RAM se jis kèk objè fizik. Li pa nesesèman gen ranje ak kolòn, se pou chak. Li nan jis te resevwa yon pakèt antye nan bytes aplike nan pyès ki nan konpitè yon jan kanmenm. Men, si apre Belinda mwen tape nan non Gabe a, li te ale nan fini isit la nan memwa, epi si mwen tape nan non Daven a, pou egzanp, li te ale nan fini isit la. Apre sa, mwen ka kontinye ekri menm plis non. Malerezman, si mwen eseye ekri yon non super long, Mwen ta ka evantyèlman kouri soti nan memwa. Nan ka sa a, getstring se pral retounen nil, jan nou te di. Men, Erezman, omwen nan sa a vizyèl isit la, nou pa t 'jwenn byen ki lwen. Koulye a, sa ki nan bèl se ke sa a lide jeneral nan trete bagay tankou se te nan bwat se reprezantan nan yon karakteristik nan C ak yon anpil nan lang, li te ye kòm yon etalaj. Yon etalaj se yon lòt kalite done. Li se yon estrikti done, si ou vle. Estrikti nan sans nan li vrèman, kalite, kap tankou yon bwat, omwen nan je lide ou a. Yon etalaj se yon vwazen sekans nan kalite done ki idantik, tounen nan tounen nan fè bak nan tounen. Se konsa, yon fisèl, nan lòt mo, se yon etalaj nan char. Yon etalaj de karaktè. Men, li vire soti ou ka gen ranje nan grap de bagay sa yo. An reyalite, nou ka mete menm nimewo nan yon etalaj. Se konsa, fòm lan nan ki nou ap ale nan kòmanse deklare done sa a estrikti li te ye kòm yon etalaj se tou ale nan itilize parantèz kare. Men, sa yo parantèz kare yo ale nan gen diferan siyifikasyon nan kontèks sa a. Li kite yo wè li jan sa a. Sipoze ke mwen louvri moute yon dosye nouvo isit la. Apre sa, mwen sove sa a kòm ages.c. Apre sa, m'a sove sa a nan dosye mwen isit la. Epi, koulye a, mwen pral ale pi devan epi yo kòmanse sezisman yon bagay tankou gen ladan CS50.h, gen ladan yo stdio.h, Int anile prensipal. Lè sa a, andedan nan isit la, mwen vle premye gen yon int rele laj. Men, mwen pral yo sèvi ak ke yo ka resevwa yon Int soti nan itilizatè a pou laj li. Men, se pwogram sa a vle di ke yo dwe itilize pa moun miltip, pou kèlkeswa kontèks. Mwen te gen yon liy nan moun. Tout moun nan yo gen yo tape nan yo gen laj pou petèt kèk, mwen pa konnen, konpetisyon, oswa evènman yo ke yo te rive pou. Se konsa, moun kap vini an, mwen bezwen yon lòt varyab. Paske si mwen jis fè laj vin getInt, ki nan ale nan nip, oswa recouvrir laj moun nan anvan yo a. Se konsa, se pa bon. Se konsa, premye ensten mwen ta kapab, oh, tout dwa, si mwen vle w ka jwenn plizyè moun nan ages-- kite a rele age1 sa a, int age2 vin Int, Int age3 vin getInt. Epi, koulye a, mwen pral sèvi ak kèk kòd pseudocode isit la. Fè yon bagay ak moun ki nimewo. Nou pral kite pou yon lòt jou sa n ap fè a, paske nou sèlman swen pou moman sa a sou age1, age2, age3. Malerezman, yon fwa mwen konpile pwogram sa a li mete l 'nan devan nan itilizatè aktyèl la, sa ki nan desen an fondamantalman pòv nan desizyon mwen sanble yo te fè? Yeah? ODYANS: [fèbl] DAVID J. Malan: Yeah, Mwen pa gen menm yo te eseye eseye figi konnen kouman anpil laj Mwen aktyèlman pran swen sou? Si mwen gen mwens pase twa moun isit la, ak Se poutèt sa mwens pase twa laj, Mwen toujou je fèmen tann twa. Bondye padon kat moun montre moute. Pwogram mwen jis pa pral menm sipòte yo. Se konsa, sa a, depi lontan istwa ti bout tan, se pa yon abitid bon. Dwa? Mwen te esansyèlman kopye ak rakle postal ak jis tweaking non yo varyab. Epi, Bondye mwen, si ou te gen, pa twa laj, men 10, oswa 100, oswa menm 6,500 étidyan, pou egzanp. Sa a pa pral yo dwe patikilyèman Kòd elegant, oswa dirab. W ap ale nan gen yo reyekri pwogram la chak fwa nimewo ou nan moun chanjman. Se konsa, Erezman, nan aktyèl nou an ages.c dosye pou jodi a, nou gen yon solisyon plis entelijan. Premyèman, mwen pral prete a konstwi nou te itilize yon fwa kèk, sa a fè pandan y ap riban, yo nan lòd jwenn kantite moun ki nan sal la. Mwen jis ale enportune itilizatè a, ankò e ankò, jiskaske li ban m ' yon valè de n ki nan yon nonb antye relatif pozitif. Mwen te kapab itilize, dènye tan an jwenn pozitif Int. Men, nou pa gen sa pou reyèl, se konsa mwen te ale pi devan ak ap aplike ide sa a. Koulye a, desann isit la, sa a se nouvo jwe fent la. Nan liy 27, kòm kòmantè yo nan liy 26 sijere, deklare yon etalaj nan ki nan magazen laj tout moun lan. Se konsa, si ou vle jwenn, pa gen yon sèl Int, pa de antye, men yon pakèt antye nan antye. Espesyalman n nonm antye yo, yo te n ta ka gen twa, ta ka 100, ta kapab 1,000. Sentaks la, byen tou senpleman, se yo di, ki sa done kalite ou vle a? Ki sa ou vle yo rele ki ti moso nan memwa? Ki sa ou vle yo rele kadriyaj la ki sanble tankou sa a pictorially? Ak nan parantèz isit la, ou di ki jan gwo ou vle etalaj la yo dwe. Se konsa, byen bonè, lè m 'te di a sentaks se yon ti kras diferan isit la, nou toujou ap lè l sèvi avèk parantèz kare, men lè mwen deklare yon etalaj, nimewo a andedan nan la parantèz kare vle di ki jan gwo ou vle etalaj la yo dwe. Nan kontras, lè nou te lè l sèvi avèk la bracket mwen yon ti moman de sa, s, yon fisèl, se vre yon etalaj de char, men lè ou pa ap deklare yon varyab, menm jan ak mo kle sa a isit la, w ap tou senpleman ap resevwa yon endèks espesifik, yon espesifik eleman ki soti nan ki etalaj. Yon fwa nou konnen ke, rès la nan sa a se senp. Si nouvo mwen premye ale nan enprime soti sa ki nan laj la nan moun Nimewo mwen. Ki kote mwen jis di nimewo moun yon sèl, Nimewo moun de, moun nimewo twa. Apre sa, mwen jis ap fè aritmetik, se konsa ke gen moun ki tankou nòmal, nou konte soti nan yon pou sa a pwogram, epi yo pa soti nan zewo. Lè sa a, mwen rele getint, men mwen magazen repons lan nan laj bracket mwen. Ki se laj la i'th nan etalaj la. Se konsa, Lè nou konsidere ke, dènye fwa nou te trete bwat sa yo kòm char pou non Zamyla a, ak lòt moun. Koulye a, sa yo bwat reprezante 32 Bits, oswa kat bytes nan ki nou ka magazen yon int, yon int, yon Int. Tout nan yo ki, ankò, se kalite nan done menm. Koulye a, mwen fè yon bagay komik, tankou tan pase, jis yo jistifye ekri pwogram sa a. Lè sa a, desann isit la, mwen ankò repekte sou etalaj la di yon ane nan kounye a, nimewo yon sèl volonte moun gen yon bagay ane fin vye granmoun. Epi eseye figi konnen ki math-- Mwen vle di, sa a se pa sa trè konplike aritmetik Mwen jis ajoute youn nan laj yo. Jis yo demontre, ankò, sa a. Menm jan mwen kapab endèks nan yon fisèl, a, se konsa kapab mwen endèks nan yon etalaj de laj, tankou sa a. Se konsa, ki kote sa a ale nan dwe pran nou? Se konsa, nou pral wè, finalman, yon bagay kèk nan jou sa yo rive. Youn, tout tan tout tan sa a, lè ekri pwogram pwòp ou a, tankou Mario, visye, kredi. Ou ve yo te tape non an nan pwogram lan ak frape antre. Lè sa a, ap resevwa opinyon itilizatè a la. Avèk GetString, GetInt, GetLongLong, oswa renmen an. Men, li vire soti ke C sipò yon bagay yo rele liy lòd agiman, ki se ale nan se pou nou aktyèlman jwenn nan mo ki ou tape, nan èd memwa a kliyote, apre non pwogram ou an. Se konsa, nan jou k'ap vini yo, ou ta ka tape yon bagay tankou Seza, oswa ./caesar Nimewo 13, apre sa. Nou pral wè ki jan ki travay. Paske tout bon, nan pwoblèm mete de, nou ap ale nan entwodui ou nan yon ti kras yon bagay okoumansman de Ralphie a defi pi bonè nan kartografye. Atizay la nan eskalade enfòmasyon. Sa a, an reyalite, se yon bagay ki okoumansman de sa ki Ralphie te fè sa. Sa a se yon egzanp yon chifreman algorithm rele ROT13, R-O-T 13. Ki tou senpleman vle di Thorne an lèt nan alfabè a 13 kote. Men, si ou fè sa, ou pral wè kounye a ki sa ki, petèt, yon fraz yo konnen yo. Men, wout la nou ap ale nan sèvi ak sa a, finalman, se pi plis jeneralman. Nan P mete de, nan edisyon a estanda, ou pral aplike yon koup la Algorithms, yon sèl rele Seza, yon sèl rele Vigenere. Tou de nan yo se wotasyon Algorithms, nan ki yon jan kanmenm ou vire yon lèt nan yon lèt diferan. Ak Seza tande kòz se super senp. Ou ajoute yon sèl, ou ajoute 13, oswa kèk nimewo jiska 26. Vigenere fè sa sou yon pou chak lèt ​​baz. Se konsa, Vigenere, menm jan ou pral wè nan espèk a, se plis sekirite. Men, nan fen jounen an ki sa ou pral mete ann aplikasyon ak P mete de, se ke kle ke ou itilize tou de pou chifreman ak dekripte. An referans a pwosesis la nan vire tèks plenn, gen kèk mesaj orijinal, nan tèks cypher, ki se yon bagay chiffres. Lè sa a, dechifre l 'ankò. Nan edisyon an aker, pandan se tan, ou pral charger ak yon bagay ki sanble nan Lespri Bondye, kote nou pral ba w yon dosye, ki sòti nan yon Linux tipik, oswa Mac, oswa UNIX òdinatè rele etsy modpas, ki gen yon antye pakèt moun sou usernames ak modpas. Ak moun ki modpas gen tout te chiffres, oswa ache, se konsa pale, plis byen jan ou pral wè nan espèk a. Ak edisyon an aker pral defi ou ak pran yon D 'tankou sa a, ak fisurasyon modpas la. Sa se, lè n ap kalkile konnen ki sa ki nan modpas imen a aktyèlman te ye a. Paske, tout bon, modpas yo jeneralman yo pa estoke nan klè a, epi jeneralman modpas yo ta dwe difisil yo devine. Sa a pa souvan ka a. Epi ki sa mwen te panse nou ta fè se fini avèk yon minit koup ti koutje sou nan yon patikilyèman pòv chwa nan modpas ki sòti nan yon fim ou ta ka sonje tandrès. Men, si pa, ou ta dwe lwe. [Lèktur VIDEO] -Kask, Ou enrage, sa k ap pase sou? Ki sa yo ou ap fè bay pitit fi mwen an? -Kite M prezante nan briyan jenn chirijyen plastik, Doktè Phillip Schlotkin. Nonm lan pi gran nen travay nan nan tout antye Linivè ak Beverly Hills. -Ou Samajeste. -Nen Travay? Mwen pa konprann. Li nan te deja gen yon travay nen yo. Li te l 'dous 16 prezan. -Pa Gen, li pa sa ou panse. Li nan anpil, anpil vin pi mal. Si ou pa ban m 'lan konbinezon plak pwotèj li a lè, doktè Schlotkin ap ba ou pitit fi tounen nen fin vye granmoun li. - [Glous] Nooooooooooooo. Ki kote ou te jwenn sa? -Tout Dwat. Mwen pral di, mwen pral di. -Pa Gen, Daddy, pa gen okenn. Ou pa dwe. -You're Dwat mwen renmen anpil. Mwen pral manke nen nouvo ou. Men, mwen pa pral di yo nan konbinezon pa gen pwoblèm sa. -Trè Byen. Doktè Schlotkin, fè pi mal ou. -Mwen Plezi. -Pa Gen! Rete tann, rete tann. Mwen pral di. Mwen pral di. -Mwen Te konnen li ta ka travay. Tout dwa, bay li nan m '. -Konbinezon A se youn. -Yon. -Yon. -De. -De. -De. -Twa. -Twa. -Twa. -Kat. -Kat. -Kat. -Senk. -Senk. -Senk. -Se Konsa, konbinezon a se youn, de, twa, kat, senk. Sa a konbinezon an estipid Mwen janm tande nan lavi mwen. Sa a ki kalite bagay yon moun sòt ta gen sou bagaj l 'yo. -Mèsi, Samajeste ou. [CLICKS REMOTE] -Ki Ou te fè? -Mwen Etenn miray la. -Pa Gen, ou pa t ', ou etenn fim nan antye. -Mwen Must've bourade bouton an mal. -Bon, Mete l 'tounen sou! Mete fim nan tounen sou! -Wi, Mesye! Wi, Seyè a. -Ann Al, Arnold. Vini non, Gretchen. Natirèlman ou konnen mwen pral gen yo voye bòdwo ba ou pou sa. -Bon? Èske li travay? Ki kote nan wa a konsa? -Li Te travay, mesye, nou gen konbinezon an. -Great. Koulye a, nou ka pran chak dènye souf nan lè fre soti nan planèt Druidia. Ki sa ki nan konbinezon an? -Yon, De, twa, kat, senk. -Yon, De, twa, kat, senk? -Wi. -Sa A dwòl. Mwen te gen menm bagay la tou konbinezon sou bagaj mwen. Prepare Spaceball 1 pou imedya depa. -Wi, Mesye. -yo Ak chanje a konbinezon sou bagaj mwen. [DOOR FÈMEN SOUND] [Crashes OF DOORS frape HELMET] -Ahh. [Lèktur videyo END] DAVID J. Malan: Sa a li pou CS50, nou pral wè ou an semèn pwochèn. Konteur: Epi, koulye a, Deep Panse, pa Daven Farnham. DAVEN FARNHAM: Coding nan C se se konsa anpil pi rèd pase grafonyen moun. printf, grafouyen te yon manti. [Ri soundbite]