[MUSIC SVIRA] DAVID J. Malan: U redu. To je CS50 i to je početak tjedna 2. A vi ćete se sjetiti da je preko u posljednjih nekoliko tjedana, mi smo bili uvođenjem računala znanost i, zauzvrat, programiranje. I počeli smo priču putem Blok, koji grafički jezik iz MIT Media Laba. I onda nedavno, prošli tjedan, jesmo li uvesti higher-- A niže razine jezik poznat kao C, nešto što je čisto tekstualnog. I, doista, posljednji put smo istražiti u tom kontekstu broj koncepata. To je, podsjetimo, bio je vrlo Prvi program smo pogledali. I ovaj program, jednostavno, ispisuje "Hello, World". No, postoji toliko činilo magija događa. Tu je ovaj #include s tim zagrade. Postoji int. Postoji (void). Postoji zagrade, vitičastim zagradama, točkom sa zarezom, i tako mnogo više. I tako, podsjetiti da je uveli smo Scratch tako da bismo mogli, u idealnom slučaju, vidi prošlost da sintaksa, stvari koje stvarno ne sve to intelektualno zanimljivo, ali rano je, apsolutno, malo zeznuto omotati svoje mišljenje oko sebe. I, doista, jedan od najčešćih stvari rano u programiranju klasi, pogotovo za one manje udoban, je da se frustriran i spotaknula se po određenom sintaktičkih pogreške, da ne spominjemo logičke pogreške. I tako među našim ciljevima Danas, zapravo, hoće biti da vas opremiti s nekim Tehnike rješavanja problema za koliko kako bi se bolje sami rješavaju probleme u obliku pogrešaka. A vi ćete se sjetiti, također, da je okruženje koje smo uveli Posljednji put bio pozvan CS50 IDE. Ovo je web-temeljen softver koji omogućuje programiranje u oblaku, da tako kažemo, a imajući sve svoje datoteka zajedno, kao što smo ponovno će se danas. A sjećam da smo revisited ove teme ovdje, među njima i funkcije, i petlje, i varijable i Boolean izrazi, i stanja. A zapravo malo više da mi preveo iz svijeta nule u svijet C. No, temeljni zgrada blokovi, da tako kažemo, su zaista uvijek isti prošlog tjedna. U stvari, mi zapravo samo imali drugačiji puzzle komad, ako hoćete. Umjesto da ljubičasta spasiti blok, mi umjesto je printf, što je ova funkcija u C koji Omogućuje ispis nešto i formatirajte ga na ekranu. Uveli smo CS50 Knjižnica, gdje vas sada imamo na raspolaganju Vam get_char, i get_int i get_string, i nekoliko drugih funkcija dobro, preko kojeg možete dobiti ulaz od korisnikove tipkovnici. I mi također uzeo pogledati stvari kao these- bool i char, i dvostruko, plutaju, int, long_long niz. A tu je još i druge vrste podataka u C Drugim riječima, kada se izjasniti varijabla za pohranu neku vrijednost, ili kada implementirati funkciju koji vraća neku vrijednost, možete odrediti što vrsta vrijednosti koja je. Je li to string, poput niz znakova? Je li to broj, kao što je cijeli broj? Je li to s pomičnim zarezom vrijednosti, ili slično? Tako je u C, za razliku od nule, mi zapravo počeo navesti koje sve vrste podataka smo se vraćaju ili korištenjem. Ali, naravno, mi također naletio neke temeljne granice računarstva. I posebno, taj jezik C, opoziv da mi je pogledati broj preljeva, stvarnost da, ako imate samo jedan konačna količina memorije ili, točnije, konačan broj bitova, samo možete računati tako visoka. I tako smo pogledali ovaj primjer ovdje pri čemu je brojač u zrakoplovu,, Zapravo, ako se radi dovoljno dugo će prelijevati i dovesti u softveru stvarni fizički potencijal pogreška. Također smo promatrali pluta točka nepreciznosti, stvarnost da samo s konačnim brojem bitova, da li je 32 ili 64, možete odrediti samo toliko brojeva nakon decimalne točke, nakon čega počinju da se neprecizan. Tako, na primjer, jedna trećina u Svijet je ovdje, u našem ljudskom svijetu, znamo samo beskonačan broj od 3s nakon decimalne točke. No, računalo ne može nužno predstavlja beskonačan broj brojeva ako samo dopustiti da neki konačna količina informacija. Dakle, ne samo da smo vas opremiti s većom snagom u smislu kako se može izraziti sebe na tipkovnica u smislu programiranja, mi također ograničen ono što zapravo može učiniti. I doista, bugovi i greške mogu proizlazi iz one vrste pitanja. I doista, neke od tema danas će biti teme kao što su ispravljanje pogrešaka i zapravo izgleda ispod haube kako stvari su uvedene prošlog tjedna su zapravo provodi tako da bolje razumjeti obje mogućnosti i ograničenja na jeziku kao što je C A u stvari, mi ćemo ponovno oguliti slojeve od najjednostavnijih strukture podataka, nešto što se zove niz, koji je Blok se događa nazvati "popis". To je malo razlikuje u tom kontekstu. A onda ćemo također predstaviti na jedan od Prvi od naših problema određenih područja u CS50, svijet kriptografija, umjetnost remećenje ili šifriranje podataka te da možete slati tajne poruke i dekodiranje tajnih poruka između dvije osobe, A i B. Dakle, prije nego što smo tranziciju u tom novom svijetu, pokušajmo vas opremiti s nekim Tehnike kojima možete eliminirati ili smanjivanje barem neke od frustracije da ste vjerojatno naišli više samo u posljednjih tjedan dana. Naime, pred vama su neki od such-- vaši prvi problemi u C, a izgledi su, Ako ste poput mene, prvi put pokušate tip iz programa, čak i ako mislite logično Program je prilično jednostavan, možda vrlo dobro udario u zid, a prevodilac neće surađivati. Napraviti ili zveket ne ide zapravo učiniti vaš ponudu. A zašto bi to moglo biti? Pa, neka je pogledati, možda, jednostavan program. Ja ću ići naprijed i spasiti ovo file namjerno zove buggy0.c, jer ja to znam da biti pogrešno unaprijed. Ali ne može shvatiti da ako se to je prvi ili drugi ili treći program da sam zapravo čineći sebe. Tako ću ići naprijed i upišite se, int glavni (prazninu). I onda unutar mojih vitičastim zagradama, vrlo poznati ( "Hello, svijet- Obrnuta kosa crta, n ") - i zarez. Ja sam spremili datoteku. Sada ću ići dolje na moj prozor terminala i tip make buggy0, jer je, opet, naziv datoteke je danas buggy0.c. Tako sam tip bi buggy0, Enter. I, oh, bože, prisjetiti od zadnjeg puta da nema poruka o pogrešci je dobra stvar. Dakle, nema izlaza je dobra stvar. Ali ovdje moram jasno neki broj pogrešaka. Dakle, prvi red izlaza nakon upisivanja bi buggy0, podsjetimo, je zveket je prilično detaljne izlaz. Ispod haube, CS50 IDE konfiguriran koristiti hrpu opcije s ovim prevodilac tako da se ne morate razmišljati o njima. I to je sve što je prva linija znači da počinje s jeka. Ali nakon toga, problemi početi da njihov izgled. Buggy0.c na liniji 3, karaktera 5, nalazi se velika, crvena pogreška. Što je to? Implicitno proglašenja funkcije knjižnica printf s tipa int (const char *, ...) [-Werror]. Mislim, to se vrlo brzo dobiva vrlo kompliciranih. I svakako, na prvi pogled, ne bismo očekuju vas razumjeti cjelokupnost te poruke. I tako jedna od lekcija za danas ide se pokušati uočiti uzoraka, ili slične stvari, pogrešaka možete imati naišao u prošlosti. Tako ćemo zafrkavati osim samo one riječi koje izgledaju poznato. Velika, crvena greška je jasno simbol nečega što je krivo. implicitno izjavljujući Biblioteka funkcija printf. Pa čak i ako ja ne razumijem što implicitno izjavljuje funkcije knjižnica znači, problem sigurno odnosi se na printf nekako. A izvor tog problema ima veze s ga progla. Progla funkcija spomena po prvi put. I koristili smo terminologiju prošlog tjedna proglašavanja funkciju je prototip, ili s jedne linije na vrhu svoje vlastite datoteke ili u tzv datoteku zaglavlja. A u ono što datoteku učinili smo rekli prošlog tjedna da printf je citat, citat, izjavio? U onome što je datoteka njegov prototip? Dakle, ako se sjećate, vrlo prva stvar koju sam upisali, gotovo svaki program prošle time-- i slučajno trenutak prije počela upisivanjem myself-- je to jedan here-- hash-- #include