>> [Halisi kucheza]
>> DAVID J. Malan: zote haki.
>> [Kicheko]
>> Karibu tena.
Hii ni CS50.
Na hii ya mwisho wa wiki tano.
Na hadi sasa, tumekuwa pretty much imekuwa kuchukua nafasi ya kwamba kuna
ipo hii mkusanyaji, Clang, kwamba wewe wameweza wamekuwa kutaja kwa njia ya hii
chombo nyingine iitwayo kufanya kwamba kwa namna fulani magically waongofu chanzo yako kificho
katika kitu kificho, zeros na ndio kwamba yako kompyuta CPU, kati
usindikaji kitengo, kweli anaelewa.
Lakini zinageuka kuna idadi hiyo ni kinachoendelea chini ya Hood katika
kati ya pembejeo na mazao.
>> Na ningependa kupendekeza kwamba sisi mwili kuwa nje kwa undani zaidi kidogo katika
hatua hizi nne, kuwa na kitu kinachoitwa kabla ya usindikaji, kitu
kuitwa kuandaa, ambayo tumeona, kitu kinachoitwa kukusanyika, na
kitu kinachoitwa kuunganisha.
Hivyo hadi sasa, katika baadhi ya yetu ya mipango, tumekuwa alikuwa mkali pamoja.
Hivi karibuni tulikuwa na baadhi mkali amefafanua kwa constants.
Hivyo zinageuka kuwa yale mambo ni prefixed na alama hash au
alama ya pound ni kabla ya processor maelekezo.
Hiyo ni njia tu ya dhana ya kusema ni mstari wa kanuni kwamba ni kweli
waongofu katika kitu kingine kabla ya kompyuta hata kujaribu kubadili yako
mpango katika zeros na ndio.
>> Kwa mfano, kali ni pamoja na kiwango I / O h., Pretty much tu ina maana kwenda
mbele, kunyakua yaliyomo ya mafaili stdio.h na kuweka haki yao huko.
Hivyo hakuna zeros na ndio katika hatua bado.
Ni kweli tu badala.
Na kwamba kufanyika wakati kinachojulikana kabla ya usindikaji hatua, wakati wewe
kweli kuendesha Clang au hasa Kufanya katika kesi nyingi.
Hivyo wote hii imekuwa ikitokea kwanza moja kwa moja hivi sasa.
>> Kisha huja hatua mkusanyiko.
Lakini sisi tumekuwa oversimplified mkusanyiko.
Kuandaa mpango wa kweli maana ya kuchukua kutoka kitu kama C,
chanzo kanuni tumekuwa kuandika, chini kwa kitu kinachoitwa mkutano.
Bunge lugha ni ngazi ya chini lugha hiyo, nashiriki, sisi si
kuwa mengi tukio kuandika hii muhula.
Lakini ni katika ngazi ya chini kabisa katika maana ya kwamba wewe literally kuanza kuandika
kutoa na kujumlisha na kuzidisha na mzigo kutokana na kumbukumbu na kuokoa na kumbukumbu,
msingi sana maelekezo ya kwamba kompyuta, chini ya Hood,
kweli anaelewa.
>> Mwisho, kukusanyika inachukua kwamba lugha kwa zeros na wale ambao tumekuwa
kuelezea hivi sasa.
Na kweli mwishowe, kuna kinachojulikana kuunganisha awamu, ambayo tutaweza
kuona katika wakati huu tu, ambao unachanganya zeros yako na ndio na zeros na
wale watu wengine kabla ya una umba.
>> Hivyo kufikiria hili super rahisi mpango.
Ni kutokana na Wiki 1.
Ni tu alisema, Hello Dunia, kwenye screen.
Sisi mbio hili kwa njia ya Clang.
Au sisi mbio ni kwa njia ya kufanya ambayo mbio Clang.
Na outputted wakati ambapo baadhi zeros na ndio.
Lakini zinageuka kuna hatua ya kati.
Kama mimi kwenda juu hapa - oops, hakuwa wanataka kumwona bado.
Kama mimi kwenda juu hapa appliance yangu na mimi kufungua hello.c, hapa
ni kwamba mpango huo.
Na kile Mimi naenda kufanya katika terminal yangu dirisha hapa ni mimi nina kwenda
kukimbia Clang badala ya kufanya, ambayo automates zote nne za
wale hatua kwa ajili yetu.
Na mimi naenda kufanya Clang-S na kisha hello.c na kisha kuingia.
>> Na mimi kupata haraka blinking tena, ambayo ni nzuri.
Na sasa katika dirisha kubwa kidogo, Mimi naenda kufungua gedit katika hapa.
Na mimi nina kwenda kufungua faili kwamba, zamu nje, ni kuitwa hello.s hii
lina lugha ya mkutano Mimi inajulikana mapema.
Na hii ni nini wito mkutano lugha, haki ya chini ngazi
maelekezo ya kwamba yako Intel CPU au chochote ni kwamba ndani ya
anaelewa.
Na MOV ni kwa hoja. simu ni kwa wito, chini sana ngazi ya kazi.
ndogo ni kwa ajili ya Ondoa.
>> Hivyo wakati una CPU hasa ndani ya ya kompyuta yako, nini inafanya
tofauti, dhidi ya nyingine CPUs juu ya soko, ni maelekezo ambayo ni
anaelewa na mara nyingi jinsi ufanisi ni ni, jinsi ya kufunga ni katika utekelezaji wa baadhi ya
ya wale maelekezo.
Sasa kwa zaidi juu ya hili, unaweza kuchukua ijayo Fall CS61 chuoni.
Lakini hapa tuna, kwa mfano, wachache vitambulisho kwamba ili kuangalia ukoo.
hello.c ni jina la mpango.
>> . Asilia -
kuna si mengi ya riba kuna tu sasa, kukumbuka kwamba maandishi
sehemu, kama ya Jumatatu, ni wapi katika kumbukumbu ya mpango wako kwa kweli mwisho juu.
Hivyo kwamba ni angalau bila kufafanua ukoo huko.
Hapa, bila shaka, ni kutaja ya kazi yetu kuu.
Scrolling chini, hizi kutaja mambo kinachoitwa madaftari, ndogo sana chunks ya
kumbukumbu ndani ya CPU yako halisi.
Na kama mimi kitabu chini hata zaidi, mimi kuona baadhi ya aina
moja kwa moja kutaja ya ASCII.
Na pale, kwa kweli, ni kamba kwamba, hello, comma, dunia.
>> Hivyo muda mrefu hadithi fupi, hii imekuwa kinachotokea kwa ajili yenu, moja kwa moja,
chini ya Hood yote ya wakati huu.
Na kinachotokea kwa kweli ni mara moja umefanya kukimbia Clang, au kwa njia ya
Kufanya, wewe ni kupata ya kwanza, kutoka chanzo code,
kinachojulikana mkutano wa lugha.
Kisha Clang ni kuwabadili kusanyiko hili Lugha chini zeros na ndio.
Na hii ni slide kwamba sisi ilianza mjadala wetu katika Wiki 0 juu -
na kisha Wiki 1 juu.
Na kisha hatimaye, wale zeros na ndio ni pamoja na zeros na ndio
kutoka maktaba wale tumekuwa kuchukua kwa nafasi kama darasa la I / O au
Kamba Library au hata Maktaba CS50.
>> Hivyo kwa rangi hii picha zaidi kuibua, tuna hello.c.
Na, bila shaka, anatumia printf kazi ya kusema, hello dunia.
hatua ya mkusanyiko inachukua ni chini ya kwamba faili sisi tu kuona hello.s, hata
ingawa hiyo ni kawaida ilifutwa moja kwa moja kwa ajili yenu.
Lakini hiyo ni kanuni ya kanisa katika hatua ya katikati.
Na wakati sisi kukusanyika mkutano lugha, hivyo kusema, kwamba wakati wewe
kupata zeros hizo na zile.
Hivyo tumekuwa zoomed katika ufanisi leo juu ya nini tumekuwa kuchukua kwa nafasi,
ina maana ya kwenda chanzo kanuni ya kupinga kanuni.
>> Lakini mwishowe, sasa kwamba picha hiyo - hebu shove ni juu ya
mkono wa kushoto upande.
Na kutambua kwamba katika juu kuna Nilivyoeleza stdio.h.
Hiyo ni faili kwamba tumekuwa pamoja katika karibu wote wa
mipango tumekuwa imeandikwa.
Na kwamba faili ambaye yaliyomo kupata nakala pasted,
ufanisi atop code yako.
Lakini zinageuka kuwa, kwenye kompyuta mfumo mahali fulani, kuna labda
stdio.c faili kwamba mtu aliandika miaka iliyopita kwamba zana zote za
kazi ambayo yalitangazwa katika stdio.h.
>> Sasa katika hali halisi ni pengine si juu ya Mac au PC yako au hata katika
CS50 appliance ni mbichi C kanuni.
Mtu tayari ulioandaliwa ni pamoja na . O faili kwa ajili ya kitu au kanuni.
faili, ambayo inahusu maktaba pamoja kwamba imekuwa kabla ya imewekwa na
kabla ya ulioandaliwa kwa ajili yenu.
Lakini tuseme kwamba kuna kweli ipo kwenye kompyuta yetu stdio.c sambamba
na Clang.
Kificho wako wa kuwa compiled na wamekusanyika.
kanuni stdio.c 's ni kuwa ulioandaliwa na wamekusanyika, kwa hivyo hili sana mwisho
hatua, hapa chini, inabidi kwa namna fulani kiungo, hivyo kusema, zeros yako na wale
na yake zeros na ndio katika moja rahisi mpango ni kwamba hatimaye
kuitwa tu Hello.
>> Hivyo hiyo yote ya uchawi kwamba ni yakitokea hivi sasa.
Na itaendelea kuchukua hizi michakato kwa nafasi, lakini kutambua
kuna mengi ya maelezo Juicy kinachoendelea chini ya hapo.
Na hii ni nini hufanya yako kompyuta na Intel ndani
hasa tofauti.
>> Kadhalika kumbuka kwamba, kama ungependa kujiunga na sisi kwa chakula cha mchana Ijumaa hii, kufanya kwenda
kwa cs50.net/rsvp kawaida mahali, 1:15 Ijumaa hii.
Na sasa matangazo machache.
Hivyo tuna baadhi ya habari njema.
Na tuna baadhi ya habari mbaya.
Kuanza na baadhi ya habari nzuri hapa.
>> [Kuugua]
>> Wote haki.
Naam, ni kitaalam likizo, hivyo siyo sana zawadi kutoka kwetu.
Lakini basi habari mbaya ya shaka.
>> [Kuugua]
>> Mimi alitumia muda mwingi juu ya haya michoro.
>> [Kicheko]
>> Kutakuwa na kikao cha mapitio hii Jumatatu ijayo.
Ni kwenda kuwa, saa 05:30.
Sisi kuwakumbusha hayo maelezo yote kupitia barua pepe juu ya kozi
tovuti katika michache tu ya muda siku.
Itakuwa zingine na kufanywa kupatikana baada ya muda mfupi.
Hivyo kama huwezi kufanya kwamba Jumatatu usiku yanayopangwa, msiwe na wasiwasi.
Sehemu hii wiki ijayo mapenzi pia kuzingatia marekebisho kwa jaribio.
Kama sehemu yako ni siku ya Jumatatu, ambayo ni kweli chuo kikuu likizo, sisi
bado kukutana katika sehemu.
Kama wewe tu hawezi kufanya kwamba sehemu kwa sababu wewe ni kwenda
mbali, hiyo faini.
Kuhudhuria Jumapili au Jumanne sehemu au tune-katika sehemu Jason, ambayo ni
inapatikana online.
>> Hivyo, zaidi ya habari mbaya.
Hivyo kulingana na mtaala, tuna hotuba Ijumaa ijayo.
Lakini habari njema -
uwazi, Mimi alitumia muda mwingi sana juu ya hili.
>> [Kicheko]
>> Tutaweza kufuta ijayo mihadhara ya Ijumaa.
Hivyo kwamba itakuwa zawadi kwa ajili yetu, hivyo unaweza kweli kuwa nzuri katika muhula
kati ya wiki hii na wiki mbili hapa.
Hivyo hakuna mihadhara wiki ijayo, tu vidogo Jaribio kidogo, ambayo unapaswa kuwa
kupata inazidi msisimko.
>> Basi hebu sasa kurejea mawazo yetu kwa kitu ambacho kwa kweli ni zaidi ya Visual
na zaidi ya kusisimua na kuweka hatua kwa ajili ya nini kinaendelea kuwa kwenye upeo wa macho
katika michache tu ya muda wa wiki.
Baada ya jaribio la kwanza, tutaweza kugeuka lengo la tatizo letu seti mwingine
domain maalum tatizo, ile ya forensics au usalama zaidi kwa ujumla.
>> Kwa kweli, mila na tatizo hili kuweka ni kwa ajili yangu moja ya
kufundisha wenzao au CAS kutembea katika chuo kuchukua picha ya baadhi ya
zinazotambulika lakini si dhahiri watu, maeneo, au vitu, kisha kila mwaka mimi
namna fulani kusimamia na ajali kufuta au kuharibu kadi digital vyombo vya habari
kwamba ndani ya kamera yetu.
Lakini hakuna mpango mkubwa.
Siwezi kwenda mbele na kuziba kwamba katika kompyuta yangu.
Siwezi kufanya sanamu ya kuchunguza mauaji ya hivyo, hivyo kusema, kwa kuiga zeros na
ndio mbali ya kadi ya kwamba kumbukumbu, kama yake ya kadi ya SD au au kadi Compact flash
chochote wewe ni ukoo na.
Na kisha tunaweza mkono kwamba nje.
>> Na hivyo changamoto mbele, kati ya mengine mambo kwa ajili yenu, itakuwa kuandika
C kificho kwamba recovers rundo zima la JPEGs kwa ajili yangu na umebaini kuwa
wale watu, mahali, au mambo.
Na tutaweza pia kuzungumza, katika tatizo hili kuweka na katika siku zijazo, kuhusu
graphics zaidi kwa ujumla.
Tumekuwa kutumika kwao, bila shaka, kwa kuvunja nje.
Lakini umefanya aina ya kuchukuliwa kwa nafasi kuna hizi ngazi ya juu fikra
ya mistatili na ovals.
Lakini chini ya Hood kuna saizi.
Na wewe alikuwa na kuanza kufikiri juu ya hayo.
Au wewe kwa ajili ya p-seti 4 na kufikiri kuhusu pengo kati ya matofali yako, jinsi
haraka wewe ni mpira ni kusonga hela screen kwa kuvunja nje.
Hivyo kuna wazo hili la dots juu ya screen yako kwamba ni
kuja kucheza tayari.
>> Sasa nini kuona, ingawa, ni nini kupata kwenye screen ya kompyuta.
Kama ve milele watched baadhi nzuri au TV mbaya, ni tabia mbaya wao pretty much
kutibu watazamaji kama technophobes ambao si kweli
kujua mengi kuhusu kompyuta.
Na hivyo ni rahisi sana kwa ajili ya polisi upelelezi kusema, unaweza
safi kuwa hadi kwa ajili yangu?
Au kuboresha, haki?
Kuongeza ni kama neno buzz katika yoyote zaidi uhalifu kuhusiana show.
Na ukweli ni kama kuchukua sana blurry picha ya mtuhumiwa kufanya
kitu mbaya, huwezi tu kuongeza yake.
Huwezi kuvuta kubwa.
Huwezi kuona katika glint ya mtu jicho waliofanya kwamba
hasa uhalifu, licha ya maambukizi ya hii kwenye TV.
>> Na hivyo na kwamba hebu kuwahamasisha kwamba tatizo ujao kuweka na mtazamo saa
baadhi inaonyesha na ambayo wapate kuwa ukoo.
>> [Video avspelning]
>> -OK.
Sasa, hebu kupata nzuri kuangalia wewe.
>> -Hold yake.
Kukimbia kwamba nyuma.
>> -Subiri dakika.
Kwenda kulia.
>> -Kuna.
Kufungia kwamba.
>> -Full screen.
>> -OK.
Kufungia kwamba.
>> -Kaza juu ya kwamba, mapenzi ya?
>> -Vector katika juu ya guy kwamba na gurudumu nyuma.
>> -Zoom katika haki hapa kwenye doa hili.
>> -Pamoja na vifaa vya kulia, imaged unaweza kuwa wazi kabisa na makali.
>> -Ni nini hiyo?
>> -Ni mpango kukuza.
>> -Je, unaweza wazi kuwa hadi yoyote?
>> -Mimi sijui.
Hebu kuongeza yake.
>> -Kuongeza kifungu-6.
>> -I kuimarishwa undani na -
>> -Nadhani kuna kutosha kuimarisha.
Kutolewa kwa screen yangu.
>> -Kuongeza kutafakari katika macho yake.
>> -Hebu kukimbia hii kupitia video kukuza.
>> -Edgar, unaweza kuongeza hii?
>> -Hutegemea.
>> -I've been kazi tafakari hii.
>> -Mtu wa kutafakari.
>> -Reflection.
>> -Kuna tafakari ya uso wa mtu.
>> -Kutafakari.
>> -Kuna kutafakari.
>> -Zoom katika juu ya kioo.
>> -Unaweza kuona kutafakari.
>> -Je, unaweza kuongeza picha kutoka hapa?
>> -Je, unaweza kuimarisha haki yake hapa?
>> -Je, unaweza kuongeza yake?
>> -Je, tunaweza kuongeza hii?
>> -Je, unaweza kuongeza yake?
>> -Kushikilia pili, mimi itabidi kuongeza.
>> -Zoom katika juu ya mlango.
>> -X10.
>> -Zoom.
>> [Kicheko]
>> Hoja-in
>> -Subiri, kuacha.
>> -Stop.
>> -Pause yake.
>> -Mzunguko digrii 75 kote wima tafadhali.
>> [Kicheko]
>> -Stop, na nyuma ya sehemu kuhusu mlango tena.
>> -Got enhancer picha kwamba unaweza bitmap?
>> -Labda tunaweza kutumia Sen Pradeep njia ya kuona katika madirisha.
>> -Hii ni programu ya hali ya sanaa.
>> Za thamani ya icon ni mbali.
>> -Na macho haki ya algorithms.
>> -Yeye kuchukuliwa algorithms kuja kwa ngazi ya pili na mimi unaweza kuzitumia ili
kuongeza hii picha.
>> -Lock juu na kupanua z-mhimili.
>> -Kuongeza.
>> -Freeze na kuongeza.
>> [MWISHO video avspelning]
>> DAVID J. Malan: Hivyo Tatizo Set 5 ni kile uongo mbele huko.
Hivyo tutaweza karibuni kupata uelewa bora ya wakati na kwa nini unaweza
na yetu haiwezi kuongeza katika njia hiyo.
Lakini kwanza, hebu kurudi tahadhari yetu kwa baadhi ya vitalu jengo tutaweza
haja ya kuwa na uwezo wa kuwaambia kwamba hadithi.
>> Hivyo kukumbuka kuwa sisi akauchomoa hii picha kwenye Jumatatu na kidogo wiki iliyopita.
Na hii inaelezea mpangilio wa mambo katika kumbukumbu ya kompyuta yako wakati
mbio baadhi mpango.
sehemu tech juu juu, kukumbuka, inahusu kwa zeros halisi na ndio
ambayo kutunga programu yako.
Kuna, chini ya kwamba, au baadhi ya initialized uninitialized data, ambayo kwa kawaida
inahusu mambo kama constants au masharti au vigezo kimataifa kwamba kuwa
imetangazwa mapema.
Kuna lundo, lakini tutaweza kuja nyuma na kwamba katika kidogo.
>> Na kisha kuna stack.
Kiasi kama mkusanyiko wa sania katika mkahawa, hii ni wapi anapata kumbukumbu
layered na layered wakati wowote kufanya nini katika mpango?
Kile ni matumizi stack kwa?
>> Yeah?
>> Wito wa kazi.
Wakati wowote wewe piga kazi, ni aliyopewa Sliver ya kumbukumbu kwa ajili ya wake
mitaa vigezo au vigezo wake.
Na pictorially, tunaona kwamba kwa kila kazi mfululizo kuitwa, wakati
B C wito wito wito D, wao kupata layered kwenye stack.
Na ndani ya kila moja ya vipande wale wa kumbukumbu kimsingi ni upeo wa kipekee
kwa ajili ya kazi kwamba, ambayo, bila shaka, ni tatizo kama unataka mkono
kutokana na kazi moja hadi nyingine kipande ya data kwamba unataka
mutate au kubadilika.
>> Hivyo kile alikuwa ufumbuzi wetu kuwezesha kazi kuwakilishwa na stack moja
sura na mabadiliko ndani ya kumbukumbu wa mwingine sura ya stack?
Jinsi ya kufanya wale majadiliano 12:58 mwingine?
Hivyo kwa njia ya kuyatumia au anwani, ambayo, tena, tu kuelezea ambapo katika
kumbukumbu, kwa njia ya maalum bite ya simu, hasa
thamani inaweza kupatikana.
Hivyo kukumbuka mara ya mwisho pia tuliendelea hadithi na inaonekana katika
haki Buggy mpango.
Na mpango huu ni Buggy kwa ajili ya wachache sababu, lakini inatia mashaka ni moja ya
kwa sababu inashindwa kuangalia nini?
>> Yeah, inashindwa kuangalia pembejeo.
Pole?
>> Kama ni zaidi ya wahusika 12.
Sana smartly, wakati wito memcopy, ambayo, kama jina linavyosema, tu
nakala ya kumbukumbu kutoka hoja yake ya pili katika hoja yake ya kwanza.
Hoja ya tatu, sana smartly, ni checked kuhakikisha kwamba huna
nakala zaidi, katika kesi hii, urefu ya bar, idadi ya wahusika,
ndani ya marudio, ambayo ni hii safu C. Lakini tatizo ni kwamba kile
ikiwa C yenyewe si kubwa ya kutosha kushughulikia kwamba?
Wewe ni kwenda na nakala ya simu ya ka kwamba tumekuwa aliyopewa.
Lakini je, kweli kuwa zaidi ka kuliko wewe kuwa na chumba kwa ajili ya?
>> Naam, hii mpango upumbavu tu upofu kuendelea na kuchukua chochote ni
aliyopewa, hujambo backslash 0 ni kubwa kama kamba ni mfupi
kutosha, kama tano chars.
Lakini kama ni kweli 12 wahusika au 1,200 wahusika, tuliona wakati wa mwisho
kwamba wewe ni kwenda tu kabisa overwrite kumbukumbu kwamba
siyo wewe.
Na mbaya zaidi kesi, kama wewe overwrite kwamba nyekundu sehemu pale kwamba sisi kuitwa
kurudi anwani -
hii ni tu ambapo kompyuta moja kwa moja, kwa ajili yenu, nyuma ya
pazia, tucks mbali thamani ya 32-bit kwamba kuwakumbusha kwa nini anwani ni lazima
kurudi wakati foo, hii kazi nyingine, inafanywa utekelezaji.
Ni chembe mkate wa kila aina ambayo kuirudisha.
Kama wewe overwrite kwamba, uwezekano, kama wewe ni mtu mbaya, unaweza hawakuweza
uwezekano wa kuchukua mtu kompyuta.
Na wewe utakuwa hakika ajali hiyo katika kesi nyingi.
>> Sasa tatizo hii ilikuwa tu exacerbated kama sisi kuanza kuzungumza juu ya kumbukumbu
usimamizi kwa ujumla zaidi.
Na malloc, kwa ajili ya mgao kumbukumbu, ni kazi kwamba tunaweza kutumia kutenga
kumbukumbu wakati hatujui mapema tupate haja ya baadhi ya.
Hivyo, kwa mfano, kama mimi kurejea kwa appliance hapa.
Na mimi kufungua kutoka hello2.c mara ya mwisho, kukumbuka mpango huu hapa, ambayo inaonekana
kitu kidogo kama hii, tatu tu mistari -
hali ya jina lako, basi kamba jina, upande wa kushoto, sawa GetString.
Na kisha sisi magazeti ya nje, jina la mtumiaji.
>> Hivyo hii ilikuwa super rahisi mpango.
Kuwa wazi, napenda kwenda mbele na kufanya hujambo-2.
Mimi naenda kufanya dot kufyeka hujambo-2.
Eleza jina yako -
Daudi.
Kuingia.
Hujambo Daudi.
Inaonekana kazi OK.
Lakini ni nini kweli kinachoendelea chini ya Hood hapa?
Kwanza hebu peel nyuma tabaka fulani.
Kamba ni kisawe tu tumekuwa barabara kwa nini?
Char nyota.
Basi hebu kufanya ni kidogo zaidi arcane lakini zaidi ya utaalamu sahihi kwamba hii
ni nyota Char, ambayo ina maana kwamba jina, ndiyo, ni kutofautiana.
Lakini nini jina maduka ni anwani ya Char, ambayo anahisi ajabu kidogo
kwa sababu mimi nina kupata nyuma kamba.
Nina kupata nyuma nyingi chars si Char.
>> Lakini bila shaka, haja tu ya kwanza anuani ya Char ya kukumbuka ambapo
kamba nzima ni kwa nini?
Jinsi gani unaweza kufikiri ambapo mwisho wa kamba ni kujua mwanzo?
sifuri backslash.
Hivyo, pamoja na dalili hizo mbili, unaweza kufikiri kabla ya mwanzo na mwisho wa
kamba yoyote ni, hivyo muda mrefu kama wao ni vizuri hutengenezwa kwa null kwamba
Terminator, kwamba sifuri backslash.
>> Lakini hii ni wito GetString.
Na zinageuka kuwa GetString muda wote huu imekuwa aina ya
cheating kwa ajili yetu.
Imekuwa ni kufanya hii kazi, kuwa na uhakika, kupata kamba kutoka mtumiaji.
Lakini ambapo wa kumbukumbu kwamba wamekuwa kuja kutoka?
Kama sisi kurudi nyuma kwa picha hapa na kuomba ufafanuzi kutoka tu
wakati iliyopita, kwamba ni stack ambapo kumbukumbu huenda wakati kazi ni wito,
kwa mantiki kwamba, wakati wewe piga GetString, na kisha mimi aina katika
D-A-V-I-D Kuingia, ambapo ni D-A-V-I-D backslash sifuri kuhifadhiwa, ya msingi ya
hadithi tumekuwa alituambia mbali?
>> Inaonekana kuwa katika stack, haki?
Wakati wewe piga kupata kamba ya kupata kidogo kipande cha kumbukumbu juu ya stack.
Hivyo anasimama kwa kufikiri kwamba D-A-V-I-D sifuri backslash ni kuhifadhiwa
huko katika stack.
Lakini kusubiri dakika, GetString anarudi kamba kwamba, ili kuzungumza, ambayo ina maana
ni tray kutoka mkahawa ni kuchukuliwa mbali stack.
Na sisi alisema mara ya mwisho kwamba haraka kama kazi anarudi, na kwamba wewe kuchukua
tray, hivyo kusema, mbali stack, nini unaweza kudhani kuhusu mabaki ya
kwamba kumbukumbu?
Mimi aina ya redrew yao kama alama swali kwa sababu wao kwa ufanisi kuwa
haijulikani maadili.
Wanaweza kutumika tena wakati baadhi kazi ya pili ni kuitwa.
>> Kwa maneno mengine, kama sisi kutokea kuwa hifadhi -
Mimi itabidi kuchora picha ya haraka hapa ya stack.
Kama sisi kutokea kwa kuwa na kuchora chini sehemu ya kumbukumbu yangu, na tutaweza kusema
kwamba hii ni sehemu ya kumbukumbu ulichukua na kuu na labda ARG c na
ARG v na kitu kingine chochote katika mpango, wakati GetString inaitwa,
labda GetString anapata chunk ya kumbukumbu hapa.
Na kisha D-A-V-I-D kwa namna fulani mwisho juu katika kazi hii.
Na mimi nina kwenda oversimplify.
Lakini hebu kudhani kwamba wake-D A-V-I-D backslash sifuri.
Hivyo ka hii nyingi zinatumika katika frame kwa GetString.
>> Lakini kwa haraka kama anarudi GetString, sisi Alisema mara ya mwisho kwamba kumbukumbu hii juu ya
hapa kila inakuwa - woops! -
yote inakuwa ufanisi kufutika.
Na tunaweza kufikiria hili sasa kama swali alama sababu ambaye anajua
nini kinaendelea kuwa ya kumbukumbu hiyo.
Hakika, mimi mara nyingi sana kuwaita kazi chochote zaidi GetString.
Na haraka kama mimi wito nyingine kazi kuliko GetString, labda si katika
mpango huu hasa sisi tu inaonekana saa lakini baadhi ya wengine, hakika baadhi ya wengine
kazi inaweza kuishia kuwa kutolewa doa hii ijayo katika stack.
>> Hivyo haiwezi kuwa maduka GetString D-A-V-I-D juu ya stack kwa sababu napenda
mara moja kupoteza huduma hiyo.
Lakini tunajua wao GetString tu anarudi nini?
Ni si kurudi mimi wahusika sita.
Je, ni kwa kweli hakuwa kurudi twaona mara ya mwisho?
anwani ya kwanza.
Hivyo kwa namna fulani, wakati wewe kuitwa GetString, ni kugawa chunk ya kumbukumbu kwa
kamba kwamba aina ya watumiaji na kisha kurudi na anwani yake.
Na zinageuka kuwa wakati unataka kazi kutenga kumbukumbu katika hii
njia na kurudi kwa mtu ambaye kuitwa kwamba kazi, anwani ya
kwamba chunk ya kumbukumbu, wewe kabisa hawawezi kuiweka katika stack katika
chini, kwa sababu functionally ni tu kwenda si kuwa wako sana
haraka, hivyo pengine unaweza nadhani ambapo sisi ni pengine kwenda kuwatupia
badala yake, lundo kinachojulikana.
>> Hivyo kati ya chini ya kumbukumbu yako mpangilio na juu ya kumbukumbu yako ya
layout ni rundo zima la makundi.
Moja ni stack, na haki ya hapo juu, ni chungu.
Na lundo ni chunk tofauti ya kumbukumbu kwamba si kutumika kwa ajili ya kazi
wakati wao ni kuitwa.
Ni kutumika kwa ajili ya kumbukumbu ya muda mrefu, wakati unataka moja ya kazi kwa kunyakua baadhi ya
kumbukumbu na kuwa na uwezo wa hutegemea ni bila ya kupoteza udhibiti juu yake.
>> Sasa unaweza labda mara moja kuona kwamba hii si
lazima kubuni kamilifu.
Kama mpango wako zilizotengwa kumbukumbu kwenye stack, au kama wewe piga zaidi na
zaidi kazi, au kama wewe kutenga kumbukumbu juu ya lundo na malloc mbali kama
GetString ni kufanya, nini wazi inaonekana kuwa kuepukika tatizo?
>> Haki.
Kama ukweli kwamba haya mishale ni akizungumzia kwa kila mmoja
hakuendani.
Na kwa kweli, tunaweza haraka sana ajali mpango katika idadi yoyote ya njia.
Kwa kweli, nadhani tuwe na kufanyika hii ajali mara moja.
Au kama si hivyo, hebu kufanya hivyo makusudi sasa.
Hebu kwenda mbele na kuandika super haraka programu inayoitwa dontdothis.c.
Na sasa nitakwenda katika hapa na wala mkali pamoja stdio.h.
Hebu kutangaza kazi foo inachukua hakuna hoja, ambayo ni
ulionyehsa pamoja na utupu.
>> Na kitu pekee foo ni kwenda kufanya ni wito foo, ambayo pengine si
smartest wazo, lakini na iwe hivyo.
Ent kuu utupu.
Sasa kitu pekee kuu ni kwenda kufanya ni kuwaita foo pia.
Na tu kwa mateke, mimi nina kwenda mbele hapa na kusema printf "Hello kutoka
foo. "
>> OK.
Hivyo kama mimi si kufanya makosa yoyote, Kufanya dontdothis dot kufyeka.
Na hebu kufanya hivyo katika dirisha kubwa -
dot kufyeka, dontdothis.
Kuja juu.
Uh oh.
Inavyoonekana, unaweza kufanya hivyo.
Damn it.
OK.
Kusubiri.
Kusimama kwa.
Je, sisi -
Hatukuwa kutumia kwa kufanya.
>> [Anapumua]
>> Najua lakini nadhani sisi tu kwamba imefutwa.
Uh, yeah.
Damn it.
Kutatua Rob.
Nini?
Ni rahisi sana.
Yeah, sisi akageuka optimization mbali.
OK, kusimama bye.
Sasa mimi kujisikia vizuri.
OK.
Wote haki.
>> Basi hebu recompile hii -
Kufanya wewe dontdothis.
Unaweza kuwa na kubadili jina hili dothis.c katika muda tu.
Kuna sisi kwenda.
Asante.
OK.
Hivyo ukweli kwamba nilikuwa kuchapa kitu nje alikuwa kweli tu
kupunguza kasi ya mchakato na ambayo sisi ingekuwa kufikiwa kwamba uhakika.
OK.
Phew!
>> Hivyo ni nini hasa kinachoendelea?
sababu kuna, kama tu kando, ni kufanya kitu chochote katika suala la pembejeo na
pato huelekea kuwa polepole kwa sababu wewe kuwa na kuandika herufi kwa
screen, Ina na kitabu.
Hivyo muda mrefu hadithi fupi, alikuwa na mimi kwa kweli kilichotokea hivyo papara, tunataka kuwa
kuona hii matokeo ya mwisho pia.
Sasa kwa kuwa nilipata safari ya magazeti-ups, tunaona haki mbali.
Hivyo ni kwa nini hili likitokea.
Naam, maelezo rahisi, bila shaka, ni kwamba foo pengine lazima si
kuwa wito yenyewe.
>> Sasa kwa ujumla, hii ni recursion.
Na sisi mawazo wiki kadhaa iliyopita kujirudia ni nzuri.
Recursion ni njia hii ya kichawi ya kuonyesha mwenyewe super ufupi.
Na ni kazi tu.
Lakini kuna kipengele muhimu ya yote ya mipango ya kujirudia tumekuwa aliyesema
kuhusu na inaonekana saa hivi sasa, ambayo ilikuwa kwamba walikuwa na nini?
kesi ya msingi, ambayo ilikuwa ngumu baadhi coded kesi hiyo alisema katika baadhi ya hali
wala kuwaita foo, ambayo ni wazi si kesi hapa.
>> Hivyo kile ni kweli yanatokea katika suala la picha hii?
Naam, wakati kuu wito foo, ni anapata kipande cha kumbukumbu.
Wakati foo wito foo, anapata kipande cha kumbukumbu.
Wakati foo wito foo, anapata kipande.
Anapata kipande.
Sababu foo ni kamwe kurudi.
Sisi ni kamwe kufutwa mmoja wa wale muafaka kutoka stack.
Hivyo sisi ni unavuma kupitia chungu, si kutaja ambaye anajua kile kingine, na
sisi ni overstepping mipaka ya yetu ya kinachojulikana sehemu ya kumbukumbu.
Kosa kwenda segmentation uongo.
>> Hivyo suluhisho kuna wazi si kufanya hili.
Lakini maana kubwa zaidi ni kwamba, ndiyo, kuna kabisa ni kikomo fulani,
hata kama siyo vizuri defined, kama jinsi kazi nyingi unaweza kuwaita katika
mpango, mara ngapi kazi wanaweza kupiga yenyewe.
Hivyo hata kama tulivyofanya kuhubiri recursion kama jambo hili uwezekano wa kichawi
michache ya wiki iliyopita kwa ajili ya sigma kazi, na wakati sisi kupata data
miundo na CS50, utaona nyingine maombi kwa ajili ya hayo, siyo
lazima kitu bora.
Kwa sababu kama kazi ya wito yenyewe, wito yenyewe, hata kama kuna msingi
kesi, kama huna hit kwamba kesi ya msingi kwa ajili ya 1000 au simu wito 10,000, na
kwamba wakati unaweza kuwa na kukimbia nje ya chumba juu ya kinachojulikana yako stack na kibao
baadhi ya makundi mengine ya kumbukumbu.
Hivyo pia ni kubuni biashara-off kati ya ulimbwende na kati ya
robustness ya fulani yako utekelezaji.
>> Hivyo kuna mwingine upande wa chini au mwingine gotcha kwa nini tumekuwa
wamekuwa wakifanya hivi sasa.
Wakati mimi aitwaye GetString -
napenda kwenda nyuma katika hujambo-2.
Taarifa kwamba mimi nina wito GetString, ambayo ni ya kurudi anwani.
Na sisi kudai leo kwamba anuani ni kutoka lundo.
Na sasa mimi ni uchapishaji nje kamba katika anwani hiyo.
Lakini tumekuwa kamwe kuitwa kinyume cha GetString.
Tumekuwa kamwe alikuwa calll kazi kama ungetstring, ambapo mkono nyuma
kwamba kumbukumbu.
Lakini kusema ukweli sisi pengine ha.
Kwa sababu kama sisi kuendelea kuuliza kompyuta kwa ajili ya kumbukumbu, kwa njia ya mtu kama
GetString lakini kamwe kuwapa nyuma, hakika kwamba pia ni amefungwa na kusababisha
matatizo ambapo sisi kukimbia nje ya kumbukumbu.
>> Na kwa kweli, tunaweza kuangalia kwa ajili ya haya matatizo na zana mpya ambao matumizi
ni fumbo kidogo na aina.
Lakini napenda kwenda mbele na kuzisambaza it up juu ya screen katika muda tu.
Mimi nina kwenda mbele na kukimbia Valgrind na parameter ambao kwanza amri
line Hoja ni jina ya kwamba mpango hujambo-2.
Na kwa bahati mbaya ni pato ni atrociously
tata kwa sababu hakuna nzuri.
Hivyo tunaona kwamba fujo zote.
Daudi ni hali ya jina langu.
Hivyo kwamba ni mpango kweli mbio.
Na sasa sisi kupata hii pato.
>> Hivyo Valgrind ni sawa katika roho kwa GDB.
Siyo debugger per se.
Lakini ni kusahihisha kumbukumbu.
Ni mpango ambayo kukimbia yako mpango na kukuambia kama wewe aliuliza
kompyuta kwa ajili ya kumbukumbu na kamwe kukabidhiwa nyuma, na hivyo kwa maana ya kuwa una
uvujaji wa kumbukumbu.
Na kumbukumbu uvujaji huwa na kuwa mbaya.
Na wewe ni watumiaji wa kompyuta na pengine waliona hii, kama una
Mac au PC.
Je, umewahi kutumia kompyuta yako kwa wakati na si rebooted katika baadhi ya
siku, au ve tu got mengi ya kuendesha programu, na jambo damn
kupungua kwa mguu kusaga, au angalau ni super annoying kutumia, kwa sababu
kila kitu tu got super polepole.
>> Sasa kwamba unaweza kuwa na idadi yoyote ya sababu.
Ni inaweza kuwa kitanzi usio, mdudu katika kanuni ya mtu, au, zaidi tu, ni
inaweza kuwa na maana kwamba wewe ni kutumia zaidi kumbukumbu, au kujaribu, kuliko yako
kompyuta kweli ana.
Na labda kuna mdudu katika mpango wa baadhi ya kwamba kuendelea kuuliza kwa kumbukumbu.
Browsers kwa miaka walikuwa sifa mbaya kwa hii, kuomba kwa ajili ya kumbukumbu zaidi na zaidi
lakini kamwe kuwapatia nyuma.
Hakika, kama wewe tu na finite kiasi cha kumbukumbu, huwezi kuuliza
kubwa mara nyingi kwa baadhi ya kumbukumbu hiyo.
>> Na hivyo nini unaweza kuona hapa, ingawa tena pato Valgrind ni
usiokuwa tata kwa mtazamo saa kwanza, hii ni sehemu ya kuvutia.
Chungu -
katika matumizi ya exit.
Hivyo hapa ni kiasi gani kumbukumbu ilikuwa katika matumizi ya chungu katika
wakati mpango wangu exited -
inaonekana sita ka katika kuzuia moja.
Hivyo nina kwenda kwa wimbi mikono yangu saa nini kuzuia ni.
Fikiria ni tu chunk, zaidi kiufundi kwa ajili ya neno chunk.
Lakini sita ka -
kile ni ka sita ambayo walikuwa bado katika matumizi?
>> Hasa.
D-A-V-I-D backslash sifuri, tano barua jina plus Terminator null.
Hivyo mpango huu Valgrind niliona kwamba mimi aliuliza kwa ka sita, inaonekana, na
njia ya GetString, lakini kamwe akawapa nyuma.
Na kwa kweli, hii inaweza kuwa hivyo dhahiri kama mpango wangu si tatu
mistari, lakini ni 300 mistari.
Ili tuweze kweli kutoa amri nyingine line hoja ya Valgrind kwa
kufanya hivyo zaidi verbose.
Ni kidogo annoying kukumbuka.
Lakini kama mimi kufanya -
hebu angalia.
Leak -
Ilikuwa ni kuvuja -
hata sikumbuki ni nini mbali mkono.
>> - Leak-hundi sawa kamili.
Yep, asante.
- Leak-hundi sawa kamili.
Kuingia.
Mpango huo ni mbio.
Aina katika Daudi tena.
Sasa naona kidogo zaidi kwa undani.
Lakini chini ya muhtasari wa chungu, ambayo ni sawa na nne - ah,
hii ni aina ya nzuri.
Sasa Valgrind ni kweli kuangalia vigumu kidogo katika kanuni yangu.
Na ni kusema kwamba, inaonekana, malloc katika line -
sisi zoom nje.
Katika line -
hatuoni nini mstari ni.
Lakini malloc ni culprit kwanza.
Kuna blog katika malloc.
>> Wote haki?
OK, hakuna.
Haki?
Mimi kuitwa GetString.
GetString inaonekana wito malloc.
Hivyo kile mstari wa kanuni ni inaonekana katika kosa kwa kuwa na
zilizotengwa kumbukumbu hii?
Hebu kudhani kuwa mtu aliandika malloc imekuwa karibu muda wa kutosha kwamba ni
si kosa lao.
Hivyo pengine mgodi.
GetString katika cs50.c - hivyo kwamba ni faili mahali fulani kwenye kompyuta -
katika mstari 286 inaonekana kuwa mhalifu.
Sasa hebu kudhani kwamba cs50 imekuwa karibu kwa kiasi heshima ya muda, hivyo
sisi pia ni dosari.
Na hivyo pengine si katika GetString kwamba mdudu uongo, bali katika
hujambo-2.c line 18.
>> Basi hebu tuangalie nini kuwa mstari wa 18 ilikuwa.
Oh.
Namna fulani line hii si lazima Buggy, per se, lakini ni sababu
nyuma kwamba uvujaji wa kumbukumbu.
Hivyo super tu, gani shirikishi kuwa suluhisho hapa?
Kama sisi ni kuuliza kwa ajili ya kumbukumbu, walikuwa kamwe kutoa ni nyuma, na kwamba inaonekana kuwa
tatizo kwa sababu baada ya muda kompyuta yangu ili kukimbia nje ya kumbukumbu, ili kupunguza
chini, mambo mabaya kinaweza kutokea, vizuri, nini rahisi ufumbuzi angavu?
Kutoa tu nyuma.
>> Jinsi gani unaweza bure juu ya kwamba kumbukumbu?
Naam, nashiriki ni rahisi sana tu kusema jina bure.
Na tumekuwa kamwe kufanyika hii kabla.
Lakini unaweza kimsingi kufikiri ya bure kama kinyume cha malloc.
bure ni kinyume cha kugawa kumbukumbu.
Hivyo sasa napenda recompile hii.
Kufanya hujambo-2.
Basi mimi kukimbia tena. hujambo-2 Daudi.
Hivyo inaonekana kufanya kazi katika hasa kwa njia hiyo.
Lakini kama mimi kurejea Valgrind na kuendesha upya kwamba amri hiyo hiyo kwa wapya yangu
ulioandaliwa mpango, kuandika kwa jina langu kama kabla -
nzuri.
Lundo muhtasari -
katika matumizi ya exit -
sifuri ka katika vitalu sifuri.
Na hii ni super nzuri, kila vitalu lundo walikuwa huru.
Hakuna uvujaji ni iwezekanavyo.
>> Hivyo kuja juu, si kwa Tatizo Set 4, lakini pamoja na Tatizo Set 5, forensics
na kuendelea, hii pia itakuwa kipimo cha usahihi wa yako
mpango, kama au una au hawana uvujaji kumbukumbu.
Lakini nashiriki, si tu unaweza kufikiri kupitia kwao intuitively, ambayo
ni, arguably, rahisi kwa ajili ya programu ndogo lakini vigumu kwa ajili ya programu kubwa,
Valgrind, kwa ajili ya programu hizo kubwa, wanaweza kukusaidia kutambua
tatizo fulani.
>> Lakini kuna tatizo moja nyingine ambayo yanaweza kina.
Napenda kufungua faili hii hapa, ambayo ni, tena, mfano kiasi fulani rahisi.
Lakini hebu kuzingatia nini mpango huu gani.
Hii inaitwa memory.c.
Tutaweza post hii leo baadaye katika zip ya chanzo kanuni ya leo.
Na taarifa kwamba nina kazi kuitwa f kwamba inachukua hoja hakuna na
anarudi chochote.
Katika mstari wa 20, mimi nina inaonekana kutangaza pointer int na kuiita x.
Mimi ni kumshirikisha kurudi thamani ya malloc.
Na tu kuwa wazi, jinsi wengi ka am Mimi labda kupata nyuma kutoka malloc
katika hali hii?
>> Pengine 40.
Wapi kupata kwamba kutoka?
Naam, kama unakumbuka kwamba int mara nyingi ni 4 ka, angalau ni katika
appliance, 10 mara 4 ni wazi kuwa ni 40.
Hivyo malloc ni kurudi anwani ya chunk ya kumbukumbu na hifadhi ya kwamba
kushughulikia hatimaye katika x.
Hivyo kuwa wazi, nini basi kinachotokea?
Vizuri, basi mimi kubadili nyuma na picha yetu hapa.
Basi mimi si tu kuteka chini ya yangu kumbukumbu ya kompyuta, napenda kwenda mbele na
kuteka Mstatili nzima kwamba inawakilisha yote ya RAM yangu.
>> Tutaweza kusema kwamba stack ni juu ya chini.
Na kuna sehemu ya asilia katika data uninitialized.
Lakini nina kwenda tu abstract wale mambo mengine mbali kama dot, dot dot.
Mimi tu kwenda kwa kutaja hii kama chungu kwa juu.
Na kisha chini ya picha hii, kuwakilisha kuu, mimi naenda
kuwapa kumbukumbu vipande juu ya stack.
Kwa f, mimi naenda kuwapa kipande ya kumbukumbu juu ya stack.
Sasa, mimi got kushauriana yangu chanzo kanuni tena.
Je, ni vigezo mitaa kwa kuu?
Inavyoonekana kitu, hivyo kipande kwamba ni ufanisi tupu au hata kama kubwa
kama nimekuwa inayotolewa yake.
Lakini katika f, nina kutofautiana za mitaa, ambayo inaitwa x.
Hivyo nina kwenda mbele na kutoa f chunk ya kumbukumbu, wito ni x.
>> Na sasa malloc ya mara 10 4, Hivyo malloc 40, ambapo kwamba
kumbukumbu kutoka?
Tumekuwa si kuchora picha kama hii kabla.
Lakini hebu tuseme kwamba ni ufanisi kuja kutoka hapa, hivyo moja,
mbili, tatu, nne, tano.
Na sasa nahitaji 40 ya haya.
Hivyo mimi itabidi kufanya dot, dot, dot zinaonyesha kwamba kuna hata zaidi ya kumbukumbu
kurudi kutoka lundo.
Sasa nini anuani?
Hebu kuchagua holela wetu kushughulikia kama siku zote -
Ox123, ingawa pengine ni kwenda kuwa ni kitu tofauti kabisa.
Hiyo ni anuani ya Byte ya kwanza katika kumbukumbu kwamba mimi nina kuuliza malloc kwa.
>> Hivyo katika line short, mara 20 executes, kile ni halisi
kuhifadhiwa ndani ya x hapa?
Ox123.
Na ng'ombe ni uninteresting.
Ni tu ina maana hapa ni hexadesimoli idadi.
Lakini nini muhimu ni kwamba kile nimekuwa kuhifadhi katika x, ambayo ni kutofautiana mitaa.
Lakini sina data aina, tena, ni anwani ya int.
Naam, mimi nina kwenda kuhifadhi Ox123.
Lakini tena, kama kwamba ni kidogo sana ngumu usiokuwa, kama mimi kitabu
nyuma, tunaweza abstract hii mbali kabisa sababu na kusema tu kwamba ni x
pointer kwamba chunk ya kumbukumbu.
>> OK.
Sasa swali katika mkono ni yafuatayo -
mstari 21, ni zamu nje, ni Buggy.
Kwa nini?
>> Pole?
Haina -
kusema kwamba kwa mara nyingine.
Naam, haina bure.
Hivyo hiyo ni ya pili lakini.
Hivyo kuna mtu mwingine lakini hasa katika mstari wa 21.
>> Hasa.
Line hii rahisi ya kanuni ni tu buffer kufurika, overrun buffer.
buffer tu ina maana chunk ya kumbukumbu.
Lakini kwamba chunk ya kumbukumbu ni ya kawaida 10, 10 integers, ambayo ina maana kama sisi
index ndani yake kwa kutumia sukari kisintaksia nukuu ya safu, mraba
mabano, unaweza kupata x mabano mabano 0 x 1 x,
bracket dot, dot, dot.
x 9 mabano ni moja kubwa.
Hivyo kama mimi kufanya x bracket 10, ambapo Mimi nina kweli kwenda katika kumbukumbu?
>> Naam, kama nina 10 int -
hebu kweli kuteka kila ya haya hapa.
Ili kwamba ilikuwa mitano ya kwanza.
Hapa ni nyingine tano ints.
Hivyo x mabano 0 ni hapa. x mabano ni 1 hapa. x 9 mabano ni hapa. x bracket
10 ni hapa, ambayo ina maana Mimi ninawaambia, katika mstari wa 21, kompyuta na kuweka
simu wapi?
idadi 0 wapi?
Naam, ni 0, ndiyo.
Lakini tu ukweli kwamba wake 0 ni aina ya bahati mbaya.
Ni inaweza kuwa idadi 50, kwa ajili ya wote sisi huduma.
Lakini sisi ni kujaribu kuiweka katika mabano x 10, ambayo ni ambapo hii
alama ya swali ni inayotolewa, ambayo si jambo zuri.
Mpango huu ili vizuri sana ajali kama matokeo.
>> Sasa, hebu kwenda mbele na kuona kama hii ni kweli, nini kinatokea.
Kufanya kumbukumbu, tangu faili inaitwa memory.c.
Hebu kwenda mbele na kukimbia kumbukumbu mpango.
Hivyo tulipata bahati, kweli, inaonekana.
Tulipata bahati.
Lakini hebu angalia kama sisi sasa kukimbia Valgrind.
Kwa mtazamo wa kwanza, mpango wangu ili kuonekana kuwa sahihi kabisa.
Lakini basi mimi kukimbia Valgrind na - Leak-hundi sawa na kamili juu ya kumbukumbu.
>> Na sasa wakati mimi kukimbia hii -
kuvutia.
Batili kuandika ukubwa wa 4 katika mstari wa 21 memory.c.
Mstari wa 21 memory.c ni ambayo moja?
Oh, kuvutia.
Lakini kusubiri.
Ukubwa 4, nini ni kwamba mnayosema?
Mimi tu hakuwa moja kuandika, lakini ni ya kawaida 4.
Kwa nini ni 4?
Ni kwa sababu ni int, ambayo ni, tena, nne ka.
Hivyo Valgrind kupatikana mdudu kuwa mimi, glancing katika kanuni yangu, hakufanya hivyo.
Na labda TF yako gani au bila.
Lakini kile Valgrind kwa uhakika kupatikana kwamba tumekuwa alifanya kosa huko, hata
ingawa tulipata bahati, na kompyuta aliamua, eh, mimi si kwenda kwa ajali
kwa sababu tu wewe kuguswa moja Byte, moja yenye thamani ya int ya kumbukumbu kwamba hakuwa
kweli mwenyewe.
>> Naam, kile kingine ni Buggy hapa.
Anwani -
hii ni mambo ya kuangalia anuani katika hexadesimoli.
Hiyo ina maana tu mahali fulani katika lundo ni sifuri ka baada ya kuzuia wa kawaida 40
ni zilizotengwa.
Hebu zoom nje hapa na kuona kama hii ni kidogo zaidi kusaidia.
Kuvutia.
Ka 40 ni dhahiri waliopotea katika hasara rekodi ya 1 ya 1.
Tena, zaidi kuliko maneno ni muhimu hapa.
Lakini kulingana na mistari yalionyesha, ambapo lazima mimi pengine kuzingatia yangu
tahadhari kwa ajili ya mdudu mwingine?
Inaonekana kama mstari 20 ya memory.c.
>> Hivyo kama sisi kwenda nyuma ya mstari wa 20, kwamba ni moja kwamba kutambuliwa mapema.
Na si lazima Buggy.
Lakini sisi hii kuachwa madhara yake.
Hivyo ni jinsi gani mimi kusahihisha angalau moja ya makosa hayo?
Ningefanya nini baada ya mstari 21?
Mimi naweza kufanya bure ya x, hivyo ni kutoa nyuma kwamba kumbukumbu.
Na jinsi gani mimi kurekebisha hii mdudu?
Mimi lazima dhahiri kwenda hakuna mbali zaidi kuliko 0.
Hivyo basi mimi kujaribu na kuendesha upya hii.
Samahani, dhahiri kwenda hakuna mbali zaidi kuliko 9.
Kufanya kumbukumbu.
Hebu rerun Valgrind katika dirisha kubwa.
Na sasa kuangalia.
Nice.
Vitalu wote lundo walikuwa huru.
Hakuna uvujaji ni iwezekanavyo.
Na hadi hapo juu hapa, kuna hakuna kutaja yoyote zaidi ya haki batili.
>> Tu kupata tamaa, na hebu kuona kama mwingine maandamano
haina kwenda kama lengo -
Sikuweza kupata bahati wakati iliyopita.
Na ukweli kwamba hii ni 0 labda ni usiokuwa na kupotosha.
Hebu tu kufanya 50, holela kiasi fulani simu, kufanya kumbukumbu dot kufyeka kumbukumbu -
bado kupata bahati.
Kitu ni crashing.
Tuseme mimi tu kufanya kitu kweli wajinga, na mimi kufanya 100.
Hebu remake kumbukumbu, dot kufyeka kumbukumbu -
got bahati tena.
Vipi kuhusu 1000?
ints zaidi, takribani, ambapo mimi lazima?
Kufanya kumbukumbu -
damn it.
>> [Kicheko]
>> OK.
Hebu si fujo karibu tena.
Rerun kumbukumbu.
Kuna sisi kwenda.
Wote haki.
Hivyo inaonekana wewe index ints 100,000 zaidi ambapo unapaswa kuwa katika
kumbukumbu, mambo mabaya kutokea.
Hivyo hii ni wazi si ngumu, kwa haraka utawala.
Mimi ilikuwa aina ya kutumia kesi na makosa ya kufika huko.
Lakini hii ni kwa sababu, kwa muda mrefu hadithi fupi, kumbukumbu ya kompyuta yako pia ni kugawanywa
katika mambo haya kuitwa makundi.
Na wakati mwingine, kompyuta kweli amewapa ninyi zaidi kidogo ya kumbukumbu
kuliko wewe kuuliza.
Lakini kwa ajili ya ufanisi, ni rahisi tu kupata kumbukumbu zaidi lakini tu kuwaambia
kwamba wewe ni kupata sehemu yake.
>> Na kama wewe kupata bahati wakati mwingine, kwa hiyo, unaweza kuwa na uwezo wa kugusa
kumbukumbu kwamba siyo wewe.
Wewe huna kuhakikisha kwamba thamani gani kuweka pale kukaa pale, kwa sababu
kompyuta bado anadhani si yako, lakini siyo lazima kwenda
kuikumba sehemu nyingine ya kumbukumbu katika kompyuta na kushawishi kosa kama
hii moja hapa.
Wote haki.
Maswali yoyote basi juu ya kumbukumbu?
>> Wote haki.
Hebu tuangalie hapa, basi, katika kitu tumekuwa kuchukua kwa
nafasi kwa muda kabisa, ambayo ni katika faili hii inaitwa cs50.h.
Hivyo hii ni faili.
Hizi ni baadhi tu rundo zima ya maoni juu juu.
Na unaweza kuwa inaonekana saa hii kama wewe poked karibu juu ya appliance.
Lakini zinageuka kuwa wakati wote, wakati sisi kutumika kwa kutumia kamba kama
kisawe, njia ambayo sisi alitangaza kisawe kwamba alikuwa na hili
Keyword typedef, kwa ajili ya ufafanuzi aina.
Na sisi ni kimsingi akisema, kufanya kamba kisawe kwa nyota Char.
Kwamba njia ambayo stack kuundwa magurudumu haya mafunzo inajulikana kama
kamba.
>> Sasa hapa ni mfano tu kwa getchar.
Sisi kuwa na kuonekana hivyo kabla, lakini hiyo ni kweli nini anafanya. getchar
inachukua hakuna hoja, anarudi Char.
getdouble inachukua hoja hakuna, anarudi mbili.
getfloat inachukua hakuna hoja anarudi, kuelea, na kadhalika.
GetInt ni katika hapa. getlonglong ni katika hapa.
Na GetString ni katika hapa.
Na hiyo ni yake.
Line hii ya zambarau ni mwingine Preprocessor maelekezo kwa sababu ya
hashtag mwanzoni yake.
>> Wote haki.
Hivyo sasa napenda kwenda katika cs50.c.
Na sisi si kuzungumza kwa muda mrefu sana juu ya hili.
Lakini kukupa mtazamo wa nini kinachoendelea yote hii
muda, niende -
hebu kufanya getchar.
Hivyo getchar ni zaidi ya maoni.
Lakini inaonekana kama hii.
Hivyo hii ni kazi halisi getchar ambazo tumekuwa
kuchukua kwa nafasi ipo.
Na hata kama sisi si kutumia hii moja kwamba mara nyingi, kama milele, ni angalau
rahisi kiasi.
Hivyo ni thamani ya kuchukua haraka kuangalia hapa.
>> Hivyo getchar ina kitanzi usio, makusudi hivyo inaonekana.
Ni kisha wito - na hii ni aina ya nzuri utumiaji wa kanuni ya sisi wenyewe aliandika.
Ni wito GetString.
Kwa sababu ni nini maana ya kupata Char?
Naam, unaweza pia kujaribu kupata nzima mstari wa maandishi kutoka kwa mtumiaji na
basi tu kuangalia moja ya wale wahusika.
Katika mstari wa 60, hapa kidogo kidogo ya hundi sanity.
Kama GetString akarudi null, basi si kuendelea.
Kitu potoka.
>> Sasa hii ni kiasi fulani annoying lakini kawaida katika C. Char max pengine
inawakilisha nini tu msingi juu ya jina lake?
Ni mara kwa mara.
Ni kama thamani numeric ya kubwa Char unaweza kuwakilisha na
bite moja, ambayo pengine ni ya simu 255, ambayo ni idadi kubwa ya wewe
kuwakilisha bits nane, kuanzia sifuri.
Hivyo nimekuwa kutumia hii, katika kazi hii, wakati kuandika kanuni hii, kwa sababu tu
kama kitu fulani kitaenda vibaya katika getchar lakini madhumuni yake katika maisha ni kurudi
Char, unahitaji kwa namna fulani kuwa na uwezo kuashiria kwa mtumiaji huyo
kitu potoka.
Hatuwezi kurudi null.
Ni zinageuka kuwa ni pointer null.
Na tena, getchar ina kurudi Char.
>> Hivyo mkataba, kama kitu fulani kitaenda vibaya, ni wewe, programu, au katika
kesi hiyo, mimi na maktaba, nilikuwa kuamua tu kiholela, kama
kitu fulani kitaenda vibaya, mimi naenda kurudi idadi 255, ambayo ni kweli
ina maana hatuwezi, mtumiaji anaweza si aina tabia ya kuwakilishwa na
simu 255 kwa sababu tulikuwa na kuiba ni kama kinachojulikana sentinel thamani kwa
kuwakilisha tatizo.
Sasa zinageuka kuwa tabia 255 si kitu unaweza aina ya
keyboard yako, hivyo ni hakuna mpango mkubwa.
mtumiaji hana taarifa kwamba Nimekuwa kuibiwa tabia hii.
Lakini kama umewahi kuona katika kurasa mtu juu ya mfumo wa kompyuta baadhi ya kumbukumbu ya
kila kofia kama mara kwa mara hii kwamba anasema, katika kesi ya hitilafu hii nguvu ya mara kwa mara
kurudishwa, hiyo ni baadhi ya binadamu wote walifanya miaka iliyopita ilikuwa kiholela aliamua
kurudi thamani hii maalum na simu yake ya mara kwa mara katika kesi
kitu fulani kitaenda vibaya.
>> Sasa uchawi hutokea chini hapa.
Kwanza, mimi nina kutangaza katika mstari 67 mbili wahusika, C1 na C2.
Na kisha katika mstari 68, kuna kweli mstari wa kanuni kwamba ni kukumbusha ya
rafiki yetu printf, kutokana na kwamba ni gani kuwa asilimia Cs katika quotes.
Lakini taarifa ya nini kinatokea hapa. sscanf maana kamba Scan -
maana Scan mpangilio kamba, ergo sscanf.
Hiyo ina maana gani?
Ina maana wewe kupita kwa sscanf kamba.
Na mstari ni chochote aina user in
Kupita kwa sscanf string format kama hii kwamba anasema scanf ni nini
wewe matumaini ya mtumiaji typed in
Wewe kisha kupita-katika anwani ya mbili chunks ya kumbukumbu, katika kesi hii,
kwa sababu mimi na placeholders mbili.
Hivyo nina kwenda kuwapa anuani ya C1 na anuani ya C2.
>> Na kukumbuka kwamba kutoa kazi anuani ya variable fulani, nini
Kidokezo?
Nini unaweza kufanya kazi kwamba kama matokeo ya kutoa ni anwani ya
kutofautiana, kinyume na kutofautiana yenyewe?
Ni unaweza mabadiliko hayo, haki?
Kama alikuwa mtu ramani ya kimwili anwani, wanaweza kwenda huko na kufanya
wanataka chochote katika anwani hiyo.
Same wazo hapa.
Kama sisi kupita kwa sscanf, anuani ya mbili chunks ya kumbukumbu, hata hayo vidogo
kidogo chunks ya kumbukumbu, C1 na C2, lakini sisi tunasema ni anuani yao,
sscanf unaweza mabadiliko hayo.
>> Hivyo kusudi sscanf katika maisha, kama sisi kusoma ukurasa mtu, ni kusoma kile
mtumiaji typed katika, matumaini kwa mtumiaji kuwa typed katika tabia na labda
mwingine tabia, na chochote mtumiaji typed, tabia ya kwanza inakwenda
hapa, tabia ya pili huenda hapa.
Sasa, kama kando, hii, na wewe ungekuwa tu kujua hii kutoka nyaraka,
ukweli kwamba mimi kuweka nafasi tupu kuna tu ina maana kwamba mimi sijali kama
mtumiaji hits bar nafasi chache mara kabla ya yeye au yeye inachukua
tabia, nina kwenda kwa kupuuza nafasi yoyote nyeupe.
Hivyo kwamba, najua kutoka nyaraka.
>> ukweli kwamba kuna pili% c ikifuatiwa na nafasi nyeupe ni kweli
makusudi.
Nataka kuwa na uwezo wa kuchunguza kama mtumiaji Star up au hakuwa na kushirikiana.
Hivyo nina matumaini kwamba mtumiaji tu typed katika tabia moja, kwa hiyo nina matumaini
kwamba sscanf ni tu kwenda na kurudi thamani 1 sababu, tena, ikiwa mimi kusoma
nyaraka, kusudi sscanf katika maisha ni kurudi kwa idadi ya
vigezo kwamba walikuwa wamejaa na pembejeo mtumiaji.
>> Mimi kupita katika vigezo mbili anwani, C1 na C2.
Nina matumaini, ingawa, kwamba moja tu ya wao anapata kuuawa kwa sababu kama sscanf
anarudi 2, nini labda Kidokezo mantiki?
Kwamba mtumiaji hakuwa tu nipe moja tabia kama mimi aliiambia yake.
Wao pengine typed katika angalau mbili wahusika.
Hivyo kama mimi badala yake hakuwa na pili % C, mimi tu alikuwa moja, ambayo
kusema ukweli itakuwa zaidi angavu mbinu, nadhani mtazamo wa kwanza,
wewe si kwenda kuwa na uwezo wa kuchunguza kama mtumiaji imekuwa kutoa zaidi
pembejeo kuliko wewe kweli alitaka.
Hivyo hii ni fomu thabiti ya kuangalia makosa.
>> Lakini taarifa nini mimi hapa.
Mara baada ya mimi nina uhakika kwamba mtumiaji alinipa moja tabia, mimi huru line, kufanya
kinyume cha GetString, ambayo kwa upande anatumia malloc, na kisha mimi kurudi
C1, tabia ya kuwa mimi matumaini mtumiaji zinazotolewa na tu zinazotolewa.
Hivyo haraka glimpsed tu, lakini maswali yoyote juu ya getchar?
Tutaweza kurudi kwa baadhi ya watu wengine.
>> Naam, napenda kwenda mbele na kufanya hii - tuseme sasa, tu kuwahamasisha yetu
majadiliano katika wiki ya pamoja muda, hii ni faili inayoitwa structs.h.
Na tena, hii ni ladha ya kitu ambacho uongo mbele.
Lakini kumbuka kwamba mengi hii ni ya maoni.
Hivyo basi mimi kuonyesha tu kuvutia sehemu kwa sasa.
typedef -
kuna kuwa Keyword sawa tena.
typedef sisi kutumia kamba ya kutangaza kama aina maalum data.
Unaweza kutumia typedef kujenga bidhaa mpya data aina ambayo haikuwepo wakati
C ilizuliwa.
Kwa mfano, int kuja na C. Char kuja na C. mara mbili kuja na C. Lakini
hakuna dhana ya mwanafunzi.
Na bado itakuwa pretty muhimu kuwa uwezo wa kuandika mpango kwamba maduka
katika kutofautiana, ID ya mwanafunzi ya simu, jina lao, na nyumba zao.
Kwa maneno mengine, tatu vipande ya data, kama int na
kamba na kamba nyingine.
>> Na typedef, nini pretty nguvu kuhusu hili na sturct Keyword kwa
muundo, wewe, programu ya mwaka 2013, kweli anaweza kufafanua yako mwenyewe
data aina ambayo haikuwepo miaka iliyopita lakini kwamba kemikali madhumuni yako.
Na hivyo hapa, katika mistari 13 kupitia 19, sisi ni kutangaza takwimu mpya aina, kama
int, lakini wito ni mwanafunzi.
Na ndani ya kutofautiana hii ni kwenda kuwa na mambo matatu - int, kamba,
na kamba.
Hivyo unaweza kufikiria nini kweli kilichotokea hapa, ingawa hii ni
kidogo ya kurahisisha kwa leo, mwanafunzi kimsingi ni kwenda
kuangalia kama hii.
Inaenda kuwa chunk ya kumbukumbu na kitambulisho, jina
shamba, na shamba nyumba.
Na tutaweza kuwa na uwezo wa kutumia chunks wale wa kumbukumbu na kupata yao kama ifuatavyo.
>> Kama mimi kwenda katika struct0.c, hapa ni muda mrefu kiasi, lakini kufuatia
muundo, ya kificho kwamba anatumia hila hii mpya.
Hivyo kwanza, basi mimi kuteka mawazo yako na sehemu ya kuvutia juu juu.
Mkali amefafanua wanafunzi 3, anatangaza mara kwa mara iitwayo wanafunzi na chukueni
yake kiholela namba 3, tu hivyo nina wanafunzi watatu kwa kutumia
mpango huu kwa sasa.
Hiyo inakuja Kuu.
Na notisi, jinsi gani mimi kutangaza safu ya wanafunzi?
Naam, mimi tu kutumia syntax sawa.
mwanafunzi wa neno ni wazi kuwa ni mpya.
Lakini mwanafunzi, darasa, bracket wanafunzi.
>> Hivyo kwa bahati mbaya kuna mengi ya utumiaji wa suala hapa.
Hii ni idadi tu.
Hivyo hii ni kama kusema tatu.
Hatari ni yale tu nataka kuwaita kutofautiana.
Mimi naweza kuiita wanafunzi.
Lakini darasa, hii si darasa katika kitu oriented Java aina ya njia.
Ni tu darasa la wanafunzi.
Na aina ya data ya kipengele kila katika safu kwamba ni mwanafunzi.
Hivyo hii ni tofauti kidogo na kutoka kwa kusema kitu
kama hii, ni tu -
Mimi kusema nipe wanafunzi watatu na kuwaita kwamba darasa safu.
>> Wote haki.
Sasa hapa ni kitanzi nne.
Hii guy ya ukoo - iterate kutoka sifuri hadi kwenye tatu.
Na hapa ni kipande mpya ya syntax.
mpango wa kwenda haraka yangu, binadamu, kutoa ni mwanafunzi
ID, ambayo ni int.
Na hapa ni syntax na ambayo unaweza kuhifadhi kitu katika uwanja ID katika
eneo darasani mabano I. Hivyo syntax hii si mpya.
Hii ina maana tu nipe nane mwanafunzi katika darasa.
Lakini ishara hii ni mpya.
Hadi sasa, tumekuwa haiwezi kutumika dot, angalau katika kanuni kama hii.
Hii ina maana kwenda struct inajulikana kama mwanafunzi na kuweka kitu huko.
Vile vile, katika mstari huu ujao, 31, kwenda mbele na kuweka chochote mtumiaji aina
kwa jina hapa na nini kufanya kwa ajili ya nyumba, kitu kimoja, kwenda mbele na
kuiweka katika. nyumba.
>> Basi ni nini mpango huu hatimaye kufanya?
Unaweza kuona teaser kidogo huko.
Hebu kwenda mbele na kufanya kufanya structs 0 dot kufyeka struct 0, ID ya mwanafunzi 1,
kusema Daudi Mather, mwanafunzi ID 2.
Rob Kirkland, mwanafunzi ID 3.
Lauren Leverit -
na kitu pekee mpango huu alivyofanya, ambayo ni haki kabisa holela, ni
Nilitaka kufanya kitu na data hii, sasa kwamba nimepata alitufundisha jinsi ya
kutumia structs, ni mimi tu alikuwa hii kitanzi ziada hapa.
Mimi iterate juu ya safu ya wanafunzi.
Nilikuwa yetu, labda sasa ukoo rafiki, kamba kulinganisha, stircomp kwa
kuangalia ni nyumba 8 ya mwanafunzi sawa na Mather?
Na kama hivyo, tu magazeti kitu kiholela kama, ndiyo, ni.
Lakini tena, tu kunipa fursa kutumia na kutumia tena na
kutumia tena hii mpya dot nukuu.
>> Hivyo anayejali, haki?
Kuja na mpango wa mwanafunzi ni kiasi fulani holela, lakini zinageuka
kwamba tunaweza kufanya mambo muhimu kwa hii, kwa mfano kama ifuatavyo.
Hii ni struct ngumu zaidi katika C. Ni got kadhaa au mashamba zaidi,
kiasi fulani isiyoeleweka kirahisi jina.
Lakini kama wameweza milele habari wa graphics file format kuitwa bitmap, BMP, ni
zinageuka kuwa bitmap file format pretty kiasi kwamba inaonekana kama hii.
Ni kijinga kidogo smiley uso.
Ni picha ndogo kwamba nimepata zoomed katika juu ya pretty kubwa ili niweze kuona kila
ya dots mtu binafsi au saizi.
Sasa, ni zamu nje tunaweza kuwakilisha nyeusi dot na, kusema, idadi 0.
Na dot nyeupe na namba 1.
>> Hivyo kwa maneno mengine, kama unataka kuteka Smiley uso na kuokoa kwamba picha katika
kompyuta, Inatosha kuhifadhi zeros na ndio kwamba kuangalia kama hii, ambapo,
tena, ndio ni nyeupe na zeros ni nyeusi.
Na kwa pamoja, ikiwa wewe kwa ufanisi na kujifunga ya ndio na zeros, una
gridi ya saizi, na kama wewe kuweka yao nje, una cute
kidogo smiley uso.
Sasa, bitmap file format, BMP, ni ufanisi kwamba chini ya Hood,
lakini kwa zaidi piseli sot kwamba wewe kweli anaweza kuwakilisha rangi.
>> Lakini wakati una kisasa zaidi file format kama BMP na JPEG na GIF
na ambayo unaweza kuwa na utambuzi, wale mafaili ya rekodi kawaida si tu
kuwa zeros na ndio kwa saizi, lakini wana baadhi metadata pia -
meta kwa maana ya kwamba ni kweli data lakini ni muhimu kuwa na.
Hivyo hawa mashamba hapa ni ikimaanisha, na tutaweza kuona hili kwa undani zaidi katika P-kuweka
5, kwamba kabla ya zeros na wale ambao kuwakilisha piseli kwa mfano,
kuna rundo la metadata kama ukubwa wa picha na
upana wa picha.
Na taarifa mimi nina kukwanyua mbali baadhi ya holela mambo hapa -
upana na urefu.
Kidogo kuhesabu na baadhi ya mambo mengine.
Hivyo kuna baadhi ya metadata katika faili.
>> Lakini kwa kuelewa jinsi files wamelazwa nje kwa njia hii, unaweza kweli
kisha kuendesha picha, kupona picha kutoka disk, resize images.
Lakini unaweza si lazima kuongeza yao.
Mimi zinahitajika picha.
Hivyo mimi akarudi RJ hapa, ambaye wewe aliona juu ya screen kabisa baadhi ya wakati uliopita.
Na kama mimi kufungua Akitoa hapa, hii ni kile kinachotokea kama wewe kujaribu kuvuta na
kuimarisha RJ.
Yeye si kupata yoyote bora kweli.
Akitoa sasa ni aina ya blurring ni kidogo kidogo, tu Gloss juu
ukweli kwamba RJ haina kupata hasa kuimarishwa wakati zoom in
Na kama kufanya hivyo kwa njia hii, kuona viwanja?
Yeah, unaweza dhahiri kuona mraba projector.
>> Hiyo ni nini kupata wakati kuongeza.
Lakini katika kuelewa jinsi RJ yetu au Uso smiley ni kutekelezwa hebu
kweli kuandika kificho kwamba kuyaharibu mambo hayo.
Na nilifikiri ningependa kuishia kwenye kumbuka hii, pamoja na 55 sekunde ya kuongeza kwamba,
Mimi kuthubutu, kusema badala ya kupotosha.
>> [Video avspelning]
>> -Yeye uongo.
Juu ya nini, mimi sijui.
>> -Basi je, sisi kujua?
>> -Kwamba saa 9:15 Ray Santoya mara kwa ATM.
>> -Basi swali ni nini ilikuwa yeye kufanya saa 9:16?
>> -Risasi millimeter tisa katika kitu.
Labda aliona sniper.
>> -Au alikuwa anafanya kazi pamoja naye.
>> -Subiri.
Kwenda nyuma moja.
>> -Unaona nini?
>> -Lete uso wake juu, full screen.
>> -Wake glasi.
>> -Kuna kutafakari.
>> -Hiyo baseball Neuvitas timu.
Hiyo ni alama zao.
>> -Na yeye kuzungumza na mtu yeyote ni amevaa kwamba koti.
>> [MWISHO video avspelning]
>> DAVID J. Malan: Hii mapenzi kuwa Tatizo Set 5.
Tutaona wewe wiki ijayo.
>> MALE SPIKA: Katika CS50 ijayo.
>> [Crickets chirping]
>> [Halisi kucheza]