>> [MUSIC PLAYING]
>> DAVID MALAN: Rendben.
Isten hozott.
Ez CS50, és ez a Hét Egy, folytatás.
Tehát az egyik oka annak, hogy már halad körül technológiák, mint a
Google Glass, hogy jönnek a valami ismert API, a
Application Programming Interface.
És hogy ez mit jelent az, hogy a megfelelő fájlokat, és a megfelelő
dokumentáció, amit valójában írni szoftver még eszközök, mint ezek.
>> És akkor mi van szem előtt felé félév vége, ha a projekt
bevonásával, mondjuk, a Google Glass is fellebbezést, meglátjuk, mit tehetünk
tekintve összejönni fel néhány loaner hardver, valamint a
nyilvánosan hozzáférhető API, így valójában kezdeni szoftver
fut ugyanazon Google Glass.
>> Egy másik eszköz, hogy már játszott és a végén, hogy azt gondoltuk, talán
szórakozás félév vége ez a kis dolog itt.
Úgy hívják Leap Motion, és mit te arról, hogy technikailag egy
reklám az eszköz, de a nem beszél, hogy milyen az adott
készülék képes.
És ez is jön egy API segítségével amely írhat szoftver
irányítani a saját számítógépén olyan módon, nagyon tetszett ez az egy perces filmet itt.
>> [VIDEÓ LEJÁTSZÁS]
>> [END VIDEÓ LEJÁTSZÁS]
>> Tehát most, ez a készülék történik kell végrehajtani, mint egy kis USB
csatlakozó, hogy dugja be a számítógépet, de nem lennék meglepve,
ha nemsokára van ilyen jellegű technológiák a következő tétel a PC-k
és Mac, így valóban, vele kölcsönhatásba
módon, mint ezt.
Sőt, amit én gondoltam ezt is, ez Húztam egy kis bemutató
program, hogy jön ez a szoftver.
Szóval már fel a kis érzékelő előtt az én laptop.
>> És mint látható, már rájön hogy a kezem ott van
csökkentése érdekében.
És mindez az alkalmazás nem csalással kis dolgok, mint ez.
De látható, hogy valóban, Én öt ujj van.
Ha tudnánk, hogy ezt mind a 10, tudod képzelni, hogy egy csinos zongora
alkalmazás vagy hasonlók.
Tehát, ha azt szeretné, hogy jöjjön fel óra után ma, és játszani, hogy mivel
jól, akkor szívesen.
Így még az, hogy felé félév végén.
>> Így néhány adminisztratív bejelentések.
Egy, ezt a pontot a péntek délben cs60.net/section.
Az URL van a pálya honlapján is.
Addig is azonban, supersections fog debütálni a vasárnap.
Supersections egy egyszeri dolog, mert tart nekünk egy kis idő, hogy
ki, aki a honlap mely részében és hol.
>> Tehát a jövő vasárnap, hogy lesz-e egy részben a kevésbé kényelmes,
egy szakasz számára kényelmesebb.
És azok, valahol között várjuk, hogy menjen
az egyik, vagy mindkettő, vagy egyik sem.
Mindkét fogják filmre.
Ők lesznek egy nagyobb előadóterem, mint egy része rendszerint, hogy be
De a cél itt az, hogy felvértezzük Önt némi vigaszt a problémás az egyiket,
a C, a CS50 készüléket, ez a hétvégén, még mielőtt megtudja, a
formális rész feladat.
Tehát akkor felel meg a TF és a kisebb csoport sectionmates mintegy
egy hét múlva.
>> Fogadóóra, eközben már folyik.
Ne kihasználják őket ma este, vagy holnap este, ha szeretne.
Probléma szett 0 miatt pénteken.
Ez egy nappal később, mint a rendszeresen ütemezett csütörtök.
De probléma szett 1, látni fogod hogy tartalmaz néhány bemelegítő
gyakorlatokat, amellyel te magad bővítheti
Csütörtök határidő péntek.
Probléma Set 1, eközben fog debütálni A kurzus honlapján a jövő
Péntek, ha szeretné, hogy göndör fel , mint én egyszer régen késő
Péntek este a szobában.
>> Tehát cs50.net/appliance az a hely, ahol a lehet kapni a CS50 készülék
hogy elkezdtük használni hétfőn.
Fogjuk használni, hogy egy kicsit ma.
De biztos lehetsz benne, hogy a probléma meg 1 specifikáció végigvezetik
pontosan a lépéseket meg kell kap, hogy felállt és működik.
Szóval ne aggódj csinál, hogy mielőtt Pset 1 ha inkább nem.
>> Rendben van.
Így nézett hétfőn forráskód, de az összefüggésben egy új
programozási nyelv, azaz a C és C, ellentétben a Scratch, nem grafikus.
Ez nem puzzle darab.
Ez több, mint a szintaxis angol.
És van egy pár lépésből A valóban írásban és fut a
C-ben programozni, mert amellett forrás kód, mint ez, ha kell valami
úgynevezett fordító.
És a laikus szempontból, milyen nem a fordító tenni értünk?
Igen.
>> DIÁK: Ez átalakítja a kódot hogy írsz 0s és 1s.
>> DAVID MALAN: Jó.
Így alakítja át a kódot, hogy az írunk a 0s és 1s.
Ez átalakítja az úgynevezett forráskódját tárgykód, melyek közül az utóbbi úgy néz ki,
egy kis valamit, mint ez.
És ez a CPU, az agy belsejében a számítógép, hogy mivel a
emberek, akik megalkották a számítógépek, tudja, hogy mik azok sorozatok
A 0s és 1s jelent.
>> Talán ez azt jelenti, nyomtatás.
Talán ez azt jelenti mellett.
Talán ez azt jelenti, kivonás.
Talán ez azt jelenti, megjelenik egy grafikus.
Vannak előre definiált minták bit , hogy a világ úgy döntött, azt jelenti,
bizonyos dolgokat.
De a legtöbb esetben az a tanfolyam, fogunk dolgozni egy magasabb szinten, és
akkor magától értetődőnek, hogy létezik dolgok, mint a fordítók, ami
tegyük forráskód funkció , ahogy szeretnénk.
>> Így a program írtunk először a múlt héten majd elkezdte port, így a
beszél, a C az elmúlt Hétfő, volt ez.
Amikor a zöld zászló kattint, köszönni.
Ez volt, természetesen, írt Scratch.
És azt állította, hogy az azonos C-ben programozni nézett egy kicsit
valami ilyesmi.
>> Szóval, amit én gondoltam, hogy a az első, nézzük kötekedik kívül mit néz, először
pillantásra persze, mint a meglehetősen misztikus szintaxis, de akkor elkezd észre
minták elég gyorsan.
Amit mi is csinál ma nyújt Ön egy mentális modell egyes
kanonikus, néhány standard konstrukciók a programozás során.
És akkor mi lesz valójában a mi kezünkben van piszkos néhány példát is.
>> Tehát azoknak, kényelmesebb, észre, hogy ezen a héten, majd a következő
hét is nagyon jól lehet egy kicsit a felülvizsgálat.
De különösen akkor, ha a hacker kiadás A probléma meg 1 megy ki a
Természetesen honlapján pénteken, azt gondolom, rájössz, hogy még akkor is töltse ki
néhány üres, a jövő héten, vagy két, akkor kezdődik, hogy egyre több
kihívást és a találkozás új és újabb dolgokat.
>> Szóval ugratni a program mellett egy pár sort egy időben.
Legtetején, van mit technikailag úgynevezett
előfeldolgozó direktíva.
Ez csak egy sor kód, amely azt mondja: hogy tartalmazza a tartalmát egy fájlt,
a Standard I / N, szabványos bemenet - vagy, sajnálom, standard I / O, szabványos
bemenet / kimenet,. h, belül a saját programja.
>> Más szóval, ha én írtam ezt program egy egyszerű szövegszerkesztő, mint a
gedit, az egyszerűbb megfelelője valami, mint a Microsoft Word, hogy
oktatás, # include stdio.h, csak fogja mondani a fordító, fogd a
tartalmát, hogy a többi fájl, stdio.h, be őket itt.
>> Nos, miért érdekel?
Mit azt állítjuk, belül van a fájl stdio.h nevezett, amely a tárolt
valahol a merevlemezen, vagy ebben az esetben valahol a CS50 készülék?
Valaki más tette oda nekem.
De mi van benne?
>> Igen, ez egy nyilatkozat függvény nevű printf.
Tehát printf emlékeztet a funkció kijelzők szavak és karakterek és
számokat a képernyőn a licitálás.
De én nem írtam.
CS50 nem írt meg.
Valaki évvel ezelőtt megírta, és lényegében megadta a receptet is
nevű fájlt stdio.h.
Annak érdekében, hogy az első sorban csak ad nekem való a funkciókat, hogy valaki más
írta évvel ezelőtt, többek között amelyek printf.
>> Most, a következő sorban fogok hullám a kezét, legalábbis addig, amíg a jövő héten.
De most, tudom, hogy int main (void) a lényegében megegyezik az e
sárga puzzle darab, amikor zöld zászló kattintott.
A világ, évekkel ezelőtt úgy döntött, hogy ha a írsz egy programot a
nyelv a C, elkezd A program egy sor
úgy néz ki, mint ezt.
Alig egy hét múlva, akkor az, hogy értelme, mi int, mi is érvénytelen.
De most, csak belegondolok mivel ez a sárga puzzle darabot.
>> Most a következő, van egy zárójel után a másik közeli zárójel,
hogy úgy mondjam.
És majd látni ezeket az egész C programok, valamint a
JavaScript és a PHP.
És ezek csak magukba kapcsolódó sornyi kódot.
A nyitott zárójel lényegében azt mondja, itt jön egy kódot.
És a zárt zárójel, ami szögben a másik irányba, csak
azt jelenti, hogy ez az a a megfelelő kódot.
>> Így a szaftos sor az első program, az utolsó, printf,
idézet-idézet vége, hello world.
És felhívtam a dolog között idézetek mi utoljára?
Tehát ez egy string.
És egy sor csak a techie kifejezés egy sorozata
karakterek, a szó, a kifejezés.
Még egy levél is kell idézőjellel.
De ez egy sorozat nulla vagy több karakter.
>> Backslash-n, bár úgy néz ki, egy kicsit furcsa.
De ez csak jelent valamit egyszerű a számítógéphez.
Mi backslash-n?
Új sor.
Szóval ez csak a speciális sorrendjét karakterek a világ úgy döntött,
azt jelenti, hogy egy sortörés ott, mert a fordító valóban kap
zavaros, általában, ha nagyon érthető, de helytelenül, csak
kezd Enter, hogy új vonal a kódban.
Be kell, hogy egy kicsit explicit és backslash-n.
>> És majd meglátjuk, van még néhány más hasonló minták speciális karaktereket.
Például, ha akarta, hogy hagyja el a hintázás egy sarokba esetben
tegyük fel, hogy szerettem volna nyomtatni idézőjelig a képernyőn
bármilyen okból, hogy úgy tűnik, hogy egy kicsit problémás, nem igaz?
Mert ha tesz egy dupla idézet a közepén "hello, world" bármilyen
ok, miért, úgy tűnik, potenciálisan problémás?
Ez megtöri a húr.
>> A fordító csak egy program.
A program, mint a fordító csak megy olvasni a kódot felülről lefelé,
balról jobbra.
És ha úgy látja, három idézőjel helyett Két, akkor nem fog tudni
ha azt jelenti, hogy a dolog, hogy a bal oldali legyen az szöveg, vagy a dolog, hogy
a jobb, vagy az egészet.
Ez egyértelmű, és akkor mi van egy tipikus fordító tenne csak borulni,
valamint néhány hibaüzenetet, és hogy ha a probléma kezelésére.
>> Tehát mivel a backslash-n: új vonal, mi lenne az ösztönök most
kezd lenni, ha akar is valami rendhagyó, mint egy dupla
idézve belül az egyébként idézett húr?
Backslash-double árajánlatot.
És így majd meglátjuk ezt ilyen minta is.
>> Ha akarsz valamit, egy kicsit furcsa, rájössz, hogy a
megoldások gyakran követik a mintát, és a backslash
jelöli egy escape szekvencia.
És ez csak azt jelenti, valami különlegeset , hogy meg kell, hogy képviselje a
más módon.
Ami hogyan képviselik a backslash, Hát, majd
jött vissza, hogy a.
De a válasz is, valójában egy kicsit nyilvánvaló.
>> Szóval már be más programozási szerkezeteket
hogy láttál Scratch.
Valószínűleg már magától értetődőnek Már ha már lebukott
probléma meg 0-ra.
De nézzük most be a szintaxis a C ezek egyébként meglehetősen intuitív
ötletek, legalább néhány közülük.
>> Tehát ez a fogalom a feltétel vagy egy ág, míg korábban azt
képviselte azt kóddal, hogy nézett így a bal oldalon a Scratch -
ha x kisebb mint y, akkor mondjuk így -
ehelyett most C - hadd élesíteni be a legegyszerűbb esetben -
Mi csak mondani, ha nyitott zárójel, valami igaz - a
Logikai kifejezés fog menni ahol mondtam állapot -
Záró zárójel, akkor ne mi belül a zárójelek.
>> Tehát itt is, a kapcsos zárójelek olyan mint a Scratch
U-alakú puzzle darab.
Ne mi van ezekben a zárójelek.
Ebben az esetben a perjel perjel.
És észre ez egy előre perjel, sem a backslash.
Perjel, perjel, azok számára, akik már beprogramozott
előtt, csak azt jelenti, -
ez csak egy megjegyzés.
A megjegyzés nem egy vonal A kód önmagában.
Ez egy sor az angol, hogy a ember, írt magadnak, hogy
talán emlékeztetni, hogy tegyen valamit, hogy magyarázni magát, hogy elmagyarázza
valaki, hogy mi a kód csinál.
Ez csak egy leíró megjegyzést.
>> Nos, persze, mi lehet a kétirányú útelágazáshoz éppen ezt, a
hármas útelágazáshoz csinál ezt, és ha továbbra is ezt a
mintát, akkor négy-utas, öt irányú, hat utas villa az úton, ha
kell kezelni, sőt, hogy sok feltétel.
És akkor veszi észre a párhuzamot itt -
if (feltétel), else if (feltétel), és az egyetlen, ami egy kicsit
furcsa az utolsó, amely csak, hogy más.
De ismétlem, ez megegyezik, fogalmilag, hogy mit tettünk
már, bár a szintaxis fog hogy egy kicsit szokni kell.
>> Most, ebben a példában, vannak más furcsa szintaxist.
Látjuk printf újra nyitott zárójel, és szoros zárójel.
És azon belül van jegyzett string.
A zárójelben keretében A printf, megy a bal
és jobb, mi?
Mit is leírják, hogy a megadott string általánosságban?
>> Szóval ez az érv.
Minden alkalommal, amikor egy funkció, mint például a printf, majd egy nyitott és paren
szoros paren és valami belső azt, hogy ez egy string, vagy
integer, vagy bármi más, a dolog azok között, zárójelben a neve
érv.
>> És az érv csak befolyásolja a függvény viselkedését.
Ebben az esetben, ez elég egyértelmű, hogyan.
x <y mi is telt el, hogy úgy mondjam, mint egy érvet.
És printf fog nyomtatni, hogy pontosan.
Mert biztosan a személy éve aki végre printf fogalmam sem volt
mi emberek utódai voltak fogja használni a printf.
Szóval ezért érvek vannak, hogy befolyásolják a viselkedést után függvény
írtak.
>> Most, logikai kifejezés.
Már láttam ezeket korábban Scratch.
Kiderül, a C akkor is ", vagy" őket, hogy úgy mondjam.
Két függőleges vonal azt jelenti, hogy ez a blokk A kód, ez ezt, majd
végrehajtani, ha az első feltétel igaz vagy a második feltétel igaz.
És bár lehet, hogy nem volna Ezt Scratch, akkor valóban
ezt a Scratch, és akkor is kifejezni magát másként -
ha az első és a második feltétel feltétel igaz, akkor nem mi
belül a zárójelek.
>> És ahogy Mellesleg, az oka, hogy dupla jel és egy dupla
függőleges vonal, majd meglátjuk végül hogy egy függőleges vonal és a
egyetlen jel valójában különböző vagyis a C. Tehát most,
hogy párhuzamos szimbólumok szándékos.
>> Úgyhogy be, röviden, ez a másik kis szintaxis.
Ez nem egészen átvinni a Scratch, de azt állítom, hogy én is
végrehajtja fogalma egy ha más, ha más, ha más, ha más nyilatkozat
egy úgynevezett switch.
És az egyetlen ok, ez tényleg létezik az, hogy csak Önnek, a programozó, a
kissé eltérő módon megoldani bizonyos problémát, bár ez logikusan
nem ad új képességeket.
>> Úgy értem, ez.
Amikor azt mondod kapcsolót, majd a tér, majd egy pár zárójel, belül
ebből megy kifejezés -
és ez lehet egy kicsit nem nyilvánvaló az első, de ez nem érv,
Technikailag, mert a kapcsoló nem függvény.
Tehát most, csak feltételezik, hogy mi használ zárójelek különböző helyeken
különböző okok miatt.
>> Tehát kapcsoló kifejezés azt jelenti, hogy képes hogy egy változó belsejében a
zárójelben, ahol azt mondja kifejezés.
És aztán, ha a változó -
tegyük fel, hogy hívják x, és ez csak egy egész szám -
Én majd sorolja a slide Itt valami ilyesmi.
Ha x a változó, és akarsz valamit, ha x
értéke 1, meg tudom csinálni.
>> Ha inkább akarok valamit ha x 2, meg tudom csinálni.
Mert ha azt akarom, hogy valami mást teljesen, tudok egy alapértelmezett esetben
esetben én ezt a másik dolgot.
Tehát ebben az értelemben, hogy ez megfelel egy ha x értéke egyenlő 1, más, ha más,
de megemlítem ezt most csak azért, mert majd látni.
De most, csak tudom, hogy létezik.
>> Rendben van.
Így az elmúlt pár egy kicsit komplex első pillantásra, de mégis
valami meglehetősen egyszerű.
A for ciklus C-ben egy darab kód csak nem valami újra és
újra és újra.
És az egyetlen bosszantó dolog az, ez az, hogy ez egy kicsit rejtélyes
kifejezni magát ebben a ciklikus minta, de a világ szabványosított
a következő módon.
>> Ha olyan a hurok, akkor megvan egy pár zárójel újra.
És vegyük észre a két pontosvessző ott.
Ez a két pontosvessző külön három különböző kifejezéseket belül a
zárójelben.
Az egyik az úgynevezett inicializálását.
Az egyik az úgynevezett állapotban.
És az egyik az úgynevezett frissítéseket.
>> Nézett az elvont, ez teljesen nem nyilvánvaló, ezért nézzük meg
egy konkrét példát.
A Scratch volt egy ismétlés blokk.
És ez a blokk szerint ismételje meg 10-szer, mondjuk "Hello, world". Hadd igényt
Most, és mi visszatérünk erre, és ez is lesz több ismerős
akkor nemsokára az egyenértékű C kód lehet mondani, hogy ez -
egy a nyilatkozatot, és a tér, egy pár zárójelben észre a pontosvesszőket
ott, ami külön három különböző dolgok, az inicializálás, a
állapotát, és a frissítés.
>> És hogy egy kitalálni, mi az első csinál.
Int i = 0-ra.
A durva laikus szempontból, mi hogy ezzel nekünk, talán?
Szóval igen.
Ez nyilvánító változó az i, és ez így ez milyen érték?
0-ra.
Szóval ez létre nevű változó i, a 0 értéket tárolja benne.
Ez az úgynevezett inicializálás.
>> Jól van, most már azt állította korábban hogy a középső dolog,
<10, ez a feltétel.
Tehát mi csinál?
Nos, mi a for ciklus nem, ha a program egy for ciklus fut, az
Minden alkalommal, amikor a számítógép fut keresztül Ez a ciklus, felülről lefelé, fentről
alul, ahogy ti nem, amikor számolás magatokat, és leült,
újra és újra és újra, a számítógép megy
hogy ellenőrizze állapotát.
És ha én nem kevesebb, mint 10, akkor az újra meg újra.
Ha i kisebb, mint 10, akkor az újra meg újra.
Ha én nem kevesebb, mint tíz, akkor az újra meg újra.
Tehát úgy tűnik, hogy azt sugallják, hogy Remélem változik.
Egyébként, mi lenne egy végtelen ciklus.
És valóban, úgy változik, mert a utolsó dolog, miután a pontosvessző van
a némileg rejtélyes szintaxis i + +.
De azok, akik már megtette ezt előtt, hogy csak azt jelenti,
egyszerűen mi?
>> DIÁKOK: [közbeiktatásával VOICES].
>> DAVID MALAN: Adjunk hozzá 1 a i.
Növedék i.
Így láttuk a Scratch puzzle darab, hogy valóban.
Nem úgy nézett ki, mint én + +, de ez csak azt jelenti, egyszerűen, növelni a
értékelik i 1 minden alkalommal, amikor erre.
Tehát a szó szoros értelmében, akkor kezdődik a inicializálás i 0-ra.
Ezután ellenőrizze az Ön állapotát.
0. kevesebb, mint 10?
Igen.
Mi megy át a hurkon.
>> A következő dolog, azt állítják, a számítógép fog tenni ez a helyzet
növeléséhez i.
Tehát én most 1.
Ellenőrzi az állapotot.
Értéke 1-nél kisebb, 10?
Természetesen.
Így csinálja újra.
Akkor lépésekben i + + 2-re.
2 kevesebb, mint 10-et?
Igen.
És újra és újra és újra.
És végül, mert a plus-plussing, megkapjuk, hogy i = 10.
10 kevesebb, mint 10?
Nos, nyilván nem.
És ez az a pont, ahol A for ciklus csak megáll.
És ha több kódot a képernyőn lent, a számítógép
bevétel futtatni a kódot.
>> Tehát még egyszer, még akkor is, ha ez nem megy, keresni, és úgy érzi, egy kicsit furcsa a
Először is, természetesen azok számára, akik még soha nem programozott előtt, ez
szó szerint csökkenti a fogalmilag hogy mi az egyébként nagyon
egyszerű puzzle darab Scratch.
>> Jól van, megígértem, hogy nem lenne lehet más analógok Scratch.
Van ez is.
És látta ezt röviden utoljára.
De ne felejtsd el örökre blokkolni Scratch?
Ez csak csinál valamit örökre?
Azt állította, hogy meg tudná végrehajtani ezt ezen a módon.
És akkor valóban végrehajtja-e ezt egy csomó különböző módon.
>> De a while ciklus csak egy másik módon C kifejezni magad.
Végén a nap, akkor nem semmit a while ciklus, amit
nem a for ciklus.
Így ők a végén nap funkcionálisan azonos.
De lehetővé teszi, hogy kifejezze magát egy kicsit másképp
a következő módon.
>> A while ciklus, ez az, ami a Zárójelben ez újból ellenőrzik, majd
újra és újra.
És amint ez a kifejezés hamis, akkor a ciklus végrehajtása megáll,
és a számítógép továbblép fut bármilyen más kódot
van a fájlban.
>> De ami igazán érdekes itt hogy szó szerint gépelt igaz.
És igaz, egyfajta logikai érték, igaz vagy hamis értéket.
Így is igaz valaha is lesz hamis, ha már a szó szoros értelmében
beégetett be a programba?
Tehát nem.
Ez egy kicsit furcsa, hogy ezt tettem.
De igaz, igaz.
Nincs plusz plussing.
Nincs értelme a változók itt.
Tehát azért, mert kódolva, miközben igaz, ez a hurok mindig lesz, hogy értékelje
újra és újra és újra.
>> Szóval, hányszor van hello world a nyomdába a képernyőn?
Örökre.
Végtelen számú alkalommal, amíg a akkumulátor meghal, vagy más külső
esemény történik.
Szóval ez talán nem a legjobb program írni, mert ha a felhasználó
soha nem kilép a programot, akkor valószínűleg nem az, amit tervezett.
>> De néha, programok kell Van egy végtelen ciklusba.
Például, ha a számítógép egy óra rajta, akkor biztosan lenne
szép, ha az óra ez folyamatosan frissítjük magát örökre, bár egyszer
második, vagy ha egy perc valami ilyesmi.
Tehát még végtelen hurkok megvan a helye.
>> Rendben van.
Végül ez.
És ez egy kicsit más funkcionálisan, és mi jön vissza
ez valószínűleg Pset 1..
De van egy másik típusú hurok úgynevezett do while ciklus.
És az egyetlen különbség itt között do while ciklus, és mondjuk, a while ciklus,
az, hogy a feltétel nem ellenőrzik Mielőtt elindítaná a kódot, de miután
akkor végre a kódot.
Tehát a tetején közben hurok, míg a teendő, míg a
ellenőrzi az alján.
>> És ez csak annyit jelent, hogy a while ciklus általában végre többször
vagy kevesebb idő, mint a while ciklus?
Potenciálisan többször, mert a do while ciklus világosan mondja ezt,
csak ami pont akkor ellenőrizze ha a feltétel belsejében a
Zárójelben igaz.
>> Szóval majd meglátjuk ezt újra valószínűleg Pset 1..
Ha valaha is szeretne tenni valamit a legalább egyszer, és akkor talán egy kicsit
időkben, ez egy jó konstrukció használható.
De egy while ciklus, ezzel szemben, ellenőrizze az állapotát az első.
És ez a hurok a C, akkor közben, míg és a hurkok.
És megint, map elég szépen vissza a semmiből, csak ez az egy nem
teljesen azonos analóg Scratch.
>> Nos, mi a helyzet, most, változó?
Szóval így én kijelentette, változó szintaktikailag a minap.
Volt egy int, amely azt állítottam, egy egész szám.
Aztán volt egy változót nevű számláló, , majd egy pontosvessző.
Szóval mi ez a kódsort csinálsz?
Ez egészen egyszerűen, kijelentve, változó -
vagyis, kérve a számítógépet, adj néhány memória, adj egy kis bit - in
amit képes tárolni, mi?
Egy int.
És a pontosvessző csak azt jelenti, végén sor kódot.
>> Most, a második sor valószínűleg szép kitalálható.
Mi számláló = 0; csinálsz?
Ez hozzárendelése 0 ellen.
És ez a másik dolog ez egy kicsit bosszantó
versus, mondjuk, algebra.
Mivel algebra, az egyenlőség jel azt jelenti egyenlő, itt a C, az egyenlő
jel jelent feladatot.
Tehát ez azt jelenti fel, mi van a jobb a mi van a bal oldalon.
És majd meglátjuk, egy szimbólum, egyenlő értéke, ha azt akarjuk, hogy valóban tesztelni
a minőség, a kissé bosszantóan.
>> De ez egy kicsit nem hatékony.
Elég bosszantó, hogy van arra, hogy egy változó,
majd adja meg az értéket.
Tehát C valóban lehetővé teszi számunkra, egyszerűsítése és csak mindezt egyszerre.
Lehet állapítsa meg a változó a bal oldalon.
Akkor még mindig a feladat a jogot azáltal, hogy az egyenlőségjel
a közepén.
Így a végén a nap, ez a két azonos, de ez, őszintén szólva,
valószínűleg a jobb szokás bekerülni csak azért, mert ez egy kicsit kevésbé
kód, ez egy kicsit könnyebb olvasni, és ez csak szigorítja
a kódot, hogy úgy mondjam.
>> Bármilyen kérdése eddig a hurkok, változókra, a feltételek, a
Logikai, akár műszaki vagy fogalmilag?
Rendben van.
Tehát most ez a következő egy kap kicsit érdekes.
És ez a példa tettem a múlt idő, hogy csak leképezi a Scratch példa
át C.
>> Így a funkciót.
A laikus szempontból, mi a funkciója?
Kell, hogy legyen merészebb a választ.
Mi az a funkció?
>> DIÁK: csinál valamit.
>> DAVID MALAN: Mi ez?
>> DIÁK: csinál valamit.
>> DAVID MALAN: Van valami.
OK.
Kezdjük ott.
Tehát a függvény valamit.
Tehát ez egy kódrészletet, ami lényegében végre másutt
valóban csinál valamit.
Nos, mi az érdekes a függvény az, hogy képes bemenet,
és ez a kimenet.
És menjünk fejeznek nézd meg ezt.
>> Így az ember a függöny mögött szándékosan egy perce.
Itt van egy táblázat.
De tegyük fel, hogy ez valójában jelent egy nagy doboz.
Tehát ez egy úgynevezett fekete doboz.
És általában, a tervezés, a számítógépes a tudomány, a fekete doboz csak utalnak
darab a funkcionalitás, hogy valaki hajtott végre, és nem
feltétlenül tudja, vagy érdekel, hogyan is végre a motorháztető alatt.
Csak érdekel, hogy ez a fekete doboz, amit akkor most indul a hívás
funkció, csinál valamit.
>> Tehát, például, ha ez a fekete doboz a színpadon itt jelent printf, a
funkció, tudom, hogy a korábbi példák hogy printf tart egy vagy több
érveket, és az első ilyen érveket kell a string, mint a
"Hello, world". Nos, ha én vagyok az a személy írni a programot, és azt akarom,
használja printf, én, például, talán egy darab üres papírt itt és a
fekete marker, és írd rá -
Én hibásan "világ" -
H-E-L-L-O.
>> Szóval viszem a fekete marker, és én írni, olyan nagy és jól olvasható, ahogy csak tudok a
ez a darab papír, "hello, world" És most azt állítják, ez az én érv.
Ez egy string ábrázolni egy darab fehér papírt.
És a bemenet most a funkciót printf lesz ez.
Így hívom printf, múló ezt az érvet bemenetként hozzá.
>> És most, én nem tudom, hogy a személy, aki írta printf csinálta évvel ezelőtt, de
Tudom, annak dokumentációt a célja az életben, hogy nyomtatni, amit
ad rá, mint bemenet.
És így, bár a végrehajtás az ismeretlenül nekem
a motorháztető alatt, most Látom, ó, ez történik.
Ez nyomtatott valami a képernyőn.
És most a a program, ha van voltak sornyi kódot, akkor
most vissza hozzám.
És az a tény, hogy Colton -
áldja meg a szívét, itt rejtőzik alatt egy asztal előtt mindannyian -
szándékos az, hogy nem tudom, és nem érdekel, milyen a printf
végre.
Én csak tudom, újra, annak dokumentáció, mit csinál, és hogyan
én kellene használni.
>> Nos, emlékeztetni arra, hogy printf kaphat egy kicsit bonyolultabb.
Ismét mi csak beszélünk a megfelelője Scratch mondjuk blokk.
De azt is tette ezt utoljára.
Azt akartam, hogy a Hello programot a kicsit dinamikusabb és nem csak nehéz
code valami hasonló "világ", és egyáltalán nem nehéz valami kód
önkényes, mint a D-A-V-I-D a programba.
Meg akartam kérdezni a felhasználót a saját nevet, majd csinál valamit
hogy a húr, hogy biztosítani.
>> Tehát van egy kicsit más itt. printf, egy perce
nem, sőt, tenni valamit, de az nem adott vissza semmit nekem.
Nem igaz?
Colton nem adja nekem semmit vissza, nem papírra.
Ott volt, csak egy mellékhatás.
My amely "hello, world", mint egy érv, hogy Colton eredményezte, hogy a
mellékhatása egy szó, néhány szót, jelennek meg a képernyőn.
>> getstring, bár egy kicsit más. getstring is egy
működik, de visszatér néhány érték.
Ez nem csak egy esztétikai mellékhatás.
Valójában ad nekem, az a személy hívás, vagy a funkció
valamit.
Tehát ebben az esetben, az getstring megadta getstring nyitott
paren, közel paren.
Vajon getstring ezért vegye olyan érveket vagy bemenet?
Nem, úgy tűnik, nem.
Ennek célja az életben, csak azért, hogy egy string.
Nincs szükség részletesebb annál.
Hadd megy előre, és úgy tenni, mintha, Ismét, ez a fekete doboz nem printf,
de getstring, és hagyja, hogy én, az ember írom ezt a programot, hívja vagy használja
getString által csak írásban G-E-T-S-T-R-I-N-G, paren nyitott, közeli
paren, getstring.
>> Most fogalmam sincs, hogy a CS50 személyzet végre getstring, de tudom, hogy
ha elég sokáig vár, akkor nem az dolog, a motorháztető alatt, talán a
néhány változó, talán használ valamilyen körülmények, talán használ valamilyen hurkok,
talán ha bizonyos funkciókat, talán a -
csak próbál istálló - talán a más programozási funkciók.
De ha elég sokáig vár - a valóságban, a számítógép, ez történik
szuper gyors -
ha elég sokáig vár, ez a funkció getstring fog kapni egy húr
a felhasználó, aki feltehetően gépelés ki a billentyűzeten, és
akkor, ha getstring történik egyre ezeket a karaktereket a felhasználó
és tárolja őket egy string, amely funkció getstring, megy, hogy
készen áll egy kis kimenő általam fogja letölteni útján a
értékadó operátor.
>> És ha majd elmegyek, sőt, a kimeneti Itt, Obosi nagylelkűen
részt, anélkül, hogy tudnánk ezt előre, írásban a nevét erre
változó, amely képviseli egy string.
Most, az értékadó operátor azt jelenti, hogy még bár ez lehet, hogy egy kicsit
felesleges, én tényleg nem kell, hogy a saját példányát.
Mivel a bal oldali oldal - Hoppá! -
észre, hogy én alapvetően van szöveg nevét a bal oldalon.
Így én is megy, hogy saját példányát.
És ez egy kicsit egy fehér hazugság, mert majd látni egy-két héten belül a
alkalom, hogy húrok valójában nem azok, aminek látszanak lenni.
>> De most, itt a visszatérési érték.
Itt van a saját példányát után az értékadó operátor.
És most, mit akarok csinálni?
Most már a második két sornyi kódot.
Szóval most szeretnék hívni printf.
Tegyük most, hogy a fekete doboz vissza, hogy, hogy
printf és nem getstring.
>> Printf ezúttal fog hogy hány érv?
Így néz, ez olyan, mint kettő.
Van két vessző ott, de egy ilyen vessző, ez
belsejét idézi.
Tehát az első argumentum szó lesz ez.
H-E-L-L-O, vessző, százalék s, backslash-n.
És most hogy nem az érvelés, de két érv a printf.
>> És mi printf kéne csinálni A két bemenet miután át őket
argumentumként?
Állítólag, hogy a második őket, ami hívtam név, így a
második darab papírra írtam ki egy perce hívják nevét.
Ez lesz dugó értékének belső Az, hogy változó a helyőrző,
% S, hogy ismét csak egy pillanat idő, látni fogjuk, a mellékhatása
elõszólítván printf, amely most lásd nem "hello, world", hanem "hello,
Obosi. "
>> Tehát egy nagy tapsot, hogy mind a önkénteseink, akik közül csak egynek tudott
ez történik.
Rendben van.
Szóval, talán, egyszerű volt, Természetesen, ha már ismert
ilyen, remélhetőleg soha nem fog felejtsük el, hogy bizonyos vizuális, hogyan
funkció működik.
>> Tehát ez több, mint getstring.
Belül a CS50 könyvtár, van egy csomó funkciók, amelyek
aktiválja, csak azért, hogy világossá hogy írta ezeket a funkciókat.
Jellemzően, a C, szinte minden más funkciót fogja használni a kisbetű.
De tudatosan használni nagybetűvel csak azért, hogy egyértelmű, hogy ezek
olyan képzés kerekek a fajta, hogy mi lesz használni csak néhány hét, hogy az
egyszerűsíti a folyamat kezd bemenet a felhasználó.
>> A CS50 könyvtár nem csinál semmit hogy ti magatok eddig nem sikerült
csak a C kód egy oldschool tankönyv.
De megint használjuk őket a képzés kerekek a fajta csak egy pár
hét, hogy mi lehet megszabadulni a komplexitás, hogy hamarosan érteni
magát, hogy csinál valamit, mint viszonylag egyszerű, mint egyre
bemenet a felhasználó.
>> Tehát tudja, hogy lesz elérhető a getchar, GetDouble -
megduplázódik.
What -, majd getFloat.
Mi az a float?
Kezdjük ott.
>> DIÁK: [hangtalan].
>> DAVID MALAN: Igen.
Ez egy szám egy tizedes.
Tehát mivel int egész szám, amely csak egy számot 0 és 9,
néhány ismétlések számát annak Az úszó valami
a tizedespont.
És egy dupla, eközben is számot a tizedesvessző, de
utáni számok a tizedes pont, esetleg.
>> Hogy mi lesz vissza erre nemsokára.
De általában, minden egyes ilyen típusú adatok, minden egyes ilyen típusú változók
hogy a könyvtár, mint a miénk visszatérhet te, különböző számú bitek
adatok tárolására.
Általában a Char, ami csak annyit jelent, egy karakter, használat 8 bit.
És ez tulajdonképpen összhangban van a byte önkéntesek, akik a múlt héten
odajött és képviselt ASCII karakter egy időben.
Tehát egy Char 8 bit.
>> Az úszó történetesen 32 bit, jellemzően.
És egy dupla, ahogy sejteni lehet, a valójában 64 bites, ami csak több,
ami azt jelenti, hogy nagyobb számok vagy pontosabb.
De a lényeg, inkább az, hogy egy másik időben.
GetLongLong eközben, de ostobán elemzi, tényleg csak egy
egész szám, amely kétszer olyan nagy, kétszer Hosszú, potenciálisan, a rendszeres
egész, 64 bit helyett 32.
És getString voltunk használ.
>> De kiderült, a CS50 könyvtár amely végre, mint látni fogjuk, a
formájában a két fájl, amelyek közül az egyik hívják cs50.h, két másik
adattípusok benne.
Logikai nem léteznek C. A szimulálni őket csak használ 0s és 1s
az egész programot.
De mi a CS50 könyvtárban létrehozott a szimbólumok "valódi" és a "hamis"
hogy képviselje 1 és 0, így nem kell kemény kód valamit
szó, mint a 1-es és 0-ra.
De majd meglátjuk azokat újra.
>> String, is, nem létezik.
És ezért már említettem, hogy ez egy kis fehér hazugság most.
De majd húzza vissza, hogy réteg nemsokára.
De most, egy sor olyan karaktersorozat.
>> Közben a C, akkor valóban különböző adattípusok.
Figyeljük meg ezek kisbetűs.
Tehát a funkciók láttál egy perce a funkciók írta CS50 hogy
vissza fog térni hozzád egy értéket, hogy esik az egyik ilyen kategória.
>> Néhány cheat lapok csak a növény a mag itt. printf nem csak
hogy% s helyőrzőként.
Tart% d decimális egész, vagy% i működne is.
% F lebegőpontos értékeket. % C az a char, ha azt szeretnénk, hogy csak csatlakoztassa egy
karakter egy előre formázott szöveg mintha már ezt, akkor a% c.
>> Aztán kissé bosszantóan,% lld egy hosszú, hosszú decimális egész szám,
ami csak azt jelenti, ha szüksége van egy igazán nagy száma és a 'használ valamit
úgynevezett hosszú, hosszú, ami akkor jön vissza a Pset, akkor a% lld
mondd printf, dugja egy igazán nagy Itt egész útján a második vagy
más érv.
>> És végül, azt ígértem, hogy van néhány más menekülés
szekvenciák printf támogat.
Láttuk backslash-n.
Backslash-r lehet látni.
Ez a fajta egy old-school dolog.
Ha valaha igazi írógép év óra és meghúzta a hajtókar
amely nem csak elforgatta a kereket, hogy mozog a felállás, akkor is költözött a
egész dolog egészen vissza a A bal oldali, nos, backslash-r
alapvetően mozgatja a kurzort vissza a sor elejére
mozdulatlanul le.
De a lényeg, inkább az, hogy a talán a jövőben.
>> Backslash-idézet, backslash-dupla idézet, backslash-backslash a
megoldás, hogy a apró talány Utaltam korábban.
És backslash-0 valójában elég érdekes.
De majd jön vissza hogy nemsokára.
>> Hadd menjen be, most a CS50 készüléket, és hagyja, hogy a ténylegesen a
Gyors felmelegedhetnek egyik példa tettünk már, majd lépni a
valami egy kicsit bonyolultabb.
Tehát, ha én nyit a programot nevű gedit -
ez az én grafikus szerkesztő.
És meg tudom csinálni, hogy -
hadd zárja be azt az ablakot is -
útján ez az ikon itt lent, gedit, a bal alsó
sarok mellett a menübe.
>> Én megyek előre, és előre, és menteni ezt a példát, mondjuk, John
Harvard mappába.
John Harvard mappa csak a hazai könyvtár, ahol az összes aktáját él
alapértelmezés szerint.
És fogom menteni ezt nevű fájlt hello-0.c.
És én választottam ezt a nevet csak azért, hogy vonalban áll a minta kódot a
Természetesen honlapján és a YouTube videók online.
>> Szóval most fogok kezdeni írni az első program.
Hadd nagyítani a olvashatóság.
És én megyek előre, és azt mondják, int Fő semmibe, ami csak úgy
sárga puzzle darab, elindít egy programot.
Kaptam a szokás felett év megnyitása a zárójel, akkor
is bezárja, majd megy vissza a ahol szeretnénk, hogy a kódot, csak
mert segít megőrizni mindent kiegyensúlyozott, különösen a
programban lesz sokáig.
>> És most, itt, én megyek előre és azt mondják, printf, idézet idézet vége,
hello world, backslash-n, közel idézet, Záró zárójel, pontosvessző.
Szóval, én csak ismétlődő mindent, amit szedett biztosra eddig.
Most megyek a kicsinyítéshez.
>> És ez a terminál ablakot itt, mit vagyok szabad tenni ebben a fekete
és a fehér ablak?
Mire használhatom azt?
Szóval, ez az, ahol futok parancsok és ahol lehet fordítani a dolgokat.
És én fogom tartani, hogy egyszerű.
Megyek, hogy egy program Legyen nevű, ami nem
Technikailag a fordító.
A fordító a nevezett csenget, de akkor jön vissza, hogy a
két hét múlva.
>> Egyelőre én csak úgy írja, hogy hello-0, de azok számára, akik
összehasonlítva a fejében, amit most gépelt, hogy mit kellett volna gépelt lehet
tudod már, hogy én nem valami nincs rendben.
Nos, van nyilvánvalóan néhány hibát.
Mielőtt még nézd meg, mit ők, minden gondolatait, hogy mit csináltam rosszul?
>> DIÁKOK: [közbeiktatásával VOICES].
>> DAVID MALAN: Igen.
Én hiányzik a könyvtár header file.
Minden ilyen. H fájlokat nevezzük header fájlokat, és együttesen
tartoznak dolgokat az úgynevezett könyvtárak.
A könyvtárak csak darabokat kód hogy más ember írta.
Tehát a szabvány [? i?] könyvtár egy gyűjtemény tartalmazó fájlok kód
hogy más ember írta.
>> Szóval hiányzik, hogy az.
Akkor miért kapok egy hiba?
Nos, hadd lépjünk vissza fel a terminál ablak itt.
És sajnos, a C, mint a sok programozási nyelvek, különösen
ha ez minden új neked, a hiba üzenetek pontosak, de ők is
nagyon rejtélyes.
És a hiba itt, piros, a "Burkoltan kijelentette könyvtári funkció
printf típusú, "és akkor tekercsek a következő sorra, "int const char *
... "Csak lesz igazán elsöprő gyorsan.
>> De, hogy mit kell kezdeni a teendő, ha, ismét új mindezt, csak azért, hogy
elkezdi keresni a kulcsszavak.
Nyilvánvaló, talán nem értem a felét a szavak látok csak még.
Lesz azonban egy hét múlva.
De látom printf.
És meg kell kezdeni, mielőtt hosszú, jog a memóriát, minden rendben, printf.
Valami baj van printf.
Mondtam varázslat rosszul?
Nem, ez nem úgy néz ki, mint - oh.
Nem tudom használni, kivéve, ha tanítok a fordító, hogy létezik.
És így, megint megy az ösztöneid, akkor is, ha valójában nem érti
az aktuális hibaüzenetek.
>> És valóban, a megoldás az, hogy csak közé tartozik, hogy a tetején a fájl
mint, hogy én resaving fájl Vezérlő-S, vagy a Fájl menüben.
És ha most vissza ide, Fogom törléséhez.
Az ellenőrzés-L csak egy jó módja annak, hogy törölje a képernyőt.
És akkor fogok írja "hogy helló 0 "Enter, és most még mindig látni a
rejtélyes jelsorozat, de akkor jön vissza, hogy a.
Ez az, amit tenni, ennek az Ön számára.
Ez automatizálja a folyamat figyelembe meglehetősen bosszantó parancs bevonásával
Csenget, a tényleges fordító.
De az tény, hogy nem kapott hiba azt jelenti, hogy ez a dolog meg kell dolgozni.
>> Úgyhogy most megyek csinálni - hadd nagyítani újra -
./hello-0 Enter, sőt, látom "Hello, world". Szóval Most erősítése
ez alig észrevehetően, csak megismételni lépéseket is szánták.
Fogom nevezni ezt Mentés másként hello1.c.
És most megyek, hogy egy változót names, így karakterlánc nevét,
és megyek, hogy benne a értéke quote-idézet vége
D-A-V-I-D közeli quote pontosvessző.
És most megyek helyett "világ" , amit helyőrző egy karakterlánc?
% S.
>> És most, hogy sok érvet kell printf hogy ebben az időben?
Tehát két.
Szóval megy kívül idézi.
Azt írja: "name" után vessző.
De tettem valamit más baj ebben az időben.
De tegyük fel, hogy én nem észre, hogy még.
Hadd menjek itt.
>> És vegyük észre is kezdek egy kicsit unatkozik a gépelés ", hogy helló 0" a
idő, "hogy", és ezt az egészet.
Így kiderül, hogy Linus akkor gyakran sújtotta a Fel nyíl a
billentyűzet, és akkor valóban görgetni az összes olyan parancsot, hogy én már
végre az előző, hogy csak most.
Tehát, ha megteszem, Fel, Fel, van, hogy helló 0-ra.
Nem akarom ezt.
Csak azt akarom, hogy változtatni kell helló 1 ezúttal az Enter billentyűt.
Végül, hogy majd menteni egy kis időt.
>> Rendben van.
Sajnos, van egy hiba.
Hadd felfelé.
Ez úgy néz ki, mint a nagyon lemészárolták ezt a programot.
Úgy értem, istenem, ez a két sornyi kódot, és 10 sor a hibák.
De nézd meg a felső egyet.
A be nem jelentett azonosító string.
Mondtam értem Standard I n?
Nem, nem.
Gondoltam string.
>> De hol van a string változó típusú kijelentette, dd mondjunk?
Szóval ez a CS50 a könyvtárban.
Tehát ez nem elegendő, ezek az első pár hétig, csak használni
milyen C ad nekünk.
Én is megyek fel itt, és én sodorhatják az alatt vagy felett, de én
csak tartsa ábécé hogy a dolgok rendben.
Megyek is cs50.h, amely előre telepítve
Önt a CS50 készülék.
És ez nyílt forráskódú, így még az emberek az interneten is használja azt a
saját számítógép.
De jön a CS50 készülék.
>> Tehát most hadd menjek vissza és újrafordítani ezt, hogy helló 1.
A fenébe is.
Még egy hiba.
Hadd felfelé az első, mégis.
Ez egy kicsit bonyolult.
Multi-karakteres karakter konstans.
Ez nem segít nekem.
De vegyük észre, csenget legalább egy kis bit tisztességes, ahol egy kis
zöld kalap szimbólum, azt mondja, Itt, ahol én elcsesztem.
Miért mutat, azzal a kis zöld nyíl, az aposztróf következő
a nevem?
>> Tehát ez az egyik dolog, amit csak szokni, különösen akkor, ha már
programozás Python vagy JavaScript, vagy más nyelven, ha ezt a részletet
nem számít.
A C, nem mindegy.
Ha nyilvánító string, amely sorozata 0 vagy több karakter,
ténylegesen kell használni idézőjelek.
Szóval tényleg kell változtatni ezt vissza megnyitni idézet, idézet zárja, és
idézőjelek.
Aposztrófot megvan a helye, de a csak, ha éppen használja az egyes
karakter, de az, hogy egy másik időben.
Most, az idézőjelek van szükség.
>> Tehát most, hadd menjek vissza a terminál ablak, hogy helló 1.
És ki az a magabiztos?
Ez a program most megy összeállítása helyesen?
OK.
Így hárman gondolom, hogy ez.
Rendben van.
Enter.
És tényleg nem.
Szóval nincs hiba ebben az időben, még bár ez a program ütött egy kicsit
bonyolultabb.
Ha most nem pont perjel szia 1, az Enter, azt fogja mondani "hello, David."
>> De lássuk a harmadik ismétlés E, ahol a
program valóban dinamikus.
Hadd menjek előre, és változtassa meg a fájl név, csak a következetesség a
kép lesz elérhető neked utána az interneten.
Enter.
És most megyek és nem tárolja "David" hard kódolt itt.
Mit tehettem volna, hogy nagyon egyszerű javítja a program?
>> Nevezhetném getstring.
Lehet, hogy egy kicsit nem nyilvánvaló, mi a fog történni, úgyhogy megyek
hogy valóban újabb vonal, printf, és mondd név-, vastagbél-, közel idézet, csak
, hogy a felhasználó a prompt a képernyőn.
És most megyek itt, és én vagyok fogja használni a billentyűkombinációt.
Én megyek fel, fel, és a változás szia szia 1 2 Enter.
És szerencsére, én halad.
>> És most megyek fel a dot slash köszönni, és
változtatni 2, Enter.
És most az én programomat -
Én nagyítani - egyre egy kicsit szebb.
Név lesz, mondjuk Rob Ebben az időben, az Enter, hello, Rob.
Meg tudjuk csinálni újra.
Név, Lauren, Enter.
Név, Joseph, Enter.
Név, próbáljuk lenni nehéz, Enter.
Eh.
Ez nem igazán a hibát.
Tehát ez csak egy kicsit csúnya.
Így talán tudnánk oldani ezt a a jövőben, most nem.
>> De hogyan ösztönösen megy a címzés
az adott kihívás?
Csak úgy néz ki hülye.
Hogyan lehet elkerülni a dolgokat látszó hülye?
Így tehetett, OK, hallottam egy pár a dolgok, ezt az állapotot, és a hurok.
Jól jönne egy, a feltétellel, hogy ellenőrizze mi a string hossza
a felhasználó adott nekünk?
És ha ez 0, ez csak idézni idézet vége, csak Enter, majd
talán kellene kiabálni rájuk és sugallják, újra.
De hogyan a sugallják, újra?
Nos, én is hallottam, hurok, és nem tudtam csinálni újra és újra és újra
kéri a felhasználó ugyanazt a dolgot.
>> Nos, nem egy másik példa ki egy másik
funkciót a CS50 könyvtárban.
Hadd zárjam ezt a fájlt.
Hadd hozzon létre egy újat.
És én hívom adder.c, csak azért, mert ez könnyen, hogy nem egyszerű számtani,
még akkor is, ha ez lesz teljesen underwhelming, amit tehetne
bármilyen modern számítógép.
>> De hadd menjek előre, és most -
Megtanultam a leckét utoljára - tartalmazza cs50.h, include stdio.h, int
Fő semmibe, ami most, én csak vesz vak hit, de tegyük fel
hogy megértsék, mit azt jelenti, hogy nemsokára.
És fogok mondani valamit mint "adj egy int."
>> És most, hogyan kap egy int?
Azt akarom, hogy végül, hogy egy változót hívott x int típusú és
tároljunk benne egy egész szám a felhasználó elől.
Szóval ez egy falatot.
De ha valaki azt akarja, hogy javasolja, hogy Kijelentem, nem egy egész nevű x?
Int x.
>> Tehát ez tényleg ilyen egyszerű.
Adj egy int.
Nevezzük x.
Most már használhatja az értékadó operátor.
És hogyan tárolja a hagyott értéket a felhasználó?
Nem akarom hívni getstring, nyilván, de inkább getInt.
Olyan érveket?
Nem.
Tehát nyitott paren, közel paren azonnal, majd egy
pontosvessző befejezi a vonal.
>> Most hadd ezt újra.
Adj egy int.
Ezúttal én megteszem int, menjünk hívják y, egyenlő getInt.
És most hadd tegyek valami szuper-egyszerű mint egy matek.
Tehát printf, az összeg% d a helyőrző egy int.
És% d, idő, backslash-n.
>> Rendben van.
Tehát ez valójában nem matematika.
De ha azt akarom mondani, az összeg a érték és ez az érték eléri a
más érték, hány érveket teljes kéne hogy printf,
végül?
Tehát négy, nem?
Ez a karakterlánc, majd a három értéket.
Tehát x az első akarok lenni csatlakoztatva először a% d.
y lesz a következő.
>> És most milyen akarom mondani z, de a Z nem létezik.
De ez nem egy nagy ügy.
Mert mit tennél ösztönösen, különösen akkor, ha volt egy
grafikus számológép, mit írjon?
Mit szólnál x plus y?
Tehát ez nem egy valódi változó.
Ez csak az összeg két többi változó.
És ez teljesen jogos.
C biztosan megérti egyszerű számtani, mint ez.
>> Pontosvessző, kivéve.
Most hadd menjen le ide, és make vipera, Enter.
Nem hiba, hogy ez folyamatban is.
Írja vipera.
És még egy billentyűkombináció, ha elkezd unatkozni
minden parancs -
ha elkezd beírni egy parancsot, mint a pont slash ad, és ez az, ahol a
unalom rúgást, akkor általában hit Tab, hogy a számítógép befejezi az
Külföld kifejezés az Ön számára, ha nem egyértelmű, mi után kell ad.
>> Hadd gyerünk már és nyomja meg az Enter.
Adj egy int, 1, 2, és Szerencsére, ez a 3.
De mint mindig, vizsgálati programok nem csökkenthetik a
Csak próbáltam egyszer.
Hadd próbáljam meg a sarokban az esetben, mint a negatív 1, adjon nekem 1, és hogy az egyik
ki ellenőrzi is.
És érdemes csinálni néhány szigorú tesztelés, de nem vagyok elég
kényelmes, ha ez az.
>> Nos, nézzük meg egy másik program hogy ezúttal használ
kicsit más szintaxist.
Hadd hozzon létre egy új fájlt.
Hívom ezt conditions0.c sorban fel néhány minta kódot online.
És hadd menjen előre, és ezt között cs50.h tartalmazzák
stdio.h, a fő érvénytelen -
OK.
Ott vagyunk.
Megvan a standard boilerplate.
>> És most fogok mondani printf, "Szeretnék egy int, kérjük," csak azért, hogy
hogy a prompt egy kis sokkal barátságosabbá teszi.
És most azt akarom, hogy egy int a felhasználó elől.
Fogom nevezni n ebben az időben, csak mert n hangzik számát.
getInt, és most, mit Azt akarom, hogy vele?
Nos, ha n - és én nagyításhoz -
ha n nagyobb, mint 0, akarom hajtsa végre a következő -
printf "Te választottad pozitív szám." Else, megyek, hogy írja printf "Te
felvette a negatív
szám. "Rendben.
Így ez a program, bár én megtettem gyors, jobbra néz szintaktikailag.
Hadd próbáljam meg.
Legyen állapot 0-ra.
Úgy tűnik, hogy fut.
Állapota 0, adja meg.
Adjunk egy int 50.
Felvettem egy pozitív szám.
Próbáljuk meg újra.
Állapota 0.
Negatív 50.
Felvettem egy negatív szám.
>> De most, hadd vegye mit fogunk tartani hívja a sarokban eset, ami több
egy érdekes eset, hogy úgy gondolja Lehet, hogy egy kis baj, 0-ra.
Nos, biztos vagyok benne, hogy ez az egyik azon helyzetek, amikor nulla
sem pozitív, sem negatív, így a programot, bár szintaktikailag
Helyes - lefordul, fut - logikailag nem helyes.
Szóval mi az egyszerű fix itt, ha azt akarom, felismerni, ha azt akarom, hogy kezelni n
egyenlő 0 külön-külön?
>> Tehát, ha n értéke 0, akkor azt akarom mondani, valami hasonló printf "Te választottad 0-ra."
Hadd próbáljam ezt most.
Hadd menjek vissza, világos az ablakon, és egy újrafordítás.
Hm.
Egy hiba generál.
De az ellenőrizni kívánt ha n értéke 0-ra.
>> Tehát még egyszer, egy ostoba dolog megszokni, egyenlő jel
az értékadó operátor.
Tehát ez valójában tévedés abban, technikailag, bár a fordító
védett meg magamtól, mi lenne technikailag másolás 0-ba n, amely
nem az, amit akarok.
Szeretném kipróbálni az egyenlőség az egyenlő egyenlő.
És így, hogy most lehet, a jobb megoldás.
>> Hadd valójában mentse ezt, mondjuk, conditions1, hogy új és jobb.
Tehát most, ha én ezt fordítanod, ez lenne feltételek -
Hoppá - hogy conditions1 dot slash conditions1, Enter, "Szeretnék egy int,
kérlek. "fogok menni előre, és írja be 50.
Még mindig jó.
Negatív 50, még mindig jó.
0, és valóban, az észlelt hogy felvettem 0-ra.
>> Szóval, mi több, most ezzel?
Nos, akkor biztosan nem nagyobb bonyolult dolgokat.
De azt szeretném javasolni a , hogy a végén az ezt a megjegyzést itt.
Ha húzza fel ezt, látni fogja, talán a kedvenc rajzfilm a tiéd
a mai napig talán sohasem értették.
És ez a minőség a nevetés akkor kap a CS vicceket.
Szóval ez a helyes.
>> De még feltűnően, gondoltam, nekünk egy kis teaser a hétfő.
Így már elkezdte használni egészek.
Már említett úszók.
Már akkor is említett páros, ami megint kapsz számokat
után tizedes.
>> De kiderül, hogy úszik, és páros, és tényleg, a számítógépek,
alapvetően, nem lehet kifejezni Néhány érték pontosan.
Tudjuk, matematikai osztályok, hogy tudod bármilyen számú számok után
tizedes pontossággal.
És akkor is tesz egy függőleges vonal mondani ezeket örökké.
>> Sajnos, nem igazán lehet csinálni, hogy egy számítógép.
És így sarok esetben merül fel.
Például, tegyük fel, hogy te csinál valamit pénzügyi.
Jól csinálod matematika A százalékos és
a dollár és cent.
És azok cent nem feltétlenül csapatán.
Nos, kiderült, hogy a frakciók fillérekért lehet kezdeni, hogy adjunk, amikor
modelleztük a számítógépes rendszer oly módon, hogy az okos
az emberek kihasználni.
>> És azok, akik még nem látták, én szeretnék adni egy 30 másodperces teaser
csodálatos film ismert Office Space, amely festeni egy képet a
probléma fogjuk kezelni az első dolog, amit hétfőn.
Ha tudnánk növelni a hangerőt egy kicsit, adok neked 30
másodperc irodák.
>> [VIDEÓ LEJÁTSZÁS]
>> -Úgy értem, te, te még nem mutat , és kapsz tartani az állását.
>> -Igazából, egyre inkább előtérbe kerül.
>> -Én is programozni egy vírus, amit rip hogy a hely nagy idő.
>> Nos, hogyan működik?
>> -Minden alkalommal, amikor van egy bank tranzakciós kamatozású számítani, és
Több ezer naponta, a számítógép vége ezekkel a frakciók egy cent.
>> -De én nem fogok semmit az illegális.
>> -Illegális?
Samir, ez Amerika.
>> -Meg kell Istenre esküszöm.
>> -Ha senki nem tud róla de minket, rendben?
Nem családtagok, nem barátnője, senki.
>> -Természetesen.
>> -Rendben.
>> -Ne aggódj, ember.
Nem mondom el senkinek sem.
>> [END VIDEÓ LEJÁTSZÁS]
>> DAVID MALAN: Szóval ez tehát, CS50, ez Office Space, és ez lesz az összes
értelme hétfőn.
Viszlát.
>> Srácok A következő CS50, Rob alkalmazkodik, hogy ki a
Harvard étrendjükön.