PROFESSOR: So het die agenda vir hierdie week, nie veel dinge. Maar hopelik baie, baie nuttig en relevant is vir julle ouens hierdie week. Maar ons gaan spandeer miskien 15, 20 minute net vinnig praat oor skakel lys. Link lyste gaan gedek word op die quiz. So miskien is dit baie nuttig wees om 'n bietjie oor wat dit is om te leer. Ons gaan die oorgrote bestee meerderheid van vandag se artikel gaan oor quiz nul praktyk probleme. En dan sal ons miskien 20, 30 minute te spaar aan die einde van 'n talmende vrae iemand het. En dan, die laaste vyf minute, ek gaan om 'n pomp toespraak vir die quiz gee. Julle almal wil hier vir daardie. Want dit gaan 'n goeie tyd wees. Alle reg, so 'n paar materiaal op die skakel lys. Hoe hulle tipies gestruktureer is jy het 'n sogenaamde node, reg? Jy het hierdie dinge genoem nodes wat structs is. Ek gaan oor hoe om te skep 'n knoop in die volgende skuif. Maar in wese alle gekoppelde lyste is is data wat het saam gespan via wenke. En so het die voordeel wat ons het van die gebruik van 'n geskakelde lys oor, miskien, soos 'n skikking, is die feit dat in 'n skikking jy een aangrensende blok nodig geheue almal in dieselfde plek, een na die ander, in staat wees om daardie. Terwyl 'n geskakelde lys, kan jy het ewekansige klein stukkies van die geheue oor jou rekenaar saamgesnoer deur verwysings. En in hierdie manier kan jy kan toegang tot inligting wat kom een ​​na die ander, na die ander sonder net 'n groot stuk van geheue in jou rekenaar iewers. En so is dit een van die groot redes waarom ons skakel lys. Tweedens, dit is baie maklik om te dinamies grootte van die lys met skakels want in skikking, wanneer jy verklaar 'n skikking, jy het 'n sekere vasgestelde waarde. Kom ons sê ek wou skep 'n verskeidenheid van 10 heelgetalle. Ek skep 'n skikking van 10 heelgetalle, en dit is dit. Dit is 10. Ek weet nie wat om te doen na daardie. As ek wou dit 11 maak, kan dit nie doen nie. As ek wil om dit te maak 9, kan dit nie doen nie. Terwyl dit in 'n skakel lys, kan jy voeg en verwyder en voeg waar jy wil. Jy kan die grootte van jou dinamiese struktureer hier, jou data struktuur. En dit gee ons 'n baie meer buigsaamheid bygevoeg dat ons dit nie doen nie tipies met skikkings. Enigiemand verwar op die basiese struktuur van hoe 'n skakel lys is of waarom ons moet die een oor 'n skikking te gebruik? Ja, ons sal gaan oor in detail hoe om werklik een skep. Maar dit is net soort van die algemene gevoel nou. Koel. En so skikkings saam gespan van hierdie pragtige klein dingetjies genoem nodes. Al wat 'n node is 'n tipe van struct. Onthou, 'n struct is as jy wou om 'n sekere tipe veranderlike skep in C wat nie doen wat reeds bestaan ​​nie, jy, as 'n programmeerder, kan eintlik maak dit self. En so hierdie tipe van data struktuur is 'n node genoem, het eintlik geskep deur ons, wat bestaan ​​nie binne C op sy eie. En die manier waarop jy een skep is jy die kop van typedef struct, wat die samesteller Ek is vertel oor 'n struct skep. Ons gaan noem dit "knoop." En binne ons gaan om 'n veranderlike te verklaar, wat gaan 'n waarde te stoor. En dan is ons ook gaan het 'n wyser genaamd "volgende" wat verwys na die volgende node in die skakel lys. En dan klaar dat af deur net weer herhaal node so samesteller weet, OK dit is die einde van my struct. En so op hierdie manier, ons is soort van die skep van 'n oulike reeks soort ding met 'n waarde en met 'n wyser. En jy kan hulle almal skakel saam met dié wenke. Sodat hulle al die soort kan wees saamgesnoer in 'n ketting. Koel. Kan jy hoor dat 'n bietjie beter? GEHOOR: Ja. PROFESSOR: Alle reg. So die manier waarop, as julle kan sien, 'n tipiese skakel lys gestruktureer is jy 'n kop. Jy het die hoof waarde wat nie word uitgewys deur enige ander wyser. Maar dit gaan om te wys op, of verwysing, 'n ander knoop. Die knoop na gaan verwys die node daarna, en so aan en so voort totdat jy uiteindelik getref die einde van jou skakel lys. En jy sal net nie 'n wyser daar te hê. En so, dink soos op 'n ketting, of selfs Indien enige van julle ouens gemaak, weet ek nie, soos met Fruit Loops toe jy klein was. Jy sou string hulle saam en dra dit om jou nek. Dink dit is presies dieselfde ding. Jy het hierdie klein dinge wat jy kan string saam dat een punt nadat dit aan die een na dit, en so aan en so voort totdat jy 'n ketting van 'n datastruktuur wat jy kan gebruik egter jy wil. So die manier waarop hierdie sou ons tipies voeg of te verwyder enige node van 'n skakel lys is baie verskillende afhangende van waar daardie node is. So, byvoorbeeld, omdat pointers is altyd wys op 'n spesifieke waarde, wanneer jy verwyder of voeg 'n knoop, jy wil om seker te maak dat die wyser is al wat dui op die regte dinge. So as jy wil potensieel voeg 'n nuwe node met die waarde van een in 'n gesorteerde skakel lys, ons almal hier weet uit die prentjie wat gaan Gaan in tussen die kop en twee, reg? Want 'n mens pas reg daar. Maar die manier waarop ons dit sou doen is deur die eerste dereferencing die wyser van kop en stuur dit aan die een. Maar ons het in 'n probleem kom hier. Kan iemand sien wat die probleem is as ons eerste dereference die wyser van kop tot een? Watter probleem kan ons loop in as ons probeer om hierdie by te voeg aan die voorkant van ons verskeidenheid? GEHOOR: [onhoorbaar] PROFESSOR: Presies. So hier het ons 'n wyser wat een keer wys uit die kop tot twee. Maar as jy ontslae te raak van wat kry wyser, jy het dit verwys na een, ons het nou geen idee waar om te gaan om twee te vind. Want soos ek gesê het, het jy 'n reuse stuk van die geheue in jou rekenaar. Al hierdie nodes kon word lukraak afgewissel in enige plek in jou rekenaar. En jy weet nie hoe om te gaan oor die vind dit. En so moet jy wenke het wys na al die nodes aan die einde. Of anders as jy per ongeluk dereference een sonder om eers toewys 'n waarde eerste, jy is net gaan om te verloor alles daarna. So, wat ons gaan doen is, sou jy eerste wil 'n wyser op te skep die knoop jy wil voeg. Wys dit aan waar jy dit wil voeg tot, en dan daarna jou kon kop terug wys na een. Maak dit sin om almal hier? Groot. Dink aan dit as net soos 'n ketting. As jy 'n ketting te voeg, dit is soort van intuïtiewe hoe jy gaan invoeging dit. OK, so dit is eintlik baie korter as wat ek gedink het dit sou wees, 'n vyf-minute spiel op die skakel lyste. Net so julle ouens het die basiese idee van wat dit is. Hier het ons die agenda vir quiz nul. Moenie toelaat dat hierdie intimideer jou. Ek weet dit is 'n baie inligting. Dit lyk baie scary. Dit is ook 'n baie, ek dink, CSC soort terme. Dinge soos heksadesimale snare, wysers, dinamiese geheue toekennings is baie scary klinkende terme. Maar ons gaan om hulle te breek af, doen 'n paar praktyk probleme sodat julle almal gereed is vir hierdie toets. Hoeveel van julle ouens het reeds begin studeer? OK, julle ouens waarskynlik wil om te begin slag op daardie, omdat die toets is môre. Of Donderdag vir 'n paar van jou. Ja, so ons gaan om te gaan oor 'n paar praktyk probleme. As jy ouens wil almal om te neem uit 'n vel papier, 'n potlood. Ons gaan net spandeer die oorgrote meerderheid van vandag se artikel gaan oor 'n paar van wat so julle ouens het 'n idee van wat om te verwag van die quiz. OK. 'N Paar logistieke besonderhede asook vir enigiemand wat nie aan daardie skakel daar is, as jy gaan cs50.yale.edu, aan die voorkant hierdie bladsy is daar 'n skakel wat sê: "Oor Quiz Zero." Skakel neem jou daar. As jy nog nie gelees het nie, lees dit. Want dit vertel jou werklik belangrik inligting oor die quiz. Ek gaan hierdie trek uit dat net omdat, fisies, as jy ouens weet nie waar om te gaan, sal ons probleme. En so as jou laaste in terme van 'n N, gaan na die wet skool ouditorium. En as jou laaste begin met P tot Z, gaan na Davies Ouditorium. En dit is net van toepassing vir mense in die afdeling Woensdag. As jy die neem van die quiz op Donderdag, gaan jy na SSS 114 waar jou lesing tipies is. GEHOOR: [onhoorbaar] PROFESSOR: O tot Z, jy gaan om te gaan na die Davies ouditorium. Ek gaan om dit te verander, reg? O, ja, jy het net outomaties misluk. O ja, dit is wat jy Christa. Ja, my sleg. Yep, O tot Z, jy gaan om te gaan na Davies Auditorim. Ek gaan om vas te stel hierdie keer ek laai. Ja. En dan ook iets belangrik om verstand is dat Woensdag, as jy amptelik ingeskryf is in die afdeling Woensdag, moet jy jou quiz op Woensdag. En as jy wat ingeskryf is in Donderdag, moet jy jou quiz Donderdag neem. En dit is gedurende klastyd. Waar, dink ek dit is soos om 01:00 02:15 op Woensdae en 2:30-03:45 op Donderdae. As jy 'n onversoenbare konflik, Dean se verskonings is die enigste ding, Ongelukkig kan ons nie. Want ons het 'n oorgrote meerderheid van versoeke om oor te skakel van Woensdag tot Donderdag. Wat ons nie kan eer nie, tensy ons het versoek om 'n Dekaan. OK. Dus, voordat ons begin op 'n paar van die praktyk probleme, Ek gaan net om te gaan oor Andy se nuttige wenke vir sukses. Julle ouens, wanneer jy studeer, het jy regtig wil oefen kode skryf met die hand. Die eerste keer wat ek ooit het 'n CS quiz, ek het nie praktyk kode skryf met die hand voor en dit was baie skokkend hoe moeilik dit was. Wanneer julle nie kry in die gewoonte tik alles, dit kom baie natuurlik dat staat te wees om autocompleted hakies en kommapunte daar. Wanneer jy dit uitskryf met die hand, soms is dit baie, baie maklik om 'n kommapunt vergeet of vergeet om 'n bracket sluit, of vergeet om 'n kolon te sluit, of iets soos dit. So wanneer jy skryf kode per hand, dit is 'n baie verskillende gevoel. So julle ouens, wanneer jy werk deur 'n paar van die praktyk probleme, dit sal goed wees om werklik te oefen vandag. Of môre, dink ek, as jy die neem van die quiz op Donderdag. Tweedens, ons het die laaste, soos, waarde van die praktyk agt jaar se vasvrae aanlyn. Quiz vanjaar se sal waarskynlik baie, baie soortgelyk aan almal van hulle. Hulle is almal baie soortgelyk. Jy soort van kry in die styl van die tipe vrae wat ons vra, is die tipe funksies wat ons dit sal skryf in, ensovoorts, ensovoorts. So neem die praktyk vasvrae, veral onder tydsbeperkings. 75 minute om te doen die quiz is nie 'n baie bedrag van die tyd. Dit is baie, baie lank. En so julle ouens regtig wil om seker te maak dat jy ouens is in die gewoonte van die skryf kode per hand vinnig. Omdat jy nie wil hê die eerste tyd om 'n quiz van daardie lengte sien wees op jou quiz. Julle wil regtig om seker te maak dat jy vooraf te oefen. Vierde, wil jy die hersiening lesing en artikel skyfies. Jy hoef nie om dinge te onthou. Eintlik is almal toegelaat om 'n een vel wit papier notas, voor en agter. Julle kan tik of skryf nie. As jy jouself hoef te memoriseer enigiets, sit dit af op daardie blad. Ek waarborg jou, het jy nie wil vas in die middel van die quiz om soos, o ja, wat is die runtime van hierdie soort versus dié soort. Sit dit net af en kopieer dit reguit uit jou kennis vel. Dan kan jy eintlik net gebruik om jou brein om te dink oor die probleme eerder as om feite te onthou. En so werklik neem voordeel enige nis besonderhede wat jy dink jy nodig het om te onthou, plop dit op die hersiening vel. OK, vrae logisties ten opsigte van die quiz voordat ons begin 'n paar quiz probleme oefen? Ja? GEHOOR: Ek het nie 'n kans gehad het om te kyk na die quiz [onhoorbaar] maar dit gaan wees aansoek meestal, of is daar ook gaan wees, soos, kennis vrae? PROFESSOR: Dit is 'n baie. So, die manier wat ek sou die toets beskryf is-- ek saam 'n praktyk probleme dat ek getrek uit al die vasvrae. Maar jy sal sien dat daar twee hoof tipes vrae sal ons jou vra. Een is 'n baie lae vlak detail van dinge. Ons sal u 'n klein stuk van die kode te gee en sê, is daar 'n fout hier? Wat sou die druk hier? Wat sal hierdie kode te produseer, ensovoorts. So 'n baie lae vlak inligting besonderhede. En op die ander kant, sal ons baie het hoë vlak kennis vrae. Kan jy verduidelik wat die verskil tussen 'n binêre soek en 'n lineêre soek is? Hoekom sal ons wil Gebruik een oor die ander? Miskien, wat is GDB? Hoekom wil ons GDB gebruik? Hoër vlak, meer fundamentele begrip vrae. Sodat jy 'n mengsel van sien die twee van hulle op jou quiz. Enigiets anders voordat ons hoof reguit in dit? OK. GEHOOR: Een meer. PROFESSOR: O, nog een. Jammer. GEHOOR: Ja, dit is alles reg. So jy sê 75 minute te kort, soos dit is onwaarskynlik dat ons sal eindig? Of, soos, 75 minute is presies soveel tyd soos ons nodig sou wees as ons toepaslik voorberei? PROFESSOR: OK, so die quiz is 'n uitdaging. Dit is beslis 'n uitdaging. Jy sal vind jouself kort op tyd. Jy is waarskynlik gaan om te slaan, soos 10, 15 minute om te gaan, en om soos, kak. Ek het so baie links om te doen. En dit is heeltemal fyn. Almal gaan op dieselfde manier voel. Net baie bewus van hoeveel tyd jy het. En so dit is hoekom ek jou vertel ouens doen die praktyk vasvrae. Want dit is werklik 'n groot sin gee van wat die quiz gaan wees nie. So as jy jouself om in staat wees om die praktyk klaar vasvrae in 'n goeie bedrag van die tyd, kan jy jouself goed pas, dan sal jy nie 'n probleem het Woensdag of Donderdag. Koel. So as almal wants-- Ek dink die meeste mense het velle papier uit al. Ek gaan in wese net gee jou monster vrae, gee julle ouens, soos, 'n paar minute om dit te doen. En ons sal gaan oor as 'n klas wat die antwoorde op hulle is. So, dit is 'n baie tipiese vroeë vraag wat ons sal vra jou, net die omskakeling getalle tussen verskillende basisse. Binary, as julle kan Onthou, is die basis twee. Desimale is base 10, of wat ons as mense tipies interpreteer. Heksadesimale is base 16, wat is nul deur nege sowel as 'n middel F. So is daar vier nommers Ek is vra julle om hier te omskep. Ek gee wat jy wil, drie tot vier minute om te dink deur middel van hoe ons sal gaan om hierdie. GEHOOR: Is ons toegelaat sakrekenaars? PROFESSOR: Jy sal nie moet sakrekenaars, ja. Ek dink basiese Daarbenewens, dink ek, is al julle ouens sal gevra word om te doen. En net so het ek soort van 'n gevoel wanneer almal is gedoen, kyk, golf, ek weet nie, glimlag, lyk gelukkig as jy klaar is. Ja. Miskien 'n paar minute. OK, laat ons bring dit in. Ek is doelbewus gaan gee julle minder tyd as jy waarskynlik nodig het om te doen sommige van hierdie probleme, net omdat ek wil seker maak dat ons kry deur 'n klomp van die probleme. So geen bekommernisse as jy nie het 'n kans om te voltooi. Heeltemal OK solank jy 'n idee van hoe om te gaan oor hierdie. So laat ons gaan voort en doen die eerste een. So die eerste, nie almal wil om my te vertel in binêre, wat elk van hierdie syfers te doen verteenwoordig in terme van hul waardes? Ja? GEHOOR: Twee van die krag nul, 00:58. PROFESSOR: Presies. Doen. Right, so tipies wanneer ons in die basis 10 al hierdie verteenwoordig is, soos, 10 om die basis van nul, reg? Dit is jou een plek. Al jou 10 se plek is, is 10 tot die mag van die een. Jy 100 se plek is 10 om die krag van twee. Wat ook al base jy in gaan te doen met presies dieselfde ding, net met 'n ander basis. So binêre, alles wat is die basis twee. Jy gaan om te skakel al die syfers in twee tot watter krag van daardie syfer. En so in hierdie sin, ons kan 'n makliker manier het om te kan optel of som al die nommers in volgorde om te omskep in basis 10. So het iemand my wil vertel wat die antwoord op die eerste een is in die basis tien? GEHOOR: Twee, [onhoorbaar] PROFESSOR: Ja. GEHOOR: 42. PROFESSOR: 42, daar gaan jy. So het die manier waarop ons het hierdie antwoord was deur doen die eerste twee, wat twee. Plus twee, die derde, wat agt. Plus twee na die vyfde, wat is alles wat oorbly. Jy som dit op en dit is 42. Is daar iemand verward oor hoe ons dit het? So basiese Daarbenewens soos Ek het gesê, julle OK behoort te wees. Indien nie, wel, ons kan ook oefen nie. Maar dit is alles reg. Koel. Is daar iemand wat my wil die gee antwoord op die tweede een so goed? 50? Goed. Enigiemand verward oor hoe ons het wat óf? Cool, sal ek die antwoorde op die volgende skuif. So geen bekommernisse as jy nodig het om dit af te kopieer. OK, so heksadesimale is 'n bietjie moeiliker. maar ek gaan om jou te wys ouens 'n kortpad vir hoe om dit te doen. So heksadesimaal, soos jy Onthou, al is dit in 16. En omdat ons as mense nie eintlik het 16 nommers verteenwoordig dat ons gaan van nul tot nege, wat ons eerste 10 waardes, en dan 'n doen ons deur F, wat die volgende ses waardes. En so het die maklikste manier om te gaan van enige binêre getal na heksadesimaal is om hulle te breek in helftes. En so 'n binêre getal sal ons gee jy sal waarskynlik agt syfers. Jy kan net breek hulle in die middel. So het die eerste een one-- een 'n mens, een, een, een een. Soort dink dit het, jy weet, teken 'n streep of 'n komma in tussen hulle. En jy kan net sit direk ookal dit is die eerste aantal heksadesimaal, en alles wat hier is om te die tweede van heksadesimale. So onthou van algemene notasie, wat doen heksadesimale waardes begin met? GEHOOR: Zero. PROFESSOR: 0X. So ons weet dat enige tyd wat jy vra ons om enige aantal omskep heksadesimaal, of enige tyd wat jy sien nie getal wat begin met 0X, jy weet dat dit is 'n heksadesimale waarde. En dan gaan jy gevra word om bepaal wat hierdie twee syfers is. En die manier waarop jy dit doen, tel van up dat die helfte en tel van up dat die helfte. So in hierdie voorbeeld, wat sou 'n mens, een, een, een wees? Watter waarde sal dit wees? Dit sou wees F, reg? Dit sou wees 15. So hierdie F. Een sou wees, een, een, een hier is ook F. So een, een, een, een, een, een, een, een in heksadesimaal, al is dit is 0XFF. Omdat hierdie half verteenwoordig F, die waarde van 15, en dit half verteenwoordig F, die waarde 15. Want onthou, ons is tel van nul tot nege. A is soos 10, B is soos 11, F is 15. Maak dit sin om almal hoe ons van binêre na heksadesimaal? GEHOOR: En so hoe het ons 15 van die een, een, een, een? PROFESSOR: Ja, dit is binêre, reg? Stel jou voor dit is net 'n binêre getal. So jy het twee van die nulde, wat een. GEHOOR: O, OK. Sodat jy net totaal dit uit. PROFESSOR: Ja, en dan jy net totaal dat uit. Dit is al wat dit is. GEHOOR: OK. PROFESSOR: OK. GEHOOR: So jy gaan van binêre om decimaal heksadesimale? PROFESSOR: Dit is die maklikste manier om dit te doen, ja. Jy gaan nie desimaal omdat desimale het slegs nul tot nege. Ons is net soort van verdeel hierdie in twee. GEHOOR: [onhoorbaar] gebruik van desimale te vind wat dit ooreenstem tot in heksadesimaal. PROFESSOR: Ek bedoel, jy is tel van met behulp van basiese wiskunde. GEHOOR: Ja. PROFESSOR: Ja, pretty much. Dit is 'n bietjie verwarrend. Maar net weet dat jy kan verdeel ookal hierdie waarde in net helftes. Kyk, wat is dit in binêre? Watter getal is dit? Dit gaan wees iets van nul tot F. Hier gaan ook wees iets van nul tot F. En dan kan jy net sit daardie twee reg daar. GEHOOR: OK. PROFESSOR: Yep. OK. So julle ouens wil Probeer die volgende een dan? Nul, een, nul een, een, nul, 'n nul. Ek sal julle gee soos 30 sekondes, omdat jy waarskynlik nie weet die truuk hoe om hierdie vroeër doen nie. OK, iemand wil hierdie een te kry 'n skoot? 0X5A. PROFESSOR: 0X5A. 5a. Goed. So dit hier sou be-- jy wil om ons te vertel hoe jy dit? Eerstens, hoe het jy die vyf? GEHOOR: Omdat nul, een, nul, een is vyf. PROFESSOR: Verstaan ​​almal Hoekom nul, een, nul, een is vyf? Jy het een hier het. Jy het niks in twee tot by die eerstes. In twee van die tweede, wat jy een, wat vier. Sodat jy die vier plus voeg die een wat jy het vyf. Almal goeie? OK. En dan wat dit wees en hoekom? Watter getal kom 'n stem ooreen met? GEHOOR: 10. PROFESSOR: En wat dit in twee base? GEHOOR: [onhoorbaar] PROFESSOR: Presies. So die tweede waarde hier sou wees 0X5A. Almal goeie oor hoe om te sit? Dit is 'n baie makliker as wat jy dink dit is. Ek wil net om seker te maak jy weet nuttige wenke en truuks oor hoe om dit te doen. GEHOOR: Hoekom kan jy net verdeel dit in die middel soos wat? Net soos, OK, ek is maar net gaan omgee oor hierdie eerste [onhoorbaar]? PROFESSOR: Want dit is eintlik die manier heksadesimale waardes verteenwoordig. 0X, wat eintlik beteken niks anders as wat jy vertel dat dit 'n heksadesimale getal. En dit altyd verteenwoordig die eerste vier syfers. En dit altyd verteenwoordig die laaste vier syfers. En so hierdie twee syfers net ooreenstem met verskillende stukkies. GEHOOR: So sal ons always-- PROFESSOR: Jy is altyd gaan agt waarde stukkies kry. GEHOOR: Is dit net soos 'n ding hier is of dat 'n ding oor? PROFESSOR: Dit is net 'n ding in rekenaars, yep. GEHOOR: OK. Awesome. PROFESSOR: Ook, so in hierdie voorbeeld ons omgeskakel van binêre te desimaal, en van binêre na heksadesimaal. Julle wil ook seker maak dat jy oefen gaan die ander manier om. So as ek 0XFF het julle, jy kan teken dat in binêre, reg? Jy sit F in binêre, Dit is een, een, een, een, omskep F binêre, wat is een, een, een, een. So kan ons jou vra om te doen die ander manier om. So desimaal binêre of heksadesimale binêre. So wat jy wil maak seker dat jy weet beide maniere. Ons sal u waarskynlik vra kombinasie van die twee. Ja, jy het 'n vraag? Ek kan see-- jy goed? GEHOOR: Ja. PROFESSOR: OK. Is ek goed om hierdie vee? Groot. Alle reg, sodat antwoorde is hier as iemand nuuskierig later en deurmekaar raak. OK. GEHOOR: Maak dit saak as ons ons briewe in Capitol of klein? PROFESSOR: Dit maak nie, want in heksadesimaal, deur konvensie, al die karakters hoofletters. So 'n deur F is gaan hoofletters wees. As jy 'n klein a, weet ek nie as ons noodwendig sou merk dit verkeerd. Maar teoreties, dit is nie tegnies hoe jy veronderstel is om dit te hê. Sodat hulle almal moet hoofletters. Ja, goeie vraag. OK. Tweede vraag. Oorweeg hier hierdie pragtige program. Ek sal die vraag te vra, Ek sal terug kom hierdie. So, in die eerste plek, wat is binnekant van standaard io.h dit is van belang vir die program? Tweedens, wat leemte doen dui in lyn drie? En die derde, wat beteken die terugkeer van nul hoof, as reël ses algemeen dui? As jy ouens wil die skryf af, want ek het om terug te skakel om die skyfie net sodat jy kan sien code. Dit is 'n voorbeeld van, soos, miskien 'n hoër vlak vraag waar ons vra wat dinge beteken in 'n program. Almal vir my goed om gaan terug na die slide? OK, cool. So sal ek julle ouens soos miskien drie gee minute om te kyk na hierdie een ware vinnig. OK, so hierdie een is soos redelik maklik, konseptueel. Is daar iemand wat my wil vertel wat is eerste binnekant deur hash insluitend ons standaard io.h biblioteek lêer? Hoekom doen ons dit nodig biblioteek ingesluit vir hierdie program? Wat hier moet ons dit? Ja? GEHOOR: Is dat wanneer jy sit dit printf? PROFESSOR: Presies. So printf, enige tyd wat jy neem 'n toevoer van die gebruiker en druk iets na die skerm, dit is die standaard insette, uitset biblioteek. Dink aan dit wat insette way--, uitset. Moet ek 'n uitset? Ja ek doen. So ek weet dat ek altyd gaan moet die standaardiseer i.o biblioteek. So is die funksie printf waardeur ons moet toegang en sluit in die hashtag standaard i.o biblioteek. OK. Tweedens, is dit wat beteken leemte dui? Ons het die int main (void), wat beteken nietig hier beteken hier op die lyn drie? Ja, in die rug. GEHOOR: [onhoorbaar] PROFESSOR: Presies. So onthou, ons geleer het begin met ons pset wat jy kan eintlik spesifiseer command line argumente wat jou program, wat jou hooffunksie, neem as u, die gebruiker, noem dit. As ons leemte, wat beteken dat jy kon net direk hardloop die program sonder enige command line argumente. Almal duidelik dat? OK. En laastens hoekom ons pla doen hierdie opgawe nul ding hier? Hoekom het ons selfs 'n int main? Hoekom kan ons nie net leemte belangrikste leemte? Ja? GEHOOR: Net sodat ons kan seker wees dat die program is suksesvol verlaat, as gekant teen indien dit getel. En ons sal weet dat dit is 'n ander soort van die dwaling. PROFESSOR: Ja, presies. Dit is net 'n baie konvensionele ding wat ons doen, is wat net aan die einde van jou program, net om seker te maak dat jou belangrikste funksie korrek hardloop, Ons wil altyd terugkeer nul doen. Selfs al is ons noodwendig nie sien nêrens dat gedruk word. Want soos programmeerders, jy weet, as jy het baie verskillende reëls van die kode en jy weet nie waar hierdie is verkeerd gaan, en as 'n fout gebeur jy wil maak seker dat jy die fout kry. En so tipies as iets gaan verkeerde ons sal 'n opbrengs van net een om seker te maak ons ​​weet dat dit is. So as jy sien 'n opbrengs nul, wat tipies beteken dat jou program is suksesvol uitgevoer. Goed? Koel. OK, tweede program hier. Oorweeg dit. En as jy sien 'n ouens dryf, kan jy ouens waarskynlik het 'n goeie idee van wat Ek is op die punt om jou te vra. En wanneer hierdie program voer, soos jy kan sien, Ek verklaar 'n float in my hoof funksie. Ek noem dit "antwoord," en ek is die opstel wat gelyk is aan een gedeel deur 10. Ek is uit te druk, een desimale plek, sodat float. En dan is ek terug nul. So wanneer die uitvoering van die program, dink nou terug na gulsig, hierdie program druk 0,0. Soos ons almal weet, hopelik ons ​​almal weet, een gedeel deur 10 is nie 'n 0,00, dit is 0,1. Maar verduidelik waarom hierdie program dink wat 1 gedeel deur 10 afdrukke tot 0,1 ander as 0,1? Ek sal julle miskien gee soos 30 sekondes om net vinnig dink oor wat en ek sal terug na die program gaan. OK. Iemand wil hê om dit te gee 'n skoot? In drie sinne of minder, want ons is tipies gaan al die antwoorde beperk tot drie sinne of minder sodat jy nie net spoeg ewekansige dinge op jou quiz. Ja, neem 'n skoot. GEHOOR: So ek dink daar is hierdie ding genaamd, soos, [onhoorbaar] So is daar ook mag wees, byvoorbeeld, daar kan wees, soos, 0,09, dat waar jy druk die eerste syfer, sal dit wees om 0,0? PROFESSOR: Close, nie heeltemal. Christabell? GEHOOR: Jy verdeel een en 10, en hulle is albei heelgetalle. En so het die manier waarop dit gaan te slaan is dit as 'n heelgetal. En so het die naaste heelgetal wees 0.0. En so dit is 0,1. PROFESSOR: Ja, dit is regtig 'n goeie. Dit is die regte antwoord. So, dit is 'n baie verwarrende konsep vir 'n baie van die kinders. En ek wil regtig om seker te maak dat die dit versterk in almal se kop. So wat ons noem swaai punt onakkuraatheid, waar die rede waarom 'n baie van jou programme in gulsige aanvanklik nie werk was omdat jy vergeet om jou veranderlike te gooi. So, wat sê Christabell was heeltemal korrek. A float inherent vaag. Want in 'n rekenaar, reg, ons het 'n eindige hoeveelheid stukkies geheue ons kan gebruik om getalle voor te stel. So, byvoorbeeld, hierdie CS50 ID is-- Ek dink dit is 'n 64-bit rekenaar. A float kan slegs verteenwoordig deur 'n eindige hoeveelheid van daardie stukkies. En so 0,1 met 'n oneindige nulle, wat was 0,1 is, reg? Maar ons kan nie eintlik stoor dat die getal in ons rekenaar. Ons het net nie genoeg geheue om dit te doen. En so die naaste aanpassing van wat in die geheue gestoor is eintlik iets soos 0,000 iets iets, iets wat iets. Wat, sodra jy afgestomp dit rondes tot 0,0. En so hierdie voorbeeld is net een wat toon baie van die kwessies ons het wanneer ons probeer om wiskunde verkeerd doen sonder beslissende as 'n ander heelgetal. So wees net versigtig vir hierdie gebeurtenis. Op vasvrae, as ons gee jou 'n blok van die kode en dit is soos, wat druk aan die einde? En as dit is 'n paar random waarde wat jy ouens moet weet waarom dit gebeur. Ja? GEHOOR: Truncatie is ontslae te raak van alles na 'n sekere punt? [Onhoorbaar] PROFESSOR: Ja, so eintlik dit is 'n baie slegte voorbeeld, omdat 0,100 alles eintlik sou down afgestomp tot 0,1. Maar as jy was om te it-- hardloop ek doen nie onthou, want verlede jaar het hulle hardloop dit op 'n ander program. Hulle hardloop in iets genoem die CS50 Appliance, wat verskil van die ID. Dit was 'n 32-bis-stelsel, dink ek. En so was daar verskillende getalle. Maar in wese is, weet net dat Die hele konsep van afkapping en hoe dit net sny dinge af. En so is dit rounds-- GEHOOR: Sonder afronding. PROFESSOR: Presies. Ja. Koel. Hi, in die rug. Ons is maar net gaan oor 'n paar quiz review vrae. Alles reg. So oorweeg om hier 'n ander program. Ek gaan julle ouens gee paar minute om te lees oor hierdie. Dit is iets wat was vir 'n baie onlangs dat ek dink blaas 'n klomp van julle ouens se gedagtes. Maar ons gaan om te praat deur hierdie weer net om seker te maak jy verstaan ​​heeltemal. OK. OK. Enigiemand meer tyd nodig Lees hierdie kode? OK. So lyk dit vir my dat in hierdie program Ek is skep twee stringe deur die gebruik van GetString. Een wat geroep is en een wat geroep is t. En as hulle gelyke gelyk aan mekaar, dit moet "Jy druk Tik die dieselfde ding. " Maar elsewise, sou dit U druk, " getik verskillende dinge, "reg? Lyk baie, baie eenvoudig. Maar, maar indien ek eintlik probeer om hierdie program te skryf, blyk dit dat selfs wanneer ek insette van die presiese dieselfde snare, dit nog steeds druk uit, "Jy getik verskillende dinge! " Is daar iemand wat wil 'n te neem skoot na die rede waarom hierdie program altyd reageer dat die insette is anders, selfs Toe hulle die woorde self is dieselfde? So as ek David liefde input-- om 'n voorbeeld te gebruik, soos ma, reg? Kleinletters M-O-M vir S, T gelyk klein M-O-M. As ek gehardloop dit deur daardie kode, waarom sou dit druk "jy verskillende dinge getik?" Is daar iemand wat meer nodig tyd om te dink oor hierdie? OK, ek dink ons ​​is goed. Ja? GEHOOR: OK, so dit is iets oor waar dit in die geheue gestoor is, reg? PROFESSOR: Yep. GEHOOR: Waar dit is soos, indien dit string s gestoor op geheue spot-- Ek uitvind this-- is nul. PROFESSOR: Natuurlik. GEHOOR: En string t gestoor op geheue plek, soos, 167, en dan zero nie gelyk 167. PROFESSOR: Presies. OK, so onthou hierdie ongelooflike openbaring wat ons aan u verduidelik ouens die afgelope week, wat snare nie regtig bestaan ​​nie? Wanneer ons iets te skep genoem string ons, in werklikheid, skep iets genoem char ster. Wat al is dit is 'n verwysing na 'n tou of 'n skikking van karakters. En so in hierdie voorbeeld, as ek was om insette M-O-M die pad dat my rekenaar sou stoor dit binne geheue backslash nul, reg? Die vier karakters, karakters, sou iewers gestoor word. En dan hierdie vier karakters, backslash nul, is iewers anders gestoor word, reg? Ek het geen idee waar die adresse is, hulle is iewers in my rekenaar. Maar ek weet nie presies waar hulle is. Wanneer ek 'n string s, almal wat werklik is is 'n verwysing na die begin van hierdie string. En toe ek die skep van hierdie t waarde alles wat 'n wyser na hier. En so wanneer jy probeer om gelyk en kyk om te sien of s is gelykes gelyk aan T, die rekenaar is regtig net terug te keer na jy die adres van hierdie m en die adres van die m. En omdat hulle twee afsonderlike stukke data wat gestoor word in twee verskillende adresse in jou rekenaar, jou rekenaar gaan nooit hulle erken as die dieselfde. Is daar iemand wat wil gee 'n skoot op wat ons sou hê om te doen as ons wou regstel hierdie en 'n korrekte bestuur program plaas? Dink oor wat vir 'n paar sekondes. Wat het ons nodig om te verander na kry hierdie program funksionering die manier waarop ons dit wil hê om te funksioneer? Ja, wil 'n steek te neem na dit? GEHOOR: Kan ons probeer om die dereference wyser en kyk deur die skikking? PROFESSOR: Dit is een manier om dit te doen. So, wat is weer jou naam? Ek is jammer, herinner my. Zee: See. PROFESSOR: Ja, so wat Zee voorgestel sou absoluut werk. Reg? Ons kon dereference die wyser en eintlik gaan en toegang die fisiese data binnekant van hier. En ons kan net vergelyk die hele skerm. Ons kan sê, OK, pointer, gee my wat binne hier. Dit sou 'n m terugkeer. En ek sou sê, pointer, gee my wat binne hier. Terugkeer 'n m. Moenie dié wedstryd? Ja. Dan beweeg ons op. Ons hou die nagaan van die hele twee snare al die pad tot aan die einde en kyk of dit is gelyk, As al die waardes is gelyk. En as al die waardes is gelyk, dan weet ons die snare is waar. Absoluut, dit is hoe ons dit sou doen? Is daar iemand verwar oor enige van hierdie? Die hele konsep van hoe snare is regtig net wysers, en hoe hulle nie regtig bestaan ​​nie? En hoekom kry ons foute soos die manier waarop ons dit kry? Want ek waarborg julle, wysers en string toekenning en geheue gaan om te kom. Ja? GEHOOR: [onhoorbaar] dereference dit wat jy net sit 'n ster [onhoorbaar] PROFESSOR: Right. So om 'n wyser middel derererence om te gaan na die adres van die wyser en daar kry die data, die waarde. En die manier om dit te doen, is ster wyser. Moenie verwar nie. GEHOOR: [onhoorbaar]. PROFESSOR: Ja. GEHOOR: So jy kan net skryf As ster is gelyk gelykes star t. PROFESSOR: Wel, nee. Geen. GEHOOR: Dit is nie goed genoeg nie, reg? PROFESSOR: Dit is nie, omdat jy net die beheer van die eerste brief. Jy is waarskynlik gaan om te moet 'n soort van 'n lus wat iterate deur elke enkele karakter in beide snare. Ja. So as jy wou net kyk om te sien as hulle begin met die dieselfde ding, wat jy kan doen as, ster s is gelyk aan star t. Dan weet jy dat hulle minstens begin met dieselfde karakter. Ja? GEHOOR: So het die manier jy sal dit nie wees soos 'n ingeboude lus of wyser? PROFESSOR: Ja. Pretty much net 'n lus. Onthou, David in die klas genoem die vrye sintaktiese suiker? En hy het hierdie baie verwarrend ding ster t plus een, waar dit sal integreer deur en dit die wyser beweeg? Die makliker manier van doen dit is net t i. So dit is net 'n skikking. Die manier waarop jy 'n aspirant vir lus wat het van nul tot i, waar i is die lengte van die string, kan jy net skryf dat in plaas van die doen van die geheel pointer, verwysing ding. So hierdie dinge is presies ekwivalent in jou rekenaar. Julle sal waarskynlik nie nodig om te weet dat, maar dit is goed om te net soort van het in die rug jou gees. Weet net dat die rekenaar erken verskillende blokke van die kode as die dieselfde ding. Want dit is net baie meer gebruikers vriendelike vir ons om dit aan te bied soos dit is 'n skikking. Dis net makliker. GEHOOR: So gebruik StrLen te wil, get-- PROFESSOR: Ja. GEHOOR: OK. PROFESSOR: Jy kan StrLen gebruik, of as jy het nie StrLen jy net kan doen up totdat jy getref backslash nul vir beide. Óf sou werk. Ja. GEHOOR: So dit is om elke dereference enkele karakter as ons eintlik was skryf van hierdie kode, ons kon net nie t hakies i hou met die ster in die voorkant van dit? PROFESSOR: Ja, gelyk gelykes s bracket i, en dan bly beweeg i down totdat jy die einde getref. Ja, dit is wat jy wil doen. En ek sal eintlik 'n volgende voorbeeld van wanneer ons eintlik skryf StrLen so julle ouens sal soort te kry om te speel met dit 'n bietjie. So is elkeen duidelik net die geheue, snare, wysers, kwaliteit adresse? Sommige hoër vlak konsepte wat jy wil vir seker nodig om te weet oor die quiz môre. Alles reg. Goed. Yep. OK, so een ding wat ons sal ook vra jy, soos ons elke jaar doen op 'n quiz, is, veronderstel dat jy vergeet het (wat ons lyk om te vergeet om jaarliks ​​te doen) waarin kop lêer StrLen verklaar. En so het ons dit self te herskryf. Hier is 'n lys van riglyne dat ons u kan aanbied ouens waar jy om te aanvaar dat s die string sal nie null. Jy kan aanvaar dat s sal wees beëindig met 'n backslash nul. So jy weet dit is wat dit gaan eindig met. En, byvoorbeeld, dat die lengte van hallo sou wees vyf. So kan jy die hallo aanvaar sal vyf, H-E-L-L-O wees. Jy hoef nie om aan te neem dat die agterkant nul rekeninge vir die lengte. Die laaste ding hier, nie bekommer oor heelgetal oorloop. Is daar iemand wat onthou wat heelgetal oorloop is? GEHOOR: gaan verder as die lengte van die [onhoorbaar]. PROFESSOR: Ja, kan jy verduidelik 'n bietjie, wat beteken dit? GEHOOR: So, ek dink dit gaan terug die truncating byvoorbeeld vroeër. Maar as jy net so baie nommers wat verder gaan as die aantal bisse dat jy eintlik kan toewys dit dat dit net soort van uitroei. PROFESSOR: Ja, so op 'n tipiese rekenaar, hoeveel stukkies het ons? GEHOOR: 32? PROFESSOR: Ja, 32, regs. En so is dit, wat vier miljard, twee biljoen? Vier miljard, tot vier miljard positiewe heelgetalle, reg? Twee miljard negatief, twee biljoen positiewe, hang af van hoe jy wil om dit te doen. En so basies kan ons ' genoeg heelgetalle wat kan gaan twee tot die 31 minus 1, reg? Want as ons het twee om die 32, het ons dit nie doen nie dat daar nog baie geheue in ons rekenaar. En so, teoreties, ek kon kom met 'n aantal wat, soos, twee tot die 46ste. Dit is 'n groot-ass nommer, maar teoreties jy kan. En so heelgetal oorloop is as jy probeer om skep 'n heelgetal wat verder gaan as wat jou rekenaar in staat is om van die stoor. En so julle ouens vir hierdie voorbeeld nie te bekommer oor ons gee jou 'n reuse- string wat twee tot die 32 karakters lank. Dit sou werklik beteken. Alle reg, so ek gaan net om te gee julle ouens die basis struktuur van hierdie. Jy gaan 'n te skep funksie genoem int StrLen waar 'n slaag in 'n kar ster of string, wyser na die string genoem s. Alle reg, almal wat kopieer af. Koel. Oops-- ander manier. So dit is soort van soos 'n harder stukkie van die probleem, so ek sal julle miskien vyf te gee ses minute soort dinkskrum en skryf hierdie funksie. GEHOOR: Ons doen nie rekening [onhoorbaar], Ons hoef nie te heelgetal gebruik? PROFESSOR: Nee, jy doen nie. Ek gee jou 'n wenk ouens. 'N Rukkie lus kan hier baie nuttig wees. Ja. Hier is lekkergoed. Candy sal ook beskikbaar wees vir die quiz, dink ek. So julle ouens sal almal versuikerde môre. Kan I-- jy het dit. GEHOOR: OK. PROFESSOR: Ja. Miskien 30 nog sekondes of so. Alle reg, as jy nie gedoen nie, geen bekommernisse. Ons sal saam met hierdie skuif. OK. So ek gaan net die uitleg van die basiese struktuur vir hierdie funksie hier. Int StrLen. Eerste, nie almal wil vertel my wat dit beteken int? Ons moet in hierdie funksie. GEHOOR: StrLen [onhoorbaar]. PROFESSOR: Presies. So wat gebeur hier, ons nodig het om 'n heelgetal te keer. En soos uiteengesit in die spec, wil ons return-- Gaan vir dit ouens, hou net gaan. Dit is alles goed. Eet dit alles so ek het nie ' om dit terug te neem, eintlik. Die int net beteken dat jy gaan terugkeer 'n heelgetal. Wat is dit char star s? Wat beteken dit? GEHOOR: Soos wat die wese insette in. PROFESSOR: Presies. En wat is byna die dieselfde as char ster? GEHOOR: String? PROFESSOR: Presies. So al wat ons doen is om dit 'n verwysing na 'n string. OK. Koel. Ook nie vergeet nie, as ons vergeet om jou hierdie hakies gee, moenie vergeet om dit self te skryf. Omdat teoreties, die kode is verkeerde as jy vergeet om dit te skryf. Net altyd aandag. Soos klein dingetjies wat jy sien nie wanneer jy programmering op jou laptop, omdat jou laptop doen dit vir jou? Moenie vergeet toe jy skryf met die hand. Ja? GEHOOR: Maar hoe verkeerd? Soos, kry ons die hele probleem verkeerd? PROFESSOR: Nee, nee. Moenie bekommerd wees nie. Dit is eintlik teoreties moontlik vir jou om volpunte te kry op 'n vraag selfs as jou kode sal nooit loop in die werklike lewe. Ek stel voor jy nie probeer te maak dat gebeur. Byvoorbeeld, soos as alles dit is hier reg, maar jy 'n dubbelpunt of 'n bracket vergeet jou kode sal nie eintlik loop. Maar ons kan genadig wees. Ja? GEHOOR: Moet jy kommentaar te lewer op ons handskrif? PROFESSOR: Nee, nee, nee bekommernisse oor dit. Geen kommentaar. Styl moet goed wees. Soos, nie Smush alles wat op een lyn. Ons sal nie gelukkig wees met jou as jy dit doen. Is daar iemand wat wil gee my die eerste reël? Wenk, dit is baie maklik. Ja? GEHOOR: Int, n is gelyk aan nul. Net die opstel toonbank. PROFESSOR: So wil ons 'n paar soort van 'n toonbank, reg? Ek is net gaan om dit te noem "tel" ter wille van leesbaarheid. Wat wil ons om dit te stel gelyk aan? GEHOOR: Zero. PROFESSOR: Yep. Kommapunt. Dit is ook baie vreemd tekening kommapunte. Net oefen om dit te doen. So wil ons eers 'n toonbank van die tipe int. Want ons wil om te tel hoe baie karakters of briewe is in hierdie string, reg? Baie maklik eerste stap. OK, miskien 'n bietjie meer kompleks nou, hoe gaan ons dit doen? Is daar iemand wat wil gee my die reël van die kode wat in staat kan wees om te help lus deur alles is dit? Ja, dapper siel in die rug? GEHOOR: OK, so terwyl punt sterretjies, die ja, ster van s, is nie gelyk aan nul is, dan iets te doen? PROFESSOR: Dit is baie, baie naby. Regtig naby. So ek gaan spreek twee dinge met dit. Eerste van alles, dit is nie presies nul. Wat is dit? Dit is die nul terminator, wat is backslash nul. So hulle is in verskillende terme van hoe hulle gestoor word. So jy regtig naby. En tweedens, ons wil nie net die aanwijzer. Ons wil eintlik toegang tot die waardes, reg? En so hoe doen ons dit doen? Baie maklik. Moenie dink oor wysers, dink nie oor herinneringe. Gaan terug na week twee van hierdie kursus. GEHOOR: [onhoorbaar]. PROFESSOR: Soos van, onthou? Wat is snare? Hoe word hulle in die geheue gestoor? GEHOOR: Hulle is ingesamel. PROFESSOR: Hulle is ingesamel. So hoe kan ons toegang elke karakter binne? GEHOOR: [onhoorbaar]. PROFESSOR: Presies. So while-- wat gaan binne hier? S van - GEHOOR: I. PROFESSOR: O, ek bestaan ​​nie, beteken dit? GEHOOR: O, tel? PROFESSOR: Ons kan net gebruik tel, kan ons nie? GEHOOR: Jammer, ek het dit i. PROFESSOR: Ja, dit is alles goed. Ons het 'n veranderlike hier dis reeds verklaar as ons toonbank. So hoekom nie ons gebruik net dat om te beweeg deur die while lus? Maak wat sin maak? Dus, terwyl s van count-- nie almal wil gee my wat gebeur nadat hier? GEHOOR: Dit is nie gelyk. PROFESSOR: Is nie gelyk nie, reg? Dit is die bang gelyk, uitroepteken gelykes, alles wat jy ouens wil noem dit nie equal-- GEHOOR: [onhoorbaar]. PROFESSOR: Ja. Onthou enkele aanhaling is vir 'n kar, dubbel aanhalings is vir 'n string. Wees versigtig wanneer jy dit gebruik. So wanneer ons kyk deur die skikking, die laaste karakter, ons weet ons wil nie dit backslash nul. So rukkie. Ons is nie teen die einde van die tou. Wat wil ons na binne te doen? GEHOOR: Ons wil bydra tot die counter so dit tel plus plus? PROFESSOR: Presies. Ons is so hier gaan doen tel, tel plus plus. Ontbreek een lyn. Ons is amper daar. Wat moet ons vergeet om te doen? GEHOOR: Returning nul? PROFESSOR: Jy wil na nul terugkeer? GEHOOR: Nee, terug te keer na StrLen. Wag nie. PROFESSOR: Watter is gestoor in? GEHOOR: Tel. Tel. PROFESSOR: Presies. Ons is so hier gaan tel terug te keer. Want wat ons doen hier ultimately-- ons het 'n toonbank veranderlike wat gaan inkrementeer deur ons string. Ons gaan die gang te hou, hou gaan, om en om in hierdie lus. En terwyl ons nie op die einde van hierdie string, wat is die nul terminator. En elke keer as ons gaan deur dit is ons toe te voeg tot ons toonbank. En ons is verder gaan saam in hierdie reeks. En aan die einde, wanneer ons getref die nul terminator, ons weet, o, ons kan breek, die standaard van die telling. Ons het ons StrLen. Maak almal kry hoe hierdie is geïmplementeer? Terwyl loops-- Ek weet ons het nie gedoen te veel met hulle, maar hulle is gewoonlik baie, baie nuttig as jy weet nie wat jy stop voorwaarde noodwendig wees. Vraag? GEHOOR: Kan ons skryf null op die tyd toestand? PROFESSOR: Terwyl? Ja, so in hierdie probleem wat jy het ek ouens aanvaar dat s nie null sal wees nie. Want onthou, teoreties, as ek aan jou gegee het 'n wyser te groot geheue was, dit sou gee jou die nul, reg? Dit is wat die bedryfstelsel stelsel sal doen. So as ek jou vertel nie om te aanvaar s sou null wees, moet jy om te kyk. So hier, sou jy doen, as s gelyk gelyk null, terug een. Iets soos dit. GEHOOR: [onhoorbaar] nul. PROFESSOR: OK, ek sal vertel waarom kan ons dit nie doen nie. Want onthou in die geheue, regs, hier. Ons sal hier gaan. Jy het reuse blokke het geheue almal met roosters die winkel verskillende waardes, reg? En so sal die hele 'n string is-- vir Byvoorbeeld, as ons insette hello, dit sou H-E-L-L-O wees backslash nul, reg? En dan wie weet, soos ewekansige dinge wat in hier nadat dit. Ons het nie eintlik weet wat is daar. En so as jy te doen in plaas van backslash nul, null, kan dit nie wees null. Omdat dit net kan beteken 'n paar random ander dinge wat behoort nie in jou string. En so het die manier wat ons weet altyd 'n string eindig is met 'n backslash nul. En so is dit altyd hoe ons kyk na die einde van 'n string te sien. Nul, alles wat middel is as jy ' 'n nie-bestaande pointer, die eerste van alles, of as jou geheue is net so groot dat jy kan nie terug te keer nie, dan is dit van nul sal wees. So wees baie versigtig wanneer onderskei die verskil tussen null en agteroorskuisstreep nul. Ja. Almal OK met hierdie? OK. So ek het julle skryf StrLen. Feasibly kan ons ook vra wat jy skryf uit A tot I, onthou dat "Atwoa" of wat jy ouens wil om dit te noem? Daardie funksie in Vigenere en Caesar, wat vat 'n ASCII-waarde na 'n heelgetal? Dit het ook kom op vorige vasvrae van funksies wat ons het jou gevra om te skryf. Pretty much enige funksie wat jy gebruik en is baie maklik om jouself te skryf, sensors graag laer, is bo, te verlaag, na die boonste. Funksies wat 'n wil om te skakel string van klein na hoofletters. Ons weet almal hoe om dit te doen, reg? Dit is redelik maklik. Wil net seker maak dat jy can-- dit is dieselfde gedink proses. Jy Itereer net deur en jy draai dinge. Jy óf tel of wanneer jy dinge draai anders. Ek sou suggest-- ek weet nie of ons gaan om jou te vra om te onthou wat kapitaal A of kapitaal Z, of klein 'n klein of z is in ASCII, maar ek sou raai dalk skryf dat in die geval af ons doen. Net so julle ouens het 'n verwysing. Soos hoofletters A is, wat, 197? En dan klein is soos 50 iets. 65, ja, daar gaan jy. Dus net pretty much weet verskil tussen hulle is 32. Dit is redelik belangrik. Ja. Is ek goed oor hierdie? OK. GEHOOR: Ons kon teoreties skryf 'n paar van hierdie af sowel op ons little-- PROFESSOR: Jy teoreties kon net kopieer die funksie af. Dis waar. GEHOOR: Nie [onhoorbaar]. PROFESSOR: Julle het 'n vel. Jy het 'n nota ouens vel. Jy kan dit te tik. Jy kan dit skryf. Jy kan doen wat jy wil met dit. Ja. So teoreties, as jy wil, gaan vir. GEHOOR: [onhoorbaar] maar ons het nie regtig noodwendig nodig om te onthou die waarde, kan ons maar net gebruik die boonste of laer funksie, reg? PROFESSOR: Ja. Maar as ons julle 'n vraag wat sê skryf aan die boonste, dan sou jy nodig het om dit te skryf. So julle ouens kan aanvaar dat jy ouens het toegang tot al die funksies, maar as jy wil gebruik om die boonste of laer, wat dink jy het ook te doen? GEHOOR: [onhoorbaar] gebruik CS50 [onhoorbaar] PROFESSOR: Is dit CS50.h? Wees versigtig daar. So na die boonste, te verlaag, is boonste, laer, funksies wat betrek string manipulasie is almal binne óf die Ascii of binne die wiskunde biblioteek of binne die string biblioteek. So as jy ouens gebruik die funksies, wees versigtig om te onthou dat die kop in te sluit. So miskien ook iets wat jy wil in jou vel in te sluit, wat die kop? Wat is die biblioteke jy het al met behulp? Wat funksies binne die biblioteke? Dit is belangrik. Ja? GEHOOR: Kan ons net cop uit en doen hashtag deur die absoluut elke brief wat ons ooit gesien soos op al die vrae? PROFESSOR: Jy kon. Ek weet nie hoe gelukkig ons gaan wees om graad dat quiz wanneer elke stukkie van die kode is twee keer so lank as wat dit nodig het om te wees. Ek weet nie, kan ons af te neem 'n punt vir styl. Maar teoreties jou kode sal reg wees. Julle kon cop out en net sluit alles. Dit is goed ook, ja. GEHOOR: [onhoorbaar]. PROFESSOR: Ja. Ek sou raai nie dat alhoewel doen. Ja. GEHOOR: Cool. PROFESSOR: Goeie vraag. GEHOOR: So, die ergste geval scenario. PROFESSOR: Die ergste geval. As jy heeltemal vergeet, jy dit kan doen. Ja. Yep, kode is reg daar. Ek gebruik n plaas van tel, maar jy weet, ongeag jou boot dryf. GEHOOR: Wag, sodat ons wil nie hê om hashtag sluit, want ons is begin by die int? PROFESSOR: Ja, het net aanvaar dat ek Ons is gevra om die funksie te skryf. As jy wou om veilig te wees, moet jy kan waarskynlik sit dit daar. Maar ek het net nie die moeite, ja. Ek weet nie eens as jy moet enige biblioteek vir hierdie. Omdat jy nie regtig druk enigiets of enigiets nie, reg? Ja, ek weet nie of jy 'n biblioteek nodig. OK. Dit is ook 'n bietjie meer saam die lyne van die geheue manipulasie. Hierdie soort bietjie lastig. Dink hieroor. Jy het 'n funksie genoem funk. Ek kon dit vernoem wat ook al, maar ek kies om dit te funk noem. Ek het dit bo my hoof. Onthou, wat jy wil hê 'n funksie na jou hoof, jy wil om seker te maak jy sluit die prototipe van die top. Maar in hierdie geval was dit so kort dat ek voel dat ek kon net sluit dit bo-op die belangrikste. Ek het nie nodig om die prototipe het, want dit is reeds hierbo geskryf. So al wat ek doen in my hooffunksie skep heelgetal x gelyk aan 10. Ek bel my funk funksie, en dan druk op iets. En dan is dit eintlik wat funk doen. Julle wil dink deur middel van hierdie. Want dit is 'n bietjie lastig. Dit is baie, baie moeilik, eintlik. Dink oor wat hierdie program sal printer wees. Ek sal julle ouens gee twee minute. Goeie besprekings? GEHOOR: Ja. PROFESSOR: Ja. Alle reg, sodat dit is lastig vir 'n rede. En dit is die rede waarom ek wou bring hierdie om almal se aandag. Is daar iemand wat my wil gee 'n voorstel, 'n poging? Wat sou hierdie druk? Heeltemal fyn as jy verkeerd is. Ja? GEHOOR: Ek dink dit is 100 en dan 10 op twee afsonderlike lyne. PROFESSOR: En 'n 10? Is daar iemand enige ander raaiskote? Ja? GEHOOR: Dalk net omdat 10 funk niks terug? PROFESSOR: OK, so ons het raaiskoot nommer een is dat raaiskoot nommer twee is net gaan om uit te druk 10. Is daar iemand enige ander raaiskote? OK. So laat loop deur middel van hierdie, reg? Wanneer jy 'n stukkie van die kode te kry, nie net kyk na dit en wees soos, Ag, dit is so baie dinge! Ek is so deurmekaar! Soos, kalmeer jouself af. Weet net dat jy net kyk deur code lyn deur die lyn. Dit is al wat dit is. Dit is soos 'n boek lees. So met enige funksie, ons begin altyd by die hoof. So ons gaan begin by int main leemte, selfs die program se reeds hardloop af, reg? Begin by in die belangrikste leemte. Int x gelyk aan 10. So ek gaan om dit te vee. Ek gaan die geheue te trek net sodat jy ouens kan soort van sien wat gebeur. Onthou hier neer ons het ons stapel? Hier het ons ons ophoop iewers hier. Stapel grootword, reg? En binne die stapel, jy het die hoofleiding funksioneer asook al hoofleiding plaaslike veranderlikes. So hier, int x gelyk 10. Binne ons belangrikste funksie is ons skep van 'n veranderlike genoem x. Ons opstel wat gelyk is aan 10. Hier kan jy het 'n paar x, en jy is opstel wat gelyk is aan 10, regs, binne belangrikste. Almal goeie? Funksie. So nou, in ons belangrikste funksie, ons roeping die funksie wat ons hierbo geskryf het. So ons nou die tweede funksie. Ons gaan na 'n ander te skep veranderlike int x is gelyk aan 100. Wat gebeur hier by die stapel? Wat gebeur wanneer jy 'n oproep funksie wat nuwe veranderlikes skep? Wat gebeur hier by die stapel? GEHOOR: [onhoorbaar] hope op die top? PROFESSOR: Ja. So dit is eintlik skep 'n kopie. En dit soort van hope bo-op. Dink aan die stack-- 'n stapel boeke, 'n stapel van enigiets. Hope op die top, eers in die laaste uit laaste in, eerste uit. So dit gaan om 'n x hier te skep. Dit gaan hê al funcs veranderlikes. Groot. So nou het ons twee verskillende x se verteenwoordig twee baie verskillende dinge. Dan gaan ons druk uit die heelgetal van x. So laat druk 100, reg? Want hier is dit 100. So wat is die eerste ding wat dat dit gaan om uit te druk. As hierdie funksie gee terug niks nie, nou dat funksie, wat in lyn belangrikste gedoen word. Almal goed met my so ver? So ons is nou deur middel van twee uit die drie lyne van ons belangrikste funksie. Nou gaan ons na die derde lyn. Ons gaan printf. Wat is dit x binne belangrikste? Wat beteken dit verteenwoordig? Watter waarde is x nou? GEHOOR: 100. PROFESSOR: Dis 100? GEHOOR: Nog 10. PROFESSOR: Nog 10. Ja. Want onthou, binne ons funk, x is gelyk aan 100. Maar as ons weer terug ons belangrikste funksie, daardie veranderlike gestoor in 'n ander plek op ons stapel. So nou moet ons teruggaan na die hoof stapel, hoofleiding plaaslike veranderlikes. En hier is x gelyk aan 10. En so gaan ons om uit te druk 10. So sy was absoluut reg. Ons gaan die het uitset van 100 en 10. Ja? GEHOOR: Wanneer jy malloc, is dit die hoop of dat die stapel wat [onhoorbaar]? PROFESSOR: Wanneer jy malloc, jy geheue te neem van die hoop en die toekenning daarvan. Sodat jy nie om te mors met enige van hierdie. So ek dink die groter afhaal hier is iets genoem omvang. Vir dié van julle wat by was die hersiening sessie gisteraand, ons gepraat kortliks hieroor. Omvang bepaal hoe en wanneer jou veranderlikes bestaan ​​nie. Of binne wat rame doen jou veranderlikes bestaan ​​nie. Pretty much die reël algemeen is, jou variables-- as jy hulle te skep binnekant krullerige braces-- hulle bestaan net binne die krullerige draadjies. So byvoorbeeld in ons funksie van funk, sien jy daardie twee draadjies. As jy skep enigiets binnekant van dit, kanse is al wat jy doen, is skep van 'n stapel en stoor dat daar. Dieselfde ding in die belangrikste. Dit is net gestoor binnekant van hoof. Ook jy wil wees baie, baie versigtig hier. Omdat omvang leen ook self na verskillende voorbeelde. So byvoorbeeld 'n vir lus vir int i gelyk 0. Ek is minder as, ek weet nie, 10. Ek plus plus. En jy het kode binnekant van dit, reg? Waar kom hierdie veranderlike, i, eintlik net bestaan ​​nie? Slegs binnekant van jou lus. So ek wed baie van julle ouens het waarskynlik teëgekom hierdie fout wanneer jy doen programme in jou psets. Hoeveel van julle ouens het probeer om i gebruik buitekant van 'n lus vir die en het 'n fout? Soos 'n unreferenced heelgetalle of iets soos dit? Die rede waarom dit gebeur is omdat hier is jy iets te skep wat net bestaan ​​binne jou lus. En as jy probeer om dit te gebruik, i nie werklik bestaan ​​buite dit. So basies 'n rekenaar en sê: Ek weet nie wat jy praat. Al wat ek weet, is dat 'n i was hier, maar nou nie meer nie. So as ek 'n te skep lus binnekant, reg? En ek gaan na 'n ander te skep, soos int j, en het dit ook al doen. En jy het 'n kode binnekant van wat lus, j bestaan ​​hier net. Maar wat ook bestaan ​​binne i. En so j bestaan ​​slegs in hierdie lus, terwyl ek bestaan ​​in die hele ding. Almal duidelik? Dieselfde ding met voorwaardelike stellings As jy iets wil skep. Dieselfde ding met terwyl loops as jy iets wil skep. Dit is iets om te wees baie, baie versigtig wees oor. So was dit 'n baie goeie probleem in die sin dat dit gedemonstreer twee dinge. Dit blyk die eerste, omvang. En dit blyk ook geheuetoekenning. Omdat julle moet weet dat funksies groei opwaarts in die stapel. En dat wanneer jy bel funksies, jy skep in wese 'n nuwe stapel geheue. Dit is baie anders wat jou hoofleiding geheue is. Ja. Sjoe! Almal OK op daardie? Dit was verwarrend. Baie goeie onderwerpe om oor te gaan, omdat jy waarskynlik gaan 'n paar moeilike kry dinge soos wat op die quiz. Ja. Koel. Ek sal sit jy op 'n 100 lyn en dan 10 aan die ander. Ja, baie goed. OK, nou het jy ouens kry die kans om te wees die Tas. Jy beantwoord al die pragtige e-pos wat ek kry soms. So, liewe Andi, ek sien ek dink iets is verkeerd gaan met my samesteller. Ek is seker dat my kode korrek is, maar ek kry steeds 'n segmentering skuld elke keer as ek hardloop. Wat gaan aan? Please help, baie liefde. As jy ouens het iets soos dat hoe sou jy reageer? Dit is eintlik baie algemeen vrae sal ons jou vra. Is as, sal ons jou 'n gee scenario, sal ons gee ons jou beste raaiskoot op wat gaan aan. Iemand het 'n steek op wat gaan aan? Ja? GEHOOR: Miskien dereferenced die null, iets soos die wyser wys na iets null. PROFESSOR: Ja, dit wil 'n wees voorbeeld van wanneer dit sou gebeur. Maar wat is die groter prentjie van wat gaan hier aan? GEHOOR: Is dit jy probeer om toegang tot die geheue dat jy nie veronderstel om toegang te hê? PROFESSOR: Presies. So dink aan 'n seg skuld, 'n off perke, beperkte gebied in die geheue dat jy nie moet wees raak. So pretty much wanneer jy probeer om index-- soos byvoorbeeld jy verklaar 'n verskeidenheid van nul tot nege. Maar jy probeer om dit aan te raak 10 waarde, het jy nie toegang tot daardie. Omdat jy nie verklaar nie. En so jou rekenaar gaan om te kyk na dit wees, uh oh, jy probeer om te gaan buite die grense van 'n indeks. Ek gaan om jou te gee 'n segmentering skuld. Dink as segment, reg? 'N ekstra segment, die skuld is wanneer jy probeer om iets te verbreek en jy moet nie daar wees. Segmentering skuld is altyd jy probeer om dinge raak dat jy nie moet wees raak. So algemene voorbeelde is 'n indeks. Natuurlik, as jy probeer aan te raak wat null, dit sou ook so goed werk. As jou wyser probeer raak dinge wat nie sou aanraak nie, wat kan ook so goed werk. Die meeste tipies jy sal sien dit in 'n skikking. Almal goeie? GEHOOR: So as jy wil om toegang tot die 10 punt en daar is slegs 'n beperking nege of iets. PROFESSOR: Ja, presies. Min of meer. Koel. Geagte Andi. So het ons hierdie wonderlike gekry dinge genoem soorte. As Merge sort-- soos ons gesien in byvoorbeeld wanneer David het die hele ding in class-- hoekom As dit so baie vinniger as enige van die ander soorte, hoekom doen ons eens die moeite om te weet enige van die ander soorte? Wat is hierdie vraag wat jy regtig vra? Wat is die drie word-- GEHOOR: Wat is die trade-off? PROFESSOR: Presies. Dit is wat die vraag is gevra. Wat is die trade-off tussen Merge soort verse enige ander vorme? GEHOOR: Neem geheue, reg? PROFESSOR: Het jy verduidelik dat 'n bietjie meer? Eerste laat se verduidelik Merge winkel. Hoe Merge soort werk? GEHOOR: So werk dit deur verdeel in die helfte alles en dan om dit saam en herverdeling dit in orde is, soos elke keer as jy saamsmelt die stelle. PROFESSOR: Pretty much. So ek kan dit trek uit, maar dit sou neem my vyf minute om dit uit te trek. Kyk terug na die artikel skyfies waar ons gedek Merge soort. Presies. So die manier Merge soort werke is dit dinge verdeel in die helfte, en dan lyk dit net op die eerste waardes van almal van hulle en sorteer net dat. Voortdurend skep nuwe skikkings en plaas dinge meer en meer in orde is. En so terwyl dit is baie, baie vinnige omdat it's-- jy weet, 'n binêre soek is N teken van n. Jy skep so baie verskillende skikkings dat jy met behulp van 'n groot hoeveelheid van die geheue. En so, terwyl dit is vinniger, die handel af hier is dat jy gebruik meer geheue. En so, wenk, sorteer en soek bedek was 'n baie meer van hierdie jaar as wat hulle in die jare vorige gewees het. Julle moet sien dat dienooreenkomstig op die quiz weerspieël. Ek sou beslis tyd gaan oor wat al die verskillende soorte is, hoe binêre soek, hoe lineêre soek werk. Hoe om dalk pseudokode kodeer diegene uit. Wat is die loop tye? Iets soos hardloop tye is baie maklik om af kopieer na 'n nota vel, reg? Dit is regtig moeilik wanneer jy in die middel van die toets en jy het om uit te vind wat. Kopieer dit neer. Ek waarborg jou jy gaan nodig om te weet dat. Wat is die trade-offs? Ergste geval, die beste geval scenario vir almal van hulle, baie ken. Ja? GEHOOR: Het ons nodig het om te weet hoe om saam te smelt soort kode? Soos, moet ons onthou die rekursiewe? PROFESSOR: Ek glo dit hoogs, net want dit is soos redelik ingewikkeld. Maar dit kan nie wees as ons infeasible jou vra om dit uit pseudokode gebruik. Ja. Yep, OK, nog een. Dit kan in kom jy laaste stuk in 'n bietjie. Ja? Het almal hoor dit? OK, so pretty much eerste alles, watter tipe program sou wees gee jou 'n uitset soos hierdie? Onthou ons jou gevra om te leer oor hierdie nuwe tipe debugging hulpmiddel? Wat was die naam van dit? Valgrind, reg Dit was 'n program waar jy kan noem wat kan hou van al die geheue jy die gebruik van jou program en aan die gang was. So as jy het iets soos, beslis verloor, 40 grepe in een blok. Waarskynlik is jy nie onthou om dit te bevry. Want as jy die gebruik van grepe van die geheue, dit beteken dat jy het toegang tot dat die geheue, maar jy is nie in staat om te vry was. So wat jy wil maak seker dat jy ook is gebruik van free-- dit is 'n function-- om alles gratis van die geheue hertoegewys deur malloc. Koel. So hierdie skuif, sal ek dit op. Dit is oral in 'n baie lesings, in 'n baie van artikel skyfies. Jy wil regtig om seker te maak jy weet net al hierdie dinge. Óf in jou kennis vel of as jy dit wil memoriseer, voel vry om. Dit is baie, baie, baie belangrik. Ook 'n baie goeie vraag wat ons kan vra. Hoekom is Seleksie sort-- blik op Seleksie sort-- al die Runtimes is N kwadraat. Ongeag van hoe die lys kom by jou as, so hoekom is Seleksie sort-- Ek sal julle ouens gee 30 tweede dink hieroor. Want dit is soort van verwarrend. Dit behels 'n konseptuele denke. Waarom sou die aanloop tye dieselfde in beide die ergste en die beste geval scenario? Ja? GEHOOR: Omdat Seleksie soort elk posisie of ruimte in hierdie klein verskeidenheid ding of wat ook al. So selfs in die beste geval, selfs al is dit perfek is gesorteer, sou dit nog steeds te wees soos, OK, een. In my eerste plek het ek een. En gaan deur almal van hulle. OK, een is die kleinste. En dan weer gaan dit en is soos, OK, twee is die kleinste van al die dinge. Maar dit het nog check elkeen. PROFESSOR: Ja. So byvoorbeeld, laat ons net sê Ons het 'n lys, wat reeds gesorteer, 'n skikking 04:59. Die manier waarop Seleksie vorme is dat dit gaan deur, dit kontroleer hierdie twee. Dan tjeks dit daardie twee. En dan is dit tjeks, en dit kontroleer. Dit hou die nagaan van alle van hulle, ongeag of nie dit is eintlik gesorteer. Want dit is eenvoudig die manier waarop die soort werk. En so die vraag is soort van soos 'n konseptuele vraag wat ons sal vra. Waar die eerste, jy weet wat Seleksie soort is, reg te wees, om om die vraag te beantwoord. Jy moet in staat wees om te verstaan konseptueel wat aangaan. En dan kan jy aansoek doen dit en dink, OK laat dink net die ergste geval scenario. Hulle is almal in dalende volgorde. Hoe sou dit raak nie? Wat as dit stygende volgorde? Indien dit reeds is gesorteer? Hoe sou dit invloed op die Runtimes? En dan Seleksie soort, sal jy sien dat dit nie eintlik saak nie. Omdat jy die beheer van is al die waardes, ongeag van wat gebeur. En so goeie dinge om te onthou. Waarom sommige vorme verskil van ander en hoe om die beste en die ergste geval scenario's sou almal van hulle te beïnvloed. Ek gaan regtig getref in allerhande want dit sal wees op die quiz. Ja. OK. Daar is ses minute oor. Ek kan drie minute van die vrae te neem. Ek kan ook rond te hang vir soos 20 minute na artikel as jy wil om vrae te vra as well. Is daar iemand het net regtig kort vrae of konseptuele kwessies hulle is onseker oor die nou? Ja? GEHOOR: Kan jy 'n bietjie praat bietjie oor bis operateurs? PROFESSOR: Ja. So bis operateurs iets wat jy waarskynlik dalk net wil op jou vel te sit. So quickly-- Ek wil nie te veel in diepte gaan omdat Harvard, in hul review sessie, bedek dit baie goed. Bis operateur, is daar vyf van hulle, reg? Daar is hierdie, wat is x of funksie, daar is ampersand, wat is die en. Pyp, wat is die of. En dan moet jy die twee verskillende tipes verskuiwings. As ek vir jou twee waardes, as Ek gee jou, soos, een en 'n. Wat sou dit evalueer? As ek vir jou waar en waar is, waar? Wat van waar of vals? Steeds waar, reg? Want daar is 'n of. Ons sal waarskynlik gee jou nommers. So onthou, een is gelyk aan ware, nul is gelyk aan onwaar. En ons kan gee jy hierdie dinge en vra om ons te vertel wat gebeur. Harvard dek dit binne die eerste 10 minute van hul studie sessie regtig, regtig goed. So julle ouens wil maak seker dat jy terug kyk op daardie. GEHOOR: Is pisa5 gaan wees op die quiz? PROFESSOR: No. Moet nie eers kyk na pisa5 nou. Dit is moeilik. Net nie eens die moeite om na pisa5. Maar, soos 'n paar wenke en voorstelle, ek stel voor jy begin pisa5 sodra die quiz is verby. Dit sal die hardste wees week, maar dan moet jy ouens sal deurgegee dit op die heuwels van rollende groen en hondjies, en dit is goed. Hierdie klas kry beduidende makliker na die vyfde pset. GEHOOR: Kantoor ure is Sondag, Maandag? PROFESSOR: Ja, so kantoorure sal die Sondag tot Maandag vir die pset. Kantoorure vanaand wese sal net vir die hersiening quiz wees. As iemand wil om in te kom en vra die Tas 'n vraag, sal ons daar wees. Ek sal dalk nog 'n vraag te neem As iemand het 'n vraag? Ja? GEHOOR: As jy definieer nodes, [onhoorbaar] as jy sê node ster en dan volgende, doen die rekenaar outomaties verstaan ​​dat jy verwys na 'n ander wyser? PROFESSOR: No. GEHOOR: Jy moet Herkoppel dit [onhoorbaar]? PROFESSOR: So basies struct van 'n node is, onthou, dit is soos jy die knoop skep en dan moet jy 'n wyser genoem volgende. Al wat jy doen is om die struktuur daar. Jy het om te wys wat iewers aanwijzer. So het die rekenaars nie weet wat dit nog doen. Jy moet eintlik ken dit toe jy skep jou geskakelde lys. En dit is wat hoofsaaklik pset 5 sal wees op. So geen bekommernisse oor enige van daardie reg nou. GEHOOR: So het ons nie nodig het om te fokus te veel op die skakel lys, net die algemene opvatting? PROFESSOR: Slegs pretty much stapels, toue, skakel lyste, bome, hash tabelle. Net in staat wees om te weet wat hulle is. Ons gaan nie om te vra jy enigiets spesifieke graag want ons het nie regtig gedoen het 'n pset dat die dek enige van daardie nie. So in die laaste twee minute voor Ek stel jou vry om hierdie quiz dood te maak. Pretty much, soos, dink oor hoe ver jy ouens het gekom in hierdie klas. Ek onthou toe week twee van hierdie klas, sommige van julle spandeer drie uur skryf water. Hoe lank sal dit jou neem ouens om water nou skryf? 30 sekondes, miskien? Dink oor hoeveel julle ouens geleer het. CS is 'n baie, baie hard onderwerp. Daar is geen twyfel dat. Dit is moeilik, dit is hoekom niemand bestudeer dit. Dis net hard. En dit is heeltemal fyn. En ek is baie trots dat almal het dit so ver gemaak. Psets is nie maklik nie. Hulle neem 'n baie van tyd. Julle ouens, ek sal nooit vra om te skryf die spel van die 15 of Vigenere op die pset. Geen behoefte om net freak uit oor dat. Al wat ons hier toets is om te evalueer jou konseptuele kennis, sowel as sommige van jou basiese vaardighede van kodering. Die toets is ontwerp om regtig uitdagend. Soos, is dit ontwerp vir jou om nie te kry 100. Dit is ook ontwerp vir jou om seker nie in staat wees om te voltooi in 75 minute. En dit is heeltemal fyn. Ek is 'n student myself. Ek weet, ek haat dit as ek loop uit 'n quiz wees, kak. Dit was werklik moeilik. Waarskynlik wat gaan happen-- en dit is heeltemal fyn, Ek vertel julle nou. Die middel van hierdie dinge is nie hoog op almal. En vir diegene van julle wat is steeds, soos, drieë op jou probleem stelle, dit beteken nie dat jy gaan 'n 60 persent te kry in hierdie klas. As jy 60% op die quiz, beteken dit nie beteken jy gaan kry 'n D in hierdie klas. Ons sien, veral ek, want dié van julle in my artikel, Ek sien hoe hard jy ouens is almal werk. En ek hou van dit. Julle sal goed wees. Daar is geen nagedagtenis van institusionele geluk aan die einde van die semester. Omdat al die Harvard kinders vertel hul vriende, o, sal jy goed wees. Niemand is wat jy vertel ouens wat hier. So ek het vir julle dat hier ouens vertel. Julle sal goed wees. Ek is so trots op almal van julle ouens. Die toets sal moeilik wees. Bestudeer dit, en daarna net gooi dit weg. Maak gereed om nuwe dinge te leer. En eet snoep. Ons het baie van die lekkergoed. Kry 'n goeie nagrus se. Moenie slaap nie, want wat regtig 'n slegte wil wees. CS is 'n baie van die logika. As jy nie slaap nie, kan jy nie funksioneer, en jou brein kan nie funksioneer. En ek sal hier wees vir die volgende 20 minute as iemand wil om rond te hang. Julle gaan dit dood te maak. Sterkte.