>> [Music kucheza]
DAVID J. Malan: Hii ni kama Freshman semina leo.
SAWA.
Hivyo mvua sana nje.
Hii inaelekea kutokea juu ya Jumatano, lakini fursa zote zaidi
kwa maswali leo.
Basi hebu kuanza mbali kwa kweli na filamu katika muda tu.
Lakini tutaweza kuanza grandly kama siku zote.
>> Hii ni CS50, na hii Huu ndio mwisho wa wiki 4.
Hivyo kama wameweza milele watched TV au movie ambayo
kuna baadhi ya wataalam wa kompyuta na polisi, au FBI, au baadhi ya wakala
ni kujaribu kupata baadhi Maana adui, vizuri, wewe wameweza
pengine habari kujieleza "kuongeza," ambapo kwamba fundi fulani
magically zooms katika kubwa mbali kuona wahalifu
utambulisho au idadi sahani leseni katika hata shimmer ya kioo
au glint ya jicho mtu.
Hivyo kweli, hebu tuangalie chache pazia hizo kutoka Hollywood.
[VIDEO avspelning]
-OK, Sasa hebu kupata nzuri kuangalia wewe.
>> -Hold Yake.
Kukimbia nyuma.
>> -Wait Dakika.
Kwenda kulia.
>> -Kuna, Kufungia huo.
-Kamili Screen.
-OK, Kufungia huo.
-Tighten Juu ya kwamba, je?
-Vector Katika juu ya kwamba guy na gurudumu nyuma.
-Zoom Katika haki hapa kwenye doa hili.
-Kwa Vifaa sahihi, picha inaweza kuwa wazi na makali.
-Nini Hiyo?
-Ni Mpango kukuza.
-Je Wewe wazi kuwa up yoyote?
-Sijui.
Hebu kuongeza yake.
>> -Kuongeza Sehemu A6.
>> -I Kuimarishwa kwa undani, and-- nadhani kuna
kutosha ili kuongeza, kutolewa kwa screen yangu.
-I Kuimarishwa kutafakari katika macho yake.
>> -Let Ni kukimbia hii kupitia video kukuza.
-Edgar, Unaweza kuongeza hii?
>> -Hang Juu.
>> I 've ikifanya kazi katika fikra hii.
>> -Someone Ya kutafakari.
-Reflection.
-Kuna Tafakari ya uso wa mtu.
-The Kutafakari.
-Kuna Kutafakari.
-Zoom Katika juu ya kioo.
-Unaweza Kuona reflection.
-Je Wewe kuongeza picha kutoka hapa?
-Je Wewe kuongeza naye hapa hapa?
-Je Wewe kuongeza yake?
Je, unaweza kuongeza yake?
>> -Je Sisi kuongeza hii?
>> -Je Wewe kuongeza yake?
-Hold Juu ya pili, mimi itabidi kuongeza.
-Zoom Katika mlango.
-Times 10.
-Zoom.
-Hoja katika.
-Zaidi.
-Wait, Kuacha.
-Stop.
-Pause Yake.
-Rotate Sisi digrii 75 karibu wima, tafadhali.
-Stop.
Kurudi nyuma na sehemu kuhusu mlango, tena.
>> -Got Picha enhancer kwamba wanaweza bitmap?
>> -Hey, Labda tunaweza kutumia Pradeep Sen njia ya kuona ndani ya madirisha.
-Hii Programu ni hali ya sanaa.
>> -The Eigenvalue ni mbali.
>> -Kwa Haki mchanganyiko wa algorithm
>> Hapo ya kuchukuliwa kuondoa algorithms ngazi ya pili,
na siwezi matumizi yao ya kuongeza picha hii.
>> -Lock Juu na kupanua z-mhimili.
>> -Kuongeza.
-Freeze Na kuongeza.
>> [Mwisho avspelning]
>> DAVID J. Malan: zote haki, hivyo wote wa wale ni kweli maneno.
Wao ni strung tu pamoja katika njia hiyo ni kweli si busara.
Na, kwa kweli, CS50 na kozi kama ni inaelekea uharibifu mengi ya TV na sinema
kwa ajili yako.
Kwa sababu wakati wale wataalam wa kompyuta yanakereketa mbali sheria na kusema
mambo dhana kama eigenvectors, na z-mhimili,
na idadi yoyote ya wengine kweli suala zaidi ya kiufundi,
wao ni kweli tu stringing Maneno pamoja wote mara nyingi mno.
Ni kwamba mmoja wa matumaini yetu ni kwamba, kama athari upande wa kuchukua kozi
kama hii, je watu zaidi katika dunia kweli kuwa na uwezo wa kupima katika
na tu milele hivyo kidogo kushawishi ubora na usahihi wa filamu hizo?
>> Kwa kweli, hebu tuangalie hali halisi.
Hivyo hapa ni wafanyakazi picha ya Maria, moja ya wenzetu mafundisho.
Na kudhani yeye ni watuhumiwa wa kitu fulani.
Na bado, kuna Glimmer ya baadhi kipande cha ushahidi katika macho yake,
au katika tafakari ya miwani yake.
Naam, kama sisi kufanya hasa kama filamu kupendekeza, eti sisi kuvuta na "kuimarisha",
hii ni taarifa ni kiasi gani ni katika uso wa Maria
wakati kukamata picha na kwamba azimio ya awali.
>> Na, kwa kweli, unaweza kuona dots hizi.
Na haya ndiyo yale ni aitwaye saizi, P-I-X-E-L-S,
ambayo ni haki mraba kawaida kuwa ni nukta kwamba composes picha.
Na nyuma katika siku, na kwa kweli hata leo na baadhi ya leo LED TV
au LCD TV, kama nimepata moja katika chumba yako au nyumbani,
kama wewe kwenda juu super karibu yake, na hasa kama ni TV kiasi fulani wakubwa,
pengine unaweza hata kuona dots hizi na hilo ndilo kutunga picha.
>> Na hakuna zaidi Maelezo zaidi kuliko huu.
Tunaweza "kuimarisha", kwa maana ya Ng'ombe vitu tena na aina ya
inferring aina ya, aina ya nini rangi lazima karibu na jicho la Maria
hivyo kwamba siyo kweli hivyo pixelated.
Lakini kama mimi kuendelea zooming katika, kuna ni mtu mbaya katika macho yake.
Kama kuwa ni wote Maelezo tuna.
Huwezi kujenga Maelezo nje ya kitu chochote.
Kuna finite tu idadi ya vipande huko.
>> Hivyo katika kuweka tatizo 4, ambapo una nafasi
kucheza na aina hii ya dunia.
Katika kuweka tatizo 4, utasikia kuchunguza ulimwengu wa graphics, na forensics,
na kwa kweli kuandika kanuni kwamba recovers waliopotea picha.
Itabidi kuandika kificho kwamba kuyaharibu picha zilizopo
na hatimaye kuelewa nini kinachoendelea chini ya Hood.
>> Na, ni zamu nje, ni kweli si wote kwamba ngumu.
Kwa mfano, kama sisi alitaka kuwakilisha smiley uso ambapo
na saizi hizi nyeusi, au nukta hizi nyeusi,
vizuri, tunaweza tu kuwakilisha wao kama kweli bitmap.
Na kama wewe milele kusikia kwamba alikuwa kujieleza bitmap, labda
sasa kuanza kufanya zaidi kidogo maana leo.
>> Sisi tayari kujua nini kidogo ni.
Ni 0 au 1.
Na ramani ni tu kitu kama kipande cha karatasi
kwamba anatoa maelekezo na ina labda gridi ya x- na y-kuratibu.
Hivyo hapa ni bitmap.
Ni ramani ya bits ambapo 1 ni inaonekana
kwenda kuwakilisha pixel nyeupe, na 0 ni kwenda kuwakilisha pixel nyeusi.
Lakini tunaweza shaka flip ni kuzunguka.
Ni kweli haina jambo hivyo muda mrefu kama sisi ni thabiti.
Na hapa ni jinsi gani, katika binary-- ndani ya ya kumbukumbu ya kompyuta, au hata ndani ya
ya faili kwenye ngumu yako drive-- inaweza kuhifadhi
rahisi ya picha smiley uso.
Lakini sisi ni nini, bila shaka, anakosa picha hii?
Rangi, sawa?
Ni dhahiri hatua inayofuata au kukuza na kuboresha huu kwa rangi.
Hivyo kwa bahati mbaya kwa moja tu kidogo, 0 au 1, tunaweza kuwakilisha rangi.
Hiyo inaweza kuwa nyekundu, au bluu, au nyeusi, nyeupe au, au kijani, au nyekundu,
au jozi yoyote ya rangi.
Lakini kwa ajili ya unyenyekevu wa, tutaweza kudhani tu nyeusi na nyeupe.
>> Kwa hiyo kile kifikra tunahitaji kama sisi wanataka kutekeleza rangi katika picha?
Tufanye nini na wafanye nini?
Kama ikiwa kikwazo hapa ni kwamba pamoja na hata kidogo unaweza tu
kuwakilisha nchi mbili, 0 au 1, nyeupe au nyeusi, unataka nini cha kufanya?
Watazamaji: Zaidi ya data.
DAVID J. Malan: bits Zaidi, yeah zaidi data, bits zaidi.
Na kwa kweli, hiyo ni hasa jinsi picha rangi ni kuwakilishwa.
Badala ya kutumia kidogo moja, 0 au 1 kwa kila pixel, kila nukta,
wewe tu kutumia mbalimbali.
Labda kutumia 8, labda, zaidi ya kawaida kutumia 24, na kwa hakika, katika kuweka tatizo
4, je kucheza na faili muundo ambayo inatumia 24 bits kawaida.
>> Lakini wengi katika nyinyi ni pengine ukoo na JPEGs.
Kama wameweza milele kuchukuliwa picha kwenye simu yako,
au kupakiwa au kuona kitu juu ya Facebook, au Flickr, idadi yoyote
ya Nje picha makao, wameweza pengine kuona JPEG picha kabla.
Na ni zamu nje, hii ni faili muundo tunakwenda kutumia katika pset 4,
ambapo wewe ni kwenda na kupona picha
kwamba nimepata ajali ilifutwa kutoka kupotoshwa kadi ya kumbukumbu katika kamera,
kama wewe.
>> Na zinageuka kuwa hata kama JPEG ni pretty sophisticated--
ni kiasi kisasa zaidi kuliko nukta nyeusi na nyeupe
tuliona wakati iliyopita, kwa sababu kuna algorithms kweli dhana kwamba
hutumiwa kubana JPEG, hivyo kwamba unaweza kuwa kweli ni nzuri,
ubora picha lakini kwa kutumia wachache bits.
Na tutaweza kurudi kwa compression kabla ya muda mrefu.
Ni zinageuka kuwa kwanza ka tatu katika JPEG image--
bila kujali wewe umechukua picha of-- ni maadili 255, 216, 255.
>> Kwa maneno mengine, kama wewe tu kuona kwamba mfano wa bits,
kuwakilishwa hapa kama tatu ka, au 24 bits jumla,
na uwezekano mkubwa unaweza kudai kuwa wewe ni kuangalia saa yake hii ya kwanza ya tatu
ka wa JPEG.
Na hii ni nini inayojulikana kama saini ya JPEG.
Mengi ya muundo faili huko nje huwa na kuanza
na mifumo fulani ya sekunde 0 na 1s, ili Madirisha, na Mac OS, na iOS,
na Android kujua ni aina gani ya faili wao ni, pamoja na kile kinachoitwa faili
ugani kwamba mengi ya mafaili nayo.
Kama una Jpg, hiyo ni fununu nyingine ya kompyuta.
>> Basi hebu sasa tuangalie hii zaidi kidogo kitaalam.
Tunajua alisema mfumo ni 0 kupitia 9.
Tunajua mapacha ni 0 na 1.
Na kama unadhani nyuma pset 0, tulikuwa na wewe kushindana na,
kwa muda kidogo, kitu aitwaye hexadecimal,
ambapo una 16 ya tarakimu, badala ya 10 au badala ya 2.
Na tarakimu hizo, na mkataba huo, ni 0 kupitia 9 na kisha
kupitia f, ambapo f inawakilisha nini idadi alisema, kama akili timamu haraka
kuangalia?
Hivyo, 15.
Na lazima kuwakilisha 10, tu kwa asili ya kuagiza kwamba nimepata huo.
Ni tu mkataba holela, lakini ni kabisa ya kiwango.
>> Hivyo kama sisi kuangalia muundo huu ya tatu ka hebu
kuanza tu kuangalia ni katika njia thabiti na jinsi
wanasayansi wa kompyuta kwa ujumla kuangalia na kufikiri juu ya mafaili.
Unaweza shaka kufikiri kuhusu mafaili katika sekunde 0 na 1s, na alisema,
lakini katika hali halisi, sisi huwa na kutumia binary au zaidi kwa kawaida hexadecimal--
nyuma kutoka pset 0.
Hivyo basi mimi kupendekeza kwamba 255, 216, na 255 ni baadhi tu ya mifumo haya ya sekunde 0 na 1s.
Na unaweza kuangalia hii kama wewe wanataka kufanya hesabu kutoka Wiki 0.
Lakini, kwa sasa, tu kudhani kwamba huyu ndiye kweli sahihi.
Nimekuwa tu kuandikwa upya tatu alisema idadi kama maadili tatu mapacha.
Sasa nini mimi kwenda kufanya ni tu kuongeza baadhi ya nafasi nyeupe,
tu kwa ajili readability ya.
Na taarifa, mimi nina kwenda tu hoja mambo mbali.
Hivyo kabla, baada, kabla, baada ya.
Mimi nina kufanya kitu kuvutia mengine kuliko tu kueneza mambo ya nje ili
kwamba ilani ya kila seti ya nane bits ni sasa seti mbili za bits nne.
Hii ni muhimu kwa sababu hexadecimal ni hasa mtindo
kwa sababu kila tarakimu hexadesimoli 0 kupitia f, au zaidi hasa 0 kupitia 15,
inaweza kuwakilishwa na hasa nne bits.
Kwa maneno mengine, katika hexadesimoli kama wewe wanataka kuwakilisha 0, ni 0000 tu,
nne zeros.
Na kama unataka kuwakilisha 15, ni 1111, ambayo ni vipande vinne.
Na kama wewe kufanya hesabu, kama hii ni wale mahali,
hii ni 16s mahali, hiyo ni kwenda kutoa you--
badala ambayo inaenda to-- pole, katika binary,
hiyo ni kwenda kukupa 15, ndio mahali, mahali wawili-wawili, kikundi cha watu wane na eights mahali.
Hivyo basi mimi kupendekeza kwamba kuwa seti ya vipande nne upande wa kushoto
ni nini tunakwenda kuwaita f.
Ni idadi kubwa wewe wanaweza kuwakilisha kwa vipande vinne.
Na sisi tayari kujua kutoka hexadecimal, f ni tarakimu kubwa katika hexadesimoli.
Sisi tumepewa f mwingine huko, mbili zaidi zaidi ya hapo.
Na kwa sasa, tu kuchukua juu ya imani kwamba mimi wamefanya math haki
na kwamba nusu ya kushoto ya bits wale, 1101,
ni kitu kimoja kama d katika hexadesimoli.
Na mkono wa kulia, 1000, ni tu 8.
>> Na kwamba moja ya rahisi kuona, sawa?
8 represents-- ni haki chini pale pale eights.
Hivyo tuna moja katika eights safu na chochote katika kikundi cha watu wane, wawili-wawili au ndio.
Hivyo sasa zaidi conventionally, binadamu huwa kuandika hexadecimal tarakimu namna hii,
wewe tu squish yao pamoja, na kisha kiambishi yao na 0x.
Ina maana chochote zaidi fununu Visual human--
hiyo inakuja hexadecimal value-- kwa sababu huenda ikawa si vinginevyo kuwa dhahiri.
>> Ambayo ni kusema, hatimaye, kwamba mfano wa zeros na ndio,
au mfano wa hexadecimal tarakimu equivalently kwamba wewe ni
kwenda kuanza kuangalia kwa katika kuweka tatizo 4 ni Haya
na kuweka tatizo 4 spec tutakwenda wewe kwa njia hii katika zaidi detail--
lakini kutambua kama aina ya arcane kama hii ili kuangalia katika mtazamo wa kwanza,
wewe ni kwenda kuanza kuona hii mengi.
Na kwa kweli, hata katika GDB, HatiJava sisi ilianzisha Jumatatu
na Dan utangulizi katika pset 3, ni kwenda kwa mara nyingi kuonyesha maadili hexadecimal
sababu tu wao huwa na kuwa zaidi kawaida kuliko alisema au mapacha
katika ulimwengu wa kompyuta.
Sasa hebu kuweka hii katika mazingira.
Wengi wenu wapate kukumbuka hii picha hapa, ambayo alikuja kutoka kile?
Vista, hivyo hata mapema zaidi kwamba, Windows XP alifanya kwanza hii.
Hivyo hii ni mazingira mazuri.
Na kwa kweli, kama wewe poke kuzunguka online-- Nadhani ni makala Wikipedia,
eti mtu kushangaza sana akatoka kupatikana eneo hili katika dunia kuanzisha
wake au kamera yake katika just place-- haki
na hii leo inaonekana like-- lakini ni hasa kuweka sawa.
Picha hii, ingawa, ni katika faili muundo inayoitwa bitmap, b-m-p.
Na sisi ni kwenda kuchukua super mtazamo wa haraka katika nini maana.
>> Lakini bitmap ni njia tu mbalimbali za anayewakilisha picha bado kutumia piseli
katika sekunde 0 na 1s, hatimaye.
Lakini katika mtazamo wa haraka, ina saini zaidi ya kuvutia
mwanzoni mwa faili.
Siyo tatu tu ka, badala kuna
rundo zima la mifumo ya ka ambazo predetermined maana.
Kwa mfano, mahali fulani katika kwanza ka chache ya picha bitmap
ni kwenda kuwa ukubwa wa picha, upana wa picha,
urefu wa sura, hivyo metadata muhimu, kama wewe.
Taarifa muhimu kwamba Photoshop au graphics yoyote mpango unatumia
ili kweli huduma ya juu.
>> Hivyo zaidi juu ya hili katika Tatizo Kuweka 4, lakini hii
ni tu kusema kwamba mwisho wa siku
zote muundo faili tumekuwa kutumia kwa years-- mafaili Microsoft Word,
Mafaili idadi, files Excel, idadi yoyote ya muundo faili
kwamba wanaweza kuwa na baadhi inayojulikana faili ugani
ni sekunde 0 na 1s tu chini ya Hood.
Na binadamu wameamua nini mikataba ni,
nini mwelekeo wa sekunde 0 na 1s kuwakilisha Neno faili dhidi faili Excel,
dhidi ya idadi yoyote ya format nyingine faili.
Hivyo katika pset 4, itabidi nafasi ya kucheza na kwamba.
>> Lakini ni nini maana ya kuwa na struct.
Hii ni kweli segue nzuri sasa ndani ya C, ambayo ina tu wanandoa
sifa za ziada ambazo sisi si inaonekana katika bado.
Ni lugha pretty ndogo na moja ya sifa nzuri kuhusu C ni struct.
Kwa mfano, kama wewe alitaka represent-- hebu
kusema alitaka kuwa na kutofautiana kwamba inawakilisha mwanafunzi katika mpango fulani.
Labda walikuwa kuandika shaka Mpango wa usajili, au msingi ununuzi
chombo, au kitu kama hicho.
Ni vipande vya data kuhusiana nini kwa mwanafunzi kuwa kuja akili?
Kama mwanafunzi ni kuwakilishwa na kile maadili?
Yeah?
Una jina kama mwanafunzi.
Nini kingine haina mwanafunzi wa kawaida na?
>> Watazamaji: [inaudible]
>> DAVID J. Malan: Hivyo, pole.
>> Watazamaji: Umri.
>> DAVID J. Malan: umri au kuzaliwa equivalently, yep.
Nini kingine?
Watazamaji: ID namba?
DAVID J. Malan: Hivyo ID idadi, labda nambari ya simu, labda Dorm, au nyumba,
au chuo, au kitu kama hicho.
Idadi yoyote ya vipande vya data kwamba unaweza kuwa katika orodha yako
ni nini kinaweza kufafanua mwanafunzi.
Hivyo kama sisi alitaka kufanya hivyo, katika kanuni, tupate kufanya kitu rahisi kama hii.
Tupate kuwa na mpango ili ina hebu sema, int kuu (utupu).
Na kama nataka kuwakilisha mwanafunzi nipate kuwa, kwa mfano,
string kuitwa jina kwa kuwa mwanafunzi, string kuitwa Dorm kwa kuwa mwanafunzi,
labda int kuitwa ID kwa kuwa mwanafunzi.
Na kwa sababu mimi nina kutumia kamba, mimi haja ya kwenda nyuma na kuweka CS50.h.
Labda mimi nina kwenda haja stdio.h.
Hivyo basi mimi preemptively kufanya wale na mimi nina kwenda kuwaita student.c hii kwa sasa
na kuokoa hii.
>> Na sasa siwezi kufanya kitu na vigezo hivi.
Na sisi ni kwenda tu kuandika kwamba kama maoni katika Pseudo kificho,
kwa sababu si kuvutia nini cha kufanya kwa sasa.
OK, hivyo hii ni mpango kwamba namna fulani maduka mwanafunzi.
Je, nataka kufanya kama mimi unataka kuhifadhi wanafunzi wawili?
Hivyo silika yangu ya kwanza ni kwenda kuwa sawa, kusubiri dakika,
kama nina mwanafunzi mwingine kwa nini si mimi tu kufanya kamba jina 2, kamba Dorm 2,
int id2.
Na tumefanya gone chini ya barabara hii kabla
na ilikuwa ni nini ufumbuzi wetu kwa kile inaonekana kuwa aina ya hackish nakala kuweka
kazi hapa?
Watazamaji: safu.
DAVID J. Malan: Yeah, tunaweza kutumia safu.
Haki hii kwa haraka sana inakuwa unwieldy.
Una aina ya kiholela kuanza kumtaja wote wa vigezo hivi.
Na wewe, binadamu, una kuweka kufuatilia kwamba OK NAME2 sambamba
na dorm2 sambamba na id2.
Ni tu anakuwa fujo.
Hivyo ni rahisi sana, kukumbuka kutoka wiki chache zilizopita,
kwa kuwa tu kwa kuitwa majina kamba na labda kutupa tatu ya wale.
Na kisha labda tuna kamba mabweni na kuwa na
tatu ya wale, au kwa mara kwa mara, int Vitambulisho na kuwa na tatu ya wale.
Lakini hata sasa hii anahisi kidogo sloppy, haki.
Tunazungumzia wanafunzi na bado Mimi nina kweli makao juu ya kiwango cha chini
utekelezaji maelezo.
Mwanafunzi jina na mabweni na ID.
>> Kwa nini siwezi tu kutangaza kutofautiana aitwaye mwanafunzi na kuiita s.
Na kama nataka mwanafunzi mwingine, kwa nini sio mimi tu kuiita t.
Au kama nataka rundo zima ya wanafunzi, mbona si mimi tu
kusema nina tabaka zima la wanafunzi, na ni watatu kati yao.
Kwa maneno mengine, kwa nini siwezi kuja na data zangu aina, inayoitwa
Wanafunzi, ndani ya ambayo ni jina, ni ID, ni Dorm,
ni idadi yoyote ya maeneo mengine.
Na zinageuka wewe unaweza kufanya hasa kwamba.
>> Hivyo C ana kipengele hiki kinachoitwa struct.
Hiyo ni hulka lugha hiyo inaruhusu sisi kufanya hasa hili.
Mimi kwenda mbele na kufungua structs.h
ambapo tunakwenda kuona kufuatia ufafanuzi wa mwanafunzi.
Ni zinageuka - na hii moja hata rahisi kuliko moja kuwashirikisha ID
wakati iliyopita.
Kama unataka kuja na data ya aina yako homemade,
na kwa kuongeza int, na char na kuelea na wengine wote hawa ambazo zipo,
unaweza kufanya hivyo kwa literally kuandika typedef struct,
kisha baadhi braces curly, ndani ya ambayo wewe
orodha vigezo unataka kujiunga na hii desturi takwimu mpya
aina kama jina na mabweni, na kisha baada ya braces curly
unaweza kumpa jina kwa aina mpya data.
Hivyo, kwa mfano, mwanafunzi.
>> Na nini ni nzuri kuhusu hili sasa ni kwamba kama sisi kuangalia kificho inayolingana,
mkataba huo, kwanza kabisa, ni kuweka hii
katika faili inayoitwa kitu nukta h, kichwa faili, ambayo sisi si
kuanza kutumia wenyewe kupita kiasi.
Lakini sisi ni kwenda kuanza kutumia kidogo kabisa sasa.
Na nini tunaweza kufanya na hii, hatimaye, katika hizo mistari michache ya kificho
ni kutangaza hasa kwamba Aina ya data, mwanafunzi.
Na sasa hebu kuitumia.
>> Mimi nina kwenda sasa kwenda katika faili inayoitwa structs1.c.
Na hebu tuangalie sifa chache hapa.
Hivyo mambo hapa ni wengi wao wakiwa wa utambuzi, na tutaweza
kurudi kitu ambacho si ukoo katika muda tu.
Hii bila shaka ni pamoja na yangu mwenyewe kichwa faili, ambayo ni mpya pia,
isipokuwa kwa pset 3 wapi, wanakumbuka, tuna helpers.h.
Hivyo unaweza kukumbuka # Pamoja helpers.h.
>> Kwa nini ingawa mimi kutumia quotes badala ya mabano angled?
Wakati gani mimi kuchagua kati yao?
Karibu kila mara mimi wanaonekana kutumia mabano angled.
Na kisha, kwa ghafla juu ya mstari sita mimi nina kutumia quotes mbili.
Kwa nini huenda kuwa ni nani?
Yeah?
>> Watazamaji: [inaudible]
DAVID J. Malan: Hiyo ni halisi, ni nini?
Watazamaji: Hiyo ni katika IDE yako.
DAVID J. Malan: Yeah, hiyo ni katika IDE yangu halisi.
Na hebu kukaa juu IDE, kwa sababu hiyo ni chombo kwamba mimi nina kutumia.
Hiyo ni katika sasa yangu directory, hasa.
Hivyo structs.h ni faili yangu mwenyewe si imewekwa katika IDE,
katika mfumo wa uendeshaji yenyewe, badala ni katika orodha yangu ya sasa.
Hivyo mkataba ni kama unataka ni pamoja na mpira wa kichwa yako mwenyewe faili,
wewe tu kutumia quotes mbili.
>> Tufanye nini kuwaita jambo hili katika mstari 8, kwa ujumla kuzungumza?
Hii ni nini?
#define kitu.
Hii inawakilisha constants, sawa?
Kama unataka kuwa na thamani katika mpango wako
kwamba matumizi yote rundo la nyakati, ni
nzuri mkataba na sababu nje, kuyatangaza, na hash ishara
kufafanua, basi, na mkataba huo, katika yote uppercase word-- ingawa si
madhubuti muhimu, lakini ni mkataba wa binadamu
capitalize constants ili waweze kuruka nje
saa wewe visually-- nafasi na kisha thamani unataka kuwa
sawa na jina kwamba mara kwa mara ya.
Hakuna semicolon, lakini wewe tu kufuata mfano kwamba kuna.
>> Kwa hiyo kile ni mimi kufanya katika kanuni hii halisi.
Basi hebu tuangalie Mpango kuu hapa.
Katika mstari 12 kwa sababu mimi kuwa ni pamoja na structs.h,
Mimi sasa magically katika wangu ovyo mpya aina data.
Mimi si tu kupata int, na Char, na kuelea, na kamba,
na rangi ya bluu na wengine.
Mimi sasa wanapata Aina ya mwanafunzi data.
Hivyo katika mstari 12, mimi nina kuchanganya mbili ideas-- moja data ya aina desturi na mbili,
kutumia safu.
Na hivyo katika mpango huu ikiwa Nataka kweli kusaidia
tatu wanafunzi mbalimbali katika mpango wangu, mimi
unaweza tu kusema nipe kutofautiana aitwaye wanafunzi, kila ambayo
ni ya aina wanafunzi, ambazo ni wangu data aina desturi.
Na, hasa, nipe tatu ya wale katika safu yangu.
>> Hivyo sasa tunafanya nini katika mpango huu?
Hapa ni tu kwa kitanzi iterating 0-3, kwa sababu hiyo
nini thamani ya wanafunzi ni.
Mimi na kusababisha tu user nipe jina mwanafunzi.
Na kisha katika mstari 17, sisi kuwa mstari hasa ukoo.
Tuna rafiki yetu ya zamani GetString juu ya haki.
Na kipande kile cha syntax ni inaonekana mpya,
kama wewe sijawahi iliyowekwa katika C kabla, na kamwe kutumika structs?
Yeah?
>> Watazamaji: .name.
DAVID J. Malan: .name.
Lakini hii si sana ya leap, kwa sababu sasa wanafunzi mabano i
anatoa i-th mwanafunzi.
Na kama unataka kupiga mbizi ndani ya muundo kwamba,
wewe tu kutumia kipindi kimoja na kisha jina la kutofautiana ndani,
au mali ndani ya kwamba unataka kupata.
Vile vile basi, kama mimi basi kuchochea user, nipe mwanafunzi mabweni,
unaweza vile vile kuhifadhi kwamba kamba katika Dorm kutofautiana ndani ya
ya kwamba muundo mwanafunzi.
>> Na sasa mambo kupata dhana kidogo.
Na hii ni kwenda kuangalia katika labda mengi kabisa hivi karibuni.
Lakini utaona hii mbali zaidi katika pset 4, hivyo hebu tu mtazamo saa sasa.
Ni zinageuka kuwa katika mstari 23 kupitia 38, unafikiri nini mimi nina labda kufanya?
Nimekuwa kuondolewa maoni kwa leo, lakini toleo
ya maadili ya online kwa kumbukumbu ina maoni yote.
Je, mimi wanaonekana kuwa kufanya?
>> Watazamaji: Kuokoa faili na kila habari kwamba mtumiaji aliingia.
>> DAVID J. Malan: Yeah, hasa, hii ni njia mpya
kwamba sisi ni kuona miwili, Kipengele kingine cha C,
ambapo naweza kujenga files yangu mwenyewe.
Hivi sasa, karibu kila mpango umefanya imeandikwa ni wasiokuwa na utaifa.
Mara tu ni kosa kukimbia, hiyo ni yake.
Hakuna kumbukumbu au kumbukumbu yake.
Hakuna faili kuokolewa ni.
Lakini kama huna wanataka kuokoa pembejeo ambayo ina
kilichotokea, kama katika mchezo au mpango kama hii, ni zamu nje tunaweza kufanya hivyo.
Na utaona hii zaidi katika pset 4 na katika sehemu.
Lakini mstari huu 23 kimsingi inajenga faili inayoitwa students.csv.
Na unaweza kuwa na kuonekana huu kabla.
Hata kama wewe sijawahi alisoma CS kabla, CSV ni koma vigezo.
Ni kama mtu maskini sana ya toleo la Excel file,
ambayo ina maana kwamba inaweza kufunguliwa katika Excel na katika Apple Hesabu,
na ina safu na nguzo.
Lakini siyo wamiliki muundo kama Microsoft au Apple.
Ni koma tu kutenganisha maadili ambayo tutaweza kuona katika wakati huu.
>> Na tu kuchukua nadhani.
Katika mstari 23, katika sana Mwishoni, hoja ya pili yangu
kwa kazi hii mpya iitwayo f wazi kwa ajili ya faili wazi ni w.
Nini kinaweza kuashiria w?
Yeah?
>> Watazamaji: Ni inakuwezesha kuandika na faili?
>> DAVID J. Malan: Ni inakuwezesha kuandika na faili.
Hivyo kuna michache ya variants tuweze kuziba katika hapa.
Lakini kama wewe tu unataka kusoma file, kwamba ni kuangalia ni
na kusoma katika kumbukumbu, wewe tu kutumia quote unquote "r".
Kama unataka kuandika kwa file, matumizi quote unquote "w".
Kuna pia append na michache ya mambo mengine
kama unataka kurekebisha files zilizopo.
Sasa tunakwenda kuweka kuona hii Jambo, basi tutaweza kurudi kwa kujipanga 24.
NULL, ni zamu nje, ni thamani maalum kwamba
inaweza kurudishwa na baadhi ya kazi kama kitu amekwenda wrong--
kama faili haipo, kama umefanya kukimbia nje ya kumbukumbu,
au kundi la makosa mengine.
Lakini kwa sasa, hebu tu kudhani kwamba hii ni tu ya kawaida ya kuangalia makosa.
Hapa katika mstari 26, mimi nina iterating 0-3 juu ya wanafunzi yangu yote.
Na hii ni aina ya aina ya kazi mpya, fprintf,
lakini tu kuchukua nadhani.
Kama printf ni magazeti kamba mpangilio
je fprintf pengine ina maana gani?
Watazamaji: Magazeti na faili.
DAVID J. Malan: Magazeti a mpangilio kamba na faili.
Hilo ndilo ziada f njia ni faili.
Na mpya hoja ya kwanza ina kuwa kutofautiana kwamba inawakilisha faili yako.
Kisha sisi tu kuwa na muundo kamba tu kama printf.
Na hata kama hii syntax ni mpya, hii tu
ina maana kuziba katika jina mwanafunzi, kuziba-katika mwanafunzi mabweni, na kisha
na fclose, karibu faili.
Na kisha lastly-- hii ni mpya na tutaweza kurudi huu
kabla long-- mimi nina kumkomboa mwanafunzi kwa sababu za
yaliyotokea juu juu huko.
Lakini tutaweza kurudi kwa kuwa kabla long--
hiyo ni kwa sababu ya jinsi GetString ni kweli kazi chini ya Hood.
>> Basi hebu tuangalie kwa haraka hapa.
Kama mimi aina ls katika orodha yangu, taarifa kwamba mimi si
na faili inayoitwa students.csv, tu si kuna, haipo.
Hivyo kama mimi sasa kukusanya mpango huu, kufanya structs-1,. / structs-1,
na mimi nina kwenda mbele na aina katika Andi, ambaye anaishi katika Berkeley katika Yale.
Tunakwenda kuwa na Rob ambaye anaishi katika Thayer siku hizi.
Na hebu kuja na ambapo ni, nadhani, Maria ni katika Mather,
kama mimi nimekumbuka usahihi.
>> Hivyo kitu inaonekana kutokea.
Lakini kama mimi aina ls sasa, kuna students.csv.
Hebu kwenda mbele na students.csv wazi.
Hii ni mara ya pili sana nyepesi faili.
Lakini nimepata tu iliyopitishwa mkataba kwamba nina safu mbili na nguzo hapa.
Safu ya kwanza ni watu wa kwanza wa majina.
Safu ya pili ni mwanafunzi Dorm, au chuo, au nyumba, au whatnot.
Na sasa nimekuwa kuokolewa huu kudumu katika faili.
>> Hivyo si yote ya kuvutia.
Lakini hii ni jiwe wanazidi sasa na kuwa na uwezo wa kuendelea maelezo
kudumu.
Basi hebu angalia sasa yale zaidi tunaweza kufanya na haya na mengine makala.
Lakini kwanza, maswali yoyote?
Hiyo ilikuwa ni mengi, na kwamba alikuwa haraka.
Lakini utaona mengi zaidi katika pset 4, pia.
Yeah?
>> Watazamaji: Je, kuna njia ya kuendelea kuongeza majina ya faili hayo?
>> DAVID J. Malan: swali nzuri.
Je, kuna njia ya kuendelea kuongeza majina ya faili hayo?
Ndiyo.
Na, kwa kweli, kama wewe kuishia up re-kufungua faili,
ungependa kutumia kunukuu unquote "" kwa append,
ambayo itakuwa tu kuongeza line mpya, mstari mpya tena na tena, hasa.
Nzuri swali.
Maswali mengine?
Yeah?
Watazamaji: Kama mbio Mpango tena hivi sasa,
itakuwa ni kuendelea kuongeza majina kwa faili au itakuwa ni kufungua faili mpya?
>> DAVID J. Malan: Ah, nzuri swali.
Kama mbio mpango tena haki sasa, labda typed katika majina mapya,
itakuwa ni kuongeza faili au overwrite faili?
Mwisho, kwa sababu mimi nina si kwa kutumia hali ya append.
Na kwa sababu mimi nina tu upofu kufungua faili kwa ajili ya kuandika,
ni tu kwenda overwrite faili.
Hivyo napenda kweli unahitaji kufanya ni append, kama nataka kweli kuwa kwa muda mrefu
database.
>> Sasa CSV ni muhimu, kusema ukweli, hata kwa kama kama wewe ni writing--
na tutaweza hatimaye kuona hii baadaye katika muhula wakati
tunatumia CSVs kwa madhumuni mengine.
Kama unataka kuhifadhi wote wa watu ambao wamejiandikisha kwa baadhi ya tukio hilo,
au saini kwa ajili ya mwanafunzi wako kundi, au kitu kama hicho,
kuhifadhi data katika aina hii ya muundo ni super rahisi.
Kwa sababu halisi, kama mimi walikuwa kupakua faili hii.
Mimi naweza double-- na hebu kweli kujaribu hii
kama nina Excel au Hesabu hapa.
>> Mimi nina kwenda haki-click au kudhibiti-click faili yangu.
Whoops.
Right-click au kudhibiti-click faili yangu.
Haya, panya yangu si kushirikiana.
Download-- nitakacho download mafaili yote hapa ili
tu ili niweze kunyakua hii moja.
Na hebu angalia kama hii kazi students.csv-- mara ya kwanza
Nimekuwa kuanzishwa.
Sasa wanataka kuona mawasiliano yangu.
Sasa, mimi haja ya kujiandikisha.
Kuona jinsi gani ni rahisi kutumia CSVs?
Ndiyo, kuitunza hadi sasa.
Sawa, sasa tuko tayari kwa ajili ya darasa.
OK, loo, nini mpya?
OK, karibu.
Hiyo ilikuwa ni kichawi.
Sawa, sasa tuna update.
Na sasa, alisahau nini faili Mimi awali kufunguliwa,
lakini kile a-- kuna sisi kwenda.
OK, hivyo kwa sasa tuna Excel file.
Asante.
>> OK, hivyo nini mimi ilikuwa ni sehemu rahisi.
Bila shaka mimi naweza kuwa kabla ya imewekwa Excel, au Hesabu, au chochote mpango.
Lakini hii ni nzuri, kwa sababu sasa siwezi kuendesha
data katika muundo standard.
>> Hivyo sasa hebu mazingira kubadili ambapo sisi kushoto mbali
Mara ya mwisho, ambayo ilikuwa kuanza kuchukua mbali magurudumu mafunzo.
Lakini kwanza, hakuwa kuona hii mapema chakula cha mchana
kwa mara nyingine tena kinachotokea hapa katika Moto na Barafu katika Cambridge, Sitar katika New Haven.
Ishara ya juu kwenye tovuti CS50s ASAP kujiunga CS50 wanafunzi na wafanyakazi.
>> Hivyo sisi alichukua magurudumu mafunzo mbali juu ya Jumatatu kama follows--
kamba imetangazwa katika CS50s maktaba kwa muda fulani.
Na ni nzuri, kwa sababu inaruhusu sisi kuzungumzia vigezo kama kuwa
Maneno kamili na hukumu na zaidi.
Lakini zinageuka kamba haipo.
Hiyo ni kisawe, au vinginevyo, kwamba tuna umba kwa kitu ambacho
kweli ni kidogo zaidi kiufundi aitwaye * Char.
>> Na hakika, tuliona mfano wa mpango Jumatatu
kwamba hakuwa na kuishi kabisa kama sisi ilivyotarajiwa.
Hii ilikuwa ni faili, kulinganisha-0.
Na kukumbuka kuwa kulinganisha-0, ikiwa Mimi recompile mpango Jumatatu
na kukimbia kulinganisha-0 na aina katika mama katika lowercase, na mama katika lowercase tena.
Mpango alisisitiza mimi aina ya mambo mbalimbali,
hata kama mama, yote katika lowercase, ni sawa kuibua.
Kwa hiyo kile ni jibu fupi kwa nini kompyuta anadhani
wale masharti mawili ni tofauti?
Yeah?
>> Watazamaji: [inaudible]
DAVID J. Malan: Haki.
Kwa hiyo, mama, mara ya kwanza Mimi aina yake katika, ni kuwa
kuhifadhiwa mahali fulani katika kompyuta yangu kumbukumbu lakini katika eneo tofauti
kuliko mara ya pili mimi aina katika mama.
Sasa ni hakika inaweza kuwa optimized.
Kompyuta inaweza kuwa smart na kutambua masharti haya mawili, hey,
wao uko kufanana.
Basi mimi si redundantly kuhifadhi.
Lakini kompyuta kufanya hivyo optimization isipokuwa wewe kuwaambia.
Hivyo, kwa default, wao uko tu kwenda kuishia
katika maeneo mawili tofauti katika kumbukumbu.
Na hivyo kuwa zaidi ya wazi, wakati sisi ikilinganishwa masharti mawili,
kwanza aliitwa s, pili aliitwa
t, ni nini hasa ilikuwa ni mimi kulinganisha hapa kwenye mstari 13?
Naam.
>> Watazamaji: Ni mahali katika kumbukumbu kwamba kutofautiana uhakika na.
>> DAVID J. Malan: Hasa, nilikuwa kulinganisha nafasi katika kumbukumbu
kwamba vigezo wale alisema kwa.
Hivyo hasa, ikiwa mama alikuwa katika Byte namba 1, na 2, na 3,
na 4-- kwa sababu kumbuka backslash 0 haja ya kuwa na njia yote mwishoni.
Na mfano wa pili wa mama, m-o-m, Ilikuwa kwa anwani ya 10, 11, 12, na 13.
Mimi nilikuwa kulinganisha 1, anwani hiyo, kwamba eneo katika kumbukumbu,
dhidi ya 10, ambayo ni wazi si sawa.
1 ni si 10.
>> Hivyo hii ni nzuri kwa kuwa ni pretty moja kwa moja.
Lakini ni tatizo kadiri hatuwezi wanaonekana kulinganisha masharti.
Hivyo fundamentally-- na katika ngazi hii ya chini,
kama alitaka kutekeleza mpango wa kulinganisha
maneno mawili tofauti kwamba mtumiaji typed katika kwa ubora,
je, wao kujipanga char kwa Char, tu katika ujumla,
tunahitaji nini cha kufanya, inaonekana?
Siyo kutosha tu kuangalia wale anwani miwili.
Tufanye nini haja ya kufanya?
Yeah?
>> Watazamaji: Iterate kupitia kamba [inaudible].
>> DAVID J. Malan: Yeah, hebu iterate kupitia kamba.
Hebu kutumia kwa kitanzi, kitanzi wakati, au chochote wewe ni vizuri zaidi kwa.
Na kama sisi tumepewa masharti mawili mahali fulani katika kumbukumbu, hebu tuangalie kila ya
tabia ya kwanza, basi kila ni wa pili tabia, kisha ya tatu, na nne,
na tano, mpaka sisi hit nini thamani maalum mwangalizi?
Watazamaji: [inaudible]
DAVID J. Malan: Yeah, backslash sifuri, ambapo kiwango katika ama kamba
tunaweza kuamua hiyo ni yake.
Je, sisi kuendana kila tabia moja?
Kama siyo, kurudi uongo.
Kama ni hivyo, kurudi kweli.
Na hivyo hiyo ni nini hasa toleo hili wa mpango kulinganisha-1.c gani.
Ni sawa na kile sisi inaonekana katika Jumatatu ila kwa kuwa nimekuwa
wamezipata kuondoa neno kamba ingawa kwamba hana impact-- kazi zote
Mimi nina kufanya sasa ni kuondoa baadhi ya mafunzo magurudumu Visual,
lakini kuona wazi kwamba s na t ni anwani.
Na kwamba ni nini nyota, kinyota, inawakilisha
ni ya mitaani, inayojulikana kitaalam zaidi kama pointer.
>> Hivyo wakati mimi kutangaza s juu ya mstari wa 9 na kusema Char * s,
hiyo haina maana nipe kamba.
Hiyo ina maana nipe kutofautiana ambao lengo katika maisha ni kuhifadhi mahali.
Kwa sababu mimi ni juu ya kuweka pepe ya kamba ndani yake.
Na hakika, GetString, kwa kuwa wazi, haina kurudi kamba.
Ni haina kurudi mama backslash sifuri, per se.
Je GetString mahsusi na usahihi kurudi?
Watazamaji: [inaudible]
DAVID J. Malan: mitaani, pepe ya tabia ya kwanza
katika baadhi kamba ni imenipatia.
Na hivyo sasa sisi ni kuona keyword maalum tena.
Na, mimi alluded hili mapema.
Hii ni kwenda kuwa mkataba mzuri kwamba tutaweza kuona tena na tena sasa.
Mimi nina kuangalia ili kuhakikisha kuwa s si batili na t sio null.
Kwa sababu kulingana na yangu kweli kutaja haraka awali,
nini kinaweza maana ikiwa GetString anarudi si anuani lakini N-U-L-L, ambayo ni mara ya pili,
baadhi thamani maalum?
>> Watazamaji: Kosa.
>> DAVID J. Malan: Ni kosa.
Kitu potoka.
Na nini kawaida kinaweza kutokea, hasa
na strings-- ambayo inaweza kuwa ya urefu haijulikani katika advance--
labda kompyuta ' nje ya kumbukumbu, labda
uliyochapa katika hizo a muda mrefu neno au sentensi
au pasted kama insha mkubwa kuna tu si kumbukumbu ya kutosha.
Na hivyo GetString hawezi kurudi pepe ya jambo zima,
hivyo ni tu anarudi kitu.
Na inasema makosa yaliyotokea na kurudi thamani maalum null.
Ni anuani sifuri, hivyo kusema.
>> Sasa ni zamu nje C kuja na kazi ambayo hufanya hivyo iteration.
Hatuna kutekeleza hili kwa a kwa kitanzi au kitanzi wakati sisi wenyewe.
Tunaweza kutumia kazi, aitwaye ufupi,
koroga dira, au kamba kulinganisha, ambaye lengo katika maisha ni kufanya hasa kwamba.
Wewe kuwapa kuyatumia mbili, anwani miwili, na itakuwa kwenda wale anwani
na kisha kulinganisha barua kwa barua kwa barua kwa ubora,
kuacha tu wakati mambo ni kweli?
Wakati shirikishi lazima koroga dira kuacha iterating, tu kuwa wazi?
Wakati hits backslash 0 katika ama kamba, ambapo kiwango inaweza kuamua
ina kila kitu kuendana, au kumekuwa iliyopo?
>> Hivyo, kama sisi kukimbia hii sasa na kujaribu yetu mtaji mchezo kidogo,
hivyo kufanya kulinganisha-1, ./compare-1, na aina mama katika lowercase mara zote mbili.
Sasa ni kitu kimoja.
Na kama mimi kufanya hivyo tena na lowercase na kisha labda herufi kubwa.
Sasa ni kweli tofauti kati ya juu na ndogo.
Hivyo si yote ngumu au kichawi, lakini haina sasa kueleza
nini kinaendelea chini ya Hood.
>> Kwa hiyo kile zaidi tunaweza kutafuta kutokana na aina hii ya somo?
Basi hebu tuangalie hii.
Mimi nina kwenda mbele na kuandika Mpango wa haraka hapa inaitwa nakala-0.
Na sasa hebu kwenda mbele na kwa kweli hebu kufanya Haya na nakala-0,
kuangalia nini mimi nimepata hapa.
Mimi kwanza kuwaambia mtumiaji, kusema kitu.
Kisha mimi kupata kamba na mimi kuhifadhiwa katika s.
Kisha mimi kuangalia kama s ni sawa sawa NULL, tu kurudi 1.
Hivyo hii ni tu kiwango kuangalia makosa.
Hakuna kitu ya kuvutia kilichotokea.
Na kwa kweli, kama sisi kujikwamua makosa cheki, hii inaonekana kama wiki 1 kificho
kwa sasa.
Lakini nimeanza kupata vizuri kidogo juu ya hilo.
>> Sasa katika mstari 16, wiki iliyopita, labda siku hata wanandoa au dakika iliyopita,
unaweza kusema mstari 16 ni kujenga variable kuitwa t
na kuiga s ndani yake.
Na hiyo ndiyo kikamilifu busara takeaway.
Lakini kuwa sahihi zaidi sasa.
Kile kinachotokea katika mstari 16?
Nini ni kupata kunakiliwa kutoka kulia kwenda kushoto?
Yeah?
Watazamaji: Je t kupata pepe ya s?
>> DAVID J. Malan: Hasa, t ni kupata pepe ya s.
Hivyo kuwa wazi sasa, kama mimi kwenda nyuma ya mfano kwamba mapema
na mimi kuteka kitu nimekuwa typed katika.
Na nini nimekuwa typed in-- hapa ni s, na hapa
ni nini nimekuwa typed katika mahali fulani katika kumbukumbu, mama na kisha backslash
0 hiyo aliongeza kwa ajili yangu.
What I kuhifadhiwa katika hapa, kukumbuka, hii ni katika eneo 1, 2, 3, 4,
hii ni nini sasa katika s.
Hivyo kama kwenye mstari 16, nasema nipe mwingine kutofautiana kuitwa t na kuhifadhi
katika katika thamani ya s, nini anapata kuhifadhiwa hapa si mama
bali tu namba 1.
>> Hivyo kama sisi kuangalia mbele katika mpango huu sasa, nini kitatokea?
Hivyo taarifa kwamba kuna kazi hii waweza
wametumia huu baadhi ya wakati uliopita kwa Kaisari, au Vigenere, au labda si wakati wote.
Mimi kudai kwa printf yangu, mimi nina kwenda capitalize nakala t.
Kwanza katika mstari 19, haraka sanity kuangalia, hundi strlen urefu wa t.
Kwa sababu mimi sitaki kujaribu capitalize kitu
kama hakuna kamba huko.
Kama mtumiaji tu hit Enter, kuna kitu capitalize.
Hivyo Sitaki kufanya mstari 21.
Hivyo mstari 21 ni kuyafanyia ambayo barua, inaonekana, katika t?
>> Watazamaji: m?
DAVID J. Malan: Inaonekana kama ni kuiga ambayo moja?
Watazamaji: m.
DAVID J. Malan: Uh, m.
OK, hivyo m kwanza, kwa sababu taarifa kwamba mimi nina
kupita kwa toupper, ambayo kama wewe sijawahi kuiona ni
tu kazi kwa capitalize kama mchango wake.
t mabano sifuri ina maana kutoa mimi tabia sifuri ya t.
Na hivyo ni jinsi gani hii picha mabadiliko, kuwa wazi?
Kinachotakiwa kupata kuandikwa upya au kubadilishwa kwa heshima na s na t na mama
backslash sifuri.
>> Watazamaji: [inaudible]
>> DAVID J. Malan: Yeah, hivyo hii moja hapa tu
mahitaji ya kupata iliyopita to-- kurekebisha Haya mahitaji ya kupata iliyopita katika mji mkuu wa m.
Lakini sasa, angalia baadaye katika mpango, kama mimi magazeti nje
s na t kama mimi safi hapa, kuangalia nini kinaenda kutokea uchapishaji nje s na t.
Hivyo kufanya nakala-0, ./copy-0.
Hebu kwenda mbele na aina katika mama katika lowercase wote.
Taarifa zote mbili awali na nakala wamekuwa mtaji.
Kwa nini?
Naam, s na t ni wawili akizungumzia, kama wewe, chunk kama hicho cha kumbukumbu.
Na kusema ukweli, hii ni kupata kweli uninteresting-- ukweli
kwamba sisi ni kutumia anwani sifuri hapa.
I mean, mimi si kweli huduma ambapo mambo ni katika kumbukumbu.
Pole mimi nina kufutwa kidogo sana.
Lakini mimi si kweli huduma ambapo mambo ni katika kumbukumbu.
Na hivyo, kwa kweli kile programmers huwa na kufikiri kuhusu
ni kwamba wakati majadiliano juu ya pepe, au pointer,
anayejali ambapo ni katika kumbukumbu.
Sijali kama ni katika Byte moja au bilioni moja.
I just huduma ya kwamba hii kutofautiana ni ufanisi
akionyesha kwamba chunk ya kumbukumbu.
Na hivyo, tangu sasa, badala ya quibble zaidi ya anwani kumbukumbu holela, hebu
kuanza tu kuteka kuyatumia kama kuyatumia, kama mishale.
Kwa hiyo kile s na t kweli ni, kwa mujibu wa mpango huu,
kwa sababu ya jinsi mimi umba t, ni vigezo mbili tu tofauti
akionyesha chunk kama hicho cha kumbukumbu.
Na sisi hawajali walipo.
Hivyo tunaweza abstract mbali undani huo.
>> Hivyo ni jinsi gani mimi kurekebisha hili?
Kama nataka kuandika toleo la nakala mpango huo kwa kweli nakala kamba
na herufi tu nakala, tu intuitively,
nini got kuwa kingo kwa ufumbuzi wetu?
Watazamaji: [inaudible]
DAVID J. Malan: Tunahitaji nini?
Watazamaji: Chunk ya kumbukumbu.
DAVID J. Malan: Tunahitaji mwingine chunk ya kumbukumbu, sawa?
Hatujui jinsi ya kufanya hivyo bado, lazima.
Lakini mimi aina ya haja hili kutokea hivyo kwamba mama awali katika kesi ya chini
mwisho juu katika kwamba chunk ya ziada ya kumbukumbu.
Na kisha wakati mimi kubadili nakala, mimi hawataki mabadiliko nakala hii hapa.
Mimi badala wanataka kubadili tu hii nakala ili awali ni kubadilika.
>> Kwa hiyo, hebu angalia jinsi sisi tupate kufanya hivyo.
Katika nakala-1, ambayo tayari wamekuwa kuvuliwa maoni,
lakini ni maoni online.
Sisi badala kufanya following-- hizi mistari ni sawa, kupata nami kamba
na kuiita s.
Lakini sasa hebu tuangalie moja ya yetu tata lakini mwisho wa utata
kwa muda, mstari 16 gani hasa huu.
Hivyo kama comfy yako na picha sisi tu drew--
nipe chunk mpya ya kumbukumbu, nakala kila kitu ndani yake,
hebu angalia jinsi sisi kutafsiri kwamba kwa kificho.
>> Hivyo mstari 16, upande wa kushoto, char * t anitiaye sanduku hii zaidi ya hapa.
Hayo ni yote ni gani.
Upande wa kulia, m alloc, au malloc,
ni kumbukumbu mgao, super dhana tu, njia cryptic ya kusema tu
nipe chunk ya kumbukumbu.
Kiasi gani kumbukumbu tunahitaji?
Naam, ni aina ya usemi mkubwa.
Lakini hebu angalia nini anasema hapa.
Hivyo hii, bila shaka, ni kutoa mimi kamba urefu wa s.
Kwa hiyo, mama ni lazima kuwa nini?
Hivyo mitatu tu, sawa? mama ni herufi tatu.
Huwezi kuhesabu sifuri backslash wakati
majadiliano juu ya urefu wa kamba ni kweli binadamu inayoonekana barua.
Hivyo mama, hivyo hii inatoa mimi 3.
Lakini kusubiri dakika, mimi nina sasa akiongeza 1.
Kwa nini mimi kweli wanataka kutenga 4 ka na si tu 3?
Yeah?
>> Watazamaji: Kwa thamani mwangalizi?
>> DAVID J. Malan: Hasa, kwa kuwa thamani mwangalizi.
Kwa backslash sifuri, Mimi haja 4 ka jumla.
Kwa hiyo mimi haja urefu ya kamba pamoja na 1.
Na kisha tu kwa measure-- nzuri hata kama juu ya mfumo huu,
ni daima itakuwa 1-- mimi kusema kuzidisha hili kwa ukubwa wa Char.
Zamu nje sizeof ni operator katika C kwamba
tu atakwambia idadi ya ka hiyo ni
inahitajika kwa ajili ya aina fulani data.
Haifanyi kazi kwa arrays, kawaida, wakati mwingine ni gani.
Lakini katika kesi ujumla, hakuna.
Lakini itakuwa kuniambia jinsi wengi ka char ni, ambayo zamu nje daima 1.
Hivyo hii ni kama kuzidisha na 1.
>> Hivyo super cryptic kuangalia mstari wa kanuni.
Lakini wote ni gani ni anatoa mimi chunk ya kumbukumbu.
Lakini je, ni wanaonekana kuwa kuiga chochote katika kumbukumbu?
Bado.
Na hivyo kile mimi kwenye mstari 22, na 23, 24, 25, vizuri, mimi tu kufanya hivyo.
Na hii ni aina ya umri wa mambo shule sasa.
Hii ni kama pset 2, ambapo wewe ni kusonga tu mambo
kuzunguka katika kumbukumbu, au tuseme katika masharti.
>> Hivyo mimi nina iterating kutoka 0 kwa urefu wa kamba s.
Na mimi nina kuiga tabia i-th katika s katika i-th tabia katika t.
Na kwa sababu mimi, programu, alifanya uhakika na kutenga ka hasa kama wengi
kama nahitaji, ni kamili moja kwa moja uhusiano.
Na mimi nakala mama katika Herufi za chini kwa mwezi mmoja.
Na kisha mwisho, mimi kufanya mstari huu.
Na hivyo athari ni tu capitalize t hii hapa.
Hivyo mengi ya kunyonya, lakini kama wewe tu kufikiria
nini kweli kinachoendelea chini ya Hood
ni kusonga tu hizi ka kote, yote
inahitajika ili kutatua tatizo hili ni tu kutupa hii chunk ya kumbukumbu.
Sasa katika hatari ya balaa, napenda kuonyesha
mfano mmoja mwingine hiyo ni karibu kufanana, isipokuwa kwa hii moja
mstari wa kanuni.
Hivyo hii ni hacker toleo la ya mpango huu, kama wewe.
Lakini hebu tu distill ndani nini kinaendelea.
Mstari 24 kutumika kwa kuwa t hii mabano i anapata s mabano i.
Sasa, mimi nina kubadilisha hii kwa mengi zaidi cryptic nyota t
pamoja na 1 ni sawa na nyota s pamoja na 1.
>> Hivyo nini kinatokea na kwa nini tuna tabia nyota?
Tumeona nyota kabla, na ni kuwa kutumika kwa njia tofauti hapa.
Sisi hapo awali aliona * Char, sasa mimi nina kuona a nyota mwanzoni, na hiyo ni sawa.
Kwa sababu ni zamu nje sisi unaweza aina ya infer tu
kutoka kwa wale kwanza kanuni nini kinaendelea.
Hivyo tu kuwa wazi, ni nini s?
Wiki iliyopita, ilikuwa kamba.
Hiyo haina inatosha tena.
S ni kitu gani, hasa?
>> Watazamaji: [inaudible]
>> DAVID J. Malan: Ni pointer.
Ni pepe ya tabia ya kwanza sisi typed katika.
OK, ni nini t?
>> Watazamaji: [inaudible]
>> DAVID J. Malan: anuani ya Byte kwanza
katika t, kwamba chunk ya kumbukumbu reallocated.
Hivyo ni zinageuka kuwa wakati sisi iterate kutoka 0 hadi kwenye kamba
length-- kwanza kabisa, i kuanza mbali katika 0, kwa sababu
ya hii umri wa shule ya kitanzi kitu.
Hivyo tu kwa unyenyekevu, hebu kudhani kuwa mstari wa kwanza wa kanuni
ni kweli tu hii, haki.
Kama i ni sifuri, na kuongeza sifuri na kitu labda
si kwenda kuwa na athari.
>> Kwa hiyo kile ni maneno yako?
Ni zinageuka kuwa nyota operator katika mazingira haya
ni dereference operator, ambayo ni tu
njia dhana ya kusema kwenda kwa anwani ifuatayo.
Hivyo kama s ni ya kwanza anuani tabia katika hii chunk ya kumbukumbu,
* s njia kwenda huko.
Na kwa sababu tumekuwa inayotolewa picha kwa njia hii,
unaweza kupitisha kufuatia mfano wa akili.
Kama hii ni s, na kusema * s, s * aina ya kama chutes na ladders,
kama unakumbuka mchezo kutoka utotoni, ni kama kufuata mshale na kwenda
kwa mahali.
>> * t ni kitu kimoja.
Hivyo kuanza hapa, kwenda chunk wake.
Siwezi tu kuteka juu ya screen hii kwa njia hiyo.
* t maana ya kwenda hapa.
Na kisha, kwa kitanzi ni akisema hoja tabia hii hapa,
hoja tabia hii hapa, hoja tabia hii hapa.
Lakini jinsi gani mimi kufanya hivyo incrementation?
Mimi haja ya kuondoa nini mimi tu kufutwa.
Hii ni nini ujumla aitwaye pointer arithmetic, ambayo
ina maana hesabu na anwani.
>> Kama, katika hii kwa kitanzi, Mimi kuendelea incrementing i,
na s ni anwani na t ni mitaani, kama mimi tu kuendelea kuongeza 1,
kwamba tu ina maana kusonga mbele, na mbele, na mbele katika kumbukumbu.
Ni kama Oxford Street, mitaani kwamba jengo CS ni juu ya.
Majengo CS ni saa 33 Oxford Street.
Hivyo kama ungekuwa kufanya 33 Oxford Street pamoja na 1,
ambayo huleta wewe kwa 34 Oxford Mitaani, basi 35 Oxford Street,
kisha 36 Oxford Street, chochote wale majengo kwa kweli ni - kama zipo.
Na hivyo, kwamba ni yote sisi ni kufanya hapa na pointer hesabu.
>> Hivyo ni njia super arcane ya kuonyesha sisi wenyewe.
Lakini yote yale yanayotokea chini ya Hood
ni kufuatia tu anwani hizi, kama zifuatazo ramani, kama wewe,
au kufuatia mishale kama tumekuwa inayotolewa kwenye screen.
OK, mengi Digest.
Swali lolote juu ya syntax, dhana, kuyatumia, malloc, au kama.
Naam, hapa kwanza.
>> Watazamaji: Hivyo ambapo kwamba anasema * t sawa na toupper * t,
ni kwamba kwenda capitalize zote herufi au just--
>> DAVID J. Malan: Ah, mzuri swali.
Hivyo katika mstari huu hapa, 31, hii ni kwenda capitalize
barua ya kwanza au yote ya barua.
Basi hebu kujibu kwamba kwa kwenda nyuma ya kanuni kwanza.
Na kanuni za kwanza hapa nina maana tu kwenda ufafanuzi msingi
ya nini wanaohusika.
Hivyo toupper ni kazi kwamba herufi Char.
Hayo ni yote.
* t ina maana kwenda first-- kwenda anuani katika t.
Hivyo, katika picha, kama hii ni chunk ya kumbukumbu sisi zilizotengwa kwa malloc,
na hii ni t, t * ina maana kwenda hapa.
>> Wakati huo huo, wewe ni kupita kwamba thamani, lowercase m
kwa toupper, wewe ni kupata nyuma mji mkuu M, ambapo ni wewe kuweka?
Wewe ni kuweka katika eneo hilo hilo.
Na hivyo kwa kuwa mantiki ya wale ufafanuzi wa msingi ni tu
kuyafanyia barua ya kwanza isipokuwa iterate kwa i au a
kwa kitanzi au kitanzi wakati, si kwenda kufanya kitu chochote zaidi ya kuuliza hilo.
Nzuri swali.
Yeah?
>> Watazamaji: Kwa nini unatumia dereference njia badala ya
safu?
>> DAVID J. Malan: Ah, nzuri swali.
Kwa nini wewe kutumia dereference Njia badala ya mbinu safu?
Hakuna sababu maalum, kuwa waaminifu.
Na, kwa kweli, kwa hili namna ya mfano wa kulia,
Mimi akisema maamuzi tu Mpango ngumu zaidi,
macho zaidi ni glazing juu, Watu kuangalia nje
kwa sababu hii inaonekana super arcane, lakini hata kama ni kufanya kitu kimoja.
Na hivyo, kusema ukweli, hii ni ufumbuzi usiokuwa kuibua tata
tatizo.
>> Bado kubuni nzuri, tano kati ya watano kwa kubuni,
kama ni katika mabano nukuu au pointer nukuu.
But-- hasa wakati tunapata baadaye katika mwendo katika pset 5
wakati sisi kutekeleza kwamba kamusi kwamba Nimekuwa zilizotajwa michache ya times--
tutaweza kweli huduma ya juu anwani kumbukumbu kiwango cha chini
kwamba sisi kweli kuelewa nini kinaendelea.
>> Lakini, kwa sasa, ni zamu nje kwamba hii mstari wa kanuni mabano mraba hapa
si kweli zipo.
Wao ni kile kinachoitwa sukari kisintaksia, ambayo
ni njia tu weirdly baridi ya kusema compiler waongofu mabano mraba kuwa
kwamba kujieleza hisabati.
Hivyo ni mkataba wa binadamu kuwa na uwezo wa kuandika tu
sana user-kirafiki mabano haya.
Lakini nini compiler, Clang, ni kweli kufanya wakati wowote
kuandika nini yalionyesha katika mstari 24, chini ya Hood ni kweli
kuwageuza kwa hili.
Ni tu zaidi utamu kama binadamu kusoma na kuandika kificho kama mstari 24.
Lakini hatimaye wale magurudumu mafunzo pia kufika mbali
wakati wenyewe faraja ya mtu anapata nguvu.
>> Haki wote, hivyo basi kukumbuka kwamba hii ilikuwa ni aina ya tatizo kubwa
sisi mbio katika.
Na hiyo ndiyo umesababisha zima huu mazungumzo damn kuhusu kuyatumia,
na anwani, na kuiga mambo.
Ilikuwa ni kwa sababu sisi tripped juu kijinga, kijinga suala hili, ambapo
Mimi kutekelezwa logically-- na Lauren hapa kwenye demo na maji ya machungwa
katika milk-- kikamilifu kazi algorithmically sahihi
kwa swapping vigezo mbili ' maadili, lakini jambo damn
hawakuwa na yoyote ya kuendelea, au kudumu, na athari kwenye kanuni yangu.
>> Na kwa nini ilikuwa hivyo?
Kwa kifupi, kwa nini hili utekelezaji wa wabadilishane
mantiki sahihi, lakini ina athari hakuna juu ya vigezo kwamba ni kupita hiyo,
kama x na y kwa kuu?
Ilikuwa kiini cha suala gani?
Yeah?
Watazamaji: Kwa sababu kutofautiana alifanya nakala za kutofautiana katika kupitisha
kupitia kazi.
>> DAVID J. Malan: Hasa, wakati kupita vigezo katika kazi, au hoja
ndani ya kazi, wao uko wanapita nakala, ambayo
ina maana unaweza kupata kufanana kuangalia mfano wa bits kwa wote x na y,
aitwaye hapa a na b.
Na unaweza kufanya kitu chochote unataka na nakala hizo,
lakini wao wanaenda kuwa hakuna athari juu ya wito kazi.
Na, kwa kweli, tulianzisha kwamba picha kwenye screen, kukumbuka
Mara ya mwisho, ambapo kama wewe kweli wanafikiri kuhusu nini
kinachoendelea chini hood-- kama hii ni kumbukumbu ya kompyuta yako,
na chini hapa ni chunk ya kumbukumbu inatumiwa kwa kuu,
hii ni chunk ya kumbukumbu inatumiwa kwa wabadilishane,
na hivyo hata kama ana kuu vigezo mbili, x na y,
wabadilishane wanaweza kuwa kufanana kuangalia maadili, wote wawili ambao ni 1 na 2,
lakini wao ni kabisa chunks mbalimbali za kumbukumbu.
>> Kwa hiyo, tunahitaji ufumbuzi wa hili.
Na kusema ukweli, inaweza kuonekana kwamba sisi sasa na ufumbuzi wa tatizo hili, haki.
Kama sisi sasa wana uwezo wa kuendesha mambo kwa njia ya anwani
na, aina ya chutes na ladders style, kufuata mishale hizi
na kwenda popote tunataka katika kumbukumbu, hawakuweza sisi
kutatua tatizo hili kwa kupita kutoka kuu wabadilishane
si maadili tunataka wabadilishane, lakini tu intuitively
nini inaweza sisi kupita wabadilishane badala yake?
>> [INTERPOSING SAUTI]
>> DAVID J. Malan: Kwa nini si sisi tu kuupitisha anwani, sawa?
Mbona sisi kutoa wabadilishane a hazina ramani, kama wewe,
ambayo inaongoza kwa maadili halisi x na y.
Hebu wabadilishane, kweli mabadiliko wale bits awali, badala ya
tu kupita nakala za vipande.
Na hivyo, kwa kweli, kwamba ni nini kwenda kuwa ufumbuzi.
Hii toleo hapa ni wazi mbaya na kiujanja.
Na sasa, katika mtazamo wa kwanza, ni tu inaonekana kama sisi aliongeza rundo la nyota nasibu
na shilingi vidole wetu kuwa itakuwa kukusanya.
Lakini, ingekuwa sasa kukusanya.
>> Lakini hebu angalia maana ya mambo haya.
Na, kwa bahati mbaya, waandishi wa C inaweza wamechagua alama nyingine
kufanya hii ndogo wazi, lakini nyota operator
ina maana tofauti katika mazingira mawili tofauti.
Na tumeona zote mbili, lakini hebu kutofautisha.
>> Hivyo hadi saa juu huko, wakati mimi yamebadilika a na b
asiwe int katika mbaya toleo int nyota, a na b,
hapo awali, walikuwa integers.
Na b ni nini sasa katika nzuri, kijani toleo la?
Wao ni anwani.
Anwani ya nini, kuwa wazi?
Anwani ya integers.
Hivyo ukweli kwamba mimi nina akisema int nyota njia
hii ni pepe ya integer, hasa.
>> Hivyo sasa taarifa katika mstari wa kanuni, kitu kingine imebadilika mno.
TMP anakaa huo, kwa sababu ni tu integer muda,
hakuna kumbukumbu uchawi hapo.
Lakini sasa mahitaji nyota.
Na, kwa kweli, kila kutaja wengine wa na b,
taarifa kwamba yote hiyo ni kubadilisha kutoka nyekundu na kijani
ni kwamba mimi nina prefixing vigezo wale wenye nyota.
Kwa sababu mimi sitaki nakala na b.
Kwa sababu kama mimi tu nakala na b na wabadilishane a na b, je, Mimi kwa kweli swapping?
Anwani Tu, nataka wabadilishane nini katika wale anwani.
Nataka kwenda huko.
Na hivyo nyota operator ndani ya kazi yangu,
si ndani ya orodha parameter, maana wewe kwenda wale anwani
na kweli mabadiliko maadili hayo.
>> Kwa hiyo kile anafanya picha sasa kuangalia kama badala yake.
Naam, kama badala mimi nina kupita katika kwa na b si 1 na 2--
Mimi kwa kweli haja ya kuongeza mengine ufafanuzi moja hapa.
Hivyo kudhani kuwa chunk hii ya kumbukumbu ni katika eneo 10.
>> Hii ni katika eneo 11, lakini hii ni kidogo ya kurahisisha,
Mimi sasa una maamuzi mawili kufanya mimi kupita x na y au gani mimi kupita anwani zao?
Kama mimi kupita anwani zao kama hii, mimi tu
sasa haja ya kutekeleza wabadilishane kwa kificho kijani
hivyo kwamba wakati anaona na wakati anaona b, haina nakala tu na b
na hoja maziwa na maji ya machungwa.
Maziwa na juisi ya machungwa mfano sasa umekwisha,
kwa sababu wale ni vikombe ya ramani maji na si.
Sisi badala haja ya kwenda kushughulikia 10 na sisi
haja ya kwenda kushughulikia 11, na kisha kufanya kwamba swapping mantiki.
>> Hivyo mantiki ni sawa, lakini tunahitaji njia tofauti kidogo
ya kupata vigezo hizo.
Na hivyo katika mwisho, nini mpango ina kuangalia kama ni hii.
Katika swap.c literally kunakiliwa na pasted toleo la kijani.
Lakini mimi haja ya kufanya mabadiliko moja.
Siyo kutosha tu kubadili wabadilishane.
Nini mstari mwingine wa kanuni nahitaji kubadilika?
Yeah?
>> Watazamaji: wapi inachukua hoja.
>> DAVID J. Malan: wapi inachukua hoja yake.
Hivyo kama mimi kitabu juu ya kuu, mimi Huwezi tu kupita katika x na y,
na, mimi ahadi, jana kipande cha syntax mpya leo.
Mimi haja ya kupita katika x na si y lakini pepe ya x na y.
Na zinageuka, alama kwamba waandishi wa C waliamua
ni kama matumizi ampersand hapa, si kwa kuchanganyikiwa na bitwise ampersand,
kama matumizi ampersand hapa na ampersand hapa,
hii takwimu za nje kwa ajili yenu, nini pepe ya x,
labda ni 10, nini anuani ya y, labda ni
11, na hupita wale walio katika badala yake.
>> Hivyo mengi ya kunyonya wote mara moja.
Lakini hebu angalia sasa haraka katika iliyobaki dakika nne wetu
ambapo mambo yanaweza kwenda kombo.
Na kama kando, kwa kweli Mimi alichukua picha hii,
TF alichukua picha hii mwaka mmoja au miwili iliyopita.
Hivyo hii ni kona nyuma ya Eliot Dining Hall.
Kuyatumia ni labda gumu mada hiyo sisi cover katika CS50.
Hivyo kama wewe kuwa na wasiwasi aina ya mteremko ni kama labda ni
zaidi ya magongo fimbo kama hii, kutambua
sisi ni aina ya inakaribia kilele katika suala la utata wa dhana.
>> Na mimi kuleta hii picha, kwa sababu Naapa
mungu, katika kuanguka 1996, wakati mimi alichukua CS50 na mafundisho mwenzangu,
Nishat Mehta, Yesu akakaa yangu chini katika kona ya Eliot D. Hall juu ya chakula cha mchana,
au cha jioni, au kitu kujaribu kunisaidia kuelewa kuyatumia.
Na hii ni mahali ambapo mimi nilikuwa wiki baada ya kuletwa katika hotuba wakati
Mimi hatimaye kueleweka kuyatumia.
Na mimi nina matumaini kwamba hii mapenzi click mbali mapema kwa ajili yenu.
Lakini kutambua hili kabisa miongoni mwa mada ya kisasa zaidi
tumekuwa inaonekana katika.
Lakini ni miongoni mwa nguvu zaidi.
Na wakati kupata hilo, ni kweli wote tu kwenda hatimaye kuja pamoja.
Hivyo mapumziko uhakika hana haja ya kuzama yote katika leo.
>> Hivyo hapa ni mpango wa mwisho tunakwenda kuangalia.
Na tunakwenda kuishia na Dakika haraka tatu ya claymation
yaliyotolewa na rafiki yetu, Nick Parlante.
Hapa ni mpango, kwamba juu ya mbili juu mistari inatangaza x kutofautiana na y.
Wote wawili ambao ni anwani za integers, AKA kuyatumia.
Sisi kisha kutenga kutosha kumbukumbu kuhifadhi int
na kuhifadhi anwani ya kwamba kumbukumbu katika x.
Hivyo, ni rahisi hata kuliko mfano kabla.
Nipe ka nne ya kumbukumbu, hiyo ni ukubwa wa int,
na kuweka anwani hiyo katika x.
Hii ina maana hapa mstari kwenda anuani katika x
na kuweka maana ya maisha, namba 42 hapo.
Lakini mstari huu wasiwasi mimi.
Nyota y ina maana kwenda anuani katika y, na kuweka idadi unlucky 13 huko.
Kwa nini ni hatari, katika hatua hii katika story-- japo kwa kasi aliiambia
katika dakika wetu waning here-- kwa nini ni mbaya
kwangu kusema, kwenda anuani katika y?
>> Watazamaji: Una si [inaudible].
DAVID J. Malan: Mimi sina kuweka chochote katika y.
Kwa hiyo kile ni thamani ya y, katika hatua hii ya hadithi?
Sisi hatuna wazo.
Ni baadhi ya thamani ya takataka na wala haina Binky kujua.
Kama tunaweza kuishia juu ya kumbuka hii.
>> [VIDEO avspelning]
>> -Hey, Binky, kuamka.
Ni wakati wa pointer na furaha.
>> -Nini Hiyo?
Kujifunza kuhusu kuyatumia?
Loo, goody.
>> -Naam, Kupata kuanza, mimi nadhani tuko kwenda haja ya kuyatumia wanandoa.
>> -SAWA.
Kanuni hii inatenga kuyatumia mbili ambayo inaweza kumweka kwa integers.
>> -OK, Vizuri naona kuyatumia mbili, lakini wao
hawaonekani kuwa akizungumzia chochote.
>> -yaani Ni haki.
Awali kuyatumia hawana uhakika na kitu chochote.
Mambo wao kumweka kwa watu aitwaye pointees na kuweka yao juu
ni hatua tofauti.
>> -Oh, Haki, haki.
Nilijua kuwa.
Pointees ni tofauti.
Hivyo ni jinsi gani kutenga pointee?
>> -OK, Vizuri hii kutenga kificho mpya integer pointee,
na seti sehemu hii x kwa uhakika na hilo.
>> -Hey, Kwamba inaonekana zaidi.
Hivyo kufanya hivyo kufanya kitu.
>> -OK, Mimi itabidi dereference pointer x kwa kuhifadhi idadi 42 katika pointee wake.
Kwa hila hii, mimi itabidi yangu uchawi wand ya dereferencing.
>> -Wako Uchawi wand ya dereferencing?
Uh, kwamba, hiyo ni kubwa.
>> -Hii Ni nini kificho inaonekana kama.
Mimi itabidi kuanzisha idadi and--
>> [POP SOUND]
>> -Hey, Angalia kuna unaendelea.
Hivyo, kufanya dereference juu ya x ifuatavyo mshale wa kupata pointee wake.
Katika kesi hiyo, kuhifadhi 42 katika huko.
Hey, jaribu kutumia kuhifadhi idadi 13 kupitia pointer mengine, y.
>> -SAWA.
Mimi itabidi kwenda juu hapa y, na kupata namba 13 seti up.
Na kisha kuchukua wand ya dereferencing na just--
>> [Buzzer SOUND]
>> -Oh, Hey kwamba hakuwa na kazi.
Kusema, uh, Binky, sijui kufikiri dereferencing
y ni wazo nzuri, kwa sababu kuweka up pointee ni hatua tofauti.
Na sidhani kama sisi milele alifanya hivyo.
>> -Hmm, Hatua nzuri.
>> -Yeah, Sisi zilizotengwa pointer, y, lakini sisi kamwe kuweka kwa uhakika na pointee.
>> -Hmm, Mwangalifu sana.
-Hey, Wewe kutafuta nzuri huko, Binky.
Je, unaweza kurekebisha ili y pointi kwa pointee sawa na x.
>> -Sure, Mimi kutumia wand uchawi wangu ya pointer zoezi.
>> -Je Kwamba kwenda kuwa tatizo, kama kabla?
>> -Hakuna, Hii ​​haina kugusa pointees.
Ni tu mabadiliko pointer moja kwa uhakika na huo thing--
>> [Sauti popping]
--as mwingine.
>> -Oh, Naona.
Sasa y pointi kwenye sehemu moja kama x.
Hivyo, ngoja, sasa y ni fasta.
Ina pointee.
Hivyo unaweza kujaribu wand ya dereferencing tena kwa kutuma 13 juu.
>> -Oh, Sawa, hapa unaendelea.
>> -Hey, Kuangalia kwamba.
Sasa dereferencing kazi juu y.
Na kwa sababu kuyatumia wanashiriki kwamba pointee moja, wao wote kuona 13.
>> -Yeah, Kushirikiana, uh, chochote.
Hivyo, ni sisi kwenda kubadili maeneo sasa?
>> -Oh, Angalia tuko nje ya muda.
>> -But--
>> -Tu kumbuka tatu sheria pointer.
Namba 1, muundo wa msingi ni kwamba una pointer,
na inaelekeza juu ya pointee kwa.
Lakini pointer na pointee ni tofauti.
Na makosa ya kawaida ni kuanzisha pointer
lakini kusahau kuwapa pointee.
>> Idadi 2, pointer dereferencing kuanza saa pointer
na ifuatavyo mshale wake juu ya kupata pointee wake.
Kama sisi wote kujua, hii kazi tu kama kuna ni pointee, ambayo aina ya anapata nyuma
kutawala namba 1.
>> Namba 3, pointer zoezi inachukua moja pointer
na mabadiliko hayo kwa uhakika na pointee sawa kama pointer mwingine.
Kwa hiyo baada ya zoezi, kuyatumia mbili
uhakika na pointee huo, wakati mwingine kwamba wito kugawana.
Na kwamba wote kuna hiyo, kwa kweli.
Bye-bye sasa.
>> [Mwisho avspelning]
>> DAVID J. Malan: Hiyo ni kwa CS50.
Shukrani kwa Profesa Nick Parlante.
Tutaweza kuona wewe wiki ijayo.
>> [ELECTRONIC Music kucheza]