>> [MIZIK jwe]
>> Doug Lloyd: OK.
Nou te travay ak nonm antye relatif, nou te te travay ak karaktè,
nou te te travay flote, double, strings, ak bools.
Nou te fin itilize bèl anpil tout a [fèbl] kalite yo ki
yo te disponib nan nou tout ansanm.
Men koulye a, nou vle fè yon bagay ki pi.
Ki jan nou fè sa?
Ki jan nou kreye kalite done diferan?
Nou ka fè sa lè l sèvi avèk estrikti.
Se konsa, estrikti pèmèt nou inifye varyab nan diferan kalite
nan yon sèl, nouvo kalite varyab, nou ka bay pwòp non kalite li yo.
Sa a se yon vrèman fò bagay pou kapab fè sa,
paske nou kapab kounye a gwoup eleman nan kalite done diferan
ansanm sa yo ki te yon koneksyon lojik.
Nou te te kapab fè sa ak ranje sòt de, dwa?
Nou kapab gwoup varyab nan kalite la menm done
ansanm nan yon gwo inite nan memwa, yon etalaj.
>> Men, nou pa te kapab melanje moute diferan kalite done ansanm.
Nou pa ka, di, pè yon nonb antye relatif, ak yon karaktè, ak yon doub tout
nan menm bagay la ak rele ke yon inite sèl.
Men, avèk estrikti, oswa souvan refere yo kòm strukt,
nou aktyèlman kapab.
Se konsa, yon estrikti se sòt de tankou yon varyab super.
Li se yon varyab ki gen lòt varyab andedan nan li.
Se konsa, isit la nan yon egzanp sou yon estrikti trè senp.
Sa a se sa sentaks la ta gade renmen yo kreye yon estrikti pou yon machin.
Koulye a, kite a ale nan sentaks la isit la.
Struct, sa se nan mo kle ki endike
ke mwen kreye yon nouvo kalite done isit la.
An patikilye, non kalite a done a se pral fè struct machin, menm jan nou pral wè.
Men, sa a se sòt nan nan pwent yo ale nan du a ke sa a
kòm yon gwoup nan varyab ki pral yo dwe konsidere kòm yon pati nan kalite la menm
nan yon minit.
>> Machin, jis non an nan estrikti an.
Yon fwa ankò, kalite a done isit la ki pral yo dwe struct machin, pa sèlman machin.
Men, si ou gen different-- si ou kreye miltip strukt
nan pwogram nan menm, ou bezwen distenge ant struct ak struct.
Se konsa, struct machin, mwen ta ka yo te genyen tou struct elèv, pou egzanp,
nan pwogram nan menm.
Anndan nan aparèy òtopedik yo Curly yo tout nan jaden yo sa yo rele,
oswa manm nan estrikti an.
Se konsa, sa yo se kèk nan bagay sa yo ki nannan nan yon machin?
Oke, li anjeneral gen yon ane, li te yon non modèl, ak yon plak machin,
yon sou odomèt ki anjeneral gen kèk kantite mil sou li,
e petèt yon gwosè motè.
Ak jan ou ka wè, mwen melanje moute nonm antye relatif ak karaktè ak double.
Yo ap tout pral fè pati nan sa a nouvo kalite done.
>> Anfen, bagay final la mwen bezwen fè, pa bliye virgules sa a ti kras
alafen.
Apre nou fini defini estrikti a, nou bezwen mete yon virgules nan fen an.
Li se yon sentaks trè komen erè, paske avèk yon fonksyon,
pou egzanp, ou ta jis gen louvri atèl Curly, fèmen atèl Curly.
Ou pa mete yon virgules nan la nan fen yon definisyon fonksyon.
Sa a sanble yon fonksyon definisyon, men li la pa,
ak pou virgules a gen se jis yon rapèl ke ou
bezwen mete l 'la, paske du a pral otreman pa
konnen ki sa fè ak li.
Li se yon erè trè komen aksidantèlman fè
lè w ap premye defini estrikti.
>> OK.
Se konsa, nou anjeneral defini estrikti nou an nan tèt la anpil nan pwogram nou
paske yo ap pwobableman pral yo dwe itilize pa plizyè fonksyon.
Nou pa vle defini yon struct andedan nan yon fonksyon,
paske lè sa a nou ka only-- nan sijè ki abòde nan estrikti a reyèlman
sèlman egziste andedan nan ki fonksyon.
Nou ta pwobableman vle defini yon estrikti pou nou ka sèvi ak li nan plizyè fonksyon,
oswa petèt nan plizyè dosye ki yo se mare ansanm
yo kreye pwogram sèl nou yo.
Pafwa tou olye pou a defini estrikti a
nan tèt la anpil kote ou te mete ou liv an gen ladan ak liv ou defini,
pou egzanp, ou ta ka mete yo nan separe dosye dot h, ki ou Lè sa a
liv gen ladan tèt ou.
>> Se konsa, nou gen estrikti, men kounye a nou bezwen jwenn andedan nan yo.
Ki jan nou jwenn andedan nan yon estrikti jwenn aksè
moun sub-varyab, sa yo ki varyab ki egziste andedan estrikti nan?
Oke, nou gen yon bagay yo rele operatè a dot, ki pèmèt nou
jwenn aksè nan jaden ki te andeyò estrikti an.
Se konsa, pou egzanp, kite a di mwen te deklare done estrikti mwen tape yon kote
nan tèt la nan pwogram m 'yo, oswa petèt nan yon dosye dot h ke mwen te liv enkli ladan li.
Si m 'Lè sa a, vle kreye yon nouvo varyab nan ki kalite done, mwen kapab di,
struct machin, machin mwen an, virgules.
Jis tankou mwen te kapab di Int x, oswa non fisèl virgules.
>> Kalite a done isit la se struct machin, non an nan varyab la se machin mwen an,
ak Lè sa a mwen ka itilize operatè a dot aksè jaden yo divès kalite nan machin mwen an.
Se konsa, mwen ka di machin mwen an dot ane egal 2011.
Sa a parfe amann.
Ane, si ou sonje, yo te defini kòm yon nonb antye relatif jaden andedan nan machin sa a struct
done kalite.
Se konsa, nenpòt ki varyab nan done yo struct machin kalite, tankou machin mwen an, mwen kapab di machin mwen an
ane dot egal ak Lè sa a bay li kèk valè nonb antye relatif, 2011.
Plak machin dot mwen egal CS50.
Mwen sou odomèt kat dot egal 50505 virgules.
Tout moun nan sa yo se parfe amann e ke sa a
ki jan nou jwenn aksè nan jaden an estrikti an.
Estrikti, menm si, pa bezwen yo dwe kreye sou pil la.
Jis tankou nenpòt ki lòt varyab, nou ka dynamique asiyen yo.
Si nou gen yon pwogram ki ta ka dwe génération anpil estrikti,
nou pa konnen ki jan anpil nou ap ale nan bezwen,
Lè sa a, nou bezwen dynamique asiyen moun estrikti
kòm pwogram nou an ap kouri.
Se konsa, si nou ap ale nan jwenn aksè nan jaden an yon estrikti nan ki kontèks,
sonje ke nou premye bezwen dèreferans konsèy la nan estrikti a,
ak Lè sa a yon fwa nou dèreferans a konsèy, lè sa a nou kapab jwenn aksè jaden yo.
Si nou sèlman gen yon konsèy nan estrikti a,
nou pa ka jis di jaden konsèy dot non epi pou yo jwenn sa nou ap chèche pou.
Genyen etap la siplemantè nan dereferencing.
Se konsa, kite pou nou di ke olye pou yo previous-- nan
jis tankou egzanp lan anvan, olye pou yo deklare li
sou chemine a, struct machin, mwen machin, virgules, mwen di struct machin,
etwal, yon konsèy nan yon struct machin rele machin mwen an,
egal gwosè malok a struct machin.
Kantite moun ki nan nou pral konnen ki jan anpil bytes nouvo kalite done ou pran moute.
Ou pa nesesèman bezwen sèvi ak sèlman gwosè nan, lajè, int, oswa Char, oswa nenpòt ki
nan ki kalite done bati-an.
Du a se entelijan ase eseye figi konnen kouman anpil bytes
yo mande w pa estrikti nouvo ou.
Se konsa, mwen malok tèt mwen yon inite nan memwa gwo ase yo kenbe yon machin struct,
ak mwen jwenn yon konsèy tounen ak sa yo ki blòk nan memwa,
epi li se ki konsèy asiyen nan machin mwen an.
>> Koulye a, si mwen vle aksè jaden ki te andeyò machin mwen an,
M 'premye dèreferans machin mwen an lè l sèvi avèk operatè dèreferans, zetwal la
ke nou te wè nan pwent yo videyo, ak Lè sa a apre mwen dèreferans,
Lè sa a, mwen ka itilize operatè a dot aksè jaden yo divès kalite nan machin mwen an.
Star machin mwen an dot ane egal 2011.
Sa ta gen efè lan nou vle nan ka sa a,
paske nou te dynamique resevwa lajan machin mwen an.
>> Sa a kalite anmèdan, menm si, dwa?
Genyen yon pwosesis 2-etap kounye a.
Koulye a, nou gen yo dereference-- nou gen yon operatè etwal,
e nou gen yon operatè dot.
Ak jan ou ta ka atann, paske C pwogramasyon renmen pi kout fason
fè bagay sa yo, gen yon fason ki pi kout fè sa.
Gen yon lòt operatè rele flèch, sa ki fè pwosesis sa a yon anpil pi fasil.
Fason ki flèch ap travay se li premye dereferences
konsèy la sou bò gòch la bò nan operatè a,
ak Lè sa a, apre li fin dereferenced konsèy la sou bò gòch la,
li jwenn aksè jaden an sou bò dwat la.
Se konsa, deja nou te gen sa a sòt nan zetwal machin mwen an dot tout bagay sa a,
tankou te gen yon anpil ale sou la.
Men, sa ki nou ka olye fè se sa a men ane flèch machin mwen an egal 2011.
>> Yon fwa ankò, sa k ap pase isit la?
Premyèman, m ap dereferencing machin mwen an.
Ki ankò, se yon konsèy isit la.
Lè sa a, apre l te gen dereferenced machin mwen an, mwen
ka Lè sa a aksè jaden yo ane, plak, ak sou odomèt
menm jan mwen te kapab gen premye anvan itilize zetwal dèreferans machin mwen an,
ak dot jwenn aksè nan jaden an.
Se konsa, ou ka gen estrikti, ou ka gen endikasyon nan estrikti,
epi ou gen fason yo aksè jaden yo nan tout sa yo estrikti,
si ou gen endikasyon yo oswa varyab yo tèt yo.
Dot oswa flèch, tou depann de ki jan varyab la te deklare.
Mwen se Doug Lloyd, sa a se CS50.