>> [Muzika]
DAVID J. Malan: Kjo Ă«shtĂ« si njĂ« seminar fillestar sot.
NE RREGULL.
Pra, shumĂ« shi jashtĂ«.
Kjo ka tendencĂ« tĂ« ndodhĂ« tĂ« mĂ«rkurĂ«n, por tĂ« gjithĂ« mĂ« shumĂ« mundĂ«si e
pĂ«r pyetje sot.
Pra, le tĂ« vihem nĂ« fakt me filmin nĂ« njĂ« moment tĂ« vetĂ«m.
Por ne do tĂ« fillojmĂ« grandly si gjithmonĂ«.
>> Kjo Ă«shtĂ« CS50, dhe kjo Ă«shtĂ« fundi i javĂ«s 4.
Pra, nĂ«se ju keni shikuar ndonjĂ«herĂ« TV ose njĂ« film ku
ka disa ekspertĂ« tĂ« kompjuterit dhe policia, apo FBI, ose ndonjĂ« agjenci
Ă«shtĂ« duke u pĂ«rpjekur pĂ«r tĂ« kapur disa kundĂ«rshtar, pra, ju keni
ndoshta dĂ«gjuar shprehjen "tĂ« rritur" ku se tekniku disi
magjike zooms nĂ« pafundĂ«sisht larg pĂ«r tĂ« parĂ« kriminelĂ«t
identitetit ose numrin targĂ« nĂ« edhe shimmer e njĂ« pasqyre
ose shkĂ«lqim i syrit dikujt.
Pra me tĂ« vĂ«rtetĂ«, le tĂ« marrin njĂ« vĂ«shtrim nĂ« disa skena tĂ« tilla nga Hollywood.
[VIDEO rishikim]
-OK, Tani le tĂ« marrĂ« njĂ« sy tĂ« mirĂ« nĂ« ju.
>> -Mbaje.
Run atĂ« prapa.
>> -Prit njĂ« minutĂ«.
ShkojnĂ« drejtĂ«.
>> -Nuk, NgrijĂ« atĂ«.
-Ekran i plotĂ«.
-OK, NgrijĂ« atĂ«.
-Tighten Deri nĂ« atĂ«, do ju?
-Vector NĂ« mĂ« se djalĂ« nga rrota e pasme.
-Zoom NĂ« tĂ« drejtĂ« kĂ«tu nĂ« kĂ«tĂ« vend.
-Me Pajisje tĂ« drejtĂ«, imazhi mund tĂ« zgjerohet dhe tĂ« mprehur.
-Cfare eshte kjo?
-Ajo Ă‹shtĂ« njĂ« program zgjerimin.
-A Mund tĂ« qartĂ« se deri ndonjĂ«?
-Une nuk e di.
Le tĂ« rritur atĂ«.
>> Seksioni A6 -Enhance.
>> -UnĂ« Zgjeruara detaje, and-- UnĂ« mendoj se ka
tĂ« mjaftueshme pĂ«r tĂ« rritur, lirimin e tij nĂ« ekranin tim.
-UnĂ« Zgjeruara reflektimin nĂ« sytĂ« e saj.
>> -Le E drejtuar kĂ«tĂ« pĂ«rmes zgjerimin Video.
-Edgar, Mund tĂ« rrisĂ« kĂ«tĂ«?
>> -Mbahu.
>> -Ve QenĂ« duke punuar nĂ« kĂ«tĂ« reflektim.
>> Reflektim -Someone sĂ«.
-Reflection.
-Nuk Ă‹shtĂ« njĂ« pasqyrim i fytyrĂ«s sĂ« njeriut.
Reflektim -The.
-Nuk Ă‹shtĂ« njĂ« reflektim.
-Zoom NĂ« nĂ« pasqyrĂ«.
-Ju Mund tĂ« shihni njĂ« reflektim.
-Mund TĂ« pĂ«rmirĂ«suar imazhin nga kĂ«tu?
-Mund TĂ« rritur atĂ« tĂ« drejtĂ« kĂ«tu?
-Mund TĂ« rritur atĂ«?
Mund ta rritur atĂ«?
>> -Mund Kemi rritur kjo?
>> -Mund TĂ« rritur atĂ«?
QĂ«ndroj nĂ« njĂ« tĂ« dytĂ«, unĂ« do tĂ« rritur.
-Zoom NĂ« nĂ« derĂ«.
-Times 10.
-Zoom.
-Leviz.
-MĂ« ShumĂ«.
-Wait, TĂ« ndaluar.
-stop.
-Pause AtĂ«.
Na -Rotate 75 gradĂ« rreth vertikale, ju lutem.
-stop.
Kthehu mbrapa nĂ« pjesĂ«n pĂ«rpara derĂ«s, pĂ«rsĂ«ri.
>> -Got NjĂ« enhancer imazhit qĂ« mund tĂ« bitmap?
>> Hej, ndoshta ne mund tĂ« pĂ«rdorni Pradeep MetodĂ« sen pĂ«r tĂ« parĂ« nĂ« dritare.
Software -Kjo Ă«shtĂ« shtet i artit.
>> -The Eigenvalue Ă«shtĂ« off.
>> -Me TĂ« djathtĂ« Kombinimi i algorithm--
>> Eliminimi marrĂ« -Ai-sĂ« algoritme nĂ« nivelin e ardhshĂ«m,
dhe unĂ« mund t'i pĂ«rdorĂ« ato pĂ«r tĂ« rritur kĂ«tĂ« fotografi.
>> -Lock Mbi dhe zgjeruar aks-z.
>> -Enhance.
-Freeze Dhe tĂ« rritur.
>> [END rishikim]
>> DAVID J. Malan: TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu qĂ« tĂ« gjithĂ« ata nĂ« tĂ« vĂ«rtetĂ« janĂ« fjalĂ«.
Ata janĂ« vetĂ«m duke lidhur sĂ« bashku nĂ« njĂ« mĂ«nyrĂ« qĂ« nuk Ă«shtĂ« nĂ« tĂ« vĂ«rtetĂ« tĂ« ndjeshme.
Dhe, nĂ« fakt, CS50 dhe kurse si ajo tenton tĂ« prish njĂ« shumĂ« tĂ« TV dhe filma
pĂ«r ty.
Sepse kur kĂ«to ekspertĂ«t e kompjuterave janĂ« tĂ« vrullshĂ«m jashtĂ« termat dhe duke thĂ«nĂ«:
gjĂ«ra tĂ« dashuroj si eigenvectors, dhe z-aks,
dhe Ă§do numĂ«r tĂ« tjetĂ«r nĂ« fakt terma mĂ« teknike,
ata janĂ« me tĂ« vĂ«rtetĂ« vetĂ«m stringing fjalĂ« sĂ« bashku tĂ« gjithĂ« shumĂ« shpesh.
Ă‹shtĂ« se njĂ« nga shpresat tona Ă«shtĂ« se, si njĂ« efekt anĂ«sor i kurseve tĂ« marrjes
si kjo, do tĂ« mĂ« shumĂ« njerĂ«z nĂ« Bota nĂ« fakt tĂ« jetĂ« nĂ« gjendje pĂ«r tĂ« peshojnĂ« nĂ«
dhe vetĂ«m ndonjĂ«herĂ« nĂ« mĂ«nyrĂ« pak tĂ« ndikojnĂ« nĂ« cilĂ«sia dhe saktĂ«sia e kĂ«tyre filmave?
>> NĂ« fakt, le tĂ« marrin njĂ« vĂ«shtrim nĂ« realitet.
KĂ«shtu qĂ« kĂ«tu Ă«shtĂ« foto stafi i Mary, njĂ« nga miqtĂ« tanĂ« tĂ« mĂ«simdhĂ«nies.
Dhe mendoj se ajo Ă«shtĂ« dyshuar pĂ«r diĂ§ka.
Dhe megjithatĂ«, ka njĂ« dritĂ«z e disa pjesĂ« tĂ« provave nĂ« sytĂ« e saj,
ose nĂ« reflektimin e syze tĂ« saj.
E pra, nĂ« qoftĂ« se ne bĂ«jmĂ« pikĂ«risht si filmat propozojĂ«, ku ne zoom dhe "rritur",
kjo Ă«shtĂ« se si shumĂ« informacion Ă«shtĂ« nĂ« fytyrĂ«n e MarisĂ«
kur ju tĂ« kapur njĂ« imazh me kĂ«tĂ« rezolutĂ« origjinale.
>> Dhe, nĂ« fakt, ju mund tĂ« shihni kĂ«to pika.
Dhe kĂ«to janĂ« ato qĂ« janĂ« quajtur pixels, P-I-X-E-L-S,
e cila Ă«shtĂ« vetĂ«m njĂ« katror nĂ« mĂ«nyrĂ« tipike kjo Ă«shtĂ« njĂ« pikĂ« qĂ« pĂ«rbĂ«nĂ« njĂ« imazh.
Dhe mbrapa nĂ« ditĂ«, dhe nĂ« fakt edhe sot me disa nga LED TV sotme
ose TV LCD, nĂ« qoftĂ« se ju keni marrĂ« njĂ« nĂ« dhomĂ«n tuaj ose nĂ« shtĂ«pi,
nĂ« qoftĂ« se ju shkoni deri super tĂ« afĂ«rt me tĂ«, dhe sidomos nĂ«se Ă«shtĂ« njĂ« TV disi mĂ« tĂ« vjetĂ«r,
ju ndoshta mund tĂ« shihni edhe kĂ«to pika dhe kjo Ă«shtĂ« ajo qĂ« kompozoj njĂ« imazh.
>> Dhe nuk ka mĂ« informacion se sa kjo.
Ne mund tĂ« "rritur", nĂ« kuptimin e zbutjen gjĂ«ra mbi dhe lloj
inferring lloj, lloj i asaj qĂ« ngjyra duhet tĂ« jetĂ« tjetĂ«r pĂ«r syrin e MarisĂ«
nĂ« mĂ«nyrĂ« qĂ« ajo nuk Ă«shtĂ« nĂ« fakt aq pixelated.
Por nĂ« qoftĂ« se unĂ« mbaj zooming nĂ«, atje Ă«shtĂ« djalĂ« i keq nĂ« sytĂ« e saj.
Si kjo Ă«shtĂ« e gjitha informacion ne kemi.
Ju nuk mund tĂ« krijoni informacion nga asgjĂ«ja.
Ka vetĂ«m njĂ« i caktuar Numri i bit atje.
>> Pra, nĂ« problemit Set 4, ku ju keni njĂ« mundĂ«si
pĂ«r tĂ« luajtur me kĂ«tĂ« lloj bote.
NĂ« Problem Set 4, ju do tĂ« eksplorojnĂ« Bota e grafika, dhe mjekĂ«sinĂ« ligjore,
dhe nĂ« fakt shkruani kodin qĂ« rimĂ«kĂ«mbet imazhe humbur.
Ju do tĂ« shkruani kodin qĂ« manipulon imazhe ekzistuese
dhe nĂ« fund tĂ« fundit e kuptojnĂ« se Ă§farĂ« Ă«shtĂ« ndodh nĂ«n kapuĂ§.
>> Dhe, ajo rezulton, Ă«shtĂ« e vĂ«rtetĂ« jo tĂ« gjitha qĂ« e komplikuar.
PĂ«r shembull, nĂ« qoftĂ« se ne tĂ« kĂ«rkuar pĂ«r pĂ«rfaqĂ«sojnĂ« njĂ« fytyrĂ« smiley ku
me kĂ«to pixels zeza, ose kĂ«to pika tĂ« zeza,
mirĂ«, ne mund thjesht tĂ« pĂ«rfaqĂ«sojĂ« ata si tĂ« vĂ«rtetĂ« njĂ« bitmap.
Dhe nĂ« qoftĂ« se ju kishte dĂ«gjuar ndonjĂ«herĂ« qĂ« bitmap shprehje, ndoshta
ajo tani fillon pĂ«r tĂ« bĂ«rĂ« njĂ« pak mĂ« shumĂ« kuptim sot.
>> Ne tashmĂ« e dimĂ« se Ă§farĂ« Ă«shtĂ« pak.
Kjo Ă«shtĂ« 0 ose 1.
Dhe njĂ« hartĂ« Ă«shtĂ« vetĂ«m diĂ§ka si njĂ« copĂ« letĂ«r
qĂ« ju jep udhĂ«zime dhe ka ndoshta njĂ« rrjet i x- dhe Y-koordinatat.
KĂ«shtu qĂ« kĂ«tu Ă«shtĂ« njĂ« bitmap.
Kjo Ă«shtĂ« njĂ« hartĂ« e BITS ku njĂ« 1 Ă«shtĂ« me sa duket
do tĂ« pĂ«rfaqĂ«sojnĂ« njĂ« piksel bardhĂ« dhe a 0 do tĂ« pĂ«rfaqĂ«sojĂ« njĂ« pixel zi.
Por ne me siguri mund tĂ« rrokullisje atĂ« rreth.
Kjo nuk ka rĂ«ndĂ«si aq pĂ«rderisa ne jemi nĂ« pĂ«rputhje.
Dhe kĂ«tu Ă«shtĂ« se si, nĂ« binary-- brenda e kujtesĂ«s njĂ« kompjuter, apo edhe brenda
e njĂ« skedar nĂ« hard tuaj drive-- mund tĂ« ruajĂ«
thjeshte e imazheve fytyrĂ« smiley.
Por ne Ă§farĂ« jemi, natyrisht, mungon nĂ« kĂ«tĂ« imazh?
Ngjyra, e drejtĂ«?
Ă‹shtĂ« njĂ« hap i qartĂ« tjetĂ«r ose zgjerimin pĂ«r tĂ« pĂ«rmirĂ«suar kĂ«tĂ« me ngjyra.
Pra, pĂ«r fat tĂ« keq me vetĂ«m njĂ« tĂ« vetme bit, 0 ose 1, ne mund tĂ« pĂ«rfaqĂ«sojĂ« ngjyrĂ«.
Kjo mund tĂ« jetĂ« e kuqe, ose blu, ose zi, ose tĂ« bardhĂ«, ose tĂ« gjelbĂ«r, apo rozĂ«,
ose ndonjĂ« palĂ« e ngjyrave.
Por, pĂ«r hir tĂ« thjeshtĂ«sisĂ«, ne do tĂ« vetĂ«m tĂ« supozojmĂ« zezĂ« dhe e bardhĂ«.
>> Pra, ajo qĂ« logjikisht nuk kemi nevojĂ« nĂ« qoftĂ« se ne duan tĂ« zbatojnĂ« ngjyrĂ« nĂ« njĂ« imazh?
Ă‡farĂ« duhet tĂ« bĂ«jmĂ«?
Ashtu si nĂ« qoftĂ« se faktor kufizues kĂ«tu Ă«shtĂ« se me njĂ« pak ju mund vetĂ«m
pĂ«rfaqĂ«sojnĂ« dy shtete, 0 ose 1, e bardhĂ« apo i zi, Ă§farĂ« ju doni tĂ« bĂ«ni?
Audienca: MĂ« shumĂ« tĂ« dhĂ«na.
DAVID J. Malan: MĂ« bit, vĂ«rtet mĂ« shumĂ« tĂ« dhĂ«na, shumĂ« bit.
Dhe, me tĂ« vĂ«rtetĂ«, kjo Ă«shtĂ« pikĂ«risht se si Imazhet ngjyra janĂ« tĂ« pĂ«rfaqĂ«suara.
NĂ« vend se tĂ« pĂ«rdorin njĂ« grimĂ« tĂ« vetme, njĂ« 0 ose 1 pĂ«r Ă§do piksel, secili pikĂ«,
ju vetĂ«m pĂ«rdorni shumĂ«fish.
Ndoshta pĂ«rdorin 8, ndoshta, mĂ« sĂ« shpeshti pĂ«rdorin 24, dhe nĂ« tĂ« vĂ«rtetĂ«, nĂ« problemit Set
4, do tĂ« luajĂ« me njĂ« fotografi format qĂ« pĂ«rdor 24 bit nĂ« mĂ«nyrĂ« tipike.
>> Por shumica prej jush ndoshta janĂ« njohur me JPEG.
NĂ«se ju keni marrĂ« ndonjĂ«herĂ« njĂ« foto nĂ« telefonin tuaj,
ose ngarkuar apo parĂ« diĂ§ka nĂ« Facebook, apo Flickr, ndonjĂ« numĂ«r
faqet e internetit foto-bazuar, ju keni ndoshta shihet njĂ« imazh JPEG para.
Dhe kjo rezulton, ky Ă«shtĂ« skedari format ne jemi duke shkuar pĂ«r tĂ« pĂ«rdorur nĂ« pset 4,
ku ju do tĂ« jeni duhet tĂ« shĂ«rohen imazhe
qĂ« unĂ« e kam fshirĂ« aksidentalisht nga njĂ« kartĂ«n e kujtesĂ«s korruptuar nĂ« kamera,
nĂ«se ju do.
>> Dhe kjo rezulton se edhe pse JPEG Ă«shtĂ« shumĂ« sophisticated--
Ă«shtĂ« shumĂ« mĂ« e sofistikuar se pika tĂ« zeza dhe tĂ« bardha
ne pamĂ« njĂ« moment mĂ« parĂ«, sepse nuk ka Algoritme fakt dashuroj se
janĂ« pĂ«rdorur pĂ«r tĂ« compress njĂ« JPEG, kĂ«shtu qĂ« ju mund tĂ« ketĂ« njĂ« tĂ« vĂ«rtetĂ« e bukur,
foto cilĂ«sisĂ« por duke pĂ«rdorur relativisht pak bit.
Dhe ne do tĂ« kthehen nĂ« compression para se tĂ« gjatĂ«.
Ajo rezulton se i pari tre bytes nĂ« njĂ« image-- JPEG
pa marrĂ« parasysh se Ă§farĂ« ju keni marrĂ« njĂ« fotografi of-- janĂ« vlerat 255, 216, 255.
>> Me fjalĂ« tĂ« tjera, nĂ« qoftĂ« se ju vetĂ«m shohim se modeli i bit,
pĂ«rfaqĂ«suar kĂ«tu si tre bytes, ose 24 bit gjithsej,
me probabilitet tĂ« lartĂ« ju mund tĂ« konkludoj se jeni duke kĂ«rkuar nĂ« tĂ« kĂ«tĂ« tre e parĂ«
bytes e njĂ« JPEG.
Dhe kjo Ă«shtĂ« ajo qĂ« Ă«shtĂ« e njohur si nĂ«nshkrimin e njĂ« JPEG.
NjĂ« shumĂ« e file formats atje kanĂ« tendencĂ« pĂ«r tĂ« filluar
me modele tĂ« caktuara tĂ« 0s dhe 1s, kĂ«shtu qĂ« Windows dhe Mac OS, dhe iOS,
dhe Android di se Ă§farĂ« lloj tĂ« dosjes ata janĂ«, pĂ«rveĂ§ tĂ« ashtuquajturĂ«s fotografi
extension se njĂ« shumĂ« e dosjeve kanĂ«.
NĂ«se keni .jpg, kjo Ă«shtĂ« njĂ« tjetĂ«r Ă§elĂ«s nĂ« kompjuter.
>> Pra, le tĂ« shohim tani nĂ« kĂ«tĂ« pak mĂ« teknikisht.
Ne e dimĂ« decimal Sistemi Ă«shtĂ« 0 deri 9.
Ne e dimĂ« binar Ă«shtĂ« 0 dhe 1.
Dhe nĂ« qoftĂ« se ju mendoni pĂ«rsĂ«ri nĂ« pset 0, kemi pasur tĂ« luftoj me tĂ«,
pĂ«r njĂ« pak, diĂ§ka quajtur heksadecimal,
ku ju keni 16 shifra, nĂ« vend tĂ« 10, ose nĂ« vend tĂ« 2.
Dhe kĂ«to shifra, nga konventa, janĂ« 0 deri 9 dhe pastaj a
pĂ«rmes f, ku f pĂ«rfaqĂ«son Ă§farĂ« Numri dhjetor, ashtu si njĂ« mendje e shĂ«ndoshĂ« tĂ« shpejtĂ«
kontrolloni?
Pra, 15.
Dhe njĂ« duhet tĂ« pĂ«rfaqĂ«sojĂ« 10, vetĂ«m nga Natyra e urdhĂ«rimin qĂ« unĂ« kam dhĂ«nĂ«.
Kjo Ă«shtĂ« vetĂ«m njĂ« konventĂ« arbitrare, por kjo Ă«shtĂ« mjaft standarde.
>> Pra, nĂ«se ne shikojmĂ« nĂ« kĂ«tĂ« model e tre bytes-- le
sapo tĂ« fillojĂ« pĂ«r tĂ« parĂ« atĂ« nĂ« mĂ«nyrĂ« tĂ« pajtueshme me sa
ShkencĂ«tarĂ«t kompjuter nĂ« pĂ«rgjithĂ«si shikoni nĂ« dhe tĂ« mendojnĂ« pĂ«r fotografi.
Ju me siguri mund tĂ« mendoni pĂ«r fotografi nĂ« 0s dhe 1s, dhe dhjetore,
por nĂ« realitet, ne priren tĂ« pĂ«rdorin binar ose mĂ« shumĂ« zakonisht hexadecimal--
prapa nga pset 0.
Pra mĂ« lejoni tĂ« propozojnĂ« se 255, 216, dhe 255 janĂ« vetĂ«m kĂ«to modelet e 0s dhe 1s.
Dhe ju mund tĂ« kontrolloni kĂ«tĂ« nĂ« qoftĂ« se ju dua tĂ« bĂ«jĂ« matematikĂ« nga JavĂ«s 0.
Por, tani pĂ«r tani, vetĂ«m tĂ« supozojmĂ« se kjo Ă«shtĂ« me tĂ« vĂ«rtetĂ« e saktĂ«.
Kam rishkruar vetĂ«m tre decimal Numrat si tre vlerat binare.
Tani ajo qĂ« unĂ« jam duke shkuar pĂ«r tĂ« bĂ«rĂ« Ă«shtĂ« vetĂ«m tĂ« shtoni njĂ« hapĂ«sirĂ« â€‹â€‹tĂ« bardhĂ«,
vetĂ«m pĂ«r hir tĂ« lehtĂ«si leximi sĂ«.
Dhe vini re, unĂ« jam vetĂ«m duke shkuar pĂ«r tĂ« lĂ«vizur gjĂ«rat pĂ«rveĂ§.
Pra, para, pas, para, pas.
UnĂ« jam duke bĂ«rĂ« asgjĂ« interesante tjetĂ«r se vetĂ«m pĂ«rhapjen gjĂ«ra jashtĂ« nĂ« mĂ«nyrĂ«
se njoftimi secili grup i tetĂ« bit Ă«shtĂ« tani dy grupe tĂ« katĂ«r copa.
Kjo Ă«shtĂ« e dobishme pĂ«r shkak se heksadecimal Ă«shtĂ« veĂ§anĂ«risht nĂ« modĂ«
sepse Ă§do shifĂ«r heksadecimal 0 pĂ«rmes f, ose mĂ« konkretisht 0 deri 15,
mund tĂ« pĂ«rfaqĂ«sohet me tamam katĂ«r copa.
Me fjalĂ« tĂ« tjera, nĂ« qoftĂ« se ju heksadecimal duan tĂ« pĂ«rfaqĂ«sojnĂ« njĂ« 0, kjo Ă«shtĂ« vetĂ«m 0000,
katĂ«r zero.
Dhe nĂ« qoftĂ« se ju doni pĂ«r tĂ« pĂ«rfaqĂ«suar 15, Ă«shtĂ« 1111, e cila Ă«shtĂ« katĂ«r bit.
Dhe nĂ« qoftĂ« se ju bĂ«ni matematikĂ«, nĂ« qoftĂ« se ky Ă«shtĂ« vendi ato,
ky Ă«shtĂ« vendi 16s, qĂ« do tĂ« japĂ« ju, duke filluar
nĂ« vend qĂ« po ndodh to-- keq, nĂ« binar,
qĂ« do tĂ« ju jap 15, ato vend, twos vend, katĂ«r kĂ«mbĂ«t dhe tetĂ« vend.
Pra mĂ« lejoni tĂ« propozojĂ« qĂ« kjo tĂ« vendosur nga katĂ«r bit nĂ« tĂ« majtĂ«
Ă«shtĂ« ajo qĂ« ne jemi duke shkuar pĂ«r tĂ« thirrur f.
Ă‹shtĂ« numri mĂ« i madh qĂ« mund tĂ« pĂ«rfaqĂ«sojnĂ« me katĂ«r copa.
Dhe ne tashmĂ« e dimĂ« nga heksadecimal, f Ă«shtĂ« shifra mĂ« e madhe nĂ« heksadecimal.
Ne kemi marrĂ« njĂ« f atje, dy mĂ« shumĂ« atje.
Dhe tani pĂ«r tani, vetĂ«m tĂ« marrin nĂ« besim qĂ« i kam bĂ«rĂ« tĂ« drejtĂ« tĂ« matematikĂ«s
dhe se gjysma e majtĂ« nga ato pjesĂ«, 1101,
Ă«shtĂ« e njĂ«jta gjĂ« si d nĂ« heksadecimal.
Dhe dora e djathtĂ«, 1000, Ă«shtĂ« vetĂ«m 8.
>> Dhe se njĂ« e lehtĂ« pĂ«r tĂ« parĂ«, apo jo?
8 represents-- Ă«shtĂ« e drejtĂ« nĂ«n atĂ« vend tetĂ«.
Pra, ne kemi njĂ« nĂ« kolonĂ«n e tetĂ« dhe asgjĂ« nĂ« katĂ«rkĂ«mbĂ«she, twos apo ato.
Deri tani mĂ« konvencionale, njerĂ«zit priren pĂ«r tĂ« shkruar shifra heksadecimal si kjo,
ju vetĂ«m pllaquris ato sĂ« bashku, dhe pastaj ju prefiksit ato me 0x.
Kjo do tĂ« thotĂ« asgjĂ« tjetĂ«r pĂ«rveĂ§ njĂ« Ă§elĂ«s vizuale nĂ« njĂ« human--
kĂ«tu vjen njĂ« value-- heksadecimal sepse ajo nuk mund tĂ« ndryshe tĂ« jetĂ« e qartĂ«.
>> QĂ« do tĂ« thotĂ«, nĂ« fund tĂ« fundit, qĂ« modeli i zero dhe ato,
ose modeli i heksadecimal shifrat ekuivalente qĂ« ju jeni
do tĂ« fillojmĂ« tĂ« shikojmĂ« pĂ«r nĂ« problemit Set 4 Ă«shtĂ« this--
dhe Problem Set 4 spekulim do tĂ« ecin ju pĂ«rmes kĂ«saj nĂ« shumĂ« detail--
por e kupton si lloj misterioze si kjo mund tĂ« duket nĂ« shikim tĂ« parĂ«,
ju jeni do tĂ« fillojmĂ« tĂ« shohim kĂ«tĂ« shumĂ«.
Dhe nĂ« fakt, edhe nĂ« GDB, The Rregullues ne kemi prezantuar tĂ« hĂ«nĂ«n
dhe Dan fut nĂ« pset 3, po shkon pĂ«r tĂ« shpesh tĂ« ju tregojnĂ« vlerat heksadecimal
vetĂ«m pĂ«r shkak se ata kanĂ« tendencĂ« tĂ« jenĂ« mĂ« tĂ« konvencionale se dhjetore ose binar
nĂ« botĂ«n e kompjuterĂ«ve.
Tani le tĂ« vĂ«nĂ« kĂ«tĂ« nĂ« kontekst.
ShumĂ« nga ju mund tĂ« mbani mend kĂ«tĂ« foto kĂ«tu, i cili erdhi nga Ă§farĂ«?
Vista, kĂ«shtu qĂ« edhe mĂ« herĂ«t se se, Windows XP e bĂ«ri kĂ«tĂ« debutimin.
Pra, kjo Ă«shtĂ« njĂ« peizazh i bukur.
Dhe nĂ« fakt, nĂ« qoftĂ« se ju thes rreth online-- UnĂ« mendoj se Ă«shtĂ« njĂ« artikull Wikipedia,
ku dikush shumĂ« amazingly doli gjetur kĂ«tĂ« vend nĂ« botĂ« tĂ« ngritur
e tij ose tĂ« saj nĂ« kamera pikĂ«risht place-- drejtĂ«
dhe kjo sot duket like-- por kjo Ă«shtĂ« saktĂ«sisht e njĂ«jtĂ« vendosjen.
Ky imazh, megjithatĂ«, Ă«shtĂ« nĂ« njĂ« skedar format i quajtur bitmap, b-m-f.
Dhe ne jemi duke shkuar pĂ«r tĂ« marrĂ« njĂ« super vĂ«shtrim i shpejtĂ« nĂ« Ă§farĂ« do tĂ« thotĂ«.
>> Por bitmap Ă«shtĂ« vetĂ«m njĂ« mĂ«nyrĂ« tĂ« ndryshme tĂ« Imazhet pĂ«rfaqĂ«sojnĂ« ende duke pĂ«rdorur piksele
nĂ« 0s dhe 1s, nĂ« fund tĂ« fundit.
Por nĂ« shikim tĂ« shpejtĂ«, ajo ka njĂ« nĂ«nshkrim mĂ« interesante
nĂ« fillim tĂ« file.
Kjo nuk Ă«shtĂ« vetĂ«m tre bytes, nĂ« vend ka
njĂ« bandĂ« e tĂ«rĂ« e modeleve tĂ« bytes qĂ« kanĂ« paracaktuara kuptim.
PĂ«r shembull, diku nĂ« Disa bytes para tĂ« njĂ« imazhi bitmap
do tĂ« jetĂ« madhĂ«sia e image, gjerĂ«sia e imazhit,
lartĂ«sia e imazhit, kĂ«shtu metadata dobishme, nĂ«se ju do.
Informacione tĂ« dobishme se Photoshop ose ndonjĂ« grafikĂ« programi ju jeni duke pĂ«rdorur
nĂ« fakt mund tĂ« intereson.
>> Pra, mĂ« shumĂ« pĂ«r kĂ«tĂ« nĂ« Problem Set 4, por kjo
Ă«shtĂ« vetĂ«m pĂ«r tĂ« thĂ«nĂ« se ne fund te ditĂ«s
tĂ« gjitha formatet e skedarĂ«ve qĂ« ju keni qenĂ« duke pĂ«rdorur pĂ«r years-- fotografi Microsoft Word,
Numrat fotografi, fotografi Excel, Ă§do numĂ«r i file formats
qĂ« mund tĂ« ketĂ« disa njohur file extension
janĂ« vetĂ«m 0s dhe 1s nĂ«n kapuĂ§.
Dhe njerĂ«zit kanĂ« vendosur Ă§farĂ« konventat janĂ«,
Ă§farĂ« modelet e 0s dhe 1s pĂ«rfaqĂ«sojnĂ« njĂ« Word file kundrejt njĂ« file Excel,
kundrejt Ă§do numĂ«r tĂ« formate tĂ« tjera fotografi.
Pra, nĂ« pset 4, ju do tĂ« keni njĂ« mundĂ«si pĂ«r tĂ« luajtur me atĂ«.
>> Por Ă§farĂ« do tĂ« thotĂ« tĂ« ketĂ« njĂ« e strukturĂ«s.
Kjo Ă«shtĂ« nĂ« fakt njĂ« Segue bukur tani nĂ« C, e cila ka vetĂ«m njĂ« Ă§ift
Karakteristika tĂ« tjera qĂ« ne nuk kemi shikuar ende.
Kjo Ă«shtĂ« njĂ« gjuhĂ« mjaft tĂ« vogĂ«l dhe njĂ« nga karakteristikat e bukur rreth C Ă«shtĂ« njĂ« struct.
PĂ«r shembull, nĂ« qoftĂ« se ju tĂ« kĂ«rkuar pĂ«r represent-- le
thonĂ« se ju tĂ« kĂ«rkuar pĂ«r tĂ« ketĂ« njĂ« ndryshore qĂ« pĂ«rfaqĂ«son njĂ« student nĂ« ndonjĂ« program.
Ndoshta ju jeni duke shkruar njĂ« kurs programi regjistrimi, ose pazar thelbi
mjet, ose diĂ§ka tĂ« tillĂ«.
Cilat janĂ« pjesĂ« e tĂ« dhĂ«nave tĂ« lidhura pĂ«r njĂ« student qĂ« vjen nĂ« mendje?
Si njĂ« student Ă«shtĂ« pĂ«rfaqĂ«suar me Ă§farĂ« vlerat?
Po?
Ju keni njĂ« emĂ«r si njĂ« student.
Ă‡farĂ« tjetĂ«r bĂ«n njĂ« student tipik tĂ« ketĂ«?
>> Audienca: [padĂ«gjueshme]
>> DAVID J. Malan: Pra, sorry.
>> Audienca: Age.
>> DAVID J. Malan: NjĂ« moshĂ« apo ditĂ«lindjen ekuivalente, yep.
Ă‡farĂ« tjetĂ«r?
Audienca: Numri ID?
DAVID J. Malan: Pra, njĂ« numĂ«r ID, ndoshta njĂ« numĂ«r telefoni, ndoshta njĂ« konvikt, apo shtĂ«pi,
apo kolegj, ose diĂ§ka tĂ« tillĂ«.
Ă‡do numĂ«r i pjesĂ«ve tĂ« dhĂ«nave qĂ« ju mund tĂ« keni nĂ« listĂ«n tuaj tĂ« kontakteve
Ă«shtĂ« ajo qĂ« mund tĂ« pĂ«rcaktojĂ« njĂ« student.
Pra, nĂ«se ne tĂ« kĂ«rkuar pĂ«r tĂ« bĂ«rĂ« kĂ«tĂ«, nĂ« kod, ne mund tĂ« bĂ«jmĂ« diĂ§ka tĂ« thjeshtĂ« si kjo.
Ne mund tĂ« kemi njĂ« program nĂ« mĂ«nyrĂ« qĂ« ka le tĂ« themi, int kryesor (i pavlefshĂ«m).
Dhe nĂ« qoftĂ« se unĂ« dua tĂ« pĂ«rfaqĂ«soj njĂ« Studenti unĂ« mund tĂ« ketĂ«, pĂ«r shembull,
njĂ« varg quajti pĂ«r kĂ«tĂ« student, njĂ« varg tĂ« quajtur konvikt pĂ«r kĂ«tĂ« student,
ndoshta njĂ« int quajtur ID pĂ«r atĂ« student.
Dhe pĂ«r shkak se unĂ« jam duke pĂ«rdorur string, unĂ« duhet tĂ« kthehemi dhe tĂ« vĂ«nĂ« CS50.h.
Ndoshta unĂ« jam duke shkuar pĂ«r nevojĂ« stdio.h.
Pra mĂ« lejoni tĂ« bĂ«j preemptively ata dhe unĂ« jam do tĂ« thĂ«rrasĂ« kĂ«tĂ« student.c pĂ«r tani
dhe pĂ«r tĂ« shpĂ«tuar kĂ«tĂ«.
>> Dhe tani unĂ« mund tĂ« bĂ«jĂ« diĂ§ka me kĂ«to variabla.
Dhe ne jemi vetĂ«m duke shkuar pĂ«r tĂ« shkruar se si njĂ« koment nĂ« pseudo kodi,
sepse kjo nuk Ă«shtĂ« interesante Ă§farĂ« tĂ« bĂ«jmĂ« tani pĂ«r tani.
OK, kĂ«shtu qĂ« ky Ă«shtĂ« njĂ« program qĂ« disi ruan njĂ« student.
Ă‡farĂ« unĂ« dua tĂ« bĂ«j nĂ« qoftĂ« se unĂ« duan pĂ«r tĂ« ruajtur dy studentĂ«?
Pra instinkti im i parĂ« do tĂ« jetĂ« nĂ« rregull, prit njĂ« minutĂ«,
nĂ« qoftĂ« se unĂ« kam njĂ« tjetĂ«r nxĂ«nĂ«s pse nuk kam vetĂ«m tĂ« bĂ«jĂ« emĂ«r string 2, string fjetore 2,
id2 int.
Dhe ne kemi bĂ«rĂ« Gone poshtĂ« kĂ«tĂ« rrugĂ« para
dhe Ă§farĂ« ishte zgjidhja jonĂ« pĂ«r atĂ« qĂ« duket tĂ« jetĂ« lloj i njĂ« paste hackish kopje
punĂ« kĂ«tu?
Audienca: NjĂ« grup.
DAVID J. Malan: Yeah, ne mund tĂ« pĂ«rdorni njĂ« rrjet.
E drejtĂ« kjo shumĂ« shpejt bĂ«het i ngathĂ«t.
Ju keni pĂ«r tĂ« zgjidhur nĂ« mĂ«nyrĂ« arbitrare tĂ« fillojnĂ« emĂ«rtimin gjitha kĂ«tyre variablave.
Dhe ti, njerĂ«zore, duhet tĂ« mbajnĂ« udhĂ«, qĂ« korrespondon OK name2
me dorm2 korrespondon me id2.
Ajo vetĂ«m bĂ«het njĂ« rrĂ«mujĂ«.
Pra, kjo Ă«shtĂ« njĂ« shumĂ« mĂ« e lehtĂ«, kujtojnĂ« nga disa javĂ« mĂ« parĂ«,
pĂ«r tĂ« vetĂ«m ka pĂ«r tĂ« quajtur emrat string dhe ndoshta na japin tre prej atyre.
Dhe pastaj ndoshta ne kemi dorms string dhe kanĂ«
tre nga ata, ose me njĂ« konstante, int IDS dhe kanĂ« tre prej atyre.
Por edhe tani kjo ndjehet pak i lĂ«ngshĂ«m, e drejtĂ«.
Ne jemi duke folur pĂ«r studentĂ«t dhe ende UnĂ« jam me tĂ« vĂ«rtetĂ« u ndalur nĂ« nivelin e ulĂ«t
Detajet e zbatimit.
Studenti Ă«shtĂ« njĂ« emĂ«r dhe njĂ« fjetore dhe ID.
>> Pse nuk mundem vetĂ«m tĂ« deklarojĂ« njĂ« ndryshore quajtur nxĂ«nĂ«s dhe e quajti ajo s.
Dhe nĂ« qoftĂ« se unĂ« dua njĂ« tjetĂ«r student, pse nuk e kam vetĂ«m e quajti atĂ« t.
Ose nĂ« qoftĂ« se unĂ« dua njĂ« bandĂ« e tĂ«rĂ« e studentĂ«ve, pse nuk e bĂ«jmĂ« unĂ« vetĂ«m
thonĂ« se unĂ« kam njĂ« klasĂ« tĂ« tĂ«rĂ« tĂ« studentĂ«ve, dhe kjo Ă«shtĂ« tre prej tyre.
Me fjalĂ« tĂ« tjera, pse nuk mund tĂ« vij me vetĂ« llojin tim tĂ« tĂ« dhĂ«nave, tĂ« quajtur
StudentĂ«t, brenda sĂ« cilĂ«s Ă«shtĂ« njĂ« emĂ«r, Ă«shtĂ« njĂ« ID, Ă«shtĂ« njĂ« konvikt,
Ă«shtĂ« ndonjĂ« numĂ«r tĂ« fushave tĂ« tjera.
Dhe kjo rezulton nga ju mund tĂ« bĂ«jĂ« pikĂ«risht kĂ«tĂ«.
>> Pra, C e ka kĂ«tĂ« funksion tĂ« quajtur struct.
Kjo Ă«shtĂ« njĂ« tipar gjuhĂ« qĂ« na lejon tĂ« bĂ«jmĂ« pikĂ«risht kĂ«tĂ«.
UnĂ« jam duke shkuar pĂ«r tĂ« shkuar pĂ«rpara dhe tĂ« hapĂ« structs.h
ku ne jemi duke shkuar pĂ«r tĂ« parĂ« pas pĂ«rkufizimit tĂ« njĂ« studenti.
Ajo rezulton - dhe kjo Ă«shtĂ« edhe thjeshtĂ« se ai pĂ«rfshin njĂ« ID
njĂ« moment mĂ« parĂ«.
NĂ«se ju doni tĂ« dalĂ« me shtĂ«pi lloji juaj e tĂ« dhĂ«nave,
dhe pĂ«rveĂ§ int, dhe char dhe noton dhe tĂ« gjitha kĂ«to tĂ« tjerĂ«t qĂ« ekzistojnĂ«,
ju mund ta bĂ«ni kĂ«tĂ« duke fjalĂ« pĂ«r fjalĂ« shkrim typedef e strukturĂ«s,
pastaj disa formatimin e teksteve kaĂ§urrel, brenda tĂ« cilave ju
lista e variablave qĂ« ju doni tĂ« tĂ« lidhen me kĂ«to tĂ« dhĂ«na tĂ« re me porosi
shkruani si njĂ« emĂ«r dhe njĂ« konvikt, dhe pastaj pas formatimin e teksteve kaĂ§urrel
ju jepni njĂ« emĂ«r pĂ«r llojin e ri tĂ« tĂ« dhĂ«nave.
KĂ«shtu, pĂ«r shembull, student.
>> Dhe Ă§farĂ« Ă«shtĂ« e mirĂ« pĂ«r kĂ«tĂ« Ă«shtĂ« se tani nĂ«se ne shikojmĂ« nĂ« kodin pĂ«rkatĂ«s,
kongresi, i parĂ« sĂ« gjithash, Ă«shtĂ« pĂ«r tĂ« vĂ«nĂ« kĂ«tĂ«
nĂ« njĂ« skedar tĂ« quajtur diĂ§ka dot h, njĂ« header file, tĂ« cilat ne nuk kemi
filloi duke pĂ«rdorur veten shumĂ«.
Por ne jemi duke shkuar pĂ«r tĂ« filluar duke pĂ«rdorur mjaft tani.
Dhe Ă§farĂ« mund tĂ« bĂ«jmĂ« me kĂ«tĂ«, nĂ« fund tĂ« fundit, nĂ« kĂ«to pak rreshta tĂ« kodit
Ă«shtĂ« pikĂ«risht deklaroj se llojin e tĂ« dhĂ«nave, njĂ« student.
Dhe tani le tĂ« pĂ«rdorin atĂ«.
>> UnĂ« jam duke shkuar pĂ«r tĂ« shkuar tani nĂ« njĂ« file i quajtur structs1.c.
Dhe le tĂ« marrin njĂ« vĂ«shtrim nĂ« njĂ« Disa karakteristika kĂ«tu.
Pra gjĂ«ra deri kĂ«tu Ă«shtĂ« kryesisht tĂ« njohur, dhe ne do tĂ«
tĂ« kthehen nĂ« atĂ« qĂ« nuk Ă«shtĂ« i njohur nĂ« njĂ« moment tĂ« vetĂ«m.
Kjo natyrisht Ă«shtĂ« pĂ«rfshirĂ« timen header file, e cila Ă«shtĂ« e re, si dhe,
me pĂ«rjashtim tĂ« pset 3 ku, Recall, ne kemi helpers.h.
KĂ«shtu qĂ« ju mund tĂ« kujtojnĂ« helpers.h #include.
>> Pse pse jam unĂ« duke pĂ«rdorur kuotat nĂ« vend tĂ« kllapa angled?
Kur tĂ« zgjedh mes tyre?
Pothuajse gjithmonĂ« I duket pĂ«r t'u pĂ«rdorur kllapa angled.
Dhe pastaj, tĂ« gjithĂ« njĂ« e papritur pĂ«r Linja e gjashtĂ« UnĂ« jam duke pĂ«rdorur kuotat e dyfishtĂ«.
Pse mund qĂ« tĂ« jetĂ«?
Po?
>> Audienca: [padĂ«gjueshme]
DAVID J. Malan: Kjo Ă«shtĂ« njĂ« aktuale, Ă§farĂ«?
Audienca: Kjo Ă«shtĂ« nĂ« IDE tuaj.
DAVID J. Malan: Yeah, kjo Ă«shtĂ« nĂ« IDE time aktuale.
Dhe le tĂ« mos ndalem nĂ« IDE, sepse kjo Ă«shtĂ« vetĂ«m njĂ« mjet qĂ« unĂ« jam duke pĂ«rdorur.
Kjo Ă«shtĂ« nĂ« rrymĂ«n e mia Lista, nĂ« veĂ§anti.
Pra structs.h Ă«shtĂ« dosja ime nuk instaluar nĂ« IDE,
nĂ« sistemin operativ vetvete, por ajo Ă«shtĂ« nĂ« directory time aktuale.
Pra, konventa Ă«shtĂ« nĂ« qoftĂ« se ju doni pĂ«r tĂ« pĂ«rfshirĂ« vetĂ« dosjen tuaj header,
ju vetĂ«m pĂ«rdorni kuotat e dyfishtĂ«.
>> Ă‡farĂ« ne e quajmĂ« kĂ«tĂ« gjĂ« nĂ« Linja 8, nĂ« pĂ«rgjithĂ«si?
Kjo Ă«shtĂ« ajo?
diĂ§ka #define.
Kjo paraqet konstanta, e drejtĂ«?
NĂ« qoftĂ« se ju dĂ«shironi tĂ« keni njĂ« Vlera nĂ« programin tuaj
se ju pĂ«rdorni njĂ« tĂ« tĂ«rĂ« bandĂ« e herĂ«, kjo Ă«shtĂ«
Konventa e mirĂ« pĂ«r tĂ« faktor atĂ«, shpallin atĂ«, me simbolin hash
pĂ«rcaktuar, atĂ«herĂ«, nga konventa, nĂ« tĂ« gjitha uppercase word-- pse kjo nuk Ă«shtĂ«
shumĂ« e nevojshme, por Ă«shtĂ« konventĂ« e njeriut
pĂ«r tĂ« pĂ«rfituar konstante nĂ« mĂ«nyrĂ« qĂ« ata tĂ« hidhen jashtĂ«
nĂ« ju visually-- hapĂ«sirĂ« â€‹â€‹dhe atĂ«herĂ« vlera e ju doni tĂ« jetĂ«
ekuivalente me emĂ«r qĂ« konstante sĂ«.
Jo pikĂ«presje, por ju thjesht ndjekin kĂ«tĂ« model atje.
>> Pra, Ă§farĂ« jam unĂ« duke bĂ«rĂ« nĂ« kĂ«tĂ« kod aktuale.
Pra, le tĂ« marrin njĂ« vĂ«shtrim nĂ« Programi kryesor kĂ«tu.
NĂ« pĂ«rputhje 12 sepse kanĂ« pĂ«rfshirĂ« structs.h,
UnĂ« tani kam magjike nĂ« tim dispozicion njĂ« tip tĂ« ri tĂ« dhĂ«nave.
UnĂ« nuk do tĂ« vetĂ«m kanĂ« qasje nĂ« int, dhe char, dhe noton, dhe string,
dhe blu dhe tĂ« tjerĂ«t.
UnĂ« tani kanĂ« qasje nĂ« njĂ« lloj i tĂ« dhĂ«nave tĂ« studentĂ«ve.
Pra, nĂ« pĂ«rputhje 12, unĂ« jam duke kombinuar dy ideas-- njĂ« njĂ« lloj tĂ« dhĂ«nave doganore dhe dy,
duke pĂ«rdorur njĂ« rrjet.
Dhe kĂ«shtu nĂ« kĂ«tĂ« program, nĂ«se UnĂ« dua tĂ« mbĂ«shtetur nĂ« fakt
tre studentĂ« tĂ« ndryshme nĂ« programin tim, unĂ«
thjesht mund tĂ« them mĂ« jepni njĂ« variabĂ«l quajtur i studentĂ«ve, secila prej tĂ« cilave
Ă«shtĂ« e studentĂ«ve tĂ« tipit, tĂ« cilat is my lloj tĂ« dhĂ«nave doganore.
Dhe, nĂ« veĂ§anti, mĂ« jep mua tre prej atyre nĂ« grup tim.
>> Pra, tani Ă§farĂ« bĂ«jmĂ« ne nĂ« kĂ«tĂ« program?
KĂ«tu Ă«shtĂ« vetĂ«m njĂ« pĂ«r lak iterating nga 0 deri nĂ« 3, qĂ« Ă«shtĂ« pĂ«r shkak
Ă§farĂ« vlera e studentĂ«ve Ă«shtĂ«.
UnĂ« jam vetĂ«m duke bĂ«rĂ« qĂ« pĂ«rdoruesit mĂ« jep emrin e studentit.
Dhe pastaj nĂ« linjĂ« 17, ne kanĂ« njĂ« linjĂ« mĂ« sĂ« shumti tĂ« njohur.
Ne kemi mikun tonĂ« tĂ« vjetĂ«r GetString nĂ« tĂ« djathtĂ«.
Dhe Ă§farĂ« pjesĂ« e sintaksĂ«s Ă«shtĂ« me sa duket i ri,
nĂ« qoftĂ« se ju nuk keni programuar nĂ« C pĂ«rpara, dhe kurrĂ« nuk kanĂ« pĂ«rdorur structs?
Po?
>> AUDIENCA: The .name.
DAVID J. Malan: The .name.
Por kjo nuk Ă«shtĂ« shumĂ« e njĂ« kĂ«rcim, sepse tani studentĂ«t kllapa I
ju jep studenti i-th.
Dhe nĂ« qoftĂ« se ju doni tĂ« zhyten brenda kĂ«saj strukture,
ju pĂ«rdorni vetĂ«m njĂ« periudhĂ« tĂ« vetme dhe atĂ«herĂ« emri i variablit brenda,
ose prona qĂ« brenda ju doni tĂ« merrni qasje nĂ«.
NĂ« mĂ«nyrĂ« tĂ« ngjashme, atĂ«herĂ«, nĂ« qoftĂ« se unĂ« atĂ«herĂ« e nxit pĂ«rdorues, jepni konvikt e studentit,
ju nĂ« mĂ«nyrĂ« tĂ« ngjashme mund tĂ« ruajĂ« atĂ« string nĂ« variablin konvikt brenda
e kĂ«saj strukture studentore.
>> Dhe tani gjĂ«rat tĂ« merrni njĂ« dashuroj pak.
Dhe kjo do tĂ« shikojmĂ« nĂ« ndoshta njĂ« shumĂ« shumĂ« shpejt.
Por ju do tĂ« shihni kĂ«tĂ« shumĂ« mĂ« tepĂ«r nĂ« pset 4, kĂ«shtu qĂ« le tĂ« vetĂ«m tĂ« tĂ« shikoj nĂ« atĂ« tani.
Ajo rezulton se nĂ« pĂ«rputhje me 23 38, Ă§farĂ« mendoni se unĂ« jam ndoshta duke bĂ«rĂ«?
UnĂ« e kam hequr komentet pĂ«r sot, por versioni
e kodit online pĂ«r referencĂ« ka tĂ« gjitha komentet.
Ă‡farĂ« mund tĂ« duket tĂ« jetĂ« bĂ«rĂ«?
>> Audienca: Ruajtja skedarin me tĂ« gjitha informacioni qĂ« pĂ«rdoruesi ka hyrĂ«.
>> DAVID J. Malan: Yeah, pikĂ«risht, kjo Ă«shtĂ« njĂ« mĂ«nyrĂ« tĂ« re
qĂ« ne jemi duke parĂ« dy, NjĂ« tjetĂ«r tipar i C,
ku unĂ« mund tĂ« krijojĂ« fotografi mia.
Deri mĂ« tani, pothuajse Ă§do program ju keni shkruar Ă«shtĂ« pa shtetĂ«si.
Sa mĂ« shpejt qĂ« Ă«shtĂ« bĂ«rĂ« punĂ«, kjo Ă«shtĂ« ajo.
Nuk ka asnjĂ« kujtim apo kujtesĂ« e saj.
Nuk ka asnjĂ« skedar ruajtur.
Por nĂ« qoftĂ« se ju nuk doni tĂ« ruani tĂ« dhĂ«na qĂ« ka
ndodhi, si nĂ« njĂ« lojĂ« ose njĂ« program si kjo, rezulton ne mund tĂ« bĂ«jmĂ« kĂ«shtu.
Dhe ju do tĂ« shihni kĂ«tĂ« mĂ« shumĂ« nĂ« pset 4 dhe nĂ« nenin.
Por kjo linjĂ« 23 thelb krijon njĂ« skedar tĂ« quajtur students.csv.
Dhe ju mund tĂ« keni parĂ« kĂ«tĂ« mĂ« parĂ«.
Edhe nĂ« qoftĂ« se ju kurrĂ« nuk kam studiuar CS mĂ« parĂ«, CSV Ă«shtĂ« Variablat presje-tĂ« ndara.
Ă‹shtĂ« si njĂ« njeriu shumĂ« tĂ« varfĂ«r version i njĂ« file Excel,
qĂ« do tĂ« thotĂ« se ajo mund tĂ« jetĂ« e hapur nĂ« Excel dhe nĂ« Numrat Apple,
dhe ajo ka rreshtave dhe kolonave.
Por kjo nuk Ă«shtĂ« njĂ« pronarit format si Microsoft apo Apple.
Kjo Ă«shtĂ« vetĂ«m presje ndarjen e Vlerat qĂ« ne do tĂ« shohim nĂ« njĂ« moment.
>> Dhe vetĂ«m tĂ« marrĂ« njĂ« guess.
NĂ« linjĂ« 23, nĂ« fund tĂ« fundi, argumenti im i dytĂ«
pĂ«r kĂ«tĂ« funksion tĂ« ri tĂ« quajtur f hapur pĂ«r fotografi tĂ« hapur Ă«shtĂ« w.
Ă‡farĂ« mund w treguar?
Po?
>> Audienca: Kjo ju lejon tĂ« shkruani nĂ« dosjen?
>> DAVID J. Malan: Kjo ju lejon ju shkruani nĂ« dosjen.
Pra, ka disa variante qĂ« ne mund tĂ« vihet nĂ« prizĂ« kĂ«tu.
Por vetĂ«m nĂ«se ju doni tĂ« lexoni fotografi, qĂ« Ă«shtĂ« tĂ« shikoni nĂ« atĂ«
dhe lexoni atĂ« nĂ« kujtesĂ«, ju vetĂ«m pĂ«rdorni quote mbyll thonjĂ«zat "r".
NĂ«se ju doni tĂ« shkruani tĂ« skedar, ju pĂ«rdorni kuotĂ« mbyll thonjĂ«zat "w".
Ka edhe append dhe disa gjĂ«ra tĂ« tjera
nĂ« qoftĂ« se ju dĂ«shironi tĂ« modifikoni skedarĂ«t ekzistues.
Tani ne jemi duke shkuar pĂ«r tĂ« mbajtur duke parĂ« kĂ«tĂ« gjĂ«, atĂ«herĂ« ne do tĂ« kthehen tĂ« vijĂ« 24.
NULL, ajo rezulton, Ă«shtĂ« njĂ« vlerĂ« tĂ« veĂ§antĂ« qĂ«
mund tĂ« kthehen nga disa funksione nĂ«se diĂ§ka ka shkuar wrong--
NĂ«se skedari nuk ekziston, nĂ« qoftĂ« se ju keni dalĂ« jashtĂ« kujtesĂ«s,
ose njĂ« bandĂ« e gabimeve tĂ« tjera.
Por tani pĂ«r tani, le tĂ« supozojmĂ« se kjo Ă«shtĂ« kontrolluar vetĂ«m konvencionale gabim.
KĂ«tu nĂ« linjĂ« 26, unĂ« jam iterating nga 0 deri ne 3 mbi tĂ« gjithĂ« nxĂ«nĂ«s mi.
Dhe kjo Ă«shtĂ« lloj i lloj i funksionit tĂ« ri, fprintf,
por vetĂ«m tĂ« marrĂ« njĂ« guess.
NĂ«se printf Ă«shtĂ« vetĂ«m tĂ« shtypura njĂ« varg formatuar,
Ă§farĂ« do tĂ« fprintf ndoshta do tĂ« thotĂ«?
Audienca: Printo nĂ« njĂ« skedar.
DAVID J. Malan: Print njĂ« varg i formatuar nĂ« njĂ« skedar.
Kjo Ă«shtĂ« ajo shtesĂ« f mjeti Ă«shtĂ« skedar.
Dhe argumenti i ri i parĂ« duhet tĂ« jetĂ« ndryshorja qĂ« pĂ«rfaqĂ«son dosjen tuaj.
AtĂ«herĂ« ne vetĂ«m duhet njĂ« format string ashtu si printf.
Dhe, edhe pse kjo Sintaksa Ă«shtĂ« e re, kjo vetĂ«m
do tĂ« thotĂ« plug nĂ« emĂ«r tĂ« studentit, plug-nĂ« konvikt tĂ« studentĂ«ve, dhe pastaj
me fclose, tĂ« mbyllur dosjen.
Dhe pastaj lastly-- kjo Ă«shtĂ« e re dhe ne do tĂ« kthehen nĂ« kĂ«tĂ«
para long-- unĂ« jam liruar studenti pĂ«r arsye
qĂ« ka ndodhur deri mĂ« lart atje.
Por ne do tĂ« kthehem nĂ« se para long--
kjo Ă«shtĂ« pĂ«r shkak tĂ« asaj se si Ă«shtĂ« getString nĂ« fakt duke punuar nĂ«n kapuĂ§.
>> Pra, le tĂ« marrin njĂ« vĂ«shtrim tĂ« shpejtĂ« kĂ«tu.
NĂ«se unĂ« lloji ls nĂ« directory time, vĂ«reni se unĂ« nuk e bĂ«j
tĂ« ketĂ« njĂ« skedar tĂ« quajtur students.csv, jo vetĂ«m atje, nuk ekziston.
Pra, nĂ«se unĂ« tani hartojnĂ« kĂ«tĂ« program, bĂ«jnĂ« structs-1,. / structs-1,
dhe unĂ« jam duke shkuar pĂ«r tĂ« shkuar pĂ«rpara dhe shkruani Andi, i cili jeton nĂ« Berkeley nĂ« Yale.
Ne do tĂ« kemi Rob i cili jeton nĂ« Thayer kĂ«to ditĂ«.
Dhe le tĂ« dalĂ« me ku Ă«shtĂ«, unĂ« mendoj se, Maria Ă«shtĂ« nĂ« Mather,
nĂ« qoftĂ« se kam mend saktĂ«.
>> Pra, asgjĂ« nuk duket tĂ« ndodhĂ«.
Por nĂ« qoftĂ« se unĂ« lloji ls tani, ka students.csv.
Le tĂ« shkojnĂ« pĂ«rpara dhe tĂ« students.csv hapur.
Kjo Ă«shtĂ« pĂ«rsĂ«ri njĂ« shumĂ« format lehtĂ« skedar.
Por unĂ« e kam miratuar thjesht njĂ« konventĂ« qĂ« unĂ« kam dy rreshtave dhe kolonave kĂ«tu.
Kolona e parĂ« Ă«shtĂ« emrat e parĂ« Popullit.
Kolona e dytĂ« Ă«shtĂ« studentit fjetore, apo kolegj, apo shtĂ«pi, apo gjĂ«send.
Dhe tani unĂ« e kam ruajtur kĂ«tĂ« tĂ« pĂ«rhershme nĂ« njĂ« skedar.
>> Pra, kjo nuk Ă«shtĂ« e gjitha se interesante.
Por kjo Ă«shtĂ« vetĂ«m njĂ« gur shkelĂ«n tani pĂ«r tĂ« qenĂ« nĂ« gjendje tĂ« vazhdojnĂ« informacione
pĂ«rgjithmonĂ«.
Pra, le tĂ« shohim tani se Ă§farĂ« mĂ« shumĂ« qĂ« ne mund tĂ« tĂ« bĂ«jĂ« me kĂ«to dhe tĂ« tjera karakteristika.
Por sĂ« pari, ndonjĂ« pyetje?
Kjo ishte njĂ« shumĂ«, dhe se ishte i shpejtĂ«.
Por ju do tĂ« shihni njĂ« shumĂ« mĂ« shumĂ« nĂ« pset 4, si.
Po?
>> Audienca: A ka ndonjĂ« mĂ«nyrĂ« pĂ«r tĂ« vazhdojĂ« duke shtuar emra pĂ«r kĂ«tĂ« dosje?
>> DAVID J. Malan: Pyetje e mirĂ«.
A ka ndonjĂ« mĂ«nyrĂ« pĂ«r tĂ« vazhduar duke shtuar emra pĂ«r kĂ«tĂ« dosje?
Po.
Dhe, nĂ« fakt, nĂ« qoftĂ« se ju tĂ« pĂ«rfundojĂ« up ri-hapur dosjen,
ju do tĂ« pĂ«rdorni kuotĂ« mbyll thonjĂ«zat "njĂ«" pĂ«r bashkangjit,
e cila vetĂ«m do tĂ« shtojĂ« njĂ« linjĂ« tĂ« re, njĂ« Linja e re pĂ«rsĂ«ri dhe pĂ«rsĂ«ri, pikĂ«risht.
Pyetje e mirĂ«.
Pyetje tĂ« tjera?
Po?
Audienca: NĂ«se ju u Programi pĂ«rsĂ«ri tani,
do tĂ« mbajĂ« duke shtuar emra tĂ« fotografi apo do tĂ« hapĂ« njĂ« skedĂ« tĂ« re?
>> DAVID J. Malan: Ah, pyetje e mirĂ«.
NĂ« qoftĂ« se ju u zhvillua programin pĂ«rsĂ«ri djathtas tani, shtypur ndoshta nĂ« emra tĂ« rinj,
do tĂ« shtojĂ« nĂ« dosjen ose tĂ« prishĂ«sh file?
Ky i fundit, sepse unĂ« jam i jo duke pĂ«rdorur mĂ«nyrĂ«n append.
Dhe pĂ«r shkak se unĂ« jam vetĂ«m verbĂ«risht hapjes sĂ« kartelĂ«s pĂ«r shkrim,
ajo Ă«shtĂ« vetĂ«m do tĂ« prishĂ«sh file.
KĂ«shtu qĂ« unĂ« me tĂ« vĂ«rtetĂ« do tĂ« duhet tĂ« bĂ«ni Ă«shtĂ« append, nĂ« qoftĂ« se unĂ« dua qĂ« nĂ« fakt tĂ« ketĂ« njĂ« afat tĂ« gjatĂ«
bazĂ«s sĂ« tĂ« dhĂ«nave.
>> Tani CSV Ă«shtĂ« e dobishme, sinqerisht, madje pĂ«r si nĂ« qoftĂ« se ju jeni writing--
dhe ne do tĂ« shohim pĂ«rfundimisht kĂ«tĂ« mĂ« vonĂ« nĂ« semestrin kur
ne pĂ«rdorim CSVs pĂ«r qĂ«llime tĂ« tjera.
NĂ«se ju doni pĂ«r tĂ« ruajtur tĂ« gjithĂ« njerĂ«zit tĂ« cilĂ«t janĂ« regjistruar pĂ«r njĂ« ngjarje,
ose nĂ«nshkruar pĂ«r nxĂ«nĂ«sin tuaj grup, ose diĂ§ka tĂ« tillĂ«,
ruajtjen e tĂ« dhĂ«nave nĂ« kĂ«tĂ« lloj i formatit Ă«shtĂ« super i pĂ«rshtatshĂ«m.
Sepse fjalĂ« pĂ«r fjalĂ«, nĂ« qoftĂ« se unĂ« ishin pĂ«r tĂ« shkarkuar kĂ«tĂ« skedar.
UnĂ« mund tĂ« double-- dhe le tĂ« vĂ«rtetĂ« tĂ« provoni kĂ«tĂ«
nĂ« qoftĂ« se unĂ« kam Excel ose numrat nĂ« kĂ«tu.
>> UnĂ« jam duke shkuar pĂ«r tĂ« right-click ose kontroll-klikoni dosjen time.
Uh.
Djathtas-klikoni ose kontroll-click dosjen time.
Come on, miu im nuk Ă«shtĂ« duke bashkĂ«punuar.
Download-- unĂ« jam duke shkuar pĂ«r shkarko tĂ« gjitha dosjet kĂ«tu kĂ«shtu
vetĂ«m kĂ«shtu qĂ« unĂ« mund tĂ« rrĂ«mbej kĂ«tĂ« njĂ« tĂ« tillĂ«.
Dhe le tĂ« shohim nĂ«se kjo punon hera e parĂ« students.csv--
UnĂ« e kam aktivizuar.
Tani ata duan tĂ« shohin kontaktet e mia.
Tani, unĂ« duhet tĂ« regjistroheni.
Shih se sa e lehtĂ« Ă«shtĂ« pĂ«r t'u pĂ«rdorur CSVs?
Po, tĂ« mbajtur atĂ« deri nĂ« datĂ«n.
OK, tani ne jemi gati pĂ«r klasĂ«.
OK, oh, Ă§farĂ« ka tĂ« re?
OK, afĂ«r.
Kjo ishte magjike.
OK, tani ne kemi pĂ«r tĂ« rinovuar.
Dhe tani, ajo harruan Ă§farĂ« paraqesĂ« Kam hapur fillimisht,
por ajo qĂ« a-- atje ne do tĂ« shkojmĂ«.
OK, kĂ«shtu qĂ« tani kemi njĂ« file Excel.
Faleminderit.
>> OK, kĂ«shtu qĂ« ajo qĂ« unĂ« bĂ«ra ishte pjesa mĂ« e lehtĂ«.
Sigurisht unĂ« mund tĂ« ketĂ« para-instaluar Excel, ose numrat, apo Ă§farĂ«do programi.
Por kjo Ă«shtĂ« e bukur, sepse tani unĂ« mund tĂ« manipulojĂ«
tĂ« dhĂ«nat nĂ« njĂ« format standard.
>> Konteksti Pra, tani le tĂ« kaloni nĂ« ku ne u ndĂ«rpre
HerĂ«n e fundit, e cila ishte pĂ«r tĂ« filluar pĂ«r tĂ« marrĂ« off rrota trajnimit.
Por sĂ« pari, ju nuk e keni shihni kĂ«tĂ« drekĂ« mĂ« parĂ«
po ndodh prapĂ« kĂ«tu nĂ« zjarr dhe Akull nĂ« Kembrixh, Sitar nĂ« New Haven.
Sign up nĂ« faqen CS50s ASAP pĂ«r t'u bashkuar me studentĂ«t CS50 dhe stafin.
>> Pra, ne e mori rrota trajnimit off tĂ« hĂ«nĂ«n si follows--
string Ă«shtĂ« deklaruar nĂ« Biblioteka CS50s pĂ«r disa kohĂ«.
Dhe kjo Ă«shtĂ« e bukur, sepse ai ua mundĂ«son ne qĂ« tĂ« flasim pĂ«r variablat si
FjalĂ«t plotĂ« dhe fjali dhe mĂ« shumĂ«.
Por kjo rezulton string nuk ekziston.
Kjo Ă«shtĂ« vetĂ«m njĂ« sinonim, ose njĂ« pseudonim, qĂ« kemi krijuar pĂ«r diĂ§ka qĂ«
nĂ« fakt Ă«shtĂ« njĂ« pak mĂ« shumĂ« teknik quhet char *.
>> Dhe me tĂ« vĂ«rtetĂ«, ne pamĂ« njĂ« shembull e njĂ« programi tĂ« hĂ«nĂ«n
qĂ« nuk sillen si mjaft kemi pritur.
Kjo ishte skedar, krahasoni-0.
Dhe kujtoj se krahasojnĂ«-0, nĂ« qoftĂ« se I pĂ«rpiluar programin e sĂ« hĂ«nĂ«s
dhe drejtuar krahasojnĂ«-0 dhe shkruani mom nĂ« vogle, dhe nĂ«na nĂ« Fjala pĂ«rsĂ«ri.
Programi kĂ«mbĂ«nguli I shkruani gjĂ«ra tĂ« ndryshme,
edhe pse mom, tĂ« gjitha nĂ« Fjala, Ă«shtĂ« identike me sy.
Pra, Ă§farĂ« ishte pĂ«rgjigja e shkurtĂ«r pse kompjuteri mendon
kĂ«to dy vargjet janĂ« tĂ« ndryshme?
Po?
>> Audienca: [padĂ«gjueshme]
DAVID J. Malan: E drejta.
Pra, nĂ«na, hera e parĂ« I shkruani atĂ« nĂ«, Ă«shtĂ« duke u
ruhet diku nĂ« kompjuterin My kujtim por nĂ« njĂ« vend tjetĂ«r
sesa tĂ« dytĂ«n herĂ« unĂ« lloji nĂ« mom.
Tani ajo sigurisht mund tĂ« jetĂ« i optimizuar.
Kompjuteri mund tĂ« jetĂ« i zgjuar dhe realizuar kĂ«to dy vargje, hej,
ata janĂ« identike.
MĂ« lejoni tĂ« mos redundantly ruajtur atĂ«.
Por kompjuterat nuk e bĂ«jmĂ« atĂ« optimization nĂ«se ju tregoni atyre pĂ«r tĂ«.
Pra, si parazgjedhje, ata janĂ« vetĂ«m do tĂ« pĂ«rfundojĂ« deri
nĂ« dy vende tĂ« ndryshme nĂ« kujtesĂ«.
Dhe nĂ« mĂ«nyrĂ« qĂ« tĂ« jetĂ« mĂ« i qartĂ«, kur ne krahasim me dy vargjet,
I pari ishte quajtur s, e dytĂ« u quajt
t, Ă§farĂ« konkretisht isha unĂ« krahasuar kĂ«tu on line 13?
Po.
>> Audienca: Ă‹shtĂ« vendi nĂ« kujtesĂ«n se variabli do tĂ« tregojĂ« pĂ«r.
>> DAVID J. Malan: PikĂ«risht, unĂ« kam qenĂ« krahasuar vend nĂ« kujtesĂ«n e
qĂ« kĂ«to variabla vuri nĂ« dukje.
Pra konkretisht, nĂ« qoftĂ« se nĂ«na ishte nĂ« numĂ«r bajt 1 dhe 2, dhe 3,
dhe 4-- sepse kujtohet backslash 0 duhet tĂ« jetĂ« mbi tĂ« gjitha rrugĂ«n nĂ« fund.
Dhe shembull tjetĂ«r i Mami, m-o-m, ishte nĂ« adresĂ«n 10, 11, 12, dhe 13.
UnĂ« u krahasuar 1, qĂ« adresa, qĂ« lokacioni nĂ« kujtesĂ«,
kundĂ«r 10, i cili Ă«shtĂ« natyrisht qĂ« nuk Ă«shtĂ« e njĂ«jtĂ«.
1 nuk Ă«shtĂ« 10.
>> Pra, kjo Ă«shtĂ« e bukur nĂ« atĂ« kjo Ă«shtĂ« goxha e drejtpĂ«rdrejtĂ«.
Por kjo Ă«shtĂ« problematike pĂ«r aq sa ne nuk mund tĂ« duket pĂ«r tĂ« krahasuar vargjet.
Pra fundamentally-- dhe nĂ« kĂ«tĂ« nivel tĂ« ulĂ«t,
nĂ« qoftĂ« se ju tĂ« kĂ«rkuar pĂ«r tĂ« zbatuar njĂ« program pĂ«r tĂ« krahasuar
dy fjalĂ« tĂ« veĂ§anta qĂ« pĂ«rdoruesi ka shtypur nĂ« pĂ«r cilĂ«sinĂ«,
ata vargoj char pĂ«r char, vetĂ«m nĂ« terma tĂ« pĂ«rgjithshme,
Ă§farĂ« duhet tĂ« bĂ«jmĂ«, me sa duket?
Kjo nuk Ă«shtĂ« e mjaftueshme vetĂ«m pĂ«r tĂ« shikoni nĂ« kĂ«to dy adresa.
Ă‡farĂ« duhet tĂ« bĂ«jmĂ«?
Po?
>> Audienca: Iterate pĂ«rmes string [e padĂ«gjueshme].
>> DAVID J. Malan: Po, le tĂ« iterate pĂ«rmes vargut.
Le tĂ« pĂ«rdorim njĂ« pĂ«r lak, njĂ« lak, ndĂ«rsa, ose Ă‡farĂ«do qĂ« ju jeni mĂ« tĂ« rehatshme me.
Dhe nĂ« qoftĂ« se ne kemi marrĂ« dy vargjet diku nĂ« kujtesĂ«, le tĂ« shohim nĂ« Ă§do-sĂ«
karakteri i parĂ«, atĂ«herĂ« Ă§do e dytĂ« karakter, pastaj tĂ« tretĂ«, dhe tĂ« katĂ«rt,
dhe tĂ« pestĂ«, derisa ne goditi Ă§farĂ« vlere tĂ« veĂ§antĂ« rojtar?
Audienca: [padĂ«gjueshme]
DAVID J. Malan: Yeah, backslash zero, nĂ« tĂ« cilĂ«n pikĂ« nĂ« secilin varg
ne mund tĂ« vendosĂ« se Ă«shtĂ« ajo.
A e kemi pĂ«rputhet Ă§do karakter tĂ« vetĂ«m?
NĂ«se jo, kthimit tĂ« rreme.
NĂ«se Ă«shtĂ« kĂ«shtu, kthimi i vĂ«rtetĂ«.
Dhe kĂ«shtu kjo Ă«shtĂ« pikĂ«risht ajo qĂ« ky version i programit tĂ« krahasuar-1.c bĂ«n.
Kjo Ă«shtĂ« identike me atĂ« qĂ« ne shikoi hĂ«nĂ«n pĂ«rveĂ§ qĂ« unĂ« e kam
gotten shpĂ«toj e fjalĂ«s string-- pse qĂ« nuk ka impact-- funksionale tĂ« gjithĂ«
UnĂ« jam duke bĂ«rĂ« tani Ă«shtĂ« hequr disa rrota vizuale trajnimit,
por pĂ«r tĂ« parĂ« qartĂ« se s dhe t janĂ« adresat.
Dhe kjo Ă«shtĂ« ajo qĂ« ylli, asterisk, pĂ«rfaqĂ«son
Ă«shtĂ« njĂ« adresĂ«, i njohur ndryshe mĂ« shumĂ« teknikisht si njĂ« tregues.
>> KĂ«shtu qĂ« kur unĂ« deklaroj s nĂ« Linja 9 dhe them char * s,
kjo nuk do tĂ« thotĂ« mĂ« jepni njĂ« varg.
Kjo do tĂ« thotĂ« mĂ« jepni njĂ« variabĂ«l tĂ« cilit qĂ«llimi nĂ« jetĂ« Ă«shtĂ« pĂ«r tĂ« ruajtur njĂ« adresĂ«.
Sepse unĂ« jam gati pĂ«r tĂ« vĂ«nĂ« adresa e njĂ« varg nĂ« tĂ«.
Dhe me tĂ« vĂ«rtetĂ«, getString, tĂ« jetĂ« i qartĂ«, nuk do tĂ« kthehet njĂ« varg.
Ajo nuk kthehet mom backslash zero, nĂ« vetvete.
Ă‡farĂ« do getString specifike dhe pikĂ«risht tĂ« kthehet?
Audienca: [padĂ«gjueshme]
DAVID J. Malan: njĂ« adresĂ«, Adresa e karakterit parĂ«
nĂ« disa varg ajo ka marrĂ«.
Dhe kĂ«shtu qĂ« tani qĂ« ne jemi duke parĂ« njĂ« fjalen veĂ§antĂ« pĂ«rsĂ«ri.
Dhe, unĂ« pĂ«rmendur tĂ«rthorazi kĂ«tĂ« mĂ« herĂ«t.
Kjo do tĂ« jetĂ« konventa e mirĂ« se ne do tĂ« shohim pĂ«rsĂ«ri dhe pĂ«rsĂ«ri tani.
UnĂ« jam duke kontrolluar pĂ«r tĂ« siguruar qĂ« s nuk Ă«shtĂ« i pavlefshĂ«m dhe t nuk Ă«shtĂ« i pavlefshĂ«m.
Sepse bazuar nĂ« tim tĂ« vĂ«rtetĂ« PĂ«rmendja shpejtĂ« mĂ« herĂ«t,
Ă§farĂ« mund tĂ« thotĂ« nĂ«se getString nuk kthehet njĂ« adresĂ« por N-U-L-L, e cila Ă«shtĂ« njĂ« herĂ«,
disa vlera tĂ« veĂ§anta?
>> Audienca: Gabim.
>> DAVID J. Malan: Kjo Ă«shtĂ« njĂ« gabim.
Dicka shkoi keq.
Dhe Ă§farĂ« mĂ«nyrĂ« tipike mund tĂ« ndodhĂ«, sidomos
me strings-- qĂ« mund tĂ« jetĂ« e gjatĂ«sisĂ« panjohur nĂ« advance--
ndoshta kompjuterĂ«t ' jashtĂ« kujtesĂ«s, ndoshta
ju shtypur nĂ« njĂ« tĂ« tillĂ« fjalĂ« tĂ« gjatĂ« ose fjali
ose ngjit njĂ« ese tĂ« tillĂ« tĂ« madh ka jo vetĂ«m kujtesĂ« tĂ« mjaftueshme.
Dhe kĂ«shtu getString nuk mund tĂ« kthehen adresa e tĂ« gjithĂ« gjĂ«,
kĂ«shtu qĂ« vetĂ«m tĂ« kthehet asgjĂ«.
Dhe ai thotĂ« se njĂ« gabim ka ndodhur duke u kthyer nĂ« vlerĂ« tĂ« veĂ§antĂ« null.
Kjo Ă«shtĂ« adresa zero, kĂ«shtu qĂ« tĂ« flasin.
>> Tani del C vjen me njĂ« funksion qĂ« e bĂ«n kĂ«tĂ« pĂ«rsĂ«ritje.
Ne nuk duhet tĂ« zbatojnĂ« kĂ«tĂ« me njĂ« pĂ«r lak ose njĂ« lak, ndĂ«rsa veten.
Ne mund tĂ« pĂ«rdorim njĂ« funksion, quajtur shkurtimisht,
llokoĂ§is comp, ose varg tĂ« krahasuar, tĂ« cilit qĂ«llimi nĂ« jetĂ« Ă«shtĂ« qĂ« tĂ« bĂ«jĂ« pikĂ«risht kĂ«tĂ«.
Ju jepte dy pointers, dy adresa, dhe ai do tĂ« shkojĂ« nĂ« kĂ«to adresa
dhe pastaj krahasoni letĂ«r pĂ«r letĂ«r pĂ«r letĂ«r pĂ«r cilĂ«sinĂ«,
ndalur vetĂ«m kur ajo Ă«shtĂ« e vĂ«rtetĂ«?
Kur intuitive duhet ndezur comp ndaluar iterating, vetĂ«m tĂ« jetĂ« i qartĂ«?
Kur ajo godet njĂ« backslash 0 nĂ« ose string, nĂ« tĂ« cilĂ«n pikĂ« ajo mund tĂ« vendosĂ«
ka gjithĂ§ka pĂ«rputhet, ose ka qenĂ« atje njĂ« mospĂ«rputhje?
>> Pra, nĂ« qoftĂ« se kemi drejtuar kĂ«tĂ« tani dhe provoni lojĂ« tonĂ« tĂ« vogĂ«l kapitalizimin,
kĂ«shtu qĂ« e bĂ«jnĂ« tĂ« krahasuar-1, ./compare-1, dhe shkruani mom nĂ« Fjala dy herĂ«.
Tani kjo Ă«shtĂ« e njĂ«jta gjĂ«.
Dhe nĂ« qoftĂ« se unĂ« tĂ« bĂ«jĂ« atĂ« pĂ«rsĂ«ri me vogle dhe pastaj ndoshta uppercase.
Tani ajo me tĂ« vĂ«rtetĂ« e dallon nĂ« mes tĂ« sipĂ«rme dhe tĂ« vogla.
Pra, jo tĂ« gjitha se e vĂ«shtirĂ« ose magjike, por kjo nuk shpjegoj tani
Ă§farĂ« po ndodh nĂ«n kapuĂ§.
>> Pra, ajo qĂ« mĂ« shumĂ« mund tĂ« ekstrakt nga ky lloj tĂ« mĂ«simit?
Pra, le tĂ« marrin njĂ« vĂ«shtrim nĂ« kĂ«tĂ«.
UnĂ« jam duke shkuar pĂ«r tĂ« shkuar pĂ«rpara dhe tĂ« shkruajnĂ« njĂ« Programi i shpejtĂ« kĂ«tu quhet kopje-0.
Dhe tani le tĂ« shkojnĂ« pĂ«rpara dhe nĂ« fakt le tĂ« bĂ«jmĂ« this-- me kopje-0,
hidhini njĂ« sy nĂ« atĂ« qĂ« unĂ« kam marrĂ« kĂ«tu.
UnĂ« sĂ« pari them pĂ«rdorues, thonĂ« diĂ§ka.
Pastaj unĂ« tĂ« marrĂ« njĂ« varg dhe kam ruajtur atĂ« nĂ« s.
Pastaj unĂ« kontrolloj nĂ«se s barabartĂ« barabartĂ« NULL, vetĂ«m tĂ« kthehet 1.
Pra, kjo Ă«shtĂ« vetĂ«m kontrolluar standarde gabim.
AsgjĂ« interesante ka ndodhur.
Dhe nĂ« fakt, nĂ« qoftĂ« se ne tĂ« shpĂ«toj prej gabimit kontrolluar, kjo duket si javĂ« 1 Kodi
momentin.
Por unĂ« kam filluar tĂ« marrĂ« njĂ« pak mĂ« tĂ« mirĂ« pĂ«r kĂ«tĂ«.
>> Tani nĂ« linjĂ« 16, njĂ« javĂ« mĂ« parĂ«, ndoshta ditĂ« edhe njĂ« Ă§ift ose minuta mĂ« parĂ«,
ju mund tĂ« thoni linja 16 Ă«shtĂ« duke krijuar njĂ« ndryshore tĂ« quajtur t
dhe kopjimi s nĂ« tĂ«.
Dhe kjo Ă«shtĂ« njĂ« mĂ«nyrĂ« tĂ« pĂ«rkryer takeaway arsyeshme.
Por tĂ« jenĂ« mĂ« tĂ« saktĂ« tani.
Ă‡farĂ« po ndodh nĂ« linjĂ« 16?
Ă‡farĂ« Ă«shtĂ« duke u kopjuar nga djathta nĂ« tĂ« majtĂ«?
Po?
Audienca: Ă«shtĂ« t duke marrĂ« njĂ« adresĂ« tĂ« s?
>> DAVID J. Malan: PikĂ«risht, t Ă«shtĂ« duke adresĂ«n e s.
Pra, tĂ« jetĂ« i qartĂ« tani, nĂ«se unĂ« shkoj pĂ«rsĂ«ri pĂ«r kĂ«tĂ« shembull mĂ« parĂ«
dhe unĂ« tĂ« nxjerr gjĂ« unĂ« kam shtypur nĂ«.
Dhe ajo qĂ« unĂ« kam shtypur in-- kĂ«tu Ă«shtĂ« s, dhe kĂ«tu
Ă«shtĂ« ajo qĂ« unĂ« kam shtypur nĂ« diku nĂ« kujtesĂ«s, mom dhe pastaj njĂ« backslash
0 qĂ« Ă«shtĂ« shtuar pĂ«r mua.
Ajo qĂ« unĂ« ruhet nĂ« kĂ«tu, kujtoj, kjo Ă«shtĂ« nĂ« vendin e 1, 2, 3, 4,
kjo Ă«shtĂ« ajo qĂ« Ă«shtĂ« aktualisht nĂ« s.
Pra, nĂ«se on line 16, unĂ« them mĂ« jep mua njĂ« tjetĂ«r variabĂ«l i quajtur t dhe dyqan
nĂ« tĂ« vlerĂ« prej s, ajo merr ruajtur kĂ«tu nuk do tĂ« mom
por vetĂ«m numri 1.
>> Pra, nĂ«se ne shikojmĂ« pĂ«rpara nĂ« kĂ«tĂ« program tani, Ă§farĂ« do tĂ« ndodhĂ«?
Pra, vini re se nuk ka ky funksion ju fuqi
e kanĂ« pĂ«rdorur kĂ«tĂ« disa kohĂ« mĂ« parĂ« pĂ«r Cezarit, ose Vigenere, apo ndoshta aspak.
UnĂ« pretendojnĂ« me printf tim, unĂ« jam duke shkuar pĂ«r tĂ« pĂ«rfituar kopja t.
SĂ« pari nĂ« linjĂ« 19, mendje e shĂ«ndoshĂ« tĂ« shpejtĂ« kontrolloni, kontrolle strlen gjatĂ«sinĂ« e t.
Sepse unĂ« nuk dua tĂ« pĂ«rpiqen pĂ«r tĂ« pĂ«rfituar diĂ§ka
nĂ« qoftĂ« se nuk ka asnjĂ« varg atje.
NĂ«se shfrytĂ«zuesi vetĂ«m hit Enter, nuk ka asgjĂ« pĂ«r tĂ« pĂ«rfituar.
KĂ«shtu qĂ« unĂ« nuk dua tĂ« bĂ«j linjĂ« 21.
Pra, linja 21 Ă«shtĂ« kapitalizuar e cila letĂ«r, me sa duket, nĂ« t?
>> Audienca: m?
DAVID J. Malan: Ajo duket si ajo e kopjimit tĂ« cilĂ«n njĂ«?
Audienca: m.
DAVID J. Malan: Uh, M.
OK, kĂ«shtu qĂ« m parĂ«, sepse njoftim qĂ« unĂ« jam
duke kaluar nĂ« toupper, e cila nĂ« qoftĂ« se ju kurrĂ« nuk kam parĂ« atĂ« Ă«shtĂ«
vetĂ«m njĂ« funksion tĂ« germa tĂ« mĂ«dha si input saj.
t kllapa zero do tĂ« thotĂ« tĂ« dhĂ«nĂ« mua karakteri zero t.
Dhe kĂ«shtu si e bĂ«n kĂ«tĂ« ndryshim foto, tĂ« jetĂ« i qartĂ«?
Ă‡farĂ« duhet tĂ« marrĂ« rishkruar apo ndryshuar nĂ« lidhje me s dhe t dhe mom
zero backslash.
>> Audienca: [padĂ«gjueshme]
>> DAVID J. Malan: Yeah, kĂ«shtu qĂ« kjo kĂ«tu thjesht
nevojĂ« pĂ«r tĂ« marrĂ« ndryshuar to-- rregulluar this-- nevojĂ« pĂ«r tĂ« marrĂ« ndryshuar pĂ«r njĂ« m kapitalit.
Por tani, tĂ« shohim mĂ« vonĂ« nĂ« Programi, nĂ« qoftĂ« se unĂ« tĂ« shtypura nga
s dhe t si unĂ« tĂ« pastĂ«r kĂ«tu, tĂ« shikojnĂ« se Ă§farĂ« Ă«shtĂ« do tĂ« ndodhĂ« shtypjen nga s dhe t.
Pra, tĂ« bĂ«jĂ« kopje-0, ./copy-0.
MĂ« lejoni tĂ« shkoj pĂ«rpara dhe tĂ« shtypni nĂ« mom nĂ« tĂ« gjitha Fjala.
Vini re dy origjinale dhe kopja janĂ« kapitalizuar.
PĂ«rse?
E pra, s dhe t janĂ« tĂ« dyja tĂ« treguar, nĂ« qoftĂ« se ju do, e njĂ«jta copĂ« e kujtesĂ«s.
Dhe sinqerisht, kjo Ă«shtĂ« duke u me tĂ« vĂ«rtetĂ« uninteresting-- faktin
qĂ« ne jemi duke pĂ«rdorur adresĂ«n zero kĂ«tu.
UnĂ« do tĂ« thotĂ«, unĂ« nuk e kujdesit tĂ« vĂ«rtetĂ« ku stuff Ă«shtĂ« nĂ« kujtesĂ«n.
Na vjen keq UnĂ« jam duke fshirĂ« njĂ« shumĂ« pak.
Por unĂ« nuk e kujdesit tĂ« vĂ«rtetĂ« ku gjĂ«rat janĂ« nĂ« kujtesĂ«n.
Dhe kĂ«shtu, me tĂ« vĂ«rtetĂ«, Ă§farĂ« programuesit kanĂ« tendencĂ« tĂ« mendojnĂ« pĂ«r
Ă«shtĂ« se kur ju flisni pĂ«r njĂ« adresĂ«, apo njĂ« tregues,
kush kujdeset ku ajo Ă«shtĂ« nĂ« kujtesĂ«.
UnĂ« nuk e kujdesit nĂ« qoftĂ« se Ă«shtĂ« nĂ« byte njĂ« ose njĂ« miliard.
UnĂ« vetĂ«m kujdes se kjo variabĂ«l Ă«shtĂ« efektivisht
duke treguar nĂ« atĂ« copĂ« e kujtesĂ«s.
Dhe kĂ«shtu, tani e tutje, nĂ« vend se bejne lojera fjalesh mbi kujtesĂ«s adresat arbitrare, le tĂ«
sapo tĂ« fillojĂ« tĂ« nxjerrĂ« pointers si pointers, si shigjeta.
Pra, Ă§farĂ« s dhe t vĂ«rtetĂ« janĂ«, sipas kĂ«tij programi,
pĂ«r shkak tĂ« asaj se si kam krijuar t, kjo Ă«shtĂ« vetĂ«m dy variablave tĂ« veĂ§anta
vĂ«nĂ« nĂ« tĂ« njĂ«jtĂ«n copĂ« tĂ« memories.
Dhe ne nuk e kujdesit se ku janĂ« ata.
Pra, ne mund abstrakte larg asaj detaje.
>> Pra, si mund ta fix this?
NĂ«se unĂ« dua tĂ« shkruaj njĂ« version tĂ« kopjes program qĂ« nĂ« fakt kopje string
dhe kapitalizon vetĂ«m kopje, vetĂ«m intuitive,
ajo e mori tĂ« jetĂ« njĂ« pĂ«rbĂ«rĂ«s tĂ« zgjidhje tonĂ«?
Audienca: [padĂ«gjueshme]
DAVID J. Malan: Ne kemi nevojĂ« pĂ«r Ă§farĂ«?
Audienca: copĂ« e kujtesĂ«s.
DAVID J. Malan: Ne kemi nevojĂ« pĂ«r njĂ« tjetĂ«r copĂ« e kujtesĂ«s, e drejtĂ«?
Ne nuk e dimĂ« se si pĂ«r tĂ« bĂ«jĂ« atĂ« ende, domosdoshmĂ«risht.
Por unĂ« lloj i duhet kjo tĂ« ndodhĂ« kĂ«shtu se nĂ«na origjinal nĂ« rastin mĂ« tĂ« ulĂ«t
pĂ«rfundon nĂ« atĂ« copĂ« shtesĂ« e kujtesĂ«s.
Dhe pastaj kur unĂ« tĂ« ndryshojĂ« kopje, unĂ« nuk duan tĂ« ndryshojnĂ« kĂ«tĂ« kopje kĂ«tu.
UnĂ« nĂ« vend qĂ« dua tĂ« ndryshojĂ« vetĂ«m kĂ«tĂ« kopje nĂ« mĂ«nyrĂ« qĂ« origjinali Ă«shtĂ« i pandryshuar.
>> Pra, le tĂ« shohim se si ne mund tĂ« bĂ«jmĂ« kĂ«tĂ«.
NĂ« kopje-1, e cila ka tashmĂ« Ă«shtĂ« zhveshur nga komenti,
por Ă«shtĂ« komentuar online.
Ne vend bĂ«jmĂ« tĂ« following-- kĂ«to Linjat janĂ« identike, tĂ« merrni mua njĂ« varg
dhe e quajti atĂ« s.
Por tani le tĂ« shohim nĂ« njĂ« nga mĂ« tĂ« tona komplekse por e fundit e kompleksitetit
pĂ«r pak kohĂ«, linja 16 e bĂ«n pikĂ«risht kĂ«tĂ«.
Pra, nĂ«se i qetĂ« juaj me foto ne vetĂ«m drew--
mĂ« jepni njĂ« copĂ« e re e kujtesĂ«s, kopjoni Ă§do gjĂ« nĂ« tĂ«,
le tĂ« shohim se si ne tĂ« pĂ«rkthehet se tĂ« kodit.
>> Pra linjĂ« 16, nĂ« anĂ«n e majtĂ«, char * t ma jep kĂ«tĂ« kuti mbi kĂ«tu.
Kjo Ă«shtĂ« e gjitha ajo ka.
NĂ« anĂ«n e djathtĂ«, m alloc, ose malloc,
Ă«shtĂ« kujtese, super tĂ« dashuroj, njĂ« mĂ«nyrĂ« e fshehtĂ« e vetĂ«m duke thĂ«nĂ«
mĂ« jepni njĂ« copĂ« e kujtesĂ«s.
Sa memorie nuk kemi nevojĂ«?
E pra, Ă«shtĂ« lloj i njĂ« shprehje tĂ« madhe.
Por le tĂ« shohim se Ă§farĂ« do tĂ« thotĂ« kĂ«tu.
Pra kjo, natyrisht, Ă«shtĂ« tĂ« japĂ« mua gjatĂ«sia varg s.
Pra, nĂ«na ajo duhet tĂ« jetĂ« ajo?
Pra, vetĂ«m tre, apo jo? nĂ«na Ă«shtĂ« tre karaktere.
Ju nuk numĂ«roni backslash zero kur ju
flasin pĂ«r gjatĂ«sinĂ« e njĂ« varg kjo Ă«shtĂ« Aktualisht letra dukshme njerĂ«zore.
Pra nĂ«na, kĂ«shtu qĂ« kjo mĂ« jep 3.
Por prisni njĂ« minutĂ«, unĂ« jam tani duke shtuar 1.
PĂ«rse tĂ« vĂ«rtetĂ« duan tĂ« ndajĂ« 4 bytes dhe jo vetĂ«m 3?
Po?
>> Audienca: PĂ«r vlerĂ«n sentinel?
>> DAVID J. Malan: PikĂ«risht, pĂ«r kĂ«tĂ« vlerĂ« sentinel.
PĂ«r backslash zero, UnĂ« kam nevojĂ« pĂ«r 4 bytes gjithsej.
KĂ«shtu qĂ« kam nevojĂ« pĂ«r gjatĂ«sinĂ« e vargut plus 1.
Dhe pastaj vetĂ«m pĂ«r measure-- mirĂ« edhe pse nĂ« kĂ«tĂ« sistem,
ajo gjithmonĂ« do tĂ« jetĂ« 1-- unĂ« jam duke thĂ«nĂ« shumohen kjo nga madhĂ«sia e njĂ« char.
Rezulton se sizeof Ă«shtĂ« njĂ« operator nĂ« C qĂ«
vetĂ«m ju e tregon Numri i bytes kjo Ă«shtĂ«
e nevojshme pĂ«r njĂ« lloj tĂ« caktuar tĂ« tĂ« dhĂ«nave.
Ajo nuk punon pĂ«r vargjeve, nĂ« mĂ«nyrĂ« tipike, nganjĂ«herĂ« ajo bĂ«n.
Por nĂ« rastin e pĂ«rgjithshĂ«m, nr.
Por kjo do tĂ« mĂ« thoni se sa bytes njĂ« char Ă«shtĂ«, qĂ« rezulton Ă«shtĂ« gjithmonĂ« 1.
Pra, kjo Ă«shtĂ« si tĂ« shumĂ«zuar me 1.
>> Linja Pra, super i fshehtĂ« nĂ« kĂ«rkim tĂ« kodit.
Por e gjithĂ« kjo nuk Ă«shtĂ« e jep mua njĂ« copĂ« e kujtesĂ«s.
Por nuk duket tĂ« jetĂ« kopjimin Ă§do gjĂ« nĂ« atĂ« kujtim?
Ende.
Dhe kĂ«shtu Ă§farĂ« unĂ« on line 22, dhe 23, 24, 25, mirĂ«, unĂ« thjesht bĂ«j kĂ«tĂ«.
Dhe kjo Ă«shtĂ« lloj i sende tĂ« vjetĂ«r e shkollĂ«s tani.
Kjo Ă«shtĂ« si pset 2, ku ju jeni vetĂ«m duke lĂ«vizur gjĂ«rat
rreth nĂ« kujtesĂ«, ose mĂ« mirĂ« nĂ« vargjet.
>> KĂ«shtu qĂ« unĂ« jam iterating nga 0 deri nĂ« gjatĂ«sia e vargut s.
Dhe unĂ« jam kopjimi karakterin i-th nĂ« s nĂ« karakterin i-tĂ« nĂ« t.
Dhe pĂ«r shkak se unĂ«, programues, bĂ«ri Sigurohuni qĂ« tĂ« ndajĂ« saktĂ«sisht sa mĂ« shumĂ« bytes
si kam nevojĂ«, Ă«shtĂ« e pĂ«rsosur njĂ«-pĂ«r-njĂ« marrĂ«dhĂ«nie.
Dhe unĂ« kopje mom nĂ« vogle pĂ«r njĂ« tĂ« ri.
Dhe pastaj nĂ« fund, unĂ« e bĂ«j kĂ«tĂ« linjĂ«.
Dhe kĂ«shtu qĂ« efekti Ă«shtĂ« vetĂ«m pĂ«r tĂ« pĂ«rfituar kĂ«tĂ« t kĂ«tu.
Pra, shumĂ« pĂ«r tĂ« absorbuar, por nĂ« qoftĂ« se ju vetĂ«m tĂ« marrin nĂ« konsideratĂ«
Ă§farĂ« po ndodh nĂ« nĂ«n kapuĂ§
Ă«shtĂ« vetĂ«m duke lĂ«vizur kĂ«to bytes pĂ«rreth, tĂ« gjithĂ« qĂ«
Ă«shtĂ« e nevojshme pĂ«r tĂ« zgjidhur kĂ«tĂ« problem Ă«shtĂ« vetĂ«m pĂ«r tĂ« na dhĂ«nĂ« kĂ«tĂ« copĂ« e kujtesĂ«s.
Tani nĂ« rrezikun e madhe, mĂ« lejoni tĂ« tregoj
NjĂ« shembull tjetĂ«r qĂ« Ă«shtĂ« pothuajse identik, pĂ«rveĂ§ pĂ«r kĂ«tĂ« njĂ«
linjĂ« e kodit.
Pra, ky Ă«shtĂ« versioni hacker e kĂ«tij programi, nĂ«se ju do.
Por le tĂ« vetĂ«m tĂ« gjej ajo nĂ« Ă§farĂ« po ndodh.
Linja 24 pĂ«rdoret pĂ«r tĂ« jetĂ« kjo t kllapa i merr s kllapa unĂ«.
Tani, unĂ« jam duke ndryshuar kĂ«tĂ« pĂ«r aq shumĂ« tĂ« mĂ« fshehtĂ« t yll
plus 1 barabartĂ« yll s plus 1.
>> Pra, Ă§farĂ« po ndodh dhe pse nuk kemi njĂ« karakter yll?
Ne e kemi parĂ« yllin mĂ« parĂ«, dhe ajo Ă«shtĂ« duke u pĂ«rdorur nĂ« mĂ«nyra tĂ« ndryshme kĂ«tu.
Ne mĂ« parĂ« pamĂ« char *, tani unĂ« jam duke parĂ« NjĂ« yll nĂ« fillim, dhe kjo Ă«shtĂ« nĂ« rregull.
Sepse ajo rezulton ne lloj frymĂ«rash nuk mund tĂ« konkludoj vetĂ«m
nga ato parĂ« Parimet Ă§farĂ« po ndodh.
Pra, vetĂ«m tĂ« jetĂ« i qartĂ«, ajo qĂ« Ă«shtĂ« s?
JavĂ«n e kaluar, ajo ishte njĂ« varg.
Kjo nuk mjafton mĂ«.
Ă‡farĂ« Ă«shtĂ« s, konkretisht?
>> Audienca: [padĂ«gjueshme]
>> DAVID J. Malan: Kjo Ă«shtĂ« njĂ« akrep.
Kjo Ă«shtĂ« adresa e karakteri i parĂ« ne shtypur nĂ«.
OK, ajo qĂ« Ă«shtĂ« t?
>> Audienca: [padĂ«gjueshme]
>> DAVID J. Malan: The adresĂ«n e bajt parĂ«
nĂ« t, atĂ« copĂ« e kujtesĂ«s rialokuar.
Pra, rezulton se kur ne iterate nga 0 deri nĂ« vargun
length-- para sĂ« gjithash, unĂ« fillon nĂ« 0, sepse
e kĂ«saj shkolle tĂ« vjetĂ«r pĂ«r njĂ« gjĂ« tĂ« loop.
Pra, vetĂ«m pĂ«r thjeshtĂ«si, le tĂ« supozojmĂ« se rreshtin e parĂ« tĂ« kodit
Ă«shtĂ« me tĂ« vĂ«rtetĂ« vetĂ«m kjo, e drejtĂ«.
NĂ«se i Ă«shtĂ« zero, duke shtuar zero diĂ§ka me sa duket
nuk do tĂ« ketĂ« njĂ« efekt.
>> Pra, Ă§farĂ« Ă«shtĂ« kjo thĂ«nie?
Ajo rezulton se ylli operator nĂ« kĂ«tĂ« kontekst
Ă«shtĂ« dereference operator, i cili Ă«shtĂ« vetĂ«m
njĂ« mĂ«nyrĂ« e sofistikuar pĂ«r tĂ« thĂ«nĂ« tĂ« shkojĂ« nĂ« adresĂ«n e mĂ«poshtme.
Pra, nĂ«se s Ă«shtĂ« adresa e parĂ« karakter nĂ« kĂ«tĂ« copĂ« e kujtesĂ«s,
* s do tĂ« thotĂ« tĂ« shkojĂ« atje.
Dhe pĂ«r shkak se ne kemi tĂ«rhequr fotografia nĂ« kĂ«tĂ« mĂ«nyrĂ«,
ju mund tĂ« miratojĂ« duke ndjekur modelin mendor.
NĂ«se kjo Ă«shtĂ« s, dhe ju thoni * s, * s lloj si Chutes dhe Ladders,
nĂ« qoftĂ« se ju kujtohet lojĂ« nga fĂ«mijĂ«ria, Ă«shtĂ« si tĂ« ndjekin atĂ« shigjetĂ« dhe shkoni
nĂ« adresĂ«n.
>> * t Ă«shtĂ« e njĂ«jta gjĂ«.
Pra, fillojĂ« kĂ«tu, shkoni nĂ« copĂ« tĂ« saj.
UnĂ« nuk mund tĂ« nxjerrĂ« nĂ« ky ekran nĂ« kĂ«tĂ« mĂ«nyrĂ«.
* t do tĂ« thotĂ« pĂ«r tĂ« shkuar kĂ«tu.
Dhe pastaj, pĂ«r lak Ă«shtĂ« vetĂ«m duke thĂ«nĂ« lĂ«vizur kĂ«tĂ« karakter kĂ«tu,
lĂ«vizur kĂ«tĂ« karakter kĂ«tu, lĂ«vizur kĂ«tĂ« karakter kĂ«tu.
Por si mund ta bĂ«j kĂ«tĂ« Incrementation?
UnĂ« kam nevojĂ« pĂ«r tĂ« ndrequr atĂ« qĂ« unĂ« sapo fshihet.
Kjo Ă«shtĂ« ajo qĂ« quhet pĂ«rgjithĂ«sisht aritmetike akrep, e cila
nĂ«nkupton matematikĂ« me adresat.
>> NĂ«se, nĂ« kĂ«tĂ« pĂ«r lak, UnĂ« mbaj bĂ«n rritjen I,
dhe s Ă«shtĂ« njĂ« adresĂ« dhe t Ă«shtĂ« njĂ« adresa, nĂ« qoftĂ« se unĂ« vetĂ«m i mbajnĂ« duke shtuar 1,
qĂ« vetĂ«m do tĂ« thotĂ« tĂ« mbajtur lĂ«vizur pĂ«rpara, dhe pĂ«rpara, dhe pĂ«rpara nĂ« kujtesĂ«n.
Ă‹shtĂ« si Oxford Street, rrugĂ« se ndĂ«rtesa CS Ă«shtĂ« nĂ«.
NdĂ«rtesat CS Ă«shtĂ« nĂ« 33 Oxford Street.
Pra, nĂ«se ju do tĂ« bĂ«ni 33 Oxford Street plus 1,
qĂ« ju sjell nĂ« 34 Oksford Rruga, atĂ«herĂ« 35 Oxford Street,
pastaj 36 Oxford Street, Ă§farĂ«do qĂ« ata NdĂ«rtesat nĂ« fakt janĂ« - nĂ« qoftĂ« se ato ekzistojnĂ«.
Dhe kĂ«shtu, kjo Ă«shtĂ« e gjitha ne jemi duke bĂ«rĂ« kĂ«tu me akrep aritmetikĂ«.
>> Pra, kjo Ă«shtĂ« njĂ« mĂ«nyrĂ« super misterioze tĂ« shprehur veten.
Por e gjithĂ« kjo po ndodh nĂ«n kapuĂ§
Ă«shtĂ« vetĂ«m ndjekur kĂ«to adresa, si pas njĂ« hartĂ«, nĂ« qoftĂ« se ju do tĂ«,
ose pas shigjeta si ne kemi tĂ«rhequr nĂ« ekran.
OK, njĂ« shumĂ« pĂ«r tĂ« tretet.
Ă‡do pyetje nĂ« sintaksĂ«, konceptet, pointers, malloc, ose si.
Po, kĂ«tu pĂ«r herĂ« tĂ« parĂ«.
>> Audienca: Pra, ku qĂ« thotĂ« se * t barabartĂ« toupper * t,
Ă«shtĂ« se duke shkuar pĂ«r tĂ« pĂ«rfituar tĂ« gjitha letrat apo just--
>> DAVID J. Malan: Ah, pyetje me tĂ« vĂ«rtetĂ« mirĂ«.
Pra, nĂ« kĂ«tĂ« linjĂ« kĂ«tu, 31, Ă«shtĂ« kjo do tĂ« kapitalizojĂ«
Letra e parĂ« ose tĂ« gjitha letrat.
Pra, le tĂ« pĂ«rgjigjen se duke shkuar Mbrapsht nĂ« parimet e parĂ«.
Dhe parimet e para kĂ«tu dua tĂ« them thjesht shkoni pĂ«rcaktimeve themelore
e Ă§farĂ« Ă«shtĂ« e pĂ«rfshirĂ«.
Pra toupper Ă«shtĂ« njĂ« funksion qĂ« kontribuon njĂ« char.
Kjo eshte e gjitha.
* t do tĂ« thotĂ« tĂ« shkojnĂ« nĂ« first-- shkoni nĂ« adresĂ«n nĂ« t.
Pra, nĂ« foto, nĂ« qoftĂ« se kjo Ă«shtĂ« copĂ« e kujtesĂ«s kemi ndarĂ« me malloc,
dhe kjo Ă«shtĂ« t, * t do tĂ« thotĂ« shkoni kĂ«tu.
>> NdĂ«rkohĂ«, ju jeni duke kaluar qĂ« vlera, M vogle
pĂ«r toupper, ju jeni duke u kthyer Kapitali M, ku ju vĂ«nĂ« atĂ«?
Ju jeni duke e vĂ«nĂ« atĂ« nĂ« tĂ« njĂ«jtin lokacion.
Dhe kĂ«shtu nga kjo logjikĂ« e atyre pĂ«rkufizimet themelore kjo Ă«shtĂ« vetĂ«m
kapitalizuar letrĂ«n e parĂ« nĂ«se ju iterate me I ose njĂ«
pĂ«r lak ose njĂ« lak, ndĂ«rsa, kjo nuk po ndodh pĂ«r tĂ« bĂ«rĂ« asgjĂ« mĂ« shumĂ« se ju kĂ«rkoni atĂ«.
Pyetje e mirĂ«.
Po?
>> Audienca: Pse ju pĂ«rdorni dereference metodĂ« jo
array?
>> DAVID J. Malan: Ah, pyetje e mirĂ«.
Pse do tĂ« ju pĂ«rdorni dereference Metoda vend tĂ« metodĂ«s vektorit?
Nuk ka arsye tĂ« veĂ§antĂ«, tĂ« jetĂ« i sinqertĂ«.
Dhe, nĂ« fakt, pĂ«r kĂ«tĂ« lloj shembull, tĂ« drejtĂ«,
UnĂ« jam vetĂ«m duke argumentuar duke e bĂ«rĂ« Programi mĂ« tĂ« komplikuara,
mĂ« shumĂ« sytĂ« janĂ« mbi lustrim, njerĂ«zit janĂ« tĂ« kontrolluar nga
sepse kjo duket super misterioze, por edhe pse ajo Ă«shtĂ« duke bĂ«rĂ« tĂ« njĂ«jtĂ«n gjĂ«.
Dhe kĂ«shtu, sinqerisht, ky Ă«shtĂ« njĂ« zgjidhje tĂ« panevojshme vizualisht kompleks
pĂ«r problemin.
>> Ă‹shtĂ« ende dizajn tĂ« mirĂ«, pesĂ« nga pesĂ« pĂ«r dizajn,
nĂ«se kjo Ă«shtĂ« nĂ« kllapa simbol apo simbol pointer.
But-- sidomos kur marrim mĂ« vonĂ« gjatĂ« nĂ« pset 5
kur ne zbatimin qĂ« fjalorin qĂ« UnĂ« e kam pĂ«rmendur disa Times--
ne fakt do tĂ« kujdesen pĂ«r nivelit tĂ« ulĂ«t adresat e kujtesĂ«s
qĂ« ne me tĂ« vĂ«rtetĂ« e kuptojmĂ« Ă‡farĂ« po ndodh.
>> Por, tani pĂ«r tani, rezulton se ky linjĂ« e kodit kllapa katrore kĂ«tu
tĂ« vĂ«rtetĂ« nuk ekzistojnĂ«.
Ata janĂ« atĂ« qĂ« quhet sheqer sintaktik, e cila
Ă«shtĂ« vetĂ«m njĂ« mĂ«nyrĂ« tĂ« Ă§uditshme tĂ« ftohtĂ« e duke thĂ«nĂ« se pĂ«rpilues konverton kllapa katrore tĂ« jetĂ«
kjo shprehje matematikore.
Pra, kjo Ă«shtĂ« njĂ« konventĂ« e njeriut tĂ« jenĂ« nĂ« gjendje pĂ«r tĂ« vetĂ«m tĂ« shkruar
kĂ«to shumĂ« user-friendly kllapa.
Por ajo qĂ« pĂ«rpiluesit, tingĂ«llimĂ«, Ă«shtĂ« me tĂ« vĂ«rtetĂ« duke bĂ«rĂ« nĂ« Ă§do kohĂ«
ju shkruani se Ă§farĂ« Ă«shtĂ« theksuar nĂ« linjĂ« 24, nĂ«n kapuĂ§ Ă«shtĂ« e vĂ«rtetĂ«
konvertimin e tij nĂ« kĂ«tĂ«.
Ă‹shtĂ« vetĂ«m mĂ« tĂ« pĂ«lqyeshĂ«m si njĂ« njeri tĂ« lexojnĂ« dhe shkruajnĂ« kod si linjĂ« 24.
Por nĂ« fund ata rrota trajnimit shumĂ« tĂ« vijnĂ« off
kur dikujt ngushĂ«llim vetĂ« merr tĂ« fortĂ«.
>> TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu kujtohet atĂ«herĂ« qĂ« kjo ishte lloj i problemit mĂ« tĂ« madh
ne u pĂ«rplas.
Dhe kjo Ă«shtĂ« ajo qĂ« shkaktoi kĂ«tĂ« tĂ«rĂ«si bisedĂ« mallkim pĂ«r pointers,
dhe adresat, dhe kopjimi gjĂ«ra.
Kjo ishte pĂ«r shkak se ne morĂ«n mbi kjo budalla, budalla Ă§Ă«shtje, ku
I zbatuar logically-- me Lauren deri kĂ«tu nĂ« demo dhe lĂ«ng portokalli
nĂ« milk-- njĂ« mĂ«nyrĂ« tĂ« pĂ«rkryer Funksioni algoritmikisht e saktĂ«
pĂ«r shkĂ«mbejnĂ« dy variabla ' Vlerat, por gjĂ«ja mallkuar
nuk ka pasur asnjĂ« tĂ« vazhdueshme, ose i pĂ«rhershĂ«m, efekti nĂ« kodin tim.
>> Dhe pse ishte ajo?
NĂ« pak fjalĂ«, pse Ă«shtĂ« kjo zbatimi i swap
logjikisht e saktĂ«, por nuk ka asnjĂ« ndikim mbi variablat qĂ« janĂ« kaluar me tĂ«,
si x dhe y pĂ«r kryesor?
Cili ishte thelbi i Ă§Ă«shtjes?
Po?
Audienca: Sepse ndryshueshme bĂ«rĂ« kopje tĂ« ndryshueshme nĂ« tĂ« kalojĂ«
pĂ«rmes funksionit.
>> DAVID J. Malan: PikĂ«risht, kur ju tĂ« kalojĂ« Ndryshoret nĂ« njĂ« funksion, apo argumentet
nĂ« njĂ« funksion, ata janĂ« miratuar nga kopje, tĂ« cilat
do tĂ« thotĂ« qĂ« ju tĂ« merrni njĂ« identik kĂ«rkim model i bit pĂ«r tĂ« dy X dhe Y,
quajtur kĂ«tu a dhe b.
Dhe ju mund tĂ« bĂ«ni asgjĂ« ju doni me kĂ«to kopje,
por ata do tĂ« kenĂ« asnjĂ« efekt nĂ« funksionin e quajtur.
Dhe, nĂ« fakt, ne tĂ«rhoqi atĂ« fotografia nĂ« ekran, risjell
HerĂ«n e fundit, ku nĂ« qoftĂ« se ju me tĂ« vĂ«rtetĂ« mendoni se Ă§ka Ă«shtĂ«
ndodh nĂ«n hood-- nĂ«se kjo Ă«shtĂ« memorie kompjuteri juaj,
dhe kĂ«tu poshtĂ« Ă«shtĂ« copĂ« e kujtesĂ«s duke u pĂ«rdorur pĂ«r kryesor,
kjo Ă«shtĂ« copĂ« e kujtesĂ«s duke u pĂ«rdorur pĂ«r shkĂ«mbim,
dhe kĂ«shtu qĂ« edhe nĂ«se kryesor ka dy variablat, x dhe y,
shkĂ«mbim mund tĂ« ketĂ« identike kĂ«rkim vlerat, dy nga tĂ« cilat janĂ« 1 dhe 2,
por ata janĂ« plotĂ«sisht chunks tĂ« ndryshme tĂ« kujtesĂ«s.
>> Pra, ne kemi nevojĂ« pĂ«r njĂ« zgjidhje pĂ«r kĂ«tĂ«.
Dhe sinqerisht, kjo do tĂ« duket se ne tani kanĂ« njĂ« zgjidhje pĂ«r kĂ«tĂ« problem, e drejtĂ«.
NĂ« qoftĂ« se ne tani kemi aftĂ«sinĂ« pĂ«r manipuluar gjĂ«rat me anĂ« tĂ« adresave
dhe, lloj Chutes dhe Shkalle stil, ndiqni kĂ«to shigjeta
dhe shkoni kudo ne duam nĂ« kujtesĂ«, nuk mund tĂ« kemi
zgjidhur kĂ«tĂ« problem duke duke kaluar nga kryesore tĂ« bie nĂ« ujdi
jo vlerat qĂ« ne duam tĂ« shkĂ«mbim, por vetĂ«m intuitive
Ă§farĂ« mund tĂ« kalojĂ« tĂ« bie nĂ« ujdi nĂ« vend?
>> [NdĂ«rhynte ZĂ‹RA]
>> DAVID J. Malan: Pse nuk vetĂ«m kalojĂ« ajo adresat, e drejtĂ«?
Pse nuk japin shkĂ«mbim njĂ« Harta thesar, nĂ« qoftĂ« se ju do tĂ«,
qĂ« tĂ« Ă§on atĂ« nĂ« vlerat x dhe y. aktuale
Le tĂ« bie nĂ« ujdi, nĂ« tĂ« vĂ«rtetĂ« tĂ« ndryshojĂ« ato pjesĂ« origjinale, nĂ« vend se
vetĂ«m duke kaluar kopjet e copa.
Dhe kĂ«shtu, nĂ« fakt, kjo Ă«shtĂ« ajo qĂ« Ă«shtĂ« do tĂ« jetĂ« zgjidhje.
Ky version kĂ«tu Ă«shtĂ« nĂ« mĂ«nyrĂ« tĂ« qartĂ« e keqe dhe me tĂ« meta.
Dhe tani, nĂ« shikim tĂ« parĂ«, ajo vetĂ«m duket si kemi shtuar njĂ« bandĂ« e yjeve rastĂ«sisht
dhe kaloi gishtat tonĂ« se ai do tĂ« hartojnĂ«.
Por, ajo tani do tĂ« hartojnĂ«.
>> Por le tĂ« shohim se Ă§farĂ« kuptimi kanĂ« kĂ«to gjĂ«ra.
Dhe, pĂ«r fat tĂ« keq, autorĂ«t e C mund tĂ« kishte zgjedhur njĂ« tjetĂ«r simbol
pĂ«r tĂ« bĂ«rĂ« kĂ«tĂ« pak qartĂ«, por operatori ylli
ka kuptim tĂ« ndryshĂ«m nĂ« dy kontekste tĂ« ndryshme.
Dhe ne kemi parĂ« tĂ« dy, por le tĂ« dalluar.
>> Pra, deri nĂ« krye atje, kur unĂ« kam ndryshuar dhe b
nga tĂ« qenit int nĂ« tĂ« kĂ«qija version tĂ« int yje, a dhe b,
mĂ« parĂ«, ishin tĂ« integers.
Cilat janĂ« A dhe B tani nĂ« e mira version, tĂ« gjelbĂ«r?
Ata janĂ« adresat.
Adresat e Ă§farĂ«, qĂ« tĂ« jetĂ« i qartĂ«?
Adresat e integers.
Pra, fakti qĂ« unĂ« jam duke thĂ«nĂ« se do tĂ« thotĂ« yll int
kjo Ă«shtĂ« adresa e njĂ« numĂ«r tĂ« plotĂ«, nĂ« mĂ«nyrĂ« tĂ« veĂ§antĂ«.
>> Deri tani vini re nĂ« rreshta tĂ« kodit, diĂ§ka tjetĂ«r ka ndryshuar shumĂ«.
TMP qĂ«ndron e njĂ«jtĂ«, sepse kjo Ă«shtĂ« vetĂ«m numĂ«r i plotĂ« i pĂ«rkohshĂ«m,
nuk ka magji kujtim atje.
Por njĂ« tani ka nevojĂ« pĂ«r njĂ« yll.
Dhe, nĂ« fakt, Ă§do pĂ«rmendje tĂ« tjera tĂ« A dhe B,
vini re se tĂ« gjitha qĂ« Ă«shtĂ« e ndryshon nga e kuqe nĂ« tĂ« gjelbĂ«r
Ă«shtĂ« se unĂ« jam prefixing kĂ«to variabla me yjet.
Sepse unĂ« nuk dua tĂ« kopjoni a dhe b.
Sepse nĂ« qoftĂ« se unĂ« thjesht kopjoni njĂ« dhe b dhe swap a dhe b, Ă§farĂ« jam unĂ« nĂ« fakt shkĂ«mbejnĂ«?
VetĂ«m adresat, unĂ« dua tĂ« bie nĂ« ujdi Ă§farĂ« Ă«shtĂ« nĂ« ato adresa.
Dua te shkoj atje.
Dhe kĂ«shtu operatori yll brenda funksionit tim,
jo brenda listĂ«s sĂ« parametrave, do tĂ« thotĂ« qĂ« ju tĂ« shkoni nĂ« kĂ«to adresa
dhe nĂ« fakt tĂ« ndryshojĂ« kĂ«to vlera.
>> Pra, Ă§farĂ« e bĂ«n foton tani duken si nĂ« vend.
E pra, nĂ« qoftĂ« se nĂ« vend tĂ« kĂ«saj unĂ« jam duke kaluar nĂ« pĂ«r njĂ« dhe B nuk 1 dhe 2--
UnĂ« nĂ« fakt duhet tĂ« shtoni njĂ« pĂ«rkufizim tjetĂ«r kĂ«tu.
Pra, mendoj se kĂ«tĂ« copĂ« e kujtesĂ«s Ă«shtĂ« nĂ« vend tĂ« 10.
>> Kjo Ă«shtĂ« nĂ« vend tĂ« 11, por kjo Ă«shtĂ« pak e njĂ« thjeshtĂ«sim,
UnĂ« tani kanĂ« dy zgjedhje bĂ«j unĂ« kaloj x dhe y ose mund ta kaloj adresat e tyre?
NĂ«se unĂ« tĂ« kalojĂ« adresat e tyre si kjo, unĂ« vetĂ«m
tani duhet tĂ« zbatojĂ« swap sipas kodit tĂ« gjelbĂ«r
kĂ«shtu qĂ« kur ajo e sheh njĂ« dhe kur ajo sheh b, ai nuk ka vetĂ«m tĂ« kopjoni a dhe b
dhe lĂ«vizur qumĂ«sht dhe lĂ«ng portokalli.
QumĂ«sht dhe lĂ«ng portokalli metaforĂ« tani prishet,
sepse ato janĂ« gota e hartave tĂ« lĂ«ngshme dhe jo.
Ne kemi nĂ« vend tĂ« kĂ«saj duhet tĂ« shkoni pĂ«r tĂ« adresuar 10 dhe
duhet tĂ« shkoni pĂ«r tĂ« adresuar 11, dhe pastaj tĂ« kryejĂ« kĂ«tĂ« logjikĂ« shkĂ«mbejnĂ«.
>> Pra, logjika Ă«shtĂ« e njĂ«jtĂ«, por ne kemi nevojĂ« pĂ«r njĂ« mĂ«nyrĂ« pak mĂ« tĂ« ndryshme
e qasjes atyre variablave.
Dhe kĂ«shtu nĂ« fund, Ă§farĂ« Programi ka pĂ«r tĂ« parĂ« si Ă«shtĂ« kjo.
NĂ« swap.c kopjuar fjalĂ« pĂ«r fjalĂ« dhe ngjit versionin e gjelbĂ«r.
Por kam nevojĂ« pĂ«r tĂ« bĂ«rĂ« njĂ« ndryshim.
Kjo nuk Ă«shtĂ« e mjaftueshme vetĂ«m pĂ«r tĂ« ndryshuar swap.
Ă‡farĂ« linja tĂ« tjera tĂ« kodit nuk kam nevojĂ« pĂ«r tĂ« ndryshuar?
Po?
>> Audienca: Aty ku ajo merr argumentet.
>> DAVID J. Malan: Ku ajo merr argumentin e saj.
Pra, nĂ«se unĂ« lĂ«viz deri nĂ« kryesor, unĂ« nuk mund vetĂ«m tĂ« kalojĂ« nĂ« x dhe y,
dhe, unĂ« premtoj, i fundit pjesĂ« e sintaksĂ« tĂ« re sot.
UnĂ« kam nevojĂ« pĂ«r tĂ« kaluar nĂ« jo x dhe y por adresa e x dhe y.
Dhe kjo rezulton, simbolin se autorĂ«t e C zgjodhi
Ă«shtĂ« nĂ« qoftĂ« se ju pĂ«rdorni njĂ« 'e kĂ«tu, pĂ«r tĂ« mos tĂ« ngatĂ«rrohet me simbolin komercial bitwise,
nĂ« qoftĂ« se ju pĂ«rdorni njĂ« 'e kĂ«tu dhe njĂ« simbol kĂ«tu,
kjo kupton pĂ«r ju, Ă§farĂ« Ă«shtĂ« adresa e X,
ndoshta kjo Ă«shtĂ« 10, Ă§farĂ« Ă«shtĂ« adresa e y, ndoshta Ă«shtĂ«
11, dhe kalon ato nĂ« vend.
>> Pra, shumĂ« pĂ«r tĂ« absorbuar tĂ« gjitha pĂ«rnjĂ«herĂ«.
Por le tĂ« shohim tani shpejt nĂ« tona katĂ«r minuta tĂ« mbetura
ku gjĂ«rat mund tĂ« shkojnĂ« shtrembĂ«r.
Dhe si njĂ« mĂ«njanĂ«, nĂ« tĂ« vĂ«rtetĂ« Mora kĂ«tĂ« foto,
TF mori kĂ«tĂ« foto njĂ« vit apo dy mĂ« parĂ«.
Pra, kjo Ă«shtĂ« kĂ«ndi prapa i Eliot Dining Hall.
Pointers janĂ« ndoshta mĂ« tĂ« vĂ«shtirat temĂ« qĂ« ne tĂ« mbuluar nĂ« CS50.
Pra, nĂ«se keni merak lloj i pjerrĂ«sisĂ« Ă«shtĂ« si ndoshta Ă«shtĂ«
mĂ« shumĂ« njĂ« shkop hokej si kjo, tĂ« kuptojĂ«
ne jemi lloj i afrohet njĂ« kulm nĂ« kushtet e kompleksitetit konceptuale.
>> Dhe nxjerr kĂ«tĂ« foto, sepse unĂ« betohem
PerĂ«ndia, nĂ« vjeshtĂ« tĂ« vitit 1996, kur mora CS50 me shokĂ«t time tĂ« mĂ«simdhĂ«nies,
Nishat Mehta, ai u ul mĂ« poshtĂ« nĂ« qoshe e Eliot D. SallĂ«n gjatĂ« drekĂ«s,
apo darkĂ«, apo diĂ§ka tĂ« provoni pĂ«r tĂ« ndihmuar mua tĂ« kuptoj pointers.
Dhe ky Ă«shtĂ« vendi ku unĂ« kam qenĂ« javĂ« pas ajo u prezantua nĂ« leksion kur Ă«shtĂ«
UnĂ« mĂ« nĂ« fund e kuptoi pointers.
Dhe unĂ« jam me shpresĂ« se kjo do tĂ« klikoni larg mĂ« shpejt pĂ«r ju.
Por e kuptojnĂ« kĂ«tĂ« absolutisht ndĂ«r temat mĂ« tĂ« sofistikuara
ne kemi shikuar.
Por kjo Ă«shtĂ« ndĂ«r mĂ« tĂ« fuqishme.
Dhe kur ju tĂ« merrni atĂ«, kjo Ă«shtĂ« me tĂ« vĂ«rtetĂ« tĂ« gjithĂ« vetĂ«m do tĂ« nĂ« fund tĂ« vijnĂ« sĂ« bashku.
Pra, pjesa tjetĂ«r e siguroi se nuk ka nevojĂ« pĂ«r tĂ« gjitha lavaman nĂ« sot.
>> KĂ«shtu qĂ« kĂ«tu Ă«shtĂ« programi i fundit ne jemi duke shkuar pĂ«r tĂ« parĂ«.
Dhe ne jemi duke shkuar pĂ«r t'i dhĂ«nĂ« fund me njĂ« shpejtĂ« tre minuta e claymation
bĂ«rĂ« nga miku ynĂ«, Nick Parlante.
KĂ«tu ka njĂ« program, qĂ« nĂ« dy krye Linjat e deklaron njĂ« x ndryshueshme dhe y.
Dy prej tĂ« cilave janĂ« adresat e integers, AKA pointers.
Ne pastaj tĂ« ndajĂ« tĂ« mjaftueshme kujtesĂ«s pĂ«r tĂ« ruajtur njĂ« int
dhe ruajtur adresĂ«n i atij kujtesĂ«s nĂ« x.
Pra, kjo Ă«shtĂ« edhe mĂ« tĂ« thjeshta se shembullin e para.
MĂ« jep katĂ«r byte memorje, kjo Ă«shtĂ« madhĂ«sia e njĂ« int,
dhe tĂ« vĂ«nĂ« atĂ« adresĂ« nĂ« x.
Kjo linjĂ« do tĂ« thotĂ« kĂ«tu shkoni nĂ« adresĂ«n nĂ« x
dhe vĂ«nĂ« nĂ« kuptimin e jeta, numri 42 atje.
Por kjo linjĂ« shqetĂ«son mua.
Star y do tĂ« thotĂ« tĂ« shkojnĂ« nĂ« adresĂ«n nĂ« y, dhe tĂ« vĂ«nĂ« numrin pafat 13 atje.
Pse Ă«shtĂ« e rrezikshme, nĂ« kĂ«tĂ« pikĂ« nĂ« story-- megjithĂ«se tha shpejt
nĂ« minutat tona te zbehta here-- pse Ă«shtĂ« e keqe
pĂ«r mua tĂ« them, shkoni nĂ« adresĂ«n nĂ« y?
>> Audienca: Nuk Keni [e padĂ«gjueshme].
DAVID J. Malan: UnĂ« nuk kam vĂ«nĂ« asgjĂ« nĂ« y.
Pra, Ă§farĂ« Ă«shtĂ« vlera e y, nĂ« kĂ«tĂ« pikĂ« nĂ« histori?
Ne nuk kemi asnjĂ« ide.
Kjo Ă«shtĂ« disa vlera mbeturina dhe as nuk e di Binky.
NĂ« qoftĂ« se ne mund tĂ« pĂ«rfundojĂ« nĂ« kĂ«tĂ« shĂ«nim.
>> [VIDEO rishikim]
>> Hej, Binky, zgjoheni.
Ă‹shtĂ« koha pĂ«r argĂ«tim akrep.
>> -Cfare eshte kjo?
MĂ«soni rreth pointers?
Oh, Goody.
>> Paj, pĂ«r tĂ« filluar, unĂ« mendoj qĂ« ne jemi do tĂ« ketĂ« nevojĂ« pĂ«r njĂ« Ă§ift pointers.
>> -NE RREGULL.
Ky kod ndan dy pointers tĂ« cilat mund tĂ« tregojnĂ« pĂ«r integers.
>> -OK, Edhe unĂ« shoh dy pointers, por ata
nuk duket tĂ« jetĂ« duke treguar pĂ«r Ă§do gjĂ«.
>> -Kjo Ă‹shtĂ« e drejtĂ«.
Fillimisht pointers nuk tregojnĂ« asgjĂ«.
GjĂ«rat qĂ« ata tregojnĂ« pĂ«r tĂ« quajtur pointees dhe vendosjen e tyre deri
Ă«shtĂ« njĂ« hap i veĂ§antĂ«.
>> -Oh, E drejtĂ«, e drejtĂ«.
E dija.
TĂ« pointees janĂ« tĂ« ndara.
Pra, si ju akordojĂ« njĂ« pointee?
>> -OK, Pra ky kodi sistemimin njĂ« pointee ri numĂ«r i plotĂ«,
dhe kjo pjesĂ« pĂ«rcakton x tĂ« tregojnĂ« pĂ«r tĂ«.
>> Hej, kjo duket mĂ« mirĂ«.
KĂ«shtu qĂ« e bĂ«jnĂ« atĂ« tĂ« bĂ«jĂ« diĂ§ka.
>> -OK, UnĂ« do dereference x tregues pĂ«r ruajtur numrin 42 nĂ« pointee saj.
PĂ«r kĂ«tĂ« mashtrim, unĂ« do tĂ« duhet tim shkop magjik e dereferencing.
>> Shkop magjik sa I pĂ«rket tĂ« dereferencing?
Uh, kjo, kjo Ă«shtĂ« e madhe.
>> -Kjo Ă‹shtĂ« ajo qĂ« kodi duket si.
UnĂ« do tĂ« vendosur vetĂ«m numrin and--
>> [POP SOUND]
>> Hej, shikoni atje ajo shkon.
Pra, duke bĂ«rĂ« njĂ« dereference nĂ« x poshtĂ« shigjeta pĂ«r tĂ« hyrĂ« nĂ« 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.
>> -NE RREGULL.
UnĂ« do tĂ« shkoj vetĂ«m mbi kĂ«tu pĂ«r y, dhe pĂ«r tĂ« marrĂ« numrin 13 ngritur.
Dhe pastaj tĂ« marrin shkop magjik e dereferencing dhe just--
>> [SirenĂ« tĂ« shĂ«ndoshĂ«]
>> -Oh, Hej se nuk keni punuar.
Thuaj, uh, Binky, unĂ« nuk e bĂ«j mendoj dereferencing
y Ă«shtĂ« njĂ« ide e mirĂ«, sepse vendosjen deri nĂ« pointee Ă«shtĂ« njĂ« hap i veĂ§antĂ«.
Dhe unĂ« nuk mendoj se ne ndonjĂ«herĂ« e bĂ«ri atĂ«.
>> -Hmm, PikĂ« e mirĂ«.
>> -Yeah, Ne ndarĂ« treguesin, y, por ne kurrĂ« nuk e vendosi atĂ« nĂ« tregojnĂ« pĂ«r njĂ« pointee.
>> -Hmm, ShumĂ« i vĂ«mendshĂ«m.
Hej, ju jeni nĂ« kĂ«rkim tĂ« mira atje, Binky.
Mund tĂ« rregullohet nĂ« mĂ«nyrĂ« qĂ« pikat y nĂ« tĂ« njĂ«jtin pointee si x.
>> -Sigurisht, UnĂ« pĂ«rdorin shkop magjik e mia e caktimit akrep.
>> -A Ă‹shtĂ« se do tĂ« jetĂ« njĂ« Problemi, si mĂ« parĂ«?
>> -Jo, Kjo nuk prek pointees.
Ajo thjesht ndryshon njĂ« akrep pĂ«r pikĂ« nĂ« tĂ« njĂ«jtĂ«n thing--
>> [Popping SOUND]
--as tjetĂ«r.
>> -Oh, UnĂ« shoh.
Tani pikĂ« y nĂ« tĂ« njĂ«jtin vend si x.
Pra, prisni, tani y Ă«shtĂ« fikse.
Ajo ka njĂ« pointee.
KĂ«shtu qĂ« ju mund tĂ« provoni shkop magjik e dereferencing pĂ«rsĂ«ri pĂ«r tĂ« dĂ«rguar 13 gjatĂ«.
>> -Oh, OK, kĂ«tu shkon.
>> Hej, shikoni nĂ« atĂ«.
Tani dereferencing punimeve nĂ« y.
Dhe pĂ«r shkak pointers janĂ« tĂ« ndarĂ« se njĂ« pointee, ata tĂ« dy e shohin 13.
>> -Yeah, Ndarjen, uh, Ă§farĂ«do.
Pra, do tĂ« shkojmĂ« pĂ«r tĂ« kaluar vende tani?
>> -Oh, Shikoni ne jemi jashtĂ« kohe.
>> -But--
>> -VetĂ«m Mbani mend tre rregullat akrep.
NumĂ«r 1, struktura bazĂ« Ă«shtĂ« se ju keni njĂ« tregues,
dhe kjo tregon mbi njĂ« pointee.
Por tregues dhe pointee janĂ« tĂ« ndara.
Dhe gabim i zakonshĂ«m Ă«shtĂ« pĂ«r tĂ« ngritur njĂ« akrep
por pĂ«r tĂ« harruar pĂ«r tĂ« dhĂ«nĂ« atĂ« njĂ« pointee.
>> Numri 2, dereferencing akrep fillon nĂ« treguesin
dhe ndjek shigjetĂ«n e saj mbi pĂ«r tĂ« hyrĂ« nĂ« pointee saj.
SiĂ§ e dimĂ« tĂ« gjithĂ«, kjo punon vetĂ«m nĂ«se ka Ă«shtĂ« njĂ« pointee, cili lloj i merr pĂ«rsĂ«ri
pĂ«r tĂ« sunduar numrin 1.
>> Numri 3, akrep Detyra merr njĂ« akrep
dhe ndryshon atĂ« pĂ«r pikĂ« nĂ« njĂ«jtĂ« pointee si njĂ« tjetĂ«r tregues.
Pra, pas detyrĂ«s, dy pointers
do pikĂ« tĂ« njĂ«jtin pointee, nganjĂ«herĂ« kjo quhet ndarja.
Dhe kjo Ă«shtĂ« e gjitha nuk Ă«shtĂ« pĂ«r atĂ«, me tĂ« vĂ«rtetĂ«.
Bye-bye tani.
>> [END rishikim]
>> DAVID J. Malan: Kjo Ă«shtĂ« ajo pĂ«r CS50.
FalĂ« Profesor Nick Parlante.
Ne do tĂ« shihemi javĂ«n e ardhshme.
>> [Duke luajtur elektronike MuzikĂ«]