[Muusika mängimine] DAVID Humala: Olgu see on CS50 ja see on nädala lõpuks üks. Nii et ma tahaksin tutvustada oma endise advisee, Andel Duff, kes mitte ainult ei iPhone 5 tähistab samuti käesoleva kõnepult, ta teeb ka autod. ANSEL Duff: Kuidas läheb, kõik on? Ma tahan teile öelda, natuke natuke Formula SAE, millest ma olen kapten. See on MIT meeskond. Ma tahan teile öelda, poisid natuke seda ja loodetavasti luua teatud huvi. Nii et lubage mul lihtsalt joosta paar asju meie meeskond. Nii et me oleme täiesti õpilane run, kus kõik ning kohal disain, simuleerida test, ning tootja allsüsteem auto. Meil on oma masin poe ja garaažid ja N52-- või kahju, N51-- mis on samas hoones nagu MIT Science Museum. Ja me oleme inimesed et sõita autoga. Seal on siseriikliku konkurentsiõiguse aasta suve alguses, ja siis on väiksem penaltiseeria võistlusi aastaringselt. Ja siis me teeme juhi koolituse päeva, et saada uusi liikmeid tundma. Meie build päeva oleme Laupäeviti 11:00-20:00. Lõunasöök ja õhtusöök hoolitsemine kohta, alates Bertucci-ja Beantown aastal. Meil on iganädalasel koosolekul ja seminar, mis on muidugi krediiti. Mis on nii uued kui selle poolaasta ja seda ka järgmisel semestril nii et saate läbida-reg eest. Ja siis meil on projekteerimine, pood, ja CAD päeva nädalas, samas liikmed iseseisvalt CAD osad, et laos jne. Nii elektri- insener meeskond meil on veojõudu, kõrgepinge süsteemi mis jookseb nominaalne 300 volti, mis hõlmab mootorid, mootori kontrollerid ja akusid. Siis on meil madal pinge süsteem, mis töötab 12 volti, mis hõlmab kontrolli, kas sõlmed, aju kast ja armatuurlaud. Niipalju CS läheb, teeme on kodulehel hooldus et meil on vaja teha üritustele, liikmelisus muutustele, uusi pilte ja PR materjali. Ja siis meil on kood, mis kontrollib auto meie veojõukontroll, kaater kontrolli, kriips kontrolli, pöördemomendi vektorjuhtimist, ja regeneratiivpidurdussüsteemidega, mis kestab tavaliselt MATLAB, Simulink ja LabView. Ütlen sulle natuke auto. Nii et see on umbes 500 kilo. On reeglid piiratud 85 kilovatti. See on 2 EMRAX 207 mootorid tagasi, üks iga tagaratta. See on custom-ehitatud akud alates Prismatic A123 kott rakkude kogusummas 300 volti ja 5,6 kilovatt-tundi. Ja see on otseülekandega koos 2,64-1 ülekandearv. Siin on mõned pildid meie sõid seda konkurentsi. Siin taga, ninamaski ja siin on mootorid, need suured mustad kettad all et mens manus. Siin on slide et ma tõmmatakse välja meie konkurentsi kava. Ja see on lihtsalt võrrelda meie auto Paar kaubanduslikult kättesaadavad autod, nagu KTM XBOW, Ariel Atom ja Caterha M 7-280. Kui te olete juba tuttav hind, võimsus tõmbekaal, dollarit hobujõudu, dollarit pöördemoment ja meie auto puhub neid kõiki välja veega. Kui teil on küsimusi, kübeke seda e-posti aadress. Shoot meile e-mail aadressil fsae@mit.edu. Me oleme õnnelikud, et rääkida Kas sa tahaksid midagi. Harvardi õpilased on lahked vähemuse meeskonnas. Kui teil on küsimusi selle kohta, et siis ei tulista meile e-mail, õnnelik, et rääkida, ja ma lähen pea tagasi üle David. Tänan. Ma hindan seda, poisid. [APPLAUSE] DAVID Humala: Ansel veetis suve töötavad koos meiega siin ülikoolilinnakus CS50 Sel suvel. Ja lisaks kallal asjad nagu binaarsed sibulad, ta tegelikult väga avatud meie silmad-- ja kaevanduse particular-- sellele, mida tegelikult ristumiskohas ei riist-ja tarkvara saab. Tegelikult on palju asju, mida ta lihtsalt tuuritanud teid on lõppkokkuvõttes loodud esimene tarkvara, ja siis lõpuks valmistatud reaalses maailmas riistvara. Nii et kui olete huvitatud uurides, et ristmik, ehk alustada, et grupp. Nüüd vahepeal neile, kes on fännid tehnoloogia ja Apple tooteid eriti teada, et seal Oli paar Teated eile. Aga me arvasime me tahaks näidata sa üks, mis tuli välja paar päeva enne nimetatud te ei näinud. Jörgen EGHAMMER: Tead, kord aega midagi tuleb mööda, et muudab seda, kuidas me elame. Seade nii lihtne ja intuitiivne kasutades tundub peaaegu tuttav. Tutvustame 2015 IKEA kataloogi. See ei ole digitaalsete raamatute või e-raamat, see on raamat-raamatu. Esimene asi, mida tähele ei ole kaablid, isegi mitte toitejuhe. 2015 IKEA kataloog on täielikult laetud, ja aku eluiga on igavene. Kasutajaliides on 7,5 8 tolli, kuid võib laiendada kuni 15 8 tolli. Navigation põhineb reljeefsete ühendust tehnoloogia, mis saab tegelikult tunned. Sisu on eelinstalleeritud kaudu 328 kõrglahutusega lehekülge inspireerivaid kodu sisustamiseks ideid. Brauseri käivitamine, lihtsalt puudutada ja lohistada. Paremalt vasakule, et liikuda edasi, vasakult paremale, et liikuda tagasi. Pange tähele, midagi muud? See on õige. No lag. Iga kristallselge lehele saadetised silmapilkselt, ükskõik kui kiiresti liigute. Kui sa tahad saada kiire ülevaate, lihtsalt hoidke seda peopesaga, ja kasutades ainult pöidlaga kiirus sisu sirvida. Kui leiate midagi, mida soovite salvestada hiljem, saate selle järjehoidjatesse lisada. Ja isegi kui sulgete rakenduse saate kergesti leida järjehoidja uuesti. Amazing. [Naer] [APPLAUSE] Nii et toob meid nädala lõpuks üks. Paar Teated nüüd. Nii osadeks on praegu pooleli. Mine seda URL siia millalgi vahel nüüd ja reede keskpäeval tegelikult täpsustada, kas olete nende hulgas vähem mugav, rohkem mugav, või kusagil vahepeal. See on tavaliselt üks neist asju, mida sa lihtsalt omamoodi tea. Ja tegelikult need, kes on vähem mugav ilmselt teavad nii palju, Neile, kes on rohkem mugav teada nii palju, ja jälle, kui te ei ole päris kindel, mis need ämbrid jääte te olete ilmselt kusagil vahepeal. Aga kindel võid vahetada Pärast paari nädala jooksul, kui vaja oleks. Vahepeal järgmisel nädalal me ei hakka lõigud per se, aga super lõigud, mis on avatud kõigile üliõpilastele. Sel pühapäeval kell asukohta kuulutatakse käigus veebilehte meil on üks need vähem mugav, samuti üks need mugavamaks. Ja need kusagil vahepeal saab valida, millist neist kahest, või nii, kui soovite, et istuda-in. Ja keskenduda nendele on lõpptulemusena C mis me jätkame Vestluse täna. Ülesanded 0 vahepeal on loodetavasti teie kätes. Ametlikult homseks, Neljapäev, keskpäeval. Kui sa raha ühes oma 5 hilinenud päeva mis tooks see kuni reede keskpäeval. Ülesanded 1 vahepeal on postitatud kursuse kodulehel. Ja see on meie esimene foray kui klass C. Ja see probleem määrata spec sõelub läbi palju mehhaanika mida meil hakkas rääkima esmaspäeval ja me jätkame täna räägime. C, Linux, CS50 seadme, kõik see ootame teid spetsifikatsioonile. Tööaeg vahepeal on käimas, bakalaureuse söögisaal. Head selle URL siin ajakava täna ja homme kui soovid osa saada. Küsimused vahepeal nii, et sa on võimalus esitada küsimusi asünkroonselt, 24/7, mõistad sa oled mitte ainult osades ja kontor tundi, vaid pigem selle tööriista siin CS50 Arutle, et URL saab muidugi online teadetetahvel tarkvara, mille kaudu saab esitada küsimusi klassikaaslased ja ka töötajad. Nii et pidage meeles, et ressursi samuti. Vahepeal traditsioon algab sel reedel. Nagu te võib-olla ühtesid alates Viimase kolmapäeva teaser video, meil on traditsioon kõige igal reedel Tähtajaks võttes umbes 50 õpilast ja töötajad kohalikus restoranis nimega Fire ja Ice, kus me oleme tavaliselt olen mõned vilistlased või sõpradega tööstus üldiselt soovivad teha suur klass tunne väiksem. Nii et see on täiesti juhuslik lõunasöök. Kamp meile töötajad eriti, mängib muusikaline toolid ja vestelda õpilastega 50, elu väljaspool 50, elu tulevikus, reaalses maailmas, Ma räägin töövõimalusi sõprade tööstuses. Nii et kui sa soovid meiega liituda sel reedel, pea see URL siia. Ruumi on vähe, kuid me teeme seda kordumatult kogu perspektiivis. Head seal cs50.harvard.edu/rsvp. Ja kui sa ei saa sisse seekord mitte muretseda. Me teeme seda jälle lähinädalatel samuti. Nii et see on pilt Me maalitud eelmisel nädalal ja sa oled ilmselt olnud espalla siiani. Aga proovime ühendada see nüüd mida me teeme täna ja edasi. Kas ma saaksin ühe vabatahtliku? Olgu, või mitu. Kuidas siin lõpuks, sinine särk. Tule, mis su nimi on? Alana: Alana. DAVID Humala: Alana. Nii Alana, vaid moment-- tore kohtuda sind-- hakkab mängima rolli Selle funktsiooni siin. Lilla block me oleme nimetatakse siiani funktsioon. Niisiis, mida ma lähen enne siin ja pakkuda Alana on vähe nimesilti teha selge, mis rolli sa mängid. Nii et sa peab olema sõnaõigus blokeerida. Kui soovite minna ja pane see edasi. Ja me ei kavatse hoida seda super lihtne. Kui eesmärk käepärast on lihtsalt nüüd rakendada koos Alana, see nn öelda blokaad, siin on, kuidas see läheb tööle. Ma peate-- olgem kutsuvad seda argument või parameeter, see on tõesti lihtsalt tühi paberileht. Ja see on valge kuni objekti Tuletab valge kast, kuhu te saab kirjutada sõnu. Vahepeal ma lähen siin. Ma lähen edasi minna ja kirjutada H-E-L-L-O eralda maailma. Ja nüüd ma, nagu ütlevad programmeerija, ei tegelikult teavad, kuidas öelda midagi. Võin tulla sõnad, aga ma ei pruugi tea, kuidas ennast väljendada suuliselt või ekraanil. Ja nii ma lähen teha, on seda tükk funktsionaalsuse, kelle input-- või argument, nagu me nimetame seda, Olen kirjutanud selle tüki paper-- ja ma lähen tellida seda. Ja tõepoolest see on roll, mis funktsioonide programmeerimiskeelt mängida. Midagi öelda plokk saab tellida keegi, kes tõesti teab, mida ta või ta räägib. Nii et kui sa samm üle siin hetkeks, Ma lähen mööda seda sisendit Alana ja paluda, et teile öelda, et see sisend. Alana: Hello, world. DAVID Humala: Ongi kõik. Nii et on funktsioon. Nüüd saame seda veidi rohkem, saame astuda samm edasi siit. Sest see oli selgelt underwhelming. Nii et olgem nüüd muutma seda midagi natuke keerukam. Nii see muidugi on meie C versiooni. Nüüd, kui sa tahad teha, et ühekordne, et nimesilti maha, ja olgem on paned uue nime. Aga põhimõtteliselt oled mängib sama rolli, see lihtsalt nii juhtub, et kutsutakse printf nüüd. Lugu on muidugi läheb olema-- ilmselt niisama underwhelming-- on saab olema järgmine. Olete nüüd funktsiooni printf. Olen helistaja või programmeerija, kes tahab seista õlgadele inimesed minevikus nagu sina, kes juba arvasin, kuidas tegelikult kirjutada midagi maha. Ja nii seekord mitte öelda olgem tegelikult kasutavad meie ekraanil siin. Nii et kui soovite astuda siin, ma lähen läbida uuesti seda sisend minu printf sõber. Kui sa saaksid minna ja printida, et ekraanil lihtsalt juhtides oma sõrme must ekraan. Suurepärane. Olgu, nii palju vahekontole jaoks kuidas see pidi mängima. Nüüd võtame asju üks viimane piir, kui me võiks järgmiselt. Nii et see on C programmi nagu me ütlesime viimast korda. Ja see lihtsalt teeb seda, mida sa tegid, see prindib välja ekraan, hello, world. Kuigi seal on selgelt palju häirivad asjad seal. Aga võtame asju pügala ja tutvustada seda versiooni, mis meenutavad oli kolmas versioon, mis sattus koos viimast korda. Ja nüüd on selgelt kaks kasutusalad printf. Seal on 2 kõned Alana antud juhul printf, kuid seal on ka kõne teise funktsiooni. Mida see funktsioon selgelt? GetString. Kas me saame veel ühe vabatahtliku? OK, tulge siia. Mis su nimi on? JAVIER: Javier. DAVID Humala: Javier, tule üles. Nii Javier roll on see paberile. Mis ma lähen kutsun üldiselt s. Nüüd on see muutuja, see on tüüpi string, kui vaikimisi poolt, et teise rea keskel seal. Ja ma tahan, et sa minema mind string. Täpsemalt pea alla orkester jagu ja mind kellegi nimi, ja tulevad tagasi ja muutuva sisaldavad seda väärtust. See võib olla igaüks, kui soovite. Siit me tuleme. Olgu, Javier on kirjalikult ette nime. Olgu. Me kõik ilmselt arvata, kui see läheb välja mängida. Me võib-olla belaboring koht, mida funktsioon on teed, kuid sellegipoolest tänan teid väga. Nii Javier on tagasi see string Siit, mis ei saa päris vt Jonathan on string et me oleme saanud. Nüüd, mida ma tegelikult toimub andma Alana kuigi on midagi veidi erinev. Kuna selles versioonis Programmi esimene seal on oma nimi. Nii et kõige esimene argument Mul on vaja, et anda Alana kus saab olema sõna otseses mõttes oma nimi. Olgu, nii lihtne see ongi Ma anna sulle seda. Ja kui ma kirjutan üles järgmine argument, kui te tahan minna ja kirjutada see laual, lähme edasi ja teha lõplik näide siin teha selge, millised on lõpuks sai juhtuda. Nii oma nimi, Kirjutan selle ülaosa suunas kui te ei pahanda, just nii, et meil on ruumi veel ühele teisele reale. Sest viimane asi, mida ma nüüd pakkuda Teile on mitte üks, kuid kaks paberilehte. Olgu. H-E-L-L-O eralda ja seejärel tühi rida. Nii et see, mida ma olen umbes anda Alana nüüd on midagi veidi erinev. Mitte ainult ta saada see, kus täitke tühi kujutab et percent-- milline oli kohatäide Oleme kasutanud? Jah, nii protsenti s. Vahepeal ma lähen edasi teda teine ​​argument, mis on täpselt see, mida Javier väljavõtteid Jonathan. Nii et lubage mul anda teile need kaks. Kui soovite, edasi minna ja trükkida selle kohta. Mis lõpuks juhtub juba käes, Alana jälle mängib rolli printf. Javier mängisin rolli getString. Nii et on oma suveniiri. Ja lõpuks, mis toimub, vaatamata Selle hello-- yep minna ja koma. Alana: Kas ma saan seda veel või ei? DAVID Humala: Jah, sa said nad mõlemad korraga. Nii et idee on see, et sa saab nüüd flip lehele käsitseda teine need kaks sisendit. Nii et see on ainult haamer kodus punkt, et kui Alana täidetud see roheline joon siin, ja siis Javier tegi seda üks meie jaoks ja tagasi mulle midagi me kutsume s, aga see oli tõesti lihtsalt, et tükk paberit enda. Ja nüüd Alana on seda teinud kolmas rida. Ja kuigi see kõik välja nii uskumatult segasena ehk Esmapilgul see tõesti Nii lihtne see ongi. Associated sisendite ümber, saada väljundid, kas on füüsiliselt anda tagasi midagi, nägemine või kõrvalmõju niimoodi. Midagi visuaalselt kirjutatud ekraanil. Nii et lähme edasi ja tänan Alana ja Javier, kes oli siin, et meiega siin. [APPLAUSE] Nüüd võtame enesestmõistetavana, kuidas lihtne kõik see olla võiks. Ja olgem sõita tegelikult teha midagi tegelikku koodi. Nii et kuni ekraanil on siin pildil ning nn CS50 seade. Ja kui teil oli kell, kui 02:00 kolmapäeva pärastlõunal, selgitada mõningaid sõber mida CS50 seade on kuidas sa defineerid seda lauset? Iga ühe lausega? Jah? Üliõpilane: See on nagu programmi mis teeb igaühe arvuti joosta sama süsteemi. DAVID Humala: Väga hea! See on programm, mis võimaldab igaühe arvuti joosta sama süsteemi. See on omamoodi oma koopia operatsioonisüsteemi süsteem, mis juhtub kutsutakse Ubuntu Linux. Ja see töötab tõhusalt sees aknas oma Mac või PC, nii, et sel viisil on kohe värava 1. nädalal, igaüks siin klassis on juurdepääs samadele vahenditele, sama konfiguratsiooniga ja seal ei ole õppimiskõver konkreetse Mac või PC eriti. Nüüd avas sees CS50 Seadme esmaspäeval, see programm siit. See juhtub olema, mida nimetatakse gedit. Aga see on tõesti ainult graafiline redaktor. See on midagi Notepad või tekst Muuda Windows või Mac OS võrra. Ja ma ettepaneku, et seal oli tõesti kolm olulist osade sellele ekraanile. Top külg on see, kui sa oleks kirjutada oma koodi. Ja see, kui me veetsime palju meie kolm näidet esmaspäev loeng. Alumine me kutsusime mida, see must aken, jah? Üliõpilane: tõlkija? DAVID Humala: tõlkija me juurde viis, et aken. Aga üldisemalt. Jah, see oli lihtsalt terminali aknas. See on vanuse vana mõiste, mis lihtsalt kirjeldab sisuliselt Vilkuv kiire, et aastaid tagasi kasutati olla üks neist suur CRT stiilis monitorid. Kuid tänapäeval on see omamoodi virtuaalne tarkvara. Ja terminal aknad olgem meile käske. See omamoodi lihtsustatud versioon kasutajaliidese või UI. See ei ole graafiline kasutajaliidese või GUI, see on teksti-põhine kasutajaliides või käsurida. Ja tõepoolest see, kui lõpuks Mul oli võimalik kirjutada mingi kood. Kui ma olin kirjutanud mõned koodi küll, Meenutame, et ma kasutasin seda käsku. Ja kuna see nimi sellist ütleb, see võimaldab mul teha programmi nimega Tere. Aga mis oli see tegelikult teeb? Noh mark oli võtta oma sisend, mu lähtekoodi, ja muutub see, mida lõpuks? Objekti kood. Ja objekti kood on lihtsalt fancy viis öelda nulli ja ones. Ja siis, kui ma tahtsin joosta, et objekti kood, kui ma tahtsin edasi sisendina need nulli ja need oma arvuti aju nn CPU või keskseade, Mul oli käivitada programmi. Aga see ei olnud päris lihtne esmaspäeval lihtsalt topeltklõpsuga mõned ikoonil. Mis asemel ma pean teha selleks, et käivitada programm? Mis see oli teine ​​käsk? Ma kuulen vähe kaldkriipsuga? Jah, jah? Üliõpilane: Dot kärpida ja programmi nimi. DAVID Humala: Täpselt. Dot kaldkriips ja programmi nimi. Nüüd Mida see tähendab? Noh dot on lihtsalt müstiline, kuidas öelda jooksva kataloogi. Ükskõik kaust olete on viidatud kui on esindatud dot. Kaldkriips on just see, mida sa oled näinud Mac OS ja Windows aastaid, see eraldaja kataloog või kausta ja ülejäänud mõne nime. Windows juhtub minna tahapoole, Linux ja Mac OS juhtub minna edasi. Aga see on lihtsalt eraldaja, nii et see on lihtsalt ebahuvitav süntaktiline detail. Mahlane osa muidugi on programmi nimi, Tere. Ja see on see, mis teeb loodi meile. See väljastada et fail meile. Aga kuidas me saame, et punkt? Olgem nüüd küsida küsimusele, mis oli tõesti siin toimub, vähemalt Mõnede käesoleva süntaksi? Seega lause või nii, kuidas me seletame ära Selle esimene rida, mis on rõhutatud roheline? Mis oli see, et esimene rida teed, seoses minu programm? Jah? Õpilane: [kuuldamatu]. DAVID Humala: Ütle seda uuesti? Üliõpilane: Sh ja allalaadimine Viimase funktsioonid [kuuldamatu]. DAVID Humala: Hea. Sealhulgas, ma ei ütle allalaadimine, kuid ütleme sealhulgas funktsioone, et inimesed olen kirjutanud ka varem. Ja need funktsioonid on olemas kuskil minu arvutis. Keegi kirjutas faili aastat tagasi, ning et faili on kuskil sees CS50 seadme või mu kõvaketas üldisemalt. Ja nii see rida on sisuliselt öeldes: mine leiavad, et fail, standard I / O dot h, ja kopeeri ja kleebi sisu siinsamas üleval minu faili nii et ma ei pea tee seda käsitsi ise. Ja vahel juiciest tükki sees et fail me taotleti mida funktsioon? Mis funktsioon ei ütleme kuulutati või nimetatud standard I / O dot h Kõige tõenäolisemalt? Printf, eks? Me ei kirjuta printf kohta Esmaspäev, see lihtsalt olemas. Palju nagu Alana lihtsalt tuli lavale ja ta lihtsalt olemas ja teadis, kuidas juhtida midagi ekraanil, nii ei printf olemas palju aastaid. Ja nii see on, kuidas me seda kasutada. Nüüd, kui me liigume siin, Peamine oli analoogne me ütles puzzle tükk nimetatakse kui roheline lipp klõpsatud maailma Scratch. See on lihtsalt omamoodi Vaikimisi nimi, et inimesed otsustas kujutaks default lähtepunkt programmi. Patakas programmeerimine kood mis saab täidetud esimene. Vahepeal need looksulg on selline nagu kumera kujuga ja palju need kollased nullist tükki. Need omamoodi kapseldada kogu kamp juhiseid koos. Nii see lihtsalt omamoodi seob mõned on seotud funktsionaalsust. printf muidugi on funktsioon, mis trükib ekraanile, kui me just tegime. Aga need sulgudesse? Kuidas te define-- isegi kui te pole kunagi programmeeritud enne, aga mis põhineb Nüüdsest suurendades loodetavasti intuitsioon, mida on sulgudes teed meile siin? Või mida nad ümbritsevad? Jah? Üliõpilane: Nad ütlevad, mida sa lähed printida printf. DAVID Humala: Jah, nad ütlevad, mida sa lähed printida printf. Või üldiselt on nad ümbritseva sisendite funktsioon. Nii saab peaaegu arvan Nende sulgudes olevaks, nagu metallist klipp selle lõikelauale. See on see, mis hoiab, see on see, mis on läheb kasutatavad argumendid arvesse funktsioon, mis Sel juhul nimetatakse printf. Nii et üldiselt peaaegu iga kord, kui me nimetame funktsiooni, me näeme paari sulgudes. Võib-olla midagi on see, nagu praegu, võib-olla midagi ta. Aga see, kui sa paneks sisendeid ja niinimetatud argumendid et funktsioon. Siin on üks selline argument. Olen rõhutanud kõik vahel hinnapakkumisi, sest see osutub Selles keeles nimetatakse C, kui soovite, et esindada string-- mis on sõna või fraas või isegi paragraph-- pead pange see jutumärgid. Ei ülakoma, jutumärgid. Ja see on täpselt see, mida ma olen teinud siin. Vahepeal seal funky sümbol lõpu poole sinna. Kenoviiva n. Mida me ütleme, et esindatud? Jah? Üliõpilane: uus liin. DAVID Humala: Uus liin. Õigus, sa ei pea üldiselt Enter, kui soovite, et programm sülitama uus liin. Pigem sa öelda seda selgesõnaliselt seda küll kauge tükk süntaksi, längkriipsu n, et soovite uut rida sinna minna. Lõpuks semikooloniga. Me tegelikult ei räägi liiga palju sellest, ja kaugelt see on bane mõned oma eksisteerimise esimest probleem määrata, kui sa lihtsalt ei mõistnud unustasid midagi nii loll kui semikooloniga. Ja üldiselt paneb see seal fikseerib selle probleemi. Aga mida ta teeb meile, kas sa arvad? Õpilane: [kuuldamatu]. DAVID Humala: Vabandust? Õpilane: [kuuldamatu]. DAVID Humala: Viimistlus avalduse. See on omamoodi nagu perioodiks lõpuks inglise lause, arvestades, et selles keeles C, et see lõpeb avalduses. Juhendamise programmeerimine koodi, mis sa tahad öelda, Ma olen teinud seda. Nüüd teate, et on ainult üks siin. Nii et sa ei taha saada harjumus panna semikooloniga pärast iga suletud sulgudes. Näiteks polegi kõrval tühine ja me tagasi tulla tulevikus millises tühine vahend. Aga sel juhul oma printf on funktsioon või märge kasutatud, ja nii me tahame, et otsas päris lõpus ta. Ja ma tahtlikult kiusad C ja ausalt öeldes palju keeli nagu C, C ++ Java, JavaScript, ja mis tahes arv teistes keeltes on palju neid Sorteeri süntaktiliste detailid. See kindlasti, kui sa oled uus programmeerimise saab tõeliselt reisi sind. Ja siis märkige oma sõnad, mõned teist on see kogemus ametis tundi või hilja öösiti töötavad mõned p-set, kus teie neetud programm lihtsalt ei kompileerida, see ei tööta, siis on ei tea, mis viga, tundub täiesti loogiliselt õige teile. Ja see on sellepärast, et sa unustasid midagi pihta semikoolon lõpus mõned liin. Aga need on asju sa oled läheb kohe õppima nägema. Ja tõepoolest on need asjad et KA ja TF on on omamoodi treenitud nägema palju kiiremini kui sina. Ja nii see on ainult öelda, kui sukelduda probleem komplekt 1 eriti ei saa pettunud seda kraami. Kui oled omamoodi aklimatiseeruda maailma, siis hakkame nägema asju, mida sa ei pruugi vaata Esmapilgul esimesel nädalal. Nii et lähtekood on midagi sellist. Me tahame sinna juhitakse nn tõlkija. Ja et tõlkija kui ütlesime annab väljundi tuntud objekti koodi Niinimetatud nullid ja need. Aga sealt, mida see meile annab? Noh, see annab meile neid mudeleid. Ja jälle arvutis Intel inside, mõistab need mustrid nulli ja ones. Ja mõnikord muster kujutab tegelikku koma number nagu me nägime eelmisel nädalal, mõnikord see on kirjas nagu nägime eelmisel nädalal, mõnikord see on juhendamise, nagu trükkimine midagi ekraanil. Nii printf jaoks instance-- vaid pigem, lubage mul tagasi kerida. Me oleme olnud võttes iseenesestmõistetavana et need nullid ja need on toodetud selle käsu make. Aga teha ei ole tõlkija. Tee ei ole asi keskel mis on tootva nulli ja ones. Pigem teha on lihtsalt väga mugavalt nimega programmi, mille eesmärk elus on sisuliselt välja selgitada, kuidas koostada oma programmi. Ja me kasutame seda nende Esimestel nädalatel, sest see lihtsalt säästab meid palju vaeva. Aga mida teha, on tõesti teed, kui sa kompileerida hello, on, nagu me ütlesime, viimane kord, et see on otsin kõvakettal või aktiivse kausta jaoks faili nimega, mida ilmselt? Hello.c, eks? See on lihtsalt selline konventsioon. See on meelevaldne, kuid see, kuidas asjad on. Tee, kui sa lihtsalt nimetage programmi, mis ei ole veel olemas, see läheb otsima lähtekoodi aasta faili, vaikimisi tähendab hello.c. Ja kui ta leiab, suur. See saab teisendada, et allikas kood objekti kood teile. Aga iga kord, kui ma vajuta Enter peale jooksu teha hello, , kas sa mäletad nägemine viimast korda üsna pikk ja segasena jada teiste valgete tähtedega ja tegelased ekraanil? Noh, mis oli tegelik käsk, tegelik koostaja, et jooksin. Nii et tegelik koostaja me kasutame enamik semester on midagi, mida nimetatakse rõkkama. Mõned teist võivad olla kasutatud Visual Studio enne või GCC, või mõnel teisel koostajad. Me kasutame rõkkama. Ja rõkkama võimaldab meil tegelikult teisendada et lähtekoodi Objekti kood. Mida see tegelikult praktikas tähendab? Noh lase mul minna ühte Minu kaustad viimast korda. Toas CS50 seade. Ja lubage mul minna ja luua selle sama faili, sisaldab standard I / O punkti h. Int main void. Ja me tuleme ka tulevikus millises Int tähendab ja mida void abil. Aga nüüd teeme hello world längkriipsu n, just nagu me tegime laual. Las ma salvestada see fail nimega hello.c. Ja nüüd, kui ma tahan, et koostada selle Ma kas-- lubage mul suumida sisse-- run teha hello siseneda. Ja see kord oli et väga segasena liin. Aga nüüd on vähemalt üks sõna ilmselt hüppab välja ennast. Rõkkama on see, et liin nägime enne. Nüüd on palju muid asju ausalt et me laine oma käsi täna. Aga seal on mõned alajaotused, mõned tegelased siin mis pakuvad huvi. Aga ma lähen edasi minna ja seda teha. Ma lähen esietendus Tere, lihtsalt tõestada et see töötab, sest see oli esmaspäev. Aga nüüd ma lähen kustutada programmi. Ja palju nagu meil oli neid Lühinimede viimane kord, käsu eemaldamiseks midagi on rm, eemaldada siseneda. Sa lähed, et saaksin üsna segasena küsimusi. Raske uskuda, et saad teha isegi sellele küsimusele raske mõista. Aga võtke tavaline fail tere lihtsalt vahenditega seda, mida soovid kustutada tere. Ja ma ei saa minna ja kirjuta y jah, Enter, ja nüüd on see kadunud. Mida see tähendab nüüd, kui ma kustutada minu ekraanil, on, et selle asemel, et teed tegema hello-- sa Tead mis, ma olen selles osav. Ma lähen jooksma koostaja ise. Ma ei pea mõned programmi aru saada, mis minu faili nimi on. Kirjutasin hello.c, I tea kuidas seda kutsutakse, Ma olen selgelt võimelised kirjutades seda. Ma lähen edasi minna ja ei ripu hello.c Enter. Tundub, et töö. Ja pole mingit täiendavat toodangut, sest rõkkama on tõlkija. See on see, mis matab lähtekoodi nulli ja ones. Nii et kui ma nüüd tegema dot kaldkriips hello Enter, hm. New veateate täna. Nii bash on lihtsalt nimi vilgub kiiresti, et me kasutame. See on raske järeleandmisi, aga nüüd, et kõik, mis on, see vilgub kiiresti. Ja sellepärast, et see karjuma meid. Sellist faili või kataloogi ei natuke rohkem arusaadav. Aga kindlasti ma tegin, et objekti kood. Aga saak on, et kui ma tippige käsk loetleda sisuga kataloog, mis on mis? LS nimekirja. Seal on hunnik asju siin, millest mõned tulid koos seadmega, nagu minu töölaua kausta Downloads kausta Dropbox kausta ja kõik mis värk. Aga mis on huvitav on hello.c, mis Ma lõin hetk tagasi koos gedit. Ja mis kõige veidram otsin nime siin võib-olla, et me ei vaata viimase aja üldse? a.out, eks? Niisiis tagasi päevas, see oli lihtsalt otsustanud, et kui kompileerida programm jaoks esmakordselt ja te ei täpsusta nimi faili, olgem kutsuvad seda. Ja a.out tähendab lihtsalt, et see oli väljund tõlkija. Nii et see on jube nimi programm. Aga selle loogika dot kaldkriips eest Praegune kataloog, kaldkriips a.out, peaks tähendama seal tegelikult minu programmi Hello World. Nüüd veidi soojeneda kasutamise ka. Kui ma tahan ümber nimetada fail, tuleb välja, et sa liikuda faili ühest nimi teise. Nii mv a.out, ja siis ma võib helistada see hello Enter. Nii et see on Linux käsk. DOS oli see aasta tagasi, Windows on terminali aknas mingisugune, mis näeb niimoodi, Linux ja Mac arvutid on see vilgub kiiresti. Kuigi enamik meist ilmselt Harva, kui üldse, kasuta seda. Aga mida ma olen teinud, on käivitada programm, mille nimi on mv, ja ma olen andnud talle kaks argumenti, nii rääkida. Kaks sisendit. a.out on algne nimi. Tere on uus nimi. Nii et kui ma nüüd tegema dot kaldkriips tere, Enter, et on olemas. Ja kui ma dot kaldkriips a.out, Mida ootate ma peaks nägema? Bash ei ole sellist faili või kataloogi. Sest ma lihtsalt ümber ta. Nii et see võtab natuke harjumist. Aga probleem komplekt 1 spetsifikatsioon tõeliselt hoidke oma käsi läbi mõned selle minutae. Kuna see on täielik intellektuaalse häiritud huvipakkuvatest ideid käepärast, mis on tegelikult luua midagi välja kood. Aga teeme ühe modifikatsiooni nüüd see programm. Tuletame meelde, et viimane kord, kui ma tegin midagi niimoodi, printf oma nimi. Ja tõepoolest me tegime seda suurel ekraanil seal. Ja siis ma tegin string s saab GetString avatud paren lähedal paren. Ja paren lihtsalt stenografist märke sulgudes. Nii ei getString võtta argumendid? Nr sisendid ei, kuid see vajab sulgudes sest see, mida piiritleb kutsumise funktsiooni. Nii et ma lähen edasi minna ja proovida käivitada kompilaator selle programmi nüüd. Rõkkama hello.c, sest ma ei muutu selle nimi nüüd. Ja mul on hunnik vigu. Lähme välja suumida siin. Kui ma liikuge jälle, nagu ma ütlesin eelmisel korral, Lisa esiteks sama viga et ma sain eelmine kord. On line 6 hello.c Pidin deklareerimata tunnus string, ei ma mõtlen standard? Ma ei teinud seda. Sest see, mis viga on tegin selle programm, kui te mäletate viimast korda? Jah, me peame nn Apupyörät et me lihtsalt kasutada mõne nädala jooksul. Aga mul on vaja täpsustada, et ka kusagil seadme sisemust, on fail, mis me kirjutasime paar aastat tagasi. Mille sees on funktsioonid nagu ilmselt getString. Nüüd, kui ma lähen tagasi siin, suurendamiseks ja uuesti käivitada rõkkama hello.c. Kurat, teine ​​viga. Aga me ei ole näinud seda varem. See üks on natuke rohkem esoteeriline nuputada. Aga see on tahtlikult ekraanil sest me tahtsime seda lugu rääkida. Kui sa kompileerida hello.c, nagu pilti enne ettepaneku, sa oled ainult konverteeriva et lähtekoodi nulli ja ones. Nüüd CS50 personali paar aastat tagasi kirjutas CS50.h ja vastavate dokumentide, CS50.c. Ja meie, paar aastat tagasi, koostatakse neid faile toimikusse, mis juhtub mida nimetatakse CS50.o. Või seda saab ümber vähe erinevaid asju. Aga see on lihtne viis mõelda seda. Nii et me koostatud CS50 on Teegi nulli ja ones. Aga kusagil on määratletud I et ma tahan ühendada oma nullidega ja need mu hello world programmi nulli ja need et CS50 töötajate loodud paar aastat tagasi ühe täieliku programmi. Kõik, mida ma olen määratud kirjalikult rõkkama hello.c on koostada hello.c. Ma ei ole öelnud rõkkama kuni lüli nulli ja need et CS50 töötajate loodud Teile mõni aeg tagasi. Nii et see on lihtne lahendus, kriips l link, CS50. Ja me jälle näha seda Enne pikk ja jälle. Aga teate nüüd ei olnud kaebusi. Nüüd, kui ma saan dot kaldkriips tere, nüüd see töötab. Kuigi see on natuke eksitav sest ma lihtsalt taasloodi mida faili? a.out. Nii et lubage mul kerida hetkeks. Programm me lihtsalt koostada on kolm rida koodi. Kui ma jooksin hello world, hello hetk tagasi, ma ei näe oma nimi. Ja see on sellepärast, et ma jooksin vana versioon programm. Aga kui ma tõesti joosta dot kaldkriips a.out Sisesta, oma nimi, Rob, tere, maailma. Hm. See on omamoodi viga. Tõenäoliselt tähendas öelda Rob, eks? Mis siis fix siin koodi. Õpilane: [kuuldamatu]. DAVID Humala: Täpselt. Nii et ma lihtsalt vaja teha, et lõplik näpistama nii et ma möödaminnes kohatäide, nagu täitke tühi, nagu me tegime hetk tagasi. Kuid protsenti s nüüd et täita tühjaks. Nii et lõpuks hakkame paljastada viimane üksikasjalikult, nii et seal ei ole magic. Ma lähen edasi minna ja vabaneda hellow. Ma lähen edasi minna ja vabaneda a.out. Nii et nüüd ma ei ole programmid, lihtsalt minu lähtekoodi. Ja ma lähen jooksma veidi enam käsu rõkkama kriips o hello hello.c kriips LCS50. Nüüd hakkab justkui minema ühest kõrvast sisse ja teisest välja ehk. Aga tease peale, mida see teeb. Rõkkama on kompilaatori kriips LCS50 tahtlikult päris lõpus teeb mida lause? Lingid CS50 raamatukogu. Haarab nulli ja need, mis tehtud personalile ja crams neid oma programmi. Nii et viimane küsimus käepärast on, Mis on kriips o hello ilmselt teed, isegi kui te pole kunagi näinud seda süntaksit enne? Kirjutamine programm, mis on mitte nimega default a.out. Pigem on see nimega hello. Nüüd ei ole a.out. No sellist faili või kataloogi sest ma selgelt öelda nimetame seda programmi hello, nii et Ma võin nüüd kirjutad nime niimoodi ja on see käituma. Nüüd ausalt öeldes poiss on see, et ebahuvitav on meeles pidada kõiki, et vähe minutia, eks? Nii et lähme edasi ja vabaneda tere jälle. Ja olgem nüüd naasta maailma mis on piisav, et öelda, teha tere. Aga see on maagia, mis tee läheb teile, see tüütus, et ta teeb teile. Ja kui meie programmide ja probleeme saada keerulisemas teha on tõesti sinu sõber. Sest mitte liiga pikk nüüd me läheme on programmid, mis on kirjutatud mitte ühe faili, kuid mitu faili, ja teha saab automatiseerida protsessi koostada kõik, et meid kokku. Nüüd printida. printf on sees seda faili standard I / O punkti h, et me oleme näinud, aga see pole veel kõik printf kui see. Seal längkriipsu n, kuid seal on ka hunnik muid põgeneda järjestusi. Ja sümboliga on lihtsalt fancy viis öelda midagi mis algab längkriipsu, ei kaldkriipsuga, längkriipsu, ja kas seal eriline asi. Ja me ei tegele enamik neist, kuid miks on Kurakaldkriips jutumärke, Mis sa arvad? Miks on see imelik jada tegelased, längkriipsu jutumärke, miks see võiks olla kasulik? Õpilane: [kuuldamatu]. DAVID Humala: Täpselt nii, eks? Mõtle tagasi meie programmi Hello World et me oleme näinud üsna paar korda nüüd, iga kord, kui oleme näinud, et hello world programmi oleme olnud jutumärkide sees millest on hello komaga maailma tagurpidi kaldkriipsuga n. Aga arvan, et ise, Mis siis, kui sa tegelikult tahtsin välja printida jutumärgid? Sinu esimene instinkt võib olla, ma ei tea, miks ma tahta tegema-- siin saame olla veidi passiivne agressiivne, tere sõber. Meil võite teha midagi sellist. Aga miks on see nüüd problemaatiline? Ignoreerimine lokkis hinnapakkumisi kõrvale, et Keynote tegi meile automaatselt. Miks on see problemaatiline? Täpselt. Kuna meil on nagu 4 jutumärke. Noh esimene ilmselt läheb teine, ja võibolla neljas läheb kolmas, või tähendab, ma pole isegi kindel, ega arvuti saab olema. Arvutid jälle koostajad jälle on üsna loll. Nad ainult seda, mida sa ütle neile, mida teha. Ja kui sa ei ole üheselt mõistetav nad ilmselt läheb visata viga. Kui sa ei ole üheselt mõistetav, kuidas teha maapähklivõi ja tarrend sandwich kummalised asjad võiksid jõuda. See on sama mõte. Nüüd piisab, kui öelda pole mõne muu põgeneda järjestusi, kuid me tuleme neile enne pikk. Sisuliselt need põgeneda järjestused esindavad midagi et sa ei pruugi olla võimalik liiga lihtne klaviatuuri, ilma segadusse arvuti. Nüüd vahepeal oleme Kohanäitajad printf. Protsenti d, mida võib ka kirjaliku Peaaegu kõikidel juhtudel protsenti i, on kohatäide millist tüüpi andmeid? Mis tüüpi väärtus? Kümnendmurruna. Nii et tegelikult hakkame kasutades protsenti i, sest see on vähe lihtsam, nagu täisarv. Protsenti i. Täisarv, mis juhtub olema koma. Protsent on meil juba ütles, oli kohatäide string. Mis on lihtsalt üks sõna, fraas, lõikes, essee, mis iganes. See järjestus tegelased põhjalikkusega. Ja me näeme peagi mõned neist teised. Aga protsenti c on ühe märgi. Protsenti f on murdarv, nagu tegelik arv, mis on koma on see, mis Loomulikult ei ole täisarv. Ja seal on terve kamp ka teistele. Vahepeal C ja aastal palju keeli, meil on erinevaid andmetüüpe. Erinevad klaasist potid kui soovite. Kaussi Ma kasutasin viimast korda oli ping pong pallid, kuid me ei saa ka salvestada erinevaid väärtused nagu tähte ja stringid ja täisarvude konteineri nagu muutuja, ja C on neist. Char on tüüpi andmeid, tüüpi muutuja kus saab salvestada iseloomu. Float on teatud tüüpi muutuja mida saab salvestada tegelikku arvu. Int on muidugi int. Ja pigem naeruväärselt nimega pikka on koht, kus saate talletada sisuliselt tõesti pikk number, isegi rohkem numbrit siis Tüüpiline int võib salvestada. Aga me tuleme tagasi, et enne pikk. In CS50 dot h vahepeal Teisest päisefailist et me oleme näinud paar korda kasutusel, seal kaks teist tüüpi andmeid, et ei ole olemas C tavaliselt. Üks on string, ja me näeme paar nädalat, mis stringid tõesti on all kapuuts. Ja üks on tõeväärtus. Ja bool on muutuja, mis saavad olla ainult teatud väärtusi. Ja just põhineb eelmisel nädalal selgitus Scratch, ja hiljuti C mida sa vist on kaks võimalikku väärtust mõned mahuti, mis on tüüpi bool? Jah ja ei. Üks ja null. Õige või vale. Ja tõepoolest see on viimane, mis kipub olla tavalised programmeerimine keeles, öeldes midagi nagu õige või vale. Vahepeal CS50 raamatukogu on hunnik funktsioone et töötajad kirjutasid sa, Lisaks lihtsalt saada string. Me kirjutasime eelnevalt funktsioone, saan täisarv kasutaja, saada ühe märgi, saada float, et on lihtsalt number koos koma. Saada pikka, tõesti suur väärtus kasutaja. Nii et me oleme näinud ainult seda tegevuse vormis getString. Aga läbi nende funktsioonid varsti võimalik kirjutada programme, mis saada sisend kasutaja. Vahepeal peab seda programmi ning kaaluda kuidas me võiksime praegu hakata lisama et seda uute konstrueerib. Kiire tuulispask tour ja siis me vaatame mõned kirjalikult mõned programmid käsitsi ise. Edaspidi, kui tahame rakendada tingimusel, see ei hakka nägema kena väike ilus puzzle tükk. See saab vaadata veidi rohkem kauge. Aga see on kanooniline struktuuri tingimus C. Sõna kui kaks sulgudes, mille sees saab olema mingi Boolean väljend. Nüüd kaldkriipsuga kaldkriips keskel, see on hetkel omamoodi nagu pseudokoodi kood kohatäide. Aga enam korralikult, iga rida koodi C, mis algab kaldkriipsuga kaldkriips on kommentaar. See on nagu kleepuv teadmiseks, et võite panna essee, trükitakse paberile. See märkus iseendale. See ei ole funktsionaalne mõju programmile. See on omamoodi meeldetuletus, et see on teie enda dokumendid selle kohta, mis toimub. Nii et seda hetkel on omamoodi kohatäide mis iganes seal sees need looksulg lõpuks läheb midagi teha. Vahepeal on teil kaks kahvlid tee, kui veel ehitada niimoodi. Võite kui elseif, muud. Nüüd see on väärt märkimist, eriti kui olete olnud Googling ümber Online ressursse välja uudishimu või kui te kiirenemist üks kursuse soovitatud raamatuid C, näed, et inimestel on palju erinevate soodustuste kuidas väljendada end kood. Mõnedele inimestele meeldib panna looksulg nagu ma olen teinud siin. Mõnedele inimestele meeldib panna lokkis traksid näiteks siin. Mõnedele inimestele meeldib panna elses siin ja siis see siia. Seal on igal mitmeid võimalusi kirjutada koodi, ja ükski neist ei on õigus iseenesest. Kuigi seal on mõned mis on päris vale. Kuid on ei--, kui see on lõppkokkuvõttes väga religioosne arutelu. Tegelikult üks kõige tüütu asju arvutiteadus kuidas otsaga infotehnoloogid saab. Ja leiad aja jooksul, et isegi arendada isiklikke eelistusi selle kohta, kuidas oma koodi peaks otsima. Mitte lihtsalt käituvad, mitte ainult luua väljund, aga kuidas see peaks välja nägema esteetiliselt. Niisiis, mida me teeme on suunata teid mööda teed, vähemalt praegu, standard CS50 stiilis, et vähemalt hoiab asju ühtne ja lihtne lugeda. Aga rohkem on neid, vahet enne pikk. Loogiline väljenduse C, kui te tahtsin öelda, kas see tingimus on tõene ja see teine ​​tingimus on Tõsi, sa ei kirjuta sõna ja, nagu sa oleks inglise keeles. Te mitte kasutama ampersand ampersand, põhjustel me tuleme tagasi. Kui sa tahad öelda või kasutate kahte vertikaalne baarid, mis on USA klaviatuur üldiselt kõrgem Sisesta klahvi kõrval tagurpidi kaldkriipsuga. Ja see tähendab lihtsalt, kui see tingimus või see teine ​​tingimus on tõene teha. Samal ajal on see hull asi, mis pead kord kasutada kord aega. Aga see on lihtsalt alternatiiv viis ennast väljendada. See, et nüüd, lähme sätestada, et see on lihtsalt teise funky viis väljendada kui elseif, elseif, elseif, elseif. See on lihtsalt vormindatud poolest juhtumeid, kus sa sõna otseses mõttes loetleda väärtused võiksite kontrollida. Vahepeal ring. Nägime võrdlus Scratch silmusega. Ja ma lähen siputan kätt mida kõik need asjad tähendab. Aga teate, et silmusega väga sageli alustada märksõna. Või siis hakkab märgusõnaga aega. Või siis hakkab märgusõnaga teha, ja lõpeb märksõna ajal. Aga mida me parasjagu näha on asjad enam niimoodi. Siin on üldiselt C, kuidas te võite kuulutada muutuja ja annab talle raha. C ei piisa, nagu Scratch, sa lihtsalt ütlevad mulle muutuja nimega midagi. Sa pead ütlema C, ja öelda Teie kompilaator täpsemalt millist tüüpi väärtust sa taha panna klaas kauss. Kas see on täisarv? Kui jah, siis sa pead sõna otseses mõttes öelda, int ja siis nimi muutuja siis semikoolon. Kui te selle asemel tahtis string ja kutsus see on nagu ma tegin oma kood täna siin, sa ütleksid string s semikooloniga. Kui soovite, et anda see raha sa võid võrdusmärgi, muidu tuntud omistamisoperaatorile. Ja teate, kuidas iga Nende rida koodi on semikoolon lõpus ta. Aga ausalt öeldes see lihtsalt tundub veidi inetu. Miks ma ei saa öelda, et arvuti, anna mind muutuja ja initsialiseerida see nulli. See tähendab, et mulle tühi klaas kauss. Kuigi saate. Ja siis ühel kohtuotsuse kutsub teid tegema stiililiselt ajas on, sa kirjutad oma koodi niimoodi, või sa omamoodi koristama ja muljet inimesed, kirjutades kaks rida kui üks. Ja seda võiks pidada üldiselt rohkem elegantne viis kirjalikult oma koodi stiililiselt. Funktsioonid oleme loomulikult näinud. Nad kavatsevad võtta selles formaadis. Funktsiooni nime, mõned sulgudes ja siis võib-olla mõned kraami sees. Või te võite näha kasutusalad mitmeid funktsioone pool kõrval, nagu midagi sellist. Nüüd kui puutuja, ei see nali nüüd on mõtet? [Naer] See ei tähenda, et see on naljakas, kuid see Mis võib-olla teha natuke rohkem mõtet. Nüüd lähme sisse CS50 seade korraks. Ja lubage mul avada üks teaser siin. Ja tõepoolest üks põhjusi, kehtestamise IKEA kataloog ja vilkuv pilt iPhone natuke tagasi oli tegelikult lips koos Asjaolu, et paar aastat tagasi, aastal 2007, see tükk kood oli vabastatakse, mis oli üks esimesi rakendamine tükk tarkvara mis teeb mida nimetatakse jailbreaking. Neile harjumatu, Täielikuks midagi nagu telefon või iPhone tähendab sisuliselt viinud kuidas teha asju seda, et ettevõte kes tegid ta ei kavatse. Nagu soovite installida teatud tarkvara, mis ei ole in App Store, Täielikuks telefoni, mis sa tee selliseid asju ja palju muud. Aga mis oli lõbus 2007-- ja seal on olnud kümneid erinevaid versioone need asjad, sest siis igasuguseid languages-- on see, et Selle programmi siin, nimetatakse iUnlock, oli tegelikult kirjutatud C. Ja nii ma tõmmata lähtekoodi seda, lihtsalt selline näitan sulle mõned sarnasusi konstruktid oleme arutanud seni. Nüüd on nii rohkem keerukust siin kui me oleme näinud juba klassis. Lubage mul kerida üles natuke siin. Aga teate nende-- hästi märkame vähe things-- kuid märgata neid ridu siin sealhulgas standard I / O punkti h. Ja all-- line 24 please-- teate standard I / O dot h ja terve hulk muid faile, mis ilmselt teisi inimesi olen kirjutanud. Ja kui me kerige läbi Selle veidi meelevaldselt märgata Ma ei tea, kuidas kirjutada see kõik ise tingimata veel kuid seal on kui. Nii et ilmselt see on filiaal. Ja kui ma keri natuke edasine on teine ​​kui. Kui ma liikuge üles, ma arvan, ümber line 100 nägin. Nii et ma ei ole päris kindel, kuidas see töötab veel, kuid see on silmus, mis läheb lubage mul kinnitada, mõned mitu korda. Ja kui ma leidke kõik viis alt Ma näen, et seal on toimida siia kutsutud Peamine ja täiendavat krediiti oma lugemise rõõm. Nii et see on ainult olen öelnud ja me paneme see online seas muidugi allikas koodi today-- et isegi mõned neist seadmed, mida me enesestmõistetavaks, lõpus päeval sa ikka kasutades neid põhilisi konstruktsioone, mida me oleme tutvustanud juba siiani. Aitab see. Olgu, nüüd lähme tegelikult ehitada midagi. Lähme üle midagi hello.c ja avada see, kirjutame selle programmi siit. Ma lähen edasi minna ja Kirjutada programm nimega adder.c, kelle eesmärk elus saab olema nagu mu esimene super lihtne kalkulaator et lihtsalt lisab paar numbrid. Mitte sellepärast, et see on raske probleem, kuid kuna see võimaldab mul nüüd lips koos mõned asjad. Nii et ma lähen edasi minna ja sisaldama standard I / O punkti h ja CS50 dot h. Ma lähen ütlen int main void. Ja tulevikus uuesti me tuleme selle juurde tagasi arvesse selles kontekstis ja tühine vahend. Ja nüüd ma lähen midagi öelda nagu printf, anna mulle täisarv. Ja nüüd on mu teine ​​rida, kuidas ma saan ennast väljendada, nagu et ma tahan kuulutada muutuja mis toimub salvestada int? Sõna otseses mõttes, mida ma kirjuta kui ma tahan luua muutuja, mis talletab int sa ütleksid? int võrdub getint. Muidugi, nii et töötab. Ja just kooskõla koodiga teid vaata online, lubage mul muutus see, et x, lihtsalt sellepärast, et x on ühine muutuja nimi kasutama vähemalt Algebrast. Nüüd lubage mul minna ja teha printf uuesti. Anna mulle veel täisarv. Ja nüüd ma lähen liiki ja õppida, et muster, Ma lähen ütlen int y jõuab GetInt. Ja me oleme ei kasutata GetInt enne, vaid lihtsalt nagu getString läheb ja läheb string, nagu Javier tegi publik, Samamoodi ei GetInt hakkavad vilkuma kiire. Ja tegelikult ootab kasutaja anda see täisarv, kirjutades selle ja lööb Enter. Nüüd lõpuks ma teen Selle printf summa of-- ja ma sain fancy nüüd-- protsenti i ja protsenti i olemasolu i hüüumärk längkriipsu n. Ja mis sa arvad, et ma lähen panna nüüd lisasisendeid et printf? Ma ei taha öelda, sõna-sõnalt tsiteerida lõppeb x. Tahan klassi x ja siis ja nüüd lähme väljamõeldud ja oletame, et me saame teha, mida tahame. Mida sa tahad öelda edasi? x pluss y. Ja tõepoolest, mis töötab. See on minimaalselt programmeerimiskeeli ei mõista põhilisi aritmeetilisi, ja nii see peaks tegelikult töö. Nii et lubage mul minna ja ei tee rästik minu must ja valge aken siia alla, Enter. Cryptic line, kuid ei vea sõnum, et see on hea. Dot kärpida rästik, anna mulle täisarv, 1. Anna mulle veel täisarv 2. Summa 1 ja 2 on 3. Olgu, päris triviaalne programmi, kuid mis ta on teinud? See võimaldas mul kasutada funktsiooni helista siia, helistage teine ​​funktsioon siin, kaks kõnesid GetInt, kolmas kõne printf, ja siis kasutades neid kohatäitjaid. Nii et see on natuke rohkem keerukam kui eelmine kord. Aga mis siis, kui ma tahan natuke Kasvataja? Lubage mul minna ja nüüd seda teha. Lubage mul minna ja luua uus fail nimega tingimused null. Ja ma lähen säästa Mõne aja klasside huvides ja lihtsalt kleepida, et kood lähtepunktiks. Ja nüüd ma lihtsalt panna midagi uut siin keskel. Nii printf Sooviksin täisarv palun. Ja kõik see kood on olemas kursuse kodulehel sa ei pea tippige see kõik välja klassis, kui te ei soovi. int, ja nüüd ma lähen asemel kasutada x ja y, Ma lähen kasutada n, mis on ilmselt kõige levinum nimi võtta täisarv arvutiprogramm. Ja nüüd ma tahan teha vähe kohtuotsuse siin. Ma lähen, et näha, kui n on suurem kui 0, siis Ma lähen ütlen printf-- Oih, printf-- valisid positiivne arv, hüüumärk längkriipsu n. Sulgege see. Muidu ma lähen välja printida printf valisid negatiivne number. Aga enne sa karjud minu peale, olgem programmi käivitada. Lubage mul minna siin. Ja kuidas ma kompileerida programm kutsunud tingimused kriips 0? Tee tingimused kriips 0. Objekti loll nimi aga-- kurat võtaks. OK, hea õpetamise moment. Miks see murda? Mida ma kogemata nimetame seda faili? Te võite seda järeldada alates tab siin. Nii see ei ole halb, et ma tegin seda, sest see juhtub võib-olla mõned teist. Nii et ma kogemata nimega minu lähtekoodi tingimus 0. Aga minu lähtekoodi kokkuleppeliselt peaks olema fail nimega tingimus 0 kriips c, või mis iganes dot c. Nii et lubage mul seda parandada. Just nagu Microsoft Word Ma ei saa minna up Salvesta kui ja tegema tingimus 0 dot c. Nüüd lihtsalt tuleb korralik olen lähen edasi minna ja eemaldada tingimus 0, mis oli minu vana versioon. Ja nüüd teeme tee tingimus 0, Enter. OK, tundub hea. Seisukord 0, Enter. Sooviksin täisarv palun, 50, valisid positiivne number. Nüüd kuidas negatiivne 50? Sa valisid negatiivne number. Aga nüüd, 0. Päris kindel, 0 ei ole negatiivne. Nii et see on omamoodi loogiline viga. Kuidas seda parandada? Else if n on väiksem kui 0, seda teha, muidu meil on kolm teed filiaal siin printf valisid 0. Nüüd, kui ma uuesti, see programmi pärast kompileerimisel uuesti teha, ja nüüd uuesti, tingimus 0, mida ma näen siin 0 annab mulle, et väljund. Nii et kui me saame seda teha? Noh, see on väga lihtne unustada ning puude taga metsa. Ja nii võimaldab meil sõlmida Selle 2 ja 1/2 minutilise video et lõpuks on natuke ad Google, kuid see on tõesti märk mida isegi kasutades neid põhilisi hoone plokid saame lõpuks teha üks kord meil natuke programmeerimine Savvy kanname vööd. [Muusika mängimine] SAROO BRIERLEY (Voice Over): See oli 26 aastat tagasi, ja ma olin just saamas 5. Me saime rongijaama ja me minnakse meie rong koos. Mu vend lihtsalt ütlesin, et ma tulen siia jääda, ma tulen tagasi. Ja ma arvasin, et, noh tead, Ma võin ka lihtsalt magama minna ja ta lihtsalt mind üles äratada. Ja kui ma ärkasin järgmisel päev, kogu vedu oli tühjade Põgenenud rongi, kummitus rongi, et ma ei tea, kus. Olin vastu välja Austraalia, Australian pere. Ja ema oli kaunistatud minu tuba kaardi India, mis pani ta kõrval minu voodi kõrval. Ma ärkasin igal hommikul nähes, et kaart ja seega see omamoodi hoida mälestusi. Inimesed ütlevad, et sa oled püüdes leida nõela heinakuhjas, Saroo sa ei leia seda kunagi. Oleksin pinnatud kohti, et ma käisin, vilgub mu pere nägu. Seal oli pilt mu ema, istudes oma jalad ületanud, lihtsalt vaadates tema nutma. Elu on lihtsalt nii raske. See oli mu varandus. Ja ma vaatasin Google Map ja mõistis seal Google Earth samuti. Maailmas, kus võid suumida, Hakkasin on kõik need mõtted ja millised võimalused et seda võiks teha minu jaoks. Ma ütlesin endale, sa tead, et sa oled sain kõik need fotograafiline mälu; ja vaatamisväärsused kust sa pärit oled, ja sa tead, mida linn välja näeb. See võib olla rakenduse mida saab kasutada, et leida oma tee tagasi. Ma arvasin, et, noh panen dot Calcutta rongijaama ja raadiusega line, sa tead, et sa Tuleks otsida ümber selle ala. Ma omamoodi leidsin Nende rong lugusid. Ja ma hakkasin järgmist, ja Tulin rongijaama, mis peegeldub sama pilt see oli minu mälestused. Kõik sobitatud. Ma lihtsalt mõtlesin, et jah, ma tea, kuhu ma lähen. Ma lihtsalt lasen kaart, mis mul peas kaasa mind ja võtab mind tagasi oma kodulinna. Tulin käeulatuses maja, et ma sündisin. Ja kõndis umbes 15 meetrit ümber nurga, seal oli kolm daamid seistes väljastpoolt, üksteise kõrval. Ja keskel üks astus, ja Ma lihtsalt mõtlesin, et see on su ema. Ta tuli edasi, ta kallistas mind, ja olime seal umbes viis minutit. Ta haaras mu käe ja Ta viis mind maja ja sain telefoni, kus ta helises mu õde ja mu vend öelda, et sa tead, su vend on lihtsalt kõik järsku ilmus nagu kummitus. Ja siis pere taasühendati uuesti. Kõik on hea, Aitasin ema välja, ta ei pea olema Orjame. Ta võib elada kogu ülejäänud oma elu rahus. See oli nõela heinakuhjas, kuid nõel oli seal. Kõik on olemas. Kõik me peame maailmas on nupuvajutusega. Aga sul on tahe ja otsustavust tahtmisest. [Muusika mängimine] DAVID Humala: Imeliselt magus iseloomustuse lihtsalt mida saate nüüd tänu tehnoloogiale. Me näeme järgmisel nädalal.