>> [MUSIK SPELA]
>> TALARE 1: Okej, alla.
Välkommen till din sista avsnittet med mig.
Det har varit ganska terminen.
Jag kan inte tro det är, liksom, vecka 12 eller 11, nåt sånt.
Men eftersom det är vår sista avsnitt, har vi massor av godis.
Och jag ska försöka prep du lika väl som jag
kan för din frågesport på onsdagen.
Så förmodligen inte det bästa sättet att, liknande, ändsektion med frågesport översyn.
Men vi ska försöka göra det roligt.
Och det finns alltid godis.
Så förhoppningsvis kommer att göra det bättre.
>> Din quiz kommer att vara ganska ungefär samma sak som Quiz Zero.
Det kommer att vara den samma format, samma längd.
Du kommer att vara i rum utspridda över campus, eftersom det
är nära 900 av er, och vi kan inte alla håller dig i rum som denna.
Så se till att titta på alla frågesporten En dokumentation
online på cs50.harvard.edu ikväll eller imorgon kväll.
Se till att du vet var du är gå, vad du behöver ta med.
Verkligen, du behöver bara ta med dig själv och en penna, och du ska vara bra.
Frågorna kommer att vara mycket samma.
Det kommer troligen att bli ett par flervalsfrågor, ett par korta svar,
vissa kodning, kanske några sant / falskt, matchande möjliga saker.
Så du bör inte vara alltför överraskad av formatet.
>> Vad kan vara förvånande är längd, som i tidigare år,
har varit mycket längre.
I mitt år, jag har inte en enda vän att jag minns avslutad examen.
Det var som multipel sidor lämnas tomt.
Så längden kan vara typ av förvirrande
bara för att i några år, har det varit mycket längre än Quiz One.
Jag har ingen aning om vad det är kommer att bli som i år,
men det är något att vara medveten om.
>> Dessutom kan difficulty-- människor tenderar
att hitta Quiz One mycket mer svårare än Quiz Zero.
Återigen, du vet, om du typ av promenader
ut känsla lite orolig eftersom du gjorde inte så bra som du trodde
skulle du eller du känner att du inte gjorde det gör så bra som du gjorde på Quiz One,
kom ihåg att det finns förmodligen en massa andra människor känner på det sättet.
Jag var definitivt en av dem.
Quiz en, liksom, kastade mig för en slinga.
Och mina vänner har denna stora bild av dem på JP Licks
typ av med dessa enorma glassar, att vara som, Quiz One,
och ser ut som de är i tårar.
>> Så det är en allmän känsla.
Det är ett tufft test, det är en tuff quiz.
Självklart, om du kommer ut och du tycker du rockade det, bra för dig.
Men vet att du förmodligen inte-- du är nästan absolut inte
ensam om du gå ut känsla som, eh, förmodligen kunde ha blivit bättre.
Det är tufft.
Mm-hm.
>> PUBLIK: Hur mycket är det värt i förhållande till [OHÖRBAR]?
>> TALARE 1: Det är värt detsamma.
Yeah.
Men återigen, det kommer också att bli påverkas av hur resten av klassen
gör, hur din avdelning gör, hur du har förbättrats över tid.
Sortering är lite av en svart låda.
Så vad det faktiska antalet eller procentsats som du får
är inte nödvändigtvis gillar direkt korrelerade med betyget
du kommer att få.
Det finns en hel del faktorer som går in i den.
>> Så med det, ska vi gå igenom några frågesport översyn.
Jag kommer bara att köra precis som förra gången för er.
Jag har alla svar att Quiz En av förra året.
Så om ni vill dra att upp på dina egna datorer,
Om du har tagit denna examen innan och du har frågor,
Jag tänkte att vi kunde bara gå igenom några
av de svårare på det.
Så vi kan prata om det, kanske få lite mer insikt
i intuition bakom några av dessa frågor, hur man närma sig dem.
>> Vad bra, precis som förra gången, Jag har en 100-slide däck
som har i princip allt av de bilder som jag
har förberett för föregående sektioner sedan ditt senaste quiz-- jag
har i detta däck.
Så vi kan gå igenom i stort sett allt
att vi har pratat om förväg att kanske du
vill ha lite mer klargörande om.
Vi kunde göra det första.
>> Men annars är jag super lycklig bara för typ av arbete
genom dessa problem med dig.
Och jag är verkligen här för att fokusera på vad ni tycker
skulle vara viktigast att fokusera på.
Liksom, uppenbarligen, alla av det här är viktigt.
Särskilt som vi går igenom Quiz One, Jag ska definitivt påpeka saker som,
åh, kan det här vara något du verkligen vill veta
eller om du vill ha på din fusklapp.
Jag ska berätta saker som vi slags gå igenom.
>> Så på att observera, finns det några saker att ni skulle vilja gå över?
Även om jag inte har det i mina däck, Vi kan dra upp något på webben,
eller så kan vi försöka göra upp ett exempel på fluga.
Men några begrepp som du killar är lite suddig på.
[? Brian?] Gjorde du have--
>> PUBLIK: Åh, är det kumulativa?
Liksom, är saker på Quiz Zero kommer att vara på här?
>> TALARE 1: Det är kumulativa, men det är mycket mer
av en betoning på saker sedan ditt senaste frågesport.
Så uppenbarligen, ni har lärt sig om variabler, och loopar,
och villkorssatser.
Och det är inte som de som just försvinna, eftersom de är
uppenbarligen inneboende till allt annat som vi har lärt oss nu.
>> Det kan finnas en fråga på slag, eller där
kan vara en fråga på olika sökningar.
Eller det kan finnas ett par frågor om kanske något du
har att göra med att sammanställa eller olika fel.
Men om du har tittat på Quiz En från förra året,
du kommer att märka att det är väldigt fokuserad på saker
som har hänt sedan ditt senaste frågesport.
>> Varför är dörren alltid låst?
Det stör mig verkligen.
Eftersom jag försöker alltid att gå igenom den.
>> Så det är ganska mycket hur testet kommer att bli.
Så finns det några begrepp som ni skulle vilja gå över?
Eller vi kan hoppa rätt in bara titta på Quiz One
från förra året och slag gå genom övningsfrågor där.
Vi kan också växla fram och tillbaka.
Detta är inte en engångs sånt.
Några frågor?
Ja.
>> PUBLIK: Kan jag be en Frågan om another--
>> TALARE 1: Ett annat?
>> PUBLIK: Detta är från ett annat år.
>> TALARE 1: Ja.
Vi kan också göra ytterligare ett år.
>> PUBLIK: OK.
Så på 2011.
>> TALARE 1: 2011.
Ooh, det var året innan mig.
Låt mig dra upp det här.
>> PUBLIK: Jag tror.
>> SPEAKER 1: Denna aspekt förhållandet kastar mig.
>> Publik: 11 och 12.
>> TALARE 1: 11 och 12.
OK.
Tja, här, varför inte vi göra det här?
Du guys-- alla bara ta ett par minuter för att titta igenom frågesporter.
Och vi kommer att sammanställa en lista.
Och då ska vi gå igenom dem.
Okej?
Medan jag får ett gäng av det här inrättas.
OK.
Jag kommer bara att skriva ner saker på papper.
>> 2011, 11 och 12?
Jag kommer bara att ändra denna display.
OK.
Det är bättre.
Denna över.
Okej.
>> Någon annan har någon som de skulle vilja börja med?
Dessutom glömde att säga, om du vill ha mer av ett gäng människor som pratar på dig
och bara ge dig en spricka kurs under de senaste sex veckorna,
Vi kör en recension session från 07:00
till 08:30 ikväll i Northwest B103, vilket också hände
förra gången, då det kommer att vara jag, Hannah, Daven, med Gabe
och Rob slags hjälpa från sidlinjerna av bara typ av kasta alla
den information som du kanske vill ha på din fusklapp,
slash, vet i allmänhet finns.
PUBLIK: Det är också på nätet, eller hur?
TALARE 1: Det är också på nätet.
Så kan du också hålla sig borta från detta icky väder, gå till din studentrummet,
och levande streama den om du vill.
Jag är säker på att en hel del people-- jag vet att jag skulle
vara att göra det om jag var i dina skor.
OK.
Så varför inte vi börjar with-- medan du guys-- förhoppningsvis,
du letar igenom.
Om inte, kanske jag bara börja arbeta genom olika saker på Quiz One
från förra året om du inte har specifika frågor.
>> Vi ska börja med detta fråga här om stackar.
Det gör alla minns typ av vad en stapel är?
Hur brukar vi att-- kan någon bara ge mig en allmän beskrivning av en bunt?
En typ av datastruktur.
OK.
Så det är en av de datastrukturer som vi
förväntar dig att känna with-- gillar stackar, arrayer, köer, osv.
Ja.
>> PUBLIK: Som First I, Last Out, något.
>> TALARE 1: Det är först in, Last Out.
Exakt.
Så en stapel är exakt vad vi tenderar att tänka
om när vi tänker av en stapel av saker.
Så en trave plattor.
Den första plattan du lägger ner kommer att vara i botten,
och det kommer att bli den sista en som du tar bort i slutet.
Eftersom de stack upp.
>> Och du tar en av botten, typiskt, saker krascha och bryta.
Så staplar du kan tänka precis som en trave tallrikar.
Eller exemplet vi alltid vilja använda är i D-hallar, du har facken,
de är alla staplade upp, och man tar från toppen.
Så den sista i är först ut.
OK.
>> Så i fallet här, vi ser vi have-- Jag undrar
om jag verkligen kan zooma in en liten bit.
Så vi har detta konstruera här.
Rätt?
Så du har lite struct som har vissa int antal kapacitet.
Så vad tror vi som representerar?
Detta är en matris med storlek kapacitet.
>> Så detta verkligen representerar vår stack i allmänhet.
Vår stack är egentligen bara en array med några inställda antalet
det är dess max, dvs dess kapacitet.
Och då har vi några int storlek, vilket kommer att spåra storleken på vår stack
under kursens gång om när vi använder den.
OK?
>> I detta fall just här, säger vi att vår stack storlek har initierats till 0.
Så vi har en tom stack just nu.
Och sedan vill vi att slutföra genomförandet av pop
så att det återgår den int upptill.
Och sedan om det är tomt, den returnerar -1.
OK?
Så jag vill att ni bara tänka om vad vi skulle göra där.
Vad kan vara en av de första saker vi skulle vilja kolla?
Det finns en stor sak här.
Närhelst det says-- om det finns någonsin några Om uttalandet, som "Om stacken är tom,"
eller "Om detta returnerar null" eller "Om detta är vad" - sorry.
>> PUBLIK: Skriv en If-sats.
>> TALARE 1: Höger.
Du kan skriva en If-sats.
Och det är förmodligen en av de första saker du vill kontrollera.
OK.
När de ger dig ungefär som ett hörn fall
så här, det är normalt en av de första sakerna
du kommer att checka in din kod.
>> Också, något till erkänner för frågesporten
är om du har ett ineffektivt sätt att göra något, skriva ner det.
Eftersom vi inte gradera du på design, är vi
gradera dig på korrekthet för frågesporter.
Så även om du vet att det är en super dåligt sätt att göra något, men det fungerar,
skriva ner det, OK?
>> Bokstavligen har jag sett barn förra year-- om man tittar på förra årets ena,
de är som, gör Mario pyramiden.
Och de bokstavligen bara gjorde "print, hash, skriva ut, hash, hash, skriva ut, hash,
hasch, hasch. "
Men det är rätt.
Det spelar vad vi sa det till, så du kan inte ta poäng av.
Om du är ner till tråd, uppenbarligen, du
vill få en mer elegant lösning, och desto mer elegant lösning kommer förmodligen
vara mindre kod, vilket innebär att du förmodligen har en större chans att vara rätt.
Men om du är som, du vet vad, nej, jag har inte tid, jag
vet att detta är en lösning, det är inte den bästa, skriva det.
Och du kan även skriva på sida, jag vet att det är fruktansvärt,
men jag vet att det fungerar.
Så bara en heads-up.
OK.
>> Så uppenbarligen, första är detta Om uttalande.
Så vad tror vi här Om uttalande kommer att bli?
Och faktiskt, låt mig öppna upp min stora Sublime redaktör.
Jag kommer att koda detta och sedan visa er när det är gjort.
Så int pop.
OK.
Så om vi har här int pop void-- så uppenbart,
detta är någon funktion som tar in ingenting och returnerar ett heltal, eller hur?
Så det är bara att tala om denna stack som vi har skapat.
>> Så bara översätta denna sista meningen "om stacken är tom,
pop bör återgå negativ 1, "hur kan vi göra det?
Så Om vad?
Hur vet vi att stacken är tom?
Det är bara storleken lika med 0.
Stack.size lika 0.
Också, jag slags skriva blinda här.
Så om jag gör något typos-- oh, glömde också att nämna detta.
>> Förra veckan, jag helt räknat ut vad vårt problem var med JavaScript.
Aktiverar inte jag och D. Du bör endast
kapitalisera I och få del av Id.
Och det var hela felet.
Så om ni går tillbaka och faktiskt titta igenom min kod,
om du bara göra allt en gement d, "glömmer element genom Id"
det kommer att fungera.
Så som jag lovade, jag var väldigt nära.
Jag aktiverade bara något Jag var inte tänkt att, som
Jag är säker på att ni hade i ditt förra PSET.
>> Så om vår storlek är lika med 0, vad ska vi göra?
>> PUBLIK: Återgå negativ 1.
>> TALARE 1: Avkastning negativ 1.
Cool.
Så nu vad gör vi?
Vi vill pop något av.
Nu så är fallet där vi har något.
Vår storlek är större än 1 eller större än 0, eller hur?
Vi har faktiskt något där.
Så vad vi vill göra är att vi vill återvända här.
Vi kommer att säga att vi vill ha att återvända överst i stacken.
OK?
>> Så hur kan vi göra det?
Hur får vi tillbaka överst på stacken?
Kom ihåg att vår stack är bara en matris, eller hur?
Den har viss kapacitet att vi har gett det.
Som vi har lagt saker on-- eller faktiskt, vi kommer att skriva "push" efter detta.
Om saker och ting är i there-- kanske en bild kommer att hjälpa.
Hm, jag gillar stora krita bättre.
>> Så if-- och du kan bara tänker på detta som vår stack.
Så det här är 0, 1, 2.
Jag vet inte varför mina lådor blir mindre.
Men där.
OK.
>> Så detta är något stack med en kapacitet på 5.
Och låt oss säga att vi har något här och vi har något här.
Så på denna punkt, vår storlek är lika med vad?
2.
Och om vi vill pop något av det,
det innebär att vi vill få bli av denna rätt här.
OK?
Så hur skulle vi tillbaka detta värde?
>> PUBLIK: Storlek minus 1.
>> TALARE 1: Höger.
Så storlek minus 1, eller om du kunde göra storlek minus minus.
Men vi kan inte bara göra storlek.
Det är inne i en struct, eller hur?
Så stack.struct.
eller stack.size.
Det är vårt index där.
OK?
>> Och sedan om vi ser tillbaka på vårt struct här,
Vi märker att till faktiskt få tillgång arrayen,
vi behöver göra stack.numbers att faktiskt komma åt denna array.
Så som returnerar toppen av stacken.
>> Men något that-- om ni ser på svarsknappen, detta är allt de
ge dig.
Så det här är det.
Men jag skulle hävda att de är miss-- ooh, inte vad jag ville.
Jag skulle hävda att de är saknar något, because-- ja.
PUBLIK: Minska storleken.
TALARE 1: Höger.
Vi måste minska vår storlek.
Så vad är knepigt om detta är när du kommer tillbaka
något, ditt funktionens gå exit, eller hur?
Så vad vi kan göra är att faktiskt minska vår storlek först.
Och då kan vi bara göra stack.size.
>> Vi kan bara använda stack.size som vårt index, kunde inte vi?
För om stack.size är 2, vi sänka det.
Och så det är 1, vilket är vår verkliga indice.
När vi bli av med detta, vi faktiskt har bara en sak i vårt utbud.
Så det gör både och.
PUBLIK: [OHÖRBAR]?
>> TALARE 1: Tja, i detta fall, Vi har just återvänt elementet
upptill som finns på vårt storlek som är i toppen.
Men vi har inte gjort något för att den storlek efter att vi tagit bort det elementet.
Detta har inte förändrat vår storlek ännu.
Detta gör faktiskt inneboende ändra vår storlek.
>> Men för att göra det lite tydligare, du kunde göra stack.size minus minus.
För mig, det gör det, jag vet inte, lite mer tydlig that-- ah,
att du faktiskt är föränderliga storlek och returnera den.
Det andra sättet var bra, eftersom du ändra och återvänder
samtidigt.
Men detta är bara ett annat sätt att skriva Det som jag ville visa er.
Betyder det vettigt?
Stacks, tror jag, är mycket enklare än köer.
[Skrattar]
OK.
Hade du några specifika frågor cirka 11 och 12, eller bara--
>> PUBLIK: Jag tror det var bunten.
>> SPEAKER 1: Den stack storlek?
>> PUBLIK: Ja.
>> TALARE 1: Gotcha.
OK.
Ja, du kan göra det på ett av dessa två sätt.
OK.
>> Så nu har vi den andra.
Detta är verkligen konstigt, som att inte ha detta på min skärm.
Så om vi tittar här, nu vill vi slutföra genomförandet av push,
som faktiskt sätter något, går och infogar något i vår kö,
eller in i vår stack.
OK?
>> Så om vi märker, vi har ett par saker.
Vi har våra great-- om allt annat, när vi har en av dessa,
ni borde åtminstone få hälften en punkt, eftersom allt du behöver göra
är omvandla detta till C. Och de ger dig hälften av det.
Så "om en stack är full eller det är negativt,
tryck sedan ska returnera falskt. "
OK?
>> Så vi bara vill ha en positiv heltal att vara på vår stack.
Okej?
Och detta kommer att antingen returnera sant eller falskt.
Så skulle vi [OHÖRBAR] bool.
OK.
Så översätta.
>> PUBLIK: [OHÖRBAR].
>> TALARE 1: Åh, tack.
Yeah.
Det är därför jag har er.
Int n.
Perfect.
Eftersom vi sätter något på vår stack.
Vi behöver faktiskt några nummer.
OK.
>> Så bara ta det sista raden som de gav oss, vår typ av hörnfall
vad tror du vi har här?
Självklart kommer vi att ha lite om.
OK.
Så vi sa, Om vår stack är full eller om n är negativ.
Så förmodligen enklast att starta med, så om n är mindre än 0
eller-- ihåg din fina AND och OR operatörer där.
>> Hur skulle vi kontrollera se om vår stack är full?
Vad händer?
>> PUBLIK: Storlek lika KAPACITET.
>> TALARE 1: Exakt.
Perfect.
OK.
Och vad vill vi göra där?
>> PUBLIK: Återgå falskt.
>> TALARE 1: Återgå falskt.
Perfect.
Så halvvägs där, eller hur?
Åtminstone, ni kommer att ha hälften av detta.
Så låt oss tänka på detta.
>> Så detta är stacken vi börjar med.
Vi försöker sätta vissa element på här.
>> Vi har en storlek som är lika med 2 just nu.
Vi har en kapacitet som är lika med fem.
Och låt oss säga att vi har några n som är lika med 3.
Så vi måste ange 3 i detta utrymme.
Och vi måste ange det i index 2.
Rätt?
>> Så hur kan vi göra detta?
Försöker assign-- vi vill komma åt vårt utbud.
Så stack.numbers.
Men till vilket indice skulle Vi vill att detta ska vara?
>> PUBLIK: [OHÖRBAR].
>> TALARE 1: Ja.
Stack.size.
Och vi vill att till lika n, eller hur?
>> PUBLIK: [OHÖRBAR].
TALARE 1: Jag var faktiskt bara titta på det.
Jag tror att det är fel.
>> PUBLIK: Vill du inte att utrymme förbi den nuvarande storleken?
>> TALARE 1: Tja, om vi ser här, vår storlek på denna punkt är 2.
Vi vill att det ska gå in i index 2, eftersom detta är toppen av vår stack.
Så jag skulle säga att det bör vara stack.size,
och sedan skulle man öka stack.size.
Håller alla med?
Jag tror jag håller med om det.
Ni kan argumentera med mig om du vill.
Eller inte argumentera, men vi kan diskutera detta.
>> PUBLIK: [OHÖRBAR].
>> TALARE 1: Mm-hm, är där det är öppna på grund av noll indexering.
Så medan i den första delen, Jag trodde att de hade fel,
och de var faktiskt rätt, det här del, jag tror faktiskt att de hade fel.
Jag skulle säga att du bör definitivt ingång till den här.
Jag tror att vi alla är överens vi har en storlek på 2.
Det är precis där vi vill att vår nya nummer att gå.
Så stack.numbers vid stack.size bör motsvara n.
Och då skulle vi stega upp stack.size.
++.
Och vad vill vi göra?
Det finns en sista sak vi måste göra om vi framgångsrikt insatt detta?
Return true.
Och nu är du klar.
Så jag tycker det var hela minus minus stack.size och stack.size ++ som
trasslat upp saker.
Ugh.
Jag keep-- jag har denna reflexmässig tendens att alltid hit
Kontroll, S, eftersom jag aldrig vill förlora någon av mitt arbete.
Men jag behöver inte göra det nu.
OK.
Så det var stack.
Cool.
>> Finns det något?
Visste ni att hitta någon andra frågor som du skulle
vilja gå över från tidigare frågesporter?
Om inte, kan vi slags börja prata genom Quiz En från förra året.
Ja.
>> PUBLIK: För det första del, det gjorde jag inte riktigt
förstår hur du bort numret.
Är det inte kvar?
>> SPEAKER 1: Numret är fortfarande där.
Men vad som händer är att eftersom du har sa det att toppen av din stack
är här, när du går att lägga till något på stacken, det ska bara byta ut den.
>> PUBLIK: Åh, OK.
TALARE 1: Ja.
Så det är som han glömde och det är där typ av sak, även om den finns där.
PUBLIK: [OHÖRBAR] eller något?
SPEAKER 1: Nej
Eftersom vi är i ett array, behöver du inte
oroa about-- du ska bara åsidosätta det när du behöver det.
Okej.
Fler frågor?
Om inte, vi bara kommer att börja arbeta igenom.
Yeah.
>> PUBLIK: Tja, det är en på 2013, men bara gå igenom SQL grejer.
SPEAKER 1: SQL?
OK.
Så det här är 26 till 29.
PUBLIK: Ja.
TALARE 1: OK.
Härligt.
Låt oss dra dem upp.
Åh, titta.
Visste ni njuta av Steve Ballmer pratar, förresten?
Det var ganska lustiga, enligt min mening.
Jag älskar att varje gång jag tar upp CS50: s webbplats under avsnittet, det är som, åh,
titta avsnitt.
Och jag är som, mm.
>> PUBLIK: Kan vi göra det?
>> TALARE 1: Vi ska göra det i slutet.
Hur är det?
Eftersom jag vet att ni har alltid velat.
Så vi kommer att göra det i slutet.
One frågor.
>> PUBLIK: [OHÖRBAR].
TALARE 1: Det ska vara en meta avsnitt.
PUBLIK: Det är som 5 sekunder.
PUBLIK: Verkligen?
PUBLIK: Det är som 20 sekunder.
[Inplacering UTTRYCKER]
[LAUGHTER]
TALARE 1: Jag gillar att du redan har gjort
det, vilket är det som gör mig gladare.
OK.
26.
OK.
Egentligen är vi bara gå till spegla detta nu, eftersom jag inte kan.
Detta är irriterande.
OK.
Nu kan jag se allt.
Härligt.
OK.
>> Så självklart, bör detta få tillbaka fina minnen från [? CSG?] Finance.
Hälften av dig om har din graderad nu.
Den andra hälften jag kommer att få mycket, mycket snart, jag lovar.
>> Så vi har några SQL-tabell det är konton här.
Förmodligen liknar dina killar "användartabeller.
Och vi har några nummer det var en primärnyckel
och representerar en 12-siffriga kontonummer.
Och balansen är hur mycket pengar de har.
Och standardvärdet är 100.
Och de ger dem $ 100 varje gång de öppnar ett konto.
Jag önskar att min bank gjorde det.
OK.
>> Så vi vill slutföra schemat genom specificera bredvid nummer i balans
lämplig SQL-typ.
Så vad tycker ni skulle vara ungefär som din reflexartad reaktion
för typer för dessa två?
>> PUBLIK: Int.
>> TALARE 1: En int.
OK.
Och sedan efter en balans?
Decimal.
OK.
Så decimal rätt.
Int är nära.
Typ av den stora grejen är här strök 12-siffriga kontonummer.
När vi har något det är större än åtta siffror,
De vill att du ska använda stora int, vilket jag tror är--
>> PUBLIK: Är det bara SQL?
>> TALARE 1: Det är den enda gången jag har hört av det är SQL-- som att använda en stor int.
Det är bara att ge dig en lite mer precision,
att se till att du inte fyllda typ sak.
I ärlighetens namn, jag tror att detta är definitivt en av dem
där det är som, åh, det har betytt för människor
som har lite mer kunskap om SQL.
Vi pratade aldrig om stora ints i din PSET.
Så det är ungefär som jag är ganska säker om du sätter int var det halva kredit.
>> Och som jag sa tidigare, det finns att gå att vara en del frågor som är precis
tänkt att resa dig upp, så som inte alla får 100.
Eftersom naturligtvis finns finns vissa personer i CS50
som har gjort detta för som åtta år, och du är som,
vad gör du?
Men ja.
>> Decimal efter balans var den uppenbara.
Och sedan stort int för nummer bara för att av att, liksom, underströk 12-siffriga.
När något är i fetstil eller det är strök, liksom, uppmärksamma det.
Vi gör inte att bara för att.
OK.
>> Så "anta att banken åläggs en $ 20 månadsavgift på alla konton.
Med vilken fråga skulle banken dra $ 20 från varje konto
även om den är resultatet av vissa negativa saldon? "
Så låt oss börja enkelt.
Vi har fyra huvudkommandon för SQL, som är?
Vill ni ihåg de fyra stora de som jag berättat för er?
>> UPDATE, DELETE, SELECT och INSERT.
Perfect.
Fick det.
Så vad tror vi kanske vara mest användbar för den här?
Vi är-- UPDATE.
Exakt.
Så uppdateringen eftersom vi söker på konton som redan finns.
>> Så kom ihåg vår allmänna Sådant är uppdatering.
Och sedan vad kommer efter UPDATE?
Vi har några bord att vi refererar.
Så om jag drar upp Sublime igen-- UPDATE.
Så detta är ett generellt format.
Så vi har UPDATE tabell.
Och vad är nästa sak vi har?
>> Du kan göra VAR.
Och då har vi några kval här.
Och vad har vi nästa?
Vi har några SET-- något lika med något.
Bla lika bla.
Uppdaterad bla.
Rätt?
Så det är som det allmänna idé för lite uppdatering.
OK?
>> Så låt oss börja fylla denna in med vad det borde vara.
Så vad tabellen talar vi om?
Konton.
Och sedan i det här fallet, vad är riktigt cool
är talar vi om specifika användare inom vårt konto,
eller talar vi om alla användare?
Vi pratar om alla användare.
Så i det fallet, vi kan bara bort denna WHERE kval.
WHERE är bara när du vill att begränsa vad du förändras.
Om du vill ändra hela bord, kan du bara släppa det.
OK.
>> Så nu är vi på vår SET del.
Vad vill vi förändra?
>> PUBLIK: Balans.
>> SPEAKER 1: Balans.
Och vi kommer att-- hur är Vi kommer att ändra balansen?
Vi har en $ 20 avgift, eller hur?
Minus 20.
Och de sa att det är OK om vi har negativa saldon.
Så i det här fallet, behöver du inte att göra någon ytterligare felkontroll.
OK?
Det är bokstavligen allt du behöver göra.
Cool?
OK.
>> Så låt oss gå igenom nästa.
"Med vad SQL-fråga kunde den bank hämta kontonummer
av sina rikaste kunder balanserar större än $ 1000? "
Om din bank och ditt rikaste kunderna är bara de med över $ 1000,
Jag tycker du är gör något fel.
Liksom, hur en bank överleva på det?
Liksom, detta intresse, inte riktigt tillräckligt.
OK.
Med den här sortens saker, vad gör du tror, ​​av våra fyra funktioner,
tror du att vi kommer att använda?
VÄLJ.
Perfect.
VÄLJ.
OK.
Så vi väljer vissa identifieraren från tabellen.
Och sedan VAR skick.
Så när vi går igenom dessa, jag ska bara
att ge er en allmän uppdaterare om det allmänna formatet för alla dessa.
>> Så vi väljer någon form av [? sak. ?] I detta fall,
Detta kommer att bli typiskt någon kolonn.
Så i vårt fall har vi nummer, balans.
I dina killar "fall kanske det var ID, namn, lösenord.
Någon av dessa kolumner, det är vanligtvis vad vi väljer.
>> Så i det här fallet här, vilket typ av kolonn, vilken identifierare
vi drar från vårt bord?
Vad betyder det be oss om?
Det ber oss för våra siffror, eller hur?
De kontonummer.
Så kom ihåg, bara nummer i det här fallet.
Om ni någonsin haft felet, att ljust orange box skulle komma upp.
Och det var som, oväntat rad i, liksom, vad som helst.
Det beror på att du ringde ditt bord fel, eller hur?
Så se till att du är ringer kolonnen fullständigt.
>> Så från bordet, vårt bord är kallade konton.
Återigen, se till att du är ert bord på rätt sätt.
Och vad är vårt tillstånd här?
Vad letar vi efter?
Vi vill att våra rika människor.
Ja.
Så balansera större än 1000.
Där du går.
Det är din fråga.
Inte alltför illa, eller hur?
OK.
>> Så nu för vår sista.
Med detta, vi breezing igenom.
OK.
Så nu "med vilken fråga kunde banken nära, dvs ta bort "-
inte du älskar hur de precis gav dig DELETE--
"Varje konto som har ett saldo på 0?"
Jag tror att vi alla kan enas om att vi är troligen kommer att använda DELETE.
Jag är välkomna att ta någon diskussion kring detta.
Men jag tycker det är ganska säkert att säga att vi skulle kunna använda DELETE.
>> Så vi kommer att radera några användare från bordet, VAR skick.
Så samma sak som SELECT.
Så i detta case-- oh, sorry.
Jag borde DELETE FROM.
Eftersom DELETE vilja ta bort hela raden.
Så vi behöver inte prata om vilka specifika saker om en användare är vi
radering.
Om vi ​​tar bort en användare, vi är radera allt om dem.
>> Så i det här fallet, vi behöver bara för att fylla i vårt WHERE och vårt tillstånd.
Så vårt bord är bara våra konton bord, som vi har gjort.
Och vad är vårt tillstånd här?
>> PUBLIK: Balans.
>> TALARE 1: saldo är 0.
Korrekt.
Alla bra.
Ja.
>> PUBLIK: [OHÖRBAR].
>> SPEAKER 1: Så DELETE sig bort allt.
Så medan med SELECT, tar VÄLJ in vissa kolumner som du vill återvänt.
Om du ville allt om en användare tillbaka, du använder stjärna.
Star säger, tillbaka till mig allt från den här användaren.
Eller om du sätter WHERE stjärna, att betyder bara ge mig allt.
>> Men DELETE sig har det.
Så om du säger, radera från konton där saldot är 0,
det kommer att gå igenom.
Och överallt denna balans är lika med 0, i sig gör det det.
Det kommer att ta bort allt.
Stjärnan är mer for-- med SELECT eller UPDATE,
Det pratar mer om den enskilde fält motsvarar en användare.
>> Så när du gör VÄLJ stjärna från tabell var ID
är lika med 1, som återvänder till dig allt om användaren med ID 1.
Om du skulle göra VÄLJ nummer eller SELECT id kommatecken namn från användare
WHERE ID är lika med 1, att bara returnerar deras antal
eller deras ID och deras namn.
OK?
>> Så vi använder stjärnan i det fallet till ge oss allt om en användare.
Och DELETE sig gör det.
Det är inte bara radera ID, eller bara namnet, eller vad som helst.
Ja, nr.
Det tar bort precis hela användar.
Så vi behöver inte oroa dig om stjärnan där.
>> Om du ville ta bort allt, kan du göra det,
och detta ska bara släppa allt.
Men typiskt, du vill inte göra det.
Men om du någonsin vill ta bort allt, kan du göra det.
OK.
>> Har ni hittat några andra frågor?
Ja.
>> PUBLIK: Kan du göra 26?
>> TALARE 1: 26 gjorde vi bara.
PUBLIK: Åh, 25, sorry.
TALARE 1: 25.
OK.
25.
Oh.
De gör JavaScript.
Åh, jag kan inte tro det.
Jag ska röra oss upp igen, grabbar.
OK.
Vi fick detta.
Vi kommer att göra detta arbete.
Ah, jQuery.
Kul.
OK.
>> Så vi kommer att slutföra genomförande av webbsidan
på ett sådant sätt att om de besöker, input deras namn, och skicka formuläret,
de har denna stora alert fönster som kommer att visas.
Så något med varningar, vet vi att vi kommer att behöva använda JavaScript.
Yay, JavaScript.
Och om de misslyckas med att mata in ett namn innan du skickar formuläret,
ingen varning ska visas.
Så du kan använda jQuery, men du behöver inte.
>> Så jag kommer att låta er arbeta om detta bara för ett par minuter.
Tänk på det.
Och då kommer vi koda den.
Slash Jag ska försöka tänka på bästa sättet att förklara detta svar till dig.
Okej.
Vi får den inrätta.
OK.
>> Så vi ska bara att gå igenom detta,
eftersom jag vet jQuery är lite förvirrande.
JavaScript.
Det är lite ute.
Så vad vi ska göra är [OHÖRBAR] faktiskt löst
problemet med jQuery.
Så om du kommer ihåg, jQuery är bara ett bibliotek
det är bara byggd ovanpå JavaScript.
Det är tänkt att göra din livet lite lättare.
>> Jag skulle definitivt, om du har tid, se över
en liten bit av den dokumentation för jQuery.
Men det är mycket lik JavaScript.
Det har fått liknande paradigm, där du använda denna punktopera att kalla funktioner
på objekt som du har.
>> Så vad vi har här är för jQuery, Du bör alltid ha den här sortens
av omslaget, som är den $ (Document) .ready (funktion) funktionen
inom parentes här.
OK.
Så detta kan vara något du vill ha på din fusklapp.
Eftersom åtminstone, kan du har omslaget för din jQuery.
Och det kommer åtminstone få du del sätt där.
>> Så på samma sätt som vi pratade mycket om JavaScript
och vi skulle börja med att titta på vad vi försöker redigera
eller vad vi försöker förändra.
Och det skulle normalt vara första som vi skulle sätta in.
Så i det här fallet, om vi går tillbaka till det här här och vi ser på vårt formulär här,
vi har detta ingångar, höger, denna id ingångar.
Och vi vet att Based på vår fråga, vi
antingen kommer att kasta ett fel om detta är tomt,
eller ska vi sätta detta i en varning, eller hur?
Så nog säkert att säga att vi är kommer att ha att göra med ingångar här.
>> jQuery är mycket likartad i att om vi tänker tillbaka på CSS, något med ett ID
vi tittar på med en hash.
Något med klass vi såg på med en punkt, eller hur?
Så på samma sätt här, vad vi pratar om är ingångar.
Vi såg att ingångarna är ett ID i vårt formulär.
Så vi kommer att hänvisa till det som sådant.
Ingångar.
OK?
>> Så när du är osäker, även om du har ingenstans,
om du verkligen osäker på hur man närma sig denna, A, har denna wrapper.
Så börja där med omslaget för jQuery.
B, se till att du vet vad du förändras.
Och när du är osäker, sätta det i något,
och gör prick, oavsett vad du tror du bör göra med den.
>> PUBLIK: Vad är omslaget?
>> TALARE 1: Omslaget är denna första linje.
Så detta säger, vänta tills mitt dokument är klar.
Börja sedan jävlas med saker.
OK?
Så vi vet att vi jävlas med ingångar.
Så vi är som, OK, ingångar vårt formulär.
Det är vår ID.
Så det är vad vi är kommer att vara ute efter.
Och vi vill se vad som händer När denna blankett lämnas in, eller hur?
>> Så som vi kanske tror, vi har några .submit.
Så .submit bara säger, OK, det här formuläret att vi har refererade med hash ingångar,
när det är in, exekvera något annat.
Så vi kommer att ha någon funktion.
Lägg märke till att vi har anonyma funktioner här.
Vi har en anonym funktion här.
Ja.
>> PUBLIK: Kommer det alltid .submit, eller är det bara för att i HTML,
Vi gjorde typ knappen Submit?
>> TALARE 1: Det bör .submit, eftersom det är någon form som vi skickar in.
Eftersom denna .submit inte nödvändigtvis motsvara vad knappen är som
att ringa.
Men det faktum att det är en bildar att vi skickar in.
OK.
>> Så märker anonym funktion här som says--
PUBLIK: Jag vet inte riktigt förstår anonyma funktioner.
SPEAKER 1: Så anonym funktioner, de är
bara funktioner som inte har ett namn.
Så istället för att ha en viss huvudfunktion att calls-- vi skulle kunna säga, om dokumentet
klar, då vi skulle kalla ingångar.
Och sedan, när lämnats, call-- liknande, så-och-så in,
vi skulle kalla någon annan funktion.
En anonym funktion bara inte har ett namn,
och det kommer bara köra inom dessa möjliga saker.
>> Så i det här fallet, vad detta säger är, när vårt dokument är klart,
utför denna funktion.
Denna funktion består allt inom här.
Och sedan nästa lager i är, OK, När ingångarna lämnas in, utföra detta.
Det är bara ett sätt att beteckna vad som ska utföras när.
Det är bokstavligen bara en funktion som inte
har ett namn, så tenderar de att kapslas in i varandra,
eftersom du kan inte kalla dem vid namn.
OK?
Bokstavligen, en anonym funktion är bara en funktion utan namn.
Det var allt.
Bara ett sätt att kapsla olika saker
att vi vill exekveras på bestämda tider.
>> PUBLIK: [OHÖRBAR].
>> SPEAKER 1: Ventilations?
Var?
>> PUBLIK: I parentes efter funktion?
>> TALARE 1: Efter funktioner.
Vilken?
>> PUBLIK: Båda.
Om du lägger, liksom, händelse, eller om du sätter ett argument där,
skulle det vara fel?
>> TALARE 1: I det här fallet antar jag du kan sätta ett argument där.
Men eftersom vi inte behöver en argument, bör det inte vara.
Precis, det är det hela, liknande, ska du bara
har saker som är nödvändig sånt.
På samma sätt som om vi hade några funktion som har int main void-- ut,
med int main tomrum, du kunde göra int arg v, vad som helst.
Men om du inte behöver dem, du bör inte ha dem där.
Samma sak.
Emma, ​​har du en fråga?
OK.
Cool.
OK.
Så vad vi har hittills är när vår dokumentets redo, utföra detta.
Nu är vi tittar på när det är in.
Så nu har vi faktiskt sorterar av kött från vår grej.
Så vi måste få det värde som användar lämnats, oavsett om det är ett namn
eller tom.
Och då måste vi antingen retur denna varning eller kasta ett fel.
Hursomhelst.
>> Så hur ska vi deklarera en variabel i Javascript?
Var.
Så låt oss säga, var name equals-- eller faktiskt kommer vi
gör värde eftersom jag tycker det är namn.
OK.
Så vi har något värde här som vi vill dra från vår ingångar formulär.
Så på samma sätt som Vi slags gjorde ingångar,
kan någon berätta för mig vad vi kanske ringer inom här
om vi ville få namnet från formen?
Och om vi ser tillbaka på vårt formulär här, Vi märker att vi har ett ID på namnet.
PUBLIK: [OHÖRBAR].
>> HÖGTALARE 1: Du behöver inte att tänka på det som en array.
Du behöver inte bekymra dig om det.
Så vi bara ha lite namn.
Och då eftersom JavaScript och ting är konstig, kan vi inte bara göra "namn."
Vi har faktiskt ringa någon funktion som ger oss,
liknande, värdet av denna identifierare.
OK?
Så det är bara .val.
>> PUBLIK: [OHÖRBAR].
>> TALARE 1: OK.
Så med JavaScript, denna typ av sak här bara går igenom.
Och du kan tänka på detta as-- det som nästan en getElementById, där
getElementById skulle faktiskt returnera den fullständiga sak till dig.
Den $ ("# namn") är precis som, OK, jag har det, jag kan komma åt den,
men om du verkligen vill ha det att returnera värdet till dig--
>> PUBLIK: Är det som en pekare?
>> TALARE 1: Det är ungefär som en pekare.
Du kan tänka på det som slags gillar en pekare.
Liksom, säger, OK, jag vet hur man kommer dit,
men att faktiskt få värdet av det måste du specifikt begära den.
Och tyvärr, naturligtvis, gör vi inte göra för mycket med JavaScript och jQuery.
>> Så det kommer att komma ner till hur mycket du guys-- vad du råkar veta,
vad du råkar ha sett, och vad du kan sorts logiskt gissa på.
Eftersom vissa av dessa saker, du kunde förmodligen få halvvägs där.
Men för att få det helt rätt, Jag tror att detta problem troligen
hade en av de lägsta poängen.
Publik: Som, till exempel, för [OHÖRBAR] ingångar,
varför inte du måste sätta val där?
TALARE 1: För den här?
PUBLIK: Ja.
TALARE 1: Ja.
Eftersom detta är typ av vilja, som vi sa,
vissa pekare, och här är jag refererar det och faktiskt få oss värdet.
>> PUBLIK: Medan [OHÖRBAR]?
>> TALARE 1: För ingångar, ingångar är bara some--
det är som vi är bara titta på det som en helhet,
och detta .submit berättar oss vad vi behöver veta.
jQuery och JavaScript är konstigt.
Jag vet.
Jag vet, killar.
Jag vet.
Det finns en anledning jag inte gör webbprogrammering.
Skojar bara.
Jag har inte haft tillräckligt med exponering mot den.
>> PUBLIK: [OHÖRBAR] CSS.
>> [LAUGHTER]
>> TALARE 1: OK, det är CSS.
CSS är precis, precis, gör saker ganska, det är inte som låt oss ta itu med uppgifter.
Det finns en skillnad där.
OK.
Så nu förhoppningsvis part-- detta också, för ett problem som detta, där man kanske inte
vet syntaxen, du skulle kunna se ut, OK, kan du ha några var värde
och vara som, antar jag fick värdet korrekt.
Och då du kunde förmodligen skriver detta nästa del.
Denna nästa del kommer förmodligen verkar mycket lättare,
eller det skulle göra logiskt meningsfullt för er killar.
>> Medan det vi har skrivit hittills, Jag vet att jag skulle vara, umm, ja,
Jag vet inte att på frågesport.
Du kan helt skriva psuedocode och sedan bryta sig in real-kod
när du-- det är ungefär som matematik.
Om du någonsin har haft några flerdelad problem där
du vet inte hur man komma förbi det första steget,
men allt annat förlitar sig på det första steget,
du bara säga, liksom, antar x är lika 4.
Och då du kör med det, eller hur?
>> Du kan göra samma sak med kod.
Så man kan säga, antar Jag fick värdet rätt.
Sen gör detta nästa del här.
Eftersom denna del faktiskt borde vara ganska logiskt.
>> Så vi måste kolla Om vårt värde är tom.
Eller om det är något namn, faktiskt ge en varning.
Så vad kan vi vill kontrollera?
Vi vill ha lite om.
Vad tror du vårt Om kommer att bli?
Vi måste kontrollera om värdet är-- om det inte är en tom sträng.
>> Perfect.
Exakt.
OK.
Så om det är fallet, vad vill vi göra?
Vi vill kasta lite varning, eller hur?
Så det är bara alert.
Och sedan vad vi vill inuti.
Så vad ska vi att ha inne i vårt alert?
>> PUBLIK: "Hej."
>> TALARE 1: Komma.
Och sedan gör ni ihåg hur man sammanfoga?
>> PUBLIK: Plus.
>> TALARE 1: Plus.
Så vi vill ha plus.
Och då behöver vi en annan plus för vår utropstecken.
Cool.
OK.
Annars, vad kan vi vill göra?
Vi vill inte göra någonting, eller hur?
Så vi återvänder bara falskt.
Inte vad jag vill göra.
OK.
>> Och då dessa, om course-- vad som är viktigt
är att komma ihåg att stänga dina anonyma funktioner.
Så om du märker, har vi några funktion här som slutar här.
Så vi måste stänga detta första och infoga ett semikolon.
Och då detta en här har att göra med detta anonym funktion,
så vi stänga den där.
Att reflexmässig reaktion på sparande.
Ja.
PUBLIK: Finns det en anledning that-- bara i alla exemplen i JavaScript
som jag har sett, har vi de första klammerparenteser
på samma linje som funktionen?
>> TALARE 1: Det är stilist.
Yeah.
Och faktiskt, om man tar 61, vi göra allt våra klamrar det sättet.
Huh?
>> PUBLIK: Om vi ​​gjorde det på den PSET, är det dåligt för stil?
>> SPEAKER 1: Nej
Vi har uttryckligen sagt ni att göra detta.
Men egentligen, är denna typ av dominerande konventionen
i en massa C klasser och JavaScript och jQuery.
Så uppenbarligen är jag sure-- och faktiskt, om jag
var att göra detta problem helt blinda utan att ha tittat på det,
Det finns antagligen mycket få sätt som jag skulle ha fått det här.
>> Jag kan ha varit som, OK, kanske jag behöver ta något som är en ingång.
Och jag tror att ha kunskap som, liksom,
OK, om jag vill få något från ett formulär som har ett ID,
Jag hänvisar till det på det här sättet, Jag skulle nog få det.
Jag kan få detta.
Men egentligen, det enda som jag tror Jag skulle verkligen få detta här.
>> Så det är ganska viktigt att vet, som med alla svåra testet,
du slags välja dina strider, eller hur?
Om du vet att du inte kommer att få den första delen för jQuery, som jag sa,
antar att du har detta värde och gör vad du kan med det.
Och om du har tid, gå tillbaka och försöka fylla i bitar.
Men låt inte en fråga som detta verkligen mosse ner dig.
För vad?
Detta var en fråga om jQuery ur hela testet.
Så ja, det skulle vara bra om du fick det.
>> PUBLIK: [OHÖRBAR] du är välkomna att använda jQuery.
SPEAKER 1: Du är välkommen att använda jQuery.
PUBLIK: OK. [OHÖRBAR].
SPEAKER 1: Hur skulle du inte använda den?
Jag skulle behöva se upp all min JavaScript.
Det är faktiskt mycket enklare, Jag tror, ​​att använda jQuery,
eftersom jQuery faktiskt reducerar mängd JavaScript du skriver förmodligen
genom, något liknande, halv.
Så vår kod skulle förmodligen vara dubbelt så länge utan det.
Så om du recognize-- den största sak att ta avstånd från detta problem
är mönstren.
Om du öppnar något från ett formulär,
du kommer att använda citat, hash, vad du än försöker ansluta till.
Om det läggs fram, du vill ha att använda något som en .submit.
Du kommer förmodligen att använda en anonym funktion där.
Om du faktiskt behöver värdet av något, du kommer att göra offerter,
hash, vad nu det fältet är, .val.
Och erkänner mönster sånt går
att vara mycket mer användbar än egentligen veta Nitty Gritty.
Ja.
>> PUBLIK: Så om det användarnamn lämnar sitt namn
och det går genom det uttalandet, kommer det gå ner och returnera false efter detta?
>> TALARE 1: Nej, eftersom varningen, du kan tänka på det som en återgång.
Yeah.
Så det kommer att avsluta.
Yeah.
>> PUBLIK: Kan du [? placera?] parentes
av skicka, parenteser, något?
>> TALARE 1: Jag gjorde, tror jag.
Den här är stängt här.
Och så här blir stängt ner här.
>> PUBLIK: Åh, det.
Okej.
>> TALARE 1: Självklart, lite, små syntaktiska saker
så där, vi kommer förmodligen bara ringa det och vara som,
glöm inte dina parenteser.
Men ja.
OK.
Har vi en annan att vi skulle vilja göra?
Fick ni få det binära trädet en?
Vill vi gå över den?
Jag känner mig som binära träd och utomeuropeiska departementen bör vara punkter
att ni får ganska lätt.
Jag skulle inte ha dig att förlora poäng på det.
OK.
>> Låt oss göra detta DOM här.
Jag önskar att jag hade min Surface så jag kunde bara rita på skärmen.
Det är vad jag brukade göra förra året.
OK.
Så som jag nämnde, vi pratade om DOM, Document Object Model.
De kommer förmodligen att ge dig några lite snutt såhär
och be dig att skapa ett träd för det.
Och detta bara allt har att göra med rinnande genom taggarna.
Så låt oss försöka göra detta.
>> Också, som per vanligt, om ni gör dessa frågesporter, som jag starkt
rekommenderar att du gör som praktik, någon av dem att du är som,
Jag kan verkligen inte få allt pågår här, precis, naturligtvis,
skicka mig ett mail med en fråga, och jag kommer att förklara så gott jag kan.
OK.
>> Vi har en del dokument, och vi har HTML.
OK.
Så då vi bara analyserar taggarna här, eller hur?
Så vad ser vi comes-- vad är de två varunummer skall HTML?
Speciellt eftersom de är indragna ordentligt?
Huvud och kropp.
Ah.
Huvud och kropp.
Härligt.
Så låt oss börja här med huvudet.
Vad är under huvudet?
Vad är vårt nästa tagg?
Titel.
Och sedan inom titel, frågesport.
OK.
>> Så bokstav, det är bara promenader genom taggarna, OK?
Så då om vi har kroppen, när vi går igenom,
kropp har tre saker inom det, eller hur?
Det har fått tre divar.
Varje div får sin egen lilla box.
Och vad är i första div?
[OHÖRBAR]
Och sedan nästa gång det är mitt, som jag ska bara förkorta.
Och sedan den sista är botten.
>> Så egentligen, det är bara gå igenom.
Och eftersom vi ska ge du HTML som är korrekt indragen,
Du kan bokstavligen bara köra igenom och vara som, OK, här är HTML.
Så detta är den yttersta hörn, eller längst till vänster,
så det måste vara en egen grej.
Dessa är på samma indrag.
>> Så vi vet att huvudet behöver vara på samma nivå som kroppen,
men under HTML.
Det är vad vi har här.
Huvud och kropp är syskon, men de är under HTML.
Och då kommer vi bara gå in var och en av dessa.
Så huvud har titeln, vilket har frågesport, som vi ser här.
Och sedan i det här fallet har vi kropp, som har dessa tre linjer.
Så dessa är alla syskon alla under kroppen.
OK?
Så förhoppningsvis när du ser ungefär så här, du gillar,
ja, jag får bara rita ett träd.
Det kommer bli bra.
OK.
Så ville vara säker ni visste det.
>> Så varför inte vi gå till 32 med vårt binära träd?
Eftersom när du förstår en binär sökträd, det är verkligen inte så illa.
Så Everett, kan jag erase-- jag menar, dessa är alla på nätet också.
Så om du har några frågor.
>> Förlorade lite utrymme där, men det är OK.
Så binärt sökträd är bara ett sätt att organisera data
inte i en matris, där roten är alltid större
än den vänstra underordnade och roten är alltid mindre än den högra barn.
OK.
>> Så vi har denna stora sökträd här.
Vi har dessa siffror, 34, 59, 20, 106, 36, och 52.
Och vi måste organisera dem på ett sådant sätt
sådan att roten är större än allt på vänster sida
och det är mindre än allt på höger sida.
Och typiskt, vad du vill göra är försöka hitta
något om i mitten.
Med binära sökträd, kanske du har att leka lite med den.
>> Men i detta fall, låt oss bara anta att vi vet detta första.
Så 36 är vår första här.
Normalt skulle jag prova och välja något
ungefär i mitten som kommer förmodligen ge det bästa resultatet.
Så nu vet vi att allt på denna sida måste vara mindre än 36.
Men också, vad man kunde se är att vi har två platser över här.
Så om vi vet att vi behöver två tal som är mindre än roten,
då kan du bara beställa dessa och välj den tredje numret.
OK.
>> Så varför ska vi inte börja med den här sidan?
Så om vi vet att allt på denna sida måste vara lägre än 36--
men om vi ser på detta, Vi vet att det här numret
måste vara mindre än detta antal, eller hur?
Eftersom detta nummer här är på höger sida.
Och kom ihåg, precis som i våra större träd, allt på rätt
behöver vara större än roten.
På så sätt vet vi att allt som är i detta behov
att vara större än vad som är här.
OK?
>> Så vi har två val för dessa två bubblor.
Vi har 32 och 34-- eller ledsen.
20 och 34.
Så hur tror du vi kan sätta dessa i?
Om detta måste man vara större än den här,
det innebär att vi vill har 20 här och 34 här.
OK.
>> Så på samma sätt, vi ser vid denna typ av underträd.
Och vi säger, OK, vi har inte 36.
Vi har 106, 52, och 59.
Rätt?
I detta fallet här, vi vet att detta behov
att ha en sak som är större än den och en sak som är mindre än det.
Rätt?
Så om vi sätter dessa i ordning, det är bara om att hitta det mittersta värdet igen.
Så vår mittersta värdet är 59.
Så då säger vi, OK, vad är mindre än 59?
Tja, det är 52.
Och vad är större än 59?
Tja, det är 106.
OK?
Så det är bara lite som ett pussel.
Det hjälper typiskt, speciellt i små träd som denna,
om du bara beställa det, om du vet hur många är på vänster
och hur många är på rätt, kan det bara
gör att du kan välja vad bör vara ditt root.
Och sedan kan du snäll av arbeta därifrån.
Mm-hm.
33?
Visst.
OK.
Så vi vill skapa en nod eller ett binärt sökträd.
Och låt oss titta på vad som kan vara i den.
Och jag tror att detta kommer faktiskt vara vår sista problemet.
Ah.
OK.
>> Detta är precis vad vi kan tänker på som en nod, eller hur?
Vi har något värde, och vi vet att det kommer antingen
har vänster och höger barn.
Binär sökning tree-- att organ att den har på sin höjd två barn.
OK?
Låt oss tänka på hur vi definierat en länkad lista, eller hur?
>> Vi hade några int som representerade värdet.
Vi hade några pekare som representerade vad det skulle nästa.
Binärt sökträd är mycket lika.
Vi har fortfarande ett visst värde, n, att vi ger det, eller hur?
Och då jag drog dessa mycket uttryckligen med pilar,
eftersom de är ett effektivt pekare.
OK?
>> Så n vanligen är vad?
Det är något värde.
Vad gör vi vanligtvis beteckna det som?
En int.
Så vi har några int n, eller int värde, eller vad du vill kalla det.
Och så har vi den vänstra barnet och den högra barnet.
Rätt?
Och vi vet att vad de är point-- vad är de pekar på?
De pekar på andra noder, eller hur?
Så hur skulle vi deklarera en nod pekare?
>> PUBLIK: [OHÖRBAR].
>> TALARE 1: Mm-hm.
Och vi kommer att ha två av dem, eller hur?
Och då kan vi bokstavligen gör kvar för den vänstra barnet
och rätt för rätt barnet.
Actually-- ledsen.
Eftersom vi behöver struct.
>> Så struct är för att vi har inte färdig att förklara en nod än.
Så nod är inom här.
Det är ungefär som en rekursiv definition, eller hur?
Så när vi är inom denna definition, vi
har inte avslutat förklara nod som strukturen,
så vi måste göra struct nod bara säga, ja,
vi är faktiskt hänvisar tillbaka till oss själva skriver sak.
Det som en gång det är skapat, det ska bli bra.
>> Så hur stort tror du killar tror att det är?
Vad är storleken på denna struktur?
12.
Varför?
Just.
Och i själva verket en av de första frågorna en Quiz One
handlar om storlekar, vilket är anledningen till att jag frågade.
Okej.
>> Vi kommer till slut, eftersom DCE kommer skrika på mig om vi inte gör det.
Men om ni har några frågor, givetvis maila mig, låt mig veta.
Ni kommer att rocka den.
Jag är super upphetsad.
Ni kommer att göras som onsdagen, och sedan
du får arbeta på din slutliga projekt, och det kommer att bli häftigt.
>> Jag kommer att vara här nästa vecka från 4:00 till 04:30
om ni vill komma plocka upp dina frågesporter.
Om du vill hitta mig en annan gång eller bara samordna en annan tid,
gärna låta mig veta.
Annars är detta vår sista avsnitt.
Så det var fantastiskt att se er.
Vänligen ta mer godis.
Och lycka till på din frågesport.