[Music kucheza] DAVID J. Malan: zote haki. Hii ni CS50 na hii ni mwanzo wa Wiki 2. Na itabidi kukumbuka kwamba zaidi ya kipindi cha wiki kadhaa, tumekuwa kuanzisha kompyuta sayansi na, kwa upande wake, Programu. Na tukaanza hadithi kwa njia ya Scratch, lugha ambayo graphical kutoka MIT Media Lab'S. Na kisha hivi karibuni zaidi, wiki iliyopita, hatukufanya kuanzisha higher-- a Lugha ngazi ya chini inayojulikana kama C, kitu ambacho ni rena textual. Na kwa kweli, mara ya mwisho sisi kutalii katika muktadha huo idadi ya dhana. Hii, kukumbuka, alikuwa sana mpango wa kwanza sisi inaonekana katika. Na mpango huu, kabisa tu, Prints nje, "hello, ulimwengu." Lakini kuna mambo mengi Wanajidai uchawi kinachoendelea. Kuna # Pamoja huu na mabano haya angle. Kuna int. Kuna (utupu). Kuna mabano, curly braces, nusu colons, na hivyo zaidi. Na hivyo, kukumbuka kuwa sisi ilianzisha Scratch ili tuweze, walau, kuona nyuma kwamba syntax, mambo ambayo ni ya kweli si yote kielimu kuvutia lakini mapema ni, kabisa, kidogo Tricky wrap akili yako karibu. Na kwa kweli, moja ya kawaida mambo mapema katika darasa programu, hasa kwa wale chini starehe, ni kupata imechanganyikiwa kutokana na na tripped up na kisintaksia fulani makosa, sembuse makosa mantiki. Na hivyo miongoni mwa malengo yetu leo, kwa kweli, mapenzi kuwa kwa kuandaa kwa baadhi mbinu utatuzi wa matatizo kwa jinsi bora kutatua matatizo yao wenyewe katika mfumo wa debugging. Na itabidi kukumbuka, pia kwamba mazingira ambayo sisi ilianzisha mara ya mwisho ilikuwa inaitwa CS50 IDE. Hii ni programu mtandao msingi kwamba inaruhusu wewe mpango katika wingu, hivyo kusema, wakati kutunza yote ya yako files pamoja, kama sisi tena itakuwa leo. Na kukumbuka kuwa sisi upya mada hizi hapa, kati yao kazi, na tanzi, na vigezo, na maneno Boolean, na masharti. Na kwa kweli chache zaidi kwamba sisi kutafsiriwa kutoka katika ulimwengu wa Scratch ulimwengu wa C. Lakini jengo la msingi vitalu, hivyo kusema, walikuwa kweli bado huo wiki iliyopita. Kwa kweli, sisi kweli tu alikuwa tofauti puzzle kipande, kama wewe. Badala ya kuwa zambarau kuokoa kuzuia, sisi badala alikuwa printf, ambayo ni hii kazi katika C kwamba utapata magazeti kitu na muundo ni juu ya screen. Sisi ilianzisha CS50 Maktaba, ambapo na sasa ovyo get_char yako, na get_int, na get_string, na wachache kazi nyingine kama vizuri, kupitia ambayo unaweza kupata pembejeo kutoka mtumiaji keyboard mwenyewe. Na sisi pia alichukua kuangalia mambo kama bool these-, na char, na mbili, kuelea, int, long_long kamba. Na kuna hata aina nyingine data katika C. Kwa maneno mengine, wakati wewe kutangaza kutofautiana kuhifadhi baadhi ya thamani, au wakati wewe kutekeleza kazi kwamba anarudi baadhi ya thamani, unaweza bayana nini aina ya thamani kwamba ni. Je, ni kamba, kama mlolongo wa wahusika? Je, ni idadi, kama integer? Je, ni hatua yaliyo thamani, au kama? Hivyo katika C, tofauti Scratch, sisi kweli alianza kutaja aina gani ya data tulikuwa kurudi au kutumia. Lakini, bila shaka, sisi pia mbio katika mipaka ya baadhi ya msingi ya kompyuta. Na hasa, hii lugha C, kukumbuka kwamba sisi alichukua kuangalia integer kufurika, ukweli kwamba kama wewe tu na kiasi kidogo cha kumbukumbu au, hasa, idadi mahususi ya bits, unaweza kuhesabu tu ya juu mno. Na hivyo sisi inaonekana katika mfano huu hapa ambapo counter katika ndege,, kwa kweli, kama mbio kwa muda wa kutosha itakuwa kufurika na kusababisha programu halisi ya kimwili makosa uwezo. Sisi pia inaonekana katika yaliyo hatua kutokuwa sahihi, ukweli kwamba pamoja na tu idadi finite ya bits, kama ni 32 au 64, unaweza tu kutaja namba nyingi baada ya uhakika decimal, baada ya ambayo kuanza kupata imprecise. Hivyo kwa mfano, moja ya tatu katika dunia hapa, katika dunia yetu binadamu, tunajua ni tu idadi ya usio ya 3s baada ya uhakika decimal. Lakini kompyuta Unaweza si lazima kuwakilisha idadi ya usio wa idadi kama wewe tu kuruhusu baadhi kiasi kidogo cha habari. Hivyo si tu kwamba sisi kuvipa wewe pamoja na nguvu zaidi katika suala jinsi unavyoweza kueleza mwenyewe katika keyboard katika suala la programu, sisi pia mdogo nini unaweza kweli kufanya. Na hakika, mende na makosa Unaweza kutokea kutokana na aina wale wa masuala. Na hakika, miongoni mwa mada leo ni kwenda kuwa mada kama debugging na kwa kweli kuangalia chini ya Hood jinsi mambo walikuwa kuletwa wiki iliyopita ni kweli kutekelezwa ili wewe bora kuelewa wote uwezo wa na mapungufu ya lugha kama C. Na kwa kweli, tutaweza peel nyuma tabaka ya rahisi ya muundo data, kitu kinachoitwa safu, ambayo Scratch hutokea kwa kuwaita "orodha." Ni kidogo tofauti katika mazingira. Na kisha tutaweza pia kuanzisha moja ya kwanza ya matatizo yetu uwanja maalum katika CS50, ulimwengu wa cryptography, sanaa ya scrambling au katika uchujaji wa habari ili kuwa unaweza kutuma ujumbe siri na kufumbua ujumbe siri kati ya watu wawili, A na B. Hivyo kabla ya sisi mpito kwa ulimwengu huo mpya, hebu jaribu kuandaa kwa baadhi mbinu na ambayo unaweza kuondokana na au kupunguza angalau baadhi ya kukatishwa tamaa kwamba wewe kuwa pengine yaliyojitokeza wiki iliyopita peke yake. Kwa kweli, kabla ya wewe ni such-- baadhi ya matatizo yako ya kwanza katika C. Na ni tabia mbaya, kama wewe ni kama mimi, mara ya kwanza wewe kujaribu aina nje mpango, hata kama wewe kufikiri kimantiki mpango ni pretty rahisi, unaweza vizuri sana kugonga ukuta, na compiler si kwenda kushirikiana. Kufanya au Clang si kwenda kwa kweli kufanya amri yako. Na kwa nini inaweza kuwa nini? Naam, hebu tuangalie, pengine, mpango rahisi. Mimi nina kwenda mbele na kuokoa hii katika file kwa makusudi aitwaye buggy0.c, kwa sababu najua ni kwa kuwa na kasoro mapema. Lakini mimi wanaweza kutambua kwamba kama hii ni mpango wa kwanza au ya pili au ya tatu kwamba mimi nina kweli kufanya mwenyewe. Hivyo mimi nina kwenda mbele na aina nje, int kuu (utupu). Na kisha ndani ya braces yangu curly, familiar sana ( "hello, world-- backslash, n ") - na nusu koloni. Nimekuwa kuokolewa file. Sasa mimi nina kwenda chini kwa terminal dirisha yangu na aina ya kufanya buggy0, kwa sababu, tena, jina la faili leo ni buggy0.c. Hivyo mimi aina kufanya buggy0, kuingia. Na, loo, gosh, kukumbuka kutoka wakati wa mwisho kwamba ujumbe hakuna kosa ni jambo zuri. Hivyo hakuna pato ni jambo zuri. Lakini hapa nina wazi baadhi ya idadi ya makosa. Hivyo mstari wa kwanza wa pato baada ya kuandika kufanya buggy0, kukumbuka, ni Clang ya haki verbose pato. Chini ya Hood, CS50 IDE kimeundwa kutumia rundo zima la chaguzi na compiler hii ili huna kufikiri juu yao. Na kwamba wote kwamba mstari wa kwanza maana yake ni kwamba huanza na Clang. Lakini baada ya kuwa, matatizo kuanza kufanya muonekano wao. Buggy0.c kwenye mstari 3, tabia ya 5, kuna kubwa, nyekundu makosa. Hiyo ni nini? Implicitly kutangaza kazi maktaba printf na int aina (const Char *, ...) [-Werror]. I mean, ni haraka sana anapata arcane sana. Na hakika, kwa mara ya kwanza mtazamo, tunataka wanatarajia kuelewa ukamilifu wa ujumbe huo. Na hivyo moja ya masomo kwa leo ni kwenda kuwa na kujaribu taarifa chati, au mambo sawa, kwa makosa unaweza kuwa yaliyojitokeza katika siku za nyuma. Basi hebu tease mbali tu maneno hayo ili kuangalia familiar. kubwa, nyekundu kosa ni wazi ishara ya kitu kuwa makosa. implicitly kutangaza maktaba kazi printf. Hivyo hata kama Sielewi kabisa nini implicitly kutangaza kazi maktaba njia, tatizo hakika inahusiana na printf kwa namna fulani. Na chanzo cha suala kwamba ina nini na kutangaza ni. Kutangaza kazi ni kutaja kwa mara ya kwanza. Na sisi alitumia msemo wiki iliyopita ya kutangaza mfano kazi ya, ama mstari mmoja utafutaji juu ya yako file mwenyewe au katika kinachojulikana header file. Na katika kile file alifanya tunasema wiki iliyopita kuwa printf ni kunukuu, unquote, alitangaza? Katika faili nini ni mfano wake? Hivyo kama unakumbuka, jambo la kwanza kabisa mimi typed, karibu kila mpango mwisho time-- na ajali wakati iliyopita ilianza kuandika myself-- ilikuwa hii here-- moja hash-- # Pamoja