[Jwe mizik]
>> DAVID J. Malan: Tout dwa.
Sa a se CS50.
Lè sa a se kòmansman an nan semèn 5.
Epi kòm ou ka remake gen, kèk nan materyèl la
a ap vin yon ti kras plis konplèks, dans la ti kras.
>> Epi li trè fasil, espesyalman si ou rive ve te nan abitid la pou kèk tan,
yo dwe ap eseye madjigridji desann pi anyen nou fè sa, nou ap di nan klas la.
Men mwen reyalize, se sa ki pa petèt ideyal apwòch la pedagojik
aprann sa a kalite materyèl, ak materyèl plis jeneralman.
Se konsa, nou kontan anonse pwòp Gheng ki CS50 nan
Gong te kòmanse yo prepare yon seri kanonyal nan nòt
pou kou a, se espwa a nan ki se ke, yon sèl, sa yo
pa sèlman sèvi kòm yon referans ak yon resous
pou revize materyèl ak ale tounen nan materyèl ki ta ka gen
chape ou premye fwa nan alantou li, men tou pou ke tèt nou ka gen plis
moute pase desann, lè li rive lè yo konferans,
pou ke ou ta ka angaje yo plis reflechi byen, menm jan
yo te opoze ak plis scribbly.
>> Avèk ki te di, ki sa ou ap jwenn sou sit entènèt la se dokiman tankou sa a.
Ak avi, nan gòch anwo, gen nan pa sèlman yon Table of Contents,
men tou, kòd tan ke pral imedyatman so ou
nan pati ki apwopriye a nan jwèt la videyo.
Ak sa ki Chang isit la te fè se, esansyèlman, dokimante
sa ki te pase nan ka sa patikilye konferans.
Ak anpil nan konferans yo se deja sou entènèt kounye a ak URL sa a.
Epitou, n ap kontinye afiche rès la nan tout sa yo nan fen semèn sa a,
se konsa pran avantaj de ki resous.
>> Se konsa, san brwi pi lwen, nou te kòmanse kale tounen
kouch nan ki te fisèl pou kèk tan.
Ak sa ki nou te di yon afè aktyèlman se semèn pase a?
Se konsa, Char zetwal.
Ak zetwal Char, byen, sa ki t 'ki vrèman vle di?
Oke, tout tan sa a, si nou te te rele yon fonksyon,
tankou getString, ak estoke retounen nan sa yo rele
valè de getString nan yon variable-- sa yo rele
kalite nan fisèl nou ve yo te ekri liy lan nan Kòd moute a pi wo a.
Epi li sèlman lè mwen wè m ' ekriti gwo respè isit la
fè mwen reyalize jis ki jan atròs sa a se.
>> Sepandan, kite a sipoze ke, sou bò dwat-ou
se, Alòske, yon rezonab ilistrasyon nan sa ki nan
te ale sou tout bagay sa a tan ak getString.
getString, nan kou, vin yon fisèl.
Men, sa ki ki vrèman vle di?
Sa vle di li vin yon ti moso nan memwa soti nan sistèm nan fonksyone
lè w rele yon fonksyon, ki rele malok.
Men, plis sou sa pita.
Lè sa a, li remplit ki ti moso nan memwa
ak lèt ​​yo itilizatè a gen tape nan, ki te swiv pa, nan kou,
yon karaktè nil, oswa antislach zewo nan fen anpil.
>> Pandan se tan, ki sou bò gòch-men nan istwa sa a, tout tan sa a,
nou ve yo te deklare yon varyab, tankou nan.
Ak varyab sa a se sa ki kounye a pral kòmanse rele yon konsèy.
Li pa yon bwat andedan nan yo ki nou mete fisèl la, Daven, se pou chak,
men pito nou mete nan ki kare bwat sou bò gòch la ki sa egzakteman?
Yeah?
>> ODYANS: postal la nan kote li sitiye nan memwa.
>> DAVID J. Malan: Egzakteman.
Adrès postal la nan kote Daven a sitiye nan memwa.
Epi yo pa kote tout nan Daven sitiye, se pou chak, men espesyalman adrès la
nan ki sa?
Yeah?
>> ODYANS: Premye karaktè.
>> DAVID J. Malan: karaktè nan premye nan Daven, ki, nan ka sa a,
Mwen pwopoze te abitrèman ak irealist 1, OX1,
ki jis vle di la Nimewo ekzadesimal nan 1.
Men, li la pwobableman pral yo dwe yon nimewo pi gwo anpil
ke nou ta ka trase ak yon 0x kòm yon prefiks,
repwezantan yon karaktè ekzadesimal.
Epi paske nou pa bezwen konnen ki kote rès la nan karaktè yo nan Daven
ye a, paske nan sa ki senp konsepsyon desizyon ki te fè anpil ane de sa?
Yeah?
>> ODYANS: Antislach 0.
DAVID J. Malan: Yeah, egzakteman.
Antislach a 0 pèmèt ou, kwake nan tan lineyè, Traverse fisèl la,
mache soti nan goch a dwat, ak yon riban pou, oswa yon ti tan
riban, oswa yon bagay tankou sa, epi detèmine, o, isit la
se nan fen fisèl sa a an patikilye.
Se konsa, avèk jis adrès la nan nan konmansman an nan yon fisèl,
nou ka gen aksè antye a nan li, paske tout pandan y ap sa a,
te yon afè jis te yon etwal Char.
>> Se konsa, li la sètènman amann yo kontinye lè l sèvi avèk bibliyotèk la CS50 ak distraksyon sa a,
se konsa pale, Men, nou pral kòmanse wè egzakteman
sa ki te ale sou anba tan sa a tout antye.
Se konsa, ou ka sonje egzanp sa a, tou, soti nan dènye fwa, konpare 0,
ki pa t 'aktyèlman konpare.
Men, nou yo te kòmanse rezoud sa a.
>> Men, jan petèt yon resiklaj, ta ka mwen enterese yon moun
nan yon elefan woz jodi a, tou fèt pa Chang?
Kouman sou ou nan devan? [Fèbl].
Vini non sou yo.
>> Ak nan entre-temps la, kòm ou vini, se pou yo
konsidere sèlman pou moman yon ki sa Kòd sa a te aktyèlman fè.
Li nan deklare de varyab moute tèt, la ak t, ak rele getString.
Sa a se pa yon pwogram trè user-zanmitay, paske li pa di w ki sa yo fè.
Men, kite a jis asime nou ap ki konsantre sou pati nan juicy.
Lè sa a, nou fè sa, si yo egal egal t, li ta dwe di printf,
ou tape menm bagay la.
Hello.
Ki sa ki nan non ou?
>> Janelle: Janelle.
DAVID J. Malan: Janelle, bèl al kontre ou.
Se konsa, defi ou a yon men pou yon elefan sa a
se premye trase nou yon foto nan sa ki nan ke yo te reprezante nan sa yo de premye
liy yo.
Se konsa, s ak t ta kapab reprezante ki jan sou ekran an?
Epi ou ka jis trase l 'ak dwèt ou sou ekran sa a gwo.
>> Se konsa, gen nan de mwatye chak bò ki ekwasyon.
Se konsa gen nan yo sou bò gòch la, epi Lè sa a, getString sou bò dwat la.
Lè sa a, gen nan t sou bò gòch la, ak Lè sa a getString sou bò dwat la.
Se konsa, ki jan ta ka nou kòmanse desen yon foto ki
reprezante sa k ap pase sou isit la nan memwa, ou ta di?
Ak kite m 'kite ou eksplike sa w ap fè jan ou ale.
>> Janelle: OK.
Oke, an premye, li ta dwe mande ou jwenn fisèl la opinyon.
Epi li ta store-- oh, regrèt.
DAVID J. Malan: OK.
Bon.
Lè sa a yo rele ki sa?
Oh, OK.
Kenbe prale.
Mwen pa t 'vle di entèwonp.
Janelle: M regrèt.
Se konsa, li ta D 'l' nan adrès la of-- pa sèten.
Mwen pa ka egzakteman sonje nimewo a, men mwen kwè li te kòmanse avèk 0.
>> DAVID J. Malan: Sa a tout dwa, paske mwen te fè nimewo yo leve,
se konsa gen nan pa gen repons ki kòrèk.
>> Janelle: Kòmanse avèk arc ak a 0.
>> DAVID J. Malan: OK, se konsa eleman 0.
Asire w.
>> Janelle: Lè sa a, si te tankou jis yon de-letter--
>> DAVID J. Malan: OK, tounen ba ou.
>> Janelle: Se konsa, eleman 0, epi Lè sa a, eleman 1 oswa eleman 2.
DAVID J. Malan: Lè ki moso nan foto a ou menm ki fè desen kounye a?
Rele nan getString?
Oswa deklarasyon an nan la?
>> Janelle: deklarasyon ki nan s, mwen kwè.
Oh, getString a, paske li ta dwe antre nan chak [? zòn nan. ?]
>> DAVID J. Malan: Bon.
Egzakteman.
Menm si sa a efektivman retounen yon etalaj, sonje,
lè nou jwenn tounen yon fisèl, nou kapab endèks nan ki fisèl lè l sèvi avèk 01 ak 2.
Teknikman, sa yo se pwobableman reprezante pa adrès endividyèl,
men sa a amann.
>> Se konsa, ta kwè, si mwen ka jis vit pou pi devan pou kote nou te kite
dènye fwa a, si youn nan strings yo te g yon b e,
antislach 0, kidonk reprezante Gabe a D ', ki jan ta ka nou reprezante nan kounye a?
Si sa a se memwa a sa a, se te tounen pa getString?
>> Janelle: Li ta dwe reprezante pa yon ak?
>> DAVID J. Malan: Lè yon ak?
Oke, pa gen okenn.
Se pou nou jis di, pictorially, kite m 'jis ale pi devan
ak pwopoze ke, si sa a se la, sa a se valè a retounen nan getString.
Epi ou te trase sa a kòm 0, 1, 2, ki se parfe rezonab, paske nou
kapab endèks nan fisèl la, kòm sa yo.
Men, jis yo dwe konsistan avèk dènye fwa, kite m 'ale pi devan
ak abitrèman pwopoze ke sa a se adrès 1, sa a se adrès 2,
sa a se adrès 3, ak pou fè.
Se konsa, jis yo dwe super klè, sa k ap pase
yo ale nan a kòm yon rezilta nan ki premye liy nan kòd, ou ta di?
>> Janelle: Adrès 1?
>> DAVID J. Malan: Egzakteman.
Se konsa, adrese 0x1.
Ak pandan se tan, kite m 'ale pi devan epi kopi anpil nan sa ki ou te fè
epi ajoute pwòp t m 'isit la.
Si m 'te tape nan Gabe ankò, yon dezyèm fwa,
lè pouse ak getString, ki kote, nan kou, se Gabe pral ale?
Oke, presumably--
>> Janelle: Menm jan ak sou isit la?
DAVID J. Malan: Yeah.
Janelle: Oswa li la tou nan bwat yo menm?
DAVID J. Malan: Kite m 'pwopoze, yeah, egzakteman, se konsa nan sa yo bwat adisyonèl.
Men, sa ki nan kle kounye a se ke, menm menm si mwen te trase sa yo trè fèmen
together-- 0x1, sa a se 0x2-- an reyalite,
sa a kounye a ta kapab adrès 0x10, pou egzanp, ak 0x11, ak 0x12,
ak pou fè.
Se konsa, si sa a ka a, sa k ap pase nan fen moute isit la nan t?
>> Janelle: 0x10?
DAVID J. Malan: Egzakteman.
Se konsa, 0x10.
Se konsa, kounye a, kesyon final la.
Ou te, pa lwen, te gen nan travay la pi di pou yon elefan konsa byen lwen.
Depi kounye a, si mwen rale moute kòd la ankò, lè m 'fè, nan liy twa,
si yo egal egal t, ki sa mwen aktyèlman konpare ke nou te trase isit la?
>> Janelle: de adrès yo?
DAVID J. Malan: Egzakteman.
Se konsa, mwen di la a se s egal egal a T?
Nan lòt mo, se 1 egal egal a 10?
Ak nan kou, nan repons evidan kounye a se, pa gen okenn.
Se konsa, pwogram sa a se finalman ale nan enprime ki sa, ou ta di?
>> Janelle: Li ta dwe, ou tape menm bagay la?
>> DAVID J. Malan: Se konsa, si a se 1 ak t se 10?
>> Janelle: Ou tape bagay diferan.
>> DAVID J. Malan: Egzakteman.
Ou tape bagay diferan.
Tout dwa.
Se konsa, yon wonn nan aplodisman, si nou te kapab, isit la.
[Aplodisman]
Sa ki te fè mal.
Mwen konnen.
Joliman fè.
Se konsa, kounye a kite a wè si nou pa kapab toumante apa sa ki ranje a te ye a.
Ak nan kou, lè nou fiks this-- ki mwen pral kounye a reprezante nan green--
nou te fè yon koup la amelyorasyon isit la.
Premyèman, jis kòm yon saniti tcheke, mwen premye tcheke
si yo egal nil epi t egal nil.
Epi jis yo dwe klè, lè ta ka a oswa t pral nil nan kòd tankou sa a?
Lè a oswa t ta kapab nil.
Yeah?
>> ODYANS: [fèbl].
>> DAVID J. Malan: Egzakteman.
Si fisèl la ki itilizatè a tape nan se yon fason twò lontan
nan anfòm nan memwa, oswa kèk etranj ka kwen tankou sa yo,
getstring, jan nou pral wè, literalman jodi a, nan dokiman li yo,
di li pral retounen nil kòm se yon valè Sentinel espesyal,
oswa jis sòt de yon senbòl espesyal sa vle di yon bagay ale mal.
Se konsa, nou vle tcheke pou sa, paske li vire soti
ki nil se yon valè trè danjere.
>> Anpil fwa, si ou eseye fè yon bagay ak nil ki enplike yon function-- pase li
kòm opinyon, pou instance-- ke fonksyon ta ka trè pral aksidan ak, ak li,
pran desann pwogram antye ou.
Se konsa, liy sa a twazyèm kounye a se jis yon saniti tcheke, erè kont kouran, si ou vle.
Sa a se yon abitid bon kounye a pou nou jwenn nan nenpòt ki lè nou
eseye sèvi ak yon valè ki te kapab, ki kapab, pral nil.
>> Koulye a, nan liy lan katriyèm isit la, "Si strkan (yo, t)," byen,
sa ki nan ki refere li a?
Oke, nou te di sa a te yon trè suksen yo te rele fonksyon pou fisèl konparezon.
Ak objektif li yo nan lavi a se yo konpare premye agiman li yo kont li, dezyèm lan,
men se pa an tèm de adrès yo, jan nou te fè san yon ti moman
de sa ak kòd la wouj, men olye yo konpare sa yo de
strings nan umenman entwisyon an fason lè w konpare sa a, kont sa a,
kont sa a, kont sa a, epi Lè sa a, kanpe si ak lè yon sèl
oswa toude nan dwèt mwen frape yon antislach 0.
Se konsa, yon moun ane de sa aplike strkan aplike pou nou fonctionnalités a
ke nou te espere nou ta gen vinn pa jis konpare de valè ki senp.
>> Koulye a, franchman, mwen kenbe desen tout nan nimewo sa yo divès kalite.
Men, reyalite a se, mwen te fè sa yo moute tan nan tout antye.
Se konsa, kite m 'jis ale pi devan ak madjigridji sa yo soti
fè yon pwen ki, nan fen a nan jou a ak k ap deplase pi devan,
nou pa ap reyèlman ale nan pran swen sou sa adrese bagay yo aktyèlman
nan memwa.
Se konsa, mwen pa pwal fè desen sa yo kalite nimewo tèlman ankò,
Mwen jis yon abstrè sa a lwen yon ti kras pi plis zanmitay ak jis kèk flèch.
>> Nan lòt mo, si a se yon konsèy, byen, kite yo jis rale l ', literalman,
kòm yon konsèy, yon flèch montre soti nan tèt li nan yon lòt bagay,
epi yo pa enkyete twòp plis enfòmasyon sou ti detay nan sa yo adrès
ki, ankò, mwen te fè leve de tout fason.
Men, nou pral wè sa yo adrès, pafwa, lè debogaj kòd.
>> Koulye a, pandan se tan, pwogram sa a moute isit la fikse, nan kou,
ke pwoblèm lè w konpare de strings sa yo.
Men, nou li pran kouri nan yon lòt pwoblèm.
Sa a te soti nan kopi a pwogram dènye fwa,
ak lese pase ', mwen te ap eseye kapitalize jis pèsonaj la premye nan yon fisèl.
Men, sa ki te sentòm nan nou te wè dènye fwa lè
yon itilizatè tape nan yon valè, tankou Gabe nan miniskil, pou la,
lè sa a nou asiyen nan nan t, tankou nan liy nan twazyèm a,
ak Lè sa a mwen te eseye tirer t bracket 0?
Ki sa ki te efè a nan chanje t bracket 0 isit la?
>> ODYANS: Li chanje a.
>> DAVID J. Malan: Yeah, Mwen chanje a, kòm byen.
Paske sa ki te reyèlman ale sou?
Oke, kite m 'wè si mwen ka netwaye moute foto sa a, jan sa a.
>> Si a se, ankò, pawòl Bondye g la, A, B, e, antislach, 0, ak s
nou pral kontinye desen kòm yon bwat isit la, men pa gen okenn plis adrès.
Ann sispann fè bagay yo.
Se pou nou jis desine yon foto senplifye mond lan.
>> Lè m 'deklare t ak fisèl t, ki ka kreye ki ti moso nan memwa.
Square k ap pase yo 32 Bits nan pifò òdinatè.
An reyalite, si ou te janm tande pale de yon òdinatè ki gen yon achitekti 32-ti jan,
reyèlman anpenpan-pale, ki jis vle di li itilize adrès 32-ti jan.
Epi kòm yon teknik sou kote, si ou te janm mande
poukisa pi gran òdinatè, si ou aktyèlman yo te eseye soup yo moute ak anpil nan RAM,
te kapab sèlman gen yon maksimòm nan kat jigokte nan RAM,
byen sa a, se paske, literalman, òdinatè fin vye granmoun ou te kapab sèlman
konte kòm yon wo 4 milya dola, 4 milya de dola bytes,
paske li te lè l sèvi avèk 32-ti jan nimewo pou adrès.
>> Men, nan nenpòt ka, nan ka sa egzanp, istwa a pi senpl.
t se jis yon lòt konsèy, oswa reyèlman yon etwal Char, aka fisèl.
Ak ki jan fè mwen vle mete ajou foto sa a kounye a ak ki liy dezyèm nan kòd,
apre dot la, dot, dot?
Lè m 'fè fisèl t egal a virgules, ki jan foto sa a chanje?
Yeah?
>> ODYANS: [fèbl].
>> DAVID J. Malan: Yeah.
Egzakteman.
Mwen jis mete yon flèch ki soti nan la t ti bwat nan adrès la menm,
menm lèt la an premye nan te bay.
Oswa teknikman, si sa a nèg yo te toujou nan 0x1,
li a tankou si m 'te gen 0x1 isit la ak 0x1 isit la.
Men, ankò, ki moun ki gen sousi sou adrès yo?
Se jis nan lide a ke kounye a enpòtan.
Se konsa, sa a se sa k ap pase isit la.
Se konsa, nan kou, si ou fè t bracket 0, ki se notasyon etalaj,
nan course-- ak franchman, li sanble tankou gen nan yon etalaj sou isit la,
men kounye a gen nan bagay sa a etranj.
Konnen ke lang nan pwogram, C, ofri ou karakteristik sa a,
ak lese pase ', menm si t a se yon konsèy, oswa a se yon konsèy,
ou ka toujou sèvi ak sa yo konnen yo, konfòtab bracket kare
notasyon pou yo ale nan eleman an premye, oswa eleman nan dezyèm, oswa nenpòt eleman
ki ki konsèy ap lonje dwèt paske, prezimableman, li
se, tankou nan ka sa a, montre nan kèk etalaj.
>> Se konsa, ki jan nou ranje sa a?
Franchman, sa a se kote li te resevwa yon ti kras akablan nan premye gade.
Men, isit la se yon nouvo ak amelyore vèsyon.
>> Se konsa, premye, mwen jwenn m de bibliyotèk la CS50,
jis ekspoze ke moun sa se tout bon yon etwal Char, jis yon synonym.
Epi t se tou yon etwal Char.
Men, ki sa ki pwal sou sou a bò dwat-ou nan ki liy
ki kote t ap asiyen yon valè?
>> Ki sa ki se malok?
Ki sa ki li nan strlèn?
Ki sa ki se sizof (Char)?
Poukisa èk la fè sa a liy gade konsa konplèks?
Ki sa ki nan li ap fè nan yon nivo segondè?
Ki sa ki nan li estoke nan t?
Yeah?
ODYANS: Li nan allocation yon sèten kantite espas memwa.
Li nan nan magazen, mwen devine, lèt [fèbl].
>> DAVID J. Malan: pafè.
Pafè.
Li nan allocation yon sèten kantite lajan pou espas memwa
nan magazen, prezimableman, lèt nan lavni.
Ak an patikilye, malok se pou sa retounen ki sa?
>> ODYANS: Retounen [fèbl la]?
DAVID J. Malan: Egzakteman.
Retounen adrès sa a nan memwa, ki se yon fason anpenpan nan di,
retounen adrès la an premye multiple nan ki memwa.
Apartyin a se sou m 'yo sonje konbyen lajan memwa mwen aktyèlman
resevwa lajan oswa mande malok pou.
>> Koulye a, konbyen lajan se sa?
Oke, menm si gen nan yon anpil nan parantèz isit la,
malok pran jis yon agiman sèl.
Apre sa, mwen di egzakteman kisa strlèn nan s, se konsa bay m 'menm jan anpil bytes kòm gen nan la,
men li ajoute yon sèl.
Poukisa?
Yeah?
>> ODYANS: antislach a 0.
DAVID J. Malan: Egzakteman.
Nou te gen fè yon ti kras kenbe.
Se konsa, paske gen nan yon antislach 0, nou ta pi bon sonje ke.
Sinon, nou pral yo kreye yon kòd ki
pa gen ke Terminator espesyal.
>> Pandan se tan, jis yo dwe super nan dèyè, mwen gen sizof (Char),
jis nan ka yon moun kouri mwen Kòd pa sou aparèy la CS50,
men petèt yon òdinatè diferan tout ansanm ki kote charaktèr
yo se youn multiple, pa konvansyon, men de bytes, oswa yon bagay pi gwo pase sa.
Se jis yo dwe super, super advèrsèr yo erè.
Menm si, an reyalite, li la gen plis chans ale nan yon 1.
>> Koulye a, pandan se tan, mwen ale pi devan ak fè kopi a fisèl, t bracket mwen egal t bracket la.
Apre sa, mwen pral ranvwaye semèn pase a kòd sous yo wè sa ki k ap pase sou.
Men, kle Takeaway a, ak nan rezon ki fè mwen mete kòd la kounye a nan vèt,
se paske ke liy trè dènye, t bracket 0 egal toupper,
gen efè a nan valorizasyon ki fisèl?
t ak / oswa a?
Sa liy dènye nan kòd.
>> Jis T, paske sa ki nan ki te pase tan sa a,
si mwen yon ti kras defèt ke dènye etap, sa ki te pase se, se lè m'ap rele malok,
Mwen esansyèlman jwenn yon ti moso nan memwa ki se gwosè a menm jan orijinal la,
paske se sa aritmetik a mwen te fè.
Mwen estoke nan t adrès la nan ki ti moso nan memwa.
Menm si sa a sanble bèl ak bèl, bèl ak vid,
reyalite a se gen nan, ki sa nou pral kenbe w rele, valè fatra nan isit la.
Sa ti moso nan memwa ta ka trè byen gen te itilize anvan,
yon kèk segond, Anons sa pibliye depi yon kèk minit.
Se konsa, gen te kapab absoliman dwe nimewo oswa lèt gen, jis pa aksidan.
Men, yo pa ap valab, jouk tan mwen tèt mwen peple sa a ti moso nan memwa
ak charaktèr aktyèl, jan mwen fè nan ki pou bouk la.
Tout dwa?
>> Se konsa, kounye a, Pi gwo pwen an nan twa egzanp sa yo
ki te w pèdi kase dènye fwa, Boukantay egzanp sa a, sa a fonksyon
te travay nan sans la ke li échanges a ak b.
Men, li pa t 'travay nan sa ki lòt sans?
Yeah?
>> ODYANS: [fèbl].
>> DAVID J. Malan: Egzakteman.
Si m 'te rele fonksyon sa a soti nan another-- pou egzanp,
soti nan yon fonksyon tankou prensipal yo, ki kote Mwen gen yon varyab, x ak y, jan mwen
te fè semèn pase a, menm kòd, ak mwen pase nan x ak y
swap, ak Lè sa a rele Swap-- sa a, nan kou, se vèsyon ki kòrèk la
se sa nou ap sou yo see-- li pa t 'travay.
Se konsa, ki sa ki ranje a?
>> Oke, Se konsa, jis yo dwe klè, kite m 'ale pi devan
and-- ban m 'yon dezyèm isit la, ak wè si mwen ka montre w yon sèl ki sot pase a, ki
yo pral in-- kite a wè si mwen ka jwenn sa a reyèl OK fast--, [fèbl].
OK, gen li ye.
Se konsa, inyore kòmandman yo Mwen jis tape.
Mwen vle li nan rekipere nan dènye minit te yon egzanp
nan dènye tan, ki se kounye a yo rele pa gen okenn Boukantay.
>> Se konsa, pa gen okenn Boukantay se kote nou te kite dènye tan,
ak lese pase ', mwen initialisé x nan 1 ak y nan 2.
Mwen Lè sa a, rele Boukantay, pase nan 1 ak 2.
Lè sa a, fonksyon sa a te travay nan kèk sans,
men li pa te gen okenn pèmanan efè sou x ak y.
Se konsa, kesyon an nan men se, ki jan kounye a nou aktyèlman ranje pwoblèm sa a?
Ki sa ki se solisyon an nan men?
>> Oke, nan swap.c, ki se nouvo jodi a, remake yon koup la diferans.
x ak y yo se menm bagay la.
Men, sa ki se byen klè diferan sou liy 25?
Ki sa ki nan nouvo a, si ou sonje ki sa li te sanble ak yon dezyèm de sa?
>> ODYANS: [fèbl].
>> DAVID J. Malan: Yeah.
Se konsa, ampersands yo se yon moso nouvo nan sentaks pa sèlman nan pwogram sa a,
men tou, plis jeneralman nan CS50.
Pou dat, mwen pa panse ke nou te wè nenpòt ki egzanp
oswa reyèlman te pale osijè de yo nan nenpòt detay, lòt pase, petèt, preemptively
nan seksyon, yon comercial tankou sa a.
Oke, li vire soti comercial se youn nan moso ki sot pase yo nan nouvo sentaks
nou ap ale nan aprann.
Tout sa vle di li se a adrès nan kèk varyab.
Nan ki adrès x viv?
Men, sa ki adrès y ap viv?
Paske si la fondamantal pwoblèm anvan
te ke x ak y yo te ke yo te pase kòm kopi, sa nou reyèlman vle fè
se bay Boukantay ak tankou yon trezò kat jeyografik ki mennen nan kote x ak y aktyèlman
se nan RAM, se konsa ke Boukantay ka swiv kat jeyografik ki
epi ale nan tout kote x oswa y make plas la ak chanje valè yo aktyèl 1 ak 2
la.
>> Se konsa, Boukantay bezwen chanje yon ti kras tou.
Ak nan premye gade, sa a ta ka sanble yon ti kras sanble ak zetwal Char.
Ak tout bon li ye.
Se konsa, yon se yon konsèy nan ki kalite done, ki baze sou pòsyon sa a make?
Se konsa, li yon Int.
>> Se konsa, yon se pa yon int, li nan adrès ki nan yon Int.
Epi Menm jan an tou, b se kounye a ale yo dwe adrès ki nan yon Int.
Se konsa, lè mwen kounye a rele Boukantay soti nan Main, Mwen pa pral bay Boukantay 1 ak 2.
Mwen pral bay li tankou Bèf-yon bagay e yo bèf-yon bagay,
de adrès ki ap mennen Boukantay nan kote aktyèl yo
nan memwa òdinatè mwen an.
>> Se konsa, kounye a, aplikasyon mwen an rete bezwen chanje yon tad.
Ki sa ki nan evidamman diferan kounye a nan twa liy sa yo nan Kòd?
Genyen sa yo modi zetwal tout lòt peyi sou plas la, tout dwa?
Se konsa, sa k ap pase sou isit la?
Yeah?
>> ODYANS: Li nan [fèbl] evidamman.
>> DAVID J. Malan: Egzakteman.
Se konsa, nan kontèks sa a ak sa a pa te desizyon nan konsepsyon pi bon, Byensir,
ane de sa.
Nan kontèks sa a, kote ou jis gen yon etwal,
epi ou pa gen yon kalite done, tankou int, imedyatman sou bò goch la,
olye pou ou gen yon siy egal, byen klè, nan kontèks sa a, lè ou di zetwal yon,
sa vle di ale nan nan adrès sa a, se nan yon.
Swiv kat la trezò, se konsa pale.
>> Ak pandan se tan, nan liy 37, sa vle di menm bagay la.
Ale nan adrès yon la, li mete sa a?
Kèlkeswa se nan la kote ki b espesifye.
Nan lòt mo, ale nan b.
Jwenn ki valè.
Ale nan yon ak, pou chak egal a siyen, operatè a plasman,
mete ke valè a.
>> Menm jan an tou, int temp se jis yon Int.
Pa gen anyen bezwen chanje sou temp.
Se jis nan yon vè rezèv soti nan Annenberg pou kèk lèt ​​oswa ji zoranj.
Men, mwen bezwen di, ale nan b.
Ale nan ki destinasyon ak mete valè a nan temp la.
Se konsa, sa k ap pase lè sa a?
Lè m 'aktyèlman rele Swap tan sa a, si premye plato sa a isit la reprezante Main,
dezyèm plato sa a reprezante Boukantay, lè Mwen pase comercial x ak y comercial
soti nan Main Swap, jis yo dwe klè, ki sa ki sa a ankadreman k ap resevwa chemine?
Yeah?
>> ODYANS: [fèbl].
DAVID J. Malan: Egzakteman.
Adrès postal la nan x ak adrès ki nan y.
Epi ou ka panse a sa yo tankou adrès lapòs.
33 Oxford Street ak 35 Oxford Street, epi ou
vle pou avanse pou de bilding yo ki nan moun kote yo ye.
>> Li nan sòt de yon lide ridikil, men sa a tout sa nou vle di pa adrès.
Ki kote nan mond la kapab ou jwenn sa yo de antye?
Ki kote nan mond la kapab ou jwenn de bilding sa yo?
Se konsa, si finalman, apre tout tan sa a mwen ale nan kòd sous jodi a ak konpile
Boukantay ak kouri ./swap, finalman, pou la premye fwa nou aktyèlman wè ke
Valè mwen gen tout bon te échanges avèk siksè.
Epi, koulye a, nou ka menm pran nòt nan sa a nan, di, gdb.
>> Se konsa, kite m 'ale nan dosye a menm.
Kite m 'ale pi devan epi kouri gdb nan ./swap.
Epi, koulye a, nan Boukantay, mwen pral ale pi devan epi mete yon pwen repo nan Main.
Epi, koulye a, mwen pral ale pi devan epi kouri pwogram nan.
Epi, koulye a nou wè kòd m ' Sarepta nan ki liy.
>> Si m 'ale pi devan epi ekri ak lèt ​​detache x, kisa pou m wè isit la?
Se yon kesyon.
Di ankò?
>> ODYANS: [fèbl].
>> DAVID J. Malan: Se konsa, nimewo o aza, petèt.
Petèt mwen jwenn chans, epi li bèl ak senp, tankou 0.
Men, petèt li nan kèk nimewo o aza.
Nan ka sa a, mwen te resevwa chans.
Li jis k ap pase yo 0.
Men, li se tout bon chans, paske se pa jiskaske mwen
tape pwochen ak Lè sa a ekri ak lèt ​​detache x gen ki liy nan kòd, liy 19, te egzekite.
>> Pandan se tan, si mwen tape pwochen ankò, epi kounye a enprime soti y, mwen pral gade 2.
Koulye a, si mwen tape pwochen, li k ap pase yo jwenn yon ti kras konfizyon, paske kounye a,
printf a ki pral parèt sou ekran an, jan li te fè. x se 1.
>> Se pou yo fè sa a ankò.
Epi, koulye a, isit la nan kote bagay sa yo jwenn ki enteresan.
Anvan mwen rele Boukantay oswa menm etap nan li, kite a pran yon ti kras gade vit.
x se, ankò, 1.
Y se, nan kou, saniti rapid tcheke, 2, Se konsa, pa di a.
Men, sa ki comercial x?
Repons, li nan kalite fenki kap.
Men, zetwal la int nan parantèz se jis fason GDP an pou li di sa a se yon adrès.
Li pa nan yon int, li nan yon konsèy nan yon Int, oswa otreman li te ye kòm yon adrès.
>> Ki sa ki se bagay sa a fou?
Nou pa janm te wè yon bagay byen tankou ke anvan.
Se konsa, sa a se adrès la nan la òdinatè mwen an memwa nan kote x k ap pase nan ap viv la.
Li nan bèf-yon bagay.
Lè sa a se, franchman, poukisa Mwen te kòmanse fè desen flèch,
olye pou yo nimewo, paske ki reyèlman sousye
ki Int ou se nan yon patikilye adrès sa a, se sa ki gwo.
Men, bffff0c4, sa yo se tout tout bon ekzadesimal chif,
ki se 0 a f.
>> Se konsa, nou pa ap ale nan rete twò lontan sou sa ki bagay sa yo ye.
Men, si mwen enprime soti y, nan kou, mwen wè 2.
Men, comercial y, mwen wè adrès sa a.
Ak avi, pou kirye la, ki jan lwen apa yo x ak y?
Ou ka inyore pi fò nan adrès la.
Kat bytes.
Epi sa a, ki konsistan avèk nou an pi bonè reklamasyon ke ki jan gwo se yon int?
Kat bytes.
Se konsa, li sanble pawa tout bagay la moute joliman, jan ou ta ka espere, nan memwa.
>> Se konsa, kounye a, kite yo jis vit pou pi devan nan fen a nan istwa sa a.
Ann al pi devan epi tape etap, plonje nan fonksyon an Boukantay.
Koulye a, remake, si mwen tape yon, li nan ki idantik ak adrès ki nan x.
Si m 'tape b, li la ki idantik nan adrès ki nan y.
Se konsa, sa mwen ta dwe wè si mwen di, ale nan adrès la yon?
Se konsa, enprime zetwal a.
Se konsa, zetwal vle di ale a, nan kontèks sa a.
Comercial vle di sa ki nan adrès ki nan.
Se konsa, zetwal yon mwayen 1.
Ak zetwal ekri an lèt detache b ki ban m '2.
>> Ak kite m 'asime, pou moman an, ke omwen kòd la ki
montan yo egzekite kounye a kapab diskite nan nan fason sa a.
Men, nou pral revize ide sa a anvan lontan.
Se konsa, sa a vèsyon an Boukantay se kounye a kòrèk epi yo pèmèt
nou swap sa a ki kalite done patikilye.
>> Se konsa, nenpòt kesyon Lè sa a, sou Boukantay?
Nan zetwal?
Sou adrès nan?
Epi ou pral wè, ak pwoblèm mete 4, sòt de,
men pwoblèm mete 5, definitivman, ki jan sa yo bagay sa yo yo itil yo epi pou yo jwenn pi plis
konfòtab ak yo, kòm yon rezilta.
Nenpòt bagay nan tout?
Tout dwa.
Se konsa, malok se, ankò, fonksyon sa a ki jis repati memwa, memwa
alokasyon.
Epi poukisa se sa a itil?
Oke, tout tan sa a, ou ve yo te lè l sèvi avèk malok.
Si ou konsidere kounye a kijan getString travay, prezimableman, li nan
te mande yon moun pou yon ti moso nan memwa, nenpòt lè itilizatè a kalite yon afè
nan, paske nou sètènman pa t 'konnen, ke anplwaye CS50,
ki jan gwo sa yo strings lezòm yo ale nan tape ta kapab.
>> Se konsa, kite a, la pou premye fwa, kòmanse kale tounen ki jan travay yo bibliyotèk CS50,
pa fason pou yon koup nan egzanp ki pral mennen nou la.
Se konsa, si mwen louvri moute jdi epi louvri moute skanf 0,
nou ap ale nan wè kòd ki anba la a.
Skanf 0, disponib sou sit entènèt la pou jodi a, gen liy relativman kèk nan kòd
isit la, 14 a 20.
Li kite yo wè sa ki li a ap fè.
Li deklare yon int, rele x.
Li di yon bagay tankou, nimewo tanpri.
Epi, koulye a li di, skanf% mwen, & x.
Se konsa, gen nan yon pakèt moun sou bagay nouvo gen.
>> Men, skanf, ou ka kalite panse a kòm opoze a nan printf.
printf, nan kou, simagri ekran an.
skanf sòt de analiz soti nan la nan itilizatè klavye yon bagay li oswa li te tape.
>> % Mwen se jis tankou printf.
Sa vle di espere a itilizatè yo tape yon Int.
Epi, koulye a, poukisa ou panse ke mwen ta ka pase skanf & x?
Si objektif la nan lavi nan skanf se jwenn yon bagay soti nan itilizatè a,
ki sa ki siyifikasyon an nan pase li, & x, kounye a?
Yeah?
>> ODYANS: [fèbl].
DAVID J. Malan: Egzakteman.
Kèlkeswa sa mwen menm, moun lan, tape nan, opinyon mwen an yo pral sove nan ki kote.
Li pa ase, sonje, nan jis pase nan x, paske nou te wè deja,
nenpòt ki lè ou pase jis yon varyab anvan tout koreksyon, tankou yon int, nan kèk lòt fonksyon,
asire w, li ka chanje sa varyab, men se pa pou tout tan.
Li pa ka gen yon efè sou Main.
Li ka sèlman chanje pwòp li yo kopi lokal yo.
Men, si, olye de sa, ou pa fè sa ban m 'Int aktyèl la,
men ou ban m 'esplikasyon ki Int, mwen kounye a, yo te skanf,
siman, mwen ka swiv ki adrès ak mete yon nimewo gen
konsa ou gen aksè nan li kòm byen.
>> Se konsa, lè mwen kouri pwogram sa a, kite a wè.
Fè skanf 0 dot koupe, skanf 0.
Men, si mwen kounye a tape yon nimewo tankou 50, mèsi pou 50 an.
Si m 'koulye a tape yon nimewo tankou negatif 1, pou 1 a negatif.
Mwen kounye a tape yon nimewo tankou 1.5, HM.
Poukisa pwogram mwen inyore m 'konsa?
Oke, paske tou senpleman, mwen te di li ou kapab espere yon Int sèlman.
Tout dwa.
Se konsa, ki nan yon sèl vèsyon an sa a.
Se pou nou pran bagay yo yon Notch ak pwopoze ke sa a se pa bon.
Ak dokiman sa a bay manti yon egzanp trè senp nan ki jan nou ka kòmanse Kòd ekri
ke lòt moun ka esplwate oswa konpwomi pa fè move bagay.
Se konsa, liy 16, se konsa menm jan an nan Lespri Bondye a anvan,
men mwen pa deklare li Int tan sa a.
Mwen deklare li Char etwal, aka fisèl.
>> Men, sa ki ki vrèman vle di?
Se konsa, si mwen pa presize yon address-- ak M ap rele li abitrèman, tanpon,
men mwen te kapab rele li s, yo dwe simple-- ak Lè sa a mwen fè sa, eksplike m ',
si ou te kapab, baze sou anvan an lojik, ki sa ki skanf fè nan liy 18,
si pas% s ak tanpon, ki se yon adrès?
Ki sa ki se skanf, si ou aplike nan egzak lojik menm jan ak vèsyon 0,
pral pou yo eseye fè isit la, lè yon bagay nan kalite itilizatè nan?
Yeah?
>> ODYANS: [fèbl].
>> DAVID J. Malan: Egzakteman.
Skanf, pa lojik nan pi bonè, se pral pran fisèl la
ki tape imen an in-- li la kounye a yon fisèl,
li pa yon nimewo, prezimableman, si li cooperates--
epi li pral pou yo eseye mete sa fisèl nan memwa nan tou sa adrès
tanpon espesifye.
Lè sa a se gwo anpil, paske tanpon se vre vle di yo dwe yon adrès.
>> Men, mwen fè reklamasyon pwogram sa a se buggy nan yon fason ki grav anpil, paske sa valè
tanpon pa default?
Kisa m 'initialisé an?
Ki sa ki ti moso nan memwa?
Mwen pa gen, dwa?
>> Se konsa, menm si mwen te resevwa lajan yon etwal Char ki nan pa gen okenn ankò yo rele a,
li nan olye pou yo rele, buffer-- konsa kite a trase non varyab a
kounye a kòm buffer-- si mwen pa gen rele getString oswa malok isit la,
ki efektivman vle di ke tanpon se jis kèk valè fatra.
>> Kounye a ki sa sa vle di?
Sa vle di ke mwen te di skanf ou kapab espere yon fisèl soti nan itilizatè lan.
Epi ou konnen ki sa?
Kèlkeswa sa bagay sa a ap montre to-- ak mwen trase kesyon mak,
men an reyalite, li la pral fè yon bagay tankou OX1, 2, 3, dwa?
Li nan kèk valè fos ki jis k ap pase yo gen soti nan anvan.
Se konsa, mete yon lòt fason, li nan tankou si tanpon se jis
lonje dwèt nan yon bagay nan memwa.
Mwen pa gen okenn lide ki sa.
>> Se konsa, si mwen tape nan Gabe kounye a, li pral pou yo eseye mete g-yon-b-e / 0 la.
Men, ki moun ki konnen ki sa ki se?
Ak nan tan lontan an, nenpòt ki fwa nou te eseye manyen
memwa ki pa fè pati ak nou, sa ki te rive?
Oswa prèske chak fwa.
Fay segmentation, dwa?
>> Flèch sa a, mwen pa gen okenn lide kote li nan montre. li nan jis kèk valè o aza.
Ak nan kou, si ou entèprete se yon valè o aza kòm yon adrès,
w ap ale nan ale nan kèk destinasyon o aza.
Se konsa, Gabe ta ka tout bon aksidan pwogram m 'nan ka sa a isit la.
>> Se konsa, sa nou kapab fè sa a, se prèske kòm move?
Konsidere sa a twazyèm ak egzanp final la nan skanf.
Sa a vèsyon se pi bon nan sa ki sans?
Si ou yo konfòtab ak nan pwoblèm anvan, sa a se pi bon.
Poukisa?
>> ODYANS: [fèbl].
DAVID J. Malan: Bon.
Se konsa, ka sa a nan liy 16 se pi bon an, nan sans
ke nou ap klèman allocation kèk memwa.
Nou pa ap lè l sèvi avèk malok, nou ap sèvi ak semèn nan 2
apwòch nan jis deklare yon etalaj.
E nou te di anvan ke yon fisèl se jis yon etalaj de karaktè,
kidonk sa a se totalman lejitim.
Men, li la, nan kou, kòm ou sonje, gwosè fiks, 16.
>> Se konsa, pwogram sa a se totalman ki an sekirite, si mwen tape
nan strings yon karaktè, de karaktè strings, 15 strings karaktè.
Men, le pli vit ke mwen kòmanse sezisman 16, 17, 18, 1,000 strings karaktè,
ki kote ki fisèl ale nan fini?
Li nan ale nan fini an pati isit la.
Men, Lè sa a, ki moun ki konnen ki lòt bagay se pi lwen pase limit yo
nan etalaj sa a an patikilye?
>> Li nan tankou si mwen te deklare 16 bwat isit la.
Se konsa, olye ke trase soti tout 16, nou pral jis pretann ke mwen te trase 16.
Men, si mwen lè sa a eseye li yon fisèl sa a, se pi lontan ankò, tankou 50 karaktè,
Mwen pral kòmanse mete A, B, C, D, x, y, z.
Lè sa a se prezimableman kèk segman memwa lòt
ki, ankò, ka lakòz pwogram mwen an nan aksidan,
paske mwen pa te mande pou anyen plis pase jis 16 bytes.
>> Se konsa, ki moun ki gen sousi?
Oke, isit la nan bibliyotèk la CS50.
Ak pi fò nan sa a se jis tankou enstriksyon moute tèt.
Bibliyotèk la CS50, tout tan sa a, te gen liy sa a nan liy 52.
Nou te wè tipedèf, oswa ou pral wè tipedèf
nan pset 4, ki jis kreye yon synonym ak lese pase 'zetwal Char ka gen plis
tou senpleman refere yo kòm fisèl.
Se konsa, sa a se youn nan la wou fòmasyon kèk
nou te itilize an kachèt anba kapo a.
>> Pandan se tan, isit la nan fonksyon an, getchar.
Koulye a, aparamman, gen nan pa gen kò nan li.
Ak nan reyalite, si mwen kenbe defile, mwen pa fè sa aktyèlman
wè nenpòt ki en nan fonksyon sa yo.
Kòm yon chèk saniti, poukisa se sa?
>> ODYANS: [fèbl].
DAVID J. Malan: Yeah.
Se konsa, sa a se dosye a header.
Ak dosye header gen prototip, plis kèk lòt bagay, li sanble,
tankou typedefs.
Men, nan CS50.c, ki nou te pa janm ban nou kareman,
men te gen nan aparèy la CS50 tout tan sa a, gwo twou san fon andedan nan dosye li yo,
remake ke gen nan yon antye pakèt moun sou fonksyon nan isit la.
>> An reyalite, se pou yo desann.
Se pou yo inyore pi fò nan yo, pou kounye a.
Men, woulo liv desann nan getInt ak wè kòman getInt travay.
Se konsa, isit la se getInt.
Men, si ou tout tan tout tan reyèlman pran swen ki jan jwenn int ap travay, isit la se dokiman li yo.
, Ak nan mitan bagay sa yo li di se li di ou
sa chenn yo nan valè li kapab retounen.
Li nan esansyèlman negatif 2 milya dola pozitif 2 milya dola, bay oswa pran.
>> Epi li vire soti, tout sa a tan, menm si nou te pa janm
te ou tcheke pou li, si yon bagay ale mal,
li vire soti ke tout tan sa a, getInt gen
te retounen yon espesyal konstan, pa nil,
men pito INT_MAX, ki se konvansyon jis yon pwogramè a.
Sa vle di isit la se yon valè espesyal.
Asire w ke w tcheke pou sa a, jis nan ka yon bagay ale mal.
Men, nou pa janm te anmande ak ke nan dat,
paske ankò, sa a vle di ke yo senplifye.
>> Men, ki jan getInt jwenn aplike?
Oke, yon sèl, li pran pa gen okenn agiman.
Nou konnen ke.
Li retounen yon Int.
Nou konnen ke.
Se konsa, kouman li travay anba kapo a?
>> Se konsa, gen nan aparamman yon enfini riban, omwen aparans nan yon sèl.
Remake ke nou ap itilize getString.
Se konsa, ki nan enteresan. getInt rele fonksyon pwòp nou an, getString.
Epi, koulye a poukisa ta ka sa a dwe ka a?
Poukisa mwen te defansiv isit la nan liy 165?
Ki sa ki te ka rive nan liy 164, jis yo dwe klè?
Li nan repons a menm jan ak anvan.
Ta ka jis pou soti nan memwa.
Yon bagay pase mal ak getString, nou te gen pou kapab okipe sa.
Ak rezon an mwen pa retounen nil se ki, teknikman, nil se yon konsèy.
getInt gen retounen yon Int.
Se konsa, mwen te abitrèman deside, esansyèlman,
ki 2 milya dola, bay oswa pran, ki pral yo dwe yon valè espesyal ke mwen kapab pa janm
aktyèlman jwenn soti nan itilizatè a.
Se jis nan valè a yon sèl mwen pral nan fatra ki reprezante yon kòd erè.
>> Se konsa, kounye a, bagay sa yo jwenn yon ti kras anpenpan.
Epi li pa byen fonksyon nan menm tankou anvan, men li la trè sanblab.
Se konsa, remake, mwen deklare isit la, nan liy 172, tou de yon n Int ak yon Char c.
Lè sa a, mwen sèvi ak liy funky sa a, sskanf, ki li vire soti
pa analysis yon fisèl soti nan klavye a.
Li kanpe yon fisèl ki deja egziste ki te itilizatè a deja tape nan.
Se konsa, mwen deja rele getString, ki vle di mwen gen yon fisèl nan memwa.
sskanf se ki sa ou ta rele yon fonksyon analyzes.
Li sanble nan fisèl la Mwen te tape nan, pèsonaj pa karaktè,
ak fè yon bagay itil.
Se ki fisèl ki estoke nan liy.
Apre sa, mwen konnen ke se sèlman pa ale do moute isit la epi li di, o, OK,
Mwen te rele li pa nan tan sa a, men liy.
>> Epi, koulye a sa a se yon ti kras diferan.
Men, sa a efektivman vle di, pou rezon nou pral yon ti jan balanse men nou an nan jounen jodi a,
ke nou ap tcheke yo wè si itilizatè a tape nan
ak Int e petèt yon lòt karaktè.
Si itilizatè a tape nan yon int, li nan ale nan dwe estoke nan n, paske mwen
pase sa a pa adrès, nan Trick nouvo nou te wè jodi a.
Si itilizatè a tou tape nan tankou 123x, ki x
ki pral fini yon lèt nan karaktè c.
>> Koulye a, li vire soti ke sskanf pral di m ', intelijans,
konbyen varyab te sskanf avèk siksè kapab ranpli.
Se konsa, pa lojik sa a, si fonksyon an Mwen mete ann aplikasyon se getInt,
men mwen m 'kont kouran, ki kapab, pou itilizatè a
yo te tape nan yon int ki te swiv pa yon lòt bagay,
sa m 'vle sskanf a valè retounen se vre wi: yo dwe?
Si objektif la se yo ka resevwa jis yon Int soti nan itilizatè a?
>> Se konsa, si retounen sskanf 2, ki sa sa vle di?
Itilizatè a tape nan yon bagay tankou, literalman,
123x, ki se jis istwa san sans.
Se yon kondisyon erè, ak Mwen vle tcheke pou sa.
>> Se konsa, si itilizatè a kalite sa a nan, pa sa a lojik, ki sa ki sskanf retounen,
ou ta di?
Se konsa, li ale nan retounen 2, paske 123 nan ki pral ale nan isit la,
ak x la ki pral fini nan isit la.
Men, mwen pa vle x la jwenn ranpli.
Mwen vle sskanf sèlman reyisi nan ranpli premye a nan varyab li yo.
Se konsa, Se poutèt sa mwen vle sskanf retounen 1.
>> Men, si sa a se yon ti jan sou tèt la pou moman sa a, sa se totalman amann.
Reyalize menm si, ke youn nan la valè nan GetInt ak GetString
se ke n ap fè yon èk nan yon anpil nan erè tcheke tankou sa a pou
ki, nan dat, ou kapab bèl anpil tape anyen nan klavye ou,
epi nou pral trape li.
E nou sètènman, nan anplwaye yo, pral definitivman pa
gen sous la nan yon ensèk nan ou pwogram nan, paske nou pridans
tcheke pou tout moun nan estipid la bagay sa yo ke yon itilizatè ta ka fè,
tankou tape yon fisèl, lè ou reyèlman te vle Int.
Se konsa, pou now-- nou pral vini tounen nan sa a anvan long--
men tout tan sa a, GetString ak GetInt gen
te anba kapo a lè l sèvi avèk sa a lide debaz yo nan adrès nan memwa.
>> Se konsa, kounye a, kite a fè bagay sa yo yon ti kras pi plis user-zanmitay.
Kòm ou ka sonje, ki soti nan Binky dènye time-- si sourit m 'pral cooperate-- konsa
nou te gen Kòd sa a, ki franchman, se jistis absurde.
Kòd sa a reyalize pa gen anyen itil, men li te egzanp nan
ki pwofesè Parlante itilize yo nan lòd yo reprezante
sa ki te ale sou nan yon pwogram ki enplike memwa.
>> Se konsa, kite la rakonte sa a istwa super yon ti tan.
Sa yo de premye liy, nan Lang angle, sa ki, ou ta di?
Jis nan rezonab moun, men tèm teknik yon ti kras, pran yon koud.
ODYANS: [fèbl].
>> DAVID J. Malan: OK, w ap etabli adrès pou x ou ak y varyab.
Pa byen, paske x ak y yo pa varyab nan sans tradisyonèl.
x ak y yo se adrès oswa pral estoke adrès.
Se konsa, kite a eseye sa a yon fwa plis.
Pa yon kòmanse move, menm si.
Yeah?
>> ODYANS: [fèbl].
DAVID J. Malan: Bon.
Mwen panse ke se yon ti kras cleaner.
Deklare de pwent, de nonm antye relatif.
Epi nou ap rele yo x ak y.
Oswa si nou te trase sa a kòm yon foto, ankò,
sonje byen tou senpleman ke tout n ap fè ak ki liy premye
ap fè desen yon bwat tankou sa a, ak kèk valè fatra nan li,
ak rele li x, ak Lè sa a, yon lòt bwat tankou sa a,
ak kèk valè fatra nan li, rele li y.
Nou te deklare de endikasyon ki finalman
pral estoke adrès ki nan yon Int.
Se konsa, ki nan tout gen.
>> Se konsa, lè Binky te fè sa a, nan ajil jis gade tankou sa a.
Ak Nick jis kalite vlope moute flèch yo,
tankou si yo pa ap lonje dwèt nenpòt kote an patikilye, paske yo ap jis
Valè fatra.
Yo pa ap klèman initialisé nenpòt kote an patikilye.
>> Koulye a, liy nan pwochen nan Kòd, sonje, te sa a.
Se konsa, nan rezonab user-zanmitay, men yon ti jan teknik lang angle,
ki sa ki sa a liy nan kòd ap fè?
Yeah?
>> ODYANS: [fèbl].
>> DAVID J. Malan: pafè.
Li nan allocation moso nan nan memwa sa a, se gwosè a nan yon Int.
Epi sa a, mwatye repons lan.
Ou byen reponn a mwatye nan ekspresyon an.
Sa k ap pase sou nan bò gòch-men nan siy ki egal?
Yeah?
ODYANS: Lè mandatè li nan x nan varyab?
>> DAVID J. Malan: Lè mandatè li nan x la varyab.
Se konsa, yo Rekapitilasyon, men dwat-ou rezèvè bò ase memwa nan magazen yon Int.
Men, malok espesyalman retounen adrès la
nan ki ti moso nan memwa, ki ou te jis pwopoze vin estoke nan x.
>> Se konsa, sa Nick te fè dènye fwa ak Binky se li trennen ki konsèy soti, tè krich la,
nan pwen kounye a nan yon ti moso blan nan memwa ki se egal a gwosè a nan yon Int.
Ak tout bon, ki nan te vle di yo reprezante kat bytes.
>> Koulye a, liy nan pwochen nan Kòd te fè sa a, zetwal x vin 42.
Se konsa, 42 se senp sou la bò men dwat-ou, sa vle di nan lavi yo.
Bò gòch-men, zetwal x vle di ki sa?
Sa twò ta ka gen gone-- ke se ok.
OK.
>> ODYANS: Fondamantalman, ale nan [fèbl la]
DAVID J. Malan: Bon.
ODYANS: [fèbl].
DAVID J. Malan: Egzakteman.
Bò gòch-men vle di ale nan x.
x se adrès.
Se tankou 33 Oxford Street, oswa OX1.
Ak zetwal x vle di ale nan ki adrese epi li mete sa a?
42.
>> Se konsa, tout bon, sa a, se egzakteman sa Nick te fè sa.
Li te kòmanse avèk pa, esansyèlman, mantalman
montre yon dwèt nan x, swiv flèch la
nan bwat la blan sou-bò dwat bò, epi mete nimewo a 42 la.
Men, Lè sa a, bagay sa yo te resevwa yon ti kras danjere, dwa?
Binky a sou a pèdi tèt li.
>> Star y egal 13, move chans, vle di ki sa?
Se konsa, zetwal y vle di ale nan adrès la nan y.
Men, sa ki adrès la nan y?
Tout dwa, li nan valè fatra, dwa?
Mwen te trase li kòm yon mak kesyon.
Nick te trase li kòm yon flèch rkrokviye moute.
Ak le pli vit menm jan ou eseye fè zetwal y, li di ale a,
men gen se pa yon lejitim adrès, li nan kèk kote fos,
pwogram lan k ap pase yo aksidan.
Ak tèt Binky a ki pral vole nan isit la, jan li te fè.
>> Se konsa, nan fen a, pwogram sa a te jis plat defo deyò.
Se te yon pwogram buggy.
Epi li nesesè yo dwe fiks yo.
Ak wout la sèlman, reyèlman, fikse li ta dwe, pou egzanp, liy sa a,
ki nou pa t 'menm li ale nan, paske pwogram nan te fè aksidan twò bonè.
Men, si nou te nan ranje sa a, ki efè fè fè y x egal genyen?
Oke, li esansyèlman pwen y nan tou sa valè x ap lonje dwèt nan.
>> Se konsa, nan istwa Nick a, oswa istwa Binky a, tou de
x ak y yo te montre nan moso nan blan nan memwa,
se konsa ke, finalman, lè ou zetwal y egal 13 ankò,
ou fini mete 13 nan kote ki apwopriye a.
Se konsa, tout nan liy sa yo se parfe lejitim yo, eksepte pou yon sèl sa a,
lè li te rive anvan ou aktyèlman asiyen y kèk valè.
>> Koulye a, Erezman, ou pa fè sa gen yo rezone nan tout
nan sa yo kalite pwoblèm sou pwòp ou yo.
Kite m 'ale pi devan epi louvri moute yon fenèt tèminal isit la
epi louvri moute, pou jis yon ti moman, yon pwogram super kout ki
tou se sòt de gratui.
Li nan lèd.
Li pa reyalize anyen itil.
Men, li demontre pwoblèm nan memwa, se konsa, kite a pran yon gade.
>> Main, super senp.
Li aparamman rele yon fonksyon, f, ak Lè sa a retounen 0.
Li nan kalite difisil yo dezòd sa a leve.
Se konsa, Main se trè bon, byen lwen tèlman.
>> Se konsa, f se yon pwoblèm.
Ak jis pa t 'mete anpil efò nan nonmen li
isit la, nan kenbe konsantre sou kòd la.
f gen de liy yo.
Li kite yo wè sa k kounye a pral sou.
Se konsa, sou men nan yon sèl here-- ak kite m 'fè
sa a annakò ak anvan an example-- sou men nan yon sèl,
bò gòch-men se fè sa, nan lang angle?
Li is--
ODYANS: Kreye yon konsèy.
DAVID J. Malan: Kreye yon konsèy nan yon int ak rele li x.
Se konsa, li kreye youn nan moun ki bwat Mwen kenbe desen sou ekran an touche.
Epi, koulye a, sou-sou bò dwat bò, malok, nan kou,
se allocation yon ti moso nan memwa.
Ak jis yo dwe klè, ki jan memwa anpil se li aparamman
allocation, si ou jis kalite fè matematik la isit la?
>> Se konsa, li 40 bytes.
Apre sa, mwen konnen ke se sèlman paske mwen konnen yon int, sou aparèy la CS50, omwen,
se kat bytes.
Se konsa, 10 fwa 4 se 40.
Se konsa, sa se estoke yon x, adrès la nan soti nan premye nan 40 antye ki
yo te resevwa lajan espas tounen, nan do, nan do, nan do.
>> Epi sa a, sa ki nan kle sou malok.
Li pa pran yon ti kras memwa isit la, yon ti kras isit la, yon ti kras isit la.
Li ba ou yon ti moso nan memwa, kontigu, ki soti nan opere nan
sistèm.
>> Koulye a, sa ki sou sa a, x bracket 10 egal 0?
Abitrè liy nan kòd.
Li pa reyalize anyen itil.
Men, li se enteresan, paske x bracket 10--?
Yeah?
>> ODYANS: [fèbl]?
>> DAVID J. Malan: x bracket 10 pa gen yo dwe nil.
Detay nan nil sèlman vin antre nan jwe ak strings, nan fen yon fisèl.
Men, yon bon te panse.
>> Kòman gwo se etalaj sa a, menm menm si mwen te resevwa lajan 40 bytes?
Li nan 0 atravè nèf, dwa?
Li nan 10 antye, manm.
40 bytes, men 10 antye, Catalogue 0 a 0.
>> Se konsa, sa se ke x bracket 10?
Li la aktyèlman kèk valè fatra sèks.
Li nan memwa ki pa fè pati nan mwen.
Mwen pa ta dwe manyen ke multiple nimewo 41, 42, 43, 44.
Mwen pral yon ti kras twò lwen.
>> Ak tout bon, si mwen kouri sa a pwogram nan, li ta ka trè byen aksidan.
Men, pafwa, nou pral jwenn chans.
Se konsa, jis yo demontre this-- ak franchman,
ou pa janm konnen anvan ou it-- kite a kouri sa a.
Li pa t 'aktyèlman aksidan.
>> Men, si mwen chanje sa a, pou egzanp, yo dwe tankou 1,000,
fè sa-a vrèman ekspre, kite a wè
si nou ka jwenn li nan aksidan moman sa a.
OK, li pa t 'aksidan.
Kouman sou 100,000?
Se pou yo renouvèlman li, epi kounye a relance li.
OK.
Phew.
Tout dwa.
Se konsa, aparamman, ankò, sa yo segments nan memwa, se konsa pale,
yo se rezonab gwo, se konsa nou kapab jwenn chans ankò e ankò.
Men, evantyèlman, yon fwa ou jwenn ridikil ak reyèlman ale lwen soti sou ekran an,
ou manyen memwa ki reyèlman, reyèlman pa fè pati nan nou.
>> Men, franchman, sa yo kalite pinèz yo ale
yo dwe rèd ak pi rèd eseye figi konnen sou pwòp ou yo.
Men, Erezman, menm jan pwogramasyon, nou gen zouti ki pèmèt nou fè sa pou nou.
Se konsa, sa a se, petèt, yon sèl nan pwogram yo ugliest,
menm uglier pase pwodiksyon gdb la.
Men, li toujou gen yon liy oswa de ki se super itil.
>> Valgrind se yon pwogram ki ede ou pa debug yon pwogram, se pou chak,
men jwenn ki gen rapò ak memwa- pwoblèm, espesyalman.
Li pral otomatikman kouri kòd ou a pou ou epi gade pou omwen de bagay sa yo.
Youn, ou te fè yon bagay aksidan tankou manyen memwa
ki pa t 'fè pati nan nou?
Li pral ede w jwenn ka sa yo.
>> Ak de, li pral ede ou jwenn yon bagay yo rele
fwit memwa, ki nou gen konplètman inyore, naivman,
pou kèk tan ak blissfully.
Men, li vire soti, tout tan sa a, chak fwa
ou te rele getString nan se konsa anpil nan pwogram nou yo,
w ap mande opere nan sistèm pou memwa,
men ou gen nenpòt rekoleksyon nan tout tan tout tan bay li
tounen, fè unalloc, oswa gratis, menm jan sa yo rele.
Non, paske nou te pa janm mande w yo fè sa.
>> Men, tout tan sa a, pwogram yo ou ve yo te ekri nan C
yo te koule memwa, mande opere nan
sistèm pou pi plis ak plis memwa pou strings ak etajèr,
men pa janm Distribiye l 'tounen.
Epi, koulye a sa a se yon ti jan nan yon Senplifikasyon,
men si ou te janm kouri Mac ou a oswa PC ou pou kèk tan, ouvèti
anpil nan pwogram yo, petèt fèmen pwogram,
e menm si ou òdinatè pa te te fè aksidan,
li a ap resevwa anpil pi dousman, tankou si li vrèman
lè l sèvi avèk yon anpil nan memwa oswa resous, menm si,
si ou pa ap menm manyen klavye a,
ki ta ka be-- men se pa always-- te kapab gen ke pwogram yo w ap kouri
gen tèt yo fwit memwa.
Apre sa, yo kontinye mande eksplwatasyon an pou pi plis ak plis memwa, men bliye sou li,
pa aktyèlman lè l sèvi avèk li, men li Se poutèt sa pran memwa lwen
soti nan lòt pwogram ki ta ka vle li.
Se konsa, se yon eksplikasyon komen.
Koulye a, isit la nan kote Valgrind a pwodiksyon se konplètman
atròs bay moun mwens ak plis konfòtab sanble.
Men, enteresan an bagay ki dwat moute isit la.
Li se di m 'yon ekri envalid nan gwosè kat k ap pase nan pwogram sa a,
an patikilye, nan liy 21 nan memory.c.
>> Si m 'ale nan liy 21, hm, gen tout bon se yon ekri valab nan gwosè kat.
Poukisa gwosè kat?
Oke, sa a number-- epi li ta ka anything-- se yon Int.
Se konsa, li kat bytes.
Se konsa, mwen mete kat bytes kote yo pa sipoze ye.
Sa a ki sa Valgrind se aktyèlman di m '.
Anplis, li pral tou di m ', jan nou pral wè,
jan ou kouri sa a nan yon pset nan lavni, si ak lè ou te fwit memwa, ki tout bon
Mwen gen, paske mwen te rele malok, men mwen gen pa aktyèlman
rele, nan ka sa a, gratis, ki nou pral evantyèlman wè
se opoze a nan malok.
>> Se konsa, kounye a, mwen panse, yon egzanp final la.
Se konsa, yon sèl sa a nan yon ti kras pi plis Esoteric, men li la petèt
rezon ki fè yo pi gwo nan dwe fè atansyon ak memwa,
ak pwogram rezon ki fè yo ke anpil ak / oswa serveurs entènèt, menm nan jou sa a,
yo te pran sou pa nèg move yon kote sou entènèt la ki moun ki se yon jan kanmenm
voye pakè fos nan sèvè ou ap eseye konpwomi kont ou,
oswa pran done ou a, oswa jis jeneralman pran sou yon machin.
Debòde tanpon, menm jan an Non sijere, mwayen
debòde pa yon int, men yon tanpon.
Ak yon zòn de defans se jis yon fason anpenpan pou li di li nan yon pakèt moun sou memwa.
>> Ak tout bon, mwen te rele yon afè anvan tanpon, olye pou yo a.
Paske si li nan yon zòn de defans, tankou nan sans nan YouTube,
oswa nenpòt ki lè w ap gade yon videyo, ou ta ka gen pou wè mo tampon a,
dot, dot, dot.
Li nan èkstrèmeman anmèdan.
Ak ki jis vle di ke jwè videyo ou
ap eseye telechaje anpil nan bytes, anpil nan bytes
ki sòti nan yon videyo soti nan entènèt la.
Men, li la dousman, se konsa li a ap eseye nan download yon pakèt nan yo
yo ranpli yon zòn de defans, yon veso, se konsa ke ou gen ase bytes ke li kapab Lè sa a,
montre w videyo a, san yo pa s'arrête toujou ap.
Men, li vire soti, ou kapab gen yon zòn de defans nan sa a gwo.
Men, eseye mete sa a done anpil nan li, epi trè move bagay ka rive.
Se konsa, pou egzanp, kite pou yo gade nan sa a kol final la nan yon egzanp.
Sa a se yon lòt pwogram ke, nan premye gade,
pa fè anyen super itil.
Li nan te resevwa yon fonksyon Main ki mande ki fonksyon, f.
Epi ki fonksyon, f, moute isit la, gen yon etalaj Char, rele c, nan gwosè 12.
Lè sa a, li nan lè l sèvi avèk sa a nouvo fonksyon rele strki.
>> Li sanble ke, ak sa a ki senp, senp liy nan kòd, jis de liy,
nou te fè pwogram tout antye mwen, ak Se poutèt sa, tout òdinatè mwen an,
ak kont itilizatè mwen an, epi difisil mwen kondwi potansyèlman vilnerab a nenpòt moun ki
ki moun ki konnen ak se yon bon bagay ase yo kouri pwogram sa a avèk yon liy lòd sèten
diskisyon.
Nan lòt mo, si nèg sa a move mete andedan nan argvargv [1] lè ou tape
nan klavye a yon trè espesyalman fabrike fisèl, pa abc, 123, men esansyèlman,
senbòl binè ki reprezante ègzèkutabl Kòd, yon pwogram ke li oswa li te ekri,
ak pwogram senp sa a, ki se reprezantan nan dè milye de pwogram
ki Menm jan an tou vilnerab, daresay, li ka finalman efase tout
dosye yo sou kondwi difisil mwen, jwenn yon kliyote èd memwa pou ke li oswa li te kapab
tape kòmandman sou pwòp yo, imèl tout dosye vin jwenn mwen.
Nenpòt bagay ki mwen kapab fè, li oswa li te kapab fè avèk Kòd sa a.
>> Nou pa pral byen rezoud sa a ankò.
Ak nan reyalite, li k ap pase yo enplike yon ti kras foto
tankou sa a, ki nou pral byento vini yo konprann tout pi bon an.
Men, pou jodi a, se pou yo fini sou sa ki nan, èspere ke, yon ti kras plis
konprann XKCD, blag, jiskaske nou rezime pwochen fwa.
Tout dwa.
Wè ou nan Mèkredi.
>> [Jwe mizik]
>> Oratè: Epi, koulye a, gwo twou san fon panse, pa Daven Farnham.
Memwa, se tankou sote nan yon pil nan fèy lò sou yon apremidi dimanch.
Mouche van, yo tap voye ou hair-- oh, mwen manke jou yo when--
>> [Ri]