[Powered by Google Translate] David J. Malan: Gerai, tai yra CS50, ir tai yra pradžia savaitę du. Ačiū. Pradėkime čia su telefonu. Aš apie surinkite 617-bug-CS50. CS50: Tai CS50. Shuttle Boy, paspauskite 1. Pradėti iš naujo, paspauskite 9. David J. Malan: Taigi jis kreipėsi Shuttle Boy, paspauskite 1. Taigi, mes ketiname paspauskite 1. CS50: Kas yra jūsų kilmė? Quad, paspauskite 1. Mather, paspauskite 2. Boylston, paspauskite 3. Lamont, paspauskite 4. Atm salė, paspauskite 5. Pradėti iš naujo, paspauskite 0. David J. Malan: Mes paspauskite 1 quad. CS50: Kitas uostą palieka tai labai minučių at 1:10 PM, ir 01:20, 1:30 PM 1:40. Tai CS50. David J. Malan: Taigi tai yra CS50 balsas. Ir tai iš galutinių projektų rūšių, pavyzdžiui, Pavyzdžiui, galite atsikąsti link Semestro pabaigoje. Kad, pavyzdžiui, shuttleboy.cs50.net egzistuoja - iš tikrųjų projektas, kad aš pirmą kartą rašė pavartojus CS51 atgal, kai man buvo bakalauro. Ir įkvėpimo čia buvo anuomet, visi jie turėjo išspausdinti maršrutiniai autobusai tvarkaraščiai, ir ten nebuvo sąvoka ieškote dalykų internete. Ir todėl aš tarsi balandį, išpilamas per vieną savaitgalį spausdinami tvarkaraštį, ir perkeltas jį į kompiuterio programą. Tuo metu atsitiko turi būti parašyta kompiuterinė programa C. Ir jūs iš tikrųjų bėgo įvesdami Shuttle Boy mirksėti greitai, kaip mes jau daro iki šiol. Bet per tuos metus, tai išsivystė į trumpąją pranešimų bot. Jis išsivystė visai neseniai į šią svetainę, į SMS įrankis, taip pat į šio balso pagrįsta priemonė. Ir tai yra užuomina į dalykų rūšių, kad jūs galite padaryti sau semestro pabaigoje. Pavyzdžiui, ten, SMS versija Shuttle Boy vyksta veikti taip. Jei į savo mobilųjį telefoną, galite nusiųsti tekstinį pranešimą 41.411 tada siųsti specialų simbolį sboy, Shuttle Boy, po a ir b, kur a kilmė ir B yra žemynas - pavyzdžiui, Boylston Space Quad - ką jums reikia grįžti per kelias sekundes tekstas žinutė iš Shuttle Boy sakau jums, kada tiksliai Artimiausius keletą šaudyklės, nuo tos vietos, kad B tašką Ir tai yra bendras pavyzdys, kas vadinama naudojant API. Taigi, pavyzdžiui, tai čia yra tik shuttleboy.cs50.net, faktinis žiniatinklio įsikūnijimas. Tačiau duomenys, kurie pabrėžia šią ir kitas programas, kad CS50 sukūrė veikiami visi čia forma API, taikomųjų programų sąsajos. Ir tai tik išgalvotas būdas pasakyti, kad žmonės, kaip mes interneto ir kiti praleido šiek tiek laiko sukurti programinė įranga, kad jūs galite naudoti, siekiant patraukti duomenis iš mūsų ir tada kurti savo programas viršuje tame duomenų rinkinyje. Taigi, pavyzdžiui, tai į jį berniukas API puslapį, kuris atsitinka būti CS50 vadove, iš esmės dokumentų , kaip galite eiti apie klausia CS50 serverių duomenų. Pavyzdžiui, jei esate susipažinę su CSV failus, kableliu atskirtos reikšmės, tai yra tiesiog tarsi greitas ir purvinas Excel panašūs failus. Taigi, jūs galite paklausti, visus duomenis apie visus Shuttle Boy namai ir jų GPS koordinačių, ir gausite atgal, iš esmės, pavyzdžiui, kad skaičiuoklę, kuri Tada galite skaityti į savo programą, ir tada gauti rezultatai, kaip ir pačios Shuttle Boy atsitinka daryti. Tiems labiau susipažinę, modernių duomenų atstovybių JSON, JavaScript Object Notation. Kažkas ateis su Jumis link Semestro pabaigoje. Bet vėl, tai tik vienas iš keletą CS50 savo API. Ir įdomus dalykas, dabar šių dienų, "Facebook" ir "Twitter" ir "Google" ir beveik kiekvieną populiarus svetainę iš ten yra kažkoks API, o tai reiškia, kad jei jūs skaitote dokumentus savo interneto svetainėje, jūs užsiregistruosite sąskaita, tada galite pradėti rašyti programinę įrangą ant nepriklausomai nuo įrankių ar duomenų, kad įmonė suteikia. Ir taip vienas iš mūsų pačių mokymo bičiulių porą metų atgal rašė Mac versija. Taigi nuorodą pavadinimu "Mac" čia viršuje kairėje, jūs iš tikrųjų atsisiųsti Mac OS valdikliui, kad eina į savo "Mac" daryti tokių pat dalykų. Todėl visa informacija apie statybos ant duomenų rinkinius, kaip šie. Tačiau daugiau apie tai link semestro pabaigos. Taigi, galime pasinerti nekilnojamojo greitai Klaidos, tiesiog natūra gauti dalykų pašildytas šiandien, ir manau, grįžti į kai kurių dalykų, mes pažvelgė į praeitą savaitę. Visų pirma, leiskite man eiti į priekį ir atsigriebti, tarkim, šis pavyzdys čia. Buggy1.c, tai kurso tinklalapyje, jei norite norėtų jį atsisiųsti ir kišti aplink save. Bet tegul padidinti čia šį gana trumpą programą, ir tik super greitas Priminti kai iš pagrindinių pastato blokus, kad mes tikrai ketiname tiesiog pradėkite vartoti savaime suprantamu dalyku. Taigi mėlyna stuff, per 9 1 linijas, yra tik futbolo klausimus. Taigi tai yra tik komentarai. Jie neturi funkcinė reikšmė. Bet jie komentarų ta prasme, kad jie pažymi, kad Aš, žmogaus, sau taip, kad paskaitos ir po paskaita, aš iš tikrųjų galite prisiminti, ką ši programa veikia be perskaityti jį linija ir atkurti istoriją mano galvoje. Be to, jei aš perduoti kam nors kitam, kaip šią programą jums, tai daug aiškiau, nes, pavyzdžiui, tai pastabų, ką ši programa iš tikrųjų daro, ar bent jau tai, ką programa turėtų daryti. Ar ji teisinga, yra visiškai kitas klausimas. Dabar, C, su kelių eilučių komentarus, priminti, kad on-line vienas čia yra magiškas simbolis, / *. Tai reiškia, kad čia ateina komentarą pradžia. Ir nieko daugiau medžiagos, kol pasieksite pabaigos terminatorius, kuris yra * /, priešingai. Taigi tai, kad aš čia iš 80-kai nelyginis žvaigždes iš kairės į dešinę, tai tikrai tik estetinė detalė. Jis neturi funkcinė reikšmė. Dabar, kaip apie 11 linija? Ką tai profanas sąlygomis? Kas tai? Auditorija: Apima standartas. David J. Malan: Gerai, gerai. Taigi ji apima stdio.h biblioteką. Taigi, ką tai reiškia? Na, šio failo viduje, stdio.h, yra visa krūva funkcija deklaracijos - tai yra kodas, kad kažkas ją parašė. Ir puikus pavyzdys, funkcijos, gavėjo stdio.h - kurios mėgstamiausia dabar? Taigi printf, vienas iš labiausiai paplitusių naudoti, tikrai anksti, kad biblioteka yra ten. Jei aš pašalinti tą kodo eilutę, Apsukite metalinis garsas ketina klykauti į mane kažkas apie nedeklaruojamą simbolį naudojant. Kažkas pasiskelbusios tikriausiai yra raktinis žodis, nes mes nepranešė kompiliatorių, ką printf atrodo patinka, nebent ta linija. Ir daugiau į Žemę, tikrai, kas sako, kad linija yra atidaryti tą failą, stdio.h, kur ji yra serverio kietąjį diską arba Prietaisai kietajame diske, ir copy-paste teisę ten į mano bylą, be savo tai padaryti rankiniu būdu. Dabar, kai mes gauname žemyn čia pagrindinis, iki kol mes pradėsime dantį išskyrus ką int ir tuštumos. Bet dabar pažvelkime trijų eilučių per 15 per 17. Tai čia galiu reikalauti kaip vežimėlyje. Mano komentarus 7 eilutė sako: "Jei spausdinti 10 žvaigždutes, bet nėra ". Kodėl tai ne spausdinti, iš tiesų, 10 tokios žvaigždės? Auditorija: [nesigirdi]. David J. Malan: Būtent. Taigi pastebėti, kad mes pradedame skaičiuoti nuo 0. Ir iš tikrųjų tai yra programavimo konvencija ir kompiuterių mokslas, apskritai, pradedant skaičiuoti nuo 0, o ne 1. Ir tai tikrai tik kyla iš to, kad Pavyzdžiui, kai mes turėjome aštuonis žmones ant scenos, kai niekas kelti savo rankas, jie buvo veiksmingai nuliai. Ir todėl tiesiog rūšies kompiuterių konvencijos, todėl pradėti skaičiuoti nuo 0. Jei tai mažiausias skaičius gali atstovauti dvejetainiu. Taigi čia mes pradėjo Inicijuojama I 0. Mes i lygi 0. Bet tada aš padariau šią klaidą, sakydamas, i yra mažiau nei lygi 10. Bet jei manote, kad, jei aš pradėti nuo 0 ir tada aš einu iki 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, aš iš tikrųjų ketiname spausdinti iš 11 žvaigždžių į ekraną, nes aš pakilo į ir lygus 10. Todėl lengva nustatyti čia tada kas? Auditorija: [nesigirdi]. David J. Malan: Tiesiog pakeisti ji mažiau nei. Jei tikrai norite, galite tai padaryti. Bet apskritai, tai frowned. Ir taip pradedant skaičiuoti nuo 0 yra tik tai, ką jums reikia paprastai priprasti. Dabar, ką apie visą šią konstrukciją ir pati? Ši eilutė 15 demarks už linijos. Taigi, tai ne funkcija. Tai tiesiog pareiškimą. Tai apsisukimo konstruktas, kaip matėme nulio. Ir ji sudaro trys dalys. Atkreipkite dėmesį, kad ten yra pirmoji dalis kabliataškiu kairėje. Yra vidurinė dalis tarp dviejų kabliataškiais. Dešinioji dalis, ir tada ten į dešinę antrosios kabliataškiu. Dabar, Pirmasis iš jų ką daro? Auditorija: [nesigirdi]. David J. Malan: Atgal? Taip? Auditorija: iniciacijos. David J. Malan: Inicijavimo. Taigi, ką tai reiškia? Mes paskelbė kintamasis vadinamas i. Ji yra tipo int, nes aš nurodėte int i. Ir aš Inicijuojama i reikšmė "0". Taigi, kas tai iš tikrųjų sako? Tai būtų pasakyti, prie kompiuterio ei, duok man pakankamai atmintis, pakankamai RAM, kad tilptų skaičių, ir tada įdėti toje RAM riekė 0 skaičių. Ir kaip panaikinti, kaip didelis yra int paprastai, bent jau viduje prietaiso? Auditorija: 32 bitų. David J. Malan: 32 bitai. Taigi, tai reiškia suteikti man 32 bitai, kitaip žinomas kaip 4 baitų, ir įdėti vertė Vertė 0 į tai, kuris yra gana lengva, nes Tai tiesiog reiškia, nustatyti visus bitus iki 0. Taigi, dabar, čia yra antroji dalis, sąlyga. Ir su sąlyga, kaip ir pavadinimas rodo, kad yra tai, kas tikrinama vėl ir vėl ir vėl, ar tai teisinga, ar klaidinga. Todėl tai sakydamas atlikti šias kodo eilutes - būtent 16, nes tai tik vienas įspaudžiami linija apačioje - taip ilgai, kaip aš yra mažesnis nei 10. Ir po kiekvieno per šio ciklo iteracijos, atlikite incrementation, kuris šiuo atveju yra i + +. Dabar ji neturi būti i + +. Tai gali būti i. Bet jei aš padariau tai, kas elgesys iš šios programos? Auditorija: Tai bus begalinis ciklas. David J. Malan: Tai bus kažkoks begalinis ciklas, nebent mes pasisekė po Neigiamas 2 milijardo ar pan. Gal viskas bus vyniojami aplink, tiesiog iš prigimties yra ribinis, numeris bitų,, kad mes skirtų int. Bet tai tikrai ketina pakartoti kur kas daugiau nei 10 ir tikrai daugiau nei 11 kartų. Ir dabar, kaip ir žemę, suprasti, kad i + + ir i - yra tikrai tik sintaksės cukraus. Tai tiesiog sutrumpinimas notacijos už tai, kas šiek tiek daugiau aiškiai užrašyti taip: i = i + 1. Tas pats kas ir i + +. Jis tiesiog rūšies atrodo gražiau pasakyti i + +. Tai labiau glaustas, suprantamesnės. Ir taip dauguma žmonių, kad vietoj. Bet tai yra identiškas funkciškai ką mes ką tik matė. Taigi trumpai tariant, čia yra greitai nustatyti tiesiog pasakyti, kad pakartoti i nuo 0 visą kelią iki mažiau nei 10. Ir tada mes iš tikrųjų gautų 10 žvaigždžių. Taigi, pabandykime tai. Leiskite man atverti terminalą apačioje. Leiskite man eiti į katalogą, kad tai yra. Ir aš ruošiuosi Apsukite metalinis garsas nes dabar kaupia jį rankiniu būdu. Ir aš ruošiuosi sudaryti šį kaip buggy1.c, Įveskite. Ir dabar buggy1, kodėl ten nėra tokio failo ar katalogo vadinamas buggy1? Auditorija: [nesigirdi]. David J. Malan: Taip. Taigi tai iš tikrųjų vadinamas a.out. Taigi priminti, jei jūs tiesiog paleisti Apsukite metalinis garsas, kur Apsukite metalinis garsas kompiliatorius, ir jums nereikia nurodyti vardą, kurį norite duoti savo programą, ji vyksta pagal nutylėjimą a.out. Taigi, iš tiesų, jei aš ls - Oi. Ir I didn't - juodai-balta problemą, kai kurie iš susidūrėte, buvo nustatytas. Bet leiskite man tai padaryti. Ten mes turime a.out kairėje pusėje. Taigi, mes turime paleisti a.out vietoj buggy1. Taigi leiskite man eiti į priekį ir tai padaryti. / A.out, "Enter". Ir aš, matyt, ne ką daryti? Auditorija: "Išsaugoti". David J. Malan: Išsaugoti mano bylą. Taip, kad lengvai išsprendžiama pataikyti valdymo įtaiso s ar vyksta Failas, Įrašyti, kaip daugelyje programų. Leiskite man eiti čia, išvalyti ekraną, paleiskite ją dar kartą. Ir dar yra klaida. Taigi, tai, kas vyksta - Auditorija: Jūs nenurodėte surinkti. David J. Malan: "O, geras. Aš ne kaupia jį. Kaip idiotas, aš žiūri į kodą, kad pamatyti, kas yra negerai. Taigi Apsukite metalinis garsas buggy1.c, dabar a.out. Ir Phew, išsaugotas. Taigi atrodo šiek tiek negraži, nes ten yra ne nauja linija bet kurioje programoje. Bet vėl, tai tik estetinė detalė. Ir bent jau jei mes laikome tuos, turėtume dabar matome 10 tokios žvaigždės. Na, ką apie šį apšilimo pavyzdžiui? Taigi buggy2, aš patvirtinu, kad ši versija taip pat bus atspausdinti 10 žvaigždės, po vieną eilutėje. Todėl šį kartą, aš turiu naujos eilutės simboliai, tik, kad dalykų šiek tiek gražiau. Bet vietoj to, ką man yra. Taigi, leiskite man padaryti Apsukite metalinis garsas buggy2.c Enter. Dabar ji vėl vadinama a.out. Įveskite. Matau tik vieną naują eilutę, tik pats paskutinis naują eilutę, kad juda mano eilutę į kitą eilutę. Ir dar aiškiai aš buvo Spausdinimas *, tada naują eilutę, *, Tada naują eilutę. Bet kas čia klaida? Taip? Auditorija: [nesigirdi]. David J. Malan: Būtent. Taigi, skirtingai nuo kai kurių kalbų, pavyzdžiui, Python, kur įtraukos iš tikrųjų turi funkcinę prasmę, kalbos kaip C - kaip matysime, PHP, JavaScript - įdubimas yra tikrai tik žmonėms naudai. Taigi faktas, kad aš įspaudžiami linija 16 ir 17 atrodo puikiai, tačiau ji neturi funkcinė reikšmė. Jei aš noriu, kad abi linijos vykdyti kaip dalį kilpa, tada aš turi pateikti juos klamrami tai daryti. Jūs galite tik sumažinti, kad kampe ir praleisti garbanotieji petnešų, jei kas šiuo atveju? Auditorija: tik vienos linijos. David J. Malan Tik viena linija. Taip, kad tiesiog tarsi gražus rūšies sintaksė išsamiai, kad jums nereikia gaišti laiko raštu tris eilutes, iš kurių du yra garbanotas petnešos, tiesiog parašyti vieną eilutę kodo. Bet jei jūs turite dvi ar daugiau eilučių, mes iš tikrųjų reikia tai padaryti. Taigi dabar leiskite man išsaugoti tai. Leiskite man eiti į priekį ir iš naujo paleiskite Apsukite metalinis garsas. Tada leiskite man iš naujo paleisti a.out, ir dabar man juos vienoje eilutėje. Dabar a.out vėl yra rūšies kvailas programos pavadinimą. Kaip aš galiu pasakyti Apsukite metalinis garsas, kad iš tikrųjų man duoti failo vardą kad daugiau patogi, kaip buggy2 pati? Šiek tiek aiškiau? Auditorija: [nesigirdi]. David J. Malan: Gerai, kad aš iš tikrųjų galite imtis labai patogus spartusis ir tiesiog parašyti, kad buggy2. Aš nenurodo c šiuo atveju, ir paspauskite Enter. Ir kas, kad daro ji rengia buggy2.c mane klausia Apsukite metalinis garsas tai padaryti. Tiksliau, ji ragina Apsukite metalinis garsas, jis veikia Apsukite metalinis garsas naudojant būdas daugiau komandinės eilutės argumentai arba jungikliai, nei aš iš tikrųjų reikia. Laiku, mes grįžti į tai, ką visus šiuos įvairius paslaptingas brūkšneliais išraiškos priemonėmis. Bet dabar, kad tiesiog taupyti man sunku prisiminti ir įvesti visi tie įvairių brūkšneliais raiška. Ir galiausiai jį aukštyn kojom , kad dabar aš turiu buggy2. Jei aš noriu tai padaryti rankiniu būdu, nors aš vietoj jų galima tai padaryti - Apsukite metalinis garsas-o buggy2 ir tada buggy2.c. Ir kad bus panašiai man failą, pavadintą buggy2. Apsukite metalinis garsas Taigi trumpai tariant, sudarytojas. Padaryti, yra tiesiog patogus įrankis, kad mes naudosite daugiau ir daugiau, nes jis tiesiog pradeda supaprastinti dalykų už mus. Ir mes return 0 galiausiai. Nes dabar, tik todėl, kad, bet mes pradėsime dantį, kad dalis šiandien ir trečiadienį. Klausimų dėl bet tai? Taip? Auditorija: [nesigirdi] Ls kabučių ten? David J. Malan: Gerai. Kai aš įvedėte LS į kabutes, tai buvo man daryti kai magija užkulisiuose ištaisyti klaidą. Aš pamiršau, kaip mes jau pasakoja daugelis iš jūsų diskusijų lentos, daryti - mes tai padaryti dabar - sudo yum-y atnaujinimą appliance50. Oi, kad teisingai parašytas. Todėl įrenginys yra kaip operacinės sistemos. Ji veikia šią operacinę sistemą, pavadintą "Fedora. Ir dabar, nes mano lėtas interneto ryšys, aš tikrai modes. Todėl veikianti sudo yum update, kaip mes tau daryti problemų rinkinys, iš esmės, kaip veikia automatinius atnaujinimus Mac OS arba Windows. Ir veikia tai pačioje pradžioje priežastis problemą, yra todėl, kad kai mes sukūrėme prietaisą, messed up, ir aš netyčia visas savo programas, ieškoti juoda ant juodo ekrano, kuris yra, kodėl jūs nematote jų pagal nutylėjimą. Bet naujausia versija prietaiso nustato. Ir aš jums nustatyti, kad pertraukos, kai turiu internetą Ry ¹ iai su i ¹ oriniais prietaisais. Taigi kabučių tik slepia mano klaida, labai diskretiškai, matyt. Kiti klausimai? Taip? Auditorija: Kur daro ateina iš? [Nesigirdi] David J. Malan: Geras klausimas. Kur daro? Tai yra Linux programa, kuri gyvuoja jau daugelį metų, ilgai prieš CS50. Ir ji ateina su operacinės sistemos, pavyzdžiui, Fedora. Jis nėra kilęs iš CS50 bibliotekoje. Tiesą sakant, tik tai, kas ateina iš CS50 bibliotekoje iki šiol, kad mes matėme, yra GetString, GetInt, visi tiems Gauk funkcijas, ir žodis eilutę, ir tam tikrų mastas, žodis bool. Bet mes erzinti, kad, išskyrus kai mes pasinerti į CS50 pats prietaisas. Taip taip, dar vienas klausimas. Auditorija: Kai jūs sakėte, ir tada Buggy, kaip veikia kompiuteris žinoti [nesigirdi]? David J. Malan: Geras klausimas. Taigi, kai jūs tiesiog paleisti, kad buggy1 arba padaryti buggy2, kaip daro žinoti? Taigi pagal numatytuosius nustatymus, jei įvesite padaryti buggy1, kad atrodo už failą pavadinimu buggy1.c. Ir tada jis atlieka atitinkamus Apsukite metalinis garsas komandas, taip svarbesnio numatytoji išvesties failą pavadinimu a.out. Iš tiesų, jei pažvelgsime į tai, ką daryti, ką - tegul mesti šį. Jei pažvelgsime į tai, kas buvo iš tikrųjų daro, kad buggy2 tai jau iki šiol. Taigi leiskite man pašalinti RM komandą programa, aš parašiau anksčiau. Rašyti Y-E-S, norėdami patvirtinti, kad aš noriu jį pašalinti. Jeigu aš dabar padarysiu, pastebėsite, kad šį labai ilgą eilutę, ten tai paskutinis dalykas,-o buggy2. Daro visi, kad eina pro šį argumentą, taip sakant, Apsukite metalinis garsas, kad aš neturiu rašyti pačiam. Viskas gerai, taip greitai pora administracines pranešimai. Taigi, skyrių, kuris oficialiai pradėjo šių metų Sekmadienis, jūs visada nori, kad, jei turite vieną, nešiojamas. Jei jūs neturite turėti nešiojamąjį kompiuterį, tai pasiekti man nuleisti man el. Ir mes išsiaiškinti, darbo eigą. Ką paprastai jūs rasite skyriuje yra tai, kad jie konceptualus, hands-on. Mes specialiai klausimų skyrių, dalis Savaitės problema rinkinys, eiti per kai kurias iš konceptualus medžiaga, iš paskaitos. Ir tai viskas, dabartinė problema rinkinys. Ir mes taip pat pasinerti į kai praktinę veiklą, kartais iš kurių bus reikalaujama pateikti, kartais nebus. Pavyzdžiui, tai pirmą savaitę, jie reiškia tik kaip apšilimo pratimas. Ir jūs pamatysite, kad šios problemos yra tikrai tik, kad. Jie turėtų būti gana nedidelis, bet nebūtinai trivialus programos rašyti, kad nebūtinai yra įdomių ir patys, bet yra gerų galimybių praktika su sintakse, su naujų funkcijų, komfortą skyriuje, kur jūs turite iš jūsų klasiokų pateikti kaip pat jūsų TF. Ir tai, ką mes padaryti per tam tikrą laiką naudoti įrankį, vadinamą CS50 Tarpai , o ne tik naudojant CS50 Appliance, jums vietoj to eiti į tinklalapį naršyklėje, kur galėsite rašyti kodą į naršyklės lange skyriuje metu. Ir tada, jei pasirenkate, savo mokymo kolegos gali tada parodyti kokia ji yra, jūs rašyti ant ekrano, tai atlikti turite savo naršyklėje langas klasės priekyje, ar anonimiškai arba viešai, kad jis arba ji gali tada pėsčiomis per su Jūsų klasiokais, ką jūs gerai, ką tu negali padaryti taip pat. Ir vėl, būkite tikri, visa tai gali būti gražiai anonimiški. Bet tai bus puiki galimybė daug daugiau interaktyvumo nei kažką panašaus į paskaitą leidžia. Tuo tarpu, mes turime šiuos dalykus, pavadintą "Super skyriai, kurie yra neprivaloma, tačiau yra atviri visiems, klasę, kad galite tai padaryti kartu problema nustatyti vieną. Štai tvarkaraštis. Tai taip pat paskelbtas interneto svetainėje adresu: cs50.net. Atkreipkite dėmesį, kad ten bus hakeris specifinis vienas rytoj po pietų. Ir mes nufilmuoti vieną šiandien ir rytoj ir po tie, internete per 24 valandas. Taigi, jei jūs negalite padaryti, bet šiais laikais, ne nerimauti. Ir vėl, grafikas yra online dabar adresu cs50.net. Ruožais save, jūs turite Dotarłeś elektroniniu paštu nurodantis jums eiti kurso puslapyje rasti iš savo skyriaus. Jei gyvenimas pasikeitė ir jums reikia pakeisti savo skyrių, ne problema. Grįžti atgal tas pats URL, cs50.net/section, vienaskaitos, ir jums užpildyti panašią formą, kad būtų galima tada mums savo pageidavimus. Ir mes iki savaitės pabaigos, ką mes galime prisitaikyti. Praėjusią savaitę, prisiminti kad mes pasiūlėme naudojant CS50 aptarti, Žinoma, diskusijos įrankis, paskaitos. Taigi mes turėjome 40 klausimų, kurie buvo užduodami ir atsakė paskaitos metu. Taip atrodė, kad gerai dirba, todėl mes ir toliau bando tai padaryti. , Jei per paskaitą, jūs ne tik jaustis patogiai pritraukti tavo ranka, o ne problema. Eiti į cs50.net/discuss, rašyti ten, ir vienas iš mūsų mokymo bičiuliai arba bus atsakyti elektroniniu arba padidinti jų ranką ant jūsų vardu anonimiškai paklausti, priklausomai į klausimo pobūdį. Ir grįžtamojo ryšio, paprastai psets bus grįžo per savaitę. , Nes tai užima šiek tiek laiko pasiekti skyriai pusiausvyra, pirmasis pset, 0 ir 1, bus šiek tiek užsitęsė, nes viskas įsikurti. Bet stay tuned, kad ateinančias savaites. Viskas gerai, todėl leiskite man įdėti mano rimtas balsas vos akimirką. Taigi tai yra iš tikrųjų įdomi klimatas šią diskusiją, kas su visų kitų dalykų, vyksta miesteliu su jomis susijusių. Bet CS50, be abejo, turėjo savo istoriją, tai ypač tema, kiek kiekvienais metais, šis kursas, nes daugelis metų, skelbimų lentos maždaug 3% klasės. Tai paskutinių metų, 2011, CS50 Skelbimas sulaikytam 35 studentų. Tai ne, manau, dėl to, kad trūksta aiškumo. Suprantu, kad kurso mokymo programą, yra puslapis pranešimą, paaiškinantį, kur yra linijos. Kad tas pats teiginys kartojamas vieną kartą per problema nustato puslapis vienas. Taigi, aš sakiau, tai šiandien tikrai tik, kad žmonės Suvokdama šio. Ir mes bandėme skirtingus dalykus. Ir ką aš maniau, kad mes darome šiandien, tai tiesiog šiek tiek laiko ir iš tikrųjų atrodo kai praeities atvejų, kurie sugalvoti. O ne laikyti šiuos kaip purvinas šiek tiek paslaptis, faktiškai atkreipti dėmesį, ką studentai padaryti ir kaip mes nustatėme, ji ir tikrai, kas svarbiausias motyvas yra net, kad šį pokalbį. Taigi, su ta sako, linija iš esmės tai - už mokymo programą, jūs laukiami, jums yra skatinamos, kalbėti su klasės draugais. Štai visai tikslu Šiais bendradarbiavimo biuro darbo valandomis Annenberg ir skatinant žmones galutinė projekto dirbti kartu. Tačiau linijąar, kai ji ateina laikas iš tikrųjų rašyti jūsų galutinis sprendimas. Kalbėdamas anglų kalba, visiškai gerai, kalbant pseudo kodas, visiškai gerai. Elektroniniu paštu savo klasės draugus, savo pset, leisdami jiems atrodo per ekranas, rankų ir toliau rašyti, virš linijos taip pat. Tai atrodo į konkrečias mokymo programą. Bet tik dažų paveikslėlį, kaip tai, deja, tikrove, suprasti, kad yra svetainių, ten, kad sprendimus šios klasės ir daugelio kitų grupių. Tas faktas, kad jūs arba apie 3% iš jūsų žino, kad tai yra reiškia, kad mes žinome, kad toks egzistuoja. Faktas, kad yra svetainių, kaip šis, kur jūs gali mokėti nors realiai tai jūsų problema rinkiniai - tai buvo faktinis, kad atėjo pernai. Tai svetainė vadinamas odesk.com. Timas buvo to asmens pavadinimas, kuris buvo komandiruotės ši svetainė ir paprašė ką nors padaryti savo pset 7 šiuo konkrečiu atveju. Na, odesk.com yra labai "Google" gali ir mes taip pat yra labai gerai "Google" paiešką. Čia taip pat yra svetainės - ir tai vienas, o žiaurią, atvirai. [Juokas] David J. Malan: juokingas dalykas apie šią svetainę, jei jūs perskaitėte Apie puslapį, jie kalbėti apie savo verslo kultūra ir kaip klientų aptarnavimo, yra numeris vienas prioritetas, įsitikinkite, kad jūsų užduotis gauti pasuko laiku. Tačiau visais sunkumo, vėl, tai, kad šios svetainės egzistuoja, reikia suprasti, mes taip pat žino, šių svetainių rūšių. Ir duoti jums tai, ką jausmą sudaro tai paprastai užtrunka, mes paprastai neturi turi daug skandalų, kur žmonės bendradarbiauja, bet masiškai, o tai šie vėlai naktį silpnumo akimirkos, kur jūs turite tiek daug padaryti, 04:00, jūs išnaudotos, ir jūs galvoti, gerai, tegul man tik ne mano išvaizdą kambarioku arba mano draugo kodas ar panašiai. Ir tai apraiškos, deja, įtraukti studentus Pateikdama kažkas panašaus tai ir Studentų B pateikiantį dokumentus kažką panašaus į tai, kurios, be abejo, į kompiuterį mokslas klasė, yra nepaprastai lengva kompiuterinių mokslų nustatyti su programine įranga. Tai yra dar vienas bendras paradigma, kur jūs tarsi dirbti kartu, kad kažkas, galbūt kalbėti Anglų, tik baudą, Pseudocode. Bet tada ji ateina laikas faktiškai pateikti, ir psets tiesiog gauti keičiamasi elektroniniu paštu ar "Dropbox" ar pan. Bet bando padaryti jį mažiau akivaizdu, kad tai yra kas nutiko, tai yra tai, kas pateikta. Tai taip pat nėra kelionė gerai parašyta vienetų programinės įrangos, pavyzdžiui, kad iš tikrųjų mes turime nustatyti šių dalykų rūšių. Ir iš tiesų tai, ką mes darome, yra paleisti programinę įrangą, kuri palygina visų šiais metais kaltinimai dėl praeities metų pareiškimai, prieš viską, ką mes rasti Internetas, ten prieš kiekvieną darbo svetainėje. Viskas labai automatizuota. Ir todėl mes tai padaryti tikrai labai sąžiningumo 97%, kurie tikrai dirba savo asilų ir kitose klasės ir išleisti visų šių pastangų, kad darbas jie galiausiai pateikti, yra jų pačių. Ir aš galiu eiti per amžius. Tai yra tik praėjusių metų bylas sauja. Keletas studentai pateikė šiuos failus analogišku pset 2 3, pset 4 pset, pset 5, 6, pset pset 9. Šiuo atveju, tai buvo viktorina 0 ir pernai, kai du studentai pateikė vienodai šį sakinį iš daugelio kiti, "tipo užklausa -" taškas, taškas, taškas. Taigi net 600 klasės mes tai nustatyti į pateiktus viktorinos. Taigi trumpai tariant, tai - atvirai, aš nekenčiu šios rūšies pokalbis - bet tai tikrai sąmoningas pastangas šiemet pabandyti sumažinti šį skaičių. Nes, nors mes sakome, šių rūšių dalykų, kas metais, manau, apsigyveno ant jo realybę kelias daugiau sekundžių, nei įprasta, o iš tikrųjų tik nurodydama, kad tai, kas gali atrodyti kaip, ane, ne tokia baisi, bent jau prisiminkite šiuo konkrečiu momentu, tiek teisingumą save ir savo klasiokų čia. Taigi, jei turite kokių nors klausimų dėl to, kur linija yra, prašome tiesiog pasiekti man asmeniškai. Bet atsakymas yra visada, visiškai pabrėžta paskutinė minutė, pinigų vėlai dieną. Arba, jei tai ne pavėluotai dienų klausimas, sąžiningai, rašykite man asmeniškai. Mes suprasti kažką. Neskelbkite savo gyvenimą čia Harvardo gresia pavojus. Dabar, aš maniau, turėtume palengvinti nuotaiką, todėl aš įtraukti į kitą skaidrę. [Juokas] David J. Malan: Ši svetainė buvo puiki. Aš tikrai turiu šiek tiek išsiblaškęs. Yra tai vienas. Ir tada tai buvo nuostabu. Gerai, kad galvoti apie tą kačiuką vėlai vakare darant tie sprendimai. Viskas gerai, todėl daugiau malonumo ir mažiau rimtų dalykų, pavyzdžiui, sąlygos. Viskas bus gerai, kad mes kalbėjome trumpai apie tai. Tai yra kažkas, kad tikriausiai gana gerai susipažinę nuo Scratch pasaulis. Ir nulio pasaulyje, mes turime šį poreikį kartais eiti padaryti šakutės kelyje. Arba padaryti tą ar aną ar kitas dalykas, čia. Ir jei mes norime tai padaryti, mes galime naudoti, C, tuo atveju, jei kitur statyti. Ir tada čia mes turime Būlio išraiškos. Pavyzdžiui, Būlio išraiškos Čia mes galime AR juos kartu, ta prasme, kad mes turime šią sąlygą AR ši sąlyga. Mes galime ir juos kartu, ta prasme, kad mes norime patikrinti šią sąlygą, o ši sąlyga. Ir čia mes turime jungiklis pareiškimą dabar, kas yra ne taip panašus sintaksiškai tiems įvairiomis sąlygomis, tačiau jis leidžia mums padaryti IF ekvivalento else if, else if, else , jei ir paprasčiausiai išvardijant jiems kiekvienu konkrečiu atveju, kaip kiekvienu konkrečiu atveju. Taigi mes matėme tuos paskutinį kartą. Ir tada mes pradėjome Kreipdamiesi dalykų, pavyzdžiui, kilpų. Mes matėme vieną iš jų vos prieš akimirką. Bet yra tie kiti ciklų sakiniai. Pavyzdžiui, tai vienas čia. Taigi, while (sąlyga), daryti tai, ką vėl ir vėl. Taigi, iš esmės, kas atrodo, kad skiriasi linijos ir šio while cikle čia? Šis linijos ir šio while cikle. Taip? Kas tai? Auditorija: [nesigirdi]. David J. Malan: Geras. Taigi, o loop "sąlygos, yra aiškiai daugiau sintaksė. Ten tai iniciacijos, ten šį naujinimą. While cikle, yra tik ši sąlyga. Taigi atrodo, kad tai šiek tiek palyginti palyginti su linijos, tai reiškia, jei mes norime turėti kintamuosius, ir mes norime turėti incrementation, mes iš tikrųjų turime daryti tai, ką patys. Taigi leiskite man eiti į priekį ir atverti gedit. Leiskite man pereiti prie prietaiso. Ir tegul tiesiog padaryti greitai mažai, kad, pavyzdžiui, išskiria vienas iš jų nuo kitų. Ir mano protas atgal čia, reikia pasakyti vieną dalyką. Aš konkrečiai paminėjo vardas Timas. Timas buvo kažkas, kad studentas bandė rasti namų darbus už juos. Mes neturėjome Timas būtent tame skyriuje. Taigi suvokti, kad aš atskleisti studentą, tai buvo ne studentas. Tai buvo atsitiktinis asmuo internete daryti dalykus pagal įgaliojimą praėjusiais metais. Taigi matome, kad, taip pat. Taigi, šiuo atveju čia, leiskite man eiti į priekį ir atverti naują failą. Failas, Naujas. Tai suteikia man skirtuką čia. Leiskite man eiti į priekį ir išsaugoti ją kaip loop.c. Leisk man eiti ir spustelėkite Įrašyti. Ir tada žemyn čia, eikime į priekį ir pradėti rašyti # Include . Leiskite man padidinti. Dabar mes padaryti int main (void). Dabar leiskite man eiti į priekį ir padaryti už (int i = 0; i < oh, 10, i + +). Ir dabar aš ruošiuosi eiti į priekį ir spausdinti žvaigždė, kad aš padarė anksčiau. Ir tada šios programos pabaigoje, mes tiesiog ketina spausdinti naują eilutę, tik todėl, kad mano greitai neatrodo visą nepatogus. return 0. Atrodo sintaksiškai teisingas? Iki šiol. Taigi pažiūrėkime. Taigi leiskite man nutolinti, eiti į mano terminalo lange. Ir leiskite man eiti į priekį ir paleisti kilpą, nes aš tai pavadino dalykas loop.c. Kilpą. Atrodo sudaryti Gerai. Aš bėgsiu kilpa, ir dabar Įveskite. Ir atrodo, kad atspausdinti 10 žvaigždės. Todėl galime tik tai pakeisime į while cikle, ir pamatyti, kas rūšių klausimų, mes užkliūti. Taigi, vietoj to, leisk man eiti čia ir pasakyti, o aš mažiau kaip 10 - leiskite man atsikratyti už linijos. Gerai, kad jau turime keletą problemų. Taigi ši sąlyga yra tas pats, bet aš akivaizdžiai trūksta inicijavimas. Man trūksta incrementation. Taigi, kas turėtų sudarytojas greičiausiai pasakys man, kai bandau sudaryti šią programą? Taip? Auditorija: [nesigirdi]. David J. Malan: Geras. Taigi jis ketina pasakyti kažką panašaus nedeklaruota , kintamasis i. Ir iš tiesų, nedeklaruojamo identifikatorių i. Ir todėl tai yra priešingai kalbomis, pavyzdžiui, PHP ir Python ir Ruby, su kuria kai kurie iš jūsų gali būti susipažinę, , kur Jūs galite tiesiog rūšies pradėti naudojant kintamuosius norom nenorom ir neturi nerimauti pripažįstama, kad jų aiškiai visada. C ir kalbų, pavyzdžiui, Java ir C + +, jūs turite būti super aiškus. Ir, jei norite, kad kintamasis vadinamas i, turite pasakyti man, kokios kintamojo ji yra. Taigi, mes ketiname išspręsti šią problemą taip. Aš ruošiuosi eiti čia ir įveskite int i, todėl Aš paskelbiau kintamasis vadinamas i. Dabar aš praleidau vieną žingsnį. Aš žinoma, nėra inicijuojami jį, bet pažiūrėkime, jei ta bent markių Apsukite metalinis garsas nustoti skųstis. Taigi leiskite man perdaryti šią programą. Viskas gerai, dabar jis tiesiog skundžiasi dėl kitos priežasties. "Variable" i "yra niezainicjowanymi kai naudojamas čia." Viskas gerai, todėl tai gana aiškus. Inicijuoti tiesiog reiškia, kad ją nustatyti lygi, kurių vertė. Ir mes ne padaryti, kad, todėl leiskite man pabandyti lygus 0. Dabar pabandykime šį kartą ir iš naujo paleiskite Apsukite metalinis garsas. Parengė šį kartą. Ir aš apie ją paleisti. Bet didelis senas begalinis ciklas, nes aš jau padarė iniciacijos, aš padaryti su sąlyga, bet aš niekada padaryti bet incrementation natūra. Taigi, kaip aš galiu padaryti incrementation? Na, while cikle, atrodo, kad aš ruošiuosi tai padaryti kilpos viduje, nes daug kaip ir pirmasis savaitės pavyzdžiai daro sakinius, pavyzdžiui, su kojinės ir savęs skaičiavimo, mes turėjome padaryti kažkas pačioje pabaigoje, kaip grįžti į kitą eilutę. Ką daryti, jei aš einu į priekį ir daryti tai i + +? Tegul ne netgi kompilować. Sugauti mane jau. Kas yra negerai čia? Auditorija: [nesigirdi]. David J. Malan: Taigi tai tikrai ne int. Tai aš. Ir garbanotieji petnešų, kaip ir anksčiau, įdubimas nepakanka. Taigi dabar aš statyti. Taigi, o aš yra mažesnis nei 10, spausdinti žvaigždę tada i prieaugio. Ir būdas, o kilpos darbai yra ta, kad kuo greičiau paspauskite apačioje kilpa, kuri šiuo atveju atrodo, kad 10 eilutėje, jis ketina grįžti į LINE 6, kurį pasiekus būklė bus tikrinama dar kartą. Ir jei aš vis dar mažiau nei 10, mes darysime linijos 8 ir tada 9, tada mes nukentėjo 10 ir grįžti iki 6, ir vėl vėl ir vėl ir vėl, kol, kaip aš yra mažesnis nei 10. Todėl galime iš naujo paleisti čia. Gerai, mes surinkome gerai. Leiskite man iš naujo paleisti kilpa. Ir dabar ji iš tikrųjų atrodo, kad darbas. Taigi pliusų ir minusų? Na, kiek ten iš tikrųjų nėra PIO visa toks mielas. Viskas gerai, tai buvo - Ak, tai buvo nelaimingas atsitikimas. Viskas gerai, todėl grįžkime už linijos. Taigi kilpos yra gražus, nes jie super aiškus. Ir nors jie šiek tiek clunky rašyti, tai labai galingas, ir tai leidžia daryti daug dalykų vienu metu. , O kilpos, neatrodo, kad didžiulis vertės tik dar, nes jis jaučiasi, mes tiesiog turime daugiau dirbti. Mes turime pradėti iniciacijos čia, atnaujinti žemai čia, ir mes turime prisiminti, padaryti viską, kad. Taigi, mes pamatysime, kad laiku, o kilpos, iš tikrųjų skolinti patys tik skirtinguose kontekstuose, įvairūs duomenys struktūras, pavyzdžiui, sąrašus ir maišos lenteles, ką mes susisieksime su vidurio semestrą. Bet dabar, žinau, kad šis trečiasis tipas, žinomas kaip do- while cikle. Ir mes matėme tai trumpai. Ir tai gali būti itin naudingi pset 1. Bet kada norite kažką daryti, ir tada patikrinkite, ar naudotojas bendradarbiavo, ir jei jos nesutiktų, tai padaryti dar kartą, do- while cikle skolina pati tokios logikos. , Nes, kaip užsisakyti iš viršaus į apačią čia rodo, nereikia pažodžiui reiškia, kaip tai padaryti. Ir tai padaryti vėl ir vėl, kas gali būti? Gal tai reiškia, raginančią GetInt arba GetString ir tada tikrinti GetInt ar GetString vertę ir tada šaukiantį vartotojo, jei jie nėra bendradarbiavo prašydama jų vėl ir vėl ir vėl. Ten, kur norite kartą kažką daryti, tada patikrinkite, ar tam tikrą sąlygą. Taigi, pabandykime tai. Leiskite man iš tikrųjų pakeisti dabar do-while cikle. Ir aš ruošiuosi eiti į priekį ir atlikite šiuos veiksmus. Taigi, atlikite šiuos veiksmus. Darykime int i = GetInt (), bet tegul pirmas pranešti vartotojui ką daryti. Taigi šiek tiek skiriasi, šį kartą. "Duok man int". Todėl aš naudoti printf už tai. Ir dabar aš ruošiuosi eiti čia, ir aš ruošiuosi tai padaryti o aš, tarkim, didesnė negu: - pažiūrėkime, i, tarkim, mažiau kaip 0, ar i didesnis nei 10. Kitaip tariant, aš noriu numerį 1-9, tiesiog savavališkai. Taigi, aš naudoju bendrą loginę išraišką čia įsitikinkite, kad i yra mažesnis už 0 arba didesnis nei 10, atveju aš tai darys kilpą čia dar kartą. Taigi dar kartą, tai padaryti - o aš yra mažesnis už 0 arba i yra didesnis nei 10. Taigi dabar eikime į priekį ir tai padaryti, kai mes padarėme, kad. Tegul tiesiog padaryti greitai normalumas patikrinti. printf ("Ačiū, i% d", i). Taigi tai paprasta programa, prašo vartotoją int todėl, kad jis yra per tam diapazoną nuo 1 iki 9 imtinai, ir tada dėkoja vartotojui, primindami jiems, ką jie tiesiog įvestas, kaip šiek tiek normalumas patikrinimo. Bet galime pamatyti, jei tai veikia, kaip numatyta. Leiskite man eiti galva čia ir iš naujo paleisti, kad kilpa. Hmm. "Naudoti nedeklaruojamo identifikatoriumi" i ". Tai keista. Maniau, kad mes nutarė, kad. Tas pats simptomas, tačiau skiriasi kodas. Taip? Auditorija: [nesigirdi] viduje dviejų, mes turime [Nesigirdi]. David J. Malan: Būtent. Taigi tai mus veda į temą, žinomas kaip taikymo sritį. It turns out, kad C, dar kartą, tai tikrai pateksite pažodžiui. Ir jei jūs darote kažką panašaus į tai, kur Jūs pareiškiate int ir tada priskirti tam tikrą vertę, bet jūs padaryti, kad viduje Garbanotasis petnešos pora, ką č Ar tai reiškia, kad jūs tik nori tuos 32 bitus, žinomas kaip "i egzistuoti aplinkybės tų Garbanotasis petnešos, per linijų 6 iki 9. Taigi, aš deklaruojama, ir jis priskiriamas vertė atitinka 8, bet kuo greičiau gauti už žemiau garbanotas petnešomis 9 linija, i nebėra taikymo sritį, taip sakant. S-C-O-P-E. Tai nebėra teisinga kontekste. Taigi, dabar yra ne i, kad tai kaip nors mes dar net nebuvo paskelbė jį ne visi. Taigi, kas yra nustatyti tada kažką panašaus į tai, jei priežastis yra ta, kad aš buvo deklaruota per klamrami yra, matyt, blogai? Čia? Auditorija: [nesigirdi]. David J. Malan: Taip. Taigi, mes galime inicijuoti jį ne. Taigi leiskite man eiti į priekį ir ištrinti deklaracijos dalis, pagal kurią Nurodoma reikiamos rūšies ir leiskite man tai padaryti čia. Taigi, linijos 5, tai dabar sako: "Duok man int. Call It i. Pranešimas 9 eilutėje, aš nenoriu tai padaryti, nes aš jau turi 32 bitus. Aš nenoriu prašyti kompiuterį skirtingų 32 bitų. Noriu naudoti tuos pačius 32 bitus. Ir dabar, nes aš deklaruota linijos 5, jis vis dar teisėtu jį naudoti, atitinka 11 ir 12 linijos. Taigi, leiskite man pabandyti perkompiliuoti ir pamatyti jei Apsukite metalinis garsas sustoja šaukti. padaryti kilpą. Tad dabar ji yra "numanomo deklaracija funkcijos 'GetInt negalioja C99 ". Kas tai? Taip? Auditorija: [nesigirdi]. David J. Malan: Taip. Taigi dabar, kad aš iš tikrųjų, naudojant GetInt, tai nėra kažkas, kad tiesiog ateina su C. Tai ateina iš CS50. Taigi, mes turime čia. Ir leiskite man grįžti prie greitai žemyn čia ir iš naujo paleiskite padaryti. Gerai, pagaliau. Dabar mes nutarė, kad ir kitų klaidų. Leiskite man dabar paleisti linijos ir pamatyti, kas atsitiks. "Duok man int." Aš duosiu jai 11. Aš duosiu jai -1. Aš duosiu FOO. Aš duosiu jai 5. Ir dabar ji iš tiesų veikia. Tačiau greitai pasikeitė dėl priežasčių čia. Kodėl ji sako, bandykite dar kartą vieną iš šių laikų, bet duok man int kitus tris kartus? Kodėl tai, kad elgesys skiriasi? Auditorija: atidavė jį eilutę. David J. Malan: Atsiprašome? Auditorija: Jūs davė eilutę. David J. Malan: Taip. Taigi, mes davė jam šiuo trečiuoju bandymu eilutę, Įvedžiau FOO. Foo yra eilutė. Tai akivaizdžiai ne int. Ir CS50 įgyvendino GetInt, kad mes ne patikrinti, jei kažkas yra mažesnis už 0 arba didesnis nei 10 jums, nes, kaip mes žinome iš anksto, kokios int tu nori? Bet minimaliai mes galime patikrinti už jus, ar vartotojui bent įveskite sveikasis skaičius? Ir jei jos nesutiktų, mes klykauti vartotojo įvesdami "retry" ekrane. Taigi dabar mes turime programą, kuri ciklais. Gerai. Dabar, kuris iš jų yra tarsi geriau konstrukto? Taigi, tai yra, kai viskas pradeda gauti šiek tiek nepatogus, tai, kad jūs turite prisiminti, kad paskelbti kintamąjį čia , jei norite naudoti viduje kai garbanotieji petnešų ir už jos ribų. Bet net jei tai atrodo šiek tiek paslaptingas ne pirmas žvilgsnio, tiesiog dar kartą, prisiminti paprastą logiką. , Kad galėtumėte naudotis nieko C, ar tai funkcija arba tai kintamasis, jūs turite jį įtraukti, jei tai funkcija kažkurioje bibliotekoje, ar jums reikia jį deklaruoti. Bet dabar jūs turite būti ypač atkreipia dėmesį į tai, kad jūs nedeklaravę teisinga taikymo sritį. Jūs nesate išleisti jį labai stipriai viduje skliausteliuose. Taigi, leiskite man iš tikrųjų įvirsta. Jei mes einame atgal į mūsų pavyzdžiui, iš anksčiau, ir aš einu atgal į už int, int i = 0; i <10; i + +, ir aš padaryti printf žvaigždes, kaip šis, ir tada uždarykite skliaustelius, ir dabar printf i dabar - remiantis ta pačia logika, kas nutiks, kai aš stengiuosi sudaryti šią programą? Auditorija: Neteisingas identifikatorius. David J. Malan: Taigi tai dar vienas neteisingas identifikatorius, nedeklaruota identifikatorius. Dabar, priežastis yra šiek tiek kitoks. Akivaizdžiai nėra garbanotieji petnešų, bet ta pati idėja, taikymo sritį, taikoma ta pati istorija. Jei turite paskelbta kintamąjį kaip aš viduje linijos, net jei jūs ne konkrečiai parašyti garbanotas petnešos, protiškai, vis dar galvoja apie juos, atveju i galioja tik viduje už linijos. Jis negalioja, kai jūs gaunate į kitą eilutę, kuris šis atvejis yra dabar 10. Taigi, vos keli klausimai, taikymo srities ir pan. Viskas gerai, bet kokių klausimų? Viskas gerai, todėl tai yra trivialus mažai programos rūšies, spausdinti tik mažos žvaigždutės. Bet pažiūrėkime, jei pamenate šią dainą čia. Tai nepaprastai erzina daina vaikams dainuoti mokyklinis autobusas ir panašiai. Bet kas malonu apie tai, kad ji turi šį cikliškumą, pagal kurią ji yra "99 alaus buteliai ant sienos, 99 buteliai alaus. Gerkite po vieną, perduoti jį aplink, 98 butelių alaus sienos. "Ir tada daina pakartoja 97, tada 96, tada 95, 94, visą kelią žemyn iki 0, jei jūs iš tikrųjų gavo, kad kiek autobuse. Todėl tai yra puiki programa rūšiuoti padargo, nes mano Dieve, jei jums gali tiesiog įgyvendinti tai su keliais eilučių kodo, jums gali išspjauti visą lyrics daina gana greitai. Bet pakeliui, dabar mes galime pradėti erzinti išskyrus kai šių pagrindinių ciklais ir dabar taip pat pristatyti funkcijas kad mes rašome save, grąžinti reikšmes kad mes aplenkti. Bet pirmiausia, kodėl ne mes einame į priekį ir imtis mūsų penkių minučių pertrauka? Ir kai mes grįžti, mes dainuoti šią dainą. Viskas gerai, todėl mes atgal. Ir kai aš sakau mes dabar dainuoti šią dainą, aš turiu galvoje programiškai, o ne žodžiu. Taigi čia mes turime beer1.c, kuris yra vienas įgyvendinimas pirma daina. Ir tik būtų aišku, tiems, kurie susipažinę su ką šis dalykas atrodo, leiskite man eiti į priekį ir padaryti beer1 Enter. Dabar leiskite man paleisti beer1, ir tai, ką mes pamatysime - kiek butelių alaus dar bus? Aš įveskite 99, kaip daina sako. Įveskite. Ir dabar, jei mes slinkti Oi jei mes slinkti visa tai, mes matome, kad tai iš tikrųjų dainuoti visą dainą. Palauk. Mano slinkties juosta mažai messed up. Leiskite naudoti didesnį lange. Taigi beer1, 99, čia mes einame. Taigi čia mes turime visą dainą, dainuojama daug greičiau, kompiuteriu, nei jis galėjo būti mūsų. Taigi, nors pastebėjote, cikliškumą. Ji sako, kad 99, tada 99, tada "vienas žemyn, perduoti jį aplink ", tada 98. Ir dabar jis kartojasi vėl ir vėl. Taigi, iš tikrųjų tai yra puiki proga tam tikros rūšies kilpų statyti. Atkreipkite dėmesį, kad aš tipo pjovimo kampo čia. Atkreipkite dėmesį, kad aš sakau "98 alaus butelių ant sienos, 97 buteliai alaus ant sienos ", ir kad buvo tiesiog , kad, kai mes gauname, kad viena alaus butelius, aš neturiu nerimauti, anglų kalbos gramatikos. Bet mes taip pat galime išspręsti šią problemą su trupučiu jei sąlyga, galbūt. Jei šis numeris yra vienaskaitos, eiti į priekį ir pasakyti "butelį", kitaip, jei tai [pasakyti "buteliai". Bet dabar, aš visiškai sumažinti tą kampą. Taigi pažiūrėkime, ką mes turime čia. Taigi, mes turime keletą viršuje komentarus. Aš Šios dvi bibliotekos, kaip mes dažniausiai buvo. O dabar leiskite man slinkti žemyn į pirmą faktinės eilučių kodo. Eilutė 17 prasideda pagrindinis. Linija 21 ir 20 turi, kiek butelių alaus dar bus? Ir tada aš vadinu GetInt. Ir dabar turiu šiek tiek yra normalumas patikrinti. Taigi tai yra susitarimas, kurį mes dabar pradėti tvirtinti griežčiau tikrinti vartotojo įvestį. Kartais jūs tiesiog nenorite, kad greitai juos vėl ir vėl ir vėl. Jei vartotojas varžtai ir nebendradarbiauja, gerai. Mesti ir tiesiog negali su jais susidoroti. Ir kad čia, ką aš darau. Jei n yra mažesnis už 1, aš tik ketina klykauti ne vartotojo, "Atsiprašau, kad neturi prasmės." Ir tada aš ruošiuosi savavališkai grąžinti 1. Taigi dar kartą, tai tik konvencija, priprasti prie. Dabar, nuneškite jį tikėjimu. Tačiau iki šiol, mes visada grįžti 0, nes mes jau sakiau, grįžti 0 žymi, ką? Auditorija: Sėkmės. David J. Malan: Sėkmė, štai ir viskas. Taigi dabar, kad mes pagaliau pradeda galvoti apie Ne sėkmė - Kitaip tariant, kampiniai atvejais, klaidų sąlygas dabar turiu begalinį tiekimą, arba ne mažiau kaip keturi milijardai galimų dalykų, kurie gali suklysti mano programos. Ir aš galiu pradėti priskirdami jiems atskirus numerius. Dabar, paprastai pakanka tiesiog grįžti kažkas kita, nei 0. Taigi, mes ketiname tiesiog grįžti 1 dabar. Bet 1 grąžinimo priežastis yra ta, kad kuo greičiau grįžti 1, atspėti, kas atsitinka su likusiu programos? Jis sustos. Štai ir viskas. Taigi faktas, kad aš 1 grąžinimą būtų veiksmingai trumpojo jungimo šios programos vykdymą, kad nieko žemiau 27 eilutėje bus toliau vykdomas. Kuo greičiau pagrindinių grįžta, ty jis. Viskas gerai, todėl, jei vartotojas nėra bendradarbiauti ir mes pasiekti 30 eilutėje nes jie įvedėte teisėtas numerį, čia yra mano įgyvendinti šią dainą. Taigi, aš pirmą kartą išspausdinti naujos eilutės simboliai, tik estetika. Dabar aš turiu už linijos. Ir pastebėsite, darau dalykus šiek tiek kita kryptimi. Aš neturiu daryti mažiau nei aš neturiu daryti + +. Galiu vietoj pasakyti, inicijuoti i kintamąjį, nustatyti, kad jis lygus n numeris, vartotojas turi įvesti, tada atlikite šiuos veiksmus, kad tol, kol i yra didesnis už 0, tada aš - Kai baigsite, vienas iš pasikartojančių šio ciklo. Taigi, mes galime tikėtis, naudojant už kilpos, taip pat. Dabar, tai yra beveik savaitę vienas stuff dabar su printf. Taigi print "% d buteliai alaus ant sienos." Print "% d butelių alaus. "Paimkite vieną, perduoti jį aplink." Spausdinti "% D butelius alaus ant sienos." Todėl vis dar% d, bet pastebėti, kad argumentas printf keičiasi. Po kablelio, turiu i, nes noriu pasakyti 99. Po šio kableliu, turiu aš, nes aš noriu pasakyti 99. Po šio kablelio, aš i - 1, nes noriu pasakyti 98 ši pirmoji iteracija, ir kt. Ir dabar žemyn čia, aš tiesiog turi šiek tiek kvailas mažai pastabą. Ir tada ligne 42, aš grįšiu 0 konvencijos, reiškiantis, kad viskas gerai. Taigi ką daryti, jei aš goofed? , Ką dažnai pasitaikanti klaida čia gali būti? Na, ką daryti, jei aš netyčia sakė, gerai, aš noriu skaičiuoti iki 0, noriu 0 butelius alaus ant sienos? Taigi aš sakau, aš yra didesnis nei arba lygus 0. , Kas turi būti simptomas, kad aš dabar pamatyti, jei aš perkompiliuoti beer1 ir jį paleisti? Auditorija: neigiamas. David J. Malan: Taip, tai gonna go neigiamas. Tai ne po viena klaida, neįtikėtinai dažnai pasitaikanti klaida padaryti. Leiskite tikrųjų grįžti į terminalo langą ir padaryti jį čia, todėl mes galime pamatyti daugiau metu. Įveskite, 99 butelius alaus. Arti, bet mes nuėjome vis tiek šiek tiek per toli. Mes dainavome dainą per toli, pavyzdžiui, kad mes dabar nukentėjo neigiamas skaičius. Todėl ji ne visada veikia. Viskas gerai, todėl mes galime lengvai nustatyti, kad grįžta į kaip ji kažkada buvo. Bet kas yra kai kurios galimybės dabar tobulinti? Na, leiskite man atidaryti beer2.c ir slinkite žemyn, čia ir imtis pažvelgti į šią versiją. Koks yra pirmas dalykas, kad šokinėja į jus kaip skiriasi šioje versijoje čia? Auditorija: [nesigirdi]. David J. Malan: Taip, taip, ne aš, nes tai įvyko me žinote ką, aš klausia vartotojui, jei tai n, ir tada aš nustatyti i lygus n, ir tada aš pakeisti i, bet aš niekada neliesti n vėl. Taigi, kas gi iš jūsų taškas, skiriant kitą 32 bitai i vadinamas tik todėl, kad aš galiu turėti kitą kintamąjį? Taigi šiuo atveju, aš tarsi pripažino, kad nereikalingas dizaino bruožas. Ir aš ketina pasakyti, o n yra didesnis už 0, eikite į priekį ir spausdinti tą pačią dainą, išlaikius n printf kaip Antrasis argumentas, n - 1, antrojo argumento žemyn čia. Ir tada kiekvieną šio ciklo iteracijos, eiti į priekį ir tik Mažėja n. Funkciškai, dabar ši programa bus identiškas. Jei aš tipo 99, n prasideda 99. Silpnėjimas, silpnėjimas, silpnėjimas, silpnėjimas. Aš ruošiuosi gauti visą kelią žemyn iki "vienas butelis alaus siena, vienas butelis alaus. Gerkite po vieną, perduoti jį aplink. 0 buteliai alaus ant sienos. "Galų gale, nes aš gauti su sąlyga teisinga. Jis yra didesnis už 0. Aš ne padaryti šią klaidą. Tai kas geriau, versija ar 2 versija? Taigi, aš girdėjau krūva szemraliście už du. Kodėl du? Kas tai? Auditorija: [nesigirdi]. David J. Malan: O, gerai. , Kad jis bus ne žemiau 0, tačiau atminkite, kad versijoje vienas, originalus korektišku nėjo žemiau 0 arba. Taigi nepamirškite, kad tai yra teisinga versija. Taigi leiskite bent palyginti du teisingus versijas. Kas yra argumentas už versijos du, mmm, geriau? Taip? Auditorija: Jis naudoja mažiau vietos. David J. Malan: Gerai, kad jis naudoja mažiau vietos, tiesa? Kadangi versija vienas naudojamas 32 bitų n, tada kitą 32 bitų, nes aš. Versija tik du naudoja 32 bitų n, kad Atrodo, kad pliusas. Kitos mintys? Ar kas nors nori ginčytis už vieną? Taip? Auditorija: Jūs turite naudoti papildomą eilutę kodo n -. David J. Malan: Gerai, tikrai. , Kad tai teisinga. Taigi, tai tik, bent jau man - Aš turiu galvoje, tai iš tiesų jaučiasi šiek tiek Mesje, į tai, kad Aš negaliu sutvarkyti vienoje iš hermetyzacji visi mano logika gražus linija, linijos, už linijos. Čia, aš tipo turi smeigtuko apie šią n - kilpa pabaigoje, nes tai logiškai būtina. Bet tai tipo trina man neteisingą kelią, tik todėl, kad atrodo, atskirai nuo čia logika, nors, vėl, tai būtina. Kitos mintys? Taip? Auditorija: [nesigirdi]. David J. Malan: Taip. Taigi, ką daryti, jei jums, o ne dainos pabaigos, norėjo spausdinti iš naujo dainos pavadinimą? Pavyzdžiui, "Ačiū, kad žaisti 99 butelius alaus", ar kažkas kvailas kaip tai? Bet esmė yra, jūs norėjote prieigą prie pradinės vertės. Tai, kad jūs mutavo arba pasikeitė n įjungtas kas iteracija ir todėl turi sunaikinti savo pradinę vertę reiškia, kad jūs tiesiog negali padaryti, kad pabaigoje. Dabar, be abejo, mes aiškiai neturi norite daryti kad šioje programoje. Taigi, who cares? Bet tai labai svarbių taškas. Ir būti sąžiningas, ten tikrai niekas teisingas atsakymas čia. Jie abu vienodai teisingi. Galėčiau būti įsitikinęs, bet kuria kryptimi. Aš pasakysiu, kad, apskritai, tai yra geras principas, jei paprašė vartotojas tikrą vertę ir saugomi kintamasis kaip n, tiesiog tarsi iš principo, tai tikriausiai gera laikyti, kad aplink. Ir bet kokius duomenis norite mutuoti vėl ir vėl, tik suteikti sau tos kintamojo kopiją, tik todėl, kad jūs turi prieigą prie originalaus. Jūs išleidžiate 32 daugiau bitų, tačiau tikrovė yra tokia kompiuteris, pavyzdžiui, dviejų gigabaitų RAM šių dienų, ir mes quibbling daugiau nei 32 bitų? Tikrai ne tokia baisi. Ir net čia, šio prietaiso pusę koncertą ar gigabaito RAM, 32 bitų, palyginti su 64 bitų, ne tokia baisi. Žinoma, šiandien, tai bus būdas priblokšti dydžio pačios programos, kuri bus kelis šimtus kilobaitų, jei ne keletas megabaitų, šių dienų. Toks protingas problemų, nė vienas teisingas atsakymas. Bet bent jau jie yra mintis, kad turėtų būti pradėti eiti per savo proto? , Nes pset 0, nors mes tikrai tik tikėtis, teisingumą, arba bent jau nepripažindama savo įvairių klaidų, kad galbūt susidūrė su, kaip mes judėti į priekį, dizainas bus dar vienas svarbus aspektas, rašyti kodą , o taip pat įvertinti mūsų kodą. Ir taip bent manoma, kad dalykų kaip šis. Ir tik todėl, kad kažkas veikia, nereiškia, kad jis yra geras, nereiškia, kad jis yra gerai suprojektuoti. Ir kad vienas iš dalykų mokymo FELLOWS ir problema rinkiniai padės mums erzinti dalis laikui bėgant. Na, ką apie, leiskite pasakyti, šią versiją? Leiskite man padaryti kažką šiek tiek seksualus čia per akimirką. Pirmiausia leiskite man atsikratyti šio. Ir dabar galime išspręsti šią gramatinę klausimą. Taigi, šioje versijoje, aš noriu nustatyti, kad gramatika , o ne tik pasakyti, turintis daug įterptinių sakinių s, pavyzdžiui, "butelį" ar "buteliai" - Aš nenoriu sumažinti tą kampą - Aš taip pat noriu, kad dinamiškai atspausdinti žodį "butelių" arba "butelis", taip naudojant šių% s vietos rezervavimo ženklus šiandien. Taigi aš tam tikromis sąlygomis reikia patikrinti, kas yra i vertė. Ir jei ji yra 1, Noriu pasakyti "butelį", ir, jei tai nieko dar, aš noriu pasakyti "butelių". Taigi, pabandykime tai padaryti. Taigi, jei i == 1, tada leiskite man eiti į priekį ir paskelbti Man reikia eilutę, todėl leiskite man padaryti string s1, nes tai pirmą eilutę, man rūpi dabar. Aš ruošiuosi pasakyti "butelį". Ir tada, pažiūrėkime, styginių S2 - ir aš paaiškinti, kur aš einu per akimirką - "Butelius." Taigi primena, kad šią dainą, mums reikia, kad būtų galima spausdinti potencialiai dalykus, dviem skirtingais žodžiais. Taigi, jei mes žiūrime atgal, atkreipkite dėmesį, kad kai mes gauti šis pavyzdys čia ", du buteliai alaus ant sienos, du buteliai alaus, vienas žemyn, perduoti jį aplink ", aš noriu ši ketvirta eilutė sako: "vieną butelį alaus Siena ". Taigi man reikia nuspręsti, aš noriu pasakyti" buteliai "arba "Butelis"? Todėl aš savavališkai pasakyti, viskas gerai, Aš ruošiuosi dabar deklaruoti kintamasis vadinamas S1, eilutę , kad ketina gauti prijungtas čia ir čia, , nes šie žodžiai yra visada vienodi, o tik todėl, kad pobūdis daina. Ir aš ruošiuosi skambinti s2, bet žodis Noriu galiausiai pasirodys čia. Dabar, tiesiog, 99 kartus iš 100, tai bus tas pats abiem iš šių atvejų, nes 3 yra dauginis, 2 [4 yra daugiskaita. Bet šiame kampo atveju, kai mes gauname 2 ir tada 1 arba net 1 ir tada 0, man reikia šią logiką. Taigi, aš turiu praleisti šiek tiek laiko gauti šią teisę, mano kodas. Taigi, jei aš tai padaryti, jei i == 1, tada nustatyti s1 lygios "butelio" ir s2 lygus "butelių", nes tai bus už 1 butelis, ir tai bus 0 butelių. Ir tai čia, ką tai? Tiesiog turi būti aišku. Tai tik komentaras. Taigi faktas, kad jūs galite turėti vienos eilutės komentarus reiškia, kad jūs galite komentuoti savo kodą, kaip šis, bet vienas bendras paradigma, taip pat tai, kad jei turite super trumpą frazę, kad norite įdėti save, ir tai tik lengviau skaityti įdėti į dešinę kodo eilutę pabaigoje, galite visiškai padaryti kažką panašaus į tai. Taigi, dabar ką daryti, jei galiu tai padaryti? Else if i nėra lygus 1. Taigi sprogimo lygus - šauktukas žinomas kaip "sprogimo". Taigi sprogimo = 1. Taigi, jei aš ne lygus 1, tai, ką aš vietoj norite daryti? Na, pirmas žodis, aš noriu būti, ką? Taigi Ieškomi žodžiai 1 turėtų būti "buteliai" daugiskaitinėse butelius, ir tada tai bus Val "buteliai", taip pat, dabar. Ir mes pamatyti, jei tai mums faktiškai gauna į kur mes norime eiti. Taigi dabar, jei aš slinkti žemyn, atkreipkite dėmesį, kad aš prijungti per ne tik aš, bet s1. Aš prijungti I ir S1. Ir tada žemyn čia, aš tikiu, minus 1, kuris yra toks pat kaip anksčiau, bet S2. Kitaip tariant, aš noriu pakeisti anglišką žodį pagrįstas šia logika. Dabar ten jau kai kurie šio kodekso problemos. Kas neveikia jau iš vartų? Taip? Auditorija: [nesigirdi]. David J. Malan: Būtent. Taigi, aš jau pažeidė taikymo sritį pamoką. Taigi, aš pareiškė, S1 ir S2, bet aš padariau jį viduje garbanotieji petnešų, o tai reiškia taip, šis kodas bus dirbti iki iki 42 eilutėje, bet kaip tik aš hit linija 43, atspėti, ką ne nebeegzistuoja? Na, atspėti, kas yra ne ilgiau taikymo sritį - nei s1 arba s2. Taigi, mes turime išspręsti šią problemą. Taigi leiskite man ištrinti deklaracijas. Ir aš palikti kintamųjų vardai ir ištrinti čia ir ištrinti. Ir ką linijos aš tikrai turėtų paskelbti šiuos dalykus? Auditorija: [nesigirdi]. David J. Malan: Taip, taip tikriausiai teisė čia, 33-ish ". Taigi styginių s1 ir styginių s2. Ir it turns out, kad galiu tai padaryti. Jei esate skelbiantis dvi to paties tipo kintamųjų, jūs iš tikrųjų galite tiesiog naudokite kablelį ir padaryti, kad C. Visi teisus, todėl dabar turiu du kintamieji - S1 ir S2. Aš priskirdami jiems jų vertybes sąlygos čia arba čia. Ir tada aš juos naudojant žemiau. Kaip gerai tai dabar vyksta į darbą? Na, tai dar šiek tiek Buggy, bet tegul bent jau matyti kaip toli mes Dotarłeś. Taigi, leiskite man eiti į priekį ir padaryti beer3. Ar tai beer3? Taip, tai yra beer3. O dabar leisk man eiti į priekį ir paleisti beer3. 399 99. Mes greičiausiai gali praleisti dauguma iš jų. Ir žemyn, pažiūrėk, kad. "Vienas butelis alaus ant sienos, vienas butelis alaus, vienas žemyn, perduoti jį aplink, 0 butelius alaus ant sienos ". Bet aš atkreipti Jūsų dėmesį tik pusę tirpalo. Rūšies įsukus čia. Taigi atrodo, kad tarpas tarp kampinių atvejai kyla, kai i lygus ką dvi vertės? Auditorija: 2, 1. David J. Malan: 2 ir 1. Tai ne 1 ir ne 1. Tai tikrai tik pastarosios dvi fragmentai šios dainos. Taigi, ką aš vietoj norite daryti? Taigi man atrodo, kad pagavęs tą atvejį, kai jei i == iki 1, tada pirmasis žodis yra "butelio", o antrasis žodis yra "Buteliai". Bet čia, noriu pakeisti, kad tai būtų == 2. Ir jei tai yra tuo atveju, ką aš noriu pirmas žodis turi būti? Auditorija: "Buteliai". David J. Malan: "Buteliai", kad dėl dviejų butelių. Ir tada šis žodis čia turėtų būti - Auditorija: "Butelis". David J. Malan: "Butelis", vienaskaitos. Viskas gerai, galime nutolinti, grįžti čia, iš naujo paleiskite padaryti, iš naujo paleisti beer3, tipas 99 vėl. Gerai ", segmentavimas gedimas (Core dempingo kaina)". Ką aš padariau ne taip? Auditorija: Jūs neturite vertę [nesigirdi]. David J. Malan: "O, puikus taškas. Viskas gerai, tai kas negerai čia? Taigi segmentavimo kaltės, ir mes iš tikrųjų ketiname pamatyti Tai gana kelis kartus į ateitį, sąmoningai. Bet dabar, ką tai iš tikrųjų reiškia? Segmentavimo kaltės beveik visada reiškia, kad turite kažkaip bandė operatyvioji atmintis, RAM savo kompiuteryje, kad jūs nevaldote, kad jūs ne iš tikrųjų paprašė operacinės sistemos. Taigi šiuo atveju, atkreipkite dėmesį, ką aš padariau, kuris yra trūkumų, mano logika. Aš priskiriamas S1 ir S2 vertę, jei i yra lygus 1. Aš taip pat padaryta, kad jei i yra lygus 2. Bet aš ne padaryti jį į begalinį skaičių kitų galimybės - visų pirma, 3 arba 4 arba taškas, taškas, taškų, 99. Taigi vienas fix gali būti tiesiog tegul turi kita būklę. Ir leiskite man eiti čia ir pasakyti, s1 lygus - koks jis turėtų būti? Auditorija: [nesigirdi]. David J. Malan: "Buteliai", nes bendruoju atveju, tai tiesiog tas pats. Taigi lygus citata, citatos pabaiga, "buteliai". Taigi, daugiskaitos buteliai, ir tada čia, daugiskaitinėse butelių. Gerai, kad dabar leiskite man eiti atgal į mano terminalo lange, perkompiliuoti, iš naujo paleiskite jį. 99. FIU. Ir tegul padaryti greitai normalumas patikrinti. Techniškai, mes norime norite perskaityti visus šiuos įsitikinkite, kad jie teisingi, tačiau pažvelkime jau žinomi nusikaltėliai. 3 buteliukai, 2 buteliai, 2 buteliai, 1 butelis, 1 butelis, 0 buteliai. Mes, atrodo, nustatyta bent jį dabar. Bet čia yra laimikis, kad tai, ką dievas baisu netvarka tai tik išspręsti kvailas vienas personažas gramatinė detalė. Todėl nėra priežasties, kad aš sumažinti šį kampą rūšies anksčiau, nes jis tiesiog visiškai erzina, kad turi parašyti tai daug kodą. Tačiau paaiškėja, kad yra šiek tiek daugiau elegantiškų būdai išreikšti tą patį dalyką. Ir mes galime tai padaryti tokiu būdu. Leiskite man palikti for a moment ekrane ir pristatyti kažką, žinomą kaip trijų komponentų operatorius. Tai vienos rūšies-LINER, kad tik reiškė, kad mūsų gyvena šiek tiek seksualesnis, kaip buvo žadėta. Ir aš ruošiuosi tai padaryti tokiu būdu. Duok man eilutę, pavadintą s1, ir leiskite man priskirti tai taip. (I == 1)? "Butelio", kitaip "buteliai". Styginių s2 gauna (i == 2)? "Butelio", kitaip "buteliai". Taigi, kas tada yra skirtumas? Šios dvi eilutės kodo, esu įsitikinęs, gali pakeisti visa ši netvarka. Taigi, aš vadinu tai netvarka, tik todėl, kad tipo trina man neteisingas būdas, kad ji tiek daug eilučių kodo. Nėra blogai. Tai nėra blogai dizainas. Patinka, tai yra visiškai teisingas ir puikiai baudą. Bet kodavimas pasireiškia varginantis, jei jūs turite išreikšti save taip, damn vėl ir vėl, ir vėl su paprasta scenarijus, kaip šis. Taigi C kai kurias nuorodas, kaip šis. Taigi iš esmės tai sako paskelbti eilutę, pavadintą s1 ir priskirti ją arba ši vertė, ar ši vertė, jei i == - atsiprašau, reikia pasakyti aiškiai. Pripažinti kintamasis s1, priskirti šią vertę, jei tai tiesa. Kitaip, priskirti jam šią vertę. Taigi, kitaip tariant, tai yra tarsi iš vienos eilutės būdas suprantama, jei kitur, bet daro pakeliui užduotį. Taigi, jei aš yra 1, tada eiti į priekį ir tai vadina "butelio". Ir tada tai kitas, vadina jį "Buteliai". Tuo tarpu, s2, antrą žodį, kad mes turime apibrėžti, jei i yra 2, mes nustatyti s2 "butelį". Priešingu atveju, nustatykite jį į "buteliai". Ir ką tai reiškia, kad dabar aš galiu eiti per šį, ir pašalinti visus tuos, kurių kodas linijos. Ir kai aš sakau, šiek tiek juokingai, kad tai yra dabar seksualesnis, tai seksualesnis stilistinio prasme rūšiuoti. Faktas, kad funkciškai, šis kodas yra iš tikrųjų ketina padaryti tą patį dalyką. Ir nors iš pradžių tai gali atrodyti šiek tiek paslaptingas žvilgsnio, nes nemačiau šį konstruktą prieš, aš teigia, kad jis galiausiai bus tiek daug daugiau įskaitomas ir daug lengviau mes, žmonės, rūšiuoti suprasti, nes dabar jūs galite tik skaityti kodas viskas vienoje eilutėje. Jis vis dar panaši dvasia, jeigu, kai tai yra būklę ir tai yra tai, kas viduje, jei ir tai , kas viduje else. Tačiau mes galime padaryti, tai tiesiog daug daugiau elegantiškai. Ir jei aš dabar eiti atgal į mano terminalo, ištrinti visus Šių eilučių ir juos pakeitė tik šių dviejų, perkompiliuoti, iš naujo paleiskite butelių alaus, 99, pranešimas, kad mano gramatika yra, iš tiesų, vis dar teisinga. Taigi dar kartą, ką nors pradėti. 2 butelius alaus, 1 butelis alaus. Atrodo teisė. Taip. Taigi mes turime daug daugiau glaustą sprendimą. Taigi tai taip pat, kaip jums patogiau su C, nebūtinai su pirmuoju pset ar net antros, bet suprasti, kad šie konstruktai gali leisti mums daryti tai, ko niekada elegantiškai. Dabar darykime Vienas kitas dalykas, čia. Leiskite man eiti į priekį ir atverti return1.c. Dabar galime pradėti spręsti kitą problemą taip, kad leidžia mums parašyti sudėtingesnius kodą. Taigi čia paprastas maža programa, kurios gyvenimo tikslas prieaugio vertes. Ir iš tiesų, galime žengti žingsnį atgal. Leiskite man tai padaryti rankiniu būdu. Leiskite man padaryti apimti ir int main (void). Ir tegul man paskambinti šiuo increment.c. Ir ką aš noriu daryti? Aš ruošiuosi eiti į priekį ir pasakyti kažką panašaus - mes vadiname numeriai ta pati - int x. Taigi, int x gauna 2; printf x yra% d, nauja linija, x. Taigi, aš rašyti greitai, tačiau tarsi pažįstama stuff dabar. Tada aš ruošiuosi daryti x + +. Tada aš ruošiuosi spausdinti tą patį sakinį dar kartą. Ir tada aš ruošiuosi grįžti 0 tiesiog uždaryti programą. Viskas gerai, todėl tai yra programa, kuri žingsniu skaičius. Tai pirmiausia ketina inicijuoti kažką 2 ir tada ji prieaugio ir vėl jį spausdinti. Todėl galime paleisti prieaugį, neįtikėtinai paprasta programa. Tačiau tarkime, dabar, kad aš noriu kubas vertę, todėl tai kažkas šiek tiek savavališkas. Ir aš iš tikrųjų norite daryti x gauna jį kubą. , Kad galėčiau naudoti tai, kas vadinama POW funkciją, bet aš ne tikrai žinote, kur dar. Taigi, aš ruošiuosi tai padaryti senamadiškas būdas. x kartų tai lygus x kartų x kartų x. Taigi, aš cubing vertę, padauginus ją vėl savaime ir vėl ir vėl, kad mes gauname iš 3 šiuo atveju. Todėl dabar numeriai turėčiau spausdinti turėtų būti, kaip matysime čia padaryti prieaugis, todėl tikrai ne tikrai prieaugio nebėra, bet mes palikti tik pavadinimas - 2 ir 8. Dabar, mes turime galimybę tobulinimas pradžią byloje, pagal kurią šis Kubas skaičių dauginant dalykas pati pati pati jaučiasi tai gali būti tiesiog naudinga turėti funkciją, panašiai kaip kažkas nusprendė prieš keletą metų - žinote, rūšies naudinga, jei vienas iš mūsų sėdi ir rašo printf kad likęs pasaulis gali jį naudoti, kodėl ne mes susėsti ir parašyti funkciją, vadinamą kubas kad šį Kubas už mus, mes neturime rankiniu būdu įgyvendinti vertybes čia cubing sąvoką? Taigi paprastas pavyzdys, bet eikime į priekį ir naudoti tai kaip galimybę rašyti savo funkciją. Taigi iki šiol, mes naudojamas tik pagrindinis, ir mes naudojame kitas nėra parašyta žmonių funkcijas, bet mes turime mūsų pačių. Taigi čia mes einame. Aš ruošiuosi eiti į priekį ir parašyti funkciją, vadinamą kubas. Ir aš norėčiau, kad jis būtų įvestį. Taigi jo indėlis bus sveikasis skaičius. Ir ką jis ketina daryti? Ji ketina paskelbti, kad int išėjimo = įvesties datos įvestis datos įvestis. Ir tada jis ketina grįžti, kad išėjimo. Ir tada aš turiu būti konkretus. Ši funkcija grąžina int. Taigi čia, kaip norite rašyti savo funkcijas. Jūs pirmiausia nuspręsti, kas Jūsų vardas funkcija bus. Ir apskritai, aiškinamasis kažkas yra gerai, todėl aš jį vadiname kubas. Tada turite nurodyti, ką ji ketina grįžti, kas jos produkcija bus. Ir mes neturime, kad daug galimybių. Int, char, plūdės, bool, styginių. Nes dabar, aš ruošiuosi klijuoti su int, nes aš noriu jį grįžti sveikasis skaičius. Tada jūs turite nurodyti, ką sąnaudas, jei tokių yra, yra. Ir jei kubas mano argumentas, mano kažkas tarp skliausteliuose, argumentas, kad jūs turite duoti vardą, kad galite skambinti ji ką nors, kaip jūs įgyvendinimo ar raštu ši funkcija, ir jūs turite suteikti jai tipo, kuris šiuo byla bus int. Taigi trumpai tariant, kubas yra funkcija, kuri užima sveikasis skaičius kaip įvestį ir grįžta kaip produkcija sveikasis skaičius. Taigi, ką daryti su tuo pirkimo? Na, o 14 eilutėje, aš pareiškiu, kintamasis vadinamas išėjimo, ir aš ją priskirti vertę, įvesties kartų įvesties kartų įvesties. Ir tada aš grįžti produkciją. Taigi, kaip aš galiu naudoti, tai tada? Ką aš pakeisti šiuos simbolius on-line 7 iki, jūs manote? Auditorija: [nesigirdi]. David J. Malan: Taip, kad kubo x. Taigi x yra kintamasis, tai reiškia, kad turi tam tikrą vertę. Laimei, tai tipo sveikasis skaičius. Ir todėl, kad x yra int, tai reiškia, kad galiu perduoti jį į kubą. Ir nors aš svarbesnio x vertę su verte kubo x, kaip buvo šiuo atveju iki šiol, bet kuriuo metu galite lygybės ženklą ir eilutės kodo dešinėje stuff bus įvykdytas ir tada bus priskirtas vertė kairėje. Operacijų, kad yra taip, kaip mes tikimės. Taigi tai veikia? Na, leiskite man eiti. Leiskite man atverti savo terminalo langą. Leiskite man padaryti prieaugį, Įveskite. "Numanomas deklaracija funkciją" kubo "yra negaliojantis C99 "Kaip žemę, C99 susijęs su kalbos C, nes jis buvo 1999 metais, kuri buvo apibrėžta per versijos atnaujinimas 1989, kuris yra atnaujinti, palyginti su pradine. Taigi, kad Visa tai reiškia. Taigi, ką tai reiškia, kad "numanomo deklaracija funkciją "kubas" yra neteisingas? "Tai čia. Jis turi teisę ten 12 eilutėje. Auditorija: [nesigirdi]. David J. Malan: Kas tai? Auditorija: Tai ne anksčiau. David J. Malan: Tai ne anksčiau. Taigi tai yra dalykas. C yra kind of stupid, arba C kompiliatorius yra kind of stupid. Jie tikrai tik tai, ką galite pasakyti jiems tai padaryti. Ir jie, visų pirma, tik skaityti savo kodą viršų į apačią, kairės į dešinę. Taigi, jei kompiliatorius, Apsukite metalinis garsas, skaito savo kodą, 1 eilutė, skaičiai, kaip tai padaryti. O, čia yra pagrindinis. Gerai, leiskite man eiti į priekį ir deklaruoti kintamojo x. Leiskite man ką nors atspausdinti. Linija 7, kas gi yra kubas? Tai nedeklaruojamos stdio.h. Jis nėra ateis su C. Aš neįsivaizduoju, ką daryti. Ir taip Apsukite metalinis garsas tiesiog laidavimus ir išsikrausto su tos klaidos pranešimą. Taigi, mes galime išspręsti šią problemą įvairiais būdais pora. Mes galime mokyti Apsukite metalinis garsas, ką kubas tiesiog perkelti, kur deklaracija. Taigi, aš iškirpti ir įklijuoti jį ant pagrindinis. Dabar suprantame, kad tik todėl, kad pagrindinis nebėra pirma, tai vis dar vykdomi pagal nutylėjimą. Pagrindinis yra pagrindinis. Nutylėjimą funkcijos pavadinimas. Nesvarbu, kur ji yra faile. Bet bent jau dabar Apsukite metalinis garsas matė kubą, kol aš jį naudoti. Taigi pažiūrėkime, jei Apsukite metalinis garsas yra laimingesni dabar. Padaryti prieaugį, jis parengia šį kartą. Leiskite man paleisti prieaugį. Ir iš tiesų, atrodo, kad reikia dirbti. Dabar galite sugalvoti su scenarijų galiausiai kur tai neįmanoma įdėti visas funkcijas aukščiau visų kitos funkcijos. Jums įstrigti šiame begalinis ciklas iš tikrųjų, kur šis vaikinas nori būti čia, bet tai vaikinas turi būti ten. Taigi, kad ne visada veikia. Taigi, laimei, C turi elegantišką sprendimą. Aš ruošiuosi įdėti atgal, kur jis buvo, tik todėl, kad aš norite, kaip iš esmės, kad pagrindinis visada turi būti viršuje, nes jis tiesiog malonu matyti, ką ši programa Ar pagal nutylėjimą. Ir tai, ką aš ruošiuosi daryti čia paskelbti, kas vadinama prototipas. Aš einu iš naujo paskelbti savo kubo funkciją, tiesiog kopijuoti ir įklijuoti. Tiesą sakant, tai ne pažodžiui. Taigi, pažodžiui kopijuoti ir įklijuoti eilutę 15 iki aukščiau LINE 6. Nesvarbu, ką linija baigiasi. Taip atsitinka, kad linija 4. Tačiau ji turi būti prieš pagrindinius valgymus. Bet pastebėsite skirtumą. 4 eilutė baigiasi kabliataškiu, o tai reiškia, hey, Apsukite metalinis garsas, imtis savo žodį, kad egzistuoja funkcija vadinamas kubą, kad mano int ir grąžina int. Bet aš nesu gonna pasakyti, ką jis dar. Tiesiog žinau, kad aš pažadu pasakyti, galiausiai. Ir iš tiesų, dabar ji gerai, kad tai yra žemiau. Taigi, šis paprastai yra geriau, nes tada viršuje failą, galite tiesiog Wyklepać, greitą ugnies, viena eilutė kiekvienas, kas savo funkcijų pavadinimai yra, kas jų įėjimai, kokie jų rezultatai yra. Ir būtų aiškiau, įvesties paprastai reiškia argumentus arba parametras, sinonimu. Produkcija - tai sugrįžimo vertę, ką reikia ranka į mane. Taigi, šiuo atveju čia, kubas buvo deklaruotos viršuje, bet apibrėžta, kitaip žinoma kaip įgyvendinama, apačioje. Taigi dabar grįžkime čia ir iš naujo paleisti šią. Taigi dabar leiskite man eiti į priekį ir iš naujo paleisti, kad, iš naujo paleiskite prieaugis. Ir dabar atrodo, kad reikia dirbti tik baudą. Taigi dabar mes galime eiti į priekį ir veiksnys iš kažką panašaus alaus pavyzdį į šią ketvirtosios versijos. Taigi leiskite man slinkti žemyn čia. Ir pastebėjo, kad I rūšies paėmė šią pamoką į širdį tiesiog dabar. Tai, kad aš dainavo tą patį strofa vėl ir vėl ir vėl, tas pats choras daina linija, veltinio patinka, kodėl ne aš veiksnys, kad iš į funkciją? Ir iš tiesų, tai turėtų būti vienas iš motyvus. Be to, tai, kad kažkas pasaulyje galbūt norėsite naudoti kubo funkciją - tai gera priežastis faktorius ką nors ir parašyti savo savo individualizuotos funkcija - jei ten kodo riekė savo programa, kuri tiesiog daro konceptualus jausmas, kad jūs tipo norite suteikti jai pavadinimas -, kaip šiuo atveju, choras - tada jūs galite taip pat rašo, kad kaip atskira funkcija. Jūs neturite rašyti viską, kas yra pagrindinis, jei jis tiesiog jaučiasi švaresnis atskirti jį ir suteikti jai pavadinimą. Taigi, šiuo atveju čia, pastebėsite, kad turiu komentarą viršuje tai funkcija, kuri tik dainuoja apie nurodyti numeriai butelių. Pastebėsite čia, kad man nereikia skambinti šių dalykų, įvesties ir išvesties. Tiesą sakant, šį kartą aš tiesiog vadinamas mano įėjimas B buteliukui. Ir pastebėsite čia, tuščia rodo tai, ką? Kad choras - Auditorija: Ar negrąžina. David J. Malan: Ar grąžina reikšmę. Ir iš tiesų, funkcijos neturi grąžinti reikšmes. Jie gali tiesiog kažką daryti. Jie gali turėti, kas yra vadinama šalutinį poveikį, kuris šiame atvejis yra tiesiog visa krūva spausdinti ekrane. Taigi pastebėti, kad šį kodą čia, aš tiesiog tik pavogė iš ankstesniame pavyzdyje. Vienintelis skirtumas yra, o ne i "My kintamasis, aš dabar naudoja mano kintamojo b. Taigi, aš turiu b žemyn čia, turiu b žemyn čia, turiu b minus 1 žemyn čia. Bet kodas yra lygiai toks pats. Bet tiesiog parodyti jums, dabar, kaip mes galime naudoti, leisk man eiti į priekį ir iš tikrųjų pakeisti, kad tai yra už linijos. (int i = n i> n, i -). Taigi aš pavogta, kad iš mūsų ankstesniame pavyzdyje. Anksčiau, tai atitinka 37, kad man būtų pradėtas dainuoti šią erzina dainą. Bet vietoj to, aš tik ketina dabar vadiname choras i. Atlikta. Taigi dabar kiekvieną šio ciklo iteracijos, aš vadinu tai kitas funkcija, choras,, kad man teko rašyti. Ji buvo parašyta ne kažkam kitam metų. Bet choras, tuo tarpu, naudoja printf spausdinti iš šių keturių eilučių. Bet faktas, kad aš vėl ir vėl paskambinus choras kilpa reiškia, kad aš ruošiuosi gauti, pačioje pabaigoje, tiksli pačios dainos, kaip aš iki šiol. Taigi trumpai tariant, dabar, jei aš pažvelgti atgal į mano kodas, nors funkciniu požiūriu yra lygiavertis, pastebėsite, kad ji pradeda gauti dar lengviau skaityti. Nelabai tiksliai žinoti, kaip GetInt įgyvendinimą. Atvirai kalbant, aš nežinau, kaip yra įgyvendinamas choras. Bet tai nesvarbu man. Man tai nerūpi, nes dabar galiu rūšiuoti, kaip žmogaus, skaityti tai iš viršaus į apačią. Ir todėl, kad funkcijos yra vadinami pagal tai, ką jie daryti, mano kodas yra vis įskaitomas. Ir mūsų programos gauti daug sudėtingesnė - semestro pabaigoje, jums bus raštu šimtus eilučių kodo kalbomis, pavyzdžiui, PHP, JavaScript ir pan. jūs pamatysite, kad tai taip daug paprasčiau, nei sekti tai, ką padarei. Ir kai pradėsite bendradarbiauja su draugais ar partneriai ar kolegos, galėsite rašyti daug daugiau Dideli pradedant vykdyti šiuos pagrindinius programos statybiniai blokai. Taigi, su ta sako, kodėl ne mes jį vadiname dieną? Ir mes matome, trečiadienį. [Plojimai]