ROB BOWDEN: See on mugavam osas kuid see ei tähenda, et kui sa tunne, nagu sa ei ole enam mugav sa ei õpi siin. Niisiis alustame. Kas teil on slaidid läheb otse asju. Kas ma olen umbes et võtke see kohe? Switching sülearvuteid. 

ALLISON: Sa ei taha end tutvustada, Rob? 

ROB BOWDEN: Oh, ma olen Rob. See on minu viiendal aastal TF-se CS50. 

GABRIEL: Ma olen Gabriel. Ma olen pea TF on CS50. Olin TF eelmisel aastal ja sel aastal. ALLISON: Ja ma olen Alison ja see on minu teine ​​aasta TF-se CS50. 

ROB BOWDEN: Olgu, nii see asi otsustada, loodetavasti olete näinud seda varem. Kui ei ole, sest sa lae see enda jaoks, sa oleks pidanud nägema seda loengut. Nii et see on CS50 seade, ja ta tegi mõnevõrra kirjeldus selle loeng. Aga põhimõtteliselt on see lihtsalt sa töötab operatsioonisüsteemi süsteemi raames oma operatsioonisüsteemi süsteemi nii, et me ei saa anda teile programmid ilma muretsema, oh see läheb tööle nii Windows ja Mac või kui mõned teist on juba kasutate Linux, Linux. See on lihtsalt pidi olema ühine mängimine valdkonnas, on igaühel täpselt sama keskkonda. 

Nii et kui teil ei ole allalaaditud seda juba, te peaksite alla laadima, sest sa oled läheb vaja seda probleemi komplekti. Ja see on kahe gigabaidise alla, nii et see võib võtta aega. Harvardi siis lähen kiiresti. Nii CS50 seade. 

Nüüd aasta alguses, me ei kavatse rääkida lihtsalt hunnik käsurea kraami, ja teha, et ma mõtlen tööpäeva see väike keskkonda siin. Ja teate kõik asjad Ütlen siin kohe lähed tööle, kui sa oled sees terminal seadme sisemust, või kui oled sees gedit terminali aknas seadme sisemust. Nii et need keskkonnad on identsed. 

Aga ma lähen kolmandat teed. Ja teate alla siin vähe IP-aadress siia. Nii et sa ei pea seda teha, kuid see IP aadressiks nüüd kui I-- välja see blokeeritakse see asi. OK, nii et IP aadress üle terminal siin-- nii et see terminal üle siin on terminal minu Mac. Seega on see kuidagi praegu seotud seadet üldse. Ja kui sa oled nii Windowsi, siis oled läheb vaja midagi alla laadida spetsiaalselt selle, eelkõige inimesed kipuvad kasutama Kitt, P-U-T-T-Y. 

Nii et mida ma lähen tegema, on tüüpi SSH ja siis, et IP-aadress. Noh, jharvard tol IP-aadress. Nii 192.168.24.220. See hirmutav sõnum ignoreerida. Lihtsalt kirjuta jah. See on CS50 kasti. Ta küsib parooli. 

Ja nii palju neid olukordi, kus ta küsib parooli, [kuuldamatu]. Meil on palju küsimusi, kus ta ütleb, et see ei ole tegelikult kirjutad. See ei näita sa tähemärki parool, kui kirjutad, kui midagi, väärtpaberi omadus, sest kui keegi üle õla ja nad näevad star star star star, siis nad teate, et teie parool on neli märki. Nii et idee on siis küsida teid oma parooli, tüüp. Ta ei kavatse näidata sa märgid, kuid see on tegelikult nendega nõustumist. Sel juhul iga kord, kui kunagi näha parooliviipa tegelevad seadme Parooli läheb karmiinpunane. Nii karmiinpunane. 

Ja nüüd siin sees käesoleva aken, mis on minu Mac, Olen põhimõtteliselt võttes täpselt sama seisukohta kui sees terminal seadmesse. Nii et sa ei pea seda tegema. Seda saab teha kõike, mida soovite seadme sisemust. Ma peaaegu kunagi tegelikult teevad midagi seadmesse. Ma peaaegu alati vähendada, et nüüd Mul töötab SSH seadmesse. 

Kui midagi, kui te on aeglasem arvuti, võite märgata erinevust. Ma teen seda, sest ma eelistan Selle terminali aknas. On mõned funktsioonid, nagu Võin jagada aknas ja nüüd ma ei SSH sisse läbi seadme. Sain kaks SSH toimub korraga. Kui teie arvuti on eriti aeglane ja te töötate seadmega, ja sa mõistad, et see on tõesti laggy, mis iganes. Kipub olema palju kiirem kui sa oled SSH-ed. Aga muidu saate töötada ükskõik kummale poole. 

Sihtrühm: Mis SSH tähendab? 

ROB BOWDEN: Secure kestad, midagi sellist? Mis SSH tähendab? GABRIEL: Secure kest. ALLISON: See on lihtsalt turvaline kest. ROB BOWDEN: Secure kest. See on protokoll, mis Sa-- see turvatud protokollina, nii krüpteeritud. Inimesed ei saa Snoop võrgu ja Vaata, mida sa räägid, et midagi sa oled SSH-ed. Ja tegelikult Endistel päeva CS50, nii et 2009. aastal kui ma olin uustulnuk, nii, et sa töötasid CS50 probleem komplekti, oli sul SSH-ed mõned server et andsime teile juurdepääsu, ja sa töötasid seal. Nii et sa ei pea seda graafiline aparaat. Sa ei ole gedit. Sa ei pea kõiki neid asju, mis Visuaalselt saab punkti ja klõpsa. Sa pidid töötama selles liides. Ma eelistan töötada selle liidese. Nii et osa sellest, mida me ei kavatse tuleb läheb kohe sinna on hunnik käske, et sa peaksid hakkama saada tuttav nagu lähete mööda käigus. Ja ausalt, kui sa harjuda, siis on nii palju kiiremini töötada selles keskkonnas kui see on töötada leidja, tõmmates ja klõpsates asju. 

Nii et siin me oleme. Nüüd ma lihtsalt SSH-ed, ja nii vaikimisi location-- sa nägin mõned neist käskudest klassis, aga me läheme üle kõik uuesti. Vaikeasukohana me oleme aastal on kodukataloogi. Ja kataloog, lihtsalt teine ​​sõna kausta. Nii et me kodus kataloogis. Tüüp ls, loetleda faile selles kataloogis. Ilmselt olen loonud blah.c varem. Nii et meil on töölaual kataloogi. Märkate süntaksi esiletõstmine? Helesinine esiletõstmine näitab Kataloog ja sirge valge näitab lihtsalt tavaline fail. Nii et ei kavatse olla mõned teised värvid, mida näed. Käivitatav fail on ilmselt läheb olla roheline või midagi sellist. OK, nii et me oleme kodus kataloogis. 

Nüüd, kui ma tahan minna eri kataloog, cd on käsk tahan. Nii et muuta kataloogi, ja siis liigu kataloogi nimetus et sa tahad minna. Nii et siin on meil neli võimalust. Ma võin minna download, ja nüüd me näeme, Siin on uuendatud see Sulgudes öelda, et ma olen ~ / allalaadimist. 

Mis on tilde? See on lühendvormina oma kodukataloogi. Nii et peaaegu kõik, mida te ei kavatse olla suhtes oma kataloogi, ja parool on lihtsalt käsku Ma kasutan kord aastas, et lihtsalt prindib jooksva kataloogi. Ja nii sa näed siin, et ~ / Download tõesti lahendab / home / jharvard / allalaadimist. Nii et / home / jharvard on minu kodukataloogi. 

Nii saame cd dot dot. Nüüd dot dot on eriline kataloog, mis viitab alati üks kataloog üles. Nii et kui ma olen ~ / allalaadimine, siis cd dot dot läheb toob mulle Tilde. Mida me arvame cd dot dot läheb toob mind nüüd? See toon mulle / home. Nii Tilde poolt print töökataloogi, Ma olen nüüd / home / jharvard. üks kataloog üles, et nüüd ta ütleb siin / home. 

Nüüd cd dot dot. Nüüd ma olen juurkataloogis, ja sa ei saa seda uuesti teha. Sa lihtsalt jääda juurkataloogi igavesti. Juurkataloogis on terve hunnik asjad, et kui sa tahad, et uurida, saate. Näiteks, kui ma lähen arvesse bin, mis sisaldab kõik need binaarpaketist nagu ls, ja cd, ja kõik need asjad. Nii et need käsud vaja olemas kusagil süsteemis ja see on / bin kataloogi. Aga peaaegu kõik, mida vaja on saab olema sinu kodukataloogi. Ja cd ilma argumente üldse, võiks öelda, cd ~, ei ole vaja. cd läheb toob sulle tagasi oma kodukataloogi. 

Üks viimane. cd - läheb toob teid tagasi Viimase kataloog, mis sa olid. Nii et ma lihtsalt cd'd kaks korda järjest, nii et mu viimase kataloog oli kodukataloogi. Kui ma lähen kärpida bin ja nüüd lähme üles ja kasutajasõbralikuks. Kasutaja aktsia kohta. Lähme kasutaja aktsia kohta. Nüüd ma olen nüüd kasutaja aktsia kohta. cd -, tagasi prügikasti. Nii et see muutub eriti kasulik kui sa have-- ja see saab lülitada. Nii et kasutaja aktsia tagasi bin, osa bin. 

Nii et see muutub kasulikuks. Sa võid leida ennast võttes palju, palju, palju pesastatud katalooge. Ja sa tahad midagi teha reaalne kiire ülemisse kataloogi. Lähed, et kataloog, teha muutused ja värki, ja nüüd sa tahad minna tagasi sinna, kus sa olid. cd -. Ma olen alati pettunud kui ma juhtun minema selle kataloogi I tahtsin teha tööd. Ma olen alati pettunud, kui ma tegin seda kahes etapis ühe asemel sammuna sest see tähendab, et cd - läheb tuua, et vahekohas asemel, kui ma tahan minna. 

Nii näeme kõik nimekirja faile. Me teame, kuidas saada umbes nii kaugele. Nüüd räägime toimetamine faile. Nii see muidugi, sa oled peaaegu alati oodatud kasutama gedit. Kui soovite, võite võtta järgmine samm ja alustada õppimist käsurea tekst toimetaja. Nii erinevad võimalused olemas. 

