>> [MUSIC Playing]
DAVID J. Malan: NĂ« rregull.
Kjo Ă«shtĂ« CS50, dhe kjo Ă«shtĂ« fundi i JavĂ«s Four.
Dhe njĂ« nga temat sot Ă«shtĂ« ajo e mjekĂ«sisĂ« ligjore dixhitale,
arti i shĂ«rohet informacion.
Dhe me tĂ« vĂ«rtetĂ«, edhe pse ju jeni nĂ« mes
tani e Paqes nĂ« tre dhe Breakout, javĂ«n e ardhshme,
Fokusi do tĂ« jetĂ« nĂ« pikĂ«risht kĂ«tĂ« domain.
>> Pra, njĂ« nga punĂ«t coolest kam kishte ishte kthyer nĂ« shkollĂ«n e diplomuar,
kur unĂ« isha duke punuar pĂ«r lokale Middlesex County Prokurorit tĂ« Qarkut-sĂ«
zyra, mjeko-ligjore duke bĂ«rĂ« punĂ«.
Pra, nĂ« thelb, Massachusetts Policia e Shtetit, nĂ« disa raste,
kur punojnĂ« nĂ« raste do sjellĂ« nĂ« gjĂ«ra tĂ« tilla si hard drives
dhe disqe floppy dhe kartat e kujtesĂ«s dhe tĂ« ngjashme.
Dhe ata do tĂ« dorĂ«zojĂ« ato pĂ«r mua dhe mentorin tim,
dhe qĂ«llimi ynĂ« Ă«shtĂ« pĂ«r tĂ« gjetur prova, nĂ«se ka pasur ndonjĂ«, nĂ« kĂ«to media.
Shikime tĂ« Tani, ju mund tĂ« keni parĂ« e kĂ«saj bote tĂ« mjekĂ«sisĂ« ligjore
nĂ« media, TV dhe filma.
Por punĂ« kam pasur, dhe guxoj tĂ« them se bota,
nuk Ă«shtĂ« fare si ju do tĂ« shihni atĂ«.
Le tĂ« marrin njĂ« vĂ«shtrim nĂ« atĂ« ju ndoshta keni parĂ«.
[VIDEO Playback]
OK.
Tani, le tĂ« marrĂ« njĂ« sy tĂ« mirĂ« nĂ« ju.
>> [MUSIC Playing]
>> -Hold AtĂ«.
Run qĂ« i mbĂ«shtesin.
>> -Wait NjĂ« minutĂ«.
Shko e drejtĂ«.
-Ka.
Freeze se.
PLOTE-ekran.
>> OK.
Freeze se.
-Tighten Deri nĂ« kĂ«tĂ«, 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Ă«, image mund tĂ« zgjerohet dhe tĂ« mprehur.
>> -Ă‡farĂ« Ă‹shtĂ« se?
>> -Ajo Ă‹shtĂ« njĂ« program zgjerimin.
>> -Mund Ju tĂ« qartĂ« se deri ndonjĂ«?
>> -UnĂ« Nuk e di.
Le tĂ« rritur atĂ«.
>> -Enhance Seksioni A6.
UnĂ« zgjeruara detaje, and--
-UnĂ« Mendoj se ka mjaft pĂ«r tĂ« rritur.
Lirimin e tij pĂ«r ekranin tim.
>> -UnĂ« Zgjeruara reflektimin nĂ« sytĂ« e saj.
-Le Ă‹shtĂ« drejtuar kĂ«tĂ« pĂ«rmes zgjerimin Video.
>> -Edgar, Mund tĂ« rrisĂ« kĂ«tĂ«?
>> -Hang MĂ«.
>> -Ve QenĂ« duke punuar nĂ« kĂ«tĂ« reflektim.
>> Pasqyrim i dikujt -Ka sĂ«.
>> -Reflection.
-Nuk Ă‹shtĂ« njĂ« pasqyrim i fytyrĂ«s sĂ« njeriut.
>> Reflektim, Partia!
-Nuk Ă‹shtĂ« njĂ« reflektim.
-Zoom NĂ« nĂ« pasqyrĂ«.
Ju mund tĂ« shihni njĂ« reflektim.
>> -A Mund tĂ« pĂ«rmirĂ«suar imazhin nga kĂ«tu?
-A Mund tĂ« rritur atĂ«?
-A Mund ne tĂ« rritur kĂ«tĂ«?
-A Mund tĂ« rritur atĂ«?
-Hold NĂ« njĂ« tĂ« dytĂ«.
UnĂ« do tĂ« rritur.
-Zoom NĂ« nĂ« derĂ«.
-Times 10.
-Zoom.
-Move NĂ«.
-MĂ« ShumĂ«.
-Wait, TĂ« ndaluar.
-Ndaloni.
-Pause AtĂ«.
Na -Rotate 75 gradĂ« rreth vertikale, ju lutem.
>> -Ndaloni.
Kthehu mbrapa nĂ« pjesĂ«n pĂ«rpara derĂ«s pĂ«rsĂ«ri.
>> -Got NjĂ« enhancer imazhit qĂ« mund tĂ« bitmap?
>> -Maybe Ne mund tĂ« pĂ«rdorim Pradeep Singh Metoda pĂ«r tĂ« parĂ« nĂ« dritare.
>> -The software Ă«shtĂ« shtet i artit.
>> , Partia eigenvalue Ă«shtĂ« off.
>> -Me TĂ« djathtĂ« kombinim i algorithms--
>> NdriĂ§im 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 NĂ« dhe tĂ« zgjeruar z-aks.
>> -Enhance.
PĂ«rmirĂ«so.
-Enhance.
-Freeze Dhe tĂ« rritur.
[VIDEO END rishikim]
DAVID J. Malan: Pra, ata janĂ« tĂ« tĂ« gjitha fjalĂ«t, por ato nuk ishin tĂ«
pĂ«rdorur nĂ« fjali tĂ« saktĂ«.
Dhe me tĂ« vĂ«rtetĂ« nĂ« tĂ« ardhmen, nĂ« Ă§do kohĂ«, ju lutem, dĂ«gjoni dikĂ« qĂ« thotĂ« fjalĂ«n,
"Rritur", nĂ«nqeshje vetĂ«m pak.
Sepse kur ju pĂ«rpiqeni pĂ«r tĂ« rritur, pĂ«r shembull, kjo Ă«shtĂ« ajo qĂ« ndodh.
>> KĂ«shtu qĂ« kĂ«tu Ă«shtĂ« njĂ« foto mrekullueshĂ«m.
Ky Ă«shtĂ« vet Daven CS50-sĂ«.
Dhe mendoj se ne tĂ« kĂ«rkuar pĂ«r tĂ« tĂ« pĂ«rqĂ«ndrohet nĂ« nĂ« vezullim nĂ« sy tĂ« tij,
ose reflektim i djalĂ« i keq qĂ« ishte nĂ« mĂ«nyrĂ« tĂ« qartĂ«
kapur nga kamera e sigurisĂ«.
Kjo Ă«shtĂ« ajo qĂ« ndodh kur ju zoom nĂ« njĂ« imazh qĂ«
ka vetĂ«m njĂ« numĂ«r i caktuar i bit qĂ« lidhen me tĂ«.
>> Kjo Ă«shtĂ« ajo qĂ« ju do tĂ« merrni.
Dhe me tĂ« vĂ«rtetĂ«, nĂ« sy Daven-sĂ« Ă«shtĂ« vetĂ«m katĂ«r, ndoshta gjashtĂ« pixels
qĂ« kompozoj saktĂ«sisht se Ă§farĂ« ishte dritĂ«z atje.
Pra Problem Set KatĂ«r nĂ« fund tĂ« fundit do tĂ« duhet ju eksploruar kĂ«tĂ« botĂ«, veĂ§anĂ«risht
nga natyra e diĂ§ka ne e quajmĂ« fotografi i / o, ku
i / o Ă«shtĂ« vetĂ«m njĂ« mĂ«nyrĂ« e sofistikuar pĂ«r tĂ« duke thĂ«nĂ« input dhe output.
>> Pra deri mĂ« tani, tĂ« gjitha bashkĂ«veprimet ne kemi pasur me njĂ« kompjuter
kanĂ« qenĂ« kryesisht me tuaj tastierĂ« dhe ekran,
por jo aq shumĂ« me hard disk, ose kursim tĂ« dosjeve pĂ«rtej atyre ju
veten shkruani.
Programet tuaja deri tani kanĂ« nuk janĂ« krijuar, dhe tĂ« kursimit,
dhe pĂ«rditĂ«simin dosjet e tyre.
>> E pra, Ă§farĂ« Ă«shtĂ« njĂ« skedar?
E pra, diĂ§ka si njĂ« JPEG.
Ky Ă«shtĂ« njĂ« imazh qĂ« ju mund duhet ose ngarkoni nĂ« Facebook,
ose tĂ« shihni kudo nĂ« internet.
NĂ« tĂ« vĂ«rtetĂ«, qĂ« foto ne vetĂ«m pa e Daven ishte njĂ« JPEG.
Dhe Ă§farĂ« Ă«shtĂ« interesante pĂ«r fotografi si JPEGs
Ă«shtĂ« se ato mund tĂ« identifikohen, zakonisht, nga modele tĂ« caktuara tĂ« bit.
>> Me fjalĂ« tĂ« tjera, Ă§farĂ« Ă«shtĂ« ajo qĂ« dallon njĂ« JPEG nga njĂ« GIF
nga njĂ« PING nga njĂ« fjalĂ« dokument nga njĂ« file Excel?
E pra, kjo Ă«shtĂ« vetĂ«m e ndryshme modelet e copa.
Dhe kĂ«to modele tĂ« ndryshme janĂ« zakonisht nĂ« fillim tĂ« kĂ«tyre dosjeve.
>> KĂ«shtu qĂ« kur kompjuteri juaj hap njĂ« Word doc, ose kur njĂ« kompjuter hap njĂ« JPEG,
kjo duket nĂ« mĂ«nyrĂ« tipike nĂ« disa bit e para nĂ« dosjen.
Dhe nĂ« qoftĂ« se ajo njeh njĂ« model, ai thotĂ«, oh, ky Ă«shtĂ« njĂ« imazh.
MĂ« lejoni tĂ« shfaq atĂ« nĂ« pĂ«rdoruesi si njĂ« grafik.
Ose, oh, kjo duket si njĂ« Word doc.
MĂ« lejoni tĂ« tregojĂ« se pĂ«r tĂ« pĂ«rdoruesit, si njĂ« ese.
>> KĂ«shtu pĂ«r shembull, JPEGs, rezulton, janĂ«
mjaft tĂ« sofistikuar nĂ«n kapuĂ§.
Por tre bytes e para nĂ« mĂ« tĂ« Ă§do JPEG fillojĂ« me kĂ«to tre numra.
Pra byte zero, njĂ«, dhe dy janĂ«, nĂ« mĂ« Ă§do JPEG, 255, atĂ«herĂ« numri
216, atĂ«herĂ« numri 255.
>> Dhe ajo qĂ« ju do tĂ« jetĂ« nĂ« gjendje pĂ«r tĂ« fillojnĂ« tĂ« bĂ«jnĂ« javĂ«n e ardhshme
Ă«shtĂ« nĂ« tĂ« vĂ«rtetĂ« poking nĂ«n individualitet e dosjeve si JPEGs
dhe si fotografi bitmap, dhe duke parĂ« ajo qĂ« ka qenĂ« gjithmonĂ« atje pĂ«r aq kohĂ«
si ju keni qenĂ« duke pĂ«rdorur njĂ« kompjuter.
>> Por ajo qĂ« Ă«shtĂ« atje nuk Ă«shtĂ« nĂ« mĂ«nyrĂ« tipike shkruar si numra dhjetorĂ« si kjo.
ShkencĂ«tarĂ«t kompjuter nuk e bĂ«jnĂ« kanĂ« tendencĂ« pĂ«r tĂ« folur nĂ« decimal.
Ata vĂ«rtetĂ« nuk flasin nĂ« binar.
NĂ« mĂ«nyrĂ« tipike, kur ne duam pĂ«r tĂ« shprehur numrat,
ne fakt pĂ«rdorni hexadecimal, tĂ« cilat ju mund tĂ« kujtojnĂ«
nga, tĂ« themi, Problem Set NjĂ«, e cila sfidoi
ju tĂ« mendoni pĂ«r njĂ« sistem tĂ« ndryshĂ«m.
>> Ne, natyrisht, janĂ« tĂ« njohur me decimal, zero pĂ«rmes nĂ«ntĂ«.
Biseduam pĂ«r binar.
Dhe ne nuk tĂ« vĂ«rtetĂ« kanĂ« pĂ«r tĂ« pĂ«rdorur qĂ« shumĂ« kĂ«tu
mĂ« jashtĂ«, sepse kompjuterat do tĂ« pĂ«rdorĂ« kĂ«tĂ«.
Por programuesit do shumĂ« shpesh, por jo gjithmonĂ«,
pĂ«rdorni hexadecimal, e cila vetĂ«m do tĂ« thotĂ« ju keni 16 shkronja nĂ« alfabetin tĂ«nd,
nĂ« krahasim me dy ose 10.
>> Deri sa ju tĂ« mbĂ«shteteni pĂ«r tĂ« mĂ« e lartĂ« se nĂ«ntĂ« nĂ« heksadecimal?
Qe shkojnĂ« 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, vetĂ«m nga konventa.
Por ajo qĂ« Ă«shtĂ« kryesore Ă«shtĂ« qĂ« Ă§do nga kĂ«to Ă«shtĂ« njĂ« simbol i vetĂ«m.
Nuk ka 10.
Nuk ka 11, nĂ« vetvete, sepse Ă§do i shifrave tuaja, ashtu si nĂ« decimal
dhe ashtu si nĂ« binar, duhet vetĂ«m tĂ« tĂ« jetĂ« njĂ« karakter tĂ« vetĂ«m, nga konventa.
>> Pra, qĂ« atĂ«herĂ« Ă«shtĂ« alfabeti ne kemi nĂ« dispozicionin tonĂ« pĂ«r heksadecimal.
Pra, Ă§farĂ« e bĂ«n njĂ« JPEG duket si nĂ« qoftĂ« se ju ishin tĂ« shkruar nga kĂ«ta tĂ« tre e parĂ«
nuk bytes si decimal, por, pĂ«r shembull, si heksadecimal?
Dhe pse Ă«shtĂ« magji edhe tĂ« gjithĂ« qĂ« tĂ« dobishme?
>> E pra, njĂ« vĂ«shtrim i shpejtĂ« nĂ« njĂ« shembull.
Pra, nĂ«se unĂ« shkruaj nga copa qĂ« pĂ«rfaqĂ«sojnĂ« kĂ«to numbers-- decimal
kjo mund tĂ« jetĂ« njĂ« ndryshkur pak tani nga disa javĂ« prapa,
por njĂ« e majtĂ« dhe njĂ« e drejtĂ« janĂ« goxha e lehtĂ«.
255 ishte numri mĂ« i madh qĂ« ne mund tĂ« pĂ«rfaqĂ«sojĂ« me tetĂ« bit.
Ishte tĂ« gjitha ato.
Pra, i vetmi qĂ« Ă«shtĂ« e butĂ« interesante Ă«shtĂ« njĂ« e mesme.
Dhe nĂ« qoftĂ« se ju lloj i bĂ«ni jashtĂ« matematikĂ«, ju do tĂ« nxjerr njĂ« pĂ«rfundim se, me tĂ« vĂ«rtetĂ«,
se modeli i njĂ« dhe zero pĂ«rfaqĂ«son 216.
Pra, le tĂ« vetĂ«m tĂ« parashikojĂ« pĂ«r tani qĂ« kĂ«to janĂ« tĂ« sakta.
Por pse Ă«shtĂ« kjo interesante?
>> E pra, njĂ« bajt, natyrisht, Ă«shtĂ« tetĂ« bit.
Dhe kjo rezulton se nĂ« qoftĂ« se ju mendoni se e njĂ« bajt si dy copa tĂ« katĂ«r copa,
si kjo.
MĂ« lejoni vetĂ«m tĂ« shtoni njĂ« hapĂ«sirĂ«.
Pra, para, pas.
UnĂ« e kam vetĂ«m tĂ« shtuar njĂ« hapĂ«sirĂ« â€‹â€‹tĂ« bardhĂ« pĂ«r hir Vizualizimi-sĂ« kĂ«tu.
Si mund tĂ« kemi tani tĂ« pĂ«rfaqĂ«sojĂ« nĂ«, tĂ« themi, heksadecimal secilin kuadrat i bit,
secili grup i katĂ«r bit?
>> KĂ«shtu pĂ«r shembull, nĂ« tĂ« majtĂ« tani, ne kemi 1111 nĂ« binar.
Ă‡farĂ« Ă«shtĂ« se numri nĂ« decimal, nĂ« qoftĂ« se ju bĂ«ni jashtĂ« matematikĂ«?
Ju keni vendin Ones, vend twos, vendi katĂ«r kĂ«mbĂ«t, dhe vendi tetĂ«.
>> Audienca: 15.
DAVID J. Malan: Kjo Ă«shtĂ« 15.
Pra, nĂ«se ne bĂ«jmĂ« tetĂ« plus katĂ«r plus dy plus njĂ«, ne kemi marrĂ« 15.
KĂ«shtu qĂ« unĂ« mund tĂ« shkruani 15 mĂ« poshtĂ« 1111 dhe por pika e tĂ«rĂ« kĂ«tu
Ă«shtĂ« heksadecimal, nuk dhjetore.
Pra, nĂ« vend tĂ« shkruar 15, 1-5, UnĂ« jam duke shkuar pĂ«r tĂ« shkruar qĂ« nĂ« magji,
e cila nĂ« qoftĂ« se ju mendoni pĂ«rsĂ«ri, nĂ« qoftĂ« se ju keni zero nĂ«pĂ«rmjet f, Ă§farĂ« Ă«shtĂ« 15 do tĂ« jetĂ«?
Audienca: f.
DAVID J. Malan: Pra, ajo rezulton se Ă«shtĂ« f.
Dhe ju mund tĂ« punojnĂ« jashtĂ« se duke thĂ«nĂ«, dhe, nĂ«se A Ă«shtĂ« 10, pastaj nĂ« rregull, f Ă«shtĂ« 15.
Pra, me tĂ« vĂ«rtetĂ«, ne mund tĂ« rishkruaj ky grup i njĂ«jtĂ« i numrave si f f.
AtĂ«herĂ«, nĂ«se ne bĂ«jmĂ« njĂ« grimĂ« e matematikĂ«s, ne do tĂ« nxjerr njĂ« pĂ«rfundim se kjo Ă«shtĂ« d.
TetĂ« Ă«shtĂ« shumĂ« e lehtĂ«, sepse ne kanĂ« njĂ« njĂ« nĂ« vendin e tetĂ«.
Dhe pastaj, ne kemi njĂ« Ă§ift shumĂ« f f-sĂ«.
>> Pra, ajo qĂ« njerĂ«zit kanĂ« tendencĂ« pĂ«r tĂ« bĂ«rĂ« nga konventa kur ata pĂ«rdorin heksadecimal Ă«shtĂ« se ata vetĂ«m
shkruaj kĂ«tĂ« pak mĂ« shkurtimisht, shpĂ«toj nga shumica e asaj hapĂ«sirĂ« â€‹â€‹tĂ« bardhĂ«.
Dhe vetĂ«m tĂ« jenĂ« super tĂ« qartĂ« tĂ« lexuesit se kjo Ă«shtĂ« heksadecimal,
Konventa e thjeshtĂ« nĂ« mes tĂ« njerĂ«zit po ju shkruani zero
x, e cila nuk ka kuptimin tjetĂ«r se njĂ« identifikues vizuale tĂ«,
kĂ«tu vjen njĂ« numĂ«r magji.
>> Dhe pastaj, tĂ« vendosni dy shifra, f f nĂ« kĂ«tĂ« rast, pastaj d a, pastaj f f.
Pra histori tĂ« gjatĂ« tĂ« shkurtĂ«r, heksadecimal vetĂ«m ka tendencĂ«
tĂ« jetĂ« e dobishme pĂ«r shkak se secili prej saj shifrat e kodit, zero nĂ«pĂ«rmjet f, tĂ« pĂ«rkryer linjat
me njĂ« model tĂ« katĂ«r copa.
>> Pra, nĂ«se ju keni dy numra heksadecimal, zero pĂ«rmes F, pĂ«rsĂ«ri dhe pĂ«rsĂ«ri,
qĂ« ju jep tĂ« pĂ«rkryer tetĂ« bit ose njĂ« bajt.
Pra, kjo Ă«shtĂ« arsyeja pse ajo tenton tĂ« tĂ« jetĂ« konvencionale tĂ« dobishme.
Nuk ka intelektuale pĂ«rmbajtje me tĂ« vĂ«rtetĂ« pĂ«rtej kĂ«saj,
pĂ«rveĂ§ shĂ«rbimeve tĂ« saj aktual.
>> Tani JPEGs nuk janĂ« vetĂ«m paraqesĂ« formate pĂ«r graphics.
Ju mund tĂ« kujtojnĂ« se ka fotografi si kjo nĂ« botĂ«,
tĂ« paktĂ«n nga disa vjet mbrapa.
>> Pra, kjo ishte nĂ« tĂ« vĂ«rtetĂ« instaluar nĂ« Windows XP
nĂ« miliona PC nĂ« mbarĂ« botĂ«n.
Dhe kjo ishte njĂ« fotografi bitmap, BMP.
Dhe njĂ« fotografi bitmap, si ju do tĂ« shihni tjetĂ«r javĂ«, thjesht do tĂ« thotĂ« njĂ« model i dots,
pixels si ata janĂ« quajtur, njĂ« hartĂ« nĂ« copa, me tĂ« vĂ«rtetĂ«.
>> Pra, Ă§farĂ« Ă«shtĂ« interesante, edhe pse, nĂ« lidhje me kĂ«tĂ« format file, BMP, Ă«shtĂ«
qĂ« nĂ«n kapuĂ§, atĂ« ka mĂ« shumĂ« se vetĂ«m tre bytes
qĂ« kompozoj header e saj, nĂ« mĂ«nyrĂ« tĂ« flasin, e disa kafshon e para.
Ajo nĂ« fakt duket pak komplikuar nĂ« shikim tĂ« parĂ«.
Dhe ju do tĂ« shihni kĂ«tĂ« nĂ« setin P.
Dhe pĂ«r tĂ« gjetur diĂ§ka nga tĂ« veĂ§antĂ« tĂ« kĂ«saj tani
nuk Ă«shtĂ« aq e rĂ«ndĂ«sishme, sa vetĂ«m fakti qĂ« nĂ« fillim tĂ« Ă§do bitmap
fotografi, njĂ« format grafik, ka njĂ« bandĂ« e tĂ«rĂ« e numrave.
>> Tani Microsoft, autor i kĂ«tij formati,
ka tendencĂ« pĂ«r tĂ« thirrur ata GjĂ«rat nuk Ints dhe chars
dhe gjithandej, por fjalĂ«t dhe d fjalĂ«t dhe longs dhe bytes.
Pra, ata janĂ« vetĂ«m lloje tĂ« ndryshme tĂ« tĂ« dhĂ«nave.
Ata janĂ« emra tĂ« ndryshĂ«m pĂ«r tĂ« njĂ«jtĂ«n gjĂ«.
Por ju do tĂ« shihni se nĂ« P Set KatĂ«r.
>> Por kjo Ă«shtĂ« vetĂ«m pĂ«r tĂ« thĂ«nĂ« se nĂ« qoftĂ« se njĂ« njeri dy klikimeve disa fotografi bmp nĂ« e tij
ose hard drive e saj, dhe njĂ« dritare hapet up duke treguar atĂ« qĂ« e imazhit,
se ka ndodhur pĂ«r shkak tĂ« operimit sistemi me sa duket vĂ«nĂ« re jo vetĂ«m
file extension bmp nĂ« emrin e file,
por edhe fakti se ka disa konventĂ« nĂ« modelin e copa
nĂ« fillim e kĂ«tĂ« dosje bitmap.
>> Por le tĂ« tani tĂ« pĂ«rqĂ«ndrohet nĂ« tillĂ« njĂ« fotografi e komplikuar,
por nĂ« vend tĂ« kĂ«saj nĂ« diĂ§ka si kjo.
Supozoni kĂ«tu nĂ« Gedit, unĂ« vetĂ«m kanĂ« fillimet
i njĂ« programi qĂ« Ă«shtĂ« shumĂ« e thjeshtĂ«.
UnĂ« kam marrĂ« disa pĂ«rfshin deri tĂ« lartĂ«.
Tani unĂ« kam marrĂ« # Include "structs.h", por UnĂ« do tĂ« kthehem nĂ« se nĂ« njĂ« moment.
Por kjo Ă«shtĂ« e dobishme pĂ«r tani.
Pra, ky Ă«shtĂ« njĂ« program qĂ« do tĂ« zbatojĂ«
si bazĂ«n e tĂ« dhĂ«nave tĂ« gjendjes civile.
Pra, njĂ« bazĂ« tĂ« dhĂ«nash e studentĂ«ve, dhe Ă§do studenti nĂ« botĂ«
ka njĂ« emĂ«r dhe njĂ« shtĂ«pi dhe ndoshta disa sende tĂ« tjera, por ne do tĂ« mbani atĂ« tĂ« thjeshtĂ«.
Ă‡do nxĂ«nĂ«s ka njĂ« emĂ«r dhe njĂ« shtĂ«pi.
>> Pra, nĂ«se kam kĂ«rkuar tĂ« shkruaj njĂ« Programi qĂ«llimi i tĂ« cilit nĂ« jetĂ«
ishte vetĂ«m pĂ«r tĂ« iterate nga zero pĂ«r deri nĂ« tre,
nĂ« qoftĂ« se ka tre studentĂ« nĂ« Universitetin e Harvardit.
Dhe unĂ« vetĂ«m dua tĂ« tĂ« marrĂ«, duke pĂ«rdorur GetString, emrin e studentit dhe shtĂ«pi,
dhe pastaj vetĂ«m tĂ« shtypura ato jashtĂ«.
>> Kjo Ă«shtĂ« lloj si JavĂ«s NjĂ«, Java Dy gjĂ«ra tani,
ku unĂ« vetĂ«m dua njĂ« pĂ«r loop ose diĂ§ka tĂ« tillĂ«.
Dhe unĂ« dua tĂ« thĂ«rrasĂ« GetString disa herĂ«, dhe pastaj tĂ« shtypura f disa herĂ«.
Pra, si mund tĂ« bĂ«j kĂ«tĂ«, edhe pse, kur tĂ« dyja njĂ« emĂ«r dhe njĂ« shtĂ«pi
janĂ« tĂ« pĂ«rfshirĂ« pĂ«r Ă§do student?
>> Pra instinkti im i parĂ« mund tĂ« jetĂ« pĂ«r tĂ« bĂ«rĂ« diĂ§ka si kjo.
UnĂ« mund tĂ« them sĂ« pari, dhe, mĂ« jepni, thonĂ«, njĂ« rrjet tĂ« strings quajtur emra.
Dhe unĂ« nuk dua njĂ« hardcode tre kĂ«tu.
Ă‡farĂ« dua tĂ« vĂ«nĂ« atje?
Pra STUDENTĂ‹T, sepse kjo Ă«shtĂ« vetĂ«m njĂ« konstante deklaruar nĂ« krye,
vetĂ«m kĂ«shtu qĂ« unĂ« nuk duhet tĂ« hardcode tre nĂ« vende tĂ« shumta.
NĂ« kĂ«tĂ« mĂ«nyrĂ«, unĂ« mund tĂ« ndryshojĂ« atĂ« njĂ« vend, dhe kjo ndikon nĂ« ndryshimin kudo.
Dhe pastaj, unĂ« mund tĂ« bĂ«j string shtĂ«pi STUDENTĂ‹T.
>> Dhe tani, unĂ« mund tĂ« bĂ«jĂ« diĂ§ka si pĂ«r (int i = 0; i <STUDENTĂ‹T, i ++.
KĂ«shtu qĂ« unĂ« jam i shtypur tĂ« shpejtĂ«, por kjo Ă«shtĂ« ndoshta Sintaksa njohur tani.
>> Dhe tani, kjo ishte mĂ« shumĂ« kohĂ«ve tĂ« fundit.
NĂ«se unĂ« dua tĂ« vĂ«nĂ« nĂ« i-th Emri i studentit, unĂ« mendoj se kam bĂ«rĂ« kĂ«tĂ«.
Dhe pastaj, jo emrat por shtĂ«pitĂ« kllapa i.
BĂ«j kĂ«tĂ«, GetString, dhe le shkoj mbrapa dhe tĂ« rregulluar kĂ«tĂ« linjĂ«.
Pajtohem?
Nuk pajtohem?
Kjo nuk Ă«shtĂ« shumĂ« pĂ«rdorues-miqĂ«sor.
UnĂ« nuk e kam thĂ«nĂ« pĂ«rdoruesit se Ă§farĂ« tĂ« bĂ«jĂ«.
>> Por tani, nĂ« qoftĂ« se unĂ« edhe kĂ«rkuar pĂ«r mĂ« vonĂ«, le tĂ«
tĂ« themi, tĂ« shkruar kĂ«to gjĂ«ra out-- kĂ«shtu TODO vonĂ«.
UnĂ« do tĂ« bĂ«jĂ« mĂ« shumĂ« me this-- kjo ndoshta IS
njĂ« zbatimi korrekt i duke marrĂ« emrat dhe shtĂ«pi, tre
e tyre e pĂ«rgjithshme secili, nga njĂ« pĂ«rdorues.
>> Por kjo nuk Ă«shtĂ« dizajn shumĂ« e mirĂ«, e drejtĂ«?
Po nĂ« qoftĂ« se njĂ« student ka jo vetĂ«m njĂ« emĂ«r dhe njĂ« shtĂ«pi, por edhe njĂ« numĂ«r ID,
dhe njĂ« numĂ«r telefoni, dhe njĂ« adresĂ« e-mail,
dhe ndoshta njĂ« faqe nĂ« shtĂ«pi, dhe ndoshta njĂ« tĂ« trajtojĂ« Twitter,
dhe Ă§do numĂ«r tĂ« detaje tĂ« tjera lidhur me njĂ« student ose njĂ« person,
nĂ« pĂ«rgjithĂ«si.
Si do tĂ« fillojĂ« pĂ«r tĂ« shtuar funksionalitetin pĂ«r kĂ«tĂ« program?
>> E pra, unĂ« ndjehem si mĂ«nyrĂ« mĂ« tĂ« thjeshtĂ« mund tĂ« jetĂ« pĂ«r tĂ« bĂ«rĂ« diĂ§ka si, le tĂ« themi,
int IDS STUDENTĂ‹T.
KĂ«shtu qĂ« unĂ« mund tĂ« vĂ«nĂ« tĂ« gjitha kartat e identitetit e tyre nĂ« atje.
Dhe pastaj, pĂ«r diĂ§ka si numrat e telefonit,
UnĂ« nuk jam i sigurt se si tĂ« paraqesin se vetĂ«m ende.
Pra, le tĂ« shkojnĂ« pĂ«rpara dhe tĂ« vetĂ«m thirrje kjo Twitters STUDENTĂ‹T, tĂ« cilat
Ă«shtĂ« pak e Ă§uditshme, but-- dhe njĂ« bandĂ« mĂ« shumĂ« fusha.
>> UnĂ« kam filluar tĂ« nĂ« mĂ«nyrĂ« efektive kopjoni dhe ngjisni kĂ«tu.
Dhe kjo do tĂ« rritet mjaft ngathĂ«t shumĂ« shpejt, e drejtĂ«?
A nuk do tĂ« ishte mirĂ« nĂ«se do tĂ« kishte nĂ« botĂ« e njohur njĂ« strukturĂ« e tĂ« dhĂ«nave
jo si njĂ« int ose njĂ« varg, por diĂ§ka nivel mĂ« tĂ« lartĂ«, njĂ« abstraksion, kĂ«shtu
pĂ«r tĂ« folur, i njohur si njĂ« student?
C nuk ka ardhur me tĂ« ndĂ«rtuar nĂ« funksionalitetin pĂ«r studentĂ«t,
por Ă§ka nĂ«se kam kĂ«rkuar pĂ«r tĂ« dhĂ«nĂ« atĂ« tĂ« tillĂ«?
>> E pra, ajo rezulton, unĂ« jam duke shkuar pĂ«r tĂ« tĂ« hapur njĂ« skedar tĂ« quajtur structs.h kĂ«tu,
dhe ju mund tĂ« bĂ«jĂ« pikĂ«risht kĂ«tĂ«.
Dhe ne jemi duke shkuar pĂ«r tĂ« fillojnĂ« tĂ« bĂ«jnĂ« kĂ«tĂ« tani.
Dhe nĂ«n kapuĂ§ e P Set Tre, ju keni qenĂ« tashmĂ« duke bĂ«rĂ« kĂ«tĂ« tani.
Nuk ka gjĂ« tĂ« tillĂ« si njĂ« g rect ose njĂ« g ovale nĂ« gjuhĂ«n e programimit C.
>> Folks nĂ« Stanford zbatuar ato lloje tĂ« tĂ« dhĂ«nave duke pĂ«rdorur kĂ«tĂ« qasje kĂ«tu,
duke deklaruar tĂ« dhĂ«nat e tyre tĂ« ri Llojet duke pĂ«rdorur njĂ« fjalen ri
quajtur struct dhe njĂ« tjetĂ«r e quajtur typedef.
Dhe me tĂ« vĂ«rtetĂ«, edhe pse sintaksĂ« duket pak e ndryshme nga sende
ne kemi parĂ« mĂ« parĂ«, nĂ« parim, kjo Ă«shtĂ« super e thjeshtĂ«.
>> Kjo thjesht do tĂ« thotĂ« "tĂ« pĂ«rcaktuar njĂ« lloj."
Kjo do tĂ« jetĂ« njĂ« struktura, dhe njĂ« strukturĂ«
Ă«shtĂ« vetĂ«m si njĂ« enĂ« pĂ«r gjĂ«ra tĂ« shumta.
Dhe kjo strukturĂ« Ă«shtĂ« duke shkuar qĂ« tĂ« ketĂ« njĂ« varg tĂ« quajtur emrin,
dhe njĂ« varg tĂ« quajtur shtĂ«pi.
Dhe le tĂ« thĂ«rrasĂ«, vetĂ«m pĂ«r lehtĂ«si, tĂ«rĂ« ky student Struktura e tĂ« dhĂ«nave.
>> Pra, nĂ« momentin qĂ« ju tĂ« merrni pĂ«r tĂ« pikĂ«presje, ju keni tani
krijuar tĂ« dhĂ«nat tuaj Lloji i quajtur studenti
qĂ« tani qĂ«ndron sĂ« bashku int, dhe noton, dhe char, dhe string,
dhe g rect, dhe g ovale, dhe Ă§do numĂ«r e gjĂ«ra tĂ« tjera njerĂ«zit kanĂ« shpikur.
>> Pra, Ă§farĂ« Ă«shtĂ« e dobishme nĂ« lidhje me kĂ«tĂ« tani Ă«shtĂ« se nĂ« qoftĂ« se unĂ« kthehem
tĂ« struct 0 dhe tĂ« pĂ«rfundojĂ« kjo zbatimi, tĂ« cilat kam shkruar
paraprakisht kĂ«tu, vini re se tĂ« gjitha i Ă‡rregullia pashmangshme qĂ«
ishte gati tĂ« fillojnĂ« tĂ« ndodhin, si kam shtuar numrat e telefonit dhe Twitters dhe tĂ« gjitha
kĂ«to gjĂ«ra tĂ« tjera pĂ«r tĂ« PĂ«rkufizimi studentit,
tani ajo pĂ«rfundoi nĂ« mĂ«nyrĂ« tĂ« pĂ«rmbledhur deri si vetĂ«m njĂ« grup tĂ« nxĂ«nĂ«sve.
>> Dhe secili prej atyre nxĂ«nĂ«sve tani ka gjĂ«ra tĂ« shumta nĂ« brendĂ«si tĂ« tij.
KĂ«shtu qĂ« vetĂ«m lĂ« njĂ« pyetje.
Si mund tĂ« merrni nĂ« emĂ«r, dhe shtĂ«pia, dhe ID,
dhe Ă§do gjĂ« tjetĂ«r Ă«shtĂ« e brenda e studentit?
Super thjeshtĂ«, si edhe.
Sintaksa e re, por njĂ« ide e thjeshtĂ«.
>> Ju thjesht indeksi nĂ« grup, siĂ§ bĂ«mĂ« javĂ«n e kaluar dhe kĂ«tĂ«.
Dhe Ă§farĂ« Ă«shtĂ« nĂ« mĂ«nyrĂ« tĂ« qartĂ« copĂ« e re e sintaksĂ«s?
VetĂ«m., QĂ« do tĂ« thotĂ« "tĂ« shkojnĂ« brenda Struktura dhe merrni fushĂ« tĂ« quajtur
Emri, tĂ« marrĂ« nĂ« fushĂ« tĂ« quajtur shtĂ«pi, tĂ« marrĂ« nĂ« fushĂ« tĂ« quajtur studenti. "
>> Pra, nĂ« P Set Tre, nĂ«se ju jeni tĂ« ende duke punuar nĂ« kĂ«tĂ«,
dhe shumica e njerĂ«zve ende janĂ«, kuptojnĂ« se si ju
filloni duke pĂ«rdorur gjĂ«ra tĂ« tilla si g rects dhe g ovale
dhe gjĂ«ra tĂ« tjera qĂ« nuk duket tĂ« vijnĂ« nga Java Zero, NjĂ« ose dy,
tĂ« kuptojĂ« se kjo Ă«shtĂ« pĂ«r shkak se Stanford deklaruar disa lloje tĂ« reja tĂ« tĂ« dhĂ«nave.
>> Dhe me tĂ« vĂ«rtetĂ«, kjo Ă«shtĂ« pikĂ«risht ajo qĂ« ne do tĂ« tĂ« bĂ«jĂ«, si dhe, nĂ« P Set Four, kur
ne tĂ« fillojnĂ« tĂ« merren me gjĂ«ra tĂ« si imazhe, bitmaps, dhe mĂ« shumĂ«.
Pra, kjo Ă«shtĂ« vetĂ«m njĂ« ngacmues dhe njĂ« Modeli mendore pĂ«r atĂ« qĂ« Ă«shtĂ« pĂ«r tĂ« ardhur.
Tani, unĂ« zvarritur pak kĂ«tĂ« mĂ«ngjes.
UnĂ« kam qenĂ« lloj kurioz pĂ«r tĂ« parĂ« se Ă§farĂ« letĂ«r-muri Microsoft nĂ« fakt
duket si sot.
Dhe del dikush nĂ« 2006 nĂ« fakt shkoi nĂ« pothuajse saktĂ«sisht
njĂ«jti vend pĂ«r tĂ« fotografuar nĂ« realitet atĂ« qĂ« duket si se kĂ«to ditĂ«.
FushĂ« Ă«shtĂ« tani pak mĂ« i madh.
>> Pra, duke folur tani e imazheve, le tĂ« sjellĂ« pĂ«rsĂ«ri Daven kĂ«tu
nĂ« ekran dhe NikollĂ«s, dhe vetĂ«m tĂ« ju kujtoj
se nĂ« qoftĂ« se ju dĂ«shironi qĂ« tĂ« bashkohen me ne pĂ«r drekĂ« kjo e premte, kreu tĂ« zakonshme URL tonĂ«
kĂ«tu.
>> Pra, ku nuk e kemi lĂ«nĂ« jashtĂ« tĂ« hĂ«nĂ«n?
Ne kemi prezantuar kĂ«tĂ« problem, apo jo?
Kjo ishte me sa duket njĂ« saktĂ« zbatimi i swap,
ku ju duke marrĂ« dy ints, e quajtur, e quajtur b,
shkĂ«mbim tĂ« tyre, ashtu si Laura bĂ«ri kĂ«tu nĂ« skenĂ« me qumĂ«sht dhe ujĂ«,
duke pĂ«rdorur njĂ« tĂ« pĂ«rkohshme variable, ose njĂ« kupĂ« bosh,
nĂ« mĂ«nyrĂ« qĂ« ne mund tĂ« vĂ«nĂ« b nĂ« njĂ« dhe njĂ« in b pa bĂ«rĂ« njĂ« rrĂ«mujĂ« e gjĂ«rave.
Ne kemi pĂ«rdorur njĂ« ndryshore.
Ajo qĂ« quhet temp.
>> Por, ajo qĂ« ishte themelore Problemi me kĂ«tĂ« kod tĂ« hĂ«nĂ«n?
Cili ishte problemi kĂ«tu?
Po.
>> Audienca: Ajo merr mĂ« shumĂ« hapĂ«sirĂ«.
>> DAVID J. Malan: Merr mĂ« shumĂ« hapĂ«sirĂ«, sepse unĂ« jam duke pĂ«rdorur njĂ« ndryshore,
dhe kjo Ă«shtĂ« OK.
Kjo Ă«shtĂ« e vĂ«rtetĂ«, por unĂ« jam i do tĂ« thotĂ« kjo Ă«shtĂ« nĂ« rregull.
Ă‹shtĂ« vetĂ«m 32 bit nĂ« madh Skema e gjĂ«rave, kĂ«shtu qĂ« nuk Ă«shtĂ« njĂ« punĂ« e madhe.
Mendime tĂ« tjera?
Audienca: Ajo vetĂ«m kĂ«mbime variablat nivel lokal.
DAVID J. Malan: PikĂ«risht.
Ajo vetĂ«m kĂ«mbime e variablave nĂ« nivel lokal.
PĂ«r shkak se Ă§do herĂ« qĂ« tĂ« thĂ«rrasĂ« njĂ« function-- kur kam pasur tabaka nga Annenberg
HerĂ«n e fundit, ju keni kryesor nĂ« pjesĂ«n e poshtme.
Sa mĂ« shpejt qĂ« ju e quani njĂ« funksion tĂ« quajtur swap, swap-i nuk ka marrĂ« x dhe y,
vlerat origjinale.
Ă‡farĂ« ka marrĂ« swap, e ne tĂ« pretendojnĂ«?
Audienca: Kopjet.
DAVID J. Malan: Pra, kopjet e tyre.
Pra, ajo merr njĂ« dhe dy, nĂ« qoftĂ« se ju kujtojnĂ« shembullin nga koha e kaluar,
por njĂ« kopje e njĂ« dhe dy qĂ« janĂ« swapped sukses.
Por pĂ«r fat tĂ« keq nĂ« fund, ato vlera janĂ« ende tĂ« njĂ«jta.
Pra, ne mund tĂ« shohim kĂ«tĂ« me tonĂ« mik tĂ« ri, shpresĂ« Gdb,
se ju ose TFS dhe Ca-sĂ« kanĂ« qenĂ« e ju do tĂ« udhĂ«heqin drejt si vijon.
>> Pra nuk ka risjell swap duket like-- le tĂ« hapur deri this-- duket si kjo.
Ne niset x pĂ«r njĂ«, y pĂ«r tĂ« dy.
Sikur njĂ« bandĂ« e shtypura f-sĂ«.
Por mĂ« pas, thirrjes kĂ«tu ishte qĂ« tĂ« bie nĂ« ujdi, e cila
Ă«shtĂ« pikĂ«risht kodi ne vetĂ«m e pa njĂ« moment mĂ« parĂ«.
Cila Ă«shtĂ« e saktĂ« nĂ« fillim shikim, por funksionale,
ky program nuk funksionon, pĂ«r shkak se ajo nuk permanente shkĂ«mbim X dhe Y.
>> Pra, le tĂ« shohim kĂ«tĂ«, njĂ« tĂ« ngrohtĂ« tĂ« shpejtĂ« deri kĂ«tu me Gdb, njĂ« ./noswap.
NjĂ« bandĂ« e informacionit tĂ« madhe se UnĂ« do tĂ« tĂ« shpĂ«toj prej me Kontrollit L tani pĂ«r tani.
Dhe tani, unĂ« jam duke shkuar pĂ«r tĂ« tĂ« shkojnĂ« pĂ«rpara dhe tĂ« drejtuar atĂ«.
Dhe pĂ«r fat tĂ« keq, qĂ« nuk ishte se i dobishĂ«m.
Ajo u zhvillua programin brenda kĂ«saj Programi quhet Gdb, njĂ« Rregullues,
por ajo nuk e lejoni tĂ« thes rreth.
>> Pra, si mund unĂ« nĂ« fakt pauzĂ« ekzekutimi brenda kĂ«tij programi?
Pra pushim.
Dhe unĂ« mund tĂ« thyejnĂ« nĂ« ndonjĂ« Linja numĂ«r, njĂ«, 10, 15.
Por unĂ« mund tĂ« thyejnĂ« simbolikisht duke thĂ«nĂ« pushim Main.
Dhe kjo po ndodh pĂ«r tĂ« vendosur njĂ« pushim pikĂ«, me sa duket nĂ« linjĂ« 16 nĂ« kryesore.
Dhe ku Ă«shtĂ« linjĂ« 16?
Le tĂ« shkojmĂ« deri nĂ« kodin dhe tĂ« shkojnĂ« deri nĂ« noswap.
Dhe me tĂ« vĂ«rtetĂ«, linja 16 Ă«shtĂ« e parĂ« nĂ« program.
>> Deri tani, nĂ« qoftĂ« se unĂ« tĂ« shkojnĂ« pĂ«rpara dhe lloji drejtuar kĂ«tĂ« herĂ«, Enter, ajo ndaluar.
Pra, le tĂ« thes rreth.
Print x-- pse Ă«shtĂ« x zero?
Dhe injorojnĂ« shenjĂ« dollar.
Kjo Ă«shtĂ« vetĂ«m pĂ«r njohĂ«s PĂ«rdorimi i programit.
Pse Ă«shtĂ« x zero nĂ« kĂ«tĂ« moment?
Po.
>> Audienca: Ajo heshti e drejtĂ« para se tĂ« Linja 16, jo tĂ« vĂ«rtetĂ« nĂ« linjĂ« 16.
DAVID J. Malan: PikĂ«risht.
Gdb, si parazgjedhje, ka ndaluar Ekzekutimi i vetĂ«m para linjĂ« 16.
Pra, ajo nuk e ka ekzekutuar, i cili do tĂ« thotĂ« x Ă«shtĂ« i njĂ« vlere tĂ« panjohur.
Dhe ne mori me fat qĂ« Ă«shtĂ« e diĂ§ka tĂ« pastĂ«r si zero.
Deri tani, nĂ«se unĂ« lloji tjetĂ«r, tani ajo ekzekutuar 16.
Ă‹shtĂ« duke pritur pĂ«r mua pĂ«r tĂ« ekzekutuar 17.
MĂ« lejoni tĂ« shkojnĂ« pĂ«rpara dhe tĂ« shtypura x.
Kjo Ă«shtĂ« njĂ«.
MĂ« lejoni tĂ« shkojnĂ« pĂ«rpara dhe y tĂ« shtypura.
Ă‡farĂ« duhet tĂ« shikoni tani?
>> Audienca: [padĂ«gjueshme]
>> DAVID J. Malan: NjĂ« louder pak.
>> Audienca: [padĂ«gjueshme]
DAVID J. Malan: Jo mjaft e njĂ« konsensusi.
Pra, po, ne shohim disa vlera e mbeturinave.
Tani, y Ă«shtĂ« 134514064 atje.
E pra, kjo Ă«shtĂ« vetĂ«m disa vlera e mbeturinave.
Programi im pĂ«rdor RAM pĂ«r qĂ«llime tĂ« ndryshme.
Ka funksione tĂ« tjera.
NjerĂ«z tĂ« tjerĂ« shkroi brenda kompjuterin tim.
Pra, ato copa janĂ« pĂ«rdorur pĂ«r vlera tĂ« tjera, dhe Ă§farĂ« unĂ« jam duke parĂ«
Ă«shtĂ« mbeturinat e disa PĂ«rdorimi para tĂ« atij kujtesĂ«s.
>> Pra, nuk Ă«shtĂ« e madhe, sepse sa mĂ« shpejt si unĂ« lloji tjetĂ«r dhe pastaj tĂ« shtypura y,
Ă«shtĂ« e inicializuar me vlera qĂ« unĂ« dua.
Deri tani, le tĂ« shkojĂ« pĂ«rpara pak mĂ« tĂ« shpejtĂ«.
N pĂ«r tĂ« ardhshĂ«m.
Le tĂ« bĂ«jĂ« atĂ« pĂ«rsĂ«ri.
Por unĂ« nuk dua tĂ« goditur kjo kĂ«tu, sepse nĂ« qoftĂ« se unĂ«
duan tĂ« shohin se Ă§farĂ« po ndodh brenda e swap, Ă§farĂ« Ă«shtĂ« komanda?
>> Audienca: hapa.
>> DAVID J. Malan: hapa.
Pra, kjo hapa mua nĂ« njĂ« funksion, nĂ« vend se mbi tĂ«.
Dhe tani, Ă«shtĂ« pak i fshehtĂ« sinqerisht, por kjo Ă«shtĂ« vetĂ«m
thĂ«nĂ« mua unĂ« jam nĂ« linjĂ« 33 tani.
Dhe le ta bĂ«jmĂ« kĂ«tĂ« pĂ«rsĂ«ri.
Printo temp.
Vlera e mbeturinave, negative kĂ«tĂ« herĂ«, por kjo Ă«shtĂ« vetĂ«m ende njĂ« vlerĂ« tĂ« mbeturinave.
Pra, le tĂ« bĂ«jĂ« tjetĂ«r, temp tĂ« shtypura.
Ă‹shtĂ« nisur me 1, e cila ishte vlera e x, aka a.
>> Tani, ku janĂ« tonĂ« njĂ« dhe x vjen nga?
E pra, njoftim kryesore, ne quajtur kĂ«to vlerat x dhe y.
Ne pastaj kaloi ato nĂ« shkĂ«mbim si nĂ« vijim.
X arriti i pari, y presje.
Dhe pastaj, swap mund tĂ« telefononi ata x dhe y.
Por pĂ«r qartĂ«si, Ă«shtĂ« e duke i quajtur ato njĂ« dhe b.
Por a dhe b tani do tĂ« jenĂ« tĂ« kopje tĂ« x dhe y, respektivisht.
>> Pra, nĂ«se unĂ« kthehem nĂ« Gdb, temp Ă«shtĂ« tashmĂ« njĂ« dhe a Ă«shtĂ« tashmĂ« e.
Por nĂ«se i bĂ«j tjetĂ«r dhe tani bĂ«jnĂ« tĂ« shtypura a, a tashmĂ« Ă«shtĂ« lĂ«vizur gjatĂ«.
QumĂ«shti Ă«shtĂ« derdhur nĂ« ish- gotĂ« lĂ«ng portokalli-sĂ«, ose anasjelltas.
>> Dhe nĂ« qoftĂ« se unĂ« bĂ«j tjetĂ«r pĂ«rsĂ«ri, dhe tani nĂ« qoftĂ« se unĂ« tĂ« shtypura nga si njĂ« kontroll mendje e shĂ«ndoshĂ«,
njĂ« Ă«shtĂ« ende dy, por b Ă«shtĂ« tani njĂ«.
Sinqerisht, Ă«shtĂ« ende atje.
UnĂ« nuk bĂ«j kujdes atĂ« temp Ă«shtĂ«.
Por sa mĂ« shpejt qĂ« unĂ« tani lloji, le tĂ« themi, vazhdojnĂ« tĂ« kthehen, tani unĂ« jam nĂ« fund
programi.
Dhe pĂ«r fat tĂ« keq, x Ă«shtĂ« akoma njĂ« dhe y Ă«shtĂ« ende dy.
>> Pra, Ă§farĂ« ishte shĂ«rbimeve tĂ« gdb atje?
Ajo nuk e ka ndihmuar mua fix problemi nĂ« vetvete,
por me shpresĂ« tĂ« mĂ« ndihmojĂ« kuptojnĂ« atĂ« duke e kuptuar
se po, logjika ime Ă«shtĂ« e drejtĂ«, por kodi im nuk Ă«shtĂ« nĂ« fund tĂ« fundit qĂ« ka
njĂ« ndikim tĂ« pĂ«rhershĂ«m.
Pra, kjo Ă«shtĂ« njĂ« problem qĂ« ne jemi do tĂ« tani tĂ« zgjidhur sot.
>> Por le tĂ« marrĂ« atje me anĂ« tĂ« kĂ«saj.
String Ă«shtĂ« njĂ« gĂ«njeshtĂ«r.
Ajo, gjithashtu, nuk Ă«shtĂ« njĂ« lloj i tĂ« dhĂ«nave qĂ« ekziston nĂ« C. Kjo Ă«shtĂ«
qenĂ« sinonim pĂ«r disa koha pĂ«r diĂ§ka tjetĂ«r,
dhe ne mund tĂ« zbulojnĂ« se si mĂ« poshtĂ«.
>> MĂ« lejoni tĂ« shkoj pĂ«rpara dhe tĂ« hapur njĂ« program i quajtur krahasojnĂ«-0.
Dhe nĂ« vend se tĂ« shtypni kĂ«tĂ« jashtĂ«, ne do tĂ« fillojnĂ« tĂ« ecin nĂ«pĂ«r kodin
UnĂ« tashmĂ« e ka shkruar, por kjo Ă«shtĂ« vetĂ«m disa rreshta.
Pra, kjo Ă«shtĂ« e krahasojnĂ«-0.
Dhe gjĂ«ja e parĂ« qĂ« unĂ« jam duke bĂ«rĂ« po bĂ«het njĂ« linjĂ« tĂ« tekstit.
>> Por vini re atĂ« qĂ« unĂ« jam duke bĂ«rĂ« pĂ«r herĂ« tĂ« parĂ«.
Ă‡farĂ« Ă«shtĂ« e ndryshme nĂ« mĂ«nyrĂ« tĂ« qartĂ« nĂ« lidhje me linjĂ« 21?
NĂ« fakt, prit njĂ« minutĂ«.
Kjo Ă«shtĂ« kopje dy.
Kjo nuk Ă«shtĂ« edhe programi i drejtĂ«.
NĂ« rregull, vigjilent spoiler.
NĂ« rregull, kĂ«shtu qĂ« mos u mĂ«rzit se.
Kjo Ă«shtĂ« pĂ«rgjigje pĂ«r njĂ« pyetje tĂ« ardhmen.
>> KĂ«tu Ă«shtĂ« e krahasoni-0, dhe unĂ« jam i gati pĂ«r tĂ« marrĂ« njĂ« linjĂ« tĂ« tekstit.
Programi-sĂ« shumĂ« mĂ« e thjeshtĂ«.
Pra, kjo Ă«shtĂ« e drejtpĂ«rdrejtĂ«.
Kjo Ă«shtĂ« si njĂ« javĂ«, Week Dy sende nĂ« momentin. String s = GetString.
Tani, unĂ« them pĂ«rsĂ«ri kĂ«tu.
varg t = GetString.
Dhe pastaj, gjĂ«ja e fundit nĂ« kĂ«tĂ« program, si emrin e saj,
po unĂ« jam duke shkuar pĂ«r tĂ« pĂ«rpiqen pĂ«r tĂ« krahasuar ato.
>> Pra, nĂ«se s, vargu i parĂ«, barabartĂ« = t, atĂ«herĂ« unĂ« jam
do tĂ« thonĂ« se ju shkruani tĂ« njĂ«jtĂ«n gjĂ«.
TjetĂ«r, UnĂ« jam duke shkuar pĂ«r tĂ« thĂ«nĂ« ju shkruani gjĂ«ra tĂ« ndryshme.
Pra, le tĂ« pĂ«rpilojnĂ« dhe tĂ« drejtuar kĂ«tĂ« program.
Pra, ti krahasoni zero.
Duket e mirĂ«.
Nuk ka gabime pĂ«rmbledhje.
>> MĂ« lejoni tĂ« shkojnĂ« pĂ«rpara tani dhe lloji ./compare-0.
MĂ« lejoni tĂ« shkojnĂ« pĂ«rpara dhe tĂ« thonĂ« diĂ§ka : Daven dhe diĂ§ka: Rob.
Dhe unĂ« lloji gjĂ«ra tĂ« ndryshme.
Deri mĂ« tani, nĂ« mĂ«nyrĂ« tĂ« mirĂ«.
Programi duket tĂ« jetĂ« e saktĂ«.
>> Por le tĂ« drejtuar atĂ« pĂ«rsĂ«ri.
Thuaj diĂ§ka: Gabe.
TĂ« gjithĂ« tĂ« drejtĂ«.
Ndoshta unĂ« goditi space bar apo diĂ§ka shokuar.
Le tĂ« bĂ«jĂ« atĂ« pĂ«rsĂ«ri.
Pra Zamyla.
Zamyla.
GjĂ«ra tĂ« ndryshme.
Pra, Ă§farĂ« po ndodh?
>> Pra, ne kemi kĂ«to dy linja e Kodi, GetString duke u quajtur dy herĂ«.
Dhe pastaj, unĂ« jam thjesht duke u pĂ«rpjekur pĂ«r tĂ« krahasuar s dhe t.
Por ajo qĂ« me tĂ« vĂ«rtetĂ«, atĂ«herĂ« po ndodh?
E pra, shkrim dore tim gati kasap kĂ«tĂ« shembull disi.
Dhe le tĂ« vĂ«rtetĂ« tĂ« hedhin kĂ«tĂ« deri kĂ«tu, si.
>> Pra, ne kemi njĂ« linjĂ« si String s = GetString.
Pra, kjo Ă«shtĂ« thjesht e parĂ« Linja interesante nga ky program.
Por ajo qĂ« e gjithĂ« kjo kohĂ« ka qenĂ« ndodh nĂ«n kapuĂ§?
E pra, nĂ« tĂ« dorĂ«s sĂ« majtĂ« anĂ« Ă«shtĂ« varg, e cila Ă«shtĂ« njĂ« lloj ndryshore,
dhe Ă«shtĂ« quajtur s.
KĂ«shtu qĂ« unĂ« e di se kjo Ă«shtĂ« duke pĂ«rdorur kujtesĂ«n, ose RAM, nĂ« kompjuterin tim disi.
KĂ«shtu qĂ« unĂ« jam duke shkuar pĂ«r tĂ« abstrakte barazim se si njĂ« shesh.
32 bit, rezulton, por mĂ« shumĂ« se nĂ« tĂ« ardhmen.
Dhe pastaj, Ă§farĂ« po ndodh kĂ«tu?
>> E pra, GetString padyshim merr njĂ« varg nga pĂ«rdoruesit.
Dhe GetString mori Zamyla ose Gabe ose Daven.
Pra, le tĂ« zgjedhin parĂ« e atyre, qĂ« ishte Daven.
Pra nĂ« mĂ«nyrĂ« efektive, Ă§farĂ« GetString mori mĂ« nĂ« kĂ«tĂ« rast e parĂ« Ă«shtĂ« D-a-v-E-n.
Dhe pastaj, Ă§farĂ« tjetĂ«r ka ajo mĂ« jep fshehurazi?
Audienca: [padĂ«gjueshme]
DAVID J. Malan: Po, / 0 ose null karakter.
Pra, nĂ« mĂ«nyrĂ« efektive mĂ« dha njĂ« varg.
Por ne tashmĂ« e dimĂ« nga e mĂ«parshme duket se njĂ« varg Ă«shtĂ« vetĂ«m njĂ« grup
tĂ« karaktereve, dhe Ă«shtĂ« e ndĂ«rprerĂ« nga ky karakter tĂ« veĂ§antĂ« sentinel, / 0.
>> Por nĂ«se kjo Ă«shtĂ« e vĂ«rtetĂ« dhe kjo Ă«shtĂ« njĂ« shesh,
kjo Ă«shtĂ« qartĂ« njĂ« drejtkĂ«ndĂ«sh shumĂ« mĂ« tĂ« madhe.
Dhe nĂ« tĂ« vĂ«rtetĂ«, kjo Ă«shtĂ«, UnĂ« pretendojnĂ«, vetĂ«m 32 bit.
Dhe kjo Ă«shtĂ« nĂ« mĂ«nyrĂ« tĂ« qartĂ« mĂ« shumĂ« se 32 bit, sepse kjo Ă«shtĂ« ndoshta
tetĂ« plus tetĂ« plus tetĂ« plus tetĂ« plus tetĂ«,
vetĂ«m pĂ«r shkak tĂ« bytes nĂ« ASCII.
Si dreq do tĂ« shkojmĂ« pĂ«r tĂ« pĂ«rshtaten Daven nĂ« kĂ«tĂ« kuti tĂ« vogĂ«l kĂ«tu?
>> E pra, ajo qĂ« Ă«shtĂ« GetString bĂ«rĂ« nĂ« tĂ« vĂ«rtetĂ«?
E pra, ky rrjet kĂ«tu paraqet memorie kompjuteri tim ose RAM.
Pra, le tĂ« themi nĂ« mĂ«nyrĂ« arbitrare se nĂ«se secili prej tyre perfaqeson nje bajt,
atĂ«herĂ« ne mund tĂ« mendoj pĂ«r secilin byte si ka njĂ« adresĂ«,
si 33 Rruga e Oksfordit, ose 34 Oxford Street, apo 35 Oxford Street.
>> Pra, ashtu si shtĂ«pitĂ« kanĂ« adresat dhe ndĂ«rtesat kanĂ« adresat,
kĂ«shtu qĂ« tĂ« bĂ«jĂ« bytes individuale tĂ« kujtesĂ«s kanĂ« adresat ose numrat
qĂ« nĂ« mĂ«nyrĂ« unike identifikimin e tyre.
Tani, kjo Ă«shtĂ« arbitrar.
Por, pĂ«r ta mbajtur atĂ« tĂ« thjeshtĂ«, unĂ« jam duke shkuar pĂ«r tĂ« pĂ«rdorni hexadecimal vetĂ«m nga konventa,
por 0x do tĂ« thotĂ« asgjĂ« tjetĂ«r se "kjo Ă«shtĂ« heksadecimal."
dhe unĂ« jam duke shkuar pĂ«r tĂ« thonĂ« se "D" pĂ«rfundon nĂ« Byte NjĂ« nĂ« kujtesĂ«n.
>> I kam asgjĂ« tjetĂ«r ndodh nĂ« kujtesĂ«s, kĂ«shtu Daven mori vendin e parĂ«
nĂ« Byte One.
Kjo, pastaj, do tĂ« jetĂ« 0x2.
Kjo do tĂ« 0x3.
Kjo do tĂ« jetĂ« 0x4.
Kjo do tĂ« 0x5.
Kjo do tĂ« jetĂ« 0x6.
>> Por sapo ju tĂ« fillojnĂ« tĂ« mendojnĂ« nĂ« lidhje me atĂ« duke bĂ«rĂ« tĂ« kompjuterit
nĂ«n kapuĂ§, ju mund tĂ« filloni pĂ«r tĂ« dĂ«shmoj
si ju, disa vjet mĂ« parĂ«, do tĂ« kanĂ« zbatuar C vetvete.
Ă‡farĂ« Ă«shtĂ« GetString ndoshta returning-- shkak tĂ«
ndjehet si ajo nuk Ă«shtĂ« kthyer Daven, nĂ« vetvete,
sepse ai me siguri nuk do tĂ« pĂ«rshtaten nĂ« kĂ«tĂ« box-- pak
kĂ«shtu qĂ« ajo qĂ« Ă«shtĂ« e GetString ndoshta kthyer?
>> Audienca: [padĂ«gjueshme]
>> DAVID J. Malan: Vendndodhja e Daven.
Dhe kjo Ă«shtĂ« bĂ«rĂ« kĂ«tĂ« ndonjĂ«herĂ« qĂ« Week One.
Ă‡farĂ« GetString Ă«shtĂ« me tĂ« vĂ«rtetĂ« kthimit nuk Ă«shtĂ« njĂ« varg, nĂ« vetvete.
Kjo Ă«shtĂ« njĂ« nga gĂ«njeshtrat e vogla tĂ« bardha.
Ă‹shtĂ« kthyer adresĂ«n e string nĂ« kujtesĂ«, adresa unike.
Daven jeton nĂ« 33 Oxford Street.
Por mĂ« shumĂ« shkurtimisht, Gavin jeton nĂ« 0x1, Adresa Number One.
>> Pra, ajo qĂ« merr vĂ«nĂ« nĂ« kĂ«tĂ« pak kuti pastaj, tĂ« jetĂ« i qartĂ«,
Ă«shtĂ« vetĂ«m adresa e atij vargut.
Pra, e gjithĂ« kjo kohĂ«, kjo ka qenĂ« nĂ« vazhdim e sipĂ«r.
Por ajo qĂ« kjo lĂ« tĂ« kuptohet se tani Ă«shtĂ« se nĂ«se tĂ« gjithĂ« s ka
Ă«shtĂ« njĂ« numĂ«r nĂ« brendĂ«si tĂ« saj, i cili Ă«shtĂ« pĂ«r tĂ« ndaluar ju, programues,
nga vĂ«nĂ« ndonjĂ« numĂ«r nĂ« Ă§do ndryshueshme dhe vetĂ«m duke kĂ«rcyer
nĂ« atĂ« copĂ« e kujtesĂ«s?
Dhe me tĂ« vĂ«rtetĂ«, ne do tĂ« shohim qĂ« Ă«shtĂ« njĂ« kĂ«rcĂ«nim herĂ«n tjetĂ«r.
>> Por tani pĂ«r tani, kjo ndihet pamjaftueshme.
NĂ«se unĂ« them, merrni mua njĂ« string, mĂ« jepni Daven.
Por ju nuk duhet tĂ« vĂ«rtetĂ« jepni Daven.
TĂ« gjithĂ« ju mĂ« jepni Ă«shtĂ« adresa Daven-sĂ«.
Si mund ta dini me siguri ku Daven fillon dhe ends--
Historia e gjetjes weird-- ku Daven fillon dhe mbaron,
dhe pastaj, tjetĂ«r string nĂ« memorie fillon?
>> E pra, nĂ«se ju jeni tĂ« dorĂ«zuar mua fillimi i Daven,
nĂ« thelb, si mund ta di ku nĂ« fund tĂ« emrit tĂ« tij Ă«shtĂ«?
Ky karakter i veĂ§antĂ« null, e cila Ă«shtĂ« e gjitha mĂ« e rĂ«ndĂ«sishme tani
nĂ«se vargjet nĂ«n tĂ« individualitet identifikohen thjesht
nĂ« mĂ«nyrĂ« unike nga vendndodhja e tyre nĂ« kujtesĂ«n.
Pra, e gjithĂ« kjo kohĂ«, kjo Ă«shtĂ« atĂ« qĂ« Ă«shtĂ« duke ndodhur.
>> Pra, kur ne shohim tani nĂ« Kodi kĂ«tu, shpjegojnĂ«
nĂ« qoftĂ« se ju do tĂ« bug nĂ« linjĂ« 26.
Pse Ă«shtĂ« Zamyla dhe Zamyla ndryshme?
Pse Ă«shtĂ« Gabe dhe Gabe ndryshme?
Po, nĂ« shpinĂ«.
>> Audienca: Ata kanĂ« adresa tĂ« ndryshme.
>> DAVID J. Malan: Thjesht sepse ata kanĂ« adresa tĂ« ndryshme.
Sepse kur ju telefononi GetString pĂ«rsĂ«ri, tĂ« cilat unĂ« do tĂ« bĂ«j shpejt kĂ«tu,
nĂ« qoftĂ« se kjo Ă«shtĂ« linja e dytĂ«, string t, siĂ§ kam bĂ«rĂ« nĂ« atĂ« program,
Ă«shtĂ« e barabartĂ« me njĂ« tjetĂ«r thirrje pĂ«r GetString.
HerĂ«n tjetĂ«r unĂ« e quaj GetString, unĂ« jam duke shkuar
pĂ«r tĂ« marrĂ« njĂ« copĂ« tĂ« ndryshme tĂ« kujtesĂ«s.
>> GetString lejohet tĂ« pyesni operative
sistemi pĂ«r mĂ« shumĂ« dhe mĂ« shumĂ« memorie.
Kjo nuk do tĂ« ripĂ«rdorimin e njĂ«jtĂ« gjashtĂ« bytes Ă§do herĂ« tĂ« vetme.
Ajo do tĂ« marrĂ« njĂ« tĂ« re copĂ« e kujtesĂ«s, e cila
do tĂ« thotĂ« t do tĂ« merrni disa vlera tĂ« tjera mbi kĂ«tu.
>> Pra, kur tĂ« bĂ«j s barabartĂ« = t, ju nuk jeni tĂ« krahasuar
D kundĂ«r kĂ«saj dhe njĂ« kundĂ«r kjo dhe V kundĂ«r kĂ«saj.
Ju jeni duke e krahasuar kĂ«tĂ« kundĂ«r kĂ«saj, e cila
sinqerisht Ă«shtĂ« useless-- goxha useful-- Ă«shtĂ« shumĂ« e kotĂ«, pasi qĂ« me tĂ« vĂ«rtetĂ«
kujdeset ku vargjet janĂ« nĂ« kujtesĂ«n?
>> Dhe me tĂ« vĂ«rtetĂ«, ne nuk kemi.
Dhe ne nuk jemi duke shkuar pĂ«r fillojnĂ« veĂ§anĂ«risht i kujdesshĂ«m.
VetĂ«m pĂ«r aq sa mete mund tĂ« lindin dhe kĂ«rcĂ«nimet e sigurisĂ« mund tĂ« lindin vullnetin
ne fakt tĂ« fillojnĂ« tĂ« kujdesen pĂ«r kĂ«tĂ«.
Pra, le tĂ« rregulluar kĂ«tĂ« problem.
Rezulton, ju rregullohet super thjesht.
>> Dhe le tĂ« vĂ«rtetĂ«, para se unĂ« tregojnĂ« se pĂ«rsĂ«ri, Ă§farĂ« do
tĂ« bĂ«ni nĂ« qoftĂ« se nĂ« njĂ« klasĂ« CS50, dhe keni pasur pĂ«r tĂ« zbatuar
njĂ« krahasim kundĂ«r dy vargjet.
Ju nĂ« mĂ«nyrĂ« tĂ« qartĂ« nuk mund tĂ« pĂ«rdorni vetĂ«m s barabartĂ« = t.
Por vetĂ«m logjikisht, sa do ta krahasojmĂ« kĂ«tĂ« varg
kundĂ«r kĂ«tij vargut duke pĂ«rdorur kodin e C?
Po.
>> Audienca: VetĂ«m tĂ« bĂ«jĂ« pĂ«r lak [padĂ«gjueshme]
DAVID J. Malan: Perfect.
Audienca: [padĂ«gjueshme]
DAVID J. Malan: Po.
VetĂ«m tĂ« pĂ«rdorni njĂ« pĂ«r lak ose njĂ« ndĂ«rsa lak apo Ă§farĂ«do.
Por vetĂ«m tĂ« aplikoni idenĂ« themelore se nĂ« qoftĂ« se kjo Ă«shtĂ« njĂ« copĂ« e kujtesĂ«s ose njĂ« grup
dhe kjo Ă«shtĂ«, iterate mbi dy nĂ« tĂ« njĂ«jtĂ«n kohĂ«.
Dhe vetĂ«m krahasoni letra.
>> Dhe ju keni marrĂ« tĂ« jetĂ« njĂ« pak tĂ« kujdesshĂ«m, sepse ju
nuk duan njĂ« gisht tĂ« kaloj tjera
sepse njĂ« varg Ă«shtĂ« mĂ« gjatĂ« se sa tĂ« tjera.
Pra, ju jeni do tĂ« dĂ«shironi tĂ« shikoni pĂ«r kjo vlerĂ« tĂ« veĂ§antĂ« nĂ« fund, null.
Por kjo Ă«shtĂ« me tĂ« vĂ«rtetĂ«, nĂ« fund, aq e thjeshtĂ« sa qĂ«.
Dhe sinqerisht, ne nuk kemi nevojĂ« pĂ«r tĂ« reinvent timon atĂ«.
KĂ«tu Ă«shtĂ« Version Dy.
Dhe ajo qĂ« unĂ« jam duke shkuar pĂ«r tĂ« thĂ«nĂ« kĂ«tu Ă«shtĂ« se nĂ« vend tĂ« krahasimit s barabartĂ« = t,
UnĂ« jam nĂ« vend qĂ« do tĂ« them, nĂ«se vargu krahasimi i s presje t barabartĂ« = 0.
Tani, Ă§farĂ« Ă«shtĂ« string krahasoni?
>> Kjo rezulton, kjo Ă«shtĂ« njĂ« funksion qĂ« vjen me C, qĂ«llimi i tĂ« cilit nĂ« jetĂ«
Ă«shtĂ« pĂ«r tĂ« krahasuar dy vargjet.
Dhe trazim tĂ« krahasuar, nĂ«se lexojmĂ« saj faqe apo dokumentacionin ose CS50 njeri
referencĂ«, ajo do tĂ« thjesht ju them se trazim
krahasoni kthimit ose njĂ« negative Numri i ose njĂ« numĂ«r pozitiv ose zero,
ku do tĂ« thotĂ« zero ata janĂ« tĂ« barabartĂ«.
>> Pra thjesht hamendje.
Ă‡farĂ« mund tĂ« thotĂ« nĂ«se llokoĂ§is kthimit tĂ« krahasuar
vlera negative apo vlera pozitive?
Audienca: MĂ« e madhe ose mĂ« pak se.
DAVID J. Malan: Po, madhe se ose mĂ« pak se.
Pra, nĂ« qoftĂ« se ju tĂ« kĂ«rkuar pĂ«r tĂ« zgjidhur njĂ« tĂ«rĂ«si bandĂ« e vargjet nĂ« njĂ« dictionary--
si ne do pĂ«rfundimisht poshtĂ« road-- Funksioni i pĂ«rsosur pĂ«r tĂ« pĂ«rdorur potencialisht,
sepse kjo do tĂ« bĂ«jĂ« qĂ« krahasimi i strings pĂ«r ju, dhe tregoni
ju bĂ«n njĂ« vijĂ« para b, ose bĂ«n b vijnĂ« pĂ«rpara njĂ« alfabetik.
Ne mund tĂ« bĂ«jĂ« pikĂ«risht kĂ«tĂ«.
>> Dhe njoftim kam bĂ«rĂ« njĂ« tjetĂ«r gjĂ« nĂ« kĂ«tĂ« shembull.
Ă‡farĂ« tjetĂ«r ka ndryshuar mĂ« e lartĂ« deri nĂ« kĂ«tĂ« funksion kryesor?
Char *.
Dhe kjo Ă«shtĂ« se gĂ«njeshtĂ«r tjetĂ«r bardhĂ«.
E gjithĂ« kjo kohĂ«, kur ju keni qenĂ« i shkruar nĂ« varg,
ne kemi qenĂ« nĂ« fshehtĂ«si rishkrimin string si char * nĂ« mĂ«nyrĂ« qĂ« tingĂ«llimĂ« tĂ« vĂ«rtetĂ«
ju kupton.
>> Me fjalĂ« tĂ« tjera, nĂ« CS50.h dhe si ne do tĂ« shohim nĂ« fund,
kemi bĂ«rĂ« njĂ« sinonim i quajtur varg kjo Ă«shtĂ« e njĂ«jta gjĂ« si char *.
Dhe tani pĂ«r tani, e di vetĂ«m se *, NĂ« kĂ«tĂ« kontekst, tĂ« paktĂ«n,
do tĂ« thotĂ« adresĂ«n.
>> AdresĂ«n e kujt?
E pra, fakti qĂ« kam thĂ«nĂ« char *, dhe nuk int * ose noton *,
do tĂ« thotĂ« se char * Ă«shtĂ« adresa e njĂ« char.
Pra, kjo kuti pak kĂ«tu, aka string, Ă«shtĂ« me tĂ« vĂ«rtetĂ« i tipit char *,
e cila Ă«shtĂ« thjesht njĂ« mĂ«nyrĂ« e sofistikuar pĂ«r tĂ« thĂ«nĂ«, nĂ« kĂ«tĂ« kuti do tĂ« shkojĂ« njĂ« adresĂ«.
Dhe Ă§farĂ« bĂ«n qĂ« adresa referohen?
Me sa duket, njĂ« char.
>> Por ne mund absolutisht kanĂ« int * dhe gjĂ«ra tĂ« tjera.
Por tani pĂ«r tani, char * Ă«shtĂ« me tĂ« vĂ«rtetĂ« mĂ« e drejtpĂ«rdrejtĂ« dhe njĂ« interes.
Pra, ky problem Ă«shtĂ« duke shkuar tĂ« rritet, edhe pse, pĂ«rsĂ«ri.
>> Supozoni I hapur kĂ«tĂ« program.
Le tĂ« shohim nĂ«se tani ne mund tĂ« parashikojnĂ« Ă§farĂ« Ă«shtĂ« e gabuar me kĂ«tĂ« kod.
Pra, nĂ« kĂ«tĂ« program, kopje-0, unĂ« jam duke shkuar pĂ«r tĂ« shkuar pĂ«rpara dhe pĂ«rsĂ«ri e quajnĂ«
GetString dhe ruajtur vlerĂ«n nĂ« s.
>> Dhe pastaj, pse jam unĂ« duke bĂ«rĂ« kĂ«tĂ«, vetĂ«m si njĂ« kujtim nga javĂ«t e fundit?
Ne e bĂ«mĂ« tĂ« themi se GetString nganjĂ«herĂ« kthehet null.
Ă‡farĂ« do tĂ« thotĂ« nĂ«se GetString kthehet null?
DiĂ§ka shkoi keq.
Kjo ndoshta do tĂ« thotĂ« vargu Ă«shtĂ« shumĂ« e madhe, nga e kompjuterit e kujtesĂ«s.
Kjo ndodh super, super, super rrallĂ«, por kjo mund tĂ« ndodhĂ«.
Ne duam qĂ« tĂ« shikoni pĂ«r tĂ«, dhe kjo Ă«shtĂ« e gjitha ne jemi duke bĂ«rĂ«.
>> Sepse ne do tĂ« shohim tani, nĂ« qoftĂ« se ju nuk e bĂ«ni filloni duke kontrolluar zakonisht pĂ«r gjĂ«ra tĂ«
si null, ju mund tĂ« nĂ« tĂ« vĂ«rtetĂ« tĂ« fillojĂ« pĂ«r tĂ« shkuar
pĂ«r adresat nĂ« kujtesĂ«n qĂ« janĂ« tĂ« pavlefshme.
Dhe ju do tĂ« jeni pĂ«r tĂ« filluar inducing gjithnjĂ« e mĂ« shumĂ« gabime segmentimit.
Ose nĂ« njĂ« Mac apo PC, vetĂ«m duke shkaktuar njĂ« kompjuter pĂ«r tĂ« ul receptorin e telefonit
ose njĂ« program pĂ«r tĂ« ngrirĂ«, potencialisht.
>> Deri tani, unĂ« pretendojnĂ« nĂ« kopje-0.c, qĂ« unĂ« jam duke shkuar pĂ«r tĂ« kopjuar kĂ«to vargjet nga rruga
i linjĂ«s 28.
Dhe pastaj, unĂ« jam duke shkuar pretendimit nĂ« fund
kĂ«tu qĂ« unĂ« jam duke shkuar pĂ«r tĂ« ndryshuar njĂ« prej tyre.
>> Pra kĂ«tĂ« njoftim.
UnĂ« jam duke e quajtur strlen tonĂ« tĂ« vjetĂ«r mik.
Dhe vetĂ«m tĂ« shpjegojĂ« nĂ« anglisht Ă§farĂ« kjo linjĂ« 34 Ă«shtĂ« duke bĂ«rĂ«?
Ă‡farĂ« do t kllapa 0 pĂ«rfaqĂ«sojnĂ« nĂ« tĂ« majtĂ«.
Po.
>> Audienca: Karakteri i parĂ« i t?
DAVID J. Malan: karakteri i parĂ« i t.
Kjo ishte.
Karakteri i parĂ« i t, unĂ« dua tĂ« caktojĂ« versionin uppercase
tĂ« karakterit tĂ« parĂ« nĂ« t.
Pra, kjo Ă«shtĂ« kapitalizuar Letra e parĂ«.
Dhe pastaj, gjĂ«ja e fundit qĂ« unĂ« bĂ«j nĂ« kĂ«tĂ« program Ă«shtĂ« pohoj kĂ«tu Ă«shtĂ«
origjinal, s, dhe kĂ«tu Ă«shtĂ« kopje, t.
>> Por bazuar nĂ« histori ne vetĂ«m tha pĂ«r atĂ« qĂ« vargjet tĂ« vĂ«rtetĂ« janĂ«,
Ă§farĂ« Ă«shtĂ« linjĂ« 28 vĂ«rtetĂ« duke bĂ«rĂ«, dhe Ă§farĂ« Ă«shtĂ«
bug rezultuar shkuar tĂ« jetĂ« nĂ« ekran?
>> Pra, sĂ« pari, pyetja e parĂ«, 28.
Ă‡farĂ« Ă«shtĂ« = varg t s me tĂ« vĂ«rtetĂ« duke bĂ«rĂ«?
NĂ« qoftĂ« se ne kemi mbi-dorĂ«n e majtĂ« Ana kĂ«tu = varg t s;
qĂ« mĂ« jep njĂ« kuti kĂ«tu dhe njĂ« kuti kĂ«tu.
Dhe mendoj kjo adresĂ« Ă«shtĂ« 0x, le tĂ« themi, 50 kĂ«tĂ« herĂ«, nĂ« mĂ«nyrĂ« arbitrare.
Ă‡farĂ« bĂ«n = varg t s bĂ«jnĂ« nĂ«n kapuĂ§?
>> Audienca: [padĂ«gjueshme]
>> DAVID J. Malan: Ajo ruan kujtesĂ«n adresojnĂ« atje, kĂ«shtu qĂ« 0x50 shkon atje.
Pra, nĂ«se tani, unĂ« shkoj pĂ«r tĂ« parĂ« karakter nĂ« t dhe uppercase atĂ«,
Ă§farĂ« jam unĂ« nĂ« mĂ«nyrĂ« efektive duke bĂ«rĂ« tĂ« s?
UnĂ« jam me tĂ« vĂ«rtetĂ« duke bĂ«rĂ« tĂ« njĂ«jtĂ«n gjĂ«, apo jo?
Sepse nĂ«se Adresa 0x50-- dhe vetĂ«m, unĂ« nuk kanĂ« shumĂ« vend nĂ« bord kĂ«tu,
por supozojmĂ« se kjo Ă«shtĂ« e 0x50 poshtĂ« kĂ«tu, diku nĂ« kujtesĂ« tĂ« kompjuterit tim.
>> Dhe unĂ«, pĂ«r shembull, Gabe nĂ« Fjala kĂ«tu, si kjo.
Dhe unĂ« kam thĂ«nĂ« t kllapa 0 merr kapitalizuar.
E pra, t kllapa 0 Ă«shtĂ« Letra e parĂ« nĂ« t.
Pra, pak g do tĂ« bĂ«het G. i madh Por problemi
Ă«shtĂ«, Ă§farĂ« bĂ«n s gjithashtu tregojnĂ« pĂ«r?
>> Audienca: E njĂ«jta gjĂ«.
>> DAVID J. Malan: E njĂ«jta gjĂ« e saktĂ«.
Pra, njĂ« shpjegim i thjeshtĂ« ndoshta, edhe nĂ« qoftĂ« se sintaksa Ă«shtĂ« pak i Ă§uditshĂ«m.
Pra, le ta bĂ«jmĂ« kĂ«tĂ«.
BĂ«ni kopje-0 dhe pastaj ./copy-0.
Thuaj diĂ§ka: Gabe.
Dhe pĂ«r fat tĂ« keq, tĂ« dy ata tani janĂ« kapitalizuar,
por pĂ«r se themel Arsyeja qĂ« ne jemi thjesht
tani qĂ« kanĂ« tĂ« bĂ«jnĂ« me adresat.
>> Deri sa nuk kemi tĂ« fillojnĂ« tĂ« address-- nuk ka pun intended--
si nuk kemi tĂ« fillojnĂ« pĂ«r tĂ« adresuar ky problem i veĂ§antĂ«?
E pra, nĂ« copy1.c, gjĂ«rat janĂ« duke shkuar pĂ«r tĂ« marrĂ« njĂ« pak mĂ« e komplikuar.
Por unĂ« do tĂ« pretendojnĂ« njĂ« zgjidhje e konceptualisht e thjeshtĂ«.
>> Pra, shumĂ« pĂ«r tĂ« marrĂ« nĂ« shikim tĂ« parĂ«.
Nuk do tĂ« jetĂ« e lehtĂ« pĂ«r tĂ« parĂ« herĂ« qĂ« tĂ« shtypni atĂ«, ndoshta,
por nĂ«se problemi Ă«shtĂ« se thjesht duke bĂ«rĂ« = t s vetĂ«m
kopje adresa, Ă§farĂ«, pĂ«rsĂ«ri nĂ« qoftĂ« se unĂ« mund tĂ« vini pĂ«r ju,
do tĂ« jetĂ« zgjidhje pĂ«r tĂ« vĂ«rtetĂ« kopjimi njĂ« varg?
>> Audienca: Ne do tĂ« ndoshta pĂ«rdorni njĂ« lak pĂ«rsĂ«ri.
>> DAVID J. Malan: Po.
Pra, ne do tĂ« duhet njĂ« lak pĂ«rsĂ«ri.
Dhe pĂ«r shkak se nĂ« qoftĂ« se ne duam tĂ« kopje njĂ« s varg nĂ« njĂ« tjetĂ«r varg,
ne ndoshta doni tĂ« bĂ«ni atĂ« karakter nga karakteri.
Por problemi Ă«shtĂ«, nĂ« qoftĂ« se kjo Ă«shtĂ« me origjinĂ« s,
tani ne kemi nevojĂ« pĂ«r tĂ« filluar nĂ« mĂ«nyrĂ« tĂ« qartĂ« caktimin e kujtesĂ«s pĂ«r t.
>> Me fjalĂ« tĂ« tjera, le tĂ« shlyen kĂ«tĂ« pĂ«r herĂ« tĂ« fundit.
NĂ«se kjo Ă«shtĂ« String s = GetString.
Dhe le tĂ« vĂ«nĂ« kĂ«tĂ« deri kĂ«tu, si.
Kjo Ă«shtĂ« GetString.
Dhe pastaj, foto pĂ«r diĂ§ka si kjo do tĂ« jetĂ« si mĂ« parĂ«,
g-a-b-e- / 0.
Kjo duket njĂ« diĂ§ka tĂ« vogĂ«l si kjo.
Dhe s pĂ«r kĂ«tĂ« arsye, ne e quajmĂ« kĂ«tĂ« 0x50, dhe qĂ« do tĂ« jetĂ« 51, 52.
>> Pra, kjo Ă«shtĂ« 0x50.
Dhe pastaj, unĂ« bĂ«j varg t.
NĂ« kujtim, qĂ« vetĂ«m do tĂ« mĂ« jepni njĂ« shesh tĂ« vogĂ«l si kjo.
Pra, Ă§farĂ« Ă«shtĂ« hapi kyĂ§ tani?
NĂ«se unĂ« dua tĂ« kopjoni s nĂ« t, Ă§farĂ« bosh nuk kemi nevojĂ« pĂ«r tĂ« mbushur nĂ« kĂ«tu?
Apo Ă§farĂ« na duhet tĂ« bĂ«jĂ« nĂ« nivel tĂ« lartĂ«?
Po?
Dikush?
Po.
>> Audienca: Ne duhet tĂ« [padĂ«gjueshme].
DAVID J. Malan: Po, ne duhet tĂ« plotĂ«soni kĂ«tĂ« bosh.
UnĂ« nuk mund tĂ« kopjoni dhe pastaj germa emrin Gabe-sĂ«
deri sa unĂ« kĂ«rkoj tĂ« sistemit operativ pĂ«r njĂ« copĂ« e kujtesĂ«s
kjo Ă«shtĂ« tĂ« paktĂ«n po aq i madh sa nĂ« origjinal.
KĂ«shtu qĂ« na lĂ« me njĂ« pyetje.
>> Si mund tĂ« kĂ«rkojĂ« tĂ« sistemit operativ nuk vetĂ«m pĂ«r njĂ« pointer-- tĂ« thjeshtĂ« tĂ« vogĂ«l
pasi kjo Ă«shtĂ« quajtur, njĂ« adresa, a nuk pointer--
pĂ«r njĂ« kuti tĂ« thjeshtĂ« tĂ« vogĂ«l si kjo quhet njĂ« varg?
Si mund tĂ« pyesni operative sistem pĂ«r njĂ« copĂ« tĂ« madhe tĂ« kujtesĂ«s?
Deri tani, unĂ« kam marrĂ« vetĂ«m qĂ« i mbĂ«shtesin nĂ« mĂ«nyrĂ« indirekte duke telefonuar GetString.
Pra, si Ă«shtĂ« e GetString madje edhe duke marrĂ« kujtimin e saj?
>> E pra, ajo rezulton se ka ky funksion tjetĂ«r kĂ«tu
qĂ« ne tani do tĂ« fillojnĂ« tĂ« pĂ«rdorin.
Tani, kjo duket than-- mĂ«nyrĂ« mĂ« tĂ« fshehtĂ« dhe unĂ« jam i vetmi qĂ« mund tĂ« shihni it--
kĂ«tĂ« linjĂ« duket rruga mĂ« e fshehtĂ« atĂ«herĂ« ajo duhet nĂ« shikim tĂ« parĂ«.
Por le tĂ« vĂ« nĂ« lojĂ« atĂ« larg.
>> NĂ« anĂ«n e majtĂ«, unĂ« kam char * t.
Pra, nĂ« anglisht, le tĂ« fillojĂ« pĂ«r tĂ« formuluar dĂ«nimet e duhura nĂ« zhargon teknik.
Pra, kjo Ă«shtĂ« caktimin e njĂ« variabĂ«l i tipit char * quajtur t.
Tani, Ă§farĂ« do tĂ« vĂ«rtetĂ« do tĂ« thotĂ«?
>> E pra, qĂ« do tĂ« thotĂ«, Ă§farĂ« jam unĂ« do pĂ«r tĂ« vĂ«nĂ« nĂ« kĂ«tĂ« variabĂ«l tĂ« quajtur t?
NjĂ« adresĂ« e njĂ« char.
Pra, kjo Ă«shtĂ« vetĂ«m e thjeshtĂ«, MĂ«nyra mĂ« e arsyeshme
e pĂ«rshkruan anĂ«n e majtĂ«.
KĂ«shtu qĂ« krijon kjo kuti kĂ«tu vetĂ«m.
Pra, nĂ« anĂ«n e djathtĂ«, me sa duket, do
pĂ«r tĂ« caktuar se madhe copĂ« e kujtesĂ«s se si?
Pra, le tĂ« vĂ« nĂ« lojĂ« kĂ«tĂ« larg.
>> Ă‹shtĂ« e madhe nĂ« shikim tĂ« parĂ«, por Ă§farĂ« po ndodh brenda kĂ«tu?
SĂ« pari, nuk ka e malloc, e cila Ă«shtĂ« me sa duket miku ynĂ« i ri,
"Memorie ndajĂ«."
Pra, ky Ă«shtĂ« argumenti duke u kaluar nĂ« tĂ«, kĂ«shtu qĂ« Ă«shtĂ« njĂ« argument mjaft i madh.
Pra, le tĂ« vĂ« nĂ« lojĂ« kĂ«tĂ« larg.
>> strlen i s, natyrisht, paraqet the--
Audienca: Numri i karaktereve.
DAVID J. Malan: VetĂ«m Numri i karaktereve nĂ« s.
Pra, gjatĂ«sia e s, string origjinale.
Pra, G-a-b-e.
Pra, kjo Ă«shtĂ« ndoshta katĂ«r nĂ« kĂ«tĂ« rast.
Pse jam unĂ« duke bĂ«rĂ« +1 pas duke e quajtur strlen tĂ« s?
Audienca: [padĂ«gjueshme]
DAVID J. Malan: PĂ«r se karakter tĂ« veĂ§antĂ« null.
NĂ«se ju mĂ« pyesni se Ă§farĂ« Ă«shtĂ« gjatĂ«sia e Emri Gabe-sĂ«, unĂ« jam duke shkuar pĂ«r tĂ« thĂ«nĂ« katĂ«r.
NĂ«n kapuĂ§, edhe pse, unĂ« duhet qĂ« byte pestĂ« pĂ«r karakterin null.
Pra, kjo Ă«shtĂ« arsyeja pse unĂ« jam duke bĂ«rĂ« +1.
>> Tani vetĂ«m nĂ« rast se ju jeni duke kĂ«tĂ« program nĂ« njĂ« kompjuter tjetĂ«r se, tĂ« themi,
aplikim CS50, ku madhĂ«sia e njĂ« char
mund tĂ« jenĂ« tĂ« ndryshme nga computer-- tim
rezulton se unĂ« mund tĂ« telefononi kĂ«tĂ« sizeof operator, thjesht pyesni kompjuterin,
Ă§farĂ« Ă«shtĂ« madhĂ«sia e njĂ« char nĂ« kĂ«tĂ« kompjuter?
>> Dhe duke shumĂ«zuar pesĂ« nĂ« kĂ«tĂ« shembull nga madhĂ«sia e njĂ« char, e cila
nĂ« shumicĂ«n e kompjuterĂ«ve do tĂ« vetĂ«m tĂ« jetĂ« njĂ«, e malloc
do tĂ« ndajĂ« pĂ«r mua kjo madh copĂ« e kujtesĂ«s mbi kĂ«tu nĂ« tĂ« djathtĂ«.
Dhe ajo do tĂ« return-- kjo Ă«shtĂ« njĂ« function-- kĂ«shtu qĂ« Ă«shtĂ« e
do tĂ« kthehen tek unĂ« Ă§farĂ«?
Audienca: Adresa?
DAVID J. Malan: adresa e Ă§farĂ«?
Audienca: Nga kujtesĂ«s kjo ndarĂ«?
DAVID J. Malan: Nga memorie tĂ« ndarĂ«.
KĂ«shtu qĂ« unĂ« nuk kam asnjĂ« ide, sinqerisht, ku kjo do tĂ« pĂ«rfundojĂ«.
UnĂ« do tĂ« propozojĂ« qĂ« ajo do tĂ« pĂ«rfundojĂ« deri nĂ« 0x88.
KrejtĂ«sisht arbitrare, por diku tjetĂ«r se 0x50,
pĂ«r shkak tĂ« sistemit operativ, Ă§farĂ« Windows dhe Mac OS tĂ« bĂ«jĂ« pĂ«r mua, Ă«shtĂ«
sigurohuni se ai Ă«shtĂ« duke i dhĂ«nĂ« me chunks tĂ« ndryshme tĂ« RAM.
>> Pra, kjo Ă«shtĂ« vlera e ku ky copĂ« e kujtesĂ«s mund tĂ« pĂ«rfundojnĂ«.
Pra, kjo Ă«shtĂ« ajo qĂ« pĂ«rfundon kĂ«tu, 0x88.
Deri tani nĂ« mĂ«nyrĂ« tĂ« qartĂ«, unĂ« mund ta kuptoj se kjo nuk Ă«shtĂ« e njĂ«jtĂ« si kjo,
sepse ata janĂ« treguar nĂ« chunks tĂ« ndryshme tĂ« kujtesĂ«s.
Pra, nĂ«se unĂ« tani nĂ« tĂ« vĂ«rtetĂ« dua tĂ« kopjoni kĂ«tĂ« nĂ«, le tĂ« bĂ«jĂ« zgjidhjen e propozuar.
>> Le tĂ« shkojĂ«, tĂ« krijojĂ« njĂ« pĂ«r lak, dhe tĂ« bĂ«jĂ« t kllapa i merr s kllapa i.
Sepse tani unĂ« mund tĂ« pĂ«rdorni kjo array-si simbol,
sepse edhe pse e malloc shumĂ« generically ndan mua kujtesĂ«s,
memorie Ă«shtĂ« bytes vetĂ«m puqur.
Byte, byte, bajt, tĂ« kthyer prapa nĂ« shpinĂ«.
>> UnĂ« mund me siguri si njĂ« programues trajtojnĂ« atĂ« si njĂ« grup, i cili
do tĂ« thotĂ« unĂ« mund tĂ« pĂ«rdorni kĂ«tĂ« nĂ« fund tĂ« njohur simbol i vetĂ«m disa kllapa katrore.
>> Pra, mĂ« lejoni tĂ« bĂ«j njĂ« pauzĂ« atje, sepse kjo Ă«shtĂ« njĂ« shumĂ« tĂ« gjithĂ« nĂ« tĂ« njĂ«jtĂ«n kohĂ«, edhe
pse ideja themelore nĂ« radhitje Ă«shtĂ« se string, tĂ« gjithĂ« kĂ«tĂ« kohĂ«,
nuk Ă«shtĂ« njĂ« lloj i ri dhĂ«nave nĂ« vetvete.
Ă‹shtĂ« vetĂ«m njĂ« tĂ« ashtu-quajtur akrep, njĂ« adresĂ« e njĂ« karakter,
e cila vetĂ«m do tĂ« thotĂ« se Ă«shtĂ« njĂ« numĂ«r i qĂ« nga konventa e njeriut
ne priren pĂ«r tĂ« shkruar si 0x diĂ§ka.
>> Por kjo Ă«shtĂ« vetĂ«m njĂ« numĂ«r, si 33 Oxford Street,
e cila ndodh tĂ« jetĂ« Adresa e ndĂ«rtesĂ«s CS-sĂ«.
Ă‡do pyetje mbi kĂ«to detaje?
Po?
>> Audienca: Pse ne kontrolloni pĂ«r t barabartĂ« tek null?
>> DAVID J. Malan: Pse nuk kemi kontrolloni pĂ«r t barabartĂ« me null?
NĂ«se lexojmĂ« documentation-- question-- madhe pĂ«r malloc,
kjo do tĂ« thotĂ« nĂ« shtyp gjobĂ«, ndonjĂ«herĂ« malloc mund tĂ« kthehen null,
ashtu si GetString.
Dhe me tĂ« vĂ«rtetĂ«, GetString kthen null nĂ« qoftĂ« se, nga ana tjetĂ«r, e malloc kthen null,
sepse GetString pĂ«rdor malloc.
>> Dhe kjo mund tĂ« ndodhĂ« nĂ«se OS, Mac OS, Windows, Ă§do gjĂ«, Ă«shtĂ« thjesht
jashtĂ« kujtesĂ«s pĂ«r ju.
Pra, kjo Ă«shtĂ« ajo qĂ« ka ndodhur atje.
>> Dhe mĂ« lejoni tĂ« zbulojĂ« njĂ« gjĂ« tjetĂ«r qĂ« vetĂ«m mund tĂ« fryj mendjen tuaj
ose plotĂ«sisht tĂ« jetĂ« shumĂ« larg mbi linjĂ«.
Por mĂ« lejoni tĂ« ndalem njĂ«jtĂ« pĂ«r lak pĂ«r kopjim,
tĂ« cilĂ«n njĂ« moment mĂ« parĂ«, risjell ishte kĂ«tĂ«. t kllapa i merr s kllapa i.
>> E bukur dhe user-friendly.
Ndjehet si Week Dy pĂ«rsĂ«ri.
Por ky version nĂ« fakt mund tĂ« jetĂ« e rishkruhen si ky, i cili duket i fshehtĂ«.
Kjo Ă«shtĂ« njĂ« teknikĂ« tĂ« quajtur akrep aritmetike, adresa aritmetikĂ«.
Por pse e bĂ«n kĂ«tĂ« punĂ«?
>> Tani annoyingly, AutorĂ«t e C vendosi tĂ« pĂ«rdorĂ«
simboli * pĂ«r qĂ«llime tĂ« ndryshme.
Ne kemi parĂ« qĂ« pĂ«rdoret njĂ« herĂ« tashmĂ«, char *, qĂ« do tĂ« thotĂ« "mĂ« jepni njĂ« ndryshore
qĂ« do tĂ« pĂ«rmbajĂ« adresa e njĂ« char. "
* Pra, char nĂ« kĂ«tĂ« kontekst do tĂ« thotĂ« "mĂ« jep mua njĂ« ndryshore."
>> PĂ«r fat tĂ« keq, nĂ« qoftĂ« se ju pĂ«rdorni * pa njĂ« fjalĂ« para saj, si shkrumb,
Ă«shtĂ« quajtur tani Operatori dereference.
Dhe ne do tĂ« shohim mĂ« shumĂ« tĂ« kĂ«tĂ« para se tĂ« gjatĂ«.
Por ai thjesht do tĂ« thotĂ« "shkoni atje."
Ă‹shtĂ« si duke thĂ«nĂ«, nĂ« qoftĂ« se dikush i dorĂ«zoi mua nĂ« njĂ« copĂ« letĂ«r "33 Oxford Street"
nĂ« qoftĂ« se unĂ« bĂ«j "* 33 Oxford Street", qĂ« do tĂ« thotĂ« "ShkojnĂ« poshtĂ« rrugĂ«s pĂ«r tĂ« ndĂ«rtesĂ«s CS."
>> Pra * thjesht do tĂ« thotĂ« tĂ« shkoni atje nĂ«se nuk ka asnjĂ« fjalĂ« nĂ« frontin e tij.
Pra, Ă§farĂ« Ă«shtĂ« t, tĂ« jetĂ« i qartĂ«?
t Ă«shtĂ« adresa e copĂ« e kujtesĂ«s qĂ« Ă«shtĂ« dhĂ«nĂ« pĂ«rsĂ«ri nĂ« mua.
s Ă«shtĂ« adresa e asaj, qĂ« tĂ« jetĂ« i qartĂ«, nĂ« shembullin e kemi diskutuar,
i Gabe renditshĂ«m?
s Ă«shtĂ« adresa of--
Audienca: string.
DAVID J. Malan: Nga emri origjinal Gabe-sĂ«.
Pra, kjo Ă«shtĂ« adresa e kjo copĂ« e kujtesĂ«s.
Pra, nĂ«se unĂ« them t + i-- i, njoftim, Ă«shtĂ« vetĂ«m miku ynĂ« i vjetĂ«r.
Ă‹shtĂ« vetĂ«m njĂ« variabĂ«l indeks qĂ« Ă«shtĂ« iterating nga zero nĂ« dorĂ«
nĂ« gjatĂ«sinĂ« e string s.
KĂ«shtu ajo do tĂ« jetĂ« zero, atĂ«herĂ«, pastaj dy, pastaj tre, pastaj katĂ«r.
Pra, le tĂ« mblidhen kĂ«to tĂ« reja Scratch-si copa mister, nĂ«se do,
edhe pse, pĂ«rsĂ«ri, sintaksĂ« Ă«shtĂ« shumĂ« mĂ« e errĂ«t se Scratch.
Pra, t Ă«shtĂ« njĂ« adresĂ« + UnĂ« do tĂ« mĂ« jepni
njĂ« numĂ«r, sepse kĂ«to janĂ« tĂ« gjitha Numrat qĂ« ne kemi qenĂ« duke tĂ«rhequr si magji.
Por ata janĂ« vetĂ«m numra.
>> Pra, nĂ«se adresa e t thoshim: ishte 0x88, Ă§farĂ« Ă«shtĂ« 0x88 plus zero.
Edhe nĂ«se ju nuk jeni tĂ« kĂ«naqur me magji akoma, tĂ« marrĂ« njĂ« guess.
>> Audienca: origjinale.
>> DAVID J. Malan: Ende 0x88.
Pra, Ă§farĂ« do tĂ« thotĂ« * 0x88?
Kjo do tĂ« thotĂ«, "tĂ« shkojnĂ« atje", qĂ« do tĂ« thotĂ« mĂ«nyrĂ« efektive, "vĂ«nĂ« gishtin kĂ«tu."
Dhe tani nĂ« tĂ« djathtĂ« anĂ«n e kjo shprehje, * dhe pastaj nĂ« parens,
s + i nĂ«nkupton S, e cila Ă«shtĂ« adresuar deri kĂ«tu e pak g.
s + 0 Ă«shtĂ«, sigurisht, s, Ă§farĂ«do qĂ« Ă«shtĂ«.
>> Deri tani, kjo Ă«shtĂ« s *, tĂ« cilat ashtu si * 33 Oxford Street do tĂ« thotĂ« tĂ« shkojnĂ« nĂ« adresĂ«n e
s.
KĂ«shtu qĂ« kĂ«tu Ă«shtĂ« ky gisht, dora e djathtĂ«.
Pra, Ă§farĂ« jam unĂ« do tĂ« kopje nĂ« Ă§farĂ«?
GjĂ«ja nĂ« tĂ« djathtĂ«, e cila Ă«shtĂ« Gabe, pak g kĂ«tu, nĂ« kĂ«tu.
>> Dhe kĂ«shtu qĂ« efekti i se pĂ«rsĂ«ritje e parĂ« e lak,
si ju propozuar, edhe pse kjo duket crazy mĂ« e komplikuar se Ă§do gjĂ«
ne kemi parĂ« mĂ« parĂ«, Ă«shtĂ« thjesht duke thĂ«nĂ« shkoni kĂ«tu dhe kopje atĂ« karakter kĂ«tu.
Ă‹shtĂ« duke ju dhĂ«nĂ« njĂ« hartĂ« tĂ« tĂ« dy vende.
>> Dhe ne do tĂ« shohim shumĂ« mĂ« tepĂ«r pĂ«r kĂ«tĂ«.
Por tani pĂ«r tani, shpresa Ă«shtĂ« vetĂ«m pĂ«r tĂ« prezantoj disa nga kĂ«to ide themelore.
Dhe me tĂ« vĂ«rtetĂ«, le tĂ« shohim nĂ« njĂ« program final kĂ«tu,
dhe pastaj claymation premtuar, e cila do tĂ« bĂ«jĂ« Ă§do gjĂ« nĂ« rregull.
TĂ« gjithĂ« tĂ« drejtĂ«.
Pra mĂ« lejoni tĂ« hapur up-- atje tĂ« shkojmĂ«.
Pra, le me-- ne do tĂ« kthehen pĂ«r kĂ«tĂ« foto para se tĂ« gjatĂ«.
MĂ« lejoni tĂ« hapur kĂ«tĂ« shembull pĂ«rfundimtar kĂ«tu.
>> KĂ«shtu qĂ« kĂ«tu Ă«shtĂ« njĂ« super, super program i cili realizon
asgjĂ« nĂ« jetĂ« qĂ« bĂ«n nĂ« vijim.
Ajo sĂ« pari shpall dy variablave, x dhe y, qĂ« nuk janĂ« numra kĂ«tĂ« herĂ«,
nĂ« vetvete.
Ata nuk janĂ« integers, nĂ« vetvete.
Ata janĂ« me sa duket int *.
Pra vetĂ«m njeri, Ă§farĂ« do tĂ« thotĂ« nĂ« qoftĂ« se llojin e tĂ« dhĂ«nave tuaja, ndryshueshme tuaj,
Ă«shtĂ« e tipit int * yll?
Kjo Ă«shtĂ« adresa e njĂ« int.
>> KĂ«shtu qĂ« unĂ« kam asnjĂ« ide se ku Ă«shtĂ« ende.
Ajo thjesht do tĂ« thotĂ« "tĂ« vĂ«nĂ«, pĂ«rfundimisht, adresa e njĂ« int kĂ«tu. "
0x50, 0x88, kudo qĂ« Ă«shtĂ« nĂ« kujtesĂ«s, njĂ« adresĂ« po ndodh atje.
Dhe kjo Ă«shtĂ« ajo y Ă«shtĂ« do tĂ« jetĂ«, si.
>> NĂ«se unĂ« tani them x = malloc (sizeof (int)), kjo Ă«shtĂ« njĂ« mĂ«nyrĂ« e sofistikuar pĂ«r tĂ« thĂ«nĂ«,
hey sistemit operativ, nĂ«pĂ«rmjet malloc, mĂ« jepni kujtesĂ« tĂ« mjaftueshme pĂ«r madhĂ«sinĂ«
e njĂ« int, e cila Ă«shtĂ« ndoshta do tĂ« jetĂ« 32 bit ose katĂ«r bytes.
>> Pra, Ă§farĂ« do malloc kthehet?
Malloc kthen njĂ« adresĂ«.
Pra, Ă§farĂ« do tĂ« merrni ruhen nĂ« x?
Adresa e copĂ« e kujtesĂ«s, katĂ«r bytes, qĂ« malloc
gjetur vetĂ«m pĂ«r mua duke i pyetur sistemit operativ.
>> Tani ndĂ«rkohĂ«, linjĂ« katĂ«r kĂ«tu, x = 42 *.
VetĂ«m tĂ« jetĂ« i qartĂ«, Ă§farĂ« po ndodh atje poshtĂ«?
NĂ« anĂ«n e majtĂ«, * x.
qĂ« Ă«shtĂ« si * 33 Oxford Street.
Pra * x do tĂ« thotĂ« Ă§farĂ«?
>> Audienca: Go to.
>> DAVID J. Malan: Shko nĂ« atĂ« adresĂ«.
Kudo se copĂ« e memorie Ă«shtĂ«, shkoni pĂ«r tĂ«.
Dhe tĂ« vĂ«nĂ« atĂ« atje, natyrisht?
Audienca: 42.
DAVID J. Malan: 42.
NĂ« rregull, y *, tĂ« njĂ«jtĂ«n ide.
Shko nĂ« adresĂ«n nĂ« y.
Vendos numrin 13 atje, por ajo qĂ« Ă«shtĂ« y nĂ« kĂ«tĂ« moment?
Audienca: Nuk ka memorie pĂ«r y.
DAVID J. Malan: Ka ka memorie pĂ«r y.
Pra, Ă§farĂ« e bĂ«n y ndoshta pĂ«rmbajnĂ«, si ne kemi qenĂ« duke thĂ«nĂ« se?
>> Audienca: Garbage.
>> DAVID J. Malan: Disa vlera e mbeturinave.
Tani, vlera e mbeturinave Ă«shtĂ« ende njĂ« numĂ«r.
Ajo ende mund tĂ« jetĂ« i gabuar pĂ«r njĂ« adresĂ«.
Ă‹shtĂ« sikur dikush scribbled diĂ§ka poshtĂ«,
dhe unĂ« keqinterpretuar atĂ« si kuptim disa ndĂ«rtesa poshtĂ« rrugĂ«s.
Dhe nĂ« qoftĂ« se ju vetĂ«m tĂ« pĂ«rpiqen pĂ«r tĂ« shkuar nĂ« disa ndĂ«rtesa qĂ« ju nuk bĂ«ni vet,
apo ndonjĂ« copĂ« e kujtesĂ«s ju nuk keni qenĂ« dhĂ«nĂ«, gjĂ«ra tĂ« kĂ«qija mund tĂ« ndodhĂ«.
Kompjuteri mund tĂ« rrĂ«zimit, ose disa tĂ« tjera Sjellja e papĂ«rcaktuar mund tĂ« ndodhĂ«.
>> Pra intro, atĂ«herĂ«, pĂ«r tĂ« Binky Ă«shtĂ« kjo.
UnĂ« ende kujtohet, 20 disa vite mĂ« vonĂ« i rastĂ«sishĂ«m,
ku isha kur mĂ« nĂ« fund kuptohet pointers.
>> QĂ« do tĂ« thotĂ«, nĂ« qoftĂ« se ju lĂ«nĂ« kĂ«tu nĂ« tre minuta
dhe mendoj se unĂ« nuk bĂ«j kuptojnĂ« pointers, tĂ« realizuar
M'u kujtua pĂ«r 20 vjet pĂ«r disa arsye tĂ« Ă§mendur
kur dhe pse ajo mĂ« nĂ« fund zhytur nĂ«, i ulur me mĂ«simin tim
shokĂ«t, Nishat Mehta nĂ« mbrapa e Eliot Dining Hall.
Tani, unĂ« kam mend kjo pĂ«r shkak se kjo ishte
njĂ«ra nga temat I, nĂ« veĂ§anti, luftuan me tĂ«.
Dhe pastaj, ai mĂ« nĂ« fund klikuar, si unĂ« guxoj tĂ« them shumĂ« tema
pĂ«rfundimisht do.
Dhe tani, pĂ«r tĂ« bĂ«rĂ« qĂ« tĂ« ndjehen tĂ« gjithĂ« mĂ« tĂ« lumtur dhe tĂ« gjithĂ« mĂ« bindĂ«se,
le tĂ« marrin njĂ« vĂ«shtrim pĂ«rfundimtar nĂ« tonĂ« tre minuta e fundit kĂ«tu nĂ« Binky,
nga mikut tonĂ«, Nick Parlante nga Stanford.
>> [VIDEO Playback]
>> -Hej, Binky.
Zgjohu!
Ă‹shtĂ« koha pĂ«r argĂ«tim akrep.
>> -Ă‡farĂ« Ă‹shtĂ« se?
MĂ«so pĂ«r pointers?
Oh, Goody!
>> -Well, PĂ«r tĂ« filluar, unĂ« mendoj qĂ« ne jemi do tĂ« duhet njĂ« Ă§ift pointers.
>> OK.
Ky kod ndan dy pointers, tĂ« cilat mund tĂ« tregojnĂ« pĂ«r integers.
OK.
E pra, unĂ« shoh dy pointers, por ata nuk duket tĂ« jetĂ« duke treguar pĂ«r ndonjĂ« gjĂ«.
>> -Kjo Ă‹shtĂ« e drejtĂ«.
Fillimisht, pointers nuk tregojnĂ« pĂ«r ndonjĂ« gjĂ«.
GjĂ«rat qĂ« ata tregojnĂ« pĂ«r quhen pointees, dhe vendosjen e tyre deri-sĂ«
njĂ« hap i veĂ§antĂ«.
>> Oh, e drejtĂ«, e drejtĂ«.
UnĂ« e dinte se.
TĂ« pointees janĂ« tĂ« ndara.
Er, kĂ«shtu qĂ« si mund tĂ« ndajĂ« njĂ« pointee?
>> OK.
E pra, ky kod ndan njĂ« pointee re numĂ«r i plotĂ«,
dhe kjo pjesĂ« pĂ«rcakton x pĂ«r pikĂ« pĂ«r tĂ«.
>> -Hej, QĂ« duket mĂ« mirĂ«.
Pra, tĂ« bĂ«jĂ« atĂ« tĂ« bĂ«jĂ« diĂ§ka.
>> OK.
UnĂ« do dereference x akrep nĂ« ruani numrin 42 nĂ« pointee saj.
PĂ«r kĂ«tĂ« mashtrim, unĂ« do tĂ« duhet tim Magic Wand e Dereferencing.
>> -Your Magic Wand e Dereferencing?
That-- kjo Ă«shtĂ« e madhe.
>> -Kjo Ă«shtĂ« ajo qĂ« kodi duket si.
Do vendosur vetĂ«m numrin, dhe [POP]
>> -Hej, Shikoni.
Nuk shkon.
>> -KĂ«shtu qĂ« duke bĂ«rĂ« njĂ« dereference nĂ« x poshtĂ« shigjeta pĂ«r tĂ« hyrĂ« pointee saj.
NĂ« kĂ«tĂ« rast, njĂ« dyqan 42 nĂ« atje.
Hey pĂ«rpiquni tĂ« pĂ«rdorni atĂ« pĂ«r tĂ« ruajtur numrin 13 nĂ«pĂ«rmjet kursorit tjetĂ«r, y.
>> OK.
UnĂ« do tĂ« shkoj vetĂ«m mbi kĂ«tu pĂ«r tĂ« y, dhe pĂ«r tĂ« marrĂ« numrin 13 krijimit.
Dhe pastaj, tĂ« marrĂ« shkopin e Dereferencing dhe vetĂ«m [BUZZ]
>> Oh!
>> Oh, hej!
Kjo nuk funksionoi.
Thuaj, Binky, unĂ« nuk mendoj dereferencing y Ă«shtĂ« njĂ« ide e mirĂ«, sepse ju e dini,
ngritjen e pointee Ă«shtĂ« njĂ« hap i veĂ§antĂ«.
Dhe unĂ« nuk mendoj se ne ndonjĂ«herĂ« e bĂ«ri atĂ«.
>> PikĂ« -MirĂ«.
-Po.
Ne ndarĂ« tregues y, por ne kurrĂ« nuk e vĂ«nĂ« atĂ« nĂ« tregojnĂ« pĂ«r njĂ« pointee.
>> -ShumĂ« VĂ«mendshĂ«m.
-Hej, Ju jeni nĂ« kĂ«rkim tĂ« mira atje, Binky.
A mund tĂ« rregullohet nĂ« mĂ«nyrĂ« qĂ« pikat y nĂ« tĂ« njĂ«jtĂ«n pointee si X?
>> -Sure.
UnĂ« do tĂ« pĂ«rdorin magjik shkop magjik e mia e Pointer Caktimin.
>> -A QĂ« do tĂ« jetĂ« njĂ« problem si mĂ« parĂ«?
-Jo.
Kjo nuk prek pointees.
Ajo vetĂ«m ndryshon njĂ« tregues pĂ«r tregojnĂ« tĂ« njĂ«jtĂ«n gjĂ« si njĂ« tjetĂ«r.
>> Oh, unĂ« shoh.
Tani pikĂ« 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 shkopin e Dereferencing pĂ«rsĂ«ri pĂ«r tĂ« dĂ«rguar 13 over.
>> -Uh, OK.
KĂ«tu ajo shkon. [POP]
>> -Hej, Shikoni nĂ« se.
Tani dereferencing punimeve tĂ« y.
Dhe pĂ«r shkak se pointers janĂ« ndarĂ« se njĂ« pointee, ata tĂ« dy e shohin 13.
-Po.
Ndarja, Ă§farĂ«do.
Pra, do tĂ« shkojmĂ« pĂ«r tĂ« kaluar vende tani?
>> Oh, shikoni.
Ne jemi jashtĂ« kohe.
>> -But--
>> -VetĂ«m mos harroni tĂ« tre rregullat akrep.
Numri NjĂ«, struktura bazĂ« Ă«shtĂ« se ju keni njĂ« tregues,
dhe kjo vĂ« mbi tĂ« njĂ« pointee.
Por akrep dhe pointee janĂ« tĂ« ndara,
dhe gabim i pĂ«rbashkĂ«t Ă«shtĂ« pĂ«r tĂ« ngritur njĂ« tregues,
por pĂ«r tĂ« harruar pĂ«r tĂ« dhĂ«nĂ« atĂ« njĂ« pointee.
>> NumĂ«r Dy, dereferencing akrep fillon nĂ« treguesin
dhe ndjek shigjetĂ«n e saj mbi tĂ« hyni pointee saj.
SiĂ§ e dimĂ« tĂ« gjithĂ«, kjo punon vetĂ«m nĂ«se ka
njĂ« pointee, cili lloj i merr pĂ«rsĂ«ri Rregulli numĂ«r njĂ«.
>> Numri Tre, akrep Detyra merr njĂ« akrep
dhe ndryshon atĂ« qĂ« tĂ« tregojnĂ« pĂ«r njĂ«jtĂ« pointee si njĂ« tjetĂ«r tregues.
Pra, pas detyrĂ«s, dy pointers
do pikĂ« tĂ« njĂ«jtĂ« pointee.
NdonjĂ«herĂ«, qĂ« quhet ndarja.
Dhe kjo Ă«shtĂ« e gjitha nuk Ă«shtĂ« pĂ«r atĂ«, me tĂ« vĂ«rtetĂ«.
Bye-bye tani.
[VIDEO END rishikim]
DAVID J. Malan: Kjo Ă«shtĂ« ajo pĂ«r CS50.
Ne do tĂ« shihemi javĂ«n e ardhshme.