[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]