1 00:00:00,000 --> 00:00:03,944 >> [MÜZİK OYUN] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID MALAN: Pekala. 4 00:00:11,690 --> 00:00:14,674 Bu CS50 ve bu Haftanın 2 sonudur. 5 00:00:14,674 --> 00:00:16,840 Ben olamazdı çok üzgünüm Orada bugün sizlerle, 6 00:00:16,840 --> 00:00:18,300 ama sen çok iyi ellerde konum. 7 00:00:18,300 --> 00:00:21,710 Beni tanıtayım CS50 kendi Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: Ve tabii ki, o Biz aslında eğlenceli hale getirmek için var 10 00:00:31,730 --> 00:00:36,820 o bize bir dikey gönderdi Video ve göstermektedir. 11 00:00:36,820 --> 00:00:38,320 >> [VİDEO OYNATMA] 12 00:00:38,320 --> 00:00:39,820 >> [MÜZİK OYUN] 13 00:00:39,820 --> 00:00:42,350 >> [OLURMUŞ] 14 00:00:42,350 --> 00:00:44,730 >> -Bu Video vermedi Bu şekilde bakmak gerekiyor. 15 00:00:44,730 --> 00:00:46,570 Bu önlenebilirdi. 16 00:00:46,570 --> 00:00:49,070 Dikey videolara söylüyorlar. 17 00:00:49,070 --> 00:00:53,310 >> -Dikey Videolar sizi ne Fotoğraf makineniz yanlış yöne tutun. 18 00:00:53,310 --> 00:00:55,880 Videonuz sona erecek yukarı bok gibi bakıyor. 19 00:00:55,880 --> 00:00:57,650 >> - [Grunt] 20 00:00:57,650 --> 00:01:02,240 >> Bağımlısı daha fazla insan yok ki Her gün, dikey videoları hale getirmek için. 21 00:01:02,240 --> 00:01:06,240 Bu çatlak ya da başka bir şey değil, ama yine de gerçekten kötü. 22 00:01:06,240 --> 00:01:10,410 Iki çeşit vardır VVS ile tutulmuş insanlar. 23 00:01:10,410 --> 00:01:14,160 Birinci grup davranır videolar da fotoğraf gibi vur. 24 00:01:14,160 --> 00:01:15,850 Onlar herhangi bir zarar gelmez. 25 00:01:15,850 --> 00:01:19,180 Onlar sadece anlamıyorum Bir resim açabilirsiniz olurken, 26 00:01:19,180 --> 00:01:20,880 Eğer gerçekten bir video açamıyorum. 27 00:01:20,880 --> 00:01:21,880 >> [KAZA] 28 00:01:21,880 --> 00:01:23,460 >> - [MAYMUN SESLERİ] 29 00:01:23,460 --> 00:01:27,540 >> -The Diğer grup insanlar kim [BLEEP] vermeyin. 30 00:01:27,540 --> 00:01:31,090 >> -Dikey Video Sendromu tehlikelidir. 31 00:01:31,090 --> 00:01:34,120 Hareketli görüntüler var her zaman yatay olmuştur. 32 00:01:34,120 --> 00:01:35,990 Televizyonlar yatay. 33 00:01:35,990 --> 00:01:38,380 Bilgisayar ekranları yatay. 34 00:01:38,380 --> 00:01:41,580 Halk gözleri yatay. 35 00:01:41,580 --> 00:01:45,170 Biz inşa edilmez Dikey videoları izlemek. 36 00:01:45,170 --> 00:01:47,600 >> -Ben Dikey videoları seviyorum. 37 00:01:47,600 --> 00:01:50,410 >> -Kimse Senin umurunda. 38 00:01:50,410 --> 00:01:53,340 >> -Eğer Bu sorunun en denetlenmeyen, sen de sol 39 00:01:53,340 --> 00:01:57,650 Dört videoları gösteren başlayacak bir kerede sadece bant genişliği kaydetmek için. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Dikey videolar olur Bir posta pulu büyüklüğünde olacak. 41 00:02:02,400 --> 00:02:04,920 >> -Ve Her yerde yayılır. 42 00:02:04,920 --> 00:02:07,670 Film ekranlar var her zaman yatay olmuştur. 43 00:02:07,670 --> 00:02:11,200 Dikey videolar olursan Kabul, sinema salonları 44 00:02:11,200 --> 00:02:13,930 Uzun boylu ve sıska olmak zorunda. 45 00:02:13,930 --> 00:02:17,710 >> -Ve Sinemalara tüm olur yıkılıp yeniden almak zorunda. 46 00:02:17,710 --> 00:02:22,090 Ve zaman onlar yeniden inşa edildi, Mila Kunis, yaşlı ve çirkin olurdu. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Onları içine çökmesine ve ölecektir. 48 00:02:24,342 --> 00:02:26,530 >> Geçemeyeceđiz tüm sert olsun yukarı seyir boyunlar. 49 00:02:26,530 --> 00:02:29,800 >> -Ve Hiç kimse oturup olacak Ön sıra asla. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas yeniden yayımı olacak Yıldızlı Savaşlar sıska baskı vasıtasıyla yine. 51 00:02:37,170 --> 00:02:41,860 >> -Ben Söylemek gerçekten mümkün değildi Ben söylemek istedim hikayesi. 52 00:02:41,860 --> 00:02:46,030 Bu benim için büyük bir şans oldu yeni bir teknoloji ile deneme. 53 00:02:46,030 --> 00:02:48,150 >> -Sen bir pisliksin. 54 00:02:48,150 --> 00:02:54,430 >> Bir mobil cihaz için kullanılır -Her zaman video kaydetmek, günaha var. 55 00:02:54,430 --> 00:02:56,370 Sadece hayır de. 56 00:02:56,370 --> 00:03:00,116 George Lucas hayır deyin. 57 00:03:00,116 --> 00:03:04,062 Eski Mila Kunis hayır deyin. 58 00:03:04,062 --> 00:03:06,600 Dikey videolara söylüyorlar. 59 00:03:06,600 --> 00:03:12,511 >> Birisi bunu yapıyor görürseniz -Ve, demek "Eğer bu doğru kukla çekmiyoruz!" 60 00:03:12,511 --> 00:03:15,433 >> [MÜZİK OYUN] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [SON OYNATMA] 63 00:03:19,830 --> 00:03:23,702 >> [Alkış] 64 00:03:23,702 --> 00:03:27,598 >> [AUDIO OUT] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB BOWDEN: --simple kriptografi formu, 67 00:03:45,790 --> 00:03:49,500 hangi temelde şifreleme gizli mesajların ve şifre çözme. 68 00:03:49,500 --> 00:03:52,590 Yani burada biz çok basit bir oyuncak var. 69 00:03:52,590 --> 00:03:56,900 Ve Fikir dış halka iç halka etrafında döner. 70 00:03:56,900 --> 00:04:01,610 Ve ben Büyütmek belki görebilirsiniz olarak, bunu görmek zor ki-. 71 00:04:01,610 --> 00:04:05,090 Ama, gibi numara 1-- şey, bu taşındı. 72 00:04:05,090 --> 00:04:09,120 >> 1 numaralı mektuba haritalar Mektuba X 2 numaralı harita 73 00:04:09,120 --> 00:04:11,630 J. zor İnanılmaz ileri atlamak için değil. 74 00:04:11,630 --> 00:04:16,100 Mektubu 2 J. haritalar Sayı 3 Demek D. haritalar 75 00:04:16,100 --> 00:04:20,140 Bu halka ile size verebilir Birisi bir mesaj 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Nedense sizin için Onlara XJD söylemek istiyorum. 77 00:04:22,624 --> 00:04:24,540 Ama onları verebilirsiniz numaralarının bazı mesaj, 78 00:04:24,540 --> 00:04:28,460 ve bu halka sahip sürece, onlar söylemeye çalışıyoruz şifresini çözebilir. 79 00:04:28,460 --> 00:04:32,510 >> Yani görmüş olabilirsiniz bu kriptografi belirli bir örnek 80 00:04:32,510 --> 00:04:36,640 daha önce Noel sezonu etrafında ise Eğer A Christmas Story izledim. 81 00:04:36,640 --> 00:04:38,520 Eğer görmedim Daha önce, o zaman sadece 82 00:04:38,520 --> 00:04:41,060 kelimenin tam anlamıyla de TBS açmak Noel arifesinde her zaman, 83 00:04:41,060 --> 00:04:44,510 Onlar sadece arka arkaya göstermek için tüm gün geri geri geri. 84 00:04:44,510 --> 00:04:46,744 Ve ilgili bir video bu. 85 00:04:46,744 --> 00:04:47,410 [VİDEO OYNATMA] 86 00:04:47,410 --> 00:04:50,020 Hepsi ve muhtelif bilinen ol Ralph Parker, burada olduğu 87 00:04:50,020 --> 00:04:52,850 Küçük bir üyesi atandı Yetim Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 ve tüm onur hakkına sahiptir ve faydaları bununla meydana. 89 00:04:56,490 --> 00:04:59,010 Little Orphan Annie imzaladı. 90 00:04:59,010 --> 00:05:03,120 Mürekkeple Pierre Andre karşılıklı! 91 00:05:03,120 --> 00:05:07,460 Burs ve faydaları Zaten dokuz yaşında! 92 00:05:07,460 --> 00:05:12,530 >> [RADYO bağırıyor] 93 00:05:12,530 --> 00:05:13,030 -Hadi. 94 00:05:13,030 --> 00:05:14,000 En onunla dönelim. 95 00:05:14,000 --> 00:05:18,274 Ben tüm bu caz gerek yok kaçakçılar ve korsanlar hakkında. 96 00:05:18,274 --> 00:05:20,440 Ile -listen yarın akşam sonuç macera 97 00:05:20,440 --> 00:05:22,540 Black Pirate Ship. 98 00:05:22,540 --> 00:05:25,460 Şimdi, bu zamanı Annie'nin gizli mesaj 99 00:05:25,460 --> 00:05:28,620 Gizli Çember size üyeleri için. 100 00:05:28,620 --> 00:05:32,370 Çocuklar, sadece üyelere Remember Annie'nin Gizli Çember 101 00:05:32,370 --> 00:05:34,880 Annie'nin gizli mesajı çözebilir. 102 00:05:34,880 --> 00:05:39,100 Unutmayın, Annie size bağlıdır. 103 00:05:39,100 --> 00:05:41,660 B2 için işaretçilerine ayarlayın. 104 00:05:41,660 --> 00:05:43,960 İşte mesajdır. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -Ben Ilk gizli toplantıda duyuyorum. 109 00:05:48,110 --> 00:05:49,030 >> -25. 110 00:05:49,030 --> 00:05:49,834 14. 111 00:05:49,834 --> 00:05:51,040 11. 112 00:05:51,040 --> 00:05:51,854 18. 113 00:05:51,854 --> 00:05:52,670 16. 114 00:05:52,670 --> 00:05:54,570 >> Oh, Pierre büyük bir ses bu gece olduğunu. 115 00:05:54,570 --> 00:05:57,490 O gece en söyleyebilirdi mesajı gerçekten çok önemliydi. 116 00:05:57,490 --> 00:05:57,990 -3. 117 00:05:57,990 --> 00:06:00,080 25. 118 00:06:00,080 --> 00:06:01,580 Yani Annie kendini bir mesajdır. 119 00:06:01,580 --> 00:06:02,880 Kimseye söylemeyin, unutmayın. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> Beş saniye sonra, ben sadece olduğum Evin oda nerede dokuz bir çocuk 122 00:06:11,130 --> 00:06:15,830 gizlilik ve decode oturup. 123 00:06:15,830 --> 00:06:16,620 Aha! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Bir sonraki gittim. 126 00:06:20,210 --> 00:06:23,300 E. ilk kelime "olarak" dir. 127 00:06:23,300 --> 00:06:25,880 S. Şimdi daha kolay geliyordu. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Bu R. var 130 00:06:30,528 --> 00:06:31,278 -Haydi, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Ben gitmeliyim ettik! 132 00:06:31,861 --> 00:06:33,182 Aşağı doğru olması -I'll, anne! 133 00:06:33,182 --> 00:06:36,038 Vay canına. 134 00:06:36,038 --> 00:06:42,840 Ne emin olun - T. O. "emin olun"? 135 00:06:42,840 --> 00:06:44,770 Little Orphan neydi Annie söylemeye çalışıyorsun? 136 00:06:44,770 --> 00:06:46,381 Ne emin olun? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Gitmek var! 138 00:06:47,825 --> 00:06:48,866 Eğer çıkıp lütfen? 139 00:06:48,866 --> 00:06:49,783 >> -Tamam, Anne! 140 00:06:49,783 --> 00:06:51,786 Ben doğru dışarı olacağım! 141 00:06:51,786 --> 00:06:53,606 Ben yakın şimdi başlamıştı. 142 00:06:53,606 --> 00:06:55,550 Gerginlik korkunç. 143 00:06:55,550 --> 00:06:57,050 Bu neydi? 144 00:06:57,050 --> 00:06:59,905 Gezegenin kaderi askıda olabilir! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy gitmek lazım! 146 00:07:01,736 --> 00:07:05,680 >> Sesle ağlama için, doğru dışarı -I'll! 147 00:07:05,680 --> 00:07:07,170 Neredeyse! 148 00:07:07,170 --> 00:07:08,150 Benim parmak uçtu. 149 00:07:08,150 --> 00:07:09,980 Aklım çelik tuzak oldu. 150 00:07:09,980 --> 00:07:11,496 Her gözenek vibrasyonlu. 151 00:07:11,496 --> 00:07:13,268 Neredeyse açıktı! 152 00:07:13,268 --> 00:07:13,767 Evet. 153 00:07:13,767 --> 00:07:14,609 Evet. 154 00:07:14,609 --> 00:07:15,108 Evet. 155 00:07:15,108 --> 00:07:16,449 Evet. 156 00:07:16,449 --> 00:07:20,240 Senin ovaltine içmek için emin olun. 157 00:07:20,240 --> 00:07:20,740 Ovaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 Bir köhne ticari? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Orospu çocuğu. 162 00:07:34,920 --> 00:07:35,890 >> [SON OYNATMA] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Yani bu nasıl Ovaltine Kriptolamaya ilişkindir. 164 00:07:39,650 --> 00:07:42,290 Temelde CS50 sadece reklamı Ovaltine, bu yüzden olabilir 165 00:07:42,290 --> 00:07:44,400 Ovaltine için bir crummy ticari olacak. 166 00:07:44,400 --> 00:07:44,900 Pekala. 167 00:07:44,900 --> 00:07:47,120 Yani şimdi gerçek bilgisayar bilimi. 168 00:07:47,120 --> 00:07:50,670 Pazartesi günü hatırla bıraktığımız dizeleri derinliklerine dalış. 169 00:07:50,670 --> 00:07:52,820 Yani biz ile uğraşmaktaydı string "Zamyla." 170 00:07:52,820 --> 00:07:55,130 Ve biz kabul edildi Biz tedavi gerçeği 171 00:07:55,130 --> 00:07:57,510 Karakter dizisi olarak "Zamyla". 172 00:07:57,510 --> 00:07:59,740 Ve öğrendik unutmayın braket gösterimde. 173 00:07:59,740 --> 00:08:01,995 Bu saklandı Yani daha sonra bir dizesinde "ın," 174 00:08:01,995 --> 00:08:05,860 dedik eğer s dirsek 0, bu olur mektup sermaye Z. gösterir 175 00:08:05,860 --> 00:08:09,790 Ve biz s tutucusu 1 söyledikten eğer İlk küçük a işaret eder, 176 00:08:09,790 --> 00:08:14,220 ve böylece ilgili dirseği 5 kadar, hangi son a işaret eder. 177 00:08:14,220 --> 00:08:17,090 >> Şimdi hatırlıyorum Bu dizenin uzunluğu, 6 178 00:08:17,090 --> 00:08:23,220 ancak dize içine endeksleri vardır 0 ile 5 arasındaki, bu yoluyla Z sürer. 179 00:08:23,220 --> 00:08:28,650 Yani bu şimdi daha büyük bir resmin içine sığar Bilgisayarınızın bellek, RAM. 180 00:08:28,650 --> 00:08:32,020 Yani bir yerde program o Bilgisayarınızı çalıştırdığınız 181 00:08:32,020 --> 00:08:34,780 Zamyla hatırlamak gerekiyor belleğinde bir yerde. 182 00:08:34,780 --> 00:08:36,029 Yani bir gönüllü alabilir miyim? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Evet lütfen. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 Ve senin adın ne? 187 00:08:51,500 --> 00:08:52,410 >> DEKAN: Dean. 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN: Dean? 189 00:08:53,550 --> 00:08:54,910 Dean Tanıştığımıza memnun oldum. 190 00:08:54,910 --> 00:08:58,240 Yani buraya gel ve Biz çizmek zorunda gidiyoruz 191 00:08:58,240 --> 00:09:00,740 bellek bizim güzel şık düzeni. 192 00:09:00,740 --> 00:09:05,950 Şimdi bellek düşünmek istiyorum bayt uzun bir şerit olarak, 193 00:09:05,950 --> 00:09:11,090 ama sadece gösterim amaçlı yaparız Sadece alta doğru, üst soldan yoktur. 194 00:09:11,090 --> 00:09:11,590 Tamam mı? 195 00:09:11,590 --> 00:09:22,030 >> Bu yüzden bir göstermek için gidiyorum Getstrings.c program--. 196 00:09:22,030 --> 00:09:25,760 Ve böylece tüm bu program yapıyor dört dizeleri istiyor 197 00:09:25,760 --> 00:09:28,830 ile bir kullanıcı, GetString ve daha sonra baskı 198 00:09:28,830 --> 00:09:30,950 her şeyin ilk dize girdi oldu. 199 00:09:30,950 --> 00:09:32,840 Biz dört ile iki görmezden geliyorsun. 200 00:09:32,840 --> 00:09:33,610 TAMAM. 201 00:09:33,610 --> 00:09:38,210 Yani buraya şimdi-- zaman İlk istek s1. 202 00:09:38,210 --> 00:09:39,740 Yani bilgisayar bulunmaktadır. 203 00:09:39,740 --> 00:09:41,680 Ve getString uygulamaktadır. 204 00:09:41,680 --> 00:09:46,710 Yani bir dize talep Beni, ben, tamam, Dean söylüyorlar. 205 00:09:46,710 --> 00:09:47,900 Dize ver "Dean." 206 00:09:47,900 --> 00:09:50,300 >> Yani bir yerde hafızaya hatırlamamız gerekiyor "Dean." 207 00:09:50,300 --> 00:09:52,160 Yani bir yerde belleğe yazmak. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Mükemmel. 210 00:09:59,210 --> 00:09:59,880 TAMAM. 211 00:09:59,880 --> 00:10:01,740 Yani şimdi biz s2 var. 212 00:10:01,740 --> 00:10:03,869 Ve s2 olacak getString bir istek. 213 00:10:03,869 --> 00:10:05,160 Yani bir dize girin gidiyorum. 214 00:10:05,160 --> 00:10:08,720 Ben girmek için gidiyorum "Hannah." 215 00:10:08,720 --> 00:10:10,586 Yani bir yerde belleğe "Hannah" girin. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Evet. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> Tamam, şimdi s3. 220 00:10:25,550 --> 00:10:28,380 Ve başka olacak getString rica ederiz. 221 00:10:28,380 --> 00:10:37,020 Ve şimdi "Maria." Girin 222 00:10:37,020 --> 00:10:37,520 Pekala. 223 00:10:37,520 --> 00:10:40,980 Ve sonra son bir var getString isteği, s4. 224 00:10:40,980 --> 00:10:42,580 Yani, ben bilmiyorum. 225 00:10:42,580 --> 00:10:45,640 Nasıl gitmek hakkında Kiliseyi Devletten Ayırmama. 226 00:10:45,640 --> 00:10:49,460 Yani belleğe o giriniz. 227 00:10:49,460 --> 00:10:50,400 Evet. 228 00:10:50,400 --> 00:10:53,970 Yani sadece "Rob." Do 229 00:10:53,970 --> 00:10:54,560 >> TAMAM. 230 00:10:54,560 --> 00:10:58,410 Yaptım yüzden şimdi açýklamama Bu boşluk bırakın? 231 00:10:58,410 --> 00:11:01,340 Bu boş var Neden burada, burada ve buraya boşluk? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Evet. 234 00:11:05,670 --> 00:11:09,450 Ben gittiğimde Yani fark eğer öyleyse s1-- yazdırmak için biz 235 00:11:09,450 --> 00:11:11,890 vardı "Hannah" koşu sağ yanındaki "Dekan" 236 00:11:11,890 --> 00:11:14,360 Biz ne zaman nasıl biliyor musunuz string "Dean" biter? 237 00:11:14,360 --> 00:11:19,470 Yani dize s1 yazdırmayı olabilir Sadece "DeanHannahMariaRob" basılı 238 00:11:19,470 --> 00:11:22,720 herhangi bir ipucu yoksa "Dean" aslında biter bir zaman. 239 00:11:22,720 --> 00:11:23,240 >> Pekala. 240 00:11:23,240 --> 00:11:27,650 Yani bellekte şekilde biz aslında bir dize bu ucunu temsil 241 00:11:27,650 --> 00:11:29,940 ters eğik çizgi sıfır ile. 242 00:11:29,940 --> 00:11:32,620 Yani bu boşluk tam olarak ne istediğini olduğunu. 243 00:11:32,620 --> 00:11:34,040 Bir ters eğik çizgi sıfır olmalıdır. 244 00:11:34,040 --> 00:11:37,690 Bu, bir eğik sıfır olacaktır ve bu bir ters eğik çizgi sıfır olacaktır. 245 00:11:37,690 --> 00:11:41,585 Ve muhteşem bir ödül olabilir Mükemmel bir gönüllü olmak için. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Stres topu al! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> TAMAM. 250 00:11:49,700 --> 00:11:54,420 Yani bu karakter ters eğik çizgi sıfır nasıl bir dize sonunu belirtir. 251 00:11:54,420 --> 00:11:57,120 Bu nasıl ne zaman herhangi bir program Bir dize yazdırmak istiyor 252 00:11:57,120 --> 00:11:59,760 Öğrendiğimiz hatırlıyorum how-- bu kadar strlen fonksiyonu Geçen hafta? 253 00:11:59,760 --> 00:12:00,940 Dize uzunluğu? 254 00:12:00,940 --> 00:12:03,770 Bu dize uzunluğu yapabiliyor nasıl bir dize kadar uzun belirler. 255 00:12:03,770 --> 00:12:05,810 Sadece yineleme tutar karakter üzerinden 256 00:12:05,810 --> 00:12:08,217 o bulana kadar sıfır karakteri karakterler. 257 00:12:08,217 --> 00:12:11,050 Önemli olan fark yüzden Ters eğik çizgi sıfır karakter hakkında 258 00:12:11,050 --> 00:12:14,950 o temsil ediyor olduğu bit tüm sıfır ile. 259 00:12:14,950 --> 00:12:18,980 Yani bu farklı olduğunu fark Sıfır karakter. 260 00:12:18,980 --> 00:12:23,010 Yani sıfır karakteri, eğer hatırlarsanız Örneğin o sonunda verdi 261 00:12:23,010 --> 00:12:27,360 Dersin karakterleri haritasına nerede 65 sermaye A haritaları gibi aşağıdaki amaçlara. 262 00:12:27,360 --> 00:12:29,130 97 bir harita küçük harfe. 263 00:12:29,130 --> 00:12:30,890 Küçük b 98 olacaktır. 264 00:12:30,890 --> 00:12:35,220 Yani numarası 0 harita I do not aşağıdaki amaçlara Kafamın üst kapalı biliyorum. 265 00:12:35,220 --> 00:12:36,400 44 ya da 45. 266 00:12:36,400 --> 00:12:37,890 Somewhere o bölgede. 267 00:12:37,890 --> 00:12:40,850 >> Yani karakter 0 gerçek bir sayıdır. 268 00:12:40,850 --> 00:12:44,350 Ama ters eğik çizgi sıfır Tüm sıfır bit haritalar. 269 00:12:44,350 --> 00:12:46,380 Yani bir ayrım var ters eğik çizgi sıfır arasında, 270 00:12:46,380 --> 00:12:48,450 hangi biz boş Sonlandırıcı arayacağım. 271 00:12:48,450 --> 00:12:53,210 Arasında bir ayrım var Ters eğik çizgi sıfır ve karakter sıfır. 272 00:12:53,210 --> 00:12:54,350 >> Pekala. 273 00:12:54,350 --> 00:12:57,520 Yani dizeleri hakkında biraz daha fazla konuşuyor. 274 00:12:57,520 --> 00:13:01,470 Öyleyse biz bu nasıl burada göremiyor bellekte ortaya koydu olacaktır. 275 00:13:01,470 --> 00:13:07,940 Yani bir dizi olarak dizeleri bu fikir characters-- resmi bilgisayar, böylece 276 00:13:07,940 --> 00:13:10,750 dizisi için sciency terim bir dizidir. 277 00:13:10,750 --> 00:13:13,790 Yani biz bir dize dediğimiz karakter dizisi. 278 00:13:13,790 --> 00:13:17,770 Ve aslında diğer veriler vardır Biz dışarı diziler yapabilirsiniz türleri. 279 00:13:17,770 --> 00:13:19,975 >> Yani bu motive etmek için, bir örnek bakmak. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Biz olacak ages0.c arayacağım kopyalayıp bizim şablonu yapıştırın. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 TAMAM. 284 00:13:33,410 --> 00:13:39,378 Bu programda Peki biz yapmak istediğiniz yaş kapmak olduğunu 285 00:13:39,378 --> 00:13:45,160 Tabii üç öğrenci. 286 00:13:45,160 --> 00:13:49,240 Yani biz biliyoruz int age-- ve şimdi 0 söylemek için gidiyorum. 287 00:13:49,240 --> 00:13:53,140 Yani age1 söylemek istiyorum, ama belki amaçlar için çok kısa bir süre göreceksiniz 288 00:13:53,140 --> 00:13:57,187 Ben int age0 GETINT eşittir söylerim. 289 00:13:57,187 --> 00:13:59,270 GETINT aynı çağrı yüzden Biz I ile oldum 290 00:13:59,270 --> 00:14:01,561 isteyen için olmaz "Bana yaşını ver." diyerek 291 00:14:01,561 --> 00:14:03,120 Ama bunu ister. 292 00:14:03,120 --> 00:14:06,510 >> Ve age1 GETINT eşittir. 293 00:14:06,510 --> 00:14:09,600 Ve int Age2 GETINT eşittir. 294 00:14:09,600 --> 00:14:14,070 Yani, yine, üç öğrenci, ancak sonuçta değişken endeksleri 295 00:14:14,070 --> 00:14:16,890 Age2 ile age0 bulunmaktadır. 296 00:14:16,890 --> 00:14:17,550 TAMAM. 297 00:14:17,550 --> 00:14:23,960 Yani bu program yapacak ne olursa olsun Biz age0, age1 ve Age2 ile istediğiniz, 298 00:14:23,960 --> 00:14:27,670 ancak bu program sonunda üç öğrenci için çalışıyor. 299 00:14:27,670 --> 00:14:28,380 >> TAMAM. 300 00:14:28,380 --> 00:14:32,110 Yani şimdi ben dört öğrenci isterseniz ne olacak? 301 00:14:32,110 --> 00:14:36,000 Eh, ben geri gitmek zorunda gidiyorum Benim koduna, yorum değiştirmek, 302 00:14:36,000 --> 00:14:39,840 ve şimdi biz bir int var age3 GETINT eşittir. 303 00:14:39,840 --> 00:14:40,610 TAMAM. 304 00:14:40,610 --> 00:14:43,660 Peki burada kim sorun görür? 305 00:14:43,660 --> 00:14:47,310 Problem ne kurulum bu tür? 306 00:14:47,310 --> 00:14:47,810 Evet. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Evet. 309 00:14:53,610 --> 00:14:56,360 Bu yüzden oluşturuyorsanız Her öğrenci için değişken. 310 00:14:56,360 --> 00:15:00,140 Şimdi çalışır, ancak sonuçta şimdi ne ben eğer 311 00:15:00,140 --> 00:15:06,500 Ben yaş kapmak istiyorum "derler Sekiz öğrenci veya 16 öğrenci 312 00:15:06,500 --> 00:15:11,340 veya bununla birlikte pek çok öğrenci CS50 öğrencilerin yüzlerce 313 00:15:11,340 --> 00:15:16,750 ya da kampüs binlerce öğrenci ya da dünyanın milyarlarca insan? 314 00:15:16,750 --> 00:15:19,130 Yani sonuçta bu sürdürülebilir değildir. 315 00:15:19,130 --> 00:15:21,990 Kendinizi kopyalama gördüğünüz herhangi bir zaman ve bunun gibi yapıştırma kod, 316 00:15:21,990 --> 00:15:25,050 genellikle hissetmeniz gerekir daha iyi bir yol olduğunu. 317 00:15:25,050 --> 00:15:31,290 >> Biz tanıtmak nerede Yani bu Bir dizi beyanı. 318 00:15:31,290 --> 00:15:34,564 Yani bir diziyi bildirmek zaman, Bu nedir genel formatı 319 00:15:34,564 --> 00:15:35,480 gibi bakmaya gidiyor. 320 00:15:35,480 --> 00:15:36,664 Biz türünü söylemek için gidiyoruz. 321 00:15:36,664 --> 00:15:38,830 ve sonra biz gidiyoruz o dizinin adını verin, 322 00:15:38,830 --> 00:15:41,150 sadece biz herhangi bir değişkeni tanımlamak olarak. 323 00:15:41,150 --> 00:15:43,980 Ve sonra nihayet biz kullanıyorsunuz Bu braket notasyonu tekrar 324 00:15:43,980 --> 00:15:47,480 ama farklı bir bağlamda nasıl biz daha önce bunu kullanarak bulundu. 325 00:15:47,480 --> 00:15:51,860 >> Yani burada bu normal gibi görünüyor Gördüğümüz değişken bildirimi. 326 00:15:51,860 --> 00:15:54,890 Bu yüzden daha önce int x noktalı virgül gördüm. 327 00:15:54,890 --> 00:16:00,020 Peki şimdi biz bir şey görebilirsiniz int x parantez 5 gibi. 328 00:16:00,020 --> 00:16:04,020 Ve bu fikri koyarak Biz have-- GETINT programı 329 00:16:04,020 --> 00:16:08,850 bu yüzden uygulayabilirsiniz Aynı şekilde bu. 330 00:16:08,850 --> 00:16:13,630 >> En Kullandığımız eğiliminde CS diyelim bir şeyin sayısı olarak n. 331 00:16:13,630 --> 00:16:16,150 Yani burada biz gidiyoruz Dört öğrencileri saklayın. 332 00:16:16,150 --> 00:16:25,960 Ve şimdi biz int yaş diyebiliriz braket oldukça o yet-- alamadım n- 333 00:16:25,960 --> 00:16:32,210 Dört öğrenci bir diziyi bildirmek için. 334 00:16:32,210 --> 00:16:38,050 Yani bu nasıl görüneceğini hafıza buna benzer olacaktır. 335 00:16:38,050 --> 00:16:39,570 Bu temizleyin. 336 00:16:39,570 --> 00:16:46,606 Ve biz bir yere zorunda gidiyoruz memory-- ben oraya bu kadar yatıracağız. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Yani bir yerde bellekte. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Bir iki üç dört. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Biz bir satırda dört tamsayılar var Dört tamsayılar bu dizi için. 343 00:17:09,849 --> 00:17:13,820 Bu nedenle, şu anda, ne Bu kutulardan birinin boyutu? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Evet. 346 00:17:17,690 --> 00:17:18,390 Bu dört bayt var. 347 00:17:18,390 --> 00:17:19,690 Bu 32 bit var. 348 00:17:19,690 --> 00:17:22,310 Yani şimdi bu farklı Diziden biz 349 00:17:22,310 --> 00:17:24,020 karakter önce, dizi gördüm. 350 00:17:24,020 --> 00:17:28,540 Bir dizesinde her kutu, sadece bir byte oldu Bir karakter sadece bir bayt olduğundan. 351 00:17:28,540 --> 00:17:32,170 Ama tamsayılar bir dizi, her kutu sipariş dört bayt olmak zorunda 352 00:17:32,170 --> 00:17:34,060 tüm tamsayı sığdırmak için. 353 00:17:34,060 --> 00:17:37,197 Peki bu ne bir dizi Dört ints gibi görünecektir. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> Ve sonra tekrar kod. 356 00:17:43,870 --> 00:17:47,460 Şimdi biz aslında mağaza istiyoruz Bu diziye tamsayı. 357 00:17:47,460 --> 00:17:53,470 Yani şimdi bu çok, çok, çok, bir noktada olacak ortak desen 358 00:17:53,470 --> 00:17:54,680 kas hafızası olur. 359 00:17:54,680 --> 00:17:56,710 Yani ben 0'a eşittir int. 360 00:17:56,710 --> 00:17:57,940 i n daha azdır. 361 00:17:57,940 --> 00:18:01,850 Ben artı. 362 00:18:01,850 --> 00:18:05,790 Yaş dirsek i GETINT eşittir. 363 00:18:05,790 --> 00:18:15,100 >> Yani bu döngü için, bu biçim, çok alışmak gerekir. 364 00:18:15,100 --> 00:18:20,010 Yani bu genellikle nasıl olacak hemen hemen her dizi üzerinden yineleme. 365 00:18:20,010 --> 00:18:23,690 Şimdi bu tür fark başından itibaren açıklıyor 366 00:18:23,690 --> 00:18:29,870 Biz döngüler int için gidiş için yoktu i veya daha az 10'a eşit, 1 'eşittir. 367 00:18:29,870 --> 00:18:34,200 Başlayarak Bunun da sebebi Sıfır dizilerle de bu işi yapar. 368 00:18:34,200 --> 00:18:36,270 Yani diziler endeksli sıfırdır. 369 00:18:36,270 --> 00:18:40,360 Bu dizi uzunluğu 4 ise, endeksleri 3'e kadar 0 vardır. 370 00:18:40,360 --> 00:18:42,880 >> İlk aracılığıyla Yani for döngüsü bu yineleme 371 00:18:42,880 --> 00:18:49,930 Biz yaş ayarı için gidiyoruz GETINT bir çağrı eşit braket 0. 372 00:18:49,930 --> 00:18:52,440 Yani ne oldu klavyeye girin. 373 00:18:52,440 --> 00:18:56,970 İkinci geçişte, biz konum GETINT için age1 eşit ayarı. 374 00:18:56,970 --> 00:18:58,230 Üçüncü geçiren, Age2. 375 00:18:58,230 --> 00:18:59,880 Final geçiş age3. 376 00:18:59,880 --> 00:19:05,750 Döngünün ilk geçişte Yani eğer Ben, klavyeden sayı 4 girin 377 00:19:05,750 --> 00:19:07,740 o zaman biz burada 4 ekleyeceksiniz. 378 00:19:07,740 --> 00:19:11,470 Ben girmek ikinci geçişte ise 50, biz burada bir 50 koyacağım. 379 00:19:11,470 --> 00:19:15,180 Üçüncü geçişte Olabilir girmek 1 negatif, 1 negatif, 380 00:19:15,180 --> 00:19:21,810 ve sonra nihayet ben 0-- girerseniz ve Şimdi bu endeks üç olduğunu hatırlıyorum. 381 00:19:21,810 --> 00:19:25,350 >> Loop arka sonra, i gidiş 4 artırılır edilecek. 382 00:19:25,350 --> 00:19:27,770 Artık 4'ü n, daha azdır. 383 00:19:27,770 --> 00:19:29,840 Ve biz döngünün patlak. 384 00:19:29,840 --> 00:19:32,578 Yani bu yanlış ne olacak? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Duyulamaz]? 387 00:19:38,729 --> 00:19:39,604 HEDEF KİTLE: [duyulamaz] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Evet. 390 00:19:46,400 --> 00:19:51,550 Yani dizi sadece dört yerler vardır, hangi ile 3 endeksleri 0 olarak gelir. 391 00:19:51,550 --> 00:19:55,630 Bu durumda olsaydı, yapardım Yani bir noktada değeri 4 almak. 392 00:19:55,630 --> 00:20:00,910 yaş dirsek 4 ayarı olacak ne olursa olsun burada olur 393 00:20:00,910 --> 00:20:02,920 I have to say ne, 6 girin. 394 00:20:02,920 --> 00:20:05,010 Yani 6 bu ayar olacak. 395 00:20:05,010 --> 00:20:06,560 >> Ama biz burada ne olduğunu bilmiyorum. 396 00:20:06,560 --> 00:20:08,836 Bu bellek değildir biz erişime vardı. 397 00:20:08,836 --> 00:20:10,710 Yani hatırlıyorum eğer Bir önceki ders, 398 00:20:10,710 --> 00:20:14,350 O Zamyla değerlerini yazdırmak ve bir noktada o bu bölümleme vurdu 399 00:20:14,350 --> 00:20:17,990 arıza. Yani muhtemelen görmeye olacak Senin gibi birçok segmentasyon hataları 400 00:20:17,990 --> 00:20:20,530 Sorun setleri bazı uygulamak. 401 00:20:20,530 --> 00:20:24,950 Ancak bu yöntemlerden biri olduğu Bir segmentasyon karşılaşabilirsiniz 402 00:20:24,950 --> 00:20:28,540 Eğer erişirken başladığınızda, arıza Eğer olmamalıdır yollarla bellek. 403 00:20:28,540 --> 00:20:34,117 Bu yüzden erişimi yoktu Bu konumu ve bu bir hatadır. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Yani bu daha iyidir. 406 00:20:40,190 --> 00:20:45,820 Şimdi hala küçük olduğu Bu kod ile sorun. 407 00:20:45,820 --> 00:20:50,720 Ve biz olduğumuzu temelde Hala dört öğrenci sıkışmış. 408 00:20:50,720 --> 00:20:52,940 Şimdi tamam, sekiz öğrenciye kullanmak istiyorsanız. 409 00:20:52,940 --> 00:20:54,350 O kadar büyük bir anlaşma değil. 410 00:20:54,350 --> 00:20:58,120 Ben değiştirmek, gidebilirsiniz Yorum ve n değiştirin. 411 00:20:58,120 --> 00:20:59,760 Şimdi bu sekiz öğrenci ile çalışacaktır. 412 00:20:59,760 --> 00:21:02,190 Ben bu derleme ve çalıştırırsanız Bu, bu bana-- gösterecektir 413 00:21:02,190 --> 00:21:07,870 bu sekiz tamsayılar talep edecektir Öğrenciler ve sadece çalışacaktır. 414 00:21:07,870 --> 00:21:11,850 Ama gerek ideal azdır programı her zaman derlemeye 415 00:21:11,850 --> 00:21:15,960 Ben öğrenci sayısını değiştirmek istiyorum Ben yaş için girmek istediğiniz. 416 00:21:15,960 --> 00:21:22,990 >> Yani son gelişme üzerine Biz burada-- göreceğimiz gibi bu, biz konum 417 00:21:22,990 --> 00:21:26,177 insanların sayısını istemek için gidiyor. 418 00:21:26,177 --> 00:21:28,010 Burada bir dizi var Odalarda insanların 419 00:21:28,010 --> 00:21:29,880 ya da odada kişi herhangi bir yaş. 420 00:21:29,880 --> 00:21:33,300 Ama biz numarayı istemek için gidiyoruz kullanıcı odada kişi. 421 00:21:33,300 --> 00:21:36,171 Yani bu aynı do-while olduğunu Daha önce gördüğümüz döngü. 422 00:21:36,171 --> 00:21:37,920 Bu aynı değil do-while döngüsü olduğunu sen 423 00:21:37,920 --> 00:21:40,050 Sorun setinde uygulama olabilir. 424 00:21:40,050 --> 00:21:43,102 Yani sürece onlar senin gibi 1 'den az bir n giren 425 00:21:43,102 --> 00:21:45,310 yani en olması var Odada en az bir kişi. 426 00:21:45,310 --> 00:21:47,407 Sürece senin gibi 1 'den az bir n giren 427 00:21:47,407 --> 00:21:48,990 Sonra tekrar soran tutmak için gidiyoruz. 428 00:21:48,990 --> 00:21:50,906 Numaranızı girin odada kişi. 429 00:21:50,906 --> 00:21:53,550 Şimdi, bir kez biz numarası var ODASI insanların 430 00:21:53,550 --> 00:21:58,020 ben orada o girebilirsiniz Bu odada 200 kişi bulunmaktadır. 431 00:21:58,020 --> 00:22:05,480 Sonra buraya gelip gidiyoruz ve büyüklüğü 200 bir diziyi bildirmek. 432 00:22:05,480 --> 00:22:10,220 Biz bu diziyi bildirmek ediyoruz yeterince büyük 200 yaş tutun. 433 00:22:10,220 --> 00:22:15,370 Iniyor, bu döngü için var Çok alışması olacaktır. 434 00:22:15,370 --> 00:22:19,490 Yani bu dizinin üzerinde yineleme, her yere atama 435 00:22:19,490 --> 00:22:23,020 bu dizi bir tamsayıdır ve sonra sonuçta burada değilsin 436 00:22:23,020 --> 00:22:28,340 Sadece yineleme bir örnek alıyorum Bu dizinin üzerinde, değerleri atamak için değil, 437 00:22:28,340 --> 00:22:30,150 ama değerlerine erişmek için. 438 00:22:30,150 --> 00:22:33,810 >> Buraya Yani biz bakın biz o Şimdi bir yıl diyorsun, 439 00:22:33,810 --> 00:22:40,470 kişi% i, i yaşında% olacak İlk% i artı 1 olduğu. 440 00:22:40,470 --> 00:22:43,010 Yani ben bu indeks değişkendir. 441 00:22:43,010 --> 00:22:49,420 Ve ikinci% i olacak yaşları dizisindeki artı 1 saklanan değer. 442 00:22:49,420 --> 00:22:54,217 Yani bu artı 1 we 'sadece çünkü Bu artı 1 saying-- yaşları i artı 1. 443 00:22:54,217 --> 00:22:57,050 Bu artı 1 we 'sadece çünkü Şimdi kişiden yılda diyerek 444 00:22:57,050 --> 00:22:58,280 bu eski olacak. 445 00:22:58,280 --> 00:23:01,080 >> Peki neden bu i artı 1 nedir? 446 00:23:01,080 --> 00:23:04,064 Neden orada bir artı 1 var? 447 00:23:04,064 --> 00:23:04,564 Evet. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Evet. 450 00:23:07,930 --> 00:23:10,510 Yani diziler sıfır endekslidir hatırlıyorum. 451 00:23:10,510 --> 00:23:14,840 Biz bu yazdırarak Yani eğer birisi sadece çıkış okumak için, 452 00:23:14,840 --> 00:23:19,380 sonra muhtemelen bir şeyler görmek istiyorum kişi olan, kişi bir numara gibi, 453 00:23:19,380 --> 00:23:21,160 20 yaşında olacak. 454 00:23:21,160 --> 00:23:23,570 Kişi sayısı iki 15 yaşında olacak. 455 00:23:23,570 --> 00:23:27,420 Onlar daha ziyade kişiyi göremiyorum ediyorum sayı sıfır 15 yaşında. 456 00:23:27,420 --> 00:23:36,460 >> Yani bu derleme ve sadece görme neler bazı alan oluşturun öyle gözüküyor ki--. 457 00:23:36,460 --> 00:23:43,560 Yaşları derler yapın. 458 00:23:43,560 --> 00:23:45,080 Yaş yayınlanıyor. 459 00:23:45,080 --> 00:23:46,580 Biz odada insanların sayısını görebilirsiniz. 460 00:23:46,580 --> 00:23:48,850 Yani orada söylerim Odada üç kişi. 461 00:23:48,850 --> 00:23:54,000 Kişinin bir numara Yaş, en 15, 20, 25 diyelim. 462 00:23:54,000 --> 00:23:59,680 Ve şimdi ben bir yılın söylerim şimdi 16, 21, 26 olacak. 463 00:23:59,680 --> 00:24:02,900 Şimdi bu ile çalıştığını görelim 3'e eşit olmayan bir n. 464 00:24:02,900 --> 00:24:07,940 Yani ben, kişi sayısı, biri 5 olduğunu söylemek iki, üç, iki, bir, bugünden itibaren bir yıl 465 00:24:07,940 --> 00:24:11,170 Onlar, iki, üç olacak dört, üç, iki yaşında. 466 00:24:11,170 --> 00:24:16,500 Yani tıpkı olabilir Kolayca n 10.000 olmak var. 467 00:24:16,500 --> 00:24:21,270 Şimdi oldukça burada oturuyor olacak Bir süre çağına giren, ancak bu çalışıyor. 468 00:24:21,270 --> 00:24:26,000 >> Yani şimdi bellekte bir yere biz boyutu 10.000 bir dizi var 469 00:24:26,000 --> 00:24:28,830 yani sonuçta 40.000 bayt, çünkü 470 00:24:28,830 --> 00:24:31,222 bu tamsayılar her biri için dört bayt. 471 00:24:31,222 --> 00:24:33,180 Yani bir dizi var boyut 10,000 nereye biz 472 00:24:33,180 --> 00:24:36,201 Bu 10.000 kişinin yaşları saklayın. 473 00:24:36,201 --> 00:24:36,700 Pekala. 474 00:24:36,700 --> 00:24:40,070 Bu herhangi biriyle ilgili sorularınız mı var? 475 00:24:40,070 --> 00:24:41,892 Evet. 476 00:24:41,892 --> 00:24:43,350 Ne negatif bir sayı verdiyse? 477 00:24:43,350 --> 00:24:44,870 En ne görelim. 478 00:24:44,870 --> 00:24:49,320 Bu özel case-- sayısında Yani oda, negatif bir insan. 479 00:24:49,320 --> 00:24:52,580 O reddetti Burada biz ne çünkü 480 00:24:52,580 --> 00:24:57,180 n ise, aslında işleme için az birden tekrar sormak için gidiyoruz. 481 00:24:57,180 --> 00:25:01,780 Bir ilan çalışırsanız Negatif boyutu dizisi, 482 00:25:01,780 --> 00:25:03,950 genellikle çalışmaz. 483 00:25:03,950 --> 00:25:05,570 >> Öyleyse deneyelim. 484 00:25:05,570 --> 00:25:08,000 En görmezden edelim ne olursa olsun n değeri onlar girdi 485 00:25:08,000 --> 00:25:10,571 ve sadece int yaşları negatif bir say. 486 00:25:10,571 --> 00:25:12,410 Hatta derler Bakalım. 487 00:25:12,410 --> 00:25:14,100 Emin değilim. 488 00:25:14,100 --> 00:25:14,920 Hayır. 489 00:25:14,920 --> 00:25:18,280 Yani yaş olarak bildirilmiş bir Negatif boyutu ile dizi. 490 00:25:18,280 --> 00:25:22,540 Yani ayarlıyoruz bir dizi olamaz tanır Negatif boyutta olması ve onu reddeder. 491 00:25:22,540 --> 00:25:26,840 Şimdi, biz idare olmasaydı Bu do-while döngüsü doğru 492 00:25:26,840 --> 00:25:28,810 Biz kontrol olmasaydı n en az 1-- ise 493 00:25:28,810 --> 00:25:32,690 en biz diyelim tüm bu yoktu 494 00:25:32,690 --> 00:25:35,940 ve bunun yerine sadece bir tamsayı kapmak. 495 00:25:35,940 --> 00:25:40,710 Ne olursa olsun o tamsayı ne biz bu boyutta bir dizi bildirmek. 496 00:25:40,710 --> 00:25:44,250 >> Yani derleyici olamaz muhtemelen şimdi şikayetçi. 497 00:25:44,250 --> 00:25:48,780 Ben bu-- derleme bu yüzden şikayet edemez, 498 00:25:48,780 --> 00:25:51,480 ben olduğumu biliyorum çünkü negatif bir sayı girecek, 499 00:25:51,480 --> 00:25:52,550 hangi geçersiz olabilir. 500 00:25:52,550 --> 00:25:54,633 Tüm bu Olabilir, bilir pozitif bir sayı girin, 501 00:25:54,633 --> 00:25:56,000 hangi mükemmel geçerlidir. 502 00:25:56,000 --> 00:26:01,090 Ben 1 Negatif girerseniz Yani hayal odada kişi, arıza segmentasyon. 503 00:26:01,090 --> 00:26:06,040 >> Yani Tamam. 504 00:26:06,040 --> 00:26:13,160 Yani bu sadece geri ekleyelim başlangıçta ne tutun. 505 00:26:13,160 --> 00:26:15,640 Yani yaş yapmak. 506 00:26:15,640 --> 00:26:18,120 Şimdi bir denemek istiyorum Negatif yani atalım age-- 507 00:26:18,120 --> 00:26:19,710 Odada beş kişi var demek. 508 00:26:19,710 --> 00:26:23,180 Kişinin bir numara Yaş kişi, üç olumsuz 4'tür 509 00:26:23,180 --> 00:26:26,500 sıfır, kişinin Tamam üç-- olduğunu. 510 00:26:26,500 --> 00:26:29,850 Yani burada bir yıl şu andan itibaren, kişi sayısı biri 3 yaşında negatif olacaktır. 511 00:26:29,850 --> 00:26:32,830 Yani muhtemelen mantıklı değil. 512 00:26:32,830 --> 00:26:37,220 Ama bu sadece bakarak çünkü kod tüm biz yapıyoruz 513 00:26:37,220 --> 00:26:40,260 GETINT istiyor. 514 00:26:40,260 --> 00:26:44,110 >> Şimdi, biz olsaydı GetPositiveInt fonksiyonu 515 00:26:44,110 --> 00:26:49,690 ya da biz sadece sadece bu yapmıştı Orada aynı while döngüsünde sıralama, 516 00:26:49,690 --> 00:26:52,340 o zaman bu mükemmel iyi çalışacak. 517 00:26:52,340 --> 00:26:54,200 Ancak bu, özellikle durum, sadece yok 518 00:26:54,200 --> 00:26:57,772 negatif değerler ele olmak olur. 519 00:26:57,772 --> 00:26:59,147 Diziler hakkında Başka soru? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 TAMAM. 522 00:27:03,250 --> 00:27:09,380 >> Yani biz şimdi diziler gördüm. 523 00:27:09,380 --> 00:27:12,500 Ve biz kullanmak için ihtiyacımız olacak komut satırı argümanları için bu. 524 00:27:12,500 --> 00:27:14,680 Yani problem iki-- set Seni çok biliyorum 525 00:27:14,680 --> 00:27:18,040 Hala sorun sette çalışıyor olabilir biri, ama sorun iki geliyor ayarlayın. 526 00:27:18,040 --> 00:27:22,260 Sorun iki set, sen gidiyorsun dizeleri, diziler ile ilgili olması gerekir, 527 00:27:22,260 --> 00:27:23,950 ve komut satırı argümanları. 528 00:27:23,950 --> 00:27:26,270 >> Komut satırı argümanları Peki nelerdir? 529 00:27:26,270 --> 00:27:29,570 Şimdi, burada aşağı görebilirsiniz tam olarak ne için küçük bir teaser 530 00:27:29,570 --> 00:27:30,950 gidiş oluyor gibi. 531 00:27:30,950 --> 00:27:32,950 Biz, int main, inc argc bakın Dize argv parantez. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Böylece ilk en yorumlamaya çalışalım Ne demek çalışıyor. 534 00:27:38,130 --> 00:27:40,800 Şimdi tamam. 535 00:27:40,800 --> 00:27:44,637 >> Yani komut satırında sen olmalı Bu komutların alışmak biraz 536 00:27:44,637 --> 00:27:48,580 şimdi, ve muhtemelen çalıştırmak daha önce terminalde cd. 537 00:27:48,580 --> 00:27:52,100 Bu yüzden cd pset1 derseniz, Bunu gerektiğini biliyor 538 00:27:52,100 --> 00:27:55,050 pset1 dizine değişen olacak. 539 00:27:55,050 --> 00:27:59,120 >> Şimdi hiç fark ettik Daha önce böyle bir program yazılmıştır. 540 00:27:59,120 --> 00:28:03,120 Yazdığınız her program, Eğer, diyelim ki, aday olacağını Mario slash dot, 541 00:28:03,120 --> 00:28:06,779 dot açgözlü eğik çizgi ve sonra giriş yapmanızı isteyebilir. 542 00:28:06,779 --> 00:28:08,570 Şimdi, bu değil ne var dizin değiştirme yapar. 543 00:28:08,570 --> 00:28:12,770 Eğer cd çalıştırdığınızda, o zaman, demiyor Eğer cd hangi dizin içine istiyorsun? 544 00:28:12,770 --> 00:28:17,200 Bunun yerine, sadece söylemek, cd pset1 ve Sadece pset1 dizine gider. 545 00:28:17,200 --> 00:28:20,430 >> Yani benzer diğer örnekler var. 546 00:28:20,430 --> 00:28:21,540 merhaba olun. 547 00:28:21,540 --> 00:28:25,760 Yaptığınız çalıştırdığınızda, o zaman, demiyor Hangi program yapmak istersiniz? 548 00:28:25,760 --> 00:28:29,620 Sadece at demek Komut satırı merhaba olun. 549 00:28:29,620 --> 00:28:31,060 >> Hareket başka bir örnektir. 550 00:28:31,060 --> 00:28:34,840 Biz hareket bu bir bir dizin yukarı dosya mario.c. 551 00:28:34,840 --> 00:28:38,060 Yani şimdi bu örnekle biliyorum Gerçekten iki argüman geçiyoruz. 552 00:28:38,060 --> 00:28:42,090 İlk argüman olarak mario.c var, ve nokta nokta ikinci bir argümandır. 553 00:28:42,090 --> 00:28:46,140 Ve sonra, sizi yapmak çalıştırmak zaman Bu gerçekten uzun komutu bakın LINE 554 00:28:46,140 --> 00:28:50,580 Bu gerçekten uzun bir komut Komut satırında basılmış. 555 00:28:50,580 --> 00:28:53,590 Yani bu kadar uzun command-- bunun sadece kısa bir parçasıdır, 556 00:28:53,590 --> 00:28:56,090 ama şimdi biz üç var Komut satırı argümanları. 557 00:28:56,090 --> 00:28:59,750 Nokta çizgi sıfır, merhaba, ve merhaba.c. 558 00:28:59,750 --> 00:29:03,497 >> Peki bu komut satırı vardır argümanlar, argümanlar 559 00:29:03,497 --> 00:29:05,580 En geçerken olduğunuzu Komut satırı böylece 560 00:29:05,580 --> 00:29:08,680 sorulmasını zorunda değildir Eğer program çalıştırdığınızda. 561 00:29:08,680 --> 00:29:13,090 Bu sinir bozucu olacağını zaman eğer Eğer tınlamak koştu o tamam "dedi 562 00:29:13,090 --> 00:29:15,630 program-- hangi dosya derleme? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Ne bayraklar yapacağınız girmek ister? dash o. 565 00:29:19,440 --> 00:29:21,190 Ne alırsınız Dosya çağrılacak? 566 00:29:21,190 --> 00:29:21,690 Merhaba. 567 00:29:21,690 --> 00:29:25,290 Hayır, sadece clang çalıştırmak o merhaba hello.c dosyasını çizgi. 568 00:29:25,290 --> 00:29:28,820 >> Böylece geri bu bakıyor. 569 00:29:28,820 --> 00:29:32,920 Şimdi argc-- argc argüman sayar olduğunu. 570 00:29:32,920 --> 00:29:36,620 Bu komut satırı numarası argümanları komut satırında girdi. 571 00:29:36,620 --> 00:29:39,720 Eh, teknik argv-- v, vektör açılımı 572 00:29:39,720 --> 00:29:41,460 ki bu temel olarak bir dizi anlamına gelir. 573 00:29:41,460 --> 00:29:42,680 Ama bunu göz ardı edebilirsiniz. 574 00:29:42,680 --> 00:29:47,540 Argv-- biz dize argv var böylece dize argv parantez. 575 00:29:47,540 --> 00:29:50,150 Yani bu başka bir şeklidir Eğer daha önce görmedim braketleri. 576 00:29:50,150 --> 00:29:52,300 Yani gördüğümüz dirsek Biz söylediğim gösterim, 577 00:29:52,300 --> 00:29:53,970 gibi, string Zamyla eşittir. 578 00:29:53,970 --> 00:29:56,910 s dirseği 0 karakter Z. kere 579 00:29:56,910 --> 00:30:00,720 >> Biz de parantez zaman gördüm Biz int yaşları 5 paranteze söyledi. 580 00:30:00,720 --> 00:30:03,160 Bu büyüklükte 5 bir dizi ilan etti. 581 00:30:03,160 --> 00:30:06,280 Yani burada bir versiyonu parantez daha önce görmedim. 582 00:30:06,280 --> 00:30:09,630 Dize argv Yani bu tür o Tamamen tanıdık olurdu 583 00:30:09,630 --> 00:30:12,050 Sadece bir dize olacağını söyledi. 584 00:30:12,050 --> 00:30:14,520 Şimdi parantez belirtmek bu bir dizidir. 585 00:30:14,520 --> 00:30:19,920 Yani dize argv parantez araçlar Bu argv dizeler bir dizidir. 586 00:30:19,920 --> 00:30:22,540 Şimdi teknik olarak bir dize karakter dizisidir. 587 00:30:22,540 --> 00:30:26,400 Yani bu artık bir dizidir karakter bir dizi. 588 00:30:26,400 --> 00:30:31,490 Ama düşünmek çok daha kolay dizeleri bu tıpkı bir dizi. 589 00:30:31,490 --> 00:30:34,900 >> Peki neden parantez boş olabilir? 590 00:30:34,900 --> 00:30:38,170 Gibi, biz neden, diyemeyiz braket 5, dirsek n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Evet. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Evet. 595 00:30:44,230 --> 00:30:46,396 Biz kaç bilmiyoruz girişler var olacak. 596 00:30:46,396 --> 00:30:53,560 Yani biz clang Örneğin bakarsanız, merhaba hello.c o çizgi tınlamak söylüyorlar. 597 00:30:53,560 --> 00:30:56,710 Bu özel durumda, var olmasına Üç komut satırı argümanları olmak. 598 00:30:56,710 --> 00:31:00,522 Ve böylece brackets-- göreceğiz İkinci olarak bu üç olmaz. 599 00:31:00,522 --> 00:31:01,730 Teknik olarak dört olur. 600 00:31:01,730 --> 00:31:04,030 Ama parantez, biz olur diyelim ki, üç vardır. 601 00:31:04,030 --> 00:31:08,220 Ama şimdi biz hareket baktı eğer mario.c dot dot, parantez 602 00:31:08,220 --> 00:31:09,760 biz onlara iki koymak isterim. 603 00:31:09,760 --> 00:31:12,884 >> Ve komutların bir sürü vardır Komut satırından değişken sayıda 604 00:31:12,884 --> 00:31:13,620 argümanlar. 605 00:31:13,620 --> 00:31:17,430 Peki bu sürümü braket gösterimde gösterir 606 00:31:17,430 --> 00:31:20,820 argv dizelerden oluşan bir dizi olmasıdır. 607 00:31:20,820 --> 00:31:24,360 Ama kaç tane bilmiyoruz dizeleri bu dizide bulunmaktadır. 608 00:31:24,360 --> 00:31:27,090 Ve nasıl o zaman nasıl biliyor musunuz Birçok dizeleri dizisinde nelerdir? 609 00:31:27,090 --> 00:31:28,870 Yani bütün mesele argc var. 610 00:31:28,870 --> 00:31:32,300 argc argv ne kadar söyler. 611 00:31:32,300 --> 00:31:36,500 >> Yani son şey tutmak için Zihin, bu teknik olarak 612 00:31:36,500 --> 00:31:40,820 Komut kendisi biri olarak sayar Komut satırı argümanları. 613 00:31:40,820 --> 00:31:45,330 Cd pset1 Yani, iki vardır Komut satırı argümanları. 614 00:31:45,330 --> 00:31:50,260 Kendi içinde programı, cd ve sonra bu gerçek bağımsız değişken bölümü, pset1. 615 00:31:50,260 --> 00:31:54,490 Eğer şimdiye kadar yazdım herhangi bir program tek komut hattı argument-- nokta olmuştur 616 00:31:54,490 --> 00:31:55,320 Mario kesiyorsun. 617 00:31:55,320 --> 00:31:57,350 Bu sadece komut satırı argümanı. 618 00:31:57,350 --> 00:32:00,900 >> Yani şimdi clang bakıyor o merhaba hello.c dosyasını çizgi. 619 00:32:00,900 --> 00:32:01,905 Peki argc nedir? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4. 622 00:32:06,080 --> 00:32:08,140 Yani argc 4'tür. 623 00:32:08,140 --> 00:32:12,140 Clang, böylece argv aparatı 0 clang olup. 624 00:32:12,140 --> 00:32:15,630 argv tutucusu 1 çizgi 0'dır. 625 00:32:15,630 --> 00:32:21,870 argv dirseği 2 merhaba ve argv dirseği 3 merhaba.c olduğunu. 626 00:32:21,870 --> 00:32:26,813 Tamam, bu yüzden bu konuda sorular ve daha sonra yaparız Bazı programatik örneklere bakmak. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> TAMAM. 629 00:32:30,480 --> 00:32:36,260 Yani biz hello3.c bir göz atacağız. 630 00:32:36,260 --> 00:32:41,890 Yani bu tanıdık olmalı İlk c örneklerinden biri 631 00:32:41,890 --> 00:32:45,800 Biz sadece söyleyebilirim nereye merhaba, vardı Dünya, ama şimdi bu daha genel olduğunu. 632 00:32:45,800 --> 00:32:52,300 Yani burada biz merhaba diyorsun % s ters eğik çizgi n argv tutucusu 1. 633 00:32:52,300 --> 00:32:57,440 Bu noktada ana kadar yani Notice--, bu Ya benim şablon dosyası gibi baktı. 634 00:32:57,440 --> 00:33:01,800 Ben int main (void) vardı, sonra isterim ana işlevi bir şeyler yapmak. 635 00:33:01,800 --> 00:33:05,100 Şimdi bunun yerine, bir kez biz uğraşan başlar Komut satırı argümanları ile, 636 00:33:05,100 --> 00:33:07,890 Biz devlet gerek Ana farklı formu. 637 00:33:07,890 --> 00:33:11,930 >> Yani hello3 bakıyor Yine, ana gidiyor 638 00:33:11,930 --> 00:33:15,990 int argc şimdi-- iki argüman almak, komut satırı argümanları sayısı 639 00:33:15,990 --> 00:33:20,970 ve dize parantez argv gerçek dizeleri, komut satırında girdi. 640 00:33:20,970 --> 00:33:26,560 Yani bunu değiştirmek için gidiyorum Şablon gerçeğini yansıtıyor. 641 00:33:26,560 --> 00:33:29,060 Şimdi ne zaman yazmak Bir program, sen yapmazsan 642 00:33:29,060 --> 00:33:33,720 Herhangi bir komut satırı almak gerekir argümanlar, daha sonra sadece int main (void) kullanın. 643 00:33:33,720 --> 00:33:37,070 Ama şimdi yazarken Komut satırı argümanı programları, hangi 644 00:33:37,070 --> 00:33:40,350 Eğer sorun için yapıyor olması gidiyoruz şimdi sen çalıştırıyorsanız bu iki-- set 645 00:33:40,350 --> 00:33:42,630 almak gerekir programlar Komut satırı argümanları, 646 00:33:42,630 --> 00:33:45,250 Bu form ana olması gerekir. 647 00:33:45,250 --> 00:33:51,290 >> Yani burada-- bu büyük kullanımdır Komut satırı argümanı. 648 00:33:51,290 --> 00:33:54,100 Yani argv 1 yazdırma. 649 00:33:54,100 --> 00:33:59,180 Tamam öyleyse derlemek edelim ve bu programı çalıştırın. 650 00:33:59,180 --> 00:34:02,440 Hello3 olun. 651 00:34:02,440 --> 00:34:03,570 Derler. 652 00:34:03,570 --> 00:34:06,870 Dot hello3 çizgi. 653 00:34:06,870 --> 00:34:08,920 Ve en, diyelim "Rob." 654 00:34:08,920 --> 00:34:10,760 Merhaba Rob. 655 00:34:10,760 --> 00:34:14,940 Ben, "merhaba Maria," merhaba Maria derseniz. 656 00:34:14,940 --> 00:34:15,719 Maria Merhaba. 657 00:34:15,719 --> 00:34:18,639 Hannah hala merhaba "diyor Maria, "Ben değilim, çünkü 658 00:34:18,639 --> 00:34:21,340 Bizim argv 2 şey yapıyor. 659 00:34:21,340 --> 00:34:22,590 Argv 2 şimdi "Hannah" olurdu. 660 00:34:22,590 --> 00:34:25,030 Argc 3 olur. 661 00:34:25,030 --> 00:34:27,735 Ne yaptıysa? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Yani merhaba boş. 664 00:34:34,679 --> 00:34:38,760 >> O kısaca aslında değindi Bu, teknik olarak, GetString 665 00:34:38,760 --> 00:34:42,429 null döndürür olabilir, ama biz bir alırsınız ne daha fazla boş içine çok aslında. 666 00:34:42,429 --> 00:34:47,449 Ama meselesi olarak götürün Hiçbir genellikle kötü olması. 667 00:34:47,449 --> 00:34:50,179 Biz eğer yanlış bir şey yaptım o "merhaba boş." yazdırma ediyor 668 00:34:50,179 --> 00:34:52,179 Ve neden yaptığımız Bu-- iyi terslik, 669 00:34:52,179 --> 00:34:56,179 Ben nokta çizgi hello3 çalıştırdığınızda, argc 1 oldu. 670 00:34:56,179 --> 00:34:59,680 Böylece argv uzunluğu 1 olduğu anlamına gelir. 671 00:34:59,680 --> 00:35:05,110 Bir dizi uzunluğu 1 ise, tek geçerli endeks sıfırdır. 672 00:35:05,110 --> 00:35:08,550 Ve işte 1 dışında argv Bu dizinin dizi. 673 00:35:08,550 --> 00:35:13,410 Ben denedim önce benzerdi dizinin sonuna dışında 6 saklamak için. 674 00:35:13,410 --> 00:35:18,100 Yani bir şey erişmeye çalışıyorum argv sayısı dışında, 675 00:35:18,100 --> 00:35:21,340 ve biz boş alıyoruz. 676 00:35:21,340 --> 00:35:24,360 >> Yani daha iyi bir versiyonu Bu, iyileşme, 677 00:35:24,360 --> 00:35:27,010 açıkça argc kontrol ediyor. 678 00:35:27,010 --> 00:35:33,580 Argc 2 eşitse Yani, biz koştu demektir nokta çizgi hello3 Rob gibi bir şey. 679 00:35:33,580 --> 00:35:36,840 Ve "merhaba Rob." Basacaktır 680 00:35:36,840 --> 00:35:39,850 Argc eşit değilse 2, sonra sadece gidiyor 681 00:35:39,850 --> 00:35:42,560 Eğer koymak ne görmezden komut satırı bağımsız değişkeni de 682 00:35:42,560 --> 00:35:43,960 komut satırı argümanları olarak. 683 00:35:43,960 --> 00:35:47,168 Eğer hiç bir koymadı Veya, bu kadar sadece görmezden ve sadece söylemek için gidiyoruz, 684 00:35:47,168 --> 00:35:47,960 "Merhaba sana." 685 00:35:47,960 --> 00:35:51,490 >> Yani bu derleme. 686 00:35:51,490 --> 00:35:54,500 Hello4 olun. 687 00:35:54,500 --> 00:35:56,790 Ve hello4 koşuyor. 688 00:35:56,790 --> 00:36:00,010 Bu şekilde Koşu, Ne basılmış olmalıdır? 689 00:36:00,010 --> 00:36:01,330 "Merhaba sana." 690 00:36:01,330 --> 00:36:02,810 Merhaba sana. 691 00:36:02,810 --> 00:36:05,870 Ne hello4 Rob hakkında? 692 00:36:05,870 --> 00:36:06,950 "Merhaba Rob." 693 00:36:06,950 --> 00:36:10,580 Ve nihayet, merhaba Rob Maria "merhaba Sen" yine sadece bir 694 00:36:10,580 --> 00:36:13,677 Eğer gerçekten girmediniz çünkü beklenen bir şey. 695 00:36:13,677 --> 00:36:15,510 Daha fazla isim girdi o ele verebilir daha, 696 00:36:15,510 --> 00:36:19,500 bu yüzden sadece öndeğer merhaba davranış. 697 00:36:19,500 --> 00:36:23,040 Bu soruların Yani? 698 00:36:23,040 --> 00:36:26,290 Ya da komut satırı argümanları? 699 00:36:26,290 --> 00:36:28,690 >> Tamam, bu yüzden bir göz alarak kullanarak birkaç daha fazla örnek 700 00:36:28,690 --> 00:36:34,230 Komut satırı ilk arguments-- Biz çizgi 1 nokta c argv var. 701 00:36:34,230 --> 00:36:38,510 Yani comments vermek neyi bu program yapıyor olmalıdır. 702 00:36:38,510 --> 00:36:42,460 Ama, for döngüsü bu şimdi-- fark Bu tam desen maçları 703 00:36:42,460 --> 00:36:43,390 Ben daha önce diyordum. 704 00:36:43,390 --> 00:36:46,240 Biz sadece olmak için ne n yerine argc kullanılmıştır. 705 00:36:46,240 --> 00:36:48,880 Şimdi argc gerçekten n. 706 00:36:48,880 --> 00:36:51,260 Bu argv dizinin uzunluğu var. 707 00:36:51,260 --> 00:36:59,600 Yani argv yineleme vardır Dizi printf-ing her argv değerini. 708 00:36:59,600 --> 00:37:04,730 >> Ben bu hale Yani eğer. 709 00:37:04,730 --> 00:37:08,232 Argv 1 yapın. 710 00:37:08,232 --> 00:37:09,940 Bu derler. 711 00:37:09,940 --> 00:37:11,620 Dot argv 1 kesiyorsun. 712 00:37:11,620 --> 00:37:15,530 Sadece bu çalışan, onu baskılar çizgi argv 1 dot 713 00:37:15,530 --> 00:37:18,500 sadece komut satırı beri Program adı argument--. 714 00:37:18,500 --> 00:37:22,080 Her zaman least-- Orada olacak argc, birinden az olamaz 715 00:37:22,080 --> 00:37:25,910 çünkü her zaman olacak, en azından çalıştırmak için program adı olacak. 716 00:37:25,910 --> 00:37:32,040 Yani 1 Rob 1 argv basacaktır argv ve daha sonra yeni bir satıra "Rob." 717 00:37:32,040 --> 00:37:36,350 >> Birinci tekrarda Yani Bu döngü, ben 0'dır. 718 00:37:36,350 --> 00:37:39,090 Argv 0 Program adıdır. 719 00:37:39,090 --> 00:37:40,010 Dot argv 1 kesiyorsun. 720 00:37:40,010 --> 00:37:43,770 Ve sonra 1 benim ilk argv Rob komut satırı argümanı. 721 00:37:43,770 --> 00:37:45,920 Bu noktada, argc eşittir. 722 00:37:45,920 --> 00:37:48,210 Biz döngü patlak ve bitti. 723 00:37:48,210 --> 00:37:53,940 Yani bu keyfi için çalışacak komut satırı argümanları sayısı. 724 00:37:53,940 --> 00:37:58,550 Dikkat bu argv 0, argv yazdırır 1, argv 2, argv 3, argv 4. 725 00:37:58,550 --> 00:38:00,150 Ve hiçbir argv 5 yoktur. 726 00:38:00,150 --> 00:38:01,460 argc 5'e eşittir. 727 00:38:01,460 --> 00:38:06,960 Yani ben 5 eşit olarak argc-- de, Biz döngünün patlak. 728 00:38:06,960 --> 00:38:07,950 TAMAM. 729 00:38:07,950 --> 00:38:11,315 Biz önce soruların Yani Daha karmaşık bir örnek bakmak? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Yani 2 argv. 732 00:38:16,860 --> 00:38:17,830 Pekala. 733 00:38:17,830 --> 00:38:20,610 Yani biz hala yazdırırken Komut satırı argümanları. 734 00:38:20,610 --> 00:38:23,170 Ama şimdi biz fark Bir döngü için iç içe. 735 00:38:23,170 --> 00:38:24,670 Peki bu yapıyor? 736 00:38:24,670 --> 00:38:28,430 Yani ilk döngü yapıyor tam olarak ne daha önce yaptım. 737 00:38:28,430 --> 00:38:30,950 Biz hala üzerinde döngü ediyoruz Her komut satırı argümanı, 738 00:38:30,950 --> 00:38:34,260 ama şimdi bu ikinci loop-- biz ettik Ayrıca daha önce böyle bir şey görmemiştim. 739 00:38:34,260 --> 00:38:38,600 O yineleme zaman Zamyla Z-A-M-Y-L-A yazdırarak. 740 00:38:38,600 --> 00:38:44,816 Yani int j bu ikinci döngü eşittir 0, n argv dirsek i strlen eşittir. 741 00:38:44,816 --> 00:38:49,170 >> Yani ilk kez düşünelim Şeyin en doğru yürüyelim. 742 00:38:49,170 --> 00:38:53,560 En ne bilgisayar olur düşünelim Sadece nokta olarak ben bu programı koştum yapmalı 743 00:38:53,560 --> 00:38:56,030 argv çizgi 2 kesiyorsun. 744 00:38:56,030 --> 00:39:03,590 Yani eğer ben o zaman, bu kodu koştum argc 1'e eşit olacak. 745 00:39:03,590 --> 00:39:07,050 Ve dize yalnızca var argv-- argv bir endeks olacak, 746 00:39:07,050 --> 00:39:12,370 ve bu nokta eşit olacak argv çizgi 2-- program adını. 747 00:39:12,370 --> 00:39:19,170 >> Tamam, şimdi ben daha ben az 0 eşittir 1 i artı artı int j 0 eşittir için, 748 00:39:19,170 --> 00:39:23,880 n, bu yüzden argv dirsek 0 strlen eşittir Bu döngünün ilk yineleme. argv 749 00:39:23,880 --> 00:39:27,250 dirsek 0 nokta çizgi argv 2 'dir. 750 00:39:27,250 --> 00:39:29,320 Böylece dizenin uzunluğu nedir? 751 00:39:29,320 --> 00:39:32,480 Eh, A-R-G-V çizgi 2 çizgi nokta. 752 00:39:32,480 --> 00:39:35,020 Bunun strlen Yani 8 olacak. 753 00:39:35,020 --> 00:39:37,500 Yani j 0 eşittir, n 8 eşittir. 754 00:39:37,500 --> 00:39:39,530 Sürece j 8, j ++ az olduğu. 755 00:39:39,530 --> 00:39:44,080 Ve biz olacağız tek bir karakter, yazdırma hangi 756 00:39:44,080 --> 00:39:47,350 i j paranteze argv dirsek olduğunu. 757 00:39:47,350 --> 00:39:49,826 >> Yani sadece i sıfırdır. 758 00:39:49,826 --> 00:39:51,700 Biz hala sadece bir tane var komut satırı argümanı. 759 00:39:51,700 --> 00:39:53,890 Bu birinci tekrarda döngüsü için, biz konum 760 00:39:53,890 --> 00:39:56,950 Baskı olacak argv dirseği dirsek 0 0. 761 00:39:56,950 --> 00:39:58,325 Ve sonra j artırmak için gidiyor. 762 00:39:58,325 --> 00:40:01,650 Ve biz baskı gidiyoruz argv dirseği dirsek 0 1. 763 00:40:01,650 --> 00:40:04,150 Ve sonra dirsek 0 braket 2 argv. 764 00:40:04,150 --> 00:40:09,030 >> Yani bu bizim ilk karşılaşma Çok boyutlu diziler. 765 00:40:09,030 --> 00:40:12,770 Dedim ki daha önce hatırla Bu argv teknik olarak 766 00:40:12,770 --> 00:40:15,950 karakter dizileri bir dizi. 767 00:40:15,950 --> 00:40:24,360 Yani burada bir şey gibi desem string, argv dirseğini i eşittir 768 00:40:24,360 --> 00:40:29,590 ve sonra ben s dedi dirsek j, bu aynı şeyi gerçekleştirerek olacaktır. 769 00:40:29,590 --> 00:40:31,960 Şimdi, daha önce s braket j gördüm. 770 00:40:31,960 --> 00:40:36,680 Bu sadece j-inci erişmek bulunuyor Bu dizenin karakter. 771 00:40:36,680 --> 00:40:48,010 Bu Yani, biz alıyorsanız i-inci argv j-inci karakter. 772 00:40:48,010 --> 00:40:51,450 >> Peki bu sonuçta çıktı gerekir? 773 00:40:51,450 --> 00:40:53,210 Argv 2 yapın. 774 00:40:53,210 --> 00:40:54,730 Bu derler. 775 00:40:54,730 --> 00:40:56,340 Dot argv 2 çizgi. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hannah," ve bize biraz yer ver. 777 00:41:03,790 --> 00:41:07,050 Yani biz bu çıkış olduğunu görüyoruz Kendi çizgi ve çizgi üzerinde nokta 778 00:41:07,050 --> 00:41:08,920 kendi satırında kendi satırında ve üzerinde. 779 00:41:08,920 --> 00:41:11,260 Dışarı her yazdırma ediyor Bireysel karakter 780 00:41:11,260 --> 00:41:12,950 Her komut satırı argümanı. 781 00:41:12,950 --> 00:41:15,960 Ve sonra aralarında, Çünkü bu yeni hattın 782 00:41:15,960 --> 00:41:19,380 Biz, buraya yazdırırken Aralarında yeni bir çizgi basalım. 783 00:41:19,380 --> 00:41:24,540 >> Yani bu benzer önce argv dash 1, 784 00:41:24,540 --> 00:41:26,459 yazdırılan her hangi Komut satırı argümanı, 785 00:41:26,459 --> 00:41:28,500 ama şimdi biz yazdırırken Komut satırı argümanları 786 00:41:28,500 --> 00:41:31,950 ve sonra her yineleme Her komut satırı argümanı karakteri 787 00:41:31,950 --> 00:41:35,400 Bu çıktıyı almak için. 788 00:41:35,400 --> 00:41:36,870 Tamam mı? 789 00:41:36,870 --> 00:41:40,570 Bu soruların Yani? 790 00:41:40,570 --> 00:41:45,130 >> Unutulmaması gereken bir şey olduğunu Komut satırı arguments-- 791 00:41:45,130 --> 00:41:49,990 böylece onlar boşluklarla ayrılmış Eğer doğal olarak onları olmasını bekleriz. 792 00:41:49,990 --> 00:41:53,050 Yani bir dize içinde boşluklar olabilir. 793 00:41:53,050 --> 00:41:57,380 Süper önemli değil, ama ben eğer Üçüncü komut satırı argümanı istedi 794 00:41:57,380 --> 00:42:01,226 Ben o zaman, bir boşluk var Böyle bir şey söyleyebiliriz. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 Tamam mı? 797 00:42:05,550 --> 00:42:12,190 Yani bu şimdi hala sadece üç vardır Komut satırı arguments-- kuyu 4. 798 00:42:12,190 --> 00:42:17,620 Dot argv tire 2 çizgi, Rob, Maria ve Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 TAMAM. 800 00:42:18,320 --> 00:42:19,310 Bu konuda sorularınız mı var? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Özel bir şey yok boşluk karakteri hakkında. 803 00:42:24,894 --> 00:42:27,810 Bu sadece olur Komut satırı boşluk karakteri davranır 804 00:42:27,810 --> 00:42:29,226 nasıl gibi her argüman ayırın. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Pekala. 807 00:42:33,000 --> 00:42:39,950 Sonra Sorun seti olmak için gidiyoruz iki-- 808 00:42:39,950 --> 00:42:43,240 gizli anahtar şifreleme bakıyor. 809 00:42:43,240 --> 00:42:47,700 Bu örnek, bu şekilde, benzer bir Biz A Christmas Story gördüm 810 00:42:47,700 --> 00:42:52,840 Bazı uygulama için gidiyoruz Bir mesaj verilmiş algoritmalar, 811 00:42:52,840 --> 00:42:55,560 Eğer muktedir gidiyoruz Bu iletiyi şifrelemek için 812 00:42:55,560 --> 00:42:58,730 Bu sır ile sadece birisi Anahtar, bu dekoder, halkalı, 813 00:42:58,730 --> 00:43:01,090 şifresini gerekir. 814 00:43:01,090 --> 00:43:04,839 >> Yani standart sürümüdür. 815 00:43:04,839 --> 00:43:07,130 Sen uygulanması için gidiyoruz İki farklı sürümleri. 816 00:43:07,130 --> 00:43:09,620 Eğer bir göz atın olursanız Hacker şimdi Sürümü-- de, 817 00:43:09,620 --> 00:43:12,600 Biz vereceğiz Böyle bir dize, 818 00:43:12,600 --> 00:43:15,240 hangi şifreli bir parola temsil eder. 819 00:43:15,240 --> 00:43:19,990 Yani hedef anlamaya etmektir şifresi çözülmüş şifre nedir. 820 00:43:19,990 --> 00:43:26,950 Şimdi bu aslında nasıl şifreleri bilgisayar bir çok saklanır 821 00:43:26,950 --> 00:43:31,290 ve sadece bu depolar karakter rasgele dize. 822 00:43:31,290 --> 00:43:34,440 Sen nasıl anlamaya var karakter bu rasgele dizesinden 823 00:43:34,440 --> 00:43:36,140 Orijinal şifre ne oldu. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> Ve son olarak, sonra Sorun seti, sen-meli 826 00:43:43,290 --> 00:43:46,100 Bunun ne anlama geldiğini anlamak mümkün. 827 00:43:46,100 --> 00:43:51,650 Peki şifresini öğreneceksiniz Rasgele dize bu tür. 828 00:43:51,650 --> 00:43:56,390 Benzer şekilde, hafta hatırlarsanız 0, bu URL'yi görmüş olabilir. 829 00:43:56,390 --> 00:44:00,210 Ve mümkün olmalıdır Sonunda bu şifresini. 830 00:44:00,210 --> 00:44:04,810 Sen mutlu olmayabilir zaman sizi Bunu deşifre ve linke tıklayın. 831 00:44:04,810 --> 00:44:05,700 Pekala. 832 00:44:05,700 --> 00:44:06,591 İşte bugün için bu kadar. 833 00:44:06,591 --> 00:44:12,095 Yani gelecek hafta görüşürüz! 834 00:44:12,095 --> 00:44:18,315 >> [ELEKTRONİK MÜZİK OYUN] 835 00:44:18,315 --> 00:47:15,619