[GLASBA] DAVID J. Malan: V redu. To je CS50 in to je začetek 2 tedna. In se spomnite, da se je zadnjih nekaj tednov, smo jih uvaja računalnik znanosti in, po drugi strani, programiranje. In smo začeli zgodbo s pomočjo Scratch, da grafični jezik iz Media Lab MIT. In potem nazadnje, prejšnji teden, si mi uvesti higher-- a jezika na nižji ravni znana kot C, nekaj, kar je zgolj tekstovno. In res, zadnjič, ko smo raziskati v tem kontekstu več konceptov. To, odpoklic, je bil zelo Prvi program smo iskali. In ta program, preprosto, natisne, "Zdravo, svet." Ampak tam je tudi veliko Navidezna magic dogaja. Tam je to #include s temi kotnih oklepajih. Tam je int. Tam je (ničen). Tam je oklepaji, zaviti oklepaji, podpičji, in še veliko več. In tako opozarjajo, da smo uvedli praske tako da bi lahko v idealnem primeru, glej preteklost da skladnja, stvari, ki v resnici ni vse to razumsko zanimivo, vendar že na začetku je nujno, malce zapleteno zaviti vaš um okoli. In seveda eden izmed najpogostejših stvari že na začetku v programskem razredu, predvsem za tiste manj udobno, je, da se razočarane in spotaknil jih nekatere skladenjskopomenske napake, da ne omenjam logičnih napak. In tako med našimi cilji Danes, v resnici, bo je, da vas opremili z nekaterimi reševanje težav tehnike, kako za boljše reševanje težav sami v obliki odpravljanje napak. In se spomnite tudi, da je okolje, ki smo uvedli Zadnjič, ko je bil imenovan CS50 IDE. To je spletno programsko opremo, ki vam omogoča, da program v oblaku, tako rekoč, držeč vse vaše datotek skupaj, saj smo spet bo danes. In spomnim, da smo revisited te teme tukaj, med njimi funkcije in zank, in spremenljivke, in Boolove izrazi, in pogoji. In dejansko nekaj več, da smo prevedena iz sveta Scratch v svet C. Toda temeljna zgradba bloki, tako rekoč, so bili res še vedno isto prejšnji teden. Dejansko smo res samo imeli drugačna puzzle kos, če hočete. Namesto tega vijolično shrani blok, smo namesto je printf, ki je ta funkcija v C, ki vam omogoča, da natisnete nekaj in ga oblikujte na zaslonu. Smo uvedli CS50 Knjižnica, kjer vas imajo zdaj na vaši get_char odstranjevanje, in get_int in get_string, in še nekaj drugih funkcij, kot dobro, prek katerega lahko dobite vhod od uporabnika lastno tipkovnico. In smo tudi pogled na stvari kot these- bool in char, in double, float, int, long_long niz. In tam je tudi druge vrste podatkov v C. Z drugimi besedami, ko se prijavijo spremenljivka za shranjevanje določeno vrednost, ali ko izvajajo funkcijo da vrne neko vrednost, lahko določite, kaj tip vrednosti, ki je. Je niz, kot je zaporedje znakov? Ali je to število, kot celo število? Je to plavajočo vejico Vrednost ali podobno? Torej, v C, za razliko od nič, smo dejansko začel navesti kakšne podatkov smo se vračajo ali uporabo. Ampak, seveda, smo naleteli tudi na nekatere temeljne meje računalništva. In predvsem, ta jezik C, odpoklic da smo si na celo preliv, realnost da, če imate le končna količina pomnilnika ali, natančneje, končna številka bitov, lahko računate tako visoko samo. In tako smo iskali v tem primeru tukaj pri čemer števec na letalu, pravzaprav, če deluje dovolj dolgo bi preliva in povzroči programske opreme dejansko fizično možna napaka. Ogledali smo si tudi plavajoče točka nenatančnost, realnost da le končno število bitov, ali je to 32 ali 64, lahko določite le toliko številk Po decimalno vejico, po katerem začeli, da bi dobili nenatančno. Tako, na primer, ena tretjina v svet tukaj, v našem človeškem svetu, vemo, je samo neskončno število od 3 let vejico. Vendar računalnik ne more nujno predstavljajo neskončno število številk če le dovolite, da nekateri končna količina informacij. Torej, ne le, da smo vas opremili z večjo močjo v smislu o tem, kako bi lahko izraziti sebe na tipkovnice v smislu načrtovanja, smo omejeni tudi kaj lahko dejansko narediti. In res, lahko hroščev in napak izhajajo iz teh vrst vprašanj. In res, med tem danes se bodo teme, kot so odpravljanje napak in dejansko je videti pod pokrovom kako so bile uvedene stvari zadnjem tednu dejansko izvajajo tako da boste bolje razumeti obe zmogljivosti in omejitve jeziku, kot je C. In v resnici, bomo lupine nazaj plasti od najpreprostejših strukture podatkov, nekaj, kar se imenuje matrika, ki Scratch se zgodi, da klic "seznam". To je malo razlikuje v tem kontekstu. In potem bomo uvesti tudi eno izmed Prvi od naših domensko specifičnih problemov v CS50, svet kriptografija, umetnost kodiranja ali šifriranje podatkov tako ki ga lahko pošljete skrivna sporočila in dekodiranje skrivna sporočila med dvema osebama, A in B. Torej, preden smo prehodom v tem novem svetu, poskusimo vas opremili z nekaterimi tehnike, s katerimi boste lahko odpravili ali zmanjšanje vsaj nekaj od frustracij da ste verjetno naleteli več kot samo v zadnjem tednu. Dejstvo je, pred vami so such-- nekaj svoje prve težave v C. In kvote so, Če ste kot jaz, prvič poskusite vnesti iz programa, tudi če logično razmišljati Program je zelo preprosta, bi lahko zelo dobro zadel zid, in prevajalnik ne bo sodelovala. Znamka ali Zvoka ne bo dejansko opravljate svoje ponudbe. In zakaj bi to lahko bilo? No, pa si oglejte, morda preprost program. Bom, da gredo naprej in shranite to datoteka namenoma imenuje buggy0.c, ker vem, da pomanjkljiva vnaprej. Ampak jaz ne bi spoznala, da če je to je prvi ali drugi ali tretji program da sem pravzaprav kar sam. Tako da sem šel naprej in tip ven, int main (praznino). In potem znotraj mojih zavitih oklepajev, zelo pozna ( "zdravo, world-- Nagibnica, n ') - in podpičjem. Sem shranili datoteko. Zdaj bom šel dol na mojo terminalsko okno in vrsta make buggy0, ker, še enkrat, ime datoteke je danes buggy0.c. Torej, sem tip, da buggy0, Enter. In, oh, bog, odpoklic od zadnjega obiska da ni sporočil o napakah, je dobra stvar. Tako da ni izhoda, je dobra stvar. Ampak tukaj imam jasno nekateri število napak. Torej, v prvi vrstici proizvodnje Ko vtipkate da buggy0, odpoklic, je precej verbose Jek je. Pod pokrovom, CS50 IDE je nastavljen uporabiti cel kup možnosti s tem prevajalnik tako da nimate da razmišljajo o njih. In to je vse, kar v prvi vrstici pomeni, da se začne s Jek. Vendar po tem, težave začeli, da bi njihov videz. Buggy0.c na progi 3, značaj 5, je velika, rdeča napake. Kaj je to? Implicitno razglasitvi knjižnica funkcijo printf s tipa int (const char *, ...) [-Werror]. Mislim, da zelo hitro postane zelo Skrivnosten. In seveda, v prvi pogled, da ne bi Pričakujemo, da boste razumeli celota tega sporočila. In tako ena od lekcij Za danes se dogaja da je, da bi poskušali obvestilo vzorci ali podobne stvari, za napake, boste morda morali s katerimi se srečujejo v preteklosti. Torej, kaj je draži samo narazen te besede, ki so videti poznajo. Velika, rdeča napaka je jasno simbol nečesa pa narobe. implicitno razglasi knjižnica funkcijo printf. Torej, tudi če ne razumem povsem, kaj implicitno razglasitvi knjižnica funkcijo sredstva, problem zagotovo nanaša na nekako printf. In vir tega vprašanja ima opraviti z razglasitev. Razglasitev funkcija je jo omenjajo prvič. In smo uporabili terminologijo prejšnji teden o razglasitvi funkcija je prototip, bodisi z eno vrstico na vrhu lastne datoteke ali v tako imenovanem glavi datoteki. In v kakšnem datoteke naredil rečemo prejšnji teden, da je printf citat, konec citata, je izjavil? V kakšnem datoteka je njegov prototip? Torej, če se spomnimo, zelo prva stvar, ki sem vnesenih, skoraj vsak program za zadnji time-- in po nesreči pred nekaj trenutki se je začela myself-- tipkanje je bil to eden here-- hash-- #include