ROB BOWDEN: Tai patogesnis skyrius, bet tai nereiškia, kad kad jei jaustis kaip jūs esate ne patogiau Jums nereikės mokytis dalykų čia. Taigi pradėkime. Ar turite skaidres vyksta tiesiai į dalykus. Aš apie tiesiog nuneškite jį dabar? Perjungimas nešiojamieji. ALLISON: Jūs nenorite prisistatykite, Rob? ROB BOWDEN: Ech, man Rob. Tai yra mano penktas metus TF-mo CS50. GABRIEL: Aš Gabriel. Aš vadovas TF iš CS50. Buvau TF pernai ir šiemet. ALLISON: Ir aš Alison, ir tai mano antrasis metų TF-mo CS50. ROB BOWDEN: Gerai, taip šis dalykas kairėje, tikiuosi, jūs matę. Jei ne, nes jums atsisiųsti sau, turėtumėte mačiau jį paskaitą. Taigi tai yra CS50 įrenginys ir jis padarė šiek tiek apie jo aprašymas į paskaitą. Bet iš esmės tai tik jums veikia vykdantis Sistema per savo veiklos sistema, kad galėtume suteikti jums programos nereikalaujant nerimauti, oi tai ketina dirbti tiek Windows ir Mac, arba jei kai kurie iš jūsų Jau naudojate Linux, Linux. Tai tiesiog turėtų būti žaidimams laukas, todėl kiekvienas turi lygiai tas pats aplinka. Taigi, jei turite ne atsisiųsti šį jau, turėtumėte atsisiųsti, nes esate ketinate reikia už problematikos. Ir tai yra du gigabaitų parsisiųsti, todėl ji gali užtrukti. Dėl Harvardo jis bus eiti greitai. Taigi CS50 prietaisas. Dabar iš pradžių, mes ketiname kalbėti apie vos komandinės eilutės krūva Daiktai, ir taip iki to, aš tai darbo šioje mažoje aplinkai per čia. Ir pastebėsite, visa ko Sakau čia dabar ketinate dirbti, jei esate viduje viduje prietaiso terminalo, arba jei esate viduje gedit terminalo langą viduje prietaiso. Taigi šie gamtovaizdžiai yra identiški. Bet aš ruošiuosi eiti trečią maršrutą. Ir pastebėsite žemyn čia tai mažai IP adresas čia. Taigi jūs neturite tai padaryti, tačiau tai IP address-- dabar jei I-- išskyrus jis blokavo šio dalyko. Gerai, kad IP adresas per terminale here-- todėl šis terminalas per Čia yra mano Mac terminalas. Taigi tai tikrai nėra šiuo metu susijęs su tuo prietaisu ne visiems. Ir jei jūs esate ant Windows, tada jūs ketinate reikia ką nors atsisiusti konkrečiai už tai, visų pirma žmonės linkę naudoti glaistai, P-U-T-T-Y. Taigi, ką aš ruošiuosi padaryti, tai tipo SSH ir tada, kad IP adresas. Na, jharvard tuo IP adresu. Taigi 192.168.24.220. Tai baisi mintis, ignoruoti. Tiesiog įveskite yes. Tai CS50 dėžutėje. Ji prašo slaptažodžio. Ir taip iš šių kontekstuose daug jis prašo slaptažodžio, [nesigirdi]. Mes turime daug klausimų kur daug jis sako, kad ji manimi ne iš tikrųjų rašyti. Jis neturi parodysiu ženklų slaptažodis kaip rašote, jei kas nors, už saugumo funkcija, nes jei kas nors ieško per savo pečių, ir jie mato star žvaigždė žvaigždė, tada jie žinau, kad jūsų slaptažodis yra keturi simboliai. Taigi, idėja yra, ji paprašo Jūs už savo slaptažodį, tipą. Jis nesiruošia rodyti Jūs personažai, bet tai tikrai, ar šias. Šiuo atveju kiekvieną kartą jums nors pamatyti slaptažodžio eilutę susijusius su prietaisu, slaptažodis bus purpuriniai. Taigi Crimson. Ir dabar čia viduje šis langas, kuris yra mano Mac, Aš iš esmės turintis lygiai tas pats vaizdas kaip viduje terminalo į prietaisą. Taigi jūs neturite tai padaryti. Galite daryti viską jums noriu viduje prietaiso. Aš beveik niekada iš tikrųjų nieko prietaisu. Aš beveik visada sumažinti, kad ir dabar Dirbu SSH į skalbimo mašinos būgną. Jei kas, jei jums turi lėtesnį kompiuterį, galite pastebėti skirtumą. Aš tai padaryti, nes aš norėčiau tai terminalo langą. Jis turi keletą panašių funkcijų Galiu padalinti langą ir dabar galiu SSH per prietaisu. Gavau du SSH vyksta vienu metu. Jei jūsų kompiuteris yra itin lėtas ir dirbate prietaiso, ir jūs suprasite tai tikrai laggy, nesvarbu. Yra linkęs būti daug greičiau jei esate SSH-ED. Bet kitaip galite dirbti abiem kryptimis. AUDITORIJA: Ką SSH reiškia? ROB BOWDEN: Secure lukštai, kažkas panašaus? Ką SSH reiškia? GABRIEL: Secure Shell. ALLISON: Tai tiesiog saugų apvalkalą. ROB BOWDEN: Secure Shell. Tai protokolas, you-- tai saugų protokolą, taip šifruojamas. Žmonės negali landžioti tinklą ir pamatyti, ką jūs sakote, kad nieko esate SSH-ED. Ir iš tikrųjų, senti dienų CS50 galimybių, taigi, 2009 kai buvau pirmakursis, taip, kad dirbote CS50 probleminių rinkinių, buvo jums SSH-ED šiek serverį kad mes davė jums prieigą, ir dirbote ten. Taigi jūs neturite tai grafinė prietaisas. Jūs neturite gedit. Jūs neturite visų šių dalykų, kad galite vizualiai tašką ir paspauskite. Jums teko dirbti šioje sąsajoje. Aš norėčiau dirbti šioje sąsajoje. Taigi dalis to, ką mes ketiname būtų siunčiami per dabar yra iš krūva komandas, kad turėtumėte pradėti susipažinti su kaip jūs einate kartu į paskaitas. Ir sąžiningai, kai jums priprasti prie jų, tai taip daug greičiau dirbti šioje aplinkoje nei ji yra dirbti su ieškikliu, velkant ir paspauskite dalykų. Taigi čia mes esame. Dabar aš tiesiog SSH-ED, o taip Numatytasis taško, o jums mačiau kai kurie iš šių komandų klasės, bet mes vėl eiti per juos visus. Numatytoji vieta mes į tai namų katalogą. Ir katalogo, tiesiog vienas žodis aplanką. Taigi mes į namų katalogą. Įveskite ls, sąrašą failus į šį katalogą. Matyt aš sukūriau blah.c anksčiau. Taigi, mes turime darbalaukyje katalogas. Jūs pastebėsite, sintaksės? Šviesiai mėlyna paryškinimas rodo katalogas ir tiesus baltas rodo tik paprastas failo. Taigi yra bus kai kurių kitų spalvų matote. Vykdomąjį failą tikriausiai bus būti žalias arba kažkas panašaus. Gerai, kad mes esame namų katalogą. Dabar, jeigu aš noriu eiti į skirtingas katalogas, cd yra komanda noriu. Taigi pakeisti katalogą, ir tada jūs perduoti katalogo pavadinimą kad jūs norite eiti į. Taigi čia mes turime keturis variantus. Aš galiu eiti į parsisiųsti, o dabar matome čia jis atnaujino tai įterptinis pasakyti aš ~ / kreipimusi. Taigi, kas yra "Tilde? Tai už sutrumpinimas jūsų namų katalogą. Taigi beveik viską, ką padaryti, tai eiti į būti susiję su jūsų namų katalogą, ir pwd yra tik komanda Aš naudoju vieną kartą per metus, kad tiesiog spausdina esamą katalogą. Ir taip čia matote, kad ~ / Kreipimusi tikrai išsprendžia į / home / jharvard / kreipimusi. Taigi / home / jharvard yra mano namų kataloge. Taigi, mes galime cd dot dot. Dabar dot dot yra specialus katalogas, visada reiškia vieną katalogą į viršų. Taigi, jei aš ~ / kreipimusi, tada CD tašku dot ketina pareikšti mane Tilde. Ką manote cd dot dot ketina pareikšti mane dabar? Jis atves mane į / home. Taigi Tilde Spausdinimo darbo kataloge, Aš dabar / home / jharvard. vienas katalogas up to, Dabar ji sako, čia / home. Dabar cd dot dot. Dabar aš šakniniame kataloge, ir jūs negalite padaryti jį dar kartą. Jūs tiesiog likti šakninis katalogas amžinai. Šakninis katalogas yra visa krūva dalykų, kad, jei jūs norėsite pažvelgti į, jūs galite. Pavyzdžiui, jei aš einu į šiukšlių dėžę, kad yra visi šie binaries, pavyzdžiui, ls, ir CD, ir visus tuos dalykus. Taigi šios komandos turi egzistuoti kažkur į sistemą, ir čia jis / bin. Bet beveik viskas jums yra bus iš jūsų namų katalogą. Ir cd be argumentų ir ko galima sakyti, cd ~, nereikia. cd ketina tave atgal į jūsų namų katalogą. Vienas paskutinis. cd - ketina tave atgal Paskutinis aplankas kad buvai. Taigi aš tiesiog cd'd du kartus iš eilės, todėl mano Paskutinis aplankas buvo namų kataloge. Jei aš einu velniop bin, ir dabar eikime aukštyn ir į vartotoją. Vartotojas dalis. Vykime į vartotojų dalis. Dabar aš dabar apie akciją. cd - atgal į dėžę. Taigi tai tampa ypač naudinga kai have-- ir jis bus perjungti. Taigi apie akciją, nugaros dėžę, akcijų dėžę. Taigi tai tampa naudinga. Jums gali rasti sau turintys daug, daug, daug įdėtos katalogus. Ir jūs norite padaryti kažką nekilnojamojo greitai aukštutiniame kataloge. Nueini į tą katalogą, padaryti pokyčiai ir stuff like that, ir dabar jūs norite eiti atgal ten, kur buvo. cd -. Aš visada nusivylė kai aš atsitikti eiti į tą katalogą I norėjau padaryti darbą. Aš visada gauti nusivylė, kai aš ji dviem etapais, o ne vienas žingsnis, nes tai reiškia, kad CD - vyksta kad pradėtų sintezė vietą vietoj, kur noriu eiti. Taigi matome, visas sąrašas failus. Mes žinome, kaip gauti aplink šiol. Taigi, dabar pakalbėkime apie redaguoti failus. Taigi, remiantis šiuo metu esate beveik visada tikimasi naudoti gedit. Jei norite, galite žengti kitą žingsnį ir pradėti mokytis komandinės eilutės teksto redaktorius. Taigi įvairių variantų egzistuoja. Ir tie, kurie tikriausiai bus susiję su jūsų, turime Nano VIM ir Emacs. Taigi Nano pradedantiesiems komandinės eilutės teksto redaktoriumi. Taigi Nano eikime į blah.c kūriau anksčiau. Tai tiesiog šis standartas C failą. Ir matote visa krūva daiktų vyksta ne ekrano apačioje ir, matyt, blah.c yra šis C kodas. Taigi šiuo konkrečiu redaktorius, ką jis sako ne bottom-- dabar tai Caret simbolis, mes tai matome ^ G, ^ x, ^ o. Taigi, kad beveik visi kontekstas, kad jūs matote, jūs galite pamatyti, kad caret simbolį kitų vietų internete, apie nepakeliama, kažkas panašaus. Tai beveik visada reiškia kontroliuoti. Taigi, jei norite išeiti noriu daryti Valdymo X. Valdymo X, išeina. Ir galiu naudoti savo rodyklę klavišus judėti. Pranešimas negaliu tašką ir paspauskite lengvai. Jums reikia naudoti savo rodyklę klavišus judėti. Gali būti nustatymas tašką ir paspauskite. Tačiau galime atlikti kai kuriuos pakeitimus. Dabar Control X eiti išėjimą. Jis ketina pasakyti išskyrus modifikuoto buferio. Dabar greitai, y ir taip, n ne. Valdymo C atšaukti. Aš tiesiog pasakyti "taip". Failo pavadinimas rašyti. Pagal nutylėjimą yra failas kad ji jau yra. Paspauskite Enter. Gerai. Dabar aš tik redagavo tą failą, jį išgelbėjo, ir tai pasikeitė. Taigi Nano yra lengviausias teksto redaktoriumi priprasti. Alternatyvos yra Vim ir Emacs. Tai yra aukštesnis lygis teksto redaktoriai kad labai kietas mokymosi kreivė. Taigi mano asmeninė preferencija Vim. Ir ji turi platų variantų. Ir kai jums priprasti į tai, jūs niekada noriu eiti į bet kurį kitą teksto redaktoriumi, nes jums tiesiog tiek daug dalykų jums prieinamos jų bet tai trunka tikrai Ilgą laiką mokytis. Tai gal jūs tiesiog norite priversti Būk dabar priprasti prie jo, bet aš norėčiau pasakyti, kad tai verta. Bet tai yra sunku. Ir tada Emacs. Aš visada kovoja Emacs nes Aš žinau, kaip tai padaryti visiškai nieko. Matyt Emacs nėra pagal nutylėjimą įrengtas ant prietaiso. Mes tikriausiai pridurti, kad kaip numatytąjį įrenginių. Kai jūs išmoksite vieną Vim arba Emacs, ten jokių įtikinamų priežasčių kada nors išmoks kitą, bet tai visiškai kitoks stilius. Gerai, kad yra redagavimo tekstinius failus. AUDITORIJA: Jei buvo įstrigęs VIM dabar, kaip padaryti we-- ROB BOWDEN: Yra keli režimai Vim, ir yra visas samouczków mokytis Vim. Taigi, jei atsitiktų būti įterpimo režimą, kad rašyti tekstą, kurį galite įveskite, kad įvairiais būdais, bet aš, kaip jūs gaunate į įrašyti režimu. Arba išeiti iš bet kokios specialios režimas, kad esate, tiesiog pabėgti. Ir jūs tiesiog bash pabėgti gauti iš bet kokių lizdinė režimus jūsų mieste. Just OK, dabar aš atgal įprastu režimu. Ir taip įprastu režimu, dvitaškis. Matote tai apačioje rodoma. Ir tada q. Taigi q bus mesti, jei jūs atlikote pakeitimus, kuris I-- padariau pakeitimus? Aš padariau pakeitimus matyt. Taigi, jei jūs atlikote pakeitimus, jis bus pasakyti, galite įdėti šauktukas. Aš ruošiuosi jį vadiname bang. Todėl jūs galite įdėti draudimą tiesiog mesti nieko nedarydamas, arba dvitaškis wq sutaupysite ir mesti. Taigi w apskritai yra parašyti. Taigi rašyti į bylą. Gebu rašyti ir mesti. Arba galite turėti tik qx Slam, q bang tiesiog gauti iš ten nepriklausomai apie bet kokius pasikeitimus, kad jūs atlikote. Gerai, kad dabar tegul go-- galime kurti failus. Pradėkime pašalinti failus. Ir aš tiesiog mesti į vieną Greitai naują komandą, liesti. Taigi paliesti foo. Touch baras. Palieskite BAZ. Jei aš ls, dabar mes matome kad tie failai egzistuoja. Jie visiškai tuščias. Taigi prisilietimas yra tik paprastas būdas vieną [nesigirdi]. Du, techniškai tiesiog valstybės jis, ji atnaujina laiko žymes. Taigi bet koks failas, kad jums sukurti yra timestamp susijęs su juo. Taigi bazių buvo sukurta Ne 16:21 14 rugsėjis. Tai dabar 16:22, todėl, jei Liečiu BAZ mes vėl matyti, kad bazių buvo dauguma neseniai pakeistas ne 16:22. Bet kitaip aš beveik niekada Pažiūrėkite į failus laiko žymes. Taigi liesti, čia aš tik naudojant tai sukurti greitus failus. Gerai, kad dabar RM komanda, kad mes rūpinamės čia. Ir mes galime rm Boo. Pasakykite pašalinti reguliariai tuščias failo Boo. Ir mes galime Y tipo, ir dabar jis pašalina. rm bazių. Pašalinti reguliariai tuščia failą bazių ir tipas n ne. Dabar tai nėra pašalintos. Taigi baras ir bazių vis dar egzistuoja. Foo dingo. GABRIEL: Kalbėkite. ROB BOWDEN: Didysis. Taigi erzina žinute čia pašalinti reguliariai empty-- ką tu darai ten? Pašalinti reguliariai tuščias failas. Taigi, jei mes nenorime būti nesiteikė to žinute, mes galime mesti šią -F; vėliava, ir todėl tai jėga. Ir dabar, jei aš rm -f, jis nesiruošia pasakyti norite pašalinti šį failą. Tai bus tiesiog padaryti. Ir ls, nematau bar ten nebėra. Dabar tai yra potencialiai pavojinga komanda. Ji linkusi ne per blogai. Mes grįžti į antrą kaip jis gali gauti tikrai pavojinga. Ir tegul jis sukuria tam tikrą laikinąjį aplanką. mkdir, kita komanda. Taigi mkdir yra komanda kad daro katalogą. Ir dabar LS matome šį gražią šviesą mėlyna pabrėžė laikinąjį aplanką. Galiu CD į temp. Ir aš galiu mkdir foo. cd į foo. mkdir baras. cd į barą. Taigi matome, mes galime lengvai gauti į kai kuriuos gana giliai lizdus. Dabar kaip man pašalinti aplanką? rmdir. Taigi, jei aš tiesiog tiesiai pabandyti rma, kaip mes padarėme su reguliariai failą rm baras ketina pasakyti negali pašalinti juostą. Tai katalogas. Yra specialus komandą pašalinti katalogus, rūšies. Taigi rmdir baras. Dabar baras dingo. Gerai, kad rmdir aš beveik niekada naudoti. Priežastis dabar being-- tegul kad sudarytų normalų failo juostą čia. Taigi rmdir boo. rmdir. Nepavyko pašalinti foo. Katalogas tuščias. Taigi, jūs negalite naudoti pašalinti dir ant katalogas, kuris turi ką į jį. Taigi, jūs turite keletą variantų. Jūs galite pereiti į tą katalogą, pašalinti viskas rankiniu būdu, o po to išeiti ir RMDIR katalogą. Akivaizdu, kad skamba erzina. Ką daryti, jei yra tūkstančiai failų ten? Na, jums gali rm *. Mes kalbame apie * per sekundę. Tai iš esmės reiškia, visus dalykus. Bet dar geriau, tad rm -r. Taigi rm -r-- kurį daug kontekstai, -r reiškia rekursinis kuri mes kalbame apie tai, ką Rekurentiniai priemonė keliose savaites. Bet tai iš esmės reiškia, Traverse Šio katalogo visuma ir pašalinti viską. Taigi rm -r foo ketina pasakyti nusileidžia į katalogą foo? Taip. Pašalinti reguliariai tuščią failą foo / bar? Taip. Pašalinti katalogą foo? Taip. Taigi dabar Foo ir viskas per ji buvo pašalintas. Dabar, galima gauti ypač erzina when-- tegul liesti 1, palieskite 2, palieskite 3. Galėjo visa krūva failų. Jei aš norėjau, galėjau kurti tūkstančiai failus čia. Ir rm -r foo vyksta būti gana erzina. Taip, taip, taip, taip, taip, taip. Su daug daugiau failų, greitai pamatyti, kaip daug kartų Aš turiu rašyti taip. Na, mes tiesiog matė prieš tai, kaip mes galime atsikratyti būtinybės įvesti taip, -F. Taigi mkdir foo cd foo touch 1 2 3. Gerai, kad rm-rf foo ketina aklai pašalinti foo visiškai. Ne laiku. Nėra nieko. Foo dingo. Taigi, aš linkęs naudoti tai įsakau visą laiką. Beje, jis yra labai pavojinga komanda, nes jei aš padaryti kažką panašaus tai, jis nebus greitai jums. Tai bus dingo. Ir tai atsitinka gana dažnai, ir net aukštesnio lygio CS kursus. Kartais mes pamatysime kažkas kur nors sako aš netyčia mūsų rm rf-ED my home katalogas ir visi mano P rinkinys dingo. Ir tai sukrečiantys, tačiau nėra šiukšliadėžės. Nėra jokios ten nieko jums atgauti. Tai tiesiog dingo. Dar blogiau būtų kažkas panašaus rm-rf /. Taigi mes tiesiog aptarti kad šakninis katalogas. Ji turi visus failus į savo sistemą. Daiktai linkę gauti gana nepatogus kai išimate dalykus kaip ls, ir cd, ir visi iš jų. AUDITORIJA: Koks skirtumas tarp RM, RF, ir rm * ROB BOWDEN: Taigi rm * - ALLISON: Klausimas buvo, kas Skirtumas tarp RM, RF, ir rm *. ROB BOWDEN: Taigi rm *. Žvaigždė apskritai tai visi šio katalogo turinį. Bando ieškoti kitų būdai parodyti žvaigždė. Na, žvaigždė iš tikrųjų paprastai reiškia neatitiko jokio modelio. Taigi, jei aš turiu failą pavadinimu dog1, paliesti dog2, palieskite cat1, palieskite cat2. Taigi ls * 1 ketina spausdinti cat1 ir dog1, nes žvaigždė gali būti užpildyti į with-- reikia būti ten, bet žvaigždė gali būti arba katę ar šunį. Tai afera. Štai žodis Aš ieškau. Afera. Ar galėčiau LS šunų * ir Aš turiu pamatyti dog1, dog2. Taigi tie, kurie išvardyti failus kad atitiktų tą ypatingą modelį. Jūs galite naudoti ls šiuo būdu. Lt * žvaigždė rungtynės nieko. Taigi jis ketina spausdinti visus šio katalogo turinį nes visi jie nesutampa. Jis nesiruošia spausdinti nieko į aukštesnio lygio katalogų. Jei turiu sub katalogas, foo, ir liesti 1 2 3-- todėl dabar, jei rm * žvaigždė, pašalinti cat1, cat2, dog1, dog2. Negali pašalinti foo. Tai katalogas. Taigi žvaigždė išsiplečia visi failai kataloge. Techniškai rm * yra tarsi sakydamas rm cat1, cat2, dog1, dog2, foo. Kadangi rm-rf, techniškai žvaigždėje atlikti tai, ką mes norime, bet rm -rf-- jei aš išeiti iš šio katalogas, rm-rf temp, kad ketina eiti į temp ir rekursyviai pašalinti viską. Taigi žvaigždė atskiriamas kad Suprantama by-- todėl šis dalykas kad Bėgu į tai, ką kuris paskatino mane komandomis ir tada vykdyti ir daro juos, aš vadinu tai mano lukštais. Ir taip šis apvalkalas yra pati programa. Ir jei aš norėjau, aš gali paleisti į / bin / bash. Apvalkalas vadinamas bash. Ir dabar pastebime kažką šiek tiek pasikeitė, ir tai todėl, kad mano nustatymus apvalkalas yra šiek tiek kitoks. Bet dabar aš techniškai veikia per mano originalus lukštais lukštais, ir aš galiu išeiti, kad apvalkalą, o dabar Aš atgal į mano aukščiausio lygio apvalkalo. Sakydamas tikslas kad is-- žvaigždė. Taigi žvaigždė yra kažkas suprantama bash. Taigi rm-rf, rf vėliava suprantama tik rm. Ji žino, kad kai jums praeiti rf kad jus noriu, kad ji rekursyviai pašalinti visi failai be raginimo. Žvaigždė kažkas suprato iki bash kad, kai jūs sakote rm * bash nesiruošia pasakyti hey rm *, pašalinti žvaigždė. Bash ketina pasakyti rm * pašalinti cat1, cat2, dog1, dog2. Jis automatiškai ketiname plėsti visi iš katalogo failus. Ir panašiai tildės yra dar simbolis, bash supranta. Kai sakote cd ~, bash plečiasi kad jūsų namų kataloge. Kiti klausimai iki šiol? Gerai, kad mes ketiname pradėti vyksta greitai. "Tab" užbaigimo. Tiesiog mesti jį iš ten. Daug žmonių neturi suprantame, kad tai egzistuoja. Taigi, jei aš tipo cd mybė, aš noriu eiti į atsisiuntimų. Man nereikia rašyti nloads. Galiu tiesiog paspauskite Tab. Todėl pripažįsta, kad dow yra priešdėlis, kad nesutampa nieko kita šiame kataloge, todėl bus užbaigti, kad už jus. Dabar galiu įeiti. Aš taip pat padaryti, kad rekursyviai. Taigi mkdir foo. Vykime į foo. mkdir baras. Taigi grįžta į savo namus katalogas, matau parsisiųsti. Dabar pradeda skirtuką vėl, automatiškai ketinate užpildyti foo. Tai vienintelis katalogas. Vėl pradeda skirtuką automatiškai ketina užpildyti juostoje. Taigi, dabar aš (~ Atsisiuntimai / foo / bar). Taigi, šis "tab" užbaigimo, kai aš turiu darbo valandomis, ir aš stoviu per kažkieno pečių, ir jie bus rm D-O-W-N-L-O-S-D-, aš miršta. Tiesiog skirtuko skirtuką skirtuko kortelėje. Taigi tikrai naudojamas skirtuką. Ir panašiai aukštyn ir žemyn, daug žmonių tik, kad nutiko niekada hit aukštyn ir žemyn. Tai eisiu per ankstesnius komandas, todėl, jei jūs tiesiog pritrūko kažką, ir norite naudoti ją vėl, tiesiog telpa iki jums jį. Gerai. Taip greitai, kai kurie kiti dalykai. Grįžkime į temp. Kurkime kai kuriuos failus. Taigi čia aš tiesiog VARDINSIU keletą žodžių. šuo, katė, miau. Darom šunį, žuvį. Taigi dabar rep yra labai naudingų komandų, kad jūs naudoti ieškoti per failai konkretaus teksto, ir techniškai galima padaryti tikrai sudėtingų užrašai jį suderinti. Taigi čia, jei aš grep, ir kas aš noriu ieškoti? Tarkime, aš ieškoti kačių ir Noriu ieškoti visų šių bylų. Taigi, kaip aš galiu padaryti visus šiuos failus? Žvaigždė. Taigi byloje viena, turiu katę. Aš turbūt galėtų turėti pavadino jį kažkas geriau, nes atrodo eilučių numerių ar kažką. Bet failą vieną turiu liniją su kačių. Eilių du turiu liniją su kačių. Taigi, dabar aš galiu pažvelgti į vidų failą vienu ir pamatyti Oh yeah, kad failas turėjo katę. Pranešimas failą trys nebuvo suderinta nes katė yra ne ten. Galiu grep už meow. Tik paduoti du turi meow. Taigi tai galite suderinti, vėl, su -r, kuris kaip jau minėjau anksčiau dažnai reiškia grįžtamojo. Ir kad aš galiu sugalvoti čia grep -r už bet kokį atvejį of-- tegul redaguoti tai tik vienas mesti katė ten. Taigi grep -r už bet pavyzdžiui katinas Visame kataloge. Ir tai bus rekursyviai ieškoti bet kokių pakatalogius. Taigi baz, yra katė. Be temp / 2, čia katė. Ir temp / 1 ten katė. Štai per paieškos failus. Dabar jūs taip pat galite naudoti radinį. Ir taip susirasti konkrečiai apie ieško failus su tam tikru pavadinimu. Taigi galime padaryti šiek tiek daugiau. Vykime į atsisiuntimų. Palieskite dog1. Palieskite cat2. Palieskite cat_dog. Palieskite CatCat. Taigi noriu visus failai su šunimi vardu. Taigi susirasti, o ilgiausia kartą aš niekada pamiršti, kaip susirasti dirbo, kol aš pagaliau skaityti kažką, kad jis toks aiškus. Taigi susirasti automatiškai rekursywny. Jums nereikia praeiti -R. Taigi susirasti taškas. Mes ne kalbėjo apie dot dar. Kadangi dot dot visada reiškia vieną katalogą į viršų. Dot visada reiškia esamą katalogą. Kad galėčiau rm-r Taškas taip pat, galiu rm-rf *. Galiausiai jie atlikti tą patį. rm-rf dot ketina pašalinti Visa šiame kataloge. Gerai, aš nenoriu ten daryti. Bet susirasti taškas. Taigi rekursyviai ieškoti dabartinis katalogas, o dabar viskas Po to keletas vėliavų krūva, kad jūs naudoti pašalinti dalykų iš grąžos. Taigi susirasti dot grįžta viską, kad rasite iš einamojo katalogo. Tai visi failai rekursyviai paiešką. Pamatysime kai kurios per sekundę. Bet tuo atveju, jums įdomu, kaip aš galiu padaryti kad, taip komandų K, bent jau mano terminalo Mac išvalo jį. Valdymo L paprastai išvalo tai bet kokio terminalo rūšiuoti. Taip pat galite įvesti aiškus. Ir jei jūs kada nors gauti į keistą scenario-- tai atsitiko man pora LAIKĄ_ kur jūsų instrukcijas spalvos visi messed up, arba jums negali matyti nieko buvo įvestas, kai jūs įvedėte, nes kartais kaip fonas nustatytas tas pats kaip priekinio plano spalva ir dabar jūs negalite matyti šriftus. Atstatyti yra kažkas, kad tiesiog iš naujo jums numatytąjį juodame fone, balta priekinio ar kas Nustatę jiems. Taigi, kur mes buvome? Ieškoti taškas. Taigi, dabar viskas praeityje ši taškas riboja rezultatų į kažką, kad atitinka pateiktas modelis. Taigi čia aš noriu ieškoti viskas, kurių pavadinimas katė. Aš nieko. Kodėl yra tai, kad tokiu atveju? Na, aš tiesiog ieško kažkas su lygiai vardas katė. Jei aš noriu ieškoti ką nors kad turi modelis, ir cat-- kabučių techniškai nėra būtini, bet aš mesti juos ten. Taigi dabar ji nustato CatCat nes kad vienintelis dalykas, kad yra keletas savavališkas modelis po katei. Aš galiu įdėti katė * ir dabar susirasti CatCat, cat_dog, cat2, nes jie yra viskas su kačių pradžioje, po to nieko. Galite derinti tai. Jei norite ieškoti visų C ​​failus kad jūs turite, jums gali padaryti * .c. Mes blah.c čia. Taigi tai yra rasti darbus. Jūs galite ieškoti. Ji visa krūva vėliavų už papildomų apribojimų. Ir vienas jų, tarkim -D. Taigi atgyvenę. Oi, tai ne tai, ko aš noriu. Ne -d. Tipas d. Taigi susirasti taškas - D tipo. Taigi, ką tai tiesiog padarė tai aš ieškoti visiems kataloge failus su a-- d stendai directory-- katalogas tipas. Tai grąžina katalogų einamojo katalogo. Ir F tipo viskas reguliariai failai visi ne katalogus. Taigi tai tik pavyzdys kitų būdų jums gali apriboti paiešką kita nei tik failo pavadinimą. Tai buvo 30 minučių. Vis dar vyksta. ALLISON: aš vėjas per. Tai viskas bus gerai. ROB BOWDEN: Taigi kai kurių kitų dalykų. Dabar numesk, šauktukas. Kad paprastai means-- gerai, pažiūrėkime pavyzdį. Taigi! F, kas tai ketina daryti? Na atrodo, kad radinys pakartoti dot -tipo f. Ką apie! G? Tai tiesiog grep-r katė *. Taigi sprogimo galima naudoti pakartotinai Neseniai atlikta komanda. Taigi, jei aš tipo! Gre, jis ketina iš naujo paleisti komandas, pradėtas gre dauguma neseniai. Ir jūs galite pamatyti visa tai komandas istorijoje. Taigi istorija. Tai yra visų komandos aš paleisti šiandien. Ir gerai, kad tai ne pažodžiui tik šiandien, bet aš naudojamas tik šis Prietaisas, kaip šiandien. Tai jūsų visuma istorija savo bash, išskyrus, išsiima tam tikru momentu. AUDITORIJA: Kas atsitiks, jei jūs darote istorija [nesigirdi] komanda ir klaidos rezultate dar bus išspausdinti the-- ROB BOWDEN: Taip, jei yra klaida vienoje iš šių commands-- taip tarkim, kad yra klaida komandų nerastas. Dar pasirodo istorijoje. Gerai. Kiti klausimai apie ką nors? Štai bang. Dabar, tikrai naudinga komanda, vyras. Kad suteikia jums vadovas už tam tikrą komandą. Taigi galime sakyti, vyras ls, tiek tai rodo man ls. Jame išvardijami katalogo turinį. Ir tai, kai matau, kad šie įvairūs vėliavos, kurie egzistuoja. Taigi matome, kad ls -l egzistuoja jei mes skaitome, kad. ls -l suteikia man šį visą sąrašą katalogas su, kas valdo šį failą, Failo dydis keistas timestamp. Taigi ls -a yra dar vienas, kad jums gali iš tikrųjų naudoti šiek tiek dažniau. Šaltiniai yra mano labiausiai paplitusi vėliava Praeitą ls. Taigi -a, pastebėti yra daug daugiau failų negu tik LS. ls -a. Kas bendro su visų šių failų? Jie pradeda su tašku. Taigi tai yra Linux konvencija, kad failai, kurie prasideda tašku yra paslėptas. Taigi tai tiesiog reiškia, kad kai mes tiesiog tiesūs ls, ar mes ieškome šį katalogą naudojant ieškiklis ekvivalentas, arba Windows Explorer ekvivalentas, kad mes nenoriu matyti šiuos dot failus. Jie tiesiog teršia dalykų vaizdą. Taigi jie yra paslėpti nebent jums specialiai prašyti juos kažką panašaus -a. Taigi aš galiu cd į .local, ir matau, kad tai yra pats katalogas su pasidalino katalogas ir programas ir blah blah blah. Taigi dot, failus jie tiesiog paslėptas. Gerai, kad kiti svarbiausi. Turiu pora galiu praleisti. Tegul tik nekilnojamojo greitai kalbėti apie Failų peradresavimo dalykų. Todėl ten visuma serija dalykų, kuriuos galite padaryti su šiais, bet tik pamatyti juos, tarkim, aidas. Kita komanda. Tikrai kvailas komanda. Visi jame yra spausdinimo, ką aš pasakysiu ją. Taigi echo labas. Jis tiesiog aidėjo labas ekrane. Hello world. Aidai hello world. Taigi vienas komanda arba vienas simbolis, bash supranta yra didesnis nei šis simbolis, ir kad yra į failo simboliu produkcija. Taigi, jei aš išėjimas tai foo, ten dabar failą vadinamas foo viduje kuris hello world. Taigi pastebėti, kad kai aš echo hello world vamzdis į foo, jis nebuvo echo hello world. Todėl buvo pradėtas failų foo. Ir kita komanda tik mesti jį į tave, katė. Štai paprastas būdas tiesiog visiškai išvardinti failo turinį kad aš neturiu atidaryti teksto redaktoriumi, kad matytumėte tai. Taigi turinys foo failas yra hello world. Ir galėčiau katė blah.c, turinys yra tai. Vėlgi, tai yra komandos, kurios, ne tikimės, kad jūs turite juos visus atmintinai. Idėja yra, kai mačiau juos. Gal dirbate kažkas, ir jūs kaip Aš serga atidarydami šį failą. Norėčiau tiesiog ieškoti ne turinio nekilnojamojo greitai. Galite tai padaryti, tada pažvelgti atgal ir pasakyti oh prisiminti kažką panašaus kad egzistuoja, ir tai katė. Taigi, kas vyksta į failą. Dabar ten tikrai ne koks nors geras pavyzdys skaitant iš failo dar. Kas kažkas, kad mano kažkas iš standartu? Bet koks paprastas Linux komandinės? Kai mes ją, pora savaites visi piece-- gerai, Šią savaitę turite gabalas, kur jūs Pradėjus vartoti įvestį iš vartotojo. Ir taip paprastai rašote kad įvesties prie klaviatūros. Vietoj rašyti, kad įėjimas į klaviatūrą, galite vietoj vamzdis iš failo į kad, kai jūs darote Mario, ./mario, vamzdis pagal bet kurį failą ir kad ketina paleisti Mario programą. Nesitiki indėliu klaviatūra, o ne tai tik ketina skaityti linijos iš foo failą. Taigi didesnis nei foo įdėkite jį į foo failą, ir mažiau nei foo trunka stuff iš foo failą ir naudoja, kad būtų prisidedama prie šios programos. Ir tik pamatyti, kad mes taip pat galėtų echo foo bar bazių, ir tada vietoj vieno didesnė darykime du į foo. Ką tai daryti? Jis tiesiog prideda prie failo. Taigi vietoj įspėjimo, jei aš echo bla į foo ir tada katė foo, tai tik bla. Taigi, kai jūs išėjimas į failą, jį visiškai perrašo failą. Jei jūs tiesiog norite pridėti, dvigubas [? rūšiuotojas. ?] Ir paskutinis yra vamzdis. Vamzdžių Paimama daug sudėtingesnis, kur ji užima vieną komandą išvestį ir maitina jį į kitą komandą. Taigi kai dažnas dalykas, istorija. Taigi, ugh, aš nenoriu pažvelgti į tai. Parodyk man visus savo istoriją komandas kur aš grep-ED už kažką. Ne, tai klaidina. Parodykite man visas komandas, kur aš rasti. Viskas susirasti komandas aš niekada susidūrėme. Taigi istorija. Dabar istorija išėjimai į ekrane ši komandų sąrašą, bet aš nenoriu galingumas jį į ekraną. Vietoj to aš ruošiuosi jį vamzdžio į grep. Taigi leiskite grep visų radinį atvejais. Taigi dabar, užuot grep ėmimo įėjimo, o of-- grep sugeba taip input-- mes naudojant grep šiek tiek kitaip čia. Taigi vietoj rašant sąrašas tai, ką mes norėjome ieškoti ir sakė grep vartoja kaip įvesties. Taigi, jei aš tiesiog grep ieškoti, ją laukia manęs rašyti dalykus. Taigi katinas labas rasti. Sveiki. Ieškoti. Pranešimas kiekvieną kartą aš įvesti susirasti pripažįsta, kad įvedžiau radinį. Taigi vietoj to, bus Paieškos failus rasti. Taigi istorija dabar ketiname išėjimas iš visų komandų sąrašas. Mes turime tokį, kad produkcija, ir mes jį maitinti grep, ir todėl jis spjaudė iš visi radinį atvejų. Priežastis, kodėl aš sakė, kad būčiau supainiojo yra, jei I-- jis vis dar painu. Jei aš grep už grep. Pranešimas tai gana daug visada rodo komandą aš tiesiog bėgo nes tos komandos pati turi grep viduje ji. Gerai, kad nors klausimų dėl nieko? Ir aš perkelti jį per šiuo metu. Tikimės, kad tai yra gražus apžvalga visų komandų kad jums nereikia turėti įsimenamas, tačiau jie sudaro kietas 95% to, ką aš padaryti komandinėje eilutėje. Taip pat reikia nepamiršti, kad komandinės eilutės pati, bash yra programavimo kalba, ir todėl, kai jūs gaunate į ją, tu galbūt norėsite padaryti tikrai sudėtingus dalykus. Ir todėl jis turi dalykų, pavyzdžiui, kilpų, ir IFS, ir visi tie, kad jūs ketinate priprasti su savo programavimo kalbas. Bet tai ne tik Šio skirsnio taikymo sritis. Gerai, kad jokių klausimų? ALLISON: Nėra? GABRIEL: Ar ketinate to-- ALLISON: Aš galiu tai padaryti ant mano, jei norite. Mes galime pamatyti, kas atsitiks. ROB BOWDEN: Off Allison. ALLISON: Woo. Jūs sunkiai aktas sekti, Rob. Ar norite man pereiti su jumis? Ar turite, gerai. Aš einu bandyti ir ne gana būti kaip ilgas ten. Leiskite pamatyti, jei ši valia dirbti taip, kaip noriu, kad ji. Gal? Haha! Taip. Taigi, aš tik ketina greitai eiti per kintamuosius, kilpos, sąlyginių, ir šiek tiek apie kompiliatorius. Jei turite klausimų ne bet laikas, prašome sustabdyti mane. Šie vaikinai primins man pakartoti Jūsų klausimas, jei aš pamiršiu, tačiau tai neturėtų būti labai blogai. Taigi kintamųjų, taip. Mes neturime vieną jūsų Scratch gabalai čia. Aš tikiu, kad dauguma iš jūsų, jei Jūs gėrė kažkokį žaidimą rūšiuoti kad jūs sukūrėte su nulio, jums turėjo sekti kažką panašaus rezultatas, ar laikas, ar kažkas panašaus. Taigi tie, šviesiai oranžinės gabalai, kad mes pamatyti čia tik Scratch forma kintamieji, ir jums tikrai naudojate kintamuosius visoje jūsų programoje. Jei nesate, aš tikrai ne Nežinote, ką jūs darote. Bet vistiek, didelis dalykas, apibrėžti kintamuosius. Su C kiekvienas kintamasis turėti paskelbė tipas, todėl aš davė jums labai Apskritai vienas viršuje. Taigi jūs turite savo rūšis ir tada kokia jūs nusprendžiate paskambinti į savo kintamasis. Taigi šiuo atveju, tipą jūsų kintamojo sąrašą. Turime tris pavyzdžius. Char kai kurių klasės, vertinant a, o tai, ką Aš tikiu, kad jūs visi norite gauti šioje klasėje. Galite nustatyti kelis kintamieji vienoje eilutėje kol jie visi tos pačios rūšies, kuris yra mūsų antras pavyzdys yra kur jūs turite tris kintamieji x, y ir z. Jie visi plūdės. Ir tada jūs galite taip pat, į šią paskutinę pavyzdys su int balas ir numeris Komandų, galite inicijuoti jų teisę ten. Taigi, pavyzdžiui, jei mes viduriniosios tiesiog turi plūdę iš x, y, z ir, tie kurie Nepaleistas dar. Jie neturi jokios vertės. Ar jie turi šiukšlių vertybes. Ir jei bandysite ir naudoti juos, kompiliatorius klykauti ne jums. Turite tiek deklaruoja ir inicijuoti kintamuosius. Taigi, remiantis šiuo paskutiniuoju, ką mes darome, ir. Mes skelbiantis kintamieji Balo ir komandų, ir mes Inicijuojama juos, suteikiant jiems pradinius vertės 7 ir 4 atitinkamai. Cool. Kiekvienas geras? Nuostabus. Gerai, kad kai kurie susitarimai. Jei jus vaikinai skaityti per stiliumi 50, tai Yra tik tai, kas mes norėtume už jums įgyvendinti savo stilių. Taigi prasmingus pavadinimus. Jei pradėsite skambinti dalykų tiesiog x, y ir z, ypač kaip jums gauti į ilgesnio programos, jūs tikriausiai bus painioja save ir būti kaip tai, kas yra šis kintamasis nuoroda į. Aš neįsivaizduoju, ką tai reiškia. Tad jei ji skirta laikyti rezultatas, tai vadinu rezultatas. Jei jis skirtas laikyti tam tikrą atsakymą arba sukelti, suteikti jai patinka, kad vardą. Dėl kilpų, kurį mes patekti į kitą skaidrę, viena raide kintamieji yra bauda. ROB BOWDEN: I, J ir K yra vos kirtinių už kilpų kad kiekvienas jų tikisi būti vadinamas I, J ir K. Galite skambinti them-- matau eilutę stulpelis ar eilutė skambutis kartais dėl dviejų kilpos, įdėtos ir tai pat rūšies standartas. Bet i ir j yra visiškai suprantama. ALLISON: Taip, aš ir j esate visiškai gerai. Siekiant aiškumo, kaip į kai kuriuos jūsų P rinkinių, jis gali prasmės daugiau aprašomosios dalykų ten tiesiog sekti jį. Bet aš manau, i, j ir k Manau Dauguma iš mūsų visi naudoti. ROB BOWDEN: Su šiais konvencijas, taip stilius yra labai svarbi. Tai viena iš keturių ašių dėl kurių jūs surūšiuoti, ir tai yra taip lengva tiesiog eiti per Jūsų P nustatykite pabaigoje ir įsitikinkite kad nėra stilistinių klaidų. Todėl įsitikinkite, kad jūs tabbing teisingai. Įsitikinkite, kad jūsų kintamieji yra vadinami. Palikite keletą pastabų. Tai labai lengva gauti tuos taškus. Jūs neturite galvoti apie kas, siekiant gauti tuos taškus. Jūs neturite suprasti nieko iš. Tai tiesiog todėl atrodo gana. ALLISON: Tiesą sakant, mes turi stilių 50, kuris pasakys, kur jūs Messing iki, jei jūs Messing apie stilių ir jums pasakys, ką jums reikia nustatyti ir tai, kaip jūs turite išspręsti. Tai taip pat tik gerai paminėti kad tai žinoma politika kad, jei esate ne biure valandos ir jūsų kodas yra netvarka, mes galime atsisakyti padėti Jūs kol ji atrodo gražiau. Taigi pradėkite teisus, išlaikyti nuoseklų stilių, Jūs taip pat tik ketina padaryti Gyvenkite visai daug lengviau, kai Jūs bandote eiti per derinti. Jei jūs bandote išsiaiškinti, kur jums trūksta garbanotas petnešomis ir jie yra visur, jūs tiesiog padaryti savo gyvenimą sunkiau. Taigi atitikti stilių. Pažadu, kad bus padaryti jūsų gyvenimą lengviau. Tai bus padaryti mūsų gyvenimą paprasčiau. Kiekvienas bus daug laimingesni. Ir tai, ką norite. GABRIEL: Jūsų pažymys bus didesnis. ALLISON: Taip, jūsų rangas. Jei jūsų TF lyg jus, linkęs būti palankūs. Gerai, o tada tiesiog Antras punktas čia. Nuoseklios Initializations. Taigi kaip matėme, galite paskelbti inicijuoti ir dalykus. Keli kintamieji toje pačioje eilutėje. Vienas dalykas, mes norėtume jums ne padaryti, tai pripažinti kai kurie kintamieji o ne inicijuoti juos pats linija, kuri jums Inicijuojama kitus. Taigi tuo atveju, jei pagamintas nėra prasmės kokia, mes turime pavyzdį čia kur mes skelbiantis int į kintamųjų ketvirčius dimes ir penny, bet ketvirčiai ir kapeikos neturi pradinės vertės. Mes Nepaleistas juos, bet teisinga viduryje ten mes jau inicializuoti dimes į 0. Taigi, arba padaryti ketvirčiais dimes, centus. Arba ketvirtadaliai lygus 0. Dimes lygus 0. Kapeikos lygios 0, ar koks originalius vertybės. Didelis dalykas su stiliumi, turi būti suderinti. Jei abejojate, būti nuoseklūs. Bet sekti mūsų stiliaus vadovas taip pat. Cool. Kiekvienas geras ten? AUDITORIJA: Kur stilius instrukcija? ALLISON: stilius gidas yra on-- kas svetainėje? GABRIEL: manau, kad tai manual.cs50.net/-- ALLISON: Stilius? GABRIEL: Stilius. Yep. ALLISON: Taip. Taigi klausimas, kur yra stilius 50. manual.cs50.net/style. Taip? AUDITORIJA: Jei mes apibrėžti kintamieji, tai OK jei mes įdėti kaip [nesigirdi] kaip int rezultatas ir tada int tikslas. Taigi jūs pasakytumėte, kad dabar mes turiu juos apibrėžti kartu? ALLISON: Taigi klausimas, turėtų turite nereikalinga kodą kai jūs nustatyti kintamieji, pavyzdžiui, int rezultatą ir Kitame linijos int žaidimą? ROB BOWDEN: Yra tikrai atvejų, kai nereikalingas kodas yra blogai. Nenorėčiau manyti kad nereikalingas kodas. Aš beveik niekada paskelbti kelis kintamieji toje pačioje eilutėje kada. O jei jau taip, tai todėl, kad Paprastai aš palikti tam tikrą komentarą rūšiuoti paaiškinti, kas kintama yra. Taigi aš sakau int rezultatas velniop pasviru brūkšniu. Stebi whatever. Iš viso velniop velniop. Taigi, tai daug Grosser tokiu būdu įdėti juos visus toje pačioje eilutėje. Aš tiesiog niekada juos ant tos pačios linijos. ALLISON Jaučiu tai asmens pirmenybė šiuo klausimu. AUDITORIJA: Ar tai eiti už vyrių ir stuff per daug? ROB BOWDEN: Kaip viduje? Kaip int i lygu 0 kablelį ilgis lygus kažką? Kad jūs neturite pasirinkimo. Su už kilpomis iniciacijos part-- todėl jūs galbūt mačiau tik int i lygu 0 kabliataškį i mažiau nei kokia kabliataškis i plius plius. Kad int i lygu 0, techniškai, taip pat galite daryti tai, ką mes matėme prieš su kableliais sintaksė. int i lygu 0 kableliais j lygus 3 kablelis k lygus 5. Jūs neturite pasirinkimo padalinti kad į kelias eilutes, ir tai standartas. Tai matau ten yra gerai. ALLISON: Awesome. Na, patogus segue į kilpas. Taigi, taip, čia mes turime keletą pavyzdžių Kilpų kad vaikinai pamatė nulio. Ir, žinoma, visa tai tiesiog galima atkurti C Ir jie iš esmės leidžia jums pakartoti keletą kodo fragmentą iki tam tikros būklės yra įvykdyta, kuri mes patekti į dešinę po pokalbio apie kilpas su sąlyginių. Taigi, mes turime tris pagrindinius tipus. Nes dabar, o tai, o, kuris mes visi eiti per dabar. Taigi Pirma yra kilpų. Taigi nors sąlyga, vykdyti šį kodą blokas. Mes turime šį atvėsti mažai žy čia apačioje. Bet iš esmės jūs turite Jūsų už, kad pirmoje eilutėje, jūs ketinate inicijuoti kintamuosius. Taigi, kaip mes kalbėjome apie, i lygus 0 arba i yra lygus 10. Ką reikia, kad kintamasis yra tai bus inicializuoti ten, deklaruoti ir inicializuoti šiek vertės. Taigi mes turime kai sąlyga, kad vyksta būti patikrinti mūsų kintamasis prieš kažką. Taigi tokiu atveju tipiškas atvejis, kai O gal norite šį kodo fragmentą vykdyti penkis kartus. Taigi, mes norime turėti int i lygu 0, ir mes nori, kad ji būtų, kai aš yra mažesnis nei 5. Taigi ši sąlyga yra tik ketina tikrinti, kiekvieną kartą. Jei tos sąlygos įvertina, kad tiesa, tai ketina paleisti kodą, kuris yra tiksliai kas ši maža schema parodyta. Ir taip paleidžia. Jis atnaujina kintamųjų, o tai, ką mes matome, Paskutinėje dalyje mūsų FOR kilpa iniciacijos ten. Taigi jis bus tiesiog laikyti tai daryti kol ši sąlyga netenkinama, ir tada jis bus išeiti kilpa ir toliau pereinant su savo programos dalį. Kiekvienas geras ten? Cool. Taigi čia pavyzdys, labai panašus kažką aš tik kalbama. Taigi mes tiesiog norite spausdinti tai CS50 10 kartų. Taigi, kaip matote čia turime mūsų už, ir tada mes inicijuoti kintamasis i turi būti lygus 0. Mūsų sąlyga tikrinti kad tai mažiau nei 10. Taigi įvertinti true, kai mes pirmą kartą pradėti, o tada atnaujina mūsų kintamasis kiekvieną kartą, kai jis iš tikrųjų vykdo ir spausdina tai CS50. Ir baigsis po 10 kartų. Cool. Taigi, nors kilpos iki kito. Ir, kaip matote čia, mes tiesiog kai tuo tarpu šis condition-- klausimas? AUDITORIJA: Kaip aš galiu šokti iš tikrųjų tik ne vienas skaičius, bet du skaičiai [nesigirdi] i plius plius plius? ALLISON: Taigi klausimas buvo, kaip jūs galite atnaujinti savo kintamasis daugiau nei viena metu. Taigi aš plius Plus atnaujinimas pagal vieną kiekvieną kartą. Jei nori atnaujinti šią du, galite tai padaryti i plius lygu 2. ROB BOWDEN: Matėte plius lygus iš paskaitos dar? AUDITORIJA: [nesigirdi]. ALLISON: Tai efektyviai tas pats, kaip i lygu i plius 2. Taigi jis ketina imtis ir ją atnaujinti du kaskart. Plius lygu yra tik kažkas mes vadiname sintaksines cukraus. ROB BOWDEN: Taip, tie egzistuoja beveik visi aritmetinės operatoriai. Taigi, aš laikai lygūs būtų dvigubai daugiau. j takoskyra lygus 3 yra tas pats kaip j lygi j, padalinta iš 3. ALLISON: Arba minus lygu 2 būtų Mažėja i du kaskart. ROB BOWDEN: Net mod nelygiaverčiai. Jūs dar nematėte Bitinis operatorius, bet Caret lygus ir ampersand lygus, visi tie egzistuoja. ALLISON: Taigi daug kartų, ypač savo pirmąją porą P rinkinių, jums bus tikriausiai incrementing iki vienas, kad aš plius plius, j plius plius yra viskas, kad jūs ketinate į paprastai naudojate. Bet kad atnaujinimas būklė visiškai jūsų kontrolės. Galite atnaujinti bet kokiomis žingsniais arba kažkokiu būdu jums nuspręsti. Gal jums net nori, kad ji būtų atsitiktinių skaičių kartais. Bet taip, yra daug dalykų, kuriuos galite padaryti su tuo. Jūs ne tik i plius plius. ROB BOWDEN: Tiesiog taip, jūs žinau, tai egzistuoja, ji taip pat egzistuoja kitokios formos, plius plius i. Taigi, jei jūs kada nors ieško internete ir atsitiks pamatyti plius plius i, gana daug reiškia tą patį. ALLISON: Cool. Geras? Nuostabus. Taigi, nors kilpas. Labai panašūs. Turite kokių nors sąlygą. Pagrindinis dalykas, kad pranešimas Čia yra užuot trijų skirtingų dalių sukurti, mes turime vieną. Mes tiesiog turėti tam tikrą būklę kuriuos teko patikrinti. Ir tuo pačiu būdu tol, kol ši sąlyga įvertinama true, Jūsų kodas ruošiasi paleisti. Ir jei tai klaidinga, ją bus nutraukta, perkelti į kitą dalį savo programos. Taigi tai yra rūšies like-- kas Geras pavyzdys tikrinimas už kokią nors normalią būklę? GABRIEL: Nors tiesa. ALLISON: galite padaryti, o tiesa. Na, 1 yra lygus 1. ROB BOWDEN: Jūs galite padaryti while-- tiesiog, o ne naudojant už kilpos, Jūs visada galite koduoti už Vijos while cikle, todėl aš arba didesnė už 0, o i mažesnis nei 10. ALLISON: Awesome. Ir tada mes daryti, o kilpos, kuri yra puikus Vartotojo įteisinimo, kur norite gauti ką nors iš Jūsų vartotojo, ar jis galioja, ir tada toliau iš ten. Taigi, vienas iš dalykų, kuriuos reikia žinoti yra su daryti, o tai, kad jis ketina vykdyti, ir tada jis bus iš naujo atlikti jei ši sąlyga yra įvykdyta. Taigi tikriausiai geriausias būdas tai padaryti yra tik pamatyti pavyzdį čia. Taigi, kaip aš ką tik paminėtos, vartotojų Pripažinimas yra tikrai useful-- arba padaryti whiles tikrai naudinga su vartotojo patvirtinimo. Taigi tai yra tik ketina iš naujo paskatinti tikrą vartotoją kol jie patenka teigiamą skaičių, kuri gali būti naudinga jūsų P rinkinys šią savaitę. Ir šiuo atveju taip, kai mes iš pradžių paleisti šią programą, jis ketina spausdinti įvesti teigiamą skaičių. Jis ketina gauti kai įėjimas iš vartotojo, ir tada jis ketina patikrinti kad įėjimas nuo būklės kad Jūs nustatėte jį. Taigi, šiuo atveju jis ketina patikrinti. Jis ketina pasakyti, OK, Mūsų indėlis neigiamas, ar tai 0 arba neigiamas, kuris būtų negaliojantis. Taigi ji vėl greitai. Klausimas? AUDITORIJA: Ar tai tas pats tada kaip o kilpa, jei jūs tiesiog nukopijuoti tą kodą ir įdėti jį [nesigirdi] while cikle? ALLISON: Taigi klausimas buvo būtų tai būtų tas pats, kaip vien tik laiką kilpa, jei mes tiesiog kopijuoti while cikle aukščiau. Taigi šiuo atveju, jūsų, o kilpa ketina pirmiausia patikrinkite būklę. Taigi šiuo atveju, jeigu mes bandėme rašyti kaip tik while cikle, būtų sakyti, kad kol indėlis yra mažesnis kaip vienetas. Bet mes neturime duomenys naudojami jį. Klientus: jei [nesigirdi] while cikle, įskaitant šį kodą, bet tada jums susitvarkyti kodą aukščiau while cikle, taip pat. Jūs ką tik turėjo šį kodą [Nesigirdi] while cikle. ALLISON: Būtų Tas pats, taip. Taigi, galima tiesiog write-- užuot do-- Taip. GABRIEL: Bet tai labiau elegantiška. ALLISON: Taip, tai elegantiška. Galite patekti į projektavimo ir Papuošalą, bet taip, jūs visiškai gali tai padaryti. Bet kokie kiti klausimai? Gerai, gerai. Taigi mes daug kalbėjomės apie sąlygas su visų šių kilpų, kad mes turime, todėl mes iš tikrųjų gauti į sąlygos, Būlio išraiškos. Vėlgi, jūs naudojate juos, C, taip tiesiog rūšies pereiti nuo daugiau grafinę sąsają faktiškai kodavimas. Kietas, todėl didelis vienas, jei. Iš esmės tik leidžia mums pristatyti tam tikra logika į mūsų programą ir patikrinkite sys sąlygos. Taigi šiuo atveju, OK, yra n yra didesnis nei 0? Taip, tai yra, kad jūs galite paleisti tai. Tai tiesiog patikrinti kai sąlyga, kad jūs nustatyti, kuri manau, mes visi patogu patikrinti sąlygas. Cool. Taigi, jei dar yra jūsų kita, galite pasakyti Gerai, jei tai tiesa, padaryti pirmas dalykas. Kitaip aš noriu, kad jūs Numatytoji ir daryti ką nors kita. Kaip šiuo atveju, jūs arba pasirinkti teigiamas skaičius arba neigiamas skaičius. Tu turi tik dvi galimybes. Jūs turite tai atlikti nepriklausomai ką jūsų vartotojo įėjimai. Taigi, galima sakyti, gerai, tai didesnis nei 0? Cool. Spausdinti teigiamas skaičius. Jei taip nėra, spausdinti neigiamas. Kiekvienas geras? Ir tada vienas dalykas pripažinti yra kad jei jei sąlyga yra įvykdyta, kitas niekada taip įvykdyti. Tik bus vienas iš šių vykdyti vienu metu. Todėl kompromisą. Jūs negalite gauti, kad tiek. Jūs arba turite pirmąją sąlygą. Jūs arba jei arba kitur, bet ne abu. Kuris gali padaryti daiktus Dar sudėtingiau, nes jūs galite padaryti, jei, dar ji, o tada kitur. Taigi šiuo atveju, mes turi tris sąlygas. Ir vėl, tik vienas iš jų yra ketina baigti įgyvendinti projektų. Taigi jums gali būti įdomu gerai, ką daryti, jei jums turi kažką, kad gali patenkinti du iš šių. Gal ką jūs įvedusi atitinka tiek būklę nes jei ir jei kitur. Vienintelis dalykas, kuris vyksta paleisti ALLISON: Kai tik ji nustato, ką kad ji atitinka tai būklė įvertina, kad tiesa, kad tai, ką jis ketina važiuoti ir nieko daugiau. Taigi, jei jūs turėjote tai skaičius tarp 0 ir 5 savo pirmąjį, ar tai skaičius nuo 3 ir 5 už kitas, jei dalį, ir įvedate number-- Pasakiau 0 ir 5 and-- 4. Tai ketina hit pirmasis. Jis ketina pasakyti Gerai, tai skaičius yra tarp 0 ir 5 dalis. Vykdyti ir palikti. Jis niekada hit kad antrąjį variantą. Cool? Nuostabus. Gerai, mes taip pat turime perjungimo ataskaitas, jei norite gauti net more-- arba atsiprašau, jungiklis yra šalia. Gaunu prieš save čia. Vėlgi, daug jei blokai kur, kaip aš ką tik pasakė yra kaip tik jums rasti būklę kad manimi susitiko ir jei kitas, jei kitur, jis palieka. Jei reikia patikrinti daug dalykų, jūs norės naudoti, nes jis patikrins kiekvieną kartą čia. Taigi tai bus paleisti per ir jei tai didesnis nei arba lygus 90, jis ketina spausdinti, kad. Ir jis bus rodomas per ir Tikrinti kiekvieno iš jų. AUDITORIJA: Taigi tai būtų daugiau Buggy kaip [nesigirdi]. Ar tai, kaip [nesigirdi]? ALLISON: Klausimas Ar tai buggy ar ji tai padaryti tai, ko norite. Tai tikrai priklauso nuo ko norite iš savo programos. AUDITORIJA: Aš turiu galvoje, pavyzdžiui, jei jūs įtraukėte 90 vietą. ALLISON: Jeigu jūs įtraukėte 90-- AUDITORIJA: [nesigirdi]. GABRIEL: Jūs ketinate gauti du dalykus. ALLISON: Jūs ketinate gauti du dalykus. Taip, du. ROB BOWDEN: Du? ALLISON: Ne ROB BOWDEN: Keturi. Jeigu jūs įtraukėte 90, jis ketina pasakyti jums turiu A, jūs turite B, jūs turite, C, jūs turite D. AUDITORIJA: [nesigirdi]. ALLISON: Teisė. Taigi aš priklauso nuo to, ką noriu iš jūsų programos. Kartais reikia Tikrinti kelis dalykus. Gausite daug giliau į ką geras dizainas, kaip jums judėti į priekį. Svarbu suprasti, kad tai patikrins visas keturias sąlygas čia. Kadangi, jei tai būtų, jei kitas, jei dar jei kitur, tai, kad pasiektų šį pirmąjį atvejį, jis atspausdins jums gavau A ir padaryti. ROB BOWDEN: Net jei mes nusprendė jį pakeisti, jei ir didesnis nei arba lygus 90, jei ir didesnis nei arba lygus 80, ir mažiau nei arba lygus 89, jeigu n yra didesnis nei arba lygus 70, ir n yra mažesnis arba lygus 79, taip, kad bus teisinga. Kad bus tai, ką mes norime, bet ji vis dar tikrina kiekvieną ji. Taigi kadangi į pirmąjį scenarijų, jei mes įrašykite 90 vos jei kitas, jei kitas, jei, ir mes įvesti 90, tada jis ketina ištaisyti. Ji rūpinsis pirmasis vienas, spausdinimo jums turiu A, praleisti viską, nes jį jau rado tinkamą. Visi atvejai yra nesuderinami remiantis, jei kitas, jei kitas, jei. Taigi jis bus įvykdyti pirmasis jeigu tai daroma. Tai bus eiti iki galo. Kadangi, jei mes pakeisime kad tai, ką aš šaukdamas mažesnis arba lygus 89. Jis ketina patikrinti pirmasis. Tai bus atspausdinti. Tai bus patikrinti antrojo. Jis nesiruošia spausdinti. Patikrinkite trečiasis. Nesiruošia spausdinti. Patikrinkite ketvirta. Dabar ketiname spausdinti. Taigi šiuo atveju, jei kitas versija, nes šie atvejai yra tarpusavyje nesuderinami, tai geriau naudoti, jei kitas, jei kitas, jei, nes teks mažiau patikros sąlygomis nei šioje versijoje. ALLISON: Awesome. Taigi dar vienas dalykas, mes galime padaryti yra jungiklis ataskaitos. Iš esmės jungiklis pareiškimas užima tam tikru kintamuoju, šiuo atveju tai n, o nustato tokiu atveju vykdyti. Taigi tai taip pat yra vienas, kur yra jūsų atvejai turėtų būti natūra tarpusavyje nesuderinami. Taigi šiuo atveju, kai mes gauname vieną, tai ketina suderinti viską, kad variable-- kokia n reikšmė yra viena iš šių atvejų, todėl 1, 2 arba 3 ir atsispausdinti atitinkamą liniją. Ir tada, jei pastebėsite čia, mes taip pat turite standartinės, kurį galite iš sugalvoti kaip jūsų kitur. Taigi, jei jums pasirinkti bet kurią kitą numerį be 1, 2 ir 3 šiuo atveju tai tik ketina spausdinti negalioja. Sprendimas, kada taikyti IFS palyginti jei elses versus jungikliai vyksta būti kažkas, kad jūs vaikinai žr dizainas protingas, kaip jūs pradėsite rašyti daugiau sudėtingas programas, ir Nėra jokios griežtų taisyklių iš kada jas naudoti. Tai tikrai priklauso nuo jūsų požiūriu. ROB BOWDEN: Ir ką tik mesti jį iš ten nes jis yra patogesnis skyriuje. Jungikliai, jie linkę be-- taip jūs tik į įvairiais būdais jums gali juos naudoti, nes IF, būklė gali būti labai bet ką jūs norite. Su persijungia atvejus turi būti skaičiai, ar techniškai jie gali būti simbolių, tačiau simbolių, kaip matysime, yra tik skaičiai. Todėl jie turi būti skaičiai, bet jungikliai tikrai efektyviau nei jei else if else if, nes net atsižvelgiant pavyzdį before-- gerai, Įvertinimas pavyzdys atrodo gerai. Na tarkim čia, mes vietoje daryti tai kaip, jei kitas, jei kitas, jei scenarijus. Taigi, jei n yra lygus lygus 1, spausdinti Pasirinktas mažą skaičių. Jei kitas, jei n yra lygus lygus 2, Pasirinktas vidutinio skaičiaus. Else if lygiosios prilygsta 3, aukštas. Kitas galios. Taigi galime sakyti, kad buvo mūsų planas. Taigi galime sakyti, kad mes įvesti 4, todėl mes tikimės, negalioja. Taip, kad jei kitas, jei dar jei požiūris ketina dirbti yra tikrina pirmąją sąlygą. Tai netenkino. Taigi, mes patikrinti antrąją sąlygą. Tai netenkino. Patikrinkite trečiąją sąlygą. Netenkina. Taigi mes einame į kitur ir spausdinti negalioja. Būdas jungiklio darbai tai kaupia žemyn į tai, ką mes ketiname skambinti šuolis lentelę. Pagrindinė idėja būtybė kad kai įvesite 4, jis iš karto gali eiti į numatytąjį. Tai nebūtinai turi patikrinti ar aš esu bylą 1? Nope, kad ne jis. 2 atvejis? Nope. 3 atvejis? Nope. Numatytasis. Gerai, tai turi būti ten, kur aš nori, ir tada atlikti, kad. Ne, tai iš karto peršoka į numatytąjį. Ar jis man įvesti 2, tai tuoj ketinate eiti į 2 nereikia eiti per atveju 1. Taigi tokiu būdu, realiai dabar tai ne tai, kad daug didesnis veiksmingumas. Paprastai kompiuteriai yra gana greitai, ir tai, kad didelis. Bet tai yra tas atvejis, jungikliai yra greitesnis. Jei jūs tikrai bando optimizuoti, naudokite jungiklį. ALLISON: Cool. Ir tada mes turime trijų komponentų operatorių. Taigi, aš žinau, aš minėjau anksčiau Žodis sintaksinis cukrus. Taigi, tai tik ką daryti, kad Jūsų kodas daug glausčiau. Taigi tai yra vienas iš šių atvejų. Taigi trijų komponentų operatorius Klaustukas Dvitaškis kaip matome linijos eilutę s yra lygus n didesnis už 100 klaustukas didelis dvitaškis mažas. Taigi, iš esmės, kaip tai veikia, tai n yra didesnis nei 100 sąlyga. Taigi, aš manau, kad tai gali prasmės. Tai tarsi klausia klausimą. Tai sakydamas oh, tai n yra didesnis nei 100. Kas žino? Ir jei jis bus vertinamas kaip tiesa, jis ketina duoti jums Pirmas dalykas, tai sąraše, kuris yra didelis. Kitaip jis ketina duoti jums maža. Taigi, tai tik tikrai paprastas ir efektyvus būdas tai padaryti, pavyzdžiui, jei kitur. Štai visa tai. Ir jei mes turėjo užrašyti tai kaip jei dar sąlyginė, ji būtų, jei n yra didesnis nei 100, grįžti aukštas. Kita, grįžti mažai. Tai tik dar labiau glausta būdas jį raštu. ROB BOWDEN: Taigi būtent šis pavyzdys yra, kai jūs darote kažką kaip šis, tai yra modelis kur aš naudoju trijų komponentų labai dažnai. Taigi mes ne kalbėjo apie taikymo sritį dar, bet aš nekenčiu pamatyti Styginių s kabliataškį. Jei n yra didesnis negu 100, s lygu didelis. Kita, s lygu mažas. Taip, kad modelio, tos penkios eilutės kodo pažodžiui 100% laiko gali būti perkeliami į ką buvo ten su trijų komponentų. Taigi trijų komponentų, viena eilutė kodo. Jei kitur, penkių. Štai pavyzdys, atkreipti iš kiekvieno laiko. Tai būtų puiki vieta už trijų komponentų operatorius. Tai toks švarus. Bet žmonės linkę niekada juo naudotis. ALLISON: pašalink jį Gabe. GABRIEL: Taigi, dabar jūs vaikinai visi išmoko paskaita šią savaitę kad viskas Kompiuteris yra dvejetainis, tiesa? Tiesiog kaip čia lempų. Galite būti arba įjungti ir išjungti. Ir viskas, aš turiu galvoje, pažodžiui viskas. Kai kurie skaičiai ir simboliai, ir juostelės, ir net kodą, kurį parašyti kada ji pasireiškia sukompiliuotas su mašina kodas ir stuff like that, taip viskas suvesta į 0 "ir 1". Ir todėl, kai mes susiduriame su sveikaisiais skaičiais, kurie yra kažkas, kad yra techniškai labai paprastas, turime sugebėti daryti stuff įtraukdami juos kaip, kuris yra turbūt vienas iš paprasčiausių dalykų Jūs galite padaryti, kad du sveikieji skaičiai, tiesa? Taigi to ir atimties veikia tik kaip ji veikia dešimtainiai notacijos, išskyrus čia tai dvejetainis, tiesa? Taigi jis yra pagrindo du. Taigi pridėti 1 plius 1. Tai suteikia 0, 1 ir perkeliamas. Ir tik nuolat daryti, todėl dabar ateina įdomesnis klausimas. Mes žinome, kaip atstovauti visiems teigiami sveikieji skaičiai kompiuteryje, bet padarykime tai vykdyti. Apsimesti vaikinai visi yra 1960 ar kažkas bando sukurti kompiuterį, ir jūs turite sugalvoti ir saugoti minus 1 būdas, pavyzdžiui, ar, atėmus sveikasis skaičius šiuo klausimu. Kaip jūs darytumėte, kad? Any ideas? Tiesiog mesti viską į mane. Taip? AUDITORIJA: [nesigirdi] paskiria jei jūsų [nesigirdi] ypatinga. GABRIEL: Galite paskirti specialusis bitų, kuri bus 0 arba 1. Tarkime, jei šis yra teigiamas ir 0, jei tai neigiamai. Ir tada iš šiek poilsis yra tik saugoti numerį. Cool. Štai labai gera idėja. Mes turime, aš nežinau, 200. Ir jei pirmasis bitas įjungtas, tada tai plius 200. Jei jis išjungtas, tai yra minus 200. Cool. Yra tik vienas mažas problema su tai, kuris, jei stengiamės Apibendrinant viską. Tik įsivaizduokite turime 11.111 čia ir mes sudedant tai su 00.100 whatever. Jei tie du yra teigiamas, tai gerai. Bet tada, jei viena iš jiems yra neigiamas, kaip tarkime, kad tai šiek tiek čia yra vienas, kad yra atsakingas for-- aš ruošiuosi padaryti separate-- todėl tai viena iš priemonių, kad šis skaičius čia yra teigiamas. Tai vienas reiškia, kad šis skaičius čia yra neigiamas, ar ne? Bet tada, kai esate ketina juos Apibendrinant, jūs reikia if sakydamas oh, jei tai yra 0, tada mano suma bus kažkas kita, ar ne? Todėl ten truputį daugiau protingas būdas tai padaryti kad, kuris rengia du įgula. Taigi, iš esmės tai, ką mes padaryti, tai mes apibrėžiame minus 1 būti dalykas, kad jei mes pridėti iki 1 suteikia mums 0. Leiskite man pakartoti, kad. Taigi galime sakyti, kad tai čia yra 1. Kas yra dalykas, kad natūraliai teigiami sveikieji sudėtas su mums 0? Ką daryti, jei mes stengiamės įtraukti jį į šį numerį? Mes ketiname have-- Gerai, kad galime pridėti. Mes ketiname turėti 1 plius 1 yra 0, ir tada ji vykdo per. Ir tada mes ketiname gauti 0 dar kartą. Gaunu painioti. Ir jūs ketinate gauti 0 ir 0 ir 0 ir 0 ir 0 ir 0. Daug 0 aisiais. Per paskutinę vieną, mes ne bus galima nešiotis ant, nes tarkim mes tik sprendžiant su vienu baitu, todėl tik 8 bitai. Taigi, ką kompiuteris daro pagal nutylėjimą tiesiog pamiršta apie tą [nesigirdi] Gerai? Taigi tai yra tai, kas vadinama dviejų įgula. Mes paprasčiausiai apibrėžti minus 1, kad būtų dalykas, kad čia, jei norite pridėti, kad iki 1 duos jums 0. Ir tai gana kietas nes mes nelabai reikia vėlu įgyvendinti Kitokia suma priklausomai nuo to, ar tai neigiamas arba teigiamas skaičius. Ar tai prasminga? Taigi vienas dalykas, kad mes darome čia, kad paverstų tarp teigiamas ir neigiamas integer tada mes apversti viską, ir tada mes pridėti 1 iki šio skaičiaus. Jei bandysite tai padaryti patys ant popieriaus rietime, jūs ketinate pamatyti, kad yra prasminga. Bet jei aš šį numerį čia, tai yra penki. Taigi, jei aš apversti viską čia, todėl 1, 1, 1, 1, 1. Flip, apversti apversti. Ir tada pridėti 1 prie jo. Aš ruošiuosi būtent minus 5. Gerai? Ši rūšis turi prasmę, nes jei bandysite Apibendrinant tai su numeriu kad mes turėjome anksčiau, kuris was-- tegul apversti tai dar kartą. Tai buvo 101 ir daug 0 aisiais. Jei bandysite įtraukti šiuos du numerius kartu, jūs ketinate turėti tiksliai 0. Gerai. Klausimai? AUDITORIJA: [nesigirdi] GABRIEL: Ką tai reiškia? AUDITORIJA: Neigiamas į teigiamas [nesigirdi]. GABRIEL: Ne, jūs apversti ir jūs įtraukiate 1 visada. Taip. Gerai, kad simboliai ir užkoduotas binaries. Turime ASCII lentelę, kaip jums Taip pat mačiau paskaita, tiesa? Taigi tai iš esmės dalykų priskyrimas. Ir čia aš negaliu pabrėžti pakankamai kad kompiuteris, ir 65 Yra pažodžiui tą patį. Taigi, jei aš rašau kažką panašaus char c lygus, galėčiau tuo pačiu metu tiesiog parašyti 65 čia, ir ji būtų lygiai tas pats, gerai? Nieko nesiskiria kokia. Mes paprastai linkę daryti simbolių kintamųjų tipą. Char, ne todėl, kad jie iš esmės numatyti, kad, bet dėl ​​to, žmogaus samprata. Bet jūs galite tiesiog susidoroti su sveikaisiais skaičiais vietoj kintamųjų tipo char, ir jums bus gerai. Tik faktinis skirtumas tarp char c ir int i yra tai, kad int turi keturis baitų labiausiai sistemos, o char turi vieną baitą. Jie iš esmės Tas pats kalbant apie duomenų. Taigi, kas bus atspausdinti čia? Čia mes spausdinti skaitmenį naudojant printf su pliuso 1, ir kaip sveikieji, simbolių galima apibendrinti, todėl simbolių taip pat gali būti sumuojami. Taigi tai yra būtent 65. Taigi tai bus 66, ir čia mes turime 65 plius mažai minus didelis, kuris bus, aš tikrai nežino. Bet tai bus tiksliai atotrūkis tarp didžiųjų raidžių ir ir mažesnės raidės, todėl mes ketiname gauti nedidelį a, tiesa? Taip. Taigi tai ketina spausdinti charakteris, kuris yra tiksliai tai viena. Geras? Klausimai? Čia mes turime daug įvairių krūva tipai skaitinių kintamųjų. Mes jau kalbėti apie tarpt. Plūdė yra tik būdas to-- tai tikrai juokinga, nes kai aš pirmą kartą sužinojau programuoti atgal per dieną su Python, pirmoji programa aš kada nors bandė rašyti, aš pamačiau, kad ten buvo tipas vadinamas ir tipas vadinamas plūdę. Ir plūdė buvo visas nekilnojamojo numeriai. Taigi tada aš paklausiau, kodėl turėtų Aš niekada naudoti int tada? Nes, jei aš galiu naudoti visus realieji skaičiai su trintuve, Aš tiesiog nustoti naudoti int, tiesa? Nes realus skaičius yra panašiai kaip bendresni. Pasirodo, kad tai yra ne kompiuteriuose atvejis nes jie iš esmės skirtingi dalykai. Taigi sveikieji ir plūdės, operacijos, kad jūs padaryti, kad jų iš esmės skiriasi, nes taip, kad iš jos būtų saugomi, gerai? Mes ketiname kalbėti truputį šiek tiek daugiau apie tai per sekundę. Taigi dvigubas tik didesnis plūdės. Paprastai daugumoje sistemų, plūdė yra keturi baitai, kaip int. Ir dukart yra aštuoni baitai. Ilgai ilgai tikrai tik simbolis kad jūs pridėti prie panašaus int tipo. Jūs sakote, ilgai ilgai int, kaip šis. Seniai int x, kad jis ilgiau. Taigi daugeliu sistemų, kad duos aštuoni baitai vietoj įprastų keturių. Ir jūs iš tikrųjų galite palikti , tokiu būdu tai gali tiesiog pasakyti ilgai ilgai, ir kuris veikia taip pat, gerai? Taip pat galite daryti kitus dalykus, pavyzdžiui, unsigned int, ar vėl tik nepasirašytas Taip pat dirba. Ir kad būtų x kintamas kaip viskas yra teigiamas, todėl jūs negalite iš tikrųjų turi neigiamą numeriai taip, kad mes matėme čia. Taigi po nuostabus slankiojo kablelio ir tikslumą. Tai viena iš priežasčių, kodėl jums norite naudoti int vietoj plūdės, nes Ints yra 100% tiksli, ar ne? Tai yra būtent tai, kad skaičius. Plūduriuojančio kiekis, jei jums pasakyti atsakymas lygus 1 per 10-- Aš atsitikti, kad ši tiksli Programa čia float.c. Kurie spausdinami į 20 skaičių po kablelio. 1, padalytą iš 10, ir kad paprastai yra 0,1, tiesa? Bet čia, jei mes padaryti plūduriuoti ir tada mes paleisti jį, matome, kad tai ne visai 0,1. Tai 0,149 kažkas. Ir kodėl taip yra? Nes jūs tikrai negali atstovauti kiekvieną vienas galimas realus skaičius atmintyje nes yra uncountably daug. Taigi mes techniškai gali atlikti tik sudaro baigtinį kiekį jų su baigtinio duomenų kiekio. Bet tai tikrai įdomu. Dabar tai kyla klausimas, kaip tai darytumėte eiti apie atstovaujanti tai bitai, tiesa? Taigi, kaip plūdės saugomi? Su skaičiais, tai buvo lengva. Bet su plūdės norite padidinti diapazoną, ir norite, kad būtų galima sudaryti didžiuliai skaičiai ir labai mažytės numeriai kaip 0.000001 tuo pačiu metu. Taigi dar kartą, tas pats žaidimas. Ar kas nors turite idėją, kaip būtų galima eiti apie atstovaujanti plūdę atmintyje? Tiesiog mesti viską. Taip, prašau. AUDITORIJA: [nesigirdi] kaip jei tai buvo du Ints ir vienas yra [nesigirdi] ir viena būtybė viskas po kablelio. GABRIEL: Gerai, gerai. Taigi du skirtingi sveiki skaičiai. Jūs galite turėti 12,45, todėl tai, 12 ir 45. Nice. Ką ere ketinate pasakyti? Tas pats? Taip? AUDITORIJA: [nesigirdi] žymėjimas kur atskirti bazę. GABRIEL: Mokslinis žymėjimas, Taip, kad paprastai tai, kas vyksta. Taigi tai yra tai, kas vadinama mantissa. Štai kas iš tikrųjų numeris, o tada eksponentė yra tik ten, kur kablelis yra, tiesa? Taigi tai bus kažkas apie 2, 4 forma 1, 3, 5, 10 kartus iki minus 4. Aš tiesiog supratau that-- yeah, tiksliai. Ir tada tai 10 su minuso 4 yra ketina nustatyti, kur kablelis yra, gerai? Brazilijoje mes naudojame juos kableliais. Čia jūs vaikinai naudojamas taškas. Taigi taškas. Ir tai yra cool, nes tada jūs galite sutelkti daug jūsų bitai nuo šio vaikino čia ant mantisės ir tada, kad bus jūsų faktinis tikslumas. Ir jūs galite tai padaryti, arba dešimtainiais arba dvejetainiu besiremiančia sistemą. Yra įvairių būdų įgyvendinti tai. Klausimai? Taip? AUDITORIJA: Kiek vietos po dešimtainio [nesigirdi]? GABRIEL: Tai sudėtingas klausimas, nes tai niekada 100% tiksli, nes, kaip matote čia, nes Kai kurie skaičiai yra 100% tiksli. Manau, jei mes įdėti 0,5 čia tai bus 100% tiksli. Ji ketina būti 0,500000. Taigi šiuo atveju, tai tobula. Tačiau kitais atvejais, tai daug mažiau tobula. Iš savo patirties, kaip iki keturių, penkių dešimtųjų tikslumu, yra gana tikslūs. Jei naudojate dvigubas, jis ketina būti būdas tikslesnis nei, kad gerai? ROB BOWDEN: Taigi tiesiog mesti kai daugiau kontekstas ne plūdės, Aš niekada nepamirškite 100%, kaip kad spec plūdžių iš tiesų veikia, bet aš visada prisiminti kad plūdės pradėsite gauti purvinas. Taigi, idėja yra ta, kad, kai jūs gaunate tikrai, tikrai didelis skaičius ar tikrai, tikrai nedaug, mes pradedame vis blogiau ir blogiau ne diferencijuojant tarp dviejų artimų plūdės. Taigi, kaip man patinka galvoti apie tai su slankaus kablelio netikslumo, yra dvi plūdės kad jei bandau nurodyti juos C, nepaisant to, jog jie skirtingus numerius, jie ketina būti aiškinama kaip tuo pačiu numeriu, nes mes negalime laikyti juos skirtingai. Mums reikia naudoti tuos pačius bitus. Ir todėl, kai mes gauname tikrai, tikrai didelis skaičius, kalbėti kaip 10 iki 300 ar kažkas, tai tuo momentu kad nuo 10 iki 300 ar 5 kartų 10 iki 300 negalima atskirti nuo 7 kartus 10 į 300. Štai gana didelis skirtumas tarp dviejų numeriuose. Bet tada, kai jūs gaunate žemyn iki normalaus lygio dalykų, Jūs linkę būti gana gerai diferencijuoti. Ir tada, kai jūs gaunate žemyn tikrai mažas, Jūs taip pat gauti labai blogai dar kartą. Taigi kaip visa krūva 0,0000, jis gauna gana blogai. GABRIEL: Taip, taip greitai pastaba. Niekada tai padaryti. Niekada nebandykite lyginti plūdes naudojant kaip lygių lygu, nes net jei jie beveik tas pats, beveik tas pats yra ne tas pats. Taigi, ką jūs paprastai padaryti, tai jūs atimti juos imtis absoliučią vertę, kad ir pamatyti, jei tai yra mažesnis nei 0,0001 ar kažkas panašaus, gerai? Ir kietas. Žinau, kad daug žmonių turi kai Java fonas, ypač tie, kurie juose AP informatikos, tiesa? Ir Java kalba kad daugiausia remiasi C, ji turi pora labai didelių skirtumų. Bet kilpos, IFS ir stuff like kad jie visi tą patį sintaksę. Turiu keletą programų čia, kad matytumėte tai. Taigi, pavyzdžiui, paprastas hello world. Tai hello world C, kuris jus vaikinai tikrai žino, ir tai, ir tai vienas yra Java. Taigi Java turime tai visuomenės klasė, hello world, ir public static negaliojančiu Pagrindinis ir styginių args. Styga args ketinate pasirodys C netrukus. Bet tegul ne ten dar. Dabar mes turime negaliojantis čia, o tai reiškia kad pagrindinis yra nesiima jokių argumentų. Ir tada mes turime System.out.println, ir tai rūšies už printf ekvivalento. Čia mes tikrai nereikia pasvirąjį n, nes spausdinimo ln daro tai už jus. Tai prideda pasvirąjį n ties linijos pabaigoje. Bet jei jūs einate į kažkas panašaus, prietaisas galima pastebėti, kad jie beveik tas pats dalykas. Taigi pradinis nustatymas, ir sąlyga, ir pakeitimai is-- pasiilgau tarpą here-- jie beveik tas pats dalykas, išskyrus Java turi kaip dar keli aukšto lygio dalykų. Čia mes galime padaryti plius aš ir Java automatiškai padaryti tai i čia, kuris yra sveikasis skaičius, į eilutę, ir tada pridėti dvi eilutes kartu. Čia C mes turime padaryti ir% d. Už linijos čia atrodo lygiai taip pat. Ir jeigu pažvelgtume, jeigu SP Taip pat šiek tiek skirtis, tiesa? Taigi tikrieji dideli skirtumai yra į tuos dalykus, kuriuos matote čia. Public static, tuščia, ir tada visuomenės klasė, jei. Taigi Java kas vadinama virtuali mašina. Ir tai yra labai stipriai remiasi tuo, ką vadinasi Objektinis programavimas, kuris yra labai, labai dažni paradigma programavimo šiandien. Ir ši klasė yra tai, ką jūs matote, kažkas iš objekto orientacijos, yra sukurti klasę ir tada jums gali gauti daiktus iš tos klasės. Mes neketiname kalbėti per daug apie tai iš CS50, bet tai tikrai kažkas tikrai cool, ypač, jei norite pereiti į sudėtingesnių interneto svetainių kūrimas tuo kurso pabaigoje, kaip pateikti savo galutinį projektą ir kai kurių gražus pagrindai ir kita. Taigi, iš esmės idėja yra ta, kad jūs nenoriu vėl įgyvendinti kažką, todėl jūs sukurti kažką, kad labai bendro pobūdžio, kaip ir formos, ir tada kurti įvairių formų nuo jos, ir tada iš kiekvienos šie profiliai, kuriate daugiau konkrečių formų iš trijų matmenys ar kažkas panašaus. Ir jie turi šią hierarchiją to jie paveldėti iš kitų tie, todėl visos funkcijos ir kinta, didelis forma čia turi, visos šios teks, ir visi jie yra ketinate turėti, ir taip toliau ir taip toliau. Taigi tai yra pagrindinė idėja. C neturi, kad bet C ++ tikrai turi tą funkciją natūra. Ir Java įtakingas iki objekto orientacijos, todėl tai, kodėl jūs matote čia klasė visą laiką. Ir kitas dalykas yra tai Java virtuali mašina. Taigi tai, manau, yra labai protingas mintis. Taigi, ką žmonės, kurie išrado java padariau yra jie nenorėjo kaupia savo kodą du kartus jei jie paleisti jį į Windows, arba "Mac" ar "Linux, todėl tai, ką jie daro yra tiesiogine prasme jie paleisti kažkas panašaus prietaiso, bet jūs tikrai pamatyti, kaip tai vyksta. Taigi jie paleisti virtualios mašinos viduje kompiuterio, kuriame yra iš esmės panašus į mini operacinė sistema. Ir kad operacinė Sistemos gyvenimo tikslas tiesiog paleisti tai, kas vadinama baitų kodas. Taigi vietoj C, kaip mes būtų kompiliuoti tai padaryti, jei, tada paleiskite ./if. Pamiršau in Atgal nerijos velniop. Java, darytumėte pirmiausia Java, C kompiliuoti jį if.c. Tai ne C. Tai dot java. Ir tada jūs turite paleisti ne ./. Gauni šį naują failą if.class, bet jūs galite ne tikrai paleisti if.class dabar tik kaip mes anksčiau. Tai ne vykdomąjį. Jūs turite paleisti. Turite pašarų jį į Programa vadinama "Java", ir kad programa yra virtualioji mašina, ir tada jūs if.class arba jei. Taip. Ir tada ji veikia. Gerai, kad tai yra tipo Virtuali mašina vyksta. C neturi, kad taip, jei aš buvo įdėti šią programą į Windows kompiuteryje, tai ne darbas C Java ji. Klausimai? Cool. Kad jei super skyriuje šiandienos.