Ja need, mis on ilmselt kavatse olla teie jaoks oluline, meil Nano, Vim ja Emacs. Nii Nano on algajatele käsurea tekstiredaktor. Nii Nano lähme edasi blah.c ma varem loodud. See on lihtsalt see standard C-faili. Ja sa näed terve hunnik kraami toimub allosas ekraani ja ilmselt blah.c sisaldab see C-koodi. 

Nii et selles toimetaja mida ta ütleb on bottom-- nüüd see Katus tähendab, me näeme seda ^ G ^ X ^ O. Nii et peaaegu kõik kontekstis, et näete, võite näha, et katus sümbolit muudes kohtades online, on Stack Ülevooluinkontinents, midagi sellist. See peaaegu alati viitab kontrollida. Nii et väljuda ma tahan teha Kontroll X. kontroll X väljub. Ja ma saan kasutada minu nool klahvidega liikuda. Pange tähele, ma ei saa punkti ja klõpsa lihtsalt. Sa pead kasutama oma nool klahvidega liikuda. Võib olla seade et punkti ja klõpsa. 

Kuid olgem teha mõned muudatused. Nüüd kontrolli X minna väljumist. See saab öelda kokkuhoid muundatud puhvris. Nüüd kiire, y jah, n mitte. Kontroll C tühistada. Ma lihtsalt öelda jah. File name kirjutada. Vaikimisi faili et ta juba on. Enter. OK. Nüüd ma olen lihtsalt toimetatud, et fail, salvestatud, ja see on muutunud. 

Nii Nano on lihtsaim tekstiredaktor harjuda. Alternatiivid on Vim ja Emacs. Need on kõrgema tekstiredaktoriteks mis on väga järsk õppimiskõver. Nii et minu isiklik eelistus on Vim. Ja see on mitmesuguseid võimalusi. Ja kui harjud et see, mida sa iial ei Otsi muu tekstiredaktor, sest sa lihtsalt on nii palju asju, teile kättesaadavaks nendel, kuid see võtab tõesti kaua õppida. Nii et äkki tahad lihtsalt sundida ise kohe, et harjuda sellega, kuid ma ütleksin, et see on seda väärt. Aga see on raske. 

Ja siis Emacs. Olen alati võitlevad Emacs sest Ma tean, kuidas seda teha mitte midagi. Ilmselt Emacs ei ole vaikimisi paigaldatud seade. Tõenäoliselt lisada, et kui default rajatised. Kui sa õpid, üks Vim või Emacs, seal ühtegi kaalukat põhjust kunagi õppida teiste, aga see on täiesti erinev stiil. OK, nii et see toimetamine tekstifaile. 

Sihtrühm: Kui sa olid ummikus aastal Vim just nüüd, kuidas we-- 

ROB BOWDEN: On Mitme transpordiliikide Vim, ja seal on kogu õpetused õppimise Vim. Nii et kui teil juhtub olema lisamis- et kirjuta tekst, mida saate sisestage et erinevatel viisidel, aga mul on, kuidas sa sattuda sisestada režiimis. Või saada välja mingeid erilisi režiim, mis sa oled, vaid põgeneda. Ja sa lihtsalt bash põgeneda saada läbi mis tahes nested režiimid oma sisse. Just OK, nüüd olen tagasi tavarežiimis. 

Ja nii tavarežiimis, jämesooles. Sa näed seda ilmuvad allosas. Ja siis q. Nii q quit kui oled teinud muudatusi, mis I-- Ma teen muudatusi? Olen teinud muudatusi ilmselt. Nii et kui olete teinud muudatusi, siis see öelda, et võite panna hüüumärk. Ma lähen kutsun seda pauku. Nii saab asetada Keeld lihtsalt loobuda ei tee midagi, või käärsoole wq päästab ja lõpetan. Nii w üldiselt on kirjutada. Nii et kirjutada fail. Oskan kirjutada ja lõpetan. Või siis võiks olla lihtsalt qx slam, q bang lihtsalt saada välja seal, olenemata kõikidest muudatustest, mis sa oled teinud. 

Olgu, nüüd lähme go-- saame luua faile. Alustame eemaldades faile. Ja ma lihtsalt visata ühes kiire uue käsu, puudutus. Nii puudutada suva. Touch baar. Touch Baz. Kui ma ls, nüüd näeme et need failid on olemas. Nad on täiesti tühi. Nii puudutus on lihtsalt lihtne viis ühe, [kuuldamatu]. Kaks tehniliselt just riik , see värskendab loomisaja. Nii et iga fail, et loote on ajatempel sellega seotud. Nii Baz loodi 14. september kell 16:21. Nüüd on 16:22, nii et kui Ma puutuda Baz jälle oleme näha, et Baz oli kõige hiljuti modifitseerida 16:22. Aga muidu ma peaaegu kunagi vaadata loomisaja faile. Nii puudutus, siin ma olen lihtsalt kasutades tal luua mõned kiired faile. 

Olgu, nüüd rm on käsk, et me hoolime siin. Ja me saame rm boo. Ütle eemaldada regulaarselt tühi fail boo. Ja me võime kirjutad y, ja nüüd on see eemaldab. rm Baz. Eemalda regulaarne tühi fail Baz ja n-tüüpi mitte. Nüüd see ei ole eemaldatud. Nii baar ja Baz endiselt olemas. Foo on läinud. GABRIEL: Hoidke rääkimise. ROB BOWDEN: Suur. Nii tüütu sõnum siin eemaldada regulaarselt empty-- Mida sa teed seal? Eemalda regulaarne tühi fail. Nii et kui me ei taha olla häirib, et sõnum, me ei viska selles -f lipp, ja nii see on jõustunud. Ja nüüd, kui ma rm -f, see ei kavatse öelda tahad kustutada selle faili. Seda saad lihtsalt teha. Ja ls, ma ei näe, baar seal enam. 

Nüüd, kui on potentsiaalselt ohtlik käsu. See kipub mitte liiga halb. Me tuleme tagasi teise, kui see võib saada tõesti ohtlik. Ja olgem luua mõned temp kataloogi. mkdir, teine ​​käsk. Nii mkdir on käsk mis muudab kataloogis. Ja nüüd, mida ls me näeme seda kena valgus sinine esile temp kataloogi. Ma ei cd temp. Ja ma ei saa mkdir foo. cd suva. mkdir baar. cd baar. 

Nii näeme, saame kergesti saada mõnda päris sügav pesitsevate. Nüüd, kui ma eemaldan kataloog? rmdir. Seega kui ma otse proovida rm, nagu tegime tavaline fail, rm baar läheb öelda ei saa eemaldada bar. See on kataloog. Seal on spetsiaalne käsk eemaldades kataloogid, omamoodi. Nii rmdir baar. Nüüd baar on läinud. 

OK, nii et rmdir ma päris palju kunagi kasutada. Põhjus being-- nüüd lähme teha tavaline fail baar siin. Nii rmdir boo. rmdir. Eemaldamine nurjus suva. Kataloog ei ole tühi. Nii et sa ei saa eemaldada dir kohta kataloog, mis on asjad seal. 

Nii et teil on mõned võimalused. Võite minna, et kataloog, eemaldage kõik käsitsi ja siis tulevad välja ja rmdir kataloog. See ilmselt kõlab tüütu. Mis siis, kui on olemas tuhandeid failide seal? Noh, võid rm *. Me räägime * teine. Sisuliselt tähendab see kõike. Aga veel parem, nii rm -r. Nii rm -r-- sisse palju kontekstides, -r tähendab rekursiivne, millest me räägime, mida rekursiivne vahenditega mitu nädalat. Aga see tähendab põhimõtteliselt traverse kogu see kataloog ja eemaldada kõik. 

Nii rm -r suva ei ütle laskutakse kataloog suva? Jah. Eemalda regulaarne tühi fail foo / baar? Jah. Eemalda kataloog suva? Jah. Nüüd foo ja kõik sees on eemaldatud. 

Nüüd, kui on võimalik saada eriti tüütu ta-- olgem puudutada 1 puudutage 2 puudutage 3. Kas on terve hunnik faile. Kui ma tahtsin, ma võiks luua tuhandeid faile siia. Ja rm -r suva läheb olema üsna tüütu. Jah, jah, jah, jah, jah, jah. Mis palju rohkem faile kiiresti näha, mitu korda Oleksin kirjuta jah. Noh, me just enne nägime, kuidas me saame vabaneda vajavad kirjuta jah, -f. Nii mkdir foo cd suva touch 1 2 3. OK, nii rm -rf suva läheb pimesi eemaldada suva täielikult. No kiire. Ei midagi. Foo on läinud. 

Nii et ma pigem kasutada seda käsu kogu aeg. See tähendab, et see on väga ohtlik käsu sest kui ma midagi sellist seda, see ei küsi. Ta on läinud. Ja see juhtub üsna sageli, ja isegi kõrgemal tasemel CS kursused. Vahel me näeme midagi, kui keegi ütleb, et ma kogemata meie rm rf-ed minu kodu Kataloog ja kõik minu P komplekt on läinud. Ja see on laastav, kuid seal ei ole prügikast. Seal ei ole midagi allalaadimist. See on lihtsalt läinud. Veelgi halvem oleks midagi rm -rf /. Nii et me just arutasime et juurkataloogi. Talle kuuluvad kõik failid süsteemi. Asjad kipuvad üsna räpane kui sa eemaldad asjad nagu ls, ja cd, ja kõik need. 

Sihtrühm: Mis vahet seal on vahel rm, RF ja rm * ROB BOWDEN: Nii rm * - 

ALLISON: Küsimus oli, mida on vahe rm, rf ja rm *. 

ROB BOWDEN: Nii rm *. Star üldiselt vahendid kõik sisu selles kataloogis. Proovin mõelda teistele viisil, mis näitaks star. Noh, täht tegelikult üldiselt tähendab vastanud ühtegi muster. Nii et kui mul on fail nimega dog1, puudutage dog2 puudutage cat1 puudutage 2. kategooria. Nii ls * 1 trükkimineku cat1 ja dog1, sest staar on võimalik täita aastal with-- üks peab olema seal, kuid star võib olla kas kass või koer. See on metsik kaart. See on sõna Otsin. Wild-kaardiga. Või ma võiks ls koer * ja Ma sain näha dog1, dog2. Nii et need on loetletud failid mis sobivad eriti muster. Võite kasutada ls sel viisil. 

