[Musik spiller] SPEAKER 1: Okay, alle. Velkommen til dit sidste afsnit med mig. Det har været helt semester. Jeg kan ikke tro det er ligesom, uge 12 eller 11, noget lignende. Men fordi det er vores sidste sektion, vi har masser af slik. Og jeg har tænkt mig at forsøge at prep dig så godt som jeg kan for din quiz på onsdag. Så sandsynligvis ikke den bedste måde at, lignende, ende sektion med quiz gennemgang. Men vi vil forsøge at gøre det sjovt. Og der er altid slik. Så forhåbentlig vil det gøre det bedre. Din quiz vil være temmelig meget det samme som Quiz Zero. Det kommer til at være den samme format, samme længde. Du vil være i rum spredt tværs af campus, fordi der er tæt på 900 af jer, og vi kan ikke alle hold dig i værelser som denne. Så sørg for at se på alle Quiz One dokumentation online på cs50.harvard.edu i aften eller i morgen aften. Sørg for at du ved, hvor du er hen, hvad du skal medbringe. Virkelig, du bare nødt til at bringe dig selv og en blyant, og du bør være fint. Spørgsmålene vil blive meget ens. Der vil sandsynligvis være et par multiple choice, et par korte svar, nogle kodning, måske nogle sand / falsk, matchende mulige ting. Så du skal ikke være for overrasket over formatet. Hvad kan være overraskende er den længde, som i de foregående år, har været meget længere. I mit år, jeg har ikke en eneste ven at jeg kan huske efterbehandling eksamen. Der var ligesom flere sider tomt. Så længde kan slags disorienting bare fordi i nogle år, har det været meget længere end Quiz One. Jeg aner ikke hvad det er vil være som i år, men det er noget at være opmærksom på. Derudover difficulty-- mennesker har en tendens at finde quiz One meget mere vanskeligere end quiz Zero. Igen, du ved, hvis du slags walking ud følelse lidt urolig, fordi du gjorde det ikke så godt som du troede du vil, eller du føler at du ikke gjorde gøre det så godt som du gjorde på Quiz One, huske på, at der er sandsynligvis en masse andre mennesker føler på den måde. Jeg var helt sikkert et af de mennesker. Quiz en, ligesom, kastede mig for en løkke. Og mine venner har denne store billede af dem på JP Licks slags med disse enorme hekseafbrændinger, at være som, Quiz One, og ser ud som de er i tårer. Så det er en generel følelse. Det er en hård test, det er en hård quiz. Det er klart, hvis du kommer ud og du føler at du rystet det, fantastisk til dig. Men ved, at du sandsynligvis not-- du er næsten helt sikkert ikke alene, hvis du gå ud følelse som, eh, sandsynligvis kunne have fået bedre. Det er hårdt. Mm-hm. Publikum: Hvor meget er det værd i forhold til [uhørlig]? SPEAKER 1: Det er værd det samme. Ja. Men igen, er det også kommer til at være påvirkes af, hvordan resten af ​​klassen gør, hvordan din afdeling gør, hvordan du har forbedret over tid. Grading er lidt af en sort boks. Så hvad det faktiske antal eller procent får ikke nødvendigvis kan lide direkte korreleret med karakteren du kommer til at få. Der er en masse faktorer, der går ind i det. Så med dette, vil vi gå igennem nogle quiz gennemgang. Jeg bare at køre dette ligesom sidste gang for jer. Jeg har alle svarene at quizze En af sidste år. Så hvis du fyre ønsker at trække at op på dine egne computere, hvis du har taget denne eksamen før, og du har spørgsmål, Jeg tænkte vi kunne bare gå igennem nogle af de mere vanskelige dem på det. Så vi kan tale om det, måske få lidt mere indsigt ind i intuition bag nogle af disse spørgsmål, hvordan man kan nærme sig dem. Samt, ligesom sidste gang, Jeg har en 100-slide dæk der har stort set alle af de dias, som jeg har forberedt tidligere sektioner siden dit sidste quiz-- I har i dette dæk. Så vi kan gå igennem temmelig noget at vi har talt om forhånd, at måske du ønsker lidt mere afklaring på. Vi kunne gøre det først. Men ellers er jeg super glade for blot at slags arbejde gennem disse problemer med dig. Og jeg er virkelig her til fokusere på, hvad du fyre tror ville være mest vigtigt at fokusere på. Ligesom naturligvis alle det her er vigtigt. Især som vi går igennem Quiz One, Jeg vil helt sikkert påpege ting som, Åh, dette kan være noget du virkelig ønsker at vide eller du ønsker at have på din snyde ark. Jeg vil fortælle dig ting som vi slags gå igennem. Så på dette notat, er der nogen ting at du fyre vil gerne gå over? Også, hvis jeg ikke har det i mit dæk, vi kan trække op noget på nettet, eller vi kan forsøge at gøre op et eksempel på flue. Men eventuelle begreber, som du fyre er lidt fuzzy på. [? Brian,?] Gjorde du have-- PUBLIKUM: Åh, er det kumulative? Ligesom, er de ting på Quiz Zero vil være her? SPEAKER 1: Det er kumulative, men det er meget mere af en vægt på ting siden dit sidste quiz. Så selvfølgelig, du fyre har lært om variabler, og sløjfer, og betingede. Og det er ikke ligesom dem, der bare gå væk, fordi de er naturligvis uløseligt forbundet med alt andet, som vi har lært nu. Der kan være et spørgsmål på den slags, eller der kan være et spørgsmål på forskellige søgninger. Eller der kan være et par spørgsmål om måske noget du har at gøre med at kompilere eller forskellige fejl. Men hvis du har kigget på Quiz En fra sidste år, du vil opdage, at det er meget fokuseret på ting der være sket siden dit sidste quiz. Hvorfor er den dør altid låst? Det er virkelig generer mig. Fordi jeg altid forsøger at gå igennem den. Så det er temmelig meget hvordan quizzen vil være. Så er der nogen begreber, jer vil gerne gå over? Eller vi kan springe lige ind bare at kigge på Quiz One fra sidste år og slags går gennem praksis spørgsmål der. Vi kan også skifte frem og tilbage. Dette er ikke en engangs-slags ting. Eventuelle spørgsmål? Ja. PUBLIKUM: Må jeg bede en spørgsmål om another-- SPEAKER 1: Endnu en? PUBLIKUM: Dette er fra et andet år. SPEAKER 1: Ja. Vi kan også gøre endnu et år. PUBLIKUM: OK. Så på 2011. SPEAKER 1: 2011. Ooh, det var året før mig. Lad mig trække dette op. PUBLIKUM: Jeg tror. SPEAKER 1: Dette aspekt Forholdet er at smide mig ud. PUBLIKUM: 11 og 12. SPEAKER 1: 11 og 12. OK. Nå, her, hvorfor vi ikke gør det? Du guys-- alle bare tage et par minutter til at se gennem quizzer. Og vi vil udarbejde en liste. Og så vil vi gå igennem dem. Okay? Mens jeg får en masse af disse ting sat op. OK. Jeg skal bare skrive ting ned på papir. 2011, 11 og 12? Jeg er bare kommer til at ændre dette display. OK. Det var bedre. Dette overforbrug. Ok. Alle andre har nogen at de gerne vil starte med? Også glemte at sige, hvis du ønsker mere af en flok folk taler på dig og bare at give dig en revne kursus i de sidste seks uger vi kører en anmeldelse session fra 7:00 til 08:30 i aften i det nordvestlige B103, hvilket også skete sidste gang, hvor det vil være mig, Hannah, Daven, med Gabe og Rob slags hjælper fra sidelinjen af ​​bare lidt at smide alle de oplysninger, du måske ønsker at have på din snyde ark, skråstreg, kender generelt der. PUBLIKUM: Det er også online, ikke? SPEAKER 1: Det er også online. Så du kan også holde sig ud af dette icky vejr, gå til din dorm, og live-streame det, hvis du gerne vil. Jeg er sikker på en masse people-- jeg ved, at jeg ville være at gøre det, hvis jeg var i dine sko. OK. Så hvorfor skal vi ikke starte med-- mens du guys-- forhåbentlig du søger igennem. Hvis ikke, kan jeg bare begynde at arbejde gennem forskellige ting på Quiz One fra sidste år, medmindre du har specifikke spørgsmål. Vi begynder med dette spørgsmål her om stakke. Det gør alle huske form af, hvad en stak er? Hvordan vi tilbøjelige at-- kan nogen bare give mig en generel beskrivelse af en stak? En type datastruktur. OK. Så det er en af ​​de datastrukturer, vi forventer, at du være bekendt med-- ligesom stakke, arrays, køer, osv. Ja. PUBLIKUM: Ligesom First I, Last Out, noget. SPEAKER 1: Det er First In Last Out. Præcis. Så en stak er nøjagtigt hvad vi tendens til at tænke om, når vi tænker af en stak af ting. Så en stak af plader. Den første plade du lægger ned vil være i bunden, og det vil være den sidste en, som du fjerner til sidst. Fordi de stak op. Og du tager én ud af bunden, typisk ting ned og bryde. Så stabler du kan tænke på ligesom en stak plader. Eller det eksempel, vi altid gerne bruge er i D haller, har du bakkerne, de er alle stablet op, og man tager fra toppen. Så den sidste i den første ud. OK. Så i tilfældet her, vi ser vi have-- Jeg spekulerer hvis jeg rent faktisk kan zoome ind en lille smule. Så vi har denne konstruere her. Right? Så du har nogle struct, der har nogle int antal kapacitet. Så hvad gør vi mener, der repræsenterer? Dette er et array med størrelse KAPACITET. Så det er virkelig repræsenterer vores stak i almindelighed. Vores stack er egentlig bare en array med nogle bestemt antal det er dens max, dvs. dens kapacitet. Og så har vi nogle int størrelse, som vil spore størrelsen af ​​vores stack hele kurset på, når vi bruger den. OK? I dette tilfælde lige her, siger vi, at vores stack størrelse er blevet initialiseret til 0. Så vi har en tom stak lige nu. Og så ønsker vi at afslutte gennemførelsen af ​​pop således at det returnerer int i toppen. Og så hvis den er tom, den returnerer negativ 1. OK? Så jeg vil jer bare til at tænke om, hvad vi kunne gøre der. Hvad kan være en af ​​de første ting, vi ønsker at kontrollere? Der er en stor ting her. Når det says-- hvis der er nogensinde nogen Hvis erklæring, som "Hvis stakken er tom," eller "Hvis dette returnerer null", eller "Hvis dette er, hvad" - undskyld. PUBLIKUM: Skriv en If-sætning. SPEAKER 1: Right. Du kunne skrive en If-sætning. Og det er formentlig en af ​​de første ting, du vil kontrollere. OK. Når de giver dig lidt ligesom et hjørne sag som dette, det er typisk en af ​​de første ting du kommer til at tjekke i din kode. Også noget anerkender for quiz er, hvis du har en ineffektiv måde at gøre noget, så skriv det ned. Fordi vi ikke klassificering du på design, er vi klassificering dig på korrekthed for quizzer. Så selvom du ved, at det er en super dårlig måde at gøre noget, men det virker, skrive det ned, OK? Bogstaveligt, jeg har set børn sidste year-- hvis man ser på sidste års én, de er ligesom Gør Mario pyramide. Og de bogstaveligt talt lige gjorde "print, hash, print, hash, hash, print, hash, hash, hash. " Men det er korrekt. Det er, hvad vi fortalte det til, så du ikke kan tage point fra. Hvis du er ned til wire, naturligvis, du ønsker at få en mere elegant løsning, og den mere elegant løsning vil formentlig være mindre kode, hvilket betyder, at du sandsynligvis har en større chance for at have ret. Men hvis du er ligesom, du ved hvad, nej, jeg har ikke tid, jeg ved, det er en løsning, det er ikke den bedste, så skriv det. Og du kan endda skrive på side, jeg ved, det er forfærdeligt, men jeg ved det virker. Så bare en heads-up. OK. Så selvfølgelig, første er denne Hvis redegørelse. Så hvad gør vi mener denne Hvis erklæring bliver? Og faktisk, lad mig åbne min store Sublime editor. Jeg har tænkt mig at kode dette og derefter vise jer, når det er gjort. Så int pop. OK. Så hvis vi har denne int pop void-- så åbenlyst, dette er en funktion, der tager i ingenting og returnerer et heltal, ikke? Så det er bare at tale om denne stak, som vi har oprettet. Så bare oversætte denne sidste sætning, "Hvis stakken er tom, pop skal returnere negativ 1, "hvordan kan vi gøre det? Så Hvis hvad? Hvordan kan vi vide, at stakken er tom? Det er bare størrelse er lig med 0. Stack.size lig 0. Også, jeg slags skrive blind her. Så hvis jeg gør nogen typos-- åh, også glemte at nævne dette. I sidste uge, jeg helt regnet ud hvad vores problem var med JavaScript. Må ikke udnytte I og D. Du bør kun kapitalisere I og få element af Id. Og det var det hele fejl. Så hvis du fyre gå tilbage og faktisk se gennem min kode, hvis du bare gøre alt, hvad en små bogstaver d, "glemmer element af Id," det vil virke. Så som jeg lovede, jeg var meget tæt på. Jeg bare kapitaliseret noget Jeg var ikke meningen, at, som Jeg er sikker på du fyre havde i din sidste Pset. Så hvis vores størrelse er lig med 0, hvad skal vi gøre? PUBLIKUM: Retur negativ 1. SPEAKER 1: Retur negativ 1. Cool. Så nu, hvad gør vi? Vi ønsker at pop noget fra. Nu dette er tilfældet hvor vi har noget. Vores størrelse er større end 1 eller større end 0, ikke? Vi har faktisk noget der. Så det, vi ønsker, er at vi ønsker at vende tilbage lige her. Vi kommer til at sige, vi ønsker at returnere toppen af ​​stakken. OK? Så hvordan kan vi gøre det? Hvordan vi tilbage i toppen af ​​stakken? Husk, vores stack er blot et array, ikke? Det har nogle kapacitet at vi har givet det. Som vi har lagt ting on-- eller faktisk, vi kommer til at skrive "push" efter dette. Hvis tingene er i there-- måske et billede vil hjælpe. Hm, jeg kan lide store kridt bedre. Så if-- og du kan bare tænker på dette som vores stak. Så det er 0, 1, 2. Jeg ved ikke, hvorfor min bokse bliver mindre. Men der. OK. Så dette er nogle stak med en kapacitet på 5. Og lad os sige vi har noget her, og vi har noget her. Så på dette punkt, vores størrelse er lig med hvad? 2. Og hvis vi ønsker at pop noget ud af det, der betyder, at vi ønsker at få slippe af denne ret her. OK? Så hvordan ville vi vende tilbage denne værdi? PUBLIKUM: Størrelse minus 1. SPEAKER 1: Right. Så størrelse minus 1, eller du kunne gøre størrelse minus minus. Men vi kan ikke bare gøre størrelse. Det er inde i en struct, ikke? Så stack.struct. eller stack.size. Det er vores indeks lige der. OK? Og så hvis vi ser tilbage på vores struct her, Vi bemærker, at for at faktisk adgang til array, vi skal gøre stack.numbers faktisk få adgang til denne matrix. Så returnerer toppen af ​​stakken. Men noget at-- hvis du fyre ser på svaret nøglen, dette er alt, hvad de give dig. Så dette er det. Men jeg kunne hævde, at de er miss-- ooh, ikke hvad jeg ønskede. Jeg kunne hævde, at de er mangler noget, because-- ja. PUBLIKUM: Formindsk størrelse. SPEAKER 1: Right. Vi har brug for at mindske vores størrelse nu. Så hvad er svært om dette er, når du vender tilbage noget, din funktionens går exit, ikke? Så det, vi kan gøre, er faktisk formindske vores størrelse først. Og så kan vi bare stack.size. Vi kan bare bruge stack.size som vores indeks, kunne vi ikke? For hvis stack.size er 2, vi formindske det. Og så det er 1, som er vores faktiske indice. Når vi slippe af med denne, vi faktisk kun har én ting i vores array. Så det gør begge dele. Publikum: [uhørligt]? SPEAKER 1: Nå, i dette tilfælde, Vi lige vendt tilbage elementet i toppen, der er på vores størrelse, der er på toppen. Men vi har ikke gjort noget for at den størrelse efter vi fjernet dette element. Dette har ikke ændret vores størrelse endnu. Dette betyder faktisk sagens natur ændre vores størrelse. Men for at gøre det lidt klarere, du kunne gøre stack.size minus minus. For mig, det gør det, ved jeg ikke, lidt mere klar at-- ah, at du rent faktisk er ved at ændre størrelse og returnere det. Den anden måde var fint, fordi du var skiftende og returnering på samme tid. Men dette er blot en anden måde at skrive det, at jeg ville vise jer. Giver det mening? Stakke, tror jeg, er meget lettere end køer. [Griner] OK. Har du har specifikke spørgsmål omkring 11 og 12, eller bare-- PUBLIKUM: Jeg tror, ​​det var stakken. SPEAKER 1: Stakken størrelse? PUBLIKUM: Ja. SPEAKER 1: Gotcha. OK. Ja, kan du gøre det i en af ​​disse to måder. OK. Så nu har vi den anden. Det er virkelig underligt, ligesom ikke at have dette på min skærm. Så hvis vi ser her, vi nu ønsker at afslutte gennemførelsen af ​​skubbe, som faktisk sætter noget går og indsætter noget ind i vores kø, eller i vores stak. OK? Så hvis vi bemærker, at vi har et par ting. Vi har vores store-- hvis alt andet, hver gang vi har en af ​​disse, du fyre bør i det mindste få halvdelen et punkt, fordi alt hvad du skal gøre er konvertere dette til C. Og de giver dig halvdelen af ​​det. Så "hvis en stak er fuld eller den er negativ, skub derefter skal returnere falsk. " OK? Så vi kun ønsker positive heltal at være på vores stack. Okay? Og det kommer til at enten returnere sandt eller falsk. Så vi bør [uhørligt] bool. OK. Så oversætte. Publikum: [uhørligt]. SPEAKER 1: Åh, tak. Ja. Det er derfor, jeg har jer. Int n. Perfekt. Fordi vi putter noget på vores stack. Vi har faktisk brug for nogle tal. OK. Så bare tage det sidste linje, de gav os vores slags corner tilfælde hvad tror du, vi har her? Det er klart, vi vil have nogle If. OK. Så sagde vi, hvis vores stack er fuldstændig eller hvis n er negativ. Så sandsynligvis lettest at starte med, så hvis n er mindre end 0 eller-- huske dit dejligt AND og OR operatører der. Hvordan ville vi kontrollere at se, om vores stack er fuld? Hvad sker der? PUBLIKUM: Størrelse tilsvarende kapacitet. SPEAKER 1: Præcis. Perfekt. OK. Og hvad ønsker vi at gøre der? PUBLIKUM: return false. SPEAKER 1: return false. Perfekt. Så halvvejs der, ikke? I det mindste, du fyre vil have halvdelen af ​​denne. Så lad os tænke over dette. Så dette er stakken vi starter med. Vi forsøger at sætte et element på her. Vi har en størrelse, der er svarende til 2 lige nu. Vi har en kapacitet, der svarer til 5. Og lad os sige, at vi har nogle n, der er lig med 3. Så vi skal indtaste 3 ind i dette rum. Og vi skal indtaste det i indeks 2. Right? Så hvordan kan vi gøre det? Forsøger at assign-- vi ønsker at få adgang til vores array. Så stack.numbers. Men hvad indice ville Vi ønsker, at dette skal være? Publikum: [uhørligt]. SPEAKER 1: Ja. Stack.size. Og vi ønsker, at til lige n, ikke? Publikum: [uhørligt]. SPEAKER 1: Jeg var faktisk bare at kigge på det. Det synes jeg er forkert. PUBLIKUM: Vil du ikke have det rum forbi den aktuelle størrelse? SPEAKER 1: Tja, hvis vi ser her, vores størrelse på dette tidspunkt er 2. Vi vil have det til at gå i indeks 2, fordi dette er toppen af ​​vores stak. Så jeg vil sige, at det bør være stack.size, og så ville du øge stack.size. Er alle enige? Jeg tror, ​​jeg enig i. Du fyre kan argumentere med mig, hvis du gerne vil. Eller ikke argumentere, men vi kan diskutere dette. Publikum: [uhørligt]. SPEAKER 1: Mm-hm, er, hvor det er åbne på grund af nul indeksering. Så mens der i den første del, Jeg troede, de var forkert, og de var faktisk ret, dette del, jeg tror faktisk, de var forkerte. Jeg vil sige, du skal absolut input det her. Jeg tror, ​​vi alle er enige vi har en størrelse på 2. Det er præcis, hvor vi ønsker vores nye nummer at gå. Så stack.numbers på stack.size bør være lig n. Og så ville vi øg stack.size. ++. Og hvad ønsker vi at gøre? Der er en sidste ting, vi er nødt til at gøre, hvis vi med succes indsat denne? Retur sandt. Og nu du er færdig. Så jeg har lyst til det var det hele minus minus stack.size og stack.size ++ som rodet tingene op. Ugh. Jeg keep-- jeg har denne rygmarvsreaktion tendens til altid ramt Kontrol, S, fordi jeg aldrig ønsker at miste nogen af ​​mit arbejde. Men jeg behøver ikke at gøre det nu. OK. Så det var stakken. Cool. Er der noget? Fandt du fyre finde nogen andre spørgsmål, som du gerne gerne gå fra tidligere quizzer? Hvis ikke, kan vi slags begynde at tale gennem Quiz En fra sidste år. Ja. Publikum: For det første del, jeg ikke rigtig forstå, hvordan du slettede nummeret. Er det ikke stadig? SPEAKER 1: Antallet er der stadig. Men hvad sker der, er, at fordi du har vide det, at toppen af ​​din stack er her, når du går for at tilføje noget på stakken, vil det bare erstatte det. PUBLIKUM: Åh, OK. SPEAKER 1: Ja. Så det er ligesom han glemte, og det er der type ting, selv om den er der. Publikum: [uhørligt] eller noget? SPEAKER 1: Nej. Fordi vi er i en array, behøver du ikke at bekymre om-- du bare tilsidesætte det, når du har brug for det. Ok. Andre spørgsmål? Hvis ikke, vi bare at begynde at arbejde igennem. Ja. PUBLIKUM: Nå, det ene er på 2013 men bare at gå gennem SQL ting. SPEAKER 1: SQL? OK. Så dette er 26 til 29. PUBLIKUM: Ja. SPEAKER 1: OK. Dejligt. Lad os trække dem op. Åh, se. Har du fyre nyde Steve Ballmer taler, ved den måde? Det var temmelig sjove, efter min mening. Jeg elsker, at hver gang jeg bringer op CS50 s hjemmeside under afsnittet, det er ligesom, åh, se afsnit. Og jeg er ligesom, mm. PUBLIKUM: Kan vi gøre det? SPEAKER 1: Vi vil gøre det i slutningen. Hvordan er det? Fordi jeg ved, du fyre har altid ønsket at. Så vi vil gøre det i slutningen. Et spørgsmål. Publikum: [uhørligt]. SPEAKER 1: Det bliver en meta sektion. PUBLIKUM: Det er ligesom 5 sekunder. PUBLIKUM: Virkelig? PUBLIKUM: Det er ligesom 20 sekunder. [Indskyde VOICES] [Latter] SPEAKER 1: Jeg kan godt lide, at du allerede har gjort det, hvilket er det, der gør mig gladere. OK. 26. OK. Faktisk, vi bare gå til spejle det nu, for jeg kan ikke. Det er irriterende. OK. Nu kan jeg se alt. Dejligt. OK. Så selvfølgelig bør dette bringe tilbage store minder fra [? CSG?] Finance. Halvdelen af ​​dig om har din sorteres nu. Den anden halvdel vil jeg komme til meget, meget snart, lover jeg. Så vi har nogle SQL tabel det er Konti her. Sandsynligvis ligner dine guys brugertabellerne. Og vi har nogle tal det var en primær nøgle og repræsenterer en 12-cifret kontonummer. Og balance er, hvor mange penge de har. Og den standard værdi er 100. Og de giver dem 100 dollars enhver gang de åbner en konto. Jeg ønsker min bank gjorde det. OK. Så vi ønsker at færdiggøre skema ved angivelse siden nummer i balance passende SQL-type. Så hvad tror du fyre tror ville være lidt ligesom din panikhandling for typer for disse to? PUBLIKUM: Int. SPEAKER 1: En int. OK. Og så for en balance? Decimal. OK. Så decimal ret. Int er tæt. Kind af de store ting er dette understregede 12-cifret kontonummer. Når vi har noget der er større end otte cifre, de vil have dig til at bruge store int, som jeg tror is-- PUBLIKUM: Er det bare SQL? SPEAKER 1: Det er den eneste gang, jeg har hørt det er SQL-- ligesom ved hjælp af en stor int. Det er bare at give dig en lidt mere præcision, sikre, at du ikke er overfyldte type ting. Helt ærligt, jeg tror, ​​det er afgjort en af ​​dem hvor det er ligesom, åh, det er beregnet til mennesker der har lidt mere kendskab til SQL. Vi har aldrig talt om store int'er i din Pset. Så det er lidt ligesom jeg er temmelig sikker hvis du lægger int, det var halvt kredit. Og som jeg sagde før, er der går at være nogle spørgsmål, der er lige beregnet til at rejse dig op, så at ikke alle får 100. Fordi selvfølgelig, der er nogle mennesker i CS50 der har gjort det i lignende otte år og du er ligesom, hvad laver du? Men ja. Decimal for balance var det indlysende. Og så stor int for nummer, bare fordi af denne, ligesom understregede 12 cifre. Når alt er i fed eller det er understregede, ligesom, er opmærksomme på det. Vi laver ikke, at bare fordi. OK. Så "antage, at banken pålægger en $ 20 månedligt gebyr på alle konti. Med hvilken forespørgsel kunne banken fratrække 20 dollar fra hver konto selv om det følger af nogle negative saldi? " Så lad os starte simpelt. Vi har fire vigtigste kommandoer for SQL, der er? Har du fyre huske fire store dem, som jeg fortalte dig? UPDATE, DELETE, SELECT, og indsæt. Perfekt. Fik det. Så hvad gør vi mener kan være mest nyttig for denne ene? Vi are-- UPDATE. Præcis. Så opdatere, fordi vi leder på konti, der allerede eksisterer. Så husk vores generelle slags ting er opdatering. Og hvad der kommer efter UPDATE? Vi har nogle tabel at vi refererer. Så hvis jeg trækker op Sublime igen-- UPDATE. Så dette er et generelt format. Så vi har UPDATE tabel. Og hvad er så det næste, vi har? Du kan gøre hvor. Og så har vi nogle kvalifikationskamp her. Og hvad har vi så? Vi har nogle SET-- noget svarende til noget. Blah lig bla. Opdateret bla. Right? Så det er ligesom den generelle idé for nogle opdatering. OK? Så lad os begynde at udfylde dette i med hvad den burde være. Så hvad tabellen taler vi om? Konti. Og så i dette tilfælde, hvad er virkelig cool er vi taler om specifikke brugere på vores konto, eller taler vi om alle brugere? Vi taler om alle brugere. Så i dette tilfælde kan vi blot slette denne WHERE kvalifikationskamp. Den WHERE er kun, når du vil at begrænse, hvad du ændrer. Hvis du ønsker at ændre hele tabel, kan du bare droppe det. OK. Så nu er vi på vores SET del. Hvad ønsker vi at ændre? PUBLIKUM: Balance. SPEAKER 1: Balance. Og vi vil at-- hvordan er vi kommer til at ændre balance? Vi har en $ 20 gebyr, ikke? Minus 20. Og de sagde, at det er OK, hvis vi har negative balancer. Så i dette tilfælde, er det ikke nødvendigt at gøre yderligere fejlkontrol. OK? Det er bogstaveligt talt alt hvad du skal gøre. Cool? OK. Så lad os gå igennem den næste. "Med hvad SQL forespørgsel kunne bank hente kontonumre af sine rigeste kunder balancerer større end $ 1.000? " Hvis din bank og dine rigeste kunder er kun dem med over $ 1.000, Jeg føler at du er gør noget forkert. Ligesom, hvordan en bank overleve på det? Ligesom, at renter, ikke helt nok. OK. Med denne slags ting, hvad gør du tænker, vores fire funktioner, tror du, vi kommer til at bruge? SELECT. Perfekt. SELECT. OK. Så vi vælge nogle identifikator fra tabel. Og så hvor tilstand. Så som vi går igennem disse, jeg bare at give jer en generel genopfriskningskursus på den generelle format af alle disse. Så vi vælge en slags i [? ting. ?] I dette tilfælde dette vil være typisk nogle kolonne. Så i vores tilfælde har vi nummer, balance. I din guys 'tilfælde, måske det var ID, navn, password. Enhver af disse kolonner, det er typisk hvad vi vælge. Så i dette tilfælde her, som slags søjle, hvad identifikator Vi trækker fra vores bord? Hvad betyder det beder os om? Den beder os for vores tal, ikke? De kontonumre. Så husk, bare nummeret i dette tilfælde. Hvis du fyre nogensinde haft fejlen, at lyse orange boks ville komme op. Og det var ligesom, uventet række i, ligesom, uanset hvad. Det er fordi du kaldte dit bord galt, ikke? Så vær sikker på, at du er ringer kolonnen korrekt. Så fra bord, vores bord er kaldet konti. Igen, sørg for du er henvisninger dit bord korrekt. Og hvad er vores tilstand her? Hvad leder vi efter? Vi ønsker, at vores rige mennesker. Ja. Så balance større end 1.000. Der du går. Det er din forespørgsel. Ikke alt for dårlig, ikke? OK. Så nu for vores sidste. Med det, vi breezing igennem. OK. Så nu "hvilken forespørgsel kunne banken tæt, dvs. slette "- behøver du ikke elsker, hvordan de bare gav dig DELETE-- "Hver konto, der har en balance på 0?" Jeg tror, ​​vi alle kan være enige vi er sandsynligvis skal bruge DELETE. Jeg er velkommen til at tage et hvilket som helst diskussion omkring det. Men jeg synes det er temmelig sikkert at sige, at vi kunne bruge SLET. Så vi kommer til at slette nogle brugere fra bordet, HVOR stand. Så samme slags ting som SELECT. Så i denne case-- åh, undskyld. Jeg burde DELETE FROM. Fordi DELETE vilje slette hele rækken. Så vi behøver ikke at tale om, hvor specifikke ting om en bruger er vi sletning. Hvis vi sletter en bruger, er vi slette alt om dem. Så i dette tilfælde, vi bare nødt til at udfyld vores WHERE og vores tilstand. Så vores tabel er kun vores regnskab tabel, som vi har gjort. Og hvad er vores tilstand her? PUBLIKUM: Balance. SPEAKER 1: Balance lig 0. Korrekt. Alle gode. Ja. Publikum: [uhørligt]. SPEAKER 1: So SLET selv sletter alt. Så mens med SELECT, SELECT tager i visse kolonner, du vil returneret. Hvis du ønskede alt om en bruger vendte tilbage, du bruger stjerne. Stjerne siger, vende tilbage til mig alt fra denne bruger. Eller hvis du lægger WHERE stjerne, at betyder bare give mig alt. Men DELETE sagens natur har det. Så hvis du siger, DELETE fra konti, hvor saldo er lig med 0, det kommer til at gå igennem. Og overalt denne balance er lig med 0, er det i sagens natur gør det. Det vil slette alt. Stjernen er mere for-- med SELECT eller UPDATE, det taler mere om den enkelte felter svarende til en bruger. Så når du vælger stjerne fra bordet, hvor ID er lig med 1, der vender tilbage til dig alt om brugeren med ID 1. Hvis du skulle gøre Vælg antal eller SELECT ID komma navn fra brugere Hvor id er lig med 1, at blot returnerer deres antal eller deres id og deres navn. OK? Så vi bruger stjerne i dette tilfælde til give os alt om en bruger. Og SLET sagens natur gør det. Det er ikke bare slette id, eller bare navnet, eller hvad. Ja, nej. Det bare sletter hele bruger. Så vi behøver ikke at bekymre sig om stjernen der. Hvis du ønskede at slette alt, kan du gøre det, og dette vil bare drop alt. Men typisk, du ønsker ikke at gøre det. Men hvis du nogensinde ønsker at slette alt, kan du gøre det. OK. Har du fyre fundet andre spørgsmål? Ja. PUBLIKUM: Kan du 26? SPEAKER 1: 26 vi lige gjorde. PUBLIKUM: Åh, 25, undskyld. SPEAKER 1: 25. OK. 25. Oh. De gør JavaScript. Åh, jeg kan ikke tro det. Jeg har tænkt mig at rode os op igen, gutter. OK. Vi fik denne. Vi kommer til at gøre dette arbejde. Ah, jQuery. Fun. OK. Så vi kommer til at fuldføre gennemførelse af websiden på en sådan måde, at hvis de besøger, input deres navn, og send formularen, de har denne store alarm vindue, der kommer til at blive vist. Så noget med alarmer, ved vi, at Vi er nødt til at bruge JavaScript. Yay, JavaScript. Og hvis de undlader at indtaste en navn, før du sender formularen, ingen advarsel skal vises. Så du kan bruge jQuery, men du behøver ikke at. Så jeg har tænkt mig at lade dig fyre arbejde om dette blot for et par minutter. Tænk over det. Og så vil vi kode det. Slash jeg vil forsøge at tænke på bedste måde at forklare dette svar til dig. Ok. Vi får det sat op. OK. Så vi bare at gå gennem dette, fordi jeg ved jQuery er lidt forvirrende. JavaScript. Det er lidt derude. Så det, vi kommer til at gøre, er [Uhørligt] faktisk løst dette problem med jQuery. Så hvis du kan huske, jQuery er blot et bibliotek der er bare bygget oven på JavaScript. Det er meningen at gøre din liv en lille smule lettere. Jeg ville helt sikkert, hvis du har tid, kigge over en lille smule af den dokumentation for jQuery. Men det er meget lig JavaScript. Det har fået lignende paradigmer, hvor man bruge denne dot operatør at kalde funktioner på objekter, som du har. Så det, vi har her, er for jQuery, du bør altid have denne slags af indpakning, som er $ (Document) .ready (funktion) funktion i parentes her. OK. Så det kunne være noget du ønsker på din snyde ark. Fordi i det mindste, kan du have wrapper til din jQuery. Og det vil i det mindste få du del måder der. Så på samme måde, som vi talte meget om JavaScript, og vi vil starte med at se på, hvad vi forsøger at redigere eller hvad vi prøver at ændre. Og det vil typisk være første ting, vi ville sætte i. Så i dette tilfælde, hvis vi går tilbage til dette her, og vi ser på vores her, vi har denne input, højre, denne id af input. Og vi ved, at der på baggrund på vores spørgsmål, vi er enten kommer til at kaste en fejl, hvis denne er tom, eller vi vil sætte dette i en indberetning, ikke? Så nok sikkert at sige, at vi er kommer til at håndtere input her. jQuery er meget ens i, at hvis vi tænker tilbage på CSS, noget med et ID vi ser på med en hash. Noget med klassen vi så på med en prik, ikke? Så på samme måde her, hvad vi taler om, er input. Vi så, at indgangene er et id i vores form. Så vi kommer til at henvise til det som sådan. Indgange. OK? Så når du er i tvivl, selv hvis du har ingen steder, hvis du virkelig i tvivl om, hvordan du nærme sig dette, A, har denne wrapper. Så starte der med indpakningen til jQuery. B, så sørg for at du ved hvad du ændrer. Og når du er i tvivl, sætte det i noget, og gør prik, hvad du tror du skal gøre med det. PUBLIKUM: Hvad er wrapper? SPEAKER 1: indpakning Denne første linie. Så dette siger, vente, indtil mit dokument er klar. Start derefter rode med tingene. OK? Så vi ved, vi rode med input. Så vi er ligesom, OK, input er vores. Det er vores ID. Så det er hvad vi er vil være på udkig efter. Og vi ønsker at se, hvad der sker når denne formular er indsendt, ikke? Så som vi måske tror, vi har nogle .submit. Så .submit bare siger, OK, denne formular at vi har refereres med hash input, når det er indsendt, udføre noget andet. Så vi kommer til at have en vis funktion. Bemærk vi har anonyme funktioner her. Vi har en anonym funktion her. Ja. PUBLIKUM: Vil det altid være .submit, eller er det bare fordi i HTML, vi gjort på knappen typen Indsend? SPEAKER 1: Det skal .submit, fordi Det er en form, som vi er ved at indsende. Fordi denne .submit ikke nødvendigvis svarer til, hvad knappen er ligesom at ringe. Men det faktum, at det er en dannes, at vi indsender. OK. Så bemærker anonym funktion her at says-- PUBLIKUM: Jeg kan ikke rigtig forstå anonyme funktioner. SPEAKER 1: So anonym funktioner, de er blot funktioner, der ikke har et navn. Så i stedet for at have nogle hovedfunktion at calls-- vi kunne sige, hvis dokumentet klar, så vi ville kalde indgange. Og så, når de forelægges, call-- Ligesom, hvis den og så fremlagt, vi ville kalde en anden funktion. En anonym funktion bare ikke noget navn, og det vil kun udføre inden for disse slags ting. Så i dette tilfælde, hvad det siger er, når vores dokumentet er klar, udføre denne funktion. Denne funktion består alt inden her. Og så det næste lag i er, OK, når input er forelagt, udføre dette. Det er bare en måde at betegne hvad der skal udføres, når. Det er bogstaveligt talt bare et funktion, der ikke har et navn, så de har tendens til at indlejres i hinanden, fordi du kan ikke kalde dem ved navn. OK? Bogstaveligt, en anonym funktion er bare en funktion uden et navn. Det er det. Bare en måde at indkapsle forskellige ting at vi ønsker udført på bestemte tidspunkter. Publikum: [uhørligt]. SPEAKER 1: Vent? Hvor? PUBLIKUM: I parentes efter funktion? SPEAKER 1: Efter funktioner. Hvilken? PUBLIKUM: Både. Hvis du sætter, ligesom, begivenhed, eller hvis du sætte et argument der, ville det være forkert? SPEAKER 1: I dette tilfælde, jeg formoder, du kan sætte et argument der. Men fordi vi ikke har brug for en argument, burde der ikke være. Ligesom, det er det hele, lignende, bør du kun har ting, der er nødvendigt slags ting. På samme måde, at hvis vi havde nogen funktion, der har int main void-- lignende, med int main tomrum, du kunne gøre int arg v, uanset hvad. Men hvis du ikke har brug dem, du bør ikke have dem derinde. Samme ting. Emma, ​​har du et spørgsmål? OK. Cool. OK. Så det, vi hidtil er, når vores dokuments klar, udføre dette. Nu er vi kigger på når det er fremlagt. Så nu har vi faktisk slags af kød fra vores ting. Så vi har brug for at få den værdi, som bruger indsendte, hvad enten det er et navn eller tom. Og så er vi nødt til enten afkast denne advarsel eller kaste en fejl. Enten måde. Så hvordan kan vi erklære en variabel i JavaScript? Var. Så lad os sige, Var navn equals-- eller faktisk, vi får do værdi, da jeg synes det er navn. OK. Så vi har en vis værdi her, at vi ønsker at trække fra vores input formular. Så på samme måde som vi slags gjorde input, kan nogen fortælle mig, hvad vi kunne kalde indenfor her hvis vi ønskede at få navnet fra formen? Og hvis vi ser tilbage på vores her, vi, at vi har et id på navn. Publikum: [uhørligt]. SPEAKER 1: Du behøver ikke at tænke på det som et array. Du behøver ikke at bekymre dig om det. Så vi bare have nogle navn. Og så fordi JavaScript og ting er underligt, kan vi ikke bare gøre "navn." Vi har faktisk nødt til at kalde en funktion, som giver os, lignende, værdien af ​​denne identifikator. OK? Så det er bare .val. Publikum: [uhørligt]. SPEAKER 1: OK. Så med JavaScript, denne form for ting lige her bare går igennem. Og du kunne tænke på dette as-- det ligesom næsten en getElementById, hvor getElementById ville faktisk returnere den fulde ting til dig. De $ ("# navn") er ligesom, OK, jeg har det, jeg kan få adgang til det, men hvis du rent faktisk ønsker det at returnere værdien til du-- PUBLIKUM: Er det som en pointer? SPEAKER 1: Det er lidt ligesom en pegepind. Du kan tænke på det som slags ligesom en pointer. Ligesom, det siger, OK, jeg vide, hvordan man kommer dertil, men rent faktisk at få værdien af det, er du nødt til eksplicit at bede om det. Og desværre er klart, at vi ikke gøre for meget med JavaScript og jQuery. Så det kommer til at komme ned til, hvor meget du guys-- hvad du tilfældigvis vide, hvad du tilfældigvis har set, og hvad du kan slags logisk gætte på. Fordi nogle af disse ting, du kunne sandsynligvis få halvvejs. Men for at få det helt rigtige, Jeg tror, ​​dette problem sandsynligvis havde en af ​​de laveste score. PUBLIKUM: Ligesom for eksempel, for [uhørligt] input, hvorfor du ikke nødt til at sætte val der? SPEAKER 1: For denne ene? PUBLIKUM: Ja. SPEAKER 1: Ja. Da dette er slags af lide, som vi sagde, nogle pointer, og det er mig henvisninger det og faktisk få os værdien. PUBLIKUM: Mens [uhørligt]? SPEAKER 1: For input, indgange er bare some-- det er ligesom vi er bare ser på det som en helhed, og dette .submit fortæller os, hvad vi har brug for at vide. jQuery og JavaScript er underligt. Jeg kender. Jeg ved, gutter. Jeg kender. Der er en grund jeg ikke gøre webprogrammering. Just kidding. Jeg har ikke haft nok eksponering for det. Publikum: [uhørligt] CSS. [Latter] SPEAKER 1: OK, det er CSS. CSS er bare, ligesom, gøre tingene smuk, det er ikke ligesom lad os beskæftige sig med data. Der er en forskel der. OK. Så nu forhåbentlig dette part-- også, for et problem som dette, hvor du måske ikke kender syntaksen, du kunne være ligesom, OK, kan du have nogle var værdi og være ligesom, antager jeg fik værdien korrekt. Og så kunne du sandsynligvis skrive denne næste del. Denne næste del vil formentlig synes meget mere let, eller det ville gøre logisk mening for jer. Betragtninger, hvad vi har skrevet hidtil, Jeg ved, at jeg ville være ligesom, umm, yeah, Jeg ved ikke, at på quizzen. Du kan helt skrive psuedocode og derefter bryde ind reel kode når du-- det er lidt ligesom matematik. Hvis du nogensinde har haft nogle flerdelt problem, hvor du ikke ved, hvordan man komme forbi det første skridt, men alt andet afhængig det første skridt, du bare sige, ligesom, antager x lig 4. Og så skal du køre med det, ikke? Du kan gøre det samme med kode. Så man kan sige, antager Jeg fik værdien til højre. Så gør denne næste del her. Fordi denne del faktisk bør være temmelig logisk. Så vi er nødt til at kontrollere hvis vores værdi er tom. Eller hvis det er nogle navn, faktisk give en advarsel. Så hvad kunne vi ønsker at kontrollere? Vi ønsker at have nogle If. Hvad tror du, vores Hvis kommer til at være? Vi har brug for at kontrollere, om værdien is-- hvis det ikke er en tom streng. Perfekt. Præcis. OK. Så hvis det er tilfældet, Hvad ønsker vi at gøre? Vi ønsker at smide nogle alarm, ikke? Så det er bare alarm. Og så hvad vi vil indenfor. Så hvad skal vi at have inde i vores alarm? PUBLIKUM: "Hej." SPEAKER 1: Komma. Og så gør jer huske, hvordan til at sammenkæde? PUBLIKUM: Plus. SPEAKER 1: Plus. Så vi ønsker at have plus. Og så har vi brug for en anden plus for vores udråbstegn. Cool. OK. Ellers hvad kunne vi ønsker at gøre? Vi ønsker ikke at gøre noget, ikke? Så vi bare return false. Ikke hvad jeg ønsker at gøre. OK. Og så disse, af course-- hvad der er vigtigt er at huske at lukke dine anonyme funktioner. Så hvis du bemærker, at vi har nogle funktion her, der ender her. Så vi er nødt til at lukke dette første og tilføje et semikolon. Og så er denne en her har at gøre med denne anonyme funktion, så vi lukke den der. Denne panikhandling af besparelse. Ja. PUBLIKUM: Er der en grund at-- bare i alle eksemplerne i JavaScript at jeg har set, har vi de første krøllede parenteser på samme linje som den funktion? SPEAKER 1: Det er stilistisk. Ja. Og faktisk, hvis du tager 61, vi gøre alt vores krøllede parenteser på den måde. Huh? PUBLIKUM: Hvis vi gjorde det på den Pset er så slemt for stil? SPEAKER 1: Nej. Vi har udtrykkeligt fortalt jer til at gøre dette. Men faktisk er dette slags af den dominerende konvention i en masse C klasser og JavaScript og jQuery. Så selvfølgelig er jeg sure-- og faktisk, hvis jeg blev at gøre dette problem helt blind uden at have kigget på det, Der er formentlig meget få måder, jeg ville have fået det. Jeg kunne have været ligesom, OK, måske jeg har brug for at få fat i noget, der er en indgang. Og jeg tror, ​​der har den viden, som, OK, hvis jeg ønsker at få noget fra en form, der har et ID, Jeg henviser til det på denne måde, Jeg ville nok få det. Jeg kan få dette. Men virkelig, det eneste, jeg tror Jeg ville virkelig får, er det lige her. Så det er lidt vigtigt at kender, som med enhver vanskelig test, du slags vælge dine kampe, ikke? Hvis du ved, at du ikke kommer til at få at første del for jQuery, som jeg sagde, antage, at du har denne værdi og gøre, hvad du kan med det. Og hvis du har tid, gå tilbage og prøv og udfyld stykkerne. Men lad ikke et spørgsmål som dette virkelig mose dig ned. For hvad? Dette var et spørgsmål om jQuery ud af hele prøven. Så ja, det ville være dejligt, hvis du fik det. Publikum: [uhørligt] du velkommen til at bruge jQuery. SPEAKER 1: Du er velkommen til at bruge jQuery. PUBLIKUM: OK. [Uhørligt]. SPEAKER 1: Hvordan ville du ikke bruge det? Jeg ville have at se al min JavaScript. Det er faktisk meget lettere, Jeg tror, ​​at bruge jQuery, fordi jQuery faktisk reducerer mængde JavaScript du skriver sandsynligvis ved ligesom halvdelen. Så vores kode ville sandsynligvis være dobbelt så længe uden at. Så hvis du recognize-- den største ting at tage væk fra dette problem er mønstrene. Hvis du får adgang til noget fra en formular, du kommer til at bruge citater, hash, uanset hvad du forsøger at få adgang. Hvis det bliver fremlagt, du ønsker at bruge noget som en .submit. Du er sandsynligvis kommer til at bruge en anonym funktion derinde. Hvis du rent faktisk har brug for værdien af noget, er du nødt til at gøre tilbud, hash, hvad det så felt er, .val. Og anerkende mønstre ligesom der vil at være langt mere nyttigt end virkelig at kende detaljerne grovkornet. Ja. PUBLIKUM: Så hvis det bruger indsender deres navn og det løber gennem denne erklæring, vil det gå ned og vende tilbage falsk efter dette? SPEAKER 1: Nej, fordi indberetningen, du kan tænke på det som en tilbagevenden. Ja. Så det vil afslutte. Ja. PUBLIKUM: Kan du [? Place?] parentes af indsende, parenteser, noget? SPEAKER 1: Jeg gjorde, tror jeg. Denne ene er lukket lige her. Og så er denne ene bliver lukket ned her. PUBLIKUM: Åh, der. Ok. SPEAKER 1: Det er klart, lille, små syntaktiske ting sådan, vil vi sandsynligvis bare cirkel det og være ligesom, glem ikke din parentes. Men ja. OK. Har vi en anden at vi gerne vil gøre? Fik du fyre få det binære træ en? Ønsker vi at gå over den? Jeg har lyst til binære træer og OD bør være punkter at du fyre få temmelig nemt. Jeg vil ikke have dig at miste punkter på det. OK. Lad os gøre dette DOM her. Jeg ville ønske jeg havde min overflade, så jeg kunne bare tegne på skærmen. Det er, hvad jeg plejede at gøre sidste år. OK. Så som jeg nævnte, vi talte om DOM, Document Object Model. De er sandsynligvis kommer til at give dig nogle lidt uddrag som denne og bede dig om at oprette et træ for det. Og det bare hele har at gøre med at køre gennem tags. Så lad os forsøge at gøre dette. Også, som sædvanlig, hvis du fyre gør disse quizzer, som jeg stærkt anbefaler, at du gør som praksis, nogen af ​​dem, at du kan lide, Jeg ved virkelig ikke hvad er foregår her, bare, selvfølgelig, Send mig en e-mail med et spørgsmål, og jeg vil forklare, så godt jeg kan. OK. Vi har nogle dokument, og vi har HTML. OK. Så vi bare analyserer tags her, ikke? Så hvad gør vi ser comes-- hvad er de to underpositioner under HTML? Især fordi de er indrykket korrekt? Hoved og krop. Ah. Hoved og krop. Dejligt. Så lad os starte her med hovedet. Hvad er nedenunder hoved? Hvad er vores næste tag? Titel. Og så inden titel, quiz. OK. Så bogstaveligt, det er bare walking gennem tags, OK? Så hvis vi har krop, som vi går igennem, krop har tre ting i det, ikke? Det har fået tre divs. Hver div får sin egen lille boks. Og hvad der er i den første div? [Uhørligt] Og så den næste er midten, som jeg bare til at forkorte. Og så den sidste er bunden. Så virkelig, det er bare at gå igennem. Og fordi vi vil give du HTML, som er korrekt indrykket, du kan bogstaveligt talt bare køre igennem og være ligesom, OK, her er HTML. Så det er den yderste hjørne, eller længst til venstre, så er dens egne ting. Disse er på samme indrykning. Så vi ved, at hovedet har brug for at være på samme niveau som kroppen, men nedenunder HTML. Det er det, vi har her. Hoved og krop er søskende, men de er under HTML. Og så har vi bare gå ind i hver af disse. Så hovedet har titel, som har quiz, som vi ser her. Og så i dette tilfælde, har vi organ, som har disse tre linjer. Så disse er alle søskende alle under kroppen. OK? Så forhåbentlig når du ser noget som dette, du kan lide, ja, jeg bare komme til at tegne et træ. Det bliver fantastisk. OK. Så ville være sikker på du fyre vidste det. Så hvorfor skal vi ikke gå til 32 med vores binært træ? Fordi når du forstår en binær Søg træ, det er virkelig ikke så slemt. Så Everett, kan jeg erase-- jeg betyder, disse er alle online, også. Så hvis du har spørgsmål. Mistet lidt plads der, men det er OK. Så binær søgning træ er bare en måde at organisere data ikke i et array, hvor roden er altid større end den venstre barn og roden er altid mindre end den højre barn. OK. Så vi har denne store søgning træ her. Vi har disse tal, 34, 59, 20, 106, 36, og 52. Og vi har brug for at organisere dem på en sådan måde, således at roden er større end alt på venstre side og det er mindre end alt i højre side. Og typisk, hvad du ønsker, er at forsøge at finde noget i midten. Med binære søgning træer, kan du have at lege lidt med det. Men i dette tilfælde, lad os bare antage, at vi ved, at dette første. Så 36 er vores første her. Typisk vil jeg prøve og vælge noget om i midten, der vil sandsynligvis give de bedste resultater. Så nu ved vi, at alt på denne side skal være mindre end 36. Men også, hvad man kunne se, er at vi har to pletter herovre. Så hvis vi ved, at vi har brug for to tal, der er mindre end roden, så kunne du bare bestille disse og vælge det tredje tal. OK. Så hvorfor skal vi ikke starte med denne side? Så hvis vi ved, at alt på denne side skal være mindre end 36-- men hvis vi ser på denne ene, vi ved, at dette tal skal være mindre end dette tal, ikke? Fordi dette nummer her er på højre side. Og husk, ligesom i vores større træ, alt på højre skal være større end roden. På denne måde, ved vi, at hvad der er i denne behov at være større end hvad der er her. OK? Så vi har to valg for disse to bobler. Vi har 32 og 34-- eller ked af det. 20 og 34. Så hvordan tror du vi kan sætte disse i? Hvis man skal være større end denne, der betyder, at vi gerne vil har 20 her og 34 her. OK. Så på samme måde, ser vi på denne form for sub træ. Og vi siger, OK, ikke har vi 36. Vi har 106, 52, og 59. Right? I dette tilfælde her, vi ved, at dette ene behov at have én ting, der er større end det og en ting, der er mindre end det. Right? Så hvis vi sætter disse i orden, det er bare om at finde den midterste værdi igen. Så vores midterste værdi 59. Så siger vi, OK, hvad er mindre end 59? Tja, det er 52. Og hvad er større end 59? Tja, det er 106. OK? Så det er bare lidt ligesom et puslespil. Det hjælper typisk, især i små træer som dette, hvis du bare bestille det, hvis du vide, hvor mange er på venstre og hvor mange er på ret, der kan bare så du kan vælge, hvad skal være på din rod. Og så kan du slags af arbejde derfra. Mm-hm. 33? Sure. OK. Så vi ønsker at skabe et knudepunkt eller en binær søgning træ. Og lad os se på, hvad der kunne være i den. Og jeg tror, ​​det vil faktisk være vores sidste problem. Ah. OK. OK. Det er ligesom, hvad vi kan tænker på som en knude, ikke? Vi har en vis værdi, og vi ved, at det vil enten har venstre og højre børn. Binær søgning tree-- at midler at det har højst to børn. OK? Lad os tænke på den måde, vi defineret en linket liste, ikke? Vi havde nogle int at repræsenterede værdi. Vi havde nogle pointer, der repræsenterede hvad det vil næste. Binær søgning træ er meget ens. Vi har stadig en vis værdi, n, at vi giver det, ikke? Og så jeg tegnede disse meget eksplicit med pile, fordi de er reelt pointere. OK? Så n er det typisk? Det er en vis værdi. Hvad gør vi typisk betegne det som? En int. Så vi har nogle int n, eller int værdi, eller hvad du gerne vil kalde det. Og så har vi til venstre barn og højre barn. Right? Og vi ved, at det, de er point-- hvad er de peger på? De er at pege på andre noder, ikke? Så hvordan ville vi erklære en node pointer? Publikum: [uhørligt]. SPEAKER 1: Mm-hm. Og vi vil have to af dem, ikke? Og så kan vi bogstavelig talt gør tilbage til venstre barn og højre for den rigtige barn. Actually-- ked. Fordi vi har brug for struct. Så struct er, fordi vi ikke har færdig om en node endnu. Så node er inden her. Det er lidt ligesom en rekursiv definition, ikke? Så når vi er inden for denne definition, vi er ikke færdig erklære node som struktur, så vi er nødt til at gøre struct node blot at sige, ja, vi er faktisk at henvise tilbage til os selv skrive ting. At ligesom når det er oprettet, vil det være fint. Så hvor stor tror du fyre tror, ​​det er? Hvad er størrelsen af ​​denne struktur? 12. Hvorfor? Netop. Og faktisk en af ​​de første spørgsmål en Quiz One handler om størrelser, hvilket er grunden til jeg spurgte. Ok. Vi kommer til at ende, fordi den DCE vil yell på mig, hvis vi ikke gør det. Men hvis du fyre har spørgsmål, selvfølgelig, email mig, så lad mig det vide. Du fyre kommer til at rocke det. Jeg er super spændt. Du fyre vil ske som onsdag, og derefter vil du komme til at arbejde på din endelige projekter, og det kommer til at være awesome. Jeg vil være her næste uge fra 4:00 til 4:30 hvis du fyre ønsker at komme afhente dine quizzer. Hvis du ønsker at finde mig en anden gang eller blot koordinere et andet tidspunkt, velkommen til at lade mig vide. Ellers er dette vores sidste afsnit. Så det var dejligt at se jer. Venligst tage mere slik. Og held og lykke på din quiz.