[Video taasesitus] -A Triumf matemaatiliste ja mehaanilised oskus on see väga uus automaatne Kalkulaatori Harvardi ülikoolis. Keerukad probleemid matemaatika pane läbi masina kodeeritult lindile on täpselt lahendatud minut murdosa kuluvat aega inimeste arvutus. Mõeldud kiirendada kõikide vormide matemaatika ja teadustöö, hiiglane mehaaniline aju töötab USA mereväe kuni sõja lõpuni. [Taasesituse lõpetamiseks] DAVID J. Humala: See on CS50. Minevik oli maagiline koht, aga kui sa oled kunagi imestas, mida see seade on Harvardi Science Center, see on tõesti osa Harvard Mark I, ja see on kuva seal nüüd viimase mitu aastat. Ja mida sa näed varjatud probleem komplekt üks on pilk kulisside taga millises et seade tegi, ja teeb, professor Harry Lewis, kes on arvutiteaduse osakonna siin. Nii rohkem, et lihtsalt natuke. Aga täna me hakkame üleminek eelmisel nädalal sellele, ja viime mainimine Ühe foto siin see on tegelikult üsna tuntud. Kas keegi teab, mida see siin on ekraanil? Vähemalt vastavalt müüt. Jah. Sihtrühm: Esimene viirus. DAVID J. Humala: Nii et see oli väidetavalt kõige esimene tegelik viga arvutis. Nüüd tegelikult sõna viga, veast programmis, on olnud meiega juba mõnda aeg füüsilises maailmas, ja see oli üks esimesi dokumenteeritud korda, kus keegi tegelikult kitkutud suur ööliblikas välja Mark II arvutis, pane see sideaine, ja siis salvestamisel kui esimene teadaolev viga et on tegelikult leitud füüsiliselt. Nii seega kanti et tänapäeva pärimus. Kõik alates viimase nädal on kättesaadavad Internetis. Eelkõige ressursse, mida võiks ei pruugi märgata, eriti Kui siia tulevad isiklikult. Nii et üks õpetamise stipendiaatide iga Aasta teeb kanooniline rida märgib nii et sa ei pea hoidma oma pea alla, püüdes transkribeerida kõige midagi mis võib juhtuda siin klassis. Nii mõistame, et need Niinimetatud [? Scribd?] Märkmed on online, kindlasti slaidid ja lähtekoodi, et me kasutame klassis. Teeme täistekst ärakirju saadaval ka. Nii et kui sa ähmaselt mäletan mõned perspektiivis, ja tahan vaadata seda natuke kergemini aru, et kõik Selle on onlainis otsitavaks. Nagu ka walkthroughs samuti. Tõepoolest, täna me hakkame vaatama madalamal tasemel programmeerimise keel, Varsti tuleb meil teada nagu C, ja see on väga lihtne et omamoodi eksida pärast paari hetki ajast, ja siis mingi ime kuidas me tegelikult sain veel mõned keerukas näiteks lihtsaim. Ja nii aru, jagame kirss vali tunni ajal mõnda esindaja näiteid, kuid aru, et nii palju on ka Internetis kättesaadavad, nii et saate töötada läbi oma tempos, aga sa oled kõige mugavam. Aga jätsime maha programme, mis olid just seda. Nii et ma nuppu roheline lipp, ja mida see programm teeb? Ütleb, hello, world. See muudab kass öelda hello oma väike maailm ülemises vasakpoolses servas Scratch kasutajaliides. Aga hakkasime tutvustada mõned terminoloogia eelmisel nädalal. Ja nii asjad niimoodi me kutsusime mida? Mis võiks olla üldnimetus seda? Jah. Meetod või avalduse. Muidugi, see on hagi. Kas see. Ja veel oli teiste kujundeid nullist, Peale nende nn avalduses, et nad olid ka asjad niimoodi, mis me kutsusime mida? Jah. Nii silmus. Ja sel juhul, et see asi kordust muidugi 10 korda. Seal on igaveseks blokeerida. Seal on paar teistega. Ja täna me näeme, kuidas tõlkida seda rohkem tänapäeva maailmas, kui soovite, kuigi see on läheb esmapilgul olema palju kauge. Aga need olid tõepoolest silmad. Ja siis on meil asjad see, mis oli selle kuju, ja sisuliselt kippuvad küsimused. Ja me nimetatud need mida? Sihtrühm: Boole'i ​​väljendus. DAVID J. Humala: Jah. Loogiline väljendus. Midagi, mis on kas tõene või vale, jah või ei, üks või null, aga soovite näha maailma. Aga me kutsusime neid Boole'i väljendid, ja me ühendage need tingimustesse või filiaalid. Ja maailmas Scratch, kõik kenasti blokeeringute nii oma kuju, kui ta teeb loogilisel seda teha, aga sa ei pea peatu lihtsalt teeme ühe asja tinglikult, sul võib olla lõpmatuseni teelahkmele ja teha kas see või see, kui tingimus on tõene või mitte. Ja siis, kui sa näed, kui te pole juba, Võite isegi pesa neid plokke. Nii Scratch kasvab täita kujundeid et võiksite lisada sinna, nii et saate tegelikult väljendada kõige loogikat, et te võiksite teha. Nüüd paar sõna teadaanne nii siin ja New Haven. Nii osadeks algab täna. URL on see muidugi on veebilehel, neile võõras. Sektsioonid olla võimaluse kokku saada on palju intiimsem keskkond kui [? Sanders?] Lubab, 10 kuni 20 klassikaaslastega koos õpetamise mehe eri lugusid, ja erineva tempoga, kui sa nii valida. Tõepoolest käigus pakkumised erinevate osade ka vähem mugav, rohkem mugav ja kusagil vahepeal, ja rolli pöidla siin on pole mingit formaalset määratlust, aga kui sa oled vähem mugav, sa selline tea seda. Sa oled natuke kartmatu kohta Idee astudes jala ehk tagasi klassis või millel kuni vahele osa. Kui oled olnud programmeerimine, sest sa oli kuus aastat vana, mugavamaks, võibolla teile. Ja kui see on selline Toss-up, see on täpselt see, mida vahel pidi olema. Nüüd vahepeal klassi selle suurus, see viib meid juba mõnda aega osa kõigile, et oleme nn, super lõigud, Eeloleval nädalavahetusel ja järgmise nädala alguses, nii, kui heita pilk käigus veebilehte neid, mis on muidugi lai, ja ka filmitud neile kes ei saa neid teha. Ja lõigud ise hakkab nädalal kolm CS50 null indeks. Ülesanded 0 juba muidugi kodulehel. Ja aru, et sa ei pea Üheksa hilja päeva sel semestril. Nii et see on värskendada viimase aastal, kui meil oli viis hilja päeva. Nii et kui sa ei tea, Meil on üheksa probleem komplekti. Sul on üheksa hilja päeva, millest igaüks saad ainult kulutada ühe nädalas. See omakorda seab kõik probleem seab tõttu reedel kuid eesmärk on panna natuke natuke psühholoogilist survet kohta, kus saab proovida saada asju neljapäeval sest kui sa varsti teada, paremaks või halvemaks, kõige kõik tarkvara maailmas jõuab võttes palju pikem kui sul ennetada. Nii peavad seda omamoodi on võimalus aidata ise suunata neljapäeval kuid lohutama, et jah, kõik on tingitud reedel. Ja kui te esitama need Neljapäev, et on imeline. Pole boonuspunkti või extra krediidi Nimetatud tähtajast kinnipidamisega. See tähendas, et kark ainult. Ja tööaega, nii Siin ja New Haven, isiklikult, kui soovite kohtuda mõne meie kursused õpetamise stipendiaatide ja CAS abi. Hästi. Nüüd oletame, et see enam reaalne. Ja hetkeks see läheb alustada saada veidi kauge, kuid väga kiiresti reedel ja Järgmisel nädalal oleme võimalik teha nii palju kui võiksime senise Scratch. Nii me tutvustas koodi viimase nädalas, kuigi pictoral. See oli puzzle tükki. Ja me vormistatud, et see on midagi, mida nimetatakse lähtekoodi, kuid ei nägema? Noh, see tundus natuke midagi sellist. Ja tegelikult, lihtsalt selline õrritama, kus me saame minna sellega. Ma lähen edasi minna ja avada aken siin ja ma lähen lihtsalt valida Uus fail. Ja ma lähen, salvestada faili kui midagi hello dot c. Veel, et valik sõnad hetk. Ja see, kuidas keegi võiks minna kirjutamise programm. Kaasa standard I / O dot h, int main void ja siis avatud lokkis traksidega lähedal lokkis traksidega, printf hello komaga maailma kurakriips n, semikoolon, Save, tehtud. OKEI. Olen kirjutanud oma esimese programmi, kuid see läheb olla uskumatult underwhelmed sest kui ma tegelikult Käivita see programm muidugi kõigepealt kirjalikult teha hello, ja siis dot kaldkriips hello, ja me läbida seda palju detailsemalt ühel hetkel, et kõik see. Ei pop avatud ühtegi akent. Ta ei tee midagi Eriti meeldib. Kõik see on see, mida ma ütlesin seda teha, kuid kuidas me saame seda? Ja kuidas me toetuda, et? Noh, olgem tutvustada paari erinevad arusaamad siin. Nii et üks, me oleme algamas kasutades programmi nimega kompilaator. Kogumiku koostaja on olemas Mac OS, Windows, Linux, ükskõik kui palju operatsioonisüsteemid, ja me varsti tutvustada teile keskkond, mis me kasutame, kuid tõlkija on lihtsalt üldine termin tarkvara mis võtab lähtekoodi ja toodab objekti kood saada. Teisisõnu, kui te on sisendiks teie allikas kood, midagi, mida ma lihtsalt kirjutada, see lõppkokkuvõttes tekitab objekti kood. Ja objekti kood on tõesti ainult fancy viis öelda on väljundiks null on ja üks. Teisisõnu allikas koodi, kuigi see on läheb otsima veidi kauge, ja veidi vähem sõbralik kui Scratch esmapilgul see on vähemalt midagi et meie, inimesed ei saa aru. See selline näeb välja ja kõlab Inglise kuigi see on väga sisutihe. Programmeerimise null on ja üks, kui meie eelkäijad pidid tegema, Mõni aasta tagasi ei olnud eriti lõbus väljakutse. Ja veel, see on see, mida arvuti ikka aru. Nii koostaja saab meid lähtekoodi Objekti kood. See on nagu avades faili tõlkija ja salvestage see, sa need ühtede ja nullide. Nii me näeme, kuidas seda teha et üks hetk. Aga olgem nüüd proovida anda sillaks eelmisel nädalal ja see, nii, et isegi kui me üles riputatud asju nagu looksulg, ja semikoolonid ja sulgudes, ja kõik need intellektuaalselt huvitavad aspekte programmeerimine, et väga arusaadavalt reis inimesed juba varakult, aru, et kõik ideed täna, on samad, mis eelmisel. Nii eelmisel nägime seda näiteks Siin Hello World programmi. Noh, alates tänasest, kui me tahame rakendada, et sama programmi see läheb vaatama natuke midagi sellist. Ja me selgitame enne pikka millised int, ja peamine, ja tühine, ja kõik, mis on, aga vähemalt ma näen siin juba tuttav Hello World. Vahepeal asjad funktsiooni, ütleme tere, väga lihtsalt saab olema väga lihtne avalduse niimoodi. Printf tere, mõned hinnapakkumisi, längkriipsuga, semikooloniga, kuid rohkem sellest tulla. Loops, vahepeal on see silmus, mis, Muidugi, ütleb tere igavesti, ja see läheb vaatama vähe imelikum kui möödunud, aga kui ma midagi öelda nagu, kuigi tõsi, ma Seejärel saab välja printida Tere maailm uuesti ja uuesti ja uuesti ja uuesti. Ja siis, kui saad sellist ning alustada järeldada siin Selle konventsiooni abil looksulg on selline ja nagu omaks liigestatud koodirida seal. Printf koodirida meelega kollane puzzle tükk ülevalt. Nii et me ei kavatse öelda igaveseks, me ei kavatse öelda, kuid tõsi, kuid me näeme, miks see on lihtsalt natuke. Vahepeal, kui meil on silmus, nagu see, kus sa korrata midagi piiratud number korda, seda ka see aega võtab natuke harjumist , kuid see läheb öelda int i saab nulli, i alla 10, i ++ ja siis printf uuesti. Aga seal saab olla mustrid. Ja neile, tuttav AP Computer Science, või Java, või mitmeid teisi keeli, peaaegu kõik need konstruktsioonid Seni peaks otsima enamasti tuttav. Nii muutuja. Nii et siin on lihtne Scratch väljavõte, et seab muutuja nimega counter nulli, ja siis igavesti ütleb counter, ja siis muudab counter ühe võrra. Nii see algab nullist, ja siis üks, kaks, kolm. Noh, kuidas võiks tutvustame et see uus keel natuke sarnaselt? Int counter võrdub null, kuigi tõsi, mis on see, et sama idee enne teha midagi igavesti, ja ma olen lihtsalt kavatse printf. Ja nüüd see muutub veidi kummaline, protsenti i, kuid rohkem, et tulla, aga need mõtted on täpselt sama. Me lihtsalt nüüd kinni süntaks, et arvuti on läheb meilt. Loogiline väljendus, midagi sx alla y või x vähem kui y, ja y alla z. See saab vaadata natuke midagi nagu see, mis sulgudes lihtsalt nagu matemaatika hea meede lihtsalt tagama, et tegevuse on meil kavas. Ja nüüd, tingimused. Nii et kui x on väiksem kui y, ütlevad x on väiksem kui y, else if x on suurem kui y, öelda x on suurem kui y, vastasel loogiliselt, x peab olema võrdne y. Nii võite rakendada midagi sellist Scratch, või siis võib rakendada see seda süntaksit. Ja jälle lokkis traksid on omamoodi andes meile sama kujuga nagu puzzle tükki, kuid süntaks, nüüd on ehk järginud mõned mustrid. Niisiis, mida see meile siin? Nii et me tollal meie põhiprogrammi. Olgem tegelikult, nüüd, sellega midagi teha. Nii et esimene line näeme teravat hulka, standard I / O, dot h, ja siis mõned imelik nurk Sulgudes allapoole. int main void ja siis printf hello world. Nii lihtsalt sammu. Keegi, kes pole kunagi programmeeritud enne, vähemalt selgitada üks neid ridu. Kasutades võibolla mõned kõnepruugis eelmisel nädalal. Mis on printf, näiteks? Jah. Sihtrühm: [kuuldamatu] DAVID J. Humala: Jah. See on funktsioon, või märge, eelmise nädala terminoloogiat. Ja see tegevus see on midagi. Nüüd on see funktsioon, või Selle avalduse teeb tundub, et võtta mingi sisend? Ja mis mõttes teeb seda tundub, et sisend, kui nii? Sisend, mida ma mõtlen, et? Jah. Sihtrühm: [kuuldamatu] DAVID J. Humala: Jah. Nii Scratch välja paar puzzle tükki kus saab parametrize ta. Sa võid öelda korrake blokeerida mitu korda korrata, nii et oli sisend kehvasti, ja nagu Scratch oli väike valge kohatäide arvu tipiksite aastal, nii me kasutame seda Teksti maailma sulgudes meile, et ümmarguse kujuga kuhu saame ühendada meie panus. Lõppude lõpuks, kümneid aastaid tagasi kui see keel, mida nimetatakse C, leiutati keegi oodatud on üks meist, Nende mõned aastad hiljem, olime tahan funktsioon, mis ütleb tere. Õigus? Oleks tore, kui seal olid puzzle tükk, või võtmesõnadeks seda nimetatakse hello, et sõna otseses mõttes lihtsalt ütleb tere. Aga me ei pea seda. Meil võib olla midagi palju madalam tasandil, nagu geneerilised print käsk, mis võtab sisend, ja pildid mida iganes me tahame. Nii märkate nüüd muster et hakkab tekkima. Avatud paren lähedal paren on ilmselt omaks sisend, ja siis ma näen topelt tsiteerib mõlemas otsas. On ikka imelik kurakriips n, kuid loodetavasti nüüd olete saab alustada visualiseerida vähemalt, et printf võtab mingis vormis sisend. Ei ole nii kasutajasõbralik kui Scratch, kuid see on lihtsalt nagu olles ühendatud mingi väärtus olemas. Olgu, nüüd lähme tegelikult midagi selle. Nii et mõned teist võivad teada võttes sisseoste klassi enne, vestlesid sõbrad, Paljude aastate vältel me kasutada midagi, mida nimetatakse CS50 aparaat. See oli termin, mis kirjeldab tehnoloogia nimetatakse virtuaalarvutil mille on tarkvara, mis teie eelkäijad oleksid laadida off Kursuse kodulehel tasuta. Nad oleks ka alla laadida tasuta tükk tarkvara nimetatakse hypervisor midagi, mida nimetatakse nagu VMware, või VirtualBox või mis tahes number muid vahendeid, ning nende Mac või PC või mis iganes nad arvuti oli eelmisel aastal ja aasta varem, nad oleks topeltklõps ikoonil käivitada selle tarkvara nimetatakse hypervisor. Ja siis sees, et programmi nad avaks CS50 aparaat. Ja mõju oli, et kas eelkäija sinu jooksin Mac OS või Windows, ta siis Seejärel tuli uus aken oma ekraan töötab CS50 keskkond. Nii virtuaalne masin saab käivitada ühe operatsioonisüsteemi sees teise, ja see on täpselt see, mida me tegime. Peaaegu kogu muidugi kasutada operatsioonisüsteemi nimega Linux, eriti Ubuntu Linux ja selle on väga kena viis aastat minevikku tagada, et kõik aasta jooksul oli just sama keskkond. Ja mida saab kasutada mis tahes arvuti, mida sa tegelikult tahad. Seas varjuküljed, kuigi olid see oli nagu kaks gigabaiti alla laadida see asi. See ei pruugi töötada super hästi inimesed, kelle arvutid, mis võibolla ainult oli kaarik või nii RAM või mitte liiga palju gigahertsi CPU kiirus, ja nii sel aastal Sel ja muudel põhjustel, on meil juba minnakse Selle keskkond. Niinimetatud CS50 IDE, mis on põhineb avatud lähtekoodiga tarkvara, ja toetatud platvorm et firma nimega Cloud9 toetab Euroopa, et võimaldab meil sisuliselt et täpselt sama keskkonda sisse aastat varem, kuid nn pilve. Mis on pilv? Te olete ilmselt klõpsanud selle ikooni Mac või PC. Mis on pilv? Jah? Vähe kõvemini. Jah. See on lihtsalt hunnik arvutid mujal, et salvestada andmeid ja joosta tarkvara ja muud sarnased. Nii et see on tõesti lihtsalt sõna de jure kirjeldada [? üüritav?] arvutid, mis elada mujal. Et te, ise, ei pruugi ise. Nii et kui teie andmed, või oma programme, on pilv, see tähendab, et see on kellegi teise arvutite mujal, ja ei, tõenäoliselt oma füüsilise sülearvuti või lauaarvuti. Ja nii see on, mida CS50 IDE nüüd on. Edaspidi lähete teatud URL, mis tutvustab teile to, in probleemi seatud 1, hiljem see nädalal, et siis pärast sisselogimist teile selles keskkonnas. Ja palju nagu Scratch oli mõned erinevad paneelid seotud, nii ei CS50 IDE on just nii. On the top vasakul pool siin, sa oled näeme tuttav failibrauseri. Nii tahes faile, mida pannakse see keskkond lihtsalt läheb reastatakse siin. Failid ja kaustad. On the top siinsamas, sa lähed, et näha koht kus saab tegelikult kirjutada oma koodi. Esialgu in C, hiljem Mõiste PHP ja JavaScript, ja võib-olla lõplikuks projektid, Ruby või Java või Python või mitmeid keeli keda selles keskkonnas. See ei ole üldse seotud et CS50 konkreetselt. Ja siis alumises nurgas siin eriti neile mugavam, sul on midagi nimetatakse terminal window. Ja see terminal window võimaldab Teil täita käsu, et teil tahan selles pilv keskkond. See võimaldab teil installida täiendavat tarkvara mis sa tahad, sest sul on nn root või administraatori õigustega. Nii teisisõnu, kuigi see lõpuks võõrustas pilv, ja kuigi meil on lihtsustas seda mõningal määral vaikimisi, sõna otseses mõttes sisse, tänu Dan Armendariz ja Dino, ja Dan Bradley kohta CS50 meeskonna üle Varem mitu kuud, vähem mugav režiim, mis peidab palju esialgu segane distractions. Kõik on olemas esindab tüüpilist arvutisüsteemi et võite kasutada reaalses maailmas. Mida see kõik tähendada, ja Mida me saame tegelikult teha? Olgem tegelikult kurkistaa programmi. Nii et ma lähen avada tegelikku keskkonda siin, mis on lihtsalt meie Chrome brauser, mis võiks olla Firefox, võiks Internet Explorer, või mõni muu veebilehitseja samuti. See on täis linastub siin hetkel. Ja ma tahan, et tegelikult kraakleja peale mida see programm oli. Võtame pilk, Suurendamine üles peal, mida ma tegin, ja kuidas ma siia jõudsin. Nii et siin on neidsamu Sama rida koodi. Nii et see on avaldus, kui eelpool mainitud. Funktsioon, mis ütleb tere. Lokkis traksid kohta line neli ja line kuus, arvatavasti mingi vahenditest et line siduda see koos minu töö programm. Nii tõesti, see märksõna peamine, see on seal üleval real kolm, sa ei mõtle, et kui samaväärne kohta, et kui roheline lipp klõpsates blokeerida Scratch. Nii et kõik on meil siin on, kui roheline lipp klõpsatud, printida või öelda, Tere, Maailm. Aga võtame arvan, nüüd, mida Selle esimese, rohkem kauge line, on. Sharp hulka, avatud nurgaga sulg, standard I / O dot h, sulgeda nurga külge. Mis on see võib-olla teeme, eriti kui olete programmeeritud enne mõnes teises keeles. Jah? Sihtrühm: [kuuldamatu] DAVID J. Humala: Jah. Täpselt. Nii et see annab teile juurdepääsu raamatukogu, nii et rääkida, funktsioone. Ja raamatukogu funktsioonid on funktsioone, et keegi teine kirjutas, kas hiljuti või kaua aega tagasi, et sa ei pea jalgratast leiutama. Näiteks me ei pead teadma, 2015. aastal, kuidas kirjutada koodi, mis paneb märk minu ekraanil. Keegi teine ​​on arvasin, et välja printf funktsiooni nii et ma ei sorteeri abstraktse eemale või kiht peal tema koodi ja nüüd lihtsalt võtta iseenesestmõistetavaks, et iga programmi ma kirjutan saab printida midagi ekraanil. Nii see esimene rida on esimene etapp sisaldab nn päisefail Standardse raamatukogu. Nii näeme, keele mis me nüüd töötab oli standard raamatukogu palju funktsioone. Printf on üks neist, ja et esimene rida koodi tähendab mulle juurdepääsu neid funktsioone, nii et ma ei pea jalgratast, et ratas. Nüüd lähme põhja aknas ja teha täpselt seda, mida ma tegin enne. Hetk tagasi, kui olin whizzing koodi kaudu, kirjutades seda esimest korda, Ma väga kiiresti sisestanud, et tere. Mis oli see, et kõike oleks te vist? Mida ma teen? Jah? Unusta ära. See on OK. Jah. Sihtrühm: kompileerimisel. DAVID J. Humala: Jah. See oli lihtsalt kompileerimisel. Õigus? Isegi kui see on täiesti võõras teile, see on päris English jms. See ei ole kindlasti nulli ja need, nii et ma ikka pead sõitma läbi, et nn Programm, tõlkija, et läheb võtta seda kui sisend ja väljundi. Ja vähemalt praegu, on Selle Linux keskkonnas, kuid see ei ole eelduseks, see on just seal, kus hakkame, sa üldiselt suhelda arvutisüsteemide niimoodi poolt nn käsurida. Nii vilkuv kiire ja klaviatuuri, ja mitte niivõrd oma hiirt, ja mitte nii palju aknaid ja ikoonid ja menüüd, pigem on kõik tekstilised. Ja kuigi see tundub, esimesel lühidalt, ehk nagu samm tagasi, see on tegelikult palju võimas ja väljendusrikas viis kontrollida arvuti eriti kui sa, ise muutuda mugav vähem. See saab võimaldab teil teha palju rohkem asju kui just see, mida Microsoft või Apple lubab sul teha graafilise operatsioonisüsteemi. Nii et kui ma Enter, nüüd, midagi ei juhtu seekord sest ilmselt Programm hello on ajakohane. Ja milline oli käsk Ma jooksin pärast seda? Dot kaldkriips hello, ja tere. Nüüd võtame samm tagasi üks hetk. Selgub, et teha hello on lihtsalt lihtsustatult koostamise programm. Lihtsalt sisse ühes tükis kõnepruuki, aga siis minema sellest, kuna see ei ole kõik mis huvitav tänapäeva eesmärkidel. Koostaja me ei kavatse hakata kasutama nimetatakse rõkkama, et C keeles. Ja see on programm, mis on käivitada ainult nagu me tegime käsurea seal. Ja nii kui ma tahan koostada programm, mis ma on kirjutatud fail nimega hello dot c, ma sõna otseses mõttes lihtsalt kirjuta rõkkama hello c siseneda. Naljakas on, ajaloolistel põhjustel, kui ma ei täpsustata Programmi nimi et ma tahan väljund, kui ma seda ei tee määrata faili nimi neile nulli ja need, väga imelik Konventsioon võeti vastu aastat tagasi kus ta tundis omamoodi hea vastus ajal, hästi olgem lihtsalt suvaliselt helistada Esimene programm oleme kompileerida dot välja. Esikohal tähestikus. Out, see on väljund. Nii me nimetame programmi Vaikimisi dot välja. Ja see on hea, sest kui ma tahan käivitada programmi selle tekst põhineb keskkond, ma lihtsalt kirjuta dot kaldkriips dot välja sisestada. Ja see läheks täpselt nii nagu enne. Vaatame, mis päris kiire. Nii et kui ma lähen tagasi oma lähtekoodi CS50 IDE, ja ma mitte seda, Kalskahdus hello välivoodi c siseneda, teate midagi tundub juhtuda, kuid peaaegu alati Selle Linux keskkonnas, kui midagi halba tundub juhtuda, et tähendab midagi head tegelikult juhtus. Kui te ei näe viga sõnum, et kõik on ilmselt hästi. Ja tõepoolest, kui ma nüüd tegema dot kaldkriips dot välja siseneda, ma olen saan oma sama programmiga. Mul on veel tere programmi varasematest, sest tõepoolest, see on saab olema nii palju kenamaks lihtsalt kirjuta teha selle asemel, meenutades Nende incantations käske, aga vaatame, kuidas me Võib täiustada seda siiski. Nii, see on käsk kompileerida koodi. See on käivitatav käsk kompileeritud koodi tagant. Kuidas ma saan määrata faili nimi? Noh olgem lihtsalt tutvustada üks tükk kõnepruuki. Kui sa oled selle Teksti põhine keskkond, sa lähed tahan täpsustada asju nimetatakse käsurea argumente. Kumb on lihtsalt fancy viis öelda, Teisisõnu on kiire, et näpistama käitumist iganes programmi sa kasutad. Nii spetsiaalselt programmi ma olen töötab, kirjutades nime rõkkama, on programm nimega rõkkama. Nii et see on või vana kooli samaväärne topeltklõpsuga Microsoft Word või mõned programmi ikoonil. Ma asemel kirjutades oma nime, kuid see versioon käsk, Ma siis on kriips o ruumi hello ruumi hello dot c. Nii et isegi kui te pole kunagi mängitakse siin maailmas enne, lihtsalt võtta Arva ära ei kriips o hello teha? Või mida see öelda rõkkama teha? Jah. Sihtrühm: [kuuldamatu] DAVID J. Humala: Jah. See lihtsalt seab faili väljund olla tere asemel sillier dot välja. Ja tõepoolest, proovime seda. Nii et kui ma nüüd teen, esimene teeme seda, r m hello. See on eemaldada. Ja see läheb öelda eemaldada tavaline fail hello, mis on asjatult kauge, kuid see lihtsalt vahendid tahad faili kustutada, ja ma kirjuta y jah. Ja teate, kui sa olid riivav top vasakule, see ei kao sealt ülevalt. Lubage mul nüüd teha rõkkama kriips o, ja Ma lähen edasi minna ja seda hello, kõik mütsid, hello dot c. Nüüd, kui ma dot kaldkriipsuga tere, mida ootate? Võib-olla see on tõstutundlik. Võib-olla see ei ole. Vaatame. No sellist faili või kataloogi. Ja me saame mingi petta lihtsalt vaadata top vasakule. Mida ma ilmselt salvestada programmi? Kõik mütsid tere. Nii tõesti, et läheb teha vahet. Nüüd hello world on tagasi. Nüüd on see kõik hea ja tore, ja kõik väga meelinüristav, et omamoodi Tyssätä nendes üksikasju, kuid nende mõistmiseks on hea. Kirjutamise neid järjest kaua loitse ei kavatse olla eriti fun, et inimesed maailmas leiutas teise programmi, mõned aastad tagasi, nimetatakse teha, et lihtsalt võimaldab kirjutada make, nimi programmi sa tahad teha, ning teha on tark, sest see aitab uurida aktiivse kausta, aka kataloog, ja kui sul on faili nimetatakse hello dot c, mis on fail siis koostada Teile arvesse programmi nimega tere. Nii et see on palju lihtsam viis tehes rohkem segasena käske et me tegime varem. Ja meil on eelhäälestatud CS50 IDE teada et ta peaks tegema kriips o ja mitmed teiste lippudega, või käsurea argumente, et me näeme varsti. Aga olgem nüüd tegelikult teha midagi huvitavat. Kirjutades välja hello world kõik aeg ei ole kõik, mis mõjuvad. Nii et lubage mul minna ja muutus Selle programmi ja öelda, hello David. Nüüd ma lähen siia alla. Ma lähen edasi minna ja seda teha tere. Ja nüüd uuesti näed teha näitab teile enam jada käske, et see on teeme, sest me oleme eelhäälestatud see nii, kuid me ei pea muretsema nüüd mida ta teeb teistele, kui see on koostamisel dot kaldkriips hello, hello world. Mis viga? Jah. Sihtrühm: [kuuldamatu] DAVID J. Humala: Jah. Nii, noobie viga. Märkan see on super väike, kuid tärniga siin, tab, lihtsalt tähendab, et sa ei ole salvestanud, ja brauserid ja muud programmid Selleks mõnikord. Nii kontrolli s või käsk s tuleb see salvestada. Nüüd lubage mul minna ja uuesti käivitada programmi. On koondada. Õigus, nii et see on mitmeetapiline protsess. Ükski mis on eriti keeruline, kuid iga kord, kui me muuta faili Me peame muutma Tekkiv ühtede ja nullide ja dot kaldkriipsuga tere. Vau. Nii et see on väga underwhelming et me lihtsalt välja printida seda. Teeme asjad vähe dünaamilisem, nüüd. Noh selgub, et meeldib Scratch, C toetab muutujaid. Ja selgub, kui soovite on muutuja, mis kauplustes ei ole number, nagu me Tavaliselt tegid Scratch, kuid nagu sõna, või lause või nimi, siis saab määrata muutuja tüübiks string. Nii me näeme rohkem Nende vaid hetk, Aga selgub, et C ja palju keeli, nagu see, väga kindlat tüüpi muutujaid. See ei ole lihtsalt meeldib algebra, kus sa saad x, y ja z ja need on lihtsalt alati numbrid, programmeerimiskeelt saate salvestada numbreid, saate salvestada üksikute märkide, võid salvestada terveid sõnu, siis võiks talletada kogu pilti, kogu helifaile, jms. Seega on meil vaja täpsustada, mida tüübist meie muutuja on. Ja kokkuleppeliselt ma helistada minu muutuja s lihtsalt sellepärast, et see on lühike, ja s tähistab string. Ja siis ma lähen hoida sees muutuja, Just nagu Scratch kui ma kasutan komplekti blokaad, Ma lähen kasutada omistamisoperaatorile C, mis kenasti piisavalt on võrdne kirjutama, kuid võrdusmärki teeb seda. Ta liigub midagi paremalt sisse Vasakul väljend. Mida ma olen teinud, et olla selge line viis, on mul deklareeritud muutuja. Olen rääkinud arvuti, anna mulle mälu muutuja, nimetame seda s, ja tean juba ette, et ma lähen tuleb panna string ta. Ja string on vaid märgijada. See on sõna või fraas, või lõikes, aga see on märgijada. See ei ole numbrid. Mis string olen ma kavatsen olla laskmine muutuja? Noh, ilmselt tsiteerida lõppeb, "Hannah". Nüüd märkate mustrit, mis on tekkimas. Seal on vasakut kätt väljendus. Seal on parem käsi väljendus, eraldatud võrdusmärki. Ja lihtsalt võtta vist, kui harjumatu siiski, mida semikoolonit teeb. Mis see arvatavasti läheb meil? Jah? Sihtrühm: [kuuldamatu] DAVID J. Humala: Jah. See on lihtsalt lõpetada line. Õigus? Arvutid tahad olla keerutamata ütles, sõna otseses mõttes, mida teha. Nagu maapähklivõi ja tarrend sandwich näiteks Kui sa ei määra täpselt, mida te kavatsete, see võib jätta otsuse või viga. Semikoolonit tähendab, Ongi see käsk. See on super täpne, ja see on väga lihtne asi jätta välja. Nüüd see programm ei tundu saab käitub teistmoodi, kuni ma muuta seda dünaamilisemaks. Nii et pigem kõva võiks oma Nime, lase mind panna kohatäide väärtus. Ja selgub, et, ja ma tean, et see alates läbilugemise dokumentatsiooni, ja ko funktsiooni juba aastaid, et printf oli mõeldud olema dünaamiline. Sa ei pea ette teada mida sõnad, mida soovite panna see. Selle asemel saab olema kohatäide, nagu protsenti s, mis läheb öelda arvuti, pane string siin. Milline string me tahame panna sinna? Will selgub, et nende vahel sulgudes, mis mäletan, piiritleda sisendi funktsiooni, kui teil on komadega eraldatud nimekiri asjadest siin me tegelikult läbida mitu sisendite funktsioon. Nii lihtsalt meeldib mõned Scratch plokid, sa ei pruugi mänginud nendega oma projekte veel või üldse mõned Scratch plokid on kaks sisendit. Kaks valget kasti saate kirjuta numbreid või sõnu. Nii et ei C on funktsioone, nagu printf, mis võib kesta kaks sisendit. Ja jälle see komadega on neid lahutava. Nii inglise, jälle isegi siis, kui olete kunagi programmeeritud enne, selle loogika printf on funktsioon, võtab kaks sisendit, millest üks on kohatäide, mida sa loodan printf kavatseb teha seda input? See saab öelda tere Hannah, loodetavasti. Nii on meil vaja salvestada. Ma lähen välja suumida. Ma lähen siia tagasi ja öelda, et tere siseneda. Oh. Midagi on valesti, ja tegelikult see on üsna suur. Mul on kuus rida koodi ja nagu 12 rida vigu. Niisiis, ootan seda. Mis siin toimub? Nii et parim rusikareegel siin eriti kui sa oled hakanud välja ei saa häirida kraami allosas. Tegelikult ma väga sihilikult lihtsalt kerida üles sest väga sageli, arvuti on mitte kõik, mis särav seadme. See saab segane. Kui ta näeb üks asi, mis ta ei saa aru, see võib ekslikult muu rida koodi valesti, kuigi need on täiesti korras. Nii et sa alati tahavad töötada ülevalt alla läbi vigu. Ja tõsi see on super kauge hetkel. Viga kasutamine deklareerimata identifitseerimine string. Kas ma mõtlen standard? Ei, ma mõtlesin string. Ja see osutavad, äkki see on kirjaviga. Omamoodi nagu, õigekirjakontrolli on väga geeky viis, kuid põhjus siin ja sa tead seda lihtsalt praktikas on et tuleb välja, et string ei eksisteeri C. Tegelikult C on eriti vana keele ja see on väga madal, ja see ei ole palju funktsioone et võite kasvanud koos, kui teil on, tegelikult programmeeritud Java, nagu mõned teist on, aga sa ei saa õpetada see uusi asju. Ja tõepoolest, me oleme teinud seda CS50, kuigi lõpuks semester, kõik need abirattad mis on maha võetud, mida me teeme neid Esimesed paar nädalat Esialgu on meil ka Teile hulka CS50 dot h. Milline on päisefailist. Veel, et tulevikus. See on fail, mis sisaldab funktsioone et me oleme kirjutanud teile. Ja nende seas funktsioonid on funktsioone saada sisend kasutaja, nagu stringid, ja numbrid ja reaalarvud ja rohkem. Aga see on ka mõned otseteed. See määratleb Loogiline kui andmetüüp. C ei ole õige või vale. Aga me ei saa anda seda mõistet õige või vale teel selle raamatukogu. Ja see ka ei ole string ehitatud, kuni me lisada see rida. Nii et see koodirida ütleb tõlkija, hei, rõkkama, vaatame seda pilti terve hunnik koodi, et CS50 on kirjutatud nii, et kõigile, kes kasutavad seda faili saab enesestmõistetavaks funktsioone nad lisanud. Nüüd lubage mul minna ja selge ekraan, ja kui uudishimulik Ma lihtsalt ütlen kontrolli l iga kord selge ekraan, või saate tippida selge. Ma lihtsalt minna nüüd ja tüüp teeb hello, ja kõik on hästi. Ikka kauge väljund, kuid see ei ole eksliku sõnumi. Nüüd, kui ma teen dot kaldkriips hello, ja kui kõrvale, dot kaldkriipsuga on võõras enamikule. See tähendab lihtsalt, DOT aktiivse kataloogi. Nii et kui te olete kunagi kasutanud DOS või Linux või Unix sa oleks võinud teha midagi nagu cd dot dot, kus dot dot tähendab minna tahapoole aega, või minna tagasi või kõrgemal Teie kataloogi. Dot tähendab lihtsalt vaatan aktiivse kataloogi. Ma tahan hello, mis on siinsamas. Ja tõepoolest, nüüd ta ütleb tere Hannah. Ja kui ma seda uuesti muuta Maria, kompileerida see oleks tere, dot kaldkriipsuga tere, programmi hoiab muutumas. Aga see on ikka päris loll programm. Kui ma tahan saata selle programmi, või anda see sõber, või anda see Maria või Hannah et asi, mis on hea. Võin kohandada see mõlema jaoks, kuid see ei saa kunagi olema dünaamiline. Nad ei saa seda muuta, kui see on koostatud jaguneb need ühtede ja nullide. Mida me tegime midagi targemaks? Mis siis, kui selle asemel, et kõva kodeerimine programmiga isiku nime, Mis siis, kui me lihtsalt saada nöör nõudlust? Nii teisisõnu, lubage mul seda teha. Ma lähen kompileerida programmi. Ja las ma suumida allosas nüüd. Tee hello dot kaldkriipsuga tere. Nüüd ei juhtu midagi. Kas saame kiire vabatahtlike teha midagi juhtuda? Tule üles. Mis su nimi on? PANCHO: Pancho. DAVID J. Humala: Pacho? Tule üles. Kui sa siin, see on saab olema väga underwhelming, aga see on huvitavam kui mulle kirjutades. Kui soovid minna ja kirjuta oma nimi, tegin selle programmi just teie jaoks. Lihtsalt kirjuta oma nimi. Sisesta. Wonderful. Olgu, tänan teid väga. PANCHO: Tänan väga. DAVID J. Humala: OK. [APPLAUSE] See oli väga lahke. Palun. Mida me teeme? Nii me lõpuks vähemalt tegin selle programmi dünaamiline. Nüüd on veel kindlasti by design underwhelming, kuid me lõpuks on võime nüüd kirjutada koodi ette, palju nagu autorid printf, ja siis dünaamiliselt kohandada sisendi põhjal oleme meheks, kas programmeerija, või inimese, kes on tegelikult suheldes programmi. Nii saab tegelikult nüüd proovida teha mõned muud konstrueerib ja näha, kui me ei saa teha programmide ise keerukam. Nii lähme edasi ja selle asemel Kirjutan seda nullist, Ma lähen tänapäeva lähtekoodi, ja see kõik on kättesaadav kursuse kodulehel ja saate lohistada see oma enda keskkonnas tulevad reede kui probleem komplekt 1 annab teile juhiseid, või võid seda teha käsurea hästi, kuid rohkem tulema p seatud 1. Vaatame, mis on antud programmi siin nimetatakse, rästik dot c. Nüüd olen juba kommenteerinud see, aga mida uut? Esmapilgul mida joon kood on täiesti uus? Tõenäoliselt ei ole põhimõtteliselt harjumatu nüüd. Sihtrühm: [kuuldamatu] DAVID J. Humala: Jah, nii int x võrdub saada n. Me pole kunagi näinud midagi sellist varem, kuid int on ilmselt sümbol, millist varieeruv, [? alates?] täisarv. Nii int täisarv. See lihtsalt on rohkem sisutihedat. x on lihtsalt suvaline. x ja y ja z on endiselt päris mõistlik numbrid, kuid üldiselt me ​​kasutame sõnu, kui Meie programmid saada keerulisem. Võta int muidugi palju nagu get string, Ilmselt hakka int kasutaja, ja siis me läheme teha sama asi y. Ja ilmselt, kuigi see viimane rida, 24, otsib keerulisem, see saab öelda summa selle ja mis on see teine ​​asi. Ja teate protsenti i Tõenäoliselt tähendab mida? Millist rolli protsenti i ilmselt teenida? See on lihtsalt kohatäitjaid. Õigus? Protsenti s oli string, protsenti i on täisarv. Seal saab olema protsenti f ujukoma väärtus, mis on lihtsalt number koma. Teisisõnu, reaalarv. Nii saab tegelikult koostada selle programmeerida päris kiire ja ei tee rästik. Oih. Hea võimalus. Nii märkate siin, kõik see aeg minu kasutaja nimi selle konto jharvard. Olen CS50 IDE, aka IDE50. Ja nüüd sinisega siin on mainitud, kuid keskkonnast, kus ma olen. Ja tegelikult, kui saan suurendada kuni ülemise siin, märkate, et mul on IDE50 ja ma näen seda sõna, kui te sellist keerata oma pea küljele, tööruumi. Lühidalt sellest, et Ma käin tilde kaldkriipsuga tööruumi tähendab, et selles tekstis põhineb käsk keskkond Olen tekstis samaväärne see graafiline kausta siin. Nii et kui ma teen dot kaldkriipsuga rästik, ta ütleb, ei ole reeglina teha sihtmärk rästik stop. Ma ei tea, mida see tähendab, kuid see on halb mingil põhjusel. No sellist faili või kataloogi Veelgi selge. Kus see siis on? Tuginedes kus ma klõpsatud faili avada varem. Kus võiks see olla? See on ilmselt allikas üks w, kolmapäeval, ja ma näen seda tõepoolest kui ma avan, et üles. Hetkel liitja dot c, kuid Selle teksti-põhine keskkond, uuesti, ma pean olema super selgesõnaline. Kui ma tahan muuta kataloogid sisse allikas üks Kolmapäev, mul on vaja kirjutada, cd ruumi allikas üks Kolmapäev siseneda ja nüüd minu kiire muudatusi mulle visuaalne kii et Ma olen tõesti mujal minu keskkond, aga nüüd ma suudan teha liitja tundub töötada, dot kaldkriips rästik, anna mulle täisarv. Üks. Kaks. Summa ühe ja kahe on kolm. Aga kui ma ei tee koostööd, Vaatame, mida saad int teeb. Anna mulle täisarv. Ei. Uuesti. OKEI. Fine. 50. 50. Hästi. Nii ta lõpuks teeb. Ja see on osa funktsionaalsust, et neid funktsioone võib olla ehitatud teid. Nii sees rakendamine get int, mida programmeerimine ehitada eelmisel nädalal on ilmselt seal sundida seda käitumist taasüritamist, uuesti, uuesti? Jah, seal on ilmselt mingi loop. See saab vaadata süntaktiliselt erineb Scratch on plokkide, aga see on tõesti mis sees fail. Ja mõne nädala pärast jagame tegelikult vaadata CS50 raamatukogu et mis sees, kuid seal on silmus, millega just nii. Mängime rumal vähe mängu siin seda pilti. Seisukord null dot c. Me lihtsalt läheb üldiselt alustada nullist. Ja ma saan kerimine varem mõned asjad üleval. Sinine siin piiritletud kõik need tähed ja kaldkriipsud, Neile, kes programmeerima enne, mis see on? Miks me hoiame vahele üle? Mida? Sihtrühm: See kommentaari. DAVID J. Humala: Jah. See on lihtsalt kommentaari. See on kommentaar inimestele lugeda, et meie puhul ütleb meile, milline nimi faili on, kes selle kirjutas, ja mida ta teeb, nii et sa ei pea läbi lugeda koodi teadma, mida see fail on. See on lihtsalt kirjeldus, kuid funktsionaalselt on ebaoluline. Ja ma ei saa isegi kustutada minu faili ja see ei mõjuta. Juicy read on need Esimesed kaks siin, praegu. int main void on samaväärne Meie kui roheline lipp klõpsates nii et me läheme lahkuda, et olla täna, ja me tuleme tagasi, lõpuks, et mida int ja tühiseks, kuid nüüd, pane tähele, mis ma olen teinud ka siin, te saate ka kui sul on kooskõlas kommenteerida, kui teil on Arvatavasti tahad jagada umbes eelkõige koodirida, konventsiooni C on teha kaldkriipsuga kaldkriips ja siis paar sisutihedat sõnu, ole terve lause, Enamasti ei ole lõikes, et lihtsalt selgitab teile või teie TF või teistele lugejatele või kolleegidega, mida teie kood teeb. Nii et pigem on vaadata sel ja järeldavad read üheksa ja 10, mis on see teeb kooskõlas kaheksa Ma lihtsalt annan kommentaari küsi kasutajalt täisarv, siis ma ei pea mõtlema liiga raske mida read üheksa ja 10. Ma lihtsalt tean, et see, mida kollektiivselt nad teevad. Kuidas? Noh, siin on kiire. Siin on saada int. Ja mis põhineb eelmise käitumist, tundub get int on piisavalt targad, et veenduda, et inimese koostööd ja annab täisarv. Aga nüüd me näeme seda. Ja see meenutab Scratch. Ma väidan, et ma olen Analüüsides kasutaja sisend, kuid mõnevõrra ebatäpselt. Ja see ilmselt C kuidas Me anname kui mujal, filiaali, kahvel tee, kuid ma öelda mõnevõrra ebatäpselt. Mis viga selles programmis? Umbes edasi tagasi? Jah. Sihtrühm: [kuuldamatu] null. DAVID J. Humala: Jah. Nii et kui ma kirjutada null Vaatleme täpselt, et juhul, või nurgas juhul, kui soovite. Nii et kui ma kirjutada null, mis on plokid läheb ilmselt haarata? IF või teine? Else, ja see läheb öelda, valisid negatiivse numbriga. Ja tõepoolest, null ei peaks positiivne või negatiivne, ja nii, et oleks valesti. See oleks viga. Niisiis, kuidas me saame parandada? Keegi, kes pole kunagi programmeeritud enne? Kas sa tahad-- Sihtrühm: [kuuldamatu] DAVID J. Humala: Pingutusjõud? Sihtrühm: [kuuldamatu] DAVID J. Humala: Oh, sul on? Keegi, kes pole kunagi programmeeritud enne. Tahad proovida oma kätt see, et punane särk? Tule üles. Oh yeah, tule üles, kui sa ei pahanda. Nii ei ole kunagi programmeeritud Enne, mis su nimi on? Lauren: Lauren. DAVID J. Humala: Lauren, eks. Nii määrata see viga meile. Sul ei ole näinud C, arvatavasti, ja ilmselt ühtegi teist keelt. Nii määrata selle programmi juures. Nice to meet ya. No survet. Lauren: Jah. DAVID J. Humala: Aga jällegi, kui see õnnemäng läheb plaanipäraselt, Buffee siin olla, lihtsalt uuesti alustada märgata mustreid ja tuletada olemasoleva süntaks kuidas muidu võite väljendada ise, no pun mõeldud, et jäädvustada mõned täiendavad stsenaariumi. Nii me ütleme muud kui. printf, hea. Ja teate koos CS50 IDE ja frankly-- IDE tähistab integreeritud Arenduskeskkond. See on lihtsalt fancy viis öelda programm, mis aitab Teil programmi. Ta teeb kasutajasõbralik asjad kui kirjutad ühe sulgudes see annab teile automaatselt teisele. Eeldus on, et sa oled lõpuks lähed tahan kirjutada, et ja see ka teeb seda jutumärkidesse. Nii mulle meeldib line 23. 99% teest on. Keegi taha Säestää otsa? Kuulsin semikooloniga publik. Väga hea. Nii et lõpetab selle. Ja nüüd, ma lihtsalt pean natuke jahmatus on line 21. Kuidas me tahame väljendada seda? Mis küsimus, kas me tahame küsida, kas sa arvad? Nii varem me küsis, kui n on suurem kui null, seda teha. Else, tee seda. Seega peame valima küsimus küsida siin. Sihtrühm: [kuuldamatu] DAVID J. Humala: Hea. Nii et kui n võrdub nulliga. Suurepärane. Nii saab peatada siin. Tänan sind nii palju braving seda. Annan teile veidi ärateenitud stress palli, võib-olla seal. Nii et me oleme peaaegu kohal. Tegelikult Lauren, kui te ei meeles, lubage mul teha üks näpistama siin lihtsalt olla järjekindel isegi mida me nägime Scratch, mida ma tahan teha read 21 ja 24, vaid taas aluseks kuidas me seda tegime Scratch, ehk? Sihtrühm: Liiguta see üles. DAVID J. Humala: Jah, see teema. Nii et teine ​​tingimus, kolmanda või Neljas või viies või lõplik filiaal, peaks tõepoolest tulevad hiljem, ja see on just see, kokkuleppeliselt lihtsalt sellepärast, et kui soovite. Nii et ma ei pea seda näpistama. Ja ma pean panen lokkis traksidega siia tagasi. Ja nüüd, see programm koostada. Me oleme nii lähedal, kuid seal on väga, väga peen viga. Vaatame, mis juhtub. Esiteks lubage mul minna ja välja suumida. Ma lähen edasi minna ja kirjuta teha seisukorras null. Oh, ma valetasin. Nüüd koostaja on tegelikult päris tark. Ja ma tõesti ei mõista, see veateade. Kasutades tulemus loovutamine tingimusena ilma sulgudes, on ilmselt halb. Aga mida see tähendab? Noh jälle, otsin mustreid koodi, et me oleme näinud, Mis on line 17 tegelikult seda, kuigi Lauren mõeldud veidi muidu? Jah. Sihtrühm: [kuuldamatu] DAVID J. Humala: Jah. Seega pidage meeles võrdusmärki, ilmselt nagu me oleme seda kasutanud enne, ei ole võrdne. Selle ülesande, paremalt vasakule. Nii joon 17 hetkel Tingimuseks on, ja see on täidesaatva kood sulgudes, aga kui selle koodi hukatakse, mis toimub väärtus null? Mis toimub väärtus n? Saades null. Nii et kui n muutub null, ja jälle, nagu iga eelmisel nädalal, me üldiselt öelda, et null on vale ja üks on tõsi, või jah on üks ja mitte on null. Nii õige ja vale, üks ja 0. Kui n nagu Rida 17 on antud väärtus 0, on null tõsi? Ei. Definitsiooni järgi null on vale. See konventsioon me oleme läheb klammerduvad liigub edasi. Nii on read 18, 19 ja 20 kunagi kohaldatakse nüüd loogiliselt? Nad ei saa. Nii me küsis kuid mitte päris täpselt, ja sa ei tea seda, kui oled näinud seda, lahuse C on see, kui sa tahad väljendada võrdsus, ütlete võrdsete võrdne. Nii võrdusmärk oli juba ära kasutatud loovutamisega, paremalt vasakule. Vastus võrdub vahenditega võrdsetena. Ja kui sa tõesti tahad oma meelt painutatud, JavaScripti ja PHP, seal on võrdne võrdne võrdsete, mis tähenda midagi muud kokku, kuid me jõuame, et enne pikk. Nii et see on lihtne määrata, kuid mõistma super lihtne teha seda viga, ja siis ei tea, ja võitlus minuteid, kui mitte tund, miks on minu kood täidesaatva kui ma kavatsen? See on sellepärast, et sa ei rääkinud see täpselt see, mida sa mõtlesid. Nii et oli peaaegu täiuslik, ja see oli suurepärane et me komistas kogu neid kaks väikest asju, sest nüüd, kui me neid parandada, ja ma ei tee seisundi null dot kaldkriips seisukorras null, Sooviksin täisarv palun. Vaatame. Ei. See saab sundida mind seda tegema. Nii 42. Ma valisin positiivne arv. Nüüd, kui ma tõestada Selle programmi õige? Kui oled matemaatik, sa ei saa tõesti tõestada seda katse-eksituse meetodil, õige? Sa ei saa lihtsalt tõendina Näiteks, kuid vähemalt programmeerijana me ei ole üritagi tõestada nüüd et see on tegelikult õige, aga ma peaks ilmselt katsetada mõne esindaja juhtudel. Olen testitud 42. Ma võiks testida 43. Ma võiks testida 44. Test 45. Õigus? Aga ma võiks seda teha väga palju aega. Mis oleks veel mõned huvitav juhul proovida? Sihtrühm: [kuuldamatu] null. DAVID J. Humala: Nii null. Kindlasti. Ja hea, meil on seekord Tänu Lauren uus kood. Mis on veel üks hea näide proovida? Sihtrühm: negatiivne. DAVID J. Humala: negatiivne ja võibolla midagi veidi suurem, et äkki negatiivne 42, aga üldiselt, kui testida oma programmides liigub edasi, sa oled läheb taha mõelda ise, nagu mida on põhiline erinevad juhtumid. Ja ma julgen öelda negatiivne juhul, positiivne juhul, ning null juhul päris palju ümardab need välja. Vaatame variant seda küll. Tingimused üks. See on õige lahendus siin, nii et näete kaks ja online, kui sa käid trajektooridega, üldiselt juurdekasvu need järk-järgult, kuni me saada täpselt õige lähenemine. Mis siis, kui me tahtsime küsida kaks küsimust korraga? Lubage mul avada selle asemel. Non-lüliti põhjustel me näeme veel kord. Mida uut süntaktiliselt siin? Ma olen praegu mängides mängu kui arvuti on öelnud mulle, anna mulle täisarv üks kuni 10, ja siis ma otsustades kasutaja sisend. Inglise keeles, mis põhineb kood, mida näed siin sinine, mida see programm teeb? Sihtrühm: [kuuldamatu] korjatud suur või väike arv. DAVID J. Humala: Jah. See on lihtsalt lahendamisel, kas Ma valisin suur või keskmise, või väike arv põhineb väga meelevaldne määratlus väike, keskmine, ja suur siin, kuid teatamata süntaks et uut on see. Ei ole vähem kui int või võrdne kirjutama, või sellest suurem või võrdne kirjutama, kus üks on teise üle, et teil võib väljendada nagu Microsoft Word. Nii et programmeerimiskeelt tavaliselt lihtsalt teha kaks märki, üksteise järel. Ja mida see ilmselt esindada, ampersand ampersand. Sihtrühm: [kuuldamatu] DAVID J. Humala: Jah. See tähendab lihtsalt, ja kuna see Selgub, et autorid C kasutatud ühe ampersand, mis sa võiksid mõelda oleks ideaalne mõiste ja on juba ära kasutatud, nii ampersand ampersand tegelikult lööb puhul me tegelikult tahame. Nii saab nüüd sattuma kaks asja. Lubage mul minna ja avada üks. Midagi, mis on natuke murettekitav. Ebatäpsuse dot c. Lubage mul tutvustada kahte asja siin. Üks, teate, et me saame teha matemaatika, sest just nii enne kui tegime plus kaks numbrit, x ja y. Mis on selle programmi ilmselt läheb? Ma ei ole seda kommenteerinud veel ja ma olen kasutusele protsenti f, kuid ma kiiresti ütlesin protsenti f tähendab ujukoma väärtus, mis on reaalne number. Midagi koos kohaga punkti, mis ei ole täisarv. Mida sa arvad, et see programm on püüdes näidata mind ekraanil? Jah? Sihtrühm: tulemus üks üle 10. DAVID J. Humala: Jah. Mis põhjustas üks jagatud 10. Õigus, sest kõik on teil ilmselt kasvanud, teades, et üks üle 10 on mis? Jah, see on lihtsalt 1/10 ehk 0,1. Õigus? Vaatame, mida see tegelikult on. Nii et lubage mul minna ja päästa see. Lubage mul minna siin. Tee ebatäpsus dot kaldkriipsuga ebatäpsus, ja teate ka, Linux keskkonnas, siis ei ole pea tüüpi välja ebatäpsus ja võtta terve päeva. Üldiselt on see, kui vajutad Tab, siis lõpetan oma mõtte teile, põhineb sõnad, mis on jooksvas kataloogis. OKEI. Nii sul oli õigus. Üks jagatud 10 on tegelikult 0,1. Aga ma olen natuke uudishimulik. Ja selgub printf toetab mõned omadused millega saab määrata rohkem kui vaikearvu koma. Nii et kui ma tahan näha 10 kohaga punktid Ma suudan protsenti, jaoks kohatäide sümbol, dot 10, anna mulle 10 kohaga punkti, ja siis veel ujukoma väärtus, ja kui kõrvale, Mis on selle kurakriips n ilmselt me ​​hoiame kasutab? Selgub, et see on sümbol uus liin. See on väga selge, kuidas öelda, et arvuti, Kursori järgmine line pärast sa oled teinud. Ja me näeme, mis juhtub kui me ei tee seda. Lubage mul kompileerida teha ebatäpsus. Nüüd dot kaldkriips ebatäpsus. OKEI. Ikka õige. Üks jagatud 10. Nüüd ma saan natuke kummaline küll. Mis siis, kui ma vaatan 20 kohaga juhib tähelepanu, kompileerida, kordamisega, ja kui kõrvale kiirus, võid kasutada ka Sinu üles ja alla nooli kerida ajalugu, nii et sa ei pea pidama tippida neid käske, sisesta. Huh. Ma ei loe, et algkool. Olgu, las ma vaata nagu 29 kohad välja. Võib-olla see on lihtsalt juhus. Võib-olla minu arvuti käitub imelikult. See ei ole asi, eks? See on midagi deterministlikult. Nii et ebatäpsus. OK, see on segane. Mis toimub? Nii ilmselt oma Õpetaja on valetamine sulle kõik see aeg põhjustel, et me näeme varsti. Aga olgem lõpeb üks teine ​​programm. See on natuke programmide keegi kirjutas mõned aastad tagasi ja see on tegelikult osa võistlus. Keegi tegelikult kirjutab koodi niimoodi, ja kui te seda teete, see on stiililiselt probleem. Aga inimesed seda praalimine õigusi. Selleks, et kirjutada kõige segane otsin programmi, mis siiski ei midagi huvitavat. Ja teadmiseks, ma arvasin, et me tahaks lahkuda täna, enne Colton mängib meil siin, on programmi käivitada, mis isegi lihtsalt kasutades C käesoleva teksti põhjal keskkond, annab meile selle. Kurat võtaks. [NAER] Ootel. [Kuuldamatu] c kriips l m. Sa lähed, et näha maagilist loits, et me näeme varsti. [Kuuldamatu] Olgu. Ja nüüd saab isegi asju niimoodi. Nii see on. Sest CS50 me, näed sa reedel. [Muusika mängib] [APPLAUSE]