Ls * tärniga sobib midagi. Nii see läheb printida kõik sisu selle kataloogi sest nad kõik võrdsed. Ta ei kavatse midagi printida ülemise taseme kataloogidest. Kui mul on sub kataloog, suva, ja touch 1 2 3-- nii nüüd kui rm * star, eemaldada cat1, 2. kategooria, dog1, dog2. Ei saa eemaldada suva. See on kataloog. 

Nii star laieneb kõigile failide kataloogis. Nii tehniliselt rm * on nagu öelda rm cat1, 2. kategooria, dog1, dog2 suva. Arvestades rm -rf, tehniliselt star oleks saavutada seda, mida me tahame, kuid rm -rf-- kui ma lähen läbi selle kataloog, rm -rf temp, et läheb minema temp ja rekursiivselt eemaldada kõik. 

Nii et täht on eraldi selles, et On arusaadav, by-- nii see asi et ma olen töötab see asi mis sunnib mind käsud ja seejärel täitev ja teed neid kutsun seda minu kest. Ja nii see kest on ise programmi. Ja kui ma tahtsin, ma võiks joosta / bin / bash. Kest on kutsutud bash. Ja nüüd märkame midagi veidi muutunud, ja see on, sest minu seaded kest on mõnevõrra erinevad. 

Aga nüüd olen tehniliselt töökorras kest jooksul oma esialgse kest, ja ma ei saa lahkuda, et kest ja nüüd Ma olen tagasi oma tipptasemel kest. Selleks, et öelda: et on-- star. Nii staar on midagi arusaadav bash. Nii rm -rf, -rf lipp arusaadav vaid rm. Ta teab, et kui sa edasi -rf et sa tahad seda rekursiivselt eemaldada kõik failid ilma küsimata. Staar on midagi aru poolt bash, et kui te ütlete rm * bash ei kavatse öelda hey rm * eemaldage star. Bash läheb öelda rm * eemaldada cat1, 2. kategooria, dog1, dog2. See automaatselt kavatse laiendada kõik failid kataloogist. 

Ja sarnaselt tilde on teine sümbol, mis bash aru saab. Kui sa ütled cd ~, bash laiendab et oma kodukataloogi. Muud küsimused nii palju? OK, siis me ei kavatse hakata läheb kiireks. 

Tab lõpetamist. Lihtsalt viska see seal. Paljud inimesed ei ole aru, et see on olemas. Nii et kui ma tüüpi cd dow ma tahan minna allalaadimist. Ma ei pea kirjutama nloads. Võin lihtsalt vajuta Tab. Seega tunnistab, et Dow on eesliide, mis ei sobi midagi mujal käesolevas kataloogis, nii et see on täielik, et teile. Nüüd ma saan sisestada. 

Olen ka seda rekursiivselt. Nii mkdir foo. Läheme suva. mkdir baar. Nii läheb tagasi oma koju kataloog, ma näen allalaadimist. Nüüd lööb taaskäivitada, automaatselt läheb täita suva. See on ainus kataloogi. Lööb tab uuesti automaatselt lähed täitke baari. Nii et nüüd ma olen (~ Allalaadimised / foo / bar). 

Nii et selle kaardi valmimist kui ma sain tööaega ja olengi üle kellegi õlal, ja nad ei kavatse rm D-O-W-N-L-O--D-S, Mind suremas. Just tab, tab, tab, tab. Nii et kindlasti kasutada sakk. Ja täpselt samamoodi üles maha palju inimesi lihtsalt, mis juhtus kunagi tabanud üles ja alla. Seda saad läbida eelmise käsud, nii et kui sa lihtsalt jooksid midagi, ja soovite käivitada uuesti, lihtsalt oota kuni sa saad seda. OK. 

Nii kiire, mõned muud asjad. Lähme tagasi temp. Loome mõned failid. Nii et siin ma olen lihtsalt hakka mõned sõnad. koer, kass, mjäu. Teeme koer, kalad. Nüüd rep on väga kasulikke käske, et sa kasutavad otsida kogu failid konkreetse teksti ja tehniliselt saate teha tõesti keeruline väljendid see sobitada. 

Nii et siin, kui ma grep, ja mida ma tahan otsida? Ütleme Otsin kassid, ja Ma tahan, et otsida kõiki neid faile. Niisiis, kuidas ma seda teha kõiki neid faile? Star. Nii faili üks, mul on kass. Ma ilmselt oleks võinud kutsus ta midagi paremat, sest see näeb välja nagu line numbrid või midagi. Aga faili ma pean kooskõlas kass. In faili kahe Mul on kooskõlas kass. Nii et nüüd ma ei vaata sees fail ühe ja vaata oh yeah, et faili ei ole kass. Teade fail kolm ei vastanud sest kass ei ole seal. Võin grep eest mjäu. Ainult esitama kaks on mjäu. 

Nii et see saab kombineerida, jälle koos -r, mille nagu ma enne ütlesin Sageli tähendab rekursiivne. Ja nii võin tulla siia, grep -r mingil juhul of-- olgem muuta see lihtsalt visata kass seal. Nii grep -r iga astme kass kogu selles kataloogis. Ja see rekursiivselt otsida iga alamkataloogi. Nii Baz, seal on kass. In temp / 2, seal on kass. Ja temp / 1 seal on kass. Nii et otsides faili piires. 

Nüüd võid kasutada ka leida. Ja nii leida on konkreetselt umbes otsin faile eesnimi. Nii et teeme veel. Läheme allalaadimist. Touch dog1. Touch 2. kategooria. Touch cat_dog. Touch CatCat. 

Nii et ma tahan leida kõik faile koera nimi. Nii et leida, ja pikim kord, kui ma kunagi meelde kuidas leida töö, kuni ma lõpuks lugeda midagi, mis tegi ta nii selge. Nii et leida automaatselt rekursiivne. Sul ei ole vaja läbida r. Nii et leida dot. Me ei rääkinud dot veel. Arvestades dot dot alati tähendab üks kataloog üles. Dot tähendab alati aktiivses kataloogis. Nii et ma võiks rm -r dot Samamoodi võin rm -rf. Lõpuks nad sama tulemuse saavutamiseks. rm -rf dot läheb eemaldada kogu aktiivses kataloogis. 

OK, mida ma ei taha teha seal. Aga leida dot. Nii rekursiivselt otsida praeguse Kataloog ja nüüd kõik Pärast seda on hunnik lipud, et sa kasuta jätta asju tagasi. Nii et leida dot tagasi kõik, mis ta leiad praeguselt kataloogis. Need on kõik failid rekursiivselt otsides. Me näeme, mõned neist teine. 

Aga kui sa ei tea, kuidas ma seda teen et nii Command K, vähemalt minu terminal Mac puhastab ta. Kontroll L üldiselt puhastab see mingit terminal. Võid sisestada ka selge. Ja kui sa kunagi arvesse imelik scenario-- see juhtus minuga paar AEG_ kui värvid oma viipasid on täiesti segi, või siis ei ole võimalik midagi näha on kirjutatud, kui sa kirjutad, sest mõnikord nagu taustavärvi seada sama esiplaani ja nüüd te ei näe fonte. Reset on midagi, mis lihtsalt taastab sa vaikimisi mustal taustal, valge ees, või mis iganes seate neid. 

Nii et kui me jäime? Leia dot. Nii et nüüd on kõik minevik see punkti piiri tulemused midagi, mis sobib antud muster. Nii et siin ma tahan, et otsida kõik nime kass. Ma ei saanud midagi. Miks on see nii? Noh, ma lihtsalt otsida midagi täpselt nimi kass. Kui ma tahan, et otsida midagi et on mingi muster, ja cat-- hinnapakkumisi tehniliselt ei ole vajalikud, aga ma visata neid seal. Nüüd ta leiab CatCat sest see on ainus asi, mis on mingi suvaline muster järgneb kass. Ma ei pane kass *, ja nüüd leida CatCat, cat_dog, 2. kategooria, sest need on kõik asjad, mille kass alguses järgnes midagi. Seda saab kombineerida. Kui soovid otsida kõiki C faile mis teil on, võite teha * .c. Oleme blah.c siin. Nii et leida tööd. Võite otsida. See on terve hunnik lipud edasiste piiranguteta. Ja üks neist, ütleme -d. Nii taunitud. Oh, see pole see, mida ma tahan. Ei -d. Liik d. Nii et leida dot - tüüpi d. Mis siis, et just tegin on Otsin kõik failid aktiivses kataloogis koos a-- d tähistab directory-- kataloog tüüp. See tagastab kõik kataloogid praeguses kataloogis. Ja tüüp F on regulaarse failid kõik mitte kataloogidest. Nii et see on lihtsalt näide muid võimalusi, kuidas saab piirata otsingut teistele kui lihtsalt faili nime. 

See on olnud 30 minutit. Ikka läheb. 

ALLISON: Ma tuul läbi. See oleks hea. 

ROB BOWDEN: Nii mõned muud asjad. Nüüd paugu, hüüumärk. Nii et üldiselt means-- Noh, vaatame näiteks. Nii! F, mis on, et kavatsete teha? Noh tundub, et on korduv leida dot tüüpi f. Aga! G? See lihtsalt grep -r kass *. Nii paugu saate korrata Hiljuti tehtud käsk. Nii et kui ma tüüpi! Gre, siis läheb uuesti teha käsud, mis algas gre kõige hiljuti. 

Ja te näete kõiki neid käskude ajaloos. Nii ajalugu. Need on kõik käsud, olen kestab tänapäevani. Ja noh, see ei ole sõna-sõnalt ainult täna aga ma olen ainult kasutanud seda seade nagu täna. See on sinu tervikuna ajalugu oma bash shell, välja arvatud see lõikab mingil ajahetkel. Sihtrühm: Mis juhtub, kui sa seda teed ajalugu [kuuldamatu] käsk ja viga tulemuse siis prinditakse the-- 

ROB BOWDEN: Jah, kui on olemas viga ühes neist commands-- Ütleme, et on viga käsk ei leitud. Ikka tundub ajaloos. Hea küll. Muud küsimustele midagi? Nii et pauk. 

Nüüd tõesti kasulik käsk, mees. Niisiis, mis annab teile käsitsi antud käsuga. Ütleme, et mees ls, nii see näitab mulle ls. Selles on loetletud kataloogi sisu. Ja see on koht, kus ma näen, et seal on neid erinevaid lippe, mis on olemas. Nii näeme, et ls -l olemas kui me loeme, et. ls -l annab mulle see täielik nimekiri kataloogi kes omab faili faili suurus, Muudetud timestamp. Nii ls -a on veel üks, et võite tegelikult kasutada mõnevõrra sagedamini. -AL on minu kõige levinum lipu möödunud ls. 

