[Powered by Google Translate] DAVID J. Malan: zote haki, hii ni CS50 na hii ni
mwisho wa Wiki 1, hivyo utafiti kadi ni katika na jumla ya idadi ya
wanafunzi kuwa una mwaka huu ni 745.
Na sisi ni hivyo furaha kuwa na hivyo wengi wenu katika kozi
hii muhula, lakini hata kama kweli hii ni kubwa,
kutambua kwamba ni mambo hayo kama chakula cha mchana Ijumaa, kama
masaa ya ofisi, sehemu 15-mtu, na hivyo nje kwamba
ni kweli maana ya kujenga hii ionekane zaidi
mazingira.
Hivyo hata ingawa tunaweza kukusanya mara moja au mbili kwa wiki, hapa katika
Sanders, tunajua kwamba sehemu kubwa ya uzoefu wako katika kozi hii
itakuwa sana kuwa mikono-juu ya pamoja ya wanafunzi wako
na wafanyakazi kufundisha.
>> Hivyo hapa sisi kwenda, Fall 2012.
Hivyo kukumbuka kuwa wakati wa mwisho tuliishia kwenye note ya
kutokuwa sahihi, kuzungumza juu ya uwakilishi wa idadi.
Na sisi inaonekana katika moja ya kushindwa kwamba kilichotokea, katika
ulimwengu halisi, wakati alikuja kutokuelewana
jinsi ya kompyuta kazi.
Naam, leo tutaweza kupitia upya mwingine mmoja wa wale mawazo kama
vizuri kama kuendelea majadiliano yetu ya mteja CS50
na C na nini maana yake kwa kweli kwa mpango.
Lakini kwanza, michache tu ya matangazo kimbunga.
>> Sehemu kuanza Jumapili hii, na wiki ya kwanza daima ni
kidogo ya kuanza haraka, kwa sababu sisi tu got katika
sehemu yako fomu.
Sisi ni kufanya sawa, sasa, pamoja na wenzake mafundisho, sasa
kwamba wao kujua ratiba yao, hivyo sisi ni lengo, kwa
Jumamosi asubuhi, kufuatilia na wewe kwa sehemu yako
zoezi na TF.
Kutambua kwamba wao itabidi kuanza kesho, Jumapili
au Jumatatu au Jumanne.
Na kisha sisi mabadiliko ya malazi ya sehemu kama yanavyojitokeza
katika siku zijazo.
Ofisi ya masaa, wakati huo huo, ni, tena, usiku wa leo, 08:00 hadi 11, katika
Annenberg, kama vile kesho usiku.
Hata ingawa seti tatizo ni ujumla kutokana Alhamisi
saa sita mchana, utambue kuwa hadi tano marehemu siku ya kutumia,
hivyo upatikanaji wa masaa ya ofisi Alhamisi ikiwa
wewe fedha katika moja ya siku hizo marehemu na hivyo, kuwasilisha
kitu juu ya Ijumaa.
Hebu zinaonyesha kwamba Scratch ni miongoni mwa furaha zaidi, miongoni mwa
Asili muhimu zaidi tatizo seti.
Na napenda hutegemea kwenye siku hizo marehemu, kimkakati, tu
kwa ajili ya baadaye katika muhula wakati maisha huanza kupata njia
na midterms na madarasa mengine.
Tatizo Set 1, wakati huo huo, itakuwa posted kwenye kozi ya
Tovuti hii ya Ijumaa, kama itakuwa katika kutembea mwendo wa
kwa njia ya video, ambayo itakuwa saa 2:30 zingine juu ya Ijumaa
na kisha posted online kwa siku ya pili.
>> Hivyo sisi kumalizika Jumatatu.
Nataka - kweli, mmoja kumbuka hapa.
Kwa sababu madarasa - kwa sababu Sanders haina hasa mikopo
yenyewe kwa kawaida & Q na kurudi vizuri sana, sisi ni
kwenda kujaribu kitu kidogo mpya mwaka huu, ambapo
kama wewe si vizuri kuinua mkono wako au wewe tu
Na wala kunyanyua mkono wako katika chumba kama hii,
tunakwenda kuwa na baadhi ya wenzake mafundisho na CAS
Manning cs50.net/discuss wakati mihadhara.
Hivyo kama una swali kwa sababu nilikuwa kabisa
wazi kuhusu kitu au wewe ni curious kuhusu baadhi
mada, jaribu posting huko.
Tag ni pamoja na studio ya Qur'ani, na tutaweza kufanya kazi nzuri
leo na wiki ijayo - we'll kujaribu hii nje - kwa shamba hilo
aidha kielektroniki, online, au kama anahisi kama inavyopaswa
kweli kulishughulikia sw masse, mmoja wa wenzake mafundisho au
CAS itakuwa kuinua mikono yao na kuuliza
anonymously kwa niaba yako.
Hivyo tutaweza kutoa hii ya kujaribu na kuona jinsi vizuri kazi hii.
Lakini, kwa njia zote, kuendelea kuinua mikono kama ungependa.
>> Hivyo wakati wa mwisho sisi umebaini kuwa 10% au moja ya kumi si, katika
kweli, 0.1, kama mlivyofundishwa miaka mingi iliyopita.
Ni kwa kweli, thamani kama hii.
Lakini si kwamba kweli kabisa, sawa?
Sisi tu hii kikwazo katika kompyuta ambapo, kama wewe
tu kuwa na kiasi kidogo cha kumbukumbu, RAM, au zaidi
hasa bits, vizuri, kuna tu idadi finite
wa mambo unaweza kuwakilisha.
Kwa mfano, kama tuna idadi ya sifuri, na tunataka
kuwakilisha katika binary, kwa kutumia bits nane, ambapo kidogo,
tena, ni zero au moja, tupate
kuiwakilisha kama 00,000,000.
Na kwamba ni kidogo unnecessarily verbose.
Kama ilivyo katika mfumo decimal katika ulimwengu wa kweli,
ujumla, kama unataka kuandika 123 idadi, sisi
binadamu pengine wala kuandika 00000123 hata ingawa,
functionally, hiyo ni halisi idadi sawa.
Sisi tone tu zeros kuongoza, hivyo kusema.
>> Katika binary, tunaweza kufanya hivyo.
Binary na sifuri, sifuri na binary ni sifuri.
Unahitaji tu kidogo moja.
Lakini tena, kitengo ya kawaida ya kipimo katika ulimwengu
wa kompyuta ni ka, bits nane.
Kwa sababu tu moja kidogo, pretty maana.
Nane bits, si sana muhimu, lakini angalau ni zaidi
muhimu zaidi kuliko kitengo moja ya kipimo.
Hivyo, pamoja na bits nane, tutaweza kawaida kuwakilisha binary.
Hivyo hapa sisi kuwa na idadi ya sifuri, moja, mbili, na kisha, kama
Nate alivyofanya katika video yetu ya mwisho Jumatano, tunaweza kuendelea
kuhesabu hadi saba, hadi nane.
Na kisha kama sisi kutumia bits zaidi na zaidi, sisi
unaweza kuhesabu hadi infinity.
Lakini kama una idadi finite ya bits hizi, kama ni
kesi katika mfumo kompyuta yoyote, au hata kombora
mfumo, vizuri, hakika wewe tu
finite kiasi cha usahihi.
Hivyo kama unataka kuwakilisha idadi kama 0.1, vizuri,
kompyuta ina kuchukua na kuchagua.
Na kama ni tu ina idadi finite ya idadi inaweza
kuwakilisha, inaweza kuja karibu na 0.1 kwa ajili yenu, lakini haiwezi
lazima kukupa hasa thamani kwamba unataka.
Na hii ni moja tu ya changamoto za kompyuta,
chini ya Hood, nashiriki.
>> Kama sisi kusonga mbele katika muhula, hizi ngazi ya chini
maelezo pungua sana ya kuvutia, lakini kwa hakika
maombi ya mawazo haya yanaweza kuwa na baadhi ya dunia halisi
ramifications.
Moja ni fun kidogo.
Jinsi wengi umeona ajabu movie Ofisi Space?
Kama una si, hiyo ni unofficial yako
homework kwa wiki.
Lakini katika Space Ofisi, wenzake katika movie kwamba kuchukua
faida ya usahihi wazo hili, lakini kwa kweli aliiba
ni kutoka mwingine movie kwamba unaweza kuwa na
kuonekana, hata kabla ya miaka.
Hivyo basi mimi kukupa sekunde chache ya trailer hii kutoka
hii movie ajabu na hii ni mengi sana
kimasomo husika.
>> [Ina MOVIE]
Kwa kweli mimi nina kuwa kukuzwa.
Mimi unaweza mpango virusi kwamba mpasuko kwamba
mahali mbali muda kubwa.
Naam, jinsi gani kazi?
Kila wakati kuna shughuli benki ambapo riba ni
computed, kuna maelfu siku, kompyuta inaishia
na haya FRACTIONS ya asilimia.
Lakini mimi si kwenda kufanya kitu chochote kinyume cha sheria.
Haramu? Samir, hii ya Kaskazini ni.
Una kuapa kwa Mungu.
Kama hakuna mtu anajua kuhusu jambo hili lakini sisi, wote haki? Familia, hakuna
rafiki wa kike, hakuna.
[Inaudible].
Usijali, mtu, mimi si kumwambia mtu yeyote ama.
[MOVIE MWISHO]
>> Haki zote, hivyo labda nimeona hii movie bora kuliko wengi
watu hapa, lakini katika hali yoyote, virusi kwamba walikuwa
kujaribu kujenga -
na katika sinema, wakati wowote wao d kuwaita kitu virusi,
ni ujumla si kweli virusi.
Ni tu mpango kwamba mtu aliandika kufanya kitu fulani.
Na katika kesi hii, guys walikuwa wanajaribu kuandika mpango
kwamba alichukua faida ya kampuni yao iitwayo Innotech ya
kompyuta mfumo, ambapo kompyuta, pia, hata wakati
huja kwa fedha, unaweza si lazima
kuwakilisha fedha usahihi.
Hivyo hata ingawa unaweza kuwa na $ 0.10 katika akaunti yako ya benki,
0.10, vizuri, kompyuta ili kweli kufikiria kuwa una
hii senti nyingi katika akaunti yako ya benki.
Na hivyo ni nini hawa guys walikuwa anayetaka kufanya - na wao
aliiba wazo, zinageuka kutoka Superman III, ambapo
Richard Pryor waliwafanyia - wao walikuwa kimsingi
kuandika mipango kutamani kuchukua yote ya trailing
idadi, aina ya vidogo, vidogo FRACTIONS, vidogo ya
pennies, na wale siphoning mbali hivyo kuwa binadamu tu
mawazo, oh, ni tu $ 0.10 huko, lakini wale wote
trailing idadi hatimaye kuongeza up.
Hivyo wazo ajabu na backfired hilariously katika kuwa
Hasa filamu.
>> Lakini katika ulimwengu wa kweli, pia, kuna mengi zaidi kuhusu
matokeo ya aina hii ya mambo.
Na moja ya sababu ya kupiga mbizi katika uwanja wa kompyuta
sayansi ni, tena, applicability yake si kwa
uhandisi sayansi peke yake, bali tu kwa
mashamba mengine pia.
Hivyo hii ni kuangalia chini lighthearted ya kile kinachoweza kwenda vibaya, lakini
pia ni kabisa jicho ufunguzi, nadhani, linapokuja
kuelewa hasa jinsi omnipresent teknolojia kama
kompyuta na programu au siku hizi,
katika fomu ya programu.
Hivyo hii clip pili ni sita tu kuhusu dakika, inaendelea
ambapo sisi kushoto mbali wakati wa mwisho, lakini inaruhusu sisi kuangalia kidogo
zaidi katika kina katika moja vile ya masuala haya.
Hebu ruka mbele ambapo sisi kushoto mbali,
ambayo ilikuwa haki hapa.
Na tuna sehemu mbili wa mbili, kwa dakika sita hapa.
>> [PLAY MOVIE]
Wanakumbana kisasa roketi teknolojia.
Katika 1991, pamoja na mwanzo wa Vita ya Ghuba ya kwanza, Patriot
kombora uzoefu aina sawa ya
idadi uongofu tatizo.
Na kama matokeo, watu 20, 20 American askari, waliuawa
na juu ya 100 wengine walijeruhiwa, wakati Patriot, ambayo ilitakiwa
na kulinda dhidi ya Scuds zinazoingia,
alishindwa kwa moto kombora.
>> Wakati Iraq walivamia Kuwait na Marekani ilizindua Jangwa
Dhoruba katika 1991 mapema, Patriot kombora betri walikuwa
uliotumika kulinda Saudi Arabia na Israeli kutoka Iraq
Scud kombora mashambulizi.
Patriot ni Marekani kati-mbalimbali uso-kwa-hewa mfumo,
viwandani na kampuni Raytheon.
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 high ambayo ina
vipande ya kuzunguka.
casing ya warhead ni iliyoundwa na kutenda kama buckshot.
makombora ni kufanyika nne kwa kila chombo na ni
kusafirishwa kwa Trailer nusu.
>> Patriot kupambana kombora mfumo inakwenda nyuma angalau kwa
Miaka 20 sasa.
Ni mara awali iliyoundwa kama kombora hewa ulinzi kwa
risasi chini ndege ya adui, katika Vita ya kwanza ya Ghuba.
Wakati vita kwamba alikuja pamoja, Jeshi alitaka kuitumia kwa risasi
chini Scuds, si ndege.
Air Force Iraq haikuwa hivyo mengi ya tatizo, lakini Jeshi
alikuwa na wasiwasi kuhusu Scuds.
Na hivyo walijaribu kuboresha Patriot.
Intercepting kombora adui kusafiri saa Mach 5 alikuwa anaenda
ni changamoto ya kutosha.
Lakini wakati Patriot alikimbizwa katika huduma, Jeshi
hakuwa na ufahamu wa muundo wa Iraq kwamba alifanya yao
Scuds karibu haiwezekani hit.
>> Kilichotokea ni kwamba walikuwa Scuds
kuja katika walikuwa imara.
Walikuwa tikisika.
Sababu ya hayo ni raia wa Iraq, ili kupata 600
kilomita nje ya kombora kilomita 300 mbalimbali, alichukua
uzito nje ya warhead mbele na
alifanya warhead nyepesi.
Hivyo sasa Patriot ya kujaribu kuja katika Scud, na zaidi ya
wakati, idadi kubwa ya muda, ingekuwa
tu ya kuruka kwa Scud.
Mara tu mfumo wa Patriot waendeshaji alitambua Patriot
amekosa lengo lake, wao detonated warhead Patriot.
Ili kuepuka majeruhi iwezekanavyo, aliruhusiwa
kuanguka chini.
Hiyo ilikuwa nini watu wengi aliona, kama fireballs kubwa katika anga,
na kutoeleweka kama intercepts ya warheads Scud.
>> Pamoja na kwamba, katika anga la usiku, Patriots alionekana kuwa
mafanikio kuharibiwa Scuds, saa Dhahran, kunaweza kuwa hakuna
makosa kuhusu utendaji wake.
Kuna, rada Patriot mfumo wa waliopotea track ya
zinazoingia Scud na kamwe ilizindua kutokana
kwa flaw programu.
Ilikuwa Israel ambao kwanza aligundua kwamba tena
mfumo ilikuwa juu, kubwa zaidi iliyopo wakati akawa,
kutokana na saa iliyoingia katika mfumo wa kompyuta wa.
Kuhusu wiki mbili kabla ya janga katika Dhahran,
Israel taarifa kwa Wizara ya Ulinzi ya kwamba
mfumo alikuwa kupoteza muda.
Baada ya masaa nane ya mbio, waligundua kuwa,
mfumo alikuwa kuwa noticeably chini sahihi.
Wizara ya Ulinzi alijibu kwa kuwaambia yote ya
Betri Patriot na si kuondoka mifumo
kwa muda mrefu.
Wao kamwe alisema nini muda mrefu alikuwa - masaa 8, 10
masaa, masaa 1,000.
Hakuna aliyejua.
>> Betri Patriot stationed katika kambi ya saa Dhahran
na ndani yake saa kiujanja alikuwa juu ya zaidi ya masaa 100 juu ya
usiku wa Februari 25.
Ni msisimko huo kwa usahihi ya juu ya kumi ya pili.
Sasa ya kumi ya pili ni idadi 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.
Tatu Mtu hawezi kuwa walionyesha katika decimal, hasa.
Moja ya tatu ni 0.333 kinachoendelea kwa infinity.
Hakuna njia ya kufanya hivyo kwa usahihi kabisa katika decimal.
Hiyo hasa aina moja ya tatizo kwamba kilichotokea katika
Patriot.
tena mfumo mbio, mbaya kosa wakati akawa.
Baada ya masaa 100 ya operesheni, hitilafu katika wakati ilikuwa tu
theluthi moja ya pili.
Lakini katika suala la kulenga kombora kusafiri saa Mach 5,
ni matokeo ya makosa ya kufuatilia zaidi ya mita 600.
Itakuwa kosa mbaya kwa askari katika Dhahran.
>> Ni nini kilichotokea uzinduzi Scud alikuwa wanaona kwa onyo mapema
satelaiti na walijua ya kwamba Scud alikuwa anakuja katika zao
ujumla mwelekeo.
Hawakujua ambapo alikuwa anakuja.
Ilikuwa sasa hadi sehemu ya rada ya Patriot
mfumo, na kutetea Dhahran, na Machapisho na kuweka wimbo wa
zinazoingia adui kombora.
rada ilikuwa smart sana.
Wewe ingekuwa kweli kufuatilia nafasi ya Scud na kisha
kutabiri ambapo pengine itakuwa wakati ujao
rada alimtuma Pulse nje.
Hiyo ilikuwa inaitwa lango mbalimbali.
Basi, mara moja anaamua Patriot muda wa kutosha kupita kwenda
nyuma na kuangalia mahali ijayo kwa ajili ya hii wanaona
kitu, unaendelea nyuma.
Hivyo linapokuja akarudi mahali makosa, basi anaona hakuna
kupinga, na anaamua kwamba kulikuwa hakuna kitu.
Ilikuwa kugundua uongo na matone kufuatilia.
>> Scud zinazoingia kutoweka kutoka screen rada.
Na sekunde baadaye, slammed katika ngome ya jeshi. Scud
kuuawa 28 na alikuwa mmoja wa mwisho fired wakati
kwanza Vita ya Ghuba.
Kusikitisha, programu updated aliwasili katika Dhahran
siku iliyofuata.
Na flaw programu amekuwa fasta, kufunga sura moja katika
historia ya matatizo ya kombora Patriot.
Wazalendo ni kweli kifupi kwa Tracking "phased Array
Intercept ya Lugha. "
>> Haki ya wote, hivyo matokeo mengi zaidi ya huzuni kabisa
kuelewa dunia hii.
Na takeaway, kwa kweli, kutoka katika filamu ni kwamba ufumbuzi
kulikuwa reboot kombora yako mfumo wa ulinzi
kila mara moja kwa wakati.
Na hivyo tena, moja ya malengo ya kozi hii, hakika
juu ya wadogo mnyenyekevu zaidi kuliko maombi hayo, ni kwa
kweli wazi kila mtu macho hasa jinsi ya kwenda juu
kufanya mashine kufanya nini unataka kufanya na jinsi ya kwenda
juu ya kufanya kwamba usahihi, wakati njiani kufanya hivyo
vizuri, elegantly, na kadhalika.
Na hivyo leo, hebu tuzame ndani ya kidogo zaidi ya hii, lakini
hivyo kwamba sisi si kwenda kwa haraka sana, hasa kwa wale chini
starehe, lakini pia ili tuweze kuhifadhi na maslahi ya
wale vizuri zaidi, hebu haraka tu kuanza na kidogo
ya recap ya baadhi ya mawazo haya.
Na tena, kuuliza mbali, wote katika mtu au online, kama una
maswali ili tuweze kuweka kila mtu juu ya ukurasa huo.
>> Hivyo Appliance CS50, haraka hatua nyuma, ni
nini, kwa maneno yako mwenyewe?
Ni sawa kama una sijui nini maneno hayo inaweza kuwa bado.
[Inaudible]
Sawa, hivyo interface zima kwa -
kwamba sisi wote kushiriki.
Kabisa.
Hivyo tunaweza, kwa mfano, kukuambia kwenda baadhi
tovuti, kupakua programu hii kwa ajili ya Mac OS.
Shusha hii programu ya Windows, configure katika
njia hii na kwamba.
Lakini ukweli ni basi sisi kukimbia katika kiufundi wasiohesabika
kuunga mkono masuala.
Na pia siku hizi, mengi ya nini kinafanyika server upande,
katika ulimwengu wa kompyuta, hasa linapokuja
maendeleo ya mtandao na mtandao maombi ya msingi, ni kweli
mara nyingi kabisa kufanyika kwenye kompyuta Unix au Linux, kinyume na
Macs au Windows persondatorer.
>> Hivyo kati ya upsides, basi, ya kutumia kitu kinachoitwa
CS50 Appliance ni wote tutaweza kuwa na mazingira sawa.
Hivyo kila mtu ni katika ukurasa huo huo bila kujali vifaa wewe
alikuja na chuo lakini pia itakuwa dabbling katika hasa
mazingira sawa kwamba wewe utakuwa kutumia kuelekea
mwisho wa muhula na pia kwa ajili ya maendeleo ya mtandao, kama vile katika
baadaye kwa ajili ya maombi ya ulimwengu halisi yake.
Hivyo zaidi concretely, Appliance CS50 ni kipande bure ya
programu ambayo inaruhusu wewe kukimbia mwingine mfumo wa uendeshaji,
Linux, katika kesi hii, kwenye kompyuta yako mwenyewe, katika dirisha.
Sasa huwezi download appliance.
Unahitaji mpango ambayo kucheza au kukimbia appliance.
Na kipande ile ya programu ni ujumla inayojulikana kama
hypervisor.
Hypervisors kuja katika mfumo wa bidhaa kama VMware,
Virtual Box, uwiano.
Kila aina ya makampuni kufanya programu, za bure na
kibiashara, sawa.
Nini utaona katika Tatizo Set 1 ni maelekezo ya jinsi ya
kupata programu huru na ambayo kwa
kukimbia Appliance CS50.
Na mara tu kufanya, itabidi, katika dirisha juu ya Mac au PC yako,
mazingira desktop kwamba inaonekana kabisa kama hii, ambapo
ina Start menu-kama kitu katika
chini kushoto kona.
Ina folder Home, au directory Nyumbani, katika upande wa juu kushoto
huko, takataka unaweza, na kadhalika.
Hivyo tutaweza tease mbali maelezo muhimu kama sisi kwenda.
>> Lakini sasa hebu kuanza kupiga mbizi katika C.
Hivyo C ni lugha ya programu hii, sawa katika roho kwa
Scratch, lakini mbali kidogo graphical, lakini hazijaingizwa mbali
nguvu zaidi mara moja kupata savvy na hayo.
Hivyo katika C, sisi kuandika mipango kwa kuandika chanzo code, ambayo ni
hii syntax Kiingereza-kama, sawa na soksi
maandamano ya kwamba sisi alivyofanya mara ya mwisho kwamba utapata
kueleza mwenyewe uungwana just, ikiwa
arcanely, kwa kompyuta.
>> Hivyo ni aina gani ya bidhaa programu gani kwa kweli wanahitaji
kuandika katika lugha ya programu kama C, kwa kuzingatia wetu
mazungumzo juu ya Jumatatu?
[Inaudible]
OK, wewe tu haja ya mhariri wa maandishi.
Huna haja yoyote ya programu maalum
per se na kuandika mipango.
Wewe tu haja ya mhariri Nakala kama Notepad, juu ya Windows,
TextEdit ya Mac, au kitu kinachoitwa gedit, katika dunia ya
Linux, ambayo tutaweza kutumia hapa.
Na hiyo ni yake, na kuandika mipango.
>> Lakini maandishi tu nusu ya equation.
Wewe basi haja ya kukimbia kwao.
Lakini ili kuendesha programu -
huwezi kuendesha chanzo code.
Wewe badala yake kuwa kufanya nini ni ya kwanza?
Yeah.
DAVID J. Malan: Unahitaji
kukusanya yake.
Na, mtu mwingine, kuandaa chanzo code ina maana -
[Inaudible]
DAVID J. Malan: Hasa.
Kutafsiri kwa zeros na ndio.
Kwa sababu sisi wote, siku hizi, na kompyuta ambayo CPUs,
karibu wote ambao ni yaliyotolewa na kampuni iitwayo Intel, na
Intel Ndani, ina maana kuna hii ndani ya ubongo wa yako
kompyuta, inayojulikana kama CPU.
Na moja ya mambo kwamba ubongo ni kwamba hana, anajua
jinsi ya kuelewa mifumo ya zeros na ndio.
Ni anajua mfano wa bits inawakilisha Aidha, nini
mfano inawakilisha vipunguzi, nini mfano wa
bits kuwakilisha uchapishaji, na kujenga sauti ya kusikika.
>> Hivyo katika muda mfupi, CPU, pamoja na mfumo wa uendeshaji,
ambayo ni kipande cha programu kwamba anaendesha juu ya CPU,
hivyo kusema.
Pamoja, wale vipande viwili kujua jinsi ya kuendesha mipango
sisi wanadamu kuandika.
>> Hivyo kama mimi kwenda katika appliance CS50 hapa, mimi haja ya kufungua
up mhariri asilia na mimi wanaweza kupata hii
katika michache ya njia.
Naweza aidha kwenda Menu, Programming,
na kisha naweza kuchagua -
nope, si kwamba menu.
Naweza kwenda Accessories / gedit hapa kwa kufungua
Nakala yangu kidogo mhariri.
Au kwa urahisi zaidi, naweza bofya ikoni hii kidogo katika chini
mkono wa kushoto kona.
Na sasa mimi kupata hii mazingira hapa.
Ni pretty kukumbusha ya mhariri rahisi Nakala, pamoja na haki
moja au mbili tofauti.
Katika ya juu, ambapo mshale ni blinking sasa, hii ni mahali ambapo
Naweza kuanza kuandika code yangu.
Katika ya chini ni kitu hii inaitwa dirisha terminal.
Na ni aina gani ya mambo yanaweza mimi kwa hii
kinachojulikana terminal dirisha?
[Inaudible]
>> Sawa, hivyo mimi itabidi kukimbia amri.
Na baadhi ya amri sisi mbio Jumatatu walikuwa kidogo
cryptic mara ya kwanza, lakini ls kwa orodha, cd kwa saraka ya mabadiliko,
rm, kwa kuondoa.
Hivyo ni aina ya njia ya zamani-shule ya navigering yako
kompyuta, kwa kutumia tu keyboard yako na amri textual,
na si, kwa ujumla, kwa kutumia mouse.
Lakini tutaweza kuona, kabla ya muda mrefu, hii kwa kweli inatupa
kidogo nguvu zaidi na zaidi kidogo usahihi na ambayo kwa
kueleza sisi wenyewe.
Na kisha juu hapa kushoto, sisi ni kwenda tu kuona,
kama sisi kuanza kuandika programu, muhtasari kidogo ya
mpango kwamba tumekuwa yaliyoandikwa juu kushoto.
Lakini tutaweza kuona kwamba tena kabla ya muda mrefu.
>> Basi hebu kufanya kitu haki rahisi hapa.
Hebu kwanza kwenda mbele na kwenda faili, Ila, na mimi nina haki
kwenda bonyeza jharvard hapa, juu ya kushoto, na
jharvard ni, tena, jina kwa ajili ya nyumba folder yangu,
binafsi files, mimi, sasa kuwa Yohana Harvard, kama yote ya wewe
hivi karibuni kuwa Yohana Harvard katika mazingira haya.
Anacho saraka hii Home, My Documents na kadhalika,
kwamba mimi nataka kuokoa, sasa, faili hii in
Hivyo nina kwenda kwa simu yake hello.c. Kisha mimi nina kwenda
mbele na bonyeza Ila, na sasa nini mimi hapa ni tab
kuitwa hello.c, hivyo kiasi kama aina nyingine ya mhariri.
>> Hivyo sasa napenda kwenda mbele na kuanza kuandika mpango.
int kuu (utupu).
Na kisha mimi tu alifanya wakati wa mwisho, printf, kwa ajili ya magazeti formatted,
("Hello, ulimwengu!"
);.
Karibu kukamilisha.
Lakini mimi kukosa michache ya maelezo.
Ni nini kinachokosekana ya mpango huu kwamba mimi kwa kweli wanahitaji kwa
kwa kweli kukusanya?
Yeah.
[Inaudible]?
>> DAVID J. Malan: Yeah, hivyo mimi haja ya ni pamoja na kiwango
I / O maktaba.
Hivyo hii mahitaji ya kwenda juu kuu, hivyo mimi nina kwenda tu
kufanya baadhi ya chumba kwa ajili yake huko.
Na mimi naenda kufanya # pamoja .
Na taarifa ya mabano angled huko.
Na kama kando, gedit ni mtumiaji kidogo kirafiki, ikiwa
wakati mwingine utata kidogo, kwa kuwa inajaribu kusaidia yako
macho ilani nini yanaendana na nini.
Hivyo ukweli kwamba mshale wangu ni haki ya karibu na hii angled
bracket, taarifa jinsi ni mwangaza angled nyingine
bracket plus hii moja.
Na kwamba tu kuteka mawazo yangu na ukweli kwamba mimi
vina ulinganifu.
Na ulinganifu katika programu ujumla ni jambo jema.
Vile vile, kama mimi hoja yangu mshale hadi mwisho, taarifa jinsi
braces curly line up kuonyesha kwamba, ndiyo, nina moja wazi
na moja imefungwa, hivyo kusema.
>> Yote ya haki, na mimi siwezi kufanya kitu moja nyingine.
Ni muhimu si madhubuti, lakini mazoezi mazuri, kusema
kurudi 0.
Na kurudi 0 anafanya nini kwa sisi hapa?
Au kunaashiria nini?
[Inaudible]
DAVID J. Malan: Lakini ni kitu kibaya.
Na kusema ukweli ni vigumu kwa kiasi cha kwenda vibaya katika
mpango huu mfupi.
Hivyo nina tu kuwa super wazi kwamba yote ni sawa.
Mimi, binadamu, wakati mimi kukimbia katika mpango huu, mapenzi pengine kamwe
kuona kwamba 0.
Kwa ujumla, nambari hizi kuwa ni kuwa alirejea kutoka kuu
tu cha nyuma vichwa vyao kwa binadamu wakati
kitu fulani kitaenda vibaya.
Na kupata pop kidogo juu kosa akisema mfumo, moja,
mbili, tatu, au chochote idadi ilikuwa kwamba
alikuwa kweli akarudi.
Hivyo kitu kingine chochote kibaya na hili?
[Inaudible]
>> DAVID J. Malan: Hivyo hii si kiasi kosa kazi
lakini moja aesthetic.
Mimi lazima pengine kuweka katika tabia newline huko
mwisho wa kamba hii ili kwamba sisi kweli hoja cursor
mstari unaofuata, na mpango tu inaonekana kidogo prettier.
>> Hivyo sasa napenda kwenda chini kwa terminal dirisha yangu
na zoom nyuma in
Na jambo hili hapa, ni wito wa haraka.
Ni tu kuwakumbusha yangu mimi ni nani, jharvard @ appliance, ambapo
appliance ni jina la kompyuta mimi nina juu.
Katika mabano ni hii tilde, alama squiggle, ambayo
inawakilisha nini?
Watazamaji: Nyumbani directory.
DAVID J. Malan: Nyumbani directory.
Basi hiyo ni tu nukuu shorthand kwa kusema wewe ni katika
folder yako binafsi ambapo wote wa files yako kwenda kwa default.
Hivyo sasa, katika hapa, mimi unaweza aina ls kwa orodha.
Na kitu tu naona hapa wakati huu ni hello.c.
Na kwamba ni nzuri kwa sababu mimi tu aliandika hii.
>> Hivyo basi mimi kwenda mbele na kufanya kufanya hello.
Na taarifa mimi nina kuandika kufanya hello.c.
Badala yake, mimi nina tu kuandika jina ya msingi ya SVG, hello.
Na kufanya, kama tuliona juu ya Jumatatu, itakuwa tu ya kudai kuwa nataka
C. Faili.
Hivyo sasa nimekuwa typed kufanya hello.
Sasa naona hii amri uungwana muda mrefu na itaendelea
kuona hii tena na tena.
Lakini kwa kuwa wazi, Clang, neno kwamba tu alionekana,
hiyo ni mkusanyaji halisi.
Kufanya ni tu shirika kujenga.
Ni tu zaidi user friendly mpango kwamba anaokoa mimi, katika
muda mrefu kukimbia, kutoka kuwa na aina nje incredibly tedious muda mrefu
amri kama hiyo moja.
Hivyo unaweza kukimbia Clang manually.
Unaweza aina yote ya kwamba manually.
Tu anapata tedious sana.
Na hivyo kufanya ni tu mpango kwamba simplifies maisha yetu na
anaendesha amri ngumu zaidi kwa ajili yetu.
>> Haki ya wote, hivyo sasa nini faili lazima nina
katika saraka yangu ya sasa?
Si tu hello.c, lakini pia hello.
Hivyo kama nataka kukimbia hello, wanakumbuka kwamba nasema dot slash,
ambapo dot njia kwenda katika folder sasa, popote
ni, na kisha kukimbia programu inayoitwa hello, na kwa kweli, sasa,
Nina dunia hello.
Haki zote, maswali yoyote juu ya workflow au syntax ya
nini sisi tu alivyofanya?
>> Haki zote, hivyo hebu kuchukua mambo juu notch tena.
Hivyo hii ilikuwa aghali kwa kuandika tu mpango kwamba tu
milele anasema hello, ulimwengu.
Hivyo sisi iliyopita yake, juu ya Jumatatu, kusema, hello, Daudi.
Ni kidogo zaidi ya binafsi, lakini tu kama ngumu kama coded
kwanza version.
Hivyo si yote ya kulazimisha.
Lakini kuna lipo, katika C, kazi ya shaka badala ya
magazeti, kazi ambayo basi kupata mtumiaji pembejeo.
Na njia ya sisi alifanya hivyo, siku nyingine, ilikuwa kama ifuatavyo.
Kabla ya mimi kwa kweli magazeti nje kitu, mimi kwanza got
kitu kutoka kwa mtumiaji.
Hivyo basi mimi kufanya hii tena.
>> Kamba s, ambapo s ni jina tu kiholela, hapa, kwa
kamba, sawa GetString.
Hivyo kile GetString?
Ni wazi anapata kamba, msingi juu ya jina lake.
Lakini ni nini, zaidi kitaalam?
Ni kazi.
Hivyo ni kazi ambayo haina kuja na C per se.
CS50 wafanyakazi aliandika hii.
Na hivyo kwa kutumia hii, huwezi tu ni pamoja na stdio.h,
Unahitaji pia ni pamoja na nini?
Yeah.
Hivyo cs50.h, ambayo ni tu faili sisi aliandika baadhi ya miaka iliyopita.
Sisi imewekwa juu ya appliance kwa wewe pamoja
wote wa files standard.
Na hivyo katika wiki hizi chache kwanza wa darasa, tutaweza kutumia
hii tu kurahisisha mchakato wa kufanya msingi sana
mambo kama kupata mtumiaji pembejeo.
Kwa sababu kama tutaweza kuona katika wiki chache, kupata pembejeo mtumiaji katika
Lugha kama C ni kweli kushangaza tata,
hasa kwa sababu huna kujua mapema, kwa kawaida, jinsi
mambo mengi mtumiaji anaenda aina in
Na wakati huna kujua ni kiasi gani data kutarajia, huna
kujua ni kiasi gani kumbukumbu kutenga.
Na kama kweli wana mtumiaji adversarial ambaye ni kujaribu
hack katika mfumo wako, ajali kompyuta yako, vizuri,
ujumla njia ya kwanza ya mashambulizi ni, kama mimi alifanya juu ya
Jumatatu, aina zima mrefu mlolongo wa wahusika random,
hit Enter, na kuona nini mapumziko.
Kwa sababu kwa ujumla, kama mapumziko mpango, anadokeza kwamba
flaw usalama, uwezekano.
Ni hakika anadokeza wewe, programu, baada ya kufanya
makosa, lakini zaidi hatari, unaweza kuwa alifanya
yanayohusiana na usalama makosa, na kwa ujumla tutaweza kuona kwamba
hiyo ni jinsi mashine ni kuathirika kwa siku hii, wote
katika dunia ya mtandao na programu katika
amri line, kama hii.
>> Wote haki.
Hivyo string s sawa GetString.
Hivyo zaidi concretely sasa, nini mstari 6 kufanya hapa?
Hivyo kazi juu ya haki anapata kamba,
inachukua jinsi hoja nyingi?
Sawa.
Hivyo hakuna.
sanity kidogo kuangalia.
hoja, tena, ni tu pembejeo ya kazi ya kubadilisha
default yake tabia katika baadhi ya njia.
Lakini katika kesi hii, mimi sitaki kubadilisha
tabia ya GetString.
Mimi nilitaka kupata kamba.
Basi, mimi kuweka kitu katika mabano, na kisha mimi kuweka
semicolon demarking mwisho wa mstari wa kanuni.
Sasa, alama ya usawa haina maana sawa, per se.
Ina maana kazi, ambayo ina maana ya kuweka chochote anapata
outputted ndani ya haki ya chochote ni juu ya kushoto.
>> Hivyo upande wa kushoto, sisi kusema kwamba sisi wametangaza
kamba kuitwa s.
Na hasa zaidi, tumekuwa zilizotengwa kumbukumbu ndani ya
ambayo tutaweza kuweka bits kwamba inawakilisha mlolongo wa
wahusika.
Lakini kwa leo, tumetenga
au alitangaza kamba.
Wote haki.
Hivyo sasa, mara moja mimi tumefanya hii, nataka kuziba kwa thamani ya
s, si thamani ya Daudi.
Hivyo hii ni makosa kwa nini?
Hivyo hii ni haki halisi ni vigumu-coded.
Ni kusema "hello, s," ambayo si nini nataka.
Hivyo siwezi kufanya hivyo.
ishara asilimia ni kishika, lakini sasa mimi haja ya
kupita katika magazeti hoja ya pili.
Kumbuka kwamba hoja ya utendaji ni waliojitenga na
koma, hivyo koma ijayo hapa mimi kuweka baada ya hii ya barua.
Na katika muktadha huu sasa, s ni kutofautiana, na printf,
juu ya kupokea pembejeo hizo mbili -
kamba upande wa kushoto na kutofautiana jina la juu ya haki -
itakuwa kuziba mwisho ndani ya zamani kwa ajili yetu, na
tu magazeti nje nzuri nzuri zenye string
chochote ni kwamba sisi typed in
>> Basi hebu jaribu hii.
Kwenda mbele na zoom nje, nyuma
terminal dirisha yangu.
Zoom katika chini hapa.
Retype kufanya hello.
Clang inaonekana kuwa rerun.
Mimi naenda aina /. Hello, Ingiza.
Kitu inaonekana kuwa kinachotokea bado, lakini ni wakati huu wa haraka
kwamba naweza andika kitu kama Nate, Ingieni, na sasa tuna
Hello, Nate.
Na siwezi kufanya hivyo tena na Rob, na kadhalika.
Hivyo hopefully sasa mpango huu ni tabia kama mimi na nia.
>> Sasa, si kwamba mtumiaji yote ya kirafiki.
Nina wazo nini kuwa inatarajiwa yangu.
Hivyo tunaweza shaka safi hii juu kidogo.
Hebu nirejee nyuma hapa juu, na badala ya mbizi katika na
kuuliza mtumiaji kwa kamba, basi mimi kupanga kuwaambia
user nini mimi kutarajia.
Hivyo printf ("Ingiza uzi:"
);
Hivyo hakuna vigezo hapa.
Ishara asilimia No.
Rahisi tu Kiingereza maneno.
Hebu sasa kwenda chini hapa na rerun mpango wangu.
Lakini kitu inaonekana kuwa iliyopita.
Kwa nini?
Nina recompile yake.
Hivyo kosa rahisi kutengeneza.
Lakini una si tu kuokoa faili lakini
recompile mpango.
Na hivyo kama mimi kuendesha upya kufanya hello, sasa Clang anaendesha.
Sasa siwezi kukimbia /. Hello. Na sasa naona "Ingiza uzi:".
Sawa.
Sasa ni zaidi kidogo user-kirafiki.
Nate, Ingieni, hello, Nate.
>> Naam, hebu jaribu hii tena na kuanza kufikiri
kuhusu kona kesi.
Hivyo kama katika Scratch, wewe ni moyo au ni kuwa
moyo katika spec kwa aina ya kufikiri juu ya nini inaweza kwenda
makosa kama huna wanatarajia kila kitu mtumiaji anaweza kufanya.
Bugs, kwa hiyo, ili zichukuliwe.
Basi ingieni string -
nini kesi kona hapa?
Nini hali ambayo mimi, programu, wanaweza kuwa na
kutarajia?
Yeah.
Sawa.
Basi nini kama mimi aina kwa idadi kama hii?
Wote haki.
Hivyo bado kazi.
Gramatically haina mantiki.
Lakini angalau mpango kazi.
>> Nini kesi nyingine pembeni?
Kitu sikuweza kutarajia.
Yeah?
Sawa.
Hivyo tunaweza kufanya kitu kama idadi kweli, kweli kubwa.
Basi hebu kufanya hivyo hapa.
Hebu zoom nje kwa ajili ya pili, napenda kuonyesha.
Hawawezi nakala na kuweka chini hapa.
Wote haki.
Hivyo siwezi nakala na kuweka katika dirisha hili terminal, hivyo tutaweza
tu simulate yake.
Hebu zoom nje, kwenda wrap.
Sitakuja kufanya hivyo kwa muda mrefu sana, kwa sababu itakuwa si
kweli kuvunja katika mpango huu.
Lakini naweza.
Kuingia.
Lakini haikuwa hivyo.
Wote haki.
Lakini ni kweli kona kesi.
Na sababu tu kwamba walijivuna vizuri, kwa hiyo kwa
kuzungumza, ni kwa sababu CS50 kazi GetString ni kweli
iliyoundwa chini ya Hood, kama tutaweza kuona katika wiki chache,
moja kwa moja kutenga zaidi na zaidi RAM, zaidi na zaidi
kumbukumbu kutoka mfumo wa uendeshaji, wakati anatambua, wow,
ve kweli typed katika kitu muda mrefu kabisa.
Sasa, hii ni kidogo ya uongo nyeupe.
Kama sisi kweli paused kwa muda kabisa na mimi typed katika
kitu kama wahusika bilioni 5 katika keyboard
hapa, au kweli hit nakala-kuweka kidogo kabisa, sisi kabisa uwezekano
inaweza kusababisha mpango kwa ajali.
Kidogo tu vigumu kuiga kwamba pamoja na finite
kiasi cha muda.
>> Nini kesi nyingine kona tunaweza kujaribu?
Yeah?
Yeah.
Hivyo kwa nini sisi kujibu chochote?
Hivyo sisi kweli kuwa na kuchukua baadhi ya hatua, kwa sababu vinginevyo
mpango kinaendelea kukaa huko blinking siku zote.
Lakini kama mimi tu hit Enter -
Sawa, sasa, bado inaonekana makosa.
Je si ajali, lakini labda sasa kuna fursa ya
kuanza kutekeleza mpango wa ukali zaidi
kwamba kweli hundi.
Na kama kamba, sentensi, neno kwamba mimi
typed katika ina urefu 0, vizuri, labda mimi lazima yell katika
mtumiaji, au kumwambia au wake kuingia string tena, ili
sisi kweli kupata kile kinachoonekana kama tabia sahihi na si
tu kamili kusimamia kwa upande wangu.
>> Swali katika nyuma?
Idadi decimal.
Hivyo tunaweza kujaribu kuwa, pia.
1.10000005.
Inaonekana kama ambayo inaenda tu kazi kweli sawa.
Na kwamba kwa kweli inatarajiwa.
Hata ingawa sisi tupate kuwa typed kwamba idadi huko, au
kubwa ya idadi ya awali, kutambua kwamba wakati sisi ni kuandika mtumiaji
pembejeo na sisi ni kutumia kazi GetString, haina
jambo kama nini mimi kuandika inaonekana kama idadi.
Kumbuka kwamba kulingana na ASCII, kila kitu juu yako
keyboard ina thamani namba ambayo yanaweza mapped
tabia, char.
Hivyo katika kesi hii, hata ingawa mimi ili aina ya namba,
kompyuta ni kwenda kufikiria hivyo, ili kuzungumza, kama kamba -
kitu ambacho inaonekana kama idadi, lakini ni
si kweli idadi.
Lakini hiyo ni kweli segue kamili, kwa sababu sasa tunaweza
kweli ya mpito kwa mipango ya kuandika kwamba
kutumia data aina nyingine.
>> Hivyo badala ya kutumia chars, au tuseme, badala ya kutumia masharti,
kutambua kwamba tuna data aina nyingine katika C kama vile katika
lugha nyingine.
Char, kama jina linavyosema, ni tu tabia moja.
kuelea ni floating kumweka thamani, na kwamba tu dhana
njia ya kusema idadi halisi - kitu ambacho hakina decimal
uhakika katika hilo na idadi ya baadhi ya kushoto na / au kulia.
int ni integer, ambayo ni idadi tu kama 123.
Na sasa zaidi linalovutia ni mambo kama mara mbili.
Nini sisi kusema mara mbili mara ya mwisho wakati?
Ni 64, haki.
Hivyo ambapo kawaida kuelea ni 32-bit -
hivyo ni hii ya muda mrefu katika kumbukumbu, inatumia zeros 32 na ndio
kuwakilisha maadili - mara mbili ni literally mara mbili, ambayo
ina maana kuwa unaweza ama kuwakilisha idadi kubwa zaidi, au
unaweza kuwakilisha idadi sahihi zaidi.
Hivyo unaweza kuwa na idadi zaidi baada ya uhakika decimal, lakini
kama wenzake alisema katika video, hata kitu rahisi
conceptually kama 1/3 haiwezi kuwakilishwa just kwa
kompyuta, kwa sababu hatimaye kukimbia nje ya bits, na
Basi unaweza tu kufanya hivyo mara nyingi .33333333, katika
ambayo uhakika wewe tu kusema mimi nina nje ya uwakilishi
nafasi, nina tu kuiita siku na kuiwakilisha
kiasi fulani imprecisely kama hiyo.
Na muda mrefu -
kijinga jina, lakini ni kwa sababu kuna data aina inayojulikana kama
muda mrefu katika C ambayo ni mara nyingi 32 coincidentally bits, kama tu
int ni 32 bits, lakini muda mrefu ni
ujumla 64 bits.
Hivyo njia tu unaweza kuwakilisha kubwa
idadi zaidi kuliko huu.
>> Wote haki.
Hivyo kama sisi kweli unataka kuanza anayewakilisha mambo, sisi
kuhitaji zaidi aina ya kisasa, na
hiyo ndiyo sababu tuna kamba.
Hivyo katika maktaba CS50, kwamba faili inayoitwa cs50.h, tumekuwa
kweli alitangaza data aina, hivyo kusema, iitwayo kamba,
lakini kamba si kweli zipo.
Hii ni mara ya pili, moja ya tabaka hizi tunakwenda peel
nyuma katika wiki moja au mbili na kutupa mbali, na kwa kweli
kuangalia chini ya Hood katika kile string kweli ni, na
jinsi gani kuwakilishwa.
Sisi ni pia kwenda kuangalia maadili Boolean.
>> Basi nini ilikuwa bool katika muktadha wa Scratch?
Ni kweli au uongo.
Hivyo ni thamani tu kwamba ni kweli au uongo, juu au mbali, 1 au
0, hata hivyo unataka kuona dunia.
Hivyo katika C, shukrani kwa maktaba CS50, ambayo kwa upande
ni pamoja na mwingine maktaba chini ya Hood, tuna
upatikanaji wa data aina hiyo iitwayo bool, ambayo itakuwa
literally kuruhusu sisi hawawajui maadili kweli au uongo kwa
mambo katika mpango.
>> Basi hebu kwenda mbele hapa na kuandika mpango kidogo kwamba
haina kitu kuwashirikisha idadi badala yake.
Hivyo basi mimi kurejea Appliance CS50, napenda kwenda mbele na
kuunda faili mpya hapa inaitwa -
hebu sema tu kitu rahisi, kama math.c.
Wote haki.
Na sasa kwenda hadi juu ya mpango wangu, mimi nina
kwenda kufanya kawaida -
# Pamoja , ili niweze kutumia
printf, int kuu (utupu) -
tutaweza kurudi, hatimaye, nini maana ya int
hapa, nini maana ya utupu hapa, lakini kwa sasa, tu kujua kwamba
una kuanza programu kama hii.
Sasa mimi nina kwenda mbele na kusema kitu kidogo
tofauti - printf ("Nipe namba:"
);.
Kisha mimi naenda kufanya int n = GetInt, kwa sababu ni
zamu nje GetInt ni kazi nyingine katika maktaba CS50
badala GetString.
Na sasa mimi naenda kufanya kitu kijinga, kama "shukrani
kwa d%, "kwa ajili ya decimal integer, na kisha n comma, na
kisha kurudi 0.
Hivyo tena, kurudi 0 hauhusiani na idadi mimi nina
kuuliza mtumiaji kwa ajili ya.
Tu kunaashiria mwishoni kwamba wote, labda, ni vizuri.
>> Hivyo basi mimi kwenda chini kwa terminal dirisha yangu hapa.
Hebu aina kufanya math, kuingia.
Na kitu kibaya.
Kufanya math hawakuwa na kazi.
Hapa ni ya kwanza ya ujumbe wetu kosa.
Kwa nini?
cryptic kidogo, lakini -
Yeah.
Hivyo cs50.h.
Hivyo tena, hasa mapema, utapata kuandika yako ya kwanza
mpango kwa pset 1 katika sehemu, katika ofisi ya masaa, na
shahiri, utakuwa ni balaa wakati mwingine mambo haya
ni kweli kusema.
Lakini utasikia kutambua haraka sana wao kuanza kuanguka
ndani ya ndoo ambapo hii moja ina maana kwamba ve kushoto mbali moja
wa ni pamoja na # ya wakati juu ya faili.
Na Clang, mkusanyaji, ni taarifa yenu ya hii na
akisema, badala fancifully, thabiti tamko la
kazi GetInt ni batili.
>> Wote haki.
Hiyo ni nini maana ya kwamba?
Ni njia tu ve implicitly alitangaza GetInt katika
hisia kwamba wewe si wazi amekiri kuwa ni.
Kupanga kutangaza int, una kufundisha
Clang kwamba ipo.
Na ufumbuzi rahisi sana kwa kuwa ni kufundisha na
ikiwa ni pamoja na faili hii nyingine, cs50.h, katika
juu ya faili yako.
Kwa sababu halisi, nini ni pamoja # haina ni inavyo Clang
pretty kiasi cha kwenda kupata faili inayoitwa cs50.h, nakala,
kuweka ni moja kwa moja ndani ya juu ya mpango wangu kwa ajili yangu,
na kisha kuwabadili source code kwa zeros na ndio.
Lakini kwamba itakuwa ni wazi kuwa tedious sana kama sisi binadamu alikuwa
kwenda kuiga na pasting hizi files kubwa wakati wote,
hivyo ni pamoja # tu anafanya yote kuwa moja kwa moja bila
muddying code yangu na maktaba ya mtu mwingine.
Na maktaba ni mwingine tu file zenye majukumu na
mambo mengine ambayo mtu mwingine ameandika, kwamba sisi ni
leveraging kwa ajili yetu wenyewe.
>> Wote haki.
Hebu jaribu tena.
Kufanya math.
Kuingia.
Nzuri.
Hivyo kwamba inaonekana kuwa na kazi.
Hivyo basi mimi sasa kukimbia math; / math..
Ingiza anitiaye idadi, 123.
Shukrani kwa 123.
Sasa hebu jaribu kesi nyingine kona.
kamba ni pretty ukarimu, kwa sababu
kamba inaweza kuwa kitu chochote.
Inaweza kuangalia kama namba, kuangalia kama
wahusika, kuangalia kama maneno.
Lakini int ni int.
Hivyo sasa kama nina mtumiaji vigumu, na ni kusema "Nipe
idadi, "nini kama mimi kujaribu kufanya kitu kama 0.1?
Naam, hiyo ni idadi, na ni thabiti na
sarufi mimi kutumika hapa, lakini chini ya Hood, mimi nina ya
Bila shaka kutumia GetInt kazi.
>> Basi hebu angalia nini kinatokea.
Kuingia, jaribu tena.
Wote haki.
Hebu kuwa vigumu na tu hit Enter tena.
Kuingia, Ingiza.
Hivyo sasa inaonekana GetInt, ambayo ni kidogo zaidi
nguvu zaidi kuliko GetString.
Sisi, wafanyakazi, kutekelezwa katika njia kwamba kama sisi taarifa vile
wewe si ametupa int - na int ni idadi decimal
zenye zeros, ndio, wawili-wawili, watatu, wane, na umri wa miaka mitano, sixes,
saba saba, eights, au nines.
Na kwamba ni.
Hakuna pointi decimal, hakuna wahusika, hakuna alama za uakifishi.
Inaonekana kwamba tuna kushirikiana.
Hivyo basi mimi kujaribu nne, tano, sita, na kwamba anapata mimi kwa kupitia.
Hivyo kweli, kuwa anal hapa, mimi lazima pengine kusema "Nipe
integer "ili kufikisha kwa mtumiaji
hasa nini mimi na nia.
>> Sasa hebu fikiria kuhusu chini ya Hood.
Sisi siyo kwenda kuangalia jinsi cs50.h ni kutekelezwa leo,
kwamba maktaba.
Lakini kama ni kuvaa akisema retry, retry, retry, nini programu
kujenga mimi labda kwa kutumia chini ya Hood kwa
kutekeleza hilo?
Hivyo tu kitanzi, haki?
Moja ya mawazo rahisi kuwa tuliona juu ya Scratch.
Forever kujenga, Rudia kujenga.
Labda, katika mpango huu, chini ya Hood, hata
ingawa Imeandikwa katika C na si scratch, ni kufanya
kitu kinachoitwa sawa na milele kama mtumiaji hana
typed katika integer, kusema retry, retry, retry, retry, hivyo
kisha hatimaye wakati sisi kufanya kupata integer, basi
kuvunja nje ya kitanzi kwamba.
>> Basi nini kazi nyingine tunaweza kutumia hapa katika maktaba CS50 wa?
Naam, aina ya wale wa dhahiri, angalau kwa kuzingatia
data aina ya kwamba sisi sasa kujua kuwepo.
Sisi kutekelezwa GetString, GetInt, lakini katika
kwanza ya wiki ya muda, unaweza pia kutumia GetFloat na
GetDouble na GetLongLong ili kupata usahihi
data aina kwamba unataka.
Kwa sababu undani muhimu hapa ni kuwa tofauti na baadhi ya lugha,
kama Chatu na Ruby, ambapo huna lazima kuwa na
kutangaza data aina ya kutofautiana -
huna kuiambia kompyuta nini aina ya mambo ya
utaenda kuweka katika variable -
katika C, una kuwa milele hivyo sahihi.
Hivyo kama unataka variable kuitwa n, chunk ya kuhifadhi
kwamba katika kesi hii hutokea kwa kuwa 32 bits na mkataba, wewe
tuwaeleze kompyuta kwamba hawa bits ni
kwenda kuhifadhi idadi -
si tabia, si kamba, si kuelea.
Na hii anwani suala sisi kwa ufanisi
mbio katika wiki ya mwisho.
Kama sisi ni kutumia zeros na idadi ndio kuwakilisha sio tu
idadi lakini Kama na Bs na Cs, jinsi katika dunia ni
kompyuta kwenda kujua kwamba muundo huu wa bits kweli
inawakilisha idadi 65, kinyume na anayewakilisha
barua A, ambayo kwa bahati, kulingana na
ASCII, kukumbuka, ilikuwa sawa na 65?
>> Hivyo aina ya data hizi kutoa muktadha wa kompyuta, hivyo
kwamba anajua kama bits hizi lazima kufasiriwa kama
int au kama kamba.
Maswali yoyote, basi, juu ya hili?
Yeah?
DAVID J. Malan: Good swali.
Kama sisi kuchukua nje stdio.h, sisi ila faili -
napenda kwenda chini kwa dirisha terminal na kukimbia kufanya math, zoom
katika na kuingia -
sasa mimi kupata kosa tofauti, kwa sababu mimi nina implicitly
wakieleza kazi sasa?
Printf.
Hivyo sasa nimekuwa umba tatizo mpya, ambao ni suluhisho
kimsingi huo.
Nahitaji kuweka kwamba nyuma.
Watazamaji: [inaudible]
DAVID J. Malan: Oh.
Hivyo kama mimi kuchukua nje -
Okay, yeah.
Hivyo kama mimi kuondoa kuingizwa kiwango I / O maktaba hadi
hapa, na kisha wewe kusema kama mimi kujikwamua printf, kupata
kuondoa ya printf?
Ndiyo.
Hii lazima kazi, kwa sababu mimi nina tena kutumia yoyote - Lo.
Je, mimi tu uongo?
Oh, sawa.
Hii si kazi kwa sababu ya hitilafu mpya sisi tu vishawishi.
Na hii ni moja ya kidogo zaidi self-maelezo.
>> Nini tatizo?
Isiyotumika variable n.
Hivyo kosa hili ni matokeo ya yetu kuwa configured
appliance kuwa hasa pedantic, kwa kweli yell katika
wewe kwa kila kosa iwezekanavyo, hata kama ni aina ya
makosa yasiyo mbaya kama hii - ni kweli kubwa vile
kukabiliana kwamba mimi zilizotengwa int, kuweka idadi ndani yake, na kisha
tu walifanya chochote kwa hayo?
Hivyo functionally, hakuna.
Hiyo si kwenda kuvunja mpango.
Ni aina tu ya kijinga, haki?
Hakuna thamani kwa akaomba kwamba idadi hiyo, kuhifadhiwa
ni katika variable, kama wewe ni kamwe kwenda kufanya kitu chochote
pamoja na hayo, kama magazeti au atayaokoa.
Hivyo katika kesi hii, Clang ni kutambua kama mengi, na
ni kusema n outnyttjade kutofautiana.
>> Hivyo tunaweza kurekebisha hii ikiwa kweli tunataka.
Lakini tena, hii si nzuri ya programu sasa.
Hivyo mimi nilikuwa tu kufanya hivyo -
kwenda chini hapa, basi mimi wazi screen, kufanya math.
Kwamba kazi.
Sasa siwezi kukimbia math yangu mpango, inachukua pembejeo -
vizuri, kwamba ilikuwa mbaya.
Inachukua pembejeo, na kwamba ni wote ni sawa, katika kesi hii.
>> Hivyo kweli, hebu jaribu moja nyingine kona kesi ya kwamba sisi
hakufikiri wa mapema.
Katika kesi hii - hapa, hebu kwenda nyuma ya moja ambayo
kidogo zaidi user-kirafiki.
Hebu nirejee nyuma hapa na kukimbia kufanya math tena.
Whoops, nini mimi kufanya makosa?
Got nirudishe zaidi.
Sawa.
Sasa tuko nyuma katika hali ya awali, ambapo wote
ni hopefully vizuri.
Na sasa kama mimi kukimbia math, 123 inaonekana kazi.
Lakini hii si kweli ushahidi madhubuti, kwa kusema tu
sawa, kwamba kazi.
789, kwamba kazi.
Muda wa kuwasilisha.
Kwa sababu kuna wengine kona kesi hapa.
kamba si kweli kutupa shida sana kwa kuandika katika
zima mengi ya wahusika.
Lakini nini kama mimi aina katika hili?
Kupiga namba 1 mengi yote, nzima mengi hapa -
haki zote, ni kupata boring kidogo, hivyo mimi nina kwenda
kusimama hapa, na mimi nina kwenda hit Enter.
>> Nini kuzimu tu kilichotokea?
Hivyo hii kweli anaweza alielezea.
Hivyo alifanya hivyo kuchukua ni kama binary?
mawazo mazuri, lakini hakuna, siyo kweli kwamba alichukua
kama binary, kwa sababu kwa kweli, kwamba ilikuwa tu aina ya
bahati mbaya.
Tunaweza kufanya hii tena.
Hivyo hakuna 2 katika mfumo binary, hiyo ni
pengine kutosha anyway.
Kuingia.
Hivyo hiyo haikuwa tatizo.
Gani kingine?
Hasa.
>> Hivyo kufikiri nyuma kwa nini int kweli ni.
Ni 32 bits ambazo kwa pamoja ni kufasiriwa
kama idadi.
Kama una bits 32, kwamba maana kila bits inaweza kuwa
0 au 1, 0 au 1.
Hivyo kwamba maana kuna uwezekano mbili kwa kidogo hii,
mbili uwezekano kwa ajili ya hii, wawili uwezekano huu
kidogo - hivyo ndiyo 2 kuzidisha kwa 2 -
hivyo ndiyo 2 kwa nguvu 32 ni jumla ya idadi ya
permutations ya zeros na ndio kama una 32
placeholders, zeros au ndio, mbele yenu.
Hivyo kama nina 2-32, kihisabati, kwamba ni nini?
Hivyo ni mengi.
Ni bilioni 4, kutoa au kuchukua.
Bilioni 4 na haionekani kuwa kile kuchapishwa hapa.
Kwa kweli, hii inaonekana karibu na bilioni 2.
Lakini hii si bahati mbaya.
ukweli kwamba kompyuta ina misinterpreted namba yangu mkubwa,
mlolongo yangu kubwa ya wale na kisha mlolongo yangu kubwa ya wawiliwawili,
kama takribani bilioni 2, ni alielezea jinsi gani?
Kuna cap juu int.
Kuna hakika thamani ya kiwango cha kuwa unaweza kuwakilisha.
Lakini ni kawaida bilioni 4, sawa?
Kama 2-32 ni takribani bilioni 4, kwamba inaonekana kama
hiyo ni idadi kubwa.
Hivyo si salio, lakini mawazo mazuri.
Hasi idadi.
Hivyo kama una bilioni 4 mambo iwezekanavyo unaweza
kuwakilisha na permutations haya mbalimbali ya sekunde 0 32 na
1s, vizuri, anasimama kwa sababu ya kuwa sisi binadamu kutaka
kuwakilisha sio tu integers chanya
lakini hasi integers.
Na kwa kweli, hilo ni wazo kuwa C hufanya.
Hivyo, pamoja na bits 32, unaweza kuwakilisha takribani hasi 2
bilioni wote njia hadi chanya bilioni 2.
Na hivyo katika kesi hii, kile sisi ni kweli kuona ni tu
pindo ya uwezo wa integer yetu, na sisi, hivyo
kuzungumza, ilifurika integer.
Tumejaribu kwa cram bits zaidi ndani yake kuliko unaweza kweli inafaa.
Hivyo matokeo ya mwisho ni sisi kimsingi kuwa na bits wote 1.
Tumekuwa flipped wote wa bits yetu juu, tumekuwa alijaribu kuwakilisha
idadi kubwa iwezekanavyo, lakini ni wazi si karibu
kubwa ya kutosha kuwakilisha mambo mawili nimekuwa tu typed in
Yeah?
Watazamaji: [inaudible]
>> DAVID J. Malan: Good swali.
Kwa nini hatuwezi tu kuwakilisha kwamba hasi
saini kama tu tabia?
Hivyo sisi kabisa alivyoweza, na tunaweza kisha kuokoa
kidogo ya ziada.
Lakini bado uko kwenda na kuwakilisha kwamba dash, na
ambayo inaenda gharama angalau kitu,
labda kidogo.
Hivyo ndiyo, tunaweza kuwa na bits 32 kutumika kwa ajili ya idadi yetu, lakini sasa
tunahitaji mwingine kidogo kutumika kwa ajili ya dash wetu
ishara, ishara bala.
Hivyo basi, tuna 33 maadili kidogo, ambayo tunaweza kufanya, lakini ni
si tu njia ni kosa.
Sisi alifanya hukumu wito miaka iliyopita, 32 bits ni aina ya
kitengo cha kipimo hapa.
Hivyo sisi ni kwenda kutumia moja ya bits wale ufanisi kwa
kuwakilisha negativity, na bits 31 kuwakilisha idadi.
Maswali mengine?
Wote haki.
Hiyo ni mengi.
Mbona sisi kwenda mbele na kuchukua yetu dakika tano mapumziko hapa?
>> Wote haki.
Hivyo tena, si kwa overemphasize maombi ya hisabati
ya programu, hebu tu konoa mfano huu mmoja
kabla ya kuendelea katika constructs nyingine, kwa sababu tu
itaonyesha chache kawaida pointi kikwazo juu ya baadhi ya
misingi linapokuja programu kuandika.
Katika kesi hii, kufanya hesabu misemo kwamba kuwa na baadhi ya
kuvutia umuhimu kwa syntax.
>> Hivyo hii ni tu formula ambayo tunaweza kuwabadili
joto kutoka Fahrenheit kwa Celsius.
Kama wewe si unakumbuka, hii ni formula.
Hivyo kama sisi kuziba katika Fahrenheit thamani ya digrii 32, ambayo ni
kufungia, kwamba ni kwenda kuwa 32 minus 32 ni 0, na kwa kweli,
0 katika Celsius pia ni kufungia.
Hivyo sanity haraka kuangalia pale - kwamba ni formula familiar.
Nivuke kwa appliance, ingawa, na kuanza
kuandika mpango ujulikanao kama, f2c; "Fahrenheit kwa
Celsius dot c ".
Na juu kwa juu hapa, mimi naenda kuanza mbali na ni pamoja na #
stdio.h, na mimi naenda kufanya kuu int (utupu), na
tena, tutaweza kuja nyuma katika siku zijazo kama yale int ina maana
kuna na nini utupu maana huko.
Na sasa napenda kwenda mbele na kutekeleza mpango kwamba
kimsingi gani hii uongofu kwa ajili yetu.
>> Hivyo printf, hebu sema, joto katika Fahrenheit.
Na kisha napenda kwenda mbele na kupata thamani kutoka kwa mtumiaji.
Ni aina gani ya thamani lazima mimi kupata kutoka kwa mtumiaji kama nataka
yao kunipa joto katika Fahrenheit?
Yeah?
Gani unaweza kupendekeza?
Yeah.
Hivyo kuelea anahisi pretty busara.
Tuna, tena, tu chaguzi chache kwamba
tumeona hivi sasa.
Tuna vitu kama Char kuelea, mbili, int, muda mrefu,
bool, kamba.
Hivyo haya, kuelea anahisi pretty busara.
Tunaweza kutumia mara mbili, haki, kwa sababu kama kweli tunataka
kuwakilisha joto ya binadamu -
98.60000 -
tunaweza kutumia bits 64 kufanya hivyo, lakini anahisi kama
overkill kwa joto.
Basi hebu tu kwenda na kuelea.
Sasa mimi haja kutofautiana.
Tu kuweka mambo rahisi, mimi naenda kuiita f, lakini mimi
inaweza tu kama usahihi kuiita joto,
lakini aidha ni faini.
Hivyo kuelea f = GetFloat.
Haraka kama mimi sasa wameamua kutumia GetFloat, ingawa, mimi
haja ya kufanya marekebisho moja.
Yeah.
Hivyo tunahitaji # pamoja , vinginevyo ni mkusanyaji
kwenda yell saa yetu.
Sasa kwa kuwa nina kuelea, napenda kwenda mbele na kufanya
uongofu.
>> Hivyo kwanza, napenda pia kuingia katika tabia ya hapa
kutoa maoni yangu code.
Hivyo tena, maoni ni nukuu kwa binadamu kwamba ni
si sehemu ya mpango per se, lakini moja, husaidia
kuelewa nini alifanya asubuhi iliyofuata, au ujao
mwezi, inasaidia mafundisho wenzako kuelewa nini alifanya
au nini nia ya kufanya, hivyo ni
ujumla nzuri sana mazoezi.
Kila mistari michache ya kificho, na kuandika maoni ya
mwenyewe au mwenzake yako.
Hivyo hapa, mimi naenda kwa kusema, "Uliza mtumiaji kwa joto."
Je, si kuwa sentensi kamili, tu maneno mfupi.
Lakini wazo nyuma ya kutoa maoni katika C ni kwamba kila moja ya yako
maoni lazima kuwawezesha wewe - au, kusema, TF au mwenzake -
kwa skim mpango wako na kujua hasa nini anafanya, na si
sana kusoma kanuni, lakini kwa kusoma maoni, ambayo
lazima succinct na wazi.
Haki ya wote, hivyo sasa napenda kwenda mbele na kusema, "Convert
Fahrenheit kwa Celsius. "Kwa hiyo mimi nina kwenda mbele na kufanya,
hebu sema, kuelea c.
Tutaweka Celsius kama thamani floating uhakika.
>> Na napenda kuchukua kumchoma saa hii.
formula ni, tena, juu hapa.
Kama 5/9 mara F minus 32.
Basi hebu kufanya hili.
Hivyo 5 kugawanywa na 9, minus -
Whoops, mimi messed it up tayari.
Times.
Hivyo 5/9 mara F minus 32.
Hivyo F minus 32, semicolon.
Na sasa, chini hapa, mimi naenda kwa kwenda mbele
na kusema, magazeti matokeo.
Na sehemu hii ni rahisi. Printf.
Jinsi gani mimi kwenda kuhusu uchapishaji huu?
Naam, mimi naweza kusema "Hiyo idadi katika Celsius ni% f \ n",
tu kwa baadhi aesthetics.
Na kisha nini thamani mimi nataka kuziba katika hapa kama ya printf
pili hoja?
Sawa.
Hivyo tu c.
Hivyo tutaweza kuanza na hili na kisha kurudi tu 0.
Tena, ina chochote cha kufanya na math.
Ni tu ina maana yote ni sawa.
>> Sasa, hii ni sahihi, programu hii?
Wote haki.
Hivyo nimekuwa alifanya makosa ya baadhi ya.
Hata kama wewe hawana wazo nini ni programu, unaweza aina
ya infer nyuma ya shule ya daraja gani
makosa ya hapa inaweza kuwa.
Nini moja ya kwanza?
Watazamaji: [inaudible]
DAVID J. Malan: Yeah.
Hivyo sisi ni kukosa mabano.
Ilikuwa makusudi kwamba sikuwa mabano katika Akitoa
slide hapa, kwa sababu kuna kweli wazo hili la utaratibu
wa shughuli, au precedence, ambapo baadhi ya shughuli -
kuzidisha -
kuwa juu kisheria, kuwa juu precedence, kuliko mambo
Aidha kama au kutoa.
Hivyo tumefanya hii kwa miaka tu kufanya hasa wazi
nini operesheni ya hisabati kifanyike kwanza.
Basi, mimi lazima pengine mimic hasa hii.
Vinginevyo, kompyuta ni labda kwenda kujaribu kufanya
kitu kama mgawanyiko wa 5 na 9, kisha kuzidisha F, kisha toa
32 kutoka jambo zima.
Ambayo si, kwa kweli, ni nini tunataka kufanya.
Basi hebu parenthesize.
Hebu kuongeza mabano mabano yangu hapa, hapa.
Hebu kuweka hii hapa.
Hapa, mimi tu niliona mwingine kosa mimi kufanywa njiani.
Yeah?
Watazamaji: [inaudible]
>> DAVID J. Malan: Ah.
Nzuri.
Hivyo sisi kweli kuwa integer sawa
mgawanyiko suala mbele.
Mimi kusahihisha kwamba, hebu angalia nini dalili ni.
Lakini sisi ni kwenda na kusahihisha moja
nyingine makosa hapa.
Yeah?
Watazamaji: [inaudible]
DAVID J. Malan: Ndiyo.
Hivyo, stupid kosa mimi kufanywa, lakini ya muhimu.
kompyuta si kwenda tu kugeuka vipofu na basi
mimi kutumia mtaji F, wakati mimi kwa kweli alitangaza variable
kama f lowercase hapa, katika mstari wa 8.
Kwa hiyo mimi haja ya kurekebisha katika mtaji wa mstari 11 yangu, ambayo
wakati uliopita ilikuwa F mtaji kwa makosa.
Je kuhusu hapa?
Je hii kuwa lowercase vile vile?
Ni lazima, lakini hiyo ni bahati mbaya.
Hiyo f% hauhusiani na kutofautiana.
Hivyo tu kuwa super wazi hapa, napenda kwenda mbele na
rename hii, kwa ufupi, "joto." Hebu rename
hii "joto." Basi mimi si rename hii.
Kwa sababu, tena,% f kimataifa maana yake, "floating kumweka thamani."
Ana kitu cha kufanya na variable yangu.
Lakini "joto" kila mahali ni kidogo tu wordy,
hivyo mimi nina kwenda nyuma lowercase yangu ya "f".
>> Sasa, basi mimi kwenda mbele chini ya dirisha yangu hapa.
Matokeo f2c -
ambayo ilikuwa, tena, jina holela mimi
akawapa faili hii.
Inaonekana kuwa compiled.
Hebu kukimbia f2c.
Kuingia.
Joto katika Fahrenheit - wacha kufanya moja rahisi.
32.
OK, kusahihisha.
Lakini, ikiwa mimi sasa kufanya 212 kwa kiwango -
damn.
Wote haki.
Hiyo, ni wazi si sahihi, kama TF yako anajaribu
angalau wawili maadili.
Basi nini tatizo hapa?
Naam, tayari kuweka kidole yako juu ya nini suala hilo ni.
Lakini kwa nini ni kwamba kesi?
Hadi hapa, wakati mimi nina kufanya math ya 5 kugawanywa na 9.
Hivyo conceptually, hiyo ni kikamilifu sahihi.
Kabisa sambamba na formula.
Lakini kompyuta tu kufanya just nini wewe
kuwaambia cha kufanya.
Na nini tuko ufanisi kuiambia kompyuta hapa ni
kugawanya 5 integer na 9 integer
na nipe matokeo.
Tatizo ni, ingawa, wakati wa kufanya mgawanyiko kwa kutumia data
aina, pato ni sawa data aina kama pembejeo.
Na hivyo kama pembejeo mbili ni wawili ints, pato ni kwenda
kuwa int.
Na hivyo 5 kugawanywa na 9 ni uhakika kitu.
Lakini nini integer karibu kwa uhakika kitu?
Hivyo, ni kweli 0.
Hivyo kama sisi kujadiliwa siku ya Jumatatu, kila kitu baada ya decimal
uhakika anapata truncated.
Ni tu anapata kutupwa mbali.
Hivyo hili ni kosa kamili, kwa sababu mimi ili kama vile tu
kuzidisha kila kitu kwa 0 hapa.
>> Sasa, siwezi kurekebisha hii katika michache ya njia.
Mimi naweza kufanya hili.
5.0 kugawanywa na 9.0.
Kitaalam, sijui hata haja ya kufanya hivyo.
Ni gani inatosha tu kufanya moja ya idadi kuelea -
au mara mbili - kwa kuweka uhakika decimal hapa.
Kwa sababu kile kinachotokea sasa ni wakati kugawanya integer na
kuelea, au mara mbili, kompyuta kinaendelea kwa kutambua
oh, mmoja wa wale ni sahihi zaidi.
Hebu apotee upande wa kutoa zaidi kuliko usahihi
wewe lengo.
Hivyo itakuwa kubadilisha matokeo -
itakuwa kurudi matokeo kama thamani floating kumweka pia.
Hivyo kwamba ingekuwa kazi.
Hii ingekuwa kazi.
Na kuna mtu mwingine utaratibu kwamba tutaweza kuona katika
zaidi undani wiki ijayo.
Unaweza kweli, kama programu, kuiambia kompyuta
kwa kweli kutibu data aina moja kama
ingawa walikuwa mwingine.
>> Kwa hiyo mimi nilikuwa kwa kweli kufanya kazi hii.
Katika mabano, siwezi kusema kitu kama (kuelea), wazi
Paren, karibu Paren.
Na hii ni nini inayoitwa "akitoa." Tena, zaidi
juu ya hili wiki ijayo.
Lakini hii ni njia tu ya programu ya kuwaambia
kompyuta, yeah Mimi najua 9 ni integer au mrefu.
Najua ni si floating kumweka thamani.
Lakini kutibu kama vile anyway.
Hivyo kuwafukuza data aina maana ya kubadilisha
kutoka moja hadi nyingine.
Kwa kweli, huu ni kidogo tu ugly, hivyo napenda kupendekeza sisi kwenda
nyuma kwa maoni ya awali ya tu kuwabadili
mambo haya kwa yaliyo maadili uhakika manually.
Kwa sababu sasa ni kama tu super wazi nini kinaendelea, na
si wote kwamba bughudha.
>> Basi hebu sasa kurudi nyuma katika terminal dirisha yangu.
Matokeo f2c.
Hebu kwenda mbele na kukimbia hii.
Na, kama kando, wewe kupata kuchoka kuandika amri hizi
tena na tena, kutambua kompyuta kwamba, kama Linux hapa,
zinaelekea kuwa pretty smart.
Na kama mimi hit Up, tunaweza kwenda kwa historia yangu yote ya
amri, na Up Down.
Hivyo katika kesi hii hapa, mimi unaweza tu kwenda Hadi kukimbia kufanya f2c.
Mimi nina kuwa yelled saa, kwa sababu mimi tu walifanya pili iliyopita.
Ni tayari hadi sasa.
Hivyo sasa siwezi kukimbia f2c tena.
Hebu jaribu 32 Fahrenheit.
Sasa hebu jaribu 212 Fahrenheit.
>> Phew.
Inaonekana kazi.
Sasa, hii ni nzuri, lakini anahisi kidogo kiholela kwamba
Mimi nina kuonyesha namba sita baada ya pointi decimal.
Haki?
Kama wewe ni mtu wa hali ya hewa kwenye TV, wewe ni aina ya doofus
kama wewe ni kusoma kwa joto
hii shahada ya usahihi.
Basi hebu kurahisisha hii.
Basi hebu kweli kwenda juu hapa, kwa printf yangu.
Na yeah, nataka kuelea.
Lakini nataka sasa kutaja usahihi.
Na mimi nina kwenda kuwa succinct kidogo.
Mimi nina kwenda kusema, nipe moja ya uhakika baada ya mahali decimal.
Hivyo badala ya kusema% f, mimi nina kwenda kusema% 0.1 f.
Na hii ina maana tu nipe nafasi moja
baada ya uhakika decimal.
Wote haki.
Hebu jaribu hii tena.
Hebu kuendesha upya baada ya kuandaa.
Na sasa ninapoandika katika 32, na mimi kupata nyuma
zaidi succinct thamani.
Na siwezi aina katika, sasa, 212, na kupata nyuma succinct zaidi
thamani pia.
Na kuna mambo mengine unaweza kufanya na printf.
Unaweza kweli bayana jinsi pana idadi lazima.
Kama unataka kuwa na padding juu yake, hivyo unaweza haki-align au
kushoto-align wote wa namba yako au
kujaribu mambo katikati.
Hivyo kutambua kuna kidogo tricks unaweza kufanya huko.
Lakini wao tu chemsha chini codes format,
kama tuna huko.
>> Hivyo katika suala hili la precedence.
Hii ndiyo meza boring sana kupitia methodically.
Lakini kutambua kwamba waandishi wa C wamekuja na
sheria kwamba kutaja waendeshaji kuwa juu
precedence, unaofunga zaidi nguvu, kuliko wengine.
Hivyo wakati katika shule ya daraja, sisi ujumla alijua kuwa ilikuwa ni
kuzidisha na kugawanya, kisha kujumlisha na kutoa,
kisha baadhi ya mambo mengine.
Katika ulimwengu wa programu, kuna mengi
tena orodha ya mambo.
Na hii si kitu yenye thamani ya kukariri sasa.
Utasikia kupata acclimated hiyo kabla ya muda mrefu.
Lakini tu kama katika shule ya daraja, mabano ujumla kutatua
masuala ya precedence, kwa kufanya super wazi kwa
kompyuta na binadamu sawa yale yaliyokusudiwa.
Hivyo kufikiria hili kidogo tu kudanganya karatasi huko.
Lakini wengi wa wale maelezo hatutaweza kupata kwa wakati fulani.
>> Wote haki.
Sasa, hebu kujenga na kuondokana na kidogo hizi silly
hisabati mifano.
Bado kutumia misingi sawa, lakini kuanza
akielezea wenyewe zaidi kidogo kama Scratch.
Hivyo katika Scratch, tulikuwa na maneno hayo Boolean.
Na katika Kiingereza, kujieleza Boolean ni nini?
Kweli au uongo.
Ni kitu ambacho kutathmini kwa kweli au uongo.
1 au 0.
Juu au mbali.
Chochote unataka simu yake.
Sasa katika Scratch, vipande puzzle inaonekana kama hii.
Na kwamba ni mchanganyiko, juu ya chini huko, ya tatu
puzzle vipande vipande.
Muunganiko mmoja -
kitu ambayo ina tupu na tupu.
Na kisha mbili Boolean maneno ndani yake.
Hivyo unaweza kiota Boolean misemo kupata zaidi
ngumu misemo Boolean.
Kwa mfano, kama ni Jumamosi, na ni nzuri
hali ya hewa, kisha kwenda nje.
Au kitu kama hicho holela.
Hivyo unaweza kujiunga misemo Boolean kuja na
kubwa thamani ukweli, ambao jibu ni msingi
juu ya wale madogo.
>> Sasa, katika C, nashiriki, ramani hii ni
kweli pretty rahisi.
Mabano kusaidia kufanya mambo wazi hapa.
&& Ni nini maana ya "na." Basi hiyo ni jinsi
tunakwenda kubadili vitalu wale kutoka kwa Scratch C.
Na kwa hali tuliona katika Scratch, kwa upande wa kushoto
upande huko, siwezi stack yao vile vile katika C. Kama x ni chini
kuliko y, kisha kufanya hili.
Mwingine kama x ni mkubwa kuliko y, kisha kufanya hili.
Mwingine kimantiki ni lazima kuwa sawa, hivyo kusema
kwamba wao ni sawa.
Basi, tunaweza sasa kuanza kujenga mambo haya juu.
>> Basi hebu kufanya mfano.
Hebu kufungua faili hilo kwenye tovuti shaka kwamba
Mimi aliandika mapema.
Hiyo inaitwa nonswitch.c.
Na tutaweza kuona nini katika muda tu.
Hivyo katika faili hii - nonswitch.c--
kwanza kutambua kwamba kuna rundo zima la
maoni juu.
Hiyo tu kueleza jina la faili, ni nini
gani, na kadhalika.
Na inaonekana inaonyesha matumizi ya Boolean NA-ing -
conjoining misemo miwili.
>> Basi hebu angalia jinsi gani mpango huu unavyofanya kazi.
Mimi ni pamoja wangu files mbili, cs50.h na stdio.h.
Kama mimi kitabu chini, sasa, kwa mpango, ni muda mrefu kidogo
kuliko tumekuwa iliyoandikwa kabla, lakini pretty someka.
Basi, mimi kwanza magazeti kwa mtumiaji, juu ya mstari 18,
"Nipe integer kati ya 1 na 10." Hivyo
hiyo ni haki huko.
Sasa mimi kupata integer.
Lakini kutambua kwamba GetInt - pretty rahisi.
Ni tu kwenda kupata int.
Ni kwenda kuhakikisha kwamba hana kupata int na si
kamba au kamba ya kuelea.
Lakini si kwenda kufanya aina yoyote ya kuangalia mipaka.
Ni si kwenda kuchuja idadi kuwa kati ya
fulani mbalimbali.
Hivyo tuna kutekeleza kwamba sisi wenyewe.
Hivyo kama katika Scratch, ambapo mimi naweza kufanya kushirikiana ya
mbili misemo, siwezi kufanya hivyo katika C kama ifuatavyo.
Kama n, ni mkubwa kuliko au sawa na 1, na n ni chini ya na
au sawa na 3, mimi naenda sana amri kiholela kwamba
idadi kuwa idadi ndogo.
Tu kwa ajili ya taarifa hiyo.
Mwingine ikiwa n ni kati ya 4 na 6, magazeti "Wewe ilichukua kati
idadi. "Else ikiwa n ni kati ya 7 na 10, magazeti" Wewe ilichukua
kubwa idadi. "Else magazeti" Wewe kuchukua idadi batili. "
Kwa sababu mantiki, kwamba ifuatavyo ikiwa tumekuwa
nimechoka mbalimbali wetu.
>> Hivyo kutambua hii si kabisa jinsi sisi kuandika zaidi au
sawa na katika darasa math.
Haki?
Wewe kawaida kuteka ni kama hii, na mstari chini yake.
Lakini hakuna ufunguo vile kwenye keyboard yangu.
Hivyo alama katika C kwa kueleza zaidi au
sawa na ni herufi mbili, na ishara kwa chini ya
au sawa na ni herufi mbili vilevile.
Wote haki.
Hivyo kama mimi kukimbia katika mpango huu, pengine unaweza nadhani nini ni
kwenda kufanya.
Kama mimi kwenda mbele na kufanya nonswitch, Ingiza.
Na kisha kukimbia nonswitch.
Nipe namba kati ya 1 na 10.
Mimi naenda kuwapa 11.
Mimi ilichukua idadi batili.
Hebu jaribu namba 3.
Mimi ilichukua idadi ndogo.
Hivyo haki moja kwa moja huko.
>> Nini kama nataka kubadili tabia ya mpango huu na
kufanya kitu tofauti kidogo badala yake?
Hebu kwenda mbele na kusema hii.
Hebu kujikwamua yote hii.
Na napenda kusema kama (n == 42).
Na kisha mimi nina kwenda mbele na kusema magazeti "Wewe ilichukua
haki jibu. "Else tunakwenda kwenda mbele na kusema,
printf ("Wewe ilichukua
dhulumu jibu ");. Sawa.
Kwa sababu tu.
>> Sasa, pointi chache tunaweza kufanya hapa.
Moja, sikuweza aina ishara kwamba unaweza kudhani ni
nzuri zaidi.
Wakati nataka kuangalia usawa, zinageuka huna matumizi
sawa ishara.
Wewe badala yake kutumia sawa sawa ishara.
Na kwa nini kinaweza kuwa kuwa, tu intuitively?
Yeah.
Watazamaji: [inaudible]
DAVID J. Malan: Sahihi.
ishara sawa tayari kutumika kwa ajili ya zoezi.
Mtu hawakuwa kweli nadhani hii kupitia.
Na hivyo sasa, linapokuja kupima usawa, tuna
kuwa wazi zaidi, na kusema sawa sawa.
makosa ya kawaida sana ni kufanya hili.
Na, kama katika ofisi ya masaa au wakati mwingine wiki ijayo au katika
ijayo wiki mbili wewe kufanya kitu kama hiki na kisha
mapambano na ni kwa ajili ya 10, dakika 20 kujaribu kufikiri
nini mdudu damn ni, kutambua kwamba wewe ni mmoja wa wale
watu ambao alifanya hii kosa.
Hivyo, super rahisi kutengeneza.
Lakini lengo sasa ni kuizuia hii kosa.
Hii inaweza kutathmini, kwa sababu ni nini kweli hii kusema?
Kama n anapata 42.
Hivyo watu kitenzi kutumia, maneno, ya kueleza
dhana ya zoezi ni "anapata." Hivyo kama n anapata 42.
Hivyo kwamba maana hawawajui 42 kwa n.
Sasa nina kujieleza Boolean katika mabano,
ndani ya hali hii, ambayo ni ya thamani 42.
Haki?
Kwa sababu kama wewe ni kutoka nje kutathmini ndani, jumla ya
jibu, sasa, ni 42.
>> Hivyo kama mimi aliuliza swali, "kama (42)," ni nini
kwamba kweli kusema?
Naam, Boolean misemo inaweza tu kuwa ni kweli au uongo.
1 au 0.
Juu au mbali.
Hivyo sisi tunaonekana kuwa na kesi kona hapa, ambapo wote wa
ghafla, mimi kusema "kama (42)". Hiyo siyo thamani Boolean.
Hivyo kile kompyuta kufanya, ingawa, ni kimsingi equates
chochote ambacho si 0 ni kufasiriwa kuwa ni kweli.
1.
On.
Wao ni wote functionally sawa.
Tu thamani 0, au Keyword uongo, kama tutaweza
hatimaye kuona, ni kweli uongo.
Hivyo "kama (42)" ingekuwa kweli kuwa kweli, kwa sababu ni zisizo sifuri.
Hivyo kwa kuwa sahihi zaidi hapa, thamani Boolean ni kweli si hivyo
mengi ya kweli au uongo, lakini kwa hili
kesi, ikiwa ni 0 au yasiyo ya sifuri.
Hivyo uongo au si ya uongo.
Na kwamba inaruhusu sisi imewazunguka wote zaidi
uwezekano katika kujieleza parenthetical.
Hivyo tunahitaji, milele hivyo kwa uangalifu, kusema hii -
kama (n == 42).
Ni kwa sababu tu tunahitaji kutaja mtihani wa usawa,
si zoezi la thamani.
>> Kile kingine ni thamani akibainisha hapa?
Hizi braces curly ni kweli si lazima.
Nimekuwa kufanya nao tu kuwa NIT-picky hapa.
Lakini wakati una hali ya kuwa tu ana mstari mmoja wa
code, kama urahisi, programmers hawana haja ya kutumia
braces curly.
Inatosha tu Indent, kwa sababu za estetiska, na
kisha kuandika wako mstari wa kificho.
Tu wakati unataka kuandika mistari miwili ya code - kwa
mfano, mwingine printf ("Bye!"). Kama unataka kufanya
kwamba, hii ni kuvunjwa.
Unaweza Indent unataka wote, lakini ukweli kwamba una
typed mistari miwili ya kificho bila kutumia braces curly
ina maana kwamba programu hii itakuwa si kukimbia usahihi au nguvu
hata kukusanya usahihi.
Hivyo kwa sasa, kwa kuwa waaminifu, nadhani tabia bora ni tu
kutumia braces curly, na utapata kwamba wao kufanya
super wazi nini kinaendelea.
>> Pia, kama kando - hasa kama wewe ni miongoni mwa wale ambao wanatumia
vitabu ilipendekeza au rasilimali online -
kutambua kwamba kuna wazo hili la mtindo katika
programu.
Na baadhi ya watu kweli wanapendelea kuweka brace curly
juu hapa kwenye mstari.
Baadhi ya watu wanapendelea kufanya mambo ujinga,
kama kuziweka hapa.
Hakuna jibu sahihi linapokuja
style, lakini hii ni sahihi.
Lakini baadhi ya watu kufanya hivyo.
[Kicheko]
DAVID J. Malan: Kwa hiyo mimi kutaja hili sasa, kwa sababu tu kama
wewe kusoma juu ya mambo katika vitabu au online, wewe ni kwenda kupata
mbalimbali ujumbe kutoka kwa walimu tofauti na
tofauti waandishi.
Na tu kutambua kwamba, functionally, wao uko
ujumla sawa, lakini kuwa thabiti.
Hivyo katika kesi hii, tutaweza standardize juu ya curly
braces wamejipanga hapa upande wa kushoto.
>> Wote haki.
Basi hebu kwenda mbele sasa na kukimbia hii, na kuona nini kinatokea
na mpango huu.
Matokeo nonswitch.
Kisha kukimbia nonswitch.
Nipe integer kati ya 0 na - hivyo si kwamba husika
tena, lakini nina kwenda tu kiholela kusema 42.
Na mimi ilichukua jibu sahihi.
Naam sasa, hebu kweli kuchukua hii katika mwelekeo tofauti.
Ni zinageuka kuna baadhi syntax nyingine sisi
wanaweza kutumia katika mpango.
Hapa ni kipande mpya ya syntax kwamba ni functionally sawa,
lakini tu utangulizi njia nyingine ya kuonyesha sisi wenyewe.
Hivyo hii ni kile kinachoitwa "kubadili kauli." Na
kubadili kauli inafanya kazi kama ifuatavyo.
Inachukua, katika mabano, thamani ya kwamba unataka
"Kubadili" juu.
Unataka tabia tofauti kulingana na thamani yake.
Hivyo hii ina maana kubadili juu ya thamani ya n.
Na nini maana ya hii?
Naam, kama n ni 1 au 2 au 3, kwenda mbele na magazeti nje "Wewe
ilichukua idadi kubwa "na kisha kuvunja.
sababu kwa ajili ya mapumziko ni kwamba njia C kazi ni kama
haraka kama anaona kesi kwamba mechi, ni kuanza utekelezaji
yote ya maadili ya chini yake.
Hivyo kama nina moja mstari wa kanuni, kama mimi kufanya hapa kwenye mstari 27, ni
anapata kunyongwa.
Kama mimi kuongeza line nyingine hapa, anapata kunyongwa.
Mstari mwingine hapa, anapata kunyongwa.
mpango tu ataacha utekelezaji nini hapo chini
husika kesi taarifa wakati mimi wazi
kusema "kuvunja." Hivyo vibaya.
Haki, katika kesi hii, kama matokeo.
Uchunguzi 4 au 5 au 6, vile vile, ni kwenda
kuchapa nje ujumbe.
Katika kesi hiyo, kati ya idadi.
Break.
Uchunguzi 7, 8, 9, 10, ni ya kwenda magazeti nje "Wewe ilichukua kubwa
namba ". Break.
Na kisha kuna literally Keyword kuitwa "default"
hiyo ni kwa ufanisi kama "mwingine" kujenga.
Hivyo mpya syntax, lakini kielimu,
kitu hapa yote mapya.
Ni kama tu Scratch.
Kama, mwingine kama, mwingine kama, aina ya block.
>> Basi hiyo ni toleo switched ya mpango huu.
Lakini taarifa kwamba sisi alifanya hivyo kwa namba hapa.
Hebu kufungua toleo la pili, tu kuonyesha
kitu kidogo zaidi zege.
Hivyo hapa tuna darasa badala yake.
Zinageuka unaweza kutumia swichi si tu juu ya integers, lakini juu ya
wahusika.
Si katika aina ya data zote, lakini angalau juu ya wahusika.
Hivyo hapa, tunaweza kufanya kitu kama kama thamani ya C kwamba
user typed katika, katika mstari 19, kwa kutumia kazi GetChar,
ni mtaji au Herufi za chini, hebu kutafsiri kama daraja,
na wanasema ilichukua daraja bora.
Na chini pamoja kauli kubadili, je, tuna nyingine
kesi kwa ajili ya "B" s na "C", na kadhalika.
Lakini hebu sasa pande zote nje ya mtu mwingine kitu.
Na tena, aina ya kuruka kwa njia ya
baadhi ya mifano hii.
Lakini ni kweli ili tuweze kuyatumia, sasa -
au kweli, tu kutafsiri yao sasa -
kwa C.
>> Hivyo basi mimi kwenda mbele na kufanya hili.
Mimi naenda kufungua faili mpya.
Na mimi naenda kufanya ni pamoja na .
Na kisha mimi naenda kufanya int kuu (utupu).
Hebu kuokoa faili hii kama loop.c.
Tu kama mfano.
Na mimi nina kwenda mbele na kufanya yafuatayo.
Nataka kuandika mpango tedious sana.
Hivyo 10.
Hebu kufanya hili.
9.
Wote haki.
Haraka kama wewe kuanza kufanya hili katika programu, wewe ni
pengine kufanya kitu kibaya.
Lakini tutaweza kuanza huko anyway.
Lo.
Hiyo ni kweli sawa.
7.
6.
5.
4.
Hakuna kitu ambacho kinaenda kutokea wakati sisi kupata 0.
3.
2.
1.
Sawa.
0.
Futa.
>> Wote haki.
Hivyo kurudi 0.
Hivyo mpango huu ambacho ni wazi anaenda kufanya kile sana
tediously anasema ni kwenda kufanya.
Ni kwenda na magazeti yote ya wale
maadili, kuanzia juu hadi chini.
Hivyo basi mimi kufanya kufanya kitanzi.
Na kisha - Lo.
Kufanya kitanzi.
Mimi nilikuwa katika saraka ya makosa.
Na sasa napenda kukimbia kitanzi.
Kuingia.
Safi.
Nzuri sana.
Nice, muda mrefu wa mpango.
>> Yote ya haki, lakini sasa hebu kufanya hili vizuri.
Kama ilivyo katika Scratch, wakati wewe kuanza kutumia looping
kujenga, badala ya kuiga na pasting yote ya
puzzle vipande, basi mimi kuanzisha hii kitu.
Hivyo katika C, kuna mbalimbali constructs looping,
moja ambayo inaonekana kama hii.
"Kwa" kitanzi ina mambo matatu, kutengwa kwa semicolons mbili.
Na kisha, ndani ya mwili wa kitanzi, hivyo kusema -
mambo ya ndani ya braces curly -
tunaweza kufanya kitu tena na tena.
Basi nini mimi hapa kwenye screen, hii ni
literally tu maoni.
/ / Maana hiyo inakuja maoni.
Hii si code.
Hii ni tu Kiingereza maelezo, na mimi, binadamu.
>> Hivyo initializations, hali, na updates.
Naam, hebu angalia jinsi hii matendo.
Hii inaruhusu mimi rewrite ya programu hii kama ifuatavyo.
Kwa -
hivyo hapa anakuja kitanzi wangu -
int i -
inakuja variable inayoitwa "i" -
anapata initialized hadi 10.
Hivyo kuna initialization yangu.
Nataka kufanya hii kitanzi muda mrefu kama "i" ni zaidi au
sawa na 0.
Na juu ya kila iteration ya kitanzi hii, nataka
kufanya i -.
Hivyo tuliona + + Jumatatu.
- Ni kinyume.
Ni decrements thamani kwa 1.
Ndani ya kitanzi hii, nataka kwa kweli kufanya kitu.
Hivyo nina kwenda kwa kusema kitu kama printf.
Sitaki kusema 10 sasa, kwa sababu hii ni wazi ni tu
kwenda magazeti thamani sawa.
Nini nataka magazeti badala yake, pengine?
Yeah.
Hivyo "i." Hivyo% d, i.
>> Hivyo nina kwenda kuiba moja ya mawazo hayo kutoka mapema -
hii badala ya namba format -
na kisha chini hapa, chini, mimi itabidi kurudi 0, tu
kwa hatua nzuri.
Lakini sasa, nina zaidi succinct mpango.
Ni tu mistari michache, na mistari si baadhi 10 au 11.
Hebu kwenda haraka yangu chini hapa.
Remake kitanzi.
Rerun kitanzi.
Na inaonekana kuwa sawa.
Sasa, mpango hakuna zaidi ya kuvutia.
Lakini sasa mimi unaweza aina ya kitu kama hii.
Mimi naweza kubadili hii kwa 100.
Naweza kisha recompile mpango wangu.
Na kisha naweza kuendesha upya mpango wangu.
Na sasa unaendelea super-haraka juu ya kompyuta ya leo.
Lakini kuna nina -
na kweli, scrollback yangu buffer haina
hata kwenda mbali.
Kuna sisi kwenda.
Hivyo kuna tuna kila 100.
Lakini ni rahisi kufanya makosa hapa.
Nini kinaendelea kuwa tabia yanayotarajiwa kama mimi
ajali kufanya hivyo?
Hivyo anahisi kama usio.
Basi hebu angalia kama kompyuta kutenda.
>> Hivyo basi mimi kwenda mbele na kufanya kitanzi.
Na napenda kukimbia kitanzi.
Basi hebu kuja nyuma na kwamba katika muda tu.
Tutaweza basi kwamba kukimbia.
Kwa sababu kile lazima sisi kuhesabu hadi, minimally?
Pengine angalau bilioni 2, kama tuna kwamba bits wengi, na
sisi ni kutumia maadili mazuri.
Basi hebu kuruka nyuma hapa.
Licha ya aina hii ya tanzi, tuna nini wanaitwa wakati
matanzi. Hivyo, kama vile katika Scratch, wewe alikuwa Forever
vitalu, na wewe alikuwa vitalu Repeat.
Vile vile, katika C, wewe tu njia nyingine
ya kuonyesha mwenyewe.
Hivyo kuwa na wazo hili la wakati kitanzi kwamba utapata
kueleza mwenyewe tofauti kidogo.
Na kisha una kitu kinachoitwa kitanzi do-wakati,
ambayo inafanya kazi tofauti kidogo kama vizuri.
Na tutaweza tease hizi mbali zaidi ya muda.
>> Lakini hebu tuangalie moja hii ya mwisho hapa.
Kama sisi kwenda katika -
bado mbio.
Ni pretty usio.
Hivyo basi mimi kwenda katika chanya, na kuonyesha jinsi tunaweza kweli
serikali ya mtumiaji mchango mdogo kwa ufanisi zaidi.
Ni mpango pretty mfupi.
Na hapa sisi, katika kuu, int n tamko.
Basi nipe variable kuitwa n. Sasa, mimi literally kusema
"Kufanya." Na kisha mimi nimepata wazi curly
Brace, karibu curly Brace.
Na kisha taarifa, haki baada ya kwamba, anasema wakati n
ni chini ya 1.
Hivyo taarifa kwamba mistari haya -
19-24 -
kutunga pamoja kitanzi do-wakati.
Na tena, mpya syntax, si wazo jipya.
Ni tu njia nyingine ya looping, syntactically.
Hiyo ni nini hii nini?
Kufanya yafuatayo wakati n ni chini ya 1.
Basi nini nataka kufanya?
Mimi kudai kwamba wewe nipe sifuri.
Kisha mimi kwa kweli kujaribu kupata integer kutoka kwa mtumiaji.
Lakini katika suala la utaratibu wa shughuli hapa, kwa sababu
wakati hali ni chini hapa, mimi nina kisha kwenda kuangalia, ni n
chini ya 1?
Hivyo kudhani kuwa user -
baada ya kuwa alidai katika njia hii -
aina katika 0 thamani.
Hali hii ni kwenda kuwa kweli au uongo?
Naam, ni kweli kwenda kuwa kweli.
Kwa sababu ni n 0, na ni chini ya 0 1.
Hiyo ni nini kwamba kuashiria?
Kufanya hivyo tena.
Mara moja tu sharti kwamba kutathmini kwa uongo.
Kama mimi aina katika 42.
Naam hakuna, 42 ni si chini ya 1.
Basi kitanzi hii inafanywa utekelezaji.
Na hivyo katika hatua hiyo, mpango watasema, shukrani kwa ajili ya
42, katika kesi hii.
Sasa una njia hii ya kuonyesha mwenyewe -
Sisi lazima si kusubiri kwa hili hadi mwisho.
Ni kwenda kuchukua muda.
Kuendelezwa wakati mwingine, labda.
>> Lakini sasa, una uwezo wa hopefully kuelewa
kidogo ya ucheshi geek.
Apologies.
Hii si mwakilishi wa ucheshi katika sayansi ya kompyuta
dunia, lakini ni cute.
Mwisho [anacheka] Hebu kumbuka kwamba.
Na sisi kuona juu ya Jumatatu.
[Applause]