>> [Predvaja glasba]
CAMILLE REKHSON: Živjo, vsi.
Dobrodošli na CS50 kvizu nič seja pregled.
Sem Camille.
In bom, da bo tam čez nekaj temah z vami
danes fantje, da vam pomaga pripravo na kviz.
Torej, tukaj je naš neizčrpen seznam tem boste
morajo biti seznanjeni z za kviz.
Ti so bili neposredno iz učnega načrta.
Vem, da se zdi, kot veliko.
Ampak verjemi mi, ste se naučili vse te stvari v zadnjih nekaj tednih.
>> Torej bomo zagotovo se dogaja čez veliko teh danes.
Ampak tudi trajalo nekaj časa na vaši lastna pregledati te stvari.
In če niste bili seznanjeni z kaj nekatere od teh stvari so,
poskrbite, da boste vprašati, eden izmed nas.
Tudi za uradni besedo na kviz, pojdite na to povezavo.
To bo imelo vse podatke, pri kateri sobi boste morali iti v,
razideta po abecedi, in tudi nekaj nasvetov o tem, kaj materialov
morate biti študira, in kakšne vrste kviz vprašanja, ki jih lahko pričakujemo.
Torej, se prepričajte, da preverite, ali ven.
>> Prav tako je nekaj nasvetov za takrat, ko vas se pripravljajo za izpit.
Vadite kodiranje na papirju.
Vem, da ste gotten navajeni, da preverjanje IDE za vaše napake za vas,
in it's-- ko ste ga tipkanje up, to je malo drugačen kot ob
pisati stvari.
Torej vaditi delaš nekaj kodiranja.
Nekaj ​​dobrih funkcije za opravljanje početje so strlen in atoi,
vidim, če lahko napišete tistih, ki se izvajajo na svoje.
Bodite seznanjeni s problemom nizov.
Večina let obstajajo Vprašanja, ki se nanašajo
za nekaj problemov nastavljena materiala.
Zato poskrbite, da boste razumeli kako narediti vse problemskih sklopov v.
>> Poskusite početje nekaterih starih kvizov pod 75 minut časovne omejitve.
Veliko kvizov lahko nekako dolgo.
Torej, to je dober način, da bi sami nekaj prakse,
in kako dolgo bo vas, in kako vam
bi moral razdeliti svoj čas, da poskrbite, boste končali vse do konca.
In tudi, boste dobili eno stran, dvostranski referenčna lista
da lahko napišete karkoli si želijo na uporabljati v kvizu.
Torej, če ste ustvarjanju da je, da je tudi
res odličen način, da študija, ker boste nekako se pregleduje stvari
kot ste ga pisno.
>> Torej vsa splošna vprašanja o kviz, ali kako to deluje?
Ja.
>> OBČINSTVO: Bo, da seznam tem ki ste jo pravkar pokazala voljo, da nas
na spletu?
>> CAMILLE REKHSON: Ta celoten diapozitiv Predstava bo objavljen na spletni strani.
Tudi video današnjega pregleda seja bo na spletni strani.
Torej, ne skrbite preveč o pisanjem stvari navzdol v celotnem besedilu.
Vse bo tam.
Vsa druga vprašanja?
OK, začnimo.
>> Torej, ena stvar, da so seznanjeni z je različne vrste podatkov in velikost
ki jih bodo vzeli na.
To je lahko tudi velika stvar, da napišite na vašem referenčnem stanja,
Samo poskrbite, da boste zapomniti vse te.
Ampak-- tako črke so 1 bajt.
Ints so 4 bajte.
Dolgo, dolgo, kar je v bistvu bolj Prostor za celo število, je 8 bajtov.
Plovec je 4 bajte.
Dvojno, ki v bistvu vam daje več prostora za shranjevanje plovec, je 8 bajtov.
In potem kazalec je tudi 8 bajtov.
Vsa vprašanja o teh?
>> Torej, binarna je še ena tema, ki smo jih zajeti malo ta semester.
Torej, dajmo narediti nekaj vadite s pretvorbo
med binarno in decimalke.
Torej ima kdo kakšno idejo, kaj da prvi bi bilo?
Kdorkoli?
Ja, to je 42.
Torej, če se spomnite, vsak od krajev v binarno
je v bistvu kot 2 na oblast, ta kraj je.
>> Tako da prvi lokaciji je 2 do 0 moči.
In imamo 0 tam, tako da nič ne obstaja.
Naslednji kraj je med 2 in prva moč.
In imamo 1 tam, tako da je v bistvu 2.
Naslednji kraj je od 2 do drugi, ki je 4.
Nimamo ničesar tam.
Naslednji kraj več kot 2 do tretji, kar bi bilo 8.
In mi imamo eno tam.
In smo nadaljuj.
Da last-- najdlje do leva je, če imamo 32.
In tako smo v bistvu imeli 32 plus 8 plus 2, da bi dobili 42.
Kakšno vprašanje?
>> OBČINSTVO: Kaj je indeks za?
>> CAMILLE REKHSON: indeks v bistvu nam pove, da je binarno.
Torej, tam je 2 tam.
Če ne bi bilo like-- v naslednjem eno, ali ko smo pretvorbo decimalko
za binarno, tam je 10 nam kaže, da ta številka je prvotno decimalko.
>> OBČINSTVO: Hvala.
>> CAMILLE REKHSON: Ja.
Vsa druga vprašanja na tem enem?
OK, tako da poskusimo naslednji ena potem, decimalno na binarno.
Torej ob 50 in dajanje, da je v binarno.
Kako bi to naredil?
Ja.
>> OBČINSTVO: 110.010.
>> CAMILLE REKHSON: Da.
Torej one-- enostaven način, da razmišljajo o pretvorbo iz decimalnega v binarno
je to-- pogosto pomaga, da napišete kaj različne pristojnosti 2 so.
In potem gredo skozi njo, in videli karkoli bila najvišja od teh
je, da lahko dajo v na decimalno število, ne da bi nad njim.
>> Torej v tem primeru, eden izmed pooblastila 2 je 32.
Torej 32 gre v 50.
Vendar pa bi v naslednjem vklopu biti 64, ki očitno ne sodi v 50.
Torej najvišja imamo je 32.
Naslednji ena do 16.
In 32 plus 16 je le 48.
Tako, da še vedno sodi v 50.
Torej imamo 1 v obeh teh.
In potem, če vedno gremo dol, edina stvar, moramo levo
je 2 več, da bi dobili od 48 do 50.
Torej imamo 1 v takem položaju, in 0 v zadnjem položaju.
Ker ni nič v z 2 do 0-th mestu.
Vprašanja o pretvorbi decimalno za dvokomponentne?
>> Torej, zdaj poskusimo počne nekateri binarni dodatek.
Kako, ko boste dodali teh dveh gor?
Ja.
>> OBČINSTVO: 11100.
>> CAMILLE REKHSON: Da.
Tako početje dodatek v binarno je precej zelo podobno kot to počne na decimalko.
Razen če imate dve 1 je bitje seštevati, 1 plus 1 je 2,
ampak 2 v binarno 1 0.
Tako da boste morali nositi 1, in obdržati ki ga nosi za tiste par stolpcev.
In razen, da samo dodati običajno.
Vsa vprašanja glede tega?
Ja.
>> OBČINSTVO: Oprostite, kaj je zadnji kraj?
Tam je šest številk.
Torej skrajni levi stolpec, kakšno vrednost je to?
CAMILLE REKHSON: Na tej spodnji enega?
OBČINSTVO: Na vrh enega, za 50.
CAMILLE REKHSON: Za 50?
Oh, tako da je skrajni levi je ena 32.
>> OBČINSTVO: 32?
>> CAMILLE REKHSON: Ja, tako da bi je 32, 16, nato pa 8, 4, 2, 0-- ali 1.
No, to je 2 na Ničti, ki je 1.
Ja.
Vsa ostala vprašanja o tem?
OK, potem pa bomo storili malo s šestnajstiško.
Torej, to je lahko malo manj znano,
ker vem, da smo naredili veliko več z binarno.
Ampak res dober način za pomislite šestnajstiškem
je, da se razbije binarno Številka v 4 bitni koščkih.
Ker vsaka 4 bitov binarno število je v bistvu
ena od številk šestnajstiškem zapisu.
>> Torej, če imamo to prvo, imamo v osnovi osem 1 jev.
Torej tiste, ki se lahko razdeli up--
>> OBČINSTVO: 255.
>> CAMILLE REKHSON: Ponovite.
OBČINSTVO: 255 v decimalni, ali 0xFF v šestnajstiški.
CAMILLE REKHSON: Ja, res je.
Torej, če si razdeliti, da gor v dve 4-bitnih koščkih,
smo v bistvu imeli štiri nize 1.
Ki je maximum-- bistvu najvišja
bomo lahko dobili s 4-bitov v binarno.
In največ, kar smo lahko dobili za da je v šestnajstiškem bi bila F.
Tako bi imeli dva F-jev.
Vsa vprašanja glede tega?
Ja?
>> OBČINSTVO: Ali lahko ponovite.
CAMILLE REKHSON: Seveda.
Torej vsak, v bistvu, kraj šestnajstiškem je
enakovreden 4-bite binarnega.
Torej je najlažji način za to je, da ga razbije v 4-bitni kose.
Torej, v tem primeru imamo osem 1 jev.
Torej, če smo razdelili tistim, v dve 4-bitnih koščkih,
bi imeli dva niza štirih 1-ih.
In vsak od tistih je enakovredna F.
Če menite, da about-- Vem, da so naši možgani
vrsta žično razmišljati več skozi decimalko,
ker to je tisto, kar sva nekoč.
Torej en način, da bi lahko o njej mislijo kot štiri 1 je enaka 15 v decimalni.
In 15 v šestnajstiškem F. Torej, to je še en način, si lahko zamislite skozenj.
Ja.
>> OBČINSTVO: Kaj je 0x za?
>> CAMILLE REKHSON: The 0x pomeni, da je v šestnajstiškem zapisu.
Torej smo pravkar dal, da predpona tam običajno.
Druga vprašanja o tem.
OK, tako da poskusimo dogaja drugi način pa.
V tem primeru smo have-- žal?
OBČINSTVO: [neslišno].
CAMILLE REKHSON: Gremo v binarno.
Torej, gre v drugo smer.
Toda v tem primeru imamo 5 in A. Torej, če razmišljamo o tem,
če sta vsak izmed those-- receptorjem 5 in A tako dogaja, da predstavljajo 4-bitni kos,
kako bi rekli, 5 v binarno?
>> OBČINSTVO: 0101.
>> CAMILLE REKHSON: Ja, tako da je 0101 del.
In potem, kako bi rekli A in--
>> OBČINSTVO: 10.
CAMILLE REKHSON: Recimo it-- žal?
OBČINSTVO: 10.
CAMILLE REKHSON: Ja, tako da je drugi del.
In potem, če si dal ti dve skupaj, to je
kako dobiš polno binarni za šestnajstiški.
Ja?
>> OBČINSTVO: Da bi vedeli, da je A 1010, moraš zapomniti?
Ali lahko like--
>> CAMILLE REKHSON: Torej, če tako you-- differe--
ko ste šli skozi binarni, v bistvu binarno
ima 0 do 9 in nato preko F svojih 16 stvari.
Torej, če je vse tja od 0 do 9-- če you-- 9 in nato, v bistvu
če smo pretvorili, da decimalno, A bi bilo, kot 10, bi B biti kot 11.
In če mislite, da približno binarni 1010 je 8 in 2,
ker tisti, sta dva kraji, ki dodajo do 10, ki
je točno tisto, A je enakovredna.
Torej, to je nekako enostavno način, da razmišljajo o tem.
Druga vprašanja o šestnajstiškem.
>> OK, zdaj gremo, da sprejmejo poglej na operaterje bitni.
Torej ti lahko zagotovo prišel na kvizu.
Vem, da imamo ne delal z njimi veliko.
Vendar smo le, da bo naredil malo pregled teh.
Torej, upam, da ti bo malo bolj seznanjeni s tabo.
Torej šest bitni operaterji da smo so naštete tukaj.
In so nam manipulirati Posamezne bitov.
Torej IN operaterja je ena ampersand.
Ne mešaj, da se z dvojno ampersand,
kar je logično, da je nam omogoča primerjavo dveh stvari.
>> Enotni IN je, kako smo lahko manipulira stvari bitni.
Torej, to nam daje rezultat 1, če tako od argumentov, da smo primerjali
sta nam je isti ali so 1.
In navpično bar, OR, bo nam 1, če je 1 vsaj eden izmed njih.
Torej v bistvu točno kaj beseda pomeni.
In, če sta dve bitov 1, 1 in 1 nam daje 1.
Toda z ali, če je 0 ali 1, ali 1 ali 1, v vsakem primeru,
imamo 1, kot je eden izmed njih.
Torej bi dobili 1.
OBČINSTVO: Kaj misliš ki pravi, da daje 1?
>> CAMILLE REKHSON: The rezultat. Nekako, kot ste vi
would-- če si 0 in 1, je rezultat, da bi bilo 1-- ali 0
in 1 z rezultatom da bi bilo 0, žal.
Ja, to je nekako od rezultat ekspresije.
In potem je ta strešica simbol je XOR ali ekskluzivni OR.
Torej to pomeni, da samo eden ali natanko eden od dveh trditev je enak 1.
In potem vam bo dal 1.
>> Malo squiggly linija je operator NOT.
Torej za razliko ostalo od njih, ki delujejo na par bitov,
izvajalec ne traja le en bit, in jo bo flip.
Torej, če ste give-- če vam NE 0, bi vam 1.
In če ne boste 1, da bi vam 0.
Ja?
>> OBČINSTVO: Kakšna je razlika med ali z eno črto
in ali z dvema?
CAMILLE REKHSON: Torej ALI z dve vrstici je logična ALI.
Tako da je za primerjavo dve polni cela števila, ali dvo
da vidim, če so stvari enake.
Ali podobnih tem je ta enaka tem, ALI je to enaka tej vrsti stvar.
Ker enotnega baru ali, je za početje stvari bitni.
Ja.
>> OBČINSTVO: Kaj misliš s bitni?
>> CAMILLE REKHSON: Torej bitni deluje neposredno z bitov v binarno.
>> OBČINSTVO: Oh, vidim.
>> CAMILLE REKHSON: Ja, tako delajo z 0 in 1 je.
Bomo naredili par primerov to potem, samo da to ni preveč zmedeno.
In potem sta zadnja dva sta levi shift in desni premik.
Ki so v bistvu dva manj kot znaki ali dve večji od znakov.
In jih preusmerila na bit dane število mest
da si ga dal v smeri.
Tako da bi ga bodisi premik v levo ali v desno.
Ja?
OBČINSTVO: Kaj je skladnja za tek?
>> CAMILLE REKHSON: Gremo gredo skozi primer na sekundo.
Torej upam, da bo pomagalo.
Vsa vprašanja v zvezi samo kaj je tu gor, before-- OK.
Torej gredo skozi nekaj primerov.
Začnimo z IN narave.
Kaj bi dobili, če smo naredili 0 in 1?
>> OBČINSTVO: 0.
CAMILLE REKHSON: OK, in če smo naredili 1 in 1?
OBČINSTVO: 1.
CAMILLE REKHSON: Ja, Kaj pa, če smo naredili 0 ali eno?
OBČINSTVO: 1.
CAMILLE REKHSON: Kako približno 1 ali 1?
OBČINSTVO: 1.
CAMILLE REKHSON: OK, kaj pa 0 XOR 1?
OBČINSTVO: 1.
CAMILLE REKHSON: In 1 XOR 1?
OBČINSTVO: 0.
CAMILLE REKHSON: Ti fantje so dobri.
Kako približno NE 0?
>> OBČINSTVO: 1.
CAMILLE REKHSON: In NE 1?
OBČINSTVO: 0.
CAMILLE REKHSON: OK, potem pa ta zadnja ena je malo ena s prestavljanjem.
Torej, če smo sprva določen x, da je 8, in potem je y x premaknilo v levo 3,
kaj bi to nam daje?
>> OBČINSTVO: [neslišno].
CAMILLE REKHSON: Ponovite.
OBČINSTVO: [neslišno].
CAMILLE REKHSON: Torej, to pravzaprav nam daje 64.
OBČINSTVO: [neslišno].
CAMILLE REKHSON: Torej, jaz sem samo dogaja, da je to napisal tu gor,
tako da to naredi malo smisla.
Če imamo 2 do 0, 2 na 1, 2 do 2, 2 do 3 se bo 8.
In če hočemo to SHIFT 3 več bitov v levo, da bi bila 2 do 4,
2 do 5, in 2 do 6 in 2 do 6, je 64.
Ali je to smiselno?
Da.
>> Publika: Ali to premik vse je bilo 1 in 0 je v binarno število za the--
>> CAMILLE REKHSON: Da.
In vam ne bo treba skrbeti o kviz o teh negativna.
Ne bomo se ukvarjajo z Negativni premiki na kakršenkoli način.
Vsa druga vprašanja v zvezi s tem?
Da.
>> OBČINSTVO: Če je to premik v desno, je vse, kar wasn't-- ničesar,
ni bil prvotno del stvari 0?
>> CAMILLE REKHSON: Ja, bi si dodajte 0 jev na v izvirniku.
Ja.
>> OBČINSTVO: Torej, kaj je to 100 premaknilo v desno trikrat?
CAMILLE REKHSON: 100 premaknilo na desno,
tako da bi potrebovali vse 1 in 0 in jih le premik
na desno, kolikorkrat si je za premik v desno.
>> OBČINSTVO: [neslišno]?
CAMILLE REKHSON: No, 100-- so govoriš 100 v binarni,
ali 100 na decimalko?
OBČINSTVO: Žal mi je, 100 v binarno.
>> CAMILLE REKHSON: 100 v binarni, če jo prestavite na right--
Če premik v desno enkrat, bi postal 10.
Če jo premakne v desno dvakrat, bi postal 001.
In potem, če ga spet premika, si nekako izgubili malo.
Ja, to je samo 0.
Vsa ostala vprašanja o tem?
Da.
>> OBČINSTVO: Torej, potem postane 000.
>> CAMILLE REKHSON: Da.
OK, tako da gremo skozi malo ASCII matematike.
Tako da lahko v bistvu znaki se obravnavajo kot cela števila
ki temeljijo na njihovih ASCII vrednosti.
Torej, če smo sedeli int enaka 65, int B je enaka plus 1, int znak C enaka
D minus 1 in char D enaka 68, Kaj bi izpisal na dnu?
>> Torej, smo tiskanje these-- blagoslovi you-- smo
tiskanje ti vse kot Chars na osnovi odstotka C.
Tako da smo v bistvu tiskanje vrednost značaj vseh štirih
teh spremenljivk.
Kot namig, 65 je vrednost ASCII kapitala A. Mogoče je, da je pomagal.
Kaj?
>> OBČINSTVO: ABCD.
>> CAMILLE REKHSON: Ja, tako to bi izpisal ravno
ABCD saj smo postavili int A enaka vrednosti ASCII A.
Torej, če smo natisnete da ven kot značaj, smo le dobili kapitalu,
Plus 1 bi bil kapital B v ASCII.
D minus 1 bi bil kapital C v ASCII.
In 68 je vrednost ASCII D. vprašanj o ASCII?
Da.
>> OBČINSTVO: Torej, navednice A, ne, da se spremenite v ASCII?
>> CAMILLE REKHSON: To je uses-- count-- enojne narekovaje A
zaradi česar je znak.
In če imate opravka z je število form--
tako da, ko, kot v tem primeru, da je obravnavajo kot int--
potem bi obravnavali z njo je vrednost ASCII.
Da.
>> OBČINSTVO: Ali vam priporočamo, da imamo ASCII referenčno mizo?
>> CAMILLE REKHSON: Ne think--
>> OBČINSTVO: Ali bi samo to se ukvarjajo z njimi?
>> CAMILLE REKHSON: Mislim, da smo bi to naredil z enostavno stvari.
Jaz ne mislim, da bi bolelo navzdol pisati morda
kaj kapital A in male črke A taki, samo kaj ti razponi se začenjajo z.
Ampak jaz ne mislim, da boste morali sprejeti vse prostor postaviti celotno tabelo ASCII.
Ja.
>> OBČINSTVO: Kakšna je razlika med rekel int A in char C,
kot si ti na vrhu?
>> CAMILLE REKHSON: Torej, to je samo kako, da je shranjena v pomnilniku.
Lahko pa je tako ali tako zdravljenje.
Tako kot vidimo tukaj, delamo tisk od A kot značaja.
OBČINSTVO: Torej, to je isto kot?
CAMILLE REKHSON: Ja.
Vsa druga vprašanja?
>> OBČINSTVO: Torej, odstotka C je rekel natisnete char?
>> CAMILLE REKHSON: Da.
>> OBČINSTVO: Torej, tudi če ima le bil opredeljen kot celo število,
če skušamo natisne char kot 65 let, je would--
CAMILLE REKHSON: To bi šel v bistvu gre za ASCII grafikona
in dobi ne glede znakov v ASCII grafikonu za to 65 let.
>> OBČINSTVO: Hvala.
>> CAMILLE REKHSON: Ja.
Ja?
>> OBČINSTVO: Torej, če ste naredili% I% I, % I% I, bi to samo print--
CAMILLE REKHSON: Ja, če si vse 4% mi je, da
bi izpisal ASCII Vrednosti vseh štirih ti.
Vsa druga vprašanja?
OK, torej področje, v bistvu je to nam pomaga določiti, kje
obstaja spremenljivka v vašem programu.
Tako smo se pogovarjali o dveh različnih Vrste obsegu, globalno in lokalno.
>> Če je spremenljivka globalno scoped, to pomeni, da si celoten program
ima dostop do te spremenljivke.
In če vas po vsem svetu Obseg spremenljivka, ki jih
ga razglasi pred vaše glavno funkcijo.
Torej je to storjeno pravico off kij.
In potem vse tvoje Program lahko dostopate do njega.
>> Če je to le lokalno scoped, da spremenljivka omejena na določeno regijo.
Torej, če ste razglasi roku za zanke, samo, da je za zanke lahko dostopate do njega.
Ali če izjavi, v roku specifična funkcija,
samo to funkcijo lahko dostopate do njega.
Vprašanja o obsegu.
>> OK, tako da funkcija prototipov.
V bistvu, ker C, ko se pripravlja, bere dol vrh.
Če navedete funkcijo pozno v kodi,
prevajalnik ne ve da obstaja to funkcijo.
Torej, kaj bomo uporabili so prototipi, ki v bistvu povedati prevajalniku,
ta funkcija obstaja, pojdite pogledati za to pozneje v kodeksu.
Torej tako, da vam funkcija prototip
je točno, kako začnete off pisanje funkcijo.
Daš vrsto vračanja, ime funkcije
in potem vsi argumenti da je ta funkcija traja.
>> Torej, da pogled na hitro primer, v tem malimi in naše delovanje, da bomo s pomočjo tukaj
je v bistvu funkcija kocka.
Torej, pri čemer v celo število in vrnitvijo kocko te celo število.
Torej, ker smo napisal, da je Funkcija pod glavno funkcijo,
in želimo uporabiti proizvodnja that-- ali pa
želite te funkcije V naše glavno funkcijo,
smo dal svoj prototip pot Na vrhu našega programa.
In potem, ko smo klic v naši glavno funkcijo,
prevajalnik ve, da je ta funkcija napisal kasneje, in bo šel pogledati za to,
in ga bo pravilno uporabljati.
Vprašanja o prototipov?
Da.
>> OBČINSTVO: Torej, kaj je smisel?
Ne razumem smisla prototipov.
Zakaj ne samo ga imate tam spodaj?
>> CAMILLE REKHSON: No, če je tukaj, potem ko je
prideš na linijo kocka x v glavno funkcijo,
prevajalnik ne bo imel pojma, da funkcija kocka dejansko obstaja.
>> OBČINSTVO: Ne morem si samo dal spredaj?
>> CAMILLE REKHSON: To je bolje kodiranje praksa
da ga v okviru svoje glavne funkcije.
Torej, to je, zakaj bi mi narediti prototipov.
Samo zato, ker, če vas imela veliko funkcij,
da bi bilo res grdo, da prebrati skozi vseh teh funkcij
Pred vami priti do mesa vašega programa.
Ja, in boste imeli -Q-
>> OBČINSTVO: Torej, se razglaša vaša spremenljivka na vrhu
tako da lahko dostopate do njega, da bo globalna spremenljivka?
Je, da podoben temu kjer je že na razglasitvi
gor, tako da se ve, da to bo dostop do nje pozneje
in ga lahko uporabite?
>> CAMILLE REKHSON: Ja.
Da.
>> OBČINSTVO: Če the-- vsaka dodatna Funkcije, ki jih ustvarite ključ zunaj
te stvari, or--
>> CAMILLE REKHSON: Ja, če ste nastanek druge functions-- Main
Sam je function-- tako da, če ste ustvarili druge funkcije,
morajo biti zunaj.
Ja?
>> OBČINSTVO: Kaj je odstotkov D?
CAMILLE REKHSON: Odstotek D ista stvar kot odstotek I.
To se nanaša na celo število.
Da.
>> OBČINSTVO: Torej, kaj je int glavno delaš?
Kaj je bilo, da je nična?
CAMILLE REKHSON: Void pravi je potrebno v nobenem argumentov.
OBČINSTVO: [neslišno].
CAMILLE REKHSON: Lahko govori malo glasneje, žal?
OBČINSTVO: Ja, žal mi je, zakaj je storil daš izničijo za prvo,
in nato int vhod za drugo?
CAMILLE REKHSON: Oh, za dva different-- za glavno funkcijo
v primerjavi z delovanjem kocke?
Torej v glavno funkcijo, bomo uporabili nična, ker obstaja
Ni parametri privedene v.
Medtem ko je v kocki funkcija, imamo vhod.
Zato je pravi int, vhod, ker obstajajo argumenti, da smo
pri čemer se za poganjanje funkcijo.
Ja.
Ali obstajajo vprašanja?
>> V redu, nato pa hitro plavajočo vejico nenatančnost.
Torej imamo neskončno mnogo realnih števil.
Vendar pa obstajajo le končno število bitov
da bomo lahko uporabite za prikaz tistih, številke, in jih predstavljajo.
Torej smo na koncu z nekaj nejasnosti.
In tvoje številke ne bo vedno povsem točno, kaj
si mislijo, da so, ko ste ki se ukvarjajo s plavajočo vejico.
To je samo nekaj, kar je dobro vedeti.
Vprašanja o tem?
Da.
>> OBČINSTVO: Je to sklicuje na idejo bit prelivom
da je v predavanju?
Je bilo, da je nekaj, kar ločuje?
>> CAMILLE REKHSON: Oni popolnoma ločeno, ja.
OK super.
PULAK Goyal: Živjo, vsi.
Moje ime je Pulak, in bom bo šel čez kazalci.
OK, tako da je prvi think o tem, kaj spomin izgleda.
Torej, kot lahko vidite tukaj, smo vzeli spomin in smo ga razdelili
v kup blokov.
In smo reference vsak blok z naslovom, kajne?
In ne kdo se spomnite, kakšne vrste Zapis, ki jih uporabljamo za označevanje naslov?
>> OBČINSTVO: Šestnajstiški, 0X.
>> PULAK Goyal: Šestnajstiški, kajne?
Torej 0X pomeni, da smo govorimo o šestnajstiškem.
OK, kako bomo ustvarili kazalce?
Torej vzamemo vrsto, smo dal it-- dodati zvezdico z njim,
in nato dodamo ime spremenljivke.
Tako so primeri, ki smo jih videli, so int zvezda x, char zvezda y, in plavajo začnete z.
Torej, ko sem rekel, int zvezda x, lahko nekdo povej mi,
kaj sem nekako govoriš tam?
>> OBČINSTVO: Lokacija diska.
>> PULAK Goyal: Oprostite, kaj?
Lahko ponovite?
OBČINSTVO: Lokacija diska.
>> PULAK Goyal: Torej tako actually-- kaj Mislil sem, je, ko imamo int zvezda x,
smo govoriš ustvarja kazalec, in
lahko shranite naslov spremenljivka, ki je int, kajne?
Torej z char zvezdicami y, smo ustvarili kazalec
da lahko shranite naslov spremenljivke, ki je char.
Tako da smisla za vsakogar?
OK kul
>> OK, torej s kazalci, obstajajo dve pomembni operacije lahko storimo.
Tam je navajanje, in tam je Dereferenciranje.
Ja?
>> OBČINSTVO: Lahko greš malo počasneje?
>> PULAK Goyal: Seveda.
Ja, SO- ja, postavljajo vprašanja, kot sem šel skupaj, če you-- če kaj ni jasno.
Tako smo navajanje in Dereferenciranje.
Torej, če želite, da bi dobili naslov spremenljivke, nato pa uporabite 'znak.
Torej, recimo, izjavil sem int x nekje.
In želim, da bi dobili naslov, ki in jih poslati v, jaz bi naredil ampersand x.
In če želite, da bi dobili Vrednost povezana s kazalcem,
uporabljate razrešimo operater, ki je zvezda.
>> Torej, recimo sem imel int zvezdicami x in Imel sem to kaže na nekaj.
Če želim, da bi dobili vrednost tega, kar je kaže, da bi se jaz pač zvezda x.
Je to jasno?
Vsa vprašanja o tem?
Ja.
>> OBČINSTVO: Torej na splošno, vas ne bodo mogli storiti na x in zvezda
x z enako x.
Je to pravilno?
Ker če je x spremenljivka, potem imate
storiti na x, da bi dobili, da je kazalec.
Ampak, če je x kazalec, potem morate storiti zvezda x, da bi dobili spremenljivko.
>> PULAK Goyal: Ja, tako da je Vprašanje je bilo o tem, kdaj
ne bomo uporabili star-- kadar bi uporabili zvezda,
in ko bomo uporabili ampersand, in lahko smo
uporabljate z isto vrsto spremenljivke?
Torej ponavadi, če imate, na primer, int x,
bi se predvsem z uporabo ampersand dobiti naslov, ki.
Ker to ne pomeni, da Občutek, da Priklanjanje v x.
Ker, če bi imeli int zvezda x, ki ste jo uporabljali delovanje razrešimo
ker bi bilo nesmiselno za uporabo pri x v tem primeru.
Ali je to smiselno?
>> OBČINSTVO: Torej, ne morete in nato kazalec?
PULAK Goyal: Torej si tehnično, dejansko
lahko storite 'znak za kazalec.
Ampak to je iz nje Obseg tega razreda.
Za purpose-- za svoje fante " namene, ko imate kazalce,
želite uporabiti operaterja razrešimo da bi dobili vrednost, povezano s tem.
In če imate redno spremenljivke, kot int x,
želite uporabiti 'znak operater, da bi dobili naslov za to.
V REDU?
>> OK, tako da je pogled na kazalce in kaj se dogaja pod pokrovom.
Torej prva stvar, ki sem tu deklarirana int x enak 5.
Naslov te spremenljivke je 0x04, vrednost je 5.
Torej, da vidimo, kaj se zgodi z naslednjo vrstico.
Torej, zdaj smo se razglasi kazalec.
Njen naslov je 0x08, in njene vrednost je naslov x.
Ali to smiselno za vsakogar?
Vsa vprašanja o tem?
>> OK, zdaj pa poglejmo, kaj se zgodi z naslednjo vrstico.
Torej s tem v naslednjo vrstico, imamo naslov kopija pa 0x10,
in njegova vrednost je 5.
Torej razlog, da imamo pet je rečeno, smo razrešimo
kazalec, ki smo ga razglasila int zvezdo.
In tako je went-- ko smo dereference njej, je rekel, OK, kaj je v 0x04 avtomatu.
In je šlo za to.
In kaj je x x0-- 0x04, vrednost je 5.
Ali to smiselno?
Ja?
>> OBČINSTVO: Zakaj je naslov kopija je le 4 bajte nad x kazalcem?
>> PULAK Goyal: Ja, to je napaka on--
>> CAMILLE REKHSON: Torej, ja, spomnim To je zapisano v šestnajstiški obliki.
PULAK Goyal: Oh, ja.
CAMILLE REKHSON: Torej, to je dejansko 8 in nato 16
ker smo rekli, da je kazalec, ne pozabite,
v našem IDE se bo dolg 8 bajtov.
PULAK Goyal: Ja.
Torej, samo da bo jasno, kazalci so dolg 8 bajtov.
Int je 4 bajte.
Torej, razlog, zakaj je kaj poskočila od 0x04 do 0x08
je zato, ker smo imeli na narediti skok 8 bajtov.
In potem for-- od Kopija je samo int,
to je 4 bajte, kar je polovica od 8 bajtov.
Tako smo samo skoči na 0x10, ki je dva od 0x08.
Vsa druga vprašanja?
OK, let's-- ja?
>> OBČINSTVO: Zakaj ni vrednost int kopijo
Samo the-- zakaj je 5 namesto 0x04?
>> PULAK Goyal: OK, zakaj je 5?
OK, tako da, ko the-- tako da je prvi razmišljati o tem, v smislu vrste.
Torej, jaz pravim int kopijo je enak kazalec zvezda.
Torej, kaj je tip kazalca?
To je int zvezda.
In ko sem dereference, da tip postane int.
Torej, kaj pričakujemo, da shranite Tu je pravzaprav int.
Ali to smiselno?
OBČINSTVO: Seveda, malo.
PULAK Goyal: Torej ponavadi, ko misliš, da v zvezi z vrstami,
da vam pomaga razumeti, kaj je Tip vrednosti, da bi morala tja.
Torej lahko ponavadi izključuje Veliko teh skupnih napak
z razmišljanjem v smislu vrste.
Naj gredo skozi malo več diapozitivov.
In bomo lahko dobili odgovore na dodatna vprašanja Konec odseka kazalca.
OK, tako da imamo hroščat programa tukaj.
In tako ne anyone-- lahko nekdo povej me, kaj je narobe s tem programom?
Dobro, kaj smo pričakuje, da tu ne
is-- kaj želimo narediti je prevzeti variabilno int x
in nato it-- da bo enaka 5 namesto 3 in nato natisnete to.
Ampak to se ne dogaja.
Mi lahko kdo pove, zakaj?
Ja?
>> OBČINSTVO: Ko je funkcija to_five traja x, kot je to argument,
ne sprejme x sebi, ampak namesto ustvari kopijo a, nje.
In tvori operacije na to.
Ampak zaradi tega, kar ne spremeniti dejansko vrednost x.
Ker ste [neslišno].
>> PULAK Goyal: Right, desno, tako da, ko pravimo
funkcija to_five, kaj delamo je razmišljal,
daj mi kopijo vrednost za to funkcijo.
Ta funkcija, nato pa se bo in delaš nekaj manipulacij.
Toda, ko se vrne, to je zdaj ven področja glavne funkcije tukaj.
In tako x je še vedno v bistvu enako 3, in tiskamo 3.
OK, tako da je videti, kako se to zgodi.
>> OK, tako da ni nič izjavil.
Potem, tukaj, x je enak 3.
In zdaj je is-- na položaju dva, je a še ne v področje.
In zdaj gremo na položaj tri, kjer zdaj prevzame vrednost od 3.
Ob štirih smo zdaj spremenili a do 5.
Toda zdaj, ko smo skok nazaj pet, ki je izjava tisk,
je a zdaj zunaj obsega.
X pa je vedno enaka 3.
Ali je to smiselno za vsakogar?
OK, tako da zdaj kaj je govoril o tem, kako moremo uporabiti napotke, da popraviti to.
Ima kdo kakšno idejo, kako smo To lahko popravite s pomočjo nasvetov?
>> OBČINSTVO: Vzameš v int zvezda namesto notr za to_five.
>> PULAK Goyal: Oprostite, bi lahko govorite?
>> OBČINSTVO: Vzameš v int zvezda namesto notr za to_five.
PULAK Goyal: OK, ja.
Torej, kaj je pass-- namesto menjavanja samo vrednost, dajmo jo prenese z referenco.
Ta nova funkcija, kajne?
In tako ob prehodu naslov, smo lahko storite manipulacije na naslov.
In tako smo v resnici, dejansko spreminja x.
Torej, da vidimo, kako to deluje.
>> OK, tako da v tem primeru smo to določen.
Spremenili smo naš podpis od to_five vzeti v int
zvezda namesto samo int tukaj.
Potem smo dereference to A in dodeliti 5 do njega.
In zdaj bo to, v resnici, natisnite 5.
Torej, da vidimo, kako se koraki delajo tukaj.
>> Torej s prvim korakom, nič še ni razglašena.
Torej tukaj, z drugim korakom, smo omenjeni x je enako 3,
vendar je še vedno zunaj obsega.
Zdaj pa ga je tretji vrstici, imamo x je vedno enaka tri.
In zdaj smo opravili in-- kaj je shranjeni na zdaj naslov x.
Ali, da je smiselno, da vsakdo, kako smo dobili to?
Dobro, imamo amper-- to je, kako smo opravili tudi ampersand x funkciji
to_five.
In potem v naslednjo vrstico, kaj storimo, je, da smo dereference a.
>> In Dereferenciranje A, smo sposobni spremenite vrednost x od 3 do 5.
Ker x živi na tem naslovu 0x12.
In nato, na koncu, ko smo se vrnili nazaj na glavno,
čeprav je zdaj to iz Področje, ki smo jih dejansko spremenila x.
In to je 5.
Vsa vprašanja v zvezi s tem?
Ja?
>> OBČINSTVO: Mi lahko poveste, kaj je bilo ampersand x?
Mislil sem ampersand bil všeč in.
>> PULAK Goyal: Ja, zato smo uporabili enako Simbol za veliko različnih stvari.
Torej, tukaj, ko have-- v V tem primeru, ko imaš,
Jaz tako guess-- v tem primeru, ko je imate opravka s kazalci,
Ko si dal 'znak spredaj za notr, spremenljivo notr, ali char,
ali tok, kaj praviš je, daj mi naslov tega.
Ampak tisto, kar je bilo v mislih, ko drug Da bi uporabili 'znak je, recimo,
v if stavku.
Imate res, in nekatere spremenljivke da oceni, do neke logičnim,
in nekatere druge spremenljivke da potrdi nekaj Boolean
in želite, da bi dobili, in da.
Potem bi uporabili 'znak.
SPEAKER 1: Ja, samo danes, ki smo jih govoril o treh različnih uporab
od ampersand.
Imamo dva ampersands, ki je kaj je Pulak pravkar opisal.
Imamo eno 'znak, ki je tisto, Camille je opisano
prej, ki je eden ampersand.
In to je za bitni IN.
In opazil, da sta pogojno in-- ali, žal,
logični IN in bitni IN, tisti, imate dve številki, kajne?
Nekaj, kar je bilo ampersand ampersand nekaj,
nekaj ampersand nekaj.
Tukaj, ko imamo samo 'znak nekaj, da je Dereferenciranje.
>> PULAK Goyal: Ja, super vprašanje.
Ja.
>> OBČINSTVO: Zakaj je v skladu 5a in zvezda je postala N / A?
Zakaj ne samo nekako obdrži Enake vrednosti iz prejšnje vrstice?
>> PULAK Goyal: Ker smo zapustili funkcijo.
In kaj torej happens-- tako what-- zdaj smo
iz področja uporabe te funkcije, kaj se zgodi, dejansko
je tistih, ki so odstranjeni iz spomina.
Ja.
>> OBČINSTVO: Med 3 ali 4 zvezdico enaka 5.
PULAK Goyal: Da.
OBČINSTVO: Kaj to točno pomenijo?
PULAK Goyal: Kaj to pomeni?
OBČINSTVO: Ja.
PULAK Goyal: Torej Vprašanje je bilo, kaj je
that-- kaj počnete na spletu ko rečemo, zvezda je enak 5?
Torej spomnite Star Operater dereference.
Torej če se v tem primeru, je kazalec.
To je int zvezda.
Torej, ko smo dereference stranski z zvezdo, kaj smo govoriš
je, pojdite na karkoli, se shranijo v naslov, shranjen v a-- tako take-- tako da,
zdaj, ima nekaj naslov shranjena v njej.
Pojdi tja, kjer ta naslov točke do in zdaj spremeniti karkoli, da je pet.
Ja.
>> OBČINSTVO: Lahko rečeš je na enostavnejši način?
Spremenite naslov do 5.
>> PULAK Goyal: Nismo spreminjanje naslov do 5.
A ima nekaj naslovov v njem, ki je naslov spremenljivke obresti.
In kaj smo govoriš ko smo dereference je,
Zdaj želimo change-- smo zdaj navajanje
Obrestna spremenljivka neposredno.
Ali je to smiselno?
>> SPEAKER 1: Drug način, da razmišljajo o je go-- tako da je naslov.
Zvezda pravi, iti, da obravnavati in pogled na svojo vrednost.
In zdaj je njegova vrednost do 5.
Tako pravi, pojdite na naslov x, ki
se bo tisto, kar je shranjeno v A, in jo spremenite v 5.
PULAK Goyal: Ja?
OBČINSTVO: Torej je položaj, kjer kazalec se dogaja, naslov.
Vendar je vrednost dodeljena vrednost, ki temelji na naslovu.
PULAK Goyal: Ja.
Vsa druga vprašanja v zvezi s tem?
OBČINSTVO: Imam vprašanje.
PULAK Goyal: Ja, žal.
OBČINSTVO: Torej, ko store-- tako če praviš [neslišno] a.
PULAK Goyal: Da.
OBČINSTVO: Ali imate na shranjujte X z ampersand?
Zakaj ne moreš samo reči x pred svojim int [neslišno]?
PULAK Goyal: SO-
OBČINSTVO: [neslišno].
PULAK Goyal: Torej je tvoj question-- oh.
Torej, vaše vprašanje je, zakaj ne more we-- na funkcijo to_five, zakaj ne moremo
samo opraviti x, kajne?
>> OBČINSTVO: Right.
>> PULAK Goyal: OK, ja, tako da je to zopet sega v naše razprave o vrstah.
Tako da je funkcija to_five zdaj Pričakoval tip int zvezde.
Torej, kaj je tip x?
X je samo int.
Toda kaj je ta funkcija pričakuje, da je int zvezda.
Zato se pričakuje spremenljivko, ki ima naslov je shranjena v njej.
Torej, to je, kako you-- dal ampersand, in tako, da je
kako se peljemo v naslov, ki je now--
in da je razlaga, ki kot int zvezda, ja.
Great vprašanje.
Vsa ostala vprašanja o tem?
OK kul.
>> OK, sedaj pa se pogovorimo okoli kazalca aritmetiki.
Torej, tukaj, dodajanje in odštevanjem i prilagodi kazalec
s i-krat velikosti tip kazalca bajtov.
Torej, si oglejmo, kako to izgleda.
Torej, tukaj smo razglasila int x enak 5.
In zdaj bomo razglasi kazalec y, in se peljemo v naslovu x tam.
Torej imamo to.
Torej je x shranjena na 0x04.
Torej, zdaj y je enak tistemu.
In mi lahko nekdo pove, kaj si mislijo se bo zgodilo, ko bomo y plus enak 1?
Ja?
>> OBČINSTVO: Bo spremenite 0 krat 0 8?
>> PULAK Goyal: Velikost in type--
>> OBČINSTVO: ste se gibljejo naslov.
PULAK Goyal: Ja to was-- ja.
SO- desno.
Torej bo to spremenilo na 0x08.
In because-- tako da bi to uporabili Formula, 1-krat večja od velikosti kazalca
in kazalci so size--
>> [ŠTUDENTI žuborenje]
>> PULAK Goyal: Right.
>> [ŠTUDENTI žuborenje]
>> SPEAKER 1: Tako je tip, ki kazalec točk to--
>> PULAK Goyal: Je, ja, Ja, to je 4 bajte.
>> SPEAKER 1: Torej Ints so 4 bajte.
>> PULAK Goyal: Torej, če smo a-- dajmo rekli smo izjavil, mislim, char.
Kaj bi that-- tako recimo mi imajo char x enaka ali nečesa.
In smo imeli naslov, ki na 0x04, kaj bi y plus je enaka 1 pa zdaj?
Oprosti, kaj?
>> OBČINSTVO: 0x05.
PULAK Goyal: 0x05, desno.
Ali so vsi videli, da je?
OK, zdaj pa recimo, da je plovec.
Kaj bi se zgodilo?
Kdorkoli?
Torej boje so, koliko bajtov?
>> OBČINSTVO: 4 bajte.
>> PULAK Goyal: Right.
Tako da bi bilo isto, kot je ta.
Cool.
OK, zdaj pa se pogovorimo o kazalci in nizi.
Torej, da ste videli to na prejšnja dva p določa,
kjer bomo lahko treat-- tako nizi in kazalci niso ista stvar.
Vendar smo lahko zdravi nizi kot kazalci.
Torej, tukaj imamo ta niz tod ki ima tri reže.
V prvem slot-- mi še ena, dva, tri.
>> Torej, če we--, da bomo lahko dodelite da z besedami, imamo niz,
dereference da.
In potem, ko smo razrešimo da je, kaj smo pravzaprav počne
je na isto odprtino.
Torej zvezda matrika enaka 1.
Mi could- kako bi pišemo that-- kaj je
nadomestni način, da bi lahko napisali, da je?
>> OBČINSTVO: Array 0 je enaka 1.
>> PULAK Goyal: Točno, pa vsi vidijo, da je?
Torej isto stvar s tukaj.
Torej, če imamo niz plus 1, smo tako even-- do--
ne pozabite, z aritmetično, da smo samo govori, ko delamo plus 1
ali pa preiti s 4 bajte, kajne.
Ali so vsi videli, da je?
In tisti strani, ko smo razrešimo da smo lahko nastavite, da na 2.
In to je, kako smo postavili Naslednji blok 2.
In tako nadomestni način za pisanje da bi tudi niz nosilec
0 konzola enaka 1.
>> OBČINSTVO: Ali potrebujemo oklepaje?
>> PULAK Goyal: Ja, ker ste Dereferenciranje celotno količino
matrika plus 1.
OK, in ista stvar za paleto plus 2.
Vsa vprašanja v zvezi s tem?
Ja.
OBČINSTVO: Torej matrika je samodejno nastavi na 0?
>> PULAK Goyal: Array is-- žal, kaj?
>> OBČINSTVO: Array 0.
Naslov matrike je samo 0.
>> PULAK Goyal: Torej, vprašanje je, je naslov niza le 0?
Torej, ne, matrika ima nekaj naslov.
Torej, ko smo dereference njej, that's-- tako da si lahko zamislite about--
dobesedno kot kazalec ki kaže na začetku matrike.
Tako da ima nekaj naslov.
Ne vemo, kaj je to.
Toda, ko smo dereference njej, vemo da je začetek array.
In tako, ko gremo s 1, smo šele premikanje
relativna, kjer je bila ta naslov.
Vsa druga vprašanja?
Ja?
>> OBČINSTVO: Torej, če vam Niz nosilec plus 1--
PULAK Goyal: Žal mi je, I-- lahko govorite?
OBČINSTVO: Ja, če vam Niz bracket [neslišno].
Torej, če si dal pointer--
PULAK Goyal: Oprostite, jaz vas ne sliši.
Lahko pa še enkrat rečem?
>> OBČINSTVO: Ti si v redu.
>> PULAK Goyal: OK, žal.
OK kul.
Any-- ja.
Ko gredo v matriki nosilec, tako da boste 3--
>> PULAK Goyal: Ja.
>> OBČINSTVO: --isn't there-- ne bi je štiri pike kot 0, 1, 2 in 3?
Zakaj se ne int paleto 2?
>> PULAK Goyal: No, tako preprosto je konvencija od C is-- ko izjavljamo array,
we-- številko smo dal tam je, koliko slotov želimo.
Toda indeksi polja so pravzaprav matrika 0, matrika 1 in nizi 2.
Torej, to je samo konvencija o tem, kako smo razglasitvi nize.
Ja, vsa druga vprašanja?
Ja.
OBČINSTVO: Torej smo še vedno govorimo o kazalci, kajne?
PULAK Goyal: Ja.
OBČINSTVO: Bi lahko še vedno zvezda za matrika 0 je enaka 1?
PULAK Goyal: Ne, ne, SO- OK, tako da je bilo vprašanje lahko
si naredil zvezda nizi nosilec nič, potem pa reči, da je enak 1.
Torej, ne, kaj smo govoriš tukaj je, da bomo lahko think--
moremo obravnavati nizi kot kazalci.
Tako smo have-- kaj smo rekel je, imamo dva načina
zdaj sklicevanje na istem bloku.
Torej doing-- če imate paleto nič, vrsta, ki je sedaj int.
In če ste vzeli zvezdo, da dobiš neveljaven stvar.
Torej, kaj smo govoriš tukaj, je obstajata dve nadomestni načini
sklicevati na istem bloku.
Lahko bodisi narediti niz bracket 0 je enaka 1.
Ali lahko naredite razrešimo matrika, in ima to enak 0.
Torej samo dva načina počne isto stvar.
Ja.
>> OBČINSTVO: Zakaj ni velikost int 1 dodati to--
>> PULAK Goyal: Velikost int 1.
>> OBČINSTVO: Ker je to premikanje eno off.
>> PULAK Goyal: Ker je to samo način C deluje.
To je samo način kazalec aritmetično je definirano.
To bo trajalo kazalec.
In potem karkoli dodati z njim, bo to število pomnožite
z velikostjo karkoli kazalec trgovina je, ja.
Ja.
>> OBČINSTVO: Torej praviš, da lahko zdravljenje kazalci in nizi enaki,
ampak da oni so drugačni.
Torej, kaj jih naredi drugačen?
Kaj ne moremo storiti z ena, druge pa ne?
>> PULAK Goyal: Za ta razred, mislim it's-- kaj you-- storiti
>> SPEAKER 1: Torej, we-- OK, tako, za Na primer, če ste dodeliti pomnilnika
in imate kazalec celo število, npr.
Če si se potrudil, da začnete početje kazalec aritmetično
in presegajo količino pomnilnika, ki vam dodelijo, boš naletite na napake.
Vemo, z nizi, smo rekli pred časom, OK, sem
želite allocate-- to v bistvu pravi, želim dodeliti
dovolj prostora za tri cela števila.
In tako zdaj smo lahko zdravi pomnilnika, kot če imamo vse tri od teh števil.
Ali toliko smisla?
>> PULAK Goyal: Ja.
Ja.
>> OBČINSTVO: Torej zvezda matrika, je, da je dodeljevanje 1
k 0 indeksom matrike?
PULAK Goyal: Da.
>> OBČINSTVO: Torej, kaj je po Naslednji dve vrstici v smislu the-- I
Razumemo, da skušate Za uporabo kazalca aritmetično tod
ampak spet, jaz ne razumem kaj kazalec aritmetična je.
Torej matrika plus 1, ste pravijo, da ste zdaj
dogaja, da bi rad govoril o Prvi indeks v matriki.
>> PULAK Goyal: Right, in tako Razlog, da deluje, je matrika,
Tukaj smo lahko zamislite kot int zvezda.
In tako, ko bomo kazalec aritmetično na njej, se spomnite formulo kjer
vzamemo the-- mislim karkoli trenutni naslov,
in potem, ko smo dodali 1 z njim, smo dejansko
pomnožimo 1 z velikostjo Stvar smo manipulirajo.
Torej, v tem primeru, velikost notr.
In potem smo ga premaknete naj ga, da je veliko.
>> SPEAKER 1: Torej pretvarjamo imate b matrično zvezdo.
PULAK Goyal: OK, ja.
SPEAKER 1: Z roko.
Pojdi tukaj.
PULAK Goyal: Ali lahko just-- ja.
Torej here-- OK, tako da matrika Na začenja, je ravno prav tukaj.
Torej, ko smo dereference array, smo bili Samo nanaša na prvi blok tukaj.
Toda zdaj, ko sem naredil paleto plus 1, ki is-- ta puščica je zdaj tukaj.
Ali je to smiselno?
Prav, ker ta blok je od velikosti int, ki je 4 bajte.
In tako, kaj delamo, je, da smo gibljejo, da kazalec za 4 bajte več.
Kadarkoli naredimo aritmetično na njej, bo vedno
premakniti povečevalo za 4 bajte.
Ker je to kot int zvezda.
Ali to smiselno?
V REDU.
>> OBČINSTVO: So stvari, ki jih v matriki Bilo je 5 bajtov, sva ga premaknite 5 bytes--
>> PULAK Goyal: Right, tako da, če bomo imeli char zvezda, sva ga premaknete samo 1 bajt.
Torej, v primeru char zvezd, to bi šele bilo, da se premaknete prevzel 1.
OBČINSTVO: Da bi dobili Naslednji morate zvezdo.
PULAK Goyal: Ja, ja, pa to smiselno?
SPEAKER 1: Mi lahko klepetate o tem več kasneje.
PULAK Goyal: Ja, ja, zagotovo.
OK kul.
Pojdimo v naslednjem poglavju.
SPEAKER 1: Oh, OK kul.
Ja, to sem jaz.
V redu, super.
OK, kul, zdaj sva na malo Več splošnih informacij o spominu.
Prav tako cenim dejstvo, da ti grejo precej hitro.
To je veliko gradiva, da bi dobili skozi eno uro in pol.
Ampak, če obstajajo kakršne koli vam teme želijo, da gredo bolj poglobljeno v,
bomo imeli Uradne ure v tem tednu
kjer lahko klepetate z nami ena na ena.
Ali pa bi le prišel gor na konec in bomo klepetali o stvareh.
In kot vedno, se počutijo prosimo, da postavljajo vprašanja.
Awesome.
Torej, tukaj je naša slika pomnilnika, ki smo videli v predavanju milijardo krat.
In vemo, da je ta sveženj raste od spodaj navzgor
in kup raste navzdol.
In kakšna je razlika med stvarmi da smo ostali na kup in stvari
da smo ostali na stack?
Nekdo je vrgel nekaj tam.
Ja.
>> OBČINSTVO: Je kup za stvari, ki so samo
minljivi spremenljivke, ki smo si samo razglasitvi uporabo določenih funkcij?
SPEAKER 1: Lepa, ja.
Torej, kadarkoli kje, kaj je pravijo, da smo v funkciji,
in imamo samo še nekaj lokalnih spremenljivk.
Tisti, ki se dogaja, da končajo na kupu.
Če pa pravimo malloc in dejansko dodeliti pomnilnika,
ki vedno prihaja iz kopice.
Torej, ja Zanimive?
>> In tako ne pozabite, da vsak spomin da si dodelijo uporabo malloc,
da se dogaja, da končajo na kupu.
In če ste pozabili brezplačno je, računalnik je
ne bo vedel, da je ste končali z njo.
Torej, to je le, da bo visi tam v spomin.
In ti si v bistvu pušča, da je spomin.
Ste ga izgubili.
Ker nikoli povedal računalnik, hej končam ga uporabljate, vas prosimo za uporabo,
dajo druge stvari tam.
Cool.
Vsa vprašanja tam?
Da.
>> OBČINSTVO: Torej kakšne spomina je kup?
Non dinamično krme, prenesla?
Kaj bi vam rečejo?
>> SPEAKER 1: Seveda, tako da boste lahko si o njej mislijo kot lokalne spremenljivke.
Dejanske klici funkcij se dogaja, da stack up.
Karkoli drugega?
Ja?
OBČINSTVO: Kako boste brezplačno pomnilnik, ki ga dodajo the--
SPEAKER 1: Seveda, tako da, ko boste dodeliti spomin na kupu, pokličete malloc.
In tako potem vam daje nazaj kazalec na nek naslov v pomnilniku.
Tako pravijo, da si poklical, da je kazalec, kajne?
Potem si pravkar rekel brezplačno kazalec.
In da se sprosti pomnilnik.
Cool.
Druga vprašanja?
Da.
>> OBČINSTVO: Kaj počne dinamično dodeljen pomeni?
>> SPEAKER 1: Dinamično dodeljena pomeni, v okviru svojega programa.
Torej, če pokličete malloc v srednji vašega programa,
na začetku programa, ni pomnilnik dodeljen.
In kot je v računalniku korak s to oznako,
to se dogaja, dodeliti pomnilnika.
Torej, to je tisto, kar mislimo z dinamično.
Dobro vprašanje.
Ja?
OBČINSTVO: Ko definirate matrika z oglatimi oklepaji,
pa da še vedno [neslišno]?
SPEAKER 1: To je dobro vprašanje.
Mislim, da ko si razporediti array, dejansko postavlja na sklad.
Nisem pozitiven odnos da, tako da me ne citiram.
>> SPEAKER 2: Mislim it-- ja jo postavi na kupu.
>> SPEAKER 1: ga postavi na kupu.
OK, kul, potrjen.
Druga vprašanja?
Ja?
>> OBČINSTVO: Ko prenese malloc, ne računalnik samodejno
dodeliti pomnilnika za spremenljivke?
SPEAKER 1: Ja, za vaše lokalne spremenljivke,
samodejno postavi spomin na kupu.
OBČINSTVO: Torej, kaj je točka uporabo malloc?
SPEAKER 1: Kaj je točka uporabo malloc?
Tako smo videli kup primerov, kot so, na primer, z uporabo zamenjave,
kjer želimo obseg spremenljivka biti nekaj
več kot le njihovo funkcijo klica.
In želimo nekaj da bomo lahko podajaš
in da bomo lahko dostopate iz različnih krajev.
To je, če bi se želimo dal spomin na kupu.
Torej, da so vsi ti različni funkcije lahko dostopate do njega.
>> OBČINSTVO: Lahko si razložil?
>> SPEAKER 1: Torej, ena od možnosti, tako da is-- Vprašanje je bilo, lahko smo samo allocate--
Žal, lahko razglasi Globalna spremenljivka, v bistvu.
To je ena od možnosti.
Vendar z veliko tistih, tistih ponavadi dobijo res grdo.
In smo na splošno mislim, navedene kot slabe zasnove.
Ja.
Cool, katera koli druga vprašanja?
Awesome.
OK, ki se gibljejo na.
Torej, to je pravzaprav kako dodeliti pomnilnika.
Pogovarjala sva se o tem malo.
Mi uporabljamo to funkcijo imenovan malloc.
In ti povem, koliko bajtov pomnilnik, tako da koliko bajtov na kup,
ti hočeš.
In to se dogaja, da se vrnete na naslov, tako kazalec, kos pomnilnika
da je to namenila za vas.
Torej je tip bo nična zvezda.
To se dogaja, da je kazalec na karkoli se boste odločili, da dajo noter.
Vsak čas pokličete malloc, smo že povedali
moraš sprostiti, zato smo nimajo spomin razpoka.
>> Kaj je druga stvar da vas absolutno
moraš narediti vsak Čas pokličete malloc?
OK, boste morali, da ga osvobodi.
Kaj je druga stvar?
Preverite za nično, lepo.
Torej, ja, to je pravica tam gor na krovu.
Če bi poskušali dodeliti spomin in ste brez spominskega levo,
Računalnik je reči, Jaz nimam nič, da bi vam.
In to vam daje nazaj null.
Vprašanja o tem?
Ja.
>> OBČINSTVO: Zakaj bi si kdaj želeli, da razglasi kazalec s posebno vrsto
ko lahko nična zvezda ročaj vse vrste kazalec nekako?
SPEAKER 1: Dobro vprašanje.
Zakaj bi rekli int zvezdo v nasprotju z izničijo zvezdo
ko lahko nična zvezda uredila vse?
Torej, ne želimo, da nikoli izrecno cast kazalce.
To je samo slaba praksa.
Ampak bomo govorili o int zvezdami prav tako kot razumevanje,
Ta kazalec na celo število.
>> OBČINSTVO: OK.
>> SPEAKER 1: Ja, in omogoča ste manipulirati vrednosti v njej
kot cela števila.
>> OBČINSTVO: Oh, v redu.
In neveljavne zvezda ne bi pustil to naredil?
>> SPEAKER 1: To je odvisno od kontekst Ja, zato ne skrbite
Ne skrbite preveč o vrsti tam.
Samo vem, da na splošno, malloc vrne kazalec na nekaj.
Dobro vprašanje.
>> OBČINSTVO: Zakaj se množijo je krat 10? [Neslišno].
>> SPEAKER 1: Seveda, tako da sem bil samo početje naključno primer tukaj, kjer
Želel sem, da dodeli dovolj Prostor za shranjevanje 10 cela števila.
Samo naključna izbira.
Ja.
Ja, kaj se dogaja?
>> OBČINSTVO: Kaj morate storiti pomeni s preverjanjem null?
Ali želite, da preverite kazalec za nično ali knjižnične funkcije malloc?
SPEAKER 1: Ja, točno.
Torej, vprašanje je, kaj mislimo s pregledom, ki ga null?
Želimo to-- kadarkoli pravimo malloc in smo se vrnili kazalec,
želimo povedati, je kazalec enaka NULL?
Torej dobesedno PTR.
Je PTR enaka NULL.
Da.
OBČINSTVO: Torej, sem bil nekako sprašujete, če vas
inicializirati kazalec v knjižnične funkcije malloc, ne pa opozarjajo na začetku knjižnične funkcije malloc?
Ker če to je array--
SPEAKER 1: To je odlično vprašanje.
Ja, če pokličete malloc je kazalec, da it-- recimo,
tako da tukaj smo dodelila 10 bajtov pomnilnika.
Torej, žal mi je, dovolj prostor za 10 celih števil,
bomo dobili naslov da prvi del pomnilnika.
To je dobro vprašanje.
Ja.
>> OBČINSTVO: Z dodelitvijo 10 razširjena cela števila,
bi ga lahko dejansko uporabili, da kazalec kot like-- skoraj
kot niz števil?
SPEAKER 1: Ja, tako da lahko jo uporabite kot niz celih števil?
Ja, točno, to je tisto, Pulak samo pokazala vam on-- nekaj drsi nazaj,
kjer smo rekli, v redu, to je res nekako of-- smo
Lahko si o njej mislijo kot Niz 10 števil.
To se zgodi le, da je na kupu.
OBČINSTVO: Ampak ti ne bi mogla dostop je z oglati oklepaj zapis?
SPEAKER 1: Vi dejansko lahko dostopate je z oglati oklepaj zapisu, ja.
Lahko jim obravnavati enako.
Da.
>> OBČINSTVO: Zakaj bi Pointer kdaj je ničen?
>> SPEAKER 1: Zakaj bi Pointer kdaj je ničen?
Če boste uporabili gor vse spomin na kupu.
Če je vaš program jedo up, jedo, jedo up spomin,
in ni nič levo, nato malloc se dogaja, da say-- če rečeš,
Hočem 100 več bajtov, to se dogaja reči, da nimam 100 bajtov.
Tukaj je nična.
To pomeni, da mi ni uspelo.
Da.
>> OBČINSTVO: V tem primeru, null nič, kajne?
>> SPEAKER 1: Ja, s tem, da primer, null nič.
Nimaš naslov.
Ni spomin.
Vse pravice, ki se gibljejo na.
OK, kaj je govoril zelo hitro o buffer overflow.
Kdaj lahko srečamo buffer overflow?
Recimo, da imamo a-- smo dodeli kos pomnilnika,
in bomo napisati niz v.
In bomo rekli, OK, bom dodeliti
dovolj prostora za šest znakov.
In jaz bom prosil uporabnik za nekaj vhod.
In inputi uporabnik, na primer, zdravo.
In da se popolnoma ujema globe, ker imamo
prostor za vse znake za zdravo, in null zaključni znak.
Veliko prostora, brez problema.
>> Kaj pa če damo priložnost za zlo uporabnik uporabljati naš program,
in ti tip v ne šest znakov, ali ne pet znakov, ampak milijon.
Vodijo tipkanje in tipkanje, in tipkanje, kaj se bo zgodilo?
Pa smo le daje Računalnik enough-- ali žal,
smo dali le ta niz dovolj prostora za 5 znakov.
Torej, bomo dobili nekaj podobnega to, kjer zlo oseba, ki je
tipkanje na vhodu lahko prepisati velikost pufra,
in lahko gredo dejansko mimo višini ki je bila prvotno dodeljena.
In potem, kaj lahko storite, je res zlo, kar lahko storite,
je prepisal naslov pošiljatelja.
Kar v bistvu pomeni, lahko nekako sprejme
kontrola obnašanja programa.
Torej, na zelo visoki ravni buffer overflow je, ko
vam dodeli neko količino pomnilnika.
In potem you-- to zato, ker ste ob vnos uporabnika ali kaj podobnega
kot that-- greš čez meje kaj ste prvotno dodeljena
in začnite mesijanski ki gre gor svoj program.
Ja?
>> OBČINSTVO: Zakaj ne bi, da je samo vrne napako segmentacije?
>> SPEAKER 1: Zakaj ne bi, da vrne napako segmentacije?
To je lahko.
Včasih prevajalnik ali Med enega od vaših runtime
se dejansko dogaja, da preverite to.
Če nekatere stvari se dogajajo, in to je nekako nižji ravni,
potem morate vedeti.
Ampak, če ne oblikujejo pravilno ti sistemi,
potem imate priložnost od ne-lov in samo
omogoča računalnik take-- zlo oseba za nadzor vaš računalnik.
Ja.
>> OBČINSTVO: [neslišno]?
SPEAKER 1: Seveda.
Oh, ko sem rekel, buffer, sem samo pomeni količino pomnilnika, ki ste jih dodeli.
Torej, tukaj sem rekel, oh, smo dodeljenih šest char-- dovolj prostora za šest znakov.
In sem poklical, da je moj buffer kjer sem lahko napisati podatke.
Ja.
Vsa ostala vprašanja o tem?
Ja.
>> OBČINSTVO: Kako ga ustaviti?
Kako ga ustaviti?
SPEAKER 1: Awesome vprašanje.
Kako ga ustaviti?
Kako preprečiti buffer overflow?
No, eden od načinov, da to storite, je nekaj podobnega GetString, kjer smo nenehno povečujejo
količina pomnilnika, da dodeli če uporabnik vnese veliko besedila.
Druga stvar je le, če vas želijo šest znakov, naredite hiter pregled.
Reci le vhod šest znakov.
Ja.
Torej, recimo, da ste bili delajo on-- gremo
iti na spletni stvari malo kasneje v course-- ampak dajmo
pravijo, delate na obrazcu, bi si samo omejiti, koliko bi izročil v.
Ja.
>> OBČINSTVO: GetString potegne spomin iz dimnika, kajne?
Samo, da pojasni?
SPEAKER 1: Še enkrat?
OBČINSTVO: Ali GetString bo spomin iz dimnika?
SPEAKER 1: Verjamem Getm-- get int je spomin iz kopice
ker zahteva Aloc.
OBČINSTVO: Oh.
V REDU.
SPEAKER 1: Ja, malloc in realloc.
Druga vprašanja?
Ja.
>> OBČINSTVO: Torej z opredelitvijo velikost pufersko
boste preprečili nekoga iz bi mogli injicirati kodo
da lahko drsi mimo [neslišno].
>> SPEAKER 1: Torej, z opredelitvijo velikost pufra,
da ste rekel, OK, tukaj je, kako pomnilnika lahko uporabimo.
Če dovolite uporabniku, da napišete nad njim, potem boste zašli v težave.
Ima smisel.
Awesome.
Gremo skupaj.
V redu.
Ko že govorimo o napakah, tu so nekatera sporočila pogosta napaka
da bi odkrila, ko ste bili kodiranje, ki delajo na vaših sklopih problematike.
Dobra priložnost, da je eden od to kaže na kvizu
če so pretekle let znamenje.
Torej, odgovori so nekako tu gor na krovu.
Vendar vas prosimo, da kričati ven nekaj več.
>> Zakaj bi napaka segmentacijo zgodilo?
Zakaj ste morda dobili napako segmentacije Ko ste tekmovanje v teku svoj program?
>> OBČINSTVO: [neslišno].
>> SPEAKER 1: Dobro.
Ja, če bomo poskušali dostop pomnilnika, ki je ne glede na nas.
Če bomo dereference null kazalec.
Na primer, če pravimo malloc, in pozabi, da preverite, če je nična,
in smo samo poskušali njegovo uporabo, računalnik je dogaja, da nam napako segmentacije.
Dobro.
Kaj pa implicitna Izjava funkcije?
Kaj to pomeni?
OBČINSTVO: Poizkušate uporabite Funkcija, ki ste jih niso opredeljeni.
SPEAKER 1: Dobro.
Skušate uporabiti funkcijo da niste določili.
Tako, da bi lahko bil eden od dveh stvari.
Mogoče je bilo tako kot na primer Camille ti pokazal prej.
In imate glavno funkcijo ki zahteva nekaj, kar ti kocka.
In recimo, da si pozabil napisati ta prototip.
Pozabil si povedati, hej računalnik, Imam to funkcijo imenovano kocko.
Boste videli kasneje.
Recimo, da si pozabil napisati Prototip, boste morda dobili to napako.
Druga stvar je, recimo, Ste že poskusili uporabiti printf,
in pozabil, da so standard knjižnica,
potem je reči implicitna Izjava funkcije.
In nazadnje, vendar ne najmanj pomembno, neprijavljeno identifikator.
Ja.
>> OBČINSTVO: Imaš obseg problema.
Tako kot morda skušate pokličite lokalno spremenljivko, ki je
v drugem vrste vrata.
SPEAKER 1: Velika, tako da, če imate spremenljivka, ki ni v obsegu,
in skušate uporabiti, boste dobili v težave.
In samo bolj na splošno, recimo ga skušate uporabiti, x, z vedno rekel int
x je enak 5, potem ste tekoč teči v težave.
Oprostite, vprašanja o tem?
Super, chugging desno skupaj.
>> OK, rekurzija, zakaj might-- Dovolite see-- Izgubil sem sch-- oh gremo,
Samo poskrbite, da sva približno po urniku.
V redu, v redu.
OK, rekurzija, splošna ideja rekurzije, rekurzivna funkcija
je funkcija, ki sebe imenuje.
OK, tako da je kaj sem pomeni s programsko zasnovo
pri čemer se funkcija klice.
Kaj bi bilo some-- kaj je dober razlog za uporabo rekurzije?
Ko bi bilo lahko koristno?
Ali kakšen program, ki res sama posoja rekurzije?
>> OBČINSTVO: Binarni iskanje.
>> SPEAKER 1: Binarni iskanje dovzetni za rekurzije,
ker imate ta problem, ki vas mogoče razčleniti na manjše koščke,
in neprekinjeno opravljanje enaka algoritma na njej.
To vodi k, v številnih primerih, bolj Elegantna kodo, ki je bolj natančen.
Pravkar smo na primer binarnega iskanja.
Drug primer je združiti vrste.
Včasih, ko si misliš o algoritem, kot faktorski,
to samo zdi rekurzivni, kajne?
Ker vemo, da je faktorski 5 je faktorski 4 krat 5.
In tako, ko ste nastavili težave na ta način, samo počuti rekurzivna.
Tako, da bi bila Odličen način, da jo pišejo.
Vprašanja?
Da.
>> OBČINSTVO: Kaj je osnovna?
>> SPEAKER 1: Oh, kaj je osnovna?
Rekel sem, da ne pozabite vključiti bazo primera.
Recimo, da smo pisno faktorski funkcija,
in smo počeli fakulteto 5.
In vemo fakulteto 5 je 5 krat faktorski dne 4.,
bla, bla, bla, bla.
Kako vemo, kdaj je treba prenehati?
Kako vemo, da smo dejansko imajo številko?
Ker če bomo klical factorial, potem mi nikoli ne bi dobili odgovor, kajne?
Torej, ko ne vemo, kako stop na primer faktorski.
Vsakdo, ja.
>> OBČINSTVO: Ko je 1 factorial 1.
SPEAKER 1: Dobro.
Torej vemo.
Mi lahko samo po sebi umevno, da 1 faktorski enak 1.
Torej, če bomo prišli do točke, ko smo kličeš fakulteto na 1,
samo pojdi naprej in se vrniti 1.
In to je tvoja osnovna.
Ker vemo, ko smo zadeli, da je in bomo vedno hit, da bomo never--
ne bomo kar naprej dogaja vedno.
Vsa druga vprašanja o rekurzije?
Da.
>> OBČINSTVO: Torej, ko se vrnete 1, le samodejno
bo ustavil program, kajne?
>> SPEAKER 1: Ja, tako ko ti pokličite donos 1, if-- recimo,
recimo faktorsko 2 klicev faktorski po 1, faktorsko od 1
bo samo vrniti 1.
In zdaj bo faktorski dne 2. reči, OK, 2 krat 1 je 2, in se vrniti ta odgovor.
Da.
>> OBČINSTVO: Ali moramo skrbeti o obsegu v rekurzije
ko greš v algoritmu?
>> SPEAKER 1: Ah, ja.
Ja, moraš skrbeti Področje v okviru rekurzijska.
Torej le spremenljivke definirane v tej vožnji funkcije
se dogaja, da je koristen.
Ja, dobro vprašanje.
V redu, dajmo premikajo skupaj.
Ker imamo veliko Material priti skozi.
Ampak kot sem rekel, vas prosimo, da hit gor uradnih ur, ali pa nas po dejstvu.
>> To je samo res hitro slide.
Veliko smo se naučili o iskanja in vrste.
Prosim, prosim, prosim, Ti oddelki so na spletu,
Verjamem v cs50.net/quizzes~~pobj.
Torej pojdite to tabelo in ga dal na svojo oceno stanja,
saj ne bo vprašanje o tem.
Prosim, ne dobijo to narobe.
Samo zelo hitro, kaj to grafikon pomeni,
se govori o Big O, kar vemo da je zgornja meja za algoritmov
čas teče.
In imamo omega, ki je bo spodnja meja
AN algoritmov izvajanja.
V REDU?
>> OBČINSTVO: [neslišno].
>> SPEAKER 1: Ja, kaj je zadnja stvar?
Kaj je theta?
To je, če we-- bomo le mar v tem razredu v primeru
kjer naša zgornja meja in naša spodnja meja sta enaka.
Ja, to je edini čas, ko je dogaja, da pridejo v tem razredu.
OK, bom nadaljuj.
Če niste jemali vašo sliko Obljubim, da ti bo na spletu.
>> OK, super, konstruktov.
Zakaj bi mi želeli konstruktov?
Kaj je koristen razlog bomo morda želeli konstruktov.
Nekdo kričati nekaj ven.
No, kaj je pogled na Primer na krovu.
Recimo, da imamo opravka pri vseh teh študentov.
Če smo kar program za CS50, obstajajo kot 800 ljudi.
Moramo write-- bomo potrebno ravnati veliko informacij
glede študentov.
Bilo bi lepo, če smo lahko nekako skupine
this-- vse informacije, ki ima opraviti s posebnim študent
v eno vrsto podatkov.
Vendar vemo, da ni podatkov tip klical, Student, kajne?
Imamo celo število, imamo float, imamo niz, ali zoglenel zvezdo,
vendar nimamo, študenta.
>> Tako smo lahko naredite, je pravzaprav neke vrste opredeliti naša lastna konstrukcija, pokličite ga študent,
in bomo lahko povezali nekaj različna področja s tem struct.
Torej, v tem primeru, kaj je pravijo, da imamo študenta.
In stvari, ki jih skrbi o sta študent ID številka
in študenta ime.
In zdaj smo lahko povežemo ID in to ime z dano študenta.
Torej, poglejmo nekaj primerov.
>> OK, tako da tukaj sem rekel, OK, dajmo pravijo, želimo, da bi študent.
Kličem ga študent 1.
In njegova identifikacijska številka, v V tem primeru bomo lahko dostopate
s samo delaš ime študenta dot polje želimo dostopati.
Torej, to se dogaja, da samo se študent 1 pika ID, in smo si zadali, da enaka 1.
Saj se spomnite, smo rekli, da ID se bo celo število.
In zelo podobno, lahko rečemo, to ime študenta se bo Davin,
npr.
Tako smo lahko le dostop polje iz struct uporabo te pika.
Vprašanja o tem?
Ja.
>> OBČINSTVO: Ali obstaja način zaščititi svoje spremenljivke?
Ali obstaja način, da zaščitite spremenljivk ne bi zunaj dostopen?
>> SPEAKER 1: Je torej nekako zaščititi svoje spremenljivke
ne bi zunaj dostopen?
Ne v obsegu CS50.
Druga vprašanja?
Ja.
>> OBČINSTVO: Kaj je typedef struct?
Kaj pomeni vsaka komponenta pomeni?
SPEAKER 1: Ah, kaj je typedef struct?
Kaj vsako komponento pomeni tega fanta?
>> OBČINSTVO: Ja.
>> SPEAKER 1: OK, kul.
Torej, ta pravi, hej računalnik, sem želite ustvariti novo strukturo.
In bom, da se opredeli definicijo za to, tako da sem lahko uporabite
kot da bi bila vrsta celotnem mojem programu.
OK, zato želim, da se opredeli strukturo.
In jaz zdaj bo lahko jo uporabite kot vrsto.
In njeno ime je študent.
In tu so polja njegove.
>> OBČINSTVO: Tako je, da typedef struct [neslišno]?
SPEAKER 1: Če želite, da bi lahko uporabite to struct v vašem programu,
in v večini primerov v CS50 mi storiti, moramo reči tipa Def.
In da mu omogoča, da jo uporabljajo isto način, ki ga uporabljamo kot int ali float.
Računalnik bo Vedno vem, kaj je to.
Ja.
>> OBČINSTVO: Ali lahko napišemo to v glavi datoteke?
>> SPEAKER 1: Oh, oprostite.
Ali smo napisali to v glavi datoteke?
Lahko bi to napisali na vrhu Program, na vrhu c programa.
Ja, to bi bilo najbolj smiselno mesto za njo.
Nazaj tam.
PUBLIKA: Same vprašanje, tako da pred glavni?
SPEAKER 1: Pravica, boste morali, da je to nekje, da lahko vsakdo dostop do nje.
Torej, preden glavni v vašem primeru, ja.
OBČINSTVO: Ali obstaja razlika med dajanje študenta na vrhu in na dnu?
SPEAKER 1: Ah, obstaja Razlika med dajanjem študenta
na vrhu ali na dnu?
Let-- rešiti to vprašanje, in ko pridemo do povezanih seznamov,
bomo videli, da je v redu?
Torej imajo na, da je za eno sekundo.
Zadnja stvar, želim omeniti, je namesto s strukturo,
imamo kazalec na strukturo, moremo spremeniti naš zapis
da bo malo lepše.
>> Rečemo lahko, recimo, da imamo kazalec na študenta, ne pa samo
študent.
Če želimo dostop do polja, namesto tem dobro iti dereference kazalca,
in nato dostopate ime polja.
Ta zapis izgleda malo grdo z zvezdo v tem piko.
Popolnoma pravilna, ampak neke vrste čistejše način, da to storite,
je samo reči kazalec puščico ime.
In da je pravzaprav združuje Dereferenciranje in dostop v eni lepi simbol.
Vprašanja o tem?
>> OBČINSTVO: samo povem, da še enkrat.
>> SPEAKER 1: pravijo, da še enkrat.
>> OBČINSTVO: Točno to, kar ste pravkar povedali.
SPEAKER 1: Seveda, točno kaj pravkar sem rekel.
Če imamo kazalec na študenta namesto študenta samega,
smo can-- en način, da lahko dostopate do polje s dereference njem, in nato
Ime dostopne.
Drug, lepše način lahko to storite, kar je le
malo sintaktične sladkorja, je samo narediti kazalec puščico ime.
In to se dogaja, da se združujejo Dereferenciranje in dostopanje.
Ja, precej kul.
V redu.
>> Torej, kaj je govoril o drugem vprašanju.
Oglejmo skok do vozlišč, katero bomo uporabili
V povezane sezname v samo sekundo.
Torej, tukaj, boste opazili, da obstaja je beseda vozlišče tako na dnu,
ter na vrhu.
Prej, ko smo opredeljevanju študent, smo pravkar imeli študenta na dnu.
Nismo imeli študenta na vrhu.
Kdo ve zakaj, da bi lahko bilo?
Kakšna je razlika?
Ja.
OBČINSTVO: Torej ste uporabili vozlišče je definicija vozlišča,
tako da je rekurzivna stvar?
SPEAKER 1: Dobro.
Ja, moramo naše vozlišča imajo kazalec do drugih vozlišč.
Zato, ker bomo uporabili to vrsto preden je dejansko opredeljena,
ga moramo postaviti na vrh samo zato, da se ve, kaj je to.
OBČINSTVO: Torej smo še vedno potrebovala na dnu?
SPEAKER 1: Da.
SKUPINA: Torej vedno na dnu.
ZVOČNIKI 1: vedno na dnu.
Torej vse tvoje bo ga ima na dnu.
Vsa druga vprašanja?
Vse je v redu, tako da omogoča dejansko govoriti o povezana sezname res hitro.
Tako povezani seznami are-- smo jih uporabili namesto nizi v nekaterih primerih
ker vemo, da so nizi fiksna dolžina, ker so povezane sezname
bomo lahko rastejo in skrči, kot smo želeli.
Torej, to je primer, kaj vezavni seznam bi izgledal.
Kaj moramo videti je, vodja seznama.
Torej, če se seznam začne.
In potem je vozlišče, vsaka naknadno vozlišče, je
odgovorni za poznavanje kjer je naslednje vozlišče.
Torej, v tem primeru je vozlišče, ki shranjuje 1 Odgovoren je za vedo, kje je 3.
Oseba, ki shranjuje 3 odgovoren za vedo, kje je 9.
In 9 ni nikogar drugega, ki kaže na.
Konec seznama, tako da samo pravi null.
V REDU?
>> OBČINSTVO: Kaj je smisel tega?
>> SPEAKER 1: Kaj je smisel tega?
>> OBČINSTVO: Ja.
SPEAKER 1: Ker Dovolite pravijo, da imamo nekaj podatkov.
In ne vemo točno, kako veliko podatkov želimo pred časom.
Torej z vrsto, recimo, kje smo želijo, da računajo ljudem v prvi vrsti.
Verjetno se ne bo spremenilo.
Lahko samo rečem, OK, sem želijo paleto velikosti šest.
Toda, če hočemo kaj da se bo spremenilo.
>> Na primer, recimo, da sem bil težaven slediti študentov
ko pridejo v sobo za sejo pregledu.
Nimam pojma, koliko od vas ljudje se bodo prikazali.
Torej bi Želim podatkovno strukturo da sem lahko razširi in skrči.
Saj morda bo nekdo pustite, morda bo nekdo prišel.
In tako kadarkoli smo lahko dodate ali odstranite vozlišč.
Kul, super vprašanje.
Ja.
>> OBČINSTVO: Če lahko uporabljate nekaj podobnega GetString
ki ohranja najemnin dobiš več podatkov, kot jo potrebujete, zakaj morate to preveč?
>> SPEAKER 1: Zakaj bi jih uporabljate povezani seznam, kadar
lahko uporabite nekaj podobnega GetString?
To je dobro vprašanje.
Ne pozabite, da Get-- eno so padci od GetString
je, da nismo storili zelo dobro delo sprostitve ta pomnilnik,
in smo uvedli kup spomin razpoka v vaš program?
Lahko bi jo tudi sprejeti statično velika niz in ga hranite raste.
Ampak bi si moral najti novih krajev v spomin.
Treba bi bilo samo veliko režijske stroške.
>> Ena od lepih stvari o tem povezana Seznami v nasprotju z nizi, je nizi
so vsi na isti lokaciji v pomnilniku.
Mora biti stalno kose pomnilnika.
Ker je povezanih seznamov, 2 in 3, lahko popolnoma na različnih lokacijah.
Like 2 je tukaj, in 3 je tukaj.
In v kolikor imajo kazalec, da drug drugemu, da je v redu.
Vemo, da smo jih lahko našli.
Vprašanje tam?
>> OBČINSTVO: GetString je funkcija v knjižnici CS50, kajne?
To ne obstaja v dejanskih programov.
>> SPEAKER 1: Pravilno.
V redu, to je druga stvar.
GetString ne obstaja zunaj konteksta CS50.
Ja.
>> OBČINSTVO: Torej, ne dejstvo, da je dve bi bilo res daleč narazen,
ne, ki vplivajo na učinkovitost dostop do elementov na seznamu?
SPEAKER 1: To je veliko vprašanje.
Vprašanje je bilo, to ne vpliva učinkovitost dostop
ti različni elementi na seznamu.
Pravzaprav, ja.
Ker vemo if-- dovolimo pravijo želimo dostopati
drugi element matrike, poznamo moremo pač nizi nosilec 1, desno.
To se vedno dogaja, da biti isti lokaciji.
Toda, če želimo priti do tega 3, ne moremo kar reči, pojdi, da 3.
Moramo reči, OK, začnite pri začetek seznama
in zdaj imamo dejansko na sprehod skozi, dokler ne bomo
najti številke nas zanimajo.
>> Torej, v tem primeru rečemo, OK To je prva številka.
Torej v bistvu, da je indeks 0.
Zdaj moramo najti drugo številko.
To je indeks 1.
Tako da se dejansko dogaja to-- samo dostopu, se dogaja, da sprejmejo N časa.
Cool, big star N. Ja.
>> OBČINSTVO: Kaj so vsak seznamov?
So vsak nizi, ali kaj?
SPEAKER 1: To je odlično vprašanje.
Kaj sta vsak izmed strukture, ki sem pripravljena?
So vozlišča.
Tako da vsak od njih malo struktura ima dva dela.
Ima celo število, ki ima.
To je dejanski podatki da se je držite.
To je vrsta koristnih del.
In to je tisto, zaradi česar je povezani seznam,
ima kazalec na naslednje vozlišče.
Awesome vprašanje.
Vse je v redu, tako da je videti zelo Hitro poglej nekaj primerov, kaj
smo lahko naredite s povezanimi seznamov.
>> Torej, en zelo preprost primer je, Recimo, da želimo, da to iskanje.
Kakšno iskanju ne morejo delamo na povezanih seznamih?
>> OBČINSTVO: Binary.
>> SPEAKER 1: Binary.
Zakaj ne moremo uporabiti binarno iskanje?
>> OBČINSTVO: [neslišno].
SPEAKER 1: Right, ker se z binarno iskanje, smo se morali sklicevati na dejstvo,
da bi lahko le skok v matriki na kateri koli točki.
Mi lahko samo rečem, pojdite na srednji element.
S tukaj, kot smo rekli malo prej,
ne moremo samo skočite na srednji element.
Da bi našli katero koli element, smo dejansko
hoditi skozi naš celoten seznam.
>> Torej, če smo želeli narediti iskanja, najboljše, kar lahko naredimo, je samo linearna iskanje.
Začnemo na čelu, smo check-- recimo smo
išče 9-- začnemo na čelu.
Pravimo, je to 9?
No.
Je to 9?
No.
Je to 9?
Ja, smo ga našli.
OK, to je to.
Tukaj je malo psevdo-kodo.
Bom zapustil to za vas fantje churn več sami,
samo zato, ker smo teče malo v stiski s časom.
>> Lets govoriti o vstavitvi.
Videli smo res kul demo to v predavanju, kjer smo rekli,
OK, imamo to povezano seznam, če vsakdo je obrnjena drug proti drugemu,
in nekdo pride na oder.
Kako vstaviti, da oseba v našem povezano seznamu?
No, napačen način, da to, kar je mislim, da kar smo videli prvič,
je, ko je oseba v spredaj samodejno
je opozoril na novo osebo.
In potem smo nekako opustili v drugi polovici seznama, kajne?
Ker ne vemo, kje je v pomnilniku več.
Torej biti zelo previdni glede Vrstni red, v katerem smo vstaviti stvari.
>> Torej, tukaj, recimo, da želimo čaka 1 na prednjem delu našem seznamu.
Najprej imamo 1 točko na Drugi element-- ali element
ki vsebuje 1.
Torej, bomo to storili, samo zato, da ne bomo boste izgubili drugo polovico.
In zdaj, bomo lahko imeli glavno točko 1.
Torej še enkrat, to je samo kot super visoki ravni.
To je, kako bi mi vstavili vozlišče.
Imamo veliko psevdo-koda here-- žal,
Ne vem, zakaj sem kliče psevdo-kodo.
To je dejanska koda.
Lahko greš pogledat kasneje.
>> V redu, je zelo quickly-- več vprašanj
na povezanih seznamih, preden sem premakniti na par drugih podatkov
strukture v naših zadnjih 10 minutah.
>> OBČINSTVO: Ali moramo zdaj kako jo napisati na test?
>> SPEAKER 1: Ali moramo vedeti, kako to--
>> OBČINSTVO: Napišite na testu.
>> SPEAKER 1: Mi potrebujemo to-- ti bi morali biti pripravljeni
pisati, vložek, odstranite in iskanje povezanih seznamov na test.
To je nekaj, kar smo lahko pričakujemo, da narediš.
Pojdi nad njim.
Če imate kakršnakoli vprašanja o Koda, ustrelil svojo TF e-pošto,
prišli do uradnih ur.
Še vedno je veliko časa za študij, ne skrbi.
Vse je v redu, vsak drugi Vprašanja o povezanih seznamih?
Da.
>> OBČINSTVO: Torej, če ne uporabljate kazalec, da gredo na eno na desni
Preden uporabite kazalec za tista na levi, ki je
ekvivalent brisanje vse, kajne?
SPEAKER 1: Ja.
OBČINSTVO: [neslišno].
SPEAKER 1: Pravica, saj ne moremo razumem, da je v resnici še slabše.
Ker ne samo, da ne vemo, kje je, ne moremo več uporabljati,
ampak we've-- nisva sprostiti ta spomin več.
Torej, to je samo visi okoli in ne koristno, saj nam ga ne more najti.
Ja, kul vprašanje.
>> Vse je v redu, kaj je govoril o skladih.
Zelo hitro smo videli nizov.
So prvi v zadnji od podatkovne strukture.
Zato menimo, da od nizov v Annenberg pladnjev kjer smo odvodnikom stvari na vrhu.
In če boš pridi pladenj, ste
Vedno bo trajalo eno na vrh, ki je najbolj recently--
ki je stvar, ki jo najbolj Nedavno čaka na vrhu kupa.
Torej si lahko nekako razmišljati o tovrstnih vizualni, ko razmišljate o nizov.
In potem smo izstrelil nekaj off vrhu kupa.
>> Če bomo are-- oh, in besede, ki jih uporabite, ko govorimo o teh podatkov
strukture je običajno, če bomo dal nekaj na sklad,
rečemo, da smo ga potiska na sklad.
In če vzamemo nekaj off stack, smo rekli, smo živahen off kup.
Če boste za izvajanje stack-- ki sem definitivno
Priporočamo vam, da poskusite out-- ste bodo želeli slediti,
recimo, da ste z uporabo niz.
Vem, da v predavanju smo se pogovarjali o uporabi tako nize
ali so povezana sezname za izvedbo dimnika.
Če uporabljate matrika, morate keep--
Izgovor me-- moramo slediti velikosti in zmogljivosti.
Torej največjega števila da lahko naša kup držite.
Vprašanja o skladih?
>> OBČINSTVO: Kakšna je razlika med velikostjo in zmogljivostjo?
SPEAKER 1: Razlika med velikost in zmogljivost, super vprašanje.
Torej, recimo, da smo uporabo array, in smo
namenijo dovolj prostora za 10 števil.
In začnemo zapolniti, da gor.
In smo potiskanje stvari naprej, in smo pop stvari off.
Želimo, da spremljate največ Število moremo imeti, da je zmogljivost.
In želimo, da spremljate Sedanje število imamo, da je velikost.
Dobro vprašanje.
Vse ostalo na kupe?
Vse je v redu, kaj je govoril o presenečenje, čakalnih vrst.
>> Za razliko od nizov, ki so prvič v lanskem ven, to so prvi noter, prvi ven.
Torej, to je like-- pomislite črto.
Pomislite obloge gor na Apple Trgovina priti ne glede na izdelek.
In prva oseba, ki je v skladu smeli biti prva oseba, ki je pomagal.
Torej prva stvar, ki jo je potisnilo je To je prva stvar, ki je izstrelil.
Cool?
Zelo similarly-- Oh, besede, ki bomo uporabili namesto pritiskom in pop--
ki sem se uporabljajo, Sem sorry-- je, da smo rekli,
če smo dajanje nekaj v čakalne vrste, smo rekli, da enqueued.
Če bomo ob nekaj iz čakalne vrste, rečemo dequeued.
To.
Jaz se lahko izgovorijo tiste narobe, ampak boste dobili idejo.
In potem spet, tako kot nizov, če smo izvedbenih to kot niz,
moramo slediti od velikost, zmogljivost in glava.
Kaj mislim s glavi?
Zakaj moramo ohraniti tir glave?
>> OBČINSTVO: Ker to je, če začetek vašega seznama je.
SPEAKER 1: Ja, v bistvu je glava kjer je začetek našega čakalne vrste je.
Ker vemo, za razliko od nizov, which-- Bom poskusil pri soočanju s to way--
vemo, da je vedno dogaja, da skrči na ta način in rastejo na ta način.
Čakalne vrste, ljudje pridejo na koncu in pustite od začetka,
zato moramo slediti kje je začetek.
To je tisto, kar mislim da moramo slediti, kje je glava.
Cool?
V redu.
Osem minut, par več teme, lahko to storimo.
>> Vredu, razpršena tabela.
Zelo na kratko smo se pogovarjali o hash tabel.
Za kviz, morate samo jih razumeti na visoki ravni.
Osnovna ideja je, da imajo te podatke.
In želimo dostopati do njega v času, ki je hitreje kot nekaj podobnega povezan
seznam.
Ker smo rekli, če bi bili iskanjem prek povezanega seznama,
da bi lahko N časa.
Tudi dostop mogoč N čas v povezanem seznamu.
Hash tabele nam pot, da bomo lahko hitrejši dostop do stvari, in še več
hitro iskanje za stvari, brez imajo omejitve matrike
kjer smo fiksno velikost.
>> Zato mislimo, strukture podatkov, kadar, kjer smo ga v strukturi podatkov
je odvisna od tega čarobno razpršilna funkcija.
Torej, v tem primeru, čarobni hash funkcija je samo ob besedo,
preverjanje, kaj je prva črka je, in potem samo sortiranje po abecedi.
Tako smo v bistvu jih je dala v različne segmente.
Ko smo videli banano, smo rekli, OK, kaj je dal v vedro B.
Ko vidimo Apple, kaj je ga dal v vedro A.
Če bomo videli marelice, kaj je dal v vedro A.
V REDU?
>> Tako, da sem iskali for-- I Ne vem, kaj je drugo sadje?
Recimo, da sem iskal oranžne.
Kje naj iščem?
V O vedro.
Ja, tam je samo eno mesto da oranžna lahko, OK?
Torej sem že prej povedal, kaj se zgodi if-- dobro sem rekel prej,
recimo, da damo marelično in-- vendar sem res obravnavala dejstvo, da, oh ne,
če bi bil jaz dal jagodami in, da je dogaja, da v nasprotju z banano.
Kjer smo jo dali, če obstaja že nekaj v naši mizi?
No, imamo nekaj možnosti.
>> Možnost številka ena je linearna sondiranje, kar v bistvu pomeni,
recimo, da želim, da bi poskušali dal jagodami, in vidim, oh ne,
Banane so že tam, Pravkar sem rekel, v redu, naj
me poglej za naslednjo prosto mesto.
Zato sem hodil dol, sem rekel, oh, ni nič v D vedro.
Ne morem razmišljati o vseh sadežev ki se začnejo s črko D,
tako da sem le, da bo dal jagodami tam.
Durian.
OK, saj obstaja nič v še tam,
Jaz lahko tudi preprosto uporabite ta spot.
Kaj je pomanjkljivost, da je?
>> OBČINSTVO: To je v okvari.
>> SPEAKER 1: Oprostite?
OBČINSTVO: To je v okvari.
>> SPEAKER 1: To je out-- V redu, morda bomo na koncu
s stvarmi, ki niso in-- shranjeni v vedra na poti
da pričakujemo, da bo.
Torej, če bomo iskali za jagodami, preden smo rekli,
oh bomo lahko ogledate v eno vedro.
To je lahko samo v eno vedro.
Toda zdaj, res, da bi se lahko v vseh vedra, kajne?
>> OK, tukaj je še ena možnost, ločen chaining--
ki je ideja, da greva uporabiti malo kasneje v P nastavljeno 5.
Namesto samo še en prostor v posamezne segmente,
zakaj ne bi imeli vsako vedro da je kazalec na povezanem seznamu?
Kje smo rekli, v redu, da je vedro za vse, ki se začne z A.
In tam je le, da bo biti povezan seznam sadja, ki se začnejo z A.
Torej, če bomo dobili novo sadje, recimo smo get-- smo avokado, imamo jabolko,
recimo, da smo dobili marelice, kako bi dal na seznam?
No, mi bi iti v vedro 0, in bi samo jo vstavite v našem všeč seznamu
enostavno, kot to.
>> Sedaj sem vedno rekel vedro.
Mi bi to izvajala na več načinov.
Ena tipičen način, da se ta vrsta slike kažejo,
je mogoče ob niz kazalci na povezanih seznamov.
To je en način bomo lahko izvajati razpršene tabele.
OBČINSTVO: Bi potrebovali drugo Seznam saj banana in jagodičja so ven
naročila?
SPEAKER 1: Bi si need-- ah, bi si
Potrebujemo drug seznam, ker je banana in jagodičja so v okvari?
V tem primeru je naša hash funkcija, ki nam pove, kam stvari
ne skrbi drugem pismu.
Ne skrbi alphabetizing, pa skrbi samo o prvem pismu.
Vprašanje?
>> OBČINSTVO: Kaj je definicija, ki funkcija, in kaj to izgleda?
SPEAKER 1: Ah, dobro.
OK, tako da nam ni treba skrbite preveč za ta kviz.
Tako da nisem dal v diapozitivih.
Bomo uvesti z njim za P nastavite 5.
Ampak v bistvu, se pravi, podan nov element, kjer bi jaz dal?
Ali pa, recimo, Iščem element, kjer bi to bilo?
Ja, veliko vprašanje.
>> OK, zelo hitro, drevesa in poskuša.
Tako drevo je le vsaka vrsta organizirane strukture podatkov.
In bomo videli veliko slik da bo to super jasno.
In trie, kar smo videli v razredu, je zelo posebna vrsta drevesa
ki v bistvu deluje kot hash tabele na več ravneh.
To je super kul.
Bomo videli čez nekaj sekund.
Vse je v redu, tako da je govori o drevesih prvi.
Tako da je to res tipični drevo, kjer imamo nekaj hierarhijo.
Vidiš, da je eden na zelo top, kajne?
In lahko rečem, vrh, ker tam očitno naročanje ker smo
imajo te puščice gredo dol.
Tako da je stvar na vrhu, Kličem, da korenskega vozlišča.
Torej eden je koren vozlišče.
In stvari na dnu, ki so se nič ne prihaja z njih,
Pravim ti so leaf vozlišča.
Torej 8,9 5, 6, 7, OK.
In ponavadi terminologija smo lahko rečem, je, 1 je 3 je starš.
Torej, to je stvar, ki prihaja ravni nad njo, in kaže na to.
In 3 je 1 je otrok.
To je stvar, ki 1 poudarja.
Vprašanje?
>> OBČINSTVO: Lahko greš nazaj prejšnji diapozitiv, prosim?
>> SPEAKER 1: Ali lahko grem nazaj na prejšnji diapozitiv?
Sure.
Vprašanja o tem?
Ali pa si samo želel, da pogled na to?
OBČINSTVO: Nisem priti skozi njo.
>> SPEAKER 1: OK, kul, ja.
To bo vse na spletu, tako ne skrbeti za pridobivanje vsako besedo.
In v interesu čas, bom šel.
Je to v redu?
Awesome.
OK kul.
Torej, kaj je govoriti o zelo specifične kind--
tako da imamo ti splošni struktura dreves,
ki je prav vse, kar nam omogoča, na vrsto čin stvari hierarhično.
>> Dvojiška drevesa so stvari, kjer je vsak vozlišče ima največ dva otroka.
V REDU?
In sem rekel, v redu, tako da se zdi, da ustreza temu opisu.
Rekel sem vozlišče, ni binarno iskalno drevo.
Kaj je dvojiško iskalno drevo?
To je urejeno.
Tako da boste vedeli, da je v binarno iskalno drevo,
vse do tree-- vsega do vozlišča levi je manjša,
in vse do vozlišča pravica je večji.
Torej to ni binarno iskalno drevo.
To je samo binarno drevo.
Torej imamo velik kategorijo drevesa, nekoliko manjši kategorija
binarnih dreves, iskanje po a-- dvojiška iskalna drevesa.
Cool?
V redu.
>> In zdaj, najbolj zabavno vsi, imamo poizkusih.
Vidva videli to sliko v predavanju?
Ja, naj bi bilo videti super seznanjeni.
Poglejmo, kako bi lahko dejansko izvajanje tega.
Ali dejansko, poglejmo, to sploh prišel gor?
Nope.
Vse je v redu, nimamo niti za skrbeti za te stvari nizki ravni.
Bomo imeli veliko časa potem obravnavati P nastavite 5.
Ampak za zdaj, le zelo visoki ravni, smo vem, da je to tisto, kar izgleda.
Ga je opisal Mi kot vrste hash tabela nivojsko
where-- Kaj to trgovino?
Ta shranjuje imena znanstveniki, da bomo lahko dejansko
poglej jih le nekako sledi Različne hash tabele navzdol, vse v redu?
>> In namen tega je, v teoriji, zagotavljajo stalen čas poglej gor.
Torej, če želim, da preveri, na primer, kdo je someone--
da je Mandel v tem trie, sem lahko zelo hitro
v linear-- Žal mi je, v konstanten čas, ugotovimo,
ali ne, je v trie.
Ampak con, se poglej kako velik je ta.
Nismo niti shranjevanje, ki veliko podatkov, in to je ogromen.
Torej, en velik con je, da je to uporablja veliko količino pomnilnika.
Da.
>> OBČINSTVO: Zakaj ne zagotavlja konstanten čas, točno?
>> SPEAKER 1: Še enkrat?
>> OBČINSTVO: Kaj je intuicija zakaj pa zagotavlja stalen čas?
>> SPEAKER 1: Odlično vprašanje.
Zakaj ne zagotavlja stalen čas?
Torej, kaj lahko storimo, je, kaj je pravijo, iščemo Mandel.
Vemo, da smo želeli začeti V prvi stopnji na M.
Vemo, da želimo, da ji sledimo do E. Torej to traja en korak, dva koraka, kajne?
Mi ji sledimo do N. sledimo do D. Mi ji sledimo do E. sledimo do L.
In potem je naslednja stvar, ki smo preveriti says-- ta delta pravi Ja, to je
V naši mizi.
To je beseda.
Da je veljaven vpis v naši trie.
Torej pravite, OK, da je sedem korakov.
Ampak, če smo dodali kot zillion več Znanstveniki te strukture podatkov,
mi ne bi bilo treba preveriti, zillion več stvari.
Mi smo samo kdaj bodo morali vzeti sedem korakov, dolžina oseba je
ime.
>> Torej, smo želeli, da razmišljajo Runtime kot, recimo,
smo povečali obseg naše struktura podatkov, koliko več
se bo trajalo?
V tem primeru, če bomo dodali kup več znanstvenikov, ni važno.
To se še vedno dogaja, da sprejmejo enako količino časa.
To je stalen čas.
Da.
>> OBČINSTVO: Kako veš, da ne za skeniranje preko druge številke?
SPEAKER 1: Kako naj vem, kako to--
OBČINSTVO: Like, kako veš, da greš naravnost iz M na E in ne na M na A?
SPEAKER 1: Oh, seveda.
Ker sem vedela, da sem išče besedo Mandel,
in jaz samo vem, da je M-E. Torej that-- ja, pojdi naprej.
OBČINSTVO: Bi nimaš pogled na ostalih črk
V preostalem delu [neslišno]?
>> SPEAKER 1: Ah, ne bi imam gledati the-- OK, super.
To je super vprašanje.
To je odvisno, kako jo izvajati.
Če ga izvajajo, kot je pravkar kot vrsto nizi
kjer vemo, da je E vedno v položaju 0,
Ne vem, karkoli Indeks številka je na.
Ja, lahko pač stalnica čas, ne, ne, ne, ne.
Cool.
Vprašanje tam?
>> OBČINSTVO: Je stalen čas ista stvar kot v realnem času?
SPEAKER 1: Je stalen čas ista stvar je v realnem času?
Nisem prepričan, v realnem času, je.
OBČINSTVO: Tako kot čas, ki dobesedno napreduje drugi
ga drugi v nasprotju s čemer neodvisna spremenljivka.
>> SPEAKER 1: Oh, ja, Lahko si o njej mislijo, da je tako.
Z drugimi besedami, to ni odvisno od od velikosti strukture podatkov.
To je način, da si o njej mislijo.
Vsa druga vprašanja?
Mogoče v prvič v zgodovina, smo končali pravočasno.
Če imate kakršnakoli vprašanja, vas prosimo, da pridejo nas vprašati, pojdite na oddelku,
se posvetujte s svojim TFS, pisarno ure so 8:00 in 08:30
do 11.00 v ponedeljek in torek, zato to je malo drugačen čas,
zato poskrbite, da boste, upoštevajte, da.
Ja.
>> OBČINSTVO: Ali moramo poznati stvari, kot argumenti ukazne vrstice,
dash ls, dash karkoli?
>> SPEAKER 1: ukazno vrstico argumenti in ukazi Linux,
ja, morate vedeti teh.
Very-- je kot vrsto ravni stvari smo zajeti v poglavju 0,
kolikor Linux ukazi go.
>> OBČINSTVO: Ali ur Annenberg?
SPEAKER 1: Uradne ure, nisem povsem prepričan, kje so.
Ampak lahko preverite Spletna stran, in to vam bo povedal.