[MUSIC SPILLE] SPEAKER 1: Greit, alle. Velkommen til ditt siste avsnitt med meg. Det har vært ganske semesteret. Jeg kan ikke tro at dette er, som, uke 12 eller 11, noe sånt. Men fordi det er vår siste avsnitt, har vi massevis av godteri. Og jeg kommer til å prøve og prep deg så godt som jeg kan for din quiz på onsdag. Så sannsynligvis ikke den beste måten å, lignende, endeseksjon med quiz gjennomgang. Men vi skal prøve og gjøre det morsomt. Og det er alltid godteri. Så forhåpentligvis, som vil gjøre det bedre. Din quiz kommer til å være ganske mye det samme som Quiz Zero. Det kommer til å være den samme form, samme lengde. Du vil være i rom spredt tvers av campus, fordi det er nær 900 av dere, og vi kan ikke alle holder deg i rom som dette. Så sørg for å se på alle Quiz En dokumentasjon online på cs50.harvard.edu i kveld eller i morgen kveld. Sørg for at du vet hvor du er går, hva du trenger å ta. Virkelig, du trenger bare å ta deg selv og en blyant, og du bør være i orden. Spørsmålene vil være veldig mye den samme. Det vil trolig være et par multiple choice, et par korte svaret, noen koding, kanskje noen sant / usant, matchende slags ting. Så du bør ikke være for overrasket av format. Hva som kan være overraskende er den lengde, som i tidligere år, har vært mye lenger. I mitt år, jeg har ikke en eneste venn at jeg husker endt eksamen. Det var som multippel sider tomt. Så lengden kan være slags forvirrende nettopp fordi det i noen år, har det vært mye lenger enn Quiz One. Jeg aner ikke hva det er kommer til å bli som i år, men det er noe å være klar over. I tillegg, vanskelighetsgrad mennesker har en tendens å finne Quiz En mye mer vanskeligere enn Quiz Zero. Igjen, vet du, hvis du slags vandre ut følelsen litt urolig fordi du gjorde det ikke så bra som du trodde du vil eller du føler at du ikke gjorde det gjøre så godt som du gjorde på Quiz One, husk at det er sannsynligvis en mange andre mennesker føler det slik. Jeg var definitivt en av dem. Quiz en, som kastet meg for en loop. Og mine venner har denne store bilde av dem på JP Licks type med disse enorme iskremer, å være som, Quiz One, og ser ut som de er i tårer. Så det er en generell følelse. Det er en tøff test, det er en tøff quiz. Selvfølgelig, hvis du kommer ut og du føler at du vugget det, flott for deg. Men vet at du sannsynligvis not-- du er nesten mest definitivt ikke alene hvis du går ut følelsen som, eh, sannsynligvis kunne ha fått bedre. Det er tøft. Mm-hm. PUBLIKUM: Hvor mye er det verdt i forhold til [uhørbart]? SPEAKER 1: Det er verdt det samme. Yeah. Men igjen, det er også kommer til å være påvirkes av hvordan resten av klassen gjør, hvordan din del gjør det, hvordan du har forbedret seg over tid. Gradering er en liten bit av en svart boks. Så hva det faktiske antallet eller prosentandel du få er ikke nødvendigvis liker direkte korrelert med karakteren du kommer til å få. Det er mye av faktorer som går inn i den. Så med det, kommer vi til å gå gjennom noen quiz gjennomgang. Jeg kommer bare til å kjøre dette som forrige gang for dere. Jeg har alle svarene å Quiz En av fjoråret. Så hvis dere ønsker å trekke at opp på dine egne datamaskiner, hvis du har tatt denne eksamen før og du har spørsmål, Jeg tenkte vi kunne bare gå gjennom noen av de mer vanskelige de på det. Slik at vi kan snakke om det, kanskje få litt mer innsikt inn i intuisjon bak noen av disse spørsmålene, hvordan å nærme seg dem. Også, som forrige gang, Jeg har en 100-lysbilde dekk som har i utgangspunktet alle av lysbildene som jeg har forberedt for forrige seksjoner siden siste quiz-- jeg har i dette dekk. Så vi kan gå gjennom ganske mye annet at vi har snakket om på forhånd at kanskje du ønsker litt mer avklaring på. Vi kunne gjøre det først. Men ellers er jeg super glad bare for å slags arbeid gjennom disse problemene med deg. Og jeg er egentlig her for å fokusere på hva dere synes ville være viktigst å fokusere på. Som, selvsagt, alle denne ting er viktig. Spesielt når vi går gjennom Quiz One, Jeg skal definitivt påpeke ting som, oh, dette kan være noe du virkelig ønsker å vite eller du ønsker å ha på din jukselapp. Jeg skal fortelle deg ting som vi på en måte gå gjennom. Så på dette notatet, er det noen ting at dere ønsker å gå over? Også, hvis jeg ikke har det i mitt dekk, vi kan trekke opp noe på nettet, eller vi kan prøve og gjøre opp et eksempel på fly. Men noen konsepter som du gutta er litt uklar på. [? Brian,?] Gjorde du have-- PUBLIKUM: Å, er det kumulative? Lignende er ting på Quiz Zero kommer til å være her? SPEAKER 1: Det er kumulative, men det er mye mer av en vekt på ting siden din siste quiz. Så åpenbart, dere har lært om variabler, og løkker, og conditionals. Og det er ikke som de som bare gå bort, fordi de er åpenbart iboende til alt annet som vi har lært nå. Det kan være et spørsmål på den slags, eller der kan være et spørsmål på ulike søk. Eller det kan være et par spørsmål om kanskje noe du har å gjøre med kompilering eller ulike feil. Men hvis du har sett på Quiz En fra i fjor, du vil legge merke til at det er veldig mye fokusert på ting som har skjedd siden forrige quiz. Hvorfor er denne døren alltid låst? Det plager meg virkelig. Fordi jeg prøver alltid å gå gjennom den. Så det er ganske mye hvordan quizen vil bli. Så er det noen begreper som dere ønsker å gå over? Eller vi kan hoppe rett inn bare se på Quiz One fra i fjor og type kommer gjennom praksis spørsmål der. Vi kan også bytte frem og tilbake. Dette er ikke en engangs slags ting. Eventuelle spørsmål? Ja. PUBLIKUM: Kan jeg spørre en Spørsmålet om another-- SPEAKER 1: Another one? PUBLIKUM: Dette er fra et annet år. SPEAKER 1: Yeah. Vi kan også gjøre et år. PUBLIKUM: OK. Så på 2011. SPEAKER 1: 2011. Ooh, som var året før meg. La meg trekke dette opp. PUBLIKUM: Jeg tror. SPEAKER 1: Dette aspektet Forholdet er å kaste meg av. PUBLIKUM: 11 og 12. SPEAKER 1: 11 og 12. OK. Vel, her, hvorfor kan ikke vi gjøre dette? Du guys-- alle bare ta et par minutter til å se gjennom spørrekonkurranser. Og vi vil utarbeide en liste. Og så skal vi gå gjennom dem. All right? Mens jeg får en haug av denne ting satt opp. OK. Jeg kommer bare til å skrive ting ned på papiret. 2011, 11 og 12? Jeg kommer bare til å endre denne skjermen. OK. Det er bedre. Dette over. OK. Alle andre som har noen som de ønsker å starte med? Også, glemte å si, hvis du ønsker mer av en haug med folk snakker på deg og bare gi deg en sprekk kurs i de siste seks ukene, vi kjører en anmeldelse sesjon fra 07:00 til 08:30 i kveld i Northwest B103, som også skjedde siste gang, hvor det kommer til å være meg, Hannah, Daven, med Gabe og Rob slags hjelpende fra sidelinjen av bare slags kaste alle informasjon som du kanskje ønsker å ha på din jukselapp, slash, vet generelt der. PUBLIKUM: Det er også på nettet, ikke sant? SPEAKER 1: Det er også online. Så du kan også holde ut av dette icky vær, gå til din dorm, og live-streame den hvis du ønsker. Jeg er sikker på at mange av people-- jeg vet at jeg ville være å gjøre det hvis jeg var i dine sko. OK. Så hvorfor ikke vi starte with-- mens du guys-- forhåpentligvis, du leter gjennom. Hvis ikke, kan jeg bare begynne å jobbe gjennom forskjellige ting på Quiz One fra i fjor med mindre du har konkrete spørsmål. Vi begynner med dette spørsmålet her om stabler. Så gjør alle huske slag av hva en stabel er? Hvordan vi pleier to-- kan noen bare gi meg en generell beskrivelse av en stabel? En type datastruktur. OK. Så det er en av de datastrukturer som vi forventer at du skal være kjent with-- som stabler, matriser, køer, så videre. Ja. PUBLIKUM: Som første In, Last Out, noe. SPEAKER 1: Det er First In, Last Out. Nøyaktig. Så en stabel er nøyaktig hva vi pleier å tenke om når vi tenker av en stabel av ting. Slik at en stabel av plater. Den første platen du legger ned kommer til å være på bunnen, og det kommer til å bli den siste en som du fjerner på slutten. Fordi de stakk opp. Og man tar en ut av bunnen, typisk, ting krasje og bryte. Så stabler du kan tenke på akkurat som en stabel med tallerkener. Eller eksempelet vi liker alltid å bruke er i D-hallene, har du skuffene, de er alle stablet opp, og du tar fra toppen. Så den siste i er den første ut. OK. Så i tilfelle her, vi ser vi have-- jeg lurer på hvis jeg kan faktisk zoome inn litt. Så vi har denne konstruere her. Høyre? Så du har litt struct som har noen int antall kapasitet. Så hva gjør vi tror det representerer? Dette er en matrise med størrelse KAPASITET. Så dette virkelig representerer stacken generelt. Stacken er egentlig bare en array med noen sett nummer det er dens max, det vil si dets kapasitet. Og så har vi noen int størrelse, som vil spore størrelsen på stacken gjennom hele kurset av når vi bruker den. OK? I dette tilfellet her, sier vi at vår stakkstørrelsen er initialisert til 0. Så vi har en tom stabelen akkurat nå. Og da vi ønsker å fullføre gjennomføringen av pop slik at den returnerer int øverst. Og så hvis det er tomt, den returnerer negativ en. OK? Så jeg ønsker dere bare til å tenke om hva vi kan gjøre der. Hva som kan være en av de første ting vi ønsker å sjekke? Det er en stor ting her. Når det says-- hvis det er stadig noen Hvis setningen, som "Hvis stabelen er tom," eller "Hvis dette returnerer null", eller "Hvis dette er noe" - beklager. PUBLIKUM: Skriv en If-setning. SPEAKER 1: Høyre. Du kan skrive en If-setning. Og det er trolig en av de første tingene du ønsker å sjekke. OK. Når de gir deg typen som et hjørne saken som dette, er det vanligvis en av de første tingene du kommer til å sjekke inn koden din. Også, noe å gjenkjenne for quiz er hvis du har en ineffektiv måte å gjøre noe, skrive det ned. Fordi vi ikke gradering du på design, er vi gradering deg på riktig for spørrekonkurranser. Så selv om du vet at det er en super dårlig måte å gjøre noe, men det fungerer, skrive det ned, OK? Bokstavelig talt, har jeg sett barn sist year-- hvis du ser på fjorårets ett, de er som, gjør Mario pyramiden. Og de bokstavelig talt bare gjorde "print, hash, print, hash, hasj, print, hasj, hash, hasj. " Men det er riktig. Det gjør det vi fortalte det til, slik at du ikke kan ta poeng fra. Hvis du er ned til wire, selvsagt, du ønsker å få en mer elegant løsning, og den mer elegant løsning vil trolig være mindre kode, som betyr at du sannsynligvis ha en høyere sjanse for å være rett. Men hvis du er som, vet du hva, nei, jeg har ikke tid, jeg vet at dette er en løsning, det er ikke den beste, skriv det. Og du kan til og med skrive på side, jeg vet dette er forferdelig, men jeg vet det fungerer. Så bare en heads-up. OK. Så åpenbart, første er dette Hvis uttalelsen. Så hva gjør vi tror dette Hvis uttalelse kommer til å være? Og faktisk, la meg åpne opp min store Sublime redaktør. Jeg kommer til å kode dette og deretter vise dere når det er gjort. Så int pop. OK. Så hvis vi har denne int pop void-- så åpenbart, dette er noen funksjon som tar inn ingenting og returnerer et heltall, ikke sant? Så det er bare kommer til å snakke om denne bunken at vi har skapt. Så bare oversette denne siste setning, "hvis bunken er tom, pop skal returnere negativ 1, "hvordan kan vi gjøre det? Så Hvis det? Hvordan vet vi at bunken er tom? Det er bare størrelsen er lik 0. Stack.size lik 0. Også, jeg slags skrive blind her. Så hvis jeg gjør noen typos-- oh, også glemte å nevne dette. Forrige uke, jeg helt funnet ut hva vårt problem var med Javascript. Ikke kapital jeg og D. Du bør bare kapitalisere jeg og få element av Id. Og det var hele feilen. Så hvis dere gå tilbake og faktisk se gjennom min kode, hvis du bare gjøre alt en små bokstaver d, "glemme element av Id," det vil fungere. Så som jeg lovet, var jeg veldig nær. Jeg bare kapitalisert noe Jeg var ikke ment til, som Jeg er sikker på at dere hadde i din siste PSet. Så hvis vår størrelse er lik 0, hva skal vi gjøre? PUBLIKUM: Gå tilbake negativ en. SPEAKER 1: Gå tilbake negativ en. Cool. Så nå hva gjør vi? Vi ønsker å pop noe av. Nå er dette den saken der har vi noe. Vår størrelse er større enn 1 eller større enn 0, ikke sant? Vi faktisk har noe der. Så det vi ønsker å gjøre er vi ønsker å returnere til høyre her. Vi kommer til å si at vi ønsker å returnere toppen av stabelen. OK? Så hvordan kan vi gjøre det? Hvordan får vi tilbake toppen av bunken? Husk at vår stabel er bare en matrise, ikke sant? Den har en viss kapasitet at vi har gitt det. Som vi har satt ting on-- eller faktisk, vi kommer til å skrive "push" etter dette. Hvis ting er i det-- kanskje et bilde vil hjelpe. Hm, jeg liker store kritt bedre. Så if-- og du kan bare tenker på dette som vår stabelen. Så dette er 0, 1, 2. Jeg vet ikke hvorfor mine bokser blir mindre. Men der. OK. Så dette er noen stabel med en kapasitet på 5. Og la oss si vi har noe her og vi har noe her. Slik at på dette punktet, vår størrelse er lik hva? 2. Og hvis vi ønsker å pop noe ut av det, det betyr at vi ønsker å få kvitt denne retten her. OK? Så hvordan ville vi returnere denne verdien? PUBLIKUM: Størrelse minus 1. SPEAKER 1: Høyre. Så størrelse minus en, eller du kunne gjøre størrelse minus minus. Men vi kan ikke bare gjøre størrelse. Det er inne i en struct, ikke sant? Så stack.struct. eller stack.size. Det er indeksen vår rett der. OK? Og så hvis vi ser tilbake på vår struct her, Vi legger merke til at til faktisk tilgang til array, vi trenger å gjøre stack.numbers å faktisk få tilgang til denne matrisen. Slik som returnerer toppen av bunken. Men noe at-- hvis dere ser på fasiten, er dette alt de gi deg. Så dette er det. Men jeg kan hevde at de er miss-- ooh, ikke hva jeg ville. Jeg kan hevde at de er mangler noe, because-- ja. PUBLIKUM: Reduser størrelsen. SPEAKER 1: Høyre. Vi må redusere vår størrelse nå. Så hva er vanskelig om dette er når du kommer tilbake noe, din funksjonens kommer exit, ikke sant? Så det vi kan gjøre er egentlig redusere vår størrelse først. Og da kan vi bare gjøre stack.size. Vi kan bare bruke stack.size som indeksen vår, kunne ikke vi? Fordi hvis stack.size er to, vi minske det. Og så det er 1, som er vår faktiske indice. Når vi blir kvitt dette, vi faktisk bare har én ting i vårt utvalg. Så det gjør begge deler. PUBLIKUM: [uhørlig]? SPEAKER 1: Vel, i dette tilfellet, Vi har nettopp returnert elementet på toppen som er på vår størrelse som er på toppen. Men vi har ikke gjort noe til størrelse etter at vi fjernet dette elementet. Dette har ikke endret vår størrelse ennå. Dette gjør faktisk iboende endre vår størrelse. Men for å gjøre det litt klarere, du kunne gjøre stack.size minus minus. For meg, det gjør det, vet jeg ikke, litt mer klar at-- ah, at du faktisk endring størrelsen og returnere den. Den andre måten var fint, fordi du var i endring og retur på samme tid. Men dette er bare en annen måte å skrive det som jeg ville vise dere. Betyr det fornuftig? Stabler, tror jeg, er mye enklere enn køer. [Ler] OK. Hadde du noen konkrete spørsmål omtrent 11 og 12, eller just-- PUBLIKUM: Jeg tror det var stabelen. SPEAKER 1: stack størrelse? PUBLIKUM: Yeah. SPEAKER 1: Gotcha. OK. Ja, kan du gjøre det i en av disse to måter. OK. Så nå har vi den andre. Dette er veldig rart, som ikke å ha dette på min skjerm. Så hvis vi ser her, har vi nå ønsker å fullføre gjennomføringen av push, som faktisk setter noe, går og setter noe inn i vår kø, eller inn i vår stabelen. OK? Så hvis vi legger merke til, vi har et par ting. Vi har våre great-- hvis alt annet, når vi har en av disse, dere bør minst få halvparten et poeng, fordi alt du trenger å gjøre er konvertere dette til C. Og de gir deg halvparten av det. Så "hvis en stabel er full eller den er negativ, skyv bør return false ". OK? Så vi bare ønsker positive heltall å være på stabelen. All right? Og dette kommer til å enten returnere sant eller usant. Så skal vi [uhørbart] bool. OK. Så oversette. PUBLIKUM: [uhørlig]. SPEAKER 1: Oh, takk. Yeah. Dette er grunnen til at jeg har dere. Int n. Perfekt. Fordi vi setter noe videre til vår stabelen. Vi må faktisk noen tall. OK. Så bare ta det siste linje som de ga oss, vår type hjørne tilfeller hva tror du vi har her? Selvfølgelig skal vi ha noen If. OK. Så vi sa, hvis stacken er full, eller hvis n er negativ. Så sannsynligvis enklest å starte med, så hvis n er mindre enn 0 or-- husker fint AND og OR operatører der. Hvordan ville vi sjekke se om vår stabel er fullt? Hva skjer? PUBLIKUM: Størrelse lik KAPASITET. SPEAKER 1: Nettopp. Perfekt. OK. Og hva gjør vi ønsker å gjøre det? PUBLIKUM: Gå tilbake falsk. SPEAKER 1: Gå tilbake falsk. Perfekt. Så halvveis der, ikke sant? I det minste, dere vil ha halvparten av dette. Så la oss tenke på dette. Så dette er bunken vi begynne med. Vi prøver å sette noen element på her. Vi har en størrelse som er lik 2 akkurat nå. Vi har en kapasitet som er lik til 5. Og la oss si at vi har noen n som er lik 3. Så vi må skrive tre inn i dette rommet. Og vi må skrive det inn i indeks 2. Høyre? Så hvordan kan vi gjøre dette? Prøver å assign-- vi vil ha tilgang til vår array. Så stack.numbers. Men til hvilken indice ville vi vil at dette skal være? PUBLIKUM: [uhørlig]. SPEAKER 1: Yeah. Stack.size. Og vi ønsker at det skal lik n, ikke sant? PUBLIKUM: [uhørlig]. SPEAKER 1: Jeg var faktisk bare se på det. Jeg tror det er feil. PUBLIKUM: Vil du ikke ha den plass forbi den nåværende størrelse? SPEAKER 1: Vel, hvis vi ser her, vår størrelse på dette punktet er 2. Vi vil at den skal gå inn indeks 2, fordi dette er toppen av stacken. Så jeg vil si at det bør være stack.size, og så ville du øke stack.size. Er alle enige? Jeg tror jeg er enig med det. Dere kan argumentere med meg hvis du vil. Eller ikke argumentere, men vi kan diskutere dette. PUBLIKUM: [uhørlig]. SPEAKER 1: Mm-hm, er der den er åpne på grunn av null indeksering. Slik at mens det i den første delen, Jeg trodde de var feil, og de var faktisk rett, dette del, jeg tror faktisk de tok feil. Jeg vil si at du bør definitivt innspill det her. Jeg tror vi alle er enige vi har en størrelse på 2. Det er akkurat der vi ønsker vår nye nummeret til å gå. Så stack.numbers på stack.size bør tilsvare n. Og da vi ville øke den stack.size. ++. Og hva gjør vi ønsker å gjøre? Det er en siste ting vi må gjøre hvis vi lykkes satt inn dette? Returnere true. Og nå er du ferdig. Så jeg føler at det var hele minus minus stack.size og stack.size ++ at messed ting opp. Ugh. Jeg keep-- jeg har denne kne-jerk tendens til å alltid treffer Kontroll, S, fordi jeg aldri ønsker å miste noe av arbeidet mitt. Men jeg trenger ikke å gjøre det nå. OK. Så det var stabelen. Cool. Er det noe? Visste dere finne noen andre spørsmål som du hadde liker å gå over fra tidligere spørrekonkurranser? Hvis ikke, kan vi på en måte begynne å snakke gjennom Quiz One fra i fjor. Ja. PUBLIKUM: For det første del, gjorde jeg egentlig ikke forstå hvordan du slettet nummeret. Er ikke det der fortsatt? SPEAKER 1: Tallet er fortsatt der. Men det som skjer er at fordi du har fortalte det at toppen av stabelen din er her, når du går å legge til noe på stakken, vil det bare erstatte det. PUBLIKUM: Å, OK. SPEAKER 1: Yeah. Så det er som han glemte og det er der type ting selv om det er der. PUBLIKUM: [uhørlig] eller noe? SPEAKER 1: Nei. Fordi vi er i en array, trenger du ikke å bekymre om-- du vil bare styre det når du trenger det. OK. Andre spørsmål? Hvis ikke, vi bare går å begynne å jobbe gjennom. Yeah. PUBLIKUM: Vel, dette er en på 2013, men bare gå gjennom SQL ting. SPEAKER 1: SQL? OK. Så dette er 26 gjennom 29. PUBLIKUM: Yeah. SPEAKER 1: OK. Lovely. La oss trekke dem opp. Oh, se. Visste dere nyte Steve Ballmer snakker, forresten? Det var ganske morsom, etter min mening. Jeg elsker at hver gang jeg tar opp CS50 s nettside under delen, det er liksom, oh, se pkt. Og jeg er like, mm. PUBLIKUM: Kan vi gjøre det? SPEAKER 1: Vi vil gjøre det på slutten. Hvordan er det? Fordi jeg vet at dere har alltid ønsket å. Så vi vil gjøre det på slutten. Ett spørsmål. PUBLIKUM: [uhørlig]. SPEAKER 1: Det vil være en meta-delen. PUBLIKUM: Det er som fem sekunder. PUBLIKUM: Virkelig? PUBLIKUM: Det er som 20 sekunder. [Interposing VOICES] [Latter] SPEAKER 1: Jeg liker det du allerede har gjort det, som er det som gjør meg lykkeligere. OK. 26. OK. Egentlig er vi bare kommer til å speile dette nå, fordi jeg ikke kan. Dette er irriterende. OK. Nå kan jeg se alt. Lovely. OK. Så åpenbart, bør dette bringe tilbake gode minner fra [? CSG?] Finance. Halvparten av dere om har din gradert nå. Den andre halvparten vil jeg komme til veldig, veldig snart, jeg lover. Så vi har litt SQL tabellen det er kontoer her. Sannsynligvis ligner dine gutta "brukertabeller. Og vi har noen tall det var en primærnøkkel og representerer en 12-sifret kontonummer. Og balanse er hvor mye penger de har. Og standardverdien er 100. Og de gir dem $ 100 noen gang de åpner en konto. Jeg ønsker min bank gjorde det. OK. Så vi ønsker å fullføre skjemaet ved spesifisere ved siden av nummer i balanse den aktuelle SQL type. Så hva tror dere ville være typen som din kne-jerk reaksjon for typer for disse to? PUBLIKUM: Int. SPEAKER 1: En int. OK. Og så for en balanse? Desimal. OK. Så desimal rett. Int er nær. Slags den store tingen er dette understreket 12-sifret kontonummer. Når vi har noe som er større enn åtte sifre, de ønsker å bruke store int, som jeg tror er-- PUBLIKUM: Er det bare SQL? SPEAKER 1: Det er den eneste gangen jeg har hørt av det er SQL-- som å bruke en stor int. Det er bare å gi deg en litt mer presisjon, pass på at du ikke fylte type ting. I all ærlighet, tror jeg dette er definitivt en av de som hvor det er, oh, det er ment for folk som har litt mer kunnskap om SQL. Vi har aldri snakket om store ints i din PSet. Så det er litt som jeg er ganske sikker på hvis du setter int, var det halv kreditt. Og som jeg sa tidligere, det kommer å være noen spørsmål som er like ment å reise deg opp, så at ikke alle får 100. Fordi selvfølgelig, det er noen mennesker i CS50 som har gjort dette for like åtte år, og du liker, hva er det du gjør? Men ja. Desimal for balanse var det innlysende. Og så stor int for nummer nettopp fordi av det, som understreket 12-sifret. Når alt er i fet eller det er understreket, som, ta hensyn til det. Vi gjør ikke det bare fordi. OK. Så "anta at banken pålegger en $ 20 månedlig avgift på alle kontoer. Med hvilken spørring kunne banken trekke $ 20 fra hver konto selv om det er et resultat av noen negative saldoer? " Så la oss starte enkelt. Vi har fire hovedkommandoer for SQL, som er? Har dere huske de fire store som jeg fortalte deg? UPDATE, DELETE, SELECT og INSERT. Perfekt. Fikk den. Så hva gjør vi tror kan være mest nyttig for denne? Vi are-- UPDATE. Nøyaktig. Så OPPDATERE, fordi vi ser på kontoer som allerede eksisterer. Så husk general vår slags ting er oppdatering. Og hva da kommer etter UPDATE? Vi har noen bord at vi refererer til. Så hvis jeg trekke opp Sublime igjen-- UPDATE. Så dette er et generelt format. Så vi har UPDATE tabellen. Og så hva er neste ting vi har? Du kan gjøre HVOR. Og så har vi noen kvalifiseringskamp her. Og så hva har vi neste? Vi har noen SET-- noe lik noe. Blah lik blah. Oppdatert blah. Høyre? Så det er som den generelle ide for noen oppdatering. OK? Så la oss begynne å fylle dette på med hva det skal være. Så hva tabellen er det snakk om? Kontoer. Og da i dette tilfellet hva er egentlig kult er vi snakker om spesifikke brukere innen vår konto, eller snakker vi om alle brukere? Vi snakker om alle brukere. Så i dette tilfellet, kan vi bare slette denne HVOR kvalifiseringskamp. WHERE er bare når du vil å begrense hva du bytter. Hvis du ønsker å endre hele tabell, kan du bare droppe det. OK. Så nå er vi på vår SET del. Hva ønsker vi å endre? PUBLIKUM: Balanse. SPEAKER 1: Balanse. Og vi kommer to-- hvordan er vi kommer til å endre balanse? Vi har en $ 20 gebyr, ikke sant? Minus 20. Og de sier det er OK hvis vi har negativ saldo. Så i dette tilfellet, trenger du ikke å gjøre noen ytterligere feilsjekking. OK? Det er bokstavelig talt alt du trenger å gjøre. Cool? OK. Så la oss gå gjennom den neste. "Med hva SQL-spørring kunne det bank hente kontonumrene av sine rikeste kunder med balanserer større enn $ 1000? " Hvis banken din og dine rikeste kunder er bare de med over $ 1000, Jeg føler at du er gjør noe galt. Lignende, hvordan en bank overleve på det? Liker, som interesse, ikke helt nok. OK. Med denne typen ting, hva gjør du tror, ​​av våre fire funksjoner, tror du vi kommer til å bruke? VELG. Perfekt. VELG. OK. Så vi velger noen identifikator FROM tabell. Og så HVOR tilstand. Så når vi går gjennom disse, jeg skal bare for å gi dere en generell oppfriskning på den generelle formatet av alle disse. Så vi velger noe slag av [? ting. ?] I dette tilfellet dette kommer til å være vanligvis noen kolonne. Så i vårt tilfelle, har vi nummer, balanse. I dine gutta 'tilfelle, kanskje det var ID, navn, passord. Noen av disse søylene, det er typisk hva vi velger. Så i dette tilfellet her, som slags kolonne, hva identifikator vi trekke fra bordet vårt? Hva betyr det spør oss om? Det spør oss for våre tall, ikke sant? Kontonumrene. Så husk, bare tall i dette tilfellet. Hvis dere noen gang hatt den feilen, at lys oransje boksen ville komme opp. Og det var som, uventet ro i, som, uansett. Det er fordi du ringte bordet ditt feil, ikke sant? Så vær sikker på at du er ringer kolonnen riktig. Så fra bordet, bordet vårt er kalt kontoer. Igjen, sørg for at du er refererer bordet ditt riktig. Og så hva er vår tilstand her? Hva ser vi etter? Vi ønsker at våre rike mennesker. Ja. Så balansere større enn 1000. Der du går. Det er din spørring. Ikke så ille, ikke sant? OK. Så nå for vår siste. Med det er vi breezing gjennom. OK. Så nå "med hva spørringen kunne banken tett, dvs. slette "- trenger du ikke elsker hvordan de bare ga deg DELETE-- "Hver konto som har en saldo på 0?" Jeg tror vi alle er enige om vi er sannsynligvis kommer til å bruke DELETE. Jeg er velkommen til å ta en hvilken som helst diskusjon rundt det. Men jeg tror det er ganske trygt å si at vi kunne bruke DELETE. Så vi kommer til å slette noen brukere fra bordet, WHERE betingelse. Så samme slags ting som SELECT. Så i dette case-- oh, beklager. Jeg skal slette fra. Fordi DELETE vilje slette hele raden. Så vi trenger ikke å snakke om hvilke spesifikke ting om en bruker vi sletting. Hvis vi slette en bruker, er vi slette alt om dem. Så i dette tilfellet, vi trenger bare å fyller ut vårt HVOR og vår tilstand. Så bordet vårt er bare våre kontoer tabell, som vi har gjort. Og hva er da vår tilstand her? PUBLIKUM: Balanse. SPEAKER 1: Balanse er lik 0. Riktig. Alt bra. Ja. PUBLIKUM: [uhørlig]. SPEAKER 1: Så DELETE iboende sletter alt. Så mens med SELECT, tar i SELECT visse kolonner som du ønsker returnert. Hvis du ville alt om en bruker returnert, du bruker stjerne. Stjerne sier, komme tilbake til meg alt fra denne brukeren. Eller hvis du setter HVOR stjerne, at betyr bare gi meg alt. Men DELETE iboende har det. Så hvis du sier, DELETE fra kontoer der balanse er lik 0, det kommer til å gå gjennom. Og overalt denne balansen er lik 0, iboende gjør det det. Det vil slette alt. Stjernen er mer for-- med SELECT eller UPDATE, det snakker mer om den enkelte felt svarende til en bruker. Så når du SELECT Star fra tabell WHERE ID lik 1, som returnerer til deg alt om brukeren med ID 1. Hvis du skulle gjøre SELECT nummer eller SELECT ID komma navn fra brukerne HVOR ID lik 1, som bare returnerer sine tall eller deres ID og deres navn. OK? Så vi bruker stjerne i så fall til gi oss alt om en bruker. Og DELETE iboende gjør det. Det betyr ikke bare slette ID, eller bare navnet, eller hva. Ja, nei. Det sletter bare hele bruker. Slik at vi ikke trenger å bekymre deg om stjernen der. Hvis du ønsket å slette alt, kan du gjøre det, og dette vil bare slippe alt. Men typisk, du ønsker ikke å gjøre det. Men hvis du noen gang ønsker å slette alt, kan du gjøre det. OK. Har dere funnet noen andre spørsmål? Ja. PUBLIKUM: Kan du gjøre 26? SPEAKER 1: 26 vi nettopp gjorde. PUBLIKUM: Oh, 25, beklager. SPEAKER 1: 25. OK. 25. Oh. De gjør Script. Åh, jeg kan ikke tro det. Jeg kommer til å rote oss opp igjen, folkens. OK. Vi fikk dette. Vi kommer til å gjøre dette arbeidet. Ah, jQuery. Moro. OK. Så vi kommer til å fullføre implementering av nettsiden på en slik måte at hvis de besøker, innspill deres navn, og sende inn skjemaet, de har denne flotte varsling vinduet som kommer til å dukke opp. Så noe med varsler, vi vet at vi er nødt til å bruke Javascript. Yay, Script. Og hvis de ikke klarer å legge inn en navn før du sender inn skjemaet, ingen varsling skal vises. Så du kan bruke jQuery, men du trenger ikke å. Så jeg kommer til å la dere jobbe på dette bare for et par minutter. Tenk på det. Og da vil vi kode det. Slash jeg kommer til å prøve og tenke på beste måten å forklare dette svaret til deg. OK. Vi får det satt opp. OK. Så vi bare kommer å gå gjennom dette, fordi jeg vet jQuery er litt forvirrende. Javascript. Det er litt der ute. Så hva vi skal gjøre er [Uhørbart] faktisk løst dette problemet med jQuery. Så hvis du husker, jQuery er bare et bibliotek det er bare bygget på toppen av Javascript. Det er ment å gjøre livet litt enklere. Jeg ville definitivt, hvis du har tid, se over en liten bit av den dokumentasjon for jQuery. Men det er svært lik Javascript. Det har lignende paradigmer, hvor du bruke denne dot operatøren ringe funksjoner på objekter som du har. Så det vi har her er for jQuery, du bør alltid ha denne typen av omslaget, som er $ (Document) .ready (funksjon) -funksjonen i parentes her. OK. Så dette kan være noe du vil ha på din jukselapp. Fordi i det minste, kan du har wrapper for din jQuery. Og det vil i det minste få du del måter der. Så på samme måte som vi snakket mye om Javascript, og vi vil starte med å se på hva vi prøver å redigere eller hva vi prøver å endre. Og det vil typisk være første at vi ville sette inn. Så i dette tilfellet, hvis vi går tilbake til dette her og vi ser på vår skjema her, vi har dette innganger, rett, dette id innganger. Og vi vet at basert på spørsmålet vårt, vi er enten kommer til å kaste en feil hvis dette er tomt, eller vi kommer til å sette dette inn i et varsel, ikke sant? Så sannsynligvis trygt å si at vi er kommer til å være håndtere innganger her. jQuery er svært like i at hvis vi tenker tilbake til CSS, noe med en ID vi ser på med en hash. Noe med klassen vi sett på med en prikk, ikke sant? Så på samme måte her, hva vi snakker om er innganger. Vi så at inngangene er en ID innenfor vårt skjema. Så vi kommer til å referere til det som sådan. Innganger. OK? Så når du er i tvil, selv hvis du har ingen steder, hvis du er veldig usikker på hvordan du nærme seg dette, A, har denne wrapper. Så start der med wrapper for jQuery. B, sørg for at du vet hva du er i endring. Og når du er i tvil, sette det i noe, og gjøre prikk, uansett hva du tror du bør gjøre med det. PUBLIKUM: Hva er den wrapper? SPEAKER 1: wrapper Dette første linje. Så dette sier, vente til dokumentet mitt er klar. Da begynne å rote med ting. OK? Så vi vet at vi får med innganger. Så vi er like, OK, er innganger skjemaet vårt. Det er vår ID. Så det er det vi er kommer til å være ute etter. Og vi ønsker å se hva som skjer når dette skjemaet er sendt, ikke sant? Slik som vi kanskje tror, vi har noen .submit. Så .submit bare sier, OK, dette skjemaet som vi har referert med hash-innganger, når det er fremlagt, utføre noe annet. Så vi kommer til å ha noen funksjon. Merker vi ha anonyme funksjoner her. Vi har en anonym funksjon her. Ja. PUBLIKUM: Vil det alltid være .submit, eller er det bare fordi i HTML, vi gjort knapptypen Send inn? SPEAKER 1: Det bør .submit, fordi det er en form som vi sender inn. Fordi denne .submit ikke nødvendigvis tilsvare hva den knappen er som å ringe. Men det faktum at det er en form at vi sender inn. OK. Så oppdager anonym funksjon her som says-- PUBLIKUM: Jeg gjør egentlig ikke forstå anonyme funksjoner. SPEAKER 1: Så anonym funksjoner, de er bare noen funksjoner som ikke har et navn. Så i stedet for å ha noen hovedfunksjon at oppfordring vi kunne si, hvis dokumentet klar, så vi vil kalle innganger. Og så, når de sendes, call-- Som, hvis så-og-så sendt, vi vil kalle en annen funksjon. En anonym funksjon bare ikke ha et navn, og det vil bare utføre innenfor disse slags ting. Så i dette tilfellet, hva dette sier er, Når vår dokumentet er klar, utføre denne funksjonen. Denne funksjonen er sammensatt av alt innen her. Og så det neste laget i er, OK, når innganger er sendt inn, utføre dette. Det er bare en måte å betegne hva som skal utføres når. Det er bokstavelig talt bare en funksjon som ikke ha et navn, slik de pleier å nestes inn i hverandre, fordi du kan ikke kalle dem ved navn. OK? Bokstavelig talt, en anonym funksjon er bare en funksjon uten et navn. Det var det. Bare en måte å kapsle forskjellige ting at vi ønsker utført på bestemte tider. PUBLIKUM: [uhørlig]. SPEAKER 1: Ventilen? Hvor? PUBLIKUM: I parentes etter funksjon? SPEAKER 1: Etter funksjoner. Hvem av dem? PUBLIKUM: Begge. Hvis du putter, som, hendelse, eller hvis du sette et argument i det, ville det være galt? SPEAKER 1: I dette tilfellet antar jeg du kan sette et argument i det. Men fordi vi ikke trenger en argument, bør det ikke være. Liker, er det hele, lignende, bør du bare har ting som er nødvendig slags ting. På samme måte som om vi hadde noen En funksjon som har int main void-- lignende, med int main tomrom, du kunne gjøre int arg v, uansett. Men hvis du ikke trenger dem, du bør ikke ha dem der. Samme. Emma, ​​hadde du et spørsmål? OK. Cool. OK. Så det vi har så langt er når vår dokumentets klar, utføre dette. Nå ser vi på når den er sendt inn. Så nå er vi faktisk har liksom av kjøtt av vår greie. Så vi trenger å få den verdien som brukeren presentert, enten det være et navn eller tom. Og da må vi enten retur dette varselet eller kaste en feil. Uansett. Så hvordan erklærer vi gjør en variabel i Javascript? Var. Så la oss si, ulike navn equals-- eller faktisk, vil vi gjøre verdi siden jeg tror det er navnet. OK. Så vi har noen verdi her at vi ønsker å trekke fra våre innganger skjema. Så på samme måte som vi gjorde slags innganger, kan noen fortelle meg hva vi kan være ringer innenfor her hvis vi ønsket å få navnet i form? Og hvis vi ser tilbake på vår skjema her, Vi merker at vi har en ID på navn. PUBLIKUM: [uhørlig]. SPEAKER 1: Du trenger ikke å tenke på det som en matrise. Du trenger ikke å bekymre deg for det. Så vi bare har noen navn. Og da fordi Java og ting er rare, kan vi ikke bare gjøre "navn." Vi faktisk nødt til å ringe noen funksjon som gir oss, lignende, kan verdien av denne identifikator. OK? Så det er bare .val. PUBLIKUM: [uhørlig]. SPEAKER 1: OK. Så med Javascript, denne typen ting her bare går gjennom. Og du kan tenke på dette as-- det er som nesten en getElementById, hvor getElementById ville faktisk returnere hele tingen for deg. The $ ("# name") er akkurat som, OK, jeg har det, jeg har tilgang til den, men hvis du faktisk ønsker det for å returnere verdien til you-- PUBLIKUM: Er det som en peker? SPEAKER 1: Det er typen som en peker. Du kan tenke på det som Nesten som en peker. Liker, sier det, OK, jeg vet hvordan å komme dit, men å faktisk få verdi ut av det, må du eksplisitt ber om det. Og dessverre, selvsagt gjør vi ikke gjøre for mye med Javascript og jQuery. Så det kommer til å komme ned til hvor mye du guys-- hva du vet, hva du tilfeldigvis har sett, og hva du kan slags logisk gjette på. Fordi noen av disse tingene, du kan sannsynligvis få halvveis. Men for å få det helt riktig, Jeg tror dette problemet sannsynligvis hadde en av de laveste score. PUBLIKUM: Som, for eksempel, for [uhørbart] innganger, hvorfor ikke du har til å sette val der? SPEAKER 1: For denne? PUBLIKUM: Yeah. SPEAKER 1: Yeah. Fordi dette er snill av liker, som vi sa, noen peker, og dette er meg referere det og faktisk får oss verdien. PUBLIKUM: Mens [uhørbart]? SPEAKER 1: For innganger, innganger er bare some-- det er som om vi er bare ser på det som en helhet, og dette .submit forteller oss det vi trenger å vite. jQuery og Javascript er merkelig. Jeg vet. Jeg vet det, folkens. Jeg vet. Det er en grunn til at jeg ikke gjør det gjøre web-programmering. Bare tuller. Jeg har ikke hatt nok eksponering til det. PUBLIKUM: [uhørlig] CSS. [Latter] SPEAKER 1: OK, det er CSS. CSS er bare, som, gjøre ting pen, det er ikke som la oss håndtere data. Det er en forskjell der. OK. Så nå forhåpentligvis, part-- dette også, for et problem som dette, hvor du kan ikke kjenner syntaks, du kan være like, OK, kan du ha noen Div verdi og være som, antar jeg fikk verdien på riktig måte. Og så du kan sannsynligvis skrive dette neste del. Denne neste delen vil sannsynligvis virker mye mer lett, eller det ville gjøre logisk forstand til dere. Mens det vi har skrevet så langt, Jeg vet at jeg ville være som, umm, ja, Jeg vet ikke at på quiz. Du kan helt skrive psuedocode og deretter bryte seg inn i real-kode når you-- det er typen som matematikk. Hvis du noen gang har hatt noen flerdelt problem der du vet ikke hvordan de skal komme forbi det første trinnet, men alt annet avhengig av det første trinnet, du bare si, som antar x er lik fire. Og så du kjører med det, ikke sant? Du kan gjøre det samme med kode. Så du kan si, antar Jeg fikk verdien høyre. Deretter må du gjøre dette neste del her. Fordi denne delen faktisk bør være ganske logisk. Så vi må sjekke hvis vår verdi er tom. Eller hvis det er noen navn, faktisk gi et varsel. Så hva kan vi ønsker å sjekke? Vi ønsker å ha noen If. Hva tror du vår Hvis det skal være? Vi må sjekke for å se om verdien er-- hvis det ikke er en tom streng. Perfekt. Nøyaktig. OK. Så hvis det er tilfelle, hva vi ønsker å gjøre? Vi ønsker å kaste litt våken, ikke sant? Så det er bare varsling. Og så hva vi vil inne. Så hva er vi antok å ha inne i vårt varsling? PUBLIKUM: "Hallo." SPEAKER 1: Komma. Og så gjør dere husker hvordan å sette sammen? PUBLIKUM: Plus. SPEAKER 1: Plus. Så vi ønsker å ha pluss. Og da trenger vi et annet pluss for vår utropstegn. Cool. OK. Ellers hva kan vi ønsker å gjøre? Vi ønsker ikke å gjøre noe, ikke sant? Så vi bare returnere falsk. Ikke hva jeg ønsker å gjøre. OK. Og så disse, av course-- hva som er viktig er å huske å lukke dine anonyme funksjoner. Så hvis du legger merke til, har vi noen funksjon her som ender her. Så vi må lukke dette første og legge et semikolon. Og så dette her har å gjøre med denne anonyme funksjon, så vi lukke den der. At kne-jerk reaksjon av sparing. Ja. PUBLIKUM: Er det en grunn at-- bare i alle eksemplene i Java som jeg har sett, har vi de første klammeparentes på samme linje som den funksjon? SPEAKER 1: Det er stilistisk. Yeah. Og faktisk, hvis du tar 61, vi gjøre alle våre klammeparentes på den måten. Huh? PUBLIKUM: Hvis vi gjøre det på den PSet, er så ille for stil? SPEAKER 1: Nei. Vi har eksplisitt fortalt dere å gjøre dette. Men faktisk, er denne typen av den dominerende konvensjonen i en masse C klasser og Javascript og jQuery. Så åpenbart, jeg er sure-- og faktisk, hvis jeg var å gjøre dette problemet helt blind uten å ha sett på det, Det er sannsynligvis svært få måter jeg ville ha fått dette. Jeg kan ha vært like, OK, kanskje jeg trenger å ta noe som er en inngang. Og jeg tror at det kunnskap som, som, OK, hvis jeg ønsker å få noe fra en form som har en ID, Jeg viser til det på denne måten, Jeg vil nok få det. Jeg kan få dette. Men egentlig, det eneste som jeg tror Jeg ville virkelig få er denne retten her. Så det er litt viktig å vet, som med noen vanskelig test, du slags velge dine kamper, ikke sant? Hvis du vet at du ikke kommer til å få den første delen for jQuery, som jeg sa, anta at du har denne verdien og gjøre det du kan med det. Og hvis du har tid, kan du gå tilbake og prøve og fylle i stykker. Men ikke la et spørsmål som dette virkelig bog deg ned. Fordi hva? Dette var ett spørsmål om jQuery ut av hele eksamen. Så ja, det ville være flott om du fikk den. PUBLIKUM: [uhørlig] deg er velkommen til å bruke jQuery. SPEAKER 1: Du er velkommen til å bruke jQuery. PUBLIKUM: OK. [Uhørbart]. SPEAKER 1: Hvordan vil du ikke bruke det? Jeg måtte se opp all min Script. Det er faktisk mye lettere, Jeg tror, ​​for å bruke jQuery, fordi jQuery faktisk reduserer Mengden av Java du skrive sannsynligvis ved, som halvparten. Så vår kode vil trolig være dobbelt så lang tid, uten at. Så hvis du recognize-- den største ting å ta unna dette problemet er mønstrene. Hvis du får tilgang noe fra et skjema, du kommer til å bruke anførselstegn, hasj, uansett hva du prøver å få tilgang. Hvis det blir sendt, vil du å bruke noe sånt som en .submit. Er du sannsynligvis kommer til å bruke en anonym funksjon i det. Hvis du faktisk trenger verdien av noe, du kommer til å gjøre sitater, hasj, hva det feltet er, .val. Og gjenkjenne mønstre sånn går å være langt mer nyttig enn egentlig å vite nitty modig. Ja. PUBLIKUM: Så hvis det brukeren sender inn sine navn og det går gjennom den uttalelsen, vil det gå ned og returnere falsk etter dette? SPEAKER 1: Nei, fordi varselet du kan tenke på det som en retur. Yeah. Så det vil gå ut. Yeah. PUBLIKUM: Kunne du [? plassere?] parente av sender, parentes, noe? SPEAKER 1: Jeg gjorde det, tror jeg. Denne er stengt akkurat her. Og så dette blir stengt ned her. PUBLIKUM: Å, det. OK. SPEAKER 1: Selvfølgelig, lite, små syntaktiske ting sånn, vil vi sannsynligvis bare sirkle det og være like, ikke glem parentes. Men ja. OK. Har vi en annen at vi ønsker å gjøre? Visste dere få det binære treet en? Ønsker vi å gå over den? Jeg føler meg som binære trær og Doms bør være punkter at dere får ganske enkelt. Jeg vil ikke at du å miste poeng på det. OK. La oss gjøre dette DOM her. Jeg skulle ønske jeg hadde min Surface så jeg bare kunne tegne på skjermen. Det er det jeg pleide å gjøre i fjor. OK. Så som jeg nevnte, vi snakket om DOM, Document Object Model. De sannsynligvis kommer til å gi deg noen litt av tekstutdrag som dette og ber deg om å lage et tre for det. Og dette bare har å gjøre med rennende gjennom kodene. Så la oss prøve og gjøre dette. Også, som per vanlig, hvis dere gjøre disse testene, som jeg sterkt anbefaler at du gjør som praksis, noen av dem som du liker, Jeg virkelig ikke får det er skjer her, bare, selvfølgelig, send meg en e-post med et spørsmål, og jeg vil forklare så godt jeg kan. OK. Vi har noen dokumenter, og vi har HTML. OK. Så da vi bare analysere kodene her, ikke sant? Så hva ser vi comes-- hva er de to underoverskrifter i henhold til HTML? Spesielt fordi de er rykket inn på riktig måte? Hode og kropp. Ah. Hode og kropp. Lovely. Så da la oss starte her med hodet. Hva som er under hodet? Hva er vår neste tag? Tittel. Og deretter innen tittel, quiz. OK. Så bokstavelig, det er bare vandre gjennom kodene, OK? Så hvis vi har kroppen, som vi går gjennom, Kroppen har tre ting i det, ikke sant? Det har tre divs. Hver div får sin egen lille boksen. Og hva er i første div? [Uhørbart] Og så den neste er midten, som jeg bare kommer til å forkorte. Og deretter den siste er bunnen. Så egentlig, det er bare å gå gjennom. Og fordi vi kommer til å gi du HTML som er riktig innrykk, kan du bokstavelig talt bare kjøre gjennom og være som, OK, her er HTML. Så dette er den ytterste hjørne, eller lengst til venstre, så det må være sin egen greie. Dette er på samme innrykk. Så vi vet at hodet må være på samme nivå som kroppen, men under HTML. Det er det vi har her. Hode og kropp er søsken, men de er under HTML. Og da har vi bare gå inn i hver av disse. Så hodet har tittel, som har quiz, som vi ser her. Og så, i dette tilfellet, har vi legeme, som har disse tre linjer. Så disse er alle søsken alt under kroppen. OK? Så forhåpentligvis når du ser noe sånt som dette, er du liker, ja, jeg bare kommer til å tegne et tre. Det kommer til å bli stor. OK. Så ville forsikre dere visste det. Så hvorfor ikke vi gå til 32 med vår binære treet? Fordi når du forstår en binær søketre, det er egentlig ikke så ille. Så Everett, kan jeg erase-- jeg mener, disse er alle på nett, også. Så hvis du har noen spørsmål. Mistet en liten plass der, men det er OK. Så binært søketre er bare en måte å organisere data ikke i en matrise, der roten er alltid større enn venstre barn og roten er alltid mindre enn den høyre barnet. OK. Så vi har denne store søketre her. Vi har disse tallene, 34, 59, 20, 106, 36, og 52. Og vi trenger å organisere dem på en slik måte slik at roten er større enn alt på venstre side og det er mindre enn alt på høyre side. Og typisk, hva du ønsker å gjøre er å prøve og finne noe om i midten. Med binære søketrær, kan du ha å leke seg litt med det. Men i dette tilfellet, la oss bare anta at vi vet dette første. Så 36 er vår første her. Vanligvis ville jeg prøve og velge noe om i midten som vil sannsynligvis gi de beste resultatene. Så nå vet vi at alt på denne side må være mindre enn 36. Men også hva du kan se er at vi har to flekker enn her. Så hvis vi vet at vi trenger to tall som er mindre enn roten, så du kan bare bestille disse og å velge den tredje rekke. OK. Så hvorfor ikke vi starte med denne siden? Så hvis vi vet at alt på denne side må være mindre enn 36-- men hvis vi ser på dette, vi vet at dette tallet må være mindre enn dette tallet, ikke sant? Fordi dette nummeret her er på høyre side. Og husk, akkurat som i våre større tre, alt på høyre må være større enn ved roten. På denne måten, vet vi at alt som er i dette behov å være større enn det som er her. OK? Så vi har to valg for disse to bobler. Vi har 32 og 34-- eller lei meg. 20 og 34. Så hvordan tror du vi kan sette disse i? Hvis dette må være større enn dette, det betyr at vi ønsker å har 20 her og 34 her. OK. Så på samme måte, ser vi på denne type sub treet. Og vi sier, OK, ikke har vi 36. Vi har 106, 52, og 59. Høyre? I dette tilfellet er her, vi vet at dette må å ha en ting som er større enn det og en ting som er mindre enn det. Høyre? Så hvis vi sette disse i orden, det er bare om å finne den midterste verdien igjen. Så vår midterste verdien er 59. Så da sier vi, OK, hva er mindre enn 59? Vel, det er 52. Og hva er større enn 59? Vel, det er 106. OK? Så det er bare litt som et puslespill. Det hjelper vanligvis, spesielt i små trær som dette, hvis du bare bestille det, hvis du vet hvor mange som er på venstre og hvor mange som er i rett, kan det bare tillate deg å velge hva bør være på roten. Og så kan du snill av arbeide derfra. Mm-hm. 33? Sikker. OK. Så vi ønsker å skape en node eller et binært søketre. Og la oss se på hva som kan være i det. Og jeg tror dette vil faktisk være vår siste problem. Ah. OK. OK. Dette er som hva vi kan tenker på som en node, ikke sant? Vi har noen verdi, og vi vet at det vil enten har venstre og høyre barn. Binære søk tree-- det betyr at den har, på de fleste, to barn. OK? La oss tenke gjennom måten vi definert en lenket liste, ikke sant? Vi hadde noen int som representerte verdi. Vi hadde noen peker som representerte hva det skulle neste. Binært søketre er svært like. Vi har fortsatt noen verdi, n, at vi gir det, ikke sant? Og da jeg trakk disse svært eksplisitt med piler, fordi de er effektivt pekere. OK? Så n er vanligvis hva? Det er noen verdi. Hva gjør vi vanligvis utpeke den som? En int. Så vi har litt int n, eller int verdi, eller hva du vil kalle det. Og så har vi venstre barn og retten barnet. Høyre? Og vi vet at det de er point-- hva er det de peker på? De peker til andre noder, ikke sant? Så hvordan ville vi erklære en node peker? PUBLIKUM: [uhørlig]. SPEAKER 1: Mm-hm. Og vi kommer til å ha to av dem, ikke sant? Og så kan vi bokstavelig talt trenger venstre for venstre barn og til høyre for høyre barn. Actually-- beklager. Fordi vi trenger struct. Så struct er fordi vi ikke har ferdig erklære en node ennå. Så node er innenfor her. Det er litt som en rekursiv definisjon, ikke sant? Så når vi er innenfor denne definisjonen, vi er ikke ferdig med å erklære node som strukturen, så vi må gjøre struct node bare å si, ja, vi er faktisk henviser tilbake til oss selv skriver ting. Det som en gang det er opprettet, vil det være fint. Så hvor stor tror dere dette er? Hva er størrelsen på denne strukturen? 12. Hvorfor? Presist. Og faktisk en av første spørsmål man Quiz One er om størrelser, noe som er grunnen til at jeg spurte. OK. Vi kommer til å ende, fordi den DCE vil kjefte på meg hvis vi ikke gjør det. Men hvis dere har noen spørsmål, selvfølgelig, send meg, gi meg beskjed. Dere kommer til å rocke den. Jeg er super spent. Dere vil bli gjort som av onsdag, og deretter du får til å fungere på den endelige prosjekter, og det kommer til å bli kjempebra. Jeg vil være her neste uke 04:00 til 04:30 hvis dere ønsker å komme plukke opp dine quizer. Hvis du ønsker å finne meg en annen gang eller bare koordinere et annet tidspunkt, gjerne gi meg beskjed. Ellers er dette vår siste delen. Så det var flott å se dere. Vennligst ta mer godteri. Og lykke til på din quiz.