>> [Muusika mängib]
>> DAVID Malan: Olgu.
Tere tulemast tagasi.
See on CS50, ja see on Esimene nädal jätkus.
Nii et üks põhjus, miks me olen möödaminnes umbes tehnoloogiad nagu
Google Glass on see, et nad tulevad koos midagi, mida nimetatakse API,
Application Programming Interface.
Ja mida see tähendab, on see, et õige faili ja õigus
dokumendid, mida saab tegelikult kirjutada tarkvara isegi selline seade.
>> Ja mis meil meeles suunas semestrit lõpuks on, kui projekti
seotud, ütlevad, Google Klaas võib kaebus, siis me vaatame, mida me saame teha
poolest kinnihakkamine sind mõne loaner riistvara samuti
avalikult kättesaadav API, et saaksite tegelikult alustada luua tarkvara
mis töötab sama Google Klaas.
>> Teine seade, et oleme mänginud koos hilja, et me arvasime, võib olla
lõbus semestri lõpus on see väike asi siin.
Seda nimetatakse hüpe Motion, ja see, mida sa oled kohta, et näha, on tehniliselt
reklaam seade, kuid see ei räägi, mida see konkreetne
Seade on võimeline.
Ja see ka, kaasas API kaudu mis saab kirjutada tarkvara
kontrollida oma arvuti nii, päris meeldib selle üheminutilise film siin.
>> [VIDEO PLAYBACK]
>> [END VIDEO PLAYBACK]
>> Nii kohe, see seade juhtub rakendatakse vähe USB
connector et saad ühendada oma arvuti, kuid ma ei oleks üllatunud,
kui enne kaua meil selliseid tehnoloogiate järgmise partii arvutid
ja Mac nii, et saate tõepoolest suhelda seda
viisil, nagu seda.
Tegelikult ma arvasin, et ma teeksin, liiga, on Ma tõmbasin natuke meeleavaldus
programm, mis on selle tarkvara.
Nii et ma olen panna väike sensor ees oma sülearvuti.
>> Ja nagu näete, see juba mõistab et mu käsi on seal
reguleerimiseks.
Ja kõik see taotlus ei ole, libedasti vähe asju niimoodi.
Aga näed, et tõepoolest, Mul on viis sõrme seal.
Kui me ei saa seda teha, kõik 10 võite ette kujutada, puhas klaver
taotlus vms.
Nii et kui soovite tulla pärast klassi täna ja mängida, et kui
hästi, olete teretulnud.
Seega rohkem, et poole semestri lõpus.
>> Nii paar haldus teadaandeid.
Üks tee osa selle reede keskpäeval cs60.net/section.
See URL on kursuse kodulehe samuti.
Vahepeal aga supersections teeb debüüdi sel pühapäeval.
Supersections on ühekordne asi, sest see viib meid aega, et töötada
välja kes, kus osa ja kus.
>> Niisiis sel pühapäeval, siis tuleb üks osa neile vähem mugav,
üks osa nende mugavamaks.
Ja neile, kuskil vahel on hea meel, et minna
üks või mõlemad või mitte kumbagi.
Mõlemad on filmitud.
Nad olla suurem auditoorium kui , tavaliselt oleks sisse
Aga eesmärk siin on varustada teid mõned mugavust probleem määrata ühe,
C-ga, koos CS50 aparaat, see nädalavahetusel, isegi enne sa teada oma
ametlik osa loovutamisega.
Nii et sa rahuldada oma TF ja oma väiksemate rühma sectionmates umbes
nädala jooksul.
>> Vastuvõtuajad vahepeal on kestnud.
Kas ära neid täna või homme õhtul, kui soovite.
Ülesanded 0 põhjuseks reedel.
See on päev hiljem, kui regulaarselt graafikuga neljapäeval.
Aga probleem set 1, näete et see sisaldab mõningaid soojenduseks
harjutusi, mis sa ise saab laiendada oma
Neljapäev tähtaeg reedeni.
Ülesanded 1, vahepeal teeb debüüdi rajal veebilehte tuleval
Reede, kui soovite käppyrässä seda ma tegin ammu hiljaks
Reede õhtul oma toas.
>> Nii cs50.net/appliance on koht, kus saad CS50 seade
et me hakkasime kasutama esmaspäeval.
Me kasutame seda natuke rohkem täna.
Aga kindel, et probleem on seatud 1 spetsifikatsioon sõelub
täpselt, mida te peate saada see üles ja töötab.
Nii et ärge muretsege seda, et enne Erksa 1 kui te ei soovi.
>> Hea küll.
Nii me vaatasime esmaspäeval lähtekoodi, kuid seoses uue
programmeerimiskeel, nimelt C ja C, erinevalt Scratch, ei ole graafiline.
See ei ole puzzle tükki.
See on rohkem inglise keelt nagu süntaks.
Ja seal on mõned sammud kaasatud aastal tegelikult kirjalikult ja töötab
programmi C, sest peale allika kood niimoodi, sa pead midagi
kutsutud tõlkija.
Ja üldarusaadavat mõttes, mida ei kompilaator teha meie jaoks?
Jah.
>> Üliõpilane: See muundab kood et kirjutad 0. ja 1s.
>> DAVID Malan: Hea.
Nii et see muudab koodi me kirjutame 0. ja 1s.
See muudab nn lähtekoodi objekti kood, millest viimane näeb
natuke midagi sellist.
Ja see on teie CPU, aju sees arvuti, et kuna
inimesed, kes on loonud need arvutid, tea, mida need järjestused
on 0. ja 1s keskmine.
>> Võib-olla tähendab see printida.
Võib-olla tähendab see lisaks.
Võib-olla tähendab see lahutamine.
Võib-olla tähendab see kuvada pilti.
On eelnevalt mustrid bitti et maailm on otsustanud tähenda
teatud asju.
Aga enamasti on see muidugi me töö kõrgemal tasandil, ja
me enesestmõistetavaks, et on olemas asjad nagu koostajad, mis võib
muuta meie lähtekoodi funktsioon , kuidas me kavatseme.
>> Nii programmi kandsime esimese eelmisel nädalal ja siis hakkas sadama, nii et
kõnelda, et C möödunud Esmaspäev, oli see.
Kui roheline lipp klõpsatud, tere öelda.
See oli muidugi kirjutatud nullist.
Ja ma väita, et samaväärne programmi C vaatasin natuke
midagi sellist.
>> Niisiis, mida ma arvasin, et me tahaks teha esimesel on olgem tease peale mida ootab, esimesel
pilgul küll, sest üsna keerulisse süntaks, kuid hakkate märkama
mustrid üsna kiiresti.
Mida me teha ka täna on pakkuda Teile vaimne mudel mõnda
kanooniline mõned standard konstrueerib programmeerimisel.
Ja siis me tegelikult saame oma käed määrdunud mõned näited ka.
>> Nii neile, mugavam, aru, et see nädal ja siis järgmine
nädal võib väga hästi olla natuke vaadata.
Aga eriti kui häkker väljaanne Probleemse set 1 kustub
Muidugi kodulehel reedel, ma arvan, leiad, et isegi kui te täidate
mõned toorikud üle järgmisel nädalal või kaks, saate alustada saada üha rohkem
vaidlustada ning kogevad uued ja uuemad asjad.
>> Teeme õrritama selle programmi peale paar rida korraga.
Tipus, meil on see, mida on tehniliselt nimetatakse
eeltöötluse direktiiv.
See on lihtsalt rida koodi, mis ütleb, lisada faili sisu,
nimetatakse standard I / N, standard input - või, vabandust, standard I / O, standard
sisend / väljund,. h sees minu enda programmi.
>> Nii teisisõnu, kui ma kirjutasin selle programmi lihtne tekstiredaktor nagu
gedit, lihtsam samaväärne midagi nagu Microsoft Word, mis
juhendamise # include stdio.h, on lihtsalt ütlen kompilaator, ostke
sisu, et muud faili, stdio.h, ja kleebi need siin.
>> Nüüd, miks ma hoolima?
Mida me nõuda on sees selle faili nimetatakse stdio.h, mis on salvestatud
kuskil minu kõvakettale või selles juhul kusagil CS50 seade?
Keegi teine ​​pane see minu jaoks olemas.
Aga mis see on?
>> Jah, nii see on deklaratsiooni funktsioon nimega printf.
Nii printf meenutab funktsiooni kuvab sõnade ja märkide ja
numbrid ekraanil minu pakkumine.
Aga ma ei kirjuta seda.
CS50 ei kirjutanud seda.
Keegi aastat tagasi kirjutas ta, ja nad sisuliselt andis meile retsept see
aastal fail nimega stdio.h.
Nii et esimene rida lihtsalt annab mulle juurde funktsioonidele, mis keegi teine
kirjutas aastat tagasi, nende hulgas mis on printf.
>> Nüüd järgmine rida ma siputan kätt, vähemalt kuni järgmisel nädalal.
Aga nüüd tean, et int main (void) on sisuliselt samaväärsed käesoleva
kollane puzzle tükk kui roheline lipp klõpsatud.
Maailmas, aastaid tagasi, otsustasin, et kui sa oled kirjutamise programmi
keeles nimetatakse C, kui hakkate oma programmi rida
, mis näeb välja selline.
Vaid umbes nädala pärast, see teeb mõttes mida int on, mida void on.
Aga nüüd, lihtsalt arvan, et see kui see kollane puzzle tükk.
>> Nüüd järgmine, meil on lokkis traksidega järgneb teise lähedal lokkis traksidega,
nii rääkida.
Ja me näeme neid kõikjal programmide C, samuti
JavaScript ja PHP.
Ja need lihtsalt kapseldada seotud rida koodi.
Avatud lokkis traksidega põhiliselt ütleb, siin on natuke koodi.
Ja suletud lokkis traksidega, mis on nurga teises suunas, just
vahendid, mis on selle asjakohane kood.
>> Nii mahlane line see esimene Programm on viimane, printf,
viisi kraami, tere.
Ja ma helistasin asi vahel tsitaadid mida viimasel ajal?
Nii et see on string.
Ja string on lihtsalt techie termin jada
märki, sõna, fraas.
Isegi ühe kirja saanud kahekordselt tsiteeritud.
Aga see on jada nullist või enam märki.
>> Längkriipsu-n, kuigi tundub natuke imelik.
Aga see lihtsalt tähendas midagi lihtne arvuti.
Mis Kenoviiva-n?
Uus liin.
Nii see on lihtsalt eri jada märki, et maailm on otsustanud
vahenditega panna line break seal, kuna kompilaator tegelikult saada
segaduses, tavaliselt, kui te, väga arusaadavalt, kuid valesti, lihtsalt
alustada Enterin panna Uute liinide oma koodi.
Sa pead olema natuke rohkem selgesõnaline koos Kenoviiva-n.
>> Ja me näeme seal on mõni muu selline patterns erimärke.
Näiteks, kui sa tahad, et lasta oma meelt hulkuma nurgalöögiks juhul
oletame, et ma tahtsin printida jutumärke ekraanile
Mingil põhjusel, et tundub olla pisut problemaatiline, kas pole?
Sest kui ma panin jutumärke sisse keskel "Tere, maailm," mis tahes
põhjus, miks, mis tunduvad Probleemseks?
See murrab string.
>> Koostaja on lihtsalt programmi.
Programmi nagu kompilaator lihtsalt läheb lugeda oma koodi ülevalt alla,
vasakult paremale.
Ja kui näeb kolme jutumärkide asemel kahe, ta ei kavatse teada
kui sa mõtled, et asi vasakule peaks olema string, või asi
õige või kogu asi.
On ebaselge, ja mis siis tüüpiline koostaja teeks lihtsalt närvi,
ja annab sulle mõned veateate, ja sind probleemiga tegelema.
>> Seega, arvestades, et Kenoviiva-n-uus line, mis oleks oma instinkte nüüd
hakkavad olema, kui sa tahad, et hõlmata midagi anomaalset nagu topelt
Tsiteerin sees see muidu tsiteeritud string?
Längkriipsu-jutumärke.
Ja nii me näeme, see mingi muster ka.
>> Kui sa tahad midagi veidi imelik, siis leiad, et
lahendused järgivad sageli muster, ja Kenoviiva
tähistab sümboliga.
Ja see tähendab, midagi erilist et me peame esindama
teistmoodi.
Nagu kuidas sa esindama längkriipsu, hästi, me
tagasi tulla seda.
Aga vastus, liiga, on tegelikult natuke ilmne.
>> Niisiis olgem nüüd mõningaid teisi programmeerimine konstrueerib
et nägid Scratch.
Te olete ilmselt enesestmõistetavaks juba siis, kui olete juba sukeldus
probleem määrata 0.
Kuid olgem nüüd tutvustada süntaks C nende muidu üsna intuitiivne
ideid, vähemalt mõned neist.
>> Nii et see mõiste tingimus või filiaali, arvestades, et varem me
esindab see kood, mis nägi Asjalik vasakul Scratch -
kui x on väiksem kui y, siis nii öelda -
asemel nüüd C - andke luisk sisse lihtsamal juhul -
me lihtsalt ütlen, kui avatud sulgudes midagi on tõsi -
Loogiline avaldis lähe kus ma olen öelnud tingimus -
Lõpusulg, siis seda, mis on sees need looksulg.
>> Nii ka siin looksulg on selline nagu Scratch on
U-kujuline puzzle tükki.
Kas see, mis seal sees on need looksulg.
Sel juhul kärpida kärpida.
Ja teate see on tulevikku kärpida, ei längkriipsu.
Kaldkriips, kaldkriips, neile, kes pole programmeeritud
enne, lihtsalt tähendab -
see on lihtsalt kommentaar.
Kommentaar ei ole kooskõlas koodi, per se.
See on rida Inglise, et teie, inimese, olen kirjutanud ise
ehk meelde, et sa teeksid midagi, mis selgitada ise, et selgitada
keegi, milline on sinu kood teeb.
See on lihtsalt kirjeldav kommentaari.
>> Nüüd, muidugi, meil on kahesuunaline teelahkmele ainult seda teed,
kolmeastmelise teelahkmele tehes seda, ja kui te jätkate seda
muster, sul võib olla neli-viis, viis-viis, kuus-viis kahvlid maantee kui
pead hakkama tõepoolest et paljud tingimused.
Ja siis märkate parallelism siin -
if (tingimus), else if (tingimus), ja ainus, mis on veidi
imelik on viimane, mis on just see teine.
Aga jälle, see on sama, kontseptuaalselt, et see, mida me oleme teinud
juba, kuigi süntaks võtab natuke harjumist.
>> Nüüd, selle näiteks on mõned teised kummaline süntaks.
Näeme printf taas avatud sulgudes ja Lõpusulg.
Ja sees on jutumärkide.
Sulgudes kontekstis printf minge vasakul
ja õigus, mida?
Mida me kirjeldada, et noteeritud stringi üldisemalt?
>> Nii et see on argument.
Iga kord, kui on funktsioon, nagu printf ja seejärel avatud paren ja
Sulge paren ja midagi sees see, kas see on string, või
täisarv, või midagi muud, asi vahel need sulud nimetatakse
argument.
>> Ja argument vaid mõjutab funktsiooni käitumist.
Sel juhul on see päris selge, kuidas.
x <y on see, mida on möödunud aastal, niiöelda argumendina.
Ja printf läheb printida just nii.
Sest kindlasti on isik aastat tagasi kes ellu printf polnud aimugi,
mida me inimese õigusjärglased kavatse kasutada printf eest.
Nii et miks argumendid olemas, käitumise mõjutamiseks pärast funktsiooni
on kirjutatud.
>> Nüüd Boolean väljend.
Me oleme näinud neid enne Scratch.
Selgub, C saab ka "või" koos, nii rääkida.
Triipudel tähendab, et see plokk koodi, see selleks, eks
täitmisest, kui esimene tingimus on tõene või teine ​​tingimus on tõene.
Ja kuigi te ei oleks teinud see Scratch, siis võib tõepoolest
seda teha Scratch, ja te saate ka ennast väljendada erinevalt -
Kui esimene tingimus ja teine tingimus on tõene, siis seda, mis on
sees looksulg.
>> Ja just nagu kõrvale, põhjusel et see on topelt-märk ja topelt
püstkriips, me näeme lõpuks et ühe püstkriips ja
ühe ampersand tegelikult on erinevad tähendus C. Nii et nüüd,
et dubleerimise sümbolid on tahtlik.
>> Niisiis olgem tutvustada lühidalt see teine ​​natuke süntaks.
See ei ole päris üle kanda Scratch, kuid ma väita, et ma ei saa
rakendamiseks mõiste kui muidu, kui muud, kui muud, kui teine ​​avaldus kasutades
midagi, mida nimetatakse lüliti avaldusega.
Ja ainus põhjus, miks see tõesti olemas on lihtsalt teile, programmeerija,
veidi teistmoodi lahendada mõned probleem, kuigi loogiliselt
ei anna teile uusi võimeid.
>> Autor et ma mõtlen seda.
Kui sa ütled lüliti, ja siis tühiku ja siis sulgudes, sees
millest läheb väljendus -
ja see võiks olla veidi vähem ilmne alguses, kuid see ei ole argument,
tehniliselt, sest lüliti ei ole funktsioon.
Nii et nüüd, lihtsalt eeldada, et me kasutame Sulgudes erinevates kohtades
erinevatel põhjustel.
>> Nii lüliti väljend tähendab, et ma ei saa panna muutuja sees neist
sulgudes, kui ta ütleb väljendus.
Ja siis, kui see muutuja -
arvan, et see nimi on x, ja see on lihtsalt täisarv -
Võin siis loetleda oma slide siin midagi sellist.
Kui x on minu muutuja, ja ma tahad midagi teha, kui x
võrdub 1, ma ei tee seda.
>> Kui ma vaid tahavad teha midagi kui x on 2, ma ei saa seda teha.
Sest kui ma tahan teha midagi täielikult, saan default juhul
sel juhul ma seda teiste asi.
Nii et selles mõttes, et see on võrdne kui x võrdub võrdub 1, teine ​​kui mujal,
kuid mainin seda nüüd lihtsalt sellepärast, me näeme seda uuesti.
Aga nüüd, lihtsalt tean, et see on olemas.
>> Hea küll.
Nii need viimased paar on natuke rohkem keeruline esmapilgul, kuid nad ei
midagi üsna lihtne.
Jaoks loop C on patakas kood, mis lihtsalt teeb midagi uuesti ja
uuesti ja uuesti.
Ja ainus tüütu asi on see, see on, et see on natuke segasena
väljendada ennast selles tsükliline muster, kuid maailma standardiseeritud
järgmisel viisil.
>> Kui kasutate jaoks silmus, sul sulgudes uuesti.
Ja teate kaks semikoolonit seal.
Need kaks semikoolonit eraldi kolm erinevad väljendid sees
sulgudes.
Üks neist on nn initsialisatsioonistringi.
Üks neist on nn seisukorras.
Ja üks on nn uuendusi.
>> Vaadeldi abstraktselt, see on täiesti mitte-ilmne, et vaatame
juures konkreetne näide.
Scratch pidime korrata blokeerida.
Ja see plokk ütles korrata 10 korda, ütleme "Tere, maailm." Lubage mul nõuda
nüüd, ja me tuleme selle juurde tagasi, ning Seegi saab rohkem tuttavad
te enne pikk, samaväärne C kood võib öelda, et see -
kohta avalduse ja ruumi, paari sulgudes märkate semikooloniga sisse
seal, mis eraldavad kolme erinevat asjad, käivitamine,
seisukorras ja uuendatud.
>> Ja võtke guess what esimene teeb.
Int i = 0.
Töötlemata üldarusaadavat mõttes, mis on et teed meie jaoks ilmselt?
Nii et jah.
See kuulutab muutuja nimega i, ja see annab talle, mida väärtus?
0.
Nii, et see loob muutuja nimega i, säilitades väärtus 0 ta.
See on nn ettekanne.
>> Olgu, nüüd ma väitnud enne et keset asi, i
<10, on tingimus.
Mis siis teete?
Noh, mis silmus teeb, kui programmi jaoks loop töötab, on
iga kord, kui arvuti jookseb läbi see silmus, ülevalt alla, ülevalt
põhja, just nagu sina tegite kui lugedes ennast ja istudes,
uuesti ja uuesti ja uuesti, arvuti läheb
et kontrollida, kas tingimus.
Ja kui ma alla 10, siis teen seda uuesti.
Kui mul on vähem kui 10, siis teen seda uuesti.
Kui mul on vähem kui kümme, siis teen seda uuesti.
Nii et tundub, et Loodetavasti muutub.
Vastasel juhul oleks meil lõputu silmuse.
Ja tõepoolest, i on muutumas, sest Viimane asi, mida pärast semikoolonit seal
on veidi segasena süntaks i + +.
Aga need, kes seda teinud enne, see tähendab lihtsalt
lihtsalt mida?
>> Õpilased: [astudes VOICES].
>> DAVID Malan: Lisa 1 i.
Kasvatab i.
Nii nägime Scratch puzzle tükk, et tegelikult.
See ei paistnud i + +, kuid see lihtsalt tähendab lihtsalt, juurdekasvu
Väärtustame i poolt 1 iga kord, kui te seda teha.
Nii sõna-sõnalt, siis alustada käivitumist I 0.
Seejärel kontrollida oma seisundit.
Kas 0 alla 10?
Jah.
Me läheme läbi silmuse.
>> Järgmine asi, mida ma nõuda arvuti kavatse teha, on, et see läheb
juurdekasvu i.
Nii et ma nüüd 1.
Ta kontrollib seisukorras.
Kas 1 alla 10?
Muidugi.
Nii see uuesti.
Siis sammuga i + + kuni 2.
Kas 2 alla 10?
Jah.
Ja ikka ja jälle ja jälle.
Ja lõpuks, sest pluss-plussing, saame i võrdub 10.
Kas 10 on alla 10?
Noh, ilmselt mitte.
Ja see on koht, kus silmus lihtsalt peatub.
Ja kui teil on veel kood ekraan allapoole, arvuti
tulu käivitada selle koodi asemel.
>> Nii et taas, kuigi see läheb ilme ja veidi imelik
Esiteks kindlasti neile, kes pole kunagi programmeeritud enne, see
sõnalt vähendab kontseptuaalselt mis on muidu väga
lihtne puzzle tükk Scratch.
>> Olgu, ma lubasin, et ei tahaks muid analooge Scratch.
Seal on see ka.
Ja me nägime seda korraks viimast korda.
Aga mäletan igavesti blokeerida Scratch?
See lihtsalt teeb midagi igavesti?
Ma väita, et sa võiksid rakendada seda sel viisil.
Ja te võite tegelikult rakendada seda aastal hunnik erinevaid viise.
>> Aga samas silmus on lihtsalt teistsugune kuidas C väljendada ennast.
Lõpus päeval, te ei saa seda teha midagi samas silmus, mida
ei saa koos silmus.
Nii nad lõpus päev praktiliselt samad.
Aga ta saab ennast väljendada natuke teistmoodi
järgmisel viisil.
>> Mis samas silmus, see on see, mis on in sulgudes, mis on uuesti kontrollida ja
uuesti ja uuesti.
Ja niipea, kui see väljend on vale, siis loop peatub täidesaatva,
ja arvuti suundub joosta tahes muu kood, mida
on teie faili.
>> Aga mis on huvitav siin on et ma sõna otseses mõttes kirjutatud tõsi.
Ja tõsi on tüüpi tõeväärtuse, õige või vale väärtus.
Nii võiks tõsi kunagi saanud vale, kui ma olen sõna otseses mõttes
kodeeritud see minu programm?
Seega ei ole.
See on natuke imelik, et ma tegin seda.
Aga tõsi on tõsi.
Ei ole pluss-plussing.
Ei ole kasutada muutujaid siin.
Nii, kuna ma kodeeritud kuigi tõsi, see loop alati saab hinnata
uuesti ja uuesti ja uuesti.
>> Nii mitu korda on tere trükkimineku ekraanil?
Igavesti.
Lõpmatu arv kordi, kuni aku sureb või mõne muu välise
Kui juhtub.
Nii et see ei ole ilmselt parim programm kirjutada, sest kui kasutaja
ei saa kunagi loobuda oma programmi, siis on ilmselt ei ole, mida sa ette.
>> Aga mõnikord, programmid peaksid on lõputu silmuse.
Näiteks, kui arvuti on kella, see kindlasti oleks
tore, kui oma kella see hoida ajakohastamine ise igavesti, kuigi kord
teine ​​või kord minutis või midagi sellist.
Nii et isegi lõpmatu ring ei ole nende koht.
>> Hea küll.
Lõpuks see.
Ja see üks on natuke erinev funktsionaalselt ja me tuleme tagasi
see ilmselt pset 1.
Aga seal on teist tüüpi loop kutsutud tegema samas silmus.
Ja ainus erinevus siin vahel teha, samas loop ja, ütleme, samas silmus,
on see, et seisund on kontrollitud mitte enne kui käivitada koodi, kuid pärast
teil täita koodi.
Nii tipus kui loop, et teha samas
kontrollib see allosas.
>> Ja see lihtsalt tähendab, et samal ajal loop tavaliselt täita mitu korda
või vähem korda kui samal ajal loop?
Potentsiaalselt rohkem korda, sest ei samas silmus selgelt öelda seda,
ainult pärast mida sa kontrollida kui tingimus sees
Sulgudes on tõsi.
>> Nii me näeme, see uuesti ilmselt pset 1.
Kui sa kunagi tahad teha midagi juures vähemalt üks kord ja siis võib-olla veel mõned
korda, et see on hea ehitada kasutada.
Kuid samal ajal loop seevastu tahe kontrollida selle tingimuse esimene.
Ja see on see silmuseid C, ärge samas, kui, ja silmad.
Ja jälle nad map päris kenasti tagasi kriimustus, välja arvatud see üks ei ole
üsna sama analoog Scratch.
>> Noh, kuidas nüüd, muutujad?
Nii see on, kuidas ma deklareeritud muutuja süntaktiliselt teisel päeval.
Mul oli int, mida ma väitnud on täisarv.
Seejärel sain muutuja nimega counter, ja siis semikooloniga.
Mis siis on see koodirida teed?
See on lihtsalt, kuulutatakse muutuja -
mis on, küsib arvuti, anna mulle mõned mälu, anna mulle mõned bitti - in
mis ma saan salvestada mis?
Int.
Ja semikoolon tähendab lihtsalt lõpus rida koodi.
>> Nüüd teine ​​rida on ilmselt päris guessable.
Mis on counter = 0; teed?
See määrates 0 võidelda.
Ja nii see on teine ​​asi, et see on natuke tüütu
versus, ütleme, algebra.
Arvestades, algebra, võrdusmärk tähendab võrdne, siin C, võrdne
märk tähendab loovutamine.
Nii et see tähendab, pane mis paremal selle kohta, mis on vasakul.
Ja me näeme, teine ​​sümbol, võrdub võrdne, kui me tahame tegelikult testida
kvaliteet, veidi tüütult.
>> Aga see on veidi ebaefektiivne.
See on selline tüütu, et mul on kuulutada muutuja ja
siis annab see väärtus.
Nii C tegelikult võimaldab meil lihtsustada ja just seda teha kõik korraga.
Võite kuulutada muutuja vasakul.
Saate siiski teha loovutamise õigus, pannes et võrdusmärki
keskel.
Nii et lõpuks, need kaks on samaväärne, kuid see, ausalt öeldes,
on ilmselt parem harjumus sattuda lihtsalt sellepärast, et see on natuke vähem
kood, see on natuke lihtsam lugeda, ja see lihtsalt karmistab
oma koodi, nii rääkida.
>> Kõik küsimused seni on silmad, muutujate kohta, tingimuste kohta
Tõeväärtused, kas tehniliselt või kontseptuaalselt?
Hea küll.
Nüüd see järgmine üks saab veidi põnevamaks.
Ja see on näiteks panin üles viimane aega, et lihtsalt kaardistas Scratch näiteks
üle C.
>> Seega funktsioon.
In üldarusaadavat mõttes, mis on funktsioon?
Pead olema julgem oma vastust.
Mis funktsioon?
>> Üliõpilane: Kas midagi.
>> DAVID Malan: Mis see on?
>> Üliõpilane: Kas midagi.
>> DAVID Malan: Kas midagi.
OK.
Hakkame seal.
Seega funktsioon teeb midagi.
Nii et see on tükk kood, mis on sisuliselt rakendada mujal, mis
tõepoolest teeb midagi.
Nüüd, mis on huvitav funktsioon on see, et ta võib võtta sisend,
ja seda saab toota toodangut.
Ja olgem tegelikult võtta Vaata seda.
>> Nii mees eesriide taga oli tahtlik hetk tagasi.
Siin on tabel.
Aga oletame, et see tegelikult esindab suur kast.
Nii et see on nn must kast.
Ja üldiselt, disaini, arvuti teaduse, mustad kastid lihtsalt viidata
tükki funktsionaalsust, et keegi on rakendanud, ja sa ei ole
tingimata teadma või huvita, kui see on rakendatud all kapuuts.
Sa lihtsalt hoolitseda, et see must kast, mis me nüüd alustada kutsudes
funktsioon, ei midagi.
>> Nii näiteks, kui see must kast etapis siin esindab printf,
funktsioon, ma tean eelmiste näidete et printf võtab ühe või mitme
argumente ning esimene neist argumendid peaksid olema string, nagu
"Tere, maailm." Noh, kui ma olen inimene kirjutamise programm, ja ma tahan,
kasutada printf, I, näiteks võib võtta tükk tühja paberi siin ja
must marker ja kirjuta sinna -
Ma valesti "maailm" -
H-E-L-L-O.
>> Nii et ma võtan must marker ja ma tulen kirjutada, kui suur ja loetav, kui suudan edasi
see paberile, "hello, world" Ja nüüd ma väita, et see on minu argument.
See on string esindatud valgele paberilehele.
Ja minu sisend nüüd funktsioon printf saab olema see.
Nii et ma kutsun printf, mis kulgeb et väide, nagu sisend ta.
>> Ja nüüd, ma ei tea, kuidas isik, kes kirjutas printf tegid seda aastaid tagasi, kuid
Ma tean oma dokumentatsiooni tema eesmärk elus on printida, mida ma
ette, et ta on sisend.
Ja nii, kuigi see rakendamine on teadmata mulle
all kapuuts, nüüd Ma näen, oh, see on tehtud.
See on trükitud midagi ekraanil.
Ja nüüd kontrollida programmi, kui seal oli rohkem rida koodi, mis
on nüüd tagasi mulle.
Ja nii, et Colton -
õnnista oma südames on peidus siin all laua ees teid kõiki -
on tahtlik ka, et ma ei tea, ja mind ei huvita kuidas printf on
rakendada.
Ma lihtsalt tean, jälle tema dokumendid, mida ta teeb ja kuidas ma
ma peaks seda kasutama.
>> Nüüd meenutada printf võiks saada veidi keerukam.
Jällegi, me lihtsalt räägime samaväärne Scratch Ütleme blokeerida.
Aga ma ka tegin seda viimast korda.
Tahtsin Tema programm vähe dünaamilisem ja mitte ainult raske
kood midagi "maailma" ja Kindlasti ei ole raske koodi midagi
meelevaldne nagu D-A-V-I-D programmi.
Ma tahtsin küsida kasutajalt tema nimi ja tehke midagi
et string, et nad pakuvad.
>> Nii et seal on midagi veidi teistsugune siin. printf, hetk tagasi
ei tõesti, midagi teha, kuid see ei andnud mulle midagi.
Õigus?
Colton ei andnud mulle midagi tagasi, ei paberilehele.
Seal oli lihtsalt kõrvalnäht.
Minu pakkudes "hello, world", nagu argument, et Colton tulemuseks
kõrvalmõju sõna, mõned sõnad, ilmuvad ekraanile.
>> getString, kuigi on vähe erinevad. getString on ka
toimida, kuid see läheb mingi väärtus.
See ei ole mitte ainult esteetiline kõrvalmõju.
See tegelikult annab mulle inimene helistades või kasutades funktsiooni,
midagi tagasi.
Nii et sel juhul getString on hüüdis getString avatud
paren lähedal paren.
Kas getString seetõttu võtma mingeid argumente või sisend?
Ei, see ei paista.
Selle eesmärk elus on lihtsalt saada string.
See ei vaja üksikasjalikumalt kui see.
Nii et lubage mul minna ja teeselda, et jälle see must kast ei printf,
kuid getString, ja andke mulle, inimene kirjutamise programm, helista või kasutada
getString poolt lihtsalt kirjalikult G-E-T-S-T-R-I-N-G, avatud paren lähedal
paren, getString.
>> Nüüd ma ei tea, kuidas CS50 personal rakendatud getString, aga ma tean, et
kui ma oodata piisavalt kaua, siis teen oma asi all kapuuts, võibolla kasutades
mõned muutujad, ehk kasutades mõned tingimused, võib-olla kasutades mõned silmad,
võibolla mõnede funktsioonide kasutamiseks, võibolla kasutades -
lihtsalt üritan varisemine - võib-olla kasutades mõne muu programmi funktsioone.
Aga kui ma oodata piisavalt kaua - tegelikkuses arvuti, seda juhtub,
super kiire -
kui ma oodata piisavalt kaua, see funktsioon getString hakka string
kasutaja, kes on oletatavasti kirjutades ta läbi oma klaviatuuri ja
siis, kui te getString tehakse saada need märgid kasutaja
ja säilitada neid arvesse string, mis funktsioon, getString, läheb on
valmis mulle väljund, mis ma olen läheb kätte teel
omistamisoperaatorile.
>> Ja kui ma olen läinud tõepoolest arvesse väljund Siin Obosi on heldelt
osalenud, teadmata seda edasi, kirjutades oma nime peale seda
muutuja, mis esindab string.
Nüüd omistamisoperaatorile tähendab, isegi Kuigi see võib tunduda veidi
üleliigne, ma tegelikult ei vaja teha oma koopia.
Kuna vasakul külg - Oih! -
teate, et ma põhimõtteliselt on string nimi vasakul servas.
Nii et ma olen ka kavatse teha minu koopia.
Ja see on natuke valge vale, sest me näeme nädal või kaks on
aega, et stringid ei tegelikult mida nad näivad olevat.
>> Aga nüüd, siin on tagastatav väärtus.
Siin on minu enda koopia pärast kasutades omistamisoperaatorile.
Ja nüüd, mida ma tahan teha?
Meil on nüüd teine kaks rida koodi.
Nii et ma nüüd tahan helistada printf.
Kujutleme nüüd, et must kast on jälle tagasi olla
printf ja ei getString.
>> Printf seekord läheb võtma, kui palju argumente?
Nii et otsida, see on nagu kaks.
Seal on kaks koma olemas, kuid üks neist komad, see on
sees jutumärkides.
Nii et esimene argument on sõna otseses mõttes läheb see.
H-E-L-L-O, koma protsenti s, Kenoviiva-n.
Ja nüüd ma olen pakkudes mitte üks argument, kuid kaks argumente printf.
>> Ja mis printf sellega teha need kaks sisendit pärast annan neile
kui argumendid?
See peaks võtma teine neid, mis ma helistasin nimi, nii
Teine paberile kirjutasin välja hetk tagasi nimetatakse nimi.
See saab plug väärtuse sees Selle muutuja arvesse kohatäide,
% S, nii et jällegi vaid hetk aega, näeme kõrvalnähuna
Ta kutsus printf, kusjuures nüüd me ei näe "hello, world", vaid "tere,
Obosi. "
>> Nii suur aplaus mõlemale Meie vabatahtlikud, vaid üks neist teadis
see oleks toimumas.
Hea küll.
Niisiis, võib-olla, nii lihtne see oli, Kindlasti, kui sa oled juba tuttav
Sellise, loodetavasti sa kunagi unustada, et eelkõige visuaalne, kuidas
funktsioonid töötavad.
>> Nii et seal on midagi enamat kui lihtsalt getString.
Toas CS50 raamatukogu, seal terve hulk funktsioone, mis kõik
kapitaliseeritakse lihtsalt selgeks teha, et me kirjutasime need funktsioonid.
Tüüpiliselt on C, peaaegu iga teine funktsiooni saad kasutada on väiketähed.
Aga me teadlikult kasutada suurtähti lihtsalt selgeks teha, et need
on Apupyörät kehvasti, et paneme kasutada vaid paar nädalat, et
lihtsustada protsessi saada panus kasutaja.
>> CS50 raamatukogu ei tee midagi et te ise ei saanud seda, mida
lihtsalt kasutades C koodi oldschool õpik.
Kuid jällegi, me kasutame neid koolitus rattad kehvasti paar
nädala, et saaksime vabaneda keerukus, et saate kohe aru,
ise teha midagi nagu Suhteliselt lihtne on saada
panust kasutaja.
>> Nii tean, et teil on juurdepääs et getchar, GetDouble -
kahekordistub.
Tollest - ja siis GetFloat.
Mis float?
Alustame siis.
>> Õpilane: [kuuldamatu].
>> DAVID Malan: Jah.
See number koma.
Nii et int on täisarv, mis on vaid number 0 kuni 9,
mõned korduste arvu, ning float on midagi
koos koma.
Ja topelt, vahepeal on ka number koma, kuid rohkem
numbrite pärast koma punkt, potentsiaalselt.
>> Nii et me võtame seda enne pikk.
Aga tavaliselt, iga tüüpi andmed, iga tüüpi muutujad
et raamatukogu nagu meie võib naasta sa kasutada erinevate numbrite bittide
teavet salvestada.
Tavaliselt Char, mis tähendab lihtsalt üks märk, kasutab 8 bitti.
Ja see on tegelikult kooskõlas meie bait vabatahtlike eelmisel nädalal kes
tuli ja oli üks ASCII korraga.
Nii Char on 8 bitti.
>> Float juhtub olema 32 bitti, tavaliselt.
Ja topelt, nagu te võite arvata, on tegelikult 64 bitti, mis on lihtsalt rohkem,
mis tähendab, et sul võib olla suurem numbrid või rohkem täpsust.
Aga jälle, rohkem, et mõni teine ​​kord.
GetLongLong, vahepeal küll rumalalt nimega, on tegelikult lihtsalt
täisarv, mis on kaks korda nii suur, kaks korda pikk, potentsiaalselt tavalise
täisarv, 64 bitti asemel 32.
Ja getString Oleme kasutanud.
>> Aga selgub, et CS50 raamatukogu mida rakendatakse, kui me näeme, et
kujul kaks faili, millest üks nimetatakse cs50.h, on kaks
andmetüübid ta.
Tõeväärtused ei eksisteeri C. Võite simuleerida neid kasutab ainult 0. ja 1s
kogu oma programmi.
Aga me CS50 raamatukogu on loodud sümbolid "true" ja "vale"
esindada 1 ja 0, et sa ei on raske koodi midagi
sõna otseses mõttes nagu 1 ja 0.
Aga me näeme neid uuesti.
>> String, liiga, ei ole olemas.
Ja sellepärast ma mainisin see on natuke hädavale nüüd.
Aga me koor tagasi, et kiht enne pikk.
Aga nüüd, string märgijada.
>> Vahepeal, C, siis tõepoolest on eri tüüpi andmeid.
Teade need on väiksed.
Nii toimib nägid hetk tagasi on funktsioone kirjutada CS50 et
naaseb sa raha, mis kuulub ühte nendest kategooriatest.
>> Paar cheat lehed lihtsalt istutada seeme siin. printf ei ole lihtsalt
võtta% s kohatäidetena.
See võtab% d jaoks kohaga täisarvud või% i ei tööta nii hästi.
% F ujub väärtused. % C on char, kui sa tahad lihtsalt ühenda
iseloomu arvesse vormindatud stringi nagu me oleme seda teinud, saate kasutada% c.
>> Ja siis, veidi tüütult,% LLD on kaua, kaua aega pärast koma täisarv,
mis lihtsalt tähendab, et kui teil on vaja tõesti suur number ja te kasutate midagi
nimetatakse pikka, mis me tuleme tagasi in pset, mida saab kasutada% LLD et
ütle printf, ühendage tõesti suur täisarv siin teel oma teise või
mõne muu argument.
>> Ja lõpuks, ma lubasin, et seal on mõned muud väljapääsu
järjestused, mis printf toetab.
Me oleme näinud Kenoviiva-n.
Längkriipsu-r võite näha.
See on omamoodi vana kooli asi.
Kui olete kunagi kasutanud reaalne kirjutusmasin aastat tagasi ja te tõmbas vända
mis mitte ainult ei pöörata ratast liikuda rivistuse, samuti liikunud
Kogu asi kogu tee tagasi üle vasakule, noh, Kenoviiva-r lihtsalt
sisuliselt kursori tagasi alustamist line
liigutamata see maha.
Aga jälle, rohkem sellest, võibolla tulevikus.
>> Längkriipsu-tsiteerin Kenoviiva-jutumärke, Kenoviiva-Kenoviiva on
lahendus tilluke mõistatus I vihjas varem.
Ja Kenoviiva-0 on tegelikult päris huvitav.
Aga me tuleme tagasi et enne pikk.
>> Nii et lubage mul minna, nüüd CS50 aparaat, ja olgem tegelikult teha
kiire soojendada üks näiteid tegime juba ja siis liikuda edasi
midagi veidi keerulisem.
Nii et kui ma avada oma programmi nimetatakse gedit -
see on minu graafiline redaktor.
Ja ma ei saa seda teha -
lase mul lõpetada see aken seal -
teel selle ikooni siia, gedit, põhja-vasakule
nurgas kõrval menüüs.
>> Ma lähen edasi minna ja arendada ning salvestada see näiteks meie, ütleme, John
Harvardi kausta.
John Harvardi kaust on lihtsalt oma kodus kataloog, kus kõik oma failid elada
vaikimisi.
Ja ma lähen salvestada see nagu fail nimega hello-0.c.
Ja ma olen valinud selle nimi just nii see ridade järele proovi kood
Loomulikult veebilehel ning YouTube videos online.
>> Nüüd ma lähen hakata kirjutan oma esimest programmi.
Lubage mul suumida loetavuse.
Ja ma lähen edasi minna ja öelda, int Peamine tühine, mis on nagu, et
kollane puzzle tükk, mis käivitab programmi.
Olen saanud harjumuspäraselt üle aasta avamise mu lokkis traksidega, siis
ka sulgemise ja siis läheb tagasi kui ma tahan, et minu kood, lihtsalt
sest see aitab mul hoida kõike tasakaalus, eriti kui mu
Programmi saab pikk.
>> Ja nüüd, siin, ma lähen edasi minna ja öelda, printf, tsiteerin lõppeb,
tere, Kenoviiva-n lähedal tsiteerin Lõpusulg, semikoolon.
Nii et ma olen lihtsalt korrates kõik oleme võtnud iseenesestmõistetavana siiani.
Nüüd ma lähen välja suumida.
>> Ja see terminal window siin all, mida mul lubatud teha selles must
ja valge aken?
Mida ma saan seda kasutada?
Nii et see on koht, kus ma saan käsud ja kus ma saan kompileerida asju.
Ja ma lähen hoida seda lihtsat.
Ma kasutan programmi nimetatakse Tee, mis ei ole
tehniliselt tõlkija.
Koostaja kutsutakse rõkkama, kuid me tuleme tagasi, et
nädal või kaks aega.
>> Sest nüüd, ma olen lihtsalt kavatse tüüpi teha tere-0, aga need, kes olid
võrrelda oma mõtetes, mida ma lihtsalt kirjutatud, mida ma oleks pidanud kirjutada võib
teavad juba, et ma ei midagi valesti.
Nüüd, seal on selgelt mõned vead.
Enne kui ma isegi vaadata, mida nad on kõik mõtteid selle kohta, mida ma valesti tegin?
>> Õpilased: [astudes VOICES].
>> DAVID Malan: Jah.
Olen kadunud raamatukogu header fail.
Kõiki neid. H failid nimetatakse header failid ja nad kollektiivselt
kuuluvad asju nimetatakse raamatukogud.
Raamatukogud on lihtsalt tükkideks kood et teised inimesed kirjutas.
Nii standard [? i?] raamatukogu failide kogumit sisaldav kood
et teised inimesed kirjutas.
>> Nii et ma olen kadunud, et.
Miks ma saan vea?
Noh, las ma kerida tagasi üles minu terminal window siin.
Ja kahjuks C, kui palju programmeerimiskeeli, eriti
kui see kõik on uusi teid, vea sõnumid on täpne, kuid nad ka
üsna segasena.
Ja viga siin, punane, on "Kaudselt kuulutatakse raamatukogu funktsiooni
printf tüüpi, "ja siis kerib järgmisele reale "int const char *
... "See lihtsalt muutub tõesti Valdav kiiresti.
>> Aga mida sa peaksid algama teha, kui, jälle uus see kõik on lihtsalt
hakata otsima märksõnu.
On selge, et ma ei mõista pool on sõnu, mida ma olen näinud veel.
Sa saad, aga ka nädal aega.
Aga ma näen printf.
Ja see peaks algama enne pikk, et jog oma mälu, eks, printf.
Midagi on valesti printf.
Kas ma kirjutada seda valesti?
Ei, see ei tundu - oh.
Ma ei saa seda kasutada, kui ma õpetan koostaja, et see on olemas.
Ja nii uuesti, minna oma instinkte, isegi kui sa tegelikult ei mõista
tegelik veateateid.
>> Ja tõepoolest, lahendus on siin lihtsalt lisada selle ülaosas faili
niimoodi, resaving mu faili Kontroll-S või menüüst Fail.
Ja kui ma nüüd tagasi minna siia alla, Ma lähen, et selge see.
Kontroll-L on lihtsalt tore viis Ekraani tühjendamiseks.
Ja siis ma lähen kirjuta "make tere 0 "Enter, ja nüüd ma ikka näen
segasena jada sümbolid, kuid Me tuleme tagasi selle.
See on see, mis teeb teeb teile.
See automatiseerida protsessi, võttes üsna tüütu käsk hõlmab
Rõkkama tegelik koostaja.
Aga see, et mul pole viga tähendab et see asi peaks toimima.
>> Nii et ma olen nüüd teeme - andke mulle suumimiseks uuesti -
./hello-0 Enter, ja tõepoolest, ma näen "Tere, maailm." Teeme nüüd suurendada
see kunagi nii vähe lihtsalt imiteerida milliseid samme ette.
Ma lähen ümber seda Save As hello1.c.
Ja nüüd ma lähen kuulutada muutuja nimetatakse nimi, nii string nimi,
ja ma lähen panna see väärtus viisi kraami
D-A-V-I-D close-quote semikooloniga.
Ja nüüd ma lähen asendama "maailm" mida kohatäide string?
% S.
>> Ja nüüd, kui palju argumente peaks printf seda aega?
Nii kaks.
Nii et ma minna väljaspool hinnapakkumisi.
Writing "name" peale koma.
Aga ma olen teinud midagi muidu viga seekord.
Aga oletame, et ma ei teinud seda aru, et veel.
Lubage mul minna siin.
>> Ja teate ka, ma saan veidi igav kirjutades "teha hello 0" kõik
aega, "teha" ja kõik see.
Niisiis, tuleb välja, et Linus saate sageli tabanud Up noolt
klaviatuur ja tegelikult võite kerida läbi kõik käsud, mis ma olen
hukati eelmisel just nüüd.
Nii et kui ma seda teen, Up, Up, seal teha hello 0.
Ma ei taha seda.
Ma tahan, et seda muuta, et tere 1 seekord Enter.
Lõpuks, mis säästa aega.
>> Hea küll.
Kahjuks seal on viga.
Nii et lubage mul liikuge üles.
See näeb välja nagu ma tõesti tappis selle programmi.
Ma mõtlen, et mu jumal, see on kaks rida koodi, ja 10 rida vigu.
Aga vaatame top üks esimene.
Kasutage deklareerimata tunnus string.
Kas ma mõtlen standard i n?
No ma ei teinud seda.
Ma mõtlesin string.
>> Aga kus on string muutuja tüüp kuulutatud, dd ütleme?
Nii see on CS50 raamatukogu.
Nii et see ei ole piisav, et need kõigepealt paar nädalat, lihtsalt kasutada
Mida C annab meile.
Ma kavatsen ka minema siit, ja ma võiksid panna see üles-või allapoole, aga ma
muudkui tähestikulises hoida asjad korras.
Ma lähen lisada cs50.h, mis on eelnevalt paigaldatud
Teid CS50 aparaat.
Ja see on avatud lähtekoodiga, nii et isegi inimesed Internetis võib seda kasutada oma
arvuteid.
Aga see on kaasas CS50 aparaat.
>> Nüüd lubage mul minna tagasi ja kompileeri seda teha hello 1.
Kurat.
Veel üks viga.
Lubage mul kerida kuni esimese, kuigi.
See üks on natuke keeruline.
Multi-kohaline sümboleid.
See ei aita mind.
Aga teate, rõkkama on vähemalt natuke natuke korralik, kusjuures vähe
roheline katus sümbol, ta ütleb siin on koht, kus ma silmamunad.
Miks on suunatud, selle väike roheline nool, et ühtse quote järgmine
minu nimi?
>> Nii et see on üks neist asjadest, sa lihtsalt harjuda, eriti kui sa oled olnud
programmeerimine Python, või JavaScript, või teistes keeltes, kui see detail
Vahet pole.
In C, see asi.
Kui te kuulutab string, mis on jada 0 või rohkem tähemärki,
sa tegelikult peavad kasutama jutumärgid.
Nii et ma tegelikult vaja muuta see tagasi avada quote sulgege quote koos
jutumärgid.
Ülakoma teha on oma koht, kuid ainult siis, kui te kasutate individuaalne
tähemärki, kuid rohkem sellest mõni teine ​​kord.
Praegu jutumärgid on vajalikud.
>> Nüüd lubage mul minna tagasi oma terminal aken, muuta tere 1.
Ja kes on kindel?
Kas see programm nüüd läheb koostada õigesti?
OK.
Nii kolm meist arvavad seda.
Hea küll.
Enter.
Ja ta tegelikult ka tegi.
Seega puudub vigu seekord isegi kuigi see programm on läinud natuke
keerulisemaks.
Kui ma nüüd tegema dot kaldkriipsuga tere 1, Enter, see läheb öelda "tere, David."
>> Aga teeme kolmanda iteratsiooni selle, kus
Programm on tõeliselt dünaamiline.
Lubage mul minna ja muuta faili nimi, just kooskõla
failid on teil võimalik et sa hiljem internetis.
Enter.
Ja nüüd ma lähen minema ja ei salvestada "David" kõva kodeeritud siin.
Mida ma saaksin teha, väga lihtsalt parandada selle programmiga?
>> Ma võiks helistada getString.
See võib olla veidi vähem selge, mis on umbes juhtuda, nii et ma lähen
tegelikult lisada teise rea, printf, ja öelda nimi, koolon, lähedal tsiteerida, lihtsalt
anda kasutajale kiire ekraanil.
Ja nüüd ma lähen siia, ja ma olen kavatse kasutada oma klaviatuuri otseteed.
Ma lähen üles, üles ja muuta tere 1 tere 2 Enter.
Ja õnneks olen saavutanud edu.
>> Ja nüüd ma lähen üles to dot kaldkriipsuga tere ja
muuta, et 2, Enter.
Ja nüüd minu programm -
Ma suumida - muutub veidi ilusamaks.
Nimi saab olema, ütleme, et Rob seekord Sisesta Tere, Rob.
Me ei tee seda uuesti.
Nime, Lauren, Enter.
Nime, Joseph, Enter.
Nimi, proovime olla raske, Enter.
Eh.
See ei ole tegelikult viga.
Nii et see on natuke inetu.
Nii et äkki me võiks lahendada see tulevikus, mitte praegu.
>> Aga kuidas sa instinktiivselt minna käsitledes
mis väljakutse?
See lihtsalt tundub rumal.
Kuidas vältida asju otsin loll?
Nii et me võiksime teha, OK, ma kuulsin paar asju, seisund ja silmus.
Me võiksime kasutada, üks, tingimusel, et kontrollida Mis on pikkus string
kasutaja andis meile?
Ja kui see on 0, see on lihtsalt tsiteerida lõppeb, nad lihtsalt Enter, siis
äkki ma peaks kisa neid ja küsib uuesti.
Aga kuidas kallutada neid uuesti?
Noh, ma kuulsin ka, loop, ja suutsin tee seda uuesti ja uuesti ja uuesti
ajendades kasutaja jaoks sama.
>> Noh, teeme veel ühe näide kasutades erinevat
funktsiooni CS50 raamatukogu.
Lubage mul lõpetada kaebuse.
Lubage mul luua uue.
Ja ma kutsun seda adder.c lihtsalt sellepärast, see on lihtne teha lihtne aritmeetika,
kuigi see on täiesti underwhelming, mida sa võiksid teha
mis tahes kaasaegne arvuti.
>> Aga lubage mul minna nüüd ja -
Õppisin minu õppetund viimane aeg - sisaldab cs50.h sisaldama stdio.h, int
Peamine tühine, mis nüüd, ma lihtsalt võtma pimedat usku, kuid eeldame,
et saab aru, mida see tähendab, et enne pikk.
Ja ma midagi öelda nagu "anna mulle int."
>> Ja nüüd, kuidas ma saan int?
Tahan lõpuks kuulutada muutuja nimetatakse x-tüüpi int ja
salvestada see täisarv kasutaja.
Nii et oli suutäis.
Aga kui keegi tahab teha ettepanekuid, kuidas ma kuulutada täisarv nimetatakse x?
Int x.
>> Nii et see on tõesti nii lihtne.
Anna int.
Kõne see x.
Nüüd ma saan kasutada omistamisoperaatorile.
Ja kuidas ma säilitada alates jäänud raha kasutaja?
Ma ei taha, et helistada getString, Ilmselt vaid getint.
Kõik argumendid?
Ei.
Nii et see on avatud paren lähedal paren kohe, ja siis
semikoolon lõpeb liin.
>> Nüüd lubage mul seda teha uuesti.
Anna mulle veel int.
Seekord ma teen int, olgem kutsume seda y võrdub getint.
Ja nüüd andke mulle midagi super-lihtne nagu natuke matemaatikat.
Nii printf, summa% d on kohatäide int.
Ja% d, periood, Kenoviiva-n.
>> Hea küll.
Nii et see ei ole tegelikult matemaatikat.
Aga kui ma tahan öelda summa selle väärtus pluss see on võrdne selle
muu väärtus, kui palju argumente arvesse kokku peaks ma olla annab printf,
lõpuks?
Nii neli, eks?
Seda stringi ja seejärel kolm väärtust.
Nii x on esimene ma tahan olla ühendatud esimesena% d.
y läheb järgmine.
>> Ja nüüd ma nagu tahaks öelda z, aga z ei eksisteeri.
Aga see ei ole suur asi.
Sest see, mida sa teeksid, instinktiivselt, eriti kui teil on olnud
Graafikavidinate kalkulaator, mida sa kirjutad?
Kuidas x pluss y?
Nii see ei ole tegelik muutuja.
See on lihtsalt summa kaks teised muutujad.
Ja see on täiesti õigustatud.
C kindlasti mõistab lihtne aritmeetika niimoodi.
>> Semikoolon, salvestada.
Nüüd lubage mul minna siin ja kirjuta muuta lisasid, Enter.
No viga, et see on edu ka.
Tüüp rästik.
Ja veel üks kiirklahvi, kui hakkad igavleda
kõik käsud -
kui hakkad käsk, nagu dot kärpida reklaami, ja see on koht, kus oma
igavus tunda, tavaliselt saab löögi Tab on arvuti lõpetada
ülejäänud fraas teile, kui see ei ole ebaselge, milline peaks tulema pärast reklaami.
>> Nii et lubage mul minna nüüd ja klõpsate Enter.
Anna int, 1, 2, ja Õnneks on see 3.
Aga nagu alati, testimise programmid ei tohiks vähendada
lihtsalt üritan seda üks kord.
Las ma proovin nurgas juhul nagu negatiivne 1, anna mulle 1, ning et üks
lahkub samuti.
Ja ma vist tahan teha mõned rohkem range testimise, aga ma olen päris
rahul, kui see on.
>> Noh, nüüd proovime teise programmi et seekord kasutab
natuke teine ​​süntaks.
Lubage mul luua uus fail.
Ma nimetan seda conditions0.c liinile välja mõned proovi kood online.
Ja lubage mul minna ja teha sisaldavad cs50.h sisaldama
stdio.h, peamiste void -
OK.
Vot nii.
Meil on standard stereotüüp.
>> Ja seekord ma lähen ütlen printf, "Ma tahaksin int, palun," lihtsalt
teha kiire vähe sõbralikum.
Ja nüüd ma tahan saada int kasutaja.
Ma kutsun seda n seekord lihtsalt sest n kõlab number.
getint ja nüüd, mida teha Ma tahan teha?
Noh, kui n on - ja ma suumida -
kui n on suurem kui 0, ma tahan teha järgmist -
printf "Sa valisid positiivne number." Else, ma lähen kirjutama printf "Sa
valisin negatiivne
number. "Olgu.
Nii, et see programm, kuigi ma tegin seda kiire, tundub õige süntaktiliselt.
Las ma proovin seda.
Tee seisund 0.
Tundub, et käivitada.
Seisukord 0, siseneda.
Anname ta int 50.
Ma valisin positiivne number.
Proovime uuesti.
Seisukord 0.
Negatiivne 50.
Ma valisin negatiivse numbriga.
>> Aga nüüd, lubage mul valida, mida me hoiame helistades nurgas puhul, mis on rohkem
huvitav juhtum, mis te arvate võib anda teile mõningaid probleeme, 0.
Nüüd ma olen päris kindel, et see on üks need nurgas kui null on
ei positiivset ega negatiivset, nii et mu programm, kuigi süntaktiliselt
õige - ta kogub, see töötab - ei ole loogiliselt korrektne.
Mis on lihtne fix siin kui ma tahan avastada, kui ma tahan tegeleda n
võrdub 0 eraldi?
>> Nii et kui n on 0, siis tahan öelda, midagi printf "Sa valisid 0".
Las ma proovin seda nüüd.
Lubage mul minna tagasi siin, selge minu akna ja kompileeri.
Hm.
Üks viga tekitada.
Aga ma soovite kontrollida kui n on 0.
>> Nii et taas, teine ​​loll asi harjuda, võrdusmärk on
omistamisoperaatorile.
Nii et see on tegelikult viga selles, tehniliselt, kuigi tõlkija
kaitsta mind ennast, olime tehniliselt kopeerimine 0 võetud n, mis
ei ole see, mida ma tahan.
Tahan testida võrdõiguslikkuse koos võrdub võrdsetena.
Ja nii, et nüüd võiks olla mu parem lahendus.
>> Lubage mul tegelikult salvestage see nagu, ütleme, nähtavus1, et uus ja parem.
Nüüd, kui ma kompileerida see, see muudaks tingimused -
Oih - teha tingimuste kohta1 dot kaldkriips nähtavus1, Enter, "Ma tahaksin int,
palun. "Ma lähen ees ja tüüp 50.
See on ikka hea.
Negatiivne 50, ikka hea.
0, ja see tõepoolest avastatud et ma valisin 0.
>> Nii et mida rohkem ma saan nüüd teha selle?
Noh, saame kindlasti teha järjest keeruline asju.
Aga mida ma tahaks teha ettepanekuid on et me lõpetame selle teadmiseks siin.
Kui me tõmba seda, siis näete, võib-olla, lemmik cartoon sinu
kuni tänase sa võiksid kunagi aru saanud.
Ja see on umbes kvaliteedi naer sa peaksid koos CS nalja.
Nii et õige.
>> Aga rohkem compellingly, ma mõtlesin, et ma anna meile veidi teaser esmaspäeval.
Nii et me oleme alustanud kasutades täisarvu.
Oleme nimetatud ujukid.
Me oleme isegi nimetatud paarismängus mis jällegi annab teile numbrid
pärast koma.
>> Aga selgub, et ujukite ja kahekordistub, ja tõesti, arvutid,
Põhimõtteliselt ei saa väljendada mõned väärtused täpselt.
Me teame matemaatika klassi, mida saate mingit numbrite arv pärast
koma.
Ja te võite isegi panna püstkriips öelda need kesta igavesti.
>> Kahjuks te ei saa tõesti teha, et arvuti.
Ja nii nurgas juhtudel tekivad.
Oletame näiteks, et sa oled midagi rahaline.
Sa teed matemaatika protsentidega, ning
koos dollarites ja sentides.
Ja need senti ei tingimata rivistama.
Noh, selgub, et fraktsioonid penne saab hakata küündivad kui
modelleerida arvutisüsteemi sellisel viisil, et tark
inimesed võivad ära kasutada.
>> Ja neile, kes ei ole näinud, ma meeldib sulle 30-sekundiline teaser
suurepärane film tuntud bürooruumid, mis joonistab pildi
probleem meil lahendada Esimene asi, mida esmaspäeval.
Kui me saaksime tõsta maht natuke, ma annan teile 30
sekundit kontoripinda.
>> [VIDEO PLAYBACK]
>> -Sa ju, sa ei ole olnud, mis näitab up ja saad hoida oma tööd.
>> -Tegelikult ma reklaamitakse.
>> -Ma võiks programmeerida viirus, et tahaks rip et koht ära suur aega.
>> -Noh, kuidas see töötab?
>> -Iga kord seal pangaoperatsioon kus intress on arvutatud, ja seal
On tuhandeid päevas, arvuti lõpeb kuni nende fraktsioonid protsenti.
>> -Aga ma ei kavatse tee midagi ebaseaduslikku.
>> -Ebaseaduslik?
Samir, see on Ameerika.
>> -Me peame vannun.
>> -Kui keegi ei tea seda aga meile, eks?
No pereliikmeid ei sõbrannade kedagi.
>> -Muidugi.
>> -Nõus.
>> -Ära muretse, mees.
Ma ei ütle kellelegi kas.
>> [END VIDEO PLAYBACK]
>> DAVID Malan: Nii et see on siis CS50, mis oli Office Space, ja see kõik
mõtet esmaspäeval.
Näeme siis.
>> Jutustaja: Järgmisel CS50, Rob kohaneb kustunud
Harvardi söömisharjumused.