[Powered by Google Translate] DAVID J. Malan: zote haki.
Hii ni CS50, na hii ni mwisho wa wiki mbili.
Kama wewe wanatarajia kuwa na njaa kote wakati huu kesho, tunajua kwamba sisi ni kwenda
kuitisha kama kesho kikundi kidogo, Alhamisi, 13:15.
Kuna URL hii hapa kama wewe Ningependa RSVP.
Nafasi ni mdogo, hivyo tafadhali kusamehe ikiwa fomu ya kujaa kwa muda
kujaza hii nje.
Mwingine URL ingawa ambayo inaweza kuwa ya riba ni hii.
>> Hivyo katika tu kuhusu muda wa mwezi mmoja, bila shaka ni kwenda kuwa inapatikana
wote kwa mapana zaidi kupitia edX, via ambayo folks kwenye mtandao itakuwa
uwezo wa kufuata pamoja, kushiriki katika kozi kabisa kikamilifu, kwa kweli.
Wao utakuwa kutumia Appliance CS50 na CS50 Diskutera na zaidi ya
programu mbalimbali zana kwamba sisi tayari wamekuwa wakitumia huu muhula.
Na moja ya mipango tunatarajia kuchukua kama majaribio mwaka huu
ni kuona tu kiasi gani maudhui tunaweza kutafsiri katika nyingine amesema na
imeandikwa lugha.
Hivyo kama unaweza kuwa na maslahi katika kushiriki katika mradi huu, ambapo
sisi kutoa nakala ya Kiingereza na subtitles kwa kozi ya
mihadhara na kaptula na semina na sehemu na kama -
kama wewe kusema fluently au kuandika fluently baadhi ya lugha nyingine, tunataka
upendo kushiriki kwa mradi huu, ambapo wewe kuchukua moja au zaidi ya
videos, kutafsiri yao katika lugha ya wewe kujua vizuri kabisa.
Ili kukupa hisia ya interface, kuna hii ya mtandao msingi user interface
kwamba tutaweza kutumia ambayo kujenga kimsingi UI kama hii.
Hii ilikuwa yangu kufundisha baadhi Halloween iliyopita.
Na juu ya upande wa kulia kuna katika nyeusi karibu na mihuri wakati hizi,
utaona mambo mbalimbali waliotoka kinywa yangu kwamba siku.
Na kisha chini yake, wewe utakuwa na uwezo wa kutafsiri katika lugha nyingine.
Hasa nini ramani ni kati ya, katika kesi hii, Kiingereza
na, kusema, Kihispania.
Hivyo ni kweli sana user-kirafiki chombo.
Unaweza Rewind na kufunga mbele sana kwa urahisi na keyboard shortcuts.
Hivyo kama ungependa kushiriki katika jaribio hili na kuwa na maneno yako
kuonekana na kusoma na maelfu uwezekano wa folks huko nje, tafadhali kufanya kujisikia
bure kushiriki.
>> Sasa neno moja kuhusu kitten kutoka Jumatatu, tusije nimemtuma overly
inatisha ujumbe.
Je, kutambua kwamba kama masaa ya ofisi na kupendekeza kama sehemu kupendekeza,
kubuni bila shaka ni mengi sana kwa kuwa wanafunzi kushirikiana na
kuzungumza na kazi kupitia seti tatizo na matatizo kwa pamoja.
Na kweli mstari tu inakuja chini, tena, kazi wewe hatimaye
wanapaswa kuwasilisha lazima yako mwenyewe.
Na hivyo ni, uaminifu kabisa - katika masaa ya ofisi, ni kabisa kawaida -
ni kabisa kutarajiwa, hata - kuwa chatting na baadhi
rafiki karibu na wewe.
Kama yeye au yeye ni ikikabiliwa na mada fulani, na wewe ni kama, oh, vizuri basi
nikupe glimpse ya baadhi mstari wa kanuni kwamba mimi aliandika.
Hiyo ni sawa.
Kinachotokea.
Na kwamba ni mazuri sana, nadhani, na mchakato wa kujifunza.
Ambapo line, tena, anapata walivuka ni wakati kichwa ni aina ya tilted juu ya
hapa kwa sekunde nyingi mno au dakika kwa kweli kwamba kuwa na tu
imekuwa nafasi kumfungulia kwa rafiki yako.
Na hakika, wakati mambo kupata kubadilishana kupitia barua pepe na na Dropbox
kama, kuna pia ni mstari.
Hivyo kwa njia zote, kujisikia vizuri na kujisikia moyo wa kuzungumza na marafiki
na wanafunzi kuhusu psets na zaidi.
Na tu kutambua kwamba yale hatimaye kuwasilisha lazima kweli kuwa
bidhaa ya uumbaji wako na si mtu mwingine.
>> Hivyo katika ven ya viumbe cuddly, waweza
kujua ya guy hii hapa.
Hivyo hii ni movie horrifically cheesy kutoka miaka iliyopita.
Mtu yeyote hapa kuonekana Spaceballs?
Wote haki.
Hivyo idadi nzuri hapa.
Hivyo hii ni njia yetu ya ajabu taaluma ya kuanzisha leo hatimaye
dhana ya cryptography.
Na hivyo moja ya matatizo maalum kwa ajili ya uwanja pset 2, ambayo atakuja
nje usiku wa marehemu kesho, ni kupiga mbizi katika ulimwengu wa cryptography, ambayo
ni sanaa ya encrypting au scrambling habari.
Na hii inahusiana na hatimaye dunia ya usalama.
>> Sasa usalama kwa ajili ya wengi yetu huja katika namna ya taratibu uungwana mundane.
Sisi sote tuna usernames na password.
Na sisi wote kuwa na majina ya watumiaji mbaya sana na nywila, uwezekano mkubwa.
Kama nywila yako ni sawa kwenye tovuti nyingi, kwamba pengine si
wazo bora, kama tutaweza kujadili kuelekea mwisho wa muhula.
Kama nywila yako imeandikwa katika kumbuka nata - hakuna utani - juu yako
kufuatilia, kwamba pia ni si lazima kubuni bora lakini kawaida kabisa
uzushi.
Na kama wewe si kutumia cryptography encrypt nywila yako, wao ni
hasa katika mazingira magumu.
Hivyo kama unafikiri wewe kuwa super wajanja kwa kuwa na Neno siri
hati mahali fulani kwenye gari yako ngumu ambayo ina yote ya nywila yako lakini
ni katika folder kwamba hakuna mtu kwenda kuangalia katika, kwamba pia ni si sana
salama utaratibu.
Na hivyo kile pset 2 utawaeleza ni sanaa hii ya cryptography na
scrambling habari ili mambo kama Nywila
wote salama zaidi.
Hivyo kama kuwahamasisha na tatizo hili sana halisi ya dunia na sana zisizo za ulimwengu halisi
mazingira, basi mimi kuanzisha wewe moja ya sehemu yetu favorite hapa kutoka hii
movie, Spaceballs.
>> [VIDEO avspelning]
-Helmeti, wewe fiend, nini kinaendelea?
Unafanya nini binti yangu?
-Kibali yangu na kuanzisha kipaji vijana plastiki upasuaji, Dk Philip
Schlotkin, kubwa pua kazi mtu mzima katika
ulimwengu na Beverly Hills.
-Wako ukuu.
-Pua kazi?
Mimi sielewi.
Yeye tayari alikuwa na kazi ya pua.
Ilikuwa tamu 16 sasa.
-Hapana, si nini unafikiri.
Ni mengi, mengi zaidi.
Kama huna nipe mchanganyiko kwa ngao hewa, Dk Schlotkin mapenzi
kutoa binti yako nyuma pua yake ya zamani.
-Hakuna!
Ulipata wapi hiyo?
-All haki.
Mimi nitakuambia.
-Hapana, daddy, hakuna.
Inakubidi si.
-You're haki, wapenzi wangu.
Mimi itabidi miss ya pua yako mpya.
Lakini mimi si kuwaambia mchanganyiko bila kujali.
-Sana vizuri.
Dr Schlotkin, kufanya mbaya wako.
-My radhi.
-Hakuna!
Ngoja, ngoja.
Mimi nitakuambia.
-I alijua ingekuwa kazi.
Haki zote, unipe.
-Macho ni moja.
-Mmoja.
-Mbili.
-Tatu
-Tatu.
-Nne.
-Tano
-Tano.
-Basi macho ni moja, mbili, tatu, nne, tano.
Hiyo ni mchanganyiko stupidest mimi umewahi kusikia katika maisha yangu.
Hiyo ni aina ya kitu idiot ingekuwa juu ya mizigo yake.
-Asante, ukuu wako.
-Ulifanya nini?
-I akageuka mbali ukuta.
-Hapana, wewe wala.
Wewe akageuka mbali movie nzima.
-Mimi lazima taabu kifungo vibaya.
-Naam, kuiweka nyuma.
Weka movie nyuma.
-Ndiyo, bwana.
Ndiyo, bwana.
-Twende, Erna.
Njoo, Gretchen.
Bila shaka unajua mimi itabidi bado una bili wewe kwa hili.
-Naam, hakuwa kazi?
Wapi gate?
-Ni kazi, Mheshimiwa.
Tuna mchanganyiko.
-Mkuu.
Sasa tunaweza kuchukua kila pumzi ya mwisho ya hewa safi kutoka sayari Druidia.
Nini mchanganyiko?
-Moja, mbili, tatu, nne, tano.
-Moja, mbili, tatu, nne, tano?
-Ndiyo.
-Kwamba ajabu.
Mimi nimepata mchanganyiko huo kwenye mizigo yangu.
Tayarisha Spaceball 1 kwa kuondoka haraka.
-Ndiyo, bwana.
-Na juu ya kubadilisha mchanganyiko mizigo yangu.
-Asa!
[Mwisho VIDEO avspelning]
>> DAVID J. Malan: movie kushangaza unapaswa sasa wote kuona.
Hivyo muktadha hapa ni kwamba pamoja na data zenye shida huja fursa
encrypt yake na kwa kinyang'anyiro yake.
Na hivyo hii, kwa mfano, ni mfano wa ujumbe ambao umefungiwa.
Hii kwa kweli anasema kitu katika Kiingereza.
Lakini ni wazi kabisa kabisa ni dhahiri.
Na tutaweza kuja duara kamili leo tease mbali nini siri hii
ujumbe hapa ni.
Lakini katika ulimwengu halisi ya kompyuta, mambo si hata kuangalia kama wao ili
kuwa Kiingereza misemo.
Kwa mfano, hii ni nini unaweza kupata kwenye Linux au Mac au kiwango
Unix kompyuta katika faili kwamba mara kwa mara juu ya muda kuitwa faili password.
Siku hizi, ni kuwa wakiongozwa na maeneo mengine.
Lakini kama wewe kuangalia katika mahali sahihi juu ya mfumo, utaona si tu yako
Jina la mtumiaji au ule wa watu wengine juu ya mfumo, lakini utaona
encrypted toleo la password yao.
Hakika, kuna neno crypt unaonyesha kwamba mambo yafuatayo ni uliosimbwa.
Na mfululizo huu wa barua inaonekana random na wahusika na idadi na
kadhalika inaweza decrypted tu kwa ujumla kujua baadhi ya siri -
neno siri, idadi ya siri.
Na hivyo kweli kweli, sanaa ya cryptography majipu hatimaye chini kwa uaminifu wa baadhi
aina na kujua kitu ambacho mtu mwingine hana.
Tutaweza kuchunguza hili kwa undani zaidi kidogo leo na katika pset kuja.
>> Na sasa neno juu ya kupita haitaisha /.
Hivyo hasa, kama baadhi yenu dived katika pset 1, appliance, na
dunia mpya sana kwa ajili yako mwenyewe, alitambua kwamba frustrations na
fujo na tu kiufundi matatizo ni kuwa ilivyotarajiwa.
Hasa na pset kwanza, ambapo kuna kiasi tu mpya, kupata tu
ukoo na ls na cd na amri hizi zote arcane katika mazingira mapya.
Na kwamba ni tofauti na nyenzo halisi na programu yenyewe.
Hivyo kutambua, pia kwamba kuna shaka ni masaa ya ofisi ambazo zipo kama
muundo msaada.
Sehemu hii kuanza Jumapili ijayo.
Lakini muhimu zaidi, kama wewe ni hisia tu kuwa hii si
dunia kwa ajili yenu, kutambua kwamba ni kweli haina kuchukua muda tu.
Na lau kuwa si kwa ajili ya nafasi hii miaka iliyopita kwa ajili yangu ya kuchukua darasa
kupita / kushindwa, uaminifu, mimi kamwe ingekuwa hata kuweka mguu katika darasa.
Na unaweza kubadilisha hili hadi, kusema, Jumatatu ya tano ya shaka.
Hivyo kama wewe ni makali ya sasa, kutambua kwamba badala ya kichwa katika baadhi nyingine
maji kabisa, je, hakika kufikiria tu kubadilisha kupita / kushindwa.
Tena, kuna si kweli utamaduni huu hapa katika Harvard ya kuchukua mambo
kupita / kushindwa tangu kila mtu kweli anataka kufikia au overachieve.
Lakini kusema ukweli, hii ni njia ya ajabu ya kujaribu kitu nje kwamba ili si
kuwa ukoo na wewe.
Na kuishia kufanya katika kesi nyingi kabisa faini, labda
mengi ya mshangao wako.
Na katika suala thabiti zaidi, nini nadhani kupita / kushindwa ujumla gani,
hasa kama unaweza kuwa na uzoefu na pset 0, ikiwa umeweka
katika masaa 10, masaa 15, masaa 25 katika baadhi pset - na wewe tu banging
kichwa yako dhidi ya ukuta,
na ni kupata super marehemu wakati wa usiku,
lakini umechukua pset kama 90% ya njia,
unajua wewe tu hawezi kufikiri jambo moja -
kupita / kushindwa kweli inachukua makali mbali ya darasa kama hii, ambapo unaweza aina
ya furaha kusema okay, najua si kamilifu.
Lakini mimi kazi punda wangu mbali juu ya hili.
Mimi nina pretty furaha na ambapo ni kuishia.
Na kwamba kukidhi matarajio kwa kupita / kushindwa.
Hivyo kufanya kuendelea kuwa katika akili.
>> Wote haki.
Hivyo wale ambao Jihadi kwa kutumia Chuo Kikuu cha Harvard Wi-Fi kujua
kwamba kuna SSID CS50, uhusiano Wi-Fi yaliyo karibu kwamba wewe
wanaweza kuwa bora kwa bahati.
Ni kejeli kidogo kwamba nywila kwa ajili ya hii - kama angependa kujaribu
kuunganisha na hii kwa kasi bora na hebu kujua kama ni hakuna bora -
ni moja, mbili, tatu, nne, tano, njia yote hadi nane kwa sababu ni nane
salama zaidi kuliko tano.
Hivyo kama unahitaji password Wi-Fi, kuungana na CS50 wirelessly hapa.
Moja, mbili, tatu, nne, tano, sita, saba, nane.
Na baada ya juu CS50 Jadili kama bado una masuala kuunganishwa vipindi
na tutaweza basi mamlaka zilizopo kujua kwa nafasi hii.
>> Wote haki.
Hivyo teaser haraka, hasa kwa wale ambao ni shabiki wavulana au wasichana
ya yote Apple mambo.
Nini mimi kuchimbwa kutoka miaka michache nyuma ilikuwa faili hii hapa, ilock.c, tu
aina ya kufanya zaidi ya saruji na ngumu zaidi baadhi ya C ya msingi zaidi
mipango sisi tumekuwa kuandika.
Basi, mimi kufunguliwa faili hii, ilock.c.
Ni inapatikana katika ukurasa wa mihadhara kwa leo.
Kwa upande wa mkono wa kushoto, unaweza kuona orodha ndefu ya kazi.
Hivyo wenzao ambao aliandika hii aliandika juu sana ya utendaji,
zaidi kuliko tu kuu.
Alitumia rundo zima la maktaba hapa.
Na kama sisi kuanza scrolling kupitia, nini hii kwa kweli ni ni sana
kwanza, naamini, ufa kwa iPhone ya awali.
Wakati alitaka jailbreak iPhone ya awali, ambayo ina maana untether
ni kutoka AT & T na kweli kufunga programu maalum juu yake na kufanya mambo
kwamba Apple hakutaka watu kufanya -
vizuri, mtu alichukua muda wa kufikiri hasa jinsi gani wanaweza kutumia
programu dosari, makosa, mende, katika programu Apple.
Na hivyo alizaliwa ilock.c.
Kwamba kama wewe compiled kwenye kompyuta na imewekwa kwenye iPhone kwamba
kushikamana kwa kompyuta yako kupitia, kusema, USB cable, hii ingekuwa kukupa
marupurupu ya utawala au mizizi ya iPhone yako na basi wewe kufanya pretty much
chochote unataka.
>> Na hivyo kuna kuwa hii paka kuvutia na mchezo wa panya kati ya Apple na
wengine wa dunia hasa kama wao, kama makampuni mengi, kujaribu lock
mambo yao chini hivyo kwamba unaweza tu kufanya na ni nini wanataka.
Lakini, shukrani kwa watu kama hii na ufahamu wao wa ngazi ya chini
maelezo na, katika kesi hii, C programu na mengi ya constructs familiar
kwamba tumekuwa walianza kucheza na, wewe ni uwezo wa kweli kujiinua
vifaa kwa namna unaweza kuona inafaa na si lazima baadhi chombo ushirika.
Hivyo kwa mfano, mimi sielewi nini yote haya ni kufanya.
Lakini GetVersion sauti pretty moja kwa moja.
Na inaonekana kama hii ni kazi ambayo mtu huyu aliandika.
Chukua baadhi ya aina ya integer kama hoja, haina kurudi chochote, lakini
inaonekana kitanzi na kwa kitanzi hapa na kama hali, ikiwa hali,
kuvunja, na kwa namna fulani inahusiana na idadi version.
Kama sisi kitabu chini -
ingawa mengi ya maneno haya ni kwenda kuwa mpya, na kuna
zima mengi ya utendaji katika hapa sisi sijawahi kuona na wanaweza milele kuona zaidi
kozi ya muhula -
mwisho wa siku, ni sawa ifuatavyo sheria na mantiki kwamba sisi tumekuwa
kucheza na hivi sasa.
Hivyo hii ni mbali mzee sana ufa yako 3s iPhone au 4s au hivi karibuni 5s, siku hizi,
lakini najua kwamba yote hayo sana inayotokana na dunia hii ambayo tumekuwa
dived katika.
>> Basi hebu tuangalie mfano kidogo zaidi rahisi.
Hii moja, tu kupata moto juu na baadhi ya kisintaksia na pia baadhi ya data nyingine
aina ambayo tumekuwa kuongelea lakini si kweli kuonekana katika C. Hivyo hii ni
faili inayoitwa positive1.c.
Na kwa maoni juu, hii tu madai kwamba mtumiaji kutoa
chanya idadi.
Hivyo ni mfano wa kitanzi do-wakati, ambayo ni nzuri kwa user-maingiliano
programu ambapo unahitaji kuwaambia user kufanya kitu fulani.
Na kama hawana kushirikiana, wewe yell saa yao au kukataa mchango wao.
Uchunguzi katika kumweka, mimi nitaenda kufanya mistari 19 kupitia 24 ya muda mrefu kama mtumiaji ana
si alinipa namba chanya.
Sasa hii undani hapa kwenye mstari 18, kwa nini mimi kutangaza n juu ya hili zima
looping kujenga kinyume na haki ya karibu na mstari 22 ambapo mimi
kweli huduma ya kupata n?
Yeah?
[Inaudible]
>> DAVID J. Malan: Yeah, hivyo suala hili la wigo.
Na katika muda layman, nini wigo rejea?
Yeah?
[Inaudible]
DAVID J. Malan: Je, unaweza kusema kidogo nguvu zaidi?
SPIKA 1: wapi unaweza kupata variable fulani.
DAVID J. Malan: Perfect.
Ambapo unaweza kupata variable fulani.
Na kwa ujumla, utawala wa thumb hivi sasa imekuwa kwamba wigo wa baadhi
variable hufafanuliwa kwa braces hivi karibuni curly kwamba ve kuonekana.
Na hivyo katika kesi hii, kama mimi alifanya makosa ya kutangaza n kwenye mstari 22,
Mpya kwamba ingekuwa kazi.
Ningependa kupata int, na napenda kuiweka katika n kwamba kutofautiana katika mstari 22.
Lakini ambayo mstari wa kanuni ingekuwa sasa sielewi nini mimi kuzungumza kuhusu?
Hivyo 25, na zinageuka 24, pia, kwa sababu katika kesi hii, yake huanguka nje
ya braces curly.
Hivyo tu kidogo ya kero lakini kwa urahisi sana kutatuliwa kwa kifupi kutangaza
nje variable ya kazi yenyewe.
>> Sasa tutaweza kuona baadaye leo, unaweza kwenda hatua moja zaidi.
Na unaweza hata kupata kidogo wavivu -
na hii si kwa kuwa ilipendekeza, kwa ujumla -
lakini unaweza hata kupata wavivu na kuweka variable kimataifa, ili kuzungumza, si
ndani ya kazi, si ndani ya kitanzi, lakini katika faili yenyewe, nje
wa wote wa kazi ve imeandikwa, kama mimi hapa kwenye mstari 15.
Lakini hii ni kwa ujumla kipaji juu.
Lakini kutambua hili ni suluhisho wakati mwingine matatizo mengine, kama tutaweza
hatimaye kuona.
Hivyo kwa sasa, tutaweza kuondoka ni kama hii.
Lakini hebu angalia kama tunaweza rewrite hii tu kuanza kuonyesha wenyewe
tofauti kidogo.
>> Hivyo mpango huu, tu kuwa wazi, ni positive1.
Hebu kwenda mbele hapa na katika terminal dirisha yangu kufanya positive1, Ingiza.
Inaandaa, okay.
Mimi nina kwenda kukimbia positive1, hit Enter.
Mimi kudai kwamba wewe nipe sifuri.
Nitasema -1.
Kwamba hawakuwa na kazi.
0, 99, ambayo inaonekana kufanya kazi.
Labda si mtihani ukali zaidi.
Lakini angalau ni nzuri sanity hundi kuwa tuko katika njia sahihi.
Hivyo sasa napenda kwenda mbele na kufungua version mbili ya hii.
Na kile ambacho ni tofauti tayari?
Ni kutekeleza jambo hilo.
Lakini nini kama kuruka nje wakati wazi tofauti hii?
Yeah, hivyo hii bool katika kijani.
Gedit ina yalionyesha katika Keyword kijani hii inajulikana kama bool,
ambayo ni aina data.
Haina kuja kujengwa katika yote ya matoleo ya C. Unahitaji ni pamoja na
maalum ya maktaba.
Katika kesi yetu, mimi ni pamoja maktaba CS50 ili sisi
kupata bool.
Lakini katika mstari 18, sisi tunaonekana kuwa na thamani Boolean hapa aitwaye kushukuru.
Hivyo mimi nilikuwa nimewaita hii kitu chochote.
Lakini mimi kuitwa ni kushukuru tu aina ya kufikisha baadhi maana semantic.
Hivyo awali kwenye mstari 18, mimi nina kushukuru kwa sababu inaonekana si
Thamani Boolean kushukuru ni initialized na uongo katika mstari 18.
Na basi inaonekana kile nimepata kufanyika hapa katika mistari 21 kupitia 23 ni nimekuwa tu
aina ya rewritten mantiki yangu.
Hivyo hakuna functionally tofauti.
Lakini katika mstari 22 sasa, mimi kuangalia kama int mtumiaji imetoa ni mkubwa kuliko
0, basi mimi kubadili tu thamani ya kushukuru kwa kweli.
Na kwa nini mimi kufanya hivyo?
Kwa sababu katika mstari 25, inaonekana, mimi nina kwenda kuangalia hali.
Je, hii kitanzi wakati kushukuru ni uongo.
>> Hivyo napendekeza hii kama njia mbadala ya toleo moja kwa sababu ni angalau
kidogo Intuitive zaidi, labda.
Ni kidogo zaidi msingi katika Kiingereza.
Hivyo kufanya yafuatayo wakati wewe si kushukuru, au wakati kushukuru ni uongo.
Na wakati huu, pia, mimi inaonekana hawajali kukumbuka kile mtumiaji typed
katika taarifa kwa sababu hakuna n kutofautiana.
Hivyo kwa kweli, mimi -
nyeupe kidogo uongo huko.
Functionally, mpango huo ni tofauti kidogo mara moja sisi kupata chini ya
ni kwa sababu mimi si kukumbuka kile n ni.
Lakini nilitaka kuonyesha hapa pia kwamba hata kama tumeona GetInt na
GetString kuwa kutumika upande wa kulia wa ishara sawa hivi sasa ili
tunakumbuka thamani, kitaalam, kwamba si madhubuti muhimu.
Kama kwa sababu yoyote wewe tu hawajali kuokoa thamani, unataka tu
kuangalia thamani, taarifa kwamba tunaweza tu kuandika hii kama GetInt wazi
Paren, karibu Paren.
Kwamba kazi ni kwenda na kurudi thamani, kama tumekuwa akisema.
Ni kwenda kukupa nyuma int.
Na hivyo kama wewe kiakili kufikiri ya kinachotokea hii, wakati ninapoandika katika 99, GetInt
anarudi idadi 99.
Na hivyo conceptually, ni kama ingawa code yangu walikuwa kweli hii.
Hivyo kama kweli ni 99 zaidi kuliko 0, kisha kushukuru inakuwa kweli.
Kisha mstari 25 anatambua ooh, sisi ni kosa kwa sababu mimi nina sasa kushukuru.
Na katika mstari 26, sisi tu kusema, shukrani kwa integer chanya, lolote
kilichotokea kuwa.
>> Sasa hebu kufanya kidogo kisintaksia sukari hapa, hivyo kusema.
Hebu tuone kama tunaweza kusafisha line hii ya 25 na ugomvi hii ya tatu na ya mwisho
katika positive3.
Hivyo taarifa tofauti tu sasa ni nini mstari wa kanuni?
Yeah, hivyo 25.
Na tumekuwa si kweli kuonekana hila hii bado tu.
Lakini sisi tulikuwa kuona uhakika Moderators Jumatatu, ambayo inaashiria nini?
Hivyo siyo, au kukanusha.
Hivyo kuchukua thamani Boolean na flip thamani yake.
Kweli inakuwa uongo.
Uongo inakuwa kweli.
Hivyo hii, napenda kupendekeza, ni hata kidogo Intuitive zaidi ya njia ya
kuandika code kwa sababu mimi bado initialize kushukuru kwa uongo.
Mimi bado kufanya yafuatayo.
Mimi kuweka kushukuru kwa kweli wakati unakuja.
Lakini sasa unaweza kweli tu kutafsiri kanuni hii kwa maneno kushoto na kulia,
wakati si kushukuru.
Kwa sababu bang, au kumweka Moderators, inaashiria dhana ya si, hivyo wakati
si kushukuru.
>> Hivyo tena, hatuna ilianzisha dhana yoyote mpya per se.
Tumekuwa aliyesema kuhusu Booleans nyuma wakati sisi alicheza na Scratch.
Lakini sasa tunaweza kutambua tu kuanza kuandika code yetu katika
wengi katika njia mbalimbali.
Hivyo hasa katika pset1, kama wewe ni aina ya wanajitahidi kufikiri njia ya
kuandika baadhi ya mpango, tabia mbaya ni wewe ni katika bahati kwa sababu kuna kwenda kuwa yoyote
idadi ya ufumbuzi ambao unaweza kutokea juu.
Kwa mfano, hii ni tatu tu maana hata rahisi ya mipango.
Wote haki.
Na sasa wanakumbuka juu ya Jumatatu, sisi kushoto juu ya kumbuka hii na maadili kurudi.
Hivyo kwa mara ya kwanza, sisi aliandika mpango kwamba si tu kuwa na kuu,
pia ina desturi yake mwenyewe kazi kwamba mimi aliandika hapa.
Hivyo katika mstari 31 kupitia 34, nimekuwa kutekelezwa kazi mchemraba.
Ni si ngumu.
Ni tu mara kwa mara, katika kesi hii.
Lakini jambo muhimu juu yake ni kwamba mimi nina kuchukua pembejeo katika fomu ya na
Mimi kurudi pato katika fomu ya mara kwa mara.
>> Hivyo sasa nina uwezo, kiasi kama mimi kutumika kwa printf peke yake, kwa kuwaita
kazi hii kwa wito kazi mchemraba.
Na kazi mchemraba inachukua baadhi ya pembejeo.
Na kazi mchemraba anarudi baadhi pato.
Na hivyo kwa kulinganisha, printf tu alifanya kitu.
Ni hakurudi chochote kwamba sisi kumjali kuhusu - hata ingawa, kama
kando, ni gani kurejea thamani.
Wewe tu ujumla kupuuza.
Printf tu alifanya kitu.
Ni alikuwa na athari upande wa uchapishaji kwa screen.
Kwa kulinganisha hapa, tuna kazi mchemraba, ambayo
kweli anarudi kitu.
>> Hivyo hii ni kwa ujumla -
kwa wale jamaa na hii, ni wazo haki moja kwa moja.
Lakini kwa wale chini ya ukoo na hili wazo la kupita katika pembejeo na kupata
matokeo ya nyuma, hebu jaribu tu kitu super rahisi.
Kuna mtu yeyote starehe kuja juu ya hatua kwa ufupi?
Wewe kuwa starehe na kamera juu yenu, kama vile.
Yeah.
Sawa, nini jina lako?
KEN: Ken.
DAVID J. Malan: Ken.
Haki zote, Ken.
Kuja juu juu.
Hivyo Ken ni kwenda kuwa kazi ya aina hapa.
Na hebu kwenda mbele na kufanya hili.
Hebu kupata dhana kidogo.
Nice kukutana na wewe.
Karibu hatua katikati.
Wote haki.
Hebu hit button hii hapa.
Wote haki.
Hivyo hapa una ubao wa kisasa.
Na kile Mimi ni kazi kuu, kwa mfano.
Na mimi si kuwa na iPad katika mkono wangu.
Mimi si kweli kumbuka jinsi - vizuri, kwa kweli, siwezi kusema kwamba.
Mimi si kweli kuwa mwandiko mzuri.
Na hivyo kwa hiyo, mimi nataka wewe magazeti kitu kwenye screen kwa ajili yangu.
>> Kwa hiyo mimi ni kuwa mpango kuu.
Na mimi naenda kuwa wewe kusema hili kwa kuandika katika kuku scratch yangu na
kisha kupita wewe pembejeo.
Hivyo kama silly ingawa zoezi hili ni, dhana ya kazi na wito
kazi na kurudi kazi kweli majipu chini hii.
Mimi ni kuu.
Mimi tu imeandikwa printf ("kitu") kwenye screen.
Mimi mbio mpango huu.
Na haraka kama printf anapata kuitwa, inachukua moja hoja - au moja parameter,
wakati mwingine -
kati ya quotes mbili.
Hapa ni hoja kuwa.
Mimi nina kupita kwa Ken.
Sasa yeye ni sanduku jeusi imeandikwa baadhi idadi ya miaka iliyopita kwamba inaonekana
tu anajua jinsi ya magazeti mambo kwenye screen.
>> Hivyo, nitafanya.
Hiyo si mbaya.
Hivyo, nzuri sana.
Hivyo sasa Ken inafanywa utekelezaji.
Je, yeye haja ya kumsaliti mimi kitu nyuma?
Hivyo si kwamba tumekuwa kuonekana hivi sasa.
Tena, printf haina kweli kurudi idadi.
Lakini sisi ni kwenda kupuuza kwamba kwa sasa kwa sababu tumekuwa kamwe kutumika.
Basi hiyo ni kwa ajili ya Ken.
Na hivyo sasa kuu inakuja nyuma nitafanya -
kuu inachukua zaidi ya udhibiti wa mpango tena kwa sababu ya kuwa mstari wa kanuni,
printf, ni kosa utekelezaji.
Na sisi kwenda juu ya njia yetu ya utekelezaji chochote mistari nyingine ni pale.
>> Wote haki.
Hivyo sasa hebu jaribu mfano tofauti kidogo.
Na wakati huu hapa, hebu kwanza wazi screen hapa.
Na wakati huu, tutaweza kufanya kazi cubing.
Lakini wakati huu, mimi kutarajia thamani ya pato.
Basi hebu kwenda mbele na kufanya hili.
Hivyo sasa nina mstari wa kanuni kwamba anasema x = mchemraba (x).
Hivyo kweli let's -
mstari wa kanuni, wanakumbuka, inaonekana kama hii.
x = mchemraba (x).
Hivyo ni jinsi gani hii kwenda kufanya kazi?
Basi hebu kwenda mbele na kukupa screen nyeupe tena.
Na mimi naenda kuandika sasa chini ya thamani ya x, ambayo kwa wakati huu katika
wakati hutokea kwa kuwa, hebu kusema, 2, kuitunza rahisi.
Hivyo nimeandika kwenye kipande cha karatasi thamani ya 2,
ambayo ni thamani yangu x.
Mimi mkono kwa Ken.
KEN: Na mimi tu kuandika jibu?
DAVID J. Malan: Yeah, hebu tu kuandika jibu.
Sawa.
Na sasa yeye ana kurudi mimi kitu.
Hivyo basi -
kamilifu.
Nice segue.
>> Hivyo sasa hukabidhi mimi nyuma thamani ya 8, katika kesi hii.
Na nini mimi kufanya na hayo?
Naam, kweli, hebu angalia.
Kupata haki hii.
Je, Mimi naenda kufanya na hayo?
Sasa mimi naenda kuchukua thamani hii na kwa kweli kuhifadhi katika wale
sawa bits katika kumbukumbu.
Lakini sikia, mimi nina aina ya wanajitahidi hapa.
Mimi nina kuchanganyikiwa kidogo kwa sababu ambapo mimi kweli kuandika thamani ya x?
Sababu kile nimekuwa tu kufanyika ni kimwili mkono Ken kipande cha karatasi
kwamba alikuwa na thamani 2, ambayo ilikuwa x.
Na kwa kweli, hilo ni just nini kinatokea.
Hivyo ni zinageuka kuwa wakati wewe piga kazi, na wewe kupita katika hoja
kama "hello dunia" au unaweza kupita katika hoja kama 2, kwa ujumla, wewe ni
kupita katika nakala ya hoja hiyo.
Na hivyo tu kama mimi aliandika chini ya idadi 2 hapa na kukabidhiwa kwa Ken; kwamba lazima
maana kwamba mimi bado kuwa na nakala ya 2 thamani mahali fulani.
Kwa sababu kwa kweli, sasa kwamba nimepata wamezipata nyuma thamani 8, mimi haja ya kwenda nyuma katika
RAM na kweli kuandika 8 ambapo mimi mara moja alikuwa na idadi 2.
>> Hivyo kuibua kumbuka wazo hili la kupita katika literally
nakala ya thamani.
Ken haina kitu wake, hukabidhi mimi nyuma kitu - katika kesi hii,
thamani kama 8.
Na kisha mimi kufanya kitu na thamani ya kwamba kama mimi
wanataka kushika ni kuzunguka.
Basi wote wa hii itakuwa wote pia familiar kabla ya muda mrefu.
Asante sana kwa demo hii hapa, Ken.
Wote haki.
Vizuri sana kufanyika.
Basi hebu angalia jinsi hatimaye inahusiana na baadhi ya kazi
wito kwamba sisi tumekuwa kufanya hapa.
Hivyo basi mimi kwenda mbele na kutuleta kwa mfano cubing hapa.
Na taarifa kwamba kama tunataka kweli kuanza kuchukua hii zaidi, tunakwenda
kuwa na kukumbuka ya ukweli kwamba x idadi hiyo ni kuwa alipita katika
hapa ni tofauti na yale ya kweli kuwa alipita katika kazi.
Hivyo tena, hii wanapita nakala inaenda kuwa kabisa
germane katika muda tu.
>> Basi hebu tuangalie kitu ambacho haina kabisa kazi ya haki bado.
Mimi nina kwenda mbele na kufungua tatu Buggy mfano, ambayo
ni kiujanja kwa asili.
Na ni kuitwa buggy3, na ni kutekeleza kazi swapping.
Hivyo hapa tuna kazi kuu ambayo ina x na y kiholela initialized kwa
1 na 2, kwa mtiririko huo.
Tunaweza kutumia GetInt, lakini sisi tu haja ya zoezi rahisi.
Hivyo ni vigumu-coded kama 1 na 2.
Katika mistari ya 21 na 22, sisi inaonekana magazeti nje x na y, moja kwa kila mstari.
Kisha, kwenye mstari 23, mimi kudai Mimi swapping maadili haya, dot, dot, dot.
Mimi inaonekana piga kazi katika mstari 24 kuitwa byta
kwamba inachukua hoja mbili.
Ni kabisa legit kwa ajili ya kazi ya kuchukua hoja mbili.
Tumeona printf kufanya hivyo tayari.
Hivyo byta inaonekana inachukua x na y.
Na kama jina lake anapendekeza, napenda matumaini kwamba ni kwenda
wabadilishane maadili haya mawili.
Hivyo basi mimi kudai kwenye mstari 25, walibadilishana.
Na mimi kikachapishwa x na y chini ya dhana kwamba
wameweza kweli imekuwa swapped.
Lakini kama mimi kwa kweli kuendesha mpango huu -
napenda kufungua dirisha terminal.
Hebu kufanya buggy3.
Kama jina linavyosema, hii si kwenda mwisho vizuri.
Kwa sababu wakati mimi hit Enter, taarifa kwamba ni x 1.
y ni 2.
Na bado katika mwisho wa mpango, bado, kwa kweli, sawa.
>> Hivyo kwa kuzingatia maandamano tu sasa na Ken, nini hasa kinachoendelea?
Naam, hebu kupiga mbizi katika kazi hii byta.
Ni super mfupi.
Ni tu mistari michache ya maadili ya muda mrefu.
Lakini nini tatizo la msingi kuzingatia hadithi rahisi walipoambiwa
hapa juu na Ken?
Kwa nini byta kuvunjwa?
[Inaudible]
Hasa.
Hivyo sisi ni hifadhi ya nakala, hazibadiliki yenyewe.
Kwa maneno mengine, byta inaonekana inachukua hoja mbili, int.
Na ni kiholela kuitwa b na.
Na hapa, nimekuwa kupita katika x na y, ambayo ni mtiririko 1 na 2.
Lakini nina si halisi kupita katika x.
Mimi si halisi kupita katika y.
Mimi nina kupita nakala ya x na nakala ya y.
Ni kama karibu kama wewe ingawa kunakiliwa na pasted katika wabadilishane maadili ambayo
unataka kwa kweli kuendesha.
Hivyo kama hiyo kesi, wakati mimi, mpango, kuanza utekelezaji
mstari 35, kisha 36 -
wakati mimi kupata mstari 37, katika hatua hii ya hadithi, ni nini thamani ya?
Katika hatua hii ya hadithi, line 37, ni nini thamani ya wakati huu?
Hivyo ni lazima tu kuwa 1.
Haki?
Kwa sababu x ilipitishwa katika kama hoja ya kwanza.
Na kazi hii tu kiholela ni wito hoja yake ya kwanza,.
Vile vile ni y, hoja ya pili.
Na ni tu kiholela wito pili hoja b.
>> Sasa dichotomy hii ni kweli haki tu alielezea.
Fikiria kuhusu hilo.
Hakuna kati yetu na alikutana mtu ambaye aliandika printf.
Hivyo hakika, yeye au yeye hana wazo nini vigezo wetu miaka 30 baadaye wanaenda
kuitwa.
Hivyo inabidi kuwe na tofauti kati ya nini wito vigezo katika
kazi wewe kuandika na nini wito vigezo katika kazi wewe ni
wito au kutumia.
Hivyo kwa maneno mengine, nimeandika vigezo wangu kama x na y.
Lakini kama mtu mwingine ameandika kazi byta, yeye au yeye kwa hakika
bila kujua nini vigezo yangu ni kwenda kuitwa.
Hivyo kutambua kwamba hii ni kwa nini una hii pande mbili za majina.
Kitaalam, mimi naweza kufanya hivyo kwa bahati mbaya.
Lakini bado wataendelea kuwa kupita katika kama nakala.
Itakuwa bahati mbaya tu kuwa safi aesthetically ikiwa mtu huyo ambaye aliandika
wabadilishane walitumia majina sawa.
>> Wote haki.
Hivyo katika hatua hii ya hadithi, line 37, ni 1.
b ni 2.
Na sasa mimi kuendelea wabadilishane yao.
Naam kwanza ya yote, napenda kwa kweli kufanya hili zaidi tu.
Sijui nini wale mistari mitatu ya code walikuwa wakifanya.
Hebu tu kufanya hili.
b anapata.
Done.
Kwa nini hii ni kuvunjwa, mantiki?
Ni aina ya kitu Intuitive, haki?
Hivyo b inakuwa.
Na b inakuwa.
Lakini tatizo ni kwamba haraka kama mstari 37 executes, nini
thamani ya na b?
huo, 1.
Kwa kuwa wewe clobbered, hivyo kusema, ve iliyopita b sawa.
Hivyo mara mstari 37 ni kunyongwa, kwamba ni kubwa.
Wewe sasa wana nakala mbili za ndani ya namba 1 ya kazi hii.
Hivyo basi wakati wewe kusema katika mstari 38, anapata b, vizuri, wewe ni aina ya Star.
Kwa sababu wewe ni tu assigning 1-1.
Umefanikiwa aina ya kupoteza thamani wewe kumjali kuhusu.
>> Hivyo katika toleo asili ya hili, taarifa nilivyopatenda.
Mimi badala yake alikuwa mstari wa tatu wa kificho kwamba inaonekana kama hii.
Mimi kutangaza variable muda - TMP ni jina la kawaida kabisa
kwa variable muda.
Ni int sababu ina mechi nini nataka kufanya nakala ya.
Mimi kuhifadhi nakala ya ndani ya TMP. Hivyo mara mstari 37 ina kunyongwa,
thamani ya ni -
sanity haraka kuangalia -
1.
thamani ya b ni 2.
Na thamani ya TMP pia ni 1.
Hivyo sasa mimi nitafanya line 38.
Hivyo mara mstari 38 executes, inachukua juu ya thamani ya b.
Na b ilikuwa 2.
Hivyo sasa ni 2.
Hivyo katika hatua hii ya hadithi, ni 2, b ni 2,
na TMP ni 1.
Hivyo sasa kimantiki, tunaweza thamani tu plop TMP wa ndani ya b.
Na sisi ni kosa.
>> Hivyo tumekuwa kutatuliwa kuwa tatizo.
Bahati mbaya, wakati mimi kukimbia programu hii katika fomu hii, haina kweli wabadilishane
yoyote maadili.
Lakini kwa kuwa wazi, kwa nini?
Mimi fasta tatizo mantiki kutoka muda tu iliyopita.
Lakini tena, ikiwa mimi kukimbia katika mpango huu, x na y haitabadilishwa na mwisho wa
mpango wa utekelezaji.
[Inaudible]
DAVID J. Malan: Hivyo sisi si kurudi chochote.
Basi hiyo ni kweli.
Lakini zinageuka kuna kidogo ya tatizo hapa kwa sababu hivi sasa,
tu kitu tumekuwa na uwezo wa kurudi ni kitu kimoja.
Na hii ni kizuizi cha C. Unaweza tu kurudi kwa kweli moja ya thamani,
katika kesi ambayo, mimi nina aina ya kukwama hapa
kwa sababu mimi naweza kurudi thamani mpya ya x au mimi naweza kurudi
mpya thamani ya y.
Lakini nataka wote nyuma.
Hivyo kurudi si ufumbuzi rahisi hapa.
Lakini tatizo la msingi ni kwa nini?
Nini sisi kweli swapped?
na b.
Lakini na b ni nakala za x na y, ambayo ina maana sisi tu alifanya yote haya
kazi - sisi tu alitumia kama dakika tatu kuzungumza juu ya kubadilishana
kazi na wote watatu wa vigezo hivi.
Na kwamba ni kubwa, kikamilifu sahihi katika upweke.
Lakini na upeo b tu ni katika mistari haya hapa.
Hivyo tu kama kwa kitanzi, kama wewe kutangaza integer i ndani kwa ajili ya
kitanzi - vile vile, kama wewe ni kutangaza na b ndani ya kazi ambayo
ve imeandikwa, wao uko halali tu ndani ya kazi hiyo.
Ambayo ina maana ya haraka kama byta inafanywa utekelezaji na sisi kwenda kutoka mstari 24 kwa
mstari 25 x, y na haijabadilishwa wakati wote.
Wewe tu kupita mengi yote ya wakati swapping nakala ya variables.
>> Hivyo ni zinageuka kuwa ufumbuzi wa hili ni kweli zisizo dhahiri.
Ni kabisa kutosha kurudi maadili kwa sababu tunaweza
tu kurudi moja thamani.
Na kwa kweli mimi nataka wabadilishane wote x na y kwa wakati mmoja.
Hivyo sisi ni kwenda kurudi huu.
Lakini kwa sasa, kutambua kwamba suala la msingi hupata kutoka ukweli
kwamba na b ni nakala.
Na wao ni katika upeo wao wenyewe.
Naam, hebu jaribu kutatua hili katika baadhi ya njia.
Hebu kweli kitabu nyuma hapa na kufungua, hebu sema, lahaja nne
hii, buggy4.
Na nini kuhusu hili?
Hili ni tatizo sawa lakini rahisi kuangalia kabla ya sisi kuchukua kumchoma katika
kulitatua.
Mpango huu huitwa increment.
Na inaonekana initializes integer x kwa 1 katika mstari 18.
Mimi kisha kudai x ni 1.
Mimi kisha wanadai incrementing, dot, dot, dot.
Mimi kisha piga increment.
Lakini basi katika mistari 22 na 23, mimi kudai ni kuwa incremented.
Mimi kudai x ni sasa chochote ni, 2 ikatengeneza.
>> Lakini mpango huu ni Buggy.
Nini tatizo?
Yeah?
[Inaudible]
DAVID J. Malan: Hasa.
Hivyo x ametangazwa wazi juu ya mstari 18.
Hiyo ni ndani ya braces kuu ya curly.
Hivyo jibu rahisi hapa ni kwamba, vizuri, x ipo hapa.
Ni haipo katika mstari 32.
Hivyo mpango huu kwa kweli si hata kukusanya.
compiler, wakati mimi kujaribu kuandaa kanuni hii, ni kwenda yell saa yangu
kuhusu baadhi kitambulisho Undeclared au kitu na athari hiyo.
Kwa kweli, hebu jaribu.
Hii ni kufanya buggy4.
Kuna ni.
Matumizi ya x Undeclared kitambulisho katika mstari 32.
Na kweli, hebu kuwa wazi zaidi hapa leo ili kwamba hii ni muhimu katika
masaa ya ofisi na nyumbani.
Ona kwamba ni kidogo isiyoeleweka kirahisi imeandikwa.
Lakini ukweli kwamba Clang ina yelled saa yetu, akisema
buggy4.c: 32:5, ni kweli muhimu.
Ina maana kwamba kosa ni juu ya mstari 32 katika tabia nafasi tano.
Hivyo moja, mbili, tatu, nne, tano.
Hiyo, kwa kweli, ambapo tatizo ni.
Na pia kukumbuka katika masaa ya ofisi na nyumbani, mimi nina bahati hapa.
Nina moja kosa.
Ni kwenda kuwa rahisi kurekebisha.
Lakini kama wewe kupata screen nzima kamili ya ujumbe balaa kosa, tena,
kutambua kwamba moja bottommost ili tu kuwa dalili ya
ndio topmost.
Hivyo baada ya daima chini mende wako kutoka chini juu.
Kwa sababu kuna ili tu kuwa athari daisy-mnyororo kwamba ni kupendekeza wewe
kuwa na matatizo ya njia zaidi ya wewe kweli kufanya.
>> Hivyo ni jinsi gani tunaweza kurekebisha hii ikiwa lengo langu ni increment x?
Nini hiyo?
Sawa.
Hivyo tunaweza kufanya x kimataifa.
Hebu kuchukua njia ya mkato kwamba mimi alionya kuhusu mapema.
Lakini heck, sisi tu haja ya kurekebisha haraka.
Hivyo hebu sema tu x int hapa juu.
Kwamba inafanya x kimataifa.
Hivyo sasa kuu ina huduma hiyo.
Na increment ina huduma hiyo.
Na hivyo basi mimi kwenda mbele na kukusanya hii sasa.
Matokeo buggy4, Ingiza.
Inaonekana kukusanya sasa.
Hebu kukimbia buggy4, na inaonekana kwa kweli kazi.
Sasa hii ni moja ya mambo haya -
kufanya kama mimi kusema, si kama mimi, kama nimekuwa tu kufanyika hapa.
Kwa sababu kwa ujumla, mipango yetu ni kwenda kupata zaidi ya kuvutia na
sana tena kuliko hii.
Na kama ufumbuzi wako kwa matatizo ya maisha ni tu ah, kuweka yote
vigezo kwa juu ya faili yako, haraka sana kufanya mipango kupata
horrifically vigumu kusimamia.
Ni anapata vigumu kufikiria juu majina mapya kutofautiana.
Ni anapata vigumu kuelewa nini variable ni kufanya nini.
>> Na hivyo kwa ujumla, hii si ufumbuzi mzuri.
Basi hebu kufanya hili vizuri.
Hatutaki kutumia variable kimataifa hapa.
Mimi nataka increment x.
Hivyo mimi nilikuwa wazi -
mwisho wa siku, ni aina ya hadithi silly sababu sisi tu kufanya hili.
Lakini kama sikujua kuhusu operator kwamba, au mimi sikuruhusiwa
mabadiliko hayo katika kuu yenyewe, jinsi mwingine inaweza mimi kutekeleza Ken zaidi ya hapa, hii
wakati si kwa mchemraba lakini kwa nyongeza ya?
Ninawezaje kubadilisha jambo hili hapa?
Yeah.
[Inaudible]
DAVID J. Malan: Okay, nzuri.
Sasa kwa nini basi si mimi kupita katika x?
Na kisha badala ya kurudi, kwa nini si mimi tu kufanya kurudi x + 1?
Sasa, wanandoa zaidi mambo kuwa na mabadiliko ya hapa.
Mimi nina juu ya kufuatilia haki.
Ni kitu gani zaidi nahitaji tweak?
Mtu mwingine.
Yeah?
[Inaudible]
DAVID J. Malan: Mimi haja ya kubadili aina ya kurudi increment
sababu siyo kulivunja.
Tupu maana yoyote ni kuwa akarudi.
Lakini ni wazi, sasa ni.
Hivyo hii inahitaji kubadilika kwa int kuwa thabiti na chochote
Mimi kwa kweli kurudi.
>> Sasa kitu kingine ni bado Buggy hapa.
Yeah?
[Inaudible]
DAVID J. Malan: Kwa hiyo mimi haja ya nyongeza ya x?
[Inaudible]
DAVID J. Malan: Ah, hivyo mimi haja ya kupita x.
Kwa hiyo mimi haja ya kufanya hivyo hapa.
Hivyo mfano, mimi kuwa na mabadiliko ya hii hapa.
Hivyo hii ina kuwa int.
Hii ina kuwa -
hmm.
Mimi kwa kweli kuwa na mdudu chini hapa.
Hebu kurekebisha hii moja kwanza.
Nini hii kweli kuwa?
Hivyo ni got kuwa kitu int.
Ni inaweza kuwa x.
Lakini kusema ukweli, kama wewe kuanza wito yote ya x yako vigezo, ni kwenda kupata
chini na chini ya wazi ambayo ni ambayo.
Basi hebu tu kiholela kuchagua tofauti kumtaja mkataba kwa ajili yangu
msaidizi kazi, kazi mimi nina maandishi.
Tutaweza simu yake.
Au tunaweza kuiita - wacha kuiita even_number kuwa hata zaidi ya wazi.
Hivyo basi nina kurudi chochote idadi ni pamoja na 1.
Na sasa mimi kuwa na mabadiliko ya mtu mwingine kitu hapa juu na moja
nyingine kitu hapa.
Nifanye kuwa na mabadiliko kwenye mstari 21 ya kwanza?
Nina hawawajui kwa x.
Hivyo siwezi kuwaita tu x increment.
Mimi haja ya kukumbuka jibu kwa kubadilisha thamani ya x kwenye
mkono wa kushoto upande.
Na hata kama x ni sasa juu ya kushoto na kulia, hiyo ni kwa sababu kabisa faini
upande wa kulia mkono anapata kwanza kunyongwa kisha anapata plopped ndani ya kushoto
mkono kitu, x katika kesi hii.
Na kisha mwisho, hii ni fix rahisi sasa.
Hii lazima tu mechi nini chini chini.
Int idadi.
>> Wote haki.
Hivyo rundo zima la mabadiliko kwa ajili ya kazi kweli wajinga.
Lakini mwakilishi wa mambo kwamba tutaweza inazidi wanataka kufanya.
Hivyo kufanya buggy4.
Nimekuwa Star up mahali fulani.
Oh, Mungu wangu.
Tano makosa katika, kama, mpango sita-line.
Basi nini vibaya juu ya mstari 18, tabia ya 5?
Wote haki.
Hivyo nina kutangaza hii int.
Wote haki.
Basi hebu angalia, rundo zima la makosa mengine.
Oh mungu wangu.
19, 18, 21.
Lakini tena, hebu tu wazi screen -
Document L hapa - na re-kukimbia Clang.
Hivyo tano matatizo ni kweli tu kwamba moja.
Hivyo sasa hebu kukimbia buggy4, Ingiza.
Whew.
x imekuwa incremented usahihi.
>> Wote haki.
Maswali yoyote juu ya jinsi ya increment namba?
Yeah?
SPIKA 2: Kwa nini ni kwamba unaweza kubadili tu x kwa idadi katika variable
jina na kufahamu nini maana?
DAVID J. Malan: Good swali.
Jinsi ni kwamba naweza kubadili tu x kwa idadi na mpango watajua
mara moja?
Hivyo tena, unafikiri kama abstraction hii.
Hivyo kama mimi ni kuu na Ken ni Unaozidi, kusema ukweli, mimi sijali
nini Ken wito iPad wake.
Mimi sijali kile anachokiita chochote kwamba ina nini na utekelezaji wake
ya utendaji huu.
Hivyo hii ni undani utekelezaji kuwa mimi, kuu, wala
kuwa na huduma ya juu.
Na hivyo tu kubadilisha mara kwa mara ndani ya kazi, idadi hapa
na idadi hapa, ni yote inachukua muda mrefu kama mimi recompile.
Ni aina ya kama kama unafikiri juu - wengi wetu, wale wa wewe kwa dereva
leseni ambao wameweza inaendeshwa, au kama wameweza hata inaendeshwa katika gari -
wengi wetu hawana wazo jinsi ya gari inafanya kazi chini ya Hood.
Na literally, kama wewe kufungua Hood, wengi wetu - mimi mwenyewe pamoja -
hawataenda kweli kujua nini sisi tunataka.
Aina ya kama unaweza kuhisi pamoja na mambo kama haki hii sasa.
Lakini sisi si kweli kuwa na huduma jinsi gari kazi.
Hatuna kwa huduma nini yote ya viboko na pistons na nyaya ndani ya
gari ni kweli kufanya.
>> Hivyo kitu kama nini wito piston Haijalishi
hapa katika kesi hii.
Same wazo.
Yeah?
[Inaudible]
DAVID J. Malan: Kama kulikuwa na zaidi matumizi ya sasa variable XA iliyopita,
wewe, programu, unachoweza kubadilisha kila mahali.
Au unaweza literally kufanya Picha, Menyu, na kisha Find / Replace,
kitu kama hicho.
Lakini wewe ni kwenda na kufanya wale mabadiliko mwenyewe.
Wewe kuwa thabiti.
[Inaudible]
DAVID J. Malan: utaratibu maalum kama hapa?
Kama hii ilikuwa int mwingine namba?
Yeah.
Hivyo ili mambo wakati wewe ni wito kazi.
Hivyo kama mimi walikuwa wito increment hapa na kitu kitu comma,
kuna ramani ya moja kwa moja.
variable kwanza, chochote ni kuitwa, ni kufanywa nakala ya kwanza
hoja zaidi ya hapa.
Samahani, hii haipaswi kuwa mabano.
pili hoja yanaendana na la pili.
>> Hivyo ili, ndiyo, mambo.
Wote haki.
Samahani mimi alichukua muda mrefu njia ya kufika huko.
Maswali mengine?
Wote haki.
Basi hebu angalia kama hatuwezi kuchora picha ya nini kweli kinachoendelea
hapa chini ya Hood, hivyo kusema.
Hivyo hii ni mstatili kwamba wanaweza kuwakilisha kumbukumbu ya kompyuta yako.
Hivyo hata kama huna wazo jinsi kumbukumbu kazi au jinsi RAM kazi, angalau
kudhani kwamba una mashada ya hiyo siku hizi.
Nimepata megabaiti yake.
Nimepata gigabytes yake.
Na tunajua kutoka sifuri wiki kwamba Byte ni yale tu?
8 bits.
Haki, hivyo 8 zeroes na ndio.
Hivyo kama kompyuta yako ina GIG ya RAM, wawili gigs ya RAM siku hizi, una
bilioni au bilioni 2 ka ya kumbukumbu, au takriban bilioni 8 au 16 bilioni
bits, ndani ya kompyuta yako.
Sasa tofauti mfano kidogo Woolly Willy, siyo chembe magnetic
kawaida tena.
Kuongezeka, katika Laptops angalau, ni hali mango anatoa, SSDs, kwamba
tu kuwa hakuna kuhamia sehemu.
Ni wote elektroniki.
Ni wote umeme msingi.
Hivyo kufikiri, ingawa, ya Mstatili hii kama tu anayewakilisha moja au mbili
gigabytes ya kumbukumbu kwamba wewe.
>> Hivyo ni chunk ya kumbukumbu.
Sasa ulimwengu wa sayansi ya kompyuta ina aina ya chunks partitioned mbali ya
kumbukumbu ya kufanya mambo tofauti.
Hivyo kwa mfano, kama hii ni RAM kompyuta yako - kama ilivyopendekezwa na
Mstatili hapo - zinageuka kuwa na mkataba, juu ya RAM yako, hivyo
kusema, kwa ujumla ni nini wito sehemu asilia.
Wale ni zeroes na wale ambao una compiled.
Hivyo wakati tumekuwa inaonekana chini ya kofia katika kile a.out ni, kila
zeroes na wale -
wakati kukimbia mpango, zeroes hizo na zile ni kubeba kutoka ngumu yako
gari katika kitu kinachoitwa RAM.
Na katika RAM, wao ni kuweka saa ya juu.
Sasa wakati huo huo, una mambo mengine.
Initialized data, uninitialized data.
Wale wawili swaths ya kumbukumbu rejea vigezo kimataifa, ambayo
wewe si mara nyingi kutumia.
Lakini wakati mwingine kama wewe, wao kuishia huko pia.
Kisha kuna baadhi ya mambo mengine.
Mazingira vigezo, ambayo sisi si kutumia muda mwingi juu.
Lakini basi mambo mawili muhimu ambayo itakuwa nyuma katika hii
muhula, stack na lundo.
>> Kwa hiyo wengi kumbukumbu ya kompyuta yako ni akiba wakati wa mbio mpango kwa ajili ya
kitu kinachoitwa stack na kitu kinachoitwa lundo.
Na sisi siyo kwenda kuzungumza kuhusu lundo leo, lakini sisi
majadiliano juu ya stack.
Na stack ni maana ya conjure up Visual ya ukumbi kama dining
trays unga katika Mather House, au popote kutokea kwa kuwa, ambapo
dining hall wafanyakazi safi yao kila siku.
Wao stack yao juu kutoka ghorofa ya juu juu.
Na vile vile katika kumbukumbu, kuna hili wazo la kuweka kitu juu ya
stack, kuweka kitu juu ya stack, kuweka kitu juu ya stack.
Na nini sisi maana kwa mfano huu?
Naam, hebu kuvuta nusu tu ya chini ya picha hii, kompyuta yako
RAM, kupendekeza yafuatayo.
Ni zinageuka kuwa wakati kukimbia mpango kama a.out au hello, chochote
mpango ni kwamba ve imeandikwa,
tena, zeroes hizo na zile ni kubeba kutoka gari yako ngumu - ambayo ni
muda mrefu kuhifadhi mrefu, anakaa huko hata wakati wewe vuta kuziba -
kubeba katika RAM.
RAM ni kasi kuliko anatoa ngumu.
Ni ndogo kuliko anatoa ngumu.
Lakini ni ambapo mipango kuishi wakati wewe mbio yao.
>> Hivyo bonyeza mara mbili juu ya mpango Mac au PC - ni kubeba kutoka
ngumu kuendesha ndani ya RAM.
Haraka kama ni kubeba katika RAM, zeroes na wale kwenda juu ya njia,
kinachojulikana Nakala sehemu.
Lakini basi kwa haraka kama mpango wako kweli kuanza mbio, kuu
kazi ni kuitwa.
Na kuu, kama tumeona, mara nyingi ina vigezo mitaa.
Na ina ints masharti na na chars na kama.
Hivyo kama mpango wako kwamba umeandika au mpango kwamba una
mbili clicked kutumika baadhi ya vigezo ndani ya kuu, wanaishia katika
chini ya stack yako ya kumbukumbu, hivyo kusema.
Sasa zaidi concretely, nini hii kwa kweli ina maana gani?
Hii ina maana kwamba kama sisi walikuwa wanakwenda kuweka namba mambo -
ikiwa tulipokuwa tunakwenda idadi bytes ya RAM katika kompyuta yako, taarifa kwamba
hii inaweza kuwa Byte idadi sifuri.
Hii inaweza kuwa Byte namba moja, mbili, tatu, nne, tano, sita, kila
njia ya juu na kama -
Bilioni 2 itakuwa njia yote hadi pale saa ya juu.
Hivyo kwa maneno mengine, wakati sisi majadiliano kuhusu RAM au kumbukumbu katika suala la ka, ni
tu ina maana kwamba mtu imeamua nini kuzihesabu kila
wale chunks ya kumbukumbu.
>> Hivyo wakati unahitaji 32 bits kwa int, au unahitaji 8 bits kwa Char, ambapo
je, wao kuishia katika kumbukumbu?
Naam conceptually, wao tu kuishia chini ya hii
jambo hujulikana stack.
Lakini nini kuvutia sasa ni wakati kuu wito kazi.
Tuseme kazi kuitwa foo, tu jina holela.
Kinachotokea ni kuu ni chini ya hii stack ya kumbukumbu.
Foo sasa ni kuweka juu ya kuu katika kumbukumbu.
Hivyo yoyote vigezo vya ndani kuwa foo ina kuishia aina ya conceptually juu
wale katika kuu.
Kama foo wito kazi nyingine iitwayo bar, wale vigezo kuishia hapa.
Kama bar wito kitu kingine, hapa, hapa, hapa.
Basi nini kuvutia kuhusu mbio mpango ni kwamba kama wewe piga kazi,
na kama wale majukumu piga kazi, na kama wale majukumu piga kazi,
wewe kujenga hii stack ya utendaji katika kumbukumbu.
Na mara moja tu anarudi kazi gani unaweza kuanza kupata kwamba kumbukumbu nyuma.
Hivyo moja ya njia rahisi ya kukimbia nje ya kumbukumbu katika programu ya kompyuta ni kwa
kuandika kazi ambayo kamwe kurudi.
>> Hivyo kwa mfano, hebu kuonyesha kama mengi na
kukusudia Buggy mpango.
Hebu kwenda mbele na kufanya # pamoja , int kuu (utupu).
Na mimi naenda kufanya wakati (2> 1), ambayo pengine si milele
kubadilisha juu yetu.
Na napenda kwenda mbele sasa na kufanya printf.
Kwa kweli, kwamba kinaendelea kuwa chini ya kuibua kuvutia.
Hebu kufanya hili.
Kwa int (i = 0; i> 0).
Hebu tufanye hili kosa, i + +.
Na hebu printf hapa.
Hebu mazoezi nini nilikuwa akihubiri.
Hebu kuwa na mbinu hapa.
Tupu chorus, na tutaweza kusema int i.
Na kisha mimi nina kwenda kusema, printf -
oh, wacha kufanya hii ya kuvutia zaidi.
Hebu kweli si magazeti chochote wakati wote.
Hebu tu kufanya hili.
Chorus (i).
>> Wote haki.
Hivyo hii ni kwa sababu Buggy kwa nini?
Mimi nina kufanya hili kama mimi kwenda kwa sababu haina mpango kwa kweli kufanya kitu chochote
ya riba.
Lakini hilo sio lengo.
Lengo ni kuandika mpango ambao kuu kazi anafanya nini, inaonekana?
Wito yenyewe.
Na kweli, hatuna haja ya kitanzi.
Hebu hata kurahisisha hii tu ili kama si kupoteza mbele ya kweli
msingi mdudu.
Wito Kuu chorus kuimba baadhi chorus.
Kisha mimi alifanya kitu kijinga, na nilikuwa na chorus wito chorus kwa sababu mimi kudhani
mtu mwingine alikuwa anaenda kutekeleza hilo labda.
Na sasa hii si kwenda kukusanya bado.
Mimi haja ya kufanya nini?
Nahitaji mfano, kumbuka.
Kwa hiyo mimi haja ya kuwa juu hapa utupu chorus (int i);.
>> Hivyo sasa, kama mimi kwenda chini hapa -
kweli, hebu kutumia dirisha kubwa.
Hebu kwenda mbele na kufanya chorus.
Matumizi ya declarer wasiojulikana i.
Oh, kwamba ilikuwa ya kijinga.
Hatuna haja ya hoja.
Hebu tu kufanya hili.
Wish tungeanza njia hii.
Ingekuwa mpango rahisi sana kuandika.
Hivyo kuna.
Sasa hebu kwenda juu kwa dirisha terminal yangu, re-kukimbia Clang.
Na hapa sisi kwenda.
Hiyo ilikuwa kweli kasi.
Ni nini hasa ilitokea tu, ingawa?
Naam, sasa mimi itabidi kuongeza line magazeti, ili tuweze kuona.
Hivyo basi mimi kusema printf, hebu sema, mimi niko katika hapa.
Sawa, hakuna vigezo, tutaweza kuondoka ni kama hiyo.
Hebu kuendesha upya kufanya.
Hebu re-kukimbia chorus.
Na kuja juu.
Kuendelea.
Kama kando, kwa nini kuwa si kugonga bado?
kosa segmentation kilichotokea super kufunga kabla.
[Inaudible]
DAVID J. Malan: Hasa.
Hivyo inachukua muda na magazeti.
Ni tu inachukua zaidi ya kazi juu ya sehemu ya kompyuta.
Na huko ni.
Mkato wa kosa.
>> Hivyo taarifa tu jinsi mipango haraka kukimbia.
Kama wewe si kuchapa chochote, super haraka.
Lakini sisi bado got hii kosa segmentation kwa sababu kile kinachotokea?
Naam, kama unafikiri juu ya jinsi ya kumbukumbu ya kompyuta yako ni kuweka nje, hii
hutokea kwa kuwa kuu.
Lakini hapa -
hebu piga tu hii chorus, na hebu piga hii chorus.
Na sasa kama mimi kufanya aesthetics wangu wa kulia, hii ni kwenda tu kusema chorus,
chorus, chorus, chorus, chorus, chorus, chorus, ad nauseum.
Na hatimaye, nini kitatokea?
Kama picha kubwa literally ni hili, ni nini hutokea tu conceptually?
kuongezeka stack lundo.
Au mbaya zaidi, wewe tu overrun kila kitu, ikiwa ni pamoja na sehemu asilia, ambayo ni
zeroes na wale kuwakilisha programu yako.
Kwa kifupi, hii ni super, super mbaya.
Haki?
Mpango wako kuzidi kuwa mbaya nje ya kudhibiti.
Unatumia zaidi njia kumbukumbu kuliko wewe lengo wote kwa sababu ya kijinga
makosa, katika kesi hii.
Au katika kesi hii, kazi sana kwa makusudi kufanyika linalojiita.
Sasa hii si wote mbaya.
Kazi wito wenyewe kweli ina nguvu kubwa
wakati matumizi kwa usahihi.
Mimi si kutumika kwa usahihi hapa.
>> Hivyo hii si wote mbaya.
Lakini ukweli kwamba mimi kweli kamwe kuacha wito mwenyewe ni msingi
udhaifu hapa na mpango huu.
Hivyo ambapo ni sisi kwenda kwa yote haya?
Naam, ni nini kweli yanatokea?
Wakati mimi piga kazi increment, kama sisi walikuwa wakifanya katika mifano hizo,
Nina thamani kama 1 kwamba mimi kupita in
Mimi kupita katika nakala ya namba moja.
Hivyo zifuatazo kinachotokea.
Basi hebu kwenda katika mfano increment.
Na hii guy haki zaidi ya hapa.
Hivyo hapa ni nini kweli yanatokea.
Wakati mimi aitwaye increment, na mimi kupita katika x, pictorially nini
kinachoendelea hapa ni hii -
kama mimi kuwa thamani ya 1 kuhifadhiwa hapa, na mimi kwa kweli kuwaita increment, ambayo
sasa inaitwa chorus -
yeah, kwamba ni kutupa mimi mbali hapa.
Basi hebu piga hii increment.
Na sisi hawajui nini kazi hii ijayo kitakachokuwapo.
Basi nini hasa kinachotokea ni hapa mahali fulani katika kuu, nina chunk ya
kumbukumbu kwamba ni hifadhi ya namba 1.
Wakati mimi kuwaita increment, mimi nina kutumia mwingine chunk ya kumbukumbu, lakini sasa mimi
kuwa na nakala ya 1.
Wakati mimi increment kwamba thamani, hii inakuwa 2 - horribly yameandikwa juu ya
screen hapa.
Lakini basi, kile kinachotokea kwa haraka kama anarudi increment?
Kumbukumbu hii tu anapata mitupu nyuma mfumo wa uendeshaji, ambayo ina maana wote
umefanya kosa ni kitu muhimu.
moja kuwa awali ilikuwa zilizomo katika kuu ni kweli bado kuna.
>> Hivyo ambapo ni sisi kwenda na hili?
Naam, ni zinageuka kuwa katika kumbukumbu una nyuma hii kuunga mlolongo wa
ka kuwa unaweza kuweka mambo in
Na zinageuka kuwa tumekuwa tayari kuona kitu ambacho inahusisha kuweka
mambo nyuma kwa nyuma kwa nyuma kwa nyuma.
Je, ni kamba, kwa kuzingatia wiki moja na sasa wiki mbili?
Hivyo ni tu mkusanyiko wa wahusika.
Hivyo ni zamu nje, kama tu unaweza kuweka namba katika kumbukumbu, vile vile unaweza
kuweka wahusika katika kumbukumbu.
Na mara moja tunaanza wahusika kuweka katika kumbukumbu nyuma kwa nyuma kwa nyuma kwa
nyuma, ni zinageuka kuwa kutumia rahisi ya mambo kama kwa kitanzi au
kitanzi wakati, tunaweza iterate -
kutoka kushoto kwenda kulia juu ya wahusika katika string -
na kuanza massaging yao ndani ya wahusika tofauti kabisa.
inaweza kuwa B. B inaweza kuwa C. Hivyo kwamba hatimaye, tunaweza kuchukua
Kiingereza sentensi ambayo kwa kweli inafanya hisia na kubadilisha kila mmoja wa wale
barua moja kwa wakati mmoja kutembea kupitia kumbukumbu ya kompyuta wetu wa kushoto na
haki ya kweli encrypt.
>> Basi hebu kuchukua yetu dakika tano mapumziko hapa, na wakati sisi kuja nyuma, tutaweza
kuanza mchakato huu wa scrambling habari.
>> Wote haki.
Hivyo kabla ya sisi kupiga mbizi katika baadhi crypto na mambo haya kuitwa arrays, napenda
pause kwa maswali yoyote kwa sababu mimi najisikia kama kweli aina ya msonge baadhi ya
wale mada.
Basi hebu kurekebisha sasa kama tunaweza.
Hivyo sisi tu kuongelea maadili kurudi.
Kuongelea hoja.
Na kuongelea wazo hili, ambayo tutaweza kurudi katika wiki
kuja, ya kuangalia kumbukumbu kama rundo zima la hizi Stacked
trays, hivyo kusema.
Kutoka chini juu juu, vile kwamba kila tray kwamba anapata kuweka kwenye stack inawakilisha
kazi hiyo kwa sasa kuitwa.
Maswali yoyote?
Hivyo jinsi juu - basi mimi jaribu kuuliza swali.
Mimi kushika kuiaribu kwamba, lakini sasa it's - you've wote kuonekana uso wa kijana.
Hivyo tutaweza kuja nyuma na kwamba.
>> Hivyo basi mimi kuuliza swali hapa.
Hebu kurahisisha hii nyuma ilikuwa ni nini kabla ya baadhi ya Q & A. yetu mapema
Na ukweli kwamba increment ina mabano wazi, int idadi, imefungwa
mabano.
Je idadi int kuwakilisha?
[Inaudible]
DAVID J. Malan: hoja.
Sawa, lakini yale ya hoja?
[Inaudible]
DAVID J. Malan: Samahani, nini hiyo?
SPIKA 3: Kitu wewe kupita in
DAVID J. Malan: Okay.
Hivyo kitu ambacho wewe kupita in
Na kwa ujumla zaidi, ni tu pembejeo.
Kama wewe ni kuandika kazi na madhumuni kwamba kazi katika maisha ni kufanya
kitu kidogo tofauti kila wakati kuitumia, basi njia pekee kwa
kwamba kutokea kwa kweli inaweza kuonekana kuwa kutoa ni pamoja na pembejeo ili
wanaweza kufanya kitu tofauti na pembejeo kwamba kila wakati.
>> Hivyo haja ya kutaja mambo mawili wakati kazi inachukua pembejeo.
Unahitaji kubainisha jina kwamba unataka kutoa mchango kwamba, rena kwa
urahisi wako mwenyewe ili uweze rejea ni katika kazi kwamba wewe
mwenyewe ni kuandika, kama mimi hapa katika mstari 32.
Lakini pia unahitaji kwa kutaja aina yake kwa sababu C ni lugha ya programu
kwamba tu inahitaji
kwamba kama unataka variable, mniambie kompyuta nini
data aina hiyo ni,
katika sehemu kubwa hivyo kwamba anajua bits ngapi kwa
kutenga kwa variable kwamba.
Kwa sababu inaweza kuwa sita -
sorry, itakuwa si sita.
Inaweza kuwa 16.
Inaweza kuwa 8.
Inaweza kuwa 32, hata 64.
Lakini kompyuta mahitaji ya kujua.
Sasa int upande wa kushoto inawakilisha nini, kwa kulinganisha?
[Inaudible]
DAVID J. Malan: Nini hiyo?
[Inaudible]
DAVID J. Malan: aina ya kazi na, zaidi hasa,
aina ya pato lake.
Haki.
Hivyo wakati kitu katika mabano inawakilisha mchango wake, kama wapo,
kitu kwa upande wa kushoto inawakilisha matokeo yake.
Na katika kesi hii, inaonekana increment anarudi int.
Na hivyo int ni aina ya kurudi kwa kazi hii.
>> Nini maana ya kurudi?
Literally, wewe kutumia kurudi Keyword.
Na kisha kama nini wewe ni kurudi na haki ya Keyword ni
integer, basi hakika hivyo ni sambamba na kile sisi ahadi.
Unaweza si kufanya kitu kama hii -
hello, dunia -
sababu ni kamba.
Ni dhahiri kuwa si integer.
Hivyo katika muda mfupi, ni mzigo kweli juu yetu, programu, kwa kuwa maalum kama
kwa nini tuko kurudi na kisha kweli kwenda kuhusu kurudi yake.
Na kisha kufanya tad zaidi wazi muktadha -
huko yeye ni tena.
muktadha -
mshangao kubwa kuja muda tu.
muktadha hapa sasa ni kwamba kumbukumbu ya kompyuta yako ni, tena,
gigabyte, gigabytes mbili, chochote.
Labda ni zaidi.
Labda ni kidogo.
Lakini kompyuta maoni yake kama kuwa na sehemu mbalimbali.
Kitu huenda chini pale.
Kitu kingine huenda juu huko.
Mambo mbalimbali huenda katikati.
Na leo, sisi tu kuanza kuwaambia hadithi hii.
>> Lakini tutaweza kuja nyuma wakati huu zaidi.
Kwa sasa, kipande tu ya kumbukumbu sisi kweli huduma kuhusu ni sehemu asilia
kwa sababu tu kwamba inawakilisha zeroes na wale
kwamba Clang ina outputted.
Hivyo wakati wewe kukimbia amri katika keyboard kama a.out, au wewe mara mbili
bonyeza icon kwenye Mac OS au Windows, programu yako s kubeba kutoka ngumu yako
gari ndani ya RAM.
Na ni plopped wakati juu ya RAM ya kompyuta yako, hivyo kusema.
Sasa wakati huo huo, kama mpango wako na kuanza mbio kuu anapata kuitwa katika
mpango aliandika au Microsoft mpango au Apple aliandika, yoyote ya yake
vigezo mitaa kuishia chini huko chini ya kumbukumbu ya kompyuta yako.
Lakini kama kuu wito kazi nyingine ya kwamba yenyewe ina vigezo au
hoja, wanaishia hapo juu.
Na kama kazi kwamba wito kitu, wanaishia hapo juu,
juu yake, juu yake.
Na mara moja tu kazi inafanywa utekelezaji gani stack ya trays, hivyo
kuzungumza, kuanza kupata chini na chini.
Na hii ni nini basi, kwa kifupi, anaelezea kwa nini, wakati wewe piga Cube -
au wewe piga increment -
wewe ni kupita katika nakala ya thamani.
Na nini maana ya pictorially ni kwamba wewe ni literally kuandika
namba 1 katika sehemu nyingine ya kumbukumbu, kubadilisha kwamba 1-2, katika kesi ya
increment -
au 8, katika kesi ya mchemraba -
na kisha kutupa kwamba kumbukumbu mbali mara increment au mchemraba
kazi anarudi.
>> Swali.
[Inaudible]
DAVID J. Malan: wapi - vigezo kimataifa ni kuhifadhiwa katika nini
sasa inaitwa data initialized au data uninitialized.
tofauti kuwa, kama una variable kimataifa, na wewe ni hawawajui
mara moja kwa thamani sawa na saini, inaishia katika juu huko.
Na kama wewe tu kusema int x semicolon na thamani hakuna, ni mwisho juu kidogo
chini katika RAM tu kwa mkataba.
Maswali mengine.
Wote haki.
>> Hivyo picha hii kuja nyuma kama sisi kupata nguvu zaidi na nini tunaweza kufanya
na kompyuta.
Lakini kwa sasa, hebu kuwa intro mafupi kwa cryptography, aina maalum ya
cryptography kwamba haina kutatua matatizo yote ya duniani lakini haina kutatua
baadhi yao.
Katika kesi hii hapa, tuna kitu kinachoitwa siri muhimu cryptography.
Na ufunguo wa siri cryptography, kama jina linavyosema, hupata usalama wake
kutoka siri.
Hivyo kwa mfano, kama wewe uko nyuma katika shule ya daraja na wewe ni kupita
kidogo siri upendo barua kwa mvulana au msichana wewe ni juu ya kusagwa - kama wewe
alitaka kupita kwamba kwa njia ya watazamaji, wewe pengine bila kuandika
kumbuka vile katika Kiingereza au lugha yoyote yako ya asili ni, badala yake, ninyi
wapate encrypt yake.
Au unaweza kutuma tu ujumbe wa maandishi yao siku hizi.
Lakini wewe ili kweli kupita yao note katika darasa.
Na kwa kufanya hivyo kwa usalama, kwa namna kwamba rafiki yako na mwalimu
sijui nini wewe kuandika, unaweza kuja na haki rahisi
algorithm -
vijana ingawa unaweza kuwa -
tu kinyang'anyiro maneno.
Hivyo badala ya kuandika, unaweza kuandika B. Badala ya B, unaweza kuandika
C. Badala ya C, unaweza kuandika D, na kadhalika.
Au unaweza kuja na tafsiri ya kisasa zaidi ya barua
kwa barua tofauti.
Lakini catch ni mvulana au msichana ambaye wewe ni kutuma kumbuka hii inahitaji
kujua kitu.
Ambayo ni nini, ni wazi?
Kama, nini siri yako ni.
Kama, nini ni kwamba kati ya ramani Kama na Bs na Cs na Ds?
Je, ni kuongeza tu moja, ili kuzungumza, kwa kila mmoja wa barua kwenda kutoka
A na B, B na C?
Je, ni ngumu zaidi kuliko hiyo?
Hivyo wewe na kuponda yako haja ya kuwa na habari hii kwa siri.
Lakini kuna aina ya samaki wanaovuliwa-22 hapa.
Kama hii ni mara ya kwanza wewe ni kutuma barua hii upendo kwa njia ya
darasa, ni jinsi gani kwamba kijana au msichana kwenda kujua nini siri hata ni?
Hivyo ufunguo wa siri crypto haina kutatua matatizo yote ya dunia.
Na kuna uhusiano kweli kwamba tutaweza kurudi kuelekea
muhula wa mwisho.
>> Vile vile, na hakuna hata mmoja wetu pengine milele alimtuma -
vile vile, je, wengi wetu si kujua kwamba mtu anafanya kazi, kwa mfano, katika
Amazon.com.
Na bado, wengi wetu pengine kununuliwa stuff saa Amazon.com.
Na tumekuwa kufundishwa kwa kudhani kwamba hawa e-biashara
mashirikiano ni salama.
Haki?
URL pengine anasema https.
Kuna labda silly kidogo kufuli icon mahali fulani.
Kuna baadhi ya aina ya cryptography kupata kadi yako ya habari
kati ya wewe na Amazon.com.
Na bado, kama cryptography inahusisha kujua baadhi ya siri, na bado mimi si
kujua mtu yeyote katika Amazon, na nimekuwa hakika si mpangilio wa aina yoyote
siri kwa mtu saa Amazon, ni jinsi gani kompyuta yangu au browser yangu kufanya hili?
Naam, zinageuka kuna aina nyingine ya cryptography kabisa kwamba kutatua
kwamba tatizo.
Lakini kwa leo, tutaweza kuzingatia moja rahisi, ambapo unaweza kupanga katika
mapema ili kujua baadhi ya siri, kama plus 1 au baadhi ya ramani kati Kama na Bs.
>> Na mchakato wa cryptography ujumla unahusisha hii.
Una baadhi Nakala wazi, taswira ya hapa upande wa kushoto.
Wewe kukimbia kwa njia ya aina fulani ya algorithm au utaratibu
kwa encrypting yake.
Labda hiyo tu inakuwa B, B inakuwa C. Na kisha kuishia na
cipher maandishi.
Wakati huo huo, mara kuponda yako inapata kumbuka siri, yeye au yeye ana kisha
kuisimbua kwa ujumla kupunguza kwamba algorithm ili kupata
nyuma Nakala wazi.
Sasa kuna incarnations ya kimwili ya hili.
Kwa mfano, hii ni kidogo siri avkodare pete.
Na hii ni pete katika maana ya kwamba kuna wawili dials hapa.
On pembezoni nje ya jambo hili, kuna barua kupitia Z,
ingawa wao ni ili random.
Na juu ya ndani, kuna baadhi ya kweli idadi, kwamba vile na hii
pete, unaweza aina ya kugeuka nje lakini si ndani ili yaendane
idadi na barua.
Na katika video uko juu ya kuona - baadhi ya ambayo unaweza tumeona 24/7
karibu msimu wa Krismasi kutoka movie inayoitwa Story Krismasi.
Utaona kwamba Ralphie mdogo alikuwa na shauku kubwa kufikiri kile kidogo yatima
Annie ujumbe wa siri ilikuwa yeye alikuwa aliwasiliana, nadhani, katika
kuunda ya ujumbe numeric juu ya sanduku Serial.
Na wewe alikuwa na kujilimbikiza kadi zote kidogo kwamba alikuja
katika sanduku ya nafaka.
Ilikupasa mail wasitoke
You alikuwa kupata nyuma siri avkodare pete, hivyo kwamba unaweza hatimaye takwimu
nje nini ramani ni kati ya herufi na namba,
au barua na barua.
Basi, mimi kukupa hii clip fupi kutoka Story Krismasi kuwahamasisha pset 2 na
mjadala wetu, katika wakati huu, ya arrays.
Hivyo hapa tuna Ralphie.
>> [VIDEO avspelning]
-Ijulikane kwa wote na sundry kwamba Parker Ralph inatolewa kuteuliwa
mwanachama wa Little Circle Yatima Annie Secret na ni haki ya wote
heshima na faida zinazotokea lazimishwa.
-Imesainiwa, Little Yatima Annie.
Countersigned, Pierre Andre!
Katika wino!
Heshima na faida, tayari katika umri wa miaka tisa.
Haya, hebu kupata tarehe na hayo.
Sihitaji jazz kwamba wote kuhusu smugglers na maharamia.
-Sikiliza kesho usiku kwa adventure kuhitimisha ya Black
Pirate meli.
Sasa ni wakati kwa ajili ya ujumbe wa siri Annie kwa wewe wanachama
ya Circle Secret.
Kumbuka, watoto, wanachama tu wa Circle Annie ya siri unaweza Decode
Annie ya siri ya ujumbe.
Kumbuka, Annie ni kutegemea wewe.
Kuweka pini wako B2.
Hapa ni ujumbe.
12, 11 -
-I am katika mkutano wangu kwanza siri.
-14, 11, 18, 16 -
-Pierre ilikuwa katika usiku wa leo kubwa sauti.
Mimi naweza kukuambia kwamba ujumbe usiku huu ilikuwa kweli ni muhimu.
-3, 25.
Hiyo ni ujumbe kutoka Annie mwenyewe.
Kumbuka, usimwambie mtu yeyote.
-90 Seconds baadaye, mimi niko katika chumba tu katika nyumba ambapo kijana wa tisa
wanaweza kukaa katika faragha na Decode.
Aha, B. nilikwenda ijayo.
E. neno la kwanza ni kuwa.
S. Ni rahisi alikuwa anakuja sasa.
U.
-Oh, kuja juu, Ralphie.
I got kwenda.
-I'll kuwa na haki chini, ma.
-Gee whiz.
-T, O. Kuwa na uhakika wa.
Kuwa na uhakika wa nini?
Nini ilikuwa Little Yatima Annie anajaribu kusema nini?
Kuwa na uhakika wa nini?
-Ralphie!
Randy ina got kwenda.
Je, tafadhali kuja nje?
-All haki, ma.
Nitakuwa haki ya nje.
-Mimi nilikuwa kupata karibu sasa.
mvutano ilikuwa ya kutisha.
Ni ipi?
hatima ya sayari inaweza hutegemea katika mizani.
-Ralphie!
Randy got kwenda.
-I'll kuwa haki ya nje, kwa kelele kubwa.
-Gee, karibu huko.
Vidole yangu akaruka.
Akili yangu ilikuwa mtego chuma.
Pore ​​kila vibrated.
Ilikuwa karibu wazi.
Ndiyo, ndiyo, ndiyo, ndiyo.
-Kuwa na uhakika na kunywa Ovaltine yako.
Ovaltine?
kibiashara crummy?
Mwana wa bitch.
[Mwisho VIDEO avspelning]
>> DAVID J. Malan: Hivyo kuna tuna cryptography.
Hivyo ni jinsi katika kompyuta tunaweza kwenda kuhusu kutekeleza au
anayewakilisha mambo kama haya?
Naam, tunahitaji njia ya kuonyesha wenyewe kidogo zaidi kuliko smidigt
vigezo yetu hivi sasa na kuruhusiwa.
Tulikuwa ints.
Tulikuwa chars.
Tulikuwa ikifungwa DOUBLES na na wengine wachache.
Lakini hayo ni vipande binafsi ya kumbukumbu kwamba si kweli kuruhusu sisi
kueleza mambo kama maneno na sentensi na misemo.
Hakika, tumekuwa aitwaye mambo kama hayo masharti.
Lakini sisi aliahidi kwamba hii ni kweli tu kurahisishwa CS50
maktaba kwamba sisi ni wanaotaka peel nyuma.
>> Na hivyo hebu kuanza kufanya hivyo hapa.
Hebu kwenda mbele na kufungua faili -
wote wa files hizi zinapatikana online kama kawaida -
kuitwa array.c kutatua tatizo lisilohusiana na masharti lakini kwamba inatengeneza
picha hapa ya jinsi sisi inaweza kutumia kitu kinachoitwa safu.
safu ni aina data.
Ni aina ya kutofautiana, wa aina, ambayo ina aina nyingi data ndogo
ndani yake nyuma kwa nyuma kwa nyuma kwa nyuma.
Hivyo kwa mfano, kama tunataka kuandika mpango kidogo kwamba anatoa yako
Quiz wastani kwa ajili ya kozi kama 50 ambayo ina mbili Quizzes, unaweza kwa urahisi sana
kuandika mpango huu - msingi hata kwenye baadhi ya nyenzo ya wiki iliyopita -
kwa kutumia GetInt na michache ya vigezo.
Int quiz1, int quiz2, na ni pretty moja kwa moja.
Ni labda 10, 20 mistari ya kificho, max, kutekeleza programu akiwauliza
mtumiaji kwa alama Jaribio mbili na kisha computes wastani yao kwa kuziongeza
pamoja, kugawa na mbili, na kisha kuchapisha matokeo.
Sisi inaweza pengine kufanya hivyo pretty urahisi sasa baada ya
baadhi idadi ya dakika.
>> Lakini tatizo ni kwamba tuseme kwamba alikuwa na 50 tatu Quizzes au nne.
Tuseme kwamba ulitaka kutumia mpango huo kwa ajili ya darasa kwamba alikuwa na
kila wiki Quizzes.
Fikiria juu ya darasa kwamba ina kila wiki Quizzes.
Kama kuna kama wiki 16 au hivyo katika muhula, sasa una vigezo 16 -
int quiz1, int quiz2, int quiz3, int quiz4.
Haraka kama wewe kuanza kuona hii redundancy, hii kuiga na pasting
ya maadili, ni lazima kuanza kufanya unataka kulikuwa njia bora zaidi.
Na nashiriki, kwa sababu ya arrays, kuna.
Basi hebu kufanya hili.
Kwanza, napenda kuanzisha kitu rahisi sana kwamba tumekuwa si kutumika hivi sasa,
lakini utaona ni mara kwa mara katika code.
Hii ni nini ujumla huitwa mara kwa mara.
Hivyo ni mara kwa mara katika maana ya kwamba thamani hii kamwe mabadiliko.
mkataba wa binadamu wakati wa kujenga mara kwa mara ni kutumia wote mtaji
barua, ili tu kwamba ni kweli anasimama nje katika code yako.
Na Keyword maalum kwamba matumizi katika C ni # define.
Hivyo kama wewe kusema # define, basi nafasi, basi neno kwamba unataka kutumia kwa
jina mara kwa mara, na kisha thamani ya mara kwa mara.
Hivyo taarifa, hii ni tofauti na assigning kitu kutofautiana.
Hakuna alama ya usawa.
Kuna semicolon hakuna.
Hii ni nini ujumla inayojulikana kama agizo preprocessor, lakini zaidi juu ya
kwamba wakati mwingine.
>> Kwa sasa, hii inajenga thamani isiyobadilika kuitwa Quizzes ambaye halisi
thamani numeric ni 2.
Hivyo unaweza kuona mahali popote Quizzes, Quizzes, Quizzes katika faili hii, hiyo ni
idadi tu 2.
Sasa, kama mimi kuangalia kuu sasa, hebu angalia jinsi hii matendo.
Mara ya kwanza, inaonekana kidogo cryptic.
Lakini zote stuff kutoka wiki moja.
Uliza mtumiaji kwa ajili ya darasa.
Tutafanyaje hili?
Naam, katika mstari 22 -
hii ni kweli sehemu Juicy -
Mimi kutangaza kuelea, lakini si tu kuelea moja.
Mimi kutangaza, badala yake, safu ya maadili yaliyo uhakika.
Hiyo variable ni kwenda kuitwa darasa, kama alisema hapa.
Lakini kipande tu ya syntax mpya basi ni haya mabano mraba, ukweli
kwamba nilivyosema darasa kuelea na kisha bracket wazi na kisha nambari.
Ilani, kama hii ni mara kwa mara, hii ni kama sisi alifanya hivyo.
Hii ina maana hey kompyuta, nipe ikifungwa mbili, na hebu pamoja kuwaita
nao darasa.
Hii ni tofauti na mchakato mengi zaidi tedious kama hii.
Kuelea grade1, kuelea grade2, na kadhalika.
Hivyo safu inaruhusu sisi kutekeleza wazo hili lakini kiasi kidogo messily, katika
namna ambayo tunaweza kuandika moja mstari wa kanuni badala ya, kusema, 16 kwa 16
wiki muhula.
Kwa hiyo mimi sitaki ngumu-code 2 kwa sababu kama wewe kufikiri juu ya hili sasa
mantiki - tuseme mwaka ujao CS50 mabadiliko ya 3 Quizzes badala yake.
Na mimi alikuwa na idadi 2 hapa.
Mimi nilikuwa na idadi 2 hapa.
Inakuwa tedious sana na rahisi sana screw up na ajali kubadili
moja thamani ya 3 na miss baadhi thamani nyingine ya 2.
Hivyo nina kwenda kwa badala abstract hii mbali na kutumia hii mara kwa mara kwamba, kama yake
jina linavyosema, mabadiliko kamwe.
Na sasa, bila kujali kama tuna tofauti Quizzes mwaka huu au ujao, mimi
tu kuwa na mabadiliko hayo katika sehemu moja, hapa juu kwa juu.
>> Basi hiyo ni wote mara kwa mara ni.
Wakati huo huo, kipengele mpya conceptual ni ile ya safu.
Hivyo mabano mraba nipe ikifungwa hii wengi na lets mimi pamoja
kuwaita darasa hapa.
Hivyo sasa hebu angalia nini mimi kwenda kufanya.
Hapa katika mstari 24 ni mwanzo wa kwa kitanzi.
Hii ni kitu kweli dhana.
Ni tu kwa kutumia Quizzes badala ya idadi ngumu-coded.
Lakini kuna kitu kielimu tofauti huko kutoka wiki iliyopita.
Hii ni printf.
Hivyo printf ("chemsha bongo% idadi d ya% d") kwa sababu mimi nataka tu magazeti nje nipe Quiz
namba moja wa mbili na kisha mbili wa mbili.
Hivyo hii ni rena kitu aesthetic.
Lakini sehemu ya kuvutia sasa ni katika mstari wa 27.
Ili kujaza katika moja ya placeholders mbili na floating-kumweka
thamani, wewe tena kutumia mabano mraba.
Katika kesi hiyo, mimi nina kutumia i kwa sababu hii kwa kitanzi imeanza na i sawa na
thamani gani, inaonekana?
0.
>> Kadhalika iteration kwanza ya kitanzi hii, ni kama kwamba mimi
aliandika hii katika code.
Lakini juu ya iteration pili ya kitanzi hii, ni kama kwamba mimi
aliandika hii katika code yangu.
Lakini ukweli kwamba mimi nina kutumia kutofautiana ni kamili kwa sababu, kama jina
anapendekeza, ni tofauti na thamani yake juu ya kila iteration.
Hivyo nina kujaza hii safu moja doa kwa wakati.
Je safu hii kuangalia kama?
Naam, sababu nilitoa hii super rahisi Mstatili juu ya screen hapa
kabla ilikuwa kwa sababu hiyo.
safu ni tu chunk ya kumbukumbu na kufuatiwa na mwingine chunk ya kumbukumbu,
kufuatiwa na mwingine chunk ya kumbukumbu, na kadhalika.
Hivyo kama safu yangu ni ya kawaida 2, katika kesi hii hapa, wote mimi itakuwa kufanya kwa
kuandika katika alama yangu quiz, kama hapa.
I got 100 juu ya hili.
Na kisha mimi got 99 juu ya hili.
Kisha kumbukumbu hii inaweza hata kutumika kwa sababu nimekuwa tu aliuliza
kompyuta kwa ajili ya safu ya ukubwa 2.
Wale mraba bado kuna.
Haki?
Bado una mbili gigabytes ya RAM, hata kama wewe tu
kuuliza kwa ikifungwa mbili.
Hivyo wazo nyuma ya arrays ni kwamba kompyuta tu huchukua chunk ya kumbukumbu
na kisha apportions vipande vidogo nyuma kwa nyuma kwa nyuma kwa nyuma.
Na hivyo ndiyo safu yote ni.
Ni chunk contiguous ya kumbukumbu, ndani ya ambayo unaweza kuweka mambo.
>> Sasa hii hutokea na kisha kufanya baadhi tu arithmetic boring.
Kama mimi kitabu chini hapa, hii ni pale ambapo mimi basi iterate juu ya safu.
Mimi kuja na summation wa maadili yote katika safu.
Na kisha mimi kutumia kazi pande zote hapa kwa kweli kufanya
sum kugawanywa na Quizzes.
Lakini ngoja kupitisha mkono wangu kwamba kama aina ya hesabu za kutosha kwa sasa.
Lakini yote anafanya kwa ajili yangu hatimaye ni kompyuta wastani.
Hivyo kwanza Jaribio plus jaribio la pili, kugawanywa na 2, na kisha kuchapisha
ni nje kama int.
>> Lakini hebu sasa ya mpito kwa mfano tofauti inayoitwa string1,
ambayo inajenga picha sawa lakini masharti ya kutumia.
Hebu kwenda mbele na kurahisisha hii kwa muda tu.
Na umsamehe indentation kwa sasa.
Tangazo katika mstari 19 ya mfano huu, mimi kupata kamba kutoka kwa mtumiaji.
Lakini taarifa nini mimi ijayo kufanya katika mistari 22 na kuendelea.
Mimi kwa kweli iterating kutoka i hadi - na hii ni hila mpya -
strlen, kamba urefu.
Hii ni kazi ambayo inakuja na C kwamba kama wewe kupita kamba, inavyo
jinsi wengi wahusika ni katika kamba hiyo.
Hayo ni yote.
ukweli kwamba ni strlen badala ya urefu wa kamba ni kwa sababu tu ni
zaidi succinct.
Miaka 30 iliyopita, watu walipenda kuandika mambo kama succinctly iwezekanavyo.
Hivyo tumekuwa agizo hilo mkataba hapa.
i + + tu ina maana increment i katika kila iteration.
Na sasa taarifa hii, ambayo ni kweli kuvutia.
Hivyo katika mstari 24, nasema kompyuta, nipe tabia, nane
bits, na simu yake c.
Lakini ni nini hii juu ya upande wa kulia akisema?
Kwa Kiingereza, ni nini kwamba kuwakilisha?
[Inaudible]
DAVID J. Malan: Hasa.
Nipe tabia ya kwanza katika safu.
Au zaidi kwa ujumla, nipe tabia i-th katika safu.
Na kutambua ni muhimu sasa kwamba kama wanasayansi wa kompyuta, sisi ni kweli
kuhesabu toka 0.
Huna busara sasa kuanza kufanya hili.
Sasa una kuishi kwa mujibu wa matarajio ya kompyuta na
kuhesabu kutoka sifuri kwa sababu [0] ni kwenda kuwa ya kwanza
tabia katika kamba.
[1] ni kwenda kuwa ya pili.
[2] ni kwenda kuwa ya tatu, na kadhalika.
Hivyo mpango huu, ikiwa mimi kukusanya yake - hii ni mara ya pili, string1.
>> Hivyo kufanya string1.
Na sasa mimi kukimbia string1 katika terminal dirisha yangu.
Ni kusubiri kwa ajili ya pembejeo, hivyo mimi nina kwenda aina katika, sema, Daudi.
Kuingia.
Na sasa ni Prints DAVID wote juu ya mistari tofauti kwa sababu
taarifa nini mimi kufanya.
Mimi nina uchapishaji moja tabia kwa wakati.
Sasa sisi si kuingia kwa undani juu ya leo hii.
Lakini mimi ilifutwa wakati iliyopita hundi hii hapa.
Ni zinageuka kuwa kama mtumiaji ni misbehaving, adversarial, au tu
kuchanganyikiwa, unaweza kweli kushindwa kutoa kamba ya urefu fulani.
Kama hit muhimu vibaya kwenye keyboard, unaweza kutoa
hakuna kamba wakati wote.
Au kama wewe ni malicious, unaweza kujaribu kuweka katika thamani ya gigabyte ya
insha kujaza hii kamba.
Na kama kompyuta anaendesha nje ya kumbukumbu, zinageuka kuwa tunakwenda
kupata nyuma thamani hii maalum iitwayo null.
Hivyo kwa sasa, tu kujua kwamba kuna thamani hii maalum iitwayo null kwamba
itaruhusu sisi kuangalia wakati tuko nje ya kumbukumbu, miongoni mwa mambo mengine.
>> Lakini kama mimi kufungua sasa string2, taarifa moja tofauti hapa.
Notice moja tofauti hapa na string2.
Kwa string2, hii kwa kitanzi ni tofauti kidogo.
Hebu kufuta nulls ili tuweze kuzungumza kuhusu wale wakati mwingine.
Lakini nini tofauti kuhusu kwa kitanzi wakati huu?
Na siwezi kurejea mfano uliopita.
Basi hiyo ni toleo mbili.
Hili ni toleo moja.
Moja, mbili, moja mbili.
Hivyo wito strlen ni wapi?
Ni katika sehemu ya kwanza ya kwa kitanzi.
Mawazo yoyote kama kwa nini mimi kufanya hili?
Yeah.
[Inaudible]
DAVID J. Malan: Hivyo sisi wala kuwaita kazi kila wakati.
Hasa.
Kumbuka kutoka kwa matanzi kwamba wao ni super rahisi mara moja aina ya
kuelewa kwamba hii ni initialization,
hali, na update.
Tatizo ni kwamba hali hufanyika kwenye kila
iteration ya kitanzi.
Na hivyo katika mfano huu hapa, ni nini mbaya kuhusu ukweli
kwamba hii ni hali yangu?
Wewe ni wito strlen tena na tena na tena.
Lakini mara nimekuwa typed katika DAVID, urefu wa kamba kwamba ni tano.
Na si kwenda na mabadiliko juu ya kila iteration ya kitanzi kwa sababu
kamba bado ni D-A-V-I-D. Hivyo hii ni ladha katika nini kinaendelea kuwa
inazidi muhimu wazo inayojulikana kama uamuzi wa kubuni, ambapo - si tu
kufanya kompyuta kufanya kazi ya lazima.
>> Sasa tu kama sneak preview ya pset 2, pset 2 katika toleo la kawaida ni
kwenda changamoto kweli kutekeleza baadhi ya idadi ya ciphers, baadhi
idadi ya algorithms kuficha, ili uweze wote Simba na decrypt
siri ujumbe, kiasi kama Ralphie moja huko Decoded.
Katika toleo la hacker ya pset 2, tunakwenda kwenda kidogo zaidi.
Sisi ni kwenda mkono wewe faili kutoka mfumo halisi ya kompyuta ambayo ina
zima rundo la usernames na halisi nywila encrypted, na changamoto
kwa ajili ya toleo hacker ni kwenda kuwa kwa kuvunja nywila hizo na takwimu
nje nini cryptography au nini siri ilitumika kwa kweli
kuzalisha nywila hizo.
Na sisi ni kwenda kufanya hivyo kwa kutumia kipengele mpya hapa ya C kwamba nita kupa
wewe tu demo ya, unaojulikana kama hoja amri-line.
>> Hivyo ni zamu nje, kama baadhi ya unaweza tumeona katika sehemu au katika vitabu,
kuu haina daima kuwa utupu katika mabano.
Ni zinageuka kuwa kuu pia inaweza kuandikwa kama hii, kwa hoja mbili,
argc na argv, ambapo argc ni idadi ya maneno ambayo unapoandika baada ya
jina mpango juu ya mstari amri yako.
Na argv ni maneno halisi.
Na kama mabano mraba kuna kupendekeza, argv ni inaonekana safu.
Ni kwenda kuwa string baada ya kamba baada ya kamba katika kumbukumbu.
Basi nini tunakwenda kuwa na uwezo wa kufanya, kwa kuanzia na pset 2, ni
kitu kama hiki.
Kama mimi kufanya argv1, ambayo ni mfano tutaweza kurudi Jumatatu, na kukimbia
hiyo, taarifa kwamba haionekani kufanya chochote bado.
Ni tu Prints nje ya jina lake mwenyewe.
Lakini kama mimi kusema kwaheri darasa, taarifa kwamba mpango huu inaonekana iterates
juu ya kila moja ya maneno kwamba walikuwa typed katika haraka.
Na njia ambayo sisi kupata maneno kwamba mtumiaji ana
typed katika haraka ni kwa kubadilisha kuu, kuanzia mwishoni mwa wiki hii, kutoka int
kuu (utupu) kwa int kuu (argc, argv).
Na hivyo kuzaliwa hoja mstari amri.
Na mara moja kupata kweli kisasa katika hili, wewe utakuwa na uwezo wa kuandika
kweli trippy programu, kama vile hii moja hapa, ambayo inakwenda juu na zaidi ya
baadhi ya utendaji tumefanya hivi sasa lakini yote kabisa nguvu.
>> Hivyo tutaweza kuondoka na hii kwenye screen.
Na sisi kuona juu ya Jumatatu.