ROB: Selvä. Tervetuloa ensimmäisen osan. Olen Rob. JOSEPH: Olen Joseph. ROB: Joten me sukeltaa suoraan sisään Ensimmäinen asia puhua on Appliance. Joten toivottavasti suurin osa teistä on Latasin sen jo. Mutta voit nähdä ohjeet klo cs50.net/appliance. Voi luoja, nyt olen itsetietoinen. Olen edelleen kuulla sen. JOSEPH: Vau, se kuulostaa se on eksyksissä. ROB: Joten jotkut ihmiset ovat käyneet ongelmia sen kanssa, joten älä odota viime hetken ongelman asetettu yrittää ratkaista Laitteiden ja selville, että se ei toimi. JOSEPH: Ja jos jotain ei tapahdu ja tarvitset apua, voit mennä cs50.net/discussion jossa on foorumi, jossa voit voi lähettää kysymyksiä. Ja me saamme heidät lopulta. ROB: Selvä. Joten tämä on mitä Appliance näyttää. Taaskin se on vain täysin erillinen käyttöjärjestelmä käynnissä sisällä mitä käyttöjärjestelmä sinulla ovat käynnissä kannettavan tietokoneen. Ja tärkein asioita sinun käyttää ovat gedit. Joten toivottavasti tämä on jo tullut tuttu sivusto. Terminaali. Ja voit myös käyttää Chrome sisällä Appliance. On ollut pari ihmistä jotka ovat ilmoittaneet internet toimi Appliance. Ja jotkut heistä ovat vain olettaa että ei ole tarkoitus olla internet Appliance. Mutta kyllä, siellä on tarkoitus olla internet. Minä sanon sen nyt, mutta se ei tarkoita mitään. Jos internet ei toimi, tämä on mitä sinulla on tapana tarvitset ajaa korjata sen. Jos sinulla on internet kysymyksiä, älä muistaa se, vain lähettää sen Keskustele, ja me sanomme, ajelu että. Mutta internet pitäisi toimia. Joten ainoa asia - joo, ei mitään muuten on todella merkitystä. Mutta halusin vain huomauttaa, että - nähdä tässä oikeassa alakulmassa. Joten jokaisen laitteet olisi on IP-osoite. Ja myöhemmin lukukauden, tämä IP osoite tulee enemmän merkityksellisiä olet työskennellyt web p-set, koska voit käyttää sivuilla olet työskennellyt teidän paikalliset Chrome käyttämällä tätä osoitetta. Mutta mitä haluan käyttää IP-osoitetta varten - ja sinun ei tarvitse tehdä tätä, olen haluavat vain huomauttaa asiasta - on täällä. Joten tämä on pääteikkunassa Mac, tämä ei ole Laite ollenkaan. Ja voit etsiä mitä Tämä komento tekee. Mutta aion SSH suoraan minun Appliance. En tiedä mikä IP on. JOSEPH: 168 - 168.224.1.0. ROB: Joten kun olen tehnyt tämän, kirjaudu sisään Nyt, periaatteessa, tämä on sama kuin pääteikkunaan sisällä Appliance. Joten olen aika paljon koskaan todella toiminut sisällä itse laitteesta. Olen vain aina on pyörittävä taustalla minimoidaan ja SSHed siihen. Ongelma tässä on se, et aio pystyä käyttämään gedit helposti suoraan tästä. Mutta jos haluat olla todellinen jäähtyä hakkeri, sinun pitäisi tottua komentorivin tekstieditori muutenkin. Joten Vim ja Emacs ja Nano, kaikki nämä ovat erilaisia ​​vaihtoehtoja. Nano on yleensä helpoin. Ja mielestäni se ei ole syntaksin korostus. Voi ei, se täysin ei. Joten voit käyttää Nano, koska että yksi on melko helppoa. Näet kaikki nämä komennot alareunassa. Tämä pieni porkkana symboli. Jos et ole nähnyt sitä ennen, sinun luultavasti nähdä se paljon nyt. Se yleensä tarkoittaa tarkastusta porkkana, kuten alhaalta vasemmalta näppäimistön ohjausmerkki. Joten tässä se kertoo minut tänne - Voi, se on ei katkaista, jos en zoomata sisään Joten Ohjaus, X on, miten Aion poistua. Ja se sanoo voin lyödä Y Kyllä, säästö, N: o Niin, että Nano. Vim ja Emacs yleensä hieman monimutkainen ja ylivoimainen. Mutta voit saada tottunut siihen, ja sitten tulet rakastamaan sitä. Joten se siitä. JOSEPH: Ei tarvitse tehdä sitä. ROB: Joo. Voit vapaasti käyttää gedit varten Loput lukukauden. Joten mitään laitetta liittyviin kysymyksiin? Vai onko sinulla mitään ajatuksia mitä muuta on puhuttu noin laitetta? Kyllä. SPEAKER 1: Kun SSHed omalle asia, oli salasana Crimson? ROB: Joo. Salasanan aika paljon kaikkea vuonna Appliance on menossa olla Crimson. SPEAKER 2: Asenna kuin oikea IDE laitteeseen, se toimii? ROB: Kuvittelen Eclipse ei ole Fedora-versio, jolloin, kyllä, voit tehdä sen. Se ei todennäköisesti ole todella sen arvoista. Kaiutin 2: OK. Joten se on luultavasti helpompaa, jos halusin käyttää Eclipse, vain käyttää natiivi ja sitten ladata - ROB: Voi, että on myös luultavasti helpompaa. Mutta voit saada sen toimimaan sisällä Appliance. JOSEPH: Ja kamera, kysymys oli, voit asentaa toisen IDE sisällä Appliance? ROB: Eclipse on esimerkki IDE. Muita Appliance kysymyksiä? Selvä. Joten me siirrymme nyt komentoriviltä käyttöliittymä liittyviä asioita, joten CLI. Ja vielä, olen juuri menossa töihin tässä, koska se on identtinen työskentelevät pääteikkunaan sisällä Appliance. Miten se fontti näköinen? Onko se tarpeeksi iso? Selvä. Niin on olemassa paljon komentoja, sinun pitäisi saada melko käytetään koko lukukauden. Iso two navigointiin ovat ls, lista tiedostot tähän hakemistoon, ja cd, niin siirtyä hakemistoon. Joten en voi vaihtaa työpöydän ja sitten hyvin yleinen malli on cd hakemisto ja heti ls Mitä hakemistosta. Ihmiset myös joskus eivät ymmärrä että Tab valmistumisaika on asia. Joten kuten cd, vh, ja sitten osuin Tab. En juuri koskaan kirjoittamiseen koko juttu. Ja sitten jos pidän lyömällä Tab uudelleen, se tulee automaattisesti aloittaa listalle minulle. Joten voin cd vhosts, paikallinen isäntä. Ja juuri menossa - jos et ole kuullut termin ennen, hakemisto on vain yksi sana kansion. Joten nyt jos näet - katsotaanpa tuo että huipulle. Joten nyt jos näet suluissa, voit näen pikku tilde, slash, vhost, slash, paikallinen isäntä. Niin tilde, joka viittaa kotiini hakemistoon. Se on hakemistossa olet vuonna, kun SSH sisään Se on hakemisto olet, kun avaat päätteen. Se on silloin, kun alkaa. Ja niin olen sisällä minun kotihakemiston, ja olen sisällä vhost hakemiston sisällä minun kotihakemiston. Ja sitten olen sisällä paikallisia isäntä hakemiston sisällä että. Joten jotkut muita hyödyllisiä asioita cd - tai hyvin yleisesti, joten piste aina viittaa nykyiseen hakemistoon. Cd, piste on melko arvoton komennon. Mutta se on muuttumassa hakemistossa. Enemmän hyötyä yksi kannalta CD on piste, piste, joka on vain mennä ylös yhden hakemiston. Ja huomaa, että nämä - Haluan sanoa aliaksia, mutta nämä symboleja, piste, ja piste, piste, nämä työt melko paljon mitään komentoa olet aiotaan ajatellut käynnissä. Niin kuin cd on luultavasti missä olet käyttävät eniten, mutta nämä eivät ole asioita, jotka vain cd ymmärtää. Se on aika paljon jotain koko komentoriviltä ymmärtää. Paljon ohjelmia ymmärtää dot ja piste, piste. Joten muita hyödyllisiä niistä - cd, viiva. Niin, että aikoo tuoda minut hakemistojen että olin tuumaa Joten joskus teen jotain, Voi, olen työskennellyt täällä. Ja näen jokin virhe jotain, ja Menen tutkimaan sen siirtymällä joitakin satunnaisia ​​hakemistoon jonnekin. Ja en tiedä, jos se will haluan sinne. Se. Niin sitten teen mitä haluan tähän hakemistoon. Blaa, blaa, blaa, blaa, blaa. Ja olin kuin, okei, haluan mennä takaisin sinne missä olin. cd, viiva, ja se tuo minulle takaisin. Joten aion heittää paljon Näiden sinua tänään. En odota sinun muistaa ne kaikki. Se on tavallaan vain tietää että ne ovat olemassa. Ja sitten myöhemmin, kun et pidä, hmm, haluan mennä takaisin hakemiston, että olin juuri, oh, odota, jotain, joka on olemassa. Sinun ei tarvitse vain kirjoittaa koko hakemistosta uudelleen. JOSEPH: Ja lopulta voit vain käyttää niitä uudestaan ​​ja uudestaan, ja siitä tulee lihasmuistia. ROB: Joo. Joten miten aiemmin sanoin, että tilde on kotihakemistosi. Joten voin cd, tilde. Mutta en edes tarvitse tehdä, että jos minä vain - Menen takaisin hakemistoon, jolloin se ei ole turhaa esimerkki. Mutta jos en vain cd, joka on myös sama kuin, mene minun kotihakemistoon. En Command, K. JOSEPH: Voit myös kirjoittaa selkeitä, sana, ja se pitäisi poistaa se. ROB: Ja mielestäni myös valvoa, L myös tekee sen. Niin monin eri tavoin. Mielestäni on olemassa joitakin eroja, joissa selkeä ja valvonta, L tulee vain todella työntää sen ylä-ja Voin silti vierittää takaisin. Komento, K kirjaimellisesti tuhoaa kaiken, ja sinä ei voi vierittää takaisin ylös. Ainakin, se on miten se toimii iTerm2. En tiedä, miten muut asiat - oh. Kanssa SSHing, joten jos olet Windows, olet menossa tarvitse ladata PuTTY jotta SSH koska Windows ei on kuin sisäänrakennettu SSH työkalu. Alkaen Macit, voit vain SSH suoraan alkaen terminaali-ikkuna. OK. Kysymyksiä? LS, joten jotain tottua useimmat näistä komennoista on - No, minä vain tehdä yksi. Ls, ajatusviiva, l. Joten viiva, l on mitä aiomme soittaa lipun ls. Ja paljon näitä komentoja on hännät että voit siirtää niitä. Joten tässä tapauksessa, ajatusviiva, l on lippu joka kertoo se antaa minulle täyden kaikki tiedot näistä tiedostoista. Näemme tässä, että kassa oli muutettu 30. heinäkuuta kello 12:54. Lataukset on muokattu 6. syyskuuta. Nämä ovat nykyisen koon ja tavua näistä hakemistoista. Sinun ei tarvitse ymmärtää kaikki tämä. Tätä kamaa vasemmalla, nämä drwx n, että tulee paljon asiaa myöhemmin, kun täytyy käsitellä - että on tekemistä, jolla on käyttöoikeudet tarkastella näitä tiedostoja. Joten jos et ole ainoa käyttäjä tässä tietokoneessa, sinun pitäisi pystyä sanoa, OK, minun pitäisi olla vain yksi saa katsoa tätä tiedostoa tai olen aio sallia kaikille tarkastella tämän tiedoston. Joten joku muu minun tietokone katsoa tämän tiedoston. En edes tiedä, mitä tämä - Mitä tämä tekee? JOSEPH: En ole aivan varma, oikeastaan. ROB: Ei aavistustakaan. JOSEPH: Mutta jos et tiedä, on hyödyllinen komento, jota voit käyttää kertoa teille, mitä antovälineet. Ja jos kirjoitat mies ennen komennon - joten M--N. ROB: Man. Joten mies on toinen joka on erittäin hyödyllinen. Ja mies, ls. Joten mies sivuja, ne ovat molemmat komentoja että aiot käyttää komentoriville, ja heillä on myös toiminnot, jotka ovat merkityksellisiä C. Voit siis ihminen - ja ohitin 3. Mutta ihminen 3 printf aikoo tuoda ylös C-versio printf. Mutta jos en vain mies printf, tämä on menossa esiin komennon printf että tapahtuu komentoriviltä. Joten mies, ls. Man-sivuja voi olla melko ylivoimainen. Täällä, vaikka näet tämän listalle Kaikkien näiden lippujen että ls ymmärtää. Joten jos menemme viiva, L, ja - Olen juuri menossa heittää tämän sinulle. Mutta jotta etsiä, haluatko ensin osuma kysymys merkki tai slash-painiketta. Niin slash. Ja sitten voin etsiä sillä mitä haluan. Joten aion leikata Dash, l. Ja siinä se oli. Käytä siis pitkiä luettelumuotoa. Se ei auta minua selvittää, mitä että tietyn sarakkeen tarkoitti, mutta minä olettaa jossain täällä se selittää, että. Joten käytä mies sivuilta mitään komentoa että et heti ymmärrä. Olen melko varma, voit jopa mies, mies. Rajapinta verkossa lähdeteokset. Oh, yksi viimeisin joka on ehkä hieman Merkitystä on ls, ajatusviiva,. Joten huomaa, jos en vain ls, Saan nämä viisi tiedostoa. Jos teen ls, viiva, minä saada paljon enemmän tiedostoja. Joten asia yhteistä kaikkien näiden uusia tiedostoja on piste etukäteen. Joten yleissopimus on, että tiedosto, joka alkaa piste on piilotettu. Joten et halua nähdä, että tiedoston, voit eivät halua olla se sotku hakemistoon listalle. Vasta kun olet nimenomaisesti pyytää, kunnossa, ls, ajatusviiva,, näytä minulle. Sanoista kaikki tiedostot, lukien kätketyilläni. Joten jotkut muut komennot. Voi, kysymyksiä siinä vaiheessa? Kyllä. SPEAKER 3: Kun teet ls, , mikä on piste, piste? ROB: Oh. Joten tämä on mitä puhuin. Se on sama asia, jossa Voin kuten CD, piste, piste. Joten teknisesti, piste ja piste, piste ovat tiedostoja, jotka ovat olemassa jokaisessa hakemistoon, jossa piste-tiedosto viittaa nykyiseen hakemistoon. Jos siis cd, piste, olen juuri menossa pysyä hakemistoon. Ja piste, piste viittaa aina edelliseen hakemistoon yhtä tasoa ylempänä. Joten jos menen lokit ja ls, ajatusviiva, ai, Nähdään piste, piste. cd piste, piste pääsenkin edelliseen hakemistoon. Joo. OK. Joten toinen aika tärkeä komento on rm. Niin, että mitä aiomme käyttää poistaa. Ja haluaisin todella tehdä uuden komento ensin. Niin mkdir. Mkdir on, miten voit luoda hakemistoja. Ja minä luomme väliaikaiseen hakemistoon ja mene tuohon väliaikaiseen hakemistoon. Ja odotetusti, se on tyhjä. Mutta jos minä ls, ajatusviiva,, minulla on vielä piste ja piste, piste, koska piste viittaa nykyinen hakemisto. Ja piste, piste viittaa edelliseen hakemistoon. Ja ne on aina olemassa riippumatta hakemiston olet tuumaa Ja tämä on täysin tarpeeton komennon, mutta kosketus. Olen vain käyttää sitä, koska se on helppo tapa luoda tiedostoja. Joten kosketa, kosketa b, koskettamalla c on vain aikoo luoda kolme tiedostoa kutsutaan, b ja c, jotka ovat täysin tyhjä. Joten kohta minua luomaan kuin Ensimmäinen paikka on juuri niin, että rm on miten voimme poistaa ne. Joten rm,. Se tulee kysyä minulta, poista tavallinen tyhjä tiedosto? Ja sitten minä sanon kyllä. Joten jos tiedän varmasti, että haluan poistaa tiedoston ilman on pyydettäessä poistaa tavallinen tyhjä tiedosto?, sitten rm, ajatusviiva, f tulee olemaan lippu, joka sanoo, pakottaa poistaa eikä jopa kehotukset minulle, oi, oletko varma, että haluat poistaa tiedoston? Kyllä, olen varma. Joten rm, ajatusviiva, FB vain tee se kysymättä. Joten tehdä joitakin enemmän hakemistoja. mkdir, TMP2, cd, TMP2, kosketa, kosketa b. OK. Joten nyt haluan poistaa TMP2 kuin hakemistoon. Joten rm TMP2. Et voi poistaa TMP2, se on hakemistossa. Joten kysymys on, että rm ei heti työtä hakemistoja. Se on tarkoitettu vain tiedostoja, kuten ei-hakemiston tiedostoja. Ja niin mitä voimme tehdä tässä rm, ajatusviiva, r. Joka edustaa rekursiivisesti, jotka voivat ei merkitse teille mitään vielä. Mutta kun saat rekursio, se tulee merkitä enemmän. Joten rm, viiva, r, TMP2 on menossa rekursiivisesti, menee siihen hakemistoon. Joten ajautua hakemistoon TMP2? Kyllä, mennään tuohon. Haluammeko poistaa TMP2 /? Kyllä. Haluammeko poistaa TMP2 / b? Kyllä. Nyt haluamme poistaa hakemisto TMP2? Kyllä. Ja nyt hakemistossa ja kaiken sisällä siitä on poistettu. On teknisesti komento rmdir että voit poistaa hakemistoja, mutta se toimii vain on tyhjät hakemistot muutenkin. Ja nähdä, että haluan vain do mkdir, TMP2 uudelleen. TMP2, kosketa. OK. Joten jos yritän poistaa dirtmp2, se tulee sanoa, hakemisto ei ole tyhjä. Joten olen aika paljon koskaan käytä remove dir komento joka tapauksessa, koska rm, ajatusviiva, r työskentelee tyhjät hakemistot ja ei-tyhjät hakemistot. Ja myös, jos en halua joutua käydä läpi, että koko prosessi ajautumasta hakemistoon ja poistamalla kunkin yksittäisen tiedoston, rm, ajatusviiva, rf, TMP2. Ja nyt se on mennyt. Olla varovainen noin on rm, ajatusviiva, rf. Ja se pelottaa minua edes kirjoittaa sitä, koska jos olen vahingossa paina Enter tai jotain. Joten rm, ajatusviiva, rf, tilde olisi ilman kehotukset minua, f ei kehota Minulle se poistaa automaattisesti minun koko kotihakemiston ja kaiken sen. Joten saatat ajatella, että on typerää tehdä. Ja hyvin, se on. Mutta se voi tapahtua hyvin helposti Onnettomuuden jos vaikkapa haluaisin poistaa minun slash, vhost hakemistoon. Ja vain nopeasti kirjoittamalla, Olen vahingossa tehdä tämän. Joka poistaa rekursiivisesti sekä minun kotihakemiston ja vhost hakemisto Tässä tietyssä hakemistossa, että vain sattuu ole olemassa juuri nyt. Mutta tämä voi silti poistaa minun koko kotihakemiston. Ainakin ei tarvinnut f, se olisi saanut minut ensin. Ja olisin kuten, oh, no, minä eivät halua tehdä sitä. Mutta ihmiset, slash, mukaan lukien minua on taipumus päästä tapana aina rf-Ing. Jopa tavallisten tiedostojen että voin vain rm, c, minulla on tapana vain rm, ajatusviiva, rf, c. Vain olla varovainen, kun olet rf-Ing. SPEAKER 4: Mitä C tehdä? ROB: C puhun, että C-tiedosto tämän hakemiston, että rm, c. JOSEPH: Ja enemmän vaarallisesti, jos käytät tähti, se viittaa kaiken hakemistoon. Niin mitä yleensä on tapana tehdä on minä mennä hakemistoon ja haluan poistaa kaikki tiedostot sinne. Joten rm, ajatusviiva, rf, tähti. ROB: Joo. Rm, ajatusviiva, rf, tähti. JOSEPH: Ja jos et ole varovainen mitä hakemistoon olet - En ollut temp, mutta olin vahingossa kotini hakemistoon, sitten minä poistaa kaiken kotini hakemistossa. Ja olen itse tehnyt, että ennen, ja Mielestäni olet tehnyt tätä ennen tai Jay on tehnyt sitä aiemmin. ROB: Olen vahingossa poistanut - joten unohda, että komento vähän. JOSEPH: Ei hauskaa. ROB: Joten slash bin hakemisto on nippu binääritiedostot jos siellä tulee tunnettava välineisiin, kuten kalahtaa. No, clang ja periaatteessa kaikki nämä asioita, joita olen käynnissä komennon line kuuluvat tähän slash bin hakemistoon. JOSEPH: Like ls on täällä. ROB: Niin piste, slash, ls olisi listata tähän hakemistoon. JOSEPH: Rm on myös tähän hakemistoon. ROB: Olen vahingossa rm, rf-ed bin, joka poisti mitään komentoa voisin mahdollisesti koskaan halua. Joka sitten vain asentaa uusi Appliance tässä vaiheessa. JOSEPH: Ole siis varovainen, kun käytät tätä komentoa. Yleisö: [kuultavissa]? ROB: Kyllä. Se on myös paha tapa päästä. Jos huomaat, olen nyt - hyvin, et voi huomata, mutta minun zoom-in ehkä voi. Joten olen nyt root @ laitetta. Joten jharvard on käyttäjän haluamme voit aina käyttää. Root on käyttäjä, jolla on lupa tehdä yhtään mitään. Joten huomaa, kun olen jharvard, jos yritän cd - mitä hakemiston, joka? Oh, juuri on hyvä esimerkki. Joten cd, root. Lupa hylätty. Koska jos katsomme tämä sivusto - ja uudelleen, sinun ei tarvitse täysin ymmärrä tätä. Mutta nämä kolme viivaa sanovat jotka eivät anna mitään muuta Käyttäjä tähän hakemistoon. Ja hakemisto sattuu omistaa käyttäjän root. Niin, että olen jharvard eikä joka ei ole juuri on päästetty tähän hakemistoon, se tarkoittaa, että olen aikoo saada lupa evätään, kun yrittää cd siihen. Joten kun olen root, minulla on lupa tee yhtään mitään, mukaan lukien poistaa tärkeistä tiedostoista laitteeseen ja tuhota koko juttu. Joten se on huono tapa päästä vain vaeltelee ympäri käyttöjärjestelmän pääkäyttäjänä. Teen sen silti. Kysymyksiä? Ja minä poistua root, pysyä jharvard. OK. Osuvampia komentoja. Niin menee takaisin meidän temp, mv komento tarkoittaa liikkua. Voit liikkua. Nyt haluamme kutsua sitä b, niin nyt sitä kutsutaan b. Tai ehkä haluamme siirtää b yhden hakemiston. Joten nyt tämän hakemiston tyhjä. Menen takaisin kotiini hakemistoon, ja näemme, että b on täällä, koska kotihakemiston oli yhden hakemiston ylös hakemiston, b oli ollut tuumaa Mukana on myös cp. Joten cp on kopioida Super osio, dot, tekstiä. Voin soittaa se s, piste, tekstiä. Nyt meillä on sekä Super-osiossa dot, tekstiä, ja s, piste, tekstiä. Tämä toimii myös hakemistoja. I rf-ed yhden tiedoston. Joten cp - No, ensin yritetään cp, TMP, TMP2. Joten suljettaessa tmp. Niin samankaltaisia ​​rm, oletustoiminnan on toimi hakemistoja. Ja vielä, samanlainen RM, oletus käyttäytyminen - No, saada sen toimimaan hakemistoja on, viiva-r pois. Joten kopioi rekursiivisesti temp hakemiston TMP2. Ja nyt meillä on sekä TMP ja TMP2, ja että ei ole niin hyödyllistä, sillä tmp oli tyhjä ylipäätään. TMP2. Nyt kopioi TMP osaksi TMP2. Ja me näemme, että TMP2 on myös tiedosto , koska hakemisto ja kaiken sisällä kyseisen hakemiston kopioitu. Ja se voi olla hieman apua jos esimerkiksi olet työskennellyt ongelmakäytöstä asettaa yhden - tai oikeastaan ​​myöhemmin ongelma sarjat ovat sitäkin tärkeämpää, koska siellä on koko joukko tiedostoja ja asioita. Mutta haluat vain, kohta kohdalta Toinen, et pidä, okei, olen aikoo yrittää jotain erilaista. Haluan vain kopioida minun koko pset1 hakemiston pset1 varmuuskopio niin, että jos Olen päätyä ruuvaamalla asioita, voin mennä takaisin minun varmuuskopio hakemistoon. On toimivia keinoja versiointi varmuuskopioiden koodia, mutta tämä on aina nopea tapa vain tehdä että sinulla on kopio jostain että olet aikeissa muuttaa. Joten kaiku on myös kertaluonteinen komento Tällainen sillily vain tulosta komentoriviltä mitä halusit yhtyä. Niin kaiku hi. Me vain tulostaa hi. Echo hello world. Me tulostaa hello world. Joka tulee käyttöön, kun Aloita yhdistämällä komentoja. Ja vielä, älä odota sinun täysin ymmärtää tätä vielä, mutta se on jotain nähdä. Ja sitten jos olet Googling esimerkkejä tai huomaat haluat tehdä jotain, se voi olla hyödyllistä. Joten, kuten esimerkiksi niin ls, ajatusviiva, l. Joten tässä näen tuotos LS, ajatusviiva, l. Ja minä sanon, OK, haluan tallentaa, että tiedostoon. Kaikki tämän tuotoksen tänne, haluan laittaa erilliseen tiedostoon. Joten tämä pieni suurempi kuin-merkki on mitä aiomme soittaa. Olemme suuntaamalla tuloste tiedostoon. Kutsukaamme tiedosto blah, koska se on mitä minulla on tapana aina soittaa sitä. Joten nyt näemme meillä tiedostoon blah täällä. Ja jos avaan sen, nähdään se täsmälleen lähdön komento että minä vain juoksin. Ja samoin voit - jos tämä oli tuloste tiedostoon, tämä on saada palautetta tiedostosta. Mikä on komento, joka I - JOSEPH: Mielestäni voit käyttää vähemmän tai enemmän, luultavasti. ROB: Mutta entä vain vähemmän blah? En tiedä. Jos olet tullut tähän skenaarioon, kuten siellä psets, että se on hyödyllistä. JOSEPH: Voit putki sen kaiku. Putki tiedosto kaiun nähdä sen. ROB: Se on putki. JOSEPH: Anteeksi. ROB: Selvä. Joten tämä on tuloste tiedostoon. Tämä on saada tekstin tiedosto ja se luovuttaa ohjelmaa. Ja voit myös nähdä tämä kaveri. Joten tämä on tavallaan tekee molempia yhtä aikaa. Ja todella, minä esitellä kaksi uutta komennot vain hyödyntää sitä. Historia on kätevä komento, joka on vain menossa tulostaa listaus mitä olen koskaan ajaa komentoriviltä. Joten tässä näemme kaiken, minulla on ollut käynnissä koko tämän ajan. Paljon ls: n. Ja toinen hyödyllinen komento on grep että sen tarkoituksena on etsiä yli tekstiksi etsivät malleja, hyvin, etsii mitä haluavat sitä etsimään. Ja niin kätevä käyttää tässä vaikkapa Haluamme tarttua historiaa. Ja haluan etsiä komentoja jossa olen - mitä hyödyllinen etsiä? JOSEPH: [kuultavissa]? ROB: Tai sanotaan nyt etsiä kaikki koskettaa, jostain syystä. Joten tämä on mitä se näyttää. Ja sinun ei tarvitse kokonaan Ymmärrän sen. Mutta ajatus on täällä, historia antaa saman tuotoksen se teki tästä jos se tulostaa koko historia kaikesta mitä olen koskaan ajaa. Olemme sitten ohimennen, että - joten sen sijaan tulostaa sen näytön, haluamme välittää että komennon grep joka etsii kaikki esiintymät sanan touch. Ja niin käyttämällä tätä yhdistelmää työkaluja historiaa ja grep, näen, OK, tässä on kaikki komennot koskaan näkemäni juosta, ja tässä on hieman yhteinen. Olemme alareunassa. Ja se on myös antaa minulle komento Minä vain juoksin, että oli sana kosketa sitä. Mutta putki on melko hyödyllinen asia yhdistämistä useita ohjelmia. Ja oikeastaan ​​se on oikotie laverrella minulle lähtö historia tiedostoon blaa, ja haluan grep käyttää tiedostoa blah sillä mitä haluan etsiä yli. Joten putki on vain oikotie näiden kahden komentoja. Kyllä. SPEAKER 4: [kuultavissa]? ROB: Kyllä. Mikä on - Oh. Kokeillaan. Joten kissa, koira, kala. Joten haluan grep. Dash, r, taas tulee olemaan rekursiivisesti, joten haluan laskeutua alas kaikki hakemistot. Haluan rekursiivisesti grep kaikille - ja haluaisin tilapäisesti saada tämä pois tieltä. Ignore me. OK. Joten haluan tilapäisesti grep varten kaikki esiintymät sanan kalaa. Ja niin tässä mitä olen tekemässä on grepping rekursiivisesti sanan kala. Ja tähti tarkoittaa kaikkien näiden tiedostoja tähän hakemistoon. Ja niin se antoi minulle Käyttö estetty, koska se ei saa lukea, että tietyn tiedoston. Mutta se löytyy kalaa tiedoston, testi. Voisin myös sanoa, erityisesti, olen vain haluavat näyttää tiedoston blaa, vuonna jolloin se ei löydä mitään. En vain halua katsoa tiedoston, testi. Se löytää kaloja. Se on melko hyödyllinen komento tietää yleensä. On joitakin vaihtoehtoja grep että pitäisi olla enemmän ohjelmoija ystävällinen, mutta minulla on tapana vielä turvautua grep. Kysymyksiä? OK. Onko olemassa muita komentoja? Oh. Vain kertaluonteinen joka olen aina löytää olla hauskaa laske. Joten huomaa kun olen tämän ihanan koko näytön tilassa, minulla ei ole kuin alkuun työkalurivi tai mitään. So Cal vain antaa minulle mukava pieni kalenteri, joka on oikeassa nyt katkaista, oletan. Mutta kiva pikku komento. JOSEPH: On [kuultavissa]. Muita komentoja, että saatat olla nähnyt kuuluvat kalahtaa ja tehdä. Menemme niiden yli tarkemmin myöhemmin. Mutta jos olet työskennellyt PSET, sinun pitäisi olla perehtyneiden. ROB: Selvä. Kysymyksiä komentoriviltä asioita? Selvä. Joten siirtyä joissakin C-liittyviä juttuja. Muuttujia matematiikka. OK. Joten aivan kuten meillä oli matematiikka Scratch, voit myös käyttää matematiikkaa C. Ennen kuin pääsemme, että kokonaan, niin muuttujia. Muista, että aina kun julistaa muuttuja kuten int x tai float y, sinun on annettava se tyyppi ennen muuttujan nimi. Joten tyypit olemme nähneet tähän mennessä ovat int, float, double, pitkään pitkään, jonka minä eivät oikeastaan ​​tiedä, jos olemme Nähdään, että tähän asti. On joitakin muita vaatimuksia. Olemme ks. merkkiä. On lyhyt, joka on kuin se on vastakohta pitkä pitkä, jos se on pienempi kuin kokonaisluku. Olemme myös nähneet merkkijono. Joten mikä on erikoista merkkijono? Miksi haluaisin sanoa, että se ei aivan kuten int? SPEAKER 4: Se ei todellisuudessa ole olemassa. ROB: Joo. Joten ainoa syy meillä on merkkijono johtuu siitä, kun teet hash, kuuluu cs50.h. Ja näemme esimerkkejä tästä myöhemmin - Voi, että ei käsittele kovin hyvin - jossa cs50.h tekee jotain tapaan tyyppi def, char tähden, merkkijono. Ja niin se on sanoa, että emme edes tietää, mitä merkkiä tähti on vielä. Mutta tämä sanoo haluamme merkkijono. Jokainen paikka olet käyttänyt merkkijono, voit olisi voitu käyttää char tähden, joka itse asiassa on tyyppi, joka olemassa C-kielellä. Mutta me saamme sen. Niin, ja se menee takaisin. Siisti. Niin sama juttu bool jossa tosi ja epätosi. Että ei oikeastaan ​​sisäänrakennettu tyyppi C. Sen sijaan se on vain, että tämä on arvo nolla? Sitten me vain harkita epätodeksi. Onko tällä arvoa - No, ei tämä ole arvo, joka ei ole nolla? Sitten harkitsemme sen olevan totta. Joten yksi on totta, kaksi on totta, mitään nonzero on totta. Joten ne ovat ne. Kysymyksiä julistaa muuttujia ja muuttujatyyppejä ja kaikki? Joo. SPEAKER 4: Pitkillä pitkä, kirja, se sanoi sen piti olla pitkään pitkään int. Mutta vain pitkään pitkään toimii? ROB: Joten nämä tyyppi määritteet. Joten int x. Joten voimme myös sanoa unsigned int x. Voimme sanoa lyhyt int x. Voimme sanoa pitkään pitkään int x. Mutta aika paljon mitään näistä asioista I juuri sanoi, unsigned int, short int, pitkä pitkä int, voit päästä eroon int ja se vain olettaa että tarkoitit int. Joten allekirjoittamaton x, mikä tarkoittaa vain sitä - osaat normaalisti int, voit sanoa x on yhtä kuin negatiivinen 3? Kanssa unsigned int, et voi. JOSEPH: Ja taas, kameralle, kysymys oli, mitä eroa välillä pitkään pitkään int ja vain pitkä pitkä? ROB: Joo. Joten en juuri koskaan kirjoittaa pitkä pitkä int. Aion kirjoittaa pitkään pitkään. JOSEPH: Kaikki kysymykset? ROB: OK. Niin typerä pikku muistutus siitä, että miten me julistamme muuttujan ja alustaa muuttuja ja julistaa toisen muuttujan ja alustaa se kaikki yhdellä kertaa. Joten ilmoitus muuttujan ja alustus muuttuja ei ole to mutta voi olla samalla linjalla. Joten meillä on Vakiomatematiikkakirjasto toimijoiden että olet tottunut - plus, miinus, jakaa, kertaa. Mukana on myös modulo, jonka näemme. Ei ole ainakaan C, sisäänrakennettu tehon potenssiinkorotus Järjestelmäkohdistin operaattori. No, on caret operaattori, mutta se ei ole valtaa. JOSEPH: Mutta se ei ole potenssiinkorotusta, Kyllä. ROB: Älä käytä caret olettaa, että se tarkoittaa kuten potenssiin tai mitä tahansa. Joten joitakin asioita pitää välitä siitä jako. Minä takaan. Joten julisti Alusta vastaus. Joten me sanomme float vastaus vastaa 1 jaettuna 10. Tulosta vastaus kahden desimaalin tarkkuudella. Ja tämä on sellainen asia, että olen olisi ihminen printf selvittää, että mitä hittoa%, piste, 2F tarkoittaa? Ja se tarkoittaa vain sitä, hyvin, välittämättä 0.2. Ja%, f on mitä käytämme tulostaa kellua. 0.2 sanoo, tekstiä, että float kahden desimaalin tarkkuudella. Joten tämä ohjelma on bugi, ja saatat olen nähnyt tämän ennenkin joissakin ennen CS kurssi. Mutta mikä on että vika? Kaiutin 5: Zero. ROB: Joo. Joten kun sanomme, vastaus on yhtä kuin 1 jaettuna 10, haluamme vastaus on 0,1. Mutta 1 jaettuna 10, 1 on kokonaisluku, 10 on kokonaisluku. Ja niin kun me teemme kokonaisluku jaettuna kokonaisluku, aiomme saada takaisin kokonaisluku. Joten 1 jaettuna 10 on 0,1. Koska se tarvitsee antaa meille kokonaisluku, se on juuri menossa heittää pois, että desimaalin tarkkuudella ja sanoa, että Vastaus on 0. Ja niin kun me painamme vastata täällä, se tulee tulostaa 0.00. JOSEPH: Ja aivan kuten huomata, se todella heittää pois, mitä on sen jälkeen desimaalin tarkkuudella. Joten jos sen sijaan ollut 6 jaettuna 10, saatat ajatella, että se antaisi sinulle 0,6 ja niin voisitte pyöristää ylöspäin 1. Mutta todellisuudessa, mitä tapahtuu, kun se tyyppi tehtävät on, että se putoaa, mikä on desimaalipilkun jälkeen. Joten 0,6 ei tullut 0. ROB: Joo. Ja me sanomme katkaista siitä. Joten jos heität int, desimaalin katkaistaan. Joten korjaus, että - on olemassa oikeastaan ​​kaksi. Ja aion tehdä sitä toista, koska tämä on paljon helpompaa korjata. Joten yksi korjaus on käyttää kellukkeet jako. Ja todella, sinun tarvitsee vain tehdä yksi heistä float. Mutta se on hieman selkeämpi vain jotta molemmat kelluu. Joten 1,0 jaettuna 10.0 on jakamalla kaksi kelluu. Joten vastaus on lopulta float, ja niin tulet oikein tulosta 0,10 täällä. Jotain, joka ei toimi niin hyvin siitä on hyvin, varmasti, se oli helppoa tarpeeksi muuntaa 1 float tekemällä 1.0. Mutta mitä jos sen sijaan meillä oli kahden kokonaisluvun kuten int x on yhtä kuin 1 ja int y vastaa 10, ja sitten halusimme to do x jaettuna y? Joten se ei ole helppoa vain tehdä x.0 tai jotain. Joten korjauksen, joka on valu. Joten valu on tapa C muuntaa yhdestä muuttujan tyypistä toiseen. Joten tässä, 1 on kokonaisluku. Ja laittamalla tämän juoksun edessä se, olemme valu 1 kellua. Ja niin tämä muuntaa 1 1.0. Ja tämä muuntaa 10 10.0. Ja sitten asiat käyttäytyvät samalla tavalla edellisen version me vain näytti missä, kuten odotettua, saamme 0,10 ja se tulee tulostaa sen. Ja voimme tehdä tämän kanssa muuttujia, liian. Voimme siis sanoa, float x jaettuna float y. JOSEPH: Kaikki kysymykset? ROB: Eli aivan kuten säännöllinen matematiikkaa, meillä on operaattori edelle. Joten matematiikka luokka, olet todennäköisesti kutsua sitä järjestystä toimintaa. Täällä virallinen termi on operaattori edelle. Mutta operaattori edelle, tai suurin operaattorit, on kuten odottaa. Joten aivan kuten matematiikka, 2 kertaa 10 on aiotaan ryhmitellä tarkemmin kuin Tämän 10 jaettuna 2 ja sitten 2. Järjestys toiminnan, se tekee 2 kertaa 10, 10 jaettuna 2 ja sitten se tulee tehdä 20 plus 5 plus 2. Joten se on odotetusti, ja voit käyttää suluissa ryhmään ilmaisuja. Et voi käyttää hakasulkeissa ryhmään ilmaisuja. Joo? SPEAKER 5: Voisitko itse vain mennä takaisin yhden sekunnin? Voitko heittää int on merkkijono? ROB: Joten C, voit heittää mitään haluat mitä haluat. Tämä ei tarkoita että se on hyvä asia tehdä. Joten kun heität int on merkkijono, joka tarkoittaa - ja saamme tähän paljon perusteellisemmin - JOSEPH: Paljon myöhemmin. ROB: En halua sanoa paljon myöhemmin, joten yritin muuttaa lauseen. Pääsemme sitä enemmän perusteellisesti myöhemmin, jos todella, kun olet merkkijonomuuttujaksi - joten merkkijono voi olla mielivaltaisesti pitkä, eikö? Ja olemme todenneet, että int on neljä tavua ja pitkään pitkään on kahdeksan tavua ja float on neljä tavua. Joten merkkijono, kuten int, on vain tietty määrä tavuja siihen. Ja se tulee olemaan neljä tavua. Mutta merkkijono voi olla melko mielivaltaisesti pitkä, eikö? Joten hello world jo, jos se on 10 merkkiä tai mitä tahansa, joka on jo olemaan yli 4 tavua En voi mahtua merkkijono. Ja niin miten jousille todella toimivat on se, että ne ovat silloin muistissa, että jono häntä pidetään. Ja niin tänne, kun sanon merkkijono x vastaa hello world, sisällä x on vain sanomalla, oh, hello world tallennetaan juuri tässä nimenomaisessa paikassa muistiin. Joten jos yritämme heittää kokonaisluvun merkkijono, sitten yritämme tulkita joitakin satunnaisia ​​osa muistia jonona. Ja että lähes aina rikkoo asioita. JOSEPH: Mutta jos se hämmentää te, me voidaan kattaa se syvällisemmin myöhemmin. ROB: Joo. Tämä on, jos olet menossa päästä viitteitä. Ja se on merkittävä kimpale kahden viikon kurssin. SPEAKER 6: Toimiiko se esineet muilla kielillä tai ei oikeastaan? ROB: Eli muilla kielillä, esineet olisivat edustettuina käyttäen osoittimia. Se ei ole sama asia, vaikka. Mitään ajatuksia? JOSEPH: Ei. Ei ajatuksia. ROB: OK. JOSEPH: Seuraava. ROB: Menkää kanssa. Selvä. Niin modulo. Aivan kuten meillä on plus, miinus, jakaa ja lisääntykää. Joten modulo on yksi saatat ei ole ennen nähnyt. Ja se vain kertoo, antaa minulle loput. Joten 55% 10. Loput tekee 55 jaettuna 10 olisi 5. Joten 55% 10 on 5. Ja 3% 5 olisi 3. 8% 8 on 0. 16% 15 on 1. JOSEPH: Yksi asia huomata tämän, Myös se ei välttämättä toimi odotetulla tavalla jos käytät negatiivinen luku. Niin negatiivinen 5% 4, jotkut ihmiset Voisi ajatella, että on - mitä ajattelet negatiivisia 5% 4 olisi? Kaiutin 5: One. JOSEPH: Joten jotkut ihmiset sanovat yhtä, jotkut sanovat kielteistä. Mutta mitä - ROB: En edes ole sanoi yksi niistä. JOSEPH: Kaksi, sorry. Jotkut ihmiset sanovat - ROB: Kolme. JOSEPH: Kolme? ROB: Negatiivinen - mikä oli - kielteinen viisi - JOSEPH: Kolme, kolme, kolme. Anteeksi. Koska modulo, yleensä, kun olet nähnyt sitä muualla, se yleensä tarkoittaa palata positiivinen luku, eikö? ROB: Joten kun sanomme matematiikasta,% 10: n, he yleensä haluavat antaa sinulle - jos me mod 10, niin odotamme saat väliltä 0 ja 9. Täällä, että ei pidä paikkaansa, että olet saavat negatiivisia lukuja palasi. JOSEPH: niin negatiivinen 5% 4 olisi negatiivinen 1. ROB: Mutta se on harvinaista, että olet mod-ta negatiiviset luvut aluksi. Ohita tämä. JOSEPH: Joo. ROB: Meh. OK. Niin yksi asia huomauttaa noin kellukkeet on se vaarallinen käyttäytyminen, mutta kellukkeet eivät ole tarkkoja edustus. Niin menee takaisin tavua uudelleen, muista että int on aina neljä tavua ja float on aina neljä tavua. Joten Lucasin esimerkki on melko hyvä. Niin ajattele 1 jaettuna 3. Niin 0,3333333. Jos minulla on vain 32 bittiä, miten Olen tallentaa 0,33333 tarkalleen? Ja ehkä jostain syystä, sanot, kaikki hyvin, hyvin, haluan vain sanoa, että tässä nimenomaisessa 1011001, katsotaanpa vain sanoa, että olisi 0,333333. No, sinulla on vain rajallinen määrä nämä bittiä, joten on mahdotonta edustavat jokainen liukulukuoperaatioita arvo annetaan vain 32 bittiä. No, se on mahdotonta edusta mitään Liukulukuarvo antanut ääretön - hyvin, koska tahansa äärellinen määrä bittejä. Joten kysymys on hyvin, kun meillä oli tapana tulostaa kahden desimaalin tarkkuudella, meillä ei oikein saada vastauksen 0,10. Mutta alla huppu, se on todella varastoidaan niin lähellä kuin mahdollista 0,10 kuin bitit voivat edustaa. Onko tämä seuraavan dian? Vai ei? JOSEPH: Joo, se on niin. ROB: Blegh, blegh. JOSEPH: Joo, voit vain vedä muistiinpanoja hieman. ROB: Olen juuri menossa zoomata vuonna viimeisenä siitä. Jestas, se on [kuultavissa]. Niin että numero. Juuri tulostetaan jos me suorittaa kyseisen ohjelman. Ja huomaa, että se ei oikeastaan ​​iso juttu jos me vain huolehtimasta kuten viisikymmentäkahdeksan yli kaksi desimaalin tarkkuudella. Kuten me vain alunperin painettu 0,10, ja siksi näimme mitään vikaa. Mutta kun alamme päästä tarkka, tarkka määrä, että se on edustaa, näemme, että se ei voi täsmälleen edustavat 0,1. Ja osa ongelmaa täällä on kuin, kunnossa, että on hienoa, mutta, no, Ensimmäinen, mitä jos yritimme tehdä, Vastaus on sama kuin vastaa 0,1? Onko se aio palata totta vai tarua? Ja niin se on vaikea sanoa. Mielestäni se todella voisi palata totta. Will se ensin - En tiedä. Vastaus on, kun aloitat tekemisissä kanssa Desimaaliluvut olet aika paljon ei pitäisi käyttää tasa koska tämä epätarkkuus. Ja kaikki tiedätte, se on sadasosa desimaalin tarkkuudella, että liukuluku ei pystynyt käsitellään oikein. Ja niin tasa-arvo vain onnistu edes vaikka numero - jos olisit ollut käyttäen tarkkoja lukuja, numeroita olisi on täsmälleen sama. Se on aikana, kuten 50 laskelmat käyttäen näitä kelluvia pistearvot, virhe voi rakentaa ylös ja ylös ja ylös, ja kaikki menee pieleen. JOSEPH: Ja on ollut todella tunnetuimpia esimerkkejä, että näin tapahtuu. Kuten NASA insinöörit ovat saaneet tämän väärin, aiheuttaen raketteja räjähtää ilma, kun ne on käynnistetty. Ja paljon asioita, kuten että. Niin joo. SPEAKER 6: Kun sanot 0,3 f, se katkaista loput? Vai onko se pyöristää ylöspäin tai alaspäin? ROB: Voiko printf sen ympärille? JOSEPH: Mielestäni printf typistetyn. ROB: OK. Voimme siis samalla mennä päinvastaiseen suuntaan Täälläkö, tässä tapauksessa lähinnä se saattaa aiheuttaa 0,1 oli tämän numeron kanssa. Lähin se saattaa pystyä edustavat 0,2 on päinvastainen suuntaan, 0,199999996356 tai jotain. Jos siis meni tähän suuntaan on asioita, niin printf 0,3 f palaisi 1,99 sijaan 2,00. JOSEPH: Ja en ole täysin varma siitä. Haluat ehkä kirjoittaa pieni, vähän ohjelmaa vain tarkistaa, että. ROB: Vaikka, mitä olemme varmoja, että jos yritit heittää, että int, ja valu int on menossa aiheuttaa sen katkaista desimaalin, jos yrität heittää 1.9999999 int, saat 1. Ja niin sinun pitäisi yleensä käyttää kierros toiminto matemaattisen kirjaston. Kysymyksiä? OK. JOSEPH: Joten siirrymme edellytyksin ja loogisia ilmaisuja. Joten olet nähnyt näitä ennen. Ja oikeastaan ​​haluan varmistaa minun Tietokoneen oikeassa muodossa täältä. Tilaa. Sorry, aiomme tarvitse käsitellä hieman kanssa sulku reunoilla. Mutta joo, te olette nähneet tämä ennen Scratch. Joten tämä täällä on lauseke jota käytetään ehdon. Joten vastaus on suurempi kuin nolla kertoa tosi tai epätosi. Ja nämä ovat todella tärkeitä, koska ne antaa meille mahdollisuuden esitellä logiikkaa meidän koodi. Niinpä esimerkiksi, tämä on ohjelma kirjoitettu Scratch, joka kysyy käyttäjältä varten kokonaisluku ja kertoo heille siitä kokonaisluku, että he antoivat sinulle oli positiivinen tai negatiivinen luku. Ja muuntaminen täällä nähdä on ensin tulostaa julkilausuman, antaa minulle kokonaisluku. Ja sitten kysyä heiltä kokonaisluku. Ja sitten käytät ehdollinen logiikka yli tästä tarkistaa onko numero oli itse asiassa suurempi kuin nolla tai ei. Joten tässä meillä on Boolen lauseke sisällä ehdollisen Jos selvitys. Onko kysyttävää? Onko kysyttävää siitä? OK. Joten siellä on enemmän kuin vain suurempi kuin, tietenkin. Voit rakentaa Boolen käyttää suurimman monenlaisia ​​asioita ajattelisi matematiikasta. Niin yli. Että pitäisi olla alle. Anteeksi. Ja välit. ROB: Jumala varjelkoon jätät sen. JOSEPH: Selvä. Joten suurempi kuin, pienempi kuin, suurempi kuin tai yhtä suuri kuin, yhtä kuin tai yhtä suuri kuin. Käytämme kaksinkertainen tasavertaisten tarkistaa tasa-arvo, koska yksittäisten vastaa keinoin tehtävän, eikö? Kyllä. Ja sitten voimme myös ei vastaa by käyttämällä huutomerkki, tasavertaisina. Ja tämä huutomerkki symboli voi myös laajennettava siten, että jos haluat Kääntele minkäänlaista Boolen lauseke, voit tehdä sen. Joten tämä on tosi vain, jos vastaus on vähemmän tai yhtä suuri kuin nolla. Kaikki kysymykset siitä? OK. Joten voit myös yhdistää nämä ilmaisuja käyttäen loogisia AND ja looginen Tai. Joten tämä on vain ja symboli, jonka pitäisi olla Shift, 7. Ja tämä on putki symboli, joka on ei pienet kirjaimet L. Se on yksi että oikeus yläpuolella Enter-näppäintä. Joten käytät kahta näistä symboloivan looginen ja looginen Or. Joten tämä toimii vain return true, jos vastaus on yksi, kaksi, kolme tai neljä. Ja tämä vain palauttaa true, jos vastaus on kuin että kummallakin puolella. Joten se ei ole yksi, kaksi, kolme tai neljä. Ja miten käyttäisit että ilmaisun - ROB: Tai nolla tai viisi. JOSEPH: Zero tai viisi. Anteeksi. Kyllä, kyllä, kyllä. OK. Ja tänne nyt samalla tavalla kuin käyttäisivät kyseistä ilmaisua, pienempi ilmaisun puolelle Jos ehdollisen lausunnossaan, voit myös käyttää sitä samalla tavalla vain asettamalla sen sisällä sulkeiden Jos julkilausuman. Joten tämä printf vain välähdä, jos vastaus on yksi, kaksi, kolme tai neljä. Kaikki kysymykset yhdistämisestä lausekkeet? Joten on toinen ehdollinen konstruktio kutsumme Jos / Else. Joten periaatteessa tämä nyt tarkoittaa, OK, jos jotain halusin tarkistaa ei ollut totta, niin mene Else ja suorittaa että muita toimia. Joten tässä tapauksessa, kysyin käyttäjältä kokonaisluku. On kokonaisluku on suurempi kuin nolla? Kyllä? No, sitten ne poimitaan positiivinen luku. Jos ei, niin sen on oltava ollut negatiivinen tai nolla. Joten otit negatiivinen luku tai tässä tapauksessa nolla. Kyllä. Tai nolla. Ja sitten meillä on myös Jos / Else, Jos ja Else. Joten tämä antaa meidän suorittaa sarjan asiat vain, jos ensimmäiset epäonnistua. Joten tässä tapauksessa, nyt teet viimeisin nostat nolla. Joten jos he eivät poimitaan myönteinen eikä negatiivinen luku, niin ne on on poimittu nolla. Niin se vain menee alas ketjun näin. Joten esimerkki siitä, miten Jos eroaa - Jos / Else eroaa vain sekvenssi Ifs. Ja tämä on yleinen kysymys, että ihmiset kysyvät on, hyvin, jos saat kuin 95 CS50, mitä tämä ohjelma kertoo sinulle? SPEAKER 5: Sinulla A. JOSEPH: Kyllä. Sinulla joka ikinen yksi niistä oikealle. Sait, sait B, sinua sai C ja D, eikö? Joten kaikki nämä valmiiksi arvioidut järjestyksessä. Joten vaikka 95 on suurempi kuin 90, se on Myös yli 80, se on myös suurempi kuin 70, ja se on Myös yli 60. Joten olet saanut kaikki nämä laadut. Ja oletan olisit vain haluavat A. Tapa korjata että on korvata joilla Else / Ifin. Joten tässä tilanteessa, se näkee, että 95 on on suurempi kuin 90, ja sitten se ei arvioida loput lausunnoista. Kaikki kysymykset siitä? Joten on toinen ehdollinen tavallaan rakenne, joka meillä on täällä joka meillä soita kytkin selvitys. Joten tämä mahdollistaa periaatteessa tarkistaa mitä arvoa numeron laitat osaksi kytkin selvitys on. Joten tässä tilanteessa, olemme kytkentä n:, ja me sanomme, oh, jos n on yksi, tulosta sitten tämä toteamus. Ja sitten tauko, mikä tarkoittaa exit pois kytkin selvitys. Jos se ei ollut yksi, niin, no, vain lopulta tarkistaa kaikki nämä asiat. Ja niin se tarkistaa, jos se on yksi tai kaksi tai kolme, ja se tulostaa sen mukaisesti. Ja mitä tämä oletus avainsanan tänne keino on, jos he eivät anna mitään näistä, sano kelpaa. Joten sanokaamme pyydän n ja käyttäjä antaa minulle neljä. No, se vastaa mitään näistä tapauksista, niin se tulostaa mitä on oletus osassa. Kyllä, kysymys? SPEAKER 5: Voitko käyttää Boolen ilmauksia sijaan yksi, kaksi tai kolme? JOSEPH: Joten kysymys on voit käyttää Boolen yhden sijaan, kaksi ja kolme? Ja C, uskon sinua voi tehdä sitä. Mutta muilla kielillä, joita ehkä kohtaavat lopussa lukukauden kuten JavaScript, voit. No, olisit laskea ensin että arvo ja sitten käyttää sitä kytkin selvitys. Joo? ROB: Eli osa hyöty kytkin lausunnot on ajatella, jos teit tämän koska Jos / Else, niin kuin jos n = yhtä tai mitä tahansa. Else / Jos n on yhtä kuin kaksi riippumatta. Else / Jos n on yhtä kuin kolme. Joten miten ohjelma suoritettiin se olisi peräkkäin mennä alas, että lista ja katso, on n yksi? Ehei. On n kaksi? Ehei. On n kolme? Joo. Tee tämä. Ottaa huomioon, että kytkimellä lausuntoja, se on todella pystyy kokoamaan sen olevan todella nopeasti. Ja heti kun se sanoo kytkimellä, se sanoo, okei, n on kaksi, olen heti menossa hypätä missä Minun on tarkoitus aloittaa täytäntöönpanosta. En aio ensin tarkistettava, on n yksi, on n kaksi? Se voi heti alkaa tehdä mitä sen pitäisi tehdä. Ja sen vuoksi, se ei voi ottaa Boolen ehdot. Tai muuten se pitäisi tehdä peräkkäinen, kuten, okei, on n suurempi kuin nolla? Else on n suurempi kuin 10 tai jotain. JOSEPH: Tässä tapauksessa, jos käytit Jos / Else, Ifin, niin kytkin olisi ajaa noin kolme kertaa nopeammin Jos / Else, Jos. Voimme järjestää kytkin tällaisissa siten, että emme riko jokaisen tapauksista. Joten tässä tapauksessa, olen osiointi numeroita, jotka me valitsemme yhdeksi ja nämä kaksi käsitettä ole korkea numeroita ja Kolme niistä paljon. Joten tässä tapauksessa, jos n on yksi tai kaksi, se osuu asian ja sitten se kuuluvat läpi, koska ei ole taukoa. Ja se päätyy tänne. Jos siis valita yksi, se tekee printf ja sitten tauko niin, että mikään tämä toteutetaan. Ja tietenkin, jos ne tulevat kolmessa tai jotain muuta, niin se ohittaa nämä ja mennä sinne, ja se tulee suorittaa sijaan vastaava linja. Onko kysyttävää siitä? Kyllä? SPEAKER 4: Menisitkö virhe, jos oli tauko tapauksessa yksi, mutta se ei ole jotain sitä tehdä? JOSEPH: Joten kysymys on hakisitko virheen, jos sinulla on katkos Jos yksi mutta ei ole mitään tekemistä? Ja vastaus on ei. Et itse saada virheen. Joo, mm hmm. Niin tavallaan vähän muutoksia täällä, Aion laittaa printf täällä. Oho. Joten mitä tämä tulostaa, jos Laitoin yksi syötteenä? Joo. Se kertoisi teille, että se ei ottanut suuri määrä kahdesti, eikö? Koska se osuisi että ensimmäinen tapaus, Se ei saa hajota, ja se kuuluisi läpi toisessa tapauksessa. Kaikki kysymykset siitä? ROB: Oliko sinulla muita kysymyksiä? JOSEPH: OK, jäähtyä. Selvä. Joten siellä on jotain muuta kutsumme ternäärinen toimija, joka on pohjimmiltaan varajäsenen syntaksin tekemään Jos ja sitten Else. Ja sen avulla voit tehdä kaiken yhdellä rivillä. Joten tässä nimenomaisessa ohjelmassa Pyydän käyttäjän n. Ja jos n on suurempi kuin 100, kerron heitä ne poimitaan paljon. Muuta en kerro että he poimittu vähäinen määrä. Joten voimme käyttää tätä todella pitkä syntaksin, string, S, ja sitten tarkistaa, jos n on yli 100 ja liittää sen mukaisesti. Mutta voimme tehdä tästä paljon tiiviimmäksi käyttämällä tätä kolmen komponentin operaattori syntaksin joka liittyy kysymys merkki ja paksusuolen. Joten kysymysmerkki on olennaisesti kysyy kysymyksen, eikö? ROB: Ehkä zoomata tätä. JOSEPH: Kyllä. Hyvä pointti. Joten tämä on kolmen komponentin operaattori. Haluan ensin kysyä, on n yli 100? Jos se on, niin en suorita ensin osa ennen paksusuolen. Jos se ei ole, niin en suorita Toisessa osassa kaksoispisteen jälkeen. Joten, jos n on suurempi kuin 100, niin se poimii korkea ja puts että osaksi merkkijono s. Jos n on pienempi kuin 100, se poimii matala ja sitten tuo sen osaksi merkkijono s. Jotta tiivistyy tämä iso kimpale alas vain, että yksi rivi. SPEAKER 5: Onko tuo suosittu? JOSEPH: Kyllä, se on varsin suosittu asioita, jos oleellisesti haluat tehdään harjoitustyö perustuu jonkinlainen kunnossa. Ja tässä tapauksessa, yritimme määrittää arvon merkkijonon s. Se ei ole niin - Luulen En todellakaan halua muissa tapauksissa sen. Mutta se on erityisen hyödyllinen tähän tehtävään. ROB: Se on melko yleinen malli jos sinulla on muuttuja, joka aiot sanoa, jos jotain, asettaa tämä muuttuja yksi arvo, muuten, aseta tämä muuttuja toiseen arvoon. Ja se on skenaario jos käyttää kolmen komponentin. JOSEPH: Ja säästät paljon linjat, eikö? Ja se vain tekee koodin luultavasti hieman luettavampi. Kyllä, kysymys? SPEAKER 6: For ternäärinen, voisitko mennä, string s tasavertaisten s, kysymysmerkki? Ja sitten voisi olla vaikkapa viisi eri vaihtoehtoa. Ja riippuen siitä, mitä määrä n oli, valitsisit yksi niistä? JOSEPH: Joten kysymys on, onko tavallaan syntaksin jossa voit tehdä merkkijono s vastaa n, ja sitten on enemmän kuin kaksi vaihtoehtoja sen jälkeen kysymysmerkin? Ja yksinkertainen vastaus on ei, siellä ei ole todella hyvä tapa tehdä se, ellei Haluatko pesä useita ternäärisen operaattorit sisällä toisistaan. Voisit tehdä kuten n yli 100, kysymysmerkki, ja sitten toinen ternäärinen operaattori n yli 50, kysymysmerkki, ja pesä niin. Mutta siinä tilanteessa, koodi on saada sellainen lukukelvoton ja sotkuinen, ja se voisi olla parempi vain mennä Jos / muu selvitys tässä vaiheessa. ROB: Ja myös, kuten Sivuhuomautuksena, PHP virheellisesti toteuttaa kolmen komponentin operaattori siten, että sisäkkäisiä ternaries ei edes toimi niin kuin pitäisi. JOSEPH: Joo. Joten se saa vähän sekava, varsinkin kun menet eri kielille. ROB: Se on hämmentävää riitä, että kielet ovat väärässä siitä. JOSEPH: Joten oikeastaan, vain selventää, ei jokainen tietää mitä se % S tekee täällä? Kaikki kysymykset siitä? Oletan vain kameran,% s pohjimmiltaan antaa meidän laittaa paikkamerkkinä merkkijonoa. Ja sitten lopussa, me määrittää, että muuttuja haluamme panna tähän paikka haltija on s. Joten periaatteessa vie s ja se laittaa sen tänne. Ja sitten se tulostaa, nostit korkea tai otit pieni määrä. OK. Joten silmukoita avulla voit tehdä asioita liikkein, eikö? Saatat törmännyt tämän Scratch muodossa Ikuisesti silmukoita tai toista kunnes tai Repeat erityisesti useita kertoja. Miksi tämä hyvä meille? No, C, sanokaamme meillä on tämä laulu täytäntöön Scratch että laulaa, tämä on laulu joka ei koskaan lopu. Se vain jatkuu ja jatkuu ja ikuisesti ja ikuisesti. No, et voi oikeastaan ​​tehdä ohjelman , jolla on ääretön määrä printf lausuntoja sen, eikö? Joten tässä nimenomaisessa tilanteessa yksi tapa että voisit tehdä tätä työtä ja jotta se tulostaa ikuisesti on sen sijaan käyttää while-silmukka. Joten Vaikka silmukka tulee suorittaa mitä kehossa kahden olkaimet, että kuuluu se perustuu siihen, mitä ehto on. Joten tässä esimerkissä aiemmin, jos haluamme tulostaa tätä ikuisesti, mitä ehkä me teemme? No, varmasti, eikö? Joten tällainen yhdistää ajatus Joidenkin Boolen lauseke yhdessä silmukka. Ja olemme oppineet Boolen ilmaisuja aiemmin. Joten aina kunnossa sisältä ja että vaikka pitää paikkansa, tämän silmukan tulee suorittaa ja jatkuu ja jatkuu. Ja tässä tapauksessa, jos me vain toimittamaan totta, tämä aiheuttaa äärettömän silmukka joka tulostaa kappaleen ja ja koska halusimme ennen ilman ottaa ohjelma, joka on ääretön määrä printf lausuntoja, mikä on ei ole mahdollista. Niin enemmän pakottavan, vaikka, voit käyttää tätä muuttuja ja kunnossa. Joten sanokaamme haluamme toistaa lause, täysin loopy, 10 kertaa. Niin mitä voit tehdä Vaikka silmukka on voit ensin alustaa laskuri muuttuja ulkopuolella Vaikka silmukka 10. Ja sitten periaatteessa, joka kerta mennä läpi while-silmukka, voit tulostaa lausekkeella ja sitten pienennät laskinmuuttuja kunnes lopussa, jossain vaiheessa, kun vähennämme I tarpeeksi kertaa, 1 alkaen I riittävän monta kertaa - ja vain selventää, olen minus minus tarkoittaa I on I miinus 1. Se pohjimmiltaan tuo minä alas kohta jossa kerran osuin nolla, ehto ei ole enää totta ja joten se poistuu ulos silmukan. Niin täysin Loopy tulostaa vain 10 kertaa. Kysyttävää Vaikka silmukka? OK. Joten siellä on tapa, jolla voimme tehdä mitä me juuri teki enemmän ytimekkäästi kanssa mitä me kutsumme For silmukka. Joten For-silmukan koostuu Alustuksen kunnossa, ja päivitys, aivan kuten meillä oli ennen Tässä Vaikka silmukka. Joten katsotaanpa katsomaan. Tässä Vaikka silmukka, meillä oli Alustuksen jälkeen meillä oli edellytyksellä, että pyysimme. Ja sitten meillä oli päivitys askel yläreunassa. Kanssa käytettäessä loop, tämä käytännössä tapahtuu nämä kolme asiaa ja tiivistyy se alas yhden rivin. Joten ensimmäinen asia, että se tekee Varten silmukka on alustuksen. Ja sitten teet puolipiste ja sitten teet kunnossa, mikä on minä suurempi kuin nolla menee tuolla, ja sitten päivitys askel. Joten tämä saa suorittaa Aivan lopussa silmukan rungon. Joten nämä kaksi ohjelmaa ovat olennaisesti vastaava. Kaikki kysymykset? Joten mikä on yksi ero Näiden kahden? Voiko joku huomauttaa asiasta? Se saattaa olla hieman hiuksenhieno. Se on vain hyvin pieni ero. Kyllä? SPEAKER 5: Et voi käyttää I muuttujan ulkopuolelle For silmukan [Äänetön]? JOSEPH: Aivan. Joten tämä on jotain me saamme myöhemmin nimeltään kiikaritähtäimellä. Mutta pohjimmiltaan tämä int i elämää ulkopuolella tämän Vaikka silmukka. Joten kun tämä kun silmukka tehdään täytäntöönpanosta, minä voi käyttää I myöhemmin kyseisessä ohjelmassa. Ottaa huomioon, että tämä on loop, tämä int I on scoped sisäosat For silmukka. Ja koska se on sisällä tämän osan For-silmukka, joka alkaa klo suluissa ja päät kihara ahdin tuolla. Kaikki, mikä on julistettu sisällä täällä ei voi käyttää ulkona. Joten jos yritän käyttää I ulkopuolella, se tulee Kerro minulle, pimeän symboli. Ja olennaisesti, en pystyä käyttämään sitä. ROB: Ja hyvin, 10 vuotta sitten, vuonna kirjaimellisesti kaikissa tapauksissa, aaltosulkeita ovat mitä käytetään määrittämään Muuttujan laajuus. Joten siellä, int I on 10 julistetaan sisäosat joukko aaltosulkeita. Ja niin niin niin kauan kuin yrität käyttää I ennen tätä kihara ahdin, se on hieno. Saatat nähdä kun kirjoitat tehdä, voit katso viiva, viiva, std, vastaa, C99. Tämä on siis uudempi versio C, että GCC on toteuttanut joka myös antaa Tämä pikakuvake. Joten tämä käytetään ei sallitaan C. Ja voit nähdä, miksi, koska tämä int I on ulkopuolella tämän kihara ahdin mutta se on silti katsota laajuus näistä aaltosulkeita. Mutta tämä on erittäin kätevä juttu, ja niin se on hyvä laajennus. JOSEPH: Kaikki kysymykset? OK. Joten mitä enemmän hyötyä on, että joskus Haluatko tavallaan dynaamisuutta silmukka, eikö? Et halua vain välttämättä tulostaa täysin Loopy koko ajan, voit haluat laskea alas 10 tai jotain. Ja niin voit käyttää laskinmuuttuja sisällä että silmukan samoin. Ja tässä tapauksessa, tämä ohjelma vain laskee alas 10 myöten. Ja mitä se ei tulosta? Se ei tulosta nolla, oikeassa, sillä kun - Kyllä, se ei myöskään tulosta 11. Joten se ei tulosta nolla, sillä kun I on nolla, muistakaa, se arvioi kunnossa ennen kuin se menee suorittaa silmukan runko. Ja kun on nolla, tämä on väärä, niin se ei tulostaa laskee alas nolla, se vain tulostaa laskenta alas 10 kaikki alas 1. Jos me todella halusimme sen tulostaa nolla, silloin meillä olisi laittaa yhtäläisyysmerkkiä tämän jälkeen suurempi kuin-merkki. OK. Joten yksi tapa tehdä input validointi, joka on kun pyytää käyttäjää tekemään jotain, haluat varmistaa, että ne seurata ohjeita, on käyttää Vaikka silmukka, eikö? Joten tässä tapauksessa, pyydän positiivisen numero ja sitten aion odottaa syötteitä. Ja sitten olen tarkistanut Vaikka tulo on pienempi kuin nolla, pitää kysyä niitä. Niin kauan kuin he antavat minulle numero että ei ole positiivinen, pitää kysyä, Kyselen, pitää kysyä. Mutta mikä on hiukan outo tästä? Tai mitä ei tunnu optimaalinen noin Tämän rakenteen täällä? Kukaan? Kyllä? SPEAKER 6: Olet toistamalla opetusta kahdesti. JOSEPH: Oikea. Joten meillä on kaksi printf lausuntoja täällä, eikö? Joten siellä on tapa, jolla voimme saada tämä vain alas joka tekisi meidän koodi helpompi lukea ja hieman enemmän puhtaita. Ja sitten meillä ei tarvitse on saada kaksi kertaa samoin. Ja yksi tapa voit tehdä tämä on käyttämällä Do-while-silmukka. Ja Do-while-silmukka on pohjimmiltaan eri muodossa Vaikka silmukan, jossa mitä on sisällä aaltosulkeiden saa toteutetaan vähintään kerran. Joten täällä, julistan, int input ulkopuolella ensin. Ja sitten minä vain sanoa, tehdä tämän opetusta samalla tulo on pienempi kuin nolla. Joten se osuu tehdä ensin. Se tulee aina suorittaa tämän ainakin kerran, niin se kysyy aina käyttäjän Syöttö ainakin kerran. Ja sitten se arvioi, että tulo, ja se menee ympyrää. Kyllä, kysymys? SPEAKER 6: Onko olemassa tapa tehdä se [Äänetön] tyyppejä, kuten jos sanot, GetString, ja joku [äänetön] on olemassa tapa [kuultavissa] JOSEPH: Joten kysymys on, onko tapa tehdä input validointi, jos käyttäjä ei laita oikeaan Muuttujan tyyppi? Joten jos pyydämme int ja ne antaa meille merkkijonon sijaan. Ja toimintoja, joita toteutamme sinulle, GetInt, getString kaikissa ne toiminnot, he itse asiassa jo tehdä tällaista perustyyppiä tulo validointi konepellin alle. Joten jos käytät toimintoja, jotka me antoi sinulle, sinun ei todellakaan tarvitse. Mutta jos haluat näyttää enemmän, miten voit itse tehdä sen, voit katsoa konepellin alla on tiedoston I/O-- ei tiedosto, vakio I / O-toimintoja kuten lukeminen vakiosyötteestä ja vakiotulosteen. Ja voit saada paremman käsityksen miten voisit tehdä sen. ROB: Yksi asia on kuitenkin nimenomaan kanssa esimerkiksi sinulle sanoi, odotat merkkijono ja astun int. Miten kertoa eroa välillä tahallaan haluavat string 123 vs. haluavat int 123? Joten merkkijono, se on aika paljon ei ole validointi, se on vain mitä he Annettu voit tulkitsee jonona. Int on helpompaa, koska ei ole väliä input otat käyttäjältä, olet aina kun merkkijono. Ja niin, että merkkijono voit sitten tarkistaa, ovat kaikki nämä todella numerona? JOSEPH: OK. Kysyttävää Do-while-silmukka? ROB: Niin, ja tämä on myös - menee takaisin soveltamisalaan, hieman yhteisestä virhe yrittää käyttää joitakin paikallisia muuttujan tämän Do-While silmukan sisällä tämän ehdon. Ja todella, jos me vain heitti tämän ja sanoi, int tulo vastaa GetInt, niin kääntäjä huuda meille, koska tulo ei ole olemassa ulkopuolella soveltamisalan Näiden aaltosulkeita. JOSEPH: Ja siksi me Tarvitsen tätä kokoonpanolla täällä. OK. Joten voit myös murtautua ulos loop aikaisin, jos haluat. Joten tämä on erilainen tapa täytäntöön, mitä me juuri toteutettu. Ja sen sijaan käyttää kunnossa Suluissa, käytämme Jos ilmoitus rungon sisältä ja Do-while-silmukka. Ja periaatteessa, kun tulo on vihdoin suurempi kuin nolla, me murtautumaan ulos silmukan. Ja niin me menemme kaikki alas tänne. Ja voit nähdä, että tämä olisi todennäköisesti edullinen tässä skenaario, koska se on vähän bittinen puhtaampaa ja hieman hieman helpompaa lukea. Tämä, te tavallaan on ylimääräistä linjat siinä. Se on vain vähän rumempi, Luulen, tavallaan. Kyllä, kysymys? SPEAKER 4: murtaa vain saada sinut pois yhdet olkaimet? JOSEPH: Oikea. Joten kysymys on murtaa vain sinut pois yksi silmukka? Ja vastaus on kyllä. Joten jos olet sisäkkäistä silmukkaa varten Esimerkiksi, jos minulla on int I on 0 10 päivään ja sitten int J on yhtä kuin 0 10 päivään, jos rikon ulos sisemmän silmukka, aion silti mennä ja ulomman silmukan. Joten se pitää suorittaa toiminnan ulkopuolella. Kaikki kysymykset siitä? Kyllä? SPEAKER 5: Mutta tauko toimii vain kihara henkselit, ei muita lausuntoja? [Äänetön] JOSEPH: Joten kysymys on murtuu ainoa tehtävä silmukoita vastakohtana muita lausuntoja, kuten Jos? Ja kyllä, näin on, koska rikot ulos silmukan, oikea, tavallaan. ROB: Valtaosassa tapauksia se on tämä on eräänlainen Jos jotain, sitten tauko. Joten sinun ei tarvitse rikkoa soveltaa Jos tämä on se kiertää. Ja myös, tämä ei ole paljon silmukan, mutta muista, että kytkimet ovat myös puhjennut tauot. Näimme taukoja käytössä kytkimillä ennen. JOSEPH: Ja voit myös käyttää niitä vuonna Vaikka silmukat ja silmukat. Kaikki kysymykset? OK. Joten ensi up on toimintoja. Joten olet saattanut käyttää yhtä näistä BYOB blokkeja Scratch projektin. Ja tämä periaatteessa mahdollistaa voit määrittää joukko ohjeita on noudatettava. Ja mitä minä tarkoitan, että on mietitäänpä takaisin matematiikka, oikealle, algebra. Sinulla on mitä me kutsumme funktio x, Joissakin muuttuja, ja sanokaamme tämä funktio on f x on yhtä kuin x plus 5. Joten voit ajatella F x, koska tämä musta laatikko, joka kestää 15 ja sitten tuottaa 20. Joten yleisemmin, toiminto on jotain, joka vie jonkin tulot ja sitten tuottaa joitakin tuotoksia. Ja miksi toimintoja hyvää? Ne ovat hyvä useita syitä. Joten ei joku halua ottaa puukottaa mitä organisaatio tarkoittaa? Mitä, miksi toiminnot ovat hyödyllisiä? Kyllä? SPEAKER 4: Se tekee koodi luettavampi. JOSEPH: Oikea. Joten yksi niistä asioista on se tekee koodi luettavampi, eikö? Sen sijaan, kuten int x on yhtä kuin x kertaa x kertaa x, voin olla kuution x, joka on luettavampi ja enemmän ymmärrettävää lukija. Organisaatio on myös niiden pilkkominen koodi hallittaviksi osia, joten sen sijaan että yrittäisivät pantava tämä kaikki yhdessä pitkä jakso main, voit tavallaan jakaa sitä osaksi kuten, OK, nyt kirjoittaa funktio Cube jotain, nyt kirjoittaa toimiakseen neliö jotain. Näin voit jakaa sen pieniksi, pikku osia, jotka voit ratkaista toisin kuin yrittää puuttua iso ongelma kaikki kerralla. ROB: Tai edes pieni, vähän osia, jotka sinä ja kumppani voi puuttua. JOSEPH: Joo. ROB: Joten sen sijaan molempien Yritätkö istuttaa yhden toimiakseen samanaikaisesti. JOSEPH: Yksinkertaistaminen. Kukaan halua ottaa arvata? Kyllä? SPEAKER 5: Lisää toistoa. JOSEPH: Oikea. Niin yksi asia, että voit tehdä yksinkertaistaminen on, että se on eräänlainen on samaan tapaan kuin uudelleen käytettävyys on, että kun minä kirjoitan datakuutiofunktioiden, voin vain käyttää sitä uudestaan ​​ja uudestaan ​​ja uudestaan jälleen minun ohjelma kirjoittamisen sijaan x kertaa x kertaa x yli ja uudestaan ​​ja uudestaan. Ja yksinkertaistaminen tässä myös juuri tarkoittaa se tekee koodin eräänlainen helpompi debug kun jaat tämä ylös toimintoja. Koska silloin voit paikallistaa missä ongelmat tavallaan ovat. Kaikki kysymykset? Joten toinen ajatus on abstraktio, eikö? Musta ruutu. Kuten tiedät mitä GetInt tekee saada palautetta käyttäjä? Emme ole kertonut sinulle, eikö? Kaikki olemme kertoneet teille on GetInt ei mitä se sanoo se tekee. Joten vaikka emme kertoa miten se toimii, saat silti tietää. Joten tässä tapauksessa, tämä on nelinkertaistaa toiminto, joka tekee eri asioita tuloon tuottaa tuotos. Ja voit nelinkertaistaa numero kertomalla se neljä. Tai voit kutsumme bittinen siirtää sen kahdella. Ja me kattaa tämän hieman myöhemmin. Ja ei tarvitse tietää, miten tämä toiminto itse asiassa toimii niin kauan kuin se toimii kuten. Joten konepellin alle, voisin olla kuten, palata tulo kertaa Kahdeksan jaettuna kahdella. Ja et tiedä, eikö? Kaikki mitä sinun tarvitsee tietää on se mitä se sanoo. Niin, että hyödyllinen asia noin abstraktio. Ja toinen asia on tavallaan tämä ajatus hakeutumaan koodin yhteen tiettyyn osaan. Joten jos sinulla on ongelma, et täytyy mennä ympäri koodi yrittää korjata missä ongelma oli. Joten tässä tapauksessa, olen toteuttanut kuutio väärässä. Luulin kuutio on kertomalla kolmella. Joten tässä tapauksessa, tämä on yksi ohjelma että juuri on kertomalla kolmella kaikkialla. Ja siellä on toinen ohjelma, joka on osavarmuusluvuilla kuutio ulos toiminnon. Ja nyt jos haluan korjata virheeni täällä, minun täytyy korjata jokainen viiva koodia tässä ohjelmassa. Kun taas toisaalta, jos käytän toiminto, en vain tarvitse vaihtaa mikä oli vikana yhdessä paikassa. Joten tietotekniikassa, me soita tulot ja lähdöt. Tuloa kutsutaan parametrit tai argumentteja, ja lähdöt ovat nimeltään palauttaa arvoja. Ja näemme, miten tämä auttaa meitä järjestä Define toiminnon toisella. Joten tämä on funktion määritelmän varten Cubing. Joten se vie tulo, ja sitten se palaa että numero kertaa itse kolme kertaa. Joten jakaa järjestelmä. Joten meillä on toiminto header, joka koostuu ensisijaisesti kolme asiaa. Joten meillä on parametreja, jotka ovat, kuten aiemmin sanoin, panoksina tätä toimintoa. Ja sitten annamme funktion nimi. Tässä tapauksessa sitä kutsutaan kuutio. Ja sitten me määritellä, mitä tyyppiä tuoton arvo on. Joten tässä tapauksessa, minun datakuutiofunktioiden vie kokonaisluku, ja se on myös palauttaa kokonaisluvun. Joten jos kuljen kaksi, kaksi on kokonaisluku, se palaa kahdeksan minulle, joka on kokonaisluku. Joten palata tyypin nimi parametrit. Kysymyksiä siitä? Ja sitten palauttaa arvo on todella määritelty lopussa sanomalla paluu ja palaavat sitten mitä tahansa sisältää paluuarvo. Joten tässä tapauksessa, jos laitamme kaiken yhdessä, toiminto vie parametrit, sitä kutsutaan jotain, ja se palauttaa jotain, joka on tyyppiä että sanomme sen piti olla. Kaikki kysymykset? Miten siis käyttää toimintoa? No, me kirjoittaa toiminto ja sitten käytämme sitä meidän ohjelmaan, eikö? Niin pyysin sen kuution, ja sitten voin käyttää kuutio. Mutta mikä on tärkeää huomata, on järjestyksessä asioita. Jos minulla on kuution alla tärkein, se on menossa törmätä kuutio. Ja tässä vaiheessa, ei ole mitään kutsutaan kuutio ohjelmaan, ja se on juuri menossa olla, minulla on Ei aavistustakaan, mitä kuutio on. Niin se kertoo, implisiittinen ilmoitus toiminto. Se on virhe, joka näkyy. Ja niin tässä tapauksessa kuutio on alle tärkein, joten se ei tule tietää siitä. SPEAKER 5: Joten tärkein on yleensä viimeksi määriteltyä? JOSEPH: Joten kysymys on, on tärkein yleensä viimeinen asia, että haluat määrittää? Ja ei. Se johtuu siitä, että yleensä haluavat main olla huipulla, eikö? Koska se on ensimmäinen asia, sinun haluavat ohjelmoija avaamista ohjelman nähdä. Ja niin miten voimme ratkaista tämän kysymyksen me haluavat main olla huipulla, mutta toimintoja, joita haluamme, haluamme heidän olla alle main vielä pystyä käyttämään ne sisällä tärkein? No, käytämme mitä kutsumme funktion prototyyppi. Joten mikä funktio prototyyppi olennaisesti on se ensin kestää mitä allekirjoitusta tai toiminnon otsikko mitä haluamme toteuttaa alas täällä, ja laitamme sen alkuun ohjelman. Joten tässä tapauksessa, sanomme, että hyvin, myöhemmin ohjelmaamme, aiomme luvata toteuttaa tämän toiminto nimeltään int kuutio, jossa otetaan kokonaisluku-tulo. Joten nyt, koska se on edellä main, Tärkein, se aikoo sanoa, oh, hyvin, myöhemmin ohjelmassa, joka tulee olemaan siellä niin voin viitata siihen, niin minä vain antaa sen mennä läpi nyt. Ja sitten alaosassa, toteutamme kuutio. Ja sitten tärkein sanoa vain sen, No, se on jonkinlaisia ​​yhteyksiä nämä kaksi merkkiä toisiinsa. Ja me kattaa, mitä se tarkoittaa myöhemmin. Ja niin se tulee tietää, että tämä on datakuutiofunktioiden että se pitäisi käyttää. ROB: [kuultavissa] noin haluavat Tärkein alareunassa tai top, olen nähnyt molemmat. On asioita, jotka vain haluavat laittaa tärkeimmät alareunassa. Mutta kun hanke saa erityisen iso, yleensä tärkein on tiedostoon aivan oma. Ja siinä vaiheessa, kuten int kuutio linja olisi - sisällä stdio.h olemassa joukko linjat noin vain int kuutio int tulo linja. Ja niin nuo prototyypit ovat asioita, yleensä laittaa otsikkoon tiedostoja kello Jolloin sillä ei ole väliä. No, sillä ei ole väliä. Nämä aina mennä yläreunassa. Ja jos tärkein ei ole tiedosto aivan oma, sinun ei tarvitse huolehtia laskemisesta itsenäinen tehtävä prototyyppejä tiedostossa. JOSEPH: Ja me saamme että hieman Hieman myöhemmin, kun Rob alkaa puhua noin kokoamisessa. Ja niin siellä on myös ero käydäänkö parametreihin ja argumentti. Ja parametri on juuri me kutsumme näitä panoksia, kun me määrittelemme funktio. Ja me kutsumme sitä väitettä, kun me oikeastaan ​​siihen johdetaan toiminto. Joten tässä tapauksessa, tämä on parametri, kuten olemme sanoneet aiemmin. Ja kun me todella käyttää sitä tuolla, kuutio x, niin x itsessään on mitä kutsumme argumentti toiminnon kuutio. ROB: Joten parametri väitteet ovat - on tämä ero, hyvin sekava synonyymeinä. Tässä vaiheessa minulle, se on kuin yksi nuo sanat, että kun näen sen ulos villi, en voi auttaa, mutta heti onko ne käyttävät sitä oikeassa asiayhteydessä, koska Ero on hiuksenhieno riitä, että vain jokainen pyrkii - Olen melkein aina sanoa argumentti riippumatta siitä, mitä tarkoitan. JOSEPH: Ja toiminnot ovat myös hyödyllisiä mitä me kutsumme sivuvaikutuksia. Joten toiminto ei voi ryhtyä tuloa, ja se voi myös tuottaa mitään lähtöjä. Joten tässä tapauksessa, olen määritellään aliohjelma, joka ei ole palata arvo. Ja jotta täsmennetään, että käytämme mitä me kutsumme mitätön tänne. Ja niin sivuvaikutus tätä toimintoa on, että se vain tulostaa tavaraa ulos sivulle. Se ei oikeastaan ​​tehdä mitään tuloa, ja se ei todella tuota lähdöt. Mutta tämä voisi olla hyödyllinen siinä mielessä jos haluat, esimerkiksi debug jotain ohjelmaa, jos haluat kirjoittaa pienen aliohjelman tulostaa, sanotaanko, sisältö muistia tai jotain. Ja niin nämä haittavaikutukset ovat joskus hyödyllistä kontekstin ulkopuolella vain haluavat tulot ja lähdöt. Kaikki kysymykset? Ja lopettamaan tässä segmentissä Mitä tämä ohjelma tekee? Annan teille pari sekuntia lukea sen läpi. Klo hyvin perustasolla, mitä haluamme sanoa, että se swapit x ja y, eikö? Joten kuinka moni teistä todella ajattelevat tämä vaihtaa x ja y? Nosta kätesi. Ei kukaan. OK. Joka ajattelee, että se ei vaihda x ja y? Ja summa, joka oli ei koko huoneen. Niin jotkut ihmiset eivät ole varmoja. OK. Se on kohtuullinen. Joten mennään läpi mitä tapahtuu, kun voit itse soittaa toiminnot ensin Voidaksemme vastata tähän kysymykseen. Joten tämä on mitä muistia tavallaan näyttää. Tämä on tavallaan kuin yksinkertaistettu malli mitä muistia näyttää, kun käynnistät ohjelman. Joten siellä on jotain kutsutaan pinon tänne ja jotain kutsutaan kasaan. Ja nämä kasvavat kohti keskellä muistia. Joten tässä tapauksessa, kun soitat toiminto, se saa laittaa pinoon. Ja sitten mitä sisältyy, että toiminto pysyy mitä kutsumme että toiminnon pinokehyksen. Ja siten saada mukava visualisointi Tämän let's - esimerkiksi meillä oli Ohjelman tärkein aikaisemmin. Ja sisältä tärkeimmät, soitimme kuutio. Joten tärkein ensin mennä pinoon runko, koska se on ensimmäinen funktio sitä kutsutaan. Ja sitten kun kuutio on nimeltään sisällä Tärkein, se saa laittaa päälle tärkeimmistä sisällä muistia. Joten mitä huomaat on, että kuutio on oma parametrit ja sen omat paikalliset. Joten kun todella välittää jotain toiminto, parametrit, että se saa ovat kopioita mitä oli hyväksyttiin päässä tärkeimmistä. Ja tavallaan selittää tätä, nyt kävellä läpi ohjelman. Joten meillä on pino, tämä on vain osapinkan. Ja mitä teemme on ensin alustaa x ja y yksi ja kaksi. Joten meillä on nämä vähän laatikoita. He istuvat tärkein poistoilmapiipun runko pinoon. Ne sisältävät yksi ja kaksi. Nyt kutsumme swap. Mitä tapahtuu, on ohitamme x ja y osaksi swap, ja swap luo omat kopiot käytetyistä muuttujista käyttää sisällä sen pinokehyksen. Joten nyt siellä, meillä on, joka sisältämään arvoon x oli, ja b, joka sisältää arvon, että y oli. Joten yksi, kaksi. Ja huomaat, että tämä on erillinen alkaen x ja y sisällä tärkein. Joten me nyt luoda väliaikainen muuttuja sisältää. Asetimme yhtä kuin bo, joten se muuttuu yhdestä kahteen. Ja sitten asetimme b yhtä temp, joka on yksi. Ja niin nyt me poistumiseen Tämän toiminnon. Kun poistut ulos toiminnon, pinokehyksen saa piipahti pinosta. Me kutsumme sitä työntää. Painat pinokehyksen pinoon ja pop jos pinosta. Ja niin mitä tapahtuu, on kaikki, oli, että pinokehyksen tavallaan vain menee liekkeihin. Ja niin, että ei ole enää olemassa. Mutta mitä me huomaa? Emme koskaan oikeastaan ​​muuttunut arvot x ja y, eikö? Joten ne jäi paikallisten to main. Ja viemällä asioita swap, me oikeastaan ​​koskaan muuttunut näitä arvoja. Ja mitä me kutsumme tätä? Kutsumme tätä ohi arvoa. Joten C, kun siirtää asiat oikeisiin toimintoja, se kulkee niitä arvon ja tekee kopion niitä toiminto käyttää. Ja me oppia jotain kutsutaan ohimennen viitataan myöhemmin, mutta se on Näin voit ratkaista tämän ongelman. Mutta emme ole huolissasi että vasta myöhemmin. ROB: Ja itse asiassa, että termi, ohimennen viittaamalla, joten C ei ole edes ohi viitataan. C yksinomaan on ohi arvo. Ei ole väliä mitä teet, olet aina kulkee kopio jostain. Se on vain, että, kuten minä tavallaan mainittujen että ennen viitteitä ja että merkkijono on oikeastaan ​​vain neljä tavut osoittaa jonnekin muistiin. No, jos minulla on tämä merkkijono ja se on kertoo minulle, että on, jos merkkijono - No, jos minulla on tämä osoitin tähän laita muistiin, niin voin välittää kopio, että osoitin toiminnon kohdalle ja että toiminto vielä tiedä missä muistia se on. Joten molemmat osoittimet osoittavat samaan paikkaan muistissa, ja se miten aiomme pystyä muuttaa asioita pidemmälle nykyinen pinokehyksen. JOSEPH: Haluatko tehdä kokoamiseen? ROB: Ei, se on 05:30. JOSEPH: OK. Se on 5:30. OK. Joten pystymme kattamaan kokoamiseen Oletan Seuraavassa osassa tai jakso Leader tässä vaiheessa. Ja - ROB: Kaikki kysymykset? JOSEPH: Kaikki kysymykset? Kyllä? SPEAKER 5: käyttäminen merkkijonoja CS50 tahansa toimintoja, joita haluamme käyttää niille, että tulee olemaan kuten C toimintoja. CS50 ei ole mennyt sisään ja tehnyt mitään ylimääräistä. ROB: Oikea. Jokin C kuten [kuultavissa], et käyttäisi näitä meidän jousille. JOSEPH: Ja viimeinen asia, jonka haluan mainita, että meillä on stilisointioppaan tämän luokan. ROB: Joo. JOSEPH: Joten jos olet kotoisin ohjelma taustalla ennen, et saattaa olla tiettyjä sopimuksia, kun olet kirjoittamassa koodia kuin laittaisi henkselit samalle riville tai erityisesti tapoja sisennys tai nimeämällä muuttujat. Tässä luokassa, haluamme seurata tiettyä tyyliä opas vain siksi, No, jos menet ulos ja töihin teollisuus, aiot odotettavissa seurata tyyli opas yritys, jolla menet. Kuten esimerkiksi Facebook luulen on omanlaisensa nimeäminen yleissopimus. Ja siellä on eroja kameli kotelo muuttujat ja aivan kuten erottamalla ne alleviivausmerkein. Ja myös, mielestäni tärkeintä, kuten esimerkiksi sisennykset, eikö? Emme aaltosulkeita aloittaa missä ehto on, ja ne ovat seuraavalla rivillä. Ja me myös laittaa aaltosulkeita vuonna vaikka se on vain yksi rivi. Ja paljon kertaa, on olemassa keinoja tehdä se jossa voit jättää näitä henkselit pois, jos se on vain yksi rivi alle Jos julkilausuman. Mutta tässä luokassa, haluamme seurata tiettyä tyyliä opas vain niin saat käytetään, että sellainen asia. ROB: Joo, ja tyyli 50 on menossa täytäntöön tämän tyylin oppaan, ja olemme aio käyttää Style 50 palkkaluokkaan koodi. Niin se helpottaa asioita meille ja toivottavasti ei pitäisi tehdä asioita, jotka paljon pahempi sinulle antanut standardoitu tyyli ei pitäisi olla, että epärealistinen. JOSEPH: Ja lopuksi, löytää tyyli siirtymällä osoitteeseen manual.cs50.net/style. Ja joo. SPEAKER 4: Aiotko valvoa mitään merkkiä riville? ROB: Kyllä. JOSEPH: Anteeksi, kaverit. ROB: Se on kuin yksi ainoita. Tässä vaiheessa olen OK kanssa 120. Olen ok sanomalla 120 merkkiä riville. Ymmärrän, että on joitakin raja. Mielestäni 80 on niin pieni, mutta me noudattamisen valvomisessa. JOSEPH: Henkilökohtaisesti uskon kanssa C, 80 merkkiä on OK. Kun alkaa saada muille kielet kuten JavaScript ja PHP, ei niin järkevää vain rajoittaa se 80 merkkiä. OK. No, se oli super-osiosta. Haluaako joku karkkia? SPEAKER 4: Kyllä.