[Powered by Google Translate] David J. MALAN: Selvä, tämä on CS50, ja tämä on
alkavat viikolla kaksi.
Kiitos.
Aloitetaan täällä puhelinsoitolla.
Olen aikeissa soittaa 617-BUG-CS50.
CS50: Tämä on CS50.
Shuttle Poika, paina 1.
Aloittaa alusta, paina 9.
DAVID J. MALAN: Niin hän sanoi Shuttle Boy, paina 1.
Joten aiomme paina 1.
CS50: Mikä on alkuperä?
Quad, paina 1.
Mather, paina 2.
Boylston, paina 3.
Lamont, paina 4.
Mem Hall, paina 5.
Aloittaa alusta, paina 0.
DAVID J. MALAN: Me paina 1 Quad.
CS50: Seuraava sukkula lähtee tämän erittäin minuutissa 13:10, ja
sitten 13:20, 13:30, 13:40.
Tämä on CS50.
>> DAVID J. MALAN: Eli tämä on CS50 ääni.
Ja se on esimerkki lajittelee lopullinen hankkeita,
Esimerkiksi voit purra kohti
lukukauden loppuun.
Esimerkiksi, että shuttleboy.cs50.net olemassa -
oikeastaan ​​hanke, että olen ensimmäinen kirjoitti otettuaan CS51
takaisin kun olin perustutkintoa.
Ja inspiraatio täällä oli tuolloin, kaikki heillä oli
painettu bussikuljetus aikataulut, ja ei ollut
käsite etsivät asioita verkossa.
Ja niin minä tavallaan kyyhky yhden viikonlopun, kaadetaan kautta
painettu aikataulu, ja siirretty se tietokoneohjelma.
Ajankohtana, tietokone-ohjelman tapahtui kirjoitetaan
in C. Ja olet todella juoksi sen kirjoittamalla Shuttle Boy
vilkkuu kehotteen olemme tehneet tähän mennessä.
Mutta vuosien mittaan, se kehittyi hetkessä
messaging bot.
Se on kehittynyt viime aikoina osaksi tällä sivustolla, osaksi
SMS-pohjainen työkalu, samoin kuin tähän ääni-pohjainen työkalu.
Ja tämä on aavistuksen asioita, joita voit
tee itsellesi lukukauden lopussa.
>> Esimerkiksi siellä, SMS versio Shuttle Boy tapahtuu
toimimaan seuraavasti.
Jos kännykkäsi, voit lähettää tekstiviestin 41411 ja
sitten lähettää erikoismerkkejä sboy varten Shuttle Boy,
jonka jälkeen A ja B, jossa A on peräisin, ja B on
kohde -
Esimerkiksi Boylston Space Quad -
Mitä sinun pitäisi saada takaisin muutamassa sekunnissa on teksti
viesti Shuttle Poika kertoo tarkasti, milloin
Muutaman seuraavan sukkulat ovat tästä näkökulmasta menossa että
kohta B.
Ja tämä on enemmän yleinen esimerkki siitä, mitä kutsutaan
käyttäen API.
>> Joten esimerkiksi, tämä tässä on vain shuttleboy.cs50.net,
todellinen web-pohjainen ruumiillistuma tästä.
Mutta tietojen korostaa tätä ja muita sovelluksia, jotka CS50
on kehittänyt kaikki ovat alttiina kaikille täällä muodossa
API, Application Programming Interface.
Ja se on vain hieno tapa sanoa, että ihmiset haluavat meidän päälle
Internet ja muut on viettänyt aikaa luoda
ohjelmisto, jonka voit käyttää, jotta napata tiedot meiltä ja
sitten rakentaa oman sovelluksia päälle
Tämän tietokokonaisuutta.
Niinpä esimerkiksi tämä Kuljetuspalvelu Boy API sivu täällä, mikä
sattuu olemaan CS50 käsikirja, lähinnä asiakirjat
miten voit mennä noin pyytää CS50 palvelimet tietoja.
Esimerkiksi, jos olet perehtynyt CSV-tiedostoja, pilkku
erotetut arvot, nämä ovat vain eräänlainen nopea ja likainen
Excel-kuten tiedostoja.
Joten voit kysyä Shuttle Boy kaikkien tiedot kaikista
taloja ja niiden GPS koordinaatit, ja saat
takaisin lähinnä taulukkolaskenta kaltainen, että
voit sitten lukea osaksi ohjelmaa oman ja sitten
tuottaa tuloksia, kuten Shuttle Boy itse
sattuu tehdä.
Niille tutumpi, enemmän modernia tieto edustustot
ovat JSON, JavaScript Object Notation.
Jotain tulee takaisin sinua kohti
lukukauden loppuun.
>> Mutta jälleen kerran, tämä on vain yksi monien CS50 oman API.
Ja jännittävä asia on nyt näinä päivinä, Facebook ja
Twitter ja Google ja melko paljon joka suosittu verkkosivusto ulos
siellä on jonkinlainen API, mikä tarkoittaa, että jos olet lukenut
dokumentaatiota niiden verkkosivuilla, kirjaudut
tilin, voit alkaa kirjoittaa ohjelmisto päälle
mitä työkaluja tai tietoja, jotka yritys siellä tarjoaa.
Ja niin yksi oman opetuksen kaverit pari vuotta sitten
kirjoitti Mac-versio tästä.
Joten linkkiä Mac täällä ylhäällä vasemmalla, voit itse
Lataa Mac OS widgetin, joka toimii oman Mac tehdä
samanlaisia ​​asioita.
Eli kyse on rakentaa päälle aineistojen, kuten nämä.
Mutta siitä lisää loppupuolella lukukauden.
>> Joten sukeltaa todella nopeasti ja bug, vain sellaista saada
asiat lämmennyt tänään, ja muistelen joitakin
asioita me katsoimme viime viikolla.
Erityisesti haluan mennä eteenpäin ja vetää vaikkapa
Tässä esimerkki tästä.
Buggy1.c, tämä on saatavilla kurssin kotisivuilla Jos haluat
haluat ladata sen ja penkoa itse.
Mutta katsotaanpa zoomata täällä tähän melko lyhyt ohjelma, ja juuri
supernopea kertaus joitakin kulmakivistä että
mennään todellakin vain alkaa ottamaan itsestäänselvyytenä.
>> Joten sininen kamaa, riveillä 1: stä 9, ovat vain
softball kysymyksiä.
Joten nämä ovat vain kommentteja.
Niillä ei ole toiminnallista merkitystä.
Mutta he huomautuksia siinä mielessä, että he toteaa
Minä, ihminen, teki itselleni niin, että luento ja sen jälkeen
luento, voin oikeastaan ​​muista mitä tämän ohjelman
ei ilman lukea läpi rivi riviltä ja
uudestaan ​​historiaa mielessäni.
Lisäksi jos ojennan tämän ohjelman joku muu kuin
te, se on paljon selkeämpi teille, koska kommentit näin,
mitä ohjelman todella tekee, tai ainakin mitä
Ohjelman pitäisi tehdä.
Vai ei se oikein on toinen asia.
Nyt, C, multi-line kommentteja, muistuttaa, että linja
kukaan täällä on maaginen symboli, / *.
Se tarkoittaa tässä tulee alku kommentin.
Ja Nothing Else Matters, kunnes tulet loppuun terminaattori,
joka on * /, päinvastoin.
Niin että minulla on 80-joitakin outoa tähteä tänne
vasemmalta oikealle on oikeastaan ​​vain esteettinen yksityiskohta.
Sillä ei ole toiminnallista merkitystä.
>> Nyt Entä line 11?
Mitä tämä tehdä maallikon termein?
Mikä tuo on?
YLEISÖ: Sisältää vakio.
DAVID J. MALAN: OK, hyvä.
Niin se sisältää stdio.h kirjasto.
Joten mitä se tarkoittaa?
No, sisällä tiedoston, stdio.h ovat koko joukko
toiminto ilmoitukset -
eli koodi, että joku muu kirjoitti.
Ja täydellinen esimerkki toiminto, joka on ilmoitettu
stdio.h on -
joka suosikki tähän mennessä?
Niin printf, yksi yleisimpiä käyttää, varmasti
varhain, kuin kirjasto on olemassa.
Jos olen pois että koodirivin, clang tulee huutaa
minua jotain käyttämällä pimeää symboli.
Jotain pimeän lienee avainsana, sillä
emme ole ilmoittanut kääntäjä mitä printf näyttää
kuten ellemme kuuluu, että linjaa.
Ja enemmän maanläheinen, todella, mitä se viiva on sanonta on
avata tiedoston, stdio.h, missä se on palvelimen
kiintolevy tai laitteen kovalevylle, ja kopioi se
tuolla minun tiedoston, ilman minun
ottaa tehdä manuaalisesti.
>> Nyt, kun saamme tänne main ennen pitkää aloitamme
kiusanteko toisistaan ​​mitä int ja mikä tyhjiö on.
Mutta nyt, katsokaamme kolmea
15-17.
Tämä tässä Väitän niin buginen.
Rivi 7 minun kommentit sanoo "pitäisi tulostaa 10
tähtiä, mutta ei. "Miksi tätä ei tulostu, itse asiassa,
10 kuten tähdet?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Aivan.
Niin huomaa, että olemme alkaneet laskea alkaen 0.
Ja tämä on todella yleissopimus ohjelmoinnin ja
tietojenkäsittelytiede yleisemmin alkaa laskea
0-1 sijaan.
Ja tämä oikeastaan ​​vain johtuu siitä, että
Esimerkiksi silloin, kun meillä oli kahdeksan ihmistä lavalle, kun
kukaan ei ollut nostaa kätensä, he olivat
kaikki tehokkaasti nollia.
Ja niin se on vain eräänlainen tietokoneen yleissopimuksen niin,
siksi alkaa laskea 0.
Jos tämä on pienin määrä voi edustaa binary.
>> Joten tässä olemme aloittaneet alustetaan i 0.
Olemme asetetaan i 0..
Mutta sitten tein tämän virheen tässä, että minun on pienempi tai
yhtä suuri kuin 10.
Mutta jos luulet, että läpi, jos alkaa 0 ja sitten menen
enintään 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, olen itse menossa
tulostaa 11 tähtiä näyttöön, koska olen mennyt ylös
ja vastaa 10.
Niin helppo korjata tässä sitten on, mitä?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Vain muuttaa sen alle.
Jos todella haluat, voit tehdä tämän.
Mutta yleensä, että on paheksuttavaa.
Ja niin alkaa laskea alkaen 0 on vain jotain sinun pitäisi
tyypillisesti tottua.
Nyt, mitä tästä koko rakennelma itsessään?
Tämä linja 15 demarks varten silmukka.
Joten ei ole funktio.
Se on vain lausunto.
Se silmukoiden rakennelma, kuten näimme Scratch.
Ja se on kolme osaa.
Huomaa, että on olemassa ensimmäinen osa
vasemmalle puolipiste.
On keskimmäinen osa kahden puolipisteillä.
Ja sitten on oikea osa oikeaan
Toisen puolipiste.
Nyt, ensimmäinen näistä tekee mitäkin?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Back siellä?
Niin?
YLEISÖ: Alustus.
>> DAVID J. MALAN: Alustus.
Mitä tämä tarkoittaa?
Olemme julisti muuttuja nimeltä i.
Se on tyyppiä int, koska olen määritellyt int i.
Ja olen alustettaessa i arvo 0.
Joten mitä tämä todella sanovat?
Se tehokkaasti sanoo tietokoneeseen hei, anna minulle tarpeeksi
muisti, tarpeeksi RAM, sopii numero, ja sitten laittaa
numero 0, että kimpale muistia.
Ja kuten syrjään, kuinka suuri on int tyypillisesti ainakin sisäpuolella
Laitteen?
YLEISÖ: 32 bit.
David J. MALAN: 32 bittiä.
Niin se tarkoittaa, että antaa minulle 32 bittiä, joka tunnetaan myös 4 tavua,
ja laita arvo 0 sitä, mikä on melko helppoa, koska
Se vain tarkoittaa, asettaa kaikki bitit 0.
>> Niin nyt, toinen osa tässä on kunnossa.
Ja kunnossa, kuten nimestä voi päätellä, mitä tarkastetaan
uudestaan ​​ja uudestaan ​​ja uudestaan, onko se totta vai tarua.
Joten tämä on vain sanonta tee seuraava riviä koodia -
nimittäin linja 16, koska se on ainoa sisennetty
alla -
niin kauan kuin i on pienempi kuin 10.
Ja jokaisen iteraation kautta silmukka, tee
inkrementointi, joka tässä tapauksessa on i + +.
Nyt, sen ei tarvitse olla i + +.
Se voisi olla i -.
Mutta jos tein tätä, mitä käytös menee
olla tämän ohjelman?
YLEISÖ: Se tulee olemaan ikuinen silmukka.
DAVID J. MALAN: Se tulee olemaan jonkinlainen loputon silmukka,
ellemme onnistaa jälkeen negatiivinen 2000000000 tai niin.
Ehkä asiat kietoa, vain luonne äärellisen
bittien määrä, että olemme varattu int.
Mutta se varmasti tulee toistaa paljon enemmän kuin 10 ja
varmasti yli 11 kertaa täällä.
>> Ja nyt, aivan kuten syrjään, ymmärtää, että i + + ja I -
ovat oikeastaan ​​vain syntaktinen sokeri.
Se on vain lyhennetty merkintätapa mikä on hieman enemmän
erikseen kirjoitettu seuraavasti:
i = i + 1.
, Joka on identtinen i + +.
Se vain eräänlainen näyttää kauniimpi sanoa i + +.
Se on suppeampi, luettavuutta.
Ja niin useimmat ihmiset tekevät, että sen sijaan.
Mutta tämä on identtinen toiminnallisesti
mitä juuri näimme.
Eli lyhyesti sanottuna, pikaratkaisua tässä vain sanoa iteroida i
0-kaikki tavalla jopa alle 10.
Ja sitten me todellakin saada 10 tähteä.
>> Joten kokeile tätä.
Saanen avata terminaali alareunassa.
Sallikaa minun mennä hakemistoon, että tämä on in
Ja aion kääntää sen manuaalisesti clang nyt.
Ja aion koota tätä buggy1.c, Enter.
Ja nyt buggy1, miksi ei ole Tiedostoa tai hakemistoa
kutsutaan buggy1?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Joo.
Joten se on todella kutsutaan a.out.
Joten muistaa jos vain ajaa clang, missä clang on
kääntäjä, ja et määritä nimeä, jonka haluat
antaa ohjelman, se tulee oletuksena a.out.
Joten todellakin jos teen ls -
oho.
Ja minä didn't - musta-valko kysymys joidenkin
olet kohdannut on korjattu.
Mutta anna minun tehdä tätä.
Siellä on a.out vasemmalla puolella siellä.
Joten meidän täytyy juosta a.out sijaan buggy1.
>> Joten anna minun mennä eteenpäin ja tehdä tätä.
. / A.out, Enter.
Ja minä ilmeisesti ole mitä?
YLEISÖ: Tallenna.
DAVID J. MALAN: Save my tiedosto.
Niin että se on helposti ratkaistavissa lyömällä Control S tai menossa
Tiedosto, Tallenna, kuten useimmissa ohjelmissa.
Päästä minut tänne, tyhjentää näytön, käynnistä se uudelleen.
Ja siellä on vielä bugi.
Joten mitä tapahtuu -
YLEISÖ: Et kääntää.
DAVID J. MALAN: Ah, hyvä.
En kääntää sitä.
Kuin idiootti, Etsin koodia nähdä mikä on vialla.
Niin clang buggy1.c, nyt a.out.
Ja Huh pelasti.
>> Joten se näyttää hieman ruma, koska ei ole mitään uutta linjaa
missä tahansa ohjelman.
Mutta jälleen kerran, se on vain esteettinen yksityiskohta.
Ja ainakin jos laskemme ne pois, meidän pitäisi
nyt nähdä 10 tällaista tähteä.
No, entä tämä toinen lämmittely esimerkki?
Joten buggy2, väitän, että tämä versio myös tulostaa
10 tähteä, yksi per rivi.
Joten tällä kertaa, minulla rivinvaihtomerkki, vain tehdä
asioita hieman kauniimpi.
Mutta sen sijaan mitä saan on tämä.
Joten anna minun tehdä clang buggy2.c, Enter.
Nyt sitä taas kutsutaan a.out.
Enter.
Näen vain yhden uuden rivin, vain viimeinen uuden linjan, että
siirtyy minun nopeasti seuraavalle riville.
Ja silti selvästi olen tulostus *, sitten uusi rivi,
* Ja sitten uusi rivi.
Mutta mitä bug täällä?
Niin?
YLEISÖ: [kuulumattomissa].
>> DAVID J. MALAN: Aivan.
Joten toisin joitakin kieliä, kuten Python, jossa sisennys
todella on toiminnallinen merkitys, ja
kieli kuten C -
kuten näemme, PHP, JavaScript -
sisennys on oikeastaan ​​vain ihmiselle eduksi.
Niin että olen sisennetty rivi 16 ja 17 näyttää hyvältä,
mutta sillä ei ole mitään toiminnallista merkitystä tässä.
Jos haluan molemmat linjat suorittaa osana varten
silmukka, sitten täytyy liittää ne aaltosulkeita tekemällä näin.
Voit leikata joka nurkkaan ja jättää aaltosulkeita jos
Mikä asia?
YLEISÖ: Vain yksi rivi.
DAVID J. MALAN: Vain yksi rivi.
Joten se on vain eräänlainen mukava eräänlainen syntaksin yksityiskohtaisesti, jotta
et tuhlaa aikaa kirjallisesti kolme riviä, joista kaksi on
aaltosulkeita vain kirjoittaa riviäkään koodia.
Mutta jos sinulla on kaksi tai useampia linjoja, me
todellakin täytyy tehdä tämä.
>> Joten nyt haluan pelastaa tämän.
Anna minun mennä eteenpäin ja ajaa uudelleen clang.
Sitten haluan uusintana a.out, ja nyt saan niitä yksi per rivi.
Nyt a.out taas on eräänlainen tyhmä nimi ohjelman.
Miten voin kertoa clang todella antaa minulle tiedostonimen
joka on käyttäjäystävällisempi, kuten buggy2 itse?
Hieman selvemmin?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: ok, joten en voi itse ottaa hyvin
käyttäjäystävällinen pikakuvaketta ja vain kirjoittaa tekevät buggy2.
En määritä. C tässä tapauksessa, ja paina Enter.
Ja mitä tekee ei se laatii buggy2.c For Me
pyytää clang tehdä se.
Erityisesti se kehottaa clang, se kulkee clang käyttäen paljon enemmän
komentoriviargumenteista tai kytkinten kuin minun todella tarvitsevat.
Aikanaan tulemme takaisin, mitä kaikkia näitä eri
arvoituksellinen yhdistelmätekniikoiden ilmaisuja tarkoittaa.
Mutta nyt, että on vain säästää minua vaivaa
tarvitse muistaa ja ottaa kirjoittaa kaikki nämä
eri yhdistelmätekniikoiden ilmaisuja.
Ja ylösalaisin se lopulta on
että nyt minulla on buggy2.
Jos haluan tehdä tämän manuaalisesti, vaikka olen
voi sen sijaan tehdä -
clang-o buggy2 ja sitten buggy2.c.
Ja joka samalla antaa minulle tiedosto nimeltä buggy2.
>> Eli lyhyesti sanottuna, clang on kääntäjä.
Tee vain käyttäjäystävällinen työkalu, joka Käytämme enemmän
ja enemmän, koska se vain alkaa
yksinkertaistaa asioita meille.
Ja palaamme 0 lopuksi.
Nyt vain siksi, mutta aloitamme kiusanteko että osa
tänään ja keskiviikkona.
Mahdolliset kysymykset tästä mitään?
Niin?
YLEISÖ: [kuulumattomissa]
Onko lainausmerkeissä siellä?
DAVID J. MALAN: OK.
Kun olen kirjoittanut ls lainausmerkkeihin, joka oli minulle tehdä joitakin taika
kulissien takana korjata vian.
Unohdin, kuten olemme kertoneet monet teistä
keskustelupalstat, tehdä -
teemme tätä nyt - sudo yum-y update appliance50.
Oho, että on kirjoitettu oikein.
Joten laite on kuin käyttöjärjestelmä.
Se juoksee tämän käyttöjärjestelmän kehittämisen nimeltään Fedora.
Ja nyt, koska minun hidas internet-yhteys, olen
todella huuhdella se.
Joten käynnissä sudo yum update, kuten me teille tehdä
Harjoitus on lähinnä kuin käynnissä automaattiset päivitykset
Mac OS tai Windows.
Ja syy käynnissä tämän vuoden alusta lähtien
Harjoitus on, koska kun olemme luoneet laitteen, minä
sekaisin, ja olen vahingossa tehnyt kaikki ohjelmat näyttävät
musta musta ruutu, minkä vuoksi et näe niitä
oletuksena.
Mutta uusin versio laitteen korjaa tämän.
Ja minä korjata että sisäänajon aikana kun olen Internet
liitettävyys.
>> Joten lainaa vain kätkee minun vikani, hyvin hienovaraisesti,
ilmeisesti.
Muita kysymyksiä?
Kyllä?
YLEISÖ: Mistä tee tulee?
[Kuulumattomissa]
DAVID J. MALAN: Hyvä kysymys.
Mistä ei tee kotoisin?
Se on Linux-ohjelma, joka on jo useiden vuosien ajan, pitkä
ennen CS50.
Ja se tulee käyttöjärjestelmän kuten Fedora.
Se ei tule CS50 kirjastosta.
Itse asiassa ainoa asia, jotka tulevat CS50 kirjastosta
toistaiseksi, että olemme nähneet, ovat GetString, GetInt kaikki
näitä Get toiminnot, ja sana merkkijono, ja jossain
määrin sana bool.
Mutta me kiusaa että toisistaan ​​kun sukeltaa CS50
laite itse.
>> Joten kyllä, yksi kysymys.
YLEISÖ: Kun sanoit tehdä ja sitten buginen, miten
tietokone tietää [kuulumattomissa]?
DAVID J. MALAN: Hyvä kysymys.
Joten kun vain ajaa tekemään buggy1 tai tehdä buggy2, miten
ei tee tietää?
Joten oletuksena, jos kirjoitat tehdä buggy1, tee etsii
tiedosto nimeltä buggy1.c.
Ja sitten se suorittaa asianmukaista clang komennot,
mikä ohittaa oletustulostusnopeutta tiedosto nimeltä a.out.
Itse asiassa, jos katsomme, mitä tehdä, mitä -
Katsotaanpa lopettaa tämän.
Jos katsomme mitä tehdä todella tekemässä, tee buggy2,
se on jo ajan tasalla.
Haluan siis poistaa rm-komennon,
Ohjelma kirjoitin aiemmin.
Kirjoittamalla Y-E-S vahvista, että haluan poistaa sen.
Jos nyt eivät tee, huomaat, että tämä erittäin pitkä rivi,
on tämä viimeinen juttu täällä,-O buggy2.
Kaikki tekevät tekee kulkee tämän väitteen, niin sanotusti
Kalahtaa, joten minun ei tarvitse kirjoittaa sitä itse.
>> Selvä, joten nopea pari hallinnollisten
ilmoitukset.
Joten kohdat, joita alkoi virallisesti tulevana
Sunnuntai, haluat aina tuoda, jos
sinulla on yksi, kannettava tietokone.
Jos sinulla ei ole kannettavaa tietokonetta, älä tavoittaa minua
pudottamalla minulle sähköpostia.
Ja me selvittää työnkulkua.
Mitä yleensä löydät jaksossa on, että ne ovat osa
käsitteellinen, osa käytännön.
Me nimenomaan käyttää osan kysymyksiä, osa
viikon Harjoitus, kävellä läpi joitakin
käsitteellinen materiaalia luento.
Ja että kaikki nykyisen ongelman asetettu.
Ja me myös sukeltaa joitakin käytännön toimintaa, joskus
josta vaaditaan esitettävä, joskus
mikä ei.
Esimerkiksi tämä ensimmäinen viikko, he tarkoitus yhtä
warm-up harjoitus.
Ja huomaat, että nämä ongelmat ovat oikeastaan ​​vain se.
He tarkoitus olla melko pieni, mutta ei välttämättä
triviaali ohjelmia kirjoittaa, jotka eivät välttämättä ole
jännittävä ja itsestään, mutta on hyvät mahdollisuudet
harjoitella syntaksi, jossa uusia toimintoja, mukavasti
osiossa, jossa sinulla on muutama oppilastoverisi esittämään mahdollisimman
hyvin kuin TF.
>> Ja mitä me teemme ajan on käytettävä työkalu nimeltään CS50 Spaces,
jolloin sijasta käyttää CS50 Appliance, sinun
vaan mene Web-sivun selaimessa, jossa voit
kirjoittaa koodia selainikkunassa aikana osiossa.
Ja sitten jos otat, sinun opetuksessa kaveri voi sitten näyttää
mitä se on olet kirjoittamassa näytön selaimessasi
ikkuna ylös luokan edessä, myös nimettömänä tai
julkisesti, jotta hän voi sitten kävellä läpi
oppilastoverisi mitä teit hyvin, mitä et tehnyt hyvin.
Ja vielä, varma kaikki tämä voidaan mukavasti anonyymeiksi.
Mutta se tulee olemaan mukava tilaisuus paljon enemmän
vuorovaikutteisuus kuin jotain luentoa sallii.
>> Sillä välin, meillä on nämä asiat nimeltään Super
osastot, jotka ovat valinnaisia, mutta ne ovat avoinna kaikille
luokka, jotta voit tehdä enemmän kootusti
Ongelma asetettu.
Tässä aikataulussa.
Tämä on nähtävissä myös etusivulle osoitteessa cs50.net.
Huomaa, että siellä tulee olla hakkeri-spesifinen
yksi huomenna iltapäivällä.
Ja me elokuvan yksi tänään ja yksi huomenna ja lähettää ne
verkossa 24 tunnin kuluessa.
Joten jos et voi tehdä mitään näistä ajoista, ei hätää.
Ja vielä, aikataulu on verkossa nyt cs50.net.
>> Kannalta leikkaus itse sinun pitäisi saanut
sähköpostitse ohjeistaa sinua menemään kurssin kotisivulta löytää
ulos osiossa.
Jos elämä on muuttunut ja sinun täytyy muuttaa osan
ei ole ongelma.
Mene takaisin sama URL-osoite cs50.net/section, yksikkö,
ja voit täyttää kaltaisessa muodossa, jotta voit
sitten antaa meille mieltymykset.
Ja me jatkotoimet viikon loppuun mennessä, mitä voimme
mahtuu.
Viime viikolla, muistuttaa, että ehdotimme käyttää CS50 Keskustele,
Kurssin keskustelu työkalu, luennossa.
Joten meillä oli 40 kysymystä, jotka pyydettiin ja
vastasi aikana luento.
Joten se tuntui toimivan hyvin, joten jatkamme
yrittää tehdä tätä.
Jos aikana luento, et vain levollisin mielin lisääminen
kätesi, ei ole ongelma.
Siirry cs50.net/discuss, lähettää sinne, ja yksi opetus
apurahan joko vastata sähköisesti tai nostamaan
käsi puolestasi anonyymisti kysyä, riippuen
luonteesta kysymykseen.
Ja mitä palautetta, yleensä psets tulee
palasi viikon kuluessa.
Koska se vie vähän aikaa osioihin saavuttaa
tasapainon, ensimmäinen PSET, 0 ja 1, on hieman
myöhässä kuin asiat asettuvat.
Mutta pysy kuulolla että lähiviikkoina.
>> Selvä, joten haluan laittaa minun vakava
ääni vain hetken.
Joten tämä on todella mielenkiintoinen ilmastonmuutoksen olevan
ottaa tätä keskustelua, mitä kaikkien muiden asioiden
meneillään kampuksella niihin liittyvät.
Mutta CS50 on varmasti ollut sen historian tähän nimenomaiseen
aihe, niin paljon kuin joka vuosi, tämä tietenkin monien
vuotta, Ad-levyt noin 3% luokkaa.
Tämä viimeisin vuosi, 2011, CS50 Ad-pysäytettyä 35 opiskelijaa.
Tämä ei ole mielestäni johtuu epäselvyyttä.
Ymmärtäkää, että kurssin oppimäärä on sivun
lausuma, jossa selitetään missä linjat ovat.
Tuo sama ilmoitus toistuu jokaisen
Ongelma asetetaan sivulla yksi.
>> Joten Mainitsen tämän nyt todellakin vain tehdä
ihmiset tietoisia tästä.
Ja olemme yrittäneet eri asioita.
Ja mitä ajattelin me tekisimme tänään on vain hetki
todella katsoa joitakin aikaisemmista tapauksista, jotka ovat tulleet esille.
Sen sijaan pitämään nämä likainen pikku salaisuuksia, oikeastaan
huomauttaa, mitä opiskelijat ovat tehneet ja miten olemme havainneet
sen ja oikeastaan ​​yleisenä motivaatio on
vaikka tätä keskustelua.
Niin, että sanoi, linja lähinnä on tämä -
kohti oppimäärä, olet tervetullut, olet kannustetaan, jotta
puhua luokkatoverit.
Tuo koko tarkoitus ottaa nämä yhteistyöhön
virka-ajan Annenberg ja kannustaa ihmisiä
Opinnäytetyön toimimaan yhdessä.
Mutta piirretään, kun on aika todella kirjoittaa
lopullisen ratkaisun.
Puhuminen Englanti, täysin kunnossa, puhuu pseudo-koodi,
täysin kunnossa.
Sähköpostitse luokkatoveri teidän PSET, antaen heille näyttää yli
Näytön kädet jatkaa kirjoittamista,
yli linjan samoin.
Älä odottavat oppimäärän erityisen linjat.
>> Mutta vain maalata kuvan siitä, miten tämä on valitettavasti
Todellisuudessa, ymmärtää, että on olemassa sivustoja siellä, jotka
on ratkaisuja tähän luokkaan ja monet muut luokat.
Se, että sinä tai noin 3% teistä tietää, että on olemassa
tarkoittaa sitä, että me tiedämme, että on olemassa.
Se, että on olemassa sivustoja, kuten tämä, jossa
voi maksaa joku todella tehdä ongelman sarjaa - tämä oli
todellinen tapaus, joka tuli viime vuonna.
Tämä on sivuston nimeltä odesk.com.
Ja Tim oli nimi henkilö täällä joka julkaistavaksi
Tämä sivusto ja pyysi jonkun tekemään hänen PSET 7
Tässä nimenomaisessa tapauksessa.
No, odesk.com on hyvin Google-osaa, ja mekin olemme
erittäin hyvä Googling.
Tässäkin on sivustoja - ja tämä on melko
kamalaa, rehellisesti.
[Naurua]
DAVID J. MALAN: hauska juttu tästä sivustosta on jos
luet Tietoja-sivulla, he puhuvat yrityksen
Kulttuuri ja kuinka asiakaspalvelu on heidän numero yksi
ensisijaisesti varmistaa, että tehtävät saavat
kääntyi ajoissa.
>> Mutta kaikella vakavuudella, jälleen, että nämä sivustot
olemassa, ymmärtävät mekin olemme tietoisia
tällaisia ​​sivustoja.
Ja antaa sinulle tunteen minkälaista tämä yleensä
vie, emme yleensä ole suuria skandaaleja, joissa ihmiset
tekevät yhteistyötä minkäänlaista laajamittaista, vaan pikemminkin
se on näitä myöhäisillan hetkiä heikkous, jos sinulla on niin
paljon tehtävää, se on 04:00, olet uupunut, ja te
ajatella itse, hyvin, haluan vain vilkaista minun
kämppäkaveri n tai ystäväni koodia tai vastaavaa.
Ja ilmenemismuotoja tämä valitettavasti kuuluu Student
Lähettämällä jotain tällaista ja Student B lähettäminen
jotain tällaista, mikä varmasti on tietokone
tiede luokka, on erittäin helppo tietojenkäsittelyasiantuntijat
havaita ohjelmistoja.
Tämä on toinen yhteinen paradigma, jossa olet tavallaan
työskennellyt yhdessä jonkun, ehkä puhu
Englanti, hienosti, pseudokoodilla.
Mutta sitten se tulee aika todella esittää, ja psets
vain saada vaihtaa sähköpostitse tai Dropbox tms..
Mutta yrittää tehdä vähemmän ilmeistä, että tämä on
mitä on tapahtunut, niin tämä on mitä toimitetaan.
Tämäkin ei kömmähdys hyvin kirjoitettua kappaletta
ohjelmistoja, kuten meidän on todellakin havaita
tällaisia ​​asioita.
Ja todellakin mitä teemme on ajaa ohjelma, joka vertaa kaikkia
Tämän vuoden väitteet vastaan ​​kaikki viime vuoden
väittää vastaan ​​kaiken löysimme
Internet, vastaan ​​jokainen työpaikka verkkosivuilla siellä.
Se on hyvin automatisoitu.
Ja niin me teemme tätä todella suuri oikeudenmukaisuus on 97%, joka
todella toimivat niiden aasit pois tässä ja muissa
luokat ja ottamalla kaikki tämä vaivaa, jotta työ
he lopulta esittämään on omia.
Ja voin mennä vuosikausia.
>> Nämä ovat vain muutamia viime vuoden tapauksia.
Muutaman opiskelijat esittivät nämä tiedostot identtisesti varten PSET 2,
PSET 3, PSET 4, PSET 5, PSET 6, PSET 9.
Tässä tapauksessa tämä oli tietokilpailu 0 ja viime vuonna, jossa kaksi
Opiskelija esitti identtisesti tämä lause joukossa
muut "pyynnön tyyppi -" piste, piste, piste.
Joten vaikka luokassa 600 saimme havaita tämän
on toimitettu tietokilpailuja.
Eli lyhyesti sanottuna, tässä - suoraan sanottuna inhoan joilla tällaista
keskustelu - mutta tämä on todella tahallinen vaivaa
tänä vuonna yrittää ajaa alas, että numero.
Koska vaikka sanomme tällaisia ​​asioita joka
vuosi, luulen todellisuus ottaa asuivat sitä muutaman
Vielä sekuntia tavallista ja oikeastaan ​​vain muistuttaa
että mitä voisi tuntua, eh, ei niin iso juttu, ainakin
muistelen tässä vaiheessa, niin oikeudenmukaisuus
itseäsi ja luokkatoverit täällä.
Joten jos sinulle tulee kysyttävää, missä linja
on, kiitos vain tavoittaa minua henkilökohtaisesti.
Mutta vastaus on aina, täysin korosti
viime hetken, käteistä myöhään päivässä.
Tai jos se on asia, jolla ei ole mitään myöhässä päivän,
rehellisesti, lähetä minulle henkilökohtaisesti.
Me keksiä jotain.
Älä laita aikaa täällä Harvardissa vaarassa.
>> Nyt ajattelin meidän pitäisi keventää tunnelmaa, joten
mukaan tämä seuraavan dian.
[Naurua]
DAVID J. MALAN: Tämä sivusto oli loistava.
Olen itse saanut hieman hajamielinen.
On tämä yksi.
Ja sitten tämä oli hämmästyttävä.
Okei, niin ajattele, että pentu myöhään yöllä, kun tehdään
nämä päätökset.
Selvä, joten takaisin enemmän hauskaa ja vähemmän vakavia juttuja, kuten
olosuhteissa.
>> Selvä, joten puhuimme lyhyesti näistä.
Tämä on jotain, joka on todennäköisesti melko tuttuja
maailman Scratch.
Ja maailman Scratch, meillä on tämä tarve joskus
mennä tekemään haarukat tien.
Joko teemme tämän tai tuon tai tämän toinen juttu täällä.
Ja kun me haluamme tehdä tämän, voimme käyttää, C nyt, tämä jos
muu rakentaa.
Ja sitten täällä on Boolen lausekkeita.
Esimerkiksi Boolen täällä, voimme TAI
ne yhteen, siinä mielessä, että meillä on tämä sairaus TAI
tämä edellytys.
Me voimme ja niitä yhdessä, siinä mielessä, että haluamme
Tarkista tämä kunnossa ja kunnossa.
Ja tässä meillä kytkimen lausuman nyt, mikä ei ole niin
samanlaisia ​​syntaktisesti kuin erilaisia ​​ehtoja, mutta
antaa meille mahdollisuuden tehdä vastaava, jos if, if, else
jos, ja vastaavat yksinkertaisesti luetellaan ne tapauskohtaisesti
mukaan tapauskohtaisesti.
Joten näimme nuo viime kerralla.
Ja sitten aloimme joka koskettaa asioita, kuten silmukoita.
Näimme näistä vain hetki sitten.
Mutta on näitä muita looping konstruktioita.
>> Esimerkiksi, tämä tässä.
Joten while (ehto), tehdä sitä uudestaan ​​ja uudestaan.
Joten pohjimmiltaan, mikä näyttää olevan erilainen välinen
varten silmukka ja tämä taas silmukka täällä?
Tämä silmukka ja tämä taas silmukka.
Niin?
Mikä tuo on?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Hyvä.
Eli taas on silmukka kunnossa, siellä on selvästi
enemmän syntaksi.
On tämä alustusta, on tämä päivitys.
Vuonna while-silmukka, siellä on vain tämän ehdon.
Näyttää siis siltä, ​​että se on hieman supistettu vs. varten
silmukka, mikä tarkoittaa, että jos haluamme olla muuttujia ja haluamme
on inkrementointi, oikeastaan ​​on
tehdä sitä itse.
>> Joten anna minun mennä eteenpäin ja avata gedit.
Saanen siirtyä laitteen.
Ja eiköhän tehdä nopeasti vähän esimerkiksi, että
erottaa yksi näistä muista.
Ja takana mielessäni täällä, minun pitäisi sanoa yksi asia.
Olen erikseen mainittu nimi Tim.
Tim oli todella joku, että opiskelija yritti löytää tekemistä
läksyjään heille.
Meillä ei ollut Tim kyseisessä jaksossa.
Joten ymmärtää, etten esitetty opiskelija, se ei ollut oppilas.
Se oli satunnainen henkilö internetissä tekemään asioita
valtakirjalla viime vuonna.
Niin huomaamme, että myös.
Eli tässä tapauksessa tänne, anna minun mennä eteenpäin ja
avata uuden tiedoston.
Tiedosto, Uusi.
Tämä antaa minulle välilehti täällä.
Anna minun mennä eteenpäin ja tallenna se loop.c.
Anna minun mennä ja valitse Tallenna.
Ja sitten tänne, mennään eteenpäin ja alkaa kirjoittaa
# Include .
Saanen Lähennä
Nyt teemme int main (void).
Nyt haluan mennä eteenpäin ja tehdä (int i = 0; i <
oh, 10; i + +).
Ja nyt aion mennä eteenpäin ja tehdä tulosta tähti että olen
aikaisemmin.
Ja sitten lopussa ohjelman, olemme juuri menossa
tulostaa uuden rivin, juuri niin että minun nopea
ei näytä kaikkia sotkuinen.
palauttaa 0.
Näyttävät syntaktisesti oikein?
Tähän mennessä.
Joten katsotaanpas.
>> Sallikaa minun loitontaa mennä minun pääteikkuna.
Ja anna minun mennä eteenpäin ja ajaa silmukka, koska kutsuin tämän
asia loop.c.
Joten tee silmukka.
Näyttää koota OK.
Saanen ajaa silmukka, ja nyt Enter.
Ja se näyttää painettu 10 tähteä.
Joten vain muuntaa tämä taas silmukan ja mitä
erilaisia ​​asioita me kompastua.
Joten sen sijaan tämän, anna minun mennä tänne ja sanovat, kun i on
vähemmän kuin 10 -
Haluan päästä eroon varten silmukka.
OK, joten meillä on pari ongelmaa jo.
Eli ehto on sama, mutta olen ilmeisesti puuttuu
alustus.
Minulta puuttuu inkrementointi.
Joten mitä pitäisi kääntäjä todennäköisesti kertoa minulle, kun yritän
kääntää tämän ohjelman?
Niin?
YLEISÖ: [kuulumattomissa].
>> DAVID J. MALAN: Hyvä.
Joten se tulee sanoa jotain pimeää - tässä
Tällöin muuttuja i.
Ja todellakin, käytä Pimeän tunnisteen i.
Ja niin tämä on vastoin kieliä kuten PHP ja
Python ja Ruby, jonka jotkut teistä ehkä tuttu,
jossa voit vain sellaista alkua käyttäen muuttujia
halusipa ja ei tarvitse murehtia nimetä ne
nimenomaisesti aina.
C ja kielet kuten Java ja C + +, sinun täytyy olla
erittäin selkeä.
Ja jos haluat muuttuja nimeltä i, sinun täytyy kertoa minulle
millainen muuttujan se on.
Joten aiomme pitää korjata seuraavasti.
Aion mennä tänne ja kirjoita int i; siksi
Olen ilmoittanut muuttuja nimeltä i.
Nyt olen ohitetaan askeleen.
Olen ilmeisesti ole alustettu, mutta katsotaanpa, että
vähintään merkkeihin clang lopettaa valittaminen.
Sallikaa minun remake ohjelman.
>> Okei, nyt se on vain valittavat
eri syystä.
"Muuttuja 'i' on alustamattoman kun käytetään täällä." Selvä, joten
se on aika selkeä.
Alustetaan tarkoittaa vain asettamalla se yhtä suuri kuin arvo.
Ja olemme tehneet sitä, joten haluan kokeilla on 0.
Nyt kokeile tätä uudelleen ja uudelleen ajaa clang.
Koottu tällä kertaa.
Ja olen aikeissa käyttää sitä.
Mutta iso vanha loputon silmukka, koska olen tehnyt
Alustuksen olen tehnyt kunnossa, mutta en ole koskaan tehnyt
minkäänlaista inkrementointi.
Joten miten voin tehdä inkrementointi?
No, kun silmukka, se tuntuu aion olla
tehdä sen sisällä silmukan, koska aivan kuten ensimmäisessä
Viikon esimerkkejä tekee kiehkura rakenteita, kuten kanssa
sukat ja itsensä laskenta, meidän piti tehdä
jotain aivan lopussa, haluaisin palata seuraavalle riville.
Mitä jos menen eteenpäin ja tehdä tämä i + + täällä?
Älkäämme edes kääntää tätä.
Catch minua jo.
Mikä on vialla täällä?
YLEISÖ: [kuulumattomissa].
>> DAVID J. MALAN: siis todellakaan ole int.
Se on i.
Ja aaltosulkeita, kuten ennen,
sisennys ei riitä.
Joten nyt olen tässä rakentaa.
Joten kun i on pienempi kuin 10, tulostaa tähti,
Sitten kasvattaa i.
Ja miten kun silmukka toimii on, että heti kun osut
silmukan pohjaan, joka tässä tapauksessa näyttää rivi 10,
se tulee palata linja 6, jolloin
ehto tarkastetaan uudelleen.
Ja jos minä vielä alle 10, teemme linjat 8 ja
sitten 9, niin me osuma 10, ja palaa 6, uudelleen ja
uudestaan ​​ja uudestaan ​​ja uudestaan, niin kauan kuin i on vähemmän kuin 10.
Joten uusinnassa tekevät täällä.
>> Okei, olemme koonneet kunnossa.
Saanen uusinnassa silmukka.
Ja nyt se todella tuntuu toimivan.
Joten plussia ja miinuksia täällä?
No, toistaiseksi siellä oikeastaan ​​ole koko PLO -
niin söpö.
Okei, se oli - ah, se oli onnettomuus.
Selvä, joten mennään takaisin varten silmukka.
Joten silmukat ovat mukavia, koska ne ovat erittäin selkeä.
Ja vaikka he hieman kömpelöitä kirjoittaa, se on
erittäin voimakas ja sen avulla voit tehdä
useita asioita samanaikaisesti.
Vaikka silmukat eivät näytä olevan valtava määrä arvo vain
vielä, koska se tuntuu meidän on vain tehtävä enemmän työtä.
Meidän täytyy laittaa alustuksen tänne,
päivittää tänne, ja meidän on muistettava tehdä kaiken.
Niin näemme ajoissa, että vaikka silmukoita todellisuudessa lainata
itse vain eri yhteyksissä, eri tietojen
rakenteita kuten luetteloita ja hash taulukoita, asiat me saamme
puolivälissä lukukauden.
Mutta nyt, tietää, että tämä kolmas tyyppi tunnetaan do-
while-silmukka.
Ja olemme nähneet tämän lyhyesti.
Ja tämä voisi olla erittäin avulias PSET 1.
Aina kun haluat tehdä jotain ja sitten tarkistaa, jos
käyttäjä yhteistyössä, ja jos he eivät, tee se uudelleen, tee-
while-silmukka omiaan tällaista logiikkaa.
Koska kun tilaus ylhäältä alas tässä ymmärtää,
älä tarkoittaa kirjaimellisesti tehdä tämän.
Ja tehdä tämän uudestaan ​​ja uudestaan, mikä voisi olla?
Ehkä se tarkoittaa soittamalla GetInt tai GetString sitten
tarkkailun arvo GetInt tai GetString ja sitten huutaa
klo käyttäjälle, jos ne eivät ole toimineet yhteistyössä pyytämällä heitä
uudestaan ​​ja uudestaan ​​ja uudestaan.
Minne haluat tehdä jotain kerran,
sitten tarkistaa joitakin kunto.
>> Joten kokeile tätä.
Saanen todella muuttaa nyt do-while silmukka.
Ja aion mennä eteenpäin ja tehdä seuraavasti.
Joten toimi seuraavasti.
Tehdään int i = GetInt (), mutta katsotaanpa ensin kertoa käyttäjälle
mitä tehdä.
Joten hieman erilainen tällä kertaa.
"Anna minulle int".
Joten minä käytän printf siitä.
Ja nyt minä menen tänne, ja aion tehdä tämän
kun i on, sanotaanko, yli -
Katsotaanpa, i on, sanokaamme, vähemmän kuin 0 tai i on
suurempi kuin 10.
Toisin sanoen, haluan numero 1-9, vain
mielivaltaisesti.
Joten olen käyttäen yhdistettyä Boolen lauseke tästä
Varmista, että i on pienempi kuin 0 tai suurempi kuin 10, jossa
Jos teen tämän silmukan täällä taas.
Joten jälleen, tee tätä -
kun i on pienempi kuin 0 tai i on suurempi kuin 10.
>> Joten nyt mennään eteenpäin ja tehdä tämän kerran olemme tehneet sen.
Toivotaan vain tehdä nopeasti järki tarkistaa.
printf ("Kiitos, i on% d", i).
Joten tämä yksinkertainen ohjelma kysyy käyttäjältä int-
varmistaa se joissakin alueella, 1-9 osallistavaa,
ja sitten kiittää käyttäjä muistuttamalla heille mitä he vain
kirjoitettu, aivan kuten vähän järki tarkistaa.
Mutta katsotaanpa, jos tämä toimii kuten on tarkoitettu.
Anna minun mennä pää tänne ja uusinnassa tekevät silmukka.
Hmm.
"Käytä pimeän tunniste 'i'". Se on outoa.
Luulin päätimme että.
Sama oire mutta eri koodi.
Niin?
YLEISÖ: [kuulumattomissa] sisällä kaksi meidän on
[Kuulumattomissa].
>> DAVID J. MALAN: Aivan.
Joten tämä todella johtaa meidät aiheeseen tunnetaan laajuutta.
On käynyt ilmi, että C, jälleen, se todella vie kirjaimellisesti.
Ja jos teet jotain tällaista, jossa voit ilmoittaa int
ja sitten antaa se jotain arvoa, mutta sinä tuon sisällä
pari aaltosulkeita, mitä C ei se olettaa sinun
haluavat vain ne 32 bittiä kutsutaan i esiintyy
yhteydessä näiden aaltosulkeita puitteissa rivien
6: sta 9. Joten i on ilmoitettu, ja se on osoitettu
arvo vastaa 8, mutta heti kun saat ulkopuolella
rivi 9 alapuolella kihara ahdin, i ei ole enää
soveltamisala, niin sanoakseni.
S-C-O-P-E. Se ei ole enää oikeassa yhteydessä.
Joten nyt ei ole minun, joten se on ikään kuin meillä ei ollut edes
julisti sitä ollenkaan.
>> Joten mitä korjata sitten jotain tällaista, jos
Syy on se, että olen julistetaan sisällä aaltosulkeita, joka
on ilmeisesti huono?
Täällä?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Joo.
Joten voimme alustaa sen ulkopuolella.
Joten anna minun mennä eteenpäin ja poista ilmoitus osat jolloin
Olen eritellä, ja haluan tehdä sen täällä.
Joten rivi 5, nyt sanoo "Anna minulle int." Soita se i.
Huomaa linjassa 9, en halua tehdä tätä, koska olen
jo 32 bittiä.
En halua kysyä tietokoneen
Eri 32 bittiä.
Haluan käyttää samat 32 bittiä.
Ja nyt, koska minä on ilmoitettu rivi 5, on silti legit
käyttää sitä linjaa 11 ja linja 12.
>> Sallikaa minun yrittää kääntää tätä ja nähdä
jos clang pysähtyy huutaa.
tee silmukka.
Joten nyt se on "implisiittinen ilmoitus toiminnan
"GetInt" on pätemätön C99. "Mikä tuo on?
Niin?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Joo.
Joten nyt olen todella käyttävät GetInt, tämä ei ole jotain
että vain mukana C. Tämä tulee CS50.
Tarvitsemme siis täällä.
Ja anna minun mennä takaisin nopeasti alas
täällä ja uusinnassa tekevät.
Okei, vihdoin.
Nyt olemme ratkaistu, että sekä muu virhe.
Saanen nyt ajaa silmukka ja katso mitä tapahtuu.
"Anna minulle int." Annan sen 11.
Annan sen -1.
Annan sen foo.
Annan sen 5.
Ja nyt se todella toimii.
Mutta nopeasti muuttunut syy tähän.
Miksi se sanoa yritä näistä kertoja, mutta antaa minulle
int muut kolme kertaa?
Miksi se käyttäytyminen erilainen?
YLEISÖ: Antoi se merkkijono.
DAVID J. MALAN: Anteeksi?
YLEISÖ: Annoit sen merkkijono.
DAVID J. MALAN: Joo.
Niinpä annoimme sen merkkijono tässä kolmannella yrityksellä,
kun olen kirjoittanut foo.
Foo on merkkijono.
Se ei tietenkään INT.
Ja siten, että CS50 on toteutettu GetInt on se, että
älä tarkista jos jotain on alle 0 tai yli 10
sinulle, sillä miten me tiedämme etukäteen millaisia
int haluat?
Mutta voimme vähän tarkistaa sinulle, ei käyttäjä vähintään
kirjoita kokonaisluku?
Ja jos he eivät, me huuda käyttäjän kirjoittamalla "yritä uudelleen" on
näytön.
>> Joten nyt meillä on ohjelma, joka on kiehkura. Okei.
Nyt, mikä näistä on tavallaan parempi rakentaa?
Joten tämä on, jos asiat alkavat saada hieman sotkuinen,
että sinun täytyy muistaa julistaa muuttuja täällä
Jos haluat käyttää sitä sisällä joidenkin
aaltosulkeita ulkopuolella.
Mutta vaikka tämä näyttää hieman arvoituksellisesti ensin
silmäyksellä, vain kerran, muista yksinkertainen logiikka.
Voidakseen käyttää mitään C, onko se toiminto tai
se muuttuja, sinun täytyy sisällyttää se, jos se on tehtävä
joissakin kirjastossa, tai sinun täytyy julistaa sitä.
Mutta nyt sinun täytyy olla erityisen tietoinen siitä, että
olet julistaa oikeaan piiriin.
Et laitat sen liian tiukasti sisällä suluissa.
>> Haluan siis todella perua.
Jos menemme takaisin meidän esimerkiksi aiemmin, ja menen
takaisin varten int, int i = 0; i <10; i + +, ja minä
do printf tähdet, kuten tämä, ja sulje sitten Paren, ja nyt
printf i on nyt -
mukaan samaa logiikkaa, mitä tapahtuu, kun yritän
kääntää tämän ohjelman?
YLEISÖ: Virheellinen tunniste.
DAVID J. MALAN: Eli se toinen virheellinen tunniste,
pimeän tunniste.
Nyt syy on hieman erilainen.
Ei tietenkään ole aaltosulkeita täällä, mutta samaa
idea, sama tarina soveltamisala koskee.
Jos olet ilmoittanut muuttuja kuin olisin sisällä
varten silmukka, vaikka et ole erikseen kirjoitettu kihara
housunkannattimet, ajatella niitä henkisesti silti siellä, jossa
Jos i on voimassa vain sisällä ja silmukka.
Se ei ole kelvollinen kun saat seuraavalle riville, joka
Tässä tapauksessa on nyt 10.
Joten vain muutamia kysymyksiä laajuus ja vastaavat.
Selvä, kysyttävää?
>> Okei, joten tämä on tavallaan triviaali pieni ohjelma,
tulostaa vain pikku tähtiä.
Mutta katsotaanpa jos muistat tämän laulun täällä.
Tämä on uskomattoman ärsyttävää song kids laulaa
koulubussi ja vastaavat.
Mutta mitä mukavaa on se, että se on tämä syklisyys,
jolloin se on "99 pulloa olutta seinälle,
99 pulloa olutta.
Ota yksi alas, siirtää se noin, 98 pulloa olutta
seinään. "Ja sitten laulun toistaa 97, sitten 96, sitten
95, sitten 94, kaikki alas 0 jos todella saanut että
mennessä bussissa.
Joten tämä on mukava ohjelma tavallaan toteuttaa, koska minun
Jumala, jos voisi vain toteuttaa tätä muutaman
riviä koodia, voit sylkäistä koko lyrics tähän
laulu melko nopeasti.
Mutta matkan varrella, voimme alkaa nyt erottaa toisistaan ​​jonkin
Näiden perus kiehkura rakenteita ja nyt myös
esitellä toimintoja kirjoitamme itseämme, palauta arvoja
että me kiertämään.
Mutta ensin, miksi emme mene eteenpäin ja otamme viiden minuutin
rikkoa täällä?
Ja kun palaamme, emme laulaaksesi tämän laulun.
>> Selvä, joten olemme takaisin.
Ja kun sanon me nyt laulaa tämän laulun, tarkoitan
ohjelmallisesti, ei sanallisesti.
Joten tässä meillä on beer1.c, joka on yksi täytäntöönpanon
Erityisesti kappaleen.
Ja vain olla selkeitä, niille tunne mitä
tämä asia näyttää, anna minun mennä eteenpäin
ja tehdä beer1, Enter.
Nyt haluan juosta beer1, ja mitä näemme - kuinka monta pulloa
Oluen tuleeko?
Minä kirjoita 99, kuten laulussa sanotaan.
Enter.
Ja nyt jos me selata -
oho - jos me selata kaikkia tämän, näemme, että
tämä todellakin laulaa koko laulun.
Hetkinen.
Minun vierityspalkki on hieman sekaisin.
Katsotaanpa käyttää isompi ikkuna.
Joten beer1, 99, sinne siis.
Joten tässä meillä on koko laulu, laulaa paljon nopeammin
tietokone kuin se olisi voinut olla meille.
Joten huomaa kuitenkin, suhdanneherkkyys täällä.
Siinä sanotaan 99, sitten 99, sitten "ottaa yksi alas, vie se
noin, "sitten 98.
Ja nyt se toistaa uudelleen ja uudelleen.
>> Joten tämä on todella erinomainen tilaisuus jonkinlaista
silmukointi rakentaa.
Huomaa, että olen sellainen leikkaus nurkassa täällä.
Huomaa, että sanon "98 pulloa olutta seinälle,
97 pulloa olutta seinälle ", ja se oli juuri niin
että uusista yhteen pulloa olutta, minulla ei ole
murehtia Englanti kielioppi.
Mutta voimme myös korjata tätä hieman, jos
kunnossa, ehkä.
Jos tämä on ainutlaatuinen, mennä eteenpäin ja sanoa "pullo"
toisin, jos se on monikossa, sano "pulloja".
Mutta nyt, olen täysin leikkaus, joka nurkkaan.
Joten mitä meillä täällä.
Joten meillä on joitakin huomautuksia yläreunassa.
Olen myös näiden kirjastojen, kuten
olemme yleensä olleet.
Ja nyt haluaisin selaa ensimmäisen
todellinen riviä koodia.
Rivi 17 käynnistymässä tärkein.
Rivi 21 ja 20 on kuinka monta pulloa olutta tuleeko?
Ja sitten kutsun GetInt.
Ja nyt minulla on vähän järki tarkistaa.
>> Joten tämä on yleissopimuksen että me nyt alkaa omaksuttu
tarkemmin tarkista käyttäjän syöttää.
Joskus vain halua pyytää niitä uudelleen
ja uudestaan ​​ja uudestaan.
Jos käyttäjä mokaa ja ei tee yhteistyötä, hienoa.
Lopeta ja eivät vain käsitellä niitä.
Ja niin se mitä olen täällä.
Jos n on pienempi kuin 1, olen juuri menossa huutamaan käyttäjä,
"Anteeksi, että ei ole mitään järkeä." Ja sitten aion
mielivaltaisesti palaa 1.
Joten jälleen, tämä on vain yleissopimuksen tottua.
Nyt ottaa sitä uskossa.
Mutta tähän asti, olemme aina palaavat 0, koska
olemme sanoneet palaamassa 0 tarkoittaa mitä?
YLEISÖ: Menestys.
DAVID J. MALAN: Success, siinä kaikki.
Joten nyt olemme vihdoin alkaneet miettiä
ei onnistumisia -
Toisin sanoen, kulma tapauksissa, virhetilanteet -
Nyt minulla on ääretön tarjonta, tai ainakin neljä miljardia
mahdolliset asiat, jotka voivat mennä pieleen minun ohjelmia.
Ja voin aloittaa osoittamalla niitä yksittäisiä numeroita.
Nyt, yleensä se riittää vain palata
jotain muuta kuin 0.
Joten aiomme yksinkertaisesti palauttaa 1 nyt.
Mutta syy palauttaa 1 on, että heti kun palaat
1, arvaa mitä tapahtuu muun ohjelman?
Se pysähtyy.
Siinä kaikki.
Niin että olen palaamassa 1 on tehokkaasti
oikosulkuun tämän ohjelman toteuttamista, jotta
mitään alla line 27 jatkaa täytäntöönpanovaltiossa.
Niin pian kuin pää-palaa, että se on.
>> Selvä, joten jos käyttäjä tekee yhteistyötä ja tavoitamme linja 30
koska ne kirjoitetaan oikeutetun määrän, tässä on minun
täytäntöönpanoa tämän laulun.
Joten haluan ensin tulostaa rivinvaihtomerkki, vain
estetiikka.
Minulla on nyt varten silmukka.
Ja huomaa Teen asioita hieman
on eri suuntaan.
Minun ei tarvitse tehdä alle, minun ei tarvitse tehdä + +.
Voin vaan sanoa alustaa muuttujan i, aseta se vastaa
n, numero käyttäjä kirjoitettu, tee seuraavat, joten
kauan kuin minulla on suurempi kuin 0, niin I -
kun olet lopettanut yhden iteraation tämän silmukan.
Joten voimme laskea alas käyttämällä varten silmukka samoin.
Nyt tämä on melko paljon viikolla yksi tavaraa nyt, printf.
Joten print "% d pulloa olutta seinälle." Print "% d
pulloa olutta. "" Ota yksi alas, siirtää se noin. "Print
"% D pulloa olutta seinälle." Joten se on vielä% d, mutta
huomaa, että argumentti printf muuttuu.
Pilkun jälkeen, olen minä, koska en halua sanoa 99.
Tämän jälkeen pilkku, olen minä, koska en halua sanoa 99.
Tämän jälkeen pilkku, olen minä - 1, koska haluan sanoa 98
tämän ensimmäisen iteraation, ja niin edelleen.
Ja nyt tänne, minulla on vain joitakin tyhmä pikku huomautuksen.
Ja sitten linja 42, palaan 0 sopimuksen mukaan, merkitsee, että
kaikki on kunnossa.
>> Joten mitä jos minä goofed?
Mikä voisi yleinen virhe täällä on?
No, mitä jos olen vahingossa sanonut hyvin, en halua laskea
alas 0, haluan 0 pulloa olutta seinälle?
Joten sanon, i on suurempi tai yhtä suuri kuin 0.
Mitä tulee olemaan oire että nyt näen jos kääntää
beer1 ja ajaa se?
YLEISÖ: Negatiivinen.
DAVID J. MALAN: Joo, se on menossa negatiivinen.
Tämä on off-by-yksi virhe, uskomattoman
yleinen virhe tehdä.
Mennään itse mennä takaisin pääteikkuna ja tehdä se
täällä, joten voimme nähdä enemmän kerralla.
Anna, 99 pulloa olutta.
Lähellä, mutta menimme koskaan niin hieman liian pitkälle.
Me lauloimme laulun liian alas, niin että nyt osui
negatiivinen luku.
Joten se ei oikein toimi.
>> Selvä, joten voimme helposti korjata, että menemällä takaisin
miten se kerran oli.
Mutta mitkä ovat mahdollisuudet nyt
parannusta?
No, haluan avata beer2.c ja selaa täällä ja ottaa
katsokaa tätä versiota.
Mikä on ensimmäinen asia, että hyppää ulos sinua eri
Tämän version täällä?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Joo, niin enää en, koska se tapahtui
minulle tiedätkö mitä, minä pyydän käyttäjältä n, ja sitten olen
jossa I on n, ja sitten olen muuttumassa I, mutta en ole koskaan
koskettamalla n uudelleen.
Joten mitä ihmettä oli kohta te jakamisesta toisen 32
bittiä kutsutaan Olen vain niin, että voin olla eri muuttujaa?
Eli tässä tapauksessa olen tavallaan tunnustanut, että tarpeettomat
design ominaisuus.
Ja minä lähden nyt sanoa, kun n on suurempi kuin 0, siirry
eteenpäin ja tulostaa samaan kappaleeseen, kulkee N printf kuin
Toinen perustelu, ja n - 1 koska toinen argumentti täällä.
Ja sitten jokaisen iteraation tämän silmukan, mennä eteenpäin ja juuri
dekrementoidaan n itse.
Nyt, toiminnallisesti, tämä ohjelma
tulee olemaan sama.
Jos minä kirjoita 99, N alkaa 99.
Minä vähennys, vähennys, vähennys, vähennys.
Aion saada kaikki alas "Yksi pullo olutta
seinään, yksi pullo olutta.
Ota yksi alas, siirtää sen ympärillä.
0 pulloa olutta seinälle. "Loppu, koska tein
saada tila oikea.
Se on suurempi kuin 0.
En tee tätä virhettä.
>> Joten mikä on parempi, versio yksi tai version kaksi?
Kuulin nippu nurinasta kaksi.
Miksi kaksi?
Mikä tuo on?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Ai, okei.
Joten se ei mene alle 0, mutta muistan, versio yksi,
alkuperäinen oikea versio ei mene alle 0 myöskään.
Muista siis, että tämä on oikea versio.
Joten ainakin verrata kahta oikeat versiot.
Mikä puoltaa version
kaksi on, mmm, paremmin?
Niin?
YLEISÖ: Se käyttää vähemmän tilaa.
DAVID J. MALAN: Okei, joten se käyttää vähemmän tilaa, eikö?
Muunnos, jota käytetään 32 bittiä n, ja sitten toinen
32 bittiä i.
Versiossa kaksi käyttää vain 32 bittiä n, siten, että
näyttää olevan plus.
Muita ajatuksia?
Haluaako joku puoltavat yhden?
Niin?
YLEISÖ: Sinun täytyy käyttää ylimääräistä koodiriviä n -.
>> DAVID J. MALAN: Okei, varmasti.
Joten se on reilua.
Joten tämä vain, ainakin minulle -
Tarkoitan, tämä todella tuntuu vähän Messier, että
En voi tavallaan kiteyttää kaikki minun logiikka yhdessä
kaunis viiva, on silmukka, kuten for-silmukan voi.
Täällä olen sellainen täytyy tack tätä n -
lopussa silmukka, koska
se on loogisesti välttämätöntä.
Mutta se tavallaan hieroo minua väärin, vain koska se
näyttää erillään logiikan täällä, vaikka
uudelleen, se on välttämätöntä.
Muita ajatuksia?
Niin?
YLEISÖ: [kuulumattomissa].
>> DAVID J. MALAN: Joo.
Joten mitä jos sen sijaan, lopussa laulun, halusi
tulostaa uudelleen kappaleen nimi?
Kuten "Kiitos pelaa 99 pulloa olutta", tai jotain
typerä tuollaista?
Mutta kohta on, halusitte käyttää alkuperäiseen arvoon.
Se, että olet mutatoitunut tai muuttanut n välein
iteraatio ja siksi ovat tuhonneet sen alkuperäistä arvoa
tarkoittaa juuri voi tehdä sitä loppuun.
Nyt, luultavasti, emme selvästikään halua tehdä
että tässä ohjelmassa.
Joten kuka välittää?
Mutta se on hyvin pätevä kohta.
Ja ollakseni rehellinen, ei todellakaan ole ketään
Oikea vastaus täällä.
He molemmat yhtä oikeita.
Voisin olla vakuuttunut joko tavalla.
Sanon, että yleensä se on hyvä periaate, jos
kysyi käyttäjältä jotain arvoa ja te tallennettu muuttujan
kuten n, vain eräänlainen periaatteessa, se on luultavasti hyvä
pitää, että noin.
Ja kaikki tiedot, jotka haluat muuttua uudestaan ​​ja uudestaan, vain
anna itsellesi kopion muuttujan, juuri niin, että
saada alkuperäistä.
Vietät 32 enemmän bittejä, mutta todellisuus on tämä
tietokone on kuin, kaksi gigatavua keskusmuistia näinä päivinä,
ja me kinastelu yli 32 bittiä?
Todellakaan ole niin iso juttu.
Ja vaikka tämän laitteen täällä, puoli keikka tai
gigatavu RAM-muistia, 32 bittiä vs. 64 bittiä,
ole niin iso juttu.
Varmasti tänään, se tulee olemaan tapa hukkua koko
itse ohjelman, joka tulee olemaan useita satoja
kilotavua, jos ei muutamia megatavuja, näinä päivinä.
>> Joten kohtuullinen koskee, ole yhtä oikeaa vastausta.
Mutta ainakin ne ovat ajatuksia, jotka tulisi aloittaa
läpi mielesi?
Koska PSET 0, vaikka emme oikeastaan ​​vain odottaa
oikeellisuudesta, tai ainakin vastuutaan eri vikoja jotka
olet ehkä kohdannut, kun menemme eteenpäin, suunnittelu on
olemaan toinen keskeinen näkökohta, sekä kirjoittaa koodia
ja myös arvioida koodia.
Ja niin ainakin antaa ajatellut asioita, kuten tämä.
Ja vain siksi, että jotain töitä ei tarkoita se on hyvä,
ei tarkoita sitä hyvin suunniteltu.
Ja se on yksi niistä asioista, opetus kaverit ja
ongelma sarjat auttaa meitä kiusaa osa ajan.
>> No, entä, sanotaanko, tämä versio täällä?
Anna minun tehdä jotain hieman seksikäs täällä hetken.
Ensinnäkin haluan päästä eroon tästä.
Ja nyt mennään korjata kielioppi ongelman.
Joten tässä versiossa, haluan korjata kielioppia niin, että
eikä vain sanoa sulkeissa s, kuten "pullo"
tai "pullojen" -
En halua leikata että kulma -
Haluan myös dynaamisesti tulostaa sanan "pullot"
tai "pullo", jolloin käytetään näitä% s paikkamerkit tänään.
Joten minun täytyy ehdollisesti tarkistaa, mitä on arvo i.
Ja jos se on 1, haluan sanoa "pullo", ja jos se on jotain
muuta, haluan sanoa "pulloja". Joten yritä tehdä tätä.
Joten jos i == 1, niin haluan mennä eteenpäin ja julistaa -
Tarvitsen merkkijonon, joten haluan tehdä merkkijonon s1, koska se on
ensimmäinen merkkijono Välitän juuri nyt.
Aion sanoa "pullo". Ja sitten, katsotaanpas, merkkijono
s2 - ja selitän minne olen menossa hetken -
"Pullot". Niin muistaa, että tämä laulu, meidän täytyy pystyä
tulostaa muassa kaksi eri sanaa mahdollisesti.
Joten jos katsomme tänne, huomaat, että kun pääsemme
Tässä esimerkki tästä "kaksi pulloa olutta seinälle,
kaksi pulloa olutta, ottaa yksi alas, siirtää se noin ", haluan
tämä neljäs rivi nyt sanoa "yksi pullo olutta
seinä ". Joten minun täytyy päättää, en halua sanoa" pulloja "tai
"Pullo"? Joten aion mielivaltaisesti sanoa, kaikki hyvin,
Aion nyt julistaa muuttuja nimeltään S1, merkkijono
yksi, joka tulee saada kytketty täällä ja myös täällä,
koska nämä sanat ovat aina samat, vain koska
luonne laulun.
Ja aion soittaa s2 mitä sana haluan
lopulta näkyvät täällä.
Nyt, kirjaimellisesti, 99 kertaa ulos 100, se tulee olemaan
sama kummassakin näistä tapauksista, koska 3 on monikossa, 2 on
monikko, 4 on monikossa.
Mutta tässä nurkassa tapauksessa, jossa saamme 2 ja sitten 1, tai
jopa 1 ja sitten 0, minä tarvitsen tätä logiikkaa.
Joten minun täytyy viettää aikaa minun koodi saada tätä oikeutta.
Joten jos teen tämän, jos i == 1, aseta S1 yhtä "pullo"
ja s2 yhtä suuri kuin "pulloja", koska tämä tulee olemaan 1
pullo, ja tämä tulee olemaan 0 pulloja.
Ja tämä tässä, mitä se edustaa?
Vain olla selvä.
Tämä on vain kommentti.
Niin että voit olla yksilinjainen kommentteja tarkoittaa
voi kommentoida koodisi näin, mutta toinen yleinen
paradigma, myös se, että jos sinulla on super-lyhyt lause
haluat laittaa itsesi ja se on vain luettavuuden laittaa
oikein lopussa koodirivin, voit
ehdottomasti tehdä jotain tällaista.
>> Joten nyt mitä jos teen tämän? If i ei ole yhtä suuri kuin 1.
Joten bang vastaa -
huutomerkki kutsutaan "bang".
Joten bang = 1.
Joten jos i ei ole yhtä kuin 1, mitä voin sijaan haluan tehdä?
No, ensimmäinen sana Haluan olla mitä?
Joten merkkijono 1 olisi "pulloja" useille pullot,
ja sitten tämä on monikko "pulloja" samoin, nyt.
Ja näemme, jos tämä todella saa meidät
minne haluamme mennä.
Joten nyt jos en selaa täällä, huomaat että olen kytkemällä
paitsi minä, vaan s1.
Olen kytkemällä I ja s1.
Ja sitten alas tässä, olen miinus 1, joka on sama kuin
ennen, mutta s2.
Toisin sanoen, haluan Englanti sana muuttaa perustuvat
tätä logiikkaa.
Nyt siellä on jo jonkin verran ongelmia tämän koodin.
Mikä on rikki jo ulos portista täällä?
Niin?
YLEISÖ: [kuulumattomissa].
>> DAVID J. MALAN: Aivan.
Joten olen jo rikkonut opetus soveltamisalaa.
Joten olen ilmoittanut S1 ja S2, mutta olen tehnyt sen sisällä
aaltosulkeita, mikä tarkoittaa joo, tämä koodi toimii ylös
asti linja 42, mutta heti kun osuin linja 43, arvaa mitä ei
enää ole olemassa?
No, arvaa mitä enää soveltamisala - ei s1 tai s2.
Joten meidän täytyy korjata.
Haluan siis poistaa ilmoitukset.
Ja jätän muuttujien nimet ja poistaa täältä
ja poistaa täältä.
Ja missä linjat pitäisi oikeastaan ​​julistaa näitä asioita?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Joo, niin varmaan
asti täällä, 33-ish.
Joten merkkijono s1 ja sitten merkkijono s2.
Ja se kääntyy pois, en voi tehdä tätä.
Jos olet julistaa kahden muuttujan samantyyppistä,
voit itse vain käyttää pilkkua ja tehdä sen C Kaikki
oikealle, joten nyt minulla on kaksi muuttujaa -
S1 ja S2.
Olen osoitetaan ne arvot näissä
olosuhteet täällä, tai täällä.
Ja sitten Käytän niitä alhaalla.
Kuinka hyvin tämä nyt menossa töihin?
>> No, se on vielä vähän buginen, mutta katsotaan ainakin nähdä
kuinka pitkälle olemme päässeet.
Joten anna minun mennä eteenpäin ja tehdä beer3.
Onko tämä beer3?
Jep, tämä on beer3.
Ja nyt haluan mennä eteenpäin ja ajaa beer3.
399 99.
Voimme luultavasti ohittaa useimmat.
Ja täällä, katso tuota.
"Yksi pullo olutta seinälle, yksi pullo olutta ottaa
yksi alaspäin, siirtää se noin, 0 pulloa olutta seinälle. "
Mutta olen kiinnittää huomionne vain puolet ratkaisu.
Kind of mokasi täällä.
Joten näyttää siltä, ​​että rajatapauksissa syntyy, kun I on mitä
kaksi arvoa?
YLEISÖ: 2, 1.
David J. MALAN: 2 ja 1.
Se ei ole 1 eikä 1.
Se on oikeastaan ​​vain nämä kaksi viimeistä säkeistöä tämän laulun.
Joten mitä minun sen sijaan haluat tehdä?
Olen siis ilmeisesti kiinni silloin kun i on == 1,
Sitten ensimmäinen sana on "pullo", mutta toinen sana
on "pullojen". Mutta täällä, haluan muuttaa tämän olevan == 2.
Ja jos näin on, mitä haluan
Ensimmäinen sana on?
YLEISÖ: "Pullot".
David J. MALAN: "Pullot", joten kaksi pulloa.
Ja sitten tämä sana täällä olisi -
YLEISÖ: "pullo".
DAVID J. MALAN: "Pullo", yksikkö.
>> Selvä, mennään loitontaa, palaa tänne, uusinnassa tehdä,
Re-run beer3, tyyppi 99 uudelleen.
Okei, "Segmentointi vika (core polkumyynnillä)."
Mitä olen tehnyt väärin?
YLEISÖ: Sinulla ei ole arvoa [kuulumattomissa].
DAVID J. MALAN: Ah, erinomainen kohta.
Selvä, joten mikä hätänä täällä?
Joten segmentointi vika, ja olemme todella menossa nähdä
Tämä aika monta kertaa tulevaisuudessa, tarkoituksella.
Mutta nyt, mitä tämä oikeastaan ​​tarkoittaa?
Segmentointi vika lähes aina tarkoittaa, että olet
jotenkin yrittänyt käyttää muistia, RAM tietokoneeseen,
että et omista, että et ole itse pyytänyt
käyttöjärjestelmä.
Joten tässä tapauksessa, huomaa, mitä olen tehnyt, mikä on
puutteellinen minun logiikka.
Olen määritetty s1 ja s2 arvo jos i on 1.
Olen myös tehnyt, että jos en vastaa 2.
Mutta en ole tehnyt sitä lukemattomia muita
mahdollisuuksia -
erityisesti, 3 tai 4 tai piste-, piste, dot, 99.
Joten korjaus tämä voisi vain olla katsotaanpa
on muuten kunnossa.
Ja anna minun mennä ja sanoa S1 vastaa -
mikä sen pitäisi olla täällä?
YLEISÖ: [kuulumattomissa].
>> DAVID J. MALAN: "Pullot", koska tyypillisin tapaus,
se on aivan sama asia.
Joten sama lainaus, lainaus päättyy "pulloja". Niin useille
pullot, ja sitten täällä, useille pulloja.
Okei, joten nyt haluan mennä takaisin minun pääteikkunaa
käännöksen, uusinnassa sitä.
99.
Vau.
Ja tehkäämme nopeasti järki tarkistaa.
Teknisesti, me haluaisi lukea kaikki nämä varmista
he oikein, mutta katsotaanpa
ainakin tunnettu syyllisiä.
3 pulloa, 2 pulloa, 2 pulloa, 1
pullo, 1 pullo, 0 pullot.
Olemme ilmeisesti ainakin korjasin sen nyt.
Mutta saalis on, että mitä Jumala kauhea sotku tämä on
vain ratkaista tyhmä
yhden merkin kieliopin yksityiskohtia.
Joten siellä sellainen syy, että olen leikata tämä kulma
aikaisemmin, koska se on vain täysin ärsyttävää joutua
kirjoittaa näin paljon koodia.
Mutta näyttää siltä, ​​että siellä on hieman enemmän tyylikäs tapoja
ilmaisee täsmälleen sama asia.
Ja voimme tehdä tämän seuraavasti.
>> Saanen jättää ruudulle hetkeksi ja
esitellä jotain kutsutaan kolmen komponentin operaattori.
Tämä on eräänlainen sutkaus joka on vain tarkoitus tehdä myös
asuu vähän seksikkäämpi, kuten luvattiin.
Ja aion tehdä tämän seuraavasti.
Anna merkkijono nimeltä s1, ja haluan
määrittää sen seuraavasti.
(I == 1)?
"Pullo", muuten "pullojen". String s2 saa (i == 2)?
"Pullo", muuten "pullojen".
Joten mitä sitten on ero täällä?
Nämä kaksi riviä koodia, väitän, voi
korvaa tämän koko sotkun.
Joten pyydän sitä sotkua, vain koska se tavallaan hieroo minua
väärin siten, että se on niin monta riviä koodia.
Ei väärin.
Se ei ole huono suunnittelu.
Kuten, tämä on täysin oikein ja hienosäätää.
Mutta koodaus saa ikävä, jos sinulla on ilmaista itseäsi niin
damn nimenomaan uudestaan ​​ja uudestaan ​​ja uudestaan ​​yksinkertaisella
skenaario näin.
Joten C on joitakin pikavalintoja, kuten tämä.
Joten tämä pohjimmiltaan sanoo julistaa merkkijono nimeltä s1 ja
määrittää sen joko tämä arvo tai tätä arvoa jos i on == -
Anteeksi, minun pitäisi sanoa tätä selvemmin.
Julistaa muuttuja s1, määritä se tämä arvo, jos tämä on totta.
Muuten, antaa se tämän arvon.
Eli toisin sanoen, tämä on eräänlainen yhden rivin tapa
sanonta jos muu kuin tehdä tehtävän matkan varrella.
Joten jos i on 1, sitten mennä eteenpäin ja kutsuvat tätä "pullo". Ja
Sitten tämä toinen, kutsuvat sitä "pulloja". Samaan aikaan, s2,
Toinen sana, että meidän on määriteltävä, jos i on 2, käymme
aseta s2 "pullo". Muuten, aseta se "pulloja". Ja mitä
Tämä tarkoittaa nyt voin mennä läpi tämän ja poistaa kaikki
nämä riviä koodia.
Ja kun sanon, hieman naurettavan, että tämä on nyt
seksikkäämpi, se seksikkäämpi on eräänlainen tyylillinen järkeä.
Että toiminnallisesti, tämä koodi on todella menossa
tehdä täsmälleen sama asia.
Ja vaikka se saattaa näyttää hieman arvoituksellisesti ensin
silmäyksellä, koska emme ole nähnyt tätä rakentaa ennen, olisin
väittävät, että se on lopulta olemaan niin paljon enemmän
luettavissa ja niin paljon helpompaa me ihmiset tavallaan
ymmärtää, koska nyt voit vain lukea
koodin kaikki yhdellä rivillä.
Se on edelleen hengeltään samanlaisia ​​mukaan, jos tämä on
kunnossa ja sitten tämä on mitä sisällä jos ja tämä
on mitä sisällä muuta.
Mutta me voimme tehdä tämän vain paljon enemmän tyylikkäästi.
>> Ja jos minä nyt mennä takaisin minun terminaalin, joka on poistettu kaikki
Näiden linjojen ja korvasi ne vain nämä kaksi,
käännöksen, uusinnassa pulloa olutta 99, huomaa, että minun
kielioppi on itse asiassa edelleen paikkansa.
Joten jälleen, jotain alkaa.
2 pulloa olutta, 1 pullo olutta.
Näyttää oikealta.
Joo.
Joten on meillä paljon ytimekkäämpi ratkaisu.
Joten tämäkin saat enemmän mukava C, ei
välttämättä kanssa ensimmäisen PSET tai jopa toinen, mutta
ymmärtää, että nämä rakenteet voivat antaa meille mahdollisuuden tehdä asioita koskaan
enemmän tyylikkäästi.
Nyt jokin muu asia täällä.
Anna minun mennä eteenpäin ja avata return1.c.
Nyt alkaa ratkaista toinen ongelma siten, että
voimme kirjoittaa kehittyneempiä koodia.
>> Joten tässä on yksinkertainen pieni ohjelma, jonka tarkoitus elämässä
on kasvattaa arvoihin.
Ja itse asiassa, otetaan askel taaksepäin.
Anna minun tehdä tämä manuaalisesti.
Anna minun tehdä kuuluvat ja int main (void).
Ja soitan tätä increment.c.
Ja mitä haluan tehdä?
Aion mennä eteenpäin ja sanoa jotain -
me kutsumme numerot sama -
int x.
Joten int x saa 2; printf x on% d, uusi rivi, x.
Joten olen kirjoittamalla nopeasti, mutta tavallaan tuttua kamaa nyt.
Sitten aion tehdä x + +.
Sitten aion tulostaa saman lauseen uudelleen.
Ja sitten aion palata 0 vain lopettaa ohjelman.
Okei, joten tämä on ohjelma, joka
askelin numero.
Se ensimmäinen menee alustaa jotain 2, ja sitten se on
menossa kasvattaa sitä ja tulostaa sen uudelleen.
>> Joten ajaa lisäys, uskomattoman yksinkertainen ohjelma.
Mutta oletetaan nyt, että haluan kuution arvoa, joten älä
jotain melko sattumanvaraisesti.
Ja minä todella haluan tehdä x saa kuution sitä.
Niin voisin käyttää mitä kutsutaan Pow toiminto, mutta en
todella tietää missä se on vielä.
Joten aion tehdä tämän vanhanaikaisella tavalla.
x kertaa tämä vastaa x kertaa x kertaa x.
Joten olen cubing arvo kertomalla se itse uudelleen
ja uudestaan ​​ja uudestaan, niin että saamme voimaa
3 tässä tapauksessa.
Joten nyt numerot minun pitäisi tulostaa pitäisi olla, kuten näemme
täällä - tee lisäys, joten se ei oikeastaan ​​ole oikeastaan ​​kasvattaa
enää, mutta jätämme nimi yksin -
2 ja sitten 8.
Nyt meillä on alku mahdollisuuden tarkentaminen
täällä, jolloin tämä cubing juttu kertomalla numero
itse itse itse tuntuu tämä saattaa vain olla
hyödyllistä saada funktiona, aivan kuten joku päätti
vuotta sitten - tiedäthän, sellainen hyvä, jos joku meistä istuu alas
ja kirjoittaa printf niin, että muualla maailmassa voi käyttää sitä,
miksi emme istua alas ja kirjoittaa toiminto nimeltään kuutio
että tämä cubing meille, joten meidän ei tarvitse manuaalisesti
täytäntöön käsite cubing arvoista täällä?
>> Joten yksinkertainen esimerkki, mutta mennään eteenpäin ja käyttää tähän on
mahdollisuus kirjoittaa omia toimintoa.
Joten toistaiseksi, olemme käytetään vain tärkeimmät, ja olemme käyttäneet muita
ihmisten toiminnoista, mutta emme ole kirjoittaneet omia.
Joten tässä sitä mennään.
Aion mennä eteenpäin ja kirjoittaa toiminto nimeltään kuutio.
Ja aion olla se ottaa tulo.
Joten sen tulo tulee olemaan kokonaisluku.
Ja mitä se aikoo tehdä?
Se tulee julistaa int lähtö = tulo ajat tulo
kertaa sisääntulo.
Ja sitten se tulee palauttaa tuon tuotoksen.
Ja sitten minun on oltava täsmällistä.
Tämä toiminto on palaamassa int.
Joten tässä on sitten miten haluat kirjoittaa omia funktioita.
Ensin päättää mikä nimi
toiminto tulee.
Ja yleisesti, jotain selittävä on hyvä, niin minä
kutsuvat sitä kuutio.
Sitten sinun täytyy määrittää, mitä se tulee palauttaa, mitä
sen teho tulee olemaan.
Ja meillä ei ole, että monia vaihtoehtoja vielä.
Int, char, float, bool, merkkijono.
Nyt aion kiinni int, koska haluan sen
palauttaa kokonaisluvun.
Sitten sinun täytyy määrittää, mitä sen tuloa, jos sellaista on,.
Ja jos kuutio tekee väitteen, vie jotain välillä
suluissa, sinun täytyy antaa väitteen nimeä niin, että
voit kutsua sitä jotain niin olet toteuttamisessa tai kirjallisesti
tämä toiminto, ja sinun on annettava se tyyppi, joka tässä
tapauksessa tulee olemaan int.
Niin lyhyt, kuutio on funktio, joka ottaa kokonaisluku
tulona ja palaa kokonaisluku tuotokseksi.
>> Joten mitä se tehdä että panos?
No, linja 14, julistan muuttuja nimeltä tuotos, ja minä
antaa se arvo, tulo ajat tulo kertaa panos.
Ja sitten palaan lähdön.
Joten miten voin käyttää tätä sitten?
Mitä voin muuttaa korostettuna merkkiä rivillä
7 on, luulet?
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Joo, niin kuutio x.
Joten x on muuttuja, eli se pitää jotain arvoa.
Onneksi se on tyyppiä integer.
Ja koska x on int, joka tarkoittaa, että voin siirtää sen kuution.
Ja vaikka olen ohittaa arvon x arvon kanssa
kuution x, kuten on käynyt tähän mennessä, milloin tahansa
on yhtäläisyysmerkki ja koodirivin tavaraa oikealla
saa suorittaa ja sitten saa osoitettu
arvon vasemmalta.
Joten järjestys toiminnan on kuin toivoisimme.
Joten tämä toimii?
No, anna minun mennä tänne.
Saanen avata minun pääteikkuna.
Saanen eivät tee lisäys, Enter.
"Implisiittinen ilmoitus toiminto" kuutio "on pätemätön
C99. "Sivuhuomautuksena C99 viittaa kieli C, sillä se oli
määriteltiin vuonna 1999, joka oli päivitetty yli version
1989, joka on päivitetty verrattuna alkuperäiseen.
Niin, että kaikki keinot.
>> Joten mitä se tarkoittaa, että "implisiittinen ilmoitus
toiminto "kuutio" ei kelpaa? "Se on täällä.
Se on tuolla linjalla 12.
YLEISÖ: [kuulumattomissa].
DAVID J. MALAN: Mikä se on?
YLEISÖ: Se ei ole ennen.
DAVID J. MALAN: Se ei ole ennen.
Joten tämä on asia.
C on typerää tai C kääntäjät ovat typerää.
He todella vain tehdä mitä kerrot heille tehdä.
Ja he, etenkin, vain lukea koodi ylhäältä alas,
vasemmalta oikealle.
Joten jos kääntäjä, clang, lukee koodin, rivi 1, se
keksii miten se tehdään.
Oh, tässä tulee tärkein.
Okei, anna minun mennä eteenpäin ja julistaa muuttuja x.
Minäpä tulostaa jotain.
Rivi 7, mitä hittoa on kuution?
Se ei ilmoitettu stdio.h.
Se ei tullut C. Minulla ei ole aavistustakaan, mitä tehdä.
Ja niin clang vain bails ja sulkeutuu kanssa virheilmoituksen.
Jotta voimme korjata tämän pari tapaa.
Voimme opettaa clang mitä cube on vain liikuttamalla missä
ilmoitus.
Olen siis leikata ja liimata sen huipulla tärkein.
Nyt ymmärtää, että vain koska pääasiassa ei ole enää ensimmäinen, se on
edelleen suorittaa oletusarvoisesti.
Main on tärkein.
Se on oletuksena funktion nimi.
Sillä ei ole väliä, jos se on tiedosto.
Mutta ainakin nyt clang on nähnyt kuutio ennen kuin käytän sitä.
Joten onko clang on onnellisempi nyt.
Tee lisäys, se kokoaa tällä kertaa.
>> Saanen juosta kasvu.
Ja todellakin, se näyttää toimivan.
Nyt voit keksiä skenaarioita lopulta missä
se ei ole mahdollista laittaa jokainen toiminto
kaikkien muiden yläpuolelle toimintoa.
Sinun juuttua tähän päättymättömän silmukan todellisuudessa
jos tämä kaveri haluaa olla täällä, mutta tämä
kaveri on siellä.
Niin että ei aina toimi.
Joten onneksi, C on elegantin ratkaisun.
Aion laittaa tämän takaisin missä se oli, vain koska olen
mieluummin, koska periaatteessa se tärkein aina
huipulla, koska se on vain kiva nähdä, mitä tämä ohjelma
tekee oletuksena.
Ja mitä aion tehdä täällä on julistaa mitä kutsutaan
prototyyppi.
Aion uudelleen julistamaan minun datakuutiofunktioiden kirjaimellisesti
kopioiminen ja liittäminen.
Oikeastaan ​​se ei ole kirjaimellisesti.
Niin kirjaimellisesti kopioiminen ja liittäminen linja 15
ylhäällä rivi 6.
Sillä ei ole väliä, mitä linjaa tämä päätyy.
Se sattuu olemaan verkossa 4.
Mutta se ei tarvitse olla ennen main.
Mutta huomaa eron.
Linja 4 päättyy puolipisteellä, joka tarkoittaa hei,
Kalahtaa, sanaani se, että on olemassa funktio
kutsutaan kuutio joka vie int ja palauttaa int.
Mutta en aio kertoa teille, mitä se on vielä.
Vain tietäkää, että lupaan kertoa lopulta.
Ja todellakin, nyt se on okei, että tämä on alhaalla.
>> Joten tämä on yleensä parempi, koska silloin yläosassa
tiedoston, voit vain suoltaa, nopean palon yksi rivi
jokainen, mitä nimiä teidän toimintoja, mitä heidän
tulot ovat, mitä heidän lähdöt.
Ja selkeämmäksi, tulo tarkoittaa yleensä väitettä tai
parametri, synonyymi.
Tuotos tarkoittaa paluuta arvoa, mitä se
käsi takaisin minulle.
Eli tässä tapauksessa täällä, kuutio on julistettu huipulla, mutta
on määritelty, joka tunnetaan myös toteutettu alareunassa.
Joten nyt mennään tänne ja uusinnassa tätä.
Joten nyt haluan mennä eteenpäin ja ajaa uudelleen tehdä, uusinnassa kasvu.
Ja nyt näyttää toimivan hienosti.
Joten nyt voimme mennä eteenpäin ja tekijän ulos jotain
olutta esimerkiksi tähän neljäs versio.
Haluan siis selaa tänne.
Ja huomaa, että olen sellainen otti tämän oppitunnin sydämen juuri nyt.
Se, että lauloin samalla säkeistö uudelleen ja
uudestaan ​​ja uudestaan, sama kuoro linjaa laulu, huopa
like Miksi en seikka, että ulos funktio?
Ja todellakin, tämä olisi yksi motiiveista.
Sen lisäksi, että joku muu maailmassa ehkä
käyttää datakuutiofunktioiden -
se on hyvä syy tekijä jotain ja kirjoita
omia toiminto -
jos on kimpale koodi in your ohjelma, joka vain tekee
käsitteellinen mielessä, että et sellaista halua antaa sitä
nimi - kuten tässä tapauksessa, Chorus -
voit samalla kirjoittaa, että erillisenä toimintona.
Sinun ei tarvitse kirjoittaa kaikki tärkeimmät, jos se vain
tuntuu puhtaampaa erottaa sitä ja antaa sille nimen.
>> Eli tässä tapauksessa täällä, huomaat että olen kommentoida huipulla
Tämä toiminto, joka juuri laulaa
määritetty määrä pulloja.
Huomaa tässä, että minun ei tarvitse soittaa näitä
asioita tulon ja lähdön.
Itse asiassa tällä kertaa olen vain kutsuin input B pullo.
Ja huomaa täällä, mitätön ehdottaa mitä?
Tuo Chorus -
YLEISÖ: Ei palauta sitä.
DAVID J. MALAN: ei palauta arvoa.
Ja todellakin, toimintoja ei tarvitse palata arvoja.
He voivat vain tehdä jotain.
Ne voivat olla mitä kutsutaan sivuvaikutuksia, joka tässä
tapaus on vain koko joukko tulostaa ruudulla.
Niin huomaa, että tämä koodi täällä, olen kirjaimellisesti vain varasti
edellisessä esimerkissä.
Ainoa ero on, sen sijaan että käytettäisiin i minun
muuttuja, olen nyt käyttää b minun muuttuja.
Joten minulla on b tänne, minulla on b tänne, olen b
miinus 1 täällä.
Mutta koodi on täsmälleen sama.
Mutta vain näyttää nyt miten voimme käyttää tätä, anna minun mennä
eteenpäin ja todella muuttaa tämän olevan varten silmukka.
for (int i = n; i> n, i -).
>> Joten olen varastanut että meidän edellisestä esimerkistä.
Aiemmin se on yhdenmukainen 37 että olisin alkanut
laulaa tätä ärsyttävää laulua.
Mutta sen sijaan, olen juuri menossa nyt soittaa kuoroon i.
Valmis.
Joten nyt kaikki iterointia tämän silmukan, Kutsun tätä muuta
toiminto, chorus, että satuin kirjoittamaan.
Se ei ollut kirjoittanut joku muu vuotta sitten.
Mutta kuoro puolestaan ​​käyttää printf tulostaa
nämä neljä riviä.
Mutta se, että soitan kertosäe uudestaan ​​ja uudestaan
loop tarkoittaa sitä, että aion saada, aivan lopussa,
täsmälleen sama laulu kuin olen tähän mennessä.
Eli lyhyesti sanottuna, nyt kun katson taaksepäin minun koodi, vaikka
toiminnallisesti tämä vastaa, huomaat, että se on
alkaa saada vieläkin luettavissa.
En tarkalleen tiedä miten GetInt
toteutetaan.
Rehellisesti, en tiedä miten kuoro toteutetaan.
Mutta sillä ei ole väliä minulle.
En välitä, koska nyt voin tavallaan, kuten ihmisen, lue
Tässä ylhäältä alas.
Ja koska toiminnot on nimetty mukaan, mitä he
tehdä, minun koodi on yhä luettavissa.
Ja meidän ohjelmat saavat paljon monimutkaisempi -
mennessä lukukauden lopussa, voit kirjoittaa satoja rivejä
koodin kielten kuten PHP ja Javascript ja vastaavat -
huomaat, että se on niin paljon helpompaa kuin seurata
mitä olet tehnyt.
Ja kun aloitat yhteistyötä ystävien tai
kumppaneita tai työtovereiden, voit kirjoittaa paljon enemmän
massiivinen ohjelmien alkavat käyttää näitä perus
rakennuspalikoita.
>> Niin, että sanoi, miksi emme kutsu sitä päivässä?
Ja näemme sinut keskiviikkona.
[Taputuksia]