1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Pjesa 4] [Less komode] 2 00:00:02,000 --> 00:00:04,000 [Nate Hardison] [Universiteti i Harvardit] 3 00:00:04,000 --> 00:00:07,000 [Kjo është CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,000 >> Të gjithë të drejtë, të mirëpritur prapa në seksion. 5 00:00:10,000 --> 00:00:13,000 Në seksionin e kësaj jave ne do të bëjmë disa gjëra. 6 00:00:13,000 --> 00:00:17,000 Ne jemi duke shkuar për të parë Problem Set radhitje 2, 7 00:00:17,000 --> 00:00:20,000 e cila është vendosur Cezari dhe Vigenere problem. 8 00:00:20,000 --> 00:00:23,000 Dhe pastaj ne do të zhyten në shqyrtim Quiz 0 9 00:00:23,000 --> 00:00:26,000 dhe të shpenzojnë pak kohë recapping çka kemi biseduar rreth 10 00:00:26,000 --> 00:00:30,000 në secilin prej leksioneve deri më tani, dhe ne do të bëjmë edhe disa probleme 11 00:00:30,000 --> 00:00:32,000 kuize nga viti paraardhës. 12 00:00:32,000 --> 00:00:36,000 Në këtë mënyrë ju djema keni një mënyrë e mirë për t'u përgatitur për këtë. 13 00:00:36,000 --> 00:00:40,000 >> Për të filluar, unë kam booted një çift të zgjidhjeve të mira 14 00:00:40,000 --> 00:00:45,000 për të vendosur problemin e mëparshëm, Problem 2 Set, në këtë hapësirë. 15 00:00:45,000 --> 00:00:48,000 Në qoftë se ju djema të gjithë e goditi këtë link, 16 00:00:48,000 --> 00:00:53,000 dhe në qoftë se ju klikoni emrin tim dhe klikoni mbi rishikimin tim të parë 17 00:00:53,000 --> 00:00:56,000 ju do të shihni caesar.c, e cila është pikërisht ajo që unë jam duke kërkuar në. 18 00:00:56,000 --> 00:01:00,000 Le të flasim për këtë të vërtetë të shpejtë. 19 00:01:00,000 --> 00:01:02,000 Kjo është vetëm një zgjidhje mostër. 20 00:01:02,000 --> 00:01:05,000 Kjo nuk është domosdoshmërisht zgjidhje e përkryer. 21 00:01:05,000 --> 00:01:08,000 Ka shumë mënyra të ndryshme për të shkruar këtë, 22 00:01:08,000 --> 00:01:10,000 por ka disa gjëra që kam kërkuar për të nënvizuar 23 00:01:10,000 --> 00:01:13,000 që unë pashë, si unë u klasifikim, gabimet e zakonshme që unë mendoj se 24 00:01:13,000 --> 00:01:18,000 kjo zgjidhje bën një punë shumë të mirë të trajtimit. 25 00:01:18,000 --> 00:01:22,000 >> E para është të paturit e një lloj komenti header në krye. 26 00:01:22,000 --> 00:01:25,000 Në linjat 1 deri në 7 të shihni detajet, 27 00:01:25,000 --> 00:01:28,000 çfarë saktësisht ky program është bërë. 28 00:01:28,000 --> 00:01:32,000 Një praktikë e mirë standarde, kur ju jeni të shkruar kodin C 29 00:01:32,000 --> 00:01:35,000 pavarësisht nëse programi juaj është të përfshira brenda një file të vetëm ose 30 00:01:35,000 --> 00:01:38,000 nëse është e ndarë rreth dosjeve të shumta është që të ketë disa lloj 31 00:01:38,000 --> 00:01:40,000 orientimin koment në krye. 32 00:01:40,000 --> 00:01:43,000 Kjo është edhe për njerëzit që të shkojnë jashtë dhe të shkruani kodin në botën reale. 33 00:01:43,000 --> 00:01:47,000 Kjo është ajo ku ata do të vënë informacion autorit. 34 00:01:47,000 --> 00:01:50,000 Më poshtë janë përfshin #. 35 00:01:50,000 --> 00:01:55,000 On line 16 ka kjo # define, të cilat ne do të kthehen në vetëm një grimë. 36 00:01:55,000 --> 00:01:59,000 Dhe pastaj një herë funksioni fillon, fillon njëherë kryesore, 37 00:01:59,000 --> 00:02:03,000 sepse ky program ka qenë të përfshira të gjitha në një funksion të vetme 38 00:02:03,000 --> 00:02:09,000 Gjëja e parë që ndodh-dhe kjo është shumë idiomatike dhe tipike e një programi C 39 00:02:09,000 --> 00:02:14,000 që merr në argumente command line-është se ai menjëherë kontrollon 40 00:02:14,000 --> 00:02:18,000 >> për numërimin e argumentit, argc. 41 00:02:18,000 --> 00:02:24,000 Drejtë këtu ne shohim se ky program është duke pritur 2 argumente saktësisht. 42 00:02:24,000 --> 00:02:27,000 Mos harroni se ka Argumenti i parë që është e veçantë 43 00:02:27,000 --> 00:02:29,000 që është gjithmonë emri i programit që është duke u drejtuar, 44 00:02:29,000 --> 00:02:31,000 emri i file ekzekutues. 45 00:02:31,000 --> 00:02:36,000 Dhe kështu ajo që kjo nuk është ajo parandalon përdoruesit nga drejtimin e programit 46 00:02:36,000 --> 00:02:42,000 me argumente më shumë ose më pak. 47 00:02:42,000 --> 00:02:44,000 Arsyeja që ne duam të kontrolloni për këtë të drejtë larg është për shkak se 48 00:02:44,000 --> 00:02:52,000 ne nuk mund të vërtetë të hyrë në këtë koleksion argv drejtë këtu besueshme 49 00:02:52,000 --> 00:02:55,000 deri sa ne kemi kontrolluar për të parë se sa e madhe është. 50 00:02:55,000 --> 00:02:58,000 >> Një nga gabimet e zakonshme që unë pashë ishte njerëzit do të shkojnë menjëherë në 51 00:02:58,000 --> 00:03:01,000 dhe kapje argv [1]. 52 00:03:01,000 --> 00:03:06,000 Ata do të kap argumentin kryesor nga grup dhe të bëjë një të i kontrolluar në të, 53 00:03:06,000 --> 00:03:11,000 dhe pastaj ata do të bëjnë testin për argc si provë tjetër, 54 00:03:11,000 --> 00:03:16,000 nëse janë apo jo Argumenti i parë ishte me të vërtetë një numër të plotë në të njëjtën kohë, 55 00:03:16,000 --> 00:03:20,000 dhe që nuk punojnë, sepse në rast se nuk ka argumente të furnizuara 56 00:03:20,000 --> 00:03:26,000 ju do të jetë grabbing një argument që nuk është atje ose duke u përpjekur për të rrëmbyer atë që nuk është atje. 57 00:03:26,000 --> 00:03:29,000 >> Gjëja tjetër e madhe që ju duhet të njoftim është se 58 00:03:29,000 --> 00:03:32,000 ju gjithmonë doni të shtypura nga një lloj mesazhi gabimi dobishme 59 00:03:32,000 --> 00:03:34,000 për përdoruesit për të orientuar ato. 60 00:03:34,000 --> 00:03:37,000 Unë jam i sigurt që ju keni të gjitha programe të kandidojë ku të gjithë një e papritur ajo crashes, 61 00:03:37,000 --> 00:03:41,000 dhe ju merrni këtë dialog pak qesharake që pops up dhe thotë 62 00:03:41,000 --> 00:03:44,000 diçka tmerrësisht fshehtë dhe ndoshta ju jep një gabim të kodit apo diçka të tillë 63 00:03:44,000 --> 00:03:47,000 që e bën nuk ka kuptim. 64 00:03:47,000 --> 00:03:50,000 Kjo është ajo ku ju me të vërtetë doni për të siguruar diçka të dobishme 65 00:03:50,000 --> 00:03:54,000 dhe në shënjestër të përdoruesit në mënyrë që kur ata të drejtuar atë që ata të shkojnë "Oh," fytyra e pëllëmbë. 66 00:03:54,000 --> 00:03:58,000 "Unë e di saktësisht se çfarë duhet të bëni. Unë e di se si për të rregulluar këtë." 67 00:03:58,000 --> 00:04:01,000 >> Nëse ju nuk bëni shkruar një mesazh, atëherë ju deri në fund të vërtetë 68 00:04:01,000 --> 00:04:04,000 lënë përdoruesit për të shkuar të shqyrtuar kodin tuaj burim 69 00:04:04,000 --> 00:04:07,000 të kuptoj se çfarë shkoi keq. 70 00:04:07,000 --> 00:04:11,000 Ka edhe disa herë që ju do të përdorni kode të ndryshme gabim. 71 00:04:11,000 --> 00:04:14,000 Këtu kemi vetëm një për të përdorur thonë se ka qenë një gabim, 72 00:04:14,000 --> 00:04:16,000 ka qenë një gabim, ka qenë një gabim. 73 00:04:16,000 --> 00:04:20,000 Programet më të mëdha, shpesh programet që quhen nga programe të tjera, 74 00:04:20,000 --> 00:04:25,000 do të kthehen një lloj të kodeve gabim të veçanta në skenarë të ndryshëm 75 00:04:25,000 --> 00:04:28,000 të programuar të komunikuar atë që ju do të ndryshe 76 00:04:28,000 --> 00:04:32,000 përdorni vetëm një mesazh të mirë për anglisht. 77 00:04:32,000 --> 00:04:35,000 Cool. 78 00:04:35,000 --> 00:04:37,000 Si punojmë poshtë, ju mund të shikoni ne tërheqë jashtë kyç. 79 00:04:37,000 --> 00:04:40,000 Ne test për të parë nëse çelësi i përshtatet. 80 00:04:40,000 --> 00:04:42,000 Ne kemi marrë një mesazh nga përdoruesi. 81 00:04:42,000 --> 00:04:46,000 Arsyeja që ne bëjmë në këtë bërë, ndërsa loop-dhe kjo është diçka që ne do të mbulojë 82 00:04:46,000 --> 00:04:50,000 në një pak pak, por kjo rezulton se në qoftë se ju shkruani kontrollit D 83 00:04:50,000 --> 00:04:54,000 kur ju merrni se getString shpejtë në terminal 84 00:04:54,000 --> 00:04:59,000 atë që në të vërtetë nuk është ajo dërgon një karakter të veçantë 85 00:04:59,000 --> 00:05:01,000 te programit. 86 00:05:01,000 --> 00:05:05,000 Është quajtur Elf, ose në fund të karakterit file. 87 00:05:05,000 --> 00:05:08,000 Dhe në këtë rast, vargu ynë do të jetë mesazhi null, 88 00:05:08,000 --> 00:05:14,000 kështu që kjo nuk ishte diçka që ne e kontrolluar në problemin vendosur vetë. 89 00:05:14,000 --> 00:05:17,000 >> Por si ne do të shkojmë më, tani që ne kemi filluar të flasim për pointers 90 00:05:17,000 --> 00:05:21,000 dhe alokimi dinamike kujtesës në tog, 91 00:05:21,000 --> 00:05:25,000 kontrolluar for null sa herë që ju keni një funksion që mund të 92 00:05:25,000 --> 00:05:30,000 kthehen null si një vlerë është diçka që ju do të dëshironi të merrni në zakonin e të bërit. 93 00:05:30,000 --> 00:05:33,000 Kjo është kryesisht për ilustrim këtu. 94 00:05:33,000 --> 00:05:36,000 Por kur ju e shihni getString në të ardhmen, 95 00:05:36,000 --> 00:05:41,000 kështu që nga Problem Set 4, ju do të duan të mbajnë këtë në mendje. 96 00:05:41,000 --> 00:05:44,000 Përsëri, kjo nuk është një çështje për problemin Set 3 ose që ne nuk e kishte mbuluar atë ende. 97 00:05:44,000 --> 00:05:53,000 Së fundi, ne kemi marrë në këtë pjesë ku ne të merrni në lak kryesore encryption, 98 00:05:53,000 --> 00:05:57,000 dhe ka disa gjëra në vazhdim e sipër këtu. 99 00:05:57,000 --> 00:06:02,000 Së pari, ne iterate mbi vargun mesazh tërë vetë. 100 00:06:02,000 --> 00:06:07,000 Këtu ne kemi mbajtur thirrjen strlen në gjendje, 101 00:06:07,000 --> 00:06:12,000 të cilën një numër prej jush kanë vënë në dukje nuk është një mënyrë e madhe për të shkuar. 102 00:06:12,000 --> 00:06:15,000 Kjo rezulton në këtë rast kjo nuk është gjithashtu e madhe, 103 00:06:15,000 --> 00:06:20,000 pjesërisht për shkak se ne jemi modifikuar përmbajtjen e mesazhit vetë 104 00:06:20,000 --> 00:06:27,000 brenda për lak, kështu që nëse ne kemi një mesazh që është 10 karaktere të gjatë, 105 00:06:27,000 --> 00:06:32,000 hera e parë që ne të fillojë për lak strlen do të kthehen çfarë? 106 00:06:32,000 --> 00:06:35,000 10. 107 00:06:35,000 --> 00:06:40,000 >> Por në qoftë se ne atëherë modifikoni mesazhin, thonë se ne modifikoj karakterin e saj 5, 108 00:06:40,000 --> 00:06:46,000 dhe ne hedhin në një karakter \ 0 në pozitën e 5-të, 109 00:06:46,000 --> 00:06:49,000 në një përsëritje të mëvonshëm strlen (mesazhi) nuk do të kthehet atë që bëri 110 00:06:49,000 --> 00:06:52,000 hera e parë që ne përsëritur, 111 00:06:52,000 --> 00:06:56,000 por ajo do të kthehet në vend 5, sepse ne e hodhi në atë terminator null, 112 00:06:56,000 --> 00:06:59,000 dhe gjatësia e vargut është përcaktuar 113 00:06:59,000 --> 00:07:03,000 nga pozita e atij \ 0. 114 00:07:03,000 --> 00:07:09,000 Në këtë rast, kjo është një mënyrë e madhe për të shkuar, sepse ne jemi duke modifikuar atë në vend. 115 00:07:09,000 --> 00:07:13,000 Por ju vini re se kjo është në fakt çuditërisht e thjeshtë për të encrypt 116 00:07:13,000 --> 00:07:16,000 në qoftë se ju mund të merrni matematikë saktë. 117 00:07:16,000 --> 00:07:19,000 E gjithë kjo është e nevojshme është për të kontrolluar nëse janë apo jo letrën që ju jeni duke kërkuar në 118 00:07:19,000 --> 00:07:21,000 uppercase vogle ose është. 119 00:07:21,000 --> 00:07:24,000 >> Arsyeja që ne vetëm duhet të shikoni për këtë dhe ne nuk kemi për të kontrolluar për 120 00:07:24,000 --> 00:07:27,000 është rasti alfa është për shkak se 121 00:07:27,000 --> 00:07:30,000 nëse një karakter është uppercase ose nëse është e vogla 122 00:07:30,000 --> 00:07:33,000 atëherë kjo është padyshim një karakter alfabetik, 123 00:07:33,000 --> 00:07:38,000 sepse ne nuk kemi shifra uppercase dhe të vogla. 124 00:07:38,000 --> 00:07:41,000 Gjë tjetër që ne bëjmë, dhe kjo është pak e ndërlikuar- 125 00:07:41,000 --> 00:07:45,000 po ne kemi modifikuar standarde Cezarit shifër formulë 126 00:07:45,000 --> 00:07:49,000 që ne i dha në specifikimet e caktuar e problemit. 127 00:07:49,000 --> 00:07:52,000 Çfarë është e ndryshme këtu është se ne zbriten 128 00:07:52,000 --> 00:07:58,000 në kryeqytetin rast MËDHAJA A, dhe pastaj kemi shtuar kapitalin e një 129 00:07:58,000 --> 00:08:02,000 mbështetur në në fund. 130 00:08:02,000 --> 00:08:05,000 >> Unë e di se disa prej jush e kanë bërë këtë në kodin tuaj. 131 00:08:05,000 --> 00:08:09,000 A ndonjë nga ju të bëni këtë në parashtrimet tuaja? 132 00:08:09,000 --> 00:08:13,000 Ju e bëri këtë. Mund ta shpjegoni se çfarë ky bën, Sahb? 133 00:08:13,000 --> 00:08:18,000 Duke zbritur atë, sepse keni bërë një mod të drejtë pas tij, 134 00:08:18,000 --> 00:08:21,000 ju duhet të merrni atë jashtë, kështu mënyrë që ju të merrni [kollitjes] pozita. 135 00:08:21,000 --> 00:08:25,000 Dhe pastaj duke shtuar atë përsëri më vonë ju zhvendosur mbi atë që keni kërkuar. 136 00:08:25,000 --> 00:08:27,000 Po, pikërisht. 137 00:08:27,000 --> 00:08:32,000 Çfarë Sahb tha ishte se kur ne duam të shtoni 138 00:08:32,000 --> 00:08:36,000 mesazhi ynë dhe çelësi jonë së bashku 139 00:08:36,000 --> 00:08:42,000 dhe pastaj se, mod mod që nga NUM_LETTERS, 140 00:08:42,000 --> 00:08:50,000 nëse ne nuk e shkallës mesazhin tonë në varg duhur 0-25 parë, 141 00:08:50,000 --> 00:08:54,000 atëherë ne mund të përfundojnë duke marrë një numër të vërtetë i çuditshëm 142 00:08:54,000 --> 00:08:59,000 sepse vlerat që ne jemi duke kërkuar në, kur ne shikojmë në mesazhin [i], 143 00:08:59,000 --> 00:09:03,000 Kur ne shikojmë në karakterin e ith plain-text mesazhin tonë, 144 00:09:03,000 --> 00:09:08,000 është një vlerë diku në këtë varg 65-122 145 00:09:08,000 --> 00:09:13,000 bazuar në vlerat ASCII për uppercase një përmes z Fjala. 146 00:09:13,000 --> 00:09:18,000 Dhe kështu, kur ne mod atë me 26 ose me NUM_LETTERS, 147 00:09:18,000 --> 00:09:23,000 pasi që ishte # jonë të përcaktojë në krye të drejtë deri këtu, 148 00:09:23,000 --> 00:09:28,000 që do të na japin një vlerë që është në varg 0-25, 149 00:09:28,000 --> 00:09:30,000 dhe kemi nevojë për një mënyrë për të, atëherë shkallë që back up 150 00:09:30,000 --> 00:09:32,000 dhe të merrni atë në rangun e duhur ASCII. 151 00:09:32,000 --> 00:09:36,000 Mënyra më e lehtë për të bërë këtë është që vetëm të shkallës gjithçka poshtë 152 00:09:36,000 --> 00:09:39,000 në varg 0-25 për të filluar me të, 153 00:09:39,000 --> 00:09:43,000 dhe pastaj zhvendoset gjithçka kthehet deri në fund. 154 00:09:43,000 --> 00:09:46,000 >> Një tjetër gabim i përbashkët që unë pashë njerëzit të kandidojë në është se 155 00:09:46,000 --> 00:09:50,000 në qoftë se ju nuk mund të vërtetë të bëjë këtë shkallë menjëherë 156 00:09:50,000 --> 00:09:53,000 dhe ju shtoni mesazhin dhe çelësin bashku dhe ju shtoni ato, të themi, 157 00:09:53,000 --> 00:09:58,000 në një variabël char, problemi me këtë 158 00:09:58,000 --> 00:10:01,000 është që mesazhi [i] është një numër relativisht i madh për të filluar me- 159 00:10:01,000 --> 00:10:05,000 mos harroni se të paktën 65 në qoftë se ajo është një karakter uppercase- 160 00:10:05,000 --> 00:10:09,000 në qoftë se ju keni një çelës të madh, të themi, diçka si 100, 161 00:10:09,000 --> 00:10:13,000 dhe ju shtoni ato së bashku në një 2 char nënshkruar ju jeni do të merrni një vërshim ujërash. 162 00:10:13,000 --> 00:10:17,000 Ju jeni do të merrni një vlerë që është më i madh se 127, 163 00:10:17,000 --> 00:10:22,000 cila është vlera më e madhe që një ndryshore char mund të mbajë. 164 00:10:22,000 --> 00:10:26,000 Përsëri, kjo është arsyeja pse ju do të doni të bëni atë gjë e tillë për të filluar me. 165 00:10:26,000 --> 00:10:29,000 Disa njerëz mori rreth atë rast, duke bërë një tjetër, nëse dhe testimin e 166 00:10:29,000 --> 00:10:33,000 për të parë nëse ajo do të del nga shtrati para se të bëjnë këtë, 167 00:10:33,000 --> 00:10:36,000 por në këtë mënyrë merr rreth se. 168 00:10:36,000 --> 00:10:40,000 Dhe pastaj në këtë zgjidhje, ne shtypet nga vargut të tërë në fund. 169 00:10:40,000 --> 00:10:45,000 Njerëz të tjerë të shtypura nga një karakter në një kohë. Të dyja janë awesome. 170 00:10:45,000 --> 00:10:51,000 Në këtë pikë, ju djema keni ndonjë pyetje, ndonjë koment në lidhje me këtë? 171 00:10:51,000 --> 00:10:56,000 Gjërat që ju pëlqen, gjëra që ju nuk më pëlqen? 172 00:10:56,000 --> 00:10:58,000 >> Unë kisha një pyetje. 173 00:10:58,000 --> 00:11:01,000 Ndoshta unë humbur atë gjatë shpjegimit tuaj, por si e bën këtë program 174 00:11:01,000 --> 00:11:07,000 kaloni hapësirat për lidhjen kyç për kohëzgjatjen e tekstit? 175 00:11:07,000 --> 00:11:10,000 Kjo shifër është vetëm Cezari. >> Oh, sorry, yeah. 176 00:11:10,000 --> 00:11:13,000 Po, ne do të shohim se. 177 00:11:13,000 --> 00:11:16,000 Në shifër Caesar kemi marrë rreth se për shkak 178 00:11:16,000 --> 00:11:18,000 ne vetëm kthyer karaktere. 179 00:11:18,000 --> 00:11:27,000 Ne vetëm ndërruar ata në qoftë se ata ishin të uppercase ose Fjala. 180 00:11:27,000 --> 00:11:32,000 Ju djema ndjenjë mjaft të mirë në lidhje me këtë? 181 00:11:32,000 --> 00:11:34,000 Ndjehen të lirë për të kopjuar këtë shtëpi, të marrë atë, 182 00:11:34,000 --> 00:11:37,000 krahasojnë atë me atë që ju djema shkruajtur. 183 00:11:37,000 --> 00:11:42,000 Patjetër të ndjehen të lirë për të dërguar pyetje për atë shumë. 184 00:11:42,000 --> 00:11:46,000 Dhe përsëri, e kuptojnë se qëllimi këtu me problemin tuaj përcakton 185 00:11:46,000 --> 00:11:50,000 nuk është për të marrë ju djema për të shkruar kodin perfekt për grupe tuaja problem. 186 00:11:50,000 --> 00:11:57,000 Kjo është një përvojë mësimi. Po. 187 00:11:57,000 --> 00:12:01,000 >> Përsëri në të bërë, ndërsa loop, në qoftë se ajo është e barabartë null, 188 00:12:01,000 --> 00:12:06,000 kështu null thjesht do të thotë asgjë, ata vetëm goditi të hyjë? 189 00:12:06,000 --> 00:12:12,000 Null është një vlerë të veçantë akrep, 190 00:12:12,000 --> 00:12:17,000 dhe ne i përdorim null kur ne duam të themi 191 00:12:17,000 --> 00:12:23,000 ne kemi një ndryshore tregues që është duke treguar asgjë. 192 00:12:23,000 --> 00:12:28,000 Dhe kështu zakonisht do të thotë se kjo është e ndryshueshme, kjo është e ndryshueshme mesazh 193 00:12:28,000 --> 00:12:35,000 është e zbrazët, dhe këtu, sepse ne jemi duke përdorur llojin CS50 veçantë string, 194 00:12:35,000 --> 00:12:37,000 çfarë është lloji CS50 string? 195 00:12:37,000 --> 00:12:42,000 A keni parë se çfarë është ajo, kur Davidi u tërhoq prapa individualitet në leksionin? 196 00:12:42,000 --> 00:12:44,000 Kjo është një i shokuar-kjo është një akrep, e drejtë? 197 00:12:44,000 --> 00:12:48,000 Mirë, po. >> Kjo është një char *. 198 00:12:48,000 --> 00:12:52,000 Dhe kështu me të vërtetë ne mund të zëvendësojë këtë 199 00:12:52,000 --> 00:12:56,000 drejtë këtu me mesazhin char *, 200 00:12:56,000 --> 00:13:04,000 dhe kështu funksionin getString, në qoftë se ajo nuk ka marrë me sukses një varg nga përdoruesit, 201 00:13:04,000 --> 00:13:08,000 ajo nuk mund analizimi një varg, dhe një rast në të cilën ai nuk mund analizimi një varg 202 00:13:08,000 --> 00:13:11,000 është nëse përdoruesi lloje fundin e karakterit fotografi, D kontrollit, 203 00:13:11,000 --> 00:13:17,000 e cila nuk është diçka që ju bëni në mënyrë tipike, por nëse kjo ndodh 204 00:13:17,000 --> 00:13:20,000 atëherë funksioni do të kthehet këtë vlerë zero si një mënyrë për të thënë 205 00:13:20,000 --> 00:13:23,000 "Hej, unë nuk e kam marrë një varg." 206 00:13:23,000 --> 00:13:27,000 Çfarë do të ndodhte nëse ne nuk e vënë mesazh = null, 207 00:13:27,000 --> 00:13:30,000 e cila është diçka që ne nuk e kemi bërë ende? 208 00:13:30,000 --> 00:13:32,000 Pse do që të jetë një problem këtu? 209 00:13:32,000 --> 00:13:38,000 Sepse unë e di që ne biseduam pak në leksionin mbi rrjedhjet e kujtesës. 210 00:13:38,000 --> 00:13:42,000 Po, le ta bëjë këtë, dhe le të shohim se çfarë ndodh. 211 00:13:42,000 --> 00:13:44,000 >> Pyetja Vasili ishte se çfarë ndodh në qoftë se ne nuk mund të vërtetë kanë 212 00:13:44,000 --> 00:13:48,000 ky mesazh Testi = null? 213 00:13:48,000 --> 00:13:51,000 Le të shkoni deri në krye. 214 00:13:51,000 --> 00:13:53,000 Ju djema mund të komentojë këtë. 215 00:13:53,000 --> 00:13:55,000 Në fakt, unë do të të shpëtuar atë në një rishikim. 216 00:13:55,000 --> 00:13:58,000 Kjo do të jetë Revision 3. 217 00:13:58,000 --> 00:14:02,000 Çfarë ju do të duhet të bëni për të drejtuar këtë program është që ju do të duhet të klikoni këtë ikonë veshje deri këtu, 218 00:14:02,000 --> 00:14:04,000 dhe ju do të keni për të shtuar një argument për të. 219 00:14:04,000 --> 00:14:10,000 Ju do të keni për të dhënë atë argumentin kryesor që ne duam të kalojë në një argument command line. 220 00:14:10,000 --> 00:14:13,000 Këtu unë jam duke shkuar për të dhënë atë numrin 3. Më pëlqen 3. 221 00:14:13,000 --> 00:14:19,000 Tani zooming nga mbrapa, drejtimin e programit. 222 00:14:19,000 --> 00:14:24,000 Është drejtimin, hartimin, ndërtimin. 223 00:14:24,000 --> 00:14:27,000 Këtu ne do të shkojmë. Është pritur që të nxitet. 224 00:14:27,000 --> 00:14:33,000 Nëse unë lloji në diçka si hello-ku bëri që të shkojnë? 225 00:14:33,000 --> 00:14:38,000 Oh, programi im mori një kohë të gjatë për të kandiduar. Unë u jawing për një kohë të gjatë. 226 00:14:38,000 --> 00:14:40,000 Këtu ajo shkon. 227 00:14:40,000 --> 00:14:43,000 Tani unë lloji në përshëndetje. 228 00:14:43,000 --> 00:14:46,000 Ne e shohim se ai kodon të përshtatshme. 229 00:14:46,000 --> 00:14:52,000 Tani çfarë ndodh në qoftë se ne bëjmë getString shpejtë të kthehen null? 230 00:14:52,000 --> 00:14:57,000 Mos harroni, kam thënë se ne e bëri atë duke shtypur kontrollit D në të njëjtën kohë. 231 00:14:57,000 --> 00:14:59,000 Unë do të shkoni deri këtu. Ne do të kandidojë përsëri. 232 00:14:59,000 --> 00:15:01,000 Ndërtimi. Ka ajo shkon. 233 00:15:01,000 --> 00:15:04,000 Tani kur unë goditi kontrollit D 234 00:15:04,000 --> 00:15:12,000 I kam këtë linjë që thotë opt/sandbox50/bin/run.sh, faji segmentimit. 235 00:15:12,000 --> 00:15:15,000 A keni djema shihet se më parë? 236 00:15:15,000 --> 00:15:17,000 >> [Student] Pse është atje nuk->> Na vjen keq? 237 00:15:17,000 --> 00:15:20,000 [Student] Pse është atje nuk ka hale thelbësore në këtë rast? 238 00:15:20,000 --> 00:15:26,000 Hale kryesor është-pyetja është pse nuk ka ndonjë hale core këtu? 239 00:15:26,000 --> 00:15:29,000 Pyetja është se nuk mund të jetë, por hale thelbi është një file 240 00:15:29,000 --> 00:15:31,000 që merr ruajtur në hard drive. 241 00:15:31,000 --> 00:15:34,000 Në këtë rast ne kemi aftësi të kufizuara mërzi kryesore 242 00:15:34,000 --> 00:15:37,000 në server drejtuar në mënyrë që të mos ketë njerëz seg përgënjeshtrojnë 243 00:15:37,000 --> 00:15:40,000 dhe ndërtimin ton mërzi kryesore. 244 00:15:40,000 --> 00:15:46,000 Por ju mund të merrni një të tillë. 245 00:15:46,000 --> 00:15:48,000 Mërzi kryesore janë lloj i gjë që ju shpesh mund të çaktivizoni, 246 00:15:48,000 --> 00:15:52,000 dhe ndonjëherë ju bëni. 247 00:15:52,000 --> 00:15:55,000 Faji segmentimit, për t'iu përgjigjur pyetjes tuaj, Vasili, 248 00:15:55,000 --> 00:16:00,000 është thënë se kemi provuar për të hyrë në një akrep 249 00:16:00,000 --> 00:16:05,000 që nuk u ngrit për pikë për çdo gjë. 250 00:16:05,000 --> 00:16:09,000 Të ruaj të Binky në video, kur Binky përpiqet të 251 00:16:09,000 --> 00:16:12,000 shkoni hyni një tregues që nuk është duke treguar asgjë? 252 00:16:12,000 --> 00:16:16,000 Në këtë rast unë mendoj se teknikisht treguesi është duke treguar diçka. 253 00:16:16,000 --> 00:16:20,000 Është treguar null, i cili është teknikisht 0, 254 00:16:20,000 --> 00:16:25,000 por që është përcaktuar që të jetë në një segment që nuk është arritshëm 255 00:16:25,000 --> 00:16:28,000 nga programin tuaj, kështu që ju të merrni një defekt segmentimit 256 00:16:28,000 --> 00:16:31,000 sepse ju nuk jeni duke hyrë kujtesës që është në një segment të vlefshme 257 00:16:31,000 --> 00:16:38,000 si segment grumbull ose segment rafte apo segment të dhënave. 258 00:16:38,000 --> 00:16:40,000 Cool. 259 00:16:40,000 --> 00:16:48,000 Ndonjë pyetje më shumë rreth Cezarit? 260 00:16:48,000 --> 00:16:51,000 >> Le të lëvizë. Le të shikojmë në Revision 2 vërtetë shpejt. 261 00:16:51,000 --> 00:17:00,000 Kjo është Vigenere. 262 00:17:00,000 --> 00:17:04,000 Këtu në Vigenere 263 00:17:04,000 --> 00:17:06,000 ne do të ecin nëpër këtë shumë shpejt, sepse, përsëri, 264 00:17:06,000 --> 00:17:10,000 Vigenere dhe Cezari janë mjaft të ngjashme. 265 00:17:10,000 --> 00:17:12,000 Komenti header është përpara, 266 00:17:12,000 --> 00:17:17,000 # Define është e para për të shmangur përdorimin e këtyre numrave magjike. 267 00:17:17,000 --> 00:17:21,000 Gjë e bukur është që të thoni që ne të kërkuar për të lëvizur në 268 00:17:21,000 --> 00:17:23,000 një alfabet të ndryshme ose diçka të tillë. 269 00:17:23,000 --> 00:17:26,000 Në vend që të shkojnë dorë të ndryshojë të gjitha 26-së në kodin 270 00:17:26,000 --> 00:17:30,000 Ne mund të ndryshojë këtë në 27 ose rënie atë poshtë 271 00:17:30,000 --> 00:17:34,000 në qoftë se ne ishim duke përdorur alfabete të ndryshme, gjuhë të ndryshme. 272 00:17:34,000 --> 00:17:38,000 Përsëri, ne kemi marrë këtë kontroll të numërimit argumentit, 273 00:17:38,000 --> 00:17:42,000 dhe me të vërtetë ju mund të pothuajse të marrë këtë si një template. 274 00:17:42,000 --> 00:17:46,000 Pretty much çdo program që ju shkruani duhet të ketë- 275 00:17:46,000 --> 00:17:50,000 në qoftë se ajo merr argumente command line-disa sekuenca e linjave 276 00:17:50,000 --> 00:17:55,000 që lexon si kjo në fillim. 277 00:17:55,000 --> 00:17:59,000 Kjo është një nga testet mendje e shëndoshë e parë që ju doni të bëni. 278 00:17:59,000 --> 00:18:03,000 >> Ja çfarë nuk u kemi bërë të sigurtë që 279 00:18:03,000 --> 00:18:06,000 fjalen ishte e vlefshme, dhe që ishte kontrolloni dytë që ne e bëmë. 280 00:18:06,000 --> 00:18:11,000 Vini re përsëri se kemi ndarë këtë nga argc dhe 2. 281 00:18:11,000 --> 00:18:14,000 Vini re se në këtë rast një gjë që ne duhej të bëja ishte në vend 282 00:18:14,000 --> 00:18:18,000 e përdorimit të një të i kemi dashur për të vërtetuar të gjithë tekstin, 283 00:18:18,000 --> 00:18:21,000 dhe në mënyrë që të bëjë që ju të vërtetë duhet të shkoni karakter nga karakteri 284 00:18:21,000 --> 00:18:23,000 mbi varg. 285 00:18:23,000 --> 00:18:29,000 Nuk ka asnjë mënyrë e mirë për të thirrur diçka në atë 286 00:18:29,000 --> 00:18:31,000 sepse edhe, për shembull, një të unë do të kthehen 0 287 00:18:31,000 --> 00:18:37,000 në qoftë se ajo nuk mund të kuptoj një numër të plotë, kështu që nuk do të punojnë edhe. 288 00:18:37,000 --> 00:18:42,000 Përsëri, mesazhi i bukur thënë përdorues pikërisht ajo që ndodhi. 289 00:18:42,000 --> 00:18:45,000 Atëherë këtu, përsëri, kemi trajtuar edhe rastin kur 290 00:18:45,000 --> 00:18:50,000 përdoruesi lloje në një karakter D të kontrollit të rastit. 291 00:18:50,000 --> 00:18:54,000 >> Dhe pastaj Charlotte kishte një pyetje më parë për mënyrën se si kemi arritur të kaloni hapësira 292 00:18:54,000 --> 00:18:57,000 në vargun tonë këtu. 293 00:18:57,000 --> 00:19:00,000 Ky ishte lloj i ngjashëm me atë që ne e bëmë me programin Myspace 294 00:19:00,000 --> 00:19:04,000 që ne e bëmë në nenin, dhe në këtë mënyrë ka punuar 295 00:19:04,000 --> 00:19:08,000 është se ne gjurmuar numrin e shkronjave që ne do të shihet. 296 00:19:08,000 --> 00:19:13,000 Siç kemi ecur mbi vargun mesazh, siç kemi ecur mbi karakter nga karakteri, 297 00:19:13,000 --> 00:19:16,000 kemi gjurmuar indeksin si pjesë e tonë për lak, dhe pastaj ne gjithashtu zbuloi 298 00:19:16,000 --> 00:19:21,000 numri i letrave, kështu që jo të veçanta karaktere, jo-shifrat, jo-hapësirë ​​të bardhë 299 00:19:21,000 --> 00:19:27,000 se ne do të shihet në ndryshore të veçantë. 300 00:19:27,000 --> 00:19:33,000 Dhe atëherë kjo zgjidhje modifikon kryesore 301 00:19:33,000 --> 00:19:41,000 për të marrë një numër të plotë aktuale kyçe, dhe kjo bën që të fluturojnë, 302 00:19:41,000 --> 00:19:47,000 drejtë para se ajo pastaj shkon për të encrypt karakterin aktuale mesazh. 303 00:19:47,000 --> 00:19:50,000 Ka disa zgjidhje që ishin shumë të madh të përkryer 304 00:19:50,000 --> 00:19:58,000 që do të ndryshojë kyç deri kur testimit për vlefshmërinë çelësi së. 305 00:19:58,000 --> 00:20:01,000 Përveç kësaj për të bërë të sigurtë se karakteri dhe fjalen 306 00:20:01,000 --> 00:20:05,000 ishte një karakter alfabetik ajo gjithashtu u kthye atë në një numër të plotë 307 00:20:05,000 --> 00:20:13,000 në varg 0-25 për të pastaj kaloni pasur nevojë të bëjë që më vonë në këtë për lak. 308 00:20:13,000 --> 00:20:18,000 Përsëri, ju shihni këtu kjo është me të vërtetë kodin e saktë të njëjtën 309 00:20:18,000 --> 00:20:22,000 që kemi përdorur në Çezarit në këtë pikë. 310 00:20:22,000 --> 00:20:25,000 Ju jeni duke bërë njëjtën gjë e saktë, kështu që mashtrim i vërtetë është parafytyruar 311 00:20:25,000 --> 00:20:30,000 se si ta kthejnë fjalen në një numër të plotë. 312 00:20:30,000 --> 00:20:35,000 >> Një gjë që ne e bëmë këtu që është pak i dendur 313 00:20:35,000 --> 00:20:39,000 është që ne përsëriti këtë frazë, I guess ju mund të telefononi atë, 314 00:20:39,000 --> 00:20:45,000 3 herë veçanta në linjat 58, 59, dhe 61. 315 00:20:45,000 --> 00:20:52,000 Mund dikush të shpjegojë se çfarë pikërisht kjo frazë nuk? 316 00:20:52,000 --> 00:20:55,000 Është hyrë në një karakter, si ju tha. 317 00:20:55,000 --> 00:20:59,000 Po, kjo është [padëgjueshme] një karakter në fjalë, 318 00:20:59,000 --> 00:21:04,000 dhe kështu që është numri i shkronjave parë, sepse ju jeni vetëm duke lëvizur së bashku 319 00:21:04,000 --> 00:21:06,000 fjalen herë ju keni parë letrën, 320 00:21:06,000 --> 00:21:10,000 kështu që do të kaloni në mënyrë efektive hapësira dhe stuff like that. 321 00:21:10,000 --> 00:21:12,000 Po, pikërisht. 322 00:21:12,000 --> 00:21:16,000 Dhe pastaj një herë ju keni parë bosh fjalen qe sapo mod kështu që ju kthehem rreth. 323 00:21:16,000 --> 00:21:18,000 Saktësisht. Kjo është një shpjegim të përsosur. 324 00:21:18,000 --> 00:21:23,000 Çfarë Kevin thënë është se ne duam të indeksit në fjalen. 325 00:21:23,000 --> 00:21:28,000 Ne duam për të marrë karakterin num_letters_seen, në qoftë se ju do, 326 00:21:28,000 --> 00:21:32,000 por në qoftë se num_letters_seen tejkalon gjatësinë e fjalen, 327 00:21:32,000 --> 00:21:37,000 mënyrën se si ne të kthehet në varg duhur është ne përdorim operatorin mod 328 00:21:37,000 --> 00:21:40,000 në mënyrë efektive për të përfunduar rreth. 329 00:21:40,000 --> 00:21:43,000 Për shembull, si në afat të shkurtër, fjalen ynë është proshutë, 330 00:21:43,000 --> 00:21:46,000 dhe kjo është 5 shkronja e gjatë. 331 00:21:46,000 --> 00:21:50,000 Por ne kemi parë 6 letra në tekstin tonë të thjeshtë në këtë pikë 332 00:21:50,000 --> 00:21:52,000 dhe Encrypted 6. 333 00:21:52,000 --> 00:21:57,000 Ne do të përfundojë deri në qasjen e num_letters_seen, 334 00:21:57,000 --> 00:22:00,000 cili është 6, MOD gjatësia e fjalen, 5, 335 00:22:00,000 --> 00:22:04,000 dhe kështu që ne do të merrni 1, dhe kështu ajo që ne do të bëjmë është që ne do të 336 00:22:04,000 --> 00:22:14,000 futu brenda e parë karakterin e fjalen sonë në atë pikë. 337 00:22:14,000 --> 00:22:21,000 >> Të gjithë të drejtë, ndonjë pyetje në Vigenere 338 00:22:21,000 --> 00:22:26,000 para se të shkojë në? 339 00:22:26,000 --> 00:22:31,000 Ju djema ndjenjë mjaft të mirë në lidhje me këtë? 340 00:22:31,000 --> 00:22:35,000 Cool, great. 341 00:22:35,000 --> 00:22:38,000 Unë dua të bëni të sigurtë që ju djema jeni duke shans për të parë kodin 342 00:22:38,000 --> 00:22:48,000 që ne mendojmë se duket e mirë dhe të kenë mundësinë për të mësuar nga ajo. 343 00:22:48,000 --> 00:22:53,000 Kjo do të jetë e fundit ne do të jetë duke përdorur hapësira për momentin, 344 00:22:53,000 --> 00:22:59,000 dhe ne jemi duke shkuar për tranzicionin tani, dhe unë jam duke shkuar për të shkuar në cs50.net/lectures 345 00:22:59,000 --> 00:23:06,000 kështu që ne mund të bëjë një grimë të vogël e shqyrtimit quiz. 346 00:23:06,000 --> 00:23:10,000 Mënyra më e mirë Unë mendoj se të fillojnë të bëjnë quiz shqyrtim 347 00:23:10,000 --> 00:23:15,000 është për të ardhur tek kjo faqe leksione, cs50.net/lectures, 348 00:23:15,000 --> 00:23:20,000 dhe nën secilën nga titujt javë, kështu që nëse unë shoh këtu në Javës 0, 349 00:23:20,000 --> 00:23:27,000 Unë shoh se ne kemi një listë të temave që ne të mbuluar në Javën 0. 350 00:23:27,000 --> 00:23:31,000 >> Nëse ndonjë nga këto tema duket të panjohura për ju 351 00:23:31,000 --> 00:23:34,000 ju patjetër do të duan për të shkuar mbrapa dhe gërryen shënime leksion dhe ndoshta 352 00:23:34,000 --> 00:23:39,000 edhe cek nëpërmjet leksioneve, të shikojnë ata përsëri në qoftë se ju doni 353 00:23:39,000 --> 00:23:44,000 për të marrë një të ndjehen për atë që po ndodh me secilin nga këto tema. 354 00:23:44,000 --> 00:23:49,000 Unë do të them gjithashtu këtë një vit e burimeve të ftohtë ne kemi marrë 355 00:23:49,000 --> 00:23:55,000 Janë këto pantallona të shkurtra që ne kemi krijuar, dhe në qoftë se ju shikoni në Javës 0, 356 00:23:55,000 --> 00:24:00,000 ne nuk kemi të gjitha temat e mbuluara, por ne kemi marrë mjaft disa prej tyre, 357 00:24:00,000 --> 00:24:03,000 disa nga ato komplikuar, kështu që shikuar këto pantallona të shkurtra përsëri 358 00:24:03,000 --> 00:24:08,000 është një mënyrë e mirë për të merrni ju deri në shpejtësinë. 359 00:24:08,000 --> 00:24:15,000 Në mënyrë të veçantë, unë jam duke shkuar për të vënë në një prizë për 3 në fund, pasi që kam bërë ato. 360 00:24:15,000 --> 00:24:20,000 Por në qoftë se ju jeni duke luftuar me binare, bit, magji, se lloj i stuff, 361 00:24:20,000 --> 00:24:22,000 binar është një vend i madh për të filluar. 362 00:24:22,000 --> 00:24:25,000 ASCII është një tjetër që është e mirë për të parë shumë. 363 00:24:25,000 --> 00:24:31,000 Ju edhe mund të shikojnë mua në shpejtësi 1.5X në qoftë se unë jam duke shkuar tepër i ngadalshëm për ju. 364 00:24:31,000 --> 00:24:35,000 Që nga ajo e shqyrtimit, të ndjehen të lirë për të bërë këtë. 365 00:24:35,000 --> 00:24:40,000 >> Vetëm për të filluar me të vërtetë shpejt, ne jemi duke shkuar për të shkuar nëpërmjet një çift të këtyre problemeve quiz 366 00:24:40,000 --> 00:24:44,000 vetëm për të dybek shpejt nëpërmjet këtyre. 367 00:24:44,000 --> 00:24:50,000 Për shembull, le të shohim problemin 16 që unë kam marrë të drejtë deri këtu në bord. 368 00:24:50,000 --> 00:24:54,000 Ne kemi marrë këtë llogaritje e mëposhtëm në binar, 369 00:24:54,000 --> 00:24:56,000 dhe ne duam të tregojmë ndonjë punë. 370 00:24:56,000 --> 00:24:59,000 Mirë, unë jam duke shkuar për të dhënë këtë një e shtënë. 371 00:24:59,000 --> 00:25:01,000 Ju djema duhet të ndjekin së bashku me letër, 372 00:25:01,000 --> 00:25:04,000 dhe ne do të bëjmë këtë me të vërtetë shpejt. 373 00:25:04,000 --> 00:25:06,000 Ne duam për të kryer llogaritjen e mëposhtëm në binar. 374 00:25:06,000 --> 00:25:16,000 Unë kam marrë 00.110.010. 375 00:25:16,000 --> 00:25:27,000 Dhe unë jam duke shkuar për të shtuar në 00.110.010. 376 00:25:27,000 --> 00:25:30,000 Për matematikë gjenive pas së bashku në shtëpi, 377 00:25:30,000 --> 00:25:35,000 kjo është shumëzuar në mënyrë efektive nga 2. 378 00:25:35,000 --> 00:25:37,000 Le të fillojë. 379 00:25:37,000 --> 00:25:39,000 Ne jemi duke shkuar për të ndjekur algorithm njëjtë edhe se ne bëjmë 380 00:25:39,000 --> 00:25:43,000 kur ne të shtoni numra decimal së bashku. 381 00:25:43,000 --> 00:25:46,000 Me të vërtetë dallimi i vetëm këtu është se ne loop përsëri përreth 382 00:25:46,000 --> 00:25:51,000 pasi ne kemi 1 + 1 vend të sapo kemi marrë në 10. 383 00:25:51,000 --> 00:25:53,000 >> Në qoftë se ne fillojmë nga e djathta, me të vërtetë shpejt, çfarë është shifra e parë? 384 00:25:53,000 --> 00:25:55,000 [Student] 0. >> [Nate H.] 0. 385 00:25:55,000 --> 00:25:58,000 Madhe, shifra e dytë? 386 00:25:58,000 --> 00:26:00,000 [Student] 1. 387 00:26:00,000 --> 00:26:02,000 [Nate H.] A është kjo një 1? 1 + 1 është? 388 00:26:02,000 --> 00:26:04,000 [Student] 10. 389 00:26:04,000 --> 00:26:08,000 [Nate H.] Pikërisht, kështu që çfarë është shifra që unë të shkruaj drejtë nën 2 ato shtuara së bashku? 390 00:26:08,000 --> 00:26:11,000 [Student] 1, 0, ose 0 dhe pastaj mbajnë 1. 391 00:26:11,000 --> 00:26:15,000 [Nate H.] 0 dhe të mbajnë një 1, pikërisht. 392 00:26:15,000 --> 00:26:18,000 Next lart një, Basil, ju jeni. 393 00:26:18,000 --> 00:26:20,000 Çfarë është e treta? >> [Basil] 1. 394 00:26:20,000 --> 00:26:23,000 [Nate H.] 1, perfekt. Kevin? 395 00:26:23,000 --> 00:26:27,000 [Kevin] 0. >> [Nate H.] 0, Charlotte? 396 00:26:27,000 --> 00:26:30,000 [Charlotte] 0. >> [Nate H.] Yeah, dhe çfarë të bëj? 397 00:26:30,000 --> 00:26:32,000 [Student] 1. 398 00:26:32,000 --> 00:26:34,000 [Nate H.] Dhe çfarë të bëj? Dhe atëherë unë mbajnë 1. 399 00:26:34,000 --> 00:26:36,000 Perfect, Sahb? >> [Sahb] Tani ju keni 1. 400 00:26:36,000 --> 00:26:40,000 [Nate H.] Dhe nuk kam të bëjë asgjë këtu? 401 00:26:40,000 --> 00:26:43,000 [Sahb] Pastaj për një tjetër ju keni 1 sepse ke i çuar mbi 1. 402 00:26:43,000 --> 00:26:49,000 [Nate H.] Madhe, kështu që këtu ne mund të përfundojë atë. 403 00:26:49,000 --> 00:26:51,000 Cool. 404 00:26:51,000 --> 00:26:54,000 [Student] A 0 + 0 = 0? 405 00:26:54,000 --> 00:26:56,000 0 + 0 = 0. 406 00:26:56,000 --> 00:27:01,000 1 + 1, si ju tha, është 10, ose 1, 0, më tepër. 407 00:27:01,000 --> 00:27:07,000 10 është një term i gabuar, sepse për mua do të thotë 10 numrin 10, 408 00:27:07,000 --> 00:27:12,000 dhe kjo është gjë e çuditshme se si ne jemi duke përfaqësuar atë kur ne jemi duke e shkruar atë. 409 00:27:12,000 --> 00:27:20,000 Ne përfaqësojnë numrin 2 nga 1, 0, dhe numri 10 është pak ndryshme. 410 00:27:20,000 --> 00:27:23,000 >> Çfarë është lloj i bukur për binare është se ka të vërtetë nuk janë aq shumë 411 00:27:23,000 --> 00:27:25,000 raste që ju duhet për të mësuar. 412 00:27:25,000 --> 00:27:30,000 Nuk 0 + 0 = 0, 0 + 1 = 1, 413 00:27:30,000 --> 00:27:34,000 1 + 1 është 0, dhe pastaj mbajnë një 1, 414 00:27:34,000 --> 00:27:37,000 dhe pastaj ju mund të shihni këtu në kolonën e tretë nga e drejta 415 00:27:37,000 --> 00:27:40,000 kemi pasur këtë 1, 1, dhe 1. 416 00:27:40,000 --> 00:27:43,000 Dhe 1 + 1 + 1 është një 1, 417 00:27:43,000 --> 00:27:45,000 dhe keni kryer një tjetër 1. 418 00:27:45,000 --> 00:27:48,000 Kur ju jeni duke bërë shtimin binar, shumë e thjeshtë. 419 00:27:48,000 --> 00:27:51,000 Unë do të bëjë një çift shumë nga këto të mendje e shëndoshë kontrolloni veten 420 00:27:51,000 --> 00:27:54,000 para se të shkoni në, sepse kjo është 421 00:27:54,000 --> 00:28:00,000 ndoshta diçka që ne do të shohim në quiz. 422 00:28:00,000 --> 00:28:03,000 Tani le të bëjmë këtë një tjetër si. 423 00:28:03,000 --> 00:28:06,000 Le ta bëjmë problem të 17. 424 00:28:06,000 --> 00:28:12,000 Ne jemi duke shkuar për të kthyer në numrin e mëposhtëm binar të dhjetore. 425 00:28:12,000 --> 00:28:28,000 Unë kam marrë 10100111001. 426 00:28:28,000 --> 00:28:33,000 Kujtohet në video binar që kam bërë 427 00:28:33,000 --> 00:28:36,000 Unë eci nëpër një çift të shembujve, dhe i tregoi se si 428 00:28:36,000 --> 00:28:41,000 gjithçka punon kur ju jeni duke bërë atë në decimal. 429 00:28:41,000 --> 00:28:45,000 Kur ju jeni duke punuar në përfaqësimin decimal Unë mendoj se ne jemi 430 00:28:45,000 --> 00:28:48,000 në këtë pikë në jetën tonë në mënyrë të rrjedhshëm në atë që 431 00:28:48,000 --> 00:28:53,000 kjo është goxha e lehtë për të komentoj mbi mekanizmin e se si në fakt funksionon. 432 00:28:53,000 --> 00:28:59,000 >> Por për të bërë një radhitje të shpejtë, në qoftë se unë kam numrin 137 433 00:28:59,000 --> 00:29:06,000 kjo me të vërtetë do të thotë-dhe përsëri, kjo është në decimal përfaqësim- 434 00:29:06,000 --> 00:29:19,000 numri 137 në decimal të thotë se kam 1 x 100 + 10 + 3 x 7 x 1. 435 00:29:19,000 --> 00:29:22,000 Kjo është e gjitha duke qëndruar në ekran. 436 00:29:22,000 --> 00:29:29,000 Dhe pastaj nëse ju shikoni në këto numra të drejtë këtu, 437 00:29:29,000 --> 00:29:34,000 100, 10 dhe 1, ju shihni se ata janë në fakt të gjitha fuqitë e 10. 438 00:29:34,000 --> 00:29:43,000 Unë kam 10 m², 10 ¹, dhe 10 në zero. 439 00:29:43,000 --> 00:29:48,000 Ne kemi një lloj të ngjashëm të gjë në binar, 440 00:29:48,000 --> 00:29:55,000 përveç se baza tona, siç e quajmë ne, është 2 në vend të 10. 441 00:29:55,000 --> 00:29:58,000 Këto 10s që kam shkruar këtu poshtë në pjesën e poshtme, 442 00:29:58,000 --> 00:30:02,000 kjo 10 m², 10 ¹, 10 në zero, 10 është baza jonë, 443 00:30:02,000 --> 00:30:08,000 dhe eksponenti, 0, 1, ose 2, 444 00:30:08,000 --> 00:30:14,000 nënkuptohet nga pozita e shifra në numrin që kemi shkruar. 445 00:30:14,000 --> 00:30:21,000 1, nëse ne shikojmë në të, kjo 1 është në pozitën e 2. 446 00:30:21,000 --> 00:30:27,000 E 3 është në pozicionin 1, dhe 7 është në pozicionin 0. 447 00:30:27,000 --> 00:30:35,000 Kjo është se si ne të merrni eksponentët ndryshme më poshtë për bazat tona. 448 00:30:35,000 --> 00:30:40,000 >> Pas gjithë kësaj we'll-në fakt, ju e dini se çfarë? 449 00:30:40,000 --> 00:30:43,000 Ne do të bëjmë-ku e ka butonin undo tim të shkojë? 450 00:30:43,000 --> 00:30:45,000 Ka ajo shkon. 451 00:30:45,000 --> 00:30:47,000 I love this prish gjë. 452 00:30:47,000 --> 00:30:51,000 Pas kësaj unë mendoj se për mua të paktën 453 00:30:51,000 --> 00:30:54,000 mënyra më e lehtë për të filluar konvertimin e një numri binar 454 00:30:54,000 --> 00:30:57,000 ose një numër heksadecimal, ku baza është 16 455 00:30:57,000 --> 00:31:02,000 dhe jo 10 ose 2 është që të shkoni përpara dhe të shkruani nga 456 00:31:02,000 --> 00:31:09,000 bazat eksponentët dhe për të gjitha numrat në numrin tim binar në krye. 457 00:31:09,000 --> 00:31:14,000 Në qoftë se ne fillojmë nga e majta në të djathtë përsëri, 458 00:31:14,000 --> 00:31:17,000 cila është lloj i counterintuitive, 459 00:31:17,000 --> 00:31:23,000 Unë do të ndryshojë përsëri në të zezë këtu, ne kemi 2 në pozicionin 0, 460 00:31:23,000 --> 00:31:27,000 dhe pastaj ne kemi 2 ¹, 2 ², 461 00:31:27,000 --> 00:31:33,000 dhe pastaj 2 në 3, 2 të 4, 2 në 5, 6, 462 00:31:33,000 --> 00:31:39,000 7, 8, 9, dhe 10. 463 00:31:39,000 --> 00:31:41,000 Këta numra Unë kam shkruar se janë të gjithë eksponentët. 464 00:31:41,000 --> 00:31:48,000 Unë vetëm shkroi bazat këtu në 3 parë vetëm për hapësirë. 465 00:31:48,000 --> 00:31:50,000 >> Në këtë pikë unë jam duke shkuar për të shkuar përpara dhe unë jam në të vërtetë do të fshihet 466 00:31:50,000 --> 00:31:53,000 sende që ne e bëmë në decimal, në qoftë se është në rregull. 467 00:31:53,000 --> 00:31:57,000 Ju keni marrë të gjitha këto. 468 00:31:57,000 --> 00:32:05,000 Ata prej jush shikuar online Unë jam i sigurt se do të jetë në gjendje për të Rewind mua, nëse ju dëshironi. 469 00:32:05,000 --> 00:32:07,000 Switching back to stilolaps. 470 00:32:07,000 --> 00:32:12,000 Tani, ajo që ne mund të bëjmë, në qoftë se ju djema nuk janë tërësisht deri në shpejtësinë në fuqitë tuaja të 2, 471 00:32:12,000 --> 00:32:15,000 kjo është krejtësisht e ftohtë. 472 00:32:15,000 --> 00:32:18,000 Kjo ndodh. Unë e kuptoj. 473 00:32:18,000 --> 00:32:23,000 Unë dikur kishte një intervistë për punë, ku unë u tha unë duhet të di të gjitha fuqitë e 2 474 00:32:23,000 --> 00:32:26,000 deri përmes 2 në 30. 475 00:32:26,000 --> 00:32:29,000 Kjo nuk ishte një punë që kam marrë. 476 00:32:29,000 --> 00:32:32,000 Gjithsesi, ju djema mund të shkoni përpara dhe të bëjë matematikë këtu, 477 00:32:32,000 --> 00:32:35,000 por me binar ajo nuk ka të vërtetë të bëjë kuptim, 478 00:32:35,000 --> 00:32:38,000 dhe as nuk ka kuptim me decimal ose hexadecimal ose, 479 00:32:38,000 --> 00:32:43,000 të bëjë matematikë nga ku ju keni zero. 480 00:32:43,000 --> 00:32:49,000 Ju mund të shihni se unë kam 0 këtu, një 0 këtu, këtu 0, 0 këtu, këtu 0, 0 këtu. 481 00:32:49,000 --> 00:32:52,000 Pse nuk mund të ketë kuptim për të bërë matematikë aktuale 482 00:32:52,000 --> 00:32:56,000 për të llogaritur fuqinë e duhur për atë pozitë 2? 483 00:32:56,000 --> 00:32:59,000 Pikërisht, si tha Charlotte, ajo do të jetë 0. 484 00:32:59,000 --> 00:33:05,000 Mund edhe të kurseni vetes kohë nëse llogaritjen kompetencat e 2 nuk është kostum tuaj të fortë. 485 00:33:05,000 --> 00:33:10,000 Në këtë rast, ne vetëm duhet për të llogaritur atë për 2 të 0-cila është? 486 00:33:10,000 --> 00:33:12,000 [Student] 1. 487 00:33:12,000 --> 00:33:14,000 [Nate H.] 1, 2 në 3 cila është-? 488 00:33:14,000 --> 00:33:16,000 [Student] 8. >> [Nate H.] 8. 489 00:33:16,000 --> 00:33:18,000 2 deri në 4? 490 00:33:18,000 --> 00:33:21,000 [Student] 2. Unë jam i keq, 1. 491 00:33:21,000 --> 00:33:26,000 [Nate H.] 2 në 4 është 16, saktësisht. 492 00:33:26,000 --> 00:33:28,000 2 në 5, Kevin? >> 32. 493 00:33:28,000 --> 00:33:32,000 [Nate H.] 32, 2 në 8? 494 00:33:32,000 --> 00:33:38,000 [Student] 32 x 8, 256. 495 00:33:38,000 --> 00:33:41,000 [Nate H.] Perfect. 496 00:33:41,000 --> 00:33:43,000 Dhe 2 në 10? 497 00:33:43,000 --> 00:33:45,000 [Student] 1024. 498 00:33:45,000 --> 00:33:49,000 [Nate H.] Yeah, 1024. 499 00:33:49,000 --> 00:33:57,000 >> Pasi ne kemi marrë këto numra mund të përmbledhur të gjithë ata lart. 500 00:33:57,000 --> 00:34:01,000 Dhe ky është vendi ku ajo është me të vërtetë e rëndësishme për të bërë disa gjëra. 501 00:34:01,000 --> 00:34:07,000 Njëra është të shkoni të ngadalshëm dhe të kontrolloni punën tuaj. 502 00:34:07,000 --> 00:34:10,000 Ju mund të thoni se ka një 1 në fund të këtij numri, 503 00:34:10,000 --> 00:34:15,000 kështu që unë duhet patjetër të marrë një numër të rastësishëm, si rrjedhojë e mia, 504 00:34:15,000 --> 00:34:18,000 sepse të gjitha ato të tjera do të jetë edhe numrat 505 00:34:18,000 --> 00:34:21,000 duke qenë se kjo është një numër binar. 506 00:34:21,000 --> 00:34:24,000 Gjë tjetër për të bërë është në qoftë se ju të merrni në këtë pikë në testin 507 00:34:24,000 --> 00:34:27,000 dhe ju keni shkruar atë deri tani 508 00:34:27,000 --> 00:34:30,000 dhe ju jeni drejtimin jashtë kohe 509 00:34:30,000 --> 00:34:33,000 shikoni në numrin e pikave që ky problem është me vlerë. 510 00:34:33,000 --> 00:34:40,000 Ky problem, si ju mund të shihni, nëse unë rrokullisje prapa në laptop tim të vërtetë shpejt- 511 00:34:40,000 --> 00:34:44,000 ky problem është me vlerë 2 pikë, kështu që kjo nuk është lloj i kësaj 512 00:34:44,000 --> 00:34:47,000 ju duhet të shkojnë nëpër qoftë se ju jeni me të vërtetë presion për kohën. 513 00:34:47,000 --> 00:34:52,000 Por ne do të kaloni prapa në iPad, dhe ne do të shkojnë nëpërmjet saj të vërtetë shpejt. 514 00:34:52,000 --> 00:34:54,000 >> Më pëlqen bërë numrat e vegjël parë 515 00:34:54,000 --> 00:34:56,000 sepse unë të gjeni se më të lehtë. 516 00:34:56,000 --> 00:35:00,000 Më pëlqen 32 dhe 8 për shkak se ata të shkojnë së bashku mjaft lehtë, dhe ne kemi marrë 50. 517 00:35:00,000 --> 00:35:03,000 16 dhe 1 merr 17. 518 00:35:03,000 --> 00:35:05,000 Nuk kemi marrë 57, 519 00:35:05,000 --> 00:35:14,000 dhe pastaj ne mund të bëjmë pjesën tjetër të këtë, kështu që ne mund të bëjmë 57, 156. 520 00:35:14,000 --> 00:35:16,000 Come on. 521 00:35:16,000 --> 00:35:19,000 Njeriu, pra, le të shohim. 522 00:35:19,000 --> 00:35:27,000 Ne kemi pasur 57, 256, dhe 1024. 523 00:35:27,000 --> 00:35:31,000 Në këtë pikë, unë do të vetëm të shkojnë përmes. 524 00:35:31,000 --> 00:35:35,000 Unë nuk kam asnjë clue. Unë në mënyrë të qartë duhet të lexoni deri në këtë. 525 00:35:35,000 --> 00:35:40,000 7, 6, dhe 4, që ju të merrni 17. 526 00:35:40,000 --> 00:35:42,000 1, 5, 5, 2, 13. 527 00:35:42,000 --> 00:35:45,000 Pastaj ne të merrni 3, dhe pastaj ne të merrni 1. 528 00:35:45,000 --> 00:35:52,000 1337. 529 00:35:52,000 --> 00:35:55,000 Vezë të Pashkëve, dikush? 530 00:35:55,000 --> 00:35:59,000 Çdokush njeh këtë numër? 531 00:35:59,000 --> 00:36:02,000 Chris njeh numrin. Çfarë do të thotë kjo, Chris? 532 00:36:02,000 --> 00:36:04,000 [Chris] Leet. 533 00:36:04,000 --> 00:36:11,000 Leet, kështu që nëse ju shikoni në këtë, kjo duket si Leet. 534 00:36:11,000 --> 00:36:15,000 Sende Hacker. Watch për atë lloj stuff në afatmesme ose Quiz, jo. 535 00:36:15,000 --> 00:36:19,000 Nëse ju shihni atë lloj stuff dhe ju jeni të pyesin "Huh," 536 00:36:19,000 --> 00:36:22,000 që mund të vërtetë do të thotë diçka. 537 00:36:22,000 --> 00:36:24,000 Nuk e di. Davidi i pëlqen vënë atë in 538 00:36:24,000 --> 00:36:26,000 Kjo është një mënyrë e mirë për mendje e shëndoshë të kontrolluar atë. 539 00:36:26,000 --> 00:36:30,000 Si rregull, unë mund të shoh se çfarë po ndodh. 540 00:36:30,000 --> 00:36:34,000 >> Kjo është sende 0/Week Jave 1. 541 00:36:34,000 --> 00:36:39,000 Nëse ne të kaloni prapa në laptopë tonë tani, 542 00:36:39,000 --> 00:36:46,000 zoom jashtë, dhe disa gjëra tjera. 543 00:36:46,000 --> 00:36:50,000 Ka ASCII, të cilat ne kemi qenë duke bërë një shumë me grupe problem. 544 00:36:50,000 --> 00:36:55,000 Ky nocion i kapitalit A. Cila është se me të vërtetë? 545 00:36:55,000 --> 00:36:57,000 Duke e ditur se është integer decimal. 546 00:36:57,000 --> 00:37:00,000 65 është ajo që është plotësisht në tabelën ASCII, 547 00:37:00,000 --> 00:37:03,000 dhe kjo është arsye se kompjuteri shkruan atë, 548 00:37:03,000 --> 00:37:06,000 dhe kjo është se si ne kemi qenë duke marrë larg me të vërtetë shkrim 549 00:37:06,000 --> 00:37:09,000 kryeqyteti karakteri A dhe personazhi me të vogla a 550 00:37:09,000 --> 00:37:14,000 në disa nga këto zgjidhje dhe vendos probleme që ju keni qenë duke bërë. 551 00:37:14,000 --> 00:37:16,000 Një disa gjëra të tjera. 552 00:37:16,000 --> 00:37:25,000 Ne kemi marrë deklaratat, shprehje boolean, kushtet unazore, variablat dhe temat. 553 00:37:25,000 --> 00:37:29,000 >> Ata të gjithë duket për të bërë kuptim për pjesën më të madhe? 554 00:37:29,000 --> 00:37:35,000 Disa prej këtij terminologjisë është një shokuar pak në kohë. 555 00:37:35,000 --> 00:37:46,000 Më pëlqen të mendoj për një deklaratë si për diçka më pjesë që përfundon me një pikëpresje. 556 00:37:46,000 --> 00:37:51,000 Deklarata të tilla si x = 7, e cila përcakton një ndryshore, 557 00:37:51,000 --> 00:37:54,000 thirri me sa duket x = 7. 558 00:37:54,000 --> 00:38:01,000 Me sa duket x është gjithashtu një tip që mund të ruajë numrin 7, 559 00:38:01,000 --> 00:38:05,000 kështu që kjo është një int, ose ndoshta një float ose një të shkurtër apo një char, 560 00:38:05,000 --> 00:38:07,000 diçka të tillë. 561 00:38:07,000 --> 00:38:12,000 Një shprehje boolean është duke përdorur këto dyfishtë barabartë 562 00:38:12,000 --> 00:38:17,000 dhe zhurmë barabartë ose jo të barabartë, më pak se, më e madhe se, 563 00:38:17,000 --> 00:38:22,000 më pak se ose e barabartë me, të gjitha llojet e që stuff. 564 00:38:22,000 --> 00:38:28,000 Kushtet pastaj nëse janë deklarata tjetër. 565 00:38:28,000 --> 00:38:32,000 Unë do të mbani mend se ju nuk mund të ketë një tjetër pa një korresponduese, nëse. 566 00:38:32,000 --> 00:38:37,000 Gjithashtu, ju nuk mund të ketë një tjetër në qoftë se pa një korresponduese, nëse. 567 00:38:37,000 --> 00:38:40,000 Sythe, kujtojnë 3 llojet e sythe ne kemi qenë të përgatitur në ju 568 00:38:40,000 --> 00:38:43,000 për dy të fundit e seksioneve dhe vendos problematike. 569 00:38:43,000 --> 00:38:46,000 Përdorimi bëni ndërsa kur ju jeni duke marrë të dhëna përdoruesi, 570 00:38:46,000 --> 00:38:51,000 duke përdorur sythe, ndërsa deri në një gjendje të caktuar është e vërtetë, 571 00:38:51,000 --> 00:38:56,000 dhe pastaj duke përdorur ato për sythe në qoftë se keni nevojë për të 572 00:38:56,000 --> 00:39:01,000 e di që përsëritje e lak jeni aktualisht në është se si unë mendoj për këtë. 573 00:39:01,000 --> 00:39:07,000 Ose në qoftë se ju jeni duke bërë një për çdo karakter në një varg unë dua të bëj diçka, 574 00:39:07,000 --> 00:39:15,000 për çdo element në një grup unë dua të bëjë diçka për këtë element. 575 00:39:15,000 --> 00:39:18,000 >> Temat dhe ngjarjet. 576 00:39:18,000 --> 00:39:21,000 Këto ne nuk kemi mbuluar në mënyrë eksplicite në C, 577 00:39:21,000 --> 00:39:23,000 por mos harroni kjo nga e para. 578 00:39:23,000 --> 00:39:26,000 Ky është nocioni i pasur Scripts ndryshme. 579 00:39:26,000 --> 00:39:32,000 Kjo është edhe ky nocion të transmetimit një ngjarje. 580 00:39:32,000 --> 00:39:37,000 Disa njerëz nuk përdorin transmetimin në projektet e tyre në fillim, 581 00:39:37,000 --> 00:39:40,000 e cila është tërësisht e ftohtë, 582 00:39:40,000 --> 00:39:46,000 por këto janë 2 mënyra të ndryshme të trajtimit të kësaj çështjeje të madhe të quajtur konkurrencën, 583 00:39:46,000 --> 00:39:49,000 e cila është se si ju të merrni për të ekzekutuar programe 584 00:39:49,000 --> 00:39:54,000 ose në dukje të ekzekutuar në të njëjtën kohë? 585 00:39:54,000 --> 00:39:59,000 Detyrat e ndryshme të rrjedhshëm, ndërsa detyra të tjera janë gjithashtu running. 586 00:39:59,000 --> 00:40:01,000 Kjo është se si sistemi juaj operativ duket për të punuar. 587 00:40:01,000 --> 00:40:04,000 Kjo është arsyeja pse edhe pse, për shembull, 588 00:40:04,000 --> 00:40:10,000 Unë kam marrë drejtimin shfletuesin tim, unë gjithashtu mund të kthehet në Spotify dhe të luajë një këngë. 589 00:40:10,000 --> 00:40:14,000 Kjo është më shumë një gjë konceptuale për të kuptuar. 590 00:40:14,000 --> 00:40:17,000 Unë do të marrë një vështrim në temat shkurtër 591 00:40:17,000 --> 00:40:21,000 në qoftë se ju dëshironi të mësoni më shumë për këtë. 592 00:40:21,000 --> 00:40:26,000 >> Le të shohim, unë besoj se nuk mund të ketë qenë 593 00:40:26,000 --> 00:40:31,000 një problem për këtë në një nga këto. 594 00:40:31,000 --> 00:40:35,000 Përsëri, unë mendoj se temat dhe ngjarjet nuk janë diçka që ne do të mbulojë në C 595 00:40:35,000 --> 00:40:41,000 vetëm për shkak se ajo është shumë më e vështirë se sa në para. 596 00:40:41,000 --> 00:40:44,000 Ju nuk duhet të shqetësohen për atë atje, por patjetër të kuptuar konceptet, 597 00:40:44,000 --> 00:40:47,000 të kuptojnë se çfarë po ndodh. 598 00:40:47,000 --> 00:40:52,000 Para se ne shkojmë më, ndonjë pyetje në Javës 0 materiale? 599 00:40:52,000 --> 00:40:55,000 Gjithkush ndjenjë mjaft të mirë? 600 00:40:55,000 --> 00:41:03,000 Variablave të kuptuarit dhe çfarë është një variabël është? 601 00:41:03,000 --> 00:41:08,000 >> Lëvizin më. Java 1. 602 00:41:08,000 --> 00:41:12,000 Një disa gjëra këtu që nuk janë të mbuluara në veçanti 603 00:41:12,000 --> 00:41:21,000 në shqyrtimin quiz domosdoshmërisht dhe gjithashtu janë gjërat më konceptuale për të menduar rreth. 604 00:41:21,000 --> 00:41:30,000 E para është ky nocion i asaj kod burim, hartuesit dhe kodin objekt janë. 605 00:41:30,000 --> 00:41:32,000 Çdokush? Vasili. 606 00:41:32,000 --> 00:41:37,000 Është objekt Kodi-Unë do të thotë kodi burim është çfarë keni vënë në tingëllimë, 607 00:41:37,000 --> 00:41:42,000 dhe kodi objekti është ajo tingëllimë vë jashtë në mënyrë që kompjuteri juaj mund të lexoni programin. 608 00:41:42,000 --> 00:41:44,000 Saktësisht. 609 00:41:44,000 --> 00:41:47,000 Source code është kodi C që ju të vërtetë lloji deri. 610 00:41:47,000 --> 00:41:50,000 Kodi objekti është ajo që ju merrni nga tingëllimë. 611 00:41:50,000 --> 00:41:54,000 Është 0s dhe 1s në atë format binar. 612 00:41:54,000 --> 00:41:59,000 Atëherë ajo që ndodh është kur ju keni një bandë e dosjeve objekt, 613 00:41:59,000 --> 00:42:04,000 thonë se ju jeni hartimin e një projekt apo një program që përdor fotografi të shumta kod burim, 614 00:42:04,000 --> 00:42:09,000 të cilat nga Konventa janë dhënë extension. C file. 615 00:42:09,000 --> 00:42:13,000 Kjo është arsyeja pse ne kemi caesar.c, vigenère.c. 616 00:42:13,000 --> 00:42:18,000 Nëse jeni të shkruar programe Java ju jepni atyre extension. Java. 617 00:42:18,000 --> 00:42:24,000 Programet python kanë shtrirjen. Py shpesh. 618 00:42:24,000 --> 00:42:26,000 >> Një herë ju keni të shumta. Fotografi c, ju përpilojnë ato. 619 00:42:26,000 --> 00:42:29,000 Tingëllimë pështyn nga të gjitha junk këtë binar. 620 00:42:29,000 --> 00:42:33,000 Pastaj për shkak se ju doni vetëm 1 program 621 00:42:33,000 --> 00:42:37,000 ju keni lidhjen Linker të gjitha këto fotografi së bashku objekti 622 00:42:37,000 --> 00:42:40,000 1 në skedë të ekzekutueshme. 623 00:42:40,000 --> 00:42:45,000 Kjo është edhe ajo që ndodh kur ju përdorni bibliotekën CS50, për shembull. 624 00:42:45,000 --> 00:42:50,000 Biblioteka CS50 është edhe kjo. Fotografi h header 625 00:42:50,000 --> 00:42:53,000 që keni lexuar, se # includecs50.h. 626 00:42:53,000 --> 00:42:58,000 Dhe pastaj ajo është gjithashtu një bibliotekë të veçantë binar skedar 627 00:42:58,000 --> 00:43:02,000 që është hartuar që është 0s dhe 1s, 628 00:43:02,000 --> 00:43:08,000 dhe se-l flamuri, kështu që nëse ne do të shkojmë përsëri në hapësirat tona dhe ne shikojmë vërtetë shpejt 629 00:43:08,000 --> 00:43:11,000 Në çfarë po ndodh këtu, kur ne shikojmë në komandën tonë tingëllimë, 630 00:43:11,000 --> 00:43:15,000 ajo që ne kemi marrë është ky është kodi ynë source file drejtë këtu. 631 00:43:15,000 --> 00:43:18,000 Këto janë një bandë e flamujve përpiluesit. 632 00:43:18,000 --> 00:43:22,000 Dhe pastaj në fund, këto-l flamuj Lidhje në 633 00:43:22,000 --> 00:43:30,000 fotografi aktuale binare për këto 2 bibliotekat, bibliotekës CS50 dhe pastaj bibliotekës matematikë. 634 00:43:30,000 --> 00:43:35,000 >> Kuptimi çdo lloj qëllim dosjeve ' 635 00:43:35,000 --> 00:43:38,000 në procesin e hartimit është diçka që ju do të duan të jenë në gjendje të 636 00:43:38,000 --> 00:43:43,000 japin të paktën një pasqyrë të nivelit të lartë të. 637 00:43:43,000 --> 00:43:46,000 Source code vjen in Kodi Object vjen nga. 638 00:43:46,000 --> 00:43:53,000 Fotografi code object lidhin së bashku, dhe ju merrni një skedar të bukur, ekzekutues. 639 00:43:53,000 --> 00:43:55,000 Cool. 640 00:43:55,000 --> 00:43:58,000 Kjo është edhe ku ju mund të merrni gabime në pikat e shumta 641 00:43:58,000 --> 00:44:00,000 në procesin e hartimit. 642 00:44:00,000 --> 00:44:04,000 Kjo është ajo ku, për shembull, në qoftë se ju merrni këtë flamur që lidh, 643 00:44:04,000 --> 00:44:10,000 the CS50 flamuri, dhe ju heq atë në hapësirat ose kur ju jeni drejtimin kodin tuaj, 644 00:44:10,000 --> 00:44:13,000 kjo është ajo ku ju do të merrni një gabim në fazën e lidh, 645 00:44:13,000 --> 00:44:18,000 dhe linker do të thonë: "Hej, ju quajti një funksion getString 646 00:44:18,000 --> 00:44:20,000 që është në bibliotekën CS50 ". 647 00:44:20,000 --> 00:44:25,000 "Ju më tha se ishte në bibliotekë CS50, dhe unë nuk mund të gjejnë kodin për të." 648 00:44:25,000 --> 00:44:28,000 Kjo është ajo ku ju duhet të lidhë atë në, dhe kjo është e veçantë 649 00:44:28,000 --> 00:44:33,000 nga një gabim përpilues sepse përpiluesi është duke kërkuar në sintaksë dhe atë lloj stuff. 650 00:44:33,000 --> 00:44:38,000 Është mirë të dini se çfarë po ndodh kur. 651 00:44:38,000 --> 00:44:42,000 >> Gjëra të tjera të dini rreth. 652 00:44:42,000 --> 00:44:49,000 Unë do të thonë se ju patjetër duan të marrin një vështrim në të shkurtër në typecasting bërë nga Jordan 653 00:44:49,000 --> 00:44:55,000 për të kuptuar se çfarë ints janë nën kapuç, 654 00:44:55,000 --> 00:44:58,000 çfarë chars janë nën kapuç. 655 00:44:58,000 --> 00:45:02,000 Kur ne flasim për ASCII dhe ne fakt duken në tryezë ASCII, 656 00:45:02,000 --> 00:45:07,000 ajo që është bërë është duke na dhënë një vështrim nën kapuç 657 00:45:07,000 --> 00:45:13,000 se si kompjuteri në fakt paraqet kapitalin A dhe 7 shifra 658 00:45:13,000 --> 00:45:17,000 dhe një presje dhe një pikëpyetje. 659 00:45:17,000 --> 00:45:20,000 Kompjuteri gjithashtu ka mënyra të veçanta për të përfaqësuar 660 00:45:20,000 --> 00:45:23,000 Numri 7, si një numër të plotë. 661 00:45:23,000 --> 00:45:27,000 Ajo ka një mënyrë të veçantë për të përfaqësuar numrin 7 si një numër lundrues pikë, 662 00:45:27,000 --> 00:45:29,000 dhe ato janë shumë të ndryshme. 663 00:45:29,000 --> 00:45:32,000 Typecasting është se si ju tregoni kompjuteri "Hej, unë dua që ju të konvertohet 664 00:45:32,000 --> 00:45:37,000 nga një përfaqësim në një tjetër përfaqësim ". 665 00:45:37,000 --> 00:45:40,000 Pse nuk kemi marrë një vështrim në atë. 666 00:45:40,000 --> 00:45:44,000 >> Unë do të marrë një vështrim në të shkurtër në bibliotekat dhe të shkurtër në hartuesit. 667 00:45:44,000 --> 00:45:47,000 Ata flasin për procesin e hartimit, 668 00:45:47,000 --> 00:45:53,000 çfarë është një bibliotekë, dhe të shkoj për disa nga këto pyetje që ju mund të merrni kërkuar. 669 00:45:53,000 --> 00:45:55,000 Pyetjet në 1 Week materiale? 670 00:45:55,000 --> 00:46:03,000 A ka ndonjë çështje në këtu që të duket e frikshme që ju dëshironi për të mbuluar? 671 00:46:03,000 --> 00:46:07,000 Unë jam duke u përpjekur për të hedhur nëpër shumicën e këtyre temave më parë në mënyrë që ne mund të merrni për 672 00:46:07,000 --> 00:46:13,000 pointers dhe të bëjë një grimë të vogël të recursion. 673 00:46:13,000 --> 00:46:15,000 Mendime? 674 00:46:15,000 --> 00:46:19,000 Çdo gjë për të mbuluar? 675 00:46:19,000 --> 00:46:21,000 Koha për disa çokollatë ndoshta? 676 00:46:21,000 --> 00:46:23,000 Ju djema janë duke punuar nëpërmjet saj. 677 00:46:23,000 --> 00:46:26,000 Unë jam duke shkuar për të mbajtur sipping në kafe tim. 678 00:46:26,000 --> 00:46:31,000 Java 2. 679 00:46:31,000 --> 00:46:34,000 Thirrje të mira, thirrja e mirë. 680 00:46:34,000 --> 00:46:38,000 Në javën e 2, ne biseduam pak më shumë në lidhje me funksionet. 681 00:46:38,000 --> 00:46:43,000 >> Në vendos para problemeve pak nuk kemi me të vërtetë shkruani ndonjë funksion në të gjitha 682 00:46:43,000 --> 00:46:45,000 përveç që funksion? 683 00:46:45,000 --> 00:46:47,000 [Student] kryesore. >> Kryesore, pikërisht. 684 00:46:47,000 --> 00:46:51,000 Dhe kështu që ne kemi parë në kostume të ndryshme që kryesore vesh. 685 00:46:51,000 --> 00:46:54,000 Nuk është një në të cilën ajo nuk merr argumente, 686 00:46:54,000 --> 00:46:58,000 dhe ne vetëm të themi zbrazëti në mes të kllapa, 687 00:46:58,000 --> 00:47:01,000 dhe pastaj ka një tjetër ku ne do të duan të marrin argumente command line, 688 00:47:01,000 --> 00:47:08,000 dhe siç e pamë, kjo është ajo ku ju keni argc int dhe string koleksion argv 689 00:47:08,000 --> 00:47:13,000 apo tani që ne kemi ekspozuar string në fakt të jetë * char se është 690 00:47:13,000 --> 00:47:20,000 ne jemi duke shkuar për të filloni të shkruani atë si char * argv dhe pastaj kllapa. 691 00:47:20,000 --> 00:47:22,000 Në Set Problem 3, you guys pa një bandë e funksioneve, 692 00:47:22,000 --> 00:47:27,000 dhe ju zbatuar një bandë e funksioneve, barazim, shikoni lart ngjitem. 693 00:47:27,000 --> 00:47:31,000 Prototipa janë shkruar të gjithë atje për ju. 694 00:47:31,000 --> 00:47:33,000 >> Ajo që kam kërkuar për të biseduar rreth këtu me funksione të vërtetë shpejt 695 00:47:33,000 --> 00:47:38,000 është se ka 3 pjesë të tyre sa herë që ju shkruani një funksion. 696 00:47:38,000 --> 00:47:43,000 Ju duhet të specifikoni llojin e kthimit të funksionit. 697 00:47:43,000 --> 00:47:46,000 Ju duhet të specifikoni një emër për funksionin, dhe pastaj ju duhet të specifikojë 698 00:47:46,000 --> 00:47:51,000 lista argumenti ose lista parametri. 699 00:47:51,000 --> 00:47:57,000 Për shembull, në qoftë se unë do të shkruaj një funksion për të përmbledhur një bandë e integers 700 00:47:57,000 --> 00:48:03,000 dhe pastaj të kthehen tek unë shumën çfarë do të jetë tipi im kthim 701 00:48:03,000 --> 00:48:06,000 nëse kam kërkuar për të përmbledhur integers dhe pastaj kthehen shumë? 702 00:48:06,000 --> 00:48:12,000 Atëherë emri i funksionit. 703 00:48:12,000 --> 00:48:27,000 Nëse unë shkoj përpara dhe të shkruani në të gjelbër, kjo pjesë është lloji kthimit. 704 00:48:27,000 --> 00:48:34,000 Kjo pjesë është emri. 705 00:48:34,000 --> 00:48:40,000 Dhe pastaj në mes të kllapa 706 00:48:40,000 --> 00:48:46,000 është vendi ku unë jap argumentet, 707 00:48:46,000 --> 00:48:56,000 shpesh shkurtuar si args, ndonjëherë i quajtur params per parametrave. 708 00:48:56,000 --> 00:49:00,000 Dhe në qoftë se ju keni një, ju vetëm specifikoni një. 709 00:49:00,000 --> 00:49:06,000 Nëse ju keni të shumta që ju ndajë secili prej tyre me një presje. 710 00:49:06,000 --> 00:49:13,000 Dhe për çdo argument të ju jap 2 gjëra që janë-Kevin? 711 00:49:13,000 --> 00:49:18,000 [Kevin] Ju duhet të jepni llojin dhe pastaj emrin. 712 00:49:18,000 --> 00:49:21,000 Dhe pastaj emrin dhe emrin është emri që ju jeni do të përdorin 713 00:49:21,000 --> 00:49:25,000 për t'iu referuar atij argumentit brenda funksionit shuma, 714 00:49:25,000 --> 00:49:27,000 brenda funksionit që ju jeni duke shkruar. 715 00:49:27,000 --> 00:49:32,000 >> Ju nuk keni për të-për shembull, në qoftë se unë jam duke shkuar për të përmbledhur, 716 00:49:32,000 --> 00:49:41,000 thonë se, një grup i integers-we'll bëjë array int, 717 00:49:41,000 --> 00:49:46,000 dhe unë do të jap vetes disa formatimin e teksteve kaçurrel ka- 718 00:49:46,000 --> 00:49:51,000 atëherë kur të kalojë një koleksion në funksion shuma 719 00:49:51,000 --> 00:49:55,000 Kam kalojë atë në pozicionin e parë e lista argumentit. 720 00:49:55,000 --> 00:49:59,000 Por array që unë të kalojë në nuk duhet të ketë arr emrin. 721 00:49:59,000 --> 00:50:07,000 Arr do të jetë si unë i referohen atij argumentit brenda trupit të funksionit. 722 00:50:07,000 --> 00:50:10,000 Gjë tjetër që ne duhet të marrë parasysh, 723 00:50:10,000 --> 00:50:14,000 dhe kjo është paksa e ndryshme nga funksionet, por unë mendoj se është një pikë e rëndësishme, 724 00:50:14,000 --> 00:50:20,000 është se në C, kur unë jam duke shkruar një funksion si kjo 725 00:50:20,000 --> 00:50:29,000 si mund ta di se sa elemente janë në këtë grup? 726 00:50:29,000 --> 00:50:31,000 Kjo është disi e një pyetje mashtrim. 727 00:50:31,000 --> 00:50:35,000 Ne biseduam në lidhje me këtë pak në seksionin e javës së kaluar. 728 00:50:35,000 --> 00:50:40,000 Si mund ta dini numrin e elementeve brenda një koleksion në C? 729 00:50:40,000 --> 00:50:44,000 A ka ndonjë mënyrë? 730 00:50:44,000 --> 00:50:49,000 >> Ajo rezulton se nuk ka asnjë mënyrë për të ditur. 731 00:50:49,000 --> 00:50:52,000 Ju duhet të kalojë atë në vete. 732 00:50:52,000 --> 00:50:55,000 Nuk është një mashtrim që ju mund të bëni 733 00:50:55,000 --> 00:51:00,000 nëse jeni në të njëjtin funksion në të cilin grup ka qenë deklaruar, 734 00:51:00,000 --> 00:51:04,000 dhe ju jeni duke punuar me një grup të rafte. 735 00:51:04,000 --> 00:51:06,000 Por kjo funksionon vetëm nëse ju jeni në të njëjtin funksion. 736 00:51:06,000 --> 00:51:09,000 Sapo ju të kalojë një koleksion në një tjetër funksion, ose në qoftë se ju keni deklaruar një grup 737 00:51:09,000 --> 00:51:12,000 dhe ju vënë atë grup në grumbull, ju keni përdorur malloc 738 00:51:12,000 --> 00:51:15,000  dhe se lloj i stuff, atëherë të gjitha bastet janë jashtë. 739 00:51:15,000 --> 00:51:18,000 Pastaj ju të vërtetë duhet të kalojnë nëpër 740 00:51:18,000 --> 00:51:21,000 një argument të veçantë ose në një tjetër parametër 741 00:51:21,000 --> 00:51:23,000 ju thënë se sa e madhe është array. 742 00:51:23,000 --> 00:51:28,000 Në këtë rast, unë do të duan të përdorin një presje-Jam keq, ajo që po ndodh jashtë ekranit këtu- 743 00:51:28,000 --> 00:51:32,000 dhe unë do të kalojë në një tjetër argument i 744 00:51:32,000 --> 00:51:40,000  dhe e quajti atë len int për gjatësi. 745 00:51:40,000 --> 00:51:44,000 >> Një gjë që mund të vijë deri në quiz 746 00:51:44,000 --> 00:51:49,000 është duke i kërkuar që ju të shkruani apo të zbatojë një funksion të veçantë të quajtur diçka. 747 00:51:49,000 --> 00:51:54,000 Nëse ne nuk do të ju japin prototip, kështu që kjo gjë të tërë këtu, 748 00:51:54,000 --> 00:51:58,000 kjo rrëmujë e tërë quhet deklaratë funksion apo prototip funksion, 749 00:51:58,000 --> 00:52:01,000 kjo është një nga gjërat e para që ju do të dëshironi të shtie në dorë në qoftë se ajo nuk është dhënë 750 00:52:01,000 --> 00:52:03,000 për ju menjëherë në quiz. 751 00:52:03,000 --> 00:52:06,000 Mashtrim tjetër që unë kam mësuar është se 752 00:52:06,000 --> 00:52:11,000 thonë se ne bëjmë të ju jap një prototip për një funksion, dhe ne themi, "Hej, ju keni marrë për të shkruar atë." 753 00:52:11,000 --> 00:52:16,000 Brenda formatimin e teksteve kaçurrel që ju keni në quiz 754 00:52:16,000 --> 00:52:20,000 nëse vëreni se ka një lloj kthimi dhe vëreni se lloji kthimi 755 00:52:20,000 --> 00:52:25,000 është diçka tjetër përveç zbrazëti, që do të thotë se funksioni nuk ka kthim asgjë, 756 00:52:25,000 --> 00:52:28,000 atëherë një gjë që ju patjetër doni të bëni është të shkruani 757 00:52:28,000 --> 00:52:33,000 disa lloj deklarate kthimit në fund të funksionit. 758 00:52:33,000 --> 00:52:40,000 Kthimit, dhe në këtë rast, ne do të vënë një bosh, sepse ne duam që të plotësoni në bosh. 759 00:52:40,000 --> 00:52:44,000 Por kjo ju merr duke menduar në mënyrë të drejtë në lidhje me mënyrën se si jam unë do t'i qasen këtij problemi? 760 00:52:44,000 --> 00:52:49,000 Dhe kjo ju kujton se ju jeni do të duhet të kthehen një vlerë 761 00:52:49,000 --> 00:52:51,000 tek thirrësi e funksionit. 762 00:52:51,000 --> 00:52:54,000 >> Po. >> [Student] A Stili aplikohet kur ne jemi duke shkruar kodin në quiz? 763 00:52:54,000 --> 00:52:58,000 Të tilla si vulë dhe këtë lloj të stuff? >> [Student] Yeah. 764 00:52:58,000 --> 00:53:00,000 Jo jo, sa më shumë. 765 00:53:00,000 --> 00:53:09,000 Unë mendoj se një shumë e-kjo është diçka që ne do të qartësojë në quiz në ditën e, 766 00:53:09,000 --> 00:53:15,000 por zakonisht shqetësuese në lidhje me # përfshin dhe se lloj i stuff, kjo është lloj i jashtë. 767 00:53:15,000 --> 00:53:17,000 [Student] A keni nevojë për të komentuar kodin tuaj shkruar me dorë? 768 00:53:17,000 --> 00:53:19,000 A keni nevojë për të komentuar kodin tuaj shkruar me dorë? 769 00:53:19,000 --> 00:53:24,000 Duke komentuar është gjithmonë e mirë nëse ju jeni të shqetësuar në lidhje me kredi të pjesshme 770 00:53:24,000 --> 00:53:29,000 apo doni të komunikoni synimin tuaj për grader. 771 00:53:29,000 --> 00:53:33,000 Por unë, përsëri, do të sqarojë në quiz vetë dhe në ditën quiz, 772 00:53:33,000 --> 00:53:39,000 por unë nuk besoj se ju do të kërkohet për të shkruar komente, nr. 773 00:53:39,000 --> 00:53:42,000 Zakonisht jo, por kjo është padyshim gjë e tillë ku 774 00:53:42,000 --> 00:53:45,000 ju mund të komunikojnë qëllimin tuaj, si "Hej, ky është vendi ku unë jam duke shkuar me të." 775 00:53:45,000 --> 00:53:49,000 Dhe nganjëherë kjo mund të ndihmojë me kredi të pjesshme. 776 00:53:49,000 --> 00:53:51,000 Cool. 777 00:53:51,000 --> 00:53:53,000 >> Vasili. 778 00:53:53,000 --> 00:53:56,000 [Basil] Çfarë është dallimi në mes të deklaruar, të themi, int Lang 779 00:53:56,000 --> 00:54:03,000 në argumentet apo parametrat kundrejt deklaruar një ndryshore brenda funksionit? 780 00:54:03,000 --> 00:54:05,000 Wow, kafe shkoi poshtë laring. 781 00:54:05,000 --> 00:54:07,000 [Basil] Ashtu që gjërat që ne duam të vënë në argumente. 782 00:54:07,000 --> 00:54:09,000 Po, kjo është një pyetje e madhe. 783 00:54:09,000 --> 00:54:11,000 Si mund të zgjidhni atë që ju doni të vënë në argumentet 784 00:54:11,000 --> 00:54:17,000 kundrejt çfarë gjëra që ju duhet të bëni në brendësi të funksionit? 785 00:54:17,000 --> 00:54:24,000 Në këtë rast kemi të përfshira të dyja këto si argumente 786 00:54:24,000 --> 00:54:29,000 sepse ata janë diçka që kushdo që do të përdorin funksionin shuma 787 00:54:29,000 --> 00:54:32,000 duhet të specifikojë ato gjëra. 788 00:54:32,000 --> 00:54:35,000 >> Funksioni Shuma, si kemi biseduar rreth, nuk ka asnjë mënyrë për të ditur 789 00:54:35,000 --> 00:54:40,000 sa e madhe është ajo array merr nga thirrësit e saj, ose kush është duke përdorur funksionin shuma. 790 00:54:40,000 --> 00:54:44,000 Ajo nuk ka asnjë mënyrë për të ditur se sa e madhe është se array. 791 00:54:44,000 --> 00:54:48,000 Arsyeja që ne të kalojë në këtë gjatësi të drejtë këtu si argument 792 00:54:48,000 --> 00:54:51,000 është për shkak se kjo është diçka që ne jemi në thelb thënë thirrësi të funksionit, 793 00:54:51,000 --> 00:54:55,000 kushdo që do të përdorin funksionin shuma, "Hej, jo vetëm që ju keni për të na dhënë një sërë 794 00:54:55,000 --> 00:54:59,000 e ints, ju gjithashtu duhet të na tregoni se sa e madhe array që na keni dhënë është. " 795 00:54:59,000 --> 00:55:03,000 [Basil] Ata do të jenë të dyja argumentet command line? 796 00:55:03,000 --> 00:55:06,000 Jo, këto janë argumentet aktuale që ju do të kalojnë në funksion. 797 00:55:06,000 --> 00:55:10,000 >> Më lejoni të bëjë një faqe të re këtu. 798 00:55:10,000 --> 00:55:13,000 [Basil] Si emri do të kalojë- 799 00:55:13,000 --> 00:55:24,000 [Nate H.] Nëse unë kam int kryesor (i pavlefshëm), 800 00:55:24,000 --> 00:55:27,000 dhe unë jam duke shkuar për të vënë në 0 time kthimit këtu poshtë në pjesën e poshtme, 801 00:55:27,000 --> 00:55:31,000 dhe thonë se unë dua të thirrur funksionin shuma. 802 00:55:31,000 --> 00:55:42,000 Unë dua të them int x = Shuma (); 803 00:55:42,000 --> 00:55:46,000 Për të përdorur funksionin shuma duhet të kalojë në të dy grup që unë do të duan për të përmbledhur 804 00:55:46,000 --> 00:55:51,000 dhe gjatësia e vektorit, kështu që kjo është ku 805 00:55:51,000 --> 00:55:54,000 supozuar kam pasur një grup të ints, 806 00:55:54,000 --> 00:56:12,000 thonë pata int numbaz [] = 1, 2, 3, 807 00:56:12,000 --> 00:56:16,000 lloji i përdorimit që hacked deri sintaksë të drejtë atje, 808 00:56:16,000 --> 00:56:21,000 atëherë çfarë do të bëj është në shumën unë do të duan të kalojnë në 809 00:56:21,000 --> 00:56:27,000 dyja numbaz dhe numri 3 810 00:56:27,000 --> 00:56:30,000 për të treguar funksionin shuma "Mirë, këtu është array Unë dua që ju të përmbledhur." 811 00:56:30,000 --> 00:56:34,000 "Këtu është madhësia e tij." 812 00:56:34,000 --> 00:56:39,000 Bën që të bëjnë kuptim? Bën që të përgjigjem pyetjes tuaj? 813 00:56:39,000 --> 00:56:42,000 >> Në shumë mënyra kjo nuk paralelisht atë që ne jemi duke bërë me kryesore 814 00:56:42,000 --> 00:56:44,000 kur ne kemi argumente command line. 815 00:56:44,000 --> 00:56:47,000 Një program si Caesar shifër, për shembull, se e nevojshme 816 00:56:47,000 --> 00:56:53,000 argumente command line nuk do të jetë në gjendje të bëjë asgjë. 817 00:56:53,000 --> 00:56:57,000 Kjo nuk do të dinë se si për të encrypt në qoftë se ju nuk e tregoni atë se çfarë kyç për të përdorur 818 00:56:57,000 --> 00:57:03,000 ose në qoftë se ju nuk e tregoni atë se çfarë string ju kërkuar për të encrypt. 819 00:57:03,000 --> 00:57:08,000 Bërë për të dhëna, ky është vendi ku ne kemi marrë 2 mekanizma të ndryshëm 820 00:57:08,000 --> 00:57:14,000 për të marrë të dhëna në nga përdoruesit, për të marrë informacion në nga përdoruesit. 821 00:57:14,000 --> 00:57:19,000 Për Problem Set 1 pamë këtë GetInt, getString rrugë, GetFloat 822 00:57:19,000 --> 00:57:26,000 e bërë për të dhëna, dhe që është quajtur përdorur lumë standarde input. 823 00:57:26,000 --> 00:57:28,000 Kjo është pak më ndryshe. 824 00:57:28,000 --> 00:57:31,000 Kjo është diçka që ju mund të bëni në një kohë në krahasim me 825 00:57:31,000 --> 00:57:35,000 kur ju kërkoj programin, kur ju filloni programi running. 826 00:57:35,000 --> 00:57:41,000 Argumentet command line të gjithë janë të specifikuara, kur ju filloni running program. 827 00:57:41,000 --> 00:57:47,000 Ne kemi qenë përzierja e dy prej atyre. 828 00:57:47,000 --> 00:57:52,000 Kur ne përdorim argumente për një funksion, kjo është më shumë si argumente command line në kryesore. 829 00:57:52,000 --> 00:57:56,000 Kjo është kur ju kërkoj funksionin që ju duhet të tregoni atë 830 00:57:56,000 --> 00:58:05,000 çfarë saktësisht ajo ka nevojë në mënyrë që të kryejnë detyrat e veta. 831 00:58:05,000 --> 00:58:08,000 Një tjetër gjë e mirë për të parë dhe unë do të ju lejojnë të shikoni në atë në kohën tuaj rezervë, 832 00:58:08,000 --> 00:58:11,000 dhe ajo ishte e mbuluar në quiz-ishte ky nocion i fushës 833 00:58:11,000 --> 00:58:15,000 dhe variablave lokale kundrejt variablave globale. 834 00:58:15,000 --> 00:58:18,000 A i kushtoj vëmendje për këtë. 835 00:58:18,000 --> 00:58:23,000 >> Tani që ne jemi duke marrë për gjëra të tjera për këtë, 836 00:58:23,000 --> 00:58:27,000 në Javën e 3 ne kemi filluar duke folur në lidhje me kërkimin dhe klasifikim. 837 00:58:27,000 --> 00:58:32,000 Kerkuar dhe sorting, të paktën në CS50, 838 00:58:32,000 --> 00:58:39,000 është shumë e një hyrje në disa nga pjesët më teorike të shkencës kompjuterike. 839 00:58:39,000 --> 00:58:42,000 Problemi i kërkimit, problemi i sorting 840 00:58:42,000 --> 00:58:46,000 janë të mëdha, problemet kanonike. 841 00:58:46,000 --> 00:58:52,000 Si mund të gjeni një numër të veçantë në një rrjet të integers miliarda? 842 00:58:52,000 --> 00:58:55,000 Si mund të gjeni një emër të veçantë brenda një libër telefoni 843 00:58:55,000 --> 00:58:59,000 që është ruajtur në laptop? 844 00:58:59,000 --> 00:59:04,000 Dhe kështu që ne të futur këtë nocion të drejtuara herë asymptotic 845 00:59:04,000 --> 00:59:11,000 me të vërtetë të matur se sa kohë, sa e vështirë këto janë problemi, 846 00:59:11,000 --> 00:59:14,000 sa kohë ata e marrin për të zgjidhur. 847 00:59:14,000 --> 00:59:20,000 Në, unë besoj, quiz 2011 e ka një problem që unë mendoj se meriton 848 00:59:20,000 --> 00:59:27,000 mbulon shumë shpejt, e cila është kjo, problemi 12. 849 00:59:27,000 --> 00:59:32,000 O jo, kjo është Omega. 850 00:59:32,000 --> 00:59:41,000 >> Këtu ne jemi duke folur në lidhje me kohën më të shpejtë të mundshme drejtuar 851 00:59:41,000 --> 00:59:46,000 për një algoritmi të caktuar dhe pastaj koha slowest të jetë e mundur drejtuar. 852 00:59:46,000 --> 00:59:52,000 Kjo Omega dhe o janë me të vërtetë vetëm shkurtore. 853 00:59:52,000 --> 00:59:55,000 Ata janë shkurtesat notational për të thënë 854 00:59:55,000 --> 00:59:59,000 sa shpejt në rastin më të mirë të mundshme do të kandidojë tonë algorithm, 855 00:59:59,000 --> 01:00:06,000 dhe si i ngadalshëm në rastin më të keq të mundshëm do të algorithm tonë drejtuar? 856 01:00:06,000 --> 01:00:10,000 Le të bëjmë një çift nga këto, dhe këto janë gjithashtu të mbuluara 857 01:00:10,000 --> 01:00:13,000 në të shkurtër në simbol asymptotic, të cilën unë rekomandoj. 858 01:00:13,000 --> 01:00:17,000 Jackson bëri një punë vërtet të mirë. 859 01:00:17,000 --> 01:00:23,000 Me kërkimin binar, ne flasim për kërkimin binar si të qenit një algoritmi, 860 01:00:23,000 --> 01:00:28,000 dhe ne zakonisht flasin për atë në drejtim të saj e madhe O. 861 01:00:28,000 --> 01:00:30,000 Çfarë është e madhe o? 862 01:00:30,000 --> 01:00:34,000 Çfarë është koha të drejtuar slowest të jetë e mundur të kërkimit binar? 863 01:00:34,000 --> 01:00:36,000 [Student] N ²? 864 01:00:36,000 --> 01:00:41,000 Afër, unë mendoj të ngjashme me këtë. 865 01:00:41,000 --> 01:00:43,000 Kjo është një shumë më shpejt se kaq. 866 01:00:43,000 --> 01:00:45,000 [Student] Binary? >> Po, kërko binar. 867 01:00:45,000 --> 01:00:47,000 [Student] Është log n. 868 01:00:47,000 --> 01:00:49,000 Hyni n, kështu që çfarë do të thotë të hyni n? 869 01:00:49,000 --> 01:00:51,000 Ajo gjysmave atë çdo përsëritje. 870 01:00:51,000 --> 01:00:56,000 Pikërisht, kështu që në rastin slowest të jetë e mundur, 871 01:00:56,000 --> 01:01:00,000 thonë se në qoftë se ju keni një koleksion të renditura 872 01:01:00,000 --> 01:01:08,000 e një milion integers dhe numri që ju jeni duke kërkuar për 873 01:01:08,000 --> 01:01:14,000 është ose elementi i parë në rrjet ose element shumë i fundit në grup. 874 01:01:14,000 --> 01:01:18,000 Mos harroni, algorithm kërko binar punon duke shikuar në elementin e mesme, 875 01:01:18,000 --> 01:01:21,000 shohim nëse kjo është ndeshja që ju jeni duke kërkuar për të. 876 01:01:21,000 --> 01:01:23,000 Nëse është, atëherë i madh, keni gjetur atë. 877 01:01:23,000 --> 01:01:27,000 >> Në rastin më të mirë të mundshme, sa shpejt e bën të kandidojë kërkimit binar? 878 01:01:27,000 --> 01:01:29,000 [Studentët] 1. 879 01:01:29,000 --> 01:01:32,000 1, është koha të vazhdueshme, të mëdha o 1. Po. 880 01:01:32,000 --> 01:01:36,000 [Student] Unë kam një pyetje. Kur ju thonë të hyni n, do të thotë në lidhje me bazën 2, e drejtë? 881 01:01:36,000 --> 01:01:40,000 Po, kështu që kjo është gjë tjetër. 882 01:01:40,000 --> 01:01:44,000 Ne themi n log, dhe unë mendoj kur isha në shkollë të mesme 883 01:01:44,000 --> 01:01:48,000 Unë gjithmonë supozohet se ishte log bazë 10. 884 01:01:48,000 --> 01:01:57,000 Yeah, kështu që po, hyni 2 Baza zakonisht është ajo që ne përdorim. 885 01:01:57,000 --> 01:02:02,000 Përsëri, duke shkuar prapa në kërkim binar, nëse ju jeni në kërkim për ose 886 01:02:02,000 --> 01:02:05,000 elementi në fund, ose elementi në fillim, 887 01:02:05,000 --> 01:02:08,000 sepse ju filloni në mes dhe pastaj ju hidhni 888 01:02:08,000 --> 01:02:13,000 cilado gjysma nuk i plotëson kriteret që ju jeni duke kërkuar për, 889 01:02:13,000 --> 01:02:15,000 dhe ju shkoni në gjysmën tjetër dhe gjysmën tjetër dhe në gjysmën tjetër. 890 01:02:15,000 --> 01:02:19,000 Nëse unë jam duke kërkuar për elementin më të madh në rrjet milion integer 891 01:02:19,000 --> 01:02:25,000 Unë jam duke shkuar për të përgjysmojë atë në log më të madhe të 1 milion herë 892 01:02:25,000 --> 01:02:28,000 para se në fund të provuar dhe të shohim se elementi unë jam duke kërkuar për 893 01:02:28,000 --> 01:02:33,000 është në i madh ose në indeksin më të lartë të array, 894 01:02:33,000 --> 01:02:38,000 dhe që do të marrë të log n, hyni prej 1 milion herë. 895 01:02:38,000 --> 01:02:40,000 >> Lloj Bubble. 896 01:02:40,000 --> 01:02:43,000 A ju djema kujtohet algoritmin e renditjes flluskë? 897 01:02:43,000 --> 01:02:47,000 Kevin, ju mund të jepni një përmbledhje të shpejtë të asaj që ndodhi në algorithm lloj flluskë? 898 01:02:47,000 --> 01:02:50,000 [Kevin] Në thelb ajo shkon përmes gjithçka në listë. 899 01:02:50,000 --> 01:02:52,000 Ajo duket në dy të parat. 900 01:02:52,000 --> 01:02:55,000 Nëse e para është më e madhe se ajo e dytë ajo këmbime tyre. 901 01:02:55,000 --> 01:02:58,000 Pastaj ai krahason dytë dhe të tretë, të njëjtën gjë, këmbime, 902 01:02:58,000 --> 01:03:00,000 tretë dhe të katërt, të gjithë rrugën poshtë. 903 01:03:00,000 --> 01:03:03,000 Numrat më të mëdha do të ndjekin deri në fund. 904 01:03:03,000 --> 01:03:07,000 Dhe pas sythe megjithatë shumë ju jeni bërë. 905 01:03:07,000 --> 01:03:11,000 Pikërisht, kështu që çfarë Kevin thënë është se ne do të shikojnë numrat mëdha 906 01:03:11,000 --> 01:03:15,000 flluskë deri tek fundi i vektorit. 907 01:03:15,000 --> 01:03:19,000 Për shembull, a keni mendje duke ecur ne nëpërmjet këtë shembull nëse kjo është array tonë? 908 01:03:19,000 --> 01:03:21,000 [Kevin] Ju do të merrni 2 dhe 3. 909 01:03:21,000 --> 01:03:23,000 3 është më e madhe se 2, kështu që ju bie në ujdi tyre. 910 01:03:23,000 --> 01:03:29,000 [Nate H.] E drejta, kështu që ne swap këto, dhe kështu që ne të merrni 2, 3, 6, 4 dhe 9. 911 01:03:29,000 --> 01:03:31,000 [Kevin] Pastaj ju krahasoni 3 dhe 6. 912 01:03:31,000 --> 01:03:33,000 3 është më e vogël se 6, kështu që ju lënë ato, 913 01:03:33,000 --> 01:03:37,000 dhe 6 dhe 4, ju do të bie në ujdi tyre, sepse është më i vogël se 4 6. 914 01:03:37,000 --> 01:03:42,000 [Nate H.] E drejta, kështu që unë të marrë 2, 3, 4, 6, 9. 915 01:03:42,000 --> 01:03:46,000 [Kevin] Dhe 9 është më e madhe se 6, kështu që ju lënë atë. 916 01:03:46,000 --> 01:03:48,000 Dhe ju do të kthehet nëpër atë përsëri. 917 01:03:48,000 --> 01:03:50,000 >> [Nate H.] Am kam bërë në këtë pikë? >> [Kevin] Nr 918 01:03:50,000 --> 01:03:52,000 Dhe pse nuk jam bërë unë në këtë pikë? 919 01:03:52,000 --> 01:03:54,000 Sepse ajo duket si grup ime është e renditura. Unë jam duke kërkuar në të. 920 01:03:54,000 --> 01:03:57,000 [Kevin] Shko nëpër atë përsëri dhe sigurohuni që nuk ka më këmbime 921 01:03:57,000 --> 01:04:00,000 para se të mund plotësisht të ndaluar. 922 01:04:00,000 --> 01:04:04,000 Pikërisht, kështu që ju duhet të mbani duke shkuar nëpër dhe të sigurohemi se nuk ka këmbime 923 01:04:04,000 --> 01:04:06,000 që ju mund të bëni në këtë pikë. 924 01:04:06,000 --> 01:04:08,000 Ajo ishte me të vërtetë vetëm fat, si ju tha, se ne fund deri 925 01:04:08,000 --> 01:04:12,000 vetëm që ka të bëjë 1 kalojë përmes dhe ne jemi të renditura. 926 01:04:12,000 --> 01:04:16,000 Por për të bërë këtë në rastin e përgjithshëm në fakt ne do të duhet ta bëjnë këtë mbi dhe mbi përsëri. 927 01:04:16,000 --> 01:04:20,000 Dhe në fakt, kjo ishte një shembull i rastit më të mirë të mundshme, 928 01:04:20,000 --> 01:04:24,000 ashtu siç e pamë në problem. 929 01:04:24,000 --> 01:04:28,000 Ne pamë se rasti mirë të mundshme u n. 930 01:04:28,000 --> 01:04:32,000 Ne shkuam nëpër kohë array 1. 931 01:04:32,000 --> 01:04:35,000 Cila është rasti keqe e mundshme për këtë algorithm? 932 01:04:35,000 --> 01:04:37,000 [Kevin] N ². 933 01:04:37,000 --> 01:04:41,000 Dhe çfarë bën që të duken si? Çfarë do një vështrim grup si kjo do të marrë kohë n ²? 934 01:04:41,000 --> 01:04:43,000 [Kevin] [padëgjueshme] renditura. 935 01:04:43,000 --> 01:04:51,000 Pikërisht, kështu që nëse kam pasur koleksion 9, 7, 6, 5, 2, 936 01:04:51,000 --> 01:04:54,000 e parë që do të 9 flluskë gjithë rrugën deri. 937 01:04:54,000 --> 01:04:59,000 Pas 1 përsëritje, ne do të kemi 7, 6, 5, 2, 9. 938 01:04:59,000 --> 01:05:07,000 Atëherë 7 do flluskoj lart, 6, 5, 2, 7, 9, dhe kështu mbi dhe kështu radhë. 939 01:05:07,000 --> 01:05:13,000 >> Ne do të duhet të kalojnë nëpër të gjithë grup n herë, 940 01:05:13,000 --> 01:05:16,000 dhe ju në fakt mund të merrni pak më të saktë se kjo 941 01:05:16,000 --> 01:05:23,000 sepse një herë ne kemi lëvizur 9 të gjithë rrugën deri në pozicionin e tij të fundit të mundshme 942 01:05:23,000 --> 01:05:26,000 ne e dimë që ne kurrë nuk duhet të krahasohen kundër atij elementi përsëri. 943 01:05:26,000 --> 01:05:29,000 Sapo ne fillojmë bubbling deri në 7 944 01:05:29,000 --> 01:05:35,000 ne e dimë që ne mund të ndalojë herë 7 është e drejtë para 9 945 01:05:35,000 --> 01:05:37,000 pasi ne kemi krahasuar tashmë 9 për të. 946 01:05:37,000 --> 01:05:46,000 Nëse ju bëni këtë në një mënyrë të zgjuar kjo nuk është me të vërtetë, unë mendoj, se sa kohë. 947 01:05:46,000 --> 01:05:49,000 Ju nuk jeni do të krahasohen të gjitha të mundshme [e padëgjueshme] kombinimet 948 01:05:49,000 --> 01:05:55,000 çdo herë të vetme që ju të shkoni nëpër çdo përsëritje. 949 01:05:55,000 --> 01:05:59,000 Por ende, kur flasim për këtë sipërme detyruar të themi se 950 01:05:59,000 --> 01:06:04,000 ju jeni duke kërkuar në n ² krahasime të gjithë rrugën nëpër. 951 01:06:04,000 --> 01:06:12,000 >> Le të kthehemi, dhe që ne jemi duke filluar për të marrë një pak të shkurtër në kohë 952 01:06:12,000 --> 01:06:15,000 Unë do të thonë se ju duhet patjetër të kalojnë nëpër pjesën tjetër të kësaj tabele, 953 01:06:15,000 --> 01:06:17,000 plotësoni të gjitha jashtë. 954 01:06:17,000 --> 01:06:20,000 Mendoni për shembuj. Mendoni për shembuj konkretë. 955 01:06:20,000 --> 01:06:22,000 Kjo është me të vërtetë i dobishëm dhe të dobishme për të bërë. 956 01:06:22,000 --> 01:06:25,000 Tërheqë atë jashtë. 957 01:06:25,000 --> 01:06:28,000 Kjo është lloj i tabelës se si ju shkoni nëpër në shkenca kompjuterike 958 01:06:28,000 --> 01:06:32,000 ju duhet të vërtetë të fillojë të dini këto zemrën nga. 959 01:06:32,000 --> 01:06:34,000 Këto janë llojet e pyetjeve që ju të merrni në intervista. 960 01:06:34,000 --> 01:06:36,000 Këto janë llojet e gjërave që janë të mira për të dini, 961 01:06:36,000 --> 01:06:41,000 dhe të mendojnë për ato raste buzë, me të vërtetë duke parafytyruar se si të mendojnë për 962 01:06:41,000 --> 01:06:45,000 duke e ditur se për flluskë lloj array keqe të mundshme 963 01:06:45,000 --> 01:06:52,000 për të zgjidhur me këtë është ai që është në mënyrë të kundërt. 964 01:06:52,000 --> 01:06:58,000 >> Pointers. Le të flasim pak për pointers. 965 01:06:58,000 --> 01:07:03,000 Në minutat e fundit, ne kemi këtu 966 01:07:03,000 --> 01:07:11,000 E di që kjo është diçka së bashku me dosjen e I / O se është mjaft e re. 967 01:07:11,000 --> 01:07:19,000 Kur ne flasim për pointers arsye ne duam të flasim për pointers 968 01:07:19,000 --> 01:07:24,000 është për shkak se, një, kur ne jemi duke punuar në C 969 01:07:24,000 --> 01:07:33,000 ne jemi me të vërtetë në një nivel mjaft të ulët në krahasim me gjuhët e programimit më moderne. 970 01:07:33,000 --> 01:07:38,000 Ne jemi aktualisht në gjendje për të manipuluar variablave në kujtesë, 971 01:07:38,000 --> 01:07:43,000 kuptoj se ku ata janë të vendosura në të vërtetë brenda RAM tonë. 972 01:07:43,000 --> 01:07:46,000 Pasi të keni shkuar për të marrë klasat e sistemit operativ ju do të shihni 973 01:07:46,000 --> 01:07:48,000 se kjo është, përsëri, një lloj i abstraksionit. 974 01:07:48,000 --> 01:07:50,000 Kjo nuk është e vërtetë rasti. 975 01:07:50,000 --> 01:07:52,000 Ne kemi marrë kujtesës virtuale që është fshehur ato detaje nga ne. 976 01:07:52,000 --> 01:07:58,000 >> Por tani për tani ju mund të supozojmë se kur ju keni një program, 977 01:07:58,000 --> 01:08:02,000 për shembull, kur ju filloni drejtimin e Cezarit programin tuaj, shifër 978 01:08:02,000 --> 01:08:06,000 Unë do të kaloni përsëri në iPad tim të vërtetë shpejt- 979 01:08:06,000 --> 01:08:12,000 se në programin fillimi tuaj, nëse keni, të themi, 980 01:08:12,000 --> 01:08:15,000 4 gigabajt të RAM për laptopë tuaj, 981 01:08:15,000 --> 01:08:21,000 ju merrni vënë mënjanë këtë copë, dhe ne do të quajmë këtë RAM. 982 01:08:21,000 --> 01:08:25,000 Dhe ajo fillon në një vend që ne jemi duke shkuar për të thirrur 0, 983 01:08:25,000 --> 01:08:30,000 dhe ai përfundon në një vend që ne do të thërrasë 4 gigabajt. 984 01:08:30,000 --> 01:08:37,000 Unë me të vërtetë nuk mund të shkruaj. Njeri, që është hacked. 985 01:08:37,000 --> 01:08:40,000 Kur programi juaj ekzekuton 986 01:08:40,000 --> 01:08:44,000 sistemi operativ carves deri RAM, 987 01:08:44,000 --> 01:08:51,000 dhe ajo specifikon segmente të ndryshme për pjesë të ndryshme të programit tuaj për të jetuar in 988 01:08:51,000 --> 01:08:58,000 Këtu poshtë kjo zonë është lloj i një tokë e askujt. 989 01:08:58,000 --> 01:09:02,000 Kur ju shkoni deri pak përpara këtu 990 01:09:02,000 --> 01:09:05,000 ju keni marrë në të vërtetë vendi ku 991 01:09:05,000 --> 01:09:09,000 Kodi për jetën tuaj të programit. 992 01:09:09,000 --> 01:09:13,000 Se kodi aktual binare, që file e ekzekutueshme në fakt merr ngarkuar në memorie 993 01:09:13,000 --> 01:09:17,000 kur ju drejtuar një program, dhe ajo jeton në segmentin kodin. 994 01:09:17,000 --> 01:09:22,000 Dhe si programi juaj ekzekuton procesor duket në këtë segment kodi 995 01:09:22,000 --> 01:09:24,000 të kuptoj se çfarë është udhëzim tjetër? 996 01:09:24,000 --> 01:09:27,000 Çfarë është vija e ardhshme e kodit kam nevojë për të ekzekutuar? 997 01:09:27,000 --> 01:09:31,000 >> Ka gjithashtu një segment të dhënave, dhe kjo është ku ato konstante string 998 01:09:31,000 --> 01:09:34,000 të ruhet që ju keni qenë duke përdorur. 999 01:09:34,000 --> 01:09:42,000 Dhe pastaj më larg deri atje është ky vend quhet grumbull. 1000 01:09:42,000 --> 01:09:46,000 Ne hyni në kujtesë në atje duke përdorur malloc, 1001 01:09:46,000 --> 01:09:49,000 dhe pastaj drejt krye të programit tuaj 1002 01:09:49,000 --> 01:09:52,000 ka rafte, 1003 01:09:52,000 --> 01:09:57,000 dhe kjo është ajo ku ne kemi qenë duke luajtur për shumicën e fillimit. 1004 01:09:57,000 --> 01:09:59,000 Kjo nuk është në shkallë apo ndonjë gjë. 1005 01:09:59,000 --> 01:10:03,000 Një shumë e kjo është shumë e varur makinë, 1006 01:10:03,000 --> 01:10:10,000 sistemit operativ të varur, por kjo është se si gjërat relativisht merrni chunked deri. 1007 01:10:10,000 --> 01:10:17,000 Kur ju drejtuar një program dhe ju të deklarojë një ndryshore të quajtur x- 1008 01:10:17,000 --> 01:10:27,000 Unë jam duke shkuar për të nxjerrë një tjetër kuti poshtë, dhe kjo do të jetë RAM si. 1009 01:10:27,000 --> 01:10:29,000 Dhe unë jam duke shkuar për të parë. 1010 01:10:29,000 --> 01:10:34,000 Ne do të vijoj dehur për të treguar kjo është vetëm një pjesë e vogël e RAM 1011 01:10:34,000 --> 01:10:38,000 dhe jo të gjithë prej saj si ne të nxjerrë në krye. 1012 01:10:38,000 --> 01:10:43,000 >> Nëse unë deklaroj një ndryshore integer quajtur x, 1013 01:10:43,000 --> 01:10:49,000 atëherë ajo që unë në fakt të merrni është një hartë 1014 01:10:49,000 --> 01:10:54,000 që është ruajtur në tabelën simbolin e programit tim 1015 01:10:54,000 --> 01:11:00,000 që lidh x emrin në këtë rajon e kujtesës që unë kam tërhequr 1016 01:11:00,000 --> 01:11:03,000 të drejtë këtu në mes të hekurave vertikale. 1017 01:11:03,000 --> 01:11:08,000 Nëse unë kam një linjë të kodit në programin tim që thotë se x = 7 1018 01:11:08,000 --> 01:11:15,000 procesor di "Oh, në rregull, unë e di që jeton në këtë vend x në kujtesë." 1019 01:11:15,000 --> 01:11:25,000 "Unë jam duke shkuar për të shkuar përpara dhe të shkruajnë një 7 atje." 1020 01:11:25,000 --> 01:11:28,000 Si e bën atë të dini se çfarë është në këtë vend kujtesë? 1021 01:11:28,000 --> 01:11:30,000 E pra, kjo është bërë të gjithë në kohën e kompilimit. 1022 01:11:30,000 --> 01:11:34,000 Përpiluesi kujdeset për shpërndarjen e ku secili prej variablave do të shkojnë 1023 01:11:34,000 --> 01:11:40,000 dhe krijimin e një hartë të veçantë ose më lidh dots 1024 01:11:40,000 --> 01:11:43,000 midis një simbol dhe ku ajo shkon, emri i një variabël 1025 01:11:43,000 --> 01:11:46,000 dhe ku ajo do të jetojë në kujtesën. 1026 01:11:46,000 --> 01:11:50,000 Por kjo rezulton se ne fakt mund të hyni në atë në programet tona si. 1027 01:11:50,000 --> 01:11:55,000 Kjo merr rëndësi kur ne fillojmë të flasim për disa nga strukturat e të dhënave, 1028 01:11:55,000 --> 01:11:58,000 cila është një koncept që ne jeni do te prezantuar më vonë. 1029 01:11:58,000 --> 01:12:09,000 >> Por tani për tani, ajo që ju mund ta dini është se unë mund të krijojë një tregues për këtë vend, x. 1030 01:12:09,000 --> 01:12:12,000 Për shembull, unë mund të krijojë një variabël akrep. 1031 01:12:12,000 --> 01:12:16,000 Kur kemi krijuar një variabël akrep ne përdorim simbol yll. 1032 01:12:16,000 --> 01:12:21,000 Në këtë rast, kjo thotë se unë jam duke shkuar për të krijuar një tregues për një int. 1033 01:12:21,000 --> 01:12:24,000 Kjo është një lloj i vetëm si çdo tjetër. 1034 01:12:24,000 --> 01:12:27,000 Ne jepte një ndryshore si y, 1035 01:12:27,000 --> 01:12:32,000 dhe pastaj ne kemi vendosur të barabartë me adresë, në një adresë. 1036 01:12:32,000 --> 01:12:38,000 Në këtë rast, ne mund të vendosni për pikë në y x 1037 01:12:38,000 --> 01:12:43,000 duke marrë adresën e X, të cilat ne bëjmë me ky simbol, 1038 01:12:43,000 --> 01:12:55,000 dhe pastaj ne kemi vendosur y për pikë për të. 1039 01:12:55,000 --> 01:12:59,000 Çfarë kjo në thelb do është nëse ne shikojmë në RAM tonë 1040 01:12:59,000 --> 01:13:02,000 kjo krijon një variabël të veçantë. 1041 01:13:02,000 --> 01:13:04,000 Ajo do të thërrasë atë y, 1042 01:13:04,000 --> 01:13:06,000 dhe kur kjo linjë e kodit ekzekuton 1043 01:13:06,000 --> 01:13:13,000 ajo në fakt do të krijojë një tregues të vogël që ne zakonisht të nxjerrë si një shigjetë, 1044 01:13:13,000 --> 01:13:15,000 dhe ajo vendos y për pikë në x. 1045 01:13:15,000 --> 01:13:17,000 Po. 1046 01:13:17,000 --> 01:13:19,000 [Student] Nëse x është tashmë një akrep, do të ju vetëm bëni 1047 01:13:19,000 --> 01:13:22,000 int * y = x vend të pasur simbol? 1048 01:13:22,000 --> 01:13:24,000 Po. 1049 01:13:24,000 --> 01:13:27,000 Nëse x është tashmë një akrep, atëherë ju mund të vendosni 2 pointers të barabarta me njëri-tjetrin, 1050 01:13:27,000 --> 01:13:30,000 në të cilin rast y nuk do të theksojnë x, 1051 01:13:30,000 --> 01:13:34,000 por kjo do të tregojnë për çfarëdo x është treguar. 1052 01:13:34,000 --> 01:13:37,000 Për fat të keq, ne jemi jashtë kohës. 1053 01:13:37,000 --> 01:13:44,000 >> Ajo që unë do të thonë se në këtë pikë, ne mund të flasim për këtë offline, 1054 01:13:44,000 --> 01:13:49,000 por unë do të thoja të fillojnë të punojnë me këtë problem, # 14. 1055 01:13:49,000 --> 01:13:53,000 Ju mund të shihni se ka tashmë një pak plotësuar për ju këtu. 1056 01:13:53,000 --> 01:13:57,000 Ju mund të shihni se kur ne të deklarojë 2 pointers, int * x * y dhe, 1057 01:13:57,000 --> 01:14:01,000 dhe vini re se treguar nga * ardhshëm të ndryshueshme ishte diçka që ishte bërë vitin e kaluar. 1058 01:14:01,000 --> 01:14:05,000 Ajo rezulton se kjo është e ngjashme me atë që ne jemi duke e bërë këtë vit. 1059 01:14:05,000 --> 01:14:11,000 Kjo nuk ka rëndësi se ku ju shkruani * kur ju jeni duke deklaruar treguesin. 1060 01:14:11,000 --> 01:14:17,000 Por ne kemi shkruar * ardhshme të llojit 1061 01:14:17,000 --> 01:14:24,000 sepse kjo e bën shumë të qartë se ju jeni duke deklaruar një ndryshore akrep. 1062 01:14:24,000 --> 01:14:27,000 Ju mund të shihni se shpallja e 2 pointers na jep 2 kuti. 1063 01:14:27,000 --> 01:14:31,000 Këtu, kur ne kemi vendosur x barabartë me malloc 1064 01:14:31,000 --> 01:14:34,000 ajo që kjo është thënë është vendosur mënjanë memorie në tog. 1065 01:14:34,000 --> 01:14:41,000 Kjo kuti pak të drejtë këtu, kjo rrethi, është e vendosur në tog. 1066 01:14:41,000 --> 01:14:43,000 X është vënë për të. 1067 01:14:43,000 --> 01:14:46,000 Vini re se y ende nuk është duke treguar asgjë. 1068 01:14:46,000 --> 01:14:50,000 Për të marrë kujtesës-për të ruajtur numrin 42 në x 1069 01:14:50,000 --> 01:14:55,000 ne do të përdorin atë simbol? 1070 01:14:55,000 --> 01:14:59,000 [Student] * x = 42. 1071 01:14:59,000 --> 01:15:01,000 Pikërisht, * x = 42. 1072 01:15:01,000 --> 01:15:06,000 Kjo do të thotë ndiqni arrow dhe hedhin 42 në atje. 1073 01:15:06,000 --> 01:15:09,000 Këtu ku ne kemi vendosur y dhe x kemi y treguar x. 1074 01:15:09,000 --> 01:15:13,000 Përsëri, kjo është vetëm si ajo ka thënë Kevin ku ne kemi vendosur y barabartë me x. 1075 01:15:13,000 --> 01:15:15,000 Y nuk është vënë për të x. 1076 01:15:15,000 --> 01:15:19,000 Përkundrazi, ajo është treguar për atë që x është treguar si. 1077 01:15:19,000 --> 01:15:24,000 >> Dhe pastaj në fund të fundit në këtë kuti janë 2 gjëra të mundshme që ne mund të bëjmë. 1078 01:15:24,000 --> 01:15:28,000 Njëra është që ne mund të themi * x = 13. 1079 01:15:28,000 --> 01:15:33,000 Gjë tjetër është që ne mund të themi-Alex, ju e dini se çfarë ne mund të bëjmë këtu? 1080 01:15:33,000 --> 01:15:37,000 Ju mund të thoni * x = 13 ose- 1081 01:15:37,000 --> 01:15:41,000 [Student] Ju mund të them çfarëdo int. 1082 01:15:41,000 --> 01:15:45,000 [Nate H.] Nëse kjo u përmendur si një variabël int ne mund ta bëjë këtë. 1083 01:15:45,000 --> 01:15:49,000 Ne gjithashtu mund të themi * y = 13 sepse ata janë të dy duke treguar në të njëjtin vend, 1084 01:15:49,000 --> 01:15:51,000 kështu që ne mund të përdorim ose të ndryshueshme për të arritur atje. 1085 01:15:51,000 --> 01:15:56,000 Po. >> [Student] Çfarë do të duket si në qoftë se ne vetëm të themi x int është 13? 1086 01:15:56,000 --> 01:16:00,000 Që do të deklaruar një ndryshore të ri të quajtur x, e cila nuk do të punojë. 1087 01:16:00,000 --> 01:16:04,000 Ne do të kemi një përplasje, sepse ne x deklaruar të jetë një tregues deri këtu. 1088 01:16:04,000 --> 01:16:10,000 [Student] Nëse ne vetëm kishte atë deklaratë nga vetë çfarë do të duket si në aspektin e rrethit? 1089 01:16:10,000 --> 01:16:14,000 Nëse do të kishim x = 13, atëherë ne do të kemi një kuti, dhe në vend se të paturit e një shigjetë 1090 01:16:14,000 --> 01:16:16,000 vijnë nga kutia ne do të tërheqë atë si vetëm një 13. 1091 01:16:16,000 --> 01:16:19,000 [Student] Në të kutisë. Rregull. 1092 01:16:19,000 --> 01:16:24,000 >> Faleminderit për shikimin, dhe fat të mirë në Quiz 0. 1093 01:16:24,000 --> 01:16:28,000 [CS50.TV]