>> SPEAKER 1: Hi everyone.
Aiomme päästä alkuun.
Uskon, että ihmiset ovat yhä käynnissä olla suodattamalla.
Mutta kiinnostus aikaa, joten voimme tuoda teille täältä ajoissa,
aiomme aloittaa.
Joten tervetuloa CS50 Quiz 0 tarkastelu.
Niille teistä, jotka eivät ole ymmärtäneet vielä, sinulla on kysymys keskiviikkona.
Woo-hoo.
>> Jos et ole aloittanut opiskelun vielä tai eivät ole ymmärtäneet, että on olemassa vielä,
menneisyyden tietokilpailuja ja kaikki tiedot tietokilpailun ovat cs50.net/quizzes.
Siellä on joitakin melko hyviä juttuja siellä, ohi tietokilpailuja viimeisestä 10
vuotta sekä tietoa tästä tietokilpailu ja aiheet
että katetaan.
Joten pääset alkuun.
>> Joten te ehkä muistatte, ensimmäinen päivänä luokan David oli nuo valaisimet.
Niin olennaisesti, kaikesta, mikä menee on konepellin alle tietokone on
tehdään binary.
Binary tarkoittaa sitä mitä se kuulostaa kuten, 0: n ja 1: n.
Sillä on kaksi arvoa, jotka voidaan esittää.
>> Joten aivan kuten ensimmäisen päivän jakso kun David päällä valo
polttimo edustaa päälle, tai 1, meidän tietokone ymmärtää binary kuin 0: n ja
1: n, päälle tai pois päältä.
Perusteet Binary.
Jokainen paikka on edustettuna alustassa kaksi.
Niin lisäät 2 0 1 2 kokonaan ylös.
>> Laskea mitä binary on desimaalin, vain seuraa tätä yhtälöä
tyyppi juttu.
Jos sinulla on 1 missään niistä paikoista, kerrot sen mitä
perustavat se on, lisää se ylös, ja saat desimaalin.
Joten tämä on, miten laskit 5 binary.
Aivan kuten mitä olimme tekemässä Viimeinen kuva, tämä on miten olisit
ovat 1: stä 5.
>> Samoin aivan kuten voit lisätä ja vähennä desimaali tai perustaa 10, tai
oikeastaan ​​mitään pohja, päälle voi lisätä ja vähennä binary.
Mitä voit odottaa, kun lisätä kaksi ylös, jos se vastaa paremmin
kuin 1, teillä 1, jotta se 0, ja tehdä lisäksi, että tapa, vain
kuten arvata saattaa säännöllisesti desimaalin tai muuta emästä.
Cool.
>> Niin kuin aiemmin sanoin, kaiken, menee konepellin alle meidän tietokone
tehdään 0: n ja 1: n, tai binary.
Miten siis ilmaista esimerkiksi kirjaimia tai numeroita tai merkkejä?
Ja vastaus tähän on ASCII.
>> ASCII on kuvaus merkkien välissä että me yleensä nähdä
Englanti kieli kuten n, B: n, C: n, alaviiva, viivoja, ja
mitään sellaista.
Ja kartat, että ASCII-arvo.
ASCII-arvo on vain numero, joka voidaan ymmärtää tietokoneen.
Ja aivan kuten voit tehdä lisäksi ja vähennyslaskua numeroita, voit tehdä
ne ASCII-arvoina.
>> Joten tässä esimerkissä, mitä tulee tämä tulostaa?
Joo, niin juuri tilaa B tila C tilaa D. Missä minun hiiri mennä?
Huomaa voit määrittää int 65.
Ja kun tulostat että käyttämällä prosenttia C, se tulee tulkita, että
luonne ja tulostaa A.
>> Samoin voit ilmoittaa sen merkkiä.
Ja kun tulostaa sen käyttäen prosenttia C, se tulee tulkita, että
prosenttia D. Ja aivan kuten voit lisätä numeron, voit lisätä merkkejä ovat
ASCII-arvot, tässä tapauksessa.
>> Niin vähän osoitin kaikille.
5, kuten merkkijono, ei todella equal 5.
Joten miten me saatamme muuntaa string 5 kokonaisluku 5?
Onko ideoita?
Joo.
>> Joten jos meillä on 5 merkkijono, voimme vähentää 0.
Ja että annan meille 5.
Ja samoin, jos meillä on 5 kuin kokonaisluku, lisätä, että merkkijono 0.
Ja joka antaa meille merkkijono 5.
Cool.
>> Nyt muistaa takaisin luennoimaan sellainen, jossa puhuimme algoritmeja.
Joten miten haluamme oikeastaan ​​tietokoneen tehdä mielenkiintoisia asioita?
Tiedäthän, vain lisäämällä ja vähentämällä numerot ja tulostus asioita ei ole
että jännittävä.
Yleensä haluamme tietokone suorittaa jonkinlainen algoritmi.
Jotain hieman monimutkaisempi kuin vain yksinkertaisia ​​laskutoimituksia.
>> Algoritmi on vain askel askeleelta sarja annettu ohjeet miten tehdä
Tiettyjen task--
aivan kuten resepti.
Muistatte ehkä ensimmäisenä päivänä luokka, jossa Daavid oli meille luottaa huone
ihmisiä ja kuinka moni olivat huoneessa.
Saatat käyttää laskenta yksi kerrallaan.
1, 2, 3, 4.
Siinä tapauksessa, lineaarinen aika-algoritmi.
>> Mutta David käyttöön algoritmi voit laskea henkilöä huoneessa
jossa jokainen nousee ylös, sanot numeroa toiselle henkilölle, lisätä,
numero ylös, ja yksi henkilö istuu alas.
Ja Voitko toistaa.
Se on yhdenlaista algoritmin.
Voimme analysoida, miten tehokas algoritmi perustuu se ajoaika.
Mutta me puhumme hieman lisää myöhemmin.
>> Joten kaikki algoritmit voi myös kirjoitetaan pseudokoodilla.
Pseudokoodina on vain Englanti kuten syntaksin käytetään edustamaan
ohjelmointikieli.
Esimerkiksi, jos haluamme kysyä käyttäjältä arvata suosikkini numero, me
voi olla pseudokoodilla sellaisenaan.
>> Saada käyttäjät arvata.
Jos arvaus on oikea, kerro heille he ovat oikeassa, muu kertoa heille
ne eivät ole oikeita.
Ja pseudokoodina on tapa helposti mikä idea tai algoritmi.
Joten nyt kannattaa todella kirjoittaa Tämän kielellä, että tietokone
ehkä ymmärrystä.
Jotta voisimme kirjoittaa meidän pseudokoodina ja tulkita osaksi lähdekoodia.
>> Toistaiseksi lähdekoodi on noudatettava tiettyä syntaksia
ohjelmointikieli.
Ja toistaiseksi on CS50, olemme käyttänyt enimmäkseen c.
Joten tämä voisi olla lähdekoodia c.
Myöhemmin tietysti te yö tulla kosketuksiin muiden ohjelmointi
kieliä kuten PHP.
Tai jos edes ottaa muihin luokkiin, sinua voisi tehdä Java, Python tai jopa OCML.
Mutta meidän C-ohjelma kielen, tämä on miten voisimme kirjoittaa lähdekoodi
pseudokoodia algoritmi, joka Olen juuri kuvattu aikaisemmin.
>> Joten miten tietokone oikeastaan ymmärtää, että?
Kuten aiemmin sanoin, se vain todella ymmärtää nollia ja ykkösiä.
Joten miten se saa lähteestä koodin jotain, joka voi olla
ymmärretty?
No, meillä on jotain kutsutaan kääntäjä.
>> Jos muistatte takaisin irti psets, sinulla oli jonkinlainen ohjelma
kirjoitettu piste c tiedosto.
Ja sitten kirjoitetaan tehdä.
Joten mitä tehdä tekee?
>> Voit kirjoittaa make kokoat ohjelma, koska someone--
kuka kirjoitti oman p set; luultavasti David--
luotu tehdä tiedosto.
Ja joka kertoo tekevät tietää ajaa kääntäjä, nimeltään kalahtaa, että tahto
sitten kääntää lähdekoodista vastustaa koodin, joka on nollia ja ykkösiä
että tietokone ymmärtää.
Mutta vähän myöhemmin, menemme enemmän syvyyttä noin kerääjiä.
>> Joten muistaa PSET 0, where-- kyllä, sinulla on kysymys?
>> Yleisö: [kuulumaton]?
>> SPEAKER 1: Kyllä.
Luulen, että he todella pitäisi olla suora.
Joo.
>> Yleisö: Onko se kuin [kuulumaton]?
>> SPEAKER 1: Ei ole.
Ovat cs50.net/quizzes.
>> Yleisö: Slash tietokilpailuja, slash 2013, slash 0, ja klikkaa läpi
tietokilpailuja 2013 ja tietokilpailu 0, Arvostele jakso dioja.
>> SPEAKER 1: Joo, joten jos kaverit haluavat vedä se ylös ja katsoa sitä oman
oma tietokone, joka sekin sopii.
Sano se uudestaan.
>> Yleisö: [kuulumaton].
>> SPEAKER 1: Joo, [kuulumaton] on dummy-muuttuja.
Voi, kyllä?
>> Yleisö: [kuulumaton]?
>> SPEAKER 1: Ei, lakot eivät ole tentti.
Anteeksi, kysymyksensä oli, oli iskuja tentti.
Ja se ei ole.
Niin pset 0, te pitäisi olla kaikki toteuttaa jotain käyttäen tyhjästä.
Ja olemme oppineet joitakin perusasioita ohjelmointi rakennuspalikoita käyttäen tyhjästä.
>> Joten katsomaan joitakin Näiden rakennuspalikoita
jotka muodostavat ohjelman.
Ensimmäinen on Boolen lauseke.
Boolen operaattoreilla ovat ykkösiä ja 0: n tai jotain, joka on
kaksi mahdollista arvoa.
Tässä tapauksessa, totta vai tarua, päälle tai pois, ja kyllä ​​tai ei.
Eräs esimerkki on yksinkertainen, hyvin yksinkertainen, ohjelma, joka käyttää Boolen
ilme täällä.
>> Joten jotta Boolen lausekkeita olla hyödyllistä, on Boolen operaattoreita.
Nämä ovat operaattorit, joita voidaan käyttää vertailla tiettyjä arvoja.
Joten meillä on ja tai ei vastaa, vähemmän kuin tai yhtä suuri, suurempi tai
yhtä suuri, ja vähemmän kuin tai suurempi.
Mutta nämä operaattorit eivät ole kovin käyttökelpoisia ellemme ne voidaan yhdistää
olosuhteissa.
>> Joten te ehkä muistaa tyhjästä ja teidän s asettaa, että me
oli olosuhteet.
Niitä ovat ennen kaikkea, kuten haarukat logiikka oman ohjelman, joka
suorittaa riippuen siitä, onko ehto täyttyy.
Joten yksi ehdoista, että meillä oli käyttää monta kertaa tällä kurssilla on
jos muu, jos ja muu ehtoja.
>> Tässä on esimerkki siitä, miten voit käyttää sitä.
Tietääkö kukaan eroa vain käyttää jos lausunnot kaikki
alas säkeet, jos muuta, jos, ja muuten yhdistää?
Kyllä?
>> Yleisö: [kuulumaton].
>> SPEAKER 1: Aivan.
Joten jos minulla olisi, jos kaikki alas tämän Muuten, vaikka tämä ehto palaa
totta, se jatkuu edelleen testaus kahden seuraavan.
Ottaa huomioon, muuta-jos muu lausunto, jos yksi palauttaa true,
toiset ei testattu.
Kysyttävää siitä?
Cool.
>> Joten voit käyttää if-else ja muuta lausunto, jos tiedät, että se voi vain
olla yksi näistä tapauksista.
Tiedämme siis, jos x on pienempi kuin 0, se on varmasti tule olemaan
suurempi kuin 0.
>> Seuraavaksi toinen rakennuspalikka että olemme oppineet ovat silmukoita.
Meillä on kolmenlaisia ​​silmukoita.
Silmukoita, kun silmukoita, ja tehdä samalla silmukoita.
Ja yleensä, kun istut alas kirjoittaa jotain, sinun on päätettävä
mikä kolmesta haluat käyttää.
Miten siis päättää kumpi?
>> Me yleensä käytä silmukka jos tiedämme kuinka monta kertaa haluamme kerrata
kautta jotain tai kuinka monta kertaa haluamme tehtävän suorittamiseen.
Käytämme kun silmukoita jos tarvitsemme ehto on tosi pitää käynnissä.
Ja käytämme tehdä, kun hyvin samankaltainen aikaa, mutta haluamme koodi ajaa
ainakin yhden kerran.
>> Niin taas, mitä on teette aina ajaa ainakin yhden kerran.
Ottaa huomioon, kun se ei välttämättä toimi ollenkaan, jos
ehto ei täyty.
Kysyttävää tähän?
>> Joten rakenne silmukan.
Olette kaikki nähneet tämän.
Voit alustaa sen.
Sinulla on jonkinlainen kunnossa.
Niin, esimerkiksi voisimme alustaa kuten i vastaa 0.
i on pienempi kuin 10.
Ja i ++.
Hyvin yksinkertainen, että olemme tehneet.
>> Jonkin aikaa silmukka, vastaavasti olet olla jonkinlainen alustuksen,
jonkinlainen kunnossa, ja jonkinlainen päivitys.
Jotta voimme toteuttaa meidän silmukka myös koska while-silmukka käyttää tätä.
Ja samalla tavoin do while-silmukka, meillä saattaa olla joitakin alustuksen,
suorittaa jotain, päivittää sitä, ja sitten tarkistaa kunto.
>> Niin nyt toimii.
Laitamme kaiken yhteen.
Meidän kannattaa kirjoittaa joitakin Tällainen toiminto.
Yhteinen toiminto, saatat nähneet jo on tärkein.
Tärkein on funktio.
Se on palautuva, int.
Se on funktion nimi, main.
Ja se on argumentteja, argc ja argv.
Joten tärkein on vain tehtävä.
>> Muut toiminnot olet saattanut käyttää, printf-- Printf on function--
GetInt, toupper.
Mutta nämä tapahtua olleen toteutettu meille
jonkinlainen kirjasto.
Jos te muistaa myös Tämän CS50.h kirjasto tai
vakio-I / O-kirjasto.
Kyllä, kysymys?
>> Yleisö: Onko tärkein vain luonnostaan ​​c?
Onko se vain sellainen [äänetön]?
>> SPEAKER 1: kysymys on jos tärkein on luonnostaan ​​c.
Ja kyllä, kaikki toiminnot on tärkein ominaisuus.
Se on tavallaan Jotta tietokone tietää, mistä aloittaa
käynnissä koodi.
>> Yleisö: joten et [kuulumaton]?
>> SPEAKER 1: Ei
Muita kysymyksiä?
Cool.
Joten aivan kuten voit käyttää toimintoa joka on kirjoitettu sinulle, voit myös
kirjoita funktio.
Tämä on toiminto, että joku saattaisi ovat kirjoittaneet laskea määrän
ja q, esimerkiksi.
Siellä on palautuva täällä, tässä tapauksessa int, meidän funktion nimi q ja meidän
Luettelo parametrit.
>> Ja huomaa, että sinun täytyy kirjoittaa dataa tyyppinen parametri, jota haluat
käyttää tai muuten toiminto ei tietää, millaisia
parametri minun pitäisi hyväksyä.
Eli tässä tapauksessa haluamme kokonaisluku kuin meidän tulo.
Miksi ehkä haluamme käyttää toimintoja?
>> Ensinnäkin suuri organisaatio.
He auttavat hajottaa koodi enemmän järjestäytyneen paloina ja tehdä
se on helpompi lukea.
Yksinkertaistaminen.
Tämä on hyvä suunnittelu.
Kun luet koodinpätkä ja päätehtävä on todella,
todella pitkä, se saattaa olla vaikeampi syy mitä on tekeillä.
Joten jos murtaa se alas toiminnot, se voi olla helpompi lukea.
Ja uudelleen-kyky.
Jos sinulla on koodinpätkän, joka syötetään soittanut tai käyttää useita kertoja,
sijaan kirjoittamasta että koodin 10 kertaa teidän päätehtävä, saatat
haluat käyttää sitä uudelleen.
Ja sitten aina tarvitse käyttää, että koodinpätkä, soita toiminto.
>> Joten nyt jos muistamme takaisin tyhjästä, Olemme myös puhuneet muutaman käsitteitä,
joista yksi on ketjuttaminen.
Lanka on käsite useiden sekvenssit koodi
täytäntöönpanosta samaan aikaan.
Niin muistelen päivästä jossa Daavid oli te laskea pois lukumäärä
henkilöä huoneessa.
>> Pohjimmiltaan, mitä oli tekeillä siitä on kaikki te olitte
käynnissä erilliset kierteet.
Ja ne langat olivat tulossa yhdessä saada jonkinlainen vastaus.
Samoin Scratch, kun olet useita sprite, saatat
on kissa ja koira.
Ja he olisivat samanaikaisesti ylläpitävät omia skriptejä.
Tämä on esimerkki ketjuttaminen.
>> Ja muut käsitteet, jotka oli käyttöön naarmu oli tapahtumia.
Ja tapahtumat ovat, kun useita osia koodi kommunikoida toistensa kanssa.
Scratch, tämä oli kun käytit broadcast ohjaus ja When I
Saavat lohkot.
>> Ja myös vuonna Harjoitus 4, näimme hieman tapahtumista samoin.
Te saattanut käyttää Gevent kirjasto.
Ja oli toiminto waitForClick jossa odotit
käyttäjä napsauttaa.
Ja click, tässä tapauksessa olisi tapahtuma ja odota click on sinun
tapahtuman käsittelijät.
>> Ja myös koko näkyä psets ja työstää psets, voit
saattanut joutua kosketuksiin jotkut näistä komennoista.
Tämä on mitä kirjoitit omalle pääteikkunassa tai mitä tahansa ikkuna
joka näkyy teidän g Muokkauksesi, olennaisesti, navigoida tietokoneen.
>> Joten esimerkiksi LS luetellaan hakemiston sisällön.
Tee hakemisto luo uuden kansion.
CD, muutos hakemistoon.
RM, poistaa, poistaa tiedoston tai jonkin hakemistoon.
Ja poista hakemisto poistaa hakemistosta.
>> Yleisö: [kuulumaton]?
>> SPEAKER 1: Joo, varmasti.
Sorry, kysymys oli, jos Ehdottaisin laskemisesta tämän
on lunttilappua.
Se voisi auttaa.
Jos sinulla on tilaa, voit laittaa sen päälle.
Se on vain yleensä riittävän hyvä muistaa, koska kun käytät sitä
saatat haluta vain on se ulkoa.
Että saat tehdä elämästäsi paljon helpompaa.
Teinkö kysymykseesi?
>> Joten nyt puhuimme hieman lyhyesti kirjastot.
Mutta kaksi niistä tärkeimmät, että olemme olleet käyttäen tähän mennessä Kurssin
vakio-I / O ja CS50.
Millaisia ​​asioita ovat mukana vuonna vakio I / O-kirjasto?
>> Joo, toistaiseksi olemme käyttäneet printf.
Vuonna CS50, olemme käyttäneet GetInt ja GetString.
Ja tietotyyppi jono sattuu ilmoitettava tässä CS50 kirjastossa.
Puhutaan hieman enemmän syvyyttä noin miten kirjastot toimivat ja miten ne
vuorovaikutuksessa muun koodin.
Mutta nämä ovat kaksi tärkeintä ne, jotka me ovat kosketuksissa tähän mennessä
kurssin.
>> Tyyppejä.
Nämä ovat hyvä muistaa kuinka paljon Kunkin edustaa tai miten
tavujen kunkin tyypin requires--
int, 4 tavua; nieriä, 1 tavu.
Koho on 4 tavua.
Mikä on kaksinkertainen?
>> Yleisö: [kuulumaton].
>> SPEAKER 1: Joo, niin float mutta kaksinkertaiseksi.
Entä kauan?
>> Yleisö: [kuulumaton].
>> SPEAKER 1: OK.
Mikä on pitkä?
>> Yleisö: [kuulumaton].
>> SPEAKER 1: Joo, kaksinkertainen int.
Kyllä.
>> Yleisö: [kuulumaton].
>> SPEAKER 1: Pitkä [kuulumaton].
Ja sitten pitkä pitkä on kaksinkertainen.
>> Yleisö: Ei, ei.
Pitkä on vain int.
Se riippuu arkkitehtuuri ennen [äänetön]
ja int ovat samankokoisia.
[Äänetön].
>> SPEAKER 1: Niin pitkä ja int ovat samat.
Ja sitten pitkä pitkä on kaksinkertainen int.
Cool.
Ja sitten, mikä on viimeinen tyyppi?
>> Yleisö: Pointer.
>> SPEAKER 1: Joo, niin opimme hieman siitä viitteitä.
Ja riippumatta siitä, mitä osoitin on osoittaa to-- se voisi olla char tähti
tai int star--
se on aina 4 tavua osoitin.
Kysymyksiä siitä?
Kyllä?
>> Yleisö: [kuulumaton]?
>> SPEAKER 1: Niin pitkä ja int ovat sama tässä CS50 laitteen.
>> Yleisö: Laite on täysin vaihdettavissa.
>> SPEAKER 1: Joo.
Niin pitkään pitkään on kaksinkertainen int.
>> YLEISÖ: Tämä on 32 bittinen?
>> SPEAKER 1: 32 bit, joo.
>> Yleisö: Niin [kuulumaton]?
>> SPEAKER 1: Kyllä, jos se ei nimenomaisesti sanoa, et
pitäisi ottaa 32-bittinen.
>> Yleisö: Se sanoisi jotain kuten olettaen
arkkitehtuuri kuin laite.
64 bittinen, ainoat asiat, jotka muutos ovat pitkät ja viitteitä.
Molemmat [kuultavissa].
>> SPEAKER 1: Niin?
>> Yleisö: Kysymys.
Niin yksi käytännön tietokilpailuja, se kysyy unsigned int.
Joten miten olisi, että määritellään alkaen int [äänetön]?
>> SPEAKER 1: unsigned ja on myös 4 tavua.
Mutta mikä on erilaista allekirjoitettu int ja unsigned int?
>> Yleisö: [kuulumaton].
>> SPEAKER 1: Oikea.
Yksi voi edustaa negatiivisia arvoja.
Mutta miten se tehdään?
>> Yleisö: [kuulumaton].
>> SPEAKER 1: Joo, se säästää 1 vähän edustamaan merkki.
Allekirjoittanut on yksi bitti edustaa merkkiä.
Ja unsigned vain on kaikki positiivisia.
>> Yleisö: OK.
Niin sanot että kaksinkertainen on kaksinkertainen float?
>> SPEAKER 1: Double on kaksi kertaa koko float, kyllä.
>> Yleisö: Miten osoitin pitkän pitkä [kuulumaton]?
>> SPEAKER 1: Eli kysymys on miten osoitin pitkä long--
miten on, että vain neljä tavua, kun pitkä pitkä sen 8 tavua.
Joten muistaa, mitä on osoitin, olennaisesti, aivan perusarvoa.
>> Yleisö: [kuulumaton].
>> SPEAKER 1: Joo, niin osoitin on vain muistipaikka.
Joten sillä ei ole väliä kuinka paljon tilaa että osoitin osoittaa.
Se tarvitsee vain 4 tavua seurata Kyseisen muistipaikka.
Muita kysymyksiä?
Cool.
>> Joten viimeinen asia on on standardi lähtö.
Sinun tulisi käyttää niitä usein riitä, että voit muistaa.
Mutta tämä on, kun käytämme printf, esimerkiksi.
Ja meillä on nämä paikkamerkeillä että kutsuttiin muodossa koodeja.
>> Joten prosenttia c nieriää, prosenttia I int, ja voimme myös käyttää prosenttia d.
Se on sama asia.
Mutta yleisesti, ja CS50 me yritä käyttää prosenttiin i.
Prosenttia f float.
Prosenttia LD pitkään pitkään ja prosenttia s merkkijono.
>> Samoin olemme käyttäneet muutaman Näiden ohjausmerkkijonoja.
Esimerkiksi kenoviiva n uutta rataa.
Tämä on juuri kun olet alustus koodi tulostaa f.
Kyllä?
>> Yleisö: Mikä prosenttia d?
>> SPEAKER 1: Eli kysymys on mitä prosenttia d?
Prosenttia d on ints.
Prosenttia d ja prosenttia i ovat samat.
>> Yleisö: Mitä eroa kenoviiva n ja kenoviiva r?
>> SPEAKER 1: Eli kysymys on mitä ero takaisku n ja
takaisku r?
Mielestäni kenoviiva r on--
>> Yleisö: Niin kenoviiva r juuri siihen, palaa rivin alkuun
ilman todella menossa uusi rivi.
Joten jos tulostat kenoviiva r ja te palata rivin alkuun
Sitten voit tulostaa enemmän tavaraa, korvaat kamaa, joka on jo
[Äänetön].
Sekä katsoo, n todella menee uuteen linja ja menee [kuultavissa].
>> SPEAKER 1: No, muita kysymyksiä?
Kunnossa.
Aion antaa sen pois Dan joka jatkaa.
>> [APPLAUSE]
>> DAN: Kaikki righty.
Niin minä puhua toisesta leveä erilaisia ​​ideoita luokka, joka on
karkeasti edustaja viikolla kaksi ja alku viikko kolme ajoa
valu, joka on vain tapa käsittelemällä arvo tietynlaisia
arvo on eri tyyppiä.
Joten voimme tehdä tämän merkkiä on ints, kelluu ints, ja
pitkä pitkät kaksinkertaistaa.
>> Kaikki nämä asiat voidaan käyttää tavoilla kohdella joitakin numeerisia arvo
miinus merkkiä kuten jotkut muut numeerinen arvo.
Joten joitakin ongelmia tämän, ja Tietenkin, joka tulee kun heität
asioita, kuten float ints.
Joten tämä on hieman outo.
Meillä on float, joka on 1,31.
Me kerro se 10000.
Ja sitten tulostaa sen int.
Mitä tämä tuotos?
10000 kertaa 1,31.
Joten 13000, on että arvaus?
>> Yleisö: Minusta se on 10000.
>> DAN: Joten olen kertomalla se 10000 ennen olen valamalla.
>> Yleisö: Oh.
Eikö siellä olla yksi 9 ja jotkut 0 numerot?
>> DAN: Saatat olla outoja numeroa.
Niin oikeassa, se on 1,3 kertaa 10000.
Joten se on 13000.
Ja tätä ylimääräistä weird--
>> Yleisö: 13,100.
>> DAN: 13,100.
Kiitos, Rob.
Ja tätä ylimääräistä weirdness--
Tämän 9,9--
on yksinkertaisesti koska tämä valu päätyi pyöristäminen alaspäin, jos
sen ei pitäisi olla.
Joo.
>> Yleisö: valu tapahtuu kun mitään muuta?
>> DAN: Eli koska olen tätä tulosta, se tekee tämän kerto ennen sitä
tekee tämän valu.
>> Yleisö: [kuulumaton].
>> DAN: Mielestäni olisi heittää ensin, joo, mikä olisi 10000.
Entä muuta?
Cool.
Tämä on siis 13099.
Miksi näin tapahtuu?
Epätäsmällisyys.
>> Kellukkeet eivät ole täydellisiä.
Ne voivat edustaa vain numeroita joitakin merkittäviä lukuja.
Joten jos me tulostaa 8 sig viikunat tämän juoksun, saamme eräänlainen
ruma näköinen numero.
Ja se johtuu 1,31 ei voi tarkasti edustaa yksinkertaisella
valtuudet kaksi konetta.
Joten se päätyy ottaen lähimpänä arvata, mikä päätyy
on hieman alhainen.
Järkeä?
OK.
>> Nyt kytketty ovat eri tavalla teet ehtolauseet jossa kaikki
välitämme on yksi muuttuja.
Joten tässä erityisessä esimerkissä olemme saada kokonaisluku käyttäjä.
Ja sitten me tarkastelemme mitä se kokonaisluku on.
Oletettavasti se on numero yhdestä neljään.
Sitähän kysymme.
>> Niin et kytkin muuttujan nimi.
Sitten asetat tapauksissa mahdollista arvoja se voisi olla.
Joten jos toinen, sano se alhainen.
Ja sitten rikot ulos kytkimen kunnossa niin
et jatka.
>> Seuraavassa case--
joten asia kaksi ja asia kolme--
jos se on asiassa kaksi se vain putoaa alas ensimmäinen rivi koodia se pitää kanssa
Isojen kolme kunnes se näkee tauko.
Joten syy saat asian yksi tulostaa vain vähän, koska en
on tämä tauko täällä.
Jos minä vaikkapa huomiotta tämä break-- jos Heitin tämän breakaway--
se tulostaa alhainen, ja niin se olisi tulostaa keskellä, ja sitten se rikkoisi.
>> Joten tauot ovat tärkeä osa kytkimen olosuhteet ja
niiden pitäisi olla siellä.
Tapauksista, joita ei mainita erikseen hoidetaan oletus
tapauksessa kytkin ja pitäisi heittää.
>> Yleisö: Eli 1, 2, 3, ja 4 olisivat n?
>> DAN: Arvot, että n voi olla.
Kyllä.
Joo?
>> Yleisö: Joten kun olet että [kuulumaton]?
>> DAN: Olisit tulostaa alhainen, ja sitten se tulostaa keskellä, ja
niin se olisi tauko.
>> Yleisö: Miksi se tulostaa keskimmäinen jos [äänetön]?
>> DAN: Joten kaikki alle tapaus ennen taukoa kuuluu.
Joten kyseessä yksi print on alla tapaus yksi kuten tämä seuraava tulosta.
Joo?
>> Yleisö: [kuulumaton]?
>> DAN: Eli tämä numero on vain tietyn arvo että tämä muuttuja
voi, eikö?
Onko järkeä?
Joo.
>> Yleisö: [kuulumaton]?
>> DAN: Kyllä, kyseessä kaksi olisi tulostaa keskellä ja sitten tauko.
>> Yleisö: [kuulumaton]?
>> DAN: Mielestäni mitään?
Mitä muita tietotyyppejä voit siirtyä?
>> Yleisö: Voit vaihtaa minkä tahansa tietotyyppejä.
Mutta se vain tarkoittaa jotain yli merkkiä ja ints ja muuta vastaavaa, koska
jos olet siirtymässä osoitin että ei oikeastaan ​​mitään järkeä,
Vaihtamisen kuormia, jos se edes katsotaanpa teet näin, koska liukuluku
tarkkuus, et todellakaan halua tehdä sitä joka tapauksessa.
Joten aika paljon, vain ints ja merkkiä ja muuta vastaavaa.
>> DAN: Joo, se kun on nimenomainen arvot, että tiedät, luulen, voi olla
että kytkin on todella hyödyllinen.
Hyvä?
OK.
>> Soveltamisala on alue, joka julisti muuttuja laajennetaan.
Joten tässä vähän koodinpätkän minulla on, se olisi täynnä virheitä.
Ja syy on julistin tämän int i puitteissa tätä varten silmukka.
Ja sitten yritän viitata että i ulkopuolella, että silmukka soveltamisala.
>> Joten periaatteessa, voit ajatella soveltamisala kuin mitään, että ilmoitat
joiden sisällä joukko aaltosulkeita vain olemassa näissä aaltosulkeita.
Ja jos yrität käyttää sitä muuttuja niiden ulkopuolella aaltosulkeita, sinun
saada virheilmoituksen kääntäjä.
Joo?
>> Yleisö: Eli tämä ei toimi?
>> DAN: Tämä ei toimi, kyllä.
Strings.
String char *.
Ne ovat täsmälleen samat.
Ne ovat vain osoittimia merkkiä.
Ja kaikki jouset että sinulla pitäisi lopettaa kanssa kenoviivaan nolla, joka on vain
c sopimusta.
>> Sitä kutsutaan tyhjän päätteen.
Ja NULL--
pääoma N, pääoma U, pääoman L, pääoman minä--
ei ole sama kuin NULL terminaattori.
Tämä on osoitin.
Tämä on merkki.
Ne ovat hyvin erilaisia.
Muista se.
Se tulee olemaan tietokilpailu, luultavasti.
En ole nähnyt tietokilpailu.
Joo?
>> Yleisö: Niin NULL on vaikkapa osoitin?
>> DAN: Kyllä.
>> Yleisö: Mitä [kuulumaton]?
>> DAN: Jos sanon, malloc kutsutaan, kun ei ole tarpeeksi muistia saada
koosta riippumatta olet pyytänyt, malloc palaa NULL.
Se on pohjimmiltaan aina kun toiminto on tarkoitus palauttaa osoittimen, voit
täytyy tarkistaa vastaan ​​NULL koska NULL on melko good--
se on, tavallaan, roskat arvo.
Se on nolla niin pitkälle kuin viitteitä mennä.
>> Aina kun soittaa toiminto, joka palauttaa osoittimen.
Olet menossa haluavat tarkistaa olla Varmista, että osoitin ei ole NULL
koska NULL on hyvin yleistä.
Se on tavallaan roskat tuottoa.
Joten jos jotain ei mene oikein, vain palauttaa NULL sijaan.
>> Yleisö: [kuulumaton]?
>> DAN: Kyllä, ja se on tämä.
>> Yleisö: [kuulumaton]?
>> DAN: Spell se tästä.
Se tyhjän päätteen.
Se on pieniä N-U-L-L, jos olet oikeinkirjoitus sen.
>> Yleisö: Ja minä vain meni takaisin ja testata sitä.
Ja jos yrität laittaa liukuluku arvo tulee vaihtaa, se huutaa sinulle
sanoen lausuma edellyttää ilme kokonaisluku tyyppi.
>> DAN: Ole hyvä.
Mutta joo, mikä oli kysymys olikaan?
>> Yleisö: [kuulumaton]?
>> DAN: Eli pääoma N, pääoma U, pääoman L, pääoma L on todellinen c juttu.
On nollaosoittimen ja tahtoa vain kohdella sellaisina.
Et koskaan yritä ja oikeinkirjoituksen NULL hahmosi ja katso kaikki
muulla tavalla kuin tämä.
Joo?
>> Yleisö: Niin palaavat char max tai jotain muistiinpanoja, eikö
ilmentää sama toiminto kuten [kuulumaton]?
>> Yleisö: Niin tarkoitatte palaamassa merkkiä MAX getchar, tai
mitä se on?
>> Yleisö: Joo.
>> Yleisö: Joo, niin yleinen termi kaikki nämä asiat
ovat kiinteän pisteen arvoista.
Niin kuin palaavat int MAX GetInt ja nieriää MAX getchar, se on
pitäisi olla, okei, jos nämä asiat palaavat meille,
jotain meni pieleen.
>> Sillä osoittimet, me vain sattuu olemaan Tämän kiinteän pisteen arvo, että jokainen
sopii hänen.
Ja tämä on asia palaat kun asiat menevät pieleen.
Joten char max on mitä käytämme edustaa jotain
kuten NULL tai getchar.
>> Yleisö: Joten jos olet testaus getchar, voisitko laittaa NULL?
Olisiko, jotka tekevät eron?
>> DAN: Et voinut vain tarkistaa NULL.
Sinun täytyy tarkistaa merkkiä max koska paluuarvo toiminto on
merkki ei osoittimen.
Joo?
>> Yleisö: Tämä kysymys koskee merkkijonon pituus.
Tuleeko jo NULL merkki?
>> DAN: o
Ja se on todella miten merkkijonon pituus tietää lopettaa, koska se menee läpi
oman joukko merkkejä, kunnes se näkee NULL merkki.
Ja sitten se on kuin kaikki oikeassa, olen valmis.
>> Yleisö: [kuulumaton] viisi?
>> DAN: Hei olisi viisi.
Jep.
Joten paneelit ovat jatkuvia lohkot muistia.
Niillä on välitön pääsy sanomalla taulukon nimen ja sitten, kihara
henkselit, mitä indeksi haluat mennä to, ne indeksoidaan nollasta kautta
pituutta array miinus 1.
>> Ja he ilmoittama tyyppi asia, että olet tallentaminen
array, taulukon nimen, ja sitten koosta on, että jono.
Joten tämä on char joukko pituus kuusi, joka on näitä arvoja.
Joo?
>> Yleisö: [kuulumaton]?
>> DAN: Joo.
>> Yleisö: [kuulumaton]?
>> DAN: Jos sinulla on mitä on meneillään array jo tehty.
Joten voi määrittää tämän sen sijaan, sanoa, nieriää, mikä nimi
array on tyhjä suluissa vastaa kihara ahdin H pilkku E pilkku L pilkku L pilkulla
O pilkku NULL merkki ja kihara ahdin.
Jotka toimivat myös vakuutus.
>> Yleisö: [kuulumaton]?
>> DAN: Sitten sinun täytyy olla koon jo tehty.
>> Yleisö: [kuulumaton]?
>> DAN: Kyllä.
Kaikki righty.
Komentoriviargumentteja ovat tapa saada käyttäjän syötettä kuin
argumentit main.
Pääasialliset ottaa kaksi argumenttia.
Useita väitteitä, jota välitetään komentoriviltä ja
merkkijono vektori tai merkkijono array kaikkien argumentit.
>> Jos siis vaikkapa nimeltään toiminto kuten dot out 1 tilaa, 2 tilaa, kolme,
argc olisi 4.
Ja argv 0 olisi piste pois.
Argv1 olisi 1.
argv2 olisi 2. argv3 olisi 3, tässä nimenomaisessa tapauksessa.
Joo?
>> Yleisö: [kuulumaton]?
>> DAN: viimeinen alkio koska matriisi on pituus argc plus
yksi argB, viimeinen osa on nollaosoittimen.
Se on argc plus 1.
Joten siinä tapauksessa, että sanoin vain, että olisi argv 0 on piste pois.
argv 1 on 1. argv2 on 2. argv 3 on 3.
argv 4, joka on yksi suurempi kuin argc olisi NULL.
>> Ja se nollaosoittimen.
Kyllä.
Ja se johtuu merkkijono on char tähti on osoitin.
Joten sen on oltava samaa tyyppiä.
Joo?
>> Yleisö: Kaksi kysymystä.
Joten, mitä eroa Tämän ja GetString muu kuin yhden tyyppinen
käyttäjän moottori?
Ja kaksi, on se tallennetaan sinun miesmuistiin?
Niin kuin, GetString olisi olla [äänetön]?
>> DAN: minne se tallennetaan?
En tiedä missä se on tallennettu.
>> Yleisö: Niin, todella, tiedät miten tahansa toiminnolla voit kutsua sitä väitteet
tallennetaan pino?
Joten argc ja argv ovat argumentteja main ja ne ovat pinoon, tai oikeastaan
yläpuolella, mitä mieltä olet kuten alku pinon.
Mikä oli toinen osa Kysymyksen?
>> Yleisö: Joten mitä [äänetön]?
>> DAN: Joo, se on vain erilainen tapa saada käyttäjän syötettä.
Tämä yksi on hieman tehokkaampi ja se on kätevämpi skriptejä, koska olet
voi vain argumentteja tärkein toiminto eikä tarvitse odottaa
käyttäjille, jos sinulla ei ole mitään käyttäjille.
>> Yleisö: Ja joo, saat jouset olisi [äänetön].
Se tallentaa tavaraa tarvitset.
>> DAN: Niin?
>> Yleisö: [kuulumaton]?
>> DAN: Kyllä, argv 0 sisältää aina dot slash toiminnon puhelun.
Joo?
>> Yleisö: [kuulumaton]?
>> DAN: Kyllä, kaikki argumentit ovat päättyi NULL merkki, koska ne
ovat merkkijonoja.
>> Yleisö: [kuulumaton]?
>> DAN: Kyllä, argv argc on nollaosoittimen.
>> Yleisö: [kuulumaton]?
>> DAN: Ai niin.
Joo, anteeksi.
>> Yleisö: Niin [kuulumaton]?
>> DAN: Joten kysymys on, jos sinulla on ollut komentoriviltä dot slash dot ulos 1, 2,
olisi määrä komentoriviltä argumentit olla kaksi tai se olisi kolme?
>> Yleisö: Mielestäni ei niin väliä.
Minulla on tapana sanoa, oh, et ei läpäissyt kaikki komentoriviargumentteja kun,
ilmeisesti, soitit toimintoa.
Joten minulla on tapana ääneen sulkea toiminnon komentoriviltä
argumentit vaikka se on sisältyvät argv.
>> DAN: Mutta jos se oli test--
yeah-- ja jos sanot jotain kuten argc on yhtä suuri kuin 3,
olet turvassa seisoo.
Joo?
>> Yleisö: [kuulumaton]?
>> DAN: Uskon, että jos soittamisen sijaan tämän vuonna argc ja string argv kiinnikkeet
mutta säilyttänyt saman tyyppisiä ja soitti juuri heille jotain erilaista kuin
ja b, olisi se silti toimii?
Ja se vielä toimi, voisitte vain--
sen sijaan käyttää argc-- haluat käyttää ja b.
Joo?
>> Yleisö: [kuulumaton]?
>> DAN: Eli kysymys on GetString on aiotaan säilyttää muistin kasaan
koska GetString on char *.
Se tallentaa muistiin kasaan, koska se kehottaa nyt malloc sisällä todellinen
täytäntöönpano GetString.
OK, liikkuu.
>> Turvallisuus.
Joten olla todella turvallinen, voit luottaa ei yksi ja annat kukaan pääsyä mihinkään
tietosi, minkä vuoksi jokainen rakentaa oman koneita,
omat käyttöjärjestelmänsä, kaikki ohjelmat tyhjästä, ja ilmeisesti
Älä liitä mitään muita koneita Internetin kautta.
Joten tietokoneet ovat epävarmoja.
He todella ovat.
Meidän täytyy luottaa muihin ihmisiin.
>> Ja ajatus turvallisuuteen on, että olet yrittää rajoittaa määrää
luottamus, että tarvitset.
Ja yksi keino teette sen kautta kryptografia.
Salakirjoitus on pääosin meillä on salaisuuksia.
>> Joskus meidän on läpäistävä salaisuuksia pitkin kautta, esimerkiksi internetin tai
muita asioita.
Ja me emme halua ihmisten tietää nämä salaisuudet.
Joten me salata salaisuutemme tulee tapa että toivomme kukaan ei voi selvittää.
>> Joten me used--
läpi kurssin tämän class--
asioita, kuten Caesar salakirjoitus ja [Äänetön], jotka ovat molemmat hyvin, hyvin
turvaton tapoja salata asioita.
Ne on helppo selvittää, mitä he ovat ja mitä salaisuuksia ovat.
Todellisessa maailmassa käyttää paljon enemmän monimutkainen salausmalleja.
Ja me ei päästä paljon enemmän.
>> Virheenkorjaus.
GDB on paras.
Aion korostaa tätä uudelleen.
Käytä GDB koko ajan joka aikaa sinulla on ongelma.
Komennot, jotka ovat hyödyllisiä GDB ovat tauko, jonka ohitat joko linja
numero, funktion nimi, pääasiallisesti jos koodissa haluat lopettaa,
ja pystyttävä hallitsemaan.
>> Tulosta vie vaihteleva ja tulostaa mitä se muuttuja on, että
kohta teidän suorituksen.
Seuraava liikkuu oman suorituksen pitkin yksi askel.
Ja askel astuu sisään funktio oman suorituksen.
>> Muita asioita ajetaan, joka on, miten olet todella ajaa koodia.
Jatka toteuttaa kaikki tarvittavat toimet päästä seuraavalle taitekohta.
Ja monia, monia muita.
Tarkastella niitä.
Ne ovat suuria.
Joo?
>> Yleisö: [kuulumaton]?
>> DAN: Kyllä, joka on debuggerin.
Joten debuggeri on ohjelma, joka voit debug ohjelman.
Se ei ole ohjelma, joka etsii vikoja varten te, vaikka se olisi hienoa.
>> Ja viimeinen on minulle hakuun.
Joten tyyppisiä haku että puhuimme noin tässä luokassa ovat lineaarisia haku,
joka on vain että näytät läpi kunkin elementti hakuavaruuden, yksi
elementti kerrallaan, kunnes löydät mitä etsit tai kunnes tulet
loppuun hakua tilaa, joka kohta sanot, että et löytänyt
elementti, joka etsit.
Ja tämä vie parhaimmillaankin vakiona aika, joka on 0 ja 1 ja pahimmillaan lineaarinen
aika, joka on 0 ja n.
>> Binäärihaku, joka tarvitsee ikävä elementtejä.
Menet keskelle teidän elementtejä, onko elementti etsit
on suurempi tai pienempi kuin elementin että olet keskellä.
Se se on suurempi, sanot että pohja Etsintäsi tilaa on
nykyinen sijainti, keskellä, ja olet käynnistänyt prosessin.
Jos se on pienempi, näytät sanoa että sanot-- joo, mitä kuuluu?
>> Yleisö: [kuulumaton]?
>> DAN: Kyllä.
Minkäänlaista sort joka on opetettu luokka on reilun pelin testi.
>> [Naurua]
>> DAN: Ja se, että sinulla ei ole ollut tehdä se ongelma asettaa, se on reilua
peli testi.
>> Yleisö: Voimmeko mennä sen yli, miten to--
>> DAN: Se on mennyt ohi.
>> Kaiutin 2: todellinen koodi [Äänetön] on study.cs50.net.
Joten jos tarkastellaan käytännön ongelma vuonna yhdistämisen tavallaan sivuilta
study.cs50.net, on koodi toteuttamiseksi yhdistää tavallaan.
Joten sinun ei tarvitse toteuttaa itse tänä iltana.
Mutta varmista, että ymmärrät sen melko kuin vain ulkoa sitä.
>> Yleisö: [kuulumaton]?
>> Kaiutin 2: Yhdistämisen sort sivu study.cs50.net, on käytäntö
ongelma, että jos selaat ongelma, aivan lopussa on
ratkaisu, joka on yhdistämisen lajitella täytäntöönpanoa.
Mutta varmista, että ymmärrät sen eikä vain ulkoa se
tai kopioimalla sen alas.
>> Yleisö: Ja täysin pätevä ongelma tentti olisi
jotain tässä lista.
Mitä tämä lista näyttää jälkeen yksi askel valintojen lajitella tai
lisäyslajittelun tai mitä tahansa.
Yksi täysi iterointia luettelon.
Joten vaikka et päädy tarvitse koodia, sinun täytyy ymmärtää se
riitä, että tietää miten se menee voidaan muuttamiseksi array.
>> DAN: Siinä se minulle.
>> [APPLAUSE]
>> LUCAS: Hei kaikki.
Nimeni on Lucas.
Aion puhua rekursio, kaikki lajittelee, että olemme oppineet, ja
vähän kaikkien viitteitä.
OK?
Joten ensinnäkin, rekursio.
Mitä se tarkoittaa sanoa, että funktio on rekursiivinen?
>> Yleisö: kutsuu itseään.
>> LUCAS: OK, kutsuu itseään, joo.
Niin kuin tässä kuvassa, esimerkiksi.
Se on kuin kuva sisältä Kuvan ja niin edelleen.
Niinpä esimerkiksi, voit have-- Dan että puhui binäärihakupuu.
Yksi tapa, jolla Binäärihaku on rekursiivinen on se, että olet
yrittää löytää numero.
Niin menet keskelle.
Ja sitten tarkistaa, jos numerot on vasemmassa ja oikeassa.
>> Ja sitten jos saat selville numero on olemaan vasemmalla, se on sama
asia kuin teet haun uudelleen, mutta vain vasemmalla luettelosta.
Niin, että miten se kuulostaa kuin se on rekursiivinen.
Joten siksi teillä rekursiivinen ratkaisu yhdistää tavallaan.
>> OK, joten tässä on esimerkki.
Niin sanotaan, että haluan valita kaikki numerot 1: stä n.
En voi ymmärtää, että summa n lukumäärä on n plus n miinus 1 asti 1.
Mutta sitten, jos katson n miinus 1 plus n miinus 2 plus 1, joka on sama
asia kuin yhteen numerot enintään n miinus 1.
Voin siis sanoa summaa vastaavalla summalla on yhtä suuri kuin n sekä n: n miinus 1.
Onko järkeä?
>> Ja minäkin olisi jotain muuta nimeltään pohja tapauksessa on, että
lukujen summa ylös nollaan olisi nolla.
Niin pian kuin pääsen numero nolla, minä lopettaa laskemisen.
Onko järkeä?
>> Joten tässä on esimerkki siitä, miten Voin toteuttaa sen.
Joten minulla on tämä toiminto joissakin.
Se vie kokonaisluku n.
Joten tässä minä ensin tarkistaa, jos n on vähemmän tai yhtä suuri kuin nolla.
Joten jos se on vähemmän tai yhtä suuri kuin nolla, I palata nolla, mikä on meidän tukikohta tapauksessa.
Muuten voin vain palata n plus summa numerot
yksi n miinus yksi.
Järkeä?
OK.
>> Joten tässä mitä se näyttää.
Sinulla on summa 2 tasavertaisten 2 plus summa 1.
Ja jotkut 1 on 1 plus summa on 0, joka on 0.
Järkeä?
Joten jos katsomme pino sinun ohjelma, tämä on sitä miltä näyttää.
>> Ensinnäkin meillä on päätehtävä.
Ja sitten päätehtävä nimeltään summa 2.
Ja sitten summa 2 aikoo sanoa, oh, summa 2 = 2 plus summa yhden.
Joten lisään summa 1 pinoon.
Ja summa 1 on menossa soittaa summa 0, joka on myös menossa lisättävä
pinoon.
Ja sitten jokainen näistä ne, jotka ovat toisen päälle on palattava
ennen muuta niitä voi pitää käynnissä.
>> Niinpä esimerkiksi tässä, summa 0, Ensimmäinen, aikoo palata 0.
Ja valitse summa 1.
Sitten summa 1 on menossa palaa 1 summa 2.
Ja lopuksi, summa 2 on menossa palata 3 to main.
Onko järkeä?
>> On todella tärkeää ymmärtää, miten pino toimii ja yrittää
onko se järkevää.
OK, joten lajittelu.
Joten miksi lajittelu tärkeää, ensinnäkin?
Miksi meidän pitäisi välittää?
Kukaan?
Anna minulle esimerkki?
Joo?
>> Yleisö: [kuulumaton].
>> LUCAS: Joo, OK.
Niin voit etsiä tehokkaammin.
Se on hyvä tapa.
Niinpä esimerkiksi, meillä on paljon asioita, todella, elämässämme, että
lajitellaan.
Esimerkiksi sanakirjoja.
>> On erittäin tärkeää saada kaikki sanat jonkinlainen jotta voimme
voi käyttää helposti.
Niin, että mitä hän sanoi.
Voit etsiä tehokkaammin.
Ajattele kuinka vaikeaa olisi, sanakirja, jossa sanat ovat
satunnaisessa järjestyksessä.
Sinun täytyy katsoa, ​​melko paljon, jokaisesta sanasta, kunnes löydät
Sana, joka etsit.
>> Jos käytät Facebook myös, kun etsit ystävillesi, olet
tulette näkemään, että Facebook laittaa lähempänä kaverin päälle niistä
että et puhu niin paljon.
Jos menet aina pohjaan kaverilistallasi, olet menossa nähdä
ihmiset että et todennäköisesti ole edes Muista, että olet ystävien kanssa.
Ja se johtuu Facebook lajittelee ystäväsi mukaan, miten
sulje olet heille.
>> Niin järjestää tietoja.
Myös Pokemon.
Niin näet, että kaikki Pokemons ovat numeroita.
Ja se on kuin helppo tapa käyttää dataa.
>> Yleisö: Pääsy Pokemon.
>> LUCAS: Joo.
>> Yleisö: [kuulumaton].
>> LUCAS: Jep.
OK, joten valinnan tavallaan.
Valinta tavallaan tulee valita pienin lajittelemattomat arvo luettelon kussakin
kerran jokaisen iteraation.
Se on ikään kuin eräänlainen että teet päässäsi, kun yrität
lajitella listan käsillä.
>> Periaatteessa sinun tarvitsee vain näytät että pienin luku.
Laitat sen lajitellun luettelon.
Ja sitten etsiä seuraavaksi pienin numero.
Ja sitten sinun pitää tehdä , että ja niin edelleen.
>> Joten valinta tavallaan on pohjimmiltaan sinua valitse aina pienin
lajittelemattomat arvo.
Laita lopussa lajiteltu osa luettelosta.
Ja pitää näin.
Joten nopeasti mitä tämä näyttää.
Joten tässä on lajiteltu ja lajittelemattomat lista.
>> Joten lajitella luettelon, se on aluksi tyhjä.
Ja sitten aion valita Pienin luku täällä, joka on 2.
Niin saan numero 2 ja laitoin edessä luettelosta.
Ja sitten odotan seuraavaksi pienin -elementti, joka on 3.
Joten laitoin sen lopussa on järjestetty luettelo.
Ja sitten pitää tehdä, että.
Minusta 4 ja laita se lopussa.
Etsi 5 ja laita se lopussa.
>> Ja katsokaa miten kaikki niistä hetkistä, jotka Sanon laita se lopussa on,
pohjimmiltaan, vaihtamalla kaksi arvoa.
OK?
Ja sitten viimeinen, juuri on yksi elementti.
Niin se on jo järjestetty.
>> OK, joten lisäyslajittelun.
Lisäyslajittelun olet menossa on myös että asia ottaa lajitellaan ja
lajittelemattomat lista.
Ainoa asia on, että joka kerta, lisäät elementti lajiteltu
luettelossa, voit vain poimia elementti, joka on edessä lajittelemattoman luettelon.
Ja sitten aiot löytää mitä asennossa se olisi lajitellut
osa luettelosta.
>> Katsotaan, mitä tämä on niin Tämän järkevämpää.
Joten aluksi, esimerkiksi Yritän lisätä numeron kolme
lajitellut osan luettelosta.
Joten lista ei ole mitään.
Joten voin vain laittaa numero 3.
>> Nyt haluan lisätä numeron 5 lajitellut osan luetteloon.
Joten katson numero 5.
Olen huomannut, että se on suurempi kuin 3.
Tiedän siis, että sen on oltava jälkeen 3.
Joten laitoin 3 ja 5.
>> Sitten haluan lisätä numero 2.
Olen huomannut, että numero 2 on oikeastaan kestää molemmat 3 ja 5.
Joten en oikeastaan ​​tarvitse laittaa kaiken tavalla listan alkuun.
Joten minun on, tavallaan, siirtää kaikki elementtejä lajiteltu lista niin voin
tehdä tilaa numero 2.
>> Sitten näen numero 6.
Näen, että se tulee tehdä 5.
Joten laitoin sen sinne.
Ja lopuksi, katson numero 4.
Ja huomaan sen pitäisi olla välillä 3 ja 5.
Ja sitten laitoin sen sinne ja muutos kaikki muut elementit.
Järkeä?
>> Kupla Lajittele.
Joten kupla lajitella on pohjimmiltaan mitä olet menossa do-- kutsumme kupla
lajitella koska käyt läpi list-- se on oikeastaan ​​parempi, jos vain näyttää
pidät this--
ja aiot vertailla vierekkäiset numerot.
Ja aiot vaihtaa niiden asemia, jos ne eivät ole
oikeassa järjestyksessä.
>> Joten periaatteessa, mitä tulee tapahtua on täällä, esimerkiksi
sinulla on 8 ja 6.
Tiedät, että lajitellut tilaus todella olla 6 ja 5, eikö?
Joten aiot vaihtaa tilauksia.
Sitten näen 8 ja 4 täällä.
Ja minä tehdä sama asia.
Olen vaihtaa taas.
Ja lopuksi, 2 ja 8.
Olen myös vaihtaa niitä.
>> Sitä kutsutaan Bubble Järjestä koska sen jälkeen kukin näistä toistojen, itse asiassa,
eniten listassa saa kaikki tapa luettelon loppuun.
Onko järkeä?
Koska se pitää vaihtamalla se ja siirtämällä sitä oikealle.
>> OK, joten tämä on toisen iteroinnin.
Se olisi sama asia.
Teen yhden swap ja sitten viimeinen.
Olen, että ei ole olemassa swap ja luettelo on järjestetty.
Joten Bubble Lajittele, olemme periaatteessa pitää läpi listan ja vaihtamalla
asioita, kunnes huomaan, että en ole tehnyt kaikki swap tee sitä iteraatio, joka
tarkoittaa, että lista on jo järjestetty.
Järkeä?
>> Puhutaanpa hieman noin käyntiaika.
Joten te kaverit muistaa Big O, Omega, ja Theta?
Joo?
OK, mikä on Big O ensinnäkin?
>> Yleisö: [kuulumaton].
>> LUCAS: Joo, sitä kutsutaan pahimmassa tapauksessa runtime, mikä tarkoittaa vain sitä, että se on
kuinka paljon oletat ohjelman ottaa juosta.
Kuten, mitä of--
Tässä case-- n.
Elementtien määrä luettelo pahimmassa tapauksessa.
Kuten, että pahin mahdollinen tapaus.
>> Joten Bubble Lajittele, esimerkiksi meillä on Big O n neliö.
Miksi meillä on niin?
Miksi Bubble Järjestä Big O n neliö?
>> Yleisö: [kuulumaton].
>> LUCAS: Joo, niin pahimmassa tapauksessa tulee että minun täytyy tehdä n toistojen.
Näin ollen jokainen toistojen on menossa tuo suurin alkio loppuun
luettelon.
Joten pahimmassa tapauksessa on se, että minulla on sitäkään n kertaa.
Ja jokaisesta niistä hetkistä, joudun do n swap koska minun täytyy verrata
kukin kaksi elementtiä.
Joten siksi se on n potenssiin koska se on n kertaa n.
>> Sitten valinta tavallaan on myös n neliö koska jokaisen iteraation, joudun
tarkastellaan jokaisen elementin luettelossa.
Ja sitten löytää pienin, mikä tarkoittaa, että minun täytyy
katsoa läpi n elementtejä.
Ja minun täytyy tehdä, että n kertaa, koska Minun täytyy valita kaikki n elementtiä.
>> Lisäyslajittelun on myös n neliö koska pahimmassa tapauksessa tulee
olla yksi, minun täytyy lisätä n numeroita, eikö?
Joten tiedän jo, että aion olla n toistojen.
Mutta jokainen näistä numeroita, jos olisin katsomaan kaikki numerot
lajiteltu lista ja laittaa se kokonaan edessä, joka on n neliö
koska se on n kertaa n uudelleen.
Järkeä?
Entä omega?
>> Yleisö: [kuulumaton].
>> LUCAS: Se on parhaassa tapauksessa.
Niin se on, ja paljon kertaa, lajittelu, parhaassa tapauksessa on
kun lista on jo järjestetty.
Joten et todellakaan ole tehdä mitään.
Kupla Lajittele on paras skenaario on n.
Tiedättekö miksi?
>> Yleisö: [kuulumaton].
>> LUCAS: Joo, jos pidät kirjaa onko tietoa annoksesta ollut swap tai
ei, jos sinulla on jotain asetettu totta, jos oli iteraatio, jos
Lista on jo järjestetty, pohjimmiltaan, mitä tulee tapahtumaan on Aion
kokeile vaihtaa paria vierekkäisten elementtien.
Aion nähdä, että ei ole swap.
Ja minä vain palata heti.
>> Niin se tarkoittaa, että minun oli pakko käydä listan läpi kerran.
Joten se on n, koska odotan kello n elementtejä.
Miksi valinta järjestä n neliö?
>> Joo, vaikka luettelo on järjestetty muun jokaisen iteraation valinta lajitella, minä
on valittava pienin alkio.
Niin se tarkoittaa, että minun täytyy ulos etsimään lainkaan elementtejä lajittelemattoman
luetella ja löytää pienin jokaisen iteraation.
Onko järkeä?
>> Ja lisäys miekka on N, koska tapauksessa, että yritän lisätä
numerot ja kaikki numerot, kun yrittää lisätä niitä, näen että he
ovat oikeassa asennossa.
Minun ei tarvitse mennä tarkistaa kaikki muut numerot lajittelemattoman luetteloon.
Joten siksi se on n.
Järkeä?
Ja mikä on theta?
>> Yleisö: [kuulumaton].
>> LUCAS: Mitä, anteeksi?
Sano se uudestaan.
>> Yleisö: [kuulumaton].
>> LUCAS: Aivan.
Voit siis nähdä, että vain valinta tallennettu Merge sort on thetas.
Ja se johtuu siitä, sinulla on vain theta jos molemmat Big O ja Omega ovat samat.
OK.
Ja lopuksi, yhdistää lajitella IS log n.
>> Ja sitten, kun Dan sanoi, Merge sort on ikään kuin samalla tavalla kuin
teet binäärihakupuu.
Niin saat listan.
Ja aiot leikata kahtia.
Ja sitten leikkaa ne pienemmissä puolikkaat.
Ja sitten yhdistää ne.
Te muistaa, että oikea?
OK, kuten hän sanoi.
>> OK, osoittimet.
Joten mikä on osoitin?
>> Yleisö: [kuulumaton].
>> Lucas osoite.
OK.
Tiedän, että David näyttää kasan videoita Binky ja asioita osoittaen
toisiaan.
Mutta haluan ajatella viitteitä pelkästään osoitetta.
Joten se muuttuja, joka on menossa tallentaa osoitteesi.
>> Niin se on juuri tämä erityinen muuttuja että on neljä tavua pitkä.
Muista, että osoitin jotain on aina neljän tavun pituisia meidän 32-bittinen
konetta niin, että tapauksessa, jossa laite.
Ja se vain on paikalla muuttujan sisälle.
>> OK, joten ei tämä muisti, periaatteessa.
Joten jokaisen lohkon muisti todella on merkki, joka on osoite
slotty muistia.
Niin se tarkoittaa, että voin olla osoitin osoittaa
Minkä tahansa näistä osoitteista.
Joten miksi käytämme viitteitä on jos minun täytyy muistaa sijainnin
että tietty muuttuja on muisti.
>> Ja te muistaa, että yksi niistä tapauksia oli jos minulla on funktio
jos olen todella haluavat sinun swap reals, olen itse
täytyy lähettää osoittimen.
Ei muuttuja.
Onko teillä muistaa, että?
Ero between--
mikä on nimi?
Soittaminen arvo ja soittamalla viittaamalla, eikö?
>> OK, joo.
Niin soita arvosta.
Kun vain lähettää muuttujan toimiakseen olet vain lähettämällä arvoa.
Niin olet todella lähettävät kopio muuttujan.
Ja ohjelma voisi vähempää noin jos sama muuttuja todella
tekee kopion.
>> Ja soittaa tarkoittaa sitä, että Olen oikeastaan ​​lähettämällä jäljennös
osoitin, että muuttuja.
Niin se tarkoittaa, että olen lähettäminen sijainnin että muuttuja.
Joten tilannetta olen sijainti muuttuja, kun soitan toiminto
osoittimet, olen voinut todella vaihtaa tietoja, jotka oli tärkein.
Järkeä?
>> Vaikka osoitin on kopio, osoitin on edelleen todellinen osoite
muuttuja että haluan muuttaa.
Järkeä?
>> Joten luoda viitteitä.
Muista, osoitin aina tyyppi, että se on suunnattu
ja sitten tähti.
Ja sitten laitat nimen.
Niin muista, että aina kun sinulla on mitä tähti, se on kuin osoitin
että mitä tahansa muuttujan kirjoita että sinulla oli.
>> Joten täällä tähden, esimerkiksi, se on osoittimen ja kokonaisluku.
Ja sitten nieriää tähti on osoitin nieriää tähti ja niin edelleen.
Joo?
>> Yleisö: Mitä jos meillä osoitin n tähti x.
Tiedän, että luodaan osoitin x.
Se myös julistaa x kokonaisluku?
>> LUCAS: OK, joten kun sanot n tähti x, et ole luomassa osoitin
muuttuja x.
Luot osoitin nimeltä x.
>> Yleisö: [kuulumaton].
>> LUCAS: Eli kun sanon n tähti x, olen sanomalla, hei, muistin, aion
saada yksi näistä kolme laatikkoa.
Ja aion sanoa, että tulee olemaan x, joka on
olemaan osoitin.
Ja jotain mielenkiintoista osoittimet on, että sanomme, että heillä on
4 tavua 32-bittinen kone.
Ja syy siihen on, koska 4 tavua ovat 32-bittiä.
>> Ja koneita, jotka ovat 64 bittiä todella on viitteitä osoitteet
, jotka ovat 64 bittiä pitkä.
Niin se tarkoittaa vain sitä, että koko osoitteet kone on erilainen.
>> Joten viittaaminen ja Dereferencing.
On olemassa kaksi operaattoria, jotka Teidän pitäisi muistaa.
Ensimmäinen on et-merkki.
Toinen on tähti.
Älä hämmentyä tämän tähden ja tämä tähden, koska muistaa, että
Tässä tapauksessa sinun on n tähden.
>> Se on kuin koko juttu yhdessä.
Ei ole n tila tähti.
Niin se tarkoittaa, että se tyyppi.
Muista, että kun olet muuttuva tähti, olet
puhumme tyyppi.
>> Kun sinulla on vain tähti ja sitten muuttujan nimi, se tarkoittaa, että
olet dereferencing osoitin, joka tarkoittaa, että etsit
osoitin, löytää osoite on osoittaa, menossa kyseiseen osoitteeseen,
ja katsot aina sinulla on siellä.
Joten kerron oppilailleni, että kun on tähti, sinun pitäisi ajatella, että se on
lyhenne sisällöstä.
>> Joten jos sinulla on osoittimen ja te do tähti osoitin, se on
sisällöstä osoittimen.
Niin menet mitä se osoittaa ja tarkastella jatkuvasti sisältöä.
Ja et-merkki on sama asia kuin osoite.
>> Joten jos minulla on vaihteleva A-- kuten, katsotaanpa sanoa, että tein int vastaa 3--
jos haluan löytää osoitteen, joka muuttuja muisti, voin vain tehdä
et-merkki.
Joten se osoite.
Järkeä?
>> Joten tässä on esimerkki.
Tämä puuttuu int b ja int c.
Joten int vastaa 3 tarkoittaa, että Aion mennä muistiin.
Ja aion löytää raon ja laita numero 3 täällä.
>> Ja sitten int b vastaa 4.
Aion tehdä saman.
Siirry muistiin ja laittaa numero 4 yksi kohdista.
Ja int vastaa 5.
Etsi toinen laatikko ja laittaa numero 5.
>> Joten mitä tämä linja teet? n tähden pa vastaa et-merkki.
Joten ensinnäkin, n tähden pa.
Mitä se tekee?
>> Yleisö: [kuulumaton].
>> LUCAS: Joo, niin n tähden pa, ensimmäinen, julistaa osoitin nimeltään pa.
Ja sitten se määrittämällä arvo että osoitin on osoite.
Niin et-merkki.
Sitten, jos en tähti pb, mikä on tähti pb?
>> Anteeksi.
Tämä on myös kateissa. n tähti pb.
Tarkoitan tähti pc.
Olen niin pahoillani.
Se on sama asia.
Mutta nyt olen hyvä ar luodaan osoitin to b ja sitten osoitin c.
Joo?
>> Yleisö: [kuulumaton]?
>> LUCAS: Kyllä.
Joten jos menet muistia ja menet laatikko, joka on tunnuksen PA,
olet todella menossa katso osoite.
OK?
Joo?
>> Yleisö: [kuulumaton]?
>> LUCAS: Joo, osoitin on osoite.
Älä koskaan unohda sitä.
Se on kuin tärkein osa noin viitteitä.
On tallentamiseen ja osoite joitakin muuttuja.
Entä muuta?
Muita kysymyksiä?
OK.
>> Joten Osoittimet ja rakenteet.
Muista, että kun teen int array 3, pohjimmiltaan, mitä olen tekemässä on olen, jollaisia
on, todetessaan osoitin.
Joten valikoima on ikään kuin osoitin tiettyyn paikkaan muisti, johon minä
varattu kolme paikkaa kokonaislukuja.
Onko järkeä?
>> Joten kun en int array 3, mitä olen teet, pohjimmiltaan, luo kolme
lähtö muistiin.
Joten minä vain löytää kolme paikkaa muistiin.
Joten jos en sitten tähti array, se periaatteessa sitä sisältöä array,
eli en poistaa osoittimen, menen siihen paikkaan, että se osoittaa,
ja laitoin numero yksi.
>> Ja sitten, jos en tee tähti array plus 1, se on sama asia kuin teet array
kiinnikkeet yksi, mikä tarkoittaa vain menen paikka, että se on suunnattu.
Ja sitten plus 1 merkkeihin minua siirtymään yhden paikan.
Joten menen tässä asennossa, todella, ja laittaa numero kaksi.
>> Ja sitten lopuksi, kun en array plus 2, menen missä
valikoimaan on suunnattu.
Ja sitten siirtyä muistilohkoja.
Ja sitten laitoin numero kolme täällä.
Joo?
>> Yleisö: Eli tähti array on yksinkertaisesti sanoen ensimmäinen piste.
Ja voit lisätä 1, vain koska olemme vain todella
löytymistä että ensimmäinen osoite.
>> LUCAS: Joo.
Miksi esimerkiksi sanoa array 0, array 1, ja array 2?
Sanon, miksi teet 0, 1, 2, 3 sijasta 1, 2, 3?
Yksi syistä on, yksi, tietokone ohjelmoijat haluavat aloittaa
laskien 0.
Kaksi johtuu kun teet array 0, se on sama asia kuin teet array
plus 0, mikä tarkoittaa menen että kanta, enkä
ohita mitään muistilohkoja.
Joten en vedä mitään muistilohkoja.
Joo?
>> Yleisö: [kuulumaton]?
>> LUCAS: Joten hän kysyy, mikä on ero tekee
tämä tai tekee malloc.
Yksi eroista on, että int array 3 on luoda
array pinoon.
Ja kun teen malloc, se luo kasaan.
Onko järkeä?
>> Joten miten malloc todella toimii?
Joten miksi me edes tarvitse käyttää malloc?
Kääntäjä minkäänlaista laskelmaa kaikki muuttujia, jotka olet julistanut.
Hän luo tilaa kaikille Heistä pinossa.
Joten kaikki muuttujat ovat menossa olla jossain pinossa.
Joten tässä on ympäristön muuttujia.
>> Joten periaatteessa, tilaa niille muuttujien muistiin on varattu klo
koota aikaa.
Niin se tarkoittaa, että tietokoneessa on tietää kaikki nämä muuttujat
etukäteen.
Se ei tarvitse tietää, mitä arvoa aiot laittaa niitä.
Mutta sen täytyy tietää, miten paljon muistia tarvitset.
>> Mutta nyt sanotaan, että esimerkiksi luot taulukon tai ottamalla
merkkijonon että käytät käyttäjältä.
Et tiedä kuinka kauan merkkijono tulee olemaan, esimerkiksi.
Joten et tiedä tarkalleen, kuinka monta muistilohkoja voit jakaa, eikö?
>> Joten se ei todellakaan järkevää voit sanoa laittaa 100 merkkiä.
Ja mitä sitten, jos käyttäjä kirjoittaa 150?
Olet menossa ruuvata.
>> Joten periaatteessa, et voi olla varma siitä, miten paljon muistia sinun tarvitse varata
kun käännät ohjelman.
Vain tietää, että ajoaika.
Joten siksi sinulla kasaan.
Joten kasaan joutuu muisti että olet jaettaessa aikana
Ohjelman keston käynnissä.
>> Joten periaatteessa, kun teet malloc, mitä teet on kohdentaa muistia
runtime, mikä tarkoittaa, että olet päättää juuri sillä hetkellä, kun
pitäisi olla, että muisti.
Niin, että kun olet sen jakamisesta.
Onko järkeä?
>> Joten muistakaa, pino on muuttujien että luodaan käännöksen yhteydessä.
Ja sitten kasa on muuttujien että luodaan as you go
jossa malloc, esimerkiksi.
>> Yleisö: [kuulumaton]?
>> LUCAS: Niin GetString on menossa soittaa malloc.
Saanen puhua malloc, ja Selitän GetString.
Joten malloc on sama asia kuten muistin jakamista.
Joten se tulee kohdentaa muisti kasaan.
Ja se tulee palauttaa osoittimen jos kyseinen muisti on varattu klo.
>> Joten kun do--
täällä example--
n tähti osoitin.
Ja sitten osoitin vastaa malloc koko tuumaa kertaa 10.
Olen luomassa osoitin.
Ja sitten olen osoittamalla, että osoitin arvo on osoitin, joka malloc
antaa minulle.
>> Joten pyydän malloc voit jakaa tilaa 10 kokonaislukuja.
Sitähän se sanoo.
Ja malloc antaa minulle takaisin osoitin siihen paikkaan.
Järkeä?
OK.
Minä Ja GetString on pohjimmiltaan tekee soittaa malloc joten voit jakaa
muistiin ajon aikana.
>> Muista aina tarkistaa null koska malloc aikoo palata null
jos se ei voi varata muistia.
Sanotaan, että pyydät naurettava muistin määrä.
Tietokoneesi ei tule olemaan mahdollisuus käyttää niin paljon.
>> Joten malloc on juuri menossa palata null.
Joten muista aina tarkistaa, jos osoitin, että sait malloc on
null vai ei, koska jos se on, saatat voidaan dereferencing osoittimen ja
aiheuttaen puoli viat.
Ja lopuksi, älä unohda vapaa muisti.
>> Malloc luo muisti kasaan.
Ja sinun täytyy vapauttaa muistia ennen ohjelman päättymistä.
OK, siinä kaikki minulle.
Anteeksi, Rob.
Kiitos.
>> [APPLAUSE]
>> LUCAS: Viimeisiä kysymyksiä ennen Rob tulee?
Ei?
Joo?
>> Yleisö: En nähnyt tämä verkossa.
Oletko ladannut sitä vielä?
>> LUCAS: Mielestäni Dave on lataamalla sen pian.
>> DAVE: Se on lähetetty.
>> LUCAS: Se tulee olemaan verkossa.
>> Yleisö: Se riippuu.
>> LUCAS: Se menee?
OK.
Joo?
>> Yleisö: [kuulumaton]?
>> LUCAS: Kyllä, sinun tulisi vapauttaa kaikki muisti, joka laitetaan kasaan.
>> Yleisö: [kuulumaton]?
>> LUCAS: Kyllä.
Aina, kun on kulttuuri malloc, sinulla pitäisi olla kulttuuri ilmaiseksi
kun lopetat että muuttuja.
Joten malloc ja ilmainen ovat aina yhdessä.
Heidän parhaita ystäviä.
Joo.
Rob?
>> ROB: Menen nopeasti.
Ja myös video tulee sietää.
Minulla on mic.
>> OK, joten viikolla viisi tavaraa.
Ensimmäinen asia, meillä on pino.
Niin muista, että on olemassa vain yksi pino frame per aktiivinen funktiokutsuna.
Näemme, että toinen.
Ja myös muistettava, mitä todella menee kussakin pinokehys aiotaan
paikalliset muuttujat toimintojamme, argumentteja, jotka siirretään osaksi
toimintoja, sekä pari muita asioita et todellakaan
tarvitse murehtia.
>> Joten tässä on esimerkki ohjelmasta, jossa, huomautus, tärkein on printfing paluu
arvo foo 4.
foo on vain aio palata arvo bar 4 pilkku 6.
Ja palkki tulee asettaa joitakin paikallisia Muuttuja n yhtä suuri kuin 4 kertaa 6.
Ja sitten palata n.
>> Joten katsokaamme pinon koko todellinen iteraatio tämän ohjelman.
Niin siellä alareunassa meidän pinon.
Muista, että pino kasvaa.
Joten alareunassa meidän pinon, me on pino runko tärkein.
Kun ohjelma käynnistyy, tärkein on aina menossa olevan
alareunassa meidän pinon.
>> Ja mitä on sisällä meidän pino runko tärkein?
Joten vaikka ei ole paikallista muuttujat tärkein, kuten aiemmin sanoin,
olemme argc ja RGV vie tilaa sisällä tärkein pinokehys.
Joten tärkein on nyt menossa soittaa toiminto foo.
Ja se tarkoittaa foo on menossa saada oma pino runko.
>> Joten nyt olemme sisällä funktio foo.
Ja mitä pitää mennä foo pinokehys?
No, foo on argumentti n.
Ja n on 4, koska niinhän Tärkein kulkee kuin foo väitettä.
>> Joten nyt foo on menossa soittaa bar.
Mikä on baari olemaan sisällä sen "pinokehys?
Se on x yhtä suuri kuin 4 y yhtä suuri kuin kuusi.
Eikä siinä kaikki, että aiomme olla vuonna pinokehys koska baari
myös paikallinen muuttuja n.
Ja n aiomme asettaa yhtä 24.
>> Nyt baari on menossa palauttamaan n.
Joten baari on palaamassa 24 pinokehys foo.
Ja koska baari on nyt palaamassa, että tarkoittaa, että me popping pinokehys
Bar pois pinosta.
Joten kaikki muistin että baari oli käyttäen on nyt pinosta.
>> Nyt foo on myös menossa palata 24 to main.
Joten nyt foo on palaamassa, muisti että foo käytti sen "
pinokehys on myös mennyt.
Ja nyt tärkein on menossa soittaa printf.
Joten printf on vain yksi toiminto.
Kun vaadimme printf, se tulee olemaan toinen pino runko printf
funktiokutsua.
>> Mitä me ohimennen printf?
Sitähän menevänsä sen pinokehys.
Ainakin, olemme ohimennen että prosenttia i kenoviiva n ja
väite 24.
Voisi olla enemmän se pinokehys jos printf sattuu käyttää joitakin
paikallisia muuttujia.
Emme tiedä.
>> Mutta kaikki menee printf: n pinokehys.
Se tulee suorittaa printf.
Sitten printf on tehty.
Se palaa.
Lopuksi tärkein tapahtuu.
Tärkein palaa.
Ja sitten meidän ohjelma on tehty.
Joo?
>> Yleisö: Näetkö [kuulumaton]
perustelut [kuulumaton]
parametrit?
>> ROB: Niin on hiuksenhieno ero välillä argumentteja ja parametrit.
Ja todella, yhteistä puhua, ihmiset yleensä vain sekoittaa niitä koko ajan.
Mutta parametrit ovat virallisia nimeksi asioita.
>> Joten argc ja argv ovat parametrit tärkein.
Argumentit ovat mitä oikeastaan kulkea kuin parametrit.
Joten ei kun soitan foo 4, 4 on argumentti olen ohimennen.
Ja parametri n, sisällä foo, vie arvoon 4
koska 4 oli argumentti.
>> Yleisö: [kuulumaton]?
>> ROB: n on paikallinen muuttuja bar.
n on edelleen paikallista aikaa foo, mutta se parametri fooksi.
Se ei ole paikallinen muuttuja.
Joo?
>> Yleisö: [kuulumaton]?
>> ROB: foo on vain soittaa bar ja palaamassa mitä bar palaa.
>> Yleisö: [kuulumaton]?
>> ROB: Joo, vain nähdä useita pino kehyksiä.
Joo?
>> Yleisö: Miksi foo nimeltään ennen printf?
>> ROB: Miksi foo kutsuttiin ennen printf?
Niin voisin olla, vaan tehdä jotain kuten int x vastaa foo 4
ja tulostaa x.
Mutta sen sijaan, minä yhdistetty funktio kyseenalaistaa printf argumentti.
>> Mutta huomaa, että emme voi oikeastaan suorittaa puhelun printf kunnes
selvittää, mitä elintarvikkeita 4 on.
Joten aiomme arvioida tätä.
Ja vain kerran se on tehty menossa palata ja arvioida tätä.
Joo?
>> Yleisö: Koska molemmat bar [kuulumaton]
arvo, miksi emme ole [kuulumaton]?
>> ROB: He täysin pitäisi olla int.
Jota ei ole pyydetty yli useita kulkee.
Niin se olisi int baari ja int foo koska nämä molemmat
ovat palaamassa kokonaislukuja.
Void on vain, jos he eivät aio palata todellisia arvoja.
Joo?
>> Yleisö: Jos sinulla olisi viivalle Vastineeksi [kuulumaton]?
>> ROB: viivalle vastineeksi?
>> Yleisö: Joo.
Kuten jos teit printf ja [kuulumaton] olisi se tulostaa kahdesti?
>> ROB: Niin sisällä foo?
Jos meillä olisi printf täällä?
>> Yleisö: Joo.
>> ROB: Eli jos meillä olisi printf oikeus täällä, se tulostaa kerran.
Koska vaadimme foo kerran oikealle täällä, niin me osuma printf.
Sitten soitamme baari.
Ja sitten foo palaa.
Ja se on siinä.
Me vain joskus tulee printf kerran.
Joo?
>> Yleisö: [kuulumaton]
printf soittamalla foo, koska olemme ensin kutsuvan printf ja sitten luovutat
argumentteja.
>> ROB: Eli teoriassa, ei ole printf soittaa foo?
Niin ei.
Vain jotta c on menossa toteuttaa näitä asioita on, ennen kuin voimme
soittaa toiminto, kaikki argumentit toiminnon on
täysin arvioida.
Joten ei tämä täysin arvioidaan?
Kyllä, se on vain merkkijono.
Se on vain arvo.
>> Sitten meillä on täysin arvioida tätä.
Kun tämä on tehty, nyt kaikki argumentit arvioidaan.
Ja nyt voimme tehdä soittaa printf.
Joo?
>> Yleisö: Yksi kysymys.
Jos sinulla on mitätön toiminto, must Sinulla on paluu puolipiste?
>> ROB: Et paluuta puolipiste jos sinulla on mitätön toimintoa.
OK.
Joten nyt jotkut kasaan kamaa.
Joten pino on, miten aiomme käsitellä dynaamisen muistin hallintaa.
Ja tämä suoraan ristiriidassa sen kanssa, pino jota kutsuisimme automaattivaihteisto
muistin hallintaa.
>> Niin pinoon, et koskaan todella käsitellä miten paikalliset muuttujat
työnnetään ja piipahti pois kaikki Näiden pino kehyksiä ja kaikkea sellaista.
Sinun ei tarvitse huolehtia siitä.
Se on automaattinen.
Joten keko on manuaalinen.
Ja [äänetön]
tulee näistä toiminnoista malloc ja ilmainen.
>> Joten tässä on toinen ohjelma.
Kaikki me teemme on mallocing kokonaisluku.
Olemme varastointia tähti x.
Tietenkin meidän täytyy tarkistaa nähdä, jos x on nolla.
Sitten me aiomme vain asettaa mitä x on osoittaa 50.
Tulosta mitä x on osoittaa, print x, ja sitten vapaa x.
>> Joten miten tämä todella menossa katsomaan jos katsomme meidän pino ja keko?
Joten aloitamme uudelleen.
Alareunassa meidän pinon kuin ennen.
Muista, että sinun kasaan suoraan vastustaa pino?
Joten aiomme olla päälle meidän pino sinne.
>> Niin, että pohja meidän pino, meillä on meidän pino runko tärkein.
Siinä on tilaa argc, argv, ja me nyt on paikallinen muuttuja x, joka
on int tähden.
Joten aiomme kerrata ohjelman kautta.
Meidän täytyy ensiksi on puhelun malloc.
>> Joten olemme soittamalla malloc.
Malloc on funktio.
Se tulee saada pinokehys.
Mitä me ohimennen malloc?
Että tulee mennä sisälle pinon runko.
Olemme kulkee koko n, joka on 4.
Niin että johdetaan malloc.
>> Mitä malloc tehdä?
Se tarttuu meille tilaa kasaan.
Joten aiomme mennä kasaan.
Ja aiomme tarttua 4 tavua kasaan.
Joten vain antaa, että mielivaltainen osoite.
0x123 Vain teeskennellä, että on osoite, joka on kasaan.
>> Joten mikä on todella sisällä että alue muistia osoitteessa Ox123?
Garbage.
Joten emme ole tallennettu mitään siinä.
Niin pitkälle kuin tiedämme, se voisi olla mitään.
Sinun ei pitäisi olettaa se on nolla.
Se ei todennäköisesti ole nolla.
>> Joten nyt malloc palaa.
Ja mitä me teemme, kun malloc palaa?
Asetimme mitä se palauttaa.
Asetamme x sama mitä se on palaamassa.
Joten mitä se palaamassa?
Se on palaamassa 0x123 koska se on lohkon osoitetta muistia, että se
vain jaetaan kasaan.
>> Joten palata 0x123 x on nyt aiotaan asettaa yhtä suuri kuin 0x123, joka kuvallisesti,
me usein esiin kuin x, jonka todellinen nuoli osoittaa, että lohko.
Mutta x on juuri tallentamiseen kyseiseen osoitteeseen.
Meillä on nyt siis tarkistaa, jos x on nolla.
Se ei ole nolla.
Me teeskennellä että malloc onnistunut.
>> Joten nyt tähti x vastaa 50.
Joten tähti muistaa se tarkoittaa mene kyseiseen osoitteeseen.
Joten 0x123 Menemme mene kyseiseen osoitteeseen.
Niin että tuo meidät sinne.
Mitä me teemme tähän osoitteeseen?
Olemme varastointia 50.
>> Niin sen jälkeen tätä linjaa, sitähän asiat tulevat näyttämään.
Joten nyt se ei enää roskat sinne.
Nyt tiedämme, että 50 on kyseisessä Erityisesti osoite, koska
asetimme sen, että.
OK?
Joten nyt olemme menossa painoon f.
>> Ensin aiomme tulostaa tähti x.
Joten mikä on tähti x?
Jälleen tähti x tarkoittaa mennä asia, että x on osoittaa.
Joten x on tallentamiseen 0x123 Siirry että.
Saamme 50.
Joten tulosta f että.
Ja se tarkoittaa, se tulee tulostaa 50.
Ja sitten, että palaa.
>> Ja sitten meillä on toinen printf.
Olemme nyt prosenttiin s.
Jos et ole nähnyt sitä, että on kuinka voit tulostaa osoittimen.
Joten olemme prosenttia i, prosenttia f, ja kaikki nämä jo.
Joten prosenttia p, tulostaa osoittimen.
>> Joten x on osoitin.
Joten jos aiomme tulostaa x itse, me tulostaa mitä on itse sisällä
x, joka on 0x123 Joten ensimmäinen Tulosta f on menossa painoon 50.
Toinen print f on menossa tulostaa 0x123 Yeah?
>> Yleisö: Käytätkö prosenttia x tulostaa osoitin?
>> ROB: Eli käytät prosenttia x tulostaa osoitin?
Joten voit vaan prosenttia x on juuri, Yleisemmin, kuten jos sinulla on joitakin
kokonaisluku ja haluat tulostaa se heksadesimaaliarvoina.
Se on vain miten se tehdään.
>> Sekä katsoo, prosenttia d olisi tulostaa desimaalin.
Se olimme saada prosenttia d. i on vain kokonaisluku.
prosenttia p on nimenomaan ja viitteitä.
>> Joten x on osoitin.
Haluamme käyttää prosenttiin p.
Mutta prosenttia x voisi toimia.
Joo?
>> Yleisö: [kuulumaton]?
>> ROB: Joo.
Ainakin tämän call-- niin minä jättänyt sen tänne.
Mutta nämä kaksi väitettä eivät välttämättä sisäosat pinokehys
sekä mahdolliset paikalliset muuttujat printf sattuu olemaan käyttäen.
Ja sitten seuraava puhelu printf nyt sisäpuolella printf pinokehys on
prosenttia p kenoviiva n ja mitä x: n arvo on, joka on 0x123.
Joo?
>> Yleisö: [kuulumaton]?
>> ROB: Se tulostaa jotain joka näyttää tältä.
>> Yleisö: [kuulumaton].
>> ROB: Joten se tulostaa sen osoite muodossa.
Se näyttää osoitteen.
Joo?
>> Yleisö: [kuulumaton]?
>> ROB: Miksi mitä?
>> Yleisö: [kuulumaton]?
>> ROB: Miksi tämä osoitin 4 tavua?
Joten on olemassa koko joukko 0: n edessä tämän.
Joten se on todella 0x0000000123.
64-bittinen järjestelmä ei olisi koko joukko enemmän nollia.
Joo?
>> Yleisö: [kuulumaton].
>> ROB: Joten ensimmäinen Printf on menossa print--
>> Yleisö: [kuulumaton].
>> ROB: Kyllä, se tulee tulostaa mitä x viittaa.
Star sanoo mikä on tämän asia osoittaa.
Napata se.
Joten mitä se osoittaa?
50.
Napata se.
Sitähän aiomme tulostaa.
Sekä katsoo, seuraava, olemme vain tulostus x itse.
Mikä on sisällä f?
0x123.
OK.
>> Ja sitten lopuksi, meillä on ilmainen.
Mitä me ohimennen vapauttaa?
Olemme kulkee x.
Tuolloin en oikeastaan ​​näy se pinokehys.
>> Joten olemme ohimennen arvo 0x123 vapauttaa.
Joten nyt ilmaiseksi tietää, okei, Minun täytyy mennä jopa kasaan
ja vapaa että muistia.
Se enää käytä mitä on osoitteessa 0x123.
>> Niin vapaa on menossa vapauttamaan että kasasta.
Nyt meidän pino on taas tyhjä.
Meillä ei muistivuodot.
Nyt ilmainen palaa.
Huomaa, että x on vielä 0x123.
Mutta se ei nyt ole sopivaa muistia.
Enää ei pitäisi dereference x.
Joo?
>> Yleisö: Onko palata 0 tarpeeton?
>> ROB: Onko returen 0 tarpeeton?
Kyllä.
Olemme vain laittaa, että koska meillä on paluu yksi ilman.
Niin se on, joo, antaa kuuluvat paluuta 0.
Joo?
>> Yleisö: [kuulumaton]?
>> ROB: Joten sen jälkeen vapaa x, mitä tapahtuu, jos yritämme dereference osoitin?
On mahdollista, että mikään menee pieleen.
On mahdollista, että me vielä saada 50.
>> On mahdollista myös, että muisti on Nyt käytetään jotain muuta.
Joten se on määrittelemätön käyttäytymistä.
Ja määrittelemätön tarkoittaa mitään voi tapahtua.
Joo?
>> Yleisö: [kuulumaton]?
>> ROB: Ei, joten jos annat x jotain muuta.
Joten jos täällä sanoimme x vastaa malloc jotain else--
malloc koko event--
niin että alkuperäinen lohko muistia ei ole vapautettu.
Ja olemme virallisesti menettänyt sen.
Se on muisti vuotaa.
Menetimme kaikki viittaukset sen, että lohko muistia.
Joten ei ole tapa, jolla voimme koskaan vapauttaa sitä.
OK, joten palaa 0 keinoin tehty.
>> Okei, joten pinon ylivuoto.
Mikä idea tässä?
Joten muistakaa, keko on menossa alaspäin.
Pino on menossa ylös.
Joten tämä oli esimerkki luento, Luulen, jossa tärkein on juuri menossa
kutsua tätä toimintoa foo, joka on menossa kutsua itseään rekursiivisesti yli ja
uudestaan.
>> Joten pino kehyksiä ovat menossa toimivat täsmälleen sama.
Joten aiomme aloittaa tärkeimpien kuten pohja pinokehykseen.
Sitten tärkein on menossa soittaa foo, joka on menossa pinokehys.
>> Sitten foo on menossa soittaa foo uudelleen, mikä on menossa
toinen pinokehys.
Ja sitten taas, ja uudestaan, ja uudestaan, ja uudelleen, kunnes lopulta, otamme
osaksi kasaan.
Joten tämä on, miten saamme pinon ylivuoto.
Ja tässä vaiheessa, voit seg vika.
Tai olisit todella seg vika ennen tässä vaiheessa, mutta joo.
>> Yleisö: Onko core dump sama kuin seg vika?
>> ROB: Niin näet segmentointi vika ydin polkumyynnillä.
Saat core dump kun te seg vika.
Ja se on kuin kaatopaikka kaikkien sisältö nykyisen muistin niin
että voit kokeilla ja tunnistaa miksi te seg vialliseksi.
Joo?
>> Yleisö: [kuulumaton]?
>> ROB: Joten segmentointi vika välineet siellä pinon ylivuoto.
Niin ei välttämättä.
Segmentointi vika tarkoittaa, että olet koskettaa muistin tavalla
sinun ei pitäisi olla.
Joten yksi tapa, että tapahtuu on, kun pärjäät ylivuoto, alamme koskettaa
muistia niin, että meidän ei pitäisi olla.
Joo?
>> Yleisö: [kuulumaton]?
>> ROB: Niin sisällä päättymättömään silmukkaan.
Like, tämä on kuin rekursiivinen ääretön silmukka ja niin saamme toinen
pino runko joka kerta.
Mutta vain sisällä säännöllisen ääretön taas one--
hyvin, älkäämme edes tulosta F--
tehdä jotain.
Whatever.
>> Emme tule saamaan toinen pinokehys.
Olemme juuri menossa pitämään kiehkura tänä yksi käsky.
Pino ei kasva.
Se on se, että jokainen rekursiivinen Puhelu antaa meille pinokehys.
Siksi saamme pinon ylivuoto.
Joo?
>> Yleisö: Joten jos sanoit saada while-silmukka ja sitten [kuulumaton]?
>> ROB: Joten jos sisällä while-silmukka oli printf, voit silti
ei seg vika.
En vain halua sekoittaa asioita.
Se olisi silmukka.
Saat luultavasti yksi pino Runko printf.
>> Sitten printf palaisi.
Sitten sinun silmukka uudelleen.
Saat luultavasti yksi pino Runko printf.
Se palaisi.
Yhden pinokehys.
Joten et saa tätä ääretöntä kasaantuu pino kehyksiä.
>> Yleisö: [kuulumaton]?
>> ROB: Kyllä.
Joten tämä pinon ylivuoto tapahtuu koska mikään näistä
puhelut foo ovat palaamassa.
Joten jos palaamme, niin olisimme alkaa menettää pino kehyksiä.
Ja sitten emme ylivuoto.
Ja siksi tarvitset perustapaus omaan toimintoja.
Joo?
>> Yleisö: Onko mahdollisesta koosta ja pino kasaan sama
kaikki ohjelmat?
>> ROB: Noin.
On potentiaalia pinon koon ja kasaan samat kaikissa ohjelmissa?
Karkeasti.
On olemassa jonkin verran satunnaistamisesta jossa pino alkaa ja
jos kasaan alkaa.
Jos sinulla sattuu olemaan koko paljon globaaleja muuttujia ja asioita, saatat
ottaa pois tilaa teidän kasaan.
>> 64-bittinen järjestelmä, voit käytännössä on ääretön muisti.
On vain niin paljon.
Välillä 32 bittiä ja 64 bittiä, että on merkittävä ero.
>> Olet menossa saada paljon enemmän pino ja keko tilaa 64-bittinen
järjestelmää, koska siellä on vain enemmän korjaa että he voivat käyttää.
Mutta erillistä järjestelmää, se suunnilleen saman verran pinon
ja keon tilaa.
Kunnossa.
>> Niin viimeinen asia on kokoelma.
Niin sinun pitäisi tietää tämä prosessi.
On neljä isoja askeleita.
Joten ensimmäinen pitäisi on helppo muistaa.
Esikäsittelyä.
Se on etuliite valmiiksi siinä.
Niin se tulee ennen kaikkea muuta.
>> Asia on muistaa hash.
Niin hash määrittelee ja hash sisältää kaikissa näissä.
Nuo ovat kaikki esikäsittelijänä direktiivejä.
Nämä ovat asioita, jotka pre-prosessori huolehtii.
>> Joten mitä pre-prosessori tehdä?
Se on todella tyhmä juttu.
Kaikki se kykenee ovat kaikki nämä kopioida ja leikata, ja liitä toiminnot.
>> Niin hash sisältää standardin I0 piste tuntia.
Mikä on se tekee?
Se tarttumalla standardin I0 piste h tiedostoon ja liittämällä se alkuun
missä sanotaan hash sisältää standardi i0 dot tuntia.
>> Ja kaikki hash määritellä, että olemme nähnyt, mitä on, että tekee?
Sen kopiointi arvo hash määritelty määritellään ja liittämistä, että
missä käytät arvoa.
Joten esikäsittelijään vain ei oikeastaan yksinkertaista tekstiä perustuva liiketoiminta.
Se ei mitenkään fiksu.
Niin kaikki muu on monimutkaisempi.
>> Joten nyt esikäsittelijän tehty, me itse koota.
Joten mitä kokoamiseen tarkoittaa?
Olemme nyt menee C-koodi kokoonpanoon koodia.
Joo?
>> Yleisö: [kuulumaton]?
>> ROB: Joo, saimme sen.
Niin kokoamisessa.
Menemme C: stä kokoonpanoon.
Joten tämä on todellinen kielen muutos.
Kääntäminen itsessään tarkoittaa menee korkeamman tason kieli
alemman tason kieli.
>> Ja c on korkean tason kielellä verrattuna kokoonpanoon.
Mikä on kokoonpano?
Sen ohjeita ovat melko paljon, tehty suorittimen.
Mutta tietokone ei vieläkään ei ymmärrä kokoonpano.
Se ymmärtää vain ykkösiä ja nollia.
Niin seuraava askel on kokoonpano, joka tuo meille näistä ohjeita
suorittimen ymmärtää ja tosiasiallisesti muuntaa ne, jotta
ykkösiä ja nollia.
>> Joten C kokoonpano binary.
Mutta minulla ei ole suoritettavissa vielä.
Niin ajattele CS50 kirjasto.
Olemme toimittaneet teille binary Tämän CS50 kirjasto, joka on GetString
ja GetInt ja kaikki.
>> Mutta CS50 library--
in ja itself-- ei ole suoritettavissa.
Se ei ole tärkein ominaisuus.
Se on vain joukko binary joita voit käyttää.
Joten linkittäminen on miten yhdistämme kaikki Näiden eri binääritiedostoina
osaksi varsinaista suoritettavaa.
Yksi että voit kirjoittaa dot slash dot pois.
>> Joten tämä on kuin tiedosto kirjoitti, - mikä tahansa ohjelma on--
Ceaser piste c.
Mutta nyt se on koottu alas binary.
Joten Ceaser dot o.
Ja tämä on meidän CS50 kirjastot binary.
Ja he yhdistämistä yhdeksi suoritettavan.
Joo?
>> Yleisö: [kuulumaton]?
>> ROB: Ensin kuuluu, muista, hash kuuluu on todella
pre-prosessori vaiheessa.
Mutta se on erillinen.
Jos et käytä mitään toimintoja, jotka ovat ulkopuolella oman yksittäisen tiedoston sitten,
Ei, sinun ei tarvitse liittää mitään koska sinulla on kaikki.
>> Se sanoi, printf on linkitettynä.
Jos joskus käyttää printf, että jotain , joka on sidoksissa
koska et kirjoita sitä.
Ja itse asiassa, printf on automaattisesti sidoksissa.
Tiedät miten komentoriviltä tai kun kirjoittamasi tehdä, näet sen on
viiva L CS50, jossa on linkki vuonna CS50 kirjastossa?
Printf, ja muuta vastaavaa, on menossa voidaan liittää automaattisesti.
Kysyttävää mistään?
>> Yleisö: [kuulumaton]?
>> ROB: linkki?
Meillä on koko joukko eri binääritiedostoina.
Tämä on kanoninen esimerkki että käytämme on CS50 kirjasto.
Olemme koonneet ja antaa sen sinulle binary tähän CS50 kirjastoon.
>> Haluat käyttää GetString ohjelmaan.
Joten te mennä ja käyttää GetString.
Mutta ilman minun binary koodi GetString, kun kääntää koodin
alas, et voi itse ajaa Ohjelma koska GetString String on
ei ole vielä täysin määritelty.
>> Vasta kun linkität minun binary joka sisältää GetString, että nyt, kaikki
oikea, voin todella suorittaa GetString.
Minun tiedosto on valmis.
Ja voin ajaa tätä.
Joo?
>> Yleisö: Onko yhteen kytkemiseen muuntaa binary suoritettavia?
Joten vaikka sinulla ei ole muita kirjastot, eikö silti
tarpeen kääntää [äänetön]?
>> ROB: Niin suoritettavan on edelleen binary.
Se on vain yhdistämällä koko nippu binäärit.
>> Yleisö: Kiitos paljon.
>> ROB: Ei hätää.
Muita kysymyksiä?
Muuten me kaikki asetettu.
Kunnossa.
Kiitos.
>> [APPLAUSE]
>> Yleisö: Kiitos.
>> ROB: Joo.