[SKAN MŪZIKA] DAVID J. Malan: Labi. Tas ir CS50, un šī ir sākums 2. nedēļā. Un jūs atgādināt, ka vairāk nekā Pēdējo pāris nedēļu laikā, mēs esam ieviešot datoru zinātne un, savukārt, programmēšana. Un mēs sākām stāsts veidā Scratch, ka grafiskā valoda no MIT Media Lab. Un tad pavisam nesen, pagājušajā nedēļā, mēs esam ieviest higher-- A zemāka līmeņa valoda zināms kā C, kaut kas ir tīri teksta. Un, protams, pēdējo reizi mēs pētītas šajā kontekstā vairākas koncepcijas. Tas, atgādināt, bija ļoti Pirmā programma mēs paskatījās. Un šī programma, gluži vienkārši, izdrukā, "Hello, World". Bet tur ir tik daudz šķietams burvju notiek. Tur ir šis # include ar šiem leņķa iekavās. Tur ir int. Ir (spēkā neesošs). Tur ir iekavas, cirtaini bikšturi, semikoli, un tā daudz vairāk. Un tā, atgādināt, ka mēs ieviesām Scratch lai mēs varētu, ideālā gadījumā, sk pagātni ka sintakse, sīkumi, kas tiešām nav viss, kas intelektuāli interesanti, bet agri ir absolūti, mazliet viltīgs wrap savas domas ap. Un, protams, ir viens no visbiežāk lietas agri programmēšanas klasē, jo īpaši tiem mazāk ērti, ir iegūt neapmierinātas ar un paklupu up ar noteiktu sintaktisko kļūdas, nemaz nerunājot loģiskās kļūdas. Un tā no mūsu mērķiem šodien, patiesībā, būs būt aprīkot jūs ar dažiem problēmu risināšana paņēmieni, kā labāk risināt problēmas paši formā atkļūdošanu. Un jūs atgādināt arī, ka vide, ka mēs iepazīstinājām pēdējo reizi sauca CS50 IDE. Šī ir tīmekļa programmatūru, kas ļauj ieprogrammēt mākonis, tā sakot, saglabājot visas jūsu failus kopā, jo mēs atkal šodien. Un atgādina, ka mēs pārskatīt šīs tēmas šeit, starp tiem funkcijas, un cilpas, un mainīgie, un Būla izteiksmes, un nosacījumiem. Un patiesībā vēl dažus, ka mēs tulkots no pasaules Scratch uz pasaules C. Bet galvenais ēka bloki, tā sakot, bija tiešām joprojām ir tas pats pagājušajā nedēļā. Patiesībā, mēs tiešām tikai bija atšķirīgs puzzle gabals, ja Jums gribas. Tā vietā, lai violeta glābt bloku, mēs vietā bija Printf, kas ir šī funkcija C ka ļauj drukāt kaut ko un formatēt to uz ekrāna. Mēs iepazīstinājām CS50 Bibliotēka, kur jums tagad jūsu rīcībā get_char, un get_int, un get_string, un dažas citas funkcijas, kā labi, caur kuru jūs varat saņemt ievade no lietotāja paša klaviatūru. Un mēs arī ņēma apskatīt lietas piemēram these- bool un palijas, un dubultā, peldēt, int, long_long string. Un tur pat citu datu tipu C Citiem vārdiem sakot, ja jūs deklarēt mainīgais uzglabāt dažas vērtību, vai ja jums īstenot funkciju kas atgriež dažas vērtības, Jūs varat norādīt, ko par vērtību, kas ir tips. Vai tas ir string, piemēram, rakstzīmju secība? Vai tas ir skaitlis, piemēram, skaitlim? Vai tā ir peldošā komata vērtība, vai tamlīdzīgi? Tātad C, atšķirībā no nulles, mēs faktiski sāka norādīt, kāda veida datus mēs atgriešanās vai izmanto. Bet, protams, mēs arī uzbrauca dažas būtiskas robežas skaitļošanas. Un it īpaši, šī valoda C, atsaukšana ka mēs ņēmām apskatīt skaitlis pārplūdes, realitāte ka, ja jums ir tikai ierobežots atmiņas apjoms vai, precīzāk, ierobežots skaits bitu, jūs varat tikai paļauties tik augsts. Un tā mēs paskatījās šo piemēru šeit saskaņā ar kuru skaitītājs lidmašīnā, patiesībā, ja darbojas pietiekami ilgi būtu pārplūdes un izraisīt programmatūru faktiskais fiziskais iespējamā kļūda. Mēs arī apskatīja peldošā neprecizitāte punkts, realitāte ka tikai ierobežots skaits bitu, vai tas ir 32 vai 64, Jūs varat norādīt tikai tik daudz numurus pēc komata, pēc kura jūs sāk saņemt neprecīza. Tā, piemēram, vienu trešo vietu pasaule šeit, mūsu cilvēku pasaulē, mēs zinām, ir tikai bezgalīgi daudz no 3s aiz komata. Bet dators var nebūt pārstāv neskaitāmas numuru ja Jums ir tikai ļaujiet tai dažas ierobežots informācijas daudzums. Tātad ne tikai mēs aprīkot jūs ar lielāku jaudu ziņā par to, kā jūs varētu izteikt sevi tastatūra ziņā plānošanu, mēs arī ierobežots, ko jūs faktiski var darīt. Un tiešām, bugs un kļūdas var rodas no šiem jautājumiem veidu. Un tiešām, starp tēmām šodien ir būs tēmas, piemēram atkļūdošana un faktiski meklē zem pārsega cik tika ieviests lietas pagājušajā nedēļā faktiski īstenoti lai jūs labāk izprast gan spējas un ierobežojumi valodā, piemēram, C. Un patiesībā, mēs mizu atpakaļ slāņus no vienkāršākajiem datu struktūras, kaut ko sauc masīvs, kas Scratch notiek zvanīt "sarakstu." Tas ir mazliet atšķirīga šajā kontekstā. Un tad mēs arī ieviest vienu no Pirmais no mūsu domēna specifiskas problēmas in CS50, pasaule kriptogrāfija, māksla kodēšanas vai šifrēšana informāciju, ka jūs varat nosūtīt slepenu ziņu un atšifrēt slepenu ziņu starp divām personām, A un B Tātad, pirms mēs pārejas ar šo jauno pasauli, pamēģināsim aprīkot jūs ar dažiem metodes, ar kuru jūs varat novērst vai samazināt vismaz daži no neapmierinātību ka jūs, iespējams, radušās pāri vien pagājušajā nedēļā. Patiesībā, pirms jums ir such-- daži savu pirmo problēmas C. Un izredzes ir, Ja jūs esat līdzīgi man, pirmo reizi jūs mēģināt rakstīt out programmu, pat ja jūs domājat, ka loģiski programma ir diezgan vienkāršs, jūs varētu ļoti labi hit sienas, un kompilators nav gatavojas sadarboties. Marka vai šķindēt negrasās lai faktiski darīt savu solīšanu. Un kāpēc varētu būt? Nu, pieņemsim to apskatīt, varbūt, vienkārša programma. Es iešu uz priekšu un saglabāt to fails apzināti sauc buggy0.c, jo es zinu to būt kļūdaina iepriekš. Bet es nevarētu saprast, ka, ja šis ir pirmā vai otrā vai trešā programma ka es esmu faktiski padarot sevi. Tāpēc es esmu gatavojas iet uz priekšu un veids, kas, int galvenais (spēkā neesošs). Un tad iekšā manas cirtaini bikšturi, ļoti pazīstams ( "hello, world-- reversā slīpsvītra, n ") - un semikolu. Esmu saglabājis failu. Tagad es esmu gatavojas iet uz leju uz manu termināļa loga un tips make buggy0, jo, atkal, nosaukums faila šodien ir buggy0.c. Tāpēc es tipa darīt buggy0, Enter. Un, ak, Dievs, atcerēties no pēdējo reizi ka nav kļūdu ziņojumiem ir laba lieta. Līdz ar to nav izeja ir laba lieta. Bet šeit man ir skaidri daži skaits kļūdām. Tātad pirmajā rindā produkcijas pēc rakstīt padarīt buggy0, atgādināt, ir šķindēt ir diezgan runīgs produkciju. Zem motora pārsega, CS50 IDE ir konfigurēts izmantot visu ķekars iespējas ar šo kompilatoru tā, ka jums nav domāt par tiem. Un tas ir viss, kas pirmajā rindā līdzekļi, kas sākas ar šķindēt. Bet pēc tam, problēmas sāk veikt savu izskatu. Buggy0.c on line 3, raksturs 5, ir liels, sarkans kļūda. Kas tas ir? Netieši atzīstot bibliotēka funkciju printf ar tipa int (const char *, ...) [-Werror]. Es domāju, ka ir ļoti ātri kļūst ļoti arcane. Un, protams, vispirms skatienu, mēs nebūtu sagaida, lai jūs saprastu kopums šo ziņu. Un tā viena no mācībām par šodien notiek būt mēģināt pamanīt modeļus, vai līdzīgas lietas, kļūdas jums varētu būt radušās pagātnē. Tātad, pieņemsim kaitināt intervālu tikai šie vārdi, kas izskatās pazīstami. Liels, sarkans kļūda ir skaidri simbolizē kaut ko ir nepareizi. netieši deklarējot bibliotēkas funkciju printf. Tātad, pat ja man nav gluži saprast, ko netieši atzīstot bibliotēka funkciju līdzekļiem, problēma noteikti saistīts ar printf kaut kā. Un avots šajā jautājumā ir saistīts ar to deklarējot. Pasludināšana funkcija ir minot to pirmo reizi. Un mēs izmantojām terminoloģiju pagājušajā nedēļā deklarēt funkcija ir prototips, nu ar vienu līniju augšpusē jūsu pašu failu vai ts header failu. Un tas, ko fails darīja mēs sakām pagājušajā nedēļā, ka printf ir citāts, likt pēdiņas beigās, paziņoja? Kādā fails ir tā prototips? Tātad, ja jūs atceraties, pati pirmā lieta, ko es drukāti, gandrīz katrs programma pagājušajā LAIKU_ un nejauši pirms brīža sākās ierakstot myself-- bija tas viens here-- hash-- # Ietvert