>> [Jwe mizik]
DAVID J. Malan: Tout dwa.
Sa a se CS50, ak sa a se nan fen Semèn Kat.
Ak youn nan sijè yo jodi a se ke nan forensics dijital,
atizay la nan rekipere enfòmasyon.
Ak tout bon, menm si w ap nan mitan an
kounye a pou lapè nan Three ak pti, semèn pwochen,
konsantre la ap sou jisteman domèn sa a.
>> Se konsa, youn nan travay yo koul mwen janm te gen te tounen nan lekòl gradye,
lè mwen te ap travay pou lokal la Middlesex County District Attorney a
nan biwo a, fè forensics travay.
Se konsa, esansyèlman, Massachusetts la Lapolis Eta a, sou okazyon,
lè w ap travay sou ka ta pote nan bagay sa yo tankou kondui difisil
ak disk lèkter ak kat memwa ak renmen an.
Apre sa, yo ta lage yo m 'ak konseye m' yo,
ak objektif nou te jwenn prèv, si te gen nenpòt, sou medya sa yo.
Koulye a, ou ta ka gen pou wè m'apèrsu nan mond sa a nan forensics
nan medya, televizyon an ak sinema.
Men, travay la mwen te gen, ak daresay ke mond,
se pa byen tankou ou ta wè li.
Ann pran yon gade nan ki sa ou te pwobableman wè.
[Lèktur VIDEO]
-OK.
Koulye a, kite a jwenn yon gade bon nan ou.
>> [Jwe mizik]
>> -Hold Li.
Kouri ki tounen.
>> -Wait Yon minit.
Ale dwat.
-Gen.
Glase sa.
-Tout-Ekran.
>> -OK.
Glase sa.
-Tighten Moute sou sa a, èske ou?
>> -Vector Nan sou ki nèg pa volan an tounen.
>> -Zoom Nan dwa isit la sou plas sa a.
>> -Avèk Ekipman nan dwa, nan ka imaj ap elaji, egwize.
>> -Ki Nan sa?
>> -Li Nan yon pwogram amelyorasyon.
>> -Ka Ou klè ke moute nenpòt?
>> -Mwen Pa konnen.
Se pou yo amelyore li.
>> -Enhance Seksyon A6.
Mwen ranfòse detay a, and--
-Mwen Panse ke gen nan ase yo amelyore.
Lage li nan ekran mwen.
>> -Mwen Ranfòse refleksyon an nan je l '.
-Ann Kouri sa a nan videyo amelyorasyon.
>> -Edgar, Ou ka amelyore sa a?
>> -Hang Sou.
>> -I've Te ap travay sou refleksyon sa a.
>> Refleksyon yon moun -Gen a la.
>> -Reflection.
-Gen Nan yon refleksyon nan figi nonm lan.
>> Anpalan de refleksyon!
-Gen Nan yon refleksyon.
-Zoom Nan sou glas la.
Ou ka wè yon refleksyon.
>> -Ka Ou amelyore imaj la soti isit la?
-Ka Ou amelyore li?
-Ka Nou amelyore sa a?
-Ka Ou amelyore li?
-Hold Sou yon dezyèm fwa.
Mwen pral amelyore.
-Zoom Nan sou pòt la.
-Times 10.
-Zoom.
-Move Nan.
-More.
-Wait, Sispann.
-Stop.
-Pause Li.
-Rotate Nou 75 degre alantou vètikal la, tanpri.
>> -Stop.
Tounen nan pati a sou pòt la ankò.
>> -Got Yon aktivateur imaj ki ka Bitmap?
>> -Maybe Nou ka sèvi ak Pradeep Singh a metòd yo wè nan fenèt la.
>> Lojisyèl -La se leta nan atizay la.
>> Anpalan de eigenvalue se koupe.
>> -Avèk Dwa pou konbinezon de algoritm
>> Pran lumières -Li a algoritm nan yon nivo pwochen,
e mwen ka sèvi ak yo nan amelyore foto sa a.
>> -Lock Sou yo ak sou elaji aks-z.
>> -Enhance.
Amelyore.
-Enhance.
-Freeze Ak amelyore.
[Lèktur videyo END]
DAVID J. Malan: Se konsa, sa yo se tout mo yo, men yo pa t '
yo itilize nan fraz kòrèkteman.
Ak tout bon nan tan kap vini an, nenpòt ki lè, tanpri, ou tande yon moun di yon mo,
"Amelyore," glousman jis yon ti jan ti kras.
Paske lè w ap eseye amelyore, pou egzanp, sa a se sa ki rive.
>> Se konsa, isit la nan yon foto supèrb.
Sa a se pwòp Daven CS50 la.
Ak ta kwè ke nou te vle konsantre nan sou Twinkle ki nan je l 'yo,
oswa refleksyon an nan la move nèg ki te klèman
kaptire pa kamera a sekirite.
Sa a se sa ki pase lè ou rale nan sou yon imaj ki
la gen sèlman yon kantite limite nan Bits asosye ak li.
>> Se pou sa ke ou ta jwenn.
Ak tout bon, nan je Daven a se men kat, petèt sis piksèl
ki konpoze ekzakteman ki sa te ekla la.
Se konsa, Set Pwoblèm Kat pral finalman gen ou eksplore mond sa a, patikilyèman
pa nati nan yon bagay nou rele dosye mwen / O, kote
mwen / O se jis yon fason anpenpan nan li di opinyon ak pwodiksyon.
>> Se konsa, konsa byen lwen, nan tout entèraksyon yo nou te gen ak yon òdinatè
yo te lajman ak ou klavye ak ekran an,
men pa tèlman ak ki gen kapasite a difisil, oswa ekonomize nan dosye pi lwen pase sa yo ou
tèt ou ekri.
Pwogram ou konsa byen lwen gen pa te kreye, ak ekonomize,
ak jour dosye pwòp yo.
>> Oke, sa ki nan yon dosye?
Oke, yon bagay tankou yon JPEG.
Sa a se yon imaj ou ta ka gen oswa Upload Facebook,
oswa wè nenpòt kote sou entènèt la.
Vreman vre, ki foto nou jis te wè nan Daven te yon JPEG.
Ak sa ki nan enteresan sou dosye tankou JPEGs
se yo ke yo kapab idantifye, tipikman, pa sèten modèl nan miyèt moso.
>> Nan lòt mo, ki sa ki li ki fè distenksyon yon JPEG ki sòti nan yon GIF
ki sòti nan yon PING ki sòti nan yon mo dokiman ki soti nan yon dosye Excel?
Oke, li nan jis diferan modèl nan miyèt moso.
Ak moun ki modèl diferan yo anjeneral nan kòmansman an nan sa yo dosye.
>> Se konsa, ki lè òdinatè w lan ouvè yon Pawòl doc, oswa lè yon òdinatè ouvè yon JPEG,
li sanble tipikman nan la premye Bits plizyè nan dosye a.
Men, si li rekonèt yon modèl, li di, oh, sa a se yon imaj.
Kite m 'montre li nan itilizatè a kòm yon grafik.
Oswa, oh, sa a sanble yon doc Pawòl.
Kite m 'montre li nan itilizatè a kòm yon redaksyon.
>> Se konsa, pou egzanp, JPEGs, li vire soti, yo se
san patipri sofistike anba kapo a.
Men, anvan twa bytes yo nan pi fò chak JPEG kòmanse ak twa nimewo sa yo.
Se konsa, multiple zewo, yon sèl, ak de yo se, nan pi chak JPEG, 255, Lè sa a, nimewo a
216, Lè sa a, nimewo a 255.
>> Ak sa ki ou pral kapab kòmanse fè semèn pwochèn
se aktyèlman poking anba kapo a nan dosye tankou JPEGs
ak renmen dosye bitmap, li wè sa k te toujou gen pou osi lontan
jan ou ve yo te lè l sèvi avèk yon òdinatè.
>> Men, sa ki nan pa gen tipikman ekri tankou nimewo desimal tankou sa a.
Syantis konpitè pa fè sa yo gen tandans pale nan desimal.
Yo pa reyèlman pale nan binè.
Tipikman, lè nou vle yo eksprime nimewo,
nou aktyèlman itilize ekzadesimal, ki ou ka sonje
soti nan, di, Set Pwoblèm Yon sèl, ki defye
ou bezwen panse osijè de yon sistèm diferan.
>> Nou, nan kou, yo abitye ak desimal, zewo atravè nèf.
Nou te pale de binè.
Epi nou pa vrèman gen yo sèvi ak ke anpil isit la
sou deyò, paske òdinatè ap sèvi ak sa.
Men, pwogramasyon pral trè souvan, men se pa toujou,
itilize ekzadesimal, ki jis vle di ou gen 16 lèt nan alfabè ou,
kòm opoze a de oswa 10.
>> Se konsa, kouman ou konte nan pi wo pase nèf nan ekzadesimal?
Ou ale 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, jis pa konvansyon.
Men, sa ki nan kle a se ke chak nan sa yo se yon senbòl sèl.
Pa gen okenn 10.
Pa gen okenn 11, se pou chak, paske chak nan chif ou a, jis tankou nan desimal
ak jis tankou nan binè, yo ta dwe jis gen yon karaktè sèl, pa konvansyon.
>> Se konsa, ki lè sa a se alfabè a nou gen a jete nou an pou ekzadesimal.
Se konsa, sa yon JPEG gade tankou si ou yo te ekri soti moun premye twa
bytes pa tankou desimal men, pou egzanp, kòm ekzadesimal?
Epi poukisa se Egzagòn menm tout sa ki itil?
>> Oke, yon gade rapid nan yon egzanp.
Se konsa, si mwen ekri soti Bits yo ki reprezante sa yo numéros desimal
sa a ta kapab yon ti kras wouye kounye a soti nan yon kèk semèn tounen,
men se yon sèl la a gòch ak yon sèl dwa yo se trè fasil.
255 te pi gwo nou nan nimewo ka reprezante ak wit miyèt moso.
Li te tout moun.
Se konsa, yon sèl la sèlman sa a, se léjèrman enteresan an se yon sèl la presegondè.
Men, si ou kalite fè soti nan matematik, ou pral enferyè ke, tout bon,
ki modèl nan yon sèl ak zewo reprezante 216.
Se konsa, kite yo jis ladann pou kounye a ke sa yo, se kòrèk.
Men, poukisa se sa a enteresan?
>> Oke, yon multiple, nan kou, se uit miyèt moso.
Epi li vire soti ke si ou panse ke nan yon multiple menm jan de fragman nan kat Bits,
tankou sa a.
Kite m 'jis ajoute kèk espas.
Se konsa, anvan, apre yo fin.
Mwen te jis te ajoute kèk espas blan pou dedomajman pou vizyalizasyon a isit la.
Ki jan nou ta ka kounye a reprezante a, di, ekzadesimal chak kwadwilatè nan Bits,
chak mete nan kat Bits?
>> Se konsa, pou egzanp, sou bò gòch la kounye a, nou gen 1111 nan binè.
Ki sa ki se ke nimewo nan desimal, si ou fè soti matematik la?
Ou gen plas inite yo, plas la Dezan, plas la four, ak kote a eights.
>> ODYANS: 15.
DAVID J. Malan: Li nan 15.
Se konsa, si nou fè uit plis kat plis de plis yon, nou jwenn 15.
Se konsa, mwen ta ka ekri desann 15 anba a 1111, men pwen an antye isit la
se ekzadesimal, pa desimal.
Se konsa, olye pou yo ekri desann 15, 1-5, Mwen pral ekri ke nan Egzagòn,
ki si ou panse tounen, si ou gen zewo nan f, ki sa ki 15 pral fè?
ODYANS: f.
DAVID J. Malan: Se konsa, li vire soti li nan f.
Epi ou ka travay ki soti lè li di, byen, si yon se 10, Lè sa a, OK, f se 15.
Se konsa, tout bon, nou te ka reyekri seri sa a menm nan nimewo kòm f f.
Lè sa a, si nou fè yon ti jan nan matematik, nou pral enferyè ki sa a, se d.
Uit se trè fasil, paske nou gen yon sèl nan plas la eights.
Lè sa a,, nou gen yon koup plis f f a.
>> Se konsa, sa moun yo gen tandans fè pa konvansyon lè yo sèvi ak ekzadesimal se yo jis
ekri sa a yon ti kras plis suksen, debarase m de pi fò nan ki espas blan.
Ak jis yo dwe Super klè nan lektè ke sa a se ekzadesimal,
konvansyon an senp nan mitan moun ki ou ekri zewo
x, ki pa gen okenn siyifikasyon lòt pase yon idantifyan vizyèl nan,
isit la vini yon nimewo Egzagòn.
>> Lè sa a,, ou mete de chif yo, f f nan ka sa a, lè sa a d yon, lè sa a f f.
Se konsa, istwa long kout, ekzadesimal jis gen tandans
a ap itil paske chak nan li yo chif, zewo nan f, parfe liy
moute ak yon modèl nan kat miyèt moso.
>> Se konsa, si ou gen de chif ekzadesimal, zewo jiska F, ankò e ankò,
ki ba ou parfe uit Bits oswa yon sèl multiple.
Se konsa, Se poutèt sa li gen tandans gen konvansyonèl itil.
Gen nan pa gen entelektyèl kontni reyèlman pi lwen pase sa,
lòt pase sèvis piblik aktyèl li yo.
>> Koulye a, JPEGs se pa sèlman nan ranpli fòma pou grafik.
Ou ta ka sonje ke gen dosye tankou sa a nan mond lan,
omwen ki sòti nan yon kèk ane tounen.
>> Se konsa, sa a te aktyèlman enstale nan Windows XP
sou dè milyon de PC yo atravè mond lan.
Lè sa a te yon dosye bitmap, BMP.
Ak yon dosye bitmap, menm jan ou pral wè pwochen semèn, jis vle di yon modèl nan pwen,
piksèl menm jan yo ap rele, yon kat jeyografik sou Bits, vrèman.
>> Se konsa, sa ki nan enteresan, menm si, sou fòma dosye sa a, BMP, se
ki anba kapo a, li gen plis pase jis twa bytes
ki konpoze header li, se konsa yo pale, premye mòde yo kèk.
Li aktyèlman sanble yon ti kras konplike nan premye gade.
Epi ou pral wè sa a nan P ansanm lan.
Yo ak pou jwenn yon bagay soti patikilye nan sa a kounye a
se pa tèlman enpòtan, kòm jis lefèt ke nan kòmansman an nan chak bitmap
dosye, yon fòma grafik, gen nan yon pakèt antye nan nimewo.
>> Koulye a, Microsoft, nan otè a fòma sa a,
gen tandans fè rele moun bagay sa yo pa antye ak charaktèr
ak cha men pawòl ak d mo yo ak lon ak bytes.
Se konsa, yo ap jis kalite done diferan.
Yo ap non diferan pou menm bagay la.
Men, ou pral wè ke nan P Set Kat.
>> Men, sa a se sèlman yo di ke si yon moun doub-klik kèk dosye BMP sou l '
oswa kondwi difisil l ', ak yon fenèt ouvè moute ki montre l 'oswa li ki imaj,
sa ki te rive paske opere nan sistèm prezimableman remake pa sèlman
ekstansyon nan dosye BMP nan non an ranpli,
men tou, lefèt ke gen nan kèk konvansyon modèl la nan Bits
nan kòmansman la anpil nan ki dosye bitmap.
>> Men, kite a kounye a konsantre sou tankou yon dosye konplike,
men olye sou yon bagay tankou sa a.
Sipoze isit la nan jdi, mwen jis gen kòmanse yo
nan yon pwogram sa a, se trè senp.
Mwen te gen kèk gen ladan moute tèt.
Koulye a, mwen te gen # enkli "structs.h" men Mwen pral tounen vin jwenn ke nan yon moman.
Men, sa a se itil pou kounye a.
Se konsa, sa a se yon pwogram ki nan ale nan aplike
tankou baz done rejistrè a.
Se konsa, yon baz done nan elèv yo, ak chak elèv nan mond lan
gen yon non ak yon kay ak pwobableman kèk lòt bagay, men nou pral kenbe li senp.
Chak elèv gen yon non ak yon kay.
>> Se konsa, si mwen te vle ekri yon pwogram ki gen objektif nan lavi
te jis repekte soti nan zewo sou jiska twa,
si gen nan twa elèv nan Inivèsite Harvard.
Apre sa, mwen jis vle jwenn, lè l sèvi avèk GetString, Non chak elèv an ak kay,
ak Lè sa a jis enprime moun soti.
>> Sa a se sòt de tankou Semèn Youn, Semèn De bagay kounye a,
kote mwen jis vle yon pou riban oswa yon bagay tankou sa.
Apre sa, mwen vle rele GetString yon kèk fwa, ak Lè sa a, ekri ak lèt ​​detache f yon fwa kèk.
Se konsa, kouman ka mwen fè sa, menm si, lè tou de yon non ak yon kay
ap patisipe pou chak elèv?
>> Se konsa, premye ensten mwen ta ka gen fè yon bagay tankou sa a.
Mwen ta ka premye di, byen, ban m ', di, yon etalaj de strings rele non.
Apre sa, mwen pa vle yon hardcode twa isit la.
Ki sa mwen vle mete ladan l '?
Se konsa, ELÈV, paske sa se sèlman yon konstan te deklare nan tèt la,
jis pou mwen pa oblije hardcode twa nan plizyè kote.
Fason sa a, mwen ka chanje li yon sèl kote, epi li afekte yon chanjman toupatou.
Lè sa a,, mwen ta ka fè fisèl kay ELÈV.
>> Epi, koulye a, mwen ta ka fè yon bagay tankou pou (Int mwen = 0; mwen <ELÈV; mwen ++.
Se konsa, mwen sezisman vit, men sa a se pwobableman abitye sentaks kounye a.
>> Epi, koulye a, sa a te pi resan.
Si m 'vle mete nan-th a mwen non elèv yo, mwen panse ke mwen fè sa.
Lè sa a,, pa non men kay bracket mwen.
Mwen fè sa, GetString, epi kite m 'ale tounen ak ranje liy sa a.
Dakò?
Li pa anpil user-zanmitay.
Mwen pa menm di itilizatè a sa yo dwe fè.
>> Men koulye a,, si mwen tou te vle pita, se pou yo
di, enprime bagay sa yo out-- konsa TODO pita.
Mwen pral fè plis ak this-- sa a joui se
yon aplikasyon kòrèk la nan ap resevwa non ak kay, twa
nan yo manm nan chak, ki soti nan yon itilizatè.
>> Men, sa a se pa trè bon konsepsyon, dwa?
E si yon elèv gen pa jis yon non ak yon kay, men tou, yon nimewo ID,
ak yon nimewo telefòn, ak yon adrès imel,
e petèt yon paj lakay, ak petèt yon manch Twitter,
ak nenpòt ki kantite lòt detay ki asosye avèk yon elèv oswa yon moun,
plis jeneralman.
Ki jan nou ta kòmanse yo ajoute fonctionnalités nan pwogram sa a?
>> Oke, mwen santi mwen tankou wout la ki pi senp ta ka gen fè yon bagay tankou, kite la di,
Int idantifikasyon ELÈV.
Se konsa, mwen ka mete tout idantite yo nan la.
Lè sa a,, pou yon bagay tankou nimewo telefòn,
Mwen pa si ki jan yo reprezante ki jis ankò.
Se konsa, kite a ale pi devan ak jis rele sa a Twitters ELÈV, ki
se yon ti kras etranj, but-- ak yon pakèt plis jaden.
>> Mwen te kòmanse nan efektivman kopye epi kole isit la.
Ak sa a se pral yo grandi trè maladwa trè byen vit, dwa?
Pa li ta dwe nice si te gen nan mond lan yon estrikti done li te ye
pa tankou yon int oswa yon fisèl, men yon bagay pi wo nivo, yon distraksyon, se konsa
yo pale, yo konnen kòm yon elèv?
C pa t 'vini ak bati-an fonctionnalités pou elèv yo,
men ki sa si mwen te vle ba li sa yo?
>> Oke, li vire soti, mwen pral louvri yon dosye rele structs.h isit la,
epi ou ka fè egzakteman sa.
Apre sa, nou pwal kòmanse fè sa kounye a.
Ak anba kapo a nan P Set Twa, ou te deja te fè sa kounye a.
Pa gen okenn bagay tankou yon dirèk g oswa yon oval g nan C. nan lang programmation
>> Folks nan Stanford aplike sa yo kalite done lè l sèvi avèk apwòch sa a isit la,
deklare pwòp done nouvo yo kalite lè l sèvi avèk yon nouvo mo kle
rele konstri ak yon lòt yon sèl rele tipedèf.
Ak tout bon, menm si sentaks la sanble yon ti kras diferan de bagay
nou te wè anvan, nan prensip, li la super senp.
>> Sa a jis vle di "defini yon kalite."
Sa k ap pase yo dwe yon estrikti, ak yon estrikti
se jis tankou yon veso ki pou plizyè bagay sa yo.
Epi sa estrikti ki pral yo gen yon kòd yo rele non,
ak yon kòd yo rele kay.
Li kite yo rele, jis pou konvenyans, sa a tout antye estrikti done elèv yo.
>> Se konsa, moman sa a ou jwenn yo virgules a, ou gen kounye a
kreye done pwòp ou a kalite rele elèv
ki kounye a kanpe ansanm ak Int, ak flote, ak Char, ak fisèl,
ak g dirèk, ak g oval, ak nenpòt ki kantite nan lòt bagay moun te envante yo.
>> Se konsa, sa ki nan itil sou sa a kounye a se ke si mwen ale tounen
konstri 0 epi fini sa a aplikasyon, ki mwen te ekri
nan avanse isit la, remake ke tout nan messiness la inevitab ke
te sou yo kòmanse ap pase jan mwen te ajoute nimewo telefòn ak Twitters ak tout
sa yo lòt bagay yo definisyon yon elèv,
kounye a li nan suksen vlope moute kòm sèlman yon sèl etalaj de elèv yo.
>> Epitou, chak nan elèv sa yo kounye a gen plizyè bagay andedan nan li.
Se konsa, ki jis kite yon sèl kesyon.
Kouman nou ka jwenn nan non yo, ak kay la, epi ID an,
ak tou sa lòt bagay se andedan nan elèv la?
Super senp, tankou byen.
New sentaks, men yon lide ki senp.
>> Ou tou senpleman endèks nan etalaj la, jan nou te fè semèn pase a ak sa a.
Ak sa ki nan klèman nan nouvo moso nan sentaks?
Jis., Ki vle di "ale andedan nan estrikti epi pou yo jwenn jaden an rele
Non, jwenn jaden an rele kay, jwenn jaden an rele elèv yo. "
>> Se konsa, nan P Set Twa, si w ap toujou ap travay sou sa,
ak pi folks toujou yo, reyalize ke jan ou
kòmanse lè l sèvi avèk bagay sa yo tankou g rects ak g oval
ak lòt bagay ki pa sanble yo soti nan Semèn Zero, Youn, oswa de,
reyalize ke sa a, se paske Stanford te deklare kèk kalite done nouvo.
>> Ak tout bon, sa a, se egzakteman sa nou pral fè, kòm byen, nan P Set Kat, lè
nou kòmanse fè fas ak bagay sa yo tankou imaj, Bitmap, ak plis ankò.
Se konsa, sa se sèlman yon kol ak yon modèl mantal pou ki sa ki ap vini yo.
Koulye a, mwen ranvwaye yon ti jan maten sa a.
Mwen te kalite kirye yo wè sa ki Microsoft photo a aktyèlman
sanble jodi a.
Epi li vire soti yon moun nan ane 2006, aktyèlman te ale nan prèske jisteman
plas la menm pran foto nan reyalite sa ki sanble ki jou sa yo.
Jaden an se kounye a yon ti kras kantite ti vilaj.
>> Se konsa, pale kounye a nan imaj, kite a fè m 'tounen isit la Daven
sou ekran an ak Nicholas, ak jis fè ou sonje
ke si ou ta renmen rantre nan nou pou manje midi sa a Vandredi, tèt a URL nòmal nou an
isit la.
>> Se konsa, kote nou te kite nan jou lendi a?
Nou prezante pwoblèm sa a, dwa?
Sa a te w pèdi yon kòrèk aplikasyon nan swap,
annakò ou pran de antye, yon sèl rele yon, yon sèl rele b,
swap yo, jis tankou Laura te fè isit la sou sèn ak lèt ​​la ak dlo a,
lè l sèvi avèk yon tanporè varyab, oswa yon tas vid,
pou nou te kapab mete b nan yon ak yon nan b san yo pa fè yon dezòd nan bagay sa yo.
Nou itilize yon varyab.
Yo rele li temp.
>> Men, sa ki te fondamantal la pwoblèm ak Kòd sa a nan Lendi?
Ki sa ki te pwoblèm nan isit la?
Yeah.
>> ODYANS: Li pran moute plis espas.
>> DAVID J. Malan: pran moute plis espas, paske mwen m 'lè l sèvi avèk yon varyab,
e ke sa a OK.
Sa se vre, men mwen pral di ke se ok.
Li nan sèlman 32 Bits nan Grand a konplo de bagay sa yo, se konsa pa yon kontra gwo.
Lòt panse?
ODYANS: Li sèlman swaps varyab yo lokalman.
DAVID J. Malan: Egzakteman.
Li sèlman swaps varyab yo lokalman.
Paske nenpòt ki lè ou rele yon function-- lè mwen te gen plato yo soti nan Annenberg
dènye fwa, ou gen prensipal sou anba a.
Le pli vit ke ou rele yon fonksyon rele swap, swap pa jwenn x ak y,
valè yo orijinal yo.
Ki sa swap jwenn, èske nou reklame?
ODYANS: Kopi.
DAVID J. Malan: Se konsa, kopi yo.
Se konsa, li vin youn ak de, si ou sonje egzanp lan ki soti nan dènye tan,
men yon kopi youn ak de ki yo avèk siksè échanges.
Men, malerezman nan fen a, valè sa yo yo toujou menm bagay la.
Se konsa, nou ka wè sa a ak nou an nouvo zanmi, èspere ke gdb,
ke ou oswa TFs yo ak Ca an gen te k ap gide ou nan direksyon jan sa a.
>> Se konsa, pa gen okenn rapèl swap sanble like-- kite nan louvri moute sanble this-- tankou sa a.
Nou initialisé x nan yon sèl, y a de.
Te gen yon pakèt moun sou ekri an lèt detache f a.
Men, lè sa a, rele nan kle isit la se te swap, ki
se egzakteman nou an Kòd jis te wè yon ti moman de sa.
Ki se kòrèk nan premye gade, men fonksyonèl,
pwogram sa a pa travay, paske li pa pou tout tan swap x ak y.
>> Se konsa, kite a wè sa a, yon cho rapid moute isit la ak gdb, yon ./noswap.
Yon pakèt moun enfòmasyon akablan ke Mwen pral debarase m de ak kontwòl L pou kounye a.
Epi, koulye a, mwen pral ale pi devan epi kouri li.
Ak malerezman, ki pa t 'ki itil.
Li kouri pwogram nan andedan nan sa a pwogram yo rele gdb, yon debugjeur,
men li pa t 'kite m' pike alantou.
>> Se konsa, kouman ka mwen aktyèlman pran yon poz ekzekisyon andedan pwogram sa a?
Se konsa, kraze.
Apre sa, mwen te ka kraze sou nenpòt ki liy nimewo, yon sèl, 10, 15.
Men, mwen kapab tou kraze senbolik lè li di ti repo prensipal la.
Epi sa a pral mete yon ti repo pwen, aparamman nan liy 16 nan prensipal.
Ak ki kote se liy 16?
Ann moute al kòd la epi ale jiska noswap.
Ak tout bon, liy 16 se nan trè premye nan pwogram lan.
>> Se konsa, kounye a, si mwen ale pi devan ak kalite kouri tan sa a, Antre, li Sarepta.
Se konsa, kite a pike alantou.
Enprime x-- poukisa se x zewo?
Ak inyore siyen an dola.
Se jis pou amateur l 'a pwogram lan.
Poukisa se x zewo nan moman sa a?
Yeah.
>> ODYANS: Li Sarepta dwat devan liy 16, pa aktyèlman sou liy 16.
DAVID J. Malan: Egzakteman.
Gdb, pa default, te Sarepta ekzekisyon jis anvan liy 16.
Se konsa, li pa te egzekite, ki vle di x se nan kèk valè sèks.
Apre sa, nou gen chans ke li nan yon bagay ki pwòp tankou zewo.
Se konsa, kounye a, si mwen tape vini an, kounye a li egzekite 16.
Li nan ap tann pou m 'al touye 17.
Kite m 'ale pi devan epi ekri ak lèt ​​detache x.
Li nan yon sèl.
Kite m 'ale pi devan epi ekri ak lèt ​​detache y.
Kisa mwen ta dwe wè koulye a?
>> ODYANS: [fèbl]
>> DAVID J. Malan: Yon pi fò ti kras.
>> ODYANS: [fèbl]
DAVID J. Malan: Pa byen yon konsansis.
Se konsa, repons lan se wi, nou wè kèk valè fatra.
Koulye a, y se 134514064 la.
Oke, li nan jis kèk valè fatra.
Pwogram m 'sèvi ak RAM pou rezon diferan.
Genyen lòt fonksyon ou.
Lòt moun te ekri anndan òdinatè mwen an.
Se konsa, sa yo Bits yo te itilize pou lòt valè, ak sa m ap wè
se sold yo nan kèk itilize anvan nan ki memwa.
>> Se konsa, pa gen okenn kontra gwo, paske le pli vit jan mwen tape pwochen ak Lè sa a enprime y,
li nan initialisé valè a ke mwen vle.
Se konsa, kounye a, kite yo ale pi devan yon ti kras pi vit.
N pou vini an.
Se pou yo fè l 'ankò.
Men, mwen pa vle frape li isit la, paske si mwen
vle wè sa k ap pase sou andedan nan swap, sa ki nan lòd la?
>> ODYANS: etap.
>> DAVID J. Malan: etap.
Se konsa, sa etap m 'nan yon fonksyon, olye ke sou li.
Epi, koulye a, li nan yon ti kras skre onètman, men sa a se jis
di m 'mwen se nan liy 33 kounye a.
Li kite yo fè sa ankò.
Ekri an lèt detache temp.
Valè fatra, negatif tan sa a, men sa a jis toujou yon valè fatra.
Se konsa, kite a fè pwochen, ekri ak lèt ​​detache temp.
Li nan initialisé nan 1, ki te valè a nan x, aka yon.
>> Koulye a, kote se yon nou yo ak x vini soti nan?
Oke, remake nan prensipal yo, nou rele sa yo valè x ak y.
Nou lè sa a pase yo swap jan sa a.
X vini an premye, vigil y.
Lè sa a,, swap te kapab rele yo x ak y.
Men, pou klè, li nan rele yo a ak b.
Men, A ak B se kounye a pral fè kopi x ak y, respektivman.
>> Se konsa, si mwen tounen al jwenn gdb, temp se kounye a yon sèl ak yon se kounye a youn.
Men, si mwen fè pwochen e kounye a, fè ekri ak lèt ​​detache yon, yon te deja deplase sou.
Te lèt la te vide nan ansyen an vè ji zoranj nan, oswa vis vèrsa.
>> Men, si mwen fè pwochen ankò, e kounye a, si mwen enprime soti kòm yon chèk saniti,
yon se toujou de, men b se kounye a youn.
Franchman, li la toujou la.
Mwen pa pran swen sa temp se.
Men, le pli vit ke mwen kounye a tape, kite la di, kontinye ale tounen, kounye a mwen se nan fen an
pwogram nan.
Ak malerezman, x se toujou youn ak y se toujou de.
>> Se konsa, sa ki te sèvis piblik la nan gdb a?
Li pa t 'ede m' repare pwoblèm nan se pou chak,
men li èspere ke ede m ' konprann li pa ka akonpli
ki se wi, lojik mwen an se dwa, men kòd m 'se pa finalman gen
yon enpak pèmanan.
Se konsa, se yon pwoblèm nou ap ale nan kounye a rezoud jodi an.
>> Men, kite a jwenn gen pa fason pou sa a.
Fisèl se yon manti.
Li, tou, pa yon kalite done ki egziste nan C. Li nan
te yon synonym pou kèk tan pou yon lòt bagay,
epi nou ka fè ou konnen ki jan sa a.
>> Kite m 'ale pi devan epi louvri moute yon pwogram ki rele konpare-0.
Ak olye ke tape yon sèl sa a soti, nou pral kòmanse nan mache nan kòd la
Mwen deja te ekri, men li a sèlman yon liy kèk.
Se konsa, sa a se konpare-0.
Ak nan premye bagay m ap fè a ap vin yon liy nan tèks.
>> Men, remake ki sa mwen se fè pou premye fwa.
Ki sa ki diferan klèman sou liy 21?
Aktyèlman, rete tann yon minit.
Sa a se kopi de.
Sa se pa menm pwogram la dwat.
Tout dwa, beke alèt yo.
Tout dwa, kidonk pa janm lide sa.
Sa a repons lan nan yon kesyon nan lavni.
>> Isit la se konpare-0, ak mwen se sou yo ka resevwa yon liy nan tèks.
Pwogram nan pi senpl.
Se konsa, sa a se senp.
Sa a se tankou Semèn One, Semèn De bagay nan moman an. fisèl la = GetString.
Koulye a, mwen di l 'ankò desann isit la.
fisèl t = GetString.
Lè sa a,, bagay la pase nan sa a pwogram nan, kòm non li sijere,
se mwen pral pou yo eseye konpare yo.
>> Se konsa, si a, fisèl la an premye, egal = t, Lè sa a, mwen se
pral di ou tape menm bagay la.
Lòt moun, mwen pral di ou tape bagay diferan.
Se konsa, kite a konpile epi kouri pwogram sa a.
Se konsa, fè konpare zewo.
Sanble bon.
Pa gen okenn erè konpilasyon.
>> Kite m 'ale pi devan koulye a ak kalite ./compare-0.
Kite m 'ale pi devan epi di yon bagay : Daven ak yon bagay: Rob.
Apre sa, mwen tape bagay diferan.
Se konsa, lwen, se konsa bon.
Pwogram sanble ap kòrèk.
>> Men, kite a kouri l 'ankò.
Di yon bagay: Gabe.
Tout dwa.
Petèt mwen frape bar espas oswa yon bagay Funky.
Se pou yo fè l 'ankò.
Se konsa, Zamyla.
Zamyla.
Diferan bagay sa yo.
Se konsa, ki sa ki pwal sou?
>> Se konsa, nou gen de liy sa yo nan kòd, GetString yo te rele de fwa.
Lè sa a,, mwen tou senpleman eseye konpare la ak t.
Men, sa ki vrèman Lè sa a, ki pwal sou?
Oke, sou ekriti mwen an bouche egzanp sa a yon ti jan.
Li kite yo aktyèlman voye jete sa a moute sou isit la, kòm byen.
>> Se konsa, nou gen yon liy tankou fisèl la = GetString.
Se konsa, ki la tou senpleman premye a enteresan liy ki soti nan pwogram sa a.
Men, sa ki te tout tan tout tan sa a te ale sou anba kapo a?
Oke, sou-bò gòch bò se fisèl, ki se kèk kalite varyab,
ak sa yo rele an.
Se konsa, mwen konnen ke sa a se lè l sèvi avèk memwa, oswa RAM, nan òdinatè mwen an yon jan kanmenm.
Se konsa, mwen pral abstrè trase ke kòm yon kare.
32 Bits, li vire soti, men plis sou sa nan tan kap vini an.
Lè sa a,, ki sa ki k ap pase sou sou isit la?
>> Oke, GetString evidamman vin yon fisèl soti nan itilizatè lan.
Epi GetString te resevwa Zamyla oswa Gabe oswa Daven.
Se konsa, kite a chwazi premye a nan tout sa yo, ki te Daven.
Se konsa, efektivman, sa GetString te resevwa m 'nan ka sa a premye te D-yon-v-e-n.
Lè sa a,, ki lòt bagay te fè li ban m 'an kachèt?
ODYANS: [fèbl]
DAVID J. Malan: Yeah, / 0 oswa nil karaktè la.
Se konsa, li efektivman te ban m 'yon fisèl.
Men, nou deja konnen from previous sanble ke yon fil se jis yon etalaj
nan karaktè, ak li a sispann pa sa a karaktè Sentinel espesyal, / 0.
>> Men, si sa a se vre e sa se yon kare,
sa a se byen klè yon rektang pi gwo anpil.
Ak tout bon, sa a se, Mwen reklame, se sèlman 32 miyèt moso.
Lè sa a se byen klè pi plis pase 32 Bits, paske sa a se pwobableman
uit plis uit plis uit plis uit plis uit,
jis paske nan bytes nan ASCII.
Kouman yo èk an nou pral nan anfòm Daven nan sa a ti kras ti bwat isit la?
>> Oke, ki sa ki GetString aktyèlman fè?
Oke, gri sa a isit la reprezante memwa òdinatè mwen an oswa RAM.
Se konsa, kite a abitrèman di ke si chak nan sa yo reprezante yon multiple,
Lè sa a, nou ka panse a chak multiple tankou ke li gen yon adrès,
tankou 33 Oxford Street, oswa 34 Oxford Street, oswa 35 Oxford Street.
>> Se konsa, jis tankou kay gen adrès ak nan bilding gen adrès,
pou fè bytes endividyèl yo nan memwa gen adrès oswa nimewo
ki inikman idantifye yo.
Koulye a, sa a se abitrè.
Men, yo kenbe li senp, mwen pral itilize ekzadesimal jis pa konvansyon,
men 0x a vle di pa gen anyen lòt pase "sa a se ekzadesimal."
ak mwen pral fè reklamasyon ki nan "D" fini moute nan okte Youn nan memwa.
>> Mwen te resevwa pa gen anyen lòt ap pase nan memwa, se konsa Daven te resevwa plas an premye
nan multiple Youn.
Sa a, lè sa a, se pral fè 0x2.
Sa a se pral 0x3.
Sa a se pral yo dwe 0x4.
Sa a se pral 0x5.
Sa a se pral yo dwe 0x6.
>> Men, yon fwa ou kòmanse panse sou Ki sa fè òdinatè a nan
anba kapo a, ou ka kòmanse yo dégager
ki jan ou, gen kèk ane de sa, ta te aplike C tèt li.
Ki sa ki se GetString pwobableman returning-- paske li
santi l tankou li pa retounen Daven, se pou chak,
paske li te siman pa pral nan anfòm nan box-- sa a ti kras
Se konsa, sa se GetString pwobableman retounen?
>> ODYANS: [fèbl]
>> DAVID J. Malan: kote a nan Daven.
Ak li a te fè sa a depi tout tan Semèn One.
Ki sa ki GetString se reyèlman retounen se pa yon fisèl, se pou chak.
Sa a yon sèl nan ti kras manti blan yo.
Li nan retounen adrès la nan la fisèl nan memwa, adrès la inik.
Daven ap viv nan 33 Oxford Street.
Men, plis suksen, Gavin ap viv nan 0x1, Adrès Nimewo Youn.
>> Se konsa, sa vin mete nan sa a bwat ti kras lè sa a, yo dwe klè,
se jis adrès la nan ki fisèl.
Se konsa, tout tan sa a, sa a ki te ale sou.
Men, sa ki sa a sijesyon nan kounye a se ke si tout nan gen
se yon nimewo andedan nan li, ki moun ki nan yo sispann ou, pwogramè a,
soti nan mete nenpòt ki nimewo nan nenpòt varyab ak jis sote
ak sa yo ki ti moso nan memwa?
Ak tout bon, nou pral wè sa a, se yon menas pwochen fwa.
>> Men, pou kounye a, sa a santi l ensifizan.
Si mwen di, jwenn m 'yon fisèl, ou ban m 'Daven.
Men, ou pa reyèlman ban m 'Daven.
Tout sa ou ban m 'se adrès Daven la.
Kouman pou mwen lè sa a konnen pou asire w ki kote Daven kòmanse ak ends--
a nan istwa ap resevwa weird-- ki kote Daven kòmanse ak fini,
ak Lè sa a, pwochen an fisèl nan memwa kòmanse?
>> Oke, si w ap Distribiye m 'nan konmansman an nan Daven,
esansyèlman, ki jan pou mwen konnen ki kote nan fen non l 'se?
Sa karaktè espesyal nil, ki se tout plis nan enpòtan kounye a
si strings anba a kapo yo se tou senpleman idantifye
inikman pa kote yo nan memwa.
Se konsa, tout tan sa a, sa a, se sa ki te pral sou.
>> Se konsa, lè nou gade kounye a nan Kòd la isit la, eksplike
si ou ta pinèz la nan liy 26.
Poukisa se Zamyla ak Zamyla diferan?
Poukisa se Gabe ak Gabe diferan?
Yeah, nan do.
>> ODYANS: Yo gen adrès diferan.
>> DAVID J. Malan: Tou senpleman paske yo gen adrès diferan.
Paske lè ou rele GetString ankò, ki mwen pral fè byen vit isit la,
si sa a se dezyèm liy, fisèl la t, jan mwen te fè nan pwogram sa a,
egal yon lòt apèl nan GetString.
Tan nan pwochen mwen rele GetString, mwen pral
yo ka resevwa yon ti moso diferan nan memwa.
>> GetString se pèmèt mande opere nan
sistèm pou pi plis ak plis memwa.
Li pa nan ale nan jam itilize menm bagay la tou sis bytes chak fwa sèl.
Li nan ale nan jwenn yon nouvo ti moso nan memwa, ki
vle di t ki pral jwenn kèk lòt valè sou isit la.
>> Se konsa, lè m 'fè a egal = t, ou pa ap konpare
D kont sa a ak A kont sa a ak V kont sa a.
W ap konpare sa a kont sa a, ki
franchman se trè useful-- useless-- se bèl initil, paske ki vrèman
traka kote strings yo se nan memwa?
>> Ak tout bon, nou pa gen.
Epi nou pa ap ale nan kòmanse patikilyèman pran swen.
Se sèlman nan limit ki ke pinèz ka leve ak menas sekirite ka leve volonte
nou aktyèlman kòmanse pran swen sou sa a.
Se konsa, kite a ranje pwoblèm sa a.
Li vire soti, ou fikse li super tou senpleman.
>> Li kite yo aktyèlman, mwen anvan m ' revele ke ankò, sa ki ta
ou fè si nan yon klas CS50, epi ou te aplike
yon konparezon kont de strings.
Ou klèman pa ka jis sèvi ak s egal = t.
Men, jis lojikman, ki jan ta ou konpare sa a fisèl
kont sa a fisèl lè l sèvi avèk C kòd?
Yeah.
>> ODYANS: Ou menm, fè nan riban pou [fèbl]
DAVID J. Malan: pafè.
ODYANS: [fèbl]
DAVID J. Malan: Yeah.
Jis itilize yon riban pou oswa yon pandan y ap riban oswa kèlkeswa sa.
Men, jis aplike lide nan debaz ke si sa a se yon ti moso nan memwa oswa yon etalaj
ak sa a se, repekte sou tou de an menm tan an.
Ak jis konpare lèt yo.
>> Ak ou te gen yo dwe yon ti kras atansyon, paske ou
pa vle yon dwèt yo ale sot pase lòt la
paske yon sèl fisèl se pi long pase lòt la.
Se konsa, w ap ale nan vle tcheke pou valè espesyal sa a nan fen a, nil.
Men, li vrèman se, an nan fen, kòm senp tankou sa.
Ak franchman, nou pa bezwen reenvante ki wou yo.
Isit la se Version De.
Ak sa ki, mwen pral di isit la se ke olye pou yo konpare a egal = t,
Mwen olye pou ale nan di, si fisèl konparezon nan s vigil t egal = 0.
Koulye a, ki sa ki fisèl konpare?
>> Li vire soti, li nan yon fonksyon ki vini ak C, ki gen objektif nan lavi
se yo konpare de strings.
Ak brase konpare, si nou li li yo paj oswa lòt dokiman oswa CS50 nonm
referans, li pral tou senpleman di ou ke brase
konpare retounen swa yon negatif nimewo oswa yon chif pozitif oswa zewo,
ki kote zewo vle di yo ap egal-ego.
>> Se konsa, jis konjekti.
Ki sa ki ta sa vle di si brase konpare retounen
valè negatif oswa valè pozitif?
ODYANS: Pi gran pase oswa mwens pase.
DAVID J. Malan: Yeah, pi gran pase oswa mwens pase.
Se konsa, si ou te vle sòt yon antye pakèt moun sou strings nan yon dictionary--
jan nou pral evantyèlman desann road-- la fonksyon pafè yo sèvi ak ki kapab,
paske li k ap pase yo fè sa konparezon nan strings pou ou, epi di
ou fè yon vini anvan b, oswa fè b vini anvan yon lòd avèk lèt ​​alfabè.
Nou ka fè egzakteman sa.
>> Ak avi m 'te fè yon lòt bagay nan egzanp sa a.
Ki lòt bagay te chanje pi wo moute nan fonksyon prensipal sa a?
* Char.
Lè sa a se ke lòt manti blan.
Tout tan sa a, lè ou te te ekri fisèl,
nou te an kachèt reekri fisèl kòm Char * pou ke rezone aktyèlman
konprann ou.
>> Nan lòt mo, nan CS50.h ak jan nou pral evantyèlman wè,
nou te fè yon synonym rele fisèl sa a, se menm bagay la kòm * Char.
Se pou koulye a, konnen sèlman a ki *, Nan kontèks sa a, omwen,
vle di adrès la.
>> Adrès postal la nan ki sa?
Oke, reyalite a ke mwen te di Char *, epi yo pa Int * oswa flote *,
vle di ke * Char se adrès ki nan yon Char.
Se konsa, sa a ti kras ti bwat isit la, aka fisèl, se reyèlman nan kalite * Char,
ki se tou senpleman yon fason anpenpan nan di, nan bwat sa a pral ale yon adrès.
Ak sa ki adrès ki al gade nan?
Aparamman, yon Char.
>> Men, nou te kapab absoliman gen int * ak lòt bagay.
Men, pou kounye a, Char * se reyèlman pi plis nan senp ak yon sèl nan enterè yo.
Se konsa, pwoblèm sa a ki pral ap monte, menm si, ankò.
>> Sipoze mwen louvri moute pwogram sa a.
Ann wè si kounye a nou ka predi sa ki nan mal ak sa a kòd.
Se konsa, nan pwogram sa a, kopi-0, mwen pral ale pi devan epi ankò rele
GetString ak magazen valè a nan s.
>> Lè sa a,, poukisa mwen fè sa a, jis kòm yon rapèl soti nan semèn sot pase yo?
Nou te fè di ke GetString pafwa retounen nil.
Kisa sa vle di si GetString retounen nil?
Yon bagay ale mal.
Li pwobableman vle di fisèl la twò gwo, soti òdinatè a nan memwa.
Li k ap pase super, super, super raman, men li te kapab rive.
Nou vle tcheke pou li, e ke sa a tout sa nou ap fè.
>> Paske nou pral wè koulye a, si ou pa fè sa kòmanse tcheke abitye pou bagay sa yo
tankou nil, ou ta ka aktyèlman kòmanse ale
nan adrès nan memwa ki valab.
Epi w ap ale nan kòmanse pwovoke pi plis ak plis segmentation fot.
Oswa nan yon Mac oswa yon PC, jis sa ki lakòz yon òdinatè pann
oswa nan yon pwogram yo friz, ki kapab.
>> Se konsa, koulye a, mwen fè reklamasyon nan kopi-0.c, pou m ' mwen pral jwenn kopi sa yo strings pa fason
nan liy 28.
Lè sa a,, mwen pral nan reklamasyon nan pati anba a
isit la ke mwen pral chanje youn nan yo.
>> Se konsa, remake sa a.
M ap rele zanmi strlèn fin vye granmoun nou yo.
Ak jis eksplike nan lang angle ki sa sa a liy 34 ap travay?
Ki sa t bracket 0 reprezante sou bò gòch la.
Yeah.
>> ODYANS: Premye karaktè nan t?
DAVID J. Malan: Premye karaktè nan t.
Sa a li.
Premye karaktè nan t, mwen vle yo asiyen vèsyon an majuskul
nan karaktè an premye nan t.
Se konsa, sa a se valorizasyon lèt la an premye.
Lè sa a,, bagay la trè dènye mwen fè nan pwogram sa a se mwen reklame isit la nan
orijinal la, nan, ak isit la nan kopi, t la.
>> Men, baze sou istwa a nou jis te di sou sa strings reyèlman yo,
ki sa ki liy 28 vrèman fè, ak sa ki
pinèz la ki kapab lakòz pral yo dwe sou ekran an?
>> Se konsa, premye, kesyon an premye, 28.
Ki sa ki fisèl t = s reyèlman fè la a?
Si nou gen sou-bò gòch bò isit la fisèl t = s;
ki ban m 'yon bwat isit la ak yon bwat isit la.
Ak ta kwè adrès sa a se 0x, kite la di, 50 tan sa a, abitrèman.
Ki sa fisèl t = a fè anba kapo a?
>> ODYANS: [fèbl]
>> DAVID J. Malan: Li estoke memwa a adrese a, se konsa 0x50 ale la.
Se konsa, si kounye a, m 'ale nan premye nan karaktè nan t ak majuskul li,
ki sa mwen efektivman fè a?
Mwen vrèman fè menm bagay la, dwa?
Paske si Adrès 0x50-- ak jis, mwen pa gen anpil chanm sou tablo a isit la,
men asime ke sa a se 0x50 desann isit la, yon kote nan memwa òdinatè mwen an.
>> Apre sa, mwen te, pou egzanp, Gabe nan miniskil isit la, tankou sa a.
Apre sa, mwen te di t bracket 0 vin pwofite kapitalize.
Oke, t bracket 0 se lèt nan premye nan t.
Se konsa, ti kras g ki pral vin gwo G. Men, pwoblèm nan
se, ki sa ki la tou lonje dwèt sou?
>> ODYANS: Menm bagay la tou.
>> DAVID J. Malan: Menm bagay la ki egzak.
Se konsa, yon eksplikasyon senp petèt, menm si sentaks la se yon ti kras etranj.
Se konsa, kite a fè sa.
Fè kopi-0 ak Lè sa a, ./copy-0.
Di yon bagay: Gabe.
Ak malerezman, tou de nan yo gen kounye a te pwofite kapitalize,
men pou ki kache rezon ki fè ke nou ap tou senpleman
kounye a fè fas ak adrès.
>> Se konsa, kouman nou kòmanse address-- pa gen Pun intended--
ki jan nou kòmanse adrese pwoblèm sa a an patikilye?
Oke, nan copy1.c, bagay yo ap mache yo ka resevwa yon ti kras pi plis konplike.
Men, mwen ta reklame yon concept senp solisyon.
>> Se konsa, difisil jwenn nan premye gade.
Pa ale nan dwe fasil pou premye a tan ou tape li soti, petèt,
men si pwoblèm nan se ke tou senpleman fè t = jis
kopi adrès la, ki sa, ankò si mwen ka chwazi sou ou,
a pwal solisyon an pou aktyèlman kopye yon fisèl?
>> ODYANS: nou ap pwobableman sèvi ak yon riban ankò.
>> DAVID J. Malan: Yeah.
Se konsa, nou ap ale nan bezwen yon bouk ankò.
Epi paske si nou vle kopi yon s fisèl nan yon lòt fisèl,
nou pwobableman vle fè l ' karaktè pa karaktè.
Men, pwoblèm nan se, si sa a se orijinal la,
kounye a nou bezwen kòmanse klèman allocation memwa pou t.
>> Nan lòt mo, se pou yo rdesine sa a yon dènye fwa.
Si sa a se fisèl la = GetString.
Li kite yo mete sa a moute isit la, kòm byen.
Sa a se GetString.
Lè sa a,, foto a pou yon bagay tankou sa a pwal tankou anvan,
g-yon-b-e- / 0.
Sa sanble yon ti kras yon bagay tankou sa a.
Ak s Se poutèt sa, nou rele sa a 0x50, ak ki k ap pase yo dwe 51, 52.
>> Se konsa, sa a se 0x50.
Lè sa a,, mwen fè fisèl t.
Nan memwa, ki nan jis ale nan ban m 'ti kare tankou sa a.
Se konsa, sa ki nan etap nan kle kounye a?
Si m 'vle kopi nan nan t, sa ki vid nou bezwen ranpli nan isit la?
Oswa sa ki nou bezwen fè nan yon nivo segondè?
Yeah?
Yon moun?
Yeah.
>> ODYANS: Nou bezwen [fèbl].
DAVID J. Malan: Yeah, nou bezwen ranpli nan vid sa a.
Mwen pa ka kopi ak Lè sa a, tirer Non Gabe a
jouk tan mwen mande sistèm nan fonksyone pou yon lòt ti moso nan memwa
sa a, se omwen kòm yo gwo orijinal la.
Se konsa, ki kite nou ak yon kesyon.
>> Kouman pou mwen mande sistèm nan fonksyone pa jis pou yon senp pointer-- ti kras
tankou sa a se rele, yon adrès, yon konsèy pa
pou yon bwat ki senp ti kras tankou sa a yo te rele yon fisèl?
Kouman pou mwen mande opere nan sistèm pou yon gwo moso nan memwa?
Se konsa, lwen, mwen te sèlman vinn ki tounen endirèkteman lè w rele GetString.
Se konsa, kouman se GetString menm jwenn memwa li yo?
>> Oke, li sanble ke gen nan lòt fonksyon sa a isit la
ke nou pral kounye a kòmanse yo sèvi ak.
Koulye a, sa a sanble fason pi plis skre than-- ak Mwen se youn nan sèlman ki kapab wè it--
liy sa a sanble fason pi plis skre Lè sa a, li ta dwe nan premye gade.
Men, kite a toumante l 'apa.
>> Ki sou bò gòch-men, mwen gen Char * t.
Se konsa, nan lang angle, kite la kòmanse fòmile fraz apwopriye nan jagon teknik.
Se konsa, sa a se allocation yon varyab nan kalite Char * rele t.
Koulye a, sa ki vrèman vle di?
>> Oke, sa vle di, ki sa mwen pral yo mete nan varyab sa a yo rele t?
Yon adrès nan yon Char.
Se konsa, sa se sèlman ki pi senp la, plis fason rezonab
nan ki dekri bò gòch-men yo.
Se konsa, ki ka kreye bwat sa a isit la sèlman.
Se konsa, bò a men dwat-ou, prezimableman, ki pral
asiyen ki pi gwo ti moso nan memwa ki jan?
Se konsa, kite a toumante sa a apa.
>> Li nan boulvèse nan premye gade, men sa k ap pase sou andedan isit la?
Premye, gen nan malok, ki se aparamman nouvo zanmi nou an,
"Memwa asiyen."
Se konsa, sa a se agiman an ke yo te pase nan li, se konsa li nan yon trè gwo diskisyon.
Se konsa, kite a toumante sa a apa.
>> strlèn nan s, nan kou, reprezante the--
ODYANS: Nimewo a nan karaktè.
DAVID J. Malan: Jis nan kantite karaktè nan s.
Se konsa, longè a nan la, fisèl orijinal la.
Se konsa, G-yon-b-e.
Se konsa, li la pwobableman kat nan ka sa a.
Poukisa mwen fè +1 apre rele strlèn nan s?
ODYANS: [fèbl]
DAVID J. Malan: Pou ki karaktè nil espesyal.
Si ou mande m 'sa ki nan longè a nan Non Gabe a, mwen pral yo di kat.
Anba kapo a, menm si, mwen bezwen ki senkyèm multiple pou pèsonaj la nil.
Se konsa, Se poutèt sa m ap fè +1 la.
>> Koulye a, jis nan ka ou se kouri sa a pwogram sou yon òdinatè lòt pase, di,
aparèy la CS50, ki kote gwosè a nan yon Char
ta ka diferan soti nan computer-- pwòp mwen
sanble ke mwen kapab rele sa a operatè sizof, jis mande òdinatè a,
ki sa ki gwosè a nan yon Char sou òdinatè sa a?
>> Epi pa miltipliye senk nan sa a egzanp pa gwosè a nan yon Char, ki
sou pi fò nan òdinatè pral jis pou yon sèl, malok
ki pral asiyen pou m 'sa a gwo ti moso nan memwa sou isit la sou bò dwat la.
Epi li k ap pase yo return-- li se yon function-- se konsa li a
ale nan tounen vin jwenn mwen ki sa?
ODYANS: postal lan?
DAVID J. Malan: postal lan nan ki sa?
ODYANS: nan memwa nan li resevwa lajan?
DAVID J. Malan: Nan la memwa li resevwa lajan.
Se konsa, mwen pa gen okenn lide, franchman, ki kote sa a ki pral fini.
Mwen pral pwopoze ke li a pral fini nan 0x88.
Konplètman abitrè, men yon kote lòt pase 0x50,
paske sistèm nan fonksyone, sa ki Windows ak Mac OS fè pou m ', se
asire w ke li nan bay m 'fragman diferan nan RAM.
>> Se konsa, sa a se valè a ki kote sa a ti moso nan memwa ta ka fini.
Se konsa, sa a se sa fini moute nan isit la, 0x88.
Se konsa, kounye byen klè, mwen ka konprann ke sa a se pa menm bagay la tankou sa a,
paske yo ap lonje dwèt nan fragman diferan nan memwa.
Se konsa, si mwen kounye a aktyèlman vle kopi sa a an, se pou yo fè solisyon pwopoze ou.
>> Se pou nou jis ale, kreye yon pou riban, ak fè t bracket mwen vin la bracket mwen.
Paske kounye a mwen ka itilize sa a notasyon etalaj-tankou,
paske menm si malok trè generic repati m 'memwa,
memwa se bytes jis vwazen.
Multiple, multiple, multiple, tounen nan tounen nan tounen.
>> Mwen kapab siman kòm yon pwogramè trete li kòm yon etalaj, ki
vle di mwen ka itilize sa a finalman abitye notasyon nan sèlman kèk parantèz kare.
>> Se konsa, kite m 'pran yon poz la, paske sa a se yon anpil tout nan yon fwa, menm
menm si lide a debaz nan rapèl se ke fisèl, tout tan tout tan sa a,
se pa yon done nouvo kalite se pou chak.
Se jis yon konsèy sa yo rele, yon adrès nan yon karaktè,
ki jis vle di li nan yon nimewo ki pa konvansyon imen
nou gen tandans yo ekri kòm 0x yon bagay.
>> Men, li la jis yon nimewo, tankou 33 Oxford Street,
ki k ap pase yo dwe nan Adrès CS bilding nan.
Nenpòt kesyon sou detay sa yo?
Yeah?
>> ODYANS: Poukisa nou tcheke pou t egal a nil?
>> DAVID J. Malan: Poukisa nou tcheke pou t egal a nil?
Si nou li documentation-- la gwo question-- pou malok,
li a pral di nan ekri ak lèt ​​detache amann, pafwa malok ta ka retounen nil,
jis tankou GetString.
Ak tout bon, GetString retounen nil si, nan vire, malok retounen nil,
paske GetString sèvi ak malok.
>> Epi ki ta ka rive si eksplwatasyon an, Mac OS, Windows, kèlkeswa sa, se tou senpleman
soti nan memwa pou ou.
Se konsa, se sa ki te pase a.
>> Ak kite m 'revele yon lòt bagay ki ta ka jis kònen tèt ou
oswa konplètman gen twò lwen sou liy lan.
Men, se pou m 'rale moute nan menm pou riban pou kopye,
ki yon ti moman de sa, sonje te sa a. t bracket mwen vin la bracket mwen.
>> Nice ak user-zanmitay.
Santi l tankou Semèn De ankò.
Men, vèsyon sa-a aktyèlman kapab reekri tankou sa a, ki sanble skre.
Li se yon teknik yo rele konsèy aritmetik, adrès aritmetik.
Men, poukisa fè travay sa a?
>> Koulye a, annoyingly, nan otè de C deside sèvi ak
senbòl la * pou rezon diferan.
Nou te wè li itilize yon fwa deja, * Char, ki vle di "ban m 'yon varyab
ki nan ale nan gen adrès ki nan yon Char. "
Se konsa, Char * nan ki kontèks vle di "ban m 'yon varyab."
>> Malerezman, si ou itilize * a san yo pa yon mo nan devan li, tankou Char,
li nan yo rele koulye a nan dèreferans operatè.
Epitou, n ap wè plis nan sa a anvan lontan.
Men, li jis vle di "ale a."
Se tankou li di, si yon moun lage m ' sou yon moso papye "33 Oxford Street,"
si m 'fè "* 33 Oxford Street," sa vle di "Ale desann wout la nan bilding lan CS."
>> Se konsa, * jis vle di ale la si gen nan pa gen mo nan devan li.
Se konsa, ki sa ki t, yo dwe klè?
t se adrès ki nan moso nan memwa ki te bay tounen nan m '.
a se adrès ki nan sa ki, yo dwe klè, nan egzanp lan nou ve yo te diskite,
nan miniskil Gabe?
a se adrès la of--
ODYANS: fisèl la.
DAVID J. Malan: Nan orijinal Non Gabe la.
Se konsa, li adrès ki nan sa a ti moso nan memwa.
Se konsa, si mwen di t + i-- mwen, avi, se jis zanmi fin vye granmoun nou yo.
Se jis nan yon varyab endèks ki nan iteration soti nan zewo sou moute
longè a nan s nan fisèl.
Se konsa, li te pral fè zewo, Lè sa a, yon sèl, Lè sa a, de, Lè sa a, twa, lè sa a kat.
Se konsa, kite la rasanble sa yo nouvo Moso devinèt grate-tankou, si ou vle,
menm si, ankò, sentaks la se byen lwen plis Esoteric pase grafonyen moun.
Se konsa, t se adrès yon + mwen ki pral ban m '
yon nimewo, paske sa yo, se tout nimewo ki nou ve yo te fè desen kòm Egzagòn.
Men, yo ap jis nimewo.
>> Se konsa, si adrès la nan t nou te di te 0x88, sa ki nan 0x88 plis zewo.
Menm si ou pa alèz ak Egzagòn ankò, pran yon devine.
>> ODYANS: Orijinal la.
>> DAVID J. Malan: Toujou 0x88.
Se konsa, sa * 0x88 vle di?
Sa vle di, "ale la" ki vle di efektivman, "mete dwèt ou isit la."
Epi, koulye a sou bò nan men dwat-ou nan ekspresyon sa a, * ak Lè sa a nan paran,
s + mwen vle di a, ki se nan adrese moute isit la nan ti kras g la.
s + 0 se, nan kou, s, tou sa a se.
>> Se konsa, kounye a, li nan la *, ki jis tankou * 33 Oxford Street vle di ale nan adrès la
la.
Se konsa, isit la nan sa a dwèt, men dwat.
Se konsa, ki sa mwen pral kapab bay kopi nan ki sa?
Bagay la sou bò dwat la, ki se Gabe, ti kras g isit la, nan isit la.
>> Se konsa, efè a nan ki premye iteration nan riban an,
jan ou pwopoze a, menm si li sanble fou pi konplike pase anyen
nou te wè anvan, se senpleman di ale isit la ak fè kopi ki karaktè isit la.
Li nan ban nou yon kat jeyografik nan tou de kote yo ye.
>> Epi nou pral wè byen lwen plis nan sa a.
Men, pou kounye a, se espwa a se jis yo prezante kèk nan lide debaz sa yo.
Ak tout bon, kite pou yo gade nan yon pwogram final isit la,
ak Lè sa a claymation nan te pwomèt la, ki pral fè tout bagay tout dwa.
Tout dwa.
Se konsa, kite m 'louvri up-- gen nou ale.
Se konsa, kite me-- nou pral tounen vin foto sa a anvan lontan.
Se pou m 'louvri moute egzanp sa a final isit la.
>> Se konsa, isit la se yon super, super pwogram ki akonpli
pa gen anyen nan lavi ki fè sa ki annapre yo.
Li premye deklare de varyab, x ak y, ki pa nimewo tan sa a,
se pou chak.
Yo ap pa nonm antye yo, se pou chak.
Yo se aparamman Int *.
Se konsa, jis nenpòt moun ki, ki sa li vle di si kalite done ou a, varyab ou a,
se nan int kalite zetwal *?
Sa a adrès ki nan yon Int.
>> Se konsa, mwen te gen okenn lide kote li se ankò.
Li jis vle di "mete, evantyèlman, adrès ki nan yon int isit la. "
0x50, 0x88, tout kote li se nan memwa, yon adrès ki pral la.
Epi sa a, sa ki y se pral fè, tankou byen.
>> Si m 'kounye a di x = malok (sizof (Int)), sa a se yon fason anpenpan nan di,
hey sistèm opere, via malok, ban m 'ase memwa pou gwosè a
nan yon int, ki se pwobableman pral fè 32 Bits oswa kat bytes.
>> Se konsa, sa malok retounen?
Malok retounen yon adrès.
Se konsa, sa ki pwal jwenn ki estoke nan x?
Adrès postal la nan moso nan memwa, kat bytes yo, ki malok
jis yo te jwenn pou m 'pa mande sistèm nan fonksyone.
>> Koulye a, pandan se tan, liy kat isit la, * x = 42 la.
Jis yo dwe klè, sa k ap pase anba isit la?
Ki sou bò gòch-men, * x.
sa a, se tankou * 33 Oxford Street.
Se konsa, * x vle di ki sa?
>> ODYANS: Go to.
>> DAVID J. Malan: Ale nan adrès sa.
Kèlkeswa kote ki ti moso nan memwa se, ale nan li.
Epi li mete sa ki gen, evidamman?
ODYANS: 42.
DAVID J. Malan: 42.
Tout dwa, * y, se li menm lide.
Ale nan adrès la nan y.
Mete nimewo a 13 la, men ki sa se y nan moman sa a?
ODYANS: Pa gen okenn memwa pou y.
DAVID J. Malan: Gen gen okenn memwa pou y.
Se konsa, sa ki fè y pwobableman gen ladan, menm jan nou ve yo te di a?
>> ODYANS: Fatra.
>> DAVID J. Malan: Gen kèk valè fatra.
Koulye a, valè fatra se toujou yon nimewo.
Li ka toujou dwe fè erè pou yon adrès.
Li nan tankou si yon moun grifone yon bagay desann,
ak mwen entèrprete li kòm siyifikasyon kèk bilding desann nan lari an.
Men, si ou jis eseye ale nan kèk bilding ou pa posede,
oswa kèk ti moso nan memwa ou pa gen te bay yo, move bagay ka rive.
Odinatè ta ka aksidan, oswa kèk lòt konpòtman endetèmine ka rive.
>> Se konsa, Intro a, lè sa a, Binky se sa a.
Mwen toujou sonje, 20 kèk ane enpè pita,
kote mwen te lè mwen finalman konprann endikasyon.
>> Sa vle di, si ou kite isit la nan twa minit
ak panse ke mwen pa fè sa konprann endikasyon, reyalize
Mwen te vin chonje pou 20 ane pou kèk rezon fou
lè ak poukisa li finalman koule nan, chita ak ansèyman mwen
parèy, Nishat Mehta nan la tounen nan Eliot Gastronomie Hall.
Koulye a, mwen te vin chonje sa a paske sa a te
youn nan sijè yo mwen, nan patikilye, plede ak.
Lè sa a,, li finalman klike, tankou mwen bay gabèl di yon anpil nan sijè
evantyèlman pral.
Epi, koulye a, fè ki santi nan tout pi kontan ak tout pi plis nan konvenk,
kite a pran yon gade final nan nou an twa dènye minit isit la nan Binky,
soti nan zanmi nou an, Nick Parlante soti nan Stanford.
>> [Lèktur VIDEO]
>> -Hey, Binky.
Reveye!
Li lè pou plezi konsèy.
>> -Ki Nan sa?
Aprann sou pwent?
Oh, chokola!
>> -Bon, Yo jwenn te kòmanse, mwen devine nou ap ale nan bezwen yon endikasyon koup.
>> -OK.
Kòd sa a repati de pwent, sa ki ka lonje dwèt sou nonm antye relatif.
-OK.
Bon, mwen wè de pwent yo, men yo pa sanble yo gen montre anyen.
>> -Sa A dwat.
Okòmansman, endikasyon pa lonje dwèt sou anyen.
Bagay sa yo yo lonje dwèt sou yo rele pointees, ak mete yo moute nan
yon etap ki apa a.
>> -Tanpri, Dwa, dwa.
Mwen te konnen ke.
Pointees yo se ki apa a.
Er, Se konsa, kouman ou asiyen yon pointee?
>> -OK.
Oke, sa a kòd repati yon nouvo pointee nonb antye relatif,
ak sa a ansanm pati x nan pwen li.
>> -Hey, Ki sanble pi byen.
Se konsa, fè li fè yon bagay.
>> -OK.
Mwen pral dèreferans x la konsèy nan magazen nimewo a 42 nan pointee li yo.
Pou sa a jwe fent, mwen pral bezwen m ' Majik ralonj nan dereferencing.
>> -Ou Ralonj majik nan Dereferencing?
That-- sa a, se gwo.
>> -Sa A se sa ki kòd la sanble.
Mwen pral jis mete kanpe nimewo a, ak [POP]
>> -Hey, Gade.
Gen li ale.
>> -Se Konsa, fè yon dèreferans sou x swiv flèch la jwenn aksè nan pointee li yo.
Nan ka sa a, yon magazen 42 an la.
Hey eseye lè l sèvi avèk li nan magazen nimewo a 13 a lòt konsèy la, y.
>> -OK.
Mwen pral jis ale sou isit la yo y, epi pou yo jwenn nimewo 13 seri a leve.
Lè sa a,, pran ralonj la nan Dereferencing ak jis [Desmangle]
>> -Tanpri!
>> -Tanpri, Hey!
Sa pa t 'travay.
Di, Binky, mwen pa panse dereferencing y se yon bon lide, paske ou konnen,
mete kanpe pointee la se yon etap ki apa a.
Apre sa, mwen pa panse ke nou tout tan tout tan te fè li.
>> -Bon Pwen.
-Yeah.
Nou resevwa lajan y la konsèy, men nou pa janm mete l 'nan pwen nan yon pointee.
>> -Trè Vijilan.
-Hey, W ap chèche bon la, Binky.
Èske ou ka fikse li pou ke y pwen pointee a menm jan ak x?
>> -Asire W.
Mwen pral sèvi ak majik ralonj mwen nan Pointer Plasman.
>> -Eske ki pral fè yon pwoblèm tankou anvan an?
-Non.
Sa a pa manyen pointees yo.
Li jis chanje yon sèl konsèy nan lonje dwèt sou menm bagay la kòm yon lòt.
>> -Tanpri, Mwen wè.
Koulye a, y pwen nan plas la menm jan ak x.
Se konsa, rete tann.
Koulye a, y se fiks yo.
Li te gen yon pointee.
Se konsa, ou ka eseye ralonj la nan Dereferencing ankò yo voye 13 sou la.
>> -Uh, OK.
Isit la li ale. [POP]
>> -Hey, Gade nan sa.
Koulye a, dereferencing travay sou y.
Epi paske pwent yo ap pataje ke youn pointee, yo tou de gade 13 an.
-Yeah.
Pataje, kèlkeswa sa.
Se konsa, nou pral chanje kote kounye a?
>> Oh, gade.
Nou soti nan tan.
>> -But--
>> -jis Sonje twa règ yo konsèy.
Nimewo Youn, estrikti nan debaz se ke ou gen yon konsèy,
epi li lonje dwèt sou nan yon pointee.
Men, konsèy la ak pointee yo apa a,
ak erè an komen se yo mete kanpe yon konsèy,
men yo bliye bay li yon pointee.
>> Nimewo De, konsèy dereferencing kòmanse nan konsèy la
epi swiv flèch li yo sou jwenn aksè nan pointee li yo.
Kòm nou tout konnen, sa a sèlman travay si gen
yon pointee, ki kalite vin tounen nan Règ Nimewo Youn.
>> Nimewo Twa, konsèy plasman pran yon sèl konsèy
ak chanje li nan pwen a menm pointee kòm yon lòt konsèy.
Se konsa, apre plasman an, de pwent yo
ap lonje dwèt sou menm pointee la.
Pafwa, ki yo rele pataje.
Epi sa a, tout gen nan li, vrèman.
Babay kounye a.
[Lèktur videyo END]
DAVID J. Malan: Sa a li pou CS50.
Nou pral wè ou an semèn pwochèn.