>> [Videó lejátszás]
>> -A Diadala matematikai és mechanikai készség
Ez a nagy új automata számológép a Harvard Egyetemen.
Bonyolult problémákat a matematika tedd át a gépen kódolt formában
szalagon pontosan megoldani, perc töredéke a szükséges idő
Az emberi számítás.
Úgy tervezték, hogy felgyorsítsa minden formáját matematikai és tudományos kutatás,
az óriás mechanikus agyat működni fog Az Egyesült Államok Haditengerészete, amíg a háború végén.
>> [Lejátszás vége]
>> David J. MALAN: Ez a CS50.
Az elmúlt egy varázslatos hely, de ha valaha
vajon mi a másik készülék A Harvard Science Center,
ez valóban része a Harvard Mark I, és ez
ott kiállított most az elmúlt évek.
És mit fogsz látni ágyazott probléma szett
az egyik egy pillantást a színfalak mögött hogy milyen az adott eszköz volt, és igen,
professzor Harry Lewis, aki a A Számítástudományi Tanszék itt.
Így még az, hogy csak egy kicsit.
>> De ma elkezdjük átmenet a múlt héten, hogy ez az,
és mi, említést Egy fénykép itt
Ez tulajdonképpen elég híres.
Tudja valaki, hogy mi ez a Itt van a képernyőn?
Legalábbis a legendák szerint.
Igen.
Közönség: Az első vírus.
David J. MALAN: Így volt állítólag Az első tényleges hiba a számítógépen.
Most a valóságban szó bug, A hiba a programban,
már velünk néhány időt a fizikai világban,
és ez volt az egyik első dokumentált alkalommal, amikor valaki valóban
leszedett egy nagy lepke ki a Mark II számítógép, tedd a kötőanyag,
majd felvettük mint az első ismert hiba
hogy valóban találtak fizikailag.
Szóval így került be hogy a mai tan.
Mindent utolsó heti online elérhető.
Különösen források, hogy lehet, nem feltétlenül veszi észre, különösen
ha idejön személyesen.
Tehát az egyik tanítási fickók minden évi teszi a kanonikus sor jegyzetek,
így nem kell tartani le a fejed, és megpróbálta
átírni leginkább semmit hogy megtörténhet itt az osztályban.
Így megállapítható, hogy ezek úgynevezett [? Scribd?] Jegyzetek
online, minden bizonnyal a diák és forráskódot, hogy használjuk az osztályban.
Azt, hogy teljes szöveg átirata is elérhető.
Tehát, ha homályosan emlékszem néhány távon, és szeretné, hogy keresse ki egy kicsit
könnyebben, rájönnek, hogy minden Az, hogy az online kereshető.
Csakúgy, mint walkthroughs is.
Valóban, ma elkezdjük nézni alacsonyabb szintű programozási nyelv,
hamarosan ismert számunkra mint a C, és ez nagyon könnyű
a fajta eltévedni után néhány pillanatok időt, majd egyfajta csoda
hogyan is van, hogy néhány összetettebb példa a legegyszerűbb.
És így észre fogunk cseresznye vedd során osztály néhány
A reprezentatív példák, de észre, hogy sokkal több is
online elérhető, így a munka rajta a saját tempójában,
Ugyanakkor maga a legkényelmesebb.
>> De mi maradt le programok, amelyek éppen ezt.
Szóval kattintson a zöld zászlót, és mit jelent ez a program nem?
Mondja, hello, világ.
Lehetővé teszi a macska mondják Hello az ő kis világában
A bal felső sarkában A Scratch felhasználói felületet.
De kezdtük bevezetni Néhány terminológiai múlt héten.
És igen, a dolgok, mint ez hívtuk mi?
Mi lehet az általános kifejezés ez?
Igen.
A módszer vagy egy nyilatkozatot.
Persze, ez egy akció.
Tegye ezt.
És mégis voltak más formák a semmiből,
mellett ezek az úgynevezett nyilatkozatot, ők is
dolgok, mint ez, amit az úgynevezett mi?
Igen.
Tehát egy hurok.
És ebben az esetben, ez a dolog ismétli, nyilván, 10-szer.
Van egy örökké blokk.
Van egy pár mások.
És ma megyünk, hogy hogyan kell lefordítani ezt egy modernebb világban,
ha úgy tetszik, annak ellenére, hogy fog megjelenni az első pillantásra
hogy sokkal misztikus.
De azok valóban hurkok.
És akkor mi van a dolgok, mint ez, ami már ezt a formát,
és lényegében feltett kérdésekre.
És mi utalt ezekre, mi?
>> Közönség: logikai kifejezés.
>> David J. MALAN: Igen.
Logikai kifejezést.
Valami, ami vagy igaz, vagy hamis, igen vagy nem, egy vagy nulla,
Ugyanakkor azt szeretnénk, hogy a világot.
De hívtuk ezeket a logikai kifejezéseket, és mi dugja
a feltételeket, vagy fióktelepek.
És a világ Scratch, mindent szépen
blokkolókat szempontjából az alakját, ha ettől logikai értelemben, hogy erre,
de nem kell megállni, csak csinál egy dolgot feltételesen,
akkor egy közmondásos útelágazáshoz
és tegye ezt vagy azt, ha a feltétel igaz, vagy sem.
És akkor, mint látni fogod, ha még nem tetted meg,
Akkor is fészket ezeket a blokkokat.
Tehát Scratch növekedése kitölti az alakzatok hogy érdemes beilleszteni azt,
így tulajdonképpen kifejezni a legtöbb minden logikát, hogy érdemes csinálni.
>> Most néhány szót a hirdetést mind itt, és New Haven.
Tehát vágási ma kezdődik.
Az URL-t, ez a tanfolyam honlap, azok számára ismeretlen.
Szakaszok lesz lehetőséget, hogy együtt legyünk
egy sokkal intimebb környezetben mint [? Sanders?] Lehetővé teszi,
a 10 és 20 osztálytársai egy tanítás munkatársa különböző pályákon,
és eltérő ütemben, ha úgy döntenek.
Sőt, a kurzus ajánlatok különböző szakaszok
a kevésbé kényelmes, több kényelmes, és valahol a kettő között,
és szerepe a hüvelykujj itt, nincs hivatalos meghatározása,
de ha kevésbé kényelmes, Ön milyen is tudod.
Te egy kicsit merész a gondolata lépett láb, talán vissza
az osztályteremben, vagy bemutató akár egy in közötti részben.
Ha már programozási mióta Hat éves, kényelmesebb,
Talán az Ön számára.
És ha ez a fajta dobás-ig, hogy pontosan mi a kettő között
azt jelentette, hogy.
>> Most, az időközben egy osztály ilyen méretű,
ez visz minket jó ideje szakasz mindenkinek, így már az úgynevezett,
szuper szakaszok, jön ez a hétvégén és a jövő hét elején,
ezért vessünk egy pillantást a tanfolyam honlapján azok számára, akik természetesen széles,
és azt is forgatták azoknak akik nem tudják azokat.
És szakaszok maguk indul A héten három CS50 nulla index.
Probléma állítsa 0 már A tanfolyam honlapján.
És észre, hogy te is Kilenc nap végén ebben a félévben.
Szóval ez egy frissítés a tavalyi évben, amikor már öt nap végén.
>> Tehát ha kíváncsiak vagytok, már kilenc probléma készletek.
Van kilenc késő nap, amelyek mindegyike akkor csak eltölteni egy heti.
Amely hatékonyan teszi az összes A probléma határozza miatt péntek
de a cél az, hogy egy kicsit kis pszichológiai nyomás
rajtad, hogy meg kell kérni dolgokat csütörtökön
mert hamarosan kiderül, jobb vagy rosszabb, a legtöbb
mindent a szoftverek világában köt ki figyelembe sokkal hosszabb, mint amit előre.
Így tartja egyfajta A lehetőséget, hogy segítsen
magát a cél, csütörtök de szereti a jólétet, hogy igen,
mindent annak köszönhető, pénteken.
És ha be őket Csütörtök, ez csodálatos.
Nincs bónusz pontokat, vagy extra hitelt e határidő betartásával.
Ez azt jelentette, hogy egy mankó csak.
>> És munkaidőben, mind itt és a New Haven,
személyesen, ha azt szeretné, hogy találkozni bármelyik tanfolyamok
tanítás társaival és CA segítségért.
>> Minden rendben.
Tehát most, csináljuk meg ezt valóságosabb.
És egy pillanatra, hogy fog kezdeni hogy egy kicsit misztikus, de nagyon
Gyorsan pénteken és Jövő héten lesz
képes erre sokkal több, mint tudtunk eddig a Scratch.
Szóval mi vezetett kód utolsó héten, bár pictoral.
Ez volt puzzle-darabokat.
És mi formalizált, hogy ez úgynevezett forráskódját,
de azt nem néz ki?
Nos, úgy nézett ki egy kicsit valami ilyesmi.
És, sőt, csak azért, hogy a fajta kötekedik, ahol tudunk menni ezzel.
Megyek megy előre, és nyit egy ablakot itt,
és én csak fog választani Új fájl.
És fogom menteni a fájlt mint valami ilyesmi: helló pont c.
Több az, hogy megválasztása szóval csak egy pillanatra.
És ez hogyan valaki megy a programot írni.
Közé tartoznak a standard I / O pont h, int main void, majd nyitott zárójel, közel
kapcsos zárójel, printf helló vesszővel világon, backslash n, pontosvessző, mentése, kész.
OKÉ.
Írtam az első program, de ez meg fog
hogy hihetetlenül underwhelmed mert amikor ténylegesen
futtatni ezt a programot, persze, az első írás, hogy hello,
majd dot perjel hello, és mi végig ezt sokkal részletesebben
Egy pillanat, ez minden, hogy nem.
Nem kinyílik minden ablakot.
Nem csinál semmit különösen divatos.
Csak annyit tesz, amit mondtam, hogy csinálni, de hogyan jutunk hozzá?
És hogyan épít, hogy?
Nos, nézzük tegyünk néhány különböző fogalom itt.
>> Tehát az egyik, mi vagyunk az indulásra segítségével a program neve egy fordító.
A fordító létezik a Mac OS, Windows, Linux, tetszőleges számú operációs rendszerek,
és mi hamarosan bevezetni, ha az környezetben fogjuk használni,
de a fordító csak egy általános kifejezés egy szoftver
vevő forráskódot és termel tárgykód belőle.
Más szavakkal, ha Van input a forrás
kódot, olyasmi, mint amit csak gépelt, Végső soron termel tárgykód.
És tárgykód tényleg csak divatos módja mondván, hogy kiadja
nulla és az ember.
Más szavakkal, forrás kódot, bár ez
fognak nézni egy kicsit misztikus, és egy kicsit kevésbé barátságos
mint Scratch első pillantásra, ez legalább valami
hogy mi, emberek is megértsék.
Ez a fajta néz ki, és úgy hangzik, mint Angol bár ez igen szűkszavú.
Mivel programozás nulla és az ember, mint elődeink kellett csinálni,
Néhány évvel ezelőtt, nem volt Különösen jó kihívás.
És mégis, ez az, amit a számítógép még mindig érti.
Tehát fordító kapja meg minket forráskód tiltakozni kódot.
Ez olyan, mint egy fájl megnyitásakor a fordító, és amikor menteni,
szerezted azokat nullák.
Szóval majd meglátjuk, hogyan kell csinálni hogy csak egy pillanatra.
>> De nézzük most megpróbálunk egy hidat a múlt héten, és ez,
így még akkor is kap letette a dolgok, mint kapcsoszárójele,
és a pontosvessző, és zárójelben, és az összes ilyen intellektuálisan érdekes
szempontokat a programozás, hogy nagyon Érthető utazás emberek korán,
észre, hogy az összes ötletet Ma, jelentése ugyanaz, mint az utolsó.
Így a múlt, láttuk ezt a példát Itt, Hello World programban.
Nos, a mai naptól, ha azt akarjuk, végrehajtásához, hogy ugyanaz a program,
ez meg fog látszani kicsit valami ilyesmi.
És mi magyarázza nemsokára mi int, és a fő, és semmis, és minden,
van, de legalább látok itt Már az ismerős Hello World.
>> Közben ilyeneket funkciót, köszönni,
nagyon egyszerűen megy, hogy egy Nagyon egyszerű nyilatkozatot, mint ez.
Printf hello world, némi idézi, egy backslash,
pontosvessző, de bővebben jönni.
Hurkok, eközben ez egy hurok, hogy Persze, mondja hello world örökre,
és ez fog kinézni a kicsit furcsább, mint a legutóbbi,
de ha azt mondom, valami szerű, míg igaz, én
Ezután nyomtassa ki Helló világ újra és újra és újra és újra.
És akkor, mint te kedves A kezdeni következtetni itt,
Ennek az egyezménynek a kapcsoszárójele kedves
hasonló felölelő tagolt kódsort van.
A printf kódsort hasonlóan a sárga puzzle-darab fölé.
Szóval nem fogunk mondani örökre, fogjuk mondani, miközben igaz,
de majd meglátjuk, hogy miért van csak egy kicsit.
>> Közben, ha van egy hurok, mint ez, ahol ismételje valami véges
számú alkalommal, ez is ez megy, hogy egy kicsit szokni
, de ez meg fog mondani az int i jelentkeznek nulla, i kevesebb, mint 10, i ++,
majd printf újra.
De lesz mintákat.
És azoknak, ismerős AP Computer Science, vagy a Java,
vagy akárhány más nyelveken, Szinte minden ilyen konstrukciók
Eddig kell nézni többnyire ismerős.
>> Szóval változó.
Tehát itt egy egyszerű Scratch részlet, hogy állítja egy változó nevű nullára,
majd örökre szól az ellen, és majd módosítja a számláló eggyel.
Tehát nullával kezdődik, majd egy, kettő, három.
Nos, hogyan lehet bemutatjuk, hogy a ez az új nyelv, egy kicsit hasonló?
Int számláló értéke nulla, míg igaz, ami
az, hogy ugyanaz az ötlet elől csinál valamit örökre,
és én csak fog printf.
És most már kezd egy kicsit furcsa, százalékkal i, de erről bővebben jönni,
de ezek az elképzelések pontosan ugyanaz.
Csak most, hogy tartsák be a szintaxis, hogy a számítógép
fog követelni tőlünk.
>> Logikai kifejezést, valami ilyesmi sx kevesebb, mint Y, vagy x kisebb, mint Y,
és y kevesebb, mint z.
Meg fog nézni egy kicsit valamit mint ez, csak zárójelben
mint a matematika jó intézkedés, hogy csak arról, hogy a műveletek sorrendjét
olyan kívánunk.
És most, feltételeit.
Tehát, ha x kisebb mint y, mondjuk x kisebb mint Y, mást, ha x nagyobb, mint Y,
mondjuk x nagyobb, mint Y, egyébként logikusan, x egyenlőnek kell lennie y.
Szóval lehet, hogy végre ilyet Scratch,
vagy lehet, hogy végre ebben a szintaxis.
És ismét, a kapcsos zárójelek fajta ami nekünk ugyanolyan alakú, mint a puzzle
darab, de a szintaxis, most, talán kezdve követni néhány mintát.
>> Szóval, mit jelent ez nekünk itt?
Úgyhogy majd vissza a mi fő program.
Nézzük valóban, most, vele valamit.
Tehát ebben a legelső sorban látunk éles közé,
standard I / O, pont h, és majd néhány furcsa szögben
zárójelben alatta. int main void, majd printf hello world.
Tehát csak egy lépést.
Valaki, aki soha nem programozott előtt, Legalább magyarázza az egyik ilyen vonalak.
Segítségével talán néhányan szaknyelvben az elmúlt héten.
Mi printf például?
Igen.
>> Közönség: [hallható]
>> David J. MALAN: Igen.
Ez egy funkciót, vagy egy nyilatkozatot, a múlt heti terminológiát.
És ez egy akció hogy csinál valamit.
Most ezt a funkciót, vagy ez a kijelentés, nem
úgy tűnik, hogy valamilyen input?
És mi értelme van Úgy tűnik, hogy a bemenet, ha igen?
Bemenet, mit értek ez alatt?
Igen.
>> Közönség: [hallható]
David J. MALAN: Igen.
Tehát kihúz néhány puzzle-darabokat ahol parametrize meg.
Meg tudná mondani az ismétlés blokkolja hányszor ismételje meg,
úgy, hogy volt egy bemenetére fajta, és mint Scratch
Volt egy kis fehér helykitöltő A szám azt írja,
Mi is tudjuk használni ebben az szöveget világ zárójelben
hogy nekünk, hogy kör alakú, amibe mi is dugja a bemenet.
Végtére is, tíz évvel ezelőtt ha ez a nyelv, az úgynevezett C,
találták senki várható, hogy ez egy közülünk,
Ezek néhány évvel később, mi lenne szeretnénk, hogy a funkció köszön.
Jobb?
Jó lenne, ha lenne egy puzzle-darab, vagy egy kulcs szó,
hogy hívják hello, hogy szó szerint csak köszön.
De nem kell, hogy.
Mi lehet valami sokkal alacsonyabb szinten, mint egy általános nyomtatási
parancsot, hogy vesz bemenet, és kiírja, amit csak akarunk.
Tehát észre őt a minta hogy kezd kialakulni.
Nyílt zárójel, közel zárójel van láthatóan magába a bemeneti,
és akkor látom a kettős idézi a két végét.
Még mindig fura fordított perjel n, de remélhetőleg most
lehet kezdeni elképzelni, hogy legalább printf vesz valamilyen formában a bemenet.
Nem olyan felhasználóbarát, mint Karcolja, de ez csak
mintha dugva valamilyen érték van.
>> Rendben, most nézzük ténylegesen Csinálj vele valamit.
Így néhányan talán tudják, miután vásárolt az osztály előtt,
beszélgetett barátaival, hogy sok éven
szoktuk úgynevezett A CS50 készüléket.
Ez olyan kifejezés, amely leírja a technológia úgynevezett virtuális gép, amely
egy olyan szoftver, amely a elődei lenne letölteni le
A kurzus honlapján ingyenesen.
Ők is letölthető egy ingyenes darab A szoftver úgynevezett hypervisor,
úgynevezett mint a VMware, vagy VirtualBox, vagy akárhány
Más eszközök, valamint a saját Mac vagy PC vagy bármi számítógép voltak az elmúlt évben
és az elmúlt években, úgy megduplázódik kattintson egy ikonra
A szoftver futtatásához az úgynevezett hypervisor.
És majd belülről, hogy a program akkor nyissa meg a CS50 készüléket.
És a hatás az volt, hogy hogy elődje tiéd
futó Mac OS vagy A Windows, ő majd
Ezt követően volt egy új ablak a képernyőn futó CS50 környezetét.
Tehát egy virtuális gép futtathat egy operációs rendszer belsejében egy másik,
és hogy pontosan mit csináltunk.
Szinte a teljes persze olyan operációs rendszert használ úgynevezett
Linux, konkrétan Ubuntu Linux, és ez a
egy nagyon szép módja az elmúlt években a ügyelve arra, hogy mindenki a tanfolyam
Csak volt ugyanabban a környezetben.
És tudod használni bármilyen számítógépen, amit valóban szeretne.
Között a hátulütői, bár, voltak olyan volt, mintha két gigabájt
Töltse le ezt a dolgot.
Nem feltétlenül működik szuper jól emberek, akiknek a gépén, hogy talán csak
Volt egy koncert, vagy úgy RAM, vagy nem Túl sok gigahertzes CPU sebességét,
és így ebben az évben, a Ezen és más okok miatt,
lettünk átállás hogy ebben a környezetben.
Az úgynevezett CS50 IDE, amely a nyílt forráskódú szoftverek,
és egy támogatott platformra hogy egy cég, a Cloud9
támogatja Európában, hogy lehetővé teszi számunkra, hogy lényegében
hogy pontosan ugyanabban a környezetben, mint a az elmúlt években, de az úgynevezett felhő.
>> Tehát mi a felhő?
Valószínűleg már kattintott az ikonját a Mac vagy PC.
Mi a felhő?
Igen?
Egy kicsit hangosabban.
Igen.
Ez csak egy rakás számítógépek máshol, hogy az adatok tárolására és fuss
szoftver és hasonlók.
Szóval ez tényleg csak a szót de jure leírására [? bérelhető?]
számítógépek máshol éljen.
Hogy te magad Nem feltétlenül a tulajdonosa.
Tehát, ha az adatok, illetve a programok, amelyek a felhő,
ez csak azt jelenti, hogy valaki más számítógépek máshol,
és nem a legvalószínűbb, a fizikai laptop vagy asztali.
És ez az, amit CS50 IDE most.
>> Ezentúl akkor menjen egy bizonyos URL, hogy mutassam be
hogy, a probléma készlet 1, később ezt héten, hogy lesz majd, után bejelentkezik,
Önnek ebben a környezetben.
És ugyanúgy, mint Scratch volt néhány különböző panelek részt,
így nem CS50 IDE van, hogy pontosan.
A bal felső sarkában van, akkor elmegy egy ismerős fájl böngésző.
Így azok a fájlok, hogy ebbe a környezetbe
csak fog szerepelni ott.
A fájlok és mappák.
A jobb felső sarokban van, fogsz látni egy helyen
ahol ténylegesen írni a kódot.
Kezdetben a C, később a távon a PHP és JavaScript,
és talán az utolsó projektek, Ruby és a Java vagy Python
vagy akárhány nyelv támogatott ebben a környezetben.
Ez egyáltalán nem kötötte hogy CS50 konkrétan.
>> Majd a jobb alsó sarokban van, különösen azok számára kényelmesebb,
Van valami úgynevezett terminál ablakot.
És ez a terminál ablak lehetővé hogy semmilyen parancsot végrehajtani, hogy
szeretnénk ebben a felhő környezetben.
Ez lehetővé teszi, hogy telepíteni további szoftverek
hogy szeretné, mert már az úgynevezett gyökér, vagy rendszergazdai jogosultságokkal.
Tehát más szavakkal, bár ez a végül adott otthont a felhő,
és bár mi van egyszerűsített azt, hogy bizonyos mértékig
alapértelmezés szerint, a szó szoros értelmében bevezetése, köszönhetően Dan Armendariz, és Dino,
és Dan Bradley CS50 csapata felett már több hónapja, kevésbé komfortos
mód, amely elrejti a sok kezdetben zavaró zavaró.
Minden létezik, hogy képviselnek tipikus számítógépes rendszer
hogy lehet használni a valós világban.
>> Szóval mit is jelent ez, és Mit tehetünk valójában köze hozzá?
Nézzük valóban olyan kandikál a programot.
Így fogok nyitni a aktuális környezet itt,
amely csak a Chrome böngésző, ami lehet a Firefox,
lehet az Internet Explorer, vagy más böngésző is.
Tele árnyékolt itt a pillanat.
És azt akarom, hogy valóban ugratni eltekintve, mi ez a program.
Szóval vessünk egy pillantást, a nagyítást fel Felső, amit tettem, és hogyan kerültem ide.
Tehát itt az egzakt ugyanolyan sornyi kódot.
Szóval ez a kijelentés, ahogy korábban említettem.
A funkció, amely köszön.
A kapcsos zárójelek, a soros, négyhengeres, és soros hathengeres,
feltehetően a fajta boríték hogy ezt a vezetéket asszociál
A lényege az én programom.
Tehát valóban, ez a kulcsszó fő, ez ott a sorban három,
lehet gondolni, hogy az egyenértékű Az, hogy amikor a zöld zászlót kattintott,
blokkolja a Scratch.
Szóval ez minden van itt, amikor zöld zászló kattintott, nyomtatás, vagy mondjuk,
Helló Világ.
>> De vessünk egy találgatás, most, hogy mi Az első, több misztikus vonalat, van.
Sharp közé, nyitott szögletes konzol, standard I / O pont h,
zárja szögletes zárójel.
Mi az, hogy talán csinál, főleg, ha már programozott
előtt valamilyen más nyelven.
Igen?
>> Közönség: [hallható]
David J. MALAN: Igen.
Pontosan.
Szóval ez is hozzáférést biztosít a könyvtár, hogy úgy mondjam, a funkciók.
És könyvtár funkciócsoportja funkciók, hogy valaki más
írta, vagy a közelmúltban vagy olyan régen, úgy, hogy
Nem kell újra feltalálni a kereket.
Például, mi nem Tudnunk kell, 2015-ben,
hogyan kell írni a kódot, hogy hozza egy karaktert a képernyő.
Valaki rájött, hogy ki a printf függvény
így én is rendezni az absztrakt re, hogy vagy réteg
tetején ő kódot, és most csak úgy
biztosra, hogy minden program írok tud nyomtatni valamit a képernyőn.
Tehát ez első sorban ott az első lépésben tartalmazza az úgynevezett header fájlt
A standard könyvtár.
Tehát látni, azt a nyelvet, ami most azon dolgozunk,
Volt egy standard könyvtár A rengeteg funkcióval rendelkezik.
Printf az egyik ezek közül, és hogy az első kódsor
azt jelenti, hogy nekem hozzáférést azok a funkciók, így én
Nem kell újra feltalálni a kerék.
>> Most menjünk az alsó ablakban és pontosan mit tettem, mielőtt.
Egy pillanattal ezelőtt, amikor én voltam whizzing át a kódot,
gépelés ki először, Én nagyon gyorsan gépelt, hogy helló.
Mi volt ez az egész azt hiszem?
Mit csinálok?
Igen?
Nem fontos.
Oké.
Igen.
Közönség: fordítanunk.
David J. MALAN: Igen.
Ez csak úgy fordítják le.
Jobb?
Még ha ez teljesen ismeretlen neked, ez elég English hasonlók.
Ez természetesen nem nullák és azok, így még mindig
kell lefuttatni, hogy az úgynevezett program, a fordító, hogy fog
hogy azt a bemeneti és kimeneti termel.
És legalábbis egyelőre, a ez a Linux környezetben,
de ez nem előfeltétele, ez csak hol kezdjük,
Ön általában kölcsönhatásba számítógépes rendszerek, mint ez
egy úgynevezett parancssor.
Tehát egy villogó azonnali és a billentyűzet,
és nem is annyira az egér, és nem annyira ablakok és ikonok és menük,
hanem minden szöveges.
És bár ez úgy érzi, az első pillantásra talán, mint egy lépést hátra,
ez valójában egy sokkal erős és kifejező módon
vezérlésére számítógép különösen akkor,
magát, egyre Kényelmes kevesebb.
Meg fog lehetővé teszi, hogy nem sok több dolgot, mint amit a Microsoft
vagy az Apple lehetővé teszi, hogy köze a grafikus operációs rendszert.
>> Tehát amikor elütöttem Enter, most, semmi nem történik ebben az időben
mert látszólag a programot helló naprakész.
És mi volt a parancs Futottam utána?
Dot perjel hello, és hello world.
Most vessünk egy lépésben vissza egy pillanatra.
Kiderül, hogy győződjön helló csak egy egyszerűsített módon, hogy összeállítsák a programot.
Nézzük csak bemutatva Egy darab zsargont,
de toljuk el, belőle, mivel ez nem
olyan érdekes a mai célra.
A fordító fogunk kezdi el használni az úgynevezett csenget, a C nyelvet.
És ez egy olyan program, ami fut, mint tettük azt a parancssorban van.
És így, ha akarok állítson össze egy programot, hogy én
írtak egy fájl neve hello dot c, én szó szerint csak írja csengés helló c
adja.
>> A vicces az, történelmi okokból,
ha nem adja meg a A program neve
hogy szeretnék kimenet, ha nem adja meg a fájl nevét azoknak nullák
és azok, nagyon fura egyezményt elfogadó évvel ezelőtt
amikor úgy éreztem, egyfajta jó válasz abban az időben,
jól nézzük csak önkényesen hívja a első program állítunk össze dot ki.
Egy előbb az ábécében.
Ki, ez a kimenet.
Így fogjuk hívni a programot alapértelmezés szerint egy pont ki.
És ez rendben van, mert ha azt akarom, hogy A program futtatásához ebben a szövegben alapú
környezetben, csak írja dot perjel egy pont ki adja.
És ez állna pontosan, mint azelőtt.
Nézzük, hogy nagyon gyorsan.
>> Tehát, ha megyek vissza a forráskód CS50 IDE,
és én inkább ezt, csengés helló gyermekágy c írja, észre semmi sem történne,
de szinte mindig ez a Linux környezetben,
amikor semmi rossz sem történik, hogy azt jelenti, valami jó is történt.
Ha nem látja a hibát üzenetet, minden bizonnyal jól.
És valóban, ha én most nem pont perjel egy pont ki adja, amit futtatni a ugyanazt a programot.
Még mindig megvan a Hello programban A korábbi, mert valójában,
lesz sokkal szebb most írja, hogy ahelyett, emlékezve
Ezek varázsigét a parancsokat, de lássuk, hogyan
javulhat erre, mégis.
>> Szóval, ez a parancs hogy összeállítja a kódot.
Ez a parancs futtatásához A lefordított kód követően.
Hogyan adja meg a fájl nevét?
Nos nézzük csak bevezetni még egy darab zsargon.
Ha ebben a szöveges környezetben indul el,
fogsz szeretne megadni dolgokat az úgynevezett parancssori paramétereket.
Ami csak egy divatos szóval, Más szóval a figyelmeztetés
csípés a viselkedését bármilyen programot futtat.
Tehát konkrétan a program vagyok futás, beírja a nevét csengés,
a program neve csenget.
Szóval ez vagy a régi iskola megfelelője dupla kattintással
A Microsoft Word vagy Néhány program ikonja.
Én inkább csak beírjuk a nevét, de ez a verzió a parancsot,
Én majd kötőjel o teret Hello helyet Hello dot c.
Tehát akkor is, ha soha nem játszott ebben a világban korábban,
Csak egy tipp, amit nem dash o Hello csinálni?
Vagy mit mondani csengés csinálni?
Igen.
>> Közönség: [hallható]
David J. MALAN: Igen.
Ez csak beállítja a fájl kimenete is Hello helyett a butább egy pont ki.
És valóban, próbáljuk meg.
Tehát ha én most nem először csináljuk ezt, r m helló.
Ez eltávolítani.
És ez meg fog mondani eltávolítás Rendszeres fájl hello, amely
szükségtelenül bonyolult, de ez csak úton akarsz törölni a fájlt,
és az I. típusú Y igen.
És észre, ha arra pillantva tetejére hagyta, hogy egyáltalán eltűnnek ott.
Hadd most nem csenget kötőjel o, és Én megyek előre, és nem hello,
minden sapkák, helló pont c.
Most, ha én pont perjel hello, mit vársz?
>> Lehet, hogy ez a kis- és nagybetűk.
Talán nem.
Lássuk.
Nincs ilyen fájl vagy könyvtár.
És mi lehet a fajta csalnak csak néztem a bal felső sarokban.
Mit tettem nyilván menteni a programot?
Minden sapkák helló.
Tehát valóban, ez megy hogy a különbséget.
Tehát most hello world visszatért.
Most ez mind szép és jó, és minden nagyon zsibbasztó,
hogy egyfajta megreked ezen részleteket, de megértésükhöz
ez jó.
>> Gépelési ki ezeket egyre inkább hosszú varázsigét
Nem lesz különösen szórakoztató, hogy az emberek a világon
kitalált egy másik program, Néhány évvel ezelőtt, az úgynevezett
hogy, hogy egész egyszerűen lehetővé teszi a típus make,
A program neve azt szeretnénk, hogy győződjön meg, és hogy
okos, hogy fog kinézni Az aktuális mappában aka könyvtárat,
és ha van egy fájl neve hello dot c,
ez a fájl fogja összeállítani Önnek egy program neve köszön.
Szóval ez egy sokkal egyszerűbb módja Ennek a több rejtélyes parancsokat
hogy mi volt korábban.
És mi van előre beállítva CS50 IDE tudni
hogy meg kell csinálni kötőjel o és számos Más zászlók, illetve parancssori
hogy majd meglátjuk nemsokára.
>> De nézzük most ténylegesen valami érdekesebb.
Csak gépelés hello world összes Az idő nem olyan vonzó.
Szóval hadd menjen előre, és a változás ez a program, és azt mondják, helló David.
Most fogok lemenni itt.
Én megyek előre, és nem teszik helló.
És most megint látsz hogy az mutatja meg a már
parancsokat, hogy ez az csinál, mert mi már előre konfigurált
ez így, de nem kell aggódni most
mit csinál a többi, mint az, összeállítása dot perjel hello, hello world.
Mi a baj?
Igen.
>> Közönség: [hallható]
>> David J. MALAN: Igen.
Szóval, noobie hiba.
Úgy vettem észre, ez szuper finom, de a csillag itt, a fül,
csak azt jelenti, hogy nem mentette meg, és a böngészők és egyéb programok
Ehhez néha.
Tehát ellenőrző s, vagy parancsot s meg kell menteni.
Most hadd menjen előre és újra futtatni a programot.
Fordítanod.
Jobb, így ez egy többlépcsős folyamat.
Amelyek közül egyik sem különösen összetett, de minden alkalommal, amikor változtatni a fájl,
meg kell változtatni az ebből eredő nullák, és a pont perjel helló.
Azta.
Tehát ez nagyon underwhelming hogy mi csak nyomtatott ki ezt.
Nézzük a dolgok egy kicsit dinamikusabb, most.
>> Nos kiderült, hogy tetszik Scratch, C támogatja változók.
És kiderül, ha azt szeretné, hogy egy változó, üzletek,
nem szám, mint mi jellemzően nem a semmiből,
de mint egy szó, vagy egy kifejezést, vagy egy nevet, akkor
megadhat egy változót hogy string típusú.
Szóval majd meglátjuk több Ezek csak egy pillanatra,
de kiderül, hogy a C és sok nyelven tetszik,
nagyon különleges típusú változók.
Ez nem csak tetszik algebra, ahol kapsz egy x, a y és z
És ezek csak mindig szám, egy programozási nyelv
tárolhat számokat, akkor tárolja az egyéni karakter,
eltárolhatja egész szavakat, amit lehetett tárolja az egész képet, egész hangfájlokat,
és a hasonlók.
Tehát meg kell határozni, hogy mi a típus a mi változó.
És megegyezés alapján fogom hívni a változó s csak azért, mert tömör,
és s értéke karakterlánc.
>> És akkor fogok tárolni belsejében ez változó,
Csakúgy, mint a Scratch ha használom a set block,
Én fogom használni a értékadó operátor a C,
amely szépen elég az egyenlő aláírni, de az egyenlőségjel ez.
Mozog valamit a jobbra a bal oldali a kifejezést.
Szóval, mit tettem, hogy világosan ötös vonalon, az én nyilvánították változó.
Elmondtam a számítógépet, adj memória változó, nevezzük s,
és előre tudni, hogy megyek kell üzembe egy string benne.
És egy string csak egy karakterek sorozata.
Ez a szó vagy kifejezés vagy bekezdés, de ez egy karaktersorozat.
Ez nem a számok.
Milyen húr vagyok én lesz üzembe helyezését, amely változó?
Nos, úgy tűnik árajánlatot idézőjel bezárva, "Hannah".
Most észre a minta, ami kialakulóban.
Van egy bal oldali kifejezés.
Van egy jobb oldali kifejezés, elválasztva az egyenlőségjel.
És csak akkor gondolom, ha ismerik ennek ellenére,
azzal, amit a pontosvessző csinál.
Mi ez feltehetően tesz értünk?
Igen?
>> Közönség: [hallható]
>> David J. MALAN: Igen.
Ez csak megszüntetéséről a sor.
Jobb?
A számítógépek szeretné, hogy kertelés nélkül Mondtam, szó, mi a teendő.
Mint a mogyoróvajat és zselés szendvics például
ha nem adja meg Pontosan mit szándékozik,
ez lehet bízni ítélet vagy hiba.
A pontosvessző azt jelenti, ez az a parancs.
Ez hogy szuper precíz, és ez egy nagyon egyszerű dolog, hogy hagyja ki.
Tehát most ez a program nem tűnik kell viselkedik másként, amíg nem
modell dinamizálása.
Tehát ahelyett, nehéz lehet a saját Íme, hadd tegye a helykitöltő értéket.
És kiderül, hogy, és tudom, ez attól, olvasd el a dokumentációt,
és használta a funkciót évekig, hogy printf úgy tervezték, hogy dinamikus.
Nem kell előre tudni, milyen szavakat szeretne tenni benne.
Akkor inkább egy helykitöltő, mint a százalék s, amely
elmondja a számítógép, hogy egy húr van.
>> Melyik karakterláncot akarunk tenni ott?
Will kiderül, hogy ezek között zárójelben, amely emlékszik, elhatárolják
A bemenetet egy funkciót, ha vesszővel elválasztva dolog van,
mi ténylegesen át több bemenetek függvényében.
Tehát csak egy kis karcolás blokkok, talán nem
már játszott velük Várhatóan még, vagy egyáltalán,
Néhány Scratch blokkok két bemenete.
Két fehér dobozokban lehet számok begépelése vagy szót.
Tehát nem úgy működik, mint C van printf, hogy lehet, hogy két bemenettel.
És megint, ez a vessző elválasztja őket.
Tehát az angol, akkor is, ha újra még soha nem programozott előtt,
az, hogy a logika printf függvény, úgy két bemenet, amelyek közül az egyik
helyőrzője, mit remélsz printf fog tenni ezzel a bemenettel?
Meg fog köszönni Hannah, remélhetőleg.
Így kell ezt csinálni meg kell menteni.
Megyek kicsinyíteni.
Én megyek vissza ide és azt mondják, hogy helló be.
Ó.
Valami nem stimmel, és ténylegesen ez elég nyomasztó.
Én hat sornyi kódot és mint a 12 sor hibákat.
Szóval, várom, hogy ezt.
Szóval, mi folyik itt?
Tehát a legjobb ökölszabály, különösen, ha kezdő,
nem kap elterelte A dolog az alján.
Ami azt illeti, nagyon tudatosan Csak felfele
mert gyakran egy számítógép nem olyan fényes a készüléket.
Ez lesz összezavarodnak.
Ha úgy látja, egy dolog, hogy hogy nem érti,
talán tévedés egyéb sornyi kódot, helytelen,
annak ellenére, hogy tökéletesen megfelel.
Így mindig akar dolgozni fentről lefelé végig a hibákat.
És ugyan ez szuper misztikus abban a pillanatban.
>> Hiba, a be nem jelentett azonosító karakterlánc.
Vajon Mármint szabvány?
Nem, úgy értettem, húr.
És ez mutatva, talán ez egy elírás.
Valahogy úgy, mint, helyesírás-ellenőrző egy nagyon geeky módon, de az ok itt,
és tudni fogod ezt csak a gyakorlatban,
hogy kiderül, hogy a húr nem létezik a C. Tény, C
egy különösen régi nyelv, és ez nagyon alacsony,
És ez nem egy csomó funkciók hogy lehet, hogy nőttek fel
a ha, sőt, programozott Java, mint néhány van,
de lehet tanítani, hogy új dolgokat.
És valóban, mi tette ezt CS50, annak ellenére, hogy a végén a félév,
az összes ilyen képzés kerekek majd lekerültek,
amit csinálunk ezeken első pár hét
kezdetben mi is Ön közé CS50 dot h.
Ami egy header fájlt.
Több az, hogy a jövőben.
>> Ez egy fájlt, amely funkciók hogy már írt neked.
És azok között függvények funkciók egyre bemenet
a felhasználó, mint a húrok, és szám, és a valós számok, és így tovább.
De ez is egy pár hivatkozások.
Ez határozza meg a logikai, mint az adatok típusát.
C nem igaz, vagy hamis.
De tudjuk, hogy ez a fogalom igaz vagy hamis útján ezt a könyvtárat.
És ez is nem egy string beépített amíg ezt a sort.
Tehát ezt a kódsort mondja a fordító, hé, csenget, nézd
Ebben a fájlban egy egész csomó kód, amely CS50
úgy megírni, hogy valaki használ erre a képre
lehet magától értetődőnek a jellemzői ők már hozzá.
>> Tehát most hadd menjen előre és törölje a képernyőt,
és ha kíváncsi Csak azt mondom szabályozás l minden egyes alkalommal, hogy törölje a képernyőt,
vagy beírhatja egyértelmű.
Csak megyek, hogy menjen előre, és most típusú teszik hello, és minden rendben van.
Még egy misztikus kimenet, de ez nem hibás üzenet.
Most, ha én pont perjel hello, és mint félretéve, pont perjel az ismeretlen a legtöbb.
Ez csak azt jelenti, pont úton Az aktuális könyvtárban.
Tehát, ha valaha is használt DOS vagy Linux vagy Unix
lehet, hogy tettek valamit mint a cd dot dot, ahol
dot dot jelent menjen hátra időt, vagy megy hátra, vagy feljebb
a könyvtárban.
Dot csak azt jelenti, nézz Az aktuális könyvtárban.
Azt akarom, hello, ami itt van.
És valóban, most már köszön Hannah.
És ha én változtassa meg újra Maria, újrafordítani
ez lenne hello, pont perjel hello, a program folyamatosan változik.
>> De ez még mindig egy elég hülye programot.
Ha azt szeretnénk, hogy a hajó a program, vagy hogy ez egy barátjának,
vagy add oda Maria vagy Hannah ami azt illeti, ez rendben van.
Én szabhatja meg mind a kettőt, de ez soha nem lesz dinamikus.
Nem tudnak változtatni, ha ez össze le azokat a nullák.
Szóval mit tettünk valamit okosabb?
Mi lenne, ha ahelyett, hogy keményen kódolás a programban ennek a személynek a nevét,
mi lenne, ha csak kap a húr igény?
>> Más szóval, hadd tegye ezt.
Megyek újrafordítani a programot.
És hadd nagyítani a képernyő alján.
Tedd Hello dot perjel helló.
Most semmi sem történik.
Kaphatunk egy gyors önkéntes hogy történjen valami?
Gyere fel.
Mi a neved?
>> PANCHO: Pancho.
>> David J. MALAN: Pacho?
Gyere fel.
Ha egyszer kap itt, ez lesz nagyon underwhelming,
de ez sokkal érdekesebb nálam beírásával.
Ha azt szeretnénk, hogy menjen előre, és adja meg név, tettem ezt a programot csak az Ön számára.
Csak írja be a nevét.
Írja be.
Csodálatos.
Rendben, nagyon köszönöm.
>> PANCHO: Köszönöm szépen.
>> David J. MALAN: OK.
>> [Taps]
>> Ez nagyon kedves.
Tessék.
Mit tegyünk?
Így végül, legalábbis, tette ezt a programot dinamikus.
Most ez akkor is biztosan by design underwhelming,
de végre megvan a képessége, Most kódot írni előre, mennyi
mint a szerzők printf, majd dinamikusan
alkalmazkodni alapján a bemeneti vagyunk átadta, sem a programozó,
vagy az ember, aki valójában kölcsönhatásban áll a program.
Úgyhogy tulajdonképpen most próbálja hogy csinál egy pár többi konstrukció
és nézd meg, nem tudjuk, hogy a programok magukat kifinomultabb.
Szóval menjünk előre, és ahelyett, írásban ezt a semmiből,
Én megyek a mai forráskódot, és mindez
elérhető a tanfolyam honlapján, és akkor fogd és vidd azt
a saját környezetvédelem jöjjön péntek egyszer probléma
szett 1 adja a utasításokat, vagy ha lehet
csináld meg a parancssorból is, de tovább bővül az o set 1.
>> Lássuk, mi van ebben a programban Itt nevezett, vipera dot c.
Most már kommentálta , de mi újság?
Első pillantásra, milyen irányvonalat A kód teljesen új?
Valószínűleg nem alapvetően ismerik őt.
>> Közönség: [hallható]
David J. MALAN: Igen, így int x = kap n.
Még sosem láttam olyan e korábban, de int valószínűleg
szimbóluma, milyen változó, [? re?] egész.
Tehát int az egész.
Ez csak, hogy több szűkszavú. x csak önkényes.
x és y és z mindig Eléggé ésszerű a számok,
de általában fogjuk használni szavak egyszer Programjaink kap bonyolultabb.
Get int, persze, ugyanúgy, mint A string,
valószínűleg meg is fog int a felhasználó,
majd megyünk ugyanezt csinálja y.
És látszólag, bár ez a utolsó sorban, 24, úgy néz ki, sokkal összetettebb,
ez meg fog mondani az összeg ennek és ez a másik dolog.
>> És észre százalékkal i Valószínűleg jelöli mi?
Milyen szerepet százalék i látszólag szolgálja?
Ez csak helykitöltő.
Jobb?
Százalékos s volt karakterlánc, százalékkal i integer.
Ott lesz százalékkal f lebegőpontos érték, amely
csak egy szám egy tizedes pontossággal.
Más szóval, egy valós szám.
Úgyhogy tulajdonképpen fordítani ezt programozni igazi böjt, és nem teszik meg vipera.
Hoppá.
Jó lehetőséget.
Tehát itt megjegyezni, ennyi idő a használati a fiók nevét is jharvard.
Én vagyok a CS50 IDE, aka IDE50.
És most itt van kék, egy említést, de a környezetet, hogy hol vagyok.
És valóban, ha zoom fel a csúcsra Itt megjegyezzük, hogy van egy IDE50
és látom ezt a szót, ha a fajta fordítsa el a fejét, hogy az oldalán, munkaterület.
Röviden összefoglalva, az a tény, hogy Látok hullámvonal perjel munkaterület
azt jelenti, hogy ebben a szövegben alapú parancsot környezetben,
Én vagyok a szövegben megfelelője Ez a grafikus mappa itt.
Tehát amikor én pont perjel vipera, ez mondván nincs szabály
hogy cél a kiegészítés stop.
Nem tudom, hogy ez mit jelent, de ez rossz valamiért.
Nincs ilyen fájl vagy könyvtár még inkább nyilvánvaló.
Hol van hát?
Alapul, ahol rákattintottam a fájl megnyitásához korábban.
Hol lehet ez?
>> Ez valószínűleg a forrás egy w, szerda,
és látom, sőt, ha kinyitom, hogy akár.
Van összeadó dot C, de ez a szöveg-alapú környezetben,
újra kell lennem szuper explicit.
Ha meg akarom változtatni a könyvtárakat be forrás egy szerdán azt kell begépelnie,
cd térforrás egy Szerda be és most
én azonnali változtatásokat adj egy látjel, hogy
Én vagyok, sőt, máshol a környezetemben,
de most megcsináljuk vipera, úgy tűnik, működik,
dot perjel vipera, adj egy egész szám.
Egy.
Kettő.
Az összeget az egy és két három.
De ha én nem működnek együtt, lássuk, mit fog int csinál.
Adj nekem egy egész szám.
Nem.
Próbálja újra.
OKÉ.
Finom.
50.
Minden rendben.
Így végül együttműködik.
És ez néhány alkalmassága, hogy ezek a funkciók
lehet építettek be az Ön számára.
>> Tehát belülről végrehajtásáról Az, hogy int, milyen programozási
építeni a múlt héten valószínűleg a ott, hogy kényszerítsék ezt a viselkedést az újrakezdés,
újra, újra?
Igen, ott valószínűleg valamiféle hurok.
Ez fog kinézni szintaktikailag eltér Scratch a blokkok,
de ez valóban mi van benne a fájlt.
És néhány hét múlva fogunk ténylegesen nézd meg a CS50 könyvtár
hogy mi van benne, de van hurok kiszabó, hogy pontosan.
>> Játsszunk egy hülye kis játék itt ezt a fájlt.
Condition Zero dot c.
Mi csak megy általában elkezdi mérni nulla.
És tartok görgetés idő néhány dolgot a tetején.
Kék itt, körülhatárolt minden a csillagok és a osztásjeleket,
Azoknak, akik programozni előtt, mi az?
Miért ne kihagyom rajta?
Mi?
>> Közönség: Ez egy megjegyzést.
>> David J. MALAN: Igen.
Ez csak egy megjegyzést.
Ez egy megjegyzés az emberre olvasni, hogy a mi esetünkben,
elmondja, hogy mi a neve a fájl van, aki írta, és mit csinál,
így nem kell hogy olvassa el a kódot
tudni, hogy mi ez a fájl szól.
Ez csak egy leírás, de funkcionálisan ez lényegtelen.
És azt is törli a fájlom, és semmilyen káros hatással nincs.
A lédús sorok ezek első két itt, most.
int main void egyenértékű mi, amikor a zöld zászlót kattintott,
így fogunk hagyni, hogy legyen ma, és mi jön vissza,
végül, hogy milyen int és a semmisnek, de most,
észre, mit tettem Itt is, akkor is,
ha van egy sorban megjegyzést, ha van
Egy gondolat a megosztani kívánt egy adott kódsort,
egyezmény C hogy ne csökkentse perjel, majd néhány rövid szóval,
nem egy teljes mondatot, általában nem egy bekezdés,
hogy csak magyarázza, hogy Ön vagy TF, vagy más olvasók vagy kollégáival,
mi a kód csinál.
Tehát ahelyett, meg kell nézni Ebben és ebből arra következtetnek vonalak
Kilenc és 10, ami ezt csinálja, összhangban a nyolc
Átadom neki egy hozzászólást felkéri a felhasználót az egész,
akkor nem kell gondolkodni túl kemény mit vonalak kilenc és 10.
Csak azt tudom, hogy ez az, amit együttesen csinálnak.
>> Hogyan?
Nos, itt van a prompt.
Itt a szerzés a int.
És az előző alapján viselkedését, úgy tűnik, mintha get int
elég okos ahhoz, hogy megbizonyosodjon arról, hogy Az emberi együttműködik, és ad neki
egy egész szám.
De most ezt látjuk.
És ez emlékeztet a Scratch.
Én azt állítva, hogy én vagyok elemezve a felhasználó által megadott,
de kissé pontatlanul.
És ez nyilván C hogyan kifejezzük az, ha mást, fióktelep,
egy villát a közúti, de én mondjuk kissé pontatlanul.
Mi a hiba ebben a programban?
Körülbelül hátrébb?
Igen.
>> Közönség: [hallható] nulla.
>> David J. MALAN: Igen.
Tehát, ha azt írja nulla, nézzük meg Pontosan az esetben, vagy a sarokba esetben,
ha úgy tetszik.
Tehát, ha azt írja nulla, ami a blokkok fog látszólag fogd meg?
Az, ha vagy a más?
Az más, és ez fog mondani, akkor felvette negatív szám.
És valóban, a nulla nem kéne hogy pozitív vagy negatív,
és úgy, hogy lenne hibásan.
Ez lenne a hiba.
Szóval hogyan lehet ezen javítani?
Valaki, aki még soha nem programozott előtt?
Akarod--
>> Közönség: [hallható]
>> David J. MALAN: Befelé?
>> Közönség: [hallható]
>> David J. MALAN: Ó, van?
Valaki, aki még soha nem programozott előtt.
Szeretne próbálja ki magát Ennek a piros póló?
Gyere fel.
Ó, igen, gyere fel, ha nem bánja.
Tehát soha nem programozott előtt, mi a neved?
LAUREN: Lauren.
David J. MALAN: Lauren, minden rendben.
Így javítja a hibát számunkra.
Már nem látta C, feltehetően, és valószínűleg nincs más nyelven.
Tehát erősít ez a program a számunkra.
Örülök, hogy találkoztunk.
Nincs nyomás.
LAUREN: Igen.
>> David J. MALAN: De ismétlem, ha ez a játékra a tervek szerint halad,
A elvihető itt is lehet, csak újra kezdeni
észre szokások és következtethetett meglévő szintaxis
hogyan mást is kifejezni magad, nem szójáték szándékozott, annak érdekében,
elfog néhány további forgatókönyv.
Tehát mi mondunk mást, ha.
printf, jó.
És észre a CS50 IDE és frankly-- IDE
jelentése Integrált Development Environment.
Ez csak egy divatos módja mondván Egy program, amely segít a program.
Ez nem felhasználóbarát ilyeneket amikor írja egy zárójel,
automatikusan megadja neked a másik.
A feltételezés az, hogy te Végül szeretne majd írja, hogy
és ez is megteszi idézetekkel.
>> Szóval, mint a 23.
99% -a az utat oda.
Valaki akar közbeszólni egy tipp?
Hallottam pontosvessző a közönség.
Jó.
Annak érdekében, hogy befejezi ezt.
És most, én csak egy kicsit megdöbbenésére a 21. sort.
Hogyan akarjuk fejezni ezt?
Milyen kérdést akarunk megkérdezni, mit gondolsz?
Így a korábban már feltette a kérdést, ha n értéke nagyobb, mint nulla, ezt.
Mást, csinálni.
Tehát meg kell választani a kérdés itt.
Közönség: [hallható]
David J. MALAN: Jó.
Tehát, ha n értéke nulla.
Kitűnő.
Úgyhogy itt megállni.
Köszönöm szépen, hogy dacolva ezt.
Hadd adjak egy kis jól megérdemelt stressz labda, talán nem.
Így mindjárt ott vagyunk.
Tény, Lauren, ha nem szem előtt tartva, engedjék meg, hogy egy csípés itt,
csak hogy legyen következetes, még amit láttunk Scratch, milyen
akarok csinálni vonalak 21. és 24., csak újra alapú
hogyan csináltuk ezt a Scratch, talán?
>> Közönség: Mozgás fel.
>> David J. MALAN: Igen, mozgassa fel.
Így a más feltétel, a harmadik, vagy negyedik, vagy ötödik, vagy a végső ága,
kell is eljött utána, és ez csak a konvenció,
csak azért, mert ha úgy tetszik.
Szóval kell, hogy a csípés.
És azt kell, hogy tette a kapcsos zárójel vissza ide.
És most, ez a program összeállítása.
Annyira közel, de van Nagyon, nagyon finom bug.
Lássuk, mi történik.
>> Először is, hadd menjen előre és kicsinyítés.
Megyek megy előre, és írja, hogy Condition Zero.
Ó, hazudtam.
Most a fordító valójában nagyon okos.
És én nem igazán értem ez a hibaüzenet.
Használata az eredménye egy hozzárendelési feltételeként zárójelek nélkül,
nyilvánvalóan rossz.
De mit is jelent ez?
>> Hát megint keres minták A kód, amit eddig láttam,
mi a 17. sorban ténylegesen csinál, annak ellenére, Lauren szánt enyhén
különben?
Igen.
>> Közönség: [hallható]
David J. MALAN: Igen.
Úgy emlékszem, az egyenlőségjel, látszólag ahogy korábban is használtam, nem egyenlő.
A feladat, jobbról balra.
Így a 17. sorban abban a pillanatban egy olyan állapot, és ez
kód végrehajtásával belsejében, de ha a kód végrehajtja,
mi történik a nulla értéket?
Mi történik az n értéke?
Egyre nulla.
Tehát, ha n egyre nulla, és újra, mint egy múlt héten,
mi általában azt mondják, hogy a zéró hamis és az igaz,
vagy igen van egy, de nem nulla.
Így igaz és hamis, egy és 0.
Ha n, mint a 17. sor került adott értéke 0, nulla igaz?
Nem.
A definíció szerint nulla hamis.
Ez az egyezmény vagyunk fog ragaszkodnak halad előre.
Így lesz vonalak 18, 19, és 20 valaha jelentkezz most, logikusan?
Nem tudnak.
Tehát a kérdést de nem egészen pontosan,
és akkor nem tudom, ezt, hacsak láttad, a megoldás a C
van, ha azt szeretné, hogy kifejezze egyenlőség, azt mondod, az egyenlők egyenlő.
Tehát egyenlőségjel már felhasználták a feladat, jobbról balra.
Egyenlő egyenlő eszközökkel egyenlő.
És ha igazán akar a fejedben hajlítandó, a JavaScript és a PHP,
van értéke egyenlő az egyenlők, amelyek valami mást jelent összesen,
de mi lesz, hogy nemsokára.
>> Szóval ez egy egyszerű fix, de észre szuper könnyű ezt a hibát,
és aztán csodálkoznak, és a harc percek, ha nem egy óra,
Miért van a kód nem végrehajtó, mint kívánom?
Azért, mert nem szóltál ez pontosan mit jelent.
Szóval ez volt szinte tökéletes, és nagyon jó volt
hogy mi botlott a két kis dolgokat, mert most ha javítani őket,
és én megcsináljuk Condition Zero dot perjel Condition Zero,
Szeretnék egy egész szám kérjük.
Lássuk.
Nem.
Meg fog kényszeríteni, hogy megtegyem.
Tehát 42.
Felvettem egy pozitív szám.
Tehát most Hogyan bizonyítom ez a program helyes?
Ha te matematikus, akkor nem Tényleg ezt bizonyítani próbálgatással,
ugye?
Nem lehet csak bizonyítás Például, de legalább
mint programozó nem vagyunk megpróbálom bebizonyítani most
hogy ez valójában helyes, de talán érdemes
tesztelni néhány reprezentatív esetben.
>> Kipróbáltam 42.
Tudtam kipróbálni 43.
Tudtam kipróbálni 44.
Teszt 45.
Jobb?
De én meg tudom csinálni egy nagyon hosszú idő.
Mi lenne néhány Érdekes esetek kipróbálni?
Közönség: [hallható] nulla.
David J. MALAN: Szóval nulla.
Biztosan.
És jó, megvan ez alkalommal, hála Lauren új kódot.
Mi egy jó ügy, hogy megpróbálja?
Közönség: negatív.
>> David J. MALAN: negatív, és talán valami egy kicsit nagyobb,
így talán negatív 42, de általában, amikor
tesztelés programok halad előre, te
akarnak gondolkodni magadnak, mint amit
azok az alapvető egyes eseteket.
És merem állítani, hogy negatív esetben pozitív eset, és a nulla ügyben
elég sok fordulóban ki ezeket.
Nézzünk egy változata ez mégis.
Feltételek egyet.
Ez egy helyes megoldást, így látni fogod két és online,
ha séta a walkthroughs, általában
növedék ezeket lépésenként, amíg nem mindig a megfelelő megközelítés.
Mi lenne, ha volna megkérdezni két kérdést egyszerre?
>> Hadd nyissa meg ezt helyette.
Nem kapcsolót okokból majd meglátjuk egy másik alkalommal.
Mi az új szintaktikai itt?
Én jelenleg a játékot ahol a számítógép azt mondja
nekem, adj egy egész szám között egy és 10,
és akkor én ítélve a felhasználó által megadott.
Angol alapján A kód itt látsz
kék, mi ez a program csinál?
Közönség: [hallható] felvette Egy kicsi vagy nagy számát.
David J. MALAN: Igen.
Ez csak ítélkező hogy Felvettem egy nagy, illetve közepes,
vagy kis száma alapján egy nagyon önkényes meghatározása kicsi, közepes,
és a nagy itt, de észre a szintaxis, ami új ez.
Nincs kisebb int vagy egyenlő aláírja, vagy nagyobb vagy egyenlő, hogy írja alá,
ahol az egyik, mint a másik, hogy lehet kifejezni, mint a Microsoft Word.
Tehát a programnyelv, jellemzően csak nem két karakter,
egyiket a másik után.
És mit jelent ez valószínűleg képviselnek, és jelet jelet.
Közönség: [hallható]
David J. MALAN: Igen.
Ez csak azt jelenti, és mert Kiderül, hogy a szerzők a C
használt egyetlen jelet, ami azt gondolhatja
tökéletes lenne az a gondolat, és, már felhasználták,
így jelet jelet ténylegesen megragadja az esetben mi valójában akar.
>> Úgyhogy most botlottunk két dolgot.
Hadd menjen előre, és nyit egy.
Valami, ami egy kicsit aggasztó.
Pontatlansággal dot c.
Hadd mutassam be két dolgot itt.
Az egyik, észreveszi, hogy meg tudjuk csinálni matek, mint most, mint korábban, amikor
tettük plusz két szám, x és y.
Mi ez a program nyilvánvalóan csinál?
Már nem nyilatkozott még, és én már bevezetett százalékkal f,
de hamar mondta korábban százalék f jelenti lebegőpontos
értéket, ami valós szám.
Valami egy tizedes pont, amely nem egész szám.
Mit gondol ez a program megpróbálja megmutatni nekem a képernyőn?
Igen?
Közönség: Az eredmény egy több mint 10.
David J. MALAN: Igen.
Mi az eredménye egy osztva 10.
Jobb, mert az összes akkor valószínűleg nőtt fel, tudván, hogy egy több mint 10
az mi?
Igen, ez csak 1/10 vagy 0,1.
Jobb?
Szóval lássuk, mi ez valójában.
Szóval hadd menjen előre, és mentse ezt.
Hadd menjek le ide.
Tedd pontatlanság dot perjel pontatlanság, és értesítést is,
Linux környezetben, akkor nem be kell gépelni ki pontatlanságot és vegye
egész nap.
Általában, ha megnyomjuk a Tab, ez befejezi a gondolat az Ön számára,
alapuló szavakat, amelyek elérhető az aktuális könyvtárban.
OKÉ.
Szóval igazad volt.
Egy osztva 10, sőt, 0,1.
De én egy kicsit furcsa.
És kiderül, printf támogatja bizonyos funkciók
ahol megadhatja több mint Az alapértelmezett számú tizedes jegyre.
Tehát, ha látni akarom 10 decimális pont, amit tehetek százalékkal,
A helykitöltő szimbólum, pont 10, adj 10 tizedes jegyre,
és akkor még lebegőpontos érték, és, mint egy félre,
mi ez a fordított perjel n Látszólag folyamatosan használja?
Kiderült, hogy ez egy szimbóluma egy új sort.
Ez a nagyon explicit módon mondván, hogy a számítógép,
mozgassa a kurzort a következő vonal után kész.
És majd meglátjuk, mi történik ha nem tesszük ezt.
>> Hadd újrafordítani, hogy a pontatlanság.
Most pont perjel pontatlanság.
OKÉ.
Még mindig jobb.
Egy osztva 10.
Most kapok kicsit furcsa, mégis.
Mit tegyek, ha megnézi 20 tizedes rámutat, újrafordítani, futtassa újra,
és mint félre sebesség, akkor is használhatja
A felfelé és lefelé mutató nyilak segítségével lapozhatunk a történelem,
így nem kell tartani beírni ezeket a parancsokat adja.
Huh.
Nem tanultam, hogy az általános iskolában.
Rendben, hadd lásd mint 29 helyen ki.
Lehet, hogy csak a véletlen műve.
Talán a számítógép furcsán viselkedik.
Ez nem egy dolog, igaz?
Csinál valamit determinisztikusán.
Tehát, hogy a pontatlanság.
OK, ez elrontotta.
Szóval mi folyik itt?
>> Tehát nyilvánvalóan a tanár már feküdt
Önnek mindezt ideje oka annak, hogy majd meglátjuk nemsokára.
De nézzük a végén egy másik program.
Ez egy kis program Valaki azt írta néhány évvel ezelőtt,
és ez valóban része egy verseny.
Valójában senki sem ír kód mint ez, és ha igen,
ez stilisztikailag probléma.
De az emberek ezt a kérkedés jogok.
Írni a leginkább zavarba ejtő látszó program
ennek ellenére nem valami érdekes.
És a jegyzet Azt hittem hagyja Ma, mielőtt Colton játszik velünk itt,
az, hogy a program futtatásához, amely, még a csak használ
C ez a szöveg alapú környezetben, megadja nekünk ezt.
A fenébe.
>> [Nevetés]
>> Készenlét.
[Hallhatatlan] c kötőjel l m.
Fogsz látni a mágikus varázsigét, hogy majd meglátjuk nemsokára.
[Hallhatatlan] Rendben.
És most már tudod is, ilyen dolgokat csinálni.
Ez az.
Mert CS50 azt, találkozunk pénteken.
>> [Zenelejátszási]
>> [Taps]