Gjuha: OK, kështu, ju nuk do të besojnë atë, por javën e kaluar, të hënën, në Pierce, unë ishte poshtë në bodrum. Unë kurrë nuk shkojnë në Pierce. Dhe unë kurrë nuk jam duke shkuar prapa përsëri, sepse I lënë bagazhin tim vetëm për të, si, pesë minuta dhe dikush vodhi kompjuterin tim dhe my e telefonit nga shpinës sime. Që do të thotë që kam marrë atë, dhe atëherë më pak se një javë më vonë ajo u vjedhur përsëri. Dhe pastaj ajo u kthye në - Gjej iPhone ime vazhdon të jetë e padobishme. Kështu që unë të vazhdojë të inkurajojë ju të mos e përdorin atë. Ajo u kthye në një herë, dhe ajo ishte në MIT, si 15 minuta më vonë, dhe personi i quajtur këtë numrin e telefonit që tregoi deri në AT & T log tim telefonatave. Kështu që unë shkova në internet, të quajtur që telefoni numrin, dhe ai shkoi drejt e në këtë duke u përgjigjur makinë në spanjisht. Dhe unë nuk kam dëgjuar për të që nga viti. Kështu që unë kam për të marrë një të re kompjuter dhe telefon. Unë e di. Po. Por në qoftë se ju djema duan të chip në për të tim Fondi kompjuter pas kësaj, kjo është arsyeja pse Unë e kam pyetur ju këtu. Just kidding. Por kjo ishte me të vërtetë e trishtuar dhe traumatike. Por kjo është e gjitha mbrapa tani, dhe kjo ishte arsyeja pse p-vendosur 8 desh kaq shumë kohë, sepse Unë nuk kanë një kompjuter. Dhe dikush vodhi atë. Dhe unë me email, duke i kërkuar në qoftë se ata do klasën p-8 vendosur tuaj. Por ata thanë jo. Dhe unë kam qenë si, mund të ketë kompjuterin tim prapa? Dhe ata janë si, nr. Just kidding. OK. Ky është seksioni ynë përfundimtar, dhe unë kam disa - ne vetëm kemi tre gjërat në rendin e ditës. Ne do të flasim pak në lidhje me udhëzues Q. Pastaj ne jemi duke shkuar për të shpenzuar 15 minuta në një demo të ftohtë. Pastaj ne do të të gjithë të thënë lamtumirë njëri tjetrin. Ju nuk duhet të vërtetë kompjuterat tuaj ose një stilolaps ose letër për të marrë shënime, ose ndjekin së bashku. Kështu që unë të marrë në qoftë se ju keni kompjuterin tuaj up, atëherë ju jeni në Facebook. Vetëm duke thënë. Përjashtim të rastit kur ju jeni plotësimin e Q guide, i cili është i pari. Udhëzues Q është e hapur. Ju keni pasur një email në lidhje me të. Pasi të gjitha stuff Q është dorëzuar në fund të vitit, unë të marrë të gjitha Q komente në rezultatet nga të gjithë që zgjedh për të më japë reagime. Dhe kështu që kur ju shkoni në Q - Unë nuk e di nëse ju mund ta bëni këtë, Jeff, sepse ju jeni dhe studenti extension. Por kur ju shkoni në Q, në qoftë se ju nuk e keni bërë atë më parë, ju të vini tuaj mësues, i cili është David Malan. Ju duhet të bëni atë. Dhe pastaj ju mund të vini TFS. Dhe ju mund të vini sa më shumë NGP e te. Por ka 60 prej nesh. Ju nuk keni për të marr të gjithë. Ju vetëm mund të vini me mua, ose vetëm të vini një çift ​​njerëz të tjerë, në qoftë se ju dëshironi, për të për t'u dhënë atyre reagime si. Dhe pastaj ju merrni rezultatet në të gjitha këto akset e ndryshme, dhe pastaj ju mund të lënë ato reagime. Dhe pastaj, si një muaj më vonë, Unë do të merrni tërë atë reagime. Dhe ashtu si të reagime ju keni qenë duke i dhënë mua gjatë gjithë semestrit, unë lexoni të gjithë se. Dhe kjo është me të vërtetë e dobishme, dhe kjo ndihmon të rritem si mësues dhe si një individuale. Pra, ju lutem, të marrë disa kohë për të bërë atë. Ne jemi vetëm do të jetë këtu për, si, 30 minuta. Pra, nëse ju doni, në fund të kësaj, për të të marrë pesë minuta, dhe vetëm të plotësoni Q, sepse ajo nuk ka marrë asnjë më shumë kohë se kaq. Kjo do të ishte e mrekullueshme, dhe ju gjithashtu marrë nota tuaj të kthehet më shpejt nëse ju plotësoni Q. Pra, shumica prej jush e kanë bërë këtë më parë - apo jo, rreth gjysma nga ju kanë bërë që më parë. Por nëse ju jeni një fillestar, kjo është ajo që është. Ajo do të jetë e njëjtë për të gjitha klasat. A atë. Ajo merr pesë minuta. Por gjithashtu, në qoftë se ju bëni atë pak seriozisht, kjo nuk është gjëja më e keqe në botë, sepse unë me siguri marrë atë seriozisht. Pra, nëse ju më lini një fytyrë smiley, Unë do të vlerësojmë se. Por unë do të vlerësoj nëse ju më la më shumë se një fytyrë smiley. Por është deri te ju. Unë nuk mund t'ju them - apo si një smiley madh përballen, me një kapital D. Kjo do të të jetë edhe më mirë. OK, kjo është e gjitha që duhet për Q. Nëse ju keni ndonjë pyetje, ju mund të kërkoni mua, por vetë-shpjegues goxha. Vetëm, ju lutem, plotësoni atë. Unë do të really appreciate it, dhe kjo do të thotë shumë për mua. OK, kjo është ajo që ne jemi duke shkuar për të shpenzuar 15 minuta duke kaluar. Unë do të ju tregojë disa kod. Unë mendoj se kjo është me të vërtetë e ftohtë, dhe kjo mori mua më shumë ngacmuar në shkenca kompjuterike. Kështu që unë shpresoj se do të bëjë njëjtën gjë për ju të gjithë. Ne jemi duke shkuar për të hapur - dhe e gjithë kjo Kodi Unë do të dërgoj tek ju më vonë. Por ne jemi vetëm do të hapur - Unë jam në terminal time - ne jemi duke shkuar për të hapur këtë program quajtur [? MySum. ?] A mund të lexoni të gjithë se, ose të duhet ta bëjë atë më të mëdha? Dikush mund të më tregoni se çfarë ky kod do të bëni kur kam drejtuar atë, ose atë që kjo Programi do të bëjë kur kam drejtuar atë? [? Avi,?] Çfarë mendoni ju ajo do të bëjë? Përtypet Finish. Ju nuk duhet të flisni me gojën hapur. Audienca: A është marrë një bandë e argumente, të gjeni shumë prej tyre kthehen Shuma, dhe pastaj të shtypura it out? Ose ajo merr në dy argumente, dhe atëherë ajo nuk [e padëgjueshme]. Dhe pastaj ajo kopje nga çfarëdo rezultatet janë. Gjuha: Mbylle, me të vërtetë afër. Çdokush duan për të shtuar në [? çfarë Avi?] tha? A keni nevojë për të dhënë këtë program ndonjë argument command-line? Audienca: Jo. Gjuha: Jo. Çfarë ndodh nëse ju nuk e jepni ndonjë argument command-line? Unë vetëm shkruaj dot MySum çaj. Audienca: 1 plus 2 është e barabartë me 3. Gjuha: 1 plus 2 është e barabartë me 3. Dhe ajo do të shtypura atë jashtë. Kjo është saktësisht e drejtë. Ju do të shihni se të shtypura f Linja në fund. Ajo do të shtypura nga a, b, dhe atëherë shuma e a dhe b. Dhe unë mendoj që supozojmë se Shuma punon si duhet. Supozim i mirë. OK, dhe çfarë ndodh në qoftë se unë dhënë atë çfarë argumenti? [? Manu? ?] Audienca: Ajo do të shtoni çdo gjë argumenti i parë është që të b. Ose në 2, sorry. Gjuha: E drejta, në 2. A e dini se çfarë strtol bën? Është në thelb atoi. Atoi është në fakt një version të dashuroj - ose një version më të thjeshtë të strtol. Por ai në fakt përdor strtol. Dhe kam gjetur se nga, sepse kam kërkuar diçka si atoi, dhe pastaj kur unë ka atoi, kam lexuar këtu poshtë. Dhe kam gjetur "këtë sjellje është e njëjtë si "strtol. Pra, kjo është në thelb për atoi gjitha qëllimet dhe synimet. Dhe ju shihni unë të përdorni edhe e pavlefshme dhe 10. Kjo në të vërtetë ju lejon të marrin një varg, dhe kthyer atë në një numër, dhe të zgjedhin atë bazë që ju doni të bëni atë in Pra, kjo është bazë 10 drejtë këtu. Unë mund të ketë bërë bazë e dy për decimal, bazë 16 për heksadecimal. Është shumë i ftohtë. Por histori të gjatë të shkurtër, kjo merr dy numrat dhe shton ato së bashku. Pra, le të drejtuar atë. Dhe ju do të vëreni, aty janë disa gjëra - kështu që unë kam një Makefile të drejtë këtu, dhe në qoftë se ju të hapur atë deri, disa gjëra ju do të vini re janë të ndryshme. Në veçanti, ky argument të drejtë këtu, ju ndoshta nuk e kanë parë se më parë. Në përgjithësi, ne përpilojnë gjëra me dash zero, zero. Dash zero, zero, do të thotë që nuk e bëjmë çdo optimizations, përpilues. A nuk të përpiqet dhe të bëjë çdo gjë dashuroj, ose të bëjë asgjë të drejtuar më shpejt, ose të merrni shpëtoj të variablave që janë të nevojshme. A nuk e zgjedh këtë kod në të gjitha, Unë jam duke kërkuar për të nivelit të tretë optimization. Kështu që unë jam duke kërkuar për të bërë compiler shumë optimizations. Ju mund të ndryshojë atë në makefile kur ju e keni këtë kod, në qoftë se ju doni për të parë gjëra të ndryshme. Të cilat ne do të tregojnë në një të dytë. Pra, ne të drejtuar shumën time 1 plus 2 plus 3. Dikush më jep dy argumente. Audienca: 4 dhe 5. Gjuha: 4 dhe 5. Falemnderit. Great, ajo punon. Cilat janë disa argumente të tjera të mira në përpjekje, për të siguruar që kjo funksionon? Çdokush? Audienca: 0. Gjuha: 0 dhe? Audienca: Negativ 3. Gjuha: Ajo punon. Por ato ishin zgjedhje të mirë. OK, kështu që le të kthehemi këtu. Kjo është mysum.c. Ju do të vëreni se ka edhe diçka quajtur sumfunction.c. Dhe kjo thotë, oh, ka diçka përkufizuar në sumfunction.c. Unë nuk e përfshijnë këtë fotografi në këtu sepse unë nuk kam nevojë për të. Por unë e lidhin atë në kur unë përpilojnë, cilën keni vënë re. Le të shkoni lart. Ne pamë kur kemi përpiluar mysum, të drejtën e atje, ne i lidhur në binar nga sumfunction.o. Dhe unë nuk kam nevojë header fotografi sepse, natyrisht, nuk ka deklaratë funksion. Pra mprehtë përfshijnë normalisht vetëm vë në një deklaratë funksion. Këtu unë e kam vetëm vënë atë drejt në kodin. Dhe kështu që unë duhet të bëni është lidhja në binar, që unë bëj. Çdo supozime për atë që është e në sumfunction.c? Çfarë Kodi Unë kam shkruar në sumfunction.c? Audienca: [padëgjueshme]. Gjuha: Çdo supozime? Po? Audienca: Unë mendoj, përcakton disa [padëgjueshme]. Gjuha: Po. Kështu që unë shkruaj shumë int int a. Unë shkruaj këtë linjë, dhe pastaj unë kam hapur mbajtëse kaçurrel, mbyllur mbajtëse kaçurrel. Çfarë mendoni se unë shkruaj brenda atyre formatimin e teksteve kaçurrel, brenda atë funksion? Po? Audienca: Kthimi është e barabartë me një. Processor: Kjo është një mend të vërtetë të mirë. Kush mendon [? Manu?] Është e drejtë? Ajo thotë se të kthehen një plus b. OK, jo të gjithë. [? Akshar,?] ju bëni, too? A jeni i sigurt? OK. Çfarë? Audienca: Ju dha atë gabim. Gjuha: Jo, nuk e kam. Yeah, just kidding. Ju jeni të drejtë. Kjo është pikërisht ajo që ai thotë. Është kthyer një plus b. Kjo e bën shumë kuptim. OK, le të kthehemi këtu. Ne e shohim se si header - kjo është lloj kthimi. Mos harroni, ne kemi parë atë ditë një të tillë, llojin e funksionit të kthehen, por shkon para emrit të funksionit int. Ja, unë kam shkruar int. Çfarë mendoni se do të ndodhë në qoftë se në këtë funksion, unë nuk shkruaj int, por Unë shkruaj panënshkruar? Dallimi, sigurisht, duke qenë se unsigned përfaqëson vetëm pozitiv integers, dhe int mund të jetë pozitive ose negative. Kështu që unë kam ndryshuar e kthimit Lloji i këtij funksioni. Ky kod nuk përputhet ky kthim shkruani këtu. Çfarë mendoni se do të ndodhë kur unë përpilojnë? Ju duhet të bërtas në mua. Nuk ka yelling. Po në lidhje me kur kam drejtuar programin? Le të bëjmë para se të 0 negativ 3, ose negative 1. Ai ende punon, edhe pse unë jam duke thënë ajo është kthyer një numër të plotë unsigned. Është e qartë se kjo nuk është kthyer një integer unsigned. Është kthyer një numër të plotë të nënshkruar. Është kthyer negative 1. OK, kjo është e pazakontë. Po në lidhje me nëse unë shkoj në këtu dhe të bëjë këtë? Kështu që unë kam ndryshuar gjithçka nga int të panënshkruar. Ajo mund të marrë vetëm numra të plotë panënshkruara. Por nuk kemi ende mendoj se do të zgjasë? Audienca: Po. Gjuha: Ajo do. Kjo është e çmendur. Dhe ne të kalojë në një caktuar në mënyrë të qartë numër i plotë, ne mund të kalojë dy nënshkruar numër i plotë, ai ende punon. OK, ndonjë ide se pse ajo ende punon, ose çfarë po ndodh? Po, Jeff. Audienca: Ajo ka diçka për të bërë me optimization tuaj që ju theksuar. Gjuha: Jo. Ne mund të ndryshojë optimization, ajo ende do të punojnë. Unë mund ta bëjë këtë për ju, por - Audienca: Unë do të marrë fjalën tuaj për të. Gjuha: Po. Nëse jeni të hapur Makefile të drejtë këtu, I ndryshuar optimization. Kështu që ju mund të bëni lëvizje të zero, zero. Ajo ende do të punojnë. Mendime të tjera? Ju djema të gjithë duhet të punojnë, në mënyrë why'd ju presin atë për të punuar? Nuk ka? Heshtja. OK. Më duhet të pres shtatë sekonda, sepse kam bërë një pyetje. Pra, gjëja e ftohtë në lidhje me C, dhe ju keni ndoshta përjetuar më parë - ju nuk mund të ketë, kjo mund të të jetë hera e parë. Por siç e dini të gjithë, kur unë shkruaj diçka në C, kjo nuk do të shpëtojë si kjo në kompjuter. Është ruajtur si ato dhe zero. Ajo shkon nga kodi C në kodin kuvendit. Ka parë dikush kodin kuvendit para, makine Kodi kuvendi? Ne do të shikojmë në një të dytë. Ajo shkon nga kodi C në kodin kuvendit. Dhe ju djema e di fazat e përpilimit. Ju kishte për të mësuar përmendësh se për një quiz, dhe pastaj shkruani atë në quiz zero. Shumica e njerëzve e mori atë gabim. Unë mendoj se ju djema gozhduar atë. Por, ju djema janë pjesa më e mirë për kuize, nga rruga. Cili është awesome. Kjo nuk do të ju lënduar. Mos të jetë i shqetësuar. Por kjo është me të vërtetë cool. Good job. Pra, ajo shkon në gjuhën e kuvendit, dhe atëherë ajo shkon në ato dhe zero. Dhe ato dhe zero janë ruajtur në kompjuter, dhe kjo është ajo që ruhen në a.out, ose në këtë rast, file ekzekutues. Dhe kompjuteri shkon ato dhe zero. E drejtë? Ne e kemi mësuar këtë më parë. Pra, gjëja e ftohtë është, kjo unsigned ide, ideja e llojeve Ints panënshkruar, e të tjera, e të tjera, kjo është deri këtu në gjuhën C. Ata ekzistojnë. Por lloje nuk ekzistojnë në ato dhe zero. Llojet as që ekziston në të vërtetë në niveli gjuha kuvendit. Pra, kjo është diçka që ekziston në C bota por nuk ekziston në kompjuter Bota apo botërore procesor. Kjo është një abstraksion se C Gjuha e ka përfshirë, për të bërë tonë jetën më të lehtë. Pra, në fund të ditës, unë mund të shkruaj shumë gjëra të ndryshme këtu, dhe kjo nuk e bën një ndryshim. Për shkak se vetëm ekziston në botë C. Ajo nuk ekziston në ato dhe zero botë. Dhe programi të tonë ekzekutimit në ato dhe zero botë. Pra mendjen tuaj të qartë jo i nxitur akoma. Por unë mendoj se është e ftohtë. Po, Jeff. Audienca: Pra, nëse në vend të duke bërë int, char ju bëni. Dhe ju ishit - Gjuha: Le të bëjmë atë në një sec. Audienca: Sepse atëherë ju merrni një unsigned duke shkuar nga 128 negative të 127 ose 0 deri 255. Gjuha: Pra, char është problematike. A e dini pse char do të ishte e problematike, dhe kjo do të vërtetë ndryshojë gjërat në ato dhe zerove botë? Audienca: Për shkak të madhësisë së char. Gjuha: Madhësia e char është 1. Pra unsigned është edhe 4 bytes. Pra, char do të vidhos gjërat. Por ajo që është 4 bytes që është në lidhur me një char? Ose të që shton një shtesë - ju mund të vendosni një karakter më shumë pas char. Audienca: Char yll. Gjuha: Char yll ka 4 bytes. Pra, le të bëjë diçka kjo është një yll char. Pra, kjo ndoshta do të punojnë, por ne jemi do të bëjë diçka edhe crazier se sa kjo. Sipas mendimit tim, crazier. Unë kam shkruar tashmë një funksion që kthen një akrep, dhe kjo merr një tregues dhe një vlerë unsigned - ne do të ndryshojë këtë përsëri të int kështu që ne nuk jemi duke e bërë shumë ndryshime në të njëjtën kohë. Dhe kjo ka një rrjet të quajtur një, indekseve Në grup, dhe kthimet e adresa e. Ne kemi parë këto operatorë para. Kjo, çfarë mendoni ju se kjo do për të bërë, në kthim, kur kam drejtuar atë? Çfarë mendoni se do të bëjë? Çdo supozime? Audienca: Segfault. Gjuha: Çfarë? Segfault? Kjo është një mend mirë. Tom thotë të njëjtën gjë. Çdo supozime të tjera? Kush mendon se do të të bëjë të njëjtën gjë? Kush mendon se do të segfault? Ai e bën të njëjtën gjë. Më vjen keq. Por, natyrisht, ne kemi vënë në 1 dhe 2. Dhe ata janë të dyja të vlefshme, apo jo? Le të shohim, ne mund të shkojnë në Vendin e dytë e një grup. Por, çfarë nëse kemi bërë b një numër negativ? Kjo është ndoshta një mend mirë për diçka segfaulting. Ajo ende punon. OK, kjo tani është i çmendur. Kjo është po aq e vlefshme e funksionit shuma. Kjo e bën të njëjtën gjë e saktë si kthim a dhe b. A mund të shpjegojë dikush se pse kjo është një e mirë përmbledhur funksionin, ose pse punon kjo? Çfarë po ndodh këtu? Pse e bën këtë të bëjë të njëjtën gjë e saktë gjë si funksion tonë të vjetër shuma? [? Akshar,?] çfarë po ndodh? Audienca: Sepse kur ju keni një një kjo është një adresë të kujtesës vend - dhe kur ju bëni zëvendësojeni, ajo shkon në atë adresë kujtesës. Dhe kur ju shkoni për të b, ju jeni lloj i lëviz hapa nga atë adresë e kujtesës, ju jeni kthyer atë. Pra, ju jeni në të vërtetë, në të vërtetë, duke shtuar a dhe b [padëgjueshme]. Ku janë operacione standarde në këtë kthim? Si, ku bien të kllapat? Është kthimi i të adresën në një para ose pas [e padëgjueshme]? Gjuha: Ajo do të indeksit në b - ose në një indeks - dhe pastaj kthehen adresën. OK, kështu që e ka kuptuar të gjithë çfarë [? Akshar?] tha, dhe shpjegoi, se pse ky punon? Unë nuk e bëri, herë të parë dikush shpjeguar këtë për mua. A do dikush të donte një foto për të shpjeguar këtë? Ne jemi duke shkuar për të nxjerrë një foto, me nuk ka shënuesit, që e madhe. Gjetur disa. Pra, ne kemi një grup që është e një seri e kutive. I pari është një indeks 0, indeksi 1, 2, 3, 4, pikë, pikë, pikë. Një grup tipik. Dhe përveç që ka indekseve, ata të gjithë kanë adresat e kujtesës. Pra, le të japë këtë adresën e memories 13, 14, 15, 16, 17, më tej. Gjithkush është këtu deri tani. Pra, a është një adresë. Emri i një grup, një tregues është ruajtur atje. Kjo është një tregues, kjo është një vend kujtesës, me fillimin e vektorit. Pra, nëse ky ishte array, a do të ishte një vlerë prej 13. Dhe, sigurisht, ne mund të japim a çdo vlerë që duam. Char star një, ne mund të japim një çdo Adresa e kujtesës ne duam. Ne mund t'i jepte 0, ne mund t'i jepte negative 1 - 1 negativ nuk ekziston, kështu që kjo është ndoshta problematike, por ju pa se ajo ende ka punuar. Kështu që ne mund të japim ndonjë numër një ne duam, çdo adresë memorie ne duam. Pastaj, int b thotë, OK, shkoni këtë numër e hapa në rrjet. Kështu nëse b është e barabartë me 2, dhe nje barabartë 13, ne jemi në adresën e kujtesës 13. Dhe ne do të shkojmë dy hapa në, dhe kështu që ne jemi këtu. Dhe simbol do të thotë kthim adresa e këtij lokacioni. Dhe adresa është, sigurisht, 15. Pra, ne të merrni 13 plus 2, ose a plus b, i cili është 15. Pyetja është, pse - Më vjen keq. A do të sqaruar gjërat Pse kjo funksionon? Audienca: Pse do atë punë duke shkuar - kështu që ju mund të ketë një rrjet dhe shkoni në një indeks negativ? Gjuha: E drejta. Pra, ne e bëmë numrat negative, kështu që kjo është - e bën këtë kuptim edhe pse, parë, [? Avi,?] për ju? Audienca: Po unë jam vetëm [Padëgjueshme], por - Gjuha: Po, ky do të kthehen 15. Në qoftë se një ishte 13, dhe b ishte 2, kjo do të kthehen 15. Audienca: Pra indeksimit zero nuk të bëhet një çështje, e drejtë? Për shkak se ju jeni duke lëvizur nga 0. Gjuha: E drejta. Pra, ju jeni duke lëvizur - kështu që nëse b është 0, ju nuk do të lëvizë kudo. Dhe ju do të kthehet vetëm në adresën - nëse b është 0, kjo është në thelb kthyer atë adresë të një. Kalimi në char yll a dhe kthimin adresa e një është kthyer vetëm një, në thelb. OK, pyetja është pse Numrat negative të punuar? Dhe kjo është gjëja me të vërtetë ftohtë në lidhje kjo, sepse kjo duhet të segfault. Dhe kjo do të segfault nëse ne bëri diçka si kjo. Le të thonë, int. Pra, ky kod duket identike dhe duhet të sillen njëlloj. Në thelb, x është një ndryshore e mbeturinave, dhe kështu që kjo duhet të sillen njëlloj. Le të bëjnë këtë - oops - në yll. OK, ne jemi tashmë duke marrë gabime këtu, sepse ajo tashmë do të jetë i zemëruar në mua, sepse ajo tashmë e di se çfarë të vjen. Në veçanti, i dyti. Adresa e kujtesës bërë pirg të lidhur me një variabël lokale. Në thelb, unë nuk jam duke shkuar për të përpiluar këtë, dhe pastaj unë jam duke shkuar për të ndrequr të bërë ajo që ne vetëm e bëri. Por për shkak se ne kurrë nuk jemi në të vërtetë qasjen çfarë është në kujtesën vend, kjo nuk do të segfault. Ne jemi kurrë në të vërtetë duke kërkuar në atë që është në kutinë e dytë, ose atë që në çdo kuti i këtij vektorit. Ne jemi vetëm duke thënë, këtu është adresa i sendit ne jemi duke kërkuar për dhe kthyer atë adresë. Ne jemi në fakt nuk shkon në array për të parë në atë vend. Dhe për shkak se ne kurrë nuk prek kujtesën, ne nuk do të marrë në telashe. Ne nuk do të marrë një segfault. Nëse ne u përpoq të, përsëri, që prek kujtesës, prek atë që ishte në A ose B - ose nje grupim b, dhe marrjen një ishte 0 dhe - në qoftë se një ishte 0, madje, që do të jetë shumë e e keqe, sepse ne nuk mund të shkojnë poshtë të gjithë rrugën atje. Nëse një dhe b të dy ishin 0, dhe ne u përpoqëm të prek atë që ishte atje, atëherë ne do të merrni në telashe. Por nëse ne nuk e prek atë që është atje, ne vetëm kthimin e adresën, është e në të vërtetë nuk do të segfault sepse kjo ju lejon të kryer këto operacione. Ai vetëm merr çmendur në ju, dhe merr super zemëruar, kur ju provoni dhe kontakt kujtesës aktuale dhe të kthehet ajo që është në atë vend të kujtesës. A ka kjo kuptim? Kjo është vetëm një pjesë e çmendur e C. Pra, Ne ketë një më shumë prej tyre. Kush mendon se kjo është e ftohtë? Më shumë njerëz. Kjo është e mirë. OK, kjo është një tonë të fundit. Dhe unë do të doja që ju të më tregoni se a apo jo ju mendoni se kjo do për të bërë të njëjtën gjë e saktë. Unë kam këto shkruar diku. Unë nuk jam memorizimin e tyre. Le shih, 8, b 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4. Pra, kjo është një grup, tani, nuk funksion. Dhe kjo është një koleksion sepse ne kemi katror kllapa, formatimin e teksteve kaçurrel jo. Dhe kjo është një koleksion të çfarë lloji? Çdokush, hmm? Audienca: Numri i tyre hexadecimal? Gjuha: Por çfarë është lloji C? Ata të gjithë kanë numra heksadecimal. Çfarë është tipi C? Ajo ju tregon. Audienca: Është chars panënshkruara. Gjuha: E drejta, chars panënshkruara. Dhe dy numra hexadecimal është një bajt. Kështu këto janë 1, 2, 3, 4, 5, 6, 7, 8, 9 bytes. Është një grup i 9 bytes. OK, ju ndoshta tashmë e dini Përgjigje për këtë pyetje. Por, çfarë mendoni se do të ndodhë kur kam drejtuar këtë? Unë them, përsëri, në mysum.c, Unë jam duke pritur një funksion se merr dy integers. Dhe unë jam duke thënë se në vend që asaj shume është një grup të karaktereve. Çfarë do të ndodhë kur I drejtuar. / Mysum dhe të bëjë? E pra, së pari, shumica nga ju ndoshta do të pajtohen se make - oh jo, just kidding. What'd të bëj keq? Uh oh. Kjo duhet të jetë formatimin e teksteve kaçurrel. Kjo është se si ju të nisja një koleksion. Im i keq. Pra, ne tashmë e pamë më parë se llojet janë një abstraksion i nivelit C, jo një Niveli kompjuter abstraksion. Pra, shumica nga ju ndoshta pritet që ajo të bërë, ose duke supozuar se ajo do të bëjë. Por ajo që kur kam drejtuar. / Mysum? Çfarë do të ndodhë? Çdo supozime? Audienca: Ajo do të të shtypura nga një fjalë. Gjuha: Ajo do të të shtypura nga një fjalë. Çfarë fjalë? Audienca: [padëgjueshme]. Gjuha: Çdo supozime të tjera? OK, të shtypura nga një frazë. Ju mund të keni ndonjë frazë. Kjo do të jetë ana juaj. Çdokush që ka një mend të ndryshme? Anna, çfarë është me mend tuaj? Audienca: Ajo do të shtypura nga - dy letra, ose [padëgjueshme] një letër. Gjuha: Një letër. Audienca: A mund të llogarisin se sa shumë [padëgjueshme]? Gjuha: Nëntë. E pra, unë jam duke shkuar për të drejtuar atë. Ai e bën të njëjtën gjë e saktë. Ajo shton dy numrat e së bashku. E pra, le të kalojë dy argumente. Ajo nuk ka marrë argumente. Kështu që unë nuk e di se ku mund të mundësisht të marrë këto argumente. Por le të kalojë në 100 dhe 0. Dhe ai shton 100 dhe 0. Kjo është e çmendur. Unë mendoj kështu. Negative 4, që punon shumë. Ju mund të bëni ndonjë gjë që ju dëshironi. Ky është një funksion aq e vlefshme Shuma. Ky është një funksion shumë. Por, jo, ju jeni duke thënë se është një sërë bytes. Pra, çfarë po ndodh këtu? Pra, përsëri, le të kthehemi në këtë ide që thamë në fillim. Ju shkoni nga kod-të nivelit C, të kuvendit gjuhë, në ato dhe zero. Kjo është heksadecimal. Por kjo është me të vërtetë vetëm një shumë ato dhe zero. Kjo është 72 ato dhe zero, apo jo? 72 ato dhe zero. 9 bytes. Çdo bajt ka 8 bit. Secili bit është një zero ose një. Pra, ato 72 apo zero. Unë kam shkruar vetëm ata si kjo - në vend se të shkruar atë si një shumë të ato dhe zero. Por kjo do të shkojë nga të nivelit C gjuhës, të kuvendit gjuhës, të kodit. Dhe kjo do të shtypura në kod, diku, këto 72 ato dhe zero që unë kam shkruar këtu. Pra, diku në se - le të shkoni këtu - diku në mysum, programi, ka janë këto 72 ato dhe zero që unë kam shkruar dhe thënë atë për të shkruar. Tani, çdo supozime për atë që ata 72 ato dhe zero do të thotë? Audienca: Ndoshta të njëjtën gjë gjë si të kthehen një plus b. Gjuha: Ndoshta të njëjtën gjë gjë si të kthehen një plus b. Le të verifikojë se. Le të kuptoj se si unë e bëri këtë. Pra, nëse ju shkoni mbrapa këtu, unë po ju them për të drejtuar këtë komandë, objdump-S sumfunction.o. Le të shkojmë drejtuar atë. objdump - obj, hale. Në thelb ajo mund të më çdo gjë që unë dua të shoh. Ajo mund të jepni gjuhën e kuvendit. Ajo mund të jepni ato dhe zero. Ajo ka një ton të flamujve. Kjo është ajo që ne jemi duke shkuar për të përdorur tani për tani. Dot - si ju shihni në slides - Kapitali dash S thotë, shpërndaj, kod burim - kjo linjë është nga C - me kuvendin Kodi dhe me ato dhe zero. Dhe ne jemi duke shkuar për të drejtuar ajo në sumfunction.o. Për shkak se ajo do të jetë më e lehtë për të parë. Përsëri - hmm? Audienca: Ju dha atë gabim. Gjuha: Por unë jam në të vërtetë duke shkuar për të pastruar atë për një të dytë. Unë jam duke shkuar për të parë të hapur vetëm sumfuntion.o. Audienca: Ju shkruar atë gabuar për herë të parë. Gjuha: Classic. Sum - që është një fjalë e vështirë, edhe pse. Ju do të habitur. OK, kështu që kjo është sumfunction.o. Unë nuk mund edhe të ju them. Ka shumë e zerove, në mënyrë të qartë shumë e zero, dhe ka disa të tjera sende që nuk është zero. Por më së shumti zero. Duket si ka disa ato. Pra, në mënyrë të qartë, kjo është e vështirë për të lexuar. Kjo është gjuha binare. Le tani të hapur atë - çfarë? Çfarë po bëj keq? A e kam spell it saktë? OK, kjo është e vështirë. Unë kam nevojë për një të dytë të kuptoj se çfarë unë jam duke bërë gabim. Kjo është një gabim. Kjo është e çuditshme. Oh, kjo është arsyeja pse. Unë do të kthehem në fillestare tonë një, kështu që ne mund të shohim në Kodi objekt i kësaj. Për shkak se nuk është me të vërtetë do të të jetë çdo gjë, kur ne vetëm vënë ato dhe zero in Nuk shkojmë. OK, kështu që të gjithë mund të shohin këtë. Ky funksion, siç e thashë, vënë nga linjat C - linjat e kodit burim - me disa udhëzimet e kuvendit. Këtu është linjë tonë kodin burim. Ja një, këtu është një tjetër. Këtu është udhëzim kuvendi. Kjo është ajo që ata të duken si. Udhëzime Kuvendi - ju mund të mësoni më shumë prej tyre, nëse ju merrni klasat e tjera CS, por ata janë të në përgjithësi një udhëzim. Dhe pastaj një burim dhe një destinacion. Dhe pastaj mbi këtu është një kodi binar që korrespondon me atë asamble udhëzim. Kështu si ju mund të shihni, ky funksion shumë, në fund të ditës, është tre udhëzimet e kuvendit. Vetëm tre. Një mov - kjo m-o-v qëndron për një lëvizje. Shto qëndron për Add. Dhe r-e-t qëndron për Kthim. Pra një mov, e add, e kthimit. Dhe këto, këtu, janë zero dhe ato që korrespondojnë me atë kod. Kështu ata zero dhe ato, nëse ju e di ato, ju mund të bëjnë vetëm ata drejt in Dhe atëherë ajo do të bëjë gjë e njëjtë e saktë. Sepse, në fund të ditës, të gjithë ju jeni ekzekutimin është një seri të gjatë zero dhe ato. Dhe kjo është ajo që kodi juaj është me të vërtetë. Dhe arsyeja - le të shohim në një gjë. A e kam hapur Makefile? Pra, në qoftë se ne u kthye në dash zero, zero deri këtu - keq, o kapitalit, kapitali o zero, jo zero, zero. Dhe ne e ka bërë, kjo do të ende punë të njëjtën gjë. Por tani ju vini re se ka një udhëzime shumë më shumë asamblesë. Kjo për shkak se, përsëri, e pyeta compiler jo për të bërë ndonjë optimization. Kështu që unë ende mund të marrë të gjitha këto zero dhe ato, dhe t'i hedhin në, dhe që do të punojnë. Unë vetëm e bëri të optimizations, sepse kjo është pak më e lehtë, më pas, për të shkruar atë rrjet. Por kjo do të punojë po aq mirë. OK, ne jemi duke shkuar për të bërë një gjë të fundit, sepse unë mendoj se është pjesa coolest. Edhe pse të gjithë është e qartë tashmë në lulëzim dhe të pagojë. Mendjet tona janë në lulëzim. [Padëgjueshme] Pra, këto janë nga një klasë të ndryshme CS, e cila është super interesante, që kam marrë - CS61. I highly ju inkurajojmë që të marrë atë. Por pjesa më e ftohtë në lidhje me këtë fakt, se gjërat janë vetëm zero dhe ato, janë se çdo gjë është e zero dhe ato. Kështu që ju mund të marrë një fotografi që ka zero e saktë dhe ato që ju dëshironi diku në të, dhe të përdorin atë sektor të zero dhe ato si një funksion shumën. Çfarë mund të thotë me këtë? Unë do të thotë që ju mund të marrë një file imazh që ka seri e saktë të zero dhe ato, që të shtypura diçka jashtë për një imazh. Dhe një program mund të interpretojë është një image, por ju mund ta interpretojnë atë, në qoftë se ju doni, si një funksion shumën. Pra, nëse kemi dashur për të hapur, për shembull, ky imazh. Le të shkojmë, Hello Kitty. Image Wonderful pak. Në këtu nuk është se string e zerove dhe atyre. Këto 72 zero dhe ato ekzistojnë në këtë imazh. Pra, ajo që unë mund të bëjë, pra, është i shkruar - Unë duhet të mbani mend se ku ata janë. Unë do të gjeni se në një të dytë. Por ne bëjmë - më lejoni të gjetur se ku janë ata. Një sec. Le të bëjmë - Audienca: [padëgjueshme]. Gjuha: Faleminderit. Pra, nëse ne e ekzekutuar këtë program, i cili në vend që lexon në një skedar, atëherë ajo shkon të këtij indeksi në dosje. Dhe pastaj, përsëri, ashtu si mysum, merr dy numra. Ne mund të shtoni numra pikërisht njëjtë si ne ishim duke bërë më parë, e cila shkon në ju tregojnë se si fakti që, në fund të ditës, të gjitha këto janë zero dhe ato. Dhe kjo është vetëm se si ju zgjidhni për interpretimin e tyre. Dhe në qoftë se ju në të vërtetë të shikoni në këtë imazh - le të zoom në një grimë. A mund të gjithë e shohin atë? Ju do të njoftimit të drejtë këtu, nuk ka disa diçka e pakuptueshme pazakontë. Le të shkojnë - kjo është imazhi origjinal. Ju do të vëreni këtu nuk ka diçka e pakuptueshme. Qe eshte formuar per funksionin shuma, është se pak diçka e pakuptueshme të drejtë atje. Dhe në të vërtetë, përsëri, në qoftë se ju të mësoni më shumë në lidhje me këtë, ju do të kuptojë se kjo Hello Kitty, e cila ka edhe një më i madh diçka e pakuptueshme, ka kod që mund të marrë përsipër një kompjuter në qoftë se nuk është i mbrojtur në mënyrë të përshtatshme. Kështu që ju mund të vërtetë të drejtuar këtë. Unë nuk jam duke shkuar për të drejtuar atë të drejtë tani. Por ju mund të drejtuar këtë Përshëndetje Kitty imazhit, dhe kjo mund të të marrë përsipër kompjuterin tuaj. Pra, kjo është e gjitha për demo. A ka dikush ndonjë pyetje, komente, shqetësimet? Unë mendoj se kjo stuff është interesante. Kjo inspiruar mua për të mësuar më shumë. I highly recommend, nëse ju jeni të interesuar në të gjitha në CS, bisedoni me mua. Edhe pse unë jam një Studimeve Sociale Flotacion, unë jam një CS, mesme, kështu që Unë ende e di pak. Por unë me siguri e di se çfarë klasa ju duhet të marrë. Unë mendoj se kjo është e gjitha me të vërtetë interesante, dhe unë ju inkurajoj që, sigurisht, për të të mësuar më shumë nëse ju jeni të interesuar. OK, unë kam një gjë përfundimtare. Më vjen keq. Ndonjë pyetje? Unë nuk e bëj një pauzë për të pritur nëse dikush kishte ndonjë pyetje në lidhje me këtë. A është dikush do të jetë një Concentrator CS? Apo duke menduar për këtë? Një, dy, tre, katër. Një - vetëm një. Anna-së është dora vetëm kjo është ngritur me autoritet. OK, kjo është ftohtë. Assam, çfarë po ju do të bëni? Audienca: [padëgjueshme]. Gjuha: Constantine? Audienca: Fizikë. Gjuha: Whoa, që ishte e shpejtë. Ju kishte një përvojë të keqe në CS50? [Padëgjueshme], çfarë po ju do të bëni? Audienca: Unë nuk kam asnjë ide. Gjuha: Curt? Audienca: Econ ose CS. Gjuha: Econ ose CS. Tom? Audienca: Unë jam duke bërë stat. Gjuha: Stat? OK. Çfarë jeni ju? Audienca: Me? Gjuha: Po. Audienca: Stat. Gjuha: Stat. Oh, ju shkoni atje. Tom, bisedoni me Alden. Emily, çfarë jeni ju? Audienca: Biomedical - Gjuha: A jeni në këtë seksion? Audienca: Jo. Gjuha: OK, kjo është Emily. Ajo është miku im. Në mënyrë të qartë nuk është se e mirë për një mik, sepse ajo më jep një kohë të vështirë. Ju mund të jetë nicer për mua përpara të gjithë, nxënës në klasën time - Audienca: Unë jam duke bërë udhëzues tuaj Q. Gjuha: Really? Uh oh. OK, ju jeni të mahnitshme. Të dua aq shumë. Oh boy. Gjithsesi, unë, natën e kaluar, si çdo gjë - Unë jam i sigurt se të gjithë duket të vërtetë theksoi tani. Unë nuk e di, janë studente - janë ju djema ndjenjë theksoi? Unë jam ndjenjë theksoi. Ajo ishte si, ju shkoni në shtëpi për Thanksgiving. Ju jeni si, unë jam duke shkuar për bërë tërë këto gjëra. AUDIENCA: Kjo është aq e ndryshme. Gjuha: Po, dhe ju kthehen. Jeff, ju nuk ndiheni në këtë mënyrë? Audienca: Unë vetëm mendova Unë do të bëjë pak. Gjuha: OK, e madhe. Kështu që unë të kthehem, dhe unë nuk kanë bërë asgjë. Dhe kjo është e gjitha super e vështirë. Dhe unë jam i shqetësuar, vërtet i shqetësuar, në lidhje me nëse janë apo jo unë jam do të përfundojë çdo gjë që kam për të. Por natën e fundit, unë nuk ishte i theksuar, Unë kam qenë vetëm pak e trishtuar. Kështu që unë shkroi në ditarin tim në lidhje ajo që unë kam qenë i pikëlluar për. Dhe unë isha i pikëlluar për këtë seksion në këtë klasë vjen fundi. Kështu që unë isha vetëm duke shkuar për të lexuar për ju djema një copë të vogël të ditarit tim, nga natën e fundit. A mund të marr disa napkins, disa indet nga Tom? Jo, unë jam duke shkuar të qaj. Unë nuk qaj. Jo se ju nuk mund të qaj, Unë thjesht nuk e qaj. Unë nuk e di edhe nëse lotsjellës im Gjëndra punuar - ducts lotsjellës. Unë nuk më thërresin në një kohë të gjatë. Audienca: [padëgjueshme]. Gjuha: OK, faleminderit. OK, ka një parathënie të vogël - ka disa pjesë të tjera të revistës tim hyrje, sepse unë të përpiqet të revistës çdo natë para se të marrë në shtrat. I highly recommend journaling. Kjo ju ndihmon të procesit gjëra, dhe gjithashtu të jetë shumë mirënjohës e ditës tuaj. Dhe kjo e bën atë shumë më e lehtë për të parë kthehet në ditën tuaj dhe të kuptojë se ka qenë një shumë të mirë gjërat që ka ndodhur. Edhe në qoftë se ju mendoni theksoi vërtetë gjatë natës apo të mërzitur me të vërtetë, ose të vërtetë e trishtuar apo i lodhur. Oh, my god. Unë nuk e di edhe nëse është e shkruar se edhe sepse nuk e kam korrigjoj bocat atë. Por ne do të lexoni atë. Unë zakonisht nuk e lexojnë tim ditar, natyrisht. "Nesër, unë do të mësojmë finale time Seksioni CS50 të vitit. Është e çmendur se si fluturon koha shpejt. Megjithatë, unë jam i goditur nga se sa të ndryshme Përvoja ime mësuar këtë vit ishte se kur unë isha një i paedukuar mjaft. Për starters, unë patjetër e di materialin më mirë. Por mos thoni grup të tim të parë e studentëve që. Më e rëndësishmja, megjithatë, unë e kuptova se gëzimi që vjen nga këmbë deri para një dhomë të asaj që fillon nga si të huaj, por përfundon si, në paktën, miqtë e Facebook, është jo një pikë për shans të parë të vitit. Më saktë, kjo është nga e ditur se, në ndonjë mënyrë të vogël, ju jeni duke ndihmuar talentuar, i zhytur në mendime, i lezetshëm, dhe njerëz të pasionuar të mësojnë pak më shumë për shkenca kompjuterike. Ju jeni duke e zhvendosur atë llambë të lehta vetëm një bit në fole të saj, në mënyrë që është e aftë të shkëlqejë ndritshme se ju, ose ata, mund të kishte imagjinuar në fillim semestër. Ju jeni duke i ndihmuar ato të kthehet frowns përmbysur poshtë dhe duke i kërkuar pyetje që të ofrojë mbështetje, por ende të lejojë studentët që të qëndrojë deri të tyre. Sigurisht nuk është një ekzagjerim të thonë se kjo pjesë është my favorite Pjesa e jave. Ose edhe që unë hezitoj të them, kjo është të gjithë, në 05:30 çdo javë, duke e ditur se ajo do të jetë rrugë shumë e gjatë derisa të takohemi përsëri. Megjithatë, unë jam tepër mirënjohës për kushdo që ka dhënë këtë mundësi për të dhënë përsëri në të tjerët. Davidit, për durimin e tij dhe besimin. Për të filmit dhe të prodhimit të ekuipazhit, për duke bërë më të duket disi e respektuar. Dhe, më e rëndësishmja, për studentët e mi, pa të cilin unë do të kemi asnjë arsye për të shpenzojnë 10 orë zbulimin më të mirë mënyrë për të nxjerrë pointers, apo të nxjerr një Tabela e delfinëve, përmes JavaScript. Si gjithmonë, kjo është një bekim. " Pra, me që, faleminderit djema. Unë do të shoh se jeni të gjithë në panairin CS50, dhe hackathon, në qoftë se ju jeni atje. Dhe në qoftë se keni pyetje, unë do të rrinë rreth deri sa nuk ka më. Por unë ju falenderoj djema për një vit i mrekullueshëm. [Duartrokitje] Gjuha: Unë mund të qaj.