[Powered by Google Translate] DAVID Malan: Hii ni CS50, na hii ni mwanzo wa Wiki 1. Nini sisi mawazo tunatarajia kufanya leo ni kuangalia nyuma katika kitu wengi wenu pengine kutembea nyuma kwa baadhi wakati sasa na ili kuangalia kidogo familiar. Hii kitu hapa, hii bila shaka ni katika - Watazamaji: Sayansi. DAVID Malan: Sayansi katikati. Hivyo hii ni kweli moja ya kompyuta mwanzo nyuma kutoka miaka ya 1940. Ilikuwa moja ya kompyuta ya kwanza electromechanical kwamba alikuwa na uwezo wa hasa kwa muda mrefu, binafsi endelevu computations, na kile sisi kweli kuona katika kituo cha sayansi ni tu kipande kidogo ya jambo hili. Nini sisi mawazo tunatarajia kufanya basi ni kuangalia nyuma katika video kilichofanyika baadhi ya wakati uliopita, kuanzisha hii kitu kwa ulimwengu. Na utaona kutoka muziki na sauti kwamba hakika wale walikuwa na furaha sana nyakati. [VIDEO avspelning] -Ushindi wa ujuzi hisabati na mitambo ni hii mkuu mpya moja kwa moja Calculator katika Chuo Kikuu cha Harvard. Intricate matatizo katika hisabati, kuweka njia ya mashine katika fomu coded juu ya mkanda, ni usahihi kutatuliwa katika dakika sehemu ya muda unaotakiwa kwa binadamu hesabu. Iliyoundwa na kuharakisha aina zote za hisabati na sayansi utafiti, kampuni kubwa ya ubongo mitambo itafanya kazi kwa ajili ya Umoja Nchi Navy mpaka mwisho wa vita. DAVID Malan: Basi nini unaweza kujua ni kwamba ilikuwa katika hii kifaa sawa kwamba mrefu sisi wote sasa kuchukua pretty much kwa alimjalia lilianzishwa, kwamba wa mdudu. Basi mmoja wa wahandisi kazi katika kompyuta hii literally kupatikana nondo ndogo katika mashine ambayo ilisababisha katika baadhi mahesabu sahihi. Na kama hadithi inakwenda nondo kwamba alikuwa taped kwa logi hii journal hapa, nyuma kutoka Septemba 9 mwaka 1940 kitu, na hivyo alizaliwa kwa ulimwengu neno "mdudu". Hivyo tangu sasa tunaona mende kuwa aina yoyote ya makosa katika programu, kama mwanadamu au, katika kesi hii, wadudu. Hivyo matangazo machache, kama sisi kuendelea. Hivyo CS50 ina desturi ya sadaka ya chakula cha mchana wa aina juu ya zaidi ya Ijumaa wakati wa muhula, ambapo sisi kuchukua 30 kwa 40 ya wanafunzi wa Moto na Ice katika Square kwa kawaida porojo, majadiliano juu ya sayansi ya kompyuta, majadiliano juu ya siku zijazo. Tunakaribisha Waliofuzu na marafiki kutoka sekta ya kuzungumza juu wanafunzi pia. Kweli kuelekea mwisho wa kufanya nini darasa haki kubwa yote ionekane zaidi, angalau mara moja kwa wakati kwa ajili ya subsets ya wanafunzi. Hivyo kama ungependa kujiunga na sisi hii Ijumaa, 01:15, kwenda CS50.net/lunch kwa RSVP. Na tutaweza kufanya hivyo recurringly, hivyo usiwe na wasiwasi kama wewe si kati ya 30 ya kwanza au hivyo wiki hii. Hivyo mwandishi maelezo. neno juu ya rasilimali ambayo sasa kuanza kuwa inapatikana kwa wanafunzi katika darasa. Kwa hivyo vichwa yako haja ya kuwa chini wakati wa mihadhara scribbling kila kitu chini nasema na kadhalika, nini cha kufanya badala ni kutoa mafundisho kutoka kwa wafanyakazi kisheria seti ya maelezo. Hivyo tuna moja ya wenzetu mafundisho, Andrew Sellergren, aketiye chini kila wiki, unatathmini video, na kisha anaandika chini nini tunafikiri ni uungwana mamlaka ya kuweka maelezo. Na fond Andrew, pia, ya kuweka maelezo snarky katika chini. Hivyo itabidi hopefully kufurahia haya kama kitabu rejea kwa ajili ya furaha, na pia, kuja Quiz muda, kama fursa ya kile kilichotokea katika mihadhara ya mtu binafsi. Hivyo wale ni wanaohusishwa katika ukurasa wa mihadhara. Tatizo kuweka 0, wakati huo huo, ni nje. Na katika suala la rasilimali zilizopo kwa wewe - walkthrough. Milo wakiongozwa kwanza juu ya Ijumaa. Ni ilifanyiwa, kuweka online na Jumamosi. Na hivyo kutambua, kama wewe ni uhakika ambapo kwa kuanza, kwa hii au baadaye p-sets, daima kugeuka kwanza kwa walkthrough au vyake video. Sectioning ni katika maendeleo; katika cs50.net/section ni wapi wanapaswa kuwasilisha mapendekezo yako, kama wewe si tayari, kwa leo. Kwa sababu sehemu kuanza Jumapili hii ijayo, Jumatatu, na Jumanne. Sisi kufanya sehemu hizo siku tatu, kila wiki ya muhula kwa sehemu kubwa. Na sisi pia kuanzisha, tena, tracks tofauti. Hivyo itabidi kuulizwa kwenye fomu hii sectioning, kama wewe si kuonekana ni tayari, kama wewe ni miongoni mwa walio chini starehe, vizuri zaidi, au mahali fulani katika kati. Na kama wewe ni aina ya juu ya uzio, kwa ujumla mahali fulani katika kati ni nini wanafunzi wengi kuishia kuangalia. Ofisi ya masaa kuanza usiku wa leo. Hivyo Scratch ni haki Asili muhimu, hata kama ni kawaida kabisa kukimbia katika mende mbalimbali, au sitasita kama jinsi kutekeleza jambo fulani. Hivyo kutambua kwamba sisi kuanza masaa ya ofisi ya wiki hii. Wao utakuwa katika Annenberg Jumatatu, Jumanne, Jumatano, Alhamisi, kutoka PM 8:00-11:00 wakati wa mapumziko ya ubongo. Classmen Upper anaweza kupata, na kama umewahi kuwa na matatizo ya kupata katika mlango, kwa sababu wao utakuwa swiping, tu majadiliano njia yako katika kueleza na uko pamoja CS50. Kawaida ya 20 na 30 ya sisi juu ya wafanyakazi itakuwa pale kusaidia wewe moja kwa moja. Baada ya kuwasili wazo ni hii: utasikia kuleta Laptop yako, itabidi chaja yako, tutaweza kuwa na kamba nguvu ya ziada, hasa kwenye ukuta wa kusini wa Annenberg ambapo kuna kura ya maduka ya umeme. Na kuu cha kuingia katika ofisi masaa Q & ni kwenda cs50.net/discuss na post swali lako hapo. Na kuipatia jina na pset 0 au pset 1, chochote wiki inaweza kutokea kwa kuwa. Na kisha nini tutaweza kufanya ni kuwa na meza ya wenzake mafundisho na bila shaka wasaidizi, kwa ujumla 8 au 10 au hivyo wa kwetu, kwenda kupitia, kuweka ya uangalizi juu ya bodi, na kukwanyua mbali maswali kweli kwa haraka kama tunaweza, akimaanisha wewe posts kuhusiana kama si kupatikana wale wenyewe, online kumbukumbu, kama inafaa. Na kisha kama kuna matatizo, kama kuna inevitably itakuwa, au ni tu na mantiki zaidi ya kukaa chini moja kwa moja, kazi kwa njia ya matatizo na mtu. Au wewe tu kuja katika masaa ya ofisi kweli wanaohitaji kwamba mawazo. Hutaki kupitia fomu za elektroniki, wewe kweli unataka kukutana na mtu. Kuwasiliana kwamba kwa sisi, na nini kitatokea ni wakati wako swali imekuwa kuonekana na mwanachama wa wafanyakazi, na sisi kuamua, yup, hii lazima dispatched moja ya 20 au 30 wanachama wa timu ya hapa ndani ya nchi, utaona katika juu ya kushoto hii kidogo Ingiza kifungo Foleni kuanza flashing juu ya cs50.net / kujadili. Na hii ni kuwaambia kwamba wewe sasa wamealikwa, hivyo kusema, kuingia foleni. Na kwa kubonyeza kifungo kwamba, jina lako kisha kuonekana juu ya iPad kwamba greeter CS50, mmoja wa vichwa kozi ya, mapenzi kuwa wakishika karibu na mlango wa Annenberg, ambaye baadaye kuona kama alivyoonyeshwa hapa, wanafunzi ambao wana maswali juu ya kushoto, wafanyakazi ambao wapo juu ya haki. Na na bonyeza ya kushoto na kulia, mtandao wako browser mapenzi kuanza flashing haraka kama, kwa mfano, Profesa McGonnagal ni tayari kuona wewe mezani hasa katika Annenberg. Hivyo sisi alifanya baadhi ya mwaka huu wa mwisho. Tumekuwa rebooted masaa ya ofisi na re-kutekelezwa mengi ya programu. Hivyo kutambua kwamba hii itakuwa joto juu wiki hii. Lakini pia kutambua pia, katika miaka ya nyuma, kama unaweza kuwa na habari kutoka kwa marafiki, ofisi ya masaa 50 kwa kweli alikuwa na 150 wanafunzi kwa mara moja. Na ni tu haiwezekani kwa sisi kushughulikia kwamba ufanisi, mmoja mmoja, katika jioni. Na hivyo kile sisi ni kweli kwenda kujaribu kufanya mwaka huu ni capitalize kwenye ukweli kwamba mengi ya maswali ni yanayoulizwa mara kwa mara na mara nyingi unaweza kuwa bora akajibu asynchronously. Hivyo unaweza aina ya kufikiri njia ya kukabiliana wafanyakazi wa, na tunaweza kufikiria njia code yako, bila joto shinikizo la lazima wanajitahidi kwa njia hiyo upande kwa upande. Hivyo sisi wanakadiria kwamba takriban tatu au nusu ya maswali itakuwa dispatched katika mtu, na tutaweza kujaribu konoa kama wengi kama nusu au zaidi kielektroniki, wakati wa masaa ya ofisi. Na tutaweza kuendelea kutumia Jadili katika wiki kama vizuri. Na mwisho, kutambua kwamba bila shaka hii inaweza kuchukuliwa kupita / kushindwa. Hivyo kama wewe ni juu ya ua au tu kufikiri kwamba wewe ni kweli uhakika kama hii ni dunia kwa ajili yenu, au hii ni kweli kabisa wa kigeni kwa wewe, kutambua kwamba hii ni njia ya ajabu ya kupata up baadhi kujiamini na ambayo kwa hatua katika darasa, kama mimi kusema ukweli, miaka iliyopita. Na kisha kuwa na wiki tano ya kutatua ya takwimu nje kwa mwenyewe kama unataka kukaa kupita / kushindwa, kubadili barua daraja, au kama. Na kwa kawaida nini kupita / kushindwa haina, nadhani, kwa ajili ya wanafunzi ni kwamba, kama wewe kuweka katika masaa 10 kwamba, masaa 20, yoyote inaweza kuwa kwenye baadhi ya matatizo, na wewe ni kichwa banging yako dhidi ya ukuta, na kama kweli wewe tu hawezi Chase kitu chini, na wewe kuwa na mambo mengi mengine unahitaji kufanya, uaminifu, kile kufikiri kupita / kushindwa ni, inachukua makali mbali ya hali kama hiyo. Ambapo umechukua kitu 90% ya njia. Unajua, siyo kabisa kamilifu. Lakini wewe got mengi nje ya hayo, hata hivyo. Hivyo kufikiria kupita / kushindwa kuwapa ninyi kuwa akili mfano, labda. Haki ya wote, hivyo wiki iliyopita sisi njiwa katika Scratch, na sisi aliyesema kuhusu programu katika ngazi ya haki high graphical. Na leo sisi kufanya mpito kwa lugha kuitwa C, ngazi ya chini ya programu ya lugha juu ya ambayo wengi lugha za kisasa ni sasa kujengwa, ikiwa ni pamoja na baadhi ya ya ndio tutaweza kutumia kuelekea mwisho mrefu wa. Na syntactically, nini wao kuangalia kama yote ni sawa kabisa. Basi hebu kuanza kufanya hii mpito hapa. Hivyo hii ilikuwa mpango wiki iliyopita kwamba alikuwa rahisi ya hujambo dunia mipango. Ni tu kuchapishwa kwa ulimwengu screen hello, na kidogo hotuba Bubble kuja nje ya paka. Naam, kama sisi kuanza sasa kwa hii kutafsiri kwa mwingine lugha, kutambua kwamba mawazo leo na siku ya Jumatano ni sawa, lakini syntax kuanza kubadilika. Hivyo ambapo wiki iliyopita tulikuwa na, wakati bendera ya kijani clicked, wanasema hujambo dunia. Leo sisi itawabidi int, kuu, utupu, printf, kurudi, na baadhi ya wengine katika syntax huko pia. Curly braces, na mabano, na quotes, na whatnot. Lakini kutambua kwamba msingi wa wazo hapa ni uchapishaji, na hatimaye ukweli kwamba kuu sasa ni kwenda kuwa sawa na kuanza mpango. Kuu ni kwenda kuwa ambapo bendera ya kijani mateke mambo mbali. Hivyo sasa hebu tease mbali baadhi ya vitalu jengo hapa kabla ya sisi kupiga mbizi katika baadhi ya mifano halisi. Hivyo sisi kuitwa wiki hii kauli ya mwisho, ambapo ni tu mafundisho. Je, hii - katika kesi hii, wanasema dunia hello. Vizuri katika C, kama tunaangalia tu line kwamba, hii ni jinsi sisi ni kwenda kuanza kueleza kwamba hasa puzzle kipande: printf ("hello dunia");. Na sasa tutaweza tease hizi mbali zaidi na zaidi juu ya muda, lakini kutambua kwamba kuna mfano hapa. Hivyo moja, tuna jambo hili aitwaye printf, ambayo ni kimsingi sawa na neno Sema. Hiyo ni nini ni kwenda kufanya. Printf, na f hapa ina maana ya "formatted". Hivyo njia tu unaweza kuingiza mbalimbali aesthetic maelezo. Hivyo quote unquote ni mwanzo wa nini tunakwenda kuanza wito kamba. neno, maneno, sentensi. kamba katika lugha ya programu ni mlolongo wa sifuri au zaidi wahusika. Hivyo h-e-l-l-o, comma, na kadhalika ni, quote unquote, kamba. Na sasa backslash n, kidogo syntactically isiyo ya kawaida, lakini sisi tayari hufafanuliwa kwamba wiki iliyopita kama maana gani? Ni tu mstari mpya. Ni njia tu ya kuwasilisha kwa kompyuta unataka sawa ya kupiga Ingiza huko, lakini huna wanataka kweli hit Enter na hivyo kuharibu yote ya formatting ya programu yako halisi. Sasa mabano uambatanishe hii kamba, na wazi Paren karibu Paren, na ndani ya kwamba ni kamba yetu. Kwa sababu hiyo ni kwa sababu katika C, na mengine ya programu lugha, mambo kama printf kuchukua hoja, au kuchukua vigezo. Hivyo kuanza kufikiri sasa wa block hii zambarau, Sema kama kazi, kama mbinu, kama utaratibu. Unaweza kweli kuiita chochote unataka kwa sasa, lakini ni ya aina ya mpango miniatyr kwamba tu anafanya moja kitu, katika line moja, si chini. Hivyo printf pia ni nini tuko kwenda kuanza wito kazi, na kazi kufanya kitu - katika kesi hii Prints string formatted kwa screen - lakini kazi pia kuchukua hoja au vigezo. Na kwa hoja au vigezo, asante, tuna maana ya kwamba tabia yao yanaweza kuathiriwa na kile wewe kupita katika ndani ya mabano. Hivyo katika kesi hii, mahitaji printf kuambiwa na magazeti, na sisi kupita tu katika, katika quotes mbili hapa, kamba kwamba sisi kweli unataka magazeti. Na juu ya semicolon mwisho sana ya mstari huu ni tu kihistoria kero ambapo katika mwisho wa mistari zaidi ya kificho, kuweka semicolon kufanya super wazi kwa kompyuta kwamba hii mstari wa kanuni itaishia hapa. Sasa hii ni nzuri kwa sababu kama tutaweza kuona kama mipango kupata zaidi tata, semicolon nitafanya binadamu super wazi kwetu, na pia kompyuta, ambapo mstari wa kanuni mwanzo na mwisho. Kutambua kwamba baadhi ya lugha hawana baadhi ya haya maelezo sawa. Na kwa kweli, katika JavaScript, huna haja ya kitu daima kama semicolon. Lakini zaidi juu ya kwamba kuja. Hivyo matanzi. Tulikuwa na kitu kama hii, sana intuitively, dhahiri, kufanya kitu tena na tena na tena. Kama kuweka kwenye soksi, au kusema hello, katika kesi hii. Naam, kuanzia leo katika C, tunaweza kueleza hii Scratch kuzuia kama wakati (wa kweli) printf ("hello dunia"). Hivyo taarifa tuko mapya ya kujenga juu ya literally puzzle kipande kutoka kabla. Tuna huo zambarau kuzuia, lakini ni ndani ya hii bracketed Forever block, na njia bora ya kutafsiri kwamba na C ni kama ifuatavyo. Hakuna Forever Keyword. Huwezi tu aina f-o-r-e-v-e-r katika C. Hivyo Analog karibu ni wakati. Sasa, wakati (wa kweli) inaonekana kidogo kijinga kwa sababu gani thamani ya mabadiliko ya kweli milele? Takribani si. Ni kama kusema wakati mmoja, wakati juu, wakati kweli. Ni jambo wote huo, kweli ni mara ya kesi. Hivyo kitanzi hii ni kweli inducing ni aina gani ya kitanzi? Tu kitanzi usio, kulia. Kitanzi Forever au kama sisi kuitwa ni wiki iliyopita, tu kitanzi usio. Hivyo wakati mwingine hiyo ni mbaya. Wakati mwingine kwamba mdudu, wakati mwingine kwamba sababu ya kupata turtle beach mpira au hourglass au kama. Lakini katika kesi hii, sisi makusudi, kwa chochote sababu, alitaka magazeti kitu kimoja tena na tena na tena. Au katika kesi ya kama kuangalia, unataka kufanya kitu tena na tena na tena. Hivyo matanzi usio inaweza kufanya akili. Na hii ni jinsi katika C tupate kutafsiri Forever kwa kificho. Hivyo sasa huyu 'kidogo zaidi maalum. Tulikuwa kurudia mara 10 kauli ifuatayo. Hivyo wakati (wa kweli) haina kabisa kufanya kazi huko, kwa sababu kweli ni kweli daima. Hivyo kama sisi badala kuangalia toleo C, sasa syntax anapata zaidi kidogo cryptic. Lakini kwa kuwa waaminifu mara moja kuanza kuona hii, ni wote anapata pretty familiar haraka. Hivyo hii ni kile kinachoitwa kwa kitanzi. kwa kitanzi itakueleza kompyuta kufanya kitu tena na tena na tena kwa muda mrefu kama mambo haya ni ya kweli. Sasa nini maana sisi na kwamba? Naam, kuna sehemu tatu kwa ajili ya kitanzi, na tunakwenda kurudi huu katika mazingira ya halisi mifano katika wakati huu. Hiyo msiwe na wasiwasi kama haina kabisa kuzama katika wote mara moja. Lakini int i = 0 ni, mrefu hadithi fupi, akisema nipe variable kwamba integer ya aina, hivyo nipe namba kuitwa i, na initialize kwa 0. Hiyo ni nipe kama x kimahesabu kutofautiana na initialize kwa 0. Lakini katika kesi hii sisi kuitwa ni i. Kisha katika katikati, inasema i ni chini ya 10. Anayewambia kompyuta kufanya mambo yafuatayo muda mrefu kama i ni chini ya 10. Na ni wazi ni kuanza chini ya 10 kwa sababu ni kuanza saa 0. Kisha mwisho, unaweza labda nadhani nini i + njia +. Ni kidogo ya syntax kwamba njia tu increment i. Hivyo kuongeza 1 kwa i, tena na tena na tena. Na hivyo kama tutaweza kuona hii kitanzi, syntax hii, badala yake, zana za just kitu kimoja kwamba, kusema ukweli, katika Scratch ilikuwa tu hivyo rahisi kueleza. Rudia 10, na wewe ni kosa. Katika C, na katika lugha zaidi ya programu, tuna kuwa zaidi kidogo mazingatio kwa kompyuta na kweli taja kitu kama hiki. Lakini tutaweza kurudi hii na syntax nyingine. Je kuhusu vigezo? Katika Scratch sisi alikuwa na kitu kama vitalu haya machungwa, ambapo mimi nilikuwa kutangaza kutofautiana. Hebu kiholela kuiita counter. Hebu initialize kwa 0, na kisha hebu milele kufanya kitu. Katika kesi hiyo katika Scratch mimi kusema counter, hivyo paka kinaendelea kuwa kidogo hotuba Bubble hiyo akizungumza idadi hiyo ni katika variable hii. Na kisha tuna kukabiliana na mabadiliko kwa 1. Basi wote wa hii umefungwa ndani ya lock Forever. Hivyo sisi tayari sasa na kuanza ujenzi katika C na ambayo kutafsiri hii. Njia moja tunaweza kufanya hivyo ni hii. Nipe integer, simu yake ya kukabiliana. Initialize kwa 0 katika mstari wa kwanza huko. Wakati (wa kweli), hivyo nina kuiba kwamba wazo kutoka muda tu iliyopita, kwenda mbele na kufanya yafuatayo. Magazeti nje ya kukabiliana, na kisha increment counter, tena, na tena, na tena. Au tena, + + njia tu kuongeza 1 kwa kitu fulani. Lakini kuna kipande mpya ya syntax hapa. Nini kuruka nje kama si miongoni mwa mifano yetu ya awali? Ndiyo, hii d%. Hivyo unaweza labda infer nini hii ni kufanya, kusema ukweli, kwa kuzingatia juu ya nini kuzuia Scratch ni kufanya. Lakini tena katika C, sisi tu kuwa kidogo zaidi hasa linapokuja akielezea wenyewe. Hivyo printf ("% d \ n"). Vizuri zaidi ya kwamba tunaweza kutupa mbali kama familiar. quotes tu ina maana kamba, backslash n ni tu line mpya. Hivyo tu jambo jipya hapa ni% d. Na yote ni ni placeholder. % D ni kwenda kuashiria idadi decimal. Na% d njia ya kompyuta, kuweka idadi decimal hapa. Naam, nini idadi unataka kuweka huko? Naam, kama unaweza labda infer, baada ya comma tunasema counter, hiyo ni jina la kutofautiana kwamba sisi alitangaza au umba mistari michache iliyopita. Hivyo hii ni njia tu C ya plugging katika variable katika kamba dynamically. Kwa sababu kwa kulinganisha, kama mimi alikuwa badala amefanya kitu kama hii, printf ("counter"), nini ingekuwa hii mpango badala kufanya, labda? Ni itabidi literally magazeti "counter". Ambayo si athari kwamba nataka. Nahitaji mbadala katika thamani baadhi numeric. Hivyo tutaweza kuona kazi ya kwamba basi, kama printf, wanaweza kuchukua si tu moja tu hoja, kama "Hello dunia". Wanaweza kuchukua quote unquote comma, na kisha baadhi ya vigezo kwamba kupata plugged katika, kama tutaweza kuona kamba uliopita kupitia hizi ishara% placeholders. Naam nini kuhusu misemo Boolean? Misemo Boolean yalikuwa haya maadili, kweli au uongo. Ndiyo au hapana. 1 au 0. Juu au mbali. Hivyo katika Scratch wao kuangalia kama hii, na taarifa kwamba chini block hapa ni kweli kushirikiana ya mbili vitalu vidogo vidogo. Kwa hiyo mimi aina ya kuburuzwa na imeshuka vipande puzzle tatu pamoja na kufanya kwamba tena puzzle kipande pale ili kwamba mimi inaweza kupeleka wazo kwamba nataka x kuwa chini ya y na y kuwa chini ya z. Na hivyo naweza kutafsiri hizi mbili mistari tofauti kama ifuatavyo. moja ya juu inaweza sana trivially Tafsiri ya C, na tu x ni njia yetu ya kusema, katika C, nipe kupata kazi ambayo mtu mwingine aliandika. Na katika kesi hii mimi huduma kwa sababu nataka printf. Sasa sisi kupata kuu int (utupu). Hivyo hii ni moja ya mambo haya, kusema ukweli, kwamba siku 0, pretty sana nimekuwa na aina ya nje ya eneo, kwa sababu tu si ya kuvutia kielimu, baadhi ya syntax. Lakini kwa sasa kujua kazi ya kwamba, inayojulikana kama taratibu, au mbinu, kwa ujumla kuzalisha baadhi ya thamani. Wao kufanya kitu. Wao kuja na jibu. Wao kuzalisha pato. Hivyo int ijayo kuu ni tu wetu shorthand njia ya kusema kwamba kazi hii, utaratibu huu, ni hatimaye kwenda kukupa nyuma idadi. Na kwa nini kuwa ni, tutaweza kuja nyuma. Kuu ni tu dunia default kiwango kwa default kazi hiyo ni kwenda kupata kunyongwa katika mpango C wakati wewe kukimbia. Tupu tu ina maana jambo hili, kuu, inachukua hakuna hoja, katika kesi hii. Hivyo mimi nina kuwa super wazi. Hakuna masharti huko, hakuna koma. Tupu ina maana hoja hakuna kuu. Sasa mwisho, nashiriki, mwisho mistari miwili ni ukoo. Ndani ya braces curly tuna printf na tuna kurudi. Na kurudi ni aina ya bahati mbaya kwamba tuna kuiweka huko, kwa sababu katika kesi hii siyo kufanya yote kiasi cha riba. Lakini katika mpango wa kompyuta, wakati kazi anarudi 0, kwamba maana yote ni sawa. Hakuna kitu potoka. Kwa kulinganisha, ikiwa kazi anarudi 1, au 1 hasi, au hasi 1337, au namba baadhi random kama hiyo, ya kwamba ujumla maana yake ni kwamba kosa kweli imetokea. Hivyo kama wewe ni juu ya Mac au PC yako yako, kama wameweza milele kumwona baadhi ya ujumbe annoying sababu kompyuta yako imeharibika au waliohifadhiwa, na kuna cryptic makosa ujumbe, na kisha baadhi ya kanuni, kama mfumo wa kanuni 1,2,3,4, baadhi ya namba, kwamba kwa ujumla ni undani unnecessary kuwaambia zaidi ya binadamu sisi, lakini kwamba ni nini baadhi ya kazi au baadhi Mpango huo kwa kweli alirudi, thamani zisizo sifuri. Na faida ya hii ni kwamba ina maana 0 yote pia, na basi kimsingi kuwa na idadi ya usio wa mambo ambayo unaweza kwenda vibaya. Ambayo ni kwa nini walichagua 0 ajili ya mema na thamani isiyo-sifuri kwa mbaya, kama sisi Mtakuja kuona. Basi hebu kwenda mbele na kuandika hii. Hivyo kukumbuka kuwa siku nyingine mimi kutumika Mac yangu ya kufungua terminal dirisha, na kisha mimi kufunguliwa Nakala mpango, kama TextEdit, na mimi kuanza kuandika baadhi code. Naam, hivyo faini. Lakini uzoefu wako ni kwenda kuwa tofauti ya Mac, au kwenye kompyuta Solaris, kompyuta Linux, chochote uendeshaji mfumo kutokea kwa kutumia. Na hivyo katika shaka, nini sisi badala ya kutumia ni kitu kuitwa Appliance CS50. Hivyo Appliance CS50 ni kipande cha programu downloadable kwamba utapata kukimbia mfumo wa uendeshaji kuitwa Linux, hasa Fedora Linux, juu ya Mac au PC yako mwenyewe. Na kufanya hivyo kwa kushusha kitu kinachoitwa hypervisor. Basi wote wa hii itakuwa kumbukumbu katika tatizo kuweka 1. Na wewe utakuwa na kuongozwa kuelekea nini unahitaji download. Lakini matokeo ya mwisho, kama una Mac au PC, ni wewe download baadhi ya programu bure. Wewe kisha download Appliance CS50, na kumweleza kwamba programu ya bure - hypervisor - kuendesha Appliance CS50 katika dirisha kwenye kompyuta yako. Na nini kinachotokea ni hii. Mimi sasa, taarifa hapa, nini inaonekana kuwa desktop mazingira. Na napenda kweli shrink dirisha hili moja. Hivyo hii ni sasa Mac yangu, kwa dirisha kidogo hapa, na ndani ya ya dirisha hili hutokea kwa kuwa kabisa mbalimbali ya mfumo wa uendeshaji. Hakika kuna menyu hii kuanza chini hapa, reminiscent ya Madirisha, ambayo ina rundo zima la menyu ndogo, ikiwa ni pamoja zilizounganishwa na mwongozo CS50, Dropbox, na kama. Na nini mazingira haya sasa ni mazingira ya kiwango kwamba wote sisi sasa unaweza kutumia, hivyo kwamba hakuna jambo gani yako kompyuta ni, nini una imewekwa juu yake, nini toleo ya Mac OS au Windows wewe ni mbio, sisi wote sasa wana sawa mazingira. Na sasa katika mazingira haya tunaweza kuanza kuandika baadhi code. Hivyo nina kwenda kwa kwenda mbele na kufungua programu inayoitwa gedit. Hii ni kulinganishwa na notepad.exe, au TextEdit juu ya Mac. Na hii ni rahisi tu super Nakala editing mpango kwamba inaonekana kama hii katika mtazamo wa kwanza. Sasa katika sana juu, nina palette nyeupe, chini mimi kuwa na dirisha hili mweusi kwamba anasema jharvard @ appliance. Na kwamba kwa sababu akaunti user kwamba sisi kabla ya kuundwa kwa kila mtu anaitwa John Harvard. Yeye ana folder ambapo wote wa files yake ni kwenda, na hapa ni wapi tunaweza kuanza kuandika baadhi code. Hivyo basi mimi kwenda mbele hapa na kuvuta kidogo tu, na mimi nina kwenda kufanya # pamoja , int kuu (utupu), na basi mimi naenda kufanya printf ("hello dunia") ; Kurudi 0. Sasa hii yote ni kabisa nyeusi na nyeupe. Hebu kwenda mbele na kufanya jambo moja kufundisha gedit nini mimi kweli kufanya. Hebu kwenda Ila Kama. Mimi nina kwenda kuchagua katika upande wa kushoto hapa jharvard. Hivyo tena, hata kama wewe sijawahi kutumika Linux kabla, kusema ukweli siku hizi, wote ni kugatua ndani ya kimsingi huo aina ya interface - Mac OS, Windows, na Linux. Basi, mimi alichagua nyumbani jharvard ya folder hapa. Na mimi nina kwenda kuokoa faili hii kama hello.c. Hivyo katika sana juu, mimi typed hello.c; kumtaja C mpango na ugani c. ni nini mambo ya kawaida. Na mimi hit Ila. Na sasa nini ni nzuri ni kwamba nimepata ufanisi kufundishwa gedit, kwamba hii ni programu C. Ona kwamba Nakala yangu nyeusi na nyeupe ni rangi coded sasa, au syntax alizungumzia, ambayo tu huchota makini wangu tofauti semantic sehemu ya mpango. Katika juu kushoto hapo, kama mipango yangu kupata ngumu zaidi, mimi nina kwenda na muhtasari wa mambo yote nimeandika. Basi hiyo ni it up huko. Hivyo basi mimi sasa zoom nje na kwenda chini kwa dirisha hili terminal. Hivyo hii ni labda mpya kwa watu wengi. Kama wewe sijawahi kutumika mstari amri mazingira, ve kamwe kutumika DOS, au wewe sijawahi kutumika Linux, au wewe sijawahi kufunguliwa yako Mac OS terminal dirisha, kuna mengi ya mambo inaweza kufanya na GUI, kama vile akizungumzia, na kubonyeza, na akawatoa, na kuacha, na kama, lakini kwa ujumla - hakika katika ulimwengu wa sayansi ya kompyuta - kutumia mstari amri, ambapo huna mouse yako ujumla, wewe tu keyboard yako, ni kweli mengi nguvu zaidi kuliko interface, mara moja kupata acclimated kwa mbalimbali amri. Na wewe mwenyewe aina ya bure ya wanaohitaji kwa uhakika na bonyeza katika kila kitu. Hivyo katika gedit tutaweza aina ya kuwa bora ya walimwengu wote. Tunaweza Drag na kuacha maandishi, tunaweza kuona nzuri na rangi coded. Lakini linapokuja wakati wa kuendesha programu yetu, tutaweza wakati mwingine tu kutumia dirisha dogo hapa. Hivyo nina kwenda kwa kwenda mbele na kufanya hili. Katika dirisha chini nyeusi na nyeupe, mimi nina kwenda mbele na kuandika Clang. Na Clang ni jina la mkusanyaji. Ni mpango ambao waongofu chanzo yangu code ndani, hivyo, kitu code. Sekunde 0 na 1s, kuwa tuliona kwa ufupi ya wiki iliyopita. Kumbuka kutoka wiki iliyopita, sisi aliahidi kwamba sisi wanakwenda kwenda kutoka kitu kama hii - sisi zinahitajika kuwa kitu kama hii - na hii ni kwa hakika si kitu ambacho binadamu kinaendelea kufanya manually. Hivyo badala tunakwenda kutumia mpango, na kwamba mpango katika kesi hii inaitwa Clang. Na jina la mpango wangu ni hello.c. Hivyo ili kukusanya hello.c kutoka chanzo code katika kitu code, au sekunde 0 na 1s, ni lazima suffice tu kufanya hii na hit Enter. Sawa, hakuna kinachoonekana kuwa kilichotokea. Lakini Mimi najua sasa, au kutoka wiki iliyopita, kwamba jina default ya mpango, wakati imeandikwa katika C, ni upumbavu kuitwa a.out. Wengi uninteresting jina unaweza kuja na. ni herufi ya kwanza ya alfabeti, nje ni nini ilikuwa outputted, lakini na iwe hivyo. Hii ni programu yangu, na sasa dot slash, kama tutaweza kuona, ni kweli tu aina ya hulka ya usalama, kwa sababu a.out ni mpango niliandika. Ni hakuja kwa kompyuta yangu, ni si katika Mpango Files. Ni si katika folder Mac OS Maombi. Mimi haja ya kuwa super wazi kwa kompyuta, na kusema mpango huu, a.out, ni katika folder ya sasa, sasa directory. Na njia hii kuwakilisha katika mazingira kama hii ni dot inawakilisha chochote folder wewe ni sasa in Na hivyo. / Njia tu kukimbia a.out katika folder sasa. Na mimi kukimbia hii kwa Ingiza, na voilà, mpango yangu ya kwanza kabisa. Sasa basi mimi kuchukua hatua ya nyuma. Dirisha hili ni kidogo kidogo, na kutambua kwamba chini kushoto wa appliance hapa ni icon mwingine. Moja ni Chrome, ambayo inapaswa kuwa familiar kabisa, tu mtandao browser ndani ya appliance. Na hii icon nyeusi na nyeupe ni tu kubwa terminal dirisha. Hivyo kama anapata annoying kidogo ya aina ya kuwa tu hii kidogo kidogo kipande cha dirisha na ambayo kwa kuingiliana na mipango, tunaweza badala kufanya hili. Na sasa napenda kuanza kuandika chache hivi karibuni kuwa ukoo amri. ls. Hivyo ls ni amri kwa orodha. Hivyo katika OS Mac au Windows, ungekuwa ujumla mara mbili-click folder na kisha, voilà, unaweza kuona wote wa files mbalimbali na folders. Katika mstari amri mazingira, ambapo unaweza tu aina amri au maandishi, ls ni sawa. Hivyo unionyeshe nini katika saraka hii. Sasa kuna rundo la stuff hapa kwamba wote kidogo familiar na usio wa kawaida kidogo. Lakini ona kwamba tu kama Windows na Mac OS, jharvard ina folder desktop. Hivyo yoyote icons kwamba ni juu ya desktop yangu kutokea kuwa katika folder hiyo. Kuna folder downloads, mambo ambayo Chrome ili kuweka huko. Dropbox. Hivyo appliance kuja na kujengwa katika msaada kwa ajili ya Dropbox hivyo kwamba zaidi ya muhula, unaweza Sync na Dropbox yako akaunti ili wote wa programu yako ni backed up. Wao ni kupatikana kwenye kompyuta yako mengine. Kama kitu milele kitaenda vibaya na appliance, unaweza urahisi sana kuokoa kutoka Dropbox. Hivyo folder hiyo ni pale kwa ajili hiyo. Kuna mbili files kwamba mimi alifanya - hello.c na a.out. Na kisha kwa haki kuna baadhi folders nyingine kwamba tutaweza kupata kuelekea mwisho wa muhula, na mtandao programu. Hivyo wakati mimi kufanya /., A.out, Ingieni, kwamba ni kusema kwenda katika saraka ya mimi niko katika, saraka ya sasa, na kukimbia programu inayoitwa a.out haki pale. Haki wote, ili ni nzuri na nzuri, lakini si wote kwamba kulazimisha kuandika programu inayoitwa kusaidia a.out. Hivyo tunaweza kweli kufanya hii tofauti kidogo. Hivyo badala ya tu Clang mbio, hello.c, hebu kuongeza kile kinachoitwa mstari amri hoja. Hivyo mstari amri hoja, au kubadili katika kesi hii, ni tu mwingine neno au maneno kwamba unapoandika katika kuchochea baada ya mpango unataka kukimbia. Hivyo katika kesi hii, Clang ni mpango nataka kukimbia,-o njia pato faili hiyo tena kuitwa a.out. Pato faili inayoitwa hello, na kufanya hivyo na kuandaa mwisho neno juu ya mstari, hello.c. Hivyo katika muda mfupi, hii ni uboreshaji sana kukokotoa, ambapo badala ya kuwa na hii stupidly aitwaye faili a.out, Mimi sasa wanaweza kufanya Clang-o hello, kisha hello.c, na kisha hit kuingia. Kitu inaonekana kutokea, lakini tena sana kama na 0 - wakati kitu inaonekana kutokea kwamba maana ya kitu kibaya kilichotokea - hivyo hebu kufanya ls sasa, Ingieni, na kwa kweli mimi sasa kuwa na mpango hello. Hivyo kama ninapoandika hujambo sasa, amri halikupatikana. OK, /.. Hivyo hasa haki. Hivyo kwa sababu mpango huu niliandika, na hawakuwa kuja na kompyuta, /. hello, Ingiza, ina maana Mimi sasa mbio hello. Basi hiyo ni pale. Sasa nini tutaweza hatimaye kupata line zaidi na zaidi amri hoja kwamba kuruhusu sisi kufanya zaidi, lakini tu kwa ajili ya wale kwa ambaye hii inaweza kuwa na umri wa kofia, napenda kwa kweli kwenda katika saraka hapa na kutoa tu wewe teaser ya jinsi mwingine sisi inaweza kwenda juu ya utekelezaji wa dunia hello. Hebu kwenda hapa, na mimi nina kwenda kuufungua. Hivyo kwa kweli, mimi nina kwenda kuelezea nini mimi kufanya, hivyo hii ni muhimu. Hebu nyuma juu. Hivyo nimekuwa kufanya hii muda mrefu. Hivyo taarifa juu ya upande wa kulia kuna michache ya directories kwamba ni oddly aitwaye source1m na source1w. Hii ni silly mkataba sisi kutumia. Chanzo njia tu chanzo code, 1 inamaanisha hii ni wiki moja, na m ina maana Jumatatu, na w ina maana Jumatano. Hivyo chochote cryptic huko. Ni tu shorthand nukuu. Haya mambo ya bluu ni folders, inayojulikana kama Directories. Nataka kwenda kwenye folder kwamba sasa, na kwenye kompyuta ya kawaida Mimi nilikuwa tu mara mbili-click kwenye icon folda na kuna wangu wote files. Lakini katika mazingira mstari amri, siwezi kabisa kufanya kwamba, hivyo badala yake, mimi kuwa na mabadiliko ya directories manually. Hivyo kama ninapoandika cd na kisha source1m, Ingieni, taarifa kwamba haraka yangu, kitu katika nyeupe kushoto, tu iliyopita. Na hivyo kweli kweli, wakati tu alisema mabano na kisha kidogo squiggle, alama tilde, kwamba tu maana mimi nilikuwa katika saraka ya nyumbani Yohana Harvard wa, wake My Documents, files yake binafsi. Lakini sasa katika mabano inasema ~ / source1m. Hii ina maana mimi niko katika folder aitwaye source1m kwamba katika saraka ya nyumbani Yohana Harvard ya. Hivyo kama mimi sasa nataka kuorodhesha files katika folder hili, rahisi swali, ninapoandika tu ls. Na sasa naona wote wa files kwamba mimi kabla ya kuundwa kwa leo hotuba, ambayo yote, au ambao wengi, kutokea kukomesha katika. c. Hivyo basi mimi kwenda mbele sasa na kukimbia gedit ya programu inayoitwa holloway.c, ambayo imeandikwa na hacker baadhi random kwenye mtandao, kwamba inaonekana kidogo kama hii. Na sisi si kwenda na kwenda kwa njia hii moja katika yoyote undani, lakini kwa wale zaidi ya starehe, hasa, kama unataka kuchukua nadhani kama yale ya programu hii haina hapa. Mapumziko uhakika, kama wewe ni pungufu au zaidi ya starehe, sisi siyo hata kupata aina hii ya kitu na mwisho wa hii muhula. Hii ni nini ni mfano wa mashindano obfuscated C, ambayo njia kuandika zaidi cryptic kuangalia mpango uwezekano unaweza kwa outdo watu wengine smart, ambaye ni vile vile kujaribu kuandika mambo na kuonyesha mbali kwamba wanaweza kuandika zaidi cryptic mambo kuliko wewe. Hivyo hii si mfano wa mpango wa kuandikwa vizuri kutoka mtazamo wa style, huu ni mfano wa mpango huo mafanikio ya mashindano, kwa ajili ya watu kujaribu kuwa hazieleweki na kufikirika. Hivyo kama sisi kukimbia jambo hili, basi mimi kwenda katika terminal dirisha yangu, hivyo kusema. Hivyo mazingira haya nyeusi na nyeupe inaitwa terminal dirisha ujumla. Hebu kwenda mbele na kukusanya yake. Sitakuja kutumia Clang, kwa sababu mpango huu ni kidogo cryptic na inahitaji tofauti compiler, mmoja aitwaye GCC. Lakini haina kitu kimoja. Inachukua chanzo code kwa kificho kitu. Na sasa kama mimi kukimbia a.out, kwamba mpango niliona tu gani hii. Hivyo wenzake kwamba mwaka alishinda kwamba kugombea. Anyhow, sisi siyo kwenda katika mwelekeo huo, per se. Basi hebu kweli kujaribu sasa tease mbali nini tunaweza kufanya na haya ya msingi jengo vitalu kufanya zaidi na zaidi kuvutia mipango. Hivyo tumekuwa imeandikwa mpango, tumekuwa kuendesha programu. Sasa tunaweza kweli kurahisisha na tena kuwa na kuandika Clang neno katika haraka. Ni zinageuka kama mipango yetu kupata zaidi cryptic, tunaweza, au ngumu zaidi kuliko, tunaweza kweli kuendesha amri hii. Hivyo basi mimi kurejea nyumbani saraka wangu, ili kuzungumza, basi mimi kuondoa - rm ni amri kuondoa - I'm kwenda kuondoa faili inayoitwa a.out na hello. Na sasa taarifa katika mazingira mstari amri, kiasi kama katika GUI, unaweza kupata ilisababisha. Siwezi bonyeza kifungo ingawa; mimi kuwa na aina y kwa ndiyo, y kwa ndiyo. Na sasa kama ninapoandika ls tena, ilani kwamba wale kijani programu - a.out na hujambo - wamekwenda. Jihadharini rm. Inaweza kufanya mambo mabaya, kama tu unaweza na akawatoa mambo ya takataka yako. Hivyo sasa hebu kwenda mbele - na mimi naweza kufanya hili - Clang-o hello, hujambo - Mimi niko tayari kuchoka kuandika kwamba amri. Hata ingawa mimi typed ni kidogo haraka. Hivyo tunaweza kufanya kufanya badala hello. Hivyo kufanya si compiler. Ni tu mpango kirafiki kwamba anakuja na Linux, katika hii kesi - mfumo wa uendeshaji - kwamba automates mchakato wa kuandaa programu. Hivyo badala ya kukumbuka Clang-o filename na basi hivyo nje, hasa mara moja wale mistari kupata tena na tena, siwezi kuandika tu kufanya. Na hii ni kwenda mate nje rundo zima ya mambo ambayo tutaweza hatimaye kuona hii muhula. Lakini taarifa sasa kama mimi aina ls, hujambo ni nyuma katika saraka yangu. Na hakika siwezi kukimbia kwa /. Hello. Hivyo kufanya tu automates mchakato wa mbio nini, katika kesi hii, tena sana, ngumu zaidi amri. Hivyo sisi ni kwenda kuanza kutumia kufanya, kwa sababu tu ni mengi zaidi user friendly. Lakini sasa hebu kufanya mpango zaidi ya kuvutia kuliko tu kusema hello. Hivyo katika mipango tumekuwa imeandikwa hivi sasa kuna kuu. Hiyo tu kitu default kwamba kila kitu mateke mbali. Lakini kuna kazi nyingine huko nje kama vile, na stdio.h ni kitu kuwa tuliona ya wakati juu ya zetu faili kabla, na kwamba ni nini inayojulikana kama maktaba standard. Ndani ya maktaba ya kiwango ni rundo zima la kazi kwamba mtu mwingine aliandika, na tunaweza kuanza kutumia hizi kazi ya kuandika zaidi kuvutia mipango wenyewe. Hivyo basi mimi kwenda nyuma ya appliance. Mimi naenda kuifunga dirisha terminal. Mimi naenda kuyafunga mambo sisi aliandika mapema, na kwenda tu ndani ya hello.c, na taarifa ya sasa siwezi kufanya yafuatayo. Wapendwa dunia si yote ya kuvutia; Ningependa kubinafsisha mpango huu kwa mwenyewe. Hivyo badala ya kusema dunia, Mimi naenda kwenda mbele na kusema - Mimi naweza andika David - lakini kwa kweli hii ni aina ya uleule. Lakini hebu jaribu nje ya wazo hili placeholder. Kumbuka kwamba katika C, badala katika printf, tulikuwa na hizi placeholders, na kuna zaidi kuliko tu d%. Hivyo% d ilikuwa, haraka sanity hundi. Okay, idadi decimal, hiyo ni yake. Decimal digits, kwamba ni yote. Hivyo c%, kama sisi kukutana, ni kwenda kuwa tabia. Kuweka tabia hapa, barua kupitia z, au uakifishi ishara. tabia moja,% f, mtu yeyote kujua kutoka lugha nyingine? Hivyo floating kumweka thamani. idadi halisi. Hivyo si idadi decimal - hii ni kweli idadi halisi na uhakika decimal, na baadhi ya idadi ya tarakimu ya kushoto na haki yake. % S, kamba. Hiyo moja tunakwenda kuona mara nyingi kabisa. kamba, tena, ni tu neno, maneno, mlolongo wa binafsi ya wahusika. Na Mwisho, lld? Hivyo hii ni zaidi ya kesi kona. Muda mrefu, muda decimal. Hivyo kama unataka si tu idadi hiyo ni kubwa hii, wewe wanataka idadi kubwa zaidi, wewe ni kwenda kuwa na bayana kwa kompyuta ambayo ni ya kawaida fulani. Basi hebu tweak hii kidogo kidogo. Badala tu ya code ngumu katika Daudi, basi mimi kidogo dynamically kusema s%. Hivyo kuweka% s hapa, ambayo ni placeholder kwa kamba. Basi mimi kufanya comma, na kisha "Daudi" zaidi ya hapa. Sasa hii si yote ambayo kielimu ya kuvutia, kwa sababu wote nimekuwa kufanyika sasa ni kweli kujenga zaidi kazi kwa kompyuta. Badala ya kuwaambia kompyuta kufanya yote haya kwa mara moja, mimi nina sasa akisema kufanya hivyo na Insert string hapa hatimaye, comma, hapa ni kwamba kamba. Hivyo hii si uboreshaji bora, lakini ni angalau hatua kuelekea mpango kuvutia zaidi. Kwa sababu sasa, napenda kwenda mbele na kufanya hii dirisha kidogo kubwa zaidi, basi mimi kwenda mbele na kukimbia kufanya hello. Na sasa, /. A.out si kazi, kwa nini? Haki zote, sasa ni kuitwa hello. Hivyo tena kufanya, na pia Clang kwa o-, jina mpango kuwa ni kitu zaidi ya kuvutia. Na voilà: sasa inasema hujambo Daudi. Haki zote, bado mpango wa kijinga. Hivyo sasa hebu kweli kwenda nyuma hapa na kuanzisha dhana ya kutofautiana. Je, si ni kuwa nzuri kama mimi naweza kutangaza variable ambao ni aina kamba? Na thamani ya kutofautiana kwa kweli inakuja kutoka kwa mtumiaji naye au mwenyewe. Hivyo kiholela, mimi naenda kuwaita s yangu variable, ambayo ni tu mkataba kawaida wakati una moja variable kuitwa kamba. Mimi naenda kufanya ishara sawa, na kisha mimi naenda kuwaita kazi kuitwa GetString. Hivyo GetString si kitu ambacho huja kujengwa ndani ya C. Ni kazi kwamba wafanyakazi CS50 aliandika, kweli tu kwa haya michache ya kwanza ya wiki, kurahisisha mchakato wa kupata pembejeo na kupata user mtumiaji pembejeo katika fomu ya masharti, au idadi, na vile. Hivyo GetString ni kama printf, lakini ni wazi badala ya magazeti ni kwenda kufanya nini jina lake anasema, kupata kamba. Lakini kwa kutumia GetString, sisi itawabidi kufanya mabadiliko hapa, zaidi ya huu. Hivyo intuitively, mpango huu, hopefully, ni kwenda kwa namna fulani kupata kamba kutoka kwa mtumiaji, na kisha nini ni kwenda kufanya pamoja na kamba hiyo, iitwayo s? Ni tu kwenda na magazeti hayo, haki? Bado si mpango kuchochea kwa sababu wote ni kwenda kufanya ni kuziba katika thamani ya kwamba ndani ya ambapo% s anasema ni lazima kwenda. Hivyo basi s angalau kuona haya katika action. Hebu kuokoa na zoom nje. Sasa katika terminal dirisha yangu hapa chini, kipande kidogo cha moja, basi mimi tena kufanya kufanya hello. Okay, na ah, damn; I got rundo zima la makosa. Hebu kitabu juu, na tunaona kwanza wetu - hivyo hebu kweli kufanya hili katika dirisha hata kubwa hivyo unaweza kuona jinsi vibaya mimi Star up - hivyo kufanya hello. Sawa, hayo ni maafa, haki? Nimekuwa imeandikwa mistari mitatu ya kificho, na ni niliyopewa makosa 12. Hivyo kwa nini hii? Hivyo bahati nzuri, mara nyingi wakati unaweza kuona wengi, wengi makosa kutema mate nje mara moja, ni kweli kwa sababu tu wameweza kuchanganyikiwa kompyuta hapa juu. Na bado kuchanganyikiwa na wakati anapata chini hapa. Na hivyo tu kuanza tripping, na dhambi, na kutema mate nje zaidi kuliko kweli inatisha stuff inatumika. Hivyo kwa ujumla, daima kuanza na moja ya juu. Hivyo sana juu zaidi mfano wa nyekundu, makosa ujumbe ni hii. Matumizi ya string Undeclared kitambulisho, je, mimi maana ya kiwango katika? Sikuweza. Mimi maana ya kamba, lakini hii ni kwa sababu, pia, kamba neno kwamba mimi kuendelea kutumia maneno kweli haipo katika C ama. Ni kitu tutaweza kutumia tu kwa wiki ya kwanza au mbili hapa, lakini lipo katika faili inayoitwa cs50.h. Hivyo kwa sasa, kujua kwamba kuna hii maktaba nyingine kwamba wafanyakazi aliandika, hivyo ni kimeandikwa hivi karibuni zaidi kuliko stdio.h. Lakini ndani ya cs50.h ni ufafanuzi, kisawe cha aina, ambayo inajenga hii string neno. Hivyo sasa napenda kwenda nyuma terminal dirisha yangu. Mimi naenda wazi hii fujo nzima kwa Ctrl-L. Tutaweza tu kuifuta kila kitu safi, na mimi nina kwenda mbele na kufanya hujambo tena, Ingiza. Hivyo kile kilichotokea sasa? Sasa wote wa makosa hayo akaondoka. Hivyo nini mimi kweli kosa gani? Nimekuwa tu kufundisha kompyuta string lipo, na ni kwa kuwa faili inayoitwa cs50.h. Hivyo kuacha kulalamika, kwa sababu sasa unajua ambapo kupata tamko kwamba kazi ya hivyo kusema. Ambapo lipo katika dunia. Hivyo sasa mimi nina kwenda mbele na kukimbia hello. Mimi wanaonekana kuwa kitanzi usio, likitokea chochote cha. Hivyo mimi haja ya aina kitu hapa, kulia. mstari wa kwanza wa code katika mpango wangu alikuwa GetString. Hivyo ni literally kusubiri kwa mimi kupata kamba. Hivyo kwa mantiki kwamba ndiyo, ni kitanzi usio. Inavyoonekana katika GetString ni default tabia ambayo sisi aliandika - wafanyakazi - kwamba tu anasema kusubiri na kusubiri na kusubiri na kusubiri na kusubiri, mpaka user inakupa string kwa kuandika kitu in Hivyo basi mimi kwenda mbele na aina katika D-a-v - i-d, Ingiza. Na huko ni, hujambo Daudi. Sasa hii haina kuonekana kama ni tu tendo? Hebu kwenda mbele na aina katika Tommy. Kuingia, sawa, inaonekana kufanya kazi. Ujenzi kwa Rob, kwa matendo Zamyla, kazi kwa - sawa. Hivyo ni kwenda kufanya kazi, uwezekano mkubwa. Hivyo ni lazima magazeti nje chochote sisi kweli kuwapa, na sisi inaweza kuwa vigumu kidogo hapa. Hebu angalia kama sisi kufanya kitu kama hello. Unaweza kwenda zaidi ya hapa, hebu angalia, nakala, kuweka. Sitakuja kuweza kuweka kwamba mara nyingi hapa. Kuweka, sawa, Shift + Ctrl + V. Basi nini inaweza kutokea kwamba ni mbaya hapa? Okay, kwa hivyo, segfaults. Hivyo baadhi ya wewe na asili kabla watajua kwamba ujumla, kutoa kompyuta kura ya pembejeo wakati wao uko pengine si maana ya kupokea majina ya muda mrefu kama hii - mbaya mambo kutokea. Hakika, katika dunia ya mtandao, pia, hii hufanyika kidogo kabisa, ambapo wakati wewe ni kubuni tovuti, wakati uko kubuni Facebook, una kufanya maamuzi holela up mbele, kama muda gani mapenzi ya mtu Facebook username kuwa? Au ni kwa muda gani mtu jina la kwanza kuwa? Muda gani simu ya mtu kuwa na idadi kama. Na kama programmers kufanya mawazo mbaya, mipango kuvunja kwa sababu wewe kujaribu kuwapa zaidi ya pato, pembejeo zaidi badala yake, kuliko kuwa na kumbukumbu. Au RAM zilizotengwa kwa ajili yake, na hivyo kama sasa mimi hit Enter, mpango kwamba kweli kazi, kwa sababu tulikuwa katika maktaba na sisi kweli kutarajia hii kesi fulani. Lakini bila shaka muhula hii, utakuwa kuandika angalau moja mpango huo kusema maneno haya. Kumbuka wiki hii kutoka sasa, labda siku mbili kuanzia sasa. Segmentation kosa ni kitu mbaya. Itakuwa zinataja jambo wako kufanya kwamba kompyuta Hawakutarajia. Na katika kesi hiyo, wewe, programu, Hawakutarajia. Mengi kama nini hii rundo la soksi, kulikuwa mbalimbali kesi kona tunaweza kuwa wamekutana. Vile vile katika programu kama huna wanatarajia muda gani ni jina la mtu kwenda kuwa. Au nini kama mimi na mtumiaji malicious, na jina lake ni kweli pretty mfupi, lakini wao ni kujaribu tu kwa fujo na mimi? Nini kinaendelea kuwa tabia ya mpango wangu? Naam, katika kesi hiyo, kitu ili kweli ajali. Basi hebu kufanya hili. Katika dakika 90, hii ni kubwa kwa muda mrefu kufanya sayansi ya kompyuta. Mbona sisi kuingia katika tabia ya kuchukua dakika tano kuvunja hapa, na wakati sisi kuja nyuma, tutaweza kupiga mbizi katika baadhi ngumu zaidi na kulazimisha mipango? Dakika tano. Wote haki. Hivyo moja ya haraka maoni. Nimeambiwa kwamba ingawa hii ilikuwa juu ya screen kabla, nini toka nje ya kinywa yangu ilikuwa cs50.net/rsvp. Hii ni sahihi. cs50.net/lunch. Hivyo sasa unaweza kujaribu RSVPing kwa hii katika chakula cha mchana /. Lakini hebu kufanya hivyo sasa. Hivyo hii imekuwa super haraka, super mpya kwa ajili ya mengi ya folks. Kale kofia kwa folks baadhi. Basi hebu rewind kwa muda tu, na kuona jinsi sisi got hii hujambo pato la dunia muda tu iliyopita. Hivyo kwanza, kuna hii Appliance CS50. Tena, kipande cha programu tatizo, kuweka 1 zitaenda kuwaambieni jinsi ya kushusha ni, ambapo kwa kushusha ni, nini bonyeza na kadhalika. Na kisha mara moja wewe kufuata maelekezo hayo, wewe utakuwa na uwezo kuongeza dirisha yako, na yako Mac au PC utaangalia kidogo kitu kama hiki. background nyeusi, folder nyumbani kwa juu ambapo wote files yako kwenda, takataka unaweza juu kushoto, menu chini. Hivyo tena, pretty sawa katika roho kwa Mac OS au Windows, hata kama ni hutokea kwa kuwa Linux. Hivyo nini sisi ijayo kufanya? Naam, sisi kuanza kuandika mipango. Na kukumbuka kutoka wiki iliyopita kwamba yote inachukua kuandika mpango ni rahisi Nakala mhariri, kama Notepad au TextEdit. Kusema ukweli, unaweza hata kutumia Microsoft Word. Lakini mambo mabaya hatimaye kutokea, kwa sababu hiyo ni sana nzito mitupu ufumbuzi kwa kuandika mpango, plus ni itabidi kuokoa katika format makosa faili. Lakini ni mhariri tu maandishi, processor neno, ni yote yale ambayo ni zinahitajika kuandika mpango. Hivyo katika appliance CS50, tunaweza kufanya hivyo katika njia moja rahisi. Tunaweza bonyeza tu juu ya hii icon wa kushoto chini. Na tena, tatizo kuweka 1 atakushauri ya hili, na voilà - wewe kupata hii interface nyeusi na nyeupe ambapo tunaweza kuanza kuandika code. Basi hebu kuanza kuandika super rahisi mpango tena. Mimi nina kwenda hadi faili, Ila, na mimi nina kwenda kuwaita hii, hebu sema, hello2.c. Na Mimi tu kuwaambia yake kwa kubonyeza jharvard, kuiweka katika saraka yake nyumbani, mimi si kweli huduma ambapo moja hii unaendelea. Na kisha Ila. Na sasa siwezi kuanza kuandika mpango wangu. Na mimi kukumbuka kutoka mapema kwamba nina kuandika int kuu (utupu). Zoom katika upande wa kushoto juu. Na kisha Mimi nataka kusema printf, kuchukua mbili. Na sasa newline, quote karibu, karibu mabano, semicolon. Na kisha mimi kwenda chini hapa dirisha terminal yangu kwamba iliyoingia katika gedit, tu kwa urahisi. Na mimi nina kwenda mbele na kuandika kufanya hello, lakini si hujambo peke yake, hello2. Hivyo faili yangu kuitwa hello2.c. File yangu hiyo tuitwe hello2, katika kesi hii. Dammit, nini mimi kufanya makosa? Haki zote, hivyo mimi wazi omitted line, kama unakumbuka kile mipango ya awali kuangalia kama. Lakini hebu angalia kama hatuwezi tease hii kusambaratika. Kwa bahati mbaya, watu wengi ambao kuandika mipango ambayo sisi kuandika mipango si kurahisisha mambo yote vizuri. Hivyo inabidi aina ya skim juu ya kile haina kabisa kufanya kuhisi hapa na kuona kama tunaweza kufikiri nini kibaya. mstari wa kwanza kabisa kuna anasema implicitly kutangaza C maktaba kazi printf na int aina. OK, mimi kueleweka sehemu ya kwamba. Lakini inaonekana kuwa akidokeza ukweli kwamba mimi kutumika printf vibaya, kwa namna fulani. Na nini maana ni makosa? Mimi tu hakuwa na kufundisha kompyuta kwamba ni katika faili kuitwa stdio.h. Sasa mimi tu tu kukariri sasa kwamba ni printf katika stdio.h, na kwa kweli kutakuwa nyingine kazi katika faili huo kwamba tutaweza kupata kutumika. Hivyo sasa napenda kwenda mbele na hit Ctrl-L tu wazi kwamba mbali, rerun kufanya hello2, na voilà. Na amri hii tena, ngumu zaidi kuliko tutaweza kuelezea kwa leo makusudi. Lakini hakuwa kukimbia Clang, na Clang inachukua chanzo code na mtemi sekunde 0 na 1s. Na wale sekunde 0 na 1s katika kesi hii huitwa nini? Okay, kupinga code. Na faili kwamba wao uko katika inaitwa, hivyo, hello2, katika kesi hii. Kwa sababu Nakala wangu faili hello2.c, Ingiza. Na sasa mimi kuchukua mbili Moderators kumweka, Moderators uhakika, Moderators uhakika. Haki ya wote, hivyo tuna uwezo sasa kupata masharti, inaonekana. Naam, kile kingine tunaweza kupata kutoka kwa watumiaji? Vizuri katika maktaba CS50, kuna majukumu mengine ambayo ni kwenda kurahisisha maisha yetu katika siku hizi chache za kwanza. GetChar, GetDouble, GetFloat, GetInt, GetLongLong, GetString. Naam, hebu konoa rahisi ya hizi kwanza. GetString literally anafanya hivyo. Ni tu anakaa pale, kusubiri kwa mtumiaji aina kitu katika, na haraka kama ninapoandika kitu katika na hit Enter, ni haina kitu na thamani hiyo. Basi hebu kwenda nyuma ya mfano kwamba kwa kuona hasa nini GetString alikuwa akifanya. Hebu kwenda mbele na kufungua katika gedit, hello.c, na kukumbuka kwamba haki kabla ya mapumziko, hii ni mahali ambapo sisi kushoto mbali. Basi hebu sasa tease hii mbali katika undani zaidi kidogo. Hivyo kwenye mstari 6, kuna mambo mawili kinachotokea kwa sasa. ishara sawa ni kutenganisha nusu ya kwanza na nusu ya pili. Hivyo upande wa kushoto ya ishara sawa, sisi ni akisema string s. Na kisha, tu layman suala, ni nini string s kufanya, unafikiri? Ni kujenga nini? Hivyo ni kujenga string kuitwa s. Sasa nini maana ya kwamba kweli? Naam, ni reservera nafasi kwa kamba kuitwa s. Hiyo si haki kabisa. Nini hii kufanya? Naam kompyuta, kama unajua, na anatoa ngumu; hiyo ambapo mafaili yako ni kuhifadhiwa. Kompyuta na RAM, na hiyo ambapo programu ni kubeba wakati wao ni mbio. Hivyo wakati wewe mara mbili-click icon na Microsoft Word kuufungua up, Microsoft Word ni mbio, ili kuzungumza, katika RAM, ambayo ni sehemu ya elektroniki ya kompyuta yako. Si ya kimwili, mitambo hiyo ni sehemu inazunguka, ambapo data ni ujumla kuhifadhiwa muda mrefu. Hivyo string s pretty much kuiambia kompyuta nipe kutosha RAM kufaa kamba. Sasa hiyo ni kidogo ya kurahisisha, kwa sababu jinsi kubwa ni string kwenda kuwa? Naam sisi kweli hawajui bado, hivyo katika wiki ijayo tutaweza kweli kuvuta nyuma safu kwamba ni kamba na tutaweza kuwaambia nini ni kweli ni. Kamba, kwa sasa, ni tu kurahisisha nice ya dunia yetu. Lakini string s anatangaza string kuitwa s, kwa sasa. Anaisema kamba. Ni hifadhi ya baadhi ya nafasi katika RAM kwa kamba user ni kuhusu aina. Sasa hebu angalia katika haki ya ishara sawa. Hivyo anasema GetString (). Na sanity kidogo kuangalia. ukweli kwamba kuna kitu ndani ya mabano inamaanisha nini kuhusu GetString? Inachukua hoja hakuna. Hiyo ni, huwezi kuchangia tabia yake kwa njia yoyote. Kila wakati matumizi yake, ni kupata kamba na hiyo ni yake. Kwa kulinganisha, printf, hopefully tabia yake haina kubadilisha kila wakati. Vinginevyo, ni pretty haina maana uchapishaji kazi kama haina kitu kimoja. Kama ni daima Prints Daudi au kitu holela wakati wote. Hivyo printf mantiki ya kuwa na hoja. GetString kweli haina haja hoja, kwa sababu nilitaka kupata kamba kutoka kwa mtumiaji na ni user nani kwenda na ugavi mabadiliko kwa kuandika katika barua tofauti kila wakati katika keyboard. Hiyo ni nini GetString gani hatimaye? Fikiria kama sanduku hii nyeusi kidogo. Na hii sanduku nyeusi inachukua hakuna pembejeo, lakini wakati bang juu ya hiyo, ni mtemi string kwamba mtumiaji typed in Na ukweli kwamba kuna ishara sawa kuna maana ya kuchukua kile ni mate nje ya juu ya haki na kuhifadhi ndani ya nini juu ya kushoto. Hivyo sawa ishara hapa, ni kweli haina maana usawa, badala kitaalam maana zoezi. Kuchukua thamani juu ya haki, na kuiweka katika kutofautiana juu ya kushoto. Basi hiyo ni yote yanayotokea huko. Sasa katika mstari 7, sisi ni wito printf. Hivyo printf hopefully ni kupata boring kidogo kwa sasa. Hivyo magazeti string formatted. Nini kamba? Magazeti nje, "h-e-l-l-o,% s ! \ N ". Haki zote, hivyo nini nataka kuziba-katika kwa% s? Literally, chochote ni kuhifadhiwa katika s. Hivyo katika kesi hii, kidogo sanity hundi, jinsi gani hoja nyingi printf kuchukua? Okay, nikasikia mmoja. Nikasikia kimoja tena. Mbili, nikasikia mbili. Na vipi kuhusu tatu? Okay, tatu? Bora. Tatu uwezekano wa majibu, tu mmoja wao ni sahihi. Hivyo hoja tena kuchangia tabia ya kazi. Huko nyuma, printf hakuwa tu kuchukua moja hoja. "Hello dunia" ilikuwa hoja moja. Hata hivyo, sasa, taarifa ambapo comma hii ni. Comma Hii ni nje ya kunukuu / unquote, ambayo ina maana hey printf, inakuja hoja ya pili. Hivyo koma katika lugha zaidi ya programu tofauti nyingi hoja. Hivyo jibu hapa ni dhahiri si moja, kwa sababu kuna comma hii. Hivyo minimally, printf ni inaonekana kuchukua mbili hoja hii wakati. Lakini nafasi kwa swali hila hapa ni nini kuhusu comma hii? Je, hii kuashiria kwamba kuna kweli tatu hoja? Hii, hii, na hii. Hivyo hakuna sababu comma kwamba ni ndani ya quotes, ambayo ina maana ni kweli tu aesthetic ya Kiingereza. Ni hauhusiani na idadi ya hoja katika mpango huu. Hivyo comma hii ni nje ya quotes mbili. Na kisha kurudi 0. Kwa sasa hebu tu aina ya kuchukua moja juu ya imani kwa leo, na tu kujua kwamba wakati kazi ni kufanyika utekelezaji mstari wa kanuni, wanapaswa kurudi ujumla baadhi ya thamani. Katika kesi hiyo, kwa sababu tu kuu lazima kurudi int, kwamba njia tu C lugha kazi. Basi, kwa sababu hakuna kitu potoka, anahisi kama hii ya mpango faini, mimi tu ngumu coded katika kurudi 0. Lakini katika kulinganisha, na mimi nina kwenda kuandika hii katika code Pseudo sasa, kiasi kama Yusufu alivyofanya wakati sisi alifanya sock mfano wiki iliyopita. Kama kitu potoka - hii si halisi code - akaenda vibaya, kisha kurudi, hebu sema, 1. Mwingine kurudi 0. Hivyo hii ni mahali ambapo sisi ni kwenda na hili. Hii si halisi C code, tu pseudocode. Lakini hii ni jinsi gani wanaweza kurudi tofauti iwezekanavyo maadili. Lakini kwa sasa mimi nina kwenda tu kwa kwenda mbele na kurudi 0. Haki zote, maswali yoyote hivi sasa juu ya syntax utendaji, au kama? Yeah, katika nyuma. Watazamaji: [inaudible] DAVID Malan: Je, unaweza kusema kidogo nguvu zaidi? Kwa nini hii kurudi mpango 0, na? Watazamaji: [inaudible] DAVID Malan: Oh, hiyo ni kwa sababu mimi got wavivu, sorry. Hakuna nzuri kitaaluma majibu, kurudi 0. Naweza aina ya Salvage hii, kwa kusema kitaalam C, ikiwa kuu haina wazi kurudi thamani, 0 watarejeshwa moja kwa moja kwa ajili yenu. Ambayo ni ya kweli, mimi si tu kifuniko juu. Lakini, mimi lazima wamefanya hivyo kwa njia hii. Hakuna takeaway kuvutia kuliko nyingine kuliko makosa yangu. Yeah? Watazamaji: Kawaida wakati unapoandika katika batili, hiyo ina maana hawawezi kurejea kitu. DAVID Malan: Sahihi. Kama badala yake, ninyi bayana kabla ya jina la kazi, kwa mfano hapa, utupu, basi kazi haina kurudi chochote. Na kwa hiyo napenda kusema tu, kurudi au kitu! na kwamba itakuwa thabiti. Na tutaweza kuja nyuma na kwamba. Na tu FYI, moja ya samaki wanaovuliwa na kujifunza programu katika dunia ambayo ina mamia ya vitabu na mamia ya Nje huko nje ni wewe invariably kuona syntax tofauti katika vitabu mbalimbali na watu tofauti. Kutambua tutaweza kufanya kazi nzuri katika sehemu na mihadhara kuwa thabiti. Lakini wakati mwingine utaona syntax yanayokinzana. Hiyo wakati wowote katika shaka, kuuliza tu. Na kwa ujumla, tutaweza kuchukua huduma katika mihadhara na sehemu kwa karibu daima sasa ni katika njia sahihi. Na mimi kusema karibu daima, kwa sababu katika suala hilo. Maswali mengine? Watazamaji: Je% s zipo nje appliance? DAVID Malan: Je% s zipo nje ya appliance? Ndiyo. Hivyo% s ina nini na C. ukweli kwamba sisi ni kutumia katika appliance kimsingi ina chochote cha kufanya na makala ya lugha ya sisi ni kutumia. Hakika, wiki iliyopita wakati sisi kutumika Mac yangu, mimi aliandika C code juu ya Mac yangu. Ningeweza kutumika% s juu ya Mac yangu, na unaweza kuitumia kwenye yako Windows kompyuta kama wewe kufunga compiler, kama Visual Studio kutoka Microsoft. Hivyo% s. Kila kitu sisi ni kufanya ndani ya dirisha hili leo ina kufanya na C. Na kimsingi kitu cha kufanya na mfumo wa uendeshaji katika swali. Kwa kulinganisha, nyeusi na nyeupe terminal dirisha - wakati Mimi nina kuandika mambo kama ls, na rm, na cd - kwamba ina nini na mfumo wa uendeshaji na navigering kuzunguka. Yeah. Watazamaji: mimi maana maktaba, maktaba CS50. DAVID Malan: Sawa, hivyo kama wewe maana string Keyword, kwamba tu lipo katika maktaba CS50, sahihi. Kwamba haipo katika C yenyewe, na kwa kweli katika michache ya wiki sisi kutupa maktaba CS50 na kuanza kufanya mambo kutoka mwanzo wenyewe, hivyo kusema. Maswali mengine? Yeah. Watazamaji: [inaudible] DAVID Malan: Good swali. Ni amri kesi nyeti? Na napenda kufanya tofauti hapa. Hivyo amri kwa ujumla mambo tutaweza kuandika katika chini ya dirisha, katika dirisha terminal. Kitu chochote hadi hapa itakuwa kauli au C code. Lakini katika hali zote mbili, jibu ni sawa, ndiyo. Wote wa mazingira haya, C code saa ya juu na mfumo wa uendeshaji amri line katika chini, ni kesi nyeti. Hivyo lazima capitalize GetString na mji mkuu wa G, mji mkuu S. Lazima kuandika printf katika lowercase wote. Lazima aina ls katika lowercase wote. Hivyo karibu katika kila hali hii muhula, kesi mapenzi, katika kweli, jambo hili. Ndiyo. Watazamaji: [inaudible] DAVID Malan: Ah, hivyo sawa, nini kama sisi alikuwa faili kuitwa hello.d. Hivyo zinageuka D ni lugha ya programu. Na hivyo katika baadhi ya kesi, sisi inaweza kweli kuandika mpango katika kwamba faili na kuwa ni compiled katika mtindo huo. Tunaweza, na kweli, jibu fupi ni, mimi sijui. Hivyo sisi ni kwenda kufanya hili. Hebu kwenda mbele na kuunda faili mpya. Na spin hapa, uaminifu kwa ujumla, ni wakati wowote na shaka yoyote hii muhula, na una appliance yako au kompyuta kufungua, kwenda mbele na kujaribu kitu. Hivyo nina kwenda kuokoa faili inayoitwa hello.d. Ila hii. Na mimi nina kwenda kukimbia kufanya hujambo Ingiza. Ilionekana na kudai kuwa c alikuwa na uwezekano mkubwa kuliko d, katika kesi hii. Maswali mengine. Yeah. Watazamaji: [inaudible] DAVID Malan: Okay, kusema kwamba kwa mara nyingine. Watazamaji: [inaudible] DAVID Malan: Jinsi gani wewe kwenda juu ya kupima kwamba au troubleshooting kwamba? Hivyo uwezekano mkubwa zaidi, kwa sababu ni lugha mbalimbali, uwezekano mkubwa zaidi ungependa kupata kabisa mpango tofauti outputted. Ungependa kupata ujumbe wa makosa tofauti kabisa. Na pia tu katika suala la kubuni, ingekuwa arguably kuwa maskini kubuni uamuzi kuwa kuandika mbili tofauti lugha kwa files karibu identically aitwaye, katika exact directory, kwa kutumia moja kwa moja chombo kama kufanya. Hivyo siwezi pia kushinikiza nyuma na kusema katika miaka 15 ya kufanya hivyo, kamwe kufanywa kuwa kosa. Inaweza kutokea. Lakini kuna tu mbalimbali, nadhani, vifaa ulinzi katika mahali. Plus ujumbe wa makosa ambayo zichukuliwe, kwamba ingekuwa hatimaye yatangaza nini suala hilo ni. Lakini inawezekana kona kesi. Haki zote, hivyo hebu kuanzisha michache tu ya nyingine makala hapa sasa, ili tuweze kuanza kujenga juu katika zaidi na ngumu zaidi mpango. Hivyo kwanza ya yote, math. Hivyo math mifano ni aina tu ya rahisi katika wiki ya kwanza. Hii si kusema kwamba programu yote ni juu ya hisabati. Hakika, kuelewa makala mbalimbali za hisabati, algebra hasa, ni kabisa husika hapa. Katika ngazi za juu CS madarasa, linear algebra, calculus, na kama. Lakini kutambua zaidi ya nini tutaweza kufanya hii muhula inapunguza si kwa hesabu, na kwa hakika si kwa hesabu, per se, lakini kwa kweli kwa mantiki tu na kufikiri kwa makini. Na hivyo hii uhusiano kwamba sayansi ya kompyuta kwa muda mrefu alikuwa, hasa katika ngazi ya shule ya sekondari, na hisabati, ni kidogo kupotosha. Kwa sababu wengi wa mipango ya kwamba tutaweza kuandika, kwa kweli, ni aina ya kiwango cha juu na lengo kutatua matatizo kwamba, uhakika, wanaweza kutumia baadhi Aidha, kutoa, na mbalimbali hisabati formula au kama, lakini mwisho wa siku, ni kuhusu kufikiri na si tu kutekeleza nini unaweza kuwa umeshazifanya katika kama TI Calculator katika shule ya sekondari. Hivyo kwa kuwa alisema, hebu sasa kufanya kitu kwa haya hisabati operators kwamba kufanya kuwepo ili tuweze safari juu ya baadhi ya vipengele msingi ya programu, au katika kesi hii C. Hivyo kuna, kama maktaba CS50 alipendekeza, na leo tuko tu kutumia GetString - na katika wakati labda mtu mwingine kazi - lakini kuna tofauti ya aina ya data katika kompyuta. Wakati wa mwisho wa siku, kompyuta tu kujua sekunde 0 na 1s. Lakini kumbuka kwamba wiki iliyopita tuliongea kuhusu mfumo binary katika anayewakilisha idadi, kama idadi 0, na 1, 2 na, njia yote juu ya hadi 8, kama katika video ya Nate. Na kisha tunaweza kuhesabu juu sana kama sisi alifanya juu ya hatua ya hapa. Lakini kama unataka kuwakilisha idadi si tu lakini herufi, sisi, na binadamu, zina kuja na baadhi holela mikataba, ambapo kama mwisho wa siku yangu kompyuta wote ina ni uwezo wa kueleza sekunde 0 na 1s, vizuri tunatarajia bora kuanza standardizing mifumo ya sekunde 0 na 1s kwamba kuwakilisha mambo tofauti. mfano wa sekunde 0 na 1s kwamba inawakilisha barua. Mifumo ya sekunde 0 na 1s kwamba kuwakilisha z barua. Mifumo ya sekunde 0 na 1s kwamba kuwakilisha rangi ya bluu, au nyekundu, au kama. Tunahitaji kutumia yote haya sekunde 0 na 1s kueleza wenyewe katika tofauti mazingira, katika njia tofauti ambazo si lazima numeric. Hivyo katika suala la uwakilishi, C ana aina ya data tofauti, na tumeona moja ya hizi hadi sasa. Tuliona int, na taarifa juu ya nini si screen hivi sasa ni kamba. Kamba haina, kwa kweli, zipo katika C. Tena, ni kurahisisha tuko kuwasilisha kwa kwanza wiki kadhaa. Char ni tabia ya mtu binafsi. kuelea ni idadi halisi, kwa uhakika decimal na idadi ya kushoto na kulia ya hiyo. mbili ni nini, kwa wale walio na background nyuma kabla? Hivyo mara mbili mara mbili ni kitu. Anaongeza mara mbili kama usahihi sana. Basi nini maana ya hii? Hivyo katika kila moja ya matukio haya, dunia ina aina ya sanifu wangapi bits ni kutumika kuwakilisha kila moja ya mambo haya. Hivyo kama wewe ve watched Nate wa ASCII video tayari kwa sehemu ya pset 0, au baadaye wiki hii utakuwa, pengine utasikia kujua kwamba ASCII - tabia uwakilishi - kutumia bits ngapi? Na unaweza hata kukumbuka kutoka demo yetu ya wiki iliyopita ya jinsi ya watu wengi walikuwa juu ya hatua. Hivyo 7 au 8, kawaida. Hivyo kwa ujumla 8, na kuna kitu kinachoitwa kama kupanuliwa ASCII kwamba anatumia bits wote 8, badala ya 7. Lakini kwa ujumla, sisi majadiliano katika madaraka ya 2, hivyo katika kesi hii, 8. Hivyo Char katika lugha ya programu ni kawaida 8 bits. Hivyo ni int ujumla 32 bits. kuelea kwa ujumla 32 bits. mara mbili kwa ujumla 64 bits. Na nini haina maana? Ina maana unaweza kuwakilisha idadi kubwa, au katika kesi ya idadi halisi, unaweza kuwa na idadi mengi zaidi baada ya decimal mahali. mengi zaidi na usahihi, katika kesi hiyo. Sasa muda mrefu ni bahati mbaya jina lake. Hivyo kuna int ambayo ni 32 bits. Kuna muda mrefu ambayo ni, nope, 32 bits. Na muda mrefu ambayo ni 64 bits. Hata hivyo baadhi ya watu ni muktadha nyeti; inategemea aina gani ya kompyuta una. Hivyo kwa ujumla, tutaweza bayana katika homework au katika jaribio wakati ni kweli mambo. Lakini uhakika ni kuna yote haya tofauti uwakilishi hapa. Basi hebu kweli kupiga mbizi katika mpango. Badala ya kuandika hii moja kutoka mwanzo, napenda kwenda mbele na kufungua kutoka chanzo code ya leo - yote ambayo ni online - kama unataka tinker karibu online, au kurudi kwenye Jumatano na appliance kwenye kompyuta yako, maelekezo kwa ambayo itaunganisha juu ya homepage ya shaka. Hapa ni super mpango rahisi. Lakini ni got kitu kidogo mpya juu kwamba hatukuwa na kabla. mengi yote ya mistari ya bluu ya maandishi. Basi hizi mistari bluu kuwakilisha maoni. Hivyo ni muhimu kabisa katika mpango wa kuwa na uwezo wa kuandika baadhi ya maoni na wewe mwenyewe, au kwa wafanyakazi wenzake, au marafiki, au mafundisho wenzake, kwamba aina ya kuelezea nini kinaendelea katika faili hii, lakini hawana kitu cha kufanya na C code yenyewe. Kitu cha kufanya na mpango functionally, ni tu aesthetics. Hivyo njia wewe kufanya hili katika C ni wewe ujumla kuanza yako maoni na / *, na wewe mwisho kwa maoni yako * /. Na kama wewe ni kweli anal na kama kuteka aina ya picha, basi wewe d kuweka mengi yote ya nyota, wewe d kufanya kidogo sanduku kama hili. Lakini hakuna mambo hayo. Kitu tu kwamba mambo ni ya kwanza kabisa na ya mwisho. Hii ni nini wito maoni mbalimbali ya mstari. Na ni haki ya binadamu kwa mkataba mara nyingi kufanya nyota na sanduku mambo katika kama hii kama una mengi ya muda bure. Hivyo baada ya ve yameandikwa katika baadhi ya comments, kwa ujumla, kuja guts halisi ya mpango. Hapa ni familiar wetu ni pamoja # . Na tu haraka, hii ni muhimu au si muhimu? Watazamaji: Muhimu. DAVID Malan: Hivyo ni kweli si lazima. Hivyo kwa nini, ingawa, ni kuwa si lazima? Hivyo hakuna printf. Kweli kweli. Wote sisi ni kufanya katika mpango huu ni hisabati. Hivyo kweli mimi kufuta kwamba. Hivyo huna daima kuwa ni pamoja na kitu chochote katika juu ya mpango huo. Basi hebu kurahisisha hii kidogo. Na sasa taarifa gani mpango huu gani. Si mengi ya riba. int x = 1. Naam, ni nini hii kufanya? Naam, kufikiri nyuma kwa mfano wa akili kutoka kabla. mkono wa kushoto upande wa kujieleza hii anafanya nini? Kuunda nafasi kwa integer. Hivyo muda kiasi gani? Naam, sisi kutokea kwa kujua sasa kwamba ni 32 bits. Hapo awali, ilikuwa string kitaalam 32 bits, lakini zaidi juu ya kwamba katika siku zijazo. Lakini ni int 32 bits. Hivyo hii kujieleza juu ya kushoto hapa, int x tu anasema hey mfumo wa uendeshaji, nipe bits 32 ya RAM - inayojulikana kama ka 4 ya RAM - ili niweze kuweka integer katika nafasi hiyo. Nini integer gani unataka kuweka? Naam, tu idadi 1. int y anapata 2, anafanya exact kitu hata ingawa idadi ni kubwa, kwa kuzingatia ukubwa wake. idadi yenyewe ni bado tu 32 bits. Ni tu mfano wa bits ni tofauti na kuwakilisha 1 dhidi ya 2. int z sasa anasema nipe bits mwingine 32, simu yake z, na kuweka summation ya 1 na 2 katika huko. Hivyo kwamba sasa ni z ikatengeneza kuhifadhi thamani 3, na kisha kurudi 0. Sasa mpango huu, je, ni kufanya kitu chochote cha riba? Hivyo ni kweli haina kufanya kitu cha kuvutia, katika yoyote maana, kwa sababu kwa nini? Ni kufanya baadhi ya math. Lakini si kurudi jibu, haki. Ni kurudi 0. Siyo uchapishaji jibu. Hivyo mpango huu ni Kimsingi hauna maana, kama ni anasimama sasa. Ni kufanya baadhi ya kazi. Ni kwenda kuchukua baadhi ya idadi ya sekunde, microseconds au, kwa kukimbia, lakini siyo kweli kufanya kitu chochote muhimu kwa ajili ya binadamu. Basi hebu kweli sasa kufungua math2, ambapo sasa mimi nina kweli uchapishaji matokeo. Hivyo hii pia inaweza inferred kutoka mifano yetu uliopita. Kama mimi nataka kufanya hisabati baadhi rahisi, int x = 1, y = 2. z ni 1 plus 2 sasa. Nini hii kwenda magazeti nje wazi? 3 tu. Hivyo sanity haraka kuangalia. Hebu hoja katika saraka hii. Hivyo cd source1m. Hebu kwenda mbele na kufanya aina math2. Hakuna ujumbe wa makosa akatoka nje, hivyo basi mimi kukimbia - si a.out-basi mimi kukimbia math2. Kuingia. Na hakika, kuchapishwa 3. Naam hebu tuangalie lahaja ya hii. Katika math3.c, sasa tuna mfano huu hapa. Hivyo aina hii moja ya kuvutia. Hivyo katika hili hapa, jibu ni kwenda kupata 1 kugawanywa na 10, na taarifa nimekuwa amekiri kuwa ni kama kuelea. Kwa nini mimi nataka kuwa kuelea? Naam, ni sehemu. Ni kwenda kuwa idadi halisi. Hivyo ni kwenda kuwa 0.1, hopefully - 10%, katika kesi hii. Na nini mimi basi nataka magazeti nje? Naam, hii jibu. Naam, hebu tease haya mbali ya kwanza. Hivyo upande wa mkono wa kushoto, kutangaza kuelea, simu yake kujibu. Upande wa kulia, je 1 kugawanywa na 10 na kuweka kwamba kujibu ndani ya kutofautiana. Sasa, hii inaonekana kidogo line zaidi cryptic. Lakini taarifa baadhi ya vipengele familiar. % Maana hiyo inakuja placeholder. f maana hapa ni floating kumweka thamani, tu halisi idadi, kitu kwa uhakika decimal. 0.2 njia gani? Mtu yeyote kujua kutokana na uzoefu kabla? Mbili decimal maeneo. Hivyo tumekuwa si kuonekana hii kabla, lakini ni njia tu ya utumiaji mdogo zaidi udhibiti printf na Msemo wala kunipa pointi 30 baada ya uhakika decimal, badala nipe tu 2. Na kisha hebu kwenda mbele na kukimbia hii. Hivyo kufanya math 3, na sasa napenda kukimbia math 3, Ingiza. Na kwamba si sahihi. Sisi wanaonekana kuwa wamekutana halisi yetu ya kwanza mdudu. Naam, labda mimi tu si kuangalia karibu kutosha. Hivyo basi mimi kwenda juu hapa, na napenda kuweka 20 decimal uhakika maeneo huko. Na napenda kukusanya hii, kufanya math3, kukimbia. Pretty sure 1 kugawanywa na 10 ni si 0. Basi nini kinaendelea? Naam sawa, hivyo kweli haina cha kufanya na hii. Hiyo ni dhana nzuri. Hii ni kweli bahati mbaya tu kwamba sisi ni kufanya hii. Lakini tu kuthibitisha kwamba hii si hivyo, mimi itabidi kurudi kitu random. Je, si kufanya hili nyumbani, kwa sababu ni makosa tu. Lakini kufanya math3, basi mimi kukimbia. Hivyo ina chochote cha kufanya na nini mimi kurudi, tu ina nini kwa nini mimi uchapishaji. Lakini nikasikia ni chini hapa. Nini? Watazamaji: Hivyo tunahitaji kuandika idadi katika mgawanyiko kama - DAVID Malan: Okay nzuri. Hivyo tunahitaji kuandika idadi ya kushiriki katika mgawanyiko hapa kama hatua ya floating inathamini wenyewe. Hivyo tatizo hapa ni kama kabla: C, kama na mengi ya lugha, ana aina ya data tofauti. Na aina ya data hizo, kwa mfano, ni hizi hapa. Na aina ya data katika swali hapa, wakati ninapoandika 1 na kisha mimi aina 10, pengine ni nini data aina? Hivyo ni pengine int, haki? Ni dhahiri si kuelea kwa sababu kuna decimal hakuna uhakika au kitu kama hicho. Hivyo kweli, nina int kugawanywa na int. Hivyo kitu ya kuvutia kuhusu math na kompyuta ni kwamba kama wewe ni kufanya mgawanyo kutumia integers - 1 kugawanywa na 10, ndiyo ni 0.1. Hata hivyo, wakati wewe kugawa integer na integer, Jibu ina pia kuwa integer kwa sababu tu, kwa sasa. Na nini maana basi? Naam, kama jibu ni 1 kugawanywa na 10 ni sawa na 0.1, nini kompyuta ni kwenda kufanya ni mimi hawana wazo jinsi ya kuwakilisha 0.1, kwa sababu hiyo floating kumweka thamani, si integer; itakavyo Night mbali kila kitu baada ya decimal uhakika na tu kuonyesha 0 mwanzoni. Na ukweli kwamba ni uchapishaji kama hatua ya floating thamani, ni tu kitu aesthetic. Hiyo ni kwa sababu mimi nina kulazimisha kompyuta na magazeti hii kama floating kumweka thamani. Na kwa kweli nimekuwa amekiri kuwa ni kama kuelea, lakini math ni yanatokea zaidi ya hapa. Hivyo basi mimi kweli kurekebisha hili katika njia moja rahisi pretty. Mbona si mimi tu kufanya 10.0 na 1.0, ingawa kitaalam mimi kupata mbali na kufanya tu mmoja wa wale. Sasa basi mimi kwenda mbele na kufanya math3. Hebu kwenda mbele na sasa kukimbia math3, Ingiza. Na sasa, oh mvulana. Sasa tuna tatizo mpya kabisa. Hivyo bora, haki; tuko karibu na 0.1, lakini nini ni wazi makosa hapa? Isipokuwa tumekuwa amelala na wewe kwa miaka, sawa? 1 kugawanywa na 10 ni kweli kabisa 0.1, hivyo nini kweli kinachoendelea hapa? Naam unaweza aina ya sababu kwa njia hii mantiki. Kama kompyuta tu ina kiasi kidogo cha RAM kuanza na, na kwa kweli kompyuta tu ni kutumia bits 32 kwa floating kumweka thamani, anasimama kwa kufikiri kwamba kwa finite idadi ya bits, 32 katika kesi hii, ndiyo, unaweza kuwakilisha mengi ya mambo. Ni kweli ni bilioni nne maadili tofauti unaweza kuwa kuwakilishwa na bits 32, 2-32, lakini bado ni finite. Hivyo tatizo ni kuna idadi ya usio wa kweli idadi, kulia. Kama wewe nipe namba halisi, mimi daima unaweza kupata wewe moja kubwa kidogo, kidogo kidogo, na tweaking tu idadi ambayo ni baada ya uhakika decimal. Hivyo kama huna idadi ya usio wa bits, wewe hawawezi kuwakilisha usio idadi ya namba halisi. Hivyo kuna hii kutokuwa sahihi asili katika kompyuta, na hii anapata tripped juu wakati wote hata katika rahisi ya mipango kama hii. Lakini pia katika baadhi sana ulimwengu halisi matatizo pia. Kwa kweli, hebu kuchukua muda tu kuangalia kitu ambacho hasa kilichotokea katika hali halisi. Tutaweza kuangalia tu michache ya kwanza ya dakika, na kisha tutaweza post online kiungo. Lakini hii ni ushahidi wa yale tu wanaweza kwenda vibaya, kabisa uaminifu, katika njia ya kutisha wakati mambo haya si kukubaliwa au tu sisi wanadamu kufanya makosa linapokuja hizi aina ya maelezo ya utekelezaji wa kompyuta za kisasa. [VIDEO kucheza] -Sisi sasa kurudi na majanga ya uhandisi kwenye vioja kisasa. Kompyuta. Tumekuwa wote wamekuja kukubali matatizo mara nyingi frustrating kwamba kwenda pamoja nao. Bugs, virusi, na glitches programu ni ndogo bei kwa kulipa kwa urahisi. Lakini katika high tech na high kasi ya kijeshi na nafasi mpango maombi, tatizo ndogo inaweza kuwa kujitukuza katika janga. Tarehe 4 Juni, 1996, wanasayansi tayari kuzindua unmanned Ariane 5 roketi. Ni alikuwa amebeba satelaiti kisayansi iliyoundwa kwa usahihi jinsi dunia magnetic shamba inaingiliana na upepo nishati ya jua. roketi ilijengwa kwa ajili ya Shirika Ulaya Space na lifted mbali kituo yake kwenye pwani ya Kifaransa Guyana. -Katika sekunde kuhusu 37 katika ndege, kwanza niliona kitu kitakacho makosa, kwamba walikuwa nozzles swiveling katika njia ya wao kweli hawapaswi. Karibu 40 sekunde ndani ya ndege, kwa uwazi gari ilikuwa katika matatizo, na kwamba wakati wao alifanya uamuzi wa kuiharibu. usalama mbalimbali afisa guts kubwa taabu button, akapiga juu ya roketi kabla inaweza kuwa hatari kwa usalama wa umma. -Hii ilikuwa safari Maiden ya Ariane 5, na wake uharibifu ulifanyika kwa sababu ya flaw iliyoingia katika roketi ya programu. -Tatizo juu ya Ariane ilikuwa kwamba kulikuwa na idadi hiyo inahitaji bits 64 kueleza na walitaka kubadilisha kwa 16 idadi kidogo. Wao wakadhani kuwa idadi ilikuwa kamwe kwenda kuwa kubwa sana, kwamba wengi wa tarakimu hizo katika idadi 64 kidogo walikuwa sekunde 0. Wao walikuwa na makosa. -Kukosa uwezo wa moja mpango wa programu ya kukubali aina ya idadi yanayotokana na mwingine alikuwa katika mizizi ya kushindwa. Programu ya maendeleo imekuwa sehemu ya gharama kubwa sana teknolojia mpya. Ariane 4 roketi alikuwa na mafanikio sana. Hivyo kiasi cha programu umba kwa sababu ilikuwa pia kutumika katika Ariane 5. -Tatizo msingi ilikuwa kwamba Ariane 5 mara kwa kasi, kuharakisha kasi zaidi. Na programu hakuwa waliendelea kwa ajili hiyo. -Uharibifu wa roketi ilikuwa kubwa kifedha maafa, wote kutokana na hitilafu ya dakika programu. Lakini hii siyo mara ya kwanza data uongofu matatizo alikuwa wanakumbana kisasa roketi teknolojia. DAVID Malan: Tutaweza kuondoka ni saa hiyo. Lakini hii ni ushahidi wa jinsi tu zinazotumika hata baadhi ya hizi kiwango cha chini maelezo kwamba tumeanza kwa kuchunguza leo ni. Hivyo hata kama wewe kupata kidogo aliwasihi labda kwa baadhi ya syntax na arcaneness hapa, kutambua kwamba zaidi ya mrefu tutaweza kuwa na umakini tu juu ya jinsi husika hii ni walimwengu mbali zaidi ya CS. Sisi kuona juu ya Jumatano.