1 00:00:00,000 --> 00:00:02,742 2 00:00:02,742 --> 00:00:05,680 >> Kryetari 1: Hi everyone. 3 00:00:05,680 --> 00:00:07,530 Ne jemi duke shkuar për të marrë filluar. 4 00:00:07,530 --> 00:00:09,330 Unë mendoj se njerëzit janë ende duke shkuar të jetë filtrim në. 5 00:00:09,330 --> 00:00:12,840 Por në interes të kohës, kështu që ne mund merrni ju djema nga këtu në kohë, 6 00:00:12,840 --> 00:00:14,110 ne jemi duke shkuar për të filluar. 7 00:00:14,110 --> 00:00:18,780 Pra, të mirëpritur për të CS50 Quiz 0 shqyrtim. 8 00:00:18,780 --> 00:00:23,020 Për ata prej jush që nuk e kanë realizuar megjithatë, ju keni një pyetje të mërkurën. 9 00:00:23,020 --> 00:00:25,700 Woo-hoo. 10 00:00:25,700 --> 00:00:29,780 >> Nëse ju nuk keni filluar duke studiuar ende ose nuk e kanë kuptuar se kjo ekziston ende, 11 00:00:29,780 --> 00:00:34,070 kuize e kaluara dhe të gjitha informatat në lidhje me quiz tuaj janë në cs50.net/quizzes. 12 00:00:34,070 --> 00:00:38,090 Ka disa gjëra mjaft të mirë atje, kuize fundit nga i fundit 10 13 00:00:38,090 --> 00:00:43,760 vjeç si dhe informacion në lidhje me këtë quiz dhe tema të 14 00:00:43,760 --> 00:00:46,250 që do të mbulohen. 15 00:00:46,250 --> 00:00:48,980 Pra, le të ketë filluar. 16 00:00:48,980 --> 00:00:54,240 >> Pra, ju djema mund të mbani mend, i pari Dita e klasës Davidit kishin ato llambat më. 17 00:00:54,240 --> 00:00:59,650 Pra në thelb, çdo gjë që shkon në nën kapuç e një kompjuteri është 18 00:00:59,650 --> 00:01:00,860 bëhet në binar. 19 00:01:00,860 --> 00:01:04,080 Binary do të thotë ajo që tingëllon si, 0 dhe 1 i. 20 00:01:04,080 --> 00:01:09,290 Ajo ka dy vlera që mund të përfaqësohet. 21 00:01:09,290 --> 00:01:14,675 >> Pra, ashtu si në ditën e parë të seksionit Kur Davidi u kthye në një dritë 22 00:01:14,675 --> 00:01:21,990 llambë të përfaqësuar në, ose 1, kompjuterin tonë kupton binar si 0 dhe 23 00:01:21,990 --> 00:01:24,110 1-të, në ose jashtë. 24 00:01:24,110 --> 00:01:25,360 Bazat e Binary. 25 00:01:25,360 --> 00:01:29,440 26 00:01:29,440 --> 00:01:32,470 Çdo vend është i përfaqësuar në bazë të dy. 27 00:01:32,470 --> 00:01:36,260 Kështu që ju të shtoni 2 me 0 për të 1 deri në 2 të gjithë rrugën deri. 28 00:01:36,260 --> 00:01:41,970 >> Për të llogaritur atë binar juaj është që të dhjetore, ju vetëm ndjekin këtë ekuacion 29 00:01:41,970 --> 00:01:42,840 lloj gjë. 30 00:01:42,840 --> 00:01:49,510 Nëse ju keni një 1 në asnjërin nga këto qytete, ju shumohen atë nga çfarëdo 31 00:01:49,510 --> 00:01:53,820 bazojnë është në, të shtoni atë, dhe ju merrni decimal. 32 00:01:53,820 --> 00:01:57,930 Pra, kjo është se si ju të mbështeteni në 5 në binar. 33 00:01:57,930 --> 00:02:01,400 Ashtu si ajo që ne po bëjmë në rrëshqitje të fundit, kjo është se si ju do të 34 00:02:01,400 --> 00:02:02,650 përfaqësojnë 1 deri 5. 35 00:02:02,650 --> 00:02:05,320 36 00:02:05,320 --> 00:02:09,660 >> Në mënyrë të ngjashme, ashtu si ju mund të shtoni dhe të zbres në decimal apo bazë të 10, ose 37 00:02:09,660 --> 00:02:13,040 me të vërtetë ndonjë bazë, në mund të shtoni dhe zbres në binar. 38 00:02:13,040 --> 00:02:18,400 Pikërisht ajo që ju do të presin, kur ju shtoni dy deri, në qoftë se ajo është e barabartë me më të madh 39 00:02:18,400 --> 00:02:24,220 shumë se 1, keni kryer një 1, e bëjnë atë një 0, dhe të bëjë shtimin në këtë mënyrë, vetëm 40 00:02:24,220 --> 00:02:29,910 si ju do të presin me i rregullt decimale apo ndonjë bazë tjetër. 41 00:02:29,910 --> 00:02:30,970 Best. 42 00:02:30,970 --> 00:02:35,140 >> Pra, si kam thënë më parë, çdo gjë që vazhdon nën kapuç e kompjuterit tonë 43 00:02:35,140 --> 00:02:37,560 është bërë në 0 dhe 1, apo binar. 44 00:02:37,560 --> 00:02:43,470 Deri sa nuk kemi të shprehur, për shembull, shkronja ose numra, ose karaktere? 45 00:02:43,470 --> 00:02:45,560 Dhe Përgjigja për këtë është ASCII. 46 00:02:45,560 --> 00:02:49,380 >> ASCII është një hartë në mes të karaktereve që ne normalisht do të shohim në 47 00:02:49,380 --> 00:02:53,360 Gjuha angleze si A-së, B-së, C-së, theksojnë, dashes, dhe 48 00:02:53,360 --> 00:02:54,910 diçka të tillë. 49 00:02:54,910 --> 00:02:57,260 Dhe harta që për një vlerë ASCII. 50 00:02:57,260 --> 00:03:03,080 Një vlerë ASCII është vetëm një numër që mund të kuptohet nga kompjuteri juaj. 51 00:03:03,080 --> 00:03:07,430 Dhe ashtu si ju mund të bëni shtimin dhe zbritja me numrat, ju mund të bëni 52 00:03:07,430 --> 00:03:10,890 ato me vlera ASCII. 53 00:03:10,890 --> 00:03:14,050 >> Pra, në këtë shembull, çfarë do të këtë të shtypura nga? 54 00:03:14,050 --> 00:03:26,790 55 00:03:26,790 --> 00:03:35,480 Yeah, kështu që vetëm një hapësirë ​​B hapësirë ​​hapësirë ​​C D. Ku ka shkuar miu im? 56 00:03:35,480 --> 00:03:39,200 57 00:03:39,200 --> 00:03:43,380 Vini re se ju mund të përcaktojë një int në 65 vjeç. 58 00:03:43,380 --> 00:03:47,080 Dhe kur keni shkruar se duke përdorur qind C, ajo do të interpretojë se si një 59 00:03:47,080 --> 00:03:49,330 karakter dhe do të shtypura nga A. 60 00:03:49,330 --> 00:03:52,800 >> Në mënyrë të ngjashme, ju mund të deklarojë ajo si një char. 61 00:03:52,800 --> 00:03:56,860 Dhe kur ju të shtypura it out duke përdorur për qind C, ajo do të interpretojë se si 62 00:03:56,860 --> 00:04:05,240 qind D. Dhe ashtu si ju mund të shtoni një numri, ju mund të shtoni karaktere janë 63 00:04:05,240 --> 00:04:06,878 Vlera ASCII, në këtë rast. 64 00:04:06,878 --> 00:04:11,370 65 00:04:11,370 --> 00:04:16,130 >> Pra, një tregues pak për të gjithë. 66 00:04:16,130 --> 00:04:19,610 5, si një varg, nuk vërtetë të barabartë 5. 67 00:04:19,610 --> 00:04:26,610 Pra, si mund të kemi kthyer varg 5 tek integer 5? 68 00:04:26,610 --> 00:04:28,930 Ndonjë ide? 69 00:04:28,930 --> 00:04:31,630 Po. 70 00:04:31,630 --> 00:04:36,720 >> Pra, nëse ne kemi me 5 si një varg, ne mund të zbres 0. 71 00:04:36,720 --> 00:04:37,820 Dhe kjo do të na japë 5. 72 00:04:37,820 --> 00:04:41,670 Dhe në mënyrë të ngjashme, në qoftë se ne kemi 5, si një numër i plotë, të shtoj se në vargun 0. 73 00:04:41,670 --> 00:04:43,112 Dhe kjo na jep vargun 5. 74 00:04:43,112 --> 00:04:46,350 75 00:04:46,350 --> 00:04:48,350 Best. 76 00:04:48,350 --> 00:04:52,940 >> Tani, kujtojnë përsëri për të leksion një ku kemi biseduar për algoritme. 77 00:04:52,940 --> 00:04:57,260 Deri sa nuk kemi të vërtetë duan një kompjuter për të bërë gjëra interesante? 78 00:04:57,260 --> 00:05:00,460 Ju e dini, vetëm duke shtuar dhe zbritur Numrat dhe shtypje gjërat jashtë nuk është 79 00:05:00,460 --> 00:05:01,730 se emocionuese. 80 00:05:01,730 --> 00:05:04,620 Zakonisht, ne duam kompjuterin tonë për kryejnë një lloj algorithm. 81 00:05:04,620 --> 00:05:07,820 Diçka një kompleks pak më shumë se vetëm aritmetikë të thjeshtë. 82 00:05:07,820 --> 00:05:11,930 >> Një algoritëm është vetëm një hap pas hapi set e udhëzimeve për mënyrën se si për të kryer 83 00:05:11,930 --> 00:05:14,640 një task-- të caktuar 84 00:05:14,640 --> 00:05:15,660 ashtu si një recetë. 85 00:05:15,660 --> 00:05:19,990 Ju mund të mbani mend ditën e parë të klasë ku Davidi kishte na llogarisin një dhomë 86 00:05:19,990 --> 00:05:22,550 e njerëzve dhe sa njerëz ishin në dhomë. 87 00:05:22,550 --> 00:05:24,480 Ju mund të përdoret për të numërimit një nga një. 88 00:05:24,480 --> 00:05:25,860 1, 2, 3, 4. 89 00:05:25,860 --> 00:05:28,010 Në këtë rast, një algoritmi kohë lineare. 90 00:05:28,010 --> 00:05:31,710 >> Por Davidi futur një algoritëm për ju për të numëruar njerëzit në dhomë 91 00:05:31,710 --> 00:05:37,340 ku të gjithë qëndron lart, ju thoni tuaj numër të një personi tjetër, të shtoj se 92 00:05:37,340 --> 00:05:39,200 Numri i lart, dhe një person i ulet. 93 00:05:39,200 --> 00:05:40,410 Dhe ju përsëris se. 94 00:05:40,410 --> 00:05:42,910 Kjo është një lloj algorithm. 95 00:05:42,910 --> 00:05:47,520 Ne mund të analizojmë se si efikas an algorithm është i bazuar në atë të drejtuar kohë. 96 00:05:47,520 --> 00:05:49,680 Por ne do të flasim pak më shumë për këtë më vonë. 97 00:05:49,680 --> 00:05:52,740 98 00:05:52,740 --> 00:05:57,090 >> Pra, të gjitha algoritme mund të të jetë e shkruar në pseudokod. 99 00:05:57,090 --> 00:06:01,120 Pseudokod është vetëm një angleze si Sintaksa e përdorur për të përfaqësuar 100 00:06:01,120 --> 00:06:02,420 një gjuhë programimi. 101 00:06:02,420 --> 00:06:06,070 Për shembull, në qoftë se ne të kërkuar për të kërkuar një përdorues me mend numrin tim të preferuar, ne 102 00:06:06,070 --> 00:06:08,390 mund të ketë pseudokod si të tillë. 103 00:06:08,390 --> 00:06:09,850 >> Merrni një përdorues me mend. 104 00:06:09,850 --> 00:06:13,570 Nëse guess është e saktë, tregoni atyre ata janë korrekt, tjetër tregoni atyre 105 00:06:13,570 --> 00:06:15,560 ata nuk janë të sakta. 106 00:06:15,560 --> 00:06:22,530 Dhe pseudokod është një mënyrë e lehtë përfaqësojnë një ide apo një algoritmi. 107 00:06:22,530 --> 00:06:26,910 Deri tani ne mund të dëshironi të vërtetë shkruani kjo në gjuhën që kompjuteri 108 00:06:26,910 --> 00:06:27,980 mund të kuptuarit. 109 00:06:27,980 --> 00:06:35,660 Pra, ne mund të shkruani pseudokod tonë dhe interpretuar që në kodin burimor. 110 00:06:35,660 --> 00:06:41,320 >> Deri më tani, kodi burim duhet t'u përmbahen në një sintaksë të caktuar të 111 00:06:41,320 --> 00:06:42,490 një gjuhë programimi. 112 00:06:42,490 --> 00:06:45,430 Dhe deri më tani, në CS50, ne kemi përdorur kryesisht c. 113 00:06:45,430 --> 00:06:48,320 Pra, kjo mund të jetë kodi burim për c. 114 00:06:48,320 --> 00:06:51,440 Më vonë në kurs, ju vijnë natën në kontakt me programimin e tjera 115 00:06:51,440 --> 00:06:52,480 gjuhë si PHP. 116 00:06:52,480 --> 00:06:57,540 Ose në qoftë se ju edhe të marrë klasat e tjera, të mund të bëni Java, Python, apo edhe OCML. 117 00:06:57,540 --> 00:07:01,570 Por në gjuhën tonë programit c, kjo është se si ne mund të shkruani kodin burim për 118 00:07:01,570 --> 00:07:04,760 algorithm pseudokod që Unë vetëm të përshkruar më parë. 119 00:07:04,760 --> 00:07:08,630 120 00:07:08,630 --> 00:07:11,430 >> Pra, si e bën kompjuterin tuaj të vërtetë kuptojnë se? 121 00:07:11,430 --> 00:07:14,490 Ashtu si kam thënë më parë, të vetëm të vërtetë kupton zero dhe ato. 122 00:07:14,490 --> 00:07:17,880 Pra, si e bën atë të marrë nga burimi Kodi për diçka që mund të jetë 123 00:07:17,880 --> 00:07:18,960 kuptohet? 124 00:07:18,960 --> 00:07:22,920 E pra, ne kemi diçka të quhet një përpilues. 125 00:07:22,920 --> 00:07:28,450 >> Nëse ju kujtohet përsëri në shumicën e tuaj psets, keni pasur një lloj të programit 126 00:07:28,450 --> 00:07:30,370 shkruar në një skedar dot c. 127 00:07:30,370 --> 00:07:32,550 Dhe pastaj ju do të tipit make. 128 00:07:32,550 --> 00:07:35,970 Pra, çfarë është duke bërë duke bërë? 129 00:07:35,970 --> 00:07:39,970 >> Ju mund të shtypni make për të hartuar tuaj Programi sepse someone-- 130 00:07:39,970 --> 00:07:42,730 kushdo që shkroi vendosur tuaj p; ndoshta David-- 131 00:07:42,730 --> 00:07:44,190 krijuar një make file. 132 00:07:44,190 --> 00:07:51,320 Dhe kjo tregon e bëjnë të dini për të drejtuar tuaj përpilues, i quajtur tingëllimë, që vullneti 133 00:07:51,320 --> 00:07:55,560 pastaj përpilojnë kodin tuaj burim të kundërshtojë Kodi, e cila është zero dhe ato 134 00:07:55,560 --> 00:07:57,720 që kompjuteri juaj kupton. 135 00:07:57,720 --> 00:08:01,610 Por, pak më vonë, ne do të shkojmë më shumë në thellësi rreth hartuesit. 136 00:08:01,610 --> 00:08:05,640 137 00:08:05,640 --> 00:08:10,800 >> Pra kujtojnë pset 0, where-- po, ju keni një pyetje? 138 00:08:10,800 --> 00:08:11,620 >> Audienca: [padëgjueshme]? 139 00:08:11,620 --> 00:08:12,490 >> Kryetari 1: Po. 140 00:08:12,490 --> 00:08:14,960 Unë mendoj se ata në të vërtetë duhet të jetë online. 141 00:08:14,960 --> 00:08:15,120 Po. 142 00:08:15,120 --> 00:08:16,572 >> Audienca: A është si [e padëgjueshme]? 143 00:08:16,572 --> 00:08:19,476 144 00:08:19,476 --> 00:08:20,830 >> Kryetari 1: Nuk është. 145 00:08:20,830 --> 00:08:25,810 Janë në cs50.net/quizzes. 146 00:08:25,810 --> 00:08:32,900 >> Audienca: kuize çaj, çaj 2013, çaj 0, dhe vetëm të klikoni përmes 147 00:08:32,900 --> 00:08:35,956 kuize 2013 dhe quiz 0, të shqyrtojë slides seksion. 148 00:08:35,956 --> 00:08:40,380 >> Kryetari 1: Po, kështu që nëse ju djema doni të tërheqë atë dhe të shikojnë atë në tuaj 149 00:08:40,380 --> 00:08:42,740 kompjuter vet, që është në rregull shumë. 150 00:08:42,740 --> 00:08:43,130 Thuaj se përsëri. 151 00:08:43,130 --> 00:08:44,546 >> Audienca: [padëgjueshme]. 152 00:08:44,546 --> 00:08:48,780 >> Kryetari 1: Po, [e padëgjueshme] është variabël bedel. 153 00:08:48,780 --> 00:08:49,644 Oh, po? 154 00:08:49,644 --> 00:08:51,372 >> Audienca: [padëgjueshme]? 155 00:08:51,372 --> 00:08:54,300 >> Kryetari 1: Jo, greva nuk janë në provim. 156 00:08:54,300 --> 00:08:55,950 Na vjen keq, pyetja e saj ishte, ishte godet në provim. 157 00:08:55,950 --> 00:08:59,530 Dhe kjo nuk është. 158 00:08:59,530 --> 00:09:05,780 Pra pset 0, ju djema duhet të kenë të gjithë zbatohet diçka duke përdorur zeroja. 159 00:09:05,780 --> 00:09:13,100 Dhe kemi mësuar disa programe themelore blloqe ndërtimi duke përdorur zeroja. 160 00:09:13,100 --> 00:09:15,590 >> Pra, le të marrin një vështrim në disa nga këto blloqe ndërtimi 161 00:09:15,590 --> 00:09:18,170 që përbëjnë një program. 162 00:09:18,170 --> 00:09:20,570 Së pari është shprehje Boolean. 163 00:09:20,570 --> 00:09:24,540 Shprehje Boolean janë ato dhe 0-së apo ndonjë gjë që ka 164 00:09:24,540 --> 00:09:25,700 dy vlera të mundshme. 165 00:09:25,700 --> 00:09:30,320 Në këtë rast, e vërtetë apo e rreme, në ose jashtë, dhe po ose jo. 166 00:09:30,320 --> 00:09:35,390 Një shembull i thjeshtë, shumë e thjeshtë, program që përdor një Boolean 167 00:09:35,390 --> 00:09:39,140 shprehje këtu. 168 00:09:39,140 --> 00:09:43,220 >> Pra, në mënyrë për shprehje Boolean në të jetë e dobishme, ne kemi operatorët Boolean. 169 00:09:43,220 --> 00:09:48,920 Këto janë operatorët që mund të përdoren për të krahasuar vlerat e caktuara. 170 00:09:48,920 --> 00:09:52,820 Pra, ne kemi dhe ose jo të barabartë për të, më pak se ose e barabartë me e madhe se ose 171 00:09:52,820 --> 00:09:55,130 barabartë, dhe më pak se ose më e madhe se. 172 00:09:55,130 --> 00:09:59,060 Por këta operatorë nuk janë shumë të dobishme nëse nuk mund të kombinohen ato në 173 00:09:59,060 --> 00:10:00,320 kushtet. 174 00:10:00,320 --> 00:10:04,370 >> Pra, ju djema mund të mbani mend nga e para dhe nga p juaj vendos se ne 175 00:10:04,370 --> 00:10:05,400 kishte kushte. 176 00:10:05,400 --> 00:10:09,710 Ata janë, në thelb, si forks në logjika e programit tuaj që 177 00:10:09,710 --> 00:10:12,670 ekzekuton varësi të faktit nëse një kusht është plotësuar. 178 00:10:12,670 --> 00:10:18,150 Pra, një nga kushtet që kemi pasur përdorur shumë herë në këtë kurs është 179 00:10:18,150 --> 00:10:21,470 në qoftë se, tjetër, në qoftë se, dhe kushtet tjetër. 180 00:10:21,470 --> 00:10:24,060 >> Ja një shembull se si ju mund të përdorni që. 181 00:10:24,060 --> 00:10:28,430 A ka dikush di dallimin në mes vetëm duke përdorur, nëse deklaratat e të gjitha 182 00:10:28,430 --> 00:10:32,530 shumë më poshtë vargjeve nëse, tjetër, në qoftë se, dhe tjetër e kombinuar? 183 00:10:32,530 --> 00:10:33,013 Po? 184 00:10:33,013 --> 00:10:34,263 >> Audienca: [padëgjueshme]. 185 00:10:34,263 --> 00:10:40,741 186 00:10:40,741 --> 00:10:42,160 >> Kryetari 1: Pikërisht. 187 00:10:42,160 --> 00:10:50,210 Pra, nëse kam pasur rast të gjithë rrugën poshtë këtë mënyrë, edhe në qoftë se ky kusht kthimit 188 00:10:50,210 --> 00:10:52,800 vërtetë, ajo do të vazhdojë të vazhdojnë testimin e dy të ardhshëm. 189 00:10:52,800 --> 00:11:00,120 Ndërsa, me një tjetër-nëse, një tjetër Deklaratë, nëse e kthen vërtetë, 190 00:11:00,120 --> 00:11:02,640 të tjerët nuk janë testuar. 191 00:11:02,640 --> 00:11:05,955 Çdo pyetje në lidhje me se? 192 00:11:05,955 --> 00:11:06,890 Best. 193 00:11:06,890 --> 00:11:12,240 >> Pra, ju përdorni një nëse-tjetër e një tjetër deklaratë në qoftë se ju e dini se ajo vetëm mund të 194 00:11:12,240 --> 00:11:14,470 të jetë një nga këto raste. 195 00:11:14,470 --> 00:11:21,550 Pra, ne e dimë, nëse x është më pak se 0, kjo është definitivisht nuk do të jetë 196 00:11:21,550 --> 00:11:22,890 madhe se 0. 197 00:11:22,890 --> 00:11:26,940 198 00:11:26,940 --> 00:11:31,480 >> Tjetra, një tjetër bllok ndërtimi se ne jemi mësuar sythe. 199 00:11:31,480 --> 00:11:33,310 Ne kemi tri lloje të sythe. 200 00:11:33,310 --> 00:11:35,830 Për sythe, ndërsa sythe, dhe të bëjë ndërsa sythe. 201 00:11:35,830 --> 00:11:38,730 Dhe në përgjithësi, kur ti ulesh për të shkruani diçka, ju duhet të vendosni 202 00:11:38,730 --> 00:11:40,060 e cila nga tre që dëshironi të përdorni. 203 00:11:40,060 --> 00:11:41,900 Deri sa nuk kemi vendosë që një? 204 00:11:41,900 --> 00:11:44,920 205 00:11:44,920 --> 00:11:48,790 >> Ne zakonisht përdorim një për lak në qoftë se ne e dimë sa herë që ne duam të iterate 206 00:11:48,790 --> 00:11:53,650 me diçka ose sa herë ne duam të kryer një detyrë. 207 00:11:53,650 --> 00:11:58,830 Ne përdorim ndërsa sythe në qoftë se ne kemi nevojë për disa kusht që të jetë e vërtetë për të mbajtur running. 208 00:11:58,830 --> 00:12:03,730 Dhe ne i përdorim të bërë, ndërsa shumë të ngjashme me ndërsa, por ne duam kodi ynë për të kandiduar në 209 00:12:03,730 --> 00:12:04,880 paktën një herë. 210 00:12:04,880 --> 00:12:09,410 >> Pra, bëni ndërsa, çdo gjë që është në të bërë vullnetin gjithmonë të drejtuar të paktën një herë. 211 00:12:09,410 --> 00:12:13,120 Ndërsa, me kohë, atë nuk mund të kandidojë në të gjitha nëse 212 00:12:13,120 --> 00:12:15,490 kusht nuk është i kënaqur. 213 00:12:15,490 --> 00:12:16,740 Çfarëdo pyetjeje me se? 214 00:12:16,740 --> 00:12:20,480 215 00:12:20,480 --> 00:12:22,860 >> Pra, struktura e një për lak. 216 00:12:22,860 --> 00:12:23,620 Ju djema keni parë të gjithë këtë. 217 00:12:23,620 --> 00:12:25,320 Ju nisja atë. 218 00:12:25,320 --> 00:12:26,600 Ju keni disa lloj gjendje. 219 00:12:26,600 --> 00:12:32,340 Kështu, për shembull, ne mund të nisja si për i barabartë 0. 220 00:12:32,340 --> 00:12:34,040 i është më pak se 10. 221 00:12:34,040 --> 00:12:35,442 Dhe unë ++. 222 00:12:35,442 --> 00:12:39,010 Një shumë të thjeshtë që ne kemi bërë. 223 00:12:39,010 --> 00:12:42,210 >> Për një lak kohë, në mënyrë të ngjashme, ju keni që të ketë disa lloj inicializimit, 224 00:12:42,210 --> 00:12:44,980 një lloj gjendje, dhe një lloj përditësimit. 225 00:12:44,980 --> 00:12:51,990 Pra, ne mund të zbatojë tonë për lak edhe si një lak duke përdorur këtë. 226 00:12:51,990 --> 00:12:56,000 Dhe në mënyrë të ngjashme me një të bërë, ndërsa loop, ne mund të kenë disa inicializimit, 227 00:12:56,000 --> 00:12:58,640 ekzekutuar diçka, update it, dhe atëherë kontrolloni gjendjen. 228 00:12:58,640 --> 00:13:03,500 229 00:13:03,500 --> 00:13:05,140 >> Deri tani funksionon. 230 00:13:05,140 --> 00:13:06,460 Ne kemi vënë çdo gjë së bashku. 231 00:13:06,460 --> 00:13:10,140 Ne mund të dëshironi të shkruani disa lloj funksioni. 232 00:13:10,140 --> 00:13:12,790 Funksioni zakonshme që ju mund të kanë parë tashmë është kryesore. 233 00:13:12,790 --> 00:13:13,770 Kryesore është një funksion. 234 00:13:13,770 --> 00:13:16,160 Ajo ka një lloj kthimi, int. 235 00:13:16,160 --> 00:13:18,470 Ajo ka një emër funksion, kryesore. 236 00:13:18,470 --> 00:13:20,810 Dhe ajo ka argumente, argc dhe argv. 237 00:13:20,810 --> 00:13:24,040 Pra kryesor është vetëm një funksion. 238 00:13:24,040 --> 00:13:27,230 >> Funksione të tjera që ju mund të keni përdorur, printf printf-- është një function-- 239 00:13:27,230 --> 00:13:29,330 GetInt, toupper. 240 00:13:29,330 --> 00:13:32,010 Por këto të ndodhë që të ketë qenë zbatohet për ne nga 241 00:13:32,010 --> 00:13:33,270 një lloj biblioteke. 242 00:13:33,270 --> 00:13:37,400 Nëse ju djema mos harroni përfshirë kjo bibliotekë CS50.h ose 243 00:13:37,400 --> 00:13:38,510 I standarde / O bibliotekë. 244 00:13:38,510 --> 00:13:39,200 Po, pyetje? 245 00:13:39,200 --> 00:13:41,610 >> Audienca: A është vetëm e natyrshme në c kryesore? 246 00:13:41,610 --> 00:13:44,740 A ajo vetëm lloj [e padëgjueshme]? 247 00:13:44,740 --> 00:13:47,370 >> Kryetari 1: Pyetja është në qoftë se kryesore është e natyrshme në c. 248 00:13:47,370 --> 00:13:51,460 Dhe po, të gjitha funksionet kanë një funksion kryesor. 249 00:13:51,460 --> 00:13:55,290 Kjo është lloj i nevojshëm për kompjuter të dinë se ku të fillojë 250 00:13:55,290 --> 00:13:55,993 drejtimin kodin. 251 00:13:55,993 --> 00:13:58,108 >> Audienca: Pra, ju nuk do të [padëgjueshme]? 252 00:13:58,108 --> 00:13:59,480 >> Kryetari 1: Nr 253 00:13:59,480 --> 00:14:00,760 Çdo pyetje të tjera? 254 00:14:00,760 --> 00:14:03,430 255 00:14:03,430 --> 00:14:04,770 Best. 256 00:14:04,770 --> 00:14:08,050 Pra, ashtu si ju mund të përdorni një funksion që është shkruar për ju, ju mund të 257 00:14:08,050 --> 00:14:10,380 shkruani funksionin tuaj. 258 00:14:10,380 --> 00:14:17,050 Ky është një funksion që dikush mund kanë shkruar për të llogaritur vëllimin 259 00:14:17,050 --> 00:14:18,395 i Q, per shembull. 260 00:14:18,395 --> 00:14:21,300 261 00:14:21,300 --> 00:14:29,500 Ka një lloj kthimi këtu, në këtë rast int, tonë q emri funksion dhe tonë 262 00:14:29,500 --> 00:14:31,360 lista e parametrave. 263 00:14:31,360 --> 00:14:34,550 >> Dhe vini re që ju duhet të shkruani të dhënat lloj parametri që dëshironi të 264 00:14:34,550 --> 00:14:38,660 përdorë ose tjetër funksion nuk ka e di se çfarë lloj 265 00:14:38,660 --> 00:14:41,650 Parametri duhet të jenë të pranuar. 266 00:14:41,650 --> 00:14:48,110 Pra, në këtë rast, ne duam një numër të plotë si input tonë. 267 00:14:48,110 --> 00:14:50,390 Pra, pse mund të duam të përdorni funksionet? 268 00:14:50,390 --> 00:14:52,800 >> Para së gjithash, e madhe për organizatën. 269 00:14:52,800 --> 00:14:56,350 Ato ndihmojnë për të prishur kodin tuaj në chunks më të organizuar dhe të bëjë 270 00:14:56,350 --> 00:14:57,960 më të lehtë për të lexuar. 271 00:14:57,960 --> 00:14:59,760 Thjeshtimi. 272 00:14:59,760 --> 00:15:01,740 Kjo është e mirë për dizajn. 273 00:15:01,740 --> 00:15:04,570 Kur ju jeni duke lexuar një pjesë të kodit dhe funksioni kryesor është me të vërtetë, 274 00:15:04,570 --> 00:15:07,750 me të vërtetë e gjatë, mund të jetë e vështirë për të Arsyeja për atë që po ndodh. 275 00:15:07,750 --> 00:15:11,710 Pra, nëse ju thyejnë atë në funksione, ajo mund të jetë më e lehtë për të lexuar. 276 00:15:11,710 --> 00:15:12,750 Dhe ripërdorimin-aftësinë. 277 00:15:12,750 --> 00:15:16,940 Nëse ju keni një pjesë të kodit që është duke u quajtur ose drejtuar shumë herë, 278 00:15:16,940 --> 00:15:20,690 në vend të rishkrimin se kodi 10 herë në funksion tuaj kryesor, ju mund të 279 00:15:20,690 --> 00:15:21,440 doni të ripërdorimin atë. 280 00:15:21,440 --> 00:15:25,740 Dhe pastaj çdo herë që duhet të përdorni që pjesë të kodit, të thirrur funksionin. 281 00:15:25,740 --> 00:15:30,550 282 00:15:30,550 --> 00:15:35,380 >> Deri tani në qoftë se ne kujtojmë përsëri në para, ne gjithashtu biseduar për disa koncepteve, 283 00:15:35,380 --> 00:15:37,680 një nga të cilat është e filetim. 284 00:15:37,680 --> 00:15:41,120 Thread është koncepti i shumëfishtë sekuenca e kodit 285 00:15:41,120 --> 00:15:43,040 ekzekutimin në të njëjtën kohë. 286 00:15:43,040 --> 00:15:47,490 Pra, mendoj se përsëri në një ditë ku Davidi kishte ju djema numërimin off të numrit të 287 00:15:47,490 --> 00:15:48,440 njerëz në dhomë. 288 00:15:48,440 --> 00:15:50,550 >> Në thelb, ajo që po ndodhte në është e gjitha e ju djema ishin 289 00:15:50,550 --> 00:15:52,370 drejtimin temat e veçanta. 290 00:15:52,370 --> 00:15:55,540 Dhe ato temat vinin së bashku për të marrë disa lloj përgjigje. 291 00:15:55,540 --> 00:15:58,890 Në mënyrë të ngjashme, në Scratch, kur ju keni sprites të shumta, ju mund të 292 00:15:58,890 --> 00:16:01,070 kanë një mace dhe një qen. 293 00:16:01,070 --> 00:16:08,770 Dhe ata do të jenë në të njëjtën kohë drejtimin Scripts tyre. 294 00:16:08,770 --> 00:16:10,020 Kjo është një shembull i fillesë. 295 00:16:10,020 --> 00:16:12,860 296 00:16:12,860 --> 00:16:18,000 >> Dhe koncepti tjetër që ishte futur në zeroja ishte ngjarje. 297 00:16:18,000 --> 00:16:22,550 Dhe ngjarje janë pjesë kur të shumta e kodi juaj komunikuar me njëri tjetrin. 298 00:16:22,550 --> 00:16:26,840 Në Scratch, kjo ishte kur ju të përdorur kontrollit të transmetimit dhe Kur unë 299 00:16:26,840 --> 00:16:29,500 Merre blloqe. 300 00:16:29,500 --> 00:16:35,170 >> Dhe gjithashtu, në Problem Set 4, pamë pak e ngjarjeve si. 301 00:16:35,170 --> 00:16:38,250 Ju djema mund të ketë përdorur biblioteka Gevent. 302 00:16:38,250 --> 00:16:42,450 Dhe aty ishte një funksion waitForClick në të cilën ju jeni duke pritur 303 00:16:42,450 --> 00:16:44,300 për përdoruesit për të klikoni. 304 00:16:44,300 --> 00:16:47,870 Dhe klikoni tuaj, në këtë rast, do të ishte e ngjarje dhe të presin për klikim është e juaj 305 00:16:47,870 --> 00:16:49,120 Mbajtësi i ngjarjeve. 306 00:16:49,120 --> 00:16:53,690 307 00:16:53,690 --> 00:16:58,630 >> Dhe gjithashtu, të gjithë duke psets tuaj dhe duke punuar në psets tuaj, ju 308 00:16:58,630 --> 00:17:01,920 mund të vijnë në kontakt me disa prej këtyre komandave. 309 00:17:01,920 --> 00:17:05,579 Kjo është ajo që ju shtypur në tuaj dritare terminali ose çfarëdo dritare 310 00:17:05,579 --> 00:17:12,119 që tregon deri në g edit tuaj në, në thelb, të lundruar kompjuterin tuaj. 311 00:17:12,119 --> 00:17:19,440 >> Kështu për shembull, LS listat Përmbajtja e një directory. 312 00:17:19,440 --> 00:17:22,510 Bëni directory krijon një dosje të re. 313 00:17:22,510 --> 00:17:24,819 CD, directory ndryshim. 314 00:17:24,819 --> 00:17:28,400 RM, hiqni, fshin një fotografi ose disa directory. 315 00:17:28,400 --> 00:17:31,050 Dhe pastaj hiqni directory heq një directory. 316 00:17:31,050 --> 00:17:32,300 >> Audienca: [padëgjueshme]? 317 00:17:32,300 --> 00:17:36,978 318 00:17:36,978 --> 00:17:38,370 >> Kryetari 1: Po, sigurisht. 319 00:17:38,370 --> 00:17:42,530 320 00:17:42,530 --> 00:17:46,040 Na vjen keq, pyetja ishte nëse ju do të sugjeroja vënë këtë 321 00:17:46,040 --> 00:17:48,840 në mashtrojnë fletë. 322 00:17:48,840 --> 00:17:49,440 Kjo mund të ndihmojë. 323 00:17:49,440 --> 00:17:51,490 Nëse ju keni hapësirë, ju mund të vënë atë në. 324 00:17:51,490 --> 00:17:56,170 Është gjithashtu vetëm në përgjithësi të mirë sa duhet për të kujtuar, sepse kur ju përdorni atë 325 00:17:56,170 --> 00:17:59,060 ju mund të dëshironi të vetëm të kanë atë përmendësh. 326 00:17:59,060 --> 00:18:02,750 Kjo do të bëjë jetën tuaj shumë më të lehtë. 327 00:18:02,750 --> 00:18:04,000 A e kam të përgjigjem pyetjes tuaj? 328 00:18:04,000 --> 00:18:10,528 329 00:18:10,528 --> 00:18:14,290 >> Deri tani, kemi biseduar pak shkurtimisht për bibliotekat. 330 00:18:14,290 --> 00:18:18,570 Por të dy ato kryesore që ne kemi qenë përdorur deri më tani gjatë janë 331 00:18:18,570 --> 00:18:20,860 I standarde / O dhe CS50. 332 00:18:20,860 --> 00:18:25,410 Çfarë lloj gjëra janë të përfshira në standarde I / O bibliotekë? 333 00:18:25,410 --> 00:18:28,410 >> Po, deri tani ne kemi përdorur printf. 334 00:18:28,410 --> 00:18:31,150 Në CS50, ne kemi përdorur GetInt dhe GetString. 335 00:18:31,150 --> 00:18:37,200 Dhe llojin e të dhënave string ndodh edhe që të deklarohet në këtë bibliotekë CS50. 336 00:18:37,200 --> 00:18:40,250 Ne do të flasim pak më shumë në thellësi rreth se si bibliotekat punojnë dhe se si ata 337 00:18:40,250 --> 00:18:41,870 ndërveprojnë me pjesën tjetër të kodit tuaj. 338 00:18:41,870 --> 00:18:46,220 Por ata janë dy të kryesore që ne kanë ardhur në kontakt me të deri më tani në 339 00:18:46,220 --> 00:18:48,430 kurs. 340 00:18:48,430 --> 00:18:50,050 >> Llojet. 341 00:18:50,050 --> 00:18:58,120 Këto janë të mira për të kujtuar se sa çdo lloj përfaqësohet nga ose si 342 00:18:58,120 --> 00:19:02,840 shumë bytes secili e tipit requires-- 343 00:19:02,840 --> 00:19:04,990 int, 4 bytes; char, 1 bajt. 344 00:19:04,990 --> 00:19:06,550 Float është 4 bytes. 345 00:19:06,550 --> 00:19:07,782 Çfarë është një të dyfishtë? 346 00:19:07,782 --> 00:19:09,032 >> Audienca: [padëgjueshme]. 347 00:19:09,032 --> 00:19:11,398 348 00:19:11,398 --> 00:19:16,240 >> Kryetari 1: Po, kështu një noton por dyfishojë madhësinë. 349 00:19:16,240 --> 00:19:17,150 Po në lidhje me një kohë të gjatë? 350 00:19:17,150 --> 00:19:18,400 >> Audienca: [padëgjueshme]. 351 00:19:18,400 --> 00:19:21,614 352 00:19:21,614 --> 00:19:24,680 >> Kryetari 1: OK. 353 00:19:24,680 --> 00:19:25,410 Çfarë është një kohë të gjatë? 354 00:19:25,410 --> 00:19:26,660 >> Audienca: [padëgjueshme]. 355 00:19:26,660 --> 00:19:29,400 356 00:19:29,400 --> 00:19:31,450 >> Kryetari 1: Po, të dyfishtë një int. 357 00:19:31,450 --> 00:19:34,240 358 00:19:34,240 --> 00:19:34,705 Po. 359 00:19:34,705 --> 00:19:36,100 >> Audienca: [padëgjueshme]. 360 00:19:36,100 --> 00:19:38,030 >> Kryetari 1: gjatë [padëgjueshme]. 361 00:19:38,030 --> 00:19:41,860 Dhe pastaj një kohë të gjatë është e dyfishtë që. 362 00:19:41,860 --> 00:19:42,814 >> Audienca: Jo, jo. 363 00:19:42,814 --> 00:19:47,107 Një kohë të gjatë është vetëm një int. 364 00:19:47,107 --> 00:19:50,910 Kjo varet nga arkitekturës para [padëgjueshme] 365 00:19:50,910 --> 00:19:52,922 dhe int kanë të njëjtën madhësi. 366 00:19:52,922 --> 00:19:54,172 [E padëgjueshme]. 367 00:19:54,172 --> 00:19:58,841 368 00:19:58,841 --> 00:20:00,920 >> Kryetari 1: Pra, një kohë të gjatë dhe një int janë njëjtë. 369 00:20:00,920 --> 00:20:02,943 Dhe pastaj një kohë të gjatë është dyfishi i int. 370 00:20:02,943 --> 00:20:03,910 Best. 371 00:20:03,910 --> 00:20:05,550 Dhe pastaj, çfarë është lloji i fundit? 372 00:20:05,550 --> 00:20:06,510 >> Audienca: Pointer. 373 00:20:06,510 --> 00:20:10,350 >> Kryetari 1: Po, kështu kemi mësuar pak për pointers. 374 00:20:10,350 --> 00:20:14,015 Dhe pa marrë parasysh se çfarë është një akrep është duke treguar to-- saj mund të jetë një yll char 375 00:20:14,015 --> 00:20:15,880 ose një int star-- 376 00:20:15,880 --> 00:20:20,530 është gjithmonë 4 bytes për një akrep. 377 00:20:20,530 --> 00:20:21,633 Pyetjet rreth se? 378 00:20:21,633 --> 00:20:22,116 Po? 379 00:20:22,116 --> 00:20:24,531 >> Audienca: [padëgjueshme]? 380 00:20:24,531 --> 00:20:29,530 >> Kryetari 1: Pra, një kohë të gjatë dhe një int janë e njëjtë në këtë aplikim CS50. 381 00:20:29,530 --> 00:20:32,302 >> Audienca: Pajisja janë krejtësisht të këmbyeshëm. 382 00:20:32,302 --> 00:20:33,510 >> Kryetari 1: Po. 383 00:20:33,510 --> 00:20:36,610 Pra pastaj një kohë të gjatë është e dyfishtë një int. 384 00:20:36,610 --> 00:20:39,250 >> Audienca: Ky është 32 bit? 385 00:20:39,250 --> 00:20:40,620 >> Kryetari 1: 32 bit, po. 386 00:20:40,620 --> 00:20:43,572 >> Audienca: Pra [padëgjueshme]? 387 00:20:43,572 --> 00:20:46,790 >> Kryetari 1: Po, në qoftë se ajo nuk ka shprehimisht thonë, ju 388 00:20:46,790 --> 00:20:47,870 duhet të marrë një 32 bit. 389 00:20:47,870 --> 00:20:50,040 >> Audienca: Kjo do të thotë diçka si duke marrë një 390 00:20:50,040 --> 00:20:51,498 Arkitektura si aplikim. 391 00:20:51,498 --> 00:20:58,800 392 00:20:58,800 --> 00:21:01,710 Për 64 bit, të vetmet gjëra që ndryshimi janë longs dhe pointers. 393 00:21:01,710 --> 00:21:05,614 Ata të dy [e padëgjueshme]. 394 00:21:05,614 --> 00:21:06,590 >> Kryetari 1: Po? 395 00:21:06,590 --> 00:21:07,566 >> Audienca: Pyetje. 396 00:21:07,566 --> 00:21:10,982 Pra, në një nga kuize praktike, ajo pyet për një int panënshkruar. 397 00:21:10,982 --> 00:21:15,374 Pra, si do që të përcaktohet nga një int [padëgjueshme]? 398 00:21:15,374 --> 00:21:18,140 >> Kryetari 1: Një panënshkruar në është edhe 4 bytes. 399 00:21:18,140 --> 00:21:21,172 Por ajo që është e ndryshme për një nënshkruar int dhe një int panënshkruar? 400 00:21:21,172 --> 00:21:22,422 >> Audienca: [padëgjueshme]. 401 00:21:22,422 --> 00:21:24,868 402 00:21:24,868 --> 00:21:25,630 >> Kryetari 1: E drejta. 403 00:21:25,630 --> 00:21:27,570 Dikush mund të përfaqësojnë vlera negative. 404 00:21:27,570 --> 00:21:28,580 Por si e bën atë të bëjë këtë? 405 00:21:28,580 --> 00:21:30,536 >> Audienca: [padëgjueshme]. 406 00:21:30,536 --> 00:21:36,370 >> Kryetari 1: Po, ai kursen 1 bit për të përfaqësuar shenjë. 407 00:21:36,370 --> 00:21:40,910 408 00:21:40,910 --> 00:21:45,040 E nënshkruar ka një grimë se përfaqëson shenjën. 409 00:21:45,040 --> 00:21:48,886 Dhe unsigned vetëm është e gjitha pozitive. 410 00:21:48,886 --> 00:21:50,365 >> Audienca: OK. 411 00:21:50,365 --> 00:21:54,230 Pra, ju thoni se a është e dyfishtë dy herë madhësinë e një noton? 412 00:21:54,230 --> 00:21:58,202 >> Kryetari 1: Dopjo është dy herë madhësinë e një noton, po. 413 00:21:58,202 --> 00:22:01,639 >> Audienca: Si një akrep për një kohë të gjatë të gjatë [padëgjueshme]? 414 00:22:01,639 --> 00:22:06,058 415 00:22:06,058 --> 00:22:10,870 >> Kryetari 1: Pra, pyetja është se si e bën tregues për një long-- të gjatë 416 00:22:10,870 --> 00:22:13,800 se si është se vetëm katër bytes kur një kohë të gjatë 8 bytes saj. 417 00:22:13,800 --> 00:22:17,310 Pra, mbani mend se çfarë është një tregues, thelb, në vlerën shumë bazë. 418 00:22:17,310 --> 00:22:19,046 >> Audienca: [padëgjueshme]. 419 00:22:19,046 --> 00:22:22,670 >> Kryetari 1: Po, kështu një akrep është vetëm një vend kujtim. 420 00:22:22,670 --> 00:22:28,040 Pra, kjo nuk ka rëndësi se sa shumë hapësirë se tregues është duke treguar për të. 421 00:22:28,040 --> 00:22:32,060 Ajo ka nevojë vetëm 4 bytes për të mbajtur nën e atë vend kujtesës. 422 00:22:32,060 --> 00:22:34,760 423 00:22:34,760 --> 00:22:36,010 Çdo pyetje të tjera? 424 00:22:36,010 --> 00:22:39,800 425 00:22:39,800 --> 00:22:41,050 Best. 426 00:22:41,050 --> 00:22:42,920 427 00:22:42,920 --> 00:22:47,460 >> Pra, gjëja e fundit që unë kam është prodhimi standarde. 428 00:22:47,460 --> 00:22:51,020 Ju duhet të përdorin ato shpesh mjaftueshme që ju mund të mbani mend. 429 00:22:51,020 --> 00:22:54,800 Por kjo është kur ne përdorim printf, për shembull. 430 00:22:54,800 --> 00:22:59,260 Dhe ne kemi këto placeholders që quheshin kodet format. 431 00:22:59,260 --> 00:23:03,910 >> Pra qind c char, për qind i për int, dhe ne mund të përdorë gjithashtu edhe për qind d. 432 00:23:03,910 --> 00:23:05,130 Është e njëjta gjë. 433 00:23:05,130 --> 00:23:08,200 Por, në përgjithësi, në CS50 ne të përpiqen të përdorin për qind i. 434 00:23:08,200 --> 00:23:09,860 Përqindja f për noton. 435 00:23:09,860 --> 00:23:15,620 Ld qind për kohë të gjatë dhe qind s për varg. 436 00:23:15,620 --> 00:23:18,550 >> Në mënyrë të ngjashme, ne kemi qenë duke përdorur disa nga këto sekuenca ikjes. 437 00:23:18,550 --> 00:23:22,431 Për shembull, backslash n për linjë të re. 438 00:23:22,431 --> 00:23:26,910 Kjo është vetëm për të, kur ju jeni formatimit kodin tuaj për të shtypura f. 439 00:23:26,910 --> 00:23:27,260 Po? 440 00:23:27,260 --> 00:23:28,906 >> Audienca: Çfarë është qind për d? 441 00:23:28,906 --> 00:23:31,850 >> Kryetari 1: Pra pyetja është ajo që është qind për d? 442 00:23:31,850 --> 00:23:33,270 Përqindja d është për ints. 443 00:23:33,270 --> 00:23:37,392 Përqind d dhe përqind i janë njëjtë. 444 00:23:37,392 --> 00:23:41,130 >> Audienca: Çfarë është dallimi në mes backslash n dhe r backslash? 445 00:23:41,130 --> 00:23:45,300 >> Kryetari 1: Pra, pyetja është çfarë është Dallimi në mes reagim të ashpër n dhe 446 00:23:45,300 --> 00:23:48,615 r reagim? 447 00:23:48,615 --> 00:23:50,906 Unë mendoj se r backslash is-- 448 00:23:50,906 --> 00:23:54,340 >> Audienca: Pra r backslash vetëm nënkupton kthehet në fillim të linjës 449 00:23:54,340 --> 00:23:56,670 pa të vërtetë duke shkuar në një linjë të re. 450 00:23:56,670 --> 00:24:01,000 Pra, nëse keni shkruar një r backslash dhe ju të kthehemi në fillim të linjës 451 00:24:01,000 --> 00:24:04,005 atëherë keni shkruar shumë gjëra, ju prishësh sende që është tashmë në 452 00:24:04,005 --> 00:24:04,390 [E padëgjueshme]. 453 00:24:04,390 --> 00:24:06,725 Ndërsa, n fakt shkon për një të ri line dhe shkon për [padëgjueshme]. 454 00:24:06,725 --> 00:24:10,525 455 00:24:10,525 --> 00:24:13,915 >> Kryetari 1: E pra, ndonjë pyetje të tjera? 456 00:24:13,915 --> 00:24:15,430 Të gjithë të drejtë. 457 00:24:15,430 --> 00:24:18,617 Unë jam duke shkuar për të dorëzuar atë në Dan i cili do të vazhdojë. 458 00:24:18,617 --> 00:24:25,078 >> [Duartrokitje] 459 00:24:25,078 --> 00:25:08,814 460 00:25:08,814 --> 00:25:09,720 >> DAN: Të gjitha Righty. 461 00:25:09,720 --> 00:25:18,590 Kështu që unë do të flasim për një tjetër të gjerë varg i ideve nga klasa që janë 462 00:25:18,590 --> 00:25:23,220 afërsisht përfaqësues i jave dy dhe Fillimi i javës tre duke filluar nga jashtë 463 00:25:23,220 --> 00:25:28,690 me hedh, e cila është vetëm një mënyrë për të trajtimin e një vlerë të një lloji të caktuar si 464 00:25:28,690 --> 00:25:30,830 një vlerë e një lloji të ndryshëm. 465 00:25:30,830 --> 00:25:34,110 Pra, ne mund ta bëjmë këtë me karaktere të Ints, gjithandej në ints, dhe 466 00:25:34,110 --> 00:25:35,360 longs gjatë të dyfishtë. 467 00:25:35,360 --> 00:25:38,170 468 00:25:38,170 --> 00:25:44,500 >> Të gjitha këto gjëra mund të përdoret si mënyra e trajtimit të disa vlera numerike 469 00:25:44,500 --> 00:25:48,370 char minus si disa të tjera vlera numerike. 470 00:25:48,370 --> 00:25:54,480 Pra, ka disa çështje me këtë, i Sigurisht, e cila vjen kur ju hedhin 471 00:25:54,480 --> 00:25:57,860 gjëra të tilla si noton në ints. 472 00:25:57,860 --> 00:26:00,500 Pra, kjo është pak i çuditshëm. 473 00:26:00,500 --> 00:26:03,170 Ne kemi një noton që është 1.31. 474 00:26:03,170 --> 00:26:05,220 Ne shumohen atë nga 10.000. 475 00:26:05,220 --> 00:26:08,380 Dhe atëherë ne print it si një int. 476 00:26:08,380 --> 00:26:09,630 Çfarë e bën këtë output? 477 00:26:09,630 --> 00:26:11,600 478 00:26:11,600 --> 00:26:14,020 10.000 herë 1.31. 479 00:26:14,020 --> 00:26:18,761 Pra 13,000, është që të mend? 480 00:26:18,761 --> 00:26:20,685 >> Audienca: Unë mendoj se është 10,000. 481 00:26:20,685 --> 00:26:24,234 >> DAN: Kështu që unë jam duke e shumëzuar atë me 10,000 para se unë jam hedh atë. 482 00:26:24,234 --> 00:26:25,202 >> Audienca: Oh. 483 00:26:25,202 --> 00:26:27,622 A nuk do të ketë një të tillë 9 dhe disa 0 numra? 484 00:26:27,622 --> 00:26:29,270 >> DAN: Ju mund të keni disa shifra të pazakontë. 485 00:26:29,270 --> 00:26:32,410 486 00:26:32,410 --> 00:26:37,670 Në mënyrë të drejtë, që është 1.3 herë më 10.000. 487 00:26:37,670 --> 00:26:40,040 Pra, kjo është 13.000. 488 00:26:40,040 --> 00:26:41,313 Dhe kjo weird-- shtesë 489 00:26:41,313 --> 00:26:42,160 >> Audienca: 13,100. 490 00:26:42,160 --> 00:26:42,650 >> DAN: 13,100. 491 00:26:42,650 --> 00:26:44,910 Faleminderit, Rob. 492 00:26:44,910 --> 00:26:46,610 Dhe kjo weirdness-- shtesë 493 00:26:46,610 --> 00:26:48,060 kjo 9,9-- 494 00:26:48,060 --> 00:26:53,860 është thjesht për shkak se këtë hedh përfundoi arrestimi poshtë ku 495 00:26:53,860 --> 00:26:55,394 ajo nuk duhet të ketë. 496 00:26:55,394 --> 00:26:55,871 Po. 497 00:26:55,871 --> 00:26:58,256 >> Audienca: hedh ndodh pasi çdo gjë tjetër? 498 00:26:58,256 --> 00:27:03,865 >> DAN: Pra, sepse unë kam këtë në shtyp, ajo e bën këtë shumëzimin para saj 499 00:27:03,865 --> 00:27:05,230 e bën këtë hedh. 500 00:27:05,230 --> 00:27:06,140 >> Audienca: [padëgjueshme]. 501 00:27:06,140 --> 00:27:11,350 >> DAN: Unë mendoj se do të hidhet së pari, vërtet, e cila do të jetë 10,000. 502 00:27:11,350 --> 00:27:12,610 Çdo gjë tjetër? 503 00:27:12,610 --> 00:27:13,330 Best. 504 00:27:13,330 --> 00:27:16,344 Pra, kjo është 13.099. 505 00:27:16,344 --> 00:27:17,840 Pse ndodh kjo? 506 00:27:17,840 --> 00:27:18,900 Pasaktësi. 507 00:27:18,900 --> 00:27:21,020 >> Gjithandej nuk janë të përsosur. 508 00:27:21,020 --> 00:27:27,550 Ato mund të përfaqësojnë vetëm numrat për një numër i caktuar i figurave të rëndësishme. 509 00:27:27,550 --> 00:27:35,120 Pra, në qoftë se ne të shtypura nga 8 fiq sig mbi ky noton, kemi një lloj 510 00:27:35,120 --> 00:27:36,800 shëmtuar Numri kërkim. 511 00:27:36,800 --> 00:27:45,580 Dhe kjo është për shkak se 1.31 nuk mund të saktë të përfaqësohet nga të thjeshtë 512 00:27:45,580 --> 00:27:49,000 kompetencat e dy në makinë. 513 00:27:49,000 --> 00:27:53,530 Pra, ajo përfundon duke marrë më afër me mend, e cila përfundon 514 00:27:53,530 --> 00:27:55,710 duke qenë pak të ulët. 515 00:27:55,710 --> 00:27:57,730 Kuptim? 516 00:27:57,730 --> 00:27:59,110 OK. 517 00:27:59,110 --> 00:28:05,840 >> Tani, kaloi janë një mënyrë të ndryshme të duke bërë deklarata të kushtëzuar, ku të gjitha 518 00:28:05,840 --> 00:28:09,900 ne lidhje me kujdes është një variabël të vetme. 519 00:28:09,900 --> 00:28:16,570 Pra, në këtë shembull të veçantë, ne jemi marrjen e një tërësi nga ana e përdoruesit. 520 00:28:16,570 --> 00:28:21,070 Dhe atëherë ne jemi duke kërkuar në ajo që është numër i plotë. 521 00:28:21,070 --> 00:28:23,500 Me sa duket, kjo është numër një deri në katër. 522 00:28:23,500 --> 00:28:24,800 Kjo është ajo që ne jemi duke kërkuar për. 523 00:28:24,800 --> 00:28:28,450 >> Kështu që ju të bëni një të kaluar të emrin e ndryshueshme. 524 00:28:28,450 --> 00:28:34,290 Pastaj ju ngritur raste të jetë e mundur vlerat ajo mund të jetë. 525 00:28:34,290 --> 00:28:37,730 Pra një rast, thonë se është e ulët. 526 00:28:37,730 --> 00:28:41,080 Dhe pastaj ju të thyer për të marrë nga të kaloni gjendjen kështu 527 00:28:41,080 --> 00:28:43,270 ju nuk do të mbajë. 528 00:28:43,270 --> 00:28:44,830 >> Në case-- ardhshëm 529 00:28:44,830 --> 00:28:46,940 kështu rast dy dhe rasti three-- 530 00:28:46,940 --> 00:28:51,920 në qoftë se është rasti dy vetëm ajo bie poshtë për të vija e parë e kodit që e sheh si me 531 00:28:51,920 --> 00:28:55,400 rast tre deri sa sheh një pushim. 532 00:28:55,400 --> 00:29:00,430 Pra, arsyeja që ju të merrni një rast të vetëm të shtypura të ulët është për shkak se unë 533 00:29:00,430 --> 00:29:01,890 kanë këtë pushim këtu. 534 00:29:01,890 --> 00:29:05,360 Nëse unë, të themi, injoruar këtë break-- në qoftë se unë e hodhi këtë breakaway-- 535 00:29:05,360 --> 00:29:09,740 ajo do të shtypura të ulët, dhe pastaj ajo do të shtypura mes, dhe pastaj ajo do të thyejnë. 536 00:29:09,740 --> 00:29:12,200 >> Pra pushimet janë një pjesë e rëndësishme i kaloni kushteve dhe 537 00:29:12,200 --> 00:29:14,340 ata duhet të jenë aty. 538 00:29:14,340 --> 00:29:20,070 Çdo raste që nuk janë deklaruar në mënyrë të qartë trajtohen nga default 539 00:29:20,070 --> 00:29:26,645 Rasti në kaloni dhe duhet të hidhet. 540 00:29:26,645 --> 00:29:31,363 >> Audienca: OS 1, 2, 3, dhe 4 do të ishte n? 541 00:29:31,363 --> 00:29:33,310 >> DAN: Vlerat që n mund të jetë. 542 00:29:33,310 --> 00:29:34,654 Po. 543 00:29:34,654 --> 00:29:35,146 Po? 544 00:29:35,146 --> 00:29:37,606 >> Audienca: Pra, kur ju keni që [e padëgjueshme]? 545 00:29:37,606 --> 00:29:44,002 546 00:29:44,002 --> 00:29:46,830 >> DAN: Ju do të shtypura të ulët, dhe pastaj ajo do të shtypura mesme, dhe 547 00:29:46,830 --> 00:29:47,400 atëherë ajo do të thyejnë. 548 00:29:47,400 --> 00:29:50,244 >> Audienca: Pse do të shtypura mesme në qoftë se [e padëgjueshme]? 549 00:29:50,244 --> 00:29:54,036 550 00:29:54,036 --> 00:30:00,550 >> DAN: Pra, çdo gjë nën një rast para një pushim bie nën. 551 00:30:00,550 --> 00:30:09,390 Pra, çështja e shkruar është rast nën një si është kjo shtypura në vijim. 552 00:30:09,390 --> 00:30:09,890 Po? 553 00:30:09,890 --> 00:30:11,140 >> Audienca: [padëgjueshme]? 554 00:30:11,140 --> 00:30:15,890 555 00:30:15,890 --> 00:30:22,170 >> DAN: Pra, ky numër është vetëm një të veçantë vlera që ky variabël 556 00:30:22,170 --> 00:30:23,420 mund të marrë, apo jo? 557 00:30:23,420 --> 00:30:26,740 558 00:30:26,740 --> 00:30:28,490 Ka që e bëjnë kuptim? 559 00:30:28,490 --> 00:30:28,990 Po. 560 00:30:28,990 --> 00:30:31,490 >> Audienca: [padëgjueshme]? 561 00:30:31,490 --> 00:30:34,130 >> DAN: Po, rasti i dy do të shtypura e mesme dhe pastaj pushim. 562 00:30:34,130 --> 00:30:35,380 >> Audienca: [padëgjueshme]? 563 00:30:35,380 --> 00:30:37,954 564 00:30:37,954 --> 00:30:40,050 >> DAN: Unë mendoj se çdo? 565 00:30:40,050 --> 00:30:43,855 Çfarë lloje të tjera të të dhënave mund të kaloni mbi? 566 00:30:43,855 --> 00:30:46,320 >> Audienca: Ju mund të kaloni mbi çdo lloje të të dhënave. 567 00:30:46,320 --> 00:30:50,905 Por kjo vetëm do të thotë asgjë mbi karaktere dhe Ints dhe stuff like that, sepse 568 00:30:50,905 --> 00:30:55,600 në qoftë se ju jeni switching mbi një akrep që nuk ka të vërtetë të bëjë kuptim, 569 00:30:55,600 --> 00:30:59,555 switching mbi ngarkesat, qoftë ajo edhe le të ju bëni që, për shkak të pikës lundrues 570 00:30:59,555 --> 00:31:02,840 në saktësi, ju nuk do të vërtetë doni të bëni që gjithsesi. 571 00:31:02,840 --> 00:31:07,320 Pra, shumë e shumë, vetëm Ints dhe Shenjë dhe stuff like that. 572 00:31:07,320 --> 00:31:12,360 >> DAN: Po, kjo është kur ju keni të qartë vlerat që ju e dini, unë mendoj, mund të jetë 573 00:31:12,360 --> 00:31:14,250 se një switch është në të vërtetë të dobishme. 574 00:31:14,250 --> 00:31:17,094 575 00:31:17,094 --> 00:31:18,990 Mirë? 576 00:31:18,990 --> 00:31:21,370 OK. 577 00:31:21,370 --> 00:31:26,180 >> Fusha është varg që një deklaruar ndryshueshme shtrihet. 578 00:31:26,180 --> 00:31:32,190 Pra, në këtë copë të vogël të kodit që kam, do të ishte plot me gabime. 579 00:31:32,190 --> 00:31:41,450 Dhe arsyeja është që unë shpallur këtë int Unë në kuadër të kësaj për lak. 580 00:31:41,450 --> 00:31:46,390 Dhe atëherë unë jam duke u përpjekur për të referencës që i jashtë që për qëllimin loop. 581 00:31:46,390 --> 00:31:50,330 >> Pra, në thelb, ju mund të mendoni për qëllimin si çdo gjë që ju të deklarojë 582 00:31:50,330 --> 00:31:59,750 me brenda një sërë formatimin e teksteve kaçurrel vetëm ekziston brenda këtyre formatimin e teksteve kaçurrel. 583 00:31:59,750 --> 00:32:04,990 Dhe në qoftë se ju provoni dhe të përdorin këtë variabël jashtë këtyre formatimin e teksteve kaçurrel, ju do të 584 00:32:04,990 --> 00:32:08,356 merrni një gabim nga përpiluesit. 585 00:32:08,356 --> 00:32:08,812 Po? 586 00:32:08,812 --> 00:32:09,724 >> Audienca: Pra kjo nuk punon? 587 00:32:09,724 --> 00:32:11,790 >> DAN: Kjo nuk funksionon, po. 588 00:32:11,790 --> 00:32:17,190 589 00:32:17,190 --> 00:32:18,660 Vargjet. 590 00:32:18,660 --> 00:32:19,780 String një char *. 591 00:32:19,780 --> 00:32:22,250 Ata janë të njëjtë. 592 00:32:22,250 --> 00:32:25,540 Ata janë vetëm pointers në karaktere. 593 00:32:25,540 --> 00:32:33,000 Dhe çdo vargjet që keni duhet të përfundojë me backslash zero, që është vetëm 594 00:32:33,000 --> 00:32:34,410 një konventë c. 595 00:32:34,410 --> 00:32:36,680 >> Ajo quhet terminator NULL. 596 00:32:36,680 --> 00:32:39,050 Dhe NULL-- 597 00:32:39,050 --> 00:32:41,670 Kapitali N, kryeqyteti U, kapitali L, kapitali L-- 598 00:32:41,670 --> 00:32:44,290 nuk është e njëjtë si Terminator NULL. 599 00:32:44,290 --> 00:32:46,640 Kjo është një akrep. 600 00:32:46,640 --> 00:32:48,280 Kjo është një karakter. 601 00:32:48,280 --> 00:32:49,530 Ata janë shumë të dallueshme. 602 00:32:49,530 --> 00:32:50,200 Mos harroni atë. 603 00:32:50,200 --> 00:32:52,320 Ajo do të jetë në quiz, ndoshta. 604 00:32:52,320 --> 00:32:54,040 Unë nuk kam parë quiz. 605 00:32:54,040 --> 00:32:57,880 606 00:32:57,880 --> 00:32:58,840 Po? 607 00:32:58,840 --> 00:33:01,232 >> Audienca: Pra NULL është, të themi, akrep? 608 00:33:01,232 --> 00:33:01,995 >> DAN: Po. 609 00:33:01,995 --> 00:33:05,170 >> Audienca: Çfarë e bën [padëgjueshme]? 610 00:33:05,170 --> 00:33:10,050 >> DAN: Në qoftë se, të themi, malloc quhet kur ju nuk kanë kujtesë të mjaftueshme për të marrë 611 00:33:10,050 --> 00:33:14,400 çfarëdo madhësi që ju jeni duke kërkuar për, malloc do të kthehet NULL. 612 00:33:14,400 --> 00:33:19,550 Është, në thelb, sa herë që një funksion është duhet të kthehen një tregues, ju 613 00:33:19,550 --> 00:33:22,600 duhet të kontrolloni kundër NULL sepse NULL është një good-- mjaft 614 00:33:22,600 --> 00:33:25,260 kjo është, lloj, vlera e mbeturinave. 615 00:33:25,260 --> 00:33:27,050 Kjo është një zero sa i përket pointers shkojnë. 616 00:33:27,050 --> 00:33:29,630 617 00:33:29,630 --> 00:33:32,250 >> Sa herë që ju e quani një funksion, që jep një akrep. 618 00:33:32,250 --> 00:33:35,960 Ju jeni do të dëshironi të kontrolloni të jetë i sigurt se se akrep nuk është NULL 619 00:33:35,960 --> 00:33:37,760 sepse NULL është shumë e zakonshme. 620 00:33:37,760 --> 00:33:40,160 Kjo është lloj i një kthim të mbeturinave. 621 00:33:40,160 --> 00:33:44,902 Pra, nëse diçka nuk ka shkuar drejtë, vetëm kthimi NULL në vend. 622 00:33:44,902 --> 00:33:45,898 >> Audienca: [padëgjueshme]? 623 00:33:45,898 --> 00:33:48,922 >> DAN: Po, dhe kjo është kjo. 624 00:33:48,922 --> 00:33:51,750 >> Audienca: [padëgjueshme]? 625 00:33:51,750 --> 00:33:52,800 >> DAN: Spell atë si kjo. 626 00:33:52,800 --> 00:33:54,150 Është terminator NULL. 627 00:33:54,150 --> 00:33:56,560 Është e vogle N-U-L-L nëse ju jeni që shpreh atë. 628 00:33:56,560 --> 00:33:59,860 >> Audienca: Dhe unë shkova vetëm mbrapa dhe testuar atë. 629 00:33:59,860 --> 00:34:03,010 Dhe në qoftë se ju të përpiqen për të vënë një pikë lundrues vlera në një switch, ajo do të çirrem në ju 630 00:34:03,010 --> 00:34:05,916 duke thënë, deklarata kërkon shprehje e tipit integer. 631 00:34:05,916 --> 00:34:07,166 >> DAN: Nuk ju shkoni. 632 00:34:07,166 --> 00:34:09,639 633 00:34:09,639 --> 00:34:12,246 Por vërtet, çfarë ishte pyetja përsëri? 634 00:34:12,246 --> 00:34:13,496 >> Audienca: [padëgjueshme]? 635 00:34:13,496 --> 00:34:16,150 636 00:34:16,150 --> 00:34:23,679 >> DAN: Pra kapitali N, kryeqyteti U, kapitali L, kryeqyteti L është një c gjë aktuale. 637 00:34:23,679 --> 00:34:29,719 Kjo është tregues NULL dhe do vetëm të trajtohet si i tillë. 638 00:34:29,719 --> 00:34:33,530 Ju kurrë nuk do të përpiqet dhe të shpalosë Karakteri NULL dhe të shohin ndonjë 639 00:34:33,530 --> 00:34:35,630 mënyrë tjetër se sa kjo. 640 00:34:35,630 --> 00:34:36,610 Po? 641 00:34:36,610 --> 00:34:42,490 >> Audienca: Pra, të kthehej në char max ose diçka në shënimet shpjeguese, do ajo 642 00:34:42,490 --> 00:34:43,960 mishërojnë të njëjtin funksion si [e padëgjueshme]? 643 00:34:43,960 --> 00:34:50,655 644 00:34:50,655 --> 00:34:54,949 >> Audienca: Pra, jeni duke iu referuar kthyer max char nga getchar, ose 645 00:34:54,949 --> 00:34:55,444 çfarëdo qoftë ajo? 646 00:34:55,444 --> 00:34:55,940 >> Audienca: Po. 647 00:34:55,940 --> 00:34:58,620 >> Audienca: Po, në mënyrë të përgjithshme Termi për të gjitha ato gjëra 648 00:34:58,620 --> 00:34:59,920 janë kujdestare vlerat. 649 00:34:59,920 --> 00:35:03,640 Pra si u kthyer max int nga GetInt dhe max char nga getchar, është e 650 00:35:03,640 --> 00:35:06,010 menduar të jetë si, të gjithë të drejtë, në qoftë se këto gjëra janë duke u kthyer për ne, 651 00:35:06,010 --> 00:35:07,210 diçka shkoi keq. 652 00:35:07,210 --> 00:35:09,950 >> Për pointers, ne vetëm të ndodhë që të ketë kjo vlerë rojtar që të gjithë 653 00:35:09,950 --> 00:35:10,750 pajtohet me. 654 00:35:10,750 --> 00:35:13,210 Dhe kjo është gjë që ju të kthehet kur gjërat shkojnë keq. 655 00:35:13,210 --> 00:35:15,910 Pra max char është ajo që ne jemi duke përdorur për të përfaqësuar diçka 656 00:35:15,910 --> 00:35:18,100 si NULL ose getchar. 657 00:35:18,100 --> 00:35:23,420 >> Audienca: Pra, nëse ju jeni të testimit getchar, mund të ju vetëm vënë NULL? 658 00:35:23,420 --> 00:35:23,910 A do që të bëjë një ndryshim? 659 00:35:23,910 --> 00:35:25,400 >> DAN: Ju nuk mund vetëm të shikoni NULL. 660 00:35:25,400 --> 00:35:30,130 Ju do të duhet të kontrolloni max char, sepse Vlera e kthyer nga funksioni është 661 00:35:30,130 --> 00:35:35,416 a nuk karakter një akrep. 662 00:35:35,416 --> 00:35:35,888 Po? 663 00:35:35,888 --> 00:35:38,248 >> Audienca: Kjo pyetje kërkon për gjatësinë e fijes. 664 00:35:38,248 --> 00:35:40,136 A do të përfshijnë karakterin NULL? 665 00:35:40,136 --> 00:35:41,000 >> DAN: Nr 666 00:35:41,000 --> 00:35:45,930 Dhe kjo është në fakt se si Gjatësia string di për të ndaluar për shkak se ajo shkon përmes 667 00:35:45,930 --> 00:35:49,070 array juaj e karaktereve deri ajo sheh një karakter NULL. 668 00:35:49,070 --> 00:35:51,030 Dhe atëherë kjo është si, të gjithë e drejtë, unë jam duke bërë. 669 00:35:51,030 --> 00:35:52,130 >> Audienca: [padëgjueshme] pesë? 670 00:35:52,130 --> 00:35:53,990 >> DAN: Përshëndetje do të ishte pesë. 671 00:35:53,990 --> 00:35:55,240 Po. 672 00:35:55,240 --> 00:35:59,580 673 00:35:59,580 --> 00:36:02,880 Pra vargjeve janë të vazhdueshme blloqe të memories. 674 00:36:02,880 --> 00:36:08,480 Ata kanë qasje të menjëhershme duke thënë emrin e grup dhe më pas, në kaçurrel 675 00:36:08,480 --> 00:36:16,720 formatimin e teksteve, çfarëdo indeksi ju doni të shkoni për të, ata janë të indeksuar nga zero deri 676 00:36:16,720 --> 00:36:20,100 gjatësia e vektorit minus 1. 677 00:36:20,100 --> 00:36:23,070 >> Dhe ata janë deklaruar nga lloji i gjë që ju jeni ruajtjen në 678 00:36:23,070 --> 00:36:29,750 grup, emri i vektorit, dhe pastaj pavarësisht nga madhësia është i atij array. 679 00:36:29,750 --> 00:36:36,660 Pra, kjo është një grup char e gjatësisë gjashtë që ka këto vlera. 680 00:36:36,660 --> 00:36:42,050 681 00:36:42,050 --> 00:36:42,700 Po? 682 00:36:42,700 --> 00:36:43,950 >> Audienca: [padëgjueshme]? 683 00:36:43,950 --> 00:36:47,980 684 00:36:47,980 --> 00:36:48,460 >> DAN: Po. 685 00:36:48,460 --> 00:36:51,340 >> Audienca: [padëgjueshme]? 686 00:36:51,340 --> 00:36:56,700 >> DAN: Në qoftë se ju keni atë që po ndodh në array bërë tashmë. 687 00:36:56,700 --> 00:37:02,260 Kështu që ju mund të specifikoni këtë vend si, të themi, char, çfarëdo emri i juaj 688 00:37:02,260 --> 00:37:12,200 array është, kllapa bosh barabartë kaçurrel shtrëngoj H presje E presje L L presje presje 689 00:37:12,200 --> 00:37:16,290 O presje karakter NULL dhe mbajtëse kaçurrel. 690 00:37:16,290 --> 00:37:18,180 Kjo do të punojnë edhe si një deklaratë. 691 00:37:18,180 --> 00:37:20,886 >> Audienca: [padëgjueshme]? 692 00:37:20,886 --> 00:37:23,110 >> DAN: Pastaj ju duhet të keni madhësia bërë tashmë. 693 00:37:23,110 --> 00:37:23,896 >> Audienca: [padëgjueshme]? 694 00:37:23,896 --> 00:37:25,146 >> DAN: Po. 695 00:37:25,146 --> 00:37:30,114 696 00:37:30,114 --> 00:37:32,420 Të gjitha Righty. 697 00:37:32,420 --> 00:37:36,430 Argumente command line janë një mënyrë e duke marrë të dhëna nga përdoruesit si 698 00:37:36,430 --> 00:37:39,380 Argumentet për kryesor. 699 00:37:39,380 --> 00:37:40,600 Main merr dy argumente. 700 00:37:40,600 --> 00:37:47,680 Numri i argumenteve që është duke u kalonte vija e komandës dhe një 701 00:37:47,680 --> 00:37:55,340 vektor string ose një koleksion varg e të gjitha argumenteve. 702 00:37:55,340 --> 00:38:07,840 >> Pra, nëse unë, të themi, i quajtur një funksion të tillë si a dot nga 1 hapësirë, 2 hapësirë, tre, 703 00:38:07,840 --> 00:38:10,110 argc do të jetë 4. 704 00:38:10,110 --> 00:38:17,370 Dhe argv 0 do të jetë një dot jashtë. 705 00:38:17,370 --> 00:38:19,130 Argv1 do të jetë 1. 706 00:38:19,130 --> 00:38:23,030 argv2 do të jetë 2. argv3 do të ishte e 3, në këtë rast të veçantë. 707 00:38:23,030 --> 00:38:23,310 Po? 708 00:38:23,310 --> 00:38:25,400 >> Audienca: [padëgjueshme]? 709 00:38:25,400 --> 00:38:34,010 >> DAN: Elementi i fundit në grup sepse array është gjatësia argc plus 710 00:38:34,010 --> 00:38:41,050 një nga argb, element fundit është tregues NULL. 711 00:38:41,050 --> 00:38:42,580 Është argc plus 1. 712 00:38:42,580 --> 00:38:46,210 713 00:38:46,210 --> 00:38:52,150 Pra, në rast se unë vetëm tha, atë do të argv 0 është një dot jashtë. 714 00:38:52,150 --> 00:38:56,330 argv 1 është 1 argv2 eshte 2. argv 3 është 3. 715 00:38:56,330 --> 00:39:03,490 argv 4, e cila eshte e madhe se argc do të jetë NULL. 716 00:39:03,490 --> 00:39:04,870 >> Dhe kjo është tregues NULL. 717 00:39:04,870 --> 00:39:06,590 Po. 718 00:39:06,590 --> 00:39:11,250 Dhe kjo është për shkak se vargu është një yll char është një akrep. 719 00:39:11,250 --> 00:39:14,102 Pra, ajo duhet të jetë e njëjtë lloji. 720 00:39:14,102 --> 00:39:14,595 Po? 721 00:39:14,595 --> 00:39:16,074 >> Audienca: Dy pyetje. 722 00:39:16,074 --> 00:39:21,004 Pra, një, çfarë është dallimi në mes kjo dhe GetString tjetër se një lloj 723 00:39:21,004 --> 00:39:22,483 në motor përdorues? 724 00:39:22,483 --> 00:39:25,934 Dhe dy, është ajo ruhet brenda kujtesa juaj i fundit? 725 00:39:25,934 --> 00:39:28,399 Pra si, GetString do të jetë [e padëgjueshme]? 726 00:39:28,399 --> 00:39:31,357 727 00:39:31,357 --> 00:39:33,650 >> DAN: Ku është ajo e ruajtur? 728 00:39:33,650 --> 00:39:34,905 Unë nuk e di ku është e ruajtur. 729 00:39:34,905 --> 00:39:40,000 >> Audienca: Pra, në të vërtetë, ju e dini se si çdo funksionojë ju telefononi është e argumente 730 00:39:40,000 --> 00:39:42,170 janë ruajtur në rafte? 731 00:39:42,170 --> 00:39:46,610 Pra argc dhe argv janë argumente për të kryesore dhe ata janë në rafte, apo me të vërtetë 732 00:39:46,610 --> 00:39:49,131 vetëm mbi atë që ju mendoni si fillimi i rafte. 733 00:39:49,131 --> 00:39:53,490 Cila ishte pjesa tjetër e pyetjes? 734 00:39:53,490 --> 00:39:56,821 >> Audienca: Pra, çfarë është [e padëgjueshme]? 735 00:39:56,821 --> 00:40:00,990 >> DAN: Po, kjo është vetëm një mënyrë të ndryshme për të marrë të dhëna nga përdoruesit. 736 00:40:00,990 --> 00:40:06,030 Pak më të efektshme dhe kjo e kjo është handier për Scripts sepse ju 737 00:40:06,030 --> 00:40:10,070 vetëm mund të kalojë argumente për kryesor tuaj Funksioni në vend që të presin 738 00:40:10,070 --> 00:40:13,400 për përdoruesit në qoftë se ju nuk keni ndonjë përdorues. 739 00:40:13,400 --> 00:40:16,280 >> Audienca: Dhe vërtet, merrni vargjet do të jetë [e padëgjueshme]. 740 00:40:16,280 --> 00:40:17,922 Ajo do të ruajë gjëra që ju nevojitet. 741 00:40:17,922 --> 00:40:18,834 >> DAN: Po? 742 00:40:18,834 --> 00:40:21,114 >> Audienca: [padëgjueshme]? 743 00:40:21,114 --> 00:40:27,545 >> DAN: Po, argv 0 gjithmonë përfshin dot çaj i thirrjes së funksionit. 744 00:40:27,545 --> 00:40:28,042 Po? 745 00:40:28,042 --> 00:40:29,292 >> Audienca: [padëgjueshme]? 746 00:40:29,292 --> 00:40:33,509 747 00:40:33,509 --> 00:40:37,310 >> DAN: Po, secili prej argumenteve janë përfundoi në karakter NULL sepse ata 748 00:40:37,310 --> 00:40:38,310 janë vargjet. 749 00:40:38,310 --> 00:40:40,892 >> Audienca: [padëgjueshme]? 750 00:40:40,892 --> 00:40:44,116 >> DAN: Po, argv argc është një tregues NULL. 751 00:40:44,116 --> 00:40:45,112 >> Audienca: [padëgjueshme]? 752 00:40:45,112 --> 00:40:47,104 >> DAN: Oh yeah. 753 00:40:47,104 --> 00:40:48,100 Po, keq. 754 00:40:48,100 --> 00:40:49,594 >> Audienca: Pra [padëgjueshme]? 755 00:40:49,594 --> 00:41:08,518 756 00:41:08,518 --> 00:41:16,340 >> DAN: Pra, pyetja është nëse keni pasur command line dot çaj një pikë nga 1, 2, 757 00:41:16,340 --> 00:41:20,410 do numrin e linjës së komandës Argumentet të jetë dy apo do të ishte tre? 758 00:41:20,410 --> 00:41:24,420 759 00:41:24,420 --> 00:41:28,240 >> Audienca: Unë mendoj se nuk ka me të vërtetë rëndësi. 760 00:41:28,240 --> 00:41:31,370 Unë priren për të thënë, oh, ju nuk ka kaluar çdo komandë argumentet linjë kur, 761 00:41:31,370 --> 00:41:32,730 natyrisht, ju quajti funksionin. 762 00:41:32,730 --> 00:41:37,950 Kështu që unë priren të me zë të përjashtuar funksioni nga vija e komandës 763 00:41:37,950 --> 00:41:40,350 argumente edhe pse kjo është përfshira në argv. 764 00:41:40,350 --> 00:41:42,600 >> DAN: Por në qoftë se ajo ishte në test-- 765 00:41:42,600 --> 00:41:46,550 yeah-- dhe gjithashtu në qoftë se ju thonë diçka si argc barabartë 3, 766 00:41:46,550 --> 00:41:48,512 ju jeni në gjendje të sigurt. 767 00:41:48,512 --> 00:41:49,416 Po? 768 00:41:49,416 --> 00:41:50,666 >> Audienca: [padëgjueshme]? 769 00:41:50,666 --> 00:42:00,990 770 00:42:00,990 --> 00:42:09,510 >> DAN: Unë mendoj se në qoftë se në vend të duke e quajtur këtë në argc dhe string kllapa argv 771 00:42:09,510 --> 00:42:14,350 por mbajti të njëjtat lloje dhe të vetëm të quajtur ata diçka të ndryshme si një 772 00:42:14,350 --> 00:42:16,640 dhe b, do të ishte ende punë? 773 00:42:16,640 --> 00:42:18,790 Dhe kjo do të punojë ende, ju do just-- 774 00:42:18,790 --> 00:42:21,520 në vend të përdorimit argc-- ju do të përdorë dhe b. 775 00:42:21,520 --> 00:42:24,436 776 00:42:24,436 --> 00:42:25,408 Po? 777 00:42:25,408 --> 00:42:26,658 >> Audienca: [padëgjueshme]? 778 00:42:26,658 --> 00:42:34,642 779 00:42:34,642 --> 00:42:38,850 >> DAN: Pra, pyetja është GetString është duke shkuar për të ruajtur kujtesën në tog 780 00:42:38,850 --> 00:42:42,280 sepse GetString është char *. 781 00:42:42,280 --> 00:42:47,530 Ajo ruan kujtesën në grumbull, sepse ajo e quan tani malloc brenda aktual 782 00:42:47,530 --> 00:42:49,258 Zbatimi i GetString. 783 00:42:49,258 --> 00:42:53,210 784 00:42:53,210 --> 00:42:55,090 OK, të lëvizin. 785 00:42:55,090 --> 00:42:55,950 >> Sigurimit. 786 00:42:55,950 --> 00:43:01,090 Pra, që të jetë me të vërtetë i sigurt, ju mbështeten në asnjë një dhe ju lejojnë asnjë një qasje në ndonjë 787 00:43:01,090 --> 00:43:04,540 e informacionit tuaj, e cila është arsyeja pse gjithë ndërton makinat e tyre, 788 00:43:04,540 --> 00:43:09,580 sistemet e tyre operative, të gjithë e tyre Programet nga zeroja, dhe padyshim 789 00:43:09,580 --> 00:43:13,410 mos lidheni me çdo makina të tjera nepermjet internetit. 790 00:43:13,410 --> 00:43:17,350 Pra kompjuterat janë të pasigurt. 791 00:43:17,350 --> 00:43:19,200 Ata me të vërtetë janë. 792 00:43:19,200 --> 00:43:20,940 Ne duhet të besojnë njerëz të tjerë. 793 00:43:20,940 --> 00:43:26,500 >> Dhe ideja e sigurisë është se ju jeni duke u përpjekur për të kufizuar sasinë e 794 00:43:26,500 --> 00:43:27,540 besim që ju duhet. 795 00:43:27,540 --> 00:43:32,080 Dhe një nga mjetet që ju bëni që është me anë të kriptografisë. 796 00:43:32,080 --> 00:43:34,950 Cryptography është, në thelb, ne kemi sekrete. 797 00:43:34,950 --> 00:43:38,880 >> Ndonjëherë ne duhet të kalojë sekretet tona së bashku me, të themi, internet ose 798 00:43:38,880 --> 00:43:39,980 gjëra të tjera. 799 00:43:39,980 --> 00:43:43,180 Dhe ne nuk duam njerëzit të dini këto sekrete. 800 00:43:43,180 --> 00:43:50,100 Pra, ne encrypt sekretet tona në një mënyrë të që ne shpresojmë askush nuk mund ta kuptoj. 801 00:43:50,100 --> 00:43:51,600 >> Pra, ne used-- 802 00:43:51,600 --> 00:43:54,340 përmes rrjedhës së këtij class-- 803 00:43:54,340 --> 00:44:00,750 gjëra të tilla si Cezarit shifër dhe [Padëgjueshme], të cilat janë të dy shumë, shumë 804 00:44:00,750 --> 00:44:03,200 mënyra e pasigurtë të encrypting gjëra. 805 00:44:03,200 --> 00:44:07,930 Ata janë të lehtë për të kuptoj se çfarë ata janë dhe çfarë sekretet tuaja. 806 00:44:07,930 --> 00:44:12,130 Bota reale përdor shumë më tepër Skemat e komplikuara encryption. 807 00:44:12,130 --> 00:44:13,880 Dhe ne nuk do të marrë në shumë më tepër se kaq. 808 00:44:13,880 --> 00:44:18,280 809 00:44:18,280 --> 00:44:19,430 >> Debugging. 810 00:44:19,430 --> 00:44:20,785 Gdb është më e mira. 811 00:44:20,785 --> 00:44:24,014 812 00:44:24,014 --> 00:44:25,810 Unë jam duke shkuar për të theksuar këtë përsëri. 813 00:44:25,810 --> 00:44:30,920 Përdorni Gdb gjithë kohës çdo herë ju keni një problem. 814 00:44:30,920 --> 00:44:36,030 Komandat që janë të dobishme në Gdb janë të thyer, të cilat ju të kalojë ose një linjë të 815 00:44:36,030 --> 00:44:41,330 numrin, një emër funksion, në thelb ku në kodin tuaj që ju dëshironi për të ndaluar, 816 00:44:41,330 --> 00:44:45,600 dhe të jetë në gjendje për të marrë kontrollin. 817 00:44:45,600 --> 00:44:54,140 >> Printo merr një ndryshore dhe printime nga çdo gjë që është e ndryshueshme në se 818 00:44:54,140 --> 00:44:55,990 pikë në ekzekutimin tuaj. 819 00:44:55,990 --> 00:45:00,130 Next lëviz ekzekutimin tuaj së bashku një hap. 820 00:45:00,130 --> 00:45:05,050 Dhe hap hapa brenda një funksion në ekzekutimin tuaj. 821 00:45:05,050 --> 00:45:10,480 >> Gjëra të tjera janë drejtuar, e cila është se si në të vërtetë ju drejtuar kodin tuaj. 822 00:45:10,480 --> 00:45:16,630 Vazhdo merr të gjitha hapat e nevojshme për të shkuar në pikën tjetër pushim. 823 00:45:16,630 --> 00:45:18,300 Dhe ka shumë, shumë të tjerë. 824 00:45:18,300 --> 00:45:19,040 Shikoni ato. 825 00:45:19,040 --> 00:45:19,901 Ata janë të mëdha. 826 00:45:19,901 --> 00:45:20,863 Po? 827 00:45:20,863 --> 00:45:22,113 >> Audienca: [padëgjueshme]? 828 00:45:22,113 --> 00:45:26,635 829 00:45:26,635 --> 00:45:28,200 >> DAN: Po, e cila është një Rregullues. 830 00:45:28,200 --> 00:45:34,230 Pra, një Rregullues është një program që ju lejon të korrigjoj programin tuaj. 831 00:45:34,230 --> 00:45:39,931 Kjo nuk është një program që gjen mete për ju, edhe pse që do të jetë i madh. 832 00:45:39,931 --> 00:45:43,020 833 00:45:43,020 --> 00:45:46,040 >> Dhe e fundit për mua është të kërkoni. 834 00:45:46,040 --> 00:45:51,470 Pra, llojet e kërkimit që kemi biseduar lidhje në këtë klasë janë search lineare, 835 00:45:51,470 --> 00:45:55,960 e cila është vetëm që ju të shikoni me çdo element i hapësirës kërkimit, e 836 00:45:55,960 --> 00:46:00,410 element në një kohë, deri sa ju të gjeni çfarë ju jeni duke kërkuar për të, ose deri sa të arrijë 837 00:46:00,410 --> 00:46:03,350 në fund të hapësirës tuaj të kërkimit në të cilin pika ju thonë se ju nuk mund të gjeni 838 00:46:03,350 --> 00:46:06,360 element që ju po kërkoni. 839 00:46:06,360 --> 00:46:13,450 Dhe kjo merr kohë në të mirë të vazhdueshme, cila është 0 1 dhe në të keqe lineare 840 00:46:13,450 --> 00:46:16,070 kohë, e cila është 0 e n. 841 00:46:16,070 --> 00:46:19,250 >> Kërko Binary, e cila ka nevojë për elemente pistë. 842 00:46:19,250 --> 00:46:24,230 Ju shkoni në mes të elementeve të tua, parë nëse elementi që ju po kërkoni 843 00:46:24,230 --> 00:46:30,120 është më e vogël se ose e elementit se ju jeni në mes. 844 00:46:30,120 --> 00:46:36,510 Kjo është e madhe, ju thoni se në fund i kërkimit tuaj hapësirë ​​është tuaj 845 00:46:36,510 --> 00:46:41,550 vendndodhja aktuale, e mesme, dhe ju rinisni procesin. 846 00:46:41,550 --> 00:46:46,150 Nëse është e vogël, ju duken thoni që the-- vërtet, çfarë është lart? 847 00:46:46,150 --> 00:46:47,400 >> Audienca: [padëgjueshme]? 848 00:46:47,400 --> 00:46:51,000 849 00:46:51,000 --> 00:46:54,260 >> DAN: Po. 850 00:46:54,260 --> 00:46:58,360 Çdo lloj lloj që është mësuar në klasë është lojë e drejtë për testin. 851 00:46:58,360 --> 00:47:01,504 852 00:47:01,504 --> 00:47:04,920 >> [Qeshura] 853 00:47:04,920 --> 00:47:10,260 >> DAN: Dhe fakti që ju nuk keni pasur për të bërë atë për një sërë problemeve, është e drejtë 854 00:47:10,260 --> 00:47:12,420 lojë për testin. 855 00:47:12,420 --> 00:47:15,186 >> Audienca: A mund të shkoj për atë se si to-- 856 00:47:15,186 --> 00:47:17,052 >> DAN: Ajo do të jetë zhdukur gjatë. 857 00:47:17,052 --> 00:47:20,496 >> Gjuha 2: Kodi aktual për [Padëgjueshme] është në study.cs50.net. 858 00:47:20,496 --> 00:47:25,910 859 00:47:25,910 --> 00:47:32,680 Pra, nëse ju shikoni në problemin praktikës në faqen e bashkojë e renditjes së 860 00:47:32,680 --> 00:47:35,880 study.cs50.net, ekziston kodi për zbatimin bashkojë lloj. 861 00:47:35,880 --> 00:47:38,550 Pra, ju nuk keni për të zbatuar ajo veten sonte. 862 00:47:38,550 --> 00:47:42,090 Por sigurohuni që ju të kuptoni atë vend se vetëm memorizimin atë. 863 00:47:42,090 --> 00:47:45,035 >> Audienca: [padëgjueshme]? 864 00:47:45,035 --> 00:47:49,720 >> Gjuha 2: faqe bashkojë lloj në study.cs50.net, ekziston një praktikë e 865 00:47:49,720 --> 00:47:53,570 Problemi që, në qoftë se ju klikoni nëpërmjet Problemi, në fund ka një 866 00:47:53,570 --> 00:47:56,280 zgjidhje, e cila është bashkojë Zbatimi lloj. 867 00:47:56,280 --> 00:47:58,510 Por sigurohuni që ju kuptoni atë në vend se vetëm memorizimin 868 00:47:58,510 --> 00:47:59,760 ose kopjimi atë. 869 00:47:59,760 --> 00:48:02,870 870 00:48:02,870 --> 00:48:06,340 >> Audienca: Dhe një të përkryer të vlefshme Problemi për provim do të jetë 871 00:48:06,340 --> 00:48:07,990 diçka si këtu është një listë. 872 00:48:07,990 --> 00:48:12,100 Çfarë e bën këtë listë duket si pas një hap i Zgjedhje lloji ose 873 00:48:12,100 --> 00:48:13,330 lloj futje apo çfarëdo. 874 00:48:13,330 --> 00:48:14,940 Një përsëritje e plotë e listës. 875 00:48:14,940 --> 00:48:18,530 Pra, edhe në qoftë se ju nuk do të përfundojnë që kanë nevojë për Kodi për të, ju duhet të kuptoni atë 876 00:48:18,530 --> 00:48:20,440 mjaftueshme për të dini se si është duke shkuar për të modifikuar këtë koleksion. 877 00:48:20,440 --> 00:48:24,144 878 00:48:24,144 --> 00:48:25,394 >> DAN: Kjo është ajo për mua. 879 00:48:25,394 --> 00:48:30,604 880 00:48:30,604 --> 00:48:32,588 >> [Duartrokitje] 881 00:48:32,588 --> 00:49:06,316 882 00:49:06,316 --> 00:49:07,410 >> Lucas: Hey të gjithë. 883 00:49:07,410 --> 00:49:08,390 Emri im është Lucas. 884 00:49:08,390 --> 00:49:16,840 Unë do të flas për recursion, të gjithë llojet që ne kemi mësuar, dhe një 885 00:49:16,840 --> 00:49:18,050 pak të gjitha pointers. 886 00:49:18,050 --> 00:49:18,740 OK? 887 00:49:18,740 --> 00:49:20,340 Pra, para së gjithash, recursion. 888 00:49:20,340 --> 00:49:22,951 Çfarë do të thotë të them se një funksion është gjithkund rekursive? 889 00:49:22,951 --> 00:49:24,675 >> Audienca: Thirrjet veten. 890 00:49:24,675 --> 00:49:26,500 >> Lucas: OK, e quan veten, po. 891 00:49:26,500 --> 00:49:27,700 Pra, si kjo foto, për shembull. 892 00:49:27,700 --> 00:49:30,280 Është si foto brenda e një foto dhe kështu me radhë. 893 00:49:30,280 --> 00:49:35,740 Kështu për shembull, ju mund të have-- në Dan se ishte duke folur për kërkim binar. 894 00:49:35,740 --> 00:49:41,840 Një mënyrë në të cilën kërko binar është rekursive është fakti se ju jeni 895 00:49:41,840 --> 00:49:43,130 duke u përpjekur për të gjetur një numër. 896 00:49:43,130 --> 00:49:44,250 Pra, ju shkoni në mes. 897 00:49:44,250 --> 00:49:47,130 Dhe pastaj ju kontrolloni nëse numrat atje në të majtë dhe në të djathtë. 898 00:49:47,130 --> 00:49:49,650 >> Dhe pastaj nëse ju gjeni numri është do të jetë në të majtë, është e njëjta 899 00:49:49,650 --> 00:49:53,340 gjë si duke bërë kërkimin përsëri, por vetëm në të majtë të listës. 900 00:49:53,340 --> 00:49:57,350 Pra, kjo është se si kjo tingëllon si ajo e gjithkund rekursive. 901 00:49:57,350 --> 00:50:01,870 Pra, kjo është arsyeja pse ju djema keni rekursive zgjidhje për merge lloj. 902 00:50:01,870 --> 00:50:04,270 >> OK, kështu që këtu është një shembull. 903 00:50:04,270 --> 00:50:07,280 Pra, le të thonë se unë dua të zgjedhur të gjitha numrat nga 1 deri në n. 904 00:50:07,280 --> 00:50:13,790 Unë mund të kuptojnë se shuma e n Numri është n plus n minus 1 deri ne 1. 905 00:50:13,790 --> 00:50:17,810 Por pastaj, në qoftë se unë shoh n minus 1 plus n minus 2 plus 1, që është e njëjta 906 00:50:17,810 --> 00:50:20,680 gjë si numrat e mbledhur deri n minus 1. 907 00:50:20,680 --> 00:50:25,890 Kështu që unë mund të them me shumën e një shumë të barabartë është e barabartë n plus shumën e n minus 1. 908 00:50:25,890 --> 00:50:28,010 Ka që e bëjnë kuptim? 909 00:50:28,010 --> 00:50:32,630 >> Dhe unë gjithashtu do të ketë diçka tjetër quajtur rast bazë, e cila është se 910 00:50:32,630 --> 00:50:37,440 shuma e numrave deri në zero do të jetë zero. 911 00:50:37,440 --> 00:50:42,770 Pra, sa më shpejt që unë të marrë me numrin zero, kam ndaluar duke numëruar. 912 00:50:42,770 --> 00:50:45,330 Ka që e bëjnë kuptim? 913 00:50:45,330 --> 00:50:48,120 >> Kështu që këtu është një shembull se si Unë mund të zbatojë këtë. 914 00:50:48,120 --> 00:50:49,860 Pra, unë kam këtë funksion në disa. 915 00:50:49,860 --> 00:50:51,700 Kjo merr një n numër i plotë. 916 00:50:51,700 --> 00:50:56,300 Kështu që këtu unë së pari të kontrolloni nëse n është më pak ose e barabartë me zero. 917 00:50:56,300 --> 00:51:00,310 Pra, nëse kjo është më pak ose e barabartë me zero, unë kthehen zero, e cila është ndodhur me të bazës. 918 00:51:00,310 --> 00:51:05,690 Përndryshe, unë vetëm mund të kthehen n plus shuma e numrave të 919 00:51:05,690 --> 00:51:07,190 një njerit n minus. 920 00:51:07,190 --> 00:51:09,360 Kuptim? 921 00:51:09,360 --> 00:51:10,100 OK. 922 00:51:10,100 --> 00:51:11,610 >> Kështu që këtu është ajo që duket si. 923 00:51:11,610 --> 00:51:15,260 Ju keni shumën e 2 të barabartëve 2 plus shuma e 1. 924 00:51:15,260 --> 00:51:18,930 Dhe disa nga 1 është 1 plus shuma e 0, e cila është 0. 925 00:51:18,930 --> 00:51:20,216 Kuptim? 926 00:51:20,216 --> 00:51:25,342 Pra, nëse ne shikojmë në rafte e juaj Programi, kjo është ajo që duket si. 927 00:51:25,342 --> 00:51:26,820 >> Së pari, ne kemi funksionin kryesor. 928 00:51:26,820 --> 00:51:30,320 Dhe pastaj funksioni kryesor quhet shuma 2. 929 00:51:30,320 --> 00:51:36,690 Dhe pastaj shuma 2 do të thotë, oh, shuma 2 është e barabartë me 2 plus shumën e një. 930 00:51:36,690 --> 00:51:39,460 Kështu që unë të shtuar shumën e 1 në rafte. 931 00:51:39,460 --> 00:51:43,860 Dhe shuma e 1 do të thërrasë shumën e 0, e cila është gjithashtu do të jetë shtuar 932 00:51:43,860 --> 00:51:44,630 në pirg. 933 00:51:44,630 --> 00:51:49,240 Dhe pastaj secili prej këtyre atyre që janë në krye të një tjetër duhet të kthehen 934 00:51:49,240 --> 00:51:52,020 para se ato të tjera mund të mbajë. 935 00:51:52,020 --> 00:51:56,240 >> Kështu për shembull, këtu, shuma e 0, së pari, do të kthehen 0. 936 00:51:56,240 --> 00:51:58,320 Dhe pastaj të zgjidhni shumën e 1. 937 00:51:58,320 --> 00:52:00,850 Atëherë shuma e 1 do të kthehen 1 për të përmbledhur e 2. 938 00:52:00,850 --> 00:52:03,900 Dhe së fundi, shuma e 2 do të kthehen 3 në kryesore. 939 00:52:03,900 --> 00:52:05,320 Ka që e bëjnë kuptim? 940 00:52:05,320 --> 00:52:09,496 >> Është me të vërtetë e rëndësishme për të kuptuar se si rafte është duke punuar dhe të përpiqen për të 941 00:52:09,496 --> 00:52:11,980 të parë nëse kjo ka kuptim. 942 00:52:11,980 --> 00:52:13,260 OK, kështu që zgjidhja. 943 00:52:13,260 --> 00:52:16,170 Pra, pse është klasifikim i rëndësishëm, para së gjithash? 944 00:52:16,170 --> 00:52:18,260 Pse duhet të kemi kujdes? 945 00:52:18,260 --> 00:52:20,310 Çdokush? 946 00:52:20,310 --> 00:52:20,695 Më jepni një shembull? 947 00:52:20,695 --> 00:52:21,040 Po? 948 00:52:21,040 --> 00:52:22,968 >> Audienca: [padëgjueshme]. 949 00:52:22,968 --> 00:52:24,700 >> Lucas: Po, OK. 950 00:52:24,700 --> 00:52:26,090 Kështu që ju mund të kërkoni në mënyrë më efikase. 951 00:52:26,090 --> 00:52:28,580 Kjo është një mënyrë e mirë. 952 00:52:28,580 --> 00:52:32,462 Kështu, për shembull, ne kemi shumë gjërat, në fakt, në jetën tonë që 953 00:52:32,462 --> 00:52:32,920 janë të renditura. 954 00:52:32,920 --> 00:52:34,830 Për shembull, fjalorë. 955 00:52:34,830 --> 00:52:39,210 >> Është shumë e rëndësishme që të ketë të gjitha fjalë në një lloj mënyrë që ne 956 00:52:39,210 --> 00:52:41,970 mund të hyni lehtë. 957 00:52:41,970 --> 00:52:43,280 Pra, kjo është ajo që ai thoshte. 958 00:52:43,280 --> 00:52:45,530 Ju mund të kërkoni në mënyrë më efikase. 959 00:52:45,530 --> 00:52:48,740 Mendoni sa e vështirë do të jetë që të ketë një fjalor ku fjalët janë në 960 00:52:48,740 --> 00:52:49,500 mënyrë të rastit. 961 00:52:49,500 --> 00:52:53,120 Ju do të keni për të parë, shumë e shumë, çdo fjalë e vetme deri sa ju të gjeni 962 00:52:53,120 --> 00:52:54,720 Fjala që ju po kërkoni. 963 00:52:54,720 --> 00:52:58,710 >> Nëse jeni duke përdorur Facebook gjithashtu, kur ju jeni duke kërkuar në miqtë tuaj, ju jeni 964 00:52:58,710 --> 00:53:03,540 shkuar për të parë se Facebook vënë tuaj Miku më afër është në krye të atyre 965 00:53:03,540 --> 00:53:05,470 që ju të mos flisni me se shumë. 966 00:53:05,470 --> 00:53:08,080 Nëse ju shkoni të gjithë rrugën në fund të lista e juaj e mik, ju jeni duke shkuar për të parë 967 00:53:08,080 --> 00:53:11,250 njerëzit që ju ndoshta nuk e bëni edhe mos harroni se ju jeni miq me të. 968 00:53:11,250 --> 00:53:14,590 Dhe kjo është për shkak se llojet Facebook miqtë tuaj bazuar në atë se si 969 00:53:14,590 --> 00:53:16,472 të mbyllur ti je për ta. 970 00:53:16,472 --> 00:53:17,930 >> Pra, organizimin e të dhënave. 971 00:53:17,930 --> 00:53:18,450 Gjithashtu Pokemon. 972 00:53:18,450 --> 00:53:21,400 Kështu që ju shihni se të gjitha Pokemons kanë numra. 973 00:53:21,400 --> 00:53:27,210 Dhe kjo është si një i lehtë mënyrë për të hyrë në të dhënat. 974 00:53:27,210 --> 00:53:29,050 >> Audienca: Përdorimi Pokemon. 975 00:53:29,050 --> 00:53:29,890 >> Lucas: Po. 976 00:53:29,890 --> 00:53:32,395 >> Audienca: [padëgjueshme]. 977 00:53:32,395 --> 00:53:33,460 >> Lucas: Po. 978 00:53:33,460 --> 00:53:35,140 OK, kështu që zgjedhja lloj. 979 00:53:35,140 --> 00:53:41,610 Përzgjedhja lloj do të zgjidhni vlera më të vogël Unsorted e një listë çdo 980 00:53:41,610 --> 00:53:43,300 herë në çdo përsëritje. 981 00:53:43,300 --> 00:53:46,800 Kjo është lloj i si lloj që ju bëni në kokën tuaj, kur ju jeni duke u përpjekur për të 982 00:53:46,800 --> 00:53:48,430 zgjidhur një listë në dorë. 983 00:53:48,430 --> 00:53:51,990 >> Në thelb, të gjithë ju bëni është të shikoni për numrin më të vogël. 984 00:53:51,990 --> 00:53:54,280 Ju vënë atë në listën e renditura. 985 00:53:54,280 --> 00:53:56,230 Dhe pastaj ju shikoni për tjetër numri më i vogël. 986 00:53:56,230 --> 00:54:00,080 Dhe pastaj ju të vazhdojmë të bëjmë se dhe kështu me radhë. 987 00:54:00,080 --> 00:54:04,600 >> Pra, zgjedhja lloj është në thelb ju zgjidhni çdo herë më të vogël 988 00:54:04,600 --> 00:54:05,750 Vlera Unsorted. 989 00:54:05,750 --> 00:54:10,840 Vendos në fund të renditura Pjesa e lista. 990 00:54:10,840 --> 00:54:12,370 Dhe të vazhdojmë të bëjmë këtë. 991 00:54:12,370 --> 00:54:15,890 Pra, le të shohim shpejt se çfarë kjo duket si. 992 00:54:15,890 --> 00:54:19,340 Kështu që këtu është renditur dhe lista Unsorted. 993 00:54:19,340 --> 00:54:23,350 >> Pra, për të renditura të listës, kjo është fillimisht bosh. 994 00:54:23,350 --> 00:54:26,760 Dhe atëherë unë jam duke shkuar për të zgjedhur Numri vogël ketu, i cili është 2. 995 00:54:26,760 --> 00:54:30,650 Kështu që unë të marrë numrin 2 dhe kam vënë në pjesën e përparme të lista. 996 00:54:30,650 --> 00:54:34,910 Dhe pastaj unë të shikoni për tjetër më të vogël element, i cili është 3. 997 00:54:34,910 --> 00:54:37,050 Kështu që unë e vënë atë në fund i listës renditura. 998 00:54:37,050 --> 00:54:38,140 Dhe pastaj unë të vazhdojmë të bëjmë këtë. 999 00:54:38,140 --> 00:54:40,040 Unë gjej 4 dhe e vënë atë në fund. 1000 00:54:40,040 --> 00:54:41,360 Gjeni 5 dhe e vënë atë në fund. 1001 00:54:41,360 --> 00:54:44,830 >> Dhe të shohim se si të gjitha ato herë që Unë jam duke thënë se të vënë atë në fund është, 1002 00:54:44,830 --> 00:54:46,850 në thelb, shkëmbejnë dy vlera. 1003 00:54:46,850 --> 00:54:48,100 OK? 1004 00:54:48,100 --> 00:54:50,140 1005 00:54:50,140 --> 00:54:52,825 Dhe pastaj e fundit, ju vetëm të ketë një element më shumë. 1006 00:54:52,825 --> 00:54:55,870 Pra, është e renditura tashmë. 1007 00:54:55,870 --> 00:54:57,800 >> OK, kështu futje lloj. 1008 00:54:57,800 --> 00:55:03,180 Hyrjes lloj që ju jeni do të ketë edhe ajo gjë e ka një të renditura dhe të 1009 00:55:03,180 --> 00:55:04,690 një listë Unsorted. 1010 00:55:04,690 --> 00:55:14,540 E vetmja gjë është se çdo herë që ju jeni duke shtuar një element të renditura 1011 00:55:14,540 --> 00:55:18,170 listë, ju vetëm të vini element që është e para të listës shtëpiake i pa klasifikuar. 1012 00:55:18,170 --> 00:55:20,880 Dhe pastaj ju do të jeni për të gjetur se çfarë Pozicioni ajo duhet të jetë në renditura 1013 00:55:20,880 --> 00:55:22,300 Pjesa e lista. 1014 00:55:22,300 --> 00:55:25,840 >> Le të shohim se çfarë kjo është aq e kjo e bën më shumë kuptim. 1015 00:55:25,840 --> 00:55:29,360 Pra fillimisht, për shembull, unë jam duke u përpjekur për të futur numrin tre në 1016 00:55:29,360 --> 00:55:30,680 pjesë renditura të listës. 1017 00:55:30,680 --> 00:55:31,800 Pra, lista nuk ka asgjë. 1018 00:55:31,800 --> 00:55:34,160 Kështu që unë mund vetëm të vënë numrin 3. 1019 00:55:34,160 --> 00:55:37,480 >> Tani, unë dua të shtoj numrin 5 të pjesa renditura të listës. 1020 00:55:37,480 --> 00:55:38,900 Kështu që unë shoh në numrin 5. 1021 00:55:38,900 --> 00:55:40,450 I vini re se kjo është më e madhe se 3. 1022 00:55:40,450 --> 00:55:41,980 Kështu që unë e di se ajo duhet të jetë pas 3. 1023 00:55:41,980 --> 00:55:44,100 Kështu që unë vënë 3 dhe 5. 1024 00:55:44,100 --> 00:55:45,940 >> Pastaj unë dua të futur numrin 2. 1025 00:55:45,940 --> 00:55:51,630 Unë konstatoj se numri 2 është në të vërtetë pastaj fundit dy 3 dhe 5. 1026 00:55:51,630 --> 00:55:54,580 Kështu që unë në fakt kanë për të vënë të gjitha Mënyra në fillim të listës. 1027 00:55:54,580 --> 00:55:59,030 Pra, unë kam për të, lloj, zhvendoset të gjithë elemente në listën e renditura kështu që unë mund 1028 00:55:59,030 --> 00:56:01,970 të bëjë vend për numrin 2. 1029 00:56:01,970 --> 00:56:03,160 >> Pastaj unë shoh numrin 6. 1030 00:56:03,160 --> 00:56:05,450 Unë shoh se ajo duhet të jetë pas 5. 1031 00:56:05,450 --> 00:56:06,240 Kështu që unë e vënë atë atje. 1032 00:56:06,240 --> 00:56:07,965 Dhe së fundi, unë shoh në numrin 4. 1033 00:56:07,965 --> 00:56:11,030 Dhe unë njoftim se duhet të jetë mes 3 dhe 5. 1034 00:56:11,030 --> 00:56:14,870 Dhe pastaj kam vënë atë atje dhe ndryshim të gjitha elementet e tjera. 1035 00:56:14,870 --> 00:56:16,120 Kuptim? 1036 00:56:16,120 --> 00:56:17,880 1037 00:56:17,880 --> 00:56:19,150 >> Bubble Renditur. 1038 00:56:19,150 --> 00:56:25,730 Pra flluskë lloj është në thelb ajo që ju jeni do të do-- ne e quajmë atë flluskë 1039 00:56:25,730 --> 00:56:30,113 lloj sepse ju shkoni nëpër list-- është në fakt më mirë në qoftë se unë vetëm të tregoj 1040 00:56:30,113 --> 00:56:32,300 ju pëlqen this-- 1041 00:56:32,300 --> 00:56:35,030 dhe ju do të jeni për të krahasuar numrat e ngjitur. 1042 00:56:35,030 --> 00:56:38,410 Dhe ju jeni do të bie në ujdi tyre Pozicionet nëse ata nuk janë 1043 00:56:38,410 --> 00:56:39,190 në mënyrë të drejtë. 1044 00:56:39,190 --> 00:56:42,570 >> Pra, në thelb, çfarë do të ndodhë është këtu, për shembull, 1045 00:56:42,570 --> 00:56:44,160 ju keni 8 dhe 6. 1046 00:56:44,160 --> 00:56:47,270 Ju e dini se rendi renditura do në të vërtetë të jetë e 6 dhe 5, e drejtë? 1047 00:56:47,270 --> 00:56:49,540 Pra, ju jeni do të bie në ujdi urdhërat. 1048 00:56:49,540 --> 00:56:51,370 Pastaj unë shoh 8 dhe 4 këtu. 1049 00:56:51,370 --> 00:56:52,250 Dhe unë bëj të njëjtën gjë. 1050 00:56:52,250 --> 00:56:53,400 I bie në ujdi përsëri. 1051 00:56:53,400 --> 00:56:55,070 Dhe së fundi, 2 dhe 8. 1052 00:56:55,070 --> 00:56:56,670 Unë gjithashtu bie në ujdi tyre. 1053 00:56:56,670 --> 00:57:01,690 >> Ajo që quhet Bubble Lloj sepse pas secilin nga këto iterations, në të vërtetë, 1054 00:57:01,690 --> 00:57:05,910 numri më i madh në listën e merr të gjithë mënyrë që fundi i lista. 1055 00:57:05,910 --> 00:57:06,940 Ka që e bëjnë kuptim? 1056 00:57:06,940 --> 00:57:11,880 Për shkak se ajo mban shkëmbejnë atë dhe lëviz atë në të djathtë. 1057 00:57:11,880 --> 00:57:14,440 >> OK, kështu që kjo është përsëritje e dytë. 1058 00:57:14,440 --> 00:57:17,200 Do të ishte e njëjta gjë. 1059 00:57:17,200 --> 00:57:20,190 Unë do të bëj një swap dhe pastaj e fundit. 1060 00:57:20,190 --> 00:57:23,290 Unë se nuk ka këmbime dhe lista është e renditura. 1061 00:57:23,290 --> 00:57:27,460 Pra, në Bubble Rendit, ne thelb mbajtur duke shkuar nëpër lista dhe të shkëmbejnë 1062 00:57:27,460 --> 00:57:32,310 gjëra deri sa të vëreni se unë nuk e ka bërë çdo këmbime bërë atë përsëritje, të cilat 1063 00:57:32,310 --> 00:57:34,270 do të thotë se lista është renditur tashmë. 1064 00:57:34,270 --> 00:57:35,520 Kuptim? 1065 00:57:35,520 --> 00:57:38,400 1066 00:57:38,400 --> 00:57:40,870 >> Le të flasim pak në lidhje me kandidimin kohë. 1067 00:57:40,870 --> 00:57:45,165 Pra, mendoni ju djema mos harroni Big O, Omega, dhe Theta? 1068 00:57:45,165 --> 00:57:49,290 1069 00:57:49,290 --> 00:57:50,990 Po? 1070 00:57:50,990 --> 00:57:53,070 OK, ajo që është e Big O, para së gjithash? 1071 00:57:53,070 --> 00:57:54,315 >> Audienca: [padëgjueshme]. 1072 00:57:54,315 --> 00:57:59,070 >> Lucas: Po, është quajtur një rast më të keq runtime, e cila vetëm do të thotë se është e 1073 00:57:59,070 --> 00:58:03,470 se sa ju presin programin për të marrë për të kandiduar. 1074 00:58:03,470 --> 00:58:04,910 Si, në aspektin of-- 1075 00:58:04,910 --> 00:58:06,660 në këtë case-- n. 1076 00:58:06,660 --> 00:58:09,150 Numri i elementeve në Lista e në rastin më të keq. 1077 00:58:09,150 --> 00:58:12,520 Si, në rastin më të keq të mundshëm. 1078 00:58:12,520 --> 00:58:17,100 >> Pra, për Bubble Rendit, për shembull, ne kemi Big O të sheshit n. 1079 00:58:17,100 --> 00:58:20,580 Pse kemi se? 1080 00:58:20,580 --> 00:58:24,716 Pse është flluskë Lloj katror Big O n? 1081 00:58:24,716 --> 00:58:27,614 >> Audienca: [padëgjueshme]. 1082 00:58:27,614 --> 00:58:35,670 >> Lucas: Po, kështu rastin më të keq do të jetë që unë do të duhet të bëni iterations n. 1083 00:58:35,670 --> 00:58:39,260 Pra, secili nga iterations do të sjellë elementin më të madh deri në fund 1084 00:58:39,260 --> 00:58:40,290 të listës. 1085 00:58:40,290 --> 00:58:44,230 Pra, rasti më i keq është se unë kam për të bërë këtë gjë n herë. 1086 00:58:44,230 --> 00:58:48,550 Dhe për secilin nga ato kohë, më duhet të bëjë këmbime n, sepse unë kam për të krahasuar 1087 00:58:48,550 --> 00:58:49,870 çdo dy elemente. 1088 00:58:49,870 --> 00:58:53,730 Pra, kjo është arsyeja pse ajo është katror n sepse kjo është n herë n. 1089 00:58:53,730 --> 00:59:00,120 >> Pastaj, zgjedhja lloj është edhe n katror sepse, për çdo ripërsëritje, unë kam për të 1090 00:59:00,120 --> 00:59:02,650 shikoni në çdo element të vetëm në lista. 1091 00:59:02,650 --> 00:59:04,980 Dhe pastaj të gjeni më të vogël, që do të thotë se unë duhet të 1092 00:59:04,980 --> 00:59:06,130 parë përmes elementeve n. 1093 00:59:06,130 --> 00:59:11,750 Dhe unë kam për të bërë këtë herë n sepse Unë kam për të zgjedhur të gjitha elementet e n. 1094 00:59:11,750 --> 00:59:18,273 >> Një lloj futje edhe n katror sepse skenari më i keq do të 1095 00:59:18,273 --> 00:59:20,950 të jetë, një, unë kam për të futur numrat n, e drejtë? 1096 00:59:20,950 --> 00:59:22,765 Kështu që unë tashmë e di që unë jam duke shkuar të ketë përsëritjeve n. 1097 00:59:22,765 --> 00:59:25,466 1098 00:59:25,466 --> 00:59:29,840 Por, për secilin nga ato numra, nëse unë kam për të parë në të gjithë numrat në 1099 00:59:29,840 --> 00:59:34,380 listë të renditura dhe të vënë atë të gjithë rrugën në para, që do të jetë n katror 1100 00:59:34,380 --> 00:59:36,230 sepse ajo do të jetë n herë n përsëri. 1101 00:59:36,230 --> 00:59:38,280 Kuptim? 1102 00:59:38,280 --> 00:59:41,512 Po në lidhje me omega? 1103 00:59:41,512 --> 00:59:42,886 >> Audienca: [padëgjueshme]. 1104 00:59:42,886 --> 00:59:44,620 >> Lucas: Kjo është skenari më i mirë. 1105 00:59:44,620 --> 00:59:48,810 Pra, kjo është si, në një shumë të kohës për sorting, skenari më i mirë është 1106 00:59:48,810 --> 00:59:50,660 kur lista është e renditura tashmë. 1107 00:59:50,660 --> 00:59:52,670 Pra, ju vërtetë nuk kanë për të bërë asgjë. 1108 00:59:52,670 --> 00:59:56,290 Bubble Lloj ka më të mirë Skenari i n. 1109 00:59:56,290 --> 00:59:58,820 A e dini ju djema pse? 1110 00:59:58,820 --> 01:00:00,620 >> Audienca: [padëgjueshme]. 1111 01:00:00,620 --> 01:00:05,640 >> Lucas: Po, në qoftë se ju mbani gjurmët e nëse të dhënat racion pasur këmbime ose 1112 01:00:05,640 --> 01:00:10,533 jo, në qoftë se ju keni diçka si të vendosur për të e vërtetë në qoftë se ka pasur një përsëritje, në qoftë se 1113 01:00:10,533 --> 01:00:15,140 Lista është renditur tashmë, në thelb, çfarë do të ndodhë është që unë jam duke shkuar për të 1114 01:00:15,140 --> 01:00:17,890 përpiqen për të bie në ujdi çdo dy elemente ngjitur. 1115 01:00:17,890 --> 01:00:19,920 Unë jam duke shkuar për të parë se nuk ka këmbime. 1116 01:00:19,920 --> 01:00:21,230 Dhe unë vetëm të kthehet menjëherë. 1117 01:00:21,230 --> 01:00:24,240 >> Pra, kjo do të thotë se unë vetëm kishte për të shkoni nëpër lista një kohë. 1118 01:00:24,240 --> 01:00:28,990 Pra, kjo është n sepse unë shoh në n elemente. 1119 01:00:28,990 --> 01:00:30,930 Pse Zgjedhja lloj n katror? 1120 01:00:30,930 --> 01:00:35,150 1121 01:00:35,150 --> 01:00:45,520 >> Po, edhe nëse lista është e renditura, për çdo përsëritje e përzgjedhjes lloji, unë 1122 01:00:45,520 --> 01:00:47,590 kanë për të zgjedhur elementin minimal. 1123 01:00:47,590 --> 01:00:49,980 Kështu që do të thotë se unë kam për të shikoni në të gjitha elementet në Unsorted 1124 01:00:49,980 --> 01:00:53,350 lista dhe për të gjetur minimale për çdo ripërsëritje. 1125 01:00:53,350 --> 01:00:54,600 Ka që e bëjnë kuptim? 1126 01:00:54,600 --> 01:00:56,880 1127 01:00:56,880 --> 01:01:04,690 >> Dhe shpata futje është n sepse në rast se unë jam duke u përpjekur për të futur 1128 01:01:04,690 --> 01:01:09,320 numra dhe të gjithë numrat, kur unë përpiqen për të futur ato, unë shoh se ata 1129 01:01:09,320 --> 01:01:10,510 janë në pozicionin e duhur. 1130 01:01:10,510 --> 01:01:15,120 Unë nuk kam për të shkuar të parë të gjitha të tjera numrat në listën shtëpiake i pa klasifikuar. 1131 01:01:15,120 --> 01:01:17,170 Pra, kjo është arsyeja pse ajo do të jetë n. 1132 01:01:17,170 --> 01:01:19,480 Kuptim? 1133 01:01:19,480 --> 01:01:21,035 Dhe çfarë është theta? 1134 01:01:21,035 --> 01:01:23,410 >> Audienca: [padëgjueshme]. 1135 01:01:23,410 --> 01:01:24,380 >> Lucas: Çfarë, sorry? 1136 01:01:24,380 --> 01:01:24,960 Thuaj atë përsëri. 1137 01:01:24,960 --> 01:01:25,666 >> Audienca: [padëgjueshme]. 1138 01:01:25,666 --> 01:01:26,490 >> Lucas: Pikërisht. 1139 01:01:26,490 --> 01:01:31,280 Kështu që ju mund të shihni se vetëm përzgjedhje ruhet në Merge lloj kanë thetas. 1140 01:01:31,280 --> 01:01:39,920 Dhe kjo është për shkak se ju keni vetëm theta nëse dy O madh dhe Omega janë njëjtë. 1141 01:01:39,920 --> 01:01:41,520 OK. 1142 01:01:41,520 --> 01:01:44,210 Dhe së fundi, shkrihen lloj është në log n. 1143 01:01:44,210 --> 01:01:48,910 >> Dhe pastaj, kur Dan ishte duke thënë, Merge lloj është lloj si të njëjtën mënyrë që 1144 01:01:48,910 --> 01:01:50,320 ju bëni kërkim binar. 1145 01:01:50,320 --> 01:01:53,530 Pra, ju merrni listën. 1146 01:01:53,530 --> 01:01:55,170 Dhe ju do të jeni për të prerë në gjysmë. 1147 01:01:55,170 --> 01:02:00,580 Dhe pastaj ju prerë ata në gjysmave të vogla. 1148 01:02:00,580 --> 01:02:01,730 Dhe pastaj ju bashkojë ato. 1149 01:02:01,730 --> 01:02:02,960 Ju djema mbani mend se, e drejtë? 1150 01:02:02,960 --> 01:02:04,960 OK, ndërsa ai po thoshte. 1151 01:02:04,960 --> 01:02:08,330 >> OK, pointers. 1152 01:02:08,330 --> 01:02:11,078 Pra, çfarë është një akrep? 1153 01:02:11,078 --> 01:02:12,050 >> Audienca: [padëgjueshme]. 1154 01:02:12,050 --> 01:02:12,820 >> Lucas: Një adresë. 1155 01:02:12,820 --> 01:02:13,720 OK. 1156 01:02:13,720 --> 01:02:18,530 Unë e di se David tregon një bandë e videot e Binky dhe gjëra duke treguar 1157 01:02:18,530 --> 01:02:19,080 njëri tjetrin. 1158 01:02:19,080 --> 01:02:22,960 Por unë doja të mendoj për pointers thjesht si një adresë. 1159 01:02:22,960 --> 01:02:26,110 Pra, kjo është një variabël që është duke shkuar për të ruajtur një adresë. 1160 01:02:26,110 --> 01:02:31,940 >> Pra, kjo është vetëm kjo variabël të veçantë që është katër bytes gjatë. 1161 01:02:31,940 --> 01:02:36,550 Mos harroni, se tregues për çdo gjë është gjithmonë katër bytes gjatë për 32-bit tonë 1162 01:02:36,550 --> 01:02:39,370 makinë kështu rasti me aplikim. 1163 01:02:39,370 --> 01:02:41,920 1164 01:02:41,920 --> 01:02:47,050 Dhe kjo vetëm e ka vendin e një variable brenda saj. 1165 01:02:47,050 --> 01:02:50,240 >> OK, kështu që nuk ka këtë memorie, në thelb. 1166 01:02:50,240 --> 01:02:57,420 Pra, secili bllok i kujtesës në të vërtetë ka një etiketë, e cila është adresa e 1167 01:02:57,420 --> 01:02:58,890 kujtesës slotty. 1168 01:02:58,890 --> 01:03:02,370 Kështu që do të thotë se unë mund të ketë një tregues për të treguar 1169 01:03:02,370 --> 01:03:03,380 ndonjë nga këto adresa. 1170 01:03:03,380 --> 01:03:09,930 Pra, arsyeja pse ne do të përdorim pointers është në qoftë se unë duhet të mbani mend vendndodhjen 1171 01:03:09,930 --> 01:03:12,300 se një variabël të veçantë është një kujtim. 1172 01:03:12,300 --> 01:03:16,560 >> Dhe ju djema mbani mend se një nga ato raste të ishte në qoftë se unë kam një funksion 1173 01:03:16,560 --> 01:03:20,820 në qoftë se unë duhet të vërtetë dua që ju të shkëmbim për reals, unë në të vërtetë 1174 01:03:20,820 --> 01:03:22,110 duhet të dërgoni një akrep. 1175 01:03:22,110 --> 01:03:23,460 Jo ndryshueshme. 1176 01:03:23,460 --> 01:03:25,200 A e mbani mend se ju djema? 1177 01:03:25,200 --> 01:03:26,450 Dallimi between-- 1178 01:03:26,450 --> 01:03:33,350 1179 01:03:33,350 --> 01:03:34,120 çfarë është emri? 1180 01:03:34,120 --> 01:03:36,010 Thirrja nga vlera dhe duke e quajtur duke iu referuar, e drejtë? 1181 01:03:36,010 --> 01:03:36,840 >> OK, po. 1182 01:03:36,840 --> 01:03:38,330 Pra, telefononi nga vlera. 1183 01:03:38,330 --> 01:03:43,570 Kur ju thjesht dërgoni një ndryshore të funksionojë ju jeni vetëm duke dërguar një vlerë. 1184 01:03:43,570 --> 01:03:45,610 Pra, ju jeni në të vërtetë duke dërguar një kopje e variablit. 1185 01:03:45,610 --> 01:03:49,720 Dhe programi juaj nuk mund të kujdesen më pak në lidhje me nëse të njëjtën e ndryshueshme të vërtetë 1186 01:03:49,720 --> 01:03:51,650 bën një kopje. 1187 01:03:51,650 --> 01:03:56,330 >> Dhe duke e quajtur nga referencë do të thotë se Unë jam në të vërtetë i dërguar një kopje të 1188 01:03:56,330 --> 01:03:57,550 tregues për këtë variabël. 1189 01:03:57,550 --> 01:04:00,970 Pra, kjo do të thotë se unë jam i dërguar vendndodhja e kësaj variable. 1190 01:04:00,970 --> 01:04:04,440 Pra kuptim unë kam vendndodhjen e ndryshueshme, kur unë e quaj funksion 1191 01:04:04,440 --> 01:04:09,700 me pointers, unë jam në gjendje për të vërtetë të ndryshuar të dhënat që ishte në kryesore. 1192 01:04:09,700 --> 01:04:12,050 Kuptim? 1193 01:04:12,050 --> 01:04:17,560 >> Edhe pse, akrep është një kopje, akrep ende ka adresën e vërtetë të 1194 01:04:17,560 --> 01:04:20,090 variabël që unë dua të ndryshojë. 1195 01:04:20,090 --> 01:04:21,920 Kuptim? 1196 01:04:21,920 --> 01:04:24,290 >> Pra, duke krijuar pointers. 1197 01:04:24,290 --> 01:04:28,410 Mos harroni, në treguesin gjithmonë kanë lloji që është e vënë në 1198 01:04:28,410 --> 01:04:29,890 për të dhe pastaj një yll. 1199 01:04:29,890 --> 01:04:31,030 Dhe pastaj të vendosni emrin. 1200 01:04:31,030 --> 01:04:35,765 Pra, mbani mend se sa herë ju keni çfarëdo yll, është si një tregues për 1201 01:04:35,765 --> 01:04:38,990 se çdo gjë e ndryshueshme lloji që keni pasur. 1202 01:04:38,990 --> 01:04:42,850 >> Kështu që këtu në yll, për shembull, është e nje tregues dhe një numër të plotë. 1203 01:04:42,850 --> 01:04:47,680 Dhe pastaj yll char është një akrep yll char dhe kështu me radhë. 1204 01:04:47,680 --> 01:04:47,960 Po? 1205 01:04:47,960 --> 01:04:52,710 >> Audienca: Po në qoftë se ne kemi një tregues të n të yll x. 1206 01:04:52,710 --> 01:04:55,255 Unë e di që krijon një tregues për x. 1207 01:04:55,255 --> 01:04:59,432 A do të deklarojë x një numër të plotë? 1208 01:04:59,432 --> 01:05:05,170 >> Lucas: OK, kështu që kur ju thoni yje n x, ju nuk jeni duke krijuar një tregues për një 1209 01:05:05,170 --> 01:05:06,000 x ndryshueshme. 1210 01:05:06,000 --> 01:05:08,170 Ju jeni duke krijuar një tregues të quajtur x. 1211 01:05:08,170 --> 01:05:09,396 >> Audienca: [padëgjueshme]. 1212 01:05:09,396 --> 01:05:14,250 >> Lucas: Pra, kur unë them yll n x, unë jam duke thënë, hej, në kujtim, unë jam duke shkuar për të 1213 01:05:14,250 --> 01:05:16,390 të marrë një nga këto tre kuti. 1214 01:05:16,390 --> 01:05:20,750 Dhe unë jam duke shkuar për të thënë se se do të jetë X, i cili eshte 1215 01:05:20,750 --> 01:05:22,000 do të jetë një akrep. 1216 01:05:22,000 --> 01:05:26,860 1217 01:05:26,860 --> 01:05:30,640 Dhe diçka interesante në lidhje me pointers është se ne themi se ata kanë 1218 01:05:30,640 --> 01:05:32,620 4 bytes për një makinë 32-bit. 1219 01:05:32,620 --> 01:05:36,320 Dhe arsyeja për këtë është për shkak se 4 bytes janë 32-bit. 1220 01:05:36,320 --> 01:05:40,490 >> Dhe makina që janë 64 bit të vërtetë kanë Pointers adresat 1221 01:05:40,490 --> 01:05:43,480 që janë 64 bit të gjata. 1222 01:05:43,480 --> 01:05:49,820 Pra, ai thjesht do të thotë se madhësia e adresat në makinë është e ndryshme. 1223 01:05:49,820 --> 01:05:52,270 >> Pra Referenca dhe Dereferencing. 1224 01:05:52,270 --> 01:05:54,310 Ka dy operatorë që ju djema duhet të mbani mend. 1225 01:05:54,310 --> 01:05:55,450 E para është simbol. 1226 01:05:55,450 --> 01:05:56,810 E dyta është yll. 1227 01:05:56,810 --> 01:06:05,060 A nuk merrni hutuar nga ky yll dhe kjo Star sepse mos harroni se, në 1228 01:06:05,060 --> 01:06:06,950 këtë rast, ju duhet yll n. 1229 01:06:06,950 --> 01:06:08,700 >> Është si një gjë të tërë së bashku. 1230 01:06:08,700 --> 01:06:10,720 Nuk ka yll hapësirë ​​n. 1231 01:06:10,720 --> 01:06:12,070 Pra, kjo do të thotë se është e llojit. 1232 01:06:12,070 --> 01:06:14,870 Mos harroni, se kur ju keni yll ndryshueshme, ju jeni 1233 01:06:14,870 --> 01:06:16,230 duke folur për llojin. 1234 01:06:16,230 --> 01:06:20,540 >> Kur ju keni vetëm yll dhe pastaj emri i variablit, kjo do të thotë se 1235 01:06:20,540 --> 01:06:24,100 ju jeni dereferencing në treguesin, i cili do të thotë se ju jeni duke kërkuar në 1236 01:06:24,100 --> 01:06:28,290 akrep, duke gjetur adresën është e duke treguar për të, duke shkuar në atë adresë, 1237 01:06:28,290 --> 01:06:30,850 dhe duke kërkuar në sa herë që ju keni atje. 1238 01:06:30,850 --> 01:06:34,310 Kështu që unë them nxënësit e mi që kur ju keni yll, ju duhet të mendoni se kjo është 1239 01:06:34,310 --> 01:06:36,850 shkurtim të përmbajtjes së. 1240 01:06:36,850 --> 01:06:39,770 >> Pra, nëse ju keni një tregues dhe ju bëjnë treguesin yll, është e 1241 01:06:39,770 --> 01:06:41,720 përmbajtja e pointer. 1242 01:06:41,720 --> 01:06:44,580 Pra, ju shkoni në çfarëdo qoftë ajo është duke treguar për dhe të kërkoni në përmbajtjen konstante. 1243 01:06:44,580 --> 01:06:47,730 Dhe simbol është e njëjtë gjë si adresë të. 1244 01:06:47,730 --> 01:06:52,560 >> Pra, nëse unë kam një ndryshore a-- si, le të të them se kam bërë int a është e barabartë me 3-- 1245 01:06:52,560 --> 01:06:56,900 në qoftë se unë dua të gjetur adresën e që variabël një kujtim, unë vetëm mund të bëjë 1246 01:06:56,900 --> 01:06:58,240 simbol a. 1247 01:06:58,240 --> 01:07:00,280 Pra, kjo është adresa e një. 1248 01:07:00,280 --> 01:07:01,530 Kuptim? 1249 01:07:01,530 --> 01:07:03,790 1250 01:07:03,790 --> 01:07:05,040 >> Kështu që këtu është një shembull. 1251 01:07:05,040 --> 01:07:08,370 1252 01:07:08,370 --> 01:07:11,530 Kjo mungon int b dhe c int. 1253 01:07:11,530 --> 01:07:16,520 Pra int një është e barabartë me 3 mjete që Unë jam duke shkuar për të shkuar në kujtesë. 1254 01:07:16,520 --> 01:07:19,870 Dhe unë jam duke shkuar për të gjetur një vend i caktuar dhe të vënë numrin 3 këtu. 1255 01:07:19,870 --> 01:07:22,200 >> Dhe pastaj int b barabartë 4. 1256 01:07:22,200 --> 01:07:23,100 Unë jam duke shkuar për të bërë të njëjtën gjë. 1257 01:07:23,100 --> 01:07:25,840 Shko në kujtesë dhe të vënë një numër 4 në një kuti. 1258 01:07:25,840 --> 01:07:27,100 Dhe int barabartë me 5. 1259 01:07:27,100 --> 01:07:29,740 Gjeni një kuti dhe të vënë një numër 5. 1260 01:07:29,740 --> 01:07:36,160 >> Pra, çfarë është kjo linjë duke bërë jashtë? pa yll n barabartë ampersand a. 1261 01:07:36,160 --> 01:07:37,800 Pra, para së gjithash, n pa yll. 1262 01:07:37,800 --> 01:07:39,050 Çfarë është ajo duke bërë? 1263 01:07:39,050 --> 01:07:40,930 1264 01:07:40,930 --> 01:07:42,298 >> Audienca: [padëgjueshme]. 1265 01:07:42,298 --> 01:07:47,890 >> Lucas: Yeah, kështu që n star pa, së pari, deklaron një tregues të quajtur pa. 1266 01:07:47,890 --> 01:07:53,720 Dhe pastaj është caktuar vlerën e që tregues të jetë adresa e një. 1267 01:07:53,720 --> 01:07:55,790 Pra simbol a. 1268 01:07:55,790 --> 01:07:58,510 Pastaj, në qoftë se unë bëj yll BP, çfarë është një pb yll? 1269 01:07:58,510 --> 01:08:02,418 1270 01:08:02,418 --> 01:08:03,150 >> Oh, më vjen keq. 1271 01:08:03,150 --> 01:08:06,330 Kjo është gjithashtu mungon. n star BP. 1272 01:08:06,330 --> 01:08:07,905 Unë do të thotë yll pc. 1273 01:08:07,905 --> 01:08:11,200 Unë jam aq i keq. 1274 01:08:11,200 --> 01:08:11,940 Është e njëjta gjë. 1275 01:08:11,940 --> 01:08:16,408 Por tani unë jam i mirë ar krijuar një akrep të b dhe pastaj një tregues për c. 1276 01:08:16,408 --> 01:08:16,886 Po? 1277 01:08:16,886 --> 01:08:18,136 >> Audienca: [padëgjueshme]? 1278 01:08:18,136 --> 01:08:25,490 1279 01:08:25,490 --> 01:08:26,670 >> Lucas: Po. 1280 01:08:26,670 --> 01:08:32,630 Pra, nëse ju shkoni në kujtesën dhe ju shkoni në kuti që është i destinimit për të pa, 1281 01:08:32,630 --> 01:08:37,149 ju jeni të vërtetë do të të shihni një adresë të një. 1282 01:08:37,149 --> 01:08:38,399 OK? 1283 01:08:38,399 --> 01:08:42,970 1284 01:08:42,970 --> 01:08:43,300 Po? 1285 01:08:43,300 --> 01:08:45,605 >> Audienca: [padëgjueshme]? 1286 01:08:45,605 --> 01:08:49,260 >> Lucas: Po, akrep është një adresë. 1287 01:08:49,260 --> 01:08:50,120 Kurrë mos harroni se. 1288 01:08:50,120 --> 01:08:52,800 Është si më e rëndësishme pjesë për pointers. 1289 01:08:52,800 --> 01:08:56,180 Ka ruajtjen dhe adresën e për disa ndryshore. 1290 01:08:56,180 --> 01:08:56,890 Çdo gjë tjetër? 1291 01:08:56,890 --> 01:08:58,370 Çdo pyetje të tjera? 1292 01:08:58,370 --> 01:08:59,189 OK. 1293 01:08:59,189 --> 01:09:00,399 >> Pra Pointers dhe Vargjeve. 1294 01:09:00,399 --> 01:09:08,189 Mos harroni se kur bëj int array 3, në thelb, ajo që unë jam duke bërë është që unë jam, lloj 1295 01:09:08,189 --> 01:09:12,779 i, duke deklaruar në një akrep. 1296 01:09:12,779 --> 01:09:18,960 Pra array është lloj i si një tregues për një vend të veçantë në kujtesën e në të cilat unë 1297 01:09:18,960 --> 01:09:21,999 ndarë tre lojëra elektronike për integers. 1298 01:09:21,999 --> 01:09:23,430 Ka që e bëjnë kuptim? 1299 01:09:23,430 --> 01:09:30,250 >> Pra, kur unë bëj int array 3, atë që unë jam duke bërë, në thelb, është krijuar tre 1300 01:09:30,250 --> 01:09:31,479 lojëra elektronike në kujtesën. 1301 01:09:31,479 --> 01:09:33,899 Kështu që unë vetëm të gjeni tre lojëra elektronike në kujtesën. 1302 01:09:33,899 --> 01:09:38,810 Pra, nëse unë bëj, pra, një array yll, atë në thelb do të thotë përmbajtjen e array, 1303 01:09:38,810 --> 01:09:46,180 që do të thotë unë fshihet treguesin, unë shkoj në atë vend që është e treguar për të, 1304 01:09:46,180 --> 01:09:47,939 dhe kam vënë numrin një. 1305 01:09:47,939 --> 01:09:53,729 >> Dhe pastaj, në qoftë se bëj koleksion star plus 1, kjo është e njëjta gjë si duke bërë koleksion 1306 01:09:53,729 --> 01:09:59,690 kllapa një, e cila vetëm do të thotë të shkoj në vendi se është vënë në. 1307 01:09:59,690 --> 01:10:03,000 Dhe pastaj plus 1 bën më zhvendoset një pozicion. 1308 01:10:03,000 --> 01:10:06,510 Kështu që unë shkoj në këtë pozitë, në të vërtetë, dhe të vënë numrin dy. 1309 01:10:06,510 --> 01:10:10,900 >> Dhe pastaj, në fund, kur të bëj array plus 2, unë shkoj aty ku 1310 01:10:10,900 --> 01:10:11,825 treguar Array-së në. 1311 01:10:11,825 --> 01:10:14,690 Dhe pastaj unë të shkojë në blloqe kujtesës. 1312 01:10:14,690 --> 01:10:16,240 Dhe pastaj kam vënë numrin tre këtu. 1313 01:10:16,240 --> 01:10:16,600 Po? 1314 01:10:16,600 --> 01:10:21,400 >> Audienca: array Pra yll është thjesht duke thënë se pika e parë. 1315 01:10:21,400 --> 01:10:25,090 Dhe ju mund të shtoni 1, vetëm për shkak se ne jemi vetëm të vërtetë 1316 01:10:25,090 --> 01:10:27,295 referenca atë adresë e parë. 1317 01:10:27,295 --> 01:10:28,545 >> Lucas: Po. 1318 01:10:28,545 --> 01:10:32,720 1319 01:10:32,720 --> 01:10:36,020 Pse, për shembull, thonë array 0, array 1, dhe array 2? 1320 01:10:36,020 --> 01:10:38,970 1321 01:10:38,970 --> 01:10:42,790 Unë jam duke thënë, pse bëni 0, 1, 2, 3 vend 1, 2, 3? 1322 01:10:42,790 --> 01:10:46,550 Një nga arsyet është, një, kompjuter programuesit preferojnë për të filluar 1323 01:10:46,550 --> 01:10:47,750 numëruar nga 0. 1324 01:10:47,750 --> 01:10:52,370 Dy është për shkak se kur ju bëni koleksion 0, është e njëjta gjë si duke bërë koleksion 1325 01:10:52,370 --> 01:10:56,330 plus 0, që do të thotë unë shkoj në se pozita, dhe unë nuk e bëj 1326 01:10:56,330 --> 01:10:59,320 kaloni ndonjë blloqe kujtesës. 1327 01:10:59,320 --> 01:11:01,750 Kështu që unë nuk do të lëvizin asnjë bllokun e memories. 1328 01:11:01,750 --> 01:11:02,015 Po? 1329 01:11:02,015 --> 01:11:03,265 >> Audienca: [padëgjueshme]? 1330 01:11:03,265 --> 01:11:05,928 1331 01:11:05,928 --> 01:11:12,670 >> Lucas: Pra, ajo është duke i kërkuar se çfarë është dallimi në mes duke bërë 1332 01:11:12,670 --> 01:11:14,000 këtë apo duke bërë malloc. 1333 01:11:14,000 --> 01:11:17,550 Një nga dallimet është se int array 3 është krijuar një 1334 01:11:17,550 --> 01:11:19,260 array në rafte. 1335 01:11:19,260 --> 01:11:23,080 Dhe kur unë bëj malloc, atë krijon në grumbull. 1336 01:11:23,080 --> 01:11:25,250 Ka që e bëjnë kuptim? 1337 01:11:25,250 --> 01:11:28,870 >> Pra, si nuk e malloc të vërtetë punojnë? 1338 01:11:28,870 --> 01:11:32,245 Pra, pse nuk kemi nevojë edhe për të përdorur malloc? 1339 01:11:32,245 --> 01:11:35,730 1340 01:11:35,730 --> 01:11:39,700 Lloj juaj përpilues i figurave nga të gjitha variablat që ju të deklaruar. 1341 01:11:39,700 --> 01:11:44,040 Ai krijon hapësirë ​​për të gjithë prej tyre në rafte. 1342 01:11:44,040 --> 01:11:47,180 Pra, të gjitha variablave tuaja do të jetë diku në rafte. 1343 01:11:47,180 --> 01:11:49,460 Kështu që këtu është e mjedisit të ndryshueshëm. 1344 01:11:49,460 --> 01:11:53,850 >> Pra, në thelb, hapësirë ​​për ato variabla në kujtim është ndarë në 1345 01:11:53,850 --> 01:11:55,080 përpilojnë kohë. 1346 01:11:55,080 --> 01:11:58,790 Pra, kjo do të thotë se kompjuteri juaj ka të dini të gjithë atyre variablave 1347 01:11:58,790 --> 01:11:59,790 paraprakisht. 1348 01:11:59,790 --> 01:12:02,500 Ajo nuk ka nevojë të dinë se çfarë vlera ju jeni duke shkuar për të vënë në to. 1349 01:12:02,500 --> 01:12:05,490 Por ajo ka nevojë të dini se si sa memorie keni nevojë. 1350 01:12:05,490 --> 01:12:09,380 >> Por tani le të themi se, për shembull, ju jeni duke krijuar një rrjet ose duke marrë një 1351 01:12:09,380 --> 01:12:13,430 varg që ju jeni duke marrë nga përdoruesit. 1352 01:12:13,430 --> 01:12:17,300 Ju nuk e dini se sa kohë string do të jetë, per shembull. 1353 01:12:17,300 --> 01:12:20,600 Pra, ju nuk e dini saktësisht se sa blloqe kujtesës ju të ndajë, e drejtë? 1354 01:12:20,600 --> 01:12:24,120 >> Pra, ajo nuk ka të vërtetë të bëjë kuptim për ju për të thënë të vënë 100 karaktere. 1355 01:12:24,120 --> 01:12:26,420 Dhe pastaj çfarë nëse përdoruesi shkruan 150? 1356 01:12:26,420 --> 01:12:27,670 Ju do të jeni të dehur. 1357 01:12:27,670 --> 01:12:30,160 1358 01:12:30,160 --> 01:12:34,620 >> Pra, në thelb, ju nuk mund të jeni i sigurt se si sa memorie keni nevojë të ndajë 1359 01:12:34,620 --> 01:12:35,960 kur të hartojnë programin. 1360 01:12:35,960 --> 01:12:38,240 Ju vetëm e di se në kohë të kandidojë. 1361 01:12:38,240 --> 01:12:39,950 Pra, kjo është arsyeja pse ju duhet të grumbull. 1362 01:12:39,950 --> 01:12:47,610 Pra grumbull do të ketë memorie se ju jeni ndarjen e gjatë 1363 01:12:47,610 --> 01:12:50,810 Kohëzgjatja e programit running. 1364 01:12:50,810 --> 01:12:55,780 >> Pra, në thelb, kur ju bëni malloc, çfarë ju jeni duke bërë është caktimin e kujtesës në 1365 01:12:55,780 --> 01:13:00,160 runtime, që do të thotë se ju jeni duke vendosur të drejtën në atë moment që ju 1366 01:13:00,160 --> 01:13:02,670 duhet të ketë këtë kujtesë. 1367 01:13:02,670 --> 01:13:04,210 Pra, kjo është kur ju jeni ndarjes atë. 1368 01:13:04,210 --> 01:13:06,430 Ka që e bëjnë kuptim? 1369 01:13:06,430 --> 01:13:11,690 >> Pra mbani mend, rafte ka variablave që janë krijuar në kohën e kompilimit. 1370 01:13:11,690 --> 01:13:14,560 Dhe pastaj grumbull ka variablave që janë krijuar si ju shkoni 1371 01:13:14,560 --> 01:13:15,600 me malloc, për shembull. 1372 01:13:15,600 --> 01:13:16,850 >> Audienca: [padëgjueshme]? 1373 01:13:16,850 --> 01:13:19,179 1374 01:13:19,179 --> 01:13:24,340 >> Lucas: Pra GetString është do të thërrasë malloc. 1375 01:13:24,340 --> 01:13:26,710 Më lejoni të flas për malloc, dhe Unë do të shpjegojë GetString. 1376 01:13:26,710 --> 01:13:32,000 Pra malloc është e njëjta gjë si ndarjen e kujtesës. 1377 01:13:32,000 --> 01:13:34,600 Pra, kjo do të ndajë memorie në grumbull. 1378 01:13:34,600 --> 01:13:40,010 Dhe ajo do të kthehet një tregues për ku se kujtesa është ndarë në. 1379 01:13:40,010 --> 01:13:43,090 >> Pra, kur ju do-- 1380 01:13:43,090 --> 01:13:44,910 këtu për example-- 1381 01:13:44,910 --> 01:13:45,830 n star akrep. 1382 01:13:45,830 --> 01:13:50,520 Dhe pastaj akrep barabartë malloc Madhësia e herë inç 10. 1383 01:13:50,520 --> 01:13:52,110 Unë jam duke krijuar një akrep. 1384 01:13:52,110 --> 01:13:59,020 Dhe atëherë unë jam duke caktuar atë tregues për vlera të kursorit se malloc 1385 01:13:59,020 --> 01:13:59,680 është duke i dhënë mua. 1386 01:13:59,680 --> 01:14:04,150 >> Kështu që unë jam duke kërkuar malloc mund të ndajë hapësirë ​​për 10 integers. 1387 01:14:04,150 --> 01:14:05,390 Kjo është ajo që është duke thënë. 1388 01:14:05,390 --> 01:14:09,020 Dhe malloc jep me mbrapa një tregues për atë vend. 1389 01:14:09,020 --> 01:14:11,460 Kuptim? 1390 01:14:11,460 --> 01:14:12,270 OK. 1391 01:14:12,270 --> 01:14:17,940 Unë Dhe GetString është, në thelb, duke bërë një thirrje për malloc kështu që ju mund të ndajë 1392 01:14:17,940 --> 01:14:21,680 kujtesës gjatë ekzekutimit. 1393 01:14:21,680 --> 01:14:26,460 >> Gjithmonë mos harroni të kontrolloni për null sepse malloc do të kthehen null 1394 01:14:26,460 --> 01:14:28,200 në qoftë se ajo nuk mund të siguroj kujtesë. 1395 01:14:28,200 --> 01:14:31,660 Le të thonë se ju kërkoni për një qesharake Shuma e kujtesës. 1396 01:14:31,660 --> 01:14:33,950 Kompjuteri juaj nuk do të jetë në gjendje të ndajë se shumë. 1397 01:14:33,950 --> 01:14:36,410 >> Pra malloc është vetëm do të kthehen null. 1398 01:14:36,410 --> 01:14:42,210 Pra, gjithmonë mos harroni të kontrolloni nëse akrep që ju mori nga malloc është 1399 01:14:42,210 --> 01:14:45,640 null apo jo sepse, në qoftë se ajo është, ju mund të të dereferencing një tregues dhe 1400 01:14:45,640 --> 01:14:48,340 duke shkaktuar gabimet anësore. 1401 01:14:48,340 --> 01:14:50,930 Dhe së fundi, mos harroni kujtesën tuaj të lirë. 1402 01:14:50,930 --> 01:14:57,800 1403 01:14:57,800 --> 01:15:00,560 >> Malloc po krijon memorie në grumbull. 1404 01:15:00,560 --> 01:15:03,436 Dhe ju keni për të kujtesë para se programi përfundon. 1405 01:15:03,436 --> 01:15:05,370 OK, kjo është e gjitha për mua. 1406 01:15:05,370 --> 01:15:07,900 Na vjen keq, Rob. 1407 01:15:07,900 --> 01:15:07,950 Faleminderit. 1408 01:15:07,950 --> 01:15:09,878 >> [Duartrokitje] 1409 01:15:09,878 --> 01:15:12,679 >> Lucas: Çdo pyetje të fundit para Rob vjen? 1410 01:15:12,679 --> 01:15:13,138 Nuk ka? 1411 01:15:13,138 --> 01:15:13,597 Po? 1412 01:15:13,597 --> 01:15:15,892 >> Audienca: Unë nuk e shoh kjo në internet një. 1413 01:15:15,892 --> 01:15:17,269 A keni ngarkuar atë ende? 1414 01:15:17,269 --> 01:15:19,106 >> Lucas: Unë mendoj se Dave është ngarkimi atë së shpejti. 1415 01:15:19,106 --> 01:15:19,880 >> DAVE: Ajo do të jetë postuar. 1416 01:15:19,880 --> 01:15:20,310 >> Lucas: Do të jetë online. 1417 01:15:20,310 --> 01:15:21,175 >> Audienca: Është e deri. 1418 01:15:21,175 --> 01:15:22,090 >> Lucas: Kjo është up? 1419 01:15:22,090 --> 01:15:23,157 OK. 1420 01:15:23,157 --> 01:15:23,644 Po? 1421 01:15:23,644 --> 01:15:27,053 >> Audienca: [padëgjueshme]? 1422 01:15:27,053 --> 01:15:30,285 >> Lucas: Po, ju duhet të lirojë të gjithë memorie që është vënë në grumbull. 1423 01:15:30,285 --> 01:15:31,535 >> Audienca: [padëgjueshme]? 1424 01:15:31,535 --> 01:15:34,518 1425 01:15:34,518 --> 01:15:36,160 >> Lucas: Po. 1426 01:15:36,160 --> 01:15:39,980 Çdo herë që ju keni një malloc kulturës, ju duhet të keni një kulturë të lirë 1427 01:15:39,980 --> 01:15:42,640 pasi ju të ndaluar duke përdorur atë ndryshore. 1428 01:15:42,640 --> 01:15:44,800 Pra malloc dhe të lirë janë gjithmonë bashku. 1429 01:15:44,800 --> 01:15:45,410 Miqtë e tyre më të mirë. 1430 01:15:45,410 --> 01:15:46,720 Po. 1431 01:15:46,720 --> 01:15:47,970 Rob? 1432 01:15:47,970 --> 01:15:55,595 1433 01:15:55,595 --> 01:15:56,850 >> Rob: Unë do të shkoj shpejt. 1434 01:15:56,850 --> 01:16:00,466 Dhe gjithashtu video do të vihet dorë. 1435 01:16:00,466 --> 01:16:01,716 Unë kam mic në. 1436 01:16:01,716 --> 01:16:24,060 1437 01:16:24,060 --> 01:16:26,230 >> OK, kështu që javën pesë gjëra. 1438 01:16:26,230 --> 01:16:27,970 Gjëja e parë që ne kemi është rafte. 1439 01:16:27,970 --> 01:16:33,390 Pra, mos harroni se ka vetëm një pirg kornizë për thirrje aktive funksion. 1440 01:16:33,390 --> 01:16:34,710 Ne do të shohim se në një të dytë. 1441 01:16:34,710 --> 01:16:37,850 Dhe gjithashtu mos harroni se çfarë në të vërtetë shkon në çdo kornizë rafte do të jenë të 1442 01:16:37,850 --> 01:16:41,880 variablat lokale të funksioneve tona, argumentet që janë miratuar në tonë 1443 01:16:41,880 --> 01:16:43,880 funksionet, së bashku me një çift gjëra të tjera që ju nuk e bëni me të vërtetë 1444 01:16:43,880 --> 01:16:45,260 nevojë për t'u shqetësuar rreth. 1445 01:16:45,260 --> 01:16:50,950 >> Kështu që këtu është një program shembull ku, njoftim, kryesore është printfing e kthimit 1446 01:16:50,950 --> 01:16:52,830 Vlera e foo 4. 1447 01:16:52,830 --> 01:16:57,930 foo është vetëm do të kthehen Vlera e bar 4 presje 6. 1448 01:16:57,930 --> 01:17:02,380 Dhe bar do të vënë disa lokale n variable e barabartë me 4 herë 6. 1449 01:17:02,380 --> 01:17:03,920 Dhe pastaj kthehen n. 1450 01:17:03,920 --> 01:17:09,130 >> Pra, le të shohim në rafte të gjithë përsëritje aktual i këtij programi. 1451 01:17:09,130 --> 01:17:10,500 Pra, nuk ka fund të rafte tonë. 1452 01:17:10,500 --> 01:17:12,620 Mos harroni se rafte rritet. 1453 01:17:12,620 --> 01:17:15,370 Pra, në fund të rafte tonë, ne kanë një kornizë rafte për kryesor. 1454 01:17:15,370 --> 01:17:17,000 Kur programi fillon, kryesore është gjithmonë do të jetë në 1455 01:17:17,000 --> 01:17:18,560 fund të rafte tonë. 1456 01:17:18,560 --> 01:17:20,880 >> Dhe ajo që është brenda tonë rafte kornizë për kryesor? 1457 01:17:20,880 --> 01:17:23,810 Pra, edhe pse nuk ka lokale variabla të kryesore, si kam thënë më parë, 1458 01:17:23,810 --> 01:17:29,670 ne kemi argc dhe RGV duke marrë deri hapësirë brenda kornizës kryesore rafte. 1459 01:17:29,670 --> 01:17:33,260 Pra kryesor tani do të telefononi foo funksion. 1460 01:17:33,260 --> 01:17:35,125 Dhe kjo do të thotë foo do të merrni kuadrin e saj rafte. 1461 01:17:35,125 --> 01:17:36,970 >> Deri tani ne jemi në brendësi të foo funksion. 1462 01:17:36,970 --> 01:17:38,610 Dhe ajo që ka nevojë për të shkuar në kornizë Foo e rafte? 1463 01:17:38,610 --> 01:17:41,100 E pra, foo ka një n argument. 1464 01:17:41,100 --> 01:17:45,440 Dhe n është e barabartë me 4 pasi që është ajo kryesor është duke kaluar si argumenti foo-së. 1465 01:17:45,440 --> 01:17:48,490 >> Deri tani foo do të thërrasë bar. 1466 01:17:48,490 --> 01:17:52,070 Çfarë është bar do të ketë brenda i 'kuadrin e saj rafte? 1467 01:17:52,070 --> 01:17:55,610 Ajo ka x barabartë me 4 y barabartë me gjashtë. 1468 01:17:55,610 --> 01:17:58,540 Kjo nuk është e gjitha që ne do të kemi në kuadër rafte sepse bar 1469 01:17:58,540 --> 01:18:00,580 gjithashtu ka një variabël n lokale. 1470 01:18:00,580 --> 01:18:03,370 Dhe n ne jemi duke shkuar për të vendosur barabartë me 24. 1471 01:18:03,370 --> 01:18:05,750 >> Deri tani bar do të n kthehen. 1472 01:18:05,750 --> 01:18:09,300 Pra, bar po kthehet 24 për foo kornizë rafte. 1473 01:18:09,300 --> 01:18:12,560 Dhe për shkak se bar tani është kthyer, që do të thotë që ne jemi popping kornizë rafte 1474 01:18:12,560 --> 01:18:14,250 për bar off e rafte. 1475 01:18:14,250 --> 01:18:18,430 Pra, të gjithë kujtesës që bar kishte qenë duke përdorur tani është jashtë rafte. 1476 01:18:18,430 --> 01:18:21,550 >> Tani, foo është gjithashtu do të kthehen 24 në kryesore. 1477 01:18:21,550 --> 01:18:25,470 Pra, tani që foo po kthehet, e kujtesës se foo u përdorur në 'e saj 1478 01:18:25,470 --> 01:18:27,550 kornizë rafte është zhdukur gjithashtu. 1479 01:18:27,550 --> 01:18:29,660 Dhe tani, kryesor do të thërrasë printf. 1480 01:18:29,660 --> 01:18:31,660 Pra printf është vetëm një tjetër funksion. 1481 01:18:31,660 --> 01:18:35,320 Kur ne e quajmë printf, ajo do të jetë e një tjetër kornizë rafte për printf 1482 01:18:35,320 --> 01:18:36,470 thirrje funksion. 1483 01:18:36,470 --> 01:18:37,990 >> Çfarë jemi duke kaluar printf? 1484 01:18:37,990 --> 01:18:40,090 Kjo është ajo që do të shkojë në kuadrin e saj rafte. 1485 01:18:40,090 --> 01:18:44,970 Në shumë pak, ne jemi duke kaluar që për qind i backslash n dhe 1486 01:18:44,970 --> 01:18:47,180 argumenti 24. 1487 01:18:47,180 --> 01:18:50,370 Ajo mund të ketë më shumë në atë kornizë rafte nëse printf ndodh të jetë duke përdorur disa 1488 01:18:50,370 --> 01:18:51,200 variabla lokale. 1489 01:18:51,200 --> 01:18:51,920 Ne nuk e dimë. 1490 01:18:51,920 --> 01:18:53,810 >> Por të gjitha që shkon në printf-së rafte kornizë. 1491 01:18:53,810 --> 01:18:55,740 Ajo do të ekzekutojë printf. 1492 01:18:55,740 --> 01:18:56,830 Pastaj printf është bërë. 1493 01:18:56,830 --> 01:18:57,820 Ai do të kthehet. 1494 01:18:57,820 --> 01:18:58,960 Së fundi, kryesore është bërë. 1495 01:18:58,960 --> 01:18:59,860 Kryesore do të kthehet. 1496 01:18:59,860 --> 01:19:02,020 Dhe pastaj programi ynë është bërë. 1497 01:19:02,020 --> 01:19:02,480 Po? 1498 01:19:02,480 --> 01:19:04,505 >> Audienca: A jeni duke parë [padëgjueshme] 1499 01:19:04,505 --> 01:19:05,900 Argumentet [padëgjueshme] 1500 01:19:05,900 --> 01:19:06,830 Parametrat? 1501 01:19:06,830 --> 01:19:09,970 >> Rob: Pra, ka një ndryshim delikate ndërmjet argumenteve dhe parametrave. 1502 01:19:09,970 --> 01:19:14,400 Dhe me të vërtetë, në flasin të përbashkët, njerëzit priren për vetëm përzierje e tyre të gjithë kohën. 1503 01:19:14,400 --> 01:19:17,550 Por parametrat janë formale emrin nga gjërat. 1504 01:19:17,550 --> 01:19:20,180 >> Pra argc dhe argv janë Parametrat për kryesor. 1505 01:19:20,180 --> 01:19:23,440 Argumentet janë ato që ju në të vërtetë të kalojë në si këto parametra. 1506 01:19:23,440 --> 01:19:28,340 Pra, ka kur unë e quaj foo i 4, 4 është argumenti që unë jam duke kaluar në. 1507 01:19:28,340 --> 01:19:31,460 Dhe n parametër, brenda foo, merr në vlerën 4 1508 01:19:31,460 --> 01:19:32,880 nga 4 ishte argumenti. 1509 01:19:32,880 --> 01:19:35,826 >> Audienca: [padëgjueshme]? 1510 01:19:35,826 --> 01:19:37,880 >> Rob: n është një variabël lokale në bar. 1511 01:19:37,880 --> 01:19:41,420 1512 01:19:41,420 --> 01:19:44,960 n është ende lokale të foo, por kjo është një parametër për të foo. 1513 01:19:44,960 --> 01:19:48,190 Kjo nuk është një variabël lokale. 1514 01:19:48,190 --> 01:19:48,546 Po? 1515 01:19:48,546 --> 01:19:51,180 >> Audienca: [padëgjueshme]? 1516 01:19:51,180 --> 01:19:55,400 >> Rob: foo është vetëm duke e quajtur bar dhe kthyer çfarëdo kthimit bar. 1517 01:19:55,400 --> 01:19:56,786 >> Audienca: [padëgjueshme]? 1518 01:19:56,786 --> 01:19:59,591 >> Rob: Po, vetëm për të parë të shumta rafte korniza. 1519 01:19:59,591 --> 01:20:00,082 Po? 1520 01:20:00,082 --> 01:20:03,519 >> Audienca: Pse u foo quajtur para printf? 1521 01:20:03,519 --> 01:20:05,920 >> Rob: Pse u foo quajtur më parë printf? 1522 01:20:05,920 --> 01:20:10,740 Kështu që unë mund të ketë, në vend të kësaj, bëhet diçka si int x është e barabartë foo prej 4 1523 01:20:10,740 --> 01:20:12,980 dhe pastaj të shtypura x. 1524 01:20:12,980 --> 01:20:17,900 Por në vend të kësaj, unë kombinuar funksionin telefononi në argumentin printf. 1525 01:20:17,900 --> 01:20:23,670 >> Por vini re se ne nuk mund të vërtetë ekzekutuar thirrjen për printf deri ne 1526 01:20:23,670 --> 01:20:25,610 kuptoj se çfarë foo i 4 është. 1527 01:20:25,610 --> 01:20:27,480 Pra, ne jemi duke shkuar për të vlerësuar këtë. 1528 01:20:27,480 --> 01:20:32,504 Dhe vetëm një herë që është bërë do të kthehen dhe të vlerësojnë këtë. 1529 01:20:32,504 --> 01:20:32,990 Po? 1530 01:20:32,990 --> 01:20:37,364 >> Audienca: Që të dy bar [padëgjueshme] 1531 01:20:37,364 --> 01:20:41,738 vlera, pse nuk kemi [padëgjueshme]? 1532 01:20:41,738 --> 01:20:44,400 >> Rob: Ata tërësisht duhet të jenë të int. 1533 01:20:44,400 --> 01:20:46,260 Kjo nuk u kap gjatë kalon të shumta. 1534 01:20:46,260 --> 01:20:49,010 Pra, ajo duhet të jetë bar int dhe int foo pasi që të dy ata 1535 01:20:49,010 --> 01:20:50,460 po kthehen integers. 1536 01:20:50,460 --> 01:20:54,214 Pavlefshëm vetëm në qoftë se ata nuk do të kthehen vlerat aktuale. 1537 01:20:54,214 --> 01:20:54,692 Po? 1538 01:20:54,692 --> 01:20:58,038 >> Audienca: Nëse keni pasur një linjë më lartë kthimi, [e padëgjueshme]? 1539 01:20:58,038 --> 01:21:01,862 1540 01:21:01,862 --> 01:21:03,730 >> Rob: Një linjë mbi kthimin? 1541 01:21:03,730 --> 01:21:04,410 >> Audienca: Po. 1542 01:21:04,410 --> 01:21:10,780 Ashtu si në qoftë se keni kryer printf dhe [e padëgjueshme], do të shtypura dy herë? 1543 01:21:10,780 --> 01:21:12,992 >> Rob: Pra, brenda foo? 1544 01:21:12,992 --> 01:21:15,945 Nëse do të kishte një printf këtu? 1545 01:21:15,945 --> 01:21:16,750 >> Audienca: Po. 1546 01:21:16,750 --> 01:21:19,510 >> Rob: Pra, nëse kemi pasur një të drejtë printf këtu, ajo do të shtypura një herë. 1547 01:21:19,510 --> 01:21:23,400 Që ne jemi duke e quajtur foo një herë të drejtë këtu, atëherë ne do të goditur printf. 1548 01:21:23,400 --> 01:21:24,620 Pastaj ne do të thërrasë bar. 1549 01:21:24,620 --> 01:21:25,710 Dhe pastaj foo do të kthehen. 1550 01:21:25,710 --> 01:21:26,275 Dhe kjo është ajo. 1551 01:21:26,275 --> 01:21:30,985 Ne vetëm ndonjëherë hasni printf një herë. 1552 01:21:30,985 --> 01:21:31,482 Po? 1553 01:21:31,482 --> 01:21:32,973 >> Audienca: [padëgjueshme] 1554 01:21:32,973 --> 01:21:37,950 printf quajtur foo, sepse ne jemi të parë duke e quajtur printf dhe pastaj ne jemi duke kaluar 1555 01:21:37,950 --> 01:21:38,580 argumentet. 1556 01:21:38,580 --> 01:21:40,960 >> Rob: Pra, në teori, nuk është printf quajtur foo? 1557 01:21:40,960 --> 01:21:42,220 Kështu që nuk ka. 1558 01:21:42,220 --> 01:21:47,360 Vetëm mënyrë që c do të ekzekutuar këto gjëra është, para se të mund të 1559 01:21:47,360 --> 01:21:49,800 thërrasë një funksion, të gjitha argumenteve të funksionit të ketë 1560 01:21:49,800 --> 01:21:51,600 të vlerësohen plotësisht. 1561 01:21:51,600 --> 01:21:53,540 Pra, është kjo vlerësohet plotësisht? 1562 01:21:53,540 --> 01:21:54,610 Po, kjo është vetëm një varg. 1563 01:21:54,610 --> 01:21:55,480 Është vetëm një vlerë. 1564 01:21:55,480 --> 01:21:57,200 >> Pastaj ne duhet të plotësisht të vlerësojnë këtë. 1565 01:21:57,200 --> 01:21:59,720 Pasi kjo është bërë, tani të gjithë Argumentet e tij janë vlerësuar. 1566 01:21:59,720 --> 01:22:01,982 Dhe tani ne mund të bëjë thirrje për printf. 1567 01:22:01,982 --> 01:22:02,478 Po? 1568 01:22:02,478 --> 01:22:03,966 >> Audienca: Një pyetje. 1569 01:22:03,966 --> 01:22:06,942 Nëse ju keni një funksion të pavlefshëm, duhet ju keni pikëpresje kthimit? 1570 01:22:06,942 --> 01:22:09,910 >> Rob: Ju nuk bëni një pikëpresje kthim në qoftë se ju keni një funksion të pavlefshëm. 1571 01:22:09,910 --> 01:22:13,370 1572 01:22:13,370 --> 01:22:14,780 OK. 1573 01:22:14,780 --> 01:22:15,830 Deri tani disa sende grumbull. 1574 01:22:15,830 --> 01:22:19,640 Pra tog është se si ne jemi duke shkuar për t'u marrë me menaxhimin e kujtesës dinamike. 1575 01:22:19,640 --> 01:22:23,100 Dhe kjo direkt në kontrast me rafte të cilat ne do të thërrasë automatike 1576 01:22:23,100 --> 01:22:24,100 menaxhimin e kujtesës. 1577 01:22:24,100 --> 01:22:27,140 >> Pra, në rafte, ju kurrë nuk të vërtetë kanë për t'u marrë me atë se si variablat lokale 1578 01:22:27,140 --> 01:22:30,400 janë duke u shtyrë dhe popped off të gjithë këto korniza rafte dhe të gjitha këto gjëra. 1579 01:22:30,400 --> 01:22:31,070 Ju nuk keni për t'u shqetësuar në lidhje me të. 1580 01:22:31,070 --> 01:22:32,070 Është automatike. 1581 01:22:32,070 --> 01:22:36,990 Pra tog është manual. 1582 01:22:36,990 --> 01:22:38,070 Dhe [padëgjueshme] 1583 01:22:38,070 --> 01:22:41,260 vjen nga këto funksione malloc dhe të lirë. 1584 01:22:41,260 --> 01:22:43,550 >> Kështu që këtu është një tjetër program. 1585 01:22:43,550 --> 01:22:47,145 Të gjithë ne jemi duke bërë është mallocing një numër të plotë. 1586 01:22:47,145 --> 01:22:49,360 Ne jemi ruajtjen atë në yll x. 1587 01:22:49,360 --> 01:22:52,520 Sigurisht, ne kemi për të kontrolluar për të parë nëse x është null. 1588 01:22:52,520 --> 01:22:56,400 Pastaj ne jemi duke shkuar për të vendosur vetëm çfarë x është duke treguar për të 50. 1589 01:22:56,400 --> 01:23:00,350 1590 01:23:00,350 --> 01:23:03,260 Print çfarë x është duke treguar për të, printimi x, dhe pastaj lirë x. 1591 01:23:03,260 --> 01:23:08,920 >> Pra, si është kjo në të vërtetë do të shikojmë nëse ne shikojmë në rafte tonë dhe tok? 1592 01:23:08,920 --> 01:23:10,950 Pra, ne do të fillojnë përsëri. 1593 01:23:10,950 --> 01:23:12,580 Fund i rafte tonë si më parë. 1594 01:23:12,580 --> 01:23:15,930 Mos harroni se ty të grumbullosh direkt kundërshton rafte? 1595 01:23:15,930 --> 01:23:18,850 Pra, ne do të kemi krye të tog tonë deri atje. 1596 01:23:18,850 --> 01:23:22,590 >> Pra, në fund të rafte tonë, ne kemi kornizë ynë rafte për kryesor. 1597 01:23:22,590 --> 01:23:28,000 Ajo ka hapësirë ​​për argc, argv, dhe ne tani kanë një x ndryshueshme lokale, të cilat 1598 01:23:28,000 --> 01:23:30,030 është një yll int. 1599 01:23:30,030 --> 01:23:32,240 Pra, ne jemi duke shkuar për të iterate përmes këtij programi. 1600 01:23:32,240 --> 01:23:34,420 Gjëja e parë që ne kemi është një thirrje për malloc. 1601 01:23:34,420 --> 01:23:36,250 >> Pra, ne jemi duke e bërë një thirrje për malloc. 1602 01:23:36,250 --> 01:23:37,100 Malloc është një funksion. 1603 01:23:37,100 --> 01:23:38,770 Ajo do të marrë një kornizë rafte. 1604 01:23:38,770 --> 01:23:40,180 Ajo që jemi duke kaluar për malloc? 1605 01:23:40,180 --> 01:23:41,610 Kjo do të shkojë brenda e kornizës pirg. 1606 01:23:41,610 --> 01:23:45,130 Ne duke kaluar madhësinë e N, i cili eshte 4. 1607 01:23:45,130 --> 01:23:49,700 Kështu që është kaluar me malloc. 1608 01:23:49,700 --> 01:23:50,910 >> Çfarë malloc bëni? 1609 01:23:50,910 --> 01:23:53,820 Ajo na grabs disa hapësirë ​​në tog. 1610 01:23:53,820 --> 01:23:55,320 Pra, ne jemi duke shkuar për të shkuar në tog. 1611 01:23:55,320 --> 01:23:57,990 Dhe ne jemi duke shkuar për të rrëmbyer 4 bytes nga grumbull. 1612 01:23:57,990 --> 01:24:01,500 Pra, le të vetëm të jap se një adresë arbitrare. 1613 01:24:01,500 --> 01:24:06,680 0x123 Vetëm të pretendojë se është një Adresa e që është në grumbull. 1614 01:24:06,680 --> 01:24:12,300 >> Pra, çfarë është në të vërtetë brenda se Rajoni i kujtesës në adresën Ox123? 1615 01:24:12,300 --> 01:24:13,080 Garbage. 1616 01:24:13,080 --> 01:24:15,270 Pra, ne nuk e kemi ruajtur asgjë në të. 1617 01:24:15,270 --> 01:24:18,830 Deri aq sa ne e dimë, atë mund të jetë çdo gjë. 1618 01:24:18,830 --> 01:24:20,560 Ju nuk duhet të supozojmë se është zero. 1619 01:24:20,560 --> 01:24:23,870 Është më nuk zero gjasa. 1620 01:24:23,870 --> 01:24:26,260 >> Kthimet Deri tani malloc. 1621 01:24:26,260 --> 01:24:28,020 Dhe çfarë bëjmë ne kur të kthehet e malloc? 1622 01:24:28,020 --> 01:24:29,800 Ne kemi vendosur se çfarë do të kthehet. 1623 01:24:29,800 --> 01:24:32,290 Ne kemi vendosur x barabarta me atë që ajo është kthyer. 1624 01:24:32,290 --> 01:24:33,690 Pra, çfarë është ajo që kthehen? 1625 01:24:33,690 --> 01:24:38,150 Është kthyer 0x123 pasi që është adresa e bllokut të kujtesës se saj 1626 01:24:38,150 --> 01:24:40,850 vetëm ndarë në grumbull. 1627 01:24:40,850 --> 01:24:47,160 >> Pra kthehet 0x123 x tani do të jetë vendosur barabartë 0x123 cili, në pikturë, 1628 01:24:47,160 --> 01:24:52,940 ne shpesh barazim si x paturit e një aktuale shigjetë duke treguar për këtë bllok. 1629 01:24:52,940 --> 01:24:55,820 Por x është vetëm ruajtjen atë adresë. 1630 01:24:55,820 --> 01:24:58,670 Deri tani ne kemi për të parë nëse x është null. 1631 01:24:58,670 --> 01:24:59,120 Kjo nuk është null. 1632 01:24:59,120 --> 01:25:02,170 Ne pretendojmë se që malloc sukses. 1633 01:25:02,170 --> 01:25:04,950 >> Deri tani yll x është e barabartë me 50. 1634 01:25:04,950 --> 01:25:08,450 Pra yll kujton kjo do të thotë shkojnë në atë adresë. 1635 01:25:08,450 --> 01:25:12,700 Pra 0x123 Ne jemi duke shkuar për të shkojnë në atë adresë. 1636 01:25:12,700 --> 01:25:14,660 Kështu që na sjell deri aty. 1637 01:25:14,660 --> 01:25:16,310 Çfarë po bëjmë në atë adresë? 1638 01:25:16,310 --> 01:25:19,020 Ne jemi ruajtjen 50. 1639 01:25:19,020 --> 01:25:22,500 >> Pra pas këtë linjë, që është ajo gjërat do të duken si. 1640 01:25:22,500 --> 01:25:24,640 Deri tani nuk është më mbeturinave deri atje. 1641 01:25:24,640 --> 01:25:28,910 Tani ne e dimë se 50 është në se Adresa e veçantë për shkak se 1642 01:25:28,910 --> 01:25:32,410 ne kemi vendosur atë në se. 1643 01:25:32,410 --> 01:25:32,790 OK? 1644 01:25:32,790 --> 01:25:34,370 Deri tani ne jemi duke shkuar për të shtypur f. 1645 01:25:34,370 --> 01:25:38,490 >> Pra, së pari, ne jemi duke shkuar për të shtypur yll x. 1646 01:25:38,490 --> 01:25:39,640 Pra, çfarë është yll x? 1647 01:25:39,640 --> 01:25:44,300 Përsëri, yll x do të thotë të shkojnë në gjë që x është duke treguar për të. 1648 01:25:44,300 --> 01:25:47,140 Pra, x është ruajtjen 0x123 Shko te që. 1649 01:25:47,140 --> 01:25:48,490 Ne kemi marrë 50. 1650 01:25:48,490 --> 01:25:50,540 Pra, të shtypura f që. 1651 01:25:50,540 --> 01:25:54,900 Dhe kjo do të thotë se do të shtypura 50. 1652 01:25:54,900 --> 01:25:56,850 Dhe pastaj se kthehet. 1653 01:25:56,850 --> 01:25:58,340 >> Dhe pastaj ne kemi printf dytë. 1654 01:25:58,340 --> 01:25:59,370 Ne jemi tani për qind p. 1655 01:25:59,370 --> 01:26:01,680 Nëse ju nuk e keni parë atë, kjo është se sa keni shkruar një akrep. 1656 01:26:01,680 --> 01:26:04,960 Pra, ne kemi për qind i, për qind f, dhe të gjithë ata tashmë. 1657 01:26:04,960 --> 01:26:07,160 Pra qind p, të shtypura një akrep. 1658 01:26:07,160 --> 01:26:08,920 >> Pra, x është një akrep. 1659 01:26:08,920 --> 01:26:13,440 Pra, në qoftë se ne jemi duke shkuar për të shtypur x vetvete, ne jemi shtypjen atë që është në të vërtetë brenda 1660 01:26:13,440 --> 01:26:19,220 x, i cili është 0x123 Kështu parë print f do të shtypura 50. 1661 01:26:19,220 --> 01:26:23,620 Print dytë f është duke shkuar për të printuar 0x123 Po? 1662 01:26:23,620 --> 01:26:27,460 >> Audienca: A keni përdorur për qind x për të shkruar një akrep? 1663 01:26:27,460 --> 01:26:31,200 >> Rob: Pra, ju e përdorni për qind x për të shkruar një akrep? 1664 01:26:31,200 --> 01:26:38,350 Kështu që ju mund të, por për qind x është vetëm, në përgjithësi, për të si në qoftë se ju keni disa 1665 01:26:38,350 --> 01:26:40,325 numër i plotë dhe ju doni të shtypura ajo si një heksadecimal. 1666 01:26:40,325 --> 01:26:43,250 1667 01:26:43,250 --> 01:26:44,880 Kjo është vetëm se si ta bëni këtë. 1668 01:26:44,880 --> 01:26:47,160 >> Ndërsa, për qind d do shtypura si decimal. 1669 01:26:47,160 --> 01:26:50,310 Kjo është se ku kemi marrë për qind d. i është vetëm numër i plotë. 1670 01:26:50,310 --> 01:26:52,690 qind p është në mënyrë specifike për pointers. 1671 01:26:52,690 --> 01:26:54,060 >> Pra, x është një akrep. 1672 01:26:54,060 --> 01:26:56,360 Ne duam që të përdorin për qind p. 1673 01:26:56,360 --> 01:26:57,937 Por për qind x mund të punojnë. 1674 01:26:57,937 --> 01:26:58,414 Po? 1675 01:26:58,414 --> 01:26:59,664 >> Audienca: [padëgjueshme]? 1676 01:26:59,664 --> 01:27:04,138 1677 01:27:04,138 --> 01:27:05,388 >> Rob: Po. 1678 01:27:05,388 --> 01:27:07,870 1679 01:27:07,870 --> 01:27:13,440 Të paktën për këtë call-- kështu që unë nuk e përfshijnë atë në këtu. 1680 01:27:13,440 --> 01:27:19,850 Por këto dy argumente janë domosdoshmërisht brenda kësaj kornize rafte 1681 01:27:19,850 --> 01:27:23,040 së bashku me ndonjë variablave lokale printf ndodh të jetë duke përdorur. 1682 01:27:23,040 --> 01:27:27,020 Dhe pastaj thirrja pranë printf tani brenda printf kornizë rafte është 1683 01:27:27,020 --> 01:27:33,960 qind p backslash n dhe çfarëdo vlera e x është, e cila është 0x123. 1684 01:27:33,960 --> 01:27:34,425 Po? 1685 01:27:34,425 --> 01:27:35,675 >> Audienca: [padëgjueshme]? 1686 01:27:35,675 --> 01:27:38,145 1687 01:27:38,145 --> 01:27:40,880 >> Rob: Ajo do të shtypura diçka që duket si kjo. 1688 01:27:40,880 --> 01:27:41,846 >> Audienca: [padëgjueshme]. 1689 01:27:41,846 --> 01:27:44,510 >> Rob: Pra, ajo printon atë në formë të adresave. 1690 01:27:44,510 --> 01:27:47,003 Ajo duket si një adresë. 1691 01:27:47,003 --> 01:27:47,494 Po? 1692 01:27:47,494 --> 01:27:49,458 >> Audienca: [padëgjueshme]? 1693 01:27:49,458 --> 01:27:51,075 >> Rob: Pse është ajo? 1694 01:27:51,075 --> 01:27:52,920 >> Audienca: [padëgjueshme]? 1695 01:27:52,920 --> 01:27:55,240 >> Rob: Pse është ky tregues 4 bytes? 1696 01:27:55,240 --> 01:27:58,500 Pra, ka një bandë e tërë të 0-ta në frontin e kësaj. 1697 01:27:58,500 --> 01:28:03,740 Pra, kjo është me të vërtetë 0x0000000123. 1698 01:28:03,740 --> 01:28:06,510 Në një sistem të 64-bit, nuk do të një bandë e tërë më shumë zero. 1699 01:28:06,510 --> 01:28:11,410 1700 01:28:11,410 --> 01:28:11,900 Po? 1701 01:28:11,900 --> 01:28:13,150 >> Audienca: [padëgjueshme]. 1702 01:28:13,150 --> 01:28:17,290 1703 01:28:17,290 --> 01:28:21,130 >> Rob: Pra printf parë do të print-- 1704 01:28:21,130 --> 01:28:21,980 >> Audienca: [padëgjueshme]. 1705 01:28:21,980 --> 01:28:24,420 >> Rob: Po, ajo do të shtypura ajo që x është duke treguar. 1706 01:28:24,420 --> 01:28:27,030 1707 01:28:27,030 --> 01:28:29,070 Star thotë se çfarë është kjo gjë e treguar. 1708 01:28:29,070 --> 01:28:30,300 Rrëmbej atë. 1709 01:28:30,300 --> 01:28:31,455 Pra, çfarë është ajo për të treguar? 1710 01:28:31,455 --> 01:28:31,850 50. 1711 01:28:31,850 --> 01:28:32,410 Rrëmbej atë. 1712 01:28:32,410 --> 01:28:33,390 Kjo është ajo që ne jemi duke shkuar për të shtypur. 1713 01:28:33,390 --> 01:28:37,020 Ndërsa, në një tjetër, ne jemi të vetëm shtypjen x vetvete. 1714 01:28:37,020 --> 01:28:38,850 Çfarë është brenda f? 1715 01:28:38,850 --> 01:28:43,710 0x123. 1716 01:28:43,710 --> 01:28:44,500 OK. 1717 01:28:44,500 --> 01:28:46,620 >> Dhe pastaj, në fund, ne kemi të lirë. 1718 01:28:46,620 --> 01:28:48,040 Ajo që jemi duke kaluar për të liruar? 1719 01:28:48,040 --> 01:28:49,470 Ne jemi duke kaluar x. 1720 01:28:49,470 --> 01:28:52,380 Kjo kohë që unë në fakt shfaqet ajo në kuadër rafte. 1721 01:28:52,380 --> 01:28:56,370 >> Pra, ne jemi duke kaluar vlerën 0x123 për të liruar. 1722 01:28:56,370 --> 01:28:59,070 Deri tani pa e di, të gjithë të drejtë, Unë kam për të shkuar deri në tog 1723 01:28:59,070 --> 01:29:00,050 dhe se kujtesa e lirë. 1724 01:29:00,050 --> 01:29:03,920 Ajo nuk është më e përdorur atë është në adresën 0x123. 1725 01:29:03,920 --> 01:29:07,010 >> Pra, të lirë do të lëshojë që nga plehrat. 1726 01:29:07,010 --> 01:29:09,490 Tani tog ynë është bosh përsëri. 1727 01:29:09,490 --> 01:29:11,120 Ne nuk kemi rrjedhjet e kujtesës. 1728 01:29:11,120 --> 01:29:12,940 Tani pa pagesë do të kthehet. 1729 01:29:12,940 --> 01:29:16,130 Vini re se x është ende 0x123. 1730 01:29:16,130 --> 01:29:18,240 Por që tani nuk është memorie e vlefshme. 1731 01:29:18,240 --> 01:29:21,220 1732 01:29:21,220 --> 01:29:23,986 Ne duhet dereference jo më të gjatë x. 1733 01:29:23,986 --> 01:29:24,440 Po? 1734 01:29:24,440 --> 01:29:27,240 >> Audienca: A kthehen 0 tepërt? 1735 01:29:27,240 --> 01:29:28,290 >> Rob: A është returen 0 tepërt? 1736 01:29:28,290 --> 01:29:31,110 Po. 1737 01:29:31,110 --> 01:29:33,950 Ne vetëm vënë se për shkak ne kemi një kthim të një për ajër. 1738 01:29:33,950 --> 01:29:36,830 Pra, kjo është si, vërtet, lejon përfshijnë kthimin 0. 1739 01:29:36,830 --> 01:29:37,310 Po? 1740 01:29:37,310 --> 01:29:38,560 >> Audienca: [padëgjueshme]? 1741 01:29:38,560 --> 01:29:42,110 1742 01:29:42,110 --> 01:29:45,580 >> Rob: Pra pas lira x, çfarë ndodh nëse ne përpiqemi të dereference treguesin? 1743 01:29:45,580 --> 01:29:47,240 Është e mundur që asgjë nuk shkon keq. 1744 01:29:47,240 --> 01:29:49,330 Është e mundur që ne ende do të merrni 50. 1745 01:29:49,330 --> 01:29:53,590 >> Është e mundur, gjithashtu, se se kujtesa është tani duke u përdorur për diçka tjetër. 1746 01:29:53,590 --> 01:29:57,140 Pra, kjo është sjellje e papërcaktuar. 1747 01:29:57,140 --> 01:30:00,772 Dhe papërcaktuar do të thotë asgjë mund të ndodhë. 1748 01:30:00,772 --> 01:30:01,250 Po? 1749 01:30:01,250 --> 01:30:02,500 >> Audienca: [padëgjueshme]? 1750 01:30:02,500 --> 01:30:07,942 1751 01:30:07,942 --> 01:30:10,830 >> Rob: Jo, kështu që nëse ju të caktojë x për diçka tjetër. 1752 01:30:10,830 --> 01:30:15,870 Pra, nëse këtu kemi thënë x është e barabartë me diçka e malloc else-- 1753 01:30:15,870 --> 01:30:17,100 Madhësia e malloc event-- 1754 01:30:17,100 --> 01:30:20,180 pastaj se bllok origjinale e kujtesës nuk është liruar. 1755 01:30:20,180 --> 01:30:21,490 Dhe ne kemi humbur zyrtarisht atë. 1756 01:30:21,490 --> 01:30:23,150 Kjo është një rrjedhje kujtim. 1757 01:30:23,150 --> 01:30:25,090 Ne e kemi humbur të gjitha referencat në atë bllok të memories. 1758 01:30:25,090 --> 01:30:26,827 Pra, nuk ka asnjë mënyrë ne mund të ndonjëherë të lirë atë. 1759 01:30:26,827 --> 01:30:32,074 1760 01:30:32,074 --> 01:30:36,630 OK, kështu që pastaj të kthehen 0 mjetet bërë. 1761 01:30:36,630 --> 01:30:37,900 >> Në rregull, del nga shtrati kështu rafte. 1762 01:30:37,900 --> 01:30:39,320 Çfarë është ideja këtu? 1763 01:30:39,320 --> 01:30:41,210 Pra mbani mend, grumbull është duke shkuar poshtë. 1764 01:30:41,210 --> 01:30:43,480 Stack është duke shkuar deri. 1765 01:30:43,480 --> 01:30:48,000 Pra, kjo ishte shembulli nga leksion, Unë mendoj, ku kryesore është vetëm do të 1766 01:30:48,000 --> 01:30:51,380 e quajnë këtë foo funksion, e cila do për të thirrur veten Recursively mbi dhe 1767 01:30:51,380 --> 01:30:52,320 pushim. 1768 01:30:52,320 --> 01:30:55,370 >> Pra rafte korniza do të punë të njëjtë. 1769 01:30:55,370 --> 01:30:58,130 Pra, ne jemi duke shkuar për të filluar me kryesore si kuadër fund rafte. 1770 01:30:58,130 --> 01:31:02,000 Pastaj kryesor do të thërrasë foo, e cila do të marrë një kornizë rafte. 1771 01:31:02,000 --> 01:31:04,260 >> Pastaj foo do të thërrasë foo përsëri, e cila do të marrë 1772 01:31:04,260 --> 01:31:05,500 një tjetër kornizë rafte. 1773 01:31:05,500 --> 01:31:08,270 Dhe pastaj përsëri, dhe përsëri, dhe përsëri, dhe përsëri derisa, në fund, ne të drejtuar 1774 01:31:08,270 --> 01:31:09,190 në grumbull. 1775 01:31:09,190 --> 01:31:11,990 Pra, kjo është se si ne të merrni a del nga shtrati rafte. 1776 01:31:11,990 --> 01:31:14,910 Dhe në këtë pikë, ju seg faj. 1777 01:31:14,910 --> 01:31:17,335 Ose ju do të vërtetë të seg faj para këtë pikë, por vërtet. 1778 01:31:17,335 --> 01:31:19,660 >> Audienca: A është thelbi hale njëjtë si faj Seg? 1779 01:31:19,660 --> 01:31:26,140 >> Rob: Pra, ju do të shihni segmentimit core faji hedhur. 1780 01:31:26,140 --> 01:31:28,760 Ju merrni një hale thelbësore kur ju seg faj. 1781 01:31:28,760 --> 01:31:32,580 Dhe kjo është si një hale të gjitha përmbajtja e kujtesës tuaj të tanishme në mënyrë 1782 01:31:32,580 --> 01:31:36,670 që ju mund të provoni dhe për të identifikuar pse ju Seg fajësuar. 1783 01:31:36,670 --> 01:31:37,135 Po? 1784 01:31:37,135 --> 01:31:38,385 >> Audienca: [padëgjueshme]? 1785 01:31:38,385 --> 01:31:40,855 1786 01:31:40,855 --> 01:31:45,460 >> Rob: Pra një mjet faji segmentimit ka një overflow rafte. 1787 01:31:45,460 --> 01:31:47,060 Pra jo domosdoshmërisht. 1788 01:31:47,060 --> 01:31:49,880 Një faji segmentimit do të thotë se ju jeni memorie prekja në mënyrë 1789 01:31:49,880 --> 01:31:50,880 ju nuk duhet të jetë. 1790 01:31:50,880 --> 01:31:54,750 Pra, një mënyrë që kjo të ndodhë është, kur ju rafte del nga shtrati, ne fillojmë prekëse 1791 01:31:54,750 --> 01:31:58,736 memorie në një mënyrë që ne nuk duhet të jetë. 1792 01:31:58,736 --> 01:31:59,208 Po? 1793 01:31:59,208 --> 01:32:00,458 >> Audienca: [padëgjueshme]? 1794 01:32:00,458 --> 01:32:03,456 1795 01:32:03,456 --> 01:32:05,830 >> Rob: Pra, brenda një lak të pafund. 1796 01:32:05,830 --> 01:32:08,770 Si, kjo është si një Infinite rekursive loop dhe kështu që ne të merrni një tjetër 1797 01:32:08,770 --> 01:32:09,770 rafte kornizë çdo herë. 1798 01:32:09,770 --> 01:32:13,540 Por vetëm në brendësi të një të rregullt pafund ndërsa one-- 1799 01:32:13,540 --> 01:32:16,390 mirë, le të mos edhe të shtypura f-- 1800 01:32:16,390 --> 01:32:17,040 të bëjë diçka. 1801 01:32:17,040 --> 01:32:18,390 Çfarëdo. 1802 01:32:18,390 --> 01:32:20,610 >> Ne nuk jemi duke shkuar për të marrë një tjetër kornizë rafte. 1803 01:32:20,610 --> 01:32:22,530 Ne jemi vetëm duke shkuar për të mbajtur looping mbi këtë udhëzim i vetëm. 1804 01:32:22,530 --> 01:32:23,920 Rafte nuk është në rritje. 1805 01:32:23,920 --> 01:32:27,290 Është fakt se çdo rekursive Thirrja është duke na dhënë një kornizë rafte. 1806 01:32:27,290 --> 01:32:31,231 Kjo është arsyeja pse ne kemi marrë një overflow rafte. 1807 01:32:31,231 --> 01:32:31,728 Po? 1808 01:32:31,728 --> 01:32:38,189 >> Audienca: Pra, nëse ju tha që të merrni ndërsa lak dhe pastaj [e padëgjueshme]? 1809 01:32:38,189 --> 01:32:42,000 >> Rob: Pra, nëse brenda lak kohë ka pasur një printf, ju ende do të 1810 01:32:42,000 --> 01:32:42,790 faji nuk seg. 1811 01:32:42,790 --> 01:32:46,090 Unë thjesht nuk duan të ngatërruar gjërat. 1812 01:32:46,090 --> 01:32:46,610 Ajo do loop. 1813 01:32:46,610 --> 01:32:48,225 Ju do të merrni një pirg të vetme kornizë për printf. 1814 01:32:48,225 --> 01:32:49,580 >> Pastaj printf do të kthehen. 1815 01:32:49,580 --> 01:32:50,280 Pastaj ju do të lak përsëri. 1816 01:32:50,280 --> 01:32:51,460 Ju do të merrni një pirg të vetme kornizë për printf. 1817 01:32:51,460 --> 01:32:52,850 Ajo do të kthehet. 1818 01:32:52,850 --> 01:32:54,060 Vetëm kornizë rafte. 1819 01:32:54,060 --> 01:33:00,215 Pra, ju nuk jeni duke marrë këtë pafund grumbullonin korniza rafte. 1820 01:33:00,215 --> 01:33:03,185 >> Audienca: [padëgjueshme]? 1821 01:33:03,185 --> 01:33:04,040 >> Rob: Po. 1822 01:33:04,040 --> 01:33:09,360 Pra, kjo del nga shtrati rafte ndodh sepse asnjë nga këto 1823 01:33:09,360 --> 01:33:11,600 thirrjet për foo po kthehen. 1824 01:33:11,600 --> 01:33:15,250 Pra, nëse do të kthehemi, atëherë ne do të fillojnë humbur korniza rafte. 1825 01:33:15,250 --> 01:33:17,870 Dhe atëherë ne nuk do të rafte del nga shtrati. 1826 01:33:17,870 --> 01:33:20,070 Dhe kjo është arsyeja pse ju duhet një rast bazë për funksionet tuaja personale. 1827 01:33:20,070 --> 01:33:22,992 1828 01:33:22,992 --> 01:33:23,479 Po? 1829 01:33:23,479 --> 01:33:27,375 >> Audienca: A është madhësia potenciale dhe rafte për tog njëjtë për 1830 01:33:27,375 --> 01:33:29,880 gjitha programet? 1831 01:33:29,880 --> 01:33:31,910 >> Rob: Rreth. 1832 01:33:31,910 --> 01:33:35,090 A është madhësia potenciale e rafte dhe grumbull i njëjtë për të gjitha programet? 1833 01:33:35,090 --> 01:33:37,180 Rreth. 1834 01:33:37,180 --> 01:33:40,080 Ka disa randomization të ku fillon rafte dhe 1835 01:33:40,080 --> 01:33:42,400 ku fillon grumbull. 1836 01:33:42,400 --> 01:33:45,870 Nëse ju ndodh që të ketë një të tërë shumë Variablat globale dhe gjëra, ju mund të 1837 01:33:45,870 --> 01:33:49,520 të marrë larg nga një hapësirë për tog tuaj. 1838 01:33:49,520 --> 01:33:54,060 >> Në një sistem të 64-bit, ju praktikisht kanë memorie të pafund. 1839 01:33:54,060 --> 01:33:55,820 Ka vetëm aq shumë. 1840 01:33:55,820 --> 01:33:59,250 Midis 32 bit dhe 64 bit, atë është një ndryshim i rëndësishëm. 1841 01:33:59,250 --> 01:34:02,350 >> Ju jeni do të merrni një tërësi shumë më të rafte dhe hapësirë ​​tog në një 64-bit 1842 01:34:02,350 --> 01:34:05,810 sistemi, sepse nuk është vetëm më shumë adreson se ata mund të përdorin. 1843 01:34:05,810 --> 01:34:09,360 Por në një sistem individual, ajo do të të jetë afërsisht të njëjtën sasi e rafte 1844 01:34:09,360 --> 01:34:10,785 dhe hapësirë ​​tog. 1845 01:34:10,785 --> 01:34:13,635 1846 01:34:13,635 --> 01:34:15,530 Të gjithë të drejtë. 1847 01:34:15,530 --> 01:34:18,220 >> Pra, gjëja e fundit që është përpilim. 1848 01:34:18,220 --> 01:34:19,810 Kështu që ju duhet të dini këtë proces. 1849 01:34:19,810 --> 01:34:22,240 Ekzistojnë katër hapa të mëdha. 1850 01:34:22,240 --> 01:34:24,400 Pra, e para duhet të jetë e lehtë për të kujtuar. 1851 01:34:24,400 --> 01:34:25,085 Para-përpunimit. 1852 01:34:25,085 --> 01:34:28,390 Ajo ka prefiksin parashkollore në të. 1853 01:34:28,390 --> 01:34:32,080 Pra, është fjala para se çdo gjë tjetër. 1854 01:34:32,080 --> 01:34:34,000 >> Gjë për të kujtuar është hash. 1855 01:34:34,000 --> 01:34:37,250 Pra hash përcakton dhe hash përfshin në të gjithë ata. 1856 01:34:37,250 --> 01:34:39,560 Ata janë të gjithë para-procesor direktivave. 1857 01:34:39,560 --> 01:34:42,030 Këto janë gjërat që para-procesor kujdeset. 1858 01:34:42,030 --> 01:34:43,680 >> Pra, çfarë e bën një para-procesor të bëjë? 1859 01:34:43,680 --> 01:34:44,850 Kjo është një gjë me të vërtetë memec. 1860 01:34:44,850 --> 01:34:49,380 Të gjitha është e aftë për të janë të gjitha këto kopje, dhe të prerë, dhe paste operacionet. 1861 01:34:49,380 --> 01:34:51,790 >> Pra hash përfshin standarde I0 dot h. 1862 01:34:51,790 --> 01:34:52,990 Çfarë është se duke bërë? 1863 01:34:52,990 --> 01:34:56,610 Është grabbing standarde I0 dot h paraqesë dhe pasting atë në krye 1864 01:34:56,610 --> 01:34:58,960 kudo që ajo thotë hash përfshin standarde I0 dot h. 1865 01:34:58,960 --> 01:35:02,480 >> Dhe çdo hash përcaktojnë se ne kemi parë, çfarë është se duke bërë? 1866 01:35:02,480 --> 01:35:06,730 Saj kopjimi vlerën që hash përcaktuar është definuar si dhe pasting se 1867 01:35:06,730 --> 01:35:08,500 kudo që të jeni duke përdorur vlerën. 1868 01:35:08,500 --> 01:35:13,400 Pra preprocessor vetëm bën me të vërtetë Operacionet tekst i thjeshtë në bazë. 1869 01:35:13,400 --> 01:35:15,870 Ajo nuk bën asgjë zgjuar. 1870 01:35:15,870 --> 01:35:18,920 Pra, çdo gjë tjetër është më e komplikuar. 1871 01:35:18,920 --> 01:35:22,970 >> Pra, tani që preprocessor është bërë, ne fakt përpiloni. 1872 01:35:22,970 --> 01:35:24,320 Pra, çfarë do të thotë hartimin? 1873 01:35:24,320 --> 01:35:27,310 Ne jemi tani duke shkuar nga kodi c në kodin kuvendit. 1874 01:35:27,310 --> 01:35:27,570 Po? 1875 01:35:27,570 --> 01:35:28,820 >> Audienca: [padëgjueshme]? 1876 01:35:28,820 --> 01:35:32,390 1877 01:35:32,390 --> 01:35:34,220 >> Rob: Po, ne kemi kapur që. 1878 01:35:34,220 --> 01:35:36,880 1879 01:35:36,880 --> 01:35:38,660 Pra hartimin. 1880 01:35:38,660 --> 01:35:40,310 Ne jemi duke shkuar nga c të asamblesë. 1881 01:35:40,310 --> 01:35:42,470 Pra, ky është një ndryshim gjuha aktuale. 1882 01:35:42,470 --> 01:35:45,240 Hartimi veten do të thotë duke shkuar nga një gjuhë të nivelit të lartë për të 1883 01:35:45,240 --> 01:35:47,340 një gjuhë të nivelit më të ulët. 1884 01:35:47,340 --> 01:35:50,720 >> Dhe c është një gjuhë të nivelit të lartë në krahasim me kuvendin. 1885 01:35:50,720 --> 01:35:52,320 Çfarë është kuvendi? 1886 01:35:52,320 --> 01:35:56,440 Udhëzimet e saj, që janë, shumë e shumë, e bëri për CPU tuaj. 1887 01:35:56,440 --> 01:35:59,130 Por kompjuteri juaj ende nuk nuk e kuptojnë kuvendit. 1888 01:35:59,130 --> 01:36:01,570 Ajo vetëm e kuptonte ato dhe zero. 1889 01:36:01,570 --> 01:36:06,160 Pra, hapi tjetër është grumbulluar, e cila na sjell nga këto udhëzime që 1890 01:36:06,160 --> 01:36:08,760 CPU juaj kupton dhe në fakt përkthen ato, për të 1891 01:36:08,760 --> 01:36:10,820 ato dhe zero. 1892 01:36:10,820 --> 01:36:13,570 >> Pra C në asamble para binar. 1893 01:36:13,570 --> 01:36:15,870 Por unë nuk kam një ekzekutueshme ende. 1894 01:36:15,870 --> 01:36:19,550 Pra, mendoj se e bibliotekës CS50. 1895 01:36:19,550 --> 01:36:23,070 Ne kemi dhënë me një binar për kjo bibliotekë CS50, e cila ka GetString 1896 01:36:23,070 --> 01:36:24,400 dhe GetInt dhe të gjithë se. 1897 01:36:24,400 --> 01:36:25,700 >> Por CS50 library-- 1898 01:36:25,700 --> 01:36:27,650 në dhe e itself-- nuk është i ekzekutueshëm. 1899 01:36:27,650 --> 01:36:29,570 Ajo nuk ka një funksion kryesor. 1900 01:36:29,570 --> 01:36:32,230 Është vetëm një bandë e binar që ju mund të përdorni. 1901 01:36:32,230 --> 01:36:41,730 Pra lidhja është se si ne të sjellë së bashku të gjithë nga këto fotografi të ndryshme binare 1902 01:36:41,730 --> 01:36:43,110 në një ekzekutues aktuale. 1903 01:36:43,110 --> 01:36:45,900 Një që ju mund të shtypni dot çaj dot jashtë. 1904 01:36:45,900 --> 01:36:51,660 >> Pra, kjo është si file që ju shkroi, - çfarëdo programi juaj is-- 1905 01:36:51,660 --> 01:36:53,620 Ceaser dot c. 1906 01:36:53,620 --> 01:36:55,100 Por tani ajo është hartuar deri në binar. 1907 01:36:55,100 --> 01:36:56,480 Pra Ceaser dot o. 1908 01:36:56,480 --> 01:36:59,620 Dhe kjo është CS50 ynë bibliotekat binar. 1909 01:36:59,620 --> 01:37:02,284 Dhe ata janë duke u kombinuar në një ekzekutues të vetëm. 1910 01:37:02,284 --> 01:37:02,758 Po? 1911 01:37:02,758 --> 01:37:04,008 >> Audienca: [padëgjueshme]? 1912 01:37:04,008 --> 01:37:08,800 1913 01:37:08,800 --> 01:37:12,710 >> Rob: Pra, së pari të përfshijnë, mos harroni, hash përfshijnë është në fakt një 1914 01:37:12,710 --> 01:37:13,810 hap para-procesor. 1915 01:37:13,810 --> 01:37:14,750 Por kjo është e veçantë. 1916 01:37:14,750 --> 01:37:20,730 Nëse ju nuk jeni duke përdorur funksione që janë jashtë e file të vetëm atëherë, 1917 01:37:20,730 --> 01:37:26,100 jo, ju nuk keni nevojë për të lidhur ndonjë gjë pasi ju keni gjithçka. 1918 01:37:26,100 --> 01:37:30,310 >> Kjo tha, printf është duke u lidhur në. 1919 01:37:30,310 --> 01:37:32,820 Në qoftë se ju përdorni ndonjëherë printf, kjo është diçka e që duhet të jetë i lidhur në 1920 01:37:32,820 --> 01:37:35,740 sepse ju nuk e keni shkruar se. 1921 01:37:35,740 --> 01:37:39,530 Dhe, në fakt, printf është automatikisht lidhura në. 1922 01:37:39,530 --> 01:37:42,760 Ju e dini se si në rreshtin e komandave ose kur ju shkruani bëni, ju shihni se keni 1923 01:37:42,760 --> 01:37:46,690 dash l CS50, e cila ka lidhje në bibliotekë CS50? 1924 01:37:46,690 --> 01:37:49,070 Printf, dhe stuff like that, do të jetë i lidhur në mënyrë automatike. 1925 01:37:49,070 --> 01:37:51,730 1926 01:37:51,730 --> 01:37:53,930 Çdo pyetje të tjera në çdo gjë? 1927 01:37:53,930 --> 01:37:56,280 >> Audienca: [padëgjueshme]? 1928 01:37:56,280 --> 01:37:58,300 >> Rob: Lidhja? 1929 01:37:58,300 --> 01:38:03,450 Ne kemi një bandë e tërë e Fotografi të ndryshme binare. 1930 01:38:03,450 --> 01:38:06,410 Ky është shembulli kanonik që ne përdorim është bibliotekë CS50. 1931 01:38:06,410 --> 01:38:09,960 Ne kemi hartuar dhe dhënë për ju në binar për këtë bibliotekë CS50. 1932 01:38:09,960 --> 01:38:12,410 >> Ju doni të përdorni GetString në programin tuaj. 1933 01:38:12,410 --> 01:38:14,750 Pra, ju shkoni dhe të përdorni GetString. 1934 01:38:14,750 --> 01:38:19,700 Por pa kodin tim binar për GetString, kur ju përpilojnë kodin tuaj 1935 01:38:19,700 --> 01:38:23,140 poshtë, ju nuk mund të vërtetë të drejtuar tuaj Programi sepse GetString String është 1936 01:38:23,140 --> 01:38:25,080 ende nuk është përcaktuar plotësisht. 1937 01:38:25,080 --> 01:38:29,220 >> Është vetëm kur ju lidhë në binar tim që përmban GetString që tani, të gjithë 1938 01:38:29,220 --> 01:38:31,130 drejtë, unë mund të vërtetë ekzekutuar GetString. 1939 01:38:31,130 --> 01:38:32,330 Dosja ime është e plotë. 1940 01:38:32,330 --> 01:38:34,208 Dhe unë mund të kandidojë këtë. 1941 01:38:34,208 --> 01:38:34,697 Po? 1942 01:38:34,697 --> 01:38:37,631 >> Audienca: A lidh kthyer binar për të ekzekutueshme? 1943 01:38:37,631 --> 01:38:42,032 Pra, edhe në qoftë se ju nuk keni të tjera bibliotekat, nuk do të vazhdojë të jetë 1944 01:38:42,032 --> 01:38:44,477 nevojshme për të përkthyer [padëgjueshme]? 1945 01:38:44,477 --> 01:38:48,640 >> Rob: Pra një ekzekutueshme është ende në binar. 1946 01:38:48,640 --> 01:38:51,750 Është vetëm kombinuar një tërësi bandë e binare. 1947 01:38:51,750 --> 01:38:55,124 1948 01:38:55,124 --> 01:38:56,591 >> Audienca: Ju faleminderit shumë. 1949 01:38:56,591 --> 01:38:58,560 >> Rob: Nuk ka problem. 1950 01:38:58,560 --> 01:38:59,540 Çdo pyetje të tjera? 1951 01:38:59,540 --> 01:39:02,001 Përndryshe, ne jemi të vendosur të gjithë. 1952 01:39:02,001 --> 01:39:02,690 Të gjithë të drejtë. 1953 01:39:02,690 --> 01:39:02,990 Faleminderit. 1954 01:39:02,990 --> 01:39:03,590 >> [Duartrokitje] 1955 01:39:03,590 --> 01:39:04,490 >> Audienca: Ju faleminderit. 1956 01:39:04,490 --> 01:39:05,740 >> Rob: Po. 1957 01:39:05,740 --> 01:39:06,582