>> [Speel van musiek]
CAMILLE REKHSON: Hi, almal.
Welkom by die CS50 quiz zero hersiening sessie.
Ek is Camille.
En ek gaan om te gaan oor 'n paar onderwerpe met jou
ouens vandag om jou te help voor te berei vir die toets.
So hier is ons nie volledig lys van onderwerpe wat jy
vertroud is met die quiz moet wees.
Hierdie is direk geneem van die leerplan.
Ek weet dit lyk soos 'n baie.
Maar glo my, het jy al geleer hierdie dinge in die afgelope paar weke.
>> So ons sal beslis gaan oor 'n groot deel van hierdie vandag.
Maar ook 'n tyd neem op jou eie aan hierdie dinge te hersien.
En as jy vertroud is met was nie wat sommige van hierdie dinge is,
maak seker dat jy een van ons te vra.
Ook vir die amptelike woord op die quiz, gaan na hierdie skakel.
Dit sal al die inligting waarmee kamer wat jy nodig om in te gaan,
verdeel alfabeties, en ook 'n paar wenke oor watter materiaal
jy moet studeer, en watter soort van quiz vrae wat jy kan verwag.
So maak seker dat jy check dat uit.
>> Ook 'n paar wenke vir wanneer jy voor te berei vir die eksamen.
Oefen kodering op papier.
Ek weet jy het gekry wat gebruik word om met die IDE tjek vir jou foute vir jou,
en it's-- wanneer jy tik dit op, dit is 'n bietjie anders as om
om dinge uit te skryf.
So oefen doen 'n paar kodering.
'N paar goeie funksies uit te oefen doen is StrLen en atoi,
sien as jy kan skryf diegene wat nie op jou eie.
Vertroud te wees met die probleem stelle.
Die meeste jaar is daar vrae wat verband hou
sommige van die probleem stel materiaal.
So maak seker dat jy verstaan hoe om al die probleem stelle te doen.
>> Probeer 'n paar van die ou vasvrae doen onder die 75 minute tydsbeperking.
Daar is baie van die vasvrae kan soort van lank wees.
So dit is 'n goeie manier om te gee jouself 'n paar praktyk,
en hoe lank dit sal neem jou, en hoe jy
moet jou tyd te verdeel om seker te maak jy alles klaar teen die einde.
En ook, 'n een bladsy te kry jou, twee ledig verwysing vel
wat jy kan skryf alles wat jy wil op te gebruik tydens die quiz.
So wanneer jy skep dat dit is ook
werklik 'n groot manier om te studeer, want jy soort hersien dinge
as jy dit te skryf.
>> So 'n algemene vrae oor die quiz, of hoe dit werk?
Ja.
>> GEHOOR: Sal die lys van onderwerpe dat jy net gewys tot ons beskikking wees
aanlyn?
>> CAMILLE REKHSON: Hierdie hele slide show sal gepos word aan die webwerf.
Ook die video van vandag se resensie sessie sal wees op die webwerf.
So moenie te veel bekommer oor skryf dinge neer regdeur.
Dit sal daar wees nie.
Enige ander vrae?
OK, so laat ons begin.
>> So een ding om vertroud is met is nie die verskillende tipes data en die grootte
dat hulle op.
Dit kan ook 'n groot ding om te wees skryf neer op jou verwysing vel,
net om seker te maak jy Onthou al hierdie.
But-- so karakters is 1 byte.
SY is 4 grepe.
'N lang, lang, wat is basies meer ruimte vir 'n heelgetal is, is 8 grepe.
A float is 4 grepe.
'N dubbel, wat basies gee jou meer ruimte om 'n float slaan, is 8 grepe.
En dan is ook 'n wyser 8 grepe.
Enige vrae oor hierdie?
>> So program is 'n ander onderwerp wat ons het bedek 'n bietjie hierdie semester.
So laat doen 'n paar oefen met die omskakeling
tussen die binêre en desimale.
So iemand enige idee wat dat die eerste een wees?
Iemand?
Ja, dit is 42.
So as jy onthou, elke van die plekke in binêre
is basies soos 2 aan bewind se plek.
>> Sodat die eerste plek is 2 tot die 0 krag.
En ons het 0 daar, so niks anders nie.
Die volgende plek is 2 tot die eerste krag.
En ons het 'n 1 daar so dit is basies 'n 2.
Die volgende plek is 2 tot die tweede, wat is 4.
Ons het niks daar te hê.
Die volgende plek oor is 2 tot die derde, wat 8 sou wees.
En ons het nie een daar.
En ons hou.
Dit last-- die verste van die gelaat een is waar ons 32.
En so het ons basies 32 plus 8 plus 2 te kry 42.
Enige vrae?
>> GEHOOR: Wat is die onderskrif vir?
>> CAMILLE REKHSON: Die onderskrif vertel ons basies dit binêre.
So is daar 'n 2 daar.
As daar in die volgende like-- een, of wanneer ons die omskakeling desimale
binêre, daar is 'n 10 wys ons dat hierdie nommer is oorspronklik in desimaal.
>> GEHOOR: Dankie.
>> CAMILLE REKHSON: Ja.
Enige ander vrae oor wat 'n mens?
OK, so kom ons probeer die volgende een dan desimale binêre.
So neem 50 en om dat binêre.
Hoe sou jy dit doen?
Ja.
>> GEHOOR: 110010.
>> CAMILLE REKHSON: Ja.
So one-- 'n maklike manier om te dink oor omskakeling van desimale binêre
is aan- dikwels help om uit te skryf wat die verskillende magte van 2 is.
En dan gaan deur dit, en sien Wat ook al die hoogste een van daardie
is dat jy in kan sit om die desimale getal sonder om meer as dit.
>> So in hierdie geval, een van die magte van 2 is 32.
So 32 gaan in 50.
Maar die volgende mag sou wees 64, wat natuurlik nie pas in 50.
So het die hoogste ons het, is die 32.
Die volgende een af ​​na 16.
En 32 plus 16 is slegs 48.
So wat nog pas in 50.
So het ons 1 in beide van hulle.
En dan as ons gaan sit, die enigste ding wat ons nodig gelaat
is 2 meer te kry 48-50.
So dan het ons 'n 1 in daardie posisie, en 'n 0 in die laaste posisie.
Want daar is niks in die 2 tot die 0-ste plek.
Vrae oor die omskakeling desimale binêre?
>> So nou laat ons probeer doen sommige binêre byvoeging.
Hoe wanneer jy daardie twee optel?
Ja.
>> GEHOOR: 11.100.
>> CAMILLE REKHSON: Ja.
So doen toevoeging in binêre is redelik baie dieselfde as om dit te doen in desimaal.
Behalwe as jy twee 1 se wese bymekaar getel, 1 plus 1 is 2,
maar 2 in binêre is 1 0.
So jy het om uit te voer die 1, en hou dra dit vir diegene paar kolomme.
En behalwe dit, voeg net normaalweg.
Enige vrae oor dit?
Ja.
>> GEHOOR: Jammer, wat is die laaste plek?
Daar is ses nommers.
So die linker kolom watter waarde is dit?
CAMILLE REKHSON: Op hierdie onderste een?
GEHOOR: Op die top een, vir 50.
CAMILLE REKHSON: Vir 50?
O, so die linker een is 32.
>> GEHOOR: 32?
>> CAMILLE REKHSON: Ja, so dit sou wees 32, 16, dan 8, 4, 2, 0-- of 1.
Wel, dit is die 2 nulde, wat is 1.
Ja.
Enige ander vrae oor hierdie?
OK, so dan moet ons gaan doen 'n bietjie met heksadesimale.
So dit kan 'n bietjie minder bekende,
want ek weet wat ons gedoen het 'n baie meer met binêre.
Maar 'n baie goeie manier om dink oor heksadesimale
is om te breek 'n binêre die nommer in 4 bietjie stukke.
Want elke 4 stukkies van 'n binêre getal is basies
een van die heksadesimale getalle.
>> So as ons hierdie eerste een, ons het basies agt 1 se.
So diegene kan verdeel up--
>> GEHOOR: 255.
>> CAMILLE REKHSON: Sê dat weer.
GEHOOR: 255 in desimale, of 0xFF in heksadesimaal.
CAMILLE REKHSON: Ja, dit is.
So, as jy verdeel wat tot in twee 4-bit stukke,
ons het basies vier stelle van 1.
Wat is die maximum-- basies die maksimum
ons kan kry met 4-stukkies in binêre.
En die maksimum wat ons kon kry wat in heksadesimaal sou 'n F. wees
So sal ons twee F se.
Enige vrae oor dit?
Ja?
>> GEHOOR: Kan jy dit herhaal.
CAMILLE REKHSON: Natuurlik.
So elk, basies, plek van heksadesimaal is
gelykstaande aan die 4-stukkies van 'n binêre.
So die maklikste manier om dit te doen, is om dit op te breek in 4-bit stukke.
So in hierdie geval, het ons agt 1 se.
So as ons verdeel die in twee 4-bit stukke,
sou ons twee stelle vier 1 se.
En elkeen van daardie is gelykstaande aan F.
As jy dink about-- Ek weet ons brein is
soort bedraad om te dink meer deur desimale,
want dit is wat ons gewoond is.
So een manier wat jy kan dink dat dit as die vier 1 se is gelyk aan 15 in desimaal.
En 15 in heksadesimaal is F. So dit is 'n ander manier wat jy kan dink deur dit.
Ja.
>> GEHOOR: Wat is die 0x vir?
>> CAMILLE REKHSON: Die 0x dui dat dit heksadesimale.
So ons sit net dat voorvoegsel daar gewoonlik.
Ander vrae oor daardie.
OK, so kom ons probeer gaan die ander kant dan.
In hierdie geval have-- ons jammer?
GEHOOR: [onhoorbaar].
CAMILLE REKHSON: Ons gaan binêre.
So, gaan die ander kant.
Maar in hierdie geval, ons het 5 en A. So as ons dink oor hierdie,
As elkeen van die 5 those-- en die A is beide gaan 'n 4-bit stuk verteenwoordig,
hoe sou jy sê 5 in binêre?
>> GEHOOR: 0101.
>> CAMILLE REKHSON: Ja, So wat is die 0101 deel.
En dan hoe sou jy sê 'n in--
>> GEHOOR: 10.
CAMILLE REKHSON: Sê it-- jammer?
GEHOOR: 10.
CAMILLE REKHSON: Ja, so dit is die tweede deel van dit.
En dan, as jy sit daardie twee saam, dis
hoe jy die volle binêre vir die heksadesimale.
Ja?
>> GEHOOR: Om te weet dat A 1010, het jy om dit te memoriseer?
Of kan jy like--
>> CAMILLE REKHSON: So as you-- die differe-- so
wanneer jy gaan deur binêre, basies binêre
het 0 tot 9 en dan 'n deur F as sy 16 dinge.
So as al die pad tot 0 9-- as you-- 9 en dan A, basies
as ons omskep dit desimaal, A sou wees soos 10, sou B wees soos 11.
En as jy dink oor die binêre 1010 is 8 en 2,
want dit is die twee plekke wat optel tot 10, wat
is presies wat 'n gelykstaande is aan.
So dit is soort van 'n eenvoudige manier om te dink oor dit.
Ander vrae oor heksadesimale.
>> OK, so nou is ons gaan neem 'n blik op bis operateurs.
So dit kan beslis kom op die quiz.
Ek weet ons het nie saam met hulle 'n baie.
Maar ons is maar net gaan om te doen 'n bietjie hersiening van hierdie.
So hopelik dit sal 'n bietjie meer bekend aan jou.
So het die ses bis operateurs dat ons hier gelys.
En hulle ons laat manipuleer individuele stukkies.
So die EN operateur is 'n enkele ampersand.
Verwar nie dat ons met die dubbele ampersand,
wat is die logiese EN dat laat ons twee dinge met mekaar vergelyk.
>> Die enkel-en hoe ons kan dinge bis manipuleer.
So dit gee ons die resultaat van 1 indien beide van die argumente wat ons vergelyk
is die same-- of 1.
En die vertikale bar, OR, gee ons 1 indien minstens een van hulle is 1.
So basies presies wat die woorde impliseer.
En as die twee stukkies is 1, 1 en 1 gee vir ons 1.
Maar met die OR, as dit 0 of 1 of 1 of 1, in beide gevalle,
Ons het 1 as een van hulle.
So dan sou ons 'n 1 te kry.
GEHOOR: Wat bedoel jy wat dit sê dit gee 1?
>> CAMILLE REKHSON: Die gevolg. Soort, soos jy
would-- as jy het 0 en 1, die gevolg van dit sou 1-- of 0 wees
en 1 met die uitslag van dit sou wees 0, jammer.
Ja, dit was soort van die gevolg van die uitdrukking.
En dan, hierdie kappie simbool is die XOR, of eksklusiewe OF.
So dit beteken uitsluitlik een of presies een van die twee argumente is gelyk aan 1.
En dan sou dit gee jou 1.
>> Die klein kronkel lyn is die NIE operateur.
So anders as die res van hulle, wat werk op 'n paar van die stukkies,
die NIE operateur neem slegs 'n bietjie, en dit sal draai.
So as jy give-- as jy NIE 0, sou dit gee jou 1.
En as jy nie 1, dit sal jy gee 0.
Ja?
>> GEHOOR: Wat is die verskil tussen die OR met 'n lyn
en die OR met twee?
CAMILLE REKHSON: So het die OR met twee lyne is die logiese OR.
So dit is vir die vergelyking twee volle heelgetalle, of two--
om te sien of dinge gelyk.
Of soos om dit te doen, is gelyk aan die, Of is gelyk aan dié soort ding.
Terwyl die enkele bar OF, is om dit te doen dinge bis.
Ja.
>> GEHOOR: Wat bedoel jy deur bis?
>> CAMILLE REKHSON: So bis werk direk met die stukkies in binêre.
>> GEHOOR: O, ek sien.
>> CAMILLE REKHSON: Ja, so werk met 0 en 1 se.
Ons sal 'n paar voorbeelde van dit te doen na, net so is dit nie te verwarrend.
En dan die laaste twee is die links skuif en die reg skof.
Wat is basies twee minder as tekens of twee groter as tekens.
En hulle verskuif na bietjie die gegewe aantal plekke
dat jy dit gee in die rigting.
So sou dit óf skuif dit aan die linkerkant, of na regs.
Ja?
GEHOOR: Wat is die sintaksis vir hardloop?
>> CAMILLE REKHSON: Ons gaan gaan deur 'n voorbeeld in 'n tweede.
So hopelik wat sal help.
Enige vrae oor net wat is hier, before-- OK.
So gaan deur 'n paar voorbeelde.
Kom ons begin met die EN kinders.
Wat sou ons as ons gedoen het 0 en 1?
>> GEHOOR: 0.
CAMILLE REKHSON: OK, en as ons gedoen het 1 EN 1?
GEHOOR: 1.
CAMILLE REKHSON: Ja, wat as ons het 0 OF een?
GEHOOR: 1.
CAMILLE REKHSON: Hoe gaan 1 OF 1?
GEHOOR: 1.
CAMILLE REKHSON: OK, hoe oor 0 XOR 1?
GEHOOR: 1.
CAMILLE REKHSON: En 1 XOR 1?
GEHOOR: 0.
CAMILLE REKHSON: Julle is goed.
Hoe gaan NIE 0?
>> GEHOOR: 1.
CAMILLE REKHSON en nie 1?
GEHOOR: 0.
CAMILLE REKHSON: OK, en dan is dit die laaste een is 'n bietjie een met die verskuiwing.
So as ons aanvanklik x om 8, en dan is y x na links geskuif 3,
wat sal dit gee ons?
>> GEHOOR: [onhoorbaar].
CAMILLE REKHSON: Sê dat weer.
GEHOOR: [onhoorbaar].
CAMILLE REKHSON: So, hierdie eintlik gee ons 64.
GEHOOR: [onhoorbaar].
CAMILLE REKHSON: So is ek net gaan hierdie hier skryf,
so dit maak 'n bietjie van sin.
As ons 2 die 0, 2 by die 1, 2 om die 2, 2-3 gaan wees 8.
En as ons dit wil skuif 3 meer stukkies aan die linkerkant, sal dit wees om die 2 4,
2 om die 5 en 2 om die 6 en 2 om die 6 is 64.
Doen dit maak sin?
Ja.
>> GEHOOR: Is dit al die verskuiwing 1 se en 0 se van die binêre getal te the--
>> CAMILLE REKHSON: Ja.
En jy sal nie hoef te bekommer oor die quiz oor hierdie negatief.
Ons sal nie maak dat jy gaan met negatiewe verskuiwings in enige manier.
Enige ander vrae oor hierdie?
Ja.
>> GEHOOR: As dit verskuif na regs, is iets wat niks wasn't-- dat
was nie oorspronklik deel van die ding 0?
>> CAMILLE REKHSON: Ja, sou jy voeg net 0 se in die oorspronklike.
Ja.
>> GEHOOR: So wat is dit 100 verskuif na die regte drie keer?
CAMILLE REKHSON: 100 verskuif na regs,
sodat sou al die neem 1 en 0 en hulle net verskuif
om die regte soveel keer as jy skuif na regs.
>> GEHOOR: [onhoorbaar]?
CAMILLE REKHSON: Wel, 100-- is praat jy 100 in binêre,
of 100 in desimale?
GEHOOR: Ek is jammer, 100 in binêre.
>> CAMILLE REKHSON: 100 in binêre, as jy dit verskuif na die right--
as jy na regs skuif een keer, sou dit 10 geword.
As jy dit na regs skuif twee keer, sou dit 001 geword.
En dan as jy dit verskuif weer jy soort van verloor die bietjie.
Ja, dit is net 0.
Enige ander vrae oor hierdie?
Ja.
>> GEHOOR: So dan word dit 000.
>> CAMILLE REKHSON: Ja.
OK, so laat ons gaan deur 'n bietjie van ASCII wiskunde.
So karakters kan in wese behandel word as heelgetalle
gebaseer op hul ASCII waardes.
So as ons sit int A gelyk 65, int B gelyk aan 'n plus 1, int char C is gelyk aan
D minus 1 en char D gelyk 68, wat sou uit te druk op die bodem?
>> So, ons druk these-- seën you-- ons
druk hulle almal uit as karakters gebaseer op die persent C.
So ons basies uit te druk die karakter waarde van al vier
van hierdie veranderlikes.
As 'n wenk, 65 is die ASCII-waarde van kapitaal A. Miskien wat gehelp.
Wat?
>> GEHOOR: ABCD.
>> CAMILLE REKHSON: Ja, so dit sou presies uit te druk
ABCD omdat ons 'n int gelyk aan die waarde van A. ASCII
So as ons druk wat as 'n karakter, ons kry net kapitaal A,
A plus 1 sou 'n kapitale B in ASCII wees.
D minus 1 sou 'n kapitale C in ASCII wees.
En 68 is die ASCII-waarde van D. Vrae oor ASCII?
Ja.
>> GEHOOR: So, die aanhalingstekens rondom A, doen dat verandering A tot die ASCII?
>> CAMILLE REKHSON: Dit uses-- dit count-- aanhalingstekens rondom die A
maak dit 'n karakter.
En as jy met dit in die aantal form--
sodat wanneer, soos in hierdie geval, dit is gehanteer as 'n int--
dan sou dit hanteer met sy ASCII-waarde.
Ja.
>> GEHOOR: Het jy aanbeveel dat ons het 'n ASCII verwysing tafel?
>> CAMILLE REKHSON: Ek het nie think--
>> GEHOOR: Of sou dit net word die hantering van hierdie?
>> CAMILLE REKHSON: Ek dink ons sou dit te doen met 'n maklike dinge.
Ek dink nie dit sou seer om dalk neer te skryf
wat kapitaal A en A klein is, net wat daardie reekse is begin met.
Maar ek dink nie jy moet alles neem die ruimte om 'n hele ASCII tafel.
Ja.
>> GEHOOR: Wat is die verskil tussen sê int A en char C,
soos jy doen by die top?
>> CAMILLE REKHSON: So dit is net hoe dit gestoor in die geheue.
Maar jy kan dit óf manier te behandel.
Soos ons hier sien, druk ons ​​doen uit die A as 'n karakter.
GEHOOR: So dit is dieselfde as 'n?
CAMILLE REKHSON: Ja.
Enige ander vrae?
>> GEHOOR: So, persent C sê druk van 'n kar?
>> CAMILLE REKHSON: Ja.
>> GEHOOR: So selfs as 'n net gedefinieer as 'n heelgetal,
As ons probeer om 'n druk char as 65, is dit would--
CAMILLE REKHSON: Dit gaan om gaan basies om ASCII grafiek
en kry alles karakters in die ASCII grafiek vir daardie 65.
>> GEHOOR: Dankie.
>> CAMILLE REKHSON: Ja.
Ja?
>> GEHOOR: So as jy het% I,% I, % I,% i, sou dit net print--
CAMILLE REKHSON: Ja, as jy het al 4% Ek se dit
sou die ASCII druk waardes van al vier van hulle nie.
Enige ander vrae?
OK, so omvang, basies hierdie help ons bepaal waar
'n veranderlike bestaan ​​in jou program.
Dus het ons gepraat oor twee verskillende tipes omvang, globale en plaaslike.
>> As 'n veranderlike wêreldwyd scoped, beteken dit dat jou hele program
het toegang tot daardie veranderlike.
En as jy wêreldwyd omvang 'n veranderlike, jy
verklaar dat dit voor julle hoof funksie.
So dit gedoen regs af die vlermuis.
En dan jou hele program kan toegang tot dit.
>> As dit is net plaaslik scoped dat veranderlike beperk tot 'n spesifieke gebied.
So as jy verklaar binne 'n lus, net dat lus dit kan oopmaak.
Of as jy verklaar binne 'n spesifieke funksie,
net daardie funksie kan toegang tot dit.
Vrae oor omvang.
>> OK, so funksie prototyping.
Basies omdat C, wanneer dit stel, lui top-down.
As jy 'n funksie te verklaar laat in jou kode,
samesteller weet nie dat daardie funksie bestaan.
So, wat ons gebruik is prototipes, wat basies vertel die samesteller,
Hierdie funksie kom, gaan kyk want dit later in die kode.
So die manier wat jy doen 'n funksie prototipe
is presies hoe jy begin af te skryf 'n funksie.
Gee jou die soort terugkeer, die naam van die funksie,
en dan enige argumente dat daardie funksie neem.
>> So, om te kyk na 'n vinnige voorbeeld, in hierdie ons funksie wat ons hier Deur gevalle
is basies 'n kubus funksie.
So neem in 'n heelgetal en die terugkeer van die kubus van daardie heelgetal.
So, want ons het geskryf dat funksie onder die belangrikste funksie,
en ons wil hê dat die gebruik uitset van that-- of ons
wil hê dat die funksie in ons belangrikste funksie,
ons sit sy prototipe manier by die top van ons program.
En dan as ons roep dit in ons belangrikste funksie,
samesteller weet dat daardie funksie is later geskryf, en gaan kyk vir dit,
en sal dit behoorlik te gebruik.
Vrae oor prototyping?
Ja.
>> GEHOOR: So, wat is die punt?
Ek het nie die punt van die prototipe te kry.
Hoekom nie net dit af is daar?
>> CAMILLE REKHSON: Wel, as dit is hier neer, dan wanneer
jy kubus van die lyn x in jou belangrikste funksie,
samesteller sal geen idee het wat die kubus funksie werklik bestaan.
>> GEHOOR: Kan jy nie net sit dit in die voorkant?
>> CAMILLE REKHSON: Dis beter kodering praktyk
om dit onder jou hooffunksie sit.
So dit is waarom ons sou doen die prototipe.
Net omdat, as jy het 'n baie funksies,
Dit sou werklik slordig te wees lees deur al die funksies
voordat jy vleis van jou program.
Ja, en jy het 'q-- het
>> GEHOOR: So, is verklaar jou veranderlike by die top
sodat jy dit kan oopmaak, maak dit 'n globale veranderlike?
Is dat soortgelyk aan hierdie waar dit verklaar dat dit
daar, sodat dit weet dat dit gaan om dit later toegang
en jy kan dit gebruik?
>> CAMILLE REKHSON: Ja.
Ja.
>> GEHOOR: Indien enige addisionele the-- funksies wat jy die sleutel buite te skep
van hierdie ding, or--
>> CAMILLE REKHSON: Ja, as jy skep ander functions-- belangrikste
self is die function-- so as jy skep ander funksies,
hulle moet buite te wees.
Ja?
>> GEHOOR: Wat is persent D?
CAMILLE REKHSON: Persent D is dieselfde as persent I.
Dit verwys na 'n heelgetal.
Ja.
>> GEHOOR: So, wat is int main besig?
Wat was daardie leemte?
CAMILLE REKHSON: Void sê neem dit in geen argumente.
GEHOOR: [onhoorbaar].
CAMILLE REKHSON: Kan jy praat 'n bietjie harder, jammer?
GEHOOR: Ja, jammer, hoekom het jy sit nietig vir die eerste een,
en dan int insette vir die tweede een?
CAMILLE REKHSON: O, vir die twee different-- vir die belangrikste funksie
versus die kubus funksie?
So in die belangrikste funksie, ons leemte te gebruik omdat daar
is geen parameters geneem in.
Terwyl dit in die kubus funksie, ons het 'n inset.
Dit is waarom dit sê int, insette, want daar is argumente dat ons
neem in ons funksie uit te voer.
Ja.
Is daar vrae?
>> OK, en dan vinnig swaai-punt onakkuraatheid.
So het ons oneindig baie reële getalle.
Maar daar is net 'n eindige aantal bisse
wat ons kan gebruik om daardie vertoon getalle en verteenwoordig hulle.
So dan eindig ons met 'n paar onakkuraatheid.
En jou nommers sal nie altyd baie presies wat
jy dink hulle is wanneer jy hantering van drywende-punt.
Dit is net iets goed om te weet.
Vrae oor hierdie?
Ja.
>> GEHOOR: Is dit verwys die idee van bietjie oorloop
wat in die lesing?
Was dat daar iets skei?
>> CAMILLE REKHSON: Hulle is heeltemal aparte, ja.
OK, groot.
PULAK Goyal: Hi, almal.
My naam is Pulak, en ek sal wees gaan oor wenke.
OK, so laat eers dink oor wat geheue lyk.
So as jy hier kan sien, ons neem geheue en ons verdeel dit
in 'n klomp van die blokke.
En ons verwys elk sluit deur 'n adres, reg?
En nie almal onthou watter tipe notasie wat ons gebruik om 'n adres te dui?
>> GEHOOR: heksadesimaal, 0X.
>> PULAK Goyal: heksadesimaal, reg?
So die 0X beteken ons is praat oor heksadesimale.
OK, so hoe skep ons riglyne?
So neem ons die tipe, ons sit it-- voeg 'n ster om dit,
en dan voeg ons die veranderlike naam.
So die voorbeelde wat ons gesien het is int star x, char star y, en z dryf begin.
So as ek sê int ster x, kan iemand my vertel
wat ek soort van praat is daar?
>> GEHOOR: Die ligging van die skyf.
>> PULAK Goyal: Jammer, wat?
Kan jy dit herhaal?
GEHOOR: Die ligging van die skyf.
>> PULAK Goyal: So actually-- so wat Ek bedoel, is wanneer ons int star x,
ons sê is die skep van 'n wyser, en dit
kan die adres van 'n stoor veranderlike dit is 'n int, reg?
So met char star y, ons skep 'n wyser
wat kan die adres stoor van 'n veranderlike wat 'n kar.
So wat sin maak vir almal?
OK, cool
>> OK, so met wysers, is daar twee belangrike bedrywighede wat ons kan doen.
Daar is verwysing, en daar dereferencing.
Ja?
>> GEHOOR: Kan jy gaan 'n bietjie bietjie stadiger?
>> PULAK Goyal: Natuurlik.
Ja, ja so--, vra vrae soos ek gaan saam as you-- as iets onduidelik is.
So het ons die verwysing en dereferencing.
So wanneer jy die adres te kry van 'n veranderlike, gebruik dan die ampersand.
So kom ons sê ek verklaar int x iewers.
En ek wil na die adres van wat kry en dit slaag in, sou ek ampersand x te doen.
En wanneer jy wil die kry waarde wat verband hou met 'n wyser,
jy die dereference gebruik operateur, wat is 'n ster.
>> So kan sê ek het int star x, en Ek het dit verwys na iets.
As ek wil die waarde van wat dit is te kry verwys na, sou ek net doen star x.
Is dit duidelik?
Enige vrae oor wat?
Ja.
>> GEHOOR: So algemeen, jy sal nie in staat wees om te doen in x en sterre
x met dieselfde x.
Is dit korrek?
Want as x is 'n veranderlike, dan moet jy
om te doen by x te kry dat dit 'n wyser.
Maar as x is 'n wyser, dan moet jy Star x doen om die veranderlike te kry.
>> PULAK Goyal: Ja, so die vraag was oor wanneer
gebruik ons ​​'n star-- wanneer sou jy die ster te gebruik,
en wanneer ons die ampersand, en ons kan
gebruik dit met dieselfde tipe veranderlike?
So gewoonlik as jy het, byvoorbeeld, 'n int x,
jy sou meestal gebruik word om die ampersand na die adres van daardie.
Omdat dit nie maak sin om onderdanigheid in x.
AANGESIEN as ons int star x, sou jy gebruik dereference werking
omdat dit geen sin sou maak om te gebruik by x in daardie geval.
Doen dit maak sin?
>> GEHOOR: So jy kan nie en, en dan 'n wyser?
PULAK Goyal: So jy tegnies, eintlik
kan die ampersand van 'n wyser te doen.
Maar dit is uit die omvang van hierdie klas.
Vir die purpose-- vir jou ouens se doeleindes, wanneer jy wysers,
jy wil die dereference operateur gebruik om die waarde wat verband hou met daardie.
En wanneer jy gereeld het veranderlikes, soos 'n int x,
jy wil die ampersand gebruik operateur na die adres van daardie.
OK?
>> OK, so laat ons kyk na wenke en wat gebeur onder die enjinkap.
So die eerste ding wat ek gedoen het is hier die verklaarde int x is gelyk aan 5.
Die adres van hierdie veranderlike is 0x04, en die waarde is 5.
So laat ons sien wat gebeur met die volgende lyn.
So nou het ons 'n wyser te verklaar.
Sy adres is 0x08, en sy waarde is die adres van x.
Maak dit sin om almal?
Enige vrae oor wat?
>> OK, en nou laat ons sien wat gebeur met die volgende lyn.
So met hierdie volgende lyn, ons het Die adres van kopie word 0x10,
en die waarde daarvan is 5.
So die rede waarom ons het vyf is ons gesê ons dereference
wyser, wat ons verklaar 'n int ster.
En so het dit went-- wanneer ons dereference dit dit gesê, OK, wat in die slot 0x04.
En dit het op daardie.
En wat is 'n x x0-- 0x04, en die waarde is 5.
Maak dit sin?
Ja?
>> GEHOOR: Hoekom is die adres se kopie net 4 grepe bo die x wyser?
>> PULAK Goyal: Ja, dit is 'n fout on--
>> CAMILLE REKHSON: So, ja, onthou dit is geskryf in heksadesimaal.
PULAK Goyal: O, ja.
CAMILLE REKHSON: So dit is eintlik 8 en dan 16
want ons het gesê dat, die wyser, onthou,
in ons IDE gaan 8 grepe lank te wees.
PULAK Goyal: Ja.
So net om duidelik te wees, pointers is 8 grepe lank.
'N int is 4 grepe.
So die rede waarom dit wat gespring van 0x04 om 0x08
is omdat ons moes doen 'n sprong van 8 grepe.
En dan for-- sedert kopie is net 'n int,
dit is 4 grepe, wat is die helfte van 8 grepe.
Sodat ons net spring om 0x10, wat twee weg van 0x08.
Enige ander vrae?
OK, let's-- ja?
>> GEHOOR: Hoekom is dit nie die waarde van int kopie
net the-- hoekom is dit 5 in plaas van 0x04?
>> PULAK Goyal: OK, hoekom is dit 5?
OK, so wanneer the-- so laat se eerste dink oor hierdie in terme van tipes.
So ek sê int kopie is gelyk aan wyser ster.
So, wat is die aard van die wyser?
Dit is 'n int ster.
En toe ek dereference dat die soort word 'n int.
So wat ons verwag om te stoor hier is eintlik 'n int.
Maak dit sin?
GEHOOR: Sure, bietjie.
PULAK Goyal: So gewoonlik wanneer jy dink in terme van tipes,
dit help om te verstaan ​​wat is die tipe van die waarde wat daar moet gaan.
So jy kan gewoonlik uit 'n groot deel van hierdie algemene foute
deur te dink in terme van tipes.
Laat my gaan deur 'n bietjie meer skyfies.
En ons kan vrae by te kry die einde van die artikel wyser.
OK, so ons het 'n karretjie program hier.
En so ook anyone-- kan iemand vertel my wat is verkeerd met hierdie program?
Right, so wat ons verwag om hier te doen
is-- wat ons wil doen is neem die veranderlike x int
en draai it-- maak dit gelyk 5 in plaas van 3 en dan druk dit.
Maar dit is nie gebeur nie.
Kan iemand my vertel hoekom?
Ja?
>> GEHOOR: Wanneer die funksie to_five neem x as dit is die argument,
dit neem nie x self nie, maar plaas skep 'n kopie, a, dit.
En dit vorm bedrywighede op daardie.
Maar as gevolg van dat, jy dit nie doen nie verander die werklike waarde van x.
Aangesien jy [onhoorbaar].
>> PULAK Goyal: Right, reg, so as ons roep
die funksie to_five, wat ons doen is om te dink,
gee my 'n afskrif van die waarde aan daardie funksie.
Daardie funksie, dan gaan en doen 'n paar manipulasies.
Maar sodra dit terug, dit is nou uit van die omvang van die belangrikste funksie hier.
En so x is steeds, in werklikheid, gelyk aan 3, en ons druk 3.
OK, so laat ons sien hoe dit gebeur.
>> OK, so daar is niks verklaar.
Toe, hier, x is gelyk aan 3.
En nou is dit is-- by posisie twee, 'n nog nie in omvang.
En nou gaan ons na drie posisioneer, waar 'n veronderstel nou die waarde van 3.
Op vier, het ons nou verander 'n 5.
Maar nou, wanneer ons spring terug na vyf, wat die gedrukte verklaring,
n is nou uit omvang.
En x is steeds gelyk aan 3.
Maak dit sin om almal?
OK, so nou kom ons praat oor hoe kan ons wenke gebruik om dit op te los.
Is daar iemand enige idees hoe ons kon dit regmaak deur die gebruik van verwysings?
>> GEHOOR: Jy neem in 'n int ster in plaas van 'n int vir to_five.
>> PULAK Goyal: Jammer, kon jy praat
>> GEHOOR: Jy neem in 'n int ster in plaas van 'n int vir to_five.
PULAK Goyal: OK, ja.
So laat pass-- plaas van verbygaande net die waarde, laat dit slaag deur verwysing.
Hierdie nuwe funksie, reg?
En so deur verby die adres in, ons kan manipulasies te doen op die adres.
En so is ons eintlik, in werklikheid, die verandering van x.
So laat ons sien hoe dit werk.
>> OK, so in hierdie voorbeeld ons vaste dit.
Ons het ons handtekening verander van to_five te neem in 'n int
ster in plaas van net 'n int hier.
Toe ons dereference hierdie a en toewys 5 om dit te.
En nou word dit, in werklikheid, druk 5.
So laat ons sien hoe die stappe hier werk.
>> So met die eerste stap, daar is nog niks verklaar.
So hier, met die tweede stap, ons het gesê x is gelyk aan 3,
maar 'n steeds uit omvang.
Nou die derde lyn, ons het x is steeds gelyk aan drie.
En nou, ons het geslaag in-- wat is gestoor in 'n nou die adres van x.
Maak dit sin om almal, hoe ons dit het?
Right, ons het die amper-- dit is hoe ons verby 'n ampersand x om die funksie
to_five.
En dan na die volgende lyn, wat ons doen, is ons dereference a.
>> En deur 'n dereferencing, ons in staat is om die waarde van x verander 3-5.
Omdat x woon by daardie adres 0x12.
En dan, uiteindelik, wanneer ons weer terug na die hoof,
hoewel dit 'n is nou uit omvang, ons het, in werklikheid, verander x.
En dit is 5.
Enige vrae oor hierdie?
Ja?
>> GEHOOR: Kan jy my vertel wat die ampersand x was?
Ek het gedink ampersand was soos EN.
>> PULAK Goyal: Ja, so ons gebruik dieselfde simbool vir baie verskillende dinge.
So hier, wanneer jy in have-- hierdie geval, wanneer jy,
Ek guess-- so in hierdie geval, toe jy met wysers,
wanneer jy die ampersand voor van 'n int, 'n veranderlike int, of 'n kar,
of 'n vloei, wat jy sê is, gee my die adres van hierdie.
Maar wat jy dink, wanneer anders sou jy ampersand gebruik word, kom ons sê,
in 'n verklaring as.
Jy het 'n ware, en 'n paar veranderlikes wat evalueer om Boolean,
en 'n paar ander veranderlikes dat sommige Boole bekragtig
en jy wil te kry die en van daardie.
Dan sou jy die ampersand gebruik.
Spreker 1: Ja, so net vandag, het ons gepraat oor drie verskillende gebruike
van ampersand.
Ons het twee-karakters, wat wat Pulak net beskryf het.
Ons het een ampersand, wat is wat Camille beskryf
vroeër, wat een ampersand.
En dit is vir bis EN.
En agterkom dat beide die voorwaardelike AND-- of, jammer,
die logiese EN en die bis EN, diegene twee getalle, reg?
Dit is iets wat-teken ampersand iets
iets ampersand iets.
Hier, toe het ons net ampersand iets wat se dereferencing.
>> PULAK Goyal: Ja, groot vraag.
Ja.
>> GEHOOR: Hoekom doen in lyn 5a en Star n geword N / A?
Hoekom doen hulle dit nie net soort van behou dieselfde waardes van die vorige lyn?
>> PULAK Goyal: Omdat ons het die funksie opgewonde.
En so wat happens-- so what-- nou is ons
uit omvang van daardie funksie, wat gebeur eintlik
is diegene verwyder uit die geheue.
Ja.
>> GEHOOR: Tussen 3 of 4-ster 'n gelyk 5.
PULAK Goyal: Ja.
GEHOOR: Wat beteken dit presies aan te dui?
PULAK Goyal: Wat beteken dit?
GEHOOR: Ja.
PULAK Goyal: So het die vraag was, wat is
that-- wat jy doen aanlyn wanneer ons sê, ster is gelyk aan 5?
So onthou die ster die dereference operateur.
So wanneer 'n, in hierdie geval, is 'n wyser.
Dit is 'n int ster.
So wanneer ons dereference n deur met behulp van die ster, wat ons sê
is, gaan na wat ookal gestoor by die adres, gestoor in a-- so take-- so 'n,
nou, het 'n paar adres gestoor in dit.
Gaan na die plek waar die adres punte, en nou verander wat dit ook al is om vyf.
Ja.
>> GEHOOR: Kan jy sê dit in eenvoudiger terme?
Verander die adres van 'n 5.
>> PULAK Goyal: Ons is nie die verandering van die adres van 'n 5.
A het 'n paar adres in, wat is die adres van die veranderlike van belang.
En so wat ons sê wanneer ons dereference is,
nou wil ons change-- ons nou verwysing
die belang van die veranderlike se direk.
Doen dit maak sin?
>> Spreker 1: Nog 'n manier om te dink dit is so 'n go-- is 'n adres.
Die ster sê gaan na die te spreek en te kyk na die waarde daarvan.
En nou sit sy waarde tot 5.
So dit sê, gaan na die adres van x, wat
gaan wees wat gestoor in 'n, en verander dit na 5.
PULAK Goyal: Ja?
GEHOOR: So is die posisie waar die wyser gaan, die adres.
Maar die waarde is 'n opgedra waarde gebaseer op die adres.
PULAK Goyal: Ja.
Enige ander vrae oor hierdie?
GEHOOR: Ek het 'n vraag.
PULAK Goyal: Ja, jammer.
GEHOOR: So wanneer jy store-- so As jy sê [onhoorbaar] a.
PULAK Goyal: Ja.
GEHOOR: Moet jy stoor die x met 'n ampersand?
Hoekom kan jy nie net sê x voor jou int [onhoorbaar]?
PULAK Goyal: So--
GEHOOR: [onhoorbaar].
PULAK Goyal: So is jou question-- oh.
So jou vraag is, hoekom kan we-- om die funksie to_five, kan nie die rede waarom ons
net verby 'n x, reg?
>> GEHOOR: Right.
>> PULAK Goyal: OK, ja, so dit weer gaan terug na ons bespreking oor tipes.
So die funksie to_five is nou verwag 'n tipe int ster.
So, wat is die aard van die x?
X is net 'n int.
Maar wat hierdie funksie verwag is 'n int ster.
Dit verwag So 'n veranderlike wat 'n adres gestoor in dit.
So dit is hoe die you-- sit ampersand, en so dit is
hoe ons slaag in die adres wat now--
en dat interpreteer dat as 'n int ster, ja.
N groot vraag.
Enige ander vrae oor hierdie?
OK, cool.
>> OK, so nou kom ons praat oor wyser rekenkundige.
So hier, optel en aftrek i pas die wyser
deur i keer die grootte van die tipe wyser grepe.
So laat ons kyk na hoe dit lyk.
So hier het ons verklaar int x is gelyk aan 'n 5.
En nou gaan ons 'n wyser te verklaar y, en slaag die adres van x is daar.
So ons het dit.
So x is gestoor 0x04.
So nou y is gelyk aan daardie.
En kan iemand my vertel wat hulle dink sal gebeur wanneer ons dit doen y plus gelyk aan 1?
Ja?
>> GEHOOR: Sal dit verander na 0 keer 0 8?
>> PULAK Goyal: Grootte en type--
>> GEHOOR: jy beweeg die adres.
PULAK Goyal: Ja dit was-- ja.
So-- reg.
So dit sal verander om 0x08.
En because-- so sou jy dit gebruik formule, 1 keer die grootte van die wyser
en die ooreenkomste is size--
>> [STUDENTE murmureer]
>> PULAK Goyal: Right.
>> [STUDENTE murmureer]
>> Spreker 1: So die tipe wat die wyser punte aan-
>> PULAK Goyal: Is, ja, ja, dit is 4 grepe.
>> Spreker 1: So SY is 4 grepe.
>> PULAK Goyal: So as ons a-- het laat sê ons verklaar, dink ek, 'n kar.
Wat sou so that-- kom ons sê ons het char x gelykstaande aan 'n of iets.
En ons het die adres van daardie op 0x04, wat y sou plus gelyk 1 nou doen?
Jammer, wat?
>> GEHOOR: 0x05.
PULAK Goyal: 0x05, reg.
Maak almal sien dat?
OK, en nou kom ons sê dit is 'n float.
Wat sou gebeur?
Iemand?
So dryf is hoeveel bytes?
>> GEHOOR: 4 grepe.
>> PULAK Goyal: Right.
So sou dit dieselfde ding as dit wees.
Koel.
OK, en nou laat ons praat oor wysers en skikkings.
So jy sien dit op die vorige twee p-stelle,
waar ons so skikkings kan treat-- en pointers is nie dieselfde ding nie.
Maar ons kan skikkings te behandel as wysers.
So hier, ons het hierdie reeks hier, wat drie posisies het.
In die eerste slot-- ons een, twee, en drie.
>> So as we-- sodat ons kan wys dat deur te sê, ons het skikking,
dereference dit.
En dan wanneer ons dereference dat wat ons eintlik doen
is verwys na dieselfde slot.
So star verskeidenheid gelyk 1.
Ons dit- hoe kon ons skryf that-- wat is
'n alternatiewe manier waarop ons kon skryf dit?
>> GEHOOR: Array 0 gelyke 1.
>> PULAK Goyal: Presies, nie almal sien dat?
So dieselfde ding met hier.
So wanneer ons verskeidenheid plus 1, do-- ons so even--
onthou met rekenkundige dat ons net oor gepraat het, wanneer ons dit doen plus 1
of skuif dit oor met 4 grepe, reg.
Maak almal sien dat?
En daardie kant toe ons dereference dat ons kan stel dat 2.
En dit is hoe ons ' die volgende blok 2.
En so 'n alternatiewe manier om te skryf Dit sal ook opgestel bracket wees
0 bracket gelyk 1.
>> GEHOOR: Het jy die hakies nodig?
>> PULAK Goyal: Ja, want jy dereferencing die hele hoeveelheid
verskeidenheid plus 1.
OK, en dieselfde ding vir verskeidenheid plus 2.
Enige vrae oor hierdie?
Ja.
GEHOOR: So skikking is outomaties by 0?
>> PULAK Goyal: Array is-- jammer, wat?
>> GEHOOR: Array is 0.
Die adres van verskeidenheid is net 0.
>> PULAK Goyal: So die vraag is, is die adres van array net 0?
So, nee, verskeidenheid het 'n paar adres.
So wanneer ons dereference dit that's-- sodat jy kan dink about--
letterlik soos 'n wyser wys na die begin van 'n skikking.
Sodat het 'n paar adres.
Ons weet nie wat dit is.
Maar toe ons dereference nie, weet ons dit is die begin van die skikking.
En so wanneer ons beweeg deur 1, is ons net die beweging
relatief tot waar daardie adres is nie.
Enige ander vrae?
Ja?
>> GEHOOR: So as jy doen verskeidenheid bracket plus 1--
PULAK Goyal: Jammer, I-- kan jy praat?
GEHOOR: Ja, as jy dit doen verskeidenheid bracket [onhoorbaar].
Daarom dan, as jy die pointer--
PULAK Goyal: Jammer, ek kan jou nie hoor nie.
Kan jy dit nog een keer sê?
>> GEHOOR: Jy is OK.
>> PULAK Goyal: OK, jammer.
OK, cool.
Any-- ja.
So wanneer jy gaan in die rigting bracket 3--
>> PULAK Goyal: Ja.
>> GEHOOR: --isn't there-- sou nie dit vier plekke soos 0, 1, 2, en 3?
Hoekom is dit nie array 2 int?
>> PULAK Goyal: Nee, so net die konvensie van C is-- wanneer ons verklaar dat die skikking,
we-- die aantal ons daar te vestig is hoeveel slots ons wil hê.
Maar die indekse van die skikking is eintlik array 0, 1 verskeidenheid, en verskeidenheid 2.
So dit is net die konvensie oor hoe ons verklaar skikkings.
Ja, enige ander vrae?
Ja.
GEHOOR: So ons is nog steeds praat oor wysers, reg?
PULAK Goyal: Ja.
GEHOOR: Kan jy nog steeds doen Ster vir array 0 gelyk 1?
PULAK Goyal: Nee, nee, so-- OK, so die vraag was kon
jy net doen star verskeidenheid bracket nul, en dan sê dat gelyk aan 1.
So, nee, wat ons sê hier is dat ons kan think--
kan ons skikkings te behandel as wysers.
Sodat ons have-- wat ons woord is ons twee maniere
nou verwysing na die dieselfde blok.
So doing-- as jy array nul, die tipe wat is nou 'n int.
En as jy die ster neem, jy 'n ongeldige ding.
So, wat ons hier sê, is is daar twee alternatiewe maniere
om te verwys na dieselfde blok.
Jy kan óf doen array bracket 0 gelyk 1.
Of jy kan doen dereference skikking, en wat gelyk is aan 0.
So net twee maniere doen dieselfde ding.
Ja.
>> GEHOOR: Hoekom is dit nie grootte van 1 tot int aan- voeg
>> PULAK Goyal: Grootte van int 1.
>> GEHOOR: Want dit is die beweging van een af.
>> PULAK Goyal: Want dit is net die manier waarop C werk.
Dit is net die manier waarop wyser rekenkundige gedefinieer word.
Dit sal die wyser te neem.
En dan alles wat jy voeg om dit, sal dit vermenigvuldig
deur die grootte van watter die wyser winkel is, ja.
Ja.
>> GEHOOR: So jy sê ons kan hanteer wysers en skikkings dieselfde,
maar dat hulle is anders.
So, wat maak hulle anders?
Wat kan ons nie met een, maar nie die ander?
>> PULAK Goyal: Vir die doel van hierdie klas, ek dink it's-- wat doen you--
>> Spreker 1: So, we-- OK, so vir Byvoorbeeld, as jy ken geheue
en jy het 'n wyser na 'n heelgetal, byvoorbeeld.
As jy probeer om te begin doen wyser rekenkundige
en verder gaan as die bedrag van die geheue wat jou toegeken, sou jy loop in foute.
Ons weet met skikkings, ons sê voor die tyd, OK, ek
wil hierdie wese allocate-- sê, ek wil om te wys
genoeg ruimte vir drie heelgetalle.
En so nou kan ons geheue te behandel asof ons het al drie van dié heelgetalle.
Doen dat die soort van sin maak?
>> PULAK Goyal: Ja.
Ja.
>> GEHOOR: So 'n ster skikking, is dat die toeken 1
om die 0-indeks van die skikking?
PULAK Goyal: Ja.
>> GEHOOR: So, wat is na die volgende twee lyne in terme van the-- ek
verstaan ​​dat jy probeer om wyser rekenkundige hier gebruik,
maar weer, ek verstaan ​​nie wat wyser rekenkundige is.
So die skikking plus 1, jy is sê dat jy nou
gaan wil om te praat oor die eerste indeks in die skikking.
>> PULAK Goyal: Right, en so die rede wat werk is skikking,
hier, kan ons van dink as 'n int ster.
En so wanneer ons aanwijzer rekenkundige op dit, onthou wat die formule waar
ons the-- Ek dink alles die huidige adres is
en dan wanneer ons by te voeg 1 om dit, het ons eintlik
vermenigvuldig 1 deur die grootte van die ding wat ons manipuleer.
So in hierdie geval, die grootte van 'n int.
En dan beweeg ons stuur deur daardie veel.
>> Spreker 1: So voorgee jy het b verskeidenheid ster.
PULAK Goyal: OK, ja.
Spreker 1: Met jou hand.
Gaan hier.
PULAK Goyal: Of ek kan just-- ja.
So here-- OK, so opgestel by die begin, is net reg hier.
So wanneer ons dereference skikking, was ons net na die eerste blok hier.
Maar nou dat ek verskeidenheid plus 1 doen, sodat is-- dat pyl is nou hier.
Doen dit maak sin?
Reg, want hierdie blok is grootte int, wat is 4 grepe.
En so, wat ons doen is ons beweeg dat wyser deur 4 grepe oor.
Wanneer ons somme maak op dit, sal dit altyd
beweeg dit deur inkremente van 4 grepe.
Want dit is soos 'n int ster.
Maak dit sin?
OK.
>> GEHOOR: So die dinge wat in die skikking was 5 grepe, wil ons dit te skuif 5 bytes--
>> PULAK Goyal: Right, so as ons het 'n char ster, wil ons dit te skuif met slegs 1 byte.
So in die geval van char sterre, dit sou net beweeg dit oor met 1.
GEHOOR: Om die kry volgende wat jy 'n ster nodig het.
PULAK Goyal: Ja, ja, doen dit maak sin?
Spreker 1: Ons kan gesels oor dit meer later.
PULAK Goyal: Ja, ja, vir seker.
OK, cool.
Kom ons beweeg op na die volgende afdeling.
Spreker 1: O, OK cool.
Ja, dit is my.
Alle reg, awesome.
OK, cool, so nou is ons op 'n bietjie meer algemene inligting oor die geheue.
Ook, ek waardeer die feit dat hulle redelik vinnig gaan.
Dit is 'n baie materiaal te kry deur in 'n uur en 'n half.
Maar as daar enige onderwerpe wat jy wil meer in-diepte ingaan,
ons gaan hê kantoorure hierdie week
waar jy kan gesels met ons een op een.
Of jy kan net kom by die beëindig en ons sal gesels oor dinge.
En soos altyd, voel vry om vrae te vra.
Awesome.
So hier is ons prentjie van geheue wat ons gesien het in 'n miljard keer lesing.
En ons weet dat die stapel groei van die onderkant
en die hoop groei af.
En wat is die verskil tussen dinge dat ons hou op die hoop en dinge
dat ons hou op die stapel?
Iemand gooi iets daar buite.
Ja.
>> GEHOOR: Is dit stapel vir die dinge wat net is
verganklike veranderlikes wat ons is net verklaar die gebruik van sekere funksies?
Spreker 1: Pragtige, ja.
So enige tyd waar, laat sê ons is in 'n funksie,
en ons het net 'n paar plaaslike veranderlikes.
Diegene gaan eindig op die stapel.
Indien plaas, malloc noem ons en eintlik geheue toeken,
wat altyd kom van die hoop.
So, ja Cool?
>> En so onthou dat enige geheue dat jy met behulp van Ken malloc,
wat gaan om te eindig op die hoop.
En as jy vergeet om free dit die rekenaar
gaan nie om te weet dat jy klaar is met dit.
So dit is net gaan om te hang daar in die geheue.
En jy is in wese lekkende dat die geheue.
Jy verloor dit.
Omdat jy nooit die rekenaar aan, hey ek klaar gebruik dit, voel vry om te gebruik,
sit ander dinge is daar.
Koel.
Enige vrae is daar?
Ja.
>> GEHOOR: So watter soort geheue is stapel?
Nie dinamiese voer, gedelegeer?
Wat sou jy dit noem?
>> Spreker 1: Sure, sodat jy kan dink aan dit as 'n plaaslike veranderlikes.
Werklike oproepe om funksies gaan stapel.
Enigiets anders?
Ja?
GEHOOR: Hoe kan jy gratis die geheue wat jy bygevoeg the--
Spreker 1: Natuurlik, so wanneer jy ken geheue op die hoop, malloc bel jou.
En so is daar dan wat gee jou terug 'n wyser na 'n paar adres in die geheue.
So jy sê dat wyser genoem, reg?
Dan, jy moet net sê free wyser.
En dat bevry die geheue.
Koel.
Ander vrae?
Ja.
>> GEHOOR: Wat beteken dinamiese toegeken beteken?
>> Spreker 1: dinamiese toegeken beteken, in die loop van jou program.
So wanneer jy malloc roep die middel van jou program,
aan die begin van die program, daar is geen geheue toegeken.
En as die rekenaar stap vir stap deur daardie kode,
dit gaan om die geheue toeken.
So dit is wat ons bedoel met dinamiese.
Goeie vraag.
Ja?
GEHOOR: Wanneer jy 'n definieer skikking met die vierkantige hakies,
doen dit nog steeds [onhoorbaar]?
Spreker 1: Dit is 'n goeie vraag.
Ek dink as jy 'n verskeidenheid toeken, dit is eintlik sit dit op die stapel.
Ek is nie positief oor dat, so moet my nie aanhaal.
>> Spreker 2: Ek dink it-- ja dit sit dit op die stapel.
>> Spreker 1: sit dit op die stapel.
OK, koel, bevestig.
Ander vrae?
Ja?
>> GEHOOR: Wanneer jy malloc delegeer, doen nie outomaties die rekenaar
toeken geheue vir jou veranderlikes?
Spreker 1: Ja, vir jou plaaslike veranderlikes,
dit outomaties plaas geheue op die stapel.
GEHOOR: So, wat is die punt van die gebruik van malloc?
Spreker 1: Wat is die punt van die gebruik van malloc?
So het ons 'n klomp van die voorbeelde, soos byvoorbeeld die gebruik van swap,
waar ons wil die omvang van die veranderlike om iets te wees
verder as net sy funksie oproep.
En ons wil iets dat ons kan rond te slaag
en dat ons kan toegang van verskillende plekke.
Dit is waar ons wil wil sit geheue op die hoop.
Sodat al die verskillende funksies dit kan oopmaak.
>> GEHOOR: Kan jy net verduidelik dat?
>> Spreker 1: So een opsie is-- so die vraag was, kan ons net allocate--
Jammer, ons kan verklaar globale veranderlike, in wese.
Dit is een opsie.
Maar met 'n baie van die, diegene geneig om werklik te kry morsige.
En ons in die algemeen dink van daardie as slegte ontwerp.
Ja.
Cool, enige ander vrae?
Awesome.
OK, beweeg op.
So dit is eintlik hoe ons ken geheue.
Ons het gepraat oor hierdie 'n bietjie.
Ons gebruik hierdie funksie genoem malloc.
En jy vertel dit hoeveel bytes in geheue, so hoeveel bytes op die hoop,
jy wil.
En dit gaan na die adres terugkeer, so 'n verwysing na 'n stuk van die geheue
dat dit toegeken vir jou.
So die tipe gaan leemte ster.
Dit gaan 'n wyser te wees alles wat jy besluit om daar in te sit.
Enige tyd wat jy noem malloc, het ons reeds gesê
jy het om dit te bevry sodat ons nie die geheue lekkasies.
>> Wat is die ander ding dat jy absoluut
moet elke enkele doen tyd wat jy malloc noem?
OK, jy het om dit te bevry.
Wat is die ander ding?
Check for null, mooi.
So, ja, dit is reg daar op die bord.
As jy sou probeer om te wys geheue en jy het geen geheue gelaat,
die rekenaar gaan om te sê, Ek het niks om jou te gee.
En dit gee jou terug null.
Vrae oor dit?
Ja.
>> GEHOOR: Hoekom sou jy ooit wil verklaar 'n muis met 'n spesifieke tipe
wanneer leemte ster kan hanteer alle vorme wyser anyways?
Spreker 1: Goeie vraag.
Hoekom sal ons sê int ster teenoor star nietig
wanneer leemte star alles kan hanteer?
So ons wil nie om ooit uitdruklik gooi wenke.
Dis net slegte praktyk.
Maar ons sal praat oor int sterre net soos 'n begrip van,
dit is 'n verwysing na 'n heelgetal.
>> GEHOOR: OK.
>> Spreker 1: Ja, en dit laat jy die waardes in dit te manipuleer
as heelgetalle.
>> GEHOOR: O, OK.
En leeg ster sal nie toelaat dat jy dit doen?
>> Spreker 1: Dit hang af van die konteks Ja, so moenie bekommerd wees nie
nie te veel bekommerd wees oor die tipe daar.
Weet net dat, in die algemeen, malloc stuur 'n wyser na iets.
Goeie vraag.
>> GEHOOR: Waarom vermenigvuldig jy dit keer 10? [Onhoorbaar].
>> Spreker 1: Natuurlik, so ek was net doen ewekansige voorbeeld hier waar
Ek wou genoeg om toe te ken ruimte om 10 heelgetalle te stoor.
Net 'n ewekansige keuse.
Ja.
Ja, what's up?
>> GEHOOR: Wat doen jy beteken deur die nagaan for?
Wil jy die kyk wyser for null of die malloc?
Spreker 1: Ja, presies.
So die vraag is, wat bedoel ons met 'n tjek deur nul?
Ons wil aan- altyd ons malloc noem en ons is terug 'n wyser,
ons wil sê, is wyser gelyk aan null?
So letterlik PTR.
Is PTR gelyk aan null.
Ja.
GEHOOR: So, was ek soort van wonder, as jy
inisialiseer die wyser in malloc, doen dit verwys na die begin van malloc?
Want as dit is 'n array--
Spreker 1: Dit is 'n groot vraag.
Ja, as jy malloc noem, die wyser wat it-- kom ons sê,
so hier ken ons 10 grepe van die geheue.
So, ek is jammer, genoeg ruimte vir 10 heelgetalle,
ons gaan na die adres van kry dat die eerste deel van die geheue.
Dit is 'n goeie vraag.
Ja.
>> GEHOOR: Deur die toekenning 10 wydverspreide heelgetalle,
jy kan eintlik gebruik dat wyser as like-- byna
soos 'n verskeidenheid van heelgetalle?
Spreker 1: Ja, so kan jy gebruik dit as 'n verskeidenheid van heelgetalle?
Ja, presies, dit is wat Pulak net het jy 'n paar skyfies on-- gelede
waar ons sê, OK, dit is regtig net soort of-- ons
kan dink dit as 'n verskeidenheid van 10 heelgetalle.
Dit gebeur net te wees op die hoop.
GEHOOR: maar jy kan nie toegang dit met vierkantige hakienotasie?
Spreker 1: Jy kan eintlik toegang dit met vierkantige hakienotasie, ja.
Jy kan dit te hanteer dieselfde.
Ja.
>> GEHOOR: Waarom sou wyser ooit nul wees?
>> Spreker 1: Hoekom sou wyser ooit nul wees?
As jy sal gebruik al die geheue op jou hoop.
As jou program up eet, up eet, eet tot geheue,
en daar is niks links, dan malloc gaan say-- as jy sê,
Ek wil 100 meer grepe, dit gaan om te sê, ek het nie 100 grepe.
Hier is null.
Dit beteken, het misluk Ek.
Ja.
>> GEHOOR: In daardie geval, null niks is nie, reg?
>> Spreker 1: Ja, in daardie geval nul is niks nie.
Jy het geen adres.
Daar is geen nagedagtenis.
Alle reg, beweeg op.
OK, laat ons praat regtig vinnig oor buffer oorloop.
Wanneer kan ons teëkom buffer oorloop?
Kom ons sê ons het ons a-- ken 'n stuk van die geheue,
en ons gaan die string in te skryf.
En ons gaan om te sê, OK, ek gaan om te wys
genoeg plek vir ses karakters.
En ek gaan om te vra die gebruiker vir 'n paar insette.
En die gebruiker insette, byvoorbeeld, hallo.
En wat pas perfek goed, want ons het
ruimte vir al die karakters van hello, en die nul eindig karakter.
Baie van die kamer, geen probleem.
>> Maar wat as ons die geleentheid te gee vir 'n bose gebruiker om ons program te gebruik,
en hulle tik in nie ses karakters, of nie vyf karakters, maar 'n miljoen.
Hulle hou tik, en tik, en tik, wat gaan gebeur?
Wel, ons gee net die rekenaar enough-- of jammer,
Ons het net hierdie string genoeg ruimte vir 5 karakters.
So, gaan ons iets soos te kry hierdie, waar die bose persoon wat is
tik in insette kan oorskryf die grootte van die buffer,
en kan eintlik gaan verby die bedrag dat dit oorspronklik is toegeken.
En dan wat jy kan doen, is die regtig verkeerde ding wat jy kan doen,
is oorskryf die terugkeer adres.
Wat beteken basies jy kan soort van te neem
beheer van die gedrag van die program.
So op 'n baie hoë vlak buffer oorloop is wanneer
jy ken 'n paar bedrag van die geheue.
En dan you-- dit omdat jy neem die gebruiker se toevoer of iets
soos that-- jy gaan oor die grense van wat jy oorspronklik het toegeken
en begin geknoei jou program.
Ja?
>> GEHOOR: Hoekom sou nie wat net terug n segmentering skuld?
>> Spreker 1: Hoekom sou dit nie terug n segmentering skuld?
Dit kon.
Soms is die samesteller of tydens een van jou runtime
is eintlik gaan om seker te maak dat.
As sekere dinge gebeur, en dit is soort van 'n laer vlak,
dan moet jy weet.
Maar as jy nie ontwerp hierdie stelsels behoorlik,
dan moet jy die kans van nie vang dit en net
sodat die rekenaar take-- die slegte mens na jou rekenaar te beheer.
Ja.
>> GEHOOR: [onhoorbaar]?
Spreker 1: Natuurlik.
O, as ek buffer sê, ek bedoel net die hoeveelheid geheue wat jy toegeken.
So hier het ek gesê: Ag, het ons toegeken ses char-- genoeg plek vir ses karakters.
En ek het net noem dat my buffer waar ek kan inligting skryf.
Ja.
Enige ander vrae oor hierdie?
Ja.
>> GEHOOR: Hoe doen jy dit stop?
Hoe kan jy dit stop?
Spreker 1: Awesome vraag.
Hoe kan jy dit stop?
Hoe kan jy buffer oorloop voorkom?
Wel een manier om dit te doen, is iets soos GetString, waar ons voortdurend te verhoog
die bedrag van die geheue dat ons ken As die gebruiker 'n baie van die teks.
Nog die ding is, net as jy wil ses karakters, doen 'n vinnige check.
Sê net insette ses karakters.
Ja.
So kom ons sê jy was werk on-- ons gaan
om te gaan na die web dinge 'n bietjie later in die course-- maar laat
sê jy werk op 'n vorm, sou jy net beperk hoeveel kan ingehandig.
Ja.
>> GEHOOR: GetString trek geheue van stapel, reg?
Net om te verduidelik?
Spreker 1: Een meer tyd?
GEHOOR: Is GetString neem geheue van die stapel?
Spreker 1: Ek glo Getm-- get int neem geheue van die hoop
want dit alloc noem.
GEHOOR: Oh.
OK.
Spreker 1: Ja, malloc en realloc.
Ander vrae?
Ja.
>> GEHOOR: So deur die definisie van die grootte van die buffer,
jy iemand uit te verhoed in staat is om die kode te spuit
wat kan gly verby die [onhoorbaar].
>> Spreker 1: So, met die definisie van die grootte van die buffer,
jy gesê het, OK hier is hoe veel geheue ons kan gebruik.
As jy toelaat dat die gebruiker om te skryf oor dit, dan is jy gaan om te loop in probleme.
Maak sin.
Awesome.
Kom ons beweeg saam.
Alles reg.
Praat van foute, hier is 'n paar algemene fout boodskappe
wat dalk het getoon terwyl jy was kodering, werk op jou probleem stelle.
Goeie kans dat een van hierdie dui op die quiz
As verlede jaar is 'n aanduiding.
So, antwoorde is soort van hier op die bord.
Maar voel vry paar meer uit te skree.
>> Hoekom kan 'n segmentering skuld gebeur?
Hoekom kan jy 'n fout kry segmentering wanneer jy die bestuur van jou program?
>> GEHOOR: [onhoorbaar].
>> Spreker 1: Goed.
Ja, as ons probeer om toegang geheue wat nie is aan ons gegee.
As ons dereference n null pointer.
Byvoorbeeld, as ons malloc noem, en vergeet om te kyk of dit null,
en ons het net probeer om dit te gebruik, sal die rekenaar se gaan ons 'n segmentering skuld te gee.
Goed.
Wat van implisiete verklaring van funksie?
Wat beteken dit?
GEHOOR: Jy probeer om 'n gebruik funksie wat jy nie gedefinieer nie.
Spreker 1: Goed.
Jy probeer om 'n funksie te gebruik dat jy nie gedefinieer nie.
So wat kan wees een van twee dinge.
Miskien was dit soos die voorbeeld Camille het jy vroeër.
En jy het 'n hooffunksie wat roep iets genoem kubus.
En kom ons sê jy het vergeet hierdie prototipe te skryf.
Jy het vergeet om te sê, hey rekenaar, Ek het hierdie funksie genoem kubus.
Jy sal dit later te sien.
Kom ons sê jy het vergeet om die skryf prototipe, kan jy hierdie fout kry.
Nog 'n ding is, kom ons sê jy probeer om printf gebruik,
en vergeet om in te sluit die standaard biblioteek,
dan is dit gaan om te sê implisiete verklaring van funksie.
En laaste, maar nie die minste nie, onverklaarde identifiseerder.
Ja.
>> GEHOOR: Jy het 'n probleem omvang.
Soos miskien jy probeer om roep 'n plaaslike veranderlike wat
in 'n ander soort van die gebied.
Spreker 1: Groot, so as jy ' 'n veranderlike wat nie in omvang,
en jy probeer om dit te gebruik, jy gaan in die moeilikheid te kry.
En net meer algemeen, kom ons sê jy probeer om x te gebruik, met die steeds sê int
x is gelyk aan 5 is, dan is jy gaan loop in die moeilikheid.
Verskoon my, vrae oor hierdie?
Awesome, chugging reg langs.
>> OK, rekursie, waarom might-- laat see-- Ek het my sch-- oh hier gaan ons,
maak net seker ons rofweg op skedule.
Alle reg, cool.
OK, rekursie, die algemene idee van rekursie, 'n rekursiewe funksie
is 'n funksie wat homself noem.
OK, so dit is wat ek bedoel met 'n program konsep
waardeur 'n funksie noem self.
Wat some-- wat is 'n sou wees goeie rede om rekursie gebruik?
Wanneer dit dalk nuttig?
Of whats 'n program wat regtig leen hom tot rekursie?
>> GEHOOR: Binary search.
>> Spreker 1: Binary search leen hom tot rekursie,
omdat jy hierdie probleem het dat jy kan breek in kleiner stukke,
en voortdurend uit te voer dieselfde algoritme op dit.
Dit lei tot, in baie gevalle, meer elegante kode wat meer akkuraat.
Ons is net die voorbeeld van binêre soek.
Nog 'n voorbeeld is saamsmelt soort.
Soms, wanneer jy dink van 'n algoritme, soos faktoriaal,
dit voel net rekursiewe, reg?
Omdat ons weet dat die faktoriaal van 5 is 'n faktoriaal 4 keer 5.
En so wanneer jy die opstel van 'n probleem dat die pad, dit voel net rekursiewe.
Sodat sou 'n goeie manier om dit te skryf.
Vrae?
Ja.
>> GEHOOR: Wat is 'n basis geval?
>> Spreker 1: Ag wat is 'n basis geval?
Ek het gesê, moenie vergeet om 'n basis geval sluit.
Kom ons sê ons skryf 'n faktoriaal funksie,
en ons was van faktoriaal 5 doen.
En ons weet dat 'n faktoriaal van 5 is 5 keer 'n faktoriaal van 4,
blah, blah, blah, blah.
Hoe weet ons wanneer om te stop?
Hoe weet ons dat ons eintlik 'n nommer?
Want as ons gehou roeping faktoriaal, dan sou ons nooit 'n antwoord te kry, reg?
So wanneer ons weet hoe om stop in die voorbeeld faktoriaal.
Enigiemand, ja.
>> GEHOOR: Wanneer die 1 faktoriaal is 1.
Spreker 1: Goed.
So ons weet.
Ons kan aanvaar dat 1 faktoriaal is gelyk aan 1.
So as ons tot die punt waar Ons noem faktoriaal op 1,
net voort te gaan en terug te keer 1.
En dit is jou basis geval.
Omdat ons weer weet ons getref dat, en ons altyd sal getref dat, sal ons never--
sal ons nie net te hou vir ewig gaan.
Enige ander vrae oor rekursie?
Ja.
>> GEHOOR: So wanneer jy terugkeer 1, is dit net outomaties
sal die program te stop, reg?
>> Spreker 1: Ja so wanneer jy noem terugkeer 1, if-- kom ons sê,
Kom ons sê faktoriaal van 2 oproepe faktoriaal van 1, faktoriaal van 1
sal net hand terug 1.
En nou faktoriaal van 2 sal sê OK, 2 keer 1 is 2, en terug te keer dat die antwoord.
Ja.
>> GEHOOR: Het ons te bekommer oor omvang in rekursie
wanneer jy gaan in 'n algoritme?
>> Spreker 1: Ag, ja.
Ja, jy hoef te bekommer oor omvang in die konteks van rekursie.
So net die veranderlikes gedefinieer in daardie lopie van die funksie
gaan nuttig te wees.
Ja goeie vraag.
Alle reg, laat ons bly beweeg saam.
Want ons het 'n baie materiaal om deur te kom.
Maar soos ek gesê het, voel vry om te tref up kantoorure, of ons na die feit.
>> Dit is net 'n baie vinnige slide.
Ons het baie geleer oor navrae en soorte.
Asseblief, asseblief, asseblief, hierdie afdelings is aanlyn,
Ek glo op cs50.net/quizzes.
So gaan neem hierdie grafiek en sit dit op jou resensie vel,
want daar sal 'n vraag oor hierdie.
Moet asseblief nie kry dit verkeerd.
Net baie vinnig, wat hierdie grafiek beteken,
is dit praat oor die groot o, wat ons weet die boonste grens van 'n algoritmes te wees
loop van die tyd.
En ons het omega, wat gaan die ondergrens te wees
van 'n algoritmes runtime.
OK?
>> GEHOOR: [onhoorbaar].
>> Spreker 1: Ja, wat is die laaste ding wat?
Wat is theta?
Dit is as we-- ons net gaan omgee in hierdie klas in die geval
waar ons bogrens en ons ondergrens is dieselfde.
Ja, dit is die enigste keer is dit gaan om te kom in hierdie klas.
OK, ek gaan om voort te gaan.
As jy jou foto nie geneem het, Ek belowe dit sal aanlyn wees.
>> OK, awesome, structs.
Hoekom kan ons wil structs?
Wat is 'n nuttige rede ons wil dalk structs.
Iemand skree iets uit.
Wel, laat ons kyk na die byvoorbeeld op die bord.
Kom ons sê dat ons te doen het met al hierdie studente.
As ons 'n program vir CS50, is daar soos 800 mense.
Ons moet write-- ons gaan nodig om 'n klomp van die inligting te hanteer
oor studente.
Dit sal lekker wees as ons kon soort groep
this-- al die inligting wat het te doen met 'n bepaalde student
in 'n tipe data.
Maar ons weet daar is geen data tik die naam, Student, reg?
Ons het 'n heelgetal is, ons het 'n float, ons het 'n string, of 'n kar ster
maar ons het nie, 'n student.
>> So kan ons doen is eintlik soort definieer ons eie struktuur, noem dit student,
en ons kan 'n paar te assosieer verskillende velde met daardie struct.
So in hierdie geval, laat ons sê ons het 'n student.
En die dinge wat ons omgee oor die student ID-nommer
en die naam van die student se.
En nou kan ons hierdie ID assosieer en hierdie naam met 'n gegewe student.
So laat ons sien 'n paar voorbeelde.
>> OK, so hier sê ek, OK, kom ons sê ons wil 'n student.
Ek noem hom student 1.
En sy ID-nommer, in hierdie geval, kan ons toegang
deur net te doen die naam van die student dot die veld ons wil om toegang te verkry.
So dit gaan net student 1 dot ID, en ons stel dit gelyk aan 1.
Want onthou, het ons gesê dat ID gaan na 'n heelgetal wees.
En baie soortgelyk, kan ons sê, dit naam student se gaan Davin wees,
byvoorbeeld.
So kan ons net toegang tot die veld van 'n struct gebruik van hierdie dot.
Vrae oor dit?
Ja.
>> GEHOOR: Is daar enige manier om jou veranderlikes te beskerm?
Is daar enige manier om veranderlikes te beskerm van wat ekstern verkry?
>> Spreker 1: Is daar in elk geval om jou te beskerm veranderlikes
van wat ekstern verkry?
Nie in die bestek van CS50.
Ander vrae?
Ja.
>> GEHOOR: Wat is typedef struct?
Wat beteken elke komponent beteken?
Spreker 1: Ag, wat is typedef struct?
Wat beteken elke komponent beteken hierdie man?
>> GEHOOR: Ja.
>> Spreker 1: OK, cool.
So dit sê, hey rekenaar, ek wil 'n nuwe struktuur te skep.
En ek gaan om 'n definisie te definieer want dit, soos wat ek kon gebruik
asof dit 'n tipe deur my program.
OK, so ek wil 'n struktuur te definieer.
En ek gaan nou wees in staat wees om dit te gebruik as 'n tipe.
En sy naam is student.
En hier is sy velde.
>> GEHOOR: So, is dat typedef struct [onhoorbaar]?
Spreker 1: As jy wil in staat wees om gebruik van hierdie struct in jou program,
en in die meeste gevalle in CS50 ons doen, ons het om te sê tipe Def.
En wat dit toelaat om dit te gebruik dieselfde manier wat ons gebruik soos int of float.
Die rekenaar sal altyd weet wat dit is.
Ja.
>> GEHOOR: Kan ons skryf dit in die kop lêer?
>> Spreker 1: O, jammer.
Skryf ons dit in die kop lêer?
Jy kan dit skryf aan die bokant van jou program, aan die bokant van jou c program.
Ja, dit sal wees die mees redelike plek vir dit.
Terug daar.
GEHOOR: Dieselfde vraag, so voor belangrikste?
Spreker 1: Right, hierdie moet jy wees iewers dat almal dit kan oopmaak.
Dus, voordat belangrikste in jou geval, ja.
GEHOOR: Is daar 'n verskil tussen om student bo-op en op die onderste?
Spreker 1: Ag, is daar 'n verskil tussen om student
op die top of onder?
Let-- red daardie vraag, en wanneer ons by geskakelde lyste,
ons sal sien dat, OK?
So hou op om daardie vir 'n sekonde.
Die laaste ding wat ek wil om hier te noem, is in plaas van 'n struktuur,
ons het 'n wyser na 'n struktuur, kan ons ons notasie verander
om 'n bietjie mooier wees.
>> Ons kan sê, kom ons sê ons het 'n wyser na 'n student eerder as om net
n student.
As ons wil toegang tot 'n veld, in plaas van doen, goed gaan dereference die wyser,
en dan toegang tot die naam in die veld.
Dit lyk 'n bietjie notasie morsig met die ster in hierdie dot.
Heeltemal korrek, maar 'n soort van skoner manier om dit te doen,
is net om wyser pyl naam sê.
En wat eintlik kombineer dereferencing en toegang tot in een pragtige simbool.
Vrae oor dit?
>> GEHOOR: sê net dat 'n mens meer tyd.
>> Spreker 1: Sê dat een meer tyd.
>> GEHOOR: Presies wat jy nou net gesê.
Spreker 1: Sure, presies wat ek het net gesê.
As ons 'n wyser na 'n student eerder as die student self,
ons can-- een manier dat ons kan toegang tot die gebied is om dereference dit, en dan
toegang naam.
Nog, mooier manier waarop ons kan dit doen, wat net
'n bietjie van sintaktiese suiker, is net wyser pyl naam te doen.
En wat gaan die kombineer dereferencing en die ontsluiting.
Ja, pretty cool.
Alles reg.
>> So laat ons praat oor die ander vraag.
Kom ons spring na nodes, wat ons gaan gebruik
in verband lyste in net 'n sekonde.
So hier, sal jy sien dat daar is die woord node beide op die bodem,
en op die top.
Voor, toe ons die definisie van student, ons het net student op die bodem.
Ons het nie 'n student aan die top.
Iemand weet waarom dit kan wees?
Wat is die verskil?
Ja.
GEHOOR: So jy node gebruik is die definisie van node,
so dit is 'n rekursiewe ding?
Spreker 1: Goed.
Ja, ons moet ons nodes het wyser na ander nodes.
So aangesien ons hierdie tipe voordat dit werklik is gedefinieer,
ons nodig het om dit te sit op die top net sodat hy weet wat dit is.
GEHOOR: So steeds ons moet aan die onderkant?
Spreker 1: Ja.
GEHOOR: So altyd aan die onderkant.
Spreker 1: Altyd aan die onderkant.
So al van jou sal het dit aan die onderkant.
Enige ander vrae?
Alle reg, so kan eintlik praat oor geskakelde lyste regtig vinnig.
So geskakelde lyste are-- ons dit gebruik in plaas van skikkings in sommige gevalle,
omdat ons weet dat skikkings is 'n vaste lengte, terwyl gekoppel lyste
ons kan groei en krimp as ons wil hê.
So, dit is 'n voorbeeld van wat 'n geskakelde lys lyk.
Wat ons nodig het om te sien is die hoof van die lys.
So waar die lys begin.
En dan node hy elke daaropvolgende knoop, is
verantwoordelik vir die wete waar die volgende node is.
So in hierdie geval, die knoop wat 1 winkels is verantwoordelik vir die wete waar 3 is.
Die persoon wat 3 winkels is verantwoordelik vir om te weet waar 9 is.
En 9 het niemand anders om te wys.
Dit is die einde van die lys, so dit sê net null.
OK?
>> GEHOOR: Wat is die punt van hierdie?
>> Spreker 1: Wat is die punt van hierdie?
>> GEHOOR: Ja.
Spreker 1: Omdat, laat sê dat ons het 'n paar data.
En ons weet nie presies hoe veel data wat ons wil voor die tyd.
So met 'n skikking, kom ons sê waar ons wil mense tel in die eerste ry.
Die kans is dit nie gaan verander.
Ons kan net sê, OK, ek wil 'n skikking van grootte ses.
Maar as ons iets wil hê wat gaan om te verander.
>> Byvoorbeeld, kom ons sê ek het probeer om tred te hou van die studente te hou
as hulle in die kamer kom vir die hersiening sessie.
Ek het geen idee hoe baie van julle mense gaan om te wys.
So ek wil dalk 'n datastruktuur dat ek kan uitbrei en krimp.
Want miskien sal iemand verlaat, miskien iemand sal kom.
En so op enige tyd, ons kan byvoeg of verwyder nodes.
Cool, groot vraag.
Ja.
>> GEHOOR: As jy kan gebruik iets soos GetString
wat hou om jou te laat kry meer as data wat jy nodig het, waarom jy dit te nodig?
>> Spreker 1: Hoekom sou jy gebruik geskakelde lys wanneer
jy kan iets soos GetString gebruik?
Dit is 'n goeie vraag.
Onthou dat een van Get-- die ondergang van GetString
is dat ons nie 'n baie te doen het goeie werk van die vrylating van wat die geheue,
en ons het 'n klomp van die bekendgestel geheue lekkasies in jou program?
Jy kan dit 'n staties te neem grootte skikking en hou groei nie.
Maar jy wil hê om uit te vind nuwe plekke in die geheue.
Dit sou net 'n baie oorhoofse.
>> Een van die mooi dinge oor gekoppelde lyste in teenstelling met skikkings, is skikkings
is almal in dieselfde plek in die geheue.
Dit het kontinu stukke van die geheue.
AANGESIEN geskakelde lyste, 2 en 3 Mei heeltemal op verskillende plekke.
Soos 2 is hier, en 3 is hier.
En so lank as wat hulle het 'n wyser na mekaar, dis fine.
Ons weet ons kan dit vind.
Vraag daar?
>> GEHOOR: GetString is 'n funksie in die CS50 biblioteek, reg?
Dit bestaan ​​nie in die werklike programme.
>> Spreker 1: Korrekte.
Reg, dit is die ander ding.
GetString bestaan ​​nie buite die konteks van CS50.
Ja.
>> GEHOOR: So doen die feit dat twee kan regtig ver van mekaar wees,
doen wat 'n impak van die doeltreffendheid van toegang tot die elemente op die lys?
Spreker 1: Dit is 'n groot vraag.
Die vraag was, beteken dit impak die doeltreffendheid van toegang tot
hierdie verskillende elemente in die lys.
Eintlik, ja.
Omdat ons weet if-- laat sê ons wil toegang
die tweede element van die skikking, weet ons kan ons maar net array bracket 1, reg.
Dit was nog altyd gaan dieselfde wees plek.
Maar as ons wil hê dat 3 te kry, Ons kan nie net sê, gaan kry wat 3.
Ons het om te sê, OK, begin by die begin van die lys,
en nou is ons eintlik om deur te loop totdat ons
vind die aantal ons belangstel in.
>> So in hierdie geval sê ons, OK dit is die eerste getal.
So in wese, dis indeks 0.
Nou moet ons die tweede getal te vind.
Dit is indeks 1.
So dit is eintlik gaan aan- net toegang, gaan N tyd neem.
Cool, groot ou N. Ja.
>> GEHOOR: Wat is elk van die lyste?
Is hulle elke skikkings, of wat?
Spreker 1: Dit is 'n groot vraag.
Wat is elk van die strukture wat ek geteken het?
Hulle is nodes.
So elkeen van hierdie klein struktuur het twee dele.
Dit het 'n heeltallige wat hou.
Dit is die werklike data dat dit vashou.
Dit is die soort van nuttige deel.
En dit is wat maak dit 'n geskakelde lys,
dit het 'n wyser na die volgende knoop.
Awesome vraag.
Alle reg, so laat lyk baie vinnig kyk na 'n paar voorbeelde van wat
ons kan doen met geskakelde lyste.
>> So 'n baie vinnige voorbeeld is, dink ons ​​wil 'n soektog te doen.
Watter soort soek nie kan ons doen op geskakelde lyste?
>> GEHOOR: Binary.
>> Spreker 1: Binary.
Hoekom kan ons nie gebruik binêre soek?
>> GEHOOR: [onhoorbaar].
Spreker 1: Right, want met binêre soek, moes ons staatmaak op die feit
dat ons net kan spring in die skikking by enige punt.
Ons kon net sê, gaan na die middel element.
Met hier, soos ons sê 'n bietjie vroeër,
Ons kan nie net spring om die middel element.
Ten einde enige vind element, wat ons eintlik
moet loop deur ons hele lys.
>> So as ons wou 'n soektog te doen, die beste wat ons kan doen, is net 'n lineêre soek.
Ons begin by die kop, ons check-- kom ons sê ons is
soek 9-- ons begin by die kop.
Ons sê, is dit 9?
Geen.
Is dit 9?
Geen.
Is dit 9?
Ja, ons het dit.
OK, dit is al wat.
Hier is 'n bietjie van pseudo-kode.
Ek gaan dit vir jou te laat ouens oor kansellasies op jou eie,
net omdat ons loop 'n bietjie kort op tyd.
>> Kom ons praat oor inplanting.
Ons het 'n baie cool demo van dit in lesing waar ons sê:
OK, ons het hierdie geskakelde lys waar almal se wys na mekaar,
en iemand kom op die verhoog.
Hoe weet ons dat voeg persoon in ons geskakelde lys?
Wel, 'n verkeerde manier om dit te doen, wat is Ek dink wat ons die eerste keer gesien,
is wanneer die persoon in front outomaties
wys na die nuwe mens.
En dan het ons soort verlaat die tweede helfte van die lys, reg?
Omdat ons nie weet waar dit is in die geheue nie.
So om baie versigtig te wees oor die orde waarin ons plaas dinge.
>> So hier, kom ons sê ons wil sit 1 aan die voorkant van ons lys.
Eerstens, ons het 1 punt by die tweede element-- of die element
wat bevat 1.
So, ons dit doen, net so is ons nie gaan die tweede helfte verloor.
En nou kan ons hoof punt moet 1.
So weer, dit is net soos super hoë vlak.
Dit is hoe ons 'n knoop sou plaas.
Ons het 'n baie pseudo-kode here-- jammer,
Ek weet nie hoekom ek noem dit pseudo-kode.
Dit is die werklike kode.
Jy kan gaan check dit uit later.
>> Alle reg, laat ons baie quickly-- meer vrae
op geskakelde lyste voordat ek beweeg op 'n paar ander data
strukture in ons laaste 10 minute.
>> GEHOOR: Moet ons nou hoe om dit te skryf op 'n toets?
>> Spreker 1: Het ons nodig om te weet hoe aan-
>> GEHOOR: Skryf dit op 'n toets.
>> Spreker 1: Ons hoef aan- jy moet bereid wees
om te skryf, plaas, te verwyder, en soek vir gekoppelde lyste op die proef gestel.
Dit is iets wat ons kan verwag om te doen.
Gaan net meer as dit.
Indien u enige vrae oor die kode, skiet jou TF n e-pos,
kom kantoorure.
Daar is nog baie tyd om te studeer, nie te bekommer nie.
Alle reg, enige ander vrae oor geskakelde lyste?
Ja.
>> GEHOOR: So, as jy nie die gebruik van die wyser om te gaan na die een aan die regterkant
voordat jy die wyser vir gebruik die een aan die linkerkant, dit is
die ekwivalent van die verwydering van alles reg?
Spreker 1: Ja.
GEHOOR: [onhoorbaar].
Spreker 1: Right, want ons kan nie kry dit, dit is eintlik nog erger.
Want nie net ons weet nie waar dit is, kan ons nie meer gebruik nie,
maar ons is nie we've-- bevry dat die geheue nie.
So dit is net rond hang en nie nuttig wees omdat ons nie kan vind nie.
Ja, cool vraag.
>> Alle reg, laat ons praat oor stapels.
Ons het stapels baie vinnig.
Hulle is die eerste in die laaste uit data strukture.
So ons dink van die stapels in Annenberg van bak waar ons stapel dinge op die top.
En as jy gaan kom kry 'n skinkbord, is jy
altyd gaan na die een op die neem top, wat is die mees recently--
wat is die ding wat ons die meeste onlangs op die top van die stapel.
Sodat jy kan soort van dink van hierdie soort visuele wanneer jy dink van die stapels.
En dan, ons het iets inloer uit die top van die stapel.
>> As ons are-- O ja, en die woorde wat ons gebruik wanneer ons praat oor hierdie data
strukture is gewoonlik, as ons sit iets op die stapel,
ons sê ons is besig om dit op die stapel.
En as ons iets af te neem die stapel, ons sê ons is knal uit die stapel.
As jy gaan om te implementeer 'n stack-- wat ek beslis
raai u out-- probeer jy gaan wil om tred te hou,
Kom ons sê jy 'n skikking.
Ek weet in lesing het ons gepraat oor die gebruik van beide die skikkings
of geskakelde lyste te 'n stapel te implementeer.
As jy 'n skikking, moet jy keep--
verskoning me-- ons nodig het om tred te hou van die grootte en die kapasiteit.
So het die maksimum aantal dat ons stapel kan hou.
Vrae oor stapels?
>> GEHOOR: Wat is die verskil tussen grootte en kapasiteit?
Spreker 1: Die verskil tussen grootte en kapasiteit, awesome vraag.
So kom ons sê ons is met behulp van 'n skikking, en ons
toeken genoeg plek vir 10 heelgetalle.
En ons begin te vul dat.
En ons stoot dinge op, en ons pop dinge af.
Ons wil om tred te hou van die maksimum hou getal wat ons kan hou, dis kapasiteit.
En ons wil om tred te hou van die hou huidige aantal wat ons het, dit is groot.
Goeie vraag.
Enigiets anders op stapels?
Alle reg, laat ons praat oor verbasing toue.
>> Anders stapels, wat vir die eerste is in die laaste uit, hierdie is die eerste in, eerste uit.
So dit is like-- dink van 'n lyn.
Dink aan die voering aan die Apple Store aan enige produk te kry.
En die eerste persoon in die lyn moet die eerste persoon wat gehelp.
So die eerste ding wat gestoot is dit die eerste ding wat inloer.
Koel?
Baie similarly-- oh, die woorde wat ons gebruik in plaas van druk en pop--
wat ek net gebruik word, Ek is sorry-- is ons sê,
as ons om iets in die tou, sê ons waglys is.
As ons neem iets uit die tou, sê ons ons dequeued.
Dit.
Ek kan uitspreek diegene verkeerd is, maar jy kry die idee.
En dan weer, net soos stapels, as ons die implementering van hierdie as skikking,
ons nodig het om tred te hou van die hou grootte, die kapasiteit, en die hoof.
Wat bedoel ek met die kop?
Hoekom moet ons hou spoor van die kop?
>> GEHOOR: want dit is waar die begin van jou lys is.
Spreker 1: Ja, basies die hoof is waar die begin van ons ry is.
Want ons weet, in teenstelling met stapels, which-- Ek gaan om te probeer om hierdie way-- gesig
ons weet dat dit altyd gaan krimp en groei op hierdie manier op hierdie manier.
Toue, mense kom op die einde en laat van die begin af,
so ons het om tred te hou waar die begin is.
Dit is wat ek bedoel met ons nodig het om hou van waar die kop is.
Koel?
Alles reg.
Agt minute, paartjie meer onderwerpe, ons kan dit doen.
>> Alle reg, hash tafel.
Ons het gepraat baie kortliks oor hash tabelle.
Vir die quiz, jy hoef net verstaan ​​op 'n hoë vlak.
Die basiese idee is dat jy hierdie data.
En ons wil om dit te bekom in die tyd wat vinniger as iets soos 'n gekoppelde
lys.
Omdat ons gesê, as ons soek deur 'n geskakelde lys,
dat N tyd kan neem.
Selfs toegang kan neem N tyd in 'n geskakelde lys.
Hash tafels gee ons 'n manier wat ons kan vinniger toegang dinge, en meer
vinnig soek vir dinge, sonder met die beperkings van 'n skikking
waar ons vaste grootte.
>> So ons dink aan 'n datastruktuur waar waar ons sit dit in die data struktuur
is afhanklik van hierdie magiese hash funksie.
So in hierdie geval, die magiese hash funksie net om 'n woord,
kontrole wat die eerste letter is, en dan net sorteer dit alfabeties.
Sodat ons in wese sit hulle in verskillende emmers.
Wanneer ons sien piesang, sê ons, OK, laat ons in die B emmer.
Wanneer ons sien Apple, laat sit dit in die A emmer.
As ons sien appelkoos, laat sit in die A emmer.
OK?
>> So dink ek is op soek for-- ek weet nie, wat is 'n ander vrugte?
Dink ek was op soek na oranje.
Waar moet ek kyk?
In die O emmer.
Ja, daar is net een plek dat oranje mag wees, OK?
So ek vroeër gesê het wat gebeur if-- goed ek vroeër gesê het,
Kom ons sê ons sit appelkoos in-- maar ek regtig spreek die feit dat, o nee,
as ek berry in te stel, is dit gaan in stryd met piesang.
Waar ons sit dit as daar ' reeds iets in ons tafel?
Wel, ons het 'n paar opsies.
>> Opsie nommer een is lineêre indringende, wat basies beteken,
Kom ons sê ek wil om te probeer om sit berry, en ek sien, o nee,
piesangs reeds daar, Ek sê net OK, laat
my kyk vir die volgende beskikbare plek.
So ek loop, ek sê, o, daar is niks in die D emmer.
Ek kan nie regtig dink aan enige vrugte wat begin met die letter D,
so ek gaan net berry daar sit.
Durian.
OK, so aangesien daar niks in nog daar was,
Ek kan net sowel gebruik daardie plek.
Wat is die nadeel van dit?
>> GEHOOR: Dis buite orde.
>> Spreker 1: Jammer?
GEHOOR: Dis buite orde.
>> Spreker 1: Dis out-- reg, kan ons uiteindelik
met dinge wat nie in-- gestoor in emmers in die pad
dat ons van hulle verwag om te wees.
So as ons soek vir Berry, voordat ons gesê,
O, ons kan kyk in een emmer.
Dit kan net in een emmer.
Maar nou, regtig, dit kan wees in al die emmers, reg?
>> OK, hier is 'n ander opsie, aparte chaining--
wat is die idee dat ons gaan om 'n bietjie later in P stel 5 gebruik.
Eerder as net een spasie in elke emmer,
Daarom het ons nie elke emmer 'n wyser na 'n geskakelde lys?
Waar ons sê, OK, daar is 'n emmer vir alles wat begin met A.
En daar is net gaan om te wees 'n gekoppelde lys van vrugte wat begin met A.
So as ons 'n nuwe vrugte, kom ons sê ons get-- ons avokado, ons het 'n appel,
Kom ons sê ons kry appelkoos, hoe sou ons in die lys?
Wel, ons wil gaan na emmer 0, en ons wil net plaas dit in ons graag lys
eenvoudig soos dit.
>> Nou het ek bly sê emmer.
Ons kan dit te implementeer in 'n aantal maniere.
Een tipiese manier dat dit soort prentjie stel,
is dalk met 'n verskeidenheid van verwysings na geskakelde lyste.
Dit is een manier waarop ons kan implementering van 'n hash tafel.
GEHOOR: Wil jy 'n ander nodig lys, want piesang en bessies is uit
van orde?
Spreker 1: Wil jy need-- ah, sou jy
nog 'n lys, want piesang nodig en bessie is buite orde?
In hierdie geval, ons hash funksie, wat ons vertel waar om dinge
gee nie om oor die tweede brief.
Dit maak nie omgee alphabetizing, dit gee net oor die eerste letter.
Vraag?
>> GEHOOR: Wat is die definisie van daardie funksie, en wat beteken dit lyk?
Spreker 1: Ag, goed.
OK, so ons hoef nie bekommerd te veel vir hierdie quiz.
So ek het nie sit in die skyfies.
Ons gaan ingestel word om dit vir P stel 5.
Maar basies, dit sê, gegewe 'n nuwe element, waar moet ek dit?
Of, kom ons sê ek is op soek na 'n element, waar kan dit wees?
Ja, n groot vraag.
>> OK, baie vinnig, bome en drieë gedruk.
So 'n boom is net 'n soort van georganiseerde data struktuur.
En ons gaan 'n baie foto's te sien wat sal hierdie super duidelik te maak.
En 'n Trie, wat ons gesien het in die klas, is 'n baie spesiale soort boom
wat in wese werk soos 'n multi-vlak hash tafel.
Dit is super cool.
Ons gaan om dit te sien in net 'n sekonde.
Alle reg, so laat praat oor bome eerste.
So dit is regtig n tipiese voorbeeld van 'n boom, waar ons het 'n paar hiërargie.
Jy sien dat 'n mens op die heel boonste, reg?
En ek kan sê top, want daar is duidelik 'n bestel, omdat ons
het hierdie pyle om af te gaan.
Sodat die ding op die top, Ek noem dat die wortel node.
So een is die wortel node.
En die dinge wat op die bodem, wat niks het kom uit hulle
Ek sê dit is die blaar nodes.
So 8,9 5, 6, 7, OK.
En gewoonlik is die terminologie ons kan sê is, 1 is 3 se ouer.
So dit is die ding wat 'n kom vlak bo dit, en punte om dit te.
En 3 is 1 se kind.
Dit is die ding wat 1 punte.
Vraag?
>> GEHOOR: Kan jy gaan terug na die vorige skyfie, asseblief?
>> Spreker 1: Kan ek terug gaan met die vorige skyfie?
Seker nie.
Vrae oor hierdie?
Of jy net wil om te kyk na dit?
GEHOOR: Ek het net nie kry deur dit.
>> Spreker 1: OK, koel, ja.
Dit sal al wees aanlyn doen nie bekommerd oor die manier waarop elke woord.
En in die belang van tyd, ek gaan om te gaan.
Is dat OK?
Awesome.
OK, cool.
So laat ons praat oor 'n baie spesifieke kind--
so ons het hierdie algemene struktuur van bome,
wat net enigiets wat ons kan soort rang dinge hiërargies.
>> Binêre bome is dinge waar elke node het by die meeste twee kinders.
OK?
En ek het gesê, OK, so wat lyk om hierdie beskrywing pas.
Ek het gesê node, nie 'n binêre soek boom.
Wat is 'n binêre soekboom?
Dit is gesorteer.
So jy weet dat in 'n binêre soekboom,
alles aan die tree-- alles om die nodes links is kleiner,
en alles aan die nodes reg is groter.
Dit is dus nie 'n binêre soekboom.
Dit is net 'n binêre boom.
So ons het 'n groot kategorie van bome, effens kleiner kategorie
van binêre bome, soek deur die a-- binêre soek bome.
Koel?
Alles reg.
>> En nou, die meeste pret al, ons het ons drieë gedruk.
Julle het hierdie foto in lesing?
Ja, dit moet super vertroud te kyk.
Kom ons kyk na hoe ons eintlik implementeer.
Of eintlik, laat ons sien, beteken dat selfs kom?
Nee.
Alle reg, ons het nie eens bekommer oor wat 'n lae vlak dinge.
Ons sal baie tyd hê dan spreek P stel 5.
Maar vir nou, net 'n baie hoë vlak, ons weet dat dit is wat dit lyk.
Ons het dit beskryf as soort 'n multi-vlak hash tafel
where-- wat gaan hierdie winkel?
Dit slaan name van wetenskaplikes wat ons kan eintlik
kyk deur net soort van die volgende verskillende hash tabelle af, alles reg?
>> En die doel van hierdie is, in teorie, hulle verskaf konstante tyd afwag.
So as ek wil om te kyk dat byvoorbeeld, wie se someone--
dat Mandel is in hierdie Trie, ek kon baie vinnig
in linear-- Ek is jammer, in konstante tyd uit te vind
of dit nou in die Trie.
Maar 'n nadeel, is kyk na hoe groot dit is.
Ons is nie eens die stoor wat veel data, en dit is groot.
So 'n groot nadeel is dat dit gebruik van 'n groot hoeveelheid van die geheue.
Ja.
>> GEHOOR: Hoekom is dit bied konstante tyd presies?
>> Spreker 1: Een meer tyd?
>> GEHOOR: Wat is die intuïsie want waarom dit bied konstante tyd?
>> Spreker 1: Uitstekende vraag.
Hoekom is dit bied konstante tyd?
So wat ons kan doen is, laat sê ons is op soek na Mandel.
Ons weet dat ons wil begin in die eerste vlak M.
Ons weet wat ons wil om dit te volg om E. So dit is 'n stap te neem, twee stappe, reg?
Ons volg dit N. Ons volg dit D. Ons volg dit E. Ons volg dit L.
En dan is die volgende ding wat ons gaan says-- hierdie delta sê Ja, dis
in ons tafel.
Dit is 'n woord.
Dit is 'n geldige inskrywing in ons Trie.
So jy sê, OK, wat het sewe stappe.
Maar as ons bygevoeg soos 'n zillion meer wetenskaplikes om hierdie data struktuur,
Ons wil nie hê om te kyk 'n zillion meer dinge.
Ons het net ooit gaan hê om te neem sewe stappe, die lengte van die persoon se
naam.
>> So, ons wil om te dink van runtime as, veronderstel
ons die grootte van ons data struktuur, hoeveel langer
gaan dit neem?
In hierdie geval, as ons voeg 'n klomp meer wetenskaplikes, beteken dit nie saak nie.
Dit is nog steeds gaan neem dieselfde hoeveelheid van die tyd.
Dit is konstante tyd.
Ja.
>> GEHOOR: Hoe weet jy nie te scan oor die ander getalle?
Spreker 1: Hoe weet ek hoe aan-
GEHOOR: Soos Hoe weet jy jy gaan reguit uit M E en nie aan M om 'n?
Spreker 1: O, seker.
Want ek het geweet ek was soek die woord Mandel,
en ek weet net dit is M-E. So that-- ja, gaan voort.
GEHOOR: Sou dit nie jy om te kyk na die ander letters
in die res van die [onhoorbaar]?
>> Spreker 1: Ag, sou nie ek om te kyk na the-- OK, groot.
Dit is 'n groot vraag.
Dit hang af hoe ons dit implementeer.
As ons dit implementeer as net soos 'n reeks van skikkings
waar ons weet dat E altyd by posisie 0,
Ek weet nie, wat ook al aantal indeks is op.
Ja, ons kan net nie konstant tyd doen, doen, doen, doen.
Koel.
Vraag daar?
>> GEHOOR: Is konstante tyd dieselfde as die werklike tyd?
Spreker 1: Is konstante tyd dieselfde ding is die regte tyd?
Ek is nie seker reële tyd is.
GEHOOR: Soos keer dat letterlik vorder tweede
deur die tweede in teenstelling met wat 'n onafhanklike veranderlike.
>> Spreker 1: O, ja, jy kan dink dit so.
Met ander woorde, dit is nie afhanklik van die grootte van die data-struktuur.
Dit is 'n manier om te dink nie.
Enige ander vrae?
Miskien in die eerste keer in geskiedenis, ons klaar op tyd.
As jy enige vrae het, voel vry om te kom vra ons, gaan na afdeling
praat met jou TFS, kantoor ure 08:00 en 08:30
om 11:00 op Maandag en Dinsdag, so dit is 'n bietjie anders tyd
so maak seker jy daardie noot.
Ja.
>> GEHOOR: Het ons nodig om te weet dinge soos command line argumente,
Dash ls, stamp alles?
>> Spreker 1: Command line argumente, en Linux instruksies,
Ja, jy moet die weet.
Very-- dit is soos die soort van vlak dinge wat ons gedek in artikel 0,
so ver as Linux instruksies go.
>> GEHOOR: Is die ure in Annenberg?
Spreker 1: Kantoor ure, ek is nie heeltemal seker waar hulle is.
Maar jy kan check die webwerf, en dit sal jou vertel.