1 00:00:00,000 --> 00:00:09,572 2 00:00:09,572 --> 00:00:12,030 ROB BOWDEN: Merhaba, ben, Rob Bowden değilim ve en quiz0 bahsedelim. 3 00:00:12,030 --> 00:00:13,280 4 00:00:13,280 --> 00:00:14,545 >> Peki, ilk soru. 5 00:00:14,545 --> 00:00:17,750 Bu soru nerede Numarayı kod için gerekli 6 00:00:17,750 --> 00:00:21,270 İkili ampuller 127. 7 00:00:21,270 --> 00:00:23,550 Eğer isteseydi, sen-ebil Düzenli dönüşüm yapmak 8 00:00:23,550 --> 00:00:25,950 ondalık ikili için, bi-- veya gelen. 9 00:00:25,950 --> 00:00:28,300 Ama muhtemelen gidiyor zaman bir sürü almak için. 10 00:00:28,300 --> 00:00:31,750 Bunu anlamaya olabilir, yani, Tamam, 1, orada, 2 orada olduğunu 11 00:00:31,750 --> 00:00:33,650 4 Orada, 8 orada olduğunu. 12 00:00:33,650 --> 00:00:39,280 Kolay yolu, 127 128 eksi biridir. 13 00:00:39,280 --> 00:00:42,013 O soldaki ampul 128-bit. 14 00:00:42,013 --> 00:00:43,490 15 00:00:43,490 --> 00:00:47,860 Yani 127 sadece tüm gerçekten Diğer ampullerin, 16 00:00:47,860 --> 00:00:51,420 Bu soldaki beri ampul eksi 1. 17 00:00:51,420 --> 00:00:52,800 O soru için bu kadar. 18 00:00:52,800 --> 00:00:54,060 >> Soru biri. 19 00:00:54,060 --> 00:00:56,710 3 bit ile Yani yapabilirsiniz 8 ayrı değerleri temsil eder. 20 00:00:56,710 --> 00:01:01,000 Neden sonra, en büyük negatif olmayan 7 Eğer temsil edebilir ondalık tamsayı? 21 00:01:01,000 --> 00:01:04,050 Peki, eğer biz sadece can 8 farklı değerleri temsil, 22 00:01:04,050 --> 00:01:07,430 Sonra ne olacağız temsil ile 7 0. 23 00:01:07,430 --> 00:01:08,745 0 değerlerden birini kaplıyor. 24 00:01:08,745 --> 00:01:09,980 25 00:01:09,980 --> 00:01:11,190 >> Soru iki. 26 00:01:11,190 --> 00:01:14,610 N bit ile, ne kadar farklı değerler temsil edebilir? 27 00:01:14,610 --> 00:01:19,080 Yani, n bit ile, 2'ye var Her bit için olası değerler. 28 00:01:19,080 --> 00:01:22,300 Yani biz 2 olası değerleri için var ilk bit, 2 olası değerler 29 00:01:22,300 --> 00:01:24,450 saniye, 2 üçte mümkün. 30 00:01:24,450 --> 00:01:28,730 Ve böylece bu 2 kez 2 kez 2, ve sonuçta cevap n 2 'dir. 31 00:01:28,730 --> 00:01:30,010 32 00:01:30,010 --> 00:01:31,100 >> Soru üç. 33 00:01:31,100 --> 00:01:33,450 Ikili 0x50 nedir? 34 00:01:33,450 --> 00:01:39,490 Yani onaltılık bir çok olduğunu hatırlıyorum İkili için basit dönüşüm. 35 00:01:39,490 --> 00:01:43,180 Yani burada, biz sadece bakmak gerekir 5 ve bağımsız bir şekilde 0. 36 00:01:43,180 --> 00:01:45,110 Yani ikili 5 ne? 37 00:01:45,110 --> 00:01:48,400 0101, bu 1 bit ve 4 biraz. 38 00:01:48,400 --> 00:01:49,900 Ikili 0 neler var? 39 00:01:49,900 --> 00:01:50,520 Zor değil. 40 00:01:50,520 --> 00:01:52,180 0000. 41 00:01:52,180 --> 00:01:54,970 Yani sadece onları biraraya koymak ve Bu ikili tam sayı. 42 00:01:54,970 --> 00:01:57,640 01010000. 43 00:01:57,640 --> 00:02:00,439 Eğer isteseydi Ve sen-ebil Bu soldaki sıfır çıkar. 44 00:02:00,439 --> 00:02:01,105 Bu alakasız. 45 00:02:01,105 --> 00:02:02,920 46 00:02:02,920 --> 00:02:05,733 >> Sonra alternatif ondalık 0x50 nedir? 47 00:02:05,733 --> 00:02:08,649 İstediğin Eğer iseniz, Yapabileceğim İkili daha rahat, 48 00:02:08,649 --> 00:02:11,340 Eğer bu ikili cevabı alabilir ve ondalık içine dönüştürmek. 49 00:02:11,340 --> 00:02:13,870 Ya da biz sadece hatırlıyor olabilir Bu onaltılık. 50 00:02:13,870 --> 00:02:21,140 0 Böylece 0 inci sırada yer almaktadır, ve 5 ilk etapta 16'dan olduğunu. 51 00:02:21,140 --> 00:02:25,990 Yani burada, biz 5 kez 16 var İlk, sıfıra artı 0 kez 16, 52 00:02:25,990 --> 00:02:27,520 80. 53 00:02:27,520 --> 00:02:29,710 Ve baktı eğer sorusuna başlık, 54 00:02:29,710 --> 00:02:32,920 Bir tür oldu CS 80 oldu Bu sorunun cevabını ipucu. 55 00:02:32,920 --> 00:02:34,460 56 00:02:34,460 --> 00:02:35,420 >> Soru beş. 57 00:02:35,420 --> 00:02:40,320 Biz hangi, bu Scratch komut dosyası var 4 kez fıstık ezmesi jöle tekrarlayarak. 58 00:02:40,320 --> 00:02:42,800 Peki C kod artık bunu? 59 00:02:42,800 --> 00:02:47,730 Peki, biz ötürü-- kalın yer var uygulamak zorunda sadece bir parçasıdır. 60 00:02:47,730 --> 00:02:51,950 Bu yüzden 4 döngü var bir 4 döngü var Zaman, printf-ing fıstık ezmesi jöle, 61 00:02:51,950 --> 00:02:53,910 Yeni hat ile sorun sorar gibi. 62 00:02:53,910 --> 00:02:55,250 63 00:02:55,250 --> 00:02:57,490 >> Soru altı, başka Scratch bir sorun. 64 00:02:57,490 --> 00:03:00,210 Biz bir döngü içinde sonsuza dek olduğunu görüyoruz. 65 00:03:00,210 --> 00:03:05,000 Biz değişken i söylüyorsun ve daha sonra 1 ile i artırılmıyor. 66 00:03:05,000 --> 00:03:09,580 Şimdi C. vardır ki yapmak istiyorum Bu yapmış olabilir birden çok yolu. 67 00:03:09,580 --> 00:03:12,840 Burada kod oldu Bir süre (gerçek) olarak sonsuza kadar döngü. 68 00:03:12,840 --> 00:03:16,600 Yani biz sadece, değişkeni i beyan gibi biz Scratch değişken i vardı. 69 00:03:16,600 --> 00:03:21,950 Değişken i bildirmek, ve sonsuza kadar (true) ise, biz değişkeni i say. 70 00:03:21,950 --> 00:03:25,260 Printf% ben-- veya% d kullandım böylece. 71 00:03:25,260 --> 00:03:27,985 Biz bu değişken demek, ve sonra artırmak, i ++. 72 00:03:27,985 --> 00:03:29,560 73 00:03:29,560 --> 00:03:30,830 >> Soru yedi. 74 00:03:30,830 --> 00:03:35,560 Şimdi çok benzer bir şey yapmak istiyorum Mario nokta c sorunu bir set. 75 00:03:35,560 --> 00:03:39,110 Biz bu Hashtag'leri yazdırmak istiyorum, Biz beş yazdırmak istiyorum 76 00:03:39,110 --> 00:03:40,700 Bu sağlamalarının üç dikdörtgen tarafından. 77 00:03:40,700 --> 00:03:41,770 78 00:03:41,770 --> 00:03:43,162 Peki biz bunu yapacağız? 79 00:03:43,162 --> 00:03:45,370 Peki, size bir bütün vermek kod demet, ve sadece 80 00:03:45,370 --> 00:03:47,560 Baskı ızgara fonksiyonu doldurmak zorunda. 81 00:03:47,560 --> 00:03:49,540 >> Peki PrintGrid benziyor? 82 00:03:49,540 --> 00:03:51,480 Peki geçtik genişlik ve yükseklik. 83 00:03:51,480 --> 00:03:53,520 Bu yüzden bir dış var 4 döngü, bu döngü var 84 00:03:53,520 --> 00:03:57,650 Bu satırları tüm biz yazdırmak istediğiniz ızgara. 85 00:03:57,650 --> 00:04:01,250 Sonra arası iç içe 4 döngü var her sütun üzerinde baskı var. 86 00:04:01,250 --> 00:04:06,210 Yani her satır için, biz yazdırmak Her sütun, bir tek müzakere. 87 00:04:06,210 --> 00:04:10,045 Sonra sıranın sonunda biz baskı bir tek bir yeni satır sonraki satıra gitmek için. 88 00:04:10,045 --> 00:04:11,420 Ve bütün o ızgara için var. 89 00:04:11,420 --> 00:04:12,810 90 00:04:12,810 --> 00:04:13,675 >> Soru sekiz. 91 00:04:13,675 --> 00:04:17,170 PrintGrid gibi bir işlev söyleniyor Bir dönüş, bir yan etkisi var, ama 92 00:04:17,170 --> 00:04:17,670 değer. 93 00:04:17,670 --> 00:04:19,209 Ayrım açıklar. 94 00:04:19,209 --> 00:04:23,080 Yani bu hatırlayarak dayanır bir yan etkisi nedir. 95 00:04:23,080 --> 00:04:25,180 Peki, bir dönüş value-- Biz PrintGrid değil biliyorum 96 00:04:25,180 --> 00:04:28,180 çünkü, dönüş değeri Burada bu geçersiz diyor. 97 00:04:28,180 --> 00:04:31,150 Void döndürür Yani bir şey Gerçekten hiçbir şey geri gelmez. 98 00:04:31,150 --> 00:04:32,200 99 00:04:32,200 --> 00:04:33,620 Yani yan etkisi nedir? 100 00:04:33,620 --> 00:04:36,620 Peki, bir yan etkidir tür devam şey 101 00:04:36,620 --> 00:04:39,500 fonksiyon sona erdikten sonra Bu, sadece iade değil 102 00:04:39,500 --> 00:04:41,340 ve sadece girişlerden değildi. 103 00:04:41,340 --> 00:04:44,970 >> Peki, örneğin, biz olabilir global bir değişken değiştirin. 104 00:04:44,970 --> 00:04:46,590 Bu bir yan etkisi olur. 105 00:04:46,590 --> 00:04:49,000 Bu özel durumda, çok önemli bir yan etkisi 106 00:04:49,000 --> 00:04:51,070 ekrana yazdırıyor. 107 00:04:51,070 --> 00:04:53,110 Yani bir yan etkidir Bu PrintGrid sahiptir. 108 00:04:53,110 --> 00:04:54,980 Biz ekrana bunları yazdırmak. 109 00:04:54,980 --> 00:04:56,370 Ve aklınıza gelebilecek bir yan etki olarak, 110 00:04:56,370 --> 00:04:58,690 Bu şey beri Bu fonksiyon sona erdikten sonra devam. 111 00:04:58,690 --> 00:05:01,481 O kapsamı dışında bir şey Bu fonksiyonun sonuçta 112 00:05:01,481 --> 00:05:03,380 değiştirilir ediliyor, Ekranın içeriği. 113 00:05:03,380 --> 00:05:05,200 114 00:05:05,200 --> 00:05:05,839 >> Soru dokuz. 115 00:05:05,839 --> 00:05:07,880 Aşağıdaki programı düşünün hangi satır numaraları ile 116 00:05:07,880 --> 00:05:09,740 için eklendi tartışma uğruna. 117 00:05:09,740 --> 00:05:13,480 Bu programda Yani biz sadece vardır saklayarak, GetString arayarak 118 00:05:13,480 --> 00:05:16,220 Bu değişken s ve daha sonra Bu değişken s baskı. 119 00:05:16,220 --> 00:05:16,720 TAMAM MI. 120 00:05:16,720 --> 00:05:19,090 Hat bir mevcut neden bu kadar açıklar. 121 00:05:19,090 --> 00:05:20,920 include CS50 nokta s. 122 00:05:20,920 --> 00:05:23,820 Neden CS50 nokta h #include gerekiyor? 123 00:05:23,820 --> 00:05:26,180 Peki biz diyorsun Fonksiyonu getString, 124 00:05:26,180 --> 00:05:28,840 ve GetString tanımlanır CS50 kütüphanede. 125 00:05:28,840 --> 00:05:31,600 Biz yoktu eğer öyleyse include CS50 nokta h 126 00:05:31,600 --> 00:05:35,760 biz örtük beyanı alacağı GetString fonksiyonu hata 127 00:05:35,760 --> 00:05:36,840 derleyici. 128 00:05:36,840 --> 00:05:40,110 Bu yüzden library-- eklemeniz gerekir Biz başlık dosyası dahil etmek gerekir, 129 00:05:40,110 --> 00:05:42,870 ya da başka bir derleyici olmaz GetString var olduğunu biliyoruz. 130 00:05:42,870 --> 00:05:44,380 131 00:05:44,380 --> 00:05:46,140 >> Hat iki mevcut açıklayın. 132 00:05:46,140 --> 00:05:47,890 Yani standart io nokta h. 133 00:05:47,890 --> 00:05:50,430 Bu aynı değil Önceki sorun olarak, 134 00:05:50,430 --> 00:05:53,310 yerine uğraşan hariç GetString, biz printf bahsediyoruz. 135 00:05:53,310 --> 00:05:56,654 Biz ihtiyacımız söylemedi Yani Standart io nokta h dahil, 136 00:05:56,654 --> 00:05:58,820 o zaman mümkün olmaz printf fonksiyonunu kullanmak için, 137 00:05:58,820 --> 00:06:00,653 derleyici nedeniyle bundan haberi olmaz. 138 00:06:00,653 --> 00:06:01,750 139 00:06:01,750 --> 00:06:05,260 >> Neden-- önemi nedir doğrultusunda dört geçersiz? 140 00:06:05,260 --> 00:06:08,010 Yani burada biz int main (void) var. 141 00:06:08,010 --> 00:06:10,600 Bu sadece bizlerin söylüyor herhangi bir komut satırı almıyorsanız 142 00:06:10,600 --> 00:06:12,280 Ana argümanları. 143 00:06:12,280 --> 00:06:17,390 Biz int söyleyebiliriz unutmayın Ana int argc dize argv parantez. 144 00:06:17,390 --> 00:06:20,400 Yani burada biz sadece biz demek geçersiz say Komut satırı argümanları göz ardı edilir. 145 00:06:20,400 --> 00:06:21,840 146 00:06:21,840 --> 00:06:25,225 >> Tam olarak hafıza ile ilgili olarak, açıklar doğrultusunda ne GetString altı döner. 147 00:06:25,225 --> 00:06:27,040 148 00:06:27,040 --> 00:06:31,640 GetString bloğunu dönen Bellek, bir karakter dizisi. 149 00:06:31,640 --> 00:06:34,870 Gerçekten dönen var ilk karakterine işaretçisi. 150 00:06:34,870 --> 00:06:37,170 Bir dize bir karakter yıldızı olduğunu unutmayın. 151 00:06:37,170 --> 00:06:41,360 Yani ilk bir gösterici karakter ne olursa olsun dizedir 152 00:06:41,360 --> 00:06:43,510 Kullanıcı klavyeden girilen söyledi. 153 00:06:43,510 --> 00:06:47,070 Ve bu bellek malloced olmak olur, böylece bellek yığın içinde. 154 00:06:47,070 --> 00:06:49,080 155 00:06:49,080 --> 00:06:50,450 >> Soru 13. 156 00:06:50,450 --> 00:06:51,960 Aşağıdaki programı düşünün. 157 00:06:51,960 --> 00:06:55,579 Peki tüm bu program yapıyor 10 bölü 1 printf-ing olduğunu. 158 00:06:55,579 --> 00:06:57,370 Yani derlenmiş ve idam, bu program 159 00:06:57,370 --> 00:07:01,170 çıkışları 0.0, olsa 10'a bölünür 1 0.1. 160 00:07:01,170 --> 00:07:02,970 Peki neden 0.0? 161 00:07:02,970 --> 00:07:05,510 Peki, bu çünkü tamsayı bölme. 162 00:07:05,510 --> 00:07:08,580 Bu yüzden 1 arasında bir tamsayıdır 10, bir tam sayı olduğu, bir. 163 00:07:08,580 --> 00:07:11,980 Yani 1 10, her şeyi bölü tamsayılar olarak tedavi edilir, 164 00:07:11,980 --> 00:07:16,380 ve C, biz tamsayı bölme ne zaman, biz herhangi bir ondalık noktası kesecek. 165 00:07:16,380 --> 00:07:19,590 Yani 1 10'a edilir bölünmüş 0 ve sonra biz çalışıyoruz 166 00:07:19,590 --> 00:07:24,410 yani, bir şamandıra gibi bu yazdırmak için bir float olarak basılmış sıfır 0.0. 167 00:07:24,410 --> 00:07:27,400 Biz 0.0 olsun Ve bu yüzden. 168 00:07:27,400 --> 00:07:28,940 >> Aşağıdaki programı düşünün. 169 00:07:28,940 --> 00:07:31,280 Şimdi 0.1 baskı ediyoruz. 170 00:07:31,280 --> 00:07:34,280 Yani hiçbir tamsayı bölme, Biz sadece, 0.1 yazdırırken 171 00:07:34,280 --> 00:07:37,100 ama biz baskı ediyoruz 28 ondalık basamağa. 172 00:07:37,100 --> 00:07:41,810 Ve biz bu 0,1000, bir sürü olsun sıfır, 5 5 5, falan filan. 173 00:07:41,810 --> 00:07:45,495 Bunu neden yaptığını Yani burada soru yerine tam 0.1, bu yazdırmak? 174 00:07:45,495 --> 00:07:46,620 175 00:07:46,620 --> 00:07:49,640 >> Burada neden şimdi Yani nokta belirsizlik kayan. 176 00:07:49,640 --> 00:07:53,410 Bir şamandıra sadece 32 bit olduğunu unutmayın. 177 00:07:53,410 --> 00:07:57,540 Yani biz sadece sınırlı sayıda temsil edebilir bu 32 ile kayan nokta değeri 178 00:07:57,540 --> 00:07:58,560 bit. 179 00:07:58,560 --> 00:08:01,760 Peki sonuçta sonsuz var Birçok kayan nokta değerleri, 180 00:08:01,760 --> 00:08:04,940 ve kayan sonsuz sayıda var 0 ve 1 arasında puan değerleri, 181 00:08:04,940 --> 00:08:07,860 ve tabii ki edebiliyoruz hatta daha değerleri temsil eder. 182 00:08:07,860 --> 00:08:13,230 Yani biz fedakarlıklar yapmak zorunda En değerlerini temsil etmek mümkün. 183 00:08:13,230 --> 00:08:16,960 0.1 gibi >> Yani bir değer, görünüşe biz tam olarak temsil edemez. 184 00:08:16,960 --> 00:08:22,500 Bunun yerine 0.1 temsil yaptığımız en iyi biz bu 0.100000 5 5 temsil edebilir 185 00:08:22,500 --> 00:08:23,260 5. 186 00:08:23,260 --> 00:08:26,306 Ve bu, oldukça yakın ama Birçok uygulama için 187 00:08:26,306 --> 00:08:28,430 hakkında endişelenmenize gerek nokta belirsizlik kayan, 188 00:08:28,430 --> 00:08:30,930 biz sadece temsil edemez çünkü Tüm tam puan yüzen. 189 00:08:30,930 --> 00:08:32,500 190 00:08:32,500 --> 00:08:33,380 >> Soru 15. 191 00:08:33,380 --> 00:08:34,679 Aşağıdaki kodu düşünün. 192 00:08:34,679 --> 00:08:36,630 Biz sadece 1 artı 1 yazdırırken. 193 00:08:36,630 --> 00:08:38,289 Yani burada hile var. 194 00:08:38,289 --> 00:08:41,780 1 artı 1 2 değerlendirir ve o zaman bu baskı ediyoruz. 195 00:08:41,780 --> 00:08:42,789 Bu sadece 2 yazdırır. 196 00:08:42,789 --> 00:08:43,850 197 00:08:43,850 --> 00:08:44,700 >> Soru 16. 198 00:08:44,700 --> 00:08:49,450 Şimdi karakteri yazdırırken 1 artı 1 karakter. 199 00:08:49,450 --> 00:08:52,110 Peki neden bu değil Aynı şeyi yazdırmak? 200 00:08:52,110 --> 00:08:57,680 Peki karakteri 1 artı karakter 1, karakter 1 ASCII değeri 49 sahiptir. 201 00:08:57,680 --> 00:09:04,840 Yani bu gerçekten 49 diyerek artı 49, ve sonuçta bu 98 yazdırmak için gidiyor. 202 00:09:04,840 --> 00:09:06,130 Yani bu 2 yazmıyor. 203 00:09:06,130 --> 00:09:08,070 204 00:09:08,070 --> 00:09:09,271 >> Soru 17. 205 00:09:09,271 --> 00:09:11,520 Uygulanmasını tamamlayın bu şekilde aşağıda tek 206 00:09:11,520 --> 00:09:14,615 fonksiyonu true döndürür n bile eğer n tek ve yanlıştır. 207 00:09:14,615 --> 00:09:16,710 208 00:09:16,710 --> 00:09:19,330 Bu büyük bir amacı mod operatör için. 209 00:09:19,330 --> 00:09:24,530 Yani bizim argüman n almak, n mod 2 de 1, eşitse 210 00:09:24,530 --> 00:09:28,030 n, bölünmüş olduğu anlamına gelir 2 ile bir kalan vardı. 211 00:09:28,030 --> 00:09:33,270 Burada n, 2 ile bölünmüş ise, kalan vardı n garip, bu yüzden doğru dönmek anlamına gelir. 212 00:09:33,270 --> 00:09:34,910 Başka biz return false. 213 00:09:34,910 --> 00:09:39,070 Ayrıca 2 eşittir mod n yapmış olabilir sıfır, başka, return false true döndürür. 214 00:09:39,070 --> 00:09:41,600 215 00:09:41,600 --> 00:09:43,640 >> Aşağıdaki özyinelemeli işlevi düşünün. 216 00:09:43,640 --> 00:09:46,920 N Yani eğer daha az ya da 1 dönüş, 1'e eşit, 217 00:09:46,920 --> 00:09:50,430 n eksi 1 f başka dönüş n kere. 218 00:09:50,430 --> 00:09:52,556 Peki bu işlevi nedir? 219 00:09:52,556 --> 00:09:54,305 Peki, bu sadece bir faktöryel fonksiyonu. 220 00:09:54,305 --> 00:09:55,410 221 00:09:55,410 --> 00:09:57,405 Bu güzel temsil edilir n faktöriyele. 222 00:09:57,405 --> 00:09:58,720 223 00:09:58,720 --> 00:10:02,310 >> Peki şimdi 19 soru, biz istiyoruz Bu özyinelemeli işlevi alır. 224 00:10:02,310 --> 00:10:04,530 Biz yinelemeli yapmak istiyorum. 225 00:10:04,530 --> 00:10:05,874 Peki nasıl bunu yapar? 226 00:10:05,874 --> 00:10:07,790 Peki personel için çözeltisi ve yine orada 227 00:10:07,790 --> 00:10:11,090 Eğer yapmış olabilir birden çok yolu Biz bu int ürünle başlamak 228 00:10:11,090 --> 00:10:11,812 1 eşittir. 229 00:10:11,812 --> 00:10:13,520 Ve bu boyunca döngüsü için, biz gidiyoruz 230 00:10:13,520 --> 00:10:17,590 sonuçta Ürün çarparak edilmesi Tam faktöriyel ile sona. 231 00:10:17,590 --> 00:10:21,870 Int i 2 eşittir Yani, i daha az ya da n eşittir, i ++. 232 00:10:21,870 --> 00:10:24,130 Ben 2 eşittir neden >> Sen merak ediyor olabilirsiniz. 233 00:10:24,130 --> 00:10:28,380 Peki, biz var burada unutmayın Bizim temel durum doğru olduğundan emin olun. 234 00:10:28,380 --> 00:10:32,180 N daha az veya eşit Yani eğer 1, biz sadece 1 dönen ediyoruz. 235 00:10:32,180 --> 00:10:34,830 Ben 2 eşittir burada üzerinde Yani, biz başlar. 236 00:10:34,830 --> 00:10:39,090 Peki ben 1, olsaydı o zaman Şeyin veya n döngüsü daha sonra 1, olsaydı 237 00:10:39,090 --> 00:10:40,600 tüm yürütmek olmaz. 238 00:10:40,600 --> 00:10:43,190 Ve böylece biz sadece olur 1 dönüş ürünü. 239 00:10:43,190 --> 00:10:45,920 Benzer şekilde, eğer n edildi daha az şey 1-- 240 00:10:45,920 --> 00:10:49,290 o 0, eğer negatif 1, whatever-- biz hala, 1 dönen olurdu 241 00:10:49,290 --> 00:10:52,260 tam olarak hangi ne olduğunu özyinelemeli sürüm yapıyor. 242 00:10:52,260 --> 00:10:54,660 >> Şimdi N büyük olması halinde, 1'den, daha sonra biz gidiyoruz 243 00:10:54,660 --> 00:10:56,550 en az birini yapmak Bu döngü yineleme. 244 00:10:56,550 --> 00:11:00,630 Öyleyse biz konum, en n 5 diyelim Ürün kez yapacaksın 2 eşittir. 245 00:11:00,630 --> 00:11:02,165 Şimdi ürün 2. 246 00:11:02,165 --> 00:11:04,040 Şimdi yapmamız gereken gidiyoruz Ürün süreleri 3 eşittir. 247 00:11:04,040 --> 00:11:04,690 Şimdi 6 var. 248 00:11:04,690 --> 00:11:07,500 Ürün kere şimdi 24 var, 4 eşittir. 249 00:11:07,500 --> 00:11:10,420 Ürün kere şimdi bu 120 var, 5 eşittir. 250 00:11:10,420 --> 00:11:16,730 Öyleyse sonuçta, biz dönen Doğru 5 faktöriyel 120. 251 00:11:16,730 --> 00:11:17,510 >> Soru 20. 252 00:11:17,510 --> 00:11:22,480 Bu doldurmak zorunda biridir herhangi bir algoritma ile, bu tabloda, 253 00:11:22,480 --> 00:11:25,735 Gördüğümüz şey, bu Bu algoritmik çalıştırmak uygun 254 00:11:25,735 --> 00:11:28,060 Zaman bu asimptotik çalışma süreleri. 255 00:11:28,060 --> 00:11:33,270 Yani bir algoritma nedir ki 1, omega, ancak n, büyük, O? 256 00:11:33,270 --> 00:11:35,970 Yani sonsuz olabilir Burada birçok cevaplar. 257 00:11:35,970 --> 00:11:39,790 biz muhtemelen en gördüm bir sık sık sadece doğrusal arama motorudur. 258 00:11:39,790 --> 00:11:42,050 >> En iyi durumda Yani senaryo, biz konum öğe 259 00:11:42,050 --> 00:11:44,050 arıyor altındadır listesinin başında 260 00:11:44,050 --> 00:11:47,400 ve bu yüzden 1 adım omega, Biz kontrol ilk şey, 261 00:11:47,400 --> 00:11:49,740 biz sadece hemen dönmek biz madde bulundu. 262 00:11:49,740 --> 00:11:52,189 En kötü senaryoya göre, öğe, sonunda 263 00:11:52,189 --> 00:11:53,730 veya öğe hiç listesinde değil. 264 00:11:53,730 --> 00:11:56,700 Yani biz aramak zorunda Tüm liste, tüm n 265 00:11:56,700 --> 00:11:58,480 elementler, ve n o yüzden bu. 266 00:11:58,480 --> 00:11:59,670 267 00:11:59,670 --> 00:12:04,880 >> Peki şimdi ikisi de bir şey n günlük n omega ve n günlük n büyük Ç. 268 00:12:04,880 --> 00:12:08,650 Peki en uygun şey Burada görülen tür birleştirme olduğunu ettik. 269 00:12:08,650 --> 00:12:12,950 Yani sıralama, hatırlıyorum birleştirme, sonuçta teta olduğunu 270 00:12:12,950 --> 00:12:16,920 teta tanımlanır n günlük n, bir Omega ve büyük Ç ikisi de aynı ise. 271 00:12:16,920 --> 00:12:17,580 Hem n log n. 272 00:12:17,580 --> 00:12:18,690 273 00:12:18,690 --> 00:12:21,970 >> Omega olan bir şey neler var n ve n O kare? 274 00:12:21,970 --> 00:12:23,990 Peki, yine var birden çok olası cevaplar. 275 00:12:23,990 --> 00:12:26,440 Burada kabarcık sıralama söylemek olur. 276 00:12:26,440 --> 00:12:28,840 Yerleştirme sıralama da burada çalışmak istiyorum. 277 00:12:28,840 --> 00:12:31,400 Bu kabarcık sıralama hatırla bu optimizasyon burada sahip 278 00:12:31,400 --> 00:12:34,630 almak mümkün olup olmadığını Tüm liste üzerinden 279 00:12:34,630 --> 00:12:37,402 yapmak gerek kalmadan Herhangi swapları, sonra, iyi, 280 00:12:37,402 --> 00:12:40,110 biz hemen o dönebilirsiniz Liste ile başlayan sıralama. 281 00:12:40,110 --> 00:12:43,185 En iyi senaryo Yani o n sadece omega var. 282 00:12:43,185 --> 00:12:45,960 Sadece bir güzel değilse ile başlayan liste sıralanır 283 00:12:45,960 --> 00:12:48,270 o zaman n O swapları kare var. 284 00:12:48,270 --> 00:12:49,330 285 00:12:49,330 --> 00:12:55,610 Ve nihayet, biz seçim tür var n kare için, omega ve büyük O. hem 286 00:12:55,610 --> 00:12:56,850 >> Soru 21. 287 00:12:56,850 --> 00:12:58,870 Tamsayı taşması nedir? 288 00:12:58,870 --> 00:13:02,160 De yine daha önce olduğu gibi, biz sadece sonlu sayıda bit var 289 00:13:02,160 --> 00:13:04,255 arasında bir tamsayıyı temsil etmek üzere, belki 32 bit. 290 00:13:04,255 --> 00:13:06,300 291 00:13:06,300 --> 00:13:09,180 En bir imzalı tamsayı var diyelim. 292 00:13:09,180 --> 00:13:12,800 Daha sonra nihai olarak yüksek pozitif sayı biz temsil edebilir 293 00:13:12,800 --> 00:13:15,910 olduğunu 2-31 eksi 1. 294 00:13:15,910 --> 00:13:19,370 Biz çalışırsanız ne olur daha sonra bu tamsayı artırmak? 295 00:13:19,370 --> 00:13:25,320 Peki, biz 2-31 gitmek için gidiyoruz eksi 1, aşağı olumsuz 2 tüm yol 296 00:13:25,320 --> 00:13:26,490 31. 297 00:13:26,490 --> 00:13:29,470 Yani bu tamsayı taşması olduğunu Eğer artan tutmak zaman, 298 00:13:29,470 --> 00:13:32,330 ve sonuçta yapamazsın herhangi bir yüksek ve sadece almak 299 00:13:32,330 --> 00:13:34,520 tüm yolu geri sarar negatif bir değer etrafında. 300 00:13:34,520 --> 00:13:35,850 301 00:13:35,850 --> 00:13:37,779 >> Bir tampon taşması ne? 302 00:13:37,779 --> 00:13:39,820 Bu nedenle, bir tampon overflow-- bir tampon olduğunu hatırlıyorum. 303 00:13:39,820 --> 00:13:41,000 Bu bellek sadece bir yığın var. 304 00:13:41,000 --> 00:13:43,350 Bir dizi gibi bir şey bir tampon olduğunu. 305 00:13:43,350 --> 00:13:46,120 Yani bir bellek taşması zaman olduğu Eğer bellek erişmeye çalıştığınızda 306 00:13:46,120 --> 00:13:47,880 Bu dizinin sonuna ötesinde. 307 00:13:47,880 --> 00:13:50,410 Eğer bir var ise büyüklüğü 5 ve sizin dizisi 308 00:13:50,410 --> 00:13:53,700 dizi desteğini erişmeye çalıştığınızda 5 veya dirsek 6 veya dirseği 7, 309 00:13:53,700 --> 00:13:56,610 ötesinde ya da bir şey sonunda, hatta bir şey 310 00:13:56,610 --> 00:14:00,790 below-- dizi dirseği negatif 1-- tüm bu tampon taşmaları vardır. 311 00:14:00,790 --> 00:14:02,810 Kötü şekilde bellek dokunuyorsun. 312 00:14:02,810 --> 00:14:04,090 313 00:14:04,090 --> 00:14:04,730 >> Soru 23. 314 00:14:04,730 --> 00:14:05,760 315 00:14:05,760 --> 00:14:09,100 İhtiyacınız bu bir Yani strlen uygulamak. 316 00:14:09,100 --> 00:14:11,630 Ve biz yapabilirsiniz söylüyoruz s boş olmayacak varsayalım, 317 00:14:11,630 --> 00:14:13,790 böylece gerek yok null herhangi bir kontrol yapmak. 318 00:14:13,790 --> 00:14:16,190 Ve birden çok yolu vardır Eğer bu yapmış olabilir. 319 00:14:16,190 --> 00:14:18,440 Burada biz sadece basit almak. 320 00:14:18,440 --> 00:14:21,780 Biz n, bir sayaç ile başlar. n, Orada kaç karakter sayma. 321 00:14:21,780 --> 00:14:25,560 Yani biz o 0'dan başlar, ve tüm liste üzerinde yineleme. 322 00:14:25,560 --> 00:14:29,092 >> Eşit s dirseği 0 mı boş terminatör karakter? 323 00:14:29,092 --> 00:14:31,425 Aradığımız hatırla boş terminatör karakteri 324 00:14:31,425 --> 00:14:33,360 Bizim dizedir ne kadar belirlemek için. 325 00:14:33,360 --> 00:14:35,890 Bu sonlandırmak için gidiyor ilgili herhangi bir dize. 326 00:14:35,890 --> 00:14:39,400 Yani s braket eşittir 0 null Terminatör için? 327 00:14:39,400 --> 00:14:42,850 Değilse, o zaman biz gidiyoruz s aralığındaki 1, s aralığındaki 2 bakmak. 328 00:14:42,850 --> 00:14:45,050 Biz biz kadar devam ediyoruz boş terminatör bulmak. 329 00:14:45,050 --> 00:14:48,580 Biz bulduktan sonra, daha sonra n içerir dize toplam uzunluğu, 330 00:14:48,580 --> 00:14:49,942 ve biz sadece o dönebilirsiniz. 331 00:14:49,942 --> 00:14:51,180 332 00:14:51,180 --> 00:14:51,865 >> Soru 24. 333 00:14:51,865 --> 00:14:53,010 334 00:14:53,010 --> 00:14:56,050 Yani bu bir nerede ticaret kapalı yapmak zorunda. 335 00:14:56,050 --> 00:14:59,810 Yani bir şey birinde iyi ama ne şekilde yol kötü mü? 336 00:14:59,810 --> 00:15:02,980 Yani burada, birleştirme sıralama eğilimi kabarcık sıralama daha hızlı. 337 00:15:02,980 --> 00:15:06,530 Orada, iyi ki- söyledikten Birden cevaplar burada. 338 00:15:06,530 --> 00:15:12,930 Ama asıl bir o kabarcık tür Bir sıralı liste için n omega olduğunu. 339 00:15:12,930 --> 00:15:14,950 >> Biz sadece daha önce gördüğümüz tablo unutmayın. 340 00:15:14,950 --> 00:15:17,600 Yani kabarcık ve omega sıralar n, en iyi senaryo 341 00:15:17,600 --> 00:15:20,010 sadece üzerinde gitmek mümkün olmasıdır Liste kez belirlemek 342 00:15:20,010 --> 00:15:22,270 hey bu şey zaten sıralanır ve dönüş. 343 00:15:22,270 --> 00:15:25,960 Olursa olsun, sıralama Birleştirme ne Yapmanız n günlük n omega olduğunu. 344 00:15:25,960 --> 00:15:29,200 Sıralanan liste için, kabarcık Yani sıralama hızlı olacak. 345 00:15:29,200 --> 00:15:30,870 346 00:15:30,870 --> 00:15:32,430 >> Şimdi ne bağlı listeleri hakkında? 347 00:15:32,430 --> 00:15:36,070 Yani bir bağlantılı liste büyümeye ve küçültmek olabilir gerektiği gibi birçok öğeyi uygun. 348 00:15:36,070 --> 00:15:38,489 Böylece ki- söyledikten genellikle direkt karşılaştırma 349 00:15:38,489 --> 00:15:40,280 Bağlantılı olacak bir dizi listesi. 350 00:15:40,280 --> 00:15:41,600 351 00:15:41,600 --> 00:15:44,050 Yani bile diziler can olsa Kolayca büyümek ve küçültmek 352 00:15:44,050 --> 00:15:47,130 gibi birçok öğeyi uygun gerektiği gibi, bir liste bağlı 353 00:15:47,130 --> 00:15:49,600 Bir array-- An ile karşılaştırıldığında dizi rastgele erişimi vardır. 354 00:15:49,600 --> 00:15:52,960 Biz herhangi birine endeksi can dizinin özel bir elemanı. 355 00:15:52,960 --> 00:15:56,430 >> Yani bir bağlantılı liste için, biz değil Sadece beşinci element gidin, 356 00:15:56,430 --> 00:16:00,260 Biz başından itibaren çapraz zorunda beşinci element elde edene kadar. 357 00:16:00,260 --> 00:16:03,990 Ve bu bizi engellemek için gidiyor İkili arama gibi bir şey yapıyor. 358 00:16:03,990 --> 00:16:08,150 İkili arama konuşan, ikili arama doğrusal arama daha hızlı olma eğilimindedir. 359 00:16:08,150 --> 00:16:11,120 Ki- söyledikten böylece, olası bir şey 360 00:16:11,120 --> 00:16:13,380 ikili yapamaz ki bağlantılı listelerde arama, 361 00:16:13,380 --> 00:16:14,730 Sadece diziler üzerinde yapabilirsiniz. 362 00:16:14,730 --> 00:16:18,030 Ama muhtemelen daha da önemlisi, Eğer ikili arama yapamaz 363 00:16:18,030 --> 00:16:20,690 sıralanır bir dizi. 364 00:16:20,690 --> 00:16:23,990 Ayarlıyoruz sıralamak gerekebilir dizi ve ancak o zaman olabilir 365 00:16:23,990 --> 00:16:25,370 İkili arama yapmak. 366 00:16:25,370 --> 00:16:27,660 Bir şey değil Yani ile başlayan sıralı, 367 00:16:27,660 --> 00:16:29,250 Daha sonra doğrusal arama hızlı olabilir. 368 00:16:29,250 --> 00:16:30,620 369 00:16:30,620 --> 00:16:31,740 >> Soru 27. 370 00:16:31,740 --> 00:16:34,770 Yani aşağıdaki programı düşünün, hangi sonraki slaytta olacak. 371 00:16:34,770 --> 00:16:37,790 Ve bu konum biridir açıkça ifade etmek istiyorum olacak 372 00:16:37,790 --> 00:16:39,980 Çeşitli değişkenler için değerleri. 373 00:16:39,980 --> 00:16:41,990 Yani o bakalım. 374 00:16:41,990 --> 00:16:43,160 >> Yani bir hat. 375 00:16:43,160 --> 00:16:45,457 Biz int x 1 eşittir var. 376 00:16:45,457 --> 00:16:47,040 Bu olanlardan tek şey. 377 00:16:47,040 --> 00:16:50,440 Yani çizgi biri de, biz görmek bizim Tablo, ancak, y, a, b ve TMP hepsi 378 00:16:50,440 --> 00:16:51,540 karartılmış. 379 00:16:51,540 --> 00:16:52,280 Yani x nedir? 380 00:16:52,280 --> 00:16:53,860 Peki biz sadece 1'e eşit olarak ayarlayın. 381 00:16:53,860 --> 00:16:55,020 382 00:16:55,020 --> 00:16:58,770 Ve sonra, iyi, iki satır biz y 2'ye ayarlanmış olduğunu görmek 383 00:16:58,770 --> 00:17:00,550 ve tablo zaten Bizim için doldurulur. 384 00:17:00,550 --> 00:17:03,040 Yani x 1'dir ve y, 2'dir. 385 00:17:03,040 --> 00:17:05,890 >> Şimdi, çizgi üç, şimdi sen takas fonksiyonu içinde. 386 00:17:05,890 --> 00:17:07,560 Ne takas geçmek mi? 387 00:17:07,560 --> 00:17:11,609 Biz işareti x geçti b a ve işareti y. 388 00:17:11,609 --> 00:17:15,160 Nerede sorun önce olduğunu ifade x adresi 389 00:17:15,160 --> 00:17:17,520 0x10 ve y adresi 0x14 olup. 390 00:17:17,520 --> 00:17:18,970 391 00:17:18,970 --> 00:17:21,909 Bu nedenle a, b eşittir Sırasıyla 0x10 ve 0x14. 392 00:17:21,909 --> 00:17:23,670 393 00:17:23,670 --> 00:17:26,250 >> Şimdi, satır üçün de, x ve y nedir? 394 00:17:26,250 --> 00:17:28,554 Peki, hiçbir şey değişti Bu noktada, x ve y ile ilgili. 395 00:17:28,554 --> 00:17:30,470 Hatta onlar olmana rağmen bir ana yığın çerçevesi içinde, 396 00:17:30,470 --> 00:17:32,469 onlar hala aynı var değerler daha önce yaptım. 397 00:17:32,469 --> 00:17:34,030 Biz herhangi bir bellek modifiye değil. 398 00:17:34,030 --> 00:17:35,710 Yani x 1'dir, y 2 'dir. 399 00:17:35,710 --> 00:17:36,550 400 00:17:36,550 --> 00:17:37,050 Tamam. 401 00:17:37,050 --> 00:17:40,300 Yani şimdi biz yıldızı eşit int tmp dedi. 402 00:17:40,300 --> 00:17:44,410 Yani çizgi dört, her şeyi de tmp dışında aynıdır. 403 00:17:44,410 --> 00:17:47,130 Biz herhangi bir değer değişmemiştir tmp dışında bir şey. 404 00:17:47,130 --> 00:17:49,230 Biz bir yıldız eşit tmp ayarı vardır. 405 00:17:49,230 --> 00:17:50,620 Yıldız bir nedir? 406 00:17:50,620 --> 00:17:56,240 Peki, bir puan x, Yani bir yıldız 1 eşit x, gidiyor. 407 00:17:56,240 --> 00:18:00,080 Yani her şey kopyalanır aşağı ve tmp 1 olarak ayarlanır. 408 00:18:00,080 --> 00:18:01,110 >> Şimdi bir sonraki satır. 409 00:18:01,110 --> 00:18:03,380 Yıldız bir yıldız b eşittir. 410 00:18:03,380 --> 00:18:10,000 Yani çizgi ile five-- iyi yine, her şey Yıldız, bir ne olursa olsun dışında aynıdır. 411 00:18:10,000 --> 00:18:10,830 Yıldız bir nedir? 412 00:18:10,830 --> 00:18:13,720 Peki, biz sadece yıldız bir x söyledi. 413 00:18:13,720 --> 00:18:16,400 Bu yüzden eşit yıldız b x değiştiriyoruz. 414 00:18:16,400 --> 00:18:18,960 Yıldız b nedir? y. y b işaret eder. 415 00:18:18,960 --> 00:18:21,030 Yani yıldız b y. 416 00:18:21,030 --> 00:18:25,140 Bu yüzden, y x eşittir ayarladığınız ve her şey aynıdır. 417 00:18:25,140 --> 00:18:29,130 X şimdi Böylece önümüzdeki satırda görmek 2, ve geri kalanı sadece aşağı kopyalanır. 418 00:18:29,130 --> 00:18:31,120 >> Şimdi bir sonraki satırda, yıldız b tmp eşittir. 419 00:18:31,120 --> 00:18:34,740 Peki, biz sadece yıldız b y dedi, bu yüzden tmp y eşit kuruyoruz. 420 00:18:34,740 --> 00:18:37,450 Her şey aynı, böylece her şeyi aşağı kopyalanan alır. 421 00:18:37,450 --> 00:18:42,050 Biz hangi, tmp eşit y ayarı ediyoruz Başka biri ve her şey aynıdır. 422 00:18:42,050 --> 00:18:43,210 >> Şimdi nihayet, çizgi yedi. 423 00:18:43,210 --> 00:18:44,700 Biz geri ana işlevi konum. 424 00:18:44,700 --> 00:18:46,350 Takas işlemi tamamlandıktan sonra biz konum. 425 00:18:46,350 --> 00:18:48,972 Biz, b kaybetmiş, ve var tmp ancak sonuçta 426 00:18:48,972 --> 00:18:51,180 Herhangi değerleri değiştirerek değil Bu noktada bir şey, 427 00:18:51,180 --> 00:18:52,800 biz sadece x ve y aşağı kopyalayın. 428 00:18:52,800 --> 00:18:56,490 Ve biz x ve y olduğunu görmek Şimdi 2 ve 1 yerine 1 ve 2. 429 00:18:56,490 --> 00:18:58,160 takas başarıyla yürüttü. 430 00:18:58,160 --> 00:18:59,500 431 00:18:59,500 --> 00:19:00,105 >> Soru 28. 432 00:19:00,105 --> 00:19:01,226 433 00:19:01,226 --> 00:19:03,100 Karşılaşabileceğiniz varsayalım hata iletileri 434 00:19:03,100 --> 00:19:06,790 ofis saatleri içinde aşağıda Bir CA veya TF gibi gelecek yıl. 435 00:19:06,790 --> 00:19:08,930 Bu hataların her düzeltmek için nasıl tavsiyelerde. 436 00:19:08,930 --> 00:19:11,160 GetString Yani tanımsız başvuru. 437 00:19:11,160 --> 00:19:12,540 Neden bu görebilirsiniz? 438 00:19:12,540 --> 00:19:15,380 Peki, bir öğrenci kullanıyorsa Kendi kod getString, 439 00:19:15,380 --> 00:19:20,310 düzgün CS50 dahil Hash var nokta h CS50 kütüphane dahil etmek. 440 00:19:20,310 --> 00:19:22,380 >> Peki, onlar ne Bu hatayı düzeltmek gerekir? 441 00:19:22,380 --> 00:19:26,810 Onlar bir çizgi lcs50 yapmanız gereken onlar derliyorsunuz komut satırı. 442 00:19:26,810 --> 00:19:29,501 Onlar geçemiyor Yani clang çizgi lcs50, onlar 443 00:19:29,501 --> 00:19:32,000 Gerçek olması için gitmiyor GetString uygulayan kodu. 444 00:19:32,000 --> 00:19:33,190 445 00:19:33,190 --> 00:19:34,170 >> Soru 29. 446 00:19:34,170 --> 00:19:36,190 Dolaylı olarak ilan kütüphane işlevi strlen. 447 00:19:36,190 --> 00:19:37,550 448 00:19:37,550 --> 00:19:40,360 Peki bu şimdi, onlar var uygun karma yapılan içerir. 449 00:19:40,360 --> 00:19:41,440 450 00:19:41,440 --> 00:19:45,410 Bu durumda, başlık dosyası Onlar, dize nokta h eklemeniz gerekir 451 00:19:45,410 --> 00:19:48,710 ve şimdi dize nokta h dahil olmak üzere Şimdi student-- derleyici 452 00:19:48,710 --> 00:19:51,750 erişebilir strlen beyanları, 453 00:19:51,750 --> 00:19:54,120 ve bilir kodunuz ki doğru strlen kullanıyor. 454 00:19:54,120 --> 00:19:55,380 455 00:19:55,380 --> 00:19:56,580 >> Soru 30. 456 00:19:56,580 --> 00:20:00,240 Daha yüzde dönüşümleri veri argümanlar daha. 457 00:20:00,240 --> 00:20:01,540 Peki bu nedir? 458 00:20:01,540 --> 00:20:06,470 Peki bu yüzde unutmayın onlar printf ilgili olduğunu nasıl signs--. 459 00:20:06,470 --> 00:20:08,890 Yani printf biz percent-- olabilir Biz bir şey yazdırabilir 460 00:20:08,890 --> 00:20:11,380 yüzde gibi ben n karakterler. 461 00:20:11,380 --> 00:20:15,310 Yoksa biz yüzde i gibi yazdırabilir uzay, yüzde i, uzay, yüzde i. 462 00:20:15,310 --> 00:20:18,950 Bunların her biri için Yani yüzde işaretleri, ihtiyacımız 463 00:20:18,950 --> 00:20:21,560 Printf sonunda bir değişken geçmek için. 464 00:20:21,560 --> 00:20:26,980 >> Yani biz derseniz printf parantez yüzde Ben, n yakın paren kullanılan karakterler 465 00:20:26,980 --> 00:20:30,270 iyi, biz olduğumuzu söylemek Bir tamsayı yazdırmak için gidiyoruz, 466 00:20:30,270 --> 00:20:33,970 ama sonra printf geçemiyor tamsayı aslında yazdırmak için. 467 00:20:33,970 --> 00:20:37,182 Yani burada daha fazla yüzde veri argümanlar daha dönüşümleri? 468 00:20:37,182 --> 00:20:39,390 Yani biz o söylüyor yüzdelerin bir sürü, 469 00:20:39,390 --> 00:20:42,445 ve biz yeterince değişkenleri yok aslında bu yüzdeler doldurmak için. 470 00:20:42,445 --> 00:20:44,850 471 00:20:44,850 --> 00:20:50,010 >> Ve sonra kesinlikle söz 31, kesinlikle bir bloklarda 40 bayt kaybetti. 472 00:20:50,010 --> 00:20:52,350 Yani bu bir Valgrind hatadır. 473 00:20:52,350 --> 00:20:54,720 Bu söylüyor yere kodunuzu, 474 00:20:54,720 --> 00:20:59,010 40 bir tahsisat var bayt büyük, böylece 40 byte malloced 475 00:20:59,010 --> 00:21:00,515 ve bunu hiçbir zaman serbest. 476 00:21:00,515 --> 00:21:02,480 477 00:21:02,480 --> 00:21:05,140 Sadece ihtiyacınız Büyük olasılıkla Bazı bellek sızıntısı bulmak için, 478 00:21:05,140 --> 00:21:07,650 ve gereken yere bulmak bellek bloğunu ücretsiz. 479 00:21:07,650 --> 00:21:08,780 480 00:21:08,780 --> 00:21:11,910 >> Ve 32 soru, büyüklüğü 4 geçersiz yazma. 481 00:21:11,910 --> 00:21:13,250 Yine bu bir Valgrind hatadır. 482 00:21:13,250 --> 00:21:15,440 Bu yapmak zorunda değildir Şimdi bellek sızıntıları ile. 483 00:21:15,440 --> 00:21:20,750 Bu demek likely-- çoğu, bu, bir Geçersiz bellek haklarının çeşit. 484 00:21:20,750 --> 00:21:23,270 Ve büyük olasılıkla bu bazı tampon taşması tür. 485 00:21:23,270 --> 00:21:26,560 Nereye belki, bir dizi var bir tamsayı dizisi ve atalım 486 00:21:26,560 --> 00:21:30,115 o boyutta 5 söylüyorlar, ve Dizi desteğini 5 dokunmaya çalışın. 487 00:21:30,115 --> 00:21:34,150 Bunu yazmak için çalışırsanız yüzden değer, bellek bir parçası değil 488 00:21:34,150 --> 00:21:37,440 Aslında erişimi, ve o böylece bu hatayı almak için gidiyoruz, 489 00:21:37,440 --> 00:21:39,272 büyüklüğü 4 geçersiz yazma söyleyerek. 490 00:21:39,272 --> 00:21:42,480 Valgrind sen tanımak için gidiyor uygunsuz bellek dokunmaya çalışıyor. 491 00:21:42,480 --> 00:21:43,980 >> Ve bu quiz0 için var. 492 00:21:43,980 --> 00:21:47,065 Ben Rob Bowden değilim, ve bu CS50 olduğunu. 493 00:21:47,065 --> 00:21:51,104