>> Oratè 1: Hi tout moun.
Nou pral jwenn te kòmanse.
Mwen panse ke moun yo toujou ale yo dwe filtraj nan.
Men, nan enterè a nan tan, se konsa nou kapab jwenn ou nèg soti nan isit la sou tan,
nou ap ale nan kòmanse.
Se konsa, akeyi nan 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 egziste ankò,
ti tès sot pase yo ak tout enfòmasyon sou egzamen ou an se sou cs50.net/quizzes.
Genyen kèk bagay trè bon sou la, ti tès sot pase soti nan 10 dènye a
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 lanp sou.
Se konsa, esansyèlman, tout bagay ki ale sou anba kapo machin lan nan yon òdinatè se
fè nan binè.
Binè vle di ki sa li son tankou, 0 a ak 1 a.
Li te gen de valè ki kapab reprezante.
>> Se konsa, jis tankou nan premye jou a nan seksyon Lè David vire sou yon limyè
anpoul yo reprezante sou, oswa 1, konpitè nou an konprann binè kòm 0 a ak
1 a, limen oubyen etenn.
Prensip Fondamantal nan nan binè.
Chak plas reprezante nan baz de.
Se konsa, ou ajoute 2 a 0 a nan 1 a la 2 tout wout la leve.
>> Pou kalkile ki sa binè ou a se fè desimal, ou jis swiv ekwasyon sa a
kalite bagay.
Si ou gen yon 1 nan nenpòt nan kote sa yo, ou miltipliye li pa tou sa
baz li nan nan, ajoute l 'kanpe, epi ou jwenn desimal a.
Se konsa, sa a se ki jan ou konte a 5 nan binè.
Jis tankou sa nou te fè sou la dènye glise, sa a se ki jan ou ta
reprezante 1 jiska 5.
>> Menm jan an tou, jis tankou ou ka ajoute ak fè soustraksyon nan desimal oswa baz 10, oswa
reyèlman nenpòt ki baz, sou kapab ajoute ak soustraksyon nan binè.
Ekzakteman ki sa ou ta atann lè ou ajoute de moute a, si li egal pi gwo
pase 1, ou pote yon 1, fè l 'yon 0, epi fè adisyon a nan 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, tout bagay ki ale sou anba kapo machin lan nan òdinatè 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è?
Ak repons lan nan se ASCII.
>> ASCII se yon kat ant pèsonaj ke nou ta nòmalman wè nan nan
Lang angle tankou yon an, B a, C a, souliye, tirè, ak
bagay tankou sa.
Epi li kat ki nan yon valè ASCII.
Yon valè ASCII se jis yon nimewo ki ka konprann pa òdinatè ou.
Ak jis tankou ou ka fè adisyon ak soustraksyon ak nimewo, ou ka fè
yo ak valè ASCII.
>> Se konsa, nan egzanp sa a, sa ki sa a pral enprime soti?
Yeah, se konsa jis Yon espas B space space C D. Ki kote t 'sourit mwen an ale?
Avi ou ka defini yon int nan 65.
Men, lè ou enprime ki soti lè l sèvi avèk pousan C, li pral entèprete sa kòm yon
karaktè ak pral enprime soti A.
>> Menm jan an tou, ou ka deklare li kòm yon Char.
Men, lè ou enprime li lè l sèvi avèk pousan C, li pral entèprete sa kòm
pousan D. Ak 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 5.
Se konsa, ki jan ta ka nou konvèti nan fisèl 5 a nonb antye relatif la 5?
Nenpòt lide?
Yeah.
>> Se konsa, si nou gen 5 kòm yon fisèl, nou ka fè soustraksyon 0.
Epi sa pral ban nou 5.
Epi Menm jan an tou, si nou gen 5 kòm yon nonb antye relatif, ajoute ke yo fisèl la 0.
Ak ki ba nou fisèl la 5.
Fre.
>> Koulye a, sonje tounen nan konferans yon sèl kote nou te pale de algoritm.
Se konsa, kouman nou aktyèlman vle yon òdinatè fè bagay sa yo enteresan?
Ou konnen, jis ajoute ak soustraksyon nimewo ak bagay sa yo enprime soti se pa
ki eksitan.
Anjeneral, nou vle òdinatè nou yo fè kèk kalite algorithm.
Yon bagay yon ti kras pi 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 task-- sèten
jis tankou yon resèt.
Ou ta ka sonje premye jou a nan klas kote David te nou konte yon chanm
nan 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 yo konte moun yo 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 chita atè.
Epi ou repete sa.
Sa a yon sèl di ki kalite algorithm.
Nou ka analize ki jan efikas yon algorithm a baze sou li a kouri tan.
Men, nou pral pale yon ti kras plis sou sa pita.
>> Se konsa, tout algoritm kapab tou dwe ekri nan pseudocode.
Pseudocode se jis yon angle tankou sentaks itilize reprezante
yon lang programmation.
Pou egzanp, si nou te vle mande yon itilizatè devine nimewo pi renmen m ', nou
ta ka gen pseudocode kòm sa yo.
>> Jwenn yon itilizatè devine.
Si devine nan ki kòrèk, di yo yo ap kòrèk, lòt moun di yo
yo ap pa kòrèk.
Epi pseudocode se yon fason pou fasil repwezantan yon lide oswa yon algorithm.
Se konsa, kounye a nou ta ka vle aktyèlman ekri sa a nan lang la ke ò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 dwe respekte nan yon sentaks sèten nan
yon lang programmation.
Se konsa, lwen, nan CS50, nou te lè l sèvi avèk sitou c.
Se konsa, sa a ta kapab kòd sous pou c.
Apre sa sou nan kou a, ou lannwit vini an kontak avèk lòt pwogram
lang tankou PHP.
Oswa si w menm pran lòt klas, ou ta ka fè Java, Piton, oswa menm OCML.
Men, nan lang pwogram c 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 inite.
Se konsa, kouman li jwenn soti 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 se fè ap fè?
>> Ou ka tape fè yo konpile ou pwogram paske someone--
moun ki va ekri seri p ou; pwobableman David--
kreye yon dosye fè.
Epi ki di fè yo konnen nan kouri ou du, ki rele rezone, ki volonte
Lè sa a, konpile kòd sous ou fè objeksyon Kòd, ki se zewo ak moun yo
ke òdinatè w lan konprann.
Men, yon ti kras pita sou, nou pral ale plis nan pwofondè sou konpilateur.
>> Se konsa, sonje pset 0, where-- 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.
Yo se la sou cs50.net/quizzes.
>> ODYANS: ti tès koupe, koupe 2013, koupe 0, ak jis klike sou atravè
ti tès 2013 ak egzamen 0, revize glisad seksyon.
>> Oratè 1: Yeah, se konsa si ou nèg vle rale li leve ak gade nan l 'sou ou
pwòp òdinatè, ki nan amann tou.
Di sa ankò.
>> ODYANS: [fèbl].
>> Oratè 1: Yeah, [fèbl] se varyab la egare.
Oh, repons lan se wi?
>> ODYANS: [fèbl]?
>> Oratè 1: Non, grèv yo pa nan egzamen an.
Padon, kesyon li te ye a, te grèv nan 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 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 se ekspresyon Boolean.
Ekspresyon Boolean yo se yo menm ak 0 a oswa nenpòt bagay ki gen
de valè 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 ou pa egal a, mwens pase oswa egal a, pi gran pase oswa
egal a, ak mwens pase oswa pi gran pase.
Men, sa yo operatè yo pa trè itil sof si nou ka konbine yo nan
kondisyon.
>> Se konsa, ou nèg ta ka sonje nan grate ak soti nan p ou kouche ke nou
te gen kondisyon.
Yo se, esansyèlman, tankou fouchèt nan lojik nan pwogram ou an ki
ègzekutra depann sou si wi ou non se yon kondisyon rankontre.
Se konsa, youn nan kondisyon sa ke nou te gen itilize anpil fwa nan kou sa a se nan
si, lòt moun, si, ak kondisyon lòt moun.
>> Isit la nan yon egzanp sou kouman ou ta ka sèvi ak sa.
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, e lòt bagay konbine?
Wi?
>> ODYANS: [fèbl].
>> Oratè 1: Egzakteman.
Se konsa, si mwen te gen si tout wout la desann sa a fason sa a, menm si kondisyon sa a retounen
vre, li ap toujou kontinye tès de kap vini an.
Lè nou konsidere ke, ak yon-si lòt moun, yon lòt moun deklarasyon, si yon sèl 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 bagay deklarasyon si ou konnen ke li kapab 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.
>> Next, yon lòt eleman debaz ki nou te aprann yo se pasan.
Nou gen twa kalite pasan.
Pou pasan, pandan y ap pasan, ak fè pandan y ap pasan.
Epi jeneralman, lè ou chita ekri yon bagay, ou gen deside
ki nan twa nan ou vle itilize.
Se konsa, ki jan nou deside ki youn?
>> Nou jeneralman itilize yon riban pou si nou konnen konbyen fwa nou vle repekte
atravè 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.
Epi nou itilize fè pandan y ap trè menm jan ak pandan y ap, men nou vle Kòd nou yo kouri nan
omwen yon sèl fwa.
>> Se konsa, fè ti tan, tou sa se nan fè a pral toujou kouri omwen yon fwa.
Lè nou konsidere ke, ak pandan y ap a, li pa ka kouri nan tout si la
kondisyon pa satisfè.
Nenpòt kesyon ak sa?
>> Se konsa, estrikti nan yon riban pou.
Ou nèg te 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 riban pandan y ap, 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 nou an pou riban tou kòm yon riban pandan y ap lè l sèvi avèk sa a.
Epi Menm jan an tou ak yon fè pandan riban, nou ta ka gen kèk inisyalizasyon,
egzekite yon bagay, mete li, ak Lè sa a, tcheke kondisyon an.
>> Se konsa, kounye fonksyon.
Nou mete tout bagay ansanm.
Nou ta ka vle ekri kèk kalite fonksyon.
Komen fonksyon ki ou ta ka te wè deja se prensipal la.
Prensipal la se yon fonksyon.
Li te gen yon kalite retou, int.
Li te gen yon non fonksyon, prensipal la.
Epi 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 function--
GetInt, toupper.
Men, sa yo rive yo te aplike pou nou pa
kèk kalite bibliyotèk.
Si ou nèg sonje ki gen ladan bibliyotèk sa a CS50.h oswa nan
estanda I / O bibliyotèk.
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.
E wi, tout fonksyon gen yon fonksyon prensipal.
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 kapab tou
ekri fonksyon pwòp ou yo.
Sa a se yon fonksyon ke 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, nou q Non fonksyon ak nou an
lis paramèt.
>> Epi sonje ke ou gen yo ekri done yo di ki kalite paramèt la ou vle
itilize oswa lòt moun fonksyon an fè sa ki pa konnen ki kalite
paramèt pou m 'ta aksepte.
Se konsa, nan ka sa a, nou vle yon nonb antye relatif 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 a 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 vrèman,
reyèlman long, li ta kapab 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.
Epi jam itilize-kapasite.
Si ou gen yon ti moso nan Kòd ki nan ke yo te rele oswa kouri plizyè fwa,
olye pou yo reekri ke kòd 10 fwa nan fonksyon prensipal ou an, ou ta ka
vle jam itilize li.
Lè sa a, chak fwa ou bezwen sèvi ak ki moso nan Kòd, rele fonksyon an.
>> Se konsa, kounye 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 miltip 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 koupe nimewo a nan
moun ki nan sal la.
>> Esansyèlman, sa ki te ale sou se tout nan ou nèg yo te
kouri fil apa.
Ak moun ki fil yo te vini ansanm yo ka resevwa kèk kalite repons.
Menm jan tou, nan grafouyen, lè ou gen miltip sprites, ou ta ka
gen yon chat ak yon chen.
Apre sa, yo ta dwe an menm tan kouri Scripts pwòp yo.
Sa se yon egzanp nan anfile.
>> Ak konsèp nan lòt ki te prezante nan grate te evènman yo.
Ak evènman yo se lè miltip pati nan kòd ou kominike youn ak lòt.
Nan grafouyen, sa a te lè ou te itilize nan difizyon kontwòl ak Lè an mwen
Resevwa blòk.
>> Epi tou, nan Set Pwoblèm 4, nou te wè yon ti kras nan evènman kòm byen.
Ou nèg ta ka te itilize bibliyotèk la Gevent.
Se konsa te gen yon fonksyon waitForClick nan ki ou te ap tann
pou itilizatè a klike sou.
Epi klike sou ou, nan ka sa a, ta dwe evènman an epi tann pou klike sou se ou
evènman kap okipe.
>> Epi tou, pandan tout kouri psets ou ak ap travay sou psets ou, ou
ta ka yo te vin 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 bay lis la sa nan yon anyè.
Fè anyè kreye yon nouvo dosye.
CD, chanjman anyè.
RM, retire, supresyon 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 la twonpe.
Li ta kapab ede.
Si ou gen chanm, ou ka mete l 'sou.
Li la tou jis jeneralman bon ase yo sonje paske lè ou sèvi ak li
ou ta ka vle jis genyen li memorize.
Sa pral fè lavi ou yon anpil pi fasil.
Èske mwen reponn kesyon ou a?
>> Se konsa, kounye a, nou te pale yon ti kras yon ti tan sou bibliyotèk yo.
Men, de yo menm ki prensipal ke nou ve yo te lè l sèvi avèk byen lwen tèlman nan kou a yo se
estanda I / O ak cs50.
Ki kalite bagay sa yo yo enkli nan mwen / O bibliyotèk la estanda?
>> Yeah, se konsa byen lwen nou te itilize printf.
Nan cs50, nou te itilize GetInt ak GetString.
Ak fisèl la kalite done tou k ap pase yo dwe deklare nan sa a bibliyotèk cs50.
Nou pral pale yon ti kras plis an pwofondè sou ki jan bibliyotèk travay ak ki jan yo
kominike avèk rès la nan kòd ou a.
Men, moun yo se de yo menm ki prensipal ke nou te vin an kontak avèk byen lwen tèlman nan
kou a.
>> Kalite.
Sa yo se bon sonje konbyen lajan se chak kalite reprezante pa oswa ki jan
anpil bytes chak nan kalite requires--
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 long?
>> ODYANS: [fèbl].
>> Oratè 1: OK.
Ki sa ki se yon long?
>> ODYANS: [fèbl].
>> Oratè 1: Yeah, double yon Int.
Wi.
>> ODYANS: [fèbl].
>> Oratè 1: Long [fèbl].
Lè sa a, yon long lontan se doub sa.
>> ODYANS: Non, pa gen okenn.
Yon long se jis yon Int.
Sa depann de ki achitekti a anvan [fèbl la]
ak int gen gwosè nan menm.
[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: konsèy.
>> Oratè 1: Yeah, se konsa nou te aprann yon ti kras sou pwent.
Ak kèlkeswa sa ki yon konsèy se lonje dwèt to-- li te kapab fè yon etwal Char
oswa yon int star--
li la 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 nan yo konplètman ka ranplase.
>> Oratè 1: Yeah.
Se konsa, lè sa a yon se lontan lontan doub yon Int.
>> ODYANS: Sa a se ti jan nan 32?
>> Oratè 1: 32 ti jan, yeah.
>> ODYANS: Se konsa [fèbl]?
>> Oratè 1: Wi, si li pa fè sa klèman di, ou
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 sa yo sèlman ki chanjman yo fin fou ak endikasyon.
Yo tou de [fèbl].
>> Oratè 1: Wi?
>> ODYANS: Kesyon.
Se konsa, sou youn nan ti tès yo pratike, li mande sou yon Int siye.
Se konsa, ki jan ta ki 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 lan.
Siyen gen nan yon sèl ti jan ki reprezante siy lan.
Ak 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: Kijan yon konsèy nan yon long lontan [fèbl]?
>> Oratè 1: Se konsa, kesyon an se ki jan fè konsèy la nan yon long-- long
ki jan se ke se sèlman kat bytes lè yon long lontan bytes li yo 8.
Se konsa, sonje sa ki se yon konsèy, esansyèlman, nan valè a anpil baz.
>> ODYANS: [fèbl].
>> Oratè 1: Yeah, se konsa yon konsèy se jis yon kote memwa.
Se konsa, li pa gen pwoblèm ki jan anpil espas ki konsèy ap montre yo.
Li sèlman bezwen 4 bytes nan 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 sèvi ak printf, pou egzanp.
Epi nou gen placeholders sa yo ki 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.
Pousan f pou flote.
Pousan LD pou lontan long ak pousan a 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 an lèt detache f.
Wi?
>> ODYANS: Ki sa ki pousan d pou?
>> Oratè 1: Se konsa, kesyon an se ki sa ki pousan d pou?
Pousan d se pou antye.
Pousan 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 is--
>> ODYANS: Se konsa antislach r jis implique retounen nan 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 ale tounen nan kòmansman an nan liy lan
Lè sa a, ou enprime 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: Bon, nenpòt lòt kesyon?
Tout dwa.
Mwen pral lage li yo ale nan Dan ki ap kontinye.
>> [Aplodisman]
>> DAN: Tout righty.
Se konsa, mwen pral pale sou yon lòt lajè ran de lide nan klas la ki
apeprè reprezantan nan semèn de ak kòmansman an nan semèn twa kòmanse koupe
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
fin fou lontan a doub.
>> Tout bagay sa yo kapab itilize yo kòm fason nan trete kèk nimerik valè
Char mwens 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 miltipliye li pa 10,000.
Lè sa a, nou enprime 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: Oh.
Pa ta gen fè 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, se 13,000.
Lè sa a weird-- siplemantè
>> ODYANS: 13.100.
>> DAN: 13.100.
Mèsi poutèt ou, Rob.
Lè sa a weirdness-- siplemantè
sa a 9,9--
se tou senpleman paske Distribisyon sa a te fini awondi desann kote
li pa ta dwe gen.
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 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 sig fig frans sou flote sa a, nou jwenn yon kalite
lèd Nimewo kap.
Epi sa a, paske 1.31 pa kapab avèk presizyon dwe reprezante pa senp
pouvwa nan de nan machin nan.
Se konsa, li fini moute pran pi pre a devine, ki fini moute
ke yo te yon ti kras ki ba.
Fè sans?
OK.
>> Koulye a, chanje yo se yon fason diferan nan fè deklarasyon kondisyonèl kote tout
nou pran swen sou se yon varyab sèl.
Se konsa, nan egzanp sa a an patikilye, nou ap ap resevwa yon nonb antye relatif soti nan itilizatè a.
Lè sa a, nou ap chèche a ki sa sa nonb antye relatif 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 nan posib valè li te kapab.
Se konsa, ka yon sèl, di li nan ba.
Lè sa a, ou kase jwenn soti nan kondisyon an switch konsa
ou pa kenbe prale.
>> Nan case-- nan pwochen
se konsa ka de ak ka three--
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 an lèt detache ba se paske mwen
gen sa a ti repo isit la.
Si m ', di, inyore break-- sa a si mwen jete breakaway-- sa a
li ta ekri ak lèt ​​detache ba, ak Lè sa a, li ta enprime mwayen, ak Lè sa a, li ta kraze.
>> Se konsa, repo se yon pati enpòtan nan chanje kondisyon ak
yo ta dwe gen.
Nenpòt ka ki pa te deklare klèman yo okipe pa default a
ta dwe ka nan switch la yo epi yo 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 enprime ba, ak Lè sa a, li ta ekri ak lèt ​​detache mwayen, ak
Lè sa a, li ta kraze.
>> ODYANS: Poukisa ta li enprime mitan si [fèbl]?
>> DAN: Se konsa, tout bagay anba yon ka anvan yon ti repo tonbe anba.
Se konsa, ka yon sèl ekri an lèt detache se anba ka yon sèl kòm se enprime sa a anba la a.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: Se konsa, nimewo sa a se jis yon patikilye valè varyab sa sa a
ka pran, dwa?
ki fè sans?
Yeah.
>> ODYANS: [fèbl]?
>> DAN: Wi, ka de ta enprime mwayen ak Lè sa a, kraze.
>> ODYANS: [fèbl]?
>> DAN: Mwen panse ke nenpòt ki?
Ki kalite done lòt ou ka chanje sou?
>> ODYANS: Ou ka chanje sou nenpòt ki kalite done.
Men, li sèlman vle di anyen sou char ak antye ak lòt bagay tankou sa, paske
si w ap oblije chanje sou yon konsèy ki pa vrèman fè sans,
oblije chanje sou charj, si li menm kite nan ou fè sa, paske nan pwen k ap flote
nan presizyon, ou ta pa reyèlman 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
ki yon switch se aktyèlman itil.
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 se mwen te deklare Int sa a mwen nan sijè ki abòde lan nan sa a pou riban.
Lè sa a, mwen ap eseye referans ki mwen deyò nan ke pou sijè ki abòde bouk.
>> Se konsa, fondamantalman, ou ka panse sou 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 deyò nan sa yo aparèy òtopedik Curly, ou pral
jwenn yon erè soti nan du a.
Yeah?
>> ODYANS: Se konsa yon sèl sa a pa travay?
>> DAN: Sa a pa travay, wi.
Strings.
Fisèl yon * Char.
Yo ap ekzakteman menm bagay la.
Yo yo se jis endikasyon nan karaktè.
Ak nenpòt ki strings ke ou gen ta dwe fini ak zewo antislach, ki se jis
yon konvansyon c.
>> Se sa yo rele Terminator a nil.
Epi null--
kapital N, kapital U, kapital L, kapital L--
se pa menm bagay la kòm nan Nil Terminator.
Sa a se yon konsèy.
Sa a se yon karaktè.
Yo se trè diferan.
Sonje li.
Li pral sou egzamen an, pwobableman.
Mwen pa te wè egzamen an.
Yeah?
>> ODYANS: Se konsa nil se, di, konsèy la?
>> DAN: Wi.
>> ODYANS: Ki sa [fèbl]?
>> DAN: Si, di, malok yo rele lè ou pa gen ase memwa yo ka resevwa
kèlkeswa gwosè ou ap mande pou, malok ap retounen nil.
Li nan, fondamantalman, chak fwa yon fonksyon se sipoze retounen yon konsèy, ou
bezwen yo tcheke kont nil paske Nil se yon good-- trè
li a, sòt de, valè a fatra.
Li se yon zewo osi lwen ke endikasyon ale.
>> Chak fwa ou rele yon fonksyon, ki retounen yon konsèy.
W ap ale nan vle tcheke yo dwe asire w ke ki konsèy se pa nil
paske nil se trè komen.
Li nan sòt de yon retou fatra.
Se konsa, si yon bagay pa t 'ale dwa, jis retounen nil pito.
>> ODYANS: [fèbl]?
>> DAN: Wi, epi ki nan sa a.
>> ODYANS: [fèbl]?
>> DAN: korektè li kòm sa a.
Li nan Terminator a nil.
Li nan miniskil N-U-L-L si w ap òtograf li.
>> ODYANS: Apre sa, mwen jis te ale retounen lakay yo epi teste li.
Men, si ou eseye mete yon pwen k ap flote valè nan yon switch, li pral rele nan ou
li di, deklarasyon mande pou ekspresyon nan kalite nonb antye relatif.
>> 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 nil epi yo pral sèlman dwe trete kòm sa yo.
Ou pa pral tout tan tout tan eseye ak eple a Karaktè nil epi wè nenpòt ki
lòt fason pase sa.
Yeah?
>> ODYANS: Se konsa retounen nan Char max oswa yon bagay nan nòt yo, ta li
enkòpore fonksyon an menm kòm [fèbl]?
>> ODYANS: Se konsa w'ap refere li a retounen Char max soti nan getchar, oswa
tou sa li se?
>> ODYANS: Yeah.
>> ODYANS: Yeah, se konsa jeneral la tèm pou tout bagay sa yo
yo Sentinel valè.
Se konsa, tankou retounen Int max soti nan GetInt ak Char max soti nan getchar, li nan
sipoze tankou, tout dwa, si bagay sa yo ap 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è bagay sa yo ale mal.
Se konsa, Char max se sa ki nou ap sèvi ak reprezante yon bagay
tankou nil oswa getchar.
>> ODYANS: Se konsa, si w ap fè tès getchar, te kapab ou jis mete nil?
Ta ki fè yon diferans?
>> DAN: Ou pa t 'kapab jis tcheke nil.
Ou ta gen yo tcheke Char max paske nan valè retounen soti nan fonksyon an se
yon karaktè pa yon konsèy.
Yeah?
>> ODYANS: Kesyon sa a mande pou longè a fisèl.
Èske ki gen ladan yo pèsonaj la nil?
>> DAN: No
Epi sa a, aktyèlman ki jan longè fil konnen yo sispann paske li ale nan
etalaj ou nan karaktè jiskaske li wè yon karaktè nil.
Lè sa a, li la tankou, tout dwat, mwen fè.
>> ODYANS: [fèbl] senk?
>> DAN: Hello ta dwe senk.
Oui.
Se konsa, ranje yo se 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 , yo ap Catalogue soti nan zewo a
longè a nan etalaj la mwens 1.
>> Apre sa, yo ap deklare pa kalite a nan la bagay ke ou 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 nan 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 ke, di, Char, kèlkeswa sa non an nan ou
etalaj se, parantèz vid egal Curly mete sipò H vigil E vigil L vigil L vigil
O vigil karaktè nil ak Curly atèl.
Ki ta ka 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.
Agiman liy lòd yo se yon fason a ap resevwa enfòmasyon nan men gwoup itilizatè a kòm
agiman prensipal la.
Main pran de agiman.
Nimewo a nan agiman ki se ke yo te pase sou liy lan bay 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.
Ak argv 0 la ta dwe yon dot deyò.
Argv1 ta dwe 1.
argv2 ta dwe 2. argv3 ta dwe 3, nan ka sa a an patikilye.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: Se eleman ki 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 nil.
Li se arg plis 1.
Se konsa, nan ka a ke mwen jis te di, li ta dwe argv 0 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 nil.
>> Epi sa a, konsèy la nil.
Wi.
Epi sa a, paske fisèl se yon etwal Char se yon konsèy.
Se konsa, li te gen kalite a menm.
Yeah?
>> ODYANS: De kesyon.
Se konsa, yon sèl, sa ki nan diferans ki genyen ant sa a epi GetString lòt pase yon sèl kalite
nan motè a itilizatè?
Ak de, se li ki estoke nan memwa ki sot pase ou a?
Se konsa, tankou, GetString ta gen [fèbl]?
>> DAN: Ki kote li ki estoke?
Mwen pa konnen ki kote li a ki estoke.
>> ODYANS: Se konsa, aktyèlman, ou konnen ki jan nenpòt ki fonksyone 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 nan kòmansman an nan chemine a.
Ki sa ki te pati nan lòt nan kesyon an?
>> ODYANS: Se konsa sa ki nan [fèbl la]?
>> DAN: Yeah, li nan jis yon fason diferan nan ap resevwa enfòmasyon nan men gwoup itilizatè a.
Sa a yon sèl nan 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: Lè yeah, jwenn strings ta dwe [fèbl].
Li ta magazen bagay la ou bezwen.
>> DAN: Yeah?
>> ODYANS: [fèbl]?
>> DAN: Wi, argv 0 toujou gen ladan nan dot koupe nan apèl la fonksyon.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: Wi, chak nan agiman yo se te fini nan karaktè nil paske yo
yo strings.
>> ODYANS: [fèbl]?
>> DAN: Wi, argv arg se yon konsèy nil.
>> 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 dwe twa?
>> ODYANS: Mwen panse ke li fè sa ki pa reyèlman gen pwoblèm.
Mwen gen tandans di, o, ou pa t 'pase nenpòt agiman liy lòd lè,
evidamman, ou rele fonksyon an.
Se konsa, mwen gen tandans yo awotvwa eskli nan fonksyon nan liy la lòd
agiman menm si li nan enkli nan argv.
>> DAN: Men, si li te sou test-- la
yeah-- epi tou 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 fisèl parantèz argv
men kenbe kalite yo menm ak jis rele yo yon bagay diferan tankou yon
ak b, ta li toujou ap travay?
Epi li ta toujou travay, ou ta just--
olye pou yo lè l sèvi avèk argc-- ou ta sèvi ak yon ak b.
Yeah?
>> ODYANS: [fèbl]?
>> DAN: Se konsa, kesyon an se GetString se pral 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 ki nan aktyèl la
aplikasyon nan GetString.
OK, deplase sou.
>> Sekirite Sosyal.
Se konsa, yo dwe vrèman an sekirite, ou konte sou pa gen okenn yon sèl ak ou pèmèt pa gen yon aksè a nenpòt ki
nan enfòmasyon ou, ki se poukisa tout moun ap bati machin pwòp yo,
pwòp sistèm 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 sekirite.
Yo te reyèlman yo ye.
Nou gen gen konfyans nan lòt moun.
>> Ak lide a nan sekirite se ke w ap ap eseye limite kantite lajan an nan
konfyans ke ou bezwen.
Ak youn nan vle di yo ou fè sa se nan chifreman.
Chifreman se, esansyèlman, nou gen sekrè.
>> Pafwa nou gen yo pase sekrè nou an ansanm nan, di, entènèt la oswa
lòt bagay.
Epi nou pa vle moun yo konnen sekrè sa yo.
Se konsa, nou ankripte sekrè nou an, nan yon fason ke nou espere pesonn pa ka konnen.
>> Se konsa, nou used--
nan kou a nan class-- sa a
bagay sa yo tankou Seza tande kòz kalkile ak [Fèbl] yo, ki se tou de trè, trè
fason anksyeu nan chifreman bagay sa yo.
Yo ap fasil figi konnen kisa yo ye epi ki sa sekrè ou yo.
Mond reyèl la sèvi ak pi plis konplike chifreman rapid.
Epi nou pa pral jwenn nan pi plis pase sa.
>> Debogaj.
Gdb ki pi bon an.
Mwen pral estrès sa a ankò.
Sèvi ak gdb tout tan tout tan an chak tan ou gen yon pwoblèm.
Kòmandman ki yo itil yo nan gdb yo kraze, kote ou pase swa yon liy
nimewo, yon non fonksyon, esansyèlman ki kote nan kòd ou a ou vle yo 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.
Ak etap etap andedan yon fonksyon nan ekzekisyon ou.
>> Lòt bagay yo ap kouri, ki se ki jan ou aktyèlman kouri kòd ou a.
Kontinye pran tout etap ki nesesè pou li ale nan pwen an repo vini an.
E gen 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.
Se konsa, ki kalite rechèch ke nou te pale sou nan klas sa a yo se rechèch lineyè,
ki se jis ke ou gade nan chak eleman nan espas ki la rechèch, youn
eleman nan yon moman, jiskaske ou jwenn sa w ap chèche pou oswa jiskaske ou rive nan
nan fen 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 tan nan pi bon konstan, ki se 0 a 1 ak nan pi move lineyè
tan, ki se 0 n.
>> Rechèch binè, ki bezwen eleman miserable.
Ou ale nan mitan an nan eleman ou, wè si eleman nan w ap chèche pou
se pi gwo oswa pi piti pase eleman nan ke w ap nan mitan yo.
Li li nan pi gwo, ou di ke anba a nan rechèch ou an espas se ou
kote kounye a, mitan an, epi ou rekòmanse pwosesis la.
Si li nan pi piti, ou gade di ki the-- yeah, sa ki nan moute?
>> 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: Ak lefèt ke ou pa te gen fè li pou yon seri pwoblèm, li nan jis
jwèt pou tès la.
>> ODYANS: Èske nou ka ale sou li ki jan to--
>> 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 la rantre sòt de
study.cs50.net, gen se kòd la pou mete ann aplikasyon rantre 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 rantre sòt sou study.cs50.net, gen se yon pratik
pwoblèm ki, si ou klike sou atravè nan pwoblèm, nan fen a trè gen yon
solisyon, ki se rantre nan sòt aplikasyon.
Men, asire w ke ou konprann li olye ke sèlman memorize li
oswa kopye li desann.
>> ODYANS: Ak yon parfe ki valab pwoblèm pou egzamen an ta dwe
yon bagay tankou isit la nan yon lis.
Ki lis sa a gade tankou apre yon sèl etap nan seleksyon sòt oswa
sòt ensèsyon oswa kèlkeswa sa.
Youn iteration plen nan lis la.
Se konsa, menm si ou pa fini ki bezwen Kòd pou li, ou bezwen yo konprann li
ase yo konnen ki jan li k ap pase yo dwe modifye sa a etalaj.
>> DAN: Sa a li pou mwen.
>> [Aplodisman]
>> LUCAS: Hey tout moun.
Non mwen se Lucas.
Mwen pral pale sou rkursyon, tout kalite sa yo ke nou te aprann, ak yon
ti kras nan tout endikasyon.
OK?
Se konsa, premye nan tout, rkursyon.
Kisa sa vle di yo di ke yon fonksyon se repetitif?
>> ODYANS: apèl tèt li.
>> LUCAS: OK, rele tèt li, yeah.
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 have-- kòm Dann ki te pale sou rechèch binè.
Yon fason rechèch binè 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, lè sa a jan li son tankou li nan repetitif.
Se konsa, Se poutèt sa ou nèg gen repetitif solisyon pou rantre 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 kapab reyalize ke sòm total la nan n nan Nimewo 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, sa a, se menm bagay la tou
bagay tankou nimewo adisyon 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 tou ta gen yon lòt bagay rele ka a baz, ki se ke
sòm total la nan nimewo yo 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 sa a fonksyon nan kèk.
Ki pran yon n nonb antye relatif.
Se konsa, isit la mwen 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 yon sèl n 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.
Ak kèk nan 1 se 1 plis nan sòm de 0, ki se 0.
Fè sans?
Se konsa, si nou gade nan chemine a nan ou pwogram nan, 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 2 egal 2 plis sòm total la nan yon sèl.
Se konsa, mwen ajoute sòm de 1 a chemine a.
Ak sòm total la nan 1 ki pral rele sòm de 0, ki se tou ale nan dwe 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 de 0, premye, ki pral retounen 0.
Lè sa a, chwazi sòm nan 1.
Lè sa a, sòm nan 1 ki pral retounen 1 sòm nan 2.
Epi 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 Fouye enpòtan, premye a tout?
Poukisa nou ta 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 a 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 trè enpòtan ke ou gen nan tout mo nan kèk kalite lòd ke nou
kapab jwenn aksè nan fasil.
Se konsa, se sa l 'te di.
Ou kapab fè rechèch pi plis efikasite.
Panse a ki jan difisil li ta dwe gen yon diksyonè nan ki mo sa yo se nan
lòd o aza.
Ou ap gen fè yon gade nan, bèl anpil, chak mo sèl jiskaske ou jwenn nan
mo ke w ap chèche pou.
>> Si w ap sèvi ak Facebook tou, lè w ap chèche a zanmi ou, w ap
ale nan wè ki Facebook mete ou pi pre zanmi nan sou tèt nan yo menm ki
ke ou pa pale ak ki anpil.
Si ou ale tout wout la nan pati anba a nan lis zanmi ou, w ap ale nan gade
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 yo.
>> Se konsa, òganize done.
Epitou Pokemon.
Se konsa, ou wè ke tout Pokemons gen nimewo.
Epi sa a, tankou yon fasil fason pou gen aksè nan done.
>> ODYANS: Antre nan Pokemon.
>> LUCAS: Yeah.
>> ODYANS: [fèbl].
>> LUCAS: Yèp.
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 iteration.
Li nan kalite tankou sòt nan ke ou 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 Ranje.
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 Ranje a yon pati nan lis la.
Epi kenbe fè sa.
Se konsa, kite a byen vit wè sa ki sa a sanble.
Se konsa, isit la nan Ranje a ak triye lis la.
>> Se konsa, pou Ranje a nan lis, li a okòmansman vid.
Lè sa a, mwen pral chwazi a pi piti nimewo 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 pi piti nan pwochen eleman, ki se 3.
Se konsa, mwen mete l 'nan fen a nan lis la Ranje.
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.
>> Ak gade nan ki jan tout moun sa yo fwa ke M ap di mete l 'nan fen an se,
fondamantalman, échanjé de valè.
OK?
Lè sa a, dènye yon sèl la, ou jis gen yon sèl eleman pi plis.
Se konsa, li deja klase.
>> OK, se konsa sòt ensèsyon.
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 nan ki se nan 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è sans pi plis.
Se konsa, okòmansman, pou egzanp, mwen ap eseye insert nimewo a twa nan nan
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 Ranje 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 a.
Mwen remake ke nimewo 2 a se aktyèlman dire Lè sa a, tou de 3 ak 5.
Se konsa, mwen aktyèlman gen yo mete nan li tout fason nan konmansman an nan lis la.
Se konsa, mwen gen yo, kalite, chanjman nan tout eleman nan lis la Ranje pou m ka
fè plas pou nimewo 2 a.
>> Lè sa a, mwen wè nimewo a 6.
Mwen wè ke li ta dwe apre 5.
Se konsa, mwen mete l 'la.
Epi 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 jarèt se fondamantalman sa w ap ale nan do-- nou rele li ti wonn
sòt paske ou ale nan list-- la li la aktyèlman pi bon si mwen jis montre
ou renmen this--
epi ou ap ale nan konpare nimewo adjasan.
Epi w ap ale nan swap yo pozisyon yo 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 ke lòd la Ranje 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ò.
Epi finalman, 2 ak 8.
Mwen menm mwen te boukante yo.
>> 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 iteration 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 Ranje.
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 iteration, ki
vle di ke lis se deja klase.
Fè sans?
>> Se pou nou pale yon ti kras sou kouri tan.
Se konsa, ou nèg sonje Big O, Omega, ak Theta?
Yeah?
OK, ki sa ki Big O, premye nan tout?
>> ODYANS: [fèbl].
>> LUCAS: Yeah, sa yo rele yon ka pi mal ègzekutabl, ki jis vle di ke li nan
konbyen lajan ou espere pwogram nan yo pran kouri.
Tankou, nan tèm of--
nan sa a n case--.
Nimewo a nan eleman nan la lis nan ka ki pi mal la.
Tankou, nan pi move ka a posib.
>> Se konsa, pou Triye jarèt, pou egzanp, nou gen gwo O 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 se ke mwen gen fè ke bagay n fwa.
Epi 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 an n okib paske li nan n fwa n.
>> Lè sa a, sòt seleksyon tou n kare se paske, pou chak iteration, mwen gen
gade nan chak eleman 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 a ka pi move pral
dwe, youn, mwen gen insert nimewo n, dwa?
Se konsa, mwen deja konnen ke mwen pral gen itérations n.
Men, pou chak nan nimewo sa yo, si mwen te gen fè yon gade nan tout nan nimewo ki nan
lis la klase epi li mete l 'tout wout la nan devan an, ki pral n kare
paske li 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 a ka pi bon se
lè se lis la deja klase.
Se konsa, ou pa vrèman gen fè anyen.
Triye jarèt 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 echanj oswa
pa, si ou gen yon bagay tankou mete nan vre si te gen yon iteration, si nan
Se lis deja klase, fondamantalman, sa k 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, li vle di ke mwen jis te gen nan ale nan lis yon sèl fwa a.
Se konsa, li n paske mwen gade nan n eleman.
Poukisa seleksyon sòt n kare?
>> Yeah, menm si se lis la Ranje, pou chak iterasyon nan sòt seleksyon, mwen
gen yo chwazi eleman nan minimòm.
Se konsa, sa vle di ke mwen gen soti nan gade nan tout eleman yo nan triye la
lis epi jwenn minimòm la pou chak iteration.
ki fè sans?
>> Ak nepe ensèsyon se n paske nan la ka sa a mwen ap eseye insert nan
nimewo ak tout nan nimewo ki, lè m ' eseye insert yo, mwen wè yo ke yo
se nan yon pozisyon dwat la.
Mwen pa gen yo ale tcheke lòt nan tout 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, regrèt?
Di l 'ankò.
>> ODYANS: [fèbl].
>> LUCAS: Egzakteman.
Se konsa, ou ka wè ke seleksyon sèlman ki estoke nan rantre 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.
Epi finalman, rantre sòt se nan boutèy demi lit n.
>> Lè sa a,, menm jan Dann te di, Rantre sòt se kalite tankou menm fason ke
ou fè rechèch binè.
Se konsa, ou jwenn lis la.
Epi w ap ale nan koupe an mwatye.
Lè sa a, ou koupe yo nan pi piti mwatye.
Lè sa a, ou rantre yo.
Ou nèg sonje ke, dwa?
OK, jan l 'te di.
>> OK, endikasyon.
Se konsa, sa 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 sa yo montre
youn ak lòt.
Men, mwen renmen panse a endikasyon kòm senpleman yon adrès.
Se konsa, li yon varyab ki pral nan magazen yon adrès.
>> Se konsa, li jis varyab espesyal sa a ki se kat bytes long.
Sonje, ki konsèy nan anyen se toujou kat bytes lontan pou 32-ti jan nou an
machin se konsa ka a ak aparèy la.
Epi li jis gen kote nan nan yon varyab andedan 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 a
slotty memwa.
Se konsa, ki vle di ke mwen ka gen yon montre konsèy nan
nenpòt nan adrès sa yo.
Se konsa, rezon an pou kisa nou pral sèvi ak endikasyon se si mwen gen sonje kote a
ke yon varyab espesifik se yon memwa.
>> Epi 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
gen voye yon konsèy.
Pa varyab la.
ou nèg sonje ke?
Between-- la diferans
ki sa ki non a?
Rele pa valè ak rele pa referans, dwa?
>> OK, yeah.
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.
Ak pwogram ou an pa t 'kapab pran swen mwens sou si varyab a menm aktyèlman
fè yon kopi.
>> Ak rele pa referans vle di ke Mwen aktyèlman voye yon kopi nan
konsèy nan varyab sa a.
Se konsa, sa vle di ke mwen ap voye a kote nan varyab sa a.
Se konsa, santi mwen gen kote adrès la nan la varyab, lè m 'rele fonksyon an
ak endikasyon, mwen kapab aktyèlman chanje done yo ki te nan prensipal la.
Fè sans?
>> Malgre ke, konsèy la se nan yon kopi, konsèy toujou gen adrès la reyèl 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
ak Lè sa a yon etwal.
Lè sa a, ou mete non yo.
Se konsa, sonje ke chak fwa ou gen kèlkeswa sa etwal, li la tankou yon konsèy nan
ke kèlkeswa sa varyab tape ke ou te gen.
>> Se konsa, isit la nan zetwal, pou egzanp, li nan yon konsèy ak yon antye relatif.
Lè sa a, zetwal Char se yon konsèy Char zetwal yo ak pou fè.
Yeah?
>> ODYANS: E si nou gen yon konsèy nan n nan zetwal x.
Mwen konnen ki ka kreye yon konsèy nan x.
li tou deklare x yon nonb antye relatif?
>> LUCAS: OK, Se konsa, lè ou di etwal 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 etwal n x, mwen se li di, hey, nan memwa, mwen pral
jwenn youn nan twa bwat sa yo.
Men, mwen pral yo di ke ki a pwal x, ki se
pral fè yon konsèy.
Ak yon bagay ki enteresan sou pwent se ke nou di yo ke yo gen
4 bytes pou yon machin 32-ti jan.
Ak rezon an pou ki se paske 4 bytes yo 32-Bits.
>> Ak machin ki 64 Bits aktyèlman gen endikasyon adrès
ki 64 Bits long.
Se konsa, li jis vle di ke gwosè a nan la adrès nan machin nan se diferan.
>> Se konsa, Indican ak Dereferencing.
Gen de operatè yo ki ou nèg ta dwe sonje.
Premye a se comercial.
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 antye ansanm.
Gen nan pa gen etwal espas n.
Se konsa, sa vle di ke li nan kalite la.
Sonje byen, lè ou gen zetwal nan varyab, w ap
ap pale de kalite nan.
>> Lè ou gen jis zetwal yo ak Lè sa a, nan non 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 a montre nan, ale nan adrès sa a,
ak gade nan nenpòt lè ou gen la.
Se konsa, mwen di elèv mwen ke lè ou gen etwal, ou ta dwe panse ke li nan
abrevyasyon nan kontni nan.
>> Se konsa, si ou gen yon konsèy epi ou fè zetwal konsèy, li la nan
kontni nan konsèy la.
Se konsa, ou ale nan tou sa li nan montre nan ak gade nan kontni an konstan.
Epi comercial a se menm bagay la tou bagay tankou adrès la.
>> Se konsa, si mwen gen yon varyab a-- tankou, kite la di ke mwen te fè int yon egal 3--
si mwen vle jwenn adrès sa a nan varyab yon memwa, mwen ka jis fè
comercial a.
Se konsa, li nan yon adrès.
Fè sans?
>> Se konsa, isit la nan yon egzanp.
Sa a ki manke Int b ak int c.
Se konsa, int yon egal 3 vle di ke Mwen pral pou yo ale nan memwa.
Men, 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 ak mete yon nimewo 4 nan youn nan bwat yo.
Epi Int egal 5.
Jwenn yon lòt bwat, li mete yon nimewo 5.
>> Se konsa, sa se liy sa a fè soti? zetwal n PA egal comercial a.
Se konsa, premye nan tout, n zetwal PA.
Ki sa li ap fè?
>> ODYANS: [fèbl].
>> LUCAS: Yeah, se konsa n zetwal PA, an premye, deklare yon konsèy rele PA.
Lè sa a, li nan plase valè a nan ki konsèy yo dwe adrès la nan yon.
Se konsa, comercial a.
Lè sa a, si m 'fè zetwal pb, sa ki se yon pb zetwal?
>> Oh, regrèt.
Sa a se tou ki disparèt. n zetwal 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 nan c.
Yeah?
>> ODYANS: [fèbl]?
>> LUCAS: Wi.
Se konsa, si ou ale nan memwa ak ou ale nan bwat la se sa ki Deziyasyon pou PA,
w ap aktyèlman ale nan wè yon adrès nan yon.
OK?
Yeah?
>> ODYANS: [fèbl]?
>> LUCAS: Yeah, konsèy se yon adrès.
Pa janm bliye sa.
Se tankou ki pi enpòtan an pati sou pwent.
Genyen estoke ak adrès nan kèk varyab.
Nenpòt lòt bagay?
Nenpòt lòt kesyon?
OK.
>> Se konsa, Endikasyon ak ranje.
Sonje ke lè m 'fè Int etalaj 3, fondamantalman, sa m 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 nonm antye relatif.
ki fè sans?
>> Se konsa, lè m 'fè 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 etwal, 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 nan,
ak mwen mete nimewo a 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 1 la fè m 'chanjman yon sèl pozisyon.
Se konsa, m 'ale nan pozisyon sa a, aktyèlman, epi li mete nimewo a de.
>> Lè sa a,, finalman, lè m 'fè etalaj plis 2, m 'ale nan kote
montre etalaj la nan.
Lè sa a, mwen demenaje 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.
Epi ou ka ajoute 1, jis paske nou ap sèlman vrèman
indican 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 prefere 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 m 'ale nan pozisyon sa, epi mwen pa fè sa
sote nenpòt blòk memwa.
Se konsa, mwen pa deplase nenpòt ki 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 pil la.
Epi lè m 'fè malok, li kreye sou pil 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 varyab anviwònman yo.
>> Se konsa, fondamantalman, espas pou moun varyab nan memwa se atribye ba nan
konpile tan.
Se konsa, sa vle di ke òdinatè ou a gen konnen tout moun sa yo varyab
davans.
Li pa bezwen konnen ki sa valè w ap ale nan mete nan yo.
Men li bezwen yo konnen ki jan memwa anpil 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 nan ki jan memwa anpil ou bezwen asiyen
lè ou konpile pwogram nan.
Ou jis konnen ke sou kouri tan.
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 nan pwogram nan.
>> Se konsa, fondamantalman, lè ou fè malok, sa ki w ap fè se allocation memwa nan
ègzekutabl, ki vle di ke w ap n ap deside dwa nan moman sa a ke ou
ta dwe gen ke memwa.
Se konsa, se lè w ap allocation li.
ki fè sans?
>> Se konsa, sonje, chemine an gen varyab ke yo te kreye sou konpile tan.
Lè sa a, pil wòch la gen varyab ke yo te kreye menm jan 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 k ap pase yo asiyen memwa sou pil wòch la.
Epi li pral retounen yon konsèy nan kote yo te ki memwa resevwa lajan an.
>> Se konsa, lè ou do--
isit la pou example--
n zetwal konsèy.
Lè sa a, konsèy egal malok gwosè nan fwa pous 10.
Mwen kreye yon konsèy.
Lè sa a, mwen deside ke konsèy nan valè a nan konsèy la ki malok
an, ap ban m '.
>> Se konsa, mwen mande malok ou ka asiyen espas pou 10 nonm antye relatif.
Sa a ki sa li la di.
Epi malok ki ban m 'tounen yon konsèy nan kote sa a.
Fè sans?
OK.
Mwen Ak GetString se, fondamantalman, fè yon rele 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 nan memwa.
Òdinatè w lan pa pral yo dwe kapab asiyen ki anpil.
>> Se konsa, malok se jis ale retounen nil.
Se konsa, toujou sonje yo tcheke si an konsèy ke 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 fot bò.
Epi finalman, pa bliye memwa lib ou.
>> Malok se kreye memwa nan pil wòch la.
Epi ou gen yo libere 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 Uploaded li ankò?
>> LUCAS: Mwen panse ke Dave se transfere li byento.
>> DAVE: Li pral afiche.
>> LUCAS: Li pral entènèt.
>> ODYANS: Li a jiska.
>> LUCAS: Li a jiska?
OK.
Yeah?
>> ODYANS: [fèbl]?
>> LUCAS: Wi, ou ta dwe libere tout la memwa ki se 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
apre 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.
Epi tou, y ap videyo a dwe mete kanpe.
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 pil ankadreman pou chak aktif apèl fonksyon.
Nou pral wè ke nan yon dezyèm fwa.
Epi tou li sonje sa ki aktyèlman ale nan chak ankadreman chemine yo pral yo dwe
varyab yo 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 se printfing retounen nan
valè de foo 4.
foo se jis ale nan retounen nan valè de bar 4 vigil 6.
Ak bar ki pral mete kèk lokal n varyab egal a 4 fwa 6.
Lè sa a, retounen n.
>> Se konsa, kite pou yo gade nan chemine a nan tout iteration 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 pati anba a nan chemine nou an, nou gen yon ankadreman chemine pou prensipal la.
Lè pwogram lan kòmanse, prensipal se toujou pral yo dwe nan a
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 la, tankou mwen te di anvan,
nou te arg ak rgv pran moute espas andedan nan prensipal ankadreman chemine.
Se konsa, prensipal se kounye a pral 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 ale nan chemine ankadreman foo a?
Oke, foo gen yon agiman n.
Ak n se egal a 4 depi se sa ki prensipal ap pase kòm agiman foo la.
>> Se konsa, kounye foo ki pral rele ba.
Ki sa ki ba pral gen anndan nan 'ankadreman chemine li yo?
Li te gen x egal a 4 y egal a sis.
Sa a pa tout sa ki nou ap ale nan gen nan ankadreman an pil paske ba
tou te gen yon n varyab lokal yo.
Ak n nou ap ale nan mete egal a 24.
>> Se konsa, kounye bar ki pral retounen n.
Se konsa, ba ki retounen 24 a foo nan chemine ankadreman.
Epi paske bar se kounye a retounen, ki vle di nou ap eklate ankadreman an pil
pou ba koupe nan chemine a.
Se konsa, tout memwa nan ki ba te lè l sèvi avèk se kounye a nan chemine a.
>> Koulye a, foo se tou ale retounen 24 a prensipal la.
Se konsa, kounye a ke foo se retounen, memwa a ki foo te lè l sèvi avèk nan 'li yo
se ankadreman chemine 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 yo dwe yon lòt ankadreman chemine pou printf la
fonksyon apèl.
>> Ki sa yo nou pase printf?
Sa a ki sa k ap pase ale sou ankadreman chemine li yo.
Omwen a anpil, nou ap 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.
Nou pa konnen.
>> Men, tout sa ki ale nan printf a chemine ankadreman.
Li nan pral 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 se yon diferans sibtil ant agiman ak paramèt.
E reyèlman, an komen pale, moun ki gen tandans nan 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 nan paramèt prensipal la.
Agiman yo se ki sa 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 nan.
Ak n nan paramèt, andedan nan foo, pran sou valè nan 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 yo wè miltip chemine ankadreman.
Yeah?
>> ODYANS: Poukisa foo te rele anvan printf?
>> ROB: Poukisa yo te foo rele anvan printf?
Se konsa, mwen te kapab gen, 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 ka aktyèlman egzekite apèl la printf jiskaske nou
konnen sa ki foo nan 4 se.
Se konsa, nou ap ale nan evalye sa a.
Ak sèlman yon fwa ki nan fè yo ale tounen vin ak 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 miltip pass.
Se konsa, li ta dwe ba int ak int foo depi tou de nan sa yo
ap retounen nonm 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 te fè 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 nan yon fwa.
Yeah?
>> ODYANS: [fèbl]
printf rele foo paske nou 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 ki c ki pral egzekite bagay sa yo se, anvan nou kapab
rele yon fonksyon, tout nan agiman yo nan fonksyon an gen
ap evalye nèt.
Se konsa, se sa a konplètman evalye?
Wi, li nan jis yon fisèl.
Se jis nan yon valè.
>> Lè sa a, nou gen konplètman evalye sa a.
Yon fwa sa a se fè, kounye a tout moun nan yo evalye agiman li yo.
Epi, koulye a nou ka fè an rele printf.
Yeah?
>> ODYANS: Yon kesyon.
Si ou gen yon fonksyon anile, yo dwe ou gen retounen virgules?
>> ROB: Ou pa fè sa yon virgules retounen si ou gen yon fonksyon anile.
OK.
Se konsa, kounye kèk bagay pil wòch.
Se konsa, pil wòch se ki jan nou pral fè fas ak jesyon memwa dinamik.
Lè sa a dirèkteman diferansye ak nan chemine ki nou ta ka rele otomatik
jesyon memwa.
>> Se konsa, sou chemine a, pa janm ou 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 bezwen enkyete sou li.
Li nan otomatik yo.
Se konsa, pil wòch la se manyèl.
Ak [fèbl la]
soti nan fonksyon sa yo malok ak gratis.
>> Se konsa, isit la nan yon lòt pwogram nan.
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 ap ale nan jis mete sa x ap lonje dwèt nan 50.
Enprime sa x se lonje dwèt 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 an ak pil wòch?
Se konsa, nou pral kòmanse ankò.
Anba a nan chemine nou an tankou anvan.
Sonje ke ou chalè dirèkteman opoze chemine a?
Se konsa, nou ap ale nan gen nan tèt nan pil wòch nou an moute a.
>> 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 x varyab lokal yo, ki
se yon etwal Int.
Se konsa, nou ap ale nan repekte nan pwogram sa a.
Premye bagay nou genyen se yon rele nan malok.
>> Se konsa, nou ap fè yon apèl nan malok.
Malok se yon fonksyon.
Li k ap pase yo ka resevwa yon ankadreman chemine.
Ki sa yo nou pase nan malok?
Ki nan ale nan ale andedan nan ankadreman an chemine.
Nou ap pase gwosè nan n, ki se 4.
Se konsa, ki se pase bay malok.
>> Ki sa ki malok fè?
Li bèn nou kèk espas sou pil wòch la.
Se konsa, nou ap ale nan ale nan pil wòch la.
E nou pral gen tan pwan 4 bytes soti nan pil wòch la.
Se konsa, kite la jis bay ki yon adrès abitrè.
0x123 Jis pretann ke se yon adrès ki se sou pil la.
>> Se konsa, sa se aktyèlman andedan nan ki rejyon nan memwa nan adrès Ox123?
Fatra.
Se konsa, nou pa t 'ki estoke 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, kounye malok.
Ak ki sa nou fè lè malok retounen?
Nou mete sa li tounen lakay la.
Nou mete x egal a sa li se retounen.
Se konsa, sa se li retounen?
Li nan retounen 0x123 depi ke se 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 pral yo dwe mete egal a 0x123 ki, pictorially,
nou souvan trase kòm x gen yon vrè flèch montre nan ki blòk.
Men, x se jis estoke adrès sa.
Se konsa, kounye a nou gen yo tcheke si x se nil.
Li pa nil.
Nou kwe ke ki malok plas.
>> Se konsa, kounye zetwal x egal 50.
Se konsa, zetwal sonje li vle di ale nan adrès sa.
Se konsa, 0x123 Nou pwal ale nan adrès sa.
Se konsa, ki pote nou moute a.
Ki sa yo nou fè nan adrès sa?
Nou ap estoke 50.
>> Se konsa, apre liy sa a, ke se sa ki bagay yo ap mache yo gade tankou.
Se konsa, kounye a li nan pa gen okenn ankò fatra moute a.
Koulye a, nou konnen ke 50 se nan ki adrès patikilye paske
nou mete l 'nan sa.
OK?
Se konsa, kounye a nou ap ale nan enprime f.
>> Se konsa, premye nou ap ale nan enprime zetwal x.
Se konsa, sa se yon zetwal 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, enprime f sa.
Lè sa vle di li pral ekri ak lèt ​​detache 50.
Lè sa a, ki retounen.
>> Lè sa a, nou gen dezyèm printf la.
Nou kounye a pousan p.
Si ou pa te wè l ', sa a, se jis ki jan ou enprime yon konsèy.
Se konsa, nou gen pousan mwen, pousan f, 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 enprime x tèt li, nou ap enprime ki sa ki aktyèlman andedan
x, ki se 0x123 Se konsa, premye a ekri ak lèt ​​detache f ki pral enprime 50.
Dezyèm ekri an lèt detache f a ki pral ekri ak lèt ​​detache 0x123 Yeah?
>> ODYANS: Èske 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 ak lèt ​​detache li kòm yon ekzadesimal.
Se jis ki jan ou fè sa.
>> Lè nou konsidere ke, pousan d ta enprime kòm desimal.
Sa a te nou jwenn pousan d. mwen se jis nonb antye relatif.
pousan p se espesyalman pou endikasyon.
>> Se konsa, x se yon konsèy.
Nou vle itilize pousan p.
Men, pousan x te kapab travay.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Yeah.
Omwen pou sa a call-- Se konsa, mwen pa t 'gen ladan li 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 itilize.
Lè sa a, rele nan pwochen nan printf kounye a andedan nan printf chemine ankadreman se
pousan p antislach n ak tou sa a valè x ki se, ki se 0x123.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Li pral enprime yon bagay ki sanble tankou 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 sa?
>> ODYANS: [fèbl]?
>> ROB: Poukisa se sa a konsèy 4 bytes?
Se konsa, gen yon pakèt antye nan 0 a nan devan sa a.
Se konsa, li vrèman 0x0000000123.
Sou yon sistèm 64-ti jan, ta gen yon pakèt antye nan plis zewo.
Yeah?
>> ODYANS: [fèbl].
>> ROB: Se konsa, printf nan premye ki pral print--
>> ODYANS: [fèbl].
>> ROB: Wi, li k ap pase yo enprime sa x ap montre yo.
Star di ki sa ki sa a bagay lonje dwèt yo.
Gen tan pwan li.
Se konsa, sa se li lonje dwèt nan?
50.
Gen tan pwan li.
Sa a ki sa nou ap ale nan enprime.
Lè nou konsidere ke, youn nan pwochen, nou ap jis enprime x tèt li.
Ki sa ki 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, kounye a gratis konnen, tout dwa, Mwen gen yo ale jiska pil wòch la
ak gratis ki memwa.
Li nan 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.
Kounye a gratis pral retounen.
Remake x se toujou 0x123.
Men sa se kounye a pa memwa ki valid.
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 retou youn pou lè.
Se konsa, li la tankou, yeah, pèmèt gen ladan yo retounen nan 0.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Se konsa, apre x gratis, ki 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, ki ki memwa se kounye a yo te itilize pou yon lòt bagay.
Se konsa, li konpòtman endefini.
Epi endefini vle di anyen ka rive.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Non, kidonk si w bay x yon lòt bagay.
Se konsa, si dwa isit la nou te di x egal malok yon bagay else--
malok gwosè event--
Lè sa a, ki blòk orijinal nan memwa se pa sa libere.
Epi 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 libere li.
OK, se konsa Lè sa a, retounen 0 vle di fè.
>> Tout dwa, kidonk pil debòde.
Ki sa ki nan lide nan isit la?
Se konsa, sonje, pil wòch ki pral desann.
Stack ap moute.
Se konsa, sa a te egzanp ki soti nan konferans, Mwen panse ke, kote prensipal se jis ale nan
rele sa a foo fonksyon, ki se ale yo rele tèt li recursive sou yo ak
sou ankò.
>> Se konsa, chemine ankadreman yo ale nan travay egzakteman menm bagay la.
Se konsa, nou ap ale nan kòmanse avèk prensipal kòm pati anba ankadreman an pil.
Lè sa a, prensipal ki pral rele foo, ki ki pral jwenn yon ankadreman chemine.
>> Lè sa a, foo ki pral rele foo ankò, ki se ale nan jwenn
yon lòt ankadreman chemine.
Lè sa a, ankò, e ankò, e ankò, e ankò jiskaske, evantyèlman, nou kouri
nan pil wòch la.
Se konsa, sa a se ki jan nou jwenn yon debòde chemine.
Ak nan pwen sa a, ou fòt segman.
Oswa ou ta reyèlman seg fòt anvan pwen sa a, men wi.
>> ODYANS: se nwayo pil fatra a menm jan fòt seg?
>> ROB: Se konsa ou pral wè segmentation nwayo fòt jete.
Ou jwenn yon pil fatra nwayo lè ou fòt segman.
Epi li a tankou yon pil fatra nan tout nan nan 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 segmentation fòt vle di gen nan 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 se, lè ou chemine 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 riban enfini.
Tankou, sa a se tankou yon enfini repetitif bouk ak pou nou jwenn yon lòt
chemine ankadreman chak fwa.
Men, jis andedan nan yon regilye enfini pandan y ap one--
byen, kite a pa menm enprime 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 riban ak Lè sa a [fèbl]?
>> ROB: Se konsa, si andedan nan riban an 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 enfini sa a anpile ankadreman chemine.
>> ODYANS: [fèbl]?
>> ROB: Wi.
Se konsa, sa 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 chemine 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 nan chemine a ak pil wòch la menm bagay la tou pou tout pwogram?
Apeprè.
Gen kèk Metòd chans ki kote chemine a kòmanse ak
ki kote pil wòch la kòmanse.
Si ou rive gen yon lot antye nan 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 anpil.
Ant 32 Bits ak 64 Bits, ki 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 gen nan 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 pil wòch espas.
Tout dwa.
>> Se konsa, bagay pase a se konpilasyon.
Se konsa, ou ta dwe konnen pwosesis sa a.
Genyen kat etap gwo.
Se konsa, youn nan premye yo ta dwe dwe fasil a sonje.
Pre-pwosesis.
Li te gen prefiks nan pre nan li.
Se konsa, li vini anvan tout lòt bagay.
>> Bagay la sonje se regle la.
Se konsa, regle defini ak regle an gen ladan nan tout sa yo.
Moun sa yo ki, yo tout pre-processeur direktiv.
Sa yo se bagay sa yo yo ki pre-processeur pran swen nan.
>> Se konsa, sa yon-processeur pre fè?
Li se yon bagay vrèman bèbè.
Tout li a kapab nan yo se tout moun sa yo kopi, e li te koupe, ak keratin operasyon yo.
>> Se konsa, regle an gen ladan estanda h i0 dot.
Ki sa ki se ke ap fè?
Li nan arachman estanda i0 dot h nan ranpli e kole l 'nan tèt la
tout kote li di regle an gen ladan estanda i0 dot h.
>> Ak nenpòt ki regle defini ki nou te wè, ki sa ki ki ap fè?
Li kopye valè a ki regle nan defini se defini kòm ak kole ki
tout kote w ap itilize valè an.
Se konsa, preproseseur la jis fè sa ki reyèlman tèks ki senp ki baze operasyon yo.
Li fè sa ki pa gen anyen entelijan.
Se konsa, tout lòt bagay se pi plis 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 Kòd asanble.
Yeah?
>> ODYANS: [fèbl]?
>> ROB: Yeah, nou kenbe sa.
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 pi wo nivo nan lang
yon pi ba lang nivo.
>> Epi 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è pa konprann asanble.
Li sèlman konprann yo menm ak zewo.
Se konsa, pwochen etap la se rasanble, ki pote nou soti nan enstriksyon sa yo ki
CPU ou a 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 te founi ou ak yon binè pou sa a bibliyotèk cs50, ki te gen GetString
ak GetInt ak tout sa ki.
>> Men, cs50 bibliyotèk la
nan ak tèt li se pa ègzèkutabl.
Li pa gen yon fonksyon prensipal.
Se jis yon pakèt moun sou binè ke ou ka itilize.
Se konsa, ki lye ak se ki jan nou pote ansanm tout nan sa yo diferan dosye binè
nan yon ègzèkutabl vrè.
Youn ki 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 is--
Ceaser dot c.
Men koulye a, li a te konpile desann nan binè.
Se konsa, Ceaser dot o.
Lè sa a se cs50 nou an bibliyotèk 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, regle an gen ladan se aktyèlman yon
etap pre-processeur.
Men, sa a ki apa a.
Si ou pa ap lè l sèvi avèk nenpòt ki fonksyon ki yo deyò nan dosye sèl ou Lè sa a,
pa gen okenn, ou pa bezwen fè rapò ant anyen depi ou gen tout bagay.
>> Se Sa te di, printf ke yo te lye nan.
Si ou janm sèvi ak printf, ki nan yon bagay ki bezwen yo dwe lye nan
paske ou pa t 'ekri sa.
Epi, an reyalite, printf se otomatikman lye nan.
Ou konnen ki jan nan liy lan lòd oswa lè ou tape fè, ou wè li gen
priz l 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 sou anyen?
>> ODYANS: [fèbl]?
>> ROB: Ki lye ak?
Nou gen yon pakèt antye nan diferan dosye binè.
Sa a se egzanp nan kanonyal ke nou itilize se bibliyotèk cs50.
Nou te konpile ak ba ou a binè pou sa a bibliyotèk cs50.
>> Ou vle sèvi ak GetString nan pwogram ou an.
Se konsa, ou ale epi sèvi ak GetString.
Men, san Kòd binè mwen an pou GetString, lè ou konpile kòd ou a
desann, ou pa ka aktyèlman kouri ou pwogram paske GetString chèn se
pa ankò konplètman defini.
>> Li nan sèlman lè ou konekte nan binè mwen ki gen GetString ke kounye a, tout
dwat, mwen ka aktyèlman egzekite GetString.
Dosye mwen an se konplè.
Apre sa, mwen ka kouri sa a.
Yeah?
>> ODYANS: Koneksyon konvèti binè a ègzèkutabl?
Se konsa, menm si ou pa gen lòt bibliyotèk, pa ta li toujou gen
nesesè yo tradui [fèbl la]?
>> ROB: Se konsa yon ègzèkutabl se toujou nan binè.
Li nan jis 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 tout ap mete.
Tout dwa.
Mèsi.
>> [Aplodisman]
>> ODYANS: Mèsi poutèt ou.
>> ROB: Yeah.