>> DAVID Malan: Hello, dhe mirĂ«pritur mbrapa pĂ«r CS50.
Pra, kjo Ă«shtĂ« fundi i javĂ«s sĂ« katĂ«r.
VetĂ«m njĂ« Njoftimi i parĂ«.
Pra, e ashtuquajtura pestĂ« hĂ«na Ă«shtĂ« vijnĂ« deri tĂ« hĂ«nĂ«n e ardhshme.
Kjo Ă«shtĂ« mundĂ«si pĂ«r tĂ« ndryshuar nga SAT / UNSAT te nje klasĂ«n letĂ«r, ose nga
klasĂ«n letĂ«r SAT / UNSAT.
Annoyingly, se procesi i bĂ«n tĂ« kĂ«rkojĂ« njĂ« nĂ«nshkrim, sepse ju duhet tĂ« plotĂ«soni
nga njĂ« prej kĂ«tyre Shto / Drop forma trĂ«ndafili.
>> Sepse teknikisht, SAT / UNSAT version dhe klasa letĂ«r version
kanĂ« numra tĂ« dallueshme katalog.
Por asnjĂ« marrĂ«veshje e madhe.
VetĂ«m tĂ« dalĂ« pĂ«r mua ose pĂ«r tĂ« vjedh ose pĂ«r Lauren nĂ« Ă§do pikĂ«.
Ose na dĂ«rgoni email nĂ« qoftĂ« se ju nuk keni lloj shkresa keni nevojĂ« pĂ«r sot, dhe ne
do tĂ« jetĂ« i sigurt pĂ«r tĂ« ju ndihmojĂ« tĂ« marrĂ« kujdes se para hĂ«nĂ«n.
>> TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu qĂ« sot -
nĂ« fakt, ka pak e njĂ« jehonĂ«.
Mund tĂ« kemi ton mua poshtĂ« njĂ« grimĂ«?
OK.
Pra, sot, ne kemi prezantuar njĂ« temĂ« njohur si pointers.
Dhe unĂ« do tĂ« pranoj qĂ« kjo Ă«shtĂ« njĂ« nga tema mĂ« tĂ« ndĂ«rlikuara se ne priren tĂ«
mbulojĂ« nĂ« kĂ«tĂ« klasĂ«, apo me tĂ« vĂ«rtetĂ« ndonjĂ« kurs hyrĂ«s qĂ« pĂ«rdor C.
>> Por tĂ« marrĂ« fjalĂ«n time pĂ«r tĂ«, veĂ§anĂ«risht NĂ«se mendja juaj ndjehet njĂ« prirje pak mĂ« shumĂ«
sot dhe nĂ« javĂ«t qĂ« do tĂ« vijnĂ«.
Kjo nuk Ă«shtĂ« pĂ«rfaqĂ«suese e keni marrĂ« Ă§do e keqe nĂ« kĂ«tĂ« ai thjesht do tĂ« thotĂ« se
kjo Ă«shtĂ« njĂ« temĂ« e veĂ§anĂ«risht tĂ« sofistikuar UnĂ« ju premtoj se, disa javĂ«
kĂ«shtu, tĂ« gjithĂ« do tĂ« duket shumĂ« e habitshme drejtpĂ«rdrejtĂ« nĂ« retrospektivĂ«.
>> UnĂ« ende kujtohet nĂ« kĂ«tĂ« ditĂ«.
UnĂ« isha ulur nĂ« Elliott Dining Hall, ulur pranĂ« TF tim Nishat Mehta,
i cili ishte njĂ« banor i shtĂ«pisĂ« Elliott.
Dhe pĂ«r disa arsye, kjo topic vetĂ«m klikimeve.
Cila Ă«shtĂ« tĂ« them se edhe unĂ« luftuar me atĂ« pĂ«r disa sasinĂ« e kohĂ«s, por unĂ«
do tĂ« bĂ«j Ă§mos pĂ«r tĂ« ndihmuar tĂ« shmangur ndonjĂ« tĂ« tillĂ« luftĂ« me njĂ« temĂ« qĂ« nĂ« fund tĂ« fundit
Ă«shtĂ« mjaft i fuqishĂ«m.
>> NĂ« fakt, njĂ« nga temat qĂ« ne do tĂ« diskutuar nĂ« javĂ« tek vijnĂ« eshte se
tĂ« sigurisĂ«, dhe se si ju mund tĂ« vĂ«rtetĂ« shfrytĂ«zojnĂ« makina nĂ« mĂ«nyra tĂ«
qĂ« nuk ishin tĂ« destinuara.
Dhe ato janĂ« zakonisht eksploatimet rezultat i bugs, gabime qĂ« ne
njerĂ«zit bĂ«jnĂ« duke mos kuptuar disa i zbatimit themelor
Detajet nĂ«pĂ«rmjet programeve tĂ« cilat janĂ« bĂ«rĂ«.
>> Tani pĂ«r tĂ« bĂ«rĂ« kĂ«tĂ« duket tĂ« gjithĂ« pĂ«rdoruesit mĂ« shumĂ« miqĂ«sore, unĂ« mendova se do tĂ« luajĂ« njĂ« 10
preview dytĂ« e njĂ« claymation pak figurĂ« emrin Binky i cili u soll nĂ«
jeta nga njĂ« mik i yni nĂ« Stanford, Profesor Nick Parlante.
Pra mĂ« lejoni tĂ« ju jap kĂ«tĂ« teaser e Binky kĂ«tu.
>> [Video playback]
>> -Hej, Binky.
Zgjoheni.
Ă‹shtĂ« koha pĂ«r argĂ«tim akrep.
>> -Ă‡farĂ« Ă«shtĂ« ajo?
MĂ«soni rreth pointers?
Oh, goodie.
>> [VIDEO END rishikim]
>> DAVID Malan: Kjo Ă«shtĂ« e Stanford shkenca kompjuterike.
Pra, mĂ« shumĂ« qĂ« do tĂ« vijnĂ«.
>> [Duartrokitje]
>> DAVID Malan: Na vjen keq, Nick.
>> Pra, kujtojnĂ« se herĂ«n e fundit ne pĂ«rfundoi nĂ« kjo cliffhanger vĂ«rtetĂ« emocionuese
ku ky funksion thjesht nuk keni punuar.
SĂ« paku intuitivisht, ajo ndjehet si ajo duhet tĂ« punojnĂ«.
Thjesht shkĂ«mbejnĂ« vlerat tĂ« dy integers.
Por kujtoj se kur ne shtypura jashtĂ« Vlerat fillestare nĂ« njĂ«rĂ«n kryesor, dhe
dy, ata ishin ende njĂ« dhe dy dhe jo dy dhe njĂ«.
>> Pra mĂ« lejoni tĂ« vĂ«rtetĂ« kaloni mbi te pajisjes.
Dhe ju shkrova nĂ« njĂ« grimĂ« e kodit skeletik nĂ« avancojĂ« kĂ«tu, ku unĂ« pretendojnĂ« se x
do tĂ« jetĂ« 1, y do tĂ« jetĂ« 2.
UnĂ« pastaj tĂ« shtypura nga dy prej tyre Vlerat me f shtypura.
>> UnĂ« pastaj pretendojnĂ« se kĂ«tu poshtĂ« ne jemi duke shkuar pĂ«r tĂ« bie nĂ« ujdi tyre.
Kam lĂ«nĂ« njĂ« vend bosh kĂ«tu pĂ«r ne plotĂ«soni nĂ« sot nĂ« njĂ« moment tĂ« vetĂ«m.
Pastaj, unĂ« jam duke shkuar pĂ«r tĂ« pretendojnĂ« se dy variabla janĂ« swapped.
AtĂ«herĂ« unĂ« jam duke shkuar pĂ«r tĂ« shtypur ato jashtĂ« pĂ«rsĂ«ri.
Dhe kĂ«shtu qĂ« shpresojmĂ« se, unĂ« duhet tĂ« shihni 1, 2.
2, 1.
Kjo Ă«shtĂ« e thjeshtĂ« super QĂ«llimi tani.
>> Pra, si do tĂ« shkojmĂ« nĂ« lidhje shkĂ«mbejnĂ« dy variabla?
E pra, nĂ«se unĂ« propozoj kĂ«tu se kĂ«to gota mund tĂ« pĂ«rfaqĂ«sojnĂ« kujtesĂ«n nĂ« njĂ« kompjuter.
Kjo Ă«shtĂ« njĂ« kafshon pak, kjo Ă«shtĂ« njĂ« tjetĂ«r kafshon pak.
Mund tĂ« kemi njĂ« vullnetar tĂ« vijĂ« nĂ« UP dhe pĂ«rzierje disa pije na, nĂ«se i njohur?
Come on up.
Cili Ă«shtĂ« emri juaj?
>> Jess: Jess.
>> DAVID Malan: Jess?
Come on up, Jess.
NĂ«se ju nuk e mendjes, ne kemi pĂ«r tĂ« vĂ«nĂ« Glass Google pĂ«r ju nĂ« mĂ«nyrĂ« qĂ« ne mund tĂ«
pĂ«rjetĂ«soj kĂ«tĂ«.
OK, qelqi.
Regjistro njĂ« video.
Dhe OK, ne jemi tĂ« mirĂ« pĂ«r tĂ« shkoni me Jess kĂ«tu.
Dakord.
GĂ«zohem qĂ« u njohĂ«m.
>> Pra, ajo qĂ« unĂ« do tĂ« doja qĂ« ju bĂ«ni kĂ«tu - nĂ« qoftĂ« se ju mund tĂ«, mjaft shpejt -
vetĂ«m na derdh gjysmĂ«n e njĂ« gotĂ« portokalli lĂ«ng dhe gjysmĂ«n e njĂ« gotĂ« qumĂ«sht,
pĂ«rfaqĂ«sojnĂ« efektivisht numrat 1 nĂ« njĂ« filxhan dhe 2 nĂ« KupĂ«n e tjera.
>> Kjo do tĂ« jetĂ« mirĂ« pamjet.
>> Jess: MĂ« vjen keq.
>> DAVID Malan: Jo, jo.
Ă‹shtĂ« nĂ« rregull.
Bukur.
TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu qĂ« ne kemi katĂ«r bytes vlerĂ« tĂ« lĂ«ng portokalli.
Ne do quajti atĂ« vlerĂ«n 1.
Tani njĂ« tjetĂ«r katĂ«r bytes vlerĂ« e qumĂ«shtit.
Do tĂ« thĂ«rrasĂ« atĂ« vlerĂ« 2.
Pra, x dhe y, respektivisht.
>> TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu qĂ« tani nĂ« qoftĂ« se detyrĂ« nĂ« dorĂ« - pĂ«r ju, Jess, nĂ« frontin e tĂ« gjitha
e shokĂ«ve tuaj -
Ă«shtĂ« qĂ« tĂ« bie nĂ« ujdi vlerat e x dhe y tĂ« tillĂ« se ne duam lĂ«ng portokalli nĂ«
kupa-tjetrin dhe qumĂ«sht nĂ« kĂ«tĂ« kupe, si mund ti - para se tĂ« bĂ«jĂ« nĂ« fakt
ajo - shkoni pĂ«r tĂ« bĂ«rĂ« kĂ«tĂ«?
>> OK, vendim i menĂ§ur.
Pra, ju keni nevojĂ« pĂ«r njĂ« memorie pak mĂ« shumĂ«.
Pra, le tĂ« ndajĂ« njĂ« tĂ« pĂ«rkohshme filxhan, nĂ«se ju do.
Dhe tani tĂ« vazhdojĂ« tĂ« bie nĂ« ujdi x dhe y.
>> Excellent.
Pra, shumĂ« mirĂ« bĂ«rĂ«.
Thank you so much, Jess.
UrdhĂ«ro.
NjĂ« suvenir pak.
>> OK, kĂ«shtu qĂ« natyrisht, ide super e thjeshtĂ«.
PlotĂ«sisht intuitiv qĂ« ne kemi nevojĂ« pĂ«r njĂ« grimĂ« mĂ« shumĂ« hapĂ«sirĂ« â€‹â€‹e magazinimit - nĂ« kĂ«tĂ« formĂ«,
njĂ« filxhan - nĂ« qoftĂ« se ne tĂ« vĂ«rtetĂ« duan tĂ« bie nĂ« ujdi kĂ«tyre dy variablave.
Pra, le tĂ« bĂ«jĂ« pikĂ«risht kĂ«tĂ«.
Deri kĂ«tu nĂ« mes ku unĂ« pretendojnĂ« unĂ« jam do tĂ« jetĂ« bĂ«rĂ« disa shkĂ«mbejnĂ«, unĂ« do
tĂ« shkojnĂ« pĂ«rpara dhe tĂ« deklarojĂ« temp.
Dhe unĂ« do tĂ« vĂ«nĂ« atĂ« tĂ« barabartĂ« me, tĂ« themi, x.
>> AtĂ«herĂ« unĂ« jam duke shkuar pĂ«r tĂ« ndryshuar vlerĂ«n e x vetĂ«m si Jess bĂ«ri kĂ«tu me
qumĂ«sht dhe lĂ«ng portokalli tĂ« jetĂ« e barabartĂ« me y.
Dhe unĂ« jam duke shkuar pĂ«r tĂ« ndryshuar y tĂ« jetĂ« e barabartĂ« tĂ« mos x, sepse tani ne do tĂ« jetĂ«
mbĂ«rthyer nĂ« njĂ« rreth, por mĂ« tepĂ«r Temp.
Ku kam pĂ«rkohĂ«sisht - ose ku Jess pĂ«rkohĂ«sisht tĂ« vĂ«nĂ« lĂ«ng portokalli
para se clobbering filxhan me qumĂ«sht.
>> Pra mĂ« lejoni tĂ« shkoj pĂ«rpara dhe tĂ« bĂ«jĂ« kĂ«tĂ« tani.
Ajo qĂ« quhet noswap.c.
Dhe tani mĂ« lejoni tĂ« kandidojĂ« asnjĂ« shkĂ«mbim.
Dhe me tĂ« vĂ«rtetĂ« unĂ« shoh, nĂ«se unĂ« tĂ« zgjeruar dritare pak, se
x eshte 1, y eshte 2.
Dhe pastaj Ă«shtĂ« 2 x, y Ă«shtĂ« 1.
>> Por kujtojmĂ« se tĂ« hĂ«nĂ«n ne e bĂ«mĂ« gjĂ«ra pak mĂ« ndryshe ku unĂ«
implementuar nĂ« vend njĂ« funksion ndihmĂ«tar, nĂ« qoftĂ« se ju do, qĂ« nĂ« fakt ishte e pavlefshme.
UnĂ« e quajti atĂ« tĂ« bie nĂ« ujdi.
I dha asaj dy parametra, dhe unĂ« e quajti atyre njĂ« dhe kam thirrur ata b.
>> Sinqerisht, unĂ« mund tĂ« telefononi ata x dhe y.
Nuk ka asgjĂ« ndalimin e mua nga duke bĂ«rĂ« qĂ«.
Por unĂ« do tĂ« argumentoja se Ă«shtĂ« atĂ«herĂ« njĂ« pak i paqartĂ«.
Sepse kujtojnĂ« pĂ«r tĂ« hĂ«nĂ«n se ne pohoi se kĂ«to parametra ishin
kopjet e vlerave kaluar in
KĂ«shtu qĂ« vetĂ«m messes me tuaj Mendja, unĂ« mendoj se, nĂ« qoftĂ« se ju pĂ«rdorni
saktĂ«sisht tĂ« njĂ«jtat ndryshore.
>> KĂ«shtu qĂ« unĂ« do tĂ« thĂ«rrasĂ« atyre njĂ« vend dhe b, vetĂ«m pĂ«r qartĂ«si.
Por ne mund tĂ« quajmĂ« ato mĂ« tĂ« Ă§do gjĂ« qĂ« ne duam.
Dhe unĂ« jam duke shkuar pĂ«r tĂ« kopjoni dhe ngjisni efektivisht ky kod nga atje lart
poshtĂ« nĂ« kĂ«tu.
Sepse unĂ« vetĂ«m pashĂ« se ajo punon.
Pra, kjo Ă«shtĂ« nĂ« formĂ« mjaft tĂ« mirĂ«.
Dhe unĂ« do tĂ« ndryshojĂ« x tim pĂ«r njĂ« x tim, pĂ«r njĂ«, y ime pĂ«r tĂ« b dhe y tim nĂ« b.
>> Pra, me fjalĂ« tĂ« tjera, logjika e saktĂ« tĂ« njĂ«jtĂ«n.
SaktĂ« tĂ« njĂ«jtĂ«n gjĂ« qĂ« bĂ«ri Jess.
Dhe pastaj njĂ« gjĂ« qĂ« unĂ« duhet tĂ« bĂ«ni deri KĂ«tu, natyrisht, tani Ă«shtĂ« adhurojnĂ« kĂ«tĂ«
funksioni, ose telefononi kĂ«tĂ« funksion.
KĂ«shtu qĂ« unĂ« do tĂ« thĂ«rrasĂ« kĂ«tĂ« funksion me dy inputet, x dhe y, dhe hit Save.
>> TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu qĂ« rrĂ«njĂ«sisht e njĂ«jta gjĂ«.
NĂ« fakt, unĂ« kam bĂ«rĂ« ndoshta programin panevojshme kompleks nga
shkruar njĂ« funksion qĂ« Ă«shtĂ« vetĂ«m duke marrĂ« disa gjashtĂ« rreshta tĂ« kodit, kurse unĂ«
mĂ« parĂ« kishte zbatuar kĂ«tĂ« nĂ« vetĂ«m tre.
>> Pra mĂ« lejoni tĂ« shkoj pĂ«rpara dhe tani xhirim kĂ«tĂ«, tĂ« bĂ«jĂ« asnjĂ« shkĂ«mbim.
TĂ« gjithĂ« tĂ« drejtĂ«, unĂ« screwed up kĂ«tu.
Kjo duhet tĂ« jetĂ« njĂ« gabim qĂ« ju mund tĂ« shohim gjithnjĂ« e mĂ« shumĂ« si zakonisht tuaj
Programet merrni mĂ« komplekse.
Por ka njĂ« fix lehtĂ«.
MĂ« lejoni tĂ« lĂ«viz mbrapa deri kĂ«tu.
>> Dhe Ă§farĂ« Ă«shtĂ« gabimi i parĂ« qĂ« unĂ« jam duke parĂ«?
Deklarata nĂ«nkuptuar.
Ă‡farĂ« do qĂ« zakonisht tregojnĂ«?
Oh, kam harruar prototip.
Kam harruar pĂ«r tĂ« mĂ«suar pĂ«rpilues qĂ« swap do tĂ« ekzistojĂ« edhe pse ai
nuk ekziston nĂ« fillim i programit.
KĂ«shtu qĂ« unĂ« jam vetĂ«m duke shkuar pĂ«r tĂ« thĂ«nĂ«, swap pavlefshĂ«m, int, a b int, pikĂ«presje.
>> KĂ«shtu qĂ« unĂ« nuk jam duke shkuar pĂ«r reimplement atĂ«.
Por tani ajo pĂ«rputhet Ă§farĂ« Ă«shtĂ« kĂ«tu poshtĂ«.
Dhe njoftimi, mungesa e njĂ« pikĂ«presje kĂ«tu, e cila nuk Ă«shtĂ« e nevojshme kur
zbatimit.
>> Pra mĂ« lejoni tĂ« ribĂ«rĂ« kĂ«tĂ«, bĂ«jĂ« asnjĂ« shkĂ«mbim.
FormĂ« shumĂ« tĂ« mirĂ«.
Run asnjĂ« shkĂ«mbim.
Dhe mallkonte atĂ«.
Tani ne jemi kthyer aty ku ishim tĂ« hĂ«nĂ«n, ku gjĂ« nuk bie nĂ« ujdi.
>> Dhe Ă§farĂ« Ă«shtĂ« shpjegimi intuitiv se pse ky Ă«shtĂ« rasti?
Po?
>> STUDENT: [padĂ«gjueshme].
>> DAVID Malan: PikĂ«risht.
KĂ«shtu a dhe b janĂ« kopjet e x dhe y.
Dhe nĂ« fakt, nĂ« Ă§do kohĂ« ju keni qenĂ« duke e quajtur njĂ« funksion deri mĂ« tani qĂ«
kalon variablave si ints -
ashtu si swap Ă«shtĂ« duke pritur kĂ«tu -
ju djema kanĂ« kaluar nĂ« kopje.
>> Tani qĂ« do tĂ« thotĂ« ajo merr njĂ« pak e kohĂ«s, njĂ« ndarje tĂ« dytĂ«, pĂ«r
kompjuter tĂ« kopjoni copa nga njĂ« ndryshueshme nĂ« copa tĂ« njĂ« tjetĂ«r.
Por kjo nuk Ă«shtĂ« e tillĂ« njĂ« punĂ« e madhe.
Por ata janĂ« megjithatĂ« njĂ« kopje.
>> Dhe kĂ«shtu tashmĂ«, ne kuadrin e swap, UnĂ« jam nĂ« tĂ« vĂ«rtetĂ« sukses
ndryshimi A dhe B.
NĂ« fakt, le tĂ« bĂ«jĂ« njĂ« tĂ« shpejtĂ« kontrolloni mendje e shĂ«ndoshĂ«.
F Printo a eshte% i, linjĂ« e re.
Dhe le tĂ« plug nĂ« njĂ«.
Tani le tĂ« bĂ«jmĂ« tĂ« njĂ«jtĂ«n gjĂ« me b.
Dhe le tĂ« bĂ«jĂ« tĂ« njĂ«jtĂ«n gjĂ« kĂ«tu.
>> Dhe tani, mĂ« lejoni tĂ« kopjoni ato linja tĂ« njĂ«jta pĂ«rsĂ«ri nĂ« fund tĂ« funksionit
pas linjave tĂ« tre mia tĂ« interesante mund tĂ« ketĂ« ekzekutuar, dhe
printoni njĂ« b dhe pĂ«rsĂ«ri.
Pra, tani le tĂ« bĂ«jĂ« kĂ«tĂ«, bĂ«jĂ« asnjĂ« shkĂ«mbim.
MĂ« lejoni tĂ« bĂ«jĂ« njĂ« dritare terminali bit shtatlartĂ«, kĂ«shtu qĂ« ne mund tĂ« shohim
mĂ« shumĂ« nga ajo nĂ« tĂ« njĂ«jtĂ«n kohĂ«.
>> Dhe tĂ« kandidojĂ« asnjĂ« shkĂ«mbim.
x eshte 1, y eshte 2. a eshte 1, b Ă«shtĂ« 2.
Dhe pastaj, a Ă«shtĂ« 2, b eshte 1.
Pra, ajo Ă«shtĂ« duke punuar, ashtu si Jess e bĂ«ri kĂ«tu nĂ« brendĂ«si tĂ« swap-it.
Por sigurisht, ajo qĂ« nuk ka efekt mbi ndryshoret nĂ« kryesore.
>> Pra, ne pamĂ« njĂ« mashtrim tĂ« cilĂ«s ne mund tĂ« rregullojmĂ« kĂ«tĂ«, tĂ« drejtĂ«?
Kur ju jeni ballafaquar me kĂ«tĂ« Studimit , Ă§Ă«shtje qĂ« ju mund vetĂ«m tĂ« vĂ« bast dhe tĂ« X
dhe y Ă§farĂ« lloj variabla vend?
>> Ju mund tĂ« bĂ«jnĂ« ato globale.
VĂ«nĂ« ato nĂ« krye tĂ« dosjes siĂ§ bĂ«mĂ«, madje edhe nĂ« ndeshjen e 15.
Ne pĂ«rdorim njĂ« ndryshore globale.
Por ne kuadrin e nje lojĂ«s 15, Ă«shtĂ« e arsyeshme qĂ« tĂ« ketĂ« njĂ« globale
ndryshueshme nĂ« pĂ«rfaqĂ«simin e bordit, sepse 15.c Ă«shtĂ« tĂ«rĂ«sia e tĂ« gjitha
lidhje me zbatimin e se lojĂ«.
Kjo Ă«shtĂ« ajo qĂ« ekziston pĂ«r tĂ« bĂ«rĂ« fotografi.
>> Por nĂ« kĂ«tĂ« rast kĂ«tu, unĂ« jam i duke e quajtur njĂ« shkĂ«mbim funksion.
UnĂ« dua tĂ« bie nĂ« ujdi dy variablave.
Dhe kjo duhet tĂ« fillojnĂ« tĂ« ndjehen vetĂ«m lĂ«ngshĂ«m nĂ«se zgjidhja pĂ«r tĂ« gjithĂ« e tona
probleme kur kemi drejtuar nĂ« fushĂ«n e Ă‡Ă«shtjet Ă«shtĂ« tĂ« bĂ«jĂ« atĂ« globale.
Sepse shumĂ« shpejt Ă«shtĂ« programi ynĂ« do tĂ« bĂ«het mjaft e njĂ« rrĂ«mujĂ«.
Dhe ne e bĂ«mĂ« atĂ« shumĂ« me masĂ« si rezultat nĂ« 15.c.
>> Por kjo rezulton se ka njĂ« mĂ«nyrĂ« mĂ« tĂ« mirĂ« krejt.
MĂ« lejoni tĂ« vĂ«rtetĂ« tĂ« shkuar mbrapa dhe fshini print sĂ« F, vetĂ«m pĂ«r tĂ« lehtĂ«suar kĂ«tĂ« kod.
Dhe mĂ« lejoni tĂ« propozoj qĂ« kjo, me tĂ« vĂ«rtetĂ«, Ă«shtĂ« e keqe.
Por nĂ« qoftĂ« se unĂ« nĂ« vend qĂ« tĂ« shtoni nĂ« disa asterisks dhe yjet, nĂ« vend tĂ« kĂ«saj unĂ« mund tĂ« kthehet kĂ«tĂ«
Funksioni nĂ« njĂ« thats nĂ« tĂ« vĂ«rtetĂ« operacional.
>> Pra mĂ« lejoni tĂ« kthehem kĂ«tu dhe pranoj duke thĂ«nĂ« se asterisks Ă«shtĂ« gjithmonĂ« e vĂ«shtirĂ«,
kĂ«shtu qĂ« unĂ« do tĂ« thonĂ« yjet.
UnĂ« vetĂ«m do tĂ« rrĂ«fejĂ« deri nĂ« atĂ« njĂ«.
Dakord.
Dhe tani, Ă§farĂ« jam unĂ« do tĂ« bĂ«ni nĂ« vend?
>> Pra, para sĂ« gjithash, unĂ« jam duke shkuar pĂ«r tĂ« specifikojĂ« se nĂ« vend tĂ« kalimit nĂ« njĂ« int
Funksioni swap, unĂ« jam vend pĂ«r tĂ« shkuar pĂ«r tĂ« thĂ«nĂ« yllin int.
Tani, Ă§farĂ« do tĂ« tregojnĂ« yll?
Kjo Ă«shtĂ« se kuptimi i nje tregues asaj Binky, karakteri Claymation, ishte
duke iu referuar njĂ« moment mĂ« parĂ«.
>> Pra, nĂ«se ne themi yll int, kuptimi i kjo tani Ă«shtĂ« se nuk do tĂ« jetĂ«
duke kaluar nĂ« vlerĂ«n e saj.
Kjo nuk do tĂ« jenĂ« tĂ« kopjohet in
PĂ«rkundrazi, adresa e njĂ« Ă«shtĂ« duke shkuar pĂ«r tĂ« kaluar in
>> Pra, kujtojnĂ« se brenda e kompjuterit tuaj Ă«shtĂ« njĂ« bandĂ« e tĂ«rĂ« e kujtesĂ«s, pĂ«rndryshe
i njohur si RAM.
Dhe kjo RAM Ă«shtĂ« vetĂ«m njĂ« bandĂ« e tĂ«rĂ« e bytes.
Pra, nĂ«se tuaj Mac ose PC juaj ka Dy gigabajt, ju keni 2
miliardi bytes e kujtesĂ«s.
>> Tani le tĂ« vetĂ«m tĂ« supozojmĂ« se vetĂ«m pĂ«r tĂ« tĂ« mbajtur gjĂ«rat e bukur dhe tĂ« rregullt, ne
tĂ« caktojĂ« njĂ« adresĂ« -
njĂ« numĂ«r -
pĂ«r Ă§do bajt RAM nĂ« kompjuterin tuaj.
Bajt i parĂ« i atyre 2 miliardĂ« Ă«shtĂ« nga zero numrave.
NjĂ« tjetĂ«r Ă«shtĂ« numĂ«r njĂ« bajt, numri i dy, tĂ« gjitha mĂ«nyra mĂ« lart, dot dot
dot, pĂ«r afĂ«rsisht 2 miliard dollarĂ«.
>> KĂ«shtu qĂ« ju mund Numri i bytes e kujtesĂ«s nĂ« kompjuterin tuaj.
Pra, le tĂ« supozojmĂ« se kjo Ă«shtĂ« ajo qĂ« ne do tĂ« thotĂ« nga njĂ« adresĂ«.
Pra, kur unĂ« shoh njĂ« yll tĂ« int, Ă§farĂ« po ndodh pĂ«r tĂ« kaluar nĂ« swap tashmĂ« Ă«shtĂ«
adresa e njĂ«.
Jo vlera e tij, por Ă§do gjĂ« e saj postar adresa Ă«shtĂ«, kĂ«shtu qĂ« tĂ« flasin -
vendndodhjen e saj nĂ« RAM.
>> Dhe nĂ« mĂ«nyrĂ« tĂ« ngjashme pĂ«r b, unĂ« jam duke shkuar pĂ«r tĂ« thĂ«nĂ« tĂ« njĂ«jtĂ«n gjĂ«.
Int, yll, b.
Si njĂ« mĂ«njanĂ«, teknikisht yllit mund tĂ« shkojnĂ« nĂ« vende tĂ« tjera.
Por ne do tĂ« standardizohet nĂ« yllin qenĂ« tĂ« drejtĂ« tjetĂ«r pĂ«r llojin e tĂ« dhĂ«nave.
>> KĂ«shtu bie nĂ« ujdi nĂ«nshkrimi tani do tĂ« thotĂ«, mĂ« jepni adresa e njĂ« int, dhe thirrja
se adresa a.
Dhe jepni njĂ« adresĂ« tjetĂ«r tĂ« njĂ« int dhe thirrje qĂ« b adresave.
>> Por tani kodi im kĂ«tu ka pĂ«r tĂ« ndryshuar.
Sepse nĂ« qoftĂ« se unĂ« deklaroj temp int -
e cila Ă«shtĂ« ende e tipit int -
por kam ruajtur atĂ« nĂ« njĂ«, Ă§farĂ« lloj tĂ« vlerĂ«s sĂ«?
PĂ«r tĂ« qenĂ« tĂ« qartĂ«, unĂ« jam vĂ«nĂ« njĂ« njĂ« me Kodi shkruar si tĂ« drejtĂ« tani?
>> UnĂ« jam vĂ«nĂ« vendin nĂ« njĂ«.
Por unĂ« nuk e kujdesit nĂ« lidhje lokacioni tani, tĂ« drejtĂ«?
Temp ekziston vetĂ«m kupĂ«n e tretĂ« Jess ' ekzistuar, pĂ«r Ă§farĂ« qĂ«llimi?
PĂ«r tĂ« ruajtur njĂ« vlerĂ«.
QumĂ«sht ose lĂ«ng portokalli.
Jo nĂ« fakt tĂ« ruajtur adresĂ«n e ose nga ato gjĂ«ra, tĂ« cilat ndihet njĂ«
pak absurd nĂ« kĂ«tĂ« tĂ« vĂ«rtetĂ« Konteksti botĂ«ror anyway.
>> Pra, me tĂ« vĂ«rtetĂ«, ajo qĂ« unĂ« dua tĂ« vĂ«nĂ« nĂ« temp nuk Ă«shtĂ« adresa e njĂ«, por
PĂ«rmbajtja e njĂ«.
Pra, nĂ« qoftĂ« se njĂ« Ă«shtĂ« njĂ« numĂ«r si 123, kjo Ă«shtĂ« 123 byte e kujtesĂ«s qĂ« vetĂ«m njĂ«
ndodh tĂ« jetĂ« pushtuese, qĂ« vlera e ne nje ndodh tĂ« jetĂ« i zĂ«nĂ«.
>> NĂ«se dua tĂ« shkoj nĂ« atĂ« adresĂ«, UnĂ« duhet tĂ« them njĂ« yll.
NĂ« mĂ«nyrĂ« tĂ« ngjashme, nĂ« qoftĂ« se unĂ« ishin tĂ« ndryshojĂ« atĂ« qĂ« Ă«shtĂ« nĂ« adresĂ«n e njĂ«, unĂ« tĂ« ndryshojĂ«
kjo pĂ«r tĂ« filluar njĂ«.
NĂ«se unĂ« dua pĂ«r tĂ« ruajtur nĂ« atĂ« qĂ« Ă«shtĂ« nĂ« njĂ« vend me atĂ« qĂ« Ă«shtĂ« nĂ« vendin e
nĂ« b, b yll yll.
>> Pra me pak fjalĂ«, edhe nĂ«se kjo nuk Ă«shtĂ« mjaft nĂ« fundosje akoma - dhe unĂ« nuk do tĂ« presim
se ajo do tĂ« nĂ« mĂ«nyrĂ« tĂ« shpejtĂ« -
kuptojnĂ« se tĂ« gjitha unĂ« jam duke bĂ«rĂ« Ă«shtĂ« prefixing kĂ«to yje tĂ« variablave tĂ« mi,
thĂ«nie nuk e kap vlerat.
Mos e ndryshoni vlerat.
Por mĂ« tepĂ«r, shkoni tek ato adresat dhe tĂ« marrĂ« vlerĂ«n.
Shko nĂ« atĂ« adresĂ« dhe ndryshim vlera atje.
>> Pra, tani mĂ« lejoni tĂ« lĂ«viz mbrapa deri nĂ« majĂ«, vetĂ«m pĂ«r tĂ« rregulluar kĂ«tĂ« linjĂ« kĂ«tu, pĂ«r tĂ«
ndryshojĂ« prototip tĂ« ndeshjes.
Por unĂ« tani duhet tĂ« bĂ«jĂ« njĂ« gjĂ« tjetĂ«r.
Intuitivisht, nĂ« qoftĂ« se kam ndryshuar tipet e e argumenteve qĂ« swap-i pritur,
Ă§farĂ« tjetĂ«r nuk kam nevojĂ« pĂ«r tĂ« ndryshim nĂ« kodin tim?
>> Kur unĂ« e quaj shkĂ«mbim.
Sepse tani, Ă§farĂ« jam Kam kaluar tĂ« bie nĂ« ujdi ende?
X vlera dhe vlera e y, ose qumĂ«sht dhe lĂ«ng portokalli.
Por unĂ« nuk dua tĂ« bĂ«j kĂ«tĂ«.
UnĂ« nĂ« vend qĂ« doni tĂ« kalojĂ« nĂ« atĂ«?
Vendndodhjen e X dhe vendndodhja e y.
Cilat janĂ« adresat e tyre postare, kĂ«shtu qĂ« tĂ« flasin.
>> Pra, pĂ«r tĂ« bĂ«rĂ« kĂ«tĂ«, ka njĂ« simbol.
Lloj simbol i tingĂ«llon si adresĂ«.
kĂ«shtu n, simbol, adresa e x, dhe adresa e y.
Pra, kjo Ă«shtĂ« e qĂ«llimshme qĂ« ne pĂ«rdorim ampersands Kur e quan funksionin,
dhe yjet kur deklarimit dhe kur zbatimin e funksionit.
>> Dhe vetĂ«m tĂ« mendoj pĂ«r simbolin komercial si adresa e operatorit, dhe si yll
shkoni atje Operatori -
ose, mĂ« mirĂ«, Operatori dereference.
Pra, kjo Ă«shtĂ« njĂ« shumĂ« e tĂ«rĂ« e fjalĂ«ve tĂ« vetĂ«m pĂ«r tĂ« thonĂ« se tani, me shpresĂ«, swap po shkon
tĂ« jenĂ« korrekte.
>> MĂ« lejoni tĂ« shkojnĂ« pĂ«rpara dhe tĂ« bĂ«jĂ« -
le tĂ« vĂ«rtetĂ« tĂ« ndĂ«rrojĂ« emrin e file, qĂ« tĂ« mos ky program nuk ka ende tĂ« quhet swap.
UnĂ« pretendojnĂ« se ne do tĂ« thĂ«rrasĂ« atĂ« swap.c tani.
Pra, tĂ« bĂ«jĂ«, tĂ« bie nĂ« ujdi.
Dot, plagĂ«, tĂ« bie nĂ« ujdi.
>> Dhe tani me tĂ« vĂ«rtetĂ«, Ă«shtĂ« 1 x, y Ă«shtĂ« 2.
Dhe pastaj, x eshte 2, y Ă«shtĂ« njĂ«.
E pra, le tĂ« shohim nĂ«se ne nuk mund tĂ« bĂ«jmĂ« kĂ«tĂ« njĂ« pak mĂ« ndryshe si pĂ«r atĂ« qĂ« Ă«shtĂ«
ndodh kĂ«tu.
SĂ« pari, mĂ« lejoni tĂ« zoom nĂ« nĂ« tonĂ« vizatim ekran kĂ«tu.
Dhe mĂ« lejoni tĂ« propozojnĂ« pĂ«r njĂ« moment - dhe sa herĂ« qĂ« kam nxjerrĂ« kĂ«tu do tĂ« pasqyrohen
deri atje tani - mĂ« lejoni tĂ« propozoj qĂ« kĂ«tu Ă«shtĂ« njĂ« bandĂ« e tĂ«rĂ« e kujtesĂ«s, ose
RAM, brenda e kompjuterit tim.
>> Dhe kjo do tĂ« jetĂ« numri i kafshoj, le tĂ« themi, 1.
Kjo do tĂ« jetĂ« bytes numĂ«r 2.
Dhe unĂ« do tĂ« bĂ«j njĂ« bandĂ« e tĂ«rĂ« mĂ« shumĂ«, dhe pastaj njĂ« bandĂ« e dots dot dot pĂ«r
tregojnĂ« se ka 2 miliard dollarĂ« nga kĂ«to gjĂ«ra.
4, 5, dhe kĂ«shtu me radhĂ«.
>> Pra, nuk janĂ« para pesĂ« bytes e kujtesĂ«n e kompjuterit tim.
TĂ« gjithĂ« tĂ« drejtĂ«?
ShumĂ« pak prej 2 miliardĂ«.
Por tani unĂ« jam duke shkuar pĂ«r tĂ« propozojĂ« nĂ« vijim.
UnĂ« jam duke shkuar pĂ«r tĂ« propozojĂ« qĂ« x Ă«shtĂ« duke shkuar pĂ«r tĂ« tĂ« ruajtur numrin 1, dhe y po shkon
pĂ«r tĂ« ruajtur numrin 2.
Dhe mĂ« lejoni tĂ« shkoj pĂ«rpara dhe tani pĂ«rfaqĂ«son kĂ«to vlera si mĂ« poshtĂ«.
>> Le ta bĂ«jmĂ« kĂ«tĂ« si mĂ« poshtĂ«.
MĂ« jepni vetĂ«m njĂ« sekond.
NjĂ« sekondĂ«.
OK.
UnĂ« dua tĂ« bĂ«rĂ« kĂ«tĂ« njĂ« pak -
le tĂ« bĂ«jĂ« kĂ«tĂ« pĂ«rsĂ«ri.
PĂ«rndryshe unĂ« jam duke shkuar pĂ«r tĂ« pĂ«rdorur dhe Numrat e njĂ«jta, pa dashje,
herĂ« tĂ« shumta.
>> Pra, vetĂ«m kĂ«shtu qĂ« ne kemi numra tĂ« ndryshĂ«m pĂ«r tĂ« folur rreth, le ta quajmĂ« kĂ«tĂ« bajt
numĂ«r 123, 124, 125, 126, dhe dot dot dot.
Dhe mĂ« lejoni tĂ« pohojnĂ« tani qĂ« unĂ« jam duke shkuar pĂ«r tĂ« vĂ«nĂ« vlerĂ«n 1 kĂ«tu, dhe vlerĂ«n 2
kĂ«tu, i njohur ndryshe si x dhe y.
Pra, kjo ndodh pikĂ«risht kĂ«shtu qĂ« kjo Ă«shtĂ« x, y kjo Ă«shtĂ«.
>> Dhe vetĂ«m nga disa rastĂ«sisht, kompjuter, sistemit operativ,
ndodhur pĂ«r tĂ« vĂ«nĂ« nĂ« vend tĂ« x numĂ«r 123.
Dhe y pĂ«rfundoi nĂ« lokacionin 124 -
mallkonte atĂ«.
UnĂ« duhet tĂ« ketĂ« fiksuar kĂ«tĂ«.
Oh njeri, nuk kam me tĂ« vĂ«rtetĂ« doni ta bĂ«ni kĂ«tĂ«?
Po, unĂ« dua pĂ«r tĂ« rregulluar kĂ«tĂ« dhe b duhur nĂ« lidhje me kĂ«tĂ« sot.
Na vjen keq, reja nĂ« kĂ«tĂ«.
>> 127, 131, dhe unĂ« nuk dua tĂ« jem ky komplekse, por pse nuk kam ndryshuar
Numrat atje?
Sepse unĂ« dua qĂ« tĂ« ints tĂ« jetĂ« nĂ« fakt katĂ«r bytes.
Pra, le tĂ« jetĂ« super anal nĂ« lidhje me kĂ«tĂ«.
KĂ«shtu qĂ«, nĂ«se ndodh 1 tĂ« adresohen 123, 2 do tĂ« jetĂ« nĂ« adresĂ«n
127, sepse ajo Ă«shtĂ« vetĂ«m 4 byes larg.
Kjo Ă«shtĂ« e gjitha.
Dhe ne do tĂ« harrojmĂ« pĂ«r tĂ« gjithĂ« adresat e tjera nĂ« botĂ«.
>> Pra, x Ă«shtĂ« nĂ« vend tĂ« 123, y Ă«shtĂ« nĂ« vend tĂ« 127.
Dhe tani Ă§farĂ« po bĂ«j unĂ« nĂ« fakt doni tĂ« bĂ«ni?
Kur unĂ« e quaj swap tani, Ă§farĂ« Ă«shtĂ« nĂ« tĂ« vĂ«rtetĂ« ndodh?
E pra, kur unĂ« e quaj shkĂ«mbim, unĂ« jam duke kaluar nĂ« adresa e x dhe adresa e y.
KĂ«shtu pĂ«r shembull, nĂ« qoftĂ« se kĂ«to dy copa i letrĂ«s tani pĂ«rfaqĂ«sojnĂ« dy
Argumentet a dhe b tĂ« bie nĂ« ujdi, Ă§farĂ« jam unĂ« do tĂ« shkruaj mĂ« parĂ« i tyre,
tĂ« cilĂ«n unĂ« jam duke shkuar pĂ«r tĂ« thirrur referohen si njĂ«?
>> PikĂ«risht, 123.
KĂ«shtu qĂ« kjo I pretendim eshte nje.
Ky eshte nje parametri.
UnĂ« jam vĂ«nĂ« adresĂ«n e x nĂ« atje.
>> Ă‡farĂ« Ă«shtĂ« ajo?
>> Jo, nuk ka.
Kjo Ă«shtĂ« nĂ« rregull.
Ende e mirĂ«, ende e mirĂ«.
Pra, kjo Ă«shtĂ« njĂ«.
Dhe tani nĂ« pjesĂ« e dytĂ« tĂ« letrĂ«s, kjo do tĂ« jetĂ« b, dhe Ă§farĂ« jam unĂ«
do tĂ« jenĂ« tĂ« shkruar nĂ« kjo copĂ« letĂ«r?
127.
>> Pra, e vetmja gjĂ« qĂ« ka ndryshuar qĂ« tregimi ynĂ« i mĂ«parshĂ«m i kĂ«saj historie Ă«shtĂ«,
jo fjalĂ« pĂ«r fjalĂ« 1 dhe 2, unĂ« jam do tĂ« kalojĂ« nĂ« numrin 123 dhe 127.
Dhe unĂ« tani jam duke shkuar pĂ«r tĂ« vĂ«nĂ« kĂ«to brenda i kĂ«saj kutize, tĂ« gjithĂ« tĂ« drejtĂ«?
KĂ«shtu qĂ« tani pĂ«rfaqĂ«son kuti e zezĂ« Funksioni swap.
>> NdĂ«rkohĂ«, tani le tĂ« ketĂ« dikush zbatojĂ« funksionin swap.
Dikush do deri kĂ«tu tĂ« doja tĂ« vullnetare?
Come on up.
Cili Ă«shtĂ« emri juaj?
Charlie.
TĂ« gjithĂ« tĂ« drejtĂ«, Charlie.
Come on up.
>> Pra, Charlie Ă«shtĂ« duke shkuar pĂ«r tĂ« luajtur Roli i kutisĂ« tonĂ« tĂ« zi.
Dhe Charlie, ajo qĂ« unĂ« do tĂ« doja qĂ« ju tĂ« bĂ«ni tani Ă«shtĂ« zbatuar swap nĂ« njĂ« mĂ«nyrĂ« tĂ« tillĂ«
se, duke pasur parasysh kĂ«to dy adresa, ju ishin nĂ« fakt duke shkuar
pĂ«r tĂ« ndryshuar vlerat.
Dhe unĂ« do tĂ« pĂ«shpĂ«ritĂ« nĂ« veshin tuaj si pĂ«r tĂ« drejtuar TV kĂ«tu.
>> Pra shkoni pĂ«rpara, dhe ju jeni kuti e zezĂ«.
ArrijnĂ« nĂ« atje.
Ă‡farĂ« janĂ« vlerat e shihni ju pĂ«r njĂ«, dhe Ă§farĂ« janĂ« vlerat e shihni ju pĂ«r b?
>> CHARLIE: a Ă«shtĂ« 123 dhe b Ă«shtĂ« 127.
>> DAVID Malan: OK, saktĂ«sisht.
Tani pauzĂ« atje pĂ«r vetĂ«m njĂ« moment.
GjĂ«ja e parĂ« qĂ« ju jeni do tĂ« bĂ«ni tani, sipas kodit - cilin
UnĂ« tani do tĂ« tĂ«rheqĂ« deri nĂ« ekran -
do tĂ« jetĂ« qĂ« tĂ« ndajĂ« pak bit e kujtesĂ«s quajtur temp.
KĂ«shtu qĂ« unĂ« jam duke shkuar pĂ«r tĂ« shkuar pĂ«rpara dhe ju jap se kujtesĂ«s.
>> Pra, kjo do tĂ« jetĂ« njĂ« variabĂ«l i tretĂ« qĂ« ju keni nĂ« dispozicion pĂ«r tĂ«
ju thirri temp.
Dhe Ă§farĂ« po ju do tĂ« shkruani nĂ« copĂ« temp e letrĂ«s?
>> CHARLIE: Pointers, e drejtĂ«?
>> DAVID Malan: OK, edhe jo domosdoshmĂ«risht pointers.
Pra, linjĂ« e kodit qĂ« unĂ« kam theksuar nĂ« anĂ«n e djathtĂ«,
le tĂ« fillojĂ« atje.
Ajo thotĂ« se njĂ« yll.
Pra, a Ă«shtĂ« aktualisht ruajtjen numri 123.
Dhe vetĂ«m intuitive, Ă§farĂ« yll ka 123 do tĂ« thotĂ«?
>> Por, konkretisht, nĂ« qoftĂ« se njĂ« Ă«shtĂ« 123, njĂ« yll do tĂ« thotĂ« Ă§farĂ«?
Vlera e njĂ«.
Ose mĂ« rastĂ«sisht, tĂ« shkojnĂ« atje.
Pra mĂ« lejoni tĂ« propozojnĂ« qĂ«, duke mbajtur nĂ« njĂ« dora jote, tĂ« shkojnĂ« pĂ«rpara dhe tĂ« trajtojnĂ« se
sikur kjo Ă«shtĂ« njĂ« hartĂ«.
Dhe ecin mbi veten nĂ« kompjuterin e kujtesĂ«s, dhe tĂ« na gjeni atĂ« qĂ« Ă«shtĂ« e
nĂ« vend tĂ« 123.
SaktĂ«sisht.
>> Pra, ne shohim nĂ« lokacionin 123 Ă«shtĂ« ajo, padyshim?
OK, kĂ«shtu qĂ« Ă§farĂ« tani vlera jeni duke shkuar pĂ«r tĂ« vĂ«nĂ« nĂ« temp?
SaktĂ«sisht.
Pra shkoni pĂ«rpara dhe tĂ« bĂ«jĂ« atĂ«.
Dhe shkruaj numrin 1 nĂ« copĂ« letĂ«r qĂ« Ă«shtĂ« titulluar aktualisht temp.
>> Dhe tani hapi tjetĂ«r qĂ« ju jeni duke shkuar pĂ«r tĂ« zbatuar
do tĂ« jetĂ« ajo.
E pra, nĂ« anĂ«n e djathtĂ« tĂ« Linja tjetĂ«r e kodit Ă«shtĂ« yll b. b, i
Kursi, ruan njĂ« adresĂ«.
QĂ« adreson 127.
B Star thotĂ« se Ă§farĂ«, rastĂ«sisht duke folur?
>> Shko nĂ« atĂ« vend.
Pra shkoni pĂ«rpara dhe tĂ« na gjeni se Ă§farĂ« Ă«shtĂ« nĂ« vend tĂ« 127.
OK.
Sigurisht, nĂ« vend tĂ« 127, Ă«shtĂ« ende vlera 2.
Pra, Ă§farĂ« po ndodh tani nĂ« dyqan Ă§do gjĂ« Ă«shtĂ« nĂ« vend nĂ« njĂ«?
Pra, njĂ« yll tĂ« thotĂ« tĂ« shkojnĂ« nĂ« njĂ« vend.
Ă‡farĂ« Ă«shtĂ« njĂ« vend?
>> SaktĂ«sisht.
Deri tani, nĂ« qoftĂ« se ju doni tĂ« ndryshoni Ă§farĂ« Ă«shtĂ« nĂ« atĂ« vend -
UnĂ« do tĂ« shkoj pĂ«rpara dhe tĂ« drejtuar gomĂ« janĂ« kĂ«tu.
Dhe tani e vĂ«nĂ« atĂ« pĂ«rsĂ«ri nĂ« furĂ§Ă«.
Ă‡farĂ« numri jeni duke shkuar pĂ«r tĂ« shkruar nĂ« atĂ« kuti bosh tani?
>> SaktĂ«sisht.
Pra, kjo linjĂ« e kodit, tĂ« jetĂ« i qartĂ« - le mua pauzĂ« Ă§farĂ« tĂ« bĂ«jnĂ« dhe Charlie
theksoj kĂ«tu, se Ă§farĂ« ai Ă«shtĂ« bĂ«rĂ« vetĂ«m Ă«shtĂ« shkruajnĂ« nĂ« atĂ« kutinĂ« nĂ« lokacionin 123
vlera qĂ« ishte mĂ« parĂ« nĂ« b.
Dhe kĂ«shtu qĂ« ne kemi zbatuar tani nĂ« tĂ« vĂ«rtetĂ« kjo linjĂ« e dytĂ« e kodit.
>> Tani pĂ«r fat tĂ« keq, nuk ka ende njĂ« linjĂ« tĂ« mbetura.
Tani ajo Ă«shtĂ« nĂ« temp, fjalĂ« pĂ«r fjalĂ«?
Kjo Ă«shtĂ« padyshim njĂ« numĂ«r.
Kjo nuk Ă«shtĂ« njĂ« adresĂ«.
Ă‹shtĂ« vetĂ«m njĂ« numĂ«r, lloj njĂ« ndryshore nga njĂ« javĂ«.
>> Dhe tani, kur ju thoni yll b, qĂ« do tĂ« thotĂ« shkojnĂ« pĂ«r tĂ« b adresave, i cili eshte i
Kursi kĂ«tu.
Pra, njĂ« herĂ« ju merrni atje -
UnĂ« do tĂ« shkoj pĂ«rpara dhe fshihet se Ă§farĂ« Ă«shtĂ« nĂ« tĂ« vĂ«rtetĂ« atje - dhe Ă§ka jeni
do tĂ« shkruaj tani nĂ« 127?
>> CHARLIE: temp, e cila Ă«shtĂ« njĂ«.
>> DAVID Malan: temp, e cila Ă«shtĂ« njĂ«.
Dhe Ă§farĂ« ndodh me temp nĂ« fund?
E pra, ne nuk tĂ« vĂ«rtetĂ« e di.
Ne nuk e kujdesit tĂ« vĂ«rtetĂ«.
Ă‡farĂ«do kohe ne kemi zbatuar njĂ« funksion deri mĂ« tani, Ă§do ndryshore lokale qĂ« ju keni
janĂ« me tĂ« vĂ«rtetĂ« lokale.
Dhe ata vetĂ«m tĂ« zhduket.
Ata janĂ« bonifikuar nga veprojnĂ« Sistemi pĂ«rfundimisht.
>> Pra, fakti qĂ« ende ka temp vlera 1 Ă«shtĂ« lloj i rrĂ«njĂ«sisht
jointeresant pĂ«r ne.
TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu qĂ« njĂ« raund i duartrokitje nĂ« qoftĂ« se ne mund tĂ« pĂ«r Charlie.
Very well done.
>> TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu qĂ« Ă§farĂ« e bĂ«n mĂ« tĂ« kjo do tĂ« thotĂ« qĂ« ne mund tĂ« bĂ«jmĂ«?
Pra, del se ne kemi qenĂ« Tregimi i njĂ« pak gĂ«njeshtra tĂ« bardha
pĂ«r mjaft kohĂ«.
NĂ« tĂ« vĂ«rtetĂ«, ajo rezulton se njĂ« varg, tĂ« gjithĂ« kĂ«tĂ« kohĂ«, nuk Ă«shtĂ« me tĂ« vĂ«rtetĂ« njĂ«
Sekuenca e karaktereve nĂ« vetvete.
Kjo lloj Ă«shtĂ« se intuitivisht.
>> Por duke folur teknikisht, string Ă«shtĂ« njĂ« Lloji i tĂ« dhĂ«nave qĂ« kemi deklaruar nĂ« brendĂ«si tĂ«
CS50 bibliotekĂ« tĂ« thjeshtojĂ« botĂ«n pĂ«r javĂ«t e para tĂ« klasĂ«s.
Ă‡farĂ« Ă«shtĂ« me tĂ« vĂ«rtetĂ« njĂ« varg Ă«shtĂ« adresa e nje karakter diku nĂ« RAM.
NjĂ« varg Ă«shtĂ« me tĂ« vĂ«rtetĂ« njĂ« numĂ«r, si 123 ose 127, qĂ« ndodh pĂ«r tĂ« caktoj kufijtĂ«
ku njĂ« varg fillon nĂ« memorie kompjuteri juaj.
>> Por kjo nuk paraqet string, nĂ« vetvete, nĂ« vetvete.
Dhe ne mund tĂ« shohim kĂ«tĂ« si mĂ« poshtĂ«.
MĂ« lejoni tĂ« shkojnĂ« pĂ«rpara dhe tĂ« hapur disa kodin qĂ« Ă«shtĂ« nĂ« mesin e
kodi burim sotme shembuj.
Dhe unĂ« jam duke shkuar pĂ«r tĂ« shkuar pĂ«rpara dhe tĂ« hapur lart, le tĂ« themi, krahasuar-0.c.
Ky Ă«shtĂ« njĂ« program qĂ« do buggy pĂ«r tĂ« realizuar si mĂ« poshtĂ«.
>> SĂ« pari.
UnĂ« jam duke shkuar pĂ«r tĂ« thĂ«nĂ« diĂ§ka.
AtĂ«herĂ« unĂ« jam duke shkuar pĂ«r tĂ« shkuar pĂ«rpara dhe tĂ« marrĂ« njĂ« varg nga pĂ«rdoruesi
nĂ« atĂ« linjĂ« tĂ« ardhshĂ«m.
AtĂ«herĂ« unĂ« jam duke shkuar pĂ«r tĂ« thonĂ« se ai pĂ«rsĂ«ri.
AtĂ«herĂ« unĂ« jam duke shkuar pĂ«r tĂ« marrĂ« njĂ« tjetĂ«r string nga pĂ«rdoruesi.
>> Dhe vini re, unĂ« jam duke treguar njĂ« vargjet nĂ« njĂ« ndryshore tĂ« quajtur s, dhe
njĂ« tjetĂ«r i kĂ«tyre frazave nĂ« njĂ« ndryshore tĂ« quajtur t.
Dhe tani unĂ« jam duke shkuar pĂ«r tĂ« kĂ«rkuar, shumĂ« arsyeshme, se nĂ« qoftĂ« se s barabartĂ« barabartĂ« me t,
vargjet janĂ« tĂ« njĂ«jta.
Ju shtypni tĂ« njĂ«jtĂ«n gjĂ«.
TjetĂ«r, vargjet janĂ« tĂ« nuk e njĂ«jta gjĂ«.
>> Pas tĂ« gjitha, nĂ« qoftĂ« se ne dy input ints, dy chars, dy gjithandej, dy dyshe, Ă§do i
llojet e tĂ« dhĂ«nave qĂ« kemi biseduar rreth deri mĂ« tani pĂ«r tĂ« krahasuar ato -
kujtoj kemi bĂ«rĂ« shumĂ« tĂ« qartĂ« njĂ« kohĂ« mĂ« parĂ« se ju nuk e bĂ«ni kĂ«tĂ«, sepse njĂ«
shenjĂ« e vetme Ă«shtĂ« e barabartĂ« natyrisht operatori detyrĂ«.
KĂ«shtu qĂ« do tĂ« jetĂ« njĂ« bug.
>> Ne pĂ«rdorim shenjĂ«n barabartĂ« tĂ« barabartĂ«, tĂ« cilat vĂ«rtet krahason
gjĂ«ra pĂ«r barazinĂ« e vĂ«rtetĂ«.
Por unĂ« pretendojnĂ« se kjo Ă«shtĂ« buggy.
NĂ«se unĂ« shkoj pĂ«rpara dhe tĂ« bĂ«jĂ« krahasimin zero, dhe pastaj tĂ« bĂ«jĂ« dot slash krahasoni zero.
Dhe unĂ« lloji nĂ«, le tĂ« themi, pĂ«rshĂ«ndetje.
Dhe pastaj le tĂ« thonĂ« hello pĂ«rsĂ«ri.
FjalĂ« pĂ«r fjalĂ« tĂ« njĂ«jtĂ«n gjĂ«, kompjuter pretendimet I shtypur gjĂ«ra tĂ« ndryshme.
>> Tani ndoshta unĂ« vetĂ«m diĂ§ka tĂ« gabuar.
UnĂ« do tĂ« shkruash emrin tim kĂ«tĂ« kohĂ«.
UnĂ« do tĂ« thotĂ«, pĂ«rshĂ«ndetje.
Hello.
Ă‹shtĂ« e ndryshme Ă§do herĂ« tĂ« vetme.
>> E pra, pse Ă«shtĂ« kjo?
Ă‡farĂ« ndodh nĂ« tĂ« vĂ«rtetĂ« nĂ«n kapuĂ§?
E pra, Ă§farĂ« ndodh nĂ« tĂ« vĂ«rtetĂ« nĂ«n individualitet Ă«shtĂ« string pastaj
I shtypur nĂ« atĂ« kohĂ« parĂ«, pĂ«r shembull Ă«shtĂ« fjala hello, natyrisht.
Por nĂ«se ne pĂ«rfaqĂ«sojmĂ« kĂ«tĂ« nĂ«n individualitet, kujtojmĂ« se njĂ«
varg eshte ne nje rrjet.
Dhe e kemi thĂ«nĂ« sa mĂ« shumĂ« nĂ« tĂ« kaluarĂ«n.
>> Pra, nĂ«se unĂ« tĂ«rheqĂ« atĂ« grup si ky, unĂ« jam duke shkuar pĂ«r tĂ« pĂ«rfaqĂ«suar diĂ§ka mjaft
ngjashme me atĂ« qĂ« ne e bĂ«mĂ« njĂ« moment mĂ« parĂ«.
Dhe nuk ka diĂ§ka tĂ« vĂ«rtetĂ« tĂ« veĂ§antĂ« kĂ«tu, too.
Ă‡farĂ« u kemi pĂ«rcaktuar nĂ« fundi i Ă§do varg?
Po, kjo zero backslash, e cila eshte vetĂ«m mĂ«nyra e pĂ«rfaqĂ«simit,
fjalĂ« pĂ«r fjalĂ«, 00000000.
0 TetĂ« BITS nĂ« njĂ« rresht.
>> UnĂ« nuk e di, sinqerisht, Ă§farĂ« Ă«shtĂ« pas kĂ«saj.
Kjo Ă«shtĂ« vetĂ«m njĂ« bandĂ« RAM mĂ« shumĂ« brenda e kompjuterit tim.
Por kjo Ă«shtĂ« njĂ« koleksion.
Ne folĂ«m rreth vargjeve tĂ« para.
Dhe ne zakonisht flasim rreth vargjeve si vendndodhja zero,
pastaj njĂ«, pastaj dy.
Por kjo Ă«shtĂ« vetĂ«m pĂ«r lehtĂ«si.
Dhe kjo Ă«shtĂ« krejtĂ«sisht relative.
>> Kur ju jeni nĂ« tĂ« vĂ«rtetĂ« duke marrĂ« kujtesĂ«s nga kompjuteri, kjo Ă«shtĂ« sigurisht Ă§do
2 miliard disa bytes rastĂ«sishĂ«m, potencialisht.
Pra, me tĂ« vĂ«rtetĂ« nĂ«n kapuĂ§, tĂ« gjithĂ« kĂ«tĂ« kohĂ«, po.
Kjo mund tĂ« jetĂ« shumĂ« mirĂ« zero kllapa.
Por nĂ« qoftĂ« se ju gĂ«rmoj edhe mĂ« thellĂ« nĂ«n kapuĂ§, se me tĂ« vĂ«rtetĂ«
adresuar numrin 123.
Kjo Ă«shtĂ« adresa 124.
Kjo Ă«shtĂ« adresa 125.
>> Dhe unĂ« nuk e vidhos deri nĂ« kĂ«tĂ« kohĂ«.
KĂ«to janĂ« tani njĂ« byte pĂ«rveĂ§ pĂ«r Ă§farĂ« arsye?
Sa i madh Ă«shtĂ« njĂ« char?
NjĂ« char Ă«shtĂ« vetĂ«m njĂ« bajt.
NjĂ« int zakonisht Ă«shtĂ« katĂ«r bytes.
Pra, kjo Ă«shtĂ« arsyeja pse unĂ« e bĂ«ri atĂ« 123, 127, 131 dhe kĂ«shtu me radhĂ«.
Tani unĂ« mund tĂ« mbani matematikĂ« tĂ« thjeshtĂ« dhe vetĂ«m tĂ« bĂ«jĂ« plus 1.
Dhe tani kjo Ă«shtĂ« ajo qĂ« Ă«shtĂ« me tĂ« vĂ«rtetĂ« ndodh nĂ« nĂ«n kapuĂ§.
>> Pra, kur ju tĂ« deklarojĂ« diĂ§ka si kjo, string s, kjo Ă«shtĂ« nĂ« fakt -
ajo rezulton jashtĂ« -
yll char.
Star, natyrisht, do tĂ« thotĂ« adresa, akrep aka.
Pra, kjo Ă«shtĂ« adresa e diĂ§kaje.
Ă‡farĂ« Ă«shtĂ« ajo adresa e?
>> Well -
UnĂ« jam i vetmi qĂ« mund tĂ« shihni shumĂ« Pika e rĂ«ndĂ«sishme qĂ« unĂ« jam duke bĂ«rĂ«, ose mendojnĂ«
UnĂ« jam duke e bĂ«rĂ«.
Pra string -
GjĂ«ja e trishtuar Ă«shtĂ« qĂ« unĂ« kam njĂ« monitor ka tĂ« drejtĂ« ku unĂ«
mund tĂ« ketĂ« parĂ« se.
>> TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu qĂ« string s Ă«shtĂ« ajo Kam deklaruar mĂ« parĂ«.
Por kjo rezulton, nĂ« sajĂ« tĂ« njĂ« pak magji nĂ« bibliotekĂ« CS50, e gjithĂ« kjo
string koha ka fjalĂ« pĂ«r fjalĂ« qenĂ« yll char.
Yll pĂ«rsĂ«ri do tĂ« thotĂ« akrep ose adresa.
Fakti qĂ« ajo Ă«shtĂ« flanking Fjala char do tĂ« thotĂ« se Ă«shtĂ«
adresa e njĂ« karakteri.
>> Pra, nĂ«se merrni string thirret, dhe unĂ« lloji nĂ« H-E-L-L-O, tĂ« propozojĂ« tani ajo ka marrĂ«
string qenĂ« fjalĂ« pĂ«r fjalĂ« kthimit tĂ« tĂ« gjithĂ« kĂ«tĂ« herĂ«, edhe pse ne kemi mĂ« tepĂ«r
thjeshtĂ«zuar botĂ«n?
Ă‡farĂ« ka marrĂ« string nĂ« tĂ« vĂ«rtetĂ« kthehet si vlera e saj e kthimit?
>> 123 nĂ« kĂ«tĂ« rast, pĂ«r shembull.
Ne kemi thĂ«nĂ« mĂ« parĂ« se tĂ« marrĂ« string kthehet thjesht njĂ« varg, njĂ« sekuencĂ« e
karaktere.
Por kjo Ă«shtĂ« pak e njĂ« gĂ«njeshtĂ«r tĂ« bardhĂ«.
MĂ«nyra tĂ« marrĂ« string vĂ«rtetĂ« punon nĂ«n kapuĂ§ Ă«shtĂ« ajo merr njĂ«
string nga pĂ«rdoruesi.
Ajo plops karaktere qĂ« ai ose ajo lloje nĂ« kujtesĂ«.
Ajo vĂ« njĂ« zero backslash nĂ« fund e atyre sekuencĂ« tĂ« karaktereve.
>> Por atĂ«herĂ« Ă§farĂ« ka marrĂ« string fjalĂ« pĂ«r fjalĂ« tĂ« kthehen?
Ă‹shtĂ« fjalĂ« pĂ«r fjalĂ« e kthen adresĂ«n e bytes mĂ« shumĂ« para nĂ« RAM qĂ«
ajo pĂ«rdoret pĂ«r atĂ« forcĂ«.
Dhe kjo rezulton se vetĂ«m duke u kthyer njĂ« adresĂ« e vetme e
karakter i parĂ« nĂ« varg, qĂ« Ă«shtĂ« tĂ« mjaftueshme pĂ«r tĂ« gjetur tĂ«rĂ«sinĂ« e
string.
>> Me fjalĂ« tĂ« tjera, marrĂ« string nuk kanĂ« pĂ«r t'u kthyer 123 dhe 124 dhe 125.
Ajo nuk duhet tĂ« jepni njĂ« kohĂ« tĂ« gjatĂ« listĂ« e tĂ« gjitha bytes qĂ«
string ime Ă«shtĂ« duke pĂ«rdorur.
PĂ«r shkak se njĂ«, ata janĂ« tĂ« gjithĂ« tĂ« kthehet prapa.
Dhe dy, bazuar nĂ« adresĂ«n e parĂ«, unĂ« mund tĂ« kuptoj se ku pĂ«rfundon string.
Si?
>> Karakter tĂ« veĂ§antĂ« null, backslash zero nĂ« fund.
Pra, me fjalĂ« tĂ« tjera, nĂ« qoftĂ« se ju tĂ« kalojĂ« pĂ«rreth -
brenda variablave -
adresa e njĂ« char, dhe ju supozojmĂ« qĂ« nĂ« fund tĂ« Ă§do varg, Ă§do
Sekuenca e karaktereve si ne njerĂ«zit tĂ« mendojnĂ« pĂ«r vargjet, nĂ«se ju supozojmĂ« se
nĂ« fund tĂ« Ă§do varg tĂ« tillĂ« nuk e njĂ« zero backslash, ju jeni tĂ« artĂ«.
Sepse ju gjithmonĂ« mund tĂ« gjeni fundi i nje varg.
>> Tani Ă§farĂ« po ndodh me tĂ« vĂ«rtetĂ«, atĂ«herĂ« nĂ« kĂ«tĂ« program?
Pse Ă«shtĂ« ky program, krahasoni-0.c, buggy?
Ă‡farĂ« Ă«shtĂ« nĂ« tĂ« vĂ«rtetĂ« duke u krahasuar?
Po?
>> STUDENT: [padĂ«gjueshme].
>> DAVID Malan: PikĂ«risht.
Ajo Ă«shtĂ« krahasuar vendndodhjet nga vargjet.
Pra, nĂ«se pĂ«rdoruesi ka shtypur nĂ« pĂ«rshĂ«ndetje herĂ«, si unĂ« e bĂ«ri, kujtesĂ«s mund tĂ« pĂ«rfundojnĂ«
nĂ« kĂ«rkim si kjo.
NĂ«se pĂ«rdoruesi pastaj nĂ« lloje PĂ«rshĂ«ndetje pĂ«rsĂ«ri, por duke telefonuar merrni varg sĂ«rish, c Ă«shtĂ«
nuk Ă«shtĂ« veĂ§anĂ«risht i zgjuar nĂ«se ju mĂ«soni qĂ« ajo tĂ« jetĂ« i zgjuar duke shkruar kodin.
>> C -
kompjutera dhe mĂ« nĂ« pĂ«rgjithĂ«si -
nĂ« qoftĂ« se ju shkruani nĂ« fjalĂ«n PĂ«rshĂ«ndetje pĂ«rsĂ«ri, ju e dini se Ă§farĂ« ju jeni do tĂ« merrni.
Ju jeni vetĂ«m do tĂ« merrni njĂ« rrjet tĂ« dytĂ« e kujtesĂ«s qĂ«, po, ndodh tĂ« jetĂ«
ruajtjen H-E-L-L-O dhe kĂ«shtu me radhĂ«.
>> Ajo do tĂ« shikojmĂ« tĂ« njĂ«jtĂ«n gjĂ« na njerĂ«zit, por kjo adresĂ«
nuk mund tĂ« jetĂ« 123.
Kjo mund tĂ« ndodhĂ« vetĂ«m nĂ« mĂ«nyrĂ« qĂ« sistem operativ ka disa nĂ« dispozicion
hapĂ«sirĂ« â€‹â€‹pĂ«r shembull nĂ« vend -
le tĂ« themi diĂ§ka arbitrar, si ky vend Ă«shtĂ« 200.
Dhe kjo Ă«shtĂ« vendndodhja 201.
Dhe kjo Ă«shtĂ« vendndodhja 202.
Ne nuk kemi asnjĂ« ide se ku thats do tĂ« jetĂ« nĂ« kujtesĂ«n.
>> Por Ă§farĂ« do tĂ« thotĂ« kjo Ă«shtĂ« se Ă§farĂ« Ă«shtĂ« do tĂ« ruhen nĂ« fund tĂ« fundit nĂ« s?
Numri 123.
Ă‡farĂ« do tĂ« ruhen nĂ« t, nĂ« kĂ«tĂ« shembull arbitrare?
Numri 200.
Dhe tĂ« gjithĂ« qĂ« do tĂ« thotĂ«, atĂ«herĂ« Ă«shtĂ« e qartĂ«, 123 nuk bĂ«n tĂ« barabartĂ« 200.
Dhe kĂ«shtu kjo nĂ«se kurrĂ« kusht evaluohet nĂ« true.
Sepse string merrni Ă«shtĂ« duke pĂ«rdorur tĂ« ndryshme chunks e kujtesĂ«s Ă§do kohĂ«.
>> Tani ne mund tĂ« shohim kĂ«tĂ« pĂ«rsĂ«ri NĂ« njĂ« shembull tjetĂ«r.
MĂ« lejoni tĂ« shkojnĂ« pĂ«rpara dhe tĂ« hapur-up kopje 0.c.
UnĂ« pohojnĂ« se ky shembull do tĂ« provoni - por dĂ«shtojnĂ« - ta kopjoni dy vargjet
si mĂ« poshtĂ«.
>> UnĂ« jam duke shkuar pĂ«r tĂ« thĂ«nĂ« diĂ§ka te te perdoruesit.
AtĂ«herĂ« unĂ« jam duke shkuar pĂ«r tĂ« marrĂ« njĂ« string dhe e quajti atĂ« s.
Dhe tani, unĂ« jam duke bĂ«rĂ« kĂ«tĂ« kontroll kĂ«tu.
Ne kemi pĂ«rmendur kĂ«tĂ« pĂ«rsĂ«ri njĂ« kohĂ«.
Por kur mund tĂ« merrni tĂ« kthimit null string, njĂ« tjetĂ«r karakter tĂ« veĂ§antĂ«, ose tĂ« veĂ§anta
Simboli le tĂ« themi.
NĂ«se kjo Ă«shtĂ« jashtĂ« kujtesĂ«s.
>> PĂ«r shembull, nĂ« qoftĂ« se pĂ«rdoruesi Ă«shtĂ« me tĂ« vĂ«rtetĂ« qenĂ« e vĂ«shtirĂ« dhe llojet njĂ« mizor
Numri i karaktereve nĂ« tastierĂ« dhe hitet Enter.
NĂ« qoftĂ« se numri i karaktereve thjesht nuk mund tĂ« pĂ«rshtaten nĂ« RAM pĂ«r Ă§farĂ«do Ă§mendur
arsye, mund tĂ« merrni edhe string shumĂ« mirĂ« tĂ« kthehen null.
>> Ose nĂ« qoftĂ« se programi juaj nĂ« vetvete Ă«shtĂ« bĂ«rĂ« shumĂ« gjĂ«ra tĂ« tjera dhe nuk Ă«shtĂ« vetĂ«m
nuk Ă«shtĂ« kujtesĂ« tĂ« mjaftueshme pĂ«r tĂ« marrĂ« string tĂ« ketĂ« sukses, Ajo mund tĂ« pĂ«rfundojĂ«
up kthyer null.
Por le tĂ« jenĂ« mĂ« tĂ« saktĂ« si pĂ«r tĂ« Ă§farĂ« Ă«shtĂ« kjo.
Cili Ă«shtĂ« lloji dhĂ«nat e S me tĂ« vĂ«rtetĂ«?
Yll Char.
>> Pra, del tani ne mund tĂ« zhvishem mbĂ«shtesĂ« shtresĂ«n e null.
Rezulton, null Ă«shtĂ« - po, natyrisht njĂ« simbol tĂ« veĂ§antĂ«.
Por Ă§farĂ« Ă«shtĂ« ajo me tĂ« vĂ«rtetĂ«?
Really, null Ă«shtĂ« vetĂ«m njĂ« simbol qĂ« ne njerĂ«zit pĂ«rdorin pĂ«r tĂ« pĂ«rfaqĂ«suar zero si.
>> Pra, autorĂ«t e C, dhe kompjutera mĂ« nĂ« pĂ«rgjithĂ«si, vendosi vjet mĂ« parĂ«
se, ju e dini se Ă§farĂ«.
Pse nuk kemi siguruar qĂ« asnjĂ« pĂ«rdorues dhĂ«nave Ă«shtĂ« kurrĂ«, kurrĂ«, kurrĂ«
ruhen nĂ« zero mirupafshim?
NĂ« fakt, edhe nĂ« shembullin tim arbitrare para, unĂ« nuk ka filluar qĂ« numĂ«ron
bytes zero.
UnĂ« fillova nĂ« njĂ«.
Sepse e dija qĂ« njerĂ«zit nĂ« botĂ« kanĂ« vendosur qĂ« tĂ« rezervoj zero
bajt nĂ« RAM askujt si diĂ§ka e veĂ§antĂ«.
>> Arsye qĂ«, nĂ« Ă§do kohĂ« qĂ« ju doni tĂ« sinjal se diĂ§ka ka shkuar keq
nĂ« lidhje me adresat, ju kthye null - i njohur ndryshe si zero -
dhe pĂ«r shkak se ju e dini se nuk ka asnjĂ« legit tĂ« dhĂ«na nĂ« adresĂ«n zero, nĂ« mĂ«nyrĂ« tĂ« qartĂ«
qĂ« do tĂ« thotĂ« njĂ« gabim.
Dhe kjo Ă«shtĂ« arsyeja pse ne, nga Konventa, kontrolloni for null diĂ§ka dhe kthimi
si njĂ« nĂ« ato raste.
>> Pra, nĂ«se ne lĂ«vizni poshtĂ« pĂ«r tani, kjo Ă«shtĂ« vetĂ«m pastaj disa kontrolluar gabim, vetĂ«m nĂ« rast
diĂ§ka shkoi keq me [? dorĂ«zani?]
krejt dhe mbaro programin duke u kthyer nĂ« fillim.
Kjo linjĂ« tani mund tĂ« rishkruhet si kjo, qĂ« do tĂ« thotĂ« Ă§farĂ«?
NĂ« anĂ«n e majtĂ«, jepni njĂ« tjetĂ«r tregues pĂ«r njĂ« karakter, dhe e quajti atĂ« t.
Ă‡farĂ« jam unĂ« ruajtjen brenda t, bazuar nĂ« kĂ«tĂ« vijĂ« njĂ« e kodit?
>> UnĂ« jam magazinimin njĂ« vend.
Konkretisht vend qĂ« ishte nĂ« s.
Pra, nĂ«se pĂ«rdoruesi ka shtypur nĂ« hello, dhe qĂ« sĂ« pari pĂ«rshĂ«ndetje ndodh tĂ« pĂ«rfundojnĂ«
kĂ«tu, atĂ«herĂ« numri Ă«shtĂ« 123 do tĂ« kthehen nga marrĂ«
string dhe tĂ« ruhen -
siĂ§ kemi thĂ«nĂ« mĂ« parĂ« -
nĂ« s.
>> Kur unĂ« deklaroj tani njĂ« tjetĂ«r tregues pĂ«r njĂ« t char dhe e quajti atĂ«, se Ă§farĂ« numri Ă«shtĂ«
fjalĂ« pĂ«r fjalĂ« do tĂ« pĂ«rfundojĂ« deri nĂ« T sipas tregimit?
Pra, 123.
>> Pra, teknikisht dhe tani tĂ« dy s t janĂ« treguar tĂ« saktĂ«
chunks e njĂ«jta tĂ« kujtesĂ«s.
Pra, njoftim se Ă§farĂ« unĂ« jam duke shkuar pĂ«r tĂ« bĂ«ni tani pĂ«r tĂ« tĂ« provojĂ« se ky program Ă«shtĂ« buggy.
>> SĂ« pari unĂ« jam duke shkuar pĂ«r tĂ« kĂ«rkuar, me njĂ« f shtypura, kapitalizimin
kopje tĂ« vargut.
AtĂ«herĂ« unĂ« jam duke shkuar pĂ«r tĂ« bĂ«rĂ« njĂ« pak Error checking.
UnĂ« jam duke shkuar pĂ«r tĂ« bĂ«rĂ« tĂ« sigurt.
Le tĂ« sigurohemi qĂ« t string Ă«shtĂ« nĂ« pak mĂ« i madh se zero nĂ« gjatĂ«si,
kĂ«shtu qĂ« ka disa karakter atje qĂ« nĂ« fakt germa.
>> Dhe pastaj ju mund tĂ« kujtojnĂ« kĂ«tĂ« nga shembujt e mĂ«parshĂ«m.
2 sipĂ«rme - cila eshte ne fotografi ctype.h.
T kllapa jep mua zero zero Karakteri i t string.
Dhe 2 sipĂ«rme tĂ« atij tĂ« njĂ«jtĂ«n vlerĂ«, e Sigurisht, ajo konverton tĂ« uppercase.
>> Pra intuitive, kjo theksuar linjĂ« e kodit Ă«shtĂ« kapitalizuar parĂ«
letĂ«r nĂ« t.
Por kjo nuk Ă«shtĂ« kapitalizuar, intuitive, shkronja e parĂ« nĂ« s.
Por nĂ«se ju jeni duke menduar pĂ«rpara, Ă§farĂ« jam unĂ« gati pĂ«r tĂ« parĂ« kur kam drejtuar kĂ«tĂ« program
dhe tĂ« shtypura nga tĂ« dy origjinale, S, dhe ashtuquajturi kopje, T?
>> Ata janĂ« nĂ« tĂ« vĂ«rtetĂ« do tĂ« jetĂ« i njĂ«jtĂ«.
Dhe pse janĂ« ata do tĂ« jenĂ« tĂ« njĂ«jta?
Ata janĂ« tĂ« dy duke treguar pĂ«r saktĂ«sisht e njĂ«jta gjĂ«.
Pra, le ta bĂ«jmĂ« kĂ«tĂ«.
>> BĂ«ni kopje zero.
Ai pĂ«rpilon OK.
MĂ« lejoni tĂ« kandidojĂ« zero kopje.
MĂ« lejoni tĂ« shkruani diĂ§ka si pĂ«rshĂ«ndetje nĂ« tĂ« gjitha vogle pastaj goditi Enter.
Dhe ajo pretendon se tĂ« dy s origjinale dhe me tĂ« vĂ«rtetĂ« janĂ« kopje identike.
>> Pra, Ă§farĂ« ndodhi me tĂ« vĂ«rtetĂ« kĂ«tu?
MĂ« lejoni shlyen kĂ«tĂ« foto vetĂ«m pĂ«r tĂ« treguar historinĂ« nĂ« njĂ«
mĂ«nyrĂ« paksa tĂ« ndryshme.
Ă‡farĂ« ndodh nĂ« tĂ« vĂ«rtetĂ« nĂ«n individualitet kur unĂ« deklaroj diĂ§ka si
nisje s, apo string s, UnĂ« jam duke marrĂ« njĂ« pointer -
i cili ndodh tĂ« jetĂ« katĂ«r bytes nĂ« aplikim CS50
dhe nĂ« njĂ« shumĂ« prej kompjuter.
Dhe unĂ« jam duke shkuar pĂ«r tĂ« thirrur kĂ«tĂ« s.
Dhe kjo ka aktualisht disa vlera panjohur.
>> Kur ju tĂ« deklarojĂ« njĂ« ndryshore, nĂ«se ju veten tĂ« vĂ«nĂ« njĂ« vlerĂ« atje, i cili
e di se Ă§farĂ« Ă«shtĂ« atje.
Kjo mund tĂ« jetĂ« disa sekuenca tĂ« rastit tĂ« bit nga ekzekutimi mĂ«parshĂ«m.
Pra kur unĂ«, nĂ« linjĂ«n time tĂ« kodit do tĂ« merrni string, dhe pastaj dyqan kthimin
Vlera nĂ« s merrni varg disi -
dhe ne pĂ«rfundimisht do tĂ« zhvishem mbrapa se si tĂ« merrni Punimet varg, disi alokon njĂ«
array qĂ« ndoshta duket pak si kjo.
H-E-L-L-O, backslash zero.
>> Le tĂ« supozojmĂ« se kjo Ă«shtĂ« adresa 123 vetĂ«m qĂ«ndrueshmĂ«ri tĂ« parĂ«.
Pra, tĂ« marrĂ« tĂ« kthimit string, nĂ« theksuar linjĂ« atje, ajo kthehet
Numri i thamĂ«, 123.
Pra, Ă§farĂ« me tĂ« vĂ«rtetĂ« shkon brenda s kĂ«tu?
>> E pra, Ă§farĂ« me tĂ« vĂ«rtetĂ« shkon brenda S eshte 123.
Por, sinqerisht, unĂ« jam duke marrĂ« njĂ« pak hutuar nga tĂ« gjithĂ« kĂ«to adresa,
tĂ« gjithĂ« kĂ«tyre numrave arbitrare.
123, 124, 127.
Pra, le tĂ« vĂ«rtetĂ« tĂ« thjeshtojĂ« botĂ«n njĂ« pak.
>> Kur ne flasim pĂ«r pointers, sinqerisht, pĂ«r tĂ« ne njerĂ«zit, i cili dreq kujdeset ku
gjĂ«rat janĂ« nĂ« kujtesĂ«n?
Kjo Ă«shtĂ« krejtĂ«sisht arbitrare.
Ajo do tĂ« varet nga sa sa RAM pĂ«rdorues ka.
Ajo do tĂ« varet kur nĂ« ditĂ«n e ju drejtuar programin, ndoshta, dhe
Ă§farĂ« input pĂ«rdorues ju jep.
Jemi ndalur nĂ« detaje tĂ« parĂ«ndĂ«sishme.
>> Pra abstrakte le larg dhe thonĂ« se, kur ju drejtuar njĂ« linjĂ« e kodit si kjo,
char yll s merr kthimin Vlera e vargut tĂ« merrni.
Pse nuk kemi vend vetĂ«m barazim ajo qĂ« ne mbani duke e quajtur si njĂ« tregues pse kjo Ă«shtĂ«
duke vĂ«nĂ« nĂ« diĂ§ka?
KĂ«shtu qĂ« unĂ« tani qĂ« pretendojnĂ« s up nuk eshte nje kursori -
nĂ«n kapuĂ§ Ă«shtĂ« njĂ« adresĂ«.
Por kjo Ă«shtĂ« vetĂ«m pĂ«r tĂ« treguar bajt parĂ« nĂ«
string qĂ« Ă«shtĂ« kthyer.
>> NĂ«se unĂ« tani kthehet nĂ« kodin kĂ«tu, Ă§farĂ« po ndodh nĂ« kĂ«tĂ« linjĂ«?
E pra, nĂ« kĂ«tĂ« linjĂ« theksuar tani, UnĂ« jam deklaruar me sa duket njĂ« tjetĂ«r
ndryshore tĂ« quajtur T.
Por kjo Ă«shtĂ« gjithashtu njĂ« tregues, kĂ«shtu qĂ« unĂ« jam duke shkuar pĂ«r tĂ« nxjerrĂ« atĂ« si, nĂ« teori, e saktĂ«
kuti tĂ« njĂ«jtĂ«n madhĂ«si.
Dhe unĂ« jam duke shkuar pĂ«r tĂ« thirrur atĂ« t.
>> Dhe tani, nĂ«se ne do tĂ« shkojmĂ« pĂ«rsĂ«ri nĂ« kodin pĂ«rsĂ«ri, kur kam ruajtur brenda s t,
Ă‡farĂ« jam unĂ« teknikisht vĂ«nĂ« brenda t?
E pra teknikisht, kjo ishte numri 123.
KĂ«shtu qĂ« unĂ« me tĂ« vĂ«rtetĂ« duhet tĂ« jetĂ« me shkrim 123 numri atje.
Por le tĂ« marrĂ« atĂ« nivel mĂ« tĂ« lartĂ«.
t, nĂ« qoftĂ« se ajo Ă«shtĂ« vetĂ«m njĂ« akrep, intuitivisht, Ă«shtĂ« vetĂ«m se.
Kjo Ă«shtĂ« e gjitha kjo Ă«shtĂ« tĂ« jesh ruhen nĂ« atje.
>> Deri tani nĂ« linjat e fundit interesante e kodit, kur unĂ« nĂ« fakt tĂ« shkuar nĂ« lidhje
kapitalizimin karakterin zero nĂ« t, Ă§farĂ« po ndodh?
E pra, t kllapa zero tani Ă«shtĂ« vĂ«nĂ« nĂ« pĂ«r Ă§farĂ« karakteri, me sa duket?
>> Ă‹shtĂ« treguar pĂ«r h.
Sepse t kllapa zero -
kujtoj, kjo Ă«shtĂ« sintaksa e vjetĂ«r. T kllapa zero thjesht do tĂ« thotĂ« nĂ« qoftĂ« se Ă«shtĂ« njĂ« varg t, t
parantezĂ« zero do tĂ« thotĂ« marrjen zero karakteri nĂ« atĂ« forcĂ«.
Pra, ajo qĂ« me tĂ« vĂ«rtetĂ« do tĂ« thotĂ« Ă«shtĂ« tĂ« shkoni nĂ« kĂ«tĂ« grup -
dhe po, kjo mund tĂ« jetĂ« 123, kjo mund tĂ« jetĂ« 124.
Por kjo Ă«shtĂ« e gjitha relative, mos harroni.
Sa herĂ« qĂ« flasim pĂ«r njĂ« grup, ne kemi PĂ«rparĂ«sia e duke folur rreth
Indekset e tĂ« afĂ«rm.
>> Dhe kĂ«shtu qĂ« tani qĂ« ne vetĂ«m mund tĂ« supozojmĂ« se zero grupim t eshte h.
Pra, nĂ«se unĂ« e quaj 2 sipĂ«rme nĂ« atĂ«, se Ă§farĂ« Ă«shtĂ« vĂ«rtetĂ« duke bĂ«rĂ« Ă«shtĂ« kapitalizuar
h vogle tĂ« uppercase H. Por sigurisht, Ă§farĂ« Ă«shtĂ« s?
Ă‹shtĂ« vĂ«nĂ« nĂ« vargun e njĂ«jtĂ« mallkuar.
>> Pra, kjo Ă«shtĂ« e tĂ«ra qĂ« Ă«shtĂ« duke ndodhur nĂ« kĂ«tĂ« kod deri tani.
Pra, Ă§farĂ« Ă«shtĂ« atĂ«herĂ« implikimi?
Si nuk kemi zgjidhur kĂ«to dy probleme?
Si nuk kemi tĂ« krahasohet me vargjet aktuale?
>> E pra intuitive, si do ju shkoni nĂ« lidhje me krahasimin e dy
strings pĂ«r barazinĂ« e vĂ«rtetĂ«?
>> Ă‡farĂ« do tĂ« thotĂ« nĂ« qoftĂ« se dy vargjet janĂ« tĂ« barabartĂ«?
NĂ« mĂ«nyrĂ« tĂ« qartĂ« nuk Ă«shtĂ« se adresat e tyre janĂ« barabartĂ« nĂ« kujtesĂ«, sepse kjo Ă«shtĂ« njĂ« ulĂ«t
Zbatimi nivel detaji.
TĂ« gjitha personazhet janĂ« tĂ« njĂ«jta.
Pra mĂ« lejoni tĂ« propozojnĂ«, dhe mĂ« lejoni tĂ« prezantoj nĂ« versionin e njĂ« compare.c
kĂ«tu, kĂ«shtu qĂ« krahasojnĂ«-1.c.
>> MĂ« lejoni tĂ« propozoj qĂ« ne ende tĂ« marrĂ« njĂ« pointer quajtur s, dhe dyqan nĂ« atĂ«
kthejĂ« vlerĂ«n e vargut tĂ« merrni.
Le tĂ« bĂ«jmĂ« tĂ« njĂ«jtĂ«n gjĂ« me t.
Pra, asnjĂ«ri prej kodit Ă«shtĂ« e ndryshme.
UnĂ« jam duke shkuar pĂ«r tĂ« shtuar njĂ« pak mĂ« shumĂ« error checking tani.
Pra, tani qĂ« ne jemi lloj lĂ«kurĂ« mbrapa kjo shtresat nĂ« CS50 tĂ« asaj qĂ« njĂ« varg
nĂ« tĂ« vĂ«rtetĂ« Ă«shtĂ«, ne duhet tĂ« jetĂ« mĂ« anal lidhje me bĂ«rjen e sigurt se ne nuk e abuzimit
vlerat e pavlefshme si null.
>> KĂ«shtu qĂ« unĂ« jam vetĂ«m duke shkuar pĂ«r tĂ« kontrolluar.
NĂ«se s nuk nul barabartĂ« dhe t nuk null barabartĂ«, qĂ« do tĂ« thotĂ« ne jemi OK.
Get string nuk vidhos deri nĂ« marrjen e secila prej kĂ«tyre frazave.
Dhe ju mund ndoshta me mend tani, Ă§farĂ« STR CMP nuk duket tĂ« bĂ«jĂ«?
String krahasuar.
>> Pra, nĂ«se ju keni programin nĂ« Java pĂ«rpara, kjo Ă«shtĂ« si tĂ« metodĂ«s barabartĂ« nĂ«
klasa string.
Por pĂ«r ato prej jush qĂ« nuk kanĂ« programuar mĂ« parĂ«,
kjo Ă«shtĂ« vetĂ«m njĂ« funksion c.
Kjo ndodh pĂ«r tĂ« ardhur nĂ« njĂ« file i quajtur string.
Kjo Ă«shtĂ« ku Ă«shtĂ« deklaruar.
>> Dhe string krahasoni -
UnĂ« nĂ« fakt harroj pĂ«rdorimin e saj, por mos u mĂ«rzit se.
KujtojnĂ« se ne mund tĂ« bĂ«jmĂ« Njeriu, llokoĂ§is krahasuar.
Dhe kjo do tĂ« sjellĂ« deri Linux programuesit manual.
Dhe kjo Ă«shtĂ«, sinqerisht, pak fshehtĂ«.
Por unĂ« mund tĂ« shoh kĂ«tu se, yep.
UnĂ« duhet tĂ« pĂ«rfshijĂ« string.
>> Dhe ai thotĂ« se kĂ«tu sipas pĂ«rshkrimit, " Krahaso string funksion krahason
dy vargjet S1 dhe S2. "Dhe S1 dhe S2 janĂ« me sa duket dy
Argumentet kaloi in
UnĂ« vĂ«rtetĂ« nuk e mbani mend se Ă§farĂ« const Ă«shtĂ«, por tani vini re -
dhe ju mund tĂ« keni parĂ« kĂ«tĂ« tashmĂ« kur ju keni pĂ«rdorur faqet e njeri nĂ« qoftĂ« se ju
kanĂ« tĂ« gjitha -
se ylli char Ă«shtĂ« vetĂ«m sinonim me vargun.
>> Pra, ajo krahason dy vargjet, S1 dhe S2, dhe ajo kthen njĂ« numĂ«r tĂ« plotĂ« mĂ« pak
se ose e barabartĂ« me ose mĂ« e madhe se zero nĂ«se S1 Ă«shtĂ« gjetur, gjegjĂ«sisht tĂ« jetĂ«
mĂ« pak se, ose pĂ«rputhen, ose tĂ« jetĂ« mĂ« i madh se S2.
Kjo Ă«shtĂ« vetĂ«m njĂ« mĂ«nyrĂ« shumĂ« kompleks i thĂ«nĂ«: se string krahasoni kthimit
zero nĂ«se dy vargjet janĂ« intuitive identike, karakteri pĂ«r
karakter pĂ«r karakter.
>> Ajo kthen njĂ« numĂ«r negativ, nĂ«se s, sipas renditjes alfabetike, Ă«shtĂ« menduar
qĂ« do tĂ« vijnĂ« para t.
Ose kthen njĂ« numĂ«r pozitiv nĂ«se s Ă«shtĂ« menduar tĂ« dalĂ« pas t
sipas rendit alfabetik.
Pra, me kĂ«tĂ« funksion tĂ« thjeshtĂ«, mund tĂ« ju, pĂ«r shembull, njĂ« lloj
bandĂ« e tĂ«rĂ« e fjalĂ«ve?
>> Pra, nĂ« kĂ«tĂ« version tĂ« ri, unĂ« jam duke shkuar tĂ« shkojnĂ« pĂ«rpara dhe tĂ« bĂ«jĂ« compare1.
Dot slash krahasoni njĂ«.
UnĂ« do tĂ« shkruani nĂ« pĂ«rshĂ«ndetje nĂ« tĂ« gjithĂ« rastin mĂ« tĂ« ulĂ«t.
UnĂ« jam duke shkuar pĂ«r tĂ« shkruani nĂ« pĂ«rshĂ«ndetje nĂ« tĂ« gjitha shkronja jokapitale pĂ«rsĂ«ri.
Dhe fatmirĂ«sisht tani ajo realizon I shtypur tĂ« njĂ«jtĂ«n gjĂ«.
>> NdĂ«rkohĂ«, nĂ« qoftĂ« se unĂ« tĂ« shkruani nĂ« pĂ«rshĂ«ndetje nĂ« mĂ« tĂ« ulĂ«t Rasti dhe HELLO nĂ« rast sipĂ«rme dhe
krahasojnĂ« ato, unĂ« shtypur gjĂ«ra tĂ« ndryshme.
Sepse jo vetĂ«m qĂ« janĂ« adresat tĂ« ndryshme, por ne jemi tĂ« krahasuar
karaktere tĂ« ndryshme pĂ«rsĂ«ri dhe pĂ«rsĂ«ri.
>> E pra le tĂ« shkojĂ« dhe tĂ« rregullojmĂ« njĂ« Problemi tjetĂ«r tani.
MĂ« lejoni tĂ« hapĂ« njĂ« version tĂ« kopje, e cila tani drejtohet
kjo Ă§Ă«shtje si mĂ« poshtĂ«.
Dhe kjo po ndodh qĂ« tĂ« shohim pak mĂ« komplekse.
Por nĂ« qoftĂ« se ju mendoni se Ă§farĂ« problemi ne nevojĂ« pĂ«r tĂ« zgjidhur, shpresojmĂ« se kjo do tĂ« jetĂ«
qartĂ« nĂ« njĂ« moment tĂ« vetĂ«m tani.
>> Pra, kjo linjĂ« e parĂ«, char fillim t, nĂ« kushtet e laik dikush mund tĂ« propozojĂ«
Ă‡farĂ« kjo do tĂ« thotĂ« vija kĂ«tu?
Char yll t, Ă§farĂ« Ă«shtĂ« se duke bĂ«rĂ«?
>> MirĂ«.
Krijo njĂ« tregues pĂ«r disa spot nĂ« kujtesĂ«.
Dhe mĂ« lejoni tĂ« pĂ«rsosin atĂ« pak.
DeklarojĂ« njĂ« ndryshore qĂ« do tĂ« shtie adresa e disa char nĂ« kujtesĂ«, vetĂ«m
tĂ« jetĂ« pak mĂ« e duhur.
>> OK, kĂ«shtu qĂ« tani nĂ« anĂ«n e djathtĂ«, unĂ« kam parĂ« kurrĂ« njĂ« prej kĂ«tyre funksioneve
para, malloc.
Por Ă§farĂ« mund tĂ« thotĂ« kjo?
Ndarja e kujtesĂ«s.
Memory ndarja.
>> Pra, ajo rezulton, deri tani, ne nuk kanĂ« me tĂ« vĂ«rtetĂ« kishte njĂ« mĂ«nyrĂ« e fuqishme pĂ«r
duke i kĂ«rkuar sistemit operativ, jepni disa kujtesĂ«s.
PĂ«rkundrazi, ne tani kemi njĂ« funksion tĂ« quajtur malloc qĂ« bĂ«n pikĂ«risht kĂ«tĂ«.
Edhe pse kjo Ă«shtĂ« pak e njĂ« Ă§menduri tani, vini re se nĂ«
mes dy kllapa Ă«shtĂ« vetĂ«m do tĂ« jetĂ« njĂ« numĂ«r.
Ku e kam shtypur nĂ« fjalĂ« Shenjat mund tĂ« jetĂ« njĂ« numĂ«r.
>> Dhe ky numĂ«r do tĂ« thotĂ«, mĂ« jepni 10 bytes.
MĂ« jepni 20 bytes.
MĂ« jep 100 bytes.
Dhe malloc do tĂ« bĂ«jĂ« Ă§mos pĂ«r tĂ« pyesni e sistemit operativ -
Linux, nĂ« kĂ«tĂ« rast -
hej, janĂ« 100 bytes tyre e RAM nĂ« dispozicion?
NĂ«se Ă«shtĂ« kĂ«shtu, kthehen ato bytes pĂ«r mua nga kthimin adresĂ«n e sĂ« cilĂ«s e
ato bytes, ndoshta?
ShumĂ« tĂ« parĂ« njĂ«.
>> Pra, edhe kĂ«tu - dhe kjo Ă«shtĂ« mbizotĂ«rues C, nĂ« Ă§do kohĂ« qĂ« ju jeni
qĂ« kanĂ« tĂ« bĂ«jnĂ« me adresat?
Ju jeni pothuajse gjithmonĂ« kanĂ« tĂ« bĂ«jnĂ« me adresa e parĂ« e tillĂ«, pa marrĂ« parasysh sa e madhe
njĂ« copĂ« e kujtesĂ«s qĂ« ju janĂ« duke u dorĂ«zoi prapa, kĂ«shtu qĂ« tĂ« flasin.
>> Pra, le tĂ« zhyten nĂ« diskutim kĂ«tu.
UnĂ« jam duke u pĂ«rpjekur tĂ« ndajĂ« se si bytes shumĂ«, saktĂ«sisht?
Well.
GjatĂ«sia e String s - le tĂ« bĂ«jĂ« njĂ« shembull konkret.
NĂ«se s eshte PĂ«rshĂ«ndetje, H-E-L-L-O, ajo eshte GjatĂ«sia e string s, natyrisht?
Pra, kjo Ă«shtĂ« pesĂ«.
Por unĂ« jam duke bĂ«rĂ« njĂ« plus 1 nĂ« atĂ«, pse?
Pse nuk dua gjashtĂ« bytes nĂ« vend tĂ« pesĂ«?
Karakteri null.
>> UnĂ« nuk dua tĂ« lĂ« jashtĂ« kĂ«saj karakter tĂ« veĂ§antĂ« null.
Sepse nĂ« qoftĂ« se kam bĂ«rĂ« njĂ« kopje tĂ« PĂ«rshĂ«ndetje dhe vetĂ«m tĂ« bĂ«jĂ« H-E-L-L-O, por unĂ« nuk e vĂ«nĂ«
qĂ« karakteri i veĂ§antĂ«, kompjuter nuk mund tĂ« ketĂ«, rastĂ«sisht, njĂ« backslash
zero aty pĂ«r mua.
Dhe kĂ«shtu qĂ« nĂ« qoftĂ« se unĂ« jam duke u pĂ«rpjekur tĂ« kuptoj se GjatĂ«sia e kopjes, unĂ« mund tĂ« mendojnĂ« se
kjo Ă«shtĂ« 20 karaktere tĂ« gjatĂ«, ose njĂ« milion karaktere tĂ« gjatĂ« nĂ« qoftĂ« se unĂ« kurrĂ« nuk ndodhĂ« vetĂ«m
pĂ«r tĂ« goditur njĂ« zero backslash.
>> Pra, ne kemi nevojĂ« pĂ«r gjashtĂ« bytes pĂ«r tĂ« ruajtur H-E-L-L-O, backslash zero.
Dhe pastaj kjo Ă«shtĂ« vetĂ«m tĂ« jetĂ« super anal.
Le tĂ« supozojmĂ« se unĂ« tĂ« harrojmĂ« se Ă§farĂ« madhĂ«sinĂ« e njĂ« char eshte.
Ne mbajmĂ« duke thĂ«nĂ« se ajo e njĂ« bajt.
Dhe ajo zakonisht Ă«shtĂ«.
NĂ« teori, kjo mund tĂ« jetĂ« diĂ§ka ndryshĂ«m, nĂ« njĂ« Mac ndryshĂ«m ose njĂ«
PC tĂ« ndryshme.
>> Pra, ajo rezulton se ka ky operator quajtur sizeof se nĂ« qoftĂ« se ju tĂ« kalojĂ« atĂ« tĂ«
emri i njĂ« lloji tĂ« dhĂ«nave - si char, ose int, ose float -
ajo do tĂ« ju them, dinamike, sa bytes njĂ« char merr deri nĂ« kĂ«tĂ«
kompjuter veĂ§anti.
>> Pra, kjo Ă«shtĂ« nĂ« mĂ«nyrĂ« efektive vetĂ«m si duke thĂ«nĂ« herĂ« 1 apo
herĂ« asgjĂ« nĂ« tĂ« gjitha.
Por unĂ« jam duke bĂ«rĂ« atĂ« vetĂ«m tĂ« jetĂ« super anal, vetĂ«m nĂ« rast se njĂ« char ndryshon
nĂ« kompjuterin tuaj kundrejt minave, nĂ« kĂ«tĂ« mĂ«nyrĂ« matematikĂ« Ă«shtĂ« gjithmonĂ« do tĂ« shikoni.
>> SĂ« fundi, kĂ«tu poshtĂ« unĂ« kontrolloni for null, e cila Ă«shtĂ« gjithmonĂ« njĂ« praktikĂ« e mirĂ« - pĂ«rsĂ«ri,
Ă§do herĂ« qĂ« ne jemi qĂ« kanĂ« tĂ« bĂ«jnĂ« me pointers.
NĂ«se malloc nuk ishte nĂ« gjendje tĂ« japin mua gjashtĂ« byes - e cila Ă«shtĂ«
nuk ka gjasa, por vetĂ«m nĂ« rast -
kthehen njĂ« menjĂ«herĂ«.
Dhe tani, tĂ« shkojnĂ« pĂ«rpara dhe kopje string si mĂ« poshtĂ«.
Dhe kjo Ă«shtĂ« sintaksĂ« e njohur, megjithĂ«se nĂ« njĂ« rol tĂ« ndryshĂ«m.
>> UnĂ« jam duke shkuar pĂ«r tĂ« shkuar pĂ«rpara dhe pĂ«r tĂ« marrĂ« string GjatĂ«sia e s dhe ruajtur atĂ« nĂ« n.
AtĂ«herĂ« unĂ« jam duke shkuar pĂ«r tĂ« iterate nga i barabartĂ« zero deri tek e pĂ«rfshirĂ« n,
mĂ« e madhe se ose e barabartĂ« me.
KĂ«shtu qĂ« nĂ« Ă§do pĂ«rsĂ«ritje, kam vĂ«nĂ« Karakteri i ith s nĂ« ith
Karakteri i t.
>> Pra, Ă§farĂ« ndodh nĂ« tĂ« vĂ«rtetĂ« nĂ«n individualitet kĂ«tu?
E pra, nĂ«se kĂ«tĂ«, pĂ«r shembull, Ă«shtĂ« s -
dhe kam shtypur ne fjale H-E-L-L-O dhe ka njĂ« backslash zero.
Dhe pĂ«rsĂ«ri, kjo Ă«shtĂ« s vĂ«nĂ« kĂ«tu.
Dhe tani kĂ«tu Ă«shtĂ« t.
>> Dhe kjo Ă«shtĂ« treguar tani pĂ«r njĂ« kopje e kujtesĂ«s, e drejtĂ«?
Malloc ka dhĂ«nĂ« mua njĂ« e tĂ«rĂ« copĂ« e kujtesĂ«s.
UnĂ« nuk e di fillimisht se Ă§farĂ« Ă«shtĂ« nĂ« ndonjĂ« nga kĂ«to vende.
KĂ«shtu qĂ« unĂ« jam duke shkuar pĂ«r tĂ« menduar kĂ«to si njĂ« bandĂ« e tĂ«rĂ« e pikĂ«pyetjesh.
>> Por, sa mĂ« shpejt qĂ« unĂ« tĂ« fillojĂ« looping nga zero on deri me gjatĂ«sinĂ« e ve, t
parantezĂ« zero dhe t kllapa 1 -
dhe unĂ« do tĂ« vĂ«nĂ« kĂ«tĂ« tani nĂ« tĂ« sipĂ«rm -
t parantezĂ« zero dhe s kllapa zero do tĂ« thotĂ« qĂ« unĂ« jam duke shkuar pĂ«r tĂ« kopjimit
iteratively h kĂ«tu, E-L-L-O. Plus, sepse unĂ« e bĂ«ri plus
1, backslash zero.
>> Deri tani nĂ« rastin e krahasoni-1.c, nĂ« fund, nĂ« qoftĂ« se unĂ« tĂ« shtypura nga
kapitalizimi i t, ne duhet shihni se s Ă«shtĂ« i pandryshuar.
MĂ« lejoni tani tĂ« shkojnĂ« pĂ«rpara dhe tĂ« bĂ«jĂ« kĂ«tĂ«.
Pra, tĂ« bĂ«jĂ« copy1.
Dot slash copy1.
UnĂ« jam duke shkuar pĂ«r tĂ« shkruani nĂ« hello, Enter.
Dhe tani vini re, vetĂ«m njĂ« kopje e Ă«shtĂ« kapitalizuar.
Sepse unĂ« me tĂ« vĂ«rtetĂ« kam dy chunks e kujtesĂ«s.
>> PĂ«r fat tĂ« keq, ju mund tĂ« bĂ«ni disa goxha gjĂ«ra tĂ« kĂ«qija dhe shumĂ« e rrezikshme kĂ«tu.
MĂ« lejoni tĂ« tĂ«rheq lart njĂ« shembull kĂ«tu tani, qĂ« na jep njĂ« shembull tĂ« njĂ« pakice
linja tĂ« ndryshme.
Pra, vetĂ«m intuitive kĂ«tu, rreshti i parĂ« e kodit, int x yll, Ă«shtĂ« deklaruar
njĂ« ndryshore tĂ« quajtur x.
Dhe Ă§farĂ« Ă«shtĂ« lloji i tĂ« dhĂ«nave e asaj variable?
Ă‡farĂ« Ă«shtĂ« lloji i tĂ« dhĂ«nave qĂ« variable?
Kjo nuk ishte cliffhanger.
>> Lloji i tĂ« dhĂ«nave Ă«shtĂ« ylli int.
Pra, Ă§farĂ« do tĂ« thotĂ« kjo? X do tĂ« ruajtur adresĂ«n e njĂ« int.
ThjeshtĂ« si ajo.
Y Ă«shtĂ« duke shkuar pĂ«r tĂ« ruajtur adresa e njĂ« int.
Ă‡farĂ« Ă«shtĂ« linjĂ« e tretĂ« e kodit bĂ«rĂ« atje?
Ă‹shtĂ« e ndarjes sa bytes, ka shumĂ« tĂ« ngjarĂ«?
KatĂ«r.
PĂ«r shkak tĂ« madhĂ«sisĂ« sĂ« njĂ« INT pĂ«rgjithĂ«sisht katĂ«r, malloc nga katĂ«r jep
mua mbrapa adresĂ«n e njĂ« copĂ« tĂ« kujtesĂ«s, e parĂ« e tĂ« cilit Ă«shtĂ« bytes
ruajtur tani nĂ« x.
>> Tani ne jemi duke lĂ«vizur pak mĂ« shpejt.
Star x Ă§farĂ« do tĂ« thotĂ«?
Kjo do tĂ« thotĂ« tĂ« shkojnĂ« nĂ« atĂ« adresĂ« dhe e vĂ«nĂ« atĂ« numĂ«r atje?
Vendos numrin 42 atje.
Star y do tĂ« thotĂ« tĂ« shkojnĂ« nĂ« atĂ« qĂ« Ă«shtĂ« nĂ« y dhe tĂ« vĂ«nĂ« numrin 13 atje.
>> Por, prit njĂ« minutĂ«.
Ă‡farĂ« Ă«shtĂ« nĂ« y nĂ« kĂ«tĂ« moment?
Cila Ă«shtĂ« adresa ruajtjen y?
Ne nuk e dimĂ«, e drejtĂ«?
Ne kurrĂ« nuk kanĂ« pĂ«rdorur njĂ« herĂ« detyrĂ«n Operatori pĂ«rfshin y.
Pra, si y deklaruar nĂ« rreshtin e dytĂ« tĂ« Kodi Ă«shtĂ« vetĂ«m disa vlera plehrash, njĂ« i madh
pikĂ«pyetje nĂ« mĂ«nyrĂ« qĂ« tĂ« flasin.
Kjo mund tĂ« jetĂ« duke treguar rastĂ«sisht me Ă§do gjĂ« nĂ« memorie, e cila
Ă«shtĂ« pĂ«rgjithĂ«sisht e keqe.
>> Pra, sa mĂ« shpejt qĂ« ne e goditi atĂ« vijĂ« atje, yll y barabartĂ« me 13, diĂ§ka tĂ« keqe,
diĂ§ka shumĂ« e keqe Ă«shtĂ« nĂ« lidhje tĂ« ndodhĂ« me Binky.
Pra, le tĂ« shohim se Ă§farĂ« do tĂ« pĂ«rfundojĂ« deri ndodh me Binky kĂ«tu nĂ« kĂ«tĂ« minutĂ«
ose kĂ«shtu duket.
>> [Video playback]
>> -Hej, Binky.
Zgjoheni.
Ă‹shtĂ« koha pĂ«r argĂ«tim akrep.
>> -Ă‡farĂ« Ă«shtĂ« ajo?
MĂ«soni rreth pointers?
Oh, goodie.
>> -E pra, pĂ«r tĂ« filluar, unĂ« mendoj se ne jemi do tĂ« duhet njĂ« pointers Ă§ift.
>> -OK.
Ky kod ndan dy pointers cilat mund pikĂ« tĂ« numrave tĂ« plotĂ«.
>> -OK, mirĂ«, unĂ« shoh dy pointers.
Por ata nuk duket tĂ« jetĂ« duke treguar pĂ«r asgjĂ«.
>> -Kjo Ă«shtĂ« e drejtĂ«.
Fillimisht, pointers nuk tregojnĂ« pĂ«r ndonjĂ« gjĂ«.
GjĂ«rat qĂ« ata tregojnĂ« pĂ«r tĂ« quhen pointees, dhe vendosjen e tyre up Ă«shtĂ« njĂ«
Hapi i veĂ§antĂ«.
>> -Oh, e drejtĂ«, e drejtĂ«.
UnĂ« e dinte se.
TĂ« pointees janĂ« tĂ« ndara.
Pra, si mendoni ju akordojĂ« njĂ« pointee?
>> -OK.
E pra, ky kod alokon njĂ« integers reja pointee, dhe kjo pjesĂ« pĂ«rcakton X
tĂ« tregojnĂ« pĂ«r atĂ«.
>> -Hej, ajo duket mĂ« mirĂ«.
Pra, tĂ« bĂ«jĂ« atĂ« tĂ« bĂ«jĂ« diĂ§ka.
>> -OK.
UnĂ« do dereference x pointer pĂ«r tĂ« ruajtur numri 42 nĂ« pointee saj.
PĂ«r kĂ«tĂ« mashtrim, unĂ« do tĂ« duhet magjinĂ« time shkop magjik i dereferencing.
>> -Juaj shkop magjik i dereferencing?
Uh, kjo Ă«shtĂ« e madhe.
>> -Kjo Ă«shtĂ« ajo qĂ« duket si kodi.
UnĂ« vetĂ«m do tĂ« ngritur numrin, dhe -
>> -Hej, shikoni.
Ka ajo shkon.
Pra, duke bĂ«rĂ« njĂ« x dereference nĂ« vijim arrow pĂ«r tĂ« hyrĂ« pointee saj.
NĂ« kĂ«tĂ« rast, pĂ«r tĂ« ruajtur 42 nĂ« atje.
Hej, provoni duke e pĂ«rdorur atĂ« pĂ«r tĂ« ruajtur numrin 13 pĂ«rmes treguesin tjetĂ«r, y.
>> -OK.
UnĂ« do tĂ« shkoj vetĂ«m mbi kĂ«tu pĂ«r y dhe marrĂ« numrin 13 ngritur.
Dhe pastaj tĂ« marrĂ« shkopin e dereferencing dhe vetĂ«m -
Whoa!
>> -Oh, hej.
QĂ« nuk punojnĂ«.
Thuaj, Binky, unĂ« nuk mendoj dereferencing y Ă«shtĂ« njĂ« ide e mirĂ«,
sepse ngritjen e pointee Ă«shtĂ« njĂ« hap i veĂ§antĂ«.
Dhe unĂ« nuk mendoj se ne ndonjĂ«herĂ« e bĂ«ri atĂ«.
>> -Hmm.
MirĂ« pikĂ«.
>> -Po, ne kemi ndarĂ« y akrep.
Por kurrĂ« nuk kemi vĂ«nĂ« atĂ« nĂ« pikĂ«s te nje pointee.
>> -Hmm.
ShumĂ« i vĂ«mendshĂ«m.
>> -Hej, ju jeni nĂ« kĂ«rkim mirĂ« atje, Binky.
Mund tĂ« ma rregulloni atĂ« nĂ« mĂ«nyrĂ« qĂ« pika y pĂ«r tĂ« pointee njĂ«jtĂ« si X?
>> -Sigurisht.
UnĂ« do tĂ« pĂ«rdorin shkop magjik e mia pointer detyrĂ«.
>> -Ă‹shtĂ« se do tĂ« jetĂ« njĂ« problem si mĂ« parĂ«?
>> -Nr.
Kjo nuk do tĂ« prekĂ« pointees.
Ajo ndryshon vetĂ«m njĂ« tregues pĂ«r pikĂ« tĂ« njĂ«jtĂ«n gjĂ« si njĂ« tjetĂ«r.
>> -Oh, unĂ« shoh.
Tani pika y nĂ« tĂ« njĂ«jtin vend si x.
Pra, tĂ« presim.
Tani y Ă«shtĂ« fikse.
Ajo ka njĂ« pointee.
KĂ«shtu qĂ« ju mund tĂ« pĂ«rpiquni tĂ« shkop magjik i dereferencing pĂ«rsĂ«ri
pĂ«r tĂ« dĂ«rguar mĂ« shumĂ« se 13.
>> -OK.
KĂ«tu shkon.
>> -Hej, shikoni nĂ« atĂ«.
Tani dereferencing punimet pĂ«r y.
Dhe pĂ«r shkak se janĂ« pĂ«r ndarjen e pointers se njĂ« pointee, ata
tĂ« dyja shihni 13.
>> -Po.
Sharing.
Ă‡farĂ«do.
Pra jemi duke shkuar vende ndĂ«rroni tani?
>> -Oh, shikoni.
Ne jemi jashtĂ« kohĂ«s.
>> -Por -
>> -VetĂ«m mos harroni tĂ« tre Rregullat akrep.
Numri njĂ«, struktura bazĂ« Ă«shtĂ« se ju keni njĂ« pointer.
Dhe ajo tregon mbi te nje pointee.
Por, akrep dhe pointee janĂ« tĂ« ndara.
Dhe gabim i pĂ«rbashkĂ«t Ă«shtĂ« qĂ« tĂ« ngritur njĂ« tregues, por pĂ«r tĂ«
harrojnĂ« pĂ«r tĂ« dhĂ«nĂ« njĂ« pointee.
>> Numri dy, dereferencing akrep fillon nĂ« treguesin e saj dhe ndjek
mbi shigjetĂ« pĂ«r tĂ« hyrĂ« pointee saj.
SiĂ§ e dimĂ« tĂ« gjithĂ«, kjo punon vetĂ«m nĂ« qoftĂ« se ka eshte nje pointee, qĂ« merr mbrapsht tek
sundojnĂ« njĂ« numĂ«r.
>> Numri tre, caktimi akrep merr njĂ« akrep dhe ndryshimet qĂ« ajo tĂ« Ă§ojnĂ« tek
pointee njĂ«jtĂ« si njĂ« tjetĂ«r tregues.
Pra, pas cedimit, dy pointers do
pikĂ« tĂ« pointee njĂ«jtĂ«.
NdonjĂ«herĂ« kjo quhet sharing.
Dhe kjo Ă«shtĂ« e gjitha nuk Ă«shtĂ« pĂ«r atĂ«, me tĂ« vĂ«rtetĂ«.
Bye bye tani.
>> [VIDEO END rishikim]
>> DAVID Malan: Pra, mĂ« shumĂ« pointers, Binky mĂ« shumĂ« nĂ« javĂ«n e ardhshme.
Ne do tĂ« shohim ju nĂ« hĂ«nĂ«n.