>> [Music kucheza]
>> DAVID J. Malan: zote haki.
Hii ni CS50 na hii ni mwanzo wa Wiki 2.
Na itabidi kukumbuka kwamba zaidi ya kipindi cha wiki kadhaa,
tumekuwa kuanzisha kompyuta sayansi na, kwa upande wake, Programu.
>> Na tukaanza hadithi kwa njia ya Scratch, lugha ambayo graphical
kutoka MIT Media Lab'S.
Na kisha hivi karibuni zaidi, wiki iliyopita, hatukufanya
kuanzisha higher-- a Lugha ngazi ya chini inayojulikana
kama C, kitu ambacho ni rena textual.
Na kwa kweli, mara ya mwisho sisi kutalii katika muktadha huo
idadi ya dhana.
>> Hii, kukumbuka, alikuwa sana mpango wa kwanza sisi inaonekana katika.
Na mpango huu, kabisa tu, Prints nje, "hello, ulimwengu."
Lakini kuna mambo mengi Wanajidai uchawi kinachoendelea.
Kuna # Pamoja huu na mabano haya angle.
Kuna int.
Kuna (utupu).
Kuna mabano, curly braces, nusu colons, na hivyo zaidi.
>> Na hivyo, kukumbuka kuwa sisi ilianzisha Scratch
ili tuweze, walau, kuona nyuma kwamba syntax, mambo ambayo ni ya kweli si
yote kielimu kuvutia lakini mapema
ni, kabisa, kidogo Tricky wrap akili yako karibu.
Na kwa kweli, moja ya kawaida mambo mapema katika darasa programu,
hasa kwa wale chini starehe, ni kupata imechanganyikiwa kutokana na
na tripped up na kisintaksia fulani makosa, sembuse makosa mantiki.
Na hivyo miongoni mwa malengo yetu leo, kwa kweli, mapenzi
kuwa kwa kuandaa kwa baadhi mbinu utatuzi wa matatizo kwa jinsi
bora kutatua matatizo yao wenyewe katika mfumo wa debugging.
Na itabidi kukumbuka, pia kwamba mazingira ambayo sisi ilianzisha
mara ya mwisho ilikuwa inaitwa CS50 IDE.
Hii ni programu mtandao msingi kwamba inaruhusu wewe mpango katika wingu,
hivyo kusema, wakati kutunza yote ya yako files pamoja, kama sisi tena itakuwa leo.
Na kukumbuka kuwa sisi upya mada hizi hapa,
kati yao kazi, na tanzi, na vigezo, na maneno Boolean,
na masharti.
Na kwa kweli chache zaidi kwamba sisi kutafsiriwa kutoka katika ulimwengu wa Scratch
ulimwengu wa C.
>> Lakini jengo la msingi vitalu, hivyo kusema,
walikuwa kweli bado huo wiki iliyopita.
Kwa kweli, sisi kweli tu alikuwa tofauti puzzle kipande, kama wewe.
Badala ya kuwa zambarau kuokoa kuzuia, sisi badala
alikuwa printf, ambayo ni hii kazi katika C kwamba
utapata magazeti kitu na muundo ni juu ya screen.
Sisi ilianzisha CS50 Maktaba, ambapo
na sasa ovyo get_char yako, na get_int, na get_string,
na wachache kazi nyingine kama vizuri, kupitia ambayo unaweza kupata pembejeo
kutoka mtumiaji keyboard mwenyewe.
Na sisi pia alichukua kuangalia mambo kama bool these-, na char,
na mbili, kuelea, int, long_long kamba.
Na kuna hata aina nyingine data katika C.
>> Kwa maneno mengine, wakati wewe kutangaza kutofautiana kuhifadhi baadhi ya thamani,
au wakati wewe kutekeleza kazi kwamba anarudi baadhi ya thamani,
unaweza bayana nini aina ya thamani kwamba ni.
Je, ni kamba, kama mlolongo wa wahusika?
Je, ni idadi, kama integer?
Je, ni hatua yaliyo thamani, au kama?
Hivyo katika C, tofauti Scratch, sisi kweli alianza kutaja aina gani ya data
tulikuwa kurudi au kutumia.
>> Lakini, bila shaka, sisi pia mbio katika mipaka ya baadhi ya msingi ya kompyuta.
Na hasa, hii lugha C, kukumbuka
kwamba sisi alichukua kuangalia integer kufurika, ukweli
kwamba kama wewe tu na kiasi kidogo cha kumbukumbu
au, hasa, idadi mahususi ya bits, unaweza kuhesabu tu ya juu mno.
Na hivyo sisi inaonekana katika mfano huu hapa ambapo counter katika ndege,,
kwa kweli, kama mbio kwa muda wa kutosha itakuwa kufurika na kusababisha programu
halisi ya kimwili makosa uwezo.
>> Sisi pia inaonekana katika yaliyo hatua kutokuwa sahihi, ukweli
kwamba pamoja na tu idadi finite ya bits, kama ni 32 au 64,
unaweza tu kutaja namba nyingi baada ya uhakika decimal, baada ya ambayo
kuanza kupata imprecise.
Hivyo kwa mfano, moja ya tatu katika dunia hapa, katika dunia yetu binadamu,
tunajua ni tu idadi ya usio ya 3s baada ya uhakika decimal.
Lakini kompyuta Unaweza si lazima kuwakilisha idadi ya usio wa idadi
kama wewe tu kuruhusu baadhi kiasi kidogo cha habari.
>> Hivyo si tu kwamba sisi kuvipa wewe pamoja na nguvu zaidi katika suala
jinsi unavyoweza kueleza mwenyewe katika keyboard katika suala la programu,
sisi pia mdogo nini unaweza kweli kufanya.
Na hakika, mende na makosa Unaweza kutokea kutokana na aina wale wa masuala.
Na hakika, miongoni mwa mada leo ni kwenda kuwa mada kama debugging
na kwa kweli kuangalia chini ya Hood jinsi mambo walikuwa kuletwa wiki iliyopita
ni kweli kutekelezwa ili wewe bora
kuelewa wote uwezo wa na mapungufu ya lugha kama C.
>> Na kwa kweli, tutaweza peel nyuma tabaka ya rahisi ya muundo data,
kitu kinachoitwa safu, ambayo Scratch hutokea kwa kuwaita "orodha."
Ni kidogo tofauti katika mazingira.
Na kisha tutaweza pia kuanzisha moja ya kwanza ya matatizo yetu uwanja maalum
katika CS50, ulimwengu wa cryptography, sanaa ya scrambling
au katika uchujaji wa habari ili kuwa unaweza kutuma ujumbe siri
na kufumbua ujumbe siri kati ya watu wawili, A na B.
>> Hivyo kabla ya sisi mpito kwa ulimwengu huo mpya,
hebu jaribu kuandaa kwa baadhi mbinu na ambayo unaweza kuondokana na
au kupunguza angalau baadhi ya kukatishwa tamaa
kwamba wewe kuwa pengine yaliyojitokeza wiki iliyopita peke yake.
Kwa kweli, kabla ya wewe ni such-- baadhi ya matatizo yako ya kwanza katika C. Na ni tabia mbaya,
kama wewe ni kama mimi, mara ya kwanza wewe kujaribu aina nje mpango,
hata kama wewe kufikiri kimantiki mpango ni pretty rahisi,
unaweza vizuri sana kugonga ukuta, na compiler si kwenda kushirikiana.
Kufanya au Clang si kwenda kwa kweli kufanya amri yako.
>> Na kwa nini inaweza kuwa nini?
Naam, hebu tuangalie, pengine, mpango rahisi.
Mimi nina kwenda mbele na kuokoa hii katika file kwa makusudi aitwaye buggy0.c,
kwa sababu najua ni kwa kuwa na kasoro mapema.
Lakini mimi wanaweza kutambua kwamba kama hii ni mpango wa kwanza au ya pili au ya tatu
kwamba mimi nina kweli kufanya mwenyewe.
Hivyo mimi nina kwenda mbele na aina nje, int kuu (utupu).
Na kisha ndani ya braces yangu curly, familiar sana ( "hello, world--
backslash, n ") - na nusu koloni.
>> Nimekuwa kuokolewa file.
Sasa mimi nina kwenda chini kwa terminal dirisha yangu
na aina ya kufanya buggy0, kwa sababu, tena, jina la faili leo ni buggy0.c.
Hivyo mimi aina kufanya buggy0, kuingia.
>> Na, loo, gosh, kukumbuka kutoka wakati wa mwisho kwamba ujumbe hakuna kosa ni jambo zuri.
Hivyo hakuna pato ni jambo zuri.
Lakini hapa nina wazi baadhi ya idadi ya makosa.
>> Hivyo mstari wa kwanza wa pato baada ya kuandika kufanya buggy0, kukumbuka,
ni Clang ya haki verbose pato.
Chini ya Hood, CS50 IDE kimeundwa
kutumia rundo zima la chaguzi na compiler hii
ili huna kufikiri juu yao.
Na kwamba wote kwamba mstari wa kwanza maana yake ni kwamba huanza na Clang.
>> Lakini baada ya kuwa, matatizo kuanza kufanya muonekano wao.
Buggy0.c kwenye mstari 3, tabia ya 5, kuna kubwa, nyekundu makosa.
Hiyo ni nini?
Implicitly kutangaza kazi maktaba printf na int aina (const Char *,
...) [-Werror].
I mean, ni haraka sana anapata arcane sana.
Na hakika, kwa mara ya kwanza mtazamo, tunataka
wanatarajia kuelewa ukamilifu wa ujumbe huo.
Na hivyo moja ya masomo kwa leo ni kwenda
kuwa na kujaribu taarifa chati, au mambo sawa,
kwa makosa unaweza kuwa yaliyojitokeza katika siku za nyuma.
Basi hebu tease mbali tu maneno hayo ili kuangalia familiar.
kubwa, nyekundu kosa ni wazi ishara ya kitu kuwa makosa.
>> implicitly kutangaza maktaba kazi printf.
Hivyo hata kama Sielewi kabisa nini implicitly kutangaza kazi maktaba
njia, tatizo hakika inahusiana na printf kwa namna fulani.
Na chanzo cha suala kwamba ina nini na kutangaza ni.
>> Kutangaza kazi ni kutaja kwa mara ya kwanza.
Na sisi alitumia msemo wiki iliyopita ya kutangaza mfano kazi ya,
ama mstari mmoja utafutaji juu ya yako file mwenyewe au katika kinachojulikana header file.
Na katika kile file alifanya tunasema wiki iliyopita kuwa printf ni kunukuu,
unquote, alitangaza?
Katika faili nini ni mfano wake?
>> Hivyo kama unakumbuka, jambo la kwanza kabisa mimi typed, karibu kila mpango mwisho time--
na ajali wakati iliyopita ilianza kuandika myself-- ilikuwa hii here-- moja
hash-- # Pamoja <stio-- kwa pembejeo / output-- dot h Na hakika,
kama mimi sasa ila faili hili, mimi nina kwenda kwenda mbele na wazi screen yangu,
ambayo unaweza kufanya kwa kuandika Wazi, au unaweza kushikilia Control L,
tu wazi terminal dirisha yako tu kuondokana na baadhi clutter.
>> Mimi nina kwenda mbele na re-aina ya kufanya buggy0, kuingia.
Na voila, mimi bado kuona kwamba muda mrefu amri kutoka kwa Clang,
lakini hakuna ujumbe wa makosa wakati huu.
Na hakika, kama mimi kufanya ./buggy0, tu kama mara ya mwisho,
ambapo dot maana hii directory, kufyeka ina maana tu,
hiyo inakuja jina la mpango na kwamba jina la mpango huo ni buggy0,
Kuingia, "hello, ulimwengu."
>> Sasa, jinsi gani una zilizopatikana ufumbuzi huu
bila lazima kutambua maneno kama wengi
kama mimi, hakika, kuwa na jambo hili kwa miaka mingi?
Naam, kutambua per Tatizo la kwanza kuweka, sisi kuanzisha wewe amri
kwamba wafanyakazi CS50 ya mwenyewe aliandika aitwaye help50.
Na hakika, C gani vipimo kwa ajili ya tatizo kuweka na jinsi ya kutumia hii.
>> Lakini help50 kimsingi ni mpango kwamba wafanyakazi CS50
aliandika kwamba utapata kukimbia amri au kukimbia mpango,
na kama huna kuelewa wake pato, kupita pato lake kwa help50,
ambapo kiwango programu kwamba wafanyakazi kozi ya aliandika
itaangalia pato mpango wako mstari kwa mstari, tabia na tabia.
Na kama sisi, wafanyakazi, kutambua ujumbe wa makosa kwamba wewe ni inakabiliwa na,
sisi kujaribu kumfanya wewe na baadhi ya maswali ya kejeli, na baadhi ya ushauri,
kiasi kama TF au CA au mwenyewe bila kufanya katika mtu katika masaa ya ofisi.
>> Ili kuangalia kwa help50 kama huna lazima kutambua tatizo.
Lakini si kutegemea juu yake sana kama mkongojo.
Hakika kujaribu kuelewa wake pato na kisha kujifunza kutoka humo
ili mara moja au mbili kufanya wewe milele kukimbia help50 kwa makosa fulani
ujumbe.
Baada ya hapo, unapaswa kuwa vifaa bora wewe mwenyewe
kufikiri nini ni kweli ni.
>> Hebu kufanya mtu mwingine hapa.
Hebu kwenda mbele, na katika sehemu nyingine file tutaweza kuwaita buggy1.c hii.
Na katika faili hii mimi nina kwenda deliberately--
lakini kujifanya kuwa mimi si kuelewa nini makosa Nimekuwa alifanya.
>> Mimi nina kwenda mbele na kufanya Haya # Pamoja, tangu nimekuwa
kujifunza somo wangu kutoka wakati iliyopita.
Int kuu (utupu), kama kabla.
Na kisha katika hapa mimi nina kwenda kufanya kamba s - get_string.
Na kukumbuka kutoka mara ya mwisho kwamba njia hii, hey, kompyuta,
nipe kutofautiana, kuiita s, na kufanya aina ya kwamba kutofautiana kamba
hivyo siwezi kuhifadhi maneno moja au zaidi ndani yake.
>> Na kisha juu ya mkono wa kulia upande wa ishara sawa
ni get_string, ambayo ni kazi katika CS50 maktaba
kwamba gani hasa kwamba.
Anapata kazi na kisha mikono yake kutoka kulia kwenda kushoto.
Hivyo ishara hii sawa haina maana "Ni sawa na" kama sisi kufikiri katika math.
Ina maana mgawo kutoka kulia kwenda kushoto.
Hivyo hii ina maana, kuchukua kamba kutoka user na kuhifadhi ndani ya s.
>> Sasa hebu kuitumia.
Hebu kwenda mbele sasa na kama pili line, napenda kwenda mbele na kusema "hello" -
si "dunia," lakini "hello,% s-- ambayo ni placeholder yetu, comma s,
ambayo ni kutofautiana yetu, na kisha nusu koloni.
Hivyo kama sikuwa screw up sana hapa, hii inaonekana kama kanuni sahihi.
>> Na silika yangu sasa ni kukusanya yake.
file inaitwa buggy1.c.
Hivyo nina kwenda kufanya kufanya buggy1, kuingia.
Na darn-ni, kama kuna si hata makosa zaidi kuliko kabla.
I mean, kuna zaidi ujumbe wa makosa ingekuwa
kuonekana ya mistari halisi katika mpango huu.
>> Lakini takeaway hapa ni, hata kama wewe ni kuzidiwa
na mbili au tatu au nne ujumbe wa makosa zaidi,
kuzingatia daima juu sana kwanza ya ujumbe hizo.
Kuangalia juu-wengi moja, scrolling nyuma hadi kama ni lazima.
Hivyo hapa mimi typed kufanya buggy1.
Hapa ni kwamba Clang pato kama ilivyotarajiwa.
>> Na hapa ni kwanza nyekundu makosa.
Matumizi ya Undeclared kitambulisho kamba, je, mimi maana ya kiwango katika?
Hivyo kiwango katika ni kweli kitu kingine.
Ni inahusu mtumiaji keyboard, kimsingi.
>> Lakini si kwamba kile maana.
Mimi maana ya kamba, na mimi maana get_string.
Kwa hiyo kile ni kwamba mimi alisahau kufanya wakati huu?
Kinachokosekana wakati huu?
Nina # Pamoja yangu, hivyo mimi kuwa na upatikanaji wa printf.
>> Lakini je, mimi si kuwa upatikanaji wa bado tu?
Naam, tu kama mara ya mwisho, Mimi haja ya kuwaambia compiler
Clang nini kazi hizi ni.
Get_string haina kuja na C. Na hasa, ni
haina kuja katika header file,.
Ni badala huja katika kitu wafanyakazi aliandika,
ambayo ni file tofauti jina lakini aptly aitwaye.
>> Hivyo tu kwa kuongeza kuwa mstari mmoja ya code-- kukumbuka kutoka wakati wa mwisho
kwamba wakati Clang anaendesha, ni kwenda kuangalia kanuni yangu juu hadi chini,
kushoto na kulia.
Ni kwenda kwa taarifa, loo, unataka.
Hebu kwenda na kupata kwamba, popote ni juu ya server,
nakala na kuweka, kimsingi, katika juu ya faili yako mwenyewe
hivyo kwamba katika hatua hii ya hadithi, line 1, wengine wa mpango
Unaweza, kwa kweli, matumizi yoyote ya kazi humo, miongoni mwao get_string.
Hivyo nina kwenda kupuuza mapumziko ya makosa hayo,
kwa sababu mimi, kwa kweli, mtuhumiwa kuwa tu Wa kwanza kweli mattered.
Na mimi nina kwenda mbele na rerun, baada ya kuokoa faili yangu kufanya buggy1.
Na voila, ilivyokuwa kazi.
Na kama mimi kufanya ./buggy1 na aina katika, kwa mfano, Zamyla, mimi sasa kupata hello,
Zamyla, badala ya hello, dunia.
>> Sawa.
Hivyo takeaways hapa basi ni kwa, moja, jaribu kuokota kama vile wewe unaweza
kutoka ujumbe wa makosa peke yake, kuangalia katika baadhi ya maneno kumtambua.
Kuzuia kwamba, matumizi help50 per tatizo kuweka vipimo.
Lakini inazuia kwamba, pia, daima kuangalia katika makosa juu tu, angalau
awali, kuona nini maelezo ili kweli mavuno.
Lakini zinageuka kuna ya utendaji hata zaidi kujengwa
katika CS50 maktaba ili kusaidia wewe mapema katika muhula
na mapema katika programu kufikiri nini kinaendelea vibaya.
Basi hebu kufanya mfano mwingine hapa.
Mimi nina kwenda kuwaita buggy2 hii, ambayo, tena, ni kwenda kuwa kiujanja nje
wa lango, kwa kubuni.
>> Na mimi nina kwenda mbele na kufanya # pamoja.
Na kisha mimi nina kwenda kufanya int kuu (utupu).
Na kisha mimi nina kwenda kufanya kwa kitanzi.
Kwa (int i _ 0.
i ni chini ya au sawa na 10.
i ++, na kisha katika braces curly, mimi nina kwenda magazeti nje tu ishara hashtag hapa
na line tabia mpya.
>> Hivyo dhamira yangu na hii mpango ni rahisi kabisa
iterate mara 10 na juu ya kila iteration
ya kwamba kitanzi kila wakati njia ya mzunguko,
magazeti nje hashtag, hashtag, hashtag.
Moja kwa kila mstari kwa sababu mimi kuwa mstari mpya huko.
Na kukumbuka kwamba kwa kitanzi, kwa week-- mwisho
na utasikia kupata zaidi ukoo na syntax
kwa kutumia ni pamoja na mazoezi kabla long-- hii inatoa mimi
variable kuitwa i na seti ni kwa 0.
>> Hii nyongeza i juu ya kila iteration na 1.
Hivyo i inakwenda 1 kwa 2 hadi 3.
Na kisha hali hii katika katikati kati ya nusu colons
anapata checked juu ya kila iteration ya kufanya kuhakikisha kwamba sisi bado ni ndani mbalimbali.
Hivyo nataka iterate mara 10, hivyo mimi kuwa intuitively aina ya sana tu
kuweka 10 kama amefungwa yangu juu huko.
>> Na bado, wakati mimi kukimbia hii, baada ya kuandaa ni pamoja na kufanya buggy2--
na haina kukusanya OK.
Hivyo sina syntax makosa wakati huu.
Hebu kwenda mbele sasa na kukimbia buggy2, kuingia.
Na sasa kitabu juu.
Na napenda kuongeza ukubwa wa dirisha.
>> Mimi wanaonekana kuwa na 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11.
Hivyo kuna 11 hashtags, ingawa Mimi wazi kuweka 10 ndani ya kitanzi hii.
Sasa, baadhi yenu wanaweza kuona mara moja nini kosa ni kwa sababu, kwa kweli, hii
si kosa ngumu sana kufanya.
Lakini ni kawaida sana alifanya mapema sana juu.
>> Nini nataka kumweka nje, ingawa, ni, jinsi gani mimi takwimu hii nje?
Naam, zinageuka kuwa CS50 maktaba anakuja
na si tu get_string na get_int na get_float na kazi nyingine.
Pia kuja na kazi maalum aitwaye eprintf, au, kosa printf.
Na ni ipo tu kufanya ni rahisi kidogo kwa ajili yenu
wakati debugging kanuni yako tu magazeti ujumbe wa makosa juu ya screen
na kujua ilikotoka.
>> Hivyo kwa mfano, jambo moja nipate kufanya hapa na kazi hii ni hii
eprintf, na kisha mimi nina kwenda mbele na kusema sasa i ni% i, backslash, n.
Na mimi nina kwenda kuziba katika thamani ya i.
Na juu juu, kwa sababu hii ni katika CS50 maktaba,
Mimi nina kwenda mbele na ni pamoja na
hivyo mimi kuwa na upatikanaji wa kazi hii.
Lakini hebu fikiria nini mstari 9 ni walidhani kuwa kufanya.
Mimi nina kwenda kufuta hii hatimaye.
Hii ina kitu cha kufanya na lengo langu kuu.
Lakini eprintf, kosa printf, ni maana tu kunipatia habari za uchunguzi.
Wakati mimi kukimbia mpango wangu, nataka kuona hii juu ya screen kwa muda
kama vile tu kuelewa Ni nini kinaendelea.
>> Na kwa kweli, juu ya kila iteration hapa wa mstari 9
Nataka kuona, ni nini thamani ya i?
ni thamani ya i nini?
Na, pengine, mimi lazima tu kuona kwamba ujumbe, pia, mara 10.
>> Hivyo basi mimi kwenda mbele na recompile mpango wangu,
kama mimi kufanya wakati wowote Mimi kufanya mabadiliko. ./buggy2.
Na now-- OK.
Kuna mengi zaidi kinachoendelea.
Hivyo basi mimi kitabu juu katika hata kubwa dirisha.
>> Na utaona kwamba kila mmoja hashtags bado ni uchapishaji.
Lakini katika kati ya kila mmoja wao ni sasa hii pato uchunguzi mpangilio kama ifuatavyo.
jina la mpango wangu hapa ni buggy2.
jina la faili ni buggy2.c.
idadi line ambayo hii ilichapwa ni mstari 9.
Na kisha na haki ya kuwa ni ujumbe wa makosa kwamba mimi nina kutarajia.
>> Na nini ni nzuri kuhusu hili ni kwamba sasa sina kwa lazima kuhesabu
katika kichwa changu nini mpango wangu ni kufanya.
Naona ya kuwa juu ya kwanza iteration i ni 0,
kisha 1, kisha 2, kisha 3, kisha 4, kisha 5, kisha 6, basi 7, basi 8, kisha 9, kisha
10.
Hivyo kusubiri dakika.
Nini kinaendelea hapa?
Mimi bado wanaonekana kuwa kuhesabu kama ilivyokusudiwa hadi 10.
>> Lakini wapi mimi kuanza?
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 10.
Hivyo 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- kidole 11
ni dalili ya tatizo.
Mimi wanaonekana kuwa kuhesabiwa kimakosa katika kitanzi yangu.
Badala ya kwenda iterations 10, Mimi kuanzia saa 0,
Mimi nina kuishia katika na kwa njia ya 10.
Lakini kwa sababu, kama kompyuta, Mimi nina kuanza kuhesabu saa 0,
Mimi lazima kuhesabu hadi kwa, lakini si kwa njia, 10.
>> Na hivyo fix, mimi hatimaye barabara hapa, ni moja ya mambo mawili.
Mimi naweza sana tu kusema kuhesabu hadi chini ya 10.
Hivyo 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ambayo ni kweli, sahihi,
ingawa ni sauti vibaya kidogo.
Au mimi naweza kufanya chini ya au sawa 9, muda mrefu kama mimi kuanza saa 0.
Au kama wewe kweli si kama kwamba, wewe unaweza kuhesabu hadi kwa njia ya 10 lakini kuanza saa 1.
Lakini tena, hii tu siyo suala la kawaida.
Katika programming-- japo si sana katika Scratch--
lakini katika programu katika C na lugha nyingine,
kama JavaScript na Python na wengine, ni
tu kawaida sana kwa mjadala wetu wa binary
kuanza tu kuhesabu katika idadi ya chini unaweza, ambayo ni 0.
Sawa.
Hivyo hiyo ni eprintf.
Na tena, sasa nimekuwa figured nje yangu tatizo, na mimi nina kwenda nyuma 0
kupitia chini ya 10, mimi nina kwenda kwenda katika na kufuta eprintf.
>> Ni lazima kuwa kuna wakati mimi meli kanuni yangu au kuwasilisha kanuni yangu
au kuonyesha kuwa na mtu mwingine.
Ni kweli tu maana kutumiwa kwa muda.
Lakini sasa nimekuwa fasta hii tatizo fulani pia.
>> Naam, hebu kufanya mfano mmoja zaidi hapa kwamba mimi nina kwenda kwa mjeledi up kama ifuatavyo.
Mimi nina kwenda mbele na # pamoja. $ 50
Na mimi nina kwenda mbele na # pamoja.
>> Na mimi nina kwenda kuokoa faili hii kama buggy3.c.
Na mimi nina kwenda mbele na kutangaza int kuu (utupu).
Na kisha ndani ya huko Mimi nina kwenda kufanya int i _ -
Nataka kutekeleza mpango na get_negative_int.
Hii si kazi ambayo ipo bado.
Hivyo sisi ni kwenda kutekeleza ni katika muda tu.
Lakini tunakwenda kuona kwa nini ni Buggy katika kupita kwanza.
Na mara moja nimepata wamezipata int kutoka kwa mtumiaji,
Mimi tu kwenda magazeti% i ni hasi integer, backslash, n, comma, i.
Kwa maneno mengine, yote mimi wanataka mpango huu kufanya
ni kupata int hasi kutoka user na kisha magazeti nje
kwamba vile na vile ni int hasi.
>> Sasa mimi haja ya kutekeleza kazi hii.
Hivyo baadaye katika faili yangu, mimi nina kwenda mbele na kutangaza kazi kuitwa
get_negative_int (utupu) - na tutaweza kuja nyuma kwa nini kuwa mstari wa maana tena
katika moment-- int n; do-- kufanya following-- printf n ni :.
Na kisha mimi nina kwenda kufanya n - get_int, na kufanya hivyo wakati n ni mkubwa kuliko 0.
Na kisha kurudi n ;.
>> Hivyo kuna mengi kinachoendelea katika hii lakini hakuna ambayo hatukuwa
tuangalie wiki iliyopita, angalau kwa ufupi.
Hivyo kwenye mstari 10 hapa nimekuwa alitangaza kazi kuitwa get_negative_int,
na nimekuwa kuweka (utupu), katika mabano, sababu ikiwa ni hii
haina kuchukua pembejeo.
Mimi si kupita kitu chochote kwa kazi hii.
Mimi nina kupata tu kitu nyuma kutoka humo.
>> Na nini nina matumaini ya kupata nyuma ni integer.
Hakuna aina data katika C aitwaye negative_int.
Ni int tu, hivyo ni kwenda kuwa juu yetu ili kuhakikisha
kwamba thamani hiyo ni kweli akarudi ni si tu int
lakini pia ni hasi.
>> On line 12 Mimi kutangaza variable kuitwa n na kuifanya ya aina int.
Na kisha katika mstari 13 kwa njia ya 18 mimi nina kufanya kitu wakati kitu ni kweli.
Mimi nina kwenda mbele na uchapishaji n ni, matumbo, na kisha nafasi,
kama haraka kwa mtumiaji.
>> Mimi kisha wito get_int na kuhifadhi wake kinachojulikana kurudi thamani
katika kwamba kutofautiana n.
Lakini mimi nina kwenda kuendelea kufanya hii wakati n ni mkubwa kuliko 0.
Kwa maneno mengine, kama mtumiaji anitiaye int na idadi hiyo ni mkubwa kuliko 0,
ergo, chanya, mimi nina kwenda kwa tu kuweka reprompting user,
kuweka reprompting, na kuwalazimisha kushirikiana na kunipa int hasi.
>> Na mara moja n ni kweli negative-- kudhani user hatimaye aina -50,
basi hii kitanzi wakati ni kweli tena kwa sababu -50 si mkuu zaidi kuliko 0.
Hivyo sisi kuvunja nje ya kuwa kitanzi kifikra na kurudi n.
>> Lakini kuna mtu mwingine Jambo nina kufanya.
Na siwezi tu kufanya hivyo na kuiga na pasting
moja mstari wa kanuni katika juu ya faili.
Mimi haja ya kufundisha Clang, au ahadi ya Clang,
wazi kwamba mimi, kwa kweli, kwenda na kutekeleza
kazi hii get_negative_int.
Inaweza tu kuwa chini katika faili.
Tena, kukumbuka kwamba Clang anayesoma mambo juu hadi chini,
kushoto na kulia, hivyo hawawezi piga kazi kama Clang
hajui ni kwenda kuwepo.
>> Sasa, kwa bahati mbaya, mpango huu, kama baadhi yenu wanaweza kuwa niliona,
tayari buggy.
Hebu kwenda mbele na kufanya buggy3.
Ni inaandaa, hivyo tatizo langu sasa si syntax makosa, kama makosa textual,
ni kweli kwenda kuwa mantiki makosa kwamba mimi wameweza kwa makusudi
alifanya kama fursa ya hatua kupitia nini kinaendelea.
>> Mimi nina kwenda mbele sasa na kukimbia buggy3.
Na mimi nina kwenda mbele na kushirikiana.
Mimi nina kwenda kuwapa namba 1.
Haikuwa kama hayo, hivyo ni kusababisha mimi tena.
>> Jinsi kuhusu 2?
3?
50?
Hakuna hata wale wanafanya kazi.
Jinsi kuhusu -50?
Na mpango inaonekana kazi.
>> Napenda kujaribu mara moja zaidi.
Hebu jaribu -1, inaonekana kazi.
Hebu jaribu -2, inaonekana kazi.
Hebu jaribu 0.
Huh, hiyo ni sahihi.
Sasa, sisi ni kuwa kidogo pedantic hapa.
Lakini ni, kwa kweli, kesi hiyo 0 ni wala chanya wala hasi.
Na hivyo ukweli kwamba mpango wangu ni akisema kwamba 0 ni integer hasi,
si kwamba utaalamu sahihi.
>> Sasa, kwa nini ni kufanya hii?
Naam, inaweza kuwa dhahiri.
Na kwa kweli, mpango huo ni maana ya kuwa haki rahisi
hivyo tuna kitu ya kuchunguza.
>> Lakini hebu kuanzisha debugging tatu mbinu hapa aitwaye debug50.
Hivyo hii ni mpango kwamba tumekuwa tu kuundwa
mwaka kuitwa hii debug50 ambayo itawawezesha
kwa kutumia kile kinachoitwa kujengwa katika HatiJava graphical katika CS50 IDE.
Na HatiJava ni tu mpango kwamba ujumla inakuwezesha kuendesha programu yako
lakini hatua kwa hatua kwa hatua, line kwa mstari kwa mstari, kusitisha, poking
karibu, kuangalia vigezo ili haina mpango tu pigo nyuma yenu
na haraka magazeti kitu au si magazeti kitu.
Ni inakupa nafasi, katika binadamu kasi, kuingiliana na hayo.
>> Na kwa kufanya hivyo, wewe tu kufanya yafuatayo.
Baada ya kuandaa kanuni yako, ambayo mimi tayari alifanya, buggy3,
wewe kwenda mbele na kukimbia debug50 ./buggy.
Sana kama help50 ina kukimbia help50 na kisha amri,
debug50 ina kukimbia debug50 na kisha jina la amri.
>> Sasa kuangalia nini kinatokea kwenye screen yangu, juu ya upande wa kulia hasa.
Wakati mimi kugonga kukimbia, wote wa ghafla hii mkono wa kulia jopo
kufungua juu ya screen.
Na kuna mengi yanayoendelea juu ya katika mtazamo wa kwanza.
Lakini kuna pia si kiasi na wasiwasi juu bado.
>> Hii ni kuonyesha mimi kila kitu kwamba kinaendelea ndani ya mpango wangu
sasa hivi na kupitia hizi vifungo juu juu ni kisha
kuniruhusu hatua kupitia kanuni yangu hatimaye hatua kwa hatua kwa hatua.
Lakini si tu bado.
Taarifa ya nini kinatokea.
Wakati terminal yangu dirisha Mimi nina kuwa ilisababisha kwa n.
Na mimi nina kwenda mbele na kushirikiana wakati huu na aina katika -1.
Na japo kidogo isiyoeleweka kirahisi, -1 ni integer hasi, kama ilivyotarajiwa.
>> Na kisha mtoto exited na hadhi 0 GDBserver exiting.
GDB, GNU Debugger, ni jina ya programu ya msingi
kwamba zana HatiJava hii.
Lakini yote hii kwa kweli ina maana, HatiJava akaenda kwa sababu mpango wangu kujiondoa
na yote vizuri.
Kama mimi nataka kweli Debug mpango wangu, Mimi na preemptively kuwaambia debug50,
ambapo mimi nataka kuanza wanazidi kupitia kanuni yangu?
>> Na pengine njia rahisi kufanya hivyo ni kama ifuatavyo.
Kama mimi hover juu gutter ya mhariri wangu hapa,
hivyo kweli tu katika sidebar hapa, upande wa kushoto wa idadi line,
taarifa kwamba kama mimi bonyeza tu mara moja, mimi kuweka nyekundu kidogo dot.
Na kwamba kidogo nyekundu dot, kama ishara stop, maana yake, hey,
debug50, pause utekelezaji wa kanuni yangu haki pale nilipokuwa kuendesha mpango huu.
>> Basi hebu kufanya hivyo.
Hebu kwenda mbele na kuendesha programu yangu tena kwa debug50 ./buggy3, kuingia.
Na sasa, angalia, jambo tofauti kilichotokea.
Mimi si kuwa ilisababisha bado katika terminal dirisha yangu
kwa lolote, kwa sababu mimi si wamezipata huko bado katika mpango wangu.
Taarifa kwamba katika mstari wa 8 ambayo sasa ni yalionyesha,
na kuna mshale kidogo katika msemo wa kushoto, wewe ni paused hapa.
Hii mstari wa kanuni, line 8, bado kunyongwa.
>> Na nini curious, kama mimi kuangalia zaidi ya hapa juu ya upande wa kulia,
taarifa kwamba i ni mitaa kutofautiana, serikali za mitaa katika akili
kwamba ni ndani ya kazi ya sasa.
Na thamani yake, inaonekana by default, na aina ya conveniently, ni 0.
Lakini sikuweza aina 0.
Hiyo tu hutokea kwa kuwa wake thamani default kwa sasa.
>> Hivyo basi mimi kwenda mbele na kufanya hili sasa.
Hebu kwenda mbele na juu ya juu kulia hapa, mimi nina
kwenda mbele na click icon hii ya kwanza ambayo
ina maana hatua juu ambayo ina maana wala ruka lakini hatua ya juu hii mstari wa kanuni,
utekelezaji yake njiani.
>> Na sasa, taarifa, yangu haraka imebadilika tu.
Kwanini hivyo?
Nimekuwa aliiambia debug50, kukimbia hii mstari wa kanuni.
Je hii mstari wa kanuni nini?
Papo me kwa int.
SAWA.
Napenda kushirikiana.
Hebu kwenda mbele sasa na aina -1, kuingia.
Na sasa taarifa nini kimebadilika.
Upande wa kulia, kutofautiana yangu mitaa i
unahitajika kama kuwa -1 sasa.
Na bado ni ya aina int.
>> Na taarifa, pia, yangu kinachojulikana kuwaita stack, wapi mimi pause?
Tutaweza majadiliano zaidi kuhusu hii katika siku zijazo.
Lakini wito stack tu inahusu nini kazi ni sasa katika mwendo.
Hivi sasa ni tu kuu.
Na hivi sasa tu ndani kutofautiana ni i na thamani ya 1.
>> Na wakati mimi hatimaye hatua ya juu ya mstari huu hapa, pamoja na icon hiyo kulia juu,
-1 Ni integer hasi.
Sasa ni kusitisha juu ya kwamba brace curly.
Hebu basi ni kufanya kitu wake.
Mimi hatua juu ya kwamba mstari, na voilà.
>> Hivyo si wote kwamba sana mwangaza bado,
lakini hakuwa napenda kutulia na kufikiria njia kifikra
nini mpango huu ni kufanya.
Lakini haikuwa hivyo potofu.
Hebu kufanya hivyo tena kama ifuatavyo.
>> Mimi nina kwenda kuondoka kwamba breakpoint kwenye mstari 8 na dot nyekundu.
Mimi nina kwenda rerun debug50.
Ni moja kwa moja paused hapa.
Lakini wakati huu, badala ya wanazidi juu ya mstari huu,
napenda kwa kweli kwenda ndani ya get_negative_int na kufikiri,
kwa nini ni kukubali 0 kama jibu halali?
>> Hivyo badala ya kubonyeza Step Over.
Mimi nina kwenda mbele na click Hatua Into.
Na taarifa kwamba mstari wa 8 hiyo ni sasa yalionyesha sasa ghafla
inakuwa line 17.
>> Sasa, si kwamba HatiJava ina skipped mistari 14 na 15 na 16.
Ni tu kuna kitu na kuonyesha huko.
Wale ni kutangaza tu vigezo, na kisha kuna neno Do
na kisha wazi curly brace.
tu kazi line hiyo ni Juicy kweli ni hii moja hapa, 17.
Na hapo ndipo tumekuwa paused moja kwa moja.
>> Hivyo printf ( "n.is:") ;, hivyo kwamba halijatokea bado.
Basi hebu kwenda mbele na bonyeza Vuka.
Sasa haraka yangu, kwa kweli, iliyopita na ( "n ni:").
Sasa get_int, mimi si kwenda kujisumbua wanazidi katika,
kwa sababu kazi hiyo ilikuwa yaliyotolewa na CS50 katika maktaba.
Ni labda sahihi.
>> Hivyo mimi nina kwenda mbele na aina ya kushirikiana kwa kutoa ni
int, lakini si int hasi.
Hivyo basi mimi kwenda mbele na kugonga 0.
Na sasa nini kinatokea hapa wakati mimi kupata chini ya kujipanga 21?
Nimekuwa si iterated tena.
Sina wanaonekana kuwa kukwama katika kitanzi kwamba.
Kwa maneno mengine, hii njano bar hawakuridhika kwenda kuzunguka,
na kuzunguka, na kuzunguka.
>> Sasa, kwa nini ni kwamba?
Naam, n, ni nini n sasa hivi?
Naweza kuangalia ndani vigezo katika HatiJava.
n ni 0.
Yote ya haki, nini ilikuwa hali yangu?
>> 20-- line 20 ni, vizuri, 0 ni mkubwa kuliko 0.
Hiyo siyo kweli.
0 si mkuu zaidi kuliko 0.
Na hivyo mimi kuvunja nje ya hili.
>> Na hivyo ndiyo sababu kwenye mstari 21, kama mimi kwa kweli kuendelea,
Mimi nina kwenda na kurudi 0, hata ingawa ni lazima kuwa kukataliwa 0
kama si kweli kuwa hasi.
Hivyo sasa, mimi si kweli hata huduma kuhusu HatiJava.
Got it, mimi hawana haja ya kujua nini zaidi kinachoendelea.
>> Hivyo mimi nina kwenda mbele na bonyeza tu kifungo Play,
na basi kumaliza hii up.
Sasa, nimekuwa waligundua kuwa wangu mdudu ni inaonekana kwenye mstari 20.
Hiyo ni hitilafu yangu mantiki.
>> Na hivyo kile mimi nataka kufanya kubadili hali hii?
Kama tatizo ni kwamba mimi si kuambukizwa 0, ni tu mantiki kosa.
Na naweza kusema wakati n ni kubwa zaidi kuliko au sawa na 0,
kuweka kusababisha mtumiaji tena na tena.
>> Hivyo, tena, rahisi makosa, labda hata dhahiri wakati wewe akaniona
kuandika ni dakika chache tu zilizopita.
Lakini takeaway hapa ni kwamba pamoja na Debug 50,
na kwa debugging programu kwa ujumla zaidi,
una hii mpya nguvu kupatikana kwa kutembea kwa njia ya kanuni yako mwenyewe, kuangalia
kupitia kwamba mkono jopo haki gani vigezo yako maadili ni.
Hivyo kufanya si lazima una kutumia kitu
kama wewe eprintf na magazeti maadili hayo.
Unaweza kweli kuwaona kuibua kwenye screen.
>> Sasa, zaidi ya hayo, ni thamani kubainisha kuwa kuna mbinu nyingine hiyo ni
kweli super kawaida.
Na unaweza kushangaa kwa nini hii kidogo guy hapa imekuwa ameketi juu ya hatua.
Hivyo kuna mbinu hii, kwa ujumla inayojulikana kama bata mpira debugging,
ambayo kwa kweli ni tu ushahidi wa ukweli
kwamba mara nyingi wakati programmers ni kuandika code,
wao siyo lazima kushirikiana na watu wengine,
au kufanya kazi katika mazingira ya pamoja.
>> Wao ni aina ya nyumbani.
Labda ni usiku sana.
Wao ni kujaribu takwimu nje baadhi mdudu katika kanuni zao.
Na wao ni tu si kuona hilo.
>> Na hakuna roommate.
Hakuna TF.
Hakuna CA kote.
Wote wana juu ya rafu zao ni hii kidogo mpira ducky.
>> Na hivyo debugging bata mpira ni tu mwaliko huu
kufikiria kitu kama silly kama hii kama kiumbe halisi,
na kwa kweli kutembea kwa njia ya kanuni yako kwa maneno ya hii kitu visivyo na uhai.
Hivyo, kwa mfano, kama huu ni mfano wangu here--
na kukumbuka kuwa mapema Tatizo ni hili,
kama mimi kufuta mstari huu wa kwanza wa kanuni, na mimi kwenda mbele na kufanya buggy 0 tena,
kukumbuka kuwa nilikuwa hizi ujumbe wa makosa hapa.
Hivyo wazo hapa, ujinga ingawa mimi kujisikia wakati akifanya kwa umma,
ni kosa hilo.
>> OK, hivyo tatizo langu ni kwamba mimi wameweza implicitly alitangaza maktaba kazi.
Na kwamba kazi maktaba ni printf.
Declare-- OK, kutangaza Inanikumbusha prototypes.
>> Hiyo ina maana mimi haja kwa kweli kuwaambia compiler mapema kile
kazi inaonekana kama.
Subiri kidogo.
Sikuwa na kiwango io.h.
Asante sana.
>> Hivyo tu mchakato huu of-- wewe huna haja ya kweli kuwa bata.
Lakini hii wazo la kutembea mwenyewe kwa njia ya kanuni yako mwenyewe
hivyo kwamba hata kusikia mwenyewe, ili
kutambua omissions katika yako mwenyewe hotuba, kwa ujumla ni wazo.
>> Na, pengine zaidi kifikra, si hivyo sana na kwamba moja lakini zaidi kushiriki
mfano sisi tu alifanya katika 3.C buggy, unaweza kutembea mwenyewe kwa njia hiyo
kama ifuatavyo.
Basi wote haki, mpira ducky, DDB, kama wewe.
Hapa tuna katika kazi yangu kuu, Mimi nina wito kupata int hasi.
>> Na napata thamani ya kurudi.
Mimi nina hifadhi hiyo upande wa kushoto kwenye mstari 8 katika variable kuitwa i.
OK, lakini kusubiri, jinsi gani kwamba kupata kwamba thamani?
Napenda kuangalia kazi katika mstari 12.
>> Katika mstari 12, tuna kupata int hasi.
Haina kuchukua pembejeo yoyote, haina kurudi int, OK.
Mimi kutangaza kwenye mstari 14 variable n.
Ni kwenda kuhifadhi integer.
Hiyo ni nini nataka.
>> Hivyo kufanya yafuatayo wakati n is-- basi me kuondoa nini fix mimi tayari alifanya.
Hivyo wakati n ni mkubwa kuliko 0, magazeti nje n ni, OK.
Na kisha kuwaita kupata int kuhifadhiwa katika n.
Na kisha kuangalia kama n ni 0, n ni not-- huko ni.
Hivyo, tena, huna haja bata halisi.
Lakini tu kutembea mwenyewe kwa njia ya kanuni yako kama zoezi akili
mara nyingi kukusaidia kutambua nini kinaendelea,
kinyume na kufanya tu kitu kama hii, staring katika screen,
na si kuzungumza mwenyewe kwa njia ya yake, ambayo kwa uaminifu si
karibu kama mbinu madhubuti.
Hivyo kuna una hiyo, idadi ya mbinu mbalimbali
kwa kweli debugging kanuni yako na kutafuta kosa, ambayo yote
lazima zana katika toolkit yako hivyo kwamba wewe si mwishoni mwa usiku,
hasa, uko katika dining kumbi, au katika masaa ya ofisi,
banging kichwa yako dhidi ukuta, kujaribu kutatua baadhi ya tatizo.
Kutambua kwamba kuna programu zana.
Kuna bata mpira zana.
Na kuna wafanyakazi wote wa kusaidia kusubiri kuwakopesha mkono.
>> Hivyo sasa, neno juu ya tatizo seti, na juu ya nini sisi ni matumaini wewe
kupata kutoka kwao, na jinsi sisi kwenda juu ya kufanya tathmini.
Kwa muhtasari kozi ya, CS50 ya tatizo seti
ni tathmini juu ya shoka nne za msingi, hivyo kwa speak-- upeo, usahihi, kubuni,
na style.
Na upeo tu inahusu kiasi gani ya kipande na wewe kunyofolewa?
Kiasi gani cha tatizo je, alijaribu?
Nini ngazi ya juhudi kuwa wewe umejitokeza?
>> Usahihi ni, anafanya kazi mpango kama ni walidhani per CS50 vipimo
wakati kutoa pembejeo fulani au baadhi ya matokeo kurudi tena?
Kubuni ni subjective wengi wao.
Na ni moja ambayo kuchukua muda mrefu zaidi kujifunza
na mrefu kufundisha, katika hivyo mbali kama majipu chini,
jinsi vizuri imeandikwa ni kanuni yako?
>> Ni jambo moja na magazeti tu sahihi matokeo au kurudi maadili ya haki.
Lakini unafanya hivyo kama ufanisi kama iwezekanavyo?
Unafanya hayo mgawanyiko na kushinda, au binary
search kama tutaweza hivi karibuni kuona kwamba tulifanya wiki mbili zilizopita na kitabu cha simu?
Je, kuna njia bora ya kutatua tatizo kuliko sasa kuwa hapa?
Hiyo ni fursa kwa ajili ya kubuni bora.
>> Na kisha style-- jinsi pretty ni kanuni yako?
Utagundua kuwa mimi nina pretty hasa kuhusu indenting kanuni yangu,
na kuhakikisha vigezo yangu ni sababu jina lake. n,
wakati mfupi, ni jina nzuri kwa ajili ya idadi, i kwa kuhesabu integer,
s kwa kamba.
Na tunaweza kuwa na tena kutofautiana majina style.
Sinema ni jinsi nzuri haina kanuni yako kuangalia?
Na jinsi someka ni nini?
>> Na baada ya muda, nini TAS yako na TFS kufanya katika mwendo
ni kutoa kwa kuwa aina ya maoni ya ubora
ili kupata bora katika mambo hayo mbalimbali.
Na katika suala la jinsi sisi kutathmini kila mmoja shoka haya,
ni kawaida kwa wachache sana ndoo ili wewe, kwa ujumla,
kupata hisia ya jinsi vizuri unafanya.
Na, kwa hakika, kama wewe kupokea alama juu ya yoyote ya wale axes-- usahihi, kubuni
na style especially-- idadi hiyo kwa ujumla kuwa kati ya 1 na 5.
Na, literally, kama wewe ni kupata 3 wa mwanzo wa muhula,
hili ni jambo zuri sana.
Ina maana bado kuna chumba kwa ajili ya kuboresha,
ambayo ungependa matumaini kwa katika kuchukua darasa kwa mara ya kwanza.
Kuna hopefully baadhi kidogo ya dari ambayo wewe ni anayetaka kufikia.
Na hivyo kupata 3 ya juu vipande mwanzo,
kama si baadhi 2 na 4 ya, ni kweli, ni jambo jema.
Ni vizuri ndani mbalimbali, vizuri ndani ya matarajio.
>> Na kama akili yako ni racing, kusubiri dakika, watatu kati ya watano.
Hiyo ni kweli 6 kati ya 10.
Hiyo ni 60%.
Mungu wangu, hiyo ni F.
>> Sio.
Siyo, kwa kweli, kwamba.
Badala yake, ni nafasi ya kuboresha juu ya mwendo wa muhula.
Na kama wewe ni kupata baadhi fakiri, hizi ni fursa
kuchukua faida ya masaa ya ofisi, hakika sehemu na rasilimali nyingine.
>> Best ni fursa, kwa kweli, ya kujivunia tu jinsi mbali wameweza
kuja juu ya mwendo wa muhula.
Hivyo kutambua, kama hakuna kingine, tatu ni nzuri.
Na inaruhusu chumba kwa ajili ya ukuaji baada ya muda.
>> Kama jinsi shoka wale ni mizigo, realistically uko
kwenda kutumia zaidi ya muda wako kupata mambo ya kazi, achilia mbali kwa usahihi.
Na hivyo usahihi inaelekea kuwa mizigo zaidi, kama na
sababu hii multiplicative ya tatu.
Kubuni ni muhimu pia, lakini kitu ambacho si lazima
kutumia yote ya masaa wale kwenye kujaribu kupata mambo tu ya kufanya kazi.
>> Na hivyo ni mizigo kidogo lightly zaidi.
Na kisha style ni mizigo mdogo.
Hata kama ni hakuna chini muhimu kimsingi,
ni tu, pengine, rahisi Jambo la kufanya haki,
mimicking mifano sisi kufanya katika hotuba na sehemu,
na mambo nicely indented, na maoni,
na kadhalika ni miongoni mwa njia rahisi mambo ya kufanya na kupata haki.
Hivyo kama vile, kutambua kwamba wale ni pointi
kwamba ni rahisi kufahamu.
>> Na sasa neno juu Haya uaminifu kitaaluma.
Hivyo kwa kila kozi ya mtaala, utaona
kwamba bila shaka ina kabisa kidogo ya lugha kuzunguka hili.
Na bila shaka inachukua suala la uaminifu kitaaluma umakini kabisa.
>> Tuna tofauti, kwa bora au mbaya,
ya kuwa alimtuma kila mwaka zaidi wanafunzi kwa hatua za kinidhamu
kuliko wengi nyingine yoyote Bila shaka, kwamba mimi kufahamu.
Hii si lazima dalili ya ukweli
kwamba CS wanafunzi, au wanafunzi CS50, ni yoyote chini waaminifu kuliko wanafunzi wako.
Lakini ukweli kwamba katika hii dunia, umeme, sisi tu
na teknolojia ina maana ya kuchunguza hii.
>> Ni muhimu kwetu kwa ajili ya haki katika matabaka
kwamba sisi kufanya kugundua hii, na kuongeza Suala tunapoona mambo.
Na tu kuchora picha, na kwa kweli kusaidia kitu kama kuzama huu katika,
hizi ni hesabu za wanafunzi katika kipindi cha miaka 10
kwamba waliohusika katika baadhi masuala hayo ya uaminifu kitaaluma,
pamoja na baadhi ya 32 ya wanafunzi kutoka kuanguka mwaka 2015, ambayo
ni kusema kwamba hatuna kuchukua jambo kwa umakini sana.
Na, hatimaye, namba hizi kutunga, hivi karibuni zaidi, kuhusu 3%, 4% au hivyo
ya darasa.
>> Hivyo kwa ajili ya wengi super ya wanafunzi inaonekana kwamba mistari ni wazi.
Lakini je, kuweka hii katika akili, hasa mwishoni mwa mwezi
usiku wakati zinakabiliwa na baadhi ufumbuzi wa tatizo kuweka,
kwamba kuna utaratibu kwa ajili ya kupata mwenyewe bora
msaada kuliko unavyoweza kufikiri, hata katika saa ile.
Kutambua kwamba wakati sisi kupokea maoni mwanafunzi, sisi kuvuka
kulinganisha kila kuwasilisha mwaka huu dhidi ya kila kuwasilisha mwaka jana,
dhidi ya kila utii kutoka 2007, na tangu, kuangalia, kama vile,
misimbo online, majadiliano ya vikao, maeneo ya kazi.
Na sisi kutaja hii, kweli, yote kwa ajili
ya kutoa taarifa kamili, kwamba kama mtu mwingine anaweza kupata hiyo online,
hakika, sisi pia tunaweza shaka.
Lakini, kwa kweli, roho bila shaka majipu chini
kwa kifungu hiki katika mtaala.
Ni kweli ni tu, kuwa na busara.
>> Na kama tulikuwa na kufafanua juu ya kwamba na tu lugha kidogo zaidi,
kutambua kwamba kiini cha zote kazi kwamba kuwasilisha kwa kozi hii
lazima yako mwenyewe.
Lakini ndani ya kwamba, kuna shaka fursa, na kutia moyo,
na ufundishaji thamani katika kugeuka kwa others-- mwenyewe, TFS, CAS,
TAS, na wengine darasani, kwa msaada, basi marafiki peke yake
na roommates ambao wamesoma CS na programu kabla.
Na hivyo kuna posho kwa ajili hiyo.
Na kanuni ya jumla ya thumb ni Haya wakati kuomba msaada,
wenu aonyeshe kanuni yako kwa wengine, lakini unaweza kuona yao.
Hivyo hata kama uko katika masaa ya ofisi, au katika D ukumbi, au mahali pengine
kufanya kazi katika baadhi ya kuweka kipande, kufanya kazi pamoja na rafiki, ambayo
ni kabisa faini, saa mwisho wa siku kazi yako
lazima hatimaye ni ya kila wenu kwa mtiririko huo, na si
kuwa baadhi ya jitihada za pamoja, isipokuwa kwa mradi wa mwisho ambapo
ni kuruhusiwa na moyo.
>> Kutambua kwamba kama wewe ni zinakabiliwa na kitu
na rafiki yako hutokea tu kuwa bora katika hii basi,
au bora katika kwamba tatizo kuliko wewe, au mbele kidogo mbele kuliko wewe,
ni kabisa busara kurejea kwa rafiki yako na kusema, hey,
je, wewe akili kuangalia kanuni yangu hapa, kusaidia mimi doa nini suala yangu ni nani?
Na, pengine, katika maslahi ya thamani ya ufundishaji
kwamba rafiki hana tu kusema, oh, kufanya hivyo, lakini badala yake,
ni nini kukosa juu ya mstari 6, au kitu kama hicho?
Lakini ufumbuzi ni si kwa rafiki karibu na wewe
kusema, oh, vizuri, hapa, ngoja nikuondoe hii juu, na kuonyesha ufumbuzi yangu na wewe.
Hivyo kwamba ni line.
You kuonyesha kanuni yako kwa wengine, lakini msitende
kuona yao, chini ya wengine vikwazo katika mtaala kozi.
>> Hivyo kukumbuka hii kinachojulikana majuto kifungu
katika mtaala wa kozi kama vizuri, kwamba kama wewe kufanya baadhi kitendo ambacho
si ya kuridhisha, lakini kuleta kwa tahadhari ya vichwa kozi ya
ndani ya masaa 72, bila shaka inaweza kutoza vikwazo ndani kwamba
ni pamoja na adimu au kushindwa daraja kwa ajili ya kazi kuwasilishwa.
Lakini bila shaka si rejea jambo kwa hatua zaidi za kinidhamu,
isipokuwa katika kesi ya vitendo vya mara kwa mara.
Kwa maneno mengine, kama wewe kufanya kufanya baadhi kijinga, hasa mwishoni mwa usiku, uamuzi
kwamba asubuhi au siku mbili baadaye, wewe kuamka na kutambua,
nini mimi kufikiri?
Wewe kufanya katika CS50 na outlet kwa ajili ya fixing kwamba tatizo
na kumiliki juu yake, ili tuweze kukutana na wewe halfway na kukabiliana
nayo katika jambo kuwa ni wa elimu na thamani kwako,
lakini bado kutoa adhabu kwa namna fulani.
Na sasa, kwa kuchukua makali mbali, hii.
>> [VIDEO avspelning]
>> [Music kucheza]
>> [MWISHO avspelning]
DAVID J. Malan: zote haki, sisi ni nyuma.
Na sasa tunaangalia moja ya kwanza ya ulimwengu wa kweli yetu nyanja
katika CS50, sanaa ya cryptography, sanaa ya kutuma na kupokea
ujumbe siri, encrypted ujumbe kama wewe,
tu ambayo inaweza kusomeka kama una baadhi kiungo muhimu kwamba mtumaji ana
vilevile.
Hivyo kuwahamasisha huu tutaweza kuchukua a kuangalia jambo hili hapa,
ambayo ni mfano wa siri avkodare pete kwamba
inaweza kutumika ili kufikiri nini ujumbe wa siri kweli ni.
Kwa kweli, nyuma katika siku katika shule ya daraja,
kama wewe milele alimtuma ujumbe siri kwa baadhi rafiki au baadhi kuponda darasani,
unaweza kuwa na mawazo walikuwa kuwa wajanja
na juu ya karatasi yako kubadilika, kama, A na B, na B na C, na C na D,
na kadhalika.
Lakini wewe walikuwa kweli encrypting taarifa yako, hata
kama ilikuwa na maana kidogo, haikuwa kuwa ngumu kwa mwalimu kutambua,
vizuri, kama wewe tu mabadiliko B kwa A na C na B,
wewe kweli kufikiri nini ujumbe ulikuwa,
lakini walikuwa katika uchujaji wa habari.
>> You walikuwa tu kufanya hivyo tu, kiasi kama Ralphie hapa
katika movie maarufu ambayo ina pretty much ad nauseum kila majira ya baridi.
[VIDEO avspelning]
-Kuwa Ijulikane kwa watu wote Ralph Parker ni hili
aliteuliwa kuwa mjumbe wa Little Yatima Annie Secret Circle
na ni haki ya heshima zote na faida zinazotokea lazimishwa.
>> -Signed, Little Yatima Annie, kukabiliana na saini Pierre Andre, katika wino.
Heshima na faida, tayari katika umri wa miaka tisa.
>> [Kupiga kelele]
-Come Juu.
Hebu kupata tarehe na hayo.
Sina haja jazz kwamba wote kuhusu smugglers na maharamia.
>> -Sikiliza Kesho usiku kwa kuhitimisha adventure
ya nyeusi meli na maharamia.
Sasa, ni wakati kwa ajili Annie ya ujumbe wa siri
kwa ajili yenu wanachama wa Secret Circle.
Kumbuka, watoto, wanachama tu ya Annie ya siri Circle
unaweza Decode Annie ya ujumbe wa siri.
>> Kumbuka, Annie ni kutegemea wewe.
Kuweka pini yako kwa B2.
Hapa ni ujumbe.
12, 11--
>> -I Am katika, mkutano wangu wa kwanza wa siri.
>> -14, 11, 18, 16.
>> -Pierre Alikuwa katika kubwa sauti usiku wa leo.
Mimi nilikuwa naona kuwa usiku wa leo ujumbe ulikuwa kweli ni muhimu.
>> -3, 25, hiyo ni ujumbe kutoka Annie mwenyewe.
Kumbuka, usimwambie mtu yeyote.
>> sekunde -90 baadaye, mimi niko katika tu chumba katika nyumba ambapo kijana wa tisa
wanaweza kukaa katika faragha na Decode.
Aha, B!
Nilikwenda ijayo, E.
>> neno la kwanza ni kuwa.
S, alikuwa anakuja rahisi sasa, U, 25--
>> -Oh, Kuja juu, Ralphie, I gotta go!
>> -I'll Kuwa haki ya chini, Ma!
Gee whiz!
>> -T, O, kuwa na uhakika to-- kuwa na uhakika wa nini?
Nini ilikuwa Little Yatima Annie anajaribu kusema nini?
Kuwa na uhakika wa nini?
>> -Ralphie, Andy ina got Kwenda, je tafadhali kuja nje?
>> -All Haki, Ma!
Nitakuwa haki nje!
>> -I Nilikuwa kupata karibu sasa.
mvutano ilikuwa ya kutisha.
Ilikuwa ni nini?
hatima ya sayari inaweza hutegemea katika mizani.
>> -Ralphie!
gotta Andy kwenda!
>> -I'll Kuwa haki ya nje, kwa kelele kubwa!
>> -Almost Huko, vidole yangu akaruka, mawazo yangu Ilikuwa chuma mtego, kila pore vibrated.
Ilikuwa ni karibu wazi, ndiyo, ndiyo, ndiyo.
>> -Kuwa Na uhakika na kunywa Ovaltine yako.
Ovaltine?
kibiashara crummy?
Mwana wa bitch.
[MWISHO avspelning]
DAVID J. Malan: OK, hivyo kwamba ilikuwa ni njia ya muda mrefu sana
ya kuanzisha cryptography, na pia Ovaltine.
Kwa kweli, kutokana tangazo hili umri hapa, ni kwa nini Ovaltine nzuri?
Ni uchimbaji kujilimbikizia ya muafaka shayiri malt, maziwa safi creamy ya ng'ombe,
na hasa tayari kakao, pamoja na phosphatides asili na vitamini.
Ni zaidi ngome na nyongeza ya vitamini B na D, yum.
Na bado unaweza kupata hiyo, inaonekana, juu ya Amazon, kama tulivyofanya hapa.
>> Lakini motisha hapa ilikuwa ni kuanzisha cryptography, hasa
aina ya cryptography inayojulikana kama ufunguo wa siri cryptography.
Na kama jina linavyosema, zima usalama wa siri mfumo muhimu crypto,
kama wewe, mbinu kwa scrambling tu
habari kati ya watu wawili, ni kwamba tu mtumaji na mpokeaji tu
kujua siri key-- baadhi ya thamani, baadhi siri maneno, baadhi ya idadi ya siri, kwamba
inaruhusu yao wote wawili encrypt na decrypt habari.
Na cryptography, kwa kweli, ni tu hii kutoka wiki 0.
>> Ni tatizo ambapo kuna pembejeo, kama ujumbe halisi katika Kiingereza
au lugha yoyote kwamba wewe unataka kutuma kwa mtu katika darasa,
au katika mtandao.
Kuna baadhi ya pato, ambayo ni kwenda kuwa ujumbe scrambled kwamba
wanataka mpokeaji kupokea.
Na hata kama mtu katika katikati inapata hiyo pia,
wewe hawataki yao kwa lazima kuwa na uwezo wa decrypt yake,
kwa sababu ndani ya hii nyeusi sanduku, au algorithm,
ni baadhi utaratibu, baadhi ya hatua kwa hatua maelekezo, kwa ajili ya kuchukua kwamba pembejeo
na kuwabadili ndani pato, katika hopefully njia salama.
>> Na, kwa kweli, kuna baadhi ya msamiati katika dunia hii kama ifuatavyo.
Nakala wazi ni neno a kompyuta mwanasayansi ingekuwa
kutumia kuelezea pembejeo ujumbe, kama Kiingereza
au lugha kwa kweli chochote unataka kutuma kwa baadhi ya binadamu wengine.
Na kisha nakala ya siri ni kinyang'anyiro kwa enciphered, au encrypted,
version yake.
>> Lakini kuna mtu mwingine ingredient hapa.
Kuna moja pembejeo nyingine kwa ufunguo wa siri cryptography.
Na kwamba ni muhimu yenyewe, ambayo ni, kwa ujumla,
kama tutaweza kuona, posta, au barua, au neno, chochote
algorithm ni kweli anatarajia.
>> Na jinsi gani unaweza decrypt habari?
Jinsi gani unaweza unscramble yake?
Naam, wewe tu kubadili mazao na pembejeo za.
>> Kwa maneno mengine, mara moja mtu inapata ujumbe wako encrypted,
yeye au yeye tu ana kujua ufunguo huo.
Wamepokea nakala ya siri.
Na kwa plugging hizo mbili pembejeo katika mfumo crypto,
algorithm, hii sanduku nyeusi, nje waje maandishi wazi awali.
Na hivyo ndiyo kiwango cha juu sana mtazamo wa kile cryptography ni kweli
yote juu.
>> Basi hebu kupata huko.
Hebu sasa kuangalia chini kofia ya kitu
tumekuwa kuchukua kwa nafasi kwa wiki iliyopita, na katika kikao hiki
here-- kamba.
kamba mwisho wa siku ni tu mlolongo wa wahusika.
>> Ni inaweza kuwa hujambo dunia, au hodi Zamyla, au chochote.
Lakini hiyo ina maana gani kwa kuwa mlolongo wa wahusika?
Kwa kweli, maktaba CS50 inatoa sisi aina data kuitwa kamba.
>> Lakini kuna kweli hakuna kitu kama kamba katika C.
Ni kweli ni tu mlolongo wa tabia, tabia, tabia,
tabia, nyuma, nyuma, kwa nyuma, na nyuma, kuunga ndani ya
ya kumbukumbu ya kompyuta yako, au RAM.
Na tutaangalia zaidi katika kwamba katika baadaye tunapoangalia kumbukumbu yenyewe,
na matumizi, na vitisho kuwa ni kushiriki.
>> Lakini hebu fikiria kamba Zamyla.
Hivyo tu jina la binadamu hapa, Zamyla,
kwamba ni mlolongo wa wahusika, Z-A-M-Y-L-A.
Na sasa hebu tuseme kwamba jina Zamyla ya ni kuwa kuhifadhiwa ndani ya kompyuta
mpango.
>> Naam, anasimama kwa sababu kwamba tunapaswa kuwa na uwezo wa kuangalia wahusika hao
mmoja mmoja.
Hivyo mimi nina kwenda tu kuteka kidogo sanduku kuzunguka jina Zamyla ya hapa.
Na ni kesi katika C kwamba wakati wewe na kamba, kama Zamyla-- na labda
kwamba kamba umefika nyuma kutoka kazi kama kupata kamba,
unaweza kweli kuendesha ni tabia na tabia.
>> Sasa, hii ni germane kwa mazungumzo katika mkono, kwa sababu
katika cryptography kama unataka mabadiliko kwa B, na B na C, na C na D,
na kadhalika, unahitaji kuwa na uwezo kuangalia wahusika binafsi
katika kamba.
Unahitaji kuwa na uwezo wa kubadilisha Z kwa kitu kingine, A
na kitu kingine, M kwa kitu kingine, na kadhalika.
Na hivyo tunahitaji njia, programmatically, hivyo
kusema, katika C kuweza kubadilisha na kuangalia barua ya mtu binafsi.
Na tunaweza kufanya hivyo kama ifuatavyo.
>> Hebu kwenda kichwa nyuma katika CS50 IDE.
Na napenda kwenda mbele na kuunda faili mpya
kwamba Mimi nitakuita wakati huu string0, kama mfano wetu wa kwanza kama, dot c.
Na mimi nina kwenda mbele na mjeledi up kama ifuatavyo.
>> Hivyo ni pamoja na CS50.h, na kisha ni pamoja na kiwango io.h,
ambayo mimi nina karibu kila mara kwenda kuwa na kutumia katika mipango yangu, angalau
awali.
int utupu kuu, na kisha katika hapa mimi nina kwenda kufanya masharti anapata kupata kamba.
Na kisha mimi nina kwenda kwenda mbele na kufanya hili.
Nataka kwenda mbele na, kama kuangalia sanity,
tu kusema, hello, asilimia s, nusu koloni, hufanya kamba 0.
Uh oh, nini mimi kufanya hapa?
Oh, sikuweza kuziba katika.
Hivyo somo la kujifunza, kwamba Haikuwa kukusudia.
>> Hivyo kosa, asilimia zaidi wongofu kuliko hoja data.
Na hii ni wapi, katika line 7-- OK, hivyo nina,
quote unquote, hiyo ni kamba yangu kwa printf.
Mimi nimepata asilimia ishara.
Lakini mimi kukosa hoja ya pili.
>> Mimi kukosa comma s, ambayo Sikuwa na katika mifano uliopita.
Hivyo fursa nzuri ya kurekebisha moja zaidi makosa, ajali.
Na sasa napenda kukimbia string0, aina katika Zamyla.
OK, hello Zamyla.
>> Hivyo tumekuwa kukimbia aina hii ya mpango chache nyakati tofauti sasa.
Lakini hebu kufanya kitu a tofauti kidogo wakati huu.
Badala ya kuchapa tu Zamyla ya jina zima nje na printf,
hebu kufanya hivyo tabia na tabia.
>> Mimi nina kwenda kutumia kwa kitanzi.
Na mimi nina kwenda kutoa mwenyewe kuhesabu kutofautiana, aitwaye i.
Na mimi nina kwenda kuweka iterating, hivyo muda mrefu kama i ni chini ya urefu wa s.
>> Ni zamu nje, hatukuwa kufanya hivyo mara ya mwisho,
kwamba c kuja na kazi kuitwa Stirling.
Nyuma katika siku, na kwa ujumla bado wakati kutekeleza majukumu,
binadamu mara nyingi kuchagua sana majina succinct aina hiyo ya sauti
kama unataka nini, hata kama ni kukosa vowels chache au barua.
Hivyo Stirling ni jina la kazi ambayo
inachukua hoja kati ya mabano kwamba wanapaswa kuwa kamba.
Na ni tu anarudi integer, urefu wa kamba hiyo.
>> Hivyo hii kwa kitanzi kwenye mstari 7 ni kwenda kuanza kuhesabu katika i sawa 0.
Ni kwenda increment i juu ya kila iteration
kwa 1, kama tumekuwa kufanya mara chache.
Lakini ni kwenda tu kufanya up hii mpaka hatua
wakati i ni urefu ya kamba yenyewe.
>> Hivyo hii ni njia ya, hatimaye, iterating juu ya wahusika
katika kamba kama ipo ifuatavyo.
Mimi nina kwenda magazeti nje si zima kamba, lakini asilimia c,
tabia moja ikifuatiwa na mstari mpya.
Na kisha mimi nina kwenda kwenda mbele, na mimi haja
kusema nataka magazeti ith tabia ya s.
>> Hivyo kama i ni kutofautiana kwamba inaonyesha ripoti ya kamba, ambapo
wewe ni katika hilo, mimi haja ya kuwa na uwezo wa kusema, nipe tabia idh ya s.
Na c ina njia ya kufanya huu kwa mabano mraba.
Wewe tu kusema jina la kamba, ambayo katika kesi hii ni s.
Basi kutumia mabano mraba, ambayo ni kawaida tu juu Return yako au kuingia
muhimu kwenye keyboard.
Na kisha kuweka ripoti ya tabia ya kuwa wewe unataka magazeti.
Hivyo index ni kwenda kuwa number-- 0, au 1, au 2, au 3, au dot,
dot, dot, baadhi namba nyingine.
>> Na sisi kuhakikisha kwamba ni kwenda kuwa idadi ya haki, kwa sababu mimi
kuanza kuhesabu saa 0.
Na by default, tabia ya kwanza katika kamba ni kwa mkataba 0.
Na tabia ya pili ni bracket 1.
Na tabia ya tatu ni bracket 2.
Na wewe hawataki kwenda pia mbali, lakini sisi si kwa sababu tuko
kwenda tu increment i mpaka sawa na urefu wa kamba.
Na ambapo kiwango, hii kwa kitanzi kuacha.
>> Hivyo basi mimi kwenda mbele na kuokoa hii mpango, na kukimbia kufanya kamba 0.
Lakini mimi Star up.
Implicitly kutangaza kazi maktaba Stirling na aina hiyo na such-- sasa,
hii inaonekana familiar.
Lakini si printf.
Na si kupata kamba.
>> Sikuwa screw up katika njia hiyo hiyo wakati huu.
Lakini taarifa chini hapa kidogo chini zaidi, ni pamoja na header string.h,
waziwazi kutoa tamko kwa Stirling.
Kwa hiyo, kuna kweli fununu huko.
>> Na hakika ni zamu nje kuna faili nyingine header
kwamba tumekuwa si kutumika darasani bado, lakini ni
miongoni mwa wale inapatikana na wewe, iitwayo string.h.
Na kwa kuwa faili, string.h ni Stirling alitangaza.
Hivyo basi mimi kwenda mbele na kuokoa hii, kufanya kamba
0-- nzuri, ujumbe hakuna kosa wakati huu.
>> ./string0 Zamyla, na Mimi nina kuhusu hit Enter,
ambapo kiwango GetString ni kwenda kurudi kamba, kuiweka katika s.
Basi hiyo kwa kitanzi ni kwenda iterate zaidi ya wahusika S ya moja kwa wakati mmoja,
na magazeti yao moja kwa kila mstari, kwa sababu Mimi nilikuwa na kwamba backslash n mwishoni.
Ili niweze saza kwamba backslash n, na kisha tu magazeti Zamyla zote
katika mstari huo huo, ufanisi reimplementing
printf, ambayo si wote kwamba ni muhimu.
Lakini katika kesi hii, nimekuwa si amefanya hivyo.
Nimekuwa kwa kweli kuchapishwa moja tabia wakati huo, moja kwa kila mstari,
ili tuweze kweli kuona athari.
>> Lakini ni lazima kutambua jambo moja hapa.
Na tutaweza kuja nyuma huu katika wiki zijazo.
Ni zinageuka kuwa hii code ni uwezekano wa buggy.
>> Ni zinageuka kuwa string get na baadhi ya majukumu mengine katika maisha
si lazima kila mara kurudi nini wewe kutarajia.
Tunajua kutokana na tabaka la mwisho muda katika hili kwamba kupata
kamba zinatakiwa kurudi kamba.
Lakini nini kama user aina nje kama neno kwa muda mrefu, au aya, au insha
kwamba kuna tu haitoshi kumbukumbu katika kompyuta na kifafa yake.
>> Kama, nini kama kitu fulani kitaenda vibaya chini ya Hood?
Ni inaweza kutokea mara nyingi, lakini inaweza kutokea mara moja
kwa wakati, kwa nadra sana.
Na hivyo zinageuka kuwa string get na kazi kama hiyo si lazima
daima kurudi masharti.
Wapate kurejea baadhi ya thamani makosa, baadhi ya thamani sentinel hivyo kusema,
kwamba inaonyesha kwamba kitu amekwenda vibaya.
Na ungependa tu kujua hii kutoka baada ya kujifunza darasani sasa,
au baada ya kusoma baadhi ya nyaraka zaidi.
Ni zinageuka kuwa string get anaweza kurudi thamani aitwaye null.
Null ni thamani maalum kwamba tutaweza kurudi katika wiki zijazo.
Lakini kwa sasa, tu kujua kwamba kama nataka kuwa kweli sahihi katika kusonga mbele
kutumia kupata kamba, I lazima sio tu simu yake,
na upofu kutumia kurudi thamani yake, kuamini kwamba ni kamba.
>> Mimi lazima kwanza kusema, hey, kusubiri dakika, tu
kuendelea kama s haina sawa null, ambapo null, tena,
ni baadhi tu ya thamani maalum.
Na ni tu thamani maalum haja ya kuwa na wasiwasi kuhusu kwa kupata kamba.
Kupata kamba ni kwenda aidha kurudi kamba au null.
>> Na hii hatua Moderators sawa na ishara unaweza kujua kutoka labda math darasani
kwamba unaweza kuteka ishara sawa na line kwa njia hiyo zinaonyesha si sawa.
Hiyo si kwa ujumla tabia unaweza aina kwenye keyboard yako.
Na hivyo katika lugha nyingi programu, wakati unataka kusema si sawa,
matumizi mshangao uhakika, inayojulikana kama bang.
Hivyo unaweza kusema bang sawa, ambayo maana yake si sawa, kifikra.
Ni kama tu kuna si mkuu kuliko, au sawa na, au chini ya
au sawa na muhimu kwenye keyboard yako kwamba gani wote katika alama moja.
Hivyo ndiyo sababu, katika mifano ya zamani, ulifanya bracket wazi, na kisha
ishara sawa, ili kufanya kubwa zaidi kuliko au, kusema, chini ya.
>> Basi nini takeaway hapa?
Hili ni njia sasa ya kuanzisha syntax hii, kipengele hiki,
iterating juu ya mtu binafsi wahusika katika kamba.
Na kama wale mraba mabano itawawezesha kupata saa yao,
kufikiria mabano wale mraba kama aina ya hinting katika hii ya msingi
kubuni, ambapo kila tabia ndani ya kamba
ni aina ya boxed katika mahali fulani chini kofia katika kumbukumbu ya kompyuta yako.
>> Lakini hebu kufanya lahaja ya hii.
Ni zinageuka kuwa hii mpango ni sahihi.
Hivyo kwa shoka CS50 kwa ajili ya kutathmini kanuni, hii ni sahihi sasa.
Hasa sasa kwamba mimi nina kuangalia kwa null, mpango huu kamwe ajali.
Na mimi tu kujua kwamba kutokana na uzoefu.
Lakini kuna kitu kingine kwamba tunaweza kweli kwenda vibaya hapa.
Lakini si sana vizuri iliyoundwa, kwa sababu hebu kwenda nyuma ya msingi.
>> Kwanza, principles-- je kwa kitanzi nini?
A kwa kitanzi anafanya mambo matatu.
Ni initializes baadhi thamani, kama kuuliza kwa.
Ni hundi hali hiyo.
Na kisha baada ya kila iteration, baada ya kila mzunguko,
ni nyongeza baadhi thamani, au maadili, hapa.
>> Hivyo hiyo ina maana gani?
Sisi initialize i kwa 0.
Sisi kuangalia na kuhakikisha i ni chini ya urefu wa s, ambayo ni Z-A-M-Y-L-A,
hivyo ambayo ni chini ya 6.
Na, kwa hakika, 0 kama chini ya 6.
>> Sisi magazeti nje Z kutoka jina Zamyla ya.
Kisha sisi increment i 0 na 1.
Sisi kisha kuangalia, ni 1 chini kuliko urefu wa s?
urefu wa s ni 6.
Kweli ni hiyo.
>> Hivyo sisi magazeti katika jina Zamyla ya, ZA.
Sisi increment i kutoka 0, 1, 2.
Sisi kisha kuangalia, ni 2 chini ya urefu wa jina Zamyla ya.
6- hivyo 2 ni chini ya 6.
Ndiyo, hebu magazeti nje sasa M katika jina Zamyla ya, tabia ya tatu.
>> muhimu hapa ni kwamba kwenye kila iteration ya hadithi, mimi nina kuangalia,
ni i chini ya urefu wa Zamyla?
Lakini samaki ni kwamba Stirling si mali.
Wale wa wewe ambao iliyowekwa kabla katika Java au lugha nyingine
wapate kujua urefu wa kamba ni mali, baadhi tu kusoma thamani tu.
>> Katika C katika kesi hii, kama hii ni kazi ambayo ni literally
kuhesabu idadi ya wahusika katika Zamyla kila wakati
tunatoa wito kwamba kazi.
Kila wakati wewe kuuliza kompyuta kwa kutumia Stirling, ni kuchukua kuangalia Zamyla,
na kusema Z-A-M-Y-L-A, 6.
Na kuirudisha 6.
wakati ujao wewe kuwaita ndani kwamba kwa kitanzi,
ni kwenda kuangalia Zamyla tena, kusema Z-A-M-Y-L-A, 6.
Na ni kwenda na kurudi 6.
Basi nini kijinga kuhusu mpango huu?
>> Kwa nini ni kanuni yangu si 5 nje ya 5 kwa ajili ya kubuni sasa hivi, hivyo kusema?
Naam, mimi nina kuuliza swali usiokuwa.
Mimi nina kufanya kazi zaidi kuliko mimi haja ya.
>> Hivyo hata ingawa jibu ni sahihi, I am
kuuliza kompyuta, ni nini urefu wa Zamyla tena,
na tena, na tena, na tena?
Na jibu kwamba ni kamwe kwenda na mabadiliko.
Ni daima kwenda kuwa 6.
>> Hivyo suluhisho bora zaidi kuliko haya itakuwa hii toleo la pili.
Hebu kwenda mbele na kuiweka katika tofauti faili inayoitwa string1.c,
tu kushika ni tofauti.
Na zinageuka katika kwa kitanzi, unaweza kweli
kutangaza vigezo mbalimbali kwa mara moja.
>> Hivyo nina kwenda kuweka i na kuweka kwa 0.
Lakini mimi nina pia kwenda kuongeza comma, na kusema,
nipe variable kuitwa n, ambaye thamani sawa na urefu wa kamba s.
Na sasa, tafadhali kufanya hali yangu hivyo muda mrefu kama i ni chini ya n.
>> Hivyo kwa njia hii, mantiki ni kufanana mwisho wa siku.
Lakini Mimi kukumbuka thamani 6, katika kesi hii.
urefu wa jina Zamyla ni nini?
Na mimi nina kuweka katika n.
>> Na mimi nina bado kuangalia hali kila wakati.
Ni 0 chini ya 6?
Ni 1 chini ya 6?
Ni 2 chini ya 6, na kadhalika?
>> Lakini Mimi si kuuliza kompyuta tena, na tena, nini
urefu wa jina Zamyla ya?
Nini urefu wa jina Zamyla ya?
Nini urefu wa jina hili Zamyla ya?
Mimi nina literally kukumbuka kwamba kwanza na tu kujibu katika hili kutofautiana n pili.
Hivyo hii sasa itakuwa si tu sahihi, lakini pia vizuri iliyoundwa.
>> Sasa, nini kuhusu style?
Nimekuwa aitwaye vigezo yangu pretty vizuri, napenda kusema.
Wao ni super succinct hivi sasa.
Na kwamba ni kabisa faini.
>> Kama una moja kamba katika mpango,
unaweza pia kuiita s kwa kamba.
Kama wewe tu kuwa na kutofautiana moja kwa kuhesabu katika mpango,
unaweza pia simu yake i.
Kama una urefu, n ni super kawaida vilevile.
Lakini kama sijazungumza yoyote ya kanuni yangu.
>> Nimekuwa si taarifa reader-- kama hiyo ni TF yangu, au TA,
au tu colleague-- nini walidhani kuwa kinachoendelea katika mpango huu.
Na hivyo kupata style nzuri, nini napenda wanataka kufanya
ni hii kitu kama kuuliza mtumiaji kwa ajili ya pembejeo.
Na mimi naweza kuandika upya huu idadi yoyote ya njia.
>> Kuhakikisha s-- kuhakikisha get kamba akarudi kamba.
Na kisha katika here-- na hii ni labda muhimu zaidi comment-- iterate
juu ya wahusika katika s moja kwa wakati.
Na mimi naweza kutumia yoyote uchaguzi wa lugha ya Kiingereza
hapa kuelezea kila ya chunks hizi za kificho.
>> Taarifa kwamba mimi si kuweka kutoa maoni juu ya kila mstari wa kanuni,
kweli tu juu ya kuvutia ndio, wale ambao
kuwa na baadhi ya maana ili nipate wanataka kufanya super wazi kwa mtu
kusoma kanuni yangu.
Na mbona wito kupata kamba kuuliza user kwa ajili ya pembejeo?
Hata kuwa mtu ni si lazima kwamba maelezo yote.
Lakini inasaidia kuwaambia hadithi, kwa sababu mstari wa pili katika hadithi ni, kuhakikisha
kupata kamba akarudi kamba.
>> Na mstari wa tatu katika hadithi ni, iterate juu ya wahusika katika s moja
kwa wakati.
Na sasa tu kwa ajili ya hatua nzuri, Mimi nina kwenda mbele na kuongeza
moja zaidi maoni kwamba tu anasema magazeti i-th tabia katika s.
Sasa, ni nini nimefanya mwisho wa siku?
>> Nimeongeza baadhi English maneno kwa namna ya maoni.
ishara kufyeka kufyeka ina maana, hey, kompyuta hii ni kwa binadamu,
si kwa ajili yenu, kompyuta.
Hivyo wao ni kupuuzwa kifikra.
Wao uko pale tu.
>> Na, kwa hakika, CS50 IDE inaonyesha yao kama Gray, kama kuwa muhimu, lakini si muhimu
kwa mpango.
Taarifa ya nini sasa unaweza kufanya.
Kama unajua C programu au la,
unaweza tu kusimama nyuma katika jambo hili mpango, na skim comments.
Kuuliza mtumiaji kwa ajili ya pembejeo, kuhakikisha kupata kamba akarudi kamba,
iterate juu ya wahusika katika s moja kwa wakati mmoja, magazeti tabia
i-th tabia katika s-- huna hata kuwa na kuangalia kanuni
kuelewa nini mpango huu gani.
Na, bado bora, kama wewe mwenyewe kuangalia katika mpango huu katika wiki moja au mbili,
au mwezi, au mwaka, wewe pia hawana
kodolea code, kujaribu kukumbuka,
kilichokuwa mimi kujaribu kufanya na kanuni hii?
>> Umefanya aliiambia mwenyewe.
Umefanya alieleza kwa ajili yako mwenyewe, au baadhi ya mwenzake, au TA, au TF.
Na hivyo hii sasa kuwa sahihi, na kubuni nzuri,
na hatimaye nzuri style vilevile.
Hivyo kufanya kuendelea kuwa katika akili.
>> Hivyo kuna mtu mwingine kitu mimi nina kwenda kufanya hapa
kwamba sasa unaweza yatangaza hasa nini kinachoendelea chini ya Hood.
Hivyo kuna kipengele hiki katika C, na lugha nyingine,
aitwaye typecasting kuwa ama inamuunga
au waziwazi utapata kubadilisha kutoka aina moja hadi nyingine data.
Tumekuwa kushughulika hivyo mbali leo na masharti.
>> Na masharti ni wahusika.
Lakini kukumbuka kutoka wiki 0, ni nini wahusika?
Wahusika ni tu uchukuaji juu ya idadi numbers-- decimal,
na idadi decimal ni kweli tu uchukuaji juu ya idadi binary,
kama sisi kuelezwa yake.
>> Hivyo wahusika ni namba.
Na idadi ni wahusika, tu kulingana na mazingira.
Na zinageuka kuwa ndani ya ya programu ya kompyuta,
unaweza bayana jinsi unataka kuangalia katika bits ndani ya mpango huo?
>> Kumbuka kutoka wiki 0 kwamba tulikuwa Ascii, ambayo ni tu kanuni hii
barua ramani ya namba.
Na tulisema, mji mkuu wa A ni 65.
Capital B ni 66, na kadhalika.
>> Na taarifa, sisi kimsingi kuwa chars juu ya safu ya juu hapa, kama C kuita yao,
wahusika, na kisha ints juu ya mstari wa pili.
Na zinageuka unaweza kubadilisha seamlessly kati ya mbili, kawaida.
Na kama tunataka kufanya hii kwa makusudi, sisi
kutaka kukabiliana na kitu kama hiki.
>> Sisi kutaka kubadilisha kesi ya juu ya kupunguza
kesi, au kesi ya chini kwa kesi ya juu.
Na zinageuka kuna ya kweli mfano hapa
tunaweza kukubaliana na katika muda tu.
Lakini hebu tuangalie kwanza katika mfano wa kufanya hivyo waziwazi.
>> Mimi nina kwenda nyuma katika CS50 IDE.
Mimi nina kwenda kujenga faili inayoitwa Ascii 0.c.
Na mimi nina kwenda mbele na kuongeza yangu kiwango io.h saa ya juu, int kuu utupu
utafutaji juu ya kazi yangu.
Na kisha mimi nina kwenda tu kufanya following-- kwa kitanzi kutoka i sawa,
hebu sema, 65.
>> Na kisha i ni kwenda kuwa chini ya 65, plus barua 26 katika alfabeti.
Hivyo mimi itabidi basi kompyuta kufanya math kwa ajili yangu huko.
Na kisha ndani ya kitanzi hii, je, Mimi kwenda magazeti?
>> % C ni% i backslash n.
Na sasa nataka kuziba katika maadili mbili.
Nimekuwa muda kuweka swali alama huko kukaribisha swali.
>> Nataka iterate kutoka 65 na kuendelea kwa barua 26 za alfabeti,
uchapishaji nje juu ya kila iteration kwamba tabia ya muhimu sawa.
Kwa maneno mengine, nataka iterate juu ya 26 idadi ya uchapishaji
nini tabia Ascii ni, barua, na nini idadi inayolingana is--
kweli tu recreating chati kutoka slide hiyo.
Hivyo kile lazima alama swali hivi ni nini?
>> Naam, zinageuka kuwa wa pili moja lazima tu kuwa kutofautiana i.
Nataka kuona kwamba kama idadi.
Na hoja katikati hapa, siwezi kuwaambia kompyuta
kutibu kwamba integer i kama tabia, hivyo kama
mbadala ni hapa kwa asilimia C.
>> Kwa maneno mengine, kama mimi, programu binadamu, kujua
hizi ni hesabu tu mwisho wa siku.
Nami najua kuwa 65 lazima ramani kwa baadhi ya tabia.
Na kutupwa hii wazi, na mabano,
jina la aina data unataka kubadilisha na, na kufungwa mabano,
unaweza kuwaambia kompyuta, hey, kompyuta,
kubadilisha integer huu kwa char.
>> Hivyo wakati mimi kukimbia hii mpango baada ya kuandaa,
hebu angalia nini mimi get-- kufanya Ascii 0.
Darn yake, nini mimi kufanya makosa hapa?
Matumizi ya Undeclared kitambulisho, yote ya haki, si kukusudia,
lakini hebu angalia kama hatuwezi sababu kwa njia hii.
>> Hivyo line five-- hivyo sikuweza kupata mbali sana kabla screwing up.
Hiyo ni sawa.
Hivyo line 5 kwa i sawa na 65-- naona.
Basi kumbuka kwamba katika C, tofauti na baadhi Lugha kama una programu kabla
uzoefu, una kuwaambia kompyuta,
tofauti Scratch, nini aina ya kutofautiana ni.
>> Na mimi alisahau maneno muhimu hapa.
Katika mstari tano, nimeanza kutumia i.
Lakini sikumwambia C nini data aina ni.
Hivyo mimi nina kwenda katika hapa na kusema, ah, kufanya hivyo integer.
>> Sasa mimi nina kwenda mbele na recompile.
Hiyo fasta hiyo.
./ascii0 Weka, hiyo ni aina ya baridi.
Si tu ni super haraka kuuliza kompyuta swali hili,
badala ya kuangalia ni juu ya slide, ni kuchapishwa moja kwa kila mstari, A ni 65,
B ni 66, njia yote down-- tangu mimi alifanya hivyo 26 times-- kwa barua z,
ambayo ni 90.
Na, kwa kweli, kidogo zaidi akili ingekuwa
wamekuwa ajili yangu si ya kutegemea kwenye kompyuta kuongeza 26.
Mimi naweza kuwa tu kufanyika 90 kama vile, hivyo kwa muda mrefu
kama mimi si kufanya makosa huo mara mbili.
Nataka kwenda juu kupitia z, si tu juu kupitia y.
>> Hivyo hiyo ni kutupwa wazi.
Ni zinageuka kuwa hii si hata muhimu.
Hebu kwenda mbele na rerun hii compiler, na rerun Ascii 0.
Ni zinageuka kuwa C ni pretty smart.
>> Na printf, hasa, ni pretty smart.
Kama wewe tu kupita i mara mbili kwa placeholders zote mbili, printf
kutambua, oh, vizuri Najua aliyonipa integer-- idadi fulani,
kama 65, au 90, au chochote.
Lakini naona kwamba unataka mimi muundo idadi hiyo kama tabia.
Na hivyo printf unaweza implicitly kutupwa the int kwa char kwa ajili yenu pia.
Hivyo si kwamba tatizo wakati wote.
>> Lakini taarifa, kwa sababu ya yanayolinagana hii tunaweza kweli kufanya hivyo pia.
Hebu kwenda mbele na kufanya moja mengine toleo la Haya Ascii 1.c
Na badala ya iterating juu integers, unaweza kweli pigo akili yako
na iterating juu ya wahusika.
Kama char c anapata mji mkuu wa A, I wanataka kwenda mbele na kufanya hili,
hivyo muda mrefu kama C ni chini ya au sawa kwa mtaji Z. Na juu ya kila iteration
Nataka increment C, naweza sasa katika printf line yangu hapa
kusema, asilimia C ni asilimia i tena, comma C.
>> Na sasa, siwezi kwenda upande mwingine, akitoa tabia waziwazi
kwa integer.
Hivyo, tena, kwa nini unaweza kufanya hili?
Ni weird kidogo ya kutatua ya kuhesabu katika suala la wahusika.
>> Lakini kama wewe kuelewa nini kinachoendelea chini ya Hood,
kuna kweli hakuna uchawi.
Wewe ni kusema tu, hey, kompyuta kutoa me kutofautiana kuitwa C ya aina char.
Initialize kwa mtaji A. And taarifa quotes moja suala hilo.
>> Kwa wahusika katika C, kukumbuka kutoka wiki iliyopita, wewe kutumia quotes moja.
Kwa masharti, kwa maneno, maneno, matumizi quotes mbili.
OK, kompyuta, kuendelea kufanya hili, hivyo muda mrefu kama tabia ni chini ya
au sawa na z.
Na ninajua kwa Ascii meza yangu kwamba wote ya kanuni hizi Ascii ni contiguous.
>> Hakuna mapungufu.
Hivyo ni tu kupitia Z, kutengwa kwa namba moja kila mmoja.
Na kisha naweza increment char, kama mimi kweli unataka.
Mwisho wa siku, ni tu idadi.
Mimi najua hili.
Hivyo siwezi tu presume kuongeza 1 na hiyo.
>> Na kisha wakati huu, mimi magazeti c, na kisha muhimu sawa.
Na mimi hawana hata haja ya kutupwa wazi.
Siwezi basi printf na kompyuta takwimu mambo ya nje,
ili sasa kama mimi kukimbia kufanya Ascii1./ascii1,
Mimi kupata exact kitu kama vile.
>> Haina maana mpango, though-- hakuna mtu ni kwenda kweli kuandika programu
ili kufikiri, nini ilikuwa idadi hiyo elekezi A, au B, au Z?
Wewe ni kwenda tu kwa Google ni, au kuangalia ni juu online, au kuangalia ni juu
juu ya slide, au kama.
Hivyo ambapo gani hii kweli kupata manufaa?
>> Naam, akizungumza ya kwamba slide, taarifa kuna
mfano halisi hapa kati ya herufi kubwa na ndogo ambayo haikuwa ajali.
Taarifa kwamba mtaji A ni 65.
Lowercase a ni 97.
Na jinsi mbali mbali ni chini kesi?
>> Hivyo 65 ni hatua ngapi mbali na 97?
Hivyo 97 bala 65 ni 32.
Hivyo mji mkuu a ni 65.
Ikiwa kuongeza 32 na kwamba, kupata Herufi za chini.
Na, equivalently, kama wewe Ondoa 32, kupata nyuma ya mji mkuu A-- sawa na B
kwa b kidogo, big C kwa c kidogo.
>> Wote wa mapengo haya ni 32 mbali.
Sasa, hii inaweza kuonekana kuruhusu sisi kufanya kitu kama Microsoft Word,
au Google Docs kipengele, ambapo Unaweza kuchagua kila kitu na kisha kusema,
mabadiliko yote na Herufi za chini, au mabadiliko yote ya kesi ya juu,
au kubadilisha tu neno la kwanza ya hukumu ya kesi ya juu.
Tunaweza kweli kufanya kitu kama kwamba sisi wenyewe.
>> Hebu kwenda mbele na kuokoa faili hapa aitwaye capitalize 0.c.
Na hebu kwenda mbele na mjeledi juu ya mpango kwamba gani hasa kwamba kama ifuatavyo.
Hivyo ni pamoja na maktaba CS50.
Na ni pamoja na kiwango I / O.
>> Na najua hii ni kuja hivi karibuni.
Hivyo nina kwenda kuiweka katika huko tayari, string.h,
hivyo mimi kuwa na upatikanaji wa mambo kama Stirling,
na kisha int utupu kuu, kama kawaida.
Na kisha mimi nina kwenda mbele na kufanya masharti anapata kupata kamba,
tu kupata kamba kutoka kwa mtumiaji.
Na kisha mimi nina kwenda kufanya sanity yangu hundi.
Kama kamba haina sawa null, kisha ni salama kuendelea.
Na nini nataka kufanya?
Mimi nina kwenda iterate kutoka i sawa 0, na n hadi urefu wa kamba s.
>> Na mimi nina kwenda kufanya hili kwa muda mrefu kama i ni chini ya n, na i plus plus.
Hadi sasa, mimi nina kweli tu kukopa mawazo kutoka kabla.
Na sasa mimi nina kwenda kuanzisha tawi.
>> Hivyo kufikiri nyuma kwa Scratch, ambapo tulikuwa na forks wale walio katika barabara,
na wiki iliyopita katika C. Mimi nina kwenda kusema hii, kama i-th tabia katika s
ni kubwa zaidi kuliko au sawa na kesi ya chini,
and-- katika Scratch wewe ungekuwa literally kusema na, lakini katika C wewe kusema Ampersand,
ampersand-- na tabia i-th katika s ni chini ya au sawa na kesi z chini,
hebu kufanya kitu kuvutia.
Hebu kweli magazeti nje tabia na hakuna newline
kwamba ni tabia katika kamba, i-th tabia katika kamba.
>> Lakini hebu kwenda mbele na Ondoa 32 kutoka humo.
Mwingine kama tabia katika kamba kwamba sisi ni kuangalia
siyo kati ya a kidogo na kidogo z, kwenda mbele
na tu kuchapishwa nje bila kubadilika.
Hivyo tumekuwa kuletwa nukuu hii mabano
kwa masharti yetu ya kupata saa i-th tabia katika kamba.
>> Nimekuwa aliongeza baadhi mantiki masharti, kama Mwanzo katika wiki moja wiki iliyopita, ambapo
Mimi tu kutumia msingi yangu uelewa wa nini
kinachoendelea chini ya Hood.
Ni i-th tabia ya s kubwa kuliko au sawa na?
Kama, ni 97, au 98, au 99, na kadhalika?
>> Lakini ni pia chini ya au sawa kwa thamani ya z lowercase?
Na kama hivyo, je, mstari huu ina maana gani?
14, hii ni aina ya kijidudu ya wazo zima,
herufi na tu subtracting 32 kutoka hayo,
katika kesi hii, kwa sababu najua, per kwamba chati, jinsi namba yangu ni kuwakilishwa.
Basi hebu kwenda mbele na kukimbia hii, baada ya kuandaa capitalize 0.c,
na kukimbia capitalize 0.
>> Hebu aina katika kitu kama Zamyla katika lowercase wote kuingia.
Na sasa tuna Zamyla katika uppercase wote.
Hebu aina katika Rob katika lowercase wote.
Hebu jaribu Jason katika lowercase wote.
Na sisi kuendelea kupata kulazimishwa mtaji.
Kuna mdudu madogo kwamba mimi aina ya Hawakutarajia.
Taarifa haraka yangu mpya ni kuishia juu ya mstari huo kama majina yao,
ambayo anahisi messy kidogo.
>> Hivyo mimi nina kwenda hapa, na kweli mwisho wa mpango huu
magazeti nje tabia newline.
Ni hayo tu.
Pamoja printf, huna haja ya kupita katika vigezo au format kificho.
Unaweza literally tu magazeti kitu kama newline.
>> Basi hebu kwenda mbele na kufanya capitalize 0 tena, rerun yake, Zamyla.
Na sasa ni kidogo prettier.
Sasa, haraka yangu ni juu ya line yake mwenyewe mpya.
Basi hiyo ni yote faini na nzuri.
Hivyo hiyo ni mfano mzuri.
Lakini mimi si hata lazima haja ya kificho ngumu 32.
Unajua nini?
Mimi naweza say-- mimi si milele kumbuka nini tofauti ni.
>> Lakini najua kwamba kama mimi na chini kesi barua,
Mimi kimsingi wanataka Ondoa mbali chochote umbali ni kati ya kidogo
a na big A, kwa sababu kama mimi kudhani kuwa wote wa barua nyingine ni sawa,
kwamba lazima kupata kazi kufanyika.
Lakini badala ya kufanya hivyo, unajua nini?
Kuna njia nyingine bado.
>> Kama hiyo capitalize 1.c-- kama ningekuwa kuweka kwamba katika faili tofauti.
hebu kufanya capitalize 2.c kama ifuatavyo.
Mimi nina kwenda kwa kweli safi hii up hapa.
Na badala ya hata ya kuwa na kujua au huduma kuhusu kiwango cha wale
maelezo ya utekelezaji, mimi nina badala tu kwenda magazeti tabia,
quote unquote, asilimia C, na kisha piga kazi nyingine kwamba
upo kwamba inachukua hoja, ambayo ni tabia, kama hii.
>> Ni zinageuka katika C, kuna kazi nyingine wito
kwa juu, ambayo kama jina lake unaonyesha inachukua tabia
na hufanya hivyo kwa kesi yake ya juu sawa, na kisha anarudi
ili printf unaweza kuziba katika huko.
Na hivyo kufanya hili, ingawa, mimi haja ya kuanzisha faili nyingine moja.
Ni zamu huko nje ni faili mwingine kuwa wewe tu kujua kutoka darasani,
au vitabu vya kiada, au online kumbukumbu, aitwaye C type.h.
>> Hivyo kama mimi kuongeza kwamba hadi kati header yangu files, na sasa re-kukusanya mpango huu,
capitalize2, ./capitalize2 kuingia.
Hebu aina katika Zamyla katika yote lowercase, bado kazi hiyo.
Lakini unajua nini?
Ni zinageuka kuwa kwa juu ina baadhi ya utendaji mengine.
>> Na napenda kuanzisha hii amri hapa, aina ya awkwardly
jina lake, lakini mtu kwa mwongozo.
Ni zinageuka kuwa zaidi ya kompyuta Linux, kama sisi ni kutumia here-- Linux uendeshaji
system-- kuwa na amri alimwita mtu, ambayo anasema,
hey, kompyuta, nipe mwongozo kompyuta.
Je, unataka kuangalia juu katika mwongozo kwamba?
>> Nataka kuangalia up kazi ameitwa juu, kuingia.
Na ni kidogo cryptic kusoma wakati mwingine.
Lakini taarifa tuko katika Linux programu ya mwongozo.
Na ni wote wa maandishi.
Na taarifa kwamba kuna jina la kazi hapa.
Ni zinageuka ina binamu aitwaye kupunguza, ambayo haina kinyume.
Na taarifa chini ya Synopsis, kwa kutumia hii kazi mtu ukurasa, hivyo kusema,
ananiambia kwamba mimi haja ya ni pamoja c type.h.
Na nilijua kuwa kutokana na mazoezi.
>> Hapa, ni kuonyesha me wawili prototypes kwa ajili ya kazi,
ili kama mimi milele wanataka kutumia hii Mimi najua kile wao kuchukua kama pembejeo,
na wanayo kurudi kama pato.
Na kisha kama mimi kusoma maelezo, naona
kwa undani zaidi nini kazi gani.
Lakini muhimu zaidi, kama Mimi kuangalia chini ya thamani ya kurudi,
inasema thamani akarudi ni ile ya barua waongofu,
au C, pembejeo awali, kama kubadilika haikuwezekana.
>> Kwa maneno mengine, kwa juu watajaribu kubadili barua kwa kesi ya juu.
Na kama hivyo, ni kwenda kulirudisha.
Lakini kama hawawezi kwa baadhi reason-- labda ni kesi tayari juu,
labda ni mshangao uhakika au baadhi punctuation-- mengine
ni tu kwenda kwa kurudi C awali,
ambayo ina maana siwezi kufanya kanuni yangu bora iliyoundwa kama ifuatavyo.
>> Sina haja zote za mistari haya darn ya kanuni.
Yote ya mistari nimekuwa tu yalionyesha Unaweza
kuwa kuanguka ndani ya rahisi moja tu Mpya, ambayo ni hii asilimia printf
c kwa juu S mabano i.
Na hii itakuwa mfano wa kubuni bora.
>> Kwa nini kutekeleza katika mistari 7 au 8 ya kificho, chochote ilikuwa mimi tu
kuchapa, wakati unaweza badala kuzimia yote ya kwamba mantiki na kufanya maamuzi
katika upinzani moja, 13 sasa, kwamba hutegemea maktaba function--
kazi ambayo inakuja na C, lakini hiyo gani hasa nini unataka kufanya.
Na, kusema ukweli, hata kama hakuwa na kuja na C,
unaweza kutekeleza ni wewe mwenyewe, kama tumeona, na kupata int hasi
na kupata chanya int wiki iliyopita pia.
>> Kanuni hii sasa ni zaidi someka.
Na kwa kweli, kama sisi kitabu juu, kuangalia ni kiasi gani zaidi kompakt
hili toleo la mpango wangu ni.
Ni kidogo juu nzito sasa, na haya yote ni pamoja na.
Lakini hiyo ni sawa, kwa sababu sasa mimi nina amesimama juu ya mabega ya programmers
kabla yangu.
Na anaye ni nani kutekelezwa kwa juu kweli
alifanya mimi neema, kiasi kama yeyote kutekelezwa Stirling kweli
alifanya yangu neema baadhi ya wakati uliopita.
Na hivyo sasa tuna kubuni mpango bora
kwamba zana halisi mantiki hiyo hiyo.
>> Akizungumza ya Stirling, basi mimi kwenda mbele na kufanya hili.
Hebu kwenda mbele na kuokoa faili hii kama stirling.c.
Na zinageuka, tunaweza peel nyuma wengine safu moja pretty tu sasa.
Mimi nina kwenda mbele na mjeledi up mpango mwingine katika kuu
hapa kwamba tu re-zana urefu wa kamba kama ifuatavyo.
Hivyo hapa ni mstari wa kanuni kwamba anapata mimi kamba kutoka kwa mtumiaji.
Sisi kuendelea kutumia hii tena na tena.
Napenda kutoa mwenyewe kutofautiana kuitwa n ya aina int kwamba maduka idadi.
>> Na napenda kwenda mbele na kufanya mantiki zifuatazo.
Wakati tabia n-th katika s anafanya si sawa backslash 0, kwenda mbele
na increment n.
Na kisha magazeti nje printf asilimia i n.
Mimi kudai kwamba mpango huu hapa, bila wito urefu wa kamba,
takwimu za nje urefu wa kamba.
>> Na uchawi ni kabisa zimegawanywa katika mstari wa 8
hapa na kile kinachoonekana kama syntax mpya, hii backslash 0 katika quotes moja.
Lakini kwa nini ni kwamba?
Hebu fikiria nini imekuwa kinachoendelea muda wote huu.
>> Na kama kando kabla ya mimi kusahau, kutambua pia kwamba, katika Mbali na kurasa mtu
kwamba kuja na kawaida Linux mfumo kama CS50 IDE,
kutambua kwamba sisi, wafanyakazi bila shaka, wana pia
alifanya tovuti version ya wazo moja hii inaitwa
reference.cs50.net, ambayo ina wote wa wale kurasa huo mtu,
yote ya kwamba huo nyaraka, kama vile
sanduku kidogo utafutaji juu ambayo inaruhusu wewe kubadili yote ya haki
lugha arcane katika chini ya starehe mode, ambapo sisi, wafanyakazi wa kufundisha,
zimeweza kupitia na kujaribu kurahisisha baadhi ya lugha kwa kuweka mambo
ililenga mawazo, na si baadhi ya technicalities.
Hivyo kukumbuka, reference.cs50.net kama rasilimali nyingine kama vile.
>> Lakini kwa nini urefu wa kamba kazi katika njia ya mimi mapendekezo wakati iliyopita?
Hapa ni jina Zamyla tena.
Na hapa ni jina Zamyla ya Boxed katika, kama mimi kuendelea kufanya,
rangi picha ya ni kuwa, kweli, tu mlolongo wa wahusika.
Lakini Zamyla haipo katika kutengwa katika mpango.
>> Wakati kuandika na kuendesha programu, unatumia Mac au PC yako
kama kumbukumbu, au RAM hivyo kusema.
Na unaweza kufikiria kompyuta yako kama kuwa na
kura ya gigabytes ya kumbukumbu siku hizi.
Na GIG ina maana mabilioni, hivyo mabilioni ya ka.
>> Lakini hebu rewind kwa wakati.
Na kudhani kwamba sisi ni kutumia kompyuta kweli umri kwamba
tu ina 32 ka ya kumbukumbu.
Mimi naweza, kwenye kompyuta screen yangu, tu kuteka hii nje kama ifuatavyo.
>> Mimi naweza tu kusema kwamba yangu kompyuta ina wote wa kumbukumbu hii.
Na hii ni kama fimbo ya kumbukumbu, ikiwa unakumbuka picha wetu kutoka wakati wa mwisho.
Na kama mimi tu kugawanya huu katika nyakati za kutosha,
Mimi kudai kwamba nina 32 ka ya kumbukumbu juu ya screen.
>> Sasa, katika hali halisi, naweza tu kuteka hadi sasa juu ya screen hii hapa.
Hivyo mimi nina kwenda mbele, na tu kwa mkataba,
kuteka kumbukumbu ya kompyuta yangu kama gridi ya taifa, si kama mojawapo ya moja kwa moja line.
Hasa, mimi kudai kwamba sasa gridi ya taifa hili, hii 8 na 4 gridi ya taifa,
tu inawakilisha ka zote 32 ya kumbukumbu iliyopo katika Mac yangu,
au inapatikana katika PC yangu.
Na wao ni wrapping mistari kwenye miwili, tu
kwa sababu inafaa zaidi juu ya screen.
Lakini hii ni Byte kwanza.
Hii ni Byte pili.
Hii ni Byte tatu.
>> Na hii ni Byte 32.
Au, kama tunafikiri kama kompyuta mwanasayansi, hii ni Byte 0, 1, 2, 3, 31.
Hivyo kuwa 0-31, kama wewe kuanza kuhesabu saa 0.
>> Hivyo kama sisi kutumia mpango kwamba wito kupata kamba,
na sisi kupata kamba kutoka binadamu kama sikuwa aitwaye Zamyla, Z-A-M-Y-L-A,
jinsi katika dunia gani kompyuta kuweka wimbo wa ambayo Byte,
ambayo chunk ya kumbukumbu, ni mali ya ambayo kamba?
Kwa maneno mengine, kama sisi kuendelea na kuandika jina jingine ndani ya kompyuta,
kama Andi hii, wito kupata kamba mara ya pili,
-N-D-I ina kuishia katika kumbukumbu ya kompyuta pia.
Lakini jinsi gani?
>> Naam, zinageuka kuwa chini kofia, nini C gani wakati kuhifadhi masharti
kwamba aina ya binadamu katika, au kwamba kuja kutoka chanzo kingine, ni
delineates mwisho wa watu hao kwa maalum character-- backslash
0, ambayo ni njia tu ya pekee ya kusema bits 80 mfululizo.
>> Hivyo A-- hii ni idadi 97 kukumbuka.
Kwa hiyo baadhi ya muundo wa 8 bits inawakilisha idadi decimal 97.
backslash hii 0 ni literally idadi 0, kwa jina lingine nul, N-U-L, tofauti na awali,
N-U-L-L, ambayo kuongelea.
Lakini kwa sasa, tu kujua kwamba hii backslash 0 ni bits 80 tu mfululizo.
>> Na ni tu mstari huu katika mchanga kwamba anasema kitu chochote kwa upande wa kushoto
ni mali ya kamba moja, au aina moja data.
Na kitu chochote na haki ni mali ya kitu kingine.
Andi jina, wakati huo huo, ambayo tu kuibua
hutokea kwa wrap juu ya mstari wa wengine, lakini hiyo ni undani aesthetic,
vile vile ni nul kukoma.
>> Ni kamba ya wahusika A-N-D-I, pamoja na ya tano siri tabia,
zote 0 bits, kwamba tu demarcates mwisho wa jina Andi pia.
Na kama sisi kuwaita kupata kamba mara ya tatu katika kompyuta kupata kamba kama
Maria, M-A-R-I-A, vile vile ni Maria jina nul terminated na backslash 0.
>> Hii ni tofauti kimsingi kutoka jinsi ya kompyuta ingekuwa kawaida
kuhifadhi integer, au kuelea, au nyingine aina ya data bado, kwa sababu wanakumbuka,
integer ni kawaida 32 bits, au 4 ka, au labda hata 64 bits,
au ka nane.
Lakini primitives wengi katika kompyuta katika lugha ya programu
na idadi maalum ya ka chini hood--
labda 1, labda 2, labda 4, labda 8.
>> Lakini masharti, kwa kubuni, na nguvu idadi ya wahusika.
Huwezi kujua mapema, mpaka aina ya binadamu katika Z-A-M-Y-L-A,
au M-A-R-I-A, au-N-D-I. Huwezi kujua mara ngapi user itawagonga
keyboard.
Kwa hiyo, hawajui jinsi wahusika nyingi mapema
wewe ni kwenda haja.
>> Na hivyo C tu aina ya majani kama siri chini ya kofia breadcrumb
mwisho wa kamba.
Baada ya kuhifadhi Z-A-M-Y-L-A katika kumbukumbu, pia tu unaweka sawa
ya kipindi hicho.
Mwishoni mwa sentensi, unaweka 80 bits, hivyo kama
kukumbuka ambapo Zamyla huanza na kuishia.
>> Basi nini uhusiano, basi, kwa mpango huu?
Mpango huu hapa, Stirling, ni tu utaratibu
kwa ajili ya kupata kamba kutoka kwa mtumiaji, line 6.
Mstari 7, mimi kutangaza kutofautiana kuitwa n na kuliweka sawa na 0.
>> Na kisha katika mstari wa 8, mimi tu aliuliza swali, wakati tabia n-th gani
si sawa zote 0 bits-- kwa maneno mengine, haina
sawa maalum huu tabia, backslash 0, ambayo
mara tu kwamba maalum nul character-- kwenda mbele na tu increment n.
>> Na kuendelea kufanya hivyo, na kuweka kufanya hivyo, na kuendelea kufanya hivyo.
Na hivyo hata kama katika siku za nyuma tumekuwa kutumika i,
ni kikamilifu faini semantically kutumia n,
kama wewe ni kujaribu tu kuhesabu wakati huu kwa makusudi,
na nataka tu kuiita n.
Hivyo hii anaendelea tu kuuliza swali, ni tabia n-th wa s sekunde 0 wote?
Kama siyo, kuangalia kwa kuangalia ijayo, kuangalia kwa ijayo, kuangalia kwa ijayo,
kuangalia kwa ijayo.
>> Lakini kwa haraka kama unaweza kuona backslash 0, mstari huu loop-- 9 hadi 11-- ataacha.
Kuvunja nje ya kitanzi wakati, kuacha ndani ya kwamba n kutofautiana
kuhesabu jumla ya yote ya wahusika katika kamba wewe aliona,
hivyo uchapishaji ni nje.
Basi hebu jaribu hii.
>> Hebu kwenda mbele na, bila kutumia Stirling kazi,
lakini tu kwa kutumia homegrown yangu mwenyewe version hapa aitwaye Stirling, basi mimi kwenda mbele
na kukimbia Stirling, aina katika kitu kama Zamyla, ambayo mimi kujua mapema
ni wahusika sita.
Hebu kuona kama ni kazi.
Hakika, ni sita.
Hebu jaribu na Rob, herufi tatu, herufi tatu pia, na kadhalika.
Basi hiyo ni yote ambayo inaenda chini ya Hood.
Na taarifa uhusiano, kisha, kwa wiki ya kwanza
ya darasa, ambapo kuongelea kitu kama uchukuaji,
ambayo ni tu hii layering wa mawazo, au utata, juu ya kanuni za msingi.
Hapa, sisi ni aina ya kuangalia chini ya kofia ya Stirling,
hivyo kusema, kufikiri, jinsi gani ni kutekelezwa?
>> Na tunaweza tena kutekeleza wenyewe.
Lakini sisi ni kamwe tena kwenda tena kutekeleza Stirling.
Sisi ni kwenda tu kutumia Stirling ili
kwa kweli kupata baadhi ya masharti urefu.
>> Lakini hakuna uchawi chini ya Hood.
Kama unajua kwamba chini kofia, kamba
ni tu mlolongo wa wahusika.
Na kwamba mlolongo wa wahusika wote wanaweza kuwa numerically kushughulikiwa
na mabano 0, bracket 1, bracket 2, na wewe
tunajua kwamba mwisho wa kamba ni tabia maalum, unaweza kufikiri
jinsi ya kufanya kitu chochote zaidi katika mpango, kwa sababu wote majipu chini
ni kusoma na kuandika kumbukumbu.
Yaani, kubadilisha na kuangalia katika kumbukumbu, au kuhamia mambo
kuzunguka katika kumbukumbu, uchapishaji mambo juu ya screen, na kadhalika.
>> Basi hebu sasa yanatumia newfound hii uelewa wa nini masharti kweli
ni chini ya Hood, na peel nyuma safu moja nyingine
kwamba hadi sasa tumekuwa wamekuwa wakipuuza kabisa.
Hasa, wakati wowote tumekuwa kutekelezwa mpango,
tulikuwa na hii mstari wa kanuni karibu juu ya kutangaza kuu.
Na tumekuwa maalum int kuu utupu.
>> Na kwamba utupu ndani ya mabano ina wamekuwa wakisema muda wote huu kwamba kuu
yenyewe haina kuchukua hoja yoyote.
pembejeo yoyote ambayo kuu ni kwenda kupata kutoka kwa mtumiaji
ina kuja kutoka baadhi ya wengine utaratibu, kama kupata int,
au kupata kuelea, au kupata kamba, au baadhi ya kazi nyingine.
Lakini zinageuka kuwa wakati wewe kuandika mpango,
unaweza kweli bayana kwamba mpango huu ataona
kuchukua pembejeo kutoka kwa binadamu katika mstari amri yenyewe.
>> Kwa maneno mengine, hata kama sisi hivi sasa kuwa wamekuwa kukimbia tu ./hello hodi
au mipango kama hiyo, yote ya programu nyingine ambayo tumekuwa kutumia,
kwamba sisi wenyewe hakuwa na kuandika, na wamekuwa kuchukua, inaonekana,
amri line arguments-- mambo kama kufanya.
Unaweza kusema kitu kama kufanya, na kisha neno la pili.
Au Clang, wewe kusema Clang, na kisha Neno la pili, jina la faili.
>> Au hata RM au CP, kama waweza tumeona au kutumika tayari
kuondoa au nakala files.
Wale wote kuchukua kinachojulikana amri line arguments--
maneno ya ziada katika haraka wastaafu.
Lakini hadi sasa, sisi wenyewe si alikuwa
hii anasa ya kuchukua pembejeo kutoka user wakati yeye au yeye kweli anaendesha
programu yenyewe katika mstari amri.
>> Lakini tunaweza kufanya hivyo kwa re-kutangaza kuu kusonga mbele, ingawa sikuwa na
utupu katika mabano, lakini hizi hoja mbili
instead-- kwanza integer, na kitu cha pili
mpya, jambo ambalo sisi ni kwenda kuwaita safu, kitu sawa katika roho
kwa yale tuliona katika Scratch kama orodha, lakini safu ya masharti, kama tutaweza hivi karibuni kuona.
Lakini hebu angalia hii kwa njia ya mfano, kabla ya sisi
kutofautisha hiyo ina maana hasa nini.
>> Hivyo kama mimi kwenda katika CS50 IDE hapa, nimekuwa wamekwenda mbele
na alitangaza katika faili inayoitwa argv0.c template zifuatazo.
Na taarifa Kitu pekee hiyo ni tofauti hivyo mbali
ni kwamba nimekuwa iliyopita utupu int argc kamba argv wazi bracket, karibu
bracket.
Na taarifa kwa sasa, kuna kitu ndani ya mabano hayo.
>> Kuna idadi hakuna.
Na hakuna i, au n, au barua nyingine yoyote.
Mimi nina kutumia tu mabano mraba kwa sasa,
kwa sababu tutaweza kuja nyuma katika muda tu.
>> Na sasa nini mimi kwenda kufanya ni hii.
Kama argc sawa sawa na 2-- na kukumbuka kuwa sawa sawa
ni usawa operator kulinganisha kushoto na kulia kwa usawa.
Siyo zoezi operator, ambayo ni
single sawa ishara, ambayo ina maana nakala kutoka kulia kwenda kushoto baadhi ya thamani.
>> Kama argc sawa sawa na 2, nataka kusema, printf, hello, percents, mstari wa mwezi,
na kisha kuziba in-- na hapa ni mpya trick-- argv mabano 1, kwa sababu za
kwamba tutaweza kurudi kwa mara moja.
Mwingine kama argc haina sawa 2, unajua nini?
Hebu tu kwenda mbele na, kama kawaida, magazeti nje hujambo dunia na hakuna badala.
>> Hivyo inaweza kuonekana kwamba kama argc, ambayo anasimama kwa kuhesabu hoja, sawa na 2,
Mimi nina kwenda magazeti nje hodi kitu au nyingine.
Vinginevyo, by default, mimi nina kwenda magazeti hujambo dunia.
Hivyo hii ina maana gani?
>> Naam, napenda kwenda mbele na kuokoa faili hii, na kisha kufanya kufanya argv0,
na kisha ./argv0, kuingia.
Na inasema hujambo dunia.
Sasa, kwa nini ni kwamba?
>> Naam, ni zamu nje wakati wowote kuendesha programu katika mstari amri,
wewe ni kujaza katika kile tutaweza ujumla kuwaita hoja vector.
Kwa maneno mengine, moja kwa moja kompyuta, mfumo wa uendeshaji,
ni kwenda mkono kwa mpango wako yenyewe orodha ya maneno yote
kwamba binadamu typed katika haraka, katika kesi wewe
programu wanataka kufanya kitu na habari kwamba.
Na katika kesi hii, neno tu Nimekuwa typed katika haraka ni ./argv0.
>> Na hivyo idadi ya hoja kwamba ni unaletwa mpango wangu ni moja tu.
Kwa maneno mengine, mabishano kuhesabu, inayojulikana kama argc
hapa kama integer, ni moja tu.
Moja, bila shaka, haina sawa mbili.
Na hivyo hii ni nini Prints, hello dunia.
>> Lakini napenda kuchukua mahali fulani hii.
Ngoja niseme, argv0.
Na basi vipi kuhusu Maria?
Na kisha hit kuingia.
>> Na taarifa ya nini magically kinatokea hapa.
Sasa, badala ya hujambo dunia, nina iliyopita tabia ya mpango huu
kwa kuchukua pembejeo si kutoka get kamba au baadhi ya kazi nyingine,
lakini kutokana na, inaonekana, amri yangu yenyewe, nini Mimi awali typed katika.
Na siwezi kucheza mchezo huu tena na kubadilisha kwa Stelios, kwa mfano.
>> Na sasa naona jina la mtu mwingine bado.
Na hapa, mimi anaweza kusema Andi.
Na mimi anaweza kusema Zamyla.
Na tunaweza kucheza mchezo huu mchana kutwa, tu kuziba katika maadili tofauti,
muda mrefu kama mimi kutoa hasa maneno mawili katika haraka,
kiasi kwamba argc, hoja yangu kuhesabu, ni 2.
>> Je, Mimi naona kwamba jina imeingia kwenye printf, kwa hali hii hapa?
Hivyo sisi tunaonekana kuwa na sasa uwezo expressive
ya kuchukua pembejeo kutoka utaratibu mwingine, kutoka kinachojulikana mstari amri,
badala ya kuwa na kusubiri mpaka user anaendesha mpango,
na kisha kuchochea kwake kutumia kitu kama kupata kamba.
>> Hivyo ni nini hii?
Argc, tena, ni tu integer, idadi ya words-- arguments--
kwamba mtumiaji zinazotolewa katika haraka, katika terminal dirisha,
ikiwa ni pamoja na jina wa programu hiyo.
Hivyo ./argv0 yetu ni, kwa ufanisi, jina programu hiyo,
au jinsi mimi kuendesha programu.
>> Kwamba makosa kama neno.
Hivyo argc itakuwa 1.
Lakini wakati mimi kuandika Stelios, au Andi, au Zamyla, au Maria,
hiyo ina maana kuhesabu hoja ni mbili.
Na hivyo sasa kuna maneno mawili kupita katika.
>> Na taarifa, tunaweza kuendelea mantiki hii.
Kama mimi kweli kusema kitu kama Zamyla Chan,
jina kamili, na hivyo kupita hoja tatu kwa jumla,
sasa inasema default tena, kwa sababu, bila shaka, 3 haina sawa 2.
>> Na hivyo kwa njia hii, kufanya nina upatikanaji kupitia argv hoja hii mpya
kwamba tunaweza kitaalam kuwaita chochote tunataka.
Lakini kwa mkataba huo, ni argv na argc, kwa mtiririko huo.
Argv, hoja vector, ni aina ya kisawe kwa ajili ya programu
kipengele katika C inaitwa safu.
>> safu ni orodha ya maadili sawa nyuma, na nyuma, na nyuma, kwa nyuma.
Kwa maneno mengine, ikiwa ni moja ya haki hapa katika RAM, moja ijayo ni haki ya karibu na hayo,
na haki karibu na hiyo.
Wao siyo kila mahali.
Na kwamba hali za mwisho, ambapo mambo ni kila mahali katika kumbukumbu,
kweli anaweza hulka ya nguvu.
Lakini tutaweza kuja nyuma na kwamba wakati sisi majadiliano juu ya miundo fancier data.
Kwa sasa, safu ni tu chunk ya kumbukumbu contiguous,
kila mmoja ambaye mambo ni nyuma, na nyuma, na nyuma, na nyuma,
na kwa ujumla aina moja.
>> Hivyo kama unadhani kuhusu, kutoka wakati iliyopita, ni nini kamba?
Naam, kamba, kama Zamyla, Z-A-M-Y-L-A, ni, kitaalam,
tu safu.
Ni safu ya wahusika.
>> Na hivyo kama sisi kweli kuteka hii, kama mimi alifanya mapema, kama chunk ya kumbukumbu,
zinageuka kuwa kila moja ya haya wahusika unachukua Byte.
Na kisha kuna kuwa maalum sentinel tabia, backslash 0,
au zote nane 0 bits, kwamba demarcates mwisho wa kamba hiyo.
Hivyo kamba, ni zamu nje, kunukuu unquote kamba,
ni safu ya chara-- Char kuwa data halisi ya aina.
>> Na sasa argv, meanwhile-- hebu kwenda nyuma ya mpango huo.
Argv, ingawa tunaona neno kamba hapa, si kamba yenyewe.
Argv, hoja vector, ni safu ya masharti.
>> Hivyo tu kama unaweza kuwa na safu ya wahusika, unaweza kuwa na kiwango cha juu,
safu ya strings-- hivyo, kwa mfano, wakati mimi niliandika wakati iliyopita ./argv0
argv0, nafasi Z-A-M-Y-L-A, I alidai kuwa argv alikuwa masharti mawili katika ./argv0 it--,
na Z-A-M-Y-L-A. katika maneno mengine, argc ilikuwa 2.
Kwanini hivyo?
>> Naam, kwa ufanisi, nini kinaendelea juu ya ni kwamba kila ya masharti hayo
Ni, bila shaka, safu ya wahusika kama kabla, kila mmoja ambaye wahusika
unachukua byte moja.
Na usiwachanganye 0 halisi kwa jina mpango wa pamoja 0,
ambayo ina maana bits zote 80.
Na Zamyla, wakati huo huo, bado ni pia safu ya wahusika.
>> Hivyo mwisho wa siku, ni kweli Inaonekana kama hii chini ya Hood.
Lakini argv, kwa asili ya jinsi kuu matendo, inaruhusu mimi wrap yote haya
up katika, kama wewe, safu kubwa kwamba, kama sisi zaidi kidogo ya kurahisisha
nini picha inaonekana kama na hawana kabisa kuteka ni kuweza kuinua pale,
safu hii ni tu ya kawaida 2, kwanza kipengele cha ambayo ina kamba,
kipengele pili ya ambayo ina kamba.
Na, kwa upande wake, kama wewe aina ya kuvuta juu ya kila
ya masharti hayo, nini angalia chini ya kofia
ni kwamba kila kamba ni safu ya wahusika.
>> Sasa, tu kama na masharti, tulikuwa na uwezo wa kupata
kwa tabia i-th katika kamba kutumia kwamba mraba bracket nukuu.
Vile vile, kwa arrays kwa ujumla, tunaweza
kutumia mraba bracket nukuu kupata katika idadi yoyote ya masharti katika safu?
Kwa mfano, napenda kwenda mbele na kufanya hili.
>> Hebu kwenda mbele na kujenga argv1.c, ambayo ni tofauti kidogo wakati huu.
Badala ya kuangalia kwa argc2, Mimi nina kwenda badala kufanya hivyo.
Kwa int mimi kupata 0, mimi ni chini kuliko argc, mimi pamoja na plus,
na kisha magazeti nje ndani ya hii, asilimia s, mstari wa mwezi, na kisha
argv mabano i.
>> Hivyo kwa maneno mengine, mimi si kushughulika na wahusika binafsi kwa sasa.
Argv, kama alisema kwa hawa mraba tupu inakabiliwa na na haki ya jina argv,
ina maana argv ni safu ya masharti.
Na argc ni tu int.
>> mstari huu hapa, 6, ni akisema kuweka i sawa na 0.
Hesabu njia yote hadi, lakini si pamoja, argc.
Na kisha juu ya kila iteration, magazeti nje kamba.
Nini kamba?
>> kamba i-th katika argv.
Hivyo ambapo kabla nilikuwa kutumia mabano mraba
nukuu kupata saa ith tabia katika kamba, sasa
Mimi nina kutumia mraba bracket nukuu kupata saa kamba ith katika safu.
Hivyo ni aina ya safu moja hapo juu, conceptually.
>> Na hivyo nini nadhifu kuhusu hili mpango sasa, kama mimi kukusanya argv1,
na kisha kufanya ./argv1, na basi aina katika kitu kama foo bar bazi,
ambayo ni maneno matatu default kwamba kompyuta mwanasayansi fika kwa wakati wowote
yeye au yeye mahitaji ya baadhi ya maneno placeholder, na hit Enter, kila moja ya maneno hayo,
ikiwa ni pamoja na jina wa programu hiyo, ambayo ni katika argv katika eneo la kwanza,
kuishia kuwa kuchapishwa moja kwa wakati.
Na kama mimi kubadili hali hii, na mimi kusema kitu kama argv1 Zamyla Chan,
sisi kupata yote matatu ya wale maneno, ambayo ni argv0,
argv1, argv2, kwa sababu katika hii kesi argc, kuhesabu, ni 3.
>> Lakini nini nadhifu ni kama wewe kuelewa kwamba argv ni safu ya masharti,
na wewe kuelewa kwamba kamba ni safu ya wahusika,
tunaweza kweli aina ya kutumia hii mraba bracket nukuu mara nyingi
kuchagua kamba, na kisha kuchagua tabia ndani ya kamba,
mbizi katika undani kama ifuatavyo.
Katika mfano huu, napenda kwenda mbele na wito argv2.c hii.
Na katika mfano huu, basi mimi kwenda mbele na kufanya following-- kwa int i kupata 0,
i ni chini ya argc, i plus plus, tu kama ilivyokuwa kabla.
Hivyo katika words-- nyingine na sasa hii ni kupata ngumu kutosha.
Kisha mimi nina kwenda kusema iterate juu ya masharti katika argv,
kama maoni kwa mwenyewe.
Na kisha mimi nina kwenda kuwa Furushi kwa kitanzi, ambayo pengine
wamefanya, au kuchukuliwa kufanya, katika Scratch, ambapo
Mimi nina kwenda kusema int mimi nina si kwenda kutumia i tena,
kwa sababu mimi sitaki kwa kivuli, au aina ya overwrite i zilizopo.
>> Mimi nina kwenda, badala yake, wanasema j, kwa sababu hiyo ni go yangu kwa kutofautiana baada i,
wakati mimi nina kujaribu tu kuhesabu idadi rahisi.
Kwa j anapata 0-- na pia, n, ni kwenda kupata urefu wakali wa argv mabano i,
hivyo muda mrefu kama j ni chini ya m, j plus plus, kufanya yafuatayo.
Na hapa ni ya kuvutia sehemu.
>> Magazeti nje tabia na mstari wa mwezi, plugging katika argv mabano i, bracket j.
OK, hivyo basi mimi kuongeza baadhi ya comments hapa.
Iterate juu ya wahusika katika kamba ya sasa,
magazeti j-th tabia katika i-th kamba.
Hivyo sasa, hebu fikiria nini maoni haya yana maana.
>> Iterate juu ya masharti katika argv-- wangapi
masharti ni katika argv, ambayo ni safu?
Argc wengi, hivyo mimi nina iterating kutoka i sawa 0 hadi argc.
Wakati huo huo, jinsi wahusika wengi ni katika kamba i-th katika argv?
>> Naam, kupata jibu kwamba, I just kuwaita urefu wa kamba
juu ya sasa kamba huduma mimi kuhusu, ambayo ni argv mabano i.
Na mimi nina kwenda kwa muda kuhifadhi kwamba thamani katika n, tu kwa madhumuni ya Caching,
kukumbuka ni kwa ufanisi.
Na kisha mimi nina kwenda initialize j 0, kuendelea kwa muda mrefu kama j ni chini ya n,
na juu ya kila iteration j increment.
>> Na kisha katika hapa, per maoni yangu kwenye mstari 12,
magazeti nje tabia, ikifuatiwa na mstari mpya,
hasa argv mabano i anitiaye i-th kamba
katika argv-- hivyo neno la kwanza, Neno la pili, neno la tatu, chochote.
Na kisha dives j kwa undani, na anapata me tabia j-th ya neno hilo.
Na hivyo, katika athari, unaweza kutibu argv kama multi-dimensional,
kama pande mbili, safu, ambapo kila aina neno la inaonekana
kama hii katika akili yako jicho, na kila tabia
ni aina ya linajumuisha katika safu, kama ambayo husaidia.
>> Katika hali halisi, wakati sisi tease hii mbali katika wiki baadaye,
itakuja kuwa ni kidogo kisasa zaidi kuliko hiyo.
Lakini unaweza kweli kufikiria kwamba, kwa sasa,
kama tu hii ya pande mbili safu, ambapo ngazi moja ya hiyo
ni yote ya masharti.
Na kisha kama wewe kupiga mbizi katika undani, wewe unaweza kupata katika wahusika binafsi
zilizomo ndani kwa kutumia nukuu hii hapa.
>> Kwa hiyo kile ni athari wavu?
Hebu kwenda mbele na kufanya argv2-- darn yake.
Mimi alifanya kosa hapa.
implicitly kutangaza maktaba kazi Stirling.
Hivyo muda wote huu, ni labda sahihi
kwamba sisi ni aina ya kumaliza hasa ambapo sisi kuanza.
>> Mimi Star up, implicitly kutangaza maktaba kazi Stirling.
OK, kusubiri dakika.
Nakumbuka kwamba, hasa tangu ni haki hapa.
Mimi haja ya ni pamoja na string.h katika hili toleo la mpango.
>> Hebu kwenda mbele na ni pamoja na string.h, ila, kwenda mbele
na recompile argv2.
Na sasa, hapa sisi kwenda, kufanya argv2, kuingia.
Na kama ni kidogo cryptic katika mtazamo wa kwanza,
taarifa kwamba, kwa kweli, ni nini ni kuchapishwa ni nukta argv2.
>> Lakini kama mimi aina baadhi ya maneno baada haraka, kama argv2 Zamyla Chan,
Kuingia, pia kidogo cryptic katika mtazamo wa kwanza.
Lakini kama sisi kitabu nyuma hadi, ./argv2 Z-A-M-Y-L-C-H-A-N.
Hivyo tumekuwa iterated juu ya kila neno.
Na, kwa upande wake, tumekuwa iterated juu ya kila tabia ndani ya neno.
>> Sasa, baada ya yote haya, kutambua kwamba kuna
wengine undani moja tumekuwa aina ya kupuuza wakati huu mzima.
Sisi tu teased mbali kile pembejeo kuu inaweza kuwa?
Je kuhusu pato kuu ya?
>> Wote wa wakati huu, tumekuwa tu kuiga na pasting
neno int mbele ya kuu, ingawa unaweza kuona online,
wakati mwingine kimakosa katika matoleo ya zamani ya C na compilers, kwa kuwa wanasema batili,
au chochote wakati wote.
Lakini, kwa kweli, kwa ajili ya toleo ya C kwamba sisi ni kutumia,
C 11, au 2011, kutambua kwamba ni lazima kuwa int.
Na ni lazima aidha kuwa utupu au argc na argv hapa.
>> Lakini kwa nini int kuu?
Je, ni kwa kweli kurudi?
Naam, ni zamu nje wote wa wakati huu, wakati wowote umefanya imeandikwa mpango kuu
daima ni kurudisha kitu.
Lakini imekuwa ni kufanya hivyo kwa siri.
>> Kwamba kitu fulani ni int, kama mstari 5 unaonyesha.
Lakini nini int?
Naam, kuna hii mkataba katika programu,
ambapo kama kitu ina wamekwenda vibaya na wote ni vizuri,
mipango na kazi kwa ujumla return-- kiasi fulani counterintuitively--
0.
0 ujumla kunaashiria yote ni sawa.
Hivyo hata kama wewe kufikiria kama uongo katika hali nyingi,
ni kweli kwa ujumla maana yake ni jambo jema
>> Wakati huo huo, kama mpango anarudi 1, au hasi 1, au 5, au hasi 42,
au yoyote yasiyo ya 0 thamani, kuwa kwa ujumla kunaashiria
kwamba kitu amekwenda vibaya.
Kwa kweli, juu ya Mac yako mwenyewe au PC, unaweza kuwa kweli kuonekana
ujumbe wa makosa, ambapo ni anasema kitu au nyingine, kosa
kificho hasi 42, au makosa kanuni 23, au kitu kama hicho.
idadi hiyo ni kwa ujumla tu ladha kwa programu, au kampuni
kwamba alifanya programu, nini potoka na kwa nini,
ili waweze kuangalia njia nyaraka zao au kanuni,
na kufikiri nini makosa kwa kweli ina maana.
Ni kwa ujumla si muhimu kwetu watumiaji wa mwisho.
>> Lakini wakati anarudi kuu 0, yote ni sawa.
Na kama huna bayana nini kuu lazima kurudi,
itakuwa tu moja kwa moja kurudi 0 kwa ajili yenu.
Lakini kurudisha kitu kingine ni kweli muhimu.
>> Katika mpango huu wa mwisho, napenda kwenda mbele na kuwaita exit.c hii,
na kuanzisha mwisho wa leo mada, hujulikana kama kodi makosa.
Hebu kwenda mbele na ni pamoja na yetu files ukoo juu juu, kufanya int kuu.
Na wakati huu, hebu kufanya int argc, kamba argv, na kwa mabano yangu
kuashiria kwamba ni katika safu.
Na kisha napenda tu kufanya sanity hundi.
Wakati huu, ikiwa argc haina sawa 2, basi unajua nini?
Sahau.
Mimi naenda kusema kwamba, hey, user, wewe ni kukosa amri line hoja
backslash n.
>> Na kisha hiyo ni yake.
Nataka exit.
Mimi naenda preemptively, na mapema kweli, kurudi
kitu kingine zaidi ya namba 1.
go kwa thamani kwa kwanza makosa ambayo yanaweza kutokea ni 1.
Kama una baadhi ya mengine potofu Hali ambayo inaweza kutokea,
unaweza kusema kurudi 2 au kurudi 3, au labda hata hasi 1 au hasi 2.
>> Hizi ni codes exit tu kwamba ni, kwa ujumla,
muhimu tu kwa programu, au kampuni hiyo kusafirisha programu.
Lakini ukweli kwamba ni si 0 ni nini muhimu.
Hivyo kama katika mpango huu, nataka kuhakikisha kwamba mpango huu tu
kazi kama mtumiaji hutoa me na kuhesabu hoja ya wawili,
jina la mpango, na baadhi nyingine neno, siwezi kutekeleza kama vile ifuatavyo,
kelele katika user kwa printf akisema, kukosa amri line hoja,
kurudi 1.
Hiyo mapenzi tu mara moja kuacha mpango.
>> Tu kama argc sawa na 2 itakuwa sisi kupata chini hapa, ambapo kiwango mimi nina kwenda kusema,
hodi asilimia s, backslash n, argv1.
Kwa maneno mengine, mimi nina si kwenda baada ya argv 0,
ambayo ni tu jina la mpango.
Nataka magazeti nje hello, comma, Neno la pili kwamba binadamu typed.
Na katika kesi hii juu ya line 13, wote ni vizuri.
>> Najua kwamba argc ni 2 kifikra na mpango huo.
Mimi nina kwenda mbele na kurudi 0.
Kama kando, kukumbuka kwamba hii ni kweli katika Scratch kama vile.
>> Kimantiki, mimi naweza kufanya hili na kurejelea mistari haya
wa kanuni katika hii kifungu kingine hapa.
Lakini hiyo ni aina ya usiokuwa na indenting kanuni yangu.
Na nataka kufanya super wazi kwamba hakuna jambo gani,
by default, hello kitu itakuwa kupata kuchapishwa,
hivyo muda mrefu kama user inashirikiana.
>> Hivyo ni kawaida sana kutumia hali, tu kama,
kukamata baadhi potofu hali, na kisha exit.
Na kisha, kwa muda mrefu yote ni vizuri, si kuwa na kingine chochote,
lakini tu na kificho nje kwamba kama, kwa sababu ni
sawa katika hili kesi fulani, mantiki.
Hivyo mimi nina kurudi 0, tu waziwazi yanamaanisha yote ni sawa.
>> Kama mimi rukwa kurudi 0, ingekuwa kuwa moja kwa moja kudhani kwa ajili yangu.
Lakini sasa mimi nina kurudi moja katika angalau kesi hiyo,
Mimi nina kwenda, kwa hatua nzuri na uwazi, kurudi 0 katika kesi hii.
Hivyo sasa napenda kwenda mbele na kufanya exit, ambayo ni segue kamili kuondoka tu.
>> Lakini kufanya exit, na napenda kwenda mbele na kufanya ./exit, kuingia.
Na mpango yelled saa yangu, kukosa amri line hoja.
OK, napenda kushirikiana.
>> Basi mimi badala kufanya ./exit, David, kuingia.
Na sasa inasema, hujambo Daudi.
Na wewe si kawaida kuona hili.
>> Lakini zinageuka kuwa kuna namna ya pekee katika Linux kwa kweli kuona
na kile exit kificho mpango exited.
Wakati mwingine katika graphical dunia kama Mac OS au Windows,
wewe tu kuona namba hizi wakati ujumbe wa makosa pops up kwenye screen
na programu inaonyesha idadi hiyo.
Lakini kama tunataka kuona nini makosa ujumbe ni, tunaweza kufanya hivyo here--
hivyo ./exit, Ingieni, magazeti kukosa amri line hoja.
>> Kama mimi sasa kufanya echo $ ?, ambayo ni ridiculously cryptic kuangalia.
Lakini $?
ni dua kichawi kwamba anasema, hey, kompyuta,
kuniambia nini uliopita mpango wa exit kificho ilikuwa.
Na mimi hit Enter.
Mimi naona 1, kwa sababu kwamba ni nini mimi aliiambia kazi yangu kuu kurudi.
>> Wakati huo huo, kama mimi kufanya ./exit David, na hit Enter, naona, hujambo Daudi.
Na kama mimi sasa kufanya $ echo ?, Mimi naona hodi 0.
Na hivyo hii mapenzi kweli kuwa taarifa muhimu
katika mazingira ya HatiJava, si hivyo kiasi kwamba, binadamu, ingekuwa huduma.
Lakini HatiJava na wengine mipango tutaweza kutumia muhula huu
mara nyingi kuangalia idadi hiyo, hata kama ni aina ya siri mbali
isipokuwa wewe kuangalia kwa ajili yake, kwa kuamua iwapo au mpango wa
utekelezaji ilikuwa sahihi au sio sahihi.
>> Na hivyo kwamba inatuleta huu, mwishoni mwa siku.
Sisi kuanza leo kwa kuangalia debugging, na kwa upande katika kozi
yenyewe, na kisha zaidi ya kuvutia, kitaalam chini ya kofia
nini masharti ni, ambayo mwisho wiki sisi tu alichukua kwa nafasi,
na kwa hakika alichukua yao kwa nafasi katika Scratch.
>> Sisi basi inaonekana katika jinsi tunaweza kupata wahusika binafsi katika kamba,
na kisha tena alichukua kiwango cha juu kuangalia mambo, kuangalia jinsi well--
kama tunataka kupata saa ya mtu binafsi vipengele katika orodha kama muundo,
hatuwezi kufanya hivyo kwa masharti mbalimbali?
Na tunaweza na hoja mstari amri.
Lakini picha hii hapa ya masanduku tu ni demonstrative ya wazo hili kwa ujumla
wa safu, au orodha, au vector.
Na kulingana na mazingira, maneno yote haya
kumaanisha mambo tofauti kidogo.
Hivyo katika C, sisi ni kwenda tu kuzungumzia safu.
Na safu ni chunk ya kumbukumbu, kila mmoja ambaye ni
mambo ni contiguous, nyuma, kwa nyuma, kwa nyuma, kwa nyuma.
>> Na mambo hayo ni, kwa ujumla, ya aina moja data, tabia,
tabia, tabia, tabia, au kamba, kamba, kamba, uzi, au int,
int, int, chochote ni sisi ni kujaribu kuhifadhi.
Lakini mwisho wa siku, hii ni nini inaonekana kama conceptually.
Wewe ni kuchukua yako kumbukumbu ya kompyuta au RAM.
Na wewe ni kuchora nje katika masanduku identically ukubwa, ambayo yote
ni nyuma, kwa nyuma, kwa nyuma, kuunga kwa njia hii.
>> Na nini ni nzuri kuhusu wazo hili, na ukweli
tuweze kueleza maadili kwa njia hii na ya kwanza ya miundo yetu data
darasani, ina maana tunaweza kuanza kutatua matatizo na kanuni
waliokuja hivyo intuitively katika wiki 0.
Itabidi kukumbuka simu kitabu mfano, ambapo
tulikuwa kugawanya na kushinda, au binary search algorithm,
kuchuja nzima rundo la majina na namba.
Lakini sisi kudhani, kukumbuka, kwamba kitabu cha simu ilikuwa tayari yamepangwa,
kwamba mtu mwingine alikuwa tayari figured out-- kupewa orodha ya majina
na numbers-- jinsi ya alphabetize yao.
Na sasa kwamba katika C sisi, pia, kuwa na uwezo
kwa kuweka mambo ya nje, si kimwili katika kitabu cha simu
lakini karibu katika kompyuta kumbukumbu, sisi kuwa na uwezo wiki ijayo
kuanzisha tena Haya kwanza wa miundo yetu data katika array--
lakini muhimu zaidi, halisi ya kompyuta sayansi algorithms kutekelezwa
katika kanuni, na ambayo tunaweza kuhifadhi data katika miundo kama hii,
na kisha kuanza kuendesha, na kwa kweli kutatua matatizo na hayo,
na kujenga juu ya kwamba, hatimaye, mipango katika C,
katika Python, katika JavaScript, querying database na SQL?
>> Na tutaweza kuona kwamba yote haya mawazo tofauti interlock.
Lakini kwa sasa, kukumbuka kuwa uwanja kwamba sisi ilianzisha leo
Ilikuwa jambo hili hapa, na ulimwengu wa cryptography.
Na miongoni mwa matatizo ujao wewe mwenyewe kutatua ni sanaa ya cryptography,
scrambling na de-scrambling habari, na ciphering
na deciphering maandishi, na kuchukua hatimaye
kwamba sasa kujua nini ni chini ya kofia
hivyo kwamba wakati unaweza kuona au kupokea ujumbe kama hii, wewe
wewe mwenyewe unaweza decipher yake.
hii yote, na muda zaidi ijayo.
>> [VIDEO avspelning]
>> -Mover Amefika.
Mimi nina kwenda ziara wake profesa wa chuo.
Yep.
Hi.
Ni wewe.
Ngoja!
David.
Mimi tu kujaribu kufikiri nini kilichotokea na wewe.
Tafadhali, kitu chochote inaweza kusaidia.
Ungekuwa chuo wake roommate, walikuwa si wewe?
Ungekuwa huko pamoja naye wakati yeye kumaliza mradi CS50?
>> [Music kucheza]
>> -Kwamba Ilikuwa CS50.
>> Mimi upendo mahali hapa.
>> -Eat Up.
Tunakwenda nje ya biashara.
>> [MWISHO avspelning]