[Muusika mängib] Jason Hirschhorn: OK, kõik. Tere tulemast jaos. See on CS50, meie väga Esimene super osa. Nagu te kõik teate, järgmisel nädalal regulaarne lõigud hakkab, kuid sel nädalal oleme kõik koos. On ise. Minu nimi on Jason. Ma olen lektor Computer Science. Meil on Andi, kes on pea TA CS50. Ja Scaz, professor Brian Scassellati, ta on professor Computer Science. Oleme CS50 pead Yale'i. Võite alati saatke Meie heads@cs50.yale.edu. Meil on loengutel. Me olema tööajal. Kui seal kunagi midagi saame teha saab, mida sa vajad, vabalt jõuda meile. Mida me teeme täna? Või enne seda, mis on Eeloleval nädalal? Nii tööaega on esmaspäev, teisipäev, Kolmapäev ja neljapäev, 8:00-11:00. Seal on ajakava kodulehel. Sektsioonid, nagu ma mainisin, hakkavad järgmisel nädalal. Ja saate teada sel nädalal, mis aega oma osa on, mis päev see on, ja kes teie TA on. Ülesanded 1 on tingitud juures neljapäeval kell keskpäeval, reede keskpäeval koos hilinenud päeva. Jah, teil on üheksa hilja päeva. Ja seal on üheksa probleem komplekti. Ja saab kasutada ainult üks hilja päevas probleem komplekti. Jah, tegelikult kõik probleemid komplekti on tingitud reedel kell keskpäeval. See on kõik. Kõik, mis andmed on ainekava. Igal reedel on meil lõunaks. Meile meeldib teha seda suurt Muidugi tunnen natuke väiksem. Nii et sa oled teretulnud RSVP. Tasuta lõunasöök mehe klassikaaslastega ja töötajad. cs50.yale.edu/rsvp. Kõik need asjad, mis Mul on ekraanil, ja rohkem, saab leida cs50.yale.edu või cs50.harvard.edu, kui te lähete Harvard ja vaatavad seda online. Ka need veebilehed, seal On ton ressursse sina. Iga loengu pole mitte ainult video Loengu, kuid märgib ka. Keegi ei vaata loengut ja teha märkmeid teie jaoks. Nii saab lihtsalt maksma tähelepanu Loengutes või saate kasutada oma märkmeid / meie märgib, et täiendada oma märkmeid. On slaidid online. Allikas code-- kõike David läheb üle loeng, või Scaz läheb üle loengu, et lähtekood on saadaval internetis samuti, kui nagu ma mainitud videos. Jaos, samamoodi on kõik filmitud. Kõik need slaidid on kättesaadavad. Kõik see kood olla saadaval. On püksid veebilehel, kus CS50 töötajad kulutada viis kuni 10 minuti läbimas teemade jaoks. Mõned neist olete juba tekkinud probleem komplekti. Lahtiolekuajad, nagu ma mainisin, esmaspäeviti läbi neljapäeviti, 8:00-11:00. CS50 Uuring on fantastiline ressurss. Seal on praktikas probleeme, proovi slaidid, teadaolevad vead et õpilased meeldib joosta, Olemuselt iga teema meil katab seda muidugi. Ja lõpuks, selle slide vähemalt Reference50 mis annab teile teavet kõikide eespool C funktsioonid sa võiksid kunagi võimalik loota kasutada ja paljud teised. Jällegi, et dot dot dot põhja ekraan on näidanud, et seal on isegi rohkem vahendeid nende kahe veebilehed: cs50.yale.edu, cs50.harvard.edu. Niisiis, mida me täna teeme? Noh, esiteks ma annan te vaatate ressursse. Juba tegin seda. Vaata meid. Nüüd läheme üle andmetüübid ja ettevõtjate C. Siis Andi tulevad siia üles ja minna üle raamatukogude C, printf (), funktsioon, millega olete juba tuttaval või kiiresti muutunud väga tuttav. Ja võite ka minna üle conditionals ja silmad. Ja siis lõpuks, Scaz läheb üle CS50 ID. Kui te ei ole tuvi aastal juba Ülesanded 1, samuti kuidas kasutada terminali ja kasulikke käske ja siis annan teile mõned demod ja Praktikas kodeerimine CS50 ID. Enne kui ma hüpata sellele sisu sellel poolel, kas keegi on mingeid küsimusi nii palju? Hea. OKEI. Käikude vahetamist. [Käikude vahetamist] See oli minu minnes käigud käsitsi auto. Nii andmete liigid C, sa ei saa lihtsalt olla muutuja x ja on see siis line 10 täisarv, võibolla number 1, real 20, kümnendnumbrina 10.5, ja siis paar rida hiljem string, ma armastan CS50. In C, muutujaid saab olla ainult üks asi, ja üks asi ainult. Ja nii sa pead andma neile tüüpi. Ja selle pardal, me on liikide loetelu. On tähemärki, mis seista tähemärki. Nii et üks täht A, B, C, D. See võib olla ka ruumi, või mis võib olla ka reavahetusmärki. Seal on täisarvud, mis on vaid numbrid, kogu numbers-- või täisarvud rather-- kuid mitte koma. Sest kümnendkohtade meil ujukoma numbrid. Ujukoma numbrid on numbrid koma. Siis on pikad, mis on sisuliselt enam täisarvud. Märkad, et pikk on 8 arvestades int on 4. Ma saan seda teises. Seda sellepärast, et pikad mahutab isegi rohkem täisarvud kui int salvestada. Kahe on pikka sularahaga. Ja lõpuks on meil string, mis on teatud tüüpi et teil on ilmselt varem kasutanud. Kui kaasate hashtag # includeCS50.h oma lähtefaili Seejärel saate kasutada string tüübist. See ei ole tegelikult ehitatud C. Seal on paar muud tüüpi ka. Aga need on peamised need, kellel mis te kasutate ja kogevad. C, jälle ma mainisin, Iga variable-- see saab olla ainult ühte tüüpi ja ainult ühte liiki. Seda sellepärast, et C on staatiliselt kirjutatud keeles, mitte dünaamiliselt trükitud keeles kus, kui loote muutuja saab muuta seda, mis on salvestatud see kui sa minna oma programmi. Üle siin paremal pool, mul on erineva suurusega seda tüüpi andmeid baitides. Nii tegelane on 1 bait. See on 8 bitti. Ja see tähendab, sest 8 bitti seal kaheksa 0. ja 1s. Nägime neid demosid esimeses nädalas, et binaarne sibulad. 8 bitti või 1 bait, saame esindavad numbrid 0-255. Õigus. Kui kõik 8 bitti on 0, mis on 0. Kui esimene bitt on 1, see on number üks, ja nii edasi, kõik viis kuni 255. Ja see on ka põhjus, miks märkide saate on sisuliselt kuni 255 neist, kuid see on palju, et katta kõik tegelased peame kasutama. Sest täisarvud, sul võib olla 0 ja siis on 2 kuni 32 miinus 1. Need on mitu võimalust on teil täisarvud. Pikka sa pead 0 2 kuni 64 miinus 1. Nii et teil on palju, palju, rohkem võimalusi igatseb. Strings, see on küsimärk sest see on pinge hiljem. Jah. Ma võiksin öelda igaühe äärel oma istmel, nagu mis see on küsimärk? See on pinge. Me lõpuks kataks suurus stringid ja rääkida rohkem stringe. Kuna string on tegelikult üks abirattad panime selle Muidugi alguses ja siis startida hiljem kohta, sest stringid C on tegelikult suunanäitajaks iseloomu massiivid. Aga jälle, et on pinge hiljem. Enne kui ma liikuda küsimusi, kommentaarid, muret selle slide? OKEI. Ma pean olema fantastiline explainer. Ka siis, kui sa programmeerimine, sa lähed kasutada neid ettevõtjaid. Tõesti lihtne märke, et võib teha lihtsaid toimingud, mille oled ilmselt juba väga tuttav. Näiteks, paremal servas näeme lisada. Lisada, siis lihtsalt ei plussmärgiga. Ja siis võib-olla kahe muutuja x ja y. Seda saab teha x + y oma koodi. Ehk soovid mina-- ütled on number 7 ja 3, soovite salvestada, et muutujale nimega summa. Seda saab teha int tüübi, ruumi Kokkuvõttes muutuja nimi, = 7 + 3; Mis oleks, et kaupluse summa? Igaüks? Kui mul oli summa = 7 + 3. Mis oleks salvestatud summa? Sa võid karjuda välja. Sihtrühm: 10. Jason Hirschhorn: 10! See on täpselt õige. Aga kokkuvõttes = 7-3, Ma lihtsalt kasutada seda kriips märk. Mis saab olema salvestatud? Sihtrühm: 4. Jason Hirschhorn: 4. Summa on ilmselt vale nimi muutuja, kuid 4 oleks salvestatud. Et paljuneda C, kasutage väike Star iseloomu, sa ei kasuta x. Jagamiseks kasuta edasi Slash ei divisjoni sümbol. Ja moodul, kasutada protsent sümbol. Ütleme, et ma tahan näha int z = 7% 3, mida oleks salvestatud z? Nii, see on sisuliselt küsida, mida see moodul teha? Kas keegi teab, mida moodul teeb? Jah. y 4. SPEAKER 1: See on ülejäänud. Jason Hirschhorn: On Ülejäänud, kui jagate. Nii 7 jagatuna 3 on 2 ülejäänud 1. Nii 1 oleks salvestatud. Sa tegid lahutamine, kuid see on, kuidas see toimib. See on see, mida moodul operaator teeb. See võtab mitu jagab seda teine ​​number ja naaseb sa Ülejäänud. Nii jälle, 7% 3 annab teile 1, sest 7 jagatuna 3 on 2 ülejäänud 1, ja tagastab ülejäänud. Aga lähme tagasi üles üks samm, et jagunemine märk. Kui ma tegin 7 / jagatuna 3 ei keegi teab, mida see tuleb tagasi? SPEAKER 2: 2. Jason Hirschhorn: Miks 2 ja mitte 2,333? SPEAKER 2: Ma arvan, et see lõikab välja pärast täisarvuni. Jason Hirschhorn: Nii see on täpselt õige. In C, kui sa jagunemine kaks täisarvu 7 jagatuna 3, see läheb vastus, mis sel juhul 2,3333 igavesti ja ta leiab, et koma ja raiub kõike välja pärast koma ja see lihtsalt naased 2. Nii et kui ma tegin 8 jagatuna 3. See tegelikult teame et naasta 2,666, kuid see raiub kõik maha koma, kärbib see kõik, ja lihtsalt naaseb sa 2. Nii 6 jagatud 3, 7 jagatuna 3, 8 jagatuna 3, kõik läheb su juurde tagasi 2. Kas keegi teab, või on vist, kuidas ma võiks tegelikult saada täielik vastus, kui ma tahan, et koma? Jah. Lase käia. SPEAKER 3: Kasutage float? Jason Hirschhorn: Mida sa mõtled? SPEAKER 3: Sest sa ütlesid float on numbrid [kuuldamatu] Jason Hirschhorn: Right. Nii, see on täpselt õige. 7 on täisarv. Aga kui ma tahtsin keerata, et arvesse ujukomaarvuna, Ma oleks salvestada et nagu 7,0 sest arvuti on tõesti stupid-- nägime, et koos PB ja J example-- see ainult teha täpselt mida sa öelda seda. Nii et kui sa kirjutad 7, ta arvan, et see täisarv. Kui sa kirjutad 7,0, kuigi me tean neid asju on samaväärsed, ta kohtleb, et nagu ujukomaarvuna. Nii et kui sa tegid 7,0 jagatud 3 või jagatuna 3,0, oleks öelda, OK, nüüd me tegeleme ujub. Ma pöördun teie 2.333333 igavesti. Aga tegelikult ei igavesti, sest nagu nägime ka loengu Nende ujukoma numbrid ei ole täpselt täpne. Nii et kui sa tahad, et koma, või osa sellest kohaga, siis sa pead use-- üks neist Peab olema ujukomaarvuna ja arvuti peab mõistma et see on murdarv oled tegelevad, ei ole täisarv. Kõik küsimused, mis tabelis paremal pool, nii palju? Või teie vasakul pool, oma vasak, vasak pool. Jah. SPEAKER 4: Right. Sest nagu korrapärane täisarvud, siis oleks write-- oleks sul kirjutada float? Jason Hirschhorn: Jah, nii. Noh, kui soovite luua muutuja, mis on float, sa pead ütlema float z võrdub midagi. SPEAKER 4: OK. Jason Hirschhorn: Aga kui ma tahtsin teha 7 jagatud 3 ning saada selle kohaga, Ma teeksin float z = 7,0 / 3,0; ja mis annaks mulle ujukoma number. SPEAKER 4: OK. Jason Hirschhorn: Kui ma tegin midagi int z = 7/3, mis annaks mulle täisarv, sest need on kõik täisarvud. Kas see on mõtet? SPEAKER 4: Jah. Jason Hirschhorn: OK. Hea. Muid küsimusi, et lauale? Kas tõesti? Ma olen nii elevil. OKEI. Nii mõned muud asjad, mida kasutab, Sageli tingimustes või silmad, on seda tüüpi operators-- Seda tüüpi loogilisi väljendeid. Ja kui me õppisime, ==, mida sa kasutada, et kontrollida, kas kaks asja on võrdsed. Nii et siin ma kontrollida, kui x == y, olgem jälle eeldada, et x on 7 ja y on 3. Nii et kui ma kirjutasin 7 == 3, mida oleks, et naasta mind? Kas see on õige või vale? Sihtrühm: False. Jason Hirschhorn: OK. Ma tunnen, et igaüks võib saada see üks. Nii kõik, mida oleks selle tagasi? Sihtrühm: False. Jason Hirschhorn: False. Hea. 7 ei võrdu 3. Nii 7 == 3 Jõutakse vale. Sa ei ole mitte võrdusmärk, nii et kui ma kontrollitud 7! = 3, siis mis see tagasi? Sihtrühm: True. Jason Hirschhorn: True. Suurepärane. Keegi oli väga empaatiline tagasi ja hindame seda. Siis on vähem kui operaator, väiksem või võrdne operaatori suurem kui operaator, suurem kui või võrdne operaatorile. Nii et üks rohkem meelerahu kontrolli. Kui mul oli 7 on suurem kui või võrdne 3. Mis oleks, et naasta? Sihtrühm: True. Jason Hirschhorn: True. Jah. See tagaruumi, tagakülg ruumi, fantastiline. Võite ühendada need väljendid, kui sulle meeldib, samuti, koos loogiline ja mis on && Või loogilise OR mis on || ||. Ja nii nüüd saab testida kaks asju together-- Kas see naljakas? Miks on nii naljakas? Nii et kui ma tahtsin, ma ei saa öelda, 7 suurem kui 3 ja 2 on vähem kui 4? Noh, kui 7 on suurem kui 3, see on tõsi. 2 on vähem kui 4, see on tõsi. Nii kogu see asi oleks tagasi tõsi. Kui ma katsetada 7 on suurem kui 3 and-- Ma lihtsalt picking juhuslike arvude siin-- 4 on alla 2, noh, see on vale. Nii õige ja vale make vale. Ja sa võid minna ja teil ühendada nii paljud tingimused koos kui soovite. Kas keegi on küsimusi, kommentaarid, muresid nii palju? Ja ma näen, et mõned teist pildistada Minust ekraani, mis ma hindan. Loodetavasti see ei Snapchat. Loodetavasti see oma märkmeid. Aga kõik need hakkavad olema kättesaadavad Internetis. Nii et sa ei pea pildistada seda. Nagu ma mainisin, kõike tehakse kättesaadavaks internetis teile. OKEI. Ma olen umbes saada offstage, nii ei keegi tahan öelda midagi enne seda juhtub? Küsimused? [Astudes HÄÄLT] Jason Hirschhorn: Oh, lõpetage. Te olete liiga kena. OKEI. Ma lähen sildistada välja. Lähme. ANDI PENG: Me teeme ebamugav mic muutus nüüd. Jason Hirschhorn: ma olen kavatseme selle ära. ANDI PENG: Hindan toetust, poisid. Kas sa kuuled mind? Kas see on hea? Perfect. Ilus. Lubage mul parkima, et. OKEI. Niisiis, ma olen umbes teha nagu hiiglaslik andmed prügila kutid kohe. Ja ei muretse üldse, kui sa oled ei ole pärast iga väike rida, mida Ma olen umbes näidata teile. Nagu Jason ütles, kõike on täiesti online. Lihtsalt me ​​ei kavatse proovida tutvustada igaüks mõistete kaetud mõnel neist slaidid. Nii lihtsalt jälgida mööda. Ära muretse, kui sa ei saa aru, kõik; aga kui üheski punktis tunned kadunud, tõsta oma Samas me lõpetada, ei muretse. Cool. Nii et ma arvan, et midagi, mis David on juba selline mainitud loengu ja Jason on selline vihjas et täna on see, mida raamatukogu on. Nii programmeerimine, meil neid asju nimetatakse raamatukogud. Kui sisuliselt kõik nad on lihtsalt kogum funktsioone, mis on üle sisuliselt lihtsalt kood, mis on juba kirjutatud keegi, et me kõik kasutada meie programme. Niisiis, kuidas tavaline raamatukogu töö, eks? Te sisenete raamatukogu ukse. Sul on kõik need raamatuid saab välja tõmmata ja pääsete info neis raamatuid. Sama asi programmeerimine. Sul on raamatukogu, mis on juba on kirjutatud teiste inimeste poolt. Ja nii, et sa ei saa, programmeerijana või üliõpilane, pääsevad et raamatukogu on läbi hashtag #include. Näiteks C me on kolm C- kõige kasutatakse tavaliselt kolm C standard libraries-- sisend / väljund raamatukogu string raamatukogu ja matemaatika raamatukogu. Nii teie esimene Paar probleem seab, Neil on kolm et sa peamiselt kasutades. Nii nagu David juba selgitatud loeng, standard I / O teek või standard input / output raamatukogu just selline. See võimaldab teil, teie koodi sisestada midagi kasutaja ja väljund ekraani, sisuliselt trükkides ekraanile. Ja nii iga kord, kui kasutada kõiki funktsioone, näiteks funktsiooni printf (), mis me läheme üle järgmisele slaidile, veenduge, et ka standard / V raamatukogu või muidu sa ei kavatse olla võimelised kasutama printf () funktsiooni. Sest sina, kui programmeerija tegelikult kunagi kirjutas, et funktsiooni, sa oled lihtsalt kasutades keegi teise koodi oma koodi. Kas see teeb mõttes kõik? Cool. Ja siis me sisuliselt Tõusta string raamatukogu ja math.h raamatukogu, .h lihtsalt tähistab raamatukogu teiste raamatukogude, et saate lõpuks kasutad Koodi. Kuid eesmärkidel Selle raamatukogu, me ka have-- selle class-- meil ka mida nimetatakse CS50 raamatukogu cs50.h, kus me, et teie tutvumiseks on loodud palju olulisi ja kasulikke funktsioone. Nii et sa programmeerijana saab selga off mida me oleme juba kirjutanud, et Selle funktsiooni teile kättesaadavaks teie jaoks. Ma tulen hõlmab paari funktsioone kasutatakse tavaliselt, kuid tean, et need on kõik googleable online. Julgelt, tõmba CS50 raamatukogu ja siis on kõik funktsioonid olemas. Jah. SPEAKER 5: Nii et kui te ei kasutades tarkvara, et annab meile klassi, teeb seda tähenda, et me tahaks olla alla laadida ja leida päisefaili ise ja rääkige arvuti, kus see on? ANDI PENG: Hea küsimus. Täpselt. Nii et see on nagu kui sa ei ole füüsiliselt kohal raamatukogu ei ole nii, et teil tegelikult minna ja seda kasutada. Nii sama asi Programmeerimine C, siis veenduma, et te kasutate oma Seadme sest raamatukogu on juba inkorporeeritud ta. Ja siis, kui sa hashtag #include, raamatukogu seal. Jah. Hea küsimus. Igaüks hea? Cool. Hästi. Nii et me läheme tabanud, sisuliselt, mis on esimene funktsioon, mis Me nagu programmeerijad on kavatsed kasutada meie koodi. Seda nimetatakse printf () funktsiooni. Nii printf () funktsiooni, nagu ma olen juba ütlesin viimase slaidi sisaldub standard I / O, standard sisend / väljund, raamatukogu. Seega veenduge, et mida iganes sa kasutades-- oh, andke mulle haarata laser pointer-- iga kord, kui te kasutate printf () funktsiooni, Teil lisada standard I / O raamatukogus või mujal, kui koostada, sa lähed, et saada viga sest arvuti on nagu, oh ma ei tea, kus printf () on sa ei ütle mulle, kus printf () on. Noh printf () kuulub standard I / O, nii et kui te kasutate printf (), veenduge, et on, et line eespool koodi. Nii näiteks printf () Siin on funktsioon. Kõik see on välja printida midagi Sulgudes kasutaja. Kas keegi tahaks võtke torkehaav millises see koodirida õigus siin läheb välja printida? Seega vastus on ekraanil. Igaüks? VERDI: põhja. ANDI PENG: Verdi, miks sa ei lähe ees ja öelda kogu avaldus? VERDI: Tere, minu nimi on Andi, ja ma olen 20 aastat vana. ANDI PENG: Ah, armas. Nii see rida läheme välja printida, Tere, minu nimi on Andi, ja ma olen 20 aastat vana, mis on tegelikult õige väide. Süntaks. Nii paar süntaktilise küsimusi, mis kutid soovite veenduda, sa tead. Quotes. Jutumärkide öelda arvuti, et kõik sees läheb trükkida. Kõik sees purk lihtsalt, kuidas täpselt sa kirjutad seda, välja arvatud Tavaliselt lõpus, me ei kavatse soovite lisada hash-- oh sorry-- kriips n. Nii kriips n. Kas keegi taha võtta vist millises mis teeb meie koodi? Jah. SPEAKER 6: paneb ta uuele reale. ANDI PENG: Täpselt. Nii et kõik see teeb, on võimaldab juhtuks pärast seda, kui see avaldus, tuleb trükkida uus liin. Nii et kui olete kirjalikult oma koodi sa ei juhuslikult on asju traageldata edasi aasta lõpuks et sa ei taha. See kõik läheb korralikult trükitud ühele joonele ja siis hakkame järgmine rida. Kas keegi mäletab, mida see semikooloniga teeb, kui me kodeerimine? Jah. SPEAKER 7: Avaldus. ANDI PENG: Vabandust? SPEAKER 7: Kas see lõpetada avaldus? ANDI PENG: Jah. Nii C või iga programmeerimise keel, semikoolon tähistab lõppu programmeerimine line. Nii näiteks, inglise me kasutame perioodi öelda, oh see on lõpuks lause. Programmeerimine, sama asi, meil on semikooloniga tähistamiseks rea lõppu. Sageli, kui sa oled hakanud programmi sa mõistad, sa unustage semikooloni ja siis proovida käivitada oma koodi ja see ei tööta. Ja sa oled nagu, Ah, ma ei tea, miks see peaks töötama. Tõenäoliselt on teil ilmselt unustanud semikooloni või sulg või midagi kuskil. Nii, see on oluline meeles pidada. Cool. Olgu, käe, kuidas paljud inimesed siin on kunagi võetud AP Computer Science või programmeeritud Java enne, kunagi? OKEI. Armas. See ei ole kohaldatav Seejärel, kuid Java, siis on midagi, mida nimetatakse System.out.println mida ei eksisteeri C. Nii C, kui te tahan lisada muutujate millekski soovid välja printida, seal on konkreetse süntaksi me ei kavatse kasutada. See nimetatakse placeholding-- sisuliselt lisame kohatäitjaid paigas täisarv või muutuva et me tahame trükkida. Nii nagu te poisid näete oleme lisanud uus raamatukogu päisefail siin. CS50 raamatukogu. Ja sisalduvad et CS50 raamatukogu on ühine ülesanne me kasutame meie muidugi nn GetInt (). Kas keegi soovite võtke torkehaav at Mis GetInt () võib-olla teeme. Sihtrühm: [kuuldamatu] ANDI PENG: Vabandust. Kas ei kuule sind. Maddie, kellelegi. Maddie: Oh, see küsib Teid täisarv. ANDI PENG: Täpselt. Nii et see funktsioon, teine funktsioon, mis on juba on kirjutatud kellegi teise poolt et saame kutsuda nüüd. Kõik see on on ajendada teid, kasutaja, sisestada iganes sa tahad, kui koodi töötab ja see salvestab whatever-- Sel juhul me GetInt () - Ing, nii, et tähendab, et me oleme saada täisarv. Ja me ei kavatse hoida et teises täisarv et oleme just nn vana. Mis mõtet kõigile? Cool. Nüüd, et me oleme salvestatud selle täisarv, et me oleme küsitakse kasutajalt, See tunnus oleme loodud tüüpi int nimetatakse vanusest, saame edasi minna ja koht et meie printf () funktsiooni. Nii süntaks tavaliselt printf () on mis iganes teie tegeliku füüsilise line, mida soovite lisada, et täisarv, sa seda sümbolit seal, protsent sümbol, välja tüüpi muutuja, mida soovite. Nii et kui vanus on täisarv. Nii et sa lähed hulka % i, sest see on täisarv. Ja siis pärast avalduses, sa lähed teha koma ning muutuja nimi. Nii et siin me läheme printida välja, Tere, minu nimi on Andi, ja ma olen tühi aastat vana. Hashta-- või sorry--, Vanus iganes ma sisend. Nii et kui ma oleksin sisestada 20 minu GetInt () siin see välja printida täpselt sama asi. Aga, kui ma tahtsin sisend midagi teine, nagu võib-olla 40 või 45, siis sa näeksid, et kajastatud Seega kood. Nii et see on näide midagi, milles ta prindib välja ja tundub, et sa nagu see on sama asi, aga all kapuuts arvuti seal on tegelikult väga erinevaid asju juhtub. Cool. Hästi. Mis siis, kui me tahame mitu muutujat? Päris lihtne. Sama asi. Meil on ka uus funktsioon siin nimetatakse getString (), samuti hõlmatud CS50 raamatukogu et kõik see on kiire kasutaja Rea, mis on lihtsalt märkide, nii nagu lause või nagu nimi. Nii et sel juhul oleks meil kaks kohatäitjaid% s jaoks string ja% i täisarv. Ja me ei kavatse järgida et kahe muutuja soovime lisatud, et et nad esinevad lauses. Nii näiteks, minu nimi on tühi, ma tahan nimi seal, nii et ma lähen kõigepealt nimi. Ja siis hiljem, ma tahan vanus, tahad olla vanuses teine. Ja nii kui ma tahtsin sisend, Tere Minu nime Andi, ja ma olen 20 aastat vana. Kui ma sisestatud Andi ja 20 ettenähtud täpselt sama asi oleks printida; aga nüüd on meil kaks salvestatud muutujate nime, samuti int. Jah. SPEAKER 8: Kas oleks võimalik käivitada, kui sa sisse lülitatud nimi ja vanus lõpus on? ANDI PENG: Jah. See on tõesti hea küsimus. Nii pikk lugu lühike, ei. Kuna nimi ja age-- mida tüüpi muutuja on nimi? SPEAKER 8: String. ANDI PENG: Ja mida tüüpi muutuja on vanus? SPEAKER 8: Integer. ANDI PENG: Nii et siin on meil kohatäide keelpilliorkestrile ja täisarv, eks? Nii et kui sa olid lülitada need, arvuti ei lähe teada. See saab kontrollida string, ja kui sa püüad anda talle int, see saab olema nagu ootama ma olen segaduses, siis ütles mulle ma peaks olema allotting mälu int. Ja siin, kui ta loodab täisarv ja sa annad talle nime ja string asemel, see on ka kavatse olla väga segane, siis ei tööta täpselt nii nagu sa seda vajad. Nii et siin, nimede ja süntaks on väga oluline koodi käivitamist. Igaüks hea? Jah. Maddie. Maddie: Siin, ma tean, me vaatasime kell näiteid klassis, kus nad küsivad Mis on teie vanus, mis on oma nime. Siin, see oleks see doesn't-- kui me käivitada koodi, see ei küsi seda? Aga sa oleks lihtsalt sisestada kaks arvu ja siis läheks niimoodi? ANDI PENG: Jah, täpselt. Nii et kui sa tahad seda ekraan, sisestage oma vanusest, saate lihtsalt lisada printf () funktsiooni mis ütleb, Palun sisestage oma vanusest, selle kohale. See on hea küsimus. Jah. SPEAKER 9: Niisiis, oleks juba lisatud GetInt () [kuuldamatu]. ANDI PENG: Ei, see tegelikult ei ole. Nii et kõik see teeb lihtsalt küsib tühja ekraani kasutaja sisestada midagi. Kui sa tahad seda, kui sa tahad seda printida välja midagi, mis ütleb kasutajale, nagu, palun anna mulle oma vanus, siis oleks printf (), et ennast. Sest igaüks kasutab seda funktsiooni erinevaid asju, siis võiks ladustamiseks vanusest, siis võiks ladustamiseks aadress, siis võiks ladustamiseks telefoninumbreid. Ja nii see tõesti kuni Teie poisid "individuaalne kasutab mida sa tahad seda öelda. Jah. SPEAKER 10: Niisiis, lihtsalt selgitada, kus sa sisestada nimi ja vanus nii, et see näitab üles koht% s? ANDI PENG: Nagu kasutaja? SPEAKER 10: Jah, meeldib, kuidas ma teha see-- kus ma pane Andi, ja kus ma panin 20? ANDI PENG: Jah. Nii et kui sa olid tegelikult käivitada koodi, Ma tegelikult ei töötab kood, see on lihtsalt praegu siin. Kui ma oleksin käivitada koodi, oleksin kompileerida koodi, et fail, käivitada koodi, ja siis ei oleks lihtsalt olla kahe ruumi minu jaoks sisestada see. Jah. Te näete, kui sa mängid ringi kood ise. Olgu meil läheb liikuma Järgmise osa juurde, mida saadame katab täna. Me läheme üle, mida tingimisi avaldused on. Nii et kui te poisid mäletan ja tagasikutsumise loeng, tingimisi avaldused, kõik nad on on kogum käskude arvuti mis siis, kui teatud tingimus on tõene, teil täita koodi sees, mis seisukorras. Nii Scratch-- sisuliselt suur teema täna on see, et kutid on juba kõik näinud loogika kõike arvab, et meil. Ja kõik me teeme on tõlkimise midagi mis oli väga intuitiivne Scratch ja raske kodeerimine ta arvesse süntaks me kasutame klassi, mis on C. Nii loogiliselt kogu see plokk oli on see, et tükk kood seal. Jah. OKEI. Samuti sattuda, kui ... muidu avaldust, mis on lihtsalt lisatakse kiht keerukamaks kui avaldus kui arvuti võtab pilk selle ja näeb, kui see tingimus on tõene, teha iganes on sees need kaks sulgudes, else-- nii selline nagu vaikimisi, kui see ei vasta condition-- teha. See on nagu teelahkmele. Kui sajab väljas, panin kohta vihma jope, muidu midagi muidu ma ei pane vihma jope. Kas see loogika mõtet kõigile? Cool. Hästi. Nii nagu kõva näide see, et me näeksime C on, kui ma tahtsin luua muutuja nimega kodutöö tundi. Ja kui kodutöö tundi vähem kui viis, ma ütlen Elu on suur. See on imeline. Samas ütlevad võitlus on real-- mis on see, mida me kõik esmaspäeval pärastlõunal kuni Science Hill on Ilmselt teeme õige now-- Sihtrühm: [Naerab] ANDI PENG: Nad kuidas me oleks, tänan teid selle eest. See, kuidas me hardcode Seda C on kui-- Oletame meil on juba tüüpi muutuja int nimetatakse kodutöö tundi siin. Kui kodutöö tundi alla viie printf (), Elu on suur. Pea meeles hoida / n, sest soovid uut rida pärast. Else print, võitlus on reaalne. Kas igaüks aru, kuidas Ma siirdamine selle block sellesse ploki koodi? Cool. Hästi. Nüüd me ei kavatse võtta pilk Mitme Kui avaldusi kokku. Nii Oletame Käesoleva programmi oli meil kiire kasutaja palgaastme. Me Prompt kasutades GetInt () jaoks klass, ning nad sisend väärtus, ja sa tahad kuvada millist hinne nad said. Nii et kui ma oleksin kujundada programmi, ma tähenda tavaliselt kõik meie silmad, 90-100 on A, 80-90 on B ja nii edasi ja nii edasi. Mis viga on tükk kood, et see ei ole seda, mida ma tahan teha. Jah. SPEAKER 11: Need on alumine piir, kuid neil ei ole ülemist piiri. ANDI PENG: Täpselt. Kas kõik kuulsid, mida ta ütles? Seal saab olema ülemine piirangud, mis ei ole madalam piirid. Vabandame, teistpidi, alumine piir ei ole ülemist piiri. Nii soovite võtke torkehaav at öelda Mis oleks trükitakse see ekraan kui ma käivitada koodi. SPEAKER 11: viga? ANDI PENG: viga? Hea arvan, ei ole päris õige. Kas keegi on veel stab? Jah, Aaron. AARON: Kui paned midagi suurem kui 90, see näitaks kõiki klassid sul. See näitaks, et sul on A, sul on B, siis sai C. ANDI PENG: Jah. See on täpselt õige. Nii, et tahaks olla imeline. Kuid need teineteist eksklusiivne, ma arvan. Kui ma oleksin käivitada tükk kood. Ja siis ütleme lihtsalt, ma sisestatud klass 95. Nii 95 on nüüd salvestatud int nimetatakse hinne. Ja nii C on keel mis kestab kuni ülevalt alla, nii see läheb alati eel alt. Nii see läheb siia, lugeda, kui hinne on suurem või võrdne 90, printf () sa said A. Hea, ma on 95, mis on suurem kui 90. See saab printida, Ma sain A. See läheb võtta pilk see, kui see läheb öelda, hästi 95 on ka rohkem kui 80, see saab printida sa sain ka Sai B hüüumärk, ja nii edasi ja nii edasi. Nii nagu me kõik näeme, see on tavaline viga mis võib juhtuda, kui me oleme kirjalikult koodi tähelepanu pöörama. Igaüks, mis tahes küsimustele miks see juhtus? Hea. OKEI. Niisiis, kuidas me seda parandada, on ilmselt järgmine loogiline küsimus. Noh, meil on need ilusad asju nimetatakse, kui teine, kui teine kui muud avaldused. Nii näed, kui sa tahad muuta, et probleem, sa tahtsid teha iga tingimused välistavad üksteist, siis oleks lisada teine ​​..., kui avalduse. Ja need on course-- mõtle neid redelid, või nagu pulkade kohta ladder-- võite lisada nii palju neid kui tahad nii palju tingimusi, kui soovite. Nii et siin, kui ma sisestatud hinne olema 95. Kui klass on suurem kui 95, printf (), sain A. Hea. See saab näha muidu ... kui ja see läheb tea, Oh ei, Ma juba teostatud esimest muud. Ma sead ühendit väljakirjutada või esimese kui-- ma tean, et Ma ei pea vaatama ühtegi neist sest üks neist on juba õige. Nii see läheb kulgema ülevalt alla. Niipea kui esimene on tõsi, siis see läheb vahele üle kõik ülejäänud on teine ​​... ifs. Kas see on mõtet? Niisiis, sel viisil on teil eri kontroll ja niipea, kui üks neist on väär, Ülejäänud on ka, et nad isegi ei vaadata. Cool. Hästi. Nii et see on näide teist omamoodi tingimisi avalduse näeme harvemini, kuid me näeme neid ja neid kasutada. Ja nad on sageli rohkem tõhus teatud juhtudel. Nii et meil on, mida nimetatakse lüliti avalduse. Nii enne kui me katta Mis muud avalduses, if ... muidu avalduse. Siin on, mida on nimetatakse switch väited. Nii et kui me kasutame lüliti avaldused on võti? Nii lüliti avaldust, siis Tavaliselt tüüpiliselt tegelikult te võib ainult sisend täisarvud oma muutuva et loed. Nii et kui ma tahtsin vaadata kui teatud number-- näiteks klassi, kui ma sain 90. Ma tahan, et näha, kas see on A, B või C. Ma võiks olla tegu. Kuid juhul on olla teise konstantne. Nii selles mõttes lüliti avaldus võib ainult kontrollida võrdsust kaks numbrit. See ei kontrolli midagi muud. Nii et midagi väga ettevaatlik, kui te kasutate seda. Nii et siin, kui ma tahtsin vaadata kui minu hinne 90 on võrdne 90 või 80 või 70 või 60, ja seejärel printida vastava klassi, Ma saaks kirjutada, et kaasa ülemineku avalduse. Nii see läheb siia, kontroll on Selle täisarv konstanti? Kui ei ole, siis läheb vahele. Kas see on võrdne konstantse kaks, ja nii edasi ja nii edasi, kuni jõuad vaikimisi kui keegi neist on võrdsed. Niipea kui üks neist on määratud olema võrdne, see saab seda teha koodirida ja murda. Mis tähendab, et see läheb tabanud, et joosta, murda, ja lihtsalt täiesti vahele põhja koodi. Nii selles mõttes selline funktsioonid nagu kui teine, kui mujal kui kasumiaruandes. Nii et siin on konkreetne Näiteks kutid. Nii Oletame, et ma tahtsin luua muutuja nimega aastal asutatud. Ja ma tahan, et paluda kasutajal sisestada aastal, et nende koolis on asutatud. Nii et ma ei luua lüliti avalduses siin. Ja ütleme nii, ma sisend 1636. See kood Siin näeme lüliti aastal asutati mis võrdub 1636. See saab näha juhul 1636, oh neid on võrdsed, printf () Kas sa ei peaks olema et kooli kuni põhja? Sest me eeldame, et nad ei ole minna siin, kui nad lähevad Harvard, murda ja jätka lõpuni. Kui ma sisend 1701, mis Eeldan kõik meist sisend, oleks vahele Sel juhul tulevad alla juhul kaks, mis on 1701, ja print Tere tulemast Yale! Break, jätka lõpuni. Else siis ilmselt võtavad seda loomulikult Internetis, kus case-- awesome teretulnud to Yale-- see läheb minna vaikeprindikuvarite, Tere internetis! Ja murda. Jah. SPEAKER 12: Kas te kasutate muud asemel vaikimisi olemas? ANDI PENG: Ei, sest nii, et kogu see funktsioon Lüliti on ehitatud, süntaks sa vaja kasutada on juhtumi puhul vaikimisi. See on nagu siis, kui teine, kui see üks on see juhul juhul vaikimisi. Jah. SPEAKER 13: Sa võibolla juba öelnud, kuid võite on rohkem kui kaks juhtumit? ANDI PENG: Jah, sa võid on nii paljudel juhtudel kui soovite. Mõtle seda lihtsalt meeldib lõpmata lisades kohta. SPEAKER 14: Kui te vahetusega 1701 koos 1636, see ei ole tegelikult teevad vahet õige? See on lihtsalt kavatse kontrollida seda. ANDI PENG: See on tõesti hea küsimus. Ja me puudutada Selle hiljem, kuid ainult tean, et see lüliti Avaldus on infinitely-- see tõhusam kui seda ja kui muud kui, sest see toimib kasutada teist tüüpi funktsioon, mis saate, et sisuliselt, vaid hüpata otse Kui sa pead olema. Jah. SPEAKER 14: Cool. Tänu. ANDI PENG: Jah SPEAKER 14: Ja sa ei saanud teha juhul näeb ja suurem. ANDI PENG: Ei Nii, see on, mida on piirates kohta lüliti avaldus on, et teil on on konstandid vaid ainult täisarve. Jah. OKEI. Nii et see on midagi, mida sa poisid satuvad vähem sageli, aga ma tahtsin tutvustada selle puhul. Meil on siin, mis on nimetatakse kolmekomponendiliste operaator. Kus Sisuliselt on see justnagu kui avaldus koondatud ühte rida. Siin, ma lähen reale, on Järgmine, sest see on lihtsam näha. Nii et me kõik oleme näinud seda õigust? See on üsna lihtne järgida. Kui ma tahtsin teha muutuja nimega string nimega s, kui teatud arv Ma annan alla 100, ma soovite määrata madal string, muidu ma tahan anda kõrge. See siin teeb täpselt sama asi need kaheksa rida koodi teevad. Nii et siin ma tahan luua muutuva string. Ja see on tingimus, ma olen kontroll-, kui number on väiksem kui 100, siis määrata väärtus madal, muud määrata väärtus suur. Need slaidid on võrgus, ei muretse kui te poisid ei saa seda maha. See on lihtsalt lihtsam viis, rohkem Tõhusama kirjalikult koodi. OKEI. Nüüd me ei kavatse sisestage mida, et enamik inimesi on nagu väga, väga segane asi mõelda alguses. Silmus osa. Nii et täna me ei kavatse rääkida umbes kolm liiki silmuseid. Me läheme alustada samas loop, siis räägime do samas silmus, ja siis räägime jaoks silmuseid. Nii et sisuliselt selgitatud, võib visuaalne õppijad seal, meil sisuliselt graafiline kirjeldus sellest, mida samas silmus teeb. Nii programmeerimiskeelt, siis algab ja sisestage loop teatud hetkel. Sa kontrolli tingimus. Ja kui tingimus on tõene, teil täita koodi sees. Ja sa tuled tagasi ringi ja te vaadata. Kui see on ikka tõsi hoiate töötab See kood ümber ja ümber ringina. Kuid teine, et tingimus muutub vale, sa lähed murda ja lõpuks silmus. Ja see on sisuliselt süntaktiline sa lähed kasutada. Kuigi teatud tingimus on tõsi seda teha, kui see ei ole tõsi, sa lähed jätka lõpuni ja liigu edasi oma programmi. OKEI. Kas keegi on näiteks mida võib potentsiaalselt juhtuda kui üritan käivitada tükk kood? Muide, SAJ-- see Scaz, Andi, Jason-- me allkirjastamiseks meie e-kirju, Armastus, SAJ. See on meie. OKEI. Igaüks on näide, või on idee, mida see printida? Kind of konksuga küsimus. Nii et siin, mäletad seisukorras me kontrollimine on samas tõsi. Niisiis, kui see on tõsi, et see on trükkimineku, ma armastan SAJ! Kas on olemas punkt, kus olime muuta midagi teisiti? No, eks? Nii siin, meil on tekkinud, mida on ilmselt hakatakse pealtkuulamise palju Teie programmide lõputu silmuse. Leiad, et kui sa käivitada tükk kood, see on lihtsalt läheb hoida trükkimine, ma armastan SAJ! Kuigi me hindame toetust, me ei taha oma arvutit crash, sest sa hoida trükkimine Ma armastan SAJ! Nii et palun, palun, vältida lõputu silmuse sest see ei saa kunagi hinnata vale ja sa ei saa kunagi lahkuda loop. Ja sa lähed imeda igavesti. Cool. OKEI. Teist tüüpi loop Me räägime täna on do samas silmus, tee samas loop. Ja seda nimetatakse do samas loop sest sa oled do ja samal ajal. Nii et see on üsna sarnane, samas loop, kuid natuke erinev. Siin sa lähed tegema iganes on sees selle samas teatud tingimus on tõene. Nii et kui ma oleksin C ja arvuti ma olen allakäik see tükk kood, Ma heita pilk peale. Käin C, ma ütlen seda asja teha. Ja siis ma kontrollin, kuigi see On tõsi, ma pean seda kordama. Aga see on vale, siis ma liigun edasi ja ma ei lähe kunagi tagasi, et loop uuesti. Kas keegi oskab võtke torkehaav millise erinevuse vahel see loop ja üks me lihtsalt vaatasin oli praktiliselt. Jah. SPEAKER 15: seisund tuleb pärast, mitte varem? ANDI PENG: Täpselt. Nii ta ütles seisukorras tuleb pärast, mitte varem. Lõppkokkuvõttes vahe detaili ja samas silmus on see, et sa oled lihtsalt kavatse teha iganes on sees, olenemata kas teie haigus on tõsi, ja seejärel kontrollida seisukorras. Nii et kui sa oled always-- sel viisil, sa oled alati hoolitsedes iganes on sees jookseb vähemalt üks kord enne kontrollimist, kui sa tahad seda uuesti jooksma. Ja siin on näide ja kui me seda kasutada. Nii näiteks, kui ma tahtsin olla tüüpi muutuja int nimega vanusest, ja ma tahan, et paluda kasutaja oma vanuse kohta, Ma lähen tegema printf () Mis on su vanus? vanus = GetInt (), mis annab märku kasutaja. Ja mõned inimesed on tõesti tüütu. Ja sa ei taha vigu oma Programm keegi sisestanud nagu, oh ma olen negatiivne 4 aastat vana või mis iganes. Millisel juhul, kui nad seda teha, seda hindab true, mis tähendab, et ma lähen on hoida läheb tagasi ja tee seda. Nii see läheb, et hoida re-õhutusel kasutaja teile nagu tõeline Vanus number ja see on läheb edasi minema tagasi ja redoing seda, kuni nad sulle tõeline vanus suurem kui üks, või mitte null. Nii vihjata, vihje. See on väga, väga kasulik mõne oma pset probleeme. Jah. SPEAKER 16: Oih, vabandust. ANDI PENG: Yep. SPEAKER 16: Kas on, ei olema sitapea, Aga-- ANDI PENG: Ära muretse. SPEAKER 16: --are seal erinevad reeglid siin või sa lihtsalt unustada panna tsitaat? ANDI PENG: Oh Yeah. Vabandame, see on täiesti minu halb. See oli kindlasti peaks olema tsitaat. Hea saak. See ei tööta. OKEI. Nii viimase tüüpi loop räägime umbes ja lõpuks liiki kõige keeruline on silmus. Ärge muretsege, kui te ei tean, mida see tähendab. See on päris segane alguses. Me läheme üle näiteks. Kõik, mis juhtub jaoks silmus on see, et teil on kolm avaldust et sa lähed hulka. Nii teatud asi, sa oled läheb initsialiseerida muutuv. Sa lähed, et lisada tingimus mis see loop hoiab töötab. Ja siis lõpus on loop, sa lähed, et uuendada. Võite uuendada muutuja mida soovite jälgida. Nii me tavaliselt kasutada jaoks silmuseid, kui me taha otsa silmus jaoks teatud summa korda ja me juba teame, Oh ma tahan see loop täita nagu 10 korda siis do-- ma lähen üle näiteks järgmisel lehel. Nii et siin näiteks Scratch, kui te tahtsin midagi korrata 10 korda kõik, mida oli öelda oli, korrata 10 korda Ma armastan SAJ! mis on vastuvõetavam Näita toetuse juures mitte lõputu silmuse. Siin, kuidas oleks Üleminek C ja kirjutada mis on int-- ma luua või Kinnitan tüüpi muutuja int nimeks i. Ma lähen initsialiseerida see 0, nii et i = 0; ja see saab olema minu tingimus. Nii i on väiksem kui 10. Ja siis väljatöötamiseni Viimase avalduses sa oled läheb on on ajakohastatud Mis juhtub muutuja i lõpus oma silmus. Nii et see on selline segane, sest erinevates osades see rida toimuvad erinevates liiki silmus. Aga ma lähen üle pseudokoodi näide, et ja äkki seletada lihtsalt natuke parem. Nii siin. See on loop me just nägin. Sisuliselt on pseudokoodi, mida toimub selle programmi, on esimene ma loon i, lähtestamisel 0. Ma kontrollin, et näha, kas i on vähem kui 10, millisel juhul Esmakordselt on sest 0 on väiksem kui 10. Seega silmus läheb jooksma. Ja siis ma lähen printida seda joont. Ja siis lõpuks seda joont, õigus siin, ma lähen tegema juurdekasvu i, i ++ kõik see tähendab, incrementing seda ühe võrra. Nii et ma nüüd on 1. Sest see oli kunagi 0, kui ma juurdekasvu see, et see on nüüd 1. Ja siis ma lähen tagasi algusega silmuse ja ma seisundi kontrollimiseks. Kas tingimus ikka tõsi? Jah, 1 on veel väiksem kui 10. Nii see läheb prindi see uuesti, minna ja siis juurdekasvu i ja kontrollige tingimus pidevalt, pidevalt, kuni sa lõpuks saada kuni punktini, kus i on 10. Sa lähed välja trükkida 10 korda ja siis ma ei kavatse võrdne 10. Sa lähed seisundi kontrollimiseks. Kas 10 alla 10? Ei, see on vale. Nii see ahel ei kavatse joosta, see läheb katki, ja sa lähed jätkata oma koodi. Nii nagu te poisid ei vaata, see on tõesti hea näide loop saate programmi, et kestab määratud summa korda. Iga üks selge? Jah. SPEAKER 17: Kuidas juurdekasvu hüppeliselt, on see erinev kodeerimine? ANDI PENG: Sa can-- läheme üle selle järgmise slaidi. Hea küsimus. Kas anyone-- enne kui ma liikuda nüüd-- keegi üldse segaduses, sest see on tõesti raske mõiste. Ära muretse, kui you're-- OK. Cool. Hästi. Lihtsalt üldine slide. See samas loop teed täpselt sama asi silmus oli. See on lihtsalt kirjutatud erinevalt. Te saate tutvuma slaidid endale sobival ajal hiljem. Aga tean, et seal on mitu kirjutamise võimalused sama asi juhtuma erinevaid silmuseid. OKEI. Nii, nüüd saame ka küsimus, mida kui meil on loop sees silmus. Saame tõelisteks Loomisest värki siin. Kui sa tahad teha asju mitu sisene muid asju et teha asju mitu korda, siis tahavad, mida nimetatakse astmelist silmus. Neile teist, kes esimest näevad seda ja saada väga segaduses, kõik me teeme siin on lasknud silmus, kus meil muutuja rida. Aga sees on meil ka teise for aasa muutuja nimega kolonni. Ja ma väga soovitan teil kõigil kes on segaduses esimese hoida track-- seda klaarida, seda klaarida. Ära püüa lihtsalt põhjusel läbi, seda välja tõmmata. Oma peaga, seda tükk paber või mis iganes, kirjutada järjest jälgida, mida rida on võrdne. Kirjutage veerus jälgida mida veerus on võrdne. Ja jälgida, mida on väljatrükk iga iteratsiooni. Iga iteratsiooni see silmus iga iteratsiooni et suurem loop, muudkui loogika. Ja ma garanteerin teile, sa armastad, mida sa näed, sest see on ka väga kohaldatakse sinu probleem komplekti. Cool. Hästi. Nii et kõige tähtsam et kutid on ilmselt kõik mõtled kohe, on oma Ülesanded 1s, mis on tingitud neljapäev / reedel. Oma water.c programmi vihje sa lähed olema küsiks kasutajalt sisend. Jooksul oma mario.c programmi sa lähed on kasutada pesastatud jaoks silmus, mis on jaoks silmus sees jaoks silmus, prindi ploki püramiidi sisuliselt nagu mida Mario on hüpata kaudu. Ja siis sees greedy-- või ehk Muutuste, kui keegi teile poisid on kunagi kuulnud selle-- sa lähed olema väga ettevaatlik esimene ujukoma väärtusi. Mäleta ujuvad ümardatult ja täisarvud ei ole sama asi. Jälgi, millest üks on mis. Ja sa lähed kasutada tingimisi avaldused, samuti. Olgu, viimane asi. Mul on paar minutit aega. Style. Nii et see on midagi, mis ei ole tegelikult mõjutada tõhusust, või tegelik töö oma koodi. Kuid see mõjutab meid kui Teie klassi õpilased, kui teie lugejad. See mõju ise, kui sa oled püüdes leida probleemile. See mõju loetavust koodi. Nii stiilis, nagu siis, kui sa üritad stiilis essee inglise, kui te ei ole lõigetes, teil on kõik omamoodi segamini koos ühes reas, siis muudab tõesti raske kedagi lugeda oma essees, isegi kui Sinu punktid on loogiliselt heli. Sama asi programmeerimine. Sul võib olla kohutavalt segane kood, mis Scaz katab, ja see saab veel sõita ja funktsiooni. Aga meile, kui armas ajutise töötaja, kes lugemine ja hinnata oma PSets, see ei ole väga kena. Nii et palun huvides meist ja ise, kui sa üritad määrata probleem oma kood, ja sa üritad lugeda oma koodi, et Kindlasti te järgite mõningaid konventsioonid et me läheme üle. Nii esimene. Andke oma muutujad sisukat nimed. Kui soovite salvestada täisarv nimetatakse vanus, siis märkige see vanus. Ärge nime kõrgus. Kui sa üritad talletada vanus kõrgus, see teeb kõike väga segane meie jaoks. Meile ei meeldi segi. Sa ei meeldi segi. Keegi tahab segi. Kui sa lähed, et luua midagi, name it midagi olulist. Kuid silmus, ühe iseloomu muutujad tavaliselt hästi. Ja silmus, kui soovite ainult i, ja j, k, võid vabalt lihtsalt teha. Järjepidev ettekanne. Mida see tähendab? See tähendab, et tehniliselt teoreetiliselt võite alustada ja luua Mitme muutuja samal joonel. Nii näiteks võin luua täisarv nimega scaz_age, ja täisarv nimega andi_age = 20, ja täisarv nimega jason_age samal joonel. Ja ma ei saa ka määrata ainult ühe neid ja mitte teisi väärtusi. Palume palun ära tee seda. Sest siin oled sisuliselt loodud kolm muutujat, kuid ainult üks neist tegelikult on väärtus. Ja siis, kui me üritan lugeda oma koodi, või kui üritad lahendada probleem oma kood, see on väga segane, mida järgida. Nii lihtsalt oma loetavuse jaoks Meie loetavust, ei tee seda. Järjepidev looksulg. Mõnedele inimestele meeldib panna oma looksulg erinevates kohtades. See ei ole tegelikult küsimus. Lihtsalt veenduge, et olete järjekindel oma oma koodi, kus soovite neid ellu. Järjepidev vahe. Kui paned ruumi pärast silmus, alati teha. Ärge lihtsalt meeldib selline seda teha Mõnes kohas ei tee seda teistega. Lihtsalt olla järjekindel. Teiseks, kui keegi soovib tutvuma CS50 Style Guide, meil ametlikult on stiili juhend, mis ütleb teile kõik need konventsioonid, pluss veel. See on online. See on nagu cs50.net/style või midagi sellist. Võite google it. Järjepidevus on võti. Nii et ärge muretsege, mida teised inimesed teevad, lihtsalt veenduda, et teil on järjekindel jooksul oma koodi. Igaüks on küsimusi, mis? Jah. SPEAKER 18: So õige asi teha vormindamise lihtsalt neid kõiki eraldi line, et mida sa räägid? ANDI PENG: Ma harva on seda juhtunud. Aga kui sa tahad, kui sa tahad olla nagu säästa ruumi oma kood, või mis iganes, saad seda teha. Palume, et sa lihtsalt ei saa initsialiseerida üks asi ja mitte teisi. Nii et kui sa tahad teha int scaz_age, int andi_age, int jason_age, et trahvi. Lihtsalt ei saa initsialiseerida üks ja mitte teised on kõik. Küsimused? Hästi. Ma lähen pähe mikrofoni ja laser pointer, ja kumminui Scaz sel hetkel. See on ebamugav. Siin see on. BRIAN SCASSELLATI: Aitäh. Kuidas see heli? Heli on hea? . Suurepärane. OKEI. Nii, hi everyone. Ma lähen, et proovida läbi töötada Praktilise näitena teiega. Ja me ei kavatse kasutada CS50 on arenduskeskkond, mida nimetatakse Integreeritud arenduskeskkond. Ja sa oled näinud seda demonstreeriti loeng. Ja Ülesanded 1, sa oled läheb on võimalus seda kasutada, ja mängida seda ja harjuda seda, sest me ei kavatse seda kasutada läbi ülejäänud poolaastal. Nii et IDE, teil on, mida näeb nagu väga traditsiooniline failibrauseri Üle ühel küljel. Sul on osa üles Kuhu sa lähed näha oma lähtekoodi, oma Cfile, koodi, mis sa kirjutad. Ja alla alt, saate on terminali aknas mis sa kasutad, et nii kompileerida programmi ja joosta või täita oma programmi. OKEI. Nii lihtsalt, et anda meile natuke sihtasutus, et terminali aknas sa lähed olema kasutades kogum käske mis on standard käsud kogu enamik Unix või Linux süsteemides. Ja nii, kui olete kunagi kasutanud igasugune Unix Ubuntu, või mis tahes muu maitseaineid, Nende hakkavad otsima tuttav. Kui sa ei ole, ärge muretsege. Ei ole midagi keerulist neid. Nad lihtsalt kasutada teist süntaks, teist nimetamise konventsiooni kui olete näinud. Nii nimekirja välja failid konkreetses kataloogis, nad ei kavatse kasutada käsu nimeks ls või nimekirja. Kui soovite näha kõike kõik üksikasjad, saate kasutada käsku line argument ls -l. Ja et näitan teile kõike detailsemalt, sealhulgas load Faili. Et muuta kataloogi, saate kasutada cd command. Ja sa pead olema võimeline muutma kataloog nii minna koju kataloogi. See on lihtsalt cd kõik poolt ise, cd kahe dots naaseb sind üks tasandil oma eelmise kataloogi. Ja saab ka cd kuni alamkataloog kirjutades cd ja nime, et alamkataloogi. Võite luua ka uusi katalooge. Ja me läheme jalutama selle kaudu vaid mõne minuti. Aga lihtsalt panna kõik ekraanil. Nii et näete neid. Sul on ka võimalus manipuleerida faile otse käsurealt. Sul on võimalik kopeerida neid, et neid liigutada või eemaldada, see tähendab, et tõhusalt, et neid kustutada. CS50 IDE annab teile täieliku võimu käsurea argumente. Ja see tähendab, et saate ka teha väga ohtlik asju. OKEI. Näiteks saate eemaldada või mis on kustutada, faili küsimata kinnitust. Ja võite isegi eemaldada recursively-- see on kriips r flag-- kogu alamkataloog ja kogu selle sisu. OKEI. Nad loetletud punane, sest sa peaks mõtlema "Oht" iga kord sa näed neid asju. OKEI. Hästi. Nüüd lõpuks asju, mis on saab olema väga väärtuslik teile, seal on mõned head nipid teada, kui olete navigeerimise läbi selle terminali aknas. Esimese saate selge ekraan igal ajal kirjutades selge. Ja sa lähed, et näha ma teen seda päris tihti. Võite ka lihtsalt kuvada teksti fail kirjutades rohkem ja siis faili nimi. Siis saad olla võimalik, et liikuda tagasi edasi-, et lihtsalt koos tühiku ja nooleklahve. Kui teil on, nagu me tegime täna loengu, programm, mis töötab pidevalt lõputu silmuse, siis saab peatada, et programmi alates täidesaatva kirjutades kontrolli, mis hoides kontrolli-C. Ja siis võib-olla teha Käesoleva mitu korda. Arvuti saab palju ees. Ja tuleb mõnikord anda talle paar üritab Enne seda tegelikult tulevad. Sul on ka võimalus sorteeri käske et sa lihtsalt kirjutada abil klahvi, nooleklahvi ja siis alla nooleklahvi. Ja mis kõige kasulikum on mitte kirjutades pikki failinimesid, sa pead olema võimeline kasutamise Tab autotäitm mõned juhised. Nüüd me ei kavatse näidata kõik need vaid teine. Nii et kui te ei mäleta neid, ärge muretsege. Need on asjad, mis Sul kiirenemist ja kasutada läheme koos. OKEI. Nii C- erinevalt Scratch-- C on koostatud keeles. See tähendab, et me ei kavatse võtta allikas file-- see on tekst, mida kirjutada, käske, et sa kirjutad, printf () avaldused, silmad, kõik else-- ja me läheme võtta, et fail ja anda see välja et programm nimega kompilaator. Koostaja võtab seejärel et tekst, mis olete kirjutanud ja seda tõlkida binaarne juhiseid et arvuti on tegelikult läheb kasutamine. Seda nimetatakse objekti või käivitatava faili. Kui te vaatate seda pilti, sa lähed näha kood, mis olete kirjutanud. Kui te vaatate seda pilti, sa lähed näha juhuslik märgijada et ei ole mõtet üldse. Seda sellepärast, et see on binaarne. See ei tähendanud, et teil oleks lugemist. Kuid iga kord, kui soovite käivitada midagi, mida sa lähed töötavat on selle objekti fail. Nii et kui me töötame nende faile, me kirjutada faili C. Saadame kompileerida, kasutades käsk nagu make mis viitavad koostaja rõkkama jaoks C-keele. Ja et hakkab tootma objekti esitada, nagu välja, või antud juhul, nime, minu faili, et ma olen panna. Hästi. Nii saab tegelikult proovida seda. Nii et ma tulid välja näiteks mida ma tahtsin proovida. Ja üks asi, mis paelub mind on animatsioon. Nii et me läheme püüdma teha natuke animatsioon kasutades ainult ASCII tähemärki. Tegelased saame välja trükkida hõlpsasti nüüd. Nii et siin on mu parim katse luua teile animatsioon jänku kulgeb läbi pika rohu. Seal ta ongi. OKEI. Nii ta veel ei tööta, kuid ta on seisis seal kõrges rohus. Nüüd, kui ma animaator, vanas koolis versioon animatsioon, mida ma teeks on mul toodaks Pildi Selle jänku muru. Ja siis ma toodaks teise picture-- teine, mida nad nimetasid cell-- et oli jänku vaid veidi liigutada. Ja siis kolmas, mis oli jänku liikus natuke edasi. Ja ma annaks terve järjestust nende rakkude. Mõned, kus jänku on üle peale vasakul pool. Ja siis liigub aeglaselt, üks ühe poole keskel. Ja siis keskelt üle paremale. Ja kui ma siis tõesti õnnelik, ma võiks kokku panna ja ma võiks nende tööd. Ja seal on minu jänku kulgeb läbi rohu. See on minu suur PowerPoint trikk päev. OKEI. Nii et see on nii hea, kui ta saab. OKEI. Nii, siin veel üks kord, siin on meie bunny kulgeb läbi rohu. SPEAKER 19: Jälle. BRIAN SCASSELLATI: Üks rohkem aega, eks. Seal on oma jänku. OKEI. Nii et täna me läheme tegema, on me läheme proovida automatiseerida protsessi tootma need rakud. Me ei ole päris saada kuni punktini on võimalik panna need kõik kokku. Aga me ei kavatse proovida automatiseerida tekitamise protsessis selle järjestuse. Ja seda on palju, mida animatsioon täna on nagu. See tähendab, et sa ei tee asju tingimata juhtides kõike käsitsi. Me kasutame arvuti automatiseerida osad, mis protsessi. OKEI. Nii et lubage mul minna üle nüüd meie CS50 IDE. Ja ma olen loodud us-- ja lase mulle suumida siin natuke bit-- Olen loodud meie jaoks alguspunkt. Iga kord, kui me palume teil istuda maha ja kirjutada tükk kood, mida me tõesti teilt teha on meil küsida, kuidas lahendada probleemi. Ja nii, et sa peaksid mõtle seda tehes on alustades mõned lihtne osa, et lahendus. Ja siis ehitada välja, et osa. Ja see, mida me teeme täna. Nii et pigem üritab korraga kirjutada kogu kamp kood, mis on läheb toota neid 10 animatsioon rakud, me ei kavatse hakata asemel üks tükk, mis töötab. Ja siis me ehitada natuke ümber, et ja natuke rohkem ja natuke rohkem. Nüüd hea asi probleemide lahendamisel nii on see, et see võimaldab teil alustada alati midagi, et sa tead töötab ja tutvustada üks järkjärgulise muutumise. Ja see on suurepärane võimalus õppida, kuidas kodeerida, sest iga kord, kui teha muutus, sa näed, mida see avaldab. OKEI. Nii et siin on meie lähtepunkt. OKEI. Nii alguses minu faili Olen hash #included stdio.h. Ongi nii, et ma saan printf () funktsiooni töötada. Siis on mul põhiülesanne. Ja see ikka tundub veidi kauge või varjavad mõned teie seast. See on OK. Kõik see ütleb, et põhifunktsioon võtab no arguments-- tühine vahend midagi C. Ja see tagasi kokkuleppeliselt täisarv. Main naaseb alati täisarv, tavaliselt koodi öelda asju läks hästi või ei lähe hästi. OKEI. Aga peamine on olla, et moodustavad meie jaoks praegu. Olen siis panna kolm rida koodi. Ja koos iga rida kood, ma panin kommentaari. Nüüd üks asi, mis Me nõuame, et te teete, ja see on nii oluline programmeerimise tava, on alati kommenteerida oma koodi. Alati kirjutada mõnes Inglise kommentaar midagi mis te arvate kood peaks tegema. Nii, hiljem, kui sa tuled tagasi see saab seda vaadata ja võib öelda, oh, ma mäletan, mida ma olin püüame teha seda. Või kui TA istub koos teiega proovin aidata teid tööaega, nad ei vaata seda ja minna, ma vaata mida sa üritad teha, vaid see on Mis tegelikult juhtub. OKEI. Nii et ma sain kolmest osast oma kood, Ma lähen kõigepealt print välja mõned punktid alguses. Ma siis välja printida minu väga fancy jänku. Ja siis mõned natuke dots lõpus. Ja need kolm print avaldused peaksid sulle tuttavad sel hetkel. Kõik, mis ma teen on igaüks neist on Ma olen väljatrükk märgijada. Pole muutujaid kaasatud. Kõik on lihtsalt lame. OKEI. Nii et kui ma lähen alla oma terminal-- Vaatame, kas ma saan selle tagasi out-- ja ma lähen kirjuta uuesti selgeks. SPEAKER 20: Kas me kasutame topeltkaldjoon kommenteerida? BRIAN SCASSELLATI: Kas kasutada double-- jah. Seal on mitu võimalust kommenteerida C. Üks võimalus on kasutada topeltkaldjoon. Teine võimalus on kasutada kaldkriipsu ja täht ja sulgege tärniga ja kaldkriips. Hästi. Esiteks, ma lähen navigeerimise alustamiseks siinkandis. Nii et kui ma lähen oma koju kataloog, Olen muutunud kataloogid olemas, Ma lähen vaatama ja vaata, mis on selles kataloogis, LS, nimekirja läbi. Ma näen, et ma olen sain kaks alamkatalooge. Teeme seda veidi suurem siin nii, et me kõik näeme seda. Ma näen, et ma olen sain kaks alamkatalooge. Ma muudan kataloog minema tööruumi. Ja ma ainult kirjutada välja osa, ja siis lihtsalt vajuta Tab. Ja siis see lõpule ülejäänud minu jaoks. Fancy. Ma vaatan ja näen tööruumi. Ja just nüüd, ma töötan kohta SuperSection et me õpetamise kohe. Nii et ma lähen sinna kataloogi. Ja lõpuks, otsida ja vaadata. Ja mul on selle faili bunny.c. Kõik õige, lubage mul veel kord selgeks. Ja ma lähen now-- jälle ma olen jäädes selles kataloog ja see ütleb mulle, et ma olen et SuperSection kataloogi. Ma lähen edasi minna ja teha oma programmi jänku. Ja see käsk, et jänku, samas kõlav natuke veider, viitab samuti rõkkama koostaja. Ja see on toodetud minu väljund on käivitatava funny-- käivitatava faili nimega jänku. OKEI. Võin siis, ja see kõlab veel hullem, teostada jänku. OKEI. Ja vaatame, mida ta teeb. OKEI. See on natuke mida ma ootasin. Mul minu jänku pilt olemas, aga ma mingi tahtsin seda kõik ise. Mida ma igatsen? SPEAKER 21: Slash l või kaldkriips n. BRIAN SCASSELLATI: Slash n. OKEI. Nii lähme tagasi siia. Ja ma saan välja, et. Ja ma lähen tagasi selle ühe. Ja olgem vaatleme nüüd minu peamine ülesanne siin. Mida ma peaksin tegema? Ma tahan lõpetada line. Nii et ma panen oma kommentaar. Ma panen oma printf (). Ja mida ma pean panna? / n. OKEI. Mida ma pean lõpetada see? Semikooloniga. Hästi. Nüüd üks tõesti olulised asjad on veenduge Iga kord, kui teha muutusi oma koodi, et salvestage see. Kui sa ei ole salvestanud koodi, sa oled läheb teade vähe star seal. Ja seda tähte ütleb teile ei ole salvestatud selle koodi. Kui ma kompileerida kohe, et see ei ole läheb, et kajastada nende muutuste, sest kompilaatori vaadeldakse faili see on kettal, mitte faili, mis on avada oma toimetaja. Hästi. Nii saab salvestada ja siis me läheme otse siia, uuesti tagasi tulla. Tule minu terminal. Ja olgem selgeks ruumi jälle. Ja me võime minna ja veel üks aeg teha meie jänku programmi. Ja täita jänku. See ei aita. Vale kaldkriipsuga. Nii et kui te vaatate mida mul, panin / n seal, kuid mul oli vale kaldkriipsuga. Kõik, mis sinu arvutis Kas on väga selgesõnaline. OKEI? Üks väike viga kirjavahemärkide ja äkki sa ei saa, mida sa tahad. Hästi. Nii saab suurendada tagasi jälle. Me läheme tagasi. Noh teha, et väga kiire remont. Me paneme õige kaldkriips. Hoiame seda. Me suurendamiseks tagasi. Mingil põhjusel, et ei ole õnnelik, kuid olgem minna ja me läheme tagasi terminal siin. Selge see üles. Me suurendada. Ja veel üks kord, teeme jänku. Ja nüüd jumala eest, see toimib. Hurraa. OKEI. Nii proovime teha seda natuke üldisemat. Vaatame, kas selle asemel, et lihtsalt printimist ühe konkreetse raami, Vaatame, kas me saame seda nii et me saame kõik 10 nende animeeritud raamid et me tahtnud. Nii jälle, võtame see samm korraga. Vaatame kõigepealt üldistada seda, ei nii et ma teen kõik raamid, aga nii et ma mõni jooksul, et ma tahta. Mis vahet seal on vahel raamid? Kas jänku sama? Sihtrühm: Jah. BRIAN SCASSELLATI: Jah. Mis vahet seal on? Sihtrühm: Position. BRIAN SCASSELLATI: Tema seisukoht, eks? Ja kuidas ma kontrollida oma positsiooni? Mitu punkti ma olen pannes alguses ja kui palju dots ma olen pannes lõpus. Pidin viie aasta mis algab ja viie lõpus. Olgem asendada, et viis, mille jaoks silmus. OKEI. Ja ma lähen luua jaoks loop nüüd, et läheb öelda, Ma lähen printida mõned number Punktide alguses. Ma lähen kasutada muutuja. Oletame, kuidas ma nagu leti minu loop. Ja ma lähen kuulutada up top. Ja siis silmus Mul on vaja teha kolm asja. Esimene asi, mida ma pean tegema on mul vaja initsialiseerida i. Mida ma peaksin initsialiseerida tal alustada olla? 0. OKEI. Siis ma pean ütlema, millised on lõpetamise tingimus? Kui ma peaksin lõpetada? Noh, kui palju punkte, sa soovite printida see üks? Sihtrühm: Viis. BRIAN SCASSELLATI: Viis jälle? Kuidas teeme midagi erinevad, me tegime viis. Näidake, et see on erinev. SPEAKER 22: Kaks. BRIAN SCASSELLATI: Kaks. OKEI. Nii et kui ma tahan kaks punkti, mida ma peaksin siin? Sihtrühm: Kolm. BRIAN SCASSELLATI: Kolm. OKEI. Mitu korda on see, et lähe läbi? See läheb läbi minna kolm korda, 0, 1 ja 2, eks? Olgu, lähme tagasi alla kaks. Nüüd saad kaks punkti. Ja mida ma tahan teha iga kord, kui ma minna läbi silmuse? Mida peab muutuma Iga kord, kui ma läbi minema? SPEAKER 23: Lisa dot. BRIAN SCASSELLATI: Mul on hoida läheb. Ma lähen lisada dot. Ma lähen printida dot, iga kord läbi silmuse. Aga kuidas ma jälgida, kuidas mitu korda olen olnud läbi silmuse? Ma kasutan ma, et varieeruv, et counter. Nii iga kord läbi, ma lähen to juurdekasvu counter üks. Nüüd, see on sama mulle öelnud i = i + 1. See on OK. Ma ei suutnud seda teha selle-- Mulle meeldib stenografist, nii et ma lähen ütlen i ++. OKEI. Teeme sama asi siia alla allosas. Ainult ma mingi tegin seda. Ma lähen teile poisid Selleks üks täielikult. Hästi. Mida ma peaksin siia kirjutada? Siin on minu jaoks silmus. Ma lähen tegema printf () ja ma lähen teha seda nii, et ma ainult printida ühe dot kohta, et alt. Mida ma peaksin kirjutama sees jaoks silmus nüüd? Noh, esiteks, mida muutujad tuleks kasutada? SPEAKER 24: j. BRIAN SCASSELLATI: ma võiks kasutada j. Kas ma saan kasutada sama üks? Kas ma saan kasutada i jälle? Jah. See on OK, sest Is et ma kasutan siin, Ma ei pea neid uuesti, kui Ma pikali selles küsimuses. Mida ma peaksin initsialiseerida i? SPEAKER 25: 10. BRIAN SCASSELLATI: 0. Mida ma peaksin kontrollima? Mitu punkti ma pean nüüd lõpus kui mul kaks punkti alguses? Mul on vaja kaheksa lõpus, nii et mida peaks ma kontrollin, i vähem than-- Sihtrühm: seitse, kaheksa, üheksa. BRIAN SCASSELLATI: Kuulsin seitse. Kuulsin kaheksa. Ja ma kuulsin üheksa. OKEI. Nii et me kõik õiges ball-- Jason ütleb 10. OKEI. Kui mul on vaja kahte punkti eest esimene, kui palju teha I-- ja ma pean kaheksa punkti jaoks viimase one-- panin kaks kuni eespool Mida ma peaksin panema alla? Sihtrühm: Kaheksa. BRIAN SCASSELLATI: Kaheksa. Sest see läheb loe nullist seitse. Ja see on kaheksa korda läbi silmuse. OKEI. Ja mida ma pean tegema lõpus? Sihtrühm: i ++. BRIAN SCASSELLATI: i ++. Hästi. Nii et otsib päris hea seal. Proovime seda ja vaatame, mida ta teeb. OKEI. Nii et me läheme seda salvestada. Kena ja salvestatud. Me taas vähendamiseks. Me proovime siin terminal. Me suurendada. Oops. Saadame, veel üks kord, teeme jänku programmi. Ja minna ja täita jänku. Ja siin see on. Nii et meie jänku. Kui on kaks punkti alguses ja kaheksa dots aasta lõpus. Igaüks ikka minuga? OKEI. Nii me ehitasime üles. Ehitasime ühe jänku, ühe konkreetse raami. Nüüd oleme suutnud üldistada, et ehitada rohkem, erinevaid raame. Nüüd lähme edasi, ja on see tekitada mitte ainult üks raam, kuid olgem luua 10 raamid, kus me aeglaselt teha jänku liigutada kõik Muide üle põllu. Hästi. Lähme tagasi. Ja püüame nüüd. Mida ma tõesti vaja muuta siin? Mida mul on vaja muuta? SPEAKER 26: pead kõigepealt arvu muutmiseks dots maksimaalne alguses. Sest kui me teeme 10 punkti, see läheb vaja kuni skaala. BRIAN SCASSELLATI: Jah. Nii kohe Mul on see omamoodi riistvaralist alati teha kaks punkti alguses ja alati teha kaheksa dots lõpus. Ma tahan ehitada teise silmuse, eks? Sest ma ei taha ehitada vaid üks jänku pilt, Ma tahan ehitada 10 jänku pilte. Nii et ma vaja ehitada veel üks silmus, ja kui ma lähen läbi selle kontuuri, Ma tahan muuta, kui palju dots printida alguses ja kui palju dots printida lõpus, mille põhjal tsükkel läbi silmuse Ma olen. Hästi. Nii lähme teise counter. Keegi enne ütles j, nii teeme teise j. Ja nüüd, me ei kavatse ehitada teine ​​silmus. Mis läheb sees, et loop? See kraam on minna sees silmus, eks? Kas jänku on minna ahela sees? Kas ma pean jänese iga nimetatud 10 kaadrit? Sihtrühm: Uh-huh. BRIAN SCASSELLATI: Jah. Ma tahan jänku igas 10 kaadrit, eks? Kuidas oleks dots Lõpuks ma pean seda? OKEI. Nii et ma lähen taandama kõik. Ma lähen esile kõik seda ja ma lähen tabas Tab. Ja see läheb sundida neid üle natuke, nii et see on lihtne minu jaoks vaata mida silmus. Ja siis ma seda lõpetada. Oletame. OKEI? Nüüd, see silmus, mis Ma olen building-- Oih, teha, et nii saate see-- Mul minu counter j. Ma hakkasin seda 0. Mitu korda ma tahan minna läbi selle silmuse? Sihtrühm: 10 korda. BRIAN SCASSELLATI: 10 korda. Mis number ma peaksin siin? Sihtrühm: 9, 10. BRIAN SCASSELLATI: 9, 10, keegi ju öelda 11, eks? Tahtsin kaks dots enne ja panna i väiksem kui 2. Tahtsin kaheksa punkti, Panin i alla 8. Nüüd ma tahan minna läbi 10 korda, nii ma panin j vähem than-- Sihtrühm: 10. BRIAN SCASSELLATI: 10. Seal me läheme. Ja mida ma pean tegema lõpus j? ++, Juurdekasvu ta. OKEI. Nüüd, siin on keeruline osa, mis on juhtub just nüüd, kui ma seda teen? Kas ma printida 10 kaadrit? SPEAKER 27: Ma arvan, et nad kõik on sama. BRIAN SCASSELLATI: nad kõik sama, eks ole? Kuna need kõik on ikka veel panna kaks punkti alguses. Aga ma ei taha neid kõiki on kaks punkti alguses. Mitu punkti ma tahad alguses? Sihtrühm: Muutuv. BRIAN SCASSELLATI: Ma tahan seda muuta, eks? Mida ma pean siin, et muutuvas Iga kord, kui silmus läbi läheb? Sihtrühm: arv dots, j. BRIAN SCASSELLATI: j, arvu punkte. Nii et ma ei muuda see on j. Esimest korda läbi loop, mis see saab olema? Mida ma seada j juures esimesena? Sihtrühm: 0. BRIAN SCASSELLATI: Kui palju korda ma kavatsen seda teha? 0. Teist korda läbi silmuse, j on saab olema 1, sest ma juurdekasvu ta. Mitu punkti ma nüüd välja printida? 1. Kolmas kord läbi silmuse, kui palju dots ma nüüd välja printida? Sihtrühm: Kolm. BRIAN SCASSELLATI: j saab olema 3. Mitu punkti ma nüüd välja printida? Oh, vabandust, j saab olema 2. Mitu punkti ma nüüd välja printida? Sihtrühm: 2. BRIAN SCASSELLATI: 2. OK, nii et ma lähen hoida incrementing et kui me läheme mööda. Kuidas allapoole? Mis loojub siin? Ma ei taha 8 alati lõpus enam? SPEAKER 28: 10. BRIAN SCASSELLATI: Ma tahan 10 punkti? Ma tahan seda muuta ka. Niisiis, kuidas ma tahan seda muuta? Sihtrühm: [kuuldamatu]. BRIAN SCASSELLATI: Noh, kui ma on viis punkti alguses, kui palju dot s ma saan lõpuks? Sihtrühm: Viis. BRIAN SCASSELLATI: Kui mul on Kuue dots alguses, kui palju ma saan lõpuks? Sihtrühm: Neli. BRIAN SCASSELLATI: Kui ma sain seitse dots alguses, kui palju ma saan lõpuks? Sihtrühm: Kolm. BRIAN SCASSELLATI: Kui ma olen sain j dots alguses, kui palju ma saan lõpuks? 10-j. OKEI. Nii proovime selle välja. Nii et ma lähen, et päästa meie jänku programmi. Taas anname välja suumida. Me läheme meie terminal. Me selge see. Ja suumida. Me teeme jänku programmi uuesti. Ja me käivitada. Uh-oh. Oota, lähme välja suumida. Kas ma saan 10 kaadrit? Noh, kui palju bunnies ma näen seal? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Ma sain 10 kaadrit. Kas nad on kõik sama? Sihtrühm: Jah. Ei. BRIAN SCASSELLATI: Ei See esimene on bunny on palju vasakule. Ja siin, jänku on palju kohta SPEAKER 29: Right. BRIAN SCASSELLATI: Nii mida ma unustada seda teha? SPEAKER 30: Alusta uut rida. BRIAN SCASSELLATI: Ma unustasin alustada uut rida, jälle. Sama viga tegin enne. Olgu, lähme fikseerida seda. Nüüd, ma olen ikka sain koodi seal teha uus liin. Miks ei see toimib? SPEAKER 31: See ei ole sees silmus. BRIAN SCASSELLATI: Oh, see ei ole sees silmus. See on õige. See istub väljaspool siin. Ja silmus on kõike see on sees, et teksti. Nii et ma lähen liikuda Selle sees jaoks silmus. Ja ma Tab selle ees, et näitavad, et see on õiges kohas. Ja nüüd, me salvestada see uuesti. Me suumimiseks. Me üle minna meie terminal. Suumimiseks. Me uusversioon meie jänku programmi. Ja nüüd, nüüd on meil oma 10 kaadrit. [Plaksutamine] BRIAN SCASSELLATI: OK. So. Siin on meie pesitseda jaoks silmuseid. Suutsime tekitada ka sisemine loop mitu dots tahtsin prindi alguses, lõpus. Ja välimine loop kontrollitud kui palju kaadreid olin hoone. Alustasime üks väike kernel probleemi, ja ehitasime välja, et punkti. Hästi. Teeme veel ühe sammu. Oled valmis? On üks asi siin, kus oleme tegelikult selline sai rohkem keerukust kui me vajame. Võtame pilk. Nii meie jänku programmi kui ma välja suumida siin Ma tegelikult teha mõned samad asi ikka ja jälle. Mida teha, et on omamoodi sama asja korrati kaks korda? SPEAKER 32: Printige dots. BRIAN SCASSELLATI: Jah Ma printimiseks dots kaks korda. Tõesti, ma peaks olema see kommentaar siia alla. Ma printida mõned dots hakanud, eks siin. Ja siis ma printida mõned täpid lõpus. Ja ma teen mingi täpselt sama asi. Mida me ei kavatse hakata töötavad järgmise paari nädala jooksul on suutnud võtta need plokid kood, mis me kasutame ikka ja jälle, ja protsessi kaudu nimetatakse võtmiseks, me ei kavatse tõmmata neid välja ja kirjuta neid kord, nii et siis saame taaskasutada neid ikka ja jälle. Nii proovime seda. Valmis? Me läheme selle ploki koodi. Ja ma lähen seda võtta sealt. Ja ma lähen define-- alla allosas, Ma kirjutan uue funktsiooni. Ta ei kavatse tagasi midagi. Ja ma kutsun seda printDots. See saab olla üks argument, täisarv, mis ütleb howManyDots ma peaks printida. Ja nüüd printimise asemel j dots, ma prindi öelda howManyDots ma peaks printida. Ja seal on üks väike probleem. Kas keegi teab, mis see on? Mida ma pean, mis on loetletud siin, et pole määratletud? Sihtrühm: [kuuldamatu] BRIAN SCASSELLATI: Noh, kuidas palju punkte on määratletud õigus kuni siin, kuid ma kasutan, et muutuja i. Nii et ma lähen võtta, et muutuja i ja ma lähen seda defineerida korras siin asemel. Nüüd siis läheb stay-- oops, sain mütsid lukk somehow-- ma olen läheb hoiavad i alla siin. Nüüd siin on minu väike funktsiooni või sub-rutiinne ja ta ütleb, kui palju dots ma nüüd välja printida? Ja siis lähen läbi selle silmuse ja prindi neid ikka ja jälle. Võin siis muuta oma programmi siin. Ja mida ma nimetan seda ülesannet? printDots. Nii et ma helistan printDots. Mitu punkti ma tahan printida Esimest korda enne jänku? Sihtrühm: j. BRIAN SCASSELLATI: j. Mitu punkti ma tahan printida lõpus, pärast jänku? 10-j. Ja seal on üks asi, mida ma olen kadunud. Nagu nägime loeng täna me ei kavatse kuulutada printDots kõrgemale saades prototüüpi. OKEI. Mida ma olen teinud on Olen proovinud isoleerida, et taaskasutada osa koodi et ma olen teinud ikka ja jälle. Ja ma olen proovinud välja tõmmata nii, et kõik, mis sisaldub ühes kohas. Nii, kui mul on viga kuskil, Mul on ainult seda parandada ühe kohapeal. Hästi. Nii saab salvestada. Ja olgem veenduge, et see töötab. Nii lähme välja. Me läheme jälle meie terminal. Me suurendada. Me teha, et jänku protsessi. Oh. Ja see on andnud mulle hoiatuse. Mis on see mulle öelda? Noh mõni neist korda, tahad alati kerida kuni kõige esimene error-- nüüd selle ühe, ma sain ainult ühe. Ta ütleb mulle bunny.c, real 8, 9 veerus, seal on probleem. Ta ütleb, et olete lugenud seda muutuja i ja te pole seda kasutanud. Nüüd tavaliselt, et on ei halvim viga. See on lihtne ühe määrata. Ja tegelikult, saame minna tagasi. Me saame minna tagasi jänku. Ja sel juhul, kes kõik meil pead tegema, on vabaneda i, sest me ei kasuta i raames peamiste enam. Me lihtsalt kasutades seda meie sub-rutiini. Nii saab salvestada seda. Me läheme tagasi. Ja suumida. Me veel üks kord teha jänku. Ja jälle on meie 10 kaadrit. OKEI. Iga kord, kui oled andnud procedure-- Jah. SPEAKER 33: Mul on a-- ma olen segaduses. Kas sa lähed tagasi kood? BRIAN SCASSELLATI: Yep. SPEAKER 33: Niisiis, kui sa kirjutasid Sinu prototüüp, argument sa oli ta nimeks kutsuti howMany? Aga below-- BRIAN SCASSELLATI: Oh yeah. SPEAKER 33: --called neile midagi erinevad, ma ei saa aru. BRIAN SCASSELLATI: Miks on nad erinevad. Nii et suur küsimus. Nii et küsimus oli, kuni siin, ma kirjutasin howMany, ja allapoole, ma kirjutasin howManyDots. Põhjuseks on see, et üles oma prototüüp, see on tegelikult ei pööra tähelepanu nimedele, et sa oled pannes. Kõik see tõesti hoolib on, et see täisarv. See tahab teada vorm mida sa kasutusele. Nüüd stylistically-- oops-- mida ma peaks ei, ei ma tahan teha need mängu. OKEI. Sest et saad hoida lihtsam minu meeles pidada. Aga see oli minu viga jah. SPEAKER 34: Ja nii eest Prototüübi töötada, lihtsalt kirjalikult, et joon, kirjutamise prototüüpi võimaldab see funktsioon, et tegemist paremal all minema lõpuni ja laadida, mida see tähendab? BRIAN SCASSELLATI: Mida see tähendab on siis, kui koostaja läbib, see läheb ülevalt koodi alt. Ja mis on prototüüp, on see põhimõtteliselt on lubadus. Ta ütleb, et see saab olema defineeritud funktsioon kusagil. See saab olema nn printDots. Ja see aega võtab ühe argument mis saab olema täisarv ja siis läheb tagasi midagi, tühjus tüübist. OKEI. Ma luban teile, et see saab olema määratletud kusagil mööda teed. Kuid iga kord näed et nagu sa minna läbi mu ülejäänud põhifunktsioon, ma tahan sa ravida, et kui funktsioon mis võtab üks täisarv sisend. Ja nii, kui tõlkija loojub selle kaudu, mida ta peab seda lubadust. Ja kui see läheb mööda, peab minema, peab minema, ta leiab esmakordselt printDots on mainitud. Ja ta ütleb, Oh, sa oled andes mulle see j. j on täisarv. Noh sa lubasid mulle, et oleks olema täisarv ja see on õige. See on OK. Ja siis lõpuks maha väga põhjas, enne kui ma saan lõpuks oma faili, teen hea minu lubadus ja ma määratleda. OKEI? SPEAKER 35: Niisiis, see saves-- Programm päästab tühikuid et ta läheb tagasi ja täidab lõpus? BRIAN SCASSELLATI: See ei ole umbes mälu eraldamise. See on tegelikult lihtsalt sellest, mida tüüpi sa loodavad näha. Kui see asi on üks argument, või viis argumenti? Kui on see täisarvud olla talle antud või stringid? See on kõik, ta otsib tegema, on vaadata, sa andsid mulle õiget argument. OKEI? Hästi. Las ma jätan teid üks teine ​​natuke vaadata. ASCII kunsti ei ole suur mudel Animatsiooni nagu see täna on. Aga mõned inimesed muidugi võtta asju ja nad lükake oma äärmuse. See on, nagu David näidanud loengus, tükk kood et sa peaksid mingil juhul proovida dubleerida ise. Sest see on kohutav stiililiselt. Tegelikult see on projekteeritud nii võimalikult raske lugeda. OKEI. Nii, et teha taas, olgem suumida siin. Ma lähen nüüd, muutus kataloogi. Ma lähen üles üks tasandil, tagasi oma tööruumi. Ma siis muutus kataloog sellesse teiste kataloog, et olen loonud. Ja see on International Obfuscated C Programming Contest. Obfuscated vahendeid nii raske kui võimalik mõista. Nii et palun, ei karda, kui te vaatate sel ja minna, ma ei oska lugeda seda. See on selle kõige mõte. OKEI? Aga meil on see imeline programm, mis ma olen vaatleme kirjutades rohkem. Ja vaatame, kas ma saan välja suumida lihtsalt natuke, nii et näete seda Ja see on programm. See on nimeks endo.c. Ja tundub, et see ämber Selline tähed F-L-U-I-D ta. See on tegelikult programmi. See on kirjutatud kõige varja nii, et autorid saaksid võimalikult Kirjuta see. Aga see on imeline väike tükk, mis tekitab mudel vedeliku dünaamikat. Ja nii me kavatseme anda et mudel on sisend, mis näeb välja selline, mille staired seatud konteinerite koos vedelikuga, mõned vedel, kuni tipus. Ja me peame seda simuleerida mis toimub see. Nii et ma helistan sellele funktsioonile, endo. Ja ma annan selle, et sisendfail, et ma olen olnud. Ja seal on meie võrdkuju ASCII kunsti. Täielik hüdrodünaamikakatseid simulaator töötab vaid paar rida koodi. Nüüd sellest, mis on tegelikult väga Hämmastav selles väikeses programmi on see, et ma ei taha enam seda nüüd, nii et ma lähen kasutada, mida käsk? Sihtrühm: Kontroll-C. BRIAN SCASSELLATI: kontroll-C. OKEI. Nii et ma kasutada Kontroll-C. C, et saad seda peatada. Ma uuesti selgeks. Ja nüüd ma lähen tugineda programmi ellu programmi, kasutades ise sisestada. Ja me näha hüdrodünaamikakatseid simulatsiooni see sulab. OKEI. Palun ärge laske et programmi olla asi, mis ajab sind. See on lihtsalt nii, et me ei lõppe midagi lahedat ja huvitavat. OKEI. Palju õnne teie probleem komplekti. Me oleme õnnelikud, et vastata Küsimuste klassi. Tänu palju, poisid.