>> [Muzikavimo]
>> Davidas Malan: Gerai.
Sveiki sugrįžę.
Tai CS50, ir tai yra Savaitė Vienas, tęsinys.
Taigi viena iš priežasčių, mes buvo išlaikęs apie technologijas, pavyzdžiui,
"Google" Stiklas kad jie ateina su kažkas žinomas kaip API
Taikomųjų programų sąsaja.
Ir ką tai reiškia, kad su teisingi failai ir su teise
dokumentacija, jūs iš tikrųjų galite rašyti programinė įranga net prietaisų, kaip šie.
>> Ir taip, ką mes turime omenyje link semestro pabaigoje yra, jei projektas
įtraukiant, pavyzdžiui, "Google" Stiklas gali apeliacinį skundą, mes pamatyti, ką mes galime padaryti
sąlygos nedėkite jus su kai loaner įranga taip pat
viešai prieinama API, kad būtų galima iš tikrųjų pradėti kurti programinę įrangą
kuri veikia toje pačioje "Google" stiklo.
>> Kitas prietaisas, kad mes buvo žaisti su per vėlai, kad mes manome, gali būti
smagu semestro pabaigoje tai mažai ką čia.
Tai vadinama šuolis Pasiūlymas, ir ką jūs pamatyti yra techniškai
reklama prietaiso, tačiau nėra kalbėti, ką tai ypač
prietaisas gali.
Ir ji taip pat ateina su API per kuri galite rašyti programinę įrangą
kontroliuoti savo kompiuterį taip, labai patiko šį vienos minutės filmas čia.
>> [VIDEO PLAYBACK]
>> [PABAIGA VIDEO PLAYBACK]
>> Taigi dabar, šis prietaisas būna turi būti įgyvendinamas kaip mažai USB
jungtis, kad jūs galite prijungti prie kompiuteris, bet aš nebūtų nustebinti
jei iki kol mes turime šių rūšių technologijos kitą partiją kompiuteriai
ir Mac, kad jūs iš tikrųjų gali bendrauti su juo
panašaus būdu.
Tiesą sakant, ką aš maniau aš padaryti, taip pat yra Aš iškedentas iki šiek tiek demonstraciją
programa, kuri ateina su šia programine įranga.
Taigi, aš įdėti šiek tiek jutiklis priešais mano nešiojamas.
>> Ir kaip matote, jis jau supranta, kad mano ranka yra
reguliavimui.
Ir visa tai programa daro, yra sklandžiai smulkmenos tai patinka.
Tačiau galite matyti, kad, tiesą sakant, Turiu penkis pirštus ten.
Jei mes galime gauti jį padaryti viską, 10, jūs galite įsivaizduoti, tvarkingas pianinas
paraiška ar panašiai.
Taigi, jei norite sugalvoti po klasę šiandien ir žaisti su, kad
gerai, kviečiame į.
Taigi, daugiau apie tai link semestro pabaigos.
>> Taigi administracinių pora pranešimai.
Vienas iš jų, padaryti pjūvį šį penktadienį vidurdienį cs60.net/section.
Kad URL yra aikštyno Tinklapis taip pat.
Tuo tarpu, nors, supersections debiutuos šį sekmadienį.
Supersections yra vienkartinis dalykas, nes jis nukelia mus šiek tiek laiko dirbti
, kas yra, kurioje dalyje ir kur.
>> Taigi šio ateinantį sekmadienį, ten bus vienas dalis tiems mažiau patogūs,
vieną skyrių tiems patogesnė.
Ir tie iš jūsų kažkur tarp kviečiame kreiptis į
arba abu, arba nė vieno.
Abu jie bus filmuojami.
Jie bus didesnėje auditorijoje nei dalis, kuri paprastai būtų in
Bet tikslas čia yra išmokyti jus su kai su problema komfortas nustatyti vieną,
su C, su CS50 prietaiso, šio savaitgalį, dar prieš jums sužinoti jūsų
formalus skyriuje užduotis.
Taigi jūs patenkinti savo TF ir jūsų mažesnį grupė sectionmates maždaug
savaitę laiko.
>> Darbo valandos, tuo tarpu, jau vyksta.
Ar jomis pasinaudoti vakarą arba rytoj vakare, jei norite.
Problemą, 0 yra dėl penktadienį.
Tai diena vėliau nei reguliariai pagal tvarkaraštį ketvirtadienį.
Bet problemą, 1, pamatysite kad ji apima kai apšilimo
pratimai su kuria jūs sau gali pratęsti savo
Ketvirtadienis terminas iki penktadienio.
Problema 1 rinkinys, tuo tarpu, bus debiutas nuo kurso tinklalapyje ateinantį
Penktadienis, jei norite susirangyti su tai kaip aš kažkada vėlai
Penktadienio naktį į savo kambarį.
>> Taigi cs50.net/appliance yra vieta, kur galite gauti CS50 prietaisą
kad mes pradėjome naudojant pirmadienį.
Mes jį naudoti tiek daugiau šiandien.
Tačiau būkite tikri, kad problema set 1 specifikacija padės jums
Tiksliau veiksmai, kuriuos reikia gauti, kad ir veikia.
Taigi nesijaudinkite apie tai, kad prieš Pset 1, jei nenorite.
>> Gerai.
Taigi, mes pažvelgė į pirmadienį kodą, bet į naują kontekstą
programavimo kalba, ty C ir C, skirtingai nuo nulio, nėra grafinis.
Tai ne įspūdį.
Tai daugiau anglų kaip sintaksės.
Ir ten iš etapus pora iš tikrųjų raštu ir veikia
programa C, nes be šaltinio kodas, kaip šis, jums reikia ką nors
vadinamas sudarytojas.
Ir profanas sąlygomis, kas nėra sudarytojas daryti mums?
Taip.
>> STUDENTŲ: Ji konvertuoja kodą kad rašote į 0s ir 1s.
>> Davidas Malan: Geras.
Taigi ji perkoduoja kodą mes rašome 0s ir 1s.
Ji konvertuoja vadinamąją šaltinio kodą Objekto kodas, o pastarasis atrodo
šiek tiek kažką panašaus į tai.
Ir tai jūsų procesoriaus, viduje iš smegenys jūsų kompiuteryje, kad dėl
žmonės, kurie sukūrė tuos kompiuterius, žinote, ką tie sekas
iš 0s ir 1s vidurkio.
>> Gal tai reiškia, spausdinti.
Gal tai reiškia pridėjimą.
Gal tai reiškia, atimtis.
Gal tai reiškia rodyti grafika.
Yra iš anksto modelius bitų kad pasaulis nusprendė reiškia
tam tikrų dalykų.
Tačiau didžioji dalis šio kurso, mes dirbti aukštesniu lygiu, ir
mes priimame kaip savaime suprantama, kad egzistuoja dalykų, pavyzdžiui, kompiliatorius, kuri gali
kad mūsų kodo funkciją taip, mes ketiname.
>> Taigi programos rašėme pirmasis praėjusią savaitę ir tada pradėjo į uostą, taip
kalbėti, į C praėjusį Pirmadienis, buvo tai.
Kai žalia vėliava paspaudėte, pasakyti labas.
Tai buvo, žinoma, parašyta nulio.
Ir aš teigė, kad lygiavertis programa C atrodė šiek tiek
kažkas panašaus į tai.
>> Taigi, ką aš maniau, mes norime padaryti iš pradžių yra tegul erzinti, išskyrus tai, kas atrodo iš pradžių
žvilgsnis, tiesa, kaip gana paslaptingų sintaksė, bet jūs pradėsite pastebėti
modeliai gana greitai.
Kas mes taip pat padaryti šiandien, tai suteikti jūs su psichikos modelis kai
kanoninė, keletas standartinių konstruktai programavimo.
Ir tada mes iš tikrųjų gauti savo rankas purvinas su keletą pavyzdžių, taip pat.
>> Taigi, tiems iš jūsų, patogesnis, suprasti, kad šią savaitę ir tada kitą
savaitę gali labai gerai būti peržiūrėti tiek.
Bet ypač kai įsilaužėlis leidimas Problemos nustatymas 1 išeina į
Žinoma tinklapyje penktadienį, aš manau, jūs pamatysite, kad net užpildyti
kai per kitą savaitę ar dvi, ruošiniai, jūs pradėsite gauti vis daugiau
užginčytos ir susidurti naujų ir naujesnių dalykų.
>> Taigi leiskite erzinti šią programą, išskyrus keletą eilučių vienu metu.
Pačiame viršuje, mes turime tai, kas techniškai vadinama
Preprocessor direktyva.
Tai tik kodo eilutę, kad sako įtraukti į failo turinį,
vadinamas standartiniu I / N standartinis įvesties - arba, atsiprašau, standartinis I / O, standartinis
įėjimas / išėjimas,. h viduje mano atskira programa.
>> Taigi, kitaip tariant, jei parašiau programa su paprastu teksto redaktoriumi, pavyzdžiui,
gedit, paprastesnis atitikmuo kažkas panašaus į "Microsoft Word", kad
instrukcija, # include stdio.h, yra tik ketina papasakoti kompiliatorių, patraukti
turinys tos kitos bylos, stdio.h, ir įklijuoti juos čia.
>> Dabar, kodėl aš priežiūrą?
Ką galima teigti yra viduje šį failą vadinamas stdio.h, kuris yra saugomas
kažkur mano kietajame diske, ar tai atveju, kažkur CS50 prietaiso?
Kažkas jį ten man.
Bet kas iš to?
>> Taip, todėl deklaracija funkcija vadinama printf.
Taigi printf primena funkcija, ekranai žodžiai ir simbolių ir
numeriai ant ne mano siūlymų ekrane.
Bet aš ne rašyti.
CS50 nerašė jį.
Kažkas metų rašė, ir jie iš esmės davė mums už jį receptą
faile vadinamas stdio.h.
Taigi, kad pirmoji eilutė tiesiog man suteikia prieigą funkcijoms, kad kažkas
rašė metų, tarp kurie printf.
>> Dabar kitą eilutę aš mojuoti MY rankų ir bent iki kitą savaitę.
Bet dabar, žinau, kad int main (void) yra iš esmės tai lygiavertis
geltona dėlionės gabalas, kai žalia vėliava paspausti.
Pasaulį, metų, nusprendė, kad, jei rašote programą
kalba vadinamas C pradėdami jūsų programa su linija
kad atrodo, kad.
Tik apie savaitę laiko, jis bus padaryti jausmas, kas int yra kas tuštumos.
Bet dabar, tiesiog galvoti apie tai, nes tai geltona dėlionės gabalas.
>> Dabar toliau, mes turime garbanotais petnešomis po kitu glaudžiai garbanotais petnešomis,
taip sakant.
Ir mes pamatysime tai visoje programos C, taip pat
JavaScript ir PHP.
Ir tai tik sutraukti susijusių eilučių kodo.
Atvira garbanotas petnešomis iš esmės sako, čia ateina tam tikrą kodą.
Ir uždara garbanotas petnešomis, kuris yra pasukti kita kryptimi, tiesiog
reiškia, kad viskas už atitinkamas kodas.
>> Taigi sultingas linija tai pirmasis programa yra paskutinis, printf,
citata-citatos, hello world.
Ir aš vadinamas dalykas tarp citatos, ką paskutinį kartą?
Taigi, tai eilutė.
Ir eilutė yra tik techniką terminas seka
simbolių, žodžių, frazę.
Net atskira raidė gali būti dvigubų kabučių.
Bet tai nulis seka ar daugiau simbolių.
>> Ukośnikiem-n, nors, atrodo, šiek tiek keista.
Bet tai tiesiog reiškia kažką paprasta kompiuteriu.
Kas Backslash-n?
Naujoji linija.
Taigi, tai tik ypatinga seka ženklai, kad pasaulis nusprendė
reiškia įdėti eilutės lūžį teisę ten, nes kompiliatorius iš tikrųjų gauti
supainioti, paprastai, jei jums labai suprantama, bet neteisingai, tiesiog
pradėti pataikyti Įveskite įdėti naujų linijų kodą.
Jūs turite būti šiek tiek daugiau aiškiai su kairiniu pasviruoju brūkšniu-n.
>> Ir mes pamatysite ten keletas kitų tokių modelius specialiųjų simbolių.
Pavyzdžiui, jei norite leisti savo galvą vaikščioti į kampinį atveju
tarkime, kad aš norėjau spausdinti dvigubos kabutės ant ekrano
kokios nors priežasties, kad atrodytų būti šiek tiek sudėtinga, tiesa?
Nes jei aš įdėti dvigubai citata viduryje "Hello, World" dėl kokių nors
priežastis, kodėl, kad atrodo tai gali būti problema?
Ji sugenda eilutę.
>> Sudarytojas yra tik programa.
Kaip kompiliatoriaus programa yra tik ketina skaityti jūsų kodas viršaus į apačią,
kairės į dešinę.
Ir jei mato tris kabutes vietoj iš dviejų, jis nesiruošia žinoti
jei turite galvoje, kad dalykas, į kairę turėtų būti eilutė, ar dalykas
dešinę, arba visa tai.
Tai dviprasmiškas, ir tai kas būdinga sudarytojas būtų padaryti, tai tiesiog freak out,
ir duoti jums kai klaidos pranešimą ir kad jums susidoroti su šia problema.
>> Taigi, turint omenyje, kad Backslash-n reiškia nauja linijos, kas būtų jūsų instinktai dabar
pradėti, jei norite įtraukti kažkas nenormalu kaip dvigubai
cituoti viduje apie tai kitaip cituojamas eilutę?
Ukośnikiem-dvigubos kabutės.
Ir todėl mes matome tai tipo modelis taip pat.
>> Jei norite ką nors šiek tiek keista, jūs pamatysite, kad
sprendimai dažnai sekti modelio, ir "Backslash
reiškia avarinį seką.
Ir tai tiesiog reiškia, kad kažką ypatingo kad mes turime atstovauti
kitaip.
Kaip kaip jūs atstovauti Backslash, gerai, mes
grįžti prie to.
Bet atsakymas taip pat yra iš tikrųjų tiek akivaizdus.
>> Taigi tegul dabar pristatyti kai kurie kiti programavimo konstruktai
kad matėte nulio.
Jūs tikriausiai savaime suprantama jau jei jau nėrė į
problema nustatote 0.
Bet tegul dabar pristatyti į C sintaksę už tai kitaip gana intuityvus
idėjos, bent keletas iš jų.
>> Taigi ši sąlyga sąvoka arba filialas, o anksčiau mes
atstovaujama jį kodu, kuris atrodė kaip tai ant nulio kairėje -
jei x yra mažesnis nei y, tada pasakyti -
o dabar C - leiskite man patobulinti on Paprasčiausiu atveju -
mes tiesiog ketinate pasakyti, jei atidaryti skliaustelis, kad kažkas yra tiesa -
Būlio išraiška ketina eiti kur sakiau sąlygą -
Uždaryti skliaustelis, tada nereikia kas viduje tuos garbanotieji petnešų.
>> Taigi čia taip pat garbanotas petnešos yra lyg subraižyti ųjų
U-formos įspūdį.
Ar kas viduje šių garbanotieji petnešų.
Šiuo atveju velniop velniop.
Ir pastebėti tai pirmyn velniop, o ne Atgal nerijos velniop.
Persiųsti velniop, nerija, tiems, kurie jau užprogramuotas
anksčiau, tiesiog reiškia -
tai tik komentaras.
Komentaras nėra linija kodo per se.
Tai anglų linija, kad jūs, žmogaus, parašiau sau
galbūt jums priminti, ką nors padaryti, kad paaiškinti sau, paaiškinti
kažkas, ką jūsų kodas daro.
Tai tik aprašomasis komentaras.
>> Dabar, žinoma, mes galime turėti dviejų krypčių šakutės ant kelio tiesiog daro tai,
trijų pakopų šakutės kelyje daro tai, ir jei ir toliau tai
modelis, jūs galite turėti keturių kelią, Penkių krypčių, šešių būdas šakutės kelių, jei
jums reikia valdyti, tiesą sakant, kad daug sąlygų.
Ir tada pastebėsite lygiagretumo čia -
if (sąlyga), else if (sąlyga), ir tik vienas, kad mažai
keista yra paskutinis, kuris tik, kad kitur.
Bet vėl, tai yra tapatūs, konceptualiai, ką mes padarėme
jau, nors sintaksė užtrukti šiek tiek priprasti.
>> Dabar, šiame pavyzdyje yra kai kurie kiti keista sintaksė.
Mes matome printf vėl atidaryti skliaustų, ir arti skliaustelis.
Ir viduje yra citavo eilutė.
Skliausteliuose, tame kontekste printf, eikite į kairę
ir teisė į tai, ką?
Ką mes aprašome, kad kotiruojamos eilutę kaip apskritai?
>> Taigi tai argumentas.
Bet kuriuo metu jūs turite funkcija, pavyzdžiui, printf, ir tada atidaryti skliaustas ir
Uždaryti skliaustas ir kažkas viduje tai, ar tai eilutė, arba
sveikasis skaičius, ar kas nors kitas, dalykas tarp šių skliausteliuose vadinamas
argumentas.
>> Ir argumentas tiesiog veikia Ši funkcija elgesys.
Šiuo atveju, tai gana aišku, kaip tai padaryti.
x <y, kas buvo priimtas, taip sakant, kaip argumentas.
Ir printf ketina spausdinti būtent tai.
Nes tikrai, žmogus metų kuris įgyvendinamas printf turėjau ne idėja
ką žmogaus teisių perėmėjai buvo ketinate naudoti printf už.
Štai kodėl argumentai egzistuoja, elgseną po funkcijos
buvo parašyta.
>> Dabar Būlio išraiška.
Mes matėme tai anksčiau nulio.
Pasirodo, į C taip pat galite "arba" juos kartu, taip sakant.
Du vertikalūs stulpeliai reiškia, kad šis blokas kodo, tai padaryti, bus
vykdyti, jei pirmoji sąlyga yra teisinga ar antroji sąlyga yra teisinga.
Ir nors galbūt nepadarė tai nulio, jūs iš tiesų galėtų
tai padaryti nulio, ir jūs galite taip pat išreikšti save kitaip -
jei pirmoji sąlyga ir antra sąlyga yra teisinga, tada nereikia kas
viduje garbanotieji petnešų.
>> Ir kaip žemę, todėl tai dvigubai ampersendas ir dvigubai
vertikali juosta, matysime vėliau kad viena vertikali juosta ir
vieno ampersendas iš tikrųjų turi skirtingas prasmę C. Taigi dabar,
kad simbolių dubliavimo yra tyčinis.
>> Taigi galime pristatyti trumpai, tai kita tiek sintaksė.
Tai ne visai perkelti į Įbrėžimams, bet galiu reikalauti, kad galiu
įgyvendinti, jei kita sąvoka, jei kitur, jei kitur, jei else naudojant
vadinamąjį switch pareiškimą.
Ir vienintelė priežastis, tai tikrai egzistuoja yra tiesiog suteikti jums, programuotojas,
šiek tiek kitoks būdas išspręsti kai problema, nors logiškai tai
nesuteikia Jums jokių naujų galimybių.
>> Iki, kad aš turiu galvoje tai.
Kai sakote jungikliu ir erdvę, ir tada skliaustų poros viduje
kurios eina išraiška -
ir tai gali būti šiek tiek ne akivaizdus per pirmąjį, tačiau tai nėra argumentas,
techniškai, nes jungiklis nėra funkcija.
Taigi dabar, tiesiog manyti, kad mes naudojame skliausteliuose skirtingose ​​vietose
dėl įvairių priežasčių.
>> Taigi įjunkite išraiška reiškia, kad galiu įdėti kintamąjį rinkmenoje tų
skliaustelius, kur ji sako, išraiška.
Ir tada jei kintamasis -
tarkime, ji vadinama x, ir tai tik sveikasis skaičius -
Galiu tada išvardyti mano skaidrės čia kažkas panašaus į tai.
Jei x yra mano kintamasis, ir aš norite padaryti kažką jei x
lygus 1, galiu tai padaryti.
>> Jei aš, o nori padaryti kažką jei x yra 2, aš galiu tai padaryti.
Kita, jei noriu daryti ką nors kita visiškai, aš gali turėti numatytąjį atvejį
tokiu atveju aš tai padaryti kitas dalykas.
Taigi šia prasme, tai atitinka jei x lygus lygus 1, jei dar kitur,
bet aš sakiau, tai dabar tik todėl, kad mes pamatyti jį dar kartą.
Bet dabar, tiesiog žinau, kad jis egzistuoja.
>> Gerai.
Taigi tai paskutinis pora yra šiek tiek daugiau sudėtinga iš pirmo žvilgsnio, tačiau jie
kažkas gana paprasta.
Už linijos į C yra kodas riekė, kad tiesiog daro kažką naujo ir
vėl ir vėl.
Ir tik erzina dalykas, apie tai tai, kad ji yra šiek tiek paslaptingas
išreikšti save toks cikliškas modelis, tačiau pasaulis standartizuoti
taip taip.
>> Jei naudojate už linijos, jūs turite skliaustų poros dar kartą.
Ir pastebėti du kabliataškiais ten.
Šios dvi kabliataškiais atskiri trys įvairios išraiškos viduje
skliaustelius.
Vienas iš jų yra vadinamieji initializations.
Vienas iš jų yra vadinamasis sąlyga.
Ir vienas yra vadinamieji atnaujinimai.
>> Pažvelgė abstrakčiai, tai visiškai neakivaizdus, ​​todėl pažvelkime
ne konkretų pavyzdį.
Be nulio mes turėjome pakartoti bloką.
Ir tai blokas sakė pakartoti 10 kartų, tarkim "Sveikas, pasauli". Leiskite man reikalauti
dabar, ir mes grįžti į tai, ir tai taip pat bus labiau susipažinę su
jūs netrukus, lygiavertė C kodas gali būti laikomas tai -
už pareiškimą ir erdvės, pora skliausteliuose, pastebėti kabliataškiais į
ten, kuri atskiria tris skirtingas dalykų, iniciacijos, kad
būklė ir atnaujinimas.
>> Ir spėti kas Pirmasis daro.
Int i = 0.
Neapdorotais profanas sąlygomis, kas yra kad tai mums, tikriausiai?
Taigi, taip.
Tai deklaruojant kintamąjį vadinamą i ir tai suteikiant jai kas vertė?
0.
Taigi tai sukurti kintamąjį pavadinimu i saugoti reikšmė 0 joje.
Tai vadinamasis iniciacijos.
>> Gerai, dabar aš teigė prieš kad viduryje dalykas, aš
<10, yra sąlyga.
Taigi, ką daro?
Na, ką už kilpa daro kai programa su for ciklas paleisti, yra
kiekvieną kartą, kai kompiuteris veikia per šis ciklas, iš viršaus į apačią, iš viršaus į
apačioje, kaip jūs vaikinai padarė, kai skaičiuojant save ir sėdi,
vėl ir vėl ir vėl, kompiuteris vyksta
siekiant patikrinti, ar būklę.
Ir jei aš yra mažesnis nei 10, jis bus padaryti jį dar kartą.
Jei aš yra mažesnis nei 10, jis bus padaryti jį dar kartą.
Jei aš yra mažiau nei dešimt, jis bus padaryti jį dar kartą.
Taigi, atrodo, rodo, kad tikiuosi keičiasi.
Priešingu atveju, mes norime turėti begalinį ciklą.
Ir iš tiesų, aš keičiasi, nes paskutinis dalykas, po kabliataškiu ten
yra šiek tiek paslaptingas sintaksė i + +.
Bet tiems iš jūsų, kurie jau tai padarė anksčiau, kad tiesiog reiškia,
paprasčiausiai ką?
>> Studentai: [Tarpines BALSAS].
>> Davidas Malan: į I 1 Pridėti.
Prieaugio i.
Taigi mes matėme Scratch galvosūkį gabalas, kad, iš tikrųjų.
Ji neatrodė, kaip i + +, bet kad tik priemonė, paprasčiausiai, prieaugio
I vertę 1 kiekvieną kartą jums tai padaryti.
Taigi, pažodžiui, reikia pradėti Inicijuojama i 0.
Tada patikrinkite savo būklę.
Yra 0 mažesnis nei 10?
Taip.
Mes einame per kilpą.
>> Kitas dalykas, aš reikalauti kompiuterinis ketinate daryti tai, kas vyksta
prieaugio i.
Taigi aš dabar 1.
Ji tikrina būklę.
Ar mažiau nei 1 iš 10?
Žinoma.
Taigi tai daro vėl.
Tada jis žingsniu i + + iki 2.
Ar 2 mažiau nei 10?
Taip.
Ir vėl ir vėl ir vėl.
Ir, galų gale, nes plius plussing, mes turime I lygus 10.
Ar mažiau nei 10 10?
Na, žinoma, nėra.
Ir tai vieta, kurioje už linijos tiesiog sustos.
O jei turite daugiau kodą ekrano apačioje, kompiuteris
pajamos paleisti tą kodą vietoj.
>> Taigi dar kartą, net jei tai vyksta atrodyti ir jaustis šiek tiek keista
pirma, žinoma, tiems iš jūsų, kurie niekada užprogramuotas anksčiau,
tiesiog sumažina konceptualiai į tai, kas kitaip labai
paprasta dėlionė gabalas nulio.
>> Gerai, aš pažadėjo, kad ten reikia būti ir kitų analogais nulio.
Yra tai irgi.
Ir mes matėte tai trumpai paskutinį kartą.
Bet atsiminkite, kad amžinai blokuoti nulio?
Jis tiesiog daro kažką amžinai?
Aš teigė, kad galėtumėte įgyvendinti tai šiuo būdu.
Ir jūs galite iš tikrųjų įgyvendinti šią įvairiais būdais krūva.
>> Bet while cikle yra tiesiog kitoks būdas C išreikšti save.
Tuo dienos pabaigos, jūs negalite padaryti nieko su while cikle, kad jūs
negali su už linijos.
Taigi jie prie pabaigos dieną funkciškai pats.
Tačiau jis leidžia jums išreikšti save šiek tiek skirtingai
taip taip.
>> Su while cikle, tai, kas yra skliaustai tai dar kartą patikrinama ir
vėl ir vėl.
Ir kuo greičiau, kad išraiška yra klaidinga, tada kilpa nustoja vykdyti,
ir kompiuteris pajamos paleisti kokia kita kodas, kurį
turėti savo failą.
>> Bet kas įdomu čia kad aš tiesiog atspausdinti tiesa.
Ir tiesa yra Būlio vertė tipas, true arba false reikšmė.
Taigi gali tiesa kada nors tapti false, jei aš tiesiog
sunkiai koduojami jį į savo programą?
Taigi ne.
Tai šiek tiek keista, kad aš padariau tai.
Bet tiesa yra tiesa.
Nėra plius plussing.
Nėra kintamųjų čia naudoti.
Taigi, nes aš sunkiai koduojami, o tiesa, tai kilpa visada bus įvertinti
vėl ir vėl ir vėl.
>> Taigi, kiek kartų yra hello world ketinate spausdinti ekrane?
Amžinai.
Begalinis skaičių kartų tol, kol baterija miršta ar kurios nors kitos išorinės
įvykis atsitinka.
Taigi, tai tikriausiai ne geriausia programa rašyti, nes jei vartotojas
niekada negali mesti savo programą, tai tikriausiai ne tai, ką norėjote.
>> Bet kartais, programose turėtų būti turi begalinį ciklą.
Pavyzdžiui, jei jūsų kompiuteris turi laikrodis ant jo, tai tikrai būtų
nice jei jūsų laikrodis jis nuolat atnaujinti pati amžinai, nors kartą
antras arba kartą minutę arba kažkas panašaus.
Taigi, net begalinis kilpos turiu savo vietą.
>> Gerai.
Galiausiai, tai viena.
Ir tai viena yra šiek tiek skiriasi funkciškai ir mes grįžti į
tai tikriausiai Pset 1.
Bet yra ir kitas kilpos tipas vadinamas daryti, o kilpą.
Ir Vienintelis skirtumas tarp do while cikle ir, tarkim, ciklas while,
yra tai, kad sąlyga, tikrinama ne prieš vykdyti kodą, bet po
jums vykdyti kodą.
Taigi ne už laiką viršuje kilpa, o tai, o
tikrina jį apačioje.
>> Ir tai tiesiog reiškia, kad while cikle paprastai vykdo daugiau kartų
arba mažiau kartų, nei per while cikle?
Potencialiai daugiau kartų, nes tai while cikle aiškiai pasakyti, tai padaryti,
tik po kurio metu jūs patikrinti jei sąlyga viduje
skliausteliuose yra tiesa.
>> Taigi, mes pamatysime dar kartą tikriausiai Pset 1.
Jei kada nors norėsite daryti kažką bent vieną kartą ir tada gal šiek tiek daugiau
kartų, tai geras statyti naudoti.
Bet while cikle, priešingai, bus patikrinti jo būklę pirmiausia.
Štai ir viskas už kilpos C, nereikia o, o, o kilpas.
Ir vėl, jie map gana gražiai atgal subraižyti, išskyrus tai vienas nėra
gana tą patį analog nulio.
>> Na, kaip apie dabar, kintamieji?
Taigi tai, kaip aš paskelbė kintamąjį sintaksiškai antrą dieną.
Turėjau int, kurį aš teigė, yra sveikasis skaičius.
Tada aš turėjo kintamąjį vadinamą skaitiklis, ir tada kabliataškis.
Taigi, kas yra šis kodas daro linija?
Tai, paprasčiausiai, skelbiantis kintamasis -
tai yra, klausia kompiuterį, duok man kai atmintis, duok man keletą bitai - į
kurį galiu laikyti ką?
Int.
Ir kabliataškis tiesiog reiškia, pabaigoje eilutę kodo.
>> Dabar, antroje eilutėje yra tikriausiai gana atspėjamos bendros.
Kas yra skaitiklis = 0; darai?
Tai priskiriant 0 kovoti.
Ir todėl tai yra kitas dalykas, tai šiek tiek erzina
palyginti su, tarkim, algebra.
Kadangi, algebra, lygybės ženklas reiškia, lygu čia C, lygios
ženklas reiškia užduotį.
Taigi tai reiškia, įdėti, kas dešinėje į tai, kas kairėje.
Ir mes matome kitą simbolį, lygus lygu, kai norime iš tikrųjų išbandyti
kokybės, šiek tiek įkyriai.
>> Bet tai mažai neefektyvus.
Tai tipo erzina, kad turiu paskelbti kintamąjį ir
tada suteikti jai vertę.
Taigi C tikrųjų leidžia mums supaprastinti šį ir tiesiog daryti viską vienu metu.
Galite paskelbti kintamasis kairėje.
Jūs vis dar galite padaryti pavedimą į teisę išleisti, kad vienodas Prisijungti
viduryje.
Tad dienos pabaigoje, šie du dalykai yra lygiavertis, tačiau tai, tiesą sakant,
tikriausiai geriau įprotis patekti į tik todėl, kad šiek tiek mažiau
kodas, tai šiek tiek lengviau skaityti, ir tai tik sugriežtina
jūsų kodas, taip sakant.
>> Bet iki šiol dėl kilpos klausimų, apie kintamuosius, apie sąlygų, nuo
Loginę, arba techniškai arba konceptualiai?
Gerai.
Taigi dabar tai kitą vienas gauna šiek tiek įdomesnis.
Ir tai yra pavyzdys aš supakuoti paskutinis laikas, kad tik žemėlapiai nulio pavyzdį
perkelti į C.
>> Taigi funkcija.
Į profanas sąlygomis, kas yra funkcija?
Turite būti drąsesni su savo atsakymą.
Kas yra funkcija?
>> STUDENTŲ: Ar kažką.
>> Davidas Malan: Kas tai?
>> STUDENTŲ: Ar kažką.
>> Davidas Malan: Ar kažką.
Gerai.
Pradėsime ten.
Taigi funkcija daro kažką.
Taigi tai yra kodo dalis, kuri yra iš esmės įgyvendintos kitur, kad
iš tikrųjų daro kažką.
Dabar, kas įdomu apie funkciją yra tai, kad tai gali užtrukti įvestį,
ir ji gali gaminti produkcija.
Ir tegul iš tikrųjų imtis į tai pažvelgti.
>> Taigi, už užuolaidų vyras buvo tyčinis prieš akimirką.
Čia mes turime lentelę.
Bet manyti, kad tai iš tikrųjų yra didelis langas.
Taigi tai yra vadinamoji juodoji dėžė.
Ir apskritai, dizainas, kompiuteriu mokslas, juodosios dėžės tik nuoroda į
vienetų funkcionalumą, kad kažkas įgyvendino, ir jums nereikia
būtinai žinoti, ar rūpintis, kaip tai įgyvendinama po gaubtu.
Jūs tiesiog rūpi, kad ši juoda dėžutė, kuri mes dabar pradėkite skambinti
funkcija, daro kažką.
>> Taigi, pavyzdžiui, jei tai juodas langelis etapas čia atstovauja printf,
funkcija, aš žinau iš ankstesnių pavyzdžių kad printf užima vieną ar daugiau
argumentai ir tie pirmieji argumentai turėtų būti eilutė, kaip
"Sveikas, pasauli". Na, jei aš esu žmogus rašyti programą, ir aš noriu
naudoti printf, aš, pavyzdžiui, gali imtis tuščią popieriaus lapą, čia ir
juodas žymeklis ir rašyti apie tai -
Aš klaidomis "pasaulį", -
H-El-L-L-O.
>> Taigi, aš paimsiu mano juodas žymeklis ir aš rašyti, kaip didelis ir įskaitomas kaip aš galiu apie
šis popierėlis, "Sveikas, pasauli" Ir dabar galiu reikalauti tai mano argumentas.
Tai eilutė atstovaujama su balto popieriaus gabalas.
Ir mano indėlis dabar funkcijos printf bus tai.
Taigi Raginu printf, einančios kad įėjimo į jį argumentas.
>> Ir dabar, aš nežinau, kaip asmuo, kuris rašė printf tai padarė metų, tačiau
Žinau iš savo dokumentaciją, jo gyvenimo tikslas yra spausdinti, ką aš
pateikti jį kaip pirkimo.
Ir taip, nors tai ir įgyvendinimas yra nežinant mane
po gaubtu, dabar Matau, oi, tai daroma.
Jis spausdinamas kažką ekrane.
Ir dabar valdo programos, jei yra buvo daugiau eilučių kodo, būtų
jau grįžo į mane.
Ir todėl, kad Colton -
palaiminti savo širdį, slepiasi čia pagal priešais jus visus lentelė -
yra sąmoningo, kad aš nežinau, ir man nerūpi, kaip printf yra
įgyvendintos.
Aš tiesiog žinau, vėlgi, iš jos dokumentus, ką ji daro ir kaip aš
aš turėtų naudoti jį.
>> Dabar priminti, kad printf galėtų gauti šiek tiek daugiau sudėtinga.
Vėlgi, mes tik kalbame apie ekvivalentas nulio pasakyti bloką.
Bet aš taip pat tai padarė paskutinį kartą.
Aš norėjau, kad mano Apie programą tiek labiau dinamiškas, o ne tiesiog sunku
kodas kažkas panašaus į "pasaulio", ir tikrai nėra sunku kodas kažkas
savavališkai, pavyzdžiui, D-A-V-I-D į programą.
Norėjau paklausti jo ar jos vartotojui pavadinimas, o tada kažką daryti su
kad seka, kad jie teikia.
>> Taigi, kažkas šiek tiek skiriasi čia. printf, metu senumo,
buvo, tiesą sakant, ką nors padaryti, tačiau ji negrįžo nieko man.
Teisė?
Colton nebuvo perduoti man nieko atgal, ne popieriaus lapas.
Čia buvo tik šalutinis poveikis.
Mano teikiant "labas, pasauli", kaip argumentas Colton lėmė
šalutinis poveikis Žodžiu, kai kurie žodžiai, pasirodo ekrane.
>> getstring, nors, yra mažai skirtingi. getstring taip pat
veikti, tačiau ji grąžina tam tikrą vertę.
Ji ne tik turi estetinis šalutinis poveikis.
Jis tikrai duoda man, asmuo skambinti arba naudojant funkciją,
kažkas atgal.
Taigi šiuo atveju, getstring yra vadinamas su getstring atidaryti
skliaustas, netoli skliaustas.
Ar getstring, todėl imtis jokių argumentų ar pirkimo?
Ne, atrodo, ne.
Jo gyvenimo tikslas yra tik gauti eilutę.
Jis turi ne daugiau informacijos, nei nurodyta.
Taigi leiskite man eiti į priekį ir apsimesti, kad, Vėlgi, tai black box "nėra printf,
bet getstring, ir leiskite man, asmuo, Rengiant šią programą, skambinkite arba naudoti
getstring tiesiog raštu G-E-T S T A I N-G atviras skliaustas, netoli
skliaustas, getstring.
>> Dabar, aš neįsivaizduoju, kaip CS50 darbuotojai įgyvendinti getstring, bet aš žinau, kad
jei aš laukti pakankamai ilgai, jis darys dalykas po kapotu, gal naudojant
kai kurie kintamieji, galbūt naudojant kai sąlygos, gal naudojant keletą kilpos,
gal naudojant tam tikras funkcijas, gal naudojant -
tiesiog bando vilkinti - gal naudojant kai kurios kitos programavimo funkcijos.
Bet jei aš laukti pakankamai ilgai - iš tikrųjų, į kompiuterį, taip atsitinka
super greitai -
jei aš laukti pakankamai ilgai, ši funkcija getstring ketina gauti eilutę
iš vartotojo, kuris yra turbūt renkate tai ant savo klaviatūroje ir
tada, kai jūs getstring daroma gauti tie iš vartotojo ženklai
ir saugoti juos į eilutę, kad funkcija, getstring, teks
pasirengęs man kažkokią išvestį, kuri Aš esu ketina gauti taikant
priskyrimo operatorius.
>> O jei aš einu, tiesą sakant, į produkcijos čia Obosi turi dosniai
dalyvavo, nežinant, tai anksto, raštu savo vardą į tai
kintamasis, kuris atstovauja eilutę.
Dabar priskyrimo operatorius reiškia, net nors tai gali jaustis šiek tiek
nereikalingas, aš iš tikrųjų reikia padaryti savo kopiją apie tai.
Kadangi ant kairės rankos pusė - oi! -
pastebėsite, kad aš iš esmės turi eilutę pavadinimo kairėje pusėje.
Taigi, aš taip pat ketina padaryti mano kopija tai.
Ir tai yra iš balto melo tiek, nes matysime per savaitę ar dvi-aisiais
laiko, kad stygos ne iš tikrųjų tai, ką jie atrodo.
>> Bet dabar, čia yra gražinama reikšmė.
Čia yra mano paties kopija po naudojant priskyrimo operatorius.
Ir dabar, ką aš noriu daryti toliau?
Mes dabar turime antra dviejų eilučių kodo.
Taigi aš dabar norite skambinti printf.
Tarkime dabar, kad juoda langelis atgal į yra
printf o ne getstring.
>> Printf šiuo metu vyksta imtis kiek argumentus?
Taigi, atrodo, tai kaip dviejų.
Yra du kablelių ten, bet vienas iš tų kableliais, tai
viduje kabučių.
Taigi pirmasis argumentas yra tiesiog bus tai.
H-El-L-L-O kablelis, proc s Backslash-n.
Ir dabar aš teikiant ne vieną argumentą, bet du argumentai printf.
>> Ir kas manimi printf turėtų daryti su šie du įėjimai, kai aš juos perduoti
kaip argumentai?
Tai turėtų imtis sekundę jų, kurį aš vadinamas vardas, todėl
Antrasis kūrinys popieriaus rašiau iš prieš akimirką vadinamas pavadinimą.
Ji ketina kaištis vertės viduje tos į rezervuotą vietą kintamąjį,
% S, kad, vėlgi, tiesiog akimirksniu laikas, matysime šalutinis poveikis
Pasišaukęs printf, kai dabar mes pamatyti ne "Labas, pasauli", bet "labas,
Obosi. "
>> Taigi didelis audringi plojimai abiem mūsų savanoriai, tik vienas iš jų žinojo,
tai būtų vyksta.
Gerai.
Taigi, galbūt, paprasta, kaip kad buvo žinoma, jei jau esate susipažinę
su tokiais, tikiuosi jums niekada pamiršti, kad ypač vizualinis, kaip
funkcijos veikia.
>> Taigi, čia yra daugiau nei tiesiog getstring.
Viduje CS50 biblioteką, ten visa krūva funkcijų, kurios visos
yra kapitalizuojamos tik aiškiai kad mes rašė šias funkcijas.
Paprastai, C, beveik kas antrą funkcija jums naudoti yra mažosios raidės.
Bet mes sąmoningai naudoti didžiąsias raides tiesiog įsitikinkite, aišku, kad tai
yra mokymo ratai rūšių, kad mes atsiųsime naudoti vos kelias savaites, kad
supaprastinti gauti procesą įvestis iš vartotojo.
>> CS50 biblioteka nedaro nieko kad jūs patys negalėjo padaryti pagal
tiesiog naudojant C kodą iš oldschool vadovėlis.
Bet vėl gi, mes juos naudoti kaip mokymo ratai rūšių tik už porą
savaites, kad mes galime atsikratyti sudėtingumą, kad jūs netrukus suprantame,
sau daro kažką taip gana paprasta, kaip gauti
įvestis iš vartotojo.
>> Taigi žinau, kad jūs turite prieigą į getchar, GetDouble -
dvigubai.
What's - ir tada GetFloat.
Kas plūdė?
Pradėkime ten.
>> STUDENTŲ: [nesigirdi].
>> Davidas Malan: Taip.
Tai su kablelio skaičius.
Todėl nors int yra sveikasis skaičius, kuris tik su 0 iki 9,
kai pakartojimų skaičius straipsnį, plūdė yra kažkas
su kablelio.
Ir dvigubai, tuo tarpu, taip pat skaičius su kablelio, bet daugiau
skaičių po kablelio taškas, potencialiai.
>> Taigi, mes grįžti į prieš tai ilgai.
Tačiau paprastai, kiekvienas iš šių tipų duomenys, kiekvienos iš šių kintamųjų tipų
kad kaip mūsų biblioteka gali grįžti į jūs, naudokite skirtingus numerius grąžtai
saugoti informaciją.
Paprastai char, kuris tiesiog reiškia, vieną simbolį naudoja 8 bitus.
Ir tai iš tikrųjų atitinka mūsų baitas savanorių praėjusią savaitę, kuris
atėjo ir atstovavo vieną ASCII simbolių vienu metu.
Taigi Char yra 8 bitai.
>> Plūdė būna, kad 32 bitų, paprastai.
Ir dvigubai, kaip galima spėti, yra iš tikrųjų 64 bitų, kas yra tik daugiau,
o tai reiškia, jūs galite turėti daugiau numeriai arba patikslinti.
Bet vėl, daugiau apie tai kitą kartą.
GetLongLong, tuo tarpu, nors kvailai pavadintas, yra tikrai tik
sveikasis skaičius, kad yra du kartus didesnis, dvigubai ilgas, potencialiai, nes reguliariai
sveikasis skaičius, 64 bitų, o ne 32.
Ir GetString mes jau naudojate.
>> Bet it turns out, į CS50 biblioteką, kuri yra įgyvendinta, kaip matysime, kad
iš dviejų failų forma, iš kurių vienas vadinamas cs50.h turi kiti du
duomenų tipai joje.
Loginę neegzistuoja C. Jūs galite imituoti juos tik naudojant 0s ir 1s
per jūsų programas.
Bet mes, CS50 biblioteką sukūrė simboliai "true" ir "false"
atstovauti 1 ir 0, taigi jums nereikės turi kietąjį kodas kažko
tiesiog kaip 1 ir 0.
Bet mes pamatyti tuos dar kartą.
>> Styginių taip pat neegzistuoja.
Ir štai kodėl minėjau tai iš balto melo dabar truputį.
Bet mes žievelės atgal, kad sluoksnis prieš ilgas.
Bet dabar, eilutė simbolių seka.
>> Tuo tarpu, C, jūs iš tikrųjų turi skirtingus duomenų tipus.
Pranešimas tai yra mažosios.
Taigi funkcijos matėte prieš akimirką yra funkcijos parašė CS50, kad
sugrįš jums vertę, kuri priklauso į vieną iš šių kategorijų.
>> Pora Ruošinukai tik augalų sėklos čia. printf ne tik
imtis% s kaip vietos rezervavimo ženklai.
Tai užtrunka% D dešimtainiai sveikieji skaičiai, arba% aš norėčiau dirbti taip pat.
% F slankiojo kablelio vertybes. % C yra char, jei norite tiesiog prijunkite vieną
simbolį į eilutę Preformatuotas kaip mes jau darome, galite naudoti% C.
>> Ir tada, šiek tiek įkyriai,% LLD yra ilgą, ilgą dešimtosios sveikojo skaičiaus,
kuris tiesiog reiškia, jei jums reikia tikrai didelis skaičius ir jūs naudojate kažką
vadinamas ilgas ilgas, kurį mes ateis atgal į į pset, galite naudoti% LLD į
pasakyti printf, įjunkite tikrai didelis sveikasis skaičius čia per antrąjį arba
kai kurių kitų argumentas.
>> Ir galiausiai, aš pažadėjo, kad ten keletas kitų pabėgti
sekos, printf palaiko.
Mes matėme backslash-n.
Ukośnikiem-R galima pamatyti.
Tai tarsi senosios mokyklos dalykas.
Jei kada nors naudojamas nekilnojamojo rašomąją mašinėlę metų prieš ir jūs traukiamas rankena
kuris ne tik pasukti ratuką į perkelti seriją, ji taip pat persikėlė
Visa tai visą kelią atgal per kairėje, gerai, Backslash-R tik
iš esmės perkelia žymeklį atgal į eilutės pradžią
nejudinant žemyn.
Bet vėl, daugiau apie tai, galbūt, ateityje.
>> Ukośnikiem-citata, Backslash-dvigubos kabutės, Backslash-Backslash yra
sprendimas į maža maža mįslę Aš užsiminiau anksčiau.
Ir Backslash-0 yra iš tikrųjų gana įdomi.
Bet mes grįžti į kad prieš ilgas.
>> Taigi leiskite man eiti į dabar, CS50 prietaisų, ir tegul iš tikrųjų
greitai sušilti su vienu iš pavyzdžių mes jau ir tada pereiti prie
kažkas šiek tiek sudėtingesnis.
Taigi, jei aš atverti savo programą vadinamas gedit -
tai yra mano grafinis redaktorius.
Ir aš galiu tai padaryti -
leiskite man uždaryti šį langą ten -
būdu šią piktogramą žemyn čia, gedit, iš apačios į kairę
kampas šalia meniu.
>> Aš ruošiuosi eiti į priekį ir iš anksto, ir išsaugoti šį pavyzdį į, tarkim, Jonas
Harvardo aplankas.
John Harvardo aplankas yra tiesiog savo namuose katalogą, kur visus savo failus gyventi
pagal nutylėjimą.
Ir aš ruošiuosi išsaugoti tai, kaip failą pavadinimu hello-0.c.
Ir aš pasirinko šį vardą tik todėl linijos su mėginio kodo
Žinoma tinklapyje ir "YouTube" vaizdo įrašus internete.
>> Taigi, dabar aš ruošiuosi pradėti rašyti savo pirmąją programą.
Leiskite man padidinti įskaitomas.
Ir aš ruošiuosi eiti į priekį ir pasakyti int Pagrindinis negaliojančiu, kuris yra kaip, kad
geltona dėlionės gabalas, kad pradeda programą.
Aš Dotarłeś į šio žalingo įpročio per metų atverti savo garbanotais petnešomis, tada
Taip pat uždarant jį ir grįžta į kur aš noriu įdėti savo kodą, tiesiog
nes jis padeda man išlaikyti viską subalansuotas, ypač my
programa gauna ilgai.
>> Ir dabar, čia, aš ruošiuosi eiti į priekį ir sako: printf, cituoti citatos,
hello world, Backslash-n, netoli citata, Uždaryti skliaustelis, kabliataškis.
Taigi, aš tiesiog kartoti viską mes vartojate savaime suprantamu dalyku iki šiol.
Dabar aš ruošiuosi nutolinti.
>> Ir tai terminalo langą žemyn čia, ką aš leidžiama daryti tai juoda
ir baltas langas?
Ką aš galiu ją naudoti?
Taigi, tai yra, kai aš paleisti komandas ir kur galiu sudaryti dalykų.
Ir aš ruošiuosi laikyti jį paprasta.
Aš ruošiuosi naudoti programą vadinamas Markė, kuri nėra
techniškai sudarytojas.
Sudarytojas vadinama Zaszczękać, bet mes grįžti į tą,
savaitę ar dvi laiko.
>> Nes dabar, aš tik ketina įvesti padaryti Apie-0, Bet tiems iš jūsų, kurie buvo
lyginant savo protus ką aš ką tik atspausdinti, ką turėčiau įvedėte gali
jau žinau, kad aš kažkas negerai čia.
Dabar ten aiškiai keletas klaidų.
Prieš aš net pažvelgti, ką jie, bet mintys apie tai, ką aš padariau blogo?
>> Studentai: [Tarpines BALSAS].
>> Davidas Malan: Taip.
Aš trūksta bibliotekos antraštės failą.
Bet kuris iš šių. H failų vadinamas antraštė failus, ir jie kartu
priklauso dalykų, vadinamų bibliotekos.
Bibliotekos yra tik gabaliukus kodas kad kiti žmonės parašė.
Taigi standartas [? i?] biblioteka kolekcija su bylomis, kuriose kodą
kad kiti žmonės parašė.
>> Taigi, aš trūksta, kad.
Tad kodėl gaunu klaidą?
Na, leiskite man slinkti atgal iki mano terminalo langą čia.
Ir, deja, C, kaip ir daug programavimo kalbas, ypač
jei visa tai nauja jums, klaida pranešimai yra tikslūs, tačiau jie taip pat
gana paslaptingas.
Ir klaida čia raudonai, yra "Netiesiogiai skelbiantis bibliotekos funkcija
printf su tipo "ir tada jis slenka į kitą eilutę ", int const char *
... "Jis tiesiog bus tikrai didele greitai.
>> Bet ką jūs turėtumėte pradėti daryti, jei, vėl nauja visa tai yra tik
pradėti ieškoti raktažodžių.
Aišku, aš gali nesuprasti pusė iš žodžių Matau tik dar.
Jūs, nors, po savaitės laiko.
Bet matau printf.
Ir tai turėtų prasidėti prieš ilgas, kad stumtelėti savo atminties, viskas gerai, printf.
Kažkas negerai su printf.
Ar aš aiškiai tai negerai?
Ne, ji nėra atrodyti - Oh.
Aš negaliu naudoti, nebent mokau kompiliatorius, kad jis egzistuoja.
Ir taip vėl eiti su savo instinktais, net jei jūs ne iš tikrųjų suprasti
faktinės klaidos pranešimai.
>> Ir iš tiesų, sprendimas čia yra tiesiog įtraukti jį prie failo viršuje
pavyzdžiui, kad resaving mano failą su Valdymo S arba meniu Failas.
Ir jei aš dabar eiti atgal čia Aš ruošiuosi ištrinkite.
Valdymo L yra tik gražus būdas išvalyti ekraną.
Ir tada aš ruošiuosi įveskite "padaryti Apie 0 "Enter", ir dabar vis dar matau
paslaptingas simbolių seka, bet mes grįžti prie to.
Štai ką Padaryti daro už jus.
Tai automatizuoti atsižvelgiant procesą gana erzina komanda dalyvauja
Zaszczękać, faktinis sudarytojas.
Bet faktas, kad aš jokių klaidų reiškia kad tai, ką turėtų veikti.
>> Taigi, aš dabar ketinate daryti - leiskite man padidinti dar kartą -
./hello-0 Įveskite, ir iš tiesų aš matau "Sveikas, pasauli". Taigi tegul dabar padidinti
tai vis tiek šiek tiek tiesiog atkartoti veiksmus mes skirti.
Aš einu pervadinti tai su Įrašyti kaip hello1.c.
Ir dabar aš ruošiuosi paskelbti kintamąjį vadinamas vardas, todėl Styginių pavadinimas,
ir aš ruošiuosi įdėti į jį vertė citata-citatos
D-V-aš-D arti citata kabliataškis.
Ir dabar aš ruošiuosi pakeisti "pasaulis" su tuo, ką vietos rezervavimo eilutę?
% S.
>> Ir dabar, kiek argumentai turėtų printf imtis šį kartą?
Taigi du.
Taigi aš einu už kabučių.
Aš tipo "Pavadinimas" po kableliu.
Bet aš padariau kažką nors negerai šį kartą.
Bet tarkime, kad aš ne suprasti, kad dar.
Leiskite man eiti čia.
>> Ir pastebėkite, taip pat gaunu mažai nuobodu rašyti "padaryti Hello 0" visi
laikas, "padaryti" ir visa tai.
Taigi, it turns out, ir Linus galite dažnai paspauskite rodyklę aukštyn
klaviatūra, ir jūs iš tikrųjų galite slinkti per visas komandas, kad aš
įvykdytas praėjusią tiesiog dabar.
Taigi, jei aš galiu tai padaryti, aukštyn, aukštyn, ten padaryti Hello 0.
Aš nenoriu, kad.
Aš tik noriu pakeisti, kad būtų Apie 1 šįkart Enter.
Galų gale, kad bus sutaupyti šiek tiek laiko.
>> Gerai.
Deja, ten yra klaida.
Taigi leiskite man slinkite aukštyn.
Tai atrodo, kad aš tikrai prasiskynė šią programą.
Aš turiu galvoje, mano Dievas, tai dviejų eilučių kodo, ir jos 10 eilučių klaidų.
Bet pažiūrėkite viršuje iš pradžių.
Naudokite nedeklaruoto identifikatorius eilutę.
Ar aš tai standartinė i n?
Ne, aš ne.
Aš norėjau eilutę.
>> Bet kur yra eilutė kintamasis tipas paskelbė, dd gi sakysime?
Taigi tai į CS50 bibliotekos.
Taigi nepakanka, kad jie pirmą kartą porą savaičių, tik naudoti
kas C suteikia mums.
Aš taip pat ketina eiti čia, ir aš galėtų jį aukščiau ar žemiau, bet aš
tiesiog laikyti jį abėcėlės tvarka kad viskas būtų tvarkingai.
Aš ruošiuosi būti cs50.h, kuris yra iš anksto įdiegta
Ar dėl CS50 prietaisu.
Ir tai atviro kodo, todėl net ir žmonės internete galite jį naudoti jų
savo kompiuteriai.
Bet tai ateina su CS50 prietaisu.
>> Taigi dabar leiskite man grįžti ir perkompiliuoti tai su make Apie 1.
Damn it.
Dar vienas klaida.
Leiskite man pereiti iki pirma, nors.
Tai vienas šiek tiek sudėtinga.
Kelių simbolis simbolis pastovus.
Tai nereiškia, kad padedate man.
Tačiau pastebėkite, Zaszczękać yra bent šiek tiek tiek padorus, kai su mažai
žalia Žymeklis simbolis, tai suprantama, čia yra, kur aš įsukus.
Kodėl ji nukreipta, o kad mažai žalia rodyklė į bendrosios citata kitą
mano vardu?
>> Taigi tai yra vienas iš dalykų, kuriuos tik priprasti, ypač jei jūs buvote
programavimo Python, arba JavaScript, ar kitos kalbos, jei tai išsamiai
nesvarbu.
C, tai tikrai svarbu.
Jei skelbiantis eilutę, kuri yra 0 arba daugiau simbolių seka,
jūs iš tikrųjų reikia naudoti kabutes.
Taigi aš iš tikrųjų reikia pakeisti šią atgal atidaryti pasiūlymą, uždaryti pasiūlymą, su
kabutes.
Viengubomis kabutėmis daryti turi savo vietą, bet tik tada, kai jūs naudojate asmens
simbolių, bet daugiau apie tai kitą kartą.
Nes dabar, kabutes yra būtinos.
>> Taigi dabar leiskite man grįžti į savo terminalą langų, įsitikinkite Apie 1.
Ir kas yra tikri?
Ar ši programa dabar vyksta sudaryti teisingai?
Gerai.
Taigi trys iš mūsų galvoja tai.
Gerai.
Įveskite.
Ir tai iš tikrųjų.
Taigi nėra jokių klaidų šį kartą, net nors ši programa Dotarłeś šiek tiek
sudėtingesnis.
Jei aš dabar daryti dot velniop hEllo 1, Enter jis ketina pasakyti "Labas, David".
>> Bet darykime trečią iteracijos tai, kur
Programa yra tikrai dinamiškas.
Leiskite man eiti į priekį ir pakeisti failą vardas, tiesiog siekiant nuoseklumo su
failus jūs turite rasti jums po to internete.
Įveskite.
Ir dabar aš ruošiuosi eiti, o ne laikyti "Dovydą" sunkiai koduojami čia.
Ką galėčiau padaryti, kad labai paprastai tobulinti šią programą?
>> Galėčiau skambinti getstring.
Tai gali būti šiek tiek ne akivaizdus kas bręsti, todėl aš ruošiuosi
faktiškai pridėti dar vieną liniją, printf, ir sako pavadinimas, dvitaškis, glaudžiai citata, tiesiog
suteikti vartotojui greitai ekrane.
Ir dabar aš ruošiuosi eiti čia ir aš ketinate naudoti savo klaviatūros klavišus.
Aš ruošiuosi eiti aukštyn, aukštyn, ir keisti Apie 1 Sveiki 2 Enter.
Ir, laimei, aš padaryti pažangą.
>> Ir dabar aš ruošiuosi eiti dot slash Sveiki
pakeisti, kad 2, Enter.
Ir dabar mano programa -
Aš priartinti - vis šiek tiek gražiau.
Vardas bus, tarkime, Rob Šį kartą "Enter", labas, Rob.
Mes galime tai padaryti dar kartą.
Vardas, Lauren Enter.
Vardas, Juozapas, Enter.
Vardas, pabandykime būti sunku, Enter.
Eh.
Tai tikrai ne klaida.
Taigi, tai tik šiek tiek negraži.
Taigi, galbūt mes galėtume išspręsti šią problemą ateityje, o ne dabar.
>> Bet kaip jūs instinktyviai eiti apie sprendžiant
kad ypatingas iššūkis?
Jis tiesiog atrodo kvaila.
Kaip išvengti dalykų ieško kvailas?
Taigi, mes galime padaryti, gerai, aš girdėjau porą dalykų, būklė ir kilpa.
Mes galime naudoti vieną, sąlygą, patikrinti kas yra eilutės ilgis
vartotojo mums davė?
Ir jei tai 0, tai tiesiog citata citatos, jie tiesiog paspausti Enter, tada
gal turėčiau klykauti į juos ir paskatinti juos vėl.
Bet kaip greitai juos vėl?
Na, aš taip pat girdėjau, kilpa, ir galėčiau padaryti, kad vėl ir vėl ir vėl
paskatino už tą patį vartotoją.
>> Na, galime padaryti vieną kitą pavyzdį naudojant skirtingas
funkcijos, CS50 bibliotekoje.
Leiskite man baigti šią bylą.
Leiskite sukurti naują.
Ir aš tai vadinu adder.c, tik todėl, tai lengva padaryti paprastą aritmetiką,
nors tai bus visiškai underwhelming su tuo, ką galite padaryti
su bet modernių kompiuterių.
>> Bet leiskite man eiti į priekį dabar ir -
Aš išmoko savo pamoką paskutinį kartą - taip pat cs50.h, apima stdio.h, int
Pagrindinis negaliojančiu, o, dabar, aš tiesiog imtis aklas tikėjimas, bet mes prisiimti
kad bus suprasti, kas tai reiškia, kad prieš ilgas.
Ir aš ruošiuosi ką nors pasakyti kaip "duok man int."
>> Ir dabar, kaip aš galiu gauti int?
Noriu galiausiai paskelbti kintamąjį vadinamas X tipo int ir
laikyti jį i ¹ vartotojo sveikasis skaičius.
Taigi, tai buvo pilna burna.
Bet jei kas nors nori pasiūlyti, kaip man deklaruoti integer vadinamas X?
Int x.
>> Taigi, tai tikrai yra taip paprasta.
Duok man int.
Pavadinkite tai x.
Dabar aš naudoju priskyrimo operatorius.
Ir kaip man saugoti nuo paliko vartotojo vertę?
Aš nenoriu skambinti getstring, akivaizdu, bet getint.
Visi argumentai?
Ne.
Taigi tai atviras skliaustas, netoli skliaustas iš karto, o tada
kabliataškis baigiasi liniją.
>> Dabar leiskite man tai padaryti dar kartą.
Duok man dar vieną int.
Šį kartą aš padarysiu int galime tai vadinu m, lygus getint.
O dabar leiskite man padaryti kažką super paprastą kaip kai matematikos.
Taigi printf, iš% d suma yra vietos rezervavimo int.
Ir% d, laikotarpis, Backslash-n.
>> Gerai.
Taigi, kad iš tikrųjų tai ne matematika.
Bet jei aš noriu pasakyti, kad ši suma vertė plius tai vertė lygi tai
kitokią vertę, kiek argumentų į Bendras turėčiau duoti printf,
galiausiai?
Taigi keturių, tiesa?
Ši eilutė ir tada trys vertybės.
Taigi x yra pirmiausia noriu būti prijungtas pirmos iki% d.
m bus toliau.
>> Ir dabar aš tipo nori pasakyti Z, bet Z neegzistuoja.
Bet tai ne big deal.
Nes tai, ką jūs darytumėte instinktyviai, ypač jei buvo
grafikų skaičiuotuvas, ką rašote?
Kaip apie x plius y?
Taigi tai nėra tikrasis kintamasis.
Tai tik iš dviejų sum kiti kintamieji.
Ir tai visiškai teisėta.
C tikrai supranta paprastas aritmetinis kaip šis.
>> Kabliataškiu, išsaugoti.
Dabar leiskite man eiti čia ir įveskite padaryti padidinimą, Enter.
Nėra klaidos, kad yra progresas taip pat.
Įveskite padidinimą.
Ir dar klaviatūrą, jei pradėsite nuobodu
su visomis komandomis -
jei jums pradėti rašyti komandą, kaip taškas velniop reklamą, ir tai, kur jūsų
nuobodulys juntamas, galite paprastai nukentėjo Tab turi kompiuteris baigti
Kitos frazė jums, jei tai nėra dviprasmiška, kas ateis po skelbimu.
>> Taigi leiskite man eiti į priekį dabar ir paspausite Enter.
Duok man int, 1, 2 ir laimei, tai 3.
Bet kaip visada, testavimo programos neturėtų sumažinti iki
tiesiog bando jį vieną kartą.
Leiskite man pabandyti kampe bylą, pavyzdžiui, neigiamas 1, duok 1, ir kad vienas
tikrina, kaip gerai.
Ir aš tikriausiai norite padaryti šiek tiek daugiau išsamius tyrimus, bet aš esu gana
patogu, jei tai ne.
>> Na, dabar pabandykime kitą programą kad šį kartą naudoja
tiek kitos sintaksė.
Leiskite sukurti naują failą.
Aš vadinu tai conditions0.c liniją su kai mėginio kodas internete.
Ir leiskite man eiti į priekį ir daryti įtraukti cs50.h, apima
stdio.h, pagrindiniame tuštumą -
Gerai.
Čia mes eiti.
Mes turime standartinę Šablonas.
>> Ir šį kartą aš ruošiuosi pasakyti printf, "Norėčiau int, prašome", tiesiog
padaryti greitai mažai patogesnė.
Ir dabar aš noriu gauti int nuo naudotojo.
Aš ruošiuosi jį vadiname n šį kartą, tiesiog nes n skamba skaičių.
getint, o dabar ką daryti Noriu daryti su juo?
Na, jei n yra - ir aš Padidinti -
jei n yra didesnis už 0, aš noriu daryti taip -
printf "Jūs pasirinko teigiamą skaičių." Kita, aš ruošiuosi rašyti printf "Jūs
Pasirinkote neigiamas
skaičius. "Gerai.
Taigi ši programa, nors aš jį greitai, atrodo teisinga sintaksiškai.
Leiskite man pabandyti tai.
Padaryti sąlygą 0.
Atrodo, kad paleisti.
Būklė 0, įvesti.
Leiskite duoti jai iš 50 int.
Paėmiau teigiamą skaičių.
Pabandykime dar kartą.
Būklė 0.
Neigiamas 50.
Paėmiau neigiamą skaičių.
>> Bet dabar, leiskite man pasirinkti, ką mes toliau skambina kampinio atveju, kuris yra daugiau
įdomus atvejis, kad jūs manote gali suteikti jums tam tikrų problemų, 0.
Dabar, aš esu gana įsitikinęs, tai yra vienas iš tie kampiniai atvejų, kai nulis
nei teigiamas, nei neigiamas, todėl mano programa, nors sintaksiškai
ištaisyti - ji sudaro, ji veikia - nėra logiškai teisinga.
Taigi, kas paprasta nustatyti čia, jei noriu aptikti, jei noriu dirbti n
lygu 0 atskirai?
>> Taigi, jei n lygu 0, tada aš noriu pasakyti kažkas panašaus printf "Jūs pakėlė 0."
Leiskite man pabandyti tai dabar.
Leiskite man grįžti čia, aišku, mano langas ir perkompiliuoti.
Hm.
Viena klaida generuoti.
Bet aš norite patikrinti jei n lygu 0.
>> Taigi dar kartą, dar vienas kvailas dalykas priprasti prie, lygybės ženklas yra
priskyrimo operatorius.
Taigi, iš tikrųjų tai yra klaida, kad techniškai, nors sudarytojas
apsaugojo mane nuo savęs, mes norime būti techniškai kopijuoti 0 į n, kuris
nėra tai, ką aš noriu.
Norėčiau išbandyti lygybės su lygus lygus.
Ir todėl, kad dabar gali būti mano geresnis sprendimas.
>> Leiskite man iš tikrųjų išsaugokite tai, kaip, tarkim, conditions1, turi būti naujas ir patobulintas.
Taigi dabar, jei aš perkompiliuoti tai, tai būtų sąlygos -
oi - padaryti conditions1 taškas velniop conditions1, "Enter", "Norėčiau int,
prašau. "Aš ruošiuosi eiti į priekį ir įveskite 50.
Jis vis dar gera.
Neigiamas 50, vis dar gera.
0, ir jis, tiesą sakant, aptikta kad aš įlaipinami 0.
>> Taigi, ką daugiau aš galiu dabar daryti su tuo?
Na, mes tikrai gali daryti vis sudėtingus dalykus.
Bet ką aš norėčiau pasiūlyti yra kad mes baigiasi šio pranešimo čia.
Jei mes atsigriebti tai, pamatysite, ko gero, mėgstamiausia animacinį tavo
iki šiandien galbūt niekada suprantama.
Ir tai apie juoko kokybės jums reikia gauti su CS anekdotai.
Štai apie teisę.
>> Bet dar įtikinamai, aš maniau aš duoti mums šiek tiek kibinimas už pirmadienį.
Taigi mes pradėjome naudoti sveikieji skaičiai.
Mes nurodytos plūdės.
Mes net vadinama dviviečiai, kuris, vėlgi, jums numerius
po kablelio.
>> Tačiau paaiškėja, kad plūdės ir dviviečiai, ir, tikrai, kompiuteriai,
iš esmės, negali išreikšti kai vertybės tiksliai.
Mes žinome iš matematikos klases, kad jūs galite jokių numerių skaičių po
kablelio.
Ir jūs netgi galite įdėti vertikalios juostos pasakyti tai amžinai.
>> Deja, jūs negalite iš tikrųjų padaryti, kad kompiuteryje.
Ir taip kampiniai atvejų pasitaiko.
Pavyzdžiui, tarkime, kad jūs kažką finansų.
Jūs darote matematiką su procentais, ir
su dolerių ir centų.
Ir tie centai ne nebūtinai sutaps.
Na, tai paaiškėja, kad frakcijas centus gali pradėti pridėti iki kada
modeliuojamos kompiuterių sistemos tokiu būdu, kad protingas
žmonės gali pasinaudoti.
>> Ir tie iš jūsų, kurie nematė, aš norėčiau duoti jums 30 sekundžių kibinimas iš
nuostabus filmas žinomas kaip Office Space, kuris piešia vaizdą
problema mes spręsti Pirmas dalykas, kurį pirmadienį.
Jei mes galime padidinti garsumą šiek tiek, aš tau 30
sekundžių biurų.
>> [VIDEO PLAYBACK]
>> -Aš turiu galvoje, tu, kurie nebuvo parodyti aukštyn ir jums išlaikyti savo darbą.
>> -Tiesą sakant, aš vis skatinamas.
>> -Galėčiau programuoti virusas, kuris nori rip, kad ne didelis laiko vyksta.
>> -Na, kaip jis veikia?
>> -Kiekvieną kartą, kai yra banko sandoris kai palūkanos skaičiuojamas, ir ten
Yra tūkstančiai dieną, kompiuteris baigiasi su šių cento frakcijas.
>> -Bet aš nesiruošia daryti nieko neteisėto.
>> -Neteisėtas?
Samir, tai Amerika.
>> -Mes turime Prisiekiu Dievu.
>> -Jei niekas nežino apie tai bet mums, gerai?
Nėra šeimos nariai, nėra merginos, niekas.
>> -Žinoma.
>> -Sutiko.
>> -Nesijaudink, vyras.
Aš niekam arba.
>> [PABAIGA VIDEO PLAYBACK]
>> Davidas Malan: Taigi tai, tada, yra CS50, tai buvo Office Space, ir tai bus viskas
prasmės pirmadienį.
Pasimatysim vėliau.
>> Narrator: Kitame CS50, Rob prisitaiko prie nebegavo
Harvardo miltai planas.