>> [MIZIK jwe]
DAVID J. Malan: Sa a se tankou yon seminè nevyèm ane jodi a.
OK.
Se konsa, trè lapli deyò.
Sa a gen tandans fè rive sou mèkredi, men tout opòtinite pou plis
pou kesyon jodi a.
Se konsa, kite la kòmanse koupe aktyèlman ak fim nan nan jis yon moman.
Men, nou pral kòmanse grandly kòm toujou.
>> Sa a se CS50, e sa se nan fen semèn 4.
Se konsa, si ou te janm gade Televizyon oswa yon fim dans
gen nan kèk ekspè òdinatè ak polis la, oswa FBI, oswa kèk ajans
ap eseye trape kèk lènmi, byen, ou te
pwobableman tande ekspresyon "amelyore," kijan ki teknisyen yon jan kanmenm
maji zoum nan enfiniman byen lwen yo wè kriminèl yo
idantite oswa nimewo a plak machin nan menm sentiye nan yon glas
oswa briye an nan je yon moun.
Se konsa, tout bon, se pou yo pran yon gade nan yon kèk sèn sa yo soti nan Hollywood.
[VIDEO lèktur]
-OK, Kounye a kite a jwenn yon gade bon nan ou.
>> -Hold Li.
Kouri ki tounen.
>> -Wait Yon minit.
Ale dwat.
>> -Pa, Friz sa.
-Full Ekran.
-OK, Friz sa.
-Tighten Moute sou sa, pral ou?
-Vector An sou sa nèg pa volan an tounen.
-Zoom Nan bon isit la sou plas sa a.
-Avèk Ekipman an dwa, imaj la te kapab elaji ak file.
-Ki Nan sa?
-Li Nan yon pwogram amelyorasyon.
-Timoun Ou klè ke moute nenpòt?
-M pa konnen.
Se pou nou amelyore li.
>> -Enhance Seksyon A6.
>> -Mwen Ranfòse detay nan, and-- Mwen panse ke gen nan
ase yo amelyore, lage l 'nan ekran m' yo.
-Mwen Ranfòse refleksyon an nan je l '.
>> -Kite Nan kouri sa a nan videyo amelyorasyon.
-Edgar, Èske ou kapab amelyore sa a?
>> -Hang Sou.
>> -I've Te ap travay sou refleksyon sa a.
>> Refleksyon -Someone la.
-Reflection.
-Pa Nan yon refleksyon nan devan chèf la.
-La Refleksyon.
-Pa Nan yon refleksyon.
-Zoom Nan sou glas la.
-Ou Ka wè yon refleksyon.
-Timoun Ou amelyore imaj la soti isit la?
-Timoun Ou amelyore l 'dwa isit la?
-Timoun Ou amelyore li?
Èske ou ka amelyore li?
>> -Timoun Nou amelyore sa a?
>> -Timoun Ou amelyore li?
-Hold Sou yon dezyèm fwa, mwen pral amelyore.
-Zoom Nan sou pòt la.
-Times 10.
-Zoom.
-Move An.
-more.
-Wait, Sispann.
-Stop.
-Pause Li.
-Thorne 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?
>> -Hey, Petèt nou ka sèvi ak Pradeep nan Sen metòd yo wè nan fenèt la.
Lojisyèl -Sa a se eta de atizay la.
>> -La Eigenvalue se koupe.
>> -Avèk Dwat a konbinezon de algorithm
>> Pran eliminasyon an -Li algoritm li nan yon nivo kap vini an,
e mwen ka sèvi ak yo nan amelyore foto sa a.
>> -Lock Sou yo ak sou elaji-aks la z.
>> -Enhance.
-Freeze Ak amelyore.
>> [END lèktur]
>> DAVID J. Malan: Tout dwa, se konsa tout moun ki yo aktyèlman mo yo.
Yo ap jis nèrveu ansanm nan yon fason sa a, se pa aktyèlman sansib.
Epi, an reyalite, CS50 ak kou tankou li gen tandans fè ruin yon anpil nan televizyon ak sinema
pou ou.
Paske lè moun ekspè òdinatè yo formidable nan tèm yo t'ap di konsa
bagay sa yo anpenpan tankou eigenvectors, ak-aks la z,
ak nenpòt kantite lòt aktyèlman plis tèm teknik,
yo ap vrèman jis stringing Mo ansanm tout twò souvan.
Eske se sa ke youn nan espere ke nou an, se ke, kòm yon efè segondè nan kou pran
tankou sa a, pral plis moun nan a mond aktyèlman ap kapab peze nan
ak jis yon ti kras janm konsa enfliyanse a bon jan kalite ak presizyon nan fim sa yo?
>> An reyalite, se pou yo pran yon gade nan reyalite.
Se konsa, isit la se foto a anplwaye nan Mari, youn nan zanmi ansèyman nou an.
Apre sa, ta kwè li se yo sispèk ki yon bagay.
E ankò, gen nan yon ekla nan kèk moso nan prèv nan je l ',
oswa nan refleksyon an nan linèt li.
Bon, si nou fè egzakteman jan fim sa yo pwopoze, kote nou rale ak "amelyore",
sa a se konbyen lajan enfòmasyon se nan figi Mary a
lè ou pran yon imaj ak sa rezolisyon orijinal la.
>> Epi, an reyalite, ou ka wè pwen sa yo.
Men ki sa yo rele piksèl, P-I-X-E-L-S,
ki se jis yon kare tipikman ki se yon dot ki konpoze yon imaj.
Ak tounen lakay ou nan jounen an, ak aktyèlman menm jodi a ak kèk nan jodi a ki ap dirije televizyon
oswa LCD televizyon, si ou te gen yon sèl nan chanm ou oswa nan kay la,
si ou ale moute super fèmen nan li, epi espesyalman si li nan yon televizyon yon ti jan pi gran,
ou ka pwobableman menm wè pwen sa yo ak se sa ki konpoze yon imaj.
>> Apre sa, se pa plis enfòmasyon pase sa a.
Nou te kapab "amelyore", nan sans nan atenuasyon bagay sou yo ak sòt de
èksklamasyon kalite, sòt de ki sa koulè yo ta dwe pwochen nan je Mary a
se konsa ke li la pa aktyèlman se konsa piselize.
Men, si mwen kenbe zoum nan, gen se nèg la move nan je l '.
Fè tankou ke tout se nan enfòmasyon nou genyen.
Ou pa kapab kreye enfòmasyon soti nan pa gen anyen.
Genyen sèlman yon fini kantite Bits la.
>> Se konsa, nan pwoblèm Fikse 4, kote ou gen yon opòtinite
yo jwe ak sa a kalite nan lemonn.
Nan pwoblèm Mete 4, ou pral eksplore nan mond nan grafik, ak forensics,
ak aktyèlman ekri kòd ki restaure pèdi imaj.
Ou ap ekri kòd ki manipul imaj ki deja egziste
epi finalman konprann sa ki nan ale sou anba kapo a.
>> Epi, li vire soti, li la aktyèlman pa tout sa ki konplike.
Pou egzanp, si nou te vle reprezante yon figi Smiley kote
ak sa yo piksèl nwa, oswa sa yo pwen nwa,
byen, nou te ka tou senpleman reprezante yo tankou vrèman yon bitmap.
Men, si ou te janm vin konnen ekspresyon bitmap, petèt
li kounye a kòmanse fè yon ti kras pi plis sans jodi a.
>> Nou deja konnen sa yon ti jan se.
Li nan 0 oswa 1.
Apre sa, yon kat jeyografik se jis yon bagay tankou yon moso papye
ki ba ou direksyon e li gen petèt yon griy a x- ak y-kowòdone.
Se konsa, isit la se yon bitmap.
Li se yon kat jeyografik nan Bits kijan yon 1 se aparamman
ale nan reprezante yon pixel blan, ak yon 0 ki pral reprezante yon pixel nwa.
Men, nou te ka sètènman baskile l 'nan.
Li pa reyèlman gen pwoblèm konsa lontan ke nou ap konsistan.
Ak isit la se ki jan, nan binary-- andedan nan memwa yon òdinatè a, oswa menm andedan
nan yon dosye sou difisil ou drive-- te kapab ou sere
pi senp la nan imaj figi Smiley.
Men, sa ki nou ye, nan kou, manke nan imaj sa a?
Koulè, dwa?
Se yon evidan pwochen etap oswa amelyorasyon amelyore sa a ak koulè.
Se konsa, malerezman ak jis yon sèl ti jan, 0 oswa 1, nou te ka reprezante koulè.
Sa ta ka wouj, oswa ble, oswa nwa, oswa blan, oswa vèt, oswa woz,
oswa nenpòt ki pè koulè.
Men, pou dedomajman pou senplisite a, nou pral jis asime nwa ak blan.
>> Se konsa, sa lojikman nou bezwen si nou vle aplike koulè nan yon imaj?
Ki sa nou dwe fè?
Fè tankou si faktè a limite isit la se ke ak yon sèl ti jan ou ka sèlman
reprezante de eta, 0 oswa 1, blan oswa nwa, ki sa ou vle fè?
ODYANS: Plis done.
DAVID J. Malan: Plis Bits, yeah plis done, plis miyèt moso.
Epi, tout bon, sa a, se egzakteman ki jan imaj koulè yo reprezante.
Olye ke sèvi ak yon ti jan yon sèl, yon 0 oswa 1 pou chak pixel, chak dot,
ou jis itilize miltip.
Petèt itilize 8, petèt, pi souvan itilize 24, ak tout bon, nan pwoblèm Fikse
4, ou pral jwe ak yon dosye fòma ki sèvi ak 24 Bits tipikman.
>> Men, pi fò nan nou yo se pwobableman abitye avèk JPEGs.
Si ou te janm pran yon foto sou telefòn ou,
oswa Uploaded oswa wè yon bagay sou Facebook, oswa Flickr, nenpòt ki kantite
nan sit entènèt foto ki baze sou, ou te pwobableman wè yon imaj JPEG anvan.
Epi li vire soti, sa a se dosye a fòma nou ap ale nan sèvi ak nan pset 4,
kijan w ap ale nan gen refè imaj
ke mwen te aksidantèlman efase ki sòti nan yon pèvèti kat memwa nan kamera a,
si ou pral.
>> Epi li vire soti ke menm si JPEG se trè sophisticated--
li nan pi plis sofistike pase pwen yo nwa ak blan
nou te wè yon ti moman de sa, paske gen nan algoritm aktyèlman anpenpan ki
yo te itilize yo konpresyon yon JPEG, se konsa ke ou ka gen yon vrèman bèl,
foto bon jan kalite lè l sèvi avèk men relativman kèk miyèt moso.
Epitou, n ap tounen vin jwenn konpresyon anvan lontan.
Li sanble ke premye a twa bytes nan yon image-- JPEG
pa gen pwoblèm sa ou te pran yon foto de- yo valè yo 255, 216, 255.
>> Nan lòt mo, si ou jis wè ke modèl nan Bits,
reprezante isit la tankou twa bytes, oswa 24 Bits totalize,
ak segondè pwobabilite ou ka dégager ki w ap chèche a li sa a twa premye
bytes nan yon JPEG.
Lè sa a se sa ki nan li te ye kòm siyati a nan yon JPEG.
Yon anpil nan fòma dosye yo deyò yo gen tandans kòmanse
ak sèten modèl nan 0s ak 1S, se konsa ke Windows, ak Mac OS, ak iOS,
ak android konnen ki kalite dosye yo yo, nan adisyon a dosye a sa yo rele
ekstansyon ke yon anpil nan dosye genyen.
Si ou te .jpg, sa se yon lòt siy nan òdinatè a.
>> Se konsa, kite pou nou kounye a gade nan sa a yon ti kras plis teknikman.
Nou konnen desimal a sistèm se 0 a 9.
Nou konnen binè se 0 ak 1.
Men, si ou panse tounen nan PSet 0, nou te gen ou lite ak,
pou yon ti jan, yon bagay rele ekzadesimal,
ki kote ou gen 16 chif, olye pou yo 10 oswa olye pou yo 2.
Ak moun ki chif, pa konvansyon, yo se 0 a 9 ak lè sa a yon
a f, kote f reprezante sa Nimewo desimal, jis kòm yon saniti rapid
tcheke?
Se konsa, 15.
Apre sa, yon dwe reprezante 10, jis pa nati nan kòmann-nan nan ke mwen te bay yo.
Se jis yon konvansyon abitrè, men li la byen estanda.
>> Se konsa, si nou gade nan modèl sa a nan twa bytes-- kite nan
jis kòmanse fè yon gade nan li nan yon fason ki konsistan avèk ki jan
syantis òdinatè jeneralman gade nan epi reflechi sou dosye.
Ou ka sètènman panse osijè de dosye nan 0s, ak 1S, ak desimal,
men nan reyalite, nou gen tandans sèvi ak binè oswa plis tipikman hexadecimal--
tounen soti nan PSet 0.
Se pou m 'pwopoze ke 255, 216, ak 255 yo se jis sa yo modèl nan 0s ak 1S.
Epi ou ka tcheke sa a si ou vle fè matematik la soti nan Semèn 0.
Men, pou kounye a, jis asime ke sa a se tout bon kòrèk.
Mwen te jis reekri twa desimal nimewo ke twa valè binè.
Koulye a, sa m ap pral fè se jis ajoute kèk espas blan,
jis pou dedomajman pou lizibilite nan.
Apre sa, avi, mwen jis ale pou avanse pou pi bagay sa yo apa.
Se konsa, anvan, apre yo fin, anvan, apre yo fin.
M ap fè pa gen anyen enteresan lòt pase jis gaye bagay sa yo soti pou
ki avi chak mete nan uit Bits se kounye a de kouche nan kat miyèt moso.
Sa a se itil paske ekzadesimal se patikilyèman alamòd
paske chak chif ekzadesimal 0 a f, oswa plis espesyalman 0 a 15,
ka reprezante ak egzakteman kat miyèt moso.
Nan lòt mo, nan ekzadesimal si ou vle reprezante yon 0, li nan jis 0000,
kat zewo.
Men, si ou vle reprezante 15, li nan 1111, ki se kat miyèt moso.
Men, si ou fè matematik la, si sa a se plas la yo menm,
sa a se plas la 16, ki nan pral bay you--
olye ki k ap pase to-- regrèt, nan binè,
ki k ap pase l 'ban nou 15, yo menm plas, plas Dezan, four ak eights plas.
Se pou m 'pwopoze ke ki mete nan kat Bits sou bò gòch la
se sa nou ap ale nan rele f.
Li nan nimewo a pi gwo ou ka reprezante ak kat miyèt moso.
Apre sa, nou deja konnen soti nan ekzadesimal, f se chif nan pi gwo nan ekzadesimal.
Nou te gen yon lòt f la, de plis sou la.
Apre sa, pou kounye a, jis pran sou lafwa ke mwen te fè nan matematik dwa
e ke mwatye nan bò gòch nan tout sa yo Bits, 1101,
se menm bagay la kòm d nan ekzadesimal.
Ak men dwat la, 1000, se jis 8.
>> Epi sa yon sèl la fasil wè, dwa?
Represents-- a 8 ki dwat anba kote sa a eights.
Se konsa, nou gen yon sèl nan kolòn nan eights e pa gen anyen nan four, Dezan yo oswa moun.
Se konsa, kounye a plis konvansyonèl, moun yo gen tandans yo ekri ekzadesimal chif tankou sa a,
ou jis gargouyi yo ansanm, ak Lè sa a ou prefiks yo ak 0x.
Sa vle di pa gen anyen lòt pase yon siy vizyèl nan yon human--
isit la vini yon value-- ekzadesimal paske li pa ta ka otreman dwe evidan.
>> Sa vle di, finalman, ki modèl la nan zewo ak moun yo,
oswa modèl la nan ekzadesimal chif équivalant ke w ap
pral kòmanse kap chèche nan pwoblèm Fikse 4 se sa a men
ak pwoblèm Mete 4 espèk a ap mache ou atravè sa a nan plis detail--
men mwen reyalize kòm sòt de Esoteric kòm sa a ta ka gade nan premye gade,
w ap ale nan kòmanse wè sa a yon anpil.
Lè an reyalite, menm nan gdb, nan debugjeur nou prezante nan Lendi
lavil Dann entwodui nan pset 3, ki pral souvan montre w valè ekzadesimal
jis paske yo gen tandans yo dwe plis konvansyonèl pase desimal oswa binè
nan mond lan nan òdinatè.
Koulye a, kite a mete sa a nan kontèks.
Anpil nan nou ta ka sonje sa a foto isit la, ki te soti nan ki sa?
Vista a, kidonk menm pi bonè pase sa, nan Windows XP te fè premye sa a.
Se konsa, sa a se yon jaden flè bèl.
Lè an reyalite, si ou pike alantou online-- Mwen panse ke li nan yon atik Wikipedya,
dans yon moun trè étonant soti jwenn kote sa a nan mond lan mete kanpe
li oswa li nan kamera jisteman place-- nan dwa
ak sa a jodi a sanble like-- men li nan ekzakteman menm bagay anviwònman an.
Imaj sa a, menm si, se nan yon dosye fòma rele bitmap, b-m-p.
Epi nou ap ale nan pran yon super rapid ti koutje sou nan ki sa sa vle di.
>> Men, bitmap se jis yon fason diferan pou imaj reprezante toujou lè l sèvi avèk piksèl
nan 0s ak 1S, finalman.
Men, nan ti koutje sou rapid, li gen yon siyati plis enteresan
nan kòmansman an nan dosye a.
Li pa jis twa bytes, olye gen nan
yon pakèt antye nan modèl nan bytes sa yo ki te Predetermined sans.
Pou egzanp, yon kote nan la premye bytes kèk nan imaj bitmap yon
a pwal gwosè a nan la imaj, lajè a nan imaj la,
wotè nan imaj la, se konsa Metadata ki itil, si ou pral.
Itil enfòmasyon ki fotoschop oswa nenpòt grafik pwogram w ap itilize
ta ka aktyèlman pran swen sou.
>> Se konsa, plis sou sa a nan Pwoblèm Mete 4, men sa a
se sèlman yo di ke nan fen a nan jounen an
tout fòma yo ranpli ou ve yo te lè l sèvi avèk pou years-- dosye Microsoft Word,
Resansman dosye, Excel dosye, nenpòt ki kantite fòma dosye
ki ta ka gen kèk li te ye ekstansyon dosye
yo se jis 0s ak 1S anba kapo a.
Ak moun te deside sa konvansyon ki se,
sa modèl nan 0s ak 1S reprezante yon Pawòl depoze kont yon dosye Excel,
kont nenpòt ki kantite lòt fòma dosye-a.
Se konsa, nan pset 4, ou pral gen yon opòtinite yo jwe ak sa.
>> Men, sa ki fè sa ki sa vle di gen yon struct.
Sa a se aktyèlman yon seg bèl kounye a nan C, ki te gen sèlman yon koup
karakteristik nan adisyonèl sa yo ki nou pa gen gade ankò.
Li se yon bèl ti ak lang ak youn nan karakteristik yo ki bèl sou C se yon struct.
Pou egzanp, si ou te vle represent-- kite nan
di ou te vle gen yon varyab ki reprezante yon elèv nan kèk pwogram nan.
Petèt ou te ekri yon kou pwogram enskripsyon, oswa fè makèt nwayo
zouti, oswa yon bagay tankou sa.
Ki sa ki moso nan done ki gen rapò nan yon elèv ki vini nan lespri?
Fè tankou yon elèv reprezante ak sa valè?
Yeah?
Ou gen yon non kòm yon elèv.
Ki lòt bagay yon elèv tipik genyen?
>> ODYANS: [fèbl]
>> DAVID J. Malan: Se konsa, regrèt.
>> ODYANS: laj.
>> DAVID J. Malan: Yon laj oswa anivèsè nesans équivalant, YEP.
Kisa ankò?
ODYANS: nimewo ID?
DAVID J. Malan: Se konsa, yon nimewo ID, petèt yon nimewo telefòn, petèt yon dòtwa, oswa kay,
oswa kolèj, oswa yon bagay tankou sa.
Nenpòt ki kantite moso nan done ki ou ta ka genyen nan lis kontak ou
se sa ki ka defini yon elèv.
Se konsa, si nou te vle fè sa, nan kòd, nou ta ka fè yon bagay senp tankou sa a.
Nou ka gen yon pwogram pou ke gen kite a di, int prensipal (san valè).
Men, si mwen vle reprezante yon elèv mwen ta ka gen, pou egzanp,
yon afè rele pou sa elèv, yon afè rele dòtwa pou sa elèv,
petèt yon int rele ID pou sa elèv yo.
Epi paske mwen lè l sèvi avèk fisèl, mwen bezwen ale retounen lakay yo epi mete cs50.h.
Petèt mwen pral bezwen stdio.h.
Se pou m 'fè moun preemptively ak mwen se pral rele student.c sa a pou kounye a
epi sove sa a.
>> Epi, koulye a mwen kapab fè yon bagay ak varyab sa yo.
E nou jis ale nan ekri ke kòm yon kòmantè nan kòd pseudo,
paske li nan pa enteresan sa nou fè pou kounye a.
OK, se konsa sa a se yon pwogram ki yon jan kanmenm magazen yon elèv.
Ki sa mwen vle fè si mwen vle nan magazen de elèv?
Se konsa, premye ensten mwen ki pral yo dwe tout dwa, rete tann yon minit,
si mwen gen yon lòt elèv poukisa pa fè sa mwen jis fè Non fisèl 2, fisèl dòtwa 2,
int id2.
Apre sa, nou te fè ale desann wout sa a anvan
ak sa ki te solisyon nou yo sa ki sanble yo dwe kalite yon keratin kopi hackish
travay isit la?
ODYANS: Yon etalaj.
DAVID J. Malan: Yeah, nou te ka sèvi ak yon etalaj.
Dwa sa a trè byen vit vin maladwa.
Ou gen sòt nan abitrèman kòmanse nonmen tout nan varyab sa yo.
Epi ou, imen an, te kenbe swiv ki koresponn OK name2
ak dorm2 koresponn ak id2.
Li jis vin tounen yon dezòd.
Se konsa, li nan yon anpil pi fasil, sonje ki sòti nan yon kèk semèn de sa,
jis gen yo rele non fisèl e petèt ban nou twa nan sa yo.
Lè sa a, petèt nou gen dortwar fisèl epi yo gen
twa nan sa yo, oswa avèk yon konstan, int idantite epi yo gen twa nan sa yo.
Men, menm sa a santi l kounye a yon ti kras peu, dwa.
Nou ap pale de elèv yo ak ankò Mwen vrèman rete sou nivo a ki ba
aplikasyon detay.
Elèv la se yon non ak yon dòtwa ak ID.
>> Poukisa nou pa mwen ka jis deklare yon varyab rele elèv yo ak rele li s.
Men, si mwen vle yon lòt elèv, poukisa yo pa mwen jis rele li t.
Oswa si mwen vle yon pakèt antye elèv, poukisa pa fè sa mwen jis
di mwen gen yon klas antye nan elèv yo, ak li nan twa nan yo.
Nan lòt mo, poukisa yo pa kapab mwen vini moute ak pwòp mwen kalite done, ki rele
Elèv, andedan nan yo ki se yon non, se yon ID, se yon dòtwa,
se nenpòt kantite lòt jaden.
Epi li vire soti ou kapab fè egzakteman sa.
>> Se konsa, C gen sa a karakteristik rele struct.
Sa se yon karakteristik lang ki pèmèt nou fè egzakteman sa a.
Mwen pral ale pi devan epi louvri moute structs.h
kote nou ap ale nan wè nan apre definisyon nan yon elèv.
Li sanble - ak yon sèl sa a nan menm ki pi senp pase yon sèl la ki enplike yon ID
yon ti moman de sa.
Si ou vle vini ak endijèn done kalite ou,
ak nan adisyon nan int, ak Char ak flote ak tout lòt moun sa yo ki egziste,
ou ka fè sa pa literalman ekri tipedèf struct,
Lè sa a, kèk aparèy òtopedik Curly, andedan nan ki ou
lis varyab yo ou vle asosye ak sa a nouvo done koutim
tape tankou yon non ak yon dòtwa, ak Lè sa a apre aparèy òtopedik yo Curly
ou bay yon non nan nouvo kalite a done.
Se konsa, pou egzanp, elèv yo.
>> Ak sa ki nan bèl sou sa a kounye a se ke si nou gade nan kòd la korespondan,
konvansyon an, premye nan tout, se yo mete sa a
nan yon dosye rele yon bagay dot h, yon dosye header, ki nou pa gen
te kòmanse lè l sèvi avèk tèt nou twòp.
Men, nou ap ale nan kòmanse lè l sèvi avèk byen yon ti jan kounye a.
Ak sa ki nou ka fè ak sa a, finalman, nan liy sa yo kèk nan kòd
se deklare egzakteman sa done kalite, yon elèv.
Epi, koulye a kite a sèvi ak li.
>> Mwen pral kounye a ale nan yon dosye rele structs1.c.
Li kite yo pran yon gade nan yon kèk Karakteristik isit la.
Se konsa, bagay la moute isit la se sitou yo konnen yo, ak nou pral
tounen vin jwenn sa ki pa abitye nan jis yon moman.
Sa a nan kou se ki gen ladan pwòp mwen dosye header, ki se nouvo kòm byen,
eksepte pou PSet 3 kote, sonje, nou gen helpers.h.
Se konsa, ou ta ka sonje # enkli helpers.h.
>> Poukisa menm si mwen lè l sèvi avèk quotes olye pou yo parantèz Incline?
Lè m 'chwazi ant yo?
Prèske toujou mwen sanble yo sèvi ak parantèz Incline.
Apre sa, lè sa a, tout nan yon toudenkou sou liy sis mwen lè l sèvi avèk quotes doub.
Poukisa ta ka ki ta dwe ye?
Yeah?
>> ODYANS: [fèbl]
DAVID J. Malan: Sa a yon vrè, ki sa?
ODYANS: Sa a nan IDE ou yo.
DAVID J. Malan: Yeah, sa a, se nan IDE aktyèl m 'yo.
Li kite yo pa rete sou IDE a, paske sa se sèlman yon zouti ke mwen lè l sèvi avèk.
Sa a nan aktyèl m ' anyè, espesyalman.
Se konsa, structs.h se dosye pwòp mwen pa enstale nan IDE a,
nan sistèm nan fonksyone tèt li, olye li a nan anyè mwen ye kounye a.
Se konsa, konvansyon an se si ou vle genyen ladan yo pwòp dosye header ou,
ou jis itilize quotes doub.
>> Ki sa nou rele sa a bagay nan liy 8, jeneralman pale?
Sa a se ki sa?
# defini yon bagay.
Sa a reprezante konstan, dwa?
Si ou vle gen yon valè nan pwogram ou an
ke ou itilize yon antye pakèt moun sou fwa, li nan
bon konvansyon faktè li soti, deklare li, ak senbòl la regle
defini, lè sa a, pa konvansyon, nan tout majuskul pawòl la- menm si li pa
estrikteman nesesè, men li nan konvansyon imen
yo kapitalize konstan sa yo ke yo so soti
nan ou visually-- espas ak Lè sa a, valè a ou vle yo dwe
ekivalan a non ki konstan nan.
Pa gen virgules, men ou tou senpleman swiv ki modèl la.
>> Se konsa, sa ou yé fè nan sa a Kòd vrè.
Se konsa, kite a pran yon gade nan pwogram lan prensipal isit la.
Nan liy 12 paske mwen te enkli structs.h,
Mwen kounye a gen maji nan m ' jete yon nouvo kalite done.
Mwen pa jis gen aksè a int, ak Char, ak flote, ak fisèl,
ak ble ak lòt moun.
Mwen kounye a gen aksè a yon kalite done elèv yo.
Se konsa, nan liy 12, mwen konbine de ideas-- youn yon kalite done koutim ak de,
lè l sèvi avèk yon etalaj.
Se konsa, nan pwogram sa a si Mwen vle aktyèlman sipòte
twa elèv diferan nan pwogram mwen, mwen
ka senpleman di ban m 'yon varyab rele elèv yo, chak nan yo ki
se elèv kalite, ki se mwen kalite done koutim.
Epi, espesyalman, ban m ' twa nan moun ki nan etalaj m 'yo.
>> Se konsa, kounye sa nou fè nan pwogram sa a?
Isit la nan jis yon pou riban iteration ki ant 0 a 3, paske se sa
sa valè a nan elèv yo se.
Mwen jis pouse itilizatè a ban m 'non elèv la.
Lè sa a, nan liy 17, nou gen yon liy sitou yo konnen yo.
Nou gen zanmi fin vye granmoun nou an GetString sou bò dwat la.
Ak sa ki moso nan sentaks se aparamman nouvo,
si ou pa janm te pwograme nan C anvan, epi pa janm te itilize strukt yo?
Yeah?
>> ODYANS: .Non la.
DAVID J. Malan: .Non la.
Men sa se pa twòp nan yon bon, paske kounye a elèv yo bracket mwen
ba ou elèv la m-th.
Men, si ou vle plonje andedan nan ki estrikti,
ou jis sèvi ak yon peryòd yon sèl ak Lè sa a, non an nan varyab la andedan,
oswa pwopriyete a andedan ki ou vle jwenn aksè nan.
Menm jan an tou lè sa a, si mwen Lè sa a, èd memwa a itilizatè, ban m 'dòtwa elèv la,
ou ka Menm jan an tou magazen ki fisèl nan varyab la dòtwa andedan
nan ki estrikti elèv yo.
>> Epi, koulye a bagay sa yo jwenn yon ti kras anpenpan.
Lè sa a se pral gade a petèt yon anpil byen byento.
Men, ou pral wè sa a byen lwen plis nan pset 4, se konsa kite yo jis ti koutje sou nan li kounye a.
Li sanble ke nan liy 23 a 38, ki sa ou panse mwen petèt ap fè?
Mwen te retire kòmantè sa yo pou jodi a, men vèsyon an
nan kòd la jwèt pou referans gen tout kòmantè.
Ki sa mwen sanble yo dwe ap fè?
>> ODYANS: Ekonomize dosye a ak tout enfòmasyon ki ki itilizatè a antre nan.
>> DAVID J. Malan: Yeah, egzakteman, sa a se yon nouvo fason
ke nou ap wè de, Yon lòt karakteristik nan C,
kijan mwen kapab kreye dosye pwòp mwen.
Se konsa, lwen, prèske chak pwogram ou te ekri se pagen atach.
Le pli vit ke li fè kouri, sa a, se li.
Gen nan pa gen memwa oswa rekoleksyon nan li.
Gen nan pa gen dosye sove.
Men, si ou vle sove D 'ki gen
ki te pase, tankou nan yon jwèt oubyen yon pwogram tankou sa a, li vire soti nou kapab fè sa.
Epi ou pral wè sa a plis nan pset 4 ak nan Seksyon.
Men, liy sa a 23 esansyèlman kreye yon dosye rele students.csv.
Apre sa, ou ta ka gen pou wè sa a anvan.
Menm si ou pa janm te etidye CS anvan, CSV se varyab vigil-separe.
Se tankou yon nonm la trè pòv vèsyon nan yon dosye Excel,
ki vle di ke li te kapab dwe louvri nan Excel ak nan Apple Numbers,
epi li gen ranje ak kolòn.
Men, li la pa yon propriétaires fòma tankou Microsoft oswa Apple la.
Se jis vigil separe nan valè ki nou pral wè nan yon moman.
>> Apre sa, jis pran yon devine.
Nan liy 23, nan anpil nan fen, dezyèm agiman mwen
nan fonksyon sa a nouvo rele f louvri pou dosye louvri se w.
Ki sa ki ta w endike?
Yeah?
>> ODYANS: Li pèmèt ou ekri nan dosye a?
>> DAVID J. Malan: Li pèmèt ou ekri nan dosye a.
Se konsa, gen nan yon koup nan varyant ke nou ka ploge nan isit la.
Men, si ou jis vle li dosye a, se sa ki gade nan li
, li li l nan memwa, ou jis itilize quote unquote "R".
Si ou vle yo pou yo ekri nan dosye, ou sèvi ak quote unquote "fòm W".
Gen la tou kole ak yon koup la lòt bagay
si ou vle li modifye dosye ki egziste deja.
Koulye a, nou ap ale nan kenbe wè sa a bagay, Lè sa a, nou pral tounen vin jwenn liy 24.
Nil, li vire soti, se se yon valè espesyal ki
ka tounen pa sèten fonksyon si gen yon bagay te ale wrong--
si dosye a pa egziste, si ou te kouri soti nan memwa,
oswa yon pakèt moun sou lòt erè.
Men, pou kounye a, kite yo jis asime ke sa a se jis konvansyonèl kont kouran erè.
Isit la nan liy 26, mwen iteration ki ant 0 a 3 sou tout elèv yo m 'yo.
Lè sa a se kalite sòt nan yon fonksyon nouvo, fprintf,
men jis pran yon devine.
Si printf se jis ekri an lèt detache yon afè fòma,
sa fprintf pwobableman vle di?
ODYANS: Enprime nan yon dosye-a.
DAVID J. Malan: Enprime yon fòma fisèl nan yon dosye-a.
Sa a ki sa lòt la f vle di se dosye-a.
Ak nouvo premye agiman an gen yo dwe varyab la ki reprezante dosye ou.
Lè sa a, nou jis gen yon fòma fisèl jis tankou printf.
E menm menm si sa a sentaks se nouvo, sa a jis
vle di ploge nan non elèv la, ploge nan dòtwa elèv la, ak Lè sa
ak fkloz, fèmen dosye a.
Lè sa a, sa a se nouvo lastly-- epi n ap tounen vin jwenn sa a
anvan long-- mwen libere elèv la pou rezon
sa ki te rive moute pi wo a la.
Men, nou pral tounen vin ak sa yo ki anvan long--
sa a, se paske nan ki jan GetString se aktyèlman ap travay anba kapo a.
>> Se konsa, kite a pran yon gade rapid isit la.
Si m 'tape ls nan anyè m' yo, remake ke mwen pa fè sa
gen yon dosye rele students.csv, jis pa gen, pa egziste.
Se konsa, si mwen kounye a konpile pwogram sa a, fè strukt-1,. / strukt-1,
ak mwen pral ale pi devan epi tape nan Andi, ki moun ki ap viv nan Berkeley nan Yale.
Nou ap ale nan gen Rob ki ap viv nan Thayer jou sa yo.
Li kite yo vini ak ki kote se, mwen panse, Maria se an Mather,
si mwen te vin chonje kòrèkteman.
>> Se konsa, pa gen anyen sanble yo rive.
Men, si mwen tape ls kounye a, gen students.csv.
Se pou nou ale pi devan epi louvri students.csv.
Sa a se ankò yon trè dosye fòma ki lejè.
Men, mwen te tou senpleman te adopte yon konvansyon ke mwen gen de ranje ak kolòn isit la.
Premye kolòn nan se premye non moun nan.
Dezyèm kolòn nan se elèv la nan dòtwa, oswa kolèj, oswa kay, oswa etajèr.
Epi, koulye a mwen te sove sa a pou tout tan nan yon dosye.
>> Se konsa, li pa tout sa ki enteresan.
Men, sa a se jis yon wòch kite kounye a ke yo te kapab pèsiste enfòmasyon
nèt.
Se konsa nou wè kounye a sa ki plis nou kapab fè ak sa yo ak lòt karakteristik.
Men, anvan, nenpòt kesyon?
Sa ki te yon anpil, ak sa ki te vit.
Men, ou pral wè yon anpil plis nan pset 4, tou.
Yeah?
>> ODYANS: Èske gen yon fason yo kontinye ajoute non ak sa yo ki dosye?
>> DAVID J. Malan: Bon kesyon.
Èske gen yon fason yo kontinye ajoute non ak sa yo ki dosye?
Wi.
Epi, an reyalite, si ou fini moute re-louvri dosye a,
ou ta itilize quote unquote "yon" pou ajoutra,
ki ta jis ajoute yon liy nouvo, yon nouvo liy ankò e ankò, egzakteman.
Bon kesyon.
Lòt kesyon?
Yeah?
ODYANS: Si ou kouri nan pwogram ankò kounye a,
li ta kenbe ajoute non nan la ranpli oswa ou ta li louvri moute yon dosye nouvo?
>> DAVID J. Malan: Ah, bon kesyon.
Si ou kouri pwogram nan ankò dwat kounye a, petèt tape nan nouvo non,
li ta ajoute nan dosye a oswa recouvrir dosye a?
Lèt la, paske mwen se pa lè l sèvi avèk mòd ajoutra.
Epi paske mwen jis je fèmen louvri dokiman an pou ekri,
li nan jis ale nan recouvrir dosye a.
Se konsa, mwen ta vre bezwen fè se kole, si mwen vle aktyèlman gen yon ki dire lontan
baz done.
>> Koulye a, CSV se itil, franchman, menm pou tankou si w ap writing--
epi n ap wè sa a evantyèlman pita nan semès la lè
nou itilize CSVs pou lòt rezon.
Si ou vle nan magazen tout nan moun yo ki te anrejistre pou kèk evènman,
oswa siyen li pou elèv ou gwoup, oswa yon bagay tankou sa yo,
estoke done ki nan sa a kalite nan fòma se super pratik.
Paske literalman, si mwen te telechaje sa a dosye-a.
Mwen te kapab double-- ak kite a aktyèlman eseye sa a
si mwen gen Excel oswa Numbers sou isit la.
>> Mwen pral dwa-klike sou oswa kontwòl-klike sou dosye mwen.
Whoops.
Dwa-klike oswa kontwòl-klike sou dosye mwen.
Vini non sou, sourit m 'lan pa se kolabore.
Download-- mwen pral download tout dosye yo isit la pou
jis Se konsa, mwen ka gen tan pwan yon sèl sa a.
Li kite yo wè si sa a ap travay students.csv-- premye fwa
Mwen te aktive.
Koulye a, yo vle wè kontak m 'yo.
Koulye a, mwen bezwen enskri.
Gade kouman li fasil se yo sèvi ak CSVs?
Wi, kenbe l 'jiska dat.
OK, kounye a nou ap pare pou klas la.
OK, oh, sa ki nan nouvo?
OK, fèmen.
Sa ki te majik.
OK, kounye a nou gen mete ajou.
Epi, koulye a, li bliye sa ranpli Mwen orijinal louvri,
men ki sa a-- gen nou ale.
OK, se konsa kounye a nou gen yon dosye Excel.
Mèsi poutèt ou.
>> OK, Se konsa, sa m 'te fè te fè pati ki pi fasil la.
Natirèlman mwen te kapab pre-enstale Excel, oswa Resansman, oswa kèlkeswa sa pwogram lan.
Men, sa a se bèl, paske koulye a, mwen ka manipile
done yo nan yon fòma estanda.
>> Kontèks Se konsa, kounye a, kite a chanje a yon kote nou sispann
dènye fwa, ki te kòmanse yo pran an wou fòmasyon.
Men, anvan, ou pa t ' wè manje midi pi bonè sa a
se ankò vini isit la nan Ponpye ak Glas nan Cambridge, Sitar nan New Haven.
Enskri sou sit entènèt CS50s ASAP yo rantre nan elèv yo CS50 ak anplwaye yo.
>> Se konsa, nou te pran wou fòmasyon koupe sou Lendi kòm follows--
te fisèl te deklare nan CS50s bibliyotèk pou kèk tan.
Lè li nan bèl, paske li pèmèt nou pale sou varyab tankou se te
Mo ki konplè epi ki fraz ak plis ankò.
Men, li vire soti fisèl pa egziste.
Sa se jis yon synonym, oswa yon alyas, ke nou te kreye pou yon bagay ki
aktyèlman se yon ti kras plis teknik rele yon Char *.
>> Ak tout bon, nou te wè yon egzanp nan yon pwogram nan Lendi
ki pa t 'konpòte byen kòm nou espere.
Sa a te dosye a, konpare-0.
Epi sonje ke konpare-0, si Mwen compile pwogram Lendi a
epi kouri konpare-0 ak kalite nan manman an miniskil, ak manman an miniskil ankò.
Pwogram nan ensiste pou l di mwen tape bagay diferan,
menm si manman, tout moun ki nan miniskil, se ki idantik vizyèlman.
Se konsa, sa ki te repons lan kout pou poukisa òdinatè a panse
de strings sa yo se diferan?
Yeah?
>> ODYANS: [fèbl]
DAVID J. Malan: Dwa.
Se konsa, manman, premye fwa a Mwen tape l 'nan, se ke yo te
ki estoke yon kote nan la òdinatè mwen an memwa men nan yon kote diferan
pase dezyèm fwa mwen tape nan manman.
Koulye a, li sètènman ta ka optimisé.
Òdinatè a ta ka lespri ak reyalize de strings sa yo, hey,
yo ap idantik.
Kite m 'pa redundantly magazen li.
Men, òdinatè pa fè sa optimize sof si ou di yo a.
Se konsa, pa default, yo ap jis ale nan fini
nan de kote diferan nan memwa.
Se konsa, yo dwe plis klè, lè nou konpare de strings yo,
nan yo an premye te rele, te dezyèm lan rele
t, ki sa espesyalman te mwen konpare isit la sou liy 13?
Yeah.
>> ODYANS: Li nan plas la nan memwa varyab sa a ap lonje dwèt sou.
>> DAVID J. Malan: Egzakteman, mwen te konpare plas nan nan memwa
ke moun varyab pwente nan.
Se konsa, espesyalman, si manman te nan Nimewo multiple 1, ak 2, ak 3,
ak 4-- paske sonje antislach a 0 bezwen yo dwe tout wout la nan fen an.
Men, yon lòt egzanp nan manman, m-o-m, te nan adrès 10, 11, 12, ak 13.
Mwen te konpare 1, adrès sa, ki kote nan memwa,
kont 10, ki se evidamman pa menm bagay la.
1 se pa 10.
>> Se konsa, sa a se bèl nan ki li a trè senp.
Men, li la pwoblèm tèl degre ke nou pa ka sanble yo konpare strings.
Se konsa, fundamentally-- ak nan nivo ki ba sa a,
si ou te vle aplike yon pwogram yo konpare
de mo ki nan separe te itilizatè tape nan pou bon jan kalite,
fè yo liy moute pou Char Char, jis an tèm jeneral,
ki sa nou bezwen fè, aparamman?
Li pa ase jis yo gade nan sa yo de adrès.
Ki sa nou bezwen fè?
Yeah?
>> ODYANS: répétèr nan fisèl la [fèbl].
>> DAVID J. Malan: Yeah, se pou yo repekte nan fisèl la.
Se pou yo sèvi ak yon pou riban, se yon riban pandan y ap, oswa tou sa w ap pi konfòtab ak.
Men, si nou te gen de strings yon kote nan memwa, se pou yo gade nan chak nan
premye karaktè, Lè sa a, chak nan dezyèm karaktè, Lè sa a, twazyèm, ak katriyèm,
ak senkyèm, jouk nou frape sa ki valè Sentinel espesyal?
ODYANS: [fèbl]
DAVID J. Malan: Yeah, antislach a zewo, nan ki pwen nan swa fisèl
nou ka deside sa a, se li.
Èske nou matche chak karaktè sèl?
Si ou pa, retounen fo.
Si se konsa, retounen vre.
Se konsa, sa a, se ekzakteman ki sa vèsyon sa-a nan pwogram nan konpare-1.c fè.
Li se ki idantik ak sa nou gade Lendi eksepte ke mwen te
vinn m de mo an menm si string-- ki pa gen okenn impact-- fonksyonèl tout
M ap fè kounye a se retire kèk wou fòmasyon vizyèl,
men yo wè klè ki a ak t yo adrès.
Epi sa a, ki sa zetwal la, asterisk a, reprezante
se yon adrès, otreman li te ye plis teknikman kòm yon konsèy.
>> Se konsa, lè Mwen deklare a sou liy 9 ak di Char * s,
sa pa vle di ban m 'yon fisèl.
Sa vle di, ban m 'yon varyab ki gen objektif nan lavi se nan magazen yon adrès.
Paske Mwen pral mete nan adrès nan yon afè nan li.
Ak tout bon, GetString, yo dwe klè, pa retounen yon kòd.
Li pa retounen manman antislach zewo, se pou chak.
Ki sa ki GetString espesyalman ak jisteman retounen?
ODYANS: [fèbl]
DAVID J. Malan: Yon adrès, nan adrès nan karaktè nan premye
nan kèk fisèl li te vinn.
Se konsa, kounye a nou ap wè yon mo kle espesyal ankò.
Epi, mwen mansyone sa a pi bonè.
Sa a se pral yo dwe bon konvansyon ke nou pral wè ankò e ankò kounye a.
Mwen tcheke a asire w ke a se pa nil epi t se pa nil.
Paske ki baze sou mwen reyèlman mansyone rapid pi bonè,
sa ki ka vle di si GetString retounen pa yon adrès men N-U-L-L, ki se ankò,
kèk valè espesyal?
>> ODYANS: Erè.
>> DAVID J. Malan: Se yon erè.
Yon bagay ale mal.
Ak sa ki tipikman ka rive, espesyalman
ak strings ki ta dwe nan longè enkoni nan advance--
petèt òdinatè yo ' soti nan memwa, petèt
ou tape nan yon lontan mo oubyen yon fraz
oswa kopye tankou yon redaksyon gwo gen nan jis pa ase memwa.
Se konsa, GetString pa ka retounen adrès ki nan tout bagay la,
se konsa li jis retounen pa gen anyen.
Apre sa, li di yon erè ki te rive pa retounen valè a nil espesyal.
Li nan adrès la zewo, se konsa pale.
>> Koulye a, li vire soti C vini ak yon fonksyon ki fè sa iterasyon.
Nou pa gen aplike sa a ak yon pou riban oswa yon riban pandan y ap tèt nou.
Nou ka sèvi ak yon fonksyon, rele suksen,
brase comp, oswa fisèl konpare, ki gen objektif nan lavi se fè egzakteman sa.
Ou ba li de endikasyon, de adrès, epi li pral ale nan adrès sa yo
ak Lè sa a konpare lèt pou lèt pou lèt pou bon jan kalite,
kanpe sèlman lè ki sa ki vre?
Lè entwitif ta dwe brase comp sispann iteration, jis yo dwe klè?
Lè li frape yon antislach 0 nan swa fisèl, nan ki pwen li ka deside
te tout bagay matche, oswa te gen te yon erè?
>> Se konsa, si nou kouri sa a kounye a epi eseye jwèt ti kras lèt majiskil nou an,
kidonk fè konpare-1, ./compare-1, ak tape manman an miniskil tou de fwa.
Kounye a li nan menm bagay la.
Men, si mwen fè l 'ankò ak miniskil ak Lè sa a petèt majuskul.
Koulye a, li tout bon fè distenksyon ant anwo ak miniskil.
Se konsa, pa tout sa ki difisil oswa majik, men li kounye a eksplike
sa k ap pase anba kapo a.
>> Se konsa, sa plis nou ka ekstrè soti nan sa a kalite leson?
Se konsa, kite a pran yon gade nan sa a.
Mwen pral ale pi devan epi ekri yon pwogram rapid isit la rele kopi-0.
Epi, koulye a kite a ale pi devan ak aktyèlman kite a fè sa a men ak kopi-0,
pran yon gade nan ki sa mwen te gen isit la.
M 'premye di itilizatè a, di yon bagay.
Lè sa a, mwen jwenn yon fisèl ak mwen estoke l 'nan la.
Apre sa, mwen tcheke si la egal egal nil, jis retounen 1.
Se konsa, sa a se jis estanda kont kouran erè.
Pa gen anyen ki enteresan te rive fèt.
Lè an reyalite, si nou debarase m de erè a tcheke, sa a sanble semèn 1 Kòd
nan moman an.
Men, mwen te kòmanse yo ka resevwa yon ti kras pi byen sou sa.
>> Koulye a, nan liy 16, yon semèn de sa, petèt jou menm yon koup oswa minit de sa,
ou ta ka di liy 16 se kreye yon varyab rele t
ak kopye s nan li.
Epi sa a, yon parfe Takeaway ki rezonab.
Men, dwe plis presi kounye a.
Sa k ap pase nan liy 16?
Ki sa ki ap resevwa kopye de dwat a gòch?
Yeah?
ODYANS: Èske t ap resevwa yon adrès nan a?
>> DAVID J. Malan: Egzakteman, t a ap vin adrès ki nan a.
Se konsa, yo dwe klè kounye a, si mwen ale tounen nan egzanp ki pi bonè
ak mwen trase soti bagay la mwen te tape nan.
Ak sa ki mwen te tape in-- isit la nan la, ak isit la
se sa m 'te tape nan yon kote nan memwa, manman ak lè sa a yon antislach
0 ki nan te ajoute pou mwen.
Ki sa mwen ki estoke nan isit la, sonje, sa a se nan pozisyon 1, 2, 3, 4,
sa a se sa ki nan kounye a nan la.
Se konsa, si sou liy 16, mwen di ban m ' yon lòt varyab yo rele t ak magazen
nan nan valè a nan a, sa ki vin estoke isit la pa pral manman
men pito jis nimewo a 1.
>> Se konsa, si nou gade devan yo nan pwogram sa a kounye a, ki sa ki pwal pase?
Se konsa, remake ke gen nan sa a fonksyon ou ta ka
te itilize sa a kèk tan de sa pou Seza, oswa Vigenere, oswa petèt pa nan tout.
Mwen reklamasyon ak printf m 'yo, mwen se ale nan tirer t la kopi.
Premye nan liy 19, saniti rapid tcheke, chèk strlèn longè a nan t.
Paske mwen pa vle eseye kapitalize yon bagay
si gen nan pa gen fisèl la.
Si itilizatè a jis frape Antre, gen nan pa gen anyen yo tirer.
Se konsa, mwen pa vle fè liy 21.
Se konsa, liy 21 se valorizasyon ki lèt, aparamman, nan t?
>> ODYANS: m?
DAVID J. Malan: Li sanble tankou li nan kopye ki youn?
ODYANS: m.
DAVID J. Malan: Uh, m.
OK, se konsa premye m nan, paske avi ke mwen se
pase nan toupper, ki si ou pa janm te wè l 'li nan
jis yon fonksyon kapitalize kòm opinyon li yo.
t bracket zewo vle di bay m 'pèsonaj la zewo nan t.
Se konsa, ki jan fè sa a chanjman foto, yo dwe klè?
Ki sa ki bezwen jwenn reekri oswa chanje ki gen rapò ak la ak t ak manman
antislach zewo.
>> ODYANS: [fèbl]
>> DAVID J. Malan: Yeah, kidonk sa a isit la tou senpleman yon sèl
bezwen jwenn chanje to-- ranje sa a men bezwen jwenn chanje a yon kapital m.
Men koulye a,, gade pita nan la pwogram, si mwen enprime soti
a ak t jan mwen netwaye isit la, gade sa ki nan pral rive enprime soti a ak t.
Se konsa, fè kopi-0, ./copy-0.
Kite m 'ale pi devan epi tape nan manman nan tout miniskil.
Avi tou de orijinal ak nan te kopi an te pwofite kapitalize.
Poukisa?
Oke, a ak tou de t ap lonje dwèt a, si ou vle, moso nan menm nan memwa.
Apre sa, franchman, sa a ap resevwa reyèlman uninteresting-- lefèt
ke nou ap lè l sèvi avèk adrès zewo isit la.
Mwen vle di, mwen pa reyèlman sousye kote bagay se nan memwa.
Padon Mwen efase yon ti kras twòp.
Men, mwen pa reyèlman sousye kote bagay sa yo yo nan memwa.
Se konsa, tout bon ki sa pwogramasyon yo gen tandans panse osijè de
se ke lè ou pale sou yon adrès, oswa yon konsèy,
ki sousye kote li se nan memwa.
Mwen pa pran swen si li nan nan multiple youn oswa yon sèl milya dola.
Mwen jis pran swen ke sa a varyab se efektivman
montre nan ki ti moso nan memwa.
Se konsa, koulye a, olye ke chikan sou adrès memwa abitrè, se pou yo
jis kòmanse fè desen endikasyon kòm endikasyon, kòm kèk flèch.
Se konsa, sa a ak t reyèlman yo, dapre pwogram sa a,
paske yo te ki jan mwen kreye t, li nan jis de varyab ki apa a
montre nan moso nan menm nan memwa.
Apre sa, nou pa pran swen kote yo ye.
Se konsa, nou kapab abstrè lwen ke detay.
>> Se konsa, ki jan mwen ranje sa a?
Si m 'vle ekri yon vèsyon nan kopi a pwogram ki aktyèlman kopi fisèl la
ak lèt ​​majiskil sèlman nan kopi, jis entwitif,
sa k ap resevwa yo dwe genyen yon engredyan nan solisyon nou an?
ODYANS: [fèbl]
DAVID J. Malan: Nou bezwen yon ki sa?
ODYANS: Chunk nan memwa.
DAVID J. Malan: Nou bezwen yon lòt ti moso nan memwa, dwa?
Nou pa konnen ki jan yo fè l 'ankò, nesesèman.
Men, mwen kalite bezwen sa a rive konsa ki manman orijinal la nan pi ba ka
fini moute nan ki moso siplemantè nan memwa.
Lè sa a, lè m 'chanje kopi a, mwen pa vle chanje sa a kopi isit la.
Mwen olye pou vle chanje sèlman sa a kopi pou ke orijinal la se chanje.
>> Se konsa, kite a wè ki jan nou ta ka fè sa.
Nan kopi-1, ki te gen deja te dechouke li nan kòmantè,
men se kòmante sou entènèt.
Nou olye pou fè annapre sa yo nan liy yo ki idantik, jwenn m 'yon fisèl
epi rele li s.
Men koulye a, se pou yo gade nan youn nan ki pi nou an konplèks men dènye a nan konpleksite nan
pou ti tan, liy 16 fè egzakteman sa a.
Se konsa, si confortable ou a ak nan foto nou jis drew--
ban m 'yon moso nouvo nan memwa, kopi tout bagay nan li,
kite a wè ki jan nou tradui ke yo kòd.
>> Se konsa, liy 16, sou bò men gòch, Char * T ki ban m 'bwat sa a sou isit la.
Sa a tout li fè sa.
Sou bò nan men dwat, m alok, oswa malok,
se alokasyon memwa, super anpenpan, yon fason skre nan jis di
ban m 'yon ti moso nan memwa.
Ki kantite memwa nou bezwen?
Oke, se kalite yon ekspresyon gwo.
Men, kite a wè sa li di isit la.
Se konsa, sa a, nan kou, se ba m 'longè a afè de la.
Se konsa, manman li ta dwe ki sa?
Se konsa, jis twa, dwa? manman se twa karaktè.
Ou pa konte nan antislach zewo lè ou
pale sou longè a nan yon afè li nan aktyèlman lèt yo imen vizib.
Se konsa, manman, kidonk sa a ki ban m '3.
Men, rete tann yon minit, mwen kounye a pandan l ajoute 1.
Poukisa pou m 'aktyèlman vle asiyen 4 bytes epi li pa jis 3?
Yeah?
>> ODYANS: Pou valè a Sentinel?
>> DAVID J. Malan: Egzakteman, pou ke valè Sentinel.
Pou antislach a zewo, Mwen bezwen 4 bytes total.
Se konsa, mwen bezwen longè a nan fisèl la plis 1.
Lè sa a, jis pou bon measure-- menm si sou sistèm sa a,
li nan toujou pral fè 1-- m ap di anpil anpil pitit sa a pa gwosè a nan yon Char.
Vire soti sizof se yon operatè nan C ki
jis di ou la kantite bytes sa a, se
egzije pou yon sèten kalite done.
Li pa travay pou ranje, tipikman, pafwa li fè sa.
Men, nan ka la an jeneral, pa gen okenn.
Men, li pral fè m 'konnen ki jan anpil bytes yon Char se, ki sanble se toujou 1.
Se konsa, sa a se tankou miltipliye pa 1.
>> Se konsa, super skre liy kap nan kòd.
Men, tout li fè sa se donne m 'yon ti moso nan memwa.
Men, li sanble yo dwe kopye anyen nan ki memwa?
Pa ankò.
Se konsa, ki sa mwen sou liy 22, ak 23, 24, 25, byen, Mwen tou senpleman fè sa.
Lè sa a se sòt de fin vye granmoun bagay lekòl kounye a.
Sa a se tankou PSet 2, kote w ap sèlman k ap deplase bagay sa yo
alantou an memwa, ou pito nan strings.
>> Se konsa, mwen iteration ki ant 0 a longè a nan an la fisèl.
Apre sa, mwen kopye pèsonaj la m-th nan s nan pèsonaj la m-th nan t.
Epi paske mwen menm, pwogramè a, te fè asire w ke ou asiyen egzakteman jan anpil bytes
jan mwen bezwen, li nan pafè yon sèl-a-youn relasyon.
Apre sa, mwen kopi manman an miniskil nan yon sèl nan nouvo.
Lè sa a, anfen, mwen fè liy sa a.
Se konsa, efè a se sèlman yo kapitalize sa a t isit la.
Se konsa, yon anpil yo absòbe, men si ou jis konsidere
sa k ap reyèlman ale sou anba kapo a
se jis k ap deplase sa yo bytes alantou li, tout sa ki
ki nesesè yo rezoud pwoblèm sa a se jis yo ban nou sa a ti moso nan memwa.
Koulye a, nan risk pou yo akablan, kite m 'montre
yon lòt egzanp sa a, se prèske ki idantik yo, eksepte pou yon sèl sa a
liy nan kòd.
Se konsa, sa a se vèsyon an HACKER nan pwogram sa a, si ou pral.
Men, kite a jis distile l 'nan sa k ap pase sou.
Liy 24 itilize yo dwe sa a t bracket mwen vin la bracket mwen.
Koulye a, mwen chanje sa a yo t nan zetwal pi plis skre
plis 1 egal zetwal nan plis 1.
>> Se konsa, sa k ap pase ak poukisa nou gen yon karaktè zetwal?
Nou te wè zetwal la anvan, epi li nan ki te itilize yon fason diferan isit la.
Nou deja wè Char *, koulye a, mwen ap wè yon etwal nan kòmansman an, e ke sa a OK.
Paske li sanble nou ka kalite dégager jis
nan men moun premye prensip sa k ap pase sou.
Se konsa, jis yo dwe klè, ki sa ki la?
Semèn pase a, li te yon fisèl.
Sa pa sifi ankò.
Ki sa ki se an, espesyalman?
>> ODYANS: [fèbl]
>> DAVID J. Malan: Li se yon konsèy.
Li nan adrès ki nan la premye karaktè nou tape nan.
OK, ki sa ki t?
>> ODYANS: [fèbl]
>> DAVID J. Malan: nan adrès nan multiple an premye
nan t, ki ti moso nan memwa realokasyon.
Se konsa, li sanble ke lè nou repekte ki ant 0 sou jiska fisèl la
length-- premye nan tout, mwen kòmanse koupe nan 0, paske
a sa a lekòl la fin vye granmoun pou bagay riban.
Se konsa, jis pou senplisite, se pou yo asime ke liy lan premye nan kòd
se reyèlman jis sa a, dwat.
Si mwen se zewo, pandan l ajoute zewo nan yon bagay prezimableman
a pa pral gen yon efè.
>> Se konsa, sa se sa a di?
Li sanble ke zetwal la operatè nan kontèks sa a
se dèreferans a operatè, ki se jis
yon fason anpenpan nan di ale nan adrès sa a.
Se konsa, si a se adrès ki nan premye a karaktè nan sa a ti moso nan memwa,
* a vle di ale la.
Epi paske nou te trase foto a nan fason sa a,
ou ka adopte nan apre modèl mantal.
Si sa a se nan, epi ou di * a, * s kalite tankou parachut ak nechèl,
si ou sonje jwèt la nan anfans, se tankou swiv ki flèch epi ale
nan adrès la.
>> * T se menm bagay la.
Se konsa, kòmanse isit la, ale nan moso li yo.
Mwen pa ka jis desine sou ekran sa a ki fason.
* T vle di yo ale isit la.
Lè sa a,, se la pou riban jis di deplase karaktè sa a isit la,
deplase karaktè sa a isit la, deplase karaktè sa a isit la.
Men, ki jan m 'fè ki incrementation?
Mwen bezwen defèt sa mwen jis efase.
Sa a se sa k ap jeneralman rele konsèy aritmetik, ki
vle di matematik ak adrès.
>> Si, nan sa a pou riban, Mwen kenbe incrementing mwen,
ak s se yon adrès ak t se yon adrès, si mwen jis kenbe ajoute 1,
ki jis vle di kenbe deplase pi devan, ak pou pi devan, ak pou pi devan nan memwa a.
Se tankou Oxford Street, nan lari ke bilding lan CS se sou.
Bilding yo CS se nan 33 Oxford Street.
Se konsa, si ou te fè 33 Oxford Street plis 1,
ki pote ou nan 34 Oxford Street, Lè sa a, 35 Oxford Street,
Lè sa a, 36 Oxford Street, tou sa moun bilding aktyèlman yo - si yo egziste.
Se konsa, sa a, se tout sa nou ap fè isit la ak konsèy aritmetik.
>> Se konsa, li nan yon fason super Esoteric a eksprime tèt nou.
Men, tout sa ki nan k ap pase anba kapo a
se jis sa yo adrès sa yo, tankou apre yon kat jeyografik, si ou pral,
oswa sa yo flèch tankou nou te trase sou ekran an.
OK, yon anpil yo dijere.
Nenpòt kesyon sou sentaks, konsèp, endikasyon, malok, oswa renmen an.
Yeah, sou isit la an premye.
>> ODYANS: Se konsa, kote ki di * T egal toupper * T,
se ke ale nan tirer tout lèt yo oswa just--
>> DAVID J. Malan: Ah, reyèlman bon kesyon.
Se konsa, nan liy sa a isit la, 31, sa a se ale nan tirer
lèt la premye oswa tout lèt yo.
Se konsa nou reponn ki pa ale tounen nan prensip premye.
Ak prensip premye isit la mwen vle di jis ale nan definisyon debaz yo
a sa k ap enplike nan sa.
Se konsa, toupper nan yon fonksyon ki lèt majiskil yon Char.
Sa a tout.
* T vle di ale nan first-- nan ale nan adrès la nan t.
Se konsa, nan foto a, si sa a se moso nan nan memwa nou resevwa lajan ak malok,
ak sa a se t, * T vle di ale isit la.
>> Pandan se tan, w ap pase ki valè, miniskil m
toupper, w ap vin tounen kapital M, ki bò ou mete li?
W ap mete l 'nan ke kote menm.
Se konsa, pa ke lojik nan sa yo definisyon debaz li a sèlman
valorizasyon lèt nan premye sof si ou repekte ak mwen oswa yon
pou riban oswa yon riban pandan y ap, li pa k ap pase fè anyen plis pase sa ou mande li.
Bon kesyon.
Yeah?
>> ODYANS: Poukisa ou te itilize nan dèreferans metòd olye ke
etalaj la?
>> DAVID J. Malan: Ah, bon kesyon.
Poukisa ou ta sèvi ak dèreferans a metòd olye pou yo metòd la etalaj?
Okenn rezon patikilye, yo dwe onèt.
Epi, an reyalite, pou sa a kalite egzanp, dwa,
Mwen jis diskite fè nan pwogram pi konplike,
plis je yo lustraj sou yo, moun ap kouran soti nan
paske sa a sanble super Esoteric, men menm si li ap fè menm bagay la.
Se konsa, franchman, sa a se yon solisyon san nesesite vizyèlman konplèks
nan pwoblèm nan.
>> Li nan toujou bon konsepsyon, senk soti nan senk pou konsepsyon,
si li nan nan bracket a notasyon notasyon oswa nan konsèy.
But-- espesyalman lè nou jwenn pita nan kou a nan pset 5
lè nou aplike ki diksyonè ki Mwen te mansyone yon koup la jou-
nou pral aktyèlman pran swen sou nan ba nivo adrès memwa
ke nou reyèlman konprann sa k ap pase sou.
>> Men, pou kounye a, li vire soti ke sa a liy nan Kòd parantèz isit la kare
pa reyèlman egziste.
Yo se sa ki rele Massachusetts Institute of Technology sik, ki
se jis yon fason weirdly fre nan di a du konvèti parantèz kare yo dwe
ki ekspresyon matematik.
Se konsa, li nan yon konvansyon imen pou kapab jis ekri
sa yo trè user-zanmitay parantèz.
Men, sa ki du a, rezone, se reyèlman fè nenpòt ki lè
ou ekri sa k ap make nan liy 24, anba kapo a li vrèman
konvèti li nan sa a.
Se jis plis plezi kòm yon moun li ak ekri Kòd tankou liy 24.
Men, evantyèlman moun wou fòmasyon twò vin koupe
lè pwòp konfò yon sèl la vin pi fò.
>> Tout dwa, se konsa Lè sa a, sonje ke sa a te sòt nan nan pi gwo pwoblèm
nou li pran kouri nan.
Epi sa a, ki sa te pwovoke antye sa a konvèsasyon modi sou endikasyon,
ak adrès, ak bagay kopye.
Li te paske nou trebiche sou sa a estipid, pwoblèm estipid, annakò ak sa
Mwen aplike logically-- ak Lauren moute isit la sou Demo a ak ji an zoranj
nan milk-- nan yon parfe fonksyon algorithmically kòrèk
pou échanjé de varyab ' valè, men bagay la modi
pa t gen okenn ki pèsistan, oswa pèmanan, efè sou Kòd m 'yo.
>> Epi poukisa te sa?
Nan yon Nutshell, poukisa se sa a mete sou pye swap
lojikman kòrèk, men pa gen okenn enpak sou varyab yo ke yo te pase nan li,
tankou x ak y pou prensipal yo?
Ki sa ki esansyèl la nan pwoblèm nan te ye?
Yeah?
ODYANS: Paske varyab te fè kopi varyab nan pas la
a fonksyon.
>> DAVID J. Malan: Egzakteman, lè ou pase varyab nan yon fonksyon, oswa agiman
nan yon fonksyon, yo ap pase bò kopi, ki
vle di ou jwenn yon ki idantik kap modèl nan Bits pou tou de x ak y,
rele isit la yon ak b.
Epi ou ka fè anyen ou vle ak sa yo kopi,
men yo pwal santi yo pa gen okenn efè sou fonksyon an rele.
Epi, an reyalite, nou te trase ki foto sou ekran, rapèl la
dènye fwa, annakò ak sa si ou reyèlman panse osijè de sa ki nan
ale sou anba a si hood-- sa a se memwa òdinatè w lan an,
, li desann isit la se moso nan memwa te itilize pou prensipal yo,
sa a se moso nan memwa te itilize pou swap,
e konsa menm si prensipal gen de varyab, x ak y,
swap ta ka gen ki idantik kap valè, tou de kote yo 1 ak 2,
men yo ap konplètman fragman diferan nan memwa.
>> Se konsa, nou bezwen yon solisyon a sa a.
Apre sa, franchman, li ta sanble ke kounye a nou gen yon solisyon a pwoblèm sa a, dwat.
Si nou kounye a gen kapasite a manipile bagay pa fason pou adrès
epi, sòt de parachut ak nechèl style, swiv flèch sa yo
epi ale nenpòt kote nou vle nan memwa, pa t 'kapab nou
rezoud pwoblèm sa a pa pase soti nan prensipal swap
pa valè yo nou vle swap, men jis entwitif
sa ki ta nou pase swap olye?
>> [Entèrpozisyon vwa]
>> DAVID J. Malan: Poukisa pa fè sa nou jis pase l adrès yo, dwa?
Poukisa nou pa nou bay swap yon kat jeyografik trezò, si ou vle,
ki mennen l 'bay la valè aktyèl x ak y.
Swap Se pou yo, aktyèlman chanje moun Bits orijinal, olye ke
jis pase kopi Bits yo.
Se konsa, an reyalite, sa a, se sa ki nan pral fè solisyon an.
Sa a vèsyon isit la se klèman move ak defekte.
Epi, koulye a, nan premye gade, li jis sanble tankou nou te ajoute yon pakèt moun sou zetwal owaza
li janbe lòt dwèt nou ke li ta konpile.
Men, li ta kounye a konpile.
>> Men, kite a wè sa ki bagay sa yo vle di.
Epi, malerezman, otè yo nan C te kapab te chwazi yon lòt senbòl
fè sa-a yon ti kras pi klè, men operatè a zetwal
gen diferan siyifikasyon an de kontèks diferan.
Epi nou te wè tou de, men kite a fè distenksyon ant.
>> Se konsa, moute nan tèt la a, lè m 'te chanje a ak b
nan men yo te int a nan move a vèsyon int zetwal, A ak B,
deja, yo te nonm antye relatif.
Ki sa ki a ak b kounye a nan bon, vèt vèsyon an?
Yo ap adrès.
Adrès nan sa ki, yo dwe klè?
Adrès nan nonm antye relatif.
Se konsa, lefèt ke mwen se li di zetwal int vle di
sa a se adrès ki nan yon nonb antye relatif, espesyalman.
>> Se konsa, kounye remake nan liy yo nan kòd, te yon lòt bagay chanje tou.
TMP rete menm bagay la tou, paske li nan jis nonb antye relatif nan yon ti tan,
pa gen okenn majik memwa a.
Men, yon kounye a bezwen yon etwal.
Epi, an reyalite, chak lòt mansyone nan A ak B,
remake ke tout sa a, se chanje soti nan wouj nan vèt
se ke mwen prefiks moun varyab ak zetwal yo.
Paske mwen pa vle a kapab bay kopi yon ak b.
Paske si mwen jis kopi a ak b ak swap A ak B, ki sa mwen aktyèlman échanjé?
Jis adrès, mwen vle swap sa ki nan nan adrès sa yo.
Mwen vle ale la.
Se konsa, operatè a zetwal andedan nan fonksyon m 'yo,
pa andedan nan lis la paramèt, vle di ou ale nan adrès sa yo
ak aktyèlman chanje valè sa yo.
>> Se konsa, sa fè foto a kounye a gade tankou pito.
Bon, si olye pou m ap pase nan pou yon ak b pa 1 ak 2--
Mwen aktyèlman bezwen ajoute yon lòt definisyon isit la.
Se konsa, ta kwè ke sa a moso nan memwa se nan kote 10.
>> Sa a se nan pozisyon 11, men sa a se yon ti jan nan yon senplifikasyon,
Mwen kounye a gen de chwa pou m pase x ak y oswa mwen pase adrès yo?
Si m 'pase yo adrès tankou sa a, mwen jis
koulye a bezwen aplike swap pou chak kòd la vèt
se konsa ke lè li wè yon ak lè li wè yon b, li pa jis kopi a ak b
yo epi li deplase lèt la ak ji zoranj.
Lèt ak zoranj ji a metafò kounye a kase desann,
paske sa yo se tas nan kat likid ak pa.
Nou olye bezwen ale nan adrès 10 epi nou
bezwen ale nan adrès 11, ak Lè sa a, fè ki lojik échanjé.
>> Se konsa, lojik la se menm bagay la, men nou bezwen yon fason yon ti kras diferan
a aksè moun varyab.
Se konsa, nan fen a, ki sa a pwogram gen yo gade tankou se sa a.
Nan swap.c literalman kopye ak kopye vèsyon an vèt.
Men, mwen bezwen fè yon sèl chanjman.
Li pa ase jis chanje swap.
Ki lòt liy nan Kòd mwen bezwen chanje?
Yeah?
>> ODYANS: Ki kote li pran agiman yo.
>> DAVID J. Malan: Ki kote li pran agiman li yo.
Se konsa, si mwen woulo liv jiska prensipal yo, mwen pa ka jis pase nan x ak y,
epi, mwen te pwomèt, dènye a moso nan nouvo sentaks jodi a.
Mwen bezwen pase nan pa x ak y men adrès ki nan x ak y.
Apre sa, li vire soti, senbòl la ki otè yo nan C te chwazi
se si ou sèvi ak yon comercial isit la, nou pa dwe konfonn ak comercial a lojik,
si ou sèvi ak yon comercial isit la ak yon comercial isit la,
sa a figi soti pou ou, sa ki nan adrès ki nan x,
petèt li nan 10, sa ki nan la adrès nan y, petèt li nan
11, epi pase sa yo ki nan pito.
>> Se konsa, yon anpil yo absòbe tout nan yon fwa.
Men, kite a wè kounye a byen vit nan nou an rete kat minit
kote bagay sa yo ka ale courbe.
Apre sa, kòm yon sou kote, aktyèlman Mwen te pran foto sa a,
TF pran foto sa a yon ane oswa de de sa.
Se konsa, sa a se kwen an tounen a Eliot Gastronomie Hall.
Endikasyon yo se petèt pi di a sijè ke nou kouvri nan CS50.
Se konsa, si ou enkyete sòt nan nan pant, se tankou petèt li nan
plis nan yon baton Hockey tankou sa a, reyalize
nou ap kalite apochan yon pikwa nan tèm de konpleksite nan filozofik.
>> Apre sa, mwen pote yo moute sa a foto, paske mwen fè sèman
bay Bondye, nan sezon otòn 1996, lè m 'te pran CS50 ak parèy ansèyman mwen,
Nishat Mehta, li chita m 'desann nan la kwen nan Eliot D. Hall la sou manje midi,
oswa dine, oswa yon bagay eseye pote m 'sekou konprann endikasyon.
Lè sa a se kote mwen te semèn apre li te prezante nan konferans lè
Mwen finalman konprann endikasyon.
Apre sa, mwen se espwa ke sa a pral klike lwen pi bonè pou ou.
Men, reyalize sa a absoliman nan mitan sijè ki pi plis sofistike
nou te gade.
Men, li la nan mitan ki pi pwisan an.
Men, lè ou jwenn li, li vrèman tout jis ale nan finalman vini ansanm.
Se konsa, rès asire li pa fè sa bezwen tout koule nan jodi a.
>> Se konsa, isit la nan pwogram ki sot pase a nou ap ale nan gade nan.
Epi nou ap ale nan fini ak yon rapid twa minit nan claymation
fèt pa zanmi nou an, Nick Parlante.
Isit la nan yon pwogram, ki sou de nan tèt liy deklare yon x varyab ak y.
Tou de nan yo ki adrès a nonm antye relatif, AKA endikasyon.
Nou Lè sa a, asiyen ase memwa nan magazen yon int
epi estoke adrès la nan ki memwa nan x.
Se konsa, li nan menm pi senp pase egzanp lan anvan.
Ban m 'kat bytes nan memwa, sa a, se gwosè a nan yon int,
, li mete ke nan adrès x.
Liy sa a isit la vle di ale nan adrès la nan x
, li mete siyifikasyon an nan lavi, nimewo a 42 la.
Men, liy sa a enkyetid m '.
Star y vle di ale nan adrès la nan y, epi li mete nimewo a malheureux 13 la.
Poukisa li danjere, nan pwen sa a nan story-- yo kwake rapidman di
nan kèk minit diminisyon nou an isit lan-- poukisa li move
pou mwen pou m di, ale nan adrès la nan y?
>> ODYANS: pa Ou gen [fèbl].
DAVID J. Malan: Mwen pa gen mete anyen nan y.
Se konsa, ki sa ki valè a nan y, nan pwen sa a nan istwa a?
Nou pa gen okenn lide.
Li nan kèk valè fatra ak ni Binky konnen.
Si nou te kapab fini sou nòt sa a.
>> [VIDEO lèktur]
>> -Hey, Binky, reveye.
Li lè pou plezi konsèy.
>> -Ki Nan sa?
Aprann sou endikasyon?
Oh, chokola.
>> -Bon, 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, Byen mwen wè nan de endikasyon, men yo
pa sanble yo gen montre nan anyen.
>> -ki A dwat.
Okòmansman endikasyon pa lonje dwèt sou anyen.
Bagay sa yo yo lonje dwèt sou yo rele pointees ak anviwònman yo moute
se yon etap ki apa a.
>> -Oh, Dwa, dwa.
Mwen te konnen sa.
Pointees yo se apa a.
Se konsa, kouman ou asiyen yon pointee?
>> -OK, Byen sa a rezèvè Kòd yon nouvo pointee nonb antye relatif,
ak sa a ansanm pati x nan pwen nan li.
>> -Hey, Ki sanble pi bon.
Se konsa, fè l 'fè yon bagay.
>> -OK, Mwen pral dèreferans x la konsèy nan magazen nimewo a 42 nan pointee li yo.
Pou sa jwe fent, mwen pral bezwen m ' majik ralonj nan dereferencing.
>> Ralonj majik -Ou nan dereferencing?
Uh, ki, sa se gwo.
>> -Sa A se sa kòd la sanble.
Mwen pral jis mete kanpe nimewo a and--
>> [POP SOUND]
>> -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, nan magazen 42 an la.
Hey, eseye lè l sèvi avèk li nan magazen nimewo a 13 nan 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 dereferencing ak just--
>> [SONNÈT SOUND]
>> -Oh, Hey ki pa t 'travay.
Di, en, Binky, mwen pa fè sa panse dereferencing
y se yon bon lide, paske mete moute pointee la se yon etap ki apa a.
Apre sa, mwen pa panse ke nou tout tan tout tan te fè li.
>> -Hmm, Bon pwen.
>> -Yeah, Nou resevwa lajan konsèy, y la, men nou pa janm mete l 'nan pwen nan yon pointee.
>> -Hmm, Trè vijilan.
-Hey, W ap chèche bon la, Binky.
Èske ou ka fikse li pou ke pwen y pointee a menm jan ak x.
>> -Sure, Mwen sèvi ak ralonj majik mwen nan plasman konsèy.
>> Ki-Eske pral gen yon pwoblèm, tankou anvan an?
>> -Pa Gen, sa a pa manyen pointees yo.
Li jis chanje yon sèl konsèy A ak pwen nan menm bagay-- nan
>> [Eklate SOUND]
--as lòt.
>> -Oh, Mwen wè.
Koulye a, y pwen nan plas la menm jan ak x.
Se konsa, rete tann, kounye a y se fiks yo.
Li te gen yon pointee.
Se konsa, ou ka eseye ralonj la nan dereferencing ankò nan voye 13 sou la.
>> -Oh, OK, isit la ale.
>> -Hey, Gade nan sa.
Koulye a, dereferencing travay sou y.
Epi paske endikasyon yo ap pataje ke yon moun pointee yo, yo tou de wè 13 la.
>> -Yeah, Pataje, en, kèlkeswa sa.
Se konsa, nou pral chanje kote kounye a?
>> -Oh, Gade nou ap soti nan tan.
>> -But--
>> -Jis Sonje twa règ yo konsèy.
Nimewo 1, 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 2, konsèy dereferencing kòmanse nan konsèy la
ak swiv flèch li yo sou jwenn aksè nan pointee li yo.
Kòm nou tout konnen, sa a sèlman travay si gen se yon pointee, ki kalite vin tounen
ak règ nimewo 1.
>> Nimewo 3, konsèy plasman pran yon sèl konsèy
ak chanjman li nan lonje dwèt sou nan menm pointee kòm yon lòt konsèy.
Se konsa, apre plasman an, de pwent yo
pral pwen nan menm pointee a, pafwa ki yo rele pataje.
Epi sa a, tout gen nan li, vrèman.
Bye-bye kounye a.
>> [END lèktur]
>> DAVID J. Malan: Sa a li pou CS50.
Mèsi a Pwofesè Nick Parlante.
Nou pral wè ou an semèn pwochèn.
>> [ELEKTWONIK MIZIK jwe]