PROFESORI: Pra, rendi i ditës për këtë javë, jo se shumë gjëra. Por shpresojmë shumë, shumë e dobishme dhe relevante për ju djema këtë javë. Por ne jemi duke shkuar për të shpenzuar ndoshta 15, 20 minuta vetëm duke folur shpejt në lidhje me listën e link. Listat Link do të të mbulohet në quiz. Pra, ndoshta kjo do të jetë shumë e dobishme për të mësuar pak për atë që është. Ne jemi duke shkuar për të shpenzuar madhe Shumica e seksionit sotme duke shkuar mbi quiz zero probleme praktikë. Dhe pastaj ne do të kurseni ndoshta 20, 30 minuta në fund për çdo pyetje zvarritëse dikush ka. Dhe pastaj, e fundit pesë minuta, unë jam duke shkuar për të dhënë një pompë dorë fjalim për quiz. Ju djema të gjithë duan të jenë këtu për këtë. Për shkak se ajo do të jetë një kohë e mirë. Të gjithë të drejtë, kështu që disa Materiali në listën link. Se si ata janë strukturuar në mënyrë tipike është ju keni atë që quhet një nyje, e drejtë? Ju keni këto gjëra të quajtura nyje, të cilat janë structs. Unë do të shkoj për se si të krijoni një nyje në rrëshqitje ardhshëm. Por në thelb të gjitha të lidhura Listat eshte dhëna se ka qenë i lidhur së bashku nëpërmjet pointers. Dhe kështu avantazh që kemi të përdorur një listë e lidhur mbi, ndoshta, si një grup, është fakti që në një rrjet ju keni nevojë për një bllok puthitur te memorie e gjitha në vendin e njëjtë, një pas tjetrit, të jenë në gjendje që të ketë atë. Ndërsa një listë e lidhur, ju mund të kanë bit të rastit të vogël të kujtesës të gjithë kompjuterin tuaj i lidhur së bashku nga pointers. Dhe në këtë mënyrë ju mund të hyni informacion që vjen njëra pas tjetër, pas tjetrës pa pasur nevojë për vetëm një copë të madhe të kujtesës në kompjuterin tuaj diku. Dhe kështu kjo është një nga më të mëdha Arsyet pse ne i përdorim listë link. Së dyti, kjo është shumë e lehtë për dinamike resize listën lidhjen, sepse në grup, kur ju të deklarojë një grup, ju keni një vlerë të caktuar të caktuar. Le të thonë se unë të kërkuar për të krijuar një grup prej 10 integers. Unë krijoj një rrjet prej 10 integers, dhe kjo është ajo. Është 10. Unë nuk e di se çfarë duhet të bëjmë pas kësaj. Në qoftë se unë të kërkuar për të bërë atë 11, nuk mund ta bëjë këtë. Nëse unë dua të bëj atë 9, nuk mund ta bëjë këtë. Ndërsa në një listë lidhje, ju mund të shtoni dhe të fshini dhe futur kudo që ju dëshironi. Ju dinamike mund të ndrysho tuaj strukturojnë këtu, strukturën e të dhënave tuaja. Dhe kjo na jep shumë më shumë fleksibilitet shtuar se ne nuk bëjmë zakonisht kanë me vargjeve. Çdokush hutuar në bazë Struktura e si një listë lidhje është ose pse ne duhet të përdorin një të tillë mbi një grup? Po, ne do të shkojnë mbi në detaje se si të vërtetë të krijuar një të tillë. Por kjo është vetëm lloj i ndjenja e përgjithshme e drejtë tani. Ftohtë. Dhe kështu vargjeve janë të lidhur së bashku nga këto gjëra të bukur të vogla quajtur nyje. Të gjitha një nyje është është një lloj i struct. Mos harroni, një struct është nëse do të donit për të krijuar një lloj të caktuar të variablit C, që nuk ka tashmë ekzistojnë, ju, si një programues, në fakt mund të krijojë atë vetë. Dhe kështu që ky lloj i të dhënave Struktura është quajtur një nyje, ka qenë në fakt e krijuar nga ne, që nuk ekziston në kuadër C në vete. Dhe mënyra që ju të krijojë një është që ju keni kokë e typedef struct, e cila tregon përpiluesit unë jam gati për të krijuar një e strukturës. Ne jemi duke shkuar emrin kjo "nyje". Dhe brenda ne jemi duke shkuar të deklarojë një ndryshore në, e cila do të ruajë një vlerë. Dhe pastaj ne jemi gjithashtu do të kanë një tregues të quajtur "të ardhshëm" që tregon për të ardhshëm nyje në listën link. Dhe pastaj keni mbaruar se jashtë nga vetëm duke përsëritur nyje përsëri kështu përpiluesit e di, OK ky është fundi i struct tim. Dhe kështu në këtë mënyrë, ne jemi lloj të krijuar një koleksion të bukur të vogël lloj gjë me një vlera dhe me nje tregues. Dhe ju mund të lidhjen e tyre të gjithë së bashku me këto pointers. Në mënyrë që ata të gjithë mund të jetë lloj i lidhur së bashku në një zinxhir. Ftohtë. Mund të dëgjoni se një pak më të mirë? Audienca: Po. PROFESORI: Në rregull. Pra, mënyra se si ju djema mund të shihni, një listë tipike lidhje është e strukturuar është se ju keni një kokë. Ju keni vlerën kokë që nuk është duke u theksuar nga ndonjë pointer tjetër. Por kjo do t'i referohemi, ose referencë, një tjetër nyje. Nyja pasi do të referuese nyje pas kësaj, dhe kështu me radhë e kështu me radhë derisa ju goditi përfundimisht në fund të listës suaj link. Dhe ju thjesht nuk do të ketë një tregues atje. Dhe kështu, mendoj se si, në një zinxhir, apo edhe në qoftë se ndonjë nga ju djema të bëra, unë nuk e di, si me fruta unazore kur ishe i vogël. Ju do të string ato së bashku dhe veshin rreth qafës sate. Mendoj se është e saktë njëjta gjë. Ju keni këto gjëra të vogla që ju mund të string së bashku që tregojnë për një pas tij, me atë pas atë, dhe kështu me radhë e kështu me radhë deri sa të ketë një zinxhir një strukturë të dhënave që ju mund të përdorni megjithatë ju pëlqen. Pra, mënyra se si kjo ne do zakonisht futur apo fshij ndonjë nyje nga një lidhje Lista është shumë e ndryshme në varësi se ku nyje është. Kështu, për shembull, për shkak se pointers janë gjithmonë duke treguar në një vlerë të caktuar, kur ju fshini ose futur një nyje, ju doni të bëni të sigurtë që akrep është e gjitha duke treguar në gjërat e duhura. Pra, nëse ju të kërkuar për të potencialisht të futur një nyje të re me vlerën e një brenda një lidhje të renditura Lista e, ne të gjithë e dimë këtu nga foto që po ndodh për shkoni në mes të kokës dhe të dy, e drejtë? Sepse një i përshtatet të drejtë atje. Por mënyra në të cilën ne do ta bëjmë atë është duke i parë dereferencing treguesin nga koka dhe dërguar atë në një. Por, kemi ardhur në një problem këtu. Dikush mund të shohim se çfarë problemi është nëse ne do të dereference parë tregues nga koka në një? Çfarë problemi mund të kandidojë në qoftë se ne të përpiqemi të shtoni këtë në frontin e array tonë? Audienca: [padëgjueshme] PROFESORI: Pikërisht. Pra, këtu ne kemi një tregues që ishte dikur treguar nga koka në dy. Por në qoftë se ju merrni shpëtoj atë akrep, ju pikë atë në një, ne tani nuk kemi asnjë ide ku të shkoni për të gjetur dy. Sepse siç thashë më parë, ju keni marrë një copë gjigant e kujtesës në kompjuterin tuaj. Të gjitha këto nyje mund të të jetë interspersed rastësisht në çdo vend në kompjuterin tuaj. Dhe ju nuk e dini se si të shkojë për të gjetur se. Dhe kështu që ju duhet të keni pointers duke treguar për të gjitha nyjet në fund. Ose tjetër në qoftë se ju aksidentalisht dereference një pa caktimin e parë një vlerë pari, ju jeni vetëm duke shkuar për të humbur çdo gjë më pas. Pra, ajo që ne jemi duke shkuar për bëni është, ju do të në fillim doni të krijoni një akrep në nyja ju doni të futur. Pikë atë të vendit ku ju doni të futur atë në, dhe pastaj më vonë të mund të tregojnë kokën mbrapa për një. A ka kuptim që të gjithë këtu? I madh. Mendoni se si vetëm si një zinxhir. Nëse shtoni një zinxhir, kjo është lloj i intuitive si ju do të shkoni në lidhje futur atë. OK, kështu që në fakt është shumë më e më të shkurtër se kam menduar se do të jetë, një Spiel pesë minuta në listat link. Vetëm kështu që ju djema kanë Ideja themelore e asaj që është. Këtu kemi agjendën për quiz zero. Mos lejoni që kjo ju frikësojnë. Unë e di se kjo është një shumë e informacionit. Ajo duket shumë e frikshme. Kjo është edhe një shumë të, unë mendoj, lloj CSC i termave. Gjëra të tilla si vargjet hexadecimal, Akrepa, alokimet e kujtesës dinamike janë terma shumë të frikshme fryrë. Por, ne jemi duke shkuar për të thyer ato poshtë, të bëjë disa probleme praktikë kështu që ju djema të gjithë janë të gatshëm për këtë provë. Sa nga ju djema kanë tashmë ka filluar duke studiuar? OK, ju djema ndoshta dëshironi për të filluar duke u nisur në se, për shkak se quiz është nesër. Ose të enjten për disa prej jush. Yeah, kështu që ne jemi duke shkuar për të shkuar mbi disa probleme praktike. Nëse ju djema të gjithë duan të marrin nga një fletë letre, një laps. Ne jemi duke shkuar për të shpenzuar vetëm Shumica dërrmuese e seksionit sotme duke shkuar mbi disa prej se kështu ju djema keni një ide të asaj që të presin në quiz. NE RREGULL. Një çift i logjistike Detajet, si edhe, për askënd i cili nuk ka qenë në këtë lidhje atje, në qoftë se ju shkoni në cs50.yale.edu, në frontin kjo faqe ka një lidhje që thotë se "Rreth Quiz Zero". Lidhje ju merr atje. Nëse ju nuk e keni lexuar atë, ju lutem lexoni atë. Për shkak se ajo ju tregon të vërtetë e rëndësishme informacion në lidhje me quiz. Unë jam duke shkuar për të tërhequr këtë jashtë nga se vetëm për shkak, fizikisht, në qoftë se ju djema nuk e dini ku për të shkuar, ne do të kemi probleme. Dhe kështu që nëse e kaluar juaj në drejtim me një për N, shkoni në auditorin e shkollës ligj. Dhe në qoftë se fillon e tua të fundit me P tek Z, shkoni në Davies Auditorium. Dhe kjo vlen vetëm për njerëzit në seksionin mërkurën. Nëse jeni duke marrë quiz për E enjte, ju shkoni në SHSSH 114 ku leksionin tuaj në mënyrë tipike është. Audienca: [padëgjueshme] PROFESORI: O tek Z, ju do të jeni për të shkuar në auditor Davies. Unë jam duke shkuar për të ndryshuar atë, e drejtë? Oh, po, ju vetëm të dështojnë automatikisht. Oh yeah, që është Christa. Yeah, keq e mia. Po, o tek Z, ju do të jeni për të shkuar në Davies Auditorim. Unë jam duke shkuar për të rregulluar këtë herë të ngarkoj. Po. Dhe pastaj edhe diçka rëndësishme në mendje është se e mërkurë, në qoftë se ju jeni zyrtarisht regjistruar në seksionin mërkurën, ju duhet të marrë quiz tuaj mërkurën. Dhe nëse ju jeni të regjistruar në të enjten, ju duhet të marrë quiz tuaj enjten. Dhe kjo është gjatë kohës së klasës. Ku, unë mendoj se është si në 1:00 02:15 të mërkurën dhe 2:30-03:45 të enjteve. Nëse ju keni një konflikte të papajtueshme, Justifikime Dekanit janë e vetmja gjë, për fat të keq, ne mund të marrë. Sepse ne kemi pasur një Pjesa më e madhe e kërkesave për të kaluar nga e mërkura deri të enjten. Të cilat ne nuk mund të nderojmë nëse ne kemi një kërkesë Dean. NE RREGULL. Pra, para se të ketë filluar në një disa nga problemet e praktikës, Unë jam vetëm duke shkuar për të shkuar mbi Këshilla të dobishme Andy për sukses. Ju djema, kur ju studioni, ju me të vërtetë doni të praktikoni shkruar kodin me dorë. Hera e parë që kam ndonjëherë mori një quiz CS, unë nuk e kishte Praktika shkruar kodin me dorë para dhe ajo ishte shumë e tronditëse në sa e vështirë ishte. Kur ju djema nuk do të marrë në të zakon i shtypur nga çdo gjë, ajo vjen shumë natyrshëm të qenit në gjendje të ketë autocompleted kllapa dhe pikpresje atje. Kur ju shkruani atë me dorë, ndonjëherë është e shumë, shumë e lehtë për të harruar një pikëpresje, ose harrojnë për të mbyllur një parantezë, ose harrojnë për të mbyllur një zorrë e trashë, ose diçka të tillë. Pra, kur ju shkruani kodin me dorë, kjo është një ndjehen shumë të ndryshme. Kështu që ju djema, kur ju jeni duke punuar përmes disa prej problemeve të praktikës, kjo do të mirë të vërtetë të praktikuar sot. Ose nesër, unë mendoj, në qoftë se ju jeni duke marrë quiz të enjten. Së dyti, ne kemi kaluar, si, Vlen Tetë viti i praktikës kuize online. Quiz këtij viti do të jetë ndoshta shumë, shumë e ngjashme me të gjithë ata. Ata janë të gjithë shumë të ngjashme. Ju lloj i marrë në Stili i llojit të pyetjeve të që ne kërkojmë, llojin e funksionet që ne do të shkruajnë atë në, et cetera, e të tjera. Pra, të marrë kuize praktikë, sidomos nën kufizimet e kohës. 75 minuta për të bërë quiz është jo shumë sasinë e kohës. Është shumë, shumë të gjatë. Dhe kështu që ju djema të vërtetë duan për t'u siguruar që ju djema janë në zakonin e të shkruarit Kodi me dorë shpejt. Për shkak se ju nuk doni të parë koha për të parë një quiz e asaj gjatësi të jetë në quiz tuaj. Ju djema të vërtetë dëshironi të bëni të sigurtë që ju praktikë më parë. Së katërti, ju doni të shqyrtojë leksion dhe seksion slides. Ju nuk keni për të mësuar përmendësh gjëra. Në fakt, të gjithë është e lejuar një një fletë e shënimeve të bardha të letrës, para dhe prapa. Ju djema mund të shtypni ose shkruani. Nëse ju gjeni veten tuaj kanë nevojë për të mësuar përmendësh diçka, e vënë atë poshtë në atë fletë. Unë ju garantoj, ju nuk doni të të mbërthyer në mes të këtij quiz qenë si, oh yeah, çfarë është Runtime të këtij lloji kundrejt atij lloji. Vetëm vënë atë poshtë dhe kopje atë direkt nga fletë tuaj shënim. Atëherë ju mund të vërtetë të përdorni vetëm tuaj tru për të menduar për problemet në vend që të kujtojnë fakte. Dhe kështu me të vërtetë të përfitojnë i çdo detaje të ngrohtë që ju mendoni se keni nevojë për të mësuar përmendësh, pllum atë poshtë në fletë shqyrtimit. OK, ndonjë pyetje logjistik në lidhje me quiz para se të fillojmë disa Problemet quiz praktikë? Po? Audienca: Unë nuk kam pasur një shans për të parë në quiz [e padëgjueshme] por ajo do të jetë Aplikimi kryesisht, Apo ka edhe do të jetë, si, pyetje diturinë? PROFESORI: Kjo është një shumë. Pra, mënyra se si unë do përshkroi quiz is-- kam vënë së bashku disa probleme praktikë që unë u tërhoq nga të gjitha kuize. Por ju do të shihni se ka dy kryesore lloje të pyetjeve ne do të ju pyes. Njëra është një detaj nivel shumë të ulët të gjëra. Ne do të ju jap një copë të vogël të kodit dhe thonë se, a ka një gabim këtu? Çfarë do të jetë shtypje këtu? Çfarë do të prodhojë ky kod, e të tjera. Pra detaje informacion nivel të ulët. Dhe në anën rrokullisje, ne do të kemi shumë Niveli i lartë pyetje bazuar në njohuri. A mund të shpjegoni se çfarë Dallimi në mes të një kërkim binar dhe një kërkim linear është? Pse do të duam të përdorni një lidhje të tjera? Ndoshta, ajo që është Gdb? Pse ne duam të përdorim GDB? Niveli më i lartë, më thelbësore Pyetjet mirëkuptim. Pra, ju do të shihni një përzierje e dy prej tyre në quiz tuaj. Çdo gjë tjetër para se të kreu i drejtë në të? NE RREGULL. Audienca: Një më shumë. PROFESORI: Oh, një më shumë. Më vjen keq. Audienca: Po, kjo është e gjitha e drejtë. Pra, ju jeni duke thënë se 75 minuta është shumë e shkurtër, si është e pamundur që ne do të përfundojë? Ose, si, 75 minuta është pikërisht sa më shumë kohë si ne do të duhet në qoftë se ne ishim i përgatitur në mënyrë të përshtatshme? PROFESORI: OK, kështu që quiz është sfiduese. Kjo është padyshim sfiduese. Ju do të gjeni veten të shkurtër në kohë. Ju jeni me siguri do të goditur, si 10, 15 minuta për të shkuar, dhe duke qenë si, mut. Unë kam lënë kaq shumë për të bërë. Dhe kjo është krejtësisht në rregull. Gjithkush do të ndjehen të njëjtën mënyrë. Vetëm të jenë shumë të vetëdijshëm për sa kohë që ju keni. Dhe kështu kjo është arsyeja pse unë po ju them djema bëni kuize praktikë. Sepse me të vërtetë i jep një ndjenjë të madhe e çfarë quiz do të jetë si. Pra, nëse ju gjeni veten duke u në gjendje për të përfunduar praktikën kuize në një sasi të mirë të kohë, ju mund të ritmin veten mirë, atëherë ju nuk do të ketë një problem të mërkurën ose të enjten. Ftohtë. Pra, nëse të gjithë wants-- unë mendoj shumica e njerëzve kanë fletët e letrës jashtë tashmë. Unë jam duke shkuar për në thelb vetëm ju jap pyetje shembull, ju jap djema, si, një disa minuta për të bërë ato. Dhe ne do të shkoj për si një klasë ajo përgjigjet e tyre janë. Pra, kjo është një shumë tipik Pyetja në fillim ne do të ju pyes, vetëm konvertimin Numrat në mes të bazave të ndryshme. Binare, si ju djema mund të Recall, është baza dy. Dhjetor është bazë 10, apo atë që ne si njerëzit zakonisht interpretuar. Heksadecimal është bazë 16, e cila është zero përmes nëntë si dhe përmes F. Pra, ka katër numra Jam duke i kërkuar ju djema për të kthyer këtu. Unë do të jap se ju pëlqen, tre të katër minuta për të menduar se si përmes ne do të shkoni në lidhje me zgjidhjen e kësaj. Audienca: A jemi të lejuar calculators? PROFESORI: Ju nuk do të nevojë calculators, vërtet. Unë mendoj shtesë themelore, unë mendoj, është të gjithë ju djema do të kërkohet të bëjnë. Dhe vetëm kështu që unë lloj i kanë një ndjenjë e kur të gjithë është bërë, shikoni lart, valë, unë nuk e di, buzëqeshje, duken të lumtur në qoftë se ju jeni bërë. Po. Ndoshta një çift shumë minuta. OK, le ta sjellë atë në. Unë jam duke shkuar për qëllim ju jap djema pak kohë se ju ndoshta duhet të të bëjë disa nga këto probleme, thjesht sepse unë dua të bëni të sigurtë që marrim përmes një bandë e problemeve. Kështu që nuk shqetësohet nëse ju nuk kanë një shans për të përfunduar. Krejtësisht në rregull për aq kohë sa ju keni një ide se si të shkojë në lidhje me këtë. Pra, le të shkojnë përpara dhe të bëjë një të parë. Pra, së pari, ka njeri të më thuash në binar, çfarë secili prej këtyre shifrave përfaqësojnë në kuptimin e vlerave të tyre? Po? Audienca: Dy të Fuqia zero, dy me një. PROFESORI: Pikërisht. Kështu që. E drejtë, kështu që në mënyrë tipike kur ne jemi në bazë të 10 të gjitha këto paraqesin janë, si, 10 në bazë të zero, drejtë? Kjo është vendi i dikujt tuaj. Të gjithë vendin 10 e juaj është është 10 në fuqinë e një. Vend që ju 100 është 10 në fuqinë e dy. Çfarëdo që ju jeni në bazë po shkon të bëjë me të njëjtën gjë e saktë, vetëm me një bazë të ndryshme. Pra binar, gjithçka që është është baza e dy. Ju jeni duke shkuar për të kthyer të gjitha shifra në dy në çfarëdo pushtet e që shifra. Dhe kështu në këtë kuptim, ne mund të ketë një mënyrë më të lehtë të qenë në gjendje për të shtuar deri ose të përmbledhur të gjithë numrat në mënyrë për të kthyer në bazë të 10. Pra, ka njeri të dëshironi të më tregoni se çfarë përgjigja ndaj atij të parë është në bazë të dhjetë? Audienca: Dy, [e padëgjueshme] PROFESORI: Po. Audienca: 42. PROFESORI: 42, ju shkoni atje. Pra, mënyra se si e mori këtë përgjigje ishte nga bërë Dy të parët, e cila është dy. Plus dy e treta, e cila është tetë. Plus dy të pestë, i cili është çdo gjë që është mbetur. Ju përmbledhur ato dhe kjo është 42. A është ndokush i hutuar se si ne e mori atë? Përveç kësaj Pra themelore, si Unë i thashë, ju duhet të jetë në rregull. Nëse jo, mirë, ne mund të praktikojnë atë shumë. Por kjo është e gjitha e drejtë. Ftohtë. A ka dikush duan të më jepte përgjigjen për një të dytë, si dhe? 50? Të mirë. Çdokush hutuar se si kemi marrë se ose? Cool, unë do të kemi Përgjigjet në rrëshqitje të ardhshëm. Kështu që nuk shqetësohet nëse ju duhet të kopje atë poshtë. OK, kështu që heksadecimal është pak e komplikuar. por unë jam duke shkuar për të treguar ju djema një shkurtore për mënyrën se si të bëhet kjo. Pra heksadecimal, si ti mos harroni, të gjitha ajo është jetë 16. Dhe për shkak se ne si njerëz në fakt nuk 16 numra për të përfaqësuar atë, ne do të shkojmë nga zero në nëntë, e cila jonë e parë 10 vlera, dhe pastaj ne të bëjmë një anë F, të cilat janë gjashtë vlera e ardhshme. Dhe kështu mënyra më e lehtë për të shkuar nga ndonjë numër binar në heksadecimal është për të thyer ato në gjysmave. Dhe kështu çdo numër binar ne do të japim ju ndoshta do të ketë tetë shifra. Ju vetëm mund të thyejnë ata deri në mes. Pra, së pari one-- një E, një një, një, një, një një. Lloji i mendojnë atë, ju e dini, tërheq një prerje apo një presje në mes tyre. Dhe vetëm ju mund të konvertohet direkt çfarëdo kjo është për të parë Numri i heksadecimal, dhe çdo gjë që këtu është për të i dyti i heksadecimal. Pra mbani mend nga simbol i përbashkët, çfarë vlerat hexadecimal filloni me? Audienca: Zero. PROFESORI: 0x. Pra, ne e dimë se çdo herë ne ju kërkojmë për të kthyer ndonjë numër të heksadecimal, ose çdo kohë që ju shihni ndonjë numër që fillon me 0x, ju e dini se kjo është një vlerë hexadecimal. Dhe pastaj ju do të jeni të kërkohet të përcaktuar se çfarë këto dy shifrat janë. Dhe mënyra që ju të bëni që, tallying deri se gjysma dhe tallying lart se gjysma. Pra, në këtë shembull, çfarë do një, një, një, një të jetë? Çfarë vlere do që të jetë? Kjo do të jetë F, e drejtë? Kjo do të jetë 15. Pra, kjo do të jetë F. One, një, një, një këtu është edhe F. Kështu një, një, një, një, një, një, një, një në heksadecimal, të gjitha ajo është është 0XFF. Për shkak se kjo gjysma e përfaqësuar F, vlera e 15, dhe kjo gjysma e përfaqësuar F, vlera 15. Sepse mos harroni, ne jemi duke llogaritur nga zero deri në nëntë. A është si 10, B është si 11, F është 15. Ka që e bëjnë kuptim të gjithëve se si kemi marrë nga binar në heksadecimal? Audienca: Dhe kështu si e kemi marrë 15 nga një, një, një, një? PROFESORI: Po, kjo është binar, e drejtë? Imagjinoni kjo është vetëm një numër binar. Kështu që ju duhet të dy të 0, e cila është një. Audienca: Oh, OK. Kështu që ju vetëm totale atë. PROFESORI: Po, dhe pastaj ju vetëm totale atë jashtë. Kjo është e gjitha ajo është. Audienca: OK. PROFESORI: OK. Audienca: Pra, ju shkoni nga binar të decimal të heksadecimal? PROFESORI: Kjo është Mënyra më e lehtë për ta bërë këtë, vërtet. Ju nuk jeni duke shkuar për të decimal sepse dhjetor ka vetëm zero deri në nëntë. Ne jemi vetëm lloj i ndarjen këtë deri në dy. Audienca: [padëgjueshme] duke përdorur decimal të gjetur çfarë ajo përputhet deri në heksadecimal. PROFESORI: Unë do të thotë, ju jeni tallying duke përdorur matematikë bazë. Audienca: Po. PROFESORI: Po, shumë e shumë. Kjo është pak konfuze. Por vetëm e di se ju mund të ndajnë deri çfarëdo kjo vlerë është në vetëm gjysma. Shikoni, çfarë është kjo në binar? Çfarë numri është ajo? Ajo do të jetë diçka nga zero deri F. Këtu është gjithashtu do të jetë diçka nga zero deri F. Dhe atëherë ju vetëm mund të vënë ata të dy të drejtë atje. Audienca: OK. PROFESORI: Po. NE RREGULL. Kështu që ju djema doni të provoni një tjetër atëherë? Zero, një, zero një, një, zero, një zero. Unë do të ju jap djema si 30 sekonda, pasi ju ndoshta nuk e di mashtrim për të si ta bëni këtë më herët. OK, dikush doni të merrni këtë një e shtënë? 0X5A. PROFESORI: 0X5A. 5a. Të mirë. Pra, kjo këtu do be-- doni për të na tregoni se si ju mori atë? Së pari, si e keni marrë pesë? Audienca: Sepse zero, një, zero, një është pesë. PROFESORI: A e kuptojnë të gjithë pse zero, një, zero, një është pesë? Ju keni marrë një të tillë këtu. Ju keni asgjë në dy të parit. Në dy të dytë, ju ketë një në katër, i cili është. Kështu që ju të shtoni katër plus një, ju keni pesë. Gjithkush mirë? NE RREGULL. Dhe pastaj çfarë të jetë kjo dhe pse? Çfarë numri ka një korrespondojnë? Audienca: 10. PROFESORI: Dhe çfarë kjo në bazë të dy? Audienca: [padëgjueshme] PROFESORI: Pikërisht. Pra, kjo vlerë i dytë këtu do të jetë 0X5A. Gjithkush e mirë se si për të kthyer? Kjo është një shumë të thjeshtë se sa ju mendoni se është. Unë vetëm dua të sigurohemi ju e dini këshilla të dobishme dhe truket për mënyrën se si ta bëjnë këtë. Audienca: Pse mund të ju vetëm të ndarë ajo në mes si kjo? Vetëm të jetë si, OK, unë jam vetëm duke shkuar për të kujdes për këta parë [e padëgjueshme]? PROFESORI: Sepse kjo është në fakt Mënyra Vlerat hexadecimal janë të përfaqësuara. 0x, që në fakt do të thotë asgjë tjetër se sa ju thënë se kjo është një numër heksadecimal. Dhe kjo gjithmonë përfaqëson katër shifrat. Dhe kjo gjithmonë përfaqëson katër shifrat e fundit. Dhe kështu këto dy shifrat vetëm korrespondojnë me copa të ndryshme. Audienca: Pra, ne do të always-- PROFESORI: Ju jeni gjithmonë do të merrni tetë bit vlerë. Audienca: A është kjo vetëm si një gjë këtu apo se një gjë të gjithë? PROFESORI: Kjo është vetëm një gjë në kompjuter, yep. Audienca: OK. Mbresëlënës. PROFESORI: Gjithashtu, kështu që në këtë shembull ne konvertuar nga binar në decimal, dhe nga binar në heksadecimal. Ju djema doni të bëni të sigurtë që edhe praktikë do mënyrë tjetër përreth. Pra, nëse unë ju dha 0XFF, ju mund të nxjerrë se në binar, e drejtë? Ju konvertojë F në binar, e cila është një, një, një, një, konvertohet F në binar, i cili është një, një, një, një. Pra, ne mund t'ju kërkojë të bëni mënyra të tjera përreth. Pra decimal të binar, ose hexadecimal në binar. Pra, ju doni të bëni që ju e dini të dy rrugët. Ne ndoshta do të ju pyes një kombinim i të dyjave. Po, ju keni një pyetje? Unë mund see-- ju jeni të mirë? Audienca: Po. PROFESORI: OK. A jam unë i mirë të fshihet kjo? I madh. Të gjithë të drejtë, kështu që përgjigjet janë këtu, nëse dikush është kurioz më vonë dhe për të marrë hutuar. NE RREGULL. Audienca: A ka rëndësi në qoftë se ne kemi vënë letrat tona në kryeqytet apo të vogla? PROFESORI: Ai e bën, sepse në heksadecimal, me konventë, të gjithë personazhet janë të uppercase. Pra, një përmes F janë do të jenë të uppercase. Nëse ju vendosni një vogle A, unë nuk e di nëse ne domosdoshmërisht do të shënojë atë të gabuar. Por teorikisht, kjo nuk është teknikisht si ju jeni duke menduar që të ketë atë. Pra, ata të gjithë duhet të jenë të uppercase. Po, pyetje e mirë. NE RREGULL. Pyetja e dytë. Konsideroni këtë program të bukur këtu. Unë do të kërkoj pyetjen: Unë do të kthehem këtë. Pra, së pari, çfarë është brenda standardit io.h kjo është në interes të programit? Së dyti, ajo që e bën të pavlefshme tregon në përputhje tre? Dhe së treti, çfarë do të kthehej zero nga kryesore, si linjë gjashtë, në përgjithësi të ditur? Nëse ju djema doni të shkruani ato poshtë, pasi që unë duhet të kaloni prapa në rrëshqitje vetëm kështu që ju mund të shihni kodin. Ky është një shembull i, si, ndoshta një Pyetja nivel më të lartë, ku ne ju kërkojmë çfarë gjëra thotë në një program. Gjithkush e mirë për mua të të kthehemi në rrëshqitje? OK, i ftohtë. Kështu që unë do të ju jap djema si ndoshta tre minuta për të parë në këtë një Quick reale. OK, kështu që kjo e si mjaft e lehtë, konceptualisht. A ka dikush doni të më tregoni se çfarë është së pari brenda nga hash përfshirë standardi skedar ynë bibliotekë io.h? Pse kemi nevojë për atë bibliotekën të përfshira për këtë program? Ajo që këtu nuk kemi nevojë për të? Po? Audienca: është se kur ju vënë atë printf? PROFESORI: Pikërisht. Pra printf, çdo kohë që ju marrë një hyrje nga përdoruesi dhe të shtypura diçka në ekran, kjo është input standarde, bibliotekë prodhimi. Mendoni se që way-- input, output. A kemi një prodhim? Po, unë bëj. Kështu që unë e di se unë jam gjithmonë do të duhet bibliotekën standardizohet i.o. Pra printf është funksioni me të cilën ne kemi nevojë për të hyrë në dhe hashtag përfshijnë bibliotekë standarde i.o. NE RREGULL. Së dyti, ajo çfarë e bën të pavlefshëm të ditur? Ne kemi int kryesor (i pavlefshëm), çfarë pavlefshëm këtu do të thotë këtu on line tre? Po, në shpinë. Audienca: [padëgjueshme] PROFESORI: Pikërisht. Pra mbani mend, ne kemi mësuar duke filluar me pset tonë që ju mund të vërtetë specifikoni command line Argumentet se programi juaj, që ju Funksioni kryesor, merr si ti, përdoruesi, e quajti atë. Në qoftë se ne kemi pavlefshëm, që do të thotë se ju mund vetëm të drejtuar programin direkt pa argumente command line. Gjithkush qartë për këtë? NE RREGULL. Dhe së fundi pse nuk kemi mërzit duke bërë kjo gjë kthim zero këtu? Pse ne kemi edhe një kryesor int? Pse nuk mund të ketë vetëm boshllëk void kryesore? Po? Audienca: Vetëm kështu që ne mund të të jetë i sigurt se programi është daljes me sukses, si krahasim me nëse ai ishte i numëruar. Dhe ne do të dimë se kjo është një lloj të ndryshme të gabimit. PROFESORI: Po, pikërisht. Kjo është vetëm një shumë gjë konvencionale që ne bëjmë, është se vetëm në fund programi juaj, vetëm për të siguruar që funksion tuaj kryesor po kandidon në mënyrë korrekte, Ne gjithmonë duam të bëjmë kthimin zero. Edhe pse ne mund domosdoshmërisht nuk e shihni se shtypur kudo. Sepse si programuesit, ju e dini, nëse ju keni linja të ndryshme të kodit dhe ju nuk e dini se ku këto do të gabuar, dhe ju nëse ndodh një gabim të duan të sigurohuni që ju të merrni atë gabim. Dhe kështu në mënyrë tipike, nëse diçka shkon gabuar ne do të kemi një kthim të një vetëm për t'u siguruar që ne e dimë se ajo është. Pra, nëse ju shihni një kthim zero, që në mënyrë tipike do të thotë që programi juaj është i ekzekutuar me sukses. Mirë? Ftohtë. OK, programi i dytë këtu. Mendoni se. Dhe në qoftë se ju djema të parë një noton, ju djema mund ndoshta të ketë një ide e mirë të asaj që Unë jam gati për të ju pyes. Pra, kur ky program ekzekuton, si ju mund të shihni, Unë jam deklaruar një noton brenda funksionit tim kryesor. Unë jam emërtimin atë "përgjigjem", dhe unë jam vendosjen e që barabartë me një ndarë nga 10. Unë jam shtypjen jashtë, në një vend decimal, që noton. Dhe atëherë unë jam kthyer zero. Pra, kur ekzekutimin e programit, mendoj se mbrapa për të babëzitur tani, ky program shtyp 0.0. Siç e dimë të gjithë, shpresojmë se ne të gjithë e di, një e ndarë nga 10 nuk është 0.00, është 0.1. Por, shpjegojnë pse ky program mendon se 1 pjesëtuar me 10 printime në 0.1 Tjetër sesa 0.1? Unë do të ju djema jap ndoshta si 30 sekonda për të vetëm të shpejt të mendojnë për atë dhe unë do të shkoj përsëri në programin. NE RREGULL. Çdokush duan të jepte një e shtënë? Në tre fjali ose më pak, sepse zakonisht ne jemi do të kufizojë të gjitha përgjigjet për tre fjali ose më pak kështu që ju nuk do të vetëm të derdh mbrapa gjëra të rastit onto quiz tuaj. Po, të marrë një e shtënë. Audienca: Pra, unë mendoj se nuk është kjo gjë të quajtur, si, [e padëgjueshme] Kështu që nuk mund të jetë, për shembull, mund të ketë, si, 0.09, se ku keni shkruar i pari shifror, kjo do të jetë për 0.0? PROFESORI: Mbylle, jo fare. Christabell? Audienca: Ju jeni duke e ndarë një dhe 10, dhe ata janë të dy integers. Dhe kështu që mënyra që ajo do për të ruajtur ajo është si një numër të plotë. Dhe kështu numër i plotë më i afërt do të jetë 0.0. Dhe kështu që është 0.1. PROFESORI: Po, kjo është me të vërtetë mirë. Kjo është përgjigja e drejtë. Pra, kjo është një shumë konfuz Koncepti për një shumë të fëmijëve. Dhe unë me të vërtetë dëshironi të bëni të sigurtë që kjo përforcohet në kokën e të gjithëve. Pra, ajo që ne e quajmë lundrues Pika pasaktësi, ku arsyeja pse shumë nga programet tuaja në lakmitar nuk ka punuar fillimisht ishte për shkak keni harruar për të hedhur ndryshore tuaj. Pra, çfarë ka thënë Christabell ishte plotësisht e saktë. Një noton është e natyrshme të pasaktë. Sepse në një kompjuter, të drejtë, ne kemi një sasi e caktuar e copa të kujtesës ne mund të përdorim për të përfaqësuar numrat. Kështu, për shembull, kjo ID CS50 is-- Unë mendoj se kjo është një kompjuter 64-bit. Një noton mund të përfaqësohet vetëm nga një sasi e fundme të këtyre bit. Dhe kështu 0.1 me zero pafundme, që ishte 0.1 është, e drejtë? Por ne nuk mund të vërtetë të ruajë ky numër në kompjuterin tonë. Ne thjesht nuk kanë kujtesë të mjaftueshme për ta bërë këtë. Dhe kështu përafrimi më i afërt i çfarë është ruajtur në kujtesën e në fakt është diçka si 0.000 diçka, diçka, diçka, diçka. I cili, sapo ju të shkurtoj ai, raundet deri në 0.0. Dhe kështu që ky shembull është vetëm një që tregon shumë çështjeve ne kemi sa herë që ne jemi duke u përpjekur për të bërë gabimisht matematikë pa hedh si një numër i plotë ndryshme. Pra, vetëm të jetë i kujdesshëm për të ndodhur kjo. Më kuize, në qoftë se ne të ju jap një bllok i kodit dhe kjo është si, atë printime në fund? Dhe në qoftë se kjo është disa vlera të rastit të djema duhet të e di pse kjo po ndodh. Po? Audienca: Truncate është shpëtoj gjithçka pas një pikë të caktuar? [Padëgjueshme] PROFESORI: Yeah, kështu që në fakt ky është një shembull i vërtetë e keqe, sepse 0.100 çfarëdo fakt do të shkurtoj deri në 0.1. Por në qoftë se keni qenë për të drejtuar it-- unë nuk e bëj mbani mend, sepse vitin e kaluar ata vrapoi atë në një program të ndryshëm. Ata vrapoi atë në diçka të quajtur CS50 Appliance, e cila është e ndryshme nga ID. Kjo ishte një sistem 32-bit, unë mendoj. Dhe kështu ka pasur numra të ndryshëm. Por në thelb, vetëm e di se i gjithë koncepti i truncation dhe se si ajo vetëm shkurtime gjërat off. Dhe kështu që nëse ajo rounds-- Audienca: Pa arrestimi. PROFESORI: Pikërisht. Po. Ftohtë. Hi, në pjesën e prapme. Ne jemi vetëm duke shkuar mbi disa Pyetjet shqyrtim quiz. Në rregull. Kështu që e konsiderojnë një program të ndryshëm këtu. Unë jam duke shkuar për të ju jap djema një minuta çift të lexoni mbi këtë. Kjo është diçka që ka qenë për një shumë Kohët e fundit që unë mendoj shpërtheu një shumë prej jush mendjet djema s. Por ne jemi duke shkuar për të folur nëpër këtë përsëri vetëm për t'u siguruar që ju kuptojnë atë plotësisht. NE RREGULL. NE RREGULL. Çdokush duhet më shumë kohë për lexuar nëpër këtë kod? NE RREGULL. Pra, mua më duket se në këtë program unë jam krijuar dy vargje duke përdorur getString. Një quajtur s dhe një të quajtur t. Dhe në qoftë se ata janë të barabartë është e barabartë me njëri-tjetrin, ajo duhet të shtypura "You tipit të njëjtën gjë. " Por elsewise, ajo do të shtypura ", You shtypur gjëra të ndryshme ", e drejtë? Duket shumë, shumë e thjeshtë. Por, megjithatë, në qoftë se unë në fakt të përpiqet për të shkruar këtë program, duket se edhe kur unë input vargjet e saktë të njëjta, ajo ende printon jashtë, "You shtypur gjëra të ndryshme! " A ka dikush duan të marrin një shtënë në pse ky program gjithmonë përgjigjet se inputet janë të ndryshme, madje edhe kur vetë fjalët janë të njëjta? Pra, nëse unë do të input-- David dashuri për të përdorur një shembull si mami, apo jo? Fjala M-O-M për S, T është e barabartë me gërma të vogla M-O-M. Nëse unë u zhvillua këtë përmes që kodi, pse do të shtypura nga "të shtypur gjëra të ndryshme?" A ka dikush nevojë për më shumë koha për të menduar për këtë? OK, unë mendoj se ne jemi të mirë. Po? Audienca: OK, kështu që kjo është diçka në lidhje me ku është e ruajtur në kujtesën, e drejtë? PROFESORI: Po. Audienca: Ku është si, në qoftë se ky string s është i ruajtur në kujtesë spot-- Unë jam duke shpikur this-- është zero. PROFESORI: Sigurisht. Audienca: Dhe varg t është ruajtur në vend të kujtesës, si, 167, dhe pastaj zero nuk ka të barabartë 167. PROFESORI: Pikërisht. OK, kështu që mos harroni këtë të pabesueshme Shpallja kemi shpjeguar për ju djema këtë javë të fundit, që strings vërtetë nuk ekziston? Kur ne të krijuar diçka të quajtur string ne jemi, në realitet, duke krijuar diçka të quajtur yll char. Të cilat të gjitha kjo është është një tregues për një varg apo për një grup të karaktere. Dhe kështu në këtë shembull, në qoftë se unë ishin të input M-O-M mënyra se kompjuteri im do të dyqan është brenda backslash kujtesës zero, e drejtë? Këto katër karaktere, chars, do të ruhen diku. Dhe atëherë këto katër karaktere, backslash zero, janë ruajtur diku tjetër, e drejtë? Unë nuk kam asnjë ide se ku adresat janë, ata janë diku në kompjuterin tim. Por unë nuk e di saktësisht se ku ata janë. Kur kam krijuar një varg s, të gjithë që me të vërtetë është është një tregues për fillim të këtij vargut. Dhe kur unë krijuar këtë vlerë t, gjithçka që është një tregues këtu. Dhe kështu që kur ju jeni duke u përpjekur të vë shenjën e barazimit dhe të kontrolluar për të parë nëse është e barabartë s barabartë për t, kompjuteri është me të vërtetë vetëm të kthehej në ju adresa e kësaj m dhe adresa e atij m. Dhe për shkak se ata janë të dy pjesë të veçanta e të dhënave që janë të ruajtura në dy të ndryshme adresat në kompjuterin tuaj, kompjuteri juaj kurrë nuk do të njohin ata si të njëjta. A ka dikush duan të japin një e shtënë në atë që ne do të duhet të bëni nëse ne të kërkuar për të korrigjuar këtë dhe të ketë një program të saktë running në vend? Mendoni se për disa sekonda. Çfarë nuk kemi nevojë për të ndryshuar për të merrni këtë funksionimin e programit mënyrën se si ne duam që ajo të funksionojë? Po, duan të marrin një goditje me thikë në atë? Audienca: A mund të përpiqemi të dereference tregues dhe shikoni nëpër rrjet? PROFESORI: Kjo është një mënyrë për të bërë atë. Pra, çfarë është emri juaj përsëri? Më vjen keq, kujtoj mua. Zee: Zee. PROFESORI: Yeah, kështu që ajo që Zee sugjeroi do të punojë absolutisht. E drejtë? Ne mund dereference e akrep dhe në fakt shkojnë dhe qasja të dhënat fizike brenda të këtu. Dhe ne vetëm mund të krahasoni të gjithë ekranin. Ne mund të themi, OK, akrep, më jepni çfarë është brenda këtu. Ajo do të kthehet një m. Dhe unë do të thoja, akrep, më jepni çfarë është brenda këtu. Kthehuni një m. Bëjnë ato ndeshje? Po. Pastaj ne të lëvizë. Ne vazhdojmë të kontrolluar të gjithë dy Strings të gjitha rrugën deri në fund dhe të shohim nëse ata janë të barabartë, nëse të gjitha vlerat janë të barabarta. Dhe në qoftë se të gjitha vlerat janë të barabarta, atëherë ne e dimë se vargjet janë të vërteta. Absolutisht, kjo është se si ne do ta bëjmë atë? A ka dikush hutuar në ndonjë nga këto? I tërë koncepti i se si strings janë me të vërtetë vetëm pointers, dhe se si ata nuk të vërtetë ekziston? Dhe pse ne kemi marrë gabime si mënyrën se si ne të merrni atë? Sepse unë ju garantoj djema, pointers dhe caktimi string dhe kujtesës do të dalë. Po? Audienca: [padëgjueshme] dereference ajo, ju vetëm vënë një yll [e padëgjueshme] PROFESORI: E drejta. Pra, për të derererence një mjet pointer për të shkuar në atë adresë e akrep dhe të marrë të dhënat, vlerën atje. Dhe mënyra për ta bërë këtë është akrep yll. A nuk e ngatërruar atë. Audienca: [padëgjueshme]. PROFESORI: Po. Audienca: Kështu që ju mund të shkruani vetëm në qoftë se yllit s barabartë t barabartë yll. PROFESORI: E pra, nuk ka. Jo. Audienca: Kjo nuk është mjaft e mirë, e drejtë? PROFESORI: Kjo nuk është, sepse ju jeni vetëm kontrolluar letrën e parë. Ju jeni me siguri do të nevojë për një lloj të një lak që iterates përmes çdo të vetme Karakteri në të dy vargjet. Po. Pra, nëse ju të kërkuar për të vetëm të kontrolloni për të parë nëse ata filluan me të njëjtën gjë, ju mund të bëni nëse, yll s eshte e barabarte me yll t. Atëherë ju e dini se të paktën ata filloi me të njëjtin karakter. Po? Audienca: Pra, mënyra ju bëni që do të jetë si një ngulitur për lak ose akrep? PROFESORI: Po. Pretty much vetëm një për lak. Mos harroni, Davidi në klasë përmendur sheqer pa pagesë sintaktik? Dhe ai e kishte këtë shumë gjë konfuze e yllit t plus një, ku ai do të integrojë përmes dhe të lëvizin në treguesin? Mënyra më e lehtë për të bërë kjo është vetëm t e i. Pra, kjo është vetëm një koleksion. Mënyrë që ju do të ketë nevojë për një lak që u nga zero deri në i, ku I është gjatësia e string, ju mund vetëm shkruaj që në vend të bërë të Gjithë akrep, gjë referencë. Pra, këto gjëra janë pikërisht ekuivalente në kompjuterin tuaj. Ju djema ndoshta nuk do të duhet të dini se, por kjo është e mirë për të vetëm lloji i kanë në shpinë mendjen tuaj. Vetëm e di se kompjuteri njeh blloqe të ndryshme të kodit si të njëjtën gjë. Sepse kjo është vetëm shumë më tepër përdorues miqësor për ne për të paraqitur atë si është një koleksion. Është vetëm më të lehtë. Audienca: Pra, përdorni strlen të pëlqen, get-- PROFESORI: Po. Audienca: OK. PROFESORI: Ju mund përdorin strlen ose, në qoftë se ju nuk kanë strlen ju mund të bëni vetëm deri derisa ju goditi backslash zero për të dy. Ose do të punojë. Po. Audienca: Pra, kjo është në çdo dereference karakter të vetëm në qoftë se ne kemi qenë në fakt shkruar këtë kod, ne mund të bëjë vetëm kllapa T i si me yll në frontin e tij? PROFESORI: Po, është e barabartë është e barabartë me s kllapa unë, dhe pastaj të mbajtur lëviz I poshtë lart derisa ju goditi fundin. Po, kjo është ajo që ju do të bëni. Dhe unë në fakt do të kemi një tjetër shembull kur ne fakt shkruaj strlen kështu që ju djema do lloj i merrni për të luajtur rreth me pak. Pra, është e qartë se të gjithë në vetëm kujtesë, vargjet, Akrepa, adresat cilësisë? Disa koncepte nivelit më të lartë që ju do të sigurt duhet të dini në quiz nesër. Në rregull. Të mirë. Yep. OK, kështu që një gjë që ne do të pyesim ju, siç bëjmë çdo vit në një quiz, është, mendoj se ju keni harruar (e cila ne duket të harroni të bëni çdo vit) në të cilën është deklaruar header skedarit strlen. Dhe kështu që ne kemi për të rishkruar atë vetë. Këtu janë një listë e udhëzimeve që ne mund të ju paraqesim djema ku ju merrni për të supozojmë se s vargu nuk do të jetë i pavlefshëm. Ju mund të supozojmë se s do të jetë ndërpritet me një backslash zero. Pra, ju e dini se çfarë është ajo do të përfundojë me të. Dhe, për shembull, se Gjatësia e përshëndetje do të jetë pesë. Kështu që ju mund të supozojmë se përshëndetje do të jetë pesë, H-E-L-L-O. Ju nuk keni për të supozojmë se Backside zero llogaritë për gjatësinë. Kjo gjëja e fundit këtu, nuk shqetësohen për fryhen integer. A ka dikush kujtohet çfarë integer overflow është? Audienca: shkon përtej Gjatësia e [e padëgjueshme]. PROFESORI: Po, mund të shpjegoni pak, çfarë do të thotë? Audienca: Pra, unë mendoj se shkon prapa për shembull truncating më herët. Por në qoftë se ju keni vetëm kaq shumë numra që shkojnë përtej numrin e bit që ju në fakt mund të caktojë atë se ajo vetëm do lloj i prerë. PROFESORI: Yeah, kështu që në një tipik kompjuter, sa bit kemi? Audienca: 32? PROFESORI: Po, 32, e drejtë. Dhe kështu kjo është, ajo, katër miliard, dy miliard? Katër miliardë, deri në katër miliardë integers pozitive, e drejtë? Dy miliardë negative, dy miliardë pozitiv, varet se si ju doni të bëni atë. Dhe kështu që në thelb ne mund të kemi integers mjaftueshme që mund të shkojnë deri të dy me 31 minus 1, e drejtë? Sepse dikur ne hit dy të 32-të, ne nuk e bëjmë kanë atë shumë memorie në kompjuterin tonë. Dhe kështu, teorikisht, unë mund të dalë me një numër që është, si, dy të 46-in. Është një numër i madh-ass, por teorikisht ju mund. Dhe del nga shtrati kështu numër i plotë është në qoftë se ju përpiqeni të të krijojë një numër të plotë që shkon përtej asaj që kompjuteri juaj është i aftë për ruajtjen. Dhe kështu që ju djema për ky shembull nuk kanë për t'u shqetësuar rreth nesh duke ju dhënë një gjigant varg që është dy deri në karaktere 32ND gjatë. Që me të vërtetë do të thotë. Të gjithë të drejtë, kështu që unë jam vetëm duke shkuar për të dhënë ju djema struktura bazë të kësaj. Ju jeni duke shkuar për të krijuar një Funksioni i quajtur int strlen ku një të kalojë në, një yll char, ose varg, tregues në vargun e quajtur s. Të gjithë të drejtë, të gjithë kopje atë poshtë. Ftohtë. Oops-- mënyrë tjetër. Pra, kjo është lloj i si një pjesë më e vështirë e problemit, kështu që unë do të ju jap djema ndoshta pesë për gjashtë minuta për llojin e pyetini dhe shkruaj këtë funksion jashtë. Audienca: Ne nuk bëjmë llogari për [e padëgjueshme], ne nuk duhet të përdorin numër i plotë? PROFESORI: Jo, ju nuk e bëni. Unë do të ju jap djema një aluzion. Një lak, ndërsa mund të jetë shumë i dobishëm këtu. Po. Ja karamele. Karamele do të jetë në dispozicion për quiz, unë mendoj. Pra, ju djema do të jenë të gjithë sheqerosur deri nesër. Mund I-- ju mori atë. Audienca: OK. PROFESORI: Po. Ndoshta 30 sekonda më shumë apo më shumë. Të gjithë të drejtë, në qoftë se ju jeni nuk bëhet, nuk shqetësohet. Ne do të lëvizin nëpër këtë së bashku. NE RREGULL. Kështu që unë jam duke shkuar për vetëm layout Struktura themelore për këtë funksion këtu. Int strlen. Së pari, ka njeri dua të them mua çfarë do të thotë se int? Ne duhet të kemi në këtë funksion. Audienca: Strlen [e padëgjueshme]. PROFESORI: Pikërisht. Pra, çfarëdo që të ndodhë në këtu, ne kemi nevojë për të kthyer një numër të plotë. Dhe siç specifikohet në spekulim, ne duam të return-- Shkoni për të një vajzë, vetëm do të mbajë. Kjo është e gjitha e mirë. Hani atë të gjithë kështu që unë nuk kam për të marrë atë përsëri, në të vërtetë. Int vetëm nënkupton se ju jeni do të jenë të kthyer një numër të plotë. Çfarë është kjo char yll s? Cfare do te thote ajo? Audienca: Si, çfarë është të qenit të dhëna në. PROFESORI: Pikërisht. Dhe ajo që është pothuajse e njëjta gjë si yll char? Audienca: String? PROFESORI: Pikërisht. Pra, të gjithë ne jemi duke bërë është duke i dhënë ky një tregues për një varg. NE RREGULL. Ftohtë. Gjithashtu, mos harroni, në qoftë se ne të harrojmë për të ju jap këto kllapa, mos harroni të shkruani vetë. Sepse teorikisht, kodi juaj është gabuar nëse ju harroni të shkruani ato. Vetëm gjithmonë i kushtoj vëmendje. Ashtu si, pak gjëra që ju nuk e vërejnë kur ju jeni programimit në laptopë tuaj, sepse laptop e bën atë për ju? Mos harroni kur ju jeni duke shkruar me dorë. Po? Audienca: Por si e pasaktë? Si, nuk kemi marrë të gjithë problemin e gabuar? PROFESORI: Jo, jo. Mos u shqetësoni. Kjo është në fakt teorikisht e mundur për ju për të marrë pikë të plota në një pyetje edhe në qoftë se kodi juaj do kurrë nuk të drejtuar në jetën reale. Unë sugjeroj që ju nuk do të përpiqet për të bërë që të ndodhë. Për shembull, si në qoftë se çdo gjë kjo është e drejtë këtu është, por ju harroni një zorrë e trashë ose një parantezë, kodi juaj nuk do të vërtetë të drejtuar. Por ne mund të jetë i mëshirshëm. Po? Audienca: A keni të komentoni mbi shkrim dore tonë? PROFESORI: Jo, jo, jo shqetësohet për këtë. Nuk ka komentuar. Stil duhet të jetë e mirë. Si, nuk Smush çdo gjë në një linjë. Ne nuk do të jenë të lumtur me ju, nëse ju bëni këtë. A ka dikush duan të më jep vijën e parë? Hint, kjo është shumë e lehtë. Po? Audienca: Int, n është e barabartë me zero. Vetëm ngritur kundër. PROFESORI: Pra, ne duam disa lloj i një kundër, e drejtë? Unë jam vetëm duke shkuar për të përmendur atë "numërimin" për hir të lexueshmëri. Çfarë duam të vendosur atë barabartë me? Audienca: Zero. PROFESORI: Po. Pikëpresje. Është gjithashtu shumë e pazakontë pikpresje vizatim. Vetëm praktikë bëjnë këtë. Pra, ne duam që së pari të ketë një kundër të tipit int. Sepse ne duam për të numëruar deri sa shumë karaktere ose letra janë në këtë varg, e drejtë? Hapi i parë i lehtë. OK, ndoshta pak më komplekse tani, si do të shkojmë për të bërë këtë? A ka dikush duan të jepni linjë të kodit që mund të jetë në gjendje për të ndihmuar lak përmes çfarëdo kjo është? Po, shpirti trim në shpinë? Audienca: OK, kështu që ndërsa pika asterisks, The yeah, ylli i s, nuk është e barabartë me zero, atëherë bëni diçka? PROFESORI: Kjo është e vërtetë, të vërtetë të ngushtë. Të vërtetë afër. Kështu që unë jam duke shkuar për të adresuar dy gjëra me këtë. Para së gjithash, kjo nuk është saktësisht zero. Çfarë është ajo? Është terminator null, e cila është backslash zero. Pra, ata janë të ndryshëm në Kushtet e se si ata janë të ruajtura. Pra, ju jeni të vërtetë afër. Dhe së dyti, ne nuk duam për të vetëm të lëvizur akrep. Ne duam që në fakt qasje vlerat, e drejtë? Dhe kështu si do të bëjmë atë? Shumë e lehtë. Mos mendoni për pointers, nuk mendojnë për kujtimet. Kthehu mbrapa në javën e dytë të këtij kursi. Audienca: [padëgjueshme]. PROFESORI: Që nga, mbani mend? Cilat janë vargjet? Si janë ata të ruhen në kujtesën? Audienca: Ata janë ngritur. PROFESORI: Ata janë ngritur. Pra, si nuk kemi qasje çdo karakter brenda? Audienca: [padëgjueshme]. PROFESORI: Pikërisht. Pra while-- çfarë shkon brenda këtu? S e - Audienca: I. PROFESORI: Oh, unë nuk ekziston, e bën këtë? Audienca: Oh, numërimin? PROFESORI: Ne mund të vetëm përdorin numërimin, nuk mund të kemi? Audienca: Na vjen keq, unë e quajti atë unë. PROFESORI: Po, kjo është e gjitha e mirë. Ne kemi një ndryshore deri këtu se është tashmë është shpallur si kundër tonë. Pra, pse nuk kemi vetëm të përdorin atë për të lëvizur nëpër lak, ndërsa? A ka kjo kuptim? Kështu, ndërsa s e count-- ka njeri të dua për të dhënë mua atë që ndodh pas këtu? Audienca: Kjo nuk ka të barabartë. PROFESORI: A nuk të barabartë, e drejtë? Është zhurmë barabartë, pikë thirrje është e barabartë, çdo gjë që ju djema doni të e quajti atë nuk equal-- Audienca: [padëgjueshme]. PROFESORI: Po. Mos harroni kuotë të vetme është për një char, kuotat dyfishtë janë për një varg. Kini kujdes kur për përdorimin e tyre. Pra, kur ne jemi duke kërkuar përmes array, karakteri fundit, ne e dimë se ne nuk duam ajo të jetë backslash zero. Kështu, ndërsa. Ne nuk janë në fund të vargut. Çfarë duam të bëjmë brenda? Audienca: Ne duam për të shtuar në counter kështu që numëron plus plus? PROFESORI: Pikërisht. Pra, këtu ne jemi duke shkuar për të bërë numërimin, numërimin plus plus. Missing një rresht më shumë. Ne jemi pothuajse atje. Çfarë jemi duke harruar të bëjmë? Audienca: Kthimi zero? PROFESORI: Ju dëshironi të kthehen zero? Audienca: Jo, duke u kthyer në strlen. Prisni. PROFESORI: Cila është ruajtur në? AUDIENCA: Pika. Count. PROFESORI: Pikërisht. Pra, këtu ne do të kthehen numërimin. Sepse ajo që ne jemi duke bërë këtu ultimately-- ne kemi një ndryshore kundër që është duke shkuar për të ardhura nëpër vargun tonë. Ne jemi duke shkuar për të mbajtur vazhdim e sipër, të mbajtur shkuar, rreth e rreth në këtë lak. Dhe, ndërsa ne nuk jemi në fund të këtij string, e cila është terminator pavlefshëm. Dhe çdo herë që ne do të shkojmë nëpër ajo, ne jemi duke shtuar në banak tonë. Dhe ne jemi duke shkuar më tej së bashku në këtë grup. Dhe në fund, pasi ne goditi terminator null, ne e dimë, oh, ne mund të pushim, kthehen numërimin. Ne kemi strlen tonë. Ka marrë të gjithë si kjo u zbatua? Ndërsa loops-- Unë e di që ne nuk kemi bërë shumë me ta, por ata janë zakonisht të shumë, shumë e dobishme në qoftë se ju nuk e di se çfarë jeni duke ndalur kusht domosdoshmërisht duhet të jetë. Pyetje? Audienca: A mund të shkruaj null me kusht ndërsa? PROFESORI: Derisa? Yeah, kështu që në këtë problem kam pasur të djema supozojmë se s nuk do të jetë i pavlefshëm. Sepse mos harroni, teorikisht, në qoftë se unë ju dha një tregues se ishte shumë e madhe e kujtesës, kjo do t'ju japë null, e drejtë? Kjo është ajo që operativ sistemi do të bëjë. Pra, nëse unë nuk ju them për të marrë përsipër s do të jetë i pavlefshëm, ju duhet të kontrolloni. Kështu që këtu, ju do të bëni, në qoftë s barabartë barabartë null, kthehet një të tillë. Diçka e tillë. Audienca: [padëgjueshme] zero. PROFESORI: OK, unë do të tregoj ju pse ne nuk mund ta bëjmë këtë. Sepse kujtohet në kujtesën, të drejtë, këtu. Ne do të shkojnë këtu. Ju keni marrë blloqe gjigante e kujtesës të gjithë me rrjetet se dyqan vlera të ndryshme, e drejtë? Dhe kështu të gjithë një varg is-- për shembull, në qoftë se ne jemi për të dhëna hello, kjo do të jetë H-E-L-L-O backslash zero, e drejtë? Dhe pastaj kush e di, si të rastit gjërat që janë në këtu pas saj. Ne fakt nuk e di se çfarë është atje. Dhe kështu që nëse ju do të bëni në vend të backslash zero, null, ajo nuk mund të jetë null. Për shkak se ajo vetëm mund të nënkuptojë disa gjëra të tjera të rastit që nuk i përkasin në varg tuaj. Dhe kështu mënyra që ne gjithmonë e dimë se një varg përfundon është me një backslash zero. Dhe kështu që është gjithmonë se si ne kontrolloni për të parë fundin e një varg. Null, gjithçka që do të thotë është nëse keni një tregues jo-ekzistues, para së gjithash, ose në qoftë se kujtesa juaj është vetëm aq i madh se ju nuk mund të ktheheni, atëherë ajo do të jetë i pavlefshëm. Pra, të jenë shumë të kujdesshëm kur të diferencuar dallimi në mes null dhe backslash zero. Po. Gjithkush në rregull me këtë? NE RREGULL. Kështu që unë kam ju djema shkruani nga strlen. Feasibly ne mund të pyesni ju shkruani nga A deri I, mbani mend se "Atwoa" apo çfarëdo ju djema doni të telefononi atë? Që funksionojnë në Vigenere dhe Cezari, që konverton një vlerë ASCII për një numër të plotë? Që gjithashtu ka dalë në kuize kaluara e funksioneve ne kemi pyetur ju për të shkruar. Pretty much çdo funksion që e keni përdorur dhe është shumë e lehtë për të shkruar vetë, sensorë si është më e ulët, është e lartë, për të ulur, në pjesën e sipërme. Funksionet që do të konvertohet një string nga shkronja jokapitale në uppercase. Ne të gjithë e dimë se si ta bëni atë, e drejtë? Është mjaft e lehtë. Vetëm dua të bëni të sigurtë që ju të can-- është i njëjti proces mendimi. Ju vetëm iterate nëpër dhe ju kthehet gjëra. Ju ose numërimin ose kur ju kthejnë gjërat ndryshe. Unë do të suggest-- I nuk e di nëse ne jemi duke shkuar të ju pyes për të mësuar përmendësh çfarë kapitalit A ose Z kapital, apo të vogla Një apo të vogla z janë në ASCII, por unë do të sugjeroja mbase shkruar se poshtë në rast ne bejme. Vetëm kështu që ju djema keni një referencë. Ashtu si uppercase Një është, çfarë, 197? Dhe pastaj Fjala është si 50 diçka. 65, vërtet, ju shkoni atje. Pra, vetëm shumë e shumë të dini Dallimi në mes tyre është 32. Kjo është shumë e rëndësishme. Po. A jam unë i mirë për këtë? NE RREGULL. Audienca: Ne mund të teorikisht shkruaj disa nga këto poshtë, si edhe në little-- tonë PROFESORI: Ju teorikisht mund vetëm të kopjoni funksionin poshtë. Kjo është e vërtetë. Audienca: Jo [e padëgjueshme]. PROFESORI: ju djema keni një fletë. Ju djema keni një fletë shënim. Ju mund të shtypni atë. Ju mund të shkruani atë. Ju mund të bëni çfarë të doni me të. Po. Pra teorikisht, nëse ju doni të, të shkojnë për të. Audienca: [padëgjueshme] por ne nuk të vërtetë domosdo duhet të mbani mend vlera, ne mund vetëm përdorni për të sipërme ose të Funksioni më i ulët, e drejtë? PROFESORI: Po. Por nëse ne ju dha një pyetje që thotë se të shkruani në pjesën e sipërme, atëherë ju do të duhet për të shkruar atë. Kështu që ju djema mund të supozojmë se ju djema keni qasje në të gjitha funksionet, por në qoftë se ju doni të përdorni të sipërme ose të më të ulët, çfarë ju gjithashtu keni për të bërë? Audienca: [padëgjueshme] përdorni CS50 [e padëgjueshme] PROFESORI: A është CS50.h? Të jenë të kujdesshëm atje. Pra, për të sipërme, të ulët, është e lartë, është më e ulët, funksionet që përfshijnë manipulim string janë të gjitha brenda ose në ascii ose brenda bibliotekës matematikës ose brenda bibliotekës string. Pra, nëse ju djema përdorin ato funksionet, të jenë të kujdesshëm për të kujtuar për të përfshirë atë header. Pra, ndoshta edhe diçka ju dëshironi që të përfshijë në fletë tuaj, çfarë janë header? Cilat janë bibliotekat ju keni qenë duke përdorur? Cilat janë funksionet brenda këtyre bibliotekat? Eshte e rendesishme. Po? Audienca: Mund të vetëm polic jashtë dhe të bëjë hashtag përmes absolutisht çdo letër ne kemi ndonjëherë shihet si në të gjitha pyetjet? PROFESORI: Ju mund. Unë nuk e di se sa të lumtur ne do të jetë në klasën që quiz kur çdo pjesë e kodit është dy herë për aq kohë sa ajo duhet të jetë. Unë nuk e di, mund të heq një pikë për stilin. Por teorikisht tuaj Kodi do të jetë e drejtë. Ju djema mund të polic jashtë dhe vetëm përfshijnë çdo gjë. Kjo është në rregull shumë, vërtet. Audienca: [padëgjueshme]. PROFESORI: Po. Unë do të sugjeroja të mos e bërë atë pse. Po. Audienca: Best. PROFESORI: Pyetje e mirë. Audienca: Pra, skenari më i keq. PROFESORI: Rasti më i keq. Nëse jeni plotësisht të harrojmë, ju mund të bëni atë. Po. Yep, kodi është e drejtë atje. I përdorur n në vend të numërimit, por, ju e di, çfarëdo gjithandej varkë tuaj. Audienca: Prisni, kështu që ne nuk do të duhet të hashtag përfshijnë sepse ne jemi duke filluar në int? PROFESORI: Po, unë vetëm supozohet se ne u pyetën për të shkruar funksionin. Nëse dëshironi që të jetë i sigurt, ju ndoshta mund të vënë atë atje. Por unë thjesht nuk u mërzit, po. Unë nuk e di edhe nëse ju nevojë për ndonjë bibliotekë për këtë. Sepse ju nuk jeni me të vërtetë shtypjen nga ndonjë gjë apo ndonjë gjë, apo jo? Po, unë nuk e di nëse ju keni nevojë për një bibliotekë. NE RREGULL. Kjo është gjithashtu një pak më të gjatë linjat e manipulimit të kujtesës. Ky lloj i pak i ndërlikuar. Mendoni për këtë. Ju keni një funksion të quajtur funk. Unë mund të ketë quajtur atë çfarëdo, por unë zgjedh për të përmendur atë funk. Unë kam atë mbi kryesor ime. Mbani mend, ju dëshironi të keni një funksion pas kryesor juaj, ju doni të bëni të sigurtë që ju përfshijnë prototip të lartë. Por në këtë rast ajo ishte aq e shkurtër që unë ndjeva se unë mund vetëm të përfshijë atë në majë kryesore. Unë nuk duhet të ketë prototip, sepse është shkruar më lart. Pra, të gjitha unë jam duke bërë në funksion e mia kryesore po krijon integer x është e barabartë me 10. Unë jam duke e quajtur funksionin tim funk, dhe pastaj shtypjen diçka. Dhe pastaj kjo është në fakt çfarë Func është duke bërë. Ju djema doni të mendoni me këtë. Për shkak se ajo është pak i ndërlikuar. Është shumë, shumë e ndërlikuar, në të vërtetë. Mendoni se nëpër çka kjo Programi do të jetë kompjuteri. Unë do të ju jap djema dy minuta. Diskutimet e mirë? Audienca: Po. PROFESORI: Po. Të gjithë të drejtë, kështu që kjo është ndërlikuar për një arsye. Dhe kjo është arsyeja pse kam kërkuar për të sjellë kjo në vëmendjen e të gjithëve. A ka dikush doni të jepni mua një sugjerim, një përpjekje? Çfarë kjo do të shtypura nga? Krejtësisht mirë në qoftë se ju jeni të gabuar. Po? Audienca: Unë mendoj se është 100 dhe pastaj 10 në dy linja të veçanta. PROFESORI: Dhe një 10? A ka dikush ndonjë supozime të tjera? Po? Audienca: Ndoshta vetëm 10 për shkak Func nuk është kthyer ndonjë gjë? PROFESORI: OK, kështu që ne kanë mend numër një është se mend numri dy është vetëm do të shtypura nga 10. A ka dikush ndonjë supozime të tjera? NE RREGULL. Pra, le të ecin nëpër këtë, apo jo? Kurdo që ju të merrni një pjesë të kodit, mos vetëm shikoni në atë dhe të jetë si, ah, kjo është aq shumë gjëra! Unë jam kaq i hutuar! Si, qetësuar veten poshtë. Vetëm e di se ju mund vetëm shikoni përmes linjës kodit nga linjë. Kjo është e gjitha ajo është. Është si duke lexuar një libër. Pra, me çdo funksion, ne gjithmonë të fillojë në kryesore. Pra, ne jemi duke shkuar për të fillojë në zbrazëti int main, edhe programin e së tashmë të drejtuar poshtë, e drejtë? Të fillojë në në zbrazëti kryesore. Int x është e barabartë me 10. Kështu që unë jam duke shkuar për të fshirë këtë. Unë jam duke shkuar për të nxjerrë kujtesës vetëm kështu ju djema mund të lloj të shihni se çfarë po ndodh. Mos harroni poshtë këtu kemi pirg tonë? Deri këtu kemi tonë grumbullosh diku këtu. Stack rritet, e drejtë? Dhe brenda rafte, ju keni nga rrjeti elektrik të funksionuar si edhe të gjitha variablave rrjeta lokale. Kështu që këtu, int x barabartë 10. Funksioni ynë kryesor ne jemi duke krijuar një ndryshore të quajtur x. Ne jemi vendosjen se e barabartë me 10. Këtu ju keni marrë disa x, dhe ju jeni vendosjen që i barabartë deri në 10, të drejtë, brenda kryesor. Gjithkush mirë? Funksion. Deri tani, brenda kryesore ynë funksion, ne jemi duke e quajtur funksioni kemi shkruar më lart. Pra, ne jemi tani hyjnë funksionin e dytë. Ne jemi duke shkuar për të krijuar një tjetër int ndryshueshme x është e barabartë me 100. Çfarë po ndodh këtu në rafte? Çfarë ndodh kur ju telefononi një funksion që krijon variabla të reja? Çfarë ndodh këtu në rafte? Audienca: [padëgjueshme] shtyllave në krye? PROFESORI: Po. Pra, ai në fakt krijon një kopje. Dhe kjo lloj e shtyllave në krye. Mendoni e stack-- një pirg e librave, një pirg të çdo gjë. Shtyllave në krye, para në të fundit jashtë, të zgjasë në, së pari jashtë. Pra, kjo do të krijojë një x këtu. Që do të ketë Të gjitha funcs variablave. I madh. Deri tani ne kemi dy Xa të ndryshme që paraqesin dy gjëra shumë të ndryshme. Pastaj ne jemi duke shkuar për të shtypur jashtë numër të plotë të x. Pra, le të shtypura 100, e drejtë? Sepse këtu është 100. Pra, kjo është gjëja e parë se ajo do të shtypura jashtë. Si kjo asgjë kthimit funksion, tani që funksion, se linja kryesore në është bërë. Gjithkush e mirë me mua deri tani? Pra, ne jemi tani përmes dy nga tre linja e funksionit tonë kryesor. Tani ne jemi duke shkuar në vijën e tretë. Ne jemi duke shkuar për printf. Çfarë është kjo x brenda kryesor? Çfarë do që përfaqëson? Çfarë është vlera e x tani? Audienca: 100. PROFESORI: Është 100? Audienca: Ende 10. PROFESORI: Ende 10. Po. Sepse mos harroni, brenda Func ynë, x është e barabartë me 100. Por në qoftë se ne të kthehet prapa të funksionit tonë kryesor, që variabël është ruajtur në një vend tjetër në rafte tonë. Pra, tani ne kemi nevojë për të shkuar përsëri në rafte kryesor, mbetet ndryshoret lokale. Dhe këtu x është e barabartë me 10. Dhe kështu që ne jemi duke shkuar për të shkruar jashtë 10. Pra, ajo ishte absolutisht e drejtë. Ne jemi duke shkuar për ketë prodhimi i 100 dhe 10. Po? Audienca: Kur ju malloc, a është tog apo rafte që është [e padëgjueshme]? PROFESORI: Kur ju malloc, ju jeni duke marrë kujtimin nga plehrat dhe alokimin atë. Kështu që ju nuk keni të luajnë me ndonjë nga këto. Kështu që unë mendoj takeaway madhe këtu është diçka që quhet objekti. Për ata prej jush që ishin në seanca shqyrtimi natën e fundit, kemi biseduar shkurtimisht në lidhje me këtë. Shtrirja përcakton se si dhe kur variabla tuaj ekzistojnë. Ose brenda çfarë korniza bëjnë variabla tuaj ekzistojnë. Pretty much sundimi i gishtit në përgjithësi është, variables-- juaj në qoftë se keni krijuar ato brenda braces-- dredhur ato ekzistojnë vetëm brenda këtyre formatimin e teksteve kaçurrel. Kështu për shembull, në funksion tonë funk, ju shihni ato dy formatimin e teksteve. Nëse ju jeni duke krijuar çdo gjë në brendësi të saj, shanset janë të gjithë ju jeni bërë është duke krijuar një pirg dhe ruajtjen se ka. E njëjta gjë në kryesore. Kjo është ruajtur vetëm brenda kryesor. Gjithashtu ju duan të jenë të shumë, shumë të kujdesshëm këtu. Sepse Shtrirja gjithashtu jep vetë për shembuj të ndryshëm. Kështu për shembull një për loop, për int i barabartë me 0. Unë është më pak se, unë nuk e di, 10. Unë plus plus. Dhe ju keni marrë kodin brendësi të saj, e drejtë? Ku e bën këtë variabël, Unë, në fakt vetëm ekzistojnë? Vetëm brenda e juaj për lak. Kështu që unë bast shumë nga ju djema kanë ndoshta hasur këtë gabim kur ju jeni duke bërë programet në psets tuaj. Sa nga ju djema janë përpjekur të përdorin I jashtë e një për lak dhe kishte një gabim? Ashtu si një integers unreferenced ose diçka të tillë? Arsyeja pse kjo ndodh është për shkak se ju jeni këtu duke krijuar diçka që vetëm ekziston brenda tuaj për lak. Dhe në qoftë se ju të përpiqen të përdorin atë, unë nuk e bën në fakt ekzistojnë jashtë saj. Pra, në thelb një kompjuter '' Unë nuk e di se çfarë jeni duke folur rreth. Gjithë çka di është se një i ishte këtu, por tani nuk është më. Pra, nëse unë do të krijoj një për lak brenda, apo jo? Dhe unë jam duke shkuar për të krijuar një tjetër, si int j, dhe e kanë atë të bëjë çdo gjë. Dhe ju keni një kod brenda e që loop, j ekziston vetëm këtu. Por ekziston edhe brenda i. Dhe kështu j ekziston vetëm brenda këtë për lak, kurse unë ekziston në të gjithë gjë. Gjithkush qartë? E njëjta gjë me deklaratat e kushtëzuara në qoftë se ju doni të krijoni asgjë. E njëjta gjë me sythe ndërsa nëse ju doni të krijoni asgjë. Kjo është diçka që të jetë shumë, shumë të kujdesshëm në lidhje. Pra, ky ishte një problem me të vërtetë mirë në ndjejnë se ajo demonstroi dy gjëra. Ai tregoi për herë të parë, qëllimin. Dhe ajo demonstroi gjithashtu kujtese. Sepse ju djema duhet të dini se Funksionet rritet lart në rafte. Dhe se kur ju telefononi funksionet, ju jeni duke krijuar në thelb një pirg i ri i kujtesës. Kjo është shumë e ndryshme nga çfarë mbetet kujtesa juaj është. Po. Uf! Gjithkush OK për këtë? Kjo ishte konfuze. Tema shumë të mirë për të shkuar mbi, sepse ju jeni me siguri do të merrni disa ndërlikuar gjëra të tilla si që në quiz. Po. Ftohtë. Unë do të vënë ju të merrni 100 në një Linja dhe pastaj 10 në tjetrën. Po, shumë i mirë. OK, tani ju djema do të merrni mundësi të jenë Tas. Ju merrni për t'iu përgjigjur të gjitha bukuroshe email që unë ndonjëherë merrni. Pra, I dashur Andi, unë shoh unë mendoj se diçka është do të gabuar me përpiluesit time. Unë jam i sigurt se kodi im është i saktë, por unë mbaj marrë një defekt segmentimit çdo herë që unë të kandidojë. Çfarë po ndodh? Ju lutemi ndihmoni, shumë e dashurisë. Në qoftë se ju djema mori diçka si se si do të përgjigjet? Këto janë në fakt shumë të zakonshme pyetje ne do të ju pyes. Është në qoftë se, ne do të ju jap një skenar, ne do të na japin me mend tuaj më të mirë në atë që po ndodh. Çdokush kanë një goditje me thikë në çfarë po ndodh? Po? Audienca: Ndoshta dereferenced null, diçka si akrep është vënë në diçka null. PROFESORI: Po, kjo do të jetë një shembull kur kjo do të ndodhë. Por ajo që është më e madhe foto e çfarë po ndodh këtu? Audienca: A është e jeni duke u përpjekur për të hyrë në kujtesën se ju nuk jeni supozohet të kenë qasje në? PROFESORI: Pikërisht. Pra, mendoni për një faj Seg, një off kufijtë, zonë të kufizuar në kujtesën që ju nuk duhet të jetë prekur. Pra, shumë e shumë, kur jeni duke u përpjekur për index-- si për shembull, ju keni deklaruar një grup prej zero deri në nëntë. Por ju të përpiqet për të prekur atë 10th vlera, ju nuk keni qasje në këtë. Sepse ju nuk e kanë deklaruar atë. Dhe kështu që kompjuteri juaj është duke shkuar për të parë në se të jetë si, uh oh, ju jeni duke u përpjekur për të shkuar jashtë kufijve të një indeksi. Unë jam duke shkuar për të ju jap një faji segmentimit. E mendojmë si segment, e drejtë? Një segment shtesë, faji është kur ju përpiqeni të shkelin diçka dhe ju nuk duhet të jetë atje. Faji Segmentimi është në çdo kohë ju përpiqen për të prekur gjërat që ju nuk duhet të jetë prekur. Shembuj Pra zakonshme janë një indeks. Sigurisht, në qoftë se jeni duke u përpjekur për të prekur se ishte null, që do të punojë si edhe. Nëse treguesin juaj është duke u përpjekur për prek gjëra që nuk duhet të prekë, që do të mund të punojnë edhe si. Më zakonisht ju do të shihni këtë në një rrjet. Gjithkush mirë? Audienca: Pra, nëse ju doni për të hyrë në pikën 10 dhe ka vetëm një kufi e nëntë apo diçka. PROFESORI: Po, pikërisht. Pak a shume. Ftohtë. I dashur Andi. Pra, ne kemi marrë këto të mrekullueshme gjëra quajtur llojet. Nëse Merge sort-- si ne pa në shembullin kur është Davidi e bëri të gjithë gjë në class-- pse, nëse ajo është aq shumë më shpejt se ndonjë nga llojet e tjera, pse nuk kemi shqetësojë edhe duke e ditur ndonjë nga llojet e tjera? Çfarë është kjo pyetje me të vërtetë duke kërkuar ju? Çfarë është tre word-- Audienca: Cila është tregti-off? PROFESORI: Pikërisht. Kjo është ajo që është duke i kërkuar pyetjen. Çfarë është tregti-off mes Merge lloj vargje çdo llojet e tjera? Audienca: Merr kujtesës, e drejtë? PROFESORI: A ju të shpjegojë se pak më shumë? Së pari le të shpjegojmë dyqan bashkohen. Si funksionon bashkojë lloj punë? Audienca: Pra, ajo punon nga duke e ndarë gjithçka në gjysmën e dhe pastaj të vënë atë së bashku dhe rishpërndarja atë në mënyrë, si çdo herë ju bashkojë vendos. PROFESORI: Pretty much. Kështu që unë mund të tërheqë këtë jashtë, por ajo do të kap për mua pesë minuta për të nxjerrë atë jashtë. Shikojnë prapa në të slides seksion ku kemi mbuluar bashkojë lloj. Pikërisht. Pra, mënyra Merge vepra Renditur është ajo ndan gjërat në gjysmë, dhe pastaj ajo vetëm duket më së Vlerat e para të të gjithë ata dhe llojet vetëm kaq. Vazhdimisht krijon vargjeve të reja dhe vë gjëra gjithnjë e më shumë në rregull. Dhe kështu, ndërsa kjo është e vërtetë, të vërtetë shpejt sepse it's-- ju e dini, Një kërkim binar është n log n. Ju jeni duke krijuar kaq shumë vargjeve të ndryshme që ju jeni duke përdorur një sasi të madhe të kujtesës. Dhe kështu, ndërsa ajo është më e shpejtë, tregtia jashtë këtu është që ju jeni duke përdorur më shumë memorie. Dhe kështu, aluzion, llojet dhe kërkimet janë mbuluar shumë më tepër këtë vit se ata kanë qenë në vitet e mëparshme. Ju djema duhet të shohin se reflektuar në përputhje me rrethanat në quiz. Unë patjetër do të kalojnë kohën e shkuar mbi atë që të gjithë e llojet e ndryshme janë, kërko si binar, si lineare punë kërkimit. Si të ndoshta pseudokod kod ato jashtë. Cilat janë kohët running? Diçka si kohë running është shumë të lehtë për të kopjoni poshtë mbi një fletë shënim, e drejtë? Është e vërtetë e vështirë kur ju jeni në mes testi dhe ju duhet të kuptoj se nga. Kopje atë poshtë. Unë ju garantoj se ju jeni do të duhet të dini se. Cilat janë tregtisë të humbura? Rastin më të keq, skenarët më të mira rast për të gjithë ata, shumë të marrë të dini. Po? Audienca: A kemi nevojë për të e di se si të kodit bashkojë lloj? Si, nuk kemi nevojë për të kujtohet rekursive? PROFESORI: I highly dyshim atë, vetëm sepse kjo është si mjaft e komplikuar. Por kjo nuk mund të jetë e parealizueshme në qoftë se ne kërkoj nga ju që të përdorin pseudokod atë. Po. Po, OK, një më shumë. Kjo mund të ketë ardhur deri në ju pjesa e fundit në një grimë. Po? Ka dëgjuar të gjithë këtë? OK, kështu që shumë e shumë e parë e të gjithë, se çfarë lloj programi do të jetë duke ju dhënë një prodhim si kjo? Mos harroni ne pyetur ju për të mësuar rreth Ky lloj i ri i debugging mjet? Cili ishte emri i saj? Interfaqe e Valgrind, e drejtë Kjo ishte një program ku ju mund të telefononi atë mund mbajnë gjurmët e të gjithë kujtesën e ju jeni përdorur në programin tuaj dhe po ndodhte. Pra, nëse ju keni marrë diçka, si, patjetër të humbur, 40 bytes në një bllok. Ndoshta ju nuk jeni kujtohet për të liruar atë. Sepse në qoftë se ju jeni duke përdorur byte memorje, që do të thotë që ju keni në disponim që kujtesën, por ju nuk keni qenë në gjendje të lirë. Pra, ju doni të bëni Sigurohuni që ju jeni gjithashtu duke përdorur free-- kjo është një function-- për të liruar të gjithë e kujtesës rialokuar nga malloc. Ftohtë. Pra me këtë rrëshqitje, unë do të duhet atë. Kjo është kudo në një shumë të ligjërata, në një shumë prej slides seksioni. Ju me të vërtetë dëshironi të bëni të sigurtë ju vetëm e di se të gjithë këtë. Ose në fletë tuaj shënimin ose nëse ju duan për të mësuar përmendësh atë, të ndjehen të lirë për të. Kjo është e vërtetë, të vërtetë, të vërtetë e rëndësishme. Gjithashtu një shumë të mirë Pyetja që mund të pyesim. Pse është zgjedhja sort-- vështrim në Përzgjedhja sort-- gjitha runtimes janë katror n. Pavarësisht se si lista vjen në ju si, kështu që pse është zgjedhja sort-- Unë do të ju jap djema 30 i dyti mendoj për këtë. Sepse kjo është lloj i konfuze. Ajo përfshin disa menduar konceptuale. Pse do herë drejtuar të jenë të njëjta në edhe më të keq dhe më të mira skenarët e rastit? Po? Audienca: Sepse Përzgjedhja lloj çdo pozitë apo hapësirë ​​në këtë grup të vogël gjë apo çfarëdo. Pra, edhe në rastin më të mirë, edhe në qoftë se është e renditura në mënyrë të përkryer, ai ende do të duhet të jetë si, OK, një. Në vendin tim të parë unë kam një të tillë. Dhe të kalojnë nëpër të gjitha prej tyre. OK, njëra është më i vogël. Dhe pastaj ajo shkon përsëri dhe është si, OK, dy është më i vogël gjitha gjëra. Por ajo ende ka për të kontrolloni çdo njëri. PROFESORI: Po. Kështu për shembull, le të them vetëm Ne kemi një listë, të renditura tashmë, një koleksion një deri në pesë. Mënyra se llojet zgjedhja është se ajo shkon përmes, ajo kontrollon këto dy. Atëherë ajo kontrollon ata të dy. Dhe pastaj ajo kontrollon, dhe ajo kontrollon. Ajo mban kontrollin gjithë prej tyre, pavarësisht nëse janë apo jo është e renditura në fakt. Sepse kjo është thjesht mënyra lloj punon. Dhe kështu kjo çështje është lloj i si një pyetje konceptual ne do të pyesim. Ku për herë të parë, që ju të e di se çfarë lloj Selection është e drejtë, që të jetë në gjendje për t'iu përgjigjur pyetjes. Ju duhet të jetë në gjendje për të kuptuar konceptualisht se çfarë po ndodh. Dhe pastaj ju mund të aplikoni atë dhe të mendojnë, OK Le të imagjinojmë skenarin më të keq. Ata janë të gjithë në rend zbritës. Si do që të ndikojë atë? Çfarë nëse është e Ascending order? Në qoftë se kjo është renditur tashmë? Si do që të ndikojë në runtimes? Dhe pastaj Përzgjedhja lloj, ju do të vëreni se ai nuk ka të vërtetë rëndësi. Sepse ju jeni duke kontrolluar të gjithë Vlerat pavarësisht nga ajo që po ndodh. Dhe kështu gjëra të mira për të kujtuar. Pse disa llojet ndryshojnë nga të tjerët dhe sa më të mirë dhe rastin më të keq do të ndikojë në të gjitha prej tyre. Unë jam duke shkuar për të goditur me të vërtetë në terezi sepse kjo do të jetë në quiz. Po. NE RREGULL. Ka gjashtë minuta mbetur. Unë mund të marrë tre minuta pyetje. Unë gjithashtu mund të sorollatem për si 20 minuta pas seksionit në qoftë se ju doni të bëni pyetje si. A ka dikush thjesht duhet të vërtetë të shkurtër pyetje apo çështje konceptuale ata janë të paqartë në lidhje me tani? Po? Audienca: A mund të flasim pak bit për operatorët bitwise? PROFESORI: Po. Operatorët Pra bitwise janë diçka që ju ndoshta mund të dëshironi vetëm për të vënë në fletë tuaj. Kështu quickly-- unë nuk dua për të shkuar shumë në thellësi sepse Harvard, në shqyrtimin e tyre Seanca, e mbuloi mjaft mirë. Operatori bitwise, ka pesë prej tyre, e drejtë? Nuk është kjo, e cila është e x apo funksion, ka simbol, e cila është e. Tub, e cila është or. Dhe atëherë ju keni dy lloje të ndryshme të ndërrime. Nëse unë ju jap dy vlera, nëse është Unë ju jap, si, një dhe një. Çfarë do që të vlerësojë të? Nëse unë ju jap vërtetë dhe e vërtetë, e vërtetë? Po në lidhje vërtetë apo e rreme? Ende e vërtetë, e drejtë? Sepse ka një ose. Ne do të më shumë gjasa të ju jap numrat. Pra mbani mend, një është e barabartë vërtetë, është e barabartë me zero rreme. Dhe ne mund të ju jap këto gjëra dhe t'ju kërkojë të na tregoni se çfarë ndodh. Harvard mbulon atë brenda e parë 10 minuta të sesionit të tyre të studimit me të vërtetë, me të vërtetë mirë. Kështu që ju djema doni të bëni i sigurt që ju të shikojnë prapa në atë. Audienca: A është pisa5 do të jetë në quiz? PROFESORI: Jo. Mos shikoni edhe në pisa5 tani. Është e vështirë. Vetëm mos shqetësojë edhe duke kërkuar në pisa5. Megjithatë, si disa lë të kuptohet dhe sugjerime, unë do të sugjeroj që ju të filloni pisa5 sa më shpejt që quiz është e gjatë. Kjo do të jetë e vështirë javë, por pastaj ju djema do të kalojë atë në kodrat e kodrina gjelbër dhe puppies, dhe kjo është në rregull. Kjo klasë merr rëndësishëm më e lehtë pas pset pestë. Orari i punës: AUDIENCA janë e diela, e hënë? PROFESORI: Yeah, kështu orarit të punës do të e diela deri të hënën për pset. Orarit të punës në thelb Tonight do të jetë vetëm për shqyrtim quiz. Nëse ndokush dëshiron të vijë në dhe të kërkojë Tas një pyetje, ne do të jemi atje. Unë do të marrë ndoshta një shumë pyetje nëse dikush ka një pyetje? Po? Audienca: Kur ju jeni nyjet që përcaktojnë, [e padëgjueshme] në qoftë se ju thonë yll nyje dhe pastaj e ardhshme, bën kompjuteri automatikisht e kuptoj se ju jeni duke iu referuar një akrep? PROFESORI: Jo. Audienca: Ju duhet të relink ajo [e padëgjueshme]? PROFESORI: Pra, në thelb struct e një nyje është, mos harroni, është si keni krijuar nyjen dhe atëherë ju keni një tregues të quajtur tjetër. Të gjithë ju jeni bërë është të paturit struktura atje. Ju duhet të caktojë se treguesin diku. Pra, kompjuterët nuk ka e di se çfarë është bërë ende. Ju duhet të vërtetë të caktojë atë kur ju jeni duke krijuar listën tuaj lidhur. Dhe kjo është ajo që kryesisht pset 5 do të jetë në. Kështu që nuk ka shqetësime në lidhje me ndonjë nga se tani. Audienca: Pra, ne nuk kemi nevojë të përqëndrohet shumë në listën Lidhje, vetëm koncepti i përgjithshëm? PROFESORI: Vetëm oxhaqet shumë e shumë, rradhë, listat Lidhje, pemët, tavolina hash. Vetëm të jenë në gjendje të dinë se çfarë ata janë. Ne nuk jemi duke shkuar për të pyetur ju pëlqen ndonjë gjë të veçantë sepse ne nuk e kemi bërë me të vërtetë një pset që mbulon ndonjë që ende. Pra, në dy minutat e fundit para Kam vendosur të lirë për të vrarë këtë quiz. Pretty much, si, mendoni se si tani ju djema keni ardhur në këtë klasë. Më kujtohet kur dy javë e kësaj klase, disa prej jush kalojnë tri orë me shkrim ujë. Sa kohë do të marrë ju djema për të shkruar ujë tani? 30 sekonda, ndoshta? Mendoni se sa shumë ju djema kanë mësuar. CS është një temë me të vërtetë, të vërtetë e vështirë. Nuk ka asnjë dyshim për këtë. Është e vështirë, kjo është arsyeja pse askush nuk e studion atë. Është vetëm e vështirë. Dhe kjo është krejtësisht në rregull. Dhe unë jam me të vërtetë krenar që gjithkush e ka bërë deri tani. Psets nuk janë të lehta. Ata marrin shumë kohë. Ju djema, unë kurrë nuk do të ju pyes për të shkruar loja e 15 ose Vigenere në pset. Nuk ka nevojë të vetëm trullos jashtë në lidhje me atë. Të gjithë ne jemi të testimit këtu është për të vlerësuar njohuritë tuaja konceptual, si edhe si disa nga aftësitë tuaja themelore të kodimit. Testi është i dizajnuar për të jetë me të vërtetë sfiduese. Si, ajo është projektuar për ju të mos merrni 100. Është projektuar edhe për ju që ndoshta të mos jetë në gjendje të përfundojë në 75 minuta. Dhe kjo është krejtësisht në rregull. Unë jam një student veten. Unë e di, unë e urrej atë kur unë eci nga një quiz të jetë si, mut. Kjo ishte me të vërtetë e vështirë. Ndoshta ajo që do të happen-- dhe kjo është krejtësisht në rregull, Unë jam i thënë ju djema tani. Mjetet për këto gjëra nuk janë të larta në të gjitha. Dhe për ata prej jush që kanë qenë duke marrë, si, threes në grupe tuaj problemit, kjo nuk do të thotë që ju jeni do të merrni një 60 për qind në këtë klasë. Nëse ju merrni 60% mbi quiz, që nuk ka të thotë që ju jeni do të merrni një D në këtë klasë. Ne e shohim, veçanërisht unë, për ata prej jush në seksionin tim, Unë shoh se sa e vështirë ju djema janë të gjithë duke punuar. Dhe unë ndiek se. Ju djema do të jetë mirë. Nuk ka asnjë kujtim institucionale e lumturi në fund të semestrit. Sepse të gjithë fëmijët e Harvardit janë duke u thënë miqtë e tyre, oh, ju do të jetë mirë. Askush nuk është e thënë që ju djema se këtu. Kështu që unë duhet të ju them se këtu djema. Ju djema do të jetë mirë. Unë jam shumë krenar për të gjithë ju djema. Testi do të jetë e vështirë. Studimi për të, dhe më pas vetëm hedhin atë larg. Get gati për të mësuar gjëra të reja. Dhe hani karamele. Ne kemi kemi shumë të karamele. Të marrë fle një natë të mirë. Mos nuk fle, sepse që do të jetë me të vërtetë e keqe. CS është një shumë e logjikës. Nëse ju nuk fle, ju nuk mund të funksionojë, dhe truri juaj nuk mund të funksionojë. Dhe unë do të jem këtu për të ardhshëm 20 minuta në qoftë se dikush dëshiron të sorollatem. Ju djema janë duke shkuar për të vrarë atë. Paç fat.