[Music kucheza]
>> DAVID J. Malan: zote haki, hii ni CS50.
Na hii ni wiki moja.
Hivyo kukumbuka kwamba mara ya mwisho katika wiki sifuri, sisi ililenga katika kufikiri computational.
Na sisi zilianza kutoka kwamba kwa Scratch, programu graphical
lugha kutoka kwa marafiki zetu katika MIT Media Lab.
>> Na kwa Scratch, hatukufanya kuchunguza mawazo kama kazi, na masharti,
na tanzi, na vigezo, na hata matukio, na nyuzi, na zaidi.
Na leo, tunakwenda kuendelea kutumia mawazo hayo,
na kwa kweli kuwapeleka kwa nafasi, lakini kutafsiri yao
kwa lugha nyingine inajulikana kama C. Sasa, C ni lugha zaidi ya jadi.
Ni ngazi ya chini lugha, kama wewe.
>> Ni rena textual.
Na hivyo katika mtazamo wa kwanza, ni wote kwenda kuangalia badala cryptic
kama wewe sijawahi iliyowekwa mbele.
Tunakwenda kuwa na nusu colons, na mabano,
na curly braces, na zaidi.
Lakini kutambua kwamba hata ingawa syntax ni
kuhusu kuangalia kidogo usio wa kawaida kwa wengi wenu, kuona nyuma kwamba.
Na kujaribu kuona mawazo kwamba ni kweli, utambuzi,
kwa sababu hapa katika wiki moja nini tutaweza kuanza kufanya ni kulinganisha,
awali, Scratch dhidi C.
>> Hivyo, kwa mfano, kukumbuka kuwa wakati sisi kutekelezwa kwanza ya mipango yetu
mara ya mwisho, tulikuwa na kuzuia kwamba inaonekana kitu kidogo kama hii wakati
bendera ya kijani clicked, na kisha tulikuwa na vipande moja au zaidi puzzle chini yake,
katika kesi hii, kusema, hello dunia.
Hivyo, kwa kweli, katika Scratch, wakati mimi bonyeza bendera ya kijani kwamba
kuendesha programu yangu, hivyo kusema, haya ni
vitalu kwamba kupata kunyongwa, au kukimbia.
Na, hasa, Scratch Alisema, hello, dunia.
>> Sasa, mimi naweza kuwa maalum maneno tofauti hapa.
Lakini tutaona kwamba, kwa hakika, wengi ya blocks-- hizi na kwa kweli,
katika C functions-- wengi wanaweza kuwa parametrized au umeboreshwa
kufanya mambo mbalimbali.
Kwa kweli, katika C kama sisi unataka kubadilisha, sasa,
mpango huu Scratch kwa lugha hii nyingine,
tunakwenda kuandika kitu kidogo kama hii.
>> Ni kweli kwamba, kuna baadhi ya usio wa kawaida syntax huko uwezekano mkubwa, int,
na mabano, na utupu.
Lakini printf-- ingawa wewe ungekuwa kufikiri ingekuwa tu kuwa magazeti.
Lakini magazeti ina maana magazeti mpangilio, kama tutaweza hivi karibuni kuona.
Hii literally magazeti kwa screen chochote
ni ndani ya mabano hizo, ambayo bila shaka katika kesi hii ni, hello dunia.
>> Lakini utasikia taarifa nyingine syntax, baadhi quotes mbili,
kwamba mabano mwishoni, nusu koloni na kadhalika.
Hivyo kuna kidogo ya uendeshaji, hivyo kusema, wote cognitively
na syntactically, kwamba tunakwenda kuwa na kukumbuka kabla ya muda mrefu.
Lakini kutambua kwamba pamoja na mazoezi, hii itakuwa kuanza kuruka nje saa wewe.
>> Kwa kweli, hebu kuzingatia kwamba moja kazi specifically-- katika kesi hii,
kusema hello dunia.
Hivyo kusema ni kazi.
Jambo dunia ni parameter yake, au hoja, customization yake.
>> Na yanayolinagana katika C ni tu kwenda kuwa mstari huu moja hapa,
ambapo printf ni sawa na, kusema, mara mbili alinukuliwa kamba, hello
dunia ni sawa, bila shaka, kwa nini katika sanduku nyeupe huko.
Na backslash n, ingawa kidogo ajabu na kukaa mbali na Scratch,
tu ni kwenda kuwa na athari tutaweza kuona katika kompyuta, kama Mac yangu au PC,
ya kusonga tu mshale wa mstari wa pili.
Ni kama kupiga Kuingia kwenye keyboard yako.
>> Hivyo tutaweza kuona kwamba tena kabla ya muda mrefu.
Lakini kwanza, hebu tuangalie hii mfano mwingine katika kesi ya loops.
Tulikuwa na hii milele kitanzi mara ya mwisho, ambayo ilikuwa mfululizo wa vipande puzzle
kwamba alifanya kitu literally forever-- katika kesi hii,
kusema, hello dunia, hello dunia, hujambo dunia, hello dunia.
Hivyo ni usio kitanzi kwa kubuni.
>> Katika C, kama tunataka kutekeleza hili wazo moja, tupate tu kufanya hivyo.
Wakati wa kweli, printf hujambo world-- sasa wakati, tu semantically, aina ya
conjures up wazo la kufanya kitu tena, na tena, na tena,
na kwa muda gani?
Naam, true-- kukumbuka kwamba kweli ni tu juu au moja.
>> Na kweli ni, bila shaka, kweli daima.
Hivyo ni aina ya maana Kauli tu kusema kweli.
Lakini kwa kweli, hii ni makusudi, kwa sababu kama kweli ni kweli tu daima,
kuliko wakati kweli ina maana tu, kama kidogo moja kwa moja,
kwamba mistari ifuatayo ya kanuni katika kati ya wale braces curly
lazima tu kutekeleza tena, na tena, na tena, na kamwe kweli kuacha.
>> Lakini kama huna wanataka yako kitanzi na kuacha, kama sisi
alivyofanya mara ya mwisho na kitu kama huu, kurudia kufuatia mara 50,
katika C tunaweza kufanya hivyo kwa nini kuitwa kwa ajili ya loop-- keyword
kutokuwa wakati, lakini kwa.
Na kisha tuna baadhi syntax mpya hapa, na int i sawa 0, i chini ya 50,
i ++.
Na tutaweza kuja nyuma na kwamba.
Lakini hii ni tu jinsi sisi ingekuwa kutafsiri seti ya vitalu Scratch
kwa seti ya mistari C ya kanuni.
>> Wakati huo huo, kufikiria vigezo.
Na, kwa kweli, sisi tu aliona moja wakati iliyopita.
Na katika kesi ya Scratch, kama sisi alitaka kutangaza variable kuitwa i
kwa i kuwa integer, idadi tu, na tunataka kuweka kwa baadhi ya thamani,
tunataka kutumia machungwa huu kuzuia here-- kuweka i kwa 0.
>> Na tutaweza kuona leo na zaidi, tu kama wiki iliyopita,
programmers kufanya karibu kila mara kuanza kuhesabu kutoka sifuri, kwa kweli
kwa mkataba.
Lakini pia kwa sababu wanakumbuka kutoka mjadala wetu wa binary,
idadi ndogo unaweza kuwakilisha na idadi yoyote ya bits
ni kwenda tu kuwa 0 yenyewe.
Na hivyo tutaweza ujumla kuanza initializing hata vigezo yetu kwa 0.
>> Na katika C kufanya hivyo, tunakwenda kusema int
kwa integer, i tu kwa mkataba.
Mimi naweza kuwa na kuitwa kutofautiana hii kitu chochote nataka, kama vile katika Scratch.
Na kisha ni sawa na 0 tu chukueni thamani 0 kutoka kulia
na kuiweka katika kutofautiana, au kuhifadhi kontena huko, upande wa kushoto.
Na nusu koloni kama tutaweza see-- na tumeona chache ya already-- hizi
ina maana tu mwisho wa mawazo.
Kuendelea kwa kufanya kitu kingine juu ya mistari kwamba kufuata.
>> Sasa, nini kuhusu maneno Boolean?
Kumbuka kwamba katika Scratch, hawa walikuwa maneno
ambayo ni aidha kweli au maswali false--,
kwa kweli, kwamba ni ama kweli au uongo.
Hivyo katika kesi ya Scratch, tupate kuuliza swali rahisi kama hii,
ni i chini ya 50?
Hivyo i, tena, ni integer.
Labda tunayatumia katika mpango Scratch
kuweka wimbo wa alama au kitu kama hicho.
Hivyo hii syntax hapa katika Scratch ina maana tu, ni i chini ya 50?
Naam, nashiriki, kuna kitu rahisi katika C. Na kutafsiri,
huu tunataka tu kusema i chini ya 50, kwa kutumia ufunguo ukoo
kwenye keyboard yako.
>> Wakati huo huo, kama alitaka kusema kitu zaidi ya jumla,
kama, vizuri, ni x chini ya y ambapo kila ya x na y ni wenyewe vigezo?
Tunaweza kufanya kitu kimoja katika C, hivyo muda mrefu kama tumekuwa
umba vigezo hivi tayari.
Na tutaweza kuona jinsi ya kufanya hivyo kabla ya muda mrefu.
Tunataka tu kusema x chini ya y.
>> Hivyo wewe ni mapya ya kuona baadhi yanayofanana.
Na wale folks ambaye alifanya Scratch walikuwa na shaka
aliongoza kwa baadhi ya mawazo haya ya msingi.
Na utaona aina hii ya syntax katika wengi languages--
sio tu Scratch, si tu C, lakini chatu,
na JavaScript, na lugha nyingine bado.
>> Hebu fikiria kujenga mwingine kutoka C, dhana ya hali,
kufanya kitu kwa masharti.
Kama kitu ni kweli, kufanya hivyo.
Kama kitu kingine ni kweli, kufanya hivyo.
Ni aina ya programu sawa na mgawanyiko katika barabara.
Labda ni njia mbili uma, njia tatu uma, au zaidi.
Na katika Scratch, tupate kuwa kuonekana kitu kama hiki.
>> Hivyo hii moja moja kubwa.
Lakini fikiria jamaa unyenyekevu wa mantiki.
Kama x ni chini ya y, basi sema x ni chini kuliko y, mwingine kama x ni mkubwa kuliko y,
basi sema x ni mkubwa kuliko y.
Na kisha, kifikra, kama unadhani nyuma Scratch
au tu binadamu yako mwenyewe Intuition, vizuri, kama x si mkuu zaidi kuliko y, na x
si chini ya y, basi bila shaka x ni kwenda kuwa sawa na y.
Hivyo katika kesi hii, na nesting wale vitalu Scratch,
tunaweza kufikia tatu njia uma katika barabara?
>> Wakati huo huo, kama tunataka kufanya hivyo katika C, ni arguably
inaonekana simpler-- kidogo angalau mara moja kupata ukoo na syntax.
Kama x ni chini ya y, printf x ni chini ya y.
Mwingine kama x ni mkubwa kuliko y, printf x ni mkubwa kuliko y.
Mwingine printf x ni sawa na y-- na, tena, na wale backslash mwisho tu
kwa wale mistari mpya ili kwamba kama wewe kweli mbio aina hii ya mpango
ingekuwa tu hoja mshale hatimaye
mstari wa pili ya screen.
>> Sasa, wakati huo huo Scratch alikuwa nyingine makala ya kisasa zaidi, tu
baadhi ya ambayo tunakwenda awali hoja juu ya dunia ya C.
Na mmoja wao alikuwa aitwaye orodha katika Scratch.
Na hii ilikuwa maalum aina ya kutofautiana kwamba
kuruhusiwa wewe kuhifadhi vitu mbalimbali katika nyuma, na nyuma, na nyuma, na nyuma.
>> Katika C, haina orodha, per se, lakini kitu
kwamba kwa ujumla zaidi aitwaye arrays, ingawa tutaweza
kurudi baadaye muhula huu kwa kuangalia kitu
aitwaye orodha, au kweli orodha wanaohusishwa.
Lakini kwa sasa, karibu sawa katika C kwa ajili yetu
ni kwenda kuwa kitu aitwaye safu.
Na safu ni tu maalum aina ya kutofautiana
kwamba utapata kuhifadhi data nyuma, na nyuma, na nyuma, kwa nyuma.
>> Na kwa kweli, katika Scratch, kama sisi alitaka kupata
sehemu ya kwanza ya safu au list-- na mimi nina kwenda kwa simu yake,
kwa mkataba huo, argv, hoja vector, lakini zaidi juu ya kwamba kabla ya muda mrefu.
Kama mimi nataka kupata saa kipengele kwanza ya argv, katika ulimwengu wa Scratch
wewe kweli kufanya kawaida kuanza kuhesabu kutoka 1.
>> Na hivyo mimi ili kupata item 1 ya argv.
Hiyo tu jinsi MIT kutekelezwa dhana ya orodha.
Lakini katika C, Mimi nina kwenda zaidi tu kusema tu, argv,
ambayo tena ni jina la yangu list-- au kuwa wazi, safu.
Na kama nataka kwanza vipengele, mimi nina kwenda
kutumia mabano mraba, ambayo wewe wanaweza mara nyingi hutumika chini ya keyboard.
>> Lakini 0 tu ina maana, kupata yangu ya kwanza.
Hivyo juu ya tukio na kama wakati hupita, tunakwenda
kabla ya kuanza kuona dichotomies haya kati Scratch na C,
ambapo Scratch anatumia moja.
Sisi katika C kutumia 0 hapa.
Lakini utasikia haraka kuona mara tu kuelewa
Misingi ya kila lugha, kwamba mambo haya kuanza kupata wote zaidi
ukoo kwa njia ya mazoezi na mazoezi.
>> Basi hebu kweli sasa tuangalie mpango.
Hapa watakuwa wa kwanza wa C yetu chanzo kanuni kwa ajili ya programu kamili.
Na mpango tunakwenda kutoa kwa kuzingatia
ni moja hiyo ni sawa kwa kuwa mapema Scratch kipande.
>> Hivyo katika hapa, tuna nini arguably C mpango rahisi
unaweza kuandika kwamba kweli hana kitu.
Sasa, tutaangalia siku za nyuma, kwa sasa, ina ni pamoja na,
kiwango io.h, na hizi angle mabano, na int, na batili,
na braces curly, na kadhalika.
>> Na hebu tu kuzingatia je nini hasa intuitively,
inaweza kuruka nje saa wewe tayari.
Kwa kweli, kuu, sijui lazima kujua hii ni nini,
lakini kiasi kama Scratch alikuwa na kwamba wakati bendera ya kijani clicked puzzle kipande,
hivyo haina C kama lugha ya programu kuwa na kipande kuu ya kificho kwamba
anapata kunyongwa na default. Na kwa kweli, ni literally kwenda kuitwa kuu.
>> Hivyo kuu ni kazi.
Na ni kazi maalum ambayo ipo katika C kwamba wakati wewe kukimbia mpango,
ni kuu kwamba anapata inayoendeshwa na default. Katika ulimwengu wa Scratch,
ilikuwa ni kawaida wakati kijani bendera clicked kwamba got kukimbia na default.
>> Wakati huo huo, tumeona hii kabla, printf au magazeti mpangilio, hiyo ni
kwenda kuwa kazi ambayo inakuja na C, pamoja na rundo zima la wengine,
kwamba mapenzi kutoka muda na wakati tena, ili kufanya hasa
kama jina lake anapendekeza, magazeti kitu.
Je, tunataka magazeti?
Naam, tutaweza kuona kwamba na wahusika enclosing
kama these-- dunia hello, backslash n katika quotes mbili,
tunaweza kujua printf hasa nini magazeti juu ya screen.
>> Lakini ili kufanya kwamba, sisi kwa bahati mbaya
haja ya kuchukua kitu ambacho ni tayari cryptic kwa sisi binadamu,
lakini angalau ni kiasi fulani readable-- mkali ni pamoja na, kiwango io.h, int,
kuu, utupu, printf, wote wa kichawi incantations sisi tu kuona kwenye screen.
Lakini sisi kweli kuwa kwenda zaidi arcane bado.
Sisi kwanza haja ya kutafsiri kanuni kwamba sisi kuandika katika mashine kanuni.
Na kukumbuka kutoka wiki iliyopita kuwa mashine, angalau ndio tunajua hapa,
mwisho wa siku tu kuelewa zeros na ndio.
>> Na Mungu wangu, kama tulikuwa na kuandika haya zeros na ndio kwa kweli mpango,
ingekuwa kwa haraka sana, kuchukua furaha nje ya kitu chochote.
Lakini zinageuka, per wiki iliyopita, kuwa mipangilio hii ya zeros na ndio
tu na maana ya pekee.
Katika mazingira fulani, wapate maana idadi.
>> Katika mazingira fulani, wapate maana barua, au rangi, au idadi yoyote
ya uchukuaji nyingine huko juu.
Lakini kama vile kompyuta yako ina CPU, Central Processing Unit,
au bongo ndani ya kompyuta yako.
Ni kawaida Intel ndani, kwa sababu hiyo ni
moja ya makampuni makubwa kwamba inafanya CPUs kwa ajili ya kompyuta.
>> Naam, Intel CPUs na wengine tu wameamua mapema
kwamba baadhi ya mifumo ya zeros na ndio itakuwa na maana mambo maalum.
chati fulani ya zeros na ndio itakuwa na maana, magazeti huu kwa screen,
au kuongeza namba hizi mbili, au Ondoa namba hizi mbili,
au hoja kipande cha data kutoka kumbukumbu ya kompyuta yangu zaidi ya hapa,
au idadi yoyote ya ngazi nyingine ya chini sana, lakini hatimaye muhimu, shughuli.
Lakini, nashiriki, sisi binadamu si kwenda haja ya kujua kiwango hiki cha habari.
Hakika, tu kama mara ya mwisho, ambapo sisi yanayotumika tena, na tena, na tena,
jengo kutoka ngazi ya chini sana primitives kama zeros na ndio
na dhana ngazi za juu kama idadi, na barua,
na rangi, na zaidi, sisi pia tunaweza kama programmers
kusimama juu ya mabega ya wengine ambao wamekuja mbele yetu
na kutumia programu ambayo wengine watu wameandika kabla us--
ambazo ni mipango aitwaye compilers.
>> C ni lugha ambayo ni kawaida ulioandaliwa,
ambayo ina maana waongofu kutoka chanzo kanuni kwa mashine code.
Hasa, nini maana ya hii ni kwamba kama nimepata chanzo wako
kificho kwamba wewe mwenyewe kuandika, kama sisi hivi karibuni mapenzi katika muda tu juu ya screen,
na unataka kubadilisha hatimaye kwa mashine code--
wale zeros na ndio kwamba tu ya Mac au PC yako
understands-- nimepata kwanza kulisha kwamba kanuni chanzo katika kama
pembejeo kwa maalum programu inayoitwa compiler,
pato la ambayo sisi wataona ni mashine kanuni.
Na kwa kweli, mara ya mwisho sisi aliyesema kuhusu, kwa kweli, mwisho wa siku,
kutatua tatizo.
Nimepata pembejeo.
Na nimepata mazao.
Na nimepata aina fulani ya algorithm katikati.
>> Algorithms unaweza hakika kuwa kutekelezwa katika programu,
kama tuliona na pseudocode wiki iliyopita na kama tutaweza kuona na kanuni halisi
wiki hii.
Na hivyo compiler kweli tu ina seti ya algorithms ndani ya
yake ili kujua jinsi ya kubadilisha maneno maalum,
kama kuu, na printf, na wengine kwamba sisi tu
aliona katika mifumo ya zeros na wale ambao Intel ndani na wengine CPUs
kweli anaelewa.
Hivyo ni jinsi gani sisi kufanya hili?
Ambapo tunapata compiler?
>> Wengi wetu hapa na Mac au PC.
Na wewe ni mbio Mac OS, au Madirisha, au Linux, au Solaris,
au idadi yoyote ya wengine mifumo ya uendeshaji.
Na, kwa hakika, tunaweza kwenda nje kwenye mtandao
na download compiler kwa Mac au PC yako
kwa mfumo wako hasa uendeshaji.
Lakini sote tungekuwa juu ya kurasa tofauti, hivyo kusema.
Tunatarajia kuwa kidogo mazungumzo mbalimbali.
Na mambo bila kufanya kazi wote ni sawa.
Na, kwa hakika, siku hizi wengi wetu hawatumii
programu kwamba anaendesha tu juu ya Laptops wetu.
Badala yake, sisi kutumia kitu kama browser kwamba
inaruhusu sisi kupata mtandao msingi maombi katika wingu.
Na baadaye hii muhula, sisi kufanya hasa kwamba.
Sisi kuandika maombi au programu kwa kutumia code-- si C,
lakini lugha nyingine kama chatu na JavaScript-- kwamba kukimbia katika hilo wingu.
>> Na kwa kufanya hivyo, sisi wenyewe wakati wa muhula
kweli kutumia wingu makao mazingira inayojulikana kama CS50 IDE.
Hii ni programu mtandao msingi mazingira, au maendeleo jumuishi
mazingira, IDE, hiyo kujengwa atop baadhi wazi chanzo programu inayoitwa Cloud 9.
Na tumekuwa alifanya baadhi ya ufundishaji simplifications yake
ili kuficha baadhi ya vipengele katika wiki ya kwanza kwamba hatuna haja,
baada ambayo unaweza yatangaza yao na kufanya zaidi
kitu chochote unataka na mazingira.
>> Na inaruhusu sisi, pia, kwa kabla ya kufunga programu fulani.
Mambo kama kinachojulikana CS50 maktaba, ambayo tutaweza hivi karibuni kuona
hutoa sisi katika C na baadhi utendaji ya ziada.
Hivyo kama wewe kwenda kwa, hatimaye, CS50.io, wewe utakuwa ilisababisha kuingia katika,
na mara moja wewe kufanya na kujenga akaunti kwa ajili ya bure,
utakuwa na uwezo wa kupata mazingira kwamba inaonekana kabisa kama hii.
>> Sasa, hii ni katika hali ya chaguo-msingi.
Kila kitu ni nzuri na mkali juu ya screen.
Wengi wetu wana tabia ya kazi ya CS50 kipande hiyo ni
kabisa marehemu katika usiku.
Na hivyo baadhi yenu wanaweza kupendelea kugeuka ndani mode usiku, hivyo kusema.
>> Lakini, hatimaye, nini wewe kwenda kuona ndani ya CS50 IDE
ni tatu tofauti areas-- eneo juu ambapo kushoto
mafaili yako ni kwenda kuwa katika wingu, eneo juu ya haki juu
ambapo kanuni yako ni kwenda kuwa editable.
Wewe utakuwa na uwezo wa kufungua tabo mtu binafsi kwa ajili ya mpango wowote
kwamba kuandika muhula huu ndani ya ya kwamba kona ya juu kulia.
Na kisha zaidi arcanely, na bado kwa nguvu,
ni kwenda kuwa jambo hili katika chini inayojulikana kama dirisha terminal.
>> Hii ni shule ya zamani Amri Line Interface,
au CLI, ambayo inaruhusu wewe kutekeleza amri
juu ya computer-- katika kesi hii, kompyuta katika cloud--
kufanya mambo kama kukusanya code yako kutoka chanzo kanuni kwa mashine code,
kuendesha programu yako, au kuanza yako mtandao wa kompyuta, au hii kufikia hifadhidata yako,
na idadi yoyote ya mbinu nyingine kwamba tutaweza kuanza kutumia kabla ya muda mrefu.
Lakini kufika huko, tuko kwenda kweli kuwa
kwenda online na kuanza kucheza.
Na kwa kufanya hivyo, hebu kwanza kuanza kuchezea kuu,
na kuandika sehemu kuu ya mpango.
Na hebu kutumia kwamba kazi printf, ambayo sisi kutumika hapo awali,
tu kusema kitu.
>> Hivyo hapa mimi tayari ndani ya CS50 IDE.
Nimekuwa watumiaji katika mapema.
Na mimi full kupimwa dirisha.
Na hivyo, hatimaye, wewe pia katika matatizo Ujio
kufuata hatua sawa kwamba itatoa online nyaraka.
Hivyo huna haja ya kuwa na wasiwasi kuhusu absorbing kila hatua kidogo ya kiufundi
kwamba mimi kufanya hapa leo.
>> Lakini utasikia kupata screen kama hii.
Mimi kutokea kwa kuwa katika hali ya usiku.
Na unaweza kuangaza kila kitu up kwa mlemavu mode usiku.
Na mwishoni mwa siku, wewe ni kwenda kuona
hawa watatu kuu areas-- faili kisakuzi upande wa kushoto, tabo code juu juu,
na terminal dirisha chini.
>> Hebu kwenda mbele na kuandika mpango wangu wa kwanza.
Mimi nina kwenda preemptively kwenda Picha, Ila, na kuokoa faili yangu kama hello.c.
Hakika, kwa mkataba huo, yoyote sisi mpango kuandika kwamba imeandikwa katika lugha C
lazima jina lake jambo dot c, kwa mkataba.
Hivyo nina kwenda kwa jina hilo hello.c, kwa sababu Mimi nataka tu kusema hello dunia.
Sasa mimi nina kwenda kuvuta nje na bonyeza Hifadhi.
Na wote mimi hapa sasa ni tab katika ambayo siwezi kuanza kuandika code.
>> Hii si kwenda kukusanya.
Hii ina maana chochote.
Na hivyo hata kama mimi waongofu huu kwa zeros na ndio,
CPU ni kwenda kuwa hakuna Wazo nini kinaendelea karibu.
Lakini kama mimi kuandika mistari ambayo hayana mechi juu na C ya conventions-- C kuwa,
tena, hii language-- na syntax kama hii, printf hujambo world-- na nimekuwa
wamezipata starehe na kufanya hivyo baada ya muda.
Hivyo sidhani mimi alifanya yoyote typographical makosa.
>> Lakini, invariably, kwanza kabisa muda wa kufanya hii, wewe.
Na kile Mimi kuhusu kufanya nguvu sana vizuri kazi kwa ajili yenu mara ya kwanza.
Na kwamba ni sawa kabisa, kwa sababu sasa hivi wewe
ili tu kuona mengi yote ya upya, lakini baada ya muda mara moja kupata ukoo
na mazingira haya, na Lugha hii, na wengine,
itabidi kuanza kuona mambo ambayo ni aidha sahihi au sio sahihi.
>> Na hii ni nini wenzake mafundisho na bila shaka
wasaidizi kupata nzuri katika baada ya muda, ni spotting makosa au mende katika kanuni yako.
Lakini mimi kudai kwamba kuna hakuna mende katika kanuni hii.
Hivyo mimi sasa wanataka kuendesha mpango huu.
>> Sasa juu ya Mac yangu mwenyewe au PC, mimi niko katika tabia ya icons kubonyeza mara mbili
wakati nataka kukimbia baadhi ya mpango.
Lakini si kwamba mfano hapa.
Katika mazingira haya, ambayo ni CS50 IDE.
Sisi ni kutumia uendeshaji mfumo uitwao Linux.
Linux ni kukumbusha ya mwingine mfumo wa uendeshaji, kwa ujumla inayojulikana
kama Unix.
Na Linux ni hasa maalumu kwa ajili kuwa amri Line Mazingira, CLI.
Sasa, sisi ni kutumia maalum ladha ya Linux aitwaye Ubuntu.
Na Ubuntu ni tu baadhi ya toleo la Linux.
>> Lakini hizi Linux ya siku hizi kufanya kweli kuja na interfaces user graphical.
Na moja sisi kutokea kwa kutumia hapa ni mtandao msingi.
Hivyo hii inaweza kuangalia hata tofauti kidogo kutoka kitu
wewe mwenyewe anaweza kuwa kuonekana au kukimbia katika siku za nyuma.
>> Hivyo mimi nina kwenda mbele sasa na kufanya yafuatayo.
Nimekuwa kuokolewa faili hili kama hello.c.
Mimi nina kwenda mbele na aina clanghello.c Hivyo Clang
kwa lugha C ni compiler.
Ni kabla ya imewekwa katika CS50 IDE.
Na unaweza kabisa kushusha na kufunga hii juu ya Mac yako mwenyewe au PC.
>> Lakini tena, bila kuwa yote ya kabla ya Configuration aliyokutendea.
Hivyo kwa sasa, mimi nina tu kwenda kukimbia clanghello.c.
Na sasa taarifa syntax hii hapa hatimaye
kutambua tu ina maana kwamba mimi niko katika folder au directory aitwaye Workspace.
Hii ishara ya dola ni mkataba kwa maana, aina amri yako hapa.
>> Ni kile kinachoitwa haraka, tu kwa mkataba ni dola ishara.
Na kama mimi kwenda mbele sasa na bonyeza Kuingia, kitu inaonekana kuwa kilichotokea.
Lakini hiyo ni kweli jambo zuri.
chini ambayo hufanyika kwenye screen yako, zaidi ya uwezekano
kanuni yako ni kuwa sahihi, angalau syntactically.
>> Hivyo kama nataka kukimbia hii mpango, nini mimi?
Naam, zinageuka kuwa jina default kwa mkataba
kwa ajili ya programu wakati huna bayana jina kwa ajili ya mpango wako ni a.out.
Na syntax hii pia, utasikia kupata ukoo na kabla ya muda mrefu.
>> Dot kufyeka ina maana tu, hey, CS50 IDE, kukimbia mpango ujulikanao a.out
hiyo ni ndani ya saraka yangu ya sasa.
dot Hiyo ina maana saraka ya sasa.
Na tutaweza kuona nini wengine Utaratibu kama ya wahusika ina maana kabla ya muda mrefu.
>> Hivyo hapa sisi kwenda, Ingieni, hujambo dunia.
Na wewe utakuwa taarifa, kwamba ni nini kilichotokea?
Si tu kwamba ni magazeti hujambo dunia.
Pia wakiongozwa mshale wa mstari wa pili.
>> Na kwa nini ni kwamba?
Ilikuwa kificho kwamba sisi aliandika kabla ya kile kwamba kuhakikisha kwamba mshale ingekuwa
kwenda kwenye mstari baada ya hapo?
Mapenzi kitu kuhusu kompyuta ni ni kwenda tu
kufanya literally nini kuwaambia ni kufanya.
>> Hivyo kama wewe kuwaambia ni printf hello, comma, nafasi, dunia, karibu quote,
ni literally tu kwenda magazeti wahusika hao.
Lakini nilikuwa na tabia hii maalum mwishoni, kukumbuka, backslash n.
Na kwamba ni nini kuhakikisha kwamba tabia alikwenda
mstari wa pili ya screen.
>> Kwa kweli, napenda kwenda na kufanya hivyo.
Hebu kwenda mbele na kufuta hii.
Sasa, taarifa kwamba juu ya screen yangu kuna
kidogo nyekundu mwanga katika tab kuonyesha,
hey, umefanya si kuokolewa faili yako.
Hivyo mimi nina kwenda mbele na udhibiti S au amri S, kuokoa faili.
Sasa ni goes-- alikwenda kwa ajili ya kijani moment--.
Na sasa ni nyuma tu kuwa icon karibu.
>> Kama mimi sasa kukimbia clanghello.c tena, Kuingia, dot kufyeka, a.out, Ingieni,
utaona kwamba bado kazi.
Lakini ni arguably buggy kidogo.
Hivi sasa, workspace yangu prompt--, na kisha kuwa ishara ya dola,
na kisha prompt-- yangu halisi yote ni juu ya mstari huo.
Hivyo bila ya shaka hii mdudu aesthetic, hata kama ni kweli mantiki mdudu.
>> Hivyo nina kwenda kuondoa nini mimi tu alifanya.
Mimi nina kwenda rerun a.out.
Ilani nimekuwa aliongeza newline tabia nyuma.
Nimekuwa kuokolewa file.
>> Hivyo nina kwenda kwa rerun a.out, and-- Dammit, mdudu, mdudu maana makosa.
Hivyo mdudu ni kwamba hata kama Mimi aliongeza backslash n huko,
re-kuokolewa, re-mbio mpango, tabia ilikuwa sawa.
Kwa nini ingekuwa kwamba kuwa?
>> Mimi kukosa hatua, haki?
Hiyo hatua muhimu mapema ni kwamba una to-- wakati mabadiliko ya chanzo kanuni yako,
ni zamu nje pia kukimbia hivyo kwa njia ya compiler
tena ili kupata mpya mashine kanuni.
Na mashine kanuni, zeros na ndio,
ni kwenda kuwa karibu sawa, lakini si kikamilifu hivyo, kwa sababu tunahitaji,
bila shaka, kwamba mstari mpya.
>> Hivyo kurekebisha hili, mimi nina kwenda haja kwa rerun clanghello.c, kuingia, dot
kufyeka, a.out.
Na sasa, hello dunia ni nyuma ambapo mimi kutarajia kuwa ni.
Hivyo hii yote ni mzuri na mwema.
Lakini a.out ni jina pretty kijinga kwa mpango, ingawa hutokea kwa kuwa,
kwa sababu za kihistoria, default-- maana kusanyiko mazao.
>> Lakini basi mimi kwenda mbele hapa na kufanya hivyo kwa njia tofauti.
Nataka yangu mpango hujambo dunia kwa kweli kuitwa hello.
Hivyo kama ilivyokuwa icon kwenye yangu desktop, bila kuwa na a.out.
Ingekuwa kuitwa hello.
>> Hivyo kufanya hili, ni zamu nje kwamba Clang, kama mipango mingi,
inasaidia hoja mstari amri, au bendera, au swichi,
ambayo tu kuchangia tabia yake.
Hasa, Clang inasaidia dash o bendera, ambayo kisha inachukua neno la pili.
Katika kesi hiyo, mimi itabidi kiholela, lakini sababu, simu yake hello.
Lakini mimi naweza kuiita kitu chochote Nataka, isipokuwa a.out, ambayo
Itakuwa badala badala ya uhakika.
>> Na kisha tu kutaja jina ya faili mimi wanataka kukusanya.
Hivyo sasa ingawa mwanzoni amri mimi bado kuwa Clang,
mwishoni mwa amri Mimi bado wana jina la faili,
Mimi sasa kuwa na hizi mstari amri hoja, hizi bendera kwamba ni kusema,
oh, kwa njia, pato-o, faili aitwaye hello, si default a.out.
>> Hivyo kama mimi hit Enter sasa, hakuna kitu inaonekana kuwa kilichotokea.
Na, hata hivyo, sasa siwezi kufanya dot kufyeka hello.
Hivyo ni mpango huo.
zeros na ndio ni kufanana mwisho wa siku.
>> Lakini wao uko katika wawili tofauti files-- a.out,
ambayo ni toleo la kwanza na tu upumbavu jina lake,
na sasa hello, ambayo ni mengi zaidi ya kulazimisha jina kwa ajili ya mpango.
Lakini, kwa uaminifu, mimi kamwe kwenda kukumbuka hii tena,
na tena, na tena.
Na, kwa kweli, kama sisi kuandika mipango ngumu zaidi,
amri uko kwenda na kuandika
ni kwenda kupata hata ngumu zaidi bado.
>> Na hivyo si kuwa na wasiwasi.
Ni zinageuka kuwa binadamu kabla sisi wamebaini wao pia
alikuwa na haya tatizo exact.
Wao pia hakuwa na kufurahia kuwa na aina haki muda mrefu, arcane amri,
achilia kukumbuka.
Na hivyo binadamu mbele yetu kuwa alifanya programu nyingine ambayo iwe rahisi
kukusanya programu yako.
>> Na, kwa hakika, mmoja kama mpango inaitwa Tengeneza.
Hivyo mimi nina kwenda mbele na kufanya hili.
Mimi nina kwenda tengua kila kitu mimi tu alifanya katika njia zifuatazo.
Hebu aina LS.
Na wewe utakuwa taarifa tatu things-- a.out, na nyota, hello
na nyota, na hello.c.
Hopefully, hii lazima kuwa ni kidogo Intuitive,
kadiri mapema kulikuwa na kitu katika workspace hii.
Kulikuwa na kitu kuwa nilikuwa umba mpaka tulianza darasani.
>> Na mimi kuundwa hello.c.
Mimi kisha ulioandaliwa yake, na kuitwa ni a.out.
Na kisha mimi ulioandaliwa hivyo tena kidogo tofauti na kuitwa ni hello.
Hivyo nina mafaili tatu katika orodha hii, katika folda hii inaitwa Workspace.
Sasa, naona kuwa vilevile kama mimi kuvuta nje kweli.
>> Kama mimi kuvuta nje hapa na tuangalie mkono kwamba juu kulia
kona, kama alivyoahidi kushoto upande mkono wa screen yako
ni daima kwenda kwa kuonyesha nini katika akaunti yako, nini
ndani ya CS50 IDE.
Na kuna files tatu huko.
>> Hivyo nataka kujikwamua a.out na hello.
Na kama waweza kufikiria intuitively, wewe
inaweza kutatua ya kudhibiti click au haki click juu ya hili.
Na hii orodha kidogo pops up.
Unaweza kushusha faili, kukimbia hivyo, hakikisho hilo, mahitaji, kubadili jina,
au kile si.
>> Na mimi naweza kufuta tu, na ingekuwa kwenda mbali.
Lakini hebu kufanya mambo kwa amri line kwa sasa, ili kupata starehe
na hii, na kufanya yafuatayo.
Mimi nina kwenda mbele na kuondoa a.out kwa kuandika literally rma.out.
Zinageuka, amri kwa kuondoa au kufuta kitu,
si kuondoa au kufuta.
>> Ni ufupi zaidi RM, tu kuokoa baadhi keystrokes, na hit Enter.
Sasa tunakwenda kuwa fulani isiyoeleweka kirahisi kuondoa mara kwa mara file a.out.
Mimi si kweli kujua nini kawaida file itakuwa bado.
Lakini mimi wanataka kuondoa hiyo.
>> Hivyo mimi nina kwenda aina y kwa ndiyo.
Au mimi naweza aina yake nje, na hit Enter.
Na, tena, kitu inaonekana kutokea.
Lakini hiyo ni, kwa ujumla, ni jambo jema.
>> Kama mimi aina LS wakati huu, nifanye kuona?
Hopefully, hello tu na hello.c.
Sasa, kama kando, utasikia taarifa nyota hii, kinyota,
hiyo ni mwishoni mwa mipango yangu.
Na wao ni pia kuonyesha juu katika kijani.
Hiyo ni njia tu CS50 IDE ya ya cluing wewe katika ukweli
kwamba si kwamba chanzo kanuni.
Hiyo ni executable, runnable mpango kwamba unaweza kweli kuendesha
kwa kufanya dot kufyeka, na kisha ni jina.
>> Sasa, basi mimi kwenda mbele na kuondoa huu, rm hello, Enter, kuondoa mara kwa mara
faili hello, ndiyo.
Na sasa kama mimi aina LS, tuko nyuma kwa hello.c.
Jaribu kufuta yako halisi chanzo kanuni.
Hata ingawa kuna makala kujengwa katika CS50 IDE ambapo
unaweza kwenda kupitia historia yako marekebisho na rewind katika wakati kama ajali
kufuta kitu, kufanya kukumbuka kama kwa papo hizi ndiyo au hapana,
ya nini hasa unataka kufanya.
Na nikienda hadi juu mkono wa kushoto kona hapa,
wote kwamba bado ni hello.c.
Hivyo kuna mashada ya amri nyingine kwamba wewe
unaweza nitafanya katika ulimwengu wa Linux, moja ambayo ni, tena, Tengeneza.
Na tunakwenda Tengeneza mpango wangu sasa kama ifuatavyo.
>> Badala ya kufanya Clang, badala ya kufanya Clang-o,
Mimi nina kwenda tu literally aina, kufanya hello.
Na sasa taarifa, mimi niko si kuandika kufanya hello.c.
Mimi kuandika kufanya hello.
>> Na mpango huu Matokeo kwamba kuja na CS50 IDE, na zaidi
ujumla na Linux, ni mpango kwamba ni
kwenda kufanya programu inayoitwa Hello.
Na itakuja kwa kudhani, kwa mkataba, kwamba kama mpango huu unaweza kufanywa,
itakuja kuwa alifanya kutoka chanzo kificho faili kuishia katika dot c, hello.c.
>> Hivyo kama mimi hit Enter sasa, taarifa kwamba amri kwamba anapata kunyongwa
ni kweli hata tena kabla kuliko kabla.
Na kwamba kwa sababu tumekuwa preconfigured CS50 IDE kuwa na
baadhi ya vipengele ziada kujengwa katika kwamba hatuna haja bado tu, lakini hapo.
Lakini jambo muhimu kutambua ni sasa nina mpango Hello.
>> Kama mimi aina LS tena, mimi kuwa na mpango hello.
Na siwezi kuendesha kwa dot kufyeka a.out, hapana,
kwa sababu hatua nzima ya hii zoezi mara dot kufyeka hello.
Na sasa nina wangu mpango hujambo dunia.
Hivyo kusonga mbele, tuko karibu kila mara tu
kwenda kukusanya mipango yetu kutumia amri Tengeneza.
Na kisha tunakwenda kukimbia nao na dot kufyeka, na jina wa programu hiyo.
Lakini kutambua nini Kufanya anafanya kwa wewe, ni yenyewe si compiler.
Ni tu mpango urahisi kwamba anajua jinsi ya kusababisha compiler
kuendesha hivyo kuwa wewe mwenyewe unaweza kuitumia.
>> Nini amri nyingine zipo katika Linux, na kwa upande CS50 IDE?
Tutaweza hivi karibuni kuona kwamba kuna CD amri, Change City.
Hii utapata ndani ya yako amri Mpya interface
kusonga mbele, na nyuma, na kufungua folders tofauti
bila kutumia mouse yako.
>> LS tuliona, ambayo inasimamia kwa orodha files katika saraka ya sasa.
Kufanya Dir, unaweza pengine kuanza kwa kudai
nini haya yana maana now-- kufanya directory, kama unataka kujenga folder.
RM kwa kuondoa, RM Dir kwa kuondoa saraka na hayo,
tena, ni mstari amri EQUIVALENTS ya nini
anaweza kufanya katika CS50 IDE na panya yako.
Lakini utasikia hivi karibuni kupata kwamba wakati mwingine ni tu
mengi kwa kasi ya kufanya mambo kwa keyboard,
na hatimaye mengi na nguvu zaidi.
>> Lakini ni vigumu wanasema kuwa chochote tumekuwa kufanya hivyo mbali
ni kwamba wote wenye nguvu, wakati wote tumekuwa akisema ni, hujambo dunia.
Na, kwa kweli, mimi hardcoded Maneno hujambo dunia katika mpango wangu.
Hakuna mabadiliko bado.
Scratch ilikuwa utaratibu wa ukubwa zaidi ya kuvutia wiki iliyopita.
>> Na hivyo hebu kupata huko.
Hebu kuchukua hatua kuelekea kuwa na njia ya baadhi ya kazi hizi.
Hivyo si tu haina C kuja na printf, na mashada ya kazi nyingine
baadhi ya ambayo tutaweza kuona baada ya muda, haina
kufanya hivyo wote kuwa rahisi haki nje ya lango katika kupata user pembejeo.
>> Kwa kweli, moja ya udhaifu ya lugha kama C,
na hata Java na bado wengine, ni kwamba hana
kufanya hivyo ni rahisi kupata tu vitu kama integers kutoka kwa watumiaji, au masharti, maneno,
na misemo, basi mambo peke yake kama yaliyo hatua maadili, au idadi halisi
ikiwa na pointi decimal, na kwa kweli idadi ya muda mrefu, kama tutaweza hivi karibuni kuona.
Hivyo hii orodha ya kazi hapa, hizi ni kama vipande nyingine Scratch puzzle
kwamba tuna kabla ya imewekwa katika CS50 IDE kwamba tutaweza kutumia kwa muda wa wiki chache
kama magurudumu mafunzo ya kila aina, na hatimaye kuchukua mbali, na kuangalia
chini ya kofia, pengine, katika jinsi mambo haya yanatekelezwa.
>> Lakini kwa kufanya hivyo, hebu kweli kuandika mpango.
Hebu kwenda mbele sasa.
Na mimi nina kwenda kujenga mpya faili kwa kubonyeza hii pamoja kidogo,
na kubonyeza New faili.
>> Mimi nina kwenda kuokoa hii ijayo moja kama, hebu sema, string.c,
kwa sababu nataka kucheza na masharti.
Na kamba katika C ni tu mlolongo wa wahusika.
Hivyo sasa hebu kwenda mbele na kufanya yafuatayo.
>> Pamoja na kiwango IO.h-- na ni zamu nje kiwango IO,
IO tu ina maana pembejeo na mazao.
Hivyo zinageuka kuwa mstari huu hapa ni nini
ni jirani yetu kwa kutumia printf.
Printf, bila shaka, inazalisha pato.
Hivyo ili kutumia printf, ni zamu nje unaweza kuwa na hii mstari wa kanuni
katika juu ya faili yako.
>> Na tutaweza kuja nyuma kwa nini lilikuwa na maana kuwa kabla ya muda mrefu.
Ni zinageuka kuwa katika mpango wowote C mimi kuandika,
Mimi nimepata kuanza kwa kificho kwamba inaonekana kama hii.
Na wewe utakuwa taarifa CS50 IDE, na maendeleo nyingine jumuishi
mazingira kama hayo, ni kwenda kujaribu kama bora
wanaweza kumaliza mawazo yako.
Kwa kweli, wakati iliyopita kama mimi tengua nini mimi tu alifanya, mimi hit Enter.
>> Mimi kisha kugonga wazi curly brace, kugonga kuingia tena.
Na ni kumaliza mawazo yangu.
Ni alinipa mstari wa mwezi, indented si chini kwa sababu nzuri Stylistic tutaweza kuona.
Na kisha ni moja kwa moja alinipa kwamba brace curly kumaliza mawazo yangu.
Sasa, haina daima nadhani nini unataka kufanya.
Lakini kwa sehemu kubwa, ni gani kuokoa baadhi keystrokes.
Hivyo wakati iliyopita, sisi mbio program-- hii hello, dunia, na kisha ulioandaliwa yake,
na kisha akakimbia yake.
Lakini hakuna mabadiliko hapa.
Nini kama sisi alitaka kufanya kitu tofauti?
Naam, ni nini kama nilitaka kweli kupata kamba kutoka kwa mtumiaji?
Mimi naenda kutumia puzzle kipande aitwaye hasa that-- kupata kamba.
>> Zamu nje katika C kwamba wakati wewe hawataki kutoa pembejeo kwa puzzle kipande,
au vizuri zaidi kwa kazi, literally tu kufanya mabano wazi,
karibu mabano.
Hivyo ni kana kwamba kuna hakuna sanduku nyeupe ya aina ndani.
kusema block kabla alikuwa nyeupe kidogo sanduku.
Hatuna kwamba sanduku nyeupe sasa.
>> Lakini wakati mimi wito kupata kamba, I unataka kuweka matokeo mahali fulani.
Hivyo dhana ya kawaida sana katika C ni piga kazi, kama kupata kamba hapa,
na kisha kuhifadhi kurudi thamani yake.
Ni matokeo ya yake juhudi katika kitu fulani.
>> Na ni nini kujenga katika programu,
iwe katika Scratch au sasa C, kwamba sisi unaweza kutumia ili kweli kuhifadhi kitu?
Kuitwa ni kutofautiana, haki?
Na katika Scratch, sisi si kweli huduma ya kile kinachoendelea katika vigezo.
>> Lakini katika kesi hii, sisi kwa kweli kufanya.
Mimi nina kwenda kusema kamba.
Na kisha mimi naweza kuita hii kitu chochote nataka.
Mimi nina kwenda kuiita jina, anapata kupata kamba.
>> Na sasa hata kama wewe mpya kidogo kwa hii,
taarifa kwamba mimi nina anakosa baadhi ya kina.
Mimi nina kusahau nusu koloni.
Mimi haja ya kumaliza wazo hili.
Hivyo nina kwenda kwa hoja ya mshale wangu, na kugonga nusu koloni huko.
Na tuna nini mimi tu kosa gani?
Katika mstari wa kanuni, namba 5 kwa wakati huu,
Mimi nina wito kupata kamba na pembejeo hakuna.
Hivyo hakuna nyeupe kidogo sanduku kama Save kuzuia ina.
>> Mimi tu kusema, hey, kompyuta, kupata nami kamba.
ishara sawa si kweli ishara sawa, per se.
Ni zoezi operator, ambayo ina maana,
hey, kompyuta, hoja thamani kutoka kulia juu ya mkono wa kushoto.
Na katika upande wa kushoto, nina zifuatazo.
>> Hey, kompyuta, nipe kamba mlolongo wa wahusika.
Na wito kwamba Jina kamba.
Na mimi si hata kuwa na kuiita Jina.
>> Mimi naweza kuiita, conventionally, kitu kama S,
kiasi kama sisi kutumika i kwa kuwaita kutofautiana i.
Lakini sasa mimi haja ya kufanya kitu kwa hayo.
Itakuwa pretty kijinga kujaribu kuandaa kanuni hii, kukimbia
huu mpango, ingawa Mimi nina kupata kamba,
kwa sababu ni bado tu kwenda kusema hujambo dunia.
>> Lakini nini kama mimi wanataka kubadili hali hii.
Kwa nini si mimi kufanya hili?
Asilimia s, comma s.
Na hii ni kidogo cryptic bado.
>> Hivyo basi mimi kufanya vigezo yangu wazi zaidi.
Napenda kutaja Jina huu kutofautiana.
Na hebu angalia kama hatuwezi tease mbali nini kinatokea hapa.
>> Hivyo kwenye mstari tano, mimi nina kupata kamba.
Na mimi nina kuhifadhi kwamba kamba, chochote mtumiaji typed katika
katika keyboard yake, katika variable kuitwa Jina.
Na zinageuka kuwa printf hana tu
kuchukua moja hoja katika mara mbili quotes, pembejeo moja katika quotes mbili.
>> Ni inaweza kuchukua mbili, au tatu, au zaidi, kama kwamba pili, au ya tatu, au nne,
ni majina yote ya vigezo, au hasa maadili,
kwamba unataka kuziba katika, dynamically, kwamba kamba katika quotes.
Kwa maneno mengine, kile itakuwa ni makosa na hili?
Kama mimi tu kusema habari jina, backslash n, kuokolewa faili yangu, ulioandaliwa kanuni yangu,
na mbio hii, nini kitatokea?
>> Ni tu kwenda kusema, hello jina, literally N-A-M-E,
ambayo ni aina ya kijinga kwa sababu ni hakuna tofauti na ulimwengu.
Hivyo chochote katika quotes ni nini literally anapata kuchapishwa.
Hivyo kama mimi nataka kuwa na placeholder huko,
Mimi kwa kweli haja ya kutumia baadhi syntax maalum.
Na zinageuka kama kusoma nyaraka kwa ajili ya kazi printf,
itakuambia kwamba kama wewe kutumia asilimia s,
unaweza kubadilisha thamani kama ifuatavyo.
>> Baada ya comma baada ya kuwa mara mbili quote, wewe tu
kuandika jina la kutofautiana kwamba unataka
kuziba katika ndani ya muundo kwamba kanuni, au format specifier,
asilimia s kwa masharti.
Na sasa kama mimi wameweza kuokolewa faili yangu, Mimi kwenda nyuma chini ya terminal yangu.
Na mimi aina Tengeneza Kamba, kwa sababu, tena, jina la hii
file kwamba mimi waliamua kabla ni string.c.
>> Hivyo mimi nina kwenda kusema Tengeneza Kamba, kuingia.
Oh wangu wema, kuangalia yote ya makosa tumekuwa alifanya tayari.
Na hii is-- nini, hii ni kweli kama sita, saba line mpango?
Hivyo hii ni mahali ambapo unaweza sana haraka kupata balaa.
>> Hii dirisha terminal ina sasa tu regurgitated
idadi kubwa ya ujumbe wa makosa.
Hakika, sina makosa zaidi ujumbe kuliko mimi mstari wa kanuni.
Kwa hiyo kile kinachoendelea?
>> Naam, mkakati bora kufanya wakati wowote
je kukutana balaa orodha ya makosa kama hicho,
ni kitabu nyuma, kuangalia kwa amri wewe tu mbio, ambayo katika kesi yangu
ni kufanya kamba.
Kuangalia nini kufanya hivyo, na hiyo ni kwamba muda mrefu Clang amri, hakuna mpango mkubwa huko.
>> Lakini nyekundu ni mbaya.
Green ni kujaribu kuwa mpole na kusaidia.
Lakini bado ni mbaya, katika kesi hii.
Lakini ambapo ni mbaya?
>> String.c, line tano, tabia ya tano.
Hivyo hii ni tu ya kawaida mkataba.
Kitu colon kitu ina maana line idadi na idadi tabia.
Kosa, matumizi ya Undeclared kitambulisho kamba.
Je, maana ya kiwango katika?
>> Hivyo, kwa bahati mbaya, Clang ni kujaribu kuwa na manufaa.
Lakini ni makosa, katika kesi hii.
Hakuna, Clang, sikuwa na maana kiwango cha IO.
Mimi maana kwamba kwenye mstari mmoja, ndiyo.
>> Lakini mstari tano ni hii moja hapa.
Na Clang hana kuelewa S-T-R-I-N-G.
Ni Undeclared kitambulisho, a neno ni tu hajawahi kuona mbele.
Na kwamba kwa sababu C, lugha sisi ni kuandika code katika haki sasa,
hana vigezo inaitwa masharti.
>> Hana, by default, msaada kitu kinachoitwa kamba.
Hiyo ni CS50 kipande cha jargon, lakini kawaida sana.
Lakini siwezi kurekebisha hili kama ifuatavyo.
>> Kama mimi kuongeza line moja ya kanuni juu ya mpango huu,
pamoja na CS50.h, ambayo ni faili mwingine mahali fulani ndani ya CS50 IDE, mahali fulani
kwenye gari ngumu, hivyo kusema, ya Ubuntu mfumo wa uendeshaji
kwamba mimi nina mbio, kwamba ni file hiyo ni
kwenda kufundisha uendeshaji mfumo kile kamba ni, tu
kama kiwango io.h ni file katika mfumo wa uendeshaji ambayo ni
kwenda kufundisha ni nini printf.
>> Hakika, sisi ingekuwa waliopata ujumbe sawa sana
kama IO alikiri kiwango cha Io.h na walijaribu kutumia printf.
Hivyo mimi nina kwenda mbele na tu kuchukua Control L wazi screen yangu.
Au unaweza aina wazi na itakuwa tu wazi dirisha terminal.
Lakini bado unaweza kitabu nyuma katika wakati.
>> Na mimi nina kwenda kwa rerun Tengeneza String.
Kuvuka vidole yangu wakati huu, kuingia.
Oh, Mungu wangu, ni kazi.
inaonyesha me kwa muda mrefu cryptic amri kwamba ni nini Kufanya yanayotokana kupitia Clang,
lakini ujumbe hakuna kosa.
Hivyo kutambua, ingawa unaweza kupata kabisa
kuzidiwa na idadi ya ujumbe wa makosa,
ni tu inaweza kuwa hii kuachia annoying athari, ambapo Clang haelewi
jambo moja, maana yake basi haelewi neno ijayo,
au mstari wa pili.
Na hivyo tu kwama kooni juu ya kanuni yako.
Lakini fix inaweza kuwa rahisi.
Na hivyo daima kuzingatia mstari wa kwanza kabisa wa pato.
Na kama huna kuelewa, tu kuangalia
kwa maneno ambayo inaweza kuwa dalili, na idadi line,
na tabia, ambapo kwamba kosa inaweza kuwa.
>> Sasa basi mimi kwenda mbele na aina dot kufyeka, kamba, kuingia.
Hm, siyo kusema hello kitu chochote.
Kwa nini?
Naam, kukumbuka, ambapo ni mbio?
>> Ni pengine kukwama kwa wakati katika kitanzi, kama wewe, juu ya mstari sita,
kwa sababu Kupata String kwa kubuni, zilizoandikwa na wafanyakazi CS50,
ni halisi maana ya kukaa tu hapo kusubiri, na kusubiri,
na kusubiri kwa kamba.
All maana sisi na kamba ni pembejeo za binadamu.
Hivyo unajua nini?
Hebu kwenda mbele.
Na tu juu ya whim, napenda kuandika jina langu, David, kuingia.
Sasa nina mpango nguvu zaidi.
Ilisema, hujambo Daudi.
>> Kama mimi kwenda mbele na kukimbia hii tena, basi mimi kujaribu kusema Zamila jina, kuingia.
Na sasa tuna mpango wa nguvu.
Mimi si ngumu coded dunia.
Mimi si ngumu coded jina, au David, au Zamila.
>> Sasa ni mengi zaidi kama mipango tunajua, ambapo kama kuchukua pembejeo,
inazalisha pato tofauti kidogo.
Sasa, hii si bora user uzoefu, au UX.
Mimi kuendesha programu.
>> Sijui nini natakiwa kufanya, isipokuwa mimi kweli kuangalia
au kukumbuka chanzo kanuni.
Basi hebu kufanya user uzoefu kidogo bora
na rahisi ya mambo.
Hebu kwenda nyuma katika hii mpango, na tu kusema printf.
>> Na napenda kwenda mbele na kusema jina, koloni, na nafasi, na kisha nusu koloni.
Na tu kwa ajili mateke, hakuna n kuwepo kwa kuzorota.
Na kwamba ni makusudi, kwa sababu mimi sitaki
haraka hoja ya mstari wa pili.
>> Nataka, badala yake, kufanya hivyo, kufanya kamba recompile kificho wangu katika mashine mpya
kificho dot kufyeka kamba.
Ah, hii ni kiasi prettier.
Sasa ninajua hakika kile kompyuta anataka nifanye, kuwapa jina.
>> Hivyo mimi nina kwenda mbele na aina katika Rob, kuingia, na hello, Rob.
Hivyo, kutambua, hii bado ni, mwishoni wa siku, tu mpango tisa line.
Lakini tumekuwa kuchukuliwa hatua hizi mtoto.
>> Tuliandika line moja ambayo sisi walikuwa na mazoea, printf, hello dunia.
Kisha sisi undid kidogo ya hiyo.
Na sisi kweli kutumika kupata kamba.
Na sisi kuchafuka kwamba thamani katika kutofautiana.
Na kisha sisi akaenda mbele na kuboresha ni zaidi na mstari wa tatu.
Na mchakato huu iterative ya kuandika programu ni kweli muhimu.
Katika CS50, na katika maisha kwa ujumla, unapaswa ujumla sio kukaa chini,
kuwa na mpango katika akili, na kujaribu kuandika nzima damn kitu wote mara moja.
>> Itakuwa, inevitably, kusababisha njia makosa zaidi ya sisi wenyewe waliona hapa.
Hata mimi, leo hii, daima kufanya makosa mengine ya kijinga,
ni makosa kweli vigumu kwamba ni vigumu kufikiri.
Lakini utakuwa kufanya makosa zaidi zaidi mstari wa kanuni kuandika wote mara moja.
Na hivyo hii mazoezi ya, kuandika kidogo ya kificho
kwamba wewe ni starehe na, kukusanya yake, kukimbia, mtihani kwa ujumla zaidi,
kisha kuondoka on-- hivyo tu kama tuliendelea layering na layering wiki iliyopita,
kujenga kutoka kitu sana rahisi kitu ngumu zaidi,
kufanya hivyo hapa.
Je, si kukaa chini, na kujaribu kuandika tatizo nzima.
Kwa kweli kuchukua hatua hizi mtoto.
>> Sasa, masharti ni si wote kwamba muhimu kwa ajili yao wenyewe.
Tunatarajia kweli, walau, kama kwa na kitu kingine katika toolkit yetu.
Basi hebu kweli kufanya hasa kwamba.
>> Hebu kwenda mbele sasa na mjeledi juu mpango tofauti kidogo.
Na tutaweza kuwaita int.c hii, kwa integer.
Mimi nina kwenda, vile vile, pamoja na CS550.h.
Mimi nina kwenda pamoja na kiwango IO.
Na kwamba ni kwenda kuwa pretty kawaida katika siku hizi chache kwanza ya darasa.
>> Na mimi nina kwenda kwa tayari mwenyewe na kazi kuu.
Na sasa badala ya kupata kamba, hebu kwenda mbele na kupata int.
Hebu simu yake i, na kuiita kupata int, parens karibu, nusu koloni.
Na sasa hebu kufanya kitu kwa hayo, printf.
>> Hebu kusema kitu kama hello, backslash n, comma i.
Hivyo mimi nina pretty much mimicking nilivyopatenda muda tu iliyopita.
Nina placeholder hapa.
Mimi comma i hapa, kwa sababu nataka kuziba i katika placeholder hiyo.
>> Basi hebu kwenda mbele na kujaribu kuandaa mpango huu.
file inaitwa int.c.
Hivyo mimi nina kwenda kusema, kufanya int, kuingia.
Oh, Mungu wangu, lakini hakuna mpango mkubwa, haki?
Kuna makosa.
>> Kuna makosa kisintaksia hapa kama kwamba mpango hawawezi
kuwa ulioandaliwa ndani ya int.c, line saba, tabia ya 27, kosa format
bayana aina char nyota, chochote kile.
Lakini aina Hoja ni int.
>> Hivyo hapa, pia, sisi siyo kwenda to-- ingawa leo ni mengi ya vifaa,
tunakwenda overwhelm kwa kabisa kila kipengele cha C,
na programu zaidi kwa ujumla, katika tu hizi wiki chache za kwanza.
Kwa hiyo, kuna mara nyingi kwenda kuwa jargon na ambayo wewe si ukoo.
Na, kwa kweli, nyota char ni kitu tunakwenda kurudi
katika wiki au wakati mbili ya.
>> Lakini kwa sasa, hebu angalia kama tunaweza Hazrat maneno ambayo ni ya ukoo.
Miundo tofauti-- hivyo tumesikia format specifier, format kificho kabla.
Hiyo ni ukoo.
Type-- lakini hoja ina aina int.
Hebu subiri kidogo, i ni int.
>> Labda asilimia s kweli ina baadhi ya maana defined.
Na, kwa hakika, ni gani.
integer, kama unataka printf mbadala hilo,
wewe kweli kuwa kutumia tofauti format specifier.
Na bila kujua hii isipokuwa mtu niliwaambia,
au wewe alikuwa amefanya hivyo kabla.
Lakini asilimia i ni nini inaweza kawaida kutumika
katika printf kwa plugging katika integer.
Unaweza pia kutumia asilimia d kwa integer decimal.
Lakini i ni nzuri na rahisi hapa.
Hivyo tutaweza kwenda na kwamba.
>> Sasa basi mimi kwenda mbele na rerun kufanya int, kuingia.
Hiyo ni nzuri, hakuna makosa.
Dot kufyeka int OK, mbaya user uzoefu, kwa sababu mimi si aliiambia mwenyewe
nifanyeje.
Lakini hiyo ni faini.
Mimi nina kuambukizwa juu kwa haraka.
>> Na sasa napenda kwenda mbele na aina katika David, OK, Zamila, Rob.
OK, hivyo hili ni jambo zuri.
Wakati huu, mimi nina kutumia kazi, puzzle kipande, iitwayo kupata int.
Na ni zamu nje na tutaweza kuona baadaye hii katika term--
CS50 wafanyakazi imetekeleza kupata kamba kwa namna
kwamba itakuwa tu kimwili kupata kamba kwa ajili yenu.
>> Ni imetekeleza kupata int katika namna kwamba itakuwa tu
kupata integer kwa ajili yenu.
Na kama wewe, binadamu, hawana kushirikiana, ni
literally tu kwenda kusema retry, retry, retry,
literally wamekaa looping, mpaka wewe kumlazimu pamoja na baadhi ya idadi ya kichawi,
kama 50, na hodi 50.
>> Au kama sisi kukimbia hii tena na aina katika 42, hello 42.
Na hivyo kazi kupata int ndani ya kwamba kipande puzzle
ni mantiki ya kutosha, mawazo ya kutosha, kufikiri, ndivyo neno?
Na ni nini namba?
kukubali tu, hatimaye, idadi.
>> Hivyo ni zinageuka kuwa hii si yote expressive.
kufikia hapa; kufikia sasa.
Hivyo, yay, mara ya mwisho sisi akaenda pretty haraka
katika utekelezaji wa michezo, na uhuishaji, na kazi za sanaa katika Scratch.
Na hapa, sisi ni kuwa yaliyomo na hujambo dunia, na hodi 50.
>> Siyo msukumo kwamba wote.
Na kwa kweli, hizi kwanza chache mifano itachukua muda
njia panda juu katika msisimko.
Lakini tuna mambo mengi zaidi kudhibiti sasa, kwa kweli.
Na tunakwenda sana haraka kuanza layering
juu ya primitives haya ya msingi.
>> Lakini kwanza, hebu kuelewa nini mapungufu ni.
Kwa kweli, moja ya mambo Scratch hana urahisi
hebu kufanya ni kweli kuangalia chini ya Hood,
na kuelewa nini kompyuta ni, nini anaweza kufanya,
na nini mapungufu yake ni.
Na kwa kweli, kwamba ukosefu wa uelewa, uwezekano, ya muda mrefu
unaweza kusababisha mistakes-- kuandika yetu wenyewe mende, kuandika programu usalama kwamba
anapata hacked kwa namna fulani.
>> Basi hebu kuchukua baadhi ya hatua kuelekea kuelewa hili vizuri kidogo na
njia ya, kusema, mfano zifuatazo.
Mimi nina kwenda mbele na kutekeleza halisi haraka mpango ujulikanao fira.
Kama, hebu kuongeza idadi ya baadhi ya pamoja.
Na mimi nina kwenda kwa kificho pembe baadhi hapa, na tu nakala na kuweka
ambapo mimi nilikuwa kabla, tu ili tuweze kupata kwenda mapema.
Hivyo sasa mimi nimepata mwanzo msingi ya mpango ujulikanao fira.
>> Na hebu kwenda mbele na kufanya hili.
Mimi nina kwenda mbele na kusema, intx anapata kupata int.
Na unajua nini?
Hebu kufanya bora user uzoefu.
>> Hivyo hebu sema tu x ni, na kwa ufanisi kuchochea mtumiaji kutupa x.
Na kisha basi mimi kwenda mbele na kusema, printf vipi kuhusu y ni, wakati huu wanatarajia
maadili mbili kutoka kwa mtumiaji.
Na kisha hebu tu kwenda mbele na kusema, printf, jumla ya x na y ni.
Na sasa mimi sitaki kufanya asilimia s.
Nataka kufanya asilimia i, backslash n, na kisha kuziba katika thamani jibu.
>> Hivyo ni jinsi gani mimi kwenda juu ya kufanya hii?
Unajua nini?
Najua jinsi ya kutumia vigezo.
Napenda tu kutangaza mwezi mmoja, int z.
>> Na mimi nina kwenda kuchukua nadhani hapa.
Kama kuna dalili sawa katika hili lugha, labda naweza tu kufanya x plus y,
muda mrefu kama mimi kuishia yangu mawazo na nusu koloni?
Sasa naweza kwenda nyuma chini hapa, kuziba katika z, kumaliza wazo hili na nusu koloni.
Na hebu angalia sasa, kama hawa Utaratibu wa lines-- x ni kupata int.
Y ni kupata int.
>> Kuongeza x na y, kuhifadhi thamani katika z-- hivyo, tena, kumbuka ishara sawa
si sawa.
Ni zoezi kutoka kulia kwenda kushoto.
Na hebu magazeti nje kwamba jumla ya x na y ni si halisi z,
lakini nini ndani ya z.
Basi hebu kufanya fira - nzuri, hakuna makosa wakati huu.
Dot kufyeka fira, kuingia, x ni kwenda kuwa 1.
>> Y ni kwenda kuwa 2.
Na jumla ya x na y ni 3.
Basi hiyo ni yote faini na nzuri.
>> Hivyo ungependa kufikiria kwamba math wanapaswa kufanya kazi katika mpango kama hii.
Lakini unajua nini?
Je, hii ni kutofautiana, line 12, hata muhimu?
Huwezi haja ya kupata katika tabia ya tu kuhifadhi vitu katika vigezo
kwa sababu tu unaweza.
Na, kwa kweli, ni kwa ujumla aliichukulia kubuni mbaya
kama wewe ni kujenga variable, kuitwa z katika kesi hii, kuhifadhi kitu ndani yake,
na kisha mara moja kutumia, lakini kamwe tena.
Kwa nini kutoa kitu jina kama z kama uko literally
kwenda kutumia kwamba Jambo moja tu, na hivyo
kupakana na ambapo wewe uliumba katika nafasi ya kwanza,
hivyo karibu katika suala la mstari wa kanuni?
Hivyo unajua nini?
Ni zinageuka kuwa C ni pretty rahisi.
Kama mimi kwa kweli wanataka kuziba-katika maadili hapa,
Sina haja ya kutangaza kutofautiana mpya.
Mimi naweza kuziba-katika tu x plus y, kwa sababu C anaelewa
hesabu, na watoa huduma za hesabu.
>> Hivyo siwezi tu kusema, kufanya hesabu hii, x plus y, chochote maadili hayo ni,
kuziba na kusababisha integer katika kamba hiyo.
Hivyo hii inaweza kuwa, ingawa tu mstari mmoja mfupi,
kubuni bora, mpango bora, kwa sababu kuna chini kificho, kwa hiyo
chini kwa mimi kuelewa.
Na pia ni safi tu, kadiri sisi siyo
kuanzisha maneno mapya, alama mpya, kama z,
ingawa wao si kweli kutumikia sehemu kubwa ya kusudi.
>> Kwa bahati mbaya, math si kwamba kuaminika wakati mwingine wote.
Hebu kwenda mbele na kufanya hili.
Mimi nina kwenda mbele sasa na kufanya yafuatayo.
>> Hebu kufanya printf, asilimia i, pamoja na asilimia i, kitakuwa asilimia i, backslash n.
Na mimi nina kwenda kufanya Haya xyx plus y.
Hivyo mimi nina kwenda tu kuandika upya hii tofauti kidogo hapa.
Napenda tu kufanya haraka sanity hundi.
Tena, hebu si kupata mbele ya sisi wenyewe.
Kufanya fira, dot kufyeka fira.
x ni 1, y ni 2, 1 plus 2 ni 3.
Hivyo hiyo ni nzuri.
Lakini hebu magumu hili sasa bit, na kuunda faili mpya.
>> Mimi nina kwenda kuwaita hii moja, kusema, ints, wingi kwa integers.
Napenda kuanza ambapo mimi nilikuwa wakati iliyopita.
Lakini sasa hebu kufanya chache mistari mingine.
Hebu kwenda mbele na kufanya yafuatayo, printf, asilimia i, bala asilimia i,
ni asilimia i, comma x, comma YX minus y.
Hivyo mimi nina kufanya kidogo tofauti math huko.
Hebu kufanya mwingine mmoja.
Hivyo asilimia i mara asilimia i ni asilimia i, backslash n.
Hebu kuziba-katika x, na y, na mara x y.
Tutaweza kutumia asteriski juu ya kompyuta yako kwa mara.
>> Huwezi kutumia x. x ni jina kutofautiana hapa.
Wewe kutumia nyota kwa kuzidisha.
Hebu kufanya moja zaidi.
Printf asilimia mimi, umegawanyika kwa asilimia i, ni asilimia i,
backslash n. xy kugawanywa na y-- hivyo kutumia kufyeka mbele katika C
kufanya mgawanyiko.
Na hebu kufanya moja nyingine.
Salio ya asilimia i, umegawanyika kwa asilimia i, ni asilimia i.
xy-- na sasa salio ni nini kushoto juu.
Unapojaribu kugawa denominator katika kadiri,
ni kiasi gani kushoto juu ya kwamba wewe hakuweza kugawanya nje?
>> Kwa hiyo, kuna si kweli, lazima, alama
tumekuwa kutumika katika shule ya daraja kwa hili.
Lakini kuna katika C. Unaweza kusema x modulo y, ambapo
hii ni ishara asilimia katika context-- hii confusingly wakati uko ndani ya
ya quotes mbili, ndani ya printf, asilimia
hutumika kama format specifier.
>> Wakati matumizi ya asilimia nje ya kwamba katika kujieleza hisabati,
ni modulo operator kwa msimu arithmetic-- kwa madhumuni yetu
hapa, ina maana tu, ni nini salio ya x kugawanywa na y?
Hivyo x kugawanywa na y ni x kufyeka y.
Nini salio ya x kugawanywa na y?
Ni x mod y, kama programu kusema.
>> Hivyo kama mimi alifanya makosa hapa, napenda kwenda mbele na kufanya ints, wingi, nzuri,
na dot kufyeka ints.
Na hebu kwenda mbele na kufanya, hebu sema, 1, 10.
Yote ya haki, 1 plus 10 ni 11, hundi.
1 minus 10 ni hasi 9, angalia.
>> 1 mara 10 ni 10, hundi.
1 kugawanywa na 10 is-- OK, tutaweza ruka kwamba moja.
Salio ya 1 kugawanywa na 10 ni 1.
Hiyo ni sahihi.
Lakini kuna mdudu katika hapa.
>> Hivyo moja mimi kuweka yangu kukabidhi, si sahihi.
I mean, ni karibu na 0.
1 kugawanywa na 10, unajua, kama tuko kukata pembe baadhi, hakika, ni sifuri.
Lakini ni lazima kweli kuwa 1/10, 0.1, au 0.10, 0.1000, ama kadhalika.
>> Ni lazima si kweli kuwa sifuri.
Naam, ni zamu nje kwamba kompyuta ni kufanya literally nini tunaambiwa ni kufanya.
Sisi ni kufanya math kama x kugawanywa na y.
Na wote wawili x na y, per mistari ya kificho awali, ni integers.
>> Aidha, katika mstari wa 15, sisi ni kuwaambia printf, hey, printf kuziba-katika
integer, kuziba-katika integer, kuziba-katika integer-- hasa
x, na kisha y, na kisha x kugawanywa na y. x na y ni ints.
Sisi ni nzuri huko.
>> Lakini ni nini x kugawanywa na x?
x kugawanywa na y lazima, kimahesabu, 1/10, au 0.1,
ambayo ni idadi halisi, idadi halisi kuwa, uwezekano, uhakika decimal.
Siyo integer.
>> Lakini nini ni karibu integer kwa 1/10, au 0.1?
Yeah, ni aina ya ni sifuri.
0.1 ni kama kiasi hiki.
Na 1 ni kiasi hiki.
Hivyo 1/10 ni karibu na 0 kuliko ilivyo kwa moja.
>> Na hivyo kile C ni kufanya kwa ajili us-- aina ya sababu tunaambiwa ni to--
ni truncating kwamba integer.
Ni kuchukua thamani, ambayo tena ni wanatakiwa kuwa kitu kama 0.1000,
0 na kadhalika.
Na ni truncating kila kitu baada ya uhakika decimal
ili yote haya stuff, kwa sababu haina
fit katika dhana ya integer, ambayo ni idadi tu kama hasi 1, 0, 1,
juu na chini, ni kumtupia mbali kila kitu baada ya uhakika decimal sababu wewe
haziwezi kutosha uhakika decimal katika integer kwa ufafanuzi.
>> Hivyo jibu hapa ni sifuri.
Hivyo ni jinsi gani sisi kurekebisha hili?
Tunahitaji ufumbuzi mwingine wote pamoja.
Na tunaweza kufanya hivyo, kama ifuatavyo.
>> Hebu kwenda mbele na kuunda mpya file, hii mtu mmoja aitwaye floats.c.
Na ila ni hapa katika saraka ya sawa, float.c.
Na napenda kwenda mbele na nakala baadhi ya kwamba kanuni kutoka mapema.
>> Lakini badala ya kupata int, hebu kufanya hili.
Nipe hatua yaliyo thamani kuitwa x. ambapo yaliyo hatua
thamani ya kitu tu literally kitu kwa yaliyo hatua.
Ni inaweza hoja ya kushoto, na haki.
Ni idadi halisi.
>> Na napenda kuwaita si kupata int, lakini kupata kuelea,
ambayo pia alikuwa miongoni mwa orodha ya chaguzi katika maktaba C250.
Hebu kubadili y kwa kuelea.
Hivyo hii inakuwa kupata kuelea.
>> Na sasa, hatutaki kuziba katika ints.
Ni zinageuka tuna kutumia asilimia f kwa kuelea, asilimia f kwa kuelea,
na sasa kuiokoa.
Na sasa, vidole shilingi, kufanya ikifungwa, nzuri, dot kufyeka ikifungwa.
x ni kwenda kuwa moja 1. y Ni kwenda kuwa 10 tena.
>> Na, nzuri, OK Aidha yangu ni sahihi.
Mimi nilikuwa na matumaini kwa zaidi, lakini mimi alisahau kuandika.
Basi hebu kwenda na kurekebisha hitilafu hii mantiki.
>> Hebu kwenda mbele na kunyakua zifuatazo.
Tutaweza tu kufanya nakala kidogo na kuweka.
Na mimi nina kwenda kusema bala.
>> Na mimi nina kwenda kusema mara.
Na mimi nina kwenda kwa kusema kugawanywa.
Na mimi nina si kwenda kufanya modulo, ambayo si kama germane hapa,
kugawanywa na f, na mara plus OK, hebu kufanya hili tena.
>> Kufanya ikifungwa, dot kufyeka ikifungwa, na 1, 10, and-- nzuri, hapana, OK.
Kwa hiyo mimi nina idiot.
Hivyo hii ni ya kawaida sana katika sayansi ya kompyuta
kufanya makosa ya kijinga kama hii.
>> Kwa madhumuni ya ufundishaji, kile kweli alitaka kufanya
ilikuwa mabadiliko ya sayansi hapa kwa pamoja, kwa bala, kwa nyakati,
na kugawanya, kama wewe hopefully niliona wakati wa zoezi hili.
Hivyo sasa hebu re-kukusanya hii mpango, kufanya dot kufyeka ikifungwa.
>> Na kwa mara ya tatu, hebu kuona kama yanakidhi matarajio yangu.
1, 10, kuingia, ndiyo, OK, 1.000, kugawanywa na 10.000, ni 0.100000.
Na zinageuka tunaweza kudhibiti jinsi wengi idadi ni baada ya pointi hizo decimal.
Sisi kwa kweli mapenzi.
Tutaweza kuja nyuma na kwamba.
>> Lakini sasa, kwa kweli, math ni sahihi.
Hivyo, tena, nini takeaway hapa?
Ni zinageuka kuwa katika C, kuna si tu tu strings-- na, kwa kweli,
kuna si kweli, kwa sababu sisi kuongeza wale walio na maktaba CS50.
Lakini kuna si ints tu.
>> Kuna pia ikifungwa.
Na zinageuka rundo la data nyingine aina pia kwamba, tutaweza kutumia kabla ya muda mrefu.
Zamu nje kama unataka single tabia, si kamba ya wahusika,
unaweza kutumia tu char.
>> Zinageuka kuwa kama unataka bool, thamani Boolean, kweli au uongo tu,
shukrani kwa maktaba CS50, tumekuwa aliongeza kwa C aina bool data vilevile.
Lakini pia ni kuwasilisha katika lugha nyingine nyingi kama vile.
Na zinageuka kuwa wakati mwingine wewe haja idadi kubwa basi kuja na default
na ints na ikifungwa.
>> Na, kwa kweli, mara mbili ni idadi ambayo inatumia si 32 bits, lakini 64 bits.
Na kwa muda mrefu kwa muda mrefu ni idadi hiyo anatumia si 32, bits lakini 64 bits,
kwa mtiririko huo, kwa yaliyo hatua maadili na integers, kwa mtiririko huo.
Basi hebu kweli sasa Kuona hii katika hatua.
>> Mimi nina kwenda mbele hapa na mjeledi juu ya mpango mwingine mmoja.
Hapa, mimi nina kwenda mbele na wala ni pamoja na CS50.h.
Na napenda kwenda, ni pamoja na kiwango io.h.
>> Na wewe utakuwa taarifa kitu funky kinachotokea hapa.
Ni si rangi coding mambo katika njia ile ile kama ilivyokuwa kabla.
Na zinageuka, hiyo ni kwa sababu mimi hawajakata jambo faili jina.
>> Mimi nina kwenda kuwaita hii moja sizeof.c, na kugonga Hifadhi.
Na taarifa nini kinatokea kwa yangu sana nyeupe kificho dhidi ya kwamba kuongezeka nyeusi.
Sasa, angalau kuna baadhi zambarau katika huko.
Na ni syntax yalionyesha.
>> Hiyo ni kwa sababu, rahisi kabisa, nimekuwa aliiambia IDE ni aina gani ya faili
ni kwa kutoa ni jina, na hasa faili ugani.
Sasa, hebu kwenda mbele na kufanya hili.
Mimi nina kwenda mbele na sana tu magazeti nje bool following--
ni asilimia LU.
>> Tutaweza kurudi kwa kwamba katika muda tu.
Na kisha mimi nina kwenda magazeti ukubwa wa bool.
Na sasa, tu kuokoa mwenyewe baadhi ya wakati, mimi nina
kwenda kufanya nzima rundo la hizo mara moja.
Na, hasa, mimi nina kwenda kwa kubadili hali hii kwa char na char.
Hii moja, mimi nina kwenda na mabadiliko kwa mara mbili na mara mbili.
>> Hii moja, mimi nina kwenda na mabadiliko kwa kuelea na kuelea.
Hii moja, mimi nina kwenda kwa mabadiliko ya int na int.
Na hii moja, mimi nina kwenda na mabadiliko ya muda mrefu kwa muda mrefu.
Na ni bado kuchukua muda mrefu, kwa muda mrefu kwa muda mrefu.
>> Na kisha, mwisho, mimi alitoa mwenyewe moja wengi mno, kamba.
Ni zinageuka kuwa katika C, kuna operator maalum iitwayo
ukubwa wa hiyo ni literally kwenda, wakati kukimbia,
kutuambia ukubwa wa kila mmoja vigezo hivi.
Na hii ni njia, sasa, tunaweza kuungana nyuma
kwa majadiliano ya wiki iliyopita ya data na uwakilishi.
>> Hebu kwenda mbele na kukusanya ukubwa wa dot kufyeka ukubwa wa.
Na hebu angalia.
Ni zinageuka kuwa katika C, hasa juu ya CS50 IDE,
hasa juu ya mfumo wa uendeshaji Ubuntu,
ambayo ni 64-bit uendeshaji mfumo katika kesi hii,
bool ni kwenda kutumia Byte moja ya nafasi.
Hiyo ni jinsi ukubwa ni kipimo, si katika bits, lakini katika ka.
Na kukumbuka kwamba byte moja ni bits nane.
Hivyo bool, hata kama wewe kitaalam tu haja 0 au 1,
ni kidogo fujo jinsi tumekuwa kutekelezwa yake.
Ni kweli kwenda kutumia nzima byte-- hivyo zeros wote, ni labda
zote zile, au kitu kama hicho, au moja tu 1 miongoni mwa bits nane.
>> char, wakati huo huo, kutumika kwa ajili ya tabia kama Ascii tabia per wiki iliyopita,
ni kwenda kuwa tabia moja.
Na kwamba synchs up na wazo yetu ya hilo kuwa hakuna zaidi ya 256 bits-- badala yake,
synchs na ni kuwa hakuna zaidi ya 8 bits, ambayo
inatupa maadili kama wengi kama 256.
mara mbili ni kwenda kuwa 8 ka au 64 bits.
>> kuelea ni 4.
int ni 4.
muda mrefu, kwa muda mrefu ni 8.
Na kamba ni 8.
Lakini usijali kuhusu hilo.
Tunakwenda peel nyuma kwamba safu.
Ni zinageuka, masharti Unaweza kuwa mrefu zaidi ya 8 ka.
>> Na, kwa hakika, tumekuwa imeandikwa masharti tayari, hello dunia,
zaidi ya 8 ka.
Lakini tutaweza kurudi kwa kwamba katika muda tu.
Lakini kuchukua mbali hapa ni yafuatayo.
>> kompyuta yoyote tu ina finite kiasi cha kumbukumbu na nafasi.
Unaweza tu kuhifadhi wengi files juu ya Mac au PC yako.
Unaweza tu kuhifadhi mipango mingi katika RAM mbio mara moja, lazima, hata
na kumbukumbu virtual, kwa sababu una kiasi kidogo cha RAM.
>> Na tu picture-- kama wewe sijawahi imefungua mbali
au kuamuru kumbukumbu ya ziada kwa ajili ya kompyuta, wewe
wanaweza kujua kwamba ndani ya kompyuta yako
ni kitu ambacho inaonekana kidogo kama hii.
Hivyo hii ni tu kampuni ya kawaida aitwaye Muhimu kwamba inafanya RAM kwa kompyuta.
Na RAM ni ambapo programu kuishi wakati wao ni mbio.
>> Kadhalika kila Mac au PC, wakati wewe mara mbili click mpango, na ni kufungua,
na kufungua baadhi neno hati au kitu kama hicho,
ni maduka hayo kwa muda katika RAM, kwa sababu RAM ni kasi
kuliko disk yako ngumu, au hali yako imara disk.
Hivyo ni tu ambapo mipango kwenda kuishi wakati wao ni mbio,
au wakati mafaili zinatumika.
>> Hivyo kuwa mambo ambayo kuangalia kama ndani ya hii ya mbali yako,
au mambo kubwa kidogo ndani ya desktop yako.
Lakini muhimu ni wewe tu na finite idadi ya mambo haya.
Na kuna tu kiasi kidogo cha vifaa wamekaa dawati hii haki
hapa.
>> Hivyo, hakika, hatuwezi kuhifadhi kubwa kwa muda mrefu namba.
Na, hata hivyo, kama unadhani nyuma daraja shule, jinsi ya tarakimu watu wengi Unaweza
una haki ya uhakika decimal?
Kwa jambo hilo, jinsi ya tarakimu watu wengi Unaweza una kushoto ya uhakika decimal?
Kweli, kubwa wengi.
>> Sasa, sisi binadamu anaweza tu kujua jinsi ya kutamka milioni,
na bilioni, trilioni, na quadrillion, na quintillion.
Na mimi nina kusukuma mipaka ya yangu understanding-- au my-- mimi kuelewa
idadi, lakini yangu matamshi ya namba.
Lakini wanaweza kupata kubwa na kubwa kwa tarakimu infinitely wengi wa kushoto
au na haki ya uhakika decimal.
>> Lakini kompyuta tu kuwa kiasi kidogo cha kumbukumbu,
finite idadi ya transistors, a finite idadi ya balbu mwanga ndani.
Hivyo kile kinachotokea wakati wewe kukimbia nje ya nafasi?
Kwa maneno mengine, kama wewe kufikiri nyuma kwa wiki iliyopita
wakati sisi aliyesema kuhusu idadi wenyewe kuwakilishwa katika binary,
tuseme kwamba sisi tumepewa thamani hii 8-bit hapa.
>> Na tuna saba 1 na moja 0.
Na tuseme kwamba tunataka kuongeza 1 kwa thamani hii.
Hii ni kweli kubwa hivi sasa.
>> Hii ni 254, kama mimi kukumbuka math kutoka kulia wiki iliyopita.
Lakini nini kama mimi kubadili kwamba rightmost 0 kwa 1?
Hesabu yote, ya Bila shaka, inakuwa nane 1 ya.
Hivyo sisi bado ni nzuri.
>> Na kwamba pengine inawakilisha 255, ingawa kulingana na mazingira
inaweza kweli kuwakilisha namba hasi.
Lakini zaidi juu ya kwamba wakati mwingine.
Hii anahisi kama ni kuhusu kama juu kama mimi unaweza kuhesabu.
>> Sasa, ni bits 8 tu.
Na Mac yangu, hakika, ina njia zaidi ya 8 bits ya kumbukumbu.
Lakini haina kuwa finite.
Hivyo hoja hiyo inatumika, hata kama sisi kuwa na zaidi ya hawa juu ya screen.
>> Lakini nini kinatokea kama wewe ni kuhifadhi idadi hiyo, 255,
na unataka kuhesabu 1 kidogo juu?
Unataka kwenda 255-256.
tatizo, bila shaka, ni kwamba kama wewe kuanza kuhesabu saa sifuri kama wiki iliyopita,
huwezi kuhesabu kama juu kama 256, achilia 257,
achilia 258, m kwa sababu kile hutokea wakati kuongeza 1?
Kama wewe kufanya umri wa daraja shule mbinu, kuweka 1 hapa,
na kisha 1 plus 1 ni 2, lakini hiyo ni kweli zero, wewe kubeba 1,
kubeba 1, kubeba 1.
Mambo yote haya, 1 hayo, nenda na sifuri.
Na wewe upepo hadi, ndiyo, kama mtu alidokeza, 1 upande wa kushoto.
Lakini kila kitu unaweza kweli kuona na inafaa katika kumbukumbu
ni nane tu 0, ambayo ni kusema wakati fulani kama wewe, kompyuta,
walijaribu kuhesabu juu ya kutosha juu, uko kwenda kufungia, inaweza kuonekana,
na sifuri, au labda hata hasi namba, ambayo ni hata chini ya sifuri.
>> Na tunaweza aina ya kuona hii.
Hebu kwenda mbele na kuandika halisi haraka mpango hapa.
Hebu kwenda mbele na kuandika programu inayoitwa kufurika.
Pamoja na CS50.h, ni pamoja na kiwango cha IO.h-- loo,
Mimi kwa kweli amekosa syntax yangu mwangaza.
Basi hebu kuokoa hii kama overflow.c.
>> Na sasa int kuu void-- na baada ya muda, tutaweza
kurudi kueleza kwa nini sisi kuendelea kuandika int kuu utupu.
Lakini kwa sasa, hebu tu kufanya hivyo, kuchukua ni kwa nafasi.
Hebu kutoa mwenyewe int, na initialize kwa 0.
>> Hebu basi kufanya kwa int i kupata zero-- kweli, hebu kufanya usio kitanzi
na kuona nini kinatokea.
Wakati kweli, basi hebu magazeti nje n ni asilimia i, backslash n, kuziba-katika n.
Lakini, sasa, hebu kufanya n anapata n plus 1.
>> Hivyo kwa maneno mengine, juu ya kila iteration ya kitanzi hii usio na mipaka,
hebu kuchukua thamani n ya, na kuongeza 1 kwa hilo, na kisha
kuhifadhi matokeo ya nyuma katika n upande wa kushoto.
Na, kwa kweli, tumeona syntax kidogo kama hii, kwa ufupi.
hila baridi ni badala ya kuandika yote haya nje,
unaweza kweli kusema n plus sawa na 1.
>> Au kama wewe kweli unataka kuwa dhana tu, unaweza kusema n plus plus nusu koloni.
Lakini hizi mbili za mwisho ni tu nini tunatarajia kuwaita kisintaksia sukari
kwa jambo la kwanza.
>> Jambo la kwanza ni wazi zaidi, kabisa faini, sahihi kabisa.
Lakini hii ni zaidi ya kawaida, mimi itabidi kusema.
Hivyo tutaweza kufanya hivyo kwa muda tu.
>> Hebu sasa kufanya kufurika, ambayo sauti badala ominous, dot kufyeka kufurika.
Hebu angalia, n ni kupata pretty kubwa.
Lakini hebu fikiria, jinsi kubwa unaweza n kupata?
>> n ni int.
Tuliona wakati iliyopita na ukubwa wa mfano kwamba int ni ka nne.
Tunajua kutokana na wiki iliyopita, ka nne ni 32 bits, kwa sababu 8 mara 4, hiyo ni 32.
Hiyo inaenda kuwa bilioni 4.
>> Na sisi ni hadi 800,000.
Hii ni kwenda kuchukua milele kuhesabu kama juu kama mimi waweza.
Hivyo mimi nina kwenda mbele, kama waweza kabla ya muda mrefu,
na kugonga Control C-- kusema ukweli, Control C, mengi, ambapo Control C kwa ujumla
njia kufuta.
Kwa bahati mbaya, kwa sababu hii ni mbio katika wingu,
pengine lile wingu ni kutema mate nje mambo mengi,
pato sana, ni kwenda kuchukua muda kidogo kwa ajili ya pembejeo yangu
kupata wingu.
Hivyo hata kama mimi hit Control C sekunde chache zilizopita,
hii ni dhahiri upande athari ya kitanzi usio.
>> Na hivyo katika kesi hiyo, tuko ataondoka kwamba kuwa.
Na tunakwenda kuongeza mwingine terminal dirisha juu hapa
kwa pamoja, ambayo bila shaka haina kama kwamba, tangu ni bado kufikiri.
Na hebu kwenda mbele na kuwa kidogo zaidi ya busara.
>> Mimi nina kwenda mbele na kufanya hii tu finitely wengi nyakati.
Hebu kutumia kwa kitanzi, ambayo mimi alluded mapema.
Hebu kufanya hivyo.
Nipe mwingine int variable i anapata 0.
i ni chini ya, hebu sema, 64 i ++.
Na sasa napenda kwenda mbele na magazeti nje n ni asilimia i, comma n.
Na kisha n-- hii bado kwenda kuchukua milele.
Hebu kufanya hivyo.
>> n anapata n mara 2.
Au tunaweza kuwa na dhana na kufanya mara sawa na 2.
Lakini hebu tu kusema n sawa na yenyewe, mara 2.
Kwa maneno mengine, katika hili mpya toleo la mpango,
Sitaki kusubiri daima kutoka kama 800,000 kwa bilioni 4.
Hebu tu kupata zaidi ya hii na.
>> Hebu kweli mara mbili n kila wakati.
Ambayo, kukumbuka, mara dufu ni kinyume cha kuwa, bila shaka.
Na ambapo wiki iliyopita tuna kitu tena, na tena,
na tena, super haraka, mara dufu bila ya shaka
kupata yetu kutoka 1 kwa kubwa iwezekanavyo thamani kwamba tunaweza kuhesabu kwa pamoja int.
>> Basi hebu kufanya hasa hili.
Na tutaweza kurudi huu kabla ya muda mrefu.
Lakini hii, tena, ni tu kama kuzuia kurudia katika Scratch.
Na wewe utakuwa kutumia hii kabla ya muda mrefu.
>> Hii ina maana kuhesabu kutoka sifuri hadi, lakini si sawa, hadi 64.
Na juu ya kila iteration ya hii kitanzi, tu kuweka incrementing i.
Hivyo i ++ - na hii kujenga ujumla kwenye mstari 7 ni njia tu super kawaida
ya kurudia baadhi ya mistari ya kanuni, baadhi idadi ya nyakati.
Ambayo mstari wa kanuni?
Hizi braces curly, kama wewe huenda zilizopatikana kutoka sasa,
maana, kufanya yafuatayo.
>> Ni katika kama Scratch, wakati ina vitalu njano
na rangi nyingine aina hiyo ya kukumbatia au kumkumbatia vitalu nyingine.
Hiyo ni nini curly wale braces ni kufanya hapa.
Hivyo kama mimi got syntax yangu right-- wewe unaweza kuona ishara karoti katika C njia
hiyo ni mara ngapi mimi nilikuwa kujaribu kutatua tatizo hili.
Hivyo hebu kujikwamua kwamba moja kabisa, na karibu kwamba dirisha.
Na tutaweza kutumia mwezi mmoja.
Kufanya kufurika, dot kufyeka kufurika, Ingieni, wote haki,
inaonekana mbaya wakati wa kwanza.
Lakini hebu kitabu nyuma katika wakati, kwa sababu mimi hii mara 64.
>> Na taarifa mara ya kwanza, n ni 1.
mara ya pili, n ni 2, kisha 4, kisha 8, kisha 16.
Na inaonekana kwamba haraka kama Mimi kupata takribani bilioni 1,
kama mimi mara mbili yake tena, kwamba anipe bilioni 2.
Lakini zinageuka, ni haki juu ya cusp.
>> Na hivyo ni kweli kufurika int kutoka bilioni 1
kwa takribani hasi 2 bilioni, kwa sababu integer,
tofauti na idadi sisi walikuwa kuchukua wiki iliyopita,
inaweza kuwa wote chanya na hasi katika hali halisi na katika kompyuta.
Na ili angalau mmoja wa wale bits ni ufanisi kuibiwa.
Hivyo kweli sisi tu kuwa 31 bits, au bilioni 2 maadili iwezekanavyo.
>> Lakini kwa sasa, takeaway ni kabisa tu, chochote nambari hizi ni
na chochote math ni, kitu mbaya hutokea hatimaye,
kwa sababu hatimaye wewe ni kujaribu permute bits moja mara nyingi sana.
Na wewe kwa ufanisi kwenda kutoka 1 kwa labda wote 0, au labda
baadhi tu mfano mwingine kwamba wazi, kulingana na mazingira,
inaweza kutafsiriwa kama namba hasi.
Na hivyo inaweza kuonekana mimi juu Unaweza kuhesabu katika mpango huu hasa
ni tu takribani bilioni 1.
Lakini kuna ufumbuzi ubaguzi hapa.
Unajua nini?
>> Napenda kubadili kutoka int kwa muda mrefu kwa muda mrefu.
Na napenda kwenda mbele hapa na say-- mimi nina kwenda kuwa
kubadili hali hii kwa unsigned muda mrefu.
Au, hebu angalia, mimi kamwe kukumbuka mwenyewe.
>> Hebu kwenda mbele na kufanya kufurika.
Hakuna, si kwamba ni, LLD, asante.
Hivyo wakati mwingine Clang inaweza kuwa na manufaa.
Sikuwa kukumbuka nini format specifier alikuwa kwa muda mrefu kwa muda mrefu.
>> Lakini, kwa kweli, Clang aliniambia.
Green ni aina fulani ya mema, bado ina maana alifanya makosa.
Ni kubahatisha kwamba mimi maana LLD.
>> Hivyo basi mimi kuchukua ni ushauri, kwa muda mrefu muda mrefu idadi decimal, ila hiyo.
Na napenda rerun yake, dot kufyeka kufurika, kuingia.
Na sasa nini baridi ni hii.
>> Kama mimi kitabu nyuma katika wakati, bado tunaanza kuhesabu katika place-- huo 1, 2, 4,
8, 16.
Ilani, sisi kupata yote njia hadi bilioni 1.
Lakini basi sisi salama kupata bilioni 2.
>> Kisha sisi kupata bilioni 4, kisha bilioni 8, bilioni 17.
Na sisi kwenda juu, na juu, na ya juu.
Hatimaye, hii, pia, mapumziko.
>> Hatimaye, kwa muda mrefu kwa muda mrefu, ambayo ni thamani ya 64-bit, si
thamani 32-bit, kama hesabu juu sana, kufungia 0.
Na katika kesi hii, sisi kutokea kwa kuishia na namba hasi.
>> Hivyo hii ni tatizo.
Na zinageuka kuwa hii Tatizo siyo arcane kwamba wote.
Japokuwa nimekuwa makusudi ikiwa ni pamoja na makosa hayo,
ni zamu nje tunaona aina ya yote inayotuzunguka, au angalau baadhi yetu kufanya.
>> Hivyo katika Lego Star Wars, kama umefanya milele kucheza mchezo,
ni zamu nje unaweza kwenda karibu kuvunja vitu juu katika LEGO dunia,
na kukusanya sarafu, kimsingi.
Na kama wameweza milele kucheza mchezo huu njia muda sana,
kama mtu binafsi hii unnamed hapa alivyofanya, idadi ya jumla
ya sarafu kwamba unaweza kukusanya ni, inaweza kuonekana, bilioni 4.
>> Sasa, pamoja na ni kweli mviringo.
Hivyo LEGO alikuwa anajaribu kuweka mambo user kirafiki.
Wao hawakuwa kufanya hivyo hasa 2 kwa 32 nguvu, per wiki iliyopita.
Lakini bilioni 4 ni sababu.
Inaonekana, kulingana na habari hii, kwamba LEGO, na kampuni hiyo
alifanya programu hii halisi, aliamua kwamba upeo wa idadi ya sarafu
user unaweza kukusanya ni kweli, bilioni 4,
kwa sababu waliowachagua katika kanuni zao kutumia si muda mrefu kwa muda mrefu, inaonekana,
lakini tu integer, unsigned integer, tu integer chanya, ambaye
max thamani ya kitu takribani hiyo.
Naam, hapa ni mwingine mmoja funny.
Hivyo katika mchezo Civilization, ambayo baadhi yenu wanaweza kuwa na mazoea, na
zinageuka kuwa miaka iliyopita kulikuwa Ilikuwa mdudu katika mchezo huu ambapo
kama wewe jukumu ya Gandhi katika mchezo,
badala ya yeye kuwa pacifist sana, badala alikuwa incredibly, incredibly
fujo, katika hali fulani.
Hasa, kwa njia hiyo Civilization kazi ni kwamba kama wewe, mchezaji,
kupitisha demokrasia, yako alama uchokozi anapata
decremented wawili, kwa hiyo minus bala, na kisha minus minus.
>> Hivyo wewe Ondoa 2 kutoka halisi iterating yako.
Kwa bahati mbaya, kama iterating yako ni awali 1, na wewe Ondoa 2 kutoka humo
baada ya kupitisha demokrasia kama Gandhi hapa wapate
wamefanya, kwa sababu alikuwa passive-- sana 1 juu ya ukubwa wa uchokozi.
Lakini kama yeye antar demokrasia, basi aendako kutoka 1 kwa hasi 1.
>> Kwa bahati mbaya, walikuwa kutumia namba unsigned,
ambayo ina maana wao kutibiwa hata hasi idadi kana kwamba yalikuwa mazuri.
Na zinageuka kuwa chanya sawa na hasi 1,
katika mipango ya kawaida ya kompyuta, ni 255.
Hivyo kama Gandhi antar demokrasia, na kwa hiyo ina
uchokozi wake alama ilipungua, ni kweli Rolls kote kwa 255
na hufanya yake zaidi tabia ya fujo katika mchezo.
Hivyo unaweza Google juu ya hili.
Na ilikuwa, kwa kweli, ajali programu mdudu,
lakini hiyo ni aliingia kabisa lore tangu wakati huo.
>> Hayo ni yote na furaha na cute.
Zaidi ya kutisha ni wakati halisi vifaa ulimwengu wa kweli, na si michezo,
kuwa na mende hayo.
Kwa kweli, tu mwaka mmoja uliopita makala alikuja nje kuhusu Boeing 787 Dreamliner.
>> Na makala mwanzoni mtazamo wasomaji arcane kidogo.
Lakini kusema hayo, programu mazingira magumu katika Boeing
mpya 787 Dreamliner ndege ina uwezo wa kusababisha marubani
kupoteza udhibiti wa ndege, pengine
katika katikati ya ndege, maafisa FAA alionya mashirika ya ndege hivi karibuni.
Ilikuwa ni uamuzi kwamba mtindo 787
ndege ambayo imekuwa powered siku kuendelea kwa 248
unaweza kupoteza wote alternating sasa, AC, nguvu za umeme kutokana na jenereta
vitengo vya kudhibiti, GCUs, wakati huo huo kwenda katika kushindwa hali ya salama.
Ni aina ya kupoteza yangu.
Lakini memo alisema, OK, sasa mimi got kwamba, hali ilisababishwa na programu
kukabiliana ndani ya kudhibiti jenereta
vitengo kwamba ufurikishe baada siku 248 ya nguvu ya kuendelea.
Sisi ni kutoa hii taarifa ili kuzuia hasara
ya yote AC umeme nguvu, ambayo inaweza kusababisha
hasara ya udhibiti wa ndege.
>> Hivyo, literally, kuna baadhi ya integer, au baadhi sawa data aina,
kuwa kutumika katika programu katika ndege halisi
kwamba kama wewe kuweka ndege yako juu ya muda wa kutosha, ambayo inaonekana
inaweza kuwa kesi kama wewe ni mbio tu yao mara kwa mara na kamwe unplugging
ndege yako, inaonekana, au kuruhusu betri wake kufa,
hatimaye kuhesabu juu, na juu, na juu, na juu, na juu, na up.
>> Na, kwa asili, a kiasi kidogo cha kumbukumbu
ufurikishe, akalivingirisha kwa zero au baadhi thamani hasi,
athari upande wa ambayo ni ukweli frighteningly halisi
kwamba ndege ili haja kuwa rebooted, kwa ufanisi,
au inaweza kuanguka, mbaya, kama inzi.
Basi hizi aina ya masuala bado na sisi,
even-- hii ilikuwa makala 2015, wote zaidi ya kutisha
wakati wa kufanya si lazima kuelewa, kuthamini, au wanatarajia
aina wale wa makosa.
>> Hivyo ni zamu nje kuna mtu mwingine jambo baya kuhusu data uwakilishi.
Ni zinageuka kuwa hata ikifungwa ni aina ya kiujanja, kwa sababu ikifungwa, pia,
Mimi mapendekezo ni 32 bits, au labda 64 kama wewe kutumia mara mbili.
Lakini hiyo ni bado zina mwisho.
>> Na samaki ni kwamba kama unaweza kuweka idadi ya usio wa idadi
baada ya uhakika decimal, hakuna njia wewe
wanaweza kuwakilisha iwezekanavyo zote idadi ambayo tulikuwa kufundishwa
katika daraja shule inaweza kuwepo katika dunia.
kompyuta, kimsingi, ana kuchagua subset ya idadi ya wale
kuiwakilisha kwa usahihi.
>> Sasa, kompyuta Unaweza pande zote labda kidogo kidogo,
na inaweza kuruhusu takribani duka idadi yoyote unaweza uwezekano unataka.
Lakini tu intuitively, kama wewe kuwa finite idadi ya bits,
unaweza tu permute yao kwa njia nyingi zina mwisho.
Hivyo unaweza si uwezekano kutumia idadi finite
ya permutation ya bits, chati ya zeros na ndio,
kuiwakilisha usio idadi ya namba,
ambayo inaonyesha kwamba kompyuta nguvu vizuri sana kuwa uongo kwetu wakati mwingine.
>> Kwa kweli, hebu kufanya hili.
Hebu kwenda nyuma katika CS50 IDE.
Hebu kwenda mbele na kujenga mpango kidogo
aitwaye kutokuwa sahihi, ili kuonyesha kwamba kompyuta ni kweli, imprecise.
>> Na napenda kwenda mbele na kuanza na baadhi ya kificho kwamba mbele,
na sasa tu kufanya yafuatayo.
Hebu kwenda mbele na kufanya printf, asilimia f, backslash n, 1 kugawanywa na 10.
Kwa maneno mengine, hebu tuzame katika zaidi kwa 1/10, kama 1 na kugawanywa na 10.
Hakika, kompyuta inaweza kuwakilisha 1/10.
>> Basi hebu kwenda mbele na kufanya kutokuwa sahihi.
Hebu tuone.
Format bayana aina mbili.
Lakini hoja ina aina int.
Ni nini kinaendelea?
>> Oh, kuvutia, hivyo ni somo la kujifunza kutoka kabla.
Mimi kusema, hey, kompyuta show me kuelea na asilimia f.
Lakini mimi nina kutoa ni 2 ints.
Hivyo ni zamu nje, siwezi kurekebisha hii katika michache ya njia.
>> Mimi nilikuwa tu kugeuka moja katika 1.0, na 10 katika 10.0, ambayo ingekuwa, kwa hakika,
kuwa na athari ya kuwabadili yao katika floats-- bado hopefully
idadi sawa.
Au ni zamu huko nje ni kitu tutaweza kuona tena kabla ya muda mrefu.
Unaweza kutupwa idadi.
>> Unaweza, kwa kutumia mabano huu kujieleza, unaweza kusema,
hey, kompyuta, kuchukua hii 10, ambayo najua ni int.
Lakini kutibu hayo, tafadhali, kana kwamba ni kuelea.
Lakini hii anahisi usiokuwa tata.
>> Kwa madhumuni yetu leo, hebu tu literally
kufanya nao yaliyo maadili uhakika na uhakika decimal, kama hii.
Hebu kwenda mbele na rerun, kufanya kutokuwa sahihi, nzuri, dot kufyeka
imprecision, kuingia.
OK, sisi ni kuangalia nzuri.
>> 1 kugawanywa na 10, kwa mujibu wa yangu Mac hapa, ni kweli, 0.100000.
Sasa, nilikuwa kufundishwa katika shule ya daraja huko lazima idadi ya usio wa 0 ya.
Basi hebu angalau kujaribu kuona baadhi ya wale.
Ni zinageuka kuwa printf ni kidogo bado fancier kuliko tumekuwa kutumia.
Ni zinageuka huna bayana asilimia f, au asilimia tu i.
Unaweza kweli bayana baadhi ya chaguzi kudhibiti hapa.
>> Hasa, mimi nina kwenda kusema, hey, printf,
kweli kuonyesha me 10 pointi decimal.
Hivyo inaonekana weird kidogo.
Lakini unasema asilimia, dot, idadi ngapi
unataka kuona baada uhakika decimal, na kisha f
kwa ajili ya gorofa, tu kwa sababu hiyo ni nini nyaraka anasema.
Hebu kwenda mbele na kuokoa hiyo.
>> Na taarifa mno, mimi nina kupata uchovu wa retyping mambo.
Hivyo mimi nina kuweka tu juu na chini arrow funguo yangu hapa.
Na kama mimi kuendelea kupiga up, wewe unaweza kuona yote ya amri
kwamba mimi alifanya, au kimakosa alifanya.
>> Na mimi nina kwenda mbele sasa na si kweli kutumia kwamba, inaonekana.
Kufanya imprecision, dot kufyeka imprecision-- hivyo
nini nilikuwa kufundishwa katika daraja shule hundi nje.
Hata kama mimi magazeti hayo kwa 10 decimal sehemu yake, kwa kweli, ni 0.10000.
Lakini unajua nini?
>> Hebu kupata kidogo tamaa.
Hebu kusema, kama, nionyeshe 55 inaelekeza baada ya decimal.
Hebu kweli kuchukua hii mpango nje kwa ajili ya spin.
Napenda remake na kufanya imprecision, dot kufyeka, kutokuwa sahihi.
>> Na hapa sisi kwenda.
utoto wako ilikuwa ni uongo.
Inavyoonekana, 1 kugawanywa na 10 ni kweli 0.100000000000000005551115123--
>> Ni nini kinachoendelea?
Naam, ni zamu nje, kama wewe aina ya kuangalia mbali kutosha nje katika msingi
uwakilishi wa hii idadi, ni kweli
si hasa 1/10, au 0.1 na usio idadi ya zeros.
Sasa, kwa nini ni kwamba?
>> Naam, hata ingawa hii ni rahisi idadi ya sisi wanadamu, 1 kugawanywa na 10,
bado ni moja ya kubwa wengi idadi ambayo sisi inaweza kufikiria juu.
Lakini kompyuta inaweza tu kuwakilisha finitely wengi hivyo idadi.
Na hivyo, kwa ufanisi, nini kompyuta ni kuonyesha sisi ni karibu wake
makadirio ya idadi tunataka kuamini ni 1/10,
au kweli 0.10000 hauna mwisho.
>> Badala yake, ingawa, hii ni karibu kama wanaweza kupata.
Na kwa kweli, kama ukiangalia chini ya Hood,
kama sisi ni hapa kwa kuangalia 55 tatu baada decimal,
sisi kweli kuona kwamba hali halisi.
Sasa kama kando, kama wameweza milele kuonekana movie--
wengi pengine have not lakini Superman 3 baadhi ya miaka iliyopita,
Richard Pryor kimsingi leveraged hii ukweli katika kampuni yake ya kuiba kura
ya namba sehemu na namba sehemu ya pennies, kwa sababu company-- kama mimi kukumbuka,
imekuwa ni while-- alikuwa kimsingi kutupa mbali chochote ambacho hakuwa fit
katika dhana ya senti.
>> Lakini kama wewe kuongeza hadi haya yote vidogo, vidogo, idadi vidogo tena,
na tena, na tena, unaweza, kama katika kesi yake, kufanya kiasi nzuri ya fedha.
>> Hiyo wazo moja alikuwa ripped off kwa zaidi ya hivi karibuni, lakini bado sasa wakubwa
movie, iitwayo Ofisi Space, ambapo guys katika movie kwamba,
akafanya vivyo hivyo, Star it up kabisa, kuishia na njia sana
fedha katika akaunti zao za benki.
Ni mara zote tuhuma sana.
Lakini mwisho wa siku, imprecision ni karibu nasi.
>> Na kwamba, pia, wanaweza kuwa frighteningly kesi.
Ni zinageuka kuwa Superman 3 na Ofisi Space kando, kuna
inaweza kuwa baadhi halisi sana ramifications dunia
ya hali halisi ya imprecise uwakilishi wa data
kwamba hata sisi binadamu kwa leo si lazima
kuelewa kama vile inavyopaswa, au kukumbuka kama mara nyingi kama inavyopaswa.
Na kwa kweli, kipande cha ifuatayo ni kutoka kuangalia dunia baadhi sana halisi
ramifications ya kile kinachotokea kama wewe hawana kufahamu kutokuwa sahihi kwamba
yanaweza kutokea katika idadi ya uwakilishi.
>> [VIDEO avspelning]
>> -Computers, Tumekuwa wote wamekuja kukubali matatizo mara nyingi frustrating kwamba
kwenda na mende them--, virusi, na programu glitches,
kwa bei ndogo ya kulipa kwa urahisi.
Lakini katika tech ya juu na mwendo wa kasi kijeshi na mpango nafasi maombi,
tatizo ndogo Unaweza kuwa kujitukuza katika janga.
>> Tarehe 4 Juni, 1996, wanasayansi tayari kuzindua unmanned Ariane 5 roketi.
Ni alikuwa amebeba kisayansi satelaiti iliyoundwa
kujua kwa usahihi jinsi dunia magnetic interacts shamba
na upepo nishati ya jua.
roketi ilijengwa kwa European Space Agency,
na lile mbali kutoka kituo yake katika pwani ya Kifaransa.
>> -Katika Kuhusu 37 sekunde katika ndege, kwanza
niliona kitu kinachoendelea vibaya.
nozzles walikuwa swiveling katika njia ya wao kweli hawapaswi.
Karibu sekunde 40 ndani ya ndege, wazi, gari ilikuwa kwenye matatizo.
>> Na kwamba wakati wao alifanya uamuzi wa kuiharibu.
mbalimbali afisa usalama, na guts kubwa, taabu kifungo,
akapiga juu ya roketi, kabla naweza kuwa hatari kwa usalama wa umma.
>> -Hii Alikuwa ni mwanamwali safari ya Ariane 5.
Na uharibifu wake alichukua mahali kwa sababu ya flaw
iliyoingia katika programu roketi.
-The Tatizo juu ya Ariane ilikuwa kuwa kulikuwa na idadi hiyo
required 64 bits kueleza.
Na walitaka kubadilisha kwa idadi 16-bit.
Wao kudhani kuwa idadi ilikuwa kamwe kwenda
kuwa kubwa sana, kwamba wengi wa wale tarakimu katika idadi 64-bit walikuwa zeroes.
Walikosea.
>> -The Kutokuwa na uwezo wa moja mpango wa programu kukubali
aina ya idadi yanayotokana na mwingine alikuwa katika mizizi ya kushindwa.
Programu ya maendeleo imekuwa sehemu ya gharama kubwa sana ya teknolojia mpya.
roketi Ariane wamekuwa sana mafanikio, hivyo mengi ya programu
kuundwa kwa ilivyokuwa pia kutumika katika Ariane 5.
>> -The Tatizo la msingi ilikuwa kwamba Ariane 5 mara kwa kasi, kuharakisha kasi zaidi.
Na programu na si waliendelea kwa ajili hiyo.
>> -The Uharibifu wa roketi ilikuwa kubwa maafa ya kifedha,
wote kutokana na hitilafu dakika programu.
Lakini hii haikuwa kwanza matatizo wakati data kubadilika
alikuwa wanakumbana kisasa roketi teknolojia.
>> -Katika 1991, na kuanza ya kwanza Vita ya Ghuba,
Patriot kombora uzoefu aina sawa
cha tatizo idadi kubadilika.
Na matokeo yake, 28 watu, askari 28 wa Marekani,
waliuawa, na kuhusu 100 wengine kujeruhiwa,
wakati Patriot, ambayo ilitakiwa kulinda dhidi ya Scuds zinazoingia,
alishindwa kwa moto kombora.
>> -Wakati Iraq walivamia Kuwait, na Amerika ilizindua Desert Storm katika mapema 1991,
betri Patriot kombora walikuwa uliotumika kulinda Saudi Arabia na Israel
kutoka Iraq Scud mashambulizi kombora.
Patriot ni Marekani kati-mbalimbali uso kwa hewa mfumo, viwandani
na kampuni Raytheon.
>> -The Ukubwa wa interceptor Patriot yenyewe ni kuhusu takribani 20 miguu kwa muda mrefu.
Na ni kizito kuhusu £ 2000..
Na hubeba warhead ya juu, Nadhani ni takribani £ 150..
Na warhead yenyewe ni kulipuka, ambayo
ina vipande kuzunguka.
casing ya warhead ni iliyoundwa na kutenda kama buckshot.
>> makombora -The ni uliofanywa nne kwa chombo,
na ni kusafirishwa kwa Trailer nusu.
>> -The Mfumo Patriot kupambana na kombora inakwenda nyuma angalau miaka 20 sasa.
Ni awali ilikuwa iliyoundwa kama hewa ulinzi kombora
kwa risasi chini ndege ya adui.
Katika kwanza Vita ya Ghuba, wakati vita kwamba alikuja pamoja,
Jeshi alitaka kuitumia risasi chini Scuds, si ndege.
>> Iraq Jeshi la Anga alikuwa si sana ya tatizo.
Lakini Jeshi alikuwa na wasiwasi kuhusu Scuds.
Na hivyo walijaribu kuboresha Patriot.
>> -Intercepting adui kombora kusafiri saa mach 5
alikuwa anaenda kuwa changamoto ya kutosha.
Lakini wakati Patriot alikimbizwa katika huduma,
Jeshi hakuwa na ufahamu wa Iraq muundo kwamba alifanya
Scuds yao karibu haiwezekani hit.
>> -Nini Kilichotokea ni Scuds kwamba walikuwa kuja katika walikuwa imara.
Walikuwa tikisika.
Sababu ya hayo ni Raia wa Iraq, ili
kupata 600 kilomita nje ya kilomita 300
mbalimbali kombora, alichukua uzito nje ya warhead mbele.
Walitoa warhead nyepesi.
>> Hivyo sasa Patriot ni kujaribu kuja katika Scud.
Na zaidi ya muda, balaa wengi wa wakati,
ingekuwa tu kuruka kwa Scud.
Mara baada ya mfumo wa Patriot waendeshaji barabara Patriot amekosa lengo lake,
wao detonated warhead Patriot ya ili kuepuka majeruhi iwezekanavyo ikiwa ni
aliruhusiwa kuanguka chini.
>> -Kwamba Alikuwa nini watu wengi aliona, wale fireballs kubwa katika anga,
na kutoeleweka kama intercepts ya warheads Scud.
>> -ingawa Katika usiku anga, Patriots alionekana
kuwa mafanikio kuharibu Scuds, saa Dhahran,
kuna inaweza kuwa hakuna kosa kuhusu utendaji wake.
Huko, mfumo wa rada Patriot ya waliopotea wimbo wa Scud zinazoingia,
na kamwe ilizindua kutokana kwa programu flaw.
Ilikuwa Israel ambao kwanza aligundua kwamba tena mfumo ilikuwa juu,
zaidi wakati tofauti akawa, kutokana na saa iliyoingia
katika mfumo wa kompyuta ya.
>> -About Wiki mbili kabla ya janga katika Dhahran,
Israel kuripotiwa kwa Wizara ya ulinzi
kwamba mfumo alikuwa kupoteza muda.
Baada ya masaa nane au kukimbia, waligundua kuwa mfumo
ilikuwa kuwa noticeably chini sahihi.
Idara ya Ulinzi alijibu kwa kuwaambia yote ya betri Patriot
na si kuondoka mifumo juu ya kwa muda mrefu.
Wao kamwe alisema nini muda mrefu was-- masaa nane, masaa 10, masaa 1,000.
Hakuna anayejua.
>> -The Betri Patriot stationed katika kambi ya
katika Dhahran na kiujanja yake ya ndani saa alikuwa juu zaidi ya masaa 100
juu ya usiku wa Februari 25..
>> -Ni Na msisimko wakati wa usahihi ya juu kumi ya pili.
Sasa, kumi ya pili ni namba ya kuvutia,
kwa sababu haiwezi kuwa walionyesha katika binary hasa, ambayo
ina maana haiwezi kuwa walionyesha hasa katika yoyote kisasa ya digital kompyuta.
Ni vigumu kuamini.
>> Lakini kutumia hii kama mfano.
Hebu kuchukua namba moja ya tatu.
theluthi moja hawezi kuwa walionyesha katika decimal hasa.
Moja ya tatu ni 0.333 ikiendelea kwa infinity.
>> Hakuna njia ya kufanya hivyo na usahihi kabisa katika decimal.
Hiyo hasa aina ya tatizo yaliyotokea katika Patriot.
tena mfumo mbio, mbaya kosa wakati akawa.
>> -Baada Masaa 100 ya operesheni, makosa katika wakati ilikuwa tu theluthi moja
ya pili.
Lakini katika suala la kulenga kombora kusafiri saa mach 5,
ni matokeo ya kufuatilia makosa ya zaidi ya 600 mita.
Itakuwa kosa mbaya kwa askari juu ya nini
kilichotokea ni Scud uzinduzi alikuwa wanaona na mapema Onyo satelaiti
na walijua kuwa Scud alikuwa kuja katika uongozi wao kwa ujumla.
Hawakujua ambako alikuwa anakuja.
>> -Ni Ilikuwa sasa hadi rada sehemu ya mfumo Patriot
kutetea Dhahran na Machapisho na kuweka wimbo wa zinazoingia kombora adui.
>> -The Rada alikuwa smart sana.
Ingekuwa kweli kufuatilia nafasi ya Scud,
na kisha kutabiri ambapo pengine itakuwa wakati ujao rada alimtuma
a mapigo nje.
Aliyeitwa lango mbalimbali.
>> -Then, Mara moja Patriot anaamua muda wa kutosha ina
kupita kwenda nyuma na kuangalia ijayo eneo kwa ajili ya kitu hicho wanaona,
unaendelea nyuma.
Hivyo wakati akarudi vibaya mahali, basi anaona hakuna kitu.
Na anaamua kwamba kulikuwa hakuna kitu, ilikuwa kugundua uongo,
na matone kufuatilia.
>> -The Scud zinazoingia kutoweka kutoka screen rada.
Na sekunde baadaye, slammed ndani ya ngome.
Scud kuuawa 28, na mara ya mwisho moja fired wakati kwanza Vita vya Ghuba.
>> Kusikitisha, programu updated aliwasili katika Dhahran siku iliyofuata.
programu flaw alikuwa wamekuwa fasta, kufunga
sura ya kwanza katika wasiwasi historia ya kombora Patriot.
>> [VIDEO avspelning]
DAVID J. Malan: Hivyo hii yote ni kwa kusema kwamba masuala haya ya kufurika
na kutokuwa sahihi wote ni kweli pia.
Hivyo ni jinsi gani sisi kupata hapa?
Sisi ilianza na tu kuzungumza juu ya printf.
Tena, kazi hii kwamba Prints kitu screen,
na sisi ilianzisha baada ya hapo chache kazi nyingine
kutoka kinachojulikana maktaba CS50.
Na tutaweza kuendelea kuona haya kwa wakati wake.
Na sisi, hasa, kutumika kupata kamba, na kupata int, na sasa pia kupata kuelea,
na bado wengine bado sisi kukutana na kutumia wenyewe kabla ya muda mrefu.
>> Lakini katika tukio, na sisi tayari kuona haja
kuhifadhi kile kazi hizo upande nyuma?
Wao mkono sisi nyuma kamba, au int, au kuelea.
Na wakati mwingine tunahitaji kuweka kwamba kamba, au int, au kuelea, mahali fulani.
>> Na kuhifadhi mambo hayo, tunakumbuka tu kama katika Scratch, tuna vigezo.
Lakini tofauti na katika Scratch, katika C tuna aina halisi
ya data variables-- aina, generally-- zaidi
kati yao, kamba, int, a kuelea, na hawa wengine bado.
>> Na hivyo wakati sisi kutangaza vigezo katika C, tutaweza kutangaza aina yetu data.
Hii si kitu tutaweza una kufanya baadaye katika muhula
kama sisi mpito kwa lugha nyingine.
Lakini kwa sasa, hatuna haja kwa priori mapema,
kuelezea kwa kompyuta ni aina gani ya kutofautiana tunataka kwa kutupa.
>> Sasa, wakati huo huo, na magazeti aina wale wa aina ya data,
tuna kuwaambia printf nini cha kutarajia.
Na tuliona asilimia s kwa masharti, na asilimia i kwa integers,
na wengine wachache tayari.
Na wale ni tu mahitaji kwa ajili ya kuwasilisha Visual
wa habari kwamba.
>> Na kila moja ya haya kweli anaweza parametrized au tweaked kwa namna fulani,
kama unataka zaidi udhibiti aina ya pato kwamba kupata.
Na, kwa kweli, ni zamu nje kwamba sio tu ni pale backslash n kwa mstari mpya.
Kuna kitu kingine aitwaye backslash r kwa kurudi carriage, ambayo
ni sawa na zaidi typewriter umri wa shule,
na pia Windows kutumika kwa miaka mingi.
>> Kuna backslash t kwa tabo.
Zamu nje, kwamba kama unataka mara mbili quote ndani ya kamba,
kukumbuka kwamba tumekuwa kutumika mara mbili quote mara mbili
quote juu ya kushoto na kulia kuishia ya masharti yetu hivi sasa.
Ambayo wanaonekana kuwachanganya mambo.
>> Kama unataka kuweka quote mara mbili katika katikati ya kamba na kwa kweli,
ni utata kuona.
Na hivyo una kutoroka, hivyo kusema, kunukuu mara mbili na kitu
kama, literally, backslash mara mbili quote.
Na kuna wengine wachache bado.
Na tutaweza kuona zaidi ya wale katika matumizi halisi kabla ya muda mrefu.
>> Basi hebu sasa mpito kutoka data, na uwakilishi,
na watoa huduma hesabu, kila ya aliyetupa baadhi ya kujenga
vitalu na ambayo kwa kucheza.
Lakini sasa hebu kweli kutoa sisi wengine wa msamiati
kwamba sisi tayari alikuwa wiki iliyopita na Scratch
kwa kuangalia baadhi ya wengine constructs katika C-- si wote.
Lakini mawazo tuko juu ya kuona kweli tu
kusisitiza tafsiri kutoka lugha moja, Scratch, na mwingine, C.
>> Na baada ya muda, tutaweza kuchukua zana zaidi kwa toolkit yetu,
hivyo kusema, syntactically.
Na, kwa hakika, utaona kwamba mawazo sasa badala ukoo kutoka wiki iliyopita.
Basi hebu kufanya hili.
>> Hebu kwenda mbele na mjeledi juu ya mpango kwamba kweli anatumia baadhi maneno,
Kujieleza Boolean.
Hebu kwenda mbele hapa na kuunda faili mpya.
Mimi nitakuita condition.c hii.
>> Hebu kwenda mbele na pamoja na maktaba CS50.
Na napenda kwenda mbele na ni pamoja na kiwango io.h kwa ajili ya kazi yetu,
na printf, na zaidi kwa mtiririko huo.
Nikupe mwenyewe kwamba boilerplate ya int kuu utupu, ambaye maelezo tutaweza
kurudi katika siku zijazo.
>> Sasa basi mimi kwenda mbele na kutoa mwenyewe int kupitia kupata int.
Kisha basi mimi kwenda mbele na kufanya hili.
Nataka kusema kama i ni less-- hebu kutofautisha kati ya chanya, hasi,
au zero maadili.
>> Hivyo kama i ni chini ya sifuri, napenda tu na mpango huu tu kusema,
hasi, backslash n, mwingine kama i ni kubwa kuliko sufuri.
Sasa mimi nina, bila shaka, kwenda kusema printf chanya, backslash n.
Na kisha mwingine if-- mimi naweza kufanya hili.
>> Mimi naweza kufanya kama i sawa 0.
Lakini Ningependa kuwa maamuzi katika angalau moja makosa tayari.
Kumbuka kwamba ishara sawa ni si sawa, kama sisi binadamu kujua.
>> Lakini ni operator zoezi.
Na hatutaki kuchukua 0 juu ya haki na kuiweka katika i upande wa kushoto.
Hivyo ili kuepuka malumbano haya, au labda matumizi mabaya ya alama ya usawa,
binadamu aliamua baadhi ya miaka iliyopita kwamba katika lugha nyingi programu
wakati unataka kuangalia usawa wa kati ya kushoto na kulia,
wewe kweli kutumia sawa sawa.
Hivyo kugonga alama ya usawa mara mbili.
Wakati unataka hawawajui kutoka kulia kwa upande wa kushoto, unaweza kutumia moja sawa ishara.
Hivyo tunaweza kufanya Haya kingine kama i ni sawa sawa na sifuri.
>> Mimi naweza kisha kwenda na kufungua braces yangu curly,
na kusema, printf 0, backslash n, kufanyika.
Lakini kumbuka jinsi haya forks katika barabara hawezi kufanya kazi.
Na, kwa kweli, tu kufikiri kuhusu mantiki.
i ni idadi.
Ni integer, hasa.
Na hiyo ina maana itakuja kuwa chini kuliko 0, au mkubwa kuliko 0, au 0.
Kwa hiyo, kuna aina ya hii an alisema default kesi.
>> Na hivyo tunaweza, kama tu Scratch, kujitenga na mwingine kama,
na kusema tu mwingine.
Kimantiki, kama wewe programu kujua kuna tu
ndoo tatu ndani ambayo a scenario unaweza fall-- kwanza,
pili, au ya tatu katika hii case-- hawana
kujisumbua na kuongeza usahihi wa ziada na mantiki ya ziada huko.
Tu kwenda mbele na default kesi hapa ya mwingine.
>> Sasa, hebu kwenda mbele baada ya kuokoa hii, kufanya
hali dot kufyeka conditions-- si kubwa user interface,
kwa sababu mimi si hivyo kusababisha user, kama nilivyoeleza awali.
Lakini hiyo ni faini.
Tutaweza kushika ni rahisi.
Hebu jaribu namba 42.
Na kwamba ni chanya.
Hebu jaribu idadi hasi 42, hasi.
>> Hebu jaribu thamani 0.
Na, kwa hakika, ni kazi.
Sasa, utaona na matatizo kabla muda mrefu, kupima mambo mara tatu,
pengine si ya kutosha.
Pengine wanataka mtihani baadhi idadi kubwa, baadhi ndogo
idadi, baadhi ya kesi kona, kama tutaweza kuja kuelezea yao.
>> Lakini kwa sasa, hii ni pretty rahisi mpango.
Na mimi nina uhakika pretty, mantiki, kuwa ni unaingia kesi tatu.
Na, kwa hakika, hata kama sisi tu ililenga downsides uwezo
ya kutokuwa sahihi na kufurika, katika ukweli ambapo matatizo mengi CS50,
sisi si kwenda kuwa na wasiwasi kuhusu, wakati wote,
wale masuala ya kufurika na kutokuwa sahihi, kwa sababu, kwa kweli, katika C,
ni kweli si wote kwamba rahisi kuepuka mambo hayo.
Kama unataka kuhesabu hadi kubwa zaidi, na kubwa zaidi, na kubwa zaidi,
ni zamu nje kuna mbinu wewe Unaweza kutumia, mara nyingi kuwashirikisha mambo kuitwa
maktaba, makusanyo ya kificho, kwamba watu wengine aliandika kwamba unaweza kutumia,
na lugha nyingine kama Java na wengine, kwa kweli
kufanya ni rahisi sana kuhesabu hata ya juu.
Hivyo ni kweli ni baadhi ya hatari hizi kazi ya lugha unayotumia.
Na katika wiki ijayo, tutaweza kuona jinsi ya hatari C kweli
inaweza kuwa kama huna kutumia vizuri.
Lakini kutoka huko, na kwa Python, na JavaScript, itakuwa
sisi safu juu ya baadhi ulinzi wa ziada, na kukimbia wachache wa hatari hizo.
>> Basi hebu kufanya kidogo zaidi kuvutia mantiki katika programu yetu.
Hivyo basi mimi kwenda mbele na kujenga programu inayoitwa Logical
tu hivyo siwezi kucheza na baadhi halisi mantiki, logical.c.
Mimi itabidi nakala tu na kuweka baadhi kanuni kutoka mapema hivyo mimi kupata nyuma
kwa kianzio huu mzuri.
>> Napenda wakati huu kufanya char C. mimi nina kwenda kuwapa jina la C
tu kwa sababu ni ya kawaida, kupata tabia kutoka kwa mtumiaji.
Na hebu kujifanya kama Mimi nina kutekeleza sehemu
wa mpango huo Rm, kuondoa mpango kabla kwamba ilisababisha user
kuondoa faili.
Inakuwaje sisi kufanya hili?
>> Nataka kusema, kama C ni sawa na sawa, quote unquote,
y, basi mimi nina kwenda kudhani kwamba mtumiaji amechagua ndiyo.
Mimi tu kwenda magazeti ndiyo.
Kama walikuwa kweli kuandika kuondolewa mpango,
tunaweza kuondoa faili na mistari zaidi ya kificho.
Lakini tutaweza kushika ni rahisi.
>> Mwingine kama c ni sawa sawa na n-- na sasa hapa, mimi nina kwenda kusema,
user lazima kuwa na maana yoyote.
Na kisha mwingine, unajua nini?
Sijui kile kingine user ni kwenda aina.
Hivyo mimi nina kwenda tu kusema kwamba kwamba ni makosa, chochote
yeye au yeye kweli typed.
>> Hivyo nini kinaendelea hapa?
Kuna tofauti ya kimsingi dhidi ya kile nimepata kufanyika katika siku za nyuma.
Double quotes, quotes mbili, mbili quotes, na, bado, single quotes,
single quotes.
Ni zinageuka katika C, kwamba wakati unataka kuandika kamba,
huna kutumia quotes mbili, kama vile tumekuwa wamekuwa wakitumia muda wote huu na printf.
>> Lakini kama unataka kukabiliana na tu tabia moja, kinachojulikana Char,
basi wewe kweli kutumia quotes moja.
Wale wa wewe ambao wameweza iliyowekwa kabla, unaweza kuwa
alikuwa na wasiwasi kuhusu hili Tofauti katika lugha fulani.
Katika C, haina jambo.
Na hivyo wakati mimi kupata char na mimi nataka kulinganisha kwamba char kutumia sawa
sawa na baadhi barua kama y au n, mimi kufanya, kwa kweli, haja ya kuwa na quotes moja.
>> Sasa, hebu kwenda mbele na kufanya hili.
Hebu kwenda mbele na kufanya kufanya dot mantiki kufyeka mantiki.
Na sasa mimi nina kuwa ilisababisha.
Hivyo, labda, bora user uzoefu ingekuwa kweli kuniambia nini cha kufanya hapa.
Lakini mimi nina kwenda kwa tu upofu kusema y kwa ndiyo, OK, nzuri.
>> Hebu kukimbia tena, n kwa no, nzuri.
Tuseme kama watu fulani Mimi najua, kofia yangu kufuli muhimu ni juu ya yote mara nyingi mno.
Hivyo mimi kufanya mji mkuu Y, kuingia, kosa.
OK, siyo hasa nini mimi kutarajia.
Hakika, kompyuta anafanya literally nini
Mimi aliiambia yake do-- kuangalia kwa lowercase y na ndogo n.
Hii haina kujisikia kama nzuri user uzoefu, ingawa.
Napenda kuuliza kwa na kukubali ama chini kesi au kesi ya juu.
Hivyo ni zamu nje, unaweza kutaka kusema kitu kama katika Scratch,
kama literally au C ni sawa na sawa na mji mkuu single alinukuliwa y.
Zamu nje, C hana keyword hii halisi au.
>> Lakini ni gani baa mbili wima.
Una kushikilia Shift kawaida, kama wewe ni kutumia keyboard Marekani,
na kugonga bar wima ufunguo juu ya kurudi ufunguo wako.
Lakini bar hii wima wima bar ina maana au.
>> Kama, kwa kulinganisha, tulitaka kusema na, kama katika Scratch,
tunaweza kufanya Ampersand Ampersand.
Hiyo haina mantiki mantiki hapa, kwa sababu binadamu hawakuweza uwezekano
kuwa typed wote wawili y na ndogo y na mji mkuu Y kama tabia hiyo.
Hivyo au ni nini tunakusudia hapa.
>> Hivyo kama mimi kufanya hivyo katika maeneo yote, au c sawa na sawa na mtaji N, sasa rerun,
kufanya mantiki, rerun mantiki.
Sasa, siwezi aina y.
Na siwezi kufanya hivyo tena na mji mkuu Y, au mji mkuu N.
Na mimi naweza kuongeza katika ziada mchanganyiko bado.
>> Hivyo hii ni mantiki mpango kadiri sasa
Mimi nina kuangalia mantiki kwa thamani huu au thamani hii.
Na mimi si kuwa na, lazima, kuja na ikiwa wawili zaidi au mwingine ikiwa.
Mimi kweli anaweza kuchanganya baadhi ya kuhusiana na mantiki pamoja kwa njia hii.
Hivyo hii itakuwa bora iliyoundwa kuliko tu
akisema, ikiwa C ni sawa na chini kesi y, magazeti ndiyo, mwingine kama c ni sawa na mji mkuu Y,
magazeti ndiyo, mwingine kama c ni sawa na lower-- kwa maneno mengine,
huna kuwa na zaidi na zaidi matawi.
Unaweza kuchanganya baadhi ya sawa matawi mantiki, kama kwa njia hii.
>> Basi hebu tuangalie moja tu mwisho kingo, moja ya mwisho kujenga,
kwamba C inaruhusu.
Na tutaweza kurudi katika baadaye kwa wengine bado.
Na kisha tutaweza kuhitimisha kwa kuangalia katika si usahihi wa code--
kupata kanuni kwa work-- lakini kubuni ya kificho, na kupanda mbegu hizo mapema juu ya.
>> Hivyo basi mimi kwenda mbele na kufungua faili mpya hapa.
Unajua nini?
Mimi nina kwenda tena kutekeleza kwamba mpango huo,
lakini kwa kutumia kujenga tofauti.
>> Hivyo basi mimi haraka kutoa mwenyewe upatikanaji wa ni pamoja na CS50.h
kwa ajili ya maktaba CS50, kiwango io.h kwa printf.
Nipe kuu wangu int utupu.
Na kisha juu hapa, hebu mimi kwenda mbele na kufanya hili.
>> Char c anapata kupata char, tu kama ilivyokuwa kabla.
Na mimi nina kwenda kutumia kujenga mpya now-- kubadili, juu ya tabia nini?
Hivyo kubadili ni aina ya kama byte tracks treni.
Au, kwa kweli, ni aina ya an kama mwingine, kama mwingine kama,
lakini imeandikwa kiasi fulani tofauti.
>> kubadili inaonekana kama hii.
Una kubadili, na kisha nini tabia au idadi unataka kuangalia,
kisha baadhi braces curly kama katika Scratch, kusema tu kufanya mambo haya.
Na kisha una kesi tofauti.
>> Huwezi kutumia kama na kingine chochote.
You literally kutumia kesi neno.
Na ungependa kusema kitu kama hiki.
>> Hivyo katika kesi ya lowercase y, au katika kesi ya mji mkuu Y,
kwenda mbele na magazeti nje ndiyo.
Na kisha kuvunja nje ya kubadili.
Hiyo ni.
Sisi ni kosa.
>> Mwingine kama, hivyo kusema, chini kesi n, au mji mkuu N,
kisha kwenda mbele na magazeti nje hakuna, na kisha kuvunja.
Else-- na aina hii ya ni default kesi indeed-- printf error--
na tu kwa ajili ya hatua nzuri, ingawa kifikra mapumziko hii si muhimu
kwa sababu tuko mwishoni ya kubadili anyway,
Mimi sasa kuvunja nje ya kubadili.
Hivyo hii inaonekana tofauti kidogo.
>> Lakini, mantiki, ni kweli sawa.
Na ni kwa nini matumizi moja juu ya nyingine?
Wakati mwingine, tu binafsi upendeleo, wakati mwingine aesthetics,
kama mimi mtazamo katika hii sasa, kuna kitu
kwa kuwa alisema kwa readability ya kanuni hii.
I mean, kamwe akili na ukweli kwamba hii code ni mpya kwa wengi wetu katika chumba hicho.
>> Lakini ni aina tu ya ni pretty.
Unaweza kuona lowercase y, mji mkuu Y, chini kesi n, mji mkuu wa N msingi,
ni aina tu ya anaruka nje saa wewe kwa njia
kwamba, arguably, labda mfano uliopita
na ikiwa na baa wima, na mwingine ikiwa, wanaweza kuwa na.
Hivyo hii ni kweli suala la binafsi uchaguzi, kwa kweli, au readability,
ya kanuni.
>> Lakini katika suala la utendaji, napenda kwenda mbele na kufanya kubadili, dot kufyeka
kubadili, na sasa aina katika lowercase y, mji mkuu Y, lowercase n, mji mkuu wa N,
David, jaribu kwa sababu hiyo ni si tabia moja.
Hebu kufanya x, kosa, kama ilivyotarajiwa.
Na, logically-- na hili ni jambo Napenda kuwatia moyo katika general-- hata
ingawa tuko tu scratching uso wa baadhi ya makala haya.
>> Na wanaweza kuwa dhahiri wakati mwenyewe kukaa chini katika keyboard,
jinsi gani kazi hii?
Kitu gani hii nini?
jambo zuri juu ya kuwa mbali, au desktop, au kupata
kompyuta na compiler, na pamoja na mhariri wa kanuni kama hii,
ni unaweza karibu kila mara kujibu hizi maswali kwa ajili yako mwenyewe tu kwa kujaribu.
>> Kwa mfano, kama kejeli swali katika mkono walikuwa,
kile kinachotokea kama wewe kusahau mapumziko yako kauli?
Ambayo ni kweli kawaida sana kitu cha kufanya,
kwa sababu haina kuangalia kama kweli wanahitaji yao.
Wao si kweli kukamilisha yako walidhani kama mabano au curly
brace gani.
Hebu kwenda mbele na recompile kificho na kuona.
Hivyo kufanya kubadili, dot kufyeka kubadili.
Hebu aina katika kesi ya chini y, kesi juu, kuingia.
Hivyo mimi niliandika y.
>> Mpango alisema ndiyo, hapana, makosa, kana kwamba alikuwa kubadilisha mawazo yake.
Lakini ni aina ya mara, kwa sababu kile kinachotokea pamoja na kubadili ni kesi ya kwanza kwamba
mechi yana maana, hey kompyuta, kutekeleza yote ya maadili ya chini yake.
Na kama huna kusema mapumziko, au usiseme mapumziko, au usiseme mapumziko,
kompyuta ni kwenda pigo kwa njia zote za wale mistari
na kutekeleza wote mpaka anapata kwa kuwa brace curly.
Hivyo breki ni, kwa kweli, ni lazima.
Lakini takeaway hapa ni kwamba, wakati katika shaka, kujaribu kitu.
Labda kuokoa code yako ya kwanza, au kuokoa ni katika faili ya ziada
kama wewe ni kweli wasiwasi kuhusu messing up na kuwa na kupona
kazi kwamba unajua ni kazi.
>> Lakini kujaribu mambo.
Na wala kuwa na hofu kama, pengine, ya kile kompyuta anaweza kufanya,
au kwamba unaweza kuvunja kitu.
Daima unaweza revert nyuma kwa baadhi toleo la awali.
>> Hivyo hebu mwisho kwa kuangalia katika mpango wa kanuni.
Tuna uwezo huu sasa kuandika masharti, na kuandika loops,
na vigezo, na kazi ya wito.
Hivyo, kusema ukweli, sisi ni aina ya nyuma katika ambapo tulikuwa wiki iliyopita na Scratch,
angalau kwa textual chini ya kulazimisha mazingira kuliko Scratch inaruhusu.
>> Lakini taarifa jinsi ya haraka tumekuwa alipewa kwamba msamiati, hata kama ni
kwenda kuchukua muda kidogo kuzama katika, ili tuweze sasa unaweza kutumia msamiati huu
kuandika programu ya kuvutia zaidi.
Na hebu kuchukua mtoto hatua kuelekea kwamba, kama ifuatavyo.
Hebu kwenda mbele na kuunda faili mpya hapa.
>> Mimi nina kwenda kuwaita hii prototype.c, na kuanzisha
kwa mara ya kwanza, uwezo kufanya kazi yako mwenyewe.
Baadhi ya unaweza kuwa amefanya kwa Scratch,
ambapo unaweza kuunda yako vitalu mwenyewe desturi katika Scratch,
na kisha Drag yao katika nafasi popote Ningependa katika C.
Na katika zaidi ya programu lugha, unaweza kufanya hasa
that-- kufanya kazi yako mwenyewe, kama hawana tayari zipo.
>> Hivyo, kwa mfano, basi mimi kwenda mbele na ni pamoja na CS50.h, na ni pamoja na
kiwango io.h, int kuu utupu.
Na sasa tuna placeholder tayari kwenda.
Mimi kushika uchapishaji mambo kama majina ya watu leo.
Na kwamba anahisi like-- bila kuwa nzuri kama kuna
walikuwa kazi kuitwa magazeti jina?
Sina kutumia printf.
Sina kukumbuka namba zote format.
Kwa nini si mimi, au kwa nini hakuwa mtu mbele yangu,
kujenga kazi kuitwa magazeti jina, kuwa kutokana na baadhi jina,
tu Prints nje?
>> Kwa maneno mengine, kama mimi kusema, hey, kompyuta, nipe kamba
kwa kuuliza user kwa vile, kupitia CS50 ya kupata kamba kazi.
Hey, kompyuta, kuweka kwamba kamba katika kutofautiana katika upande wa kushoto,
na kuiita s.
Na kisha, hey kompyuta, kwenda mbele na magazeti kwamba jina la mtu, kufanyika.
>> Sasa, itakuwa nzuri, kwa sababu mpango huu, aptly aitwaye,
inaniambia nini ni zinatakiwa kufanya kwa njia ya majina hayo kazi ya.
Hebu kwenda na kufanya mfano, kuingia.
Na, kwa bahati mbaya, hii si kwenda kuruka.
>> Prototype.c, line 7, tabia ya 5, kosa, thabiti tamko
ya magazeti kazi jina ni batili katika C99, C99
maana toleo la C waliotoka mwaka 1999.
Ni hayo tu.
>> Hivyo mimi sijui nini yote haya ina maana bado.
Lakini mimi kutambua makosa katika nyekundu.
Hiyo ni pretty dhahiri.
>> Na inaonekana kwamba kwa tabia ya kijani hapa,
Suala hili ni pamoja na jina magazeti, wazi paren s, karibu paren, nusu koloni.
Lakini thabiti tamko la kazi tulivyofanya angalia kwa ufupi mapema.
Hii ina maana, tu, kwamba Clang hajui nini namaanisha.
>> Nimekuwa kutumika msamiati neno kwamba ni kamwe kuona au kufundishwa kabla.
Na hivyo mimi haja ya kufundisha nini kazi hii maana yake.
Hivyo mimi nina kwenda mbele na kufanya hivyo.
>> Mimi nina kwenda mbele na kutekeleza kazi yangu mwenyewe iitwayo Jina Print.
Na mimi nina kwenda kusema, kama ifuatavyo, kwamba ni gani hii, printf, hello, asilimia
s, backslash n, jina, nusu koloni.
Hivyo nini mimi tu kufanya?
>> Hivyo ni zamu nje, kwa kutekeleza kazi yako mwenyewe,
sisi aina ya kukopa baadhi ya muundo huo kama kuu
kwamba tumekuwa tu imekuwa kuchukuliwa kwa nafasi, na mimi
kujua tu kuiga na kubandika pretty kiasi gani
Nimekuwa kuandika huko nyuma.
Lakini taarifa mfano hapa.
Int, Kuu, Void, tutaweza tease mbali kabla ya muda mrefu nini kwamba kweli maana yake.
>> Lakini kwa leo, tu taarifa parallelism.
Batili, magazeti jina, kamba jina, hivyo kuna
zambarau keyword, ambayo tunakwenda kuanza
wito aina ya kurudi, jina la kazi, na kisha pembejeo.
Hivyo, kwa kweli, tunaweza distill aina hii ya kama wiki iliyopita
kama, hii ni jina au algorithm ya kificho tuko
kwenda write-- algorithm msingi
kificho tunakwenda kuandika.
>> Hii ni mchango wake.
Hii ni matokeo yake.
Kazi hii, magazeti jina, ni iliyoundwa na kuchukua kamba kuitwa jina,
au chochote, kama pembejeo, na kisha utupu.
Ni haina kurudi kitu chochote, kama kupata kamba au kupata int gani.
Hivyo ni kwenda kwa mkono mimi kitu nyuma.
Ni kwenda tu kuwa na athari upande, hivyo kusema,
ya uchapishaji jina la mtu.
Hivyo taarifa, line 7, mimi wanaweza kupiga jina magazeti.
Mstari 10, siwezi kufafanua au kutekeleza jina magazeti.
Lakini, kwa bahati mbaya, hiyo haitoshi.
>> Hebu kwenda mbele na recompile hii baada ya kuokoa.
Whoa, sasa, nimekuwa alifanya hivyo mbaya, inaweza kuonekana.
Hivyo thabiti tamko la magazeti kazi jina ni batili.
Na, tena, kuna makosa zaidi.
Lakini kama mimi alionya mapema, hata kama wewe kupata kuzidiwa na,
au huzuni kidogo kuona hivyo wengi makosa, lengo tu juu ya kwanza
awali, kwa sababu ili tu wamekuwa na kuachia athari.
Hivyo C, au Clang zaidi hasa, bado haitambui jina magazeti.
>> Na kwamba kwa sababu Clang, kwa kubuni, ni aina ya bubu.
Ni tu haina nini kuwaambia ni kufanya.
Na ni tu anafanya hivyo ili ambayo wewe kuwaambia ni kufanya.
>> Hivyo mimi kuwa defined kuu kwenye mstari nne, kama tumekuwa kufanya pretty mara kwa mara.
Nimekuwa inavyoelezwa jina magazeti kwenye mstari 10.
Lakini mimi nina kujaribu kutumia magazeti jina kwenye mstari saba.
>> Ni mapema mno, haipo bado.
Ili niweze kuwa wajanja, na kuwa kama, OK, hivyo hebu tu kucheza pamoja,
na hoja jina magazeti up hapa, na re-kukusanya.
Mungu wangu.
Ni kazi.
Ilikuwa ni rahisi kama hayo.
>> Lakini mantiki ni hasa kwamba.
Una kufundisha Clang nini ni kwa kufafanua kazi ya kwanza.
Basi unaweza kuitumia.
Lakini, kusema ukweli, hii anahisi kama slippery slope.
>> Hivyo kila wakati mimi kukimbia katika tatizo, mimi nina tu
kwenda kuonyesha na nakala ya kanuni Niliandika, ukate na kuweka it up hapa.
Na hakika tunaweza uliamua baadhi ya matukio
ambapo kazi mtu anaweza haja ya simu jingine.
Na wewe tu hawezi kuweka kila kazi juu ya kila mmoja.
>> Hivyo ni zamu nje kuna ya ufumbuzi bora.
Tunaweza kuondoka iwe hivyo.
Na, kusema ukweli, ni kwa ujumla nzuri, na urahisi, na kubuni nzuri
kuweka kuu ya kwanza, kwa sababu, tena, kuu tu kama wakati kijani bendera clicked,
kwamba ni kazi ambayo anapata kunyongwa na default.
Hivyo unaweza pia kuweka hivyo wakati juu ya faili
hivyo kwamba wakati wewe au yoyote binadamu wengine inaangalia faili
unajua nini kinaendelea tu kwa kusoma kuu ya kwanza.
Hivyo ni zamu nje, tunaweza kujua Clang proactively, hey, Clang, kwenye mstari nne,
Mimi ahadi ya kutekeleza kazi kuitwa Print
Jina kwamba inachukua kamba kuitwa jina kama pembejeo, na anarudi kitu, utupu.
Na mimi itabidi kupata karibu na kutekeleza hayo baadaye.
>> Hiyo inakuja Kuu.
Kuu sasa kwenye mstari 9 wanaweza kutumia Jina Print kwa sababu Clang
ni kuamini kwamba, hatimaye, itakuwa kukutana ufafanuzi
ya utekelezaji wa Jina Print.
Kwa hiyo baada ya kuokoa faili yangu, hebu mimi kwenda mbele na kufanya mfano,
inaonekana ni nzuri wakati huu.
Dot kufyeka, mfano, napenda kwenda mbele na aina katika jina.
David, hello David, Zamila, hello Zamila, na kwa kweli, sasa ni kazi.
>> Hivyo kingo hapa ni kwamba tumekuwa alifanya kazi desturi, kama desturi
Scratch kuzuia sisi ni wito yake.
Lakini tofauti na Scratch ambapo unaweza tu kujenga ni na kuanza kutumia,
sasa sisi kuwa kidogo zaidi pedantic,
na kwa kweli mafunzo Clang kutumia, au kwa kutarajia.
Sasa, kama kando, kwa nini muda wote huu na sisi wamekuwa tu upofu juu ya imani ikiwa ni pamoja na
CS50.h, na ikiwa ni pamoja na kiwango io.h?
>> Naam, ni zamu nje, miongoni mwa mambo mengine machache,
yote yale ambayo ni katika wale dot h files, ambayo kutokea kwa kuwa mafaili.
Wao ni header files, hivyo kusema.
Wao bado uko kuandikwa katika C. Lakini wao uko aina tofauti ya file.
>> Kwa sasa, unaweza pretty much kudhani ambazo vitu vyote vilivyomo ndani ya CS50.h
baadhi ya moja-liners kama hii, si kwa ajili ya kazi inaitwa Jina Print,
lakini kwa Kupata Kamba, Kupata Float, na wengine wachache.
Na kuna prototypes sawa, moja liners, ndani ya kiwango io.h
kwa printf, ambayo sasa ni katika yangu mwenyewe Jina Print kazi.
Hivyo kwa maneno mengine, wakati huu mzima tumekuwa tu imekuwa upofu kuiga na pasting
pamoja na hii, ni pamoja na kwamba, nini kinaendelea?
Hayo ni tu aina ya dalili kwa Clang kama kwa kazi gani
ni kweli, kutekelezwa, tu mahali pengine katika mafaili mbalimbali
mahali pengine katika mfumo.
>> Hivyo tumekuwa kutekelezwa jina magazeti.
Ni gani kuwa athari hii upande wa uchapishaji kitu juu ya screen.
Lakini haina kweli mkono mimi kitu nyuma.
Jinsi gani sisi kwenda juu utekelezaji wa mpango huo
haina mkono mimi kitu nyuma?
>> Naam, hebu jaribu hii.
Hebu kwenda mbele na kutekeleza faili inayoitwa return.c
ili tuweze kuonyesha jinsi kitu kama Kupata Kamba, au Kupata Int,
ni kweli kurudi kitu nyuma kwa mtumiaji.
Hebu kwenda mbele na kufafanua int kuu utupu.
>> Na tena, katika siku zijazo, tutaweza kueleza kile kwamba int na kwamba utupu
ni kweli kufanya.
Lakini kwa leo, tutaweza kuchukua ni kwa nafasi.
Mimi nina kwenda mbele na printf, kwa nzuri user uzoefu, x ni.
Na kisha mimi nina kwenda kusubiri kwa user kunipa x na kupata int.
>> Na kisha mimi nina kwenda mbele na magazeti nje x kwa mraba.
Hivyo wakati wewe tu na keyboard, watu kawaida
kutumia karoti kidogo ishara juu ya keyboard
kuiwakilisha madarakani ya, au exponent ya.
Hivyo x mraba ni sasa i.
>> Na sasa mimi nina kwenda kufanya hili.
Mimi naweza do-- tu nini x squared? x squared ni mara x x.
>> Na sisi alifanya hivyo baadhi wakati uliopita tayari leo.
Hii haina kujisikia kama zote kuwa maendeleo makubwa.
Unajua nini?
Hebu kujiinua baadhi ya wazo kwamba mara ya mwisho ya kufikirika tu.
>> Je, si ni kuwa nzuri kama kuna kazi kuitwa
mraba kwamba gani hasa kwamba?
Bado, mwishoni mwa siku, je math sawa.
Lakini hebu abstract mbali wazo la kuchukua
namba moja tele na mwingine, na tu kuwapa jina,
kama mraba thamani hii.
>> Na, kwa maneno mengine, katika C, hebu kujenga kazi
aitwaye mraba kwamba gani hasa kwamba.
Ni kwenda kuitwa mraba.
Ni kwenda kuchukua int.
Na tutaweza mapenzi tu kuiita n, na default.
>> Lakini tunaweza kuiita chochote tunataka.
Na yote ni kwenda kufanya, literally, ni kurudi
matokeo ya nyakati n n.
Lakini kwa sababu ni kurudisha kitu, ambayo
ni keyword katika zambarau tumekuwa kamwe kuona mbele, I, kwenye mstari 11,
Huwezi tu kusema utupu wakati huu.
>> Batili, katika mfano sisi tu kuona badala ya jina magazeti, tu ina maana,
fanya kitu.
Lakini si mkono mimi kitu nyuma.
Katika kesi hiyo, mimi nataka kurudi n mara n,
au chochote yaani, idadi hiyo.
>> Hivyo siwezi kusema, hey, kompyuta, Mimi kurudi kitu, utupu.
Ni kwenda na kurudi, kwa asili, int.
Na hivyo ndiyo yote kinaendelea hapa.
>> pembejeo kwa mraba ni kwenda kuwa int.
Na ili tuweze kuitumia, ina kuwa na jina, N. Ni kwenda pato
int kwamba haina haja jina.
Tunaweza kuondoka kwa kuu, au ye yote ni kutumia mimi kukumbuka thamani hii kama sisi
wanataka na kutofautiana yake mwenyewe.
>> Na, tena, mpya tu keyword hapa ni marejeo.
Na mimi nina tu kufanya baadhi ya math.
Kama mimi kwa kweli alitaka kuwa unnecessary, Mimi naweza kusema int bidhaa anapata n mara n.
>> Na kisha mimi naweza kusema, kurudi bidhaa.
Lakini tena, kwa uhakika yangu ya awali ya hii si tu kuwa design-- nzuri
kama, kwa nini kuanzisha jina, ishara, kama bidhaa,
tu mara moja kurudi yake?
Ni safi kidogo, stramare kidogo, hivyo
kusema, tu kusema mara kurudi n n, kujikwamua mstari huu kabisa.
>> Na ni tu chini ya kanuni kusoma, chini fursa kwa makosa.
Na hebu angalia kama hii kweli sasa anafanya kazi.
Sasa, mimi nina kwenda mbele na kufanya kurudi.
>> Uh-oh, thabiti tamko la kazi.
Mimi alifanya kosa hilo kabla, hakuna mpango mkubwa.
Napenda tu aina, au kuonyesha na nakala, exact kazi mfano,
au saini, ya kazi hapa.
Au mimi naweza hoja kazi nzima.
>> Lakini hiyo ni kidogo wavivu.
Hivyo sisi si kufanya hivyo.
Sasa, basi mimi kufanya kurudi tena, dot kufyeka kurudi.
>> x ni 2. x mraba ni 4. x ni 3. x mraba ni 9.
Na kazi inaonekana sasa kwa kuwa kazi.
Basi nini tofauti hapa?
Nina kazi kwamba wito mraba, katika kesi hii, ambayo mimi kuweka katika pembejeo.
Na mimi kupata nyuma pato.
Na bado, hapo awali, ikiwa Mimi kufungua mfano mwingine
kutoka mapema, ambayo Ilikuwa inaitwa prototype.c,
Mimi nilikuwa magazeti jina, ambayo akarudi batili, hivyo kusema,
Au akarudi kitu, na tu alikuwa athari upande.
>> Hivyo nini kinaendelea hapa?
Naam, kufikiria kazi kupata kamba kwa muda tu.
Tumekuwa kutumia kazi kupata kamba kwa njia hii.
>> Tumekuwa na kazi kupata kamba, kama ni pamoja na CS50.h,
pamoja na kiwango io.h, int, kuu, utupu.
Na kisha kila wakati nimekuwa aitwaye kupata kamba hivi sasa,
Nimekuwa alisema kitu kama, kamba s anapata kupata kamba, kwa sababu get kamba
hebu simu hii get.c-- kupata kamba yenyewe anarudi kamba kwamba naweza kisha
kutumia, na kusema, hello, comma, asilimia s, backslash n, s.
>> Hivyo hii ni mfano huo, kweli, kwamba tulikuwa mapema.
Hivyo kupata kamba anarudi thamani.
Lakini wakati iliyopita, kamba magazeti haina kurudi thamani.
Ni tu ina athari upande.
Hivyo hii ni tofauti ya kimsingi.
Tumeona tofauti aina ya kazi sasa,
baadhi ya ambayo wamerejea maadili, baadhi ya ambayo hawana.
Hivyo labda ni kamba, au int, au kuelea.
Au labda ni tu utupu.
>> Na tofauti ni kwamba kazi hizi kwamba
kupata data na kurudi thamani ni kweli kuleta kitu nyuma ya meza,
hivyo kusema.
Basi hebu kwenda mbele na kuangalia seti moja ya mwisho
ya mifano kwamba anatoa hisia, sasa, ya jinsi tunaweza, kwa hakika, abstract bora,
na bora, na bora, au zaidi, na zaidi, na zaidi, ili
kuandika, hatimaye, vizuri kanuni.
Hebu kwenda mbele, na kwa roho ya Scratch, kufanya yafuatayo.
>> Hebu kwenda mbele na ni pamoja na CS50.h na kiwango io.h.
Hebu kwenda mbele na kutoa mwenyewe int, kuu, utupu.
Na napenda kwenda mbele, piga cough.c hii.
>> Na napenda kwenda mbele na tu kama Scratch, magazeti nje kikohozi / n.
Na mimi nataka kufanya hili mara tatu.
Hivyo mimi nina, bila shaka, tu kwenda na nakala na kuweka mara tatu.
Mimi sasa kwenda kufanya kikohozi dot kufyeka kikohozi.
Hebu kutoa mwenyewe kidogo zaidi chumba hapa, Ingieni, kukohoa, kikohozi, kikohozi.
>> Kuna, ni wazi, tayari nafasi ya kuboresha.
Nimekuwa kunakiliwa na pasted mara chache leo.
Lakini hiyo ilikuwa tu hivyo sikuwa kuwa na aina kama wahusika wengi.
Mimi bado iliyopita nini wale mstari wa kanuni ni.
>> mistari watatu hawa ni kufanana, ambayo anahisi wavivu na kwa kweli ni,
na pengine si njia ya haki.
Hivyo, pamoja na yale kingo tunaweza kuboresha kanuni hii?
Hatuna nakala na kuweka kanuni.
>> Na, kwa hakika, wakati wowote kujisikia mwenyewe kuiga na pasting,
na hata kubadilisha kanuni, ni tabia mbaya kuna njia bora.
Na, kwa hakika, kuna.
Hebu kwenda mbele na kufanya kwa kitanzi, ingawa syntax nguvu si
kuja kawaida bado.
>> Je, hii mara tatu, tu kwa kufanya following--
na mimi kutokea kwa kujua hii kutoka mazoezi.
Lakini tuna idadi ya mifano sasa.
Na utaona online marejeo zaidi bado.
>> Hii ni syntax kwenye mstari 6, kwamba kiasi kama Scratch kwamba kurudia
kuzuia, kurudia kufuatia mara tatu.
Ni kichawi kidogo kwa sasa.
Lakini hii kupata zaidi, na zaidi ya ukoo.
>> Na itakuja kurudia line nane mara tatu,
ili kwamba kama mimi re-kukusanya kufanya kikohozi, dot kufyeka kukohoa, kikohozi, kikohozi, kikohozi.
Bado kazi kwa njia hiyo hiyo.
Basi hiyo ni yote faini na nzuri.
Lakini si kwamba yanayotumika sana.
>> Ni sahihi kabisa.
Lakini anahisi kama kuna inaweza kuwa fursa,
kama katika ulimwengu wa Scratch, kwa namna ya kuanza
kuongeza baadhi ya semantiki hapa ili Mimi si tu kuwa na baadhi ya kwa kitanzi,
na kazi ambayo anasema kikohozi, au gani kikohozi.
Unajua nini?
Hebu jaribu kuwa baridi kidogo zaidi ya kwamba,
na kweli kuandika kazi ambayo ina baadhi ya madhara, simu yake kikohozi.
>> Na inachukua hakuna pembejeo, na anarudi hakuna thamani kama pato.
Lakini unajua nini ni gani?
Ni anafanya Haya printf, quote unquote, kikohozi.
>> Na sasa hapa, mimi nina kwenda kwenda mbele na kwa int,
i anapata sifuri, i chini ya 3, i plus plus.
Mimi nina kwenda kufanya printf, ambayo ni arguably utekelezaji kiwango cha chini
undani.
Sijali jinsi ya kikohozi.
Mimi nataka tu kutumia kikohozi kazi.
Na mimi nina tu kwenda kuwaita kikohozi.
>> Sasa, taarifa dichotomy.
Wakati wewe piga kazi, kama huna unataka kuwapa pembejeo, kabisa faini.
Tu kufanya wazi Paren, karibu paren, na wewe ni kosa.
>> Wakati unaweza kufafanua kazi, au kutangaza mfano kazi ya,
kama wewe kujua mapema siyo kwenda kuchukua hoja yoyote,
kusema utupu katika mabano wale pale.
Na kwamba inafanya hakika kwamba wewe si ajali kuzitumia vibaya.
Hebu kwenda mbele na kufanya kikohozi.
Na, bila shaka, nimekuwa alifanya makosa.
>> Dammit, kuna kuwa thabiti tamko.
Lakini hiyo ni faini.
Ni rahisi kurekebisha.
Mimi tu haja mfano juu juu katika faili yangu kuliko mimi nina kweli kutumia.
>> Hivyo sasa napenda kufanya kikohozi tena, nzuri.
Sasa, ni kazi.
Kufanya kukohoa, kikohozi, kikohozi, kikohozi.
Hivyo unaweza kufikiri kwamba sisi ni kweli zaidi ya uhandisi tatizo hili.
Na kwa kweli, sisi ni.
Hii si nzuri Mgombea wa mpango
wakati kwa refactoring, na kufanya nini
aitwaye kihierarkia mtengano, ambapo kuchukua baadhi ya kanuni, na kisha
aina ya sababu mambo ya nje, hivyo kama kuhusisha semantiki zaidi kwao,
na kutumia tena hatimaye muda mrefu.
Lakini ni kuzuia ujenzi kuelekea mipango ya kisasa zaidi
kwamba tutaanza kuandika kabla ya muda mrefu kwamba
inaruhusu yetu kuwa na msamiati na ambayo kwa kuandika vizuri kanuni.
Na kwa kweli, hebu angalia kama sisi hawezi kujumlisha hili zaidi.
>> Inaonekana vilema kidogo kwamba mimi, kuu, haja ya kuwa na wasiwasi kuhusu darn hii kwa kitanzi,
na wito kikohozi tena na tena.
Kwa nini siwezi kuwaambia tu kikohozi, tafadhali kikohozi mara tatu?
Kwa maneno mengine, kwa nini hawawezi I just kutoa pembejeo kwa kikohozi na kufanya hili?
>> Kwa nini siwezi kusema tu, katika kikohozi kuu mara tatu.
Na sasa, hii ni aina ya kichawi.
Ni iterative sana hapa.
Na ni, kwa kweli, mtoto hatua.
>> Lakini tu uwezo wa kusema juu ya line nane, kukohoa mara tatu,
ni hivyo zaidi someka tu.
Na, plus, sina kujua au huduma jinsi kikohozi ni kutekelezwa.
Na, kwa hakika, baadaye katika mrefu na kwa miradi ya mwisho,
kama wewe kukabiliana na mradi na classmate au wanafunzi wawili,
utasikia kutambua kwamba wewe ni kwenda kuwa na, au unataka, kugawanya kazi.
>> Na wewe ni kwenda wanataka kuamua mapema, ambaye ni kwenda kufanya nini,
na ambayo vipande?
Na bila kuwa nzuri kama wewe, kwa mfano,
kuchukua malipo ya uandishi kuu, kufanyika.
Na roommate yako, au yako mpenzi kwa ujumla zaidi,
inachukua huduma ya utekelezaji kikohozi.
>> Na mgawanyiko huu, hizi kuta za uchukuaji,
au matabaka ya uchukuaji kama utakuwa, ni super nguvu,
kwa sababu hasa kwa kubwa, zaidi programu tata na mifumo,
inaruhusu watu mbalimbali ili kujenga mambo pamoja, na hatimaye
kushona kazi zao pamoja kwa njia hii.
Lakini, bila shaka, sisi haja ya sasa kurekebisha kikohozi.
Sisi haja ya kuwaambia kikohozi kwamba, hey, unajua nini?
Wewe ni kwenda haja ya kuchukua pembejeo hivyo si batili, lakini int na sasa.
Hebu kwenda mbele na kuweka ndani kikohozi int. i anapata sifuri.
>> i ni chini ya mara ngapi.
Nilisema tatu kabla.
Lakini si kwamba nini nataka.
Mimi nataka kikohozi kwa kuwa jumla ya kusaidia idadi yoyote ya iterations.
>> Hivyo, kwa hakika, ni n kwamba mimi nataka, chochote mtumiaji inaniambia.
Sasa, siwezi kwenda mbele na kusema magazeti kikohozi.
Na bila kujali idadi user hupita katika,
Nami iterate kwamba mara nyingi.
>> Hivyo mwisho wa siku, mpango huo ni kufanana.
Lakini taarifa yote ya mambo haya inaweza hata kuwa katika faili mwingine.
Hakika, mimi sijui utafutaji muda gani printf ni kutekelezwa.
>> Sijui wakati jinsi kupata kamba, au kupata int, au kupata kuelea
zinatekelezwa.
Na mimi sitaki kuwaona kwenye screen yangu.
Kama ilivyo, mimi nina kuanza kuzingatia mpango wangu, si kazi hizo.
>> Na hivyo, kwa kweli, kwa haraka kama wewe kuanza factoring code kama hii nje,
tunaweza hata hoja kikohozi kwa faili tofauti?
Mtu mwingine inaweza kutekeleza.
Na wewe na mpango wako kuwa nzuri sana, na someka sana,
arguably, kwa kweli nne line mpango pale pale.
>> Basi hebu kwenda mbele sasa na kufanya moja zaidi mabadiliko.
Taarifa kwamba mfano wangu ina mabadiliko juu juu.
Hivyo basi mimi kurekebisha kwamba hivyo Sina kupata yelled saa.
>> Kufanya kikohozi, napenda kukimbia kikohozi mara moja zaidi, bado kufanya kitu kimoja.
Lakini sasa, tuna taarifa ingredient kwa moja toleo la mwisho.
Unajua nini?
Sitaki kukohoa tu, lazima.
Nataka kuwa na kitu zaidi kwa ujumla.
Hivyo unajua nini?
Nataka kufanya hili.
Nataka kuwa na, kiasi kama Scratch gani, kuzuia kusema, lakini si tu
kusema kitu baadhi idadi ya nyakati.
Nataka kusema kamba maalum sana.
Na, kwa hiyo, mimi si unataka kusema tu kikohozi.
Nataka kusema chochote kamba ni kupita katika.
>> Hivyo taarifa, nimekuwa wa jumla hii ili sasa
kusema anahisi kama jina nzuri kwa hili, kama Scratch,
inachukua hoja mbili, tofauti na Scratch.
Moja ni kamba.
Moja ni int.
>> Na mimi naweza kubadili yao.
I just aina ya kama wazo la kusema kamba kwanza, na kisha
jinsi mara baadaye mingi.
Utupu maana yake bado haina kurudi kitu chochote.
Hizi ni baadhi tu ya Visual upande madhara, kama na [? Jordan,?]
matusi na athari upande wa kunguruma.
Ni bado anafanya mara kitu n, 0 hadi, lakini si sawa na n.
Hii ina maana n jumla nyakati.
Na kisha tu magazeti nje chochote kile kamba ni.
Hivyo nimekuwa kweli wa jumla hii mstari wa kanuni.
Hivyo sasa, jinsi gani mimi kutekeleza kikohozi kazi?
>> Siwezi kufanya utupu kikohozi.
Na mimi bado wanaweza kuchukua katika jinsi mara nyingi unataka kikohozi.
Lakini unajua nini?
Mimi sasa wanaweza Punt kusema.
>> Siwezi kuwaita kusema kwa neno kikohozi, kupita katika n.
Na kama nataka pia kutekeleza, ajili ya kujifurahisha, sneeze kazi,
Siwezi kuchafya baadhi idadi ya nyakati.
Na siwezi kuendelea Reusing n, kwa sababu taarifa kwamba m kwa mantiki hii au upeo
tu ipo ndani ya kazi hii.
>> Na n kwa mantiki hii tu ipo ndani ya kazi hii hapa.
Hivyo tutaweza kuja nyuma masuala haya ya upeo.
Na hapa, mimi nina kwenda tu kusema, Achoo, na kisha n mara, nusu koloni.
>> Na sasa, mimi tu haja ya kukopa hizi kazi saini hapa.
Hivyo kikohozi ni sahihi.
Void sneeze ni sahihi sasa.
>> Na mimi bado tu haja kusema.
Hivyo mimi nina kwenda kusema, kusema kamba s, int n, nusu koloni.
Hivyo nimekuwa juu-engineered heck nje ya mpango huu.
>> Na hii haina lazima maana hii ni
nini unapaswa kufanya wakati wa kuandika hata rahisi ya mipango.
Kuchukua kitu hiyo ni wazi kweli rahisi, kwa kweli mfupi,
na re-kuutekeleza kutumia kanuni njia sana.
Lakini utasikia kweli kuona, na katika wakati kuangalia nyuma juu ya mifano hii,
na kutambua, oh, wale ni hatua sisi alichukua kwa kweli kujumlisha,
na sababu kitu nje, mpaka mwisho wa siku
kanuni yangu ni kweli pretty nafuu.
Kwa sababu kama nataka kikohozi tatu Mara kisha kuchafya mara tatu,
Mimi tu kwenda rerun hii, Mpango kufanya kikohozi, na kukimbia kikohozi.
Na mimi kuwa mafua tatu na machemuzi tatu.
>> Na hivyo hii ni ya msingi dhana, kama wewe,
kwa jinsi tupate kwenda juu kweli kutekeleza mpango huo.
Lakini hebu tu kuona ni nini sasa tumekuwa kufanya wote wa wakati huu,
na kile baadhi ya vipande mwisho ni nyuma amri hii rahisi.
Mwisho wa siku, tumekuwa wamekuwa wakitumia Clang kama compiler yetu.
Sisi tumekuwa kuandika chanzo kanuni, kuwabadili
kupitia Clang katika mashine kanuni.
>> Na tumekuwa kutumia Tengeneza tu kuwezesha keystrokes yetu ili
kwamba hatuna kukumbuka wale incantations ya Clang yenyewe.
Lakini ni nini Tengeneza kweli kufanya?
Na, kwa upande wake, ni nini Clang kweli kufanya?
>> Ni zamu nje, ingawa sisi wamerahisisha majadiliano ya leo kwa kusema,
wewe kuchukua chanzo kanuni, kuupitisha kama pembejeo kwa compiler, ambayo inatoa wewe
pato la mashine kanuni, zinageuka kuna ya
hatua chache tofauti ndani ya huko.
Na kuandaa hutokea kwa kuwa mwavuli mrefu kwa ajili ya kundi zima la hatua.
Lakini hebu tu tease nje hii kweli haraka.
>> Ni zinageuka kuwa tumekuwa kufanya mambo zaidi kila wakati mimi kukimbia mpango,
au kila wakati mimi kukusanya mpango leo.
Hivyo preprocessing inahusu Haya chochote katika C mpango,
kama tutaweza kuona tena na tena, kwamba huanza na alama hii hash,
au hashtag ishara hapa, maana yake ni ni preprocessor agizo.
Hiyo ina maana, katika kesi hii, hey kompyuta, kufanya kitu na faili hili
kabla ya kweli kukusanya kanuni yangu mwenyewe.
>> Katika kesi hiyo, hash ni pamoja na ni, kimsingi, njia C ya kusema,
hey kompyuta, kwenda kupata yaliyomo ya CS50.h na kuweka yao hapa.
Hey kompyuta, kwenda kupata yaliyomo ya kiwango io.h,
popote kwamba ni juu ya kuendesha gari kwa bidii, kuweka hapa.
Hivyo mambo hayo kutokea kwanza wakati wa preprocessing.
>> Na Clang gani haya yote kwa ajili yetu.
Na ni gani hivyo darn haraka, huna hata
kuona mambo manne yanatokea.
Lakini hiyo ni hatua ya kwanza kama hizo.
>> Ni nini hasa kinatokea ijayo?
Naam, rasmi ijayo hatua ni kuandaa.
Na zinageuka kuwa kuandaa mpango
kitaalam maana kwenda kutoka chanzo kanuni, mambo tumekuwa
wamekuwa kuandika leo, na kitu aitwaye mkutano kificho, kitu
kwamba inaonekana tofauti kidogo.
>> Na, kwa kweli, tunaweza kuona hii halisi haraka.
Hebu kweli kwenda katika IDE yangu.
Hebu kwenda mbele na kufungua hello.c, ambayo ni mpango wa kwanza sana ambayo sisi
alianza leo.
Na napenda kwenda mbele na kukimbia Clang a tofauti kidogo, Clang-s, hello.c,
ambayo ni kweli kwenda nipe hello.s mwingine file.
>> Na sisi pengine kamwe tena kuona aina hii ya kificho.
Kama wewe kuchukua ngazi ya chini mifumo darasa kama CS61,
utaona mengi zaidi wa aina hii ya kificho.
Lakini hii ni mkutano lugha.
Hii ni X86 mkutano lugha kwamba CPU kwamba ni msingi
CS50 IDE kweli anaelewa.
>> Na cryptic kama ilivyo kuangalia, ni kitu
kompyuta anaelewa pretty vizuri.
Sub q, hii ni Ondoa.
Kuna harakati.
>> Kuna ni wito wa kazi hapa, x Oring, harakati, kuongeza, pop,
kurudi.
Hivyo kuna baadhi sana maelekezo kiwango cha chini
kwamba CPUs kuelewa kwamba Mimi alluded mapema.
Hiyo ni nini Intel Ndani.
>> Kuna mifumo ya zeros na ndio kwamba
ramani kwa hawa arcanely worded, lakini kiasi fulani vizuri aitwaye, maelekezo,
hivyo kusema.
Hiyo ni nini kinatokea wakati wewe kukusanya code yako.
Unaweza kupata mkutano Lugha nje ya hayo, ambayo
ina maana Hatua ya tatu ni ya kukusanyika kwamba mkutano kificho katika, hatimaye,
mashine code-- zeros na ndio, si Nakala kwamba sisi tu kuona wakati iliyopita.
>> Hivyo kabla ya usindikaji gani kwamba kupata na badala, na mambo mengine kadhaa.
Kuandaa inachukua chanzo wako kanuni kutoka C, chanzo kanuni
kwamba sisi aliandika ya kanisa kificho kwamba sisi tu akapiga saa.
Kukusanyika inachukua kwamba mkutano kificho kwa zeroes na wale
kwamba CPU kweli mapenzi kuelewa mwishoni mwa siku.
Na kuunganisha ni hatua ya mwisho hiyo ikitokea kwa us-- tena,
hivyo kufunga hatuna hata notice-- kwamba anasema,
hey kompyuta, kuchukua yote ya zeros na ndio kwamba
ilitokana na kuandaa kanuni Daudi, na kazi yake kuu katika kesi hii.
>> Na hey kompyuta, kwenda kupata yote ya zeros na ndio
kwamba wafanyakazi CS50 aliandika ndani ya maktaba CS50.
Kuchanganya wale walio katika na Daudi.
Na hey kompyuta, kwenda kupata zeros zote na ndio kuwa mtu mwingine ameandika miaka
iliyopita kwa printf.
Na kuongeza wale katika jambo zima, hivyo kwamba tumekuwa
got zeros yangu na ndio, zeros CS50 wafanyakazi na ndio,
printf zeros na ndio, na kitu kingine chochote sisi ni kutumia.
>> Wao wote kupata pamoja pamoja katika moja programu inayoitwa, katika kesi hii, hello.
Hivyo tangu sasa, sisi tu kutumia neno kuandaa.
Na sisi kuchukua nafasi ya kwamba wakati tunasema, kukusanya mpango wako, maana yake,
hey kufanya kabla ya usindikaji, kukusanyika, na kuunganisha.
Lakini kuna kweli baadhi ya mambo Juicy kinaendelea huko chini ya Hood.
Na hasa kama wewe kupata curious baadhi ya wakati,
unaweza kuanza poking karibu katika ngazi hii ya chini.
Lakini kwa sasa, kutambua kwamba miongoni mwa takeaways kwa leo
ni tu kabisa mwanzo wa mchakato,
ya kupata starehe na kitu kama hujambo dunia.
Hakika, wengi wa nini tulivyofanya leo hakika si kuzama katika super haraka.
Na itachukua baadhi muda, na baadhi ya mazoezi.
Na ni tabia mbaya, utakuwa kutatua ya kutaka kugonga keyboard yako
au yell saa screen.
Na wote wa hiyo ni sawa.
Ingawa, pengine jaribu kufanya hivyo katika maktaba sana.
>> Na hatimaye, utasikia kuwa na uwezo ingawa, kuanza
kuona chati, katika kanuni nzuri kwamba umefanya imeandikwa na katika makosa
kwamba kiunda.
Na mengi kama mchakato wa kuwa na TF au CA ni kama,
itabidi kuanza kupata bora na bora katika kuona chati hizo,
na kutatua tu yako matatizo mwenyewe hatimaye.
Wakati huo huo, kutakuwa na mengi mmoja wetu kukopesha wewe msaada, na kupata wewe
kwa njia hii.
Na katika kuandika-ups kwa matatizo yote ya
je kuongozwa kwa njia ya amri zote za
kwamba mimi bila ya shaka tunajua kutoka mazoezi mengi kwa sasa,
lakini anaweza kuwa flown juu ya kichwa ya mtu kwa sasa.
Na kwamba ni kabisa faini.
>> Lakini, hatimaye, wewe kwenda kabla ya kuanza kuona chati kuibuka.
Na mara moja kupata zamani wote wa maelezo kijinga, kama mabano,
na curly braces, na nusu colons, na mambo, kusema ukweli,
kwamba si wakati wote kielimu ya kuvutia.
Na si lengo la kuchukua darasa wowote utangulizi.
Ni mawazo kwamba ni kwenda jambo.
>> Ni tanzi, na masharti, na kazi,
na kwa nguvu zaidi uchukuaji, na factoring wa kanuni,
na kubuni nzuri, na mema style, na hatimaye usahihi
ya kanuni yako, hiyo ni hatimaye kwenda suala hilo zaidi.
Hivyo wiki ijayo, sisi kuchukua hizi mawazo ambayo sisi kwanza kuona katika Scratch
na sasa kutafsiriwa C. Na tutaweza kuanza
kuanzisha ya kwanza ya kozi ya ulimwengu wa kweli nyanja.
>> Tutaweza kuzingatia ulimwengu wa usalama, na hasa zaidi cryptography,
sanaa ya scrambling habari.
Na kati ya kwanza matatizo wewe mwenyewe
kupata kuandika zaidi kucheza na baadhi ya syntax
na kutatua baadhi mantiki matatizo, hatimaye kabla ya muda mrefu,
ni kwa kweli kinyang'anyiro, au encrypt, na hatimaye decrypt habari.
Na kila kitu ambacho tumefanya leo, mapenzi haki ya chini
ngazi ya juu, ni kwenda tu kuruhusu sisi kuchukua moja, na moja,
na hatua moja zaidi juu kuelekea kuandika kanuni ya kuvutia zaidi bado.
>> Hivyo zaidi juu ya kwamba wiki ijayo.
>> [VIDEO avspelning]
>> -Nini Unaweza kuniambia kuhusu mara ya mwisho kumwona?
-Nini Naweza kusema, kweli?
I mean, ilikuwa ni kama nyingine yoyote kabla ya uzalishaji mazoezi,
isipokuwa kulikuwa na kitu alisema mwishoni sana kwamba kukwama pamoja nami.
>> -Hii Ilikuwa CS50.
>> -Kwamba Ni kukata kila mtu, kazi kubwa juu ya mazoezi.
>> -Kwamba Ya chakula cha mchana?
>> -Yeah, Wewe na mimi siwezi kunyakua sandwich katika kidogo.
Napenda tu kuwahoji na David kweli haraka.
Daudi?
>> [MWISHO avspelning]