[Zenelejátszási] DAVID MALAN: Hello mindenkinek. Ez CS50 a szuperszakaszon. Hozzárendelt szakaszok nem kezdeni egy hétig. És így ma, itt vagyok with-- MÁRIA: Maria. DAVID MALAN: --to ténylegesen vessen egy pillantást a problémát meg egyet, a pálya első hetében anyag, neked orientált CS50 IDE, egy kicsit Linux, az operációs rendszer, amely futó IDE, valamint nézd meg néhány átmenet a semmiből C vezető Akár problémát meg egyet. Tehát minden további nélkül, A probléma meg egyet, fogsz lenni be CS50 IDE, amely ez a web-alapú programozás környezetet, amit használni annak érdekében, programokat írhassanak. Ez már úgy néz ki, nagyon emlékeztet egy tipikus számítógép rendszert futtató operációs nevű rendszer Linux. De ez az úgynevezett felhő, ami azt jelenti, mindenki az osztályban valóban van ő saját számlás és használja is. Így a legtöbb akkor valószínűleg még soha nem használt Linux környezetben előtt, vagy talán még egy parancssoros felület. És egy parancssori környezet különböző. Ez mind szöveges. Ez mind billentyűparancsokra. És ez nem mousing semmilyen ikont, nincs párbeszéd ablakok, nincs menük. Ez pusztán a szöveg. Tehát az első, ez a fajta Az érzés, mintha egy lépést visszafelé tekintve kifinomultság. De ez végül is egy csomó erősebb, természetesen, Egy számítógép tudós, végül. Szóval vessünk egy pillantást. Itt vagyok a CS50.io, amelyen keresztül akkor jelentkezzen be CS50 IDE. És ugyanúgy, mint a Scratch, van három fő területen erre a képernyőre. Tehát a bal oldali, van mi lesz a fájl böngésző. És itt van ez a mappa a tetejére, ami most üres mióta megszabadult az én fájlokat, mielőtt szuperszakaszon. És ez az, ahol mi menteni C fájlokat írunk. A jobb felső részen, van egy hely, ahol minden kedves kódot fog kapni írva. És valóban, ha rákattintok ezt a plusz, ez a fog én döntöm új fájlt. És itt tudok írásához C kód, vagy, Tényleg, számos más nyelven. És majd az alján, ahol mondja jharvard @ ide50-- és a tiéd lesz mondjuk egy kicsit different-- mi a neve? Terminal ablakot. Igen. Így a terminál ablak az úgynevezett parancssor felületen keresztül, amely kölcsönhatásba léphet az alapul szolgáló operációs rendszer. És most, mi lesz hogy alig használta this-- Csak összeállításához, hogy nézd meg hibaüzenetek, hogy látjuk, és futtatni a programokat. De végül is, megyünk erre sokkal több is. És akkor még telepíteni a szoftvert és kezeli a munkaterület belül CS50 IDE, valamint. De még az, hogy egy másik alkalommal. Szóval menjünk előre, és levelet egy nagyon egyszerű program csak hogy menjen át a bemelegítés a hello.c, ami talán A legegyszerűbb programot tudunk írni. Már nyitott egy új lapot. Megyek megy előre, és mondjuk közé tartoznak a standard io.h. Aztán int main (void). És akkor printf ("Hello, world" backslash n, közel idézet, közel zárójelben, és pontosvessző. Minden rendben. Tehát most vette észre a ablak cím nélküli. Úgyhogy nagyon gyorsan megy felmenni, Mentés. És fontos, hogy Én ezt nem "hello". Tehát egy nagyon gyakori hiba, különösen a problémás állítani egy, az, hogy véletlenül éppen hívja fel program "víz" vagy "kapzsi", vagy "Mario" vagy "hitel" vagy hasonlók. De ha valóban szeretnénk, hogy győződjön Biztos a fájl kiterjesztését mert ez az egyetlen módja, hogy a a fordító és a kód szerkesztő tudja, hogy maga ténylegesen írásban C-kódot. Szóval hadd menjen előre, és kattintson a Mentés gombra. És most is, mit CS50 IDE tett értünk van ez is szintaxis kiemelve mindent. Szóval ez tette mindent nagyon színes. És az egész célja ez nem funkcionális. Ez csak felhívni a szemem, hogy a fogalmilag különböző darab E program. Szóval menjünk előre, és lefordításával. És tudom lefordítani ezt egy pár módon. És az első héten, a old-school, ahogy tettük ez volt a szó szoros értelmében a parancsot line-- "csengés hello.c." És akkor nyomja le az Entert. És semmi sem történik a terminál ablakban. De mi is változott az IDE? Ahol ismét IDE csak azt jelenti, Integrált fejlesztői környezet. Ez egy divatos módja mondván ez az integrált fejlesztési környezet fejlesztése szoftver. Szóval mit változtatni a felhasználói felület? Mit észre az más, Maria? MÁRIA: észrevettem valamit alatt IDE50 mappa itt. DAVID MALAN: Igen. Tehát itt nem csak kell nekünk "hello.c." Mi is "a.out", ami egyfajta buta név egy programot. De valóban, ez az alapértelmezett név egy programot, ha csak fordítsa le a kódot és ne mondd el a fordító milyen fájlt kimenet. Így ha meg akarom futtatni ezt, kell mondani a compiler-- vagy inkább azt kell mondd el a munkaterületet, hogy én szeretné futtatni a programot az úgynevezett "a.out." Adja meg. És ott van a "hello, világot. "most a" ./ ". valójában fontos. Annak ellenére, hogy általában csak írni a nevét a parancsok, ha ez egy program, amit írásos, ha nem akarjuk mondani, hogy "./" mert ez kifejezetten megmondja a Linuxnak hogy a futtatni kívánt program neve "a.out", hogy van ebben, ahol dot azt jelenti, ezt a könyvtárat, hogy én vagyok jelenleg a, amely történetesen úgynevezett munkaterület, "a.out. Mert ha csak annyit mondott: "a.out," Enter, Megyek, hogy "a.out parancs nem találtam ", mert a computer-- mert én találtam ki "a.out;" nem jött a computer-- nem tudja, hol keresse azt, annak ellenére, hogy a jobb az orrom alá, hogy úgy mondjam. OKÉ. Így lehet megváltoztatni ezt hogy "csengés -o Hello hello.c." És ha én nyomd meg az Entert, milyen program fog ez kimeneti nekem? Mi a neve a fájl? Igen, vissza. Így van. "Helló." Szóval "hello" lesz A program neve mert már használják az úgynevezett parancssori argumentum, amely csak egy módja változik a viselkedése a fordító, hogy ténylegesen kimenet egy adott fájl nevét. És valóban, ha zoom ki, és nézz fel itt, most már nem csak a "a.out" és "hello.c", hanem a "hello" is. Így most már tudom csinálni "./hello, az" Enter. És ott van a "hello, world." De lastly-- és ez most már az egyezmény használjuk az egész félév, typically-- ez akkor is csak annyit ", hogy helló." És valóban, ez azt mondja, hogy ez akár a mai napig, mert már létezik. Hadd menjen előre, és távolítsa el, a Az rm parancs, mind a "a.out" - és azt mondják: "eltávolítani szabályos fájl a.out?" Ez csak azt jelenti, te Biztos, hogy törölni? Megyek, hogy igent mond. És akkor fogok, hogy távolítsa el "hello", de nem "hello.c." Azt fogom mondani "igen" kifejezetten, de a "y" elegendő, valamint. És most észre, ha én írja ls-- amely visszahívás, azt jelenti, list-- felsorolja az összes A fájlok az én mappában. És valóban, ha zoom ki, és nézd meg a bal felső sarokban, megerősíti, hogy mi ebben a mappában, akkor is, mintha ez címkézni IDE50 itt és nem munkaterület, ez csak "hello.c." Tehát most itt lent, ha "make hello," Enter, most látom, sokkal hosszabb parancsot, de a kifinomultabb parancsot, hogy folyik hogy hasznos lehet a hetekben, hogy jöjjön. És most azt mondani, hogy "./hello." Szóval vessünk egy gyors túra néhány más Linux parancsok. Akkor miért nem tesz egy lépést vissza, és ténylegesen nézd C több Általában, áttértek a Scratch a C, majd végezetül egy pillantást Az első probléma meghatározott C. Rendben. Így fogok menni előre, és csak tiszta az én munkaterület ellenőrző-L csak tartani a képernyő tiszta. De ez nem funkcionális hatással másként. Emlékezzünk vissza, hogy láttunk néhány parancs most. Így láttuk csengés, amely általában akkor nem kell végrehajtani manuálisan többé. Majd helyett használja a make. De azt is látta, ls, ami azt mutatja, lista a fájlokat az én könyvtárba. És most miért there-- kettő van Fájlok most "hello", és "hello.c." Miért van egy csillag, vagy egy csillag után "hello"? Ez mit jelenthet alapján hogy mit láttunk az első héten? Mit gondolsz? Mit jelent a csillag jelentenek? MÁRIA: For-- a program "hello"? DAVID MALAN: "Hello *". Igen. Ó igen? Ó, végrehajtható. Így van. Tehát ez azt jelenti, hogy "hello" végrehajtható. Tehát valóban, ez az, amiért Meg tudom csinálni "./hello." Minden rendben. Szóval mi mást tehetnék ide? Nos, kiderült, hogy én is is létre könyvtárakat. Szóval hadd menjen előre, és hozzon létre, Például egy "pset1" könyvtárban. És a probléma beállított specifikáció lesz akkor pontosan ezt, így nem kell emlékezni ma. De a "mkdir pset1" Úgy tűnik, hogy nincs hatása. De ismétlem, nincs hibaüzenet általában egy jó dolog. Tehát ha én írja: "ls" now-- ah, most Nekem van egy futtatható fájlt úgynevezett "hello", egy C fájl neve "hello.c." Majd a záró perjel, így a beszélni, azt jelenti, hogy ez egy könyvtár. Tehát valóban, most azt akarom, hogy nyissa meg. És én nem duplán kattintson rá, mint egy GUI, grafikus környezet. Én inkább azt mondják: "cd pset1." Adja meg. Semmi érdekes úgy tűnik, hogy történt, kivéve az én kis prompt here-- ez a Linux módón emlékeztetné hol vagyok, akkor mi mappa van nyitva. Ez csak azt mondta nekem kifejezetten szemben a grafikus. És ha én írja: "ls" Miért látok egy másik figyelmezteti azonnal, mit gondol, Amikor sorolja a tartalmát pset1? MÁRIA: akkor valószínűleg nem Van valami ott. DAVID MALAN: Igen. Szóval akkor még nem nyilvánvaló teremtett semmit ott mert én csak létre a könyvtárat. Most, ha akartam létrehozni egy file-- számára Például, tudtam hozzon létre egy új fájlt. És akkor tudtam menni Mentés és mentse el, mint "mario.c" ha csinálsz A Standard Edition a PSET egyet. És akkor, mint bármely Mac vagy PC, csak válassza ki a mappát "pset1, mentése. És most a fájl üres. De nézzük újra közeli lesz a második. Csináljuk ls itt. Most látjuk "mario.c". Szóval van néhány más parancsok Érdemes szem előtt tartva több mint time-- egyértelmű, vagy a Control-L az, amit volna megütnie; mkdir láttunk; rm láttunk, valamint, amely eltávolítására vagy törlése fájl. Óvakodj akkor also-- és ha megnézed az online oktatóanyagok, akkor rm -rf egy nagyon gyakori módja a mondás Mappatöröléshez amely cucc benne. Csak légy szuper, szuper óvatos. -rf azt jelenti, rekurzív törölni akármi is akarsz törölni és erőszakkal törölni. Tehát rekurzív úton, ha ez egy mappát egy mappát egy mappát a mappa, törölje mindet. És erőszakkal azt jelenti, nem is kérdezd igen vagy nem, vagyok biztos benne? Szóval ez egy szuper veszélyes módja törlése rengeteg dolgot gyorsan. De beware-- túl gyakran csinál rettenthetetlen diák véletlenül törli, mondjuk, PSET egy, például. MÁRIA: És ha csak do -r, ők fognak hogy megkérdezzük őket az összes állományt. DAVID MALAN: Melyik közepesen idegesítő. MÁRIA: Igen. DAVID MALAN: Szóval ezért oly sokan, én benne, vagyok a szokással, hogy -rf. De ez veszélyes. Szóval vevő vigyázz. És akkor mv fajta Érdekes elemzi. Tehát ez a lépés parancsot, amely úgy érzi, egy kicsit furcsa mert akkor valóban használni, hogy fájlok áthelyezése egyik helyről a másikra. Tegyük fel például, hogy elrontottam. Tegyük fel, hogy én létrehozott egy új fájlt a PSET. És én mentettem meg a "greedy.c." De tegyük fel, véletlenül menteni A IDE50-- így az én munkaterület magát és nem a pset1. Láthatjuk, amennyire a bal felső sarokban. Van "greedy.c." És van néhány megoldás. Tehát az egyik, tudom használni a szuper felhasználóbarát módon csak áthúzza. És hogy valójában megoldhatja a problémát. De ma, próbálunk nézni A több misztikus, de erős módja teheti ezt meg. Szóval hadd vigyem "ls" a pset1. És én csak látni "mario.c." Hadd menjek előre, és nem "cd ..". Szóval CD megint változás könyvtár. ".." Azt jelenti, hogy mi, igaz? A múltkor azt mondta: "cd pset1 "belemenni pset1. Tehát amikor azt mondom: "cd ..", mit csinálok? Visszafelé. Igen. Szóval ez lesz az úgynevezett szülő. Lépj egy szinttel feljebb, mint a kilépő ki egy mappát. Tehát az Enter billentyűt. És valóban, nézd, mit tett. Ez késztetett engem csak a munkaterület helyett A be pset1, ami a munkaterületen. És most, ha a típus "ls", van egy csomó cuccot. Ebben van "greedy.c". Tehát most hadd használja mv, hogy szó mozog "greedy.c" a pset1. És így sok Linux parancsok működik pontosan ilyen. Vesznek argumentumok vagy vesznek egy érvet vagy vesznek két parancssori érvek és így tovább. És ebben az esetben, ez Szó szerint mit csinál azt mondja, bár succinctly-- mozgatni greedy.c be pset1. Adja meg. Semmi sem történik. De ha én egy ls újra, kapzsi eltűnt. És ha én nem "cd pset1", Enter, majd ls újra, most már jó helyen. Mint félre, ha az Egyes reason-- különösen Ha szakaszos hálózati csatlakoztathatóság vagy te járkálni campus a laptop fedelét zárva, majd nyissa fel újra és munkaterület Úgy tűnik, kissé a szinkront, nem nagy ügy. Csak újra a böngészőt ablak, és el kell resync úgy, hogy a bal oldali fájlböngészőt úgy néz ki, mint a terminál ablakot. Ne aggódj. Kétség esetén az oldal újratöltődik, így Amíg mentette a fájlokat már. OKÉ. Tehát mv is fel lehet használni a fájlok átnevezésére. És vessünk egy pillantást ez a végső parancsot itt. Tehát suppose-- és ez szuper közös, túl, korán. Néhány diák időnként létrehoznak egy fájlt nevű, hadd say-- mi még egyet? Mint "WATER.C." Szóval én csak kiabálni, a nincs ok, a nagybetűs. De nem ez az helyes a fájl nevét ha csak azért, mert a mi problémánk beállítva specifikáció nem mondtam el hogy mentse a fájlt nagybetűs "WATER.C." Ehelyett azt várjuk, "water.c" kisbetűvel. És valóban, ez az problematikus, mert check50, program fogsz hogy megfeleljen a problémát beállítva, amelyik automatikusan teszteli a helyességét a kódot fog kiabálni veled, ha nem sikerül találni "water.c" a csupa kisbetűvel. Szóval kell rögzíteni ezt. Szóval sok különböző módon Ehhez az első, amely az lenne, hogy a Control billentyűt lenyomva vagy jobb klikk A fájlnév és csak megváltoztatni átnevezése. Teljesen rendben kell csinálni. De ez ma is nézzük csinálni egy kicsit cifrább. Nézzünk mv változtatni "WATER.C", hogy "water.c." Így akkor is használhatja az első érv nevezze át a második érv ha a második érv sem, a Tény, hogy egy mappát vagy egy könyvtár nevét. Minden rendben. És végül, egy kicsit trick-- így vagyok én munkaterület könyvtár abban a pillanatban. Ha azt akarom, hogy bekerüljön PSET egy, Én minden bizonnyal írja: "cd pset1." De ez annyira unalmas, hogy írja "pset1" vagy hosszabb fájlneveket vagy könyvtár nevét azóta is. Szóval igen gyakran Linux alatt, mit amit tehetünk, elkezd gépelés "PSE" és csak unatkozni, megnyomjuk a Tab, és hagyja, A számítógép rájönni az Ön számára. Super hasznos, hogy abba a szokás. Az egyetlen fogás, ha van több fájl vagy mappa kezdődő A "P" betű, vagy "ps" lehet, hogy begépelni egy pár előtt számítógép tudja, mit kell tennie. MÁRIA: Szeretjük parancsikonokat. DAVID MALAN: Ez akarat takaríthat meg, így sok időt. És azt is, ahogy mondta előadásában, akkor Lépjünk fel a történelemben, fel és le, megtalálni a közelmúltban végrehajtott parancsokat, valamint. Minden rendben. Tehát most, nézzük a figyelmét vissza hogy egy egyszerű program, hello world. Szóval akkor már össze ezt pontosan. És most miért nem veszünk Nézd meg az adattípusok majd átmenet némi megfelelő Scratch blokkok C. MÁRIA: Félelmetes. Tehát most, hogy már megkezdődött programok írása a C-ben fogunk kezdeni beszélni mintegy adattípusok és változók. Szóval néhány adattípusok azt szeretném tudni, most kezdődik azok, amelyek A kékkel. Tehát van int első, amely áll az egész. És hogy tartja egész számok, mint te Lehet, hogy guessed-- így 1, 2, 3, és bármely más egész szám hogy ki tud találni. DAVID MALAN: És szintén negatív. MÁRIA: És azt is negatívak, aha. És 0. Aztán ott van úszók, amely lebegőpontos számok. Szóval ez a valós számok amelyek tizedes jegyre. Tehát 5,0, 5,2, és még inkább számjegy a tizedesvessző után, is, és szintén negatív is. Aztán ott van char ami egy karaktert. Tehát úgy gondolom, beszélgettünk Ezt előadás ma. De van betűket, a example-- A, B, C-- tárolható, mint egy char. De akkor már sokkal több szimbólum tárolható, mint egy char. És azok tárolása ASCII. És akkor mi van bool, amelyek Logikai. És azok értékelik, hogy igaz vagy Hamis vagy 1 és 0, ill. DAVID MALAN: És emlékezzünk arra, hogy bool származik CS50 könyvtár. Szóval ez nem épült be C, de ez szuper hasznos hogy a fogalom igaz és hamis. És bár Lehet think-- vicces tény. A bool technikailag szüksége, hogy hány bitet, valóban, hogy képviselje Igaz versus hamis? Hány bit Mit gondolsz akkor lenne szükség, maximálisan? Ja, csak egy. Így kiderül, hogy a C- nem adhatok csak egy kicsit. A legkisebb mértékegység kaphat nyolc. Szóval ez egy kicsit pazarló azok vagytok segítségével egy egész bájtot vagy nyolc bit, képviseletére igaz vagy hamis. De ez már csak így ez végrehajtott C a CS50 könyvtár. MÁRIA: És akkor az is, hogy mi vagyunk Nem fog beszélni, mint széles körben jobb now-- dupla, ez a nagyobb úszókkal. Hosszú hosszú és rövid is az egész. DAVID MALAN: Valóban. Hacker kiadásában PSET egy, valójában használjuk hosszú, hosszú. De a Standard Edition ne legyen szükség. MÁRIA: Cool. OKÉ. Szóval operators-- ha kell valószínűleg ismeri a legtöbb ilyen. Emellett a +; kivonás, -. Szorzáskor megvan a *. Tehát nem az X, hogy szoktunk használni. Osztály, mi van a backslash. És modulo az utolsó üzemeltető, fogunk beszélni most. Ez az üzemben, amely lehetővé teszi számunkra, hogy hogy a fennmaradó egy részlege. Tehát, ha van 4% 2, 4 osztva 2 2 a fennmaradó 0. Tehát 4% 2 0. 4% 3 1. 4% 5 4, ahogy gondolta volna. És ne feledd, ha használ az összes ilyen üzemeltetők számára a PEMDAS szabályokat. DAVID MALAN: Tehát, hogy világos legyen, ha nem 4% 2, miért van az, hogy 0, pontosan? MÁRIA: Mivel a 4 osztva 2 jelentése 2 egy fennmaradó 0. Így modulo ad nekünk, hogy a fennmaradó szemben a megosztásának eredménye. DAVID MALAN: És valóban, mit fogunk találni ezt a hasznos az az, hogy bizonyos problémák ez nem feltétlenül egy, Ha azt szeretné, hogy a korlátozó hatást gyakorolhatnak magát egy sor számok mint a 0-tól valamit, akkor a modulo tekerje körül korábban, mint például a 2 milliárd vagy a 4000000000 értéket beszéltünk az előadás. MÁRIA: Igen. És még a "kapzsi" Talán. DAVID MALAN: Igen, probléma állítva egy, valamint. MÁRIA: Igen, szép. DAVID MALAN: Jó hint. MÁRIA: Sajnálom. Logikai expressions-- így A logikai műveletek, fogunk beszélni összes ilyen, hogy itt látsz. Tehát most, hogy van két egyenlőség jelet felsorolt ​​egyenlők. Tehát ezek az összehasonlítás. Eddig még csak láttam egy egyenlő jel. Ez az, amikor mi hozzá egy értéket egy változónak. Tehát, ha láttunk int n = 5, majd amit rendelt 5 az n változó. De ha azt akarjuk használni == az összehasonlítás, tudjuk ellenőrizni, ha n == 5. És ha n == 5, akkor ez igaz. Szóval logikai operátorok lehetővé teszi számunkra, alapvetően, értékelni logikai kifejezések igaz vagy hamis. Tehát nem equals-- van a felkiáltójel és egyenlők. Szóval mi is ellenőrizze, ha n nem egyenlő 5-- így n! = 5. Kevesebb, mint, kisebb, vagy egyenlő, mint, nagyobb mint, nagyobb vagy egyenlő, mint, és akkor mi van a logikai ÉS és a logikai VAGY. És azok lehetővé teszik számunkra, hogy értékelje több logikai kifejezések össze alapvetően jön össze, mint Egy egész logikai kifejezés. Tehát, ha meg akarjuk találni egy számot, mondjuk, amely nagyobb, mint 5, de kevesebb mint 15 ugyanabban az időben, mi lenne használja a logikai ÉS operátorral, hogy ha n nagyobb, mint 5 && n kevesebb, mint 15. DAVID MALAN: És itt, is, ez tényleg egyszerű korán véletlenül Használja csak egy jelet vagy egy függőleges vonal. És remélhetőleg a fordító kiabálni veled, mert valóban Van egy nagyon mást jelent. Azoknak kíváncsiak, ők használt bitenkénti műveletek, működő egyes biteket. De ha nem akarjuk a ketten itt. És szuper fontos az, hogy első, az egyenlőségjel, amely a operátorral, mint szemben az értékadó operátor. MÁRIA: És a függőleges sáv között található a Delete és Return. DAVID MALAN: Igen. Egy tipikus amerikai billentyűzetet. MÁRIA: Ja. Úgyhogy ugrani A feltételes utasításokat. Ebben Scratch, akkor már Már láttam, valószínűleg, Ha nyilatkozatok, amelyek lehetővé teszik, hogy ellenőrizze, ha valami igaz, akkor valami mást. Szóval akarhatta Ellenőrizhető a sprite megható néhány más sprite vagy a határ a képernyő. És akkor lehet, hogy szeretett volna a végén a játék, vagy valami mást. Szóval a szintaxis, hogy az "if (feltétel)." Tehát, ha a sprite hozzáér valami, akkor ne belül van a zárójelek segítségével. Aztán ott van if-else. Else lehetővé teszi számunkra, hogy tegyünk valamit Ha a feltétellel, hogy mi ellenőrizze az elején nem igaz. Tehát, ha a sprite érinti a átnyúló Ehhez mást csináljon valami mást. Szóval egyébként nem csinál valami mást. Aztán van egy rövid példa erre. Tehát, ha (military_time <12), akkor szeretné printf "Jó reggelt!" Mást fogunk printf "Jó estét!" Egyszerű példa. DAVID MALAN: Jó. MÁRIA: Cool. Tehát most van switch kimutatásokat. Kapcsolja nyilatkozatok általánosságban lehetővé teszi számunkra, hogy sokat ugyanezt hogy mi csak beszélgettünk mintegy a utasításból. Például, most már a általános formája a switch amely lehetővé teszi számunkra, hogy egy változó nevű n és összehasonlítjuk egy csomó különböző értékek, amelyek itt hívott constant1, constant2. Lehet, hogy sokkal több. És azok eseteknek nevezzük. Tehát ha van egy kapcsoló statement-- és ez munkák Csak integers-- van egy változó ebben az esetben ez n. Ha a változó n értéke egyenlő constant1, mi majd végre néhány kódrészletet vagy valami, amit akarok. És akkor mi lenne megtörni. Tehát a szünet azt jelenti, hogy a switch leáll, ha a végrehajtó n egyenlő constant1, majd a program folytatódni fog. Kilép ki a kapcsolja nyilatkozatot, és ez lesz továbbra is csinálni valami mást. Ha azonban az n nem egyenlő constant1, majd ügy constant2 ellenőrizni fogják. Tehát, ha n értéke constant2, hogy más kódrészletet kerül végrehajtásra. És akkor eltöröm ha ez egyenlő vele. És akkor mi lehet also-- nem szükségszerűen, though-- alapértelmezett esetben ami történik, ha n nem egyenlő olyan esetekben, hogy már szerepel. És az alapértelmezett esetben azt is Nem kell egy kis szünetet feltétlenül mert a switch tudni fogja, hogy véget kell vetni, miután az alapértelmezett esetben, ha ez a helyzet. DAVID MALAN: De stilisztikailag, mindig tedd oda. MÁRIA: Igen. DAVID MALAN: Igen. Így különösen, ha kezdő, különösen, ha azok között kevesebb, Kényelmes, én személy Csak ajánlani kibír az IFS és az IFS-elses és if-else-if-elses és így tovább, ha csak mert ők egy kicsit egyszerűbb. Ez egy szép optimalizálás, vagy néha még esztétikailag teszi a kód olvashatóbbá. És valóban, valószínűleg félévközi majd meglátjuk probléma felállítva, ahol ez csak jobban néz ki és könnyebben olvasható az emberek segítségével egy switch utasítást. De ne aggódj kapaszkodva ez túl korai. MÁRIA: Igen. Ha van egy csomó, ha nyilatkozatok, talán csak nem nagyon olvasható. Lehet, hogy nem nagyon gyors hogy menj át rajta. Így kapcsolja nyilatkozatok nagyon hasznos lehet, valamint. És azt is, nem remember-- nem felejtse el, hogy a szünetek vannak. DAVID MALAN: Nem emlékszem erre. MÁRIA: Mert akkor lehet esni révén az egyik esetben a másikra. Mondjuk az esetben constant1 Nem volt egy break utasítással benne. Aztán lehet, hogy esik át belsejében esetben constant2. És nem akarom, hogy ha mi már elérte az esetben constant1 és ez egyenlő n. Így például, ha van egy változó n, amely egy osztály számát, és azt akarjuk, hogy mi ez osztály is-- ha n értéke 50, fogunk nyomtatni "CS50 van Bevezetés a Computer Science I. " Aztán megyünk megtörni. És ennyi. Ha azonban n egyenlő 51, megyünk nyomtatni "CS51 van Bevezetés a Computer Science II. " Aztán megint, mi fog törni. Azonban, ha majd rakjuk 124, 61, bármely Más számot, azt gondolhatja, vagy a program nem megy annak felismerése, hogy. Így fog mondani, hogy "Bocs, én vagyok Nem ismerik az osztályban. " És ez meg fog törni. DAVID MALAN: Szóval lehet igazán látni Az if, else if, else ötlet. Ez csak különböző szintaxis kifejező pontosan ugyanazt a gondolatot. MÁRIA: Pontosan. Most már a háromkomponensű szereplők. Tehát háromkomponensű szereplők Három parts-- feltétele, valamit csinálni, ha ez a feltétel igaz, majd valamit csinálni Amennyiben ez a feltétel hamis. Így látod, alapvetően, A szintaxis itt. Megvan a kérdőjel, és majd the-- mit nevezünk ez? DAVID MALAN: a vastagbélben. MÁRIA: Colon. Köszönöm. Bocsánat. Tehát nézzük meg mi például a hátha tudunk értelmet this-- class_num == 50. Tehát itt látjuk logikai operátor == amely összehasonlítja a változó class_num 50. Tehát class_num üzletek egész. És ha ez egész egyenlő 50, akkor nem vagyunk fog tárolni "David Malan" belül a húr professzora. Ha osztály számát nem egyenlő 50, "Dávid nem Malan" lesz a professzor. DAVID MALAN: Köszönöm. És így ez úgy tűnik egyenértékű mit, mit mondana, első pillantásra? MÁRIA: Számomra úgy tűnik, mint if-else. DAVID MALAN: Igen. És valóban, ez a fajta egy csinos egy óceánjáró, hogy úgy mondjam, a végrehajtási Pontosan a logikája if-else de mindent megtesz egy lépésben. MÁRIA: Pontosan. Igen. Tehát ha-else talán vegye fel sok helyet. Lehet, hogy túl hosszú valami olyan egyszerű, mint ez. Tehát ez is nagyon tömör és nagyon szép. Tehát most megyünk bele néztem végrehajtó valamit újra és újra, így ellenőrzi a kondicionálja többször majd tovább csinálni valamit míg ez a feltétel igaz. Tehát ez elvezet minket Szépen while. A bal oldalon, van az első while ciklus. Tehát miközben valami igaz, tenni valamit újra és újra. Tehát arról, hogy észre, hogy mi állapotban van érvényesítik a tetején. Mivel a mi második loop-- hívunk hogy a do-while loop-- teszünk valamit, akkor ellenőrizze feltétele. És ha ez a feltétel Továbbra is igaz, megyünk vissza, és nem a dolog újra. Tehát a fő különbség az, ahol A feltétel ellenőrizni. És a kód soha nem lehet végrehajtani, ha a feltétel nem igaz a while ciklus. Mivel a do-while hurok, mi van a kód hogy mindig legalább egyszer végrehajtódik. , Majd miközben a feltétel Továbbra is igaz, mehetünk vissza, és iterációkhoz belül újra. Szóval miért gondolja úgy, ahogyan A do-while ciklus alatt egy while hurok? Jobbra. Tehát ha azt akarjuk, hogy jelezzen a felhasználó számára valamilyen input, ha azt akarjuk, hogy megkérdezzük őket hogy adja meg a nevüket, szeretnénk legalább kérje meg őket egyszer. És ha azok be ez a név, nem vagyunk fog kérni őket újra mert mi már tudjuk. De ha nem lép nevüket, vagy ha adja valamit, ami nyilván nem egy név, még mindig szeretné, hogy továbbra is kérve őket a nevük. DAVID MALAN: És mi volt egy előadás mint ez a kap pozitív int Például, ha nincs semmi ellenőrizze az első, mert akkor még nem is ütött egy int. Tehát szeretnénk csinálni this-- kap egy int a user-- majd ellenőrizze, talán, újra és újra és újra. MÁRIA: Pontosan. Mert loops-- OK. Mert hurkok lehetővé teszik számunkra, hogy szinte pontosan ugyanaz a dolog is. Ez valójában pontosan ugyanaz a dolog. Szóval nincs semmi, meg tudod csinálni a hurkok hogy nem lenne képes köze while. De hurkok tűnhet egy kicsit kicsit bonyolultabb szintaktikai mert Három részből belül milyen előtt volt, csak a állapotban while. Tehát az első része, amit a tengerre, a legbaloldalibb, van "int törpék = 0." Szóval ez az, ahol inicializálni a változó. Aztán van egy pontosvessző és a "törpék <7." Szóval ez az, ahol ki feltétel valójában. Szóval ez az, amit mi lett volna tedd csak a közben loop-- "míg a törpék <7." Itt, hogy megy a közepén a hurok. Tehát "dwaves <7." És akkor mi utolsó rész "törpék ++" ott, ahol mi frissítjük a változó. Tehát a lényeg észre, hogy ez a fog átmenni ez a for ciklus hétszer, és végre hétszer. Tehát van hét törpék, és ők mind azt fogja mondani: "Én vagyok itt, hogy segítsen, Hófehérke " mert készek hogy segítsen Hófehérke. A while, mi volna az elindítását és frissítésére nem belül a feltétellel, újra, de előtt vagy belsejében a while ciklus meggyőződni arról, hogy we--, mert mindig kell azokat a részeket. Tehát, hogy győződjön meg arról, hogy van őket, mi volna, még hozzátette őket tovább, csak nem a zárójelek. DAVID MALAN: És ez így néz ki az általam elvártnál az előadásban, például Én szinte mindig, mint én, és n és elég unalmas változók. Úgy néz ki, akkor több ügyesen nevű változókat is. MÁRIA: Igen, ez valóban nagyon szép hogy egy kicsit több leíró változók mert különösen, ha valaki más olvasó code-- talán igazad gréder vagy Önnel együtt A somebody-- azt szeretnénk, hogy győződjön meg arról, hogy megérteni, hogy mit csinálsz. OKÉ. Tehát ez valami nagyon funky-- A hurok belsejében egy hurok. Nem tudom, ha mi már látott ilyet. Feltehetőleg nem. De mi is valójában this-- így elágazások helyett hurkok. Tehát nem mindenki akar járni, talán nekem az, hogy mi folyik itt? DAVID MALAN: Én viszem a stab. MÁRIA: Cool. DAVID MALAN: OK. Szóval, spoiler-- szeretnénk nyomtatni a cucc ez a jobb alsó sarokban ott. MÁRIA: Így van. Igen igen. DAVID MALAN: Tehát most már csak tedd, hogy a minta kimeneti ott. Szóval lehet következtetni a legfelső hurok, hogy te iterációt sorok a legkülső hurok, hogy úgy mondjam. És te iterációt oszlopok a legbelső kör. És intuitív, ez remélhetőleg értelme mert a természet a minden program láttunk előtt, printf, amely a funkciót mi használ, végső soron, képes nyomtatni cucc ki lényegében sorról sorra. Mint, ha már outputted egy új vonal, van nincs duplájára vissza nyomtatás valamit magasabb a képernyőn, legalább nem használja printf, mint ez. És ebben a tekintetben, ez teszi értelemben, hogy a legkülső hurok kell utalva a sorok mert minden adott sor, fogsz akar nyomtassa ki XXXXX, majd lépni a következő sorban, XXXXX. Tehát sor az első. És akkor az egyes egymás után, akkor az oszlopok nyomtatása. Ha próbáltam csinálni az ellenkezőleg, ez valószínűleg nem jöjjön ki, mint ön szándékozik. MÁRIA: Igen. Egyszerűen nem tudtunk visszamenni az előző sorban a printf. DAVID MALAN: És ami érdekes per mai beszélgetni hatálya, valójában az, hogy sorban egy int ami nyilvánította a legfelső hurok. De észre, hogy ez még mindig belsejét, hogy úgy mondjam, A kapcsos zárójelek, hogy azonnal követni, bár ez technikailag nem az említett kapcsoszárójele. Tehát sor terjedelmében teljes egészében a kódrészletet, belül egyaránt a külső hurok és azon belül a belső hurok. De ezzel szemben, ha az oszlop tartalma? A változó oszlop? Igen, csak a cikluson belül. És ez rendben, mert mi nem való ez kívül esik a zárójelek segítségével. Minden, amit teszünk nyomtasson ki egy új sorban a legvégén van. Tehát, hogy valójában rendben van. Tehát ez az a hatása, úgy néz ki, csinál három sorban és négy oszlopban. MÁRIA: Így van. Tehát először megyünk keresztül az első sorban. És csak az első sorban, mi a négy oszlop belsejében az első sorban. Így nyomtassa ki a négy X. És akkor mi is kilép a for ciklus óta mi már kinyomtatható négy X. És mi nyomtatni egy új sort. És akkor megyünk át a Ugyanez a folyamat még két sort hogy összesen három. DAVID MALAN: És érdemes megjegyezni, hogy ez Csak egy műalkotás a betűtípus, az a tény, hogy a minta kimeneti Úgy tűnik tehát sokkal magasabb, Mintha ez még nem minden sorok, mint oszlopot. De ez csak azért, mert az X magasabb, mint amilyen széles. Ez minden, ami történik ott, valamint a fehér térben a sorok között. MÁRIA: Így van. Hűvös. DAVID MALAN: Rendben. Tehát egy gyors pillantást a problémát meg egyet, hogy bármilyen kérdése van, majd vonuljon? Minden rendben. Tehát a probléma meg egyet, van három elsődleges kihívások, végül. De először, megtalálod hogy a probléma meghatározott specifikáció, mint sok a psets idén ősszel, fog járni, akkor a néhány bemelegítő gyakorlatokat, pont akkor ki néhány erőforrások hogy lehet, hogy Nem láttam már. Például, CS50 van egy csomag a rövidnadrág, amelyek rövid videók, nem ellentétben ez, hanem, hogy a Nagyon téma specific-- Körülbelül öt perc, 10 perc hosszúságú a hurkok vagy A feltételekről, illetve algoritmusok vagy később több fejlett témák is. És mi általában beágyazni azoknak a problémát készletek, hogy a diákok van egy forrás, amellyel hogy felülvizsgálja anyag, amely esetleg Már jön a Előadás vagy részben. De ennek az az koncentráltabb és több saját ügyében. Azt is hajlamosak embed probléma olyanokat állít nevű walkthroughs. Tehát szinte minden a példák én előadás, a színpadon van, azt is lövés a kamera előre egy lassabb, intimebb walkthrough által rám a laptopom, hogy a kódot, sorról sorra úgy, hogy az osztályban, akkor gyakran átlássa valami vagy valaki majd közbe egy válaszolni egy kérdésre. De ez nem feltétlenül mosogató A mindenki számára a közönséget. Így talál kódot walkthroughs a legtöbb példa hogy mi itt előadást úgy, hogy tud járni rajta a saját tempójában és vissza- vagy gyors előre- vagy ugrás teljesen, ha szeretné. Ott gyakran néhány bemelegítő kérdések Kérjük, hogy egyfajta megerősíti ezt az anyagot és győződjön meg róla, hogy te vagy a kényelmes előtt Ön folytathatja a többi PSET. És aztán, persze, ott van a PSET magát. És az egyik dolog mi nagyon tudatosan itt CS50 szinte minden érdektelen vagy szellemileg érdektelen mechanikus lépést, hogy akkor lehet, hogy nem szinte mindig nagyon jól dokumentált. Során a kifejezést, akkor kezdeni, hogy fel több költői kérdések mint emlékszel, hogyan kell ezt vagy azt? De általánosságban, talál hogy a probléma készletek kapni a mechanika valami olyan, hogy Az érdekes, intellektuális kihívások végül maradt, hogy ha a diák. Ezzel azt mondta, Zamyla, akinek mi tartott hivatkozva ma előadás, az egyik a régi alkalmazottak tagja, aki szintén rendelkezik walkthroughs konkrét PSET problémákat, mint a Mario és kapzsi, bár nem a víz az idén. És ez azokban walkthroughs hogy ő gyakran kínál néhány tippet és trükköt hogyan kell eljárni, soha nem mondom pontosan mit kell csinálni, de rather-- mint egy állapot, ha will-- így legalább egy pár ötletet, hogy ez rajtad múlik, végső soron dönteni hogyan kell megközelíteni őket. MÁRIA: Valahogy úgy, mint egy magas szintű megértése a logika, hogy mi kérünk, hogy nem. DAVID MALAN: Pontosan. És, sőt, Zamyla adatbankjában walkthroughs célja megválaszolni a leggyakrabban kérdezte kérdésre, hogy hol do kezdtem, különösen akkor, ha Ezeket a hosszú specifikációk egy kicsit ijesztő mivel az összes szöveget és képekkel, hogy van bennük. Szóval water.c, megtalálod miután befejezte azt, valójában viszonylag egyszerű. Abszolút egy csomó A fogsz bumm a fejeteket a falnak próbálnak hogy kitaláljuk, miért nem összeállításában vagy miért nem fut rendesen. De ha kész vele, és ha egyszer már egy ideig birkózott bármilyen A hibákat hogy lehet, hogy, rájössz, hogy ez Egy nagyon rövid programot. Meg lehet csinálni, mindössze néhány sornyi kódot, amelyek többsége láttunk itt előadás már, ha akkor össze a jobb építőkövei. És ahogy azt javasoljuk, Itt meg fogja kérdezni Ön határozhatja meg, hány perc Valakinek épp zuhanyoztam egyetemen. Mi határozza meg a problémát állítsa az arány a víz áramlását a, mondjuk, egy alacsony áramlási zuhanyzó fejét, ugyanúgy, mint a Seinfeld klip láttuk tegnap, vagy az ellenkező cikke. És akkor csak kell, hogy csinál egy kis matek, really-- számtani segítségével C mondani nekünk, hogy durván, palack víz az, hogy egyenértékű, ha mi vagyunk szedő n perces zuhany. Most, mario.c, ez lesz hogy egy kicsit hosszabb programot. Még mindig nem lesz ilyen sokáig. Csak néhány hosszabb sorok water.c. De ez lesz lehetőség hogy újra a régi iskola Mario piramis Super Mario Brothers vagy valamilyen nyomon tovább. Ez nem fog nézni, mint csinosabb vagy olyan színes, mint hogy az egyik ott. Mi csak fogja használni kicsit hashtags mint mi itt a képernyőn ASCII szöveg használatával. De ez megközelíti majd ugyanezt a gondolatot. És ez lesz az gyakorolni, hogy első pillantásra úgy tűnik, elég csak simple-- print egyszerű piramis. De van egy pár jellemzők Itt, amelyek érdekes. Figyeljük meg, hogy a jobb szélső éle A piramis valójában szélessége kettő. Szóval van két egyenlő magasság oszlopot, amely teszi szükségessé egy kicsit kis gondolat, hogy Biztosan kap, hogy pontosan így van, ahogy szemben a csak egy tökéletesen szögletes vonal. Szóval ez egy kicsit sarokba ügyben de illeszkedik a tényleges játék. És ez is, nem nyilvánvaló első Dióhéjban hogyan lehet kinyomtatni a fehér térben. Tehát amikor megnézem a mintakimenetet here-- és ez is a spec-- meg fajta néz ki, mint egy téglalapot, de egy átlós téglalap már levágták, és ez csak fehér terek, hogy úgy mondjam. És így a gyakran feltett kérdés itt mindig, nos, hogyan tudom mozgatni a hashtags mint a jobb? Vagy hogyan tudom kinyomtatni az üres tereket? És ez valóban könnyebb mint a legtöbb diák gondolja. Jobbra? Akkor közelítsük vizuálisan csak üti a szóköz egyszer vagy kétszer vagy három alkalommal. És még akkor is a printf mi szinte Mindig nyomtassa ki egy string vagy egy int vagy egy szót, mint a "hello, világ "sorozata vagy a szavak, akkor is csak nyomtatni idézet, tér, idézet vége. És hogy ténylegesen ad Ön szóköz van. Így tartsa szem előtt, és nem overthink ezt. Tényleg van, dönteni sorban sorról sorra, nem ellentétben a például a perce, hogy hány ilyen oszlopok fehér terek és hányan kell hashtags. Időbe fog telni egy kis időt, de ez végül egy logikai játék rendezi. MÁRIA: Igen. De a logika megy soronként lesz nagyon hasznos. DAVID MALAN: Igen. Azt hiszem, a minta kódot gave-- még bár nem volt egy teljes programot. Még mindig szükség van int, és fő és érvénytelennek és #include stdio.h, Sok cuccot előadást. De az építőelemek Úgy tűnik, hogy ott legyen. És akkor végül valami egy kicsit több algoritmikus. Így kiderül, hogy minden alkalommal, bemegy CVS vagy kisbolt és valaki odaadja neked a pénztáros számlát vagy érmék változás, Kiderült, hogy azok az emberek, függetlenül attól, hogy tudja, akár nem, Valószínűleg a mi úgynevezett mohó algoritmus, ahol ha tartozott, azt mondják, 21 $ a változás, mert valamilyen oknál fogva vásárolt valamit nagyon olcsón egy nagyon nagy számla a CVS, akkor lenne igazán bosszantó, ha a pénztáros adta meg 21 kislemez, vagy ami még rosszabb Még egy csomó érmét. Sokkal inkább ésszerű személy valószínűleg meg kell tennie, hogy ők fognak megragad egy $ 20, majd egy $ 1-számlát, és kéz csak két törvényjavaslatot ebben az esetben. MÁRIA: Tehát ők törekszik, hogy minimalizálja A változás, hogy adja vissza hozzád. DAVID MALAN: Pontosan. És ugyanolyan foglalkozik érméket is. Ha tartozott, azt mondják, $ 0,50, remélhetőleg nem akarsz 50 pennyt. Ön helyett szeretnék két negyedévben, például. Nos, ez nem vállalnak hogy a pénztáros is elég, hogy minden felekezet ő érdemes adni neked. De mi teszi azt feltételezni, annyi a probléma. És a cél végső soron az, hogy végrehajtja a C kód mohó algoritmussal. Így a felhasználó jogosult írja be, hogy mennyi megváltoztatni ő jár neki a dollár és cent, valamilyen lebegőpontos értéke valószínűleg. És akkor meg kell csinálni a matek és kitalálni algoritmikusan, nos, hány érmét adhatok Ön minimálisan, hogy az Ön Pontosan ez az összeg a változás. De lesz egy Néhány trükkös részek itt, ugye? Mint ott van az egész pontatlanság kérdés. MÁRIA: Pontosan. Tehát lebegőpontos értékeket pontatlanság. Vajon beszélünk erről előadást ma? DAVID MALAN: Mi volt a utoljára előadás. Beszéltünk a pontatlanság. És nem akarja becsapni a felhasználót Az, hogy mennyi változást ő is tartozott. És így a végigjátszás, a A probléma beállított specifikáció, hogy gondolkodjon, végül, hogy hogyan lehet enyhíteni ezeket a pontatlanság hibák, potenciálisan. Ez elkerülhető, természetesen, a A bemenetek beszélünk. És, sőt, pennies-- talán majd elhalasztja Zamyla, Azt hiszem, a trükkök vannak. Így végül, találsz egy progresszióját problémák ezen a héten, Az első, amely elég kicsi, majd közepes, majd egy kicsit nagyobb. De mindegyik használni az épületet háztömbnyire a múlt héten, ettől szuperszakaszon, probléma beállított specifikáció hozza meg a számtalan források. De mégis, ha egyáltalán küzd, különösen azok körében kevésbé kényelmes előzetesen nem háttér, jöjjön munkaidőben hétfőn és kedden Szerdán és csütörtökön. Tovább a CS50 Beszéljétek keresztül A kurzus honlapján, amelyen keresztül beszélgethet A személyzet és az osztálytársak. De végül is, azt hiszem, a legjobb tanács csak korán kezdeni. Ez nem az a fajta osztályoknak meg kell kezdve psets szerdán éjszaka, vagy ami még rosszabb csütörtök este. MÁRIA: A legjobb tanács hogy megkezdődött hétfőn. DAVID MALAN: hétfőn. Tehát ha még nem kezdődött already-- nincs. De még ha nem is hétfő, majd kedden. A korábbi, annál jobb. És ez az oka a Természetesen annyi késő nap hogy adjak egy kicsit pszichológiai nyomás hogy korábban kezdődnek, de még mindig hagyja, dolgokat csúszik, amikor a dolgok hosszabb időt vesz igénybe mint gondolná. MÁRIA: És azt szeretnénk kihasználni Munkaidőben, amennyit csak tudsz, túl. DAVID MALAN: Van még kérdése? Minden rendben. Nos, miért nem tárgyalunk itt?