[MUSIC MÄNGIB] DAVID J. Humala: Hea küll. See on CS50 ja see on algus 2. nädal. Ja võite meelde tuletada, et üle Viimase paari nädala jooksul, viisime sisse arvuti teaduse ja omakorda, programmeerimine. Ja hakkasime lugu teel Scratch, et graafiline keel MIT Media Lab. Ja siis viimasena Eelmisel nädalal tegime kehtestada higher-- madalama taseme keeles tuntud C, midagi, mis on puhtalt tekstiline. Ja tõesti, viimane kord uurida selles kontekstis mitmeid kontseptsioone. See, mäletate, oli väga Esimene programm me vaatasime. Ja seda programmi, lihtsalt prindib välja, "Tere, maailm." Aga seal on nii palju näilisest magic toimub. Seal on see #include Nende noolsulgudega. Seal on int. Seal (void). Seal on sulgudes, looksulg, semikoolonite, ja nii palju. Ja nii, meelde tuletada, et meil kasutusele Scratch nii et me võiks ideaalis näha minevikku et süntaks, asju, mis pole tegelikult kõik, mis intellektuaalselt huvitav, kuid juba varakult on absoluutselt, natuke keeruline wrap meelt umbes. Ja tõepoolest, üks levinumaid asju varakult programmeerimise klassi, eriti neile vähem mugav, on saada pettunud ja kompastumisen teatud süntaktilise vigadest, rääkimata loogiline vigadest. Ja nii üks meie eesmärke täna, tegelikult, eks olla varustada teid mõned probleemide lahendamise tehnikaid kuidas paremini lahendada probleeme ise kujul silumine. Ja teil meenutada ka, et keskkonda, milles me sisse Viimast korda kutsuti CS50 IDE. See on veebipõhine tarkvara, mis võimaldab teil programmeerida pilv, niiöelda, hoides kogu oma failid koos, kui me jälle täna. Ja meenutada, et me vaadata neid teemasid siin, nende seas funktsioonid ning silmusesse muutujad ja Boole'i ​​väljendeid, ja tingimusi. Ja tegelikult veel mõned, et me tõlgitud maailma Scratch maailma C. Aga põhiline hoone plokid, nii et rääkida, olid tõesti ikka sama eelmisel nädalal. Tegelikult on meil tõesti oli just erinevat pusletükk, kui soovite. Selle asemel, et lilla salvestada plokk, me asemel oli printf, mis on Selle funktsiooni C, et võimaldab printida midagi ja vormi seda ekraanil. Me tutvustas CS50 Raamatukogu, kus te on nüüd teie käsutuses get_char, ja get_int ja get_string, ja mõned muud funktsioonid noh, mille kaudu saad sisestada kasutaja enda klaviatuuri. Ja meil on ka vaatlesime asju nagu these- bool ja paalia, ja double, float, int, long_long string. Ja seal on isegi muid andmeid liigid C. Teisisõnu, kui kuulutada muutuja salvestada mingi väärtuse, või kui rakendada funktsiooni mis tagastab mingi väärtuse, saate määrata, milliseid tüüpi väärtus, mis on. Kas see on string, nagu märgijada? Kas see on number, nagu täisarv? Kas see on ujukoma väärtust vms? Nii C erinevalt Scratch, me tegelikult hakkas täpsustanud, milliseid andmeid olime tagasi või kasutades. Aga muidugi on meil ka sattus mõned põhipiirangut arvutustehnika. Ja eriti Selle keele C, turult et me vaatlesime täisarv ülevoolu, tegelikkus et kui sul on ainult piiratud kogus mälu või täpsemalt hulga bittide, saad ainult loota nii kõrge. Ja nii me vaatasime seda näiteks siin kusjuures counter lennukis, tegelikult, kui töötab piisavalt pikk oleks ülevoolu ja põhjustada tarkvara tegeliku füüsilise potentsiaali viga. Me vaadeldi ka ujuva punkti ebatäpsus, tegelikkus et ainult piiratud arvu bittide, kas see on 32 või 64, saab määrata ainult nii palju numbreid pärast koma, pärast mida alustada saada ebatäpne. Nii näiteks ühe kolmandiku võrra maailma siin, inimeste maailma, me teame, on ainult lõpmatu arv ning 3s pärast koma. Aga arvuti ei saa tingimata esindavad lõpmatu arv numbrid kui sa ainult seda lubavad mõned piiratud hulgal teavet. Nii et mitte ainult ei me varustada teid suurema võimsuse poolest kuidas siis võib väljendada ennast klaviatuuri poolest programmeerimine, meil on ka piiratud, mida tegelikult võite seda teha. Ja tõepoolest, vead ja vigu võib tekivad seda tüüpi küsimusi. Ja tõepoolest, üks teemasid täna hakkavad teemasid nagu silumine ja tegelikult otsivad all kapuuts kuidas asjad toodi eelmisel nädalal tegelikult ellu nii et sa parem mõista nii võimeid ja piirangud keeles nagu C Ja tegelikult, me Tõmmake kihid lihtsamaid andmete struktuuri, midagi, mida nimetatakse massiivi, mis Scratch juhtub nimetame "nimekirja." See on natuke erinevad selles kontekstis. Ja siis me ka tutvustada üks Esimene meie valdkonnapõhised probleeme aastal CS50, maailma krüptograafia, kunst segunemise või šifreerimine informatsiooni nii et võite saata salajasi teateid ja dekodeerida saladus teateid kahe isiku vahel, A ja B. Nii enne kui me üleminek Selle uue maailma, Proovime varustada teid mõned tehnikat, millega saab kõrvaldada või vähendada vähemalt mõned pettumusi et teil on ilmselt tekkinud viimase nädala jooksul üksi. Tegelikult su ees on such-- mõned Teie esimene probleeme C. Ja koefitsiendid, Kui sa oled nagu mina, esimest korda püüad tüüp välja programm, isegi siis, kui te arvate, loogiliselt programm on üsna lihtne, võite väga hästi tabanud seina ja koostaja ei kavatse koostööd. Tee või rõkkama ei kavatse tegelikult teha oma pakkumise. Ja miks see võiks olla? Noh, kui heita pilk, ehk lihtne programm. Ma lähen edasi minna ja päästa seda faili teadlikult nn buggy0.c, sest ma tean, et see puudulikud ette. Aga ma ei pruugi mõista, et kui see on esimene või teine ​​või kolmas programm et ma tegelikult teeb ise. Nii et ma lähen edasi minna ja tüüp välja, int main (void). Ja siis sees minu looksulg, väga tuttav ( "tere, world-- backslash, n ") - ja semikooloniga. Olen salvestatud faili. Nüüd ma lähen alla minu terminali aknas ja liiki make buggy0, sest jällegi nimi faili täna buggy0.c. Nii I tüüpi muuta buggy0, Enter. Ja oh jumal, mäletate viimast korda et ükski veateated on hea. Seega ei ole väljund on hea. Aga siin mul selgelt mõned vigade arvu. Nii et esimene rida väljund pärast kirjutades teha buggy0, meenutada, on rõkkama on üsna paljusõnaline väljund. All kapuuts, CS50 IDE on seadistatud kasutada terve hulk võimalusi selle koostaja nii et sa ei pea mõelda neist. Ja see on kõik, mis esimese rea vahendid, mis algab rõkkama. Kuid pärast seda, probleemid hakata tegema oma välimust. Buggy0.c rea 3, iseloomu 5, on suur, punane viga. Mis see on? Kaudselt kuulutatakse raamatukogu funktsiooni printf tüüpi int (const char * ...) [-Werror]. Ma mõtlen, et see väga kiiresti läheb väga kauge. Ja kindlasti, esimesel lühidalt, me ei eeldada, et sa aru kogu see sõnum. Ja nii üks lugu täna läheb olema püüda märgata mustrid, või sarnaseid asju, vigu, mida oleks võinud varem kokku puutunud. Nii saab õrritama peale ainult need sõnad, mis näevad välja tuttav. Suur, punane viga on selgelt sümboolne midagi on valesti. kaudselt kuulutatakse raamatukogu funktsiooni printf. Nii et isegi kui ma ei saa aru, mis kaudselt kuulutatakse raamatukogu funktsiooni vahenditega, probleem kindlasti seotud printf kuidagi. Ja allikas, et küsimus on pistmist väljakuulutamiseks. Kuulutatakse funktsioon on viitavad see esimest korda. Ja me kasutasime terminoloogia eelmisel nädalal tunnistamise funktsioon prototüüp, kas ühe rea peal oma ise fail või nn päisefaili. Ja mida faili tegid ütleme eelmisel nädalal, et printf on tsitaat, lõppeb, deklareeritud? Mis fail on selle prototüüp? Nii et kui te mäletate, kõige esimene asi, mida ma trükitud, peaaegu iga programmi viimase AEG_ ja kogemata hetk tagasi alustas kirjutades myself-- oli see üks siin-- hash-- #include