>> [MUSIC PLAYING]
>> [Video playback]
>> O, yalan莽谋.
>> N蓹 -Haqq谋nda?
>> M蓹n bilmir蓹m.
>> Biz n蓹 bilirik -Yax艧谋?
>> 9:15, Ray y蓹ni Santoya ATM idi.
-B蓹li.
Bel蓹 ki, sual, n蓹 O 9:16 at edirdi?
>> Bir 艧ey 9 millimetr 莽蓹kili艧l蓹ri.
B蓹lk蓹 o snayper g枚rd眉m.
>> -V蓹 Onunla i艧 idi.
>> G枚zl蓹yin.
Geri bir gedin.
>> -N蓹 G枚r眉rs眉n眉z?
>> Tam ekran q蓹d蓹r onun 眉z g蓹tirin.
>> -Onun Eyn蓹k.
>> Bir 蓹ks -Var var.
>> -Bu Nuevitas beysbol komanda var.
Bu onlar谋n logo var.
>> -V蓹 O s枚hb蓹t Kim ki, jaket qal谋c谋 oldu.
>> [END playback]
>> DAVID Malan: B眉t眉n h眉ququ.
Bu CS50 v蓹 bu bir az daha bir [I艧itilemez] olan sen
problemi il蓹 dabbling d枚rd se莽in.
Bu g眉n biz bir az daha baxmaq ba艧lamaq d蓹rin g枚st蓹ricil蓹rin蓹 adl谋 bu 艧eyl蓹r,
Bu baxmayaraq ki, olduqca gizli m枚vzu,
bu olacaq 莽谋x谋r ki, vasit蓹 olmaq olan biz
tikinti v蓹 montaj ba艧laya bil蓹rsiniz daha 莽ox inki艧af etmi艧 proqramlar谋.
Amma biz son 莽蓹r艧蓹nb蓹 g眉n眉 bunu ilk bir claymation yolu il蓹.
Bel蓹 ki, bu, geri edir Binky v蓹 biz ondan istifad蓹
bir proqram n蓹z蓹r ki, h蓹qiq蓹t蓹n bir 艧ey maraql谋 etm蓹di,
ancaq bir ne莽蓹 probleml蓹r a艧kar etdi.
Bel蓹 ki, niy蓹 biz g蓹zm蓹k deyil, bu g眉n ba艧layacaq tez bu add谋mlar bir ne莽蓹 il蓹,
insan 艧蓹rtl蓹rin蓹 daxil 莽蓹km蓹k 眉莽眉n c蓹hd edin d蓹qiq n蓹 burada olacaq
v蓹 niy蓹 bu pis, sonra h蓹r蓹k蓹t v蓹 h蓹qiq蓹t蓹n bir 艧ey bina ba艧lamaq
bu texnika il蓹?
Bel蓹 ki, bu ilk idi Bu proqram iki x蓹tl蓹ri
v蓹 layman nin bax谋m谋ndan, n蓹 Bu iki x蓹tl蓹ri edirs蓹n?
茝sasl谋 rahat kims蓹 n蓹 ekranda elan edir il蓹?
Bunu bu iki x蓹tl蓹ri hans谋lard谋r?
Bu, b眉t眉n deyil ki, h蓹ft蓹 bir m眉xt蓹lif,
lakin b蓹zi yeni x眉susi simvolu var.
Evet?
Back var.
>> Auditoriya: g枚st蓹ricil蓹rin蓹 elan?
DAVID Malan: daha dem蓹k?
Auditoriya: g枚st蓹ricil蓹rin蓹 elan?
DAVID Malan: elan g枚st蓹ricil蓹rin蓹 v蓹 nin bir az daha safla艧d谋rmaq ed蓹k.
Auditoriya: [i艧itilemez] 脺nvan x v蓹 sonra y.
DAVID Malan: V蓹 sonra m眉raci蓹t.
Bel蓹 ki, x眉susi biz i艧le biz iki d蓹yi艧蓹nl蓹rin elan edilir.
Bu d蓹yi艧蓹nl蓹r, baxmayaraq ki, gedir n枚v眉 int ulduz olmaq 眉莽眉n
daha 莽ox x眉susi dem蓹kdir Onlar saxlamaq 眉莽眉n gedir
bir int 眉nvan谋, m眉vafiq olaraq, x v蓹 y.
陌ndi h蓹r hans谋 bir d蓹y蓹rl蓹r var?
Bu bir faktiki 眉nvanlar var vaxt bu n枚qt蓹d蓹 iki d蓹yi艧蓹nl蓹rin?
Yox.
Bu, sad蓹c蓹 zibil d蓹y蓹rl蓹r bel蓹 deyirl蓹r.
Siz, h蓹qiq蓹t蓹n, bir t蓹yin deyils蓹 RAM idi n蓹 d蓹yi艧蓹n,
蓹vv蓹ll蓹r adet s谋f谋r il蓹 doldurmaq niyy蓹tind蓹dir v蓹 olanlar谋 bu d蓹yi艧蓹nl蓹rin d蓹.
Amma biz h蓹l蓹 bilmir蓹m n蓹 onlar v蓹 ki
niy蓹 Binky 眉莽眉n 蓹sas olacaq Ke莽蓹n h蓹ft蓹 ba艧谋n谋 itirdi.
>> Bel蓹 ki, bu claymation idi bu t蓹c蓹ss眉m
qovu艧durma臒谋m谋z yaln谋z iki d蓹yi艧蓹nl蓹r var gild蓹n ki莽ik dair蓹vi 蓹d蓹d,
ki d蓹yi艧蓹nl蓹rin saxlamaq, lakin bil蓹r b眉k眉l眉 oxlar g蓹lir,
onlar h蓹qiq蓹t蓹n i艧ar蓹 deyilik yerd蓹 枚zl眉y眉nd蓹 tan谋n谋r.
Bel蓹likl蓹, biz bu x蓹tti idi v蓹 bu yadda艧 眉莽眉n idi yeni 枚t蓹n h蓹ft蓹 malloc
yaln谋z bir x眉lya yoldur ayr谋lmas谋, 蓹m蓹liyyat sistemi deyir蓹m, Linux
v蓹 ya Mac OS v蓹 ya Windows, hey, M蓹n蓹 bir yadda艧 verir,
v蓹 siz b眉t眉n dem蓹k 蓹m蓹liyyat sistemi
yadda艧 眉莽眉n xahi艧 zaman n蓹.
N蓹 qay臒谋 niyy蓹tind蓹 deyil Siz bunu olacaq
lakin 蓹m蓹liyyat dem蓹k laz谋md谋r n蓹 malloc yolu il蓹 sistemi.
Evet?
>> Auditoriya: n蓹 q蓹d蓹r?
DAVID Malan: n蓹 q蓹d蓹r?
N蓹 q蓹d蓹r bayt, v蓹, bel蓹 ki, bu, yen蓹, bir g枚st蓹rdi M蓹s蓹l蓹n, yaln谋z deyib
M蓹n蓹 bir int 枚l莽眉s眉 verir.
Bir int 陌ndi, 枚l莽眉s眉 d枚rd bytes v蓹 ya 32 bit edir.
Bel蓹 ki, bu yaln谋z bir yoludur dey蓹r蓹k, hey, 蓹m蓹liyyat sistemi,
M蓹n蓹 yadda艧 d枚rd bayt verm蓹k M蓹n s蓹r蓹ncam谋nda istifad蓹 ed蓹 bil蓹rsiniz ki,
v蓹 x眉susi n蓹 h枚rm蓹tl蓹 malloc qaytar谋lmas谋
D枚rd bayt ki y谋臒谋n 眉莽眉n nec蓹?
Auditoriya: 脺nvan?
DAVID Malan: 眉nvan.
D枚rd bayt ki, y谋臒谋n 眉nvan谋.
M蓹hz.
V蓹 bel蓹 ki, n蓹tic蓹d蓹 saxlan谋l谋r n蓹 var Biz, h蓹qiq蓹t蓹n, yoxdur, niy蓹 x v蓹 ki
qay臒谋 n蓹 ki say谋 Bu OX1 ya OX2 olsun 眉nvan, var
v蓹 ya b蓹zi sirli hexadecimal 眉nvan谋.
Biz yaln谋z pictorially qay臒谋 ki, d蓹yi艧蓹n x indi ki,
yadda艧 ki, y谋臒谋n i艧ar蓹.
Bel蓹 ki, arrow bir g枚st蓹rici t蓹msil, v蓹 ya daha d蓹qiq des蓹k, bir yadda艧 眉nvan谋.
Ancaq yen蓹 d蓹, biz ad蓹t蓹n qay臒谋 yoxdur o faktiki URL n蓹.
陌ndi bu x蓹tt deyir n蓹 layman nin bax谋m谋ndan?
Star x 42 n枚qt蓹li verg眉l olur.
Bu n蓹 dem蓹kdir?
Siz getm蓹k ist蓹yirs蓹n?
Boyun dan谋艧谋q yoxdur.
>> Auditoriya: x 眉nvan谋 42 edir.
>> DAVID Malan: x 眉nvan谋 42 edir.
Olduqca deyil.
Bel蓹 ki, yax谋n deyil, kifay蓹t q蓹d蓹r var, 莽眉nki bu x prefixing ulduz.
Bel蓹likl蓹, biz bir az 莽imdik laz谋md谋r.
Evet?
>> Auditoriya: d蓹y蓹r ki, pointer x 42 i艧ar蓹 edir.
DAVID Malan: OK.
pointer x ki, d蓹y蓹ri 42, dey蓹k 眉莽眉n edilir i艧ar蓹 ed蓹r蓹k,
v蓹 ya, ulduz ba艧qa bir yol qoymaq x n蓹 眉nvana getm蓹k deyir
Bu 1 Oxford olsun, x deyil K眉莽蓹 v蓹 ya 33 Oxford Street
v蓹 ya OX1 ya OX33, n蓹 , r蓹q蓹mli 眉nvan oldu臒unu
star x x dereferencing edir.
Bel蓹 ki, 眉nvana getm蓹k v蓹 sonra say谋 42 qoymaq.
Bel蓹 ki, ola ki, bir oldu臒unu s枚yl蓹y蓹n ekvivalent yol.
Bel蓹 ki, b眉t眉n g枚z蓹l v蓹 sonra biz 艧蓹kil t蓹msil ed蓹c蓹k
biz a艧a臒谋dak谋 kimi 蓹lav蓹 etdik harada D枚rd ki, y谋臒谋n 42
, sa臒 t蓹r蓹find蓹 bayt lakin h蓹r 艧eyi 蓹yri getdi bu x蓹tt idi
v蓹 Binky ba艧 atd谋 Bu n枚qt蓹d蓹 off,
pis 艧eyl蓹r zaman ba艧 莽眉nki Siz zibil d蓹y蓹rl蓹r dereference
etibars谋z dereference Siz v蓹 ya g枚st蓹ricil蓹rin蓹 v蓹 m蓹n etibars谋z dem蓹k
脟眉nki bu n枚qt蓹d蓹 hekay蓹, y daxilind蓹 n蓹dir?
Based y d蓹y蓹ri n蓹dir Son bir ne莽蓹 add谋mlar?
Evet?
Bu n蓹dir?
>> Auditoriya: bir 眉nvan.
DAVID Malan: bir 眉nvan.
Bu 眉nvan olmal谋d谋r lakin m蓹n bunu ba艧lat谋lm谋艧 var?
Bel蓹 ki, h蓹l蓹 yoxdur.
Bel蓹 ki, orada olmaq 眉莽眉n n蓹 m蓹lumdur?
Bu, sad蓹c蓹 b蓹zi zibil d蓹y蓹ri var.
Bu s谋f谋rdan h蓹r hans谋 bir PO ola bil蓹r 2 milyard siz RAM iki gigs varsa,
v蓹 ya s谋f谋r 4 milyard Siz var 蓹g蓹r RAM d枚rd gigabayt var.
Bu, b蓹zi zibil d蓹y蓹ri var lakin problem
蓹m蓹liyyat sistemi ki, Bu siz蓹 verdiyi 蓹g蓹r
yadda艧 ki, y谋臒谋n x眉susi Siz getm蓹k 莽al谋艧d谋臒谋n谋z ki,
眉mumiyy蓹tl蓹 n蓹 s蓹b蓹b olacaq bir seqmentasiya g眉nah kimi g枚rd眉m.
Bel蓹 ki, 蓹slind蓹, siz h蓹r hans谋 olan ofis saat probleml蓹ri m眉bariz蓹
v蓹 ya probleml蓹ri ki, daha 莽ox 眉mumiyy蓹tl蓹 anlamaq 眉莽眉n 莽al谋艧谋r谋q il蓹
bir seqmentasiya g眉nah, ki, 眉mumiyy蓹tl蓹 dem蓹kdir
Siz bir seqment toxunan edirik Siz olmamal谋d谋r yadda艧.
Siz yadda艧 toxunan edirik ki, 蓹m蓹liyyat sistemi deyil
bu olsun, siz toxunmaq icaz蓹 Sizin array 莽ox ged蓹r蓹k
v蓹 ya olub, indi ba艧lay谋r Siz toxunan edirik, 莽眉nki bu
yaln谋z bir zibil d蓹y蓹ri yadda艧.
>> Bel蓹 ki, burada star x bunu undefined davran谋艧 sort.
Siz bahis 莽眉nki he莽 vaxt , proqram yaln谋z q蓹za olacaq ki,
dey蓹r蓹k edirik, 莽眉nki, bu 眉nvana getm蓹k
v蓹 siz he莽 bir fikrim burada var ki, 眉nvan 蓹slind蓹.
Bel蓹 ki, 蓹m蓹liyyat sistemi 莽ox g眉man ki, proqram q蓹za gedir
n蓹tic蓹sind蓹 h蓹qiq蓹t蓹n kimi deyil n蓹 Binky orada oldu.
Bel蓹 ki, son n蓹tic蓹d蓹, Binky sabit Bu bu problem.
Proqram 枚z眉 flawed edilib.
Amma sort ir蓹lil蓹m蓹k 蓹g蓹r 蓹v蓹zin蓹 bu x蓹tt icra,
y yaln谋z x b蓹rab蓹rdir dem蓹kdir n蓹 脺nvan x, h蓹m莽inin y qoyun.
>> V蓹 bel蓹 pictorially, biz iki oxlar谋 il蓹 bu t蓹msil
x v蓹 y i艧ar蓹 olan eyni yer蓹.
Bel蓹 ki, semantically, x b蓹rab蓹rdir y o, h蓹m d蓹, 莽眉nki
Eyni saxlan谋lmas谋 眉nvan, bundan dolay谋, 42 i艧ar蓹
v蓹 indi, zaman ulduz dem蓹k y, y 眉nvana getm蓹k
Bu maraql谋 yan t蓹siri var.
Bel蓹 ki, y 眉nvan谋 x 脺nvan eyni 艧ey.
Bel蓹 ki, 蓹g蓹r 眉nvana getm蓹k dem蓹k v蓹 y 13 d蓹y蓹r d蓹yi艧dirm蓹k,
olan ba艧qa t蓹sir edir?
X, point D, bel蓹 ki, dan谋艧maq ki, el蓹c蓹 d蓹 t蓹sir edilm蓹lidir.
>> H蓹qiq蓹t蓹n, nec蓹 Nick bu 艧蓹kil 莽蓹kdi claymation m蓹hz idi.
Biz g枚st蓹rici edin baxmayaraq y, biz eyni yerd蓹 sona 莽atd谋
v蓹 biz 莽ap olsayd谋 X v蓹 ya Y-nin pointee h蓹yata,
sonra biz 13 d蓹y蓹ri g枚rm蓹k olard谋.
陌ndi pointee olmaq dem蓹k video il蓹 uy臒undur.
Programmers 眉莽眉n m蓹nim bilik, 蓹slind蓹 he莽
s枚z pointee dem蓹k, gu艧蓹li edir ki,
, lakin ard谋c谋ll谋q 眉莽眉n video il蓹 h蓹yata
idi ki, b眉t眉n var ki, v蓹ziyy蓹t idi.
Claymation Bel蓹 ki, h蓹r hans谋 bir sual谋n谋z v蓹 ya g枚st蓹ricil蓹rin蓹 v蓹 ya malloc yaln谋z h蓹l蓹?
Yox?
Oldu.
>> Bel蓹 ki, daha olmadan ado, Bir n蓹z蓹r salaq
Bu, h蓹qiq蓹t蓹n, var harada bir m眉dd蓹t istifad蓹 edilmi艧dir.
Bel蓹likl蓹, biz bu CS50 kitabxana etdik ki, bu funksiyalar谋 b眉t眉n var.
Biz GetInt GetString bir 莽ox istifad蓹 etdik y蓹qin ki, 蓹vv蓹ll蓹r GetLongLong
M蓹nim pset bir v蓹 ya bel蓹, lakin h蓹qiq蓹t蓹n n蓹 davam edir?
Yax艧谋, tez n蓹z蓹r salaq bir proqramda ba艧l谋q alt谋nda ki,
biz siz蓹 CS50 veririk ruhland谋r谋r kitabxana, v蓹 h蓹qiq蓹t蓹n ke莽蓹n h蓹ft蓹 etibaril蓹,
biz bu q蓹buluna ba艧lam谋艧d谋r t蓹lim t蓹k蓹rl蓹r off.
Bel蓹 ki, bu, indi 莽e艧idl蓹nir bir postmortem n蓹
var davam CS50 kitabxana daxili,
biz indi h蓹r蓹k蓹t ba艧layacaq olsa da Ondan 蓹n 莽ox proqramlar谋 眉莽眉n.
>> Bel蓹 ki, bu 0 scanf adlanan bir proqramd谋r.
Bu super q谋sa.
Bu, sad蓹c蓹 bu x蓹tl蓹ri var, lakin bir funksiyas谋 adlan谋r scanf t蓹qdim
biz, h蓹qiq蓹t蓹n, g枚rm蓹k olacaq ki, CS50 kitabxana daxilind蓹 bir an,
bir az f蓹rqli formada olsa.
Line 16 Bel蓹 ki, bu proqram bir d蓹yi艧蓹n x elan edir.
Bel蓹 ki, m蓹n蓹 bir int 眉莽眉n d枚rd bayt verir.
Bu istifad蓹莽i izah edilmi艧dir say谋 edin, v蓹 sonra
Bu maraql谋 x蓹tt ki, h蓹qiq蓹t蓹n ke莽蓹n h蓹ft蓹 birlikd蓹 蓹laq蓹l蓹ri
v蓹 bu.
Scanf, v蓹 sonra bir edir bildiri艧 format string, yaln谋z printf kimi,
% I bir int dem蓹kdir v蓹 sonra bir edir bir az g枚r眉n眉r ikinci arqument
funky.
Bu i艧areti x, v蓹 geri, biz yaln谋z bu d蓹f蓹 枚t蓹n h蓹ft蓹 g枚rd眉m.
I艧areti x n蓹yi t蓹msil edir?
I艧areti C n蓹 edir?
Evet?
>> Auditoriya: 眉nvan谋.
DAVID Malan: 眉nvan谋.
Bel蓹 ki, 蓹ks edir star operator,
star operator deyir halbuki, getm蓹k Bu 眉nvan, i艧areti operator
anlamaq deyir Bu d蓹yi艧蓹n 眉nvan,
v蓹 bu, 莽眉nki 蓹sas h蓹yat scanf m蓹qs蓹di
istifad蓹莽i scan edir klaviatura giri艧,
n蓹 as谋l谋 olaraq o n枚vl蓹ri v蓹 sonra istifad蓹莽i daxil oxumaq
bir d蓹yi艧蓹n, lakin biz Son iki h蓹ft蓹 g枚rd眉m
ki, svop funksiyas谋 ki, biz h蓹yata ke莽irilm蓹si 眉莽眉n 莽aba c蓹hd
yaln谋z q谋r谋ld谋.
Svop funksiyas谋 il蓹 Xat谋rladaq ki, biz yaln谋z ints kimi A v蓹 B elan 蓹g蓹r,
biz u臒urla d蓹yi艧dirm蓹k idi svop daxilind蓹 iki d蓹yi艧蓹nl蓹rin
yaln谋z s眉d v蓹 OJ il蓹 kimi, lakin svop, geri q谋sa m眉dd蓹td蓹
h枚rm蓹tl蓹 n蓹tic蓹 n蓹 oldu x v蓹 y, orijinal d蓹y蓹rl蓹r?
He莽 bir 艧ey.
B蓹li.
He莽 bir 艧ey, 莽眉nki o vaxt ba艧 svoplar谋, yaln谋z yerli n眉sx蓹 d蓹yi艧dirm蓹k
b眉t眉n dem蓹k olan bu d蓹f蓹, zaman biz
d蓹lill蓹ri ke莽ir funksiyalar谋, biz ist蓹yirik
yaln谋z h蓹min d蓹lill蓹ri n眉sx蓹 ke莽蓹n.
Siz il蓹 ed蓹 bil蓹rsiniz Siz onlarla ist蓹diyiniz n蓹 olursa olsun,
lakin onlar he莽 bir olacaq ilkin d蓹y蓹rl蓹rini t蓹sir.
Bel蓹 ki, bu, 蓹g蓹r problemlidir scanf kimi bir funksiyas谋 var ist蓹yir蓹m
h蓹yat, onun m蓹qs蓹di scan edir klaviatura istifad蓹莽i giri艧
v蓹 sonra, bel蓹 ki, blanklara doldurmaq dan谋艧maq, ki, x kimi bir d蓹yi艧蓹n verm蓹k
d蓹y蓹ri, m蓹n 蓹g蓹r 莽眉nki yaln谋z scanf x ke莽m蓹k,
son m蓹ntiqi hesab 蓹g蓹r h蓹ft蓹, scanf ist蓹s蓹 n蓹 ed蓹 bil蓹r
x sur蓹ti il蓹, lakin bilm蓹di veririk halda daimi x d蓹yi艧蓹
, bel蓹 dan谋艧maq, bir x蓹zin蓹 x蓹rit蓹si scanf x spot qeyd harada vasit蓹si
biz ki, x 眉nvan谋 ke莽m蓹k scanf var v蓹 h蓹qiq蓹t蓹n d蓹yi艧iklik getm蓹k bil蓹r
x d蓹y蓹ri.
V蓹, h蓹qiq蓹t蓹n, b眉t眉n Bu proqram ki,
M蓹n m蓹nb蓹 scanf 0, 蓹g蓹r 5m directory, scanf 0 etm蓹k,
dot scanf do臒ramaq say谋 50, xahi艧 edirik, 50 眉莽眉n t蓹艧蓹kk眉r edirik.
>> Bel蓹 ki, b眉t眉n maraql谋 deyil lakin h蓹qiq蓹t蓹n n蓹 ba艧
tezlikl蓹 m蓹n z蓹ng kimi ki, burada x d蓹y蓹ri scanf
daimi d蓹yi艧ib olunur.
陌ndi bu g枚z蓹l g枚r眉n眉r v蓹 yax艧谋, v蓹 蓹slind蓹, onu
Biz, h蓹qiq蓹t蓹n, ehtiyac yoxdur kimi g枚r眉n眉r B眉t眉n art谋q at CS50 kitabxana.
M蓹s蓹l蓹n, run ed蓹k Burada bu bir daha.
M蓹n蓹 bir ikinci 眉莽眉n yenid蓹n ed蓹k.
Nin bir s谋ra c蓹hd ed蓹k edin v蓹 蓹v蓹zin蓹 蓹vv蓹l 50 dey蓹r蓹k,
Yaln谋z he莽 bir dey蓹k.
OK, bir az q蓹rib蓹 deyil.
OLDU.
Burada yaln谋z bir c蓹f蓹ngiyatd谋r.
Bel蓹 ki, g枚r眉nm眉r s蓹hv v蓹ziyy蓹tl蓹rd蓹 idar蓹.
Bel蓹likl蓹, biz start minimal laz谋md谋r b蓹zi s蓹hv yoxlan谋lmas谋 蓹lav蓹
istifad蓹莽i var ki, 蓹min etm蓹k 50 kimi faktiki say谋 tipli,
y蓹qin yazaraq s枚zl蓹ri 莽眉nki problemli kimi a艧kar deyil,
lakin y蓹qin ki, olmal谋d谋r.
>> Indi ki, bu versiyas谋 baxaq m蓹nim c蓹hd GetString reimplement.
Scanf b眉t眉n bu varsa funksionall谋臒谋 in艧a
niy蓹 biz bu il蓹 dabbling edilmi艧dir GetString kimi t蓹lim t蓹k蓹rl蓹r?
Yax艧谋, burada b蓹lk蓹 m蓹nim 枚z GetString sad蓹 versiyas谋
vasit蓹si bir h蓹ft蓹 蓹vv蓹l, dedim ola bil蓹r, M蓹n蓹 bir string verm蓹k v蓹 bufer z蓹ng.
Bu g眉n m蓹n yaln谋z ba艧lamaq 眉莽眉n gedir蓹m , char ulduz, geri s枚yl蓹y蓹r蓹k
yaln谋z sinonimi var.
Bu scarier g枚r眉n眉r, ancaq bu eyni 艧ey.
Bel蓹 ki, m蓹n蓹 d蓹yi艧蓹n adl谋 bufer verm蓹k ki, bir simli saxlamaq olacaq,
istifad蓹莽i simli edin dey蓹 v蓹 sonra, 蓹vv蓹l kimi,
Bu d蓹rs borc ed蓹k scanf % S bu d蓹f蓹 v蓹 sonra bufer ke莽ir.
陌ndi tez a臒l谋 ba艧谋nda olma 莽ek.
Niy蓹 demir蓹m i艧areti bu d蓹f蓹 bufer?
茝vv蓹lki misal n蓹tic蓹 莽谋xarmaq.
Auditoriya: Char ulduz bir g枚st蓹ricisidir.
DAVID Malan: M蓹hz, bu d蓹f蓹 char, 莽眉nki
star, art谋q bir g枚st蓹rici, bir 眉nvan谋 orada olan ulduz m眉蓹yy蓹n.
V蓹 scanf 眉nvan g枚zl蓹yirs蓹, yaln谋z bufer ke莽m蓹k kifay蓹tdir.
M蓹n i艧areti bufer dem蓹k ehtiyac yoxdur.
Maraql谋, siz ola bil蓹r bu kimi bir 艧ey.
Bu, m眉xt蓹lif m蓹na olard谋.
Bu g枚st蓹rici ver蓹c蓹k 蓹slind蓹 bir g枚st蓹rici 眉莽眉n
C, ancaq etibarl谋 艧ey 陌ndi sad蓹 saxlamaq imkan
v蓹 ard谋c谋l hekay蓹 saxlamaq.
M蓹n yaln谋z ke莽m蓹k gedir蓹m bufer ki, do臒ru deyil.
problem olsa bu.
M蓹n蓹 davam v蓹 bu run ed蓹k onu t蓹rtib sonra proqram谋.
Scanf 1 olun.
Lanet olsun, bu, m蓹nim compiler nin M蓹nim s蓹hv tutmaq.
M蓹n蓹 bir ikinci verin.
Cingilti.
Nin scanf-1.c deyirl蓹r.
OLDU.
Biz orada getm蓹k.
M蓹nim buna ehtiyac谋m var.
CS50 ID m眉xt蓹lif var konfiqurasiya parametrl蓹ri
ki, 枚z眉n眉z qar艧谋 qoruyur.
M蓹n h蓹min aradan laz谋m 枚z眉n眉z bu d蓹f蓹 cingilti 莽al谋艧谋r.
Bel蓹 ki, simli edin.
M蓹n ir蓹li getm蓹k v蓹 yaz谋n gedir蓹m m蓹nim sevimli salam d眉nyada.
Null, OK.
M蓹n tipli n蓹 deyil.
Bel蓹 ki, g枚st蓹ricisi var bir 艧ey yanl谋艧 olan.
M蓹n蓹 davam v蓹 yaz谋n imkan bir h蓹qiq蓹t蓹n uzun simli.
Null 眉莽眉n t蓹艧蓹kk眉r edirik v蓹 m蓹n bilmir蓹m 蓹g蓹r m蓹n onu q蓹za etm蓹k gedir蓹m.
Bir az sur蓹ti c蓹hd ed蓹k yap谋艧d谋r谋b v蓹 bu k枚m蓹k oldu.
M蓹hz bu bir 莽ox yap谋艧d谋r谋b.
Bu, m眉tl蓹q bir b枚y眉kd眉r adi daha string.
Yaln谋z h蓹qiq蓹t蓹n yazmaq ed蓹k.
Yox.
L蓹n蓹t olsun.
Command tap谋lmad谋.
Bel蓹 ki, olmayan var.
M蓹n yap谋艧d谋r谋l谋r ki, var b蓹zi pis simvol,
lakin bu 莽谋x谋r i艧l蓹m蓹k niyy蓹tind蓹 deyil.
>> , 脟眉nki bu bir daha c蓹hd ed蓹k biz, h蓹qiq蓹t蓹n, q蓹za 蓹g蓹r daha 莽ox 蓹yl蓹nc蓹 var.
Bu yaz谋n ed蓹k v蓹 indi, m蓹n h蓹qiq蓹t蓹n uzun simli sur蓹ti gedir
v蓹 indi 蓹g蓹r g枚r蓹k biz bu 艧ey q蓹za bil蓹r.
M蓹n bo艧luq 莽谋xar谋lm谋艧d谋r v蓹 bildiri艧 yeni x蓹tl蓹ri v蓹 semicolons
b眉t眉n funky simvol.
Daxil edin.
陌ndi 艧蓹b蓹k蓹 yaln谋z yava艧 olan oldu.
M蓹n ayd谋n 莽ox uzun Command-V a艧a臒谋 ke莽irilib.
L蓹n蓹t olsun!
Command tap谋lmad谋.
>> OLDU.
Yax艧谋, n枚qt蓹 yen蓹 a艧a臒谋dak谋.
Bel蓹 ki, h蓹qiq蓹t蓹n gedir n蓹 Bu b蓹yannam蓹 il蓹
line 16 char ulduz bufer?
Bel蓹 ki, 蓹ld蓹 n蓹 am M蓹n bir pointer elan zaman?
Al谋ram b眉t眉n d枚rd byte d蓹y蓹ri bufer adlan谋r, lakin onun daxilind蓹 n蓹 var
Hal-haz谋rda?
Bu, sad蓹c蓹 b蓹zi zibil d蓹y蓹ri var.
H蓹r hans谋 bir zamanda, 莽眉nki bir d蓹yi艧蓹n elan C, yaln谋z b蓹zi zibil d蓹y蓹ri var,
v蓹 biz ba艧lan臒谋c edirik Bu reall谋q 眉z蓹rind蓹 s蓹f蓹r.
陌ndi scanf dem蓹k zaman, bu 眉nvana getm蓹k
v蓹 n蓹 istifad蓹莽i n枚vl蓹ri qoydu.
Istifad蓹莽i n枚vl蓹ri 蓹g蓹r salam d眉nya, yax艧谋, m蓹n harada qoymaq bil蓹r蓹m?
Buffer bir zibil d蓹y蓹ri.
>> Bel蓹 ki, ox kimi n枚v var ki, harada bilir i艧ar蓹 edir.
B蓹lk蓹 i艧ar蓹 burada m蓹nim yadda艧.
V蓹 bel蓹 zaman istifad蓹莽i salam d眉nyada n枚vl蓹ri,
Proqram 莽al谋艧谋r string salam d眉nya backslash 0
yadda艧 ki, y谋臒谋n.
Lakin y眉ks蓹k ehtimal谋 il蓹, lakin ayd谋n deyil 100% ehtimal谋,
Komp眉ter sonra q蓹za gedir proqram谋 bu deyil, 莽眉nki
yadda艧 I toxunmaq icaz蓹 verilm蓹lidir.
Bel蓹 ki, q谋sa, bu proqram m蓹hz s蓹b蓹bd蓹n q眉surlu.
M蓹n 蓹sasl谋 n蓹 deyil蓹m?
Hans谋 add谋mlar谋 M蓹n yaln谋z kimi, 莽谋xar谋lm谋艧d谋r var biz Binky nin ilk n眉mun蓹si il蓹 莽谋xar谋lm谋艧d谋r?
Evet?
>> Auditoriya: Yadda艧 ayr谋lmas谋?
>> DAVID Malan: Yadda艧 ayr谋lmas谋.
M蓹n, h蓹qiq蓹t蓹n, ayr谋lan deyil ki, simli 眉莽眉n h蓹r hans谋 bir yadda艧.
Bel蓹likl蓹, biz yollar谋 bir ne莽蓹 bu d眉zeltebilirsiniz.
Bir, biz sad蓹 saxlamaq bil蓹r v蓹 蓹slind蓹, indi ist蓹yirik
bir blurring g枚rm蓹k 眉莽眉n ba艧lamaq niyy蓹tind蓹dir n蓹 aras谋nda x蓹tl蓹ri
bir s谋ra, bir string n蓹, n蓹 var char ulduz chars n蓹 bir s谋ra edir
edir.
Burada ikinci bir misal var strings v蓹 bildiri艧 c蓹lb
b眉t眉n M蓹n line etdik 16 蓹v蓹zin蓹 s枚yl蓹y蓹r蓹k edir
ki, bufer bir char olacaq star, yadda艧 y谋臒谋n bir g枚st蓹rici,
M蓹n 莽ox f蓹al verm蓹k gedir蓹m 16 simvol 眉莽眉n 枚z眉m眉 bir bufer,
v蓹 蓹slind蓹, tan谋艧 de臒ilseniz m眉dd蓹tli Buffering il蓹,
y蓹qin ki, video d眉nyan谋n, bir video buffering, buffering oldu臒u,
buffering.
Yax艧谋, 蓹laq蓹si burada n蓹 var?
YouTube Yax艧谋, Inside v蓹 video oyun莽ular谋n daxili
眉mumiyy蓹tl蓹 bir s谋ra edir 16-d蓹n 莽ox b枚y眉kd眉r.
Bu 枚l莽眉s眉 bir bir s谋ra ola bil蓹r MB, b蓹lk蓹 10 megabayt,
ki, array daxil brauzerinizin yoxdur , bayt b眉t眉n d蓹st蓹 download
megabayt b眉t眉n d蓹st蓹 video, v蓹 video player,
YouTube v蓹 ya kim var, ba艧lay谋r ki array bayt oxu,
v蓹 h蓹r zaman g枚rm蓹k s枚z buffering, buffering,
oyun莽u var dem蓹kdir ki, serial谋n sonunda kazan谋lm谋艧.
艧蓹b蓹k蓹 deyil ki, bel蓹 yava艧 daha bayt il蓹 array art谋r谋ld谋臒谋
v蓹 siz bit bitti istifad蓹莽i ke莽irm蓹k 眉莽眉n.
>> Bel蓹 ki, bufer bir apt m眉dd蓹tli ki, burada yaln谋z bir s谋ra, yadda艧 y谋臒谋n var.
V蓹 bu d眉zeltmek ed蓹c蓹k bu 莽谋x谋r, 莽眉nki
seriallar谋n m眉alic蓹 ed蓹 bil蓹r ki, sanki h蓹tta bufer baxmayaraq, 眉nvanlar谋
yaln谋z bir simvolu, bir var edir simvol ard谋c谋ll谋qla, bufer,
m蓹nim 眉莽眉n faydal谋d谋r, proqram莽谋, 茝g蓹r 蓹traf谋nda onun ad谋 ke莽蓹 bil蓹r
Bu sanki bir pointer, kimi olsa
bir y谋臒谋n 眉nvan谋 idi 16 chars 眉莽眉n yadda艧.
Ki, bel蓹 ki, m蓹n ke莽蓹 bil蓹r tam scanf s枚z
v蓹 indi, m蓹n bu proqram etm蓹k, scanf 2 etm蓹k, dot 莽izgi scanf 2,
v蓹 yaz谋n salam d眉nya, Ki, s媒rada daxil edin
>> Hmm, n蓹 oldu?
String edin.
M蓹n yanl谋艧 n蓹 idi?
Salam d眉nya, bufer.
Salam D眉nya.
Ah, m蓹n bunu n蓹 bilirik.
OLDU.
Bel蓹 ki, bu q蓹d蓹r oxu ilk kosmik q蓹d蓹r.
Bel蓹 ki, yaln谋z bir an f谋r谋ldaq莽谋 imkan v蓹 M蓹n yaln谋z bir 艧ey yaz谋n ist蓹diyini deyirl蓹r
h蓹qiq蓹t蓹n uzun bu uzun c眉ml蓹 kimi ki, bir, iki, 眉莽, d枚rd, be艧,
alt谋, yeddi, s蓹kkiz, doqquz, 10, 11, 12, 13, 14, 15, 16.
OLDU.
Bu, h蓹qiq蓹t蓹n uzun c眉ml蓹.
Bel蓹 ki, bu c眉ml蓹 art谋q 16 simvol
v蓹 m蓹n daxil edin hit zaman n蓹 ba艧 ver蓹c蓹k?
Yax艧谋, bu halda hekay蓹, m蓹n elan etdi bufer
h蓹qiq蓹t蓹n bir s谋ra olan getm蓹k 眉莽眉n 16 chars haz谋r.
Bel蓹 bir, iki, 眉莽, d枚rd, be艧, alt谋, yeddi, s蓹kkiz, doqquz, 10, 11, 12, 13, 14,
15, 16.
Bel蓹 ki, 16 simvol v蓹 indi m蓹n Bu uzun kimi bir 艧ey oxumaq
c眉ml蓹, n蓹 etm蓹k olacaq M蓹n bu oxumaq gedir蓹m ki, uzun
S-E-N-T-E-N-C-E, c眉ml蓹.
>> Bel蓹 ki, bu q蓹sd蓹n deyil pis bir 艧ey ki, m蓹n
k蓹narda yaz谋l谋 saxlamaq M蓹nim serial谋n s蓹rh蓹dl蓹ri,
M蓹nim bufer h眉dudlar谋ndan k蓹narda.
M蓹n xo艧b蓹xt v蓹 proqram ala bil蓹r qay臒谋 莽al谋艧an saxlamaq v蓹 deyil,
lakin 眉mumiyy蓹tl蓹, bu dan谋艧an H蓹qiq蓹t蓹n m蓹nim proqram q蓹za ed蓹c蓹k,
v蓹 bir s蓹hv m蓹nim M蓹n add谋m an kod
h眉dudlar谋ndan k蓹narda ki, serial谋n, 莽眉nki
bu 蓹g蓹r bilmir蓹m m眉tl蓹q q蓹za gedir
v蓹 ya yaln谋z 艧ansl谋 almaq 眉莽眉n gedir蓹m 蓹g蓹r.
Bel蓹 ki, bu problemlidir, 莽眉nki Bu halda, bu i艧 g枚r眉n眉r etmir
v蓹 h蓹tta baxmayaraq ki, burada taleyi aldatmaq imkan IDE bir q蓹d蓹r d枚zm蓹k g枚r眉n眉r
of--
>> Biz orada getm蓹k.
N蓹hay蓹t.
M蓹n bu ed蓹 bil蓹rsiniz yaln谋z bir deyil蓹m.
M蓹n yaln谋z 蓹yl蓹nc蓹 yazaraq bir 莽ox idi h蓹qiq蓹t蓹n uzun faktiki s枚z h蓹yata
蓹lb蓹tt蓹 枚t眉b ki, 16 bytes, 莽眉nki
Bu crazy uzun multi-line tipli s枚z, sonra n蓹 g枚r眉rs眉n眉z.
proqram 莽ap c蓹hd v蓹 sonra bir seqmentasiya g眉nah var
v蓹 seqmentl蓹艧dirm蓹 莽at谋艧mazl谋qlar zaman bu kimi bir 艧ey olur
v蓹 蓹m蓹liyyat sistemi deyir he莽 bir ki, yadda艧 toxuna bilm蓹z.
Biz 枚ld眉rm蓹k olacaq c蓹mi proqram谋.
>> Bel蓹 ki, bu problemli g枚r眉n眉r.
M蓹n proqram vasit蓹si t蓹kmill蓹艧dirilmi艧 etdik 蓹n az谋, b蓹zi yadda艧
lakin bu m蓹hdudla艧d谋rmaq g枚r眉n眉r 蓹ld蓹 funksiyas谋 GetString
b蓹zi m蓹hdud uzunlu臒u 16 strings.
Art谋q d蓹st蓹k ist蓹yirsinizs蓹 Bel蓹 ki, 16 simvol c眉ml蓹l蓹r,
S蓹n n蓹 edirs蓹n?
Yax艧谋, siz art谋ra bil蓹r 32 bu bufer 枚l莽眉s眉
v蓹 ya bu c眉r q谋sa g枚r眉n眉r.
Niy蓹 biz yaln谋z yoxdur 1000 lakin geri it蓹l蓹m蓹k.
Daxil蓹n cavab n蓹dir yaln谋z ed蓹r蓹k bu problemi aradan qald谋r谋lmas谋
1000 chars kimi, b枚y眉k m蓹nim bufer?
Bu 艧蓹kild蓹 GetString h蓹yata ke莽irm蓹kl蓹.
Burada yax艧谋 v蓹 ya pis?
Evet?
Auditoriya: siz bir 莽ox m蓹cburidir varsa yer v蓹 siz onu istifad蓹 etm蓹yin,
sonra siz ki, yer t蓹krar b枚l眉艧d眉r蓹 bilm蓹z.
DAVID Malan: Absolutely.
Siz deyil insofar kimi bu israf莽谋 var h蓹qiq蓹t蓹n o bayt 900 laz谋md谋r
v蓹 h蓹l蓹 眉莽眉n xahi艧 edirik H蓹r halda c蓹mi 1000,
Siz yaln谋z daha 莽ox yadda艧 istehlak edirik siz蓹 laz谋m 莽ox istifad蓹莽i komp眉ter,
v蓹 b眉t眉n bir sonra 茝g蓹r siz art谋q kar艧谋la艧t谋ysan谋z
h蓹yat siz蓹 etdiyiniz zaman ki, proqramlar谋 莽ox 莽al谋艧an
v蓹 onlar yadda艧 莽ox q蓹d蓹r yem蓹k edirik Bu, h蓹qiq蓹t蓹n, performans t蓹sir ed蓹 bil蓹r
v蓹 istifad蓹莽i t蓹cr眉b蓹si komp眉ter.
Bel蓹 ki, bel蓹 bir t蓹nb蓹l h蓹ll, 蓹min 眉莽眉n, v蓹 蓹ksin蓹,
Bu yaln谋z israf莽谋 var, n蓹 problem h蓹l蓹 m蓹n bufer etm蓹k olsa da, qal谋r
1000?
Evet?
>> Auditoriya: simli uzunlu臒u 1,001 edir.
DAVID Malan: M蓹hz.
Sizin string uzunlu臒u 1,001 varsa, Siz eyni problem var,
v蓹 d蓹lil il蓹, m蓹n yaln谋z o 2000 etm蓹k
ancaq bilmir蓹m bu olmal谋d谋r nec蓹 b枚y眉k inki艧af,
v蓹 h蓹l蓹, m蓹n proqram t蓹rtib etm蓹k laz谋md谋r insanlar istifad蓹 imkan 蓹vv蓹l v蓹 download
Bu.
Bel蓹 ki, bu tam n枚v眉d眉r stuff CS50 kitabxana 莽al谋艧谋r ki,
il蓹 biz蓹 k枚m蓹k v蓹 biz yaln谋z n蓹z蓹r laz谋md谋r 眉莽眉n 蓹sas h蓹yata b蓹zi
Burada, lakin bu CS50 dot C. Bu CS50 IDE olmu艧dur ki, fayl
Siz istifad蓹 etdiyiniz b眉t眉n bu h蓹ft蓹.
Bu pre-t蓹rtib v蓹 siz var avtomatik olaraq istifad蓹 edilmi艧dir
olan t蓹bi蓹t cingilti il蓹 L CS50 bayra臒谋 dash,
amma b眉t眉n vasit蓹sil蓹 a艧a臒谋 diyirl蓹yin 蓹g蓹r bu funksiyalar谋, burada GetString var,
v蓹 yaln谋z bir verm蓹k n蓹 dad谋 olur
nin bir s眉r蓹tli n蓹z蓹r salaq nisbi m眉r蓹kk蓹bliyi.
Bu super uzun funksiyas谋, lakin biz olmad谋
b眉t眉n a臒谋r d眉艧眉nm蓹k laz谋md谋r nec蓹 strings al谋nmas谋 haqq谋nda getm蓹k 眉莽眉n.
>> Bel蓹 ki, burada m蓹nim bufer v蓹 m蓹n var y蓹qin null onu ba艧lamaq.
Bu, 蓹lb蓹tt蓹, char ulduz kimi eyni 艧ey,
amma q蓹rar CS50 kitabxana h蓹yata
biz olacaq 蓹g蓹r ki, tamamil蓹 dinamik
M蓹n nec蓹 b枚y眉k 蓹vv蓹lc蓹d蓹n bilmir蓹m string users almaq ist蓹yir蓹m edir.
Bel蓹 ki, ba艧lamaq 眉莽眉n gedir蓹m yaln谋z bir bo艧 simli il蓹
v蓹 m蓹n daha 莽ox yaratmaq 眉莽眉n gedir蓹m Yadda艧 M蓹n istifad蓹莽i simli uy臒un laz谋md谋r
M蓹n yoxsa kifay蓹t q蓹d蓹r, m蓹n xahi艧 gidiyorum
daha 莽ox yadda艧 眉莽眉n 蓹m蓹liyyat sistemi.
M蓹n onlar谋n simli h蓹r蓹k蓹t gedir蓹m yadda艧 b枚y眉k bir y谋臒谋n daxil
v蓹 m蓹n azad v蓹 ya azad gedir蓹m yadda艧 kifay蓹t q蓹d蓹r b枚y眉k bir y谋臒谋n
v蓹 biz yaln谋z olacaq iteratively bunu.
>> Bel蓹 ki, bir S枚yle, Burada yaln谋z bir d蓹yi艧蓹n var
olan I takip gedir蓹m M蓹nim bufer tutumu.
Ne莽蓹 bytes uy臒un?
Burada d蓹yi艧蓹n n il蓹 var M蓹n saxlamaq 眉莽眉n gedir蓹m olan
h蓹qiq蓹t蓹n ne莽蓹 bayt track istifad蓹莽i 莽ap v蓹 ya ki, bufer.
Siz 蓹vv蓹l bu g枚rm蓹dim varsa, siz daxil ed蓹 bil蓹rsiniz ki, bir int kimi bir d蓹yi艧蓹n
, ad谋 t蓹klif kimi olan, imzas谋z edir dem蓹kdir qeyri-m蓹nfi, v蓹 niy蓹
M蓹n he莽 ifad蓹 narahat ist蓹yir蓹m bir int yaln谋z bir int deyil ki,
lakin bir imzas谋z int var?
Bu qeyri-m蓹nfi int var.
[I艧itilemez] n蓹 dem蓹kdir?
>> Auditoriya: Bu m蓹bl蓹臒 izah edir yadda艧 [I艧itilemez] ola bil蓹r.
>> DAVID Malan: B蓹li.
M蓹n imzas谋z dem蓹k Bel蓹 ki, bu 蓹slind蓹 蓹lav蓹 yadda艧 bir az verilm蓹si
蓹g蓹r v蓹 silly c眉r g枚r眉n眉r, lakin , 蓹lav蓹 yadda艧 bir az var
bir 莽ox kimi iki d蓹f蓹 var dem蓹kdir Siz t蓹msil ed蓹 bil蓹r d蓹y蓹rl蓹ri,
bir 0 v蓹 ya 1 ola bil蓹r, 莽眉nki.
Bel蓹 ki, ismar谋clar谋, bir int t蓹xmin蓹n ola bil蓹r m蓹nfi 2 milyard b眉t眉n yolu
m眉sb蓹t 2 milyard q蓹d蓹r.
Bu b枚y眉k silsil蓹l蓹ri, lakin h蓹l蓹 d蓹 c眉r israf莽谋 var
Yaln谋z qay臒谋 蓹g蓹r 枚l莽眉l蓹ri olan yaln谋z daxil蓹n
m蓹nfi olmayan olmal谋d谋r v蓹 ya m眉sb蓹t v蓹 ya 0, yax艧谋, sonra,
niy蓹 2 milyard israf edilir m蓹nfi n枚mr蓹l蓹ri 眉莽眉n m眉mk眉n d蓹y蓹rl蓹r
he莽 vaxt onlara istifad蓹 etm蓹k olacaq 蓹g蓹r?
Bel蓹 bil蓹rsiniz imzas谋z, indi m蓹nim int dey蓹r蓹k 4 milyard 0 aras谋nda t蓹xmin蓹n olun.
>> Bel蓹 ki, burada s蓹b蓹bl蓹rd蓹n yaln谋z bir int C var biz yaln谋z indi daxil deyil
Bu 蓹v蓹zin蓹 int n蓹 眉莽眉n bir char, lakin burada
neler mahiyy蓹t Siz v蓹 b蓹zi
m蓹s蓹l蓹n, istifad蓹 edil蓹 bil蓹r, h蓹tta pset d枚rd fgetc funksiyas谋
v蓹 ya sonra, biz bunu g枚r蓹c蓹yik yenid蓹n problem be艧, m眉蓹yy蓹n
fgetc 莽眉nki ad谋 kimi g枚z蓹l n枚v, sort arcanely t蓹klif
bu bir funksiyas谋 var ki, Bir xarakter al谋r v蓹 bel蓹
n蓹 蓹sasl谋 m眉xt蓹lif biz GetString i艧le haqq谋nda
biz istifad蓹 etdiyiniz deyil eyni 艧蓹kild蓹 scanf.
Biz yaln谋z add谋m-add谋m boyunca s眉r眉n蓹n olunur n蓹 眉z蓹rind蓹 istifad蓹莽i tipli,
biz h蓹mi艧蓹 bir ay谋ra bil蓹r, 莽眉nki char, v蓹 biz h蓹mi艧蓹 t蓹hl眉k蓹siz ed蓹 bil蓹rsiniz
bir-bir char baxmaq v蓹 sehrli burada ba艧 ba艧lay谋r.
M蓹n a艧a臒谋 diyirl蓹yin gedir蓹m Bu funksiya orta
yaln谋z q谋sa bu funksiyan谋 t蓹qdim etm蓹k.
脟ox var kimi malloc funksiyas谋 var
bir realloc funksiyas谋 oldu臒u realloc Siz yadda艧 y谋臒谋n t蓹krar b枚l眉艧d眉r蓹 imkan verir
v蓹 bu b枚y眉k v蓹 ya ki莽ik etm蓹k.
Bel蓹 ki, uzun hekay蓹 q谋sa v蓹 Bu g眉n 蓹limd蓹 bir dal臒a,
n蓹 GetString bilir edir ki, sort var edir
bir magically artan v蓹 ya istifad蓹莽i kimi bufer azalan
onun simli n枚vl蓹ri.
>> Bel蓹 ki, 蓹g蓹r istifad蓹莽i bir q谋sa string, bu kodu
yaln谋z kifay蓹t q蓹d蓹r v蓹sait ay谋r谋b yadda艧 simli uy臒un.
Istifad蓹莽i yazaraq saxlay谋r M蓹n bir daha v蓹 yenid蓹n kimi
v蓹 yenid蓹n, yax艧谋, 蓹g蓹r bufer nin ilkin bu b枚y眉k
v蓹 proqram h蓹yata ke莽irir bir d蓹qiq蓹 g枚zl蓹yin, m蓹n kosmik h蓹yata deyil蓹m,
Bu ikiqat olacaq bufer 枚l莽眉s眉
v蓹 sonra bufer 枚l莽眉s眉 ikiqat v蓹 misli yoxdur indeksi,
Biz burada baxmaq 蓹g蓹r, bu bu a臒谋ll谋 bir-liner.
Bu sintaksis g枚rm眉艧蓹m bil蓹r 蓹vv蓹l, ancaq ulduz b蓹rab蓹rdir dem蓹k 蓹g蓹r,
Bu eyni 艧ey kimi g眉c眉 d蓹f蓹 2 s枚yl蓹y蓹r蓹k.
Bel蓹 ki, yaln谋z misli saxlay谋r bufer tutumu
v蓹 sonra realloc izah verm蓹k 枚z眉 ki, daha 莽ox yadda艧.
>> 陌ndi kimi bir k蓹nara var Burada dig蓹r funksiyalar谋
Biz h蓹r hans谋 bir detal baxmaq deyil ki, GetInt g枚st蓹rm蓹k 眉莽眉n ba艧qa,
biz GetInt GetString istifad蓹 edin.
Biz bu deyil ki, yoxlamaq null, olan, geri,
x眉susi d蓹y蓹r ki, bir 艧ey yanl谋艧 getdi dem蓹kdir.
Biz yadda艧 bitti.
Better ki yoxlay谋n.
V蓹 biz bir sentinel d蓹y蓹r qay谋tmaq.
Amma kimi 艧蓹rh t蓹xir蓹 laz谋md谋r niy蓹 sonra biz scanf bu 蓹misi o臒lu istifad蓹
sscanf adlan谋r v蓹 bu 莽谋x谋r ki sscanf, v蓹 ya simli scanf,
Siz line n蓹z蓹r imkan verir ki, istifad蓹莽i tipli v蓹 imkan edib
mahiyy蓹tc蓹 t蓹hlil v蓹 m蓹n n蓹 Burada bunu m蓹n sscanf deyir蓹m ki,
istifad蓹莽i var n蓹 t蓹hlil Y谋臒d谋臒谋n谋z v蓹 蓹min% i etm蓹k,
Orada bir tam v蓹 biz deyil d蓹 var d蓹qiq niy蓹 bu g眉n daxil
脰zetle bir% burada c, lakin imkan verir istifad蓹莽i tipli 蓹g蓹r biz蓹 a艧kar etm蓹k 眉莽眉n
s谋ra sonra saxta bir 艧ey.
Bel蓹 ki, s蓹b蓹b ki, GetInt v蓹 GetString yeniden, yeniden siz蓹, yeniden
莽眉nki b眉t眉n edir biz yazd谋q ki indeksi,
bu c眉r istifad蓹莽i giri艧in蓹 axtar谋r 蓹min edilm蓹si tamamil蓹 r蓹q蓹mli var
v蓹 ya faktiki 眉z蓹n var point d蓹y蓹ri v蓹 ya kimi,
n蓹 d蓹y蓹rind蓹n as谋l谋 olaraq istifad蓹 etdiyiniz f蓹aliyy蓹t g枚st蓹rir.
>> Whew.
OLDU.
Ki, bir qurtum idi lakin bax谋m谋ndan burada
ki, biz idi s蓹b蓹bi bu t蓹lim t蓹k蓹rl蓹r haqq谋nda
脟眉nki 蓹n a艧a臒谋 s蓹viyy蓹d蓹dir yaln谋z 莽ox 艧ey var ki,
ist蓹dik ki, yanl谋艧 getm蓹k bil蓹r preemptively idar蓹 etm蓹k
蓹lb蓹tt蓹 o 艧eyi sinif erk蓹n h蓹ft蓹,
lakin indi pset d枚rd v蓹 pset be艧 il蓹 k蓹narda ona daha 莽ox oldu臒unu g枚r蓹c蓹ksiniz
Siz h蓹m d蓹 daha 莽ox qadir oldu臒unuz probleml蓹ri bu c眉r h蓹ll
脰z眉n眉z.
GetString ya GetInt h蓹r hans谋 suallar?
Evet?
>> Auditoriya: Niy蓹 iki d蓹f蓹 olard谋 bufer tutumu
deyil, yaln谋z artan 莽ox Bu d蓹qiq m蓹bl蓹臒i?
>> DAVID Malan: Yax艧谋 suald谋r.
Niy蓹 biz g眉c眉 iki d蓹f蓹 olard谋 Bufer f蓹rqli olaraq
yaln谋z artan b蓹zi sabit d蓹y蓹r?
Bu dizayn q蓹rar idi.
Biz yaln谋z 莽al谋艧谋r, 莽眉nki ki, q蓹rar vaxt m眉drik bahal谋 az xahi艧 olmaq
蓹m蓹liyyat sistemi yadda艧 眉莽眉n, biz etm蓹dik
min蓹rk蓹n ba艧a ist蓹yir蓹m b枚y眉k strings 眉莽眉n bir v蓹ziyy蓹t
biz xahi艧 edilmi艧dir ki, T蓹krar OS
v蓹 yenid蓹n v蓹 yenid蓹n Yadda艧 眉莽眉n s眉r蓹tli ard谋c谋ll谋qla.
Bel蓹 ki, biz yaln谋z bir q蓹d蓹r q蓹rar 枚zba艧谋na lakin biz 蓹sasl谋 眉mid,
ki, siz ed蓹k n蓹 ir蓹lid蓹 枚z眉m眉z almaq 眉莽眉n c蓹hd
v蓹 yaln谋z ki, bunu iki d蓹f蓹 saxlamaq biz d蓹f蓹 m蓹bl蓹臒i azaltmaq
biz malloc z蓹ng etm蓹k v蓹 ya realloc, lakin 眉mumi q蓹rar
bilm蓹d蓹n olmamas谋 z蓹ng N蓹 istifad蓹莽il蓹r yaz谋n ed蓹 bil蓹rsiniz.
H蓹r iki yollar谋 蓹sasl谋 ola bil蓹r.
Arguably yax艧谋.
>> Bel蓹 ki, bir ne莽蓹 n蓹z蓹r salaq Yadda艧 dig蓹r yan t蓹sirl蓹ri,
yanl谋艧 getm蓹k bil蓹r 艧eyl蓹r v蓹 al蓹tl蓹ri bil蓹rsiniz
s蓹hvl蓹r bu c眉r tutmaq 眉莽眉n istifad蓹 edin.
Bu baxmayaraq, siz b眉t眉n 莽谋x谋r check50, siz kimi 莽ox bildirm蓹di
arabas谋 yaz谋l谋 edilmi艧dir H蓹ft蓹 b蓹ri indeksi,
h蓹tta b眉t眉n check50 testl蓹r 蓹g蓹r ke莽di v蓹 h蓹tta sizin v蓹 TF
ki, super 蓹minik n蓹z蓹rd蓹 tutulan kimi code i艧l蓹yir.
Sizin kodu arabas谋 olmu艧dur v蓹 ya Siz ki, b眉t眉n flawed,
CS50 kitabxana istifad蓹, yadda艧 s谋zan edilmi艧dir.
Siz 蓹m蓹liyyat sistemi xahi艧 etdik proqramlar谋n 蓹n xatir蓹
Siz yazd谋q, lakin siz var h蓹qiq蓹t蓹n geri he莽 vaxt.
Siz GetString adl谋 etdik v蓹 GetInt v蓹 GetFloat,
lakin GetString il蓹, siz var unGetString v蓹 ya ver adl谋 he莽 vaxt
String Back ya kimi, lakin biz g枚rd眉k GetString yadda艧 ayr谋lmas谋 ki,
malloc yolu v蓹 ya bu yaln谋z funksiyas谋 realloc,
ruhunda 莽ox ox艧ar, v蓹 h蓹l蓹 biz oldum
眉莽眉n 蓹m蓹liyyat sistemi xahi艧 yadda艧谋 v蓹 yadda艧 t蓹krar
lakin onu geri verilm蓹si he莽 vaxt.
>> 陌ndi k蓹nara kimi, bu 莽谋x谋r ki, bir proqram yadda艧 b眉t眉n fit zaman
avtomatik azad olunur.
Bel蓹 ki, b枚y眉k bir 艧ey olmu艧dur deyil.
Bu q谋rmaq niyy蓹tind蓹 deyil IDE v蓹 ya yava艧 艧eyi a艧a臒谋,
lakin zaman proqramlar谋 yoxdur 眉mumiyy蓹tl蓹 yadda艧 s谋zma
v蓹 onlar uzun m眉dd蓹t 莽al谋艧an edirik.
茝g蓹r axmaq az g枚rd眉m varsa Mac OS v蓹 ya hourglass 莽im蓹rlik top
Windows bu c眉r oldu臒u a艧a臒谋 yava艧latan v蓹 ya d眉艧眉nc蓹 v蓹 ya d眉艧眉nc蓹
v蓹 ya yaln谋z h蓹qiq蓹t蓹n ba艧lay谋r bir tarama 眉莽眉n yava艧,
bu, 莽ox b蓹lk蓹 ola bil蓹r yadda艧 s谋zmas谋 n蓹tic蓹sind蓹 ba艧.
yazd谋 proqram莽谋lar istifad蓹 etdiyiniz proqram
yadda艧 眉莽眉n 蓹m蓹liyyat sistemi xahi艧 bir ne莽蓹 d蓹qiq蓹, h蓹r saat.
Amma yay谋nl谋yorsan谋z Bu bel蓹 software,
Sizin komp眉ter minimuma sonunda saat v蓹 ya g眉n,
Daha 莽ox v蓹 daha 莽ox 眉莽眉n xahi艧 edil蓹 bil蓹r yadda艧 v蓹 蓹slind蓹 he莽 istifad蓹
v蓹 sizin code ola bil蓹r, v蓹 ya proqramlar谋, yadda艧 s谋zmas谋 ola bil蓹r
v蓹 yadda艧 s谋zma ba艧lamaq 蓹g蓹r, dig蓹r proqramlar谋 眉莽眉n daha az yadda艧 var,
v蓹 t蓹siri edir h蓹r 艧eyi a艧a臒谋 yava艧.
>> 陌ndi, bu g眉n蓹 q蓹d蓹r biri il蓹 蓹n d蓹h艧蓹tli proqramlar谋
Siz imkanlar var CS50 run insofar
onun 莽谋x谋艧 daha 莽ox ezoterik kimi cingilti v蓹 ya nin v蓹 ya komanda h蓹r hans谋
biz 蓹vv蓹l etdik line proqramlar谋 lakin t蓹艧蓹kk眉rl蓹, onun 莽谋x谋艧谋 蓹laq蓹dar
b蓹zi super faydal谋 m蓹sl蓹h蓹tl蓹ri ki, faydal谋 bil蓹rsiniz pset d枚rd olacaq
v蓹 ya 蓹lb蓹tt蓹 be艧 pset.
Bel蓹 Valgrind bir vasit蓹dir ki, baxmaq 眉莽眉n istifad蓹 edil蓹 bil蓹r
proqram yadda艧 s谋z谋nt谋lar谋 眉莽眉n.
Bu 莽al谋艧t谋rmak 眉莽眉n nisb蓹t蓹n sad蓹.
Siz h蓹tta valgrind v蓹 sonra run bir az verbose baxmayaraq,
dash dash qa莽a臒谋 tam b蓹rab蓹rdir, v蓹 sonra dot
do臒ramaq v蓹 proqram ad谋.
Bel蓹 ki, valgrind sonra proqram谋 davam ed蓹c蓹k v蓹 proqram 莽ox sonunda
fit 蓹vv蓹l 莽al谋艧an v蓹 , ba艧qa bir tez verir
Bu t蓹hlil etm蓹k olacaq sizin Bu proqram 莽al谋艧an edilmi艧dir is蓹
v蓹 siz s谋zma idi dem蓹k daha yax艧谋 h蓹l蓹 h蓹r hans谋 bir yadda艧 v蓹,
Siz yadda艧 toxunmaq ki, Siz蓹 aid deyil?
O h蓹r 艧eyi tutmaq bilm蓹z, lakin bu 蓹n 艧ey tutmaq olduqca yax艧谋.
>> Bel蓹 ki, burada m蓹nim olan run bir misal var Bu proqram, run Valgrind olan,
adl谋 proqram谋 眉zr蓹 yadda艧 v蓹 m蓹n gedir蓹m
x蓹tl蓹ri qeyd etm蓹k n蓹tic蓹d蓹 bizim 眉莽眉n maraq.
Bel蓹 ki, daha 莽ox distractions var M蓹n slayd silindi etdik ki.
Amma yaln谋z n蓹 bu g枚r蓹k Proqram izah etm蓹y蓹 qadirdir.
Bu, biz蓹 h蓹r 艧eyi izah qadir 枚l莽眉s眉 4 etibars谋z yazmaq kimi.
Ba艧qa s枚zl蓹, siz yadda艧 toxunmaq, 蓹g蓹r, Yadda艧 x眉susi 4 bayt
Siz var ki, valgrind siz蓹 dey蓹 bil蓹r蓹m ki.
脰l莽眉s眉 4 Yanl谋艧 yazmaq.
Siz d枚rd bayt toxunub Siz var ki,.
Harada siz bunu etdiniz?
Bu g枚z蓹llik deyil.
Yadda艧 dot c line 21 harada var q谋f谋llar v蓹 faydal谋d谋r edirdi.
脟ox gdb kimi, bu k枚m蓹k ed蓹 bil蓹r faktiki s蓹hv qeyd.
>> 陌ndi, bu bir az daha var verbose, confusing 蓹g蓹r.
1 blok 40 bayt m眉tl蓹q loss rekord 1 1 itirdi.
Bunun m蓹nas谋 n蓹dir?
B蓹li, bu yaln谋z sizin 眉莽眉n xahi艧 dem蓹kdir 40 bytes v蓹 onu geri verdi, he莽 vaxt.
Siz malloc adl谋 ya adl谋 GetString v蓹 蓹m蓹liyyat sistemi
40 bytes, ancaq he莽 vaxt verdi azad v蓹 ya yadda艧 azad,
v蓹 蓹dal蓹tli olmaq, biz he莽 etdik Siz nec蓹 yadda艧 geri verm蓹k.
Super var 莽谋x谋r sad蓹 funksiyas谋 pulsuz 莽a臒谋r谋b.
Bir d蓹lil, 艧ey edir Siz pulsuz v蓹 ya geri verm蓹k ist蓹yir蓹m
lakin 40 bayt, y蓹qin, Bu proqram
x蓹ttind蓹 itirmi艧dir Yadda艧 20 c n枚qt蓹.
>> Bel蓹 ki, bu proqram g枚r蓹k.
Bu super yarars谋z var.
Bu, yaln谋z n眉mayi艧 etdirir bu s蓹hv.
Bel蓹 ki, bir n蓹z蓹r salaq.
Burada 蓹sas v蓹 蓹sas, bildiri艧, z蓹ngl蓹r edir bir funksiyas谋 f v蓹 sonra yekunlar谋 莽a臒谋r谋b.
Bel蓹 ki, b眉t眉n maraql谋 deyil.
F n蓹 edir?
M蓹n bir prototip il蓹 narahat etm蓹di ed蓹k.
M蓹n kodu saxlamaq ist蓹yirdi m眉mk眉n q蓹d蓹r minimal.
Bel蓹 ki, 蓹sas yuxar谋da f qoymaq v蓹 ki, 蓹lb蓹tt蓹, g枚z蓹l
bu kimi q谋sa proqramlar谋 眉莽眉n.
Bel蓹 ki, f 艧ey qay谋tmaq v蓹 etmir Biz bir 艧ey almaq, lakin bunu etmir.
Bu 莽ox kimi b蓹yan edir Binky m蓹s蓹l蓹n,
ki, x adl谋 g枚st蓹rici olacaq bir int 眉nvan谋 saxlamaq 眉莽眉n.
Bel蓹 ki, sol t蓹r蓹fi var.
陌ngilis, n蓹 bunu sa臒 t蓹r蓹find蓹?
H蓹r k蓹s?
Bu, bizim 眉莽眉n n蓹 edir?
Evet?
>> Auditoriya: [i艧itilemez] d蓹f蓹 bir int 枚l莽眉s眉
olan 10 d蓹f蓹 ki, [i艧itilemez]
DAVID Malan: Yax艧谋 v蓹 m蓹n蓹 yekunla艧d谋rmaq bildirin.
Bel蓹 ki, 10 integers 眉莽眉n kifay蓹t q蓹d蓹r yer ay谋rmaq v蓹 ya 10, bir int 枚l莽眉s眉, n蓹
4 d枚rd bayt, bel蓹 ki, 10 d蓹f蓹 var 40, m蓹n etdik ki sa臒 t蓹r蓹find蓹 bel蓹
Qeyd m蓹n蓹 40 bayt verir v蓹 ilk byte 眉nvan saxlamaq
x daxil.
陌ndi n蓹hay蓹t, burada harada Bu proqram arabas谋, n蓹 var
line 21 il蓹 yanl谋艧 m蓹ntiq 蓹sas谋nda?
N蓹 line 21 il蓹 yanl谋艧 var?
Evet?
Auditoriya: Siz ed蓹 bil蓹rsiniz [I艧itilemez] x daxil index.
DAVID Malan: B蓹li.
M蓹n bel蓹 x daxil index olmamal谋d谋r.
Bel蓹 syntactically, ki, OK.
N蓹 g枚z蓹l sizin kimi 莽ox deyil bir s谋ra ad谋n谋 m眉alic蓹 ed蓹 bil蓹r
sanki eyni, bir g枚st蓹rici var bu sanki bir g枚st蓹rici m眉alic蓹 ed蓹 bil蓹r
bir s谋ra v蓹 m蓹n syntactically bil蓹r x bracket bir 艧ey dem蓹k, x bracket i,
lakin 10 problemlidir.
Niy蓹?
>> Auditoriya: daxili deyil, 莽眉nki.
>> DAVID Malan: Bu deyil yadda艧 ki, y谋臒谋n daxilind蓹.
B枚y眉k d蓹y蓹ri M蓹n laz谋m deyil o kvadrat m枚t蓹riz蓹d蓹 qoyulmas谋?
9 9, 0.
S谋f谋r indeksl蓹艧dirilm蓹si 脟眉nki.
Bel蓹 ki, 9 vasit蓹sil蓹 0 g枚z蓹l olard谋.
Bracket 10 yax艧谋 deyil v蓹 lakin, h蓹r d蓹f蓹 olsa geri
M蓹n CS50 IDE etm蓹k 眉莽眉n c蓹hd g枚r眉n眉r saxta d蓹y蓹rl蓹r yazaraq crash,
Bu h蓹mi艧蓹 蓹m蓹kda艧l谋q etmir v蓹 h蓹qiq蓹t蓹n, tez-tez
u臒urlu olsun yaln谋z 莽眉nki 蓹m蓹liyyat sistemi deyil
qeyd ki, he莽 bel蓹 y眉ng眉l yadda艧 b蓹zi y谋臒谋n ke莽m蓹k,
茝g蓹r texniki daxilind蓹 qald谋, 莽眉nki Sizin segment, lakin daha 莽ox ki,
蓹m蓹liyyat sisteml蓹ri sinif, bu kimi bir 艧ey
莽ox asanl谋qla undetected getm蓹k bil蓹r.
Proqram he莽 q蓹za olacaq ard谋c谋l amma b蓹lk蓹 d蓹f蓹 biraz.
>> V蓹 bel蓹 ki, Valgrind ed蓹k Bu v蓹 burada
biz overwhelmed almaq laz谋md谋r an 莽谋xd谋.
Bel蓹 ki, yadda艧 valgrind s谋z谋nt谋s谋 莽ek etm蓹k tam dot 莽izgi yadda艧 b蓹rab蓹rdir.
M蓹n s枚z verir蓹m niy蓹 v蓹 burada Bu 蓹zm蓹k olar.
Burada valgrind, burada n蓹 var n蓹 var proqram莽谋, bir ne莽蓹 il ago-
yax艧谋 bir fikir olard谋 q蓹rar kimi 莽谋x谋艧 baxmaq 眉莽眉n.
Bel蓹 ki, bu m蓹nada ed蓹k.
Sol t蓹r蓹fd蓹n bel蓹 ki, b眉t眉n yol he莽 bir yax艧谋 s蓹b蓹bd蓹n yan
proqram prosesi ID edir biz yaln谋z, benzersiz bir tan谋dan run
Proqram 眉莽眉n biz yaln谋z qa莽d谋.
Biz ki, silindi slide, lakin
Burada b蓹zi faydal谋 m蓹lumatlar var.
>> 脟ox 眉st diyirl蓹yin ed蓹k.
Biz ba艧lad谋 burada.
Bel蓹 ki, b眉t眉n 莽ox 莽谋x谋艧 deyil.
Burada yaln谋艧 yazmaq deyil x蓹tti 21 枚l莽眉l眉 4.
Yax艧谋, line 21 n蓹 idi?
Line 21 d蓹qiq idi Bu v蓹 bu m蓹nada edir
M蓹n validly da deyil蓹m ki, M蓹n deyil蓹m, 莽眉nki 4 bayt yaz谋l谋
Bu tam qoymaq 眉莽眉n 莽al谋艧谋r谋q, ki, bir 艧ey ola bil蓹r
yaln谋z olmaq olur s谋f谋r, amma 莽al谋艧谋ram
bir yerd蓹 qoymaq 眉莽眉n ki, m蓹n蓹 aid deyil.
Bir Bundan 蓹lav蓹, a艧a臒谋 burada, 40 bytes bloklar谋 m眉tl蓹q rekord 1 itir.
M蓹n malloc z蓹ng zaman, 莽眉nki burada, m蓹n, h蓹qiq蓹t蓹n, yadda艧 azad, he莽 vaxt.
>> Bel蓹 ki, nec蓹 biz bu d眉zeltmek bil蓹r?
M蓹n蓹 davam ed蓹k v蓹 bir az daha t蓹hl眉k蓹siz olmaq v蓹 orada 9 v蓹 burada pulsuz x m蓹n蓹 bildirin.
Bu g眉n yeni funksiyas谋 var.
陌ndi yadda艧 dot 莽izgi etm蓹k t蓹krar varsa, , yenid蓹n bu valgrind run ed蓹k
M蓹nim p蓹nc蓹r蓹 maksimize v蓹 Enter d眉ym蓹sini bas谋n.
陌ndi, bu yax艧谋d谋r.
Onlar yax艧谋 x蓹b蓹r basd谋rmaq Bu 莽谋x谋艧 b眉t眉n.
B眉t眉n y谋臒谋n bloklar谋 pulsuz idi.
Biz n蓹 y谋臒谋n geri g蓹lm蓹k laz谋md谋r , lakin he莽 bir s谋zmas谋 m眉mk眉nd眉r.
Bel蓹 ki, bu yaln谋z bir deyil Sizin al蓹t d蓹sti 眉莽眉n al蓹t
olan siz ba艧laya bil蓹rsiniz 陌ndi kimi s蓹hv tapmaq.
>> Amma g枚r蓹k n蓹 daha zal谋m burada ed蓹 bil蓹rsiniz.
Indi ke莽id ed蓹k h蓹qiq蓹t蓹n bir problem h蓹ll.
Bir k蓹nara kimi, bu azad ed蓹c蓹k qar谋艧谋ql谋q v蓹 ya g蓹rginlik az,
bu art谋q g眉lm蓹li deyil.
B蓹li.
Bu olduqca yax艧谋.
G枚st蓹ricil蓹rin蓹 脟眉nki 眉nvanlar谋 v蓹 眉nvanlar谋
Konvensiya il蓹 眉mumiyy蓹tl蓹 hexadecimal il蓹 yaz谋l谋.
Ha, ha, indi g眉lm蓹li deyil.
Af蓹rin, bel蓹 ki, indi ed蓹k h蓹qiq蓹t蓹n bir problem h蓹ll edir.
Bu super olmu艧dur super indiy蓹 q蓹d蓹r a艧a臒谋 s蓹viyy蓹d蓹,
v蓹 biz, h蓹qiq蓹t蓹n faydal谋 ed蓹 bil蓹rsiniz bu a艧a臒谋 s蓹viyy蓹d蓹 detallar谋 il蓹 h蓹r 艧eyi.
>> Bel蓹likl蓹, biz bir ne莽蓹 h蓹ft蓹 t蓹qdim 蓹vv蓹l bir s谋ra anlay谋艧谋.
Bir s谋ra g枚z蓹l idi, 莽眉nki bu, bizim kodu t蓹mizl蓹m蓹k 莽蓹tindir
Biz yazmaq ist蓹yirdi, 莽眉nki 脟ox t蓹l蓹b蓹l蓹ri il蓹 proqram
v蓹 ya bir ne莽蓹 adlar谋 v蓹 ev v蓹 yurdda v蓹 kollec v蓹 ki, b眉t眉n,
biz h蓹r 艧eyi daha 莽ox saxlamaq bil蓹r temiz bir s谋ra daxilind蓹.
Amma bir 陌艧in m蓹nfi t蓹r蓹fi odur t蓹klif bir s谋ra indiy蓹 q蓹d蓹r.
Siz 枚z眉n眉z 蓹ziyy蓹t etdik, h蓹tta bir proqramda, yaln谋z qeyri-iradi,
pis bir 艧ey n蓹 bir s谋ra haqq谋nda, b蓹lk蓹?
M蓹n b蓹zi murmurs e艧itm蓹k.
Auditoriya: Bu 莽蓹tindir 枚l莽眉s眉n眉 d蓹yi艧dirm蓹k 眉莽眉n.
DAVID Malan: Bu 莽蓹tindir 枚l莽眉s眉n眉 d蓹yi艧dirm蓹k 眉莽眉n.
Siz 枚l莽眉s眉 d蓹yi艧蓹 bilm蓹z bir s谋ra, 蓹slind蓹, 枚zl眉y眉nd蓹
C. Ba艧qa bir s谋ra ay谋ra bil蓹r, k枚hn蓹 bir 艧eyi h蓹r蓹k蓹t
陌ndi yeni v蓹 daxil b蓹zi 蓹lav蓹 yer var,
ancaq bir kimi deyil Java v蓹 ya Python kimi dil
v蓹 ya dig蓹r h蓹r hans谋 bir say谋 il蓹 dill蓹rind蓹 b蓹zi
tan谋艧 ola bil蓹r harada 艧eyi 蓹lav蓹 ed蓹 bil蓹rsiniz
bir s谋ra sonuna reklam nauseam.
Siz bir s谋ra zaman onun 枚l莽眉s眉 枚l莽眉s眉 6,
v蓹 ideya kimi 蓹vv蓹ll蓹r q蓹d蓹r m眉蓹yy蓹n bir 枚l莽眉s眉 bir bufer olan,
Siz qap谋s谋 h蓹yata tahmin var n蓹 枚l莽眉s眉 siz olmaq ist蓹yirsiniz?
Siz 莽ox b枚y眉k tahmin varsa, Siz yer israf edirik.
脟ox ki莽ik tahmin varsa, siz 蓹n az谋, ki, m蓹lumat saxlamaq olmaz
daha 莽ox i艧 olmadan.
>> G枚st蓹ricil蓹rin蓹 Bel蓹 ki, bu g眉n, thanks, biz birlikd蓹 枚z x眉susi stitching ba艧lamaq
data strukturlar谋, v蓹 茝slind蓹 burada bir 艧ey deyil
ki, bir az daha g枚r眉n眉r ilk bax谋艧dan sirli,
lakin bu, biz bir ba臒l谋 z蓹ng ed蓹c蓹yik n蓹 siyah谋s谋, v蓹 眉mumil蓹艧dirir onun ad谋 c眉r
Bu.
Bu n枚mr蓹l蓹ri siyah谋s谋, v蓹 ya Bu halda, n枚mr蓹l蓹ri siyah谋s谋,
lakin bir 艧ey siyah谋s谋 ola bil蓹r, lakin bil蓹r Bu, birlikd蓹 oxlar yolu il蓹 ba臒l谋 oldu
v蓹 yaln谋z bir tahmin almaq n蓹 texnika il蓹
biz m眉mk眉n olacaq birlikd蓹 stitch,
sort bir m枚vzu il蓹 popcorn kimi, burada siyah谋lar谋 d眉zbucaql谋 ba臒l谋d谋r?
Onun n枚mr蓹l蓹ri?
茝sas dil x眉susiyy蓹t n蓹dir?
>> Auditoriya: A pointer.
>> DAVID Malan: A pointer.
Bel蓹 ki, bu oxlar h蓹r burada t蓹msil bir pointer v蓹 ya yaln谋z bir 眉nvan谋.
Bel蓹 ki, ba艧qa s枚zl蓹, m蓹n ist蓹yir蓹m n枚mr蓹l蓹rin siyah谋s谋 saxlamaq 眉莽眉n,
M蓹n ist蓹yir蓹m, m蓹n yaln谋z onu saxlamaq bilm蓹z inki艧af v蓹 shrink imkan谋
bir s谋ra m蓹nim data strukturu.
M蓹n bir az laz谋md谋r daha sophistication,
lakin bu fark 艧蓹kil c眉r t蓹klif
Siz yaln谋z ki莽ik m枚vzular谋 var, 蓹g蓹r ki, birlikd蓹 h蓹r 艧ey birl蓹艧dir蓹n,
y蓹qin ki, yer etm蓹k 莽蓹tin deyil o d眉zbucaql谋 aras谋nda iki
v蓹 ya bu qov艧aqlar谋n谋n iki biz ba艧lamaq laz谋md谋r yeni node qoymaq, onlara z蓹ng,
v蓹 sonra b蓹zi yeni m枚vzu il蓹, yaln谋z 眉莽 qov艧aqlar谋n谋n x蓹nd蓹k,
Birincisi, son bir, bir Yaln谋z orta daxil ki.
>> H蓹qiq蓹t蓹n bir ba臒l谋 siyah谋, bir s谋ra f蓹rqli olaraq, dinamik.
Bu inki艧af ed蓹 bil蓹r v蓹 ola bil蓹r shrink v蓹 siz deyil
bilm蓹k v蓹 ya 蓹vv蓹lc蓹d蓹n nec蓹 qay臒谋 var q蓹d蓹r data siz saxlan谋lmas谋 olacaq,
lakin biz bir az olmal谋d谋r 莽谋x谋r Bu h蓹yata nec蓹 haqq谋nda ehtiyatl谋.
Bel蓹 ki, ilk biz h蓹yata nec蓹 hesab ed蓹k bu ki莽ik d眉zbucaql谋 biridir.
Bu int h蓹yata ke莽irilm蓹si 眉莽眉n asand谋r.
Siz yaln谋z sonra int n v蓹 dem蓹k Bir int 4 bayt almaq,
amma bir int almaq nec蓹, n z蓹ng v蓹 sonra bir pointer, n枚vb蓹ti z蓹ng ed蓹k.
Biz bu z蓹ng ed蓹 bil蓹r 艦eyi bir 艧ey ist蓹yirik
amma x眉susi data strukturu laz谋md谋r.
Evet?
>> Auditoriya: Ampersand [i艧itilemez].
>> DAVID Malan: Bel蓹 ki, i艧areti biz istifad蓹 ed蓹c蓹k potensial bir node 眉nvan谋n谋 almaq.
Amma biz ba艧qa laz谋md谋r C x眉susiyy蓹t 眉莽眉n
M蓹n蓹 yaratmaq imkan谋 verir Bu x眉susi d眉zbucaql谋, bu x眉susi
d蓹yi艧蓹n siz yadda艧, olacaq.
Auditoriya: A struct.
DAVID Malan: A struct.
Ke莽蓹n h蓹ft蓹 geri, biz t蓹qdim struct, bu nisb蓹t蓹n sad蓹 s枚z
ki, biz蓹 bu kimi 艧eyl蓹r etm蓹k imkan谋 verir.
C m蓹lumatlar谋 il蓹 g蓹lm蓹di strukturu t蓹l蓹b蓹 莽a臒谋r谋b.
Bu int v蓹 float v蓹 char v蓹 il蓹 g蓹lir Bel蓹, lakin t蓹l蓹b蓹 il蓹 g蓹lm蓹k deyil,
lakin biz bir t蓹l蓹b蓹 data n枚v眉 yarada, Bu sintaksis il蓹 bir t蓹l蓹b蓹 strukturu,
burada.
V蓹 t蓹krar bu g枚r蓹c蓹ksiniz.
Bel蓹 ki, narahat etmir a莽ar s枚zl蓹r ezberlemeye,
lakin vacibdir s枚z deyil dedik ki, yaln谋z fakt struct
sonra biz bu t蓹l蓹b蓹 adlan谋r v蓹 daxili t蓹l蓹b蓹 ad谋 v蓹 bir ev idi
bir yurt v蓹 ya kimi v蓹 ya.
>> V蓹 indi, bu g眉n, bu t蓹klif ed蓹k.
M蓹n bir ne莽蓹 s枚z 蓹lav蓹, amma ist蓹yirsinizs蓹 sonra ki, bu d眉zbucaql谋 h蓹yata ke莽irilm蓹si 眉莽眉n
bir int v蓹 bir d蓹 var pointer, siz, m蓹n n蓹 deyil蓹m bilirik
node adl谋 struct b蓹yan olacaq.
M蓹n dem蓹k gedir, onun daxilind蓹 d蓹 deyil蓹m bir node, bu d眉zbucaql谋, bir int var ki,
v蓹 biz z蓹ng ed蓹c蓹yik n v蓹 Bu n枚vb蓹ti g枚st蓹rici var.
Bu, bir az verbose deyil lakin bu bar蓹d蓹 d眉艧眉n眉yorsan谋z,
艧蓹kil idi oxlar bir an 蓹vv蓹l n蓹 data n枚v眉 var?
Harada o oxlar h蓹r i艧ar蓹 edir m蓹lumat strukturu hans谋 n枚v 眉莽眉n nec蓹?
Bu, sad蓹c蓹 se ba艧谋na bir int i艧ar蓹 deyil.
Bu i艧ar蓹 b眉t眉n d眉zbucaql谋 艧ey
ki, d眉zbucaql谋 艧ey, bir node adlan谋r bildirib.
V蓹 bel蓹 ki, biz c眉r var recursively bu c眉r m眉蓹yy蓹n
bir node ki, biz dey蓹c蓹kl蓹r n adl谋 int ehtiva edir
v蓹 bir pointer n枚vb蓹ti adlan谋r data strukturu n枚v眉
ki, pointer xal y蓹qin deyil struct node olacaq.
>> Bel蓹 ki, bu annoyingly verbose deyil v蓹 yaln谋z x谋rda莽谋 olmaq
s蓹b蓹bi biz bilm蓹z yaln谋z bu dem蓹k olan s蓹mimi
, daha 莽ox oxunaql谋 g枚r眉n眉r geri oxumaq C ki, 莽眉nki
h蓹r 艧eyi alt 眉st, sa臒.
Biz n枚qt蓹li verg眉l almaq q蓹d蓹r bu deyil s枚z node h蓹qiq蓹t蓹n m枚vcud oldu臒unu.
Biz bu c眉r etm蓹k ist蓹yirsinizs蓹 Bel蓹 ki, m蓹lumatlar谋n daxilind蓹 cyclical aray谋艧
strukturu, biz bunu, harada biz, 眉st struct node dem蓹k olan
Biz蓹 bu izah uzun yol verir odur ki, biz struct node dem蓹k, sonra daxili,
v蓹 sonra son line biz dem蓹k, b眉t眉n sa臒, C, yolu il蓹,
yaln谋z bu b眉t眉n l蓹n蓹tl蓹m蓹k z蓹ng 艧ey node v蓹 dayand谋rmaq
c蓹mi s枚z struct istifad蓹 ed蓹r蓹k.
Bel蓹 ki, bu yaln谋z sort bir sintaktik deyil n蓹tic蓹d蓹 biz蓹 yaratmaq imkan verir oyun
m蓹hz bu kimi g枚r眉n眉r ki, bir 艧ey.
>> Biz indi g眉man 蓹g蓹r biz bel蓹 C bu 艧ey h蓹yata,
nec蓹 h蓹qiq蓹t蓹n biz n蓹 bu traversing ba艧lamaq?
B蓹li, 蓹slind蓹, biz n蓹 眉莽眉n b眉t眉n sa臒 v蓹 yaln谋z sol olan t蓹krarlamaq
n枚v qov艧aqlar谋n谋n daxil v蓹 ya qov艧aqlar谋n谋n silm蓹k v蓹 ya biz ist蓹diyiniz yerd蓹 艧ey 眉莽眉n axtar谋艧,
lakin bunu,-nin ir蓹li getm蓹k v蓹 ed蓹k h蓹r 艧eyi bir az daha real 脟眉nki
indiy蓹 q蓹d蓹r super a艧a臒谋 s蓹viyy蓹li olmu艧dur.
H蓹r k蓹s sanki birinci olmaq ist蓹yirsiniz?
OLDU.
Q蓹d蓹r g蓹lib.
S蓹nin ad谋n n蓹dir?
>> DAVID: David.
DAVID Malan: David.
G枚r眉艧m蓹k Nice.
M蓹nd蓹 h蓹m莽inin.
Oldu.
V蓹 biz bir s谋ra 9 laz谋md谋r.
Kimi yax艧谋 deyil ilk olaraq, b蓹lk蓹 d蓹.
OK, say谋 9.
A say谋 17, xahi艧 edirik.
M蓹n蓹 bir az uzaq geri ged蓹k.
Number 22, xahi艧 edirik, v蓹 nec蓹 uzaq geri haqq谋nda
M蓹n he莽 bir 蓹ll蓹ri g枚r蓹 bil蓹rsiniz b眉t眉n i艧谋q v蓹 ya he莽 bir.
Biri orada k枚n眉ll眉 olunur.
Siz g蓹lm蓹k ist蓹yirsiniz?
Sizin qolun zorla q蓹d蓹r davam edir.
17 OK.
22.
26 a艧a臒谋 g蓹lir.
H蓹r k蓹sd蓹n ist蓹yirsiniz forcefully-- q蓹d蓹r Hadi.
Faktiki k枚n眉ll眉.
>> Bel蓹 ki, 莽ox tez, 蓹g蓹r Sizl蓹rin t蓹艧kil ed蓹 bil蓹r
枚z眉n眉z眉 yaln谋z kimi ekranda qov艧aqlar谋n谋n.
T蓹艧蓹kk眉r edir蓹m.
V蓹 26 olacaq.
B眉t眉n h眉quqlar v蓹 s眉r蓹tli t蓹tbiqi.
Bel蓹likl蓹, m蓹n David Ben v蓹 siz d蓹 var?
DAVID: David.
DAVID Malan: V蓹 siz?
JAKE: Jake.
SUE: Sue.
ALEX: Alex.
RAPHAEL: Raphael.
TAYLOR: Taylor.
DAVID Malan: Taylor.
茝la.
Bel蓹 ki, bu, bizim k枚n眉ll眉 bu g眉n v蓹 ir蓹li getm蓹k
v蓹 yol bir az ke莽m蓹k v蓹 yaln谋z ir蓹li getm蓹k v蓹 saxlamaq
Siz v蓹 ya Sizin kimi n枚mr蓹l蓹ri ke莽irilm蓹si ilk 蓹lam蓹ti v蓹 sol t蓹r蓹fd蓹n istifad蓹 ed蓹r蓹k,
ir蓹li getm蓹k v蓹 yaln谋z h蓹yata bu oxlar, yaln谋z
Sol t蓹r蓹fd蓹n s枚z眉n ki, Siz qeyd etm蓹lidir n蓹 i艧ar蓹
v蓹 枚z眉n眉z眉 ki, bir otaq verm蓹k biz 蓹yani h蓹qiq蓹t蓹n, sizin silah ed蓹 bil蓹rsiniz
i艧ar蓹, v蓹 yaln谋z qeyd ed蓹 bil蓹rsiniz sort yer蓹 yax艧谋d谋r.
>> Bel蓹 ki, burada biz bir ba臒l谋 siyah谋 var iki, 眉莽, d枚rd, be艧 qov艧aqlar谋n谋n ilkin
v蓹 biz bu x眉susi var fark var ba艧谋nda pointer
蓹sas biz takip laz谋md谋r, 莽眉nki b眉t眉n uzunlu臒u siyah谋s谋 birt蓹h蓹r.
Onlar t蓹rk edirik, baxmayaraq ki bu u艧aqlar, sa臒, geri yadda艧 geri,
onlar h蓹qiq蓹t蓹n h蓹r yerd蓹 ola bil蓹r komp眉ter yadda艧谋nda.
Bel蓹 ki, bu u艧aqlar ola bil蓹r s蓹hn蓹d蓹 yerd蓹 dayanan
v蓹 ki, uzun onlar kimi, g枚z蓹l h蓹qiq蓹t蓹n bir-birin蓹 i艧ar蓹 ed蓹r蓹k,
lakin 艧eyi saxlamaq 眉莽眉n t蓹miz v蓹 sad蓹 alaca臒谋q
yaln谋z onlara 莽蓹km蓹k kimi soldan sa臒a Bu, lakin k眉tl蓹vi bo艧luqlar ola bil蓹r
bu qov艧aqlar谋n谋n aras谋nda.
>> 陌ndi M蓹n, h蓹qiq蓹t蓹n, b蓹zi 蓹lav蓹 etm蓹k ist蓹yirsinizs蓹, yeni d蓹y蓹r, nin ir蓹li getm蓹k v蓹 bunu bildirin.
Biz indi imkan谋 ba艧qa bir node se莽in.
55 mallocing il蓹 ba艧lamaq ed蓹k deyirl蓹r.
Kims蓹 malloc olan a臒la ist蓹yirsiniz?
OK, q蓹d蓹r g蓹lib.
S蓹nin ad谋n n蓹dir?
RAINBOW: Rainbow.
DAVID Malan: Rainbow?
Oldu.
Malloc Rainbow.
Q蓹d蓹r g蓹lib.
Bel蓹 ki, indi biz 枚z眉m眉z xahi艧 var algorithmically biz 55 qoya bil蓹r harada.
Bel蓹 ki, ham谋m谋z谋n bilm蓹si, Ayd谋nd谋r ki, burada o, y蓹qin ki,
biz 莽al谋艧d谋臒谋n谋z 蓹g蓹r m蓹xsusdur Bu s谋ralan谋r saxlamaq
v蓹 u艧aqlar bir almaq bil蓹r geri add谋m bel蓹 ki, biz off d眉艧m蓹k deyil
m蓹rh蓹l蓹, b枚y眉k olard谋.
Bel蓹 ki, h蓹qiq蓹t蓹n, Rainbow, M蓹niml蓹 burada ba艧lamaq,
莽眉nki biz indi bil蓹rsiniz komp眉ter yaln谋z bir zaman bir d蓹yi艧蓹n g枚r眉r眉k.
Bu ilk node 蓹g蓹r bel蓹.
O, bir node deyil ed蓹k o, yaln谋z bir g枚st蓹rici var
o c蓹lb niy蓹 v蓹 ki bir g枚st蓹rici yaln谋z 枚l莽眉s眉 deyil,
o tam d眉zbucaql谋 biridir.
Bel蓹 ki, biz h蓹r yoxlamaq olacaq iteration 9 55 az?
Yox.
17 55 az?
Yox.
22-d蓹n az?
26-d蓹n az?
34-d蓹n az?
V蓹 indi, a莽谋q-ayd谋n Rainbow sonunda m蓹xsusdur.
Bel蓹 ayd谋n ola bil蓹r, v蓹 n蓹 眉莽眉n ad谋, Taylor idi?
>> TAYLOR: Taylor.
DAVID MALAN: Taylor nin aras谋nda So sol v蓹 burada Rainbow 蓹ll蓹ri,
Onlar谋n 蓹l n蓹 qeyd etm蓹k laz谋md谋r Bu siyah谋da 55 蓹lav蓹 etm蓹k sifari艧?
Biz n蓹 etm蓹k laz谋md谋r?
Evet?
>> Auditoriya: Taylor 蓹li sol qeyd etm蓹k laz谋md谋r.
>> DAVID Malan: M蓹hz.
Bel蓹 ki, bir node daxil siyah谋s谋 sonunda
olduqca sad蓹, 莽眉nki Taylor yaln谋z yer蓹 yerin蓹, qeyd etm蓹k var
v蓹 ya biz, null z蓹ng ed蓹c蓹yik null olmamas谋 sort
bir g枚st蓹rici v蓹 ya x眉susi s谋f谋r pointer, sen
Sizin sol il蓹 qeyd etm蓹k gedir 蓹l Rainbow v蓹 sonra Rainbow,
harada sol olmal谋d谋r 蓹l y蓹qin ki, qeyd?
Down.
茝lini sort 蓹g蓹r yax艧谋 deyil burada v蓹 ya sort h蓹r hans谋 bir off i艧ar蓹 ed蓹n
yol.
Bu hesab olunacaq zibil d蓹y蓹ri,
lakin o, i艧ar蓹, 蓹g蓹r b蓹zi m蓹lum d蓹y蓹ri alaca臒谋q
s谋f谋r v蓹 ya null z蓹ng, OK bu bir m眉dd蓹t var, 莽眉nki
v蓹 biz siyah谋s谋 indi tam bilirik.
>> Bel蓹 ki, n蓹 ba艧qa var nisb蓹t蓹n sad蓹 halda?
Biz 5 malloc bil蓹r?
Q蓹d蓹r g蓹lib.
S蓹nin ad谋n n蓹dir?
TIFFANY: Tiffany.
DAVID MALAN: M蓹n t蓹蓹ss眉f edir蓹m?
TIFFANY: Tiffany.
DAVID Malan: Tiffany.
Oldu.
Tiffany malloced edilmi艧dir d蓹y蓹ri 5.
Q蓹d蓹r g蓹lib.
Bu, 莽ox nisb蓹t蓹n asand谋r, lakin Indi 蓹m蓹liyyatlar谋 眉莽眉n n蓹z蓹rd蓹n ke莽ir蓹k.
Bu olduqca asan idi sonunda Taylor il蓹.
Number 5, 蓹lb蓹tt蓹 az 9 da艧谋y谋r v蓹 biz, biz Tiffany var, David var
v蓹 ad谋 n蓹 idi?
>> JAKE: Jake.
>> DAVID Malan: Jake.
Tiffany, Jake, v蓹 David.
Kimin 蓹li ilk sat谋c谋 t蓹r蓹find蓹n ayd谋nl谋q olmal谋d谋r?
Siz burada n蓹 etm蓹k ist蓹yirsiniz?
Bir ne莽蓹 m眉mk眉n yollar谋 var, lakin bir v蓹 ya daha yanl谋艧 yollar谋 da var.
>> Auditoriya: leftmost il蓹 ba艧lay谋n.
>> DAVID Malan: leftmost il蓹 ba艧lay谋n.
Kim sonra burada leftmost var?
Auditoriya: First.
>> DAVID Malan: OK.
Bel蓹 ki, ilk il蓹 ba艧lamaq v蓹 siz harada n蓹 Davudun 蓹ll蓹ri olmaq yenil蓹m蓹k ist蓹yirsiniz?
Auditoriya: 5 do臒ru.
DAVID Malan: OK.
Be艧 Bel蓹 ki, David, point v蓹 ya Tiffany burada v蓹 indi?
>> Auditoriya: Tiffany 9 bal?
DAVID Malan: Perfect, Binky nin istisna olmaqla ba艧 yaln谋z c眉r, sa臒 d眉艧d眉?
Il蓹 yanl谋艧 n蓹, 莽眉nki sanki bu 艧蓹kil?
Auditoriya: He莽 bir 艧ey i艧ar蓹 edir.
DAVID Malan: He莽 bir 艧ey deyil indi Jake i艧ar蓹.
Biz s枚z眉n 9 yetim etdik 17, v蓹 biz s枚z眉n var
bu yadda艧 b眉t眉n s谋zan 枚t蓹ri ilk Davudun 蓹li yenil蓹nm蓹si, ki
d眉zg眉n kimi insofar g枚z蓹l 陌ndi Tiffany da i艧ar蓹 ed蓹r蓹k,
lakin he莽 bir olsayd谋 Jake qeyd etm蓹k uzaqg枚r蓹nliyi,
sonra biz itirdik ki, siyah谋da b眉t枚vl眉kd蓹.
Bel蓹 ki, 蓹vv蓹lki hal谋na qaytar ed蓹k.
Bel蓹 ki, yax艧谋 bir 艧ey idi 眉z蓹rind蓹 s蓹f蓹r lakin indi d眉z蓹ltm蓹k ed蓹k.
Biz ilk 蓹v蓹zin蓹 etm蓹liy蓹m?
Evet?
>> Auditoriya: Tiffany 9 qeyd etm蓹lidir?
DAVID MALAN: I bilm蓹z Siz蓹 yax谋n almaq.
9 Kim qeyd etm蓹lidir?
>> Auditoriya: Tiffany.
>> DAVID Malan: B眉t眉n h眉ququ.
Bel蓹 ki, Tiffany 9 ilk point olmal谋d谋r.
Bel蓹 ki, Tiffany almaq laz谋md谋r eyni d蓹y蓹ri
Davuda olan g枚r眉n眉r bir an laz谋ms谋z,
lakin ikinci, 莽眉nki indi g枚z蓹l var add谋m, biz Davudun 蓹li t蓹kmill蓹艧dir蓹 bil蓹r
Tiffany, sonra 蓹g蓹r qeyd etm蓹k biz yaln谋z n枚v t蓹miz 艧eyi q蓹d蓹r
Bu bahar kimi n枚v sanki, 陌ndi ki, d眉zg眉n durub var.
Bel蓹 ki, 蓹la.
Bel蓹 ki, indi biz dem蓹k olar ki, orada edirik.
Nin bir final daxil ed蓹k d蓹y蓹ri 20 kimi d蓹y蓹r.
Biz bir final k枚n眉ll眉 malloc bil蓹r?
Q蓹d蓹r g蓹lib.
Bel蓹 ki, bu bir az daha 莽蓹tin.
Lakin, h蓹qiq蓹t蓹n, kodu, biz ist蓹yirik yaz谋l谋, 艧ifahi d蓹 olsa,
Yaln谋z bir d蓹st蓹 olan kimi 陌ndi 艧蓹rait, sa臒 蓹g蓹r?
Biz v蓹ziyy蓹ti idi bu m蓹xsusdur 蓹g蓹r yoxlan谋lmas谋
Sonda, b蓹lk蓹 蓹vv蓹lind蓹.
Biz loop bir n枚v laz谋md谋r ortada spot tapmaq.
Bel蓹 ki, ad谋 n蓹 il蓹 n蓹 ed蓹k?
>> ERIC: Eric.
>> DAVID Malan: Eric?
Eric.
G枚r眉艧m蓹k Nice.
Bel蓹 ki, biz 20 var.
Be艧 Az?
Yox.
Doqquz az?
Yox.
17-d蓹n az?
Yox.
OLDU.
O, burada m蓹xsusdur v蓹 Sizin adlar谋 yen蓹 var?
SUE: Sue.
DAVID Malan: Sue.
ALEX: Alex.
DAVID Malan: Sue, Alex, v蓹?
ERIC: Eric.
DAVID Malan: Eric.
Kimin 蓹ll蓹ri ilk yenil蓹nir almaq laz谋md谋r?
>> Auditoriya: Eric.
OLDU.
Bel蓹 ki, Eric nin oldu臒u qeyd etm蓹lidir?
22.
Yax艧谋.
陌ndi n蓹 g蓹l蓹n var?
Sue sonra Eric qeyd ed蓹 bil蓹rsiniz v蓹 indi, 蓹g蓹r u艧aqlar yaln谋z
g枚z蓹l bir otaq etm蓹k vizual, indi biz durub etdik.
Bel蓹 ki, indi bir sual n蓹z蓹rd蓹n ke莽ir蓹k lakin Bizim k枚n眉ll眉 眉莽眉n 莽ox t蓹艧蓹kk眉r edir蓹m.
脟ox yax艧谋.
陌st蓹s蓹niz, bu davam ed蓹 bil蓹rsiniz.
V蓹 biz bir sevimli ayr谋l谋q h蓹diyy蓹 蓹g蓹r var Siz h蓹r bir stress topu almaq ist蓹yir蓹m.
M蓹n蓹 yaln谋z bu a艧a臒谋 s眉zm蓹k.
Bel蓹 ki, bu paket n蓹dir?
Bu g枚z蓹l g枚r眉n眉r biz indi h蓹dd蓹
bir alternativ t蓹qdim bel蓹 m蓹hdudla艧m谋r array
b蓹zi sabit 枚l莽眉s眉 bir s谋ra.
Onlar dinamik inki艧af ed蓹 bil蓹r.
>> Amma biz kimi 莽ox h蓹ft蓹 g枚rd眉m Ke莽mi艧d蓹 biz pulsuz 眉莽眉n bir 艧ey almaq he莽 vaxt
kimi, 艧眉bh蓹siz ki, burada ticar蓹t-off var.
Bir ba臒l谋 bir ayaq il蓹 bel蓹 siyah谋s谋, bu dinamizm var?
Bu qabiliyy蓹ti, s蓹mimi inki艧af v蓹 biz sil ed蓹 bil蓹rdi
laz谋m v蓹 shrink bil蓹r.
Biz n蓹 qiym蓹t 枚d蓹yir?
Twice ilk n枚vb蓹d蓹 莽ox yer kimi.
Siz 艧蓹kil baxsaq, art谋q M蓹n integers bir siyah谋s谋n谋 saxlan谋lmas谋.
M蓹n bir siyah谋s谋n谋 saxlan谋lmas谋 al谋ram integers plus g枚st蓹ricil蓹r.
Bel蓹likl蓹, m蓹n kosmik m蓹bl蓹臒i iki d蓹f蓹 al谋ram.
陌ndi b蓹lk蓹 ki, bel蓹 deyil b枚y眉k 4 bayt, 8 bayt,
lakin 蓹lb蓹tt蓹 蓹lav蓹 ed蓹 b枚y眉k data d蓹stl蓹ri 眉莽眉n.
Ba艧qa 陌艧in m蓹nfi t蓹r蓹fi odur n蓹dir?
Evet?
>> Auditoriya: Biz var onlara bir-bir ax谋r.
DAVID Malan: B蓹li.
Biz onlara bir-bir ax谋r var.
Siz bu super imtina n蓹 bilirik kvadrat bracket rahat x眉susiyy蓹t
notation, daha d眉zg眉n t蓹sad眉fi giri艧 kimi tan谋nan,
biz yaln谋z jump ed蓹 bil蓹rsiniz f蓹rdi element
lakin indi m蓹n h蓹l蓹 d蓹 olsa burada k枚n眉ll眉l蓹ri,
M蓹n tapmaq ist蓹yirdi 22 n枚mr蓹li, yaln谋z bilm蓹z
bracket bir 艧ey bir 艧ey jump.
M蓹n 莽ox siyah谋 眉z蓹rind蓹 baxmaq x蓹tti bizim axtar谋艧 n眉mun蓹l蓹ri kimi,
say谋 22 tapmaq 眉莽眉n.
Bel蓹likl蓹, biz bir qiym蓹t 枚d蓹nilir g枚r眉n眉r.
Amma biz yen蓹 bil蓹rsiniz dig蓹r m蓹s蓹l蓹l蓹ri h蓹ll etsin.
>> 茝slind蓹, m蓹n蓹 t蓹qdim ed蓹k visuals bir ne莽蓹.
A艧a臒谋 oldu臒unuz Bel蓹 ki Mather Dining Hall yax谋nlarda,
ki, xat谋rlamaq laz谋md谋r onlar谋n ox艧ar qablar destesi,
biz bu borc Sinif 蓹vv蓹l Annenberg.
Bel蓹 ki, qablar, bu y谋臒谋n谋, baxmayaraq ki, n眉may蓹nd蓹si 蓹slind蓹
Komp眉ter elm data strukturu.
Bir data strukturu var komp眉ter
bir y谋臒谋n kimi tan谋nan olan 莽ox g枚z蓹l m蓹hz bu vizual 枚z眉 verir.
Bu qablar h蓹r bir deyil, 蓹g蓹r bel蓹 tray lakin bir s谋ra kimi v蓹 m蓹n ist蓹yirdim
n枚mr蓹l蓹rini saxlamaq 眉莽眉n, m蓹n burada bir a艧a臒谋 qoymaq bil蓹r,
v蓹 m蓹n burada bir yazmaq bil蓹r v蓹 n枚mr蓹l蓹r y谋臒ma davam
bir-birin蓹, v蓹 n蓹 眉st Bu bar蓹d蓹 potensial faydal谋
n蓹 dolay谋s谋 var ki Bu data strukturu?
M蓹n 莽谋xarmaq bil蓹r ki say谋 ilk 蓹n rahat?
orada 蓹n son bir put.
>> Bel蓹 ki, bu biz z蓹ng n蓹 edir informatika bir LIFO data strukturu.
, Ilk ke莽蓹n.
Biz uzun niy蓹 蓹vv蓹l g枚r眉rs眉n眉z ki, indi faydal谋, lakin ola bil蓹r
yaln谋z m眉lkiyy蓹t hesab edir.
Sizc蓹 蓹g蓹r bu c眉r axmaq var yemekhane bunu nec蓹 haqq谋nda.
H蓹r d蓹f蓹 onlar t蓹miz qablar v蓹 眉st tam olanlar谋 qoymaq,
Daha 蓹vv蓹l t蓹miz ola bil蓹r lakin n蓹tic蓹d蓹 莽ox 莽irkli v蓹 tozlu
莽ox alt tray 蓹g蓹r he莽 h蓹qiq蓹t蓹n
ki alt谋na almaq y谋臒谋n谋, 莽眉nki yaln谋z
yeni qoyaraq saxlamaq v蓹 眉st t蓹miz olanlar谋.
eyni 艧ey ba艧 ver蓹 bil蓹r bir supermarket 莽ox.
Bir ekran i艧i varsa s眉d v蓹 h蓹r zaman CVS
v蓹 ya daha 莽ox s眉d al谋r kim, Yaln谋z s眉d it蓹l蓹m蓹k
茝g蓹r siz art谋q geri v蓹 Siz 枚n q蓹d蓹r yeni qoymaq
b蓹zi olduqca pis olacaq m蓹lumat strukturu sonunda s眉d,
Bu alt谋ndak谋 h蓹mi艧蓹 莽眉nki ya equivalently Bu arxa h蓹mi艧蓹 var.
>> Amma d眉艧眉nm蓹k 眉莽眉n ba艧qa yol var m蓹lumat v蓹 m蓹s蓹l蓹n, bu q蓹d蓹r astarl谋.
茝g蓹r insanlardan biri edirsinizs蓹 ed蓹n b蓹y蓹nir Apple ma臒aza k蓹narda s谋ralamaq
zaman yeni bir m蓹hsul g蓹lir h蓹yata, siz y蓹qin edirik
bir y谋臒谋n data istifad蓹 strukturu 莽眉nki
h蓹r k蓹s kim uzaqla艧d谋rma臒a olard谋 up astarl谋 b蓹zi yeni oyuncaq almaq.
茝ksin蓹, siz y蓹qin ki, istifad蓹 etdiyiniz m蓹lumat strukturu hans谋
sisteminin v蓹 ya hans谋 real d眉nyada?
脺mid edir蓹m ki, bir x蓹tt var, v蓹 ya daha 莽ox d眉zg眉n v蓹 ya daha 莽ox British kimi, bir s谋ra.
V蓹 bir s谋ra da 莽谋x谋r komp眉ter data strukturu,
lakin bir s谋ra 莽ox var m眉xt蓹lif m眉lkiyy蓹t.
Bu LIFO deyil.
, Ilk ke莽蓹n.
脺zd蓹n iraq.
茝v蓹zin蓹 FIFO var.
Ilk out, da.
V蓹 yax艧谋 bir 艧ey deyil 蓹dal蓹t namin蓹
蓹lb蓹tt蓹 zaman astarl谋 edirik s蓹h蓹r q蓹d蓹r super erk蓹n.
Siz ilk orada almaq ilk yax艧谋 almaq ist蓹yir蓹m.
>> V蓹 bu m蓹lumatlar谋n b眉t眉n strukturlar谋, s谋ralar谋nda v蓹 baca
v蓹 ba艧qalar谋 d蓹st蓹l蓹ri, siz 莽谋x谋r bu kimi bir s谋ra hesab ed蓹 bil蓹r.
Bu b蓹lk蓹, bir s谋ra edir sabit 枚l莽眉s眉 4, lakin had
biz yaln谋z qalamaq bil蓹r c眉r g枚z蓹l qablar dem蓹k olar ki, sonsuz h眉nd眉r biz 蓹g蓹r
ki, bir 莽ox qablar v蓹 ya n枚mr蓹l蓹ri var.
Bel蓹 ki, b蓹lk蓹 ist蓹yirik Burada ba臒l谋 siyah谋 istifad蓹,
lakin ticar蓹t-off olacaq potensial daha 莽ox yadda艧 laz谋md谋r ki,
bir az daha 莽ox vaxt t蓹l蓹b edir, lakin biz y谋臒谋n谋 h眉nd眉rl眉y眉 m蓹hdudla艧d谋rmaq deyil,
莽ox Mather ekran halda kimi y谋臒谋n谋 枚l莽眉s眉n眉 m蓹hdudla艧d谋ra bil蓹r,
v蓹 bel蓹 ki, bu dizayn q蓹rarlar谋 v蓹 ya var n蓹tic蓹d蓹 biz蓹 m枚vcud variantlar谋.
Bu m蓹lumatlar谋 So strukturlar谋, biz a莽谋lm谋艧 etdik
potensial yeni yuxar谋 h蓹ddi g枚r蓹n n蓹 蓹vv蓹ll蓹r super s眉r蓹tli oldu
v蓹 biz t蓹rk laz谋md谋r off bu g眉n v蓹 harada
biz almaq 眉莽眉n 眉mid laz谋md谋r 脟蓹r艧蓹nb蓹 g眉n眉, biz laz谋md谋r
Bir m蓹lumatlara baxmaq ba艧lamaq Biz蓹 axtar谋艧 imkan verir strukturu
log son vaxt data yenid蓹n.
V蓹 biz h蓹ft蓹 s谋f谋r, geri, g枚rd眉m ki, ikili axtar谋艧 v蓹 ya b枚lm蓹k v蓹 bir
v蓹 f蓹th.
Bu, h蓹l蓹 geri v蓹 daha yax艧谋 g蓹lir Bu 莽蓹r艧蓹nb蓹 m眉q蓹dd蓹s grail
il蓹 g蓹lm蓹k olacaq h蓹qiq蓹t蓹n 莽al谋艧谋r data structure
v蓹 ya n蓹z蓹ri-da daimi vaxt, vasit蓹si
Bu ne莽蓹 etm蓹z milyonlarla v蓹 ya 艧eyi milyardlarla
biz data strukturunda var, o, Biz蓹 daimi vaxt, b蓹lk蓹 bir add谋m
v蓹 ya iki add谋mlar v蓹 ya 10 add谋mlar, lakin add谋mlar daimi n枚mr蓹l蓹ri
ki, data strukturu vasit蓹sil蓹 axtar谋艧.
H蓹qiq蓹t蓹n m眉q蓹dd蓹s grail olacaq lakin 莽蓹r艧蓹nb蓹 g眉n眉 ki, daha 莽ox.
Sonra ya bax谋n.
>> [MUSIC PLAYING]