Tip:
Highlight text to annotate it
X
>> Oratè 1: Alo tout moun.
Nou pral jwenn te kòmanse.
Mwen panse ke moun yo toujou ale yo dwe filtraj pous
Men, nan enterè a nan tan, pou nou ka fè ou jwenn mesye soti nan isit la sou tan,
nou pral kòmanse.
Se konsa, akeyi yo CS50 egzamen 0 revizyon an.
Pou moun nan nou ki pa te reyalize ankò, ou gen yon kesyon nan Mèkredi.
Woo-ou.
>> Si ou pa gen te kòmanse etidye ankò oswa pa gen reyalize ke sa a ki egziste ankò,
ti tès sot pase yo ak tout enfòmasyon sou egzamen ou yo sou cs50.net/quizzes.
Genyen kèk bagay trè bon sou a, ti tès sot pase yo soti nan sot pase a 10 an
ane kòm byen ke enfòmasyon sou egzamen sa a ak sijè
ke yo pral kouvri.
Se konsa, kite a jwenn te kòmanse.
>> Se konsa, ou nèg ta ka sonje, premye a jou nan klas David te gen moun ki lanp sou.
Se konsa, esansyèlman, tout bagay ki ale sou anba kapo a nan yon òdinatè se
fè l 'nan binè.
Binè vle di ki sa li son tankou, 0 a ak 1 an.
Li te gen de valè ki ka reprezante.
>> Se konsa, jis tankou nan premye jou a nan seksyon Lè David vire sou yon limyè
anpoul ki reprezante sou li a, oswa 1, konpitè nou an konprann binè kòm 0 a ak
1 a, limen oubyen etenn.
Prensip Fondamantal nan nan binè.
Chak kote reprezante nan baz de.
Se konsa, ou ajoute 2 a 0 nan la 1 a 2 nan tout wout la moute.
>> Pou kalkile sa ki binè ou a se fè desimal, ou jis swiv ekwasyon sa a
tape bagay.
Si ou gen yon 1 nan nenpòt nan moun sa kote yo, ou anpil anpil pitit li pa tou sa
baz li la nan, ajoute l ', ak ou jwenn desimal a.
Se konsa, sa a se ki jan ou konte a 5 an binè.
Jis tankou sa nou te fè sou a dènye glise, sa a se ki jan ou ta
reprezante 1 jiska 5.
>> Menm jan tou, jis tankou ou ka ajoute ak fè soustraksyon nan desimal oswa baz 10, oswa
reyèlman nenpòt ki baz, sou ka ajoute ak soustraksyon nan binè.
Ekzakteman ki sa ou ta atann lè ou ajoute de moute nan, si li egal pi gwo
pase 1, ou pote yon 1, fè l 'yon 0, epi fè adisyon a fason sa a, jis
tankou ou ta atann ak regilye desimal oswa nenpòt lòt baz.
Fre.
>> Se konsa, tankou mwen te di anvan, tou sa ki ale sou anba kapo a nan konpitè nou an
se fè nan 0 a ak 1 a, oswa binè.
Se konsa, kouman nou eksprime, pou egzanp, lèt, oswa nimewo, oswa karaktè?
Apre sa, repons lan nan ki se ASCII.
>> ASCII se yon kat ant pèsonaj ke nou ta nòmalman wè nan a
Lang angle tankou yon an, B a, C a, souliye, tirè, ak
anyen tankou sa.
Epi li kat ki nan yon valè ASCII.
Yon valè ASCII se jis yon nimewo ki ka konprann pa òdinatè ou.
Apre sa, jis tankou ou ka fè adisyon ak soustraksyon ak nimewo, ou kapab fè
yo ak valè ASCII.
>> Se konsa, nan egzanp sa a, ki sa a pral enprime soti?
Yeah, Se konsa, jis yon espas espas B espas C D. Ki kote te fè sourit mwen an ale?
Atansyon ou ka defini yon Int a 65.
Men, lè ou ekri ak lèt detache ki soti lè l sèvi avèk pousan C, li pral entèprete sa kòm yon
N. epi yo pral enprime soti A.
>> Menm jan an tou, ou ka deklare li kòm yon karaktè.
Men, lè ou enprime li lè l sèvi avèk pousan C, li pral entèprete sa kòm
pousan D. Apre sa, jis tankou ou ka ajoute yon nimewo, ou ka ajoute karaktè yo
Valè ASCII, nan ka sa a.
>> Se konsa, yon ti kras konsèy pou tout moun.
5, kòm yon fisèl, pa fè sa aktyèlman egal a 5.
Se konsa, kouman ta ka nou konvèti an fisèl 5 a nonb antye ki pè a 5?
Nenpòt ki ide?
Yeah.
>> Se konsa, si nou gen 5 kòm yon fisèl, nou ka fè soustraksyon 0.
Apre sa, ki pral ban nou 5.
Apre sa, Menm jan an tou, si nou gen 5 kòm yon nonb antye ki pè, ajoute ke yo fisèl la 0.
Apre sa, ki bay nou fisèl la 5.
Fre.
>> Koulye a, sonje tounen nan delivre lekti yon kote ki nou te pale de algoritm.
Se konsa, kouman nou aktyèlman vle yon òdinatè fè bagay enteresan?
Ou konnen, jis Adisyon ak soustraksyon nimewo ak bagay enprime soti se pa
ki enteresan.
Anjeneral, nou vle òdinatè nou yo fè kèk kalite algorithm.
Yon bagay yon ti kras plis konplèks pase jis senp aritmetik.
>> Yon algorithm se jis yon etap pa mete etap nan enstriksyon yo pou ki jan yo fè
yon sèten travay -
jis tankou yon resèt.
Ou ta ka sonje premye jou nan klas kote David te nou konte yon chanm
moun ak konbyen moun ki te nan sal la.
Ou ta ka dwe itilize yo konte youn pa youn.
1, 2, 3, 4.
Nan ka sa a, yon algorithm tan lineyè.
>> Men, David prezante yon algorithm pou ou nan konte konbe moun ki nan chanm nan
kote tout moun kanpe leve, ou di ou nimewo bay yon lòt moun, ajoute ke
nimewo moute, ak yon sèl moun ki chita desann.
Epi ou repete sa.
Sa a yon kalite algorithm.
Nou ka analize kouman efikas yon se algorithm ki baze sou li a kouri tan.
Men, nou pral pale yon ti kras plis enfòmasyon sou ki pita.
>> Se konsa, tout algoritm ka tou dwe ekri nan yon pseudocode.
Pseudocode se jis yon angle tankou sentaks itilize yo reprezante
yon lang programmation.
Pou egzanp, si nou te vle mande yon itilizatè devine nimewo pi renmen m ', nou
ka gen pseudocode tankou sa yo.
>> Jwenn yon itilizatè devine.
Si devine lan ki kòrèk, di yo yo ap kòrèk, lòt moun di yo
yo pa ap kòrèk la.
Apre sa, pseudocode se yon fason pou fasil reprezante yon lide oswa yon algorithm.
Se konsa, koulye a nou ta ka vle aktyèlman ekri sa a nan lang la ki òdinatè a
ta ka konprann.
Se konsa, nou ta ka ekri pseudocode nou yo ak entèprete ki nan kòd sous.
>> Se konsa, lwen, kòd sous yo dwe respekte nan yon sentaks sèten nan
yon lang programmation.
Se konsa, lwen, nan CS50, nou te te lè l sèvi avèk sitou c.
Se konsa, sa a ta kapab Kòd sous pou c.
Pita sou nan kou a, ou lannwit vini an kontak ak lòt pwogram
lang tankou PHP.
Oswa si w menm pran lòt klas, ou ta kapab fè Java, Piton, oswa menm OCML.
Men, nan lang c pwogram nou an, sa a se ki jan nou ta ka ekri kòd la sous pou
algorithm nan pseudocode ki Mwen jis dekri pi bonè.
>> Se konsa, kouman fè òdinatè w lan aktyèlman konprann sa?
Tankou mwen te di anvan, li sèlman vrèman konprann zewo ak moun yo.
Se konsa, li montre kouman li jwenn nan sous la Kòd nan yon bagay ki ka
konprann?
Oke, nou gen yon bagay rele yon du.
>> Si ou sonje tounen nan pi fò nan ou psets, ou te gen kèk kalite pwogram
ekri nan yon dosye dot c.
Lè sa a, ou ta tape fè.
Se konsa, sa ki fè fè la a?
>> Ou ka tape fè nan konpile ou pwogram paske yon moun -
Nenpòt moun ki te ekri seri p ou; pwobableman David -
kreye yon dosye fè.
Apre sa, ki di fè yo konnen nan kouri ou du, yo rele rezone, ki pral
Lè sa a, konpile Kòd sous ou a objè Kòd, ki se zewo ak moun yo
ki òdinatè w lan konprann.
Men, yon ti kras pita sou yo, n ap ale plis an pwofondè sou konpilateur.
>> Se konsa, sonje pset 0, kote - repons lan se wi, ou gen yon kesyon?
>> ODYANS: [fèbl]?
>> Oratè 1: Wi.
Mwen panse ke yo aktyèlman yo ta dwe sou entènèt.
Yeah.
>> ODYANS li: Eske se tankou [fèbl]?
>> Oratè 1: Li se pa vre.
Yo a sou cs50.net/quizzes.
>> ODYANS: koupe ti tès, koupe 2013, koupe 0, ak jis klike sou atravè
kiz 2013 epi poze kesyon sou 0, revize glisad seksyon.
>> Oratè 1: Yeah, Se konsa, si ou nèg vle rale li leve, li gade nan li sou ou
pwòp òdinatè, sa a, se amann tou.
Di ke ankò.
>> ODYANS: [fèbl].
>> Oratè 1: Yeah, [fèbl] se varyab la egare.
Oh, repons lan se wi?
>> ODYANS: [fèbl]?
>> Oratè 1: Non, frape yo pa sou egzamen an.
Padon, kesyon l 'te, te frape sou egzamen an.
Epi li se pa.
Se konsa, pset 0, ou nèg ta dwe gen tout aplike yon bagay sèvi ak grate.
Apre sa, nou te aprann kèk pwogram debaz blòk bilding lè l sèvi avèk grate.
>> Se konsa, kite a pran yon gade nan kèk nan eleman debaz sa yo
ki fè moute yon pwogram.
Premye a se ekspresyon Boolean.
Ekspresyon Boolean yo se yo menm ak 0 a oswa nenpòt ki bagay ki gen
de valè sa posib.
Nan ka sa a, vre oubyen fo, limen oubyen etenn, ak repons lan se wi oswa ki pa gen.
Yon egzanp sou yon senp, trè senp, pwogram ki itilize yon Boolean
ekspresyon moute isit la.
>> Se konsa, nan lòd pou ekspresyon Boolean kapab itil, nou gen operatè Boolean.
Sa yo se operatè ki kapab itilize yo konpare sèten valè.
Se konsa, nou gen ak oswa ou pa egal a, mwens pase oswa egal a, pi gran pase oswa
egal a, ak mwens pase oswa ki pi gran pase.
Men, operatè sa yo se pa trè itil sof si nou ka melanje yo nan
kondisyon.
>> Se konsa, ou nèg ta ka sonje nan grate ak nan p ou kouche ke nou
te gen kondisyon.
Yo, esansyèlman, tankou fouchèt nan lojik nan pwogram ou an ki
ègzekutra depann sou si wi ou non se yon kondisyon te rankontre.
Se konsa, youn nan kondisyon sa yo ke nou te gen itilize anpil fwa nan kou sa a se nan
si, lòt moun, kondisyon si, ak lòt bagay.
>> Isit la nan yon egzanp sou kouman ou ta ka sèvi ak sa a.
nenpòt moun ki konnen diferans ki genyen ant jis lè l sèvi avèk si deklarasyon tout
wout la desann vèsè si, lòt moun, si, ak lòt moun konbine?
Wi?
>> ODYANS: [fèbl].
>> Oratè 1: Egzakteman.
Se konsa, si mwen te gen si tout wout la desann sa a fason, menm si retounen kondisyon sa a
vre, li ap toujou kontinye tès de kap vini an.
Lè nou konsidere ke, ak yon lòt moun-si, yon lòt moun deklarasyon, si youn nan retounen vre,
lòt moun yo pa fè tès.
Nenpòt kesyon sou sa?
Fre.
>> Se konsa, ou sèvi ak yon lòt moun si-nan yon lòt moun deklarasyon si ou konnen ke li ka sèlman
dwe youn nan ka sa yo.
Se konsa, nou konnen si x se pi piti pase 0, li nan definitivman pa pral fè
pi gran pase 0.
>> Apre sa, yon lòt eleman debaz ki nou te aprann yo se pasan.
Nou gen twa kalite pasan.
Pou pasan, pandan y ap pasan, epi fè pandan y ap pasan.
Epi jeneralman, lè ou chita desann nan ekri yon bagay, ou gen deside
ki nan twa a ou vle itilize.
Se konsa, ki jan nou deside ki youn?
>> Nou jeneralman sèvi ak yon pou bouk si nou konnen konbyen fwa nou vle repňte
nan yon bagay oswa konbyen fwa nou vle fè yon travay.
Nou itilize pandan y ap pasan si nou bezwen kèk kondisyon yo dwe vre kenbe kouri.
Apre sa, nou itilize fè pandan y ap trè menm jan ak pandan y ap, men nou vle Kòd nou yo kouri nan
pi piti yon sèl fwa.
>> Se konsa, pandan, kèlkeswa sa se nan Se pou nou fè a pral toujou kouri omwen yon fwa.
Lè nou konsidere ke, ak pandan y ap la, li yo pa gen dwa kouri nan tout si la
kondisyon la pa satisfè.
Nenpòt kesyon ak sa?
>> Se konsa, estrikti nan yon pou bouk.
Ou mesye gen tout wè sa a.
Ou inisyalize li.
Ou gen kèk kalite kondisyon.
Se konsa, pou egzanp, nou ta ka inisyalize kòm pou mwen egal 0.
mwen se mwens pase 10.
Apre sa, mwen + +.
Yon sèl trè senp ke nou te fè.
>> Pou yon bouk ti tan, Menm jan an tou, ou gen gen kèk kalite inisyalizasyon,
kèk kalite kondisyon, ak kèk kalite aktyalizasyon.
Se konsa, nou ka aplike pou bouk nou an tou kòm yon bouk pandan w ap itilize sa a.
Apre sa, Menm jan an tou ak yon fè pandan bouk, nou ta ka gen kèk inisyalizasyon,
egzekite yon bagay, mete li, ak Lè sa a, tcheke kondisyon an.
>> Se konsa, koulye fonksyon.
Nou mete tout bagay ansanm.
Nou ta ka vle ekri kèk kalite fonksyon.
Fonksyon komen ke ou ta ka te wè deja se prensipal la.
Main se yon fonksyon.
Li te gen yon kalite retou, Int.
Li te gen yon Non fonksyon, prensipal la.
Apre sa, li gen agiman, arg ak argv.
Se konsa, prensipal la se jis yon fonksyon.
>> Lòt fonksyon ou ta ka te itilize, printf - printf se yon fonksyon -
GetInt, toupper.
Men, sa yo rive yo te aplike pou nou pa
kèk kalite bibliyotèk la.
Si ou mesye sonje ki gen ladan bibliyotèk sa a CS50.h oswa nan
estanda Mwen / O bibliyotèk la.
Wi, kesyon?
>> ODYANS: Èske prensipal jis nannan nan c?
Èske li jis kalite [fèbl]?
>> Oratè 1: Kesyon an se si prensipal la se nannan nan c.
Apre sa, repons lan se wi, tout fonksyon gen yon fonksyon prensipal la.
Li nan kalite ki nesesè pou òdinatè a pou konnen kote pou kòmanse
kouri Kòd la.
>> ODYANS: Se konsa, ou pa t 'vle [fèbl]?
>> Oratè 1: No
Nenpòt lòt kesyon?
Fre.
Se konsa, jis tankou ou ka sèvi ak yon fonksyon ki nan ekri pou ou, ou ka tou
ekri fonksyon pwòp ou yo.
Sa a se yon fonksyon ki Yon moun ta ka te ekri a kalkile volim nan
nan yon q, pou egzanp.
Genyen yon kalite retounen isit la, nan ka sa a Int, non fonksyon nou q ak nou
lis paramèt.
>> Apre sa, sonje ke ou gen yo ekri done yo di ki kalite paramèt a ou vle
sèvi ak oswa lòt moun fonksyon an pa fè sa konnen ki kalite
paramèt mwen dwe aksepte.
Se konsa, nan ka sa a, nou vle yon nonb antye kòm opinyon nou an.
Se konsa, poukisa nou ta ka vle itilize fonksyon?
>> Premye a tout, gwo pou òganizasyon.
Yo ede kraze moute Kòd ou nan plis òganize fragman, epi fè
li pi fasil li.
Senplifikasyon.
Sa a se bon pou konsepsyon.
Lè w ap li yon moso nan Kòd ak fonksyon prensipal la se reyèlman,
reyèlman long, li ta ka pi rèd rezon ki fè sou sa k ap pase sou.
Se konsa, si ou kraze li desann nan fonksyon, li ta kapab pi fasil li.
Apre sa, ankò-kapasite.
Si ou gen yon ti moso nan kòd ki te ke yo te rele oswa kouri plizyè fwa,
olye pou yo reekri ki Kòd 10 fwa nan fonksyon prensipal ou, ou ta ka
vle resèvi li.
Lè sa a, chak fwa ou bezwen sèvi ak ki moso nan Kòd, rele fonksyon an.
>> Se konsa, koulye a si nou sonje tounen nan grafouyen, nou menm tou nou te pale osijè de yon konsèp kèk,
youn nan ki se anfile.
Thread se konsèp nan plizyè sekans nan kòd
egzekite nan menm tan an.
Se konsa, panse tounen nan jou yon sèl kote David te gen ou nèg konte sou kantite a nan
moun ki nan sal la.
>> Esansyèlman, sa ki te ale sou se tout nan nou mesye yo te
kouri fil apa.
Ak moun ki fil yo te vini ansanm jwenn kèk kalite repons lan.
Menm jan an tou, nan grafouyen, lè ou gen plizyè sprites, ou ta ka
gen yon chat ak yon chen.
Apre sa, yo ta dwe ansanm kouri Scripts pwòp yo.
Sa se yon egzanp nan anfile.
>> Ak lòt konsèp la ki te prezante nan grafouyen te evènman yo.
Ak evènman yo lè pati miltip nan Kòd ou kominike youn ak lòt.
Nan grafouyen, sa a te lè ou te itilize nan emisyon kontwòl ak Lè an mwen
Resevwa blòk.
>> Epi tou, nan Pwoblèm Set 4, nou te wè yon ti kras nan evènman yo tou.
Ou mesye ta ka te itilize bibliyotèk la Gevent.
Se konsa te gen yon fonksyon waitForClick nan kote ou te ap tann
pou itilizatè a klike sou.
Epi klike sou ou a, nan ka sa a, ta dwe evènman an epi tann pou klike sou se ou
evènman Handler.
>> Epi tou, pandan tout kouri psets ou ak ap travay sou psets ou a, ou
ka gen antre an kontak avèk kèk nan kòmandman sa yo.
Sa a se ki sa ou tape nan ou fenèt tèminal oswa kèlkeswa sa fenèt
ki montre moute sou modifye g ou a, esansyèlman, navige òdinatè ou.
>> Se konsa, pou egzanp, LS lis la sa nan yon anyè.
Fè anyè kreye yon nouvo dosye.
CD, chanjman anyè.
RM, retire, efase yon dosye oswa kèk anyè.
Lè sa a, retire anyè retire yon anyè.
>> ODYANS: [fèbl]?
>> Oratè 1: Yeah, asire w.
Padon, kesyon an te si ou ta sijere mete sa a
sou fèy akòdeyon.
Li ta kapab ede.
Si ou gen chanm nan, ou ka mete l 'sou.
Li la tou jis jeneralman bon ase sonje paske lè ou sèvi ak li
ou ta ka vle jis te li kè.
Ki pral fè lavi ou yon anpil pi fasil.
Eske se mwen reponn kesyon ou a?
>> Se konsa, koulye a, nou te pale yon ti kras yon ti tan sou bibliyotèk yo.
Men, de yo menm ki prensipal ki nou te ap lè l sèvi avèk byen lwen tèlman nan kou a yo
estanda Mwen / O ak cs50.
Ki kalite bagay sa yo yo enkli nan bibliyotèk la estanda mwen / O?
>> Yeah, byen lwen tèlman nou te itilize printf.
Nan cs50, nou te itilize GetInt ak GetString.
Apre sa, fisèl la di ki kalite done tou k ap pase yo dwe te deklare nan sa a bibliyotèk cs50.
Nou pral pale yon ti kras plis nan pwofondè sou ki jan bibliyotèk travay ak ki jan yo
kominike avèk rès la nan Kòd ou.
Men, moun yo se de yo menm ki prensipal ki nou te rantre nan kontak ak byen lwen tèlman nan
kou a.
>> Kalite.
Sa yo se bon sonje konbyen se chak kalite reprezante pa oswa ki jan
anpil bytes chak nan kalite mande pou -
Int, 4 bytes; Char, 1 multiple.
Flote se 4 bytes.
Ki sa ki se yon doub?
>> ODYANS: [fèbl].
>> Oratè 1: Yeah, se konsa yon flote men double gwosè a.
Ki sa ki sou yon tan?
>> ODYANS: [fèbl].
>> Oratè 1: OK.
Ki sa ki yon tan?
>> ODYANS: [fèbl].
>> Oratè 1: Yeah, double yon Int.
Wi.
>> ODYANS: [fèbl].
>> Oratè 1: Long [fèbl].
Lè sa a, yon se doub ki long lontan.
>> ODYANS: Non, pa gen okenn.
Yon tan se jis yon Int.
Sa depann de ki achitekti a anvan [fèbl] a
ak Int gen menm gwosè.
[Fèbl].
>> Oratè 1: Se konsa, yon long ak yon Int yo se menm bagay la.
Lè sa a, yon long long se doub Int la.
Fre.
Lè sa a,, ki sa ki kalite nan sot pase a?
>> ODYANS: pwente.
>> Oratè 1: Yeah, se konsa nou te aprann yon ti kras sou pwent.
Apre sa, kèlkeswa sa ki yon konsèy se montre - li te kapab fè yon etwal Char
oswa yon etwal Int -
li toujou 4 bytes pou yon konsèy.
Kesyon sou sa?
Wi?
>> ODYANS: [fèbl]?
>> Oratè 1: Se konsa, yon long ak yon Int yo menm bagay la tou nan sa a aparèy cs50.
>> ODYANS: aparèy la yo se konplètman ranplase.
>> Oratè 1: Yeah.
Se konsa, lè sa a yon se lontan lontan doub yon Int.
>> ODYANS: Sa a se ti jan a 32?
>> Oratè 1: 32 ti jan, yeah.
>> ODYANS: Se konsa, [fèbl]?
>> Oratè 1: Wi, si li fè sa pa klèman di, w
ta dwe asime yon ti jan 32.
>> ODYANS: Li ta di yon bagay tankou asepte yon
achitekti tankou aparèy la.
Pou 64 ti jan, bagay yo sèlman ki chanjman yo se lon ak endikasyon.
Yo tou de [fèbl].
>> Oratè 1: Wi?
>> ODYANS: Kesyon.
Se konsa, sou youn nan ti tès yo pratik, li mande sou yon Int siye.
Se konsa, kouman ki ta dwe detèmine soti nan yon Int [fèbl]?
>> Oratè 1: Yon siye nan se tou 4 bytes.
Men, sa ki se diferan sou yon siyen int ak yon Int siye?
>> ODYANS: [fèbl].
>> Oratè 1: Dwa.
Yon moun kapab reprezante valè negatif.
Men, ki jan li fè sa?
>> ODYANS: [fèbl].
>> Oratè 1: Yeah, l ap fè ekonomi 1 ti jan ki reprezante siy la.
Siyen la gen yon ti jan ki reprezante siy la.
Apre sa, siye jis se tout positifs.
>> ODYANS: OK.
Se konsa, ou di ke yon doub se de fwa gwosè a nan yon flote?
>> Oratè 1: Double se de fwa gwosè a nan yon flote, wi.
>> ODYANS: Ki jan fè yon konsèy nan yon tan long [fèbl]?
>> Oratè 1: Se konsa, kesyon an se ki jan fè konsèy la nan yon tan long -
ki jan se ke se sèlman kat bytes lè yon long lontan 8 bytes li yo.
Se konsa, sonje sa a se yon konsèy, esansyèlman, nan valè a baz anpil.
>> ODYANS: [fèbl].
>> Oratè 1: Yeah, se konsa yon konsèy se jis yon kote memwa.
Se konsa, li pa gen pwoblèm konbyen lajan espas ki konsèy ap montre yo.
Li sèlman bezwen 4 bytes kenbe tras nan ki kote memwa.
Nenpòt lòt kesyon?
Fre.
>> Se konsa, bagay la pase mwen gen se estanda pwodiksyon.
Ou ta dwe sèvi ak yo souvan ase ke ou ka sonje.
Men, sa a se lè nou itilize printf, pou egzanp.
Epi nou gen placeholders sa yo ki yo te rele kòd fòma.
>> Se konsa, pousan c Char, pousan mwen pou Int, epi nou ka tou itilize pousan d.
Li nan menm bagay la.
Men, jeneralman, nan CS50 nou eseye sèvi ak pousan mwen.
Pousantaj f pou flote.
Pousantaj LD pou lontan long ak pousan s pou fisèl.
>> Menm jan tou, nou ve yo te lè l sèvi avèk yon kèk nan sekans chape sa yo.
Pou egzanp, antislach n pou nouvo liy.
Sa a se jis pou lè w ap fòma Kòd ou a pou ekri ak lèt detache f.
Wi?
>> ODYANS: Ki sa ki pousan d pou?
>> Oratè 1: Se konsa, kesyon an se sa ki se pousan d pou?
Pousantaj d se pou antye.
Pousantaj d ak pousan mwen yo se menm bagay la.
>> ODYANS: Ki sa ki nan diferans ki genyen ant antislach n ak antislach r?
>> Oratè 1: Se konsa, kesyon an se sa ki nan la diferans ki genyen ant repèkisyon n ak
repèkisyon r?
Mwen panse ke antislach r se -
>> ODYANS: Se konsa, antislach r jis implique retounen nan konmansman an nan liy lan
san yo pa aktyèlman ale nan yon liy nouvo.
Se konsa, si ou enprime yon r antislach epi ou tounen nan konmansman an nan liy lan
Lè sa a, ou ekri ak lèt detache plis bagay, ou recouvrir bagay la sa a, se deja sou
[Fèbl].
Lè nou konsidere ke, n aktyèlman ale nan yon nouvo liy ak ale nan [fèbl].
>> Oratè 1: Oke, nenpòt lòt kesyon?
Tout dwa.
Mwen pral lage l 'yo ale nan Dann ki ap kontinye.
>> [Aplodisman]
>> DAN: Tout righty.
Se konsa, mwen pral pale sou yon lòt lajè ran de ide ki soti yon klas la ki
apeprè reprezantan nan semèn de ak kòmanse nan semèn twa kòmanse nan
ak Distribisyon, ki se jis yon fason pou trete yon valè de yon kalite sèten kòm
yon valè de yon kalite diferan.
Se konsa, nou ka fè sa ak charaktèr antye, flote antye, ak
lon tan a doub.
>> Tout bagay sa yo kapab itilize yo kòm fason nan trete kèk nimerik valè
mwens Char tankou kèk lòt nimerik valè.
Se konsa, gen kèk pwoblèm ak sa a, nan kou, ki vini lè ou jete
bagay sa yo tankou flote antye.
Se konsa, sa a se yon ti kras etranj.
Nou gen yon flote ki se 1.31.
Nou anpil anpil pitit li pa 10,000.
Lè sa a, nou ekri ak lèt detache li kòm yon Int.
Ki sa pwodiksyon sa a?
10,000 fwa 1.31.
Se konsa, 13,000, se ke devine a?
>> ODYANS: Mwen panse ke li nan 10,000.
>> DAN: Se konsa, mwen miltipliye li pa 10,000 anvan mwen depoze li.
>> ODYANS: O.
Pa t 'vle gen yon sèl 9 ak kèk 0 nimewo?
>> DAN: Ou ta ka gen kèk chif etranj.
Se konsa, dwa, li nan 1.3 fwa 10,000.
Se konsa, sa a, se 13,000.
Lè sa a siplemantè etranj -
>> ODYANS: 13.100.
>> DAN: 13.100.
Mèsi, Rob.
Apre sa, singularité siplemantè sa a -
9,9 sa a -
se tou senpleman paske Distribisyon sa a te fini awondi desann kote
li pa ta dwe genyen.
Yeah.
>> ODYANS: Distribisyon nan k ap pase apre nenpòt lòt bagay?
>> DAN: Se konsa, paske mwen gen sa a nan ekri ak lèt detache, li fè miltiplikasyon sa a anvan li
fè Distribisyon sa a.
>> ODYANS: [fèbl].
>> DAN: Mwen panse ke li ta jete an premye, yeah, ki ta dwe 10,000.
Nenpòt lòt bagay?
Fre.
Se konsa, sa a se 13.099.
Poukisa sa te rive?
Enpresizyon.
>> Flote yo pa pafè.
Yo kapab sèlman reprezante nonb nan yon sèten kantite figi enpòtan.
Se konsa, si nou enprime soti 8 fig frans SIG sou flote sa a, nou jwenn yon kalite
lèd nimewo gade.
Epi sa a, paske 1.31 pa kapab avèk presizyon ap reprezante pa senp
pouvwa nan de nan machin lan.
Se konsa, li fini moute pran pi pre a devine, ki fini moute
yo te yon ti kras ki ba.
Fè sans?
OK.
>> Koulye a, chanje yo se yon fason diferan pou fè deklarasyon kondisyonèl kote tout
nou pran swen sou se yon varyab sèl.
Se konsa, nan sa a egzanp patikilye, nou ap ap resevwa yon nonb antye ki soti nan itilizatè a.
Lè sa a, nou ap chèche a ki sa sa nonb antye ki pè se.
Assume, li nan nimewo ant youn ak kat.
Sa a ki sa nou ap mande pou.
>> Se konsa, ou fè yon switch nan non an varyab.
Lè sa a, ou mete kanpe ka posib valè li te kapab.
Se konsa, ka yon sèl, di li a ki ba.
Lè sa a, ou kase jwenn soti nan kondisyon an switch pou
ou pa kenbe prale.
>> Nan ka a pwochen -
Se konsa, ka de ak ka twa -
si li nan ka de li jis gout desann nan liy lan premye nan kòd li wè menm jan ak
ka twa jiskaske li wè yon ti repo.
Se konsa, rezon ki fè yo ou jwenn ka youn nan sèlman ekri ak lèt detache ba a se paske mwen
gen sa a ti repo isit la.
Si m ', di, inyore sa a kraze - si mwen voye kesyon detachman de sa a -
li ta ekri ak lèt detache ba, ak Lè sa a, li ta ekri ak lèt detache mwayen, ak Lè sa a, li ta kraze.
>> Se konsa, repo se yon pati enpòtan nan chanje kondisyon ak
yo ta dwe la.
Nenpòt ka ki pa deklare klèman fèt pa lantremiz default la
ka nan switch la epi yo ta dwe jete.
>> ODYANS: Se konsa, 1, 2, 3, ak 4 ta dwe n?
>> DAN: Valè ki n kapab.
Wi.
Yeah?
>> ODYANS: Se konsa, lè ou gen ki [fèbl]?
>> DAN: Ou ta ekri ak lèt detache ba, ak Lè sa a, li ta ekri ak lèt detache mwayen, ak
Lè sa a, li ta kraze.
>> ODYANS: Poukisa li ta ekri ak lèt detache mitan si [fèbl]?
>> DAN: Se konsa, tout bagay anba yon ka avan yon repo tonbe anba.
Se konsa, ka yon sèl ekri ak lèt detache se anba ka yon sèl menm jan se ekri ak lèt detache sa a yo.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: Se konsa, nimewo sa a se jis yon patikilye valè varyab sa a sa a
ka pran, dwa?
ki fè sans?
Yeah.
>> ODYANS: [fèbl]?
>> DAN: Wi, ka de ta ekri ak lèt detache mwayen ak Lè sa a, chire.
>> ODYANS: [fèbl]?
>> DAN: Mwen panse ke nenpòt ki?
Ki kalite done lòt èske ou kapab chanje plis pase?
>> ODYANS: Ou ka chanje sou nenpòt ki kalite done.
Men, li sèlman vle di anyen sou charaktèr ak antye ak lòt bagay tankou sa yo, paske
si w ap oblije chanje sou yon konsèy ki pa vrèman fè sans,
oblije chanje sou chay, si li menm se pou yo ou fè sa, paske nan k ap flote pwen
nan presizyon, ou ta pa vrèman vle fè sa de tout fason.
Se konsa, bèl anpil, jis antye ak charaktèr ak lòt bagay tankou sa.
>> DAN: Yeah, li nan lè ou gen eksplisit valè ke ou konnen, mwen panse, kapab
ke yon switch se aktyèlman itil.
Sa ki bon?
OK.
>> Dimansyon se ranje a ke yon te deklare varyab fin.
Se konsa, nan sa a ti moso ti kras nan kòd Mwen gen, li ta plen nan erè.
Ak rezon an ki mwen te deklare Int sa a mwen nan sijè ki abòde lan nan sa a pou bouk.
Lè sa a, mwen ap eseye referans ki mwen deyò nan ke pou sijè ki abòde bouk.
>> Se konsa, fondamantalman, ou ka panse osijè de sijè ki abòde kòm nenpòt ki bagay ki ou deklare
ak andedan yon seri aparèy òtopedik Curly sèlman egziste nan sa yo aparèy òtopedik Curly.
Men, si ou eseye epi sèvi ak varyab sa a deyò nan sa yo aparèy òtopedik Curly, ou pral
jwenn yon erè nan du a.
Yeah?
>> ODYANS: Se konsa, yon sèl sa a pa travay?
>> DAN: Sa a pa travay, repons lan se wi.
Kòd.
Chèn yon Char *.
Yo ap ekzakteman menm bagay la.
Yo yo se jis pwent karaktè.
Ak nenpòt strings ki di ou gen ta dwe fini ak antislach zewo, ki se jis
yon konvansyon c.
>> Li te rele Terminator a NULL.
Apre sa, NULL -
kapital N, kapital U, kapital L, kapital L -
se pa menm bagay la tou kòm nan NULL Terminator.
Sa a se yon konsèy.
Sa a se yon karaktè.
Yo trè diferan.
Sonje li.
Li pral sou egzamen an, pwobableman.
Mwen pa te wè egzamen an.
Yeah?
>> ODYANS: Se konsa, NULL se, di, konsèy la?
>> DAN: Wi.
>> ODYANS: Ki sa [fèbl]?
>> DAN: Si, di, se malok rele lè ou pa gen ase memwa yo ka resevwa
tou sa gwosè w ap mande pou li a, malok ap retounen NULL.
Li nan, fondamantalman, nenpòt lè yon fonksyon se sipoze retounen yon konsèy, ou
bezwen tcheke kont NULL paske NULL se yon trè bon -
li nan, sòt de, valè fatra.
Li se yon zewo osi lwen ke pwent ale.
>> Chak fwa ou rele yon fonksyon, ki retounen yon konsèy.
W ap ale nan vle tcheke yo dwe asire w ke ke konsèy se pa NULL
paske NULL se trè komen.
Li nan sòt de yon retou fatra.
Se konsa, si yon bagay pa t 'ale dwat, jis retounen NULL pito.
>> ODYANS: [fèbl]?
>> DAN: Wi, e ke sa a sa a.
>> ODYANS: [fèbl]?
>> DAN: korektè li kòm sa a.
Li nan Terminator la NULL.
Li nan miniskil N-U-L-L si w ap òtograf li.
>> ODYANS: Apre sa, mwen jis te ale retounen lakay yo epi *** li.
Men, si ou eseye mete yon pwen k ap flote valè nan yon switch, li pral rele nan ou
li di yo: deklarasyon mande pou ekspresyon nan kalite nonb antye ki pè.
>> DAN: Gen ou ale.
Men, yeah, sa ki te kesyon an ankò?
>> ODYANS: [fèbl]?
>> DAN: Se konsa, kapital N, kapital U, kapital L, kapital L se yon bagay c vrè.
Li se konsèy la NULL epi yo pral sèlman dwe trete kòm sa yo.
Ou pa pral janm eseye epi eple la N. nil epi wè nenpòt ki
lòt fason pase sa a.
Yeah?
>> ODYANS: Se konsa, retounen nan Char max oswa yon bagay nan nòt yo, ta li
enkòpore fonksyon nan menm kòm [fèbl]?
>> ODYANS: Se konsa, w ap refere li a retounen max Char soti nan getchar, oswa
tou sa li se?
>> ODYANS: Yeah.
>> ODYANS: Yeah, se konsa jeneral la tèm pou tout bagay sa yo
yo se Sentinel valè.
Se konsa, tankou retounen Int max soti nan GetInt ak karaktè max soti nan getchar, li nan
sipoze tankou, tout dwa, si bagay sa yo retounen nan nou,
yon bagay ale mal.
>> Pou endikasyon, nou jis rive gen valè Sentinel sa a ke tout moun
dakò sou li.
Lè sa a se bagay la ou retounen Lè tout bagay ale mal.
Se konsa, Char max se sa nou ap itilize ki reprezante yon bagay
tankou NULL oswa getchar.
>> ODYANS: Se konsa, si w ap fè tès getchar, te kapab ou jis mete NULL?
T 'vle fè yon diferans?
>> DAN: Ou pa t 'kapab jis tcheke NULL.
Ou ta dwe tcheke Char max paske la valè retounen soti nan fonksyon an se
yon karaktè pa yon konsèy.
Yeah?
>> ODYANS: Kesyon sa a mande pou longè a fisèl.
ki gen ladan yo karaktè a NULL?
>> DAN: No
Epi sa a, aktyèlman ki jan fisèl longè konnen yo sispann paske li ale nan
etalaj ou nan karaktè jouk li wè yon karaktè NULL.
Lè sa a, li a tankou yo, tout dwa, mwen fè.
>> ODYANS: [fèbl] senk?
>> DAN: Hello ta dwe senk.
Oui.
Se konsa, ranje yo kontinyèl blòk nan memwa.
Yo gen aksè enstantane lè li di nan non nan etalaj la ak Lè sa a, nan Curly
aparèy òtopedik, kèlkeswa sa endèks ou vle ale a, yo ap Catalogue soti nan zewo a
longè a nan etalaj la mwens 1.
>> Apre sa, yo ap deklare pa ki kalite a bagay ke w ap estoke nan la
etalaj, non an nan etalaj la, ak Lè sa a, tou sa gwosè a se nan ki etalaj.
Se konsa, sa a se yon etalaj Char longè sis ki gen valè sa yo.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: Yeah.
>> ODYANS: [fèbl]?
>> DAN: Si ou gen ki sa ki pwal nan etalaj la deja fè fè yo.
Se konsa, ou ta ka presize sa a olye pou kòm, di, Char, kèlkeswa sa non an nan ou
etalaj se, parantèz vid egal Curly atèl H vigil E vigil L vigil L vigil
N. O vigil NULL ak Curly atèl.
Sa ta travay tou kòm yon deklarasyon.
>> ODYANS: [fèbl]?
>> DAN: Lè sa a, ou bezwen gen gwosè a deja fè fè yo.
>> ODYANS: [fèbl]?
>> DAN: Wi.
Tout righty.
Kòmandman liy agiman yo se yon fason pou ap resevwa enfòmasyon nan men itilizatè a kòm
agiman prensipal la.
Main pran de agiman.
Nimewo a nan agiman ki se ke yo te pase sou liy lan lòd ak yon
vektè fisèl oswa yon etalaj fisèl nan tout nan agiman yo.
>> Se konsa, si mwen, di, rele yon fonksyon tankou yon dot soti 1 espas, 2 espas, twa,
arg ta dwe 4.
Apre sa, argv a 0 ta dwe yon dot deyò.
Argv1 ta dwe 1.
argv2 ta dwe 2. argv3 ta dwe 3, nan ki ka an patikilye.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: eleman nan sot pase a nan etalaj la paske etalaj la se longè arg plis
youn nan argb, eleman ki sot pase a se konsèy la NULL.
Li se arg plis 1.
Se konsa, nan ka a ke mwen jis te di, li ta dwe argv 0 a se yon dot deyò.
argv 1 se 1. argv2 se 2. argv 3 se 3.
argv 4, ki se youn pi gwo pase arg ta dwe NULL.
>> Epi sa a, konsèy la NULL.
Wi.
Epi sa a, paske fil se yon etwal Char se yon konsèy.
Se konsa, li gen yo dwe di ki kalite a menm.
Yeah?
>> ODYANS: De kesyon.
Se konsa, yon sèl, sa ki nan diferans ki genyen ant sa a ak GetString lòt pase yon kalite
nan motè a itilizatè?
Apre sa, de, se li ki estoke nan memwa ki sot pase ou a?
Se konsa, tankou, GetString ta dwe [fèbl]?
>> DAN: Ki kote se li ki estoke?
Mwen pa konnen kote li ki estoke.
>> ODYANS: Se konsa, aktyèlman, ou konnen ki jan nenpòt ki fonksyon ou rele li nan agiman
yo estoke nan chemine a?
Se konsa, arg ak argv yo se agiman prensipal ak yo sou chemine a, oswa reyèlman
jis anwo a ki sa ou panse kòm kòmanse nan chemine a.
Ki sa ki te pati nan lòt nan kesyon an?
>> ODYANS: Se konsa, sa ki nan [fèbl] a?
>> DAN: Yeah, li nan jis yon fason diferan pou trape enfòmasyon nan men itilizatè a.
Sa a yon sèl la yon ti kras pi efikas ak li nan handier pou Scripts paske ou
ka jis pase agiman prensipal ou fonksyon olye ke gen yo rete tann
pou itilizatè si ou pa gen okenn itilizatè.
>> ODYANS: Apre sa, yeah, jwenn strings ta dwe [fèbl].
Li ta sere bagay la ou bezwen.
>> DAN: Yeah?
>> ODYANS: [fèbl]?
>> DAN: Wi, argv 0 toujou gen ladan a dot koupe nan apèl la fonksyon.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: Wi, chak nan agiman yo nan te fini nan karaktè NULL paske yo
yo se strings.
>> ODYANS: [fèbl]?
>> DAN: Wi, argv arg se yon konsèy NULL.
>> ODYANS: [fèbl]?
>> DAN: Oh yeah.
Yeah, regrèt.
>> ODYANS: Se konsa, [fèbl]?
>> DAN: Se konsa, kesyon an se si ou te gen an liy lòd dot koupe yon dot soti 1, 2,
ta ki kantite liy lòd agiman gen de oswa li ta kapab pran twa?
>> ODYANS: Mwen panse ke li pa fè sa reyèlman gen pwoblèm.
Mwen gen tandans di, o, ou pa t 'pase nenpòt ki liy agiman lòd lè,
Li evidan, ou rele fonksyon an.
Se konsa, mwen gen tandans yo awotvwa eskli nan fonksyon soti nan liy la bay lòd
agiman menm si li nan enkli nan argv.
>> DAN: Men, si li te nan egzamen an -
yeah - epi tou li si ou di yon bagay tankou arg egal 3,
w ap nan kanpe san danje.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: Mwen panse ke si olye pou yo rele sa a nan arg ak tout kòd argv parantèz
men kenbe kalite yo menm ak jis rele yo yon bagay diferan tankou yon
ak b, ta li toujou ap travay?
Epi li ta ap travay toujou, ou ta jis -
olye pou yo lè l sèvi avèk arg - ou ta sèvi ak yon ak b.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: Se konsa, kesyon an ki GetString se ale nan magazen memwa nan pil wòch la
paske GetString se Char *.
Li estoke memwa nan pil wòch la paske li rele kounye a malok nan aktyèl la
aplikasyon nan GetString.
OK, deplase sou.
>> Sekirite Sosyal.
Se konsa, yo dwe se vre wi: ki an sekirite, ou konte sou pa gen okenn yon sèl ak ou pèmèt pa gen yon sèl aksè a nenpòt ki
nan enfòmasyon ou, ki se poukisa tout moun ap bati machin pwòp yo,
sistèm pwòp fonksyònman yo, tout yo pwogram nan grate, e evidameman
pa konekte nan nenpòt lòt machin atravè entènèt la.
Se konsa, òdinatè yo se sekirite.
Yo te reyèlman yo ye.
Nou dwe fè lòt moun konfyans.
>> Apre sa, lide a nan sekirite se ke w ap ap eseye limite kantite lajan an nan
fè konfyans ke ou bezwen.
Ak youn nan mwayen sa yo ou fè sa se nan chifreman.
Chifreman se, esansyèlman, nou gen sekrè.
>> Pafwa nou gen yo pase sekrè nou mache nan, di, entènèt la oswa
lòt bagay.
Apre sa, nou pa vle moun yo konnen sekrè sa yo.
Se konsa, nou ankripte sekrè nou an, nan yon fason ke nou espere pa gen yon sèl kapab konnen ki.
>> Se konsa, nou itilize -
nan kou a nan klas sa a -
bagay sa yo tankou Seza tande kòz sekrè a ak [Fèbl] yo, ki se tou de trè, trè
fason anksyeu nan chifreman bagay sa yo.
Yo ap pi fasil yo konnen ki sa yo ye epi kisa sekrè ou yo.
Mond reyèl la sèvi ak pi plis konplike chifreman rapid.
Apre sa, nou pa pral jwenn nan pi plis pase sa.
>> Debogaj.
Gdb ki pi bon an.
Mwen pral konsantre sou sa a ankò.
Sèvi ak gdb tout tan tout tan an chak tan ou gen yon pwoblèm.
Kòmandman sa yo itil nan gdb yo kraze, ki ou pase swa yon liy
nimewo, yon non fonksyon, esansyèlman ki kote nan Kòd ou, ou ta vle sispann,
epi yo dwe kapab pran kontwòl.
>> Ekri an lèt detache pran yon varyab ak simagri soti kèlkeswa sa ki varyab se nan ki
pwen nan ekzekisyon ou.
Next deplase ekzekisyon ou ansanm yon sèl etap.
Apre sa, etap etap andedan yon fonksyon nan ekzekisyon ou.
>> Lòt bagay sa yo yo kouri, ki se ki jan ou aktyèlman kouri Kòd ou.
Kontinye pran tout etap ki nesesè pou li ale nan pwen an kraze kap vini an.
E genyen anpil anpil moun, anpil lòt moun.
Gade yo moute.
Yo ap gwo.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: Wi, ki se yon debugjeur.
Se konsa, yon debugjeur se yon pwogram ki pèmèt ou debug pwogram ou an.
Li pa yon pwogram ki jwenn pinèz pou ou, menm si ke ta gen gwo pouvwa.
>> Ak dènye pou m 'se rechèch la.
Se konsa, ki kalite rechèch ke nou te pale sou nan klas sa a se rechèch lineyè,
ki se jis ke ou gade nan chak eleman nan espas ki la rechèch la, yon sèl
eleman nan yon moman, jiskaske ou jwenn sa ki w ap chèche oswa jiskaske ou rive nan
fen a nan espas rechèch ou an nan ki pwen ou di ke ou pa t 'kapab jwenn
eleman nan ke ou te kap chèche.
Lè sa a pran nan pi bon tan konstan, ki se 0 a 1 ak nan pi move lineyè
tan, ki se 0 nan n.
>> Binè rechèch la, ki bezwen eleman miserable.
Ou ale nan mitan an nan eleman ou a, wè si eleman ki w ap chèche
se pi gwo oswa pi piti pase eleman nan ou nan mitan yo.
Li li a pi gwo, ou di ke anba a nan espas rechèch ou an se ou
kote kounye a, mitan an, epi ou rekòmanse pwosesis la.
Si li la pi piti, ou gade di sa - a wi, sa ki nan ale?
>> ODYANS: [fèbl]?
>> DAN: Wi.
Nenpòt ki sòt de sòt sa a te anseye nan klas la se jis jwèt pou tès la.
>> [Ri]
>> DAN: Apre sa, lefèt ke ou pa te gen fè li pou yon pwoblèm mete, li nan jis
jwèt pou tès la.
>> ODYANS: Èske nou ka ale sou li ki jan yo -
>> DAN: Li pral fè wout sou.
>> Oratè 2: Kòd aktyèl la pou [Fèbl] se sou study.cs50.net.
Se konsa, si ou gade nan pwoblèm nan pratik nan paj an unifye sòt de
study.cs50.net, gen se kòd la pou mete ann aplikasyon unifye sòt.
Se konsa, ou pa bezwen aplike li tèt ou aswè a.
Men, asire w ke ou konprann li olye pase jis memorize li.
>> ODYANS: [fèbl]?
>> Oratè 2: paj la unifye sòt sou study.cs50.net, gen yon pratik
pwoblèm sa a, si ou klike sou atravè nan pwoblèm, nan fen a anpil gen yon
solisyon, ki se unifye la sòt aplikasyon.
Men, asire w ke ou konprann li olye ke sèlman memorize li
oswa kopye enfòmasyon l '.
>> ODYANS: Ak yon parfe ki valab pwoblèm pou egzamen an ta dwe
yon bagay tankou isit la nan yon lis.
Ki sa ki lis sa a sanble apre yo fin yon sèl etap yo chwazi sòt oswa
sòt ensèsyon oswa kèlkeswa sa.
Yon iterasyon plen nan lis la.
Se konsa, menm si ou pa fini ki bezwen Kòd pou li, ou bezwen konprann li
ase yo konnen ki jan li pral yo dwe modifye etalaj sa a.
>> DAN: Sa a li pou mwen.
>> [Aplodisman]
>> LUCAS: Alo tout moun.
Non mwen se Lucas.
Mwen pral pale sou rkursyon yo, tout kalite sa yo ke nou te aprann, ak yon
ti kras nan tout endikasyon.
OK?
Se konsa, premye a tout moun, rkursyon.
Kisa sa vle di yo di ke yon fonksyon se repetitif?
>> ODYANS: Mande tèt li.
>> LUCAS: OK, rele tèt li, wi.
Se konsa, tankou foto sa a, pou egzanp.
Se tankou foto a andedan nan yon foto ak sou sa.
Se konsa, pou egzanp, ou ka gen - kòm Dann ki te ap pale de binè rechèch la.
Yon fason binè pou rechèch la se repetitif se lefèt ke w ap
ap eseye jwenn yon nimewo.
Se konsa, ou ale nan mitan yo.
Lè sa a, ou tcheke si nimewo yo gen nan bò gòch la ak nan bò dwat la.
>> Lè sa a, si ou jwenn soti nimewo a se pral fè sou bò gòch la, li nan menm bagay la tou
bagay tankou fè rechèch la ankò men jis sou bò gòch la nan lis la.
Se konsa, sa a, se li montre kouman li son tankou li nan repetitif.
Se konsa, Se poutèt sa ou nèg gen repetitif solisyon pou unifye sòt.
>> OK, se konsa isit la nan yon egzanp.
Se konsa, kite a di ke mwen vle yo chwazi tout nimewo yo nan 1 rive nan n.
Mwen ka reyalize ke sòm total la nan n nan nonb ki se n plis n mwens 1 jiska 1.
Men, lè sa a, si mwen gade nan n mwens 1 plis n mwens 2 plis 1, ki nan menm bagay la tou
bagay tankou adisyon nimewo jiska n mwens 1.
Se konsa, mwen ka di sòm total la nan yon sòm egal egal n plis sòm total la nan n mwens 1.
ki fè sans?
>> Apre sa, mwen menm tou ta gen yon lòt bagay rele ka a baz, ki se ki
sòm total la nan nimewo ki moute a zewo ta dwe zewo.
Se konsa, le pli vit ke mwen jwenn yo nimewo a zewo, mwen sispann konte.
ki fè sans?
>> Se konsa, isit la nan yon egzanp sou kouman Mwen ka aplike sa.
Se konsa, mwen gen fonksyon sa a nan kèk.
Sa pran yon n nonb antye ki pè.
Se konsa, isit la m 'premye tcheke si n se mwens oswa egal a zewo.
Se konsa, si li nan mwens oswa egal a zewo, mwen retounen zewo, ki se ka baz nou an.
Sinon, mwen ka jis retounen n plis sòm total la nan nimewo ki soti nan
youn nan n yon sèl mwens.
Fè sans?
OK.
>> Se konsa, isit la nan sa li sanble.
Ou gen sòm nan 2 egal 2 plis sòm total la nan 1.
Se konsa, kèk nan 1 se 1 plis la sòm nan 0, ki se 0.
Fè sans?
Se konsa, si nou gade nan chemine a nan ou pwogram, sa a se sa li sanble.
>> Premyèman, nou gen fonksyon prensipal la.
Lè sa a, fonksyon prensipal rele sòm 2.
Lè sa a, sòm 2 ki pral di, o, sòm total 2 egal 2 plis sòm total la nan yon sèl.
Se konsa, mwen ajoute sòm de 1 a chemine a.
Apre sa, sòm total la nan 1 ki pral rele sòm de 0, ki se tou yo pral te ajoute
chemine a.
Lè sa a, chak nan timoun sa yo ki sou tèt yon lòt gen retounen
anvan yo menm ki lòt ka kenbe prale.
>> Se konsa, pou egzanp, isit la, sòm total nan 0, premye, ki pral retounen 0.
Lè sa a, chwazi sòm de 1.
Lè sa a, sòm nan 1 se ale nan retounen 1 a sòm de 2.
E finalman, sòm de 2 ki pral retounen 3 a prensipal la.
ki fè sans?
>> Li nan reyèlman enpòtan ke ou konprann ki jan chemine a ap travay epi eseye
wè si li fè sans.
OK, se konsa klasman.
Se konsa, poukisa se klasman ki enpòtan yo, premye nan tout?
Poukisa nou dwe pran swen?
Nenpòt moun ki?
Ban m 'yon egzanp?
Yeah?
>> ODYANS: [fèbl].
>> LUCAS: Yeah, OK.
Se konsa, ou kapab fè rechèch pi plis efikasite.
Sa se yon bon fason.
Se konsa, pou egzanp, nou gen yon anpil nan bagay sa yo, aktyèlman, nan lavi nou ki
yo Ranje.
Pou egzanp, diksyonè.
>> Li enpòtan anpil yo gen tout la mo nan kèk kalite nan lòd ke nou
kapab jwenn aksè fasil.
Se konsa, sa a, se sa li t'ap di.
Ou kapab fè rechèch pi plis efikasite.
Panse a ki jan difisil li ta gen yon diksyonè nan ki mo sa yo se nan
lòd o aza.
Ou ap gen fè yon gade nan, bèl anpil, tout pawòl sèl jiskaske ou jwenn nan
mo ki w ap chèche.
>> Si w ap lè l sèvi avèk Facebook tou, lè w ap chèche nan zanmi ou, w ap
ale nan wè ke Facebook mete ou pi pre zanmi nan sou tèt nan yo menm ki
ke ou pa pale ak ke anpil.
Si ou ale tout wout la nan pati anba a nan lis zanmi ou, w ap ale nan wè
moun ki pwobableman ou pa fè sa menm sonje ke w ap zanmi avèk yo.
Epi sa a, paske Facebook kalite zanmi ou ki baze sou ki jan
fèmen ou se nan men yo.
>> Se konsa, òganize done.
Epitou pokemon.
Se konsa, ou wè ke tout Pokemons gen nimewo.
Epi sa a, tankou yon fasil fason pou jwenn aksè nan done.
>> ODYANS: Antre nan pokemon.
>> LUCAS: Yeah.
>> ODYANS: [fèbl].
>> LUCAS: Oui.
OK, se konsa sòt seleksyon an.
Seleksyon sòt ki pral chwazi a pi piti valè triye nan yon lis chak
tan nan chak iterasyon.
Li nan kalite tankou sòt nan sa w'ap fè nan tèt ou lè w ap eseye
sòt yon lis nan men ou.
>> Fondamantalman, tout sa ou fè se ou gade pou yon nimewo pou ki pi piti a.
Ou mete l 'nan lis la klase.
Lè sa a, ou gade pou nan pwochen pi piti kantite.
Lè sa a, ou kontinye ap fè ki ak sou sa.
>> Se konsa, sòt seleksyon se fondamantalman ou chwazi chak fwa pi piti a
triye valè.
Mete nan fen tri a yon pati nan lis la.
Apre sa, kontinye ap fè sa.
Se konsa, kite a byen vit wè sa ki sa a sanble.
Se konsa, isit la nan Ranje a ak lis triye.
>> Se konsa, pou klase an nan lis, li nan okòmansman vid.
Lè sa a, mwen pral chwazi a pi piti kantite isit la, ki se 2.
Se konsa, mwen jwenn nimewo a 2 ak mwen mete nan devan la nan lis la.
Lè sa a, mwen gade pou pwochen pi piti a eleman, ki se 3.
Se konsa, mwen mete l 'nan fen a nan lis la klase.
Lè sa a, mwen kontinye ap fè sa.
Mwen jwenn 4 li mete l 'nan fen an.
Jwenn 5 li mete l 'nan fen an.
>> Apre sa, gade nan ki jan tout nan sa yo fwa ki M ap di mete l 'nan fen an se,
fondamantalman, échanjé de valè.
OK?
Lè sa a, yon sèl ki sot pase a, ou jis gen yon sèl eleman plis ankò.
Se konsa, li deja klase.
>> OK, se konsa ensèsyon sòt.
Sòt ensèsyon w ap ale nan yo te genyen tou ke bagay ki gen yon klase epi
yon lis triye.
Bagay la sèlman se ke chak fwa ke w ap ajoute yon eleman Ranje a
lis, ou jis chwazi eleman ki se la devan lis la triye.
Lè sa a, w ap ale nan jwenn sa pozisyon li ta dwe nan Ranje a
yon pati nan lis la.
>> Ann wè sa ki sa a se konsa sa a fè plis sans.
Se konsa, okòmansman, pou egzanp, mwen ap eseye insert nimewo twa a nan la
Ranje yon pati nan lis la.
Se konsa, lis la pa gen anyen.
Se konsa, mwen ka jis mete nimewo a 3.
>> Koulye a, mwen vle ajoute nimewo a 5 a pati nan tri nan lis la.
Se konsa, mwen gade nan nimewo a 5.
Mwen remake ke li nan pi gran pase 3.
Se konsa, mwen konnen ke li gen yo dwe apre 3.
Se konsa, mwen mete 3 ak 5.
>> Lè sa a, mwen vle insert nimewo 2.
Mwen remake ke nimewo 2 se aktyèlman dire Lè sa a, tou de 3 ak 5.
Se konsa, mwen aktyèlman gen yo mete tout bagay sa yo nan fason depi nan konmansman an nan lis la.
Se konsa, mwen gen, kalite, chanjman tout la eleman nan lis la klase Se konsa, mwen kapab
fè plas pou nimewo 2.
>> Lè sa a, mwen wè nimewo a 6.
Mwen wè ke li ta dwe apre 5.
Se konsa, mwen mete l 'la.
E finalman, Mwen gade nan nimewo a 4.
Apre sa, mwen remake li ta dwe gen ant 3 ak 5.
Lè sa a, mwen mete l 'gen ak chanjman tout lòt eleman yo.
Fè sans?
>> Jarèt Triye.
Se konsa, sòt ti wonn se fondamantalman sa w ap pral fè - nou rele li ti wonn
sòt paske ou ale nan lis la - li la aktyèlman pi bon si mwen jis montre
ou renmen sa a -
ak w ap ale nan konpare nimewo adjasan.
Apre sa, w ap ale nan swap yo pozisyon si yo pa ap
nan lòd ki dwat.
>> Se konsa, fondamantalman, ki sa ki pwal rive se isit la, pou egzanp,
ou gen 8 ak 6.
Ou konnen lòd la tri pral aktyèlman ap 6 ak 5, dwa?
Se konsa, w ap ale nan swap lòd yo.
Lè sa a, mwen wè 8 ak 4 isit la.
Apre sa, mwen fè menm bagay la.
Mwen swap ankò.
E finalman, 2 ak 8.
Mwen menm mwen te swap yo.
>> Sa yo rele li jarèt Triye paske apre chak nan itérations sa yo, aktyèlman,
nimewo a pi gwo nan lis la vin tout wout la nan fen a nan lis la.
ki fè sans?
Paske li kenbe échanjé li ak deplase li nan bò dwat la.
>> OK, se konsa sa a se dezyèm iterasyon la.
Li ta menm bagay la.
Mwen pral fè yon sèl swap ak Lè sa a, yon sèl ki sot pase a.
Mwen ke pa gen okenn echanj epi li se lis la klase.
Se konsa, nan Triye jarèt, nou fondamantalman kenbe ale atravè tout lis la ak échanjé
bagay sa yo jouk tan mwen remake ke mwen pa t 'fè nenpòt ki echanj fè sa iterasyon, ki
vle di ke lis se deja klase.
Fè sans?
>> Se pou nou pale yon ti kras sou kouri tan.
Se konsa, ou mesye sonje Big O, Omega, ak Theta?
Yeah?
OK, ki sa ki Big O, premye nan tout?
>> ODYANS: [fèbl].
>> LUCAS: Yeah, sa yo rele li yon ka pi mal ègzekutabl, ki jis vle di ke li nan
konbyen lajan ou espere pwogram nan yo pran kouri.
Tankou, an tèm de -
nan ka sa a - n.
Nimewo a nan eleman nan la lis nan ka ki pi mal la.
Tankou, nan ka ki pi mal la posib.
>> Se konsa, pou Triye jarèt, pou egzanp, nou gen gwo O nan kare n.
Poukisa nou bezwen gen sa?
Poukisa se jarèt Triye Big kare O n?
>> ODYANS: [fèbl].
>> LUCAS: Yeah, se konsa ka ki pi mal yo pral ke mwen pral oblije fè itérations n.
Se konsa, chak nan itérations yo ki pral pote eleman nan pi gwo nan fen a
nan lis la.
Se konsa, ka ki pi mal la se ke mwen gen fè bagay n fwa.
Apre sa, pou chak nan sa yo fwa, mwen gen fè echanj n paske mwen gen yo konpare
chak de eleman.
Se konsa, Se poutèt sa li a n okib paske li nan n fwa n.
>> Lè sa a, sòt seleksyon tou n kare se paske, pou chak iterasyon, mwen gen
gade nan chak eleman yon sèl nan lis la.
Lè sa a, jwenn pi piti a, ki vle di ke mwen gen yo
gade nan eleman n.
Apre sa, mwen dwe fè ke fwa n paske Mwen gen yo chwazi tout eleman ki n.
>> Yon sòt ensèsyon tou n kare se paske senaryo ki pi mal la ka ap
dwe, yon sèl, mwen gen insert nimewo n, dwa?
Se konsa, mwen deja konnen ke mwen pral gen itérations n.
Men, pou chak nan sa yo nimewo, si mwen te gen fè yon gade nan tout nan nimewo ki nan
lis la klase li mete l 'tout wout la nan devan an, ki pral n kare
paske li yo pral N fwa n ankò.
Fè sans?
Ki sa ki sou Omega?
>> ODYANS: [fèbl].
>> LUCAS: Se senaryo a ka pi byen.
Se konsa, li tankou, nan yon anpil nan fwa pou klasman, senaryo ki pi bon a se
lè se lis la deja klase.
Se konsa, ou pa reyèlman gen fè anyen.
Jarèt Triye gen pi bon an ka senaryo nan n.
ou nèg konnen poukisa?
>> ODYANS: [fèbl].
>> LUCAS: Yeah, si ou kenbe tras nan si wi ou non done rasyon te gen nenpòt ki echanj oswa
pa, si ou gen yon bagay tankou seri vre si te gen yon iterasyon, si nan
se lis deja klase, fondamantalman, sa ki pral rive se mwen pral
eseye swap chak de eleman adjasan.
Mwen pral wè ke pa gen okenn echanj.
Apre sa, mwen jis retounen touswit.
>> Se konsa, sa vle di ke mwen jis te gen nan ale nan lis la yon sèl fwa.
Se konsa, li n paske mwen gade nan eleman n.
Poukisa seleksyon sòt n kare?
>> Yeah, menm si se lis la klase, pou chak iterasyon nan sòt seleksyon, mwen
gen yo chwazi eleman minimòm-nan.
Se konsa, sa vle di ke mwen gen soti nan gade nan tout eleman ki nan triye la
lis epi jwenn minimòm la pou chak iterasyon.
ki fè sans?
>> Ak nepe ensèsyon se n paske se nan la ka sa a mwen ap eseye antre nan
nimewo ak tout nan nimewo ki, lè m ' eseye insert yo, mwen wè ke yo
se nan yon pozisyon dwat la.
Mwen pa gen yo ale tcheke tout lòt la nimewo nan lis la triye.
Se konsa, Se poutèt sa li pral n.
Fè sans?
Ak sa ki Theta?
>> ODYANS: [fèbl].
>> LUCAS: Ki sa ki, regrèt?
Di l 'ankò.
>> ODYANS: [fèbl].
>> LUCAS: Egzakteman.
Se konsa, ou ka wè ke se sèlman seleksyon ki estoke nan fuzyone sòt gen thetas.
Epi sa a, paske ou gen sèlman Theta si toude Big O ak Omega yo se menm bagay la.
OK.
E finalman, rantre sòt se nan boutèy demi lit n.
>> Lè sa a,, menm jan Dann yo t'ap di, rantre sòt se kalite tankou menm jan an ki
ou fè binè rechèch la.
Se konsa, ou jwenn lis la.
Apre sa, w ap ale nan koupe an mwatye.
Lè sa a, ou koupe yo nan pi piti mwatye.
Lè sa a, ou rantre nan trafik yo.
Ou mesye sonje ke, dwa?
OK, menm jan li t'ap di.
>> OK, endikasyon.
Se konsa, sa a se yon konsèy?
>> ODYANS: [fèbl].
>> LUCAS: Yon adrès.
OK.
Mwen konnen ke David montre yon pakèt moun sou videyo nan binky ak bagay montre
youn ak lòt.
Men, mwen renmen panse a endikasyon kòm senpleman yon adrès.
Se konsa, li nan yon varyab ki gen pou ki pral nan magazen yon adrès.
>> Se konsa, li jis varyab espesyal sa a ki se kat bytes lontan.
Sonje byen, konsèy nan anyen se toujou kat bytes tan pou 32-ti jan nou
machin pou ka a ak aparèy la.
Apre sa, li jis gen kote nan yon andedan varyab nan li.
>> OK, se konsa gen nan sa a memwa, fondamantalman.
Se konsa, chak blòk nan memwa aktyèlman gen yon mete etikèt sou, ki se adrès ki nan la
slotty memwa.
Se konsa, ki vle di ke mwen ka gen yon pwente konsèy
nenpòt nan adrès sa yo.
Se konsa, rezon an pou kisa nou pral sèvi ak endikasyon se si mwen gen yo sonje kote
ki yon varyab espesifik se yon memwa.
>> Apre sa, ou nèg sonje ke youn nan moun ki ka te si mwen gen yon fonksyon
si mwen gen aktyèlman vle ou swap pou ril, mwen aktyèlman
bezwen voye yon konsèy.
Se pa varyab la.
ou nèg sonje ke?
Diferans ki genyen ant -
ki sa ki non an?
Rele pa vo anyen ak rele pa referans, dwa?
>> OK, wi.
Se konsa, rele yo pa vo anyen.
Lè ou jis voye yon varyab fonksyone w ap sèlman voye yon valè.
Se konsa, w ap aktyèlman voye yon kopi nan varyab la.
Apre sa, pwogram ou an pa t 'kapab pran swen mwens sou si varyab la menm aktyèlman
fè yon kopi.
>> Apre sa, rele pa referans vle di ke Mwen aktyèlman voye yon kopi nan
konsèy ak sa yo ki varyab.
Se konsa, sa vle di ke M'ap voye a kote nan varyab sa a.
Se konsa, sans mwen gen kote adrès la nan la varyab, lè m'ap rele fonksyon an
ak endikasyon, mwen se kapab aktyèlman chanje done nan sa ki te nan prensipal la.
Fè sans?
>> Malgre ke, konsèy la se yon kopi, an konsèy toujou gen adrès reyèl la nan
varyab la ke mwen vle chanje.
Fè sans?
>> Se konsa, kreye endikasyon.
Sonje byen, konsèy la toujou gen kalite a ke li nan montre
pou ale ak pou Lè sa a, yon etwal.
Lè sa a, ou mete non an.
Se konsa, sonje ke chak fwa ou gen tou sa etwal, li la tankou yon konsèy
tou sa varyab tape ou te fè.
>> Se konsa, isit la nan zetwal, pou egzanp, li nan yon konsèy ak yon nonb antye ki pè.
Lè sa a, Char zetwal se yon konsèy etwal Char ak pou fè.
Yeah?
>> ODYANS: E si nou gen yon konsèy n etwal x.
Mwen konnen ki kreye yon konsèy x.
li tou deklare x yon nonb antye?
>> LUCAS: OK, se konsa lè ou di zetwal n x, ou pa ap kreye yon konsèy nan yon
varyab x.
W ap kreye yon konsèy yo te rele x.
>> ODYANS: [fèbl].
>> LUCAS: Se konsa, lè m 'di zetwal n x, mwen se li di yo: hey, nan memwa, mwen pral
jwenn youn nan twa bwat sa yo.
Apre sa, mwen pral di ke sa a pwal x, ki se
pral gen yon konsèy.
Apre sa, yon bagay enteresan sou endikasyon se ke nou di yo ke yo gen
4 bytes pou yon machin 32-ti jan.
Ak rezon an pou sa a se paske 4 bytes yo se 32-miyèt moso.
>> Ak machin ki gen 64 Bits aktyèlman gen endikasyon adrès
ki 64 Bits lontan.
Se konsa, li jis vle di ke gwosè a nan la adrès nan machin nan se diferan.
>> Se konsa, REFERANSE ak Dereferencing.
Gen de operatè yo ki ou nèg ta dwe sonje.
Premye an se komersyal.
Dezyèm nan se zetwal.
pa jwenn mele nan ki zetwal yo ak sa a etwal paske sonje ke, nan
ka sa a, ou gen zetwal n.
>> Se tankou yon bagay tout ansanm.
Gen nan pa gen etwal espas n.
Se konsa, li vle di ke li nan kalite la.
Sonje byen, lè ou gen zetwal nan varyab, w ap
pale sou kalite a.
>> Lè ou gen sèlman zetwal yo ak Lè sa a, nan Non nan varyab la, sa vle di ke
w ap dereferencing konsèy la, ki vle di ke w ap chèche a nan
konsèy, jwenn adrès la li nan montre, ale nan adrès sa a,
ak gade nan nenpòt lè ou gen la.
Se konsa, mwen di elèv mwen ki lè ou gen zetwal, ou ta dwe panse ke li nan
abrevyasyon la nan kontni nan.
>> Se konsa, si ou gen yon konsèy, epi ou fè zetwal konsèy, li la a
kontni nan konsèy la.
Se konsa, ou ale nan tou sa li te montre ak gade nan kontni an konstan.
Apre sa, comercial a se menm bagay la tou bagay tankou adrès la.
>> Se konsa, si mwen gen yon varyab yon - tankou, se pou yo di ke m 'te fè Int yon egal 3 -
si mwen vle jwenn adrès sa a nan varyab yon memwa, mwen ka jis fè
komersyal yon.
Se konsa, li adrès nan yon.
Fè sans?
>> Se konsa, isit la nan yon egzanp.
Sa a se manke Int b ak Int c.
Se konsa, Int yon egal 3 vle di ke Mwen pral pou yo ale nan memwa.
Apre sa, mwen pral jwenn yon plas epi li mete nimewo a 3 isit la.
>> Lè sa a, Int b egal 4.
Mwen pral fè menm bagay la.
Ale nan memwa, li mete yon nimewo 4 nan youn nan bwat yo.
Apre sa, Int egal 5.
Jwenn yon lòt bwat, li mete yon nimewo 5.
>> Se konsa, sa se liy sa a ap fè deyò? n etwal PA egal komersyal yon.
Se konsa, premye nan tout, n etwal PA.
Ki sa ki li fè la a?
>> ODYANS: [fèbl].
>> LUCAS: Yeah, se konsa n etwal PA, an premye, deklare yon konsèy rele PA.
Lè sa a, li la plase valè a nan ki konsèy yo dwe adrès la nan yon.
Se konsa, comercial yon.
Lè sa a, si m 'fè zetwal pb, sa a se yon PB zetwal?
>> Oh, regrèt.
Sa a se tou ki disparèt. n etwal pb.
Mwen vle di zetwal PC.
Mwen se konsa regrèt.
Li nan menm bagay la.
Men koulye a, mwen se bon AR kreye yon konsèy B ak Lè sa a, yon konsèy c.
Yeah?
>> ODYANS: [fèbl]?
>> LUCAS: Wi.
Se konsa, si ou ale nan memwa ak ou ale nan ti bwat la se sa ki endikatif pou PA,
w ap aktyèlman ale nan wè yon adrès nan yon.
OK?
Yeah?
>> ODYANS: [fèbl]?
>> LUCAS: Yeah, konsèy la se yon adrès.
Pa janm bliye sa.
Se tankou ki pi enpòtan an pati sou pwent.
Gen nan estoke ak adrès nan kèk varyab.
Nenpòt lòt bagay?
Nenpòt lòt kesyon?
OK.
>> Se konsa, Pointers ak matris.
Sonje byen lè m 'fè int etalaj 3, fondamantalman, ki sa mwen ap fè se mwen se, kalite
nan, deklare nan yon konsèy.
Se konsa, etalaj se kalite tankou yon konsèy nan yon kote espesifik nan memwa nan ki mwen
resevwa lajan twa fant pou nonb antye relatif.
ki fè sans?
>> Se konsa, lè m 'int etalaj 3, ki sa mwen se fè, fondamantalman, se kreye twa
fant nan memwa.
Se konsa, mwen jis jwenn twa fant nan memwa.
Se konsa, si m 'fè, lè sa a, yon etalaj zetwal, li fondamantalman vle di sa ki ekri nan etalaj,
ki vle di mwen efase konsèy la, m 'ale nan plas sa a ke li nan montre a,
ak mwen mete nimewo nan yon sèl.
>> Lè sa a,, si m 'fè zetwal etalaj plis 1, sa a, se menm bagay la kòm fè etalaj
parantèz yon sèl, ki jis vle di m 'ale nan plas la ke li nan montre nan.
Lè sa a, plis la 1 pran m 'chanjman yon sèl pozisyon.
Se konsa, mwen ale nan pozisyon sa a, aktyèlman, epi li mete nimewo a de.
>> Lè sa a,, finalman, lè m 'fè etalaj plis 2, mwen ale nan kote
pwente etalaj la nan.
Lè sa a, mwen deplase nan blòk memwa.
Lè sa a, mwen mete nimewo a twa isit la.
Yeah?
>> ODYANS: Se konsa, zetwal etalaj se tou senpleman li di pwen an trè premye.
Apre sa, ou ka ajoute 1, jis paske nou ap sèlman vrèman
Référansman ke premye adrès.
>> LUCAS: Yeah.
Poukisa nou, pou egzanp, di etalaj 0, etalaj 1, ak etalaj 2?
M ap di, poukisa ou fè 0, 1, 2, 3 olye pou yo 1, 2, 3?
Youn nan rezon ki se, yon sèl, òdinatè pwogramasyon pito yo kòmanse
konte soti nan 0.
De se paske lè ou fè etalaj 0, li nan menm bagay la kòm fè etalaj
plis 0, ki vle di mwen ale nan ki pozisyon, epi mwen pa fè sa
sote nenpòt blòk memwa.
Se konsa, mwen pa deplase nenpòt blòk memwa.
Yeah?
>> ODYANS: [fèbl]?
>> LUCAS: Se konsa, li te mande ki sa ki diferans ki genyen ant fè
sa a oubyen w ap fè malok.
Youn nan diferans ki genyen se ke Int etalaj 3 se kreye yon
etalaj sou chemine a.
Men, lè m 'fè malok, li kreye sou pil wòch la.
ki fè sans?
>> Se konsa, kouman malok aktyèlman ap travay?
Se konsa, poukisa nou menm bezwen sèvi ak malok?
Kalite du ou nan figi soti tout varyab yo ke ou te deklare.
Apre sa, li kreye espas pou tout nan yo nan chemine a.
Se konsa, tout nan varyab ou yo pral yo dwe yon kote nan chemine a.
Se konsa, isit la se anviwònman varyab yo.
>> Se konsa, fondamantalman, espas pou moun ki varyab nan memwa se atribye ba nan
konpile tan.
Se konsa, sa vle di ke òdinatè ou a gen konnen tout moun ki varyab
davans.
Li pa bezwen konnen ki sa valè w ap ale nan mete nan yo.
Men, li bezwen konnen kouman anpil memwa ou bezwen.
>> Men koulye a, kite a di ke, pou egzanp, w ap kreye yon etalaj oswa pran yon
fisèl ke w ap pran soti nan itilizatè a.
Ou pa konnen konbyen tan fisèl la a pwal, pou egzanp.
Se konsa, ou pa konnen egzakteman ki jan anpil blòk memwa ou asiyen, dwa?
>> Se konsa, li pa vrèman fè sans pou ou di mete 100 karaktè.
Lè sa a, sa ki si itilizatè a ekri 150?
W ap ale nan dwe vise.
>> Se konsa, fondamantalman, ou pa kapab asire w ke sou fason anpil memwa ou bezwen asiyen
lè ou konpile pwogram nan.
Ou jis konnen ke sou tan kouri.
Se konsa, Se poutèt sa ou gen pil wòch la.
Se konsa, pil wòch la ki pral gen memwa ke w ap allocation pandan la
dire nan kouri a nan pwogram nan.
>> Se konsa, fondamantalman, lè ou fè malok, ki sa ki w ap fè se allocation memwa nan
ègzekutabl, ki vle di ke w ap n ap deside dwa nan moman sa ke ou
ta dwe gen ki memwa.
Se konsa, sa a, se lè w ap allocation li.
ki fè sans?
>> Se konsa, sonje, chemine a gen varyab ke yo te kreye sou ransanble tan.
Lè sa a, pil wòch la gen varyab ke yo te kreye tankou ou ale
ak malok, pou egzanp.
>> ODYANS: [fèbl]?
>> LUCAS: Se konsa, GetString se ale nan rele malok.
Kite m 'pale sou malok, ak Mwen pral eksplike GetString.
Se konsa, malok se menm bagay la kòm alokasyon memwa.
Se konsa, li pral asiyen memwa sou pil wòch la.
Apre sa, li pral retounen yon konsèy kote yo te ke memwa resevwa lajan nan.
>> Se konsa, lè ou fè -
isit la pou egzanp -
n etwal konsèy.
Lè sa a, konsèy egal malok gwosè nan fwa pous 10.
Mwen kreye yon konsèy.
Lè sa a, mwen voye ke konsèy valè a nan konsèy la ki malok
se bay m '.
>> Se konsa, mwen mande malok ou ka asiyen espas pou 10 nonm antye.
Sa a ki sa li la di.
Apre sa, malok ban m 'tounen yon konsèy nan plas sa a.
Fè sans?
OK.
Mwen menm ak GetString se, fondamantalman, fè yon rele nan malok konsa ou ka asiyen
memwa pandan ègzekutabl.
>> Toujou sonje yo tcheke pou nil paske malok ki pral retounen nil
si li pa ka asiyen memwa.
Se pou nou di ke ou mande pou gen yon ridikil kantite lajan pou memwa.
Òdinatè ou a pa pral yo dwe kapab asiyen ke anpil.
>> Se konsa, malok se jis ale retounen nil.
Se konsa, toujou sonje yo tcheke si la konsèy ki ou te resevwa nan men malok se
nil oswa ou pa, paske, si li se, ou ta ka dwe dereferencing yon konsèy ak
sa ki lakòz defo bò.
E finalman, pa bliye memwa lib ou.
>> Malok se kreye memwa nan pil wòch la.
Apre sa, ou gen gratis memwa a anvan pwogram la fini.
OK, ki nan tout pou mwen.
Padon, Rob.
Mèsi.
>> [Aplodisman]
>> LUCAS: Nenpòt kesyon dènye anvan Rob vini?
Pa gen okenn?
Yeah?
>> ODYANS: Mwen pa t 'wè yon sèl sa a sou entènèt.
Eske ou te Uploaded li ankò?
>> LUCAS: Mwen panse ke Dave se transfere li byento.
>> Dave: Li pral afiche.
>> LUCAS: Li pral sou entènèt.
>> ODYANS: Se yo.
>> LUCAS: Se koulye a?
OK.
Yeah?
>> ODYANS: [fèbl]?
>> LUCAS: Wi, ou ta dwe gratis tout nan memwa ki mete nan pil wòch la.
>> ODYANS: [fèbl]?
>> LUCAS: Wi.
Nenpòt ki lè ke ou gen yon malok kilti, ou ta dwe gen yon kilti gratis
aprè ou sispann lè l sèvi avèk varyab sa a.
Se konsa, malok ak gratis yo toujou ansanm.
Pi bon zanmi yo.
Yeah.
Rob?
>> ROB: mwen pral ale byen vit.
Apre sa, tou, y ap videyo a dwe mete yo.
Mwen gen MIC la sou.
>> OK, se konsa semèn senk bagay.
Premye bagay nou genyen se chemine a.
Se konsa, sonje ke gen nan yon sèl chemine ankadreman pou chak aktif rele fonksyon.
Nou pwal wè ke nan yon dezyèm fwa.
Epi tou li sonje sa ki aktyèlman ale nan chak ankadreman chemine yo ale nan dwe
varyab lokal yo nan fonksyon nou an, agiman yo ke yo te pase nan nou an
fonksyon, ansanm ak yon koup lòt bagay ou pa fè sa vrèman
bezwen enkyete sou.
>> Se konsa, isit la nan yon pwogram egzanp kote, avi, prensipal la printfing retounen nan
valè de foo 4.
foo se jis ale nan retounen nan valè de ba 4 vigil 6.
Apre sa, ba ki pral mete kèk lokal varyab n egal a 4 fwa 6.
Lè sa a, retounen n.
>> Se konsa, kite yo gade nan chemine a nan tout iterasyon aktyèl la nan pwogram sa a.
Se konsa, gen nan pati anba a nan chemine nou an.
Sonje ke chemine a grandi.
Se konsa, nan fon an nan chemine nou yo, nou gen yon ankadreman chemine pou prensipal la.
Lè pwogram lan kòmanse, prensipal se toujou pral fè nan la
anba nan chemine nou an.
>> Ak sa ki andedan nan nou an chemine ankadreman pou prensipal yo?
Se konsa, menm si pa gen okenn lokal varyab prensipal yo, tankou mwen te di anvan,
nou gen arg ak rgv pran moute espas andedan nan prensipal ankadreman chemine.
Se konsa, prensipal se kounye a ale nan rele foo an fonksyon.
Lè sa vle di foo ki pral jwenn pwòp li yo ankadreman chemine.
>> Se konsa, kounye a nou ap andedan nan foo an fonksyon.
Ak sa ki bezwen yo ale nan chemine ankadreman foo a?
Oke, foo gen yon agiman n.
Apre sa, n ki egal a 4 depi se sa ki prensipal la, k'ap pase kòm agiman foo la.
>> Se konsa, koulye foo ki pral rele ba.
Ki sa ki ba pral gen andedan nan 'ankadreman chemine li yo?
Li te gen x egal a 4 y egal a sis.
Sa a pa tout sa ki nou pral gen nan ankadreman an pil paske ba
tou te gen yon n varyab lokal yo.
Apre sa, n nou pral mete egal a 24.
>> Se konsa, koulye ba ki pral retounen n.
Se konsa, ba ki retounen 24 a chemine ankadreman foo la.
Epi paske ba se kounye a retounen, ki vle di nou ap eklate ankadreman an pil
pou anpeche koupe nan chemine a.
Se konsa, tout memwa a te byen ba te lè l sèvi avèk se kounye a nan chemine a.
>> Koulye a, foo se tou pral retounen 24 a prensipal la.
Se konsa, kounye a ke foo ki retounen, memwa a ki foo te lè l sèvi avèk nan 'li yo
se chemine ankadreman tou ale.
Epi, koulye a, prensipal ki pral rele printf.
Se konsa, printf se jis yon lòt fonksyon.
Lè nou rele printf, li pral fè yon lòt ankadreman chemine pou printf la
fonksyon apèl.
>> Ki sa yo nou pase printf?
Sa a ki sa k ap pase yo ale sou ankadreman chemine li yo.
Omwen a anpil, nou pase ki pousan mwen antislach n ak
agiman an 24.
Li ta ka gen plis nan li nan chemine ankadreman si printf k ap pase yo dwe lè l sèvi avèk kèk
varyab lokal yo.
Nou pa konnen.
>> Men, tout sa ki ale nan printf a chemine ankadreman.
Li ale nan egzekite printf la.
Lè sa a, printf a fè.
Li pral retounen.
Finalman, prensipal se fè.
Main pral retounen.
Lè sa a, se pwogram nou an fè.
Yeah?
>> ODYANS: Èske ou wè [fèbl]
agiman [fèbl]
paramèt?
>> ROB: Se konsa, gen yon diferans sibtil ant agiman ak karakteristik.
E reyèlman, an komen pale, moun ki gen tandans jis melanje yo moute tout tan tout tan an.
Men, paramèt yo se fòmèl la non nan bagay sa yo.
>> Se konsa, arg ak argv yo se nan paramèt prensipal la.
Agiman yo se sa ki ou aktyèlman pase nan kòm paramèt sa yo.
Se konsa, gen lè m'ap rele foo nan 4, 4 se agiman an mwen pase pous
Apre sa, n nan paramèt, andedan nan foo, pran sou valè a 4
depi 4 te agiman an.
>> ODYANS: [fèbl]?
>> ROB: n se yon varyab lokal yo ba.
n se toujou lokal yo foo, men li nan yon paramèt foo.
Li pa yon varyab lokal yo.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: foo se jis rele bar ak retounen tou sa ba retounen.
>> ODYANS: [fèbl]?
>> ROB: Yeah, jis wè miltip chemine ankadreman.
Yeah?
>> ODYANS: Poukisa yo foo rele anvan printf?
>> ROB: Poukisa yo foo rele anvan printf?
Se konsa, mwen te kapab, olye de sa, fè yon bagay tankou Int x egal foo nan 4
ak Lè sa a enprime x.
Men, olye de sa, mwen konbine fonksyon an rele nan agiman an printf.
>> Men, remake ke nou pa kapab aktyèlman egzekite rele nan printf jiskaske nou
konnen sa ki foo nan 4 se.
Se konsa, nou ap ale nan evalye sa a.
Apre sa, yon sèl fwa ki nan fè yo ale vini retounen lakay yo epi evalye sa a.
Yeah?
>> ODYANS: Depi tou de ba [fèbl]
valè, poukisa nou pa jwenn okenn [fèbl]?
>> ROB: Yo totalman ta dwe Int.
Sa pa te kenbe sou plizyè pase.
Se konsa, li ta dwe ba Int ak Int foo depi tou de nan sa yo
ap retounen nonb antye relatif.
Anile se sèlman si yo pa ap ale retounen valè vrè.
Yeah?
>> ODYANS: Si ou te gen yon liy pi wo a retounen nan, [fèbl]?
>> ROB: Yon liy pi wo a retounen nan?
>> ODYANS: Yeah.
Menm jan ak si ou t 'printf ak [fèbl], li ta ekri ak lèt detache de fwa?
>> ROB: Se konsa, andedan nan foo?
Si nou te gen yon printf dwa isit la?
>> ODYANS: Yeah.
>> ROB: Se konsa, si nou te gen yon dwa printf isit la, li ta ekri ak lèt detache yon fwa.
Depi nou ap rele foo yon fwa dwa isit la, Lè sa a, nou pral frape printf la.
Lè sa a, nou pral rele ba.
Lè sa a, foo pral retounen.
Epi sa a, li.
Nou sèlman tout tan tout tan rankontre printf a yon fwa.
Yeah?
>> ODYANS: [fèbl]
printf rele foo paske nou ap premye rele printf ak Lè sa a, nou ap pase
agiman yo.
>> ROB: Se konsa, nan teyori, se pa printf rele foo?
Se konsa, pa gen okenn.
Jis lòd la ke c se ale nan egzekite tout bagay sa yo se, avan nou kapab
rele yon fonksyon, nan tout agiman yo fonksyon an gen
ap evalye konplètman.
Se konsa, sa a se konplètman evalye?
Wi, li nan jis yon fisèl.
Se jis yon valè.
>> Lè sa a, nou dwe konplètman evalye sa a.
Yon fwa sa a se fè, kounye a nan tout yo evalye agiman li yo.
Epi, koulye a nou ka fè an rele nan printf.
Yeah?
>> ODYANS: Yon kesyon.
Si ou gen yon fonksyon anile, yo dwe ou gen retounen pwenvigil?
>> ROB: Ou pa fè yon pwenvigil retounen si ou gen yon fonksyon anile.
OK.
Se konsa, koulye kèk bagay pil wòch.
Se konsa, pil wòch ki jan nou pral fè fas ak jesyon dinamik memwa.
Lè sa a dirèkteman contrastes ak nan chemine ki nou ta ka rele otomatik
jesyon memwa.
>> Se konsa, sou chemine a, ou pa janm reyèlman gen fè fas ak ki jan varyab lokal yo
yo te pouse ak déja koupe tout sa yo ankadreman chemine ak tout sa ki bagay.
Ou pa gen enkyete sou li.
Li nan otomatik yo.
Se konsa, pil wòch la se manyèl.
Apre sa, [fèbl] a
soti nan fonksyon sa yo malok ak gratis.
>> Se konsa, isit la nan yon lòt pwogram.
Tout sa nou ap fè se mallocing yon nonb antye relatif.
Nou ap estoke l 'nan zetwal x.
Natirèlman, nou gen yo tcheke yo wè si x se nil.
Lè sa a, nou pral jis mete sa x se montre a 50.
Enprime sa ki x ap montre a, ekri ak lèt detache x, ak Lè sa a, gratis x.
>> Se konsa, kouman sa a se aktyèlman ale nan gade si nou gade nan chemine nou yo ak pil?
Se konsa, nou pral kòmanse ankò.
Anba a nan chemine nou an tankou anvan.
Sonje ke ou seri dirèkteman opoze chemine a?
Se konsa, nou ap ale nan gen nan tèt pil wòch nou an kanpe.
>> Se konsa, anba a nan chemine nou an, nou gen ankadreman chemine nou an pou prensipal la.
Li te gen espas ki la pou arg, argv, epi nou kounye a gen yon varyab lokal x, ki
se yon etwal Int.
Se konsa, nou ap ale nan repňte nan pwogram sa a.
Premye bagay nou genyen se yon rele nan malok.
>> Se konsa, nou ap fè yon rele nan malok.
Malok se yon fonksyon.
Li pral jwenn yon ankadreman chemine.
Ki sa yo nou pase malok?
Sa a pwal ale andedan nan ankadreman an pil.
Nou ap pase gwosè nan n, ki se 4.
Se konsa, ki se te pase nan malok.
>> Ki sa ki malok fè?
Li bèn nou kèk espas sou pil wòch la.
Se konsa, nou ap ale pou yo ale nan pil wòch la.
Apre sa, nou pral gen tan pwan 4 bytes soti nan pil wòch la.
Se konsa, kite a jis bay ki yon adrès abitrè.
0x123 Jis pretann ke se yon adrese ki sou pil wòch la.
>> Se konsa, sa se aktyèlman andedan nan ki rejyon nan memwa nan adrès Ox123?
Fatra.
Se konsa, nou pa t 'sere anyen nan li.
Se konsa, osi lwen ke nou konnen, li te kapab anyen.
Ou pa ta dwe asime li a zewo.
Li nan gen plis chans pa zewo.
>> Retounen Se konsa, koulye malok.
Ak sa nou fè lè retounen malok?
Nou mete sa li tounen lakay la.
Nou mete x egal a sa ki li se retounen.
Se konsa, sa se li retounen?
Li retounen 0x123 depi se sa ki nan adrès nan blòk la nan memwa ke li
jis resevwa lajan nan pil wòch la.
>> Se konsa, retounen 0x123 x se kounye a yo pral mete egal a 0x123 ki, pictorially,
nou souvan trase kòm x gen yon vrè flèch montre ke blòk.
Men, x se jis estoke adrès sa a.
Se konsa, kounye a nou gen yo tcheke si x se nil.
Li pa nil.
Nou pretann ke ke malok plas.
>> Se konsa, koulye zetwal x egal 50.
Se konsa, zetwal sonje li vle di ale nan adrès sa a.
Se konsa, 0x123 Nou pral ale nan adrès sa a.
Se konsa, ki pote nou moute a.
Kisa n'ap fè nan adrès sa a?
Nou ap estoke 50.
>> Se konsa, apre liy sa a, se sa ki bagay sa yo yo ale nan sanble.
Se konsa, kounye a li nan pa gen pi long fatra moute a.
Koulye a nou konnen 50 se nan ki adrès patikilye paske
nou mete l 'nan sa.
OK?
Se konsa, kounye a nou ap ale nan ekri ak lèt detache f.
>> Se konsa, premye nou pral ekri ak lèt detache zetwal x.
Se konsa, sa se etwal x?
Yon fwa ankò, zetwal x vle di ale nan nan bagay ki x ap montre yo.
Se konsa, x se estoke 0x123 Ale nan sa.
Nou jwenn 50.
Se konsa, ekri ak lèt detache f sa.
Lè sa vle di li pral ekri ak lèt detache 50.
Lè sa a, ki tounen lakay la.
>> Lè sa a, nou gen dezyèm printf la.
Nou kounye a pousan p.
Si ou pa fin wè li, sa a, se jis ki jan ou enprime yon konsèy.
Se konsa, nou gen pousan mwen, pousan f, ansanm ak tout moun sa yo deja.
Se konsa, pousan p, enprime yon konsèy.
>> Se konsa, x se yon konsèy.
Se konsa, si nou ap ale nan ekri ak lèt detache x tèt li, nou ap enprime sa ki aktyèlman andedan
x, ki se 0x123 Se konsa, premye a ekri ak lèt detache f se ale nan ekri ak lèt detache 50.
Dezyèm ekri ak lèt detache f a ki pral ekri ak lèt detache 0x123 Yeah?
>> ODYANS: ou itilize pousan x ekri ak lèt detache yon konsèy?
>> ROB: Se konsa, ou sèvi ak pousan x ekri ak lèt detache yon konsèy?
Se konsa, ou kapab men pousan x se jis, jeneralman, pou tankou si ou gen kèk
nonb antye ki pè, epi ou vle ekri an lèt detache li kòm yon ekzadesimal.
Se jis ki jan ou fè sa.
>> Lè nou konsidere ke, pousan d ta ekri ak lèt detache kòm desimal.
Sa a te nou jwenn pousan d. mwen se jis nonb antye ki pè.
pousan p se espesyalman pou endikasyon.
>> Se konsa, x se yon konsèy.
Nou vle sèvi ak pousan p.
Men, pousan x te kapab travay.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Yeah.
Omwen pou rele sa a - Se konsa, mwen pa t 'gen ladan l' nan isit la.
Men, de agiman sa yo, se nesesèman andedan nan sa a ankadreman chemine
ansanm ak nenpòt varyab lokal printf k ap pase yo dwe lè l sèvi avèk.
Lè sa a, rele nan pwochen nan printf kounye a andedan nan printf chemine ankadreman se
pousan p antislach n ak tou sa la valè x ki se, ki se 0x123.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Li pral ekri ak lèt detache yon bagay ki sanble ak sa a.
>> ODYANS: [fèbl].
>> ROB: Se konsa, li simagri li nan fòm adrès.
Li sanble ke yon adrès.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Poukisa se ki sa?
>> ODYANS: [fèbl]?
>> ROB: Poukisa se konsèy sa a 4 bytes?
Se konsa, gen tout yon seri de 0 a nan devan sa a.
Se konsa, li vrèman 0x0000000123.
Sou yon sistèm 64-ti jan, ta gen yon pakèt tout ki gen plis zewo.
Yeah?
>> ODYANS: [fèbl].
>> ROB: Se konsa, printf an premye ki pral ekri ak lèt detache -
>> ODYANS: [fèbl].
>> ROB: Wi, li nan ale nan ekri ak lèt detache sa x ap montre yo.
Star di ki sa ki sa a bagay montre.
Gen tan pwan li.
Se konsa, sa se li montre?
50.
Gen tan pwan li.
Sa a ki sa nou pral ekri ak lèt detache.
Lè nou konsidere ke, yon sèl kap vini an, nou ap jis enprime x tèt li.
Ki sa ki se andedan nan f?
0x123.
OK.
>> Lè sa a,, finalman, nou gen gratis la.
Ki sa yo nou pase yo gratis?
Nou ap pase x.
Tan sa a mwen aktyèlman parèt li nan ankadreman an pil.
>> Se konsa, nou ap pase valè a 0x123 yo gratis.
Se konsa, koulye gratis konnen, tout dwa, Mwen gen yo ale jiska pil wòch la
ak gratis ki memwa.
Li pa gen okenn ankò lè l sèvi avèk sa ki se nan adrès 0x123.
>> Se konsa, gratis ki pral lage ki soti nan pil wòch la.
Koulye a, pil wòch nou an, se vid ankò.
Nou pa gen okenn fwit memwa.
Koulye a, gratis pral retounen.
Remake x se toujou 0x123.
Men, ki se kounye a memwa pa valab.
Nou ta dwe pa gen okenn ankò dèreferans x.
Yeah?
>> ODYANS: Èske retounen 0 redondants?
>> ROB: Èske returen 0 redondants?
Wi.
Nou jis mete sa la, paske nou gen yon yon sèl retou pou lè.
Se konsa, li tankou, wi, pèmèt gen ladan yo retounen nan 0.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Se konsa, apre gratis x, sa k ap pase si nou eseye dèreferans konsèy la?
Li posib ke pa gen anyen ale mal.
Li posib ke nou pral toujou jwenn 50.
>> Li posib, tou, se sa ki memwa se kounye a yo te itilize pou yon lòt bagay.
Se konsa, li konpòtman endefini.
Apre sa, endefini vle di anyen ka rive.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Non, kidonk si w bay x nan yon lòt bagay.
Se konsa, si dwa isit la nou te di x egal malok yon lòt bagay -
gwosè malok evènman -
Lè sa a, ki blòk orijinal nan memwa se pa sa te libere.
Apre sa, nou te ofisyèlman pèdi li.
Sa se yon fwit memwa.
Nou te pèdi tout referans ak sa yo ki blòk nan memwa.
Se konsa, gen nan pa gen fason nou ka tout tan tout tan gratis li.
OK, se konsa Lè sa a, retounen 0 vle di fè a.
>> Tout dwa, se konsa chemine debòde.
Ki sa ki nan lide nan isit la?
Se konsa, sonje, pil wòch ki pral desann.
Stack ap monte.
Se konsa, sa a te egzanp ki soti nan konferans, Mwen panse ke, kote prensipal se jis ale nan
rele sa foo fonksyon, ki se pral yo rele tèt li recursive sou yo ak
lòt peyi sou ankò.
>> Se konsa, chemine ankadreman yo ale nan travay egzakteman menm bagay la.
Se konsa, nou ap ale nan kòmanse ak prensipal kòm anba ankadreman an pil.
Lè sa a, prensipal ki pral rele foo, ki ki pral yo ka resevwa yon ankadreman chemine.
>> Lè sa a, foo ki pral rele foo ankò, ki se pral jwenn
yon lòt ankadreman chemine.
Lè sa a, ankò, li ankò, li ankò, epi ankò jouk, evantyèlman, nou kouri
nan pil wòch la.
Se konsa, sa a se ki jan nou jwenn yon debòde chemine.
Apre sa, nan pwen sa a, ou seg fay.
Oswa ou ta reyèlman seg fòt anvan pwen sa a men wi.
>> ODYANS: Èske nwayo pil fatra a menm jan ak fòt seg?
>> ROB: Se konsa, ou ap wè segmentation nwayo fòt jete.
Ou jwenn yon pil fatra debaz lè ou seg fay.
Lè li nan tankou yon pil fatra nan tout la sa nan memwa ou ye kounye a se konsa
ke ou ka eseye epi idantifye poukisa ou seg rproche.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Se konsa, yon fay segmentation vle di gen yon debòde chemine.
Se konsa, pa nesesèman.
Yon fay segmentation vle di ke w ap manyen memwa nan yon fason
ou pa ta dwe.
Se konsa, yon sèl fason pou ke kap pase a se, lè ou pile debòde, nou kòmanse manyen
memwa nan yon fason ke nou pa ta dwe.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Se konsa, andedan nan yon bouk enfini.
Tankou, sa a se tankou yon enfini repetitif bouk yo ak pou nou jwenn yon lòt
chemine ankadreman chak fwa.
Men, jis andedan yon regilye enfini pandan y ap yon sèl -
Oke, kite la pa menm ekri ak lèt detache f -
fè yon bagay.
Kèlkeswa sa.
>> Nou pa pwal yo dwe resevwa yon lòt ankadreman chemine.
Nou jis ap ale nan kenbe loupin sou enstriksyon sa a yon sèl.
Chemine a se pa ap grandi.
Li nan lefèt ke chak repetitif rele an, ap ban nou yon ankadreman chemine.
Se poutèt sa nou jwenn yon debòde chemine.
Yeah?
>> ODYANS: Se konsa, si ou te di yo ka resevwa nan pandan y ap bouk ak Lè sa a [fèbl]?
>> ROB: Se konsa, si andedan nan bouk la pandan y ap te gen yon printf, ou toujou ta
pa seg fay.
Mwen jis pa t 'vle konfonn bagay sa yo.
Li ta bouk.
Ou ta jwenn yon pil sèl ankadreman pou printf la.
>> Lè sa a, printf ta retounen.
Lè sa a, ou ta bouk ankò.
Ou ta jwenn yon pil sèl ankadreman pou printf la.
Li ta retounen.
Single chemine ankadreman.
Se konsa, ou pa ap vin sa a enfini anpile moute ankadreman chemine.
>> ODYANS: [fèbl]?
>> ROB: Wi.
Se konsa, sa a debòde chemine k ap pase paske Pa gen yonn nan sa yo
rele nan zòrèy foo ap retounen.
Se konsa, si nou retounen, lè sa a nou ta kòmanse pèdi ankadreman chemine.
Lè sa a, nou pa ta pile debòde.
Epi sa a, poukisa ou bezwen yon ka baz pou fonksyon pèsonèl ou.
Yeah?
>> ODYANS: Èske gwosè a potansyèl ak nan chemine pou pil wòch la menm bagay la pou
tout pwogram?
>> ROB: Apeprè.
Se gwosè a potansyèl de chemine a ak pil wòch la menm bagay la tou pou tout pwogram?
Apeprè.
Gen kèk Metòd chans kote chemine la kòmanse ak
kote pil wòch la kòmanse.
Si ou rive gen yon anpil tout varyab mondyal ak bagay sa yo, ou ta ka
pran lwen kèk espas pou pil wòch ou.
>> Sou yon sistèm 64-ti jan, ou nòmalman gen enfini memwa.
Genyen sèlman yon bagay konsa.
Ant 32 Bits ak 64 Bits, ki se yon diferans enpòtan.
>> W ap ale nan jwenn yon anpil antye plis chemine ak espas pil wòch sou yon 64-ti jan
sistèm paske se la a, se jis plis adrese yo ke yo ka itilize.
Men, sou yon sistèm endividyèl, li pral gen apeprè menm kantite lajan an nan chemine
ak espas miray.
Tout dwa.
>> Se konsa, bagay pase a se konpilasyon.
Se konsa, ou ta dwe konnen pwosesis sa a.
Genyen kat etap gwo.
Se konsa, yon sèl nan premye yo ta dwe dwe fasil sonje.
Pre-tretman.
Li te gen pre a prefiks nan li.
Se konsa, li rive devan tout lòt bagay.
>> Bagay la sonje se hash la.
Defini Se konsa, hash ak hash gen ladan nan tout sa yo.
Sa yo se tout pre-processeur direktiv.
Sa yo se bagay sa yo ke nan pre-processeur pran swen de.
>> Se konsa, sa yon-processeur pre fè?
Li se yon bagay reyèlman bèbè.
Tout li nan kapab nan yo se tout moun sa yo operasyon kopi, e li te koupe, ak keratin.
>> Se konsa, hash gen ladan estanda h i0 dot.
Ki sa ki se ke ap fè?
Li nan arachman estanda h nan i0 dot ranpli e kole l 'nan tèt la
tout kote li di hash gen ladan estanda i0 dot h.
>> Ak nenpòt hash defini ke nou te gen wè an, sa sa ap fè?
Li kopye valè a ki hash la yo defini defini kòm e kole ki
tout kote w ap sèvi ak valè an.
Se konsa, preproseseur la jis fè sa ki vrèman tèks ki senp ki baze operasyon yo.
Li fè sa pa gen anyen entelijan.
Se konsa, tout lòt bagay se pi konplike.
>> Se konsa, kounye a ke preproseseur se fè, nou aktyèlman konpile.
Se konsa, sa konpile vle di?
Nou ap kounye a pral nan kòd c nan kòd asanble.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Yeah, nou kenbe sa a.
Se konsa, konpile.
Nou pwal soti nan C rive nan asanble.
Se konsa, sa a se yon chanjman lang vrè.
Konpile tèt li vle di pral soti nan yon lang ki pi wo nivo nan
yon lang pi ba nivo.
>> Apre sa, c se yon lang wo nivo konpare ak asanble.
Ki sa ki se tout pèp?
Enstriksyon li yo ki, bèl anpil, te fè pou CPU ou.
Men, òdinatè w lan toujou fè sa ki pa konprann asanble.
Li sèlman konprann yo epi zewo.
Se konsa, pwochen etap la se rasanble, ki pote nou soti nan enstriksyon sa yo ki
CPU ou konprann ak aktyèlman tradui yo, yo
yo menm ki ak zewo.
>> Se konsa, C rive nan asanble binè.
Men, mwen pa gen yon ègzèkutabl ankò.
Se konsa, panse nan bibliyotèk la cs50.
Nou ofri ou avèk yon binè pou sa a bibliyotèk cs50, ki te gen GetString
ak GetInt ak tout sa ki.
>> Men, bibliyotèk la cs50 -
nan ak tèt li - se pa ègzèkutabl.
Li pa gen yon fonksyon prensipal.
Se jis nan yon pakèt moun sou binè ke ou ka itilize.
Se konsa, ki lye ak ki jan nou pote ansanm tout nan sa yo diferan dosye binè
nan yon ègzèkutabl vrè.
Youn ke ou ka tape dot koupe yon dot deyò.
>> Se konsa, sa a se tankou dosye a ke ou te ekri, - kèlkeswa pwogram ou an se -
Ceaser dot c.
Men koulye a, li la te konpile desann nan binè.
Se konsa, Ceaser dot o.
Lè sa a se bibliyotèk cs50 nou an binè.
Apre sa, yo se ke yo te konbine nan yon ègzèkutabl sèl.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Se konsa, premye enkli ladan yo, sonje, hash a genyen ladan yo se aktyèlman yon
etap pre-processeur.
Men, sa a apa a.
Si ou pa ap itilize nenpòt fonksyon ki yo deyò nan dosye sèl ou lè sa a,
pa gen okenn, ou pa bezwen konekte anyen depi ou gen tout bagay.
>> Sa te di, printf se ke yo te lye pous
Si ou janm sèvi ak printf, ki nan yon bagay ki bezwen yo dwe lye nan
paske ou pa t 'ekri sa a.
Epi, an reyalite, printf se otomatikman lye pous
Ou konnen jan nan liy lan lòd oswa lè ou tape fè, ou wè li gen
l priz cs50, ki te gen lyen nan bibliyotèk la cs50?
Printf, ak lòt bagay tankou sa yo, ki pral yo dwe lye nan otomatikman.
Nenpòt lòt kesyon ki gen nan anyen?
>> ODYANS: [fèbl]?
>> ROB: Ki lye ak?
Nou gen yon pakèt tout diferan dosye binè.
Sa a se egzanp lan kanonyal ke nou itilize se bibliyotèk cs50.
Nou te konpile ak ba ou a binè pou sa a bibliyotèk cs50.
>> Ou vle itilize GetString nan pwogram ou an.
Se konsa, ou ale epi sèvi ak GetString.
Men, san yo pa Kòd binè mwen an pou GetString, lè ou konpile Kòd ou
l 'atè, ou pa ka aktyèlman kouri ou pwogram paske GetString chèn se
pa ankò konplètman defini.
>> Li nan sèlman lè ou lyen an nan binè mwen ki gen GetString ke kounye a, tout
dwat, mwen kapab aktyèlman egzekite GetString.
Dosye mwen se konplè.
Apre sa, mwen ka kouri sa a.
Yeah?
>> ODYANS: ki lye ak konvèti binè nan ègzèkutabl?
Se konsa, menm si ou pa gen lòt bibliyotèk, ta pa li toujou gen
nesesè yo tradui [fèbl] a?
>> ROB: Se konsa, yon ègzèkutabl se toujou nan binè.
Se jis nan konbine yon antye pakèt moun sou binèr.
>> ODYANS: Mèsi anpil.
>> ROB: Pa gen pwoblèm.
Nenpòt lòt kesyon?
Sinon, nou ap tout mete.
Tout dwa.
Mèsi.
>> [Aplodisman]
>> ODYANS: Mèsi poutèt ou.
>> ROB: Yeah.