[Prehrávanie hudby] DAVID Malan: Ahoj, všetci. To je CS50 je supersection. Pridelené Sekcia nebude spustiť ďalší týždeň. A tak dnes, som tu with-- MARIA: Maria. DAVID Malan: --to vlastne sa pozrieť na problém nastaviť jednu, kurz je Prvé týždne materiálu, si budete orientované CS50 IDE, trochu Linux, operačný systém, ktorý je beží na IDE, ako aj sa pozrieť na niektoré z prechodu od nuly do C vedenia až do problému nastaviť jednu. Takže bez ďalších okolkov, v probléme nastaviť jednu, budete mať predstavil CS50 IDE, ktorý je tento web-based programovanie prostredie, ktoré používame, aby písať programy. Je navrhnutý tak, aby vyzerať veľmi pripomínajúce typického počítače systém používate operačný systém s názvom Linux. Ale je to v tzv mrak, čo znamená, že všetky v triede môže skutočne mať jeho alebo jej na vlastný účet a použiť ju, rovnako. Takže väčšina z vás asi nikdy použité v prostredí systému Linux pred alebo možno i príkazový riadok prostredie. A príkazový riadok Prostredie je iný. Je to všetko textová. Je to všetko klávesové skratky. A nie je to mousing, žiadne ikony, bez okien dialóg, žiadne menu. Je to čisto textový. Takže na prvý pohľad, je to druh ze sa cíti ako krok späť, pokiaľ ide o prepracovanosti. Ale nakoniec je to veľa silnejší, určite, pre počítačové vedcov, nakoniec. Takže poďme sa pozrieť. Tu som v CS50.io, cez ktorý môžete sa prihlásiť do CS50 IDE. A podobne ako v Scratch, je tu tri hlavné oblasti na tejto obrazovke. Takže na ľavej strane, máme čo bude prehliadač súborov. A tam je táto zložka na top, ktorý je teraz prázdny od tej doby som sa zbavil všetkých mojich Súbory pred supersection. A to je, kde budeme uložiť C súbory, ktoré píšeme. V pravom hornom rohu, máme miesto, kde všetky naše kódu sa dostane v písomnej forme. A skutočne, keď som kliknite na toto Plus, to sa chystá dovoľte mi, aby som si vybrať nový súbor. A tu môžem začať písať kód v C alebo, Naozaj, ľubovoľný počet ďalších jazykov. A potom sa v spodnej časti, kde je hovorí jharvard @ ide50-- a vaša vôľa povedz niečo trochu different-- čo sa to volá? Okno terminálu. Jo. Takže okno terminálu tzv príkazového riadku rozhranie, cez ktoré môžete komunikovať so základným operačným systémom. A teraz, budeme aby veľmi malé použitie tohle-- len kompilácie, pozrieť sa na chybové správy, ktoré vidíme, a spúšťať naše programy. Ale nakoniec, ideme robiť oveľa viac, rovnako. A dokonca môžete nainštalovať softvér a spravovať svoj pracovný priestor v rámci CS50 IDE, rovnako. Ale o tom až niekedy inokedy. Tak poďme do toho pustite a písať veľmi jednoduchý program, len prejsť warm-up hello.c, ktorý je možná najjednoduchšie programu môžeme písať. Už som otvoril novú kartu. Chystám sa ísť dopredu a hovoria, zahŕňajú štandardný io.h. Potom int main (void). A potom printf ("Hello, world" spätné lomítko n, blízko citácie, zatvoriť zátvoriek, a bodkočiarka. Dobre. Takže teraz si všimnúť moje okno je untitled. Takže som veľmi rýchlo sa ísť do súboru, uložte. A to je dôležité, aby Hovorím to nie je "ahoj." Takže veľmi častý omyl, a to najmä v problém nastaviť jednu, je náhodou len zavolať svoje Program "voda" alebo "chamtivý" alebo "Mario" alebo "úver", alebo podobne. Ale v skutočnosti chcete, aby sa istí, že budete mať príponu súboru pretože to je jediný spôsob, kompilátor a aj editor kódu vie, že ste vlastne písania C kód. Tak nechaj ma ísť ďalej a kliknite na tlačidlo Uložiť. A teraz taky, čo CS50 IDE urobil pre nás je, že je to tiež syntax zvýraznený všetko. Tak sa to robí všetko veľmi pestrá. A celý účel že nie je funkčná. Je to len nakresliť oči na koncepčne rôzne kúsky tohto programu. Tak poďme do toho a preložil. A môžem zostaviť to v niekoľkými spôsobmi. A v týždni jedna, old-school spôsob, ako sme to urobili to bol doslova u Command line-- "rinčanie hello.c." A potom som stlačte Enter. A zdanlivo nič nedeje V okne terminálu. Ale to, čo sa zmenilo v IDE? Tam, kde sa opäť IDE jednoducho znamená, Integrované vývojové prostredie. Je to fantázia spôsob, ako hovoriť toto integrované vývojové prostredie pre vývoj softvéru. Čo teda zmeniť v užívateľskom rozhraní? Čo ste si to je niečo iné, Maria? MARIA: Všimol som si niečoho pod IDE50 zložke tu. DAVID Malan: Jo. Tak tu hore, a to nielen máme "hello.c." Máme tiež "a.out", čo je je to za hlúpe meno pre program. Ale v skutočnosti, to je predvolený názov pre Program, keď ste práve kompilácie kódu a nehovorte kompilátor čo súbor na výstup. Takže ak chcem spustiť to, myslím, je potrebné oznámiť compiler-- alebo skôr, musím povedzte pracovný priestor, ktorý som chcete spustiť program s názvom "a.out." Enter. A je tu "ahoj, svet, "teraz" ./ ". je v skutočnosti dôležité. Aj keď normálne my len napísať názvy príkazov, keď je to program, ktorý som písomná, vy chcete povedať, "./" pretože to výslovne hovorí, Linux že chcete spustiť program s názvom "a.out", ktoré je v tomto, kde bodka znamená tento adresár, že som v súčasnosti in, čo sa stáva, že je volal pracovný priestor, "a.out. Pretože keď som práve povedal "a.out," Enter, Idem sa dostať "velenie a.out nie nájdených ", pretože computer-- preto, že som vynašiel "a.out;" neprišiel s computer-- nevie, kde ju hľadať, aj keď je to správne pod nosom, aby som tak povedal. OK. Tak sme mohli to zmeniť byť "rinčať -o ahoj hello.c." A keď som stlačte klávesu Enter, aký program to bude na výstup pre mňa? Aký je názov súboru? Jo, v chrbte. To je správne. "Ahoj." Takže "ahoj" bude názov programu preto, že sme použili takzvané linka argument, príkaz, čo je len spôsob, ako zmeniť správanie kompilátor skutočne výstup špecifický názov súboru. A skutočne, keď som zoom von a pozrieť sa tu, teraz mám nielen "a.out" a "hello.c", ale aj "Ahoj," rovnako. Takže teraz môžem robiť "./hello," Enter. A je tu "Hello, World". Ale lastly-- a to bude teraz konvencie používame v celom semester, typically-- ich môžete tiež len povedať "robiť ahoj." A skutočne, je to hovorí, je to do dnešného dňa, pretože už existuje. Nechaj ma ísť dopredu a odstrániť, s Príkaz rm, a to ako "a.out" - a povedať: "odstrániť pravidelný súbor a.out?" To jednoducho znamená, že nie istí, že ju chcete zmazať? Idem povedať, že áno. A potom budem odstrániť "ahoj", ale nie "hello.c." Budem hovoriť "áno" výslovne, ale "y" je dostatočná, rovnako. A teraz si všimnúť, či som typ ls-- Čo, spomínať, znamená list-- vymenováva všetko zo súborov v mojej zložke. A skutočne, keď som zoom von a pozrieť sa na ľavom hornom rohu, potvrdzuje, že to, čo je v tejto zložke, a to aj aj keď je to označené ako IDE50 tu a nie pracovné priestor, je to len "hello.c." Takže teraz tu dole, ak I to "robiť ahoj," Enter, teraz vidím oveľa dlhší príkaz, ale prepracovanejšie príkaz, ktorý sa deje byť užitočný v nasledujúcich týždňoch prísť. A teraz môžem povedať, "./hello." Takže poďme sa rýchlu prehliadku Príkazy nejaký iný Linux. Tak prečo nie my krok späť a dokonca pozrieť sa na C viac Všeobecne platí, že prechod od nuly na ° C, a potom uzavrieť s pohľadom na prvý problém nastavte v C. V poriadku. Takže budem pokračovať a práve čisté up mojej pracovnej plochy s Control-L len udržať obrazovku upravene. Ale to nemá funkčné ovplyvniť inak. Pripomeňme si, že sme videli Teraz niekoľko príkazov. Takže sme videli rinčanie, ktoré všeobecne vy nebudete musieť spustiť ručne ešte. Budeme namiesto toho používať make. Ale my sme tiež videli ls, čo ukazuje výpis súborov v mojom adresári. A teraz, prečo je there-- Sú dva súbory teraz, "ahoj" a "hello.c." Prečo je tam hviezda alebo hviezdička po "ahoj"? Čo to znamenať, založený o tom, čo sme videli v jednom týždni? Co si myslis? Čo hviezda znamenať? MARIA: For-- programu "ahoj"? DAVID Malan: "Ahoj *". Jo. Oh áno? Oh, spustiteľný. To je správne. Tak, že znamená, že "ahoj" je spustiteľný. Takže v skutočnosti, to je dôvod, prečo Môžem robiť "./hello." Dobre. Takže čo iné môžem robiť tu? No, to dopadá môžem tiež vytvárať adresáre. Tak nechaj ma ísť dopredu a vytvoriť, napríklad, "pset1" adresár. A problém nastaviť špecifikácie bude mať budete robiť presne to, takže si nemusíte pamätať dnes. Ale "mkdir pset1" Zdá sa, mať žiadny dopad. Ale opäť, žiadne chybové hlásenie je vo všeobecnosti dobrá vec. Takže keď som typ "ls" now-- ah, teraz Mám spustiteľný súbor s názvom "Dobrý deň," súbor C s názvom "hello.c." A potom koncové lomítko, tak aby hovoriť, znamená, že sa jedná o adresár. Takže naozaj, teraz chcem otvoriť. A nemyslím si, dvojitým kliknutím na neho, ako v GUI, grafickom prostredí. Namiesto toho som povedal "cd pset1." Enter. Nič zaujímavého sa zdá, že sa stalo s výnimkou môjho malého riadku here-- to je Linux je pripomenutie ma, kde som, tak čo zložka je otvorená. Je to len mi povedať výslovne na rozdiel od graficky. A keď som typ "ls," Prečo vidím ďalší bezodkladne vyzve, myslíte, keď som sa zoznam obsahu pset1? MARIA: Pravdepodobne nie mať nič tam. DAVID Malan: Jo. Takže nemáme evidentne vytvoril niečo tam Len preto, že som vytvoril adresár. A teraz, keď som chcel vytvoriť file-- pre inštancie, mohol by som vytvoriť nový súbor. A potom by som mohol ísť do Uložiť a uložte ho ako, ako: "mario.c" ak robíte Standard Edition pset jedna. A potom, ako každý Mac alebo PC, len vyberte priečinok "pset1, Uložiť. A teraz súbor je prázdny. Ale poďme priblížiť znovu na sekundu. Poďme tu robiť ls. Teraz vidíme, "mario.c". Takže je tu pár ďalších príkazov, ktoré sú dobré mať na pamäti, než time-- číry, alebo Control-L je to, čo som Bol biť; mkdir sme videli; rm sme videli, tiež, čo je Pre odstránenie alebo odstránenie súboru. Dajte si pozor môžete also--, a keď sa pozriete v on-line výučbových programov, budete rm -rf je veľmi bežný spôsob, ako hovoriť odstránite zložku, ktorá má veci v ňom. Stačí byť super, super opatrný. -rf znamená rekurzívne zmazať, čo to je sa snažíte zmazať a násilne odstrániť. Takže rekurzívne znamená, že ak je to zložka s zložka sa zložkou so zložkou, odstrániť všetky z nich. A násilne znamená, nemajú ani ask me áno alebo nie, som si istý? Takže je to super nebezpečný spôsob Rýchlo mazanie veľa vecí. Ale beware-- príliš často robí neohrozený študentka omylom zmazať, povedzme, pset jedným, napríklad. MARIA: A v prípade, že práve robiť -r, idú požiadať ich o každom jednom súbore. DAVID Malan: Čo je mierne nepríjemné. MARIA: Jo. DAVID Malan: Takže to je dôvod, prečo tak veľa z nás, ja v cene, som vo zvyku používať -rf. Ale je to nebezpečné. Takže kupujúci na pozore. A potom mv je druh zaujímavo menovaný. Tak to je príkaz ťah, ktorý sa cíti trochu divný pretože môžete skutočne použiť na presúvať súbory z jedného miesta na druhé. Predpokladajme napríklad, že som spackal. Predpokladajme, že som vytvoril nový súbor pre pset. A zachránil som to ako "greedy.c." Predpokladajme však, že som omylom uložiť v IDE50-- takže v mojom pracovnom priestore samotnom a nie v pset1. Môžete vidieť, ako veľa je v ľavom hornom rohu. Tam je "greedy.c." A je tu niekoľko riešení. Takže človek, môžem použiť výborný užívateľsky príjemný spôsob, púheho pretiahnutím. A že by v skutočnosti tento problém vyriešiť. Ale dnes, snažíme sa pozerať na čím viac tajomné, ale účinných spôsobov, ako to dosiahnuť. Takže dovoľte mi, aby som "LS" v pset1. A vidím len "mario.c." Nechaj ma ísť ďalej a robiť "cd ..". Takže CD je opäť zmena adresár. ".." Znamená to, čo, aj keď? Minule som povedal, "CD pset1 "ísť do pset1. Takže keď hovorím "cd ..", čo mám robiť? Dozadu. Jo. Takže to bude tzv rodičia. Prechod o úroveň vyššie, rovnako ako opustenie z priečinka. Tak Enter. A skutočne, pozri sa, čo to urobil. Namiesto toho sa presťahoval ma proste do pracovného priestoru of do pset1, ktorý je v pracovnom priestore. A teraz, keď som typ "LS", je tu celý rad vecí. Tam je "greedy.c". Takže teraz dovoľte mi použiť mV do doslovne presunúť "greedy.c" do pset1. A tak veľa Linux príkazov fungujú presne takto. Berú žiadne argumenty, alebo sa mať jednu Argument alebo berú dva príkazový riadok argumenty a tak ďalej. A v tomto prípade, je to doslovne to, čo to hovorí, keď succinctly-- presunúť greedy.c do pset1. Enter. Sa zdanlivo nič nedeje. Ale keď robím ls znovu, chamtivý je preč. A keď to urobím "cd pset1", Enter, a potom ls znova, teraz je to na správnom mieste. Ako stranou, ak je pre niektorí reason-- obzvlášť Ak máte prerušované pripojenie k sieti alebo ste chodí kampus s vekom notebooku zavrel a potom ju otvoriť Znovu a váš pracovný priestor Zdá sa, trochu mimo synchronizáciu, žiadny veľký problém. Stačí načítať prehliadač okná, a to by malo synchronizácia tak, že ľavý prehliadač súborov vyzerá presne ako okno terminálu. Niet sa čoho báť. Ak máte pochybnosti, znovu načítať stránku, tak Kým ste uložili už súbory. OK. Takže mv môže byť tiež použitý na premenovanie súborov. A poďme sa pozrieť na Tento konečný príkaz tu. Tak suppose-- a to je Super bežné, príliš, čoskoro. Niektorí študenti občas vytvoriť súbor volal, poďme say-- čo je ďalší? Ako "WATER.C." Takže budem kričať, pre žiadny dôvod, vo všetkých čiapky. Ale to nie je Správne meno súboru aj keby len preto náš problém set Špecifikácie ti to nepovedal uložte súbor ako verzálky "WATER.C." Namiesto toho, očakávame "water.c" malými písmenami. A v skutočnosti, to je problematické, pretože check50, Program ideš stretnúť sa v probléme nastaviť jeden, ktorý automaticky testuje správnosť kódu bude kričať na vás, či to nemôže nájsť "water.c" vo všetkých malými písmenami. Tak som treba to napraviť. Takže mnoho rôznych spôsobov, to urobiť, z ktorých prvý by bolo ovládanie tlačidlom alebo pravým tlačidlom myši názov súboru a len zmeniť Premenovať. Úplne v poriadku to urobiť. Ale opäť, dnes, poďme robiť to trochu milovník. Využime mV pre zmenu "WATER.C" na "water.c." Takže môžete tiež použiť prvý argument premenovať ju na druhý argument v prípade, že druhý argument nie je, v Skutočnosť, zložky alebo názov adresára. Dobre. A konečne, trochu trick--, takže som v môj pracovnej plochy adresár v túto chvíľu. Ak sa chcem dostať do pset jedného, Ja určite písať "cd pset1." Ale je to tak únavné typu "pset1", alebo dlhší názvy súborov alebo názvy adresárov stále. Takže veľmi často v Linuxe, čo môžete urobiť, je začať písať "BCPP" a len nudiť, hit Tab, a nechať Počítač údaj to pre vás. Super užitočné sa dostať do tohto zvyku. Jediný úlovok je, ak máte viac súbory alebo priečinky začínajúce s písmenom "P", alebo "PS", môžete mať Ak chcete zadať niekoľko ďalších pred počítač vie, čo má robiť. MARIA: Máme radi skratky. DAVID Malan: To bude ušetrí toľko času. A tiež, ako sme povedali v prednáške, budete možno rolovať hore v histórii, hore a dole, nájsť nedávno popravený príkazy, rovnako. Dobre. Takže teraz, poďme obrátiť svoju pozornosť späť na jednoduchý program, hello world. Preto sme zostavili to presne. A teraz prečo sme sa Pohľad na dátové typy a potom prejsť z niektorých zodpovedá Stieracie blokov C. MARIA: Desivý. Takže teraz, že ste začali písanie programov v C, budeme začať hovoriť o dátových typov a premenných. Takže niektoré typy dát, ktoré bude chcieť vedieť, od tejto chvíle sú tie, ktoré sú zvýraznené modro. Takže máme int ako prvý, čo je skratka pre celé číslo. A to platí celé čísla, ako vy môže mať guessed-- tak, 1, 2, 3, a akékoľvek ďalšie celé čísla ktoré si môžete myslieť. DAVID Malan: A tiež negatívny. MARIA: A tiež tie negatívne, jo. A 0. Potom máme plaváky, ktoré sú plávajúcou desatinnou čiarkou. Tak to je všetky reálne čísla ktoré majú desatinné miesta. Takže 5,0, 5,2, a ešte viac číslica za desatinnou čiarkou, ako aj, a tiež tie negatívne. Potom máme char čo je znak. Takže myslím, že sme hovorili o To prednáške dnes. Ale my máme listy, pre example-- A, B, C-, ktoré môžu byť uložené ako char. Ale potom máme oveľa viac symbolov ktoré môžu byť uložené ako char. A tie sú uložené ako ASCII. A potom máme bool, ktoré sú Booleans. A tí, vyhodnotiť True alebo Nepravda alebo 1 a 0, v tomto poradí. DAVID Malan: A pripomeňme, že bool pochádza z knižnice CS50. Takže to nie je integrovaná do C, ale je to super užitočné mať predstavu o true a false. A aj keď vás Možno think-- legrace fakt. Boolovské technicky potrebuje, koľko bitov, naozaj, reprezentovať pravda proti False? Koľko si myslíte, že bitov budete potrebovať, maximálne? Jo, len jeden. Tak to dopadá, že C nemôže dať len jeden bit. Najmenšia merná jednotka môžete získať, je osem. Takže je to trochu zbytočné, že ste použitím celý byte, alebo osem bitov, reprezentovať true alebo false. Ale to je len spôsob, ako je to implementované v C knižnicou CS50. MARIA: A potom tie, ktoré sme nebude hovoriť o ako rozsiahlo právo now-- double, to je pre väčšie plaváky. Dlhá dlhé a krátke sú tiež pre celé čísla. DAVID Malan: Naozaj. V hacker vydanie pset jedného, sme vlastne používať long long. Ale pre štandardnú verziu, to by nemalo byť potrebné. MARIA: cool. OK. Takže operators-- by ste mali byť pravdepodobne sa zoznámili s väčšinou z nich. Sčítanie, +; odčítanie, -. Pre násobenie, máme *. Takže nie X, ktoré sme zvyčajne používajú. Divízie, máme spätné lomítko. A modulo je naša posledná operátor, ktorý budeme hovoriť o práve teraz. Je to orgán, ktorý nám umožňuje vziať zvyšok divízie. Takže ak máme 4% 2, 4 rozdelený o 2 je 2 so zvyškom 0. Takže 4% 2 je 0. 4% 3 je 1. 4% 5 je 4, pretože by ste mohli tušiť. A pamätajte si, keď používate všetky tieto operátorom používať pravidlá PEMDAS. DAVID Malan: Takže aby bolo jasno, ak ste činiť 4% 2, prečo je to 0, presne? MARIA: Pretože 4 a vydelí 2 je 2 so zvyškom 0. Takže modulo nám dáva, že zvyšok ako na rozdiel od výsledku delenia. DAVID Malan: A skutočne, čo nájdeme toto užitočné , Je, že v niektorých problémov že to nemusí byť nutne jedným, Ak chcete mať Vplyv obmedzenia sami na rozsah čísel ako 0 až niečo, môžete použiť modulo na obal okolo skôr, než ako je 2 miliardy alebo hodnota 4000000000, že sme hovorili o v prednáške. MARIA: Jo. A dokonca v "chamtivý" by sme mohli. DAVID Malan: Áno, vo problém nastaviť jeden, rovnako. MARIA: Áno, pekné. DAVID Malan: Dobrý pomocník. MARIA: Ospravedlňujem sa. Boolean expressions-- tak pre logické operátory, budeme hovoriť o všetkom z nich, ktoré tu vidíte. Takže teraz máme dva rovné znaky uvedené na sebe rovnými. Takže to sú pre porovnanie. Zatiaľ sme videli len jednu rovná sa. To je, keď sme sa priradenie hodnota, ktorá má premenné. Takže ak sme videli int n = 5, potom sme priradená 5 do premennej n. Ale ak chceme použiť == k porovnanie, môžeme skontrolovať, či n == 5. A ak n == 5, potom je to pravda. Tak logické operátory Dovoľte nám, v podstate, hodnotiť Boolean výrazy na true alebo false. Takže nie je equals-- máme výkričník a rovní. Takže sme mohli, ak n tiež skontrolovať sa nerovná 5-- tak n! = 5. Menej ako, menšie než alebo rovné, väčšie ako, väčšie než alebo rovný, a potom máme logický AND a logický OR. A tie, ktoré nám umožnia vyhodnotiť viac logické výrazy spolu sa v podstate prísť spoločne ako jeden celý logický výraz. Takže ak chceme nájsť číslo, povedzme, ktorá je väčšia ako 5, ale menšie ako 15 v rovnakú dobu, by používame logické AND operátor zistiť, či je n väčší ako 5 && n menší ako 15. DAVID Malan: A tu, taky, je to naozaj jednoduché čoskoro omylom použite len jeden ampersand alebo jedna zvislá čiara. A dúfajme, že bude kompilátor revať na vás, pretože sa v skutočnosti majú veľmi odlišný význam. Pre tých zvedavý, sú používa pre bitové operácie, pracujúci na jednotlivých bitov. Ale vy chcete, aby sa pár z nich tu. A Super Dôležité je, že Prvý z nich, znamienko rovnosti, čo je operátor rovnosti as Na rozdiel od operátora priradenia. MARIA: A zvislá čiara je sa nachádza medzi Delete a Return. DAVID Malan: Áno. Na typickej americkej klávesnici. MARIA: Jo. Takže poďme sa skočiť rovno do podmienené príkazy. Scratch, nemáš už videli, pravdepodobne, ak vyhlásenia, ktoré umožňujú užívateľovi skontrolujte, či je niečo pravda, potom robiť niečo iné. Takže by ste chcel skontrolovať, či vaše sprite je dotýka nejaký iný sprite alebo okraj obrazovky. A potom ste možno chceli ukončiť hru alebo robiť niečo iné. Takže syntax, ktorá je "if (podmienka)." Takže ak vaše sprite sa dotýka niečoho, potom si ich vnútri zložených zátvoriek. Potom máme if-else vyhlásenia. Else nám umožňuje robiť niečo v prípade, že stav, ktorý sme skontrolujte, či na začiatku nie je pravda. Takže ak sprite sa dotýka border chcete urobiť, inak robiť niečo iné. Takže inak robiť niečo iné. Potom máme krátky príklad pre toto. Takže v prípade, (military_time <12), sme Chcete printf "Dobré ráno!" Inak budeme printf "Dobrý večer!" Základné príkladom. DAVID Malan: Dobrý. MARIA: cool. Takže teraz máme vyhlásenie spínača. Prepnite vyhlásenie možno všeobecne nám umožňujú urobiť veľa rovnakú vec že sme práve hovorili o s if. Napríklad, práve teraz máme Všeobecná forma príkazu switch ktorá nám umožní prijať premennú s názvom n a porovnať ju s množstvom rôzne hodnoty, ktoré sme tu nazývajú constant1, constant2. Môžeme mať oveľa viac. A tie, ktoré sa nazývajú prípady. Takže ak máme prepínač statement-- a to funguje iba pre integers-- máme premenlivý v tomto prípade, ktorý je n. V prípade, že n je premenná rovná constant1, my bude vykonávať nejaký fragment kódu alebo niečo, čo chceme robiť. A potom by sme zlomiť. Takže prestávka znamená, že Príkaz switch sa zastaví, ak vykonávanie n je rovné constant1, a potom sa váš program bude pokračovať. To bude ukončený z toho prepnúť vyhlásenie a bude to aj naďalej robiť niečo iné. Ak sa však, n sa nerovná constant1, potom puzdro pre constant2 Bude kontrolovaná. Takže ak n sa rovná constant2, že iný Úryvok kódu bude popravený. A potom to bude zlomiť v prípade, že je rovný k tomu. A potom môžeme mať also-- nie je nutne, though-- predvolený prípad, čo sa stane, keď n sa nerovná ktorýkoľvek z prípadov, ktoré ste uvedené. A v prípade východiskovej sme tiež Nemusíte nutne pauzu pretože príkaz switch bude vedieť že treba ukončiť po východzí prípad, že je tomu tak. DAVID Malan: Ale štylisticky, vždy dať to tam. MARIA: Jo. DAVID Malan: Jo. Takže najmä keď začínate, najmä v prípade, medzi tými, nižšie komfortné, by som osobne Len odporúčam držať sa nástroja stability a IFS-elses a if-else-if-elses a tak ďalej, pokiaľ len preto, že ste trochu priamočiarejšej. To je pekný optimalizácie, alebo niekedy aj esteticky ju robí kód čitateľnejší. A v skutočnosti, pravdepodobne mid-semester uvidíme problém nastaviť, kde to proste vyzerá lepšie, a čitateľnejšie pre ľudí pomocou príkazu switch. Ale nebojte sa o lipnú na to príliš skoro. MARIA: Jo. Ak máte veľa if, to by mohlo byť veľmi jednoducho nie je čitateľný. To nemusí byť veľmi rýchla pre vás prejsť. Takže spínač výroky možno byť veľmi užitočné, rovnako. A tiež, nie remember-- nie zabudol dať prestávky tam. DAVID Malan: Nepamätám si to. MARIA: Pretože potom by vás mohli spadnúť cez prípad od prípadu k druhému. Takže povedzme, že prípad constant1 nemal príkazu break v ňom. Potom by sme mohli prepadnúť Vnútri prípad constant2. A my nechceme robiť, že ak sme už dosiahli prípad constant1 a sa rovná n. Tak, napríklad, keď máme premennú n, ktorý obsahuje číslo triedy, a chceme vidieť, čo to class je--, ak n je rovné 50, budeme tlačiť "CS50 je Úvod do výpočtovej techniky I. " Potom sme sa chystáte zlomiť. A to je všetko. Ak je však, n je rovné až 51, ideme tlačiť "CS51 je Predstavenie do výpočtovej techniky II. " Potom znova, budeme sa zlomiť. Avšak, ak potom dáme 124, 61, akýkoľvek iné číslo, ktoré by vás mohli myslieť, alebo program sa nebude uznať, že. Takže to bude hovoriť, "Prepáč, ja som nie sú oboznámení s danú triedu. " A bude to zlomiť. DAVID Malan: Takže môžete naozaj vidieť if, else if, iný nápad tu. Je to jednoducho iná syntaxe vyjadrujú presne rovnaký nápad. MARIA: Presne tak. Teraz máme ternárnu operátormi. Takže ternárnu prevádzkovatelia majú Tri parts-- podmienku, čo robiť v prípade, táto podmienka je pravda, a potom sa niečo robiť ak táto podmienka je nepravdivá. Tak vidíte, v podstate, syntaxe, ktorý tu. Máme otáznik, a potom the-- čo hovoríme to? DAVID Malan: hrubého čreva. MARIA: Colon. Ďakujem. Prepáčte. Takže poďme sa pozrieť na našu napríklad na zistiť, či môžeme zmysel tohle-- class_num == 50. Takže tu vidíme na nášho operátora Boolean == ktorý porovnáva variabilný class_num do 50. Takže class_num ukladá celé číslo. A ak to celé číslo rovná sa 50, potom sme bude ukladať "David Malan" vnútri reťazca profesora. Ak je číslo trieda nie je rovná 50, "nie David Malan" bude profesor. DAVID Malan: Ďakujem. A tak to vyzerá ekvivalentná Čo by ste povedal na prvý pohľad? MARIA: Pre mňa sa zdá, ako if-else. DAVID Malan: Jo. A v skutočnosti, to je druh pekná jednej vložky, aby som tak povedal, pre vykonávanie presne logika if-else ale robí všetko v jednom kroku. MARIA: Presne tak. Jo. Takže ak-else by mohla zaberajú veľa priestoru. Môžu byť príliš dlhý niečo tak jednoduché, ako to. Takže to môže byť veľmi stručné a veľmi pekné. Takže teraz ideme do pohľadu na znovu a znovu vykonávajúci niečo, takže kontrola podmieňujú viackrát a potom pokračuje niečo urobiť zatiaľ čo táto podmienka je pravda. Takže to nás privádza pekne do while. Na ľavej strane, máme náš prvý cyklus while. Takže keď niečo je pravda, urobiť znovu a znovu niečo. Takže uistite sa, že všimnúť, že naše Podmienkou tu je overená v hornej časti. Zatiaľ čo u nášho druhého loop-- hovoríme že do-kým loop-- niečo robíme, potom skontrolovať podmienku. A ak túto podmienku aj naďalej aby to bola pravda, sme sa vrátiť a urobiť vec znovu. Tak hlavný rozdiel je tam, kde podmienka je kontrolovaná. A kód nesmie byť nikdy vykoná, ak podmienka nie je platí o cykle while. Kým sa do-while slučka, máme kód , Ktorý je vždy vykonaný aspoň raz. A potom, keď je podmienka aj naďalej aby to bola pravda, sa môžeme vrátiť späť a opakovať znovu dovnútra. Tak prečo si myslíš, že by sme použiť do-while cez while? Doprava. Takže ak chceme prinúti užívateľ na nejaký vstup, ak chceme ich spýtate zadajte svoje meno, Chceme, aby aspoň raz spýtajte sa ich. A v prípade, že vstúpia že názov, nie sme sa s nimi znova opýtať preto, že už ho poznáme. Ale v prípade, že nevstúpi ich názov, alebo ak zadajte niečo, čo je samozrejme nie je meno, napriek tomu chceme pokračovať požiadala ich o ich mená. DAVID Malan: A v prednáške sme mali jeden takto sa dostať pozitívnym int Napríklad tam, kde nie je čo skontrolovať na prvý, pretože ste ani dostal int. Takže chceme robiť tohle-- získať int z user-- potom ho skontrolovať, možno, znovu a znovu a znovu. MARIA: Presne tak. Pre loops-- OK. Pre slučky môžu dovoliť, aby sme robili takmer presne to isté, rovnako. Je to vlastne presne to isté. Takže nie je nič, čo môžete robiť s pre slučky že by ste neboli schopní čo do činenia s cyklami while. Ale pre slučky sa môže zdať trochu trochu zložitejšie syntakticky preto, že majú tri časti vo vnútri, čo bolo predtým len stav s cyklami while. Takže prvá časť, ktorá vám more, najviac vľavo, máme "int trpaslíci = 0." Takže toto je miesto, kde sme inicializovať našej premenné. Potom máme bodkočiarka a "trpaslíci <7." Takže toto je miesto, kde sa stav v skutočnosti je. Takže to je to, čo budeme mať dal práve v čase loop-- "zatiaľ čo trpaslíci <7." Tu, že ide v Uprostred nášho slučky for. Takže "dwaves <7." A potom je naša posledná časť je "trpaslíci ++," čo je miesto, kde sme sa aktualizujeme premenné. Tak dôležité si uvedomiť, že toto sa chystá prejsť to pre slučku sedemkrát a spustiť sedemkrát. Takže máme sedem trpaslíci, a oni sú všetci chcel povedať, "Som tu aby vám pomohol, Snow White " preto, že sú pripravení na pomoc Snehulienku. S while, by sme urobili inicializácia a aktualizácie nie vo vnútri stave, znovu, ale buď pred alebo vo vnútri while aby sa uistil, že we-- pretože potrebujeme vždy tie časti. Tak, aby sa uistil, že máme nich by máme ešte pridali na, len nie v zátvorkách. DAVID Malan: A tak to vyzerá jako-- V prednáške, napríklad, Aj takmer vždy používajú, rád, ja a n a celkom nudné premenných. Vyzerá to, že môžete použiť viac chytro pomenovaný premenných, taky. MARIA: Áno, je to vlastne veľmi pekné použiť trochu viac opisných premenných pretože najmä v prípade, niekto iný čítanie vašich code-- možná máš porovnávač alebo ak spolupráca s somebody-- chcete, aby sa uistil, že rozumieť tomu, čo robíte. OK. Tak toto je niečo veľmi funky-- pre slučku vnútri slučky for. Ja neviem, či sme videli skôr. Pravdepodobne nie. Ale môžeme skutočne tohle-- takže slučky miesto slučiek. Takže to niekto chcel snáď chodiť mi skrze to, čo sa tu deje? DAVID Malan: Vezmem bodnúť. MARIA: cool. DAVID Malan: OK. Takže, spoiler-- chceme vytlačiť veci že je v pravom dolnom rohu tam. MARIA: Správne. Hej hej. DAVID Malan: Takže máme len dal, že ukážkový výstup tam. Takže môžem vyvodzovať z vrchný slučka, že ste iterácie cez riadky v vonkajšie slučku, aby som tak povedal. A tie iterácie cez stĺpy s najvnútornejšie slučke. A intuitívne, toto by snáď zmysel preto, že podľa povahy Každý program, ktorý sme videli pred, printf, čo je Funkcie používame, nakoniec, má schopnosť tlačiť veci v podstate tak, riadok po riadku. Rovnako ako, akonáhle ste na výstup nový riadok, je tu no zdvojnásobenie späť a tlač niečo vyššia v rozsahu, aspoň nepoužívate printf takhle. A tak sa v tomto ohľade, to robí pocit, že najvzdialenejšie slučka by mal byť s odkazom na riadky pretože pre každý daný riadok, budete chcieť vytlačiť XXXXX, a potom prejsť na ďalší riadok, XXXXX. Takže riadky sú na prvom mieste. A potom sa v rámci každej riadok, tlače stĺpce. Ak ste sa pokúsili urobiť s opak, by to pravdepodobne nie vyjdú ako máte v úmysle. MARIA: Jo. Jednoducho sme nemohli vrátiť do predchádzajúci riadok s printf. DAVID Malan: A čo je zaujímavé na dnešné rozhovor o rozsahu, v skutočnosti je to, že rad je int ktorá je deklarovaná v najvyššej slučke. Ale všimnite si, že je to stále vo vnútri, aby som tak povedal, zložené zátvorky, ktoré bezprostredne nasledovať, aj keď to nie je technicky v týchto zložených zátvoriek. Takže rad je v rozsahu pre celistvosť úryvku kódu, ako vo vnútri, tak aj na vonkajšie pre sláčiky a vo vnútri vnútornej slučky for. Ale naopak, kde je stĺpec v rozsahu? Premenná stĺpec? Jo, iba vo vnútornej slučke. A to je v poriadku, pretože nemáme prístup to mimo jeho zložených zátvoriek. Všetko, čo urobiť, je vytlačiť nový linka na samom konci tam. Tak, že v skutočnosti je v poriadku. Tak to má za následok, to vyzerá, robiť tri riadky a štyri stĺpce. MARIA: Správne. Takže najprv sme sa prejsť naše prvom rade. A práve v našej prvej rade, robíme štyri stĺpce vnútri prvom rade. Tak sme sa vytlačiť štyri X .. A potom môžeme ukončiť slučky for, pretože sme už vytlačené štyri X .. A tlačíme nový riadok. A potom pôjdeme cez Rovnaký postup pre dva viac radoch aby celkom tri. DAVID Malan: A to je potrebné poznamenať, že je to len artefakt písma, skutočnosť, že na výstupe vzorky Zdá sa tak oveľa vyššia, ako keby tam je viac riadkov než stĺpcov. Ale je to len preto, že X je vyššia ako širšia. To je všetko, čo sa tam deje, plus biely priestor medzi riadkami. MARIA: Správne. Super. DAVID Malan: Dobre. Tak rýchly pohľad na problém nastaviť jednu, vziať nejaké otázky, a potom prerušuje? Dobre. Takže problém nastaviť jednu, tú tri Hlavnými problémami, nakoniec. Ale najprv, zistíte, že problém nastaviť špecifikácie, ako sa mnohé psets tento rok na jeseň, sa chystá, aby vás prostredníctvom niekoľkých zahrievacích cvičení, bod, ktorý na niekoľko zdrojov, ktoré môžu alebo nevidel už. Napríklad, CS50 má sadu šortky, ktoré sú krátke video, nie je na rozdiel od, ale že sú veľmi téma specific-- Možno päť minút, 10 minút na dĺžku o slučkách alebo o podmienkach alebo o algoritmoch alebo neskôr na viac pokročilá témy, rovnako. A my všeobecne vložiť tie, do problému súpravy tak, že študenti majú zdroj, s ktorými preskúmať materiál, ktorý by mohol mať Už prísť v prednáške alebo sekcie. Ale takto je to cielenejšie a viac na dosah ruky. Máme tiež inklinujú vložiť do problému nastavuje veci zvanej priechody. Takže takmer všetky príklady robím V prednáške, na javisku tu, my tiež natočili na kameru v pokročiť viac pomalší, viac intímne návod mnou na môj notebook tohto kódexu, riadok po riadku takže v triede, budeme často prelistovať niečo alebo niekoho bude prehodiť s odpoveď na otázku. Ale to nie je nevyhnutne potopiť v pre každého v publiku. Takže nájdete kód návody Pre väčšinu príkladov čo robíme tu v prednáške, takže si môžu chodiť cez to svojím vlastným tempom a pretočiť alebo rýchlo dopredu alebo vynechať úplne, ak budete chcieť. Tam je často málo warm-up otázky, ktoré vás požiadať o akési posilniť tento materiál a uistite sa, že ste pred pohodlný budete pokračovať so zvyškom pset. A potom, samozrejme, je tu pset sám. A jedna z vecí, sme veľmi uvážene robiť v CS50 je takmer každý nezaujímavý alebo intelektuálne nezaujímavý mechanický krok, ktorý možno budete musieť urobiť, je takmer vždy veľmi dobre zdokumentované. V priebehu funkčného obdobia, budeme začne klásť viac rečnícke otázky ako spomenúť, ako sa to či ono? Ale všeobecne, zistíte, že problém sady vám cez mechaniky niečoho tak, že zaujímavé, intelektuálne výzvy sa nakoniec nechal na vás študenta. Vďaka, že povedal, Zamyla, ktorým sme priebežne odkazuje dnes v prednáške, je jedným z našich dlhoročných zamestnancov Člen, ktorý tiež drží návody o špecifických problémoch, ako je Mario pset a chamtivý, keď nie voda v tomto roku. A to je v tých priechody, že ona často ponúka niekoľko tipov a trikov pre ako postupovať, nikdy ti presne to, čo robiť, ale rather-- ako podmienku, ak will-- poskytne vám aspoň pár nápadov, takže je len na vás, nakoniec, sa rozhodnúť, ako k nim pristupovať. MARIA: niečo ako vysokej úrovni pochopenie logiky, čo žiadame vás o to. DAVID Malan: Presne tak. A v skutočnosti, Zamyla je návody sú určené často zodpovedať spýtal sa otázka, kde mám začal, najmä keď Tieto dlhé špecifikácie sú trochu skľučujúce daný všetok text a snímky, ktoré sa majú v nich. Takže water.c, zistíte, potom, čo ste dokončil to, je v skutočnosti pomerne jednoduché. Absolútne sú banda z vás bude buchnúť tvoje hlavy proti múru snažia zistiť, prečo to nie je kompilácii alebo prečo to nie je spustený správne. Ale akonáhle budete hotoví s ním, a akonáhle ste strávil nejaký čas zápasí s niektorou z chýb, ktoré môžete mať, zistíte, že je to veľmi krátky program. To možno vykonať v niekoľkých málo riadkov kódu, z ktorých väčšina sme tu videli v prednáške už, pokiaľ zostavíte tie správne stavebné kamene. A ako navrhujeme tu, to sa opýtať určiť, koľko minút niekto v sprche na akademickej pôde. Určíme v probléme nastaviť prietok vody v, ako, sprchový kút s nízkym prietokom hlava, podobne ako Seinfeld klip sme videli včera, alebo opak týchto látok. A potom stačí len urobiť trochu matematiky, really-- aritmetiku pomocou C povedať nám, koľko, zhruba, fľaše s vodou je to ekvivalentné, ak sme pričom k n-minútové sprchu. Teraz, v mario.c, toto sa deje , Že je o niečo dlhšia programu. Je to stále nebude to dlho. Len pár riadkov dlhší ako water.c. Ale to bude príležitosť obnoviť staré školy Mario pyramída z Super Mario Bratia alebo niektoré follow-on. Nebude to vyzerať ako krajšie alebo ako farebné ako ten tam jeden. Sme len tak použiť malé hashtag ako máme tu na obrazovke pomocou textu ASCII. Ale to bude približovať rovnaký nápad. A bude to byť cvičenie, ktoré na prvý pohľad Zdá sa, celkom simple-- len vytlačiť jednoduchý pyramídu. Ale je tu pár charakteristiky tu to sú zaujímavé. Všimnite si, že úplne vpravo okraje pyramída vlastne má šírku dva. Takže tam sú dve rovná výška stĺpca, ktoré robí to vyžadovať trochu bit myslenia, aby sa že ste si, že presne to pravé, as protiľahlý k len dokonale hranatý online. Tak to už je trochu rohového prípadu ale zodpovedá skutočnej hry. A to je tiež non-zrejmý na prvý pohľad pohľad, ako vytlačiť prázdne miesto. Takže keď som sa pozrieť na ukážkový výstup here-- a je to tiež v spec-- to trochu vyzerá ako obdĺžnik, ale diagonálne z obdĺžnik bol useknuté, a je to len biele miesta, aby som tak povedal. A tak často kladené Otázkou je vždy dobre, ako mám presunúť hashtag na správnu? Alebo ako môžem vytlačiť medzery? A je to vlastne jednoduchšie než väčšina študentov myslí. Doprava? Môžete priblížiť ju vizuálne len biť medzerníka raz alebo dvakrát alebo trikrát. A tak, aj keď s printf sme takmer vždy vytlačiť reťazec alebo int alebo slová, ako je "Dobrý deň, world "alebo séria slov, môžete tiež len vytlačiť citát, vesmírnych, koniec citátu. A to skutočne dať ste tam biele miesto. Takže majte na pamäti, že aj nie overthink to. Ty naozaj musím rozhodnúť, riadok po riadku po riadku, nie na rozdiel od vašej napríklad pred chvíľou, ako mnohí z tých, Stĺpce by mala byť biele miesta a koľko z nich by mal byť hashtags. Bude to trvať trochu času, ale je to nakoniec logické puzzle druhov. MARIA: Jo. Ale logika sa riadok po riadku bude veľmi užitočné tu. DAVID Malan: Jo. Myslím si, že ukážkový kód, ktorý dokonca gave-- hoci to nebolo kompletný program. Stále je potrebné int a hlavné a neplatné a #include stdio.h, veľa vecí z prednášky. Ale stavebné bloky Zdá sa, že tam. A potom konečne niečo trochu viac algoritmické. Tak to dopadá, že kedykoľvek budete ísť do CVS alebo akékoľvek samoobsluhe a niekto vás podá u pokladničné poukážky alebo mince ako zmena, Ukazuje sa, že oni, ľudia, či alebo nie oni to vedia, alebo nie, pravdepodobne používate, čo je volal chamtivý algoritmus, pričom ak ste dlhoval, povedzme, $ dvacetjeden v zmene preto, že z nejakého dôvodu ste si kúpili niečo veľmi lacný s veľmi veľkým účet v CVS, že by bolo v prípade, že naozaj otravné pokladničné vám dal 21 singlov, alebo horšie napriek tomu, veľa mincí. Skôr, čo rozumná osoba je pravdepodobne bude urobiť, je, že idú chytiť 20- $ a potom $ 1-účet, a odovzdať vám len dve bankovky v tejto veci. MARIA: Takže oni sa snažia minimalizovať Zmena, ktorá dávajú späť k vám. DAVID Malan: Presne tak. A rovnaká dohoda s mincami, rovnako. Ak ste dlhoval, povedzme, $ 0,50 dúfajme, že si neželáte, aby 50 haliere. Namiesto toho chcete, aby dvaja ubikácie, napríklad. Teraz, to však predpokladať, že pokladničné má dosť všetkých ostatných názvov, ktoré on alebo ona by mohla chcieť, aby vám. Ale my vám umožní prevziať ako v problému. A cieľ, nakoniec, je implementovať v C kód chamtivý algoritmus. Takže užívateľ je povolené zadať, ako veľmi Zmena on alebo ona dlhuje s dolármi a centov, nejaký druh pohyblivou rádovou čiarkou hodnota pravdepodobne. A potom budete musieť robiť matematiku a zistiť algoritmickým, dobre, koľko mincí môžem dať budete minimálne, aby vám presne to množstvo zmien. Ale tam to bude bude Niekoľko zákerné časti tu, že jo? Rovnako ako je tu celá otázka nepresnosť. MARIA: Presne tak. Tak floating point hodnoty majú nepresnosť. Mali by sme hovoriť o tom v prednáške dnes? DAVID Malan: Urobili sme naposledy v prednáške. Hovorili sme o nepresnosti. A nechcete podvádzať užívateľa o tom, ako veľmi zmena on alebo ona je dlhuje. A tak priechod, v Problém set špecifikácie, zamyslieť, v konečnom dôsledku, pokiaľ ide o ako môžete zmierniť tie nepresnosť chyby, potenciálne. Je to nevyhnutné, samozrejme, pre vstupy hovoríme. A v skutočnosti, pennies-- Možno budeme odložiť na Zamyla, Myslím, že pre tamojší triky. Takže nakoniec, budete nájsť progresie problémov tento týždeň, z ktorých prvá je celkom malý, potom medium, potom o niečo väčší. Ale všetci z nich používajú budovu bloky od tohto minulý týždeň, z tohto supersection, Problém set špecifikácia vám dáva pri nespočetných zdrojov. Ale napriek tomu, ak vôbec bojovať, najmä medzi tými menej pohodlné bez predchádzajúcej pozadím, prísť na úradné hodiny v pondelok a utorok a Streda a štvrtok. Prejsť na CS50 Diskutovať cez Webové stránky kurzu je, cez ktorý môžete chatovať so zamestnancami a spolužiakmi. Ale nakoniec, myslím, že Najlepšia rada je jednoducho začať čoskoro. Nie je to ten druh triedy, ktorá vám by mali byť počnúc psets v stredu v noci, alebo horšie vo štvrtok v noci. MARIA: Moja najlepšia rada je aby začali v pondelok. DAVID Malan: pondelok. Takže ak ste ešte nezačali already-- no. Ale aj keby nie Pondelok, potom v utorok. Čím skôr, tým lepšie. A to je dôvod, prečo Kurz má toľko neskoré dní aby vám trochu psychologický nátlak začať skôr, ale stále nechať veci, sklzu, kedy sa veci trvať dlhšie než očakávate. MARIA: A chcete využiť úradné hodiny, rovnako ako je to možné, tiež. DAVID Malan: Nejaké otázky? Dobre. No, prečo nie my odložiť tu?