ALLISON BUCHHOLTZ-AU: Hey, të gjithë. Mirë se vini në seksionin. Sot është vetëm do të jetë mbi të gjitha quiz të shqyrtojë për quiz tuaj mërkurën. Unë shpresoj se gjithkush kujton se ata kanë një quiz të mërkurën. Dhe në qoftë se ju nuk e keni, mirë, tani ju keni qenë kujtoi. Pra, e mërkurë sigurohuni që ju të tregojë deri për klasën apo strehim të tjera si është e nevojshme. Ju djema do të jetë awesome. Ajo do të jetë i madh. Dhe unë jam duke shkuar për të bërë gjithçka që unë mund për të ndihmuar në përgatitjen ju sot për quiz tuaj tani. Dhe edhe në rast se ju nuk e dini, ekziston një sesion të gjerë kurs shqyrtim sot në 07:00 në Laboratorë Northwest B103 dhomë. Ju mund të shihni mua përsëri për një përsëritje, si Unë do të të çojë një pjesë të asaj seancës së shqyrtimit gjithashtu. Pra, nëse ju nuk mund të merrni mjaft prej meje Tani, ju mund të vijnë përsëri sonte. Të gjitha të drejtë, gjërat kështu e para e para. Vetëm disa këshilla quiz para ne në të vërtetë zhyten në të shqyrtime. Pra, si me çdo provim, praktikë patjetër do të ju ndihmojë jashtë. Nuk janë provimet nga e kaluara gjashtë apo shtatë vjet atje, kështu që kjo është një shumë të praktikës material për ju djema të kenë. Dhe në fakt, sot është me të vërtetë vetëm do të do të jetë mbi çdo çështje se ju djema keni pyetje mbi si si duke punuar me problemet e praktikës nga quiz zero. Kështu që unë do të vjen për të vjellë quiz zero nga viti i kaluar këtu, dhe ne mund të punojnë me çdo problem se ju djema do të donte për të. Pra praktikuar. Ju jeni duke shkuar për të fillojnë të bëjnë këtë sot. Kodi në letër. Pra, vërtet, nëse të gjithë në fakt mund të marrë jashtë letër, që do të jetë i madh, sepse ju nuk jeni do të keni kompjuterin tuaj në Provimi dhe shkruar nga kodin me dorë shpesh është shumë më e vështirë se sa ju mund të presin. Ju jeni duke përdorur për të vetëm duke parë atë dhe shtypni atë, dhe ju keni compiler tuaj për të ju ndihmojë kur ju keni gabime, por ju nuk do të merrni atë në provim. Pra, është e vërtetë e rëndësishme për të vërtetë të jenë në gjendje për të shkruar kodin, dhe se kujtesa e muskujve për të bërë ajo me dorë me të vërtetë do të ju ndihmojë. Pra, ne jemi duke marrë një pak më afër. Është e hënë. Provimi juaj është të mërkurën. Por në qoftë se ju keni kohë, patjetër të marrë një e provimeve të vitit të kaluar, ose vit para nën kufizim kohor për një orë e gjysmë. Vetëm shtang një orë dhe gjysma e kohës, dhe uleni veten poshtë, dhe vetëm punë me problemet sikur keni qenë në të vërtetë marrë atë, sepse një nga gjërat më të mëdha që kemi dëgjuar për kuize është se ata janë shumë të gjata. Kjo është një shumë e materialit. Nuk janë një shumë pyetje, dhe shumica e njerëzve nuk mund të përfundojë. Unë e di se unë totalisht nuk ka përfunduar kuize e mi kur mora klasën. Në lidhje me këtë, si më pak të seksion të rehatshme, e kuptojnë se ky kurs është menduar për të kujdesem për njerëz të të gjitha niveleve. Gjithë Arsyeja që keni ndarë më pak të rehatshme, diku në mes, dhe më të rehatshme është për të lloj e bëjnë atë më të drejtë. Dhe në qoftë se ju jeni më pak të rehatshme, kjo është nuk është e nevojshme në vetvete për të marrë gjithçka. Ashtu si në qoftë se ju jeni duke marrë çdo gjë, ju do të ndoshta jetë në pjesën më rehatshme. Pra, natyrisht që nuk mundi veten lart shumë e vështirë në qoftë se ju nuk mund të përfundojë provimin. Merrni atë nga unë, nuk e kam bërë atë. Unë jam ende një flotacion. Unë jam ende duke ndihmuar të mësuar kurs. Ju do të jetë mirë. Dakord. Dhe së fundi, të merrni disa fle. Natyrisht me ndonjë provim ne gjithmonë thonë se kjo. Cramming një natë para dhe të mos marrë ndonjë gjumë bën not-- ndoshta në qoftë se punon për ju, shkoni për të. Por, për shumicën dërrmuese të njerëzit, duke marrë disa fle, lënë pjesën tjetër të trurit tuaj dhe të shërohen para se të vijnë në për provim me të vërtetë do të ju ndihmojë. Gjithashtu do të pothuajse siguri do të jetë karamele në provim, kështu që ju duhet të shohim përpara. Ju djema do të bëjë të madh. Ajo do të jetë mirë. Dhe tani në orën e ardhshme dhe një gjysmë I do të përpiqet dhe prep ju sa më mirë që mundem. Kështu që unë kam slides nga thelb të gjitha seksionet deri tani. Unë nuk jam duke shkuar për të shkuar nëpër të gjithë ata, sepse kjo nuk është e e mundshme në një orë e gjysmë, si dhe si duke punuar me probleme praktike. Pra, në vend që unë kam një listë të temave. Këto janë të gjitha gjërat që ne të mund të pyes ty në. Nëse ka ndonjë gjë që me të vërtetë hedhje jashtë që ju doni të shkoni mbi se ju duan mua për të shkuar mbi konceptualisht, Unë mund të provoni dhe të japin ju një pasqyrë atje. Ose në qoftë se ju doni të hidhen të drejtë në të bërë probleme praktikë së bashku, ne mund të bëjmë atë. Është e deri tek ju djema. Nuk janë aq shumë prej jush. Pra, kjo është çdo gjë që ju djema pëlqen të bëjë. Unë dua të jem më e dobishme për ju djema. Kështu që unë do të ju lejojnë të vetëm shikoni. AUDIENCA: Një gjë është e grafiku që ne të zbatojmë duke thënë se në lidhje me rafte dhe tog. Vetëm gjithë ideja prapa kjo dhe çfarë do të thotë. ALLISON BUCHHOLTZ-AU: Po, OK. Kjo është e gjitha mënyra në në fund, kështu që më lejoni të lëvizni nëpër. AUDIENCA: Ne nuk duhet të ta bëjë atë tani, por çfarëdo. ZAMYLA Chan: ishte aty anything-- këtë. A është ky lloj i fuzzy për njerëzit? AUDIENCA: Po, unë e dytë që. Dhe ne mund të bëni tampon del nga shtrati? ALLISON BUCHHOLTZ-AU: Buffer overflow? OK. Pra tampon del nga shtrati është shumë e lehtë vetëm për të folur rreth. Kjo është në thelb mbulesë mendoni për disa kujtesës array që ju keni, apo jo? Ne zakonisht flasim për buffer overflow kur ju nuk jeni duke kontrolluar se sa përdorues është vënë në, e drejtë? Dhe ideja qenit me buffer overflow është ata janë të vendosur në pjesën më Të dhënat shumë për hapësirë që e keni caktuar për ta, apo jo? Pra, nëse ju thoni, jepni me disa Mesazhi, ne jemi duke supozuar se ata janë duke shkuar për të dhënë na një mesazh arsyeshme gjatësi. Ndoshta nja dy linja, gjësend. Pra, ne nuk do të shikoni. Në vend të kësaj ata na ushqejnë në një Gjithë libër që është një mesazh, dhe përplot sasinë e hapësirë ​​që ne kemi ndarë për këtë. Dhe ajo që ndodh është se mund të prishësh vende që nuk është menduar. Kështu që unë e di Profesor Malan tha diçka në lidhje me sulmet tampon del nga shtrati. Pra, kjo është ajo ku vullneti input përdorues disa sasi masive të të dhënave në shpresat se ai mbivendos kaluarën fundi i tampon tuaj dhe zëvendëson something-- unë pyes veten I kemi këto slides këtu. Unë nuk mendoj se ne kemi këto slides në këtu. Por në thelb ai mbivendos disa pjesë të kujtesës që lejon atij qasje në pjesët e kompjuterit tuaj se ju nuk do të zakonisht kanë qasje në. Gjëja më e madhe me buffer overflow është vetëm për të kuptuar se ai ndodh kur ju nuk jeni kontrolluar sa tuaj përdorues është vënë në. Kur ju nuk jeni lloj i mbrojtjen kundër kësaj. Dhe te thjeshte e saj gjë, kjo është vetëm përdoruesit tuaj inputting një sasi masive e të dhënave në një përpjekje të prishësh disa sigurisë pjesë e kujtesës tuaj. Kjo është e gjitha ajo është. Pra, kjo këtu, rafte dhe tog. Në thelb e gjithë kjo është është vetëm një përfaqësim i kujtesës dhe ku gjërat janë ruajtur. Kjo është me të vërtetë lloji i të gjithë ju duhet të dini. Gjërat më të mëdha që ju duhet të dini se janë të that-- lejoni të shohim nëse ka një better-- këtu. Pra, kjo është rafte këtu. Pra, rafte ka të bëjë me të gjitha funksionet tuaja që ju jeni duke bërë thirrje në çdo kohë të dhënë. Dhe çfarë është e rëndësishme të kujtoni plaste e javës së kaluar me malloc është që ju të vërtetë nuk kanë kontrollin e nevojshme mbi të. E gjitha varet kur sigurtë Funksionet janë ekzekutuar. Dhe, kur ata janë të ekzekutimit, ata kanë atë që janë quajtur korniza rafte që shkojnë deri këtu. Pra, të gjitha llojet e ndodh pa asnjë kontribut të vërtetë nga ju. Ju shkruani programin tuaj, dhe ju le të kandidojë, dhe rafte lloj i merr kujdeset për veten si ajo ka nevojë për të. Pra, në qoftë se në kryesore që ju jeni duke bërë thirrje kubike, që do të miratohet deri këtu. Kjo do të krijojë një kornizë. Por nuk ka asgjë që ju të bëni në mënyrë eksplicite për të krijuar atë kornizë rafte përveç shkruani funksionin për të filluar me, OK? Çfarë është lloj i nën tuaj kontrolli është tog me malloc. Pra, sa herë që ju diçka malloc, ju jeni duke marrë kujtimin nga plehrat. Dhe kjo është e kujtesës që ju kanë, për mungesë të një fjale më të mirë, Kontrolli i qartë mbi të, sepse kujtoj me malloc kjo është në thelb nuk deri sa të thoni ndryshe. Për ata prej jush që shikuar seksionin javën e kaluar, është aty deri sa të ju them se për të shkuar larg. Ajo do të jetë aty, nëse përndryshe nuk tha. Pra tog është vetëm diçka ju mund të mendoni si kujtim se ju keni kontroll mbi. Dhe ata janë vetëm dy gjëra të ndryshme të mëdha. Përveç kësaj, ju nuk duhet të ketë për t'u shqetësuar shumë për rafte dhe tog pyetje ose zakonisht më thjesht nëse ju keni parametrat lokale ose një funksion do të jetë në rafte apo tog. Natyrisht në këtë rast ajo do të jetë rafte. Nëse ju jeni mallocing diçka, ku që vjen nga? Grumbull. Nëse ju shikoni në kuize praktikë, ato në përgjithësi janë lloji i pyetjeve që ata kanë. Ju nuk keni për t'u shqetësuar shumë në lidhje me të. Ju merrni në më të qartë në lidhje me rafte dhe tog më vonë, ose në klasa të tjera CS. Pra, vetëm duke pasur një lloj të Ideja e përgjithshme e asaj që kjo është do të jetë i mirë, që unë vetëm lloji i kaloi. Çdo tema të tjera? Po? AUDIENCA: A mund të shkoni mbi pointers përsëri me të vërtetë të shpejtë? ALLISON BUCHHOLTZ-AU: Pointers? A dëshironi konceptuale pasqyrë e pointers ose ju praktikë me pointers? AUDIENCA: Lloji i si sintaksës. ALLISON BUCHHOLTZ-AU: Sintaksa? Po. OK, ne jemi duke marrë atje. Yeah, kështu që kjo është vetëm lloj diçka kur ju keni një funksion gjithkund rekursive, çdo herë që funksion gjithkund rekursive është quajtur, ai thjesht shton kornizë tjetër rafte. Pretty much një shembull e si ju nuk e bëni të vërtetë kanë kontroll mbi korniza në rafte tuaj. OK, pointers. Të gjithë të drejtë, kështu duke krijuar pointers. Mos harroni, kjo është vetëm lloji yll. Pra, çfarëdo lloji i të dhënave që ju do të jeni të treguar. Pra, kjo do të jetë një tregues për një int. Kjo do të jetë një tregues për një char. Kjo do të jetë një tregues për një noton. Pra, kjo është në thelb çfarëdo ju dëshironi që ajo të jetë duke treguar, yll është se si ju deklaroj treguesin, OK? Por atëherë padyshim merr pak ndërlikuar kur ju keni treguesin ose ju keni yll çfarëdo. Pra, dallimi i madh është kur ju jeni declaring-- kështu që ne kemi kaq some-- kjo merr një yll int. Pra, kjo është një akrep thërret x në një int, e drejtë? Pra, mbani mend atë që kjo e bën është kjo e quan sistemit x. Dhe kjo do të kanë disa adresa, e drejtë? Pra, le të vetëm të thonë se kjo është adresa tonë. Pointers të mbajë adresat. Pra, çfarë thotë kjo është se në këtë vend, ne jemi ruajtjen e një int. Pra, një mënyrë tjetër, ne mund të mendojmë për kjo është se ky është një int. Ne nuk e kemi caktuar të vërtetë atë asgjë, por kjo është vetëm një int. Pra, ne mund të bëjmë është nëse ne do të yll x është e barabartë me 5, kjo bëhet një 5, OK? Kjo thotë se të shkojnë për çdo gjë që është e x duke treguar me gisht, kështu që të shkojnë në këtë adresë dhe të bëjnë të barabartë me 5. Pra, ne të caktojë 5 në këtë adresë, e drejtë? Dhe pastaj, nëse ju bëni këtë, kjo na jep adresën e. Kjo është adresa e operatorit. Pra, çfarë është adresa e x? Ne nuk e dimë. Ne nuk kemi caktuar atë një adresë. Ne mund të themi se është some-- tani kemi dhënë atë një adresë, kështu që adresa është 4. Dhe në fakt, nëse ne do të shkojmë nëpër diçka si kjo, lloji i asaj që ne e bëmë. Pra, duke punuar me here-- gjej ajo ndihmon në qoftë se ju nxjerrë jashtë pointers. Nëse ju jeni në provim tuaj, unë highly recomend vizatim kuti. Pra, kjo e para, int x është e barabartë me 5. Kjo thjesht do të thotë që ne kemi disa vendin në kujtesën që është 5, e drejtë? Dhe tabela jonë këtu na tregon se ajo është në adresën 0x04. Dhe atëherë ne krijojmë një akrep. Pra, le të thyer këtë poshtë në një kohë. Pra, kjo krijon disa kuti për një int, e drejtë? Ajo do të mbajë disa adresa e një tij. Pra, kjo është një akrep. Dhe kjo është me të vërtetë i vogël shkumës. Pra, ne kemi disa tregues këtu. Dhe tabela ynë na tregon kjo është adresa është 0x08. Ftohtë. Dhe ne jemi të caktuar atë në adresën e x. Mos harroni, pointers mbajë adresat, OK? Pra, nëse ne duam të mbajë x, ne kemi për të përdorur operatorin adresën, e cila është simbol, për të marrë adresën X i cili, në këtë rast, 0x04. Dhe pastaj, nëse kemi disa kopje int, kjo vetëm krijon disa kuti të tjera që mban një quajtur int kopje. Dhe në qoftë se ne të caktojë atë për this-- kështu që kjo është referenca për atë. Kështu ai thotë se të shkojnë për çdo gjë Adresa akrep mban. Pointer mban këtë adresë, kështu që ne do të shkojnë mbi këtu, dhe ne themi, OK, çfarë është në të? Është 5. Pra kopje bëhet 5. Kuptim? Çka nëse unë u përpoq që të caktojë kjo vetëm treguesin. Çfarë ka tregues të vërtetë të barabartë? Ajo do të jetë vetëm çdo gjë akrep përmban, e drejtë? Dhe pastaj çka nëse unë e bëri këtë? Çfarë do të kopje të jetë tani? AUDIENCA: 0x08. ALLISON BUCHHOLTZ-AU: Po, adresën e pointer tonë. Çdo pjesë e kësaj që ka nevojë të ri-shpjegohet? Ftohtë. Nuk është patjetër një shumë Problemi fun në një quiz që ne mund të mbi atë ju jep më shumë praktikë. Guys nga java e fundit mund të ju them se nuk ishte edhe aq keq. Ne morëm përmes një faqe të tërë tabelë, dhe të gjithë e bëri të madh. OK, kështu që është pasqyrë i sintaksës së pointers. Gjëja më e madhe është të kuptuarit se si për të krijuar ato, bëjnë referenca, dhe adresa e, OK? Ftohtë. Çdo tema të tjera para ne pikiatë në praktikë. Gjithashtu në qoftë se ne jemi duke shkuar nëpër problemet praktikë dhe nuk është diçka që ju doni a përmendore të, ne mund të bëjmë atë shumë. A keni diçka? AUDIENCA: structs dhe listat e lidhura. ALLISON BUCHHOLTZ-AU: structs dhe listat e lidhura, OK. Pra structs. Ne fakt do gjatë këtij sonte too. OK, kështu structs. Structs janë në thelb vetëm një mënyrë për ju për të mbajtur Vlerat e shumta të llojeve të ndryshme. Pra, me një grup ne jemi ngushtë të një lloji të dhënave. Array tonë ose duhet të jetë vetëm numrat, apo vetëm të jetë chars, apo vetëm të jetë gjithandej. Por ndoshta ju duhet të përmbajnë më shumë se kaq. Ndoshta ju duhet të hold-- nëse ju jeni duke folur për një student, ju jeni do të ketë shtëpinë e tyre, e tyre Numri ID, mosha e tyre, ku ata jetojnë, e drejtë? Dhe të gjithë ata që janë të llojet e ndryshme të llojeve. Pra, ju nuk mund të ruajë ato të gjitha në një rrjet. Pra, çfarë ju mund të bëni është që ju mund të krijojë strukturë, e cila ju mund të mendoni si juaj vet lloji i të dhënave personale. Pra, në vend të vetëm duke pasur ints dhe në vend të vetëm që ka gjithandej, ju mund të keni një studenti të tipit që ka të gjitha këto fusha në të. Pra, në mënyrën se si ne nisja structs tona is-- vërtetë pasi shkrimi im është e tmerrshme, ne kemi do të kalojnë në të shtypur. Woo. OK, kështu që në qoftë se ne duam të krijojmë një struct-- Unë jam vetëm duke shkuar për të këtu poshtë. Mosrespektimi në çfarëdo kryesore të cilat ne do të përdorim më vonë. Pra, në mënyrë që ju doni të bëni ajo është me typedef struct. Dhe le të vetëm të quajmë këtë nxënësin sepse kjo është ajo që unë isha duke përdorur. OK, kështu që typedef do të thotë që ju jeni përcaktimin e një lloji të ri, OK? Ka nuanca në kur ju bëni vetëm një struct kundrejt një struct typedef. Për të gjitha qëllimet dhe qëllime, ju djema janë vetëm do të mendojnë se ata janë përafërsisht njëjtë dhe vetëm përdorin typedef struct tani për tani. Ajo do të bëhet mënyra më e dukshme në tuaj P tjetër të vendosur se çfarë janë ato dallime, por unë nuk mendoj se ju duhet të shqetësuar për këtë tani. Unë do të shumë më tepër ju e di se si për të krijuar një të tillë, hyrë në të, dhe të caktojë [? Vlera. ?] Një lloj i ri i struct, dhe ne jemi duke e quajtur atë të studentëve. Pra, pasi ne jemi duke bërë krijimin e kësaj, për të gjitha qëllimet dhe synimet, ju do të keni një tip të quajtur studentore. Dhe ju mund të mendoni për atë vetëm si një lloj si një INT, ose një pezulli ose një char. Kjo është vetëm një tjetër lloj, OK? Pra, në këtë, çfarë kemi? Ne kemi ndoshta një emër. Pra, ndoshta ne duam një emër string. Dhe ne kemi ndoshta një int që është një ID. Dhe ne kemi një tjetër në kjo është numër telefoni. Dhe ne some-- kemi, le të shohim. Çfarë tjetër mund të kemi? Ne do të kemi një varg në shtëpinë e tij. Të gjitha gjërat që një nxënës ka. Pra, kjo krijon strukturë tani. Pra, si mund të kemi krijuar një student? Në qoftë se ne kemi një variabël që është do të flasim për Walker këtu, kështu që ne have-- ne jemi vetëm do ta quajmë këtë këmbësor. Ai ka nevojë për një lloj. Çfarë është lloji juaj? AUDIENCA: Student. ALLISON BUCHHOLTZ-AU: Student. Pra, kjo thjesht krijon nje objekt qe mund të mendoni që i ka të gjitha këto gjëra. Ju vetëm krijoi një student këmbësor. Deri tani, ne duhet të jenë në gjendje të caktojë të gjitha këto, e drejtë? Pra ka dikush kujtohet se si ne kemi hyrë në një struct? AUDIENCA: Periudha. ALLISON BUCHHOLTZ-AU: Periudha Exactly. Pra, nëse kemi dashur të caktojë atë një emër, ne mund të bëjmë atë. Natyrisht kjo do të be-- këtë pjesë këtu do të të jetë brenda kryesor, kështu që në fakt më lejoni të bëjë këtë. Shpallni këtë më sipër kryesore kështu që ne mund ta përdorin atë brenda kryesor. Deri tani unë dua që ajo të bëjë ID, dhe ne do të bëjmë vetëm disa atje, dhe pastaj ne do të caktojë një shtëpi. Bam. Ftohtë. Kështu që tani duhet të ndonjëherë nevojë për qasje çdo gjë më vonë on-- ndoshta we-- në qoftë se ne ndonjëherë nevojë për të hyrë në ndonjë gjë, le të vetëm të bëjë një ID kopje int. Dhe unë dua të kopjoni ID Walker-it në këtë. Si mund të bëj atë? Ju duhet për të hyrë në maratonist struct të [? shkoni për këtë?] [? E?]. Dhe të njëjtën mënyrë që ne caktuar atë këtu, si mund të kemi qasje në atë kur ne duam të japin këtë vlerë për diçka tjetër? AUDIENCA: Walker.id. ALLISON BUCHHOLTZ-AU: Po, pikërisht. Pra, kjo është shumë e shumë të gjitha ju duhet të dini për structs. Ju vetëm duhet të mendojnë për ato si një variabël. Në thelb një krijoni tuaj llojin e ndryshueshme, OK? Ju përdorni atë për të deklaruar Variablat në asnjë mënyrë. Këtu walker është ende një variabël. Ajo ka vetëm një nxënës të tipit tani në vend i INT tipit, ose një varg tipit, ose char lloj. Nëse ka pasur një mënyrë e thjeshtë për të folur rreth structs, kjo është fjalë për fjalë vetëm një krijuar vet lloji juaj e të dhënave që ju lejon të grupit të gjitha këto të ndryshme lloj i të dhënave së bashku. A kjo ka kuptim? OK. Kjo dhe qasjen me pika. Pretty much gjitha që ju nevojitet. OK, ku ka shkuar PowerPoint ime? Këtu është. E pra kjo është e pazakontë. Aha. OK, cool. Çdo gjëra të tjera, ose nuk kemi duan të shkojnë për të ushtruar? Praktikoni? OK. Awesome. Unë jam duke shkuar për të dalë këtë. Nëse në çdo moment gjatë Pyetjet praktikë, Unë jam i lumtur për të rindërtuar dhe të shkojnë përmes gjërave. Kështu që unë kam quiz zero deri këtu. Nëse ju djema doni të tërhequr ajo deri në kompjuterin tuaj, vetëm si të marrin pesë minuta për të shfletoni përmes. Ndoshta zgjidhni një top pyetje që ju doni të shkoni gjatë. Nëse ju djema nuk mund të vendosë, ne vetëm do të ngadalë të fillojë të punojë me to, por unë jam i sigurt se do të jetë një pyetje që ju janë veçanërisht të etur për të folur rreth dhe kanë Më të punojnë me me ju të gjithë. Pra, thjesht shkoni përpara dhe për të marrë pesë minuta. Lëviz nëpër. Dhe kjo është quiz nga viti 2013. AUDIENCA: Zero? ALLISON BUCHHOLTZ-AU: Po, quiz zero. Ne nuk jemi duke bërë një kuiz gjëra. Ne do të bëjmë që në disa javë. Gjithashtu, për ato prej jush që erdhi në fund, ne kemi karamele, kështu që bëni ju djema doni karamele? AUDIENCA: Sigurisht. ALLISON BUCHHOLTZ-AU: Unë jam vetëm do të kalojnë përreth. Hej, nëse ju djema të merrni këtu në fillim, ju merrni më shumë karamele. Kjo është në rregull. Ben, ju doni karamele? Ju dëshironi që disa nga këto? Ka edhe Snickers nëse dikush dëshiron Snickers. Unë do të iki këtu dhe këtu. Ndjehen të lirë. A doni më? AUDIENCA: All vendosur. Falemnderit. ALLISON BUCHHOLTZ-AU: E kam pasur një të mirë pak grumbull atje në fillim. Ju djema merrni për të marrë quiz dhe Kam marrë që të ketë një parti quiz notimit. Është kaos. 900 provimet. Ajo do të jetë aq shumë fun. Do të jetë i madh. Unë jam goxha i sigurt se është një e lidhjes më të madh të stafit netë të vitit. Ka dikush bërë quiz zero nga vitin e kaluar por nga kurioziteti? AUDIENCA: Pjesë e saj. ALLISON BUCHHOLTZ-AU: Pjesë e tij, OK. A keni pyetje për ndonjë prej tyre? AUDIENCA: Unë tashmë shkoi të orarit të punës. Faleminderit pse. ALLISON BUCHHOLTZ-AU: Well, me shpresë është ende lloj i dobishëm. Kur keni shkuar në Orari i punës për këtë? AUDIENCA: TF im kishte atyre këtë pasdite. ALLISON BUCHHOLTZ-AU: Oh. Kush është TF juaj? AUDIENCA: Fred [? Wujaya?]. ALLISON BUCHHOLTZ-AU: Ka kaq shumë NGP. Kaq shumë. Dakord. Çdokush keni ndonjë të fillojë që unë mund të shënoj se ne duam të punojmë në? Unë supozoj pointers një me tabelën. Shkoni për të. AUDIENCA: Ndoshta kaloni një. ALLISON BUCHHOLTZ-AU: Pra numri 12? Unë supozoj numër 8 dhe 9 janë ndoshta njerëzit Ones duan të shkojnë mbi të. AUDIENCA: Dhe 10 dhe 11. ZAMYLA chan: Dhe ju djema e di ju merrni një faqe të shënimeve, e drejtë? AUDIENCA: Yeah, kështu që çfarë janë ne kemi lejuar për të vënë në atë. ALLISON BUCHHOLTZ-AU: Ju jeni të drejtë për të vënë çdo gjë që ju dëshironi. Dhe kjo mund të shtypet. Me aq sa unë kujtohet, e jona u shtypur. AUDIENCA: Ju mund të bëni mbrapa dhe të dyja palët? ALLISON BUCHHOLTZ-AU: Po, të dyja palët. Pra, diçka si tog dhe [? Fundi mbrapa?] tog, drejtimin tuaj herë. Të dobishme. Ndoshta pak gjëra rreth pointers për t'ju kujtuar. Sintaksa për gjëra. Duke pasur vetëm si një skelet program mund të jetë super të dobishme. Unë e di se unë gjithmonë harruar pikërisht ajo I është dashur të shkruajnë për int main, sepse unë gjithmonë vetëm kopje paste nga vendosur tim të mëparshëm P apo është tashmë atje, kështu që Unë me të vërtetë nuk e shkroi atë, kështu që ka kjo mund të jetë super të dobishme. OK, kështu që pse të mos bëjmë ne të fillojë me numrin 8 pastaj? Dakord. OK. Kështu që e konsiderojnë programin më poshtë. Pra, natyrisht, kur ne shohim pointers, kjo është ndoshta një ide e mirë për të filluar vizatim, e drejtë? Unë dua të di ku të gjithë e mia copë e madhe e shkumës shkoi. Kjo është lloj i bezdisshëm. Pra, ne kemi këtu disa funksion swap që do të marrë në dy pointers. Pra, në këtë rast, ato në fakt duhet të jetë kalimi gjëra kundrejt swap tonë origjinale funksion që mori vetëm në kopje. Pra, atë që do të bëjë is-- le të fillojë me kryesore, sepse kjo është ajo ku 1 është. Pra, ne kemi një int x 1. Ne kemi disa y që është e barabartë me 2. Dhe pastaj ne kemi disa swap që do të marrë ato. Dhe le të shohim se çfarë të bëjmë që kemi këtu. Dhe në table-- tonë oh boy. Si jam unë do ta bëj këtë? Unë jam duke shkuar për të nxjerrë tryezën time këtu. Mezi e bërë atë atje. Mezi e bërë atë. 1, 2, 3, 4, 5, 6, 7. Dhe ata na japin se 1 është 1, dhe 1 2. Ftohtë. Awesome. Pra 3. Dhe nuk ka [? a 1.?] Dakord. Dhe pastaj adresa e x është 0x123. Dhe y është Ox127. Ftohtë. Dakord. Unë dua që ju djema të punojnë në këtë për punën vetëm like-- mbi të me njerëzit rreth jush. I wish I kishte thënë se ndërsa unë po ngritjen. Punojnë në të. Provo dhe të punojnë për të nga vetë për disa minuta, dhe pastaj unë do të punojë në atë me ju. Sepse e vetmja mënyrë që ju jeni të vërtetë do të mësojnë është duke bërë atë vetë. Nuk shqetësohet. Fat të mirë. OK, pse nuk kemi ngadalë të fillojë të punojë me këtë. Pra, të gjithë merr pas një linjë, x është 1. Pas linjës dy, x dhe y janë 1 dhe 2, e drejtë? Ftohtë. Pra, linja e tre është ajo ku gjërat merrni interesante sigurisht. Pra, ajo që ne kemi bërë këtu po ne kemi swapped tani. Ne themi se x dhe y të ketë këto pika, ose ata kanë adresën e x dhe y, e drejtë? Pra, në këtë rast, tre, çfarë është vlera e një? a kishte kaluar në, i ka dhënë vlera e adresës së x, e drejtë? AUDIENCA: 1? ALLISON BUCHHOLTZ-AU: Pra, ne të shtoni atë në x? Çfarë është adresa e X-it? AUDIENCA: 0x123. ALLISON BUCHHOLTZ-AU: Pikërisht. Por çfarë është një të vërtetë duke treguar? Në qoftë se ne ishim të dereference a, çfarë vlere do të na japë. AUDIENCA: 1. ALLISON BUCHHOLTZ-AU: Ajo do të na jepni 1, sepse ajo ne jemi duke thënë është të shkoni në këtë adresa, na tregoni se çfarë vlera është. Pra, çfarë do të b? AUDIENCA: 0x127. ALLISON BUCHHOLTZ-AU: Pikërisht. Pra, kjo është adresa e y. Dhe pastaj çfarë [? dereference? ?] AUDIENCA: 2. ALLISON BUCHHOLTZ-AU: OK, kështu që tani katër. Ne tha se një është equal-- edhe tani ne kemi bërë int temp është e barabartë me yll e a. Pra, çfarë ndryshon? Ka vetëm një gjë që ndryshon këtu. Çfarë është ajo? AUDIENCA: Temp. ALLISON BUCHHOLTZ-AU: temp. Pra, ne mund të rishkruajë të gjitha këto. Një strategji e mirë për këto është vetëm figuring out çfarë ndryshimesh, sepse më shpesh ka vetëm një gjë që është e do të ndryshojë në çdo pikë të caktuar, OK? Pra, ne kemi caktuar temp. Tani pika jonë e ardhshme, pesë, ne kanë bërë yll a të barabartë me yll b. Pra, çfarë ndryshon tani? AUDIENCA: Star a. ALLISON BUCHHOLTZ-AU: Star a, kështu që çdo gjë tjetër mbetet e njëjtë. Dhe çfarë bën yll a të barabartë? AUDIENCA: 2. ALLISON BUCHHOLTZ-AU: 2. Bukuroshe. Awesome. OK, dhe pastaj tani ne kemi fillojnë B është e barabartë tek temp. Pra, e vetmja gjë që ndryshon është yll b. Çdo gjë tjetër mbetet e njëjtë. Dhe çfarë është yll b barabartë me tani? Dhe ju keni përfunduar në tryezë. Sepse tani në fund, në qoftë se ne themi x dhe y, ne e dimë se në këtë point-- ne e dimë se kur ne u ndryshua yll një në 2, atë që bëri është thënë në rregull, në adresuar 0x123 këtu, të ndryshuar atë. Tani kjo ishte 2. Dhe pastaj në këtë pikë, kemi thënë OK, të shkojnë në yll b. Pra shkoni në adresën në 0x127 dhe e bëjnë atë një 1. Pra, tani në fund shumë kur ne fakt kthehet për të kryesore, ne fakt kemi se x është barabartë me 2 dhe y është e barabartë me 1. Gjithkush e mirë me atë? OK, cool. Numri 9. Ju djema punojnë në këtë. Unë jam duke shkuar për të ngritur një bord kështu që ne mund të tërheqë nëpërmjet saj. Ajo do të jetë një shpërthim. Tabelat e mëdha mund të jenë të me të vërtetë e frikshme, unë e di. Por në qoftë se ju vetëm të marrë atyre një rresht në një kohë, ata marrin shumë më pak e frikshme. Dakord. Pra, ju e dini se kjo do të ketë kaluar nëpër kryesor të parë, apo jo? Initializes x dhe y dhe pastaj përpiqet të bie në ujdi tyre. Pra, edhe swap është lart, mënyra e vërtetë atë shkon është se ne jemi duke shkuar nëpër kryesor, dhe pastaj ajo flet deri në shkëmbim, të gjithë të drejtë? Kështu që të gjithë e di se. Pra, i cili nuk ju djema doni të filloni me? A është dikush me të vërtetë i sigurt në lidhje me një nga këto? Ose edhe pjesërisht i sigurt? Pse nuk kemi filluar me x? Çfarë bëjmë ne mendojmë x është? AUDIENCA: 1. ALLISON BUCHHOLTZ-AU: 1. Pra, atëherë pse është 2. Dhe kjo është për shkak se Dallimi i madh këtu është se ne jemi të vetëm kalon kopje ne, e drejtë? Ne nuk jemi duke kaluar duke iu referuar. Pra, edhe në fund të ky program x dhe y kanë qëndruar njëjtë, sepse ata janë vetëm kopje në funksion swap. Ata në fakt nuk ndryshojnë, e drejtë? Pra, çka në lidhje me një, b, dhe temp? AUDIENCA: a është b. ALLISON BUCHHOLTZ-AU: a është b. Pra, në këtë rast, a ishte x, e cila është 1, drejtë? Kështu që këtu, le të ecin nëpër atë. Pra, në fillim, a dhe b janë 1 dhe 2 dhe e përcaktuar. Pra, fillimisht temp merr caktuar për një, kështu që temp është 1. a është e barabartë me b, Pra, ne të merrni 2, dhe b është e barabartë tek temp. Tani ne kemi marrë 1. AUDIENCA: Në një të kaluar të swapped simbol x dhe y simbol. Çfarë saktësisht do të thotë kjo? ALLISON BUCHHOLTZ-AU: Pra kjo do të thotë se ju jeni duke kaluar duke iu referuar. Pra, kjo do të thotë që ju jeni në të vërtetë duke kaluar në adresat e ku x dhe y jane ruajtur. AUDIENCA: Por ju nuk jeni shkëmbejnë adresën. ALLISON BUCHHOLTZ-AU: Ju nuk jeni shkëmbejnë adresat. Ju jeni shkëmbejnë atë që është brenda tyre. Ashtu si ajo që është në atë adresë, dhe kjo është arsyeja pse ajo punon. Kundrejt në këtë program këtu çfarë ju jeni duke bërë është që ju jeni duke krijuar kopje. Pra, ju keni x dhe y që ekzistojnë si ndryshore e tyre këtu. Por, atëherë kur ju të kalojë ata në swap, është e si në qoftë se ju jeni duke krijuar ky grup të tërë të tjera. Pra, ju nuk jeni në të vërtetë x prekëse dhe y. AUDIENCA: Nëse simbol x është ajo që është në adresa e x, çfarë do të jetë yll x? ALLISON BUCHHOLTZ-AU: simbol x është ajo që është në adresa e x, atëherë star-- mirë, në këtë rast, x nuk eshte nje tregues. AUDIENCA: Oh, OK. Kështu që ju vetëm bëni këtë sepse kjo nuk është një akrep. ALLISON BUCHHOLTZ-AU: E drejta. Ju mund ta bëni vetëm yllin e diçka që është një akrep. Ndoshta ju mund të bëni atë për gjëra që nuk janë, por përpiloj që ju të bëjë që gjërat të çmendur do të ndodhë. Dhe unë nuk jam tamam i sigurt se çfarë do të ndodhë. Ju gjithmonë mund të marrë adresën e diçka, por ju nuk mund të dereference diçka që nuk është një akrep. Nëse kjo ka kuptim, kjo është një dallim mirë që të ketë. Pra, jo shumë e keqe, e drejtë? Tabelat janë shpresë duke marrë pak më pak e frikshme. Dakord. Ah, ato fun. Deri tani, shkruar kodin tuaj. Kështu që unë jam duke shkuar për të ju lejojnë të punoni djema për këtë për rreth katër minuta, dhe atëherë ne mund të flasim rreth mënyrave për qasje atë. Ndjehen të lirë për të biseduar me njerëzit rreth jush. Gjithashtu kjo është interesante. Është si një të gjitha vajzat Seksioni tani. Pretty emocionuese. Përveç Chang. Por Chang nuk është me të vërtetë pjesë e seksionit. Awesome. Perfect. Kështu që unë do të ju jap lë të kuptohet se një çift. Në rast se ju keni më shumë se një karakter, ku ju keni diçka tjetër si 123 apo 1000 diçka, ju duhet të jetë në gjendje për të lak përmes dhe të konvertohet secili nga ata. Pra, ka një çift mënyra që ju mund të bëni atë, por ju jeni patjetër do të ketë një për lak diku në atje me lak me to, e cila eshte lloj si dhuroj me edhe në qoftë se ju e quani strlen, e cila është lloj i pëlqen oh ndoshta ju doni të përdorni gjatësi e vargut në një farë mënyre. Dakord. Pra, çfarë mendoni ju djema mund të jetë një nga gjërat e para që ne duam të bëjmë? Ka disa raste çift këtu ne kemi nevojë për të llogaritur, e drejtë? Ose ne kemi diçka që është null. Çfarë nuk kemi? Rastet. Null. Ne kemi rastin që ka diçka tjetër se 09, e drejtë? Pra, le të thonë se ajo ka shkronja. Apo kemi rastin që është e vlefshme. Tre raste të mendojnë për. Pra, të cilat e bëjnë që ju mendoni se mund të jetë një lehtë për t'u kujdesur për të parë? AUDIENCA: Null. ALLISON BUCHHOLTZ-AU: Rasti është i pavlefshëm. Pra, çfarë do të bëjmë atje? Audienca: [padëgjueshme]. ALLISON BUCHHOLTZ-AU: Po. Dhe çfarë unë dua të bëj? AUDIENCA: Kthehu 0. ALLISON BUCHHOLTZ-AU: Pikërisht. Awesome. OK. Deri tani rasti se ajo ka shkronja dhe rasti se është e vlefshme. Ne fakt mund të kujdeset për kjo brenda një lak, OK? Pra, një mënyrë për të bërë it-- se çfarë mund të jetë një mënyrë e thjeshtë për të parë nëse është e vlefshme. Ne do të duhet të kalojnë nëpër çdo letër dhe të bëjë çfarë? AUDIENCA: Kontrolloni nëse është e in-- ALLISON BUCHHOLTZ-AU: E drejta, ju mund të kontrolloni në qoftë se është në mes të 0 dhe 9, e drejtë? Dhe pastaj në këtë rast se është e vlefshme, ne jemi do të përfundojë deri në iterating përmes string tonë anyways, e drejtë? Pra, pse nuk kemi të përpiqet dhe të të kombinuar ato në një. Ne jemi duke shkuar për të iterate përmes string jashtë, dhe si ne bëni këtë, ne jemi duke shkuar për të parë të bëjë një kontroll për të parë nëse këtë letër ose në qoftë se karakteri është i vlefshëm. Nëse kjo është, ne jemi duke shkuar për të kryer operacion që ne kemi nevojë për ta kthyer atë. Përndryshe ajo do të kthehet 0, e drejtë? Pra, para se të bëjmë këtë, ne ndoshta dëshironi disa ndryshore që ne mund të kthehemi në fund që do të jetë vlera tona aktuale. Pra, ne jemi duke shkuar për nisja disa vlera të jenë 0. Dhe kjo është vetëm se si ne fillim. Kështu që unë jam duke shkuar për të hequr qafe këtë. Pra, si do të shkojmë për të iterate nëpër këtë varg. AUDIENCA: Për loop. ZAMYLA Chan: Një lak. Pra, çfarë është për tonë? AUDIENCA: i është 0. ALLISON BUCHHOLTZ-AU: Mm-HM. Dhe ne çfarë jemi iterating deri në? AUDIENCA: Gjatësia e rr s. ALLISON BUCHHOLTZ-AU: OK, tani mbani mend ka një mënyrë më të mirë. [Padëgjueshme]. AUDIENCA: Po, ne mund të bëjmë n barabartë. ALLISON BUCHHOLTZ-AU: Pikërisht. AUDIENCA: i është më pak se n. ALLISON BUCHHOLTZ-AU: Dhe pse do të duam ta bëjmë këtë? A ju kujtohet arsyeja? AUDIENCA: Ne duhet të rillogaritjen atë. ALLISON BUCHHOLTZ-AU: Becasue këtë mënyrë ju vetëm duhet për të llogaritur strlen herë. Nëse ju nuk i është më pak se strlen s, që do të thotë ajo kryen rillogaritjen Gjatësia e çdo kohë ju drejtuar për lak, e cila nuk është një kosto e madhe i energjisë, por është praktikë e mirë që të përpiqen dhe të bëjë gjëra të tilla si se një herë. Përjashtim të rastit kur ndoshta ju keni një varg i çmendur që është ndryshuar në çdo përsëritje. Por në qoftë se ajo është duke qëndruar e njëjtë, për të shpëtuar atë. Dakord. Dhe pastaj unë plus plus. Awesome. Ne jemi në rrugën tonë. AUDIENCA: Really shpejt. Së pari, kështu që le të themi se vetëm A e kam më pak se strlen es, janë ata na notimit për dizajn në të gjitha ose vetëm korrektesën? Ata nuk janë. Ne jemi të notimit në korrektësinë për kuize aq sa unë e di. Unë nuk mund të bëjë një On plotë garanci, por për pjesën më të madhe, Pjesa më e madhe, është korrektësia, sepse ju jeni nën një shumë të kufizimit kohor. Dizajn zakonisht do të thotë ju keni kohë për të menduar në lidhje me elegancën e situatës suaj. OK, kështu që ne jemi iterating përmes. Pra, ne kemi nevojë për të ose të kontrolloni për të shohim nëse ky karakter është e vlefshme ose në qoftë se ne mund të kryejnë tonë normal [? një për të i?] funksion. Ne mund të shqetësuar në lidhje me atë që është në një të dytë. Pra, pse nuk kemi take-- nëse dikush mund të mendoj për një mënyrë për të kontrolluar të të shohim nëse kjo është e vlefshme. Ne e dimë se do të jetë disa, nëse kusht, e drejtë? Dhe mos harroni kjo është në ASCII, kështu që si mund shohim nëse ajo nuk është 0,1, 2, 3, 4, 5, 6, 7, 8, ose 9. AUDIENCA: Nëse alfa. ALLISON BUCHHOLTZ-AU: Pra, nëse alfa do vetëm le të na e di nëse kjo është një letër. Dhe në qoftë se ata na japin një simbol, është e ende nuk mjaft të shkuar për të kontrolluar. Pra, nëse ju tërheq lart ASCII tuaj tavolinë, ne e dimë se 0 deri 9 janë në një segment. Tell me numrat që ato korrespondojnë me nëse është e mundur. AUDIENCA: 40. ALLISON BUCHHOLTZ-AU: Pra varg është si 40-- AUDIENCA: Ndoshta. 48-57. Nuk jam i sigurt. ALLISON BUCHHOLTZ-AU: 40-57? AUDIENCA: 48, unë mendoj. ALLISON BUCHHOLTZ-AU: 48-57. Pra, ne e dimë se ata ASCII symbols-- nëse vlera ASCII nuk është në mes të 48 dhe 57, kjo nuk është e vlefshme, e drejtë? Pra, mund të kemi përdorim atë për të Avantazhi ynë ndoshta? Si do të shkojmë për të marrë kjo letër, off pari? Si jemi qasjes ky ky karakter? AUDIENCA: s kllapa i. ALLISON BUCHHOLTZ-AU: Mm-HM. Sepse ne mund të mendojmë për vargjet si vargjeve, mos harroni. Pra, ajo që duam të themi? Ne duam të themi nëse kjo is-- Unë do të ju jap një aluzion. Kjo është më pak se. Çfarë duhet të mendoni se duhet të jetë më pak se? AUDIENCA: 57? ALLISON BUCHHOLTZ-AU: 47, e drejtë? Por ajo gjithashtu paraqet se si ju a 0 në të vetme [? spokes?], sepse kjo është karakteri 0. Ju gjithashtu mund të vënë 47. Duke tryezë ASCII, si ju shihni, është vetëm diçka ju duhet të keni në fletë tuaj quiz. Pra, nëse ky është rasti, në qoftë se kjo është një më pak se 0-- jo domosdoshmërisht dhe. Ajo është vetëm ose do të jenë të më pak se ose më e madhe se 9. Kështu që ju mund të plotësoni këtë të fundit për mua? Pra, ose s të i është çfarë, Rhea? AUDIENCA: Greater se 9. ALLISON BUCHHOLTZ-AU: Nuk ka. Ka që e bëjnë kuptim të të gjithë, si ne mori atje? Këto probleme, ata janë si një herë ju shohin zgjidhje, kjo është si oh, OK. Dhe kjo është arsyeja pse praktikë do t'ju ndihmojë. OK, kështu që ne kthehemi 0. Bukuroshe. Dakord. Përndryshe çfarë duam të bëjmë? Kjo është pjesa interesante kur kjo është pak më shumë si matematikë kundër SHC në mendimin tim. A ka dikush të ketë një ide se si ne mund të bëjmë këtë? Pra, gjëja e rëndësishme për të kuptojnë është karakteri i parë ne jemi duke marrë do të jetë e rendit shifror më të lartë, e drejtë? Pra, në qoftë se ne jemi duke kërkuar në konvertimin 123, hera e parë që ne iterate është e do të jetë 1, por ne kemi nevojë që të jetë 100 deri në fund, apo jo? Pra, një gjë që ju mund të bëni është që me çdo shifra pasuese ju merrni, ju shumohen vlerën tuaj me 10, që nga koha që ju të arrini në fund, çdo gjë ka qenë e zhvendosur lart, e drejtë? Pra, herë të parë që ju të kandidojë ajo, ju keni 1 si vlerë tuaj. Herën e dytë që ju drejtuar atë, ju shumohen vlerën tuaj nga 10. Ajo do të rinovuar atë, kështu që është tani 10, dhe ju të shtoni në vlerën tuaj të ardhshëm. Dhe pastaj ju shumohen se nga 10 dhe të shtoni në vlerën tuaj të ardhshëm. Dhe kjo është arsyeja pse ata thonë se kjo është më shumë si testim një algorithm math kundrejt CS, por unë dal nga tema. Unë nuk shkruaj kuize. Pra, një gjë që mund të bëjmë është që ne thonë herë vlera e barabartë me 10. Pra, kjo do të zhvendoset shifror tuaj një herë në çdo kohë. Dhe atëherë ne vetëm duam të shtoni. Ne duam që të shtoni në atë ne vetëm mori, e drejtë? Pra, si nuk kemi të vërtetë konvertohet tonë Karakteri ASCII në numrin që ai përfaqëson? Pra, ne e dimë se 0 është e barabartë me 47, e drejtë? Pra, nëse është 0 47, çfarë do të kemi të bëjmë me të që në fakt e bëjnë atë të jetë një int nga 0? AUDIENCA: Është 48. ALLISON BUCHHOLTZ-AU: 48? Më vjen keq. Ne do të zbres 48, e drejtë? Mos harroni ASCII matematikë? Ne mund të trajtojë ato vetëm si numrat normale. Nëse ju trajtoni ato si numra, ata bëhen numrat në mënyrë efektive. Pra, nëse kemi s të i, të cilat le të thonë se në këtë rast është e barabartë me 0. Kështu s e unë në këtë rast do të jetë ASCII-- int ASCII për të do të jetë 47. Pra, ne mund të subtract-- ose 48. Ju mund ta bëjë këtë, është një mënyrë. Does anyone know një më të mirë mënyrë ne mund të bëjmë 48? Ne vetëm tha se 0 is-- shkojnë në ASCII ju mund të bëni të japin kuotën 0. Pra, e bën këtë lloj të bëjë Ndjenja se si punon kjo? AUDIENCA: Në këtë pikë, është vlera 0 sepse edhe në qoftë se ju të shumohen atë me 10, ju jeni duke filluar me zero, kështu që duhet të jenë të ndezur? ALLISON BUCHHOLTZ-AU: Pra, në këtë rast, ju doni të shumohen atë para se të shtoni, sepse në këtë rast, po, ajo do të ende be-- akrep ime është zhdukur. Vlera në këtë rast, e parë herë ne të drejtuar atë do të jetë zero. Pra, ju jeni vetëm duke shtuar në këtë shifër e parë. Çfarë është e rëndësishme është që herën tjetër ju iterate, ju doni të zhvendoset atë para se të shtoni shifra tuaj të ardhshëm në. A do të sqaruar për ju? OK. Ndonjëherë ju do të jeni të të merrni më shumë gjëra të çuditshme Mathy. Nëse keni pasur më të madhe të këtë, ju jeni ende në vazhdim e sipër për get-- ju jeni duke shkuar për të bërë goxha mirë. Krediti i pjesshëm është një shumë Gjë e madhe në kuize CS50. Pra, shkruaj atë që ju e dini. Nëse ju mori gjithçka përjashtim këtu, ju jeni ende do të bëni me të vërtetë mirë problem. Sepse ju jeni treguar, OK, Unë gati e di. Unë e di se kam nevojë për të iterate nëpërmjet. Unë e di se çfarë kam nevojë të shikoni për. Unë thjesht nuk fare merrni si për të kthyer atë. Ju jeni do të jetë në rregull. Po, ju do të jeni të humbni një pikë çift, por ju jeni ende do të merrni një Numri i mirë i pikave për diçka si se në qoftë se ju jeni mungojnë këto dy linja. Unë do të jetë si rregull, këtë person e di se çfarë ata po bëjnë. Math është e vështirë. Kështu që unë do të thonë se ju do të jetë mirë. OK, kështu që ju djema gati për provoni strlen me pointers tani që ju djema janë mjeshtra akrep? Kështu që unë do të le ju djema punuar në se për një pak. Në qoftë se dikush ka nevojë për një përmendore. Pra, ju doni të përdorni treguesin aritmetike, dhe pastaj nëse s është i pavlefshëm, Zbatimi i juaj duhet të kthehen 0. Gjëra të tilla si kjo që e bëjnë të me të vërtetë i lumtur për të vetëm thirrje strlen ne fund te dite. Unë mendoj se kjo mund të jetë pak më e lehtë se ajo e fundit, e cila është e mirë. Unë do të ju jap djema një minutë, dhe pastaj ne do të punojmë nëpërmjet saj. Dhe pastaj ne kemi marrë për të shkuar në çelsin. OK, djema gati? Ndoshta pak. Kështu që unë kam dhënë ju tuaj dy opsione, e drejtë? Ose kontrolloni for null dhe të kthehen 0 nëse ai është, ose në fakt llogaritur gjatësinë. Pra, kush dëshiron të shkruaj kontrolluar for null? Shkoni për të. AUDIENCA: Nëse kllapa s është e barabartë me të barabartë zero kthimin 0. ALLISON BUCHHOLTZ-AU: bukuroshe. I love kur gjysmë problemin tuaj është vetëm kontrolluar for null. Unë e di me ju djema të fundit Javën Unë isha si çek for null fjalë për fjalë çdo kohë. OK, so-- AUDIENCA: Nëse kthimi 0 është vetëm një linjë, nuk kemi ende nevojë kllapa kaçurrel? ALLISON BUCHHOLTZ-AU: Ju nuk teknikisht kanë nevojë për ato për sa kohë që ju jeni në përputhje. Është praktikë e mirë vetëm për të marrë në zakonin i përdorimit formatimin e teksteve kaçurrel, por teknikisht nuk ka. Ju nuk keni nevojë për to për një linjë. Ne vetëm tentojnë të rekomandojë atë për njerëzit duke filluar me programin. Deri tani ajo që mund të duam të bëjmë këtu? Deri tani, ne e dimë se string ynë është i vlefshëm. Ne duam t'i mbajmë të llogaritur gjatësinë. Çfarë është ndoshta e parë gjë që ne duam të bëjmë? AUDIENCA: Krijo një int kjo është gjatësia. ALLISON BUCHHOLTZ-AU: Pikërisht. AUDIENCA: Dhe ne duam ta vendosur atë në? ALLISON BUCHHOLTZ-AU: 0. Perfect. Dakord. Tani çfarë doni të bëni? Kjo është me të vërtetë pjesa më e madhe e saj. Shkoni për të. Audienca: Pra, ju ndoshta bëni një për lak. Dhe pastaj që, kur ju telefononi s jeni duke marrë adresën e gjëja e parë, ju do të fillojë me i barabartë me 0. Dhe pastaj për aq kohë sa x plus i nuk është kthyer çaj 0. ALLISON BUCHHOLTZ-AU: terminator null. AUDIENCA: terminator null. Pastaj ju shtoni një në gjatësi. ALLISON BUCHHOLTZ-AU: Po. OK, kështu që lejon të kthehet që në kodin shumë konkrete. Por kjo është ide e përsosur. Kjo është pikërisht ajo që ne jemi duke bërë. Ne jemi duke shkuar për të iterating përmes me treguesin. Pra, ajo që ne duam të bëjmë është në vend të një int këtu, sepse ne jemi mos iu referuar një të. Ne jemi duke iu referuar fillimit të një string, që fillojnë që disa adresa, e drejtë? Pra, ne duam një akrep. Pra, ne do të kemi një yll char, sepse ajo korrespondon me s tona, e drejtë? Pra, kjo është një pikë që ne jemi duke iniciuar në fillim të vargut, OK? Pra, le të vetëm thirrje asaj i. Në qoftë se kjo është fillimi i vargut, çfarë është ajo do të jetë caktuar për? Jo 0. Ne duam që ajo të jetë fillimin e vargut tonë. Çfarë përfaqëson fillimin e string ynë që na është dhënë? AUDIENCA: Vetëm s. ALLISON BUCHHOLTZ-AU: s. Pra, kjo krijon një tregues të ri që paraqet fillimin e vargut tonë, OK? Një tjetër mënyrë për të menduar për atë është si këtu e array tonë. Kjo është string tonë, s. Pra, le të thonë se kjo është vend të parë, dhe kjo është 0x4. 04. Kjo është s tonë, e cila ka këtë adresë. Dhe ne sapo krijuar një tjetër të quajtur i vetëm që lidhet me të njëjtin gjë. Pra, ata janë të dy vetëm duke vënë me fillimin e vargut tonë. Kjo është vetëm një përfaqësim grafik. Deri tani ajo që ne duam të bëjmë është që ne duam të iterate gjendja jonë për iterating përmes vargut tonë. Tani pazar. Mori në dyqan, djema. Është ne duam të mbajtur përditësimin deri në arrijmë në terminator null, e drejtë? Pra, çfarë mund të që duken si? A duam i, ose nuk duam Ylli i është pyetja? Është terminator pavlefshëm një adresë apo diçka e vendosur në një adresë? E vendosur në një adresë, e drejtë? Pra, ne kemi nevojë për çdo gjë që është dereference këtu, sepse kjo është vetëm disa adresa. Për të vërtetë të marrë në fillim ne kemi nevojë për të dereference këtë në mënyrë që ne të merrni në të vërtetë çfarë është në këtë vend të parë. Pra, nëse ne bëjmë një yll i, çfarë nuk duam që ajo të barabartë? AUDIENCA: Prapa plagë? ALLISON BUCHHOLTZ-AU: Nuk ka. Ka që e bëjnë kuptim për të gjithë? Ne kemi nevojë për të shkuar në varg tonë dhe sigurohuni që ai nuk është fundi. Dhe atëherë ne vetëm mund update si kjo. Përditësimin normale. Pra, për aq kohë sa ato janë të Met, çfarë duhet të bëjmë? AUDIENCA: Length plus plus. ALLISON BUCHHOLTZ-AU: Mm-HM. Dhe pastaj pas për lak përfundon, çfarë duam të kthehemi? AUDIENCA: Length? ALLISON BUCHHOLTZ-AU: Length. Nuk ju shkoni. Natyrisht mishit të këtë është kuptuar këtë për lak. Ka marrë të gjithë se si ka punuar kjo? Unë jam i lumtur për të shkuar mbi atë përsëri. AUDIENCA: e dytë pjesë, kështu që ylli i atje, kjo është adresa e first-- ALLISON BUCHHOLTZ-AU: Kjo nuk është adresa. Kjo është ajo që është në të. AUDIENCA: Kjo është në të vërtetë atje. ALLISON BUCHHOLTZ-AU: Kjo është çfarë është në të vërtetë atje. Pra, kjo është saying-- le ta bëj këtë më mirë. Pra, kjo është 0x04, dhe unë jam vetëm duke shkuar të thonë se unë jam duke shkuar për të bërë këtë emrin tim. OK. Po, unë e di unë kam shqyrtim quiz sonte. Shumë e shqyrtimit quiz. Pra, le të themi në këtë varg është emri im, Allison. Çrregullt pak, por ajo është atje. Dhe s përfaqëson vendin ku string fillon, kështu që unë jam duke shkuar për të bërë këtë real-- kjo është adresa e një, ku string fillon, e drejtë? Pra, ajo që ne bëjmë këtu është që ne duam të përdorin pointers për të iterate nëpërmjet. Pra, ne kemi krijuar disa tregues, i, se edhe është e barabartë me fillimin e vargut. Dhe në çdo pikë, ne duam të vazhdoni duke shkuar nëpër rrjet këtu deri ne goditi terminator null. Pra, ne gjithmonë duan të shikoni se çfarë është në secilën nga këto adresave. Pra, ne dereference i, në mënyrë që të hera e parë që ne bëjmë atë ne thonë, OK, çfarë është në adresën 0x04? Kjo është një a. OK, ne jemi të mirë. Gjatësia rritje. Lëvizin për në një tjetër. Pra, mos harroni i-- pointers rritje prej Madhësia e çdo gjë që ata janë duke treguar për të. Pra, në këtë rast, pasi ajo është një char, ajo do të rinovuar nga një. Deri tani ne jemi duke shkuar për të parë në 5, që do të thotë se do këtu. Kështu ai thotë OK, shkojnë në 0x05. Çfarë është atje? Kjo është një l. Dhe kjo do të vazhdojmë të bëjmë atë deri sa ajo godet këtë. Dhe ai thotë OK, çfarë është në çfarëdo adresa kjo? Terminator pavlefshëm, OK. Exit. Dhe vetëm të kthehen gjatësi. Sepse ju keni nevojë për atë që është në të vërtetë në që adresa, nuk adresa vetë. Ka shumë pak vende ku ju në të vërtetë nevojë për adresën. Shumica e kohës kur ju jeni duke përdorur dhe kjo është kur ju jeni të parë caktimin e një akrep ose kur ju jeni duke kaluar atë në një tjetër funksion. OK, të gjithë të mirë atje? Lloji i? OK. Pra, duket sikur ne kemi kam lënë rreth 12 minuta, kështu që ne do të shkojnë më për ndoshta problemi ynë i fundit, dhe pastaj nuk ka ndonjë koncepte që kanë dalë në ndërkohë që ne mund të shpejt të shkojnë mbi atë. Pra, kalimi ingranazhet është e fundit Problemi këtu, kaloni deklarata. Pra, puna juaj është për të rishkruar këtë kështu që ajo sillet njëjtë por nuk e përdorin çelsin. Duart i bardhë. Kështu që çdo pyetje në lidhje me këtë off bat? Asnjë? OK. A të gjithë e kuptojnë se në qoftë se rast nuk ka asgjë pas saj, kjo do të thotë se ai duhet ndiqni hapin e ardhshëm? Kështu rastin 1 dhe 2 në këtë rast të bëjë të njëjtën gjë e saktë. Ndonjëherë një pikë konfuzioni. Dakord. Çdokush ka ndonjë ide? Vërtet? Audienca: Pra, ju mund të vetëm të bëjë nëse pasqyrat. ALLISON BUCHHOLTZ-AU: Mm-HM. Pra, çfarë është një jonë e parë? AUDIENCA: Nëse n është e barabartë e barabartë me 1, dhe 2 linja për ose n barabartëve është e barabartë me 2, pastaj të shtypura të vogla. Dhe pastaj mund të bëni tjetër nëse? Ose ju mund të bëni vetëm një rast? ALLISON BUCHHOLTZ-AU: Ju mund të bëni tjetër nëse? AUDIENCA: A do të marrë parasysh nëse ju bëni nëse? ALLISON BUCHHOLTZ-AU: Pra, ajo bën. A anyone-- kështu, që ju do të merrni të njëjtin output në qoftë se ju përdorni vetëm IFS kundrejt në qoftë se ju përdorni tjeter me IFS. Mund të ju djema mendoni për arsye pse ju mund të dëshironi të përdorni një tjetër nëse kundrejt një shumë të VJ? Ka të me efikasitet. Vërtet? AUDIENCA: Ajo do të kontrollojë të gjitha IFS çdo kohë. ALLISON BUCHHOLTZ-AU: Pra, edhe nëse ajo goditi këtë të parë, ajo do të shkojë në kontroll çdo njeri tjetër. Pra, ju doni të përdorni në qoftë tjetër IFS në rastet e ku vetëm një prej tyre do të zbatohet kurrë. Pra përjashtimi reciprok është ajo që ne priren për të thënë. Nëse ju keni një bandë e ifs, kjo do të thotë që ndoshta më shumë se një prej tyre çështjet, dhe ndoshta më shumë se njëri prej tyre mund të jetë e vërtetë. Dhe ju doni të dy prej tyre për të ekzekutuar në qoftë se ata janë të vërteta. Në qoftë se ju doni vetëm një prej tyre për të punuar në këto raste reciprokisht ekskluzive, ju doni të përdorni tjetër, nëse, për shkak se të gjitha ka të bëjë me efikasitet. Kodi juaj është vetëm më të mirë projektuar nëse ajo aderon në këtë praktikë. Pra, në këtë rast, ne do të kemi një tjetër rast. Dhe kjo do të jetë? AUDIENCA: n është e barabartë me të barabartë 3. ALLISON BUCHHOLTZ-AU: Perfect. Mesme Print. Dhe pastaj në fundit tonë rast, çfarë kemi? Tjetër, ose tjetër, nëse? AUDIENCA: Tjetër. ALLISON BUCHHOLTZ-AU: A kemi want-- Ju duam tjetër në qoftë se për shkak se kemi raste konkrete. Kjo nuk është lloj i një kapur të gjithë. Nëse keni pasur një parazgjedhur në një switch-- mos harroni në çelsin që ju mund të ketë rast, dhe atëherë ju keni falimentim. Nëse keni pasur një default, kjo është lloj i deklaratës suaj tjetër atje. Por në qoftë se ka vetëm raste, kjo do të thotë që ju duhet për të kontrolluar për të parë nëse ajo është njëra nga ato. Pra, në këtë rast, ajo do të 5 4 ose. Ne duam një të shtypura off. Kjo është e madhe. Dhe ju shkoni atje. Dhe kjo do të jetë programi juaj. Pra, në këtë rast, nëse ne kishte një diçka të paracaktuar, ne do të kemi një tjetër në çfarëdo qoftë ajo donte që ne të bëjmë. Kështu që është një dallim i mirë të dinë, për të kuptuar. A do të ndihmojë me çelsin për ju? Perfect. Dakord. Ne kemi rreth tetë minuta të mbetura. A ju djema keni ndonjë Konceptet tjera të nivelit të lartë? Pyetjet në përgjithësi? Po? AUDIENCA: Unë kisha a pyetje në lidhje me një prej tyre se ishte rreth rastit gjenerator numrash të quiz zero. ALLISON BUCHHOLTZ-AU: Oh, se një. Kjo një është një tjetër ku ajo është më e math than-- po. Zgjidhja për that-- edhe unë kur Unë shoh atë, unë jam si çfarë është kjo. AUDIENCA: Ajo ishte numri 7. ALLISON BUCHHOLTZ-AU: Është e çuditshme sipas mendimit tim. Pra, në thelb ju dëshironi për të përdorur drand48, e cila do t'ju jap disa numër midis 0 dhe 1. Dhe ju doni ta përdorni atë në mënyrë që ju të merrni disi a-- dhe kjo është më shumë një problem matematikë për mua se sa unë mendoj se një problem CS. Mënyrë që ju të bëni it-- dhe nganjëherë kjo do të jetë vetëm si kjo. Përsëri, këto janë rastet kur kjo është lloj e si të shkruaj atë që ju mund dhe kredi të pjesshme. Pra, nëse ne duam një kthim, ne e dimë se ne jemi do të jetë duke përdorur drand48 në një farë mënyre, e drejtë? Pra, pse nuk kemi vetëm të shënoj atë poshtë. Ne jemi duke e përdorur atë në një farë mënyre. Mënyra se si ata kanë ju djema përdorur është si kjo, të cilën unë do të përpiqet dhe të shpjegojë. Pra, në thelb, çfarë ndodh këtu është për shkak se kjo është në mes të 0 dhe 1, çfarë jeni duke bërë është që ju jeni duke shumëzuar by-- kjo është shumë e shumë një pyetje matematikë. Vetëm mohim të plotë, kjo është krejtësisht një pyetje matematikë. Çfarë jeni duke bërë është për shkak të 0 dhe 1 dhe ju duan që ajo të jetë brenda këtë varg, ju në të vërtetë kuptoj se sa i madh varg është, dhe pastaj ju në thelb shkallë atë, e cila është ajo që kjo është bërë. minus b a ju jep këtë varg, Dallimi në mes të këtyre numrave. Ju mund të shumohen mes 0 dhe 1, dhe pastaj duke shtuar një vetëm do të thotë se juaj shkallë it up kështu që është midis a dhe b, që unë nuk të vërtetë donte këtë problem. Siç e thashë, ky quiz ka për qëllim që të përfshijë njerëzit që janë më pak të rehatshme, diku në mes, dhe më të rehatshme. Pra, në qoftë se ata e bëri atë në mënyrë të se kjo ishte diçka se të gjithë në më pak vend i rehatshëm do të marrë, ne do të kemi shumë më shumë njerëzit rezultatin përsos, dhe më të rehatshme do të jetë mërzitur. Pra, ata gjithmonë kanë këto lloj i pyetjeve ngacmues trurit që janë menduar të jetë pak më e vështirë që të marrë disa të menduarit kreativ. Kur ju shohin ato, nuk do të marrë shumë stumped. Unë patjetër do të thoja rrokullisje me quiz tuaj të parë. Trajtuar problemet që ju e dini që ju mund të, sepse nuk ka asnjë përdorim duke u mbërthyer në një problem kur ka tre ose katër ose pesë në faqen pasi që ju mund ta bëni lehtë. AUDIENCA: Pse pikërisht të bëni ju shumohen atë me varg? ALLISON BUCHHOLTZ-AU: Ju shumohen varg se ju know-- kjo është si se sa pas nuk ju duan? Kështu që ju mund të mendoni, sepse ajo kthen një numër midis 0 dhe 1, ju mund të mendoni për atë si një përqindje. Pra, kjo është në thelb duke thënë se në qoftë se ne kemi linjë tonë numri këtu, a është këtu, dhe b eshte here. Ju jeni si se sa një të kaluar është ajo? Është e gjitha që ne jemi duke bërë. Pra, ju jeni vetëm duke kërkuar për përqindja e këtij varg, i cili është ajo që është duke ju. Dhe pastaj ju në thelb vetëm shkallë atë duke shtuar një. Kjo është një lojë mprehtësie math. Nëse ka pasur ndonjë këshillë minutën e fundit, I do të thonë rrokullisje përmes pyetjeve, kuptoj se cilat ato ju e di se si, oh kam marrë këtë. Pothuajse me siguri ata do të të jetë pyetje që ju nuk do të dini ose që ju jeni do të ketë kohë për të, kështu që goditi forta tuaj, OK? Ju djema do të madh. Nuk janë një shumë e Pyetjet për një arsye, kështu që ju keni kohë për të lloj të kenë mundësi për të treguar se çfarë ju jeni me të vërtetë mirë në. Pra, kjo është në rregull në qoftë se ju jeni nuk është e mirë në çdo gjë. Luaj për forta tuaj. Po? Audienca: Pra, është kjo do të kthehen diçka që është e cunguar? Po, ajo do, sepse drand Kthimet në mes 0 dhe 1. Ajo do të kthehet një int, sepse kjo do të shkurtoj kur ne të shtoni një ose shumohen nga ajo. Ftohtë. Çdo pyetje minutën e fundit? Ju djema do të bëjë të madh. Ju jeni do të jetë i pabesueshëm. Dhe edhe në qoftë se jo, nuk do të të jetë karamele këtu javën e ardhshme. Dhe unë do të të dua. Unë do të dua ju djema dallim. Të gjithë të drejtë, të gjithë, fat i mirë. Kanë një kohë të madhe. Ju jeni do të jetë mirë. Dhe ju e dini se çfarë? Në dy ditë ajo do të jetë e gjatë, ndërsa unë kanë dy midterms të enjten, në mënyrë të paktën ju djema do të bëhet. Në rregull, unë do të shoh ju djema javën e ardhshme.