[MUSIC Duke luajtur] DAVID J. Malan: Të gjithë të drejtë. Kjo është CS50 dhe ky është fillimi i Javës 2. Dhe ju do të kujtojnë se mbi çifti kaluara javë, ne kemi qenë të futur kompjuter shkencës dhe, nga ana tjetër, programimi. Dhe kemi filluar historinë me anë të Scratch, se gjuha grafike nga Media Lab MIT'S. Dhe pastaj më të fundit, javën e kaluar, e bëri ne futur një higher-- a Gjuha e nivelit të ulët të njohur si C, diçka që është tërësisht tekstuale. Dhe, me të vërtetë, hera e fundit që ne hulumtohen në këtë kontekst një numër i koncepteve. Kjo, kujtojnë, ishte shumë i programi i parë pamë. Dhe ky program, thjesht, kopje nga "hello, botën." Por nuk ka aq shumë gjoja magjike ndodh. Nuk është kjo #include me këto kllapa kënd. Ka int. Ka (i pavlefshëm). Ka kllapa, formatimin e teksteve kaçurrel, gjysmë-colons, dhe shumë më tepër. Dhe kështu, kujtojmë se ne kemi prezantuar Scratch në mënyrë që ne mund të, në mënyrë ideale, shikoni të kaluarën se sintaksa, sende që nuk është e vërtetë të gjitha që intelektualisht interesante, por më herët është, absolutisht, pak i ndërlikuar për të përfunduar mendjen tuaj rreth. Dhe, me të vërtetë, një nga më të zakonshme gjëra më herët në një klasë të programimit, sidomos për ata më pak të rehatshme, është për të marrë të frustruar nga dhe morën nga sintaktik të caktuar gabime, për të mos përmendur gabime logjike. Dhe kështu në mesin e qëllimeve tona Sot, në fakt, do të të jenë të pajisur ju me disa Teknikat e zgjidhjes së problemeve për mënyrën se si për të zgjidhur më mirë problemet veten në formën e debugging. Dhe ju do të kujtojnë, gjithashtu, se Mjedisi që ne kemi prezantuar Herën e fundit është quajtur CS50 IDE. Kjo është software web-bazuar se ju lejon të programit në një re, kështu që të flasin, duke i mbajtur të gjitha tuaj fotografi së bashku, si ne përsëri do sot. Dhe kujtojnë se ne rishqyrtohet këto tema ketu, në mesin e tyre, funksionet dhe sythe, dhe variabla, dhe shprehjet Boolean, dhe kushtet. Dhe në fakt një pak më shumë se ne përkthyer nga bota e Scratch në botën e C. Por ndërtimi themelore blloqe, kështu që të flasin, ishin me të vërtetë ende e njëjtë javën e kaluar. Në fakt, ne me të vërtetë kishte vetëm një pjesë të ndryshme mister, nëse ju do. Në vend të që të purpurt shpëtuar bllok, ne vend kishte printf, e cila është ky funksion në C që ju lejon për të shkruar diçka dhe format atë në ekran. Ne kemi prezantuar CS50 Library, ku ju kanë tani në get_char dispozicionin tuaj, dhe get_int dhe get_string, dhe disa funksione të tjera si disa mirë, me anë të të cilit ju mund të merrni të dhëna nga tastierë të plotë të përdoruesit. Dhe ne gjithashtu mori një vështrim në gjëra si these- bool, dhe char, dhe të dyfishtë, noton, int, string long_long. Dhe ka edhe lloje të tjera të të dhënave në C. Me fjalë të tjera, kur ju të deklarojë një variabël për të ruajtur disa vlera, ose kur ju të zbatojë një funksion që kthehet disa vlera, ju mund të specifikoni se çfarë lloji i vlerës që është. A është kjo një varg, si një sekuenca e karaktereve? A është kjo një numër, si një numër të plotë? A është kjo një pikë lundrues vlera, ose si? Pra në C, ndryshe nga Scratch, ne fakt filloi të përcaktojë se çfarë lloj të të dhënave ne ishim kthyer ose duke përdorur. Por, natyrisht, ne gjithashtu u përplas disa kufizime themelore të informatikës. Dhe në mënyrë të veçantë, kjo gjuhë C, risjell që kemi marrë një vështrim në del nga shtrati integer, realiteti se në qoftë se ju keni vetëm një Shuma e fundme e kujtesës ose, në mënyrë të veçantë, një numër i caktuar i bit, ju vetëm mund të mbështeteni aq e lartë. Dhe kështu që ne shikuar në këtë shembull këtu ku një counter në një aeroplan,, në fakt, në qoftë se duke kohë të mjaftueshme do të del nga shtrati dhe të rezultojë në një software një fizik aktual gabim të mundshëm. Ne gjithashtu shikuar në lundrues Pika pasaktësi, realiteti që me vetëm një numër i caktuar i bit, nëse është 32 apo 64, ju mund të specifikoni vetëm kaq shumë numra pas një presjes dhjetore, pas së cilës ju të fillojë të marrë të pasakta. Kështu për shembull, një e treta në bota këtu, në botën tonë njerëzore, ne e dimë është vetëm një numër i pafund i 3s pas presjes dhjetore. Por një kompjuteri nuk mund domosdoshmërisht përfaqësojnë një numër të pafund të numrave në qoftë se ju vetëm të lejojë që disa Shuma e fundme e informacionit. Pra, jo vetëm që ne t'ju pajisë me fuqi më të madhe në aspektin se si ju mund të shprehë veten në një tastierë në aspektin e programimit, ne gjithashtu e kufizuar atë në të vërtetë ju mund të bëni. Dhe me të vërtetë, bugs dhe gabime mund të lindin nga këto lloj çështjesh. Dhe në të vërtetë, në mesin e temave sot do të jetë tema si debugging dhe në të vërtetë në kërkim nën kapuç se si janë futur gjëra të javës së fundit janë zbatuar në fakt kështu që ju më mirë kuptojnë të dyja aftësitë e dhe kufizimet e një gjuhë si C Dhe në fakt, ne do të zhvishem përsëri shtresa e thjeshte e strukturës së të dhënave, diçka që quhet një grup, i cili Scratch ndodh për të thirrur një "listë". Është pak ndryshe në këtë kontekst. Dhe pastaj ne do të prezantoj një nga e parë e problemeve tona domain-e të Caktuar në CS50, bota e cryptography, arti i përpiqen ose në ciphering informacion në mënyrë që ju mund të dërgoni mesazhe sekrete dhe deshifroj mesazhe sekrete në mes të dy personave, A dhe B. Pra, para se të tranzicionit në atë botë të re, le të përpiqemi për të pajisur ju me disa teknikat me të cilat ju mund të eliminojnë ose reduktimin e te pakten disa nga frustrimet që ju keni hasur ndoshta gjatë javës së kaluar vetëm. Në të vërtetë, para teje janë such-- disa Problemet tuaja të para në C. Dhe shanset janë, në qoftë se ju jeni si mua, hera e parë ju përpiqeni të shkruani një program, edhe në qoftë se ju mendoni logjikisht Programi është shumë e thjeshtë, ju mund shumë mirë të goditur një mur, dhe përpiluesi nuk do të bashkëpunojnë. Bëni ose tingëllimë nuk do që në fakt urdhrat e tua. Dhe pse mund që të jetë? E pra, le të marrin një vështrim në, ndoshta, një program i thjeshtë. Unë jam duke shkuar për të shkuar përpara dhe për të shpëtuar këtë në një file i quajtur qëllimisht buggy0.c, sepse unë e di që ajo të të meta paraprakisht. Por unë nuk mund të kuptojnë se në qoftë se kjo është programi i parë apo të dytë ose të tretë se unë jam në të vërtetë duke e bërë veten time. Kështu që unë jam duke shkuar për të shkuar përpara dhe lloji jashtë, int kryesor (i pavlefshëm). Dhe pastaj brenda formatimin e teksteve kaçurrel e mia, një shumë të njohur ( "hello, world-- backslash, n ") - dhe një gjysmë-zorrës së trashë. Unë e kam ruajtur file. Tani unë jam duke shkuar për të shkuar poshtë në dritaren time terminal dhe llojin e make buggy0, sepse, përsëri, Emri i skedarit sot është buggy0.c. Kështu që unë lloji të buggy0, Enter. Dhe, oh, Zot, kujtohet nga hera e fundit se pa mesazhet e gabimit është një gjë e mirë. Kështu që nuk ka dalje është një gjë e mirë. Por këtu kam të qartë disa numër i gabimeve. Pra, rreshtin e parë të prodhimit pas shtypni të buggy0, kujtojnë, del mjaft e fjalëshumë tingëllimë së. Nën kapuç, CS50 IDE është konfiguruar për të përdorur një bandë e tërë e Opsionet me këtë përpilues në mënyrë që ju nuk keni për të menduar rreth tyre. Dhe kjo është e gjitha që vija e parë do të thotë se fillon me tingëllimë. Por pas kësaj, problemet të fillojë për të bërë paraqitjen e tyre. Buggy0.c në linjë 3, karakterin 5, nuk është një, gabim i madh i kuq. Cfare eshte ajo? Implicite deklaruar funksionin e bibliotekës printf me lloj int (char * const, ...) [-Werror]. Unë do të thotë, se shumë shpejt merr shumë misterioze. Dhe sigurisht, në fillim shikim, ne nuk do të presin që ju të kuptoni tërësia e atij mesazhi. Dhe kështu një nga mësimet sepse sot do të jetë për të provoni në njoftim modele, apo gjëra të ngjashme, për gabimet që mund të keni hasur në të kaluarën. Pra, le të të vë në lojë përveç vetëm ato fjalë që duken të njohura. I madh, gabim e kuqe është e qartë simbol i diçkaje të gabuar. implicite deklaruar Funksioni printf bibliotekë. Pra, edhe në qoftë se unë nuk e kuptojnë fare se çfarë implicite deklaruar funksionin e bibliotekës do të thotë, problemi me siguri ka të bëjë me printf disi. Dhe burimi i kësaj çështjeje ka të bëjë me shpalljen atë. Deklaruar një funksion është përmendur atë për herë të parë. Dhe kemi qenë terminologjinë javën e kaluar i deklaruar prototip një funksion së, ose me një linjë në krye tuaj Dosja e vet ose në një të ashtuquajtur skedar header. Dhe në atë fotografi u themi javën e kaluar se printf është quote, mbyll thonjëzat, ka deklaruar? Në çfarë skedë është prototipi i saj? Pra, nëse ju kujtohet, gjëja e parë I typed, pothuajse çdo program time-- fundit dhe aksidentalisht një moment më parë ka filluar shtypja myself-- ishte kjo here-- hash-- # Include