Nii -a, märkate seal on palju rohkem faile kui lihtsalt ls. ls -a. Mis on ühist kõigi nende failide? Nad algavad punktiga. Nii et see on konventsiooni Linux et failid, mis algavad punktiga on peidetud. Nii et see tähendab lihtsalt, et kui me lihtsalt otse ls, või me otsivad selle kataloogi abil leidja samaväärse või Windows Explorer samaväärne, et me ei taha näha neid dot faile. Nad lihtsalt saasta silmaring. Nii et nad on peidetud kui te just paluda neil midagi -a. Nii et ma ei saa cd .local ja ma näen et see on iseenesest kataloogi jagatud kataloogi ja rakendused ja blah blah blah. Nii dot, failide nad lihtsalt peidetud. 

OK, nii et teised olulisemad. Mul on paar ma ei jäta. Olgem lihtsalt reaalne kiire rääkida Faili ümbersuunamine asju. Nii et seal on terve rida keerulisi asju, mida saate teha need, kuid ainult selleks, et neid näha, oletame, kaja. Teine käsk. Tõesti loll käsk. Kõik see on print, mida ma ütlen seda. Nii kaja tere. See lihtsalt kordas tere ekraanil. Tere maailm. Echoes hello world. 

Nii et ühe käsu või ühe sümbol, mis bash mõistab on see suurem kui sümbol ja see on väljund faili sümbol. Nii et kui ma väljund seda suva, seal on nüüd fail nimega foo, sees mis on hello world. Nii teate, et kui ma kordan hello world toru suva, ta ei kaja hello world. Selle asemel võeti kasutusele faili suva. Ja teine ​​käsk lihtsalt viska see sind, kass. See on lihtne viis lihtsalt täiesti list faili sisu nii et ma ei pea alustama tekstiredaktor, et vaadata seda. Nii sisu suva fail on hello world. Ja ma võiks kass blah.c, sisu on see. 

Jällegi on need käsud, et ei olete oodatud kõik nad meelde. Idee olete näinud neid. Võib-olla te töötate midagi, ja sa oled nagu ma olen haige avada seda faili. Ma soovin, et võiks lihtsalt vaadata at sisu reaalne kiire. Sa võid seda teha, siis tagasi vaadata ja öelda, oh ma mäletan midagi mis on olemas, ja see on kass. 

Nii et läheb faili. Nüüd ei ole tõesti midagi head Näiteks lugemine failist veel. Mis on midagi, mis võtab midagi standardiks? Iga lihtne Linux käsk? Kui me sellele paari nädala jooksul kõik piece-- hästi, Selle nädala teil on tükk, kuhu alustavad kasutajalt. Ja nii tavaliselt kirjutad et sisend klaviatuuri. Kirjutamise asemel, et sisend klaviatuuri, saate selle asemel toru failist nii et kui sa Mario, ./mario, toru ükskõik milliselt fail ja et läheb käivitada Mario programmi. Ei oodanud sisend klaviatuuri asemel on lihtsalt loen read suva faili. 

Nii et suurem suva paneb selle suva fail ja vähem kui suva võtab asju suva fail ja kasutab seda sisendina programmi. Ja just seda näha, võiksime ka kaja foo bar Baz ja seejärel ühe asemel üle, teeme kaks arvesse suva. Mida see teeb? See lihtsalt lisab toimikule. Nii et selle asemel teate, kui ma kordan blah sisse suva ja siis kass suva, see on lihtsalt blah. Nii et kui te väljund faili, siis täiesti kirjutab, et faili. Kui tahad lihtsalt lisab, double [? teehöövel. ?] 

Ja viimane on toru. Toru Gets palju keerulisem, kui see võtab toodangu ühe käsu ja toidab see järgmise käsu. Nii et mõned levinud asi, ajalugu. Niisiis, vuih, ma ei taha, et vaadata seda. Näita mulle kõik käsud minu ajalugu kus ma grep-ed midagi. Ei, see on segane. Näita mulle kõik käsud, kus ma leian. Kõik leia käske ma kunagi jooksis. 

Nii ajalugu. Nüüd ajalugu väljundid sõeluda see käskude nimekirja, aga ma ei taha väljund seda ekraanil. Selle asemel ma lähen toru see grep. Nii et olgem grep kõigi juhtumite kohta leida. Nüüd asemel grep võtmist sisendi asemel of-- grep suudab käsitleda kui input-- me oleme kasutades grep veidi erinevalt siin. Nii et selle asemel kirjutades nimekiri asjad, mida me tahtsime, et otsida ja ütles grep võtab sisendiks. Nii et kui ma lihtsalt grep leida, siis ootab mind kirjutama asju. Nii et kass hello leida. Tere. Leia. Pange tähele, iga kord kui ma kirjuta leida tunnistab, et ma kirjutada leida. Nii et selle asemel, tahe otsi faile leida. 

Nii et ajalugu hakkab nüüd toodangu loetelu kõigist käske. Me paneme selle väljund ja me juhitakse see grep, ja nii see sülitada välja kõik juhtumid leida. Põhjus, miks ma ütlesin seda tahaks olla segane on see, kui I-- see on ikka segane. Kui ma grep eest grep. Pange tähele, see on päris palju alati näitab käsu ma lihtsalt jooksis, sest see käsk endal grep sees on. 

OK, nii et mis tahes küsimustele midagi? Ja ma kanda see üle selles punktis. Loodetavasti see on kena kirjeldatakse kõiki käske et sa ei pea olema mällu, kuid need moodustavad tahke 95% sellest, mida ma teha käsureal. Samuti pidage meeles, et käsurida ise, bash on programmeerimiskeel, ja nii kui sa saad näha seda, siis Võiksid teha tõesti keeruline asju. Ja nii see on asju silmuseid ja IFS ja kõik need et sa lähed, et harjuda Teie programmeerimiskeeli. Aga see on väljaspool käesoleva punkti reguleerimisalasse. OK, nii et ei ole küsimusi? ALLISON: Puudub? GABRIEL: Kas sa mina-- ALLISON: Ma ei saa seda teha kaevanduse, kui soovite. Saame näha, mis juhtub. ROB BOWDEN: Väljas Allison. ALLISON: Woo. Sa oled raske tegutseda järgida, Rob. Kas sa tahad, et vahetada sinuga? Või sul on, OK. Ma lähen, et proovida ja mitte päris nii pikk seal. Vaatame, kas see tahe tööta nii, nagu ma tahan. Võib-olla? Haha! Jah. 

Nii et ma olen lihtsalt läheb väga kiiresti minema läbi muutujad, silmad, conditionals, ja natuke kompilaator. Kui teil on küsimusi igal ajal, siis mind peatada. Need poisid meenutavad mulle kordama Teie küsimus juhul, kui ma unustan, kuid ei tohiks olla liiga halb. 

Nii muutujad, jah. Meil ei ole üks teie Scratch tükki siin. Olen kindel, et enamik teist, kui sul oli mingi mäng et sa loodud Scratch, siis tuli jälgida midagi skoor, või aega, või midagi sellist. Nii et need heleoranž tükki, mida me näeme seal on vaid Scratch kujul muutujad, ja siis kindlasti olema muutujaid kasutades kogu oma programmid. Kui sa ei ole, ma ei ole tõesti kindel, mida sa teed. 

Aga ikkagi, suur asi, määratleda muutujad. C iga muutuja on deklareeritule, nii et ma andsin teile väga Üldiselt üks ülaosas. Nii et sul on oma tüüp ja siis mis iganes te otsustate, et helistada oma muutuv. Nii et antud juhul tüüp Teie muutuja nimekirja. 

Meil on kolm näidet. Char mõne klassi, kohta, mis on see, mida Ma olen kindel, et kõik tahavad saada selles klassis. Saate määrata mitut muutujad ühel real nii kaua, kui nad on kõik sama tüüpi, mis on meie teine ​​näide olemas kui sul on kolm muutujate x, y ja z. Nad kõik ujub. Ja siis te saate ka selles viimases näiteks int tulemus ja number Meeskondade, saate vormindage neid seal. 

Nii et keset näide, kus me lihtsalt float x, y ja z, need ei ole vormindatud veel. Neil ei ole mingit väärtust. Või on neil prügi väärtused. Ja kui sa püüad ja neid kasutada, kompilaator kisa sind. Sa pead nii deklareerima ja initsialiseerida muutujad. Nii et see viimane üks, me teeme nii. Me kuulutame muutujad kohta skoor ja võistkondade arv, ja me algväärtustamisel neid, andes neile algväärtused 7 ja 4 võrra. Külm. Igaühel on hea? Awesome. 

OK, nii et mõned konventsioonidega. Kui kutid lugenud läbi style 50, neist on vaid asjad, mis me tahaksime eest teil rakendada oma stiili. Nii sisukas nimed. Kui alustada kutsudes asjad Esmalt x, y ja z, eriti kui sa sattuda pikema programmid, sa oled ilmselt läheb ajage ennast ja olla nagu mis on see muutuja osutab. Mul pole aimugi, mida see tähendab. 

Nii et kui see on mõeldud selleks, et hoida skoor, nimetame seda skoori. Kui see tähendas, et korraldada mõned vastus või tuua, anda talle nimi niimoodi. Sest silmad, mis me sattuda järgmise slaidi üksik täht muutujad on fine. ROB BOWDEN: I, j ja k on lihtsalt konventsioonide jaoks silmuseid et igaüks ootab neilt mida nimetatakse i, j ja k. Teil on võimalik helistada them-- näen järjest veeru või rea kõne mõnikord kahe astmeline silmusesse see on ka omamoodi standard. Aga i ja j on täiesti mõistetav. 

ALLISON: Yeah, i ja j sa oled täiesti fine. Selguse huvides nagu mõned oma P komplekti, see võib mõtet olla rohkem kirjeldav asju seal lihtsalt jälgida seda. Aga ma arvan, i, j ja k ma arvan Valdav enamus meie kõigi kasutada. 

ROB BOWDEN: Mis need konventsioonide, nii stiil on oluline. See on üks neljast telge millele sa sorteeritud, ja see on nii lihtne, et lihtsalt minna üle Sinu P seatud lõpus ja veenduge, et seal ei ole stiililine vigu. Seega veenduge, et olete tabbing õigesti. Veenduge, et teie muutujaid nimega. Jäta mõned kommentaarid. See on väga lihtne saada neid punkte. Sa ei pea mõtlema midagi selleks, et saada nendest kohtadest. Sa ei pea mõtlema midagi välja. See on lihtsalt muuta see otsima ilus. 

ALLISON: Tegelikult oleme on stiil 50, mis ütleb sulle, kus sa jamad up kui sa jama stiilis ja ütleb teile täpselt, mida te on vaja kindlaks määrata ja kui sa pead seda parandada. See on ka lihtsalt hea mainida et see loomulikult poliitika et kui sa oled kontoris tundi ja teie kood on jama, saame langema aidata sa kuni see näeb parem välja. Nii et kohe teha, hoida järjekindel stiili, sa oled ka lihtsalt kavatse teha Teie elu tervikuna palju lihtsam, kui sa üritad minna läbi siluda. Kui sa üritad aru saada, kus sa oled kadunud lokkis traksidega ja nad on kogu koht, sa oled lihtsalt muuta oma elu raskemaks. Nii on kooskõlas stiilis. Ma luban, et teen oma elu lihtsamaks. See teeb meie elu lihtsamaks. Igaühel on palju õnnelikumad. Ja see, mida sa tahad. GABRIEL: Sinu hinne on suuremad. ALLISON: Jah, ja oma klassi. Kui teie TF on nagu sa, kipub olema soodsad. Olgu, ja siis lihtsalt Teise punkti kohta siin. Järjepidev initsialisatsioonistringi. Nii nagu me nägime, saate kuulutada ja initsialiseerida asju. Mitme muutujaga sama liini. Üks asi, mida me tahaksime, ei teha, on tuvastada mõned muutujad ja saa initsialiseerida neid sama line, et te algväärtustamisel teised. 

Nii et kui see on tehtud ei ole mõtet üldse, meil on näiteks siin kus me kuulutatakse ints muutujate kvartalit dimes ja penni, kuid kvartali ja penni ei ole esialgse väärtusega. Me ei ole vormindatud neid, kuid keset olemas me juba vormindatud dimes 0. Nii et kas teeme kvartali dimes, penni. Või kvartali võrdne 0. Dimes võrdne 0. Penni võrdub 0, või mis iganes need esialgsed väärtused. 

Big asi stiilis, olla järjekindel. Kui kahtled, olla järjekindel. Aga jälgida meie stiilijuhend liiga. Külm. Igaüks hea on? 

Sihtrühm: Kus stiili juhend? ALLISON: stiilijuhend on nüüd-- milline on koduleheküljel? 

GABRIEL: Ma arvan, et see on manual.cs50.net/-- ALLISON: Style? 

GABRIEL: Style. Yep. 

ALLISON: Jah. Nii et küsimus, kus on stiil 50. manual.cs50.net/style. Jah? 

Sihtrühm: Kui me määratlemisel muutujad, see on OK Kui me paneme nagu [kuuldamatu] nagu int tulemus ja seejärel int eesmärk. Nii et kas te ütleksite, et nüüd me oleme sain määratleda neid koos? 

ALLISON: Nii kahtlema, peaks teil on koondatud koodi kui sa defineerid muutujad nagu int tulemus ja järgmisel real int mäng? ROB BOWDEN: On kindlasti Juhul kui üleliigne kood on halb. Ma ei arva, et üleliigne kood. Ma peaaegu kunagi kuulutada mitut muutujad sama liini kunagi. Ja kui midagi, siis sellepärast tavaliselt ma jätan mingi kommentaar selgitada, mida muutuja on. Nii et ma ütlen int tulemus kaldkriipsuga kaldkriipsuga. Jälgib iganes. Kokku kaldkriipsuga kaldkriipsuga. Nii et see on palju grosser niimoodi panna need kõik samal joonel. Ma lihtsalt ei pane neid samal real. 

ALLISON: Ma tunnen, et see on isiklik eelistus selles punktis. 

Sihtrühm: Kas see minna jaoks silmuseid ja kraami ka? ROB BOWDEN: Nagu sees? Nagu int i võrdub 0 koma pikkus võrdub midagi? Et sa ei ole valikut. Mis jaoks silmuseid initsialiseerimise part-- et sa võiksid näinud ainult int i võrdub 0 semikooloniga i vähem kui iganes semikooloniga i pluss pluss. See int i on 0, tehniliselt võimalik ka teha seda, mida me nägime enne koos komaga süntaks. int i võrdub 0 eralda j võrdub 3 komaga k võrdub 5. Sul ei ole valikut jagada mis üles võetud mitu rida, ja see on standard. Nähes seal on hea. ALLISON: vinge. Noh, mugav segue sisse silmuseid. Nii et jah, meil on siin mõned näited silmuseid, et te poisid nägid Scratch. Ja muidugi kõik need ei saa lihtsalt taasloodi C. Ja nad põhimõtteliselt võimaldavad teil korrata mõned sektsiooni kood kuni teatud tingimus on täidetud, mis jagame sattuda peale rääkimise umbes liinide conditionals. 

Nii et meil on kolm peamist liiki. Sest samal ajal, ja teha samal ajal, mis me kõik läbi minema kohe. Nii et esimene on silmad. Nii et mingil tingimusel, täidab selle ploki koodi. Meil on see lahe väike diagramm siin allosas. Aga põhimõtteliselt sul Sinu jaoks, et esimene rida, sa lähed initsialiseerida muutujad. 

Nii et kui me rääkisime, i võrdne 0 või i on võrdne 10. Mida iganes sa vajad, et muutuja olema see saab olema vormindatud seal, deklareeritud ja vormindatud mõne väärtust. Siis on meil mõned tingimusel, et läheb olema kontroll oma muutuja vastu midagi. Nii puhul tüüpiline juhtum, kus äkki tahad käesoleva paragrahvi koodi täita viis korda. Nii et me tahaks olla int i on 0 ja me tahan olla, kui ma alla 5. Nii et see tingimus on lihtsalt läheb veenduge, et iga kord. Kui see tingimus tulemus on tõsi, siis on kavatse joosta kood, mis on täpselt mida see väike diagramm näitab. 

Ja nii ta täidab seda. Sellega ajakohastatakse muutuja, mis on see, mida me näeme, Viimase osa meie jaoks loop initsialiseerimise seal. Nii et see muudkui teed kuni see tingimus ei ole täidetud, ja siis see väljub silmuse ja jätka liigub koos ülejäänud oma programmi. Igaüks hea on? Külm. 

Nii et siin on näiteks väga sarnane midagi ma lihtsalt rääkisime. Nii et me lihtsalt soovite printida see on CS50 10 korda. Nii et näete siin on meil meie jaoks, ja siis me initsialiseerida muutuja i olema võrdne 0. Meie tingimus on kontroll et see on vähem kui 10. Nii et hinnata, tõsi, kui me esimest korda Start ja seejärel ajakohastab meie muutuja iga kord, kui ta tegelikult teostab ja trükib see on CS50. Ja lõpetab pärast 10 korda. Külm. 

Niisiis, kui silmuseid on kuni järgmise. Ja nagu näete siin, me lihtsalt Viimasel ajal see condition-- küsimus? 

Sihtrühm: Kuidas ma saan hüpata tegelikult lihtsalt mitte üks number, vaid kaks numbrit [kuuldamatu] i pluss pluss pluss? 

ALLISON: Nii et küsimus oli, kuidas saab värskendada oma muutuva rohkem kui üks korraga. Nii et ma pluss Plus uuendada üks iga kord. Kui soovid seda värskendada kaks, mida võiks teha, i pluss võrdub 2. 

ROB BOWDEN: Oled sa näinud pluss võrdub loeng veel? 

Sihtrühm: [kuuldamatu]. 

ALLISON: See on tegelikult sama asi nagu i võrdne i pluss 2. Nii see läheb seda võtma ja värskendada, kaks iga kord. Plus võrdub lihtsalt midagi me nimetame süntaktiline suhkur. ROB BOWDEN: Jah, need on olemas päris palju kõik aritmeetika operaatoritele. Nii et ma alati võrdne kahekordistuks number. j lõhe võrdub 3 on sama kui j võrdub j jagatud 3. 

ALLISON: Or miinus võrdub 2 oleks aland i kaks iga kord. ROB BOWDEN: Isegi mod võrdsete. Sa ei ole näinud bitwise ettevõtjad, kuid katus on võrdne ja ampersand võrdne, kõik need on olemas. 

ALLISON: Nii palju kordi, eriti teie esimese paari P komplekti, siis saad ilmselt incrementing poolt üks, et ma pluss pluss, j pluss pluss on kõik asjad, mida sa lähed et tavaliselt kasutavad. Aga see värskendus tingimus on jooksul täielikult sinu kontrolli all. Te saate uuendada seda mis tahes kaupa või mis tahes viisil soovid. Äkki isegi tahan, et see oleks juhusliku arvu vahel. Aga jah, seal on palju asjad, mida saate teha, et. Sa ei piirdu i pluss pluss. 

ROB BOWDEN: Lihtsalt, et sa tean, et see on olemas, siis ka olemas muus vormis, pluss pluss i. Seega, kui olete kunagi otsivad online ja juhtub, et näha pluss pluss i, päris palju tähendab sama asja. ALLISON: Cool. Hea? Awesome. Niisiis, kui silmuseid. Väga sarnane. Teil on haigus. Peamine asi, mida tähele siin on selle asemel, kolmest erinevast osast üles seada, on meil üks. Me peame lihtsalt mõned tingimus mis kuramuse kontrollida. Ja samamoodi, kui Selle tingimuse tulemus on tõsi, oma koodi läheb jooksma. Ja kui see on vale, siis lõpeb, liikuda onto järgmise osa teie programmi. Nii et see on omamoodi like-- mis on hea näide kontroll mõned normaalne? GABRIEL: Kuigi tõsi. ALLISON: Sa võid seda teha samas tõsi. Noh, 1 on võrdne 1. 

ROB BOWDEN: Seda saab teha while-- vaid selle asemel silmus, sa võid alati koodi silmus samal ajal loop, nii et ma on suurem kui 0 või samas i vähem kui 10. 

ALLISON: vinge. Ja siis on meil teha, kui silmad, mis on suurepärane kasutaja valideerimist, kus sa tahad midagi saada kasutaja, kas see on kehtiv, ning seejärel jätkata sealt. Nii et üks asi on teada, mille teha, samas on see, et see läheb täide, ja siis uuesti täita kui see tingimus on täidetud. 

Nii et ilmselt parim viis seda teha on lihtsalt näha, näiteks siin. Nii nagu ma just mainisin, kasutaja valideerimine on tõesti useful-- või teha whiles on tõesti kasulik kasutaja valideerimist. Nii et see on lihtsalt läheb uuesti ajendada teatud kasutajale kuni nad jõuavad positiivne arv, mis võib olla kasulik oma P komplekt sel nädalal. Ja nii sel juhul, kui me algselt programmi käivitada, see saab printida sisestage positiivne number. See saab saaksin kasutajalt, ja siis see saab kontrollida et sisendi vastu tingimusel, et olete loonud seda. 

Nii et kui see saab kontrollida. See saab öelda, OK, on meie panus negatiivne, või on see 0 või negatiivne, mis oleks kehtetu. Nii et siis oleks taas kiire. Küsimus? 

Sihtrühm: Kas see on sama siis, kui samas loop kui sa lihtsalt kopeerida selle koodi ja pane see [kuuldamatu] samas loop? 

ALLISON: Nii oli küsimus oleks Käesoleva olla sama vaid samas loop kui me lihtsalt kopeerida samas silmus üle. Nii et sel juhul oma aega silmus on läheb olukorra kontrollimiseks esimene. Nii sel juhul, kui me püüdsime kirjutada lihtsalt samas silmus, ta ütleks, kui sisend on väiksem kui üks. Aga meil ei ole sisendkäibemaksu ta. 

Sihtrühm: Kui [kuuldamatu] samas silmus, sealhulgas kõnealuse koodi kuid siis hakkama kood Eespool samas loop ka. Sa lihtsalt pidin seda koodi [Kuuldamatu] samas silmus. ALLISON: Oleks sama asi, jah. Nii võid lihtsalt write-- selle asemel, do-- jah. GABRIEL: Aga see on rohkem elegantne. ALLISON: Jah, see on rohkem elegantne. Võite sattuda disaini ja tühi-tähi, aga jah, saate täiesti teha. Muid küsimusi? OK, lahe. 

Nii et me oleme palju rääkinud tingimused kõik need silmused, mis meil on, nii et me oleme tegelikult sattumist tingimused Loogiline väljendeid. Jällegi, sa kasutad neid C nii lihtsalt selline üleminekul rohkem graafiline kasutajaliides tegelikult kodeerimine. 

Cool, nii suur, kui. Põhimõtteliselt lihtsalt võimaldab meil kasutusele võtta mõned loogika meie programm ja kontroll sys tingimustes. Nii et antud juhul OK, on n suurem kui 0? Jah, see on, nii et teil on võimalik täita seda. See on lihtsalt kontrollida, mõned tingimusel, et olete määrata, mida ma arvan, et me oleme kõik mugav kontrollimise tingimused. Külm. Nii et kui muidu on su teine, võib öelda, OK, kui see on tõsi, seda esimese asjana. Muidu ma tahan, et sa Vaikimisi ja teha midagi muud. Nagu antud juhul, siis kas valida positiivne number või negatiivne number. Sul on ainult kaks võimalust. Sa pead seda täitma sõltumata mida teie kasutaja sisendit. Nii saab öelda ka, see on suurem kui 0? Külm. Prindi positiivne number. Kui see ei ole, printida negatiivne. Igaühel on hea? 

Ja siis üks asi ära tunda, on et kui kui tingimus on täidetud, muidu kunagi ka täita. Ainult üks neist on täidab korraga. Nii et see on kompromiss. Sa ei saa olla nii. Sul on kas esimene tingimus. Sul on kas kui või teine, mitte mõlemad. Mis siis saab teha asju veelgi keerulisem, sest sa võid teha, kui teine, ja siis teine. Nii antud juhul me on kolm tingimust. Ja jällegi ainult üks neist on läheb lõpuks hukatakse. Nii võite olla ei tea, noh, kui sa on midagi, mis võib täita kahte neist. Võib-olla mis iganes sa oled sisestanud vastab mõlemale tingimusele Sest kui ja teine, kui. Ainuke asi, mis läheb sõitma 

ALLISON: Niipea, kui ta leiab midagi et see vastab tingimus, et tulemus on tõsi, et see, mida see saab käivitada ja ei midagi muud. Nii et kui sul oli see number 0 ja 5 teie esimene, või on see number vahemikus 3 ja 5 muud kui osa, ja sa sisend number-- Ma ütlesin, 0 ja 5 and-- 4. See saab löögi esimene. See saab öelda, OK, see number on vahemikus 0 kuni 5. Käivita ja lahkuda. Ta ei ole kunagi tabanud, et teine ​​variant. Cool? Awesome. 

OK meil on ka lüliti avaldused kui sa tahad saada isegi more-- või kahju, lüliti kõrval. Ma saan enne ise siin. Jällegi mitu kui klotsid sest, nagu ma just ütlesin on kiiresti leida seisund mis on täidetud ja kui teine, kui teine, see jätab. Kui teil on vaja vaadata Mitme asja, sa oled kavatse soovite kasutada seda, sest ta kontrollib iga kord siin. Nii et see jookseb läbi, ja kui see on suurem või võrdne 90, see saab printida nii. Ja see kestab läbi ja kontrollima iga üks neist. 

Sihtrühm: Nii et see oleks rohkem lollakas kui [kuuldamatu]. Kas see oleks nagu [kuuldamatu]? 

ALLISON: Küsimus oleks see lollakas või see seda, mida sa tahad. On tõesti sõltub sellest, mida sa tahad oma programmi. 

Sihtrühm: Ma mõtlen nagu kui paned 90. ALLISON: Kui paned 90-- Sihtrühm: [kuuldamatu]. GABRIEL: Sa lähed, et saada kaks asja. ALLISON: Sa lähed, et saada kaks asja. Jah, kaks. 

ROB BOWDEN: kaks? 

ALLISON: Ei 

ROB BOWDEN: neli. Kui paned 90, see saab öelda, et sa sain, sul on B, siis sain C, sul D. 

Sihtrühm: [kuuldamatu]. ALLISON: Õigus. Nii et ma sõltub sellest, mida sa tahad sa programmi. Mõnikord on vaja vaadake mitu asja. Sa saad palju sügavamale, mida Hea disain on lähete edasi. Oluline aru, et see kontrollib kõiki nelja tingimust siin. Arvestades oleks see kui teine, kui teine kui muidu oleks tabanud, et esimesel juhul oleks printida sul ja ära teha. 

ROB BOWDEN: Isegi kui me otsustasin seda muuta, kui ja suurem või võrdne 90, Kui ja suurem või võrdne 80, ja väiksem või võrdne 89, kui n on suurem või võrdne 70, ja n on väiksem või võrdne 79, nii et on õige. See teeb seda, mida me tahame, kuid see ikka kontrollib iga talle. 

Nii et esimese stsenaariumi, kui me sisestage 90 vaid kui teine, kui muidu, kui ja me siseneme 90, siis see saab parandada. Ta kontrollib esimene üks, print sul, jäta kõik, sest see juba leidsin ühe, mis töötab. Kõik juhtumid on üksteist välistavad põhineb kui teine, kui teine, kui. Nii et see saab täita Esimene kui, siis on see tehtud. Siis lähen lõpuni. 

Arvestades, kui me muudame see on see, mida ma olin öeldes on väiksem või võrdne 89. See saab kontrollida esimene. Seda saad printida. Seda saad kontrollida teine. Ta ei kavatse printida. Kontrollige kolmas. Ei kavatse printida. Kontrolli neljas. Nüüd läheb printida. Nii et sel juhul muud, kui versiooni, sest neil juhtudel on teineteist välistavad, see on paremini kasutada kui mujal, kui muidu, kui sest see läheb on vähem kontrolli tingimused kui see versioon. ALLISON: vinge. Nii teine ​​asi meie võimuses teha, on lüliti avaldustega. Põhimõtteliselt lüliti avaldus võtab mõnel muutuja, antud juhul on n ja määrab sel juhul täita. Nii et see on ka üks, kus teie juhtudel peaks olema selline teineteist välistavad. Nii sel juhul, kui me saame üks, see on läheb sobitada ükskõik mis variable-- sõltumata n väärtus on üks neid juhtumeid, nii 1, 2 või 3, ja välja printida vastavale reale. 

Ja siis, kui märkate siin meil on ka vaikimisi mis selleks saab mõelda oma muud. Nii et kui teil valida mõni muu number Pealegi 1, 2 ja 3 antud juhul see on lihtsalt trükkimineku kehtetuks. Millal kasutada ifs versus kui elses versus lülitid läheb olla midagi, mida poisid vaata kujundada mõistlik, kui hakkate kirjalikult keerulisem programmide ja seal ei ole raske ja kiire eeskirjad millal neid kasutada. On tõesti sõltub teie kontekstis. 

ROB BOWDEN: Ja just visata see seal sest see on mugavam osa. Lülitid, kipuvad nad olema-- et sa oled piiratud in mitmeid viise te neid kasutada, sest IFS, seisund võib olla üsna palju midagi tahad. Mis lülitab juhtudel olema numbrid või tehniliselt nad võivad olla tähemärki, kuid sümbolid, nagu me näeme, on ainult numbrid. Nii et nad peavad olema numbrid, kuid lülitid on tõesti tõhusam kui juhul, kui else if else if, sest isegi võttes eeskuju before-- hästi, klass Näiteks tundub hea. 

Noh oletame, et siin on meil selle asemel tegema seda, kui teine, kui teine, kui stsenaarium. Nii et kui n võrdub võrdub 1 prindi valisid vähe. Kui mujal kui n võrdub võrdub 2, valisid keskmise arvu. Või kui võrdsete võrdub 3 kõrge. Else kehtetuks. 

Ütleme, et see oli meie stsenaariumi. Ütleme, et me siseneme 4, nii et ootame kehtetuks. Nii, et kui teine, kui teine kui lähenemine läheb tööle on kontrollib esimene tingimus. See ei ole rahul. Nii et me kontrollida teist tingimust. See ei ole rahul. Kontrollige kolmas tingimus. Ei ole rahul. Nii et me läheme veel ja printida kehtetuks. 

Viis lüliti tööd on see koostab alla sellest, mida me ei kavatse helistada hüpata tabelis. Peamine idee on et kui sisestate 4 see saab kohe minna vaikimisi. See ei pea kontrollima am I variant 1? Nope see pole see. Juhtum 2? Nope. Juhtum 3? Nope. Vaikimisi. OK, see peab olema, kus ma soovite, ja seejärel täita selle. Ei, see kohe hüppab vaikimisi. Või ma sisestan 2, see on kohe läheb minna 2 ilma et oleks vaja läbida juhul 1. 

Nii et sel viisil reaalselt tänapäeval, mis on mitte et palju tõhususe suurendamiseks. Tavaliselt arvutid on päris kiire, ja see ei ole nii suur. Aga see on tõsi, et lülitid on kiirem. Kui sa oled tõesti püüdnud optimeerida, kasutada lülitit. 

ALLISON: Cool. Ja siis on meil ternaarse operaator. Nii et ma tean, et ma varem mainisin sõna süntaktiline suhkur. Nii et see on lihtsalt asjad, mis muudavad oma koodi palju tihedamaks. Nii et see on üks neid juhtumeid. 

Nii ternaarse operaator on küsimärk koolon nagu me näeme rida string s võrdub n suurem kui 100 küsimärk kõrge koolon madal. Ühesõnaga, kuidas see toimib on see n on suurem kui 100 on seisund. Nii et ma arvan, et see võib mõtet. See on nagu paludes küsimus. Ta ütleb: oh, on n suurem kui 100. Kes teab? Ja kui ta hindab, et tõsi, see läheb teile Esimene asi, mis on seal loetletud, mis on suur. Muidu läheb teile väike. Nii et see on lihtsalt väga lihtne ja tõhusam viis seda teha nagu kui teine. See on kõik see. 

Ja kui me kirjutada seda nagu kui teine ​​tingimuseks, see oleks siis, kui n on suurem kui 100, tagastab kõrge. Else, tagastab madal. See on lihtsalt palju sisutihe viis kirjutamist. 

ROB BOWDEN: Nii et see konkreetne näide on, kui sa teed midagi niimoodi, see on muster kui ma kasutan ternaarse väga sageli. Nii et me ei rääkinud ulatus veel aga ma vihkan nägemine string s semikooloniga. Kui n on suurem kui 100, s võrdub kõrge. Else, s võrdub madal. Nii et muster, need viis rida Koodi sõnalt 100% ajast saab üle, milliseid oli seal koos kolmekomponentse. Nii kolmekomponendiliste üks rida koodi. Kui muidu, viis. See on näide, mis ma juhtida välja iga kord. See oleks suurepärane koht jaoks kolmekomponentse operaator. See on nii puhas. Aga inimesed kipuvad mitte kunagi kasutada. 

ALLISON: Võtke see ära Gabe. 

GABRIEL: Nüüd kutid kõik õppinud loeng sel nädalal et kõik Arvuti on binaarne, eks? Just nagu lambid siin. Võite olla sisse ja välja lülitada. Ja kõik, ma mõtlen sõna otseses mõttes kõike. Mõned numbrid ja sümbolid ja stringid, ja isegi koodi, mis sa kirjutad, kui ta saab koostada nii, et masin koodi ja värki, nii see kõik taandub 0-ja 1 ". 

Ja kui me tegeleme koos täisarvud, mis on midagi, mis on tehniliselt väga lihtne, peame olema võimelised tegema asju nagu lisades neile, mis on ilmselt üks lihtsamaid asju mida teha, et kaks täisarvu, eks? Nii liitmist ja lahutamist töötab just nagu see toimib numbritena, välja arvatud siin see on binaarne, eks? Nii et see on baas kaks. Nii lisada 1 pluss 1. See annab 0 ja 1 kannab üle. Ja muudkui tehes, siis nüüd tuleb huvitavam küsimus. 

Me teame, kuidas esindada kõiki positiivsed täisarvud arvuti, kuid teeme seda kasutada. Teeskle kutid on kõik 1960 või midagi püüab luua arvutis ja sa pead tulema ja salvestamise viis miinus 1, näiteks või miinus kõik täisarv, et asi. Kuidas sa seda tegid? Kõik ideed? Lihtsalt viska midagi mulle. Jah? 

Sihtrühm: [kuuldamatu] määrama eriline kui teie [kuuldamatu]. 

GABRIEL: saate määrata eriline bit, mis on 0 või 1. Oletame, et üks, kas see on positiivne ja 0, kui see on negatiivne. Ja siis ülejäänud bit lihtsalt salvestada number. Külm. Nii et see on väga hea idee. Meil on, ma ei tea, 200. Ja kui esimese biti on sisse lülitatud, siis on see pluss 200. Kui see on välja lülitatud, siis on miinus 200. Külm. 

On ainult üks väike probleem selles, mis on, kui püüame asjad kokku. Nii et kujutage ette, meil on 11.111 siin, ja me liidame seda 00100 iganes. Kui need kaks on positiivsed, siis hästi. Aga siis, kui üks neid on negatiivne, nagu Ütleme, et see natuke siin on see, mis on vastutav for-- ma lähen tegema separate-- nii see tähendab, et see number siin on positiivne. See üks tähendab, et see number siin on negatiivne, eks? 

Aga siis, kui sa oled läheb kokku liita, siis vaja, kui avaldus öeldes, oh, kui see on 0, siis mu summa on midagi, eks? Nii et seal on veidi targem viis seda teha et, mida nimetatakse Täiendkood. Nii et põhimõtteliselt, mida me teha, on meil määratleda miinus 1 olema asi, et kui lisame kuni 1 annab meile 0. Kordan. Ütleme, et see siin on 1. Mis on see, mis loomulikult positiivsed täisarvud lisada mis annab meile 0? Mis siis, kui me püüame selle lisada see number? Me läheme have-- OK, nii et olgem lisada. Me läheme on 1 pluss 1 on 0, ja siis kannab üle. Ja siis me ei kavatse saada 0 uuesti. Ma saan segaduses. Ja sa lähed, et saada 0 0 ja 0 ja 0 ja 0 ja 0. Palju 0 s. 

Päris viimane, me ei ole saab olema võimelised täitma seda üle, sest ütleme me ainult tegelevad ühe baidi, nii et ainult 8 bitti. Nii et see, mida arvuti teeb vaikimisi on lihtsalt unustab, et [kuuldamatu] OK? Nii see on, mida nimetatakse Täiendkood. Me lihtsalt määrata miinus 1 olema asi siin, et kui sa lisada, et 1 annaks sulle 0. Ja see on päris lahe sest me tõesti ei vajame hilja rakendada teist liiki summa sõltuvalt sellest, kas see on negatiivne või positiivne arv. Kas on mõtet? 

Nii et üks asi, mida me teeme siin selleks, et teisendada vahel positiivse ja negatiivse täisarv siis klapp kõike, ja siis me lisame 1 nimetatud number. Kui üritate seda ise tükk paberit, sa lähed, et näha, et on mõtet. Aga kui ma võtan selle numbri siin, see on viis. Nii et kui ma flip kõik siin, nii 1, 1, 1, 1, 1. Flip, klapp, klapp. Ja siis ma lisan 1 kuni ta. Ma lähen on täpselt miinus 5. OK? 

Selline on mõtet, sest kui üritate Kokkuvõttes see number et meil oli enne, mis was-- olgem flip see uuesti. See oli 101 ja palju 0 s. Kui proovite lisada need kaks arvu kokku, sa lähed on täpselt 0. OK. Kas on küsimusi? 

Sihtrühm: [kuuldamatu] 

GABRIEL: Mis sa sellega öelda tahad? 

Sihtrühm: negatiivne positiivne [kuuldamatu]. 

GABRIEL: Ei, te klapp ja lisate 1 alati. Jah. OK, nii et tegelased ka kodeeritud kahendfailid. Meil on ASCII tabel, nagu te Samuti nägin loeng, eks? Nii et see on põhimõtteliselt kaardistamine asju. Ja siin ma ei saa piisavalt rõhutada et arvuti ja 65 on sõna otseses mõttes sama asi. Nii et kui ma kirjutan midagi char c võrdub, ma võiks samal ajal lihtsalt kirjutada 65 siin, ja see oleks täpselt sama, eks? Ei ole mingit vahet üldse. 

Me tavaliselt kipuvad panna märgid muutujate tüüp. Char, mitte sellepärast, et nad on sisuliselt tehtud, kuid kuna inimeste konventsioon. Aga sa võid lihtsalt tegeleda täisarvud asemel muutujate tüüpi char, ja siis saad trahvi. Ainus tegelik erinevus vahel char c ja int i on see, et int on neli baiti kõige süsteemid, samas paalia on üks bait. Nad on sisuliselt sama asja poolest andmeid. Mis siis prinditakse siin? Siin me printida kohaline kasutades printf koos pluss 1, ja nagu täisarvud, chars võib kokku võtta nii, märke saab ka kokku. Nii et see on täpselt 65. Nii et saab olema 66 ja siin on meil 65 plus väike miinus suur, mis on, ma tõesti ei tea. Aga see on täpselt lõhe vahel trükitähtedega ja ja väiksemate tähtedega, nii me ei kavatse saada väike, eks? Jah. Nii et see saab printida iseloomu, mis on täpselt see. Hea? Kas on küsimusi? 

Siin on meil hunnik erinevaid tüübid numbrilised muutujad. Me juba rääkida int. Float on lihtsalt viis mina-- see on tõesti naljakas, sest kui ma esimest õppinud programmeerida juba järgmisel päeval koos Python, esimene programm, mida ma kunagi püüdsid kirjutada, ma nägin, et seal oli tüüp kutsutud ja tüüp kutsus sularahaga. Ja float oli kõigi reaalarvude. Siis ma küsisin, miks peaks Ma kunagi kasutada int siis? Sest kui ma saan kasutada kõiki tegelik arv koos sularahaga, Ma lihtsalt lõpetada kasutades ints, eks? Kuna tegelik arv on palju nagu rohkem üldine. 

Selgub, et see on ei ole arvutid sest nad on sisuliselt erinevaid asju. Nii täisarvud ja ujukid, toiminguid, mis te teete, et neid on sisuliselt erinev, sest on nii, et need on salvestatud, OK? Me läheme räägime veidi natuke lähemalt, et teises. 

Nii et topelt on lihtsalt suurem float. Tavaliselt enamik süsteeme, float on neli baiti, nagu int. Ja topelt kaheksa baiti. Pikk pikk on tegelikult lihtsalt sümbol et te lisab tüüp nagu int. Ütlete pikka int niimoodi. Pikka int x, et see kauem. Nii enamikus süsteemides, mis annab kaheksa baiti asemel tavalisi neli. Ja te võite tegelikult tilk sisse, nii et see võib lihtsalt öelda, pikka, ja mis töötab ka, eks? Võite teha ka muid asju nagu allkirjastamata int, või jälle lihtsalt allkirjastamata Samuti töötavad. Ja mis teeks x on muutuja nagu kõik on positiivne, nii et sa ei saa tõesti olla negatiivne numbrid nii, et nägime siin. Nii et järgmine imeline ujukoma ja täpsust. See on üks põhjusi, miks sa soovite kasutada ints asemel hõljub, sest ints on 100% täpne, eks? See on täpselt see, mis number. Ujuva punkti, kui te öelda vastus võrdub 1 jagatud 10-- Satun on see täpne Programmi siin float.c. See prindib kuni 20 kohta pärast koma. 1 jagatud 10, ning et tavaliselt on 0,1, eks? Aga siin, kui me teeme float ja siis käivitada, me näeme, et see ei ole täpselt 0.1. See on 0,149 midagi. 

Ja miks see nii on? Sest sa ei saa tõesti esindab iga ühe võimaliku tegelik arv mälus sest seal on uncountably paljud neist. Nii et me oleme tehniliselt ainult võimalik esindada piiratud kogus neid koos piiratud kogus andmeid. Aga see on tõesti huvitav. Nüüd see tekitab Küsimusele, kuidas sa oleks minna esindavad seda bitti, eks? Niisiis, kuidas on ujukite säilitatakse? Mis täisarvud see oli lihtne. Aga ujukite soovid maksimeerida vahemik ja sa tahad olla võimeline esindama tohutu hulk ja väga väike numbrid nagu 0.000001 samal ajal. Nii et jällegi sama mängu. Kas kellelgi on aimu, kuidas me võiksime minna esindavad float mälu? Lihtsalt viska midagi. Jah, palun. 

Sihtrühm: [kuuldamatu] kui kui ta oli kahe ints ja üks on [kuuldamatu] ja üks on kõik peale koma. GABRIEL: OK, lahe. Nii et kahe erineva täisarvu. Sul võib olla 12.45, et on 12 ja 45. Nice. Mida Ere sa sellega öelda tahad? Sama asi? Jah? 

Sihtrühm: [kuuldamatu] märke kus sa eraldi baasi. 

GABRIEL: Teaduslik esitus, jah see on tavaliselt, mis juhtub. Nii see on, mida nimetatakse mantiss. See, mis on tegelikult number ja siis astendaja on just seal, kus koma on, eks? Nii et see saab olema midagi Vormi 1, 2, 3, 4, 5 korda 10 miinus 4. Ma lihtsalt mõistsin selle-- jah, täpselt. Ja siis see 10 astmel miinus 4 kavatse määratleda, kus koma on, eks? Brasiilias me kasutame koma. Siin poisid kasutavad dot. Nii dot. 

Ja see on lahe, sest siis saate keskenduvad palju oma bitti see kutt siin, mantiss ja siis see saab olema teie tegelik täpsus. Ja seda saab teha kas kohaga või binaarne põhinev süsteem. On erinevaid kuidas rakendada seda. Küsimused? Jah? Sihtrühm: Kuidas paljudes kohtades pärast koma [kuuldamatu]? 

GABRIEL: See on keeruline küsimus, sest see on kunagi 100% täpne, sest nagu näete siin, et mõned numbrid on 100% täpne. Ma usun, kui me paneme 0,5 siin see saab olema 100% täpne. See saab olema 0,500000. Nii et sel juhul on see täiuslik. Aga muudel juhtudel see on palju vähem täiuslik. Minu kogemus näitab, nagu kuni neli, viis kohta pärast koma on päris täpne. Kui kasutate topelt, siis läheb olema viis täpsem kui et, eks? 

ROB BOWDEN: Nii lihtsalt visata veidi rohkem konteksti ujukid, Ma ei mäleta 100%, kuidas spec ujukite tegelikult töötab, kuid ma ei sa alati meeles mis hõljub Alusta räpane. Nii et idee on see, et kui sa tõesti, tõesti suur numbrite või tõesti vähe, hakkame halveneb ja hullem kell diferentseerides kahe lähedal ujub. 

Niisiis, kuidas mulle meeldib mõelda on ujuva punkti ebatäpsus, on kaks ujukid, mis kui ma püüan täpsustada neid C, hoolimata asjaolust, et nad on erinevad numbrid, nad ei kavatse olla tõlgendada nii sama number sest me ei saa hoida neid erinevalt. Me peame kasutama sama bitti. Ja kui me saame tõesti, tõesti suur hulk, räägid nagu 10 300 või midagi, see on sel hetkel et 10 300 või 5 korda 10 300 ei saa eristada 7 korda 10 300. Nii et on päris suur vahe vahel kaks numbrit. 

Aga siis, kui sa pikali normaalse tasemeni asju, siis kipuvad olema üsna hea eristamisel. Ja siis, kui sa pikali tõesti väike, sa ka saada päris halb jälle. Nii nagu terve hunnik 0,0000, see läheb päris halb. GABRIEL: Jah, nii kiire märkus. Ära tee seda. Ärge kunagi püüdke võrrelda ujukite abil võrdsete võrdub, sest isegi kui nad peaaegu Samal peaaegu sama ei sama. Nii et mida sa tavaliselt teha, on teil lahutama neid võtta absoluutväärtus, et ja vaata, kas see on väiksem kui 0.0001 või midagi sellist, OK? Ja lahe. Ma tean, et paljud inimesed on mõned taustal Java, eriti need, kes ei AP arvutiteadus, eks? Ja Java on keel mis põhineb peamiselt C tal on paar väga suured erinevused. Aga silmad, ja investeerimisfondide ja värki et nad on kõik ühesugused süntaks. Mul on mõned programmid siin näidata. 

Nii näiteks lihtsa tere maailma. See on hello world in C, mis sa Poisid on kindlasti tuttav, ja see ja see üks on Java. Nii et Java on meil see avalik klassi, hello world, ja avaliku staatilise void Peamine ja string args. String args lähevad ilmuma C väga varsti. Kuid ärgem minna veel. Praegu on meil void siin, mis tähendab, et peamine ei võta mingeid argumente. Ja siis on meil System.out.println, ja see on omamoodi võrdväärne printf. Siin me tegelikult ei vaja längkriipsu n sest print ln teeb seda sinu jaoks. Ta lisab längkriipsu n lõpus rida. 

Aga kui te lähete midagi ette, siis on näha, et nad on päris palju sama asi. Nii initsialiseerimise ja seisund ja update on-- ma jäin ruumi siin-- nad päris palju sama asi, välja arvatud Java on nagu veel mõned kõrge värk. Siin me saame teha, pluss ma ja Java automaatselt seda ma siin, mis on täisarv, string, ja seejärel lisada kaks stringi kokku. Siin C peame tegema ja% d. Joon siin, et näeb välja täpselt sama. 

Ja kui me vaatame, kui IFS Vaata ka täpselt sama, eks? Nii et tegelik suured erinevused on on need asjad, mis sa näed siin. Avalik staatiline, õigustühiseks ja siis avalik klassi kui. Nii et Java on see, mis on nimetatakse virtuaalarvuti. Ja see on väga tugevalt selle põhjal, mida nimetatakse objektorienteeritud programmeerimine, mis on väga sage paradigma programmeerimine tänapäeval. Ja see klass on see, mida sa näed, midagi objekti orientatsiooni, on loote klassi ja siis võib saada objektid, mis klassis. Me ei kavatse rääkida liiga palju, et CS50, kuid see on kindlasti midagi väga lahe, eriti kui sa tahad minna keerukamaid veebi arengut lõpus muidugi nagu esitama oma lõpliku projekti ja mõne kena raamistike ja värki. 

Nii et põhimõtteliselt on idee, et sa ei taha uuesti rakendada midagi, nii et teil luua midagi, mis on väga üldine, nagu kuju, ja siis luua erineva kuju sellest, ja seejärel iga Nende kuju, loote mõned konkreetsemad kujundeid kolm mõõtmed või midagi sellist. Ja nad on selle hierarhia nad pärivad teisi ones, nii kõik funktsioonid ja kõik näitajad, suur kuju siin on kõik need ei kavatse olla, ja kõik need on lähed on, ja nii edasi ja nii edasi. Nii et põhiidee. 

C ei ole, aga C ++ ei ole sellist funktsiooni. Ja Java on tugevalt mõjutatud poolt objekti orientatsiooni, nii et miks sa näed klassi siin kogu aeg. Ja teine ​​asi on see, Selle Java virtual machine. Nii et see, ma arvan, on väga tark mõte. Niisiis, mida inimesed, kes väljamõeldud java tegid on nad ei taha koostada oma kood kaks korda kui nad pidid selle käivitada Windows, või Mac või Linux, nii et mida nad teevad on nad sõna otseses mõttes joosta midagi sellist seadet, aga sa tõesti ei näe seda juhtub. Nii nad töötavad virtuaalne masin sees arvuti, mis on põhimõtteliselt nagu mini operatsioonisüsteemi. Ja et tegevuskulude Süsteemi eesmärk elus on lihtsalt käivitada nn bait-koodi. 

Nii et selle asemel, et C, kuidas me oleks koostada see teeb siis, ja seejärel käivitage ./if. Ma unustasin längkriipsu sisse. Java, siis oleks esimene Java C kompileerida, if.c. See ei ole C. punktisagedus java. Ja siis sa pead joosta ei ./. Sa saad selle uue faili if.class, kuid te ei saa tõesti joosta if.class nüüd vaid nagu me tegime enne. See ei ole täidetavad. Sul on joosta. Sa pead sööda seda arvesse programmi nimega Java, ja et programm on virtuaalne masin, ja siis sa if.class või kui. Jah. Ja siis see toimib. OK, nii et see on selline virtuaalne masin juhtub. C ei ole, et nii kui ma panna see programm Windows masin, see ei tööta C. Java ta teeb. Küsimused? Külm. See on kui super sektsioon